diff --git a/seminar06-planning/hw.ipynb b/seminar06-planning/hw.ipynb new file mode 100644 index 0000000..ab1f463 --- /dev/null +++ b/seminar06-planning/hw.ipynb @@ -0,0 +1,481 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Install python dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: jsonpickle in /opt/anaconda3/lib/python3.11/site-packages (3.0.3)\n", + "Requirement already satisfied: dacite in /opt/anaconda3/lib/python3.11/site-packages (1.8.1)\n", + "Requirement already satisfied: shapely in /opt/anaconda3/lib/python3.11/site-packages (2.0.3)\n", + "Requirement already satisfied: numpy<2,>=1.14 in /opt/anaconda3/lib/python3.11/site-packages (from shapely) (1.26.4)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install jsonpickle dacite shapely" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Run the planning server (should be executed only once)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import py_planning\n", + "py_planning.init()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# # you can also open http://127.0.0.1:8008 in your browser\n", + "\n", + "from IPython.display import IFrame\n", + "IFrame('http://127.0.0.1:8008', width=\"100%\", height=650)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Lane centering" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from enum import IntEnum\n", + "import math\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Case failed: Collision with static object\n" + ] + } + ], + "source": [ + "from py_planning.data_types import PlannedPath, PlannedState, State, Position # data types used by planner interface\n", + "from shapely.geometry import LineString, Point\n", + "\n", + "import time\n", + "\n", + "\"\"\"\n", + "find closest point on a polyline to the given point\n", + "\"\"\"\n", + "def get_index_of_closest_point(line: LineString, point: Point):\n", + " closest_point_index = None\n", + " min_distance = float('inf')\n", + "\n", + " for i, line_point in enumerate(line.coords):\n", + " line_point = Point(line_point)\n", + " distance = point.distance(line_point)\n", + " if distance < min_distance:\n", + " min_distance = distance\n", + " closest_point_index = i\n", + "\n", + " return closest_point_index\n", + "\n", + "\n", + "\"\"\"\n", + "This function is called by the simulator for each tick.\n", + "It should return recent planned trajectory up to date with the environment state.\n", + "'state' parameter contains current world observations and vehicle state.\n", + "\"\"\"\n", + "def do_plan(state: State) -> PlannedPath:\n", + " vehicle_pose = state.vehicle_pose\n", + " vehicle_pos = Point(vehicle_pose.pos.x, vehicle_pose.pos.y) # current position of the AV\n", + "\n", + " centerline = LineString([(p.x, p.y) for p in state.lane_path.centerline])\n", + "\n", + " closest_index = get_index_of_closest_point(centerline, vehicle_pos)\n", + " current_velocity = vehicle_pose.velocity\n", + "\n", + " # we leave some previous poses to make AV control stable\n", + " prev_poses_count = 3\n", + " max_poses_count = 50\n", + " first_pose_index = max(closest_index - prev_poses_count, 0)\n", + "\n", + " # as a baseline here we just follow the centerline\n", + " planned_states = [\n", + " PlannedState(pos=p, velocity=current_velocity) for p in state.lane_path.centerline\n", + " ][first_pose_index:first_pose_index+ max_poses_count]\n", + "\n", + " return PlannedPath(states=planned_states)\n", + " \n", + "\n", + "# run the case in the simulator, watch the visualization\n", + "py_planning.run_planner(\n", + " do_plan,\n", + " stop_on_fail=True # set to False to continue planning after case fail (useful for debugging)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Graph geometry planning" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def create_rotation_matrix(yaw):\n", + " T = np.zeros((len(yaw), 2, 2))\n", + " T[:, 0, 0] = np.cos(yaw)\n", + " T[:, 0, 1] = -np.sin(yaw)\n", + " T[:, 1, 0] = np.sin(yaw)\n", + " T[:, 1, 1] = np.cos(yaw)\n", + "\n", + " return T\n", + " \n", + "class Layer():\n", + " class Id(IntEnum):\n", + " X = 0\n", + " Y = 1\n", + " YAW = 2\n", + " COST = 3\n", + " PARENT = 4\n", + " SIZE = 5\n", + "\n", + " def __init__(self, N=None, nodes=None):\n", + " assert (N is None) ^ (nodes is None)\n", + " if N is not None:\n", + " self.nodes = np.zeros((N, Layer.Id.SIZE))\n", + " if nodes is not None:\n", + " assert nodes.shape[1] == Layer.Id.SIZE\n", + " self.nodes = nodes\n", + " \n", + " @property\n", + " def x(self):\n", + " return self.nodes[:, Layer.Id.X]\n", + " \n", + " @property\n", + " def y(self):\n", + " return self.nodes[:, Layer.Id.Y]\n", + " \n", + " @property\n", + " def yaw(self):\n", + " return self.nodes[:, Layer.Id.YAW]\n", + " \n", + " @property\n", + " def cost(self):\n", + " return self.nodes[:, Layer.Id.COST]\n", + " \n", + " @property\n", + " def parent(self):\n", + " return self.nodes[:, Layer.Id.PARENT]\n", + " \n", + " @property\n", + " def N(self):\n", + " return self.nodes.shape[0]\n", + " \n", + " @property\n", + " def M(self):\n", + " return self.nodes.shape[1]\n", + " \n", + " \n", + "def arc_primitive(c, ds):\n", + " if c == 0:\n", + " return 0, ds, 0\n", + " else:\n", + " dyaw = c * ds\n", + " return dyaw, 1 / c * math.sin(dyaw), 1 / c * (1 - math.cos(dyaw))\n", + "\n", + "\n", + "class Graph(list):\n", + " def nodes_num(self):\n", + " nodes = 0\n", + " for layer in self:\n", + " nodes += layer.N\n", + " return nodes\n", + "\n", + "\n", + "def search(initial_state, lane_path, obstacles, curvature_primitives=[-0.2, 0., 0.2], ds=1, tree_depth=6, sparse=True):\n", + " graph = Graph()\n", + " initial_layer = Layer(1)\n", + " initial_layer.nodes[:, Layer.Id.X] = initial_state.vehicle_pose.pos.x\n", + " initial_layer.nodes[:, Layer.Id.Y] = initial_state.vehicle_pose.pos.y\n", + " initial_layer.nodes[:, Layer.Id.YAW] = initial_state.vehicle_pose.rot\n", + " graph.append(initial_layer) \n", + " \n", + " for i in range(tree_depth):\n", + " X_c = graph[-1]\n", + " X_n = _make_step(X_c, ds, curvature_primitives, lane_path, obstacles)\n", + " if sparse:\n", + " X_n = _sparsify(X_n)\n", + "\n", + " graph.append(X_n)\n", + "\n", + " return graph, _restore_path(graph, np.argmin(graph[-1].nodes[:, Layer.Id.COST]))\n", + "\n", + "\n", + "def _make_step(X_c, ds, curvature_primitives, lane_path, obstacles):\n", + " N = X_c.N\n", + " X_n = Layer(N * len(curvature_primitives))\n", + "\n", + " for i, c in enumerate(curvature_primitives):\n", + " # assumme instant change of curvature and movement along circle\n", + " dyaw, dx, dy = arc_primitive(c, ds)\n", + " shift = np.array([dx, dy])\n", + "\n", + " yaw_c = X_c.yaw\n", + " T = create_rotation_matrix(yaw_c)\n", + "\n", + " X_n.x[i * N : (i + 1) * N] = X_c.x + T[:, 0] @ shift\n", + " X_n.y[i * N : (i + 1) * N] = X_c.y + T[:, 1] @ shift\n", + " X_n.yaw[i * N : (i + 1) * N] = yaw_c + dyaw\n", + " X_n.parent[i * N : (i + 1) * N] = np.arange(N)\n", + " X_n.cost[i * N : (i + 1) * N] = X_c.cost + c ** 2 \n", + " # _update_cost(X_n.nodes[i * N : (i + 1) * N, :], lane_path, obstacles)\n", + "\n", + " return X_n\n", + "\n", + "\n", + "# def _update_cost(X_n, lane_path, obstacles):\n", + "# centerline = LineString([(p.x, p.y) for p in lane_path])\n", + "# for i, node in enumerate(X_n):\n", + "# _, d = get_index_of_closest_point(centerline, Point(node[Layer.Id.X], node[Layer.Id.Y]))\n", + "# X_n[i, Layer.Id.COST] += d\n", + "# # obstacles = get_closest_static_obstacles(obstacles, node[Layer.Id.X], node[Layer.Id.Y], 1)\n", + "# # if len(obstacles) > 0:\n", + "# # d_to_closest_static = dist(node[Layer.Id.X], node[Layer.Id.Y], obstacles[0])\n", + "# # if d_to_closest_static < 2 * max(obstacles[0].w, obstacles[0].h):\n", + "# # X_n[i, Layer.Id.COST] = np.inf\n", + "# # else:\n", + "# # X_n[i, Layer.Id.COST] += 10 * np.exp(-d_to_closest_static + 2 * max(obstacles[0].w, obstacles[0].h))\n", + " \n", + "\n", + "\n", + "def _sparsify(layer, min_nodes=5, step_x=1, step_y=1,step_yaw=0.1):\n", + " if layer.N < min_nodes:\n", + " return layer\n", + "\n", + " def node_to_key(x, y, yaw):\n", + " return (round(x / step_x), round(y / step_y), round(yaw / step_yaw))\n", + " d = {}\n", + " for i in range(layer.N):\n", + " key = node_to_key(layer.x[i], layer.y[i], layer.yaw[i])\n", + " if key in d:\n", + " d[key] = min(d[key], (layer.cost[i], i))\n", + " else:\n", + " d[key] = (layer.cost[i], i)\n", + " indx = list(map(lambda value: value[1][1], d.items()))\n", + " layer.nodes = layer.nodes[indx]\n", + "\n", + " return layer\n", + "\n", + "\n", + "def _restore_path(graph, i):\n", + " path = Graph()\n", + " for j in range(len(graph)):\n", + " layer = graph[-j - 1]\n", + " path.append(Layer(nodes=np.copy(layer.nodes[i:i+1])))\n", + " i = int(layer.parent[i])\n", + "\n", + " # fix parent linkage\n", + " path[-1].parent[:] = 0\n", + "\n", + " path.reverse()\n", + " return path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exception while planning: Traceback (most recent call last):\n", + " File \"/Users/moomin/shad/dash/py_planning/planning_server.py\", line 51, in plan_request\n", + " response = self.do_plan(beatify_state(state))\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"/var/folders/_b/djhkvpzn4v5_rm3tpbktdpd99dp62b/T/ipykernel_15244/1317474386.py\", line 32, in do_graph_planning\n", + " print(state.dynamicObstacles)\n", + " ^^^^^^^^^^^^^^^^^^^^^^\n", + "AttributeError: 'State' object has no attribute 'dynamicObstacles'\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "Exception occurred during processing of request from ('127.0.0.1', 60202)\n", + "Traceback (most recent call last):\n", + " File \"/opt/anaconda3/lib/python3.11/socketserver.py\", line 317, in _handle_request_noblock\n", + " self.process_request(request, client_address)\n", + " File \"/opt/anaconda3/lib/python3.11/socketserver.py\", line 348, in process_request\n", + " self.finish_request(request, client_address)\n", + " File \"/Users/moomin/shad/dash/py_planning/planning_server.py\", line 105, in finish_request\n", + " self.RequestHandlerClass(\n", + " File \"/Users/moomin/shad/dash/py_planning/planning_server.py\", line 18, in __init__\n", + " super().__init__(*args, **kwargs)\n", + " File \"/opt/anaconda3/lib/python3.11/socketserver.py\", line 755, in __init__\n", + " self.handle()\n", + " File \"/opt/anaconda3/lib/python3.11/http/server.py\", line 436, in handle\n", + " self.handle_one_request()\n", + " File \"/opt/anaconda3/lib/python3.11/http/server.py\", line 424, in handle_one_request\n", + " method()\n", + " File \"/Users/moomin/shad/dash/py_planning/planning_server.py\", line 29, in do_POST\n", + " self.plan_request()\n", + " File \"/Users/moomin/shad/dash/py_planning/planning_server.py\", line 64, in plan_request\n", + " self.wfile.write(jsonpickle.dumps(postprocess_planned_path(response)).encode('utf-8'))\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"/Users/moomin/shad/dash/py_planning/data_types.py\", line 99, in postprocess_planned_path\n", + " for i in range(len(planned_path.states)):\n", + " ^^^^^^^^^^^^^^^^^^^\n", + "AttributeError: 'dict' object has no attribute 'states'\n", + "----------------------------------------\n" + ] + } + ], + "source": [ + "from py_planning.data_types import PlannedPath, PlannedState, State, Position # data types used by planner interface\n", + "from shapely.geometry import LineString, Point\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\"\"\"\n", + "find closest point on a polyline to the given point\n", + "\"\"\"\n", + "def get_index_of_closest_point(line: LineString, point: Point):\n", + " closest_point_index = None\n", + " min_distance = float('inf')\n", + "\n", + " for i, line_point in enumerate(line.coords):\n", + " line_point = Point(line_point)\n", + " distance = point.distance(line_point)\n", + " if distance < min_distance:\n", + " min_distance = distance\n", + " closest_point_index = i\n", + "\n", + " return closest_point_index, min_distance\n", + "\n", + "\n", + "def dist(x, y, static_obstacle):\n", + " return (x - static_obstacle.p[0]) ** 2 + (y - static_obstacle.p[1]) ** 2\n", + "\n", + "\n", + "def get_closest_static_obstacles(static_obstacles,x, y, k):\n", + " obstacles = sorted(static_obstacles, key=lambda obstacle: dist(x, y, obstacle))\n", + " return obstacles[:min(len(obstacles), k)]\n", + "\n", + "\n", + "def do_graph_planning(state: State) -> PlannedPath:\n", + " print(state.dynamic_obstacles)\n", + " vehicle_pose = state.vehicle_pose\n", + " vehicle_pos = Point(vehicle_pose.pos.x, vehicle_pose.pos.y) # current position of the AV\n", + " centerline = LineString([(p.x, p.y) for p in state.lane_path.centerline])\n", + " closest_index, _ = get_index_of_closest_point(centerline, vehicle_pos)\n", + " lane_path = state.lane_path.centerline[max(0, closest_index - 20) : min(len(state.lane_path.centerline), closest_index + 20) : 2]\n", + " obstacles = get_closest_static_obstacles(state.static_obstacles, state.vehicle_pose.pos.x, state.vehicle_pose.pos.y, 1)\n", + "\n", + " ds = 1\n", + " graph, path = search(state, lane_path, obstacles, tree_depth=12, ds=ds)\n", + " planned_path = list(map(lambda layer: PlannedState(pos=Position(float(layer.nodes[0, Layer.Id.X]), float(layer.nodes[0, Layer.Id.Y])), velocity=state.vehicle_pose.velocity, rot=float(layer.nodes[0, Layer.Id.YAW])), path))\n", + " return PlannedPath(states=planned_path) \n", + "\n", + "\n", + "py_planning.run_planner(\n", + " do_graph_planning,\n", + " stop_on_fail=True # set to False to continue planning after case fail (useful for debugging)\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/seminar06-planning/py_planning/__init__.py b/seminar06-planning/py_planning/__init__.py new file mode 100644 index 0000000..1531101 --- /dev/null +++ b/seminar06-planning/py_planning/__init__.py @@ -0,0 +1,2 @@ +from .py_planning import init, run_planner +from . import data_types diff --git a/seminar06-planning/py_planning/data_types.py b/seminar06-planning/py_planning/data_types.py new file mode 100644 index 0000000..24921b2 --- /dev/null +++ b/seminar06-planning/py_planning/data_types.py @@ -0,0 +1,104 @@ +from dataclasses import dataclass, field +from typing import List, Optional +import itertools + +@dataclass +class Position: + x: float + y: float + +@dataclass +class Size: + w: float + h: float + +@dataclass +class VehiclePose: + pos: Position + rot: float + velocity: float + curv: float + +@dataclass +class MultipleLanePath: + centerlines: List[List[Position]] + leftBoundaries: List[List[Position]] + rightBoundaries: List[List[Position]] + +@dataclass +class LanePath: + centerline: List[Position] + left_boundaries: List[Position] + right_boundaries: List[Position] + +@dataclass +class StaticObstacle: + p: List[float] # координаты препятствия в виде кортежа (x, y) + r: float # угол поворота (вращение) + w: float # ширина препятствия + h: float # высота препятствия + +@dataclass +class DynamicObstacle: + type: str + startPos: Position + velocity: Position + size: Size + parallel: bool + +@dataclass +class _RawState: + vehiclePose: VehiclePose + vehicleStation: float + lanePath: MultipleLanePath + startTime: float + dynamicObstacles: List[DynamicObstacle] + staticObstacles: List[StaticObstacle] + +@dataclass +class State: + vehicle_pose: VehiclePose # current AV position and velocity + vehicle_station: float # current 'station' that is the distance travelled along the centerline + lane_path: LanePath + start_time: float + dynamic_obstacles: List[DynamicObstacle] + static_obstacles: List[StaticObstacle] + +@dataclass +class PlannedState: + pos: Position + velocity: float + acceleration: float = 0 + rot: Optional[float] = field(default=None) + curv: Optional[float] = field(default=None) + +@dataclass +class PlannedPath: + states: List[PlannedState] + + +def _merge_multiple_lane_paths(multiple_lane_paths: MultipleLanePath) -> LanePath: + return LanePath( + centerline=list(p for p in itertools.chain(*multiple_lane_paths.centerlines)), + left_boundaries=list(p for p in itertools.chain(*multiple_lane_paths.leftBoundaries)), + right_boundaries=list(p for p in itertools.chain(*multiple_lane_paths.rightBoundaries)) + ) + +def beatify_state(raw_state: _RawState) -> State: + return State( + start_time=raw_state.startTime, + vehicle_pose=raw_state.vehiclePose, + vehicle_station=raw_state.vehicleStation, + dynamic_obstacles=raw_state.dynamicObstacles, + static_obstacles=raw_state.staticObstacles, + lane_path=_merge_multiple_lane_paths(raw_state.lanePath) + ) + +# this is essential for correct json serialization +def postprocess_planned_path(planned_path: PlannedPath) -> PlannedPath: + for i in range(len(planned_path.states)): + planned_path.states[i].acceleration = float(planned_path.states[i].acceleration) + planned_path.states[i].velocity = float(planned_path.states[i].velocity) + planned_path.states[i].pos.x = float(planned_path.states[i].pos.x) + planned_path.states[i].pos.y = float(planned_path.states[i].pos.y) + return planned_path diff --git a/seminar06-planning/py_planning/planner.py b/seminar06-planning/py_planning/planner.py new file mode 100644 index 0000000..418d547 --- /dev/null +++ b/seminar06-planning/py_planning/planner.py @@ -0,0 +1,30 @@ + +from shapely.geometry import LineString, Point + +def get_index_of_closest_point(line: LineString, point: Point): + closest_point_index = None + min_distance = float('inf') + + for i, line_point in enumerate(line.coords): + line_point = Point(line_point) + distance = point.distance(line_point) + if distance < min_distance: + min_distance = distance + closest_point_index = i + + return closest_point_index + + +def do_plan(state): + vehicle_pose = state['vehiclePose'] + vehicle_pos = Point(vehicle_pose['pos']['x'], vehicle_pose['pos']['y']) + + all_centerlines = [] + for centerline in state['lanePath']['centerlines']: + all_centerlines.extend(centerline) + + centerline = LineString([(p['x'], p['y']) for p in all_centerlines]) + + closest_index = get_index_of_closest_point(centerline, vehicle_pos) + + return [{'pos': p, 'velocity': vehicle_pose['velocity'], 'acceleration': 0} for p in all_centerlines][max(closest_index-3, 0):max(closest_index-3, 0) + 50] diff --git a/seminar06-planning/py_planning/planning_server.py b/seminar06-planning/py_planning/planning_server.py new file mode 100644 index 0000000..d8c4ea6 --- /dev/null +++ b/seminar06-planning/py_planning/planning_server.py @@ -0,0 +1,153 @@ +import json +import jsonpickle +import traceback + +from http.server import BaseHTTPRequestHandler, HTTPServer +from urllib.parse import urlparse +from dacite import from_dict +from shapely.geometry import Point + +from .data_types import _RawState, beatify_state, PlannedPath, postprocess_planned_path + + +class JSONRequestHandler(BaseHTTPRequestHandler): + def __init__(self, do_plan, on_case_status, verify_planned_trajectory, *args, **kwargs): + self.do_plan = do_plan + self.on_case_status = on_case_status + self.verify_planned_trajectory = verify_planned_trajectory + super().__init__(*args, **kwargs) + + def do_OPTIONS(self): + self.send_response(200) + self.end_headers() + + def do_POST(self): + # Parse query data & params to find out what was passed + parsed_path = urlparse(self.path) + try: + if parsed_path.path == '/plan': + self.plan_request() + elif parsed_path.path == '/notify_case_status': + self.notify_case_status_request() + elif parsed_path.path == '/ping': + self.ping_request() + else: + self.send_response(404) + except BrokenPipeError: + pass + + def ping_request(self): + # Send the "200 OK" response + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + self.wfile.write('{"status": "ok"}') + + def plan_request(self): + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length) + try: + state = from_dict(data_class=_RawState, data=json.loads(post_data)) + response = self.do_plan(beatify_state(state)) + if not self.verify_planned_trajectory(response): + response = {'status': 'error', 'message': 'trajectory verification failed'} + except Exception: + print('Exception while planning: ', traceback.format_exc()) + response = {'status': 'error', 'message': traceback.format_exc()} + + # Send the "200 OK" response + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + + # Send the response + self.wfile.write(jsonpickle.dumps(postprocess_planned_path(response)).encode('utf-8')) + + def notify_case_status_request(self): + content_length = int(self.headers['Content-Length']) + post_data = self.rfile.read(content_length) + response = "" + status = {} + try: + status = json.loads(post_data) + except json.JSONDecodeError: + response = {'status': 'error', 'message': 'Invalid JSON'} + + self.on_case_status(status) + + # Send the "200 OK" response + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + + # Send the response + self.wfile.write(jsonpickle.dumps(response).encode('utf-8')) + + def end_headers(self): + self.send_header('Access-Control-Allow-Origin', '*') + self.send_header('Access-Control-Allow-Methods', 'POST') + self.send_header('Access-Control-Allow-Headers', 'Content-Type') + BaseHTTPRequestHandler.end_headers(self) + + def log_message(self, format, *args): + pass # Override the log_message method to silence all logs + + +class PlanningServer(HTTPServer): + def __init__(self, server_address): + super().__init__(server_address, JSONRequestHandler) + self.handles_planning_requests = True + self.case_completed = False + self.fail_reason = '' + self.stop_on_fail = True + + def finish_request(self, request, client_address): + self.RequestHandlerClass( + self.do_plan, + self.on_case_status, + self.verify_planned_trajectory, + request, client_address, self) + + def set_planner(self, do_plan): + self.do_plan = do_plan + + def set_stop_on_fail(self, stop_on_fail): + self.stop_on_fail = stop_on_fail + + def on_case_status(self, status): + status_string = status["status"] + self.handles_planning_requests = False + if status_string == 'reset': + self.fail_reason = '' + self.handles_planning_requests = True + if status_string == 'completed': + self.fail_reason = '' + self.case_completed = True + if status_string == 'failed': + self.case_completed = False + self.fail_reason = status["reason"] + if not self.stop_on_fail: + self.handles_planning_requests = True + + def verify_planned_trajectory(self, planned_path: PlannedPath): + if len(planned_path.states) < 2: + print("Invalid planned trajectory: too short.") + self.handles_planning_requests = False + self.case_completed = False + return False + + MAX_VELOCITY = 30.0 # m/s + for state in planned_path.states: + if state.velocity > MAX_VELOCITY: + print("Invalid planned trajectory: too high velocity: ", state.velocity, " > ",MAX_VELOCITY) + self.handles_planning_requests = False + self.case_completed = False + return False + + return True + + def run(self): + self.handles_planning_requests = True + while self.handles_planning_requests: + self.handle_request() + return self.case_completed diff --git a/seminar06-planning/py_planning/py_planning.py b/seminar06-planning/py_planning/py_planning.py new file mode 100644 index 0000000..ec6d95b --- /dev/null +++ b/seminar06-planning/py_planning/py_planning.py @@ -0,0 +1,44 @@ +from threading import Thread +from .planning_server import PlanningServer + + +def _run_visualization_server(): + def server_thread(): + from http.server import HTTPServer, SimpleHTTPRequestHandler + + class Handler(SimpleHTTPRequestHandler): + def __init__(self, *args, **kwargs): + super().__init__(*args, directory='./simulator', **kwargs) + + def log_message(self, format, *args): + pass # Override the log_message method to silence all logs + + def end_headers(self): + self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate') + self.send_header('Pragma', 'no-cache') + self.send_header('Expires', '0') + SimpleHTTPRequestHandler.end_headers(self) + + httpd = HTTPServer(("127.0.0.1", 8008), Handler) + httpd.serve_forever() + + thread = Thread(target=server_thread) + thread.start() + + +def init(): + _run_visualization_server() + + global _p_server + _p_server = PlanningServer(('127.0.0.1', 9999)) + + +def run_planner(planning_function, stop_on_fail=True): + global _p_server + _p_server.set_planner(planning_function) + _p_server.set_stop_on_fail(stop_on_fail) + + if _p_server.run(): + print("Congrats! Case completed successfully.") + else: + print("Case failed: " + _p_server.fail_reason) diff --git a/seminar06-planning/scenarios/static01.txt b/seminar06-planning/scenarios/static01.txt new file mode 100644 index 0000000..72ffbd9 --- /dev/null +++ b/seminar06-planning/scenarios/static01.txt @@ -0,0 +1 @@ +eyJwIjpbLTE1LjM0NDM3LDY0LjEwMjQyLC01LjcyMTk1LDQyLjg5NTkyLDIuMTQ1NzUsMjQuMjk5ODIsMTAuMDEzNjIsNC45ODgxLDE2LjY4OTUyLC0xMi40MTY2MywyMi40MTE3NiwtMjIuNjY4ODksMjguODQ5MzQsLTMyLjkyMTI2LDI5LjgwMzE4LC00Mi40NTg0NCwyOC4zNzI4LC01My42NjQ3NiwyNi40NjU0OCwtNjAuNTc5MzYsMjMuNjA0NDgsLTcxLjA3MDU5XSwicyI6W3sicCI6WzI5LjU2NTE1LC02Ny42MTMyNF0sInIiOi0wLjQxMjAxLCJ3Ijo1LjI0NTM1LCJoIjo0LjUzMDN9LHsicCI6WzI0Ljc5NjE0LC0zMy45OTQxOV0sInIiOjAsInciOjMuMzM3ODksImgiOjMuNTc2NDN9LHsicCI6WzE2LjkyNzg0LC0yLjE2NDQ5XSwiciI6LTAuNTcyMjQsInciOjEuNDMwNSwiaCI6Mi4zODQyMX0seyJwIjpbMTEuMjA1NzcsLTQuMTkxMDddLCJyIjowLCJ3IjoxLjQzMDUxLCJoIjoyLjE0NTc5fSx7InAiOlsyNS43NDk2NSwtMjAuODgwN10sInIiOi0wLjk3MjgxLCJ3Ijo0Ljc2ODM5LCJoIjo0LjA1MzIzfSx7InAiOlsxLjI3NDQ5LDIwLjExNjk1XSwiciI6MCwidyI6Mi4wMzkxOCwiaCI6Mi41NDg5NX1dLCJkIjpbXSwibCI6MTQ1Ljg3NSwiYyI6eyJzIjoiMTAiLCJzbCI6IjEwIiwibHAiOjF9LCJ2IjoxfQ== diff --git a/seminar06-planning/scenarios/static02.txt b/seminar06-planning/scenarios/static02.txt new file mode 100644 index 0000000..55493ae --- /dev/null +++ b/seminar06-planning/scenarios/static02.txt @@ -0,0 +1 @@ +eyJwIjpbLTEwMi40NjA3OCwyNi4zODUxMywtNjguNjk4MjEsMjUuNzk3NzYsLTU1Ljk0OTEzLDE5LjUwNDI3LC0yNS4zMjI4NCwxMi42MTgzLC0xNi42MDI0LDEwLjc3MzksLTYuNzA4LDExLjc4MDEzLDMxLjM2MDU0LDEyLjExNTU0LDQ3LjA0MDU3LDE0Ljc5ODgsNTYuODUwNDgsMjMuMjY3NzYsNTYuODQ5NzksMzUuMjU4MjgsNDYuOTU1MTEsNDMuODk0NjMsMjUuNDg5NzksNDMuNTU5MjQsOC4xMzMyNiw1Mi4yNzk5LC0xNS4zNDQzNyw2NC4xMDI0Ml0sInMiOlt7InAiOlstMzYuMDkyNTQsMTIuMzY5NjNdLCJyIjowLjE0NzI2LCJ3IjozLjQzNzkxLCJoIjoxLjg0NDc1fSx7InAiOlstMTMuNDE2MjUsMTQuMjUzN10sInIiOjAuMTE2NTgsInciOjQuNjk1NjgsImgiOjEuNDI1NDl9LHsicCI6WzQ0LjAwOTMxLDE4LjM4MTY2XSwiciI6MC4yNTc3MSwidyI6NC45NDcxMywiaCI6NC4yNzY0Mn0seyJwIjpbNjIuNzQ2NjksMjkuNDEzMzFdLCJyIjowLCJ3Ijo0LjEwODU1LCJoIjo1Ljg2OTUyfSx7InAiOls0Ni43MTExOSwzOC43NDQ2OV0sInIiOjEuMTQ3NDIsInciOjQuNTI3NzUsImgiOjYuNzA3OTR9LHsicCI6WzE5LjczNTEsOS40MDYyMV0sInIiOjAuNjUwNDEsInciOjEuOTcxNzcsImgiOjEuMDc1NTN9LHsicCI6WzI4Ljk5Njc5LDkuNzE3MjddLCJyIjowLjIwODYyLCJ3IjoxLjk3MTc1LCJoIjoxLjAzMDcyfSx7InAiOlsyNC4xNTIwNSw5LjkzODcyXSwiciI6LTAuMzE5MDcsInciOjEuMjU0NzYsImgiOjAuOTg1OX1dLCJkIjpbXSwibCI6MjU5LjA4OCwiYyI6eyJzIjoiMTAiLCJzbCI6IjEwIiwibHAiOjF9LCJ2IjoxfQ== diff --git a/seminar06-planning/simulator/LICENSE b/seminar06-planning/simulator/LICENSE new file mode 100644 index 0000000..07ccd93 --- /dev/null +++ b/seminar06-planning/simulator/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Matt Bradley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/seminar06-planning/simulator/css/dash.css b/seminar06-planning/simulator/css/dash.css new file mode 100644 index 0000000..09c8971 --- /dev/null +++ b/seminar06-planning/simulator/css/dash.css @@ -0,0 +1,353 @@ +html { overflow: hidden !important; } +body { margin: 0; } +canvas { width: 100%; height: 100% } + +.editor-grab { + cursor: pointer; + cursor: hand; + cursor: -webkit-grab; + cursor: grab; +} + +.editor-grabbing { + cursor: pointer; + cursor: hand; + cursor: -webkit-grabbing; + cursor: grabbing; +} + +.editor-pointing { + cursor: pointer; +} + +.editor-removing { + cursor: pointer; + cursor: no-drop; +} + +#container { + position: relative; + height: 100%; +} + +#dashboard { + position: absolute; + top: 0; + left: 0; +} + +#planner-error { + position: absolute; + top: 100%; + left: -8px; + width: 100%; +} + +#editor-enabler, #editor-controls { + position: absolute; + left: 0; + bottom: 0; +} + +#editor-help { + position: absolute; + bottom: 100%; + left: -8px; + margin-right: 0; +} + +#editor-help-path .flex, #editor-help-static-obstacles .flex { + position: absolute; + bottom: 100%; + left: -8px; + display: flex; + flex-direction: row; +} + +#editor-clear-options { + position: absolute; + bottom: 100%; + margin-left: -8px; + padding-bottom: 0; + padding-right: 0; +} + +#editor-clear-options .button { + width: 100%; + margin-right: 0.5rem; +} + +#editor-road-box { + position: absolute; +} + +#editor-dynamic-obstacles-box { + width: 450px; + position: absolute; +} + +#editor-scenario-info { + position: absolute; + top: 0; + right: 0; + max-width: 50%; +} + +#editor-scenario-name { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +#welcome-modal .hero { + margin: -1.5rem -1.5rem 1.5rem -1.5rem; +} + +#welcome-modal a, #planner-error a { + color: #6697e5 !important; +} + +#welcome-modal a:hover, #planner-error a:hover { + color: #3273dc !important; +} + +#scenarios-modal .columns { + margin-bottom: 0; +} + +#scenarios-modal-items { + flex: 1; + margin-bottom: -0.75rem; + overflow-y: scroll; + overflow-x: hidden; +} + +#scenarios-modal-tabs a { + color: #dbdbdb; +} + +#scenarios-modal-tabs a:hover { + color: #4a4a4a; +} + +#scenarios-modal-tabs .is-active a { + color: #fff; +} + +.scenarios-modal-tab { + height: calc(50vh); + display: flex; + flex-direction: column; +} + +#scenarios-modal-examples-tab .columns { + height: 25%; + margin-top: 0; + margin-bottom: 0; +} + +#scenarios-modal-examples-tab .column:hover { + cursor: pointer; + color: #fff; + text-decoration: underline; +} + +#scenarios-modal-examples-tab img { + float: left; + height: 100%; +} + +#scenarios-modal-examples-tab .name { + padding-left: 0.75rem; + padding-bottom: 1.5rem; + overflow: hidden; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; +} + +.scenario-sort-button { + cursor: pointer; +} + +.scenario-item:hover { + background: rgba(255, 255, 255, 0.2); +} + +.scenario-item-name { + font-weight: bold; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.scenario-item-name:hover { + cursor: pointer; + color: #fff; + text-decoration: underline; +} + +.is-underlined { + text-decoration: underline; +} + +.editor-dynamic-obstacle-form:last-child { + margin-bottom: 0; +} + +.editor-field-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; +} + +#editor-stats { + position: absolute; + right: 0; + bottom: 0; +} + +#editor-stats-sl { + position: absolute; + right: 100%; + top: -8px; + white-space: nowrap; +} + +#cameras { + position: absolute; + right: 0; + bottom: 0; +} + +.gui-box { + background: #222b; + padding: 8px; + margin: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border-radius: 2px; +} + +.modal-box { + background: #222; + padding: 1.5rem; + border-radius: 2px; +} + +.allow-user-select { + -webkit-touch-callout: auto !important; + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} + +#controls { + position: relative; + padding: 8px; + overflow: hidden; +} + +#stats { + padding: 8px 8px 8px 0; + width: 300px; + line-height: 1.2; +} + +#stats .units-button { + cursor: pointer; +} + +#config-box { + position: absolute; + top: 0; + right: 0; +} + +#gear { + display: none; + position: absolute; + color: #aaa; + font-weight: bold; + font-size: 13px; + top: 50%; + margin-top: -8px; + text-align: center; + width: 100%; + margin-left: -8px; +} + +#brake, #gas { + position: absolute; + border: 63px solid; + border-radius: 100%; + width: 200%; + height: 200%; + bottom: -50%; + box-sizing: border-box; + clip-path: inset(50% 50% 0 50%); +} + +#brake { + left: -50%; + border-color: red; +} + +#gas { + right: -50%; + border-color: green; +} + +#wheel-wrapper { + position: relative; + width: 100px; + height: 100px; +} + +#wheel { + width: 100px; + height: 100px; + mask-image: url('../images/wheel.png'); + mask-size: contain; + -webkit-mask-image: url('../images/wheel.png'); + -webkit-mask-size: contain; + background-color: hsl(0, 0%, 86%); +} + +#wheel-marker { + height: 4px; + width: 3px; + border-radius: 1px; + background: #804000; + position: absolute; + top: 4px; + left: 50%; + margin-left: -1.5px; +} + +#wheel-pie { + height: 100%; + width: 100%; + clip-path: inset(0 0 0 50%); + left: 0; + position: absolute; + top: 0; + box-sizing: border-box; +} + +#wheel-pie-left, #wheel-pie-right { + height: 100%; + width: 100%; + border: 2px solid #ff8000; + border-radius: 50%; + clip-path: inset(0 50% 0 0); + left: 0; + position: absolute; + top: 0; + box-sizing: border-box; +} diff --git a/seminar06-planning/simulator/dist/Dash.js b/seminar06-planning/simulator/dist/Dash.js new file mode 100644 index 0000000..5c81594 --- /dev/null +++ b/seminar06-planning/simulator/dist/Dash.js @@ -0,0 +1 @@ +(()=>{var __webpack_modules__={236:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";eval('\n;// CONCATENATED MODULE: ./js/physics/Car.js\nclass Car_Car {\n constructor(x = 0, y = 0, rotation = 0) {\n this.setPose(x, y, rotation);\n }\n\n static getFrontAxlePosition(pos, rot) {\n return THREE.Vector2.fromAngle(rot).multiplyScalar(Car_Car.WHEEL_BASE).add(pos);\n }\n\n static getFakeAxlePosition(pos, rot) {\n return Car_Car.frontToRearAxlePosition(pos, rot);\n }\n\n static centerToRearAxlePosition(pos, rot) {\n return THREE.Vector2.fromAngle(rot).multiplyScalar(Car_Car.REAR_AXLE_POS).add(pos);\n }\n\n static frontToRearAxlePosition(pos, rot) {\n return THREE.Vector2.fromAngle(rot).multiplyScalar(-Car_Car.WHEEL_BASE).add(pos);\n }\n\n get pose() {\n return { pos: this.rearAxlePosition.clone(), rot: this.rotation, velocity: this.velocity, curv: this.curvature, dCurv: this.dCurv, ddCurv: this.ddCurv };\n }\n\n get curvature() {\n return Math.tan(this.wheelAngle) / Car_Car.WHEEL_BASE;\n }\n\n get rearAxlePosition() {\n const { x, y } = this.position;\n const rot = this.rotation;\n return new THREE.Vector2(x + Math.cos(rot) * Car_Car.REAR_AXLE_POS, y + Math.sin(rot) * Car_Car.REAR_AXLE_POS);\n }\n\n get frontAxlePosition() {\n const { x, y } = this.position;\n const rot = this.rotation;\n return new THREE.Vector2(x + Math.cos(rot) * Car_Car.FRONT_AXLE_POS, y + Math.sin(rot) * Car_Car.FRONT_AXLE_POS);\n }\n\n setPose(x, y, rotation) {\n // Translate so that x and y become the center of the vehicle (instead of the center of the rear axle)\n x -= Car_Car.REAR_AXLE_POS * Math.cos(rotation);\n y -= Car_Car.REAR_AXLE_POS * Math.sin(rotation);\n\n this.position = new THREE.Vector2(x, y);\n this.rotation = Math.wrapAngle(rotation);\n this.velocity = 0;\n this.acceleration = 0;\n this.wheelAngle = 0;\n this.wheelAngularVelocity = 0;\n this.dCurv = 0; // derivative with respect to arc length\n this.ddCurv = 0; // derivative with respect to arc length\n }\n\n step(dt) {\n const curvPrev = this.curvature;\n const dCurvPrev = this.dCurv;\n\n const drag = (0.5 * Car_Car.DRAG_COEFF * Car_Car.FRONTAL_AREA * Car_Car.DENSITY_OF_AIR * Math.abs(this.velocity) + Car_Car.ROLL_RESIST) * -this.velocity;\n this.velocity += (this.acceleration + drag / Car_Car.MASS) * dt;\n\n const velocitySq = this.velocity * this.velocity;\n const maxWheelAngle = Math.clamp(Math.atan(Car_Car.MAX_LATERAL_ACCEL * Car_Car.WHEEL_BASE / velocitySq), 0.07, Car_Car.MAX_WHEEL_ANGLE);\n this.wheelAngle = Math.clamp(Math.wrapAngle(this.wheelAngle + this.wheelAngularVelocity * dt), -maxWheelAngle, maxWheelAngle);\n\n const angularVelocity = this.velocity * this.curvature;\n this.rotation = Math.wrapAngle(this.rotation + angularVelocity * dt);\n\n const dist = this.velocity * dt;\n this.position = THREE.Vector2.fromAngle(this.rotation).multiplyScalar(dist).add(this.position);\n\n this.dCurv = dist > 0.1 ? (this.curvature - curvPrev) / dist : 0;\n this.ddCurv = dist > 0.1 ? (this.dCurv - dCurvPrev) / dist : 0;\n }\n\n update(controls, dt) {\n const gas = Math.clamp(controls.gas, -1, +1);\n const brake = Math.clamp(controls.brake, 0, 1);\n const steer = Math.clamp(controls.steer, -1, +1);\n\n if (brake > 0) {\n this.acceleration = -Math.sign(this.velocity) * Car_Car.MAX_BRAKE_DECEL * brake;\n const newVelocity = this.velocity + this.acceleration * dt;\n\n // If applying the braking deceleration at the next step would cause the velocity\n // to change directions, then just set the car as stopped.\n if (Math.sign(newVelocity) != Math.sign(this.velocity)) {\n this.velocity = 0;\n this.acceleration = 0;\n }\n } else {\n this.acceleration = Car_Car.MAX_GAS_ACCEL * gas;\n }\n\n if (steer != 0) {\n this.wheelAngularVelocity = steer * Car_Car.MAX_STEER_SPEED;\n } else {\n this.wheelAngularVelocity = Math.clamp(-this.wheelAngle / Car_Car.MAX_WHEEL_ANGLE * this.velocity * this.velocity * dt, -Car_Car.MAX_STEER_SPEED, Car_Car.MAX_STEER_SPEED);\n }\n }\n}\n\nCar_Car.HALF_CAR_LENGTH = 2.5; // meters\nCar_Car.HALF_CAR_WIDTH = 1; // meters\nCar_Car.HALF_WHEEL_LENGTH = 0.38; // meters\nCar_Car.HALF_WHEEL_WIDTH = 0.12; // meters\nCar_Car.MAX_WHEEL_ANGLE = 32 / 180 * Math.PI; // radians\nCar_Car.MASS = 1600; // kg\nCar_Car.DRAG_COEFF = 0.7;\nCar_Car.DENSITY_OF_AIR = 1.8580608; // (kg/m^3)\nCar_Car.FRONTAL_AREA = 1.85; // m^2\nCar_Car.ROLL_RESIST = 0;\nCar_Car.MAX_STEER_SPEED = 0.8;//1.2; // Radians per second\nCar_Car.MAX_GAS_ACCEL = 3.0; // m / s^2\nCar_Car.MAX_BRAKE_DECEL = 3.0; // m / s^2\nCar_Car.WHEEL_LATERAL_POS = 0.843; // meters\nCar_Car.FRONT_AXLE_POS = 1.6; // meters\nCar_Car.REAR_AXLE_POS = -1.43; // meters\nCar_Car.WHEEL_BASE = Car_Car.FRONT_AXLE_POS - Car_Car.REAR_AXLE_POS; // meters\nCar_Car.MAX_LATERAL_ACCEL = 5.81; // m / s^2\n\n;// CONCATENATED MODULE: ./js/physics/Physics.js\n\n\nclass Physics {\n constructor() {\n this.cars = [];\n }\n\n step(dt) {\n this.cars.forEach(c => c.step(dt));\n }\n\n createCar() {\n const newCar = new Car_Car();\n this.cars.push(newCar);\n\n return newCar;\n }\n};\n\n;// CONCATENATED MODULE: ./js/autonomy/Path.js\n\n\n// input pose: { pos: Vector2 [, rot: radians] }\n// pose: { pos: Vector2, frontPos: Vector2, fakePos: Vector2, rot: radians }\nclass Path {\n constructor(poses, startRotation = 0, goalRotation = 0) {\n this.poses = poses;\n\n for (let i = 0; i < poses.length; i++) {\n const pose = poses[i];\n\n if (pose.rot === undefined || pose.rot == null) {\n let rot;\n\n if (i == 0) {\n rot = startRotation;\n } else if (i == poses.length - 1) {\n rot = goalRotation;\n } else {\n const prev = poses[i - 1].pos;\n const next = poses[i + 1].pos;\n rot = Math.atan2(next.y - prev.y, next.x - prev.x);\n }\n\n pose.rot = rot;\n }\n\n if (pose.curv === undefined || pose.curv == null) {\n if (i > 0 && i < poses.length - 1) {\n const prev = poses[i - 1].pos;\n const cur = poses[i].pos;\n const next = poses[i + 1].pos;\n\n const dir1 = { x: cur.x - prev.x, y: cur.y - prev.y };\n const dir2 = { x: next.x - cur.x, y: next.y - cur.y };\n\n const angle1 = Math.atan2(dir1.y, dir1.x);\n const angle2 = Math.atan2(dir2.y, dir2.x);\n\n // Calculate the angular difference in a way that properly handles the wrap-around from -π to π\n let deltaAngle = angle2 - angle1;\n // Normalize the angle difference to be within the range [-π, π]\n deltaAngle = (deltaAngle + Math.PI) % (2 * Math.PI) - Math.PI;\n\n // Assuming uniform segment lengths, the curvature (inverse radius of curvature) can be\n // approximated as the change in angle. For non-uniform segment lengths, include arc length in calculation\n const curvature = Math.abs(deltaAngle); // Using absolute value of angle difference\n\n pose.curv = curvature;\n } else {\n // Assign zero curvature for start and end points or handle as needed\n pose.curv = 0;\n }\n }\n\n pose.frontPos = Car_Car.getFrontAxlePosition(pose.pos, pose.rot);\n pose.fakePos = Car_Car.getFakeAxlePosition(pose.pos, pose.rot);\n }\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/CubicPath.js\nconst SIMPSONS_INTERVALS = 8;\nconst NEWTON_ITERATIONS = 16;\nconst RELAXATION_ITERATIONS = 32;\nconst CONVERGENCE_ERROR = 0.01;\n\nconst jacobian = new THREE.Matrix3();\nconst invJacobian = new THREE.Matrix3();\n\n// Alternate reference implementation: https://github.com/ApolloAuto/apollo/blob/master/modules/planning/math/spiral_curve/cubic_spiral_curve.cc\nclass CubicPath_CubicPath {\n constructor(start, end, params = null) {\n this.start = Object.assign({}, start);\n this.end = Object.assign({}, end);\n\n if (start.pos) {\n this.start.x = start.pos.x;\n this.start.y = start.pos.y\n }\n\n if (end.pos) {\n this.end.x = end.pos.x;\n this.end.y = end.pos.y\n }\n\n const diffX = this.end.x - this.start.x;\n const diffY = this.end.y - this.start.y;\n const sinRot = Math.sin(this.start.rot);\n const cosRot = Math.cos(this.start.rot);\n\n this.goal = {\n x: cosRot * diffX + sinRot * diffY,\n y: -sinRot * diffX + cosRot * diffY,\n rot: Math.wrapAngle(this.end.rot - this.start.rot),\n curv: this.end.curv\n };\n\n if (params)\n this.params = Object.assign({}, params, { p0: this.start.curv, p3: this.end.curv });\n else\n this.guessInitialParams();\n\n this.converged = false;\n }\n\n guessInitialParams() {\n const originalGoal = this.goal;\n const dStartCurv = this.start.curv / RELAXATION_ITERATIONS;\n const dGoalY = originalGoal.y / RELAXATION_ITERATIONS;\n const dGoalRot = originalGoal.rot / RELAXATION_ITERATIONS;\n const dGoalCurv = originalGoal.curv / RELAXATION_ITERATIONS;\n\n this.goal = {\n x: originalGoal.x,\n y: 0,\n rot: 0,\n curv: 0\n };\n\n this.params = {\n p0: 0,\n p1: 0,\n p2: 0,\n p3: 0,\n sG: originalGoal.x\n };\n\n for (let i = 0; i < RELAXATION_ITERATIONS; i++) {\n this.params.p0 += dStartCurv;\n this.params.p3 += dGoalCurv;\n this.goal.y += dGoalY;\n this.goal.rot += dGoalRot;\n this.goal.curv += dGoalCurv;\n\n this.iterate();\n }\n\n this.goal = originalGoal;\n }\n\n optimize() {\n for (let i = 0; i < NEWTON_ITERATIONS; i++) {\n if (this.iterate()) {\n this.converged = true;\n return true;\n }\n }\n\n this.converged = false;\n return false;\n }\n\n iterate() {\n const { p0, p1, p2, p3, sG } = this.params;\n\n const ds = sG / SIMPSONS_INTERVALS;\n const sG_2 = sG * sG;\n const sG_3 = sG_2 * sG;\n\n let dX_p1 = 0;\n let dX_p2 = 0;\n let dX_sG = 0;\n let dY_p1 = 0;\n let dY_p2 = 0;\n let dY_sG = 0;\n let guessX = 0;\n let guessY = 0;\n\n let theta, cosTheta, sinTheta, dT_p1, dT_p2, dT_sG;\n\n for (let i = 0, s = 0; i <= SIMPSONS_INTERVALS; i++, s += ds) {\n const coeff = i == 0 || i == SIMPSONS_INTERVALS ? 1 : i % 2 == 0 ? 2 : 4;\n\n const a = p0;\n const b = (-5.5 * p0 + 9 * p1 - 4.5 * p2 + p3) / sG;\n const c = (9 * p0 - 22.5 * p1 + 18 * p2 - 4.5 * p3) / sG_2;\n const d = (-4.5 * (p0 - 3 * p1 + 3 * p2 - p3)) / sG_3;\n\n theta = (((d * s / 4 + c / 3) * s + b / 2) * s + a) * s;\n cosTheta = Math.cos(theta);\n sinTheta = Math.sin(theta);\n\n const s_sG = s / sG;\n dT_p1 = ((3.375 * s_sG - 7.5) * s_sG + 4.5) * s_sG * s;\n dT_p2 = ((-3.375 * s_sG + 6) * s_sG - 2.25) * s_sG * s;\n dT_sG = ((3.375 * (p0 - 3 * p1 + 3 * p2 - p3) * s_sG - 3 * (2 * p0 - 5 * p1 + 4 * p2 - p3)) * s_sG + 0.25 * (11 * p0 - 18 * p1 + 9 * p2 - 2 * p3)) * s_sG * s_sG;\n\n dX_p1 -= coeff * sinTheta * dT_p1;\n dX_p2 -= coeff * sinTheta * dT_p2;\n dX_sG -= coeff * sinTheta * dT_sG;\n\n dY_p1 += coeff * cosTheta * dT_p1;\n dY_p2 += coeff * cosTheta * dT_p2;\n dY_sG += coeff * cosTheta * dT_sG;\n\n guessX += coeff * cosTheta;\n guessY += coeff * sinTheta;\n }\n\n // After the Simpson\'s integration loop, `theta`, `cosTheta`, `sinTheta`,\n // `dT_p1`, `dT_p2`, and `dT_sG` hold the appropriate values for `sG`.\n\n const hOver3 = sG / SIMPSONS_INTERVALS / 3;\n\n const deltaX = this.goal.x - guessX * hOver3;\n const deltaY = this.goal.y - guessY * hOver3;\n const deltaRot = Math.wrapAngle(this.goal.rot - theta);\n\n if (Math.abs(deltaX) + Math.abs(deltaY) + Math.abs(deltaRot) < CONVERGENCE_ERROR)\n return true;\n\n jacobian.set(\n dX_p1 * hOver3, dX_p2 * hOver3, cosTheta + dX_sG * hOver3,\n dY_p1 * hOver3, dY_p2 * hOver3, sinTheta + dY_sG * hOver3,\n dT_p1, dT_p2, dT_sG\n );\n\n const [m11, m21, m31, m12, m22, m32, m13, m23, m33] = invJacobian.getInverse(jacobian).elements;\n\n this.params.p1 += m11 * deltaX + m12 * deltaY + m13 * deltaRot;\n this.params.p2 += m21 * deltaX + m22 * deltaY + m23 * deltaRot;\n this.params.sG += m31 * deltaX + m32 * deltaY + m33 * deltaRot;\n\n return false;\n }\n\n buildPath(num) {\n const { p0, p1, p2, p3, sG } = this.params;\n\n const sG_2 = sG * sG;\n const sG_3 = sG_2 * sG;\n\n const a = p0;\n const b = (-5.5 * p0 + 9 * p1 - 4.5 * p2 + p3) / sG;\n const c = (9 * p0 - 22.5 * p1 + 18 * p2 - 4.5 * p3) / sG_2;\n const d = (-4.5 * (p0 - 3 * p1 + 3 * p2 - p3)) / sG_3;\n\n const path = [{ pos: new THREE.Vector2(this.start.x, this.start.y), rot: this.start.rot, curv: this.start.curv }];\n const ds = sG / (num - 1);\n let s = ds;\n let dx = 0;\n let dy = 0;\n let prevCosRot = Math.cos(path[0].rot);\n let prevSinRot = Math.sin(path[0].rot);\n\n for (let i = 1; i < num - 1; i++) {\n const rot = (((d * s / 4 + c / 3) * s + b / 2) * s + a) * s + this.start.rot;\n const curv = ((d * s + c) * s + b) * s + a;\n const cosRot = Math.cos(rot);\n const sinRot = Math.sin(rot);\n\n dx = dx * (i - 1) / i + (cosRot + prevCosRot) / (2 * i);\n dy = dy * (i - 1) / i + (sinRot + prevSinRot) / (2 * i);\n\n path.push({ pos: new THREE.Vector2(s * dx + this.start.x, s * dy + this.start.y), rot: rot, curv: curv });\n\n s += ds;\n prevCosRot = cosRot;\n prevSinRot = sinRot;\n }\n\n path.push({ pos: new THREE.Vector2(this.end.x, this.end.y), rot: this.end.rot, curv: this.end.curv });\n\n return path;\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/control/AutonomousController.js\n\n\nclass AutonomousController {\n constructor(path) {\n this.path = path;\n this.nextIndex = 1;\n this.prevPhiError = 0;\n this.prevVelocity = 0;\n }\n\n reset() {\n this.prevVelocity = 0;\n }\n\n replacePath(path) {\n this.path = path;\n this.nextIndex = 1;\n }\n\n predictPoseAfterTime(currentPose, predictionTime) {\n const pathPoses = this.path.poses;\n const frontAxlePos = Car.getFrontAxlePosition(currentPose.pos, currentPose.rot);\n let [nextIndex, progress] = this.findNextIndex(frontAxlePos);\n let currentVelocity = currentPose.velocity;\n\n if (currentVelocity <= 0.01) return currentPose;\n\n while (predictionTime > 0) {\n const prevPose = pathPoses[nextIndex - 1];\n const nextPose = pathPoses[nextIndex];\n\n const segmentDist = nextPose.pos.distanceTo(prevPose.pos);\n const distLeft = segmentDist * (1 - progress);\n const sumV = currentVelocity + nextPose.velocity;\n const timeToNextIndex = 2 * distLeft / (sumV == 0 ? 0.01 : sumV);\n //const timeToNextIndex = distLeft / currentVelocity;\n\n if (timeToNextIndex >= predictionTime || nextIndex + 1 >= pathPoses.length) {\n const dist = sumV / 2 * predictionTime;\n const newProgress = progress + dist / segmentDist;\n\n return {\n pos: nextPose.pos.clone().sub(prevPose.pos).multiplyScalar(newProgress).add(nextPose.pos),\n rot: prevPose.rot + (nextPose.rot - prevPose.rot) * newProgress,\n curv: prevPose.curv + (nextPose.curv - prevPose.curv) * newProgress,\n dCurv: 0,\n ddCurv: 0,\n velocity: nextPose.velocity\n }\n }\n\n //currentVelocity = nextPose.velocity;\n predictionTime -= timeToNextIndex;\n progress = 0;\n nextIndex++;\n }\n }\n\n control(pose, wheelAngle, velocity, dt) {\n const pathPoses = this.path.poses;\n const frontAxlePos = Car.getFrontAxlePosition(pose.pos, pose.rot);\n const [nextIndex, progress] = this.findNextIndex(frontAxlePos);\n this.nextIndex = nextIndex;\n\n let gas = 0;\n let brake = 0;\n let phi = 0; // the desired wheel deflection\n\n if (nextIndex >= pathPoses.length - 1 && progress >= 1) {\n gas = 0;\n brake = 1;\n phi = 0;\n } else {\n const kp_a = 4;\n const kd_a = 0.5;\n const kff_a = 0.5;\n\n const currentAccel = (velocity - this.prevVelocity) / dt;\n const prevNextDist = pathPoses[this.nextIndex].pos.distanceTo(pathPoses[this.nextIndex - 1].pos);\n const targetVelocity = Math.sqrt(2 * pathPoses[nextIndex].acceleration * prevNextDist * Math.clamp(progress, 0, 1) + pathPoses[this.nextIndex - 1].velocity * pathPoses[this.nextIndex - 1].velocity);\n const diffVelocity = targetVelocity - velocity;\n const diffAccel = pathPoses[this.nextIndex].acceleration - currentAccel;\n const targetAccel = kp_a * diffVelocity + kd_a * diffAccel + kff_a * pathPoses[this.nextIndex].acceleration;\n\n if (targetAccel > 0)\n gas = Math.min(targetAccel / Car.MAX_GAS_ACCEL, 1);\n else\n brake = Math.min(-targetAccel / Car.MAX_BRAKE_DECEL, 1);\n\n this.prevVelocity = velocity;\n\n const closestFrontPathPos = projectPointOnSegment(frontAxlePos, pathPoses[this.nextIndex - 1].frontPos, pathPoses[this.nextIndex].frontPos)[0];\n\n // Determine the desired heading at the specific point on the front path by lerping between prevHeading and nextHeading using progress as the weight\n const prevHeading = this.nextIndex > 1 ? pathPoses[nextIndex].frontPos.clone().sub(pathPoses[nextIndex - 2].frontPos).angle() : pathPoses[0].rot;\n const nextHeading = this.nextIndex < pathPoses.length - 1 ? pathPoses[nextIndex + 1].frontPos.clone().sub(pathPoses[nextIndex - 1].frontPos).angle() : pathPoses[pathPoses.length - 1].rot;\n const desiredHeading = prevHeading + (nextHeading - prevHeading) * progress;\n\n // Determine if the front axle is to the left or right of the front path\n const pathVec = pathPoses[nextIndex].frontPos.clone().sub(pathPoses[nextIndex - 1].frontPos).normalize();\n const zero = new THREE.Vector2(0, 0);\n const left = pathVec.clone().rotateAround(zero, Math.PI / 2).add(closestFrontPathPos);\n const right = pathVec.clone().rotateAround(zero, -Math.PI / 2).add(closestFrontPathPos);\n const dir = frontAxlePos.distanceToSquared(left) < frontAxlePos.distanceToSquared(right) ? -1 : 1;\n\n const k = 4;\n const gain = 0.8;\n const crossTrackError = frontAxlePos.distanceTo(closestFrontPathPos);\n const headingError = Math.wrapAngle(pose.rot - desiredHeading);\n\n //phi = -headingError + gain * Math.atan(k * dir * crossTrackError / velocity);\n\n const curv = pathPoses[nextIndex - 1].curv + (pathPoses[nextIndex].curv - pathPoses[nextIndex - 1].curv) * progress;\n\n phi = Math.atan(curv * Car.WHEEL_BASE) + gain * Math.atan(k * dir * crossTrackError / Math.max(velocity, 0.01));\n\n const checkSteer = Math.clamp((phi - wheelAngle) / dt / Car.MAX_STEER_SPEED, -1, 1);\n }\n\n const phiError = phi - wheelAngle;\n /*\n const dPhiError = (phiError - this.prevPhiError) / dt;\n this.prevPhiError = phiError;\n \n const steer = Math.clamp(12 * phiError + 0.8 * dPhiError, -1, 1);\n */\n\n const steer = Math.clamp(phiError / dt / Car.MAX_STEER_SPEED, -1, 1);\n\n return { gas, brake, steer };\n }\n\n // Finds the next point the vehicle is approaching and the progress between the prev point and the next point\n // Returns [nextPointIndex, progress from (nextPointIndex - 1) to nextPointIndex, {0 - 1}]\n findNextIndex(frontAxlePos) {\n const pathPoses = this.path.poses;\n\n // Constrain the search to just a few points surrounding the current nextIndex\n // for performance and to avoid problems with a path that crosses itself\n const start = Math.max(0, this.nextIndex - 20);\n const end = Math.min(pathPoses.length - 1, this.nextIndex + 20);\n let closestDistSqr = frontAxlePos.distanceToSquared(pathPoses[start].frontPos);\n let closestIndex = start;\n\n for (let i = start + 1; i < end; i++) {\n const distSqr = frontAxlePos.distanceToSquared(pathPoses[i].frontPos);\n if (distSqr < closestDistSqr) {\n closestDistSqr = distSqr;\n closestIndex = i;\n }\n }\n\n if (closestIndex == pathPoses.length - 1) {\n const [_, progress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex - 1].frontPos, pathPoses[closestIndex].frontPos);\n return [closestIndex, progress];\n } else if (closestIndex == 0) {\n const [_, progress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex].frontPos, pathPoses[closestIndex + 1].frontPos);\n return [closestIndex + 1, progress];\n } else {\n // The nextPoint is either (closestPoint) or (closestPoint + 1). Project the frontAxlePos to both\n // of those two line segments (the segment preceding closestPoint and the segment succeeding closestPoint)\n // to determine which segment it\'s closest to.\n const [precedingProjection, precedingProgress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex - 1].frontPos, pathPoses[closestIndex].frontPos);\n const [succeedingProjection, succeedingProgress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex].frontPos, pathPoses[closestIndex + 1].frontPos);\n\n if (frontAxlePos.distanceToSquared(precedingProjection) < frontAxlePos.distanceToSquared(succeedingProjection)) {\n return [closestIndex, precedingProgress];\n } else {\n return [closestIndex + 1, succeedingProgress];\n }\n }\n }\n}\n\n// Returns [pointOnSegment, progressAlongSegment {0 - 1}]\nfunction projectPointOnSegment(point, start, end) {\n const distSqr = start.distanceToSquared(end);\n //const progress = Math.clamp(point.clone().sub(start).dot(end.clone().sub(start)) / distSqr, 0, 1);\n const progress = point.clone().sub(start).dot(end.clone().sub(start)) / distSqr;\n return [end.clone().sub(start).multiplyScalar(progress).add(start), progress];\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/control/FollowController.js\n\n\nclass FollowController {\n constructor(path, car) {\n this.path = path;\n this.car = car;\n this.nextIndex = 1;\n this.prevVelocity = 0;\n this.prevAccel = 0;\n }\n\n reset() {\n this.prevVelocity = 0;\n this.prevAccel = 0;\n }\n\n replacePath(path) {\n this.path = path;\n this.nextIndex = 1;\n }\n\n predictPoseAfterTime(currentPose, predictionTime) {\n const pathPoses = this.path.poses;\n let [nextIndex, progress] = this.findNextIndex(currentPose.pos);\n let currentVelocity = currentPose.velocity;\n\n if (currentVelocity <= 0.01) return currentPose;\n\n while (predictionTime > 0) {\n const prevPose = pathPoses[nextIndex - 1];\n const nextPose = pathPoses[nextIndex];\n\n const segmentDist = nextPose.pos.distanceTo(prevPose.pos);\n const distLeft = segmentDist * (1 - progress);\n const sumV = (currentVelocity + nextPose.velocity) / 2;\n const timeToNextIndex = 2 * distLeft / (sumV == 0 ? 0.01 : sumV);\n\n if (timeToNextIndex >= predictionTime || nextIndex + 1 >= pathPoses.length) {\n const dist = sumV / 2 * predictionTime;\n const newProgress = progress + dist / segmentDist;\n const newRotation = Math.wrapAngle(prevPose.rot + Math.wrapAngle(nextPose.rot - prevPose.rot) * newProgress);\n\n const pprevPose = nextIndex - 2 >= 0 ? pathPoses[nextIndex - 2] : prevPose;\n const nnextPose = nextIndex + 1 < pathPoses.length ? pathPoses[nextIndex + 1] : nextPose;\n\n const dCurv = (nextPose.curv - prevPose.curv) / segmentDist;\n const dCurvPrev = ((prevPose.curv - pprevPose.curv) / pprevPose.pos.distanceTo(prevPose.pos) + dCurv) / 2;\n const dCurvNext = (dCurv + (nnextPose.curv - nextPose.curv) / nextPose.pos.distanceTo(nnextPose.pos)) / 2;\n\n const ddCurv = (dCurvNext - dCurvPrev) / segmentDist;\n\n return {\n pos: nextPose.pos.clone().sub(prevPose.pos).multiplyScalar(newProgress).add(nextPose.pos),\n rot: newRotation,\n curv: prevPose.curv + (nextPose.curv - prevPose.curv) * newProgress,\n dCurv: dCurv,\n ddCurv: ddCurv,\n velocity: nextPose.velocity\n }\n }\n\n currentVelocity = nextPose.velocity;\n predictionTime -= timeToNextIndex;\n progress = 0;\n nextIndex++;\n }\n }\n\n control(pose, wheelAngle, velocity, dt, lockPath = false) {\n const pathPoses = this.path.poses;\n const [nextIndex, progress, projection] = this.findNextIndex(pose.pos);\n this.nextIndex = nextIndex;\n\n const prevPose = pathPoses[nextIndex - 1];\n const nextPose = pathPoses[nextIndex];\n\n let gas = 0;\n let brake = 0;\n let steer = 0;\n\n if (nextIndex >= pathPoses.length - 2 && progress >= 1 - 1e-6) {\n brake = 1;\n } else {\n /*\n const kp_a = 4;\n const kd_a = 0.5;\n const kff_a = 0.5;\n\n const currentAccel = (velocity - this.prevVelocity) / dt;\n const prevNextDist = nextPose.pos.distanceTo(prevPose.pos);\n const targetVelocity = Math.sqrt(2 * nextPose.acceleration * prevNextDist * Math.clamp(progress, 0, 1) + prevPose.velocity * prevPose.velocity);\n const diffVelocity = targetVelocity - velocity;\n const diffAccel = nextPose.acceleration - currentAccel;\n const targetAccel = kp_a * diffVelocity + kd_a * diffAccel + kff_a * nextPose.acceleration;\n */\n const accelDamping = 0.1;\n const targetAccel = nextPose.acceleration;\n const dampedAccel = this.prevAccel * (1 - accelDamping) + targetAccel * accelDamping;\n\n if (dampedAccel > 0)\n gas = Math.min(dampedAccel / Car_Car.MAX_GAS_ACCEL, Car_Car.MAX_GAS_ACCEL);\n else\n brake = Math.min(-dampedAccel / Car_Car.MAX_BRAKE_DECEL, Car_Car.MAX_BRAKE_DECEL);\n\n this.prevVelocity = velocity;\n this.prevAccel = dampedAccel;\n\n const curvature = prevPose.curv + (nextPose.curv - prevPose.curv) * progress;\n const desiredWheelAngle = Math.atan(curvature * Car_Car.WHEEL_BASE);\n const wheelAngleError = desiredWheelAngle - wheelAngle;\n steer = Math.clamp(wheelAngleError / dt / Car_Car.MAX_STEER_SPEED, -1, 1);\n\n if (lockPath) {\n const damping = 0.1;\n const newRotation = Math.wrapAngle(prevPose.rot + Math.wrapAngle(nextPose.rot - prevPose.rot) * progress);\n const newPosition = new THREE.Vector2(projection.x - Car_Car.REAR_AXLE_POS * Math.cos(newRotation), projection.y - Car_Car.REAR_AXLE_POS * Math.sin(newRotation));\n\n if (Math.abs(Math.wrapAngle(newRotation - this.car.rotation)) > 0.5) {\n console.log(\'wut\');\n }\n\n this.car.rotation += damping * Math.wrapAngle(newRotation - this.car.rotation);\n this.car.position = this.car.position.clone().multiplyScalar(1 - damping).add(newPosition.multiplyScalar(damping));\n }\n }\n\n return { gas, brake, steer };\n }\n\n findNextIndex(pos) {\n const pathPoses = this.path.poses;\n\n // Constrain the search to just a few points surrounding the current nextIndex\n // for performance and to avoid problems with a path that crosses itself\n const start = Math.max(0, this.nextIndex - 20);\n const end = Math.min(pathPoses.length - 1, this.nextIndex + 20);\n let closestDistSqr = pos.distanceToSquared(pathPoses[start].pos);\n let closestIndex = start;\n\n for (let i = start + 1; i < end; i++) {\n const distSqr = pos.distanceToSquared(pathPoses[i].pos);\n if (distSqr < closestDistSqr) {\n closestDistSqr = distSqr;\n closestIndex = i;\n }\n }\n\n if (closestIndex == pathPoses.length - 1) {\n const [projection, progress] = FollowController_projectPointOnSegment(pos, pathPoses[closestIndex - 1].pos, pathPoses[closestIndex].pos);\n return [closestIndex, progress, projection];\n } else if (closestIndex == 0) {\n const [projection, progress] = FollowController_projectPointOnSegment(pos, pathPoses[closestIndex].pos, pathPoses[closestIndex + 1].pos);\n return [closestIndex + 1, progress, projection];\n } else {\n // The nextPoint is either (closestPoint) or (closestPoint + 1). Project the pos to both\n // of those two line segments (the segment preceding closestPoint and the segment succeeding closestPoint)\n // to determine which segment it\'s closest to.\n const [precedingProjection, precedingProgress] = FollowController_projectPointOnSegment(pos, pathPoses[closestIndex - 1].pos, pathPoses[closestIndex].pos);\n const [succeedingProjection, succeedingProgress] = FollowController_projectPointOnSegment(pos, pathPoses[closestIndex].pos, pathPoses[closestIndex + 1].pos);\n\n if (pos.distanceToSquared(precedingProjection) < pos.distanceToSquared(succeedingProjection)) {\n return [closestIndex, precedingProgress, precedingProjection];\n } else {\n return [closestIndex + 1, succeedingProgress, succeedingProjection];\n }\n }\n }\n}\n\n// Returns [pointOnSegment, progressAlongSegment {0 - 1}]\nfunction FollowController_projectPointOnSegment(point, start, end) {\n const distSqr = start.distanceToSquared(end);\n const progress = point.clone().sub(start).dot(end.clone().sub(start)) / distSqr;\n\n const clampedProgress = Math.max(0, Math.min(1, progress));\n return [end.clone().sub(start).multiplyScalar(clampedProgress).add(start), clampedProgress];\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/control/ManualController.js\nclass ManualController {\n constructor() {\n this.carKeys = { forward: false, backward: false, left: false, right: false, brake: false };\n\n document.addEventListener(\'keydown\', event => {\n switch (event.key) {\n case \'w\': case \'W\': this.carKeys.forward = true; break;\n case \'s\': case \'S\': this.carKeys.backward = true; break;\n case \'a\': case \'A\': this.carKeys.left = true; break;\n case \'d\': case \'D\': this.carKeys.right = true; break;\n case \' \': this.carKeys.brake = true; break;\n }\n });\n\n document.addEventListener(\'keyup\', event => {\n switch (event.key) {\n case \'w\': case \'W\': this.carKeys.forward = false; break;\n case \'s\': case \'S\': this.carKeys.backward = false; break;\n case \'a\': case \'A\': this.carKeys.left = false; break;\n case \'d\': case \'D\': this.carKeys.right = false; break;\n case \' \': this.carKeys.brake = false; break;\n }\n });\n }\n\n control() {\n let gas = 0;\n let brake = 0;\n let steer = 0;\n\n if (this.carKeys.forward) gas += 1;\n if (this.carKeys.backward) gas -= 1;\n if (this.carKeys.left) steer -= 1;\n if (this.carKeys.right) steer += 1;\n if (this.carKeys.brake) brake += 1;\n\n return { gas, brake, steer };\n }\n}\n\n;// CONCATENATED MODULE: ./js/objects/MapObject.js\n// geolocation = [33.523900, -111.908756];\nclass MapObject extends THREE.Object3D {\n constructor(geolocation = null) {\n super();\n\n this.geolocation = geolocation;\n this.tilesGroup = null;\n\n const tileSize = geolocation ? this.tileSizeInMeters() : 10;\n const grid = new THREE.GridHelper(MapObject.HALF_NUM_TILES * 8 * tileSize, MapObject.HALF_NUM_TILES * 8, 0x333333, 0x333333);\n grid.renderOrder = -1;\n grid.material.depthTest = false;\n grid.position.add(new THREE.Vector3(-tileSize / 2, 0, -tileSize / 2));\n this.add(grid);\n\n if (geolocation)\n this.drawTiles();\n }\n\n // Converts lat-long geolocation to Google Maps world coodinates\n static geoToWorld(latlng) {\n const latitudeRadians = latlng[0] * Math.PI / 180;\n const x = (latlng[1] + 180) / 360 * 256;\n const y = ((1 - Math.log(Math.tan(latitudeRadians) + 1 / Math.cos(latitudeRadians)) / Math.PI) / 2) * 256;\n return [x, y];\n }\n\n // Calculates the x and y tile indices for the provided world coordinates\n static worldToTile(worldCoordinates) {\n return [Math.floor(worldCoordinates[0] * MapObject.SCALE / 256), Math.floor(worldCoordinates[1] * MapObject.SCALE / 256)];\n }\n\n drawTiles() {\n if (this.tileGroup != null) this.remove(this.tilesGroup);\n this.tileGroup = new THREE.Group();\n\n const originTile = MapObject.worldToTile(MapObject.geoToWorld(this.geolocation));\n const tileSize = this.tileSizeInMeters();\n\n for (let x = -MapObject.HALF_NUM_TILES, h = 0; x < MapObject.HALF_NUM_TILES; x++) {\n for (let y = -MapObject.HALF_NUM_TILES; y < MapObject.HALF_NUM_TILES; y++, h++) {\n const tileTexture = new THREE.TextureLoader().load(`https://khms${h % 4}.google.com/kh/v=748?x=${originTile[0] + x}&y=${originTile[1] + y}&z=${MapObject.ZOOM}`);\n tileTexture.anisotropy = 16;\n const tileGeometry = new THREE.PlaneBufferGeometry(tileSize, tileSize);\n const tileMaterial = new THREE.MeshBasicMaterial({ map: tileTexture, color: 0xffffff });\n const tile = new THREE.Mesh(tileGeometry, tileMaterial);\n tile.rotation.x = -Math.PI / 2;\n tile.position.x = x * tileSize;\n tile.position.z = y * tileSize;\n\n this.tileGroup.add(tile);\n }\n }\n\n this.add(this.tileGroup);\n }\n\n tileSizeInMeters() {\n // Because of the Mercator projection used to create the tile images, the size of a tile (in meters) depends on the latitude\n return 2 * Math.PI * MapObject.EARTH_RADIUS * Math.cos(this.geolocation[0] * Math.PI / 180) / Math.pow(2, MapObject.ZOOM);\n }\n}\n\nMapObject.EARTH_RADIUS = 6378137; // meters\nMapObject.TILE_PIXELS = 256; // pixels per tile\nMapObject.ZOOM = 20;\nMapObject.SCALE = 1 << MapObject.ZOOM;\nMapObject.HALF_NUM_TILES = 20;\n\n;// CONCATENATED MODULE: ./js/objects/TDSLoader.js\n/*\n * Autodesk 3DS threee.js file loader, based on lib3ds.\n *\n * Loads geometry with uv and materials basic properties with texture support.\n *\n * @author @tentone\n * @author @timknip\n * @class TDSLoader\n * @constructor\n */\n\n\n\nTHREE.TDSLoader = function ( manager ) {\n\n\tthis.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;\n\tthis.debug = false;\n\n\tthis.group = null;\n\tthis.position = 0;\n\n\tthis.materials = [];\n\tthis.meshes = [];\n\n};\n\nTHREE.TDSLoader.prototype = {\n\n\tconstructor: THREE.TDSLoader,\n\n\t/**\n\t * Load 3ds file from url.\n\t *\n\t * @method load\n\t * @param {[type]} url URL for the file.\n\t * @param {Function} onLoad onLoad callback, receives group Object3D as argument.\n\t * @param {Function} onProgress onProgress callback.\n\t * @param {Function} onError onError callback.\n\t */\n\tload: function ( url, onLoad, onProgress, onError ) {\n\n\t\tvar scope = this;\n\n\t\tvar path = this.path !== undefined ? this.path : THREE.LoaderUtils.extractUrlBase( url );\n\n\t\tvar loader = new THREE.FileLoader( this.manager );\n\n\t\tloader.setResponseType( \'arraybuffer\' );\n\n\t\tloader.load( url, function ( data ) {\n\n\t\t\tonLoad( scope.parse( data, path ) );\n\n\t\t}, onProgress, onError );\n\n\t},\n\n\t/**\n\t * Parse arraybuffer data and load 3ds file.\n\t *\n\t * @method parse\n\t * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded.\n\t * @param {String} path Path for external resources.\n\t * @return {Object3D} Group loaded from 3ds file.\n\t */\n\tparse: function ( arraybuffer, path ) {\n\n\t\tthis.group = new THREE.Group();\n\t\tthis.position = 0;\n\t\tthis.materials = [];\n\t\tthis.meshes = [];\n\n\t\tthis.readFile( arraybuffer, path );\n\n\t\tfor ( var i = 0; i < this.meshes.length; i ++ ) {\n\n\t\t\tthis.group.add( this.meshes[ i ] );\n\n\t\t}\n\n\t\treturn this.group;\n\n\t},\n\n\t/**\n\t * Decode file content to read 3ds data.\n\t *\n\t * @method readFile\n\t * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded.\n\t */\n\treadFile: function ( arraybuffer, path ) {\n\n\t\tvar data = new DataView( arraybuffer );\n\t\tvar chunk = this.readChunk( data );\n\n\t\tif ( chunk.id === MLIBMAGIC || chunk.id === CMAGIC || chunk.id === M3DMAGIC ) {\n\n\t\t\tvar next = this.nextChunk( data, chunk );\n\n\t\t\twhile ( next !== 0 ) {\n\n\t\t\t\tif ( next === M3D_VERSION ) {\n\n\t\t\t\t\tvar version = this.readDWord( data );\n\t\t\t\t\tthis.debugMessage( \'3DS file version: \' + version );\n\n\t\t\t\t} else if ( next === MDATA ) {\n\n\t\t\t\t\tthis.resetPosition( data );\n\t\t\t\t\tthis.readMeshData( data, path );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.debugMessage( \'Unknown main chunk: \' + next.toString( 16 ) );\n\n\t\t\t\t}\n\n\t\t\t\tnext = this.nextChunk( data, chunk );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.debugMessage( \'Parsed \' + this.meshes.length + \' meshes\' );\n\n\t},\n\n\t/**\n\t * Read mesh data chunk.\n\t *\n\t * @method readMeshData\n\t * @param {Dataview} data Dataview in use.\n\t */\n\treadMeshData: function ( data, path ) {\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar next = this.nextChunk( data, chunk );\n\n\t\twhile ( next !== 0 ) {\n\n\t\t\tif ( next === MESH_VERSION ) {\n\n\t\t\t\tvar version = + this.readDWord( data );\n\t\t\t\tthis.debugMessage( \'Mesh Version: \' + version );\n\n\t\t\t} else if ( next === MASTER_SCALE ) {\n\n\t\t\t\tvar scale = this.readFloat( data );\n\t\t\t\tthis.debugMessage( \'Master scale: \' + scale );\n\t\t\t\tthis.group.scale.set( scale, scale, scale );\n\n\t\t\t} else if ( next === NAMED_OBJECT ) {\n\n\t\t\t\tthis.debugMessage( \'Named Object\' );\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tthis.readNamedObject( data );\n\n\t\t\t} else if ( next === MAT_ENTRY ) {\n\n\t\t\t\tthis.debugMessage( \'Material\' );\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tthis.readMaterialEntry( data, path );\n\n\t\t\t} else {\n\n\t\t\t\tthis.debugMessage( \'Unknown MDATA chunk: \' + next.toString( 16 ) );\n\n\t\t\t}\n\n\t\t\tnext = this.nextChunk( data, chunk );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Read named object chunk.\n\t *\n\t * @method readNamedObject\n\t * @param {Dataview} data Dataview in use.\n\t */\n\treadNamedObject: function ( data ) {\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar name = this.readString( data, 64 );\n\t\tchunk.cur = this.position;\n\n\t\tvar next = this.nextChunk( data, chunk );\n\t\twhile ( next !== 0 ) {\n\n\t\t\tif ( next === N_TRI_OBJECT ) {\n\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tvar mesh = this.readMesh( data );\n\t\t\t\tmesh.name = name;\n\t\t\t\tthis.meshes.push( mesh );\n\n\t\t\t} else {\n\n\t\t\t\tthis.debugMessage( \'Unknown named object chunk: \' + next.toString( 16 ) );\n\n\t\t\t}\n\n\t\t\tnext = this.nextChunk( data, chunk );\n\n\t\t}\n\n\t\tthis.endChunk( chunk );\n\n\t},\n\n\t/**\n\t * Read material data chunk and add it to the material list.\n\t *\n\t * @method readMaterialEntry\n\t * @param {Dataview} data Dataview in use.\n\t */\n\treadMaterialEntry: function ( data, path ) {\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar next = this.nextChunk( data, chunk );\n\t\tvar material = new THREE.MeshPhongMaterial();\n\n\t\twhile ( next !== 0 ) {\n\n\t\t\tif ( next === MAT_NAME ) {\n\n\t\t\t\tmaterial.name = this.readString( data, 64 );\n\t\t\t\tthis.debugMessage( \' Name: \' + material.name );\n\n\t\t\t} else if ( next === MAT_WIRE ) {\n\n\t\t\t\tthis.debugMessage( \' Wireframe\' );\n\t\t\t\tmaterial.wireframe = true;\n\n\t\t\t} else if ( next === MAT_WIRE_SIZE ) {\n\n\t\t\t\tvar value = this.readByte( data );\n\t\t\t\tmaterial.wireframeLinewidth = value;\n\t\t\t\tthis.debugMessage( \' Wireframe Thickness: \' + value );\n\n\t\t\t} else if ( next === MAT_TWO_SIDE ) {\n\n\t\t\t\tmaterial.side = THREE.DoubleSide;\n\t\t\t\tthis.debugMessage( \' DoubleSided\' );\n\n\t\t\t} else if ( next === MAT_ADDITIVE ) {\n\n\t\t\t\tthis.debugMessage( \' Additive Blending\' );\n\t\t\t\tmaterial.blending = THREE.AdditiveBlending;\n\n\t\t\t} else if ( next === MAT_DIFFUSE ) {\n\n\t\t\t\tthis.debugMessage( \' Diffuse Color\' );\n\t\t\t\tmaterial.color = this.readColor( data );\n\n\t\t\t} else if ( next === MAT_SPECULAR ) {\n\n\t\t\t\tthis.debugMessage( \' Specular Color\' );\n\t\t\t\tmaterial.specular = this.readColor( data );\n\n\t\t\t} else if ( next === MAT_AMBIENT ) {\n\n\t\t\t\tthis.debugMessage( \' Ambient color\' );\n\t\t\t\tmaterial.color = this.readColor( data );\n\n\t\t\t} else if ( next === MAT_SHININESS ) {\n\n\t\t\t\tvar shininess = this.readWord( data );\n\t\t\t\tmaterial.shininess = shininess;\n\t\t\t\tthis.debugMessage( \' Shininess : \' + shininess );\n\n\t\t\t} else if ( next === MAT_TEXMAP ) {\n\n\t\t\t\tthis.debugMessage( \' ColorMap\' );\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tmaterial.map = this.readMap( data, path );\n\n\t\t\t} else if ( next === MAT_BUMPMAP ) {\n\n\t\t\t\tthis.debugMessage( \' BumpMap\' );\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tmaterial.bumpMap = this.readMap( data, path );\n\n\t\t\t} else if ( next === MAT_OPACMAP ) {\n\n\t\t\t\tthis.debugMessage( \' OpacityMap\' );\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tmaterial.alphaMap = this.readMap( data, path );\n\n\t\t\t} else if ( next === MAT_SPECMAP ) {\n\n\t\t\t\tthis.debugMessage( \' SpecularMap\' );\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tmaterial.specularMap = this.readMap( data, path );\n\n\t\t\t} else {\n\n\t\t\t\tthis.debugMessage( \' Unknown material chunk: \' + next.toString( 16 ) );\n\n\t\t\t}\n\n\t\t\tnext = this.nextChunk( data, chunk );\n\n\t\t}\n\n\t\tthis.endChunk( chunk );\n\n\t\tthis.materials[ material.name ] = material;\n\n\t},\n\n\t/**\n\t * Read mesh data chunk.\n\t *\n\t * @method readMesh\n\t * @param {Dataview} data Dataview in use.\n\t */\n\treadMesh: function ( data ) {\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar next = this.nextChunk( data, chunk );\n\n\t\tvar useBufferGeometry = false;\n\t\tvar geometry = null;\n\t\tvar uvs = [];\n\n\t\tif ( useBufferGeometry ) {\n\n\t\t\tgeometry = new THREE.BufferGeometry();\n\n\t\t}\telse {\n\n\t\t\tgeometry = new THREE.Geometry();\n\n\t\t}\n\n\t\tvar material = new THREE.MeshPhongMaterial();\n\t\tvar mesh = new THREE.Mesh( geometry, material );\n\t\tmesh.name = \'mesh\';\n\n\t\twhile ( next !== 0 ) {\n\n\t\t\tif ( next === POINT_ARRAY ) {\n\n\t\t\t\tvar points = this.readWord( data );\n\n\t\t\t\tthis.debugMessage( \' Vertex: \' + points );\n\n\t\t\t\t//BufferGeometry\n\n\t\t\t\tif ( useBufferGeometry )\t{\n\n\t\t\t\t\tvar vertices = [];\n\t\t\t\t\tfor ( var i = 0; i < points; i ++ )\t\t{\n\n\t\t\t\t\t\tvertices.push( this.readFloat( data ) );\n\t\t\t\t\t\tvertices.push( this.readFloat( data ) );\n\t\t\t\t\t\tvertices.push( this.readFloat( data ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgeometry.addAttribute( \'position\', new THREE.BufferAttribute( new Float32Array( vertices ), 3 ) );\n\n\t\t\t\t} else\t{ //Geometry\n\n\t\t\t\t\tfor ( var i = 0; i < points; i ++ )\t\t{\n\n\t\t\t\t\t\tgeometry.vertices.push( new THREE.Vector3( this.readFloat( data ), this.readFloat( data ), this.readFloat( data ) ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( next === FACE_ARRAY ) {\n\n\t\t\t\tthis.resetPosition( data );\n\t\t\t\tthis.readFaceArray( data, mesh );\n\n\t\t\t} else if ( next === TEX_VERTS ) {\n\n\t\t\t\tvar texels = this.readWord( data );\n\n\t\t\t\tthis.debugMessage( \' UV: \' + texels );\n\n\t\t\t\t//BufferGeometry\n\n\t\t\t\tif ( useBufferGeometry )\t{\n\n\t\t\t\t\tvar uvs = [];\n\t\t\t\t\tfor ( var i = 0; i < texels; i ++ )\t\t{\n\n\t\t\t\t\t\tuvs.push( this.readFloat( data ) );\n\t\t\t\t\t\tuvs.push( this.readFloat( data ) );\n\n\t\t\t\t\t}\n\t\t\t\t\tgeometry.addAttribute( \'uv\', new THREE.BufferAttribute( new Float32Array( uvs ), 2 ) );\n\n\t\t\t\t} else { //Geometry\n\n\t\t\t\t\tuvs = [];\n\t\t\t\t\tfor ( var i = 0; i < texels; i ++ )\t\t{\n\n\t\t\t\t\t\tuvs.push( new THREE.Vector2( this.readFloat( data ), this.readFloat( data ) ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( next === MESH_MATRIX ) {\n\n\t\t\t\tthis.debugMessage( \' Tranformation Matrix (TODO)\' );\n\n\t\t\t\tvar values = [];\n\t\t\t\tfor ( var i = 0; i < 12; i ++ ) {\n\n\t\t\t\t\tvalues[ i ] = this.readFloat( data );\n\n\t\t\t\t}\n\n\t\t\t\tvar matrix = new THREE.Matrix4();\n\n\t\t\t\t//X Line\n\t\t\t\tmatrix.elements[ 0 ] = values[ 0 ];\n\t\t\t\tmatrix.elements[ 1 ] = values[ 6 ];\n\t\t\t\tmatrix.elements[ 2 ] = values[ 3 ];\n\t\t\t\tmatrix.elements[ 3 ] = values[ 9 ];\n\n\t\t\t\t//Y Line\n\t\t\t\tmatrix.elements[ 4 ] = values[ 2 ];\n\t\t\t\tmatrix.elements[ 5 ] = values[ 8 ];\n\t\t\t\tmatrix.elements[ 6 ] = values[ 5 ];\n\t\t\t\tmatrix.elements[ 7 ] = values[ 11 ];\n\n\t\t\t\t//Z Line\n\t\t\t\tmatrix.elements[ 8 ] = values[ 1 ];\n\t\t\t\tmatrix.elements[ 9 ] = values[ 7 ];\n\t\t\t\tmatrix.elements[ 10 ] = values[ 4 ];\n\t\t\t\tmatrix.elements[ 11 ] = values[ 10 ];\n\n\t\t\t\t//W Line\n\t\t\t\tmatrix.elements[ 12 ] = 0;\n\t\t\t\tmatrix.elements[ 13 ] = 0;\n\t\t\t\tmatrix.elements[ 14 ] = 0;\n\t\t\t\tmatrix.elements[ 15 ] = 1;\n\n\t\t\t\tmatrix.transpose();\n\n\t\t\t\tvar inverse = new THREE.Matrix4();\n\t\t\t\tinverse.getInverse( matrix, true );\n\t\t\t\tgeometry.applyMatrix( inverse );\n\n\t\t\t\tmatrix.decompose( mesh.position, mesh.quaternion, mesh.scale );\n\n\t\t\t} else {\n\n\t\t\t\tthis.debugMessage( \' Unknown mesh chunk: \' + next.toString( 16 ) );\n\n\t\t\t}\n\n\t\t\tnext = this.nextChunk( data, chunk );\n\n\t\t}\n\n\t\tthis.endChunk( chunk );\n\n\t\tif ( ! useBufferGeometry ) {\n\n\t\t\t//geometry.faceVertexUvs[0][faceIndex][vertexIndex]\n\n\t\t\tif ( uvs.length > 0 ) {\n\n\t\t\t\tvar faceUV = [];\n\n\t\t\t\tfor ( var i = 0; i < geometry.faces.length; i ++ ) {\n\n\t\t\t\t\tfaceUV.push( [ uvs[ geometry.faces[ i ].a ], uvs[ geometry.faces[ i ].b ], uvs[ geometry.faces[ i ].c ] ] );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.faceVertexUvs[ 0 ] = faceUV;\n\n\t\t\t}\n\n\t\t\tgeometry.computeVertexNormals();\n\n\t\t}\n\n\t\treturn mesh;\n\n\t},\n\n\t/**\n\t * Read face array data chunk.\n\t *\n\t * @method readFaceArray\n\t * @param {Dataview} data Dataview in use.\n\t * @param {Mesh} mesh Mesh to be filled with the data read.\n\t */\n\treadFaceArray: function ( data, mesh ) {\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar faces = this.readWord( data );\n\n\t\tthis.debugMessage( \' Faces: \' + faces );\n\n\t\tfor ( var i = 0; i < faces; ++ i ) {\n\n\t\t\tmesh.geometry.faces.push( new THREE.Face3( this.readWord( data ), this.readWord( data ), this.readWord( data ) ) );\n\n\t\t\tvar visibility = this.readWord( data );\n\n\t\t}\n\n\t\t//The rest of the FACE_ARRAY chunk is subchunks\n\n\t\twhile ( this.position < chunk.end ) {\n\n\t\t\tvar chunk = this.readChunk( data );\n\n\t\t\tif ( chunk.id === MSH_MAT_GROUP ) {\n\n\t\t\t\tthis.debugMessage( \' Material Group\' );\n\n\t\t\t\tthis.resetPosition( data );\n\n\t\t\t\tvar group = this.readMaterialGroup( data );\n\n\t\t\t\tvar material = this.materials[ group.name ];\n\n\t\t\t\tif ( material !== undefined )\t{\n\n\t\t\t\t\tmesh.material = material;\n\n\t\t\t\t\tif ( material.name === \'\' )\t\t{\n\n\t\t\t\t\t\tmaterial.name = mesh.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.debugMessage( \' Unknown face array chunk: \' + chunk.toString( 16 ) );\n\n\t\t\t}\n\n\t\t\tthis.endChunk( chunk );\n\n\t\t}\n\n\t\tthis.endChunk( chunk );\n\n\t},\n\n\t/**\n\t * Read texture map data chunk.\n\t *\n\t * @method readMap\n\t * @param {Dataview} data Dataview in use.\n\t * @return {Texture} Texture read from this data chunk.\n\t */\n\treadMap: function ( data, path ) {\n if (this.skipMaps) return null;\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar next = this.nextChunk( data, chunk );\n\t\tvar texture = {};\n\n\t\tvar loader = new THREE.TextureLoader( this.manager );\n\t\tloader.setPath( path );\n\n\t\twhile ( next !== 0 ) {\n\n\t\t\tif ( next === MAT_MAPNAME ) {\n\n\t\t\t\tvar name = this.readString( data, 128 );\n\t\t\t\ttexture = loader.load( name );\n\n\t\t\t\tthis.debugMessage( \' File: \' + path + name );\n\n\t\t\t} else if ( next === MAT_MAP_UOFFSET ) {\n\n\t\t\t\ttexture.offset.x = this.readFloat( data );\n\t\t\t\tthis.debugMessage( \' OffsetX: \' + texture.offset.x );\n\n\t\t\t} else if ( next === MAT_MAP_VOFFSET ) {\n\n\t\t\t\ttexture.offset.y = this.readFloat( data );\n\t\t\t\tthis.debugMessage( \' OffsetY: \' + texture.offset.y );\n\n\t\t\t} else if ( next === MAT_MAP_USCALE ) {\n\n\t\t\t\ttexture.repeat.x = this.readFloat( data );\n\t\t\t\tthis.debugMessage( \' RepeatX: \' + texture.repeat.x );\n\n\t\t\t} else if ( next === MAT_MAP_VSCALE ) {\n\n\t\t\t\ttexture.repeat.y = this.readFloat( data );\n\t\t\t\tthis.debugMessage( \' RepeatY: \' + texture.repeat.y );\n\n\t\t\t} else {\n\n\t\t\t\tthis.debugMessage( \' Unknown map chunk: \' + next.toString( 16 ) );\n\n\t\t\t}\n\n\t\t\tnext = this.nextChunk( data, chunk );\n\n\t\t}\n\n\t\tthis.endChunk( chunk );\n\n\t\treturn texture;\n\n\t},\n\n\t/**\n\t * Read material group data chunk.\n\t *\n\t * @method readMaterialGroup\n\t * @param {Dataview} data Dataview in use.\n\t * @return {Object} Object with name and index of the object.\n\t */\n\treadMaterialGroup: function ( data ) {\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar name = this.readString( data, 64 );\n\t\tvar numFaces = this.readWord( data );\n\n\t\tthis.debugMessage( \' Name: \' + name );\n\t\tthis.debugMessage( \' Faces: \' + numFaces );\n\n\t\tvar index = [];\n\t\tfor ( var i = 0; i < numFaces; ++ i ) {\n\n\t\t\tindex.push( this.readWord( data ) );\n\n\t\t}\n\n\t\treturn { name: name, index: index };\n\n\t},\n\n\t/**\n\t * Read a color value.\n\t *\n\t * @method readColor\n\t * @param {DataView} data Dataview.\n\t * @return {Color} Color value read..\n\t */\n\treadColor: function ( data ) {\n\n\t\tvar chunk = this.readChunk( data );\n\t\tvar color = new THREE.Color();\n\n\t\tif ( chunk.id === COLOR_24 || chunk.id === LIN_COLOR_24 ) {\n\n\t\t\tvar r = this.readByte( data );\n\t\t\tvar g = this.readByte( data );\n\t\t\tvar b = this.readByte( data );\n\n\t\t\tcolor.setRGB( r / 255, g / 255, b / 255 );\n\n\t\t\tthis.debugMessage( \' Color: \' + color.r + \', \' + color.g + \', \' + color.b );\n\n\t\t}\telse if ( chunk.id === COLOR_F || chunk.id === LIN_COLOR_F ) {\n\n\t\t\tvar r = this.readFloat( data );\n\t\t\tvar g = this.readFloat( data );\n\t\t\tvar b = this.readFloat( data );\n\n\t\t\tcolor.setRGB( r, g, b );\n\n\t\t\tthis.debugMessage( \' Color: \' + color.r + \', \' + color.g + \', \' + color.b );\n\n\t\t}\telse {\n\n\t\t\tthis.debugMessage( \' Unknown color chunk: \' + chunk.toString( 16 ) );\n\n\t\t}\n\n\t\tthis.endChunk( chunk );\n\t\treturn color;\n\n\t},\n\n\t/**\n\t * Read next chunk of data.\n\t *\n\t * @method readChunk\n\t * @param {DataView} data Dataview.\n\t * @return {Object} Chunk of data read.\n\t */\n\treadChunk: function ( data ) {\n\n\t\tvar chunk = {};\n\n\t\tchunk.cur = this.position;\n\t\tchunk.id = this.readWord( data );\n\t\tchunk.size = this.readDWord( data );\n\t\tchunk.end = chunk.cur + chunk.size;\n\t\tchunk.cur += 6;\n\n\t\treturn chunk;\n\n\t},\n\n\t/**\n\t * Set position to the end of the current chunk of data.\n\t *\n\t * @method endChunk\n\t * @param {Object} chunk Data chunk.\n\t */\n\tendChunk: function ( chunk ) {\n\n\t\tthis.position = chunk.end;\n\n\t},\n\n\t/**\n\t * Move to the next data chunk.\n\t *\n\t * @method nextChunk\n\t * @param {DataView} data Dataview.\n\t * @param {Object} chunk Data chunk.\n\t */\n\tnextChunk: function ( data, chunk ) {\n\n\t\tif ( chunk.cur >= chunk.end ) {\n\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tthis.position = chunk.cur;\n\n\t\ttry {\n\n\t\t\tvar next = this.readChunk( data );\n\t\t\tchunk.cur += next.size;\n\t\t\treturn next.id;\n\n\t\t}\tcatch ( e ) {\n\n\t\t\tthis.debugMessage( \'Unable to read chunk at \' + this.position );\n\t\t\treturn 0;\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Reset dataview position.\n\t *\n\t * @method resetPosition\n\t * @param {DataView} data Dataview.\n\t */\n\tresetPosition: function () {\n\n\t\tthis.position -= 6;\n\n\t},\n\n\t/**\n\t * Read byte value.\n\t *\n\t * @method readByte\n\t * @param {DataView} data Dataview to read data from.\n\t * @return {Number} Data read from the dataview.\n\t */\n\treadByte: function ( data ) {\n\n\t\tvar v = data.getUint8( this.position, true );\n\t\tthis.position += 1;\n\t\treturn v;\n\n\t},\n\n\t/**\n\t * Read 32 bit float value.\n\t *\n\t * @method readFloat\n\t * @param {DataView} data Dataview to read data from.\n\t * @return {Number} Data read from the dataview.\n\t */\n\treadFloat: function ( data ) {\n\n\t\ttry {\n\n\t\t\tvar v = data.getFloat32( this.position, true );\n\t\t\tthis.position += 4;\n\t\t\treturn v;\n\n\t\t}\tcatch ( e ) {\n\n\t\t\tthis.debugMessage( e + \' \' + this.position + \' \' + data.byteLength );\n\n\t\t}\n\n\t},\n\n\t/**\n\t * Read 32 bit signed integer value.\n\t *\n\t * @method readInt\n\t * @param {DataView} data Dataview to read data from.\n\t * @return {Number} Data read from the dataview.\n\t */\n\treadInt: function ( data ) {\n\n\t\tvar v = data.getInt32( this.position, true );\n\t\tthis.position += 4;\n\t\treturn v;\n\n\t},\n\n\t/**\n\t * Read 16 bit signed integer value.\n\t *\n\t * @method readShort\n\t * @param {DataView} data Dataview to read data from.\n\t * @return {Number} Data read from the dataview.\n\t */\n\treadShort: function ( data ) {\n\n\t\tvar v = data.getInt16( this.position, true );\n\t\tthis.position += 2;\n\t\treturn v;\n\n\t},\n\n\t/**\n\t * Read 64 bit unsigned integer value.\n\t *\n\t * @method readDWord\n\t * @param {DataView} data Dataview to read data from.\n\t * @return {Number} Data read from the dataview.\n\t */\n\treadDWord: function ( data ) {\n\n\t\tvar v = data.getUint32( this.position, true );\n\t\tthis.position += 4;\n\t\treturn v;\n\n\t},\n\n\t/**\n\t * Read 32 bit unsigned integer value.\n\t *\n\t * @method readWord\n\t * @param {DataView} data Dataview to read data from.\n\t * @return {Number} Data read from the dataview.\n\t */\n\treadWord: function ( data ) {\n\n\t\tvar v = data.getUint16( this.position, true );\n\t\tthis.position += 2;\n\t\treturn v;\n\n\t},\n\n\t/**\n\t * Read string value.\n\t *\n\t * @method readString\n\t * @param {DataView} data Dataview to read data from.\n\t * @param {Number} maxLength Max size of the string to be read.\n\t * @return {String} Data read from the dataview.\n\t */\n\treadString: function ( data, maxLength ) {\n\n\t\tvar s = \'\';\n\n\t\tfor ( var i = 0; i < maxLength; i ++ ) {\n\n\t\t\tvar c = this.readByte( data );\n\t\t\tif ( ! c ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\ts += String.fromCharCode( c );\n\n\t\t}\n\n\t\treturn s;\n\n\t},\n\n\t/**\n\t * Set resource path used to determine the file path to attached resources.\n\t *\n\t * @method setPath\n\t * @param {String} path Path to resources.\n\t * @return Self for chaining.\n\t */\n\tsetPath: function ( path ) {\n\n\t\tthis.path = path;\n\n\t\treturn this;\n\n\t},\n\n\t/**\n\t * Print debug message to the console.\n\t *\n\t * Is controlled by a flag to show or hide debug messages.\n\t *\n\t * @method debugMessage\n\t * @param {Object} message Debug message to print to the console.\n\t */\n\tdebugMessage: function ( message ) {\n\n\t\tif ( this.debug ) {\n\n\t\t\tconsole.log( message );\n\n\t\t}\n\n\t}\n};\n\nvar NULL_CHUNK = 0x0000;\nvar M3DMAGIC = 0x4D4D;\nvar SMAGIC = 0x2D2D;\nvar LMAGIC = 0x2D3D;\nvar MLIBMAGIC = 0x3DAA;\nvar MATMAGIC = 0x3DFF;\nvar CMAGIC = 0xC23D;\nvar M3D_VERSION = 0x0002;\nvar M3D_KFVERSION = 0x0005;\nvar COLOR_F = 0x0010;\nvar COLOR_24 = 0x0011;\nvar LIN_COLOR_24 = 0x0012;\nvar LIN_COLOR_F = 0x0013;\nvar INT_PERCENTAGE = 0x0030;\nvar FLOAT_PERCENTAGE = 0x0031;\nvar MDATA = 0x3D3D;\nvar MESH_VERSION = 0x3D3E;\nvar MASTER_SCALE = 0x0100;\nvar LO_SHADOW_BIAS = 0x1400;\nvar HI_SHADOW_BIAS = 0x1410;\nvar SHADOW_MAP_SIZE = 0x1420;\nvar SHADOW_SAMPLES = 0x1430;\nvar SHADOW_RANGE = 0x1440;\nvar SHADOW_FILTER = 0x1450;\nvar RAY_BIAS = 0x1460;\nvar O_CONSTS = 0x1500;\nvar AMBIENT_LIGHT = 0x2100;\nvar BIT_MAP = 0x1100;\nvar SOLID_BGND = 0x1200;\nvar V_GRADIENT = 0x1300;\nvar USE_BIT_MAP = 0x1101;\nvar USE_SOLID_BGND = 0x1201;\nvar USE_V_GRADIENT = 0x1301;\nvar FOG = 0x2200;\nvar FOG_BGND = 0x2210;\nvar LAYER_FOG = 0x2302;\nvar DISTANCE_CUE = 0x2300;\nvar DCUE_BGND = 0x2310;\nvar USE_FOG = 0x2201;\nvar USE_LAYER_FOG = 0x2303;\nvar USE_DISTANCE_CUE = 0x2301;\nvar MAT_ENTRY = 0xAFFF;\nvar MAT_NAME = 0xA000;\nvar MAT_AMBIENT = 0xA010;\nvar MAT_DIFFUSE = 0xA020;\nvar MAT_SPECULAR = 0xA030;\nvar MAT_SHININESS = 0xA040;\nvar MAT_SHIN2PCT = 0xA041;\nvar MAT_TRANSPARENCY = 0xA050;\nvar MAT_XPFALL = 0xA052;\nvar MAT_USE_XPFALL = 0xA240;\nvar MAT_REFBLUR = 0xA053;\nvar MAT_SHADING = 0xA100;\nvar MAT_USE_REFBLUR = 0xA250;\nvar MAT_SELF_ILLUM = 0xA084;\nvar MAT_TWO_SIDE = 0xA081;\nvar MAT_DECAL = 0xA082;\nvar MAT_ADDITIVE = 0xA083;\nvar MAT_WIRE = 0xA085;\nvar MAT_FACEMAP = 0xA088;\nvar MAT_TRANSFALLOFF_IN = 0xA08A;\nvar MAT_PHONGSOFT = 0xA08C;\nvar MAT_WIREABS = 0xA08E;\nvar MAT_WIRE_SIZE = 0xA087;\nvar MAT_TEXMAP = 0xA200;\nvar MAT_SXP_TEXT_DATA = 0xA320;\nvar MAT_TEXMASK = 0xA33E;\nvar MAT_SXP_TEXTMASK_DATA = 0xA32A;\nvar MAT_TEX2MAP = 0xA33A;\nvar MAT_SXP_TEXT2_DATA = 0xA321;\nvar MAT_TEX2MASK = 0xA340;\nvar MAT_SXP_TEXT2MASK_DATA = 0xA32C;\nvar MAT_OPACMAP = 0xA210;\nvar MAT_SXP_OPAC_DATA = 0xA322;\nvar MAT_OPACMASK = 0xA342;\nvar MAT_SXP_OPACMASK_DATA = 0xA32E;\nvar MAT_BUMPMAP = 0xA230;\nvar MAT_SXP_BUMP_DATA = 0xA324;\nvar MAT_BUMPMASK = 0xA344;\nvar MAT_SXP_BUMPMASK_DATA = 0xA330;\nvar MAT_SPECMAP = 0xA204;\nvar MAT_SXP_SPEC_DATA = 0xA325;\nvar MAT_SPECMASK = 0xA348;\nvar MAT_SXP_SPECMASK_DATA = 0xA332;\nvar MAT_SHINMAP = 0xA33C;\nvar MAT_SXP_SHIN_DATA = 0xA326;\nvar MAT_SHINMASK = 0xA346;\nvar MAT_SXP_SHINMASK_DATA = 0xA334;\nvar MAT_SELFIMAP = 0xA33D;\nvar MAT_SXP_SELFI_DATA = 0xA328;\nvar MAT_SELFIMASK = 0xA34A;\nvar MAT_SXP_SELFIMASK_DATA = 0xA336;\nvar MAT_REFLMAP = 0xA220;\nvar MAT_REFLMASK = 0xA34C;\nvar MAT_SXP_REFLMASK_DATA = 0xA338;\nvar MAT_ACUBIC = 0xA310;\nvar MAT_MAPNAME = 0xA300;\nvar MAT_MAP_TILING = 0xA351;\nvar MAT_MAP_TEXBLUR = 0xA353;\nvar MAT_MAP_USCALE = 0xA354;\nvar MAT_MAP_VSCALE = 0xA356;\nvar MAT_MAP_UOFFSET = 0xA358;\nvar MAT_MAP_VOFFSET = 0xA35A;\nvar MAT_MAP_ANG = 0xA35C;\nvar MAT_MAP_COL1 = 0xA360;\nvar MAT_MAP_COL2 = 0xA362;\nvar MAT_MAP_RCOL = 0xA364;\nvar MAT_MAP_GCOL = 0xA366;\nvar MAT_MAP_BCOL = 0xA368;\nvar NAMED_OBJECT = 0x4000;\nvar N_DIRECT_LIGHT = 0x4600;\nvar DL_OFF = 0x4620;\nvar DL_OUTER_RANGE = 0x465A;\nvar DL_INNER_RANGE = 0x4659;\nvar DL_MULTIPLIER = 0x465B;\nvar DL_EXCLUDE = 0x4654;\nvar DL_ATTENUATE = 0x4625;\nvar DL_SPOTLIGHT = 0x4610;\nvar DL_SPOT_ROLL = 0x4656;\nvar DL_SHADOWED = 0x4630;\nvar DL_LOCAL_SHADOW2 = 0x4641;\nvar DL_SEE_CONE = 0x4650;\nvar DL_SPOT_RECTANGULAR = 0x4651;\nvar DL_SPOT_ASPECT = 0x4657;\nvar DL_SPOT_PROJECTOR = 0x4653;\nvar DL_SPOT_OVERSHOOT = 0x4652;\nvar DL_RAY_BIAS = 0x4658;\nvar DL_RAYSHAD = 0x4627;\nvar N_CAMERA = 0x4700;\nvar CAM_SEE_CONE = 0x4710;\nvar CAM_RANGES = 0x4720;\nvar OBJ_HIDDEN = 0x4010;\nvar OBJ_VIS_LOFTER = 0x4011;\nvar OBJ_DOESNT_CAST = 0x4012;\nvar OBJ_DONT_RECVSHADOW = 0x4017;\nvar OBJ_MATTE = 0x4013;\nvar OBJ_FAST = 0x4014;\nvar OBJ_PROCEDURAL = 0x4015;\nvar OBJ_FROZEN = 0x4016;\nvar N_TRI_OBJECT = 0x4100;\nvar POINT_ARRAY = 0x4110;\nvar POINT_FLAG_ARRAY = 0x4111;\nvar FACE_ARRAY = 0x4120;\nvar MSH_MAT_GROUP = 0x4130;\nvar SMOOTH_GROUP = 0x4150;\nvar MSH_BOXMAP = 0x4190;\nvar TEX_VERTS = 0x4140;\nvar MESH_MATRIX = 0x4160;\nvar MESH_COLOR = 0x4165;\nvar MESH_TEXTURE_INFO = 0x4170;\nvar KFDATA = 0xB000;\nvar KFHDR = 0xB00A;\nvar KFSEG = 0xB008;\nvar KFCURTIME = 0xB009;\nvar AMBIENT_NODE_TAG = 0xB001;\nvar OBJECT_NODE_TAG = 0xB002;\nvar CAMERA_NODE_TAG = 0xB003;\nvar TARGET_NODE_TAG = 0xB004;\nvar LIGHT_NODE_TAG = 0xB005;\nvar L_TARGET_NODE_TAG = 0xB006;\nvar SPOTLIGHT_NODE_TAG = 0xB007;\nvar NODE_ID = 0xB030;\nvar NODE_HDR = 0xB010;\nvar PIVOT = 0xB013;\nvar INSTANCE_NAME = 0xB011;\nvar MORPH_SMOOTH = 0xB015;\nvar BOUNDBOX = 0xB014;\nvar POS_TRACK_TAG = 0xB020;\nvar COL_TRACK_TAG = 0xB025;\nvar ROT_TRACK_TAG = 0xB021;\nvar SCL_TRACK_TAG = 0xB022;\nvar MORPH_TRACK_TAG = 0xB026;\nvar FOV_TRACK_TAG = 0xB023;\nvar ROLL_TRACK_TAG = 0xB024;\nvar HOT_TRACK_TAG = 0xB027;\nvar FALL_TRACK_TAG = 0xB028;\nvar HIDE_TRACK_TAG = 0xB029;\nvar POLY_2D = 0x5000;\nvar SHAPE_OK = 0x5010;\nvar SHAPE_NOT_OK = 0x5011;\nvar SHAPE_HOOK = 0x5020;\nvar PATH_3D = 0x6000;\nvar PATH_MATRIX = 0x6005;\nvar SHAPE_2D = 0x6010;\nvar M_SCALE = 0x6020;\nvar M_TWIST = 0x6030;\nvar M_TEETER = 0x6040;\nvar M_FIT = 0x6050;\nvar M_BEVEL = 0x6060;\nvar XZ_CURVE = 0x6070;\nvar YZ_CURVE = 0x6080;\nvar INTERPCT = 0x6090;\nvar DEFORM_LIMIT = 0x60A0;\nvar USE_CONTOUR = 0x6100;\nvar USE_TWEEN = 0x6110;\nvar USE_SCALE = 0x6120;\nvar USE_TWIST = 0x6130;\nvar USE_TEETER = 0x6140;\nvar USE_FIT = 0x6150;\nvar USE_BEVEL = 0x6160;\nvar DEFAULT_VIEW = 0x3000;\nvar VIEW_TOP = 0x3010;\nvar VIEW_BOTTOM = 0x3020;\nvar VIEW_LEFT = 0x3030;\nvar VIEW_RIGHT = 0x3040;\nvar VIEW_FRONT = 0x3050;\nvar VIEW_BACK = 0x3060;\nvar VIEW_USER = 0x3070;\nvar VIEW_CAMERA = 0x3080;\nvar VIEW_WINDOW = 0x3090;\nvar VIEWPORT_LAYOUT_OLD = 0x7000;\nvar VIEWPORT_DATA_OLD = 0x7010;\nvar VIEWPORT_LAYOUT = 0x7001;\nvar VIEWPORT_DATA = 0x7011;\nvar VIEWPORT_DATA_3 = 0x7012;\nvar VIEWPORT_SIZE = 0x7020;\nvar NETWORK_VIEW = 0x7030;\n\n/* harmony default export */ const TDSLoader = (THREE.TDSLoader);\n\n;// CONCATENATED MODULE: ./models/suv.js\n/* harmony default export */ const suv = (\'data:text/plain;base64,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gMHVGFFBFEWOQYA5f8EkF0tBIAKSQcyBfcHBFEdBUamNQZkcbcG+cx1BN5+LQTp2ZsE67g1BVbeBQYkNYcF82vtADk94QXzeX8GTu/tA31pZQXzeX8GTu/tAp89OQZB7YcF4ngBBARo4QTp2ZsE67g1BywU0QZkcbcG+cx1BSG4oQcyBfcHBFEdBJaVoQXeyX8EvlPlAJaVoQdEBW8Fw+epAYEE2AAAACpPJPgAAAAAAAAAAAAAAAA2TyTINk8k+AAAAAA2Tyb4Nk8kyAAAAAKaZnUGV4cZAIEGipwEAQB4AAAEAAgAHAAAAAwABAAcABAACAAUABwAEAAAAAgAHAAYABwAIAAcABgAJAAcABwAKAAgACwAHAAoABgAIAAcADAAKAAsABwAMAA0ACgAHAA4ADQAMAAcADgAPAA0ABwAQAA8ADgAHABAAEQAPAAcAEgARABAABwASABMAEQAHABQAEwASAAcAFAAVABMABwAWABcAGAAHABYAGQAXAAcAGgAXABsABwAaABgAFwAHABYABQAZAAcAFgAEAAUABwAcAAEAAwAHABwAHQABAAcAHgAHAAkABwAeAB8ABwAHACAACAAHAAcAIAAhAAgABwAhAAsACAAHACEAIgALAAcACwAjAAwABwALACIAIwAHAAwAJAAOAAcADAAjACQABwAOACUAEAAHAA4AJAAlAAcAEAAmABIABwAQACUAJgAHABIAJwAUAAcAEgAmACcABwAfACAABwAHAB8AKAAgAAcAIAApACEABwAgACoAKQAHACEAKwAiAAcAIQApACsABwAiACwAIwAHACIAKwAsAAcAIwAtACQABwAjACwALQAHACQALgAlAAcAJAAtAC4ABwAlAC8AJgAHACUALgAvAAcAJgAwACcABwAmAC8AMAAHACgAKgAgAAcAKAAxACoABwAyAAAAMwAHADIAAwAAAAcAKgAzACkABwAqADIAMwAHADMABAA0AAcAMwAAAAQABwApADQAKwAHACkAMwA0AAcAKwA1ACwABwArADQANQAHABYANAAEAAcAFgA1ADQABwAsADYALQAHACwANQA2AAcAGAA1ABYABwAYADYANQAHADYAGgA3AAcANgAYABoABwAtADcALgAHAC0ANgA3AAcALgA4AC8ABwAuADcAOAAHADkAGgAbAAcAOQA6ABoABwAvADsAMAAHAC8AOAA7AAcAPAA6ADkABwA8AD0AOgAHADEAMgAqAAcAMQA+ADIABwADAD4AHAAHAAMAMgA+AAcAPwABAB0ABwA/AEAAAQAHAEEAGwAXAAcAQQBCABsABwBDAEQARQAHAEMARgBEAAcARwAXABkABwBHAEEAFwAHAEgAGQAFAAcASABHABkABwBJADwAOQAHAEkASgA8AAcAQgA5ABsABwBCAEkAOQAHAEsABQACAAcASwBIAAUABwBAAAIAAQAHAEAASwACAAcATAAfAB4ABwBMAE0AHwAHAE0AKAAfAAcATQBOACgABwBOADEAKAAHAE4ATwAxAAcATwA+ADEABwBPAFAAPgAHAFAAHAA+AAcAUABRABwABwBRAB0AHAAHAFEAUgAdAAcAUgA/AB0ABwBSAFMAPwAHAFQATQBMAAcAVABVAE0ABwBVAE4ATQAHAFUAVgBOAAcAVgBPAE4ABwBWAFcATwAHAFcAUABPAAcAVwBYAFAABwBYAFEAUAAHAFgAWQBRAAcAWQBSAFEABwBZAFoAUgAHAFoAUwBSAAcAWgBbAFMABwBcAFUAVAAHAFwAXQBVAAcAXQBWAFUABwBdAF4AVgAHAF4AVwBWAAcAXgBfAFcABwBfAFgAVwAHAF8AYABYAAcAYABZAFgABwBgAGEAWQAHAGEAWgBZAAcAYQBiAFoABwBiAFsAWgAHAGIAYwBbAAcAZABdAFwABwBkAGUAXQAHAGUAXgBdAAcAZQBmAF4ABwBmAF8AXgAHAGYAZwBfAAcAZwBgAF8ABwBnAGgAYAAHAGgAYQBgAAcAaABpAGEABwBpAGIAYQAHAGkAagBiAAcAagBjAGIABwBqAGsAYwAHAGwAYwBrAAcAbABtAGMABwBtAFsAYwAHAG0AbgBbAAcAbgBTAFsABwBuAG8AUwAHAG8APwBTAAcAbwBwAD8ABwBwAEAAPwAHAHAAcQBAAAcAcQBLAEAABwBxAHIASwAHAHIASABLAAcAcgBzAEgABwBzAEcASAAHAHMAdABHAAcAdABBAEcABwB0AHUAQQAHAHUAQgBBAAcAdQB2AEIABwB2AEkAQgAHAHYAdwBJAAcAdwBKAEkABwB3AHgASgAHAHkAbgBtAAcAeQB6AG4ABwB7AG0AbAAHAHsAeQBtAAcAegBvAG4ABwB6AHwAbwAHAH0AcwByAAcAfQB+AHMABwB/AHIAcQAHAH8AfQByAAcAgAB4AHcABwCAAIEAeAAHAIIAdwB2AAcAggCAAHcABwCDAHYAdQAHAIMAggB2AAcAhAB1AHQABwCEAIMAdQAHAH4AdABzAAcAfgCEAHQABwCFAHEAcAAHAIUAfwBxAAcAfABwAG8ABwB8AIUAcAAHAIYAeQB7AAcAhgCHAHkABwCHAHoAeQAHAIcAiAB6AAcAiQCHAIYABwCJAIoAhwAHAIoAiACHAAcAigCLAIgABwCMAIYAewAHAIwAjQCGAAcAjQCJAIYABwCNAI4AiQAHAI8AjQCMAAcAjwCQAI0ABwCQAI4AjQAHAJAAkQCOAAcAkgCQAI8ABwCSAJMAkAAHAJMAkQCQAAcAkwCUAJEABwCVAJQAkwAHAJUAlgCUAAcAlwCTAJIABwCXAJUAkwAHAJgAkgCPAAcAmACXAJIABwCZAI8AjAAHAJkAmACPAAcAmgCMAHsABwCaAJkAjAAHAJsAnACdAAcAmwCeAJwABwCdAJ8AoAAHAJ0AnACfAAcAoQCiAKMABwChAKQAogAHAKMApQCmAAcAowCiAKUABwClAKcApgAHAKUAqACnAAcAqACpAKcABwCoAKoAqQAHAKoAqwCpAAcAqgCsAKsABwCsAK0AqwAHAKwArgCtAAcArgAUAK0ABwCuABUAFAAHAK8AsACxAAcArwCyALAABwCzAK8AsQAHALMAtACvAAcAoACwALIABwCgAJ8AsAAHAJsAtQCeAAcAmwC2ALUABwChALcApAAHAKEAuAC3AAcAowC5AKEABwCjALoAuQAHAKYAugCjAAcApgC7ALoABwC8AKYApwAHALwAuwCmAAcAvQCnAKkABwC9ALwApwAHAL4AqQCrAAcAvgC9AKkABwC/AKsArQAHAL8AvgCrAAcAJwCtABQABwAnAL8ArQAHALkAuAChAAcAuQDAALgABwDBALkAugAHAMEAwgC5AAcAwwC6ALsABwDDAMEAugAHAMQAuwC8AAcAxADDALsABwDFALwAvQAHAMUAxAC8AAcAxgC9AL4ABwDGAMUAvQAHAMcAvgC/AAcAxwDGAL4ABwAwAL8AJwAHADAAxwC/AAcAwgDAALkABwDCAMgAwAAHAJwAyQDKAAcAnACeAMkABwDKAMIAwQAHAMoAyQDCAAcAnwDKAMsABwCfAJwAygAHAMsAwQDDAAcAywDKAMEABwDMAMMAxAAHAMwAywDDAAcAywCwAJ8ABwDLAMwAsAAHAM0AxADFAAcAzQDMAMQABwDMALEAsAAHAMwAzQCxAAcAswDNAM4ABwCzALEAzQAHAM4AxQDGAAcAzgDNAMUABwDPAMYAxwAHAM8AzgDGAAcAswDPANAABwCzAM4AzwAHADsAxwAwAAcAOwDPAMcABwDQADwA0QAHANAAPQA8AAcAyQDIAMIABwDJANIAyAAHANIAngC1AAcA0gDJAJ4ABwCbANMAtgAHAJsA1ADTAAcAtADVAK8ABwC0ANYA1QAHAEMA1wDYAAcAQwDZANcABwCvANoAsgAHAK8A1QDaAAcAsgDbAKAABwCyANoA2wAHADwA3ADRAAcAPABKANwABwDRANYAtAAHANEA3ADWAAcAoADdAJ0ABwCgANsA3QAHAJ0A1ACbAAcAnQDdANQABwC4AN4AtwAHALgA3wDeAAcAwADfALgABwDAAOAA3wAHAMgA4ADAAAcAyADhAOAABwDSAOEAyAAHANIA4gDhAAcAtQDiANIABwC1AOMA4gAHALYA4wC1AAcAtgDkAOMABwDTAOQAtgAHANMA5QDkAAcA3wDmAN4ABwDfAOcA5gAHAOAA5wDfAAcA4ADoAOcABwDhAOgA4AAHAOEA6QDoAAcA4gDpAOEABwDiAOoA6QAHAOMA6gDiAAcA4wDrAOoABwDkAOsA4wAHAOQA7ADrAAcA5QDsAOQABwDlAO0A7AAHAOcA7gDmAAcA5wDvAO4ABwDoAO8A5wAHAOgA8ADvAAcA6QDwAOgABwDpAPEA8AAHAOoA8QDpAAcA6gDyAPEABwDrAPIA6gAHAOsA8wDyAAcA7ADzAOsABwDsAPQA8wAHAO0A9ADsAAcA7QD1APQABwDvAPYA7gAHAO8A9wD2AAcA8AD3AO8ABwDwAPgA9wAHAPEA+ADwAAcA8QD5APgABwDyAPkA8QAHAPIA+gD5AAcA8wD6APIABwDzAPsA+gAHAPQA+wDzAAcA9AD8APsABwD1APwA9AAHAPUA/QD8AAcA9QD+AP0ABwD1AP8A/gAHAO0A/wD1AAcA7QAAAf8ABwDlAAAB7QAHAOUAAQEAAQcA0wABAeUABwDTAAIBAQEHANQAAgHTAAcA1AADAQIBBwDdAAMB1AAHAN0ABAEDAQcA2wAEAd0ABwDbAAUBBAEHANoABQHbAAcA2gAGAQUBBwDVAAYB2gAHANUABwEGAQcA1gAHAdUABwDWAAgBBwEHANwACAHWAAcA3AAJAQgBBwBKAAkB3AAHAEoAeAAJAQcAAAEKAf8ABwAAAQsBCgEHAP8ADAH+AAcA/wAKAQwBBwABAQsBAAEHAAEBDQELAQcABQEOAQQBBwAFAQ8BDgEHAAQBEAEDAQcABAEOARABBwB4ABEBCQEHAHgAgQARAQcACQESAQgBBwAJAREBEgEHAAgBEwEHAQcACAESARMBBwAHARQBBgEHAAcBEwEUAQcABgEPAQUBBwAGARQBDwEHAAMBFQECAQcAAwEQARUBBwACAQ0BAQEHAAIBFQENAQcACgEWAQwBBwAKARcBFgEHAAsBFwEKAQcACwEYARcBBwAXAYkAFgEHABcBigCJAAcAGAGKABcBBwAYAYsAigAHABYBGQEMAQcAFgEaARkBBwCJABoBFgEHAIkAjgAaAQcAGgEbARkBBwAaARwBGwEHAI4AHAEaAQcAjgCRABwBBwAcAR0BGwEHABwBHgEdAQcAkQAeARwBBwCRAJQAHgEHAJQAHwEeAQcAlACWAB8BBwAeASABHQEHAB4BHwEgAQcAHQEhARsBBwAdASABIQEHABsBIgEZAQcAGwEhASIBBwAZASMBDAEHABkBIgEjAQcAJAElASYBBwAkAScBJQEHACgBJgEpAQcAKAEkASYBBwAqASkBKwEHACoBKAEpAQcALAErAS0BBwAsASoBKwEHAC4BLQEvAQcALgEsAS0BBwAwAS8BMQEHADABLgEvAQcAMgExATMBBwAyATABMQEHADQBMwE1AQcANAEyATMBBwA2ATUBNwEHADYBNAE1AQcAOAE5AToBBwA4ATsBOQEHADsBPAE5AQcAOwE9ATwBBwA9ATcBPAEHAD0BNgE3AQcAPgEnASQBBwA+AT8BJwEHAEABJAEoAQcAQAE+ASQBBwBBASgBKgEHAEEBQAEoAQcAQgEqASwBBwBCAUEBKgEHAEMBLAEuAQcAQwFCASwBBwBEAS4BMAEHAEQBQwEuAQcARQEwATIBBwBFAUQBMAEHAEYBMgE0AQcARgFFATIBBwBHATsBOAEHAEcBSAE7AQcASQE0ATYBBwBJAUYBNAEHAEoBNgE9AQcASgFJATYBBwBIAT0BOwEHAEgBSgE9AQcAMwFLATUBBwAzAUwBSwEHADUBTQE3AQcANQFLAU0BBwArAU4BLQEHACsBTwFOAQcAKQFPASsBBwApAVABTwEHACYBUAEpAQcAJgFRAVABBwAlAVEBJgEHACUBUgFRAQcAUwFUAVUBBwBTAVYBVAEHAFcBVgFYAQcAVwFUAVYBBwBZAVYBUwEHAFkBWgFWAQcAWAFaAVsBBwBYAVYBWgEHAFwBWgFZAQcAXAFdAVoBBwBbAV0BXgEHAFsBWgFdAQcAXwFdAVwBBwBfAWABXQEHAF4BYAFhAQcAXgFdAWABBwBiAWMBZAEHAGIBZQFjAQcAZgFlAWcBBwBmAWMBZQEHAGgBZQFiAQcAaAFpAWUBBwBnAWkBagEHAGcBZQFpAQcAawFsAW0BBwBrAW4BbAEHAG8BbgFwAQcAbwFsAW4BBwBtAXEBcgEHAG0BbAFxAQcAcwFsAW8BBwBzAXEBbAEHAHIBdAF1AQcAcgFxAXQBBwB2AXEBcwEHAHYBdAFxAQcAdwFfAVwBBwB3AXgBXwEHAHkBXAFZAQcAeQF3AVwBBwB6AVMBVQEHAHoBewFTAQcAewFZAVMBBwB7AXkBWQEHAHwBeAF3AQcAfAF9AXgBBwB+AXcBeQEHAH4BfAF3AQcAfwF5AXsBBwB/AX4BeQEHAIABewF6AQcAgAF/AXsBBwCBAX0BfAEHAIEBggF9AQcAgwF8AX4BBwCDAYEBfAEHAIQBfgF/AQcAhAGDAX4BBwCFAX8BgAEHAIUBhAF/AQcAhgGCAYEBBwCGAYcBggEHAIgBgQGDAQcAiAGGAYEBBwCJAYMBhAEHAIkBiAGDAQcAigGEAYUBBwCKAYkBhAEHAIsBhwGGAQcAiwGMAYcBBwCNAYYBiAEHAI0BiwGGAQcAjgGIAYkBBwCOAY0BiAEHAI8BiQGKAQcAjwGOAYkBBwCQAYwBiwEHAJABkQGMAQcAkgGLAY0BBwCSAZABiwEHAJMBjQGOAQcAkwGSAY0BBwCUAY4BjwEHAJQBkwGOAQcAlQGWAZcBBwCVAZgBlgEHAJcBmQGaAQcAlwGWAZkBBwCaAZsBlwEHAJoBnAGbAQcAmQGcAZoBBwCZAZ0BnAEHAJcBngGVAQcAlwGbAZ4BBwCVAZ8BmAEHAJUBngGfAQcAmAGgAaEBBwCYAZ8BoAEHAKEBogGjAQcAoQGgAaIBBwCkAaUBpgEHAKQBpwGlAQcApgGoAakBBwCmAaUBqAEHAKkBqgGrAQcAqQGoAaoBBwCrAawBrQEHAKsBqgGsAQcArQGuAa8BBwCtAawBrgEHAJEBsAGMAQcAkQGxAbABBwCMAbIBhwEHAIwBsAGyAQcAhwGzAYIBBwCHAbIBswEHAIIBtAF9AQcAggGzAbQBBwB9AbUBeAEHAH0BtAG1AQcAeAG2AV8BBwB4AbUBtgEHAF8BtwG4AQcAXwG2AbcBBwC4AbkBugEHALgBtwG5AQcAugG7AWQBBwC6AbkBuwEHAGQBvAFiAQcAZAG7AbwBBwBiAb0BaAEHAGIBvAG9AQcAaAG+Ab8BBwBoAb0BvgEHAL8BwAHBAQcAvwG+AcABBwDBAcIBwwEHAMEBwAHCAQcAlgHEAZkBBwCWAcUBxAEHAMUBsQHEAQcAxQGwAbEBBwCYAcUBlgEHAJgBxgHFAQcAxgGwAcUBBwDGAbIBsAEHAKEBxgGYAQcAoQHHAcYBBwDHAbIBxgEHAMcBswGyAQcAowHHAaEBBwCjAcgBxwEHAMgBswHHAQcAyAG0AbMBBwDJAbQByAEHAMkBtQG0AQcAygG1AckBBwDKAbYBtQEHAMsBtgHKAQcAywG3AbYBBwDMAbcBywEHAMwBuQG3AQcAzQG5AcwBBwDNAbsBuQEHAKYBzQGkAQcApgHOAc0BBwDOAbsBzQEHAM4BvAG7AQcAqQHOAaYBBwCpAc8BzgEHAM8BvAHOAQcAzwG9AbwBBwCrAc8BqQEHAKsB0AHPAQcA0AG9Ac8BBwDQAb4BvQEHAK0B0AGrAQcArQHRAdABBwDRAb4B0AEHANEBwAG+AQcArwHRAa0BBwCvAdIB0QEHANIBwAHRAQcA0gHCAcABBwDTAdQB1QEHANMB1gHUAQcA1wHWAdMBBwDXAdgB1gEHAKUB1wGoAQcApQHZAdcBBwDZAdgB1wEHANkB2gHYAQcApwHZAaUBBwCnAdsB2QEHANsB2gHZAQcA2wHcAdoBBwDdAd4B3wEHAN0B4AHeAQcA4QHgAd0BBwDhAeIB4AEHAOMB4gHhAQcA4wHkAeIBBwDlAeQB4wEHAOUB5gHkAQcA5wHmAeUBBwDnAegB5gEHAOkB6AHnAQcA6QHqAegBBwDVAesB7AEHANUB1AHrAQcA0wHtAe4BBwDTAdUB7QEHAO8BqgHwAQcA7wGsAaoBBwDXAe4B8QEHANcB0wHuAQcA8gHXAfEBBwDyAagB1wEHAPABqAHyAQcA8AGqAagBBwDsAfMB9AEHAOwBrgHzAQcA1QH0Ae0BBwDVAewB9AEHAPMBrAHvAQcA8wGuAawBBwDuAfUB9gEHAO4B7QH1AQcA9wHwAfgBBwD3Ae8B8AEHAPEB9gH5AQcA8QHuAfYBBwD6AfEB+QEHAPoB8gHxAQcA+AHyAfoBBwD4AfAB8gEHAPQB+wH8AQcA9AHzAfsBBwDtAfwB9QEHAO0B9AH8AQcA+wHvAfcBBwD7AfMB7wEHAEsB/QFNAQcASwH+Af0BBwBMAf4BSwEHAEwB/wH+AQcATwEAAk4BBwBPAQECAAIHAAECYQEAAgcAAQJeAWEBBwBQAQECTwEHAFABAgIBAgcAAgJeAQECBwACAlsBXgEHAFEBAgJQAQcAUQEDAgICBwADAlsBAgIHAAMCWAFbAQcAUgEDAlEBBwBSAQQCAwIHAAQCWAEDAgcABAJXAVgBBwAFAk0BBgIHAAUCNwFNAQcABwI3AQUCBwAHAjwBNwEHAAgCPAEHAgcACAI5ATwBBwAJAgoCCwIHAAkCOgEKAgcACgI5AQgCBwAKAjoBOQEHAAwCCwINAgcADAIJAgsCBwAOAg0CDwIHAA4CDAINAgcAEAIPAhECBwAQAg4CDwIHAP0BEQISAgcA/QEQAhECBwAGAv0BEgIHAAYCTQH9AQcAEwIGAhQCBwATAgUCBgIHABUCBQITAgcAFQIHAgUCBwAWAgcCFQIHABYCCAIHAgcACwIXAhgCBwALAgoCFwIHABcCCAIWAgcAFwIKAggCBwANAhgCGQIHAA0CCwIYAgcADwIZAhoCBwAPAg0CGQIHABECGgIbAgcAEQIPAhoCBwASAhsCHAIHABICEQIbAgcAFAISAhwCBwAUAgYCEgIHAB0CMwEeAgcAHQJMATMBBwAeAjEBHwIHAB4CMwExAQcAIAIxAS8BBwAgAh8CMQEHACECLQFOAQcAIQIiAi0BBwAiAi8BLQEHACICIAIvAQcAIwJgAV8BBwAjAiQCYAEHALgBIwJfAQcAuAElAiMCBwAkAmEBYAEHACQCJgJhAQcAugElArgBBwC6AScCJQIHAGQBKAIpAgcAZAFjASgCBwC6ASkCJwIHALoBZAEpAgcAYwEqAigCBwBjAWYBKgIHAP8BHQIrAgcA/wFMAR0CBwAsAk4BAAIHACwCIQJOAQcAJgIAAmEBBwAmAiwCAAIHAMkBLQLKAQcAyQEuAi0CBwAuAi8CLQIHAC4CMAIvAgcAyAEuAskBBwDIATECLgIHADECMAIuAgcAMQIyAjACBwCjATECyAEHAKMBMwIxAgcAMwIyAjECBwAzAjQCMgIHAKIBMwKjAQcAogE1AjMCBwA1AjQCMwIHADUCNgI0AgcA3gE3At8BBwDeATgCNwIHADgCOQI3AgcAOAI6AjkCBwDKATsCywEHAMoBLQI7AgcALQI8AjsCBwAtAi8CPAIHAMsBPQLMAQcAywE7Aj0CBwA7Aj4CPQIHADsCPAI+AgcAzAE/As0BBwDMAT0CPwIHAD0CQAI/AgcAPQI+AkACBwDNAUECpAEHAM0BPwJBAgcAPwJCAkECBwA/AkACQgIHAKQBQwKnAQcApAFBAkMCBwBBAkQCQwIHAEECQgJEAgcApwFFAtsBBwCnAUMCRQIHAEMCRgJFAgcAQwJEAkYCBwDbAUcC3AEHANsBRQJHAgcARQJIAkcCBwBFAkYCSAIHAJABSQKRAQcAkAFKAkkCBwCSAUoCkAEHAJIBSwJKAgcASwJMAkoCBwBLAk0CTAIHAJMBSwKSAQcAkwFOAksCBwBOAk0CSwIHAE4CTwJNAgcAlAFOApMBBwCUAVACTgIHAFACTwJOAgcAUAJRAk8CBwCRAVICsQEHAJEBSQJSAgcAsQFTAsQBBwCxAVICUwIHAMQBVAKZAQcAxAFTAlQCBwCZAVUCnQEHAJkBVAJVAgcA6QFWAuoBBwDpAVcCVgIHAFgCSgJMAgcAWAJZAkoCBwBZAkkCSgIHAFkCWgJJAgcAWgJSAkkCBwBaAlsCUgIHAFsCUwJSAgcAWwJcAlMCBwBcAlQCUwIHAFwCXQJUAgcAXQJVAlQCBwBdAl4CVQIHAF8CVgJXAgcAXwJgAlYCBwBhAlkCWAIHAGECYgJZAgcAYgJaAlkCBwBiAmMCWgIHAGMCWwJaAgcAYwJkAlsCBwBkAlwCWwIHAGQCZQJcAgcAZQJdAlwCBwBlAmYCXQIHAGYCXgJdAgcAZgJnAl4CBwBoAmACXwIHAGgCaQJgAgcAagJiAmECBwBqAmsCYgIHAGsCYwJiAgcAawJsAmMCBwBsAmQCYwIHAGwCbQJkAgcAbQJlAmQCBwBtAm4CZQIHAG4CZgJlAgcAbgJvAmYCBwBvAmcCZgIHAG8CcAJnAgcAcQJpAmgCBwBxAnICaQIHAHMCawJqAgcAcwJ0AmsCBwB0AmwCawIHAHQCdQJsAgcAdQJtAmwCBwB1AnYCbQIHAHYCbgJtAgcAdgJ3Am4CBwB3Am8CbgIHAHcCeAJvAgcAeAJwAm8CBwB4AnkCcAIHAHoCcgJxAgcAegJ7AnICBwB8AnQCcwIHAHwCfQJ0AgcAfQJ1AnQCBwB9An4CdQIHAH4CdgJ1AgcAfgJ/AnYCBwB/AncCdgIHAH8CgAJ3AgcAgAJ4AncCBwCAAoECeAIHAIECeQJ4AgcAgQKCAnkCBwCDAnsCegIHAIMChAJ7AgcAhQKGAocCBwCFAogChgIHAIkCigKLAgcAiQKMAooCBwCNAosCjgIHAI0CiQKLAgcAjwKOApACBwCPAo0CjgIHAJECkAKSAgcAkQKPApACBwCTApIClAIHAJMCkQKSAgcAlQJ8AnMCBwCVApYCfAIHAJcCcwJqAgcAlwKVAnMCBwCYAmoCYQIHAJgClwJqAgcAmQJhAlgCBwCZApgCYQIHAJoCWAJMAgcAmgKZAlgCBwCbAkwCTQIHAJsCmgJMAgcAnAKdAp4CBwCcAp8CnQIHAJ8CoAKdAgcAnwKUAqACBwChAp8CnAIHAKECogKfAgcAogKUAp8CBwCiApMClAIHAKMCpAKlAgcAowKmAqQCBwCmAqcCpAIHAKYCqAKnAgcAqAKpAqcCBwCoAqoCqQIHAKoCqwKpAgcAqgKsAqsCBwCsAq0CqwIHAKwCrgKtAgcArgKvAq0CBwCuArACrwIHALACsQKvAgcAsAKyArECBwCzArQCtQIHALMCtgK0AgcAtwK4ArkCBwC3AroCuAIHALkCuwK8AgcAuQK4ArsCBwC8Ar0CvgIHALwCuwK9AgcAvgK/AsACBwC+Ar0CvwIHAMACwQLCAgcAwAK/AsECBwDCAsMCxAIHAMICwQLDAgcAxALFAsYCBwDEAsMCxQIHAMYCxwLIAgcAxgLFAscCBwDIAskCygIHAMgCxwLJAgcAywLMAs0CBwDLAs4CzAIHAM8CzgLLAgcAzwLQAs4CBwDKAtACzwIHAMoCyQLQAgcAugLRArgCBwC6AtIC0QIHALgC0wK7AgcAuALRAtMCBwC7AtQCvQIHALsC0wLUAgcAvQLVAr8CBwC9AtQC1QIHAL8C1gLBAgcAvwLVAtYCBwDBAtcCwwIHAMEC1gLXAgcAwwLYAsUCBwDDAtcC2AIHAMUC2QLHAgcAxQLYAtkCBwDOAtoCzAIHAM4C2wLaAgcAxwLcAskCBwDHAtkC3AIHAMkC3QLQAgcAyQLcAt0CBwDQAtsCzgIHANAC3QLbAgcA3gLGAsgCBwDeAt8CxgIHAOACyALKAgcA4ALeAsgCBwDhAr4CwAIHAOEC4gK+AgcA4gK8Ar4CBwDiAuMCvAIHAOMCuQK8AgcA4wLkArkCBwDkArcCuQIHAOQC5QK3AgcA5gLnAugCBwDmAukC5wIHAOkC6gLrAgcA6QLmAuoCBwDpAuwC5wIHAOkC7QLsAgcA7QLrAu4CBwDtAukC6wIHAO0C7wLsAgcA7QLwAu8CBwDwAu4C8QIHAPAC7QLuAgcA8ALyAu8CBwDwAvMC8gIHAPMC8QL0AgcA8wLwAvECBwD1AvYC9wIHAPUC+AL2AgcA+AL5AvoCBwD4AvUC+QIHAPgC+wL2AgcA+AL8AvsCBwD8AvoC/QIHAPwC+AL6AgcA/gL/AgADBwD+AgED/wIHAAEDAgMDAwcAAQP+AgIDBwAEAwADBQMHAAQD/gIAAwcA/gIGAwIDBwD+AgQDBgMHAPwCBQP7AgcA/AIEAwUDBwAEA/0CBgMHAAQD/AL9AgcA8gIHA+8CBwDyAggDBwMHAO8CCQPsAgcA7wIHAwkDBwDnAgoD6AIHAOcCCwMKAwcA7AILA+cCBwDsAgkDCwMHAAgDDAMHAwcACAMNAwwDBwAHAw4DCQMHAAcDDAMOAwcACQMPAwsDBwAJAw4DDwMHAAsDEAMKAwcACwMPAxADBwANAxEDDAMHAA0DEgMRAwcADAMTAw4DBwAMAxEDEwMHAA4DFAMPAwcADgMTAxQDBwAPAxUDEAMHAA8DFAMVAwcAEgMWAxEDBwASAxcDFgMHABEDGAMTAwcAEQMWAxgDBwATAxkDFAMHABMDGAMZAwcAFAMaAxUDBwAUAxkDGgMHABcDGwMWAwcAFwMcAxsDBwAWAx0DGAMHABYDGwMdAwcAGAMeAxkDBwAYAx0DHgMHABkDHwMaAwcAGQMeAx8DBwAcAyADGwMHABwDIQMgAwcAGwMiAx0DBwAbAyADIgMHAB0DIwMeAwcAHQMiAyMDBwAeAyQDHwMHAB4DIwMkAwcAJQMmAycDBwAlAygDJgMHACkDJwMqAwcAKQMlAycDBwArAyoDJwMHACsDLAMqAwcALAMpAyoDBwAsAy0DKQMHAC4DJwMmAwcALgMrAycDBwAvAyYDKAMHAC8DLgMmAwcAMAMoAzEDBwAwAy8DKAMHADIDMQMzAwcAMgMwAzEDBwA0AzUDNgMHADQDNwM1AwcAOAM2AzkDBwA4AzQDNgMHADoDOQM7AwcAOgM4AzkDBwA8AzsDPQMHADwDOgM7AwcAPgM9Az8DBwA+AzwDPQMHAEADIQMcAwcAQANBAyEDBwBCAxwDFwMHAEIDQAMcAwcAQwMXAxIDBwBDA0IDFwMHAEQDEgMNAwcARANDAxIDBwBFAw0DCAMHAEUDRAMNAwcARgMIA/ICBwBGA0UDCAMHAEcD8gJIAwcARwNGA/ICBwBJA0gDSgMHAEkDRwNIAwcASwNKA/cCBwBLA0kDSgMHAEwD9wL2AgcATANLA/cCBwBNA/YC+wIHAE0DTAP2AgcATgP7AgUDBwBOA00D+wIHAE8DBQMAAwcATwNOAwUDBwBQAwAD/wIHAFADTwMAAwcAUQMlAykDBwBRA1IDJQMHAEEDUgNRAwcAQQNAA1IDBwBSAygDJQMHAFIDUwMoAwcAQANTA1IDBwBAA0IDUwMHAFMDMQMoAwcAUwNUAzEDBwBCA1QDUwMHAEIDQwNUAwcAVAMzAzEDBwBUA1UDMwMHAEMDVQNUAwcAQwNEA1UDBwBEA1YDVQMHAEQDRQNWAwcARQNXA1YDBwBFA0YDVwMHAEYDWANXAwcARgNHA1gDBwBHA1kDWAMHAEcDSQNZAwcASQNaA1kDBwBJA0sDWgMHAFoDNgM1AwcAWgNbAzYDBwBLA1sDWgMHAEsDTANbAwcAWwM5AzYDBwBbA1wDOQMHAEwDXANbAwcATANNA1wDBwBcAzsDOQMHAFwDXQM7AwcATQNdA1wDBwBNA04DXQMHAF0DPQM7AwcAXQNeAz0DBwBOA14DXQMHAE4DTwNeAwcAXgM/Az0DBwBeA18DPwMHAE8DXwNeAwcATwNQA18DBwDUAWADYQMHANQB1gFgAwcA1gFiA2ADBwDWAdgBYgMHAGIDNAM4AwcAYgNjAzQDBwDYAWMDYgMHANgB2gFjAwcAYwM3AzQDBwBjA2QDNwMHANoBZANjAwcA2gHcAWQDBwDeAWUDZgMHAN4B4AFlAwcA4AFnA2UDBwDgAeIBZwMHAOIBaANnAwcA4gHkAWgDBwDkAWkDaAMHAOQB5gFpAwcA5gFqA2kDBwDmAegBagMHAOgBawNqAwcA6AHqAWsDBwDrAWEDbAMHAOsB1AFhAwcAbQNgA24DBwBtA2EDYAMHADoDbwNwAwcAOgM8A28DBwBuA2IDcQMHAG4DYANiAwcAYgNyA3EDBwBiAzgDcgMHADgDcANyAwcAOAM6A3ADBwBzA2wDdAMHAHMDPgNsAwcAdANhA20DBwB0A2wDYQMHADwDcwNvAwcAPAM+A3MDBwB1A24DdgMHAHUDbQNuAwcAcAN3A3gDBwBwA28DdwMHAHYDcQN5AwcAdgNuA3EDBwBxA3oDeQMHAHEDcgN6AwcAcgN4A3oDBwByA3ADeAMHAHsDdAN8AwcAewNzA3QDBwB8A20DdQMHAHwDdANtAwcAbwN7A3cDBwBvA3MDewMHAH0D3gLgAgcAfQN+A94CBwB+A98C3gIHAH4DfwPfAgcAgAPiAuECBwCAA4ED4gIHAPQCgQOAAwcA9ALxAoEDBwCBA+MC4gIHAIEDggPjAgcA8QKCA4EDBwDxAu4CggMHAIID5ALjAgcAggODA+QCBwDuAoMDggMHAO4C6wKDAwcAgwPlAuQCBwCDA4QD5QIHAOsChAODAwcA6wLqAoQDBwDgAoUDhgMHAOACygKFAwcAygKHA4UDBwDKAs8ChwMHAM8CiAOHAwcAzwLLAogDBwCJA4oDiwMHAIkDzQKKAwcAywKJA4gDBwDLAs0CiQMHAIsDjAONAwcAiwOKA4wDBwCNA44DjwMHAI0DjAOOAwcAjwOQA5EDBwCPA44DkAMHAJEDfQOSAwcAkQOQA30DBwB9A4YDkgMHAH0D4AKGAwcAhgOTA5QDBwCGA4UDkwMHAIUDlQOTAwcAhQOHA5UDBwCHA5YDlQMHAIcDiAOWAwcAlwOLA5gDBwCXA4kDiwMHAIgDlwOWAwcAiAOJA5cDBwCYA40DmQMHAJgDiwONAwcAmQOPA5oDBwCZA40DjwMHAJoDkQObAwcAmgOPA5EDBwCbA5IDnAMHAJsDkQOSAwcAkgOUA5wDBwCSA4YDlAMHAMYCnQOeAwcAxgLfAp0DBwDEAp4DnwMHAMQCxgKeAwcAxAKgA8ICBwDEAp8DoAMHAMACoQPhAgcAwAKiA6EDBwDCAqIDwAIHAMICoAOiAwcA8wKjA/ICBwDzAqQDowMHAKMDSAPyAgcAowOlA0gDBwD0AqQD8wIHAPQCpgOkAwcApQNKA0gDBwClA6cDSgMHAKgD9wKpAwcAqAP1AvcCBwCpA0oDpwMHAKkD9wJKAwcAqgP1AqgDBwCqA/kC9QIHAJ0DfwOrAwcAnQPfAn8DBwDhAqwDgAMHAOECoQOsAwcAgAOmA/QCBwCAA6wDpgMHAK0DVgNXAwcArQOuA1YDBwCvA64DrQMHAK8DsAOuAwcArgNVA1YDBwCuA7EDVQMHALADsQOuAwcAsAOyA7EDBwCxAzMDVQMHALEDswMzAwcAsgOzA7EDBwCyA7QDswMHALMDMgMzAwcAswO1AzIDBwC0A7UDswMHALQDtgO1AwcAtwPeAWYDBwC3AzgC3gEHALgDOAK3AwcAuAM6AjgCBwC5A1cDWAMHALkDrQNXAwcAugOtA7kDBwC6A68DrQMHALsDWANZAwcAuwO5A1gDBwC8A7kDuwMHALwDugO5AwcAvQNZA1oDBwC9A7sDWQMHAL4DuwO9AwcAvgO8A7sDBwC/A1oDNQMHAL8DvQNaAwcAwAO9A78DBwDAA74DvQMHAMEDNQM3AwcAwQO/AzUDBwDCA78DwQMHAMIDwAO/AwcAwwM3A2QDBwDDA8EDNwMHAMQDwQPDAwcAxAPCA8EDBwBHAmQD3AEHAEcCwwNkAwcASALDA0cCBwBIAsQDwwMHAMUDIAMhAwcAxQPGAyADBwDGAyIDIAMHAMYDxwMiAwcAyAPHA8YDBwDIA8kDxwMHAMcDIwMiAwcAxwPKAyMDBwDJA8oDxwMHAMkDywPKAwcAygMkAyMDBwDKA8wDJAMHAMsDzAPKAwcAywPNA8wDBwDOAyEDQQMHAM4DxQMhAwcAzwNBA1EDBwDPA84DQQMHANADUQMpAwcA0APPA1EDBwDRAykDLQMHANED0AMpAwcAVgJrA+oBBwBWAtIDawMHAMYD0wPIAwcAxgPUA9MDBwDFA9QDxgMHAMUD1QPUAwcAzgPVA8UDBwDOA9YD1QMHAM8D1gPOAwcAzwPXA9YDBwDQA9cDzwMHANAD2APXAwcA0QPYA9ADBwDRA9kD2AMHAFYC2gPSAwcA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BwQoBRYEBwAHBCcFKAUHACcFFwQoBQcAJwUbBBcEBwAWBCkFFQQHABYEKAUpBQcAKAUZBCkFBwAoBRcEGQQHACoFKwUsBQcAKgUtBSsFBwAsBS4FLwUHACwFKwUuBQcALwUwBTEFBwAvBS4FMAUHADAFMgUxBQcAMAUzBTIFBwAzBTQFMgUHADMFNQU0BQcANgU0BTUFBwA2BTcFNAUHADgFNwU2BQcAOAU5BTcFBwAqBTgFLQUHACoFOQU4BQcAKwU6BTsFBwArBS0FOgUHAC4FOwU8BQcALgUrBTsFBwAwBTwFPQUHADAFLgU8BQcAPgUwBT0FBwA+BTMFMAUHAD8FMwU+BQcAPwU1BTMFBwBABTUFPwUHAEAFNgU1BQcAQQU2BUAFBwBBBTgFNgUHAC0FQQU6BQcALQU4BUEFBwA7BUIFQwUHADsFOgVCBQcAPAVDBUQFBwA8BTsFQwUHAD0FRAVFBQcAPQU8BUQFBwBGBT0FRQUHAEYFPgU9BQcARwU+BUYFBwBHBT8FPgUHAEgFPwVHBQcASAVABT8FBwBJBUAFSAUHAEkFQQVABQcAOgVJBUIFBwA6BUEFSQUHAEMFSgVLBQcAQwVCBUoFBwBEBUsFTAUHAEQFQwVLBQcARQVMBU0FBwBFBUQFTAUHAE4FRQVNBQcATgVGBUUFBwBPBUYFTgUHAE8FRwVGBQcAUAVHBU8FBwBQBUgFRwUHAFEFSAVQBQcAUQVJBUgFBwBCBVEFSgUHAEIFSQVRBQcAUAVOBU0FBwBQBU8FTgUHAEwFUAVNBQcATAVRBVAFBwBLBVEFTAUHAEsFSgVRBQcAUgVTBVQFBwBSBVUFUwUHAFYFVAXXAAcAVgVSBVQFBwBXBdcA2QAHAFcFVgXXAAcAWAVXBdkABwBYBVkFVwUHAFoFWQVYBQcAWgVbBVkFBwBaBVwFWwUHAFoFXQVcBQcAXQVeBVwFBwBdBV8FXgUHAF4FUwVVBQcAXgVfBVMFBwBgBVIFYQUHAGAFVQVSBQcAYQVWBWIFBwBhBVIFVgUHAGIFVwVjBQcAYgVWBVcFBwBXBWQFYwUHAFcFWQVkBQcAWQVlBWQFBwBZBVsFZQUHAFsFZgVlBQcAWwVcBWYFBwBcBWcFZgUHAFwFXgVnBQcAZwVVBWAFBwBnBV4FVQUHAGgFYQVpBQcAaAVgBWEFBwBpBWIF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wQXiBcIFBwDBBeMF4gUHAMYF5AXEBQcAxgXlBeQFBwDJBeUFxgUHAMkF5gXlBQcAywXmBckFBwDLBecF5gUHAM0F5wXLBQcAzQXoBecFBwDPBegFzQUHAM8F6QXoBQcA0QXpBc8FBwDRBeoF6QUHANMF6gXRBQcA0wXrBeoFBwDCBewF1AUHAMIF4gXsBQcA1AXtBdcFBwDUBewF7QUHANcF6wXTBQcA1wXtBesFBwDuBcEF2QUHAO4F4wXBBQcA4QXZBb8FBwDhBe4F2QUHAO8F2gXbBQcA7wXwBdoFBwDxBe8F8gUHAPEF8AXvBQcA8AXcBdoFBwDwBfMF3AUHAPQF8AXxBQcA9AXzBfAFBwDzBd0F3AUHAPMF9QXdBQcA9gXzBfQFBwD2BfUF8wUHAPUF3gXdBQcA9QX3Bd4FBwD4BfUF9gUHAPgF9wX1BQcA9wXfBd4FBwD3BfkF3wUHAPoF9wX4BQcA+gX5BfcFBwD5BeAF3wUHAPkF+wXgBQcA/AX5BfoFBwD8BfsF+QUHAPsF4QXgBQcA+wX9BeEFBwD+BfsF/AUHAP4F/QX7BQcA/wXiBeMFBwD/BQAG4gUHAAEG/wUCBgcAAQYABv8FBwDlBQMG5AUHAOUFBAYDBgcABQYEBgYGBwAFBgMGBAYHAOYFBAblBQcA5gUHBgQGBwAGBgcGCAYHAAYGBAYHBgcA5wUHBuYFBwDnBQkGBwYHAAgGCQYKBgcACAYHBgkGBwDoBQkG5wUHAOgFCwYJBgcACgYLBgwGBwAKBgkGCwYHAOkFCwboBQcA6QUNBgsGBwAMBg0GDgYHAAwGCwYNBgcA6gUNBukFBwDqBQ8GDQYHAA4GDwYQBgcADgYNBg8GBwDrBQ8G6gUHAOsFEQYPBgcAEAYRBhIGBwAQBg8GEQYHAOIFEwbsBQcA4gUABhMGBwAUBgAGAQYHABQGEwYABgcAEwbtBewFBwATBhUG7QUHABYGEwYUBgcAFgYVBhMGBwAVBusF7QUHABUGEQbrBQcAEgYVBhYGBwASBhEGFQYHAO4F/wXjBQcA7gUXBv8FBwACBhcGGAYHAAIG/wUXBgcA4QUXBu4FBwDhBf0FFwYHABgG/QX+BQcAGAYXBv0FBwAZBgIGGAYHABkGGgYCBgcAGwYYBv4FBwAbBhkGGAYHABwGFgYUBgcAHAYdBhYGBwAdBhIGFgYHAB0GHgYSBgcAHwYUBgEGBwAfBhwGFAYHAB4GEAYSBgcAHgYgBhAGBwAgBg4GEAYHACAGIQYOBgcAIQYMBg4GBwAhBiIGDAYHACIGCgYMBgcAIgYjBgoGBwAjBggGCgYHACMGJAYIBgcAJAYGBggGBwAkBiUGBgYHACUGBQYGBgcAJQYmBgUGBwAaBgEGAgYHABoGHwYBBgcAJwb+BfwFBwAnBhsG/gUHACgG/AX6BQcAKAYnBvwFBwApBvoF+AUHACkGKAb6BQcAKgb4BfYFBwAqBikG+AUHACsG9gX0BQcAKwYqBvYFBwAsBvQF8QUHACwGKwb0BQcALQbxBfIFBwAtBiwG8QUHAC4GxAT/BAcALgYvBsQEBwAwBv8EwgQHADAGLgb/BAcAMQbVBM8EBwAxBjIG1QQHADMG1ATTBAcAMwY0BtQEBwA0BsAE1AQHADQGNQbABAcANgbTBNIEBwA2BjMG0wQHADcG0gTRBAcANwY2BtIEBwA4BtEE0AQHADgGNwbRBAcAOQbQBMoEBwA5BjgG0AQHADoGzwS/BAcAOgYxBs8EBwA7BsMEzgQHADsGPAbDBAcAPQbLBM0EBwA9Bj4GywQHAD8GzQTFBAcAPwY9Bs0EBwA+BswEywQHAD4GQAbMBAcAQAbJBMwEBwBABkEGyQQHAEIGygTIBAcAQgY5BsoEBwBBBsYEyQQHAEEGQwbGBAcARAbIBMcEBwBEBkIGyAQHAEMGxwTGBAcAQwZEBscEBwAvBsUExAQHAC8GPwbFBAcAPAbBBMMEBwA8BkUGwQQHAEUGwgTBBAcARQYwBsIEBwA1Br4EwAQHADUGRga+BAcARwa/BL0EBwBHBjoGvwQHAEYGvAS+BAcARgZIBrwEBwBIBr0EvAQHAEgGRwa9BAcASQYvBi4GBwBJBkoGLwYHAEsGLgYwBgcASwZJBi4GBwBKBj8GLwYHAEoGTAY/BgcATQYwBkUGBwBNBksGMAYHAE4GMgYxBgcATgZPBjIGBwBQBjEGOgYHAFAGTgYxBgcAUQY0BjMGBwBRBlIGNAYHAFIGNQY0BgcAUgZTBjUGBwBUBjMGNgYHAFQGUQYzBgcAUwZGBjUGBwBTBlUGRgYHAFYGNgY3BgcAVgZUBjYGBwBXBjcGOAYHAFcGVgY3BgcAWAY4BjkGBwBYBlcGOAYHAFkGOQZCBgcAWQZYBjkGBwBaBjoGRwYHAFoGUAY6BgcAWwY8BjsGBwBbBlwGPAYHAFwGRQY8BgcAXAZNBkUGBwBdBj4GPQYHAF0GXgY+BgcATAY9Bj8GBwBMBl0GPQYHAF4GQAY+BgcAXgZfBkAGBwBfBkEGQAYHAF8GYAZBBgcAYAZDBkEGBwBgBmEGQwYHAGIGQgZEBgcAYgZZBkIGBwBhBkQGQwYHAGEGYgZEBgcAVQZIBkYGBwBVBmMGSAYHAGMGRwZIBgcAYwZaBkcGBwBkBmUGZgYHAGQGZwZlBgcAaAZpBmoGBwBoBmsGaQYHAGwGbQZuBgcAbAZvBm0GBwBwBnEGcgYHAHAGcwZxBgcAdAZyBnUGBwB0BnAGcgYHAG8GdgZtBgcAbwZ3BnYGBwB4Bm4GeQYHAHgGbAZuBgcAegZuBm0GBwB6BnsGbgYHAHwGcgZxBgcAfAZ9BnIGBwB9BnUGcgYHAH0GfgZ1BgcAfwZtBnYGBwB/BnoGbQYHAHsGeQZuBgcAewaABnkGBwCBBm8GbAYHAIEGggZvBgcAggZqBmkGBwCCBoEGagYHAIMGcwZwBgcAgwaEBnMGBwCEBmQGZgYHAIQGgwZkBgcAhQZwBnQGBwCFBoMGcAYHAIMGZwZkBgcAgwaFBmcGBwCCBncGbwYHAIIGhgZ3BgcAhgZpBmsGBwCGBoIGaQYHAIcGbAZ4BgcAhwaBBmwGBwCBBmgGagYHAIEGhwZoBgcAiAaJBooGBwCIBosGiQYHAIwGjQaOBgcAjAaPBo0GBwCQBowGjgYHAJAGkQaMBgcAjwaSBo0GBwCPBpMGkgYHAJIGiAaKBgcAkgaTBogGBwCUBmsGaAYHAJQGlQZrBgcAlgZ2BncGBwCWBpcGdgYHAJcGfwZ2BgcAlwaYBn8GBwCZBncGhgYHAJkGlgZ3BgcAlQaGBmsGBwCVBpkGhgYHAJoGmwacBgcAmgadBpsGBwCaBogGnQYHAJoGiwaIBgcAngafBqAGBwCeBqEGnwYHAKEGjwaMBgcAoQaeBo8GBwChBqIGnwYHAKEGowaiBgcAowaMBpEGBwCjBqEGjAYHAKQGoAalBgcApAaeBqAGBwCkBo8GngYHAKQGkwaPBgcAnQalBpsGBwCdBqQGpQYHAKQGiAaTBgcApAadBogGBwCmBooGiQYHAKYGpwaKBgcApgZnBqcGBwCmBmUGZwYHAKgGjQapBgcAqAaOBo0GBwCoBnQGdQYHAKgGqQZ0BgcAqAaQBo4GBwCoBqoGkAYHAKoGdQZ+BgcAqgaoBnUGBwCSBqkGjQYHAJIGqwapBgcAqwZ0BqkGBwCrBoUGdAYHAKcGkgaKBgcApwarBpIGBwCrBmcGhQYHAKsGpwZnBgcArAatBq4GBwCsBq8GrQYHALAGsQayBgcAsAazBrEGBwC0BpcGlgYHALQGtQaXBgcAtga1BrQGBwC2BrcGtQYHALgGlgaZBgcAuAa0BpYGBwC5BrQGuAYHALkGtga0BgcAugaZBpUGBwC6BrgGmQYHALsGuAa6BgcAuwa5BrgGBwC8BpUGlAYHALwGugaVBgcAvQa6BrwGBwC9BrsGugYHAL4GvwbABgcAvgbBBr8GBwDCBsMGxAYHAMIGxQbDBgcAxga3BrYGBwDGBscGtwYHAKAGxwbGBgcAoAafBscGBwDIBrYGuQYHAMgGxga2BgcApQbGBsgGBwClBqAGxgYHAMkGuQa7BgcAyQbIBrkGBwCbBsgGyQYHAJsGpQbIBgcAyga7Br0GBwDKBskGuwYHAJwGyQbKBgcAnAabBskGBwC1Bq4GlwYHALUGrAauBgcArwa1BssGBwCvBqwGtQYHAJcGrQaYBgcAlwauBq0GBwC3BrIGtQYHALcGsAayBgcAswa3BswGBwCzBrAGtwYHALUGsQbLBgcAtQayBrEGBwDHBsAGtwYHAMcGvgbABgcAwQbHBs0GBwDBBr4GxwYHALcGvwbMBgcAtwbABr8GBwCfBsQGxwYHAJ8GwgbEBgcAxQafBqIGBwDFBsIGnwYHAMcGwwbNBgcAxwbEBsMGBwBxBs4GzwYHAHEGcwbOBgcA0AZxBs8GBwDQBnwGcQYHAM4GhAbRBgcAzgZzBoQGBwBmBtIG0wYHAGYGZQbSBgcAhAbTBtEGBwCEBmYG0wYHAIkG1AbVBgcAiQaLBtQGBwB4BtYG1wYHAHgGeQbWBgcAeQbYBtYGBwB5BoAG2AYHAIcG1wbZBgcAhwZ4BtcGBwBoBtkG2gYHAGgGhwbZBgcAlAbaBtsGBwCUBmgG2gYHAJoG3AbdBgcAmgacBtwGBwCLBt0G1AYHAIsGmgbdBgcApgbVBt4GBwCmBokG1QYHAGUG3gbSBgcAZQamBt4GBwC8BtsG3wYHALwGlAbbBgcAvQbfBuAGBwC9BrwG3wYHAMoG4AbhBgcAyga9BuAGBwCcBuEG3AYHAJwGygbhBgcAzwbiBuMGBwDPBs4G4gYHAOQGzwbjBgcA5AbQBs8GBwDiBtEG5QYHAOIGzgbRBgcA0wbmBucGBwDTBtIG5gYHANEG5wblBgcA0QbTBucGBwDVBugG6QYHANUG1AboBgcA1wbqBusGBwDXBtYG6gYHANYG7AbqBgcA1gbYBuwGBwDZBusG7QYHANkG1wbrBgcA2gbtBu4GBwDaBtkG7QYHANsG7gbvBgcA2wbaBu4GBwDdBvAG8QYHAN0G3AbwBgcA1AbxBugGBwDUBt0G8QYHAN4G6QbyBgcA3gbVBukGBwDSBvIG5gYHANIG3gbyBgcA3wbvBvMGBwDfBtsG7wYHAOAG8wb0BgcA4AbfBvMGBwDhBvQG9QYHAOEG4Ab0BgcA3Ab1BvAGBwDcBuEG9QYHAPYG7AbYBgcA9gb3BuwGBwD4BtAG5AYHAPgG+QbQBgcA+gbYBoAGBwD6BvYG2AYHAPkGfAbQBgcA+Qb7BnwGBwD8BsMGxQYHAPwG/QbDBgcA/QbNBsMGBwD9Bv4GzQYHAP8GxQaiBgcA/wb8BsUGBwAAB78GwQYHAAAHAQe/BgcAAQfMBr8GBwABBwIHzAYHAP4GwQbNBgcA/gYAB8EGBwADB7EGswYHAAMHBAexBgcABAfLBrEGBwAEBwUHywYHAAIHswbMBgcAAgcDB7MGBwAGB60GrwYHAAYHBwetBgcABweYBq0GBwAHBwgHmAYHAAUHrwbLBgcABQcGB68GBwAJB5AGqgYHAAkHCgeQBgcACweqBn4GBwALBwkHqgYHAAwHogajBgcADAf/BqIGBwANB6MGkQYHAA0HDAejBgcACAd/BpgGBwAIBw4HfwYHAAoHkQaQBgcACgcNB5EGBwAPB4AGewYHAA8H+gaABgcADgd6Bn8GBwAOBxAHegYHABEHfgZ9BgcAEQcLB34GBwD7Bn0GfAYHAPsGEQd9BgcAEAd7BnoGBwAQBw8HewYHABIHEwcUBwcAEgcVBxMHBwAWBxcHGAcHABYHGQcXBwcAGgcbBxwHBwAaBx0HGwcHAB4HHwcgBwcAHgchBx8HBwAgByIHIwcHACAHHwciBwcAJAcdBxoHBwAkByUHHQcHABwHJgcnBwcAHAcbByYHBwAcBygHGgcHABwHKQcoBwcAIAcqBx4HBwAgBysHKgcHACMHKwcgBwcAIwcsBysHBwAaBy0HJAcHABoHKActBwcAJwcpBxwHBwAnBy4HKQcHAB0HLwcbBwcAHQcwBy8HBwAYBzAHFgcHABgHLwcwBwcAIQcxBx8HBwAhBzIHMQcHABMHMgcUBwcAEwcxBzIHBwAfBzMHIgcHAB8HMQczBwcAFQcxBxMHBwAVBzMHMQcHACUHMAcdBwcAJQc0BzAHBwAWBzQHGQcHABYHMAc0BwcAGwc1ByYHBwAbBy8HNQcHABcHLwcYBwcAFwc1By8HBwA2BzcHOAcHADYHOQc3BwcAOgc7BzwHBwA6Bz0HOwcHADsHPgc8BwcAOwc/Bz4HBwBABz0HOgcHAEAHQQc9BwcANwdABzgHBwA3B0EHQAcHABkHQgcXBwcAGQdDB0IHBwAkB0QHJQcHACQHRQdEBwcALQdFByQHBwAtB0YHRQcHACUHRwc0BwcAJQdEB0cHBwA0B0MHGQcHADQHRwdDBwcASAdJB0oHBwBIB0sHSQcHADcHSQdLBwcANwc5B0kHBwBMB00HTgcHAEwHTwdNBwcAPQdPBzsHBwA9B00HTwcHAFAHTwdMBwcAUAdRB08HBwA7B1EHPwcHADsHTwdRBwcATgdSB1MHBwBOB00HUgcHAD0HUgdNBwcAPQdBB1IHBwBTB0sHSAcHAFMHUgdLBwcANwdSB0EHBwA3B0sHUgcHADgHVAc2BwcAOAdVB1QHBwAVB1QHVQcHABUHEgdUBwcAOgdWB1cHBwA6BzwHVgcHACIHVgcjBwcAIgdXB1YHBwA+B1YHPAcHAD4HWAdWBwcAIwdYBywHBwAjB1YHWAcHAFcHQAc6BwcAVwdZB0AHBwAiB1kHVwcHACIHMwdZBwcAQAdVBzgHBwBAB1kHVQcHABUHWQczBwcAFQdVB1kHBwBaB1sHXAcHAFoHXQdbBwcAXgdfB2AHBwBeB2EHXwcHAEUHYgdEBwcARQdjB2IHBwBjB2QHYgcHAGMHZQdkBwcARAdmB0cHBwBEB2IHZgcHAGIHZwdmBwcAYgdkB2cHBwBHB2gHQwcHAEcHZgdoBwcAZgdpB2gHBwBmB2cHaQcHAEMHagdCBwcAQwdoB2oHBwBoB2sHagcHAGgHaQdrBwcAbAdtB24HBwBsB28HbQcHAHAHcQdyBwcAcAdzB3EHBwBlB3QHZAcHAGUHdQd0BwcAdQdOB3QHBwB1B0wHTgcHAGQHdgdnBwcAZAd0B3YHBwB0B1MHdgcHAHQHTgdTBwcAZwd3B2kHBwBnB3YHdwcHAHYHSAd3BwcAdgdTB0gHBwBpB3gHawcHAGkHdwd4BwcAdwdKB3gHBwB3B0gHSgcHAFwHYwdFBwcAXAdbB2MHBwBjB10HeQcHAGMHWwddBwcAWgdFB0YHBwBaB1wHRQcHAGAHZQdjBwcAYAdfB2UHBwBlB2EHegcHAGUHXwdhBwcAXgdjB3kHBwBeB2AHYwcHAG4HdQdlBwcAbgdtB3UHBwB1B28HewcHAHUHbQdvBwcAbAdlB3oHBwBsB24HZQcHAHIHTAd1BwcAcgdxB0wHBwBMB3MHUAcHAEwHcQdzBwcAcAd1B3sHBwBwB3IHdQcHAHwHHgd9BwcAfAchBx4HBwAeB34HfQcHAB4HKgd+BwcAMgd8B38HBwAyByEHfAcHAIAHFAeBBwcAgAcSBxQHBwCBBzIHfwcHAIEHFAcyBwcAggc2B4MHBwCCBzkHNgcHAIQHJgeFBwcAhAcnByYHBwCGBycHhAcHAIYHLgcnBwcAhQc1B4cHBwCFByYHNQcHAIcHFweIBwcAhwc1BxcHBwCIB0IHiQcHAIgHFwdCBwcAigdJB4sHBwCKB0oHSQcHAIsHOQeCBwcAiwdJBzkHBwCDB1QHjAcHAIMHNgdUBwcAjAcSB4AHBwCMB1QHEgcHAIkHageNBwcAiQdCB2oHBwCNB2sHjgcHAI0HagdrBwcAjgd4B48HBwCOB2sHeAcHAI8HSgeKBwcAjwd4B0oHBwCQB30HkQcHAJAHfAd9BwcAfQeSB5EHBwB9B34HkgcHAH8HkAeTBwcAfwd8B5AHBwCUB4EHlQcHAJQHgAeBBwcAlQd/B5MHBwCVB4EHfwcHAJYHgweXBwcAlgeCB4MHBwCYB4UHmQcHAJgHhAeFBwcAmgeEB5gHBwCaB4YHhAcHAJkHhwebBwcAmQeFB4cHBwCbB4gHnAcHAJsHhweIBwcAnAeJB50HBwCcB4gHiQcHAJ4HiwefBwcAngeKB4sHBwCfB4IHlgcHAJ8HiweCBwcAlweMB6AHBwCXB4MHjAcHAKAHgAeUBwcAoAeMB4AHBwCdB40HoQcHAJ0HiQeNBwcAoQeOB6IHBwChB40HjgcHAKIHjwejBwcAogeOB48HBwCjB4oHngcHAKMHjweKBwcAmgf2BoYHBwCaB/cG9gYHAH4H+AaSBwcAfgf5BvgGBwCGB/oGLgcHAIYH9gb6BgcAKgf5Bn4HBwAqB/sG+QYHAHAH/AZzBwcAcAf9BvwGBwB7B/0GcAcHAHsH/gb9BgcAcwf/BlAHBwBzB/wG/wYHAGwHAAdvBwcAbAcBBwAHBwB6BwEHbAcHAHoHAgcBBwcAbwf+BnsHBwBvBwAH/gYHAF4HAwdhBwcAXgcEBwMHBwB5BwQHXgcHAHkHBQcEBwcAYQcCB3oHBwBhBwMHAgcHAFoHBgddBwcAWgcHBwYHBwBGBwcHWgcHAEYHCAcHBwcAXQcFB3kHBwBdBwYHBQcHAD4HCQdYBwcAPgcKBwkHBwBYBwsHLAcHAFgHCQcLBwcAUAcMB1EHBwBQB/8GDAcHAFEHDQc/BwcAUQcMBw0HBwAtBwgHRgcHAC0HDgcIBwcAPwcKBz4HBwA/Bw0HCgcHAC4HDwcpBwcALgf6Bg8HBwAoBw4HLQcHACgHEAcOBwcALAcRBysHBwAsBwsHEQcHACsH+wYqBwcAKwcRB/sGBwApBxAHKAcHACkHDwcQBwcApAelB6YHBwCkB6cHpQcHAKgHqQeqBwcAqAerB6kHBwCsB60HrgcHAKwHrwetBwcAsAexB7IHBwCwB7MHsQcHALIHtAe1BwcAsgexB7QHBwC2B68HrAcHALYHtwevBwcArge4B7kHBwCuB60HuAcHAK4HugesBwcArge7B7oHBwCyB7wHsAcHALIHvQe8BwcAtQe9B7IHBwC1B74HvQcHAKwHvwe2BwcArAe6B78HBwC5B7sHrgcHALkHwAe7BwcArwfBB60HBwCvB8IHwQcHAKoHwgeoBwcAqgfBB8IHBwCzB8MHsQcHALMHxAfDBwcApQfEB6YHBwClB8MHxAcHALEHxQe0BwcAsQfDB8UHBwCnB8MHpQcHAKcHxQfDBwcAtwfCB68HBwC3B8YHwgcHAKgHxgerBwcAqAfCB8YHBwCtB8cHuAcHAK0HwQfHBwcAqQfBB6oHBwCpB8cHwQcHAMgHyQfKBwcAyAfLB8kHBwDMB80HzgcHAMwHzwfNBwcAzQfQB84HBwDNB9EH0AcHANIHzwfMBwcA0gfTB88HBwDJB9IHygcHAMkH0wfSBwcAqwfUB6kHBwCrB9UH1AcHALYH1ge3BwcAtgfXB9YHBwC/B9cHtgcHAL8H2AfXBwcAtwfZB8YHBwC3B9YH2QcHAMYH1QerBwcAxgfZB9UHBwDaB9sH3AcHANoH3QfbBwcAyQfbB90HBwDJB8sH2wcHAN4H3wfgBwcA3gfhB98HBwDPB+EHzQcHAM8H3wfhBwcA4gfhB94HBwDiB+MH4QcHAM0H4wfRBwcAzQfhB+MHBwDgB+QH5QcHAOAH3wfkBwcAzwfkB98HBwDPB9MH5AcHAOUH3QfaBwcA5QfkB90HBwDJB+QH0wcHAMkH3QfkBwcAygfmB8gHBwDKB+cH5gcHAKcH5gfnBwcApwekB+YHBwDMB+gH6QcHAMwHzgfoBwcAtAfoB7UHBwC0B+kH6AcHANAH6AfOBwcA0AfqB+gHBwC1B+oHvgcHALUH6AfqBwcA6QfSB8wHBwDpB+sH0gcHALQH6wfpBwcAtAfFB+sHBwDSB+cHygcHANIH6wfnBwcApwfrB8UHBwCnB+cH6wcHAOwH7QfuBwcA7AfvB+0HBwDwB/EH8gcHAPAH8wfxBwcA1wf0B9YHBwDXB/UH9AcHAPUH9gf0BwcA9Qf3B/YHBwDWB/gH2QcHANYH9Af4BwcA9Af5B/gHBwD0B/YH+QcHANkH+gfVBwcA2Qf4B/oHBwD4B/sH+gcHAPgH+Qf7BwcA1Qf8B9QHBwDVB/oH/AcHAPoH/Qf8BwcA+gf7B/0HBwD+B/8HAAgHAP4HAQj/BwcAAggDCAQIBwACCAUIAwgHAPcHBgj2BwcA9wcHCAYIBwAHCOAHBggHAAcI3gfgBwcA9gcICPkHBwD2BwYICAgHAAYI5QcICAcABgjgB+UHBwD5BwkI+wcHAPkHCAgJCAcACAjaBwkIBwAICOUH2gcHAPsHCgj9BwcA+wcJCAoIBwAJCNwHCggHAAkI2gfcBwcA7gf1B9cHBwDuB+0H9QcHAPUH7wcLCAcA9QftB+8HBwDsB9cH2AcHAOwH7gfXBwcA8gf3B/UHBwDyB/EH9wcHAPcH8wcMCAcA9wfxB/MHBwDwB/UHCwgHAPAH8gf1BwcAAAgHCPcHBwAACP8HBwgHAAcIAQgNCAcABwj/BwEIBwD+B/cHDAgHAP4HAAj3BwcABAjeBwcIBwAECAMI3gcHAN4HBQjiBwcA3gcDCAUIBwACCAcIDQgHAAIIBAgHCAcADgiwBw8IBwAOCLMHsAcHALAHEAgPCAcAsAe8BxAIBwDEBw4IEQgHAMQHswcOCAcAEgimBxMIBwASCKQHpgcHABMIxAcRCAcAEwimB8QHBwAUCMgHFQgHABQIywfIBwcAFgi4BxcIBwAWCLkHuAcHABgIuQcWCAcAGAjAB7kHBwAXCMcHGQgHABcIuAfHBwcAGQipBxoIBwAZCMcHqQcHABoI1AcbCAcAGgipB9QHBwAcCNsHHQgHABwI3AfbBwcAHQjLBxQIBwAdCNsHywcHABUI5gceCAcAFQjIB+YHBwAeCKQHEggHAB4I5gekBwcAGwj8Bx8IBwAbCNQH/AcHAB8I/QcgCAcAHwj8B/0HBwAgCAoIIQgHACAI/QcKCAcAIQjcBxwIBwAhCAoI3AcHACIIDwgjCAcAIggOCA8IBwAPCCQIIwgHAA8IEAgkCAcAEQgiCCUIBwARCA4IIggHACYIEwgnCAcAJggSCBMIBwAnCBEIJQgHACcIEwgRCAcAKAgVCCkIBwAoCBQIFQgHACoIFwgrCAcAKggWCBcIBwAsCBYIKggHACwIGAgWCAcAKwgZCC0IBwArCBcIGQgHAC0IGgguCAcALQgZCBoIBwAuCBsILwgHAC4IGggbCAcAMAgdCDEIBwAwCBwIHQgHADEIFAgoCAcAMQgdCBQIBwApCB4IMggHACkIFQgeCAcAMggSCCYIBwAyCB4IEggHAC8IHwgzCAcALwgbCB8IBwAzCCAINAgHADMIHwggCAcANAghCDUIBwA0CCAIIQgHADUIHAgwCAcANQghCBwIBwAsCDYIGAgHACwINwg2CAcAEAg4CCQIBwAQCDkIOAgHABgIOgjABwcAGAg2CDoIBwC8BzkIEAgHALwHOwg5CAcAAgg8CAUIBwACCD0IPAgHAA0IPQgCCAcADQg+CD0IBwAFCD8I4gcHAAUIPAg/CAcA/gdACAEIBwD+B0EIQAgHAAwIQQj+BwcADAhCCEEIBwABCD4IDQgHAAEIQAg+CAcA8AdDCPMHBwDwB0QIQwgHAAsIRAjwBwcACwhFCEQIBwDzB0IIDAgHAPMHQwhCCAcA7AdGCO8HBwDsB0cIRggHANgHRwjsBwcA2AdICEcIBwDvB0UICwgHAO8HRghFCAcA0AdJCOoHBwDQB0oISQgHAOoHSwi+BwcA6gdJCEsIBwDiB0wI4wcHAOIHPwhMCAcA4wdNCNEHBwDjB0wITQgHAL8HSAjYBwcAvwdOCEgIBwDRB0oI0AcHANEHTQhKCAcAwAdPCLsHBwDABzoITwgHALoHTgi/BwcAugdQCE4IBwC+B1EIvQcHAL4HSwhRCAcAvQc7CLwHBwC9B1EIOwgHALsHUAi6BwcAuwdPCFAIBwBSCFMIVAgHAFIIVQhTCAcAVghXCFgIBwBWCFkIVwgHAFoIWwhcCAcAWghdCFsIBwBeCF8IYAgHAF4IYQhfCAcAYghgCGMIBwBiCF4IYAgHAF0IZAhbCAcAXQhlCGQIBwBmCFwIZwgHAGYIWghcCAcAaAhcCFsIBwBoCGkIXAgHAGoIYAhfCAcAaghrCGAIBwBrCGMIYAgHAGsIbAhjCAcAbQhbCGQIBwBtCGgIWwgHAGkIZwhcCAcAaQhuCGcIBwBvCF0IWggHAG8IcAhdCAcAcAhYCFcIBwBwCG8IWAgHAHEIYQheCAcAcQhyCGEIBwByCFIIVAgHAHIIcQhSCAcAcwheCGIIBwBzCHEIXggHAHEIVQhSCAcAcQhzCFUIBwBwCGUIXQgHAHAIdAhlCAcAdAhXCFkIBwB0CHAIVwgHAHUIWghmCAcAdQhvCFoIBwBvCFYIWAgHAG8IdQhWCAcAdgh3CHgIBwB2CHkIdwgHAHoIewh8CAcAegh9CHsIBwB+CHoIfAgHAH4Ifwh6CAcAfQiACHsIBwB9CIEIgAgHAIAIdgh4CAcAgAiBCHYIBwCCCFkIVggHAIIIgwhZCAcAhAhkCGUIBwCECIUIZAgHAIUIbQhkCAcAhQiGCG0IBwCHCGUIdAgHAIcIhAhlCAcAgwh0CFkIBwCDCIcIdAgHAIgIiQiKCAcAiAiLCIkIBwCICHYIiwgHAIgIeQh2CAcAjAiNCI4IBwCMCI8IjQgHAI8IfQh6CAcAjwiMCH0IBwCPCJAIjQgHAI8IkQiQCAcAkQh6CH8IBwCRCI8IeggHAJIIjgiTCAcAkgiMCI4IBwCSCH0IjAgHAJIIgQh9CAcAiwiTCIkIBwCLCJIIkwgHAJIIdgiBCAcAkgiLCHYIBwCUCHgIdwgHAJQIlQh4CAcAlAhVCJUIBwCUCFMIVQgHAJYIewiXCAcAlgh8CHsIBwCWCGIIYwgHAJYIlwhiCAcAlgh+CHwIBwCWCJgIfggHAJgIYwhsCAcAmAiWCGMIBwCACJcIewgHAIAImQiXCAcAmQhiCJcIBwCZCHMIYggHAJUIgAh4CAcAlQiZCIAIBwCZCFUIcwgHAJkIlQhVCAcAmgibCJwIBwCaCJ0ImwgHAJ4InwigCAcAngihCJ8IBwCiCIUIhAgHAKIIowiFCAcApAijCKIIBwCkCKUIowgHAKYIhAiHCAcApgiiCIQIBwCnCKIIpggHAKcIpAiiCAcAqAiHCIMIBwCoCKYIhwgHAKkIpgioCAcAqQinCKYIBwCqCIMIgggHAKoIqAiDCAcAqwioCKoIBwCrCKkIqAgHAKwIrQiuCAcArAivCK0IBwCwCLEIsggHALAIswixCAcAtAilCKQIBwC0CLUIpQgHAI4ItQi0CAcAjgiNCLUIBwC2CKQIpwgHALYItAikCAcAkwi0CLYIBwCTCI4ItAgHALcIpwipCAcAtwi2CKcIBwCJCLYItwgHAIkIkwi2CAcAuAipCKsIBwC4CLcIqQgHAIoItwi4CAcAigiJCLcIBwCjCJwIhQgHAKMImgicCAcAnQijCLkIBwCdCJoIowgHAIUImwiGCAcAhQicCJsIBwClCKAIowgHAKUIngigCAcAoQilCLoIBwChCJ4IpQgHAKMInwi5CAcAowigCJ8IBwC1CK4IpQgHALUIrAiuCAcArwi1CLsIBwCvCKwItQgHAKUIrQi6CAcApQiuCK0IBwCNCLIItQgHAI0IsAiyCAcAswiNCJAIBwCzCLAIjQgHALUIsQi7CAcAtQiyCLEIBwBfCLwIvQgHAF8IYQi8CAcAvghfCL0IBwC+CGoIXwgHALwIcgi/CAcAvAhhCHIIBwBUCMAIwQgHAFQIUwjACAcAcgjBCL8IBwByCFQIwQgHAHcIwgjDCAcAdwh5CMIIBwBmCMQIxQgHAGYIZwjECAcAZwjGCMQIBwBnCG4IxggHAHUIxQjHCAcAdQhmCMUIBwBWCMcIyAgHAFYIdQjHCAcAggjICMkIBwCCCFYIyAgHAIgIygjLCAcAiAiKCMoIBwB5CMsIwggHAHkIiAjLCAcAlAjDCMwIBwCUCHcIwwgHAFMIzAjACAcAUwiUCMwIBwCqCMkIzQgHAKoIggjJCAcAqwjNCM4IBwCrCKoIzQgHALgIzgjPCAcAuAirCM4IBwCKCM8IyggHAIoIuAjPCAcAvQjQCNEIBwC9CLwI0AgHANIIvQjRCAcA0gi+CL0IBwDQCL8I0wgHANAIvAi/CAcAwQjUCNUIBwDBCMAI1AgHAL8I1QjTCAcAvwjBCNUIBwDDCNYI1wgHAMMIwgjWCAcAxQjYCNkIBwDFCMQI2AgHAMQI2gjYCAcAxAjGCNoIBwDHCNkI2wgHAMcIxQjZCAcAyAjbCNwIBwDICMcI2wgHAMkI3AjdCAcAyQjICNwIBwDLCN4I3wgHAMsIygjeCAcAwgjfCNYIBwDCCMsI3wgHAMwI1wjgCAcAzAjDCNcIBwDACOAI1AgHAMAIzAjgCAcAzQjdCOEIBwDNCMkI3QgHAM4I4QjiCAcAzgjNCOEIBwDPCOII4wgHAM8IzgjiCAcAygjjCN4IBwDKCM8I4wgHADYI2gjGCAcANgg3CNoIBwA4CL4I0ggHADgIOQi+CAcAOgjGCG4IBwA6CDYIxggHADkIagi+CAcAOQg7CGoIBwA8CLEIswgHADwIPQixCAcAPQi7CLEIBwA9CD4IuwgHAD8IswiQCAcAPwg8CLMIBwBACK0IrwgHAEAIQQitCAcAQQi6CK0IBwBBCEIIuggHAD4Irwi7CAcAPghACK8IBwBDCJ8IoQgHAEMIRAifCAcARAi5CJ8IBwBECEUIuQgHAEIIoQi6CAcAQghDCKEIBwBGCJsInQgHAEYIRwibCAcARwiGCJsIBwBHCEgIhggHAEUInQi5CAcARQhGCJ0IBwBJCH4ImAgHAEkISgh+CAcASwiYCGwIBwBLCEkImAgHAEwIkAiRCAcATAg/CJAIBwBNCJEIfwgHAE0ITAiRCAcASAhtCIYIBwBICE4IbQgHAEoIfwh+CAcASghNCH8IBwBPCG4IaQgHAE8IOghuCAcATghoCG0IBwBOCFAIaAgHAFEIbAhrCAcAUQhLCGwIBwA7CGsIaggHADsIUQhrCAcAUAhpCGgIBwBQCE8IaQgHAOQI5QjmCAcA5AjnCOUIBwDoCOkI6ggHAOgI6wjpCAcA7AjtCO4IBwDsCO8I7QgHAO8I6gjpCAcA7wjsCOoIBwDwCPEI8ggHAPAI8wjxCAcA8wjmCOUIBwDzCPAI5ggHAPMI9AjxCAcA8wj1CPQIBwD1COUI5wgHAPUI8wjlCAcA9gjyCPcIBwD2CPAI8ggHAPAI5AjmCAcA8Aj2COQIBwD4CO4I+QgHAPgI7AjuCAcA7AjoCOoIBwDsCPgI6AgHAO8I+gjtCAcA7wj7CPoIBwD7COkI6wgHAPsI7wjpCAcA/AjrCOgIBwD8CP0I6wgHAP4I+Aj5CAcA/gj/CPgIBwD/COgI+AgHAP8I/AjoCAcAAAn6CPsIBwAACQEJ+ggHAP0I+wjrCAcA/QgACfsIBwACCf0I/AgHAAIJAwn9CAcABAn/CP4IBwAECQUJ/wgHAAUJ/Aj/CAcABQkCCfwIBwAGCQEJAAkHAAYJBwkBCQcAAwkACf0IBwADCQYJAAkHAAgJAwkCCQcACAkJCQMJBwAICQoJCQkHAAgJCwkKCQcADAkFCQQJBwAMCQ0JBQkHAAwJDgkNCQcADAkPCQ4JBwANCQIJBQkHAA0JCAkCCQcACAkOCQsJBwAICQ0JDgkHABAJBwkGCQcAEAkRCQcJBwARCRIJEwkHABEJEAkSCQcACQkGCQMJBwAJCRAJBgkHABAJCgkSCQcAEAkJCQoJBwAUCRUJFgkHABQJFwkVCQcAFAnkCBcJBwAUCecI5AgHABgJGQkaCQcAGAkbCRkJBwAYCfUIGwkHABgJ9Aj1CAcAGQkUCRYJBwAZCRsJFAkHABQJ9QjnCAcAFAkbCfUIBwAcCR0JHgkHABwJHwkdCQcAHQn2CPcIBwAdCR8J9ggHABcJHAkVCQcAFwkfCRwJBwAfCeQI9ggHAB8JFwnkCAcAIAkOCQ8JBwAgCSEJDgkHABoJIQkgCQcAGgkZCSEJBwAhCQsJDgkHACEJIgkLCQcAGQkiCSEJBwAZCRYJIgkHACIJCgkLCQcAIgkjCQoJBwAWCSMJIgkHABYJFQkjCQcAIwkSCQoJBwAjCSQJEgkHABUJJAkjCQcAFQkcCSQJBwAkCRMJEgkHACQJJQkTCQcAHAklCSQJBwAcCR4JJQkHACYJ+QjuCAcAJgknCfkIBwAoCe4I7QgHACgJJgnuCAcAJwn+CPkIBwAnCSkJ/ggHACoJAQkHCQcAKgkrCQEJBwArCfoIAQkHACsJLAn6CAcAKQkECf4IBwApCS0JBAkHAC0JDAkECQcALQkuCQwJBwAuCQ8JDAkHAC4JLwkPCQcALwkgCQ8JBwAvCTAJIAkHADAJGgkgCQcAMAkxCRoJBwAxCRgJGgkHADEJMgkYCQcAMgn0CBgJBwAyCTMJ9AgHADMJ8Qj0CAcAMwk0CfEIBwA0CfII8QgHADQJNQnyCAcANQn3CPIIBwA1CTYJ9wgHADYJHQn3CAcANgk3CR0JBwA3CR4JHQkHADcJOAkeCQcAOAklCR4JBwA4CTkJJQkHADkJEwklCQcAOQk6CRMJBwA6CREJEwkHADoJOwkRCQcAOwkHCREJBwA7CSoJBwkHACwJ7Qj6CAcALAkoCe0IBwA8CT0JPgkHADwJPwk9CQcAQAlBCUIJBwBACUMJQQkHAEQJRQlGCQcARAlHCUUJBwBCCUcJQAkHAEIJRQlHCQcASAlJCUoJBwBICUsJSQkHAD4JSwk8CQcAPglJCUsJBwBMCUsJSAkHAEwJTQlLCQcAPAlNCT8JBwA8CUsJTQkHAEoJTglPCQcASglJCU4JBwA9CUkJPgkHAD0JTglJCQcARglQCVEJBwBGCUUJUAkHAEEJRQlCCQcAQQlQCUUJBwBSCUcJRAkHAFIJUwlHCQcAQAlTCUMJBwBACUcJUwkHAEMJVAlBCQcAQwlVCVQJBwBQCVYJUQkHAFAJVwlWCQcAQQlXCVAJBwBBCVQJVwkHAFIJWAlTCQcAUglZCVgJBwBTCVUJQwkHAFMJWAlVCQcAVQlaCVQJBwBVCVsJWgkHAFcJXAlWCQcAVwldCVwJBwBUCV0JVwkHAFQJWgldCQcAWQleCVgJBwBZCV8JXgkHAFgJWwlVCQcAWAleCVsJBwBbCWAJWgkHAFsJYQlgCQcAYglgCWEJBwBiCWMJYAkHAF0JZAlcCQcAXQllCWQJBwBmCWQJZQkHAGYJZwlkCQcAWgllCV0JBwBaCWAJZQkHAGYJYAljCQcAZgllCWAJBwBfCWgJXgkHAF8JaQloCQcAaglpCWsJBwBqCWgJaQkHAF4JYQlbCQcAXgloCWEJBwBiCWgJagkHAGIJYQloCQcAbAltCW4JBwBsCW8JbQkHAD0JbQlvCQcAPQk/CW0JBwBwCXEJcgkHAHAJcwlxCQcATQlxCXMJBwBNCUwJcQkHAG0JcAluCQcAbQlzCXAJBwBNCW0JPwkHAE0JcwltCQcAdAl1CXYJBwB0CXcJdQkHAE4JdAlPCQcATgl3CXQJBwB1CW8JbAkHAHUJdwlvCQcAPQl3CU4JBwA9CW8JdwkHAGYJeAlnCQcAZgl5CXgJBwB5CXIJeAkHAHkJcAlyCQcAYwl5CWYJBwBjCXoJeQkHAHoJcAl5CQcAegluCXAJBwBiCXoJYwkHAGIJewl6CQcAewluCXoJBwB7CWwJbgkHAGoJewliCQcAagl8CXsJBwB8CWwJewkHAHwJdQlsCQcAawl8CWoJBwBrCX0JfAkHAH0JdQl8CQcAfQl2CXUJBwBRCSYJRgkHAFEJJwkmCQcARgkoCUQJBwBGCSYJKAkHAFYJJwlRCQcAVgkpCScJBwBZCSoJXwkHAFkJKwkqCQcAUgkrCVkJBwBSCSwJKwkHAFwJKQlWCQcAXAktCSkJBwBkCS0JXAkHAGQJLgktCQcAZwkuCWQJBwBnCS8JLgkHAHgJLwlnCQcAeAkwCS8JBwByCTAJeAkHAHIJMQkwCQcAcQkxCXIJBwBxCTIJMQkHAEwJMglxCQcATAkzCTIJBwBICTMJTAkHAEgJNAkzCQcASgk0CUgJBwBKCTUJNAkHAE8JNQlKCQcATwk2CTUJBwB0CTYJTwkHAHQJNwk2CQcAdgk3CXQJBwB2CTgJNwkHAH0JOAl2CQcAfQk5CTgJBwBrCTkJfQkHAGsJOgk5CQcAaQk6CWsJBwBpCTsJOgkHAF8JOwlpCQcAXwkqCTsJBwBECSwJUgkHAEQJKAksCQcAfgl/CYAJBwB+CYEJfwkHAIIJgwmECQcAggmFCYMJBwCGCYcJiAkHAIYJiQmHCQcAgAmKCX4JBwCACYsJigkHAH4JjAmBCQcAfgmKCYwJBwCNCYAJfwkHAI0JiwmACQcAjgmPCZAJBwCOCZEJjwkHAIQJkgmCCQcAhAmTCZIJBwCDCZMJhAkHAIMJlAmTCQcAggmVCYUJBwCCCZIJlQkHAJYJiAmXCQcAlgmGCYgJBwCBCZcJfwkHAIEJlgmXCQcAjgmYCZkJBwCOCZAJmAkHAIUJmAmDCQcAhQmZCZgJBwCGCZoJiQkHAIYJlgmaCQcAjAmWCYEJBwCMCZoJlgkHAJsJiAmHCQcAmwmXCYgJBwB/CZsJjQkHAH8JlwmbCQcAnAmQCY8JBwCcCZgJkAkHAIMJnAmUCQcAgwmYCZwJBwCdCYUJlQkHAJ0JmQmFCQcAjgmdCZEJBwCOCZkJnQkHAJ4JjwmRCQcAngmfCY8JBwCJCZ4JhwkHAIkJnwmeCQcAkwmgCZIJBwCTCaEJoAkHAKEJiwmgCQcAoQmKCYsJBwCUCaEJkwkHAJQJogmhCQcAogmKCaEJBwCiCYwJigkHAKMJkgmgCQcAowmVCZIJBwCNCaAJiwkHAI0JowmgCQcApAmMCaIJBwCkCZoJjAkHAJwJogmUCQcAnAmkCaIJBwCkCYkJmgkHAKQJnwmJCQcAjwmkCZwJBwCPCZ8JpAkHAIcJpQmbCQcAhwmeCaUJBwCeCZ0JpQkHAJ4JkQmdCQcAmwmjCY0JBwCbCaUJowkHAKUJlQmjCQcApQmdCZUJBwCmCacJqAkHAKYJqQmnCQcAqgmrCawJBwCqCa0JqwkHAK4JrwmwCQcArgmxCa8JBwCsCbEJqgkHAKwJrwmxCQcAsgmzCbQJBwCyCbUJswkHAKgJtQmmCQcAqAmzCbUJBwC2CbUJsgkHALYJtwm1CQcApgm3CakJBwCmCbUJtwkHALQJuAm5CQcAtAmzCbgJBwCnCbMJqAkHAKcJuAmzCQcAsAm6CbsJBwCwCa8JugkHAKsJrwmsCQcAqwm6Ca8JBwC8CbEJrgkHALwJvQmxCQcAqgm9Ca0JBwCqCbEJvQkHAK0JvgmrCQcArQm/Cb4JBwC6CcAJuwkHALoJwQnACQcAqwnBCboJBwCrCb4JwQkHALwJwgm9CQcAvAnDCcIJBwC9Cb8JrQkHAL0Jwgm/CQcAvwnECb4JBwC/CcUJxAkHAMEJxgnACQcAwQnHCcYJBwC+CccJwQkHAL4JxAnHCQcAwwnICcIJBwDDCckJyAkHAMIJxQm/CQcAwgnICcUJBwDFCcoJxAkHAMUJywnKCQcAzAnKCcsJBwDMCc0JygkHAMcJzgnGCQcAxwnPCc4JBwDQCc4JzwkHANAJ0QnOCQcAxAnPCccJBwDECcoJzwkHANAJygnNCQcA0AnPCcoJBwDJCdIJyAkHAMkJ0wnSCQcA1AnTCdUJBwDUCdIJ0wkHAMgJywnFCQcAyAnSCcsJBwDMCdIJ1AkHAMwJywnSCQcA1gnXCdgJBwDWCdkJ1wkHAKcJ1wnZCQcApwmpCdcJBwDaCdsJ3AkHANoJ3QnbCQcAtwnbCd0JBwC3CbYJ2wkHANcJ2gnYCQcA1wndCdoJBwC3CdcJqQkHALcJ3QnXCQcA3gnfCeAJBwDeCeEJ3wkHALgJ3gm5CQcAuAnhCd4JBwDfCdkJ1gkHAN8J4QnZCQcApwnhCbgJBwCnCdkJ4QkHANAJ4gnRCQcA0AnjCeIJBwDjCdwJ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TwoHAFAKUQpSCgcAUApTClEKBwBUCkYKRQoHAFQKVQpGCgcAVQpECkYKBwBVClYKRAoHAFcKRQpHCgcAVwpUCkUKBwBKClgKWQoHAEoKSQpYCgcAWQpDCkAKBwBZClgKQwoHAFoKUQpbCgcAWgpSClEKBwBaCkcKRAoHAFoKWwpHCgcAXApJCksKBwBcClgKSQoHAFgKTgpDCgcAWApcCk4KBwBKCl0KSAoHAEoKWQpdCgcAXQpACk8KBwBdClkKQAoHAFIKXgpQCgcAUgpaCl4KBwBeCkQKVgoHAF4KWgpECgcARwpfClcKBwBHClsKXwoHAF8KUQpTCgcAXwpbClEKBwBQCmAKUwoHAFAKYQpgCgcAYApLCkgKBwBgCmEKSwoHAGIKVQpUCgcAYgpjClUKBwBNCmMKYgoHAE0KTApjCgcAYwpWClUKBwBjCmQKVgoHAEwKZApjCgcATApOCmQKBwBUCmUKYgoHAFQKVwplCgcAYgpPCk0KBwBiCmUKTwoHAE4KZgpkCgcATgpcCmYKBwBkCl4KVgoHAGQKZgpeCgcASwpmClwKBwBLCmEKZgoHAGYKUApeCgcAZgphClAKBwBnCkgKXQoHAGcKYApICgcAXwpgCmcKBwBfClMKYAoHAGUKXQpPCgcAZQpnCl0KBwBXCmcKZQoHAFcKXwpnCgcAaAppCmoKBwBoCmsKaQoHAGwKbQpuCgcAbApvCm0KBwBwCnEKcgoHAHAKcwpxCgcAagp0CmgKBwBqCnUKdAoHAGgKdgprCgcAaAp0CnYKBwB3CmoKaQoHAHcKdQpqCgcAeAp5CnoKBwB4CnsKeQoHAG4KfApsCgcAbgp9CnwKBwBtCn0KbgoHAG0Kfgp9CgcAbAp/Cm8KBwBsCnwKfwoHAIAKcgqBCgcAgApwCnIKBwBrCoEKaQoHAGsKgAqBCgcAeAqCCoMKBwB4CnoKggoHAG8KggptCgcAbwqDCoIKBwBwCoQKcwoHAHAKgAqECgcAdgqACmsKBwB2CoQKgAoHAIUKcgpxCgcAhQqBCnIKBwBpCoUKdwoHAGkKgQqFCgcAhgp6CnkKBwCGCoIKegoHAG0Khgp+CgcAbQqCCoYKBwCHCm8KfwoHAIcKgwpvCgcAeAqHCnsKBwB4CoMKhwoHAIgKeQp7CgcAiAqJCnkKBwBzCogKcQoHAHMKiQqICgcA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MgsHAEYLJgs6CwcARgsyCyYLBwBDCzMLRwsHAEMLLwszCwcARws0C0gLBwBHCzMLNAsHAEgLNQtJCwcASAs0CzULBwBJCzALRAsHAEkLNQswCwcAQAtKCywLBwBAC0sLSgsHACQLTAs4CwcAJAtNC0wLBwAsC04L1AoHACwLSgtOCwcA0ApNCyQLBwDQCk8LTQsHABYLUAsZCwcAFgtRC1ALBwAhC1ELFgsHACELUgtRCwcAGQtTC/YKBwAZC1ALUwsHABILVAsVCwcAEgtVC1QLBwAgC1ULEgsHACALVgtVCwcAFQtSCyELBwAVC1QLUgsHAAQLVwsHCwcABAtYC1cLBwAfC1gLBAsHAB8LWQtYCwcABwtWCyALBwAHC1cLVgsHAAALWgsDCwcAAAtbC1oLBwDsClsLAAsHAOwKXAtbCwcAAwtZCx8LBwADC1oLWQsHAOQKXQv+CgcA5ApeC10LBwD+Cl8L0goHAP4KXQtfCwcA9gpgC/cKBwD2ClMLYAsHAPcKYQvlCgcA9wpgC2ELBwDTClwL7AoHANMKYgtcCwcA5QpeC+QKBwDlCmELXgsHANQKYwvPCgcA1ApOC2MLBwDOCmIL0woHAM4KZAtiCwcA0gplC9EKBwDSCl8LZQsHANEKTwvQCgcA0QplC08LBwDPCmQLzgoHAM8KYwtkCwcAZgtnC2gLBwBmC2kLZwsHAGoLawtsCwcAagttC2sLBwBuC28LcAsHAG4LcQtvCwcAbAtxC2oLBwBsC28LcQsHAHILcwt0CwcAcgt1C3MLBwBoC3ULZgsHAGgLcwt1CwcAdgt1C3ILBwB2C3cLdQsHAGYLdwtpCwcAZgt1C3cLBwB0C3gLeQsHAHQLcwt4CwcAZwtzC2gLBwBnC3gLcwsHAHALegt7CwcAcAtvC3oLBwBrC28LbAsHAGsLegtvCwcAfAtxC24LBwB8C30LcQsHAGoLfQttCwcAagtxC30LBwBtC34LawsHAG0Lfwt+CwcAeguAC3sLBwB6C4ELgAsHAGsLgQt6CwcAawt+C4ELBwB8C4ILfQsHAHwLgwuCCwcAfQt/C20LBwB9C4ILfwsHAH8LhAt+CwcAfwuFC4QLBwCBC4YLgAsHAIELhwuGCwcAfguHC4ELBwB+C4QLhwsHAIMLiAuCCwcAgwuJC4gLBwCCC4ULfwsHAIILiAuFCwcAhQuKC4QLBwCFC4sLigsHAIwLiguLCwcAjAuNC4oLBwCHC44LhgsHAIcLjwuOCwcAkAuOC48LBwCQC5ELjgsHAIQLjwuHCwcAhAuKC48LBwCQC4oLjQsHAJALjwuKCwcAiQuSC4gLBwCJC5MLkgsHAJQLkwuVCwcAlAuSC5MLBwCIC4sLhQsHAIgLkguLCwcAjAuSC5QLBwCMC4sLkgsHAJYLlwuYCwcAlguZC5cLBwBnC5cLmQsHAGcLaQuXCwcAmgubC5wLBwCaC50LmwsHAHcLmwudCwcAdwt2C5sLBwCXC5oLmAsHAJcLnQuaCwcAdwuXC2kLBwB3C50LlwsHAJ4LnwugCwcAnguhC58LBwB4C54LeQsHAHgLoQueCwcAnwuZC5YLBwCfC6ELmQsHAGcLoQt4CwcAZwuZC6ELBwCQC6ILkQsHAJALowuiCwcAowucC6ILBwCjC5oLnAsHAI0LowuQCwcAjQukC6MLBwCkC5oLowsHAKQLmAuaCwcAjAukC40LBwCMC6ULpAsHAKULmAukCwcApQuWC5gLBwCUC6ULjAsHAJQLpgulCwcApguWC6ULBwCmC58LlgsHAJULpguUCwcAlQunC6YLBwCnC58LpgsHAKcLoAufCwcAewuoC3ALBwB7C6kLqAsHAHALqgtuCwcAcAuoC6oLBwCAC6kLewsHAIALqwupCwcAgwusC4kLBwCDC60LrAsHAHwLrQuDCwcAfAuuC60LBwCGC6sLgAsHAIYLrwurCwcAjguvC4YLBwCOC7ALrwsHAJELsAuOCwcAkQuxC7ALBwCiC7ELkQsHAKILsguxCwcAnAuyC6ILBwCcC7MLsgsHAJsLswucCwcAmwu0C7MLBwB2C7QLmwsHAHYLtQu0CwcAcgu1C3YLBwByC7YLtQsHAHQLtgtyCwcAdAu3C7YLBwB5C7cLdAsHAHkLuAu3CwcAngu4C3kLBwCeC7kLuAsHAKALuQueCwcAoAu6C7kLBwCnC7oLoAsHAKcLuwu6CwcAlQu7C6cLBwCVC7wLuwsHAJMLvAuVCwcAkwu9C7wLBwCJC70LkwsHAIkLrAu9CwcAbguuC3wLBwBuC6oLrgsHAL4LvAu9CwcAvgu/C7wLBwDAC70LrAsHAMALvgu9CwcAvwu7C7wLBwC/C8ELuwsHAMELugu7CwcAwQvCC7oLBwDCC7kLugsHAMILwwu5CwcAwwu4C7kLBwDDC8QLuAsHAMQLtwu4CwcAxAvFC7cLBwDFC7YLtwsHAMULxgu2CwcAxgu1C7YLBwDGC8cLtQsHAMcLtAu1CwcAxwvIC7QLBwDIC7MLtAsHAMgLyQuzCwcAyQuyC7MLBwDJC8oLsgsHAMoLsQuyCwcAygvLC7ELBwDLC7ALsQsHAMsLzAuwCwcAzAuvC7ALBwDMC80LrwsHAM0LqwuvCwcAzQvOC6sLBwDPC60LrgsHAM8L0AutCwcA0QuuC6oLBwDRC88LrgsHANALrAutCwcA0AvAC6wLBwDOC6kLqwsHAM4L0gupCwcA0wuqC6gLBwDTC9ELqgsHANILqAupCwcA0gvTC6gLBwDUC2ULXwsHANQL1QtlCwcA1QtPC2ULBwDVC9YLTwsHANcLZAtjCwcA1wvYC2QLBwDYC2ILZAsHANgL2QtiCwcA2gtjC04LBwDaC9cLYwsHANkLXAtiCwcA2QvbC1wLBwDcC2ELYAsHANwL3QthCwcA3QteC2ELBwDdC94LXgsHAN8LYAtTCwcA3wvcC2ALBwDgC18LXQsHAOAL1AtfCwcA3gtdC14LBwDeC+ALXQsHANsLWwtcCwcA2wvhC1sLBwDhC1oLWwsHAOEL4gtaCwcA4gtZC1oLBwDiC+MLWQsHAOMLWAtZCwcA4wvkC1gLBwDkC1cLWAsHAOQL5QtXCwcA5QtWC1cLBwDlC+YLVgsHAOYLVQtWCwcA5gvnC1ULBwDnC1QLVQsHAOcL6AtUCwcA6AtSC1QLBwDoC+kLUgsHAOoLUwtQCwcA6gvfC1MLBwDpC1ELUgsHAOkL6wtRCwcA6wtQC1ELBwDrC+oLUAsHANYLTQtPCwcA1gvsC00LBwDtC04LSgsHAO0L2gtOCwcA7AtMC00LBwDsC+4LTAsHAO8LSgtLCwcA7wvtC0oLBwDwC/EL8gsHAPAL8wvxCwcA9Av1C/YLBwD0C/cL9QsHAPgL+Qv6CwcA+Av7C/kLBwD8C/0L/gsHAPwL/wv9CwcAAAz+CwEMBwAADPwL/gsHAPsLAgz5CwcA+wsDDAIMBwAEDPoLBQwHAAQM+Av6CwcABgz6C/kLBwAGDAcM+gsHAAgM/gv9CwcACAwJDP4LBwAJDAEM/gsHAAkMCgwBDAcACwz5CwIMBwALDAYM+QsHAAcMBQz6CwcABwwMDAUMBwANDPsL+AsHAA0MDgz7CwcADgz2C/ULBwAODA0M9gsHAA8M/wv8CwcADwwQDP8LBwAQDPAL8gsHABAMDwzwCwcAEQz8CwAMBwARDA8M/AsHAA8M8wvwCwcADwwRDPMLBwAODAMM+wsHAA4MEgwDDAcAEgz1C/cLBwASDA4M9QsHABMM+AsEDAcAEwwNDPgLBwANDPQL9gsHAA0MEwz0CwcAFAwVDBYMBwAUDBcMFQwHABgMGQwaDAcAGAwbDBkMBwAcDBgMGgwHABwMHQwYDAcAGwweDBkMBwAbDB8MHgwHAB4MFAwWDAcAHgwfDBQMBwAgDPcL9AsHACAMIQz3CwcAIgwCDAMMBwAiDCMMAgwHACMMCwwCDAcAIwwkDAsMBwAlDAMMEgwHACUMIgwDDAcAIQwSDPcLBwAhDCUMEgwHACYMJwwoDAcAJgwpDCcMBwAmDBQMKQwHACYMFwwUDAcAKgwrDCwMBwAqDC0MKwwHAC0MGwwYDAcALQwqDBsMBwAtDC4MKwwHAC0MLwwuDAcALwwYDB0MBwAvDC0MGAwHADAMLAwxDAcAMAwqDCwMBwAwDBsMKgwHADAMHwwbDAcAKQwxDCcMBwApDDAMMQwHADAMFAwfDAcAMAwpDBQMBwAyDBYMFQwHADIMMwwWDAcAMgzzCzMMBwAyDPEL8wsHADQMGQw1DAcANAwaDBkMBwA0DAAMAQwHADQMNQwADAcANAwcDBoMBwA0DDYMHAwHADYMAQwKDAcANgw0DAEMBwAeDDUMGQwHAB4MNww1DAcANwwADDUMBwA3DBEMAAwHADMMHgwWDAcAMww3DB4MBwA3DPMLEQwHADcMMwzzCwcAOAw5DDoMBwA4DDsMOQwHADwMPQw+DAcAPAw/DD0MBwBADCMMIgwHAEAMQQwjDAcAQgxBDEAMBwBCDEMMQQwHAEQMIgwlDAcARAxADCIMBwBFDEAMRAwHAEUMQgxADAcARgwlDCEMBwBGDEQMJQwHAEcMRAxGDAcARwxFDEQMBwBIDCEMIAwHAEgMRgwhDAcASQxGDEgMBwBJDEcMRgwHAEoMSwxMDAcASgxNDEsMBwBODE8MUAwHAE4MUQxPDAcAUgxDDEIMBwBSDFMMQwwHACwMUwxSDAcALAwrDFMMBwBUDEIMRQwHAFQMUgxCDAcAMQxSDFQMBwAxDCwMUgwHAFUMRQxHDAcAVQxUDEUMBwAnDFQMVQwHACcMMQxUDAcAVgxHDEkMBwBWDFUMRwwHACgMVQxWDAcAKAwnDFUMBwBBDDoMIwwHAEEMOAw6DAcAOwxBDFcMBwA7DDgMQQwHACMMOQwkDAcAIww6DDkMBwBDDD4MQQwHAEMMPAw+DAcAPwxDDFgMBwA/DDwMQwwHAEEMPQxXDAcAQQw+DD0MBwBTDEwMQwwHAFMMSgxMDAcATQxTDFkMBwBNDEoMUwwHAEMMSwxYDAcAQwxMDEsMBwArDFAMUwwHACsMTgxQDAcAUQwrDC4MBwBRDE4MKwwHAFMMTwxZDAcAUwxQDE8MBwD9C1oMWwwHAP0L/wtaDAcAXAz9C1sMBwBcDAgM/QsHAFoMEAxdDAcAWgz/CxAMBwDyC14MXwwHAPIL8QteDAcAEAxfDF0MBwAQDPILXwwHABUMYAxhDAcAFQwXDGAMBwAEDGIMYwwHAAQMBQxiDAcABQxkDGIMBwAFDAwMZAwHABMMYwxlDAcAEwwEDGMMBwD0C2UMZgwHAPQLEwxlDAcAIAxmDGcMBwAgDPQLZgwHACYMaAxpDAcAJgwoDGgMBwAXDGkMYAwHABcMJgxpDAcAMgxhDGoMBwAyDBUMYQwHAPELagxeDAcA8QsyDGoMBwBIDGcMawwHAEgMIAxnDAcASQxrDGwMBwBJDEgMawwHAFYMbAxtDAcAVgxJDGwMBwAoDG0MaAwHACgMVgxtDAcAWwxuDG8MBwBbDFoMbgwHAHAMWwxvDAcAcAxcDFsMBwBuDF0McQwHAG4MWgxdDAcAXwxyDHMMBwBfDF4McgwHAF0McwxxDAcAXQxfDHMMBwBhDHQMdQwHAGEMYAx0DAcAYwx2DHcMBwBjDGIMdgwHAGIMeAx2DAcAYgxkDHgMBwBlDHcMeQwHAGUMYwx3DAcAZgx5DHoMBwBmDGUMeQwHAGcMegx7DAcAZwxmDHoMBwBpDHwMfQwHAGkMaAx8DAcAYAx9DHQMBwBgDGkMfQwHAGoMdQx+DAcAagxhDHUMBwBeDH4McgwHAF4Magx+DAcAawx7DH8MBwBrDGcMewwHAGwMfwyADAcAbAxrDH8MBwBtDIAMgQwHAG0MbAyADAcAaAyBDHwMBwBoDG0MgQwHAIIMeAxkDAcAggyDDHgMBwCEDFwMcAwHAIQMhQxcDAcAhgxkDAwMBwCGDIIMZAwHAIUMCAxcDAcAhQyHDAgMBwCIDE8MUQwHAIgMiQxPDAcAiQxZDE8MBwCJDIoMWQwHAIsMUQwuDAcAiwyIDFEMBwCMDEsMTQwHAIwMjQxLDAcAjQxYDEsMBwCNDI4MWAwHAIoMTQxZDAcAigyMDE0MBwCPDD0MPwwHAI8MkAw9DAcAkAxXDD0MBwCQDJEMVwwHAI4MPwxYDAcAjgyPDD8MBwCSDDkMOwwHAJIMkww5DAcAkwwkDDkMBwCTDJQMJAwHAJEMOwxXDAcAkQySDDsMBwCVDBwMNgwHAJUMlgwcDAcAlww2DAoMBwCXDJUMNgwHAJgMLgwvDAcAmAyLDC4MBwCZDC8MHQwHAJkMmAwvDAcAlAwLDCQMBwCUDJoMCwwHAJYMHQwcDAcAlgyZDB0MBwCbDAwMBwwHAJsMhgwMDAcAmgwGDAsMBwCaDJwMBgwHAJ0MCgwJDAcAnQyXDAoMBwCHDAkMCAwHAIcMnQwJDAcAnAwHDAYMBwCcDJsMBwwHAJ4MnwygDAcAngyhDJ8MBwCiDKMMpAwHAKIMpQyjDAcApgynDKgMBwCmDKkMpwwHAKkMpAyjDAcAqQymDKQMBwCqDKsMrAwHAKoMrQyrDAcArQygDJ8MBwCtDKoMoAwHAK0MrgyrDAcArQyvDK4MBwCvDJ8MoQwHAK8MrQyfDAcAsAysDLEMBwCwDKoMrAwHAKoMngygDAcAqgywDJ4MBwCyDKgMswwHALIMpgyoDAcApgyiDKQMBwCmDLIMogwHAKkMtAynDAcAqQy1DLQMBwC1DKMMpQwHALUMqQyjDAcAtgylDKIMBwC2DLcMpQwHALgMsgyzDAcAuAy5DLIMBwC5DKIMsgwHALkMtgyiDAcAugy0DLUMBwC6DLsMtAwHALcMtQylDAcAtwy6DLUMBwC8DLcMtgwHALwMvQy3DAcAvgy5DLgMBwC+DL8MuQwHAL8Mtgy5DAcAvwy8DLYMBwDADLsMugwHAMAMwQy7DAcAvQy6DLcMBwC9DMAMugwHAMIMvQy8DAcAwgzDDL0MBwDCDMQMwwwHAMIMxQzEDAcAxgy/DL4MBwDGDMcMvwwHAMYMyAzHDAcAxgzJDMgMBwDHDLwMvwwHAMcMwgy8DAcAwgzIDMUMBwDCDMcMyAwHAMoMwQzADAcAygzLDMEMBwDLDMwMzQwHAMsMygzMDAcAwwzADL0MBwDDDMoMwAwHAMoMxAzMDAcAygzDDMQMBwDODM8M0AwHAM4M0QzPDAcAzgyeDNEMBwDODKEMngwHANIM0wzUDAcA0gzVDNMMBwDSDK8M1QwHANIMrgyvDAcA0wzODNAMBwDTDNUMzgwHAM4MrwyhDAcAzgzVDK8MBwDWDNcM2AwHANYM2QzXDAcA1wywDLEMBwDXDNkMsAwHANEM1gzPDAcA0QzZDNYMBwDZDJ4MsAwHANkM0QyeDAcA2gzIDMkMBwDaDNsMyAwHANQM2wzaDAcA1AzTDNsMBwDbDMUMyAwHANsM3AzFDAcA0wzcDNsMBwDTDNAM3AwHANwMxAzFDAcA3AzdDMQMBwDQDN0M3AwHANAMzwzdDAcA3QzMDMQMBwDdDN4MzAwHAM8M3gzdDAcAzwzWDN4MBwDeDM0MzAwHAN4M3wzNDAcA1gzfDN4MBwDWDNgM3wwHAOAMswyoDAcA4AzhDLMMBwDiDKgMpwwHAOIM4AyoDAcA4Qy4DLMMBwDhDOMMuAwHAOQMuwzBDAcA5AzlDLsMBwDlDLQMuwwHAOUM5gy0DAcA4wy+DLgMBwDjDOcMvgwHAOcMxgy+DAcA5wzoDMYMBwDoDMkMxgwHAOgM6QzJDAcA6QzaDMkMBwDpDOoM2gwHAOoM1AzaDAcA6gzrDNQMBwDrDNIM1AwHAOsM7AzSDAcA7AyuDNIMBwDsDO0MrgwHAO0MqwyuDAcA7QzuDKsMBwDuDKwMqwwHAO4M7wysDAcA7wyxDKwMBwDvDPAMsQwHAPAM1wyxDAcA8AzxDNcMBwDxDNgM1wwHAPEM8gzYDAcA8gzfDNgMBwDyDPMM3wwHAPMMzQzfDAcA8wz0DM0MBwD0DMsMzQwHAPQM9QzLDAcA9QzBDMsMBwD1DOQMwQwHAOYMpwy0DAcA5gziDKcMBwD0DL4L9QwHAPQMvwu+CwcA9QzAC+QMBwD1DL4LwAsHAPMMvwv0DAcA8wzBC78LBwDyDMEL8wwHAPIMwgvBCwcA8QzCC/IMBwDxDMMLwgsHAPAMwwvxDAcA8AzEC8MLBwDvDMQL8AwHAO8MxQvECwcA7gzFC+8MBwDuDMYLxQsHAO0MxgvuDAcA7QzHC8YLBwDsDMcL7QwHAOwMyAvHCwcA6wzIC+wMBwDrDMkLyAsHAOoMyQvrDAcA6gzKC8kLBwDpDMoL6gwHAOkMywvKCwcA6AzLC+kMBwDoDMwLywsHAOcMzAvoDAcA5wzNC8wLBwDjDM0L5wwHAOMMzgvNCwcA5QzPC+YMBwDlDNALzwsHAOYM0QviDAcA5gzPC9ELBwDkDNAL5QwHAOQMwAvQCwcA4QzOC+MMBwDhDNILzgsHAOIM0wvgDAcA4gzRC9MLBwDgDNIL4QwHAOAM0wvSCwcAnQzUC5cMBwCdDNUL1AsHAIcM1QudDAcAhwzWC9ULBwCcDNcLmwwHAJwM2AvXCwcAmgzYC5wMBwCaDNkL2AsHAJsM2guGDAcAmwzXC9oLBwCUDNkLmgwHAJQM2wvZCwcAmQzcC5gMBwCZDN0L3AsHAJYM3QuZDAcAlgzeC90LBwCYDN8LiwwHAJgM3AvfCwcAlwzgC5UMBwCXDNQL4AsHAJUM3guWDAcAlQzgC94LBwCTDNsLlAwHAJMM4QvbCwcAkgzhC5MMBwCSDOIL4QsHAJEM4guSDAcAkQzjC+ILBwCQDOMLkQwHAJAM5AvjCwcAjwzkC5AMBwCPDOUL5AsHAI4M5QuPDAcAjgzmC+ULBwCNDOYLjgwHAI0M5wvmCwcAjAznC40MBwCMDOgL5wsHAIoM6AuMDAcAigzpC+gLBwCLDOoLiAwHAIsM3wvqCwcAiQzpC4oMBwCJDOsL6QsHAIgM6wuJDAcAiAzqC+sLBwCFDNYLhwwHAIUM7AvWCwcAhgztC4IMBwCGDNoL7QsHAIQM7AuFDAcAhAzuC+wLBwCCDO8LgwwHAIIM7QvvCwcA9gz3DPgMBwD2DPkM9wwHAPoM+wz8DAcA+gz9DPsMBwD+DP8MAA0HAP4MAQ3/DAcA+AwCDfYMBwD4DAMNAg0HAPYMBA35DAcA9gwCDQQNBwAFDfgM9wwHAAUNAw34DAcABg0HDQgNBwAGDQkNBw0HAPwMCg36DAcA/AwLDQoNBwD7DAsN/AwHAPsMDA0LDQcA+gwNDf0MBwD6DAoNDQ0HAA4NAA0PDQcADg3+DAANBwD5DA8N9wwHAPkMDg0PDQcABg0QDRENBwAGDQgNEA0HAP0MEA37DAcA/QwRDRANBwD+DBINAQ0HAP4MDg0SDQcABA0ODfkMBwAEDRINDg0HABMNAA3/DAcAEw0PDQANBwD3DBMNBQ0HAPcMDw0TDQcAFA0IDQcNBwAUDRANCA0HAPsMFA0MDQcA+wwQDRQNBwAVDf0MDQ0HABUNEQ39DAcABg0VDQkNBwAGDRENFQ0HABYNBw0JDQcAFg0XDQcNBwABDRYN/wwHAAENFw0WDQcACw0YDQoNBwALDRkNGA0HABkNAw0YDQcAGQ0CDQMNBwAMDRkNCw0HAAwNGg0ZDQcAGg0CDRkNBwAaDQQNAg0HABsNCg0YDQcAGw0NDQoNBwAFDRgNAw0HAAUNGw0YDQcAHA0EDRoNBwAcDRINBA0HABQNGg0MDQcAFA0cDRoNBwAcDQENEg0HABwNFw0BDQcABw0cDRQNBwAHDRcNHA0HAP8MHQ0TDQcA/wwWDR0NBwAWDRUNHQ0HABYNCQ0VDQcAEw0bDQUNBwATDR0NGw0HAB0NDQ0bDQcAHQ0VDQ0NBwAeDR8NIA0HAB4NIQ0fDQcAIA0iDSMNBwAgDR8NIg0HACMNJA0lDQcAIw0iDSQNBwAlDSYNJw0HACUNJA0mDQcAJw0oDSkNBwAnDSYNKA0HACANKg0eDQcAIA0rDSoNBwAjDSsNIA0HACMNLA0rDQcAJQ0sDSMNBwAlDS0NLA0HACcNLQ0lDQcAJw0uDS0NBwApDS4NJw0HACkNLw0uDQcAJg0wDSgNBwAmDTENMA0HADENMg0wDQcAMQ0zDTINBwAkDTENJg0HACQNNA0xDQcANA0zDTENBwA0DTUNMw0HACINNA0kDQcAIg02DTQNBwA2DTUNNA0HADYNNw01DQcAHw02DSINBwAfDTgNNg0HADgNNw02DQcAOA05DTcNBwAhDTgNHw0HACENOg04DQcAOg05DTgNBwA6DTsNOQ0HACsNPA0qDQcAKw09DTwNBwA9DT4NPA0HAD0NPw0+DQcALA09DSsNBwAsDUANPQ0HAEANPw09DQcAQA1BDT8NBwAtDUANLA0HAC0NQg1ADQcAQg1BDUANBwBCDUMNQQ0HAC4NQg0tDQcALg1EDUINBwBEDUMNQg0HAEQNRQ1DDQcALw1EDS4NBwAvDUYNRA0HAEYNRQ1EDQcARg1HDUUNBwApDUYNLw0HACkNSA1GDQcASA1HDUYNBwBIDUkNRw0HACgNSA0pDQcAKA1KDUgNBwBKDUkNSA0HAEoNSw1JDQcAMA1KDSgNBwAwDUwNSg0HAEwNSw1KDQcATA1NDUsNBwAyDUwNMA0HADINTg1MDQcATg1NDUwNBwBODU8NTQ0HACoNUA0eDQcAKg08DVANBwA8DVENUA0HADwNPg1RDQcAHg1SDSENBwAeDVANUg0HAFANUw1SDQcAUA1RDVMNBwAhDVQNOg0HACENUg1UDQcAUg1VDVQNBwBSDVMNVQ0HADoNVg07DQcAOg1UDVYNBwBUDVcNVg0HAFQNVQ1XDQcAWA1ZDVoNBwBYDVsNWQ0HAFwNWw1YDQcAXA1dDVsNBwBeDV0NXA0HAF4NXw1dDQcAYA1hDWINBwBgDWMNYQ0HAGQNYw1lDQcAZA1hDWMNBwBmDWMNYA0HAGYNZw1jDQcAZQ1nDWgNBwBlDWMNZw0HAGkNZw1mDQcAaQ1qDWcNBwBoDWoNaw0HAGgNZw1qDQcAWw1sDVkNBwBbDW0NbA0HAG0Naw1sDQcAbQ1oDWsNBwBdDW0NWw0HAF0Nbg1tDQcAbg1oDW0NBwBuDWUNaA0HAF8Nbg1dDQcAXw1vDW4NBwBvDWUNbg0HAG8NZA1lDQcAaQ1wDWoNBwBpDXENcA0HAHENcg1wDQcAcQ1zDXINBwBmDXENaQ0HAGYNdA1xDQcAdA1zDXENBwB0DXUNcw0HAGANdA1mDQcAYA12DXQNBwB2DXUNdA0HAHYNdw11DQcAYg12DWANBwBiDXgNdg0HAHgNdw12DQcAeA15DXcNBwBhDXgNYg0HAGENeg14DQcAeg15DXgNBwB6DXsNeQ0HAGQNeg1hDQcAZA18DXoNBwB8DXsNeg0HAHwNfQ17DQcAbw18DWQNBwBvDX4NfA0HAH4NfQ18DQcAfg1/DX0NBwBfDX4Nbw0HAF8NgA1+DQcAgA1/DX4NBwCADYENfw0HAF4NgA1fDQcAXg2CDYANBwCCDYENgA0HAIINgw2BDQcAXA2CDV4NBwBcDYQNgg0HAIQNgw2CDQcAhA2FDYMNBwBYDYQNXA0HAFgNhg2EDQcAhg2FDYQNBwCGDYcNhQ0HAFoNhg1YDQcAWg2IDYYNBwCIDYcNhg0HAIgNiQ2HDQcAWQ2IDVoNBwBZDYoNiA0HAIoNiQ2IDQcAig2LDYkNBwBsDYoNWQ0HAGwNjA2KDQcAjA2LDYoNBwCMDY0Niw0HAGsNjA1sDQcAaw2ODYwNBwCODY0NjA0HAI4Njw2NDQcAag2ODWsNBwBqDXANjg0HAHANjw2ODQcAcA1yDY8NBwCQDZEN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IA4HACEOIg4jDgcAIQ4gDiIOBwAjDiQOJQ4HACMOIg4kDgcAJQ4mDicOBwAlDiQOJg4HACcOKA4pDgcAJw4mDigOBwAoDioOKQ4HACgOKw4qDgcAKg4sDi0OBwAqDisOLA4HACwOLg4tDgcALA4vDi4OBwAvDjAOLg4HAC8OMQ4wDgcAMQ4yDjAOBwAxDjMOMg4HADMONA4yDgcAMw41DjQOBwA1DjYONA4HADUONw42DgcANw4aDjYOBwA3DhgOGg4HAPgNOA77DQcA+A05DjgOBwAZDjkOGg4HABkOOA45DgcA+w06DvwNBwD7DTgOOg4HAB0OOA4ZDgcAHQ46DjgOBwD8DTsO/g0HAPwNOg47DgcAHw46Dh0OBwAfDjsOOg4HAP4NPA4ADgcA/g07DjwOBwAhDjsOHw4HACEOPA47DgcAAA49DgMOBwAADjwOPQ4HACMOPA4hDgcAIw49DjwOBwA+Dj8OQA4HAD4OQQ4/DgcAJQ49DiMOBwAlDkIOPQ4HAAUOQw4HDgcABQ5CDkMOBwAnDkIOJQ4HACcOQw5CDgcABw5EDgkOBwAHDkMORA4HACkOQw4nDgcAKQ5EDkMOBwAJDkUOCg4HAAkORA5FDgcAKg5EDikOBwAqDkUORA4HAAoORg4NDgcACg5FDkYOBwAtDkUOKg4HAC0ORg5FDgcADQ5HDg4OBwANDkYORw4HAC4ORg4tDgcALg5HDkYOBwAODkgOEA4HAA4ORw5IDgcAMA5HDi4OBwAwDkgORw4HAEkOSg5LDgcASQ5MDkoOBwAyDkgOMA4HADIOTQ5IDgcAEg5ODhQOBwASDk0OTg4HADQOTQ4yDgcANA5ODk0OBwAUDk8OFw4HABQOTg5PDgcANg5ODjQOBwA2Dk8OTg4HABcOOQ74DQcAFw5PDjkOBwAaDk8ONg4HABoOOQ5PDgcAGA5QDhsOBwAYDlEOUA4HAFIOUQ5TDgcAUg5QDlEOBwAbDlQOHA4HABsOUA5UDgcAVQ5QDlIOBwBVDlQOUA4HABwOVg4eDgcAHA5UDlYOBwBXDlQOVQ4HAFcOVg5UDgcAHg5YDiAOBwAeDlYOWA4HAFkOVg5XDgcAWQ5YDlYOBwAgDloOIg4HACAOWA5aDgcAWw5YDlkOBwBbDloOWA4HACIOXA4kDgcAIg5aDlwOBwBdDloOWw4HAF0OXA5aDgcAJA5eDiYOBwAkDlwOXg4HAF8OXA5dDgcAXw5eDlwOBwAmDmAOKA4HACYOXg5gDgcAYQ5eDl8OBwBhDmAOXg4HACgOYg4rDgcAKA5gDmIOBwBjDmAOYQ4HAGMOYg5gDgcAKw5kDiwOBwArDmIOZA4HAGUOYg5jDgcAZQ5kDmIOBwAsDmYOLw4HACwOZA5mDgcAZw5kDmUOBwBnDmYOZA4HAC8OaA4xDgcALw5mDmgOBwBpDmYOZw4HAGkOaA5mDgcAMQ5qDjMOBwAxDmgOag4HAGsOaA5pDgcAaw5qDmgOBwAzDmwONQ4HADMOag5sDgcAbQ5qDmsOBwBtDmwOag4HADUObg43DgcANQ5sDm4OBwBvDmwObQ4HAG8Obg5sDgcANw5RDhgOBwA3Dm4OUQ4HAFMObg5vDgcAUw5RDm4OBwAFDnAOcQ4HAAUOAw5wDgcAQg5xDnIOBwBCDgUOcQ4HAHMOQg5yDgcAcw49DkIOBwBwDj0Ocw4HAHAOAw49DgcAdA4QDnUOBwB0DhIOEA4HAE0OdA52DgcATQ4SDnQOBwBIDnYOdw4HAEgOTQ52DgcAdQ5IDncOBwB1DhAOSA4HAHAOeA5xDgcAcA55DngOBwBxDnoOcg4HAHEOeA56DgcAeg5zDnIOBwB6DnsOcw4HAHkOcw57DgcAeQ5wDnMOBwB8DnQOdQ4HAHwOfQ50DgcAdg59Dn4OBwB2DnQOfQ4HAHYOfw53DgcAdg5+Dn8OBwB/DnUOdw4HAH8OfA51DgcAeA6ADoEOBwB4DnkOgA4HAHoOgQ6CDgcAeg54DoEOBwCDDnoOgg4HAIMOew56DgcAgA57DoMOBwCADnkOew4HAIQOfA6FDgcAhA59DnwOBwB+DoQOhg4HAH4OfQ6EDgcAfw6GDocOBwB/Dn4Ohg4HAIUOfw6HDgcAhQ58Dn8OBwCBDogOiQ4HAIEOgA6IDgcAgg6JDooOBwCCDoEOiQ4HAIsOgg6KDgcAiw6DDoIOBwCLDoAOgw4HAIsOiA6ADgcAjA6FDo0OBwCMDoQOhQ4HAIQOjg6GDgcAhA6MDo4OBwCHDo4Ojw4HAIcOhg6ODgcAjQ6HDo8OBwCNDoUOhw4HAIkOkA6RDgcAiQ6IDpAOBwCKDpEOkg4HAIoOiQ6RDgcAkw6KDpIOBwCTDosOig4HAJAOiw6TDgcAkA6IDosOBwCUDo0OlQ4HAJQOjA6NDgcAjg6UDpYOBwCODowOlA4HAI8Olg6XDgcAjw6ODpYOBwCVDo8Olw4HAJUOjQ6PDgcAkQ4+DkAOBwCRDpAOPg4HAJIOQA4/DgcAkg6RDkAOBwBBDpIOPw4HAEEOkw6SDgcAPg6TDkEOBwA+DpAOkw4HAEsOlQ5JDgcASw6UDpUOBwCWDksOSg4HAJYOlA5LDgcAlw5KDkwOBwCXDpYOSg4HAEkOlw5MDgcASQ6VDpcOBwCYDpkOmg4HAJgOmw6ZDgcAmw6cDp0OBwCbDpgOnA4HAJ4Onw6gDgcAng6hDp8OBwCfDqIOow4HAJ8OoQ6iDgcApA6dDpwOBwCkDqUOnQ4HAKYOmw6nDgcApg6ZDpsOBwCbDqUOpw4HAJsOnQ6lDgcAmA6oDqkOBwCYDpoOqA4HAKQOmA6pDgcApA6cDpgOBwCqDqUOpA4HAKoOqw6lDgcAqw6jDqIOBwCrDqoOow4HAKwOpw6tDgcArA6mDqcOBwCsDqEOng4HAKwOrQ6hDgcArQ6lDqsOBwCtDqcOpQ4HAKEOqw6iDgcAoQ6tDqsOBwCpDq4Orw4HAKkOqA6uDgcAnw6uDqAOBwCfDq8Org4HAKQOrw6qDgcApA6pDq8OBwCqDp8Oow4HAKoOrw6fDgcAsA6xDrIOBwCwDrMOsQ4HALQOsw61DgcAtA6xDrMOBwC2DrcOuA4HALYOuQ63DgcAug62DrsOBwC6DrkOtg4HALUOvA60DgcAtQ69DrwOBwCzDr4Ovw4HALMOsA6+DgcAvQ6zDr8OBwC9DrUOsw4HAMAOsQ7BDgcAwA6yDrEOBwCxDrwOwQ4HALEOtA68DgcAvQ7CDrwOBwC9DsMOwg4HALsOww66DgcAuw7CDsMOBwC/DsQOxQ4HAL8Ovg7EDgcAuQ7EDrcOBwC5DsUOxA4HAL0OxQ7DDgcAvQ6/DsUOBwDDDrkOug4HAMMOxQ65DgcAxg7BDscOBwDGDsAOwQ4HAMYOtg64DgcAxg7HDrYOBwDHDrwOwg4HAMcOwQ68DgcAtg7CDrsOBwC2DscOwg4HAMgOyQ7KDgcAyA7LDskOBwDLDswOzQ4HAMsOyA7MDgcAzg7PDtAOBwDODtEOzw4HAM8O0g7TDgcAzw7RDtIOBwDUDs0OzA4HANQO1Q7NDgcA1g7LDtcOBwDWDskOyw4HAMsO1Q7XDgcAyw7NDtUOBwDIDtgO2Q4HAMgOyg7YDgcA1A7IDtkOBwDUDswOyA4HANoO1Q7UDgcA2g7bDtUOBwDbDtMO0g4HANsO2g7TDgcA3A7XDt0OBwDcDtYO1w4HANwO0Q7ODgcA3A7dDtEOBwDdDtUO2w4HAN0O1w7VDgcA0Q7bDtIOBwDRDt0O2w4HANkO3g7fDgcA2Q7YDt4OBwDPDt4O0A4HAM8O3w7eDgcA1A7fDtoOBwDUDtkO3w4HANoOzw7TDgcA2g7fDs8OBwDgDuEO4g4HAOAO4w7hDgcA5A7jDuUOBwDkDuEO4w4HAOYO5w7oDgcA5g7pDucOBwDqDuYO6w4HAOoO6Q7mDgcA5Q7sDuQOBwDlDu0O7A4HAOMO7g7vDgcA4w7gDu4OBwDtDuMO7w4HAO0O5Q7jDgcA8A7hDvEOBwDwDuIO4Q4HAOEO7A7xDgcA4Q7kDuwOBwDtDvIO7A4HAO0O8w7yDgcA6w7zDuoOBwDrDvIO8w4HAO8O9A71DgcA7w7uDvQOBwDpDvQO5w4HAOkO9Q70DgcA7Q71DvMOBwDtDu8O9Q4HAPMO6Q7qDgcA8w71DukOBwD2DvEO9w4HAPYO8A7xDgcA9g7mDugOBwD2DvcO5g4HAPcO7A7yDgcA9w7xDuwOBwDmDvIO6w4HAOYO9w7yDgcA+A75DvoOBwD4DvsO+Q4HAPkO/A79DgcA+Q77DvwOBwD9Dv4O/w4HAP0O/A7+DgcA/w4ADwEPBwD/Dv4OAA8HAAEPAg8DDwcAAQ8ADwIPBwADDwQPBQ8HAAMPAg8EDwcABQ8GDwcPBwAFDwQPBg8HAAYPCA8HDwcABg8JDwgPBwAJDwoPCA8HAAkPCw8KDwcACw8MDwoPBwALDw0PDA8HAA0PDg8MDwcADQ8PDw4PBwAPD/oODg8HAA8P+A76DgcAEA/7DvgOBwAQDxEP+w4HAPsOEg/8DgcA+w4RDxIPBwD8DhMP/g4HAPwOEg8TDwcA/g4UDwAPBwD+DhMPFA8HAAAPFQ8CDwcAAA8UDxUPBwACDxYPBA8HAAIPFQ8WDwcABA8XDwYPBwAEDxYPFw8HABcPCQ8GDwcAFw8YDwkPBwAYDwsPCQ8HABgPGQ8LDwcAGQ8NDwsPBwAZDxoPDQ8HABoPDw8NDwcAGg8bDw8PBwAbD/gODw8HABsPEA/4DgcAHA8QDx0PBwAcDxEPEA8HABIPHA8eDwcAEg8RDxwPBwATDx4PHw8HABMPEg8eDwcAEw8gDxQPBwATDx8PIA8HABQPIQ8VDwcAFA8gDyEPBwAVDyIPFg8HABUPIQ8iDwcAFg8jDxcPBwAWDyIPIw8HACMPGA8XDwcAIw8kDxgPBwAkDxkPGA8HACQPJQ8ZDwcAJQ8aDxkPBwAlDyYPGg8HACcPGg8mDwcAJw8bDxoPBwAdDxsPJw8HAB0PEA8bDwcAKA8dDykPBwAoDxwPHQ8HAB4PKA8qDwcAHg8cDygPBwAfDyoPKw8HAB8PHg8qDwcAIA8rDywPBwAgDx8PKw8HACEPLA8tDwcAIQ8gDywPBwAiDy0PLg8HACIPIQ8tDwcAIw8uDy8PBwAjDyIPLg8HADAPIw8vDwcAMA8kDyMPBwAxDyQPMA8HADEPJQ8kDwcAMg8lDzEPBwAyDyYPJQ8HADMPJg8yDwcAMw8nDyYPBwApDycPMw8HACkPHQ8nDwcANA8pDzUPBwA0DygPKQ8HACoPNA82DwcAKg8oDzQPBwArDzYPNw8HACsPKg82DwcALA83DzgPBwAsDysPNw8HACwPOQ8tDwcALA84DzkPBwAtDzoPLg8HAC0POQ86DwcALg87Dy8PBwAuDzoPOw8HADsPMA8vDwcAOw88DzAPBwA8DzEPMA8HADwPPQ8xDwcAPQ8yDzEPBwA9Dz4PMg8HAD8PMg8+DwcAPw8zDzIPBwA1DzMPPw8HADUPKQ8zDwcAQA81D0EPBwBADzQPNQ8HADYPQA9CDwcANg80D0APBwA3D0IPQw8HADcPNg9CDwcAOA9DD0QPBwA4DzcPQw8HADkPRA9FDwcAOQ84D0QPBwA6D0UPRg8HADoPOQ9FDwcAOw9GD0cPBwA7DzoPRg8HAEgPOw9HDwcASA88DzsPBwBJDzwPSA8HAEkPPQ88DwcASg89D0kPBwBKDz4PPQ8HAEsPPg9KDwcASw8/Dz4PBwBBDz8PSw8HAEEPNQ8/DwcATA9ND04PBwBMD08PTQ8HAFAPTA9RDwcAUA9PD0wPBwBSD1EPUw8HAFIPUA9RDwcAVA9TD1UPBwBUD1IPUw8HAFYPVQ9XDwcAVg9UD1UPBwBYD1cPWQ8HAFgPVg9XDwcAWg9ZD1sPBwBaD1gPWQ8HAFwPWg9bDwcAXA9dD1oPBwBeD10PXA8HAF4PXw9dDwcAYA9fD14PBwBgD2EPXw8HAGIPYQ9gDwcAYg9jD2EPBwBOD2MPYg8HAE4PTQ9jDwcATw9kD00PBwBPD2UPZA8HAGYPTw9QDwcAZg9lD08PBwBnD1APUg8HAGcPZg9QDwcAaA9SD1QPBwBoD2cPUg8HAGkPVA9WDwcAaQ9oD1QPBwBqD1YPWA8HAGoPaQ9WDwcAaw9YD1oPBwBrD2oPWA8HAF0Paw9aDwcAXQ9sD2sPBwBfD2wPXQ8HAF8PbQ9sDwcAYQ9tD18PBwBhD24PbQ8HAGMPbg9hDwcAYw9vD24PBwBND28PYw8HAE0PZA9vDwcAZA9wD3EPBwBkD2UPcA8HAHAPZg9yDwcAcA9lD2YPBwByD2cPcw8HAHIPZg9nDwcAdA9nD2gPBwB0D3MPZw8HAHUPaA9pDwcAdQ90D2gPBwB2D2kPag8HAHYPdQ9pDwcAdw9qD2sPBwB3D3YPag8HAGwPdw9rDwcAbA94D3cPBwBtD3gPbA8HAG0PeQ94DwcAbg95D20PBwBuD3oPeQ8HAG4Pew96DwcAbg9vD3sPBwBvD3EPew8HAG8PZA9xDwcAcQ98D30PBwBxD3APfA8HAHwPcg9+DwcAfA9wD3IPBwB+D3MPfw8HAH4Pcg9zDwcAfw90D4APBwB/D3MPdA8HAIAPdQ+BDwcAgA90D3UPBwCBD3YPgg8HAIEPdQ92DwcAgg93D4MPBwCCD3YPdw8HAHcPhA+DDwcAdw94D4QPBwB4D4UPhA8HAHgPeQ+FDwcAeQ+GD4UPBwB5D3oPhg8HAHoPhw+GDwcAeg97D4cPBwB7D30Phw8HAHsPcQ99DwcAfQ+ID4kPBwB9D3wPiA8HAIgPfg+KDwcAiA98D34PBwCKD38Piw8HAIoPfg9/DwcAiw+AD4wPBwCLD38PgA8HAI0PgA+BDwcAjQ+MD4APBwCOD4EPgg8HAI4PjQ+BDwcAjw+CD4MPBwCPD44Pgg8HAIQPjw+DDwcAhA+QD48PBwCFD5APhA8HAIUPkQ+QDwcAhg+RD4UPBwCGD5IPkQ8HAIYPkw+SDwcAhg+HD5MPBwCHD4kPkw8HAIcPfQ+JDwcAiQ+UD5UPBwCJD4gPlA8HAJQPig+WDwcAlA+ID4oPBwCWD4sPlw8HAJYPig+LDwcAlw+MD5gPBwCXD4sPjA8HAJgPjQ+ZDwcAmA+MD40PBwCZD44P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nwUHAJ4FMQUyBQcAOgA3ABoABwA6ADgANwAHAD0AOAA6AAcAPQA7ADgABwDQALQAswAHANAA0QC0AAcA0AA7AD0ABwDQAM8AOwAHADBBlDwAAHJhdjQtaW5zaWRlAEAeAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AQACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wMABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BAAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8FAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wYABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQeuB68HsAexB7IHswe0B7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfzB/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/BwAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCQIJQgmCCcIKAgpCCoIKwgsCC0ILggvCDAIMQgyCDMINAg1CDYINwg4CDkIOgg7CDwIPQg+CD8IQAhBCEIIQwhECEUIRghHCEgISQhKCEsITAhNCE4ITwhQCFEIUghTCFQIVQhWCFcIWAhZCFoIWwhcCF0IXghfCGAIYQhiCGMIZAhlCGYIZwhoCGkIaghrCGwIbQhuCG8IcAhxCHIIcwh0CHUIdgh3CHgIeQh6CHsIfAh9CH4IfwiACIEIggiDCIQIhQiGCIcIiAiJCIoIiwiMCI0IjgiPCJAIkQiSCJMIlAiVCJYIlwiYCJkImgibCJwInQieCJ8IoAihCKIIowikCKUIpginCKgIqQiqCKsIrAitCK4IrwiwCLEIsgizCLQItQi2CLcIuAi5CLoIuwi8CL0Ivgi/CMAIwQjCCMMIxAjFCMYIxwjICMkIygjLCMwIzQjOCM8I0AjRCNII0wjUCNUI1gjXCNgI2QjaCNsI3AjdCN4I3wjgCOEI4gjjCOQI5QjmCOcI6AjpCOoI6wjsCO0I7gjvCPAI8QjyCPMI9Aj1CPYI9wj4CPkI+gj7CPwI/Qj+CP8IAAkBCQIJAwkECQUJBgkHCQgJCQkKCQsJDAkNCQ4JDwkQCREJEgkTCRQJFQkWCRcJGAkZCRoJGwkcCR0JHgkfCSAJIQkiCSMJJAklCSYJJwkoCSkJKgkrCSwJLQkuCS8JMAkxCTIJMwk0CTUJNgk3CTgJOQk6CTsJPAk9CT4JPwlACUEJQglDCUQJRQlGCUcJSAlJCUoJSwlMCU0JTglPCVAJUQlSCVMJVAlVCVYJVwlYCVkJWglbCVwJXQleCV8JYAlhCWIJYwlkCWUJZglnCWgJaQlqCWsJbAltCW4JbwlwCXEJcglzCXQJdQl2CXcJeAl5CXoJewl8CX0Jfgl/CYAJgQmCCYMJhAmFCYYJhwmICYkJigmLCYwJjQmOCY8JkAmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCZ4JnwmgCaEJogmjCaQJpQmmCacJqAmpCaoJqwmsCa0JrgmvCbAJsQmyCbMJtAm1CbYJtwm4CbkJugm7CbwJvQm+Cb8JwAnBCcIJwwnECcUJxgnHCcgJyQnKCcsJzAnNCc4JzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J3gnfCeAJ4QniCeMJ5AnlCeYJ5wnoCekJ6gnrCewJ7QnuCe8J8AnxCfIJ8wn0CfUJ9gn3CfgJ+Qn6CfsJ/An9Cf4J/wkACgEKAgoDCgQKBQoGCgcKCAoJCgoKCwoMCg0KDgoPChAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoeCh8KIAohCiIKIwokCiUKJgonCigKKQoqCisKLAotCi4KLwowCjEKMgozCjQKNQo2CjcKOAo5CjoKOwo8Cj0KPgo/CkAKQQpCCkMKRApFCkYKRwpICkkKSgpLCkwKTQpOCk8KUApRClIKUwpUClUKVgpXClgKWQpaClsKXApdCl4KXwpgCmEKYgpjCmQKZQpmCmcKaAppCmoKawpsCm0KbgpvCnAKcQpyCnMKdAp1CnYKdwp4CnkKegp7CnwKfQp+Cn8KgAqBCoIKgwqECoUKhgqHCogKiQqKCosKjAqNCo4KjwqQCpEKkgqTCpQKlQqWCpcKmAqZCpoKmwqcCp0KngqfCqAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KsAqxCrIKswq0CrUKtgq3CrgKuQq6CrsKvAq9Cr4KvwrACsEKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrPCtAK0QrSCtMK1ArVCtYK1wrYCtkK2grbCtwK3QreCt8K4ArhCuIK4wrkCuUK5grnCugK6QrqCusK7ArtCu4K7wrwCvEK8grzCvQK9Qr2CvcK+Ar5CvoK+wr8Cv0K/gr/CgALAQsCCwMLBAsFCwYLBwsICwkLCgsLCwwLDQsOCw8LEAsRCxILEwsUCxULFgsXCxgLGQsaCxsLHAsdCx4LHwsgCyELIgsjCyQLJQsmCycLKAspCyoLKwssCy0LLgsvCzALMQsyCzMLNAs1CzYLNws4CzkLOgs7CzwLPQs+Cz8LQAtBC0ILQwtEC0ULRgtHC0gLSQtKC0sLTAtNC04LTwtQC1ELUgtTC1QLVQtWC1cLWAtZC1oLWwtcC10LXgtfC2ALYQtiC2MLZAtlC2YLZwtoC2kLagtrC2wLbQtuC28LcAtxC3ILcwt0C3ULdgt3C3gLeQt6C3sLfAt9C34LfwuAC4ELgguDC4QLhQuGC4cLiAuJC4oLiwuMC40LjguPC5ALkQuSC5MLlAuVC5YLlwuYC5kLmgubC5wLnQueC58LoAuhC6ILowukC6ULpgunC6gLqQuqC6sLrAutC64LrwuwC7ELsguzC7QLtQu2C7cLuAu5C7oLuwu8C70Lvgu/C8ALwQvCC8MLxAvFC8YLxwvIC8kLygvLC8wLzQvOC88L0AvRC9IL0wvUC9UL1gvXC9gL2QvaC9sL3AvdC94L3wvgC+EL4gvjC+QL5QvmC+cL6AvpC+oL6wvsC+0L7gvvC/AL8QvyC/ML9Av1C/YL9wv4C/kL+gv7C/wL/Qv+C/8LAAwBDAIMAwwEDAUMBgwHDAgMCQwKDAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwlDCYMJwwoDCkMKgwrDCwMLQwuDC8MMAwxDDIMMww0DDUMNgw3DDgMOQw6DDsMPAw9DD4MPwxADEEMQgxDDEQMRQxGDEcMSAxJDEoMSwxMDE0MTgxPDFAMUQxSDFMMVAxVDFYMVwxYDFkMWgxbDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxnDGgMaQxqDGsMbAxtDG4MbwxwDHEMcgxzDHQMdQx2DHcMeAx5DHoMewx8DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyRDJIMkwyUDJUMlgyXDJgMmQyaDJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0MrgyvDLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MwAzBDMIMwwzEDMUMxgzHDMgMyQzKDMsMzAzNDM4MzwzQDNEM0gzTDNQM1QzWDNcM2AzZDNoM2wzcDN0M3gzfDOAM4QziDOMM5AzlDOYM5wzoDOkM6gzrDOwM7QzuDO8M8AzxDPIM8wz0DPUM9gz3DPgM+Qz6DPsM/Az9DP4M/wwADQENAg0DDQQNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0tDS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDUwNTQ1ODU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1pDWoNaw1sDW0Nbg1vDXANcQ1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NgA2BDYINgw2EDYUNhg2HDYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw3ADcENwg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDdwN3Q3eDd8N4A3hDeIN4w3kDeUN5g3nDegN6Q3qDesN7A3tDe4N7w3wDfEN8g3zDfQN9Q32DfcN+A35DfoN+w38Df0N/g3/DQAOAQ4CDgMOBA4FDgYOBw4IDgkOCg4LDgwODQ4ODg8OEA4RDhIOEw4UDhUOFg4XDhgOGQ4aDhsOHA4dDh4OHw4gDiEOIg4jDiQOJQ4mDicOKA4pDioOKw4sDi0OLg4vDjAOMQ4yDjMONA41DjYONw44DjkOOg47DjwOPQ4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcOWA5ZDloOWw5cDl0OXg5fDmAOYQ5iDmMOZA5lDmYOZw5oDmkOag5rDmwObQ5uDm8OcA5xDnIOcw50DnUOdg53DngOeQ56DnsOfA59Dn4Ofw6ADoEOgg6DDoQOhQ6GDocOiA6JDooOiw6MDo0Ojg6PDpAOkQ6SDpMOlA6VDpYOlw6YDpkOmg6bDpwOnQ6eDp8OoA6hDqIOow6kDqUOpg6nDqgOqQ6qDqsOrA6tDq4Orw6wDrEOsg6zDrQOtQ62DrcOuA65DroOuw68Dr0Ovg6/DsAOwQ7CDsMOxA7FDsYOxw7IDskOyg7LDswOzQ7ODs8O0A7RDtIO0w7UDtUO1g7XDtgO2Q7aDtsO3A7dDt4O3w7gDuEO4g7jDuQO5Q7mDucO6A7pDuoO6w7sDu0O7g7vDvAO8Q7yDvMO9A71DvYO9w74DvkO+g77DvwO/Q7+Dv8OAA8BDwIPAw8EDwUPBg8HDwgPCQ8KDwsPDA8NDw4PDw8QDxEPEg8TDxQPFQ8WDxcPGA8ZDxoPGw8cDx0PHg8fDyAPIQ8iDyMPJA8lDyYPJw8oDykPKg8rDywPLQ8uDy8PMA8xDzIPMw80DzUPNg83DzgPOQ86DzsPPA89Dz4PPw9AD0EPQg9DD0QPRQ9GD0cPSA9JD0oPSw9MD00PTg9PD1APUQ9SD1MPVA9VD1YPVw9YD1kPWg9bD1wPXQ9eD18PYA9hD2IPYw9kD2UPZg9nD2gPaQ9qD2sPbA9tD24Pbw9wD3EPcg9zD3QPdQ92D3cPeA95D3oPew98D30Pfg9/D4APgQ+CD4MPhA+FD4YPhw+ID4kPig+LD4wPjQ+OD48PkA+RD5IPkw+UD5UPlg+XD5gPmQ+aD5sPnA+dD54Pnw+gD6EP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6BTpFOoU6xTsFO0U7hTvFPAU8RTyFPMU9BT1FPYU9xT4FPkU+hT7FPwU/RT+FP8UABUBFQIVAxUEFQUVBhUHFQgVCRUKFQsVDBUNFQ4VDxUQFREVEhUTFRQVFRUWFRcVGBUZFRoVGxUcFR0VHhUfFSAVIRUiFSMVJBUlFSYVJxUoFSkVKhUrFSwVLRUuFS8VMBUxFTIVMxU0FTUVNhU3FTgVORU6FTsVPBU9FT4VPxVAFUEVQhVDFUQVRRVGFUcVSBVJFUoVSxVMFU0VThVPFVAVURVSFVMVVBVVFVYVVxVYFVkVWhVbFVwVXRVeFV8VYBVhFWIVYxVkFWUVZhVnFWgVaRVqFWsVbBVtFW4VbxVwFXEVchVzFXQVdRV2FXcVeBV5FXoVexV8FX0VfhV/FYAVgRWCFYMVhBWFFYYVhxWIFYkVihWLFYwVjRWOFY8VkBWRFZIVkxWUFZUVlhWXFZgVmRWaFZsVnBWdFZ4VnxWgFaEVohWjFaQVpRWmFacVqBWpFaoVqxWsFa0VrhWvFbAVsRWyFbMVtBW1FbYVtxW4FbkVuhW7FbwVvRW+Fb8VwBXBFcIVwxXEFcUVxhXHFcgVyRXKFcsVzBXNFc4VzxXQFdEV0hXTFdQV1RXWFdcV2BXZFdoV2xXcFd0V3hXfFeAV4RXiFeMV5BXlFeYV5xXoFekV6hXrFewV7RXuFe8V8BXxFfIV8xX0FfUV9hX3FfgV+RX6FfsV/BX9Ff4V/xUAFgEWAhYDFgQWBRYGFgcWCBYJFgoWCxYMFg0WDhYPFhAWERYSFhMWFBYVFhYWFxYYFhkWGhYbFhwWHRYeFh8WIBYhFiIWIxYkFiUWJhYnFigWKRYqFisWLBYtFi4WLxYwFjEWMhYzFjQWNRY2FjcWOBY5FjoWOxY8Fj0WPhY/FkAWQRZCFkMWRBZFFkYWRxZIFkkWShZLFkwWTRZOFk8WUBZRFlIWUxZUFlUWVhZXFlgWWRZaFlsWXBZdFl4WXxZgFmEWYhZjFmQWZRZmFmcWaBZpFmoWaxZsFm0WbhZvFnAWcRZyFnMWdBZ1FnYWdxZ4FnkWehZ7FnwWfRZ+Fn8WgBaBFoIWgxaEFoUWhhaHFogWiRaKFosWjBaNFo4WjxaQFpEWkhaTFpQWlRaWFpcWmBaZFpoWmxacFp0WnhafFqAWoRaiFqMWpBalFqYWpxaoFqkWqharFqwWrRauFq8WsBaxFrIWsxa0FrUWtha3FrgWuRa6FrsWvBa9Fr4WvxbAFsEWwhbDFsQWxRbGFscWyBbJFsoWyxbMFs0WzhbPFtAW0RbSFtMW1BbVFtYW1xbYFtkW2hbbFtwW3RbeFt8W4BbhFuIW4xbkFuUW5hbnFugW6RbqFusW7BbtFu4W7xbwFvEW8hbzFvQW9Rb2FvcW+Bb5FvoW+xb8Fv0W/hb/FgAXARcCFwMXBBcFFwYXBxcIFwkXChcLFwwXDRcOFw8XEBcRFxIXExcUFxUXFhcXFxgXGRcaFxsXHBcdFx4XHxcgFyEXIhcjFyQXJRcmFycXKBcpFyoXKxcsFy0XLhcvFzAXMRcyFzMXNBc1FzYXNxc4FzkXOhc7FzwXPRc+Fz8XQBdBF0IXQxdEF0UXRhdHF0gXSRdKF0sXTBdNF04XTxdQF1EXUhdTF1QXVRdWF1cXWBdZF1oXWxdcF10XXhdfF2AXYRdiF2MXZBdlF2YXZxdoF2kXahdrF2wXbRduF28XcBdxF3IXcxd0F3UXdhd3F3gXeRd6F3sXfBd9F34XfxeAF4EXgheDF4QXhReGF4cXiBeJF4oXixeMF40XjhePF5AXkReSF5MXlBeVF5YXlxeYF5kXmhebF5wXnReeF58XoBehF6IXoxekF6UXphenF6gXqReqF6sXrBetF64XrxewF7EXshezF7QXtRe2F7cXuBe5F7oXuxe8F70Xvhe/F8AXwRfCF8MXxBfFF8YXxxfIF8kXyhfLF8wXzRfOF88X0BfRF9IX0xfUF9UX1hfXF9gX2RfaF9sX3BfdF94X3xfgF+EX4hfjF+QX5RfmF+cX6BfpF+oX6xfsF+0X7hfvF/AX8RfyF/MX9Bf1F/YX9xf4F/kX+hf7F/wX/Rf+F/8XABgBGAIYAxgEGAUYBhgHGAgYCRgKGAsYDBgNGA4YDxgQGBEYEhgTGBQYFRgWGBcYGBgZGBoYGxgcGB0YHhgfGCAYIRgiGCMYJBglGCYYJxgoGCkYKhgrGCwYLRguGC8YMBgxGDIYMxg0GDUYNhg3GDgYORg6GDsYPBg9GD4YPxhAGEEYQhhDGEQYRRhGGEcYSBhJGEoYSxhMGE0YThhPGFAYURhSGFMYVBhVGFYYVxhYGFkYWhhbGFwYXRheGF8YYBhhGGIYYxhkGGUYZhhnGGgYaRhqGGsYbBhtGG4YbxhwGHEYchhzGHQYdRh2GHcYeBh5GHoYexh8GH0Yfhh/GIAYgRiCGIMYhBiFGIYYhxiIGIkYihiLGIwYjRiOGI8YkBiRGJIYkxiUGJUYlhiXGJgYmRiaGJsYnBidGJ4YnxigGKEYohijGKQYpRimGKcYqBipGKoYqxisGK0YrhivGLAYsRiyGLMYtBi1GLYYtxi4GLkYuhi7GLwYvRi+GL8YwBjBGMIYwxjEGMUYxhjHGMgYyRjKGMsYzBjNGM4YzxjQGNEY0hjTGNQY1RjWGNcY2BjZGNoY2xjcGN0Y3hjfGOAY4RjiGOMY5BjlGOYY5xjoGOkY6hjrGOwY7RjuGO8Y8BjxGPIY8xj0GPUY9hj3GPgY+Rj6GPsY/Bj9GP4Y/xgAGQEZAhkDGQQZBRkGGQcZCBkJGQoZCxkMGQ0ZDhkPGRAZERkSGRMZFBkVGRYZFxkYGRkZGhkbGRwZHRkeGR8ZIBkhGSIZIxkkGSUZJhknGSgZKRkqGSsZLBktGS4ZLxkwGTEZMhkzGTQZNRk2GTcZOBk5GToZOxk8GT0ZPhk/GUAZQRlCGUMZRBlFGUYZRxlIGUkZShlLGUwZTRlOGU8ZUBlRGVIZUxlUGVUZVhlXGVgZWRlaGVsZXBldGV4ZXxlgGWEZYhljGWQZZRlmGWcZaBlpGWoZaxlsGW0ZbhlvGXAZcRlyGXMZdBl1GXYZdxl4GXkZehl7GXwZfRl+GX8ZgBmBGYIZgxmEGYUZhhmHGYgZiRmKGYsZjBmNGY4ZjxmQGZEZkhmTGZQZlRmWGZcZmBmZGZoZmxmcGZ0ZnhmfGaAZoRmiGaMZpBmlGaYZpxmoGakZqhmrGawZrRmuGa8ZsBmxGbIZsxm0GbUZthm3GbgZuRm6GbsZvBm9Gb4ZvxnAGcEZwhnDGcQZxRnGGccZyBnJGcoZyxnMGc0ZzhnPGdAZ0RnSGdMZ1BnVGdYZ1xnYGdkZ2hnbGdwZ3RneGd8Z4BnhGeIZ4xnkGeUZ5hnnGegZ6RnqGesZ7BntGe4Z7xnwGfEZ8hnzGfQZ9Rn2GfcZ+Bn5GfoZ+xn8Gf0Z/hn/GQAaARoCGgMaBBoFGgYaBxoIGgkaChoLGgwaDRoOGg8aEBoRGhIaExoUGhUaFhoXGhgaGRoaGhsaHBodGh4aHxogGiEaIhojGiQaJRomGicaKBopGioaKxosGi0aLhovGjAaMRoyGjMaNBo1GjYaNxo4GjkaOho7GjwaPRo+Gj8aQBpBGkIaQxpEGkUaRhpHGkgaSRpKGksaTBpNGk4aTxpQGlEaUhpTGlQaVRpWGlcaWBpZGloaWxpcGl0aXhpfGmAaYRpiGmMaZBplGmYaZxpoGmkaahprGmwabRpuGm8acBpxGnIacxp0GnUadhp3GngaeRp6GnsafBp9Gn4afxqAGoEaghqDGoQahRqGGocaiBqJGooaixqMGo0ajhqPGpAakRqSGpMalBqVGpYalxqYGpkamhqbGpwanRqeGp8aoBqhGqIaoxqkGqUaphqnGqgaqRqqGqsarBqtGq4arxqwGrEashqzGrQatRq2GrcauBq5Groauxq8Gr0avhq/GsAawRrCGsMaxBrFGsYaxxrIGskayhrLGswazRrOGs8a0BrRGtIa0xrUGtUa1hrXGtga2RraGtsa3BrdGt4a3xrgGuEa4hrjGuQa5RrmGuca6BrpGuoa6xrsGu0a7hrvGvAa8RryGvMa9Br1GvYa9xr4Gvka+hr7Gvwa/Rr+Gv8aABsBGwIbAxsEGwUbBhsHGwgbCRsKGwsbDBsNGw4bDxsQGxEbEhsTGxQbFRsWGxcbGBsZGxobGxscGx0bHhsfGyAbIRsiGyMbJBslGyYbJxsoGykbKhsrGywbLRsuGy8bMBsxGzIbMxs0GzUbNhs3GzgbORs6GzsbPBs9Gz4bPxtAG0EbQhtDG0QbRRtGG0cbSBtJG0obSxtMG00bThtPG1AbURtSG1MbVBtVG1YbVxtYG1kbWhtbG1wbXRteG18bYBthG2IbYxtkG2UbZhtnG2gbaRtqG2sbbBttG24bbxtwG3EbchtzG3QbdRt2G3cbeBt5G3obext8G30bfht/G4AbgRuCG4MbhBuFG4YbhxuIG4kbihuLG4wbjRuOG48bkBuRG5IbkxuUG5UblhuXG5gbmRuaG5sbnBudG54bnxugG6EbohujG6QbpRumG6cbqBupG6obqxusG60brhuvG7AbsRuyG7MbtBu1G7Ybtxu4G7kbuhu7G7wbvRu+G78bwBvBG8IbwxvEG8UbxhvHG8gbyRvKG8sbzBvNG84bzxvQG9Eb0hvTG9Qb1RvWG9cb2BvZG9ob2xvcG90b3hvfG+Ab4RviG+Mb5BvlG+Yb5xvoG+kb6hvrG+wb7RvuG+8b8BvxG/Ib8xv0G/Ub9hv3G/gb+Rv6G/sb/Bv9G/4b/xsAHAEcAhwDHAQcBRwGHAccCBwJHAocCxwMHA0cDhwPHBAcERwSHBMcFBwVHBYcFxwYHBkcGhwbHBwcHRweHB8cIBwhHCIcIxwkHCUcJhwnHCgcKRwqHCscLBwtHC4cLxwwHDEcMhwzHDQcNRw2HDccOBw5HDocOxw8HD0cPhw/HEAcQRxCHEMcRBxFHEYcRxxIHEkcShxLHEwcTRxOHE8cUBxRHFIcUxxUHFUcVhxXHFgcWRxaHFscXBxdHF4cXxxgHGEcYhxjHGQcZRxmHGccaBxpHGocaxxsHG0cbhxvHHAccRxyHHMcdBx1HHYcdxx4HHkcehx7HHwcfRx+HH8cgByBHIIcgxyEHIUchhyHHIgciRyKHIscjByNHI4cjxyQHJEckhyTHJQclRyWHJccmByZHJocmxycHJ0cnhyfHKAcoRyiHKMcpBylHKYcpxyoHKkcqhyrHKwcrRyuHK8csByxHLIcsxy0HLUcthy3HLgcuRy6HLscvBy9HL4cvxzAHMEcwhzDHMQcxRzGHMccyBzJHMocyxzMHM0czhzPHNAc0RzSHNMc1BzVHNYc1xzYHNkc2hzbHNwc3RzeHN8c4BzhHOIc4xzkHOUc5hznHOgc6RzqHOsc7BztHO4c7xzwHPEc8hzzHPQc9Rz2HPcc+Bz5HPoc+xz8HP0c/hz/HAAdAR0CHQMdBB0FHQYdBx0IHQkdCh0LHQwdDR0OHQ8dEB0RHRIdEx0UHRUdFh0XHRgdGR0aHRsdHB0dHR4dHx0gHSEdIh0jHSQdJR0mHScdKB0pHSodKx0sHS0dLh0vHTAdMR0yHTMdNB01HTYdNx04HTkdOh07HTwdPR0+HT8dQB1BHUIdQx1EHUUdRh1HHUgdSR1KHUsdTB1NHU4dTx1QHVEdUh1THVQdVR1WHVcdWB1ZHVodWx1cHV0dXh1fHWAdYR1iHWMdZB1lHWYdZx1oHWkdah1rHWwdbR1uHW8dcB1xHXIdcx10HXUddh13HXgdeR16HXsdfB19HX4dfx2AHYEdgh2DHYQdhR2GHYcdiB2JHYodix2MHY0djh2PHZAdkR2SHZMdlB2VHZYdlx2YHZkdmh2bHZwdnR2eHZ8doB2hHaIdox2kHaUdph2nHagdqR2qHasdrB2tHa4drx2wHbEdsh2zHbQdtR22HbcduB25Hbodux28Hb0dvh2/HcAdwR3CHcMdxB3FHcYdxx3IHckdyh3LHcwdzR3OHc8d0B3RHdId0x3UHdUd1h3XHdgd2R3aHdsd3B3dHd4d3x3gHeEd4h3jHeQd5R3mHecd6B3pHeod6x3sHe0d7h3vHfAd8R3yHfMd9B31HfYd9x34Hfkd+h37Hfwd/R3+Hf8dAB4BHgIeAx4EHgUeBh4HHggeCR4KHgseDB4NHg4eDx4QHhEeEh4THhQeFR4WHhceGB4ZHhoeGx4cHh0eHh4fHiAeIR4iHiMeJB4lHiYeJx4oHikeKh4rHiweLR4uHi8eMB4xHjIeMx40HjUeNh43HjgeOR46HjsePB49Hj4ePx5QQQZ5AAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA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BwAwAD8AQAAHADAAQABBAAcAMABBAEIABwAwAEIAQwAHADAAQwBEAAcAMABEAEUABwAwAEUARgAHADAARgBHAAcASABJAEoABwBIAEoASwAHAEgASwBMAAcASABMAE0ABwBIAE0ATgAHAEgATgBPAAcASABPAFAABwBIAFAAUQAHAEgAUQBSAAcASABSAFMABwBIAFMAVAAHAEgAVABVAAcASABVAFYABwBIAFYAVwAHAEgAVwBYAAcASABYAFkABwBIAFkAWgAHAEgAWgBbAAcASABbAFwABwBIAFwAXQAHAEgAXQBeAAcASABeAF8ABwBgAGEAYgAHAGAAYgBjAAcAYABjAGQABwBgAGQAZQAHAGAAZQBmAAcAYABmAGcABwBgAGcAaAAHAGAAaABpAAcAYABpAGoABwBgAGoAawAHAGAAawBsAAcAYABsAG0ABwBgAG0AbgAHAGAAbgBvAAcAYABvAHAABwBgAHAAcQAHAGAAcQByAAcAYAByAHMABwBgAHMAdAAHAGAAdAB1AAcAYAB1AHYABwBgAHYAdwAHAHgAeQB6AAcAeAB6AHsABwB4AHsAfAAHAHgAfAB9AAcAeAB9AH4ABwB4AH4AfwAHAHgAfwCAAAcAeACAAIEABwB4AIEAggAHAHgAggCDAAcAeACDAIQABwB4AIQAhQAHAHgAhQCGAAcAeACGAIcABwB4AIcAiAAHAHgAiACJAAcAeACJAIoABwB4AIoAiwAHAHgAiwCMAAcAeACMAI0ABwB4AI0AjgAHAHgAjgCPAAcAkACRAJIABwCQAJIAkwAHAJAAkwCUAAcAkACUAJUABwCQAJUAlgAHAJAAlgCXAAcAkACXAJgABwCQAJgAmQAHAJAAmQCaAAcAkACaAJsABwCQAJsAnAAHAJAAnACdAAcAkACdAJ4ABwCQAJ4AnwAHAJAAnwCgAAcAkACgAKEABwCQAKEAogAHAJAAogCjAAcAkACjAKQABwCQAKQApQAHAJAApQCmAAcAkACmAKcABwCoAKkAqgAHAKgAqgCrAAcAqACrAKwABwCoAKwArQAHAKgArQCuAAcAqACuAK8ABwCoAK8AsAAHAKgAsACxAAcAqACxALIABwCoALIAswAHAKgAswC0AAcAqAC0ALUABwCoALUAtgAHAKgAtgC3AAcAqAC3ALgABwCoALgAuQAHAKgAuQC6AAcAqAC6ALsABwCoALsAvAAHAKgAvAC9AAcAqAC9AL4ABwCoAL4AvwAHAMAAwQDCAAcAwADCAMMABwDAAMMAxAAHAMAAxADFAAcAwADFAMYABwDAAMYAxwAHAMAAxwDIAAcAwADIAMkABwDAAMkAygAHAMAAygDLAAcAwADLAMwABwDAAMwAzQAHAMAAzQDOAAcAwADOAM8ABwDAAM8A0AAHAMAA0ADRAAcAwADRANIABwDAANIA0wAHAMAA0wDUAAcAwADUANUABwDAANUA1gAHAMAA1gDXAAcA2ADZANoABwDYANoA2wAHANgA2wDcAAcA2ADcAN0ABwDYAN0A3gAHANgA3gDfAAcA2ADfAOAABwDYAOAA4QAHANgA4QDiAAcA2ADiAOMABwDYAOMA5AAHANgA5ADlAAcA2ADlAOYABwDYAOYA5wAHANgA5wDoAAcA2ADoAOkABwDYAOkA6gAHANgA6gDrAAcA2ADrAOwABwDYAOwA7QAHANgA7QDuAAcA2ADuAO8ABwDwAPEA8gAHAPAA8gDzAAcA8ADzAPQABwDwAPQA9QAHAPAA9QD2AAcA8AD2APcABwDwAPcA+AAHAPAA+AD5AAcA8AD5APoABwDwAPoA+wAHAPAA+wD8AAcA8AD8AP0ABwDwAP0A/gAHAPAA/gD/AAcA8AD/AAABBwDwAAABAQEHAPAAAQECAQcA8AACAQMBBwDwAAMBBAEHAPAABAEFAQcA8AAFAQYBBwDwAAYBBwEHAAgBCQEKAQcACAEKAQsBBwAIAQsBDAEHAAgBDAENAQcACAENAQ4BBwAIAQ4BDwEHAAgBDwEQAQcACAEQAREBBwAIAREBEgEHAAgBEgETAQcACAETARQBBwAIARQBFQEHAAgBFQEWAQcACAEWARcBBwAIARcBGAEHAAgBGAEZAQcACAEZARoBBwAIARoBGwEHAAgBGwEcAQcACAEcAR0BBwAIAR0BHgEHAAgBHgEfAQcAIAEhASIBBwAiASMBIAEHACEBJAElAQcAJQEiASEBBwAkASYBJwEHACcBJQEkAQcAIgEoASkBBwApASMBIgEHACoBKwEsAQcALAEtASoBBwAnAS4BLwEHAC8BJQEnAQcAJgEwAS4BBwAuAScBJgEHADEBMAEmAQcAJgEkATEBBwAyATMBNAEHADQBNQEyAQcANgE3ASEBBwAhASABNgEHACkBNgEgAQcAIAEjASkBBwAoATcBNgEHADYBKQEoAQcALwExATcBBwA3ASgBLwEHAC4BMAExAQcAMQEvAS4BBwAhATgBOQEHADkBJAEhAQcAJAE5AToBBwA6ATEBJAEHADEBOgE7AQcAOwE3ATEBBwA3ATsBOAEHADgBIQE3AQcAIgE8AT0BBwA9ASgBIgEHACgBPQE+AQcAPgEvASgBBwAvAT4BPwEHAD8BJQEvAQcAJQE/ATwBBwA8ASIBJQEHACwBQAFBAQcAQQEtASwBBwArAUIBQAEHAEABLAErAQcAKgFDAUIBBwBCASsBKgEHAC0BQQFDAQcAQwEqAS0BBwBEAUUBQQEHAEEBQAFEAQcAPAFFAUQBBwBEAT0BPAEHAD4BPQFEAQcARAFGAT4BBwBCAUYBRAEHAEQBQAFCAQcAQwFHAUYBBwBGAUIBQwEHAD4BRgFHAQcARwE/AT4BBwA8AT8BRwEHAEcBRQE8AQcAQQFFAUcBBwBHAUMBQQEHADQBSAFJAQcASQE1ATQBBwAzAUoBSAEHAEgBNAEzAQcAMgFLAUoBBwBKATMBMgEHADUBSQFLAQcASwEyATUBBwA5ATgBTAEHAEwBTQE5AQcASAFNAUwBBwBMAUkBSAEHAE4BTQFIAQcASAFKAU4BBwA5AU0BTgEHAE4BOgE5AQcAOwE6AU4BBwBOAU8BOwEHAEsBTwFOAQcATgFKAUsBBwBJAUwBTwEHAE8BSwFJAQcAOwFPAUwBBwBMATgBOwEHAFABUQFSAQcAUgFTAVABBwBUAVUBVgEHAFYBVwFUAQcAUwFSAVgBBwBYAVkBUwEHAFoBVAFXAQcAVwFbAVoBBwBZAVgBXAEHAFwBXQFZAQcAXgFaAVsBBwBbAV8BXgEHAFwBYAFhAQcAYQFdAVwBBwBRAWIBYwEHAGMBUgFRAQcAUAFkAWIBBwBiAVEBUAEHAFMBZQFkAQcAZAFQAVMBBwBZAWYBZQEHAGUBUwFZAQcAZwFYAVIBBwBSAWMBZwEHAF0BYQFmAQcAZgFZAV0BBwBgAVwBWAEHAFgBZwFgAQcAaAFhAWABBwBgAWkBaAEHAGIBagFrAQcAawFjAWIBBwBsAWoBYgEHAGIBZAFsAQcAbQFsAWQBBwBkAWUBbQEHAGYBbgFtAQcAbQFlAWYBBwBjAWsBbwEHAG8BZwFjAQcAbgFmAWEBBwBhAWgBbgEHAGcBbwFpAQcAaQFgAWcBBwBpAXABcQEHAHEBaAFpAQcAXwFxAXABBwBwAV4BXwEHAGoBcgFzAQcAcwFrAWoBBwBUAXMBcgEHAHIBVQFUAQcAbAF0AXIBBwByAWoBbAEHAFUBcgF0AQcAdAFWAVUBBwBtAXUBdAEHAHQBbAFtAQcAVgF0AXUBBwB1AVcBVgEHAHYBWwFXAQcAVwF1AXYBBwB1AW0BbgEHAG4BdgF1AQcAawFzAXcBBwB3AW8BawEHAFoBdwFzAQcAcwFUAVoBBwBoAXEBdgEHAHYBbgFoAQcAcQFfAVsBBwBbAXYBcQEHAG8BdwFwAQcAcAFpAW8BBwBeAXABdwEHAHcBWgFeAQcAeAF5AXoBBwB6AXsBeAEHAHwBfQF+AQcAfgF/AXwBBwB7AYABgQEHAIEBeAF7AQcAeAGBAYIBBwCCAXkBeAEHAHoBgwGAAQcAgAF7AXoBBwB5AYIBgwEHAIMBegF5AQcAhAGFAYEBBwCBAYABhAEHAH4BhQGEAQcAhAF/AX4BBwCFAYYBggEHAIIBgQGFAQcAfQGGAYUBBwCFAX4BfQEHAIMBhwGEAQcAhAGAAYMBBwB/AYQBhwEHAIcBfAF/AQcAggGGAYcBBwCHAYMBggEHAHwBhwGGAQcAhgF9AXwBBwCIAYkBigEHAIoBiwGIAQcAjAGNAY4BBwCOAY8BjAEHAJABkQGSAQcAkgGTAZABBwCRAZQBlQEHAJUBkgGRAQcAlgGXAZABBwCQAZMBlgEHAJUBlAGXAQcAlwGWAZUBBwCQAZgBmQEHAJkBkQGQAQcAjgGZAZgBBwCYAY8BjgEHAJEBmQGaAQcAmgGUAZEBBwCNAZoBmQEHAJkBjgGNAQcAlwGbAZgBBwCYAZABlwEHAI8BmAGbAQcAmwGMAY8BBwCUAZoBmwEHAJsBlwGUAQcAjAGbAZoBBwCaAY0BjAEHAJIBnAGdAQcAnQGTAZIBBwCLAZ0BnAEHAJwBiAGLAQcAlQGeAZwBBwCcAZIBlQEHAIgBnAGeAQcAngGJAYgBBwCTAZ0BnwEHAJ8BlgGTAQcAigGfAZ0BBwCdAYsBigEHAJYBnwGeAQcAngGVAZYBBwCJAZ4BnwEHAJ8BigGJAQcAoAGhAaIBBwCiAaMBoAEHAKIBpAGlAQcApQGjAaIBBwChAaYBpAEHAKQBogGhAQcApwGmAaEBBwChAaABpwEHAKUBpwGgAQcAoAGjAaUBBwCkAaYBpwEHAKcBpQGkAQcAqAGpAaoBBwCqAasBqAEHAKoBrAGtAQcArQGrAaoBBwCpAa4BrAEHAKwBqgGpAQcArwGuAakBBwCpAagBrwEHAK0BrwGoAQcAqAGrAa0BBwCsAa4BrwEHAK8BrQGsAQcAsAGxAbIBBwCyAbMBsAEHALIBtAG1AQcAtQGzAbIBBwCxAbYBtAEHALQBsgGxAQcAtwG2AbEBBwCxAbABtwEHALUBtwGwAQcAsAGzAbUBBwC0AbYBtwEHALcBtQG0AQcAGAAvABcABwAXABYAGAAHABkAGAAWAAcAFgAVABkABwAaABkAFQAHABUAFAAaAAcAGwAaABQABwAUABMAGwAHABwAGwATAAcAEwASABwABwAdABwAEgAHABIAEQAdAAcAHgAdABEABwARABAAHgAHAB8AHgAQAAcAEAAPAB8ABwAgAB8ADwAHAA8ADgAgAAcAIQAgAA4ABwAOAA0AIQAHACIAIQANAAcADQAMACIABwAjACIADAAHAAwACwAjAAcACgAkACMABwAjAAsACgAHAAkAJQAkAAcAJAAKAAkABwAIACYAJQAHACUACQAIAAcABwAnACYABwAmAAgABwAHAAYAKAAnAAcAJwAHAAYABwAFACkAKAAHACgABgAFAAcABAAqACkABwApAAUABAAHAAMAKwAqAAcAKgAEAAMABwACACwAKwAHACsAAwACAAcAAQAtACwABwAsAAIAAQAHAAAALgAtAAcALQABAAAABwAXAC8ALgAHAC4AAAAXAAcASABfAEcABwBHAEYASAAHAEkASABGAAcARgBFAEkABwBKAEkARQAHAEUARABKAAcASwBKAEQABwBEAEMASwAHAEwASwBDAAcAQwBCAEwABwBNAEwAQgAHAEIAQQBNAAcATgBNAEEABwBBAEAATgAHAE8ATgBAAAcAQAA/AE8ABwBQAE8APwAHAD8APgBQAAcAUQBQAD4ABwA+AD0AUQAHAFIAUQA9AAcAPQA8AFIABwBTAFIAPAAHADwAOwBTAAcAOgBUAFMABwBTADsAOgAHADkAVQBUAAcAVAA6ADkABwA4AFYAVQAHAFUAOQA4AAcANwBXAFYABwBWADgANwAHADYAWABXAAcAVwA3ADYABwA1AFkAWAAHAFgANgA1AAcANABaAFkABwBZADUANAAHADMAWwBaAAcAWgA0ADMABwAyAFwAWwAHAFsAMwAyAAcAMQBdAFwABwBcADIAMQAHADAAXgBdAAcAXQAxADAABwBHAF8AXgAHAF4AMABHAAcAuAG5AboBBwC6AbsBuAEHALwBvQG+AQcAvgG/AbwBBwDAAcEBwgEHAMIBwwHAAQcAxAHFAcEBBwDBAcABxAEHAMIBxgHHAQcAxwHDAcIBBwDGAcUBxAEHAMQBxwHGAQcAyAHJAcIBBwDCAcEByAEHAMkByAG8AQcAvAG/AckBBwDKAcgBwQEHAMEBxQHKAQcAyAHKAb0BBwC9AbwByAEHAMkBywHGAQcAxgHCAckBBwDLAckBvwEHAL8BvgHLAQcAywHKAcUBBwDFAcYBywEHAMoBywG+AQcAvgG9AcoBBwDMAc0BwAEHAMABwwHMAQcAzQHMAbsBBwC7AboBzQEHAM0BzgHEAQcAxAHAAc0BBwDOAc0BugEHALoBuQHOAQcAzwHMAcMBBwDDAccBzwEHAMwBzwG4AQcAuAG7AcwBBwDOAc8BxwEHAMcBxAHOAQcAzwHOAbkBBwC5AbgBzwEHANAB0QHSAQcA0gHTAdABBwDUAdUB0AEHANAB0wHUAQcA1QHWAdEBBwDRAdAB1QEHANEB1gHXAQcA1wHSAdEBBwDSAdcB1AEHANQB0wHSAQcA1wHWAdUBBwDVAdQB1wEHANgB2QHaAQcA2gHbAdgBBwDcAd0B2AEHANgB2wHcAQcA3QHeAdkBBwDZAdgB3QEHANkB3gHfAQcA3wHaAdkBBwDaAd8B3AEHANwB2wHaAQcA3wHeAd0BBwDdAdwB3wEHAOAB4QHiAQcA4gHjAeABBwDkAeUB5gEHAOYB5wHkAQcA6AHpAeoBBwDqAesB6AEHAOkB7AHtAQcA7QHqAekBBwDuAe8B6AEHAOgB6wHuAQcA7QHsAe8BBwDvAe4B7QEHAOgB8AHxAQcA8QHpAegBBwDmAfEB8AEHAPAB5wHmAQcA6QHxAfIBBwDyAewB6QEHAOUB8gHxAQcA8QHmAeUBBwDvAfMB8AEHAPAB6AHvAQcA5wHwAfMBBwDzAeQB5wEHAOwB8gHzAQcA8wHvAewBBwDkAfMB8gEHAPIB5QHkAQcA6gH0AfUB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BwBoAlACTwIHAE8CZwJoAgcAaQJRAlACBwBQAmgCaQIHAGoCUgJRAgcAUQJpAmoCBwBrAlMCUgIHAFICagJrAgcAVAJTAmsCBwBrAmwCVAIHAFUCVAJsAgcAbAJtAlUCBwBWAlUCbQIHAG0CbgJWAgcAVwJWAm4CBwBuAm8CVwIHAFgCVwJvAgcAbwJwAlgCBwBZAlgCcAIHAHACcQJZAgcAWgJZAnECBwBxAnICWgIHAFsCWgJyAgcAcgJzAlsCBwBcAlsCcwIHAHMCdAJcAgcAXQJcAnQCBwB0AnUCXQIHAF4CXQJ1AgcAdQJ2Al4CBwBfAl4CdgIHAHYCdwJfAgcAeAJgAl8CBwBfAncCeAIHAHkCYQJgAgcAYAJ4AnkCBwB6AmICYQIHAGECeQJ6AgcAewJjAmICBwBiAnoCewIHAGUCTQJjAgcAYwJ7AmUCBwB3AGQCZQIHAGUCYAB3AAcAdgBmAmQCBwBkAncAdgAHAHUAZwJmAgcAZgJ2AHUABwB0AGgCZwIHAGcCdQB0AAcAcwBpAmgCBwBoAnQAcwAHAHIAagJpAgcAaQJzAHIABwBxAGsCagIHAGoCcgBxAAcAbAJrAnEABwBxAHAAbAIHAG0CbAJwAAcAcABvAG0CBwBuAm0CbwAHAG8AbgBuAgcAbwJuAm4ABwBuAG0AbwIHAHACbwJtAAcAbQBsAHACBwBxAnACbAAHAGwAawBxAgcAcgJxAmsABwBrAGoAcgIHAHMCcgJqAAcAagBpAHMCBwB0AnMCaQAHAGkAaAB0AgcAdQJ0AmgABwBoAGcAdQIHAHYCdQJnAAcAZwBmAHYCBwB3AnYCZgAHAGYAZQB3AgcAZAB4AncCBwB3AmUAZAAHAGMAeQJ4AgcAeAJkAGMABwBiAHoCeQIHAHkCYwBiAAcAYQB7AnoCBwB6AmIAYQAHAGAAZQJ7AgcAewJhAGAABwB8An0CfgIHAH4CfwJ8AgcAfQKAAoECBwCBAn4CfQIHAIACggKDAgcAgwKBAoACBwB+AoQChQIHAIUCfwJ+AgcAhgKHAogCBwCIAokChgIHAIMCigKLAgcAiwKBAoMCBwCCAowCigIHAIoCgwKCAgcAjQKMAoICBwCCAoACjQIHAI4CjwKQAgcAkAKRAo4CBwCSApMCfQIHAH0CfAKSAgcAhQKSAnwCBwB8An8ChQIHAIQCkwKSAgcAkgKFAoQCBwCLAo0CkwIHAJMChAKLAgcAigKMAo0CBwCNAosCigIHAH0ClAKVAgcAlQKAAn0CBwCAApUClgIHAJYCjQKAAgcAjQKWApcCBwCXApMCjQIHAJMClwKUAgcAlAJ9ApMCBwB+ApgCmQIHAJkChAJ+AgcAhAKZApoCBwCaAosChAIHAIsCmgKbAgcAmwKBAosCBwCBApsCmAIHAJgCfgKBAgcAiAKcAp0CBwCdAokCiAIHAIcCngKcAgcAnAKIAocCBwCGAp8CngIHAJ4ChwKGAgcAiQKdAp8CBwCfAoYCiQIHAKACoQKdAgcAnQKcAqACBwCYAqECoAIHAKACmQKYAgcAmgKZAqACBwCgAqICmgIHAJ4CogKgAgcAoAKcAp4CBwCfAqMCogIHAKICngKfAgcAmgKiAqMCBwCjApsCmgIHAJgCmwKjAgcAowKhApgCBwCdAqECowIHAKMCnwKdAgcAkAKkAqUCBwClApECkAIHAI8CpgKkAgcApAKQAo8CBwCOAqcCpgIHAKYCjwKOAgcAkQKlAqcCBwCnAo4CkQIHAJUClAKoAgcAqAKpApUCBwCkAqkCqAIHAKgCpQKkAgcAqgKpAqQCBwCkAqYCqgIHAJUCqQKqAgcAqgKWApUCBwCXApYCqgIHAKoCqwKXAgcApwKrAqoCBwCqAqYCpwIHAKUCqAKrAgcAqwKnAqUCBwCXAqsCqAIHAKgClAKXAgcArAKtAq4CBwCuAq8CrAIHALACsQKyAgcAsgKzArACBwCvAq4CtAIHALQCtQKvAgcAtgKwArMCBwCzArcCtgIHALUCtAK4AgcAuAK5ArUCBwC6ArYCtwIHALcCuwK6AgcAuAK8Ar0CBwC9ArkCuAIHAK0CvgK/AgcAvwKuAq0CBwCsAsACvgIHAL4CrQKsAgcArwLBAsACBwDAAqwCrwIHALUCwgLBAgcAwQKvArUCBwDDArQCrgIHAK4CvwLDAgcAuQK9AsICBwDCArUCuQIHALwCuAK0AgcAtALDArwCBwDEAr0CvAIHALwCxQLEAgcAvgLGAscCBwDHAr8CvgIHAMgCxgK+AgcAvgLAAsgCBwDJAsgCwAIHAMACwQLJAgcAwgLKAskCBwDJAsECwgIHAL8CxwLLAgcAywLDAr8CBwDKAsICvQIHAL0CxALKAgcAwwLLAsUCBwDFArwCwwIHAMUCzALNAgcAzQLEAsUCBwC7As0CzAIHAMwCugK7AgcAxgLOAs8CBwDPAscCxgIHALACzwLOAgcAzgKxArACBwDIAtACzgIHAM4CxgLIAgcAsQLOAtACBwDQArICsQIHAMkC0QLQAgcA0ALIAskCBwCyAtAC0QIHANECswKyAgcA0gK3ArMCBwCzAtEC0gIHANECyQLKAgcAygLSAtECBwDHAs8C0wIHANMCywLHAgcAtgLTAs8CBwDPArACtgIHAMQCzQLSAgcA0gLKAsQCBwDNArsCtwIHALcC0gLNAgcAywLTAswCBwDMAsUCywIHALoCzALTAgcA0wK2AroCBwDUAtUC1gIHANYC1wLUAgcA2ALZAtoCBwDaAtsC2AIHANcC3ALdAgcA3QLUAtcCBwDUAt0C3gIHAN4C1QLUAgcA1gLfAtwCBwDcAtcC1gIHANUC3gLfAgcA3wLWAtUCBwDgAuEC3QIHAN0C3ALgAgcA2gLhAuACBwDgAtsC2gIHAOEC4gLeAgcA3gLdAuECBwDZAuIC4QIHAOEC2gLZAgcA3wLjAuACBwDgAtwC3wIHANsC4ALjAgcA4wLYAtsCBwDeAuIC4wIHAOMC3wLeAgcA2ALjAuICBwDiAtkC2AIHAOQC5QLmAgcA5gLnAuQCBwDoAukC6gIHAOoC6wLoAgcA7ALtAu4CBwDuAu8C7AIHAO0C8ALxAgcA8QLuAu0CBwDyAvMC7AIHAOwC7wLyAgcA8QLwAvMCBwDzAvIC8QIHAOwC9AL1AgcA9QLtAuwCBwDqAvUC9AIHAPQC6wLqAgcA7QL1AvYCBwD2AvAC7QIHAOkC9gL1AgcA9QLqAukCBwDzAvcC9AIHAPQC7ALzAgcA6wL0AvcCBwD3AugC6wIHAPAC9gL3AgcA9wLzAvACBwDoAvcC9gIHAPYC6QLoAgcA7gL4AvkCBwD5Au8C7gIHAOcC+QL4AgcA+ALkAucCBwDxAvoC+AIHAPgC7gLxAgcA5AL4AvoCBwD6AuUC5AIHAO8C+QL7AgcA+wLyAu8CBwDmAvsC+QIHAPkC5wLmAgcA8gL7AvoCBwD6AvEC8gIHAOUC+gL7AgcA+wLmAuUCBwD8Av0C/gIHAP4C/wL8AgcA/gIAAwEDBwABA/8C/gIHAP0CAgMAAwcAAAP+Av0CBwADAwID/QIHAP0C/AIDAwcAAQMDA/wCBwD8Av8CAQMHAAADAgMDAwcAAwMBAwADBwAEAwUDBgMHAAYDBwMEAwcABgMIAwkDBwAJAwcDBgMHAAUDCgMIAwcACAMGAwUDBwALAwoDBQMHAAUDBAMLAwcACQMLAwQDBwAEAwcDCQMHAAgDCgMLAwcACwMJAwgDBwAMAw0DDgMHAA4DDwMMAwcADgMQAxEDBwARAw8DDgMHAA0DEgMQAwcAEAMOAw0DBwATAxIDDQMHAA0DDAMTAwcAEQMTAwwDBwAMAw8DEQMHABADEgMTAwcAEwMRAxADBwCoAL8ApwAHAKcApgCoAAcAqQCoAKYABwCmAKUAqQAHAKoAqQClAAcApQCkAKoABwCrAKoApAAHAKQAowCrAAcArACrAKMABwCjAKIArAAHAK0ArACiAAcAogChAK0ABwCuAK0AoQAHAKEAoACuAAcArwCuAKAABwCgAJ8ArwAHALAArwCfAAcAnwCeALAABwCxALAAngAHAJ4AnQCxAAcAsgCxAJ0ABwCdAJwAsgAHALMAsgCcAAcAnACbALMABwCaALQAswAHALMAmwCaAAcAmQC1ALQABwC0AJoAmQAHAJgAtgC1AAcAtQCZAJgABwCXALcAtgAHALYAmACXAAcAlgC4ALcABwC3AJcAlgAHAJUAuQC4AAcAuACWAJUABwCUALoAuQAHALkAlQCUAAcAkwC7ALoABwC6AJQAkwAHAJIAvAC7AAcAuwCTAJIABwCRAL0AvAAHALwAkgCRAAcAkAC+AL0ABwC9AJEAkAAHAKcAvwC+AAcAvgCQAKcABwDYAO8A1wAHANcA1gDYAAcA2QDYANYABwDWANUA2QAHANoA2QDVAAcA1QDUANoABwDbANoA1AAHANQA0wDbAAcA3ADbANMABwDTANIA3AAHAN0A3ADSAAcA0gDRAN0ABwDeAN0A0QAHANEA0ADeAAcA3wDeANAABwDQAM8A3wAHAOAA3wDPAAcAzwDOAOAABwDhAOAAzgAHAM4AzQDhAAcA4gDhAM0ABwDNAMwA4gAHAOMA4gDMAAcAzADLAOMABwDKAOQA4wAHAOMAywDKAAcAyQDlAOQABwDkAMoAyQAHAMgA5gDlAAcA5QDJAMgABwDHAOcA5gAHAOYAyADHAAcAxgDoAOcABwDnAMcAxgAHAMUA6QDoAAcA6ADGAMUABwDEAOoA6QAHAOkAxQDEAAcAwwDrAOoABwDqAMQAwwAHAMIA7ADrAAcA6wDDAMIABwDBAO0A7AAHAOwAwgDBAAcAwADuAO0ABwDtAMEAwAAHANcA7wDuAAcA7gDAANcABwAUAxUDFgMHABYDFwMUAwcAGAMZAxoDBwAaAxsDGAMHABwDHQMeAwcAHgMfAxwDBwAgAyEDHQMHAB0DHAMgAwcAHgMiAyMDBwAjAx8DHgMHACIDIQMgAwcAIAMjAyIDBwAkAyUDHgMHAB4DHQMkAwcAJQMkAxgDBwAYAxsDJQMHACYDJAMdAwcAHQMhAyYDBwAkAyYDGQMHABkDGAMkAwcAJQMnAyIDBwAiAx4DJQMHACcDJQMbAwcAGwMaAycDBwAnAyYDIQMHACEDIgMnAwcAJgMnAxoDBwAaAxkDJgMHACgDKQMcAwcAHAMfAygDBwApAygDFwMHABcDFgMpAwcAKQMqAyADBwAgAxwDKQMHACoDKQMWAwcAFgMVAyoDBwArAygDHwMHAB8DIwMrAwcAKAMrAxQDBwAUAxcDKAMHACoDKwMjAwcAIwMgAyoDBwArAyoDFQMHABUDFAMrAwcALAMtAy4DBwAuAy8DLAMHADADMQMsAwcALAMvAzADBwAxAzIDLQMHAC0DLAMxAwcALQMyAzMDBwAzAy4DLQMHAC4DMwMwAwcAMAMvAy4DBwAzAzIDMQMHADEDMAMzAwcANAM1AzYDBwA2AzcDNAMHADgDOQM6AwcAOgM7AzgDBwA8Az0DPgMHAD4DPwM8AwcAPQNAA0EDBwBBAz4DPQMHAEIDQwM8AwcAPAM/A0IDBwBBA0ADQwMHAEMDQgNBAwcAPANEA0UDBwBFAz0DPAMHADoDRQNEAwcARAM7AzoDBwA9A0UDRgMHAEYDQAM9AwcAOQNGA0UDBwBFAzoDOQMHAEMDRwNEAwcARAM8A0MDBwA7A0QDRwMHAEcDOAM7AwcAQANGA0cDBwBHA0MDQAMHADgDRwNGAwcARgM5AzgDBwA+A0gDSQMHAEkDPwM+AwcANwNJA0gDBwBIAzQDNwMHAEEDSgNIAwcASAM+A0EDBwA0A0gDSgMHAEoDNQM0AwcAPwNJA0sDBwBLA0IDPwMHADYDSwNJAwcASQM3AzYDBwBCA0sDSgMHAEoDQQNCAwcANQNKA0sDBwBLAzYDNQMHAEwDTQNOAwcATgNPA0wDBwBOA1ADUQMHAFEDTwNOAwcATQNSA1ADBwBQA04DTQMHAFMDUgNNAwcATQNMA1MDBwBRA1MDTAMHAEwDTwNRAwcAUANSA1MDBwBTA1EDUAMHAFQDVQNWAwcAVgNXA1QDBwBWA1gDWQMHAFkDVwNWAwcAVQNaA1gDBwBYA1YDVQMHAFsDWgNVAwcAVQNUA1sDBwBZA1sDVAMHAFQDVwNZAwcAWANaA1sDBwBbA1kDWAMHAFwDXQNeAwcAXgNfA1wDBwBgA2EDYgMHAGIDYwNgAwcAXwNkA2UDBwBlA1wDXwMHAFwDZQNmAwcAZgNdA1wDBwBeA2cDZAMHAGQDXwNeAwcAXQNmA2cDBwBnA14DXQMHAGgDaQNlAwcAZQNkA2gDBwBpA2oDZgMHAGYDZQNpAwcAZwNrA2gDBwBoA2QDZwMHAGYDagNrAwcAawNnA2YDBwBoA2wDbQMHAG0DaQNoAwcAYgNtA2wDBwBsA2MDYgMHAGkDbQNuAwcAbgNqA2kDBwBhA24DbQMHAG0DYgNhAwcAawNvA2wDBwBsA2gDawMHAGMDbANvAwcAbwNgA2MDBwBqA24DbwMHAG8DawNqAwcAYANvA24DBwBuA2EDYAMHAHADCAEfAQcAHwFxA3ADBwByAwkBCAEHAAgBcANyAwcAcwMKAQkBBwAJAXIDcwMHAHQDCwEKAQcACgFzA3QDBwB1AwwBCwEHAAsBdAN1AwcAdgMNAQwBBwAMAXUDdgMHAA4BDQF2AwcAdgN3Aw4BBwAPAQ4BdwMHAHcDeAMPAQcAEAEPAXgDBwB4A3kDEAEHABEBEAF5AwcAeQN6AxEBBwASAREBegMHAHoDewMSAQcAEwESAXsDBwB7A3wDEwEHABQBEwF8AwcAfAN9AxQBBwAVARQBfQMHAH0DfgMVAQcAFgEVAX4DBwB+A38DFgEHABcBFgF/AwcAfwOAAxcBBwAYARcBgAMHAIADgQMYAQcAGQEYAYEDBwCBA4IDGQEHAIMDGgEZAQcAGQGCA4MDBwCEAxsBGgEHABoBgwOEAwcAhQMcARsBBwAbAYQDhQMHAIYDHQEcAQcAHAGFA4YDBwCHAx4BHQEHAB0BhgOHAwcAcQMfAR4BBwAeAYcDcQMHAIgDcQOHAwcAhwOJA4gDBwCKA3ADcQMHAHEDiAOKAwcAiwNyA3ADBwBwA4oDiwMHAIwDcwNyAwcAcgOLA4wDBwCNA3QDcwMHAHMDjAONAwcAjgN1A3QDBwB0A40DjgMHAI8DdgN1AwcAdQOOA48DBwB3A3YDjwMHAI8DkAN3AwcAeAN3A5ADBwCQA5EDeAMHAHkDeAORAwcAkQOSA3kDBwB6A3kDkgMHAJIDkwN6AwcAewN6A5MDBwCTA5QDewMHAHwDewOUAwcAlAOVA3wDBwB9A3wDlQMHAJUDlgN9AwcAfgN9A5YDBwCWA5cDfgMHAH8DfgOXAwcAlwOYA38DBwCAA38DmAMHAJgDmQOAAwcAgQOAA5kDBwCZA5oDgQMHAIIDgQOaAwcAmgObA4IDBwCcA4MDggMHAIIDmwOcAwcAnQOEA4MDBwCDA5wDnQMHAJ4DhQOEAwcAhAOdA54DBwCfA4YDhQMHAIUDngOfAwcAiQOHA4YDBwCGA58DiQMHAKADiAOJAwcAiQOhA6ADBwCiA4oDiAMHAIgDoAOiAwcAowOLA4oDBwCKA6IDowMHAKQDjAOLAwcAiwOjA6QDBwClA40DjAMHAIwDpAOlAwcApgOOA40DBwCNA6UDpgMHAKcDjwOOAwcAjgOmA6cDBwCQA48DpwMHAKcDqAOQAwcAkQOQA6gDBwCoA6kDkQMHAJIDkQOpAwcAqQOqA5IDBwCTA5IDqgMHAKoDqwOTAwcAlAOTA6sDBwCrA6wDlAMHAJUDlAOsAwcArAOtA5UDBwCWA5UDrQMHAK0DrgOWAwcAlwOWA64DBwCuA68DlwMHAJgDlwOvAwcArwOwA5gDBwCZA5gDsAMHALADsQOZAwcAmgOZA7EDBwCxA7IDmgMHAJsDmgOyAwcAsgOzA5sDBwC0A5wDmwMHAJsDswO0AwcAtQOdA5wDBwCcA7QDtQMHALYDngOdAwcAnQO1A7YDBwC3A58DngMHAJ4DtgO3AwcAoQOJA58DBwCfA7cDoQMHALgDoAOhAwcAoQO5A7gDBwC6A6IDoAMHAKADuAO6AwcAuwOjA6IDBwCiA7oDuwMHALwDpAOjAwcAowO7A7wDBwC9A6UDpAMHAKQDvAO9AwcAvgOmA6UDBwClA70DvgMHAL8DpwOmAwcApgO+A78DBwCoA6cDvwMHAL8DwAOoAwcAqQOoA8ADBwDAA8EDqQMHAKoDqQPBAwcAwQPCA6oDBwCrA6oDwgMHAMIDwwOrAwcArAOrA8MDBwDDA8QDrAMHAK0DrAPEAwcAxAPFA60DBwCuA60DxQMHAMUDxgOuAwcArwOuA8YDBwDGA8cDrwMHALADrwPHAwcAxwPIA7ADBwCxA7ADyAMHAMgDyQOxAwcAsgOxA8kDBwDJA8oDsgMHALMDsgPKAwcAygPLA7MDBwDMA7QDswMHALMDywPMAwcAzQO1A7QDBwC0A8wDzQMHAM4DtgO1AwcAtQPNA84DBwDPA7cDtgMHALYDzgPPAwcAuQOhA7cDBwC3A88DuQMHAAcBuAO5AwcAuQPwAAcBBwAGAboDuAMHALgDBwEGAQcABQG7A7oDBwC6AwYBBQEHAAQBvAO7AwcAuwMFAQQBBwADAb0DvAMHALwDBAEDAQcAAgG+A70DBwC9AwMBAgEHAAEBvwO+AwcAvgMCAQEBBwDAA78DAQEHAAEBAAHAAwcAwQPAAwABBwAAAf8AwQMHAMIDwQP/AAcA/wD+AMIDBwDDA8ID/gAHAP4A/QDDAwcAxAPDA/0ABwD9APwAxAMHAMUDxAP8AAcA/AD7AMUDBwDGA8UD+wAHAPsA+gDGAwcAxwPGA/oABwD6APkAxwMHAMgDxwP5AAcA+QD4AMgDBwDJA8gD+AAHAPgA9wDJAwcAygPJA/cABwD3APYAygMHAMsDygP2AAcA9gD1AMsDBwD0AMwDywMHAMsD9QD0AAcA8wDNA8wDBwDMA/QA8wAHAPIAzgPNAwcAzQPzAPIABwDxAM8DzgMHAM4D8gDxAAcA8AC5A88DBwDPA/EA8AAHADBBTQ4AAHJhdjQtc2hpZWxkcwAcBwAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwdQQXYcAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA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RGSAwvhlZ79apgfCRGSAwvhlZ7+Asf7BXzKMwoKenz9gQTYAAAAKk8k+AAAAAAAAAAAAAAAADZPJMg2TyT4AAAAADZPJvg2TyTIAAAAAgEX+QPlBIkEgQd3WAQCYIQAAAQACAAcAAAADAAEABwADAAQAAQAHAAMABQAEAAcABQAGAAQABwAFAAcABgAHAAcACAAGAAcABwAJAAgABwAJAAoACAAHAAkACwAKAAcACwAMAAoABwALAA0ADAAHAA0ADgAMAAcADQAPAA4ABwAPABAADgAHAA8AEQAQAAcAEQASABAABwARABMAEgAHABMAFAASAAcAEwAVABQABwAVABYAFAAHABUAFwAWAAcAGAAUABYABwAYABkAFAAHABkAEgAUAAcAGQAaABIABwAaABAAEgAHABoAGwAQAAcAGwAOABAABwAbABwADgAHABwADAAOAAcAHAAdAAwABwAdAAoADAAHAB0AHgAKAAcAHgAIAAoABwAeAB8ACAAHAB8ABgAIAAcAHwAgAAYABwAgAAQABgAHACAAIQAEAAcAIQABAAQABwAhACIAAQAHACIAAgABAAcAIgAjAAIABwAkABkAGAAHACQAJQAZAAcAJQAaABkABwAlACYAGgAHACYAGwAaAAcAJgAnABsABwAnABwAGwAHACcAKAAcAAcAKAAdABwABwAoACkAHQAHACkAHgAdAAcAKQAqAB4ABwAqAB8AHgAHACoAKwAfAAcAKwAgAB8ABwArACwAIAAHACwAIQAgAAcALAAtACEABwAtACIAIQAHAC0ALgAiAAcALgAjACIABwAuAC8AIwAHADAAJQAkAAcAMAAxACUABwAxACYAJQAHADEAMgAmAAcAMgAnACYABwAyADMAJwAHADMAKAAnAAcAMwA0ACgABwA0ACkAKAAHADQANQApAAcANQAqACkABwA1ADYAKgAHADYAKwAqAAcANgA3ACsABwA3ACwAKwAHADcAOAAsAAcAOAAtACwABwA4ADkALQAHADkALgAtAAcAOQA6AC4ABwA6AC8ALgAHADoAOwAvAAcAPAAxADAABwA8AD0AMQAHAD0AMgAxAAcAPQA+ADIABwA+ADMAMgAHAD4APwAzAAcAPwA0ADMABwA/AEAANAAHAEAANQA0AAcAQABBADUABwBBADYANQAHAEEAQgA2AAcAQgA3ADYABwBCAEMANwAHAEMAOAA3AAcAQwBEADgABwBEADkAOAAHAEQARQA5AAcARQA6ADkABwBFAEYAOgAHAEYAOwA6AAcARgBHADsABwBIAEkASgAHAEgASwBJAAcATABLAEgABwBMAE0ASwAHAE4ATQBMAAcATgBPAE0ABwBQAE8ATgAHAFAAUQBPAAcAUgBRAFAABwBSAFMAUQAHAFQAUwBSAAcAVABVAFMABwBWAFUAVAAHAFYAVwBVAAcAWABXAFYABwBYAFkAVwAHAFoAWQBYAAcAWgBbAFkABwBcAFsAWgAHAFwAXQBbAAcAXgBdAFwABwBeAF8AXQAHAFwAYABeAAcAXABhAGAABwBaAGEAXAAHAFoAYgBhAAcAWABiAFoABwBYAGMAYgAHAFYAYwBYAAcAVgBkAGMABwBUAGQAVgAHAFQAZQBkAAcAUgBlAFQABwBSAGYAZQAHAFAAZgBSAAcAUABnAGYABwBOAGcAUAAHAE4AaABnAAcATABoAE4ABwBMAGkAaAAHAEgAaQBMAAcASABqAGkABwBKAGoASAAHAEoAawBqAAcAYQBsAGAABwBhAG0AbAAHAGIAbQBhAAcAYgBuAG0ABwBjAG4AYgAHAGMAbwBuAAcAZABvAGMABwBkAHAAbwAHAGUAcABkAAcAZQBxAHAABwBmAHEAZQAHAGYAcgBxAAcAZwByAGYABwBnAHMAcgAHAGgAcwBnAAcAaAB0AHMABwBpAHQAaAAHAGkAdQB0AAcAagB1AGkABwBqAHYAdQAHAGsAdgBqAAcAawB3AHYABwBtAHgAbAAHAG0AeQB4AAcAbgB5AG0ABwBuAHoAeQAHAG8AegBuAAcAbwB7AHoABwBwAHsAbwAHAHAAfAB7AAcAcQB8AHAABwBxAH0AfAAHAHIAfQBxAAcAcgB+AH0ABwBzAH4AcgAHAHMAfwB+AAcAdAB/AHMABwB0AIAAfwAHAHUAgAB0AAcAdQCBAIAABwB2AIEAdQAHAHYAggCBAAcAdwCCAHYABwB3AIMAggAHAHkAhAB4AAcAeQCFAIQABwB6AIUAeQAHAHoAhgCFAAcAewCGAHoABwB7AIcAhgAHAHwAhwB7AAcAfACIAIcABwB9AIgAfAAHAH0AiQCIAAcAfgCJAH0ABwB+AIoAiQAHAH8AigB+AAcAfwCLAIoABwCAAIsAfwAHAIAAjACLAAcAgQCMAIAABwCBAI0AjAAHAIIAjQCBAAcAggCOAI0ABwCDAI4AggAHAIMAjwCOAAcAkACRAJIABwCQAJMAkQAHAJQAkgCVAAcAlACQAJIABwCWAJUAlwAHAJYAlACVAAcAmACXAJkABwCYAJYAlwAHAJoAmQCbAAcAmgCYAJkABwCcAJ0AngAHAJwAnwCdAAcAnwCgAJ0ABwCfAKEAoAAHAKIAowCkAAcAogClAKMABwClAKYAowAHAKUApwCmAAcAqAClAKIABwCoAKkApQAHAKkApwClAAcAqQCqAKcABwCrAKkAqAAHAKsArACpAAcArACqAKkABwCsAK0AqgAHAK4ArACrAAcArgCvAKwABwCvAK0ArAAHAK8AsACtAAcAsQCvAK4ABwCxALIArwAHALIAsACvAAcAsgCzALAABwCeALQAtQAHAJ4AnQC0AAcAnQC2ALQABwCdAKAAtgAHALUAtwC4AAcAtQC0ALcABwC0ALkAtwAHALQAtgC5AAcAuAC6ALsABwC4ALcAugAHALcAvAC6AAcAtwC5ALwABwC7AL0AvgAHALsAugC9AAcAugC/AL0ABwC6ALwAvwAHALYAwAC5AAcAtgDBAMAABwDBAMIAwAAHAMEAwwDCAAcAoADBALYABwCgAMQAwQAHAMQAwwDBAAcAxADFAMMABwChAMQAoAAHAKEAxgDEAAcAxgDFAMQABwDGAMcAxQAHAMgAyQDKAAcAyADLAMkABwDLAKYAyQAHAMsAowCmAAcAzADLAMgABwDMAM0AywAHAM0AowDLAAcAzQCkAKMABwC5AM4AvAAHALkAwADOAAcAwACRAM4ABwDAAMIAkQAHALwAzwC/AAcAvADOAM8ABwDOAJMAzwAHAM4AkQCTAAcA0ACtANEABwDQAKoArQAHANIAqgDQAAcA0gCnAKoABwDTAKcA0gAHANMApgCnAAcA1ACmANMABwDUAMkApgAHANUAyQDUAAcA1QDKAMkABwDWAMoA1QAHANYAyADKAAcA1wDIANYABwDXAMwAyAAHANEAsADYAAcA0QCtALAABwDYALMA2QAHANgAsACzAAcA2gDbANwABwDaAN0A2wAHANwA3gDfAAcA3ADbAN4ABwDfAOAA4QAHAN8A3gDgAAcA4QDiAOMABwDhAOAA4gAHAOMAmgCbAAcA4wDiAJoABwDkAOUA5gAHAOQA5wDlAAcA6ADnAOQABwDoAOkA5wAHAOoA6wDsAAcA6gDtAOsABwDuAO0A6gAHAO4A7wDtAAcA7QDwAOsABwDtAPEA8AAHAO8A8QDtAAcA7wDyAPEABwDxAPMA8AAHAPEA9ADzAAcA8gD0APEABwDyAPUA9AAHAPQA9gDzAAcA9AD3APYABwD1APcA9AAHAPUA+AD3AAcA9wCxAPYABwD3ALIAsQAHAPgAsgD3AAcA+ACzALIABwD5AOYA+gAHAPkA5ADmAAcA+wDkAPkABwD7AOgA5AAHAPwA+gD9AAcA/AD5APoABwD+APkA/AAHAP4A+wD5AAcA/wD9AAABBwD/APwA/QAHAAEB/AD/AAcAAQH+APwABwACAQABAwEHAAIB/wAAAQcABAH/AAIBBwAEAQEB/wAHAAUB+wD+AAcABQEGAfsABwAHAQYBBQEHAAcBCAEGAQcABgHoAPsABwAGAQkB6AAHAAgBCQEGAQcACAEKAQkBBwAJAekA6AAHAAkBCwHpAAcACgELAQkBBwAKAQwBCwEHAA0BDgEPAQcADQEQAQ4BBwDuABABDQEHAO4A6gAQAQcAEAERAQ4BBwAQARIBEQEHAOoAEgEQAQcA6gDsABIBBwATAf4AAQEHABMBBQH+AAcA2gAFARMBBwDaAAcBBQEHABQBAQEEAQcAFAETAQEBBwDdABMBFAEHAN0A2gATAQcA9QAVARYBBwD1APIAFQEHAPIAFwEVAQcA8gDvABcBBwDvABgBFwEHAO8A7gAYAQcA7gAZARgBBwDuAA0BGQEHAA0BGgEZAQcADQEPARoBBwAPARsBGgEHAA8BDgEbAQcADgEcARsBBwAOAREBHAEHAPgAFgEdAQcA+AD1ABYBBwCzAB0B2QAHALMA+AAdAQcAHgHdABQBBwAeAR8B3QAHACABFAEEAQcAIAEeARQBBwAhAQQBAgEHACEBIAEEAQcAIgHiAOAABwAiASMB4gAHACMBmgDiAAcAIwEkAZoABwAlAeAA3gAHACUBIgHgAAcAJgHeANsABwAmASUB3gAHAB8B2wDdAAcAHwEmAdsABwAnAc8AkwAHACcBKAHPAAcAKAG/AM8ABwAoASkBvwAHACkBvQC/AAcAKQEqAb0ABwAkAZgAmgAHACQBKwGYAAcAKwGWAJgABwArASwBlgAHACwBlACWAAcALAEtAZQABwAtAZAAlAAHAC0BLgGQAAcALgGTAJAABwAuAScBkwAHAC8BHwEeAQcALwEwAR8BBwAxAR4BIAEHADEBLwEeAQcAMAEmAR8BBwAwATIBJgEHADMBIAEhAQcAMwExASABBwA0ASMBIgEHADQBNQEjAQcANQEkASMBBwA1ATYBJAEHADcBIgElAQcANwE0ASIBBwA2ASsBJAEHADYBOAErAQcAMgElASYBBwAyATcBJQEHADkBKAEnAQcAOQE6ASgBBwA6ASkBKAEHADoBOwEpAQcAPAEnAS4BBwA8ATkBJwEHADsBKgEpAQcAOwE9ASoBBwA4ASwBKwEHADgBPgEsAQcAPgEtASwBBwA+AT8BLQEHAD8BLgEtAQcAPwE8AS4BBwBAATABLwEHAEABQQEwAQcAQgEvATEBBwBCAUABLwEHAEEBMgEwAQcAQQFDATIBBwBEATEBMwEHAEQBQgExAQcAQwE3ATIBBwBDAUUBNwEHAEYBNQE0AQcARgFHATUBBwBHATYBNQEHAEcBSAE2AQcARQE0ATcBBwBFAUYBNAEHAEgBOAE2AQcASAFJATgBBwBJAT4BOAEHAEkBSgE+AQcASwE6ATkBBwBLAUwBOgEHAEwBOwE6AQcATAFNATsBBwBOATkBPAEHAE4BSwE5AQcATQE9ATsBBwBNAU8BPQEHAFABPAE/AQcAUAFOATwBBwBKAT8BPgEHAEoBUAE/AQcAUQFSAVMBBwBRAVQBUgEHAFQBHQFSAQcAVAHZAB0BBwBVAVQBUQEHAFUBVgFUAQcAVgHZAFQBBwBWAdgA2QAHAFcBVgFVAQcAVwFYAVYBBwBYAdgAVgEHAFgB0QDYAAcAWQFYAVcBBwBZAVoBWAEHAFoB0QBYAQcAWgHQANEABwBbAVoBWQEHAFsBXAFaAQcAXAHQAFoBBwBcAdIA0AAHAMcAXAFbAQcAxwBdAVwBBwBdAdIAXAEHAF0B0wDSAAcAxgBdAccABwDGAF4BXQEHAF4B0wBdAQcAXgHUANMABwChAF4BxgAHAKEAXwFeAQcAXwHUAF4BBwBfAdUA1AAHAJ8AXwGhAAcAnwBgAV8BBwBgAdUAXwEHAGAB1gDVAAcAnABgAZ8ABwCcAGEBYAEHAGEB1gBgAQcAYQHXANYABwBTAWIBYwEHAFMBUgFiAQcAUgEWAWIBBwBSAR0BFgEHAGMBZAFlAQcAYwFiAWQBBwBiARUBZAEHAGIBFgEVAQcAZQFmAWcBBwBlAWQBZgEHAGQBFwFmAQcAZAEVARcBBwBnAWgBDAEHAGcBZgFoAQcAZgEYAWgBBwBmARcBGAEHAAwBaQELAQcADAFoAWkBBwBoARkBaQEHAGgBGAEZAQcACwFqAekABwALAWkBagEHAGkBGgFqAQcAaQEZARoBBwDpAGsB5wAHAOkAagFrAQcAagEbAWsBBwBqARoBGwEHAOcAbAHlAAcA5wBrAWwBBwBrARwBbAEHAGsBGwEcAQcAbQFuAW8BBwBtAXABbgEHAHEBcAFtAQcAcQFyAXABBwBzAXIBcQEHAHMBdAFyAQcAdQF2AXcBBwB1AXgBdgEHAHkBegF7AQcAeQF8AXoBBwBwAX0BbgEHAHABfgF9AQcAcgF+AXABBwByAX8BfgEHAHQBfwFyAQcAdAGAAX8BBwB4AYEBdgEHAHgBggGBAQcAfAGDAXoBBwB8AYQBgwEHAHQBdwF2AQcAdAFzAXcBBwCAAXYBgQEHAIABdAF2AQcAhQGGAYcBBwCFAYgBhgEHAIcBiQGKAQcAhwGGAYkBBwCLAYwBjQEHAIsBjgGMAQcAjQGPAZABBwCNAYwBjwEHAIsBkQGSAQcAiwGNAZEBBwCNAZMBkQEHAI0BkAGTAQcAkgGUAZUBBwCSAZEBlAEHAHkBlAF8AQcAeQGVAZQBBwCRAZYBlAEHAJEBkwGWAQcAfAGWAYQBBwB8AZQBlgEHAJcBeQF7AQcAlwGVAXkBBwCYAZUBlwEHAJgBkgGVAQcAmQGSAZgBBwCZAYsBkgEHAJoBiwGZAQcAmgGOAYsBBwCbAZwBnQEHAJsBngGcAQcAnwGeAZsBBwCfAaABngEHAKEBbwFuAQcAoQGiAW8BBwCKAaEBhwEHAIoBogGhAQcAowFuAX0BBwCjAaEBbgEHAIcBowGFAQcAhwGhAaMBBwCcAaQBpQEHAJwBngGkAQcAjgGkAYwBBwCOAaUBpAEHAKQBoAGmAQcApAGeAaABBwCkAY8BjAEHAKQBpgGPAQcAnAGnAZ0BBwCcAaUBpwEHAI4BpwGlAQcAjgGaAacBBwCoAXsBegEHAKgBqQF7AQcAdQGoAXgBBwB1AakBqAEHAKoBegGDAQcAqgGoAXoBBwB4AaoBggEHAHgBqAGqAQcAqwF7AakBBwCrAZcBewEHAKwBlwGrAQcArAGYAZcBBwCsAZkBmAEHAKwBrQGZAQcArQGaAZkBBwCtAa4BmgEHAJsBrwGwAQcAmwGdAa8BBwCGAa8BiQEHAIYBsAGvAQcAsQGbAbABBwCxAZ8BmwEHALEBhgGIAQcAsQGwAYYBBwCvAacBsgEHAK8BnQGnAQcArgGnAZoBBwCuAbIBpwEHALMBtAG1AQcAswG2AbQBBwC2AbcBtAEHALYBuAG3AQcAuAG5AbcBBwC4AboBuQEHALsBvAG9AQcAuwG+AbwBBwC/AcABwQEHAL8BwgHAAQcAwwG2AbMBBwDDAcQBtgEHAMQBuAG2AQcAxAHFAbgBBwDFAboBuAEHAMUBxgG6AQcAxwG+AbsBBwDHAcgBvgEHAMkBwgG/AQcAyQHKAcIBBwC9AboBuwEHAL0BuQG6AQcAuwHGAccBBwC7AboBxgEHAMsBzAHNAQcAywHOAcwBBwDPAc0B0AEHAM8BywHNAQcA0QHSAdMBBwDRAdQB0gEHANUB0wHWAQcA1QHRAdMBBwDXAdIB2AEHANcB0wHSAQcA2QHTAdcBBwDZAdYB0wEHANoB2AHbAQcA2gHXAdgBBwDaAcABwgEHANoB2wHAAQcA3AHXAdoBBwDcAdkB1wEHANwBwgHKAQcA3AHaAcIBBwDAAd0BwQEHAMAB2wHdAQcA2wHeAd0BBwDbAdgB3gEHANgB3wHeAQcA2AHSAd8BBwDSAeAB3wEHANIB1AHgAQcA4QHiAeMBBwDhAeQB4gEHAOQB5QHiAQcA5AHmAeUBBwC1AecBswEHALUB6AHnAQcA5wHQAc0BBwDnAegB0AEHALMB6QHDAQcAswHnAekBBwDpAc0BzAEHAOkB5wHNAQcA6gHhAesBBwDqAeQB4QEHAOoB1AHRAQcA6gHrAdQBBwDmAeoB7AEHAOYB5AHqAQcA1QHqAdEBBwDVAewB6gEHAO0B4QHjAQcA7QHrAeEBBwDtAdQB6wEHAO0B4AHUAQcAwQHuAb8BBwDBAe8B7gEHAO4BvAG+AQcA7gHvAbwBBwC/AfAByQEHAL8B7gHwAQcA8AG+AcgBBwDwAe4BvgEHAMEB8QHvAQcAwQHdAfEBBwDdAfIB8QEHAN0B3gHyAQcA3wHyAd4BBwDfAfMB8gEHAOAB8wHfAQcA4AH0AfMBBwD1AeIB9gEHAPUB4wHiAQcA9QHLAc8BBwD1AfYBywEHAOIB9wH2AQcA4gHlAfcBBwDLAfcBzgEHAMsB9gH3AQcA7QH1AfgBBwDtAeMB9QEHAO0B9AHgAQcA7QH4AfQBBwD5AfoB+wEHAPkB/AH6AQcA/QH7Af4BBwD9AfkB+wEHAP8BAAIBAgcA/wECAgACBwADAgECBAIHAAMC/wEBAgcABQIEAgYCBwAFAgMCBAIHAAcCBgIIAgcABwIFAgYCBwAJAgoCCwIHAAkCDAIKAgcABwINAg4CBwAHAggCDQIHAAwCDQIKAgcADAIOAg0CBwAPAg4CDAIHAA8CEAIOAgcAEQIMAgkCBwARAg8CDAIHABICEQIJAgcAEgITAhECBwAUAgkCCwIHABQCEgIJAgcAFQIWAhcCBwAVAhgCFgIHABgCGQIWAgcAGAIaAhkCBwAbAhgCFQIHABsCHAIYAgcAHAIaAhgCBwAcAh0CGgIHAB4CHwIgAgcAHgIhAh8CBwAhAiICHwIHACECIwIiAgcAJAIhAh4CBwAkAiUCIQIHACUCIwIhAgcAJQImAiMCBwAnAiUCJAIHACcCKAIlAgcAKAImAiUCBwAoAikCJgIHACoCKAInAgcAKgIrAigCBwArAikCKAIHACsCLAIpAgcALQIrAioCBwAtAi4CKwIHAC4CLAIrAgcALgIvAiwCBwAwAi4CLQIHADACMQIuAgcAMQIvAi4CBwAxAjICLwIHADMCMQIwAgcAMwI0AjECBwA0AjICMQIHADQCNQIyAgcANgI0AjMCBwA2AjcCNAIHADcCNQI0AgcANwI4AjUCBwD6ATkC+wEHAPoBOgI5AgcA+wE7Av4BBwD7ATkCOwIHAAACPAIBAgcAAAI9AjwCBwABAj4CBAIHAAECPAI+AgcABAI/AgYCBwAEAj4CPwIHAAYCQAIIAgcABgI/AkACBwAIAkECDQIHAAgCQAJBAgcADQJCAgoCBwANAkECQgIHAAoCQwILAgcACgJCAkMCBwALAkQCFAIHAAsCQwJEAgcAGgJFAhkCBwAaAkYCRQIHAEYCOgJFAgcARgI5AjoCBwAdAkYCGgIHAB0CRwJGAgcARwI5AkYCBwBHAjsCOQIHACMCSAIiAgcAIwJJAkgCBwBJAj0CSAIHAEkCPAI9AgcAJgJJAiMCBwAmAkoCSQIHAEoCPAJJAgcASgI+AjwCBwApAkoCJgIHACkCSwJKAgcASwI+AkoCBwBLAj8CPgIHACwCSwIpAgcALAJMAksCBwBMAj8CSwIHAEwCQAI/AgcALwJMAiwCBwAvAk0CTAIHAE0CQAJMAgcATQJBAkACBwAyAk0CLwIHADICTgJNAgcATgJBAk0CBwBOAkICQQIHADUCTgIyAgcANQJPAk4CBwBPAkICTgIHAE8CQwJCAgcAOAJPAjUCBwA4AlACTwIHAFACQwJPAgcAUAJEAkMCBwBRAlICUwIHAFECVAJSAgcAVAL8AVICBwBUAvoB/AEHAFUCVAJRAgcAVQJWAlQCBwBWAvoBVAIHAFYCOgL6AQcAVwJWAlUCBwBXAlgCVgIHAFgCOgJWAgcAWAJFAjoCBwBZAlgCVwIHAFkCWgJYAgcAWgJFAlgCBwBaAhkCRQIHAFsCWgJZAgcAWwJcAloCBwBcAhkCWgIHAFwCFgIZAgcAXQJcAlsCBwBdAl4CXAIHAF4CFgJcAgcAXgIXAhYCBwD5AV8C/AEHAPkBYAJfAgcAYAJhAl8CBwBgAmICYQIHAP0BYAL5AQcA/QFjAmACBwBjAmICYAIHAGMCZAJiAgcAZQJfAmECBwBlAmYCXwIHAPwBZgJSAgcA/AFfAmYCBwBnAmgCaQIHAGcCagJoAgcAagICAmgCBwBqAgACAgIHAGsCIAIfAgcAawJsAiACBwBtAmsCbgIHAG0CbAJrAgcAbwIfAiICBwBvAmsCHwIHAG4CbwJwAgcAbgJrAm8CBwBnAnECagIHAGcCcgJxAgcAAAJxAj0CBwAAAmoCcQIHAEgCbwIiAgcASAJzAm8CBwB0Am8CcwIHAHQCcAJvAgcAPQJzAkgCBwA9AnECcwIHAHICcwJxAgcAcgJ0AnMCBwB1AmgCAgIHAHUCdgJoAgcAdwJ4AnkCBwB3AnoCeAIHAHoCewJ4AgcAegJ8AnsCBwB9Av8BAwIHAH0CfgL/AQcAfwIDAgUCBwB/An0CAwIHAH4CAgL/AQcAfgJ1AgICBwCAAgUCBwIHAIACfwIFAgcAgQIHAg4CBwCBAoACBwIHAIICDgIQAgcAggKBAg4CBwCDAoICEAIHAIMChAKCAgcAhQIRAhMCBwCFAoYCEQIHAIYCDwIRAgcAhgKHAg8CBwCHAhACDwIHAIcCgwIQAgcAiAJ9An8CBwCIAokCfQIHAIkCfgJ9AgcAiQKKAn4CBwCLAn8CgAIHAIsCiAJ/AgcAjAKAAoECBwCMAosCgAIHAI0CgQKCAgcAjQKMAoECBwCOAoIChAIHAI4CjQKCAgcAjwKEAoMCBwCPAo4ChAIHAJACgwKHAgcAkAKPAoMCBwCRAocChgIHAJECkAKHAgcAkgKGAoUCBwCSApEChgIHAJMChQITAgcAkwKSAoUCBwCUAhMCEgIHAJQCkwITAgcAlQISAhQCBwCVApQCEgIHAJYCFAJEAgcAlgKVAhQCBwCXAkQCUAIHAJcClgJEAgcAmAJ7AnwCBwCYApkCewIHAJoCfAJ6AgcAmgKYAnwCBwCbAnoCdwIHAJsCmgJ6AgcAnAJ2AnUCBwCcAp0CdgIHAIoCdQJ+AgcAigKcAnUCBwCeAokCiAIHAJ4CnwKJAgcAnwKKAokCBwCfAqACigIHAKECiAKLAgcAoQKeAogCBwCgApwCigIHAKACogKcAgcAowKLAowCBwCjAqECiwIHAKQCjAKNAgcApAKjAowCBwClAo0CjgIHAKUCpAKNAgcApgKOAo8CBwCmAqUCjgIHAKcCjwKQAgcApwKmAo8CBwCoApACkQIHAKgCpwKQAgcAqQKRApICBwCpAqgCkQIHAKoCkgKTAgcAqgKpApICBwCrApMClAIHAKsCqgKTAgcArAKUApUCBwCsAqsClAIHAK0ClQKWAgcArQKsApUCBwCuApYClwIHAK4CrQKWAgcArwKZApgCBwCvArACmQIHALECmAKaAgcAsQKvApgCBwCyApoCmwIHALICsQKaAgcAogKdApwCBwCiArMCnQIHALQCUwJSAgcAtAK1AlMCBwC2ArUCtAIHALYCtwK1AgcAuAJRAlMCBwC4ArkCUQIHALoCXQJbAgcAugK7Al0CBwC8AlsCWQIHALwCugJbAgcAvQJRArkCBwC9AlUCUQIHALwCVwK+AgcAvAJZAlcCBwC+AlUCvQIHAL4CVwJVAgcAtQK4AlMCBwC1Ar8CuAIHALcCvwK1AgcAtwLAAr8CBwC4AsECuQIHALgCwgLBAgcAugLDArsCBwC6AsQCwwIHALwCxAK6AgcAvALFAsQCBwC9AsECxgIHAL0CuQLBAgcAvALHAsUCBwC8Ar4CxwIHAL4CxgLHAgcAvgK9AsYCBwC/AsICuAIHAL8CyALCAgcAwALIAr8CBwDAAskCyAIHAMoCywLMAgcAygLNAssCBwDOAswCzwIHAM4CygLMAgcAzQLQAssCBwDNAtEC0AIHANICzwLTAgcA0gLOAs8CBwDRAtQC0AIHANEC1QLUAgcA1gLTAtcCBwDWAtIC0wIHANgC2QLaAgcA2ALbAtkCBwDVAtoC1AIHANUC2ALaAgcA3ALKAs4CBwDcAt0CygIHAN0CzQLKAgcA3QLeAs0CBwDfAs4C0gIHAN8C3ALOAgcA4ALSAtYCBwDgAt8C0gIHAN4C0QLNAgcA3gLhAtECBwDiAtsC2AIHAOIC4wLbAgcA5ALYAtUCBwDkAuIC2AIHAOEC1QLRAgcA4QLkAtUCBwDlAuIC5AIHAOUC5gLiAgcA5gLjAuICBwDmAucC4wIHAOgCewLpAgcA6AJ4AnsCBwDqAngC6AIHAOoCeQJ4AgcA6wKZArACBwDrAuwCmQIHAOwCewKZAgcA7ALpAnsCBwDmAukC7AIHAOYC5QLpAgcA6wLmAuwCBwDrAucC5gIHAO0C7gLvAgcA7QLwAu4CBwDwAukC7gIHAPAC6ALpAgcAaQLwAu0CBwBpAvEC8AIHAPEC6ALwAgcA8QLqAugCBwBoAvECaQIHAGgC8gLxAgcA8gLqAvECBwDyAnkC6gIHAHYC8gJoAgcAdgLzAvICBwDzAnkC8gIHAPMCdwJ5AgcAnQLzAnYCBwCdAvQC8wIHAPQCdwLzAgcA9AKbAncCBwCzAvQCnQIHALMC9QL0AgcA9QKbAvQCBwD1ArICmwIHAO8C5ALhAgcA7wLuAuQCBwDkAukC5QIHAOQC7gLpAgcAYwL2AmQCBwBjAvcC9gIHAPcC7wL2AgcA9wLtAu8CBwD9AfcCYwIHAP0B+AL3AgcA+ALtAvcCBwD4AmkC7QIHAP4B+AL9AQcA/gH5AvgCBwD5AmkC+AIHAPkCZwJpAgcAOwL5Av4BBwA7AvoC+QIHAPoCZwL5AgcA+gJyAmcCBwBHAvoCOwIHAEcC+wL6AgcA+wJyAvoCBwD7AnQCcgIHAB0C+wJHAgcAHQL8AvsCBwD8AnQC+wIHAPwCcAJ0AgcAHAL8Ah0CBwAcAv0C/AIHAP0CcAL8AgcA/QJuAnACBwAbAv0CHAIHABsC/gL9AgcA/gJuAv0CBwD+Am0CbgIHAP8CAAMBAwcA/wLcAgADBwACA9wC/wIHAAID3QLcAgcA9gLhAgMDBwD2Au8C4QIHAAQD4QLeAgcABAMDA+ECBwDdAgQD3gIHAN0CAgMEAwcABQP2AgMDBwAFAwYD9gIHAAcDAwMEAwcABwMFAwMDBwAIAwQDAgMHAAgDBwMEAwcACQMCA/8CBwAJAwgDAgMHAAoD/wIBAwcACgMJA/8CBwALA2ICZAIHAAsDDANiAgcADANhAmICBwAMAw0DYQIHAAsD9gIGAwcACwNkAvYCBwAOAw0DDAMHAA4DDwMNAwcAEAMMAwsDBwAQAw4DDAMHABEDCwMGAwcAEQMQAwsDBwASAwYDBQMHABIDEQMGAwcAEwMFAwcDBwATAxIDBQMHABQDBwMIAwcAFAMTAwcDBwAVAwgDCQMHABUDFAMIAwcAFgMJAwoDBwAWAxUDCQMHAAADCgMBAwcAAAMWAwoDBwDfAgAD3AIHAN8CFwMAAwcAGAMPAw4DBwAYAxkDDwMHABoDDgMQAwcAGgMYAw4DBwAbAxADEQMHABsDGgMQAwcAHAMRAxIDBwAcAxsDEQMHAB0DEgMTAwcAHQMcAxIDBwAeAxMDFAMHAB4DHQMTAwcAHwMUAxUDBwAfAx4DFAMHACADFQMWAwcAIAMfAxUDBwAhAxYDAAMHACEDIAMWAwcAIgMAAxcDBwAiAyEDAAMHACMDJAMlAwcAIwMmAyQDBwDgAhcD3wIHAOACIgMXAwcAJwMNAw8DBwAnAygDDQMHACkDDwMZAwcAKQMnAw8DBwAoA2ECDQMHACgDZQJhAgcAKgNmAmUCBwAqAysDZgIHACwDKwMqAwcALAMtAysDBwAnA2UCKAMHACcDKgNlAgcAKQMqAycDBwApAywDKgMHAGYCtAJSAgcAZgIrA7QCBwArA7YCtAIHACsDLQO2AgcALgPPAswCBwAuAy8DzwIHADADzALLAgcAMAMuA8wCBwAvA9MCzwIHAC8DMQPTAgcAMQPXAtMCBwAxAzID1wIHADMDywLQAgcAMwMwA8sCBwA0A9AC1AIHADQDMwPQAgcANQPaAtkCBwA1AzYD2gIHADYD1ALaAgcANgM0A9QCBwA3Ay8DLgMHADcDOAMvAwcAOQMuAzADBwA5AzcDLgMHADgDMQMvAwcAOAM6AzEDBwA7AzADMwMHADsDOQMwAwcAOgMyAzEDBwA6AzwDMgMHAD0DMwM0AwcAPQM7AzMDBwA+AzQDNgMHAD4DPQM0AwcAPwM2AzUDBwA/Az4DNgMHAEADxgLBAgcAQANBA8YCBwBCA8ECwgIHAEIDQAPBAgcAQQPHAsYCBwBBA0MDxwIHAEMDxQLHAgcAQwNEA8UCBwBEA8QCxQIHAEQDRQPEAgcARQPDAsQCBwBFA0YDwwIHAEcDwgLIAgcARwNCA8ICBwBIA8gCyQIHAEgDRwPIAgcASQNBA0ADBwBJA0oDQQMHAEsDQANCAwcASwNJA0ADBwBKA0MDQQMHAEoDTANDAwcATQNCA0cDBwBNA0sDQgMHAEwDRANDAwcATANOA0QDBwBOA0UDRAMHAE4DTwNFAwcATwNGA0UDBwBPA1ADRgMHAFEDRwNIAwcAUQNNA0cDBwBSA1MDVAMHAFIDVQNTAwcAVgNUA1cDBwBWA1IDVAMHAFgDWQNaAwcAWANbA1kDBwBcA1oDXQMHAFwDWANaAwcAXgNdA18DBwBeA1wDXQMHAGADYQNiAwcAYANjA2EDBwBkA2IDZQMHAGQDYANiAwcAZgNnA1UDBwBmA2gDZwMHAGkDaANmAwcAaQNqA2gDBwBoA2sDZwMHAGgDbANrAwcAagNsA2gDBwBqA20DbAMHAG4DbwNwAwcAbgNxA28DBwByA3EDbgMHAHIDcwNxAwcAcQN0A28DBwBxA3UDdAMHAHMDdQNxAwcAcwN2A3UDBwB3AyYDIwMHAHcDeAMmAwcAeQN4A3cDBwB5A3oDeAMHAHsDVQNSAwcAewNmA1UDBwB8A2YDewMHAHwDaQNmAwcAfQNSA1YDBwB9A3sDUgMHAH4DewN9AwcAfgN8A3sDBwB/A1sDWAMHAH8DgANbAwcAgQOAA38DBwCBA4IDgAMHAIMDWANcAwcAgwN/A1gDBwCEA38DgwMHAIQDgQN/AwcAhQNcA14DBwCFA4MDXAMHAIYDgwOFAwcAhgOEA4MDBwCHA2MDYAMHAIcDiANjAwcAiQOIA4cDBwCJA4oDiAMHAIsDYANkAwcAiwOHA2ADBwCMA4cDiwMHAIwDiQOHAwcAJQONA44DBwAlA48DjQMHAI8DkAONAwcAjwORA5ADBwCRA5IDkAMHAJEDawOSAwcAawOTA5IDBwBrA2wDkwMHAGwDlAOTAwcAbANtA5QDBwBtA5UDlAMHAG0DlgOVAwcAlgOXA5UDBwCWA3kDlwMHAHkDmAOXAwcAeQN3A5gDBwB3A5kDmAMHAHcDIwOZAwcAIwOOA5kDBwAjAyUDjgMHAJoDjQOQAwcAmgObA40DBwCcA5sDmgMHAJwDnQObAwcAmwOOA40DBwCbA54DjgMHAJ0DngObAwcAnQOfA54DBwCeA5kDjgMHAJ4DoAOZAwcAnwOgA54DBwCfA3QDoAMHAKADmAOZAwcAoAOhA5gDBwB0A6EDoAMHAHQDdQOhAwcAoQOXA5gDBwChA6IDlwMHAHUDogOhAwcAdQN2A6IDBwCiA5UDlwMHAKIDowOVAwcAdgOjA6IDBwB2A3MDowMHAKMDlAOVAwcAowOkA5QDBwBzA6QDowMHAHMDcgOkAwcApAOTA5QDBwCkA6UDkwMHAHIDpQOkAwcAcgNuA6UDBwClA5IDkwMHAKUDpgOSAwcAbgOmA6UDBwBuA3ADpgMHAKYDkAOSAwcApgOaA5ADBwBwA5oDpgMHAHADnAOaAwcApwOoA6kDBwCnA6oDqAMHAKsDqgOnAwcAqwOsA6oDBwCtA6wDqwMHAK0DrgOsAwcArwOoA7ADBwCvA6kDqAMHAK0DsQOuAwcArQOyA7EDBwCzA7EDsgMHALMDtAOxAwcAtQO0A7MDBwC1A7YDtAMHAK8DtgO1AwcArwOwA7YDBwBlA7cDuAMHAGUDYgO3AwcAYgO5A7cDBwBiA2EDuQMHAGEDugO5AwcAYQNjA7oDBwBjA7sDugMHAGMDiAO7AwcAiAO8A7sDBwCIA4oDvAMHAIoDvQO8AwcAigOJA70DBwCJA74DvQMHAIkDjAO+AwcAjAO/A74DBwCMA4sDvwMHAIsDwAO/AwcAiwNkA8ADBwBkA7gDwAMHAGQDZQO4AwcAwQO3A7kDBwDBA8IDtwMHAF8DwgPBAwcAXwPDA8IDBwDCA7gDtwMHAMIDxAO4AwcAwwPEA8IDBwDDA8UDxAMHAMQDwAO4AwcAxAPGA8ADBwDFA8YDxAMHAMUDxwPGAwcAxgO/A8ADBwDGA8gDvwMHAMcDyAPGAwcAxwPJA8gDBwDIA74DvwMHAMgDygO+AwcAyQPKA8gDBwDJA8sDygMHAMoDvQO+AwcAygPMA70DBwDLA8wDygMHAMsDzQPMAwcAzAO8A70DBwDMA84DvAMHAM0DzgPMAwcAzQOGA84DBwDOA7sDvAMHAM4DzwO7AwcAhgPPA84DBwCGA4UDzwMHAM8DugO7AwcAzwPQA7oDBwCFA9ADzwMHAIUDXgPQAwcA0AO5A7oDBwDQA8EDuQMHAF4DwQPQAwcAXgNfA8EDBwDRA9ID0wMHANED1APSAwcA1QPWA9cDBwDVA9gD1gMHANgD2QPaAwcA2APVA9kDBwDbA9YD3AMHANsD1wPWAwcA2gPdA94DBwDaA9kD3QMHAN4D0gPUAwcA3gPdA9IDBwDfA9wD4AMHAN8D2wPcAwcA0wPgA9EDBwDTA98D4AMHAOEDywPiAwcA4QOCA8sDBwDFA+MD5AMHAMUDWQPjAwcAWwPjA1kDBwBbA+UD4wMHAMUD5gPHAwcAxQPkA+YDBwCAA+UDWwMHAIAD5wPlAwcAggPnA4ADBwCCA+ED5wMHAMcD6APJAwcAxwPmA+gDBwDJA+IDywMHAMkD6APiAwcA0wPpA+oDBwDTA9ID6QMHAOsD6QPsAwcA6wPqA+kDBwDVA+0D7gMHANUD1wPtAwcA7wPtA/ADBwDvA+4D7QMHAO4D2QPVAwcA7gPxA9kDBwDyA+4D7wMHAPID8QPuAwcA2wPtA9cDBwDbA/MD7QMHAPAD8wP0AwcA8APtA/MDBwDxA90D2QMHAPED9QPdAwcA9gPxA/IDBwD2A/UD8QMHAPUD0gPdAwcA9QPpA9IDBwDsA/UD9gMHAOwD6QP1AwcA3wPzA9sDBwDfA/cD8wMHAPQD9wP4AwcA9APzA/cDBwDTA/cD3wMHANMD6gP3AwcA+APqA+sDBwD4A/cD6gMHAOED+QP6AwcA4QPiA/kDBwCoA/kDsAMHAKgD+gP5AwcA5AP7A/wDBwDkA+MD+wMHALED+wOuAwcAsQP8A/sDBwDlA/sD4wMHAOUD/QP7AwcArgP9A6wDBwCuA/sD/QMHAOQD/gPmAwcA5AP8A/4DBwC0A/wDsQMHALQD/gP8AwcA5wP9A+UDBwDnA/8D/QMHAKwD/wOqAwcArAP9A/8DBwDhA/8D5wMHAOED+gP/AwcAqgP6A6gDBwCqA/8D+gMHAOYDAAToAwcA5gP+AwAEBwC2A/4DtAMHALYDAAT+AwcA6AP5A+IDBwDoAwAE+QMHALADAAS2AwcAsAP5AwAEBwABBAIEAwQHAAEEBAQCBAcABAQFBAIEBwAEBAYEBQQHAAYEBwQFBAcABgQIBAcE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BwB9BH4EegQHAH4EZwRmBAcAfgR9BGcEBwB/BHkEewQHAH8EfQR5BAcAfQRlBGcEBwB9BH8EZQQHAIAEewR8BAcAgAR/BHsEBwB/BGgEZQQHAH8EgARoBAcAfgR8BHoEBwB+BIAEfAQHAIAEZgRoBAcAgAR+BGYEBwCBBIIEgwQHAIEEhASCBAcAhQSGBIcEBwCFBIgEhgQHAIkEhwSKBAcAiQSFBIcEBwCLBIkEigQHAIsEjASJBAcAhgSMBIsEBwCGBIgEjAQHAIcEjQSOBAcAhwSGBI0EBwCKBI4EjwQHAIoEhwSOBAcAkASKBI8EBwCQBIsEigQHAI0EiwSQBAcAjQSGBIsEBwCOBHUEdgQHAI4EjQR1BAcAjwR2BHcEBwCPBI4EdgQHAHgEjwR3BAcAeASQBI8EBwB1BJAEeAQHAHUEjQSQBAcAhQSRBIgEBwCFBJIEkQQHAJEEjASIBAcAkQSTBIwEBwCTBIkEjAQHAJMElASJBAcAiQSSBIUEBwCJBJQEkgQHAJIElQSRBAcAkgSWBJUEBwCDBJYEgQQHAIMElQSWBAcAkQSXBJMEBwCRBJUElwQHAIIElQSDBAcAggSXBJUEBwCTBJgElAQHAJMElwSYBAcAhASXBIIEBwCEBJgElwQHAJQElgSSBAcAlASYBJYEBwCBBJgEhAQHAIEElgSYBAcAmQSaBJsEBwCZBJwEmgQHAJsEnQSeBAcAmwSaBJ0EBwCfBKAEoQQHAJ8EogSgBAcAoQScBJkEBwChBKAEnAQHAKMEogSfBAcAowSkBKIEBwClBKYEpwQHAKUEqASmBAcApgSpBKcEBwCmBKoEqQQHAKoEqwSpBAcAqgSsBKsEBwCsBK0EqwQHAKwErgStBAcArgSvBK0EBwCuBLAErwQHALEEpASjBAcAsQSyBKQEBwCwBLMErwQHALAEtASzBAcAtQSyBLEEBwC1BLYEsgQHALMEtwS4BAcAswS0BLcEBwC5BLUEugQHALkEtgS1BAcAuAS7BLwEBwC4BLcEuwQHAL0EugS+BAcAvQS5BLoEBwC/BL4EwAQHAL8EvQS+BAcAvATBBMIEBwC8BLsEwQQHAMMEwATEBAcAwwS/BMAEBwDFBMQExgQHAMUEwwTEBAcAwgTHBMgEBwDCBMEExwQHAMkEmwTKBAcAyQSZBJsEBwDKBJ4EywQHAMoEmwSeBAcAzAShBM0EBwDMBJ8EoQQHAM0EmQTJBAcAzQShBJkEBwDOBJ8EzAQHAM4EowSfBAcAzwSnBNAEBwDPBKUEpwQHAKcE0QTQBAcApwSpBNEEBwCpBNIE0QQHAKkEqwTSBAcAqwTTBNIEBwCrBK0E0wQHAK0E1ATTBAcArQSvBNQEBwDVBKMEzgQHANUEsQSjBAcArwTWBNQEBwCvBLME1gQHANcEsQTVBAcA1wS1BLEEBwDWBLgE2AQHANYEswS4BAcAugTXBNkEBwC6BLUE1wQHANgEvATaBAcA2AS4BLwEBwC+BNkE2wQHAL4EugTZBAcAwATbBNwEBwDABL4E2wQHANoEwgTdBAcA2gS8BMIEBwDEBNwE3gQHAMQEwATcBAcAxgTeBN8EBwDGBMQE3gQHAN0EyATgBAcA3QTCBMgEBwDhBMoE4gQHAOEEyQTKBAcA4gTLBOMEBwDiBMoEywQHAOQEzQTlBAcA5ATMBM0EBwDlBMkE4QQHAOUEzQTJBAcA5gTMBOQEBwDmBM4EzAQHAOcE0AToBAcA5wTPBNAEBwDQBOkE6AQHANAE0QTpBAcA0QTqBOkEBwDRBNIE6gQHANIE6wTqBAcA0gTTBOsEBwDTBOwE6wQHANME1ATsBAcA7QTOBOYEBwDtBNUEzgQHANQE7gTsBAcA1ATWBO4EBwDvBNUE7QQHAO8E1wTVBAcA7gTYBPAEBwDuBNYE2AQHANkE7wTxBAcA2QTXBO8EBwDwBNoE8gQHAPAE2ATaBAcA2wTxBPMEBwDbBNkE8QQHANwE8wT0BAcA3ATbBPMEBwDyBN0E9QQHAPIE2gTdBAcA3gT0BPYEBwDeBNwE9AQHAN8E9gT3BAcA3wTeBPYEBwD1BOAE+AQHAPUE3QTgBAcA+QTiBPoEBwD5BOEE4gQHAPoE4wT7BAcA+gTiBOMEBwD8BOUE/QQHAPwE5ATlBAcA/QThBPkEBwD9BOUE4QQHAP4E5AT8BAcA/gTmBOQEBwD/BOgEAAUHAP8E5wToBAcA6AQBBQAFBwDoBOkEAQUHAOkEAgUBBQcA6QTqBAIFBwDqBAMFAgUHAOoE6wQDBQcA6wQEBQMFBwDrBOwEBAUHAAUF5gT+BAcABQXtBOYEBwDsBAYFBAUHAOwE7gQGBQcABwXtBAUFBwAHBe8E7QQHAAYF8AQIBQcABgXuBPAEBwDxBAcFCQUHAPEE7wQHBQcACAXyBAoFBwAIBfAE8gQHAPMECQULBQcA8wTxBAkFBwD0BAsFDAUHAPQE8wQLBQcACgX1BA0FBwAKBfIE9QQHAPYEDAUOBQcA9gT0BAwFBwD3BA4FDwUHAPcE9gQOBQcADQX4BBAFBwANBfUE+AQHABEFEgUTBQcAEQUUBRIFBwAUBRUFEgUHABQFFgUVBQcAFwUYBRkFBwAXBRoFGAUHABYFGQUVBQcAFgUXBRkFBwAaBRsFGAUHABoFHAUbBQcAHQUeBR8FBwAdBSAFHgUHACEFHQUfBQcAIQUiBR0FBwAjBSIFIQUHACMFJAUiBQcAJQUkBSMFBwAlBSYFJAUHACcFJgUlBQcAJwUoBSYFBwAcBSkFGwUHABwFKgUpBQcAKwUoBScFBwArBSwFKAUHACoFLQUpBQcAKgUuBS0FBwAvBSsFMAUHAC8FLAUrBQcALQUxBTIFBwAtBS4FMQUHADMFMAU0BQcAMwUvBTAFBwAyBTUFNgUHADIFMQU1BQcANgU3BTgFBwA2BTUFNwUHADkFNAU6BQcAOQUzBTQFBwA7BTwFPQUHADsFPgU8BQcAOAU+BTsFBwA4BTcFPgUHAD8FOgVABQcAPwU5BToFBwA3BUEFPgUHADcFQgVBBQcAQgXDBEEFBwBCBb8EwwQHADUFQgU3BQcANQVDBUIFBwBDBb8EQgUHAEMFvQS/BAcAMQVDBTUFBwAxBUQFQwUHAEQFvQRDBQcARAW5BL0EBwAuBUQFMQUHAC4FRQVEBQcARQW5BEQFBwBFBbYEuQQHACoFRQUuBQcAKgVGBUUFBwBGBbYERQUHAEYFsgS2BAcAHAVGBSoFBwAcBUcFRgUHAEcFsgRGBQcARwWkBLIEBwAaBUcFHAUHABoFSAVHBQcASAWkBEcFBwBIBaIEpAQHABcFSAUaBQcAFwVJBUgFBwBJBaIESAUHAEkFoASiBAcAFgVJBRcFBwAWBUoFSQUHAEoFoARJBQcASgWcBKAEBwAUBUoFFgUHABQFSwVKBQcASwWcBEoFBwBLBZoEnAQHABEFSwUUBQcAEQVMBUsFBwBMBZoESwUHAEwFnQSaBAcAHQVNBSAFBwAdBU4FTQUHAE4FqARNBQcATgWmBKgEBwAiBU4FHQUHACIFTwVOBQcATwWmBE4FBwBPBaoEpgQHACQFTwUiBQcAJAVQBU8FBwBQBaoETwUHAFAFrASqBAcAJgVQBSQFBwAmBVEFUAUHAFEFrARQBQcAUQWuBKwEBwAoBVEFJgUHACgFUgVRBQcAUgWuBFEFBwBSBbAErgQHACwFUgUoBQcALAVTBVIFBwBTBbAEUgUHAFMFtASwBAcALwVTBSwFBwAvBVQFUwUHAFQFtARTBQcAVAW3BLQEBwAzBVQFLwUHADMFVQVUBQcAVQW3BFQFBwBVBbsEtwQHADkFVQUzBQcAOQVWBVUFBwBWBbsEVQUHAFYFwQS7BAcAPwVWBTkFBwA/BVcFVgUHAFcFwQRWBQcAVwXHBMEEBwA+BVgFPAUHAD4FQQVYBQcAQQXFBFgFBwBBBcMExQQHAMcEWQXIBAcAxwRaBVkFBwBaBcYEWQUHAFoFxQTGBAcAVwVaBccEBwBXBVsFWgUHAFsFxQRaBQcAWwVYBcUEBwA/BVsFVwUHAD8FXAVbBQcAXAVYBVsFBwBcBTwFWAUHAEAFXAU/BQcAQAVdBVwFBwBdBTwFXAUHAF0FPQU8BQcAIAVeBR4FBwAgBV8FXgUHAF8FEwVeBQcAXwURBRMFBwBNBV8FIAUHAE0FYAVfBQcAYAURBV8FBwBgBUwFEQUHAKgEYAVNBQcAqARhBWAFBwBhBUwFYAUHAGEFnQRMBQcApQRhBagEBwClBGIFYQUHAGIFnQRhBQcAYgWeBJ0EBwDPBGIFpQQHAM8EYwViBQcAYwWeBGIFBwBjBcsEngQHAOcEYwXPBAcA5wRkBWMFBwBkBcsEYwUHAGQF4wTLBAcA/wRkBecEBwD/BGUFZAUHAGUF4wRkBQcAZQX7BOMEBwDIBGYF4AQHAMgEWQVmBQcAWQXfBGYFBwBZBcYE3wQHAOAEZwX4BAcA4ARmBWcFBwBmBfcEZwUHAGYF3wT3BAcA+ARoBRAFBwD4BGcFaAUHAGcFDwVoBQcAZwX3BA8FBwBpBWoFawUHAGkFbAVqBQcAbQVrBW4FBwBtBWkFawUHAG8FcAVxBQcAbwVyBXAFBwBsBXEFagUHAGwFbwVxBQcAcgVzBXAFBwByBXQFcwUHAHUFdgV3BQcAdQV4BXYFBwB5BXUFdwUHAHkFegV1BQcAewV6BXkFBwB7BXwFegUHAH0FfAV7BQcAfQV+BXwFBwB/BX4FfQUHAH8FgAV+BQcAdAWBBXMFBwB0BYIFgQUHAIMFgAV/BQcAgwWEBYAFBwCCBYUFgQUHAIIFhgWFBQcAhwWDBYgFBwCHBYQFgwUHAIUFiQWKBQcAhQWGBYkFBwCLBYgFjAUHAIsFhwWIBQcAigWNBY4FBwCKBYkFjQUHAI4FjwWQBQcAjgWNBY8FBwCRBYwFkgUHAJEFiwWMBQcAkAWTBZQFBwCQBY8FkwUHAJQFlQWWBQcAlAWTBZUFBwCXBZIFmAUHAJcFkQWSBQcAawWZBZoFBwBrBWoFmQUHAG4FmgWbBQcAbgVrBZoFBwBxBZwFnQUHAHEFcAWcBQcAagWdBZkFBwBqBXEFnQUHAHAFngWcBQcAcAVzBZ4FBwB3BZ8FoAUHAHcFdgWfBQcAoQV3BaAFBwChBXkFdwUHAKIFeQWhBQcAogV7BXkFBwCjBXsFogUHAKMFfQV7BQcApAV9BaMFBwCkBX8FfQUHAHMFpQWeBQcAcwWBBaUFBwCmBX8FpAUHAKYFgwV/BQcAgQWnBaUFBwCBBYUFpwUHAIgFpgWoBQcAiAWDBaYFBwCnBYoFqQUHAKcFhQWKBQcAjAWoBaoFBwCMBYgFqAUHAKkFjgWrBQcAqQWKBY4FBwCrBZAFrAUHAKsFjgWQBQcAkgWqBa0FBwCSBYwFqgUHAKwFlAWuBQcArAWQBZQFBwCuBZYFrwUHAK4FlAWWBQcAmAWtBbAFBwCYBZIFrQUHAJoFsQWyBQcAmgWZBbEFBwCbBbIFswUHAJsFmgWyBQcAnQW0BbUFBwCdBZwFtAUHAJkFtQWxBQcAmQWdBbUFBwCcBbYFtAUHAJwFngW2BQcAoAW3BbgFBwCgBZ8FtwUHALkFoAW4BQcAuQWhBaAFBwC6BaEFuQUHALoFogWhBQcAuwWiBboFBwC7BaMFogUHALwFowW7BQcAvAWkBaMFBwCeBb0FtgUHAJ4FpQW9BQcAvgWkBbwFBwC+BaYFpAUHAKUFvwW9BQcApQWnBb8FBwCoBb4FwAUHAKgFpgW+BQcAvwWpBcEFBwC/BacFqQUHAKoFwAXCBQcAqgWoBcAFBwDBBasFwwUHAMEFqQWrBQcAwwWsBcQFBwDDBasFrAUHAK0FwgXFBQcArQWqBcIFBwDEBa4FxgUHAMQFrAWuBQcAxgWvBccFBwDGBa4FrwUHALAFxQXIBQcAsAWtBcUFBwCyBfkE+gQHALIFsQX5BAcAswX6BPsEBwCzBbIF+gQHALUF/AT9BAcAtQW0BfwEBwCxBf0E+QQHALEFtQX9BAcAtAX+BPwEBwC0BbYF/gQHALgF/wQABQcAuAW3Bf8EBwABBbgFAAUHAAEFuQW4BQcAAgW5BQEFBwACBboFuQUHAAMFugUCBQcAAwW7BboFBwAEBbsFAwUHAAQFvAW7BQcAtgUFBf4EBwC2Bb0FBQUHAAYFvAUEBQcABgW+BbwFBwC9BQcFBQUHAL0FvwUHBQcAwAUGBQgFBwDABb4FBgUHAAcFwQUJBQcABwW/BcEFBwDCBQgFCgUHAMIFwAUIBQcACQXDBQsFBwAJBcEFwwUHAAsFxAUMBQcACwXDBcQFBwDFBQoFDQUHAMUFwgUKBQcADAXGBQ4FBwAMBcQFxgUHAA4FxwUPBQcADgXGBccFBwDIBQ0FEAUHAMgFxQUNBQcAyQXKBcsFBwDJBcwFygUHAM0FzAXJBQcAzQXOBcwFBwDPBdAF0QUHAM8F0gXQBQcA0QXOBc0FBwDRBdAFzgUHANMF0gXPBQcA0wXUBdIFBwDVBdYF1wUHANUF2AXWBQcA1gXZBdcFBwDWBdoF2QUHANoF2wXZBQcA2gXcBdsFBwDcBd0F2wUHANwF3gXdBQcA3gXfBd0FBwDeBeAF3wUHAOEF1AXTBQcA4QXiBdQFBwDgBeMF3wUHAOAF5AXjBQcA5QXiBeEFBwDlBeYF4gUHAOMF5wXoBQcA4wXkBecFBwDpBeUF6gUHAOkF5gXlBQcA6AXrBewFBwDoBecF6wUHAO0F6gXuBQcA7QXpBeoFBwDvBe4F8AUHAO8F7QXuBQcA7AXxBfIFBwDsBesF8QUHAPMF9AX1BQcA8wX2BfQFBwD2BfAF9AUHAPYF7wXwBQcA8gX3BfgFBwDyBfEF9wUHAPkF7wX2BQcA+QX6Be8FBwCTBfoF+QUHAJMFjwX6BQcA+gXtBe8FBwD6BfsF7QUHAI8F+wX6BQcAjwWNBfsFBwD7BekF7QUHAPsF/AXpBQcAjQX8BfsFBwCNBYkF/AUHAPwF5gXpBQcA/AX9BeYFBwCJBf0F/AUHAIkFhgX9BQcA/QXiBeYFBwD9Bf4F4gUHAIYF/gX9BQcAhgWCBf4FBwD+BdQF4gUHAP4F/wXUBQcAggX/Bf4FBwCCBXQF/wUHAP8F0gXUBQcA/wUABtIFBwB0BQAG/wUHAHQFcgUABgcAAAbQBdIFBwAABgEG0AUHAHIFAQYABgcAcgVvBQEGBwABBs4F0AUHAAEGAgbOBQcAbwUCBgEGBwBvBWwFAgYHAAIGzAXOBQcAAgYDBswFBwBsBQMGAgYHAGwFaQUDBgcAAwbKBcwFBwADBgQGygUHAGkFBAYDBgcAaQVtBQQGBwAFBtYF2AUHAAUGBgbWBQcAeAUGBgUGBwB4BXUFBgYHAAYG2gXWBQcABgYHBtoFBwB1BQcGBgYHAHUFegUHBgcABwbcBdoFBwAHBggG3AUHAHoFCAYHBgcAegV8BQgGBwAIBt4F3AUHAAgGCQbeBQcAfAUJBggGBwB8BX4FCQYHAAkG4AXeBQcACQYKBuAFBwB+BQoGCQYHAH4FgAUKBgcACgbkBeAFBwAKBgsG5AUHAIAFCwYKBgcAgAWEBQsGBwALBucF5AUHAAsGDAbnBQcAhAUMBgsGBwCEBYcFDAYHAAwG6wXnBQcADAYNBusFBwCHBQ0GDAYHAIcFiwUNBgcADQbxBesFBwANBg4G8QUHAIsFDgYNBgcAiwWRBQ4GBwAOBvcF8QUHAA4GDwb3BQcAkQUPBg4GBwCRBZcFDwYHABAG9gXzBQcAEAb5BfYFBwCVBfkFEAYHAJUFkwX5BQcAEQaXBZgFBwARBhIGlwUHAJYFEgYRBgcAlgWVBRIGBwASBg8GlwUHABIGEwYPBgcAlQUTBhIGBwCVBRAGEwYHABMG9wUPBgcAEwYUBvcFBwAQBhQGEwYHABAG8wUUBgcAFAb4BfcFBwAUBhUG+AUHAPMFFQYUBgcA8wX1BRUGBwAWBtgF1QUHABYGFwbYBQcAywUXBhYGBwDLBcoFFwYHABcGBQbYBQcAFwYYBgUGBwDKBRgGFwYHAMoFBAYYBgcAGAZ4BQUGBwAYBhkGeAUHAAQGGQYYBgcABAZtBRkGBwAZBnYFeAUHABkGGgZ2BQcAbQUaBhkGBwBtBW4FGgYHABoGnwV2BQcAGgYbBp8FBwBuBRsGGgYHAG4FmwUbBgcAGwa3BZ8FBwAbBhwGtwUHAJsFHAYbBgcAmwWzBRwGBwAcBv8EtwUHABwGZQX/BAcAswVlBRwGBwCzBfsEZQUHAB0GmAWwBQcAHQYRBpgFBwCvBREGHQYHAK8FlgURBgcAHgawBcgFBwAeBh0GsAUHAMcFHQYeBgcAxwWvBR0GBwBoBcgFEAUHAGgFHgbIBQcADwUeBmgFBwAPBccFHgYHAB8GIAYhBgcAHwYiBiAGBwAjBiEGJAYHACMGHwYhBgcAJQYkBiYGBwAlBiMGJAYHACcGJgYoBgcAJwYlBiYGBwApBiIGHwYHACkGKgYiBgcAKwYfBiMGBwArBikGHwYHACwGIwYlBgcALAYrBiMGBwAtBiUGJwYHAC0GLAYlBgcALgYsBi0GBwAuBi8GLAYHAC8GKwYsBgcALwYwBisGBwAwBikGKwYHADAGMQYpBgcAMQYqBikGBwAxBjIGKgYHADMGNAY1BgcAMwY2BjQGBwA3BjgGOQYHADcGOgY4BgcAOwY5BjwGBwA7BjcGOQYHAD0GPgY/BgcAPQZABj4GBwBBBj8GQgYHAEEGPQY/BgcAQwZCBkQGBwBDBkEGQgYHAEUGRgZHBgcARQZIBkYGBwA2BkgGRQYHADYGMwZIBgcASQZKBksGBwBJBkwGSgYHADoGTAZJBgcAOgY3BkwGBwBMBk0GSgYHAEwGTgZNBgcANwZOBkwGBwA3BjsGTgYHAE4GTwZNBgcATgZQBk8GBwBRBlIGUwYHAFEGVAZSBgcAVAZVBlIGBwBUBlYGVQYHAFYGVwZVBgcAVgZYBlcGBwBYBlkGVwYHAFgGWgZZBgcAWwZcBl0GBwBbBl4GXAYHAEAGXgZbBgcAQAY9Bl4GBwBeBl8GXAYHAF4GYAZfBgcAPQZgBl4GBwA9BkEGYAYHAGAGYQZfBgcAYAZiBmEGBwBBBmIGYAYHAEEGQwZiBgcAYwYzBjUGBwBjBmQGMwYHAGQGSAYzBgcAZAZlBkgGBwBlBkYGSAYHAGUGZgZGBgcAZwZRBlMGBwBnBmgGUQYHAGcGUAZoBgcAZwZPBlAGBwAvBkQGQgYHAC8GLgZEBgcAMAZCBj8GBwAwBi8GQgYHAGkGPgZABgcAaQZqBj4GBwBrBlsGXQYHAGsGbAZbBgcAaQZbBmwGBwBpBkAGWwYHADEGPwY+BgcAMQYwBj8GBwAyBj4GagYHADIGMQY+BgcAbQZuBm8GBwBtBnAGbgYHAHEGcgZzBgcAcQZ0BnIGBwBzBnUGdgYHAHMGcgZ1BgcAdwZxBngGBwB3BnQGcQYHAG8GeAZtBgcAbwZ3BngGBwB5BnoGewYHAHkGfAZ6BgcAfQZ+Bn8GBwB9BoAGfgYHAIEGfgaCBgcAgQZ/Bn4GBwCDBoQGhQYHAIMGhgaEBgcAdAaGBnIGBwB0BoQGhgYHAIMGhwaGBgcAgwaIBocGBwByBocGdQYHAHIGhgaHBgcAiQaKBosGBwCJBowGigYHAI0GigaOBgcAjQaLBooGBwCBBosGfwYHAIEGiQaLBgcAfQaLBo0GBwB9Bn8GiwYHAG4GjwaQBgcAbgaRBo8GBwCRBpIGjwYHAJEGkwaSBgcAcAaRBm4GBwBwBpQGkQYHAJQGkwaRBgcAlAaVBpMGBwCWBloGlwYHAJYGWQZaBgcAawaXBmwGBwBrBpYGlwYHAGkGlwaYBgcAaQZsBpcGBwCYBloGmQYHAJgGlwZaBgcAmgZYBlYGBwCaBpsGWAYHAJsGWgZYBgcAmwaZBloGBwCaBlQGnAYHAJoGVgZUBgcAnAZRBp0GBwCcBlQGUQYHAJ0GaAaeBgcAnQZRBmgGBwCeBlAGnwYHAJ4GaAZQBgcAUAagBp8GBwBQBk4GoAYHAKEGPAaiBgcAoQY7BjwGBwCjBpUGlAYHAKMGpAaVBgcApQaUBnAGBwClBqMGlAYHAKUGbQamBgcApQZwBm0GBwCmBngGpwYHAKYGbQZ4BgcApwZxBqgGBwCnBngGcQYHAKgGcwapBgcAqAZxBnMGBwCpBnYGqgYHAKkGcwZ2BgcAqwaYBpkGBwCrBqwGmAYHAK0GmQabBgcArQarBpkGBwCuBpsGmgYHAK4GrQabBgcArwaaBpwGBwCvBq4GmgYHALAGnAadBgcAsAavBpwGBwCxBp0GngYHALEGsAadBgcAsgaeBp8GBwCyBrEGngYHALMGoAahBgcAswa0BqAGBwC1BqEGogYHALUGswahBgcAtgakBqMGBwC2BrcGpAYHALgGowalBgcAuAa2BqMGBwC5BqUGpgYHALkGuAalBgcAugamBqcGBwC6BrkGpgYHALsGpwaoBgcAuwa6BqcGBwC8BqgGqQYHALwGuwaoBgcAvQapBqoGBwC9BrwGqQYHAGoGmAasBgcAagZpBpgGBwC+Bl8GYQYHAL4GvwZfBgcAvwZcBl8GBwC/BsAGXAYHAMAGXQZcBgcAwAbBBl0GBwDBBmsGXQYHAMEGwgZrBgcAwgaWBmsGBwDCBsMGlgYHAMMGWQaWBgcAwwbEBlkGBwDEBlcGWQYHAMQGxQZXBgcAxQZVBlcGBwDFBsYGVQYHAMYGUgZVBgcAxgbHBlIGBwDHBlMGUgYHAMcGyAZTBgcAyAZnBlMGBwDIBskGZwYHAMkGTwZnBgcAyQbKBk8GBwDKBk0GTwYHAMoGywZNBgcAywZKBk0GBwDLBswGSgYHAMwGSwZKBgcAzAbNBksGBwDOBkYGZgYHAM4GzwZGBgcAzwZHBkYGBwDPBtAGRwYHANEGvwa+BgcA0QbSBr8GBwDSBsAGvwYHANIG0wbABgcA0wbBBsAGBwDTBtQGwQYHANQGwgbBBgcA1AbVBsIGBwDVBsMGwgYHANUG1gbDBgcA1gbEBsMGBwDWBtcGxAYHANcGxQbEBgcA1wbYBsUGBwDYBsYGxQYHANgG2QbGBgcA2QbHBsYGBwDZBtoGxwYHANoGyAbHBgcA2gbbBsgGBwDbBskGyAYHANsG3AbJBgcA3AbKBskGBwDcBt0GygYHAN0GywbKBgcA3QbeBssGBwDeBswGywYHAN4G3wbMBgcA3wbNBswGBwDfBuAGzQYHAOEGzwbOBgcA4QbiBs8GBwDiBtAGzwYHAOIG4wbQBgcA5AY0BjYGBwDkBuUGNAYHAEUG5AY2BgcARQbmBuQGBwDnBkUGRwYHAOcG5gZFBgcA0AbnBkcGBwDQBugG5wYHAOMG6AbQBgcA4wbpBugGBwDqBuUG5AYHAOoG6wblBgcA5gbqBuQGBwDmBuwG6gYHAO0G5gbnBgcA7QbsBuYGBwDoBu0G5wYHAOgG7gbtBgcA6QbuBugGBwDpBu8G7gYHAPAGYwbxBgcA8AZkBmMGBwDyBmQG8AYHAPIGZQZkBgcA8wZlBvIGBwDzBmYGZQYHAGYG9AbOBgcAZgbzBvQGBwDOBvUG4QYHAM4G9Ab1BgcAjwY4BvYGBwCPBpIGOAYHAPcGjwb2BgcA9waQBo8GBwD4BvkG+gYHAPgG+wb5BgcA+wZ7BvkGBwD7BnkGewYHAPcG+wb4BgcA9wb8BvsGBwD8BnkG+wYHAPwG/QZ5BgcA9gb8BvcGBwD2Bv4G/AYHAP4G/Qb8BgcA/gb/Bv0GBwA4Bv4G9gYHADgGAAf+BgcAAAf/Bv4GBwAAB/EG/wYHADoGAAc4BgcAOgYBBwAHBwABB/EGAAcHAAEH8AbxBgcASQYBBzoGBwBJBgIHAQcHAAIH8AYBBwcAAgfyBvAGBwBLBgIHSQYHAEsGAwcCBwcAAwfyBgIHBwADB/MG8gYHAM0GAwdLBgcAzQYEBwMHBwAEB/MGAwcHAAQH9AbzBgcA4AYEB80GBwDgBgUHBAcHAAUH9AYEBwcABQf1BvQGBwD6BgYHhQYHAPoG+QYGBwcA+QYHBwYHBwD5BnsGBwcHAIUGCAeDBgcAhQYGBwgHBwAGBwkHCAcHAAYHBwcJBwcAgwYKB4gGBwCDBggHCgcHAAgHCwcKBwcACAcJBwsHBwAMBw0HDgcHAAwHDwcNBwcADwcQBw0HBwAPBxEHEAcHABIHDwcMBwcAEgcTBw8HBwATBxEHDwcHABMHFAcRBwcAFQcTBxIHBwAVBxYHEwcHABYHFAcTBwcAFgcXBxQHBwAYBxYHFQcHABgHGQcWBwcAGQcXBxYHBwAZBxoHFwcHABsHFwcaBwcAGwccBxcHBwAcBxQHFwcHABwHHQcUBwcAHgcQBxEHBwAeBx8HEAcHABQHHgcRBwcAFAcdBx4HBwB6BiAHIQcHAHoGfAYgBwcAfAb9BiAHBwB8BnkG/QYHACIH/QYjBwcAIgcgB/0GBwAeByMHHwcHAB4HIgcjBwcAHQciBx4HBwAdByQHIgcHACQHIAciBwcAJAchByAHBwA1BiUHYwYHADUGJgclBwcAJgcjByUHBwAmBx8HIwcHADQGJgc1BgcANAYnByYHBwAnBx8HJgcHACcHEAcfBwcA5QYnBzQGBwDlBigHJwcHACgHEAcnBwcAKAcNBxAHBwDrBigH5QYHAOsGKQcoBwcAKQcNBygHBwApBw4HDQcHAP8GYwYlBwcA/wbxBmMGBwD9BiUHIwcHAP0G/wYlBwcAKgeIBgoHBwAqBysHiAYHACwHCgcLBwcALAcqBwoHBwArB4cGiAYHACsHLQeHBgcALQd1BocGBwAtBy4HdQYHAC8HdQYuBwcALwd2BnUGBwAwBzEHMgcHADAHMwcxBwcANAc1BzYHBwA0BzcHNQcHADcHOAc1BwcANwc5BzgHBwA6BzgHOQcHADoHOwc4BwcANQc8Bz0HBwA1BzgHPAcHAD4HPwc2BwcAPgdABz8HBwA2Bz0HPgcHADYHNQc9BwcAOAdBBzwHBwA4BzsHQQcHAEIHQwdEBwcAQgdFB0MHBwBFB0AHQwcHAEUHPwdABwcARgdFB0IHBwBGB0cHRQcHAEcHPwdFBwcARwdIBz8HBwBJB0YHQgcHAEkHSgdGBwcASwdCB0QHBwBLB0kHQgcHAEwHOgc5BwcATAdNBzoHBwBOBzkHNwcHAE4HTAc5BwcATwc3BzQHBwBPB04HNwcHAFAHUQdSBwcAUAdTB1EHBwBUB1UHVgcHAFQHVwdVBwcAWAdVB08HBwBYB1YHVQcHAEgHTwc0BwcASAdYB08HBwBZB08HVQcHAFkHWgdPBwcAWgdOB08HBwBaB1sHTgcHAFwHVwddBwcAXAdeB1cHBwBbB0wHTgcHAFsHXwdMBwcAXwdNB0wHBwBfB2AHTQcHAGEHYAdfBwcAYQdiB2AHBwBjB18HWwcHAGMHYQdfBwcAZAdbB1oHBwBkB2MHWwcHAGUHWgdZBwcAZQdkB1oHBwBmB14HXAcHAGYHZwdeBwcAaAdgB2IHBwBoB2kHYAcHAGoHawdsBwcAagdtB2sHBwBuB2wHbwcHAG4HagdsBwcAbQdwB2sHBwBtB3EHcAcHAHIHbQdqBwcAcgdzB20HBwB0B2oHbgcHAHQHcgdqBwcAcwdxB20HBwBzB3UHcQcHAGsHdgdsBwcAawd3B3YHBwB3BxkHdgcHAHcHGgcZBwcAcAd3B2sHBwBwB3gHdwcHAHgHGgd3BwcAeAcbBxoHBwBxB3gHcAcHAHEHeQd4BwcAeQcbB3gHBwB5B3oHGwcHAHUHeQdxBwcAdQd7B3kHBwB7B3oHeQcHAHsHfAd6BwcAbAd9B28HBwBsB3YHfQcHAHYHGAd9BwcAdgcZBxgHBwBvB34HbgcHAG8HfQd+BwcAfQd/B34HBwB9BxgHfwcHAG4HgAd0BwcAbgd+B4AHBwB+B4EHgAcHAH4HfweBBwcAggciBioGBwCCB4MHIgYHAIQHKgYyBgcAhAeCByoGBwCDByAGIgYHAIMHhQcgBgcAhQchBiAGBwCFB4YHIQYHAIYHJAYhBgcAhgeHByQGBwCHByYGJAYHAIcHiAcmBgcAiAcoBiYGBwCIB4kHKAYHAIkHJwYoBgcAiQeKBycGBwCKBy0GJwYHAIoHiwctBgcAiwcuBi0GBwCLB4wHLgYHAIwHRAYuBgcAjAeNB0QGBwCNB0MGRAYHAI0HjgdDBgcAjgdiBkMGBwCOB48HYgYHAJAHTQdgBwcAkAeRB00HBwCRBzoHTQcHAJEHkgc6BwcAkgc7BzoHBwCSB5MHOwcHAJMHQQc7BwcAkweUB0EHBwCVBy8HLgcHAJUHlgcvBwcAlweqBnYGBwCXB5gHqgYHAJgHvQaqBgcAmAeZB70GBwCZB7wGvQYHAJkHmge8BgcAmge7BrwGBwCaB5sHuwYHAJsHuga7BgcAmwecB7oGBwCcB7kGugYHAJwHnQe5BgcAnQe4BrkGBwCdB54HuAYHAJ4Htga4BgcAngefB7YGBwCfB7cGtgYHAJ8HoAe3BgcAoQezBrUGBwChB6IHswYHAKIHtAazBgcAogejB7QGBwCkB7EGsgYHAKQHpQexBgcApQewBrEGBwClB6YHsAYHAKYHrwawBgcApgenB68GBwCnB64GrwYHAKcHqAeuBgcAqAetBq4GBwCoB6kHrQYHAKkHqwatBgcAqQeqB6sGBwCqB6wGqwYHAKoHqwesBgcAqwdqBqwGBwCrB6wHagYHAKwHMgZqBgcArAeEBzIGBwCtB4MHggcHAK0HrgeDBwcArweCB4QHBwCvB60HggcHAK4HhQeDBwcArgewB4UHBwCxB4QHrAcHALEHrweEBwcAsAeGB4UHBwCwB7IHhgcHALIHhweGBwcAsgezB4cHBwCzB4gHhwcHALMHtAeIBwcAtAeJB4gHBwC0B7UHiQcHALUHigeJBwcAtQe2B4oHBwC2B4sHigcHALYHtweLBwcAtweMB4sHBwC3B7gHjAcHALgHjQeMBwcAuAe5B40HBwC5B44HjQcHALkHugeOBwcAugePB44HBwC6B7sHjwcHALwHkQeQBwcAvAe9B5EHBwC9B5IHkQcHAL0HvgeSBwcAvgeTB5IHBwC+B78HkwcHAL8HlAeTBwcAvwfAB5QHBwDBB5YHlQcHAMEHwgeWBwcAwweYB5cHBwDDB8QHmAcHAMQHmQeYBwcAxAfFB5kHBwDFB5oHmQcHAMUHxgeaBwcAxgebB5oHBwDGB8cHmwcHAMcHnAebBwcAxwfIB5wHBwDIB50HnAcHAMgHyQedBwcAyQeeB50HBwDJB8oHngcHAMoHnweeBwcAygfLB58HBwDLB6AHnwcHAMsHzAegBwcAzQeiB6EHBwDNB84HogcHAM4HoweiBwcAzgfPB6MHBwDQB6UHpAcHANAH0QelBwcA0QemB6UHBwDRB9IHpgcHANIHpwemBwcA0gfTB6cHBwDTB6gHpwcHANMH1AeoBwcA1AepB6gHBwDUB9UHqQcHANUHqgepBwcA1QfWB6oHBwDWB6sHqgcHANYH1werBwcA1wesB6sHBwDXB7EHrAcHAGEGjwe+BgcAYQZiBo8HBwC7B74GjwcHALsH0Qa+BgcA2AcLBwkHBwDYB9kHCwcHANoHCQcHBwcA2gfYBwkHBwDZBywHCwcHANkH2wcsBwcA2wfcBywHBwDbB90H3AcHAN4HBwd7BgcA3gfaBwcHBwDfB3sGegYHAN8H3gd7BgcA4Ad6BiEHBwDgB98HegYHAOEHIQckBwcA4QfgByEHBwDiByQHHQcHAOIH4QckBwcA4wcdBxwHBwDjB+IHHQcHAOQH2QfYBwcA5AflB9kHBwDmB9gH2gcHAOYH5AfYBwcA5QfbB9kHBwDlB+cH2wcHAOgH2gfeBwcA6AfmB9oHBwDnB90H2wcHAOcH6QfdBwcA6gfeB98HBwDqB+gH3gcHAOsH3wfgBwcA6wfqB98HBwDsB+AH4QcHAOwH6wfgBwcA7QfhB+IHBwDtB+wH4QcHAO4H4gfjBwcA7gftB+IHBwAbB+MHHAcHABsHegfjBwcA7gd6B3wHBwDuB+MHegcHAO8H8AfxBwcA7wfyB/AHBwDzB0kHSwcHAPMH9AdJBwcA9QfyB+8HBwD1B/YH8gcHAPcH9AfzBwcA9wf4B/QHBwDcB+8H8QcHANwH3QfvBwcA3Qf1B+8HBwDdB+kH9QcHACwH+QcqBwcALAf6B/kHBwD6Bz4H+QcHAPoHQAc+BwcA3Af6BywHBwDcB/sH+gcHAPsHQAf6BwcA+wdDB0AHBwDxB/sH3AcHAPEH/Af7BwcA/AdDB/sHBwD8B0QHQwcHAPAH/AfxBwcA8Af9B/wHBwD9B0QH/AcHAP0HSwdEBwcA8gf9B/AHBwDyB/4H/QcHAP4HSwf9BwcA/gfzB0sHBwD2B/4H8gcHAPYH/wf+BwcA/wfzB/4HBwD/B/cH8wcHACoHAAgrBwcAKgf5BwAIBwD5Bz0HAAgHAPkHPgc9BwcAKwcBCC0HBwArBwAIAQgHAAAIPAcBCAcAAAg9BzwHBwAtBwIILgcHAC0HAQgCCAcAAQhBBwIIBwABCDwHQQcHAC4HAwiVBwcALgcCCAMIBwACCJQHAwgHAAIIQQeUBwcAlQcECMEHBwCVBwMIBAgHAAMIwAcECAcAAwiUB8AHBwAFCAYIBwgHAAUISgcGCAcACAhcB10HBwAICAkIXAcHAAkIZgdcBwcACQgKCGYHBwALCAgIBwgHAAsIDAgICAcADAgJCAgIBwAMCA0ICQgHAA0ICggJCAcADQgOCAoIBwBJBwYISgcHAEkH9AcGCAcADwj0B/gHBwAPCAYI9AcHABAIaAdiBwcAEAgRCGgHBwASCGIHYQcHABIIEAhiBwcAEwhhB2MHBwATCBIIYQcHABQIYwdkBwcAFAgTCGMHBwAVCAoIDggHABUIFggKCAcAFwhkB2UHBwAXCBQIZAcHABgIZwdmBwcAGAgZCGcHBwAWCGYHCggHABYIGAhmBwcAGgi8B5AHBwAaCBsIvAcHAGkHkAdgBwcAaQcaCJAHBwAcCB0IHggHABwIHwgdCAcAIAghCCIIBwAgCCMIIQgHAB8IIggdCAcAHwggCCIIBwAjCCQIIQgHACMIJQgkCAcAJggcCCcIBwAmCB8IHAgHACYIIAgfCAcAJggoCCAIBwAoCCMIIAgHACgIKQgjCAcAKQglCCMIBwApCCoIJQgHACsIHAgeCAcAKwgsCBwIBwAtCC4ILwgHAC0IMAguCAcAMAgxCDIIBwAwCC0IMQgHADMIJQgqCAcAMwg0CCUIBwA0CCQIJQgHADQINQgkCAcANggbCBoIBwA2CDcIGwgHADgIGghpBwcAOAg2CBoIBwA5CGgHEQgHADkIOghoBwcAOghpB2gHBwA6CDgIaQcHADsINAgzCAcAOwg8CDQIBwA8CDUINAgHADwIPQg1CAcAPgg3CDYIBwA+CD8INwgHAEAINgg4CAcAQAg+CDYIBwBBCDgIOggHAEEIQAg4CAcAQgg6CDkIBwBCCEEIOggHAEMIPAg7CAcAQwhECDwIBwBECD0IPAgHAEQIRQg9CAcARghBCEIIBwBGCEcIQQgHAEgIPwg+CAcASAhJCD8IBwBKCD4IQAgHAEoISAg+CAcARwhACEEIBwBHCEoIQAgHAEsIRAhDCAcASwhMCEQIBwBMCEUIRAgHAEwITQhFCAcATghHCEYIBwBOCE8IRwgHAE8ISghHCAcATwhQCEoIBwBRCEkISAgHAFEIUghJCAcAUAhICEoIBwBQCFEISAgHAFMIUghRCAcAUwhUCFIIBwBVCFEIUAgHAFUIUwhRCAcAVghQCE8IBwBWCFUIUAgHAFcITwhOCAcAVwhWCE8IBwBYCE0ITAgHAFgIWQhNCAcAWghMCEsIBwBaCFgITAgHAFsIXAhdCAcAWwheCFwIBwBTCFsIVAgHAFMIXghbCAcAXghfCFwIBwBeCGAIXwgHAFUIXghTCAcAVQhgCF4IBwBhCGAIYggHAGEIXwhgCAcAYghVCFYIBwBiCGAIVQgHAGMIYghkCAcAYwhhCGIIBwBkCFYIVwgHAGQIYghWCAcAZQhmCGcIBwBlCGgIZggHAFgIZwhZCAcAWAhlCGcIBwBpCGgIZQgHAGkIaghoCAcAWghlCFgIBwBaCGkIZQgHAGsIaAhqCAcAawhsCGgIBwBsCGYIaAgHAGwIbQhmCAcAbghhCGMIBwBuCG8IYQgHAG8IXwhhCAcAbwhwCF8IBwBwCFwIXwgHAHAIcQhcCAcAcQhdCFwIBwBxCHIIXQgHAHMIbAhrCAcAcwh0CGwIBwB0CG0IbAgHAHQIdQhtCAcAdghvCG4IBwB2CHcIbwgHAHcIcAhvCAcAdwh4CHAIBwB4CHEIcAgHAHgIeQhxCAcAeQhyCHEIBwB5CHoIcggHAHsIdAhzCAcAewh8CHQIBwB8CHUIdAgHAHwIfQh1CAcAfgh3CHYIBwB+CH8IdwgHAH8IeAh3CAcAfwiACHgIBwCACHkIeAgHAIAIgQh5CAcAgQh6CHkIBwCBCIIIeggHAIMIEgcMBwcAgwiECBIHBwCFCAwHDgcHAIUIgwgMBwcAhAgVBxIHBwCECIYIFQcHAIcIDgcpBwcAhwiFCA4HBwCICCkH6wYHAIgIhwgpBwcAiQjrBuoGBwCJCIgI6wYHAIoI6gbsBgcAigiJCOoGBwCLCIQIgwgHAIsIjAiECAcAjQiDCIUIBwCNCIsIgwgHAIwIhgiECAcAjAiOCIYIBwCPCIUIhwgHAI8IjQiFCAcAkAiHCIgIBwCQCI8IhwgHAJEIiAiJCAcAkQiQCIgIBwCSCIkIiggHAJIIkQiJCAcAFQd/BxgHBwAVB4YIfwcHAIYIgQd/BwcAhgiOCIEHBwCKCO0G7gYHAIoI7AbtBgcAigjvBpIIBwCKCO4G7wYHAB0IkwgeCAcAHQiUCJMIBwCUCBQIkwgHAJQIEwgUCAcAIgiUCB0IBwAiCJUIlAgHAJUIEwiUCAcAlQgSCBMIBwAhCJUIIggHACEIlgiVCAcAlggSCJUIBwCWCBAIEggHACQIlgghCAcAJAiXCJYIBwCXCBAIlggHAJcIEQgQCAcANQiXCCQIBwA1CJgIlwgHAJgIEQiXCAcAmAg5CBEIBwA9CJgINQgHAD0ImQiYCAcAmQg5CJgIBwCZCEIIOQgHAEUImQg9CAcARQiaCJkIBwCaCEIImQgHAJoIRghCCAcATQiaCEUIBwBNCJsImggHAJsIRgiaCAcAmwhOCEYIBwBZCJsITQgHAFkInAibCAcAnAhOCJsIBwCcCFcITggHAGcInAhZCAcAZwidCJwIBwCdCFcInAgHAJ0IZAhXCAcAZgidCGcIBwBmCJ4InQgHAJ4IZAidCAcAnghjCGQIBwBtCJ4IZggHAG0InwieCAcAnwhjCJ4IBwCfCG4IYwgHAHUInwhtCAcAdQigCJ8IBwCgCG4InwgHAKAIdghuCAcAfQigCHUIBwB9CKEIoAgHAKEIdgigCAcAoQh+CHYIBwAeCKIIKwgHAB4IkwiiCAcAkwgXCKIIBwCTCBQIFwgHACwIowgxCAcALAikCKMIBwCkCBcIGQgHAKQIoggXCAcAMQilCDIIBwAxCKMIpQgHAKMIFgilCAcAowgYCBYIBwAyCKYIMAgHADIIpQimCAcApQgVCKYIBwClCBYIFQgHAKcIfgihCAcApwioCH4IBwCpCKEIfQgHAKkIpwihCAcAqgiCCIEIBwCqCKsIgggHAKwIgQiACAcArAiqCIEIBwCtCIAIfwgHAK0IrAiACAcAqAh/CH4IBwCoCK0IfwgHAK4IfQh8CAcArgipCH0IBwCvCHwIewgHAK8Irgh8CAcAsAipCK4IBwCwCLEIqQgHALIIrgivCAcAsgiwCK4IBwCxCKcIqQgHALEIswinCAcAswioCKcIBwCzCLQIqAgHALQIrQioCAcAtAi1CK0IBwC1CKwIrQgHALUItgisCAcAtwirCKoIBwC3CLgIqwgHALYIqgisCAcAtgi3CKoIBwC5CLEIsAgHALkIugixCAcAuwiwCLIIBwC7CLkIsAgHALoIswixCAcAugi8CLMIBwC8CLQIswgHALwIvQi0CAcAvQi1CLQIBwC9CL4ItQgHAL4Itgi1CAcAvgi/CLYIBwC/CLcItggHAL8IwAi3CAcAwAi4CLcIBwDACMEIuAgHAMIIwwjECAcAwgjFCMMIBwDECMYIxwgHAMQIwwjGCAcAxwjICMkIBwDHCMYIyAgHAMkIygjLCAcAyQjICMoIBwDFCMwIwwgHAMUIzQjMCAcAwwjOCMYIBwDDCMwIzggHAMYIzwjICAcAxgjOCM8IBwDICNAIyggHAMgIzwjQCAcAzwjRCNAIBwDPCNII0QgHAM4I0gjPCAcAzgjTCNIIBwDMCNMIzggHAMwI1AjTCAcAzQjUCMwIBwDNCNUI1AgHANYI1wjYCAcA1gjZCNcIBwDaCNsI3AgHANoI3QjbCAcA3AjeCN8IBwDcCNsI3ggHAOAI4QjiCAcA4AjjCOEIBwDiCOQI5QgHAOII4QjkCAcA5QjmCOcIBwDlCOQI5ggHAOgI6QjqCAcA6AjrCOkIBwDrCNkI6QgHAOsI1wjZCAcA7AjtCO4IBwDsCO8I7QgHAO8I3QjtCAcA7wjbCN0IBwDwCO8I7AgHAPAI8QjvCAcA8QjbCO8IBwDxCN4I2wgHAPII8QjwCAcA8gjzCPEIBwD0CPUI9ggHAPQI9wj1CAcA+Aj3CPQIBwD4CPkI9wgHAPoI+Qj4CAcA+gj7CPkIBwD8CPsI+ggHAPwI/Qj7CAcA/gj/CAAJBwD+CAEJ/wgHAAEJ4wj/CAcAAQnhCOMIBwACCQEJ/ggHAAIJAwkBCQcAAwnhCAEJBwADCeQI4QgHAAQJAwkCCQcABAkFCQMJBwAFCeQIAwkHAAUJ5gjkCAcA1wgGCdgIBwDXCAcJBgkHAOsIBwnXCAcA6wgICQcJBwDoCAgJ6wgHAOgICQkICQcA9QgKCfYIBwD1CAsJCgkHAPMICgkLCQcA8wjyCAoJBwDnCNII5QgHAOcI0QjSCAcA5QjTCOIIBwDlCNII0wgHAOAIDAnjCAcA4AgNCQwJBwD/CA4JAAkHAP8IDwkOCQcA/wgMCQ8JBwD/COMIDAkHAOII1AjgCAcA4gjTCNQIBwDgCNUIDQkHAOAI1AjVCAcAEAkRCRIJBwAQCRMJEQkHABQJFQkWCQcAFAkXCRUJBwAYCRYJGQkHABgJFAkWCQcAFQkaCRsJBwAVCRcJGgkHABsJEgkRCQcAGwkaCRIJBwAcCR0JHgkHABwJHwkdCQcAIAkSCSEJBwAgCRAJEgkHACAJIgkjCQcAIAkhCSIJBwAkCSUJJgkHACQJJwklCQcAJwkXCRQJBwAnCSQJFwkHACgJJQknCQcAKAkpCSUJBwAoCRQJGAkHACgJJwkUCQcAJAkqCSsJBwAkCSYJKgkHACQJGgkXCQcAJAkrCRoJBwArCSIJIQkHACsJKgkiCQcAKwkSCRoJBwArCSEJEgkHACwJEAkgCQcALAktCRAJBwAuCdwILwkHAC4J2gjcCAcALQkTCRAJBwAtCTAJEwkHAC8J3wgxCQcALwncCN8IBwD9CDIJMwkHAP0I/AgyCQcAMwkOCQ8JBwAzCTIJDgkHADMJDAk0CQcAMwkPCQwJBwD9CDQJNQkHAP0IMwk0CQcA+wg2CfkIBwD7CDcJNgkHAP0INwn7CAcA/Qg1CTcJBwD3CDYJOAkHAPcI+Qg2CQcA9Qg4CTkJBwD1CPcIOAkHAAsJOQk6CQcACwn1CDkJBwDzCDoJOwkHAPMICwk6CQcAPAnzCDsJBwA8CfEI8wgHAN8IPQk+CQcA3wjeCD0JBwAxCT4JPwkHADEJ3wg+CQcAMAlACRMJBwAwCUEJQAkHABEJQAlCCQcAEQkTCUAJBwAbCUIJQwkHABsJEQlCCQcAFQlDCUQJBwAVCRsJQwkHABYJRAlFCQcAFgkVCUQJBwAZCUUJRgkHABkJFglFCQcANAlHCTUJBwA0CUgJRwkHADUJSQk3CQcANQlHCUkJBwA3CUoJNgkHADcJSQlKCQcANglLCTgJBwA2CUoJSwkHADgJTAk5CQcAOAlLCUwJBwA5CU0JOgkHADkJTAlNCQcAOglOCTsJBwA6CU0JTgkHADwJTglPCQcAPAk7CU4JBwA9CVAJPgkHAD0JUQlQCQcAPwlQCVIHBwA/CT4JUAkHAEEJUglACQcAQQlRB1IJBwBACVMJQgkHAEAJUglTCQcAQglUCUMJBwBCCVMJVAkHAEMJVQlECQcAQwlUCVUJBwBECVYJRQkHAEQJVQlWCQcARQlXCUYJBwBFCVYJVwkHADQJDQlICQcANAkMCQ0JBwBYCVkJWgkHAFgJWwlZCQcAAglcCQQJBwACCV0JXAkHAP4IXQkCCQcA/gheCV0JBwAACV4J/ggHAAAJXwleCQcADglfCQAJBwAOCWAJXwkHADIJYAkOCQcAMglhCWAJBwD8CGEJMgkHAPwIYglhCQcA+ghiCfwIBwD6CGMJYgkHAPgIYwn6CAcA+AhkCWMJBwD0CGQJ+AgHAPQIZQlkCQcA9ghlCfQIBwD2CGYJZQkHAAoJZgn2CAcACglnCWYJBwDyCGcJCgkHAPIIaAlnCQcA8AhoCfIIBwDwCGkJaAkHAOwIaQnwCAcA7AhqCWkJBwDuCGoJ7AgHAO4IawlqCQcA6AhsCQkJBwDoCG0JbAkHAOoIbQnoCAcA6ghuCW0JBwBdCW8JXAkHAF0JcAlvCQcAXglwCV0JBwBeCXEJcAkHAF8JcQleCQcAXwlyCXEJBwBgCXIJXwkHAGAJcwlyCQcAYQlzCWAJBwBhCXQJcwkHAGIJdAlhCQcAYgl1CXQJBwBjCXUJYgkHAGMJdgl1CQcAZAl2CWMJBwBkCXcJdgkHAGUJdwlkCQcAZQl4CXcJBwBmCXgJZQkHAGYJeQl4CQcAZwl5CWYJBwBnCXoJeQkHAGgJeglnCQcAaAl7CXoJBwBpCXsJaAkHAGkJfAl7CQcAagl8CWkJBwBqCX0JfAkHAGsJfQlqCQcAawl+CX0JBwBtCX8JbAkHAG0JgAl/CQcAbgmACW0JBwBuCYEJgAkHANYIggnZCAcA1giDCYIJBwCCCekI2QgHAIIJhAnpCAcA6QiFCeoIBwDpCIQJhQkHAIUJbgnqCAcAhQmGCW4JBwCGCYEJbgkHAIYJhwmBCQcAgwmICYIJBwCDCYkJiAkHAIgJhAmCCQcAiAmKCYQJBwCECYsJhQkHAIQJigmLCQcAiwmGCYUJBwCLCYwJhgkHAIwJhwmGCQcAjAmNCYcJBwAGCY4JjwkHAAYJBwmOCQcABwmQCY4JBwAHCQgJkAkHAAgJkQmQCQcACAkJCZEJBwCSCQkJbAkHAJIJkQkJCQcAkwlsCX8JBwCTCZIJbAkHANoILAmUCQcA2gguCSwJBwAsCSMJlAkHACwJIAkjCQcAlQkiCSoJBwCVCZYJIgkHAB4JlgmVCQcAHgkdCZYJBwCWCSMJIgkHAJYJlwkjCQcAHQmXCZYJBwAdCZgJlwkHAJcJlAkjCQcAlwmZCZQJBwCYCZkJlwkHAJgJmgmZCQcAmQnaCJQJBwCZCZsJ2ggHAJoJmwmZCQcAmgmPCZsJBwCbCd0I2ggHAJsJnAndCAcAjwmcCZsJBwCPCY4JnAkHAJwJ7QjdCAcAnAmdCe0IBwCOCZ0JnAkHAI4JkAmdCQcAnQnuCO0IBwCdCZ4J7ggHAJAJngmdCQcAkAmRCZ4JBwCeCWsJ7ggHAJ4JnwlrCQcAkQmfCZ4JBwCRCZIJnwkHAJ8JfglrCQcAnwmgCX4JBwCSCaAJnwkHAJIJkwmgCQcAoQkqCSYJBwChCZUJKgkHAKIJlQmhCQcAogkeCZUJBwCjCSYJJQkHAKMJoQkmCQcApAmhCaMJBwCkCaIJoQkHAKUJJQkpCQcApQmjCSUJBwCmCaMJpQkHAKYJpAmjCQcApwmoCakJBwCnCaoJqAkHAKsJqgmnCQcAqwmsCaoJBwCqCa0JqAkHAKoJrgmtCQcArAmuCaoJBwCsCa8JrgkHAK4JsAmtCQcArgmxCbAJBwCvCbEJrgkHAK8JsgmxCQcAsQmzCbAJBwCxCbQJswkHALIJtAmxCQcAsgm1CbQJBwCyCbYJtQkHALIJtwm2CQcArwm3CbIJBwCvCbgJtwkHAKsJuQmsCQcAqwm6CbkJBwC5Ca8JrAkHALkJuAmvCQcAuwkcCbwJBwC7CR8JHAkHAJgJHwm7CQcAmAkdCR8JBwCYCb0JvgkHAJgJuwm9CQcAvgm5CboJBwC+Cb0JuQkHAL0JuAm5CQcAvQm/CbgJBwC7Cb8JvQkHALsJvAm/CQcAwAnYCAYJBwDACcEJ2AgHAL4JwQnACQcAvgm6CcEJBwDBCdYI2AgHAMEJwgnWCAcAugnCCcEJBwC6CasJwgkHAMIJgwnWCAcAwgnDCYMJBwCrCcMJwgkHAKsJpwnDCQcAwwmJCYMJBwDDCcQJiQkHAKcJxAnDCQcApwmpCcQJBwAGCZoJwAkHAAYJjwmaCQcAwAmYCb4JBwDACZoJmAkHACkJxQmlCQcAKQnGCcUJBwClCccJpgkHAKUJxQnHCQcAKAnGCSkJBwAoCcgJxgkHABgJyAkoCQcAGAkxB8gJBwAYCTIHMQcHABgJGQkyBwcAyQnKCcsJBwDJCcwJygkHAM0JzgnPCQcAzQnQCc4JBwDLCc8JzgkHAMsJygnPCQcA0QnMCckJBwDRCdIJzAkHANMJ1AnVCQcA0wnWCdQJBwDQCdYJ0wkHANAJzQnWCQcA1AnXCdUJBwDUCdgJ1wkHANkJ2gnbCQcA2QncCdoJBwDbCd0J3gkHANsJ2gndCQcA3wncCdkJBwDfCeAJ3AkHANwJ4QnaCQcA3AniCeEJBwDaCeMJ3QkHANoJ4QnjCQcA4AniCdwJBwDgCeQJ4gkHAOUJ2QnbCQcA5QnmCdkJBwC0CeYJ5QkHALQJ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xwnFCQcAWQpaCscJBwDOCVoKWQoHAM4J0AlaCgcAWgo8CscJBwBaClsKPAoHANAJWwpaCgcA0AnTCVsKBwBbClEKPAoHAFsKXApRCgcA0wlcClsKBwDTCdUJXAoHAFwKTwpRCgcAXApdCk8KBwDVCV0KXAoHANUJ1wldCgcAXQpSCk8KBwBdCl4KUgoHANcJXgpdCgcA1wlTCl4KBwBeClYKUgoHAF4KXwpWCgcAUwpfCl4KBwBTClcKXwoHAGAKxQnGCQcAYApZCsUJBwDLCVkKYAoHAMsJzglZCgcAYQrGCcgJBwBhCmAKxgkHAMkJYAphCgcAyQnLCWAKBwBiCsgJMQcHAGIKYQrICQcA0QlhCmIKBwDRCckJYQoHAGMKMQczBwcAYwpiCjEHBwAACmIKYwoHAAAK0QliCgcAZAozB2UKBwBkCmMKMwcHACMKYwpkCgcAIwoACmMKBwCtCWYKqAkHAK0JZwpmCgcAqAloCqkJBwCoCWYKaAoHALAJZwqtCQcAsAlpCmcKBwCpCWoKxAkHAKkJaApqCgcAxAlrCokJBwDECWoKawoHAIkJbAqICQcAiQlrCmwKBwCICW0KigkHAIgJbAptCgcAZwpuCmYKBwBnCm8KbgoHAGYKcApoCgcAZgpuCnAKBwBpCm8KZwoHAGkKcQpvCgcAaApyCmoKBwBoCnAKcgoHAGoKcwprCgcAagpyCnMKBwBrCnQKbAoHAGsKcwp0CgcAbAp1Cm0KBwBsCnQKdQoHAO4JsAmzCQcA7glpCrAJBwDwCWkK7gkHAPAJcQppCgcAiwltCowJBwCLCYoJbQoHAI0JbQp1CgcAjQmMCW0KBwBuBnYKdwoHAG4GkAZ2CgcAeApuBncKBwB4Cm8GbgYHAJAGeQp2CgcAkAb3BnkKBwD3BnoKeQoHAPcG+AZ6CgcAewqEBnwKBwB7CoUGhAYHAPoGewp9CgcA+gaFBnsKBwB8CnQGfgoHAHwKhAZ0BgcAfgp3Bn8KBwB+CnQGdwYHAPgGfQp6CgcA+Ab6Bn0KBwB/Cm8GeAoHAH8KdwZvBgcAdwqACoEKBwB3CnYKgAoHAIIKdwqBCgcAggp4CncKBwB2CoMKgAoHAHYKeQqDCgcAeQqECoMKBwB5CnoKhAoHAIUKfAqGCgcAhQp7CnwKBwB9CoUKhwoHAH0KewqFCgcAhgp+CogK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BwD3Cv4K9goHAPcK/wr+CgcA+Ar/CvcKBwD4CgAL/woHAPwKAQv9CgcA/AoCCwELBwD6CgML+QoHAPoKBAsDCwcA+QoFC/sKBwD5CgMLBQsHAPsKAgv8CgcA+woFCwILBwD/CgYL/goHAP8KBwsGCwcAAAsHC/8KBwAACwgLBwsHAAILCQsBCwcAAgsKCwkLBwAFCwoLAgsHAAULCwsKCwcABAsMCwMLBwAECw0LDAsHAAMLCwsFCwcAAwsMCwsLBwANCw4LDAsHAA0LDwsOCwcADAsQCwsLBwAMCw4LEAsHAAsLEQsKCwcACwsQCxELBwAKCxILCQsHAAoLEQsSCwcACAsTCwcLBwAICxQLEwsHAAcLFQsGCwcABwsTCxULBwAWCxcLGAsHABYLGQsXCwcAFwsOCw8LBwAXCxkLDgsHABoLGQsWCwcAGgsbCxkLBwAZCxALDgsHABkLGwsQCwcAGwscCx0LBwAbCxoLHAsHABALHQsRCwcAEAsbCx0LBwAdCx4LHwsHAB0LHAseCwcAEQsfCxILBwARCx0LHwsHACALIQsiCwcAIAsjCyELBwAiCxMLFAsHACILIQsTCwcAIwskCyELBwAjCyULJAsHACELFQsTCwcAIQskCxULBwAjCyYLJQsHACMLJwsmCwcAIAsnCyMLBwAgCygLJwsHABwLKQseCwcAHAsqCykLBwAaCyoLHAsHABoLKwsqCwcAFgsrCxoLBwAWCywLKwsHABgLLAsWCwcAGAstCywLBwAnCy4LJgsHACcLLwsuCwcAKAsvCycLBwAoCzALLwsHACoLMQspCwcAKgsyCzELBwArCzILKgsHACsLMwsyCwcALAszCysLBwAsCzQLMwsHAC0LNAssCwcALQs1CzQLBwAvCzYLLgsHAC8LNws2CwcAMAs3Cy8LBwAwCzgLNwsHADILOQsxCwcAMgs6CzkLBwAzCzoLMgsHADMLOws6CwcANAs7CzMLBwA0CzwLOwsHADULPAs0CwcANQs9CzwLBwA+C9sK3QoHAD4LPwvbCgcA1Ao/Cz4LBwDUCtMKPwsHAD8L4QrbCgcAPwtAC+EKBwDTCkALPwsHANMK0gpACwcAQAvfCuEKBwBAC0EL3woHANIKQQtACwcA0grQCkELBwBBC+MK3woHAEELQgvjCgcA0ApCC0ELBwDQCtEKQgsHAEIL8ArjCgcAQgtDC/AKBwDRCkMLQgsHANEK9ApDCwcAQwv4CvAKBwBDC0QL+AoHAPQKRAtDCwcA9Ar9CkQLBwBECwAL+AoHAEQLRQsACwcA/QpFC0QLBwD9CgELRQsHAEULCAsACwcARQtGCwgLBwABC0YLRQsHAAELCQtGCwcARgsUCwgLBwBGC0cLFAsHAAkLRwtGCwcACQsSC0cLBwBHCyILFAsHAEcLSAsiCwcAEgtIC0cLBwASCx8LSAsHAEgLIAsiCwcASAtJCyALBwAfC0kLSAsHAB8LHgtJCwcASQsoCyALBwBJC0oLKAsHAB4LSgtJCwcAHgspC0oLBwBKCzALKAsHAEoLSwswCwcAKQtLC0oLBwApCzELSwsHAEsLOAswCwcASwtMCzgLBwAxC0wLSwsHADELOQtMCwcATQvdCuoKBwBNCz4L3QoHANcKPgtNCwcA1wrUCj4LBwBOC+oK6woHAE4LTQvqCgcA2ApNC04LBwDYCtcKTQsHAE8L6wrsCgcATwtOC+sKBwDWCk4LTwsHANYK2ApOCwcAUAvsCuUKBwBQC08L7AoHANUKTwtQCwcA1QrWCk8LBwA5C1ELTAsHADkLUgtRCwcATAtTCzgLBwBMC1ELUwsHAD0LVAs8CwcAPQtVC1QLBwA8C1YLOwsHADwLVAtWCwcAOwtXCzoLBwA7C1YLVwsHADoLUgs5CwcAOgtXC1ILBwA4C1gLNwsHADgLUwtYCwcANwtZCzYLBwA3C1gLWQsHAFMLWgtYCwcAUwtbC1oLBwBYC1wLWQsHAFgLWgtcCwcAUQtbC1MLBwBRC10LWwsHAFILXQtRCwcAUgteC10LBwBXC14LUgsHAFcLXwteCwcAVgtfC1cLBwBWC2ALXwsHAFULYQtUCwcAVQtiC2ELBwBUC2ALVgsHAFQLYQtgCwcAWwtjC1oLBwBbC2QLYwsHAFoLZQtcCwcAWgtjC2ULBwBdC2QLWwsHAF0LZgtkCwcAXgtmC10LBwBeC2cLZgsHAF8LZwteCwcAXwtoC2cLBwBgC2gLXwsHAGALaQtoCwcAYQtpC2ALBwBhC2oLaQsHAGILagthCwcAYgtrC2oLBwClCp8KrwoHAKUKzQmfCgcApQqtCqQKBwClCq8KrQoHAKQKrAqjCgcApAqtCqwKBwAlCjMHMAcHACUKZQozBwcAxgqjCqwKBwDGCqYKowoHAK4KxQqsCgcArgrHCsUKBwDECsoK7QoHAMQKxQrKCgcAcQFtAWwLBwBxAWwLbQsHAG0BbwFuCwcAbQFuC2wLBwBtC28LcwEHAG0LcwFxAQcAbwt1AXcBBwBvC3cBcwEHAG8BogFwCwcAbwFwC24LBwCiAYoBiQEHAKIBiQFwCwcAqwGpAXUBBwCrAXUBbwsHAKwBqwFvCwcArAFvC20LBwCsAW0LbAsHAKwBbAutAQcArQFsC24LBwCtAW4LrgEHAK8BsgFwCwcArwFwC4kBBwCuAW4LcAsHAK4BcAuyAQcAcQtyC3MLBwBxC3MLdAsHAHULdAtzCwcAdQtzC3YLBwB3C3gLeQsHAHcLeQt6CwcAewt6C3kLBwB7C3kLfAsHAHILdwt6CwcAcgt6C3MLBwB2C3MLegsHAHYLegt7CwcAfQt+C3gLBwB9C3gLdwsHAH8LgAtyCwcAfwtyC3ELBwCAC30LdwsHAIALdwtyCwcAgQuCC4MLBwCBC4MLhAsHAIQLgwuACwcAhAuAC38LBwCFC4YLhwsHAIULhwuICwcAiAuHC34LBwCIC34LfQsHAIILhQuICwcAgguIC4MLBwCAC4MLiAsHAIALiAt9CwcAiQu0AbcBBwCJC7cBigsHAIsLtQG0AQcAiwu0AYkLBwC5AYwLigsHALkBigu3AQcAvQG8AYwLBwC9AYwLuQEHAI0L6AG1AQcAjQu1AYsLBwDPAdAB6AEHAM8B6AGNCwcAvAHvAfEBBwC8AfEBjAsHAIwL8QHyAQcAjAvyAYoLBwCJC4oL8gEHAIkL8gHzAQcAiwuJC/MBBwCLC/MB9AEHAI0L+AH1AQcAjQv1Ac8BBwCNC4sL9AEHAI0L9AH4AQcAjguPC5ALBwCOC5ALkQsHAI4LkQuSCwcAjguSC5MLBwCUC5ULlgsHAJQLlguXCwcAlAuXC5gLBwCUC5gLmQsHAJcLlguPCwcAlwuPC44LBwCXC44LkwsHAJcLkwuYCwcAlQuaC5sLBwCVC5sLlgsHAI8LnAudCwcAjwudC5ALBwCWC5sLnAsHAJYLnAuPCwcAngufC6ALBwCeC6ALoQsHAJwLnguhCwcAnAuhC50LBwCiC6MLpAsHAKILpAulCwcAmguiC6ULBwCaC6ULmwsHAKULpAufCwcApQufC54LBwClC54LnAsHAKULnAubCwcApgvFAMcABwCmC8cAWwEHAKcLpgtbAQcApwtbAVkBBwCoC6cLWQEHAKgLWQFXAQcAqQuoC1cBBwCpC1cBVQEHAKoLqQtVAQcAqgtVAVEBBwCrC8MAxQAHAKsLxQCmCwcArAurC6YLBwCsC6YLpwsHAK0LrAunCwcArQunC6gLBwCuC60LqAsHAK4LqAupCwcArwuuC6kLBwCvC6kLqgsHALALwgDDAAcAsAvDAKsLBwCxC7ALqwsHALELqwusCwcAsguxC6wLBwCyC6wLrQsHALMLsgutCwcAswutC64LBwC0C7MLrgsHALQLrguvCwcAkgCRAMIABwCSAMIAsAsHAJUAkgCwCwcAlQCwC7ELBwCXAJUAsQsHAJcAsQuyCwcAmQCXALILBwCZALILswsHAJsAmQCzCwcAmwCzC7QLBwAMAQoBtQsHAAwBtQtnAQcAZwG1C7YLBwBnAbYLZQEHAGUBtgu3CwcAZQG3C2MBBwBjAbcLuAsHAGMBuAtTAQcAUwG4C6oLBwBTAaoLUQEHAAoBCAG5CwcACgG5C7ULBwC1C7kLugsHALULugu2CwcAtgu6C7sLBwC2C7sLtwsHALcLuwu8CwcAtwu8C7gLBwC4C7wLrwsHALgLrwuqCwcACAEHAb0LBwAIAb0LuQsHALkLvQu+CwcAuQu+C7oLBwC6C74LvwsHALoLvwu7CwcAuwu/C8ALBwC7C8ALvAsHALwLwAu0CwcAvAu0C68LBwAHAdoA3AAHAAcB3AC9CwcAvQvcAN8ABwC9C98AvgsHAL4L3wDhAAcAvgvhAL8LBwC/C+EA4wAHAL8L4wDACwcAwAvjAJsABwDAC5sAtAsHAMELwgvDCwcAwQvDC8QLBwDFC8YLwgsHAMULwgvBCwcAxwvIC8YLBwDHC8YLxQsHAMQLwwvJCwcAxAvJC8oLBwDKC8kLywsHAMoLywvMCwcAzAvLC80LBwDMC80LzgsHAM8L0AvRCwcAzwvRC9ILBwDQC8kLwwsHANALwwvRCwcA0wvUC9ALBwDTC9ALzwsHANQLywvJCwcA1AvJC9ALBwDVC9YL1AsHANUL1AvTCwcA1gvNC8sLBwDWC8sL1AsHANIL0QvXCwcA0gvXC9gLBwDRC8MLwgsHANELwgvXCwcA2AvXC9kLBwDYC9kL2gsHANcLwgvGCwcA1wvGC9kLBwDaC9kL2wsHANoL2wvcCwcA2QvGC8gLBwDZC8gL2wsHAN0L3gvfCwcA3QvfC+ALBwDeC+EL4gsHAN4L4gvfCwcA4QvjC+QLBwDhC+QL4gsHAOUL3QvgCwcA5QvgC+YLBwDnC+UL5gsHAOcL5gvoCwcA6QvnC+gLBwDpC+gL6gsHAOsL7AvtCwcA6wvtC+4LBwDdC+UL7AsHAN0L7AvrCwcA7AvvC/ALBwDsC/AL7QsHAOUL5wvvCwcA5QvvC+wLBwDvC/EL8gsHAO8L8gvwCwcA5wvpC/ELBwDnC/EL7wsHAPML6wvuCwcA8wvuC/QLBwDeC90L6wsHAN4L6wvzCwcA9QvzC/QLBwD1C/QL9gsHAOEL3gvzCwcA4QvzC/ULBwD3C/UL9gsHAPcL9gv4CwcA4wvhC/ULBwDjC/UL9wsHAPkL+gv7CwcA+Qv8C/oLBwD9C/4L/wsHAP0LAAz+CwcA/wv8C/kLBwD/C/4L/AsHAAEMAAz9CwcAAQwCDAAMBwABDAMMAgwHAAEMBAwDDAcABAwFDAMMBwAEDAYMBQwHAAYMBwwFDAcABgwIDAcMBwAIDAkMBwwHAAgMCgwJDAcACgwLDAkMBwAKDAwMCwwHAA0MCwwMDAcADQwODAsMBwATBQ8MEAwHABMFEgUPDAcAEgURDA8MBwASBRUFEQwHABkFEgwTDAcAGQUYBRIMBwAVBRMMEQwHABUFGQUTDAcAGAUUDBIMBwAYBRsFFAwHAB8FFQwWDAcAHwUeBRUMBwAXDB8FFgwHABcMIQUfBQcAGAwhBRcMBwAYDCMFIQUHABkMIwUYDAcAGQwlBSMFBwAaDCUFGQwHABoMJwUlBQcAGwUbDBQMBwAbBSkFGwwHABwMJwUaDAcAHAwrBScFBwApBR0MGwwHACkFLQUdDAcAMAUcDB4MBwAwBSsFHAwHAB0MMgUfDAcAHQwtBTIFBwA0BR4MIAwHADQFMAUeDAcAHww2BSEMBwAfDDIFNgUHACEMOAUiDAcAIQw2BTgFBwA6BSAMIwwHADoFNAUgDAcAJAw9BSUMBwAkDDsFPQUHACIMOwUkDAcAIgw4BTsFBwBABSMMJgwHAEAFOgUjDAcAJwwoDCkMBwAnDCoMKAwHACoMKwwoDAcAKgwsDCsMBwAtDC4MLwwHAC0MMAwuDAcALAwvDCsMBwAsDC0MLwwHADAMMQwuDAcAMAwyDDEMBwAzDDQMNQwHADMMNgw0DAcANwwzDDUMBwA3DDgMMwwHADkMOAw3DAcAOQw6DDgMBwA7DDoMOQwHADsMPAw6DAcAPQw8DDsMBwA9DD4MPAwHADIMPwwxDAcAMgxADD8MBwBBDD4MPQwHAEEMQgw+DAcAQAxDDD8MBwBADEQMQwwHAEUMQQxGDAcARQxCDEEMBwBDDEcMSAwHAEMMRAxHDAcASQxGDEoMBwBJDEUMRgwHAEgMSwxMDAcASAxHDEsMBwBMDE0MTgwHAEwMSwxNDAcATwxKDFAMBwBPDEkMSgwHAFEMUgxTDAcAUQxUDFIMBwBODFQMUQwHAE4MTQxUDAcAVQxQDFYMBwBVDE8MUAwHACkM+wv6CwcAKQwoDPsLBwAoDPkL+wsHACgMKwz5CwcALwz9C/8LBwAvDC4M/QsHACsM/wv5CwcAKwwvDP8LBwAuDAEM/QsHAC4MMQwBDAcANQxXDFgMBwA1DDQMVwwHAFkMNQxYDAcAWQw3DDUMBwBaDDcMWQwHAFoMOQw3DAcAWww5DFoMBwBbDDsMOQwHAFwMOwxbDAcAXAw9DDsMBwAxDAQMAQwHADEMPwwEDAcAXQw9DFwMBwBdDEEMPQwHAD8MBgwEDAcAPwxDDAYMBwBGDF0MXgwHAEYMQQxdDAcABgxIDAgMBwAGDEMMSAwHAEoMXgxfDAcASgxGDF4MBwAIDEwMCgwHAAgMSAxMDAcACgxODAwMBwAKDEwMTgwHAFAMXwxgDAcAUAxKDF8MBwANDFMMDgwHAA0MUQxTDAcADAxRDA0MBwAMDE4MUQwHAFYMYAxhDAcAVgxQDGAMBwAPDCcMEAwHAA8MKgwnDAcAEQwqDA8MBwARDCwMKgwHABIMLQwTDAcAEgwwDC0MBwATDCwMEQwHABMMLQwsDAcAFAwwDBIMBwAUDDIMMAwHABUMMwwWDAcAFQw2DDMMBwAzDBcMFgwHADMMOAwXDAcAOAwYDBcMBwA4DDoMGAwHADoMGQwYDAcAOgw8DBkMBwA8DBoMGQwHADwMPgwaDAcAGwwyDBQMBwAbDEAMMgwHAD4MHAwaDAcAPgxCDBwMBwAdDEAMGwwHAB0MRAxADAcAHAxFDB4MBwAcDEIMRQwHAEcMHQwfDAcARwxEDB0MBwAeDEkMIAwHAB4MRQxJDAcASwwfDCEMBwBLDEcMHwwHAE0MIQwiDAcATQxLDCEMBwAgDE8MIwwHACAMSQxPDAcAUgwkDCUMBwBSDFQMJAwHAFQMIgwkDAcAVAxNDCIMBwAjDFUMJgwHACMMTwxVDAcAJgxdBUAFBwAmDGIMXQUHAGIMPQVdBQcAYgwlDD0FBwBVDGIMJgwHAFUMYwxiDAcAYwwlDGIMBwBjDFIMJQwHAFYMYwxVDAcAVgxkDGMMBwBkDFIMYwwHAGQMUwxSDAcAYQxkDFYMBwBhDGUMZAwHAGUMUwxkDAcAZQwODFMMBwBgDGUMYQwHAGAMZgxlDAcAZgwODGUMBwBmDAsMDgwHAF8MZgxgDAcAXwxnDGYMBwBnDAsMZgwHAGcMCQwLDAcAXgxnDF8MBwBeDGgMZwwHAGgMCQxnDAcAaAwHDAkMBwBdDGgMXgwHAF0MaQxoDAcAaQwHDGgMBwBpDAUMBwwHAFwMaQxdDAcAXAxqDGkMBwBqDAUMaQwHAGoMAwwFDAcAWwxqDFwMBwBbDGsMagwHAGsMAwxqDAcAawwCDAMMBwBaDGsMWwwHAFoMbAxrDAcAbAwCDGsMBwBsDAAMAgwHAFkMbAxaDAcAWQxtDGwMBwBtDAAMbAwHAG0M/gsADAcAWAxtDFkMBwBYDG4MbQwHAG4M/gttDAcAbgz8C/4LBwBXDG4MWAwHAFcMbwxuDAcAbwz8C24MBwBvDPoL/AsHADQMbwxXDAcANAxwDG8MBwBwDPoLbwwHAHAMKQz6CwcANgxwDDQMBwA2DHEMcAwHAHEMKQxwDAcAcQwnDCkMBwAVDHEMNgwHABUMcgxxDAcAcgwnDHEMBwByDBAMJwwHAB4FcgwVDAcAHgVeBXIMBwBeBRAMcgwHAF4FEwUQDAcAcwx0DHUMBwBzDHYMdAwHAHcMeAx5DAcAdwx6DHgMBwB2DHkMdAwHAHYMdwx5DAcAegx7DHgMBwB6DHwMewwHAH0Mewx8DAcAfQx+DHsMBwB/DH4MfQwHAH8MgAx+DAcAgQyADH8MBwCBDIIMgAwHAIMMggyBDAcAgwyEDIIMBwCFDIQMgwwHAIUMhgyEDAcAhQyHDIYMBwCFDIgMhwwHAIkMywWKDAcAiQzJBcsFBwCLDMkFiQwHAIsMzQXJBQcAjAzRBY0MBwCMDM8F0QUHAI0MzQWLDAcAjQzRBc0FBwCODM8FjAwHAI4M0wXPBQcAjwzXBZAMBwCPDNUF1wUHANcFkQyQDAcA1wXZBZEMBwDZBZIMkQwHANkF2wWSDAcA2wWTDJIMBwDbBd0FkwwHAN0FlAyTDAcA3QXfBZQMBwCVDNMFjgwHAJUM4QXTBQcA3wWWDJQMBwDfBeMFlgwHAJcM4QWVDAcAlwzlBeEFBwCWDOgFmAwHAJYM4wXoBQcA6gWXDJkMBwDqBeUFlwwHAJgM7AWaDAcAmAzoBewFBwDuBZkMmwwHAO4F6gWZDAcA8AWbDJwMBwDwBe4FmwwHAJoM8gWdDAcAmgzsBfIFBwD1BZ4MnwwHAPUF9AWeDAcA9AWcDJ4MBwD0BfAFnAwHAJ0M+AWgDAcAnQzyBfgFBwChDKIMowwHAKEMpAyiDAcApQykDKEMBwClDKYMpAwHAKcMqAypDAcApwyqDKgMBwCpDKYMpQwHAKkMqAymDAcAqwyqDKcMBwCrDKwMqgwHAK0MrgyvDAcArQywDK4MBwCuDLEMrwwHAK4MsgyxDAcAsgyzDLEMBwCyDLQMswwHALQMtQyzDAcAtAy2DLUMBwC2DLcMtQwHALYMuAy3DAcAuQysDKsMBwC5DLoMrAwHALgMuwy3DAcAuAy8DLsMBwC9DLoMuQwHAL0Mvgy6DAcAuwy/DMAMBwC7DLwMvwwHAMEMvQzCDAcAwQy+DL0MBwDADMMMxAwHAMAMvwzDDAcAxQzCDMYMBwDFDMEMwgwHAMcMxgzIDAcAxwzFDMYMBwDEDMkMygwHAMQMwwzJDAcAywzMDM0MBwDLDM4MzAwHAM4MyAzMDAcAzgzHDMgMBwDKDM8M0AwHAMoMyQzPDAcAdQyjDHMMBwB1DKEMowwHAHQMoQx1DAcAdAylDKEMBwB4DKkMeQwHAHgMpwypDAcAeQylDHQMBwB5DKkMpQwHAHsMpwx4DAcAewyrDKcMBwDRDK8M0gwHANEMrQyvDAcArwzTDNIMBwCvDLEM0wwHALEM1AzTDAcAsQyzDNQMBwCzDNUM1AwHALMMtQzVDAcAtQzWDNUMBwC1DLcM1gwHAH4Mqwx7DAcAfgy5DKsMBwC3DNcM1gwHALcMuwzXDAcAgAy5DH4MBwCADL0MuQwHANcMwAzYDAcA1wy7DMAMBwDCDIAMggwHAMIMvQyADAcA2AzEDNkMBwDYDMAMxAwHAMYMggyEDAcAxgzCDIIMBwDIDIQMhgwHAMgMxgyEDAcA2QzKDNoMBwDZDMQMygwHAM0MhwyIDAcAzQzMDIcMBwDMDIYMhwwHAMwMyAyGDAcA2gzQDNsMBwDaDMoM0AwHAKIMiQyKDAcAogykDIkMBwCkDIsMiQwHAKQMpgyLDAcAqAyMDI0MBwCoDKoMjAwHAKYMjQyLDAcApgyoDI0MBwCqDI4MjAwHAKoMrAyODAcArgyPDJAMBwCuDLAMjwwHAJEMrgyQDAcAkQyyDK4MBwCSDLIMkQwHAJIMtAyyDAcAkwy0DJIMBwCTDLYMtAwHAJQMtgyTDAcAlAy4DLYMBwCsDJUMjgwHAKwMugyVDAcAlgy4DJQMBwCWDLwMuAwHALoMlwyVDAcAugy+DJcMBwC/DJYMmAwHAL8MvAyWDAcAlwzBDJkMBwCXDL4MwQwHAMMMmAyaDAcAwwy/DJgMBwCZDMUMmwwHAJkMwQzFDAcAmwzHDJwMBwCbDMUMxwwHAMkMmgydDAcAyQzDDJoMBwCeDMsMnwwHAJ4MzgzLDAcAnAzODJ4MBwCcDMcMzgwHAM8MnQygDAcAzwzJDJ0MBwAVBqAM+AUHABUG3AygDAcA9QXcDBUGBwD1BZ8M3AwHANwMzwygDAcA3AzdDM8MBwCfDN0M3AwHAJ8MywzdDAcA3QzQDM8MBwDdDN4M0AwHAMsM3gzdDAcAywzNDN4MBwDeDNsM0AwHAN4M3wzbDAcAzQzfDN4MBwDNDIgM3wwHAN8M2gzbDAcA3wzgDNoMBwCIDOAM3wwHAIgMhQzgDAcA4AzZDNoMBwDgDOEM2QwHAIUM4QzgDAcAhQyDDOEMBwDhDNgM2QwHAOEM4gzYDAcAgwziDOEMBwCDDIEM4gwHAOIM1wzYDAcA4gzjDNcMBwCBDOMM4gwHAIEMfwzjDAcA4wzWDNcMBwDjDOQM1gwHAH8M5AzjDAcAfwx9DOQMBwDkDNUM1gwHAOQM5QzVDAcAfQzlDOQMBwB9DHwM5QwHAOUM1AzVDAcA5QzmDNQMBwB8DOYM5QwHAHwMegzmDAcA5gzTDNQMBwDmDOcM0wwHAHoM5wzmDAcAegx3DOcMBwDnDNIM0wwHAOcM6AzSDAcAdwzoDOcMBwB3DHYM6AwHAOgM0QzSDAcA6AzpDNEMBwB2DOkM6AwHAHYMcwzpDAcA6QytDNEMBwDpDOoMrQwHAHMM6gzpDAcAcwyjDOoMBwDqDLAMrQwHAOoM6wywDAcAowzrDOoMBwCjDKIM6wwHAOsMjwywDAcA6wzsDI8MBwCiDOwM6wwHAKIMigzsDAcA7AzVBY8MBwDsDBYG1QUHAIoMFgbsDAcAigzLBRYGBwDtDO4M7wwHAO0M8AzuDAcA8QzvDPIMBwDxDO0M7wwHAPMM7gz0DAcA8wzvDO4MBwD1DO8M8wwHAPUM8gzvDAcA9gz0DPcMBwD2DPMM9AwHAPgM8wz2DAcA+Az1DPMMBwD5DPoM+wwHAPkM/Az6DAcA/Qz5DP4MBwD9DPwM+QwHAP8MAA0BDQcA/wwCDQANBwABDQMNBA0HAAENAA0DDQcABQ0GDQcNBwAFDQgNBg0HAAkNCg0LDQcACQ0MDQoNBwACDQ0NAA0HAAINDg0NDQcAAA0PDQMNBwAADQ0NDw0HAAgNEA0GDQcACA0RDRANBwAMDRINCg0HAAwNEw0SDQcAFA0VDRYNBwAUDRcNFQ0HABYNGA0ZDQcAFg0VDRgNBwAaDRsNHA0HABoNHQ0bDQcAGw0eDR8NBwAbDR0NHg0HACAN+gz8DAcAIA0hDfoMBwD9DCAN/AwHAP0MIg0gDQcAIw0kDSUNBwAjDSYNJA0HACcNJQ0kDQcAJw0oDSUNBwApDQQNAw0HACkNKg0EDQcAKw0DDQ8NBwArDSkNAw0HACcNLA0oDQcAJw0tDSwNBwAuDS8NMA0HAC4NMQ0vDQcAMQ0tDS8NBwAxDSwNLQ0HADINMw00DQcAMg01DTMNBwA1DR8NMw0HADUNGw0fDQcANg01DTINBwA2DTcNNQ0HADcNGw01DQcANw0cDRsNBwA4DSINOQ0HADgNIA0iDQcAIA06DSENBwAgDTgNOg0HAAkNOw0MDQcACQ08DTsNBwAMDT0NEw0HAAwNOw09DQcAPg0/DUANBwA+DUENPw0HAEEN8Aw/DQcAQQ3uDPAMBwBCDUENPg0HAEINQw1BDQcAQw3uDEENBwBDDfQM7gwHAEQNQw1CDQcARA1FDUMNBwBFDfQMQw0HAEUN9wz0DAcARg36DCENBwBGDfsM+gwHADoNRg0hDQcAOg1HDUYNBwBIDQsNCg0HAEgNSQ0LDQcAEg1IDQoNBwASDUoNSA0HAEsNCQ1MDQcASw08DQkNBwBMDQsNSQ0HAEwNCQ0LDQcAIw1NDU4NBwAjDSUNTQ0HACgNTQ0lDQcAKA1PDU0NBwBPDSwNUA0HAE8NKA0sDQcAUQ0xDS4NBwBRDVINMQ0HAFINLA0xDQcAUg1QDSwNBwD5DFMNVA0HAPkM+wxTDQcA7QxTDfAMBwDtDFQNUw0HAFUN+QxUDQcAVQ3+DPkMBwDxDFQN7QwHAPEMVQ1UDQcARw1WDUYNBwBHDVcNVg0HAD8NVw1ADQcAPw1WDVcNBwDwDFYNPw0HAPAMUw1WDQcA+wxWDVMNBwD7DEYNVg0HAFENWA1SDQcAUQ1ZDVgNBwBZDTMNWA0HAFkNNA0zDQcAWg1bDVwNBwBaDV0NWw0HAF0NGA1bDQcAXQ0ZDRgNBwBSDV4NUA0HAFINWA1eDQcAWA0fDV4NBwBYDTMNHw0HAFANXw1PDQcAUA1eDV8NBwBeDR4NXw0HAF4NHw0eDQcATw1gDU0NBwBPDV8NYA0HAF8NHQ1gDQcAXw0eDR0NBwBNDWENTg0HAE0NYA1hDQcAYA0aDWENBwBgDR0NGg0HAPYMYg1jDQcA9gz3DGINBwBIDWINSQ0HAEgNYw1iDQcA+AxjDWQNBwD4DPYMYw0HAGQNSA1KDQcAZA1jDUgNBwBlDUsNTA0HAGUNZg1LDQcAZg1FDUQNBwBmDWUNRQ0HAGINRQ1lDQcAYg33DEUNBwBiDUwNSQ0HAGINZQ1MDQcAJg1nDSQNBwAmDWgNZw0HACcNZw1pDQcAJw0kDWcNBwBqDS8Naw0HAGoNMA0vDQcAbA0vDS0NBwBsDWsNLw0HAGkNLQ0nDQcAaQ1sDS0NBwAqDW0NBA0HACoNbg1tDQcAbg1rDW0NBwBuDWoNaw0HAAcNbw0FDQcABw1wDW8NBwBwDXENbw0HAHANcg1xDQcABA1zDQENBwAEDW0Ncw0HAG0NbA1zDQcAbQ1rDWwNBwABDXQN/wwHAAENcw10DQcAcw1pDXQNBwBzDWwNaQ0HAP8MdQ0CDQcA/wx0DXUNBwB0DWcNdQ0HAHQNaQ1nDQcAAg12DQ4NBwACDXUNdg0HAHUNaA12DQcAdQ1nDWgNBwB3DWYNRA0HAHcNeA1mDQcAeQ1EDUINBwB5DXcNRA0HAHoNcQ1yDQcAeg17DXENBwB8DTANag0HAHwNfQ0wDQcAfQ0uDTANBwB9DX4NLg0HAH4NUQ0uDQcAfg1/DVENBwCADVoNXA0HAIAN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BwDlD+YPXBAHAOcPXRBeEAcA5w/lD10QBwDoD14QXxAHAOgP5w9eEAcA6Q9fEGAQBwDpD+gPXxAHAGEQWhBZEAcAYRBiEFoQBwBSEGIQYRAHAFIQURBiEAcAYxBcEFsQBwBjEGQQXBAHAFQQZBBjEAcAVBBTEGQQBwBkEF0QXBAHAGQQZRBdEAcAUxBlEGQQBwBTEFUQZRAHAGUQXhBdEAcAZRBmEF4QBwBVEGYQZRAHAFUQVhBmEAcAZhBfEF4QBwBmEGcQXxAHAFYQZxBmEAcAVhBXEGcQBwBnEGAQXxAHAGcQaBBgEAcAVxBoEGcQBwBXEFgQaBAHAGkQahBrEAcAaRBsEGoQBwBrEG0QbhAHAGsQahBtEAcAbxBwEHEQBwBvEHIQcBAHAHMQchBvEAcAcxB0EHIQBwBsEHUQdhAHAGwQaRB1EAcAdhB3EHgQBwB2EHUQdxAHAHkQcRBwEAcAeRB6EHEQBwB7EHoQeRAHAHsQfBB6EAcAeBB8EHsQBwB4EHcQfBAHAH0QfhB/EAcAfRCAEH4QBwCAEP8PABAHAIAQfRD/DwcAgBCBEH4QBwCAEIIQgRAHAIIQABABEAcAghCAEAAQBwA5EIMQOhAHADkQhBCDEAcAhBCFEIMQBwCEEIYQhRAHAD0QhBA5EAcAPRCHEIQQBwCEEIgQhhAHAIQQhxCIEAcAhxCJEIgQBwCHEIoQiRAHAIcQTxCKEAcAhxA9EE8QBwCKEIsQiRAHAIoQjBCLEAcAihBUEIwQBwCKEE8QVBAHAI0QfxCOEAcAjRB9EH8QBwCNEP8PfRAHAI0QWxD/DwcAjxBbEI0QBwCPEGMQWxAHAI8QjhCQEAcAjxCNEI4QBwCMEGMQjxAHAIwQVBBjEAcAjBCQEIsQBwCMEI8QkBAHAJEQkhCTEAcAkRCUEJIQBwCUEPMP9Q8HAJQQkRDzDwcAlBCVEJIQBwCUEJYQlRAHAJYQ9Q/4DwcAlhCUEPUPBwCXEJgQmRAHAJcQmhCYEAcAmhD7D/oPBwCaEJcQ+w8HAJsQmRCcEAcAmxCXEJkQBwCXEP4P+w8HAJcQmxD+DwcAkxCdEJEQBwCTEJ4QnRAHAPMPnRBMEAcA8w+REJ0QBwCeEJ8QnRAHAJ4QoBCfEAcATBCfEFEQBwBMEJ0QnxAHAKEQmhCiEAcAoRCYEJoQBwBaEJoQ+g8HAFoQohCaEAcAoxChEKIQBwCjEKQQoRAHAGIQohBaEAcAYhCjEKIQBwCfEKQQoxAHAJ8QoBCkEAcAURCjEGIQBwBREJ8QoxAHAIYQaRBrEAcAhhCIEGkQBwBsEJIQahAHAGwQkxCSEAcAhRBrEG4QBwCFEIYQaxAHAGoQlRBtEAcAahCSEJUQBwBtEIUQbhAHAG0QlRCFEAcAcRB+EG8QBwBxEH8QfhAHAJkQcBByEAcAmRCYEHAQBwBvEIEQcxAHAG8QfhCBEAcAgRB0EHMQBwCBEJwQdBAHAJwQchB0EAcAnBCZEHIQBwB2EJMQbBAHAHYQnhCTEAcAiBB1EGkQBwCIEIkQdRAHAHgQnhB2EAcAeBCgEJ4QBwCJEHcQdRAHAIkQixB3EAcAcBChEHkQBwBwEJgQoRAHAI4QcRB6EAcAjhB/EHEQBwB5EKQQexAHAHkQoRCkEAcAkBB6EHwQBwCQEI4QehAHAHsQoBB4EAcAexCkEKAQBwCLEHwQdxAHAIsQkBB8EAcApRCmEKcQBwClEKgQphAHAEEQqBClEAcAQRDeD6gQBwCoEKkQphAHAKgQqhCpEAcA3g+qEKgQBwDeD9wPqhAHAKoQqxCpEAcAqhCsEKsQBwDcD6wQqhAHANwP3Q+sEAcArBCtEKsQBwCsEK4QrRAHAN0PrhCsEAcA3Q/WD64QBwCuEK8QrRAHAK4QsBCvEAcA1g+wEK4QBwDWD9cPsBAHAKUQ/A9BEAcApRBZEPwPBwCnEFkQpRAHAKcQYRBZEAcASBCxEEoQBwBIELIQsRAHAEkQshBIEAcASRCzELIQBwBKELQQSxAHAEoQsRC0EAcAJBC1ECUQBwAkELYQtRAHACUQtxAqEAcAJRC1ELcQBwAqELgQLBAHACoQtxC4EAcArxC5EK0QBwCvELoQuRAHAK0QuxCrEAcArRC5ELsQBwCrELwQqRAHAKsQuxC8EAcAqRC9EKYQBwCpELwQvRAHAKYQvhCnEAcAphC9EL4QBwCnEL8QYRAHAKcQvhC/EAcAYRDAEFIQBwBhEL8QwBAHAFIQsxBJEAcAUhDAELMQBwCyEMEQsRAHALIQwhDBEAcAsxDCELIQBwCzEMMQwhAHALEQxBC0EAcAsRDBEMQQBwDAEMMQsxAHAMAQxRDDEAcAthDGELUQBwC2EMcQxhAHALUQyBC3EAcAtRDGEMgQ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AMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wAwQYkEAAByYXY0LWJsYWNrX2dsYXNzADgC3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMwQcohAAByYXY0LWJvZHkA3BAUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBa4HrwewB7EHsgezB7QHtQe2B7cHuAe5B7oHuwe8B70Hvge/B8AHwQfCB8MHxAfFB8YHxwfIB8kHygfLB8wHzQfOB88H0AfRB9IH0wfUB9UH1gfXB9gH2QfaB9sH3AfdB94H3wfgB+EH4gfjB+QH5QfmB+cH6AfpB+oH6wfsB+0H7gfvB/AH8QfyB/MH9Af1B/YH9wf4B/kH+gf7B/wH/Qf+B/8HAAgBCAIIAwgECAUIBggHCAgICQgKCAsIDAgNCA4IDwgQCBEIEggTCBQIFQgWCBcIGAgZCBoIGwgcCB0IHggfCCAIIQgiCCMIJAglCCYIJwgoCCkIKggrCCwILQguCC8IMAgxCDIIMwg0CDUINgg3CDgIOQg6CDsIPAg9CD4IPwhACEEIQghDCEQIRQhGCEcISAhJCEoISwhMCE0ITghPCFAIUQhSCFMIVAhVCFYIVwhYCFkIWghbCFwIXQheCF8IYAhhCGIIYwhkCGUIZghnCGgIaQhqCGsIbAhtCG4IbwhwCHEIcghzCHQIdQh2CHcIeAh5CHoIewh8CH0Ifgh/CIAIgQiCCIMIhAiFCIYIhwiICIkIigiLCIwIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJgImQiaCJsInAidCJ4InwigCKEIogijCKQIpQimCKcIqAipCKoIqwisCK0IrgivCLAIsQiyCLMItAi1CLYItwi4CLkIugi7CLwIvQi+CL8IwAjBCMIIwwjECMUIxgjHCMgIyQjKCMsIzAjNCM4IzwjQCNEI0gjTCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjfCOAI4QjiCOMI5AjlCOYI5wjoCOkI6gjrCOwI7QjuCO8I8AjxCPII8wj0CPUI9gj3CPgI+Qj6CPsI/Aj9CP4I/wgACQEJAgkDCQQJBQkGCQcJCAkJCQoJCwkMCQ0JDgkPCRAJEQkSCRMJFAkVCRYJFwkYCRkJGgkbCRwJHQkeCR8JIAkhCSIJIwkkCSUJJgknCSgJKQkqCSsJLAktCS4JLwkwCTEJMgkzCTQJNQk2CTcJOAk5CToJOwk8CT0JPgk/CUAJQQlCCUMJRAlFCUYJRwlICUkJSglLCUwJTQlOCU8JUAlRCVIJUwlUCVUJVglXCVgJWQlaCVsJXAldCV4JXwlgCWEJYgljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJdAl1CXYJdwl4CXkJegl7CXwJfQl+CX8JgAmBCYIJgwmECYUJhgmHCYgJiQmKCYsJjAmNCY4JjwmQCZEJkgmTCZQJlQmWCZcJmAmZCZoJmwmcCZ0JngmfCaAJoQmiCaMJpAmlCaYJpwmoCakJqgmrCawJrQmuCa8JsAmxCbIJswm0CbUJtgm3CbgJuQm6CbsJvAm9Cb4JvwnACcEJwgnDCcQJxQnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCdwJ3QneCd8J4AnhCeIJ4wnkCeUJ5gnnCegJ6QnqCesJ7AntCe4J7wnwCfEJ8gnzCfQJ9Qn2CfcJ+An5CfoJ+wn8Cf0J/gn/CQAKAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUKFgoXChgKGQoaChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoyCjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KQApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4KTwpQClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpfCmAKYQpiCmMKZAplCmYKZwpoCmkKagprCmwKbQpuCm8KcApxCnIKcwp0CnUKdgp3CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqGCocKiAqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqkCqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrgCuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ1WDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ82DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kP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6B/pH+of6x/sH+0f7h/vH/Af8R/yH/Mf9B/1H/Yf9x/4H/kf+h/7H/wf/R/+H/8fACABIAIgAyAEIAUgBiAHIAggCSAKIAsgDCANIA4gDyAQIBEgEiATIBQgFSAWIBcgGCAZIBogGyAcIB0gHiAfICAgISAiICMgJCAlICYgJyAoICkgKiArICwgLSAuIC8gMCAxIDIgMyA0IDUgNiA3IDggOSA6IDsgPCA9ID4gPyBAIEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFkgWiBbIFwgXSBeIF8gYCBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0gfiB/IIAggSCCIIMghCCFIIYghyCIIIkgiiCLIIwgjSCOII8gkCCRIJIgkyCUIJUgliCXIJggmSCaIJsgnCCdIJ4gnyCgIKEgoiCjIKQgpSCmIKcgqCCpIKogqyCsIK0griCvILAgsSCyILMgtCC1ILYgtyC4ILkguiC7ILwgvSC+IL8gwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWINcg2CDZINog2yDcIN0g3iDfIOAg4SDiIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SDuIO8g8CDxIPIg8yD0IPUg9iD3IPgg+SD6IPsg/CD9IP4g/yAAIQEhAiEDIQQhBSEGIQchCCEJIQohCyEMIQ0hDiEPIRAhESESIRMhFCEVIRYhFyEYIRkhGiEbIRwhHSEeIR8hICEhISIhIyEkISUhJiEnISghKSEqISshLCEtIS4hLyEwITEhMiEzITQhNSE2ITchOCE5ITohOyE8IT0hPiE/IUAhQSFCIUMhRCFFIUYhRyFIIUkhSiFLIUwhTSFOIU8hUCFRIVIhUyFUIVUhViFXIVghWSFaIVshXCFdIV4hXyFgIWEhYiFjIWQhZSFmIWchaCFpIWohayFsIW0hbiFvIXAhcSFyIXMhdCF1IXYhdyF4IXkheiF7IXwhfSF+IX8hgCGBIYIhgyGEIYUhhiGHIYghiSGKIYshjCGNIY4hjyGQIZEhkiGTIZQhlSGWIZchMEFdGQAAcmF2NC1zaGllbGRzAKQMCgULBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8FAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wYABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQfEFMUUxhTHFMgUyRTKFMsUzBTNFM4UzxTQFNEU0hTTFNQU1RTWFNcU2BTZFNoU2xTcFN0U3hTfFOAU4RTiFOMU5BTlFOYU5xToFOkU6hTrFOwU7RTuFO8U8BTxFPIU8xT0FPUU9hT3FPgU+RT6FPsU/BT9FP4U/xQAFQEVAhUDFQQVBRUGFQcVCBUJFQoVCxUMFQ0VDhUPFRAVERUSFRMVFBUVFRYVFxUYFRkVGhUbFRwVHRUeFR8VIBUhFSIVIxUkFSUVJhUnFSgVKRUqFSsVLBUtFS4VLxUwFTEVMhUzFTQVNRU2FTcVOBU5FToVOxU8FT0VPhU/FUAVQRVCFUMVRBVFFUYVRxVIFUkVShVLFUwVTRVOFU8VUBVRFVIVUxVUFVUVVhVXFVgVWRVaFVsVXBVdFV4VXxVgFWEVYhVjFWQVZRVmFWcVaBVpFWoVaxVsFW0VbhVvFXAVcRVyFXMVdBV1FXYVdxV4FXkVehV7FXwVfRV+FX8VgBWBFYIVgxWEFYUVhhWHFYgViRWKFYsVjBWNFY4VjxWQFZEVkhWTFZQVlRWWFZcVmBWZFZoVmxWcFZ0VnhWfFaAVoRWiFaMVpBWlFaYVpxWoFakVqhWrFawVrRWuFa8VsBWxFbIVsxW0FbUVthW3FbgVuRW6FbsVvBW9Fb4VvxXAFcEVwhXDFcQVxRXGFccVyBXJFcoVyxXMFc0VzhXPFdAV0RXSFdMV1BXVFdYV1xXYFdkV2hXbFdwV3RXeFd8V4BXhFeIV4xXkFeUV5hXnFegV6RXqFesV7BXtFe4V7xXwFfEV8hXzFfQV9RX2FfcV+BX5FfoV+xX8Ff0V/hX/FQAWARYCFgMWBBYFFgYWBxYIFgkWChYLFgwWDRYOFg8WEBYRFhIWExYUFhUWFhYXFhgWGRYaFhsWHBYdFh4WHxYgFiEWIhYjFiQWJRYmFicWKBYpFioWKxYsFi0WLhYvFjAWMRYyFjMWNBY1FjYWNxY4FjkWOhY7FjwWPRY+Fj8WQBZBFkIWQxZEFkUWRhZHFkgWSRZKFksWTBZNFk4WTxZQFlEWUhZTFlQWVRZWFlcWWBZZFloWWxZcFl0WXhZfFmAWYRZiFmMWZBZlFmYWZxZoFmkWahZrFmwWbRZuFm8WcBZxFnIWcxZ0FnUWdhZ3FngWeRZ6FnsWfBZ9Fn4WfxaAFoEWghaDFoQWhRaGFocWiBaJFooWixaMFo0WjhaPFpAWkRaSFpMWlBaVFpYWlxaYFpkWmhabFpwWnRaeFp8WoBahFqIWoxakFqUWphanFqgWqRaqFqsWrBatFq4WrxawFrEWshazFrQWtRa2FrcWuBa5FroWuxa8Fr0Wvha/FsAWwRbCFsMWxBbFFsYWxxbIFskWyhbLFswWzRbOFs8W0BbRFtIW0xbUFtUW1hbXFtgW2RbaFtsW3BbdFt4W3xbgFuEW4hbjFuQW5RbmFucW6BbpFuoW6xbsFu0W7hbvFvAW8RbyFvMW9Bb1FvYW9xb4FvkW+hb7FvwW/Rb+Fv8WABcBFwIXAxcEFwUXBhcHFwgXCRcKFwsXDBcNFw4XDxcQFxEXEhcTFxQXFRcWFxcXGBcZFxoXGxccFx0XHhcfFyAXIRciFyMXJBclFyYXJxcoFykXKhcrFywXLRcuFy8XMBcxFzIXMxc0FzUXNhc3FzgXORc6FzsXPBc9Fz4XPxdAF0EXQhdDF0QXRRdGF0cXSBdJF0oXSxdMF00XThdPF1AXURdSF1MXVBdVF1YXVxdYF1kXWhdbF1wXXRdeF18XYBdhF2IXYxdkF2UXZhdnF2gXaRdqF2sXbBdtF24XbxdwF3EXchdzF3QXdRd2F3cXeBd5F3oXexd8F30Xfhd/F4AXgReCF4MXhBeFF4YXhxeIF4kXiheLF4wXjReOF48XkBeRF5IXkxeUF5UXlheXF5gXmReaF5sXnBedF54XnxegF6EXohejF6QXpRemF6cXqBepF6oXqxesF60XrhevF7AXsReyF7MXtBe1F7YXtxe4F7kXuhe7F7wXvRe+F78XwBfBF8IXwxfEF8UXxhfHF8gXyRfKF8sXzBfNF84XzxfQF9EX0hfTF9QX1RfWF9cX2BfZF9oX2xfcF90X3hffF+AX4RfiF+MX5BflF+YX5xfoF+kX6hfrF+wX7RfuF+8X8BfxF/IX8xf0F/UX9hf3F/gX+Rf6F/sX/Bf9F/4X/xcAGAEYAhgDGAQYBRgGGAcYCBgJGAoYCxgMGA0YDhgPGBAYERgSGBMYFBgVGBYYFxgYGBkYGhgbGBwYHRgeGB8YIBghGCIYIxgkGCUYJhgnGCgYKRgqGCsYLBgtGC4YLxgwGDEYMhgzGDQYNRg2GDcYOBg5GDoYOxg8GD0YPhg/GEAYQRhCGEMYRBhFGEYYRxhIGEkYShhLGEwYTRhOGE8YUBhRGFIYUxhUGFUYVhhXGFgYWRhaGFsYXBhdGF4YXxhgGGEYYhhjGGQYZRhmGGcYaBhpGGoYaxhsGG0YbhhvGHAYcRhyGHMYdBh1GHYYdxh4GHkYehh7GHwYfRh+GH8YgBiBGIIYgxiEGIUYhhiHGIgYiRiKGIsYjBiNGI4YjxiQGJEYkhiTGJQYlRiWGJcYmBiZGJoYmxicGJ0YnhifGKAYoRiiGKMYpBilGKYYpxioGKkYqhirGKwYrRiuGK8YsBixGLIYsxi0GLUYthi3GLgYuRi6GLsYvBi9GL4YvxjAGMEYwhjDGMQYxRjGGMcYyBjJGMoYyxjMGM0YzhjPGNAY0RjSGNMY1BjVGNYY1xjYGNkY2hjbGNwY3RjeGN8Y4BjhGOIY4xjkGOUY5hjnGOgY6RjqGOsY7BjtGO4Y7xjwGPEY8hjzGPQY9Rj2GPcY+Bj5GPoY+xj8GP0Y/hj/GAAZARkCGQMZBBkFGQYZBxkIGQkZChkLGQwZDRkOGQ8ZEBkRGRIZExkUGRUZFhkXGRgZGRkaGRsZHBkdGR4ZHxkgGSEZIhkjGSQZJRkmGScZKBkpGSoZKxksGS0ZLhkvGTAZMRkyGTMZNBk1GTYZNxk4GTkZOhk7GTwZPRk+GT8ZQBlBGUIZQxlEGUUZRhlHGUgZSRlKGUsZTBlNGU4ZTxlQGVEZUhlTGVQZVRlWGVcZWBlZGVoZWxlcGV0ZXhlfGWAZYRliGWMZZBllGWYZZxloGWkZahlrGWwZbRluGW8ZcBlxGXIZcxl0GXUZdhl3GXgZeRl6GXsZfBl9GX4ZfxmAGYEZghmDGYQZhRmGGYcZiBmJGYoZixmMGY0ZjhmPGZAZkRmSGZMZlBmVGZYZlxmYGZkZmhmbGZwZnRmeGZ8ZoBmhGaIZoxmkGaUZphmnGagZqRmqGasZrBmtGa4ZrxmwGbEZshmzGbQZtRm2GbcZuBm5GboZuxm8Gb0Zvhm/GcAZwRnCGcMZxBnFGcYZxxnIGckZyhnLGcwZzRnOGc8Z0BnRGdIZ0xnUGdUZ1hnXGdgZ2RnaGdsZ3BndGd4Z3xngGeEZ4hnjGeQZ5RnmGecZ6BnpGeoZ6xnsGe0Z7hnvGfAZ8RnyGfMZ9Bn1GfYZ9xn4GfkZ+hn7GfwZ/Rn+Gf8ZABoBGgIaAxoEGgUaBhoHGggaCRoKGgsaDBoNGg4aDxoQGhEaEhoTGhQaFRoWGhcaGBoZGhoaGxocGh0aHhofGiAaIRoiGiMaJBolGiYaJxooGikaKhorGiwaLRouGi8aMBoxGjIaMxo0GjUaNho3GjgaORo6GjsaPBo9Gj4aPxpAGkEaQhpDGkQaRRpGGkcaSBpJGkoaSxpMGk0aThpPGlAaURpSGlMaVBpVGlYaVxpYGlkaWhpbGlwaXRpeGl8aYBphGmIaYxpkGmUaZhpnGmgaaRpqGmsabBptGm4abxpwGnEachpzGnQadRp2GncaeBp5Gnoaexp8Gn0afhp/GoAagRqCGoMahBqFGoYahxqIGokaihqLGowajRqOGo8akBqRGpIakxqUGpUalhqXGpgamRqaGpsanBqdGp4anxqgGqEaohqjGqQapRqmGqcaqBqpGqoaqxqsGq0arhqvGrAasRqyGrMatBq1GrYatxq4Grkauhq7GrwavRq+Gr8awBrBGsIawxrEGsUaxhrHGsgayRrKGssazBrNGs4azxrQGtEa0hrTGtQa1RrWGtca2BrZGtoa2xrcGt0a3hrfGuAa4RriGuMa5BrlGuYa5xroGuka6hrrGuwa7RruGu8a8BrxGvIa8xr0GvUa9hr3Gvga+Rr6Gvsa/Br9Gv4a/xoAGwEbAhsDGwQbBRsGGwcbCBsJGwobCxsMGw0bDhsPGxAbERsSGxMbFBsVGxYbFxsYGxkbGhsbGxwbHRseGx8bIBshGyIbIxskGyUbJhsnGygbKRsqGysbLBstGy4bLxswGzEbMhszGzQbNRs2GzcbOBs5GzobOxs8Gz0bPhs/G0AbQRtCG0MbRBtFG0YbRxtIG0kbShtLG0wbTRtOG08bUBtRG1IbUxtUG1UbVhtXG1gbWRtaG1sbXBtdG14bXxtgG2EbYhtjG2QbZRtmG2cbaBtpG2obaxtsG20bbhtvG3AbcRtyG3MbdBt1G3Ybdxt4G3kbeht7G3wbfRt+G38bgBuBG4IbgxuEG4UbhhuHG4gbiRuKG4sbjBuNG44bjxuQG5EbkhuTG5QblRuWG5cbmBuZG5obmxucG50bnhufG6AboRuiG6MbpBulG6YbpxuoG6kbqhurG6wbrRuuG68bsBuxG7Ibsxu0G7Ubthu3G7gbuRu6G7sbvBu9G74bvxvAG8EbwhvDG8QbxRvGG8cbyBvJG8obyxvMG80bzhvPG9Ab0RvSG9Mb1BvVG9Yb1xvYG9kb2hvbG9wb3RveG98b4BvhG+Ib4xvkG+Ub5hvnG+gb6RvqG+sb7BvtG+4b7xvwG/Eb8hvzG/Qb9Rv2G/cb+Bv5G/ob+xv8G/0b/hv/GwAcARwCHAMcBBwFHAYcBxwIHAkcChwLHAwcDRwOHA8cEBwRHBIcExwUHBUcFhwXHBgcGRwaHBscHBwdHB4cHxwgHCEcIhwjHCQcJRwmHCccKBwpHCocKxwsHC0cLhwvHDAcMRwyHDMcNBw1HDYcNxw4HDkcOhw7HDwcPRw+HD8cQBxBHEIcQxxEHEUcRhxHHEgcSRxKHEscTBxNHE4cTxxQHFEcUhxTHFQcVRxWHFccWBxZHFocWxxcHF0cXhxfHGAcYRxiHGMcZBxlHGYcZxxoHGkcahxrHGwcbRxuHG8ccBxxHHIccxx0HHUcdhx3HHgceRx6HHscfBx9HH4cfxyAHIEcghyDHIQchRyGHIcciByJHIocixyMHI0cjhyPHJAckRySHJMclByVHJYclxyYHJkcmhybHJwcnRyeHJ8coByhHKIcoxykHKUcphynHKgcqRyqHKscrBytHK4crxywHLEcshyzHLQctRy2HLccuBy5HLocuxy8HL0cvhy/HMAcwRzCHMMcxBzFHMYcxxzIHMkcyhzLHMwczRzOHM8c0BzRHNIc0xzUHNUc1hzXHNgc2RzaHNsc3BzdHN4c3xzgHOEc4hzjHOQc5RzmHOcc6BzpHOoc6xzsHO0c7hzvHPAc8RzyHPMc9Bz1HPYc9xz4HPkc+hz7HPwc/Rz+HP8cAB0BHQIdAx0EHQUdBh0HHQgdCR0KHQsdDB0NHQ4dDx0QHREdEh0THRQdFR0WHRcdGB0ZHRodGx0cHR0dHh0fHSAdIR0iHSMdJB0lHSYdJx0oHSkdKh0rHSwdLR0uHS8dMB0xHTIdMx00HTUdNh03HTgdOR06HTsdPB09HT4dPx1AHUEdQh1DHUQdRR1GHUcdSB1JHUodSx1MHU0dTh1PHVAdUR1SHVMdVB1VHVYdVx1YHVkdWh1bHVwdXR1eHV8dYB1hHWIdYx1kHWUdZh1nHWgdaR1qHWsdbB1tHW4dbx1wHXEdch1zHXQddR12HXcdeB15HXodex18HX0dfh1/HYAdgR2CHYMdhB2FHYYdhx2IHYkdih2LHYwdjR2OHY8dkB2RHZIdkx2UHZUdlh2XHZgdmR2aHZsdnB2dHZ4dnx2gHaEdoh2jHaQdpR2mHacdqB2pHaodqx2sHa0drh2vHbAdsR2yHbMdtB21HbYdtx24Hbkduh27HbwdvR2+Hb8dwB3BHcIdwx3EHcUdxh3HHcgdyR3KHcsdzB3NHc4dzx3QHdEd0h3THdQd1R3WHdcd2B3ZHdod2x3cHd0d3h3fHeAd4R3iHeMd5B3lHeYd5x3oHekd6h3rHewd7R3uHe8d8B3xHfId8x30HfUd9h33Hfgd+R36Hfsd/B39Hf4d/x0AHgEeAh4DHgQeBR4GHgceCB4JHgoeCx4MHg0eDh4PHhAeER4SHhMeFB4VHhYeFx4YHhkeGh4bHhweHR4eHh8eIB4hHiIeIx4kHiUeJh4nHigeKR4qHiseLB4tHi4eLx4wHjEeMh4zHjQeNR42HjceOB45HjoeOx48Hj0ePh4/HkAeQR5CHkMeRB5FHkYeRx5IHkkeSh5LHkweTR5OHk8eUB5RHlIeUx5UHlUeVh5XHlgeWR5aHlseXB5dHl4eXx5gHmEeYh5jHmQeZR5mHmceaB5pHmoeax5sHm0ebh5vHnAecR5yHnMedB51HnYedx54Hnkeeh57HnwefR5+Hn8egB6BHoIegx6EHoUehh6HHogeiR6KHosejB6NHo4ejx6QHpEekh6THpQelR6WHpcemB6ZHpoemx6cHp0enh6fHqAeoR6iHqMepB6lHqYepx6oHqkeqh6rHqwerR6uHq8esB6xHrIesx60HrUeth63HrgeuR66HrsevB69Hr4evx7AHsEewh7DHsQexR7GHsceyB7JHsoeyx7MHs0ezh7PHtAe0R7SHtMe1B7VHtYe1x7YHtke2h7bHtwe3R7eHt8e4B7hHuIe4x7kHuUe5h7nHuge6R7qHuse7B7tHu4e7x7wHvEe8h7zHvQe9R72Hvce+B75Hvoe+x78Hv0e/h7/HgAfAR8CHwMfBB8FHwYfBx8IHwkfCh8LHwwfDR8OHw8fEB8RHxIfEx8UHxUfFh8XHzBB8QAAAHJhdjQtZGFya2VyX2dsYXMAbADAE8ETwhPDE8QTxRPGE8cTyBPJE8oTyxPME80TzhPPE9AT0RPSE9MT1BPVE9YT1xPYE9kT2hPbE9wT3RPeE98T4BPhE+IT4xPkE+UT5hPnE+gT6RPqE+sT7BPtE+4T7xPwE/ET8hPzE/QT9RP2E/cT+BP5E/oT+xP8E/0T/hP/EwAUARQCFAMUBBQFFAYUBxQIFAkUChQLFAwUDRQOFA8UEBQRFBIUExQUFBUUFhQXFBgUGRQaFBsUHBQdFB4UHxQgFCEUIhQjFCQUJRQmFCcUKBQpFCoUKxQwQUMBAAByYXY0LWdsYXNzAJgALBQtFC4ULxQwFDEUMhQzFDQUNRQ2FDcUOBQ5FDoUOxQ8FD0UPhQ/FEAUQRRCFEMURBRFFEYURxRIFEkUShRLFEwUTRROFE8UUBRRFFIUUxRUFFUUVhRXFFgUWRRaFFsUXBRdFF4UXxRgFGEUYhRjFGQUZRRmFGcUaBRpFGoUaxRsFG0UbhRvFHAUcRRyFHMUdBR1FHYUdxR4FHkUehR7FHwUfRR+FH8UgBSBFIIUgxSEFIUUhhSHFIgUiRSKFIsUjBSNFI4UjxSQFJEUkhSTFJQUlRSWFJcUmBSZFJoUmxScFJ0UnhSfFKAUoRSiFKMUpBSlFKYUpxSoFKkUqhSrFKwUrRSuFK8UsBSxFLIUsxS0FLUUthS3FLgUuRS6FLsUvBS9FL4UvxTAFMEUwhTDFFBBZoYAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACy1XI/GEOwPvjrZT/4OZE+kn5lP5yWmj7YrWY/6OqcPm8bZz8Iq5M+7LVmP6THkD7kR2Y/CImZPpxRZz/MqJs+y75nP1D9kj43wp4+UA04PlWDUz9n/CU/uU7WPlANOD4osjk/Z/wlP5kgdz+3yVE/Hl1PP7fJUT+ASTY/LWBwP5z6Iz8tYHA/w/IPP0iPST+BLDY/D3QwP8v1Jz8pgAw/DdO2PoAbKD4sVra9cstYP6IKWT869EI/a49JPjr0Qj8C3A8/cstYP09mfT/8yPo+9n6tPvzI+j7B62s/uKIiPvSJij64oiI+fEUDP1ANOD52/s4+UA04PnWhaz9n/CU/Y5+HP7fJUT+gZ04/LWBwP8gYPD8tYHA/oEpOPw90MD/wECg/SI9JP+sTQD8pgAw/TQ/nPoAbKD7s1TM+OvRCPyrJ4b1yy1g/om0KP3LLWD9CnFM/OvRCPzeioj78yPo+7/d3P/zI+j5oWn8+uKIiPmF9Zj+4oiI+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLoGj8YHaQ+0MshP4DOmD7QyyE/7DeZPiLoGj8UuaM+6+coP3Awjz7r5yg/DJ2PPhq5GT9gTaY+GrkZP6zqpT6i3xU/wEKsPqLfFT/046s+3vARP6y0sj7e8BE/rFqyPmaUDj+Qk7c+ZpQOP3w+tz62Rjo/mBGDPrZGOj8YgIM+lfQ5P2CUUz6/rzk/eNdMPiYcDT9YGac+LaQPP6zqnj4fdxA/XI2fPnlVDD9kp6Y+7O0TP9yVlT7EzxQ/oIOWPszOFz+YfY4+W7cYP1izjz6AIig/cBdtPsdJJz+gJGg+tfsYP6Dpiz7k5hk/mDiNPuzYID9kGIE+VuwfP1Bsfj7KGBo/QDqRPj8IIT9EQoU+N0koP5ildT5P6Rg/xKqTPtEEOj/oOFw+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWwQVP+Rbmj7evhA/LOuiPv9MDT+QF6k+sW0MP5iXqD7pwg0/5Me2Pja6DT/Ebrc+94UaP+yVmj5ybyE/TBWPPjadKD9MAIU+r1YZP7zpnD7TJzo/kAJxPqt3FT/ERaM+Zl4RP0y/qj7/AQ4/1L6wPk4qDT8YQ7A+boEaP5yWmj4IFBo/+DmRPihSGT/o6pw+keQYPwirkz4cuBk/CImZPhRKGT+kx5A+ZK4YP8yomz41QRg/UP2SPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhpMT8AyE4/CiosPQDITj8biKo8AMhOPwj7Kz8AyE4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBh6oBAGYeAAABAAIABwAAAAMAAQAHAAQAAwAFAAcABAABAAMABwAGAAAAAgAHAAYABwAAAAcAAQAGAAIABwABAAgABgAHAAQACAABAAcABAAJAAgABwAAAAoAAwAHAAAABwAKAAcACgAFAAMABwAKAAsABQAHAAYADAAHAAcABgANAAwABwAOAA0ADwAHAA4ADAANAAcACAANAAYABwAIABAADQAHAA8AEAARAAcADwANABAABwASAAgACQAHABIAEAAIAAcAEQASABMABwARABAAEgAHAAwACgAHAAcADAAUAAoABwAVAAwADgAHABUAFAAMAAcACgAWAAsABwAKABQAFgAHABcAFAAVAAcAFwAWABQABwAYABkAGgAHABgAGwAZAAcAHAAbAB0ABwAcABkAGwAHAB4AGAAaAAcAHgAfABgABwAZAB4AGgAHABkAIAAeAAcAHAAgABkABwAcACEAIAAHABgAIgAbAAcAGAAfACIABwAiAB0AGwAHACIAIwAdAAcAHgAkAB8ABwAeACUAJAAHACYAJQAnAAcAJgAkACUABwAgACUAHgAHACAAKAAlAAcAJwAoACkABwAnACUAKAAHACoAIAAhAAcAKgAoACAABwApACoAKwAHACkAKAAqAAcAJAAiAB8ABwAkACwAIgAHAC0AJAAmAAcALQAsACQABwAiAC4AIwAHACIALAAuAAcALwAsAC0ABwAvAC4ALAAHADAAMQAyAAcAMAAzADEABwA0ADMAMAAHADQANQAzAAcANQA2ADcABwA1ADQANgAHADgAOQA6AAcAOAA7ADkABwA7ADYAOQAHADsANwA2AAcAPAA7ADgABwA8AD0AOwAHAD0ANwA7AAcAPQA1ADcABwA+AD0APAAHAD4APwA9AAcAPwA1AD0ABwA/ADMANQAHAEAAPwA+AAcAQABBAD8ABwBBADMAPwAHAEEAMQAzAAcAOgBCAEMABwA6ADkAQgAHADkANABCAAcAOQA2ADQABwBDAEQARQAHAEMAQgBEAAcAQgAwAEQABwBCADQAMAAHAEUARgBHAAcARQBEAEYABwBEADIARgAHAEQAMAAyAAcASABJAEoABwBIAEsASQAHAEsATABNAAcASwBIAEwABwBJAE4ASgAHAEkATwBOAAcATgBIAEoABwBOAFAASAAHAFAATABIAAcAUABRAEwABwBSAEkASwAHAFIATwBJAAcATQBSAEsABwBNAFMAUgAHAFQATgBPAAcAVABVAE4ABwBVAA4ADwAHAFUAVAAOAAcAVQBQAE4ABwBVAFYAUAAHAFYADwARAAcAVgBVAA8ABwBQAFcAUQAHAFAAVgBXAAcAVwARABMABwBXAFYAEQAHAFIAVABPAAcAUgBYAFQABwBUABUADgAHAFQAWAAVAAcAWQBSAFMABwBZAFgAUgAHAFgAFwAVAAcAWABZABcABwBaAFsAXAAHAFoAXQBbAAcAXQBeAF8ABwBdAFoAXgAHAFsAYABcAAcAWwBhAGAABwBgAFoAXAAHAGAAYgBaAAcAYgBeAFoABwBiAGMAXgAHAGQAWwBdAAcAZABhAFsABwBfAGQAXQAHAF8AZQBkAAcAZgBgAGEABwBmAGcAYAAHAGcAJgAnAAcAZwBmACYABwBnAGIAYAAHAGcAaABiAAcAaAAnACkABwBoAGcAJwAHAGIAaQBjAAcAYgBoAGkABwBpACkAKwAHAGkAaAApAAcAZABmAGEABwBkAGoAZgAHAGYALQAmAAcAZgBqAC0ABwBrAGQAZQAHAGsAagBkAAcAagAvAC0ABwBqAGsALwAHADEAbAAyAAcAMQBtAGwABwBtAG4AbAAHAG0AbwBuAAcAcABvAHEABwBwAG4AbwAHAHIAcwB0AAcAcgB1AHMABwBwAHUAcgAHAHAAcQB1AAcAdQB2AHMABwB1AHcAdgAHAHEAdwB1AAcAcQBvAHcABwB3AHgAdgAHAHcAeQB4AAcAbwB5AHcABwBvAG0AeQAHAHkAQAB4AAcAeQBBAEAABwBtAEEAeQAHAG0AMQBBAAcAegB0AHsABwB6AHIAdAAHAG4AcgB6AAcAbgBwAHIABwB8AHsAfQAHAHwAegB7AAcAbAB6AHwABwBsAG4AegAHAEYAfQBHAAcARgB8AH0ABwAyAHwARgAHADIAbAB8AAcAfgB/AIAABwB+AIEAfwAHAIIAfgCDAAcAggCBAH4ABwCEAIMAhQAHAIQAggCDAAcAhgCFAIcABwCGAIQAhQAHAIgAhwCJAAcAiACGAIcABwCIAIoAiwAHAIgAiQCKAAcAiwCMAI0ABwCLAIoAjAAHAI0AjgCPAAcAjQCMAI4ABwCPAJAAkQAHAI8AjgCQAAcAkQCSAJMABwCRAJAAkgAHAJIAlACTAAcAkgCVAJQABwCVAJYAlAAHAJUAlwCWAAcAlwCYAJYABwCXAJkAmAAHAJkAmgCYAAcAmQCbAJoABwCbAJwAmgAHAJsAnQCcAAcAngCcAJ0ABwCeAJ8AnAAHAKAAnwCeAAcAoAChAJ8ABwCAAKEAoAAHAIAAfwChAAcAigCHAIwABwCKAIkAhwAHAIwAhQCOAAcAjACHAIUABwCFAJAAjgAHAIUAgwCQAAcAkAB+AJIABwCQAIMAfgAHAH4AlQCSAAcAfgCAAJUABwCAAJcAlQAHAIAAoACXAAcAoACZAJcABwCgAJ4AmQAHAJ4AmwCZAAcAngCdAJsABwCiAKMApAAHAKIApQCjAAcApgCnAKgABwCmAKkApwAHAKoAqACrAAcAqgCmAKgABwCsAK0ArgAHAKwAqwCtAAcArwCtALAABwCvAK4ArQAHALEAsgCzAAcAsQC0ALIABwC1ALYAtwAHALUAuAC2AAcAuAC5ALYABwC4ALoAuQAHALoAuwC5AAcAugC8ALsABwC8AL0AuwAHALwAvgC9AAcAvgC/AL0ABwC+AMAAvwAHAMEAtACxAAcAwQDCALQABwDDALgAtQAHAMMAxAC4AAcAxAC6ALgABwDEAMUAugAHAMUAvAC6AAcAxQDGALwABwDGAL4AvAAHAMYAxwC+AAcAxwDAAL4ABwDHAMgAwAAHALkAyQC2AAcAuQDKAMkABwDKAKgAyQAHAMoAqwCoAAcAuwDKALkABwC7AMsAygAHAMsAqwDKAAcAywCtAKsABwC9AMsAuwAHAL0AzADLAAcAzACtAMsABwDMALAArQAHAL8AzAC9AAcAvwDNAMwABwDNALAAzAAHAM0AzgCwAAcAzgDPANAABwDOAM0AzwAHALYA0QC3AAcAtgDJANEABwDJAKcA0QAHAMkAqACnAAcAsgDSALMABwCyANMA0gAHANMAowDSAAcA0wCkAKMABwDUALAAzgAHANQArwCwAAcA1QDOANAABwDVANYAzgAHANYA1ADOAAcA1gDXANQABwDYAK4ArwAHANgA2QCuAAcA2QDaAK4ABwDZANsA2gAHAKwA2gDcAAcArACuANoABwDdAN4A3wAHAN0A4ADeAAcA4QDfAOIABwDhAN0A3wAHANUA3gDgAAcA1QDQAN4ABwDjAN0A4QAHAOMA5ADdAAcA5ADgAN0ABwDkAOUA4AAHAOUA1QDgAAcA5QDmANUABwDmANYA1QAHAOYA5wDWAAcA5wDXANYABwDnAOgA1wAHAOkA2QDYAAcA6QDqANkABwDqANsA2QAHAOoA6wDbAAcA6wDaANsABwDrAOwA2gAHAOwA3ADaAAcA7ADtANwABwDuAKYAqgAHAO4A7wCmAAcA7wCpAKYABwDvAPAAqQAHAPEApQCiAAcA8QDyAKUABwDzAMgAxwAHAPMA9ADIAAcA9QDHAMYABwD1APMAxwAHAPYAxgDFAAcA9gD1AMYABwD3AMUAxAAHAPcA9gDFAAcA+ADEAMMABwD4APcAxAAHAPkAwgDBAAcA+QD6AMIABwD7APQA8wAHAPsA/AD0AAcA/QDzAPUABwD9APsA8wAHAP4A9QD2AAcA/gD9APUABwD/APYA9wAHAP8A/gD2AAcAAAH3APgABwAAAf8A9wAHAAEB+gD5AAcAAQECAfoABwADAQQBBQEHAAMBBgEEAQcABQEHAQgBBwAFAQQBBwEHAAkBBgEDAQcACQEKAQYBBwAIAQsBDAEHAAgBBwELAQcADAENAQ4BBwAMAQsBDQEHAA4BDwEQAQcADgENAQ8BBwAGAREBBAEHAAYBEgERAQcABAETAQcBBwAEAREBEwEHAAoBEgEGAQcACgEUARIBBwAHARUBCwEHAAcBEwEVAQcACwEWAQ0BBwALARUBFgEHAA0BFwEPAQcADQEWARcBBwAYARkBGgEHABgBGwEZAQcAAwEYAQkBBwADARsBGAEHABsBHAEZAQcAGwEdARwBBwAFARsBAwEHAAUBHQEbAQcAHgEdAR8BBwAeARwBHQEHAAUBHwEdAQcABQEIAR8BBwAfASABHgEHAB8BIQEgAQcACAEhAR8BBwAIAQwBIQEHACEBIgEgAQcAIQEjASIBBwAOASEBDAEHAA4BIwEhAQcAIwEkASIBBwAjASUBJAEHABABIwEOAQcAEAElASMBBwAmARkBHAEHACYBJwEZAQcAJwEaARkBBwAnASgBGgEHACkBJwEmAQcAKQEqAScBBwAqASgBJwEHACoBKwEoAQcALAEtAS4BBwAsAS8BLQEHAC8BMAEtAQcALwExATABBwAyAQIBAQEHADIBMwECAQcANAH/AAABBwA0ATUB/wAHADUB/gD/AAcANQE2Af4ABwA2Af0A/gAHADYBNwH9AAcANwH7AP0ABwA3ATgB+wAHADgB/AD7AAcAOAE5AfwABwAzASwBLgEHADMBMgEsAQcAKQE6ASoBBwApATsBOgEHACoBPAErAQcAKgE6ATwBBwA0ASkBNQEHADQBOwEpAQcANQEmATYBBwA1ASkBJgEHADYBHAE3AQcANgEmARwBBwA4ARwBHgEHADgBNwEcAQcAIAE4AR4BBwAgATkBOAEHAD0B4wDhAAcAPQE+AeMABwA/AeEA4gAHAD8BPQHhAAcAQAEgASIBBwBAAUEBIAEHAEIBIgEkAQcAQgFAASIBBwBDAUEBQAEHAEMBRAFBAQcARQFAAUIBBwBFAUMBQAEHAEYBRAFDAQcARgFHAUQBBwBIAUMBRQEHAEgBRgFDAQcAPgE/AUkBBwA+AT0BPwEHAEoBQQFEAQcASgFLAUEBBwA5AUEBSwEHADkBIAFBAQcARwFKAUQBBwBHAUwBSgEHAOIATQE/AQcA4gBOAU0BBwBOAfQATQEHAE4ByAD0AAcA3wBOAeIABwDfAE8BTgEHAE8ByABOAQcATwHAAMgABwDeAE8B3wAHAN4AUAFPAQcAUAHAAE8BBwBQAb8AwAAHANAAUAHeAAcA0ADPAFABBwDPAL8AUAEHAM8AzQC/AAcATQFMAT8BBwBNAUoBTAEHAPQASgFNAQcA9ABLAUoBBwD8AEsB9AAHAPwAOQFLAQcAPgFRAeMABwA+AVIBUQEHAFIBUwFRAQcAUgFUAVMBBwDjAFUB5AAHAOMAUQFVAQcAUQFWAVUBBwBRAVMBVgEHAOQAVwHlAAcA5ABVAVcBBwBVAVgBVwEHAFUBVgFYAQcA5QBZAeYABwDlAFcBWQEHAFcBWgFZAQcAVwFYAVoBBwDmAFsB5wAHAOYAWQFbAQcAWQFcAVsBBwBZAVoBXAEHAOgAWwFdAQcA6ADnAFsBBwBdAV4BXwEHAF0BYAFeAQcA6QBhAeoABwDpAF8BYQEHAF8BYgFhAQcAXwFeAWIBBwDqAGMB6wAHAOoAYQFjAQcAYQFkAWMBBwBhAWIBZAEHAOsAZQHsAAcA6wBjAWUBBwBjAWYBZQEHAGMBZAFmAQcA7QBlAWcBBwDtAOwAZQEHAGcBaAFpAQcAZwFqAWgBBwDuAGsB7wAHAO4AaQFrAQcAaQFsAWsBBwBpAWgBbAEHAO8AbQHwAAcA7wBrAW0BBwBrAW4BbQEHAGsBbAFuAQcA8QBvAfIABwDxAHABbwEHAHABcQFvAQcAcAFyAXEBBwBSAUkBcwEHAFIBPgFJAQcAdAFSAXMBBwB0AVQBUgEHAHUBtwDRAAcAdQF2AbcABwB3AdEApwAHAHcBdQHRAAcAeAH4AHkBBwB4AQAB+AAHAHoBPAE6AQcAegF7ATwBBwCpAHcBpwAHAKkAfAF3AQcAtwB9AbUABwC3AHYBfQEHAH4BtQB9AQcAfgHDALUABwB8AfAAfwEHAHwBqQDwAAcAeQHDAH4BBwB5AfgAwwAHAIABAAF4AQcAgAE0AQABBwCBAToBOwEHAIEBegE6AQcAgAE7ATQBBwCAAYEBOwEHAPAAggF/AQcA8ABtAYIBBwBtAYMBggEHAG0BbgGDAQcAogCEAYUBBwCiAKQAhAEHAHwBhAF3AQcAfAGFAYQBBwCyAIYBhwEHALIAtACGAQcAdgGGAX0BBwB2AYcBhgEHAIgBfQGGAQcAiAF+AX0BBwDCAIYBtAAHAMIAiAGGAQcAfwGFAXwBBwB/AYkBhQEHAKIAiQHxAAcAogCFAYkBBwB5AYgBigEHAHkBfgGIAQcA+gCIAcIABwD6AIoBiAEHAIsBeAGMAQcAiwGAAXgBBwAzAYwBAgEHADMBiwGMAQcAiwEuAY0BBwCLATMBLgEHAIABjQGBAQcAgAGLAY0BBwCCAYkBfwEHAIIBjgGJAQcA8QCOAXABBwDxAIkBjgEHAIMBjgGCAQcAgwGPAY4BBwBwAY8BcgEHAHABjgGPAQcA0wCHAZABBwDTALIAhwEHAJABdgF1AQcAkAGHAXYBBwCkAJABhAEHAKQA0wCQAQcAdwGQAXUBBwB3AYQBkAEHAHgBigGMAQcAeAF5AYoBBwACAYoB+gAHAAIBjAGKAQcAegGNAZEBBwB6AYEBjQEHAJEBLgEtAQcAkQGNAS4BBwB7AZEBkgEHAHsBegGRAQcAkgEtATABBwCSAZEBLQEHAJMBlAGVAQcAkwGVAZYBBwCXAZgBkwEHAJcBkwGWAQcAlwGWAZkBBwCXAZkBmgEHAJkBlgGbAQcAmQGbAZwBBwCWAZ0BngEHAJYBngGbAQcAlQGfAZ0BBwCVAZ0BlgEHAKABoQGUAQcAoAGUAZMBBwCiAaABkwEHAKIBkwGYAQcAowGiAZgBBwCjAZgBlwEHAKMBlwGaAQcAowGaAaQBBwCkAZoBmQEHAKQBmQGlAQcApQGZAZwBBwClAZwBpgEHAJwBmwGnAQcAnAGnAaYBBwCbAZ4BqAEHAJsBqAGnAQcAngGdAakBBwCeAakBqAEHAJ8BqgGpAQcAnwGpAZ0BBwCVAasBqgEHAJUBqgGfAQcAlAGhAasBBwCUAasBlQEHAKwBrQGhAQcArAGhAaABBwCuAawBoAEHAK4BoAGiAQcArwGuAaIBBwCvAaIBowEHAK8BowGkAQcArwGkAbABBwCwAaQBpQEHALABpQGxAQcAsQGlAaYBBwCxAaYBsgEHAKYBpwGzAQcApgGzAbIBBwCnAagBtAEHAKcBtAGzAQcAqAGpAbUBBwCoAbUBtAEHAKoBtgG1AQcAqgG1AakBBwCrAbcBtgEHAKsBtgGqAQcAoQGtAbcBBwChAbcBqwEHALgBrQGsAQcAuAGsAbkBBwC5AawBrgEHALkBrgG6AQcAuwG6Aa4BBwC7Aa4BrwEHALwBuwGvAQcAvAGvAbABBwC9AbwBsAEHAL0BsAGxAQcAvgG9AbEBBwC+AbEBsgEHALMBvwG+AQcAswG+AbIBBwC0AcABvwEHALQBvwGzAQcAtQHBAcABBwC1AcABtAEHALYBwgHBAQcAtgHBAbUBBwC2AbcBwwEHALYBwwHCAQcAtwGtAbgBBwC3AbgBwwEHAMQBuAG5AQcAxAG5AcUBBwDFAbkBugEHAMUBugHGAQcAxwHGAboBBwDHAboBuwEHAMgBxwG7AQcAyAG7AbwBBwDJAcgBvAEHAMkBvAG9AQcAygHJAb0BBwDKAb0BvgEHAL8BywHKAQcAvwHKAb4BBwDAAcwBywEHAMABywG/AQcAwQHNAcwBBwDBAcwBwAEHAMIBzgHNAQcAwgHNAcEBBwDCAcMBzwEHAMIBzwHOAQcAwwG4AcQBBwDDAcQBzwEHAMQBxQHGAQcAxAHGAdABBwDIAdABxgEHAMgBxgHHAQcAygHQAcgBBwDKAcgByQEHAMsBzAHQAQcAywHQAcoBBwDNAc4B0AEHAM0B0AHMAQcAzgHPAcQBBwDOAcQB0AEHANEB0gHTAQcA0QHUAdIBBwDVAdQB0QEHANUB1gHUAQcA1wHWAdUBBwDXAdgB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bgIHAG0CbAJpAgcAbwJwAnECBwBvAnICcAIHAG8CcwJ0AgcAbwJxAnMCBwB0AnUCdgIHAHQCcwJ1AgcAdgJ3AngCBwB2AnUCdwIHAHcCeQJ4AgcAdwJ6AnkCBwB6AnsCeQIHAHoCfAJ7AgcAawJ7AnwCBwBrAmoCewIHAH0CaQJrAgcAfQJ+AmkCBwBuAn8CcAIHAG4CgAJ/AgcAcAKBAnECBwBwAn8CgQIHAHECggJzAgcAcQKBAoICBwBzAoMCdQIHAHMCggKDAgcAhAKFAoYCBwCEAocChQIHAIgCiQKKAgcAiAKLAokCBwCMAo0CjgIHAIwCjwKNAgcAjwKQAo0CBwCPApECkAIHAJICkwKUAgcAkgKVApMCBwCVApYCkwIHAJUClwKWAgcAhQKYAoYCBwCFApkCmAIHAIkCmgKKAgcAiQKbApoCBwCRApwCkAIHAJECnQKcAgcAnQKbApwCBwCdApoCmwIHAJcCngKWAgcAlwKfAp4CBwCfApkCngIHAJ8CmAKZAgcAiAKgAosCBwCIAqECoAIHAKECogKgAgcAoQKjAqICBwCkAqUCpgIHAKQCpwKlAgcAqAKnAqQCBwCoAqkCpwIHAKoCqwKsAgcAqgKtAqsCBwCtAq4CqwIHAK0CrwKuAgcAsAKuArECBwCwAqsCrgIHALICqwKwAgcAsgKsAqsCBwCzArQCtQIHALMCtgK0AgcAtQK3ArgCBwC1ArQCtwIHALgCuQK6AgcAuAK3ArkCBwC6ArsCvAIHALoCuQK7AgcAvAK9Ar4CBwC8ArsCvQIHAL4CvwLAAgcAvgK9Ar8CBwDAAsECwgIHAMACvwLBAgcAwgLDAsQCBwDCAsECwwIHAMUCxgLHAgcAxQLIAsYCBwDJAsoCywIHAMkCzALKAgcAzQKHAoQCBwDNAs4ChwIHAM8C0ALRAgcAzwLSAtACBwDTAtAC1AIHANMC0QLQAgcA1QLDAsECBwDVAtYCwwIHANcC2ALZAgcA1wLaAtgCBwDbAtgC1QIHANsC3ALYAgcA2QLcAt0CBwDZAtgC3AIHANIC3gLQAgcA0gLfAt4CBwDUAt4C4AIHANQC0ALeAgcAvQLbAr8CBwC9AuEC2wIHAOIC3ALjAgcA4gLdAtwCBwDkAr0CuwIHAOQC4QK9AgcA5QLjAuYCBwDlAuIC4wIHAOcCpgKlAgcA5wLoAqYCBwCvAukCrgIHAK8C6gLpAgcA6QKxAq4CBwDpAusCsQIHAOwC7QLuAgcA7ALvAu0CBwDwAvEC8gIHAPAC8wLxAgcA8wKIAvECBwDzAqECiAIHAPQC8wLwAgcA9AL1AvMCBwD1AqEC8wIHAPUCowKhAgcA9gL3AvgCBwD2AvkC9wIHAPkC6AL3AgcA+QKmAugCBwD6AvkC9gIHAPoC+wL5AgcA+wKmAvkCBwD7AqQCpgIHAPwC+wL6AgcA/AL9AvsCBwD9AqQC+wIHAP0CqAKkAgcA8gL+Av8CBwDyAvEC/gIHAPECigL+AgcA8QKIAooCBwD/AgADAQMHAP8C/gIAAwcA/gKaAgADBwD+AooCmgIHAAEDAgMDAwcAAQMAAwIDBwAAA50CAgMHAAADmgKdAgcAAwMEAwUDBwADAwIDBAMHAAIDkQIEAwcAAgOdApECBwAFAwYDBwMHAAUDBAMGAwcABAOPAgYDBwAEA5ECjwIHAAcDCAMJAwcABwMGAwgDBwAGA4wCCAMHAAYDjwKMAgcACgMLAwwDBwAKAw0DCwMHAA0DDgMLAwcADQMPAw4DBwAPAxADDgMHAA8DEQMQAwcAEgMTAxQDBwASAxUDEwMHABUDFgMTAwcAFQMXAxYDBwAXAxgDFgMHABcDGQMYAwcAGgPrAhsDBwAaA7EC6wIHABwDsQIaAwcAHAOwArECBwAdA7ACHAMHAB0DsgKwAgcAHgOlAh8DBwAeA+cCpQIHAB8DpwIgAwcAHwOlAqcCBwAgA6kCIQMHACADpwKpAgcAHwMiAx4DBwAfAyMDIgMHACMDEAMiAwcAIwMOAxADBwAgAyMDHwMHACADJAMjAwcAJAMOAyMDBwAkAwsDDgMHACEDJAMgAwcAIQMlAyQDBwAlAwsDJAMHACUDDAMLAwcAGwMmAxoDBwAbAycDJgMHACcDEwMmAwcAJwMUAxMDBwAaAygDHAMHABoDJgMoAwcAJgMWAygDBwAmAxMDFgMHABwDKQMdAwcAHAMoAykDBwAoAxgDKQMHACgDFgMYAwcAKgMrAywDBwAqAy0DKwMHAC0DLgMrAwcALQMvAy4DBwAwAy0DKgMHADADMQMtAwcAMQMvAy0DBwAxAzIDLwMHALUCMwOzAgcAtQI0AzMDBwA0A6ICMwMHADQDoAKiAgcAuAI0A7UCBwC4AjUDNAMHADUDoAI0AwcANQOLAqACBwC6AjUDuAIHALoCNgM1AwcANgOLAjUDBwA2A4kCiwIHALwCNgO6AgcAvAI3AzYDBwA3A4kCNgMHADcDmwKJAgcAvgI3A7wCBwC+AjgDNwMHADgDmwI3AwcAOAOcApsCBwDAAjgDvgIHAMACOQM4AwcAOQOcAjgDBwA5A5ACnAIHAMICOQPAAgcAwgI6AzkDBwA6A5ACOQMHADoDjQKQAgcAxAI6A8ICBwDEAjsDOgMHADsDjQI6AwcAOwOOAo0CBwAsAzwDPQMHACwDKwM8AwcAKwM+AzwDBwArAy4DPgMHAD0DPwNAAwcAPQM8Az8DBwA8A0EDPwMHADwDPgNBAwcAQgPqAkMDBwBCA+kC6gIHAEQD6QJCAwcARAPrAukCBwBFA+sCRAMHAEUDGwPrAgcARgMbA0UDBwBGAycDGwMHAEcDJwNGAwcARwMUAycDBwBIAxQDRwMHAEgDEgMUAwcASQNKA0sDBwBJA0wDSgMHAE0DTANOAwcATQNKA0wDBwBPA1ADUQMHAE8DUgNQAwcAUgNTA1ADBwBSA1QDUwMHAFUDUgNPAwcAVQNWA1IDBwBWA1QDUgMHAFYDVwNUAwcAWANWA1UDBwBYA1kDVgMHAFkDVwNWAwcAWQNaA1cDBwBbA1kDWAMHAFsDXANZAwcAXANaA1kDBwBcA10DWgMHAF4DXANbAwcAXgNfA1wDBwBfA10DXAMHAF8DYANdAwcAYQNfA14DBwBhA2IDXwMHAGIDYANfAwcAYgNjA2ADBwBkA2UDZgMHAGQDZwNlAwcAZwPqAmUDBwBnA0MD6gIHAGYDaANpAwcAZgNlA2gDBwBlA68CaAMHAGUD6gKvAgcAaQNqA2sDBwBpA2gDagMHAGgDrQJqAwcAaAOvAq0CBwBrA2wDbQMHAGsDagNsAwcAagOqAmwDBwBqA60CqgIHAG4DYANvAwcAbgNdA2ADBwBwA10DbgMHAHADWgNdAwcAcQNaA3ADBwBxA1cDWgMHAHIDVwNxAwcAcgNUA1cDBwBzA3QDdQMHAHMDdgN0AwcAdwN2A3MDBwB3A3gDdgMHAHkDeAN3AwcAeQPlAngDBwB6A+UCeQMHAHoD4gLlAgcAewPiAnoDBwB7A90C4gIHAHwD3QJ7AwcAfAPZAt0CBwB9A9kCfAMHAH0D1wLZAgcAbwNjA34DBwBvA2ADYwMHAH8DMgOAAwcAfwOBAzIDBwB/A6ICowIHAH8DgAOiAgcAtgKCA4MDBwC2AoQDggMHAIQDUwOCAwcAhAOFA1MDBwCEAzADhQMHAIQDhgMwAwcAhAOzAoYDBwCEA7YCswIHAIMDhwN0AwcAgwOCA4cDBwBUA4IDUwMHAFQDhwOCAwcAzgKIA4kDBwDOAs0CiAMHAE0DiQOIAwcATQNOA4kDBwCKA4sDjAMHAIoDjQOLAwcAigP1AvQCBwCKA4wD9QIHAIwDgQN/AwcAjAOLA4EDBwB/A/UCjAMHAH8DowL1AgcAhgMzA44DBwCGA7MCMwMHAIYDMQMwAwcAhgOOAzEDBwCOA6ICgAMHAI4DMwOiAgcAjgMyAzEDBwCOA4ADMgMHAHQDjwN1AwcAdAOHA48DBwByA4cDVAMHAHIDjwOHAwcAzgKQA4cCBwDOApEDkAMHAJEDkgOQAwcAkQOTA5IDBwCJA5EDzgIHAIkDlAORAwcAlAOTA5EDBwCUA5UDkwMHAE4DlAOJAwcATgOWA5QDBwCWA5UDlAMHAJYDlwOVAwcATAOWA04DBwBMA5gDlgMHAJgDlwOWAwcAmAOZA5cDBwBJA5gDTAMHAEkDmgOYAwcAmgOZA5gDBwCaA5sDmQMHAOwCnAPvAgcA7AKdA5wDBwCdA54DnAMHAJ0DnwOeAwcAyQKgA8wCBwDJAqEDoAMHAKEDogOgAwcAoQOjA6IDBwDFAqQDyAIHAMUCpQOkAwcApQOmA6QDBwClA6cDpgMHAJkChwKQAwcAmQKFAocCBwCeApADkgMHAJ4CmQKQAwcAkwKeApIDBwCTApYCngIHAKgDqQOqAwcAqAOrA6kDBwDnAqsD6AIHAOcCqQOrAwcArAOtA64DBwCsA68DrQMHAPcCrgP4AgcA9wKsA64DBwD3AqsDrAMHAPcC6AKrAwcAqwOvA6wDBwCrA6gDrwMHALADsQOyAwcAsAOzA7EDBwARA7MDEAMHABEDsQOzAwcAqgO0A7UDBwCqA6kDtAMHAOcCtAOpAwcA5wIeA7QDBwAeA7YDtAMHAB4DIgO2AwcAtQO2A7cDBwC1A7QDtgMHACIDswO2AwcAIgMQA7MDBwC3A7MDsAMHALcDtgOzAwcAuAO5A7oDBwC4A7sDuQMHALsDvAO5AwcAuwO9A7wDBwC+A7oDvwMHAL4DuAO6AwcAwAP4Aq4DBwDAA8ED+AIHAMED9gL4AgcAwQPCA/YCBwDCA/oC9gIHAMIDwwP6AgcAwwP8AvoCBwDDA8QD/AIHAMUDuwO4AwcAxQPGA7sDBwDGA70DuwMHAMYDxwO9AwcAyAO4A74DBwDIA8UDuAMHAMkDwQPAAwcAyQPKA8EDBwDKA8IDwQMHAMoDywPCAwcAywPDA8IDBwDLA8wDwwMHAMwDxAPDAwcAzAPNA8QDBwDOA88D0AMHAM4D0QPPAwcA0gPQA9MDBwDSA84D0AMHANQD0wPVAwcA1APSA9MDBwDWA40DigMHANYD1wONAwcA2AOKA/QCBwDYA9YDigMHANkD0QPOAwcA2QPaA9EDBwDbA84D0gMHANsD2QPOAwcA3APSA9QDBwDcA9sD0gMHAN0D1wPWAwcA3QPeA9cDBwDfA9YD2AMHAN8D3QPWAwcArQPgA64DBwCtA+ED4AMHAOID4QO8AwcA4gPgA+EDBwCuA+MDwAMHAK4D4APjAwcAvQPiA7wDBwC9A+QD4gMHAMAD5QPJAwcAwAPjA+UDBwDHA+QDvQMHAMcD5gPkAwcA1QPnA9QDBwDVA+gD5wMHANcD6AONAwcA1wPnA+gDBwDUA+kD3AMHANQD5wPpAwcA3gPnA9cDBwDeA+kD5wMHALoD6gO/AwcAugPrA+oDBwDrA88D6gMHAOsD0APPAwcAuQPrA7oDBwC5A+wD6wMHAOwD0APrAwcA7APTA9ADBwC8A+wDuQMHALwD7QPsAwcA7QPTA+wDBwDtA9UD0wMHAOED7QO8AwcA4QPuA+0DBwDuA9UD7QMHAO4D6APVAwcArQPuA+EDBwCtA+8D7gMHAO8D6APuAwcA7wONA+gDBwCvA+8DrQMHAK8D8APvAwcA8AONA+8DBwDwA4sDjQMHAKgD8AOvAwcAqAPxA/ADBwDxA4sD8AMHAPEDgQOLAwcAqgPxA6gDBwCqA/ID8QMHAPIDgQPxAwcA8gMyA4EDBwC1A/IDqgMHALUD8wPyAwcA8wMyA/IDBwDzAy8DMgMHALcD8wO1AwcAtwP0A/MDBwD0Ay8D8wMHAPQDLgMvAwcAsAP0A7cDBwCwA/UD9AMHAPUDLgP0AwcA9QM+Ay4DBwCyA/UDsAMHALID9gP1AwcA9gM+A/UDBwD2A0EDPgMHAPcDvgO/AwcA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ZgRyBHQEBwBmBGQEcgQHAGcEdAR1BAcAZwRmBHQEBwBzBGcEdQQHAHMEZQRnBAcAbQTtAu8CBwBtBGwE7QIHAO4CbwTsAgcA7gJuBG8EBwB2BHEEdwQHAHYEcARxBAcAcgTvApwDBwByBG0E7wIHAOwCcwSdAwcA7AJvBHMEBwB0BJwDngMHAHQEcgScAwcAdQSeA58DBwB1BHQEngMHAJ0DdQSfAwcAnQNzBHUEBwCIA3gETQMHAIgDeQR4BAcAeQRyA3gEBwB5BI8DcgMHAM0CeQSIAwcAzQJ6BHkEBwB6BI8DeQQHAHoEdQOPAwcAhAJ6BM0CBwCEAnsEegQHAHsEdQN6BAcAewRzA3UDBwCGAnsEhAIHAIYCfAR7BAcAfARzA3sEBwB8BHcDcwMHAJgCfASGAgcAmAJ9BHwEBwB9BHcDfAQHAH0EeQN3AwcAnwJ9BJgCBwCfAn4EfQQHAH4EeQN9BAcAfgR6A3kDBwCXAn4EnwIHAJcCfwR+BAcAfwR6A34EBwB/BHsDegMHAJUCfwSXAgcAlQKABH8EBwCABHsDfwQHAIAEfAN7AwcAkgKABJUCBwCSAoEEgAQHAIEEfAOABAcAgQR9A3wDBwBNA4IESgMHAE0DeASCBAcAeARxA4IEBwB4BHIDcQMHAEoDgwRLAwcASgOCBIMEBwCCBHADgwQHAIIEcQNwAwcASwOEBFwEBwBLA4MEhAQHAIMEYASEBAcAgwRwA2AEBwBcBIUEbAQHAFwEhASFBAcAhARwBIUEBwCEBGAEcAQHAGwEhgTtAgcAbASFBIYEBwCFBHYEhgQHAIUEcAR2BAcA7QKHBO4CBwDtAoYEhwQHAIYEdwSHBAcAhgR2BHcEBwDuAogEbgQHAO4ChwSIBAcAhwRxBIgEBwCHBHcEcQQHAG4EiQReBAcAbgSIBIkEBwCIBGEEiQQHAIgEcQRhBAcAXgSKBMoCBwBeBIkEigQHAIkEbgOKBAcAiQRhBG4DBwDKAosEywIHAMoCigSLBAcAigRvA4sEBwCKBG4DbwMHAMsCjARaBAcAywKLBIwEBwCLBGIEjAQHAIsEbwNiBAcAxgKNBMcCBwDGAo4EjQQHAI4EjwSNBAcAjgSQBI8EBwBbBJEEkgQHAFsEWgSRBAcAaASSBJMEBwBoBFsEkgQHAGkEkwSUBAcAaQRoBJMEBwBrBJQE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DgUHAP4EDQX8BAcA/gQPBQ0FBwD9BBAFCwUHAP0EDgUQBQcA/wQPBf4EBwD/BBEFDwUHAAAFEQX/BAcAAAUSBREFBwABBRIFAAUHAAEFEwUSBQcAAgUTBQEFBwACBRQFEwUHAAMFFAUCBQcAAwUVBRQFBwAEBRUFAwUHAAQFFgUVBQcABQUWBQQFBwAFBRcFFgUHAAYFFwUFBQcABgUYBRcFBwAHBRgFBgUHAAcFGQUYBQcACAUZBQcFBwAIBRoFGQUHAAkFGgUIBQcACQUbBRoFBwAKBRsFCQUHAAoFHAUbBQcAHQUcBQoFBwAdBR4FHAUHAB8FHgUdBQcAHwUgBR4FBwALBSAFHwUHAAsFEAUgBQcAIQVDBEIEBwAhBSIFQwQHACMFQgREBAcAIwUhBUIEBwAiBUUEQwQHACIFJAVFBAcAJQVEBEcEBwAlBSMFRAQHACQFRgRFBAcAJAUmBUYEBwAmBUcERgQHACYFJQVHBAcAJwUiBSEFBwAnBSgFIgUHACkFIQUjBQcAKQUnBSEFBwAoBSQFIgUHACgFKgUkBQcAKwUjBSUFBwArBSkFIwUHACoFJgUkBQcAKgUsBSYFBwAsBSUFJgUHACwFKwUlBQcALQUoBScFBwAtBS4FKAUHAC8FJwUpBQcALwUtBScFBwAuBSoFKAUHAC4FMAUqBQcAMQUpBSsFBwAxBS8FKQUHADAFLAUqBQcAMAUyBSwFBwAyBSsFLAUHADIFMQUrBQcAMwUuBS0FBwAzBTQFLgUHADUFLQUvBQcANQUzBS0FBwA0BTAFLgUHADQFNgUwBQcANwUvBTEFBwA3BTUFLwUHADYFMgUwBQcANgU4BTIFBwA4BTEFMgUHADgFNwUxBQcAOQU0BTMFBwA5BToFNAUHADsFMwU1BQcAOwU5BTMFBwA6BTYFNAUHADoFPAU2BQcAPQU1BTcFBwA9BTsFNQUHADwFOAU2BQcAPAU+BTgFBwA+BTcFOAUHAD4FPQU3BQcAPwVABUEFBwA/BUIFQAUHAEMFQgU/BQcAQwVEBUIFBwBFBUQFQwUHAEUFRgVEBQcARwVEBUYFBwBHBUgFRAUHAEgFQgVEBQcASAVJBUIFBwBJBUAFQgUHAEkFSgVABQcASwVMBU0FBwBLBU4FTAUHAE8FUAVRBQcATwVSBVAFBwBTBVEFVAUHAFMFTwVRBQcAQAVVBUEFBwBABVYFVQUHAFUFPwVBBQcAVQVXBT8FBwBXBUMFPwUHAFcFWAVDBQcAWQVGBUUFBwBZBVoFRgUHAFgFRQVDBQcAWAVZBUUFBwBHBVsFSAUHAEcFXAVbBQcARgVcBUcFBwBGBVoFXAUHAEgFXQVJBQcASAVbBV0FBwBeBUAFSgUHAF4FVgVABQcASQVeBUoFBwBJBV0FXgUHAE0FXwVQBQcATQVgBV8FBwBOBWEFTAUHAE4FYgVhBQcAYwVOBUsFBwBjBWIFTgUHAFAFZAVRBQcAUAVfBWQFBwBlBVIFTwUHAGUFZgVSBQcAUQVnBVQFBwBRBWQFZwUHAGgFTwVTBQcAaAVlBU8FBwBnBVMFVAUHAGcFaAVTBQcAaQVqBWsFBwBpBWwFagUHAGsFbQVuBQcAawVqBW0FBwBuBW8FcAUHAG4FbQVvBQcAcAVxBXIFBwBwBW8FcQUHAHEFcwVyBQcAcQV0BXMFBwB1BXYFdwUHAHUFeAV2BQcAeQV4BXUFBwB5BXoFeAUHAHsFegV5BQcAewV8BXoFBwB9BXwFewUHAH0FfgV8BQcAfwV+BX0FBwB/BYAFfgUHAHgFgQV2BQcAeAWCBYEFBwCDBXgFegUHAIMFggV4BQcAhAV6BXwFBwCEBYMFegUHAIUFfAV+BQcAhQWEBXwFBwCABYUFfgUHAIAFhgWFBQcAggWHBYEFBwCCBYgFhwUHAGwFiAVqBQcAbAWHBYgFBwCDBYgFggUHAIMFiQWIBQcAagWJBW0FBwBqBYgFiQUHAIQFiQWDBQcAhAWKBYkFBwBtBYoFbwUHAG0FiQWKBQcAhQWKBYQFBwCFBYsFigUHAG8FiwVxBQcAbwWKBYsFBwCGBYsFhQUHAIYFjAWLBQcAcQWMBXQFBwBxBYsFjAUHAI0FbAVpBQcAjQWOBWwFBwCPBWkFawUHAI8FjQVpBQcAkAVrBW4FBwCQBY8FawUHAJEFbgVwBQcAkQWQBW4FBwCSBXAFcgUHAJIFkQVwBQcAkwVyBXMFBwCTBZIFcgUHAJQFdwV2BQcAlAWVBXcFBwB3BZYFdQUHAHcFlQWWBQcAdQWXBXkFBwB1BZYFlwUHAHkFmAV7BQcAeQWXBZgFBwB7BZkFfQUHAHsFmAWZBQcAfQWaBX8FBwB9BZkFmgUHAJsFdgWBBQcAmwWUBXYFBwCcBYEFhwUHAJwFmwWBBQcAjgWHBWwFBwCOBZwFhwUHAJ0FngWfBQcAnQWgBZ4FBwChBZ8FogUHAKEFnQWfBQcAowWiBaQFBwCjBaEFogUHAKUFpAWmBQcApQWjBaQFBwBzBaUFpgUHAHMFdAWlBQcApwWoBakFBwCnBaoFqAUHAKoFqwWoBQcAqgWsBasFBwCsBa0FqwUHAKwFrgWtBQcArgWvBa0FBwCuBbAFrwUHALAFfwWvBQcAsAWABX8FBwCxBaoFpwUHALEFsgWqBQcAqgWzBawFBwCqBbIFswUHAKwFtAWuBQcArAWzBbQFBwCuBbUFsAUHAK4FtAW1BQcAtQWABbAFBwC1BYYFgAUHALYFsgWxBQcAtgW3BbIFBwC3BaAFnQUHALcFtgWgBQcAtwWzBbIFBwC3BbgFswUHALgFnQWhBQcAuAW3BZ0FBwC4BbQFswUHALgFuQW0BQcAuQWhBaMFBwC5BbgFoQUHALkFtQW0BQcAuQW6BbUFBwC6BaMFpQUHALoFuQWjBQcAugWGBbUFBwC6BYwFhgUHAIwFpQV0BQcAjAW6BaUFBwCgBbsFngUHAKAFvAW7BQcAngW9BZ8FBwCeBbsFvQUHAJ8FvgWiBQcAnwW9Bb4FBwCiBb8FpAUHAKIFvgW/BQcApAXABaYFBwCkBb8FwAUHAKYFkwVzBQcApgXABZMFBwCpBcEFpwUHAKkFwgXBBQcAwwWpBagFBwDDBcIFqQUHAMQFqAWrBQcAxAXDBagFBwDFBasFrQUHAMUFxAWrBQcAxgWtBa8FBwDGBcUFrQUHAJoFrwV/BQcAmgXGBa8FBwCnBccFsQUHAKcFwQXHBQcAsQXIBbYFBwCxBccFyAUHALYFvAWgBQcAtgXIBbwFBwDJBcoFywUHAMkFzAXKBQcAzQXOBc8FBwDNBdAFzgUHAMkF0QXMBQcAyQXSBdEFBwDQBdMFzgUHANAF1AXTBQcA0gXVBdEFBwDSBdYF1QUHANQF1wXTBQcA1AXYBdcFBwDWBdkF1QUHANYF2gXZBQcA2wXaBdwFBwDbBdkF2gUHANgF3QXXBQcA2AXeBd0FBwDfBd4F4AUHAN8F3QXeBQcAzwXhBc0FBwDPBeIF4QUHAOMFzwXOBQcA4wXiBc8FBwDkBc4F0wUHAOQF4wXOBQcA5QXTBdcFBwDlBeQF0wUHAOYF1wXdBQcA5gXlBdcFBwDfBeYF3QUHAN8F5wXmBQcAygXoBcsFBwDKBekF6AUHAMsF6gXJBQcAywXoBeoFBwDJBesF0gUHAMkF6gXrBQcA0gXsBdYFBwDSBesF7AUHANYF7QXaBQcA1gXsBe0FBwDaBe4F3AUHANoF7QXuBQcA6QXvBegFBwDpBfAF7wUHAOgF8QXqBQcA6AXvBfEFBwDqBfIF6wUHAOoF8QXyBQcA6wXzBewFBwDrBfIF8wUHAOwF9AXtBQcA7AXzBfQFBwD0Be4F7QUHAPQF9QXuBQcA8AX2Be8FBwDwBfcF9gUHAOIF9wXhBQcA4gX2BfcFBwDvBfgF8QUHAO8F9gX4BQcA4wX2BeIFBwDjBfgF9gUHAPEF+QXyBQcA8QX4BfkFBwDkBfgF4wUHAOQF+QX4BQcA8gX6BfMFBwDyBfkF+gUHAOUF+QXkBQcA5QX6BfkFBwDzBfsF9AUHAPMF+gX7BQcA5gX6BeUFBwDmBfsF+gUHAPQF/AX1BQcA9AX7BfwFBwDnBfsF5gUHAOcF/AX7BQcAzQX9Bf4FBwDNBeEF/QUHANAF/gX/BQcA0AXNBf4FBwDUBf8FAAYHANQF0AX/BQcA2AUABgEGBwDYBdQFAAYHAN4FAQYCBgcA3gXYBQEGBwDgBQIGAwYHAOAF3gUCBgcA6QUEBgUGBwDpBcoFBAYHAAQGzAUGBgcABAbKBcwFBwAGBtEFBwYHAAYGzAXRBQcABwbVBQgGBwAHBtEF1QUHAAgG2QUJBgcACAbVBdkFBwAJBtsFCgYHAAkG2QXbBQcA8AUFBgsGBwDwBekFBQYHAPcFCwYMBgcA9wXwBQsGBwDhBQwG/QUHAOEF9wUMBgcA/gUNBg4GBwD+Bf0FDQYHAP8FDgYPBgcA/wX+BQ4GBwAABg8GEAYHAAAG/wUPBgcAAQYQBhEGBwABBgAGEAYHAAIGEQYSBgcAAgYBBhEGBwADBhIGEwYHAAMGAgYSBgcABQYUBhUGBwAFBgQGFAYHABQGBgYWBgcAFAYEBgYGBwAWBgcGFwYHABYGBgYHBgcAFwYIBhgGBwAXBgcGCAYHABgGCQYZBgcAGAYIBgkGBwAZBgoGGgYHABkGCQYKBgcACwYVBhsGBwALBgUGFQYHAAwGGwYcBgcADAYLBhsGBwD9BRwGDQYHAP0FDAYcBgcADgYdBh4GBwAOBg0GHQYHAA8GHgYfBgcADwYOBh4GBwAQBh8GIAYHABAGDwYfBgcAEQYgBiEGBwARBhAGIAYHABIGIQYiBgcAEgYRBiEGBwATBiIGIwYHABMGEgYiBgcAFQYkBiUGBwAVBhQGJAYHACQGFgYmBgcAJAYUBhYGBwAmBhcGJwYHACYGFgYXBgcAJwYYBigGBwAnBhcGGAYHACgGGQYpBgcAKAYYBhkGBwApBhoGKgYHACkGGQYaBgcAGwYlBisGBwAbBhUGJQYHABwGKwYsBgcAHAYbBisGBwANBiwGHQYHAA0GHAYsBgcAHgYtBi4GBwAeBh0GLQYHAB8GLgYvBgcAHwYeBi4GBwAgBi8GMAYHACAGHwYvBgcAIQYwBjEGBwAhBiAGMAYHACIGMQYyBgcAIgYhBjEGBwAjBjIGMwYHACMGIgYyBgcAJQY0BjUGBwAlBiQGNAYHADQGJgY2BgcANAYkBiYGBwA2BicGNwYHADYGJgYnBgcANwYoBjgGBwA3BicGKAYHADgGKQY5BgcAOAYoBikGBwA5BioGOgYHADkGKQYqBgcAKwY1BjsGBwArBiUGNQYHACwGOwY8BgcALAYrBjsGBwAdBjwGLQYHAB0GLAY8BgcALgY9Bj4GBwAuBi0GPQYHAC8GPgY/BgcALwYuBj4GBwAwBj8GQAYHADAGLwY/BgcAMQZABkEGBwAxBjAGQAYHADIGQQZCBgcAMgYxBkEGBwAzBkIGQwYHADMGMgZCBgcANQZEBkUGBwA1BjQGRAYHAEQGNgZGBgcARAY0BjYGBwBGBjcGRwYHAEYGNgY3BgcARwY4BkgGBwBHBjcGOAYHAEgGOQZJBgcASAY4BjkGBwBJBjoGSgYHAEkGOQY6BgcAOwZFBksGBwA7BjUGRQYHADwGSwZMBgcAPAY7BksGBwAtBkwGPQYHAC0GPAZMBgcATQZOBk8GBwBNBlAGTgYHAFEGUgZTBgcAUQZUBlIGBwBVBk4GUAYHAFUGVgZOBgcAVwZUBlEGBwBXBlgGVAYHAFkGVgZVBgcAWQZaBlYGBwBbBlgGVwYHAFsGXAZYBgcAXQZaBlkGBwBdBl4GWgYHAF4G2wXcBQcAXgZdBtsFBwBfBlwGWwYHAF8GYAZcBgcAYAbfBeAFBwBgBl8G3wUHAGEGUwZSBgcAYQZiBlMGBwBTBmMGUQYHAFMGYgZjBgcAUQZkBlcGBwBRBmMGZAYHAFcGZQZbBgcAVwZkBmUGBwBbBmYGXwYHAFsGZQZmBgcAZgbfBV8GBwBmBucF3wUHAGcGTQZPBgcAZwZoBk0GBwBpBk8GTgYHAGkGZwZPBgcAagZOBlYGBwBqBmkGTgYHAGsGVgZaBgcAawZqBlYGBwBsBloGXgYHAGwGawZaBgcA7gVeBtwFBwDuBWwGXgYHAG0GaAZnBgcAbQZuBmgGBwBvBmcGaQYHAG8GbQZnBgcAcAZpBmoGBwBwBm8GaQYHAHEGagZrBgcAcQZwBmoGBwByBmsGbAYHAHIGcQZrBgcA7gVyBmwGBwDuBfUFcgYHAHMGbgZtBgcAcwZ0Bm4GBwB0BmIGYQYHAHQGcwZiBgcAdQZtBm8GBwB1BnMGbQYHAHMGYwZiBgcAcwZ1BmMGBwB2Bm8GcAYHAHYGdQZvBgcAdQZkBmMGBwB1BnYGZAYHAHcGcAZxBgcAdwZ2BnAGBwB2BmUGZAYHAHYGdwZlBgcAeAZxBnIGBwB4BncGcQYHAHcGZgZlBgcAdwZ4BmYGBwD8BXIG9QUHAPwFeAZyBgcAeAbnBWYGBwB4BvwF5wUHAHkGUgZ6BgcAeQZhBlIGBwB6BlQGewYHAHoGUgZUBgcAewZYBnwGBwB7BlQGWAYHAHwGXAZ9BgcAfAZYBlwGBwB9BmAGfgYHAH0GXAZgBgcAfgbgBQMGBwB+BmAG4AUHAH8GaAaABgcAfwZNBmgGBwBQBn8GgQYHAFAGTQZ/BgcAVQaBBoIGBwBVBlAGgQYHAFkGggaDBgcAWQZVBoIGBwBdBoMGhAYHAF0GWQaDBgcA2wWEBgoGBwDbBV0GhAYHAIAGbgaFBgcAgAZoBm4GBwCFBnQGhgYHAIUGbgZ0BgcAhgZhBnkGBwCGBnQGYQYHAIcGegaIBgcAhwZ5BnoGBwCIBnsGiQYHAIgGegZ7BgcAiQZ8BooGBwCJBnsGfAYHAIoGfQaLBgcAigZ8Bn0GBwCLBn4GjAYHAIsGfQZ+BgcAjAYDBhMGBwCMBn4GAwYHAI0GgAaOBgcAjQZ/BoAGBwCBBo0GjwYHAIEGfwaNBgcAggaPBpAGBwCCBoEGjwYHAIMGkAaRBgcAgwaCBpAGBwCEBpEGkgYHAIQGgwaRBgcACgaSBhoGBwAKBoQGkgYHAI4GhQaTBgcAjgaABoUGBwCTBoYGlAYHAJMGhQaGBgcAlAZ5BocGBwCUBoYGeQYHAJUGiAaWBgcAlQaHBogGBwCWBokGlwYHAJYGiAaJBgcAlwaKBpgGBwCXBokGigYHAJgGiwaZBgcAmAaKBosGBwCZBowGmgYHAJkGiwaMBgcAmgYTBiMGBwCaBowGEwYHAJsGjgacBgcAmwaNBo4GBwCPBpsGnQYHAI8GjQabBgcAkAadBp4GBwCQBo8GnQYHAJEGngafBgcAkQaQBp4GBwCSBp8GoAYHAJIGkQafBgcAGgagBioGBwAaBpIGoAYHAJwGkwahBgcAnAaOBpMGBwChBpQGogYHAKEGkwaUBgcAogaHBpUGBwCiBpQGhwYHAKMGlgakBgcAowaVBpYGBwCkBpcGpQYHAKQGlgaXBgcApQaYBqYGBwClBpcGmAYHAKYGmQanBgcApgaYBpkGBwCnBpoGqAYHAKcGmQaaBgcAqAYjBjMGBwCoBpoGIwYHAKkGnAaqBgcAqQabBpwGBwCdBqkGqwYHAJ0GmwapBgcAngarBqwGBwCeBp0GqwYHAJ8GrAatBgcAnwaeBqwGBwCgBq0GrgYHAKAGnwatBgcAKgauBjoGBwAqBqAGrgYHAKoGoQavBgcAqgacBqEGBwCvBqIGsAYHAK8GoQaiBgcAsAaVBqMGBwCwBqIGlQYHALEGpAayBgcAsQajBqQGBwCyBqUGswYHALIGpAalBgcAswamBrQGBwCzBqUGpgYHALQGpwa1BgcAtAamBqcGBwC1BqgGtgYHALUGpwaoBgcAtgYzBkMGBwC2BqgGMwYHALcGqga4BgcAtwapBqoGBwCrBrcGuQYHAKsGqQa3BgcArAa5BroGBwCsBqsGuQYHAK0Guga7BgcArQasBroGBwCuBrsGvAYHAK4GrQa7BgcAOga8BkoGBwA6Bq4GvAYHALgGrwa9BgcAuAaqBq8GBwC9BrAGvgYHAL0GrwawBgcAvgajBrEGBwC+BrAGowYHAL8GwAbBBgcAvwbCBsAGBwDDBsIGvwYHAMMGxAbCBgcAxQbGBscGBwDFBsgGxgYHAMkGyAbFBgcAyQbKBsgGBwDLBsoGyQYHAMsGzAbKBgcAzQbMBssGBwDNBs4GzAYHAM8G0AbRBgcAzwbSBtAGBwDRBtMG1AYHANEG0AbTBgcA1AbVBtYGBwDUBtMG1QYHANYG1wbYBgcA1gbVBtcGBwDYBtkG2gYHANgG1wbZBgcA2gbbBtwGBwDaBtkG2wYHANwG3QbeBgcA3AbbBt0GBwDeBt8G4AYHAN4G3QbfBgcA4AbhBuIGBwDgBt8G4QYHAOEG4wbiBgcA4QbkBuMGBwDkBuUG4wYHAOQG5gblBgcA5gbnBuUGBwDmBugG5wYHAOgG6QbnBgcA6AbqBukGBwDqBusG6QYHAOoG7AbrBgcA7AbtBusGBwDsBu4G7QYHAO4G7wbtBgcA7gbwBu8GBwDwBvEG7wYHAPAG8gbxBgcA8gbzBvEGBwDyBvQG8wYHAPQG9QbzBgcA9Ab2BvUGBwD2BvcG9QYHAPYG+Ab3BgcA+Ab5BvcGBwD4BvoG+QYHAPoG+wb5BgcA+gb8BvsGBwD8Bv0G+wYHAPwG/gb9BgcA/gb/Bv0GBwD+BgAH/wYHAAAHAQf/BgcAAAcCBwEHBwABBwMHBAcHAAEHAgcDBwcABAcFBwYHBwAEBwMHBQcHAAYHBwcIBwcABgcFBwcHBwAIBwkHCgcHAAgHBwcJBwcACgcLBwwHBwAKBwkHCwcHAAwHDQcOBwcADAcLBw0HBwAOB9IGzwYHAA4HDQfSBgcA0gYPB9AGBwDSBhAHDwcHANAGEQfTBgcA0AYPBxEHBwDTBhIH1QYHANMGEQcSBwcA1QYTB9cGBwDVBhIHEwcHANcGFAfZBgcA1wYTBxQHBwDZBhUH2wYHANkGFAcVBwcA2wYWB90GBwDbBhUHFgcHAN0GFwffBgcA3QYWBxcHBwDfBhgH4QYHAN8GFwcYBwcAGAfkBuEGBwAYBxkH5AYHABkH5gbkBgcAGQcaB+YGBwAaB+gG5gYHABoHGwfoBgcAGwfqBugGBwAbBxwH6gYHABwH7AbqBgcAHAcdB+wGBwAdB+4G7AYHAB0HHgfuBgcAHgfwBu4GBwAeBx8H8AYHAB8H8gbwBgcAHwcgB/IGBwAgB/QG8gYHACAHIQf0BgcAIQf2BvQGBwAhByIH9gYHACIH+Ab2BgcAIgcjB/gGBwAjB/oG+AYHACMHJAf6BgcAJAf8BvoGBwAkByUH/AYHACUH/gb8BgcAJQcmB/4GBwAmBwAH/gYHACYHJwcABwcAJwcCBwAHBwAnBygHAgcHAAIHKQcDBwcAAgcoBykHBwADByoHBQcHAAMHKQcqBwcABQcrBwcHBwAFByoHKwcHAAcHLAcJBwcABwcrBywHBwAJBy0HCwcHAAkHLActBwcACwcuBw0HBwALBy0HLgcHAA0HEAfSBgcADQcuBxAHBwAQBy8HDwcHABAHMAcvBwcADwcxBxEHBwAPBy8HMQcHABEHMgcSBwcAEQcxBzIHBwASBzMHEwcHABIHMgczBwcAEwc0BxQHBwATBzMHNAcHABQHNQcVBwcAFAc0BzUHBwAVBzYHFgcHABUHNQc2BwcAFgc3BxcHBwAWBzYHNwcHABcHOAcYBwcAFwc3BzgHBwA4BxkHGAcHADgHOQcZBwcAOQcaBxkHBwA5BzoHGgcHADoHGwcaBwcAOgc7BxsHBwA7BxwHGwcHADsHPAccBwcAPAcdBxwHBwA8Bz0HHQcHAD0HHgcdBwcAPQc+Bx4HBwA+Bx8HHgcHAD4HPwcfBwcAPwcgBx8HBwA/B0AHIAcHAEEHIAdABwcAQQchByAHBwBCByEHQQcHAEIHIgchBwcAQwciB0IHBwBDByMHIgcHAEQHIwdDBwcARAckByMHBwBFByQHRAcHAEUHJQckBwcARgclB0UHBwBGByYHJQcHAEcHJgdGBwcARwcnByYHBwBIBycHRwcHAEgHKAcnBwcAKQdIB0kHBwApBygHSAcHACoHSQdKBwcAKgcpB0kHBwArB0oHSwcHACsHKgdKBwcALAdLB0wHBwAsBysHSwcHAC0HTAdNBwcALQcsB0wHBwAuB00HTgcHAC4HLQdNBwcAEAdOBzAHBwAQBy4HTgcHAC8HTwdQBwcALwcwB08HBwAxB1AHUQcHADEHLwdQBwcAMgdRB1IHBwAyBzEHUQcHADMHUgdTBwcAMwcyB1IHBwA0B1MHVAcHADQHMwdTBwcANQdUB1UHBwA1BzQHVAcHADYHVQdWBwcANgc1B1UHBwA3B1YHVwcHADcHNgdWBwcAOAdXB1gHBwA4BzcHVwcHAFkHOAdYBwcAWQc5BzgHBwBaBzkHWQcHAFoHOgc5BwcAWwc6B1oHBwBbBzsHOgcHAFwHOwdbBwcAXAc8BzsHBwBdBzwHXAcHAF0HPQc8BwcAXgc9B10HBwBeBz4HPQcHAF8HPgdeBwcAXwc/Bz4HBwBgBz8HXwcHAGAHQAc/BwcAYQdAB2AHBwBhB0EHQAcHAGIHQQdhBwcAYgdCB0EHBwBjB0IHYgcHAGMHQwdCBwcAZAdDB2MHBwBkB0QHQwcHAGUHRAdkBwcAZQdFB0QHBwBmB0UHZQcHAGYHRgdFBwcAZwdGB2YHBwBnB0cHRgcHAGgHRwdnBwcAaAdIB0cHBwBJB2gHaQcHAEkHSAdoBwcASgdpB2oHBwBKB0kHaQcHAEsHagdrBwcASwdKB2oHBwBMB2sHbAcHAEwHSwdrBwcATQdsB20HBwBNB0wHbAcHAE4HbQduBwcATgdNB20HBwAwB24HTwcHADAHTgduBwcAUAdvB3AHBwBQB08HbwcHAFEHcAdxBwcAUQdQB3AHBwBSB3EHcgcHAFIHUQdxBwcAUwdyB3MHBwBTB1IHcgcHAFQHcwd0BwcAVAdTB3MHBwBVB3QHdQcHAFUHVAd0BwcAVgd1B3YHBwBWB1UHdQcHAFcHdgd3BwcAVwdWB3YHBwBYB3cHeAcHAFgHVwd3BwcAeQdYB3gHBwB5B1kHWAcHAHoHWQd5BwcAegdaB1kHBwB7B1oHegcHAHsHWwdaBwcAfAdbB3sHBwB8B1wHWwcHAH0HXAd8BwcAfQddB1wHBwB+B10HfQcHAH4HXgddBwcAfwdeB34HBwB/B18HXgcHAIAHXwd/BwcAgAdgB18HBwCBB2AHgAcHAIEHYQdgBwcAggdhB4EHBwCCB2IHYQcHAIMHYgeCBwcAgwdjB2IHBwCEB2MHgwcHAIQHZAdjBwcAhQdkB4QHBwCFB2UHZAcHAIYHZQeFBwcAhgdmB2UHBwCHB2YHhgcHAIcHZwdmBwcAiAdnB4cHBwCIB2gHZwcHAGkHiAeJBwcAaQdoB4gHBwBqB4kHigcHAGoHaQeJBwcAaweKB4sHBwBrB2oHigcHAGwHiweMBwcAbAdrB4sHBwBtB4wHjQcHAG0HbAeMBwcAbgeNB44HBwBuB20HjQcHAE8HjgdvBwcATwduB44HBwCPB5AHkQcHAI8HkgeQBwcAkQeTB5QHBwCRB5AHkwcHAJQHlQeWBwcAlAeTB5UHBwCWB5cHmAcHAJYHlQeXBwcAmAeZB5oHBwCYB5cHmQcHAJoHmwecBwcAmgeZB5sHBwCcB50HngcHAJwHmwedBwcAngefB6AHBwCeB50HnwcHAKAHoQeiBwcAoAefB6EHBwChB6MHogcHAKEHpAejBwcApAelB6MHBwCkB6YHpQcHAKYHpwelBwcApgeoB6cHBwCoB6kHpwcHAKgHqgepBwcAqgerB6kHBwCqB6wHqwcHAKwHrQerBwcArAeuB60HBwCuB68HrQcHAK4HsAevBwcAsAexB68HBwCwB7IHsQcHALIHswexBwcAsge0B7MHBwC0B7UHswcHALQHtge1BwcAtge3B7UHBwC2B7gHtwcHALgHuQe3BwcAuAe6B7kHBwC6B7sHuQcHALoHvAe7BwcAvAe9B7sHBwC8B74HvQcHAL4Hvwe9BwcAvgfAB78HBwDAB8EHvwcHAMAHwgfBBwcAwQfDB8QHBwDBB8IHwwcHAMQHxQfGBwcAxAfDB8UHBwDGB8cHyAcHAMYHxQfHBwcAyAfJB8oHBwDIB8cHyQcHAMoHywfMBwcAygfJB8sHBwDMB80HzgcHAMwHywfNBwcAzgeSB48HBwDOB80HkgcHAJIHzweQBwcAkgfQB88HBwCQB9EHkwcHAJAHzwfRBwcAkwfSB5UHBwCTB9EH0gcHAJUH0weXBwcAlQfSB9MHBwCXB9QHmQcHAJcH0wfUBwcAmQfVB5sHBwCZB9QH1QcHAJsH1gedBwcAmwfVB9YHBwCdB9cHnwcHAJ0H1gfXBwcAnwfYB6EHBwCfB9cH2AcHANgHpAehBwcA2AfZB6QHBwDZB6YHpAcHANkH2gemBwcA2geoB6YHBwDaB9sHqAcHANsHqgeoBwcA2wfcB6oHBwDcB6wHqgcHANwH3QesBwcA3QeuB6wHBwDdB94HrgcHAN4HsAeuBwcA3gffB7AHBwDfB7IHsAcHAN8H4AeyBwcA4Ae0B7IHBwDgB+EHtAcHAOEHtge0BwcA4QfiB7YHBwDiB7gHtgcHAOIH4we4BwcA4we6B7gHBwDjB+QHugcHAOQHvAe6BwcA5AflB7wHBwDlB74HvAcHAOUH5ge+BwcA5gfAB74HBwDmB+cHwAcHAOcHwgfABwcA5wfoB8IHBwDCB+kHwwcHAMIH6AfpBwcAwwfqB8UHBwDDB+kH6gcHAMUH6wfHBwcAxQfqB+sHBwDHB+wHyQcHAMcH6wfsBwcAyQftB8sHBwDJB+wH7QcHAMsH7gfNBwcAywftB+4HBwDNB9AHkgcHAM0H7gfQBwcA0AfvB88HBwDQB/AH7wcHAM8H8QfRBwcAzwfvB/EHBwDRB/IH0gcHANEH8QfyBwcA0gfzB9MHBwDSB/IH8wcHANMH9AfUBwcA0wfzB/QHBwDUB/UH1QcHANQH9Af1BwcA1Qf2B9YHBwDVB/UH9gcHANYH9wfXBwcA1gf2B/cHBwDXB/gH2AcHANcH9wf4BwcA+AfZB9gHBwD4B/kH2QcHAPkH2gfZBwcA+Qf6B9oHBwD6B9sH2gcHAPoH+wfbBwcA+wfcB9sHBwD7B/wH3AcHAPwH3QfcBwcA/Af9B90HBwD9B94H3QcHAP0H/gfeBwcA/gffB94HBwD+B/8H3wcHAP8H4AffBwcA/wcACOAHBwABCOAHAAgHAAEI4QfgBwcAAgjhBwEIBwACCOIH4QcHAAMI4gcCCAcAAwjjB+IHBwAECOMHAwgHAAQI5AfjBwcABQjkBwQIBwAFCOUH5AcHAAYI5QcFCAcABgjmB+UHBwAHCOYHBggHAAcI5wfmBwcACAjnBwcIBwAICOgH5wcHAOkHCAgJCAcA6QfoBwgIBwDqBwkICggHAOoH6QcJCAcA6wcKCAsIBwDrB+oHCggHAOwHCwgMCAcA7AfrBwsIBwDtBwwIDQgHAO0H7AcMCAcA7gcNCA4IBwDuB+0HDQgHANAHDgjwBwcA0AfuBw4IBwDvBw8IEAgHAO8H8AcPCAcA8QcQCBEIBwDxB+8HEAgHAPIHEQgSCAcA8gfxBxEIBwDzBxIIEwgHAPMH8gcSCAcA9AcTCBQIBwD0B/MHEwgHAPUHFAgVCAcA9Qf0BxQIBwD2BxUIFggHAPYH9QcVCAcA9wcWCBcIBwD3B/YHFggHAPgHFwgYCAcA+Af3BxcIBwAZCPgHGAgHABkI+Qf4BwcAGgj5BxkIBwAaCPoH+QcHABsI+gcaCAcAGwj7B/oHBwAcCPsHGwgHABwI/Af7BwcAHQj8BxwIBwAdCP0H/AcHAB4I/QcdCAcAHgj+B/0HBwAfCP4HHggHAB8I/wf+BwcAIAj/Bx8IBwAgCAAI/wcHACEIAAggCAcAIQgBCAAIBwAiCAEIIQgHACIIAggBCAcAIwgCCCIIBwAjCAMIAggHACQIAwgjCAcAJAgECAMIBwAlCAQIJAgHACUIBQgECAcAJggFCCUIBwAmCAYIBQgHACcIBggmCAcAJwgHCAYIBwAoCAcIJwgHACgICAgHCAcACQgoCCkIBwAJCAgIKAgHAAoIKQgqCAcACggJCCkIBwALCCoIKwgHAAsICggqCAcADAgrCCwIBwAMCAsIKwgHAA0ILAgtCAcADQgMCCwIBwAOCC0ILggHAA4IDQgtCAcA8AcuCA8IBwDwBw4ILggHABAILwgwCAcAEAgPCC8IBwARCDAIMQgHABEIEAgwCAcAEggxCDIIBwASCBEIMQgHABMIMggzCAcAEwgSCDIIBwAUCDMINAgHABQIEwgzCAcAFQg0CDUIBwAVCBQINAgHABYINQg2CAcAFggVCDUIBwAXCDYINwgHABcIFgg2CAcAGAg3CDgIBwAYCBcINwgHADkIGAg4CAcAOQgZCBgIBwA6CBkIOQgHADoIGggZCAcAOwgaCDoIBwA7CBsIGggHADwIGwg7CAcAPAgcCBsIBwA9CBwIPAgHAD0IHQgcCAcAPggdCD0IBwA+CB4IHQgHAD8IHgg+CAcAPwgfCB4IBwBACB8IPwgHAEAIIAgfCAcAQQggCEAIBwBBCCEIIAgHAEIIIQhBCAcAQggiCCEIBwBDCCIIQggHAEMIIwgiCAcARAgjCEMIBwBECCQIIwgHAEUIJAhECAcARQglCCQIBwBGCCUIRQgHAEYIJgglCAcARwgmCEYIBwBHCCcIJggHAEgIJwhHCAcASAgoCCcIBwApCEgISQgHACkIKAhICAcAKghJCEoIBwAqCCkISQgHACsISghLCAcAKwgqCEoIBwAsCEsITAgHACwIKwhLCAcALQhMCE0IBwAtCCwITAgHAC4ITQhOCAcALggtCE0IBwAPCE4ILwgHAA8ILghOCAcATwhQCFEIBwBPCFIIUAgHAFEIUwhUCAcAUQhQCFMIBwBUCFUIVggHAFQIUwhVCAcAVghXCFgIBwBWCFUIVwgHAFgIWQhaCAcAWAhXCFkIBwBaCFsIXAgHAFoIWQhbCAcAXAhdCF4IBwBcCFsIXQgHAF4IXwhgCAcAXghdCF8IBwBgCGEIYggHAGAIXwhhCAcAYQhjCGIIBwBhCGQIYwgHAGQIZQhjCAcAZAhmCGUIBwBmCGcIZQgHAGYIaAhnCAcAaAhpCGcIBwBoCGoIaQgHAGoIawhpCAcAaghsCGsIBwBsCG0IawgHAGwIbghtCAcAbghvCG0IBwBuCHAIbwgHAHAIcQhvCAcAcAhyCHEIBwByCHMIcQgHAHIIdAhzCAcAdAh1CHMIBwB0CHYIdQgHAHYIdwh1CAcAdgh4CHcIBwB4CHkIdwgHAHgIegh5CAcAegh7CHkIBwB6CHwIewgHAHwIfQh7CAcAfAh+CH0IBwB+CH8IfQgHAH4IgAh/CAcAgAiBCH8IBwCACIIIgQgHAIEIgwiECAcAgQiCCIMIBwCECIUIhggHAIQIgwiFCAcAhgiHCIgIBwCGCIUIhwgHAIgIiQiKCAcAiAiHCIkIBwCKCIsIjAgHAIoIiQiLCAcAjAiNCI4IBwCMCIsIjQgHAI4IUghPCAcAjgiNCFIIBwBSCI8IUAgHAFIIkAiPCAcAUAiRCFMIBwBQCI8IkQgHAFMIkghVCAcAUwiRCJIIBwBVCJMIVwgHAFUIkgiTCAcAVwiUCFkIBwBXCJMIlAgHAFkIlQhbCAcAWQiUCJUIBwBbCJYIXQgHAFsIlQiWCAcAXQiXCF8IBwBdCJYIlwgHAF8ImAhhCAcAXwiXCJgIBwCYCGQIYQgHAJgImQhkCAcAmQhmCGQIBwCZCJoIZggHAJoIaAhmCAcAmgibCGgIBwCbCGoIaAgHAJsInAhqCAcAnAhsCGoIBwCcCJ0IbAgHAJ0IbghsCAcAnQieCG4IBwCeCHAIbggHAJ4InwhwCAcAnwhyCHAIBwCfCKAIcggHAKAIdAhyCAcAoAihCHQIBwChCHYIdAgHAKEIogh2CAcAogh4CHYIBwCiCKMIeAgHAKMIegh4CAcAowikCHoIBwCkCHwIeggHAKQIpQh8CAcApQh+CHwIBwClCKYIfggHAKYIgAh+CAcApginCIAIBwCnCIIIgAgHAKcIqAiCCAcAggipCIMIBwCCCKgIqQgHAIMIqgiFCAcAgwipCKoIBwCFCKsIhwgHAIUIqgirCAcAhwisCIkIBwCHCKsIrAgHAIkIrQiLCAcAiQisCK0IBwCLCK4IjQgHAIsIrQiuCAcAjQiQCFIIBwCNCK4IkAgHAJAIrwiPCAcAkAiwCK8IBwCPCLEIkQgHAI8IrwixCAcAkQiyCJIIBwCRCLEIsggHAJIIswiTCAcAkgiyCLMIBwCTCLQIlAgHAJMIswi0CAcAlAi1CJUIBwCUCLQItQgHAJUItgiWCAcAlQi1CLYIBwCWCLcIlwgHAJYItgi3CAcAlwi4CJgIBwCXCLcIuAgHALgImQiYCAcAuAi5CJkIBwC5CJoImQgHALkIugiaCAcAugibCJoIBwC6CLsImwgHALsInAibCAcAuwi8CJwIBwC8CJ0InAgHALwIvQidCAcAvQieCJ0IBwC9CL4InggHAL4InwieCAcAvgi/CJ8IBwC/CKAInwgHAL8IwAigCAcAwQigCMAIBwDBCKEIoAgHAMIIoQjBCAcAwgiiCKEIBwDDCKIIwggHAMMIowiiCAcAxAijCMMIBwDECKQIowgHAMUIpAjECAcAxQilCKQIBwDGCKUIxQgHAMYIpgilCAcAxwimCMYIBwDHCKcIpggHAMgIpwjHCAcAyAioCKcIBwCpCMgIyQgHAKkIqAjICAcAqgjJCMoIBwCqCKkIyQgHAKsIygjLCAcAqwiqCMoIBwCsCMsIzAgHAKwIqwjLCAcArQjMCM0IBwCtCKwIzAgHAK4IzQjOCAcArgitCM0IBwCQCM4IsAgHAJAIrgjOCAcArwjPCNAIBwCvCLAIzwgHALEI0AjRCAcAsQivCNAIBwCyCNEI0ggHALIIsQjRCAcAswjSCNMIBwCzCLII0ggHALQI0wjUCAcAtAizCNMIBwC1CNQI1QgHALUItAjUCAcAtgjVCNYIBwC2CLUI1QgHALcI1gjXCAcAtwi2CNYIBwC4CNcI2AgHALgItwjXCAcA2Qi4CNgIBwDZCLkIuAgHANoIuQjZCAcA2gi6CLkIBwDbCLoI2ggHANsIuwi6CAcA3Ai7CNsIBwDcCLwIuwgHAN0IvAjcCAcA3Qi9CLwIBwDeCL0I3QgHAN4Ivgi9CAcA3wi+CN4IBwDfCL8IvggHAOAIvwjfCAcA4AjACL8IBwDhCMAI4AgHAOEIwQjACAcA4gjBCOEIBwDiCMIIwQgHAOMIwgjiCAcA4wjDCMIIBwDkCMMI4wgHAOQIxAjDCAcA5QjECOQIBwDlCMUIxAgHAOYIxQjlCAcA5gjGCMUIBwDnCMYI5ggHAOcIxwjGCAcA6AjHCOcIBwDoCMgIxwgHAMkI6AjpCAcAyQjICOgIBwDKCOkI6ggHAMoIyQjpCAcAywjqCOsIBwDLCMoI6ggHAMwI6wjsCAcAzAjLCOsIBwDNCOwI7QgHAM0IzAjsCAcAzgjtCO4IBwDOCM0I7QgHALAI7gjPCAcAsAjOCO4IBwDQCO8I8AgHANAIzwjvCAcA0QjwCPEIBwDRCNAI8AgHANII8QjyCAcA0gjRCPEIBwDTCPII8wgHANMI0gjyCAcA1AjzCPQIBwDUCNMI8wgHANUI9Aj1CAcA1QjUCPQIBwDWCPUI9ggHANYI1Qj1CAcA1wj2CPcIBwDXCNYI9ggHANgI9wj4CAcA2AjXCPcIBwD5CNgI+AgHAPkI2QjYCAcA+gjZCPkIBwD6CNoI2QgHAPsI2gj6CAcA+wjbCNoIBwD8CNsI+wgHAPwI3AjbCAcA/QjcCPwIBwD9CN0I3AgHAP4I3Qj9CAcA/gjeCN0IBwD/CN4I/ggHAP8I3wjeCAcAAAnfCP8IBwAACeAI3wgHAAEJ4AgACQcAAQnhCOAIBwACCeEIAQkHAAIJ4gjhCAcAAwniCAIJBwADCeMI4ggHAAQJ4wgDCQcABAnkCOMIBwAFCeQIBAkHAAUJ5QjkCAcABgnlCAUJBwAGCeYI5QgHAAcJ5ggGCQcABwnnCOYIBwAICecIBwkHAAgJ6AjnCAcA6QgICQkJBwDpCOgICAkHAOoICQkKCQcA6gjpCAkJBwDrCAoJCwkHAOsI6ggKCQcA7AgLCQwJBwDsCOsICwkHAO0IDAkNCQcA7QjsCAwJBwDuCA0JDgkHAO4I7QgNCQcAzwgOCe8IBwDPCO4IDgkHAA8JEAkRCQcADwkSCRAJBwATCREJFAkHABMJDwkRCQcAFQkWCRcJBwAVCRgJFgkHABkJFwkaCQcAGQkVCRcJBwAbCRwJHQkHABsJHgkcCQcAHwkdCSAJBwAfCRsJHQkHACEJIAkiCQcAIQkfCSAJBwAjCSEJIgkHACMJJAkhCQcAJQkkCSMJBwAlCSYJJAkHACcJJgklCQcAJwkoCSYJBwApCSoJKwkHACkJLAkqCQcALQksCSkJBwAtCS4JLAkHAC8JMAkxCQcALwkyCTAJBwAQCTIJLwkHABAJEgkyCQcAMwkvCTQJBwAzCRAJLwkHABEJMwk1CQcAEQkQCTMJBwAUCTUJNgkHABQJEQk1CQcAFgk2CTcJBwAWCRQJNgkHABcJNwk4CQcAFwkWCTcJBwAaCTgJOQkHABoJFwk4CQcAHAk5CToJBwAcCRoJOQkHAB0JOgk7CQcAHQkcCToJBwAgCTsJPAkHACAJHQk7CQcAIgk8CT0JBwAiCSAJPAkHAD4JIgk9CQcAPgkjCSIJBwA/CSMJPgkHAD8JJQkjCQcAQAklCT8JBwBACScJJQkHAEEJJwlACQcAQQkrCScJBwBCCSsJQQkHAEIJKQkrCQcAQwkpCUIJBwBDCS0JKQkHAEQJLQlDCQcARAkxCS0JBwA0CTEJRAkHADQJLwkxCQcARQk0CUYJBwBFCTMJNAkHADUJRQlHCQcANQkzCUUJBwA2CUcJSAkHADYJNQlHCQcANwlICUkJBwA3CTYJSAkHADgJSQlKCQcAOAk3CUkJBwA4CUsJOQkHADgJSglLCQcAOQlMCToJBwA5CUsJTAkHADoJTQk7CQcAOglMCU0JBwA7CU4JPAkHADsJTQlOCQcAPAlPCT0JBwA8CU4JTwkHAE8JPgk9CQcATwlQCT4JBwBQCT8JPgkHAFAJUQk/CQcAUQlACT8JBwBRCVIJQAkHAFIJQQlACQcAUglTCUEJBwBTCUIJQQkHAFMJVAlCCQcAVQlCCVQJBwBVCUMJQgkHAFYJQwlVCQcAVglECUMJBwBGCUQJVgkHAEYJNAlECQcAVwlGCVgJBwBXCUUJRgkHAEcJVwlZCQcARwlFCVcJBwBICVkJWgkHAEgJRwlZCQcASQlaCVsJBwBJCUgJWgkHAEoJWwlcCQcASglJCVsJBwBKCV0JSwkHAEoJXAldCQcASwleCUwJBwBLCV0JXgkHAEwJXwlNCQcATAleCV8JBwBNCWAJTgkHAE0JXwlgCQcATglhCU8JBwBOCWAJYQkHAGEJUAlPCQcAYQliCVAJBwBiCVEJUAkHAGIJYwlRCQcAYwlSCVEJBwBjCWQJUgkHAGQJUwlSCQcAZAllCVMJBwBlCVQJUwkHAGUJZglUCQcAZwlUCWYJBwBnCVUJVAkHAGgJVQlnCQcAaAlWCVUJBwBYCVYJaAkHAFgJRglWCQcAgQBYCX8ABwCBAFcJWAkHAFkJgQCCAAcAWQlXCYEABwBaCYIAhAAHAFoJWQmCAAcAWwmEAIYABwBbCVoJhAAHAFwJhgCIAAcAXAlbCYYABwBcCYsAXQkHAFwJiACLAAcAXQmNAF4JBwBdCYsAjQAHAF4JjwBfCQcAXgmNAI8ABwBfCZEAYAkHAF8JjwCRAAcAYAmTAGEJBwBgCZEAkwAHAJMAYglhCQcAkwCUAGIJBwCUAGMJYgkHAJQAlgBjCQcAlgBkCWMJBwCWAJgAZAkHAJgAZQlkCQcAmACaAGUJBwCaAGYJZQkHAJoAnABmCQcAnwBmCZwABwCfAGcJZgkHAKEAZwmfAAcAoQBoCWcJBwB/AGgJoQAHAH8AWAloCQcAaQkWCWoJBwBpCRQJFgkHABMJaQlrCQcAEwkUCWkJBwAYCWsJbAkHABgJEwlrCQcAagkYCWwJBwBqCRYJGAkHAG0JHAluCQcAbQkaCRwJBwAZCW0JbwkHABkJGgltCQcAHglvCXAJBwAeCRkJbwkHAG4JHglwCQcAbgkcCR4JBwAoCXEJcgkHACgJJwlxCQcAcwkoCXIJBwBzCSoJKAkHAHQJKglzCQcAdAkrCSoJBwAnCXQJcQkHACcJKwl0CQcALgl1CXYJBwAuCS0JdQkHAHcJLgl2CQcAdwkwCS4JBwB4CTAJdwkHAHgJMQkwCQcALQl4CXUJBwAtCTEJeAkHAHkJagl6CQcAeQlpCWoJBwBrCXkJewkHAGsJaQl5CQcAbAl7CXwJBwBsCWsJewkHAHoJbAl8CQcAeglqCWwJBwB9CW4JfgkHAH0JbQluCQcAbwl9CX8JBwBvCW0JfQkHAHAJfwmACQcAcAlvCX8JBwB+CXAJgAkHAH4JbglwCQcAcgmBCYIJBwByCXEJgQkHAIMJcgmCCQcAgwlzCXIJBwCECXMJgwkHAIQJdAlzCQcAcQmECYEJBwBxCXQJhAkHAHYJhQmGCQcAdgl1CYUJBwCHCXYJhgkHAIcJdwl2CQcAiAl3CYcJBwCICXgJdwkHAHUJiAmFCQcAdQl4CYgJBwCJCXoJigkHAIkJeQl6CQcAewmJCYsJBwB7CXkJiQkHAHwJiwmMCQcAfAl7CYsJBwCKCXwJjAkHAIoJegl8CQcAjQl+CY4JBwCNCX0JfgkHAH8JjQmPCQcAfwl9CY0JBwCACY8JkAkHAIAJfwmPCQcAjgmACZAJBwCOCX4JgAkHAIIJkQmSCQcAggmBCZEJBwCTCYIJkgkHAJMJgwmCCQcAlAmDCZMJBwCUCYQJgwkHAIEJlAmRCQcAgQmECZQJBwCGCZUJlgkHAIYJhQmVCQcAlwmGCZYJBwCXCYcJhgkHAJgJhwmXCQcAmAmICYcJBwCFCZgJlQkHAIUJiAmYCQcAmQmKCZoJBwCZCYkJigkHAIsJmQmbCQcAiwmJCZkJBwCMCZsJnAkHAIwJiwmbCQcAmgmMCZwJBwCaCYoJjAkHAJ0JjgmeCQcAnQmNCY4JBwCPCZ0JnwkHAI8JjQmdCQcAkAmfCaAJBwCQCY8JnwkHAJ4JkAmgCQcAngmOCZAJBwCSCaEJogkHAJIJkQmhCQcAowmSCaIJBwCjCZMJkgkHAKQJkwmjCQcApAmUCZMJBwCRCaQJoQkHAJEJlAmkCQcAlgmlCaYJBwCWCZUJpQkHAKcJlgmmCQcApwmXCZYJBwCoCZcJpwkHAKgJmAmXCQcAlQmoCaUJBwCVCZgJqAkHAKkJmgmqCQcAqQmZCZoJBwCbCakJqwkHAJsJmQmpCQcAnAmrCawJBwCcCZsJqwkHAKoJnAmsCQcAqgmaCZwJBwCtCZ4JrgkHAK0JnQmeCQcAnwmtCa8JBwCfCZ0JrQkHAKAJrwmwCQcAoAmfCa8JBwCuCaAJsAkHAK4JngmgCQcAogmxCbIJBwCiCaEJsQkHALMJogmyCQcAswmjCaIJBwC0CaMJswkHALQJpAmjCQcAoQm0CbEJBwChCaQJtAkHAKYJtQm2CQcApgmlCbUJBwC3CaYJtgkHALcJpwmmCQcAuAmnCbcJBwC4CagJpwkHAKUJuAm1CQcApQmoCbgJBwC5CUwCugkHALkJSwJMAgcATgK7CbwJBwBOAk0CuwkHAE8CvAm9CQcATwJOArwJBwBPAr4JUAIHAE8CvQm+CQcAUAK/CVECBwBQAr4JvwkHAFECwAlSAgcAUQK/CcAJBwDACVMCUgIHAMAJwQlTAgcAwQlUAlMCBwDBCcIJVAIHALoJVALCCQcAuglMAlQCBwDDCboJxAkHAMMJuQm6CQcAuwnDCcUJBwC7CbkJwwkHAL0JxgnHCQcAvQm8CcYJBwC+CccJyAkHAL4JvQnHCQcAvwnICckJBwC/Cb4JyAkHAMAJyQnKCQcAwAm/CckJBwDLCcAJygkHAMsJwQnACQcAzAnBCcsJBwDMCcIJwQkHAMQJwgnMCQcAxAm6CcIJBwDNCcMJxAkHAM0JzgnDCQcAxQnPCcYJBwDFCdAJzwkHAMYJ0QnHCQcAxgnPCdEJBwDICdEJ0gkHAMgJxwnRCQcAyQnSCdMJBwDJCcgJ0gkHAMoJ0wnUCQcAygnJCdMJBwDVCcoJ1AkHANUJywnKCQcA1gnLCdUJBwDWCcwJywkHANYJxAnMCQcA1gnNCcQJBwDXCc0J2AkHANcJzgnNCQcA0AnXCdkJBwDQCc4J1wkHANEJ2gnbCQcA0QnPCdoJBwDSCdsJ3AkHANIJ0QnbCQcA0wncCd0JBwDTCdIJ3AkHANQJ3QneCQcA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VAtCC0ALBwBUC1YLQgsHAFULVgtUCwcAVQtXC1YLBwBWCyMLQgsHAFYLWAsjCwcAVwtYC1YLBwBXC1kLWAsHAFgLIAsjCwcAWAtaCyALBwBZC1oLWAsHAFkLWwtaCwcAWgseCyALBwBaC1wLHgsHAFsLXAtaCwcAWwtdC1wLBwBcCyQLHgsHAFwLXgskCwcAXQteC1wLBwBdC18LXgsHAF4LJgskCwcAXgtgCyYLBwBfC2ALXgsHAF8LYQtgCwcAYAsoCyYLBwBgC2ILKAsHAGELYgtgCwcAYQtjC2ILBwBiCyoLKAsHAGILZAsqCwcAYwtkC2ILBwBjC2ULZAsHAGQLLAsqCwcAZAtmCywLBwBlC2YLZAsHAGULZwtmCwcAZgsuCywLBwBmC2gLLgsHAGcLaAtmCwcAZwtpC2gLBwBoCzALLgsHAGgLagswCwcAaQtqC2gLBwBpC2sLagsHAGoLMgswCwcAagtGCzILBwBrC0YLagsHAGsLSAtGCwcAbAttC24LBwBsC24LbwsHAG0LcAtxCwcAbQtxC24LBwByC3MLbQsHAHILbQtsCwcAcwt0C3ALBwBzC3ALbQsHAHULdgtzCwcAdQtzC3ILBwB2C3cLdAsHAHYLdAtzCwcAeAt5C3YLBwB4C3YLdQsHAHkLegt3CwcAeQt3C3YLBwB7C3wLeQsHAHsLeQt4CwcAfAt9C3oLBwB8C3oLeQsHAH4Lfwt8CwcAfgt8C3sLBwB/C4ALfQsHAH8LfQt8CwcAgQuCC38LBwCBC38LfgsHAIILgwuACwcAgguAC38LBwCEC4ULggsHAIQLgguBCwcAhQuGC4MLBwCFC4MLggsHAIcLiAuFCwcAhwuFC4QLBwCIC4kLhgsHAIgLhguFCwcAiguLC4gLBwCKC4gLhwsHAIsLjAuJCwcAiwuJC4gLBwCNC44LiwsHAI0LiwuKCwcAjguPC4wLBwCOC4wLiwsHAJALkQuOCwcAkAuOC40LBwCRC5ILjwsHAJELjwuOCwcAkwuUC5ELBwCTC5ELkAsHAJQLlQuSCwcAlAuSC5ELBwCWC5cLlAsHAJYLlAuTCwcAlwuYC5ULBwCXC5ULlAsHAJkLmguXCwcAmQuXC5YLBwCaC5sLmAsHAJoLmAuXCwcAnAudC5oLBwCcC5oLmQsHAJ0LngubCwcAnQubC5oLBwCfC6ALoQsHAJ8LoQuiCwcAogujC54LBwCiC54LnQsHAKQLpQuhCwcApAuhC6ALBwClC6YLpwsHAKULpwuhCwcAbwtuC6ULBwBvC6ULpAsHAG4LcQumCwcAbgumC6ULBwCjC6cLqAsHAKMLqAupCwcAqQuqC6sLBwCpC6sLrAsHAKYLrQuoCwcApguoC6cLBwCtC64LrwsHAK0LrwuoCwcAcQuwC60LBwBxC60LpgsHALALsQuuCwcAsAuuC60LBwBwC7ILsAsHAHALsAtxCwcAsguzC7ELBwCyC7ELsAsHAHQLtAuyCwcAdAuyC3ALBwC0C7ULswsHALQLswuyCwcAdwu2C7QLBwB3C7QLdAsHALYLtwu1CwcAtgu1C7QLBwB6C7gLtgsHAHoLtgt3CwcAuAu5C7cLBwC4C7cLtgsHAH0Lugu4CwcAfQu4C3oLBwC6C7sLuQsHALoLuQu4CwcAgAu8C7oLBwCAC7oLfQsHALwLvQu7CwcAvAu7C7oLBwCDC74LvAsHAIMLvAuACwcAvgu/C70LBwC+C70LvAsHAIYLwAu+CwcAhgu+C4MLBwDAC8ELvwsHAMALvwu+CwcAiQvCC8ALBwCJC8ALhgsHAMILwwvBCwcAwgvBC8ALBwCMC8QLwgsHAIwLwguJCwcAxAvFC8MLBwDEC8MLwgsHAI8LxgvECwcAjwvEC4wLBwDGC8cLxQsHAMYLxQvECwcAkgvIC8YLBwCSC8YLjwsHAMgLyQvHCwcAyAvHC8YLBwCVC8oLyAsHAJULyAuSCwcAygvLC8kLBwDKC8kLyAsHAJgLzAvKCwcAmAvKC5ULBwDMC80LywsHAMwLywvKCwcAmwvOC8wLBwCbC8wLmAsHAM4LzwvNCwcAzgvNC8wLBwCeC6wLzgsHAJ4LzgubCwcArAurC88LBwCsC88LzgsHALcLuQvQCwcAtwvQC9ELBwC5C7sL0gsHALkL0gvQCwcA0QvTC7ULBwDRC7ULtwsHANQLswu1CwcA1Au1C9MLBwCuC7ELswsHAK4LswvUCwcAvQu/C9ILBwC9C9ILuwsHANUL0QvQCwcA1QvQC9YLBwDVC9YLywsHANULywvNCwcA1gvQC9ILBwDWC9IL1wsHANYL1wvJCwcA1gvJC8sLBwDNC88L2AsHAM0L2AvVCwcA1QvYC9MLBwDVC9ML0QsHANkL1AvTCwcA2QvTC9gLBwCrC9kL2AsHAKsL2AvPCwcArwuuC9QLBwCvC9QL2QsHAKoLrwvZCwcAqgvZC6sLBwDFC8cLyQsHAMULyQvXCwcAvwvBC9cLBwC/C9cL0gsHAMELwwvFCwcAwQvFC9cLBwCVCssKkwoHAJUKzwrLCgcAkgraC8UKBwCSCs4K2gsHAMQKzgrCCgcAxAraC84KBwDbC8cKqQoHANsL3AvHCgcA3AvKCscKBwDcC90LygoHAMoK3gusCgcAygrdC94LBwCsCtsLqQoHAKwK3gvbCwcA3wvcC9sLBwDfC+AL3AsHAOEL3AvgCwcA4QvdC9wLBwDdC+IL3gsHAN0L4QviCwcA3gvfC9sLBwDeC+IL3wsHAOML5AvlCwcA4wvmC+QLBwDmC+cL5AsHAOYL6AvnCwcA6AvpC+cLBwDoC+oL6QsHAOgL6wvqCwcA6AvsC+sLBwDmC+wL6AsHAOYL7QvsCwcA4wvtC+YLBwDjC+4L7QsHAO8L8AvxCwcA7wvyC/ALBwDxC/ML9AsHAPEL8AvzCwcA9Av1C/YLBwD0C/ML9QsHAPcL4wvlCwcA9wv4C+MLBwDkC/cL5QsHAOQL+Qv3CwcA5wv5C+QLBwDnC/oL+QsHAOoL+wvpCwcA6gv8C/sLBwDpC/oL5wsHAOkL+wv6CwcA/QvrC+wLBwD9C/4L6wsHAP4L6gvrCwcA/gv8C+oLBwD/C+wL7QsHAP8L/QvsCwcA4wsADO4LBwDjC/gLAAwHAAAM7QvuCwcAAAz/C+0LBwABDO8L8QsHAAEMAgzvCwcAAgzyC+8LBwACDAMM8gsHAPILBAzwCwcA8gsDDAQMBwAFDPEL9AsHAAUMAQzxCwcA8AsGDPMLBwDwCwQMBgwHAAcM9Av2CwcABwwFDPQLBwDzCwgM9QsHAPMLBgwIDAcA9QsHDPYLBwD1CwgMBwwHAAkMCgwLDAcACQwLDAwMBwALDA0MDgwHAAsMDgwMDAcADwwMDA4MBwAPDA4MEAwHABEMDAwPDAcAEQwPDBIMBwATDBQMDAwHABMMDAwRDAcAFAwVDAkMBwAUDAkMDAwHAAoMFgwXDAcACgwXDAsMBwALDBcMGAwHAAsMGAwNDAcADQwYDBkMBwANDBkMDgwHABAMDgwZDAcAEAwZDBoMBwAPDBAMGgwHAA8MGgwbDAcAEgwPDBsMBwASDBsMHAwHAB0MEQwSDAcAHQwSDBwMBwAeDBMMEQwHAB4MEQwdDAcAHwwUDBMMBwAfDBMMHgwHAB8MIAwVDAcAHwwVDBQMBwAgDCEMCQwHACAMCQwVDAcAIQwWDAoMBwAhDAoMCQwHABYMIgwjDAcAFgwjDBcMBwAXDCMMJAwHABcMJAwYDAcAGAwkDCUMBwAYDCUMGQwHABoMGQwlDAcAGgwlDCYMBwAbDBoMJgwHABsMJgwnDAcAHAwbDCcMBwAcDCcMKAwHACkMHQwcDAcAKQwcDCgMBwAqDB4MHQwHACoMHQwpDAcAKwwfDB4MBwArDB4MKgwHACsMLAwgDAcAKwwgDB8MBwAsDC0MIQwHACwMIQwgDAcALQwiDBYMBwAtDBYMIQwHACMMIgwuDAcAIwwuDC8MBwAkDCMMLwwHACQMLwwwDAcAJAwwDDEMBwAkDDEMJQwHACUMMQwyDAcAJQwyDCYMBwAmDDIMMwwHACYMMwwnDAcAJwwzDDQMBwAnDDQMKAwHADQMNQwpDAcANAwpDCgMBwA1DDYMKgwHADUMKgwpDAcANgw3DCsMBwA2DCsMKgwHADcMOAwsDAcANwwsDCsMBwA5DC0MLAwHADkMLAw4DAcALgwiDC0MBwAuDC0MOQwHAC8MLgw6DAcALww6DDsMBwAwDC8MOwwHADAMOww8DAcAMAw8DD0MBwAwDD0MMQwHADEMPQw+DAcAMQw+DDIMBwAyDD4MPwwHADIMPwwzDAcAMww/DEAMBwAzDEAMNAwHAEAMQQw1DAcAQAw1DDQMBwBBDEIMNgwHAEEMNgw1DAcAQgxDDDcMBwBCDDcMNgwHAEMMRAw4DAcAQww4DDcMBwBFDDkMOAwHAEUMOAxEDAcAOgwuDDkMBwA6DDkMRQwHADwMOww6DAcAPAw6DEYMBwA8DEYMPgwHADwMPgw9DAcAPgxGDEAMBwA+DEAMPwwHAEYMQgxBDAcARgxBDEAMBwBGDEQMQwwHAEYMQwxCDAcAOgxFDEQMBwA6DEQMRgwHAKILnQucCwcAogucC58LBwCiC6ELpwsHAKILpwujCwcAqQusC54LBwCpC54LowsHAKkLqAuvCwcAqQuvC6oLBwBHDEgMSQwHAEcMSQxKDAcASwxMDEgMBwBLDEgMRwwHAEgMTQxODAcASAxODEkMBwBMDE8MTQwHAEwMTQxIDAcATQxQDFEMBwBNDFEMTgwHAE8MUgxQDAcATwxQDE0MBwBQDFMMVAwHAFAMVAxRDAcAUgxVDFMMBwBSDFMMUAwHAFMMVgxXDAcAUwxXDFQMBwBVDFgMVgwHAFUMVgxTDAcAVgxZDFoMBwBWDFoMVwwHAFgMWwxZDAcAWAxZDFYMBwBZDFwMXQwHAFkMXQxaDAcAWwxeDFwMBwBbDFwMWQwHAFwMXwxgDAcAXAxgDF0MBwBeDGEMXwwHAF4MXwxcDAcAXwxiDGMMBwBfDGMMYAwHAGEMZAxiDAcAYQxiDF8MBwBiDGUMZgwHAGIMZgxjDAcAZAxnDGUMBwBkDGUMYgwHAGUMaAxpDAcAZQxpDGYMBwBnDGoMaAwHAGcMaAxlDAcAaAxrDGwMBwBoDGwMaQwHAGoMbQxrDAcAagxrDGgMBwBrDG4MbwwHAGsMbwxsDAcAbQxwDG4MBwBtDG4MawwHAG4McQxyDAcAbgxyDG8MBwBwDHMMcQwHAHAMcQxuDAcAcQx0DHUMBwBxDHUMcgwHAHMMdgx0DAcAcwx0DHEMBwB0DHcMeAwHAHQMeAx1DAcAdgx5DHcMBwB2DHcMdAwHAHoMewx8DAcAegx8DH0MBwB5DH4MfQwHAHkMfQx3DAcAegx/DIAMBwB6DIAMewwHAIEMggx/DAcAgQx/DHoMBwB/DEcMSgwHAH8MSgyADAcAggxLDEcMBwCCDEcMfwwHAIMMgQx+DAcAgwx+DIQMBwCFDIYMhAwHAIUMhAyHDAcAgwyIDIIMBwCDDIIMgQwHAIkMigyIDAcAiQyIDIMMBwCIDIsMSwwHAIgMSwyCDAcAigyMDIsMBwCKDIsMiAwHAIsMjQxMDAcAiwxMDEsMBwCMDI4MjQwHAIwMjQyLDAcAjQyPDE8MBwCNDE8MTAwHAI4MkAyPDAcAjgyPDI0MBwCPDJEMUgwHAI8MUgxPDAcAkAySDJEMBwCQDJEMjwwHAJEMkwxVDAcAkQxVDFIMBwCSDJQMkwwHAJIMkwyRDAcAkwyVDFgMBwCTDFgMVQwHAJQMlgyVDAcAlAyVDJMMBwCVDJcMWwwHAJUMWwxYDAcAlgyYDJcMBwCWDJcMlQwHAJcMmQxeDAcAlwxeDFsMBwCYDJoMmQwHAJgMmQyXDAcAmQybDGEMBwCZDGEMXgwHAJoMnAybDAcAmgybDJkMBwCbDJ0MZAwHAJsMZAxhDAcAnAyeDJ0MBwCcDJ0MmwwHAJ0MnwxnDAcAnQxnDGQMBwCeDKAMnwwHAJ4MnwydDAcAnwyhDGoMBwCfDGoMZwwHAKAMogyhDAcAoAyhDJ8MBwChDKMMbQwHAKEMbQxqDAcAogykDKMMBwCiDKMMoQwHAKMMpQxwDAcAowxwDG0MBwCkDKYMpQwHAKQMpQyjDAcApQynDHMMBwClDHMMcAwHAKYMqAynDAcApgynDKUMBwCnDKkMdgwHAKcMdgxzDAcAqAyqDKkMBwCoDKkMpwwHAKkMhwx5DAcAqQx5DHYMBwCqDIUMhwwHAKoMhwypDAcAqwyUDJIMBwCrDJIMrAwHAK0MlgyUDAcArQyUDKsMBwCQDK4MrAwHAJAMrAySDAcAkAyODK8MBwCQDK8MrgwHAI4MjAyKDAcAjgyKDK8MBwCtDJoMmAwHAK0MmAyWDAcAqwysDLAMBwCrDLAMsQwHAKYMsQywDAcApgywDKgMBwCtDKsMsQwHAK0MsQyyDAcApAyyDLEMBwCkDLEMpgwHALMMqgyoDAcAswyoDLAMBwCuDLMMsAwHAK4MsAysDAcArgyvDLQMBwCuDLQMswwHALMMtAyFDAcAswyFDKoMBwCvDIoMiQwHAK8MiQy0DAcAtAyJDIYMBwC0DIYMhQwHAKQMogygDAcApAygDLIMBwCyDJwMmgwHALIMmgytDAcAoAyeDJwMBwCgDJwMsgwHAHgMdwx9DAcAeAx9DHwMBwCBDHoMfQwHAIEMfQx+DAcAeQyHDIQMBwB5DIQMfgwHAIkMgwyEDAcAiQyEDIYMBwBGAUkBRwEHAEYBcwFJAQcASAFzAUYBBwBIAXQBcwEHAEcBPwFMAQcARwFJAT8BBwDXAK8A1AAHANcA2ACvAAcA6ADYANcABwDoAOkA2AAHAF0B6QDoAAcAXQFfAekABwBdAVwBYAEHAF0BWwFcAQcA3ACrAKwABwDcAKoAqwAHAO0AqgDcAAcA7QDuAKoABwBnAe4A7QAHAGcBaQHuAAcAZwFmAWoBBwBnAWUBZgEHAKMAtQy2DAcAowClALUMBwC3DLgMuQwHALcMugy4DAcAuQy7DLwMBwC5DLgMuwwHAL0Mvgy/DAcAvQy8DL4MBwC9DMAMwQwHAL0MvwzADAcAwgyxALMABwDCDMMMsQAHAMQMxQzGDAcAxAzHDMUMBwDIDMcMxAwHAMgMyQzHDAcAygzJDMgMBwDKDMsMyQwHAMwMywzKDAcAzAzNDMsMBwDODM0MzAwHAM4MzwzNDAcAwwzBALEABwDDDNAMwQAHAMcM0QzFDAcAxwzSDNEMBwDJDNIMxwwHAMkM0wzSDAcAywzTDMkMBwDLDNQM0wwHAM0M1AzLDAcAzQzVDNQMBwDPDNUMzQwHAM8M1gzVDAcA1wzIDMQMBwDXDNgMyAwHALkM2AzXDAcAuQy8DNgMBwDYDMoMyAwHANgM2QzKDAcAvAzZDNgMBwC8DL0M2QwHANkMzAzKDAcA2QzaDMwMBwC9DNoM2QwHAL0MwQzaDAcA2gzODMwMBwDaDNsMzgwHAMEM2wzaDAcAwQzcDNsMBwDdDNwM3gwHAN0M2wzcDAcA3wzEDMYMBwDfDNcMxAwHALcM1wzfDAcAtwy5DNcMBwDSAMIMswAHANIA4AzCDAcAowDgDNIABwCjALYM4AwHAMEM4QzcDAcAwQzADOEMBwDcDOIM3gwHANwM4wziDAcA4QzjDNwMBwDhDOQM4wwHAL8M5QzADAcAvwzmDOUMBwDnDOYMvwwHAOcM6AzmDAcA5wy+DOkMBwDnDL8MvgwHAOoM6wzsDAcA6gztDOsMBwDsDO4M7wwHAOwM6wzuDAcA6gziDO0MBwDqDN4M4gwHAOsM8AzuDAcA6wzxDPAMBwDtDPEM6wwHAO0M8gzxDAcA4gzyDO0MBwDiDPMM8gwHAOMM8wziDAcA4wz0DPMMBwDkDPQM4wwHAOQM9Qz0DAcA5gz2DOUMBwDmDPcM9gwHAOgM9wzmDAcA6Az4DPcMBwDnDPgM6AwHAOcM+Qz4DAcA6Qz5DOcMBwDpDPoM+QwHALgM+wy7DAcAuAz8DPsMBwC6DPwMuAwHALoM/Qz8DAcApQD+DLUMBwClAPIA/gwHANYM/wzVDAcA1gwADf8MBwDVDAEN1AwHANUM/wwBDQcA1AwCDdMMBwDUDAENAg0HANMMAw3SDAcA0wwCDQMNBwDSDAQN0QwHANIMAw0EDQcA0Az5AMEABwDQDAUN+QAHAAANBg3/DAcAAA0HDQYNBwD/DAgNAQ0HAP8MBg0IDQcAAQ0JDQINBwABDQgNCQ0HAAINCg0DDQcAAg0JDQoNBwADDQsNBA0HAAMNCg0LDQcABQ0BAfkABwAFDQwNAQEHAA0NDg0PDQcADQ0QDQ4NBwARDQ8NEg0HABENDQ0PDQcAEA0TDQ4NBwAQDRQNEw0HABUNEg0WDQcAFQ0RDRINBwAXDRYNGA0HABcNFQ0WDQcAGQ0YDRoNBwAZDRcNGA0HABsNEA0NDQcAGw0cDRANBwAdDQ0NEQ0HAB0NGw0NDQcAHA0UDRANBwAcDR4NFA0HAB8NEQ0VDQcAHw0dDRENBwAgDRUNFw0HACANHw0VDQcAIQ0XDRkNBwAhDSANFw0HACINIw0kDQcAIg0lDSMNBwAjDQ4NEw0HACMNJQ0ODQcAJg0lDSINBwAmDScNJQ0HACUNDw0ODQcAJQ0nDQ8NBwAnDSgNKQ0HACcNJg0oDQcAKQ0PDScNBwApDRINDw0HACoNKQ0oDQcAKg0rDSkNBwArDRINKQ0HACsNFg0SDQcALA0rDSoNBwAsDS0NKw0HACsNGA0WDQcAKw0tDRgNBwAuDS0NLA0HAC4NLw0tDQcALQ0aDRgNBwAtDS8NGg0HACINMA0mDQcAIg0xDTANBwAkDTENIg0HACQNMg0xDQcAMQ0zDTANBwAxDTQNMw0HADINNA0xDQcAMg01DTQNBwA2DSwBNw0HADYNLwEsAQcAOA0vATYNBwA4DTEBLwEHAAwNMgEBAQcADA05DTIBBwAKDToNCw0HAAoNOw06DQcACQ07DQoNBwAJDTwNOw0HAAgNPA0JDQcACA09DTwNBwAGDT0NCA0HAAYNPg09DQcABw0+DQYNBwAHDT8NPg0HACwBOQ03DQcALAEyATkNBwBADTMNNA0HAEANQQ0zDQcAQg00DTUNBwBCDUANNA0HADMNOg07DQcAMw1BDToNBwAwDTsNPA0HADANMw07DQcAJg08DT0NBwAmDTANPA0HACYNPg0oDQcAJg09DT4NBwA+DSoNKA0HAD4NPw0qDQcA8AxDDe4MBwDwDEQNQw0HAO4MRQ3vDAcA7gxDDUUNBwAqDUYNLA0HACoNRw1GDQcALA1IDS4NBwAsDUYNSA0HAEcNSQ1GDQcARw1KDUkNBwBGDUsNSA0HAEYNSQ1LDQcASg1MDUkNBwBKDU0NTA0HAEkNTg1LDQcASQ1MDU4NBwBFDUQNTw0HAEUNQw1EDQcARw1QDUoNBwBHDVENUA0HAEcNPw1RDQcARw0qDT8NBwBQDU0NSg0HAFANUg1NDQcA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/g0HAAkP/Q7/DgcACQ8ID/0OBwAKD90N3A0HAAoPCw/dDQcACw/fDd0NBwALDwwP3w0HANwNDQ8KDwcA3A0ODw0PBwAODw8PDQ8HAA4PEA8PDwcAEA8RDw8PBwAQDxIPEQ8HABEPEw8MDwcAEQ8SDxMPBwAUDxMPEg8HABQPFQ8TDwcACQ8WDwgPBwAJDxcPFg8HAAgPGA8CDwcACA8WDxgPBwACDxkPAQ8HAAIPGA8ZDwcAAQ8aDwYPBwABDxkPGg8HAAYPGw8HDwcABg8aDxsPBwAHDxwPBQ8HAAcPGw8cDwcABQ8dDwMPBwAFDxwPHQ8HAAMPHg8EDwcAAw8dDx4PBwAXDx8PFg8HABcPIA8fDwcAFg8hDxgPBwAWDx8PIQ8HABgPIg8ZDwcAGA8hDyIPBwAZDyMPGg8HABkPIg8jDwcAGg8kDxsPBwAaDyMPJA8HABsPJQ8cDwcAGw8kDyUPBwAcDyYPHQ8HABwPJQ8mDwcAHQ8nDx4PBwAdDyYPJw8HAA8PKA8NDwcADw8pDygPBwANDyoPCg8HAA0PKA8qDwcAEQ8pDw8PBwARDysPKQ8HAAwPKw8RDwcADA8sDysPBwALDywPDA8HAAsPLQ8sDwcACg8tDwsPBwAKDyoPLQ8HACkPLg8oDwcAKQ8vDy4PBwAoDzAPKg8HACgPLg8wDwcAKw8vDykPBwArDzEPLw8HACoPMg8tDwcAKg8wDzIPBwAsDzEPKw8HACwPMw8xDwcALQ8zDywPBwAtDzIPMw8HAC8PNA8uDwcALw81DzQPBwAuDzYPMA8HAC4PNA82DwcAMQ81Dy8PBwAxDzcPNQ8HADAPOA8yDwcAMA82DzgPBwAzDzcPMQ8HADMPOQ83DwcAMg85DzMPBwAyDzgPOQ8HADYPOg84DwcANg87DzoPBwA4DzwPOQ8HADgPOg88DwcANA87DzYPBwA0Dz0POw8HADUPPQ80DwcANQ8+Dz0PBwA3Dz4PNQ8HADcPPw8+DwcAOQ8/DzcPBwA5DzwPPw8HAEAPRA5GDgcAQA9BD0QOBwBBD0UORA4HAEEPQg9FDgcAQg9mDkUOBwBCD0MPZg4HAEMPZA5mDgcAQw9ED2QOBwBFD0YORw4HAEUPQA9GDgcARg9HDkgOBwBGD0UPRw4HAEcPSA5JDgcARw9GD0gOBwBID0kOSg4HAEgPRw9JDgcASQ+BDlUOBwBJD0oPgQ4HAEIPSg9JDwcAQg9BD0oPBwBKDzIOgQ4HAEoPSw8yDgcAQQ9LD0oPBwBBD0APSw8HAEsPLQ4yDgcASw9MDy0OBwBAD0wPSw8HAEAPRQ9MDwcATA8uDi0OBwBMD00PLg4HAEUPTQ9MDwcARQ9GD00PBwBNDz8OLg4HAE0PTg8/DgcARg9OD00PBwBGD0cPTg8HAE4PQg4/DgcATg9PD0IOBwBHD08PTg8HAEcPSA9PDwcAUA9VDlEOBwBQD0kPVQ4HAEMPSQ9QDwcAQw9CD0kPBwBRD1EOUw4HAFEPUA9RDgcARA9QD1EPBwBED0MPUA8HAFIP1g1TDwcAUg/XDdYNBwBUD0wOVQ8HAFQPTQ5MDgcA2A1WD1cPBwDYDdUNVg8HAGsOWA9ZDwcAaw5tDlgPBwB+A1oPYwQHAH4DbA5aDwcAVQ+WDlsPBwBVD0wOlg4HAJwOVw9cDwcAnA7YDVcPBwBbD5cOXQ8HAFsPlg6XDgcAXQ+eDl4PBwBdD5cOng4HAJ4OXA9eDwcAng6cDlwPBwBTD50OXw8HAFMP1g2dDgcAXw+fDmAPBwBfD50Onw4HAGAPagRrBAcAYA+fDmoEBwBhD1UPYg8HAGEPVA9VDwcAVw9jD2QPBwBXD1YPYw8HAFkPZQ9mDwcAWQ9YD2UPBwBiD1sPZw8HAGIPVQ9bDwcAXA9kD2gPBwBcD1cPZA8HAGcPXQ9pDwcAZw9bD10PBwBpD14Pag8HAGkPXQ9eDwcAXg9oD2oPBwBeD1wPaA8HAPgNYg/7DQcA+A1hD2IPBwBkD/oN+Q0HAGQPYw/6DQcAZg9rD2wPBwBmD2UPaw8HAPsNZw+YDgcA+w1iD2cPBwBoD/kNmQ4HAGgPZA/5DQcAmA5pD5oOBwCYDmcPaQ8HAJoOag+bDgcAmg5pD2oPBwBqD5kOmw4HAGoPaA+ZDgcAbQ+EDk8OBwBtD24PhA4HAG8Obg9tDwcAbw6LDm4PBwBuD9kNhA4HAG4Pbw/ZDQcAiw5vD24PBwCLDnIObw8HAG8PmA3ZDQcAbw9wD5gNBwByDnAPbw8HAHIOcQ5wDwcAcA+ZDZgNBwBwD3EPmQ0HAHEOcQ9wDwcAcQ50DnEPBwBxD6sNmQ0HAHEPcg+rDQcAdA5yD3EPBwB0DnYOcg8HAHIPsg2rDQcAcg9zD7INBwB2DnMPcg8HAHYOdw5zDwcAcw+qDbINBwBzD3QPqg0HAHcOdA9zDwcAdw54DnQPBwB0D6gNqg0HAHQPdQ+oDQcAeA51D3QPBwB4DnkOdQ8HAHUPpg2oDQcAdQ92D6YNBwB5DnYPdQ8HAHkOeg52DwcAdw9PDksOBwB3D20PTw4HAG4ObQ93DwcAbg5vDm0PBwB4D0sOTQ4HAHgPdw9LDgcAbQ53D3gPBwBtDm4Odw8HAHkPTQ5UDwcAeQ94D00OBwBYD3gPeQ8HAFgPbQ54DwcAeg9UD2EPBwB6D3kPVA8HAGUPeQ96DwcAZQ9YD3kPBwB7D2EP+A0HAHsPeg9hDwcAaw96D3sPBwBrD2UPeg8HAHwP+A36DQcAfA97D/gNBwBsD3sPfA8HAGwPaw97DwcAfQ/6DWMPBwB9D3wP+g0HAGYPfA99DwcAZg9sD3wPBwB+D2MPVg8HAH4PfQ9jDwcAWQ99D34PBwBZD2YPfQ8HAH8PVg/VDQcAfw9+D1YPBwBrDn4Pfw8HAGsOWQ9+DwcAgA/VDdcNBwCAD38P1Q0HAGwOfw+ADwcAbA5rDn8PBwCBD9cNUg8HAIEPgA/XDQcAWg+AD4EPBwBaD2wOgA8HAI0E0w3HAgcAjQSCD9MNBwCPBIIPjQQHAI8Egw+CDwcAhA9TD4UPBwCED1IPUw8HAIUPXw+GDwcAhQ9TD18PBwCGD2APhw8HAIYPXw9gDwcAhw9rBJUEBwCHD2APawQHAIgPUg+EDwcAiA+BD1IPBwBjBIkPmAQHAGMEWg+JDwcAiQ+BD4gPBwCJD1oPgQ8HANMNhQ/UDQcA0w2ED4UPBwDUDYYPoA4HANQNhQ+GDwcAoA6HD6EOBwCgDoYPhw8HAKEOlQSnAwcAoQ6HD5UEBwCCD4QP0w0HAIIPiA+EDwcAmASDD48EBwCYBIkPgw8HAIMPiA+CDwcAgw+JD4gPBwCKD+wNiw8HAIoPjA/sDQcAyQ2MD4oPBwDJDfANjA8HAI0P6w3qDQcAjQ+OD+sNBwDyDY4PjQ8HAPIN8Q2ODwcAjg/eDesNBwCOD48P3g0HAPENjw+ODwcA8Q11Do8PBwCPD9wN3g0HAI8PkA/cDQcAdQ6QD48PBwB1DnMOkA8HAJAPDg/cDQcAkA+RDw4PBwBzDpEPkA8HAHMOcA6RDwcAkQ8QDw4PBwCRD5IPEA8HAHAOkg+RDwcAcA5/DpIPBwCSDxIPEA8HAJIPkw8SDwcAfw6TD5IPBwB/DsQNkw8HAJMPFA8SDwcAkw+UDxQPBwDEDZQPkw8HAMQNwQ2UDwcAlA8VDxQPBwCUD5UPFQ8HAMENlQ+UDwcAwQ3FDZUPBwCVD5YPFQ8HAJUPlw+WDwcAxQ2XD5UPBwDFDccNlw8HAJcPiw+WDwcAlw+KD4sPBwDHDYoPlw8HAMcNyQ2KDwcAOw+YDzoPBwA7D5kPmA8HADoPmg88DwcAOg+YD5oPBwA9D5kPOw8HAD0Pmw+ZDwcAPA+cDz8PBwA8D5oPnA8HAD4Pmw89DwcAPg+dD5sPBwA/D50PPg8HAD8PnA+dDwcAmQ+eD5gPBwCZD58Png8HAJgPoA+aDwcAmA+eD6APBwCbD58PmQ8HAJsPoQ+fDwcAmg+iD5wPBwCaD6APog8HAJ0PoQ+bDwcAnQ+jD6EPBwCcD6MPnQ8HAJwPog+jDwcAnw+kD54PBwCfD6UPpA8HAJ4Ppg+gDwcAng+kD6YPBwChD6UPnw8HAKEPpw+lDwcAoA+oD6IPBwCgD6YPqA8HAKMPpw+hDwcAow+pD6cPBwCiD6kPow8HAKIPqA+pDwcApQ+qD6QPBwClD6sPqg8HAKQPrA+mDwcApA+qD6wPBwCnD6sPpQ8HAKcPrQ+rDwcApg+uD6gPBwCmD6wPrg8HAKkPrQ+nDwcAqQ+vD60PBwCoD68PqQ8HAKgPrg+vDwcAqw+wD6oPBwCrD7EPsA8HAKoPsg+sDwcAqg+wD7IPBwCtD7EPqw8HAK0Psw+xDwcArA+0D64PBwCsD7IPtA8HAK8Psw+tDwcArw+1D7MPBwCuD7UPrw8HAK4PtA+1DwcAtg+3D7gPBwC2D7kPtw8HALgPug+7DwcAuA+3D7oPBwC8D7kPtg8HALwPvQ+5DwcAvg+9D7wPBwC+D78PvQ8HAMAPvw++DwcAwA/BD78PBwDCD8EPwA8HAMIPww/BDwcAuw/ED8UPBwC7D7oPxA8HAMUPlQqWCgcAxQ/ED5UKBwDGD5cKmQoHAMYPxw+XCgcAyA/JD8oPBwDID8sPyQ8HAMoPzA/NDwcAyg/JD8wPBwDND84Pzw8HAM0PzA/ODwcA0A/HD8YPBwDQD9EPxw8HAM8P0g/TDwcAzw/OD9IPBwDUD9EP0A8HANQP1Q/RDwcA0w/VD9QPBwDTD9IP1Q8HANYP1A/XDwcA1g/TD9QPBwDXD9AP2A8HANcP1A/QDwcA2Q/TD9YPBwDZD88P0w8HANgPxg/aDwcA2A/QD8YPBwCxD9sPsA8HALEP3A/bDwcAsA/dD7IPBwCwD9sP3Q8HALMP3A+xDwcAsw/eD9wPBwCyD98PtA8HALIP3Q/fDwcAtQ/eD7MPBwC1D+AP3g8HALQP4A+1DwcAtA/fD+APBwDcD+EP2w8HANwP4g/hDwcA2w/jD90PBwDbD+EP4w8HAN4P4g/cDwcA3g/kD+IPBwDdD+UP3w8HAN0P4w/lDwcA4A/kD94PBwDgD+YP5A8HAN8P5g/gDwcA3w/lD+YPBwDiD+cP4Q8HAOIP6A/nDwcA4Q/pD+MPBwDhD+cP6Q8HAOQP6A/iDwcA5A/qD+gPBwDjD+sP5Q8HAOMP6Q/rDwcA5g/qD+QPBwDmD+wP6g8HAOUP7A/mDwcA5Q/rD+wPBwDrD+cP7A8HAOsP6Q/nDwcA6A/sD+cPBwDoD+oP7A8HAO0Pzw/ZDwcA7Q/ND88PBwDND+4Pyg8HAM0P7Q/uDwcA7w/KD+4PBwDvD8gPyg8HANoPmQrDCgcA2g/GD5kKBwDLD+8P8A8HAMsPyA/vDwcA8Q/CD/IPBwDxD8MPwg8HAPMP1w/0DwcA8w/WD9cPBwDzD7cPuQ8HAPMP9A+3DwcA9A/XD9gPBwD0D9gP9Q8HAPQP9Q+6DwcA9A+6D7cPBwD2D/MPuQ8HAPYPuQ+9DwcA9Q/YD9oPBwD1D9oP9w8HAPUP9w/EDwcA9Q/ED7oPBwD4D+0P2Q8HAPgP2Q/2DwcA+A/2D70PBwD4D70Pvw8HAPgPvw/BDwcA+A/BD/kPBwD4D/kP7g8HAPgP7g/tDwcA+g/vD+4PBwD6D+4P+Q8HAMMP+g/5DwcAww/5D8EPBwD3D9oPwwoHAPcPwwrPCgcA9w/PCpUKBwD3D5UKxA8HAPsP+g/DDwcA+w/DD/EPBwD6D/sP8A8HAPoP8A/vDwcA8w/8D/0PBwDzD/0P1g8HAPYP/g/8DwcA9g/8D/MPBwD/D/4P9g8HAP8P9g/ZDwcA/Q//D9kPBwD9D9kP1g8HAPwPABABEAcA/A8BEP0PBwD8D/4PAhAHAPwPAhAAEAcAAxACEP4PBwADEP4P/w8HAAEQAxD/DwcAARD/D/0PBwDYDtsO3A4HANgO3A7aDgcA2w7dDt4OBwDbDt4O3A4HAAwPEw8VDwcADA8VD98NBwAVD5YP4A0HABUP4A3fDQcA5g3jDeENBwDmDeEN4g0HAM0Nzw3hDQcAzQ3hDecNBwCWD4sP7A0HAJYP7A3gDQcA6A3vDe0NBwDoDe0N5w0HAO8N8g3wDQcA7w3wDe0NBwCND+oN7A0HAI0P7A2MDwcA8g2ND4wPBwDyDYwP8A0HAB4CIAIiAgcAHgIiAh0CBwAeAhkCLgIHAB4CLgIwAgcAOQI7Ai8CBwA5Ai8CMAIHADkCOAJBAgcAOQJBAkMCBwBNAk4CRAIHAE0CRAJDAgcAWgJYAhwCBwBaAhwCHQIHAGUCYgJYAgcAZQJYAloCBwBNAksCuQkHAE0CuQm7CQcAxQnGCbwJBwDFCbwJuwkHAMUJwwnOCQcAxQnOCdAJBwDZCdoJzwkHANkJzwnQCQcA2QnXCeEJBwDZCeEJ4wkHAG4CcAJyAgcAbgJyAm0CBwBuAmkCfgIHAG4CfgKAAgcArASuBH8CBwCsBH8CgAIHAKwEqwS0BAcArAS0BLYEBwDABMEEtwQHAMAEtwS2BAcAzQTLBGwCBwDNBGwCbQIHAE0FUAVSBQcATQVSBUsFBwBNBUwFYQUHAE0FYQVgBQcASwVSBWYFBwBLBWYFYwUHAMAEvgTrCQcAwATrCe0JBwD3CfgJ7gkHAPcJ7gntCQcA9wn1CQAKBwD3CQAKAgoHAAsKDAoBCgcACwoBCgIKBwALCgkKEwoHAAsKEwoVCgcABBAFEAYQBwAEEAYQBxAHAAYQBRAIEAcABhAIEAkQBwAKEAsQDBAHAAoQDBANEAcADhANEAwQBwAOEAwQDxAHABAQDhAPEAcAEBAPEBEQBwASEBAQERAHABIQERATEAcAFBAVEBIQBwAUEBIQExAHABYQFxAVEAcAFhAVEBQQBwAWEAQQBxAHABYQBxAXEAcABhAYEBkQBwAGEBkQBxAHABoQGxAJEAcAGhAJEAoQBwAcEBoQChAHABwQChANEAcAHRAcEA0QBwAdEA0QDhAHAB4QHRAOEAcAHhAOEBAQBwAfEB4QEBAHAB8QEBASEAcAFRAgEB8QBwAVEB8QEhAHABcQIRAgEAcAFxAgEBUQBwAHEBkQIRAHAAcQIRAXEAcAGBAiECMQBwAYECMQGRAHACIQGBAbEAcAIhAbECQQBwAlECYQGhAHACUQGhAcEAcAJxAlEBwQBwAnEBwQHRAHACgQJxAdEAcAKBAdEB4QBwApECgQHhAHACkQHhAfEAcAIBAqECkQBwAgECkQHxAHACEQKxAqEAcAIRAqECAQBwAZECMQKxAHABkQKxAhEAcAIxAiECwQBwAjECwQLRAHAC4QJBAmEAcALhAmEC8QBwAvECYQJRAHAC8QJRAwEAcAMRAwECUQBwAxECUQJxAHADIQMRAnEAcAMhAnECgQBwAzEDIQKBAHADMQKBApEAcAKhA0EDMQBwAqEDMQKRAHACsQNRA0EAcAKxA0ECoQBwArECMQLRAHACsQLRA1EAcALRAsEDYQBwAtEDYQNxAHADYQLBAuEAcANhAuEDgQBwA5EC8QMBAHADkQMBA6EAcAOxA6EDAQBwA7EDAQMRAHADwQOxAxEAcAPBAxEDIQBwA9EDwQMhAHAD0QMhAzEAcANBA+ED0QBwA0ED0QMxAHADUQPxA+EAcANRA+EDQQBwA1EC0QNxAHADUQNxA/EAcAFhBAEEEQBwAWEEEQBBAHABQQQhBAEAcAFBBAEBYQBwAEEEEQQxAHAAQQQxAFEAcACBBEEEUQBwAIEEUQCxAHAAsQRRBGEAcACxBGEAwQBwAMEEYQRxAHAAwQRxAPEAcADxBHEEgQBwAPEEgQERAHABEQSBBJEAcAERBJEBMQBwATEEkQQhAHABMQQhAUEAcAQBBKEEsQBwBAEEsQQRAHAEIQTBBKEAcAQhBKEEAQBwBBEEsQTRAHAEEQTRBDEAcASRBOEEwQBwBJEEwQQhAHAEQQTxBQEAcARBBQEEUQBwBFEFAQURAHAEUQURBGEAcARhBREFIQBwBGEFIQRxAHAEcQUhBTEAcARxBTEEgQBwBIEFMQThAHAEgQThBJEAcANxA2EFQQBwA3EFQQVRAHAFYQOBA5EAcAVhA5EFcQBwBXEDkQOhAHAFcQOhBYEAcAWRBYEDoQBwBZEDoQOxAHAFoQWRA7EAcAWhA7EDwQBwBbEFoQPBAHAFsQPBA9EAcAPhBcEFsQBwA+EFsQPRAHAD8QXRBcEAcAPxBcED4QBwA/EDcQVRAHAD8QVRBdEAcAVRBUEF4QBwBVEF4QXxAHAF4QVBBWEAcAXhBWEGAQBwBhEFcQWBAHAGEQWBBiEAcAYhBYEFkQBwBiEFkQYxAHAGMQWRBaEAcAYxBaEGQQBwBkEFoQWxAHAGQQWxBlEAcAWxBcEGYQBwBbEGYQZRAHAFwQXRBnEAcAXBBnEGYQBwBdEFUQXxAHAF0QXxBnEAcAXhBoEGkQBwBeEGkQXxAHAGoQaxBgEAcAahBgEGEQBwBsEGoQYRAHAGwQYRBiEAcAbBBiEGMQBwBsEGMQbRAHAG0QYxBkEAcAbRBkEG4QBwBuEGQQZRAHAG4QZRBvEAcAZRBmEHAQBwBlEHAQbxAHAGYQZxBxEAcAZhBxEHAQBwBfEGkQcRAHAF8QcRBnEAcAaRBoEHIQBwBpEHIQcxAHAHIQaBBrEAcAchBrEHQQBwB1EGoQbBAHAHUQbBB2EAcAdhBsEG0QBwB2EG0QdxAHAHcQbRBuEAcAdxBuEHgQBwB4EG4QbxAHAHgQbxB5EAcAbxBwEHoQBwBvEHoQeRAHAHAQcRB7EAcAcBB7EHoQBwBxEGkQcxAHAHEQcxB7EAcAcxByEHwQBwBzEHwQfRAHAH4QdBB1EAcAfhB1EH8QBwB/EHUQdhAHAH8QdhCAEAcAgRCAEHYQBwCBEHYQdxAHAIIQgRB3EAcAghB3EHgQBwCDEIIQeBAHAIMQeBB5EAcAehCEEIMQBwB6EIMQeRAHAHsQhRCEEAcAexCEEHoQBwB7EHMQfRAHAHsQfRCFEAcAfRB8EH4QBwB9EH4QfxAHAIUQfRCDEAcAhRCDEIQQBwB9EH8QghAHAH0QghCDEAcAghB/EIAQBwCCEIAQgRAHAAsQChAJEAcACxAJEAgQBwAYEAYQCRAHABgQCRAbEAcAGhAmECQQBwAaECQQGxAHACwQIhAkEAcALBAkEC4QBwAvEDkQOBAHAC8QOBAuEAcABRBDEEQQBwAFEEQQCBAHAEMQTRBPEAcAQxBPEEQQBwBUEDYQOBAHAFQQOBBWEAcAVxBhEGAQBwBXEGAQVhAHAGgQXhBgEAcAaBBgEGsQBwBqEHUQdBAHAGoQdBBrEAcAfBByEHQQBwB8EHQQfhAHAIYQhxCIEAcAhhCIEIkQBwCIEIcQihAHAIgQihCLEAcAjBCNEI4QBwCMEI4QjxAHAJAQjxCOEAcAkBCOEJEQBwCSEJAQkRAHAJIQkRCTEAcAlBCSEJMQBwCUEJMQlRAHAJYQlxCUEAcAlhCUEJUQBwCYEJkQlxAHAJgQlxCWEAcAmBCGEIkQBwCYEIkQmRAHAIgQmhCbEAcAiBCbEIkQBwCcEJ0QixAHAJwQixCMEAcAnhCcEIwQBwCeEIwQjxAHAJ8QnhCPEAcAnxCPEJAQBwCgEJ8QkBAHAKAQkBCSEAcAoRCgEJIQBwChEJIQlBAHAJcQohChEAcAlxChEJQQBwCZEKMQohAHAJkQohCXEAcAiRCbEKMQBwCJEKMQmRAHAJoQpBClEAcAmhClEJsQBwCkEJoQnRAHAKQQnRCmEAcApxCoEJwQBwCnEJwQnhAHAKkQpxCeEAcAqRCeEJ8QBwCqEKkQnxAHAKoQnxCgEAcAqxCqEKAQBwCrEKAQoRAHAKIQrBCrEAcAohCrEKEQBwCjEK0QrBAHAKMQrBCiEAcAmxClEK0QBwCbEK0QoxAHAKUQpBCuEAcApRCuEK8QBwCwEKYQqBAHALAQqBCxEAcAsRCoEKcQBwCxEKcQshAHALMQshCnEAcAsxCnEKkQBwC0ELMQqRAHALQQqRCqEAcAtRC0EKoQBwC1EKoQqxAHAKwQthC1EAcArBC1EKsQBwCtELcQthAHAK0QthCsEAcArRClEK8QBwCtEK8QtxAHAK8QrhC4EAcArxC4ELkQBwC4EK4QsBAHALgQsBC6EAcAuxCxELIQBwC7ELIQvBAHAL0QvBCyEAcAvRCyELMQBwC+EL0QsxAHAL4QsxC0EAcAvxC+ELQQBwC/ELQQtRAHALYQwBC/EAcAthC/ELUQBwC3EMEQwBAHALcQwBC2EAcAtxCvELkQBwC3ELkQwRAHAJgQwhDDEAcAmBDDEIYQBwCWEMQQwhAHAJYQwhCYEAcAhhDDEMUQBwCGEMUQhxAHAIoQxhDHEAcAihDHEI0QBwCNEMcQyBAHAI0QyBCOEAcAjhDIEMkQBwCOEMkQkRAHAJEQyRDKEAcAkRDKEJMQBwCTEMoQyxAHAJMQyxCVEAcAlRDLEMQQBwCVEMQQlhAHAMIQzBDNEAcAwhDNEMMQBwDEEM4QzBAHAMQQzBDCEAcAwxDNEM8QBwDDEM8QxRAHAMsQ0BDOEAcAyxDOEMQQBwDJENEQ0hAHAMkQ0hDKEAcAyhDSENAQBwDKENAQyxAHAO8L8gvTEAcA7wvTENQQBwDxC/AL8wsHAPEL8wv0CwcA9AvzC/ULBwD0C/UL9gsHAAEM1RDUEAcAAQzUEPELBwACDAMM8gsHAAIM8gvvCwcA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AUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwIIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBOEE4gTjBOQE5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8EAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUlBSYFJwUoBSkFKgUrBSwFLQUuBS8FMAUxBTIFMwU0BTUFNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFZgVnBWgFaQVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBYwFjQWOBY8FkAWRBZIFkwWUBZUFlgWXBZgFmQWaBZsFnAWdBZ4FnwWgBaEFogWjBaQFpQWmBacFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtAW1BbYFtwW4BbkFugW7BbwFvQW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFyQXKBcsFzAXNBc4FzwXQBdEF0gXTBdQF1QXWBdcF2AXZBdoF2wXcBd0F3gXfBeAF4QXiBeMF5AXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF/AX9Bf4F/wUABgEGAgYDBgQGBQYGBgcGCAYJBgoGCwYMBg0GDgYPBhAGEQYSBhMGFAYVBhYGFwYYBhkGGgYbBhwGHQYeBh8GIAYhBiIGIwYkBiUGJgYnBigGKQYqBisGLAYtBi4GLwYwBjEGMgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGWQZaBlsGXAZdBl4GXwZgBmEGYgZjBmQGZQZmBmcGaAZpBmoGawZsBm0GbgZvBnAGcQZyBnMGdAZ1BnYGdwZ4BnkGegZ7BnwGfQZ+Bn8GgAaBBoIGgwaEBoUGhgaHBogGiQaKBosGjAaNBo4GjwaQBpEGkgaTBpQGlQaWBpcGmAaZBpoGmwacBp0GngafBqAGoQaiBqMGpAalBqYGpwaoBqkGqgarBqwGrQauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6BrsGvAa9Br4GvwbABsEGwgbDBsQGxQbGBscGyAbJBsoGywbMBs0GzgbPBtAG0QbSBtMG1AbVBtYG1wbYBtkG2gbbBtwG3QbeBt8G4AbhBuIG4wbkBuUG5gbnBugG6QbqBusG7AbtBu4G7wbwBvEG8gbzBvQG9Qb2BvcG+Ab5BvoG+wb8Bv0G/gb/BgAHAQcCBwMHBAcFBwYHBwcIBwkHCgcLBwwHDQcOBw8HEAcRBxIHEwcUBxUHFgcXBxgHGQcaBxsHHAcdBx4HHwcgByEHIgcjByQHJQcmBycHKAcpByoHKwcsBy0HLgcvBzAHMQcyBzMHNAc1BzYHNwc4BzkHOgc7BzwHPQc+Bz8HQAdBB0IHQwdEB0UHRgdHB0gHSQdKB0sHTAdNB04HTwdQB1EHUgdTB1QHVQdWB1cHWAdZB1oHWwdcB10HXgdfB2AHYQdiB2MHZAdlB2YHZwdoB2kHagdrB2wHbQduB28HcAdxB3IHcwd0B3UHdgd3B3gHeQd6B3sHfAd9B34HfweAB4EHggeDB4QHhQeGB4cHiAeJB4oHiweMB40HjgePB5AHkQeSB5MHlAeVB5YHlweYB5kHmgebB5wHnQeeB58HoAehB6IHowekB6UHpgenB6gHqQeqB6sHrAetB64HrwewB7EHsgezB9AV0RXSFdMV1BXVFdYV1xXYFdkV2hXbFdwV3RXeFd8V4BXhFeIV4xXkFeUV5hXnFegV6RXqFesV7BXtFe4V7xXwFfEV8hXzFfQV9RX2FfcV+BX5FfoV+xX8Ff0V/hX/FQAWARYCFgMWBBYFFgYWBxYIFgkWChYLFgwWDRYOFg8WEBYRFhIWExYUFhUWFhYXFhgWGRYaFhsWHBYdFh4WHxYgFiEWIhYjFiQWJRYmFicWKBYpFioWKxYsFi0WLhYvFjAWMRYyFjMWNBY1FjYWNxY4FjkWOhY7FjwWPRY+Fj8WQBZBFkIWQxZEFkUWRhZHFkgWSRZKFksWTBZNFk4WTxZQFlEWUhZTFlQWVRZWFlcWWBZZFloWWxZcFl0WXhZfFmAWYRZiFmMWZBZlFmYWZxZoFmkWahZrFmwWbRZuFm8WcBZxFnIWcxZ0FnUWdhZ3FngWeRZ6FnsWfBZ9Fn4WfxaAFoEWghaDFoQWhRaGFocWiBaJFooWixaMFo0WjhaPFpAWkRaSFpMWlBaVFpYWlxaYFpkWmhabFpwWnRaeFp8WoBahFqIWoxakFqUWphanFqgWqRaqFqsWrBatFq4WrxawFrEWshazFrQWtRa2FrcWuBa5FroWuxa8Fr0Wvha/FsAWwRbCFsMWxBbFFsYWxxbIFskWyhbLFswWzRbOFs8W0BbRFtIW0xbUFtUW1hbXFtgW2RbaFtsW3BbdFt4W3xbgFuEW4hbjFuQW5RbmFucW6BbpFuoW6xbsFu0W7hbvFvAW8RbyFvMW9Bb1FvYW9xb4FvkW+hb7FvwW/Rb+Fv8WABcBFwIXAxcEFwUXBhcHFwgXCRcKFwsXDBcNFw4XDxcQFxEXEhcTFxQXFRcWFxcXGBcZFxoXGxccFx0XHhcfFyAXIRciFyMXJBclFyYXJxcoFykXKhcrFywXLRcuFy8XMBcxFzIXMxc0FzUXNhc3FzgXORc6FzsXPBc9Fz4XPxdAF0EXQhdDF0QXRRdGF0cXSBdJF0oXSxdMF00XThdPF1AXURdSF1MXVBdVF1YXVxdYF1kXWhdbF1wXXRdeF18XYBdhF2IXYxdkF2UXZhdnF2gXaRdqF2sXbBdtF24XbxdwF3EXchdzF3QXdRd2F3cXeBd5F3oXexd8F30Xfhd/F4AXgReCF4MXhBeFF4YXhxeIF4kXiheLF4wXjReOF48XkBeRF5IXkxeUF5UXlheXF5gXmReaF5sXnBedF54XnxegF6EXohejF6QXpRemF6cXqBepF6oXqxesF60XrhevF7AXsReyF7MXtBe1F7YXtxe4F7kXuhe7F7wXvRe+F78XwBfBF8IXwxfEF8UXxhfHF8gXyRfKF8sXzBfNF84XzxfQF9EX0hfTF9QX1RfWF9cX2BfZF9oX2xfcF90X3hffF+AX4RfiF+MX5BflF+YX5xfoF+kX6hfrF+wX7RfuF+8X8BfxF/IX8xf0F/UX9hf3F/gX+Rf6F/sX/Bf9F/4X/xcAGAEYAhgDGAQYBRgGGAcYCBgJGAoYCxgMGA0YDhgPGBAYERgSGBMYFBgVGBYYFxgYGBkYGhgbGBwYHRgeGB8YIBghGCIYIxgkGCUYJhgnGCgYKRgqGCsYLBgtGC4YLxgwGDEYMhgzGDQYNRg2GDcYOBg5GDoYOxg8GD0YPhg/GEAYQRhCGEMYRBhFGEYYRxhIGEkYShhLGEwYTRhOGE8YUBhRGFIYUxhUGFUYVhhXGFgYWRhaGFsYXBhdGF4YXxhgGGEYYhhjGGQYZRhmGGcYaBhpGGoYaxhsGG0YbhhvGHAYcRhyGHMYdBh1GHYYdxh4GHkYehh7GHwYfRh+GH8YgBiBGIIYgxiEGIUYhhiHGIgYiRiKGIsYjBiNGI4YjxiQGJEYkhiTGJQYlRiWGJcYmBiZGJoYmxicGJ0YnhifGKAYoRiiGKMYpBilGKYYpxioGKkYqhirGKwYrRiuGK8YsBixGLIYsxi0GLUYthi3GLgYuRi6GLsYvBi9GL4YvxjAGMEYwhjDGMQYxRjGGMcYyBjJGMoYyxjMGM0YzhjPGNAY0RjSGNMY1BjVGNYY1xjYGNkY2hjbGNwY3RjeGN8Y4BjhGOIY4xjkGOUY5hjnGOgY6RjqGOsY7BjtGO4Y7xjwGPEY8hjzGPQY9Rj2GPcY+Bj5GPoY+xj8GP0Y/hj/GAAZARkCGQMZBBkFGQYZBxkIGQkZChkLGQwZDRkOGQ8ZEBkRGRIZExkUGRUZFhkXGRgZGRkaGRsZHBkdGR4ZHxkgGSEZIhkjGSQZJRkmGScZKBkpGSoZKxksGS0ZLhkvGTAZMRkyGTMZNBk1GTYZNxk4GTkZOhk7GTwZPRk+GT8ZQBlBGUIZQxlEGUUZRhlHGUgZSRlKGUsZTBlNGU4ZTxlQGVEZUhlTGVQZVRlWGVcZWBlZGVoZWxlcGV0ZXhlfGWAZYRliGWMZZBllGWYZZxloGWkZahlrGWwZbRluGW8ZcBlxGXIZcxl0GXUZdhl3GXgZeRl6GXsZfBl9GX4ZfxmAGYEZghmDGYQZhRmGGYcZiBmJGYoZixmMGY0ZjhmPGZAZkRmSGZMZlBmVGZYZlxmYGZkZmhmbGZwZnRmeGZ8ZoBmhGaIZoxmkGaUZphmnGagZqRmqGasZrBmtGa4ZrxmwGbEZshmzGbQZtRm2GbcZuBm5GboZuxm8Gb0Zvhm/GcAZwRnCGcMZxBnFGcYZxxnIGckZyhnLGcwZzRnOGc8Z0BnRGdIZ0xnUGdUZ1hnXGdgZ2RnaGdsZ3BndGd4Z3xngGeEZ4hnjGeQZ5RnmGecZ6BnpGeoZ6xnsGe0Z7hnvGfAZ8RnyGfMZ9Bn1GfYZ9xn4GfkZ+hn7GfwZ/Rn+Gf8ZABoBGgIaAxoEGgUaBhoHGggaCRoKGgsaDBoNGg4aDxoQGhEaEhoTGhQaFRoWGhcaGBoZGhoaGxocGh0aHhofGiAaIRoiGiMaJBolGiYaJxooGikaKhorGiwaLRouGi8aMBoxGjIaMxo0GjUaNho3GjgaORo6GjsaPBo9Gj4aPxpAGkEaQhpDGkQaRRpGGkcaSBpJGkoaSxpMGk0aThpPGlAaURpSGlMaVBpVGlYaVxpYGlkaWhpbGlwaXRpeGl8aYBphGmIaYxpkGmUaZhpnGmgaaRpqGmsabBptGm4abxpwGnEachpzGnQadRp2GncaeBp5Gnoaexp8Gn0afhp/GoAagRqCGoMahBqFGoYahxqIGokaihqLGowajRqOGo8akBqRGpIakxqUGpUalhqXGpgamRqaGpsanBqdGp4anxqgGqEaohqjGqQapRqmGqcaqBqpGqoaqxqsGq0arhqvGrAasRqyGrMatBq1GrYatxq4Grkauhq7GrwavRq+Gr8awBrBGsIawxrEGsUaxhrHGsgayRrKGssazBrNGs4azxrQGtEa0hrTGtQa1RrWGtca2BrZGtoa2xrcGt0a3hrfGuAa4RriGuMa5BrlGuYa5xroGuka6hrrGuwa7RruGu8a8BrxGvIa8xr0GvUa9hr3Gvga+Rr6Gvsa/Br9Gv4a/xoAGwEbAhsDGwQbBRsGGwcbCBsJGwobCxsMGw0bDhsPGxAbERsSGxMbFBsVGxYbFxsYGxkbGhsbGxwbHRseGx8bIBshGyIbIxskGyUbJhsnGygbKRsqGysbLBstGy4bLxswGzEbMhszGzQbNRs2GzcbOBs5GzobOxs8Gz0bPhs/G0AbQRtCG0MbRBtFG0YbRxtIG0kbShtLG0wbTRsYHBkcGhwbHBwcHRweHB8cIBwhHCIcIxwkHCUcJhwnHCgcKRwqHCscLBwtHDBB9QEAAHJhdjQt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CScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJMEGtBgAAcmF2NC1zaGllbGRzAEwDiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCuYK5wroCukK6grrCuwK7QruCu8K8ArxCvIK8wr0CvUK9gr3CvgK+Qr6CvsK/Ar9Cv4K/woACwELAgsDCwQLBQsGCwcLCAsJCwoLCwsMCw0LDgsPCxALEQsSCxMLFAsVCxYLFwsYCxkLGgsbCxwLHQseCx8LIAshCyILIwskCyULJgsnCygLKQsqCysLLAstCy4LLwswCzELMgszCzQLNQs2CzcLOAs5CzoLOws8Cz0LPgs/C0ALQQtCC0MLRAtFC0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtXC1gLWQtaC1sLXAtdC14LXwswETERMhEzETQRNRE2ETcROBE5EToROxE8ET0RPhE/EUARQRFCEUMRRBFFEUYRRxFIEUkRShFLEUwRTRFOEU8RUBFREVIRUxFUEVURVhFXEVgRWRFaEVsRXBFdEV4RXxFgEWERYhFjEWQRZRFmEWcRaBFpEWoRaxFsEW0RbhFvEXARcRFyEXMRdBF1EXYRdxF4EXkRehF7EXwRfRF+EX8RgBGBEYIRgxGEEYURhhGHEYgRiRGKEYsRjBGNEY4RjxGQEZERkhGTEZQRlRGWEZcRmBGZEZoRmxGcEZ0RnhGfEaARoRGiEaMRpBGlEaYRpxGoEakRqhGrEawRrRGuEa8RsBGxEbIRsxG0EbURthG3EbgRuRG6EbsRvBG9Eb4RvxHAEcERwhHDEcQRxRHGEccRyBHJEcoRyxHMEc0RzhHPEdAR0RHSEdMR1BHVEdYR1xHYEdkR2hHbEdwR3RHeEd8R4BHhEeIR4xHkEeUR5hHnEegR6RHqEesR7BHtEe4R7xHwEfER8hHzEfQR9RH2EfcR+BH5EfoR+xH8Ef0R/hH/ESgSKRIqEisSLBItEi4SLxIwEjESMhIzEjQSNRI2EjcSOBI5EjoSOxI8Ej0SPhI/EkASQRJCEkMSRBJFEkYSRxJIEkkSShJLEkwSTRJOEk8SPhQ/FEAUQRRCFEMURBRFFEYURxRIFEkUShRLFEwUTRROFE8UUBRRFFIUUxSKG4sbjBuNG44bjxuQG5EbkhuTG5QblRuWG5cbmBuZG5obmxucG50bnhufG6AboRuiG6MbpBulG6YbpxuoG6kbqhurG6wbrRuuG68bsBuxG9ob2xvcG90b3hvfG+Ab4RviG+Mb5BvlG+Yb5xvoG+kb6hvrG+wb7RvuG+8b8BvxG/Ib8xv0G/Ub9hv3G/gb+Rv6G/sb/Bv9G/4b/xsAHAEcAhwDHAQcBRwGHAccCBwJHAocCxwMHA0cDhwPHBAcERwSHBMcFBwVHBYcFxwwQSwKAAByYXY0LWNocm9tZQAMBWALYQtiC2MLZAtlC2YLZwtoC2kLagtrC2wLbQtuC28LcAtxC3ILcwt0C3ULdgt3C3gLeQt6C3sLfAt9C34LfwuAC4ELgguDC4QLhQuGC4cLiAuJC4oLiwuMC40LjguPC5ALkQuSC5MLlAuVC5YLlwuYC5kLmgubC5wLnQueC58LoAuhC6ILowukC6ULpgunC6gLqQuqC6sLrAutC64LrwuwC7ELsguzC7QLtQu2C7cLuAu5C7oLuwu8C70Lvgu/C8ALwQvCC8MLxAvFC8YLxwvIC8kLygvLC8wLzQvOC88L0AvRC9IL0wvUC9UL1gvXC9gL2QvaC9sL3AvdC94L3wvgC+EL4gvjC+QL5QvmC+cL6AvpC+oL6wvsC+0L7gvvC/AL8QvyC/ML9Av1C/YL9wv4C/kL+gv7C/wL/Qv+C/8LAAwBDAIMAwwEDAUMBgwHDAgMCQwKDAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwlDCYMJwwoDCkMKgwrDCwMLQwuDC8MMAwxDDIMMww0DDUMNgw3DDgMOQw6DDsMPAw9DD4MPwxADEEMQgxDDEQMRQxGDEcMSAxJDEoMSwxMDE0MTgxPDFAMUQxSDFMMVAxVDFYMVwxYDFkMWgxbDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxnDGgMaQxqDGsMbAxtDG4MbwxwDHEMcgxzDHQMdQx2DHcMeAx5DHoMewx8DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyRDJIMkwyUDJUMlgyXDJgMmQyaDJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0MrgyvDLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MwAzBDMIMwwzEDMUMxgzHDMgMyQzKDMsMzAzNDM4MzwzQDNEM0gzTDNQM1QzWDNcM2AzZDNoM2wzcDN0M3gzfDOAM4QziDOMM5AzlDOYM5wzoDOkM6gzrDOwM7QzuDO8M8AzxDPIM8wz0DPUM9gz3DPgM+Qz6DPsM/Az9DP4M/wwADQENAg0DDQQNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0tDS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDUwNTQ1ODU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1pDWoNaw1sDW0Nbg1vDXANcQ1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NgA2BDYINgw2EDYUNhg2HDYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw3ADcENwg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDdwN3Q3eDd8N4A3hDeIN4w3kDeUN5g3nDegN6Q3qDesN7A3tDe4N7w3wDfEN8g3zDfQN9Q32DfcN+A35DfoN+w38Df0N/g3/DQAOAQ4CDgMOBA4FDgYOBw4IDgkOCg4LDgwODQ4ODg8OEA4RDhIOEw4UDhUOFg4XDhgOGQ4aDhsOHA4dDh4OHw4gDiEOIg4jDiQOJQ4mDicOKA4pDioOKw4sDi0OLg4vDjAOMQ4yDjMONA41DjYONw44DjkOOg47DjwOPQ4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcOWA5ZDloOWw5cDl0OXg5fDmAOYQ5iDmMOZA5lDmYOZw5oDmkOag5rDmwObQ5uDm8OcA5xDnIOcw50DnUOdg53DngOeQ56DnsOfA59Dn4Ofw6ADoEOgg6DDoQOhQ6GDocOiA6JDooOiw6MDo0Ojg6PDpAOkQ6SDpMOlA6VDpYOlw6YDpkOmg6bDpwOnQ6eDp8OoA6hDqIOow6kDqUO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AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAAGAAAABgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAYAAAAGAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAAAABAAAAAQAAAAEAAAABAAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAGAAAABgAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAGAAAABgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAcAAAAHAAAAAQAAAAEAAAAHAAAABQAAAAEAAAABAAAABQAAAAUAAAABAAAAAQAAAAUAAAAFAAAAAQAAAAEAAAAFAAAABQAAAAEAAAABAAAABwAAAAcAAAABAAAAAQAAAAcAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAADAAAAAQAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAADAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABwAAAAcAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAGAAAAAgAAAAYAAAAGAAAABAAAAAYAAAAEAAAABAAAAAQAAAABAAAAAQAAAAEAAAABAAAABQAAAAUAAAAEAAAABAAAAAEAAAABAAAAAQAAAAEAAAACAAAAAwAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAHAAAABwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAQAAAAEAAAABQAAAAUAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAAAAAQAAAAUAAAAFAAAABQAAAAEAAAABAAAAAQAAAAEAAAAEAAAABAAAAAUAAAAFAAAABAAAAAQAAAAFAAAABAAAAAUAAAAFAAAABQAAAAUAAAABAAAAAQAAAAEAAAABAAAABQAAAAUAAAABAAAAAQAAAAUAAAAFAAAAAQAAAAUAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAkAAAABAAAACgAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAABAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB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GAAXABYABwAYABkAFwAHABoAEQAbAAcAGgAQABEABwAcABsAHQAHABwAGgAbAAcAHgAcAB0ABwAeAB8AHAAHACAAGQAYAAcAIAAhABkABwAiACEAIAAHACIAIwAhAAcAJAAfAB4ABwAkAAYAHwAHACUABgAkAAcAJQAJAAYABwAUAAMAAAAHABQAEwADAAcAAgAUAAAABwACABYAFAAHAAQAFgACAAcABAAYABYABwALAAkAJQAHAAsADQAJAAcADAAmACcABwAMAAsAJgAHABEAJwAoAAcAEQAMACcABwAOABgABAAHAA4AIAAYAAcADwAgAA4ABwAPACIAIAAHABsAKAApAAcAGwARACgABwAdACkAKgAHAB0AGwApAAcAKwAsAC0ABwArAC4ALAAHAC8ALgArAAcALwAwAC4ABwAxADAALwAHADEAMgAwAAcAMwA0ADUABwAzADYANAAHADYAMgA0AAcANgAwADIABwA3ADYAMwAHADcAOAA2AAcAOAAwADYABwA4AC4AMAAHADkAOAA3AAcAOQA6ADgABwA6AC4AOAAHADoALAAuAAcAOwA8AD0ABwA7AD4APAAHAD4APwA8AAcAPgBAAD8ABwBBAD4AOwAHAEEAQgA+AAcAQgBAAD4ABwBCAEMAQAAHAEQAQgBBAAcARABFAEIABwBFAEMAQgAHAEUARgBDAAcARwBFAEQABwBHAEgARQAHAEgARgBFAAcASABJAEYABwBKAEgARwAHAEoASwBIAAcASwBJAEgABwBLAEwASQAHAE0ASwBKAAcATQBOAEsABwBOAEwASwAHAE4ATwBMAAcAUABOAE0ABwBQAFEATgAHAFEATwBOAAcAUQBSAE8ABwBDAFMAQAAHAEMAVABTAAcAVAAtAFMABwBUAFUALQAHAEYAVABDAAcARgBWAFQABwBWAFUAVAAHAFYAVwBVAAcASQBWAEYABwBJAFgAVgAHAFgAVwBWAAcAWABZAFcABwBMAFgASQAHAEwAWgBYAAcAWgBZAFgABwBaAFsAWQAHAE8AWgBMAAcATwBcAFoABwBcAFsAWgAHAFwAXQBbAAcAUgBcAE8ABwBSAF4AXAAHAF4AXQBcAAcAXgBfAF0ABwBAAGAAPwAHAEAAUwBgAAcAUwAsAGAABwBTAC0ALAAHAD8AYQA8AAcAPwBgAGEABwBgADoAYQAHAGAALAA6AAcAPABiAD0ABwA8AGEAYgAHAGEAOQBiAAcAYQA6ADkABwBjAGQAZQAHAGMAZgBkAAcAZwBlAGgABwBnAGMAZQAHAGkAaABqAAcAaQBnAGgABwBrAGoAbAAHAGsAaQBqAAcAbQBsAG4ABwBtAGsAbAAHAG8AbgBwAAcAbwBtAG4ABwBxAGYAYwAHAHEAcgBmAAcAcwBjAGcABwBzAHEAYwAHAHQAZwBpAAcAdABzAGcABwB1AGkAawAHAHUAdABpAAcAdgBrAG0ABwB2AHUAawAHAHcAbQBvAAcAdwB2AG0ABwB4AGQAZgAHAHgAeQBkAAcAZgB6AHgABwBmAHIAegAHAHsAbgB8AAcAewBwAG4ABwB8AGwAfQAHAHwAbgBsAAcAfQBqAH4ABwB9AGwAagAHAH4AaAB/AAcAfgBqAGgABwB/AGUAgAAHAH8AaABlAAcAgABkAIEABwCAAGUAZAAHAIEAeQCCAAcAgQBkAHkABwCCAHgAgwAHAIIAeQB4AAcAgwB6AIQABwCDAHgAegAHAIUAgQCGAAcAhQCAAIEABwCHAIAAhQAHAIcAfwCAAAcAiAB/AIcABwCIAH4AfwAHAIkAfgCIAAcAiQB9AH4ABwCKAH0AiQAHAIoAfAB9AAcAiwB8AIoABwCLAHsAfAAHADEAjAAyAAcAMQCGAIwABwCGAIIAjAAHAIYAgQCCAAcAMgCNADQABwAyAIwAjQAHAIwAgwCNAAcAjACCAIMABwA0AI4ANQAHADQAjQCOAAcAjQCEAI4ABwCNAIMAhAAHAI8AkACRAAcAjwCSAJAABwCSAJMAkAAHAJIAlACTAAcAlACVAJMABwCUAJYAlQAHAJcAmACZAAcAlwCaAJgABwCWAJoAlwAHAJYAlACaAAcAmgCbAJgABwCaAJwAmwAHAJQAnACaAAcAlACSAJwABwCcAJ0AmwAHAJwAngCdAAcAkgCeAJwABwCSAI8AngAHAJ8AoAChAAcAnwCiAKAABwCjAKIAnwAHAKMApACiAAcAogClAKAABwCiAKYApQAHAKQApgCiAAcApACnAKYABwCmAKgApQAHAKYAqQCoAAcApwCpAKYABwCnAKoAqQAHAKkAqwCoAAcAqQCsAKsABwCqAKwAqQAHAKoArQCsAAcArACuAKsABwCsAK8ArgAHAK0ArwCsAAcArQCwAK8ABwCvALEArgAHAK8AsgCxAAcAsACyAK8ABwCwALMAsgAHALIAUACxAAcAsgBRAFAABwCzAFEAsgAHALMAUgBRAAcAtACnAKQABwC0ALUApwAHAJEAtQC0AAcAkQC2ALUABwC1AKoApwAHALUAtwCqAAcAtgC3ALUABwC2ALgAtwAHALcArQCqAAcAtwC5AK0ABwC4ALkAtwAHALgAugC5AAcAuQCwAK0ABwC5ALsAsAAHALoAuwC5AAcAugC8ALsABwC7ALMAsAAHALsAvQCzAAcAvAC9ALsABwC8AL4AvQAHAL0AUgCzAAcAvQBeAFIABwC+AF4AvQAHAL4AXwBeAAcAvwCkAKMABwC/ALQApAAHAI8AtAC/AAcAjwCRALQABwDAAKMAnwAHAMAAvwCjAAcAngC/AMAABwCeAI8AvwAHAMEAnwChAAcAwQDAAJ8ABwCdAMAAwQAHAJ0AngDAAAcAwgDDAMQABwDCAMUAwwAHAMQAxgDHAAcAxADDAMYABwDHAMgAyQAHAMcAxgDIAAcAyQDKAMsABwDJAMgAygAHAMsAzADNAAcAywDKAMwABwDNAG8AcAAHAM0AzABvAAcAxQDOAMMABwDFAM8AzgAHAMMA0ADGAAcAwwDOANAABwDGANEAyAAHAMYA0ADRAAcAyADSAMoABwDIANEA0gAHAMoA0wDMAAcAygDSANMABwDMAHcAbwAHAMwA0wB3AAcAwgDUAMUABwDCANUA1AAHANYAxQDUAAcA1gDPAMUABwDNAHsA1wAHAM0AcAB7AAcAywDXANgABwDLAM0A1wAHAMkA2ADZAAcAyQDLANgABwDHANkA2gAHAMcAyQDZAAcAxADaANsABwDEAMcA2gAHAMIA2wDcAAcAwgDEANsABwDVANwA3QAHANUAwgDcAAcA1ADdAN4ABwDUANUA3QAHANYA3gDfAAcA1gDUAN4ABwDcAOAA4QAHANwA2wDgAAcA2wDiAOAABwDbANoA4gAHANoA4wDiAAcA2gDZAOMABwDZAOQA4wAHANkA2ADkAAcA2ADlAOQABwDYANcA5QAHANcAiwDlAAcA1wB7AIsABwDmAJUAlgAHAOYA4QCVAAcA3QDhAOYABwDdANwA4QAHAOcAlgCXAAcA5wDmAJYABwDeAOYA5wAHAN4A3QDmAAcA6ACXAJkABwDoAOcAlwAHAN8A5wDoAAcA3wDeAOcABwDpAOoA6wAHAOkA7ADqAAcA7QDsAOkABwDtAO4A7AAHAO8A8ADxAAcA7wDyAPAABwDzAPQA9QAHAPMA9gD0AAcA9wDvAPEABwD3APgA7wAHAPkA6gDsAAcA+QD6AOoABwD7AOwA7gAHAPsA+QDsAAcA/ADuAO0ABwD8APsA7gAHAP0A9gDzAAcA/QD+APYABwD/APgA9wAHAP8AAAH4AAcAAQH6APkABwABAQIB+gAHAAMB+QD7AAcAAwEBAfkABwAEAfsA/AAHAAQBAwH7AAcABQH+AP0ABwAFAQYB/gAHAAcBAAH/AAcABwEIAQABBwAJAQIBAQEHAAkBCgECAQcACwEBAQMBBwALAQkBAQEHAAwBAwEEAQcADAELAQMBBwANAQYBBQEHAA0BDgEGAQcADwEIAQcBBwAPARABCAEHABEBCgEJAQcAEQESAQoBBwATAQkBCwEHABMBEQEJAQcAFAELAQwBBwAUARMBCwEHABUBFgEXAQcAFQEYARYBBwAZARUBFwEHABkBGgEVAQcAGwEaARkBBwAbARwBGgEHAB0BHAEbAQcAHQEeARwBBwAfAR4BHQEHAB8BIAEeAQcAFgEhARcBBwAWASIBIQEHABcBIwEZAQcAFwEhASMBBwAZASQBGwEHABkBIwEkAQcAGwElAR0BBwAbASQBJQEHAB0BJgEfAQcAHQElASYBBwAnASgBKQEHACcBKgEoAQcAKwEqAScBBwArASwBKgEHAC0BLAErAQcALQEuASwBBwAvAS4BLQEHAC8BMAEuAQcAMQEwAS8BBwAxATIBMAEHADMBNAE1AQcAMwE2ATQBBwA3ATMBOAEHADcBNgEzAQcAOQEzATUBBwA5AToBMwEHADgBOgE7AQcAOAEzAToBBwA8AToBOQEHADwBPQE6AQcAOwE9AT4BBwA7AToBPQEHAD8BPQE8AQcAPwFAAT0BBwA+AUABQQEHAD4BPQFAAQcAQgFAAT8BBwBCAUMBQAEHAEEBQwFEAQcAQQFAAUMBBwAVAUUBGAEHABUBRgFFAQcARwFIAUkBBwBHAUoBSAEHABoBRgEVAQcAGgFLAUYBBwBJAUwBTQEHAEkBSAFMAQcAHAFLARoBBwAcAU4BSwEHAE0BTwFQAQcATQFMAU8BBwAeAU4BHAEHAB4BUQFOAQcAUAFSAVMBBwBQAU8BUgEHACABUQEeAQcAIAFUAVEBBwBTAVUBVgEHAFMBUgFVAQcAKgE0ASgBBwAqATUBNAEHAEcBJwEpAQcARwFJAScBBwBXAVgBWQEHAFcBWgFYAQcALAE1ASoBBwAsATkBNQEHAEkBKwEnAQcASQFNASsBBwAuATkBLAEHAC4BPAE5AQcATQEtASsBBwBNAVABLQEHADABPAEuAQcAMAE/ATwBBwBQAS8BLQEHAFABUwEvAQcAMgE/ATABBwAyAUIBPwEHAFMBMQEvAQcAUwFWATEBBwBbAVwBXQEHAFsBXgFcAQcAXgFfAVwBBwBeAWABXwEHAGEBXgFbAQcAYQFiAV4BBwBiAWABXgEHAGIBYwFgAQcAZAFiAWEBBwBkAWUBYgEHAGUBYwFiAQcAZQFmAWMBBwBdAWcBaAEHAF0BXAFnAQcAXAFpAWcBBwBcAV8BaQEHAGgBagFrAQcAaAFnAWoBBwBnAWwBagEHAGcBaQFsAQcA+ABtAe8ABwD4AG4BbQEHAAABbgH4AAcAAAFvAW4BBwAIAW8BAAEHAAgBcAFvAQcAEAFwAQgBBwAQAXEBcAEHAO8AcgHyAAcA7wBtAXIBBwD3AHMB/wAHAPcAdAFzAQcAdAE+AXMBBwB0ATsBPgEHAPEAdAH3AAcA8QB1AXQBBwB1ATsBdAEHAHUBOAE7AQcA8AB1AfEABwDwAHYBdQEHAHYBOAF1AQcAdgE3ATgBBwD/AHcBBwEHAP8AcwF3AQcAcwFBAXcBBwBzAT4BQQEHAAcBeAEPAQcABwF3AXgBBwB3AUQBeAEHAHcBQQFEAQcAeQF6AXsBBwB5AXwBegEHAHsBfQF+AQcAewF6AX0BBwB/AYABgQEHAH8BggGAAQcAggGDAYABBwCCAYQBgwEHAIUBhgGHAQcAhQGIAYYBBwCIAYkBhgEHAIgBigGJAQcAiwGMAY0BBwCLAY4BjAEHAI8BkAGRAQcAjwGSAZABBwCMAZMBjQEHAIwBlAGTAQcAhQGVAYgBBwCFAZYBlQEHAIgBlwGKAQcAiAGVAZcBBwCKAZgBiQEHAIoBlwGYAQcAkgGZAZABBwCSAZoBmQEHAJQBmwGTAQcAlAGcAZsBBwCWAZ0BlQEHAJYBngGdAQcAlQGfAZcBBwCVAZ0BnwEHAJcBoAGYAQcAlwGfAaABBwChAaIBowEHAKEBpAGiAQcAogGlAaMBBwCiAaYBpQEHAKYBpwGlAQcApgGoAacBBwCpAaEBowEHAKkBqgGhAQcAqwGjAaUBBwCrAakBowEHAKwBpQGnAQcArAGrAaUBBwCtAa4BrwEHAK0BsAGuAQcAsAGxAa4BBwCwAbIBsQEHALIBswGxAQcAsgG0AbMBBwC1AbYBtwEHALUBuAG2AQcAtgG5AboBBwC2AbgBuQEHALYBuwG3AQcAtgG8AbsBBwC8AboBvQEHALwBtgG6AQcAvAG+AbsBBwC8Ab8BvgEHAL8BvQHAAQcAvwG8Ab0BBwDBAaIBpAEHAMEBwgGiAQcAwgHDAcQBBwDCAcEBwwEHAMIBpgGiAQcAwgHFAaYBBwDFAcQBxgEHAMUBwgHEAQcAxQGoAaYBBwDFAccBqAEHAMcBxgHIAQcAxwHFAcYBBwC1AbABrQEHALUBtwGwAQcArgHDAa8BBwCuAcQBwwEHAMkBygHLAQcAyQHMAcoBBwC3AbIBsAEHALcBuwGyAQcAsQHEAa4BBwCxAcYBxAEHALsBtAGyAQcAuwG+AbQBBwCzAcYBsQEHALMByAHGAQcAzQHOAc8BBwDNAdABzgEHANEB0AHNAQcA0QHSAdABBwDTAc8B1AEHANMBzQHPAQcA1QHNAdMBBwDVAdEBzQEHANYB1AHXAQcA1gHTAdQBBwDYAdMB1gEHANgB1QHTAQcA2QGUAYwBBwDZAdoBlAEHANoBnAGUAQcA2gHbAZwBBwDcAYwBjgEHANwB2QGMAQcA3QGTAZsBBwDdAd4BkwEHAMAB3gHdAQcAwAG9Ad4BBwDeAY0BkwEHAN4B3wGNAQcAvQHfAd4BBwC9AboB3wEHAN8BiwGNAQcA3wHgAYsBBwC6AeAB3wEHALoBuQHgAQcA4QHiAeMBBwDhAeQB4gEHAOEBgQHlAQcA4QHmAYEBBwDnAeMB4gEHAOcB6AHjAQcAEwHnAeIBBwATARQB5wEHABEB4gHkAQcAEQETAeIBBwASAeQB6QEHABIBEQHkAQcAJQHqASYBBwAlAesB6gEHAOsBEgHqAQcA6wEKARIBBwAkAesBJQEHACQB7AHrAQcA7AEKAesBBwDsAQIBCgEHACMB7AEkAQcAIwHtAewBBwDtAQIB7AEHAO0B+gACAQcAIQHtASMBBwAhAe4B7QEHAO4B+gDtAQcA7gHqAPoABwAiAe4BIQEHACIB7wHuAQcA7wHqAO4BBwDvAesA6gAHABIB8AHqAQcAEgHpAfABBwDxAeoB8AEHAPEBJgHqAQcA8gHzAfQBBwDyAfUB8wEHAPQB9gH3AQcA9AHzAfYBBwBlAfgB+QEHAGUBZAH4AQcAZgH5AfoBBwBmAWUB+QEHAPQB+wHyAQcA9AH8AfsBBwD3AfwB9AEHAPcB/QH8AQcAggH+AYQBBwCCAf8B/gEHAH8B/wGCAQcAfwEAAv8BBwABAgICAwIHAAECBAICAgcADgEFAgYCBwAOAQ0BBQIHAAcC8AEIAgcABwLxAfABBwAIAukB5QEHAAgC8AHpAQcA5AHlAekBBwDkAeEB5QEHAAkCCgILAgcACQIMAgoCBwANAgkCDgIHAA0CDAIJAgcAcQEPAhACBwBxARABDwIHAIQBEQKDAQcAhAESAhECBwATAoQB/gEHABMCEgKEAQcAFALxAQcCBwAUAhUC8QEHABYCEgIXAgcAFgIRAhICBwAWAhgCGQIHABYCFwIYAgcAGgIXAhsCBwAaAhgCFwIHABMCFwISAgcAEwIbAhcCBwAcAhUCFAIHABwCHQIVAgcAHgIcAh8CBwAeAh0CHAIHACYBFQIfAQcAJgHxARUCBwAfAR0CIAEHAB8BFQIdAgcAHgIgAR0CBwAeAlQBIAEHACACIQIiAgcAIAIjAiECBwAhAiQCIgIHACECJQIkAgcAGQImAicCBwAZAhgCJgIHACgCKQIqAgcAKAIrAikCBwAqAiwCLQIHACoCKQIsAgcAGgImAhgCBwAaAi4CJgIHACsCJgIpAgcAKwInAiYCBwAhAigCKgIHACECIwIoAgcAKQIuAiwCBwApAiYCLgIHACUCKgItAgcAJQIhAioCBwAvAiICMAIHAC8CIAIiAgcAJAIwAiICBwAkAjECMAIHAC8CMgIzAgcALwIwAjICBwAxAjICMAIHADECNAIyAgcANQIyAjYCBwA1AjMCMgIHAAsCNgIJAgcACwI1AjYCBwA0AjYCMgIHADQCNwI2AgcACQI3Ag4CBwAJAjYCNwIHAEQBOAI5AgcARAFDATgCBwB4ATkCOgIHAHgBRAE5AgcADwE6AjsCBwAPAXgBOgIHABABOwIPAgcAEAEPATsCBwAPAjwCEAIHAA8CPQI8AgcAPQIKAjwCBwA9AgsCCgIHADsCPQIPAgcAOwI+Aj0CBwA+AgsCPQIHAD4CNQILAgcAOgI+AjsCBwA6Aj8CPgIHAD8CNQI+AgcAPwIzAjUCBwA5Aj8COgIHADkCQAI/AgcAQAIzAj8CBwBAAi8CMwIHADgCQAI5AgcAOAJBAkACBwBBAi8CQAIHAEECIAIvAgcAQgJBAjgCBwBCAkMCQQIHAEMCIAJBAgcAQwIjAiACBwBEAkMCQgIHAEQCRQJDAgcARQIjAkMCBwBFAigCIwIHAEYCRQJEAgcARgJHAkUCBwBHAigCRQIHAEcCKwIoAgcASAJHAkYCBwBIAkkCRwIHAEkCKwJHAgcASQInAisCBwAfAkkCSAIHAB8CSgJJAgcASgInAkkCBwBKAhkCJwIHABwCSgIfAgcAHAJLAkoCBwBLAhkCSgIHAEsCFgIZAgcAFAJLAhwCBwAUAkwCSwIHAEwCFgJLAgcATAIRAhYCBwAHAkwCFAIHAAcCTQJMAgcATQIRAkwCBwBNAoMBEQIHAAgCTQIHAgcACAJOAk0CBwBOAoMBTQIHAE4CgAGDAQcA5QFOAggCBwDlAU8CTgIHAE8CgAFOAgcATwKBAYABBwD4AVAC+QEHAPgBUQJQAgcAUQLzAVACBwBRAvYB8wEHAPkBUgL6AQcA+QFQAlICBwBQAvUBUgIHAFAC8wH1AQcABQJTAgYCBwAFAlQCUwIHAFQCAQJTAgcAVAIEAgECBwBWAR8CSAIHAFYBVQEfAgcAMQFIAkYCBwAxAVYBSAIHADIBRgJEAgcAMgExAUYCBwBCAUQCQgIHAEIBMgFEAgcAQwFCAjgCBwBDAUIBQgIHAFUCzgHQAQcAVQJWAs4BBwBXAtAB0gEHAFcCVQLQAQcAWAKZAZoBBwBYAlkCmQEHAFoCfAFbAgcAWgJ6AXwBBwBcAnoBWgIHAFwCfQF6AQcAXQJeAl8CBwBdAmACXgIHAGACWQJYAgcAYAJdAlkCBwBhAmICYwIHAGECZAJiAgcAYgJlAmMCBwBiAmYCZQIHAGcCYQJjAgcAZwJoAmECBwBlAmcCYwIHAGUCaQJnAgcAYQJWAlUCBwBhAmgCVgIHAFcCYQJVAgcAVwJkAmECBwBXAmoCZAIHAFcCawJqAgcAawJdAmoCBwBrAlkCXQIHANIBawJXAgcA0gFsAmsCBwBsAlkCawIHAGwCmQFZAgcA0QFsAtIBBwDRAW0CbAIHAG0CmQFsAgcAbQKQAZkBBwDVAW0C0QEHANUBbgJtAgcAbgKQAW0CBwBuApEBkAEHANgBbgLVAQcA2AFvAm4CBwBvApEBbgIHAG8CjwGRAQcAZAJwAmICBwBkAmoCcAIHAGoCXwJwAgcAagJdAl8CBwBiAnECZgIHAGICcAJxAgcAcAJeAnECBwBwAl8CXgIHAFQCcgIEAgcAVAJzAnICBwBzAvUBcgIHAHMCUgL1AQcABQJzAlQCBwAFAnQCcwIHAHQCUgJzAgcAdAL6AVICBwANAXQCBQIHAA0BdQJ0AgcAdQL6AXQCBwB1AmYB+gEHAAUBdQINAQcABQF2AnUCBwB2AmYBdQIHAHYCYwFmAQcA/QB2AgUBBwD9AHcCdgIHAHcCYwF2AgcAdwJgAWMBBwDzAHcC/QAHAPMAeAJ3AgcAeAJgAXcCBwB4Al8BYAEHAPUAeALzAAcA9QB5AngCBwB5Al8BeAIHAHkCaQFfAQcA9AB5AvUABwD0AHoCeQIHAHoCaQF5AgcAegJsAWkBBwAEAnsCAgIHAAQCcgJ7AgcAcgLyAXsCBwByAvUB8gEHAAICfAIDAgcAAgJ7AnwCBwB7AvsBfAIHAHsC8gH7AQcAfQJ+An8CBwB9AoACfgIHAIECgAJ9AgcAgQKCAoACBwCCAp8BnQEHAIICgQKfAQcAgwKAAoICBwCDAoQCgAIHAJ4BggKdAQcAngGDAoICBwB+AYAChAIHAH4BfgKAAgcAhQKBAn0CBwCFAoYCgQIHAIcCfQJ/AgcAhwKFAn0CBwCIAokCigIHAIgCiwKJAgcAjAKKAo0CBwCMAogCigIHAIwCjgKPAgcAjAKNAo4CBwCQApECkgIHAJACkwKRAgcAlAKTApACBwCUApUCkwIHAJIClgKXAgcAkgKRApYCBwCYApECkwIHAJgCmQKRAgcAlQKYApMCBwCVApoCmAIHAJECmwKWAgcAkQKZApsCBwCYApwCmQIHAJgCnQKcAgcAngKdAp8CBwCeApwCnQIHAJoCnQKYAgcAmgKgAp0CBwCfAqACoQIHAJ8CnQKgAgcAogKeAqMCBwCiApwCngIHAJkCogKbAgcAmQKcAqICBwDdAaMCwAEHAN0BogKjAgcA3QGbAqICBwDdAZsBmwIHAJsBlgKbAgcAmwGcAZYCBwCcAZcClgIHAJwB2wGXAgcApAKlAqYCBwCkAqcCpQIHAKcCqAKpAgcApwKkAqgCBwClAqoCpgIHAKUCqwKqAgcArAKtAq4CBwCsAq8CrQIHAK4CsAKsAgcArgKxArACBwCyAq0CrwIHALICswKtAgcAtAK1ArYCBwC0ArcCtQIHAJ8CtQKeAgcAnwK2ArUCBwC0ArgCuQIHALQCtgK4AgcAoQK2Ap8CBwChArgCtgIHAKMCtQK6AgcAowKeArUCBwC7ArUCtwIHALsCugK1AgcArQK0Aq4CBwCtArcCtAIHAKQCrwKsAgcApAKmAq8CBwCoAqwCsAIHAKgCpAKsAgcArgK5ArECBwCuArQCuQIHALsCrQKzAgcAuwK3Aq0CBwCvAqoCsgIHAK8CpgKqAgcAwAG6Ar8BBwDAAaMCugIHAL4BugK7AgcAvgG/AboCBwC7ArQBvgEHALsCswK0AQcAswKzAbQBBwCzArICswEHALICyAGzAQcAsgKqAsgBBwCqAscByAEHAKoCqwLHAQcAvAKsAacBBwC8Ar0CrAEHAL4CpwGoAQcAvgK8AqcBBwDHAb4CqAEHAMcBqwK+AgcAvwJ8AXkBBwC/AsACfAEHAMACWwJ8AQcAwALBAlsCBwDCAqcCwwIHAMICpQKnAgcAwgLAAr8CBwDCAsMCwAIHAKcCxALDAgcApwKpAsQCBwDAAsQCwQIHAMACwwLEAgcAvwK+AsICBwC/ArwCvgIHAHkBvAK/AgcAeQG9ArwCBwC+AqUCwgIHAL4CqwKlAgcAgwLFAoQCBwCDAsYCxQIHAMYCxwLFAgcAxgLIAscCBwCeAcYCgwIHAJ4ByQLGAgcAyQLIAsYCBwDJAsoCyAIHAJYByQKeAQcAlgHLAskCBwDLAsoCyQIHAMsCzALKAgcAhQHLApYBBwCFAc0CywIHAM0CzALLAgcAzQLOAswCBwCHAc0ChQEHAIcBzwLNAgcAzwLOAs0CBwDPAtACzgIHAMUCfgGEAgcAxQJ7AX4BBwDHAnsBxQIHAMcCeQF7AQcA0QLSAtMCBwDRAtQC0gIHANUC0wLWAgcA1QLRAtMCBwDXAtUC1gIHANcC2ALVAgcA2QKBAdoCBwDZAn8BgQEHANgC2gLVAgcA2ALZAtoCBwDRAtoC2wIHANEC1QLaAgcA5gHaAoEBBwDmAdsC2gIHANEC3ALUAgcA0QLbAtwCBwDdAtsC5gEHAN0C3ALbAgcA1ALeAtICBwDUAtwC3gIHAN8C3ALdAgcA3wLeAtwCBwDgAtgC1wIHAOAC2QLYAgcAfwHgAgACBwB/AdkC4AIHAI0C4QKOAgcAjQLiAuECBwB9AeICfgEHAH0B4QLiAgcAfgHjAn4CBwB+AeIC4wIHAI0C4wLiAgcAjQKKAuMCBwB+AuQCfwIHAH4C4wLkAgcAiQLjAooCBwCJAuQC4wIHAOECjwKOAgcA4QLlAo8CBwBcAuECfQEHAFwC5QLhAgcAfwLmAocCBwB/AuQC5gIHAIsC5AKJAgcAiwLmAuQCBwCBAqABnwEHAIEChgKgAQcA5wLoAukCBwDnAuoC6AIHAOoC6wLoAgcA6gLsAusCBwDsAu0C6wIHAOwC7gLtAgcA7gLvAu0CBwDuAvAC7wIHAPAC8QLvAgcA8ALyAvECBwDyAvMC8QIHAPIC9ALzAgcA9AL1AvMCBwD0AvYC9QIHAPYC9wL1AgcA9gL4AvcCBwD4AvkC9wIHAPgC+gL5AgcA+gL7AvkCBwD6AvwC+wIHAPwC/QL7AgcA/AL+Av0CBwD/AgADAQMHAP8CAgMAAwcAAgMDAwADBwACAwQDAwMHAAQDBQMDAwcABAMGAwUDBwAGAwcDBQMHAAYDCAMHAwcACAMJAwcDBwAIAwoDCQMHAAoDCwMJAwcACgMMAwsDBwANAw4DDwMHAA0DEAMOAwcAEAMRAw4DBwAQAxIDEQMHABIDEwMRAwcAEgMUAxMDBwAUAxUDEwMHABQDFgMVAwcAFwP9AgEDBwAXAxgD/QIHAP4CAQP9AgcA/gL/AgEDBwD/ARkD/gEHAP8BGgMZAwcAGgP1AhkDBwAaA/MC9QIHAAACGgP/AQcAAAIbAxoDBwAbA/MCGgMHABsD8QLzAgcA4AIbAwACBwDgAhwDGwMHABwD8QIbAwcAHAPvAvECBwDXAhwD4AIHANcCHQMcAwcAHQPvAhwDBwAdA+0C7wIHANYCHQPXAgcA1gIeAx0DBwAeA+0CHQMHAB4D6wLtAgcA0wIeA9YCBwDTAh8DHgMHAB8D6wIeAwcAHwPoAusCBwDSAh8D0wIHANICIAMfAwcAIAPoAh8DBwAgA+kC6AIHAN4CIAPSAgcA3gIhAyADBwAhA+kCIAMHACEDIgPpAgcA3wIhA94CBwDfAiMDIQMHACMDIgMhAwcAIwMkAyIDBwDoASUDJgMHAOgB5wElAwcAJgMkAyMDBwAmAycDJAMHABQBJQPnAQcAFAEoAyUDBwAoAykDJQMHACgDKgMpAwcADAEoAxQBBwAMASsDKAMHACsDKgMoAwcAKwMsAyoDBwAEASsDDAEHAAQBLQMrAwcALQMsAysDBwAtAy4DLAMHAPwALQMEAQcA/AAvAy0DBwAvAy4DLQMHAC8DMAMuAwcA7QAvA/wABwDtADEDLwMHADEDMAMvAwcAMQMyAzADBwDpADED7QAHAOkAMwMxAwcAMwMyAzEDBwAzAzQDMgMHAOsAMwPpAAcA6wA1AzMDBwA1AzQDMwMHADUDNgM0AwcA7wE1A+sABwDvATcDNQMHADcDNgM1AwcANwM4AzYDBwAiATcD7wEHACIBOQM3AwcAOQM4AzcDBwA5AzoDOAMHABYBOQMiAQcAFgE7AzkDBwA7AzoDOQMHADsDPAM6AwcAGAE7AxYBBwAYAT0DOwMHAD0DPAM7AwcAPQM+AzwDBwBFAT8DQAMHAEUBSgE/AwcAQAM+Az0DBwBAA0EDPgMHAEcBPwNKAQcARwFCAz8DBwBCA0MDPwMHAEIDWAFDAwcAKQFCA0cBBwApAUQDQgMHAEQDWAFCAwcARANZAVgBBwAoAUQDKQEHACgBRQNEAwcARQNZAUQDBwBFA1cBWQEHADQBRQMoAQcANAFGA0UDBwBGA1cBRQMHAEYDWgFXAQcANgFGAzQBBwA2AUcDRgMHAEcDWgFGAwcARwNIA1oBBwA3AUcDNgEHADcBSQNHAwcASQNIA0cDBwBJA0oDSAMHAHYBSQM3AQcAdgFLA0kDBwBLA0oDSQMHAEsDTANKAwcA8ABLA3YBBwDwAE0DSwMHAE0DTANLAwcATQNOA0wDBwDyAE0D8AAHAPIATwNNAwcATwNOA00DBwBPA1ADTgMHAHIBTwPyAAcAcgFRA08DBwBRA1ADTwMHAFEDUgNQAwcAagFTA2sBBwBqAVQDUwMHAFQDVQNTAwcAVANWA1UDBwBsAVQDagEHAGwBVwNUAwcAVwNWA1QDBwBXA1gDVgMHAHoCVwNsAQcAegJZA1cDBwBZA1gDVwMHAFkDWgNYAwcA9ABZA3oCBwD0AFsDWQMHAFsDWgNZAwcAWwNcA1oDBwD2AFsD9AAHAPYAXQNbAwcAXQNcA1sDBwBdA14DXAMHAP4AXQP2AAcA/gBfA10DBwBfA14DXQMHAF8DYANeAwcABgFfA/4ABwAGAWEDXwMHAGEDYANfAwcAYQNiA2ADBwAOAWEDBgEHAA4BYwNhAwcAYwNiA2EDBwBjA2QDYgMHAAYCYwMOAQcABgJlA2MDBwBlA2QDYwMHAGUDZgNkAwcAUwJlAwYCBwBTAmcDZQMHAGcDZgNlAwcAZwNoA2YDBwABAmcDUwIHAAECaQNnAwcAaQNoA2cDBwBpA2oDaAMHAAMCaQMBAgcAAwJrA2kDBwBrA2oDaQMHAGsDFQNqAwcAfAJrAwMCBwB8AmwDawMHAGwDFQNrAwcAbAMTAxUDBwD7AWwDfAIHAPsBbQNsAwcAbQMTA2wDBwBtAxEDEwMHAPwBbQP7AQcA/AFuA20DBwBuAxEDbQMHAG4DDgMRAwcA/QFuA/wBBwD9AW8DbgMHAG8DDgNuAwcAbwMPAw4DBwAOAnADDQIHAA4CcQNwAwcAcQMLA3ADBwBxAwkDCwMHADcCcQMOAgcANwJyA3EDBwByAwkDcQMHAHIDBwMJAwcANAJyAzcCBwA0AnMDcgMHAHMDBwNyAwcAcwMFAwcDBwAxAnMDNAIHADECdANzAwcAdAMFA3MDBwB0AwMDBQMHACQCdAMxAgcAJAJ1A3QDBwB1AwMDdAMHAHUDAAMDAwcAJQJ1AyQCBwAlAnYDdQMHAHYDAAN1AwcAdgMBAwADBwAtAnYDJQIHAC0CdwN2AwcAdwMBA3YDBwB3AxcDAQMHACwCdwMtAgcALAJ4A3cDBwB4AxcDdwMHAHgDGAMXAwcALgJ4AywCBwAuAnkDeAMHAHkDGAN4AwcAeQP9AhgDBwAaAnkDLgIHABoCegN5AwcAegP9AnkDBwB6A/sC/QIHABsCegMaAgcAGwJ7A3oDBwB7A/sCegMHAHsD+QL7AgcAEwJ7AxsCBwATAnwDewMHAHwD+QJ7AwcAfAP3AvkCBwD+AXwDEwIHAP4BGQN8AwcAGQP3AnwDBwAZA/UC9wIHAH0DfgN/AwcAfQOAA34DBwCBA38DggMHAIEDfQN/AwcAgAODA34DBwCAA4QDgwMHAIUDggOGAwcAhQOBA4IDBwCEA4cDgwMHAIQDiAOHAwcAiQOGA4oDBwCJA4UDhgMHAIsDigOMAwcAiwOJA4oDBwCNA4wDjgMHAI0DiwOMAwcAjwOOA5ADBwCPA40DjgMHAJEDkAOSAwcAkQOPA5ADBwCTA5IDlAMHAJMDkQOSAwcAlQOWA5cDBwCVA5gDlgMHAJkDlwOaAwcAmQOVA5cDBwCbA5oDnAMHAJsDmQOaAwcAnQOcA54DBwCdA5sDnAMHAJ8DoAOhAwcAnwOiA6ADBwCiA54DoAMHAKIDnQOeAwcAowOkA6UDBwCjA6YDpAMHAKcDpQOoAwcApwOjA6UDBwCpA6gDqgMHAKkDpwOoAwcAqwOqA6wDBwCrA6kDqgMHAJQDmAOTAwcAlAOWA5gDBwCtA5YDlAMHAK0DrgOWAwcAlwOvA5oDBwCXA7ADrwMHALADoQKvAwcAsAO4AqECBwCWA7ADlwMHAJYDsQOwAwcAsQO4ArADBwCxA7kCuAIHAK4DsQOWAwcArgOyA7EDBwCyA7kCsQMHALIDsQK5AgcArQOyA64DBwCtA7MDsgMHALMDsQKyAwcAswOwArECBwCUA7MDrQMHAJQDtAOzAwcAtAOwArMDBwC0A6gCsAIHAJIDtAOUAwcAkgO1A7QDBwC1A6gCtAMHALUDqQKoAgcAkAO1A5IDBwCQA7YDtQMHALYDqQK1AwcAtgPEAqkCBwCOA7YDkAMHAI4DtwO2AwcAtwPEArYDBwC3A8ECxAIHAIwDtwOOAwcAjAO4A7cDBwC4A8ECtwMHALgDWwLBAgcAigO4A4wDBwCKA7kDuAMHALkDWwK4AwcAuQNaAlsCBwCGA7kDigMHAIYDugO5AwcAugNaArkDBwC6A1wCWgIHAIIDugOGAwcAggO7A7oDBwC7A1wCugMHALsD5QJcAgcAfwO7A4IDBwB/A7wDuwMHALwD5QK7AwcAvAOPAuUCBwB+A7wDfwMHAH4DvQO8AwcAvQOPArwDBwC9A4wCjwIHAIMDvQN+AwcAgwO+A70DBwC+A4wCvQMHAL4DiAKMAgcAhwO+A4MDBwCHA78DvgMHAL8DiAK+AwcAvwOLAogCBwDAA78DhwMHAMADwQO/AwcAwQOLAr8DBwDBA+YCiwIHAMIDwQPAAwcAwgPDA8EDBwDDA+YCwQMHAMMDhwLmAgcAxAPDA8IDBwDEA8UDwwMHAMUDhwLDAwcAxQOFAocCBwDGA8UDxAMHAMYDxwPFAwcAxwOFAsUDBwDHA4YChQIHAMgDxwPGAwcAyAPJA8cDBwDJA4YCxwMHAMkDoAGGAgcAygPJA8gDBwDKA8sDyQMHAMsDoAHJAwcAywOYAaABBwDMA8sDygMHAMwDzQPLAwcAzQOYAcsDBwDNA4kBmAEHAM4DzQPMAwcAzgPPA80DBwDPA4kBzQMHAM8DhgGJAQcA0APPA84DBwDQA9EDzwMHANEDhgHPAwcA0QOHAYYBBwDSA9ED0AMHANID0wPRAwcA0wOHAdEDBwDTA88ChwEHANQD1QPWAwcA1APXA9UDBwDWA88C0wMHANYD0ALPAgcA2APVA9cDBwDYA9kD1QMHANkDqgHVAwcA2QOhAaoBBwDaA9kD2AMHANoD2wPZAwcA2wOhAdkDBwDbA6QBoQEHANwD2wPaAwcA3APdA9sDBwDdA6QB2wMHAN0DwQGkAQcAyQHdA9wDBwDJAd4D3QMHAN4DwQHdAwcA3gPDAcEBBwDLAd4DyQEHAMsB3wPeAwcA3wPDAd4DBwDfA68BwwEHAMoB3wPLAQcAygHgA98DBwDgA68B3wMHAOADrQGvAQcAzAHgA8oBBwDMAeED4AMHAOEDrQHgAwcA4QO1Aa0BBwDiA+EDzAEHAOID4wPhAwcA4wO1AeEDBwDjA7gBtQEHAOQD4wPiAwcA5APlA+MDBwDlA7gB4wMHAOUDuQG4AQcA5gPlA+QDBwDmA+cD5QMHAOcDuQHlAwcA5wPgAbkBBwDoA+cD5gMHAOgD6QPnAwcA6QPgAecDBwDpA4sB4AEHAOoD6QPoAwcA6gPrA+kDBwDrA4sB6QMHAOsDjgGLAQcA7APrA+oDBwDsA+0D6wMHAO0DjgHrAwcA7QPcAY4BBwDuA+8D8AMHAO4D8QPvAwcA8QPXAe8DBwDxA9YB1wEHAPID8QPuAwcA8gPzA/EDBwDzA9YB8QMHAPMD2AHWAQcA9APzA/IDBwD0A/UD8wMHAPUD2AHzAwcA9QNvAtgBBwD2A/UD9AMHAPYD9wP1AwcA9wNvAvUDBwD3A48BbwIHAPgD9wP2AwcA+AP5A/cDBwD5A48B9wMHAPkDkgGPAQcA+gP5A/gDBwD6A/sD+QMHAPsDkgH5AwcA+wOaAZIBBwD8A/sD+gMHAPwD/QP7AwcA/QOaAfsDBwD9A1gCmgEHAP4D/QP8AwcA/gP/A/0DBwD/A1gC/QMHAP8DYAJYAgcArAP/A/4DBwCsAwAE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WwQHAFkEWgRcBAcAUQJdBPYBBwBRAlsEXQQHAFsEXgRdBAcAWwRcBF4EBwD2AV8E9wEHAPYBXQRfBAcAXQRgBF8EBwBdBF4EYAQHAPcBYQT9AQcA9wFfBGEEBwBfBGIEYQQHAF8EYARiBAcA/QFjBG8DBwD9AWEEYwQHAGEEZARjBAcAYQRiBGQEBwBvA2UEDwMHAG8DYwRlBAcAYwRmBGUEBwBjBGQEZgQHAA8DZwQNAwcADwNlBGcEBwBlBGgEZwQHAGUEZgRoBAcADQNpBKYDBwANA2cEaQQHAGcEagRpBAcAZwRoBGoEBwCmA2sEpAMHAKYDaQRrBAcAaQRsBGsEBwBpBGoEbAQHAKQDbQQEBAcApANrBG0EBwBrBG4EbQQHAGsEbARuBAcABARvBGkCBwAEBG0EbwQHAG0EcARvBAcAbQRuBHAEBwBpAnEEZwIHAGkCbwRxBAcAbwRyBHEEBwBvBHAEcgQHAGcCcwRoAgcAZwJxBHMEBwBxBHQEcwQHAHEEcgR0BAcAaAJ1BFYCBwBoAnMEdQQHAHMEdgR1BAcAcwR0BHYEBwBWAncEzgEHAFYCdQR3BAcAdQR4BHcEBwB1BHYEeAQHAM4BeQTPAQcAzgF3BHkEBwB3BHoEeQQHAHcEeAR6BAcAzwF7BNQBBwDPAXkEewQHAHkEfAR7BAcAeQR6BHwEBwDUAX0E1wEHANQBewR9BAcAewR+BH0EBwB7BHwEfgQHANcBfwTvAwcA1wF9BH8EBwB9BIAEfwQHAH0EfgSABAcA7wOBBPADBwDvA38EgQQHAH8EggSBBAcAfwSABIIEBwBIBIMERwQHAEgEhASDBAcAhARxAYMEBwCEBHABcQEHAE0EhQRLBAcATQSGBIUEBwCHBHABhAQHAIcEbwFwAQcAUASHBE8EBwBQBIgEhwQHAIgEbwGHBAcAiARuAW8BBwBSBIgEUAQHAFIEiQSIBAcAiQRuAYgEBwCJBG0BbgEHAFQEiQRSBAcAVASKBIkEBwCKBG0BiQQHAIoEcgFtAQcAVgSKBFQEBwBWBIsEigQHAIsEcgGKBAcAiwRRA3IBBwBYBIsEVgQHAFgEjASLBAcAjARRA4sEBwCMBFIDUQMHAEcEjQRaBAcARwSDBI0EBwCDBBACjQQHAIMEcQEQAgcAWgSOBFwEBwBaBI0EjgQHAI0EPAKOBAcA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PgUHAD0FRQVGBQcAPgVHBT8FBwA+BUYFRwUHAD8FSAVABQcAPwVHBUgFBwBIBUEFQAUHAEgFSQVBBQcASQVCBUEFBwBJBUoFQgUHAEoFOwVCBQcASgVDBTsFBwBFBUsFTAUHAEUFRAVLBQcARgVMBU0FBwBGBUUFTAUHAEcFTQVOBQcARwVGBU0FBwBIBU4FTwUHAEgFRwVOBQcAUAVIBU8FBwBQBUkFSAUHAFEFSQVQBQcAUQVKBUkFBwBSBUoFUQUHAFIFQwVKBQcASwVDBVIFBwBLBUQFQwUHAFMFVAVVBQcAUwVWBVQFBwBUBVcFWAUHAFQFVgVXBQcAWAVZBVoFBwBYBVcFWQUHAFoFWwVcBQcAWgVZBVsFBwBcBV0FXgUHAFwFWwVdBQcAXgVfBWAFBwBeBV0FXwUHAGAFYQViBQcAYAVfBWEFBwBhBWMFYgUHAGEFZAVjBQcAZAVlBWMFBwBkBWYFZQUHAGYFZwVlBQcAZgVoBWcFBwBoBWkFZwUHAGgFagVpBQcAagVVBWkFBwBqBVMFVQUHAGsFVgVTBQcAawVsBVYFBwBWBW0FVwUHAFYFbAVtBQcAVwVuBVkFBwBXBW0FbgUHAFkFbwVbBQcAWQVuBW8FBwBbBXAFXQUHAFsFbwVwBQcAXQVxBV8FBwBdBXAFcQUHAF8FcgVhBQcAXwVxBXIFBwByBWQFYQUHAHIFcwVkBQcAcwVmBWQFBwBzBXQFZgUHAHQFaAVmBQcAdAV1BWgFBwB1BWoFaAUHAHUFdgVqBQcAdgVTBWoFBwB2BWsFUwUHAHcFbAVrBQcAdwV4BWwFBwBsBXkFbQUHAGwFeAV5BQcAbQV6BW4FBwBtBXkFegUHAG4FewVvBQcAbgV6BXsFBwBvBXwFcAUHAG8FewV8BQcAcAV9BXEFBwBwBXwFfQUHAHEFfgVyBQcAcQV9BX4FBwB+BXMFcgUHAH4FfwVzBQcAfwV0BXMFBwB/BYAFdAUHAIAFdQV0BQcAgAWBBXUFBwCBBXYFdQUHAIEFggV2BQcAggVrBXYFBwCCBXcFawUHAIMFdwWEBQcAgwV4BXcFBwB5BYMFhQUHAHkFeAWDBQcAegWFBYYFBwB6BXkFhQUHAHoFhwV7BQcAegWGBYcFBwB7BYgFfAUHAHsFhwWIBQcAfAWJBX0FBwB8BYgFiQUHAH0FigV+BQcAfQWJBYoFBwCKBX8FfgUHAIoFiwV/BQcAjAUeBY0FBwCMBR8FHgUHAIsFgAV/BQcAiwWOBYAFBwCOBYEFgAUHAI4FjwWBBQcAjwWCBYEFBwCPBZAFggUHAIQFggWQBQcAhAV3BYIFBwCRBYQFkgUHAJEFgwWEBQcAhQWRBZMFBwCFBYMFkQUHAIYFkwWUBQcAhgWFBZMFBwCHBZQFlQUHAIcFhgWUBQcAhwWWBYgFBwCHBZUFlgUHAIgFlwWJBQcAiAWWBZcFBwCJBZgFigUHAIkFlwWYBQcAmAWLBYoFBwCYBZkFiwUHAJkFjgWLBQcAmQWaBY4FBwCaBY8FjgUHAJoFmwWPBQcAnAWPBZsFBwCcBZAFjwUHAJIFkAWcBQcAkgWEBZAFBwCdBZIFngUHAJ0FkQWSBQcAkwWdBZ8FBwCTBZEFnQUHAJQFnwWgBQcAlAWTBZ8FBwCVBaAFoQUHAJUFlAWgBQcAlQWiBZYFBwCVBaEFogUHAJYFowWXBQcAlgWiBaMFBwCXBaQFmAUHAJcFowWkBQcAEQWlBRAFBwARBY0FpQUHAI0FHQWlBQcAjQUeBR0FBwAQBaYFDwUHABAFpQWmBQcApQUcBaYFBwClBR0FHAUHAA8FpwUOBQcADwWmBacFBwCmBRsFpwUHAKYFHAUbBQcADgWoBQ0FBwAOBacFqAUHAKcFEwWoBQcApwUbBRMFBwANBakFDAUHAA0FqAWpBQcAqAUUBakFBwCoBRMFFAUHAAwFqgULBQcADAWpBaoFBwCpBRUFqgUHAKkFFAUVBQcACwWrBQoFBwALBaoFqwUHAKoFFgWrBQcAqgUVBRYFBwAKBawFEgUHAAoFqwWsBQcAqwUXBawFBwCrBRYFFwUHABIFrQXdBAcAEgWsBa0FBwCsBRgFrQUHAKwFFwUYBQcA3QSuBdsEBwDdBK0FrgUHAK0FGQWuBQcArQUYBRkFBwDbBK8F3AQHANsErgWvBQcArgUaBa8FBwCuBRkFGgUHALAFsQWyBQcAsAWzBbEFBwC0BbAFsgUHALQFtQWwBQcAtgW1BbQFBwC2BbcFtQUHAKQFmQWYBQcApAW4BZkFBwC4BZoFmQUHALgFuQWaBQcAuQWbBZoFBwC5BboFmwUHALsFtwW2BQcAuwW8BbcFBwC9BbwFuwUHAL0FvgW8BQcAvwWbBboFBwC/BZwFmwUHAJ4FnAW/BQcAngWSBZwFBwCyBcAFwQUHALIFsQXABQcAwgWyBcEFBwDCBbQFsgUHAMMFtAXCBQcAwwW2BbQFBwDEBZ0FngUHAMQFxQWdBQcAnQXGBZ8FBwCdBcUFxgUHAJ8FxwWgBQcAnwXGBccFBwDIBbYFwwUHAMgFuwW2BQcAyQW7BcgFBwDJBb0FuwUHAKAFygWhBQcAoAXHBcoFBwChBcsFogUHAKEFygXLBQcAwQXMBc0FBwDBBcAFzAUHAM4FwQXNBQcAzgXCBcEFBwDPBcIFzgUHAM8FwwXCBQcAogXQBaMFBwCiBcsF0AUHAKMF0QWkBQcAowXQBdEFBwDRBbgFpAUHANEF0gW4BQcA0wXDBc8FBwDTBcgFwwUHANQFyAXTBQcA1AXJBcgFBwDSBbkFuAUHANIF1QW5BQcA1QW6BbkFBwDVBdYFugUHAM0F1wXYBQcAzQXMBdcFBwDZBc0F2AUHANkFzgXNBQcA2gXOBdkFBwDaBc8FzgUHANYFvwW6BQcA1gXbBb8FBwDbBZ4FvwUHANsFxAWeBQcA3AXFBcQFBwDcBd0FxQUHAN4FzwXaBQcA3gXTBc8FBwDfBdMF3gUHAN8F1AXTBQcAxQXgBcYFBwDFBd0F4AUHAMYF4QXHBQcAxgXgBeEFBwDHBeIFygUHAMcF4QXiBQcAywXiBeMFBwDLBcoF4gUHANAF4wXkBQcA0AXLBeMFBwDRBeQF5QUHANEF0AXkBQcAjQXmBYwFBwCNBecF5gUHABEF5wWNBQcAEQXoBecFBwD8BOgFEQUHAPwE6QXoBQcA/QTpBfwEBwD9BOoF6QUHAP4E6gX9BAcA/gTrBeoFBwDsBdEF5QUHAOwF0gXRBQcA7QXSBewFBwDtBdUF0gUHAO4F1QXtBQcA7gXWBdUFBwDuBdsF1gUHAO4F7wXbBQcA7wXEBdsFBwDvBdwFxAUHAPAF3QXcBQcA8AXxBd0FBwDdBfIF4AUHAN0F8QXyBQcA4AXzBeEFBwDgBfIF8wUHAOIF8wX0BQcA4gXhBfMFBwDnBfUF5gUHAOcF9gX1BQcA9gW+BfUFBwD2BbwFvgUHAOgF9gXnBQcA6AX3BfYFBwD3BbwF9gUHAPcFtwW8BQcA6QX3BegFBwDpBfgF9wUHAPgFtwX3BQcA+AW1BbcFBwDqBfgF6QUHAOoF+QX4BQcA+QW1BfgFBwD5BbAFtQUHAOsF+QXqBQcA6wX6BfkFBwD6BbAF+QUHAPoFswWwBQcA4wX0BfsFBwDjBeIF9AUHAOQF+wX8BQcA5AXjBfsFBwD9Bf4F/wUHAP0FAAb+BQcA/wUBBgIGBwD/Bf4FAQYHAAIGAwYEBgcAAgYBBgMGBwAEBgUGBgYHAAQGAwYFBgcABgYHBggGBwAGBgUGBwYHAAgGCQYKBgcACAYHBgkGBwAKBgsGDAYHAAoGCQYLBgcADAYNBg4GBwAMBgsGDQYHAA4GDwYQBgcADgYNBg8GBwAQBhEGEgYHABAGDwYRBgcAEgYTBhQGBwASBhEGEwYHABQGFQYWBgcAFAYTBhUGBwAVBhcGFgYHABUGGAYXBgcAGAYZBhcGBwAYBhoGGQYHABoGGwYZBgcAGgYcBhsGBwAcBh0GGwYHABwGHgYdBgcAHgYfBh0GBwAeBiAGHwYHACEGIgYjBgcAIQYkBiIGBwAkBiUGIgYHACQGJgYlBgcAJgYnBiUGBwAmBigGJwYHACgGKQYnBgcAKAYqBikGBwAqBv0FKQYHACoGAAb9BQcAAAYrBv4FBwAABiwGKwYHAC0GAAYqBgcALQYsBgAGBwAuBioGKAYHAC4GLQYqBgcALwYoBiYGBwAvBi4GKAYHADAGJgYkBgcAMAYvBiYGBwAxBiQGIQYHADEGMAYkBgcAMgYhBjMGBwAyBjEGIQYHADQGMwYgBgcANAYyBjMGBwA1BiAGHgYHADUGNAYgBgcANgYeBhwGBwA2BjUGHgYHADcGHAYaBgcANwY2BhwGBwA4BhoGGAYHADgGNwYaBgcAOQYYBhUGBwA5BjgGGAYHABMGOQYVBgcAEwY6BjkGBwARBjoGEwYHABEGOwY6BgcADwY7BhEGBwAPBjwGOwYHAA0GPAYPBgcADQY9BjwGBwALBj0GDQYHAAsGPgY9BgcACQY+BgsGBwAJBj8GPgYHAAcGPwYJBgcABwZABj8GBwAFBkAGBwYHAAUGQQZABgcAAwZBBgUGBwADBkIGQQYHAAEGQgYDBgcAAQZDBkIGBwD+BUMGAQYHAP4FKwZDBgcAKwZEBkUGBwArBiwGRAYHAEQGLQZGBgcARAYsBi0GBwBGBi4GRwYHAEYGLQYuBgcARwYvBkgGBwBHBi4GLwYHAEgGMAZJBgcASAYvBjAGBwBJBjEGSgYHAEkGMAYxBgcASwYxBjIGBwBLBkoGMQYHAEwGMgY0BgcATAZLBjIGBwBNBjQGNQYHAE0GTAY0BgcATgY1BjYGBwBOBk0GNQYHAE8GNgY3BgcATwZOBjYGBwBQBjcGOAYHAFAGTwY3BgcAUQY4BjkGBwBRBlAGOAYHADoGUQY5BgcAOgZSBlEGBwA7BlIGOgYHADsGUwZSBgcAPAZTBjsGBwA8BlQGUwYHAD0GVAY8BgcAPQZVBlQGBwA+BlUGPQYHAD4GVgZVBgcAPwZWBj4GBwA/BlcGVgYHAEAGVwY/BgcAQAZYBlcGBwBABlkGWAYHAEAGQQZZBgcAQQZaBlkGBwBBBkIGWgYHAEIGWwZaBgcAQgZDBlsGBwBDBkUGWwYHAEMGKwZFBgcARQZcBl0GBwBFBkQGXAYHAFwGRgZeBgcAXAZEBkYGBwBeBkcGXwYHAF4GRgZHBgcAXwZIBmAGBwBfBkcGSAYHAGAGSQZhBgcAYAZIBkkGBwBhBkoGYgYHAGEGSQZKBgcAYgZLBmMGBwBiBkoGSwYHAGQGSwZMBgcAZAZjBksGBwBlBkwGTQYHAGUGZAZMBgcAZgZNBk4GBwBmBmUGTQYHAGcGTgZPBgcAZwZmBk4GBwBoBk8GUAYHAGgGZwZPBgcAaQZQBlEGBwBpBmgGUAYHAFIGaQZRBgcAUgZqBmkGBwBTBmoGUgYHAFMGawZqBgcAVAZrBlMGBwBUBmwGawYHAFUGbAZUBgcAVQZtBmwGBwBWBm0GVQYHAFYGbgZtBgcAVwZuBlYGBwBXBm8GbgYHAFcGcAZvBgcAVwZYBnAGBwBYBnEGcAYHAFgGWQZxBgcAWQZyBnEGBwBZBloGcgYHAFoGcwZyBgcAWgZbBnMGBwBbBl0GcwYHAFsGRQZdBgcAXQZ0BnUGBwBdBlwGdAYHAHQGXgZ2BgcAdAZcBl4GBwB2Bl8GdwYHAHYGXgZfBgcAdwZgBngGBwB3Bl8GYAYHAHgGYQZ5BgcAeAZgBmEGBwB5BmIGegYHAHkGYQZiBgcAegZjBnsGBwB6BmIGYwYHAHwGYwZkBgcAfAZ7BmMGBwB9BmQGZQYHAH0GfAZkBgcAfgZlBmYGBwB+Bn0GZQYHAH8GZgZnBgcAfwZ+BmYGBwCABmcGaAYHAIAGfwZnBgcAgQZoBmkGBwCBBoAGaAYHAGoGgQZpBgcAagaCBoEGBwBrBoIGagYHAGsGgwaCBgcAbAaDBmsGBwBsBoQGgwYHAG0GhAZsBgcAbQaFBoQGBwBuBoUGbQYHAG4GhgaFBgcAbwaGBm4GBwBvBocGhgYHAG8GiAaHBgcAbwZwBogGBwBwBokGiAYHAHAGcQaJBgcAcQaKBokGBwBxBnIGigYHAHIGiwaKBgcAcgZzBosGBwBzBnUGiwYHAHMGXQZ1BgcAKQaMBo0GBwApBv0FjAYHAIwG/wWOBgcAjAb9Bf8FBwCOBgIGjwYHAI4G/wUCBgcAjwYEBpAGBwCPBgIGBAYHAJAGBgaRBgcAkAYEBgYGBwCRBggGkgYHAJEGBgYIBgcAkgYKBpMGBwCSBggGCgYHAJMGDAaUBgcAkwYKBgwGBwCUBg4GlQYHAJQGDAYOBgcAlQYQBpYGBwCVBg4GEAYHAJYGEgaXBgcAlgYQBhIGBwCXBhQGmAYHAJcGEgYUBgcAmAYWBpkGBwCYBhQGFgYHABYGmgaZBgcAFgYXBpoGBwAXBpsGmgYHABcGGQabBgcAGQacBpsGBwAZBhsGnAYHABsGnQacBgcAGwYdBp0GBwAdBp4GnQYHAB0GHwaeBgcAHwafBp4GBwAfBqAGnwYHAKAGoQafBgcAoAYjBqEGBwAjBqIGoQYHACMGIgaiBgcAIgajBqIGBwAiBiUGowYHACUGpAajBgcAJQYnBqQGBwAnBo0GpAYHACcGKQaNBgcAjQalBqYGBwCNBowGpQYHAKUGjganBgcApQaMBo4GBwCnBo8GqAYHAKcGjgaPBgcAqAaQBqkGBwCoBo8GkAYHAKkGkQaqBgcAqQaQBpEGBwCqBpIGqwYHAKoGkQaSBgcAqwaTBqwGBwCrBpIGkwYHAK0GkwaUBgcArQasBpMGBwCuBpQGlQYHAK4GrQaUBgcArwaVBpYGBwCvBq4GlQYHALAGlgaXBgcAsAavBpYGBwCxBpcGmAYHALEGsAaXBgcAsgaYBpkGBwCyBrEGmAYHAJoGsgaZBgcAmgazBrIGBwCbBrMGmgYHAJsGtAazBgcAnAa0BpsGBwCcBrUGtAYHAJ0GtQacBgcAnQa2BrUGBwCeBrYGnQYHAJ4Gtwa2BgcAnwa3Bp4GBwCfBrgGtwYHAJ8GuQa4BgcAnwahBrkGBwChBroGuQYHAKEGoga6BgcAoga7BroGBwCiBqMGuwYHAKMGvAa7BgcAowakBrwGBwCkBqYGvAYHAKQGjQamBgcApQa9BqYGBwClBr4GvQYHAL8GpQanBgcAvwa+BqUGBwDABqcGqAYHAMAGvwanBgcAwQaoBqkGBwDBBsAGqAYHAMIGqQaqBgcAwgbBBqkGBwDDBqoGqwYHAMMGwgaqBgcAxAarBqwGBwDEBsMGqwYHAMUGrAatBgcAxQbEBqwGBwDGBq0GrgYHAMYGxQatBgcAxwauBq8GBwDHBsYGrgYHAMgGrwawBgcAyAbHBq8GBwDJBrAGsQYHAMkGyAawBgcAygaxBrIGBwDKBskGsQYHALMGygayBgcAswbLBsoGBwC0BssGswYHALQGzAbLBgcAtQbMBrQGBwC1Bs0GzAYHALYGzQa1BgcAtgbOBs0GBwC3Bs4GtgYHALcGzwbOBgcAuAbPBrcGBwC4BtAGzwYHALkG0Aa4BgcAuQbRBtAGBwC6BtEGuQYHALoG0gbRBgcAuwbSBroGBwC7BtMG0gYHALwG0wa7BgcAvAbUBtMGBwCmBtQGvAYHAKYGvQbUBgcAvgbVBr0GBwC+BtYG1QYHANcGvga/BgcA1wbWBr4GBwDYBr8GwAYHANgG1wa/BgcA2QbABsEGBwDZBtgGwAYHANoGwQbCBgcA2gbZBsEGBwDbBsIGwwYHANsG2gbCBgcA3AbDBsQGBwDcBtsGwwYHAN0GxAbFBgcA3QbcBsQGBwDeBsUGxgYHAN4G3QbFBgcA3wbGBscGBwDfBt4GxgYHAOAGxwbIBgcA4AbfBscGBwDhBsgGyQYHAOEG4AbIBgcA4gbJBsoGBwDiBuEGyQYHAMsG4gbKBgcAywbjBuIGBwDMBuMGywYHAMwG5AbjBgcAzQbkBswGBwDNBuUG5AYHAM4G5QbNBgcAzgbmBuUGBwDPBuYGzgYHAM8G5wbmBgcA0AbnBs8GBwDQBugG5wYHANEG6AbQBgcA0QbpBugGBwDSBukG0QYHANIG6gbpBgcA0wbqBtIGBwDTBusG6gYHANQG6wbTBgcA1AbsBusGBwC9BuwG1AYHAL0G1QbsBgcA7QaKBu4GBwDtBokGigYHAIkG7waIBgcAiQbtBu8GBwCIBvAGhwYHAIgG7wbwBgcAhwbxBoYGBwCHBvAG8QYHAIYG8gaFBgcAhgbxBvIGBwCFBvMGhAYHAIUG8gbzBgcAhAb0BoMGBwCEBvMG9AYHAIMG9QaCBgcAgwb0BvUGBwCCBvYGgQYHAIIG9Qb2BgcAgQb3BoAGBwCBBvYG9wYHAIAG+AZ/BgcAgAb3BvgGBwB/BvkGfgYHAH8G+Ab5BgcAfgb6Bn0GBwB+BvkG+gYHAH0G+wZ8BgcAfQb6BvsGBwD8Bv0G/gYHAPwG/wb9BgcAAAf/BvwGBwAABwEH/wYHAP4GAgfuBgcA/gb9BgIHBwADBwEHAAcHAAMHBAcBBwcA7gYFB+0GBwDuBgIHBQcHAO0GBgfvBgcA7QYFBwYHBwDvBgcH8AYHAO8GBgcHBwcA8AYIB/EGBwDwBgcHCAcHAPEGCQfyBgcA8QYIBwkHBwDyBgoH8wYHAPIGCQcKBwcA8wYLB/QGBwDzBgoHCwcHAPQGDAf1BgcA9AYLBwwHBwD1Bg0H9gYHAPUGDAcNBwcA9gYOB/cGBwD2Bg0HDgcHAPcGDwf4BgcA9wYOBw8HBwD4BhAH+QYHAPgGDwcQBwcA+QYRB/oGBwD5BhAHEQcHAPoGEgf7BgcA+gYRBxIHBwD7BhMHFAcHAPsGEgcTBwcAFAcVBxYHBwAUBxMHFQcHABYHFwcYBwcAFgcVBxcHBwAYBxkHGgcHABgHFwcZBwcAGgcbBxwHBwAaBxkHGwcHABwHBAcDBwcAHAcbBwQHBwCLBh0HigYHAIsGHgcdBwcAHgd1Bh8HBwAeB4sGdQYHAB8HIAchBwcAHwciByAHBwAiB3YGIwcHACIHdAZ2BgcAIwckByUHBwAjByYHJAcHACYHeAYnBwcAJgd3BngGBwAnBygHKQcHACcHKgcoBwcAKgd6BisHBwAqB3kGegYHACwHfAYtBwcALAd7BnwGBwArBy0HLgcHACsHLActBwcA/gaKBi8HBwD+Bu4GigYHAPwGLwcwBwcA/Ab+Bi8HBwAABzAHMQcHAAAH/AYwBwcAAwcxBzIHBwADBwAHMQcHABwHMgczBwcAHAcDBzIHBwAaBzMHNAcHABoHHAczBwcAGAc0BzUHBwAYBxoHNAcHABYHNQc2BwcAFgcYBzUHBwD7BjcHfAYHAPsGFAc3BwcAFAc2BzcHBwAUBxYHNgcHAIoGOAc5BwcAigYdBzgHBwA6B3wGOwcHADoHLQd8BgcAMAc8Bz0HBwAwBy8HPAcHADkHPQc8BwcAOQc+Bz0HBwAxBz0HPwcHADEHMAc9BwcAPgc/Bz0HBwA+B0AHPwcHADIHPwdBBwcAMgcxBz8HBwBAB0EHPwcHAEAHQgdBBwcAQwcyB0EHBwBDBzMHMgcHAEIHQwdBBwcAQgdEB0MHBwBFBzMHQwcHAEUHNAczBwcARAdFB0MHBwBEB0YHRQcHAEcHNAdFBwcARwc1BzQHBwBGB0cHRQcHAEYHSAdHBwcASQc1B0cHBwBJBzYHNQcHAEgHSQdHBwcASAdKB0kHBwBLBzYHSQcHAEsHNwc2BwcASgdLB0kHBwBKBzsHSwcHADwHigY5BwcAPAcvB4oGBwA3BzsHfAYHADcHSwc7BwcATAdABz4HBwBMB00HQAcHACEHTQdMBwcAIQcgB00HBwBNB0IHQAcHAE0HTgdCBwcAIAdOB00HBwAgByUHTgcHAE4HRAdCBwcATgdPB0QHBwAlB08HTgcHACUHJAdPBwcATwdGB0QHBwBPB1AHRgcHACQHUAdPBwcAJAcpB1AHBwBQB0gHRgcHAFAHUQdIBwcAKQdRB1AHBwApBygHUQcHAFEHSgdIBwcAUQdSB0oHBwAoB1IHUQcHACgHLgdSBwcAUgc7B0oHBwBSBzoHOwcHAC4HOgdSBwcALgctBzoHBwA4Bz4HOQcHADgHTAc+BwcAHQdMBzgHBwAdByEHTAcHAP8GBAdTBwcA/wYBBwQHBwDlBfwFVAcHAOUF5AX8BQcABAcZB1MHBwAEBxsHGQcHABkHFQdTBwcAGQcXBxUHBwAVBxIHUwcHABUHEwcSBwcAEgcQB1MHBwASBxEHEAcHABAHDgdTBwcAEAcPBw4HBwAOBwwHUwcHAA4HDQcMBwcADAcKB1MHBwAMBwsHCgcHAAkHUwcKBwcACQcIB1MHBwAIBwYHUwcHAAgHBwcGBwcABQdTBwYHBwAFBwIHUwcHAP0GUwcCBwcA/Qb/BlMHBwAhBqAGMwYHACEGIwagBgcAHwYzBqAGBwAfBiAGMwYHAFUHVgdXBwcAVQdYB1YHBwBZB1oHWwcHAFkHXAdaBwcAWAdcB1kHBwBYB1UHXAcHAF0HXgdfBwcAXQdgB14HBwBhB2IHYwcHAGEHZAdiBwcAYgddB18HBwBiB2QHXQcHAFUHZQdmBwcAVQdXB2UHBwBcB2YHZwcHAFwHVQdmBwcAWgdnB2gHBwBaB1wHZwcHAGkHagdrBwcAaQdsB2oHBwBsB20HagcHAGwHbgdtBwcAbgdvB20HBwBuB3AHbwcHAF8HWQdiBwcAXwdYB1kHBwBWB18HXgcHAFYHWAdfBwcAWQdjB2IHBwBZB1sHYwcHAHEHWgdoBwcAcQdyB1oHBwByB1sHWgcHAHIHcwdbBwcAcwdjB1sHBwBzB3QHYwcHAHQHYQdjBwcAdAd1B2EHBwB2B28HcAcHAHYHdwdvBwcAeAdyB3EHBwB4B3kHcgcHAHkHcwdyBwcAeQd6B3MHBwB6B3QHcwcHAHoHewd0BwcAewd1B3QHBwB7B3wHdQcHAH0Hdwd2BwcAfQd+B3cHBwB/B4AHgQcHAH8HggeABwcAgweBB4QHBwCDB38HgQcHAIUHgweEBwcAhQeGB4MHBwCGB4cHiAcHAIYHhQeHBwcAiAeJB4oHBwCIB4cHiQcHAIsHgAeCBwcAiweMB4AHBwCNB4wHiwcHAI0HjgeMBwcAjweOB40HBwCPB5AHjgcHAJEHkAePBwcAkQeSB5AHBwCTB5IHkQcHAJMHlAeSBwcAlQeWB5cHBwCVB5gHlgcHAJkHlweaBwcAmQeVB5cHBwCbB5oHnAcHAJsHmQeaBwcAnQecB54HBwCdB5sHnAcHAJ4HVwedBwcAngdlB1cHBwCLB58HjQcHAIsHoAefBwcAoAecB58HBwCgB54HnAcHAIIHoAeLBwcAggehB6AHBwChB54HoAcHAKEHZQeeBwcAfwehB4IHBwB/B6IHoQcHAKIHZQehBwcAogdmB2UHBwCDB6IHfwcHAIMHoweiBwcAowdmB6IHBwCjB2cHZgcHAIYHoweDBwcAhgekB6MHBwCkB2cHowcHAKQHaAdnBwcAiAekB4YHBwCIB6UHpAcHAKUHaAekBwcApQdxB2gHBwCKB6UHiAcHAIoHpgelBwcApgdxB6UHBwCmB3gHcQcHAI0HpwePBwcAjQefB6cHBwCfB5oHpwcHAJ8HnAeaBwcAjweoB5EHBwCPB6cHqAcHAKcHlweoBwcApweaB5cHBwCRB6kHkwcHAJEHqAepBwcAqAeWB6kHBwCoB5cHlgcHAKoHmwedBwcAqgerB5sHBwCsB6sHqgcHAKwHrQerBwcArQeuB6sHBwCtB68HrgcHAK8HsAeuBwcArwexB7AHBwCxB7IHsAcHALEHsweyBwcAnQdWB6oHBwCdB1cHVgcHAF4HqgdWBwcAXgesB6oHBwC0B7MHsQcHALQHtQezBwcAtgexB68HBwC2B7QHsQcHALcHrwetBwcAtwe2B68HBwC4B7kHugcHALgHuwe5BwcAvAe7B7gHBwC8B70HuwcHAL4HvwfABwcAvgfBB78HBwCsB2AHwgcHAKwHXgdgBwcAtwesB8IHBwC3B60HrAcHAMMHxAfFBwcAwwfGB8QHBwDHB8gHyQcHAMcHygfIBwcAywfJB8wHBwDLB8cHyQcHAMYHzAfEBwcAxgfLB8wHBwDNB84HzwcHAM0H0AfOBwcA0QfSB9MHBwDRB9QH0gcHAMUHawfDBwcAxQdpB2sHBwDVB9YH1wcHANUH2AfWBwcA2AfZB9YHBwDYB9oH2QcHANsH2AfVBwcA2wfcB9gHBwDcB9oH2AcHANwH3QfaBwcA3gfcB9sHBwDeB98H3AcHAN8H3QfcBwcA3wfgB90HBwDhB98H3gcHAOEH4gffBwcA4gfgB98HBwDiB+MH4AcHALkH4gfhBwcAuQfkB+IHBwDkB+MH4gcHAOQH5QfjBwcAuwfkB7kHBwC7B+YH5AcHAOYH5QfkBwcA5gfnB+UHBwC9B+YHuwcHAL0H6AfmBwcA6AfnB+YHBwDoB+kH5wcHAMEH6ge/BwcAwQfrB+oHBwDrB+wH6gcHAOsH7QfsBwcA1wfuB+8HBwDXB9YH7gcHANYH8AfuBwcA1gfZB/AHBwDXB/EH1QcHANcH8gfxBwcA7wfyB9cHBwDvB/MH8gcHANUH9AfbBwcA1QfxB/QHBwDbB/UH3gcHANsH9Af1BwcA3gf2B+EHBwDeB/UH9gcHAOEH9we5BwcA4Qf2B/cHBwC5B/gHugcHALkH9wf4BwcAzwf5B80HBwDPB/oH+QcHAJgH+weWBwcAmAf8B/sHBwD8B/QH+wcHAPwH9Qf0BwcA/Qf1B/wHBwD9B/YH9QcHALMH/QeyBwcAswf+B/0HBwD+B/YH/QcHAP4H9wf2BwcAtQf+B7MHBwC1B/8H/gcHAP8H9wf+BwcA/wf4B/cHBwDKBwAIyAcHAMoHAQgACAcAAQj6BwAIBwABCPkH+gcHAJYHAgipBwcAlgf7BwIIBwD7B/EHAggHAPsH9AfxBwcAqQcDCJMHBwCpBwIIAwgHAAII8gcDCAcAAgjxB/IHBwCTBwQIlAcHAJMHAwgECAcAAwjzBwQIBwADCPIH8wcHAAUIqweuBwcABQibB6sHBwAGCAcICAgHAAYICQgHCAcACggLCAwIBwAKCA0ICwgHAA4ICQgGCAcADggPCAkIBwALCBAIDAgHAAsIEQgQCAcAEggPCA4IBwASCBMIDwgHABEIFAgQCAcAEQgVCBQIBwAWCBMIEggHABYIFwgTCAcAGAgWCBkIBwAYCBcIFggHABUIGQgUCAcAFQgYCBkIBwAYCBoIFwgHABgIGwgaCAcAFQgbCBgIBwAVCBwIGwgHABEIHAgVCAcAEQgdCBwIBwALCB0IEQgHAAsIHggdCAcADQgfCCAIBwANCAcIHwgHAAkIHwgHCAcACQghCB8IBwAPCCEICQgHAA8IIgghCAcAEwgiCA8IBwATCCMIIggHABcIIwgTCAcAFwgaCCMIBwD9ByQIsgcHAP0HJQgkCAcAJQgcCCQIBwAlCBsIHAgHAPwHJQj9BwcA/AcmCCUIBwAmCBsIJQgHACYIGggbCAcAmAcmCPwHBwCYBycIJggHACcIGggmCAcAJwgjCBoIBwCVBycImAcHAJUHKAgnCAcAKAgjCCcIBwAoCCIIIwgHAJkHKAiVBwcAmQcpCCgIBwApCCIIKAgHACkIIQgiCAcAmwcpCJkHBwCbByoIKQgHACoIIQgpCAcAKggfCCEIBwAFCCsILAgHAAUIrgcrCAcALAgfCCoIBwAsCCAIHwgHALAHKwiuBwcAsActCCsIBwAtCB4IKwgHAC0IHQgeCAcAsgctCLAHBwCyByQILQgHACQIHQgtCAcAJAgcCB0IBwAuCIQHgQcHAC4ILwiEBwcAMAiBB4AHBwAwCC4IgQcHADEIgAeMBwcAMQgwCIAHBwAyCIwHjgcHADIIMQiMBwcAMwiOB5AHBwAzCDIIjgcHADQILwguCAcANAg1CC8IBwA2CC4IMAgHADYINAguCAcANwgwCDEIBwA3CDYIMAgHADgIMQgyCAcAOAg3CDEIBwA5CDIIMwgHADkIOAgyCAcAhweEBy8IBwCHB4UHhAcHADUIhwcvCAcANQiJB4cHBwA6CJIHlAcHADoIOwiSBwcAPAiUBwQIBwA8CDoIlAcHAD0IBAjzBwcAPQg8CAQIBwA+CO8H7gcHAD4IPwjvBwcAPwjzB+8HBwA/CD0I8wcHAEAI7gfwBwcAQAg+CO4HBwBBCDsIOggHAEEIQgg7CAcAQwg6CDwIBwBDCEEIOggHAEQIPAg9CAcARAhDCDwIBwBFCD0IPwgHAEUIRAg9CAcARgg/CD4IBwBGCEUIPwgHAEcIPghACAcARwhGCD4IBwAzCJIHOwgHADMIkAeSBwcAOQg7CEIIBwA5CDMIOwgHAEgIwAdJCAcASAi+B8AHBwBKCEsITAgHAEoITQhLCAcATghJCE8IBwBOCEgISQgHAFAITAhRCAcAUAhKCEwIBwBSCMAHvwcHAFIIUwjABwcAVAhSCFUIBwBUCFMIUggHAFYIvwfqBwcAVghSCL8HBwBSCFcIVQgHAFIIVghXCAcA6gdYCFYIBwDqB+wHWAgHAFYIWQhXCAcAVghYCFkIBwBTCEkIwAcHAFMIWghJCAcAWwhTCFQIBwBbCFoIUwgHAFoITwhJCAcAWghcCE8IBwBdCFoIWwgHAF0IXAhaCAcAXghfCGAIBwBeCGEIXwgHAGEI0gdfCAcAYQjTB9IHBwC6B2IIuAcHALoHYwhiCAcAYwjOB2IIBwBjCM8HzgcHAPgHYwi6BwcA+AdkCGMIBwBkCM8HYwgHAGQI+gfPBwcA/wdkCPgHBwD/B2UIZAgHAGUI+gdkCAcAZQgACPoHBwC1B2UI/wcHALUHZghlCAcAZggACGUIBwBmCMgHAAgHALQHZgi1BwcAtAdnCGYIBwBnCMgHZggHAGcIyQfIBwcAtgdnCLQHBwC2B2gIZwgHAGgIyQdnCAcAaAjMB8kHBwC3B2gItgcHALcHaQhoCAcAaQjMB2gIBwBpCMQHzAcHAMIHaQi3BwcAwgdqCGkIBwBqCMQHaQgHAGoIxQfEBwcAYAdqCMIHBwBgB2sIaggHAGsIxQdqCAcAawhpB8UHBwBdB2sIYAcHAF0HbAhrCAcAbAhpB2sIBwBsCGwHaQcHAGQHbAhdBwcAZAdtCGwIBwBtCGwHbAgHAG0IbgdsBwcAYQdtCGQHBwBhB24IbQgHAG4IbgdtCAcAbghwB24HBwB1B24IYQcHAHUHbwhuCAcAbwhwB24IBwBvCHYHcAcHAHwHbwh1BwcAfAdwCG8IBwBwCHYHbwgHAHAIfQd2BwcAVAhxCFsIBwBUCHIIcQgHAHIISghxCAcAcghNCEoIBwBbCHMIXQgHAFsIcQhzCAcAcQhQCHMIBwBxCEoIUAgHAFUIdAhUCAcAVQh1CHQIBwBNCHYISwgHAE0Idwh2CAcAdQhXCHgIBwB1CFUIVwgHAHgIWQh5CAcAeAhXCFkIBwBUCHoIcggHAFQIdAh6CAcAcgh3CE0IBwByCHoIdwgHAHUIewh0CAcAdQh8CHsIBwB9CHwIfggHAH0Iewh8CAcAfwiACIEIBwB/CIIIgAgHAIMIhAiFCAcAgwiGCIQIBwB1CIcIfAgHAHUIeAiHCAcAfAiICH4IBwB8CIcIiAgHAHgIiQiHCAcAeAh5CIkIBwCHCIoIiAgHAIcIiQiKCAcAiwiMCI0IBwCLCI4IjAgHAI8Iewh9CAcAjwiQCHsIBwCNCIYIgwgHAI0IjAiGCAcAfwiQCI8IBwB/CIEIkAgHAH4IkQh9CAcAfgiSCJEIBwB/CJMIgggHAH8IlAiTCAcAkgiICJUIBwCSCH4IiAgHAJUIigiWCAcAlQiICIoIBwB9CJcIjwgHAH0IkQiXCAcAjwiUCH8IBwCPCJcIlAgHAJIImAiRCAcAkgiZCJgIBwC8B5kIvQcHALwHmAiZCAcAmgibCJwIBwCaCJ0ImwgHAJQImwiTCAcAlAicCJsIBwCSCJ4ImQgHAJIIlQieCAcAmQjoB70HBwCZCJ4I6AcHAJUInwieCAcAlQiWCJ8IBwCeCOkH6AcHAJ4InwjpBwcAkQigCJcIBwCRCJgIoAgHAKEImAi8BwcAoQigCJgIBwCXCJwIlAgHAJcIoAicCAcAmgigCKEIBwCaCJwIoAgHAJ0I0gfUBwcAnQiaCNIHBwDQB9QH0QcHANAHnQjUBwcA0wfQB9EHBwDTB84H0AcHAKEIYAhfCAcAoQi8B2AIBwBeCGIIYQgHAF4IuAdiCAcAYAi4B14IBwBgCLwHuAcHAJoIXwjSBwcAmgihCF8IBwBhCM4H0wcHAGEIYgjOBwcAgAiFCIQIBwCACHYIhQgHAIYIgAiECAcAhgiBCIAIBwB2CIMIhQgHAHYIdwiDCAcAjgiQCIwIBwCOCHsIkAgHAIsIewiOCAcAiwh0CHsIBwB6CIsIjQgHAHoIdAiLCAcAjAiBCIYIBwCMCJAIgQgHAHcIjQiDCAcAdwh6CI0IBwCiCOUFVAcHAKII7AXlBQcAowjsBaIIBwCjCO0F7AUHAKQI7QWjCAcApAjuBe0FBwClCO4FpAgHAKUI7wXuBQcApQjcBe8FBwClCPAF3AUHAKYI8QXwBQcApginCPEFBwDxBagI8gUHAPEFpwioCAcA8gWpCPMFBwDyBagIqQgHAPMFqgj0BQcA8wWpCKoIBwD7BaoIqwgHAPsF9AWqCAcA/AWrCKwIBwD8BfsFqwgHAFQHrAitCAcAVAf8BawIBwCuCFQHrQgHAK4IoghUBwcArwiiCK4IBwCvCKMIoggHALAIowivCAcAsAikCKMIBwCwCKUIpAgHALAIsQilCAcAsQjwBaUIBwCxCKYI8AUHALIIpwimCAcAsgizCKcIBwCnCLQIqAgHAKcIswi0CAcAqAi1CKkIBwCoCLQItQgHAKkItgiqCAcAqQi1CLYIBwCqCLcIqwgHAKoItgi3CAcAqwi4CKwIBwCrCLcIuAgHAKwIuQitCAcArAi4CLkIBwC5CK4IrQgHALkIugiuCAcAugivCK4IBwC6CLsIrwgHALsIsAivCAcAuwi8CLAIBwC8CLEIsAgHALwIvQixCAcAvQimCLEIBwC9CLIIpggHAL4IvwjACAcAvgjBCL8IBwC/CMIIwwgHAL8IwQjCCAcAwwjECMUIBwDDCMIIxAgHAMUIxgjHCAcAxQjECMYIBwDHCMgIyQgHAMcIxgjICAcAyQjKCMsIBwDJCMgIyggHAMsIzAjNCAcAywjKCMwIBwDMCM4IzQgHAMwIzwjOCAcAzwjQCM4IBwDPCNEI0AgHANEI0gjQCAcA0QjTCNIIBwDTCNQI0ggHANMI1QjUCAcA1QjACNQIBwDVCL4IwAgHANYIvgjXCAcA1gjBCL4IBwDCCNYI2AgHAMIIwQjWCAcAxAjYCNkIBwDECMII2AgHAMQI2gjGCAcAxAjZCNoIBwDGCNsIyAgHAMYI2gjbCAcAyAjcCMoIBwDICNsI3AgHAMoI3QjMCAcAygjcCN0IBwDdCM8IzAgHAN0I3gjPCAcA3gjRCM8IBwDeCN8I0QgHAN8I0wjRCAcA3wjgCNMIBwDgCNUI0wgHAOAI4QjVCAcA1wjVCOEIBwDXCL4I1QgHANkI1gjXCAcA2QjYCNYIBwDaCNcI4QgHANoI2QjXCAcA2wjhCOAIBwDbCNoI4QgHANsI3QjcCAcA2wjgCN0IBwDgCN4I3QgHAOAI3wjeCAcA4gjjCOQIBwDiCOUI4wgHALkI5gi6CAcAuQjnCOYIBwC4COcIuQgHALgI6AjnCAcAtwjoCLgIBwC3COkI6AgHALYI6Qi3CAcAtgjqCOkIBwC1COoItggHALUI6wjqCAcAtAjrCLUIBwC0COwI6wgHALMI7Ai0CAcAswjtCOwIBwCyCO0IswgHALII7gjtCAcA7wjwCPEIBwDvCPII8AgHAPMI8gjvCAcA8wj0CPIIBwDkCPQI8wgHAOQI4wj0CAcA5Qj1COMIBwDlCPYI9QgHAPYI9wj1CAcA9gj4CPcIBwDnCPkI5ggHAOcI+gj5CAcA+gjOCPkIBwD6CM0IzggHAOgI+gjnCAcA6Aj7CPoIBwD7CM0I+ggHAPsIywjNCAcA6Qj7COgIBwDpCPwI+wgHAPwIywj7CAcA/AjJCMsIBwDqCPwI6QgHAOoI/Qj8CAcA/QjJCPwIBwD9CMcIyQgHAOsI/QjqCAcA6wj+CP0IBwD+CMcI/QgHAP4IxQjHCAcA7Aj+COsIBwDsCP8I/ggHAP8IxQj+CAcA/wjDCMUIBwDtCP8I7AgHAO0IAAn/CAcAAAnDCP8IBwAACb8IwwgHAO4IAAntCAcA7ggBCQAJBwABCb8IAAkHAAEJwAi/CAcA8ggCCfAIBwDyCAMJAgkHAAMJBAkCCQcAAwkFCQQJBwD0CAMJ8ggHAPQIBgkDCQcABgkFCQMJBwAGCQcJBQkHAOMIBgn0CAcA4wj1CAYJBwD1CAcJBgkHAPUI9wgHCQcA4ggICQkJBwDiCOQICAkHAPcICgkLCQcA9wj4CAoJBwDkCAwJCAkHAOQI8wgMCQcABwkLCQ0JBwAHCfcICwkHAPMIDgkMCQcA8wjvCA4JBwAFCQ0JDwkHAAUJBwkNCQcA7wgQCQ4JBwDvCPEIEAkHAAQJDwkRCQcABAkFCQ8JBwDiCBIJ5QgHAOIICQkSCQcAEwnxCPAIBwATCRAJ8QgHAOUIFAn2CAcA5QgSCRQJBwD2CAoJ+AgHAPYIFAkKCQcAFQnwCAIJBwAVCRMJ8AgHABEJAgkECQcAEQkVCQIJBwAWCbsIuggHABYJFwm7CAcA0AgYCc4IBwDQCBkJGAkHABcJvAi7CAcAFwkaCbwIBwDSCBkJ0AgHANIIGwkZCQcAvAgcCb0IBwC8CBoJHAkHAB0J0gjUCAcAHQkbCdIIBwC9CB4JsggHAL0IHAkeCQcAHwnUCMAIBwAfCR0J1AgHAOYIFgm6CAcA5gggCRYJBwCyCCEJ7ggHALIIHgkhCQcA+QggCeYIBwD5CCIJIAkHAM4IIgn5CAcAzggYCSIJBwDuCCMJAQkHAO4IIQkjCQcAAQkfCcAIBwABCSMJHwkHAAkJJAklCQcACQkICSQJBwAWCSQJFwkHABYJJQkkCQcAJgkKCScJBwAmCQsJCgkHABkJJwkYCQcAGQkmCScJBwAICSgJJAkHAAgJDAkoCQcAFwkoCRoJBwAXCSQJKAkHAA0JJgkpCQcADQkLCSYJBwAbCSYJGQkHABsJKQkmCQcADAkqCSgJBwAMCQ4JKgkHABoJKgkcCQcAGgkoCSoJBwAPCSkJKwkHAA8JDQkpCQcAHQkpCRsJBwAdCSsJKQkHACoJEAksCQcAKgkOCRAJBwAcCSwJHgkHABwJKgksCQcAEQkrCS0JBwARCQ8JKwkHAB8JKwkdCQcAHwktCSsJBwAuCRYJIAkHAC4JJQkWCQcACQkuCRIJBwAJCSUJLgkHAB4JLwkhCQcAHgksCS8JBwATCSwJEAkHABMJLwksCQcAMAkgCSIJBwAwCS4JIAkHABIJMAkUCQcAEgkuCTAJBwAnCSIJGAkHACcJMAkiCQcAFAknCQoJBwAUCTAJJwkHACEJMQkjCQcAIQkvCTEJBwAVCS8JEwkHABUJMQkvCQcAIwktCR8JBwAjCTEJLQkHABEJMQkVCQcAEQktCTEJBwAyCTMJNAkHADIJNQkzCQcANgk3CTgJBwA2CTkJNwkHADoJNAk7CQcAOgkyCTQJBwA8CToJOwkHADwJPQk6CQcAOAk+CT8JBwA4CTcJPgkHAD4JQAk/CQcAPglBCUAJBwAyCUIJNQkHADIJQwlCCQcAOQlECTcJBwA5CUUJRAkHADoJQwkyCQcAOglGCUMJBwBHCToJPQkHAEcJRgk6CQcARAk+CTcJBwBECUgJPgkHAD4JSQlBCQcAPglICUkJBwBDCUoJQgkHAEMJSwlKCQcARQlMCUQJBwBFCU0JTAkHAEYJSwlDCQcARglOCUsJBwBHCU4JRgkHAEcJTwlOCQcARAlQCUgJBwBECUwJUAkHAEgJUQlJCQcASAlQCVEJBwBLCVIJSgkHAEsJUwlSCQcATQlUCUwJBwBNCVUJVAkHAE4JUwlLCQcATglWCVMJBwBPCVYJTgkHAE8JVwlWCQcATAlYCVAJBwBMCVQJWAkHAFAJWQlRCQcAUAlYCVkJBwBTCVoJUgkHAFMJWwlaCQcAVQlcCVQJBwBVCV0JXAkHAFYJWwlTCQcAVgleCVsJBwBXCV4JVgkHAFcJXwleCQcAVAlgCVgJBwBUCVwJYAkHAFgJYQlZCQcAWAlgCWEJBwBiCWMJZAkHAGIJZQljCQcAZglnCWgJBwBmCWkJZwkHAGQJaglrCQcAZAljCWoJBwBrCWwJbQkHAGsJaglsCQcAbglpCWYJBwBuCW8JaQkHAHAJbwluCQcAcAlxCW8JBwByCTgJcwkHAHIJNgk4CQcAdAk2CXIJBwB0CTkJNgkHAHUJOQl0CQcAdQlFCTkJBwB2CUUJdQkHAHYJTQlFCQcAdwlNCXYJBwB3CVUJTQkHAHgJVQl3CQcAeAldCVUJBwB5CWcJegkHAHkJaAlnCQcAewloCXkJBwB7CWYJaAkHAHwJZgl7CQcAfAluCWYJBwB9CW4JfAkHAH0JcAluCQcAfglwCX0JBwB+CXEJcAkHAH8JYQmACQcAfwlZCWEJBwCBCVkJfwkHAIEJUQlZCQcAgglRCYEJBwCCCUkJUQkHAIMJSQmCCQcAgwlBCUkJBwCECUEJgwkHAIQJQAlBCQcAhQlACYQJBwCFCT8JQAkHAHMJPwmFCQcAcwk4CT8JBwAzCYYJNAkHADMJhwmGCQcAhwlzCYYJBwCHCXIJcwkHADUJhwkzCQcANQmICYcJBwCICXIJhwkHAIgJdAlyCQcAQgmICTUJBwBCCYkJiAkHAIkJdAmICQcAiQl1CXQJBwBKCYkJQgkHAEoJigmJCQcAigl1CYkJBwCKCXYJdQkHAFIJiglKCQcAUgmLCYoJBwCLCXYJigkHAIsJdwl2CQcAWgmLCVIJBwBaCYwJiwkHAIwJdwmLCQcAjAl4CXcJBwBiCY0JZQkHAGIJjgmNCQcAjgl6CY0JBwCOCXkJegkHAGQJjgliCQcAZAmPCY4JBwCPCXkJjgkHAI8Jewl5CQcAawmPCWQJBwBrCZAJjwkHAJAJewmPCQcAkAl8CXsJBwBtCZAJawkHAG0JkQmQCQcAkQl8CZAJBwCRCX0JfAkHAGwJkQltCQcAbAmSCZEJBwCSCX0JkQkHAJIJfgl9CQcAVwmTCV8JBwBXCZQJkwkHAJQJgAmTCQcAlAl/CYAJBwBPCZQJVwkHAE8JlQmUCQcAlQl/CZQJBwCVCYEJfwkHAEcJlQlPCQcARwmWCZUJBwCWCYEJlQkHAJYJggmBCQcAPQmWCUcJBwA9CZcJlgkHAJcJggmWCQcAlwmDCYIJBwA8CZcJPQkHADwJmAmXCQcAmAmDCZcJBwCYCYQJgwkHADsJmAk8CQcAOwmZCZgJBwCZCYQJmAkHAJkJhQmECQcANAmZCTsJBwA0CYYJmQkHAIYJhQmZCQcAhglzCYUJBwCaCVoJWwkHAJoJmwlaCQcAXAmcCZ0JBwBcCV0JnAkHAJoJXgmeCQcAmglbCV4JBwCeCV8JnwkHAJ4JXglfCQcAYAmdCaAJBwBgCVwJnQkHAGEJoAmhCQcAYQlgCaAJBwBdCaIJnAkHAF0JeAmiCQcAowlhCaEJBwCjCYAJYQkHAIwJmwmkCQcAjAlaCZsJBwCMCaIJeAkHAIwJpAmiCQcAnwmTCaUJBwCfCV8JkwkHAKMJkwmACQcAowmlCZMJBwCmCZsJmgkHAKYJpwmbCQcApwljCWUJBwCnCaYJYwkHAGcJqAmpCQcAZwlpCagJBwCcCagJnQkHAJwJqQmoCQcAqgljCaYJBwCqCWoJYwkHAJ4JpgmaCQcAngmqCaYJBwCqCZ8JqwkHAKoJngmfCQcAqwlqCaoJBwCrCWwJagkHAGkJrAmoCQcAaQlvCawJBwCdCawJoAkHAJ0JqAmsCQcArQmgCawJBwCtCaEJoAkHAHEJrAlvCQcAcQmtCawJBwBnCa4JegkHAGcJqQmuCQcAogmpCZwJBwCiCa4JqQkHAK0JfgmvCQcArQlxCX4JBwCtCaMJoQkHAK0JrwmjCQcAZQmwCacJBwBlCY0JsAkHAJsJsAmkCQcAmwmnCbAJBwCuCaQJsAkHAK4JogmkCQcAjQmuCbAJBwCNCXoJrgkHALEJbAmrCQcAsQmSCWwJBwClCasJnwkHAKUJsQmrCQcApQmvCbEJBwClCaMJrwkHALEJfgmSCQcAsQmvCX4JBwCyCbMJtAkHALIJtQmzCQcAtgm3CbgJBwC2CbkJtwkHALQJugm7CQcAtAmzCboJBwC8CboJvQkHALwJuwm6CQcAuAm+Cb8JBwC4CbcJvgkHAMAJvgnBCQcAwAm/Cb4JBwC2CcIJuQkHALYJwwnCCQcAwQnECcAJBwDBCcUJxAkHAMYJtgm4CQcAxgnDCbYJBwC5CccJtwkHALkJwgnHCQcAyAnJCcoJBwDICcsJyQkHAMwJzQnOCQcAzAnPCc0JBwDQCdEJ0gkHANAJ0wnRCQcA1AnVCdYJBwDUCdcJ1QkHANgJygnZCQcA2AnICcoJBwDOCdoJ2wkHAM4JzQnaCQcA0gncCd0JBwDSCdEJ3AkHAN4J1gnfCQcA3gnUCdYJBwDLCeAJyQkHAMsJ4QngCQcA4gnjCeQJBwDiCeUJ4wkHAOEJ5gngCQcA4QnnCeYJBwDQCecJ0wkHANAJ5gnnCQcA6AnjCeUJBwDoCekJ4wkHAOoJ6AnrCQcA6gnpCegJBwDkCewJ4gkHAOQJ7QnsCQcA7gntCe8JBwDuCewJ7QkHAPAJygnJCQcA8AnxCcoJBwDOCfAJzAkHAM4J8QnwCQcAyAnyCcsJBwDICfMJ8gkHAM8J8wnNCQcAzwnyCfMJBwDxCdkJygkHAPEJ9AnZCQcA2wnxCc4JBwDbCfQJ8QkHANgJ8wnICQcA2An1CfMJBwDNCfUJ2gkHAM0J8wn1CQcA6wn2CeoJBwDrCfcJ9gkHANMJ+AnRCQcA0wn5CfgJBwDSCfoJ0AkHANIJ+wn6CQcA0Qn8CdwJBwDRCfgJ/AkHAN0J+wnSCQcA3Qn9CfsJBwD+Cf8JAAoHAP4JAQr/CQcAAQrXCf8JBwABCtUJ1wkHAOsJAgr3CQcA6wkDCgIKBwADCvoJAgoHAAMK0An6CQcA6AkDCusJBwDoCQQKAwoHAAQK0AkDCgcABArmCdAJBwDlCQQK6AkHAOUJBQoECgcABQrmCQQKBwAFCuAJ5gkHAOIJBQrlCQcA4gkGCgUKBwAGCuAJBQoHAAYKyQngCQcA7AkGCuIJBwDsCQcKBgoHAAcKyQkGCgcABwrwCckJBwDuCQcK7AkHAO4JCAoHCgcACArwCQcKBwAICswJ8AkHAO8JCAruCQcA7wkJCggKBwAJCswJCAoHAAkKzwnMCQcA7QkJCu8JBwDtCQoKCQoHAAoKzwkJCgcACgryCc8JBwDkCQoK7QkHAOQJCwoKCgcACwryCQoKBwALCssJ8gkHAOMJCwrkCQcA4wkMCgsKBwAMCssJCwoHAAwK4QnLCQcA6QkMCuMJBwDpCQ0KDAoHAA0K4QkMCgcADQrnCeEJBwDqCQ0K6QkHAOoJDgoNCgcADgrnCQ0KBwAOCtMJ5wkHAPYJDgrqCQcA9gkPCg4KBwAPCtMJDgoHAA8K+QnTCQcAEAoRChIKBwAQChMKEQoHABQKFQoWCgcAFAoXChUKBwAYChkKGgoHABgKGwoZCgcAFQocCh0KBwAVChcKHAoHAB4KGwoYCgcAHgofChsKBwAgChMKEAoHACAKIQoTCgcAGgohCiAKBwAaChkKIQoHABIKIgojCgcAEgoRCiIKBwAWCiIKFAoHABYKIwoiCgcAJAoRChMKBwAkCiUKEQoHABIKJgoQCgcAEgonCiYKBwAoChYKFQoHACgKKQoWCgcAFAoqChcKBwAUCisKKgoHACwKGQobCgcALAotChkKBwAaCi4KGAoHABoKLwouCgcAHAowCh0KBwAcCjEKMAoHABcKMQocCgcAFwoqCjEKBwAwChUKHQoHADAKKAoVCgcAMgobCh8KBwAyCiwKGwoHADMKHwoeCgcAMwoyCh8KBwAYCjMKHgoHABgKLgozCgcANAoTCiEKBwA0CiQKEwoHABAKNQogCgcAEAomCjUKBwAtCiEKGQoHAC0KNAohCgcAIAovChoKBwAgCjUKLwoHABEKNgoiCgcAEQolCjYKBwA3ChIKIwoHADcKJwoSCgcAIgorChQKBwAiCjYKKwoHACkKIwoWCgcAKQo3CiMKBwD2CTgKOQoHAPYJ9wk4CgcAJgo5CjgKBwAmCicKOQoHADoKKQooCgcAOgo7CikKBwA7CvgJ+QkHADsKOgr4CQcALwo8Ci4KBwAvCj0KPAoHAPsJPQr6CQcA+wk8Cj0KBwA+CvgJOgoHAD4K/An4CQcAMAo6CigKBwAwCj4KOgoHAC4KPwozCgcALgo8Cj8KBwD9CTwK+wkHAP0JPwo8CgcA9wlACjgKBwD3CQIKQAoHACYKQAo1CgcAJgo4CkAKBwACCj0KQAoHAAIK+gk9CgcANQo9Ci8KBwA1CkAKPQoHAEEK9gk5CgcAQQoPCvYJBwA3CjkKJwoHADcKQQo5CgcAOwo3CikKBwA7CkEKNwoHAEEK+QkPCgcAQQo7CvkJBwBCCkMKRAoHAEIKRQpDCgcAJApDCiUKBwAkCkQKQwoHAEYKKgorCgcARgpHCioKBwBHCkgKSQoHAEcKRgpICgcALApKCi0KBwAsCksKSgoHAEwKSwpNCgcATApKCksKBwBHCk4KTwoHAEcKSQpOCgcAKgpPCjEKBwAqCkcKTwoHADIKSwosCgcA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1woHAPAK7wrUCgcA8QrXCtkKBwDxCvAK1woHAPIK2QrbCgcA8grxCtkKBwDGCtsKqwoHAMYK8grbCgcA0wrzCt0KBwDTCu0K8woHAN0K9AriCgcA3QrzCvQKBwDiCugKzAoHAOIK9AroCgcA9Qr2CvcKBwD1CvgK9goHAPgK+Qr2CgcA+Ar6CvkKBwD7CvcK/AoHAPsK9Qr3CgcA/Qr8Cv4KBwD9CvsK/AoHAP8K/goACwcA/wr9Cv4KBwABCwALAgsHAAEL/woACwcAAwsCCwQLBwADCwELAgsHAAULBAsGCwcABQsDCwQLBwAHCwYLCAsHAAcLBQsGCwcACQsICwoLBwAJCwcLCAsHAAsLCgsMCwcACwsJCwoLBwANCwwLDgsHAA0LCwsMCwcADwsOCxALBwAPCw0LDgsHABELEAsSCwcAEQsPCxALBwATCxILFAsHABMLEQsSCwcAFQsUCxYLBwAVCxMLFAsHABcLFgsYCwcAFwsVCxYLBwAZCxgLGgsHABkLFwsYCwcAGwsaCxwLBwAbCxkLGgsHAB0LHAseCwcAHQsbCxwLBwAfCx4LIAsHAB8LHQseCwcAIQsgCyILBwAhCx8LIAsHACMLIgskCwcAIwshCyILBwAlCyQLJgsHACULIwskCwcAJwsmCygLBwAnCyULJgsHAPoKKAv5CgcA+gonCygLBwAmCykLKAsHACYLKgspCwcAKgsrCykLBwAqCywLKwsHACQLKgsmCwcAJAstCyoLBwAtCywLKgsHAC0LLgssCwcAIgstCyQLBwAiCy8LLQsHAC8LLgstCwcALwswCy4LBwAgCy8LIgsHACALMQsvCwcAMQswCy8LBwAxCzILMAsHAB4LMQsgCwcAHgszCzELBwAzCzILMQsHADMLNAsyCwcAHAszCx4LBwAcCzULMwsHADULNAszCwcANQs2CzQLBwAaCzULHAsHABoLNws1CwcANws2CzULBwA3CzgLNgsHABgLNwsaCwcAGAs5CzcLBwA5CzgLNwsHADkLOgs4CwcAFgs5CxgLBwAWCzsLOQsHADsLOgs5CwcAOws8CzoLBwAUCzsLFgsHABQLPQs7CwcAPQs8CzsLBwA9Cz4LPAsHABILPQsUCwcAEgs/Cz0LBwA/Cz4LPQsHAD8LQAs+CwcAEAs/CxILBwAQC0ELPwsHAEELQAs/CwcAQQtCC0ALBwAOC0ELEAsHAA4LQwtBCwcAQwtCC0ELBwBDC0QLQgsHAAwLQwsOCwcADAtFC0MLBwBFC0QLQwsHAEULRgtECwcACgtFCwwLBwAKC0cLRQsHAEcLRgtFCwcARwtIC0YLBwAIC0cLCgsHAAgLSQtHCwcASQtIC0cLBwBJC0oLSAsHAAYLSQsICwcABgtLC0kLBwBLC0oLSQsHAEsLTAtKCwcABAtLCwYLBwAEC00LSwsHAE0LTAtLCwcATQtOC0wLBwACC00LBAsHAAILTwtNCwcATwtOC00LBwBPC1ALTgsHAAALTwsCCwcAAAtRC08LBwBRC1ALTwsHAFELUgtQCwcA/gpRCwALBwD+ClMLUQsHAFMLUgtRCwcAUwtUC1ILBwD8ClML/goHAPwKVQtTCwcAVQtUC1MLBwBVC1YLVAsHAPcKVQv8CgcA9wpXC1ULBwBXC1YLVQsHAFcLWAtWCwcA9gpXC/cKBwD2ClkLVwsHAFkLWAtXCwcAWQtaC1gLBwD5ClkL9goHAPkKWwtZCwcAWwtaC1kLBwBbC1wLWgsHACgLWwv5CgcAKAspC1sLBwApC1wLWwsHACkLKwtcCwcAXQsVCxcLBwBdC14LFQsHAF4LEwsVCwcAXgtfCxMLBwBfCxELEwsHAF8LYAsRCwcAYAsPCxELBwBgC2ELDwsHAGILXgtdCwcAYgtjC14LBwBjC18LXgsHAGMLZAtfCwcAZAtgC18LBwBkC2ULYAsHAGULYQtgCwcAZQtmC2ELBwBnC2MLYgsHAGcLaAtjCwcAaAtkC2MLBwBoC2kLZAsHAGkLZQtkCwcAaQtqC2ULBwBqC2YLZQsHAGoLawtmCwcA9QppC2gLBwD1CvsKaQsHAP0KaQv7CgcA/QpqC2kLBwD/CmoL/QoHAP8KawtqCwcAbAsBCwMLBwBsC20LAQsHAG4LAwsFCwcAbgtsCwMLBwD/Cm0LawsHAP8KAQttCwcAbwsFCwcLBwBvC24LBQsHAAcLCwsNCwcABwsJCwsLBwAPCwcLDQsHAA8LbwsHCwcA+ApoC2cLBwD4CvUKaAsHAHALJwv6CgcAcAtxCycLBwAlC3ELIwsHACULJwtxCwcA+gpnC3ALBwD6CvgKZwsHAHILGwsdCwcAcgtzCxsLBwBzCxkLGwsHAHMLdAsZCwcAHwtyCx0LBwAfCyELcgsHAF0LGQt0CwcAXQsXCxkLBwAjC3ILIQsHACMLcQtyCwcAcAt0C3MLBwBwC2cLdAsHAHELcwtyCwcAcQtwC3MLBwBnC10LdAsHAGcLYgtdCwcAvwnGCbgJBwC/CXULxgkHAMAJdQu/CQcAwAnECXULBwC3CXYLvgkHALcJxwl2CwcAdgvBCb4JBwB2C8UJwQkHALIJdwu1CQcAsgl4C3cLBwC9CXkLvAkHAL0Jegt5CwcAtQl7C7MJBwC1CXcLewsHALQJeAuyCQcAtAl8C3gLBwCzCX0LugkHALMJewt9CwcAugl6C70JBwC6CX0LegsHALsJfAu0CQcAuwl+C3wLBwC8CX4LuwkHALwJeQt+CwcAwwl/C8IJBwDDCYALfwsHAMUJgQvECQcAxQmCC4ELBwDGCYALwwkHAMYJgwuACwcAwgmEC8cJBwDCCX8LhAsHAHULgwvGCQcAdQuFC4MLBwDECYULdQsHAMQJgQuFCwcAxwmGC3YLBwDHCYQLhgsHAHYLggvFCQcAdguGC4ILBwCHC38LgAsHAIcLiAt/CwcAhwuJC4gLBwCHC4oLiQsHAIELiwuMCwcAgQuCC4sLBwCNC4wLiwsHAI0LjguMCwcAhwuDC48LBwCHC4ALgwsHAI8LiguHCwcAjwuQC4oLBwCIC4QLfwsHAIgLkQuECwcAkQuJC5ILBwCRC4gLiQsHAJMLgwuFCwcAkwuPC4MLBwCPC5QLkAsHAI8LkwuUCwcAjAuFC4ELBwCMC5MLhQsHAIwLlAuTCwcAjAuOC5QLBwCVC4QLkQsHAJULhguECwcAkQuWC5ULBwCRC5ILlgsHAJULgguGCwcAlQuLC4ILBwCLC5YLjQsHAIsLlQuWCwcAlwuKC5gLBwCXC4kLigsHAJgLeAuXCwcAmAt3C3gLBwCOC5kLmgsHAI4LjQuZCwcAeQuaC5kLBwB5C3oLmgsHAJsLiguQCwcAmwuYC4oLBwCYC3sLdwsHAJgLmwt7CwcAlwuSC4kLBwCXC5wLkgsHAJwLeAt8CwcAnAuXC3gLBwCdC5ALlAsHAJ0LmwuQCwcAmwt9C3sLBwCbC50LfQsHAJ0LjguaCwcAnQuUC44LBwCdC3oLfQsHAJ0Lmgt6CwcAnAuWC5ILBwCcC54LlgsHAJ4LfAt+CwcAngucC3wLBwCeC40LlgsHAJ4LmQuNCwcAmQt+C3kLBwCZC54LfgsHAJ8LoAuhCwcAnwuiC6ALBwCjC6QLpQsHAKMLpgukCwcApwuhC6gLBwCnC58LoQsHAKYLqQukCwcApguqC6kLBwCrC6gLrAsHAKsLpwuoCwcAqgutC6kLBwCqC64LrQsHAK4LrwutCwcArguwC68LBwCwC7ELrwsHALALsguxCwcAsgusC7ELBwCyC6sLrAsHALALqwuyCwcAsAuuC6sLBwCnC64LqgsHAKcLqwuuCwcAnwuqC6YLBwCfC6cLqgsHAKYLogufCwcApgujC6ILBwCpC7MLpAsHAKkLtAuzCwcAtAu1C7MLBwC0C7YLtQsHAK0LtAupCwcArQu3C7QLBwC3C7YLtAsHALcLuAu2CwcArwu3C60LBwCvC7kLtwsHALkLuAu3CwcAuQu6C7gLBwCxC7kLrwsHALELuwu5CwcAuwu6C7kLBwC7C7wLugsHAKwLuwuxCwcArAu9C7sLBwC9C7wLuwsHAL0Lvgu8CwcAqAu9C6wLBwCoC78LvQsHAL8Lvgu9CwcAvwvAC74LBwChC78LqAsHAKELwQu/CwcAwQvAC78LBwDBC8ILwAsHAKALwwvECwcAoAulC8MLBwDEC8ILwQsHAMQLxQvCCwcApAvDC6ULBwCkC7MLwwsHALMLxgvDCwcAswu1C8YLBwAfBx0HHgcHAB8HIQcdBwcAHwd0BiIHBwAfB3UGdAYHACMHIAciBwcAIwclByAHBwAjB3cGJgcHACMHdgZ3BgcAJwckByYHBwAnBykHJAcHACcHeQYqBwcAJwd4BnkGBwArBygHKgcHACsHLgcoBwcAKwd7BiwHBwArB3oGewYHAMgCeQHHAgcAyAK9AnkBBwDKAr0CyAIHAMoCrAG9AgcAzAKsAcoCBwDMAqsBrAEHAM4CqwHMAgcAzgKpAasBBwDQAqkBzgIHANACqgGpAQcA1gPSA9QDBwDWA9MD0gMHANYDqgHQAgcA1gPVA6oBBwDjAeYB4QEHAOMB3QLmAQcA6AHdAuMBBwDoAd8C3QIHACYD3wLoAQcAJgMjA98CBwAmAykDJwMHACYDJQMpAwcAQAQkAycDBwBABEEEJAMHAEYBSgFFAQcARgFIAUoBBwBLAUgBRgEHAEsBTAFIAQcATgFMAUsBBwBOAU8BTAEHAFEBTwFOAQcAUQFSAU8BBwBUAVIBUQEHAFQBVQFSAQcAHgJVAVQBBwAeAh8CVQEHAEADGAFFAQcAQAM9AxgBBwBAA0MDQQMHAEADPwNDAwcAxwvIC8kLBwDHC8oLyAsHAMsLzAvNCwcAywvOC8wLBwDKC88LyAsHAMoL0AvPCwcA0QvOC8sLBwDRC9ILzgsHANAL0wvPCwcA0AvUC9MLBwDVC9EL1gsHANUL0gvRCwcA1AvXC9MLBwDUC9gL1wsHANkL1QvWCwcA2QvaC9ULBwDYC9sL1wsHANgL3AvbCwcA3QvaC9kLBwDdC94L2gsHAN8L4AvhCwcA3wviC+ALBwDcC+ML2wsHANwL5AvjCwcAzQvlC8sLBwDNC+YL5QsHAMgL5gvJCwcAyAvlC+YLBwDnC8wLzgsHAOcL6AvMCwcAxwvnC8oLBwDHC+gL5wsHAMsL6QvRCwcAywvlC+kLBwDPC+ULyAsHAM8L6QvlCwcA6gvOC9ILBwDqC+cLzgsHAMoL6gvQCwcAygvnC+oLBwDrC9EL6QsHAOsL1gvRCwcA0wvpC88LBwDTC+sL6QsHANUL6gvSCwcA1QvsC+oLBwDsC9AL6gsHAOwL1AvQCwcA1gvtC9kLBwDWC+sL7QsHANcL6wvTCwcA1wvtC+sLBwDuC9UL2gsHAO4L7AvVCwcA1AvuC9gLBwDUC+wL7gsHAOML2QvtCwcA4wvdC9kLBwDbC+0L1wsHANsL4wvtCwcA3gvuC9oLBwDeC+QL7gsHAOQL2AvuCwcA5AvcC9gLBwDkC+8L8AsHAOQL3gvvCwcA4wvwC/ELBwDjC+QL8AsHAPIL4wvxCwcA8gvdC+MLBwDvC90L8gsHAO8L3gvdCwcA8AvzC/QLBwDwC+8L8wsHAPEL9Av1CwcA8QvwC/QLBwD2C/EL9QsHAPYL8gvxCwcA8wvyC/YLBwDzC+8L8gsHAPcL8wv2CwcA9wv4C/MLBwDzC/kL9AsHAPML+Av5CwcA9Av6C/ULBwD0C/kL+gsHAPoL9gv1CwcA+gv3C/YLBwD7C/gL9wsHAPsL/Av4CwcA+Av9C/kLBwD4C/wL/QsHAPkL/gv6CwcA+Qv9C/4LBwD+C/cL+gsHAP4L+wv3CwcA/Qv/CwAMBwD9C/wL/wsHAP4LAQwCDAcA/gv9CwEMBwADDP4LBAwHAAMM+wv+CwcA/wv7CwMMBwD/C/wL+wsHAAUM/wsDDAcABQwGDP8LBwD/CwcMCAwHAP8LBgwHDAcACQwKDAsMBwAJDAwMCgwHAA0MAwwODAcADQwFDAMMBwAPDAYMBQwHAA8MEAwGDAcABgwRDBIMBwAGDBAMEQwHAAwMEwwKDAcADAwUDBMMBwAVDAUMFgwHABUMDwwFDAcAFwwQDA8MBwAXDBgMEAwHABAMGQwaDAcAEAwYDBkMBwAUDBsMEwwHABQMHAwbDAcAHQwPDB4MBwAdDBcMDwwHAB8MGAwXDAcAHwwgDBgMBwAYDCEMIgwHABgMIAwhDAcAHAziCxsMBwAcDOAL4gsHACMMFwwdDAcAIwwkDBcMBwAlDCYMJwwHACUMKAwmDAcAKQwoDCUMBwApDCoMKAwHACsMKQwsDAcAKwwqDCkMBwAtDCsMLAwHAC0MLgwrDAcALwwwDDEMBwAvDDIMMAwHACcMMgwlDAcAJwwwDDIMBwAzDDQMNQwHADMMNgw0DAcANww2DDgMBwA3DDQMNgwHADkMLww6DAcAOQwyDC8MBwAlDDkMKQwHACUMMgw5DAcANQw7DDwMBwA1DDQMOwwHAD0MNAw3DAcAPQw7DDQMBwA+DDkMOgwHAD4MPww5DAcAKQw/DCwMBwApDDkMPwwHAEAMPgxBDAcAQAw/DD4MBwAsDEAMLQwHACwMPwxADAcAOwxCDDwMBwA7DEMMQgwHAEQMOww9DAcARAxDDDsMBwBCDEUMRgwHAEIMQwxFDAcARwxDDEQMBwBHDEUMQwwHAEgMQQxJDAcASAxADEEMBwAtDEgMLgwHAC0MQAxIDAcASgwnDCYMBwBKDDAMJwwHADEMSgxLDAcAMQwwDEoMBwA9DEwMRAwHAD0MTQxMDAcATQwrDEwMBwBNDCoMKwwHADcMTQw9DAcANwxODE0MBwBODCoMTQwHAE4MKAwqDAcAOAxODDcMBwA4DE8MTgwHAE8MKAxODAcATwwmDCgMBwA2DE8MOAwHADYMUAxPDAcAUAwmDE8MBwBQDEoMJgwHADMMUAw2DAcAMwxRDFAMBwBRDEoMUAwHAFEMSwxKDAcARAxSDEcMBwBEDEwMUgwHAEwMLgxSDAcATAwrDC4MBwBHDFMMRQwHAEcMUgxTDAcAUgxIDFMMBwBSDC4MSAwHAEUMVAxGDAcARQxTDFQMBwBTDEkMVAwHAFMMSAxJDAcAVQxWDFcMBwBVDFgMVgwHAFgMWQxWDAcAWAxaDFkMBwBZDFsMXAwHAFkMWgxbDAcAWwxdDFwMBwBbDF4MXQwHAF8MLwwxDAcAXwxgDC8MBwBgDFcMVgwHAGAMXwxXDAcAYQwzDDUMBwBhDGIMMwwHAGIMYwxkDAcAYgxhDGMMBwAvDGUMOgwHAC8MYAxlDAcAZQxWDFkMBwBlDGAMVgwHAGYMNQw8DAcAZgxhDDUMBwBhDGcMYwwHAGEMZgxnDAcAZQw+DDoMBwBlDGgMPgwHAGgMWQxcDAcAaAxlDFkMBwA+DGkMQQwHAD4MaAxpDAcAaQxcDF0MBwBpDGgMXAwHAEIMZgw8DAcAQgxqDGYMBwBmDGsMZwwHAGYMagxrDAcAbAxCDEYMBwBsDGoMQgwHAGoMbQxrDAcAagxsDG0MBwBBDG4MSQwHAEEMaQxuDAcAbgxdDF4MBwBuDGkMXQwHAFcMbwxVDAcAVwxfDG8MBwBvDDEMSwwHAG8MXwwxDAcAcAxnDGsMBwBwDHEMZwwHAFsMcQxwDAcAWwxaDHEMBwBxDGMMZwwHAHEMcgxjDAcAWgxyDHEMBwBaDFgMcgwHAHIMZAxjDAcAcgxzDGQMBwBYDHMMcgwHAFgMVQxzDAcAcwxiDGQMBwBzDHQMYgwHAFUMdAxzDAcAVQxvDHQMBwB0DDMMYgwHAHQMUQwzDAcAbwxRDHQMBwBvDEsMUQwHAHUMawxtDAcAdQxwDGsMBwBeDHAMdQwHAF4MWwxwDAcAdgxtDGwMBwB2DHUMbQwHAG4MdQx2DAcAbgxeDHUMBwBUDGwMRgwHAFQMdgxsDAcASQx2DFQMBwBJDG4MdgwHAHcMeAx5DAcAdwx6DHgMBwB7DHwMfQwHAHsMfgx8DAcAdwx/DHoMBwB3DIAMfwwHAH4MgQx8DAcAfgyCDIEMBwCADIMMfwwHAIAMhAyDDAcAggyFDIEMBwCCDIYMhQwHAIQMhwyDDAcAhAyIDIcMBwCJDIgMigwHAIkMhwyIDAcAhgyLDIUMBwCGDIwMiwwHAI0MjAyODAcAjQyLDIwMBwB9DI8MewwHAH0MkAyPDAcAkQx9DHwMBwCRDJAMfQwHAJIMfAyBDAcAkgyRDHwMBwCTDIEMhQwHAJMMkgyBDAcAlAyFDIsMBwCUDJMMhQwHAI0MlAyLDAcAjQyVDJQMBwB4DJYMeQwHAHgMlwyWDAcAeQyYDHcMBwB5DJYMmAwHAHcMmQyADAcAdwyYDJkMBwCADJoMhAwHAIAMmQyaDAcAhAybDIgMBwCEDJoMmwwHAIgMnAyKDAcAiAybDJwMBwCXDJ0MlgwHAJcMngydDAcAlgyfDJgMBwCWDJ0MnwwHAJgMoAyZDAcAmAyfDKAMBwCZDKEMmgwHAJkMoAyhDAcAmgyiDJsMBwCaDKEMogwHAKIMnAybDAcAogyjDJwMBwCeDKQMnQwHAJ4MpQykDAcAkAylDI8MBwCQDKQMpQwHAJ0MpgyfDAcAnQykDKYMBwCRDKQMkAwHAJEMpgykDAcAnwynDKAMBwCfDKYMpwwHAJIMpgyRDAcAkgynDKYMBwCgDKgMoQwHAKAMpwyoDAcAkwynDJIMBwCTDKgMpwwHAKEMqQyiDAcAoQyoDKkMBwCUDKgMkwwHAJQMqQyoDAcAogyqDKMMBwCiDKkMqgwHAJUMqQyUDAcAlQyqDKkMBwB7DKsMrAwHAHsMjwyrDAcAfgysDK0MBwB+DHsMrAwHAIIMrQyuDAcAggx+DK0MBwCGDK4MrwwHAIYMggyuDAcAjAyvDLAMBwCMDIYMrwwHAI4MsAyxDAcAjgyMDLAMBwCXDLIMswwHAJcMeAyyDAcAsgx6DLQMBwCyDHgMegwHALQMfwy1DAcAtAx6DH8MBwC1DIMMtgwHALUMfwyDDAcAtgyHDLcMBwC2DIMMhwwHALcMiQy4DAcAtwyHDIkMBwCeDLMMuQwHAJ4MlwyzDAcApQy5DLoMBwClDJ4MuQwHAI8MugyrDAcAjwylDLoMBwCsDLsMvAwHAKwMqwy7DAcArQy8DL0MBwCtDKwMvAwHAK4MvQy+DAcArgytDL0MBwCvDL4MvwwHAK8Mrgy+DAcAsAy/DMAMBwCwDK8MvwwHALEMwAzBDAcAsQywDMAMBwCzDMIMwwwHALMMsgzCDAcAwgy0DMQMBwDCDLIMtAwHAMQMtQzFDAcAxAy0DLUMBwDFDLYMxgwHAMUMtQy2DAcAxgy3DMcMBwDGDLYMtwwHAMcMuAzIDAcAxwy3DLgMBwC5DMMMyQwHALkMswzDDAcAugzJDMoMBwC6DLkMyQwHAKsMygy7DAcAqwy6DMoMBwC8DMsMzAwHALwMuwzLDAcAvQzMDM0MBwC9DLwMzAwHAL4MzQzODAcAvgy9DM0MBwC/DM4MzwwHAL8MvgzODAcAwAzPDNAMBwDADL8MzwwHAMEM0AzRDAcAwQzADNAMBwDDDNIM0wwHAMMMwgzSDAcA0gzEDNQMBwDSDMIMxAwHANQMxQzVDAcA1AzEDMUMBwDVDMYM1gwHANUMxQzGDAcA1gzHDNcMBwDWDMYMxwwHANcMyAzYDAcA1wzHDMgMBwDJDNMM2QwHAMkMwwzTDAcAygzZDNoMBwDKDMkM2QwHALsM2gzLDAcAuwzKDNoMBwDMDNsM3AwHAMwMywzbDAcAzQzcDN0MBwDNDMwM3AwHAM4M3QzeDAcAzgzNDN0MBwDPDN4M3wwHAM8MzgzeDAcA0AzfDOAMBwDQDM8M3wwHANEM4AzhDAcA0QzQDOAMBwDTDOIM4wwHANMM0gziDAcA4gzUDOQMBwDiDNIM1AwHAOQM1QzlDAcA5AzUDNUMBwDlDNYM5gwHAOUM1QzWDAcA5gzXDOcMBwDmDNYM1wwHAOcM2AzoDAcA5wzXDNgMBwDZDOMM6QwHANkM0wzjDAcA2gzpDOoMBwDaDNkM6QwHAMsM6gzbDAcAywzaDOoMBwDcDOsM7AwHANwM2wzrDAcA3QzsDO0MBwDdDNwM7AwHAN4M7QzuDAcA3gzdDO0MBwDfDO4M7wwHAN8M3gzuDAcA4AzvDPAMBwDgDN8M7wwHAOEM8AzxDAcA4QzgDPAMBwDjDPIM8wwHAOMM4gzyDAcA8gzkDPQMBwDyDOIM5AwHAPQM5Qz1DAcA9AzkDOUMBwD1DOYM9gwHAPUM5QzmDAcA9gznDPcMBwD2DOYM5wwHAPcM6Az4DAcA9wznDOgMBwDpDPMM+QwHAOkM4wzzDAcA6gz5DPoMBwDqDOkM+QwHANsM+gzrDAcA2wzqDPoMBwD7DPwM/QwHAPsM/gz8DAcA/wwADQENBwD/DAINAA0HAAMN/Az+DAcAAw0EDfwMBwAFDQIN/wwHAAUNBg0CDQcABw0EDQMNBwAHDQgNBA0HAAkNBg0FDQcACQ0KDQYNBwALDQgNBw0HAAsNDA0IDQcADA2JDIoMBwAMDQsNiQwHAA0NCg0JDQcADQ0ODQoNBwAODY0MjgwHAA4NDQ2NDAcADw0BDQANBwAPDRANAQ0HAAENEQ3/DAcAAQ0QDRENBwD/DBINBQ0HAP8MEQ0SDQcABQ0TDQkNBwAFDRINEw0HAAkNFA0NDQcACQ0TDRQNBwAUDY0MDQ0HABQNlQyNDAcAFQ37DP0MBwAVDRYN+wwHABcN/Qz8DAcAFw0VDf0MBwAYDfwMBA0HABgNFw38DAcAGQ0EDQgNBwAZDRgNBA0HABoNCA0MDQcAGg0ZDQgNBwCcDAwNigwHAJwMGg0MDQcAGw0WDRUNBwAbDRwNFg0HAB0NFQ0XDQcAHQ0bDRUNBwAeDRcNGA0HAB4NHQ0XDQcAHw0YDRkNBwAfDR4NGA0HACANGQ0aDQcAIA0fDRkNBwCcDCANGg0HAJwMowwgDQcAIQ0cDRsNBwAhDSINHA0HACINEA0PDQcAIg0hDRANBwAjDRsNHQ0HACMNIQ0bDQcAIQ0RDRANBwAhDSMNEQ0HACQNHQ0eDQcAJA0jDR0NBwAjDRINEQ0HACMNJA0SDQcAJQ0eDR8NBwAlDSQNHg0HACQNEw0SDQcAJA0lDRMNBwAmDR8NIA0HACYNJQ0fDQcAJQ0UDRMNBwAlDSYNFA0HAKoMIA2jDAcAqgwmDSANBwAmDZUMFA0HACYNqgyVDAcAJw0ADSgNBwAnDQ8NAA0HACgNAg0pDQcAKA0ADQINBwApDQYNKg0HACkNAg0GDQcAKg0KDSsNBwAqDQYNCg0HACsNDg0sDQcAKw0KDQ4NBwAsDY4MsQwHACwNDg2ODAcALQ0WDS4NBwAtDfsMFg0HAP4MLQ0vDQcA/gz7DC0NBwADDS8NMA0HAAMN/gwvDQcABw0wDTENBwAHDQMNMA0HAAsNMQ0yDQcACw0HDTENBwCJDDINuAwHAIkMCw0yDQcALg0cDTMNBwAuDRYNHA0HADMNIg00DQcAMw0cDSINBwA0DQ8NJw0HADQNIg0PDQcANQ0oDTYNBwA1DScNKA0HADYNKQ03DQcANg0oDSkNBwA3DSoNOA0HADcNKQ0qDQcAOA0rDTkNBwA4DSoNKw0HADkNLA06DQcAOQ0rDSwNBwA6DbEMwQwHADoNLA2xDAcAOw0uDTwNBwA7DS0NLg0HAC8NOw09DQcALw0tDTsNBwAwDT0NPg0HADANLw09DQcAMQ0+DT8NBwAxDTANPg0HADINPw1ADQcAMg0xDT8NBwC4DEANyAwHALgMMg1ADQcAPA0zDUENBwA8DS4NMw0HAEENNA1CDQcAQQ0zDTQNBwBCDScNNQ0HAEINNA0nDQcAQw02DUQNBwBDDTUNNg0HAEQNNw1FDQcARA02DTcNBwBFDTgNRg0HAEUNNw04DQcARg05DUcNBwBGDTgNOQ0HAEcNOg1IDQcARw05DToNBwBIDcEM0QwHAEgNOg3BDAcASQ08DUoNBwBJDTsNPA0HAD0NSQ1LDQcAPQ07DUkNBwA+DUsNTA0HAD4NPQ1LDQcAPw1MDU0NBwA/DT4NTA0HAEANTQ1ODQcAQA0/DU0NBwDIDE4N2AwHAMgMQA1ODQcASg1BDU8NBwBKDTwNQQ0HAE8NQg1QDQcATw1BDUINBwBQDTUNQw0HAFANQg01DQcAUQ1EDVINBwBRDUMNRA0HAFINRQ1TDQcAUg1EDUUNBwBTDUYNVA0HAFMNRQ1GDQcAVA1HDVUNBwBUDUYNRw0HAFUNSA1WDQcAVQ1HDUgNBwBWDdEM4QwHAFYNSA3RDAcAVw1KDVgNBwBXDUkNSg0HAEsNVw1ZDQcASw1JDVcNBwBMDVkNWg0HAEwNSw1ZDQcATQ1aDVsNBwBNDUwNWg0HAE4NWw1cDQcATg1NDVsNBwDYDFwN6AwHANgMTg1cDQcAWA1PDV0NBwBYDUoNTw0HAF0NUA1eDQcAXQ1PDVANBwBeDUMNUQ0HAF4NUA1DDQcAXw1SDWANBwBfDVENUg0HAGANUw1hDQcAYA1SDVMNBwBhDVQNYg0HAGENUw1UDQcAYg1VDWMNBwBiDVQNVQ0HAGMNVg1kDQcAYw1VDVYNBwBkDeEM8QwHAGQNVg3hDAcAZQ1YDWYNBwBlDVcNWA0HAFkNZQ1nDQcAWQ1XDWUNBwBaDWcNaA0HAFoNWQ1nDQcAWw1oDWkNBwBbDVoNaA0HAFwNaQ1qDQcAXA1bDWkNBwDoDGoN+AwHAOgMXA1qDQcAZg1dDWsNBwBmDVgNXQ0HAGsNXg1sDQcAaw1dDV4NBwBsDVENXw0HAGwNXg1RDQcAbQ1uDW8NBwBtDXANbg0HAG4NcQ1yDQcAbg1wDXENBwByDXMNdA0HAHINcQ1zDQcAdA11DXYNBwB0DXMNdQ0HAHYNdw14DQcAdg11DXcNBwB4DXkNeg0HAHgNdw15DQcAeg17DXwNBwB6DXkNew0HAH0New1+DQcAfQ18DXsNBwB/DX4NgA0HAH8NfQ1+DQcAgQ2ADYINBwCBDX8NgA0HAIMNgg2EDQcAgw2BDYINBwCFDYQNhg0HAIUNgw2EDQcA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Ag4rBS0FBwADDisFAg4HAAMOKQUrBQcABA4pBQMOBwAEDicFKQUHAP0NJwUEDgcA/Q0mBScFBwAFDv0NBA4HAAUOBg79DQcA/Q0HDv4NBwD9DQYOBw4HAP4NCA7/DQcA/g0HDggOBwD/DQkOAA4HAP8NCA4JDgcAAA4KDgEOBwAADgkOCg4HAAoOAg4BDgcACg4LDgIOBwALDgMOAg4HAAsODA4DDgcADA4EDgMOBwAMDgUOBA4HAAcODQ4ODgcABw4GDg0OBwAIDg4ODw4HAAgOBw4ODgcACQ4PDhAOBwAJDggODw4HAAoOEA4RDgcACg4JDhAOBwASDgoOEQ4HABIOCw4KDgcAEw4LDhIOBwATDgwOCw4HABQODA4TDgcAFA4FDgwOBwANDgUOFA4HAA0OBg4FDgcADg4VDhYOBwAODg0OFQ4HAA8OFg4XDgcADw4ODhYOBwAQDhcOGA4HABAODw4XDgcAEQ4YDhkOBwARDhAOGA4HABoOEQ4ZDgcAGg4SDhEOBwAbDhIOGg4HABsOEw4SDgcAHA4TDhsOBwAcDhQOEw4HABUOFA4cDgcAFQ4NDhQOBwAdDhUOHA4HAB0OHg4VDgcAFQ4fDhYOBwAVDh4OHw4HABYOIA4XDgcAFg4fDiAOBwAYDiAOIQ4HABgOFw4gDgcAGQ4hDiIOBwAZDhgOIQ4HACMOGQ4iDgcAIw4aDhkOBwAkDhoOIw4HACQOGw4aDgcAJA4cDhsOBwAkDh0OHA4HACUOHQ4mDgcAJQ4eDh0OBwAfDiUOJw4HAB8OHg4lDgcAIA4nDigOBwAgDh8OJw4HACEOKA4pDgcAIQ4gDigOBwAiDikOKg4HACIOIQ4pDgcAKw4iDioOBwArDiMOIg4HACwOIw4rDgcALA4kDiMOBwAmDiQOLA4HACYOHQ4kDgcABwAlDiYOBwAHAC0OJQ4HACUOLg4nDgcAJQ4tDi4OBwAnDi8OKA4HACcOLg4vDgcAKQ4vDjAOBwApDigOLw4HACoOMA4xDgcAKg4pDjAOBwAyDioOMQ4HADIOKw4qDgcACAArDjIOBwAIACwOKw4HAAcALA4IAAcABwAmDiwOBwAJAC0OBwAHAAkADQAtDgcALQ4KAC4OBwAtDg0ACgAHAC4OEAAvDgcALg4KABAABwAvDhoAMA4HAC8OEAAaAAcAMA4cADEOBwAwDhoA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rg8HAAQFBQUDBQcABAUGBQUFBwAIBQYFBAUHAAgFBwUGBQcACQXMBAMFBwAJBf8EzAQHAAEAIhAjEAcAAQADACIQBwAkEAEAIxAHACQQBQABAAcAJRAFACQQBwAlEA8ABQAHABMAJhAnEAcAEwAVACYQBwAmECgQJxAHACYQKRAoEAcAKRAqECgQBwApECsQKhAHACsQLBAqEAcAKxAtECwQBwAtECIALBAHAC0QIwAiAAcAAwAnECIQBwADABMAJxAHACcQIxAiEAcAJxAoECMQBwAoECQQIxAHACgQKhAkEAcAKhAlECQQBwAqECwQJRAHACwQDwAlEAcALBAiAA8ABwAuEC8QMBAHAC4QMRAvEAcAMhAwEDMQBwAyEC4QMBAHADQQMxA1EAcANBAyEDMQBwCwBDUQsQQHALAENBA1EAcANhAxEDcQBwA2EC8QMRAHADgQNhA5EAcAOBAvEDYQBwA6EC8QOBAHADoQMBAvEAcAOxAwEDoQBwA7EDMQMBAHADwQMxA7EAcAPBA1EDMQBwC5BDUQPBAHALkEsQQ1EAcAPRA+ED8QBwA9EEAQPhAHAEEQPxBCEAcAQRA9ED8QBwBDEEIQRBAHAEMQQRBCEAcARRBEEEYQBwBFEEMQRBAHAMQERhDFBAcAxARFEEYQBwBHEEAQPRAHAEcQSBBAEAcASRA9EEEQBwBJEEcQPRAHAEoQQRBDEAcAShBJEEEQBwBLEEMQRRAHAEsQShBDEAcAywRFEMQEBwDLBEsQRRAHAEwQTRBOEAcATBBPEE0QBwBOEFAQTBAHAE4QURBQEAcAUhBTEFQQBwBSEFUQUxAHAFYQVRBSEAcAVhBXEFUQBwBVEFgQUxAHAFUQWRBYEAcAVxBZEFUQBwBXEFoQWRAHAFsQUBBcEAcAWxBMEFAQBwBdEEwQWxAHAF0QTxBMEAcAUhA3EFYQBwBSEDYQNxAHAFQQNhBSEAcAVBA5EDYQBwCwBF4QNBAHALAE3wReEAcANBBfEDIQBwA0EF4QXxAHADIQYBAuEAcAMhBfEGAQBwAuEGEQMRAHAC4QYBBhEAcAMRBiEDcQBwAxEGEQYhAHADcQYxBWEAcANxBiEGMQBwBWEGQQVxAHAFYQYxBkEAcAVxBlEFoQBwBXEGQQZRAHAN8EZhBeEAcA3wToBGYQBwBeEGcQXxAHAF4QZhBnEAcAXxBoEGAQBwBfEGcQaBAHAGAQaRBhEAcAYBBoEGkQBwBhEGoQYhAHAGEQaRBqEAcAYhBrEGMQBwBiEGoQaxAHAGMQbBBkEAcAYxBrEGwQBwBkEG0QZRAHAGQQbBBtEAcAbhBvEHAQBwBuEHEQbxAHAHIQcRBuEAcAchBzEHEQBwB0EHMQchAHAHQQdRBzEAcAdhB1EHQQBwB2EHcQdRAHAHgQdxB2EAcAeBB5EHcQBwB6EHkQeBAHAHoQexB5EAcAxQR7EP4EBwDFBEYQexAHAEYQeRB7EAcARhBEEHkQBwBEEHcQeRAHAEQQQhB3EAcAPxB3EEIQBwA/EHUQdxAHAHMQPxA+EAcAcxB1ED8QBwBdEE0QTxAHAF0QfBBNEAcAPhB9EH4QBwA+EEAQfRAHAEgQfRBAEAcASBB/EH0QBwBOEIAQgRAHAE4QTRCAEAcAghB9EIMQBwCCEH4QfRAHAIQQfRB/EAcAhBCDEH0QBwCBEFEQThAHAIEQhRBREAcAghBxEH4QBwCCEG8QcRAHAHEQPhB+EAcAcRBzED4QBwCCEIYQbxAHAIIQgBCGEAcAcBCGEHwQBwBwEG8QhhAHAIcQcBB8EAcAhxCIEHAQBwCIEG4QcBAHAIgQiRBuEAcAiRByEG4QBwCJEIoQchAHAIoQdBByEAcAihCLEHQQBwCLEHYQdBAHAIsQjBB2EAcAjBB4EHYQBwCMEI0QeBAHAI0QehB4EAcAjRCOEHoQBwCPEHwQXRAHAI8QhxB8EAcAkBBrEGoQBwCQEJEQaxAHAJEQbBBrEAcAkRCSEGwQBwCSEG0QbBAHAJIQkxBtEAcAkxBlEG0QBwCTEJQQZRAHAJQQWhBlEAcAlBCVEFoQBwCVEFkQWhAHAJUQlhBZEAcAlhBYEFkQBwCWEJcQWBAHAJgQahBpEAcAmBCQEGoQBwCZEGkQaBAHAJkQmBBpEAcAmhBoEGcQBwCaEJkQaBAHAJsQZxBmEAcAmxCaEGcQBwAfBWYQ6AQHAB8FmxBmEAcAmxCMBZwQBwCbEB8FjAUHAJ0QjhCNEAcAnRCcEI4QBwCaEJwQnRAHAJoQmxCcEAcAnhCNEIwQBwCeEJ0QjRAHAJkQnRCeEAcAmRCaEJ0QBwCfEIwQixAHAJ8QnhCMEAcAmBCeEJ8QBwCYEJkQnhAHAKAQixCKEAcAoBCfEIsQBwCQEJ8QoBAHAJAQmBCfEAcAoRCKEIkQBwChEKAQihAHAJEQoBChEAcAkRCQEKAQBwCiEIkQiBAHAKIQoRCJEAcAkhChEKIQBwCSEJEQoRAHAKMQohCIEAcAoxCIEIcQBwCTEJIQohAHAJMQohCjEAcApBCjEIcQBwCkEIcQjxAHAJQQkxCjEAcAlBCjEKQQBwClEKQQjxAHAKUQjxBdEAcAlRCUEKQQBwCVEKQQpRAHAKYQpRBdEAcAphBdEFsQBwCWEJUQpRAHAJYQpRCmEAcApxCmEFsQBwCnEFsQXBAHAJcQlhCmEAcAlxCmEKcQBwCxBbMFqBAHALEFqBCpEAcAqBCqEKsQBwCoEKsQqRAHAKoQrBCtEAcAqhCtEKsQBwCsEK4QrxAHAKwQrxCtEAcArhC+Bb0FBwCuEL0FrxAHAMAFsQWpEAcAwAWpELAQBwCpEKsQsRAHAKkQsRCwEAcAqxCtELIQBwCrELIQsRAHAK0QrxCzEAcArRCzELIQBwCvEL0FyQUHAK8QyQWzEAcAzAXABbAQBwDMBbAQtBAHALAQsRC1EAcAsBC1ELQQBwCxELIQthAHALEQthC1EAcAshCzELcQBwCyELcQthAHALMQyQXUBQcAsxDUBbcQBwDXBcwFtBAHANcFtBC4EAcAtBC1ELkQBwC0ELkQuBAHALUQthC6EAcAtRC6ELkQBwC2ELcQuxAHALYQuxC6EAcAtxDUBd8FBwC3EN8FuxAHAOYFvBCcEAcA5gWcEIwFBwC8EL0QjhAHALwQjhCcEAcAvRC+EHoQBwC9EHoQjhAHAL4QvxB7EAcAvhB7EHoQBwC/EOsF/gQHAL8Q/gR7EAcA9QXAELwQBwD1BbwQ5gUHAL4FrhDAEAcAvgXAEPUFBwDAEMEQvRAHAMAQvRC8EAcArhCsEMEQBwCuEMEQwBAHAMEQwhC+EAcAwRC+EL0QBwCsEKoQwhAHAKwQwhDBEAcAwhDDEL8QBwDCEL8QvhAHAKoQqBDDEAcAqhDDEMIQBwDDEPoF6wUHAMMQ6wW/EAcAqBCzBfoFBwCoEPoFwxAHAIIQgxCBEAcAghCBEIAQBwCDEIQQhRAHAIMQhRCBEAcATRB8EIYQBwBNEIYQgBAHADBBewAAAHJhdjQtM3N0b3AANAAAAAEAAgADAAgACQAMAA0ADgAPABAAEQAYABkAGgAbACAAIQAiACMAJAAlACwALQAuAC8AiB2JHYodix2MHY0djh2PHZAdkR2SHZMdlB2VHZYdlx2YHZkdmh2bHZwdnR2eHZ8doB2hHTBBoRAAAHJhdjQtc2hpZWxkcwBGCAQABQAGAAcACgALABIAEwAUABUAFgAXABwAHQAeAB8AJgAnACgAKQAqACsAMAAxADIAMwAOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0JwAnBCcIJwwnECcUJxgnHCcgJyQnKCcsJzAnNCc4JzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J3gnfCeAJ4QniCeMJ5AnlCeYJ5wnoCekJ6gnrCewJ7QkgCiEKIgojCiQKJQoqCisKLAotCjQKNQo2CjcKOAo5Cj4KPwpACkEKSApJCkoKSwpMCk0KUgpTClQKVQpcCl0KXgpfCmAKYQpmCmcKaAppCmoKawpsCm0KbgpvCnAKcQp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqiCqMKpAqlChANEQ1oD2kPag9rD2wPbQ9uD28PcA9xD3IPcw90D3UPdg93D3gPeQ96D3sPfA99D34Pfw+AD4EPgg+DD4QPhQ+GD4cPiA+JD4oPiw+MD40Pjg+PD5APkQ+SD5MPlA+VD5YPlw+YD5kPmg+bD5wPnQ+eD58PoA+hD6IPow+kD6UPpg+nD6gPqQ+qD6sPrA+tD64Prw+wD7EPsg+zD7QPtQ+2D7cPuA+5D7oPuw+8D70Pvg+/D8APwQ/CD8MPxA/FD8YPxw/ID8kPyg/LD8wPzQ/OD88P0A/RD9IP0w/UD9UP1g/XD9gP2Q/aD9sP3A/dD94P3w/gD+EP4g/jD+QP5Q/mD+cP6A/pD+oP6w/sD+0P7g/vD/AP8Q/yD/MP9A/1D/YP9w/4D/kP+g/7D/wP/Q/+D/8PABABEAIQAxAEEAUQBhAHEAgQCRAKEAsQDBANEA4QDxAQEBEQEhATEBQQFRAWEBcQGBAZEBoQGxAcEB0QHhAfECAQIRAiECMQJBAlECYQJxAoECkQKhArECwQLRAuEC8QMBAxEDIQMxA0EDUQNhA3EDgQORA6EDsQPBA9ED4QPxBAEEEQQhBDEEQQRRBGEEcQSBBJEEoQSxBMEE0QThBPEFAQURBSEFMQVBBVEFYQVxBYEFkQWhBbEFwQXRBeEF8QYBBhEGIQYxBkEGUQZhBnEGgQaRBqEGsQbBBtEG4QbxBwEHEQchBzEHQQdRB2EHcQeBB5EHoQexB8EH0QfhB/EIAQgRCCEIMQhBCFEIYQhxCIEIkQihCLEIwQjRCOEI8QkBCREJIQkxCUEJUQlhCXEJgQmRCaEJsQnBCdEJ4QnxCgEKEQohCjEKQQpRCmEKcQqBCpEKoQqxCsEK0QrhCvELAQsRCyELMQtBC1ELYQtxC4ELkQuhC7ELwQvRC+EL8QwBDBEMIQwxDEEMUQxhDHEMgQyRDKEMsQzBDNEM4QzxDQENEQ0hDTENQQ1RDWENcQ2BDZENoQ2xDcEN0Q3hDfEOAQ4RDiEOMQ5BDlEOYQ5xDoEOkQ6hDrEOwQ7RDuEO8Q8BDxEPIQ8xD0EPUQ9hD3EPgQ+RD6EPsQ/BD9EP4Q/xAAEQERAhEDEQQRBREGEQcRCBEJEQoRCxEMEQ0RDhEPERARERESERMRFBEVERYRFxEYERkRGhEbERwRHREeER8RIBEhESIRIxEkESURJhEnESgRKREqESsRLBEtES4RLxEwETERMhEzETQRNRE2ETcROBE5EToROxE8ET0RPhE/EUARQRFCEUMRRBFFEUYRRxFIEUkRShFLEUwRTRFOEU8RUBFREVIRUxFUEVURVhFXEVgRWRFaEVsRXBFdEV4RXxFgEWERYhFjEWQRZRFmEWcRaBFpEWoRaxFsEW0RbhFvEXARcRFyEXMRdBF1EXYRdxF4EXkRehF7EXwRfRF+EX8RgBGBEYIRgxGEEYURhhGHEYgRiRGKEYsRjBGNEY4RjxGQEZERkhGTEZQRlRGWEZcRmBGZEZoRmxGcEZ0RnhGfEaARoRGiEaMRwhTDFMQUxRTGFMcUyBTJFMoUyxTMFM0UzhTPFNAU0RTSFNMU1BTVFNYU1xTYFNkU2hTbFNwU3RTeFN8U4BThFOIU4xTkFOUU5hTnFOgU6RTqFOsU7BTtFO4U7xTwFPEU8hTzFPQU9RT2FPcU+BT5FPoU+xT8FP0U/hT/FAAVARUCFQMVBBUFFQYVBxUIFQkVChULFQwVDRUOFQ8VEBURFRIVExUUFRUVFhUXFRgVGRUaFRsVHBUdFR4VHxUgFSEVIhUjFSQVJRUmFScVKBUpFaAVoRWiFaMVpBWlFaYVpxWoFakVqhWrFawVrRWuFa8VsBWxFbIVsxW0FbUVthW3FbgVuRW6FbsVvBW9Fb4VvxXAFcEVwhXDFcQVxRXGFccVyBXJFcoVyxXMFc0VzhXPFdAV0RXSFdMV1BXVFdYV1xXYFdkV2hXbFdwV3RXeFd8V4BXhFeIV4xXkFeUV5hXnFegV6RXqFesV7BXtFe4V7xXwFfEV8hXzFfQV9RX2FfcV+BX5FfoV+xX8Ff0V/hX/FQAWARYCFgMWBBYFFgYWBxYIFgkWChYLFgwWDRYOFg8WEBYRFhIWExYUFhUWFhYXFhgWGRYaFhsWHBYdFh4WHxYgFiEWIhYjFiQWJRYmFicWKBYpFioWKxYsFi0WLhYvFjAWMRYyFjMWNBY1FjYWNxY4FjkWOhY7FjwWPRY+Fj8WQBZBFkIWQxZEFkUWRhZHFkgWSRZKFksWTBZNFk4WTxZQFlEWUhZTFlQWVRZWFlcWWBZZFloWWxZcFl0WXhZfFmAWYRZiFmMWZBZlFmYWZxZoFmkWahZrFmwWbRZuFm8WcBZxFnIWcxZ0FnUWdhZ3FngWeRZ6FnsWfBZ9Fn4WfxaAFoEWghaDFoQWhRaGFocWiBaJFooWixaMFo0WjhaPFpAWkRaSFpMWlBaVFpYWlxaYFpkWmhabFpwWnRaeFp8WoBahFqIWoxakFqUWphanFqgWqRaqFqsWrBatFq4WrxawFrEWshazFrQWtRa2FrcWuBa5FroWuxa8Fr0Wvha/FsAWwRbCFsMWxBbFFsYWxxbIFskWyhbLFswWzRbOFs8W0BbRFtIW0xbUFtUW1hbXFtgW2RbaFtsW3BbdFt4W3xbgFuEW4hbjFuQW5RbmFucW6BbpFuoW6xbsFu0W7hbvFvAW8RbyFvMW9Bb1FvYW9xb4FvkW+hb7FvwW/Rb+Fv8WABcBFwIXAxcEFwUXBhcHFwgXCRcKFwsXDBcNFw4XDxcQFxEXEhcTFxQXFRcWFxcXGBcZFxoXGxccFx0XHhcfFyAXIRciFyMXJBclFyYXJxcoFykXKhcrFywXLRcuFy8XMBcxFzIXMxc0FzUXNhc3FzgXORc6FzsXPBc9Fz4XPxdAF0EXQhdDF0QXRRdGF0cXSBdJF0oXSxdMF00XThdPF1AXURdSF1MXVBdVF1YXVxdYF1kXWhdbF1wXXRdeF18XYBdhF2IXYxdkF2UXZhdnF2gXaRdqF2sXbBdtF24XbxdwF3EXchdzF3QXdRd2F3cXeBd5F3oXexd8F30Xfhd/F4AXgReCF4MXhBeFF4YXhxeIF4kXiheLF4wXjReOF48XkBeRF5IXkxeUF5UXlheXF5gXmReaF5sXnBedF54XnxegF6EXohejF6QXpRemF6cXqBepF6oXqxesF60XrhevF7AXsReyF7MXtBe1F7YXtxe4F7kXuhe7F7wXvRe+F78XwBfBF8IXwxfEF8UXxhfHF8gXyRfKF8sXzBfNF84XzxfQF9EX0hfTF9QX1RfWF9cX2BfZF9oX2xfcF90X3hffF+AX4RfiF+MX5BflF+YX5xfoF+kX6hfrF+wX7RfuF+8X8BfxF/IX8xf0F/UX9hf3F/gX+Rf6F/sX/Bf9F/4X/xcAGAEYAhgDGAQYBRgGGAcYCBgJGAoYCxgMGA0YDhgPGBAYERgSGBMYFBgVGBYYFxgYGBkYGhgbGBwYHRgeGB8YIBghGCIYIxgkGCUYJhgnGCgYKRgqGCsYLBgtGC4YLxgwGDEYMhgzGDQYNRg2GDcYOBg5GDoYOxg8GD0YPhg/GEAYQRhCGEMYRBhFGEYYRxhIGEkYShhLGEwYTRhOGE8YUBhRGFIYUxhUGFUYVhhXGFgYWRhaGFsYXBhdGF4YXxhgGGEYYhhjGGQYZRhmGGcYaBhpGGoYaxhsGG0YbhhvGHAYcRhyGHMYdBh1GHYYdxh4GHkYehh7GHwYfRh+GH8YgBiBGIIYgxiEGIUYhhiHGIgYiRiKGIsYjBiNGI4YjxiQGJEYkhiTGJQYlRiWGJcYmBiZGJoYmxicGJ0YnhifGKAYoRiiGKMYpBilGKYYpxioGKkYqhirGKwYrRiuGK8YsBixGLIYsxi0GLUYthi3GLgYuRi6GLsYvBi9GL4YvxjAGMEYwhjDGMQYxRjGGMcYyBjJGMoYyxjMGM0YzhjPGNAY0RjSGNMY1BjVGNYY1xjYGNkY2hjbGNwY3RjeGN8Y4BjhGOIY4xjkGOUY5hjnGOgY6RjqGOsY7BjtGO4Y7xjwGPEY8hjzGPQY9Rj2GPcY+Bj5GPoY+xj8GP0Y/hj/GAAZARkCGQMZBBkFGQYZBxkIGQkZChkLGQwZDRkOGQ8ZEBkRGRIZExkUGRUZFhkXGRgZGRkaGRsZHBkdGR4ZHxkgGSEZIhkjGSQZJRkmGScZKBkpGSoZKxksGS0ZLhkvGTAZMRkyGTMZNBk1GTYZNxk4GTkZOhk7GTwZPRk+GT8ZQBlBGUIZQxlEGUUZRhlHGUgZSRlKGUsZTBlNGU4ZTxlQGVEZUhlTGVQZVRlWGVcZWBlZGVoZWxlcGV0ZXhlfGWAZYRliGWMZZBllGWYZZxloGWkZahlrGWwZbRluGW8ZcBlxGXIZcxl0GXUZdhl3GXgZeRl6GXsZfBl9GX4ZfxmAGYEZghmDGYQZhRmGGYcZiBmJGYoZixmMGY0ZjhmPGZAZkRmSGZMZlBmVGZYZlxmYGZkZmhmbGZwZnRmeGZ8ZoBmhGaIZoxmkGaUZphmnGagZqRmqGasZrBmtGa4ZrxmwGbEZshmzGbQZtRm2GbcZuBm5GboZuxm8Gb0Zvhm/GcAZwRnCGcMZxBnFGcYZxxnIGckZyhnLGcwZzRnOGc8Z0BnRGdIZ0xnUGdUZ1hnXGdgZ2RnaGdsZ3BndGd4Z3xngGeEZ4hnjGeQZ5RnmGecZ6BnpGeoZ6xnsGe0Z7hnvGfAZ8RnyGfMZ9Bn1GfYZ9xn4GfkZ+hn7GfwZ/Rn+Gf8ZABoBGjBBeQIAAHJhdjQtYmxhY2tfZ2xhc3MAMAE0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjATBBtiMAAHJhdjQtYm9keQDSEWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AQACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wMABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BAAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8FAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wYABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQeuB68HsAexB7IHswe0B7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfzB/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/BwAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCQIJQgmCCcIKAgpCCoIKwgsCC0ILggvCDAIMQgyCDMINAg1CDYINwg4CDkIOgg7CDwIPQg+CD8IQAhBCEIIQwhECEUIRghHCEgISQhKCEsITAhNCE4ITwhQCFEIUghTCFQIVQhWCFcIWAhZCFoIWwhcCF0IXghfCGAIYQhiCGMIZAhlCGYIZwhoCGkIaghrCGwIbQhuCG8IcAhxCHIIcwh0CHUIdgh3CHgIeQh6CHsIfAh9CH4IfwiACIEIggiDCIQIhQiGCIcIiAiJCIoIiwiMCI0IjgiPCJAIkQiSCJMIlAiVCJYIlwiYCJkImgibCJwInQieCJ8IoAihCKIIowikCKUIpginCKgIqQiqCKsIrAitCK4IrwiwCLEIsgizCLQItQi2CLcIuAi5CLoIuwi8CL0Ivgi/CMAIwQjCCMMIxAjFCMYIxwjICMkIygjLCMwIzQjOCM8I0AjRCNII0wjUCNUI1gjXCNgI2QjaCNsI3AjdCN4I3wjgCOEI4gjjCOQI5QjmCOcI6AjpCOoI6wjsCO0I7gjvCPAI8QjyCPMI9Aj1CPYI9wj4CPkI+gj7CPwI/Qj+CP8IAAkBCQIJAwkECQUJBgkHCQgJCQkKCQsJDAkNCb4JvwnuCe8J8AnxCfIJ8wn0CfUJ9gn3CfgJ+Qn6CfsJ/An9Cf4J/wkACgEKAgoDCgQKBQoGCgcKCAoJCgoKCwoMCg0KDgoPChAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoeCh8KJgonCigKKQouCi8KMAoxCjIKMwo6CjsKPAo9CkIKQwpECkUKRgpHCk4KTwpQClEKVgpXClgKWQpaClsKYgpjCmQKZQpyCnMKdAp1CnYKdwp4CnkKegp7Co4KjwqQCpEKkgqTCpQKlQqWCpcKmAqZCpoKmwqcCp0KngqfCqAKoQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCuYK5wroCukK6grrCuwK7QruCu8K8ArxCvIK8wr0CvUK9gr3CvgK+Qr6CvsK/Ar9Cv4K/woACwELAgsDCwQLBQsGCwcLCAsJCwoLCwsMCw0LDgsPCxALEQsSCxMLFAsVCxYLFwsYCxkLGgsbCxwLHQseCx8LIAshCyILIwskCyULJgsnCygLKQsqCysLLAstCy4LLwswCzELMgszCzQLNQs2CzcLOAs5CzoLOws8Cz0LPgs/C0ALQQtCC0MLRAtFC0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtXC1gLWQtaC1sLXAtdC14LXwtgC2ELYgtjC2QLZQtmC2cLaAtpC2oLawtsC20LbgtvC3ALcQtyC3MLdAt1C3YLdwt4C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguTC5QLlQuWC5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAuxC7ILswu0C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvGC8cLyAvJC8oLywvMC80LzgvPC9AL0QvSC9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvwC/EL8gvzC/QL9Qv2C/cL+Av5C/oL+wv8C/0L/gv/CwAMAQwCDAMMBAwFDAYMBwwIDAkMCgwLDAwMDQwODA8MEAwRDBIMEwwUDBUMFgwXDBgMGQwaDBsMHAwdDB4MHwwgDCEMIgwjDCQMJQwmDCcMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMMNAw1DDYMNww4DDkMOgw7DDwMPQw+DD8MQAxBDEIMQwxEDEUMRgxHDEgMSQxKDEsMTAxNDE4MTwxQDFEMUgxTDFQMVQxWDFcMWAxZDFoMWwxcDF0MXgxfDGAMYQxiDGMMZAxlDGYMZwxoDGkMagxrDGwMbQxuDG8McAxxDHIMcwx0DHUMdgx3DHgMeQx6DHsMfAx9DH4MfwyADIEMggyDDIQMhQyGDIcMiAyJDIoMiwyMDI0MjgyPDJAMkQySDJMMlAyVDJYMlwyYDJkMmgybDJwMnQyeDJ8MoAyhDKIMowykDKUMpgynDKgMqQyqDKsMrAytDK4MrwywDLEMsgyzDLQMtQy2DLcMuAy5DLoMuwy8DL0Mvgy/DMAMwQzCDMMMxAzFDMYMxwzIDMkMygzLDMwMzQzODM8M0AzRDNIM0wzUDNUM1gzXDNgM2QzaDNsM3AzdDN4M3wzgDOEM4gzjDOQM5QzmDOcM6AzpDOoM6wzsDO0M7gzvDPAM8QzyDPMM9Az1DPYM9wz4DPkM+gz7DPwM/Qz+DP8MAA0BDQINAw0EDQUNBg0HDQgNCQ0KDQsNDA0NDQ4NDw0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0tDS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDUwNTQ1ODU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1pDWoNaw1sDW0Nbg1vDXANcQ1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NgA2BDYINgw2EDYUNhg2HDYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw3ADcENwg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDdwN3Q3eDd8N4A3hDeIN4w3kDeUN5g3nDegN6Q3q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G8UbxhvHG8gbyRvKG8sbzBvNG84bzxvQG9Eb0hvTG9Qb1RvWG9cb2BvZG9ob2xvcG90b3hvfG+Ab4RviG+Mb5BvlG+Yb5xvoG+kb6hvrG+wb7RvuG+8b8BvxG/Ib8xv0G/Ub9hv3G/gb+Rv6G/sb/Bv9G/4b/xsAHAEcAhwDHAQcBRwGHAccCBwJHAocCxwMHA0cDhwPHBAcERwSHBMcFBwVHBYcFxwYHBkcGhwbHBwcHRweHB8cIBwhHCIcIxwkHCUcJhwnHCgcKRwqHCscLBwtHC4cLxwwHDEcMhwzHDQcNRw2HDccOBw5HDocOxw8HD0cPhw/HEAcQRxCHEMcRBxFHEYcRxxIHEkcShxLHEwcTRxOHE8cUBxRHFIcUxxUHFUcVhxXHFgcWRxaHFscXBxdHF4cXxxgHGEcYhxjHGQcZRxmHGccaBxpHGocaxxsHG0cbhxvHHAccRxyHHMcdBx1HHYcdxx4HHkcehx7HHwcfRx+HH8cgByBHIIcgxyEHIUchhyHHIgciRyKHIscjByNHI4cjxyQHJEckhyTHJQclRyWHJccmByZHJocmxycHJ0cnhyfHKAcoRyiHKMcpBylHKYcpxyoHKkcqhyrHKwcrRyuHK8csByxHLIcsxy0HLUcthy3HLgcuRy6HLscvBy9HL4cvxzAHMEcwhzDHMQcxRzGHMccyBzJHMocyxzMHM0czhzPHNAc0RzSHNMc1BzVHNYc1xzYHNkc2hzbHNwc3RzeHN8c4BzhHOIc4xzkHOUc5hznHOgc6RzqHOsc7BztHO4c7xzwHPEc8hzzHPQc9Rz2HPcc+Bz5HPoc+xz8HP0c/hz/HAAdAR0CHQMdBB0FHQYdBx0IHQkdCh0LHQwdDR0OHQ8dEB0RHRIdEx0UHRUdFh0XHRgdGR0aHRsdHB0dHR4dHx0gHSEdIh0jHSQdJR0mHScdKB0pHSodKx0sHS0dLh0vHTAdMR0yHTMdNB01HTYdNx04HTkdOh07HTwdPR0+HT8dQB1BHUIdQx1EHUUdRh1HHUgdSR1KHUsdTB1NHU4dTx1QHVEdUh1THVQdVR1WHVcdWB1ZHVodWx1cHV0dXh1fHWAdYR1iHWMdZB1lHWYdZx1oHWkdah1rHWwdbR1uHW8dcB1xHXIdcx10HXUddh13HXgdeR16HXsdfB19HX4dfx2AHYEdgh2DHYQdhR2GHYcdoh2jHaQdpR2mHacdqB2pHaodqx2sHa0drh2vHbAdsR2yHbMdtB21HbYdtx24Hbkduh27HbwdvR2+Hb8dwB3BHcIdwx3EHcUdxh3HHcgdyR3KHcsdzB3NHc4dzx3QHdEd0h3THdQd1R3WHdcd2B3ZHdod2x3cHd0d3h3fHeAd4R3iHeMd5B3lHeYd5x3oHekd6h3rHewd7R3uHe8d8B3xHfId8x30HfUd9h33Hfgd+R36Hfsd/B39Hf4d/x0AHgEeAh4DHgQeBR4GHgceCB4JHgoeCx4MHg0eDh4PHhAeER4SHhMeFB4VHhYeFx4YHhkeGh4bHhweHR4eHh8eIB4hHiIeIx4kHiUeJh4nHigeKR4qHiseLB4tHi4eLx4wHjEeMh4zHjQeNR42HjceOB45HjoeOx48Hj0ePh4/HkAeQR5CHkMeRB5FHkYeRx5IHkkeSh5LHkweTR5OHk8eUB5RHlIeUx5UHlUeVh5XHlgeWR5aHlseXB5dHl4eXx5gHmEeYh5jHmQeZR5mHmceaB5pHmoeax5sHm0ebh5vHnAecR5yHnMedB51HnYedx54Hnkeeh57HnwefR5+Hn8egB6BHoIegx6EHoUehh6HHogeiR6KHosejB6NHo4ejx6QHpEekh6THpQelR6WHpcemB6ZHpoemx6cHp0enh6fHqAeoR6iHqMepB6lHqYepx6oHqkeqh6rHqwerR6uHq8esB6xHrIesx60HrUeth63HrgeuR66HrsevB69Hr4evx7AHsEewh7DHsQexR7GHsceyB7JHsoeyx4wQdkAAAByYXY0LWRhcmtlcl9nbGFzAGAA5BLlEuYS5xLoEukS6hLrEuwS7RLuEu8S8BLxEvIS8xL0EvUS9hL3EvgS+RL6EvsS/BL9Ev4S/xIAEwETAhMDEwQTBRMGEwcTCBMJEwoTCxMMEw0TDhMPExATERMSExMTFBMVExYTFxMYExkTGhMbExwTHRMeEx8TIBMhEyITIxMkEyUTJhMnEygTKRMqEysTLBMtEy4TLxMwEzETMhMzEzQTNRM2EzcTOBM5EzoTOxM8Ez0TPhM/E0ATQRNCE0MTMEFTAQAAcmF2NC1wbGF0ZQCgAEQTRRNGE0cTSBNJE0oTSxNME00TThNPE1ATURNSE1MTVBNVE1YTVxNYE1kTWhNbE1wTXRNeE18TYBNhE2ITYxNkE2UTZhNnE2gTaRNqE2sTbBNtE24TbxNwE3ETchNzE3QTdRN2E3cTeBN5E3oTexN8E30TfhN/E4ATgROCE4MThBOFE4YThxOIE4kTihOLE4wTjROOE48TkBORE5ITkxOUE5UTlhOXE5gTmROaE5sTnBOdE54TnxOgE6ETohOjE6QTpROmE6cTqBOpE6oTqxOsE60TrhOvE7ATsROyE7MTtBO1E7YTtxO4E7kTuhO7E7wTvRO+E78TwBPBE8ITwxPEE8UTxhPHE8gTyRPKE8sTzBPNE84TzxPQE9ET0hPTE9QT1RPWE9cT2BPZE9oT2xPcE90T3hPfE+AT4RPiE+MTMEGhAwAAcmF2NC1yZWQAyAHkE+UT5hPnE+gT6RPqE+sT7BPtE+4T7xPwE/ET8hPzE/QT9RP2E/cT+BP5E/oT+xP8E/0T/hP/EwAUARQCFAMUBBQFFAYUBxQIFAkUChQLFAwUDRQOFA8UEBQRFBIUExQUFBUUFhQXFBgUGRQaFBsUHBQdFB4UHxQgFCEUIhQjFCQUJRQmFCcUKBQpFCoUKxQsFC0ULhQvFDAUMRQyFDMUNBQ1FDYUNxQ4FDkUOhQ7FDwUPRQ+FD8UQBRBFEIUQxREFEUURhRHFEgUSRRKFEsUTBRNFE4UTxRQFFEUUhRTFFQUVRRWFFcUWBRZFFoUWxRcFF0UXhRfFGAUYRRiFGMUZBRlFGYUZxRoFGkUahRrFGwUbRRuFG8UcBRxFHIUcxR0FHUUdhR3FHgUeRR6FHsUfBR9FH4UfxSAFIEUghSDFIQUhRSGFIcUiBSJFIoUixSMFI0UjhSPFJAUkRSSFJMUlBSVFJYUlxSYFJkUmhSbFJwUnRSeFJ8UoBShFKIUoxSkFKUUphSnFKgUqRSqFKsUrBStFK4UrxSwFLEUshSzFLQUtRS2FLcUuBS5FLoUuxS8FL0UvhS/FMAUwRQCGgMaBBoFGgYaBxoIGgkaChoLGgwaDRoOGg8aEBoRGhIaExoUGhUaFhoXGhgaGRoaGhsaHBodGh4aHxogGiEaIhojGiQaJRomGicaKBopGioaKxosGi0aLhovGjAaMRoyGjMaNBo1GjYaNxo4GjkaOho7GjwaPRo+Gj8aQBpBGkIaQxpEGkUaRhpHGkgaSRpKGksaTBpNGk4aTxpQGlEaUhpTGlQaVRpWGlcaWBpZGloaWxpcGl0aXhpfGmAaYRpiGmMaZBplGmYaZxpoGmkaahprGmwabRpuGm8acBpxGnIacxp0GnUadhp3GngaeRp6GnsafBp9Gn4afxqAGoEaghqDGoQahRqGGocaiBqJGooaixqMGo0ajhqPGpAakRqSGpMalBqVGpYalxqYGpkamhqbGpwanRqeGp8aoBqhGqIaoxqkGqUaphqnGqgaqRqqGqsarBqtGq4arxqwGrEashqzGrQatRq2GrcauBq5Groauxq8Gr0avhq/GsAawRrCGsMaxBrFGsYaxxrIGskayhrLGswazRrOGs8a0BrRGtIa0xrUGtUa1hrXGtga2RraGtsa3BrdGt4a3xrgGuEa4hrjGuQa5RrmGuca6BrpGuoa6xowQScBAAByYXY0LXNtYWxsX3JlZACIACoVKxUsFS0VLhUvFTAVMRUyFTMVNBU1FTYVNxU4FTkVOhU7FTwVPRU+FT8VQBVBFUIVQxVEFUUVRhVHFUgVSRVKFUsVTBVNFU4VTxVQFVEVUhVTFVQVVRVWFVcVWBVZFVoVWxVcFV0VXhVfFWAVYRViFWMVZBVlFWYVZxXsGu0a7hrvGvAa8RryGvMa9Br1GvYa9xr4Gvka+hr7Gvwa/Rr+Gv8aABsBGwIbAxsEGwUbBhsHGwgbCRsKGwsbDBsNGw4bDxsQGxEbEhsTGxQbFRsWGxcbGBsZGxobGxscGx0bHhsfGyAbIRsiGyMbJBslGyYbJxsoGykbKhsrGywbLRsuGy8bMBsxGzIbMxs0GzUbUEE2ewAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAECRdQEAVG95b3RhX1JBNgAAQYB1AQAQQbh2AADkCScgwEFhuBtCMomHwMtuB0J4RRJCs8BBwScgwEF4RRJCs8BBwT0oDEJhuBtCMomHwCcgwEFYMTBCL3k2QD0oDEJYMTBCL3k2QCcgwEHc8D9CpDqaQD0oDELc8D9CpDqaQCcgwEEhkFdCEG2zQD0oDEIhkFdCEG2zQCcgwEHr7n5CD22zQD0oDELr7n5CD22zQCcgwEGrEIxCUhQEQD0oDEKrEIxCUhQEQCcgwEGzk5FC/991wD0oDEKzk5FC/991wCcgwEGTg5VCeagVwctuB0KTg5VCeagVwScgwEEmTZZC6llOwYBIBEImTZZC6llOwScgwEG6FpdCjSV0wZxe70G6FpdCjSV0wdr5vEG6FpdCjSV0wdr5vEEmTZZC6llOwdr5vEGTg5VCeagVwdr5vEGzk5FC/991wNr5vEGFfYpCOvRhP9r5vEHr7n5CD22zQNr5vEEhkFdCEG2zQNr5vEHc8D9CpDqaQNr5vEFYMTBCL3k2QNr5vEFhuBtCMomHwNr5vEF4RRJCs8BBwdr5vEFZaGtCSu+Hwdr5vEEab2tCXemEwdr5vEG+C2tCGrN9wdr5vEFYAWpCtoNvwdr5vEH2EmhCh0hjwdr5vEF5zWRCm/1awdr5vEGcFV9CO5FXwdr5vEHbNlxC/F9Ywdr5vEHn/FlCeUJdwdr5vEEDC1dC1zJvwdr5vEHooVVCYqGBwUGttkFZaGtCSu+HwUGttkEab2tCXemEwUGttkG+C2tCGrN9wUGttkFYAWpCtoNvwUGttkH2EmhCh0hjwUGttkF5zWRCm/1awUGttkGcFV9CO5FXwUGttkHbNlxC/F9YwUGttkHn/FlCeUJdwUGttkEDC1dC1zJvwUGttkHooVVCYqGBwUkul0FZaGtCSu+HwUkul0Eab2tCXemEwUkul0G+C2tCGrN9wUkul0FYAWpCtoNvwUkul0H2EmhCh0hjwUkul0F5zWRCm/1awUkul0GcFV9CO5FXwUkul0HbNlxC/F9YwUkul0Hn/FlCeUJdwUkul0EDC1dC1zJvwUkul0HooVVCYqGBwfJr/UEO6Q1C/KuGwScgwEEO6Q1C/KuGwc/3+0EEjA1CStKJwScgwEEEjA1CStKJwdr5vEEO6Q1C/KuGwdr5vEEEjA1CStKJwdr5vEH56VRCUyiIwdr5vEHWE1VC/KuGwUGttkHWE1VC/KuGwUGttkH56VRCUyiIwUkul0HWE1VC/KuGwUkul0H56VRCUyiIwctuB8J4RRJCs8BBwScgwMFhuBtCMomHwCcgwMF4RRJCs8BBwT0oDMJhuBtCMomHwCcgwMFYMTBCL3k2QD0oDMJYMTBCL3k2QCcgwMHc8D9CpDqaQD0oDMLc8D9CpDqaQCcgwMEhkFdCEG2zQD0oDMIhkFdCEG2zQCcgwMHr7n5CD22zQD0oDMLr7n5CD22zQCcgwMGrEIxCUhQEQD0oDMKrEIxCUhQEQCcgwMGzk5FC/991wD0oDMKzk5FC/991wCcgwMGTg5VCeagVwctuB8KTg5VCeagVwScgwMEmTZZC6llOwYBIBMImTZZC6llOwScgwMG6FpdCjSV0wZxe78G6FpdCjSV0wdr5vMG6FpdCjSV0wdr5vMEmTZZC6llOwdr5vMGTg5VCeagVwdr5vMGzk5FC/991wNr5vMGFfYpCOvRhP9r5vMHr7n5CD22zQNr5vMEhkFdCEG2zQNr5vMHc8D9CpDqaQNr5vMFYMTBCL3k2QNr5vMFhuBtCMomHwNr5vMF4RRJCs8BBwdr5vMFZaGtCSu+Hwdr5vMEab2tCXemEwdr5vMG+C2tCGrN9wdr5vMFYAWpCtoNvwdr5vMH2EmhCh0hjwdr5vMF5zWRCm/1awdr5vMGcFV9CO5FXwdr5vMHbNlxC/F9Ywdr5vMHn/FlCeUJdwdr5vMEDC1dC1zJvwdr5vMHooVVCYqGBwUGttsFZaGtCSu+HwUGttsEab2tCXemEwUGttsG+C2tCGrN9wUGttsFYAWpCtoNvwUGttsH2EmhCh0hjwUGttsF5zWRCm/1awUGttsGcFV9CO5FXwUGttsHbNlxC/F9YwUGttsHn/FlCeUJdwUGttsEDC1dC1zJvwUGttsHooVVCYqGBwUkul8FZaGtCSu+HwUkul8Eab2tCXemEwUkul8G+C2tCGrN9wUkul8FYAWpCtoNvwUkul8H2EmhCh0hjwUkul8F5zWRCm/1awUkul8GcFV9CO5FXwUkul8HbNlxC/F9YwUkul8Hn/FlCeUJdwUkul8EDC1dC1zJvwUkul8HooVVCYqGBwfJr/cEO6Q1C/KuGwScgwMEO6Q1C/KuGwc/3+8EEjA1CStKJwScgwMEEjA1CStKJwdr5vMEO6Q1C/KuGwdr5vMEEjA1CStKJwdr5vMH56VRCUyiIwdr5vMHWE1VC/KuGwUGttsHWE1VC/KuGwUGttsH56VRCUyiIwUkul8HWE1VC/KuGwUkul8H56VRCUyiIwWWFB0K8De/BBeNywQNVCUKl7fnBC2pawTxxB0IINPLBBeNywQNVCUJYx/bBDGpawXoQC0Ih9v7BMwcZwXoQC0KyGAXCZVaRwHoQC0I3DgHCMwcZwXoQC0KMhQPCZVaRwHoQC0IGKAfCRKSTvXoQC0LflAXCR6STvVR9CULrmgfCBgWBQFR9CULEBwbCBgWBQHBUCELzBwfCvCW3QHBUCELMdAXCvCW3QOLDBEJD+wDCWcgRQYRn/UFY4PrBZUsrQeLDBEJpjgLCWcgRQYRn/UEMuvfBqewrQZxe70HKGvTBUj89QZxe70F+9PDBlOA9QbatB0IakOPByt9ywVR9CUIakOPBEGdWwQhXBkIakOPBp3ghwVR9CUIakOPBbOiNwHoQC0IZkOPBrGOjPfbNCUIZkOPBw2OgQHBUCEIZkOPBCw/XQIMUBUIZkOPBka4VQYRn/UEZkOPBZzAuQZxe70EZkOPBtu5AQZsgB0Ikw+XBgSF6wZsgB0IakOPBSh56wUv4BkIkw+XBBWR7wUv4BkIakOPBz2B7wZxe70FN3QXB6VFeQYRn/UFN3QXBz3hJQYMUBUJN3QXBzscvQfbNCUJN3QXBIN/NQHBUCEJN3QXBVZcDQXoQC0JO3QXBzqGhP1R9CUJO3QXBDhFewAhXBkJO3QXBbGgWwbatB0JP3QXBDAFtwVR9CUJO3QXB5gtRwZsgB0JP3QXBJpl0wUv4BkJP3QXBQet1wVh/BkJO3QXBsC4ZwVh/BkIakOPBLR4kwVL8CkKMof7BwxscwVL8CkLu4wDCwxscwQhXCUJO3QXBJ2lOwQhXCUIakOPBbONTwXqQCULaqvjBktFRwXqQCUIm0fvBktFRwVh/BkJjJy9BK+QOwQhXCUI1PQ9BrjpIwQhXCUK7vihBF7RHwVh/BkI1PQ9B+78PwVR9CUI1PQ9BQPhKwVR9CUKL4ClBxm1KwQhXBkLjnS5BywIMwQhXBkI1PQ9BfN0MwZsgB0LVPDZBDGFvwUv4BkI1PQ9BIGJxwUv4BkKqHzlBRrZwwZsgB0I1PQ9BlgJwwbatB0L1+jBB04lnwbatB0I1PQ9BLx1owVR9CUI8LR5Bf4UmwFR9CUI2PQ9BDs4owHoQC0J2rhpBM0UUQHoQC0I2PQ9BpR4SQPbNCUItOx9BSun2QPbNCUI2PQ9BFxr1QHBUCEI9zSJBZoQZQXBUCEI3PQ9BeFgYQXql/UHQXS1BiA1jQYMUBUI3PQ9BtkpGQYMUBUJiTylBlvxHQamK/UE3PQ9BMgFhQROZ8EGoyy9BHFh2QTJ78EE3PQ9Bzg90QcncBkI3PQ9BmFEvQcncBkKFXSZBUMMwQcncBkJN3QXBk68ZQcncBkIZkOPBC5sAQdhjBkIHOAPCN1vtQNhjBkIuywTCN1vtQHoQC0JVtxxBGacUQFR9CUK9RiBBVTMmwPbNCUKiZSFBBij3QHBUCEKvHiVB8KcZQcncBkKy4ihBmuswQYMUBUIx0CtBPyZIQW6n/UFvki9B6jNjQd2a8EHPvzFBLHt2QQhXBkI8fTBBvvULwVh/BkJqPTFBztUOwQhXCUJL1SpBEqlHwVR9CUJX+CtB42JKwbatB0LNETNBtYBnwZsgB0IqGThBV1lvwUv4BkKLNztBsK1wwXbL7UFN3QXB6VFeQXbL7UEZkOPBtu5AQe4F70Goyy9BHFh2QQ3o7kE3PQ9Bzg90QbgH70HPvzFBLHt2QUgU/EFvki9B6jNjQe9KBEIx0CtBPyZIQTYTBkKy4ihBmuswQd2KB0KvHiVB8KcZQWMECUKiZSFBBij3QOdGCkJVtxxBGacUQMGzCEK9RiBBVTMmwHWNBUI8fTBBvvULwca1BUJqPTFBztUOwXWNCEJL1SpBEqlHwcGzCEJX+CtB42JKwSLkBkLNETNBtYBnwQhXBkIqGThBV1lvwbguBkKLNztBsK1wwbguBkKqHzlBRrZwwbguBkI1PQ9BIGJxwbguBkIakOPBz2B7wbguBkJP3QXBQet1wbguBkIkw+XBBWR7wamnBkIINPLBBeNywXCLCEKl7fnBC2pawejGCEIm0fvBktFRwb4yCkLu4wDCwxscwedGCkI3DgHCMwcZwedGCkKyGAXCZVaRwOdGCkIGKAfCRKSTvcGzCELrmgfCBgWBQN2KB0LzBwfCvCW3QEWaBUIuywTCN1vtQE/6A0JpjgLCWcgRQV7U+0FY4PrBZUsrQXbL7UHKGvTBUj89QXbL7UF+9PDBlOA9QZJY5EFN3QXB6VFeQZJY5EEZkOPBtu5AQQqT5UGoyy9BHFh2QSd15UE3PQ9Bzg90QZJY5EF+9PDBlOA9QdSU5UHPvzFBLHt2QWSh8kFvki9B6jNjQfwi/0Ex0CtBPyZIQcVZAUKy4ihBmuswQWvRAkKvHiVB8KcZQfBKBEKiZSFBBij3QHWNBUJVtxxBGacUQE/6A0K9RiBBVTMmwATUAEI8fTBBvvULwVP8AEJqPTFBztUOwQLUA0JL1SpBEqlHwU/6A0JX+CtB42JKwbAqAkLNETNBtYBnwZadAUIqGThBV1lvwUZ1AUKLNztBsK1wwUZ1AUKqHzlBRrZwwUZ1AUI1PQ9BIGJxwUZ1AUIakOPBz2B7wUZ1AUJP3QXBQet1wUZ1AUIkw+XBBWR7wTjuAUIINPLBBeNywf/RA0Kl7fnBC2pawXUNBEIm0fvBktFRwU15BULu4wDCwxscwXWNBUI3DgHCMwcZwXWNBUKyGAXCZVaRwHWNBUIGKAfCRKSTvU/6A0LrmgfCBgWBQGvRAkLzBwfCvCW3QNPgAEIuywTCN1vtQLiB/kFpjgLCWcgRQXph8kFY4PrBZUsrQZJY5EHKGvTBUj89QTRtDUIbyEpChVawQDRtDULkA0FCXZegQDRtDUJbckpC/9yqQDRtDUKH1UBCUpGlQDRtDUIdJCJCrb93vzRtDULghCxC/mQsQDRtDULSfiFCUJdjvzRtDULH9yxCWhQkQDRtDUK48xhCDHOMwDRtDUKKXBhCQA6KwKGjDEKC2RBCcSUQwaGjDEJ4VBBC31sPwVR9CUJz0wpC8VtLwVR9CUJ+WApCoDNLwTRtDUJiZEdCf/2EQDRtDUI20ENC0NhKQDRtDUJfjjRCYHaPPzRtDUJlwihCRC/jvzRtDUKkziBCV4OmwKGjDEJoehpC7jkTwVR9CUJfNhRCGs5QwTRtDUI/PzZC4w+BQDRtDUKodjVCesaDQDRtDUJQyjtCltoGQBdv/0FgxztCswGDQSUX8kEsqylCxgaLQZ8c/0EsqylCKuuAQZpp8kFgxztCk+qMQXliBUJgxztCYTtqQT45BUIsqylCEoBlQZVlBUJ7oTVCsyYiQUahBELbAy5CpEUxQZVlBULrJDBCgy4gQUahBEKvbjdCvTo0QemF8kFjGUpCbP+NQcaR/0Hm+ExC9FSEQTh3BUJBCFBC0mZtQXBUCEKOdFBCeLA9QfbNCUJxUDhCj64XQZceCkI6Hk9C23keQXBUCEJgxztCpnI6QcncBkJLvTZCfhRRQcncBkJq01BC7qRVQcncBkL+Ey5CaaZPQe/dA0LYTjBCLkE/Qe/dA0LXzzRCi/8/QVR9CUJ7Vg1CPoVIwAhXBkJTbPZB/xYDwQhXBkLVhARCp8ICwcGzCELsFQNCFoI9wHoQC0LEeBZCI1X6PnoQC0L6Gw5CfwFJQPbNCUJcwy1C++QTQedGCkL4ESNCKX2bQOdGCkKg8y9Cw9zuQNY+DEIHGD9CyT7uQNY+DEKmH01CRqn3QE97DEKR6zFCoFG5QE97DEJsyydCC2NrQBrgDELL+xtCftlMvocWDEKD2RJC4FBuwJceCkKnbApCQg8JwVR9CUJfzwdCfxQ3wQhXCUJTbPZBEtRAwVR9CUJTbPZBtq1DwQhXCUI5PAZC3Do0wYCXCELj1wJCaX9WwX68B0LtxwhCxNNmwQK4B0KeNghC5g9nwbatB0JTbPZBE/1hwfRsB0KexAFCLp5owVh/BkJTbPZBBxcGwfiYB0J9nghCta9owRSXB0L3DghCUMVowbL0B0I1Vw5CcWtiwV1IB0KfsAFCADBqwbL0B0L+uw5CsQxjwVR9CUIpmxRCGs5QwaGjDEIJyxpC7jkTwTRtDUJFHyFCmySnwDRtDULf/ihCT7TlvzRtDUKxtjRCN2KFPzRtDULJBjxCBhMDQDRtDUJf5ENCuc5FQDRtDUJcpkdC++aDQDRtDUJN60pCQn6rQDRtDUIOQUtCyPewQNY+DEJwhE1CRqn3QJceCkIFg09C23keQXBUCEJY2VBCeLA9QcncBkI0OFFC7qRVQTh3BULjWFBC0mZtQcaR/0GwXU1C9FSEQemF8kEufkpCbP+NQWzF4sCoYGJCjCV0wTss1sC2Zm1CjCV0wWzF4sC2Zm1CjCV0wTss1sCoYGJCjCV0wXBUCEIsqylCrcI0QfbNCUKOB95BrroJQXBUCEKOB95BxzooQfbNCUK0cVFBqpf8QHBUCEK0cVFBg08cQcncBkJjBt5BRG1AQcncBkK0cVFBAnQzQYMUBUJjBt5BUKZYQYMUBUK0cVFBgZhKQfiN/kFjBt5BzNB0QZPF/UG0cVFBbYFlQRWM8UFjBt5BZHSEQfS38EG0cVFBA7R4QXoQC0JneMJBzsgzQHoQC0KzcVFBHZAeQIoYCUJZcrdBoxguwFR9CUKzcVFBNa8ewAhXBkKXkq9BhxMHwQhXBkKycVFBDxALwVh/BkKXkq9BgwcKwVh/BkKycVFBAfgNwQhXCUKXkq9BtdhDwQhXCUKycVFBV91GwVR9CUKXkq9B5qZGwVR9CUKycVFBFaBJwbatB0KXkq9Bj3xkwbatB0KycVFBC/xmwZsgB0KXkq9B15FswZsgB0JTbPZBVjNqwZsgB0KycVFBXPBuwUv4BkKXkq9Bt/ltwUv4BkJTbPZB8aBrwUv4BkKycVFBflJwwWqq/UFk7DJBP25jQZid8EHPtzRBdLB2QYMUBULqnS9BjWVIQcncBkIPtyxB0igxQXBUCEJxpChB8t0ZQfbNCUIlsCRBV4f3QAhXBkKdVTNB6OELwVh/BkLiaDRB+b8OwQhXCUKSAS5BVZhHwVR9CUJ/Ji9BWlJKwbatB0KEPjZB13JnwZsgB0L47DpBoU1vwUv4BkLTZT5BoqBwwXoQC0LRzh9B2zsVQFR9CUJ/dyNBerYlwFR9CUIDMy1Bf1xKwQhXCUI9DyxBm6JHwVh/BkINdzJBXs0OwQhXBkLCljFBE+4LwVR9CUJrgiFBEwMmwHoQC0I/6R1Bl+AUQPbNCUJEqyJB3Uz3QHBUCEI3eyZB0bwZQcncBkKcXSpBQwMxQYMUBUKKSC1Btj5IQZao/UEK3jBBdkpjQeyb8EGN5TJBxY92QbatB0LrSzRBWHtnwZsgB0LqMDlB0FRvwUv4BkJEcjxBpahwwcYI70GN5TJBxY92QXAV/EEK3jBBdkpjQe9KBEKKSC1Btj5IQXIK70HPtzRBdLB2Qc4k70G0cVFBA7R4Qe/470FjBt5BZHSEQQGE8EEsqylCxgaLQXTW8EFgxztCk+qMQcPy8EFjGUpCbP+NQcPy8EEufkpCbP+NQaH+/UGwXU1C9FSEQaStBELjWFBC0mZtQTYTBkI0OFFC7qRVQd2KB0JY2VBCeLA9QQNVCUIFg09C23keQUR1C0JwhE1CRqn3QKGjDEIOQUtCyPewQKGjDEJN60pCQn6rQKGjDEJf5ENCuc5FQKGjDEJcpkdC/OaDQKGjDELJBjxCBhMDQKGjDEKxtjRCN2KFP6GjDELf/ihCT7Tlv6GjDEJFHyFCmySnwA7aC0IJyxpC7jkTwcGzCEIpmxRCGs5QwR8rB0L+uw5CsQxjwWXPBkJ9nghCta9owYLNBkL3DghCUMVowbguBkJTbPZB8aBrwct+BkKfsAFCADBqwbguBkKXkq9Bt/ltwbguBkKycVFBflJwwbguBkLTZT5BoqBwwbguBkJEcjxBpahwwQhXBkLqMDlB0FRvwSLkBkLrSzRBWHtnwcGzCEIDMy1Bf1xKwXWNCEI9DyxBm6JHwca1BUINdzJBXs0OwXWNBULCljFBE+4LwcGzCEJrgiFBEwMmwOdGCkI/6R1Bl+AUQGMECUJEqyJB3Uz3QN2KB0I3eyZB0bwZQTYTBkKcXSpBQwMxQeGV5UGN5TJBxY92QYyi8kEK3jBBdkpjQfwi/0GKSC1Btj5IQY2X5UHPtzRBdLB2QcVZAUKcXSpBQwMxQemx5UG0cVFBA7R4QQyG5kFjBt5BZHSEQRwR50EsqylCxgaLQY9j50FgxztCk+qMQeB/50FjGUpCbP+NQeB/50EufkpCbP+NQb2L9EGwXU1C9FSEQWbo/0HjWFBC0mZtQcVZAUI0OFFC7qRVQWvRAkJY2VBCeLA9QZObBEIFg09C23keQdK7BkJwhE1CRqn3QC7qB0IOQUtCyPewQC7qB0JN60pCQn6rQC7qB0Jf5ENCuc5FQC7qB0JcpkdC/OaDQC7qB0LJBjxCBhMDQC7qB0KxtjRCN2KFPy7qB0Lf/ihCT7Tlvy7qB0JFHyFCmySnwJsgB0IJyxpC7jkTwU/6A0IpmxRCGs5Qwa1xAkL+uw5CsQxjwfMVAkJ9nghCta9owRAUAkL3DghCUMVowUZ1AUJTbPZB8aBrwVnFAUKfsAFCADBqwUZ1AUKXkq9Bt/ltwUZ1AUKycVFBflJwwUZ1AULTZT5BoqBwwUZ1AUJEcjxBpahwwZadAULqMDlB0FRvwbAqAkLrSzRBWHtnwU/6A0IDMy1Bf1xKwQLUA0I9DyxBm6JHwVP8AEINdzJBXs0OwQTUAELCljFBE+4LwU/6A0JrgiFBEwMmwHWNBUI/6R1Bl+AUQPBKBEJEqyJB3Uz3QGvRAkI3eyZB0bwZQfbNCUKleDFAyujhQHoQC0LBwss/NLvsP1R9CUK/wss/73A/wAhXBkK8wss/vOsQwVh/BkK8wss/OsITwQhXCUK6wss/OdtKwVR9CUK6wss/Z41NwbatB0K5wss/ODFqwZsgB0K5wss/x/VxwUv4BkK5wss/mk9zwbguBkK5wss/mk9zwUZ1AUK5wss/mk9zwXBUCELFwss/ZIYPQcncBkJRUB1ABSorQYMUBULGwss/erk8Qbh7/UHHwss/1QBXQT4C8EHIwss/TNJqQRpv7kHIwss/TNJqQTX85EHIwss/TNJqQUvOBEJ+IklAt132QK3cA0It06ZAmSISQa3cA0KwwRhAfb8OQUvOBEK7T5hAucT8QPbNCULzlalAv+nrQHBUCEJVQ8BAPdEUQXoQC0JUQ8BAoQQHQFR9CUJTQ8BAAtwxwAhXBkJTQ8BAyHwOwVh/BkJTQ8BAeloRwQhXCUJSQ8BAs0dJwVR9CUJSQ8BAtgBMwbatB0JSQ8BA//FowZsgB0JSQ8BARMpwwUv4BkJSQ8BAhCdywbguBkJSQ8BAhCdywUZ1AUJSQ8BAhCdywUPsAkJt3JFASCkjQUPsAkLjOzxA5G8gQcncBkLJgZ9AsWsvQYMUBUJVQ8BABHdCQbCE/UFVQ8BADAFdQdBK8EFWQ8BAml1wQau37kFWQ8BAml1wQcdE5UFWQ8BAml1wQVyqBkIe055Axs4uQUAbCEK5/b5A564UQfqNCULXuKhAgMHsQPqNCUKKpzJAo+7iQEAbCEIu2dA/cXwPQVyqBkIY3B5AtaAqQYqVCUIZLjhCkTQYQRUlCEK+jztCDCM6QXG2BkKepDZC2DlQQXG2BkKJMC5CjdROQRUlCELN4ilCB5Y0QYqVCULX4S1CQoIUQQNVCcKl7fnBC2pawWWFB8K8De/BBeNywTxxB8IINPLBBeNywQNVCcJYx/bBDGpawXoQC8KyGAXCZVaRwHoQC8Ih9v7BMwcZwXoQC8I3DgHCMwcZwXoQC8KMhQPCZVaRwHoQC8IGKAfCRKSTvXoQC8LflAXCR6STvVR9CcLrmgfCBgWBQFR9CcLEBwbCBgWBQHBUCMLzBwfCvCW3QHBUCMLMdAXCvCW3QIRn/cFY4PrBZUsrQeLDBMJD+wDCWcgRQeLDBMJpjgLCWcgRQYRn/cEMuvfBqewrQZxe78HKGvTBUj89QZxe78F+9PDBlOA9QbatB8IakOPByt9ywVR9CcIakOPBEGdWwQhXBsIakOPBp3ghwVR9CcIakOPBbOiNwHoQC8IZkOPBrGOjPfbNCcIZkOPBw2OgQHBUCMIZkOPBCw/XQIMUBcIZkOPBka4VQYRn/cEZkOPBZzAuQZxe78EZkOPBtu5AQZsgB8Ikw+XBgSF6wZsgB8IakOPBSh56wUv4BsIkw+XBBWR7wUv4BsIakOPBz2B7wZxe78FN3QXB6VFeQYRn/cFN3QXBz3hJQYMUBcJN3QXBzscvQfbNCcJN3QXBIN/NQHBUCMJN3QXBVZcDQXoQC8JO3QXBzqGhP1R9CcJO3QXBDhFewAhXBsJO3QXBbGgWwbatB8JP3QXBDAFtwVR9CcJO3QXB5gtRwZsgB8JP3QXBJpl0wUv4BsJP3QXBQet1wVh/BsJO3QXBsC4ZwVh/BsIakOPBLR4kwVL8CsKMof7BwxscwVL8CsLu4wDCwxscwQhXCcJO3QXBJ2lOwQhXCcIakOPBbONTwXqQCcLaqvjBktFRwXqQCcIm0fvBktFRwQhXCcI1PQ9BrjpIwVh/BsJjJy9BK+QOwQhXCcK7vihBF7RHwVh/BsI1PQ9B+78PwVR9CcI1PQ9BQPhKwVR9CcKL4ClBxm1KwQhXBsLjnS5BywIMwQhXBsI1PQ9BfN0MwUv4BsI1PQ9BIGJxwZsgB8LVPDZBDGFvwUv4BsKqHzlBRrZwwZsgB8I1PQ9BlgJwwbatB8L1+jBB04lnwbatB8I1PQ9BLx1owVR9CcI8LR5Bf4UmwFR9CcI2PQ9BDs4owHoQC8J2rhpBM0UUQHoQC8I2PQ9BpR4SQPbNCcItOx9BSun2QPbNCcI2PQ9BFxr1QHBUCMI9zSJBZoQZQXBUCMI3PQ9BeFgYQYMUBcI3PQ9BtkpGQXql/cHQXS1BiA1jQYMUBcJiTylBlvxHQamK/cE3PQ9BMgFhQROZ8MGoyy9BHFh2QTJ78ME3PQ9Bzg90QcncBsI3PQ9BmFEvQcncBsKFXSZBUMMwQcncBsJN3QXBk68ZQcncBsIZkOPBC5sAQdhjBsIHOAPCN1vtQNhjBsIuywTCN1vtQHoQC8JVtxxBGacUQFR9CcK9RiBBVTMmwPbNCcKiZSFBBij3QHBUCMKvHiVB8KcZQcncBsKy4ihBmuswQYMUBcIx0CtBPyZIQW6n/cFvki9B6jNjQd2a8MHPvzFBLHt2QQhXBsI8fTBBvvULwVh/BsJqPTFBztUOwQhXCcJL1SpBEqlHwVR9CcJX+CtB42JKwbatB8LNETNBtYBnwZsgB8IqGThBV1lvwUv4BsKLNztBsK1wwXbL7cFN3QXB6VFeQXbL7cEZkOPBtu5AQe4F78Goyy9BHFh2QQ3o7sE3PQ9Bzg90QbgH78HPvzFBLHt2QUgU/MFvki9B6jNjQe9KBMIx0CtBPyZIQTYTBsKy4ihBmuswQd2KB8KvHiVB8KcZQWMECcKiZSFBBij3QOdGCsJVtxxBGacUQMGzCMK9RiBBVTMmwHWNBcI8fTBBvvULwca1BcJqPTFBztUOwXWNCMJL1SpBEqlHwcGzCMJX+CtB42JKwSLkBsLNETNBtYBnwQhXBsIqGThBV1lvwbguBsKLNztBsK1wwbguBsKqHzlBRrZwwbguBsI1PQ9BIGJxwbguBsIakOPBz2B7wbguBsJP3QXBQet1wbguBsIkw+XBBWR7wamnBsIINPLBBeNywXCLCMKl7fnBC2pawejGCMIm0fvBktFRwb4yCsLu4wDCwxscwedGCsI3DgHCMwcZwedGCsKyGAXCZVaRwOdGCsIGKAfCRKSTvcGzCMLrmgfCBgWBQN2KB8LzBwfCvCW3QEWaBcIuywTCN1vtQE/6A8JpjgLCWcgRQV7U+8FY4PrBZUsrQXbL7cHKGvTBUj89QXbL7cF+9PDBlOA9QZJY5MFN3QXB6VFeQZJY5MEZkOPBtu5AQQqT5cGoyy9BHFh2QSd15cE3PQ9Bzg90QZJY5MF+9PDBlOA9QdSU5cHPvzFBLHt2QWSh8sFvki9B6jNjQfwi/8Ex0CtBPyZIQcVZAcKy4ihBmuswQWvRAsKvHiVB8KcZQfBKBMKiZSFBBij3QHWNBcJVtxxBGacUQE/6A8K9RiBBVTMmwATUAMI8fTBBvvULwVP8AMJqPTFBztUOwQLUA8JL1SpBEqlHwU/6A8JX+CtB42JKwbAqAsLNETNBtYBnwZadAcIqGThBV1lvwUZ1AcKLNztBsK1wwUZ1AcKqHzlBRrZwwUZ1AcI1PQ9BIGJxwUZ1AcIakOPBz2B7wUZ1AcJP3QXBQet1wUZ1AcIkw+XBBWR7wTjuAcIINPLBBeNywf/RA8Kl7fnBC2pawXUNBMIm0fvBktFRwU15BcLu4wDCwxscwXWNBcI3DgHCMwcZwXWNBcKyGAXCZVaRwHWNBcIGKAfCRKSTvU/6A8LrmgfCBgWBQGvRAsLzBwfCvCW3QNPgAMIuywTCN1vtQLiB/sFpjgLCWcgRQXph8sFY4PrBZUsrQZJY5MHKGvTBUj89QWzF4sC2Zm1C5R6QwTss1sC2Zm1C5R6QwWzF4sCoYGJC5R6QwTss1sCoYGJC5R6QwWzFYsGoYGJCUVGpwZxe78CoYGJCRPJ2wWzFYsGoYGJCM0WTwZxe78CoYGJCQYWRwZxe78C2Zm1CRPJ2wWzFYsG2Zm1CM0WTwWzFYsG2Zm1CUVGpwZxe78C2Zm1CQYWRwc33e8GoYGJCM0WTwQQSacGoYGJCUVGpwQQSacGoYGJCM0WTwc33e8GoYGJCUVGpwc33e8G2Zm1CM0WTwQQSacG2Zm1CM0WTwc33e8G2Zm1CUVGpwQQSacG2Zm1CUVGpwa/hkMFBrWhCUVGpwa/hkMFCrWhCM0WTwY3TucFBrWhCUVGpwY3TucFCrWhCM0WTwa/hkMETk3tCM0WTwY3TucETk3tCM0WTwa/hkMETk3tCUVGpwY3TucETk3tCUVGpwY3TucELFkVCfeikwY3TucEHk1NCBq6XwY3TucEHk1NCfuikwY3TucELFkVCBq6XwY3TucFyx1VCM0WTwY3TucFyx1VCUVGpwY3TucGg4UJCUFGpwY3TucGg4UJCMkWTwQQSacENFFxCUVGpwWzFYsENFFxCM0WTwWzFYsENFFxCUVGpwQQSacENFFxCM0WTwWzFYsH9DVFCM0WTwQQSacH9DVFCM0WTwQQSacH9DVFCUVGpwWzFYsH9DVFCUVGpwTss1sANFFxCjCV0wWzF4sANFFxC5R6QwWzF4sANFFxCjCV0wTss1sANFFxC5R6QwTss1sD9DVFCjCV0wWzF4sD9DVFCjCV0wWzF4sD9DVFC5R6QwTss1sD9DVFC5R6QwZxe78ANFFxCRPJ2wZxe78ANFFxCQYWRwZxe78D9DVFCRPJ2wZxe78D9DVFCQYWRwc33e8ENFFxCM0WTwc33e8ENFFxCUVGpwc33e8H9DVFCM0WTwc33e8H9DVFCUVGpwa/hkMFyx1VCUVGpwa/hkMFyx1VCM0WTwa/hkMGg4UJCMkWTwa/hkMGg4UJCUFGpwa/hkMFCrWhC5R6Qwc33e8GoYGJC5R6Qwa/hkMETk3tC5R6Qwc33e8G2Zm1C5R6Qwc33e8ENFFxC5R6Qwc33e8H9DVFC5R6Qwa/hkMGg4UJC5R6Qwa/hkMFyx1VC5R6QwXjHo8FCrWhC1cxXwa/hkMGoYGJC1cxXwXjHo8ETk3tC1cxXwa/hkMG2Zm1C1cxXwa/hkMENFFxC1cxXwa/hkMH9DVFC1cxXwXjHo8Gg4UJC1MxXwXjHo8Fyx1VC1cxXweB6ncCoYGJCjCV0weB6ncCoYGJC5R6QweB6ncC2Zm1CjCV0weB6ncC2Zm1C5R6QweB6ncANFFxC5R6QweB6ncANFFxCjCV0weB6ncD9DVFCjCV0weB6ncD9DVFC5R6QwWzF4r+oYGJCjCV0wWzF4r+oYGJC5R6QwQAAAACoYGJCjCV0wQAAAACoYGJC5R6QwQAAAAC2Zm1CjCV0wWzF4r+2Zm1CjCV0wWzF4r+2Zm1C5R6QwQAAAAC2Zm1C5R6QwWzF4r8NFFxCjCV0wWzF4r8NFFxC5R6QwQAAAAANFFxC5R6QwQAAAAANFFxCjCV0wWzF4r/9DVFCjCV0wQAAAAD9DVFCjCV0wWzF4r/9DVFC5R6QwQAAAAD9DVFC5R6QweB6ncC2Zm1CQP9wwWzF4r+2Zm1CQP9wwWzF4r+oYGJCQP9wweB6ncCoYGJCQP9wweB6ncANFFxCQP9wweB6ncD9DVFCQP9wwWzF4r8NFFxCQP9wwWzF4r/9DVFCQP9wweB6ncC2Zm1CUQ1IwWzF4r+2Zm1CUQ1IwWzF4r+oYGJCUQ1IweB6ncCoYGJCUQ1IweB6ncANFFxCUQ1IweB6ncD9DVFCUQ1IwWzF4r8NFFxCUQ1IwWzF4r/9DVFCUQ1IwY3TuUGoXnlCfuikwY3TuUGs4WpCBq6XwY3TuUGs4WpCfuikwY3TuUGoXnlCB66XwY3TuUFCrWhCM0WTwY3TuUFBrWhCUVGpwY3TuUETk3tCUVGpwY3TuUETk3tCM0WTwQQSaUGoYGJCUVGpwWzFYkGoYGJCM0WTwWzFYkGoYGJCUVGpwQQSaUGoYGJCM0WTwWzFYkG2Zm1CM0WTwQQSaUG2Zm1CM0WTwQQSaUG2Zm1CUVGpwWzFYkG2Zm1CUVGpwTss1kCoYGJCjCV0wWzF4kCoYGJC5R6QwWzF4kCoYGJCjCV0wTss1kCoYGJC5R6QwTss1kC2Zm1CjCV0wWzF4kC2Zm1CjCV0wWzF4kC2Zm1C5R6QwTss1kC2Zm1C5R6QwZxe70CoYGJCRPJ2wZxe70CoYGJCQYWRwZxe70C2Zm1CRPJ2wZxe70C2Zm1CQYWRwc33e0GoYGJCM0WTwc33e0GoYGJCUVGpwc33e0G2Zm1CM0WTwc33e0G2Zm1CUVGpwa/hkEFBrWhCUVGpwa/hkEFCrWhCM0WTwa/hkEETk3tCM0WTwa/hkEETk3tCUVGpwY3TuUEHk1NCBq6XwY3TuUELFkVCfeikwY3TuUEHk1NCfuikwY3TuUELFkVCBq6XwY3TuUFyx1VCM0WTwY3TuUFyx1VCUVGpwY3TuUGg4UJCUFGpwY3TuUGg4UJCMkWTwWzFYkENFFxCM0WTwQQSaUENFFxCUVGpwWzFYkENFFxCUVGpwQQSaUENFFxCM0WTwWzFYkH9DVFCM0WTwQQSaUH9DVFCM0WTwQQSaUH9DVFCUVGpwWzFYkH9DVFCUVGpwWzF4kANFFxC5R6QwTss1kANFFxCjCV0wWzF4kANFFxCjCV0wTss1kANFFxC5R6QwTss1kD9DVFCjCV0wWzF4kD9DVFCjCV0wWzF4kD9DVFC5R6QwTss1kD9DVFC5R6QwZxe70ANFFxCRPJ2wZxe70ANFFxCQYWRwZxe70D9DVFCRPJ2wZxe70D9DVFCQYWRwc33e0ENFFxCM0WTwc33e0ENFFxCUVGpwc33e0H9DVFCM0WTwc33e0H9DVFCUVGpwa/hkEFyx1VCUVGpwa/hkEFyx1VCM0WTwa/hkEGg4UJCMkWTwa/hkEGg4UJCUFGpwa/hkEFCrWhC5R6Qwc33e0GoYGJC5R6Qwa/hkEETk3tC5R6Qwc33e0G2Zm1C5R6Qwc33e0ENFFxC5R6Qwc33e0H9DVFC5R6Qwa/hkEGg4UJC5R6Qwa/hkEFyx1VC5R6QwXjHo0FCrWhC1cxXwa/hkEGoYGJC1cxXwXjHo0ETk3tC1cxXwa/hkEG2Zm1C1cxXwa/hkEENFFxC1cxXwa/hkEH9DVFC1cxXwXjHo0Gg4UJC1MxXwXjHo0Fyx1VC1cxXweB6nUCoYGJCjCV0weB6nUCoYGJC5R6QweB6nUC2Zm1CjCV0weB6nUC2Zm1C5R6QweB6nUANFFxC5R6QweB6nUANFFxCjCV0weB6nUD9DVFCjCV0weB6nUD9DVFC5R6QwWzF4j+oYGJCjCV0wWzF4j+oYGJC5R6QwWzF4j+2Zm1CjCV0wWzF4j+2Zm1C5R6QwWzF4j8NFFxCjCV0wWzF4j8NFFxC5R6QwWzF4j/9DVFCjCV0wWzF4j/9DVFC5R6QweB6nUC2Zm1CQP9wwWzF4j+2Zm1CQP9wwWzF4j+oYGJCQP9wweB6nUCoYGJCQP9wwfbNCcKleDFAyujhQHoQC8LBwss/NLvsP1R9CcK/wss/73A/wAhXBsK8wss/vOsQwVh/BsK8wss/OsITwQhXCcK6wss/OdtKwVR9CcK6wss/Z41NwbatB8K5wss/ODFqwZsgB8K5wss/x/VxwUv4BsK5wss/mk9zwbguBsK5wss/mk9zwUZ1AcK5wss/mk9zwXBUCMLFwss/ZIYPQcncBsJRUB1ABSorQYMUBcLGwss/erk8Qbh7/cHHwss/1QBXQT4C8MHIwss/TNJqQRpv7sHIwss/TNJqQTX85MHIwss/TNJqQa3cA8It06ZAmSISQUvOBMJ+IklAt132QK3cA8KwwRhAfb8OQUvOBMK7T5hAucT8QPbNCcLzlalAv+nrQHBUCMJVQ8BAPdEUQXoQC8JUQ8BAoQQHQFR9CcJTQ8BAAtwxwAhXBsJTQ8BAyHwOwVh/BsJTQ8BAeloRwQhXCcJSQ8BAs0dJwVR9CcJSQ8BAtgBMwbatB8JSQ8BA//FowZsgB8JSQ8BARMpwwUv4BsJSQ8BAhCdywbguBsJSQ8BAhCdywUZ1AcJSQ8BAhCdywUPsAsJt3JFASCkjQUPsAsLjOzxA5G8gQcncBsLJgZ9AsWsvQYMUBcJVQ8BABHdCQbCE/cFVQ8BADAFdQdBK8MFWQ8BAml1wQau37sFWQ8BAml1wQcdE5cFWQ8BAml1wQVyqBsIe055Axs4uQUAbCMK5/b5A564UQfqNCcLXuKhAgMHsQPqNCcKKpzJAo+7iQEAbCMIu2dA/cXwPQVyqBsIY3B5AtaAqQeB6nUANFFxCQP9wweB6nUD9DVFCQP9wwWzF4j8NFFxCQP9wwWzF4j/9DVFCQP9wweB6nUC2Zm1CUQ1IwWzF4j+2Zm1CUQ1IwWzF4j+oYGJCUQ1IweB6nUCoYGJCUQ1IweB6nUANFFxCUQ1IweB6nUD9DVFCUQ1IwWzF4j8NFFxCUQ1IwWzF4j/9DVFCUQ1IwSPhB0IUBCpC7s8+QUX/CEIpPSpCsfYqQfGvCEJpPipCC5EqQXgwCELSAipCkTU/QS/6CEJqQyJCcgIpQQ7cB0JUCiJCrts8QduqCEKqRCJCzJwoQWMrCEISCSJCUkE9QQEKCUKDEztCwxYvQd/rB0Ju2jpCAvBCQau6CELDFDtCHrEuQTM7CEIr2TpCpFVDQdbyB0JgyEVChp1FQfgQCUJ2AUZCScQxQaTBCEK3AkZCpF4xQStCCEIfx0VCKgNGQdbrAkLwEipCRfo6Qaa6A0JGTSpCY7smQcLmAkIwGSJCBQY5QY+1A0KGUyJCI8ckQZL2AkJJ6TpCWBo/QWHFA0KhIztCdtsqQYv9AkI810VC3cdBQVjMA0KSEUZC/IgtQWYACULhAixC2mUrQZgxCEKLyCtCvKQ/QYzxCkJFNSpCG3UtQd8jCkKnwCtCJyNCQb4iCkLv+ilC/bNBQa3yCkL9+itCRuQtQeAICULJTTlCmacuQRE6CEJyEzlCeuZCQSf7CkLlRTlCBCYxQVcsCkKQCzlC6GRFQXotCkJI0TpCENRFQUj8CkKfCztCLpUxQcvwCkLKBilCASstQf0hCkJzzChC4mlBQXbsCkKGOyJC3oArQagdCkIvASJCwL8/QYX+CEKsDilCkqwqQTCvCELuDylC70YqQbcvCEJX1ChCdes+QWLgB0KY1ShC0YU+QeW5A0LMHilCRnEmQRbrAkJ05ChCKLA6QZouCkIBlzxCPENGQWj9CkJY0TxCWQQyQQDtB0InoDxCKl9DQVM8CELknjxCz8RDQSELCUI72TxC7YUvQc27CEJ82jxCSSAvQbP3AkIDrzxCg4k/QYLGA0JY6TxCoUorQT4DC0KS+UVCtEI0QdKlCEKMxUVC2YJGQXE0CkI7v0VCloFIQZ90CULi/0VC90MyQcluCUKm1zxCnAUwQaltCULuETtCcZYvQYhsCUI1TDlCSScvQQ5kCUJOASxCieUrQe1iCUKUOypCX3YrQSxiCUIZDSlCRCwrQdddCULWQSJCIYIpQQmPCEJ+ByJCAsE9QV6TCELD0ihCJGs/QSCUCEI+ASpCQbU/QUCVCEL2xitCbCRAQbmdCELfETlCKWZDQdueCEKY1zpCVdVDQfufCEJQnTxCf0REQcNJCUKiYj1C6okzQRyxCEKa+D1Cn59AQdWwCEKiYj1CHIhAQQhKCUKa+D1CbqEzQV9AB0Ka+D1CywU/QWQFB0KiYj1CCK0+QRlAB0KiYj1CR+4+QaoFB0Ka+D1CjMQ+QVCeB0KiYj1C164xQUzZB0Ka+D1CmwcyQQXZB0KiYj1CF/AxQZeeB0Ka+D1CW8YxQVtaA0Ka+D1C9k08QRVaA0KiYj1CcDY8QQPzA0KiYj1CQDgvQUrzA0Ka+D1Cw08vQcQiCEKiYj1CDkIyQQsjCEKa+D1CklkyQR6KB0Ka+D1Cw1c/QdeJB0KiYj1CQEA/QST+CkKa+D1CsEwyQXsvCkKa+D1C3plGQcb9CkKiYj1C8icyQRwvCkKiYj1CIHVGQXztB0KiYj1C0Y5DQdE8CEKiYj1CxPRDQdrtB0Ka+D1CkLNDQTA9CEKa+D1CghlEQYO8CEKa+D1CY2YvQdkLCUKa+D1CV8wvQSS8CEKiYj1CpEEvQXgLCUKiYj1Cl6cvQSb4AkKiYj1ChLU/QYX4AkKa+D1CQ9o/QS7HA0Ka+D1CF40rQdDGA0KiYj1CV2grQYFvCUKa+D1CaEwwQSJvCUKiYj1CqScwQdqgCEKa+D1ClJlEQXmgCEKiYj1C13REQbr9CkLgTz1CWiMyQRAvCkLgTz1Ch3BGQXHtB0LgTz1COopDQcY8CELgTz1CK/BDQRi8CELgTz1CDD0vQW0LCULgTz1CAKMvQRr4AkLgTz1C7bA/QcTGA0LgTz1CwGMrQRZvCULgTz1CEiMwQW2gCELgTz1CP3BEQXv/CkIqEUBCKNAyQZQvCkIZHj5CDaNGQTz+CkIYHj5C4VUyQa0wCkLU1j9CCQ9HQUg9CEIZHj5CsyJEQfTtB0IZHj5CwLxDQWY+CEK43j9CnJBEQRLvB0L43z9C+SpEQfALCUIYHj5ChtUvQZy8CEIYHj5Ck28vQTQNCUINGUBCu1EwQeC9CEJPGkBCGOwvQcX5AkLV7j9CT1VAQZ34AkIZHj5CcuM/QUfHA0IYHj5CRpYrQZTIA0IrKUBCbhYsQdxwCUJ6F0BCa9EwQZlvCUIYHj5CmFUwQfKgCEIZHj5CxaJEQQ6iCEIj3T9CTBBFQeEBC0JS1ENCI7wzQTczCkJS1ENCUAlIQe1ACEJS1ENC9ohFQZjxB0JS1ENCASNFQT/ACEJS1ENC1dUwQZUPCUJS1ENCyDsxQUH8AkJS1ENCtElBQevKA0JS1ENCiPwsQZWkCEJS1ENCBwlGQT1zCUJS1ENC2rsxQSPhB0LKlLE/TwQZQUX/CELiQLk/EisFQfGvCEIYbLk/bMUEQXgwCEKVabE/82kZQS/6CEJ9WTK/0zYDQQ7cB0KgsUG/EBAXQduqCEISAzK/LdECQWMrCEILCEK/snUXQQEKCUKFJr9AJEsJQd/rB0KBO71AYiQdQau6CEJTMb9Af+UIQTM7CEKyML1ABoodQdbyB0Lvnw1B59EfQfgQCUJylQ5BqvgLQaTBCELYmg5BBZMLQStCCEKImg1BjDcgQdbrAkIclLM/pS4VQaa6A0Jja7s/xO8AQcLmAkIXsz2/ZjoTQY+1A0JwBC6/Cff9QJL2AkJUu71AuE4ZQWHFA0Imsb9A1w8FQYv9AkLZ3w1BPfwbQVjMA0LC2g5BXL0HQWYACULQPPY/O5oFQZgxCEKDZe4/HdkZQYzxCkJ6Mbg/fKkHQd8jCkIbVu0/iVccQb4iCkItWrA/X+gbQa3yCkJhLfU/qBgIQeAICUKJ569A+tsIQRE6CEK38a1A2xodQSf7CkKvo69AZloLQVcsCkLera1ASJkfQXotCkLX7LxAcgggQUj8CkKr4r5Aj8kLQcvwCkKNiY8/Yl8HQf0hCkI/soc/Qp4bQXbsCkJNeDS/P7UFQagdCkLoJkS/IPQZQYX+CELumJA/9OAEQTCvCEIkxJA/UHsEQbcvCEKowYg/1h8ZQWLgB0Ld7Ig/MroYQeW5A0Jvw5I/qKUAQRbrAkIo7Io/ieQUQZouCkLTK8xAnXcgQWj9CkKlIc5AujgMQQDtB0J6esxAi5MdQVM8CEKtb8xAMPkdQSELCUKAZc5ATroJQc27CEJOcM5AqlQJQbP3AkJO+sxA470ZQYLGA0Ih8M5AAX8FQT4DC0KFcw5BFncOQdKlCEK/kw1BO7cgQXE0CkKbeA1B97UiQZ90CUKpjg5BWHgMQcluCULtV85A/TkKQaltCUL1GL9A0soJQYhsCUL42a9AqVsJQQ5kCUKFBvY/6hkGQe1iCUKaCrk/v6oFQSxiCUKmYpA/pWAFQdddCUIBxjK/gbYDQQmPCEKodEK/Y/UXQV6TCEJgi4g/hp8ZQSCUCEJNM7E/oekZQUCVCEI7L+4/zVgaQbmdCEIm5K1Ai5odQdueCEIhI71AtAkeQfufCEIcYsxA4HgeQcNJCUJsA9NAS74NQRyxCEKCDdhAANQaQdWwCEJsA9NAfLwaQQhKCUKCDdhAz9UNQV9AB0KCDdhALDoZQWQFB0JsA9NAaeEYQRlAB0JsA9NAqSIZQaoFB0KCDdhA7fgYQVCeB0JsA9NAOOMLQUzZB0KCDdhA/TsMQQXZB0JsA9NAeCQMQZeeB0KCDdhAvPoLQVtaA0KCDdhAVYIWQRVaA0JsA9NA0moWQQPzA0JsA9NAoGwJQUrzA0KCDdhAJYQJQcQiCEJsA9NAbnYMQQsjCEKCDdhA840MQR6KB0KCDdhAJYwZQdeJB0JsA9NAoHQZQST+CkKCDdhAEoEMQXsvCkKCDdhAPs4gQcb9CkJsA9NAUlwMQRwvCkJsA9NAgKkgQXztB0JsA9NAMsMdQdE8CEJsA9NAJCkeQdrtB0KCDdhA8OcdQTA9CEKCDdhA400eQYO8CEKCDdhAw5oJQdkLCUKCDdhAtwAKQSS8CEJsA9NABnYJQXgLCUJsA9NA+NsJQSb4AkJsA9NA5ekZQYX4AkKCDdhAow4aQS7HA0KBDdhAd8EFQdDGA0JsA9NAuJwFQYFvCUKCDdhAyIAKQSJvCUJsA9NAClwKQdqgCEKCDdhA9s0eQXmgCEJsA9NAN6keQbr9CkIpYtJAu1cMQRAvCkIpYtJA6KQgQXHtB0IpYtJAmb4dQcY8CEIpYtJAjSQeQRi8CEIpYtJAbXEJQW0LCUIpYtJAYdcJQRr4AkIpYtJATuUZQcTGA0IpYtJAIJgFQRZvCUIpYtJAc1cKQW2gCEIpYtJAoKQeQXv/CkIbFepAiQQNQZQvCkIHUNlAbtcgQTz+CkIHUNlAQYoMQa0wCkJJH+hAakMhQUg9CEIHUNlAElceQfTtB0IHUNlAIPEdQWY+CEIkY+hA/cQeQRLvB0LwbehAWV8eQfALCUIHUNlA5gkKQZy8CEIHUNlA9KMJQTQNCUL2WOpAHIYKQeC9CELDY+pAdyAKQcX5AkLD7ehAsIkaQZ34AkIHUNlA0xcaQUfHA0IHUNlAp8oFQZTIA0KW4+pAz0oGQdxwCUJkS+pAygULQZlvCUIHUNlA+IkKQfKgCEIHUNlAJtceQQ6iCEKRVehArEQfQW/PCkKLX+9A1NoRQW47CkIscgJBCt8cQcA5CkK08O1AvGccQQPRCkIscgJBrkoSQeEBC0ItOQVBg/ANQTczCkItOQVBsD0iQe1ACEItOQVBVb0fQZjxB0ItOQVBY1cfQT/ACEItOQVBNwoLQZUPCUItOQVBKXALQUH8AkItOQVBFX4bQevKA0ItOQVB6TAHQZWkCEItOQVBaD0gQT1zCUItOQVBO/ALQXfmCkLgwu5AYacRQW9KCkJ7RO1A06YcQTdMCkKwwgJB4iQdQSLoCkKwwgJBrx0SQVK8CEIUae1Ac/AbQVhYCUJ65+5AAvEQQRm+CEL91AJBhG4cQQRaCUL91AJBT2cRQThVCUJQgu9Aky0RQYm/CEJ5E+5AfbobQTnBCEKOgwJByTEcQcxWCUKOgwJBbZ0RQYe7CkJgYe9AttERQdglCkKJ8u1An14cQYcnCkIWcwJB69UcQRq9CkIWcwJBkEESQUX/CMIpPSpCsfYqQSPhB8IUBCpC7s8+QfGvCMJpPipCC5EqQXgwCMLSAipCkTU/QQ7cB8JUCiJCrts8QS/6CMJqQyJCcgIpQduqCMKqRCJCzJwoQWMrCMISCSJCUkE9Qd/rB8Ju2jpCAvBCQQEKCcKDEztCwxYvQau6CMLDFDtCHrEuQTM7CMIr2TpCpFVDQfgQCcJ2AUZCScQxQdbyB8JgyEVChp1FQaTBCMK3AkZCpF4xQStCCMIfx0VCKgNGQdbrAsLwEipCRfo6Qaa6A8JGTSpCY7smQcLmAsIwGSJCBQY5QY+1A8KGUyJCI8ckQZL2AsJJ6TpCWBo/QWHFA8KhIztCdtsqQYv9AsI810VC3cdBQVjMA8KSEUZC/IgtQWYACcLhAixC2mUrQZgxCMKLyCtCvKQ/Qd8jCsKnwCtCJyNCQYzxCsJFNSpCG3UtQb4iCsLv+ilC/bNBQa3yCsL9+itCRuQtQeAICcLJTTlCmacuQRE6CMJyEzlCeuZCQSf7CsLlRTlCBCYxQVcsCsKQCzlC6GRFQXotCsJI0TpCENRFQUj8CsKfCztCLpUxQcvwCsLKBilCASstQf0hCsJzzChC4mlBQXbsCsKGOyJC3oArQagdCsIvASJCwL8/QYX+CMKsDilCkqwqQTCvCMLuDylC70YqQbcvCMJX1ChCdes+QWLgB8KY1ShC0YU+QeW5A8LMHilCRnEmQRbrAsJ05ChCKLA6QZouCsIBlzxCPENGQWj9CsJY0TxCWQQyQQDtB8InoDxCKl9DQVM8CMLknjxCz8RDQSELCcI72TxC7YUvQc27CMJ82jxCSSAvQbP3AsIDrzxCg4k/QYLGA8JY6TxCoUorQdKlCMKMxUVC2YJGQT4DC8KS+UVCtEI0QXE0CsI7v0VCloFIQZ90CcLi/0VC90MyQcluCcKm1zxCnAUwQaltCcLuETtCcZYvQYhsCcI1TDlCSScvQQ5kCcJOASxCieUrQe1iCcKUOypCX3YrQSxiCcIZDSlCRCwrQdddCcLWQSJCIYIpQQmPCMJ+ByJCAsE9QV6TCMLD0ihCJGs/QSCUCMI+ASpCQbU/QUCVCML2xitCbCRAQbmdCMLfETlCKWZDQdueCMKY1zpCVdVDQfufCMJQnTxCf0REQRyxCMKa+D1Cn59AQcNJCcKiYj1C6okzQdWwCMKiYj1CHIhAQQhKCcKa+D1CbqEzQWQFB8KiYj1CCK0+QV9AB8Ka+D1CywU/QRlAB8KiYj1CR+4+QaoFB8Ka+D1CjMQ+QUzZB8Ka+D1CmwcyQVCeB8KiYj1C164xQQXZB8KiYj1CF/AxQZeeB8Ka+D1CW8YxQVtaA8Ka+D1C9k08QRVaA8KiYj1CcDY8QQPzA8KiYj1CQDgvQUrzA8Ka+D1Cw08vQcQiCMKiYj1CDkIyQQsjCMKa+D1CklkyQR6KB8Ka+D1Cw1c/QdeJB8KiYj1CQEA/QST+CsKa+D1CsEwyQXsvCsKa+D1C3plGQcb9CsKiYj1C8icyQRwvCsKiYj1CIHVGQXztB8KiYj1C0Y5DQdE8CMKiYj1CxPRDQdrtB8Ka+D1CkLNDQTA9CMKa+D1CghlEQYO8CMKa+D1CY2YvQdkLCcKa+D1CV8wvQSS8CMKiYj1CpEEvQXgLCcKiYj1Cl6cvQSb4AsKiYj1ChLU/QYX4AsKa+D1CQ9o/QS7HA8Ka+D1CF40rQdDGA8KiYj1CV2grQYFvCcKa+D1CaEwwQSJvCcKiYj1CqScwQdqgCMKa+D1ClJlEQXmgCMKiYj1C13REQbr9CsLgTz1CWiMyQRAvCsLgTz1Ch3BGQXHtB8LgTz1COopDQcY8CMLgTz1CK/BDQRi8CMLgTz1CDD0vQW0LCcLgTz1CAKMvQRr4AsLgTz1C7bA/QcTGA8LgTz1CwGMrQRZvCcLgTz1CEiMwQW2gCMLgTz1CP3BEQZQvCsIZHj5CDaNGQXv/CsIqEUBCKNAyQTz+CsIYHj5C4VUyQa0wCsLU1j9CCQ9HQUg9CMIZHj5CsyJEQfTtB8IZHj5CwLxDQWY+CMK43j9CnJBEQRLvB8L43z9C+SpEQfALCcIYHj5ChtUvQZy8CMIYHj5Ck28vQTQNCcINGUBCu1EwQeC9CMJPGkBCGOwvQcX5AsLV7j9CT1VAQZ34AsIZHj5CcuM/QUfHA8IYHj5CRpYrQZTIA8IrKUBCbhYsQdxwCcJ6F0BCa9EwQZlvCcIYHj5CmFUwQfKgCMIZHj5CxaJEQQ6iCMIj3T9CTBBFQeEBC8JS1ENCI7wzQTczCsJS1ENCUAlIQe1ACMJS1ENC9ohFQZjxB8JS1ENCASNFQT/ACMJS1ENC1dUwQZUPCcJS1ENCyDsxQUH8AsJS1ENCtElBQevKA8JS1ENCiPwsQZWkCMJS1ENCBwlGQT1zCcJS1ENC2rsxQUX/CMLiQLk/EisFQSPhB8LKlLE/TwQZQfGvCMIYbLk/bMUEQXgwCMKVabE/82kZQQ7cB8KgsUG/EBAXQS/6CMJ9WTK/0zYDQduqCMISAzK/LdECQWMrCMILCEK/snUXQd/rB8KBO71AYiQdQQEKCcKFJr9AJEsJQau6CMJTMb9Af+UIQTM7CMKyML1ABoodQfgQCcJylQ5BqvgLQdbyB8Lvnw1B59EfQaTBCMLYmg5BBZMLQStCCMKImg1BjDcgQdbrAsIclLM/pS4VQaa6A8Jja7s/xO8AQcLmAsIXsz2/ZjoTQY+1A8JwBC6/Cff9QJL2AsJUu71AuE4ZQWHFA8Imsb9A1w8FQYv9AsLZ3w1BPfwbQVjMA8LC2g5BXL0HQWYACcLQPPY/O5oFQZgxCMKDZe4/HdkZQd8jCsIbVu0/iVccQYzxCsJ6Mbg/fKkHQb4iCsItWrA/X+gbQa3yCsJhLfU/qBgIQeAICcKJ569A+tsIQRE6CMK38a1A2xodQSf7CsKvo69AZloLQVcsCsLera1ASJkfQXotCsLX7LxAcgggQUj8CsKr4r5Aj8kLQcvwCsKNiY8/Yl8HQf0hCsI/soc/Qp4bQXbsCsJNeDS/P7UFQagdCsLoJkS/IPQZQYX+CMLumJA/9OAEQTCvCMIkxJA/UHsEQbcvCMKowYg/1h8ZQWLgB8Ld7Ig/MroYQeW5A8Jvw5I/qKUAQRbrAsIo7Io/ieQUQZouCsLTK8xAnXcgQWj9CsKlIc5AujgMQQDtB8J6esxAi5MdQVM8CMKtb8xAMPkdQSELCcKAZc5ATroJQc27CMJOcM5AqlQJQbP3AsJO+sxA470ZQYLGA8Ih8M5AAX8FQdKlCMK/kw1BO7cgQT4DC8KFcw5BFncOQXE0CsKbeA1B97UiQZ90CcKpjg5BWHgMQcluCcLtV85A/TkKQaltCcL1GL9A0soJQYhsCcL42a9AqVsJQQ5kCcKFBvY/6hkGQe1iCcKaCrk/v6oFQSxiCcKmYpA/pWAFQdddCcIBxjK/gbYDQQmPCMKodEK/Y/UXQV6TCMJgi4g/hp8ZQSCUCMJNM7E/oekZQUCVCMI7L+4/zVgaQbmdCMIm5K1Ai5odQdueCMIhI71AtAkeQfufCMIcYsxA4HgeQRyxCMKCDdhAANQaQcNJCcJsA9NAS74NQdWwCMJsA9NAfLwaQQhKCcKCDdhAz9UNQWQFB8JsA9NAaeEYQV9AB8KCDdhALDoZQRlAB8JsA9NAqSIZQaoFB8KCDdhA7fgYQUzZB8KCDdhA/TsMQVCeB8JsA9NAOOMLQQXZB8JsA9NAeCQMQZeeB8KCDdhAvPoLQVtaA8KCDdhAVYIWQRVaA8JsA9NA0moWQQPzA8JsA9NAoGwJQUrzA8KCDdhAJYQJQcQiCMJsA9NAbnYMQQsjCMKCDdhA840MQR6KB8KCDdhAJYwZQdeJB8JsA9NAoHQZQST+CsKCDdhAEoEMQXsvCsKCDdhAPs4gQcb9CsJsA9NAUlwMQRwvCsJsA9NAgKkgQXztB8JsA9NAMsMdQdE8CMJsA9NAJCkeQdrtB8KCDdhA8OcdQTA9CMKCDdhA400eQYO8CMKCDdhAw5oJQdkLCcKCDdhAtwAKQSS8CMJsA9NABnYJQXgLCcJsA9NA+NsJQSb4AsJsA9NA5ekZQYX4AsKCDdhAow4aQS7HA8KBDdhAd8EFQdDGA8JsA9NAuJwFQYFvCcKCDdhAyIAKQSJvCcJsA9NAClwKQdqgCMKCDdhA9s0eQXmgCMJsA9NAN6keQbr9CsIpYtJAu1cMQRAvCsIpYtJA6KQgQXHtB8IpYtJAmb4dQcY8CMIpYtJAjSQeQRi8CMIpYtJAbXEJQW0LCcIpYtJAYdcJQRr4AsIpYtJATuUZQcTGA8IpYtJAIJgFQRZvCcIpYtJAc1cKQW2gCMIpYtJAoKQeQZQvCsIHUNlAbtcgQXv/CsIbFepAiQQNQTz+CsIHUNlAQYoMQa0wCsJJH+hAakMhQUg9CMIHUNlAElceQfTtB8IHUNlAIPEdQWY+CMIkY+hA/cQeQRLvB8LwbehAWV8eQfALCcIHUNlA5gkKQZy8CMIHUNlA9KMJQTQNCcL2WOpAHIYKQeC9CMLDY+pAdyAKQcX5AsLD7ehAsIkaQZ34AsIHUNlA0xcaQUfHA8IHUNlAp8oFQZTIA8KW4+pAz0oGQdxwCcJkS+pAygULQZlvCcIHUNlA+IkKQfKgCMIHUNlAJtceQQ6iCMKRVehArEQfQW47CsIscgJBCt8cQW/PCsKLX+9A1NoRQcA5CsK08O1AvGccQQPRCsIscgJBrkoSQeEBC8ItOQVBg/ANQTczCsItOQVBsD0iQe1ACMItOQVBVb0fQZjxB8ItOQVBY1cfQT/ACMItOQVBNwoLQZUPCcItOQVBKXALQUH8AsItOQVBFX4bQevKA8ItOQVB6TAHQZWkCMItOQVBaD0gQT1zCcItOQVBO/ALQXfmCsLgwu5AYacRQW9KCsJ7RO1A06YcQTdMCsKwwgJB4iQdQSLoCsKwwgJBrx0SQVK8CMIUae1Ac/AbQVhYCcJ65+5AAvEQQRm+CML91AJBhG4cQQRaCcL91AJBT2cRQThVCcJQgu9Aky0RQYm/CMJ5E+5AfbobQTnBCMKOgwJByTEcQcxWCcKOgwJBbZ0RQYe7CsJgYe9AttERQdglCsKJ8u1An14cQYcnCsIWcwJB69UcQRq9CsIWcwJBkEESQYVq/UFcot3BXXKXQUg6GEKdjcfBRAKSQZayFEI+dcfBPc2XQXnf+kHULOHBvjSRQbrnG0Idy7DBJEaYQTEXFkLnjbzBPPGeQZ4QG0Klf7nBGv6WQbVkFkLkLbTBKhWhQRke/0HRNMLBy7agQTDA/EFQH8vBO4+eQYHR+EEeJMTBiYuZQdKB90Gdu8zBhJeYQQr/9UFoMs3BrfB9QVs+90Hzn8TBvK19QTBX90G0yMzBq/F8QYHR+EEeJMTBpOhrQXNEHkKjV6/Bmy2BQXagHEIHirjBJUB2QeB6HUJ406/BNxh0Qa5LHULZILjBtC6BQT4Q+kE+3eLBW4V9QdOz+kF3luLBynF4QX7pGUKBGMbB73B9QTE3GkKIdsbBATOBQeB6HUI1Mq/BNxh0QXNEHkJhtq7Bmy2BQbrnG0LbKbDBJEaYQbVkFkKhjLPBKhWhQRke/0GPk8HBy7agQYHR+EHegsPBiYuZQVs+90Gv/sPBvK19QYHR+EHegsPBpOhrQXagHEJhuK/BJUB2Qa5LHUIzT6/BtC6BQZ4QG0L+rbDBGv6WQTEXFkI/vLPBPPGeQX7m/0ECVsHBvZWeQR6o+kFP8sLBBp6YQVYl+UEaacPBs/19QXx9+kFo/8LBUtJuQa5LHUJ28K/BtC6BQXagHEKiWbDBJUB2QZ4QG0JBT7HBGv6WQTEXFkKBXbTBPPGeQX7m/0FF98HBvZWeQR6o+kGRk8PBBp6YQVYl+UFfCsTBs/19QXx9+kGsoMPBUtJuQdoOHEJvXrbBFrB3QdalHEKuAbbBby+BQTiBGkKyUrfBaSOWQYPjFUKaKLrB9YOdQQo2AEKXecfBXiqdQd3h+0GM3sjBr/+XQfxp+kEAUsnBATN+Qc+a+0Fg9MjBccNwQW40G0Ka5LbBAth5QRKtG0J+mrbBhzCBQR2qGULT1rfBYNuUQf+VFUI3WLrBB2CbQTyaAEIKPMfBUAmbQXy4/UEBTsjBKRKXQfhQ/EFtvMjB9IJ+QclG/UHtcMjBIq1zQW40G0KOX7TBAth5QRKtG0J0FbTBhzCBQR2qGULJUbXBYNuUQf+VFUIr07fBB2CbQTyaAEL+tsTBUAmbQXy4/UH3yMXBKRKXQfhQ/EFiN8bB9IJ+QclG/UHh68XBIq1zQUg6GMKdjcfBRAKSQYVq/cFcot3BXXKXQZayFMI+dcfBPc2XQXnf+sHULOHBvjSRQTEXFsLnjbzBPPGeQbrnG8Idy7DBJEaYQZ4QG8Klf7nBGv6WQbVkFsLkLbTBKhWhQRke/8HRNMLBy7agQTDA/MFQH8vBO4+eQYHR+MEeJMTBiYuZQdKB98Gdu8zBhJeYQQr/9cFoMs3BrfB9QVs+98Hzn8TBvK19QTBX98G0yMzBq/F8QYHR+MEeJMTBpOhrQXagHMIHirjBJUB2QXNEHsKjV6/Bmy2BQeB6HcJ406/BNxh0Qa5LHcLZILjBtC6BQT4Q+sE+3eLBW4V9QdOz+sF3luLBynF4QX7pGcKBGMbB73B9QTE3GsKIdsbBATOBQeB6HcI1Mq/BNxh0QXNEHsJhtq7Bmy2BQbrnG8LbKbDBJEaYQbVkFsKhjLPBKhWhQRke/8GPk8HBy7agQYHR+MHegsPBiYuZQVs+98Gv/sPBvK19QYHR+MHegsPBpOhrQXagHMJhuK/BJUB2Qa5LHcIzT6/BtC6BQZ4QG8L+rbDBGv6WQTEXFsI/vLPBPPGeQX7m/8ECVsHBvZWeQR6o+sFP8sLBBp6YQVYl+cEaacPBs/19QXx9+sFo/8LBUtJuQa5LHcJ28K/BtC6BQXagHMKiWbDBJUB2QZ4QG8JBT7HBGv6WQTEXFsKBXbTBPPGeQX7m/8FF98HBvZWeQR6o+sGRk8PBBp6YQVYl+cFfCsTBs/19QXx9+sGsoMPBUtJuQdoOHMJvXrbBFrB3QdalHMKuAbbBby+BQTiBGsKyUrfBaSOWQYPjFcKaKLrB9YOdQQo2AMKXecfBXiqdQd3h+8GM3sjBr/+XQfxp+sEAUsnBATN+Qc+a+8Fg9MjBccNwQW40G8Ka5LbBAth5QRKtG8J+mrbBhzCBQR2qGcLT1rfBYNuUQf+VFcI3WLrBB2CbQTyaAMIKPMfBUAmbQXy4/cEBTsjBKRKXQfhQ/MFtvMjB9IJ+QclG/cHtcMjBIq1zQW40G8KOX7TBAth5QRKtG8J0FbTBhzCBQR2qGcLJUbXBYNuUQf+VFcIr07fBB2CbQTyaAML+tsTBUAmbQXy4/cH3yMXBKRKXQfhQ/MFiN8bB9IJ+QclG/cHh68XBIq1zQS6lGELQULXB4SeAQX3NA0J6HsLBD392QV4lAUJEwMPBMGp8QYb3F0J+u7XBNjl9QTfGGUKGQLXBPEdrQS45A0LWGsPBQnZpQUT3AkJUQ8PBPatjQdo3GUL5l7XBxMxwQahXHEKprLPBHfh2QcT4HEKySbPBES+BQevIGkKaobTBwpCWQVv9FUKuk7fBmDqeQaQUAEIPCcXBDuCdQf1E+0GxicbB2U6YQajH+UHR/sbBWRh+QSYM+0Elm8bB4spvQUT3AkISosLBPatjQTfGGUJCn7TBPEdrQahXHEJnC7PBHfh2QcT4HEJxqLLBES+BQevIGkJYALTBwpCWQVv9FUJs8rbBmDqeQaQUAELMZ8TBDuCdQf1E+0Fv6MXB2U6YQajH+UGOXcbBWRh+QSYM+0Hj+cXB4spvQcTCGEKkPrXB0DOBQcwkF0LvPLbBQgORQXOtFELFwLfBQfSUQdDGAUIYXcPBJaaUQSqeAUIQdsPBnkmUQfMCAUJo1cPB1HJ/QX3NA8J6HsLBD392QS6lGMLQULXB4SeAQV4lAcJEwMPBMGp8QYb3F8J+u7XBNjl9QS45A8LWGsPBQnZpQTfGGcKGQLXBPEdrQUT3AsJUQ8PBPatjQdo3GcL5l7XBxMxwQahXHMKprLPBHfh2QcT4HMKySbPBES+BQevIGsKaobTBwpCWQVv9FcKuk7fBmDqeQaQUAMIPCcXBDuCdQf1E+8GxicbB2U6YQajH+cHR/sbBWRh+QSYM+8Elm8bB4spvQUT3AsISosLBPatjQTfGGcJCn7TBPEdrQahXHMJnC7PBHfh2QcT4HMJxqLLBES+BQevIGsJYALTBwpCWQVv9FcJs8rbBmDqeQaQUAMLMZ8TBDuCdQf1E+8Fv6MXB2U6YQajH+cGOXcbBWRh+QSYM+8Hj+cXB4spvQcTCGMKkPrXB0DOBQcwkF8LvPLbBQgORQXOtFMLFwLfBQfSUQdDGAcIYXcPBJaaUQSqeAcIQdsPBnkmUQfMCAcJo1cPB1HJ/QZZUGkLDwrHBscFlQaNTAUIwT8nBditiQVm1AkKGRcDBN+BdQc7pGUK+NLrB1+VpQZQ/AUKqb9vBDqFwQcyDGEKyJ8TBnbN3QVm1AkJBpL/BN+BdQZZUGkKBIbHBscFlQcnmAkLkhb/BezhiQc7pGUIZY7HB1+VpQc7pGUJbBLLB1+VpQcnmAkImJ8DBezhiQb4HA0I/vsXB/x1lQZ+iGUJt27fBnahsQS45A0Lin8XBQnZpQdo3GUIDHbjBxMxwQTWr9UHsrsbBnttrQTMiAUJR0MLBM9NdQeYw9EGCU8/BqeR8QfmA/0H+2cvBch5iQYaN90FEIeXBxmR4Qd1Y/0F2+t3BCpRwQZJY5EEv18jBCJRrQZJY5EFSlMvBjFddQZJY5EFWtdDBLaN8QZJY5EHrKtPBOK5hQZJY5EGGRujBaBV4QZJY5EFZNuXBcyRwQaNTAcIwT8nBditiQZZUGsLDwrHBscFlQVm1AsKGRcDBN+BdQc7pGcK+NLrB1+VpQZQ/AcKqb9vBDqFwQcyDGMKyJ8TBnbN3QVm1AsJBpL/BN+BdQZZUGsKBIbHBscFlQcnmAsLkhb/BezhiQc7pGcIZY7HB1+VpQc7pGcJbBLLB1+VpQcnmAsImJ8DBezhiQb4HA8I/vsXB/x1lQZ+iGcJt27fBnahsQS45A8Lin8XBQnZpQdo3GcIDHbjBxMxwQTWr9cHsrsbBnttrQTMiAcJR0MLBM9NdQeYw9MGCU8/BqeR8QfmA/8H+2cvBch5iQYaN98FEIeXBxmR4Qd1Y/8F2+t3BCpRwQZJY5MEv18jBCJRrQZJY5MFSlMvBjFddQZJY5MFWtdDBLaN8QZJY5MHrKtPBOK5hQZJY5MGGRujBaBV4QZJY5MFZNuXBcyRwQY3TucHQnUTCA66XwY3TucHUIDbCe+ikwY3TucHQnUTCeuikwY3TucHUIDbCA66XwY3TucE60kbCL0WTwY3TucE60kbCTVGpwY3TucFp7DPCTlGpwY3TucFp7DPCL0WTwWzFYsHVHk3CL0WTwQQSacHVHk3CTVGpwWzFYsHVHk3CTVGpwQQSacHVHk3CL0WTwWzFYsHEGELCL0WTwQQSacHEGELCL0WTwQQSacHEGELCTVGpwWzFYsHEGELCTVGpwWzF4sDVHk3C4h6QwTss1sDVHk3ChSV0wWzF4sDVHk3ChSV0wTss1sDVHk3C4h6QwTss1sDEGELChiV0wWzF4sDEGELChiV0wWzF4sDEGELC4h6QwTss1sDEGELC4h6QwZxe78DVHk3CPfJ2wZxe78DVHk3CPYWRwZxe78DEGELCPfJ2wZxe78DEGELCPoWRwc33e8HVHk3CL0WTwc33e8HVHk3CTVGpwc33e8HEGELCL0WTwc33e8HEGELCTVGpwa/hkME60kbCTVGpwa/hkME60kbCL0WTwa/hkMFp7DPCL0WTwa/hkMFp7DPCTlGpwY3TucFvaWrCeuikwY3TucFz7FvCA66XwY3TucFz7FvCeuikwY3TucFvaWrCA66XwY3TucELuFnCL0WTwY3TucELuFnCTVGpwY3TucHcnWzCTVGpwY3TucHcnWzCL0WTwQQSacFva1PCTVGpwWzFYsFva1PCL0WTwWzFYsFva1PCTVGpwQQSacFva1PCL0WTwWzFYsGAcV7CL0WTwQQSacGAcV7CL0WTwQQSacGAcV7CTVGpwWzFYsGAcV7CTVGpwTss1sBva1PChSV0wWzF4sBva1PC4R6QwWzF4sBva1PChSV0wTss1sBva1PC4R6QwTss1sCAcV7ChSV0wWzF4sCAcV7ChSV0wWzF4sCAcV7C4R6QwTss1sCAcV7C4R6QwZxe78Bva1PCPfJ2wZxe78Bva1PCPYWRwZxe78CAcV7CPfJ2wZxe78CAcV7CPYWRwc33e8Fva1PCL0WTwc33e8Fva1PCTVGpwc33e8GAcV7CL0WTwc33e8GAcV7CTVGpwa/hkMELuFnCTVGpwa/hkMELuFnCL0WTwa/hkMHcnWzCL0WTwa/hkMHcnWzCTVGpwa/hkME60kbC4h6Qwc33e8HVHk3C4h6Qwa/hkMFp7DPC4h6Qwc33e8HEGELC4h6Qwc33e8Fva1PC4R6Qwc33e8GAcV7C4R6Qwa/hkMHcnWzC4R6Qwa/hkMELuFnC4R6QwXjHo8E60kbCzsxXwa/hkMHVHk3CzsxXwXjHo8Fp7DPCz8xXwa/hkMHEGELCzsxXwa/hkMFva1PCzsxXwa/hkMGAcV7CzsxXwXjHo8HcnWzCzsxXwXjHo8ELuFnCzsxXweB6ncDVHk3ChSV0weB6ncDVHk3C4h6QweB6ncDEGELChiV0weB6ncDEGELC4h6QweB6ncBva1PC4R6QweB6ncBva1PChSV0weB6ncCAcV7ChSV0weB6ncCAcV7C4R6QwWzF4r/VHk3ChSV0wWzF4r/VHk3C4h6QwQAAAADVHk3ChSV0wQAAAADVHk3C4h6QwQAAAADEGELChiV0wWzF4r/EGELChiV0wWzF4r/EGELC4h6QwQAAAADEGELC4h6QwWzF4r9va1PChSV0wWzF4r9va1PC4R6QwQAAAABva1PC4R6QwQAAAABva1PChSV0wWzF4r+AcV7ChSV0wQAAAACAcV7ChSV0wWzF4r+AcV7C4R6QwQAAAACAcV7C4R6QweB6ncDEGELCOf9wwWzF4r/EGELCOf9wwWzF4r/VHk3COf9wweB6ncDVHk3COf9wweB6ncBva1PCOf9wweB6ncCAcV7COf9wwWzF4r9va1PCOf9wwWzF4r+AcV7COf9wweB6ncDEGELCSg1IwWzF4r/EGELCSg1IwWzF4r/VHk3CSg1IweB6ncDVHk3CSg1IweB6ncBva1PCSg1IweB6ncCAcV7CSg1IwWzF4r9va1PCSg1IwWzF4r+AcV7CSg1IwY3TuUHUIDbCe+ikwY3TuUHQnUTCA66XwY3TuUHQnUTCeuikwY3TuUHUIDbCA66XwY3TuUE60kbCL0WTwY3TuUE60kbCTVGpwY3TuUFp7DPCTlGpwY3TuUFp7DPCL0WTwQQSaUHVHk3CTVGpwWzFYkHVHk3CL0WTwWzFYkHVHk3CTVGpwQQSaUHVHk3CL0WTwWzFYkHEGELCL0WTwQQSaUHEGELCL0WTwQQSaUHEGELCTVGpwWzFYkHEGELCTVGpwTss1kDVHk3ChSV0wWzF4kDVHk3C4h6QwWzF4kDVHk3ChSV0wTss1kDVHk3C4h6QwTss1kDEGELChiV0wWzF4kDEGELChiV0wWzF4kDEGELC4h6QwTss1kDEGELC4h6QwZxe70DVHk3CPfJ2wZxe70DVHk3CPYWRwZxe70DEGELCPfJ2wZxe70DEGELCPoWRwc33e0HVHk3CL0WTwc33e0HVHk3CTVGpwc33e0HEGELCL0WTwc33e0HEGELCTVGpwa/hkEE60kbCTVGpwa/hkEE60kbCL0WTwa/hkEFp7DPCL0WTwa/hkEFp7DPCTlGpwY3TuUFz7FvCA66XwY3TuUFvaWrCeuikwY3TuUFz7FvCeuikwY3TuUFvaWrCA66XwY3TuUELuFnCL0WTwY3TuUELuFnCTVGpwY3TuUHcnWzCTVGpwY3TuUHcnWzCL0WTwWzFYkFva1PCL0WTwQQSaUFva1PCTVGpwWzFYkFva1PCTVGpwQQSaUFva1PCL0WTwWzFYkGAcV7CL0WTwQQSaUGAcV7CL0WTwQQSaUGAcV7CTVGpwWzFYkGAcV7CTVGpwWzF4kBva1PC4R6QwTss1kBva1PChSV0wWzF4kBva1PChSV0wTss1kBva1PC4R6QwTss1kCAcV7ChSV0wWzF4kCAcV7ChSV0wWzF4kCAcV7C4R6QwTss1kCAcV7C4R6QwZxe70Bva1PCPfJ2wZxe70Bva1PCPYWRwZxe70CAcV7CPfJ2wZxe70CAcV7CPYWRwc33e0Fva1PCL0WTwc33e0Fva1PCTVGpwc33e0GAcV7CL0WTwc33e0GAcV7CTVGpwa/hkEELuFnCTVGpwa/hkEELuFnCL0WTwa/hkEHcnWzCL0WTwa/hkEHcnWzCTVGpwa/hkEE60kbC4h6Qwc33e0HVHk3C4h6Qwa/hkEFp7DPC4h6Qwc33e0HEGELC4h6Qwc33e0Fva1PC4R6Qwc33e0GAcV7C4R6Qwa/hkEHcnWzC4R6Qwa/hkEELuFnC4R6QwXjHo0E60kbCzsxXwa/hkEHVHk3CzsxXwXjHo0Fp7DPCz8xXwa/hkEHEGELCzsxXwa/hkEFva1PCzsxXwa/hkEGAcV7CzsxXwXjHo0HcnWzCzsxXwXjHo0ELuFnCzsxXweB6nUDVHk3ChSV0weB6nUDVHk3C4h6QweB6nUDEGELChiV0weB6nUDEGELC4h6QweB6nUBva1PC4R6QweB6nUBva1PChSV0weB6nUCAcV7ChSV0weB6nUCAcV7C4R6QwWzF4j/VHk3ChSV0wWzF4j/VHk3C4h6QwWzF4j/EGELChiV0wWzF4j/EGELC4h6QwWzF4j9va1PChSV0wWzF4j9va1PC4R6QwWzF4j+AcV7ChSV0wWzF4j+AcV7C4R6QweB6nUDEGELCOf9wwWzF4j/EGELCOf9wwWzF4j/VHk3COf9wweB6nUDVHk3COf9wweB6nUBva1PCOf9wweB6nUCAcV7COf9wwWzF4j9va1PCOf9wwWzF4j+AcV7COf9wweB6nUDEGELCSg1IwWzF4j/EGELCSg1IwWzF4j/VHk3CSg1IweB6nUDVHk3CSg1IweB6nUBva1PCSg1IweB6nUCAcV7CSg1IwWzF4j9va1PCSg1IwWzF4j+AcV7CSg1IwY3TucGs4WpCBq6XwY3TucGoXnlCfuikwY3TucGs4WpCfuikwY3TucGoXnlCB66XwTRtDcLkA0FCXZegQDRtDcIbyEpChVawQDRtDcJbckpC/9yqQDRtDcKH1UBCUpGlQDRtDcLghCxC/mQsQDRtDcIdJCJCrb93vzRtDcLSfiFCUJdjvzRtDcLH9yxCWhQkQDRtDcK48xhCDHOMwDRtDcKKXBhCQA6KwKGjDMKC2RBCcSUQwaGjDMJ4VBBC31sPwVR9CcJz0wpC8VtLwVR9CcJ+WApCoDNLwTRtDcJiZEdCf/2EQDRtDcI20ENC0NhKQDRtDcJfjjRCYHaPPzRtDcJlwihCRC/jvzRtDcKkziBCV4OmwKGjDMJoehpC7jkTwVR9CcJfNhRCGs5QwTRtDcI/PzZC4w+BQDRtDcKodjVCesaDQDRtDcJQyjtCltoGQCUX8sEsqylCxgaLQRdv/8FgxztCswGDQZ8c/8EsqylCKuuAQZpp8sFgxztCk+qMQXliBcJgxztCYTtqQT45BcIsqylCEoBlQUahBMLbAy5CpEUxQZVlBcJ7oTVCsyYiQZVlBcLrJDBCgy4gQUahBMKvbjdCvTo0QemF8sFjGUpCbP+NQcaR/8Hm+ExC9FSEQTh3BcJBCFBC0mZtQfbNCcJxUDhCj64XQXBUCMKOdFBCeLA9QZceCsI6Hk9C23keQXBUCMJgxztCpnI6QcncBsJLvTZCfhRRQcncBsJq01BC7qRVQcncBsL+Ey5CaaZPQe/dA8LYTjBCLkE/Qe/dA8LXzzRCi/8/QQhXBsJTbPZB/xYDwVR9CcJ7Vg1CPoVIwAhXBsLVhARCp8ICwcGzCMLsFQNCFoI9wHoQC8LEeBZCI1X6PnoQC8L6Gw5CfwFJQPbNCcJcwy1C++QTQedGCsL4ESNCKX2bQOdGCsKg8y9Cw9zuQNY+DMIHGD9CyT7uQNY+DMKmH01CRqn3QE97DMKR6zFCoFG5QE97DMJsyydCC2NrQBrgDMLL+xtCftlMvocWDMKD2RJC4FBuwJceCsKnbApCQg8JwQhXCcJTbPZBEtRAwVR9CcJfzwdCfxQ3wVR9CcJTbPZBtq1DwQhXCcI5PAZC3Do0wYCXCMLj1wJCaX9WwX68B8LtxwhCxNNmwQK4B8KeNghC5g9nwbatB8JTbPZBE/1hwfRsB8KexAFCLp5owVh/BsJTbPZBBxcGwfiYB8J9nghCta9owRSXB8L3DghCUMVowbL0B8I1Vw5CcWtiwV1IB8KfsAFCADBqwbL0B8L+uw5CsQxjwVR9CcIpmxRCGs5QwaGjDMIJyxpC7jkTwTRtDcJFHyFCmySnwDRtDcLf/ihCT7TlvzRtDcKxtjRCN2KFPzRtDcLJBjxCBhMDQDRtDcJf5ENCuc5FQDRtDcJcpkdC++aDQDRtDcJN60pCQn6rQDRtDcIOQUtCyPewQNY+DMJwhE1CRqn3QJceCsIFg09C23keQXBUCMJY2VBCeLA9QcncBsI0OFFC7qRVQTh3BcLjWFBC0mZtQcaR/8GwXU1C9FSEQemF8sEufkpCbP+NQfbNCcKOB95BrroJQXBUCMIsqylCrcI0QXBUCMKOB95BxzooQfbNCcK0cVFBqpf8QHBUCMK0cVFBg08cQcncBsJjBt5BRG1AQcncBsK0cVFBAnQzQYMUBcJjBt5BUKZYQYMUBcK0cVFBgZhKQfiN/sFjBt5BzNB0QZPF/cG0cVFBbYFlQRWM8cFjBt5BZHSEQfS38MG0cVFBA7R4QXoQC8JneMJBzsgzQHoQC8KzcVFBHZAeQIoYCcJZcrdBoxguwFR9CcKzcVFBNa8ewAhXBsKXkq9BhxMHwQhXBsKycVFBDxALwVh/BsKXkq9BgwcKwVh/BsKycVFBAfgNwQhXCcKXkq9BtdhDwQhXCcKycVFBV91GwVR9CcKXkq9B5qZGwVR9CcKycVFBFaBJwbatB8KXkq9Bj3xkwbatB8KycVFBC/xmwZsgB8KXkq9B15FswZsgB8JTbPZBVjNqwZsgB8KycVFBXPBuwUv4BsKXkq9Bt/ltwUv4BsJTbPZB8aBrwUv4BsKycVFBflJwwWqq/cFk7DJBP25jQZid8MHPtzRBdLB2QYMUBcLqnS9BjWVIQcncBsIPtyxB0igxQXBUCMJxpChB8t0ZQfbNCcIlsCRBV4f3QAhXBsKdVTNB6OELwVh/BsLiaDRB+b8OwQhXCcKSAS5BVZhHwVR9CcJ/Ji9BWlJKwbatB8KEPjZB13JnwZsgB8L47DpBoU1vwUv4BsLTZT5BoqBwwXoQC8LRzh9B2zsVQFR9CcJ/dyNBerYlwFR9CcIDMy1Bf1xKwQhXCcI9DyxBm6JHwVh/BsINdzJBXs0OwQhXBsLCljFBE+4LwVR9CcJrgiFBEwMmwHoQC8I/6R1Bl+AUQPbNCcJEqyJB3Uz3QHBUCMI3eyZB0bwZQcncBsKcXSpBQwMxQYMUBcKKSC1Btj5IQZao/cEK3jBBdkpjQeyb8MGN5TJBxY92QbatB8LrSzRBWHtnwZsgB8LqMDlB0FRvwUv4BsJEcjxBpahwwcYI78GN5TJBxY92QXAV/MEK3jBBdkpjQe9KBMKKSC1Btj5IQXIK78HPtzRBdLB2Qc4k78G0cVFBA7R4Qe/478FjBt5BZHSEQQGE8MEsqylCxgaLQXTW8MFgxztCk+qMQcPy8MFjGUpCbP+NQcPy8MEufkpCbP+NQaH+/cGwXU1C9FSEQaStBMLjWFBC0mZtQTYTBsI0OFFC7qRVQd2KB8JY2VBCeLA9QQNVCcIFg09C23keQUR1C8JwhE1CRqn3QKGjDMIOQUtCyPewQKGjDMJN60pCQn6rQKGjDMJf5ENCuc5FQKGjDMJcpkdC/OaDQKGjDMLJBjxCBhMDQKGjDMKxtjRCN2KFP6GjDMLf/ihCT7Tlv6GjDMJFHyFCmySnwA7aC8IJyxpC7jkTwcGzCMIpmxRCGs5QwR8rB8L+uw5CsQxjwWXPBsJ9nghCta9owYLNBsL3DghCUMVowbguBsJTbPZB8aBrwct+BsKfsAFCADBqwbguBsKXkq9Bt/ltwbguBsKycVFBflJwwbguBsLTZT5BoqBwwbguBsJEcjxBpahwwQhXBsLqMDlB0FRvwSLkBsLrSzRBWHtnwcGzCMIDMy1Bf1xKwXWNCMI9DyxBm6JHwca1BcINdzJBXs0OwXWNBcLCljFBE+4LwcGzCMJrgiFBEwMmwOdGCsI/6R1Bl+AUQGMECcJEqyJB3Uz3QN2KB8I3eyZB0bwZQTYTBsKcXSpBQwMxQeGV5cGN5TJBxY92QYyi8sEK3jBBdkpjQfwi/8GKSC1Btj5IQY2X5cHPtzRBdLB2QcVZAcKcXSpBQwMxQemx5cG0cVFBA7R4QQyG5sFjBt5BZHSEQRwR58EsqylCxgaLQY9j58FgxztCk+qMQeB/58FjGUpCbP+NQeB/58EufkpCbP+NQb2L9MGwXU1C9FSEQWbo/8HjWFBC0mZtQcVZAcI0OFFC7qRVQWvRAsJY2VBCeLA9QZObBMIFg09C23keQdK7BsJwhE1CRqn3QC7qB8IOQUtCyPewQC7qB8JN60pCQn6rQC7qB8Jf5ENCuc5FQC7qB8JcpkdC/OaDQC7qB8LJBjxCBhMDQC7qB8KxtjRCN2KFPy7qB8Lf/ihCT7Tlvy7qB8JFHyFCmySnwJsgB8IJyxpC7jkTwU/6A8IpmxRCGs5Qwa1xAsL+uw5CsQxjwfMVAsJ9nghCta9owRAUAsL3DghCUMVowUZ1AcJTbPZB8aBrwVnFAcKfsAFCADBqwUZ1AcKXkq9Bt/ltwUZ1AcKycVFBflJwwUZ1AcLTZT5BoqBwwUZ1AcJEcjxBpahwwZadAcLqMDlB0FRvwbAqAsLrSzRBWHtnwU/6A8IDMy1Bf1xKwQLUA8I9DyxBm6JHwVP8AMINdzJBXs0OwQTUAMLCljFBE+4LwU/6A8JrgiFBEwMmwHWNBcI/6R1Bl+AUQPBKBMJEqyJB3Uz3QGvRAsI3eyZB0bwZQYqVCcIZLjhCkTQYQRUlCMK+jztCDCM6QXG2BsKepDZC2DlQQXG2BsKJMC5CjdROQRUlCMLN4ilCB5Y0QYqVCcLX4S1CQoIUQWBBNgAAAAqTyT4AAAAAAAAAAAAAAAANk8kyDZPJPgAAAAANk8m+DZPJMgAAAAAyHwNBY8IDvyBBjP4AACgSAAABAAIABwAAAAMAAQAHAAQAAwAAAAcABAAFAAMABwAGAAUABAAHAAYABwAFAAcACAAHAAYABwAIAAkABwAHAAoACQAIAAcACgALAAkABwAMAAsACgAHAAwADQALAAcADgANAAwABwAOAA8ADQAHABAADwAOAAcAEAARAA8ABwASABEAEAAHABIAEwARAAcAFAATABIABwAUABUAEwAHABIAFgAUAAcAEgAXABYABwAQABcAEgAHABAAGAAXAAcADgAYABAABwAOABkAGAAHAAwAGQAOAAcADAAaABkABwAKABoADAAHAAoAGwAaAAcACAAbAAoABwAIABwAGwAHAAYAHAAIAAcABgAdABwABwAEAB0ABgAHAAQAHgAdAAcAAAAeAAQABwAAAB8AHgAHAAIAHwAAAAcAAgAgAB8ABwAXACEAFgAHABcAIgAhAAcAGAAiABcABwAYACMAIgAHABkAIwAYAAcAGQAkACMABwAaACQAGQAHABoAJQAkAAcAGwAlABoABwAbACYAJQAHABwAJgAbAAcAHAAnACYABwAdACcAHAAHAB0AKAAnAAcAHgAoAB0ABwAeACkAKAAHAB8AKQAeAAcAHwAqACkABwAgACoAHwAHACAAKwAqAAcAIgAsACEABwAiAC0ALAAHACMALQAiAAcAIwAuAC0ABwAkAC4AIwAHACQALwAuAAcAJQAvACQABwAlADAALwAHACYAMAAlAAcAJgAxADAABwAnADEAJgAHACcAMgAxAAcAKAAyACcABwAoADMAMgAHACkAMwAoAAcAKQA0ADMABwAqADQAKQAHACoANQA0AAcAKwA1ACoABwArADYANQAHAC0ANwAsAAcALQA4ADcABwAuADgALQAHAC4AOQA4AAcALwA5AC4ABwAvADoAOQAHADAAOgAvAAcAMAA7ADoABwAxADsAMAAHADEAPAA7AAcAMgA8ADEABwAyAD0APAAHADMAPQAyAAcAMwA+AD0ABwA0AD4AMwAHADQAPwA+AAcANQA/ADQABwA1AEAAPwAHADYAQAA1AAcANgBBAEAABwBCAAIAAQAHAEIAQwACAAcARABDAEIABwBEAEUAQwAHAEYARQBHAAcARgBDAEUABwACAEYAIAAHAAIAQwBGAAcASABGAEcABwBIAEkARgAHAEkAIABGAAcASQArACAABwBKAEgASwAHAEoASQBIAAcAKwBKADYABwArAEkASgAHAEwASwBNAAcATABKAEsABwA2AEwAQQAHADYASgBMAAcATgBPAFAABwBOAFEATwAHAFEAUgBPAAcAUQBTAFIABwBTAFQAUgAHAFMAVQBUAAcAVQBWAFQABwBVAFcAVgAHAFcAWABWAAcAVwBZAFgABwBZAFoAWAAHAFkAWwBaAAcAWwBcAFoABwBbAF0AXAAHAF0AXgBcAAcAXQBfAF4ABwBfAGAAXgAHAF8AYQBgAAcAYQBiAGAABwBhAGMAYgAHAGQAYABiAAcAZABlAGAABwBlAF4AYAAHAGUAZgBeAAcAZgBcAF4ABwBmAGcAXAAHAGcAWgBcAAcAZwBoAFoABwBoAFgAWgAHAGgAaQBYAAcAaQBWAFgABwBpAGoAVgAHAGoAVABWAAcAagBrAFQABwBrAFIAVAAHAGsAbABSAAcAbABPAFIABwBsAG0ATwAHAG0AUABPAAcAbQBuAFAABwBvAGUAZAAHAG8AcABlAAcAcABmAGUABwBwAHEAZgAHAHEAZwBmAAcAcQByAGcABwByAGgAZwAHAHIAcwBoAAcAcwBpAGgABwBzAHQAaQAHAHQAagBpAAcAdAB1AGoABwB1AGsAagAHAHUAdgBrAAcAdgBsAGsABwB2AHcAbAAHAHcAbQBsAAcAdwB4AG0ABwB4AG4AbQAHAHgAeQBuAAcAegBwAG8ABwB6AHsAcAAHAHsAcQBwAAcAewB8AHEABwB8AHIAcQAHAHwAfQByAAcAfQBzAHIABwB9AH4AcwAHAH4AdABzAAcAfgB/AHQABwB/AHUAdAAHAH8AgAB1AAcAgAB2AHUABwCAAIEAdgAHAIEAdwB2AAcAgQCCAHcABwCCAHgAdwAHAIIAgwB4AAcAgwB5AHgABwCDAIQAeQAHAIUAewB6AAcAhQCGAHsABwCGAHwAewAHAIYAhwB8AAcAhwB9AHwABwCHAIgAfQAHAIgAfgB9AAcAiACJAH4ABwCJAH8AfgAHAIkAigB/AAcAigCAAH8ABwCKAIsAgAAHAIsAgQCAAAcAiwCMAIEABwCMAIIAgQAHAIwAjQCCAAcAjQCDAIIABwCNAI4AgwAHAI4AhACDAAcAjgCPAIQABwBQAJAATgAHAFAAkQCQAAcAkQCSAJAABwCRAJMAkgAHAJMAlACVAAcAkwCRAJQABwCUAFAAbgAHAJQAkQBQAAcAlACWAJUABwCUAJcAlgAHAG4AlwCUAAcAbgB5AJcABwCWAJgAmQAHAJYAlwCYAAcAmAB5AIQABwCYAJcAeQAHAJkAmgCbAAcAmQCYAJoABwCaAIQAjwAHAJoAmACEAAcAnACdAJ4ABwCcAJ8AnQAHAKAAoQCiAAcAoACjAKEABwCjAKQAoQAHAKMApQCkAAcApQCmAKQABwClAKcApgAHAKcAqACmAAcApwCpAKgABwCqAKsArAAHAKoArQCrAAcArQCuAKsABwCtAK8ArgAHALAAnwCcAAcAsACxAJ8ABwCyAKMAoAAHALIAswCjAAcAswClAKMABwCzALQApQAHALQApwClAAcAtAC1AKcABwC1AKkApwAHALUAtgCpAAcAtwCtAKoABwC3ALgArQAHALgArwCtAAcAuAC5AK8ABwC6ALAAnAAHALoAuwCwAAcAvAC7ALoABwC8AL0AuwAHAJwAvAC6AAcAnACeALwABwC4AL4AuQAHALgAvwC+AAcAtwC/ALgABwC3AMAAvwAHALYAwQDCAAcAtgC1AMEABwC1AMMAwQAHALUAtADDAAcAtADEAMMABwC0ALMAxAAHALMAxQDEAAcAswCyAMUABwCxAMYAxwAHALEAsADGAAcAsADIAMYABwCwALsAyAAHALsAyQDIAAcAuwC9AMkABwDKALIAywAHAMoAxQCyAAcAywCgAMwABwDLALIAoAAHAMwAogDNAAcAzACgAKIABwDLAM4AygAHAMsAzwDOAAcAzwDHAM4ABwDPALEAxwAHAMwAzwDLAAcAzADQAM8ABwDQALEAzwAHANAAnwCxAAcAzQDQAMwABwDNANEA0AAHANEAnwDQAAcA0QCdAJ8ABwDSANMA1AAHANIA1QDTAAcA1ADWANcABwDUANMA1gAHANgA1QDSAAcA2ADZANUABwDaANsA3AAHANoA3QDbAAcA3gDdANoABwDeAN8A3QAHANcA3wDeAAcA1wDWAN8ABwDgANkA2AAHAOAA4QDZAAcA4gDhAOAABwDiAOMA4QAHAOQA4wDiAAcA5ADlAOMABwDmAOUA5AAHAOYA5wDlAAcA6ADpAOoABwDoAOsA6QAHAOsA7ADtAAcA6wDoAOwABwDqAO4A7wAHAOoA6QDuAAcA7wDnAOYABwDvAO4A5wAHALcA8ADAAAcAtwDxAPAABwDxAMIA8AAHAPEAtgDCAAcAqgDxALcABwCqAPIA8QAHAPIAtgDxAAcA8gCpALYABwCsAPIAqgAHAKwA8wDyAAcA8wCpAPIABwDzAKgAqQAHAPQA4AD1AAcA9ADiAOAABwD2AOIA9AAHAPYA5ADiAAcA9wDkAPYABwD3AOYA5AAHAPgA5gD3AAcA+ADvAOYABwD5AO8A+AAHAPkA6gDvAAcA+gDqAPkABwD6AOgA6gAHAPsA6AD6AAcA+wDsAOgABwD1ANgA/AAHAPUA4ADYAAcA/ADSAP0ABwD8ANgA0gAHAP0A1AD+AAcA/QDSANQABwD+ANcA/wAHAP4A1ADXAAcA/wDeAAABBwD/ANcA3gAHAAAB2gABAQcAAAHeANoABwABAdwAAgEHAAEB2gDcAAcAAwG5AL4ABwADAQQBuQAHAAUB7QDsAAcABQEGAe0ABwAHAewA+wAHAAcBBQHsAAcACAH7APoABwAIAQcB+wAHAAkB+gD5AAcACQEIAfoABwAKAfkA+AAHAAoBCQH5AAcACwH4APcABwALAQoB+AAHAAwB9wD2AAcADAELAfcABwANAfYA9AAHAA0BDAH2AAcADgH0APUABwAOAQ0B9AAHAA8B9QD8AAcADwEOAfUABwAQAfwA/QAHABABDwH8AAcAEQH9AP4ABwARARAB/QAHABIB/gD/AAcAEgERAf4ABwATAf8AAAEHABMBEgH/AAcAFAEAAQEBBwAUARMBAAEHABUBAQECAQcAFQEUAQEBBwAWAQIB3AAHABYBFQECAQcAFwHcANsABwAXARYB3AAHABgByQC9AAcAGAEZAckABwAaAb0AvAAHABoBGAG9AAcAGwG8AJ4ABwAbARoBvAAHABwBngCdAAcAHAEbAZ4ABwAdAZ0A0QAHAB0BHAGdAAcAHgHRAM0ABwAeAR0B0QAHAB8BzQCiAAcAHwEeAc0ABwAgAaIAoQAHACABHwGiAAcAIQGhAKQABwAhASABoQAHACIBpACmAAcAIgEhAaQABwAjAaYAqAAHACMBIgGmAAcAJAGoAPMABwAkASMBqAAHACUB8wCsAAcAJQEkAfMABwAmAawAqwAHACYBJQGsAAcAJwGrAK4ABwAnASYBqwAHACgBrgCvAAcAKAEnAa4ABwAEAa8AuQAHAAQBKAGvAAcAKQEEAQMBBwApASoBBAEHACsBBgEFAQcAKwEsAQYBBwAqASgBBAEHACoBLQEoAQcALgEFAQcBBwAuASsBBQEHAC8BBwEIAQcALwEuAQcBBwAwAQgBCQEHADABLwEIAQcAMQEJAQoBBwAxATABCQEHADIBCgELAQcAMgExAQoBBwAzAQsBDAEHADMBMgELAQcANAEMAQ0BBwA0ATMBDAEHADUBDQEOAQcANQE0AQ0BBwA2AQ4BDwEHADYBNQEOAQcANwEPARABBwA3ATYBDwEHADgBEAERAQcAOAE3ARABBwA5AREBEgEHADkBOAERAQcAOgESARMBBwA6ATkBEgEHADsBEwEUAQcAOwE6ARMBBwA8ARQBFQEHADwBOwEUAQcAPQEVARYBBwA9ATwBFQEHAD4BFgEXAQcAPgE9ARYBBwA/ARkBGAEHAD8BQAEZAQcAQQEYARoBBwBBAT8BGAEHAEIBGgEbAQcAQgFBARoBBwBDARsBHAEHAEMBQgEbAQcARAEcAR0BBwBEAUMBHAEHAEUBHQEeAQcARQFEAR0BBwBGAR4BHwEHAEYBRQEeAQcARwEfASABBwBHAUYBHwEHAEgBIAEhAQcASAFHASABBwBJASEBIgEHAEkBSAEhAQcASgEiASMBBwBKAUkBIgEHAEsBIwEkAQcASwFKASMBBwBMASQBJQEHAEwBSwEkAQcATQElASYBBwBNAUwBJQEHAE4BJgEnAQcATgFNASYBBwAtAScBKAEHAC0BTgEnAQcATwFQAVEBBwBPAVIBUAEHAFMBVAFVAQcAUwFWAVQBBwBXAVUBWAEHAFcBUwFVAQcAWQFYAVoBBwBZAVcBWAEHAFsBWgFcAQcAWwFZAVoBBwBdAVABXgEHAF0BUQFQAQcAXwFTAWABBwBfAVYBUwEHAGABVwFhAQcAYAFTAVcBBwBhAVkBYgEHAGEBVwFZAQcAYgFbAWMBBwBiAVkBWwEHAGQBUgFlAQcAZAFQAVIBBwBkAVQBVgEHAGQBZQFUAQcAZgFWAV8BBwBmAWQBVgEHAF4BZAFmAQcAXgFQAWQBBwBnAWgBaQEHAGcBagFoAQcAawFpAWwBBwBrAWcBaQEHAG0BbgFvAQcAbQFwAW4BBwBxAWcBcgEHAHEBagFnAQcAcgFrAXMBBwByAWcBawEHAHQBdQF2AQcAdAF3AXUBBwBzAXgBeQEHAHMBawF4AQcAeQF3AXQBBwB5AXgBdwEHAGwBeAFrAQcAbAF6AXgBBwB7AXABfAEHAHsBbgFwAQcAfQF+AX8BBwB9AYABfgEHAIEBgAF9AQcAgQGCAYABBwCDAYEBhAEHAIMBggGBAQcAdQGEAYUBBwB1AYMBhAEHAHYBhgGHAQcAdgF1AYYBBwCHAVIBTwEHAIcBhgFSAQcAhQGGAXUBBwCFAYgBhgEHAIgBUgGGAQcAiAFlAVIBBwCEAYgBhQEHAIQBiQGIAQcAiQFlAYgBBwCJAVQBZQEHAIEBiQGEAQcAgQGKAYkBBwCKAVQBiQEHAIoBVQFUAQcAfQGKAYEBBwB9AYsBigEHAIsBVQGKAQcAiwFYAVUBBwB/AYsBfQEHAH8BjAGLAQcAjAFYAYsBBwCMAVoBWAEHAI0BjgGPAQcAjQGQAY4BBwBaAZABjQEHAFoBjAGQAQcAWgGRAVwBBwBaAY0BkQEHAJIBXAGTAQcAkgFbAVwBBwCRAY8BlAEHAJEBjQGPAQcAkQGTAVwBBwCRAZUBkwEHAIwBjgGQAQcAjAGWAY4BBwB+AYwBfwEHAH4BlgGMAQcAlwGTAZgBBwCXAZIBkwEHAJIBYwFbAQcAkgGZAWMBBwCaAZMBlQEHAJoBmAGTAQcAmwFjAZkBBwCbAZwBYwEHAJwBYgFjAQcAnAGdAWIBBwCdAWEBYgEHAJ0BngFhAQcAngFgAWEBBwCeAZ8BYAEHAJ8BXwFgAQcAnwGgAV8BBwCgAWYBXwEHAKABoQFmAQcAoQFeAWYBBwChAaIBXgEHAKIBXQFeAQcAogGjAV0BBwCkAU8BUQEHAKQBpQFPAQcApQGHAU8BBwClAaYBhwEHAKYBdgGHAQcApgGnAXYBBwCnAXQBdgEHAKcBqAF0AQcAqAF5AXQBBwCoAakBeQEHAKkBcwF5AQcAqQGqAXMBBwCqAXIBcwEHAKoBqwFyAQcAqwFxAXIBBwCrAawBcQEHAJIBmwGZAQcAkgGXAZsBBwCtAa4BrwEHAK0BsAGuAQcAsQGyAYMBBwCxAbMBsgEHALMBtAGyAQcAswG1AbQBBwB6AbMBsQEHAHoBtgGzAQcAtgG1AbMBBwC2AbcBtQEHAGwBtgF6AQcAbAG4AbYBBwC4AbcBtgEHALgBuQG3AQcAaQG4AWwBBwBpAboBuAEHALoBuQG4AQcAugG7AbkBBwBoAboBaQEHAGgBvAG6AQcAvAG7AboBBwC8Ab0BuwEHAIMBvgGCAQcAgwGyAb4BBwCyAb8BvgEHALIBtAG/AQcAggHAAYABBwCCAb4BwAEHAL4BwQHAAQcAvgG/AcEBBwCAAcIBfgEHAIABwAHCAQcAwAHDAcIBBwDAAcEBwwEHAH4BxAGWAQcAfgHCAcQBBwDCAcUBxAEHAMIBwwHFAQcAlgHGAY4BBwCWAcQBxgEHAMQBxwHGAQcAxAHFAccBBwCOAcgBjwEHAI4BxgHIAQcAxgHJAcgBBwDGAccByQEHAI8BygGUAQcAjwHIAcoBBwDIAcsBygEHAMgByQHLAQcAlAHMAc0BBwCUAcoBzAEHAMoBzgHMAQcAygHLAc4BBwDNAc8B0AEHAM0BzAHPAQcAzAHRAc8BBwDMAc4B0QEHANIBvQHTAQcA0gG7Ab0BBwDSAbkBuwEHANIB1AG5AQcA1AG3AbkBBwDUAdUBtwEHANUBtQG3AQcA1QHWAbUBBwDWAbQBtQEHANYB1wG0AQcA2AHFAcMBBwDYAdkBxQEHANkBxwHFAQcA2QHaAccBBwDaAckBxwEHANoB2wHJAQcA2wHLAckBBwDbAdwBywEHANwBzgHLAQcA3AHdAc4BBwDdAdEBzgEHAN0B3gHRAQcA1wG/AbQBBwDXAd8BvwEHAN8BwQG/AQcA3wHgAcEBBwDgAcMBwQEHAOAB2AHDAQcA2gHhAdsBBwDaAeIB4QEHANkB4gHaAQcA2QHjAeIBBwDYAeMB2QEHANgB5AHjAQcA4AHkAdgBBwDgAeUB5AEHAN8B5QHgAQcA3wHmAeUBBwDXAeYB3wEHANcB5wHmAQcA1gHnAdcBBwDWAegB5wEHANUB6AHWAQcA1QHpAegBBwDUAekB1QEHANQB6gHpAQcA0gHqAdQBBwDSAesB6gEHANMB6wHSAQcA0wHsAesBBwDbAe0B3AEHANsB4QHtAQcA3AHuAd0BBwDcAe0B7gEHAN0B7wHeAQcA3QHuAe8BBwDwAesB7AEHAPAB8QHrAQcA8QHqAesBBwDxAfIB6gEHAPMB7AHTAQcA8wHwAewBBwD0AdMBvQEHAPQB8wHTAQcA9QG9AbwBBwD1AfQBvQEHAPYBvAFoAQcA9gH1AbwBBwD3AWgBagEHAPcB9gFoAQcA+AFqAXEBBwD4AfcBagEHAPkBcQGsAQcA+QH4AXEBBwD6AawBqwEHAPoB+QGsAQcA+wGrAaoBBwD7AfoBqwEHAPwBqgGpAQcA/AH7AaoBBwD9AakBqAEHAP0B/AGpAQcA/gGoAacBBwD+Af0BqAEHAP8BpwGmAQcA/wH+AacBBwAAAqYBpQEHAAAC/wGmAQcAAQKlAaQBBwABAgACpQEHAAICowGiAQcAAgIDAqMBBwAEAqIBoQEHAAQCAgKiAQcABQKhAaABBwAFAgQCoQEHAAYCoAGfAQcABgIFAqABBwAHAp8BngEHAAcCBgKfAQcACAKeAZ0BBwAIAgcCngEHAAkCnQGcAQcACQIIAp0BBwAKApwBmwEHAAoCCQKcAQcACwKbAZcBBwALAgoCmwEHAAwClwGYAQcADAILApcBBwANApoB0AEHAA0CDgKaAQcADwLQAc8BBwAPAg0C0AEHABACzwHRAQcAEAIPAs8BBwARAtEB3gEHABECEALRAQcAEgLeAe8BBwASAhEC3gEHABMC7wHuAQcAEwISAu8BBwAUAu4B7QEHABQCEwLuAQcAFQLtAeEBBwAVAhQC7QEHABYC4QHiAQcAFgIVAuEBBwAXAuIB4wEHABcCFgLiAQcAGALjAeQBBwAYAhcC4wEHABkC5AHlAQcAGQIYAuQBBwAaAuUB5gEHABoCGQLlAQcAGwLmAecBBwAbAhoC5gEHABwC5wHoAQcAHAIbAucBBwAdAugB6QEHAB0CHALoAQcA8gHpAeoBBwDyAR0C6QEHAB4C8QHwAQcAHgIfAvEBBwAfAvIB8QEHAB8CIALyAQcAIQLwAfMBBwAhAh4C8AEHACACHQLyAQcAIAIiAh0CBwAjAvMB9AEHACMCIQLzAQcAJAL0AfUBBwAkAiMC9AEHACUC9QH2AQcAJQIkAvUBBwAmAvYB9wEHACYCJQL2AQcAJwL3AfgBBwAnAiYC9wEHACgC+AH5AQcAKAInAvgBBwApAvkB+gEHACkCKAL5AQcAKgL6AfsBBwAqAikC+gEHACsC+wH8AQcAKwIqAvsBBwAsAvwB/QEHACwCKwL8AQcALQL9Af4BBwAtAiwC/QEHAC4C/gH/AQcALgItAv4BBwAvAv8BAAIHAC8CLgL/AQcAMAIAAgECBwAwAi8CAAIHADECAwICAgcAMQIyAgMCBwAzAgICBAIHADMCMQICAgcANAIEAgUCBwA0AjMCBAIHADUCBQIGAgcANQI0AgUCBwA2AgYCBwIHADYCNQIGAgcANwIHAggCBwA3AjYCBwIHADgCCAIJAgcAOAI3AggCBwA5AgkCCgIHADkCOAIJAgcAOgIKAgsCBwA6AjkCCgIHADsCCwIMAgcAOwI6AgsCBwA8Ag4CDQIHADwCPQIOAgcAPgINAg8CBwA+AjwCDQIHAD8CDwIQAgcAPwI+Ag8CBwBAAhACEQIHAEACPwIQAgcAQQIRAhICBwBBAkACEQIHAEICEgITAgcAQgJBAhICBwBDAhMCFAIHAEMCQgITAgcARAIUAhUCBwBEAkMCFAIHAEUCFQIWAgcARQJEAhUCBwBGAhYCFwIHAEYCRQIWAgcARwIXAhgCBwBHAkYCFwIHAEgCGAIZAgcASAJHAhgCBwBJAhkCGgIHAEkCSAIZAgcASgIaAhsCBwBKAkkCGgIHAEsCGwIcAgcASwJKAhsCBwAiAhwCHQIHACICSwIcAgcAwwBMAsEABwDDAE0CTAIHAMQATQLDAAcAxABOAk0CBwDFAE4CxAAHAMUATwJOAgcAygBPAsUABwDKAFACTwIHAM4AUALKAAcAzgBRAlACBwDHAFECzgAHAMcAUgJRAgcAxgBSAscABwDGAFMCUgIHAMgAUwLGAAcAyABUAlMCBwDJAFQCyAAHAMkAVQJUAgcAGQFVAskABwAZAVYCVQIHAEABVgIZAQcAQAFXAlYCBwDBAFgCwgAHAMEATAJYAgcAwgBZAvAABwDCAFgCWQIHAPAAWgLAAAcA8ABZAloCBwDAAFsCvwAHAMAAWgJbAgcAvwBcAr4ABwC/AFsCXAIHAL4AXQIDAQcAvgBcAl0CBwADAV4CKQEHAAMBXQJeAgcAXwJgAmECBwBfAmICYAIHAGMC5wBkAgcAYwLlAOcABwBNAmMCTAIHAE0CZQJjAgcAZQLlAGMCBwBlAuMA5QAHAE4CZQJNAgcATgJmAmUCBwBmAuMAZQIHAGYC4QDjAAcATwJmAk4CBwBPAmcCZgIHAGcC4QBmAgcAZwLZAOEABwBQAmcCTwIHAFACaAJnAgcAaALZAGcCBwBoAtUA2QAHAFECaAJQAgcAUQJpAmgCBwBpAtUAaAIHAGkC0wDVAAcAUgJpAlECBwBSAmoCaQIHAGoC0wBpAgcAagLWANMABwBTAmoCUgIHAFMCawJqAgcAawLWAGoCBwBrAt8A1gAHAFQCawJTAgcAVAJsAmsCBwBsAt8AawIHAGwC3QDfAAcAVQJsAlQCBwBVAm0CbAIHAG0C3QBsAgcAbQLbAN0ABwBWAm0CVQIHAFYCbgJtAgcAbgLbAG0CBwBuAhcB2wAHAFcCbgJWAgcAVwJvAm4CBwBvAhcBbgIHAG8CPgEXAQcAYQJwAnECBwBhAmACcAIHAGQC7gByAgcAZALnAO4ABwBZAnMCWgIHAFkCcgJzAgcAcgLpAHMCBwByAu4A6QAHAFoCdAJbAgcAWgJzAnQCBwBzAusAdAIHAHMC6QDrAAcAWwJ1AlwCBwBbAnQCdQIHAHQC7QB1AgcAdALrAO0ABwBcAnYCXQIHAFwCdQJ2AgcAdQIGAXYCBwB1Au0ABgEHAF0CdwJeAgcAXQJ2AncCBwB2AiwBdwIHAHYCBgEsAQcAYAJ4AnACBwBgAnkCeAIHAHkCcgJ4AgcAeQJkAnICBwBiAnkCYAIHAGICegJ5AgcAegJkAnkCBwB6AmMCZAIHAF8CegJiAgcAXwJ7AnoCBwB7AmMCegIHAHsCTAJjAgcAYQJ7Al8CBwBhAnwCewIHAHwCTAJ7AgcAfAJYAkwCBwBxAnwCYQIHAHECfQJ8AgcAfQJYAnwCBwB9AlkCWAIHAHACfQJxAgcAcAJ4An0CBwB4AlkCfQIHAHgCcgJZAgcAdwF+AnUBBwB3AX8CfgIHAH8CbQF+AgcAfwJwAW0BBwB4AX8CdwEHAHgBgAJ/AgcAgAJwAX8CBwCAAnwBcAEHAHoBgAJ4AQcAegGBAoACBwCBAnwBgAIHAIECewF8AQcAsQGBAnoBBwCxAYICgQIHAIICewGBAgcAggJuAXsBBwCDAYICsQEHAIMBgwKCAgcAgwJuAYICBwCDAm8BbgEHAHUBgwKDAQcAdQF+AoMCBwB+Am8BgwIHAH4CbQFvAQcAhAKFAoYCBwCEAocChQIHAIgCiQKKAgcAiAKLAokCBwCMAosCiAIHAIwCjQKLAgcAjgKNAowCBwCOAo8CjQIHAJACjwKOAgcAkAKRAo8CBwCSApMClAIHAJIClQKTAgcAlgKVApICBwCWApcClQIHAIcCmAKFAgcAhwKZApgCBwCLApoCiQIHAIsCmwKaAgcAjQKbAosCBwCNApwCmwIHAI8CnAKNAgcAjwKdApwCBwCRAp0CjwIHAJECngKdAgcAlQKfApMCBwCVAqACnwIHAJcCoAKVAgcAlwKhAqACBwCYAqIChQIHAJgCowKiAgcAowKkAqICBwCjAqUCpAIHAKQChQKiAgcApAKGAoUCBwCmAqACoQIHAKYCpwKgAgcApwKfAqACBwCnAqgCnwIHAKkCngKqAgcAqQKdAp4CBwCrAp0CqQIHAKsCnAKdAgcArAKcAqsCBwCsApsCnAIHAK0CmwKsAgcArQKaApsCBwCuApkCrwIHAK4CmAKZAgcAsAKYAq4CBwCwAqMCmAIHALECowKwAgcAsQKlAqMCBwCaArICswIHAJoCrQKyAgcAiQKzArQCBwCJApoCswIHAIoCtAK1AgcAigKJArQCBwC2ArMCsgIHALYCtwKzAgcArwK3ArYCBwCvApkCtwIHALcCtAKzAgcAtwK4ArQCBwCZArgCtwIHAJkChwK4AgcAuAK1ArQCBwC4ArkCtQIHAIcCuQK4AgcAhwKEArkCBwC6ArsCvAIHALoCvQK7AgcAvgK8Ar8CBwC+AroCvAIHAL0CwAK7AgcAvQLBAsACBwDCAsMCxAIHAMICxQLDAgcAxQLGAsMCBwDFAscCxgIHAMcCvwLGAgcAxwK+Ar8CBwDBAsgCwAIHAMECyQLIAgcAyQLKAsgCBwDJAssCygIHAMsCzALKAgcAywLNAswCBwDNAs4CzAIHAM0CzwLOAgcA0ALRAtICBwDQAtMC0QIHANQC0wLVAgcA1ALRAtMCBwDWAtIC1wIHANYC0ALSAgcAzwLXAs4CBwDPAtYC1wIHANgCnwKoAgcA2ALZAp8CBwCqAtkC2AIHAKoCngLZAgcA2QKTAp8CBwDZAtoCkwIHAJ4C2gLZAgcAngKRAtoCBwDaApQCkwIHANoC2wKUAgcAkQLbAtoCBwCRApAC2wIHAMgC3ALdAgcAyALKAtwCBwDKAt4C3AIHAMoCzALeAgcAzALfAt4CBwDMAs4C3wIHAM4C4ALfAgcAzgLXAuACBwDXAuEC4AIHANcC0gLhAgcA0gLiAuECBwDSAtEC4gIHANEC4wLiAgcA0QLUAuMCBwDAAt0C5AIHAMACyALdAgcAuwLkAuUCBwC7AsAC5AIHALwC5QLmAgcAvAK7AuUCBwC/AuYC5wIHAL8CvALmAgcAxgLnAugCBwDGAr8C5wIHAMMC6ALpAgcAwwLGAugCBwDEAukC6gIHAMQCwwLpAgcAoQLrAqYCBwChAuwC6wIHANUC7QLUAgcA1QLuAu0CBwDUAu8C4wIHANQC7QLvAgcA4wLwAuICBwDjAu8C8AIHAOIC8QLhAgcA4gLwAvECBwDhAvIC4AIHAOEC8QLyAgcA4ALzAt8CBwDgAvIC8wIHAN8C9ALeAgcA3wLzAvQCBwDeAvUC3AIHAN4C9AL1AgcA3AL2At0CBwDcAvUC9gIHAN0C9wLkAgcA3QL2AvcCBwDkAvgC5QIHAOQC9wL4AgcA5QL5AuYCBwDlAvgC+QIHAOYC+gLnAgcA5gL5AvoCBwDnAvsC6AIHAOcC+gL7AgcA6AL8AukCBwDoAvsC/AIHAOkC/QLqAgcA6QL8Av0CBwDqAv4CxAIHAOoC/QL+AgcAxAL/AsICBwDEAv4C/wIHALECAAOlAgcAsQIBAwADBwClAgIDpAIHAKUCAAMCAwcApAIDA4YCBwCkAgIDAwMHAIYCBAOEAgcAhgIDAwQDBwCEAgUDuQIHAIQCBAMFAwcAuQIGA7UCBwC5AgUDBgMHALUCBwOKAgcAtQIGAwcDBwCKAggDiAIHAIoCBwMIAwcAiAIJA4wCBwCIAggDCQMHAIwCCgOOAgcAjAIJAwoDBwCOAgsDkAIHAI4CCgMLAwcAkAIMA9sCBwCQAgsDDAMHANsCDQOUAgcA2wIMAw0DBwCUAg4DkgIHAJQCDQMOAwcAkgIPA5YCBwCSAg4DDwMHAJYCEAOXAgcAlgIPAxADBwCXAuwCoQIHAJcCEAPsAgcA7AIRA+sCBwDsAhIDEQMHAO4CEwPtAgcA7gIUAxMDBwAQAxID7AIHABADFQMSAwcA7QIWA+8CBwDtAhMDFgMHAO8CFwPwAgcA7wIWAxcDBwDwAhgD8QIHAPACFwMYAwcA8QIZA/ICBwDxAhgDGQMHAPICGgPzAgcA8gIZAxoDBwDzAhsD9AIHAPMCGgMbAwcA9AIcA/UCBwD0AhsDHAMHAPUCHQP2AgcA9QIcAx0DBwD2Ah4D9wIHAPYCHQMeAwcA9wIfA/gCBwD3Ah4DHwMHAPgCIAP5AgcA+AIfAyADBwD5AiED+gIHAPkCIAMhAwcA+gIiA/sCBwD6AiEDIgMHAPsCIwP8AgcA+wIiAyMDBwD8AiQD/QIHAPwCIwMkAwcA/QIlA/4CBwD9AiQDJQMHAP4CJgP/AgcA/gIlAyYDBwABAycDAAMHAAEDKAMnAwcAAAMpAwIDBwAAAycDKQMHAAIDKgMDAwcAAgMpAyoDBwADAysDBAMHAAMDKgMrAwcABAMsAwUDBwAEAysDLAMHAAUDLQMGAwcABQMsAy0DBwAGAy4DBwMHAAYDLQMuAwcABwMvAwgDBwAHAy4DLwMHAAgDMAMJAwcACAMvAzADBwAJAzEDCgMHAAkDMAMxAwcACgMyAwsDBwAKAzEDMgMHAAsDMwMMAwcACwMyAzMDBwAMAzQDDQMHAAwDMwM0AwcADQM1Aw4DBwANAzQDNQMHAA4DNgMPAwcADgM1AzYDBwAPAxUDEAMHAA8DNgMVAwcArgE3A68BBwCuATgDNwMHADgDOQM3AwcAOAM6AzkDBwA7AzwDPQMHADsDPgM8AwcArQE+AzkDBwCtATwDPgMHAD0DPwNAAwcAPQM8Az8DBwCvATwDrQEHAK8BPwM8AwcAPwNBA0ADBwA/A0IDQQMHADcDPwOvAQcANwNCAz8DBwBCAzsDQQMHAEIDPgM7AwcAOQNCAzcDBwA5Az4DQgMHAEMDRANFAwcAQwNGA0QDBwBHA0UDSAMHAEcDQwNFAwcARANJA0oDBwBEA0YDSQMHAEoDRwNIAwcASgNJA0cDBwBDA0sDRgMHAEMDTANLAwcATQNMA04DBwBNA0sDTAMHAE4DTwNQAwcATgNMA08DBwBGA1EDSQMHAEYDSwNRAwcAUgNLA00DBwBSA1EDSwMHAEkDTwNHAwcASQNRA08DBwBQA1EDUgMHAFADTwNRAwcAUwNUA1UDBwBTA1YDVAMHAFUDVwNYAwcAVQNUA1cDBwBZA1UDWAMHAFkDUwNVAwcAWgNTA1kDBwBaA1YDUwMHAFYDVwNUAwcAVgNaA1cDBwBbA1wDXQMHAFsDXgNcAwcAXgNfA1wDBwBeA2ADXwMHAF8DYQNiAwcAXwNgA2EDBwBiA1sDXQMHAGIDYQNbAwcAYwNkA2UDBwBjA2YDZAMHAGcDZQNoAwcAZwNjA2UDBwBpA2cDaAMHAGkDagNnAwcAZANqA2kDBwBkA2YDagMHAGsDXQNcAwcAawNsA10DBwBsA2UDZAMHAGwDawNlAwcAbQNcA18DBwBtA2sDXAMHAGsDaANlAwcAawNtA2gDBwBiA20DXwMHAGIDbgNtAwcAbQNpA2gDBwBtA24DaQMHAF0DbgNiAwcAXQNsA24DBwBuA2QDaQMHAG4DbANkAwcAWwNvA14DBwBbA3ADbwMHAF4DcQNgAwcAXgNvA3EDBwByA1sDYQMHAHIDcANbAwcAcQNhA2ADBwBxA3IDYQMHAHMDbwNwAwcAcwN0A28DBwB0A1gDVwMHAHQDcwNYAwcAdQNXA1oDBwB1A3QDVwMHAHYDcANyAwcAdgNzA3ADBwBzA1kDWAMHAHMDdgNZAwcAdQNyA3EDBwB1A3YDcgMHAHYDWgNZAwcAdgN1A1oDBwB3A0MDeAMHAHcDTANDAwcAeQNMA3cDBwB5A08DTAMHAEcDeQN6AwcARwNPA3kDBwBDA3oDeAMHAEMDRwN6AwcAcQN7A3wDBwBxA28DewMHAHUDfAN9AwcAdQNxA3wDBwB+A3UDfQMHAH4DdAN1AwcAewN0A34DBwB7A28DdAMHAH8DeAOAAwcAfwN3A3gDBwCBA3cDfwMHAIEDeQN3AwcAegOBA4IDBwB6A3kDgQMHAHgDggOAAwcAeAN6A4IDBwB8A4MDhAMHAHwDewODAwcAfQOEA4UDBwB9A3wDhAMHAIYDfQOFAwcAhgN+A30DBwCDA34DhgMHAIMDewN+AwcAOgOHA7ABBwA6A4gDhwMHALABiQOuAQcAsAGHA4kDBwCuAYoDOAMHAK4BiQOKAwcAOAOIAzoDBwA4A4oDiAMHAGMDiwNmAwcAYwOMA4sDBwBnA4wDYwMHAGcDjQOMAwcAagONA2cDBwBqA44DjQMHAGYDjgNqAwcAZgOLA44DBwCIA48DhwMHAIgDkAOPAwcAkQOQA5IDBwCRA48DkAMHAJMDjwORAwcAkwOUA48DBwCJA5UDigMHAIkDlAOVAwcAlgOUA5MDBwCWA5UDlAMHAIoDkAOIAwcAigOVA5ADBwCSA5UDlgMHAJIDkAOVAwcAlwOLA4wDBwCXA5gDiwMHAJkDlwOaAwcAmQOYA5cDBwCaA5sDnAMHAJoDlwObAwcAnQONA44DBwCdA5sDjQMHAJwDnQOeAwcAnAObA50DBwCYA44DiwMHAJgDnQOOAwcAngOYA5kDBwCeA50DmAMHAJQDnwOgAwcAlAOJA58DBwCPA6ADoQMHAI8DlAOgAwcAogOPA6EDBwCiA4cDjwMHAJ8DhwOiAwcAnwOJA4cDBwCjA40DpAMHAKMDjAONAwcAlwOjA6UDBwCXA4wDowMHAJsDpQOmAwcAmwOXA6UDBwCkA5sDpgMHAKQDjQObAwcAoAOnA6gDBwCgA58DpwMHAKEDqAOpAwcAoQOgA6gDBwCqA6EDqQMHAKoDogOhAwcApwOiA6oDBwCnA58DogMHAKsDpAOsAwcAqwOjA6QDBwClA6sDrQMHAKUDowOrAwcApgOtA64DBwCmA6UDrQMHAKwDpgOuAwcArAOkA6YDBwCvA7ADsQMHAK8DsgOwAwcAsQOzA7QDBwCxA7ADswMHALUDsQO0AwcAtQOvA7EDBwC2A68DtQMHALYDsgOvAwcAsgOzA7ADBwCyA7YDswMHALcDuAO5AwcAtwO6A7gDBwC6A7sDuAMHALoDvAO7AwcAuwO9A74DBwC7A7wDvQMHAL4DtwO5AwcAvgO9A7cDBwC/A8ADwQMHAL8DwgPAAwcAwwPBA8QDBwDDA78DwQMHAMUDwwPEAwcAxQPGA8MDBwDAA8YDxQMHAMADwgPGAwcAxwO5A7gDBwDHA8gDuQMHAMgDwQPAAwcAyAPHA8EDBwDJA7gDuwMHAMkDxwO4AwcAxwPEA8EDBwDHA8kDxAMHAL4DyQO7AwcAvgPKA8kDBwDJA8UDxAMHAMkDygPFAwcAuQPKA74DBwC5A8gDygMHAMoDwAPFAwcAygPIA8ADBwC3A8sDugMHALcDzAPLAwcAugPNA7wDBwC6A8sDzQMHAM4DtwO9AwcAzgPMA7cDBwDNA70DvAMHAM0DzgO9AwcAzwPLA8wDBwDPA9ADywMHANADtAOzAwcA0APPA7QDBwDRA7MDtgMHANED0AOzAwcA0gPMA84DBwDSA88DzAMHAM8DtQO0AwcAzwPSA7UDBwDRA84DzQMHANED0gPOAwcA0gO2A7UDBwDSA9EDtgMHANMD1APVAwcA0wPWA9QDBwDXA9UD2AMHANcD0wPVAwcA1QPZA9gDBwDVA9QD2QMHANQD2gPZAwcA1APWA9oDBwDXA9YD0wMHANcD2gPWAwcA2wPcA90DBwDbA94D3AMHAN8D3gPbAwcA3wPgA94DBwDhA98D4gMHAOED4APfAwcA3APiA90DBwDcA+ED4gMHAOMD5APlAwcA4wPmA+QDBwDlA+cD6AMHAOUD5APnAwcA5wPpA+gDBwDnA+oD6QMHAOoD4wPpAwcA6gPmA+MDBwDdA+sD2wMHAN0D7APrAwcA5QPsA+MDBwDlA+sD7AMHANsD7QPfAwcA2wPrA+0DBwDoA+sD5QMHAOgD7QPrAwcA7QPiA98DBwDtA+4D4gMHAOkD7QPoAwcA6QPuA+0DBwDuA90D4gMHAO4D7APdAwcA4wPuA+kDBwDjA+wD7gMHAO8D3APeAwcA7wPwA9wDBwDxA94D4AMHAPED7wPeAwcA3APyA+EDBwDcA/AD8gMHAOED8QPgAwcA4QPyA/EDBwDvA/MD8AMHAO8D9APzAwcA2AP0A9cDBwDYA/MD9AMHANcD9QPaAwcA1wP0A/UDBwDwA/YD8gMHAPAD8wP2AwcA2QPzA9gDBwDZA/YD8wMHAPID9QPxAwcA8gP2A/UDBwDaA/YD2QMHANoD9QP2AwcAywP3A/gDBwDLA9AD9wMHANAD+QP3AwcA0APRA/kDBwD5A80D+gMHAPkD0QPNAwcA+gPLA/gDBwD6A80DywMHAPsD8QP8AwcA+wPvA/ED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BwBVBE0ETwQHAFcEUARYBAcAVwRPBFAEBwBQBFYEWAQHAFAETgRWBAcAWQRaBFsEBwBZBFwEWgQHAF0EXgRfBAcAXQRgBF4EBwBhBGIEYwQHAGEEZARiBAcAZQRmBGcEBwBlBGgEZgQHAGkEWwRqBAcAaQRZBFsEBwBfBGsEbAQHAF8EXgRrBAcAYwRtBG4EBwBjBGIEbQQHAG8EZwRwBAcAbwRlBGcEBwBcBHEEWgQHAFwEcgRxBAcAcwR0BHUEBwBzBHYEdAQHAHIEdwRxBAcAcgR4BHcEBwBhBHgEZAQHAGEEdwR4BAcAeQR0BHYEBwB5BHoEdAQHAHsEeQR8BAcAewR6BHkEBwB1BH0EcwQHAHUEfgR9BAcAfwR+BIAEBwB/BH0EfgQHAIEEWwRaBAcAgQSCBFsEBwBfBIEEXQQHAF8EggSBBAcAWQSDBFwEBwBZBIQEgwQHAGAEhAReBAcAYASDBIQEBwCCBGoEWwQHAIIEhQRqBAcAbASCBF8EBwBsBIUEggQHAGkEhARZBAcAaQSGBIQEBwBeBIYEawQHAF4EhASGBAcAfASHBHsEBwB8BIgEhwQHAGQEiQRiBAcAZASKBIkEBwBjBIsEYQQHAGMEjASLBAcAYgSNBG0EBwBiBIkEjQQHAG4EjARjBAcAbgSOBIwEBwCPBJAEkQQHAI8EkgSQBAcAkgRoBJAEBwCSBGYEaAQHAHwEkwSIBAcAfASUBJMEBwCUBIsEkwQHAJQEYQSLBAcAeQSUBHwEBwB5BJUElAQHAJUEYQSUBAcAlQR3BGEEBwB2BJUEeQQHAHYElgSVBAcAlgR3BJUEBwCWBHEEdwQHAHMElgR2BAcAcwSXBJYEBwCXBHEElgQHAJcEWgRxBAcAfQSXBHMEBwB9BJgElwQHAJgEWgSXBAcAmASBBFoEBwB/BJgEfQQHAH8EmQSYBAcAmQSBBJgEBwCZBF0EgQQHAIAEmQR/BAcAgASaBJkEBwCaBF0EmQQHAJoEYARdBAcAfgSaBIAEBwB+BJsEmgQHAJsEYASaBAcAmwSDBGAEBwB1BJsEfgQHAHUEnASbBAcAnASDBJsEBwCcBFwEgwQHAHQEnAR1BAcAdASdBJwEBwCdBFwEnAQHAJ0EcgRcBAcAegSdBHQEBwB6BJ4EnQQHAJ4EcgSdBAcAngR4BHIEBwB7BJ4EegQHAHsE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IwX5BAcA+wQkBSMFBwD6BCUFBQUHAPoEIQUlBQcABgUkBfsEBwAGBSYFJAUHACcFKAUpBQcAJwUqBSgFBwAqBQAFKAUHACoF/gQABQcAFAUrBSAFBwAUBSwFKwUHACwFIwUrBQcALAX5BCMFBwARBSwFFAUHABEFLQUsBQcALQX5BCwFBwAtBQ8F+QQHAA4FLQURBQcADgUuBS0FBwAuBQ8FLQUHAC4FCQUPBQcACwUuBQ4FBwALBS8FLgUHAC8FCQUuBQcALwXyBAkFBwAVBS8FCwUHABUFMAUvBQcAMAXyBC8FBwAwBRkF8gQHABcFMAUVBQcAFwUxBTAFBwAxBRkFMAUHADEF9QQZBQcAGAUxBRcFBwAYBTIFMQUHADIF9QQxBQcAMgX4BPUEBwAWBTIFGAUHABYFMwUyBQcAMwX4BDIFBwAzBRsF+AQHAA0FMwUWBQcADQU0BTMFBwA0BRsFMwUHADQF9AQbBQcADAU0BQ0FBwAMBTUFNAUHADUF9AQ0BQcANQUKBfQEBwASBTUFDAUHABIFNgU1BQcANgUKBTUFBwA2BRAFCgUHABMFNgUSBQcAEwU3BTYFBwA3BRAFNgUHADcF/AQQBQcAHwU3BRMFBwAfBTgFNwUHADgF/AQ3BQcAOAUiBfwEBwA5BToFOwUHADkFPAU6BQcAPQU+BT8FBwA9BUAFPgUHAEEFQgVDBQcAQQVEBUIFBwA+BUUFRgUHAD4FQAVFBQcARwVEBUEFBwBHBUgFRAUHAEkFPAU5BQcASQVKBTwFBwBDBUoFSQUHAEMFQgVKBQcAOwVLBUwFBwA7BToFSwUHAD8FSwU9BQcAPwVMBUsFBwBNBToFPAUHAE0FTgU6BQcAOwVPBTkFBwA7BVAFTwUHAFEFPwU+BQcAUQVSBT8FBwA9BVMFQAUHAD0FVAVTBQcAVQVCBUQFBwBVBVYFQgUHAEMFVwVBBQcAQwVYBVcFBwBFBVkFRgUHAEUFWgVZBQcAQAVaBUUFBwBABVMFWgUHAFkFPgVGBQcAWQVRBT4FBwBbBUQFSAUHAFsFVQVEBQcAXAVIBUcFBwBcBVsFSAUHAEEFXAVHBQcAQQVXBVwFBwBdBTwFSgUHAF0FTQU8BQcAOQVeBUkFBwA5BU8FXgUHAFYFSgVCBQcAVgVdBUoFBwBJBVgFQwUHAEkFXgVYBQcAOgVfBUsFBwA6BU4FXwUHAGAFOwVMBQcAYAVQBTsFBwBLBVQFPQUHAEsFXwVUBQcAUgVMBT8FBwBSBWAFTAUHAB8FYQViBQcAHwUgBWEFBwBPBWIFYQUHAE8FUAViBQcAYwVSBVEFBwBjBWQFUgUHAGQFIQUiBQcAZAVjBSEFBwBYBWUFVwUHAFgFZgVlBQcAJAVmBSMFBwAkBWUFZgUHAGcFIQVjBQcAZwUlBSEFBwBZBWMFUQUHAFkFZwVjBQcAVwVoBVwFBwBXBWUFaAUHACYFZQUkBQcAJgVoBWUFBwAgBWkFYQUHACAFKwVpBQcATwVpBV4FBwBPBWEFaQUHACsFZgVpBQcAKwUjBWYFBwBeBWYFWAUHAF4FaQVmBQcAagUfBWIFBwBqBTgFHwUHAGAFYgVQBQcAYAVqBWIFBwBkBWAFUgUHAGQFagVgBQcAagUiBTgFBwBqBWQFIgUHAGsFbAVtBQcAawVuBWwFBwBNBWwFTgUHAE0FbQVsBQcAbwVTBVQFBwBvBXAFUwUHAHAFcQVyBQcAcAVvBXEFBwBVBXMFVgUHAFUFdAVzBQcAdQV0BXYFBwB1BXMFdAUHAHAFdwV4BQcAcAVyBXcFBwBTBXgFWgUHAFMFcAV4BQcAWwV0BVUFBwBbBXkFdAUHAHYFeQV6BQcAdgV0BXkFBwB7BW0FfAUHAHsFawVtBQcAXQVtBU0FBwBdBXwFbQUHAHUFfAVzBQcAdQV7BXwFBwBWBXwFXQUHAFYFcwV8BQcAbAVfBU4FBwBsBX0FXwUHAH0FbgV+BQcAfQVsBW4FBwB9BXEFbwUHAH0FfgVxBQcAXwVvBVQFBwBfBX0FbwUHAH8FgAWBBQcAfwWCBYAFBwApBYMFJwUHACkFhAWDBQcAhQVyBXEFBwCFBYYFcgUHAIYFAAX9BAcAhgWFBQAFBwB1BYcFiAUHAHUFdgWHBQcA/wSIBYcFBwD/BP4EiAUHAIYFdwVyBQcAhgWJBXcFBwCJBf0EBwUHAIkFhgX9BAcAegWHBXYFBwB6BYoFhwUHAP8EigUIBQcA/wSHBYoFBwCLBSkFKAUHAIsFhAUpBQcAhAV+BW4FBwCEBYsFfgUHAIsFAAWFBQcAiwUoBQAFBwCFBX4FiwUHAIUFcQV+BQcAawWMBYMFBwBrBXsFjAUHACoFgwWMBQcAKgUnBYMFBwB1BYwFewUHAHUFiAWMBQcAKgWIBf4EBwAqBYwFiAUHAI0FbgVrBQcAjQWOBW4FBwCPBW4FjgUHAI8FhAVuBQcAhAWQBYMFBwCEBY8FkAUHAIMFjQVrBQcAgwWQBY0FBwCRBY0FkgUHAJEFjgWNBQcAkwWOBZEFBwCTBY8FjgUHAJAFkwWUBQcAkAWPBZMFBwCNBZQFkgUHAI0FkAWUBQcAlQWRBZIFBwCVBZYFkQUHAJcFkQWWBQcAlwWTBZEFBwCTBZgFlAUHAJMFlwWYBQcAlAWVBZIFBwCUBZgFlQUHAJkFlgWVBQcAmQWaBZYFBwCaBZcFlgUHAJoFmwWXBQcAlwWcBZgFBwCXBZsFnAUHAJgFmQWVBQcAmAWcBZkFBwB/BZoFmQUHAH8FgQWaBQcAgQWbBZoFBwCBBYAFmwUHAJsFggWcBQcAmwWABYIFBwCcBX8FmQUHAJwFggV/BQcAnQWeBZ8FBwCdBaAFngUHAKEFogWjBQcAoQWkBaIFBwClBaYFpwUHAKUFqAWmBQcAqQWqBasFBwCpBawFqgUHAJ8FrQWuBQcAnwWeBa0FBwCvBaMFsAUHAK8FoQWjBQcAsQWnBbIFBwCxBaUFpwUHAKsFswW0BQcAqwWqBbMFBwC1BaAFnQUHALUFtgWgBQcAtwW4BbkFBwC3BboFuAUHALsFtgW1BQcAuwW8BbYFBwC8BaYFqAUHALwFuwWmBQcAtwW9BboFBwC3Bb4FvQUHAL0FvwXABQcAvQW+Bb8FBwDBBbkFuAUHAMEFwgW5BQcAwgXDBcQFBwDCBcEFwwUHAJ8FxQWdBQcAnwXGBcUFBwDFBaMFogUHAMUFxgWjBQcAxwWeBaAFBwDHBcgFngUHAMgFpAWhBQcAyAXHBaQFBwCuBcYFnwUHAK4FyQXGBQcAxgWwBaMFBwDGBckFsAUHAMgFrQWeBQcAyAXKBa0FBwDKBaEFrwUHAMoFyAWhBQcAywXABb8FBwDLBcwFwAUHAM0FqAWlBQcAzQXOBagFBwDPBacFpgUHAM8F0AWnBQcA0QWlBbEFBwDRBc0FpQUHANAFsgWnBQcA0AXSBbIFBwDTBdQF1QUHANMF1gXUBQcArAXWBdMFBwCsBakF1gUHANcFwAXMBQcA1wXYBcAFBwDPBdgF1wUHAM8FpgXYBQcA2AW9BcAFBwDYBdkFvQUHAKYF2QXYBQcApgW7BdkFBwDZBboFvQUHANkF2gW6BQcAuwXaBdkFBwC7BbUF2gUHANoFuAW6BQcA2gXbBbgFBwC1BdsF2gUHALUFnQXbBQcA2wXBBbgFBwDbBdwFwQUHAJ0F3AXbBQcAnQXFBdwFBwDcBcMFwQUHANwF3QXDBQcAxQXdBdwFBwDFBaIF3QUHAN0FxAXDBQcA3QXeBcQFBwCiBd4F3QUHAKIFpAXeBQcA3gXCBcQFBwDeBd8FwgUHAKQF3wXeBQcApAXHBd8FBwDfBbkFwgUHAN8F4AW5BQcAxwXgBd8FBwDHBaAF4AUHAOAFtwW5BQcA4AXhBbcFBwCgBeEF4AUHAKAFtgXhBQcA4QW+BbcFBwDhBeIFvgUHALYF4gXhBQcAtgW8BeIFBwDiBb8FvgUHAOIF4wW/BQcAvAXjBeIFBwC8BagF4wUHAOMFywW/BQcA4wXkBcsFBwCoBeQF4wUHAKgFzgXkBQcA5QXmBecFBwDlBegF5gUHAOkF6gXrBQcA6QXsBeoFBwDtBe4F7wUHAO0F8AXuBQcA8QXpBfIFBwDxBewF6QUHAPAF8wXuBQcA8AX0BfMFBwDoBfUF5gUHAOgF9gX1BQcA9gXvBfUFBwD2Be0F7wUHAPcF5wX4BQcA9wXlBecFBwD3BesF6gUHAPcF+AXrBQcA5QX5BegFBwDlBfoF+QUHAPsF5wXmBQcA+wX8BecFBwDrBf0F6QUHAOsF/gX9BQcA/wXqBewFBwD/BQAG6gUHAO0FAQbwBQcA7QUCBgEGBwADBu8F7gUHAAMGBAbvBQcABQbxBfIFBwAFBgYG8QUHAAYG7AXxBQcABgb/BewFBwDpBQUG8gUHAOkF/QUFBgcA8AUHBvQFBwDwBQEGBwYHAPQFCAbzBQcA9AUHBggGBwAIBu4F8wUHAAgGAwbuBQcA6AUJBvYFBwDoBfkFCQYHAAoG5gX1BQcACgb7BeYFBwD2BQIG7QUHAPYFCQYCBgcABAb1Be8FBwAEBgoG9QUHAAsG5QX3BQcACwb6BeUFBwDnBQwG+AUHAOcF/AUMBgcAAAb3BeoFBwAABgsG9wUHAPgF/gXrBQcA+AUMBv4FBwANBssFDgYHAA0GzAXLBQcADgb7BQ0GBwAOBvwF+wUHAP4FDwb9BQcA/gUQBg8GBwDNBRAGzgUHAM0FDwYQBgcAEQYEBgMGBwARBhIGBAYHABIG0AXPBQcAEgYRBtAFBwDNBRMGDwYHAM0F0QUTBgcADwYFBv0FBwAPBhMGBQYHABQGAwYIBgcAFAYRBgMGBwARBtIF0AUHABEGFAbSBQcAFQbMBQ0GBwAVBtcFzAUHABUG+wUKBgcAFQYNBvsFBwASBtcFFQYHABIGzwXXBQcAEgYKBgQGBwASBhUGCgYHAMsFFgYOBgcAywXkBRYGBwAOBgwG/AUHAA4GFgYMBgcADAYQBv4FBwAMBhYGEAYHAM4FFgbkBQcAzgUQBhYGBwAXBhgGGQYHABcGGgYYBgcAFwb5BfoFBwAXBhkG+QUHAP8FGwYABgcA/wUcBhsGBwAdBhwGHgYHAB0GGwYcBgcAHwYBBgIGBwAfBiAGAQYHACAGIQYiBgcAIAYfBiEGBwAjBhwGJAYHACMGHgYcBgcAJAb/BQYGBwAkBhwG/wUHACAGBwYBBgcAIAYlBgcGBwAlBiIGJgYHACUGIAYiBgcAGQYnBigGBwAZBhgGJwYHABkGCQb5BQcAGQYoBgkGBwAoBiEGHwYHACgGJwYhBgcAKAYCBgkGBwAoBh8GAgYHAAsGFwb6BQcACwYpBhcGBwAaBikGKgYHABoGFwYpBgcAHQYpBhsGBwAdBioGKQYHABsGCwYABgcAGwYpBgsGBwArBtUF1AUHACsGLAbVBQcAHgYtBh0GBwAeBi4GLQYHAKwFLgaqBQcArAUtBi4GBwAvBiEGMAYHAC8GIgYhBgcAMAarBS8GBwAwBqkFqwUHACMGLgYeBgcAIwYxBi4GBwCqBTEGswUHAKoFLgYxBgcALwYmBiIGBwAvBjIGJgYHADIGqwW0BQcAMgYvBqsFBwDVBTMG0wUHANUFLAYzBgcAKgYsBhoGBwAqBjMGLAYHAKwFMwYtBgcArAXTBTMGBwAqBi0GMwYHACoGHQYtBgcANAYYBisGBwA0BicGGAYHACsG1gU0BgcAKwbUBdYFBwA0BiEGJwYHADQGMAYhBgcAMAbWBakFBwAwBjQG1gUHACwGGAYaBgcALAYrBhgGBwA1BjYGNwYHADUGOAY2BgcAOQY6BjsGBwA5BjwGOgYHAD0GPgY/BgcAPQZABj4GBwBBBkIGQwYHAEEGRAZCBgcANwZFBkYGBwA3BjYGRQYHAEcGOwZIBgcARwY5BjsGBwBJBj8GSgYHAEkGPQY/BgcAQwZLBkwGBwBDBkIGSwYHAE0GOAY1BgcATQZOBjgGBwBPBlAGUQYHAE8GUgZQBgcAUwZOBk0GBwBTBlQGTgYHAFQGPgZABgcAVAZTBj4GBwBPBlUGUgYHAE8GVgZVBgcAVQZXBlgGBwBVBlYGVwYHAFkGUQZQBgcAWQZaBlEGBwBaBlsGXAYHAFoGWQZbBgcANwZdBjUGBwA3Bl4GXQYHAF0GOwY6BgcAXQZeBjsGBwBfBjYGOAYHAF8GYAY2BgcAYAY8BjkGBwBgBl8GPAYHAEYGXgY3BgcARgZhBl4GBwBeBkgGOwYHAF4GYQZIBgcAYAZFBjYGBwBgBmIGRQYHAGIGOQZHBgcAYgZgBjkGBwBjBlgGVwYHAGMGZAZYBgcAZQZABj0GBwBlBmYGQAYHAGcGPwY+BgcAZwZoBj8GBwBpBj0GSQYHAGkGZQY9BgcAaAZKBj8GBwBoBmoGSgYHAGsGbAZtBgcAawZuBmwGBwBEBm4GawYHAEQGQQZuBgcAbwZYBmQGBwBvBnAGWAYHAGcGcAZvBgcAZwY+BnAGBwBwBlUGWAYHAHAGcQZVBgcAPgZxBnAGBwA+BlMGcQYHAHEGUgZVBgcAcQZyBlIGBwBTBnIGcQYHAFMGTQZyBgcAcgZQBlIGBwByBnMGUAYHAE0GcwZyBgcATQY1BnMGBwBzBlkGUAYHAHMGdAZZBgcANQZ0BnMGBwA1Bl0GdAYHAHQGWwZZBgcAdAZ1BlsGBwBdBnUGdAYHAF0GOgZ1BgcAdQZcBlsGBwB1BnYGXAYHADoGdgZ1BgcAOgY8BnYGBwB2BloGXAYHAHYGdwZaBgcAPAZ3BnYGBwA8Bl8GdwYHAHcGUQZaBgcAdwZ4BlEGBwBfBngGdwYHAF8GOAZ4BgcAeAZPBlEGBwB4BnkGTwYHADgGeQZ4BgcAOAZOBnkGBwB5BlYGTwYHAHkGegZWBgcATgZ6BnkGBwBOBlQGegYHAHoGVwZWBgcAegZ7BlcGBwBUBnsGegYHAFQGQAZ7BgcAewZjBlcGBwB7BnwGYwYHAEAGfAZ7BgcAQAZmBnwGBwB9Bn4GfwYHAH0GgAZ+BgcAgQaCBoMGBwCBBoQGggYHAIUGhgaHBgcAhQaIBoYGBwCJBoEGigYHAIkGhAaBBgcAiAaLBoYGBwCIBowGiwYHAIAGjQZ+BgcAgAaOBo0GBwCOBocGjQYHAI4GhQaHBgcAjwZ/BpAGBwCPBn0GfwYHAI8GgwaCBgcAjwaQBoMGBwB9BpEGgAYHAH0GkgaRBgcAkwZ/Bn4GBwCTBpQGfwYHAIMGlQaBBgcAgwaWBpUGBwCXBoIGhAYHAJcGmAaCBgcAhQaZBogGBwCFBpoGmQYHAJsGhwaGBgcAmwacBocGBwCdBokGigYHAJ0GngaJBgcAngaEBokGBwCeBpcGhAYHAIEGnQaKBgcAgQaVBp0GBwCIBp8GjAYHAIgGmQafBgcAjAagBosGBwCMBp8GoAYHAKAGhgaLBgcAoAabBoYGBwCABqEGjgYHAIAGkQahBgcAogZ+Bo0GBwCiBpMGfgYHAI4GmgaFBgcAjgahBpoGBwCcBo0GhwYHAJwGogaNBgcAowZ9Bo8GBwCjBpIGfQYHAH8GpAaQBgcAfwaUBqQGBwCYBo8GggYHAJgGowaPBgcAkAaWBoMGBwCQBqQGlgYHAKUGYwamBgcApQZkBmMGBwCmBpMGpQYHAKYGlAaTBgcAlganBpUGBwCWBqgGpwYHAGUGqAZmBgcAZQanBqgGBwCpBpwGmwYHAKkGqgacBgcAqgZoBmcGBwCqBqkGaAYHAGUGqwanBgcAZQZpBqsGBwCnBp0GlQYHAKcGqwadBgcArAabBqAGBwCsBqkGmwYHAKkGagZoBgcAqQasBmoGBwCtBmQGpQYHAK0GbwZkBgcArQaTBqIGBwCtBqUGkwYHAKoGbwatBgcAqgZnBm8GBwCqBqIGnAYHAKoGrQaiBgcAYwauBqYGBwBjBnwGrgYHAKYGpAaUBgcApgauBqQGBwCkBqgGlgYHAKQGrgaoBgcAZgauBnwGBwBmBqgGrgYHAK8GsAaxBgcArwayBrAGBwCvBpEGkgYHAK8GsQaRBgcAlwazBpgGBwCXBrQGswYHALUGtAa2BgcAtQazBrQGBwC3BpkGmgYHALcGuAaZBgcAuAa5BroGBwC4BrcGuQYHALsGtAa8BgcAuwa2BrQGBwC8BpcGngYHALwGtAaXBgcAuAafBpkGBwC4Br0GnwYHAL0Guga+BgcAvQa4BroGBwCxBr8GwAYHALEGsAa/BgcAsQahBpEGBwCxBsAGoQYHAMAGuQa3BgcAwAa/BrkGBwDABpoGoQYHAMAGtwaaBgcAowavBpIGBwCjBsEGrwYHALIGwQbCBgcAsgavBsEGBwC1BsEGswYHALUGwgbBBgcAswajBpgGBwCzBsEGowYHAMMGxAbFBgcAwwbGBsQGBwDHBm0GbAYHAMcGyAZtBgcAtgbJBrUGBwC2BsoGyQYHAEQGygZCBgcARAbJBsoGBwDLBrkGzAYHAMsGuga5BgcAzAZDBssGBwDMBkEGQwYHALsGyga2BgcAuwbNBsoGBwBCBs0GSwYHAEIGygbNBgcAywa+BroGBwDLBs4GvgYHAM4GQwZMBgcAzgbLBkMGBwBtBs8GawYHAG0GyAbPBgcAwgbIBrIGBwDCBs8GyAYHAEQGzwbJBgcARAZrBs8GBwDCBskGzwYHAMIGtQbJBgcA0AawBscGBwDQBr8GsAYHAMcGbgbQBgcAxwZsBm4GBwDQBrkGvwYHANAGzAa5BgcAzAZuBkEGBwDMBtAGbgYHALIG0QawBgcAsgbSBtEGBwCyBtMG0gYHALIGyAbTBgcA1AbIBscGBwDUBtMGyAYHANEGxwawBgcA0QbUBscGBwDRBtUG1gYHANEG0gbVBgcA0gbXBtUGBwDSBtMG1wYHANcG1AbYBgcA1wbTBtQGBwDYBtEG1gYHANgG1AbRBgcA1QbZBtYGBwDVBtoG2QYHANUG2wbaBgcA1QbXBtsGBwDcBtcG2AYHANwG2wbXBgcA2QbYBtYGBwDZBtwG2AYHANoG3QbZBgcA2gbeBt0GBwDbBt4G2gYHANsG3wbeBgcA4AbbBtwGBwDgBt8G2wYHAN0G3AbZBgcA3QbgBtwGBwDeBsQG3QYHAN4GxQbEBgcA3wbFBt4GBwDfBsMGxQYHAMYG3wbgBgcAxgbDBt8GBwDEBuAG3QYHAMQGxgbgBgcA4QbiBuMGBwDhBuQG4gYHAOUG5gbnBgcA5QboBuYGBwDmBukG6gYHAOYG6AbpBgcA6gbrBuwGBwDqBukG6wYHAO0G6wbuBgcA7QbsBusGBwDvBu4G8AYHAO8G7QbuBgcA8QbyBvMGBwDxBvQG8gYHAOUG9AbxBgcA5QbnBvQGBwDnBuMG4gYHAOcG5gbjBgcA4wbqBuEGBwDjBuYG6gYHAOEG7AbkBgcA4QbqBuwGBwD1BuwG7QYHAPUG5AbsBgcA9gbtBu8GBwD2BvUG7QYHAPQG9wbyBgcA9Ab4BvcGBwDnBvgG9AYHAOcG4gb4BgcA+QbxBvMGBwD5BvoG8QYHAPoG5QbxBgcA+gb7BuUGBwD7BugG5QYHAPsG/AboBgcA6Ab9BukGBwDoBvwG/QYHAOkG/gbrBgcA6Qb9Bv4GBwDrBv8G7gYHAOsG/gb/BgcA7gYAB/AGBwDuBv8GAAcHAAEH+gb5BgcAAQcCB/oGBwACB/sG+gYHAAIHAwf7BgcABAf7BgMHBwAEB/wG+wYHAP0GBAcFBwcA/Qb8BgQHBwD+BgUHBgcHAP4G/QYFBwcA/gYHB/8GBwD+BgYHBwcHAP8GCAcABwcA/wYHBwgHBwAJBwEHCgcHAAkHAgcBBwcACwcCBwkHBwALBwMHAgcHAAwHAwcLBwcADAcEBwMHBwAFBwwHDQcHAAUHBAcMBwcABgcNBw4HBwAGBwUHDQcHAAcHDgcPBwcABwcGBw4HBwAIBw8HEAcHAAgHBwcPBwcAEQcJBwoHBwARBxIHCQcHABIHCwcJBwcAEgcTBwsHBwAUBwsHEwcHABQHDAcLBwcADQcUBxUHBwANBwwHFAcHAA4HFQcWBwcADgcNBxUHBwAOBxcHDwcHAA4HFgcXBwcADwcYBxAHBwAPBxcHGAcHABkHEgcRBwcAGQcaBxIHBwAaBxMHEgcHABoHGwcTBwcAHAcTBxsHBwAcBxQHEwcHABUHHAcdBwcAFQcUBxwHBwAWBx0HHgcHABYHFQcdBwcAFgcfBxcHBwAWBx4HHwcHABcHIAcYBwcAFwcfByAHBwAhBxoHGQcHACEHIgcaBwcAIgcbBxoHBwAiByMHGwcHACMHHAcbBwcAIwckBxwHBwAcByUHHQcHABwHJAclBwcAHQcmBx4HBwAdByUHJgcHAB4HJwcfBwcAHgcmBycHBwAfBygHIAcHAB8HJwcoBwcA5Ab4BuIGBwDkBvUG+AYHAPUG9wb4BgcA9Qb2BvcGBwApByoHKwcHACkHLAcqBwcALQcuBy8HBwAtBzAHLgcHADEHLQcyBwcAMQcwBy0HBwAzBzIHNAcHADMHMQcyBwcAMwc1BzYHBwAzBzQHNQcHADYHNwc4BwcANgc1BzcHBwA5BzoHOwcHADkHPAc6BwcAPAcuBzoHBwA8By8HLgcHACsHLwcpBwcAKwctBy8HBwAyBysHKgcHADIHLQcrBwcANAcqBywHBwA0BzIHKgcHADQHPQc1BwcANAcsBz0HBwA1Bz4HNwcHADUHPQc+BwcAPwc8BzkHBwA/B0AHPAcHAEAHLwc8BwcAQAcpBy8HBwA6B0EHOwcHADoHQgdBBwcALgdCBzoHBwAuB0MHQgcHADAHQwcuBwcAMAdEB0MHBwBFBzAHMQcHAEUHRAcwBwcARgcxBzMHBwBGB0UHMQcHAEcHMwc2BwcARwdGBzMHBwBIBzYHOAcHAEgHRwc2BwcAQgdJB0EHBwBCB0oHSQcHAEMHSgdCBwcAQwdLB0oHBwBDB0wHSwcHAEMHRAdMBwcATAdFB00HBwBMB0QHRQcHAE0HRgdOBwcATQdFB0YHBwBPB0YHRwcHAE8HTgdGBwcAUAdHB0gHBwBQB08HRwcHAEkHUQdSBwcASQdKB1EHBwBKB1MHUQcHAEoHSwdTBwcASwdUB1MHBwBLB0wHVAcHAFQHTQdVBwcAVAdMB00HBwBVB04HVgcHAFUHTQdOBwcAVgdPB1cHBwBWB04HTwcHAFcHUAdYBwcAVwdPB1AHBwBRB1kHUgcHAFEHWgdZBwcAUwdaB1EHBwBTB1sHWgcHAFMHXAdbBwcAUwdUB1wHBwBcB1UHXQcHAFwHVAdVBwcAXQdWB14HBwBdB1UHVgcHAF8HVgdXBwcAXwdeB1YHBwBgB1cHWAcHAGAHXwdXBwcAWgdhB1kHBwBaB2IHYQcHAFsHYgdaBwcAWwdjB2IHBwBbB2QHYwcHAFsHXAdkBwcAZAddB2UHBwBkB1wHXQcHAGUHXgdmBwcAZQddB14HBwBnB14HXwcHAGcHZgdeBwcAaAdfB2AHBwBoB2cHXwcHAGIHaQdhBwcAYgdqB2kHBwBjB2oHYgcHAGMHawdqBwcAZAdrB2MHBwBkB2wHawcHAG0HZAdlBwcAbQdsB2QHBwBuB2UHZgcHAG4HbQdlBwcAbwdmB2cHBwBvB24HZgcHAHAHZwdoBwcAcAdvB2cHBwBABywHKQcHAEAHPQcsBwcAPwc9B0AHBwA/Bz4HPQcHAHEHcgdzBwcAcQd0B3IHBwB1B3YHdwcHAHUHeAd2BwcAeQd4B3UHBwB5ByEHeAcHAHoHIQd5BwcAegciByEHBwB7ByIHegcHAHsHIwciBwcAewckByMHBwB7B3wHJAcHACQHfQclBwcAJAd8B30HBwAlB34HJgcHACUHfQd+BwcAJwd+B38HBwAnByYHfgcHACgHfweABwcAKAcnB38HBwB2B4AHdwcHAHYHKAeABwcAgQd1B3cHBwCBB4IHdQcHAIIHeQd1BwcAggeDB3kHBwCDB3oHeQcHAIMHhAd6BwcAhAd7B3oHBwCEB4UHewcHAIUHfAd7BwcAhQeGB3wHBwB8B4cHfQcHAHwHhgeHBwcAfQeIB34HBwB9B4cHiAcHAH4HiQd/BwcAfgeIB4kHBwB/B4oHgAcHAH8HiQeKBwcAgAeBB3cHBwCAB4oHgQcHAHIHggeBBwcAcgd0B4IHBwB0B4MHggcHAHQHcQeDBwcAcQeEB4MHBwBxB4sHhAcHAIsHhQeEBwcAiweMB4UHBwCNB4UHjAcHAI0HhgeFBwcAhweNB44HBwCHB4YHjQcHAIgHjgePBwcAiAeHB44HBwCIB5AHiQcHAIgHjweQBwcAiQdzB4oHBwCJB5AHcwcHAIoHcgeBBwcAigdzB3IHBwCLB3MHkAcHAIsHcQdzBwcAjweNB4wHBwCPB44HjQcHAIwHkAePBwcAjAeLB5AHBwCRB5IHkwcHAJEHlAeSBwcAlQeWB5cHBwCVB5gHlgcHAJgHmQeWBwcAmAdpB5kHBwBpB5oHmQcHAGkHageaBwcAagebB5oHBwBqB2sHmwcHAGwHmwdrBwcAbAecB5sHBwCdB2wHbQcHAJ0HnAdsBwcAngdtB24HBwCeB50HbQcHAJ4HbwefBwcAngduB28HBwCfB3AHoAcHAJ8HbwdwBwcAoAeVB5cHBwCgB3AHlQcHAJYHoQeXBwcAlgeiB6EHBwCZB6IHlgcHAJkHoweiBwcAmgejB5kHBwCaB6QHowcHAJsHpAeaBwcAmwelB6QHBwCcB6UHmwcHAJwHpgelBwcApwecB50HBwCnB6YHnAcHAKgHnQeeBwcAqAenB50HBwCpB54HnwcHAKkHqAeeBwcAqgefB6AHBwCqB6kHnwcHAKEHoAeXBwcAoQeqB6AHBwCiB5EHoQcHAKIHlAeRBwcAoweUB6IHBwCjB5IHlAcHAKQHkgejBwcApAerB5IHBwClB6sHpAcHAKUHrAerBwcApQetB6wHBwClB6YHrQcHAK0HpweuBwcArQemB6cHBwCuB6gHrwcHAK4HpweoBwcAsAeoB6kHBwCwB68HqAcHAJMHqQeqBwcAkwewB6kHBwCRB6oHoQcHAJEHkweqBwcAkwerB7AHBwCTB5IHqwcHAK0HrwesBwcArQeuB68HBwCwB6wHrwcHALAHqwesBwcAsQeyB7MHBwCxB7QHsgcHAPMGtAexBwcA8wbyBrQHBwC0B7UHsgcHALQHtge1BwcA8ga2B7QHBwDyBvcGtgcHALcHsQezBwcAtwe4B7EHBwC4B/MGsQcHALgH+QbzBgcA8Aa3B7MHBwDwBgAHtwcHALkHuAe3BwcAuQe6B7gHBwC6B/kGuAcHALoHAQf5BgcAAAe5B7cHBwAABwgHuQcHALsHuQe8BwcAuwe6B7kHBwAKB7oHuwcHAAoHAQe6BwcAuQcQB7wHBwC5BwgHEAcHAL0Huwe8BwcAvQe+B7sHBwC+BwoHuwcHAL4HEQcKBwcAEAe9B7wHBwAQBxgHvQcHAL8Hvge9BwcAvwfAB74HBwDABxEHvgcHAMAHGQcRBwcAGAe/B70HBwAYByAHvwcHAHYHwAe/BwcAdgd4B8AHBwB4BxkHwAcHAHgHIQcZBwcAIAd2B78HBwAgBygHdgcHAPYGtgf3BgcA9ga1B7YHBwDBB7MHwgcHAMEH8AazBwcAwwfwBsEHBwDDB+8G8AYHALMHxAfCBwcAsweyB8QHBwDFB+8GwwcHAMUH9gbvBgcAtQfFB8YHBwC1B/YGxQcHALIHxgfEBwcAsge1B8YHBwDHB8IHyAcHAMcHwQfCBwcAxwfDB8EHBwDHB8kHwwcHAMQHyAfCBwcAxAfKB8gHBwDFB8kHywcHAMUHwwfJBwcAxQfMB8YHBwDFB8sHzAcHAMYHygfEBwcAxgfMB8oHBwDNB84HzwcHAM0H0AfOBwcA0Ac7B84HBwDQBzkHOwcHANEH0AfNBwcA0QfSB9AHBwDSBzkH0AcHANIHPwc5BwcAzgfTB88HBwDOB9QH0wcHADsH1AfOBwcAOwdBB9QHBwDTBzgHzwcHANMHSAc4BwcA1AfVB9MHBwDUB9YH1QcHAEEH1gfUBwcAQQdJB9YHBwDVB0gH0wcHANUHUAdIBwcA1QfXB9gHBwDVB9YH1wcHANYHUgfXBwcA1gdJB1IHBwBYB9UH2AcHAFgHUAfVBwcA1wfZB9gHBwDXB9oH2QcHAFIH2gfXBwcAUgdZB9oHBwDZB1gH2AcHANkHYAdYBwcA2gfbB9kHBwDaB9wH2wcHAFkH3AfaBwcAWQdhB9wHBwDbB2AH2QcHANsHaAdgBwcA3AeVB9sHBwDcB5gHlQcHAGEHmAfcBwcAYQdpB5gHBwCVB2gH2wcHAJUHcAdoBwcA0gc+Bz8HBwDSB9EHPgcHAM8H3QfeBwcAzwc4B90HBwA4B98H3QcHADgHNwffBwcA4AfPB94HBwDgB80HzwcHADcH4QffBwcANwc+B+EHBwDhB9EH4gcHAOEHPgfRBwcA4gfNB+AHBwDiB9EHzQcHAN4H4wfkBwcA3gfdB+MHBwDfB+MH3QcHAN8H5QfjBwcA5AfgB94HBwDkB+YH4AcHAOUH4QfnBwcA5QffB+EHBwDoB+EH4gcHAOgH5wfhBwcA5gfiB+AHBwDmB+gH4gcHAOkH6gfrBwcA6QfsB+oHBwDtB+sH7gcHAO0H6QfrBwcA6wfvB+4HBwDrB+oH7wcHAOoH8AfvBwcA6gfsB/AHBwDtB+wH6QcHAO0H8AfsBwcA8QfyB/MHBwDxB/QH8gcHAPUH9AfxBwcA9Qf2B/QHBwD3B/UH+AcHAPcH9gf1BwcA8gf4B/MHBwDyB/cH+AcHAPkH+gf7BwcA+Qf8B/oHBwD7B/0H/gcHAPsH+gf9BwcA/Qf/B/4HBwD9BwAI/wcHAAAI+Qf/BwcAAAj8B/kHBwDzBwEI8QcHAPMHAggBCAcA+wcCCPkHBwD7BwEIAggHAPEHAwj1BwcA8QcBCAMIBwD+BwEI+wcHAP4HAwgBCAcAAwj4B/UHBwADCAQI+AcHAP8HAwj+BwcA/wcECAMIBwAECPMH+AcHAAQIAgjzBwcA+QcECP8HBwD5BwIIBAgHAAUI8gf0BwcABQgGCPIHBwAHCPQH9gcHAAcIBQj0BwcA8gcICPcHBwDyBwYICAgHAPcHBwj2BwcA9wcICAcIBwAFCAkIBggHAAUICggJCAcA7gcKCO0HBwDuBwkICggHAO0HCwjwBwcA7QcKCAsIBwAGCAwICAgHAAYICQgMCAcA7wcJCO4HBwDvBwwICQgHAAgICwgHCAcACAgMCAsIBwDwBwwI7wcHAPAHCwgMCAcADQgOCA8IBwANCBAIDggHAA8IEQgSCAcADwgOCBEIBwATCA8IEggHABMIDQgPCAcAFAgNCBMIBwAUCBAIDQgHABAIEQgOCAcAEAgUCBEIBwAVCBYIFwgHABUIGAgWCAcAGAgZCBYIBwAYCBoIGQgHABkIGwgcCAcAGQgaCBsIBwAcCBUIFwgHABwIGwgVCAcAHQgeCB8IBwAdCCAIHggHACEIHwgiCAcAIQgdCB8IBwAjCCEIIggHACMIJAghCAcAHggkCCMIBwAeCCAIJAgHACUIFwgWCAcAJQgmCBcIBwAmCB8IHggHACYIJQgfCAcAJwgWCBkIBwAnCCUIFggHACUIIggfCAcAJQgnCCIIBwAcCCcIGQgHABwIKAgnCAcAJwgjCCIIBwAnCCgIIwgHABcIKAgcCAcAFwgmCCgIBwAoCB4IIwgHACgIJggeCAcAFQgpCBgIBwAVCCoIKQgHABgIKwgaCAcAGAgpCCsIBwAsCBUIGwgHACwIKggVCAcAKwgbCBoIBwArCCwIGwgHAC0IKQgqCAcALQguCCkIBwAuCBIIEQgHAC4ILQgSCAcALwgRCBQIBwAvCC4IEQgHADAIKggsCAcAMAgtCCoIBwAtCBMIEggHAC0IMAgTCAcALwgsCCsIBwAvCDAILAgHADAIFAgTCAcAMAgvCBQIBwAxCAUIMggHADEICggFCAcAMwgKCDEIBwAzCAsICggHAAcIMwg0CAcABwgLCDMIBwAFCDQIMggHAAUIBwg0CAcAKwg1CDYIBwArCCkINQgHAC8INgg3CAcALwgrCDYIBwA4CC8INwgHADgILggvCAcANQguCDgIBwA1CCkILggHADkIMgg6CAcAOQgxCDIIBwA7CDEIOQgHADsIMwgxCAcANAg7CDwIBwA0CDMIOwgHADIIPAg6CAcAMgg0CDwIBwA2CD0IPggHADYINQg9CAcANwg+CD8IBwA3CDYIPggHAEAINwg/CAcAQAg4CDcIBwA9CDgIQAgHAD0INQg4CAcA/AdBCPoHBwD8B0IIQQgHAPoHQwj9BwcA+gdBCEMIBwD9B0QIAAgHAP0HQwhECAcAAAhCCPwHBwAACEQIQggHAB0IRQggCAcAHQhGCEUIBwAhCEYIHQgHACEIRwhGCAcAJAhHCCEIBwAkCEgIRwgHACAISAgkCAcAIAhFCEgIBwBCCEkIQQgHAEIISghJCAcASwhKCEwIBwBLCEkISggHAE0ISQhLCAcATQhOCEkIBwBDCE8IRAgHAEMITghPCAcAUAhOCE0IBwBQCE8ITggHAEQISghCCAcARAhPCEoIBwBMCE8IUAgHAEwISghPCAcAUQhFCEYIBwBRCFIIRQgHAFMIUQhUCAcAUwhSCFEIBwBUCFUIVggHAFQIUQhVCAcAVwhHCEgIBwBXCFUIRwgHAFYIVwhYCAcAVghVCFcIBwBSCEgIRQgHAFIIVwhICAcAWAhSCFMIBwBYCFcIUggHAE4IWQhaCAcATghDCFkIBwBJCFoIWwgHAEkITghaCAcAXAhJCFsIBwBcCEEISQgHAFkIQQhcCAcAWQhDCEEIBwBdCEcIXggHAF0IRghHCAcAUQhdCF8IBwBRCEYIXQgHAFUIXwhgCAcAVQhRCF8IBwBeCFUIYAgHAF4IRwhVCAcAWghhCGIIBwBaCFkIYQgHAFsIYghjCAcAWwhaCGIIBwBkCFsIYwgHAGQIXAhbCAcAYQhcCGQIBwBhCFkIXAgHAGUIXghmCAcAZQhdCF4IBwBfCGUIZwgHAF8IXQhlCAcAYAhnCGgIBwBgCF8IZwgHAGYIYAhoCAcAZgheCGAIBwBpCGoIawgHAGkIbAhqCAcAawhtCG4IBwBrCGoIbQgHAG8IawhuCAcAbwhpCGsIBwBwCGkIbwgHAHAIbAhpCAcAbAhtCGoIBwBsCHAIbQgHAHEIcghzCAcAcQh0CHIIBwB0CHUIcggHAHQIdgh1CAcAdQh3CHgIBwB1CHYIdwgHAHgIcQhzCAcAeAh3CHEIBwB5CHoIewgHAHkIfAh6CAcAfQh7CH4IBwB9CHkIewgHAH8IfQh+CAcAfwiACH0IBwB6CIAIfwgHAHoIfAiACAcAgQhzCHIIBwCBCIIIcwgHAIIIewh6CAcAggiBCHsIBwCDCHIIdQgHAIMIgQhyCAcAgQh+CHsIBwCBCIMIfggHAHgIgwh1CAcAeAiECIMIBwCDCH8IfggHAIMIhAh/CAcAcwiECHgIBwBzCIIIhAgHAIQIegh/CAcAhAiCCHoIBwBxCIUIdAgHAHEIhgiFCAcAdAiHCHYIBwB0CIUIhwgHAIgIcQh3CAcAiAiGCHEIBwCHCHcIdggHAIcIiAh3CAcAiQiFCIYIBwCJCIoIhQgHAIoIbghtCAcAigiJCG4IBwCLCG0IcAgHAIsIightCAcAjAiGCIgIBwCMCIkIhggHAIkIbwhuCAcAiQiMCG8IBwCLCIgIhwgHAIsIjAiICAcAjAhwCG8IBwCMCIsIcAgHAI0IjgiPCAcAjQiQCI4IBwCRCI8IkggHAJEIjQiPCAcAjwiTCJIIBwCPCI4IkwgHAI4IlAiTCAcAjgiQCJQIBwCRCJAIjQgHAJEIlAiQCAcAlQiWCJcIBwCVCJgIlggHAJkImAiVCAcAmQiaCJgIBwCbCJkInAgHAJsImgiZCAcAlgicCJcIBwCWCJsInAgHAJ0IngifCAcAnQigCJ4IBwCfCKEIoggHAJ8IngihCAcAoQijCKIIBwChCKQIowgHAKQInQijCAcApAigCJ0IBwCXCKUIlQgHAJcIpgilCAcAnwimCJ0IBwCfCKUIpggHAJUIpwiZCAcAlQilCKcIBwCiCKUInwgHAKIIpwilCAcApwicCJkIBwCnCKgInAgHAKMIpwiiCAcAowioCKcIBwCoCJcInAgHAKgIpgiXCAcAnQioCKMIBwCdCKYIqAgHAKkIlgiYCAcAqQiqCJYIBwCrCJgImggHAKsIqQiYCAcAlgisCJsIBwCWCKoIrAgHAJsIqwiaCAcAmwisCKsIBwCpCK0IqggHAKkIrgitCAcAkgiuCJEIBwCSCK0IrggHAJEIrwiUCAcAkQiuCK8IBwCqCLAIrAgHAKoIrQiwCAcAkwitCJIIBwCTCLAIrQgHAKwIrwirCAcArAiwCK8IBwCUCLAIkwgHAJQIrwiwCAcAhQixCLIIBwCFCIoIsQgHAIoIswixCAcAigiLCLMIBwCzCIcItAgHALMIiwiHCAcAtAiFCLIIBwC0CIcIhQgHALUIqwi2CAcAtQipCKsIBwC2CK8ItwgHALYIqwivCAcArwi4CLcIBwCvCK4IuAgHAK4ItQi4CAcArgipCLUIBwCyCLkIuggHALIIsQi5CAcAsQi7CLkIBwCxCLMIuwgHALsItAi8CAcAuwizCLQIBwC8CLIIuggHALwItAiyCAcAvQi2CL4IBwC9CLUItggHAL4Itwi/CAcAvgi2CLcIBwC3CMAIvwgHALcIuAjACAcAuAi9CMAIBwC4CLUIvQgHAMEIfAh5CAcAwQjCCHwIBwDDCHkIfQgHAMMIwQh5CAcAxAh9CIAIBwDECMMIfQgHAMIIgAh8CAcAwgjECIAIBwDFCJ4IoAgHAMUIxgieCAcAxgihCJ4IBwDGCMcIoQgHAMcIpAihCAcAxwjICKQIBwDICKAIpAgHAMgIxQigCAcAyQjCCMEIBwDJCMoIwggHAMoISwhMCAcAygjJCEsIBwDJCE0ISwgHAMkIywhNCAcAzAjDCMQIBwDMCMsIwwgHAMsIUAhNCAcAywjMCFAIBwDKCMQIwggHAMoIzAjECAcAzAhMCFAIBwDMCMoITAgHAMUIzQjGCAcAxQjOCM0IBwDNCFMIVAgHAM0IzghTCAcAzwhUCFYIBwDPCM0IVAgHAMcI0AjICAcAxwjPCNAIBwDQCFYIWAgHANAIzwhWCAcAyAjOCMUIBwDICNAIzggHAM4IWAhTCAcAzgjQCFgIBwDRCMsI0ggHANEIwwjLCAcA0gjJCNMIBwDSCMsIyQgHAMkI1AjTCAcAyQjBCNQIBwDBCNEI1AgHAMEIwwjRCAcAxwjVCNYIBwDHCMYI1QgHANUIzQjXCAcA1QjGCM0IBwDXCM8I2AgHANcIzQjPCAcAzwjWCNgIBwDPCMcI1ggHANkI0gjaCAcA2QjRCNIIBwDaCNMI2wgHANoI0gjTCAcA0wjcCNsIBwDTCNQI3AgHANQI2QjcCAcA1AjRCNkIBwDWCN0I3ggHANYI1QjdCAcA3QjXCN8IBwDdCNUI1wgHAN8I2AjgCAcA3wjXCNgIBwDYCN4I4AgHANgI1gjeCAcA4QjiCOMIBwDhCOQI4ggHAE4D4whNAwcATgPhCOMIBwDjCFIDTQMHAOMI4ghSAwcA4ghQA1IDBwDiCOQIUAMHAE4D5AjhCAcATgNQA+QIBwA9A0QDOwMHAD0DRQNEAwcAQANFAz0DBwBAA0gDRQMHAEoDQANBAwcASgNIA0ADBwBEA0EDOwMHAEQDSgNBAwcAOQOwAa0BBwA5AzoDsAEHAKMBUQFdAQcAowGkAVEBBwADAqQBowEHAAMCAQKkAQcAMgIBAgMCBwAyAjACAQIHAD0CDAIOAgcAPQI7AgwCBwCRAc0BlQEHAJEBlAHNAQcAlQHQAZoBBwCVAc0B0AEHAA4CmAGaAQcADgIMApgBBwDlCOYI5wgHAOUI6AjmCAcA6QjqCOsIBwDpCOwI6ggHAOsI7QjuCAcA6wjqCO0IBwDuCO8I8AgHAO4I7QjvCAcA8AjxCPIIBwDwCO8I8QgHAOUI8wj0CAcA5QjnCPMIBwDqCPUI9ggHAOoI7Aj1CAcA7Qj2CPcIBwDtCOoI9ggHAO8I9wj4CAcA7wjtCPcIBwDxCPgI+QgHAPEI7wj4CAcA6Aj6CPsIBwDoCOUI+ggHAOkI+gjsCAcA6Qj7CPoIBwDsCPwI9QgHAOwI+gj8CAcA+gj0CPwIBwD6COUI9AgHAP0I/gj/CAcA/QgACf4IBwD/CAEJAgkHAP8I/ggBCQcAAwkECQUJBwADCQYJBAkHAP4IBwkICQcA/ggACQcJBwABCQgJCQkHAAEJ/ggICQcACgkLCQwJBwAKCQ0JCwkHAA4JCQkPCQcADgkBCQkJBwANCQ8JCwkHAA0JDgkPCQcADgkCCQEJBwAOCRAJAgkHAAYJEQkSCQcABgkDCREJBwATCRQJFQkHABMJFgkUCQcAFgkXCRQJBwAWCRgJFwkHABcJGQkaCQcAFwkYCRkJBwAaCQoJGwkHABoJGQkKCQcAHAkMCR0JBwAcCQoJDAkHAOgIHQnmCAcA6AgcCR0JBwAcCRsJCgkHABwJHgkbCQcA6AgeCRwJBwDoCPsIHgkHAB4JGgkbCQcAHgkfCRoJBwD7CB8JHgkHAPsI6QgfCQcAHwkXCRoJBwAfCSAJFwkHAOkIIAkfCQcA6QjrCCAJBwAgCRQJFwkHACAJIQkUCQcA6wghCSAJBwDrCO4IIQkHACEJFQkUCQcAIQkiCRUJBwDuCCIJIQkHAO4I8AgiCQcAIwkkCSUJBwAjCSYJJAkHACYJ8AgkCQcAJgkiCfAIBwAnCfAI8ggHACcJJAnwCAcA8ggoCSkJBwDyCPEIKAkHACUJJwkqCQcAJQkkCScJBwApCScJ8ggHACkJKwknCQcAIwkiCSYJBwAjCSwJIgkHACIJEwkVCQcAIgksCRMJBwApCS0JLgkHACkJKAktCQcA+QgoCfEIBwD5CC8JKAkHACkJMAkrCQcAKQkuCTAJBwD5CDEJLwkHAPkIMgkxCQcA+AgyCfkIBwD4CDMJMgkHAPcIMwn4CAcA9wg0CTMJBwD2CDQJ9wgHAPYINQk0CQcA9Qg1CfYIBwD1CDYJNQkHAPwINgn1CAcA/Ag3CTYJBwD0CDcJ/AgHAPQIOAk3CQcA8wg4CfQIBwDzCDkJOAkHAOYIOgnnCAcA5gg7CToJBwAdCTsJ5ggHAB0JPAk7CQcADAk8CR0JBwAMCT0JPAkHAAsJPQkMCQcACwk+CT0JBwAPCT4JCwkHAA8JPwk+CQcACQk/CQ8JBwAJCUAJPwkHAAgJQAkJCQcACAlBCUAJBwAHCUEJCAkHAAcJQglBCQcAMQkoCS8JBwAxCS0JKAkHAEMJRAkZCQcAQwlFCUQJBwBGCUUJQwkHAEYJRwlFCQcARQkQCUQJBwBFCUgJEAkHAEcJSAlFCQcARwlJCUgJBwBICQIJEAkHAEgJSgkCCQcASQlKCUgJBwBJCUsJSgkHAEoJ/wgCCQcASglMCf8IBwBLCUwJSgkHAEsJTQlMCQcATAn9CP8IBwBMCU4J/QgHAE0JTglMCQcATQlPCU4JBwBQCRkJGAkHAFAJQwkZCQcAUQlDCVAJBwBRCUYJQwkHAFIJGAkWCQcAUglQCRgJBwBTCVAJUgkHAFMJUQlQCQcAVAkWCRMJBwBUCVIJFgkHAFUJUglUCQcAVQlTCVIJBwBWCRMJLAkHAFYJVAkTCQcAVwlUCVYJBwBXCVUJVAkHAFgJLAkjCQcAWAlWCSwJBwBZCVYJWAkHAFkJVwlWCQcAWgkjCSUJBwBaCVgJIwkHAFsJWAlaCQcAWwlZCVgJBwBcCSUJKgkHAFwJWgklCQcAXQlaCVwJBwBdCVsJWgkHAF4JKglfCQcAXglcCSoJBwBgCVwJXgkHAGAJXQlcCQcAYQlfCWIJBwBhCV4JXwkHAGMJXglhCQcAYwlgCV4JBwBPCWQJZQkHAE8JTQlkCQcASwlkCU0JBwBLCWYJZAkHAEkJZglLCQcASQlnCWYJBwBHCWcJSQkHAEcJaAlnCQcARgloCUcJBwBGCWkJaAkHAFcJaglVCQcAVwlrCWoJBwBZCWsJVwkHAFkJbAlrCQcAWwlsCVkJBwBbCW0JbAkHAF0JbQlbCQcAXQluCW0JBwBgCW4JXQkHAGAJbwluCQcAYwlvCWAJBwBjCXAJbwkHAFEJaQlGCQcAUQlxCWkJBwBTCXEJUQkHAFMJcglxCQcAVQlyCVMJBwBVCWoJcgkHAHMJbAltCQcAcwl0CWwJBwB0CWsJbAkHAHQJdQlrCQcAdQlqCWsJBwB1CXYJagkHAHYJcglqCQcAdgl3CXIJBwB3CXEJcgkHAHcJeAlxCQcAeAlpCXEJBwB4CXkJaQkHAHkJaAlpCQcAeQl6CWgJBwB6CWcJaAkHAHoJewlnCQcAewlmCWcJBwB7CXwJZgkHAHwJZAlmCQcAfAl9CWQJBwB9CWUJZAkHAH0JfgllCQcAfwltCW4JBwB/CXMJbQkHAIAJbglvCQcAgAl/CW4JBwCBCW8JcAkHAIEJgAlvCQcAfQmCCX4JBwB9CYMJggkHAHwJgwl9CQcAfAmECYMJBwB+CYUJZQkHAH4JggmFCQcAZQmGCU8JBwBlCYUJhgkHAE8JhwlOCQcATwmGCYcJBwBOCYgJ/QgHAE4JhwmICQcA/QiJCQAJBwD9CIgJiQkHAAAJigkHCQcAAAmJCYoJBwAHCYsJQgkHAAcJigmLCQcAQgmMCUEJBwBCCYsJjAkHAEEJjQlACQcAQQmMCY0JBwBACY4JPwkHAEAJjQmOCQcAPwmPCT4JBwA/CY4JjwkHAD4JkAk9CQcAPgmPCZAJBwA9CZEJPAkHAD0JkAmRCQcAPAmSCTsJBwA8CZEJkgkHADsJkwk6CQcAOwmSCZMJBwA5CZQJOAkHADkJlQmUCQcAOAmWCTcJBwA4CZQJlgkHADcJlwk2CQcANwmWCZcJBwA2CZgJNQkHADYJlwmYCQcANQmZCTQJBwA1CZgJmQkHADQJmgkzCQcANAmZCZoJBwAzCZsJMgkHADMJmgmbCQcAMgmcCTEJBwAyCZsJnAkHADEJnQktCQcAMQmcCZ0JBwAtCZ4JLgkHAC0JnQmeCQcAMAmfCWIJBwAwCaAJnwkHAGIJoQlhCQcAYgmfCaEJBwBhCaIJYwkHAGEJoQmiCQcAYwmjCXAJBwBjCaIJowkHAHAJpAmBCQcAcAmjCaQJBwCBCaUJgAkHAIEJpAmlCQcAgAmmCX8JBwCACaUJpgkHAH8JpwlzCQcAfwmmCacJBwBzCagJdAkHAHMJpwmoCQcAdAmpCXUJBwB0CagJqQkHAHUJqgl2CQcAdQmpCaoJBwB2CasJdwkHAHYJqgmrCQcAdwmsCXgJBwB3CasJrAkHAHgJrQl5CQcAeAmsCa0JBwB5Ca4JegkHAHkJrQmuCQcAegmvCXsJBwB6Ca4JrwkHAHsJhAl8CQcAewmvCYQJBwCDCbAJggkHAIMJsQmwCQcAhAmxCYMJBwCECbIJsQkHAIIJswmFCQcAggmwCbMJBwCvCbIJhAkHAK8JtAmyCQcAhQm1CYYJBwCFCbMJtQkHAIYJtgmHCQcAhgm1CbYJBwCHCbcJiAkHAIcJtgm3CQcAiAm4CYkJBwCICbcJuAkHAIkJuQmKCQcAiQm4CbkJBwCKCboJiwkHAIoJuQm6CQcAiwm7CYwJBwCLCboJuwkHAIwJvAmNCQcAjAm7CbwJBwCNCb0JjgkHAI0JvAm9CQcAjgm+CY8JBwCOCb0JvgkHAI8JvwmQCQcAjwm+Cb8JBwCQCcAJkQkHAJAJvwnACQcAkQnBCZIJBwCRCcAJwQkHAJIJwgmTCQcAkgnBCcIJBwCVCcMJlAkHAJUJxAnDCQcAlAnFCZYJBwCUCcMJxQkHAJYJxgmXCQcAlgnFCcYJBwCXCccJmAkHAJcJxgnHCQcAmAnICZkJBwCYCccJyAkHAJkJyQmaCQcAmQnICckJBwCaCcoJmwkHAJoJyQnKCQcAmwnLCZwJBwCbCcoJywkHAJwJzAmdCQcAnAnLCcwJBwCdCc0JngkHAJ0JzAnNCQcAoAnOCZ8JBwCgCc8JzgkHAJ8J0AmhCQcAnwnOCdAJBwChCdEJogkHAKEJ0AnRCQcAognSCaMJBwCiCdEJ0gkHAKMJ0wmkCQcAownSCdMJBwCkCdQJpQkHAKQJ0wnUCQcApQnVCaYJBwClCdQJ1QkHAKYJ1gmnCQcApgnVCdYJBwCnCdcJqAkHAKcJ1gnXCQcAqAnYCakJBwCoCdcJ2AkHAKkJ2QmqCQcAqQnYCdkJBwCqCdoJqwkHAKoJ2QnaCQcAqwnbCawJBwCrCdoJ2wkHAKwJ3AmtCQcArAnbCdwJBwCtCd0JrgkHAK0J3AndCQcArgm0Ca8JBwCuCd0JtAkHAN4JDQkKCQcA3gnfCQ0JBwAECd8J3gkHAAQJBgnfCQcA3wkOCQ0JBwDfCeAJDgkHAAYJ4AnfCQcABgkSCeAJBwDgCRAJDgkHAOAJ4QkQCQcAEgnhCeAJBwASCREJ4QkHAOEJRAkQCQcA4QniCUQJBwARCeIJ4QkHABEJAwniCQcA4gkZCUQJBwDiCeMJGQkHAAMJ4wniCQcAAwkFCeMJBwDjCQoJGQkHAOMJ3gkKCQcABQneCeMJBwAFCQQJ3gkHAOcIOQnzCAcA5wg6CTkJBwA6CZUJOQkHADoJkwmVCQcAkwnECZUJBwCTCcIJxAkHAJ4JzwmgCQcAngnNCc8JBwBfCScJKwkHAF8JKgknCQcAYgkrCTAJBwBiCV8JKwkHAC4JoAkwCQcALgmeCaAJBwAwQfMBAAByYXY0LWJsYWNrAPAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8AMEH6GAAAcmF2NC1ib2R5AHQM8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AQACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wIAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/AwAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBOEE4gTjBOQE5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8EAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUlBSYFJwUoBSkFKgUrBSwFLQUuBS8FMAUxBTIFMwU0BTUFNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFZgVnBWgFaQUUBxUHFgcXBxgHGQcaBxsHHAcdBx4HHwcgByEHIgcjByQHJQcmBycHKAcpByoHKwcsBy0HLgcvBzAHMQcyBzMHNAc1BzYHNwc4BzkHOgc7BzwHPQc+Bz8HQAdBB0IHQwdEB0UHRgdHB0gHSQdKB0sHTAdNB04HTwdQB1EHUgdTB1QHVQdWB1cHWAdZB1oHWwdcB10HXgdfB2AHYQdiB2MHZAdlB2YHZwdoB2kHagdrB2wHbQduB28HcAdxB3IHcwd0B3UHdgd3B3gHeQd6B3sHfAd9B34HfweAB4EHggeDB4QHhQeGB4cHiAeJB4oHiweMB40HjgePB5AHkQeSB5MHlAeVB5YHlwewB7EHsgezB7QHtQe2B7cHuAe5B7oHuwe8B70Hvge/B8AHwQfCB8MHxAfFB8YHxwfIB8kHygfLB8wHzQfOB88H0AfRB9IH0wfUB9UH1gfXB9gH2QfaB9sH3AfdB94H3wfgB+EH4gfjB+QH5QfmB+cH6AfpB+oH6wfsB+0H7gfvB/AH8QfyB/MH9Af1B/YH9wf4B/kH+gf7B/wH/Qf+B/8HAAgBCAIIAwgECAUIBggHCAgICQgKCAsIDAgNCA4IDwgQCBEIEggTCBQIFQgWCBcIGAgZCBoIGwgcCB0IHggfCCAIIQgiCCMIJAglCCYIJwgoCCkIKggrCCwILQguCC8IMAgxCDIIMwg0CDUINgg3CDgIOQg6CDsIPAg9CD4IPwhACEEIQghDCEQIRQhGCEcISAhJCEoISwhMCE0ITghPCFAIUQhSCFMIVAhVCFYIVwhYCFkIWghbCFwIXQheCF8IYAhhCGIIYwhkCGUIZghnCGgIaQhqCGsIbAhtCG4IbwhwCHEIcghzCHQIdQh2CHcIeAh5CHoIewh8CH0Ifgh/CIAIgQiCCIMIhAiFCIYIhwiICIkIigiLCIwIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJgImQiaCJsInAidCJ4InwigCKEIogijCKQIpQimCKcIqAipCKoIqwisCK0IrgivCLAIsQiyCLMItAi1CLYItwi4CLkIugi7CLwIvQi+CL8IwAjBCMIIwwjECMUIxgjHCMgIyQjKCMsIzAjNCM4IzwjQCNEI0gjTCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjfCOAI4QjiCOMI5AjlCOYI5wjoCOkI6gjrCOwI7QjuCO8I8AjxCPII8wj0CPUI9gj3CPgI+Qj6CPsI/Aj9CP4I/wgACQEJAgkDCQQJBQkGCQcJCAkJCQoJCwkMCQ0JDgkPCRAJEQkSCRMJFAkVCRYJFwkYCRkJGgkbCRwJHQkeCR8JIAkhCSIJIwkkCSUJJgknCSgJKQkqCSsJLAktCS4JLwkwCTEJMgkzCTQJNQk2CTcJOAk5CToJOwk8CT0JPgk/CUAJQQlCCUMJRAlFCUYJRwlICUkJSglLCUwJTQlOCU8JUAlRCVIJUwlUCVUJVglXCVgJWQlaCVsJXAldCV4JXwlgCWEJYgljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJdAl1CXYJdwl4CXkJegl7CXwJfQl+CX8JgAmBCYIJgwmECYUJhgmHCYgJiQmKCYsJjAmNCY4JjwmQCZEJkgmTCZQJlQmWCZcJmAmZCZoJmwmcCZ0JngmfCaAJoQmiCaMJpAmlCaYJpwmoCakJqgmrCawJrQmuCa8JsAmxCbIJswm0CbUJtgm3CbgJuQm6CbsJvAm9Cb4JvwnACcEJwgnDCcQJxQnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCdwJ3QneCd8J4AnhCeIJ4wnkCeUJ5gnnCegJ6QnqCesJ7AntCe4J7wnwCfEJ8gnzCfQJ9Qn2CfcJ+An5CfoJ+wn8Cf0J/gn/CQAKAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUKFgoXChgKGQoaChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoyCjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KQApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4KTwpQClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpfCmAKYQpiCmMKZAplCmYKZwpoCmkKagprCmwKbQpuCm8KcApxCnIKcwp0CnUKdgp3CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqGCocKiAqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqkCqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrgCuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4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MgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGWQZaBlsGXAZdBl4GXwZgBmEGYgZjBmQGZQZmBmcGaAZpBmoGawZsBm0GbgZvBnAGcQZyBnMGdAZ1BnYGdwZ4BnkGegZ7BnwGfQZ+Bn8GgAaBBoIGgwaEBoUGhgaHBogGiQaKBosGjAaNBo4GjwaQBpEGkgaTBpQGlQaWBpcGmAaZBpoGmwacBp0GngafBqAGoQaiBqMGpAalBqYGpwaoBqkGqgarBqwGrQauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6BrsGvAa9Br4GvwbABsEGwgbDBsQGxQbGBscGyAbJBsoGywbMBs0GzgbPBtAG0QbSBtMG1AbVBtYG1wbYBtkG2gbbBtwG3QbeBt8G4AbhBuIG4wbkBuUG5gbnBugG6QbqBusG7AbtBu4G7wbwBvEG8gbzBvQG9Qb2BvcG+Ab5BvoG+wb8Bv0G/gb/BgAHAQcCBwMHBAcFBwYHBwcIBwkHCgcLBwwHDQcOBw8HEAcRBxIHEweYB5kHmgebB5wHnQeeB58HoAehB6IHowekB6UHpgenB6gHqQeqB6sHrAetB64HrwfUDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsO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AAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAQOafAQBUb3lvdGFfUkE3AABB1Z8BABBBrGoAAOMI5DD9QSWPX8K798fBvHEJ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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA9AAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAIABAAFAAcAAgABAAQABwAFAAYABwAHAAUABAAGAAcABwAIAAkABwAHAAYACAAHAAkACgALAAcACQAIAAoABwALAAwADQAHAAsACgAMAAcADQAOAA8ABwANAAwADgAHAA8AEAARAAcADwAOABAABwARABIAEwAHABEAEAASAAcAEwAUABUABwATABIAFAAHABUAFgAXAAcAFQAUABYABwAXABgAGQAHABcAFgAYAAcAGQAaABsABwAZABgAGgAHABsAHAAdAAcAGwAaABwABwAcAB4AHQAHABwAHwAeAAcAHwAgAB4ABwAfACEAIAAHACEAIgAgAAcAIQAjACIABwAjACQAIgAHACMAJQAkAAcAJQAmACQABwAlACcAJgAHACcAKAAmAAcAJwApACgABwApACoAKAAHACkAKwAqAAcAKwAsACoABwArAC0ALAAHAC0ALgAsAAcALQAvAC4ABwAvADAALgAHAC8AMQAwAAcAMQAyADAABwAxADMAMgAHADMANAAyAAcAMwA1ADQABwA1ADYANAAHADUANwA2AAcANwA4ADYABwA3ADkAOAAHADkAOgA4AAcAOQA7ADoABwA7ADwAOgAHADsAPQA8AAcAPQA+ADwABwA9AD8APgAHAD8AQAA+AAcAPwBBAEAABwBBAEIAQAAHAEEAQwBCAAcAQwBEAEIABwBDAEUARAAHAEUARgBEAAcARQBHAEYABwBHAEgARgAHAEcASQBIAAcASQBKAEgABwBJAEsASgAHAEsATABKAAcASwBNAEwABwBNAE4ATAAHAE0ATwBOAAcATgBQAFEABwBOAE8AUAAHAFEAUgBTAAcAUQBQAFIABwBTAFQAVQAHAFMAUgBUAAcAVQBWAFcABwBVAFQAVgAHAFcAWABZAAcAVwBWAFgABwBZAFoAWwAHAFkAWABaAAcAWwBcAF0ABwBbAFoAXAAHAF0AXgBfAAcAXQBcAF4ABwBfAGAAYQAHAF8AXgBgAAcAYQBiAGMABwBhAGAAYgAHAGMAAwAAAAcAYwBiAAMABwADAGQAAQAHAAMAZQBkAAcAAQBmAAQABwABAGQAZgAHAAQAZwAGAAcABABmAGcABwAGAGgACAAHAAYAZwBoAAcACABpAAoABwAIAGgAaQAHAAoAagAMAAcACgBpAGoABwAMAGsADgAHAAwAagBrAAcADgBsABAABwAOAGsAbAAHABAAbQASAAcAEABsAG0ABwASAG4AFAAHABIAbQBuAAcAFABvABYABwAUAG4AbwAHABYAcAAYAAcAFgBvAHAABwAYAHEAGgAHABgAcABxAAcAGgByABwABwAaAHEAcgAHAHIAHwAcAAcAcgBzAB8ABwBzACEAHwAHAHMAdAAhAAcAdAAjACEABwB0AHUAIwAHAHUAJQAjAAcAdQB2ACUABwB2ACcAJQAHAHYAdwAnAAcAdwApACcABwB3AHgAKQAHAHgAKwApAAcAeAB5ACsABwB5AC0AKwAHAHkAegAtAAcAegAvAC0ABwB6AHsALwAHAHsAMQAvAAcAewB8ADEABwB8ADMAMQAHAHwAfQAzAAcAfQA1ADMABwB9AH4ANQAHAH4ANwA1AAcAfgB/ADcABwB/ADkANwAHAH8AgAA5AAcAgAA7ADkABwCAAIEAOwAHAIEAPQA7AAcAgQCCAD0ABwCCAD8APQAHAIIAgwA/AAcAgwBBAD8ABwCDAIQAQQAHAIQAQwBBAAcAhACFAEMABwCFAEUAQwAHAIUAhgBFAAcAhgBHAEUABwCGAIcARwAHAIcASQBHAAcAhwCIAEkABwCIAEsASQAHAIgAiQBLAAcAiQBNAEsABwCJAIoATQAHAIoATwBNAAcAigCLAE8ABwBPAIwAUAAHAE8AiwCMAAcAUACNAFIABwBQAIwAjQAHAFIAjgBUAAcAUgCNAI4ABwBUAI8AVgAHAFQAjgCPAAcAVgCQAFgABwBWAI8AkAAHAFgAkQBaAAcAWACQAJEABwBaAJIAXAAHAFoAkQCSAAcAXACTAF4ABwBcAJIAkwAHAF4AlABgAAcAXgCTAJQABwBgAJUAYgAHAGAAlACVAAcAYgBlAAMABwBiAJUAZQAHAGQAlgCXAAcAZABlAJYABwBkAJgAZgAHAGQAlwCYAAcAZgCZAGcABwBmAJgAmQAHAGcAmgBoAAcAZwCZAJoABwBoAJsAaQAHAGgAmgCbAAcAaQCcAGoABwBpAJsAnAAHAGoAnQBrAAcAagCcAJ0ABwBrAJ4AbAAHAGsAnQCeAAcAbACfAG0ABwBsAJ4AnwAHAG0AoABuAAcAbQCfAKAABwBuAKEAbwAHAG4AoAChAAcAbwCiAHAABwBvAKEAogAHAHAAowBxAAcAcACiAKMABwBxAKQAcgAHAHEAowCkAAcApABzAHIABwCkAKUAcwAHAKUAdABzAAcApQCmAHQABwCmAHUAdAAHAKYApwB1AAcApwB2AHUABwCnAKgAdgAHAKgAdwB2AAcAqACpAHcABwCpAHgAdwAHAKkAqgB4AAcAqgB5AHgABwCqAKsAeQAHAKsAegB5AAcAqwCsAHoABwCsAHsAegAHAKwArQB7AAcArQB8AHsABwCtAK4AfAAHAK4AfQB8AAcArgCvAH0ABwCvAH4AfQAHAK8AsAB+AAcAsAB/AH4ABwCwALEAfwAHALIAfwCxAAcAsgCAAH8ABwCzAIAAsgAHALMAgQCAAAcAtACBALMABwC0AIIAgQAHALUAggC0AAcAtQCDAIIABwC2AIMAtQAHALYAhACDAAcAtwCEALYABwC3AIUAhAAHALgAhQC3AAcAuACGAIUABwC5AIYAuAAHALkAhwCGAAcAugCHALkABwC6AIgAhwAHALsAiAC6AAcAuwCJAIgABwC8AIkAuwAHALwAigCJAAcAvQCKALwABwC9AIsAigAHAIwAvQC+AAcAjACLAL0ABwCNAL4AvwAHAI0AjAC+AAcAjgC/AMAABwCOAI0AvwAHAI8AwADBAAcAjwCOAMAABwCQAMEAwgAHAJAAjwDBAAcAkQDCAMMABwCRAJAAwgAHAJIAwwDEAAcAkgCRAMMABwCTAMQAxQAHAJMAkgDEAAcAlADFAMYABwCUAJMAxQAHAJUAxgDHAAcAlQCUAMYABwBlAMcAlgAHAGUAlQDHAAcAxADIAMUABwDEAMkAyAAHAMgAxgDFAAcAyADKAMYABwDKAMcAxgAHAMoAywDHAAcAzACYAJcABwDMAM0AmAAHAM0AmQCYAAcAzQDOAJkABwDOAJoAmQAHAM4AzwCaAAcA0ACdAJwABwDQANEAnQAHANEAngCdAAcA0QDSAJ4ABwDSAJ8AngAHANIA0wCfAAcA1AChANUABwDUAKIAoQAHANYAogDUAAcA1gCjAKIABwDXAKMA1gAHANcApACjAAcA2ACmANkABwDYAKcApgAHANoApwDYAAcA2gCoAKcABwDbAKgA2gAHANsAqQCoAAcA3ACrAN0ABwDcAKwAqwAHAK0A3ADeAAcArQCsANwABwCuAN4A3wAHAK4ArQDeAAcAsQDgAOEABwCxALAA4AAHALIA4QDiAAcAsgCxAOEABwCzAOIA4wAHALMAsgDiAAcAtgDkAOUABwC2ALUA5AAHALcA5QDmAAcAtwC2AOUABwC4AOYA5wAHALgAtwDmAAcAugDoALsABwC6AOkA6AAHALsA6gC8AAcAuwDoAOoABwC8AOsAvQAHALwA6gDrAAcAvwDsAMAABwC/AO0A7AAHAMAA7gDBAAcAwADsAO4ABwDBAO8AwgAHAMEA7gDvAAcAyQDwAMgABwDJAPEA8AAHAPAAygDIAAcA8ADyAMoABwDyAMsAygAHAPIA8wDLAAcA9ADNAMwABwD0APUAzQAHAPUAzgDNAAcA9QD2AM4ABwD2AM8AzgAHAPYA9wDPAAcA+ADRANAABwD4APkA0QAHAPkA0gDRAAcA+QD6ANIABwD6ANMA0gAHAPoA+wDTAAcA/ADVAP0ABwD8ANQA1QAHAP4A1AD8AAcA/gDWANQABwD/ANYA/gAHAP8A1wDWAAcAAAHZAAEBBwAAAdgA2QAHAAIB2AAAAQcAAgHaANgABwADAdoAAgEHAAMB2wDaAAcABAHdAAUBBwAEAdwA3QAHAN4ABAEGAQcA3gDcAAQBBwDfAAYBBwEHAN8A3gAGAQcA4QAIAQkBBwDhAOAACAEHAOIACQEKAQcA4gDhAAkBBwDjAAoBCwEHAOMA4gAKAQcA5QAMAQ0BBwDlAOQADAEHAOYADQEOAQcA5gDlAA0BBwDnAA4BDwEHAOcA5gAOAQcA6QAQAegABwDpABEBEAEHAOgAEgHqAAcA6AAQARIBBwDqABMB6wAHAOoAEgETAQcA7QAUAewABwDtABUBFAEHAOwAFgHuAAcA7AAUARYBBwDuABcB7wAHAO4AFgEXAQcAGAEZAfEABwAYARoBGQEHAPEAGwHwAAcA8QAZARsBBwAbAfIA8AAHABsBHAHyAAcAHAHzAPIABwAcAR0B8wAHAB0BHgHzAAcAHQEfAR4BBwAfAfQAHgEHAB8BIAH0AAcAIAH1APQABwAgASEB9QAHACEB9gD1AAcAIQEiAfYABwAiAfcA9gAHACIBIwH3AAcAIwEkAfcABwAjASUBJAEHACUB+AAkAQcAJQEmAfgABwAmAfkA+AAHACYBJwH5AAcAJwH6APkABwAnASgB+gAHACgB+wD6AAcAKAEpAfsABwApASoB+wAHACkBKwEqAQcALAEqASsBBwAsAf0AKgEHAC0B/QAsAQcALQH8AP0ABwAuAfwALQEHAC4B/gD8AAcALwH+AC4BBwAvAf8A/gAHADAB/wAvAQcAMAExAf8ABwAyATEBMAEHADIBAQExAQcAMwEBATIBBwAzAQABAQEHADQBAAEzAQcANAECAQABBwA1AQIBNAEHADUBAwECAQcANgEDATUBBwA2ATcBAwEHADgBNwE2AQcAOAEFATcBBwA5AQUBOAEHADkBBAEFAQcABgE5AToBBwAGAQQBOQEHAAcBOgE7AQcABwEGAToBBwA8ATsBPQEHADwBBwE7AQcACAE9AT4BBwAIATwBPQEHAAkBPgE/AQcACQEIAT4BBwAKAT8BQAEHAAoBCQE/AQcACwFAAUEBBwALAQoBQAEHAEIBQQFDAQcAQgELAUEBBwAMAUMBRAEHAAwBQgFDAQcADQFEAUUBBwANAQwBRAEHAA4BRQFGAQcADgENAUUBBwAPAUYBRwEHAA8BDgFGAQcADwFIAUkBBwAPAUcBSAEHAEkBSgERAQcASQFIAUoBBwARAUsBEAEHABEBSgFLAQcAEAFMARIBBwAQAUsBTAEHABIBTQETAQcAEgFMAU0BBwATAU4BTwEHABMBTQFOAQcATwFQARUBBwBPAU4BUAEHABUBUQEUAQcAFQFQAVEBBwAUAVIBFgEHABQBUQFSAQcAFgFTARcBBwAWAVIBUwEHABcBGgEYAQcAFwFTARoBBwAZAVQBVQEHABkBGgFUAQcAGwFVAVYBBwAbARkBVQEHAFcBGwFWAQcAVwEcARsBBwBYARwBVwEHAFgBHQEcAQcAWQEdAVgBBwBZAR8BHQEHAFoBHwFZAQcAWgEgAR8BBwBbASABWgEHAFsBIQEgAQcAXAEhAVsBBwBcASIBIQEHAF0BIgFcAQcAXQEjASIBBwBeASMBXQEHAF4BJQEjAQcAXwElAV4BBwBfASYBJQEHAGABJgFfAQcAYAEnASYBBwBhAScBYAEHAGEBKAEnAQcAYgEoAWEBBwBiASkBKAEHAGMBKQFiAQcAYwErASkBBwBjASwBKwEHAGMBZAEsAQcAZAEtASwBBwBkAWUBLQEHAGUBLgEtAQcAZQFmAS4BBwBmAS8BLgEHAGYBZwEvAQcAZwEwAS8BBwBnAWgBMAEHAGgBMgEwAQcAaAFpATIBBwBpATMBMgEHAGkBagEzAQcAagE0ATMBBwBqAWsBNAEHAGsBNQE0AQcAawFsATUBBwBsATYBNQEHAGwBbQE2AQcAbQE4ATYBBwBtAW4BOAEHAG4BOQE4AQcAbgFvATkBBwA5AXABOgEHADkBbwFwAQcAOgFxATsBBwA6AXABcQEHADsBcgE9AQcAOwFxAXIBBwA9AXMBPgEHAD0BcgFzAQcAPgF0AT8BBwA+AXMBdAEHAD8BdQFAAQcAPwF0AXUBBwBAAXYBQQEHAEABdQF2AQcAQQF3AUMBBwBBAXYBdwEHAEMBeAFEAQcAQwF3AXgBBwBEAXkBRQEHAEQBeAF5AQcARQF6AUYBBwBFAXkBegEHAEYBewFHAQcARgF6AXsBBwBIAXsBfAEHAEgBRwF7AQcASgF8AX0BBwBKAUgBfAEHAEsBfQF+AQcASwFKAX0BBwBMAX4BfwEHAEwBSwF+AQcATQF/AYABBwBNAUwBfwEHAE4BgAGBAQcATgFNAYABBwBQAYEBggEHAFABTgGBAQcAUQGCAYMBBwBRAVABggEHAFIBgwGEAQcAUgFRAYMBBwBTAYQBhQEHAFMBUgGEAQcAGgGFAVQBBwAaAVMBhQEHAFUBhgGHAQcAVQFUAYYBBwBWAYcBiAEHAFYBVQGHAQcAiQFWAYgBBwCJAVcBVgEHAIoBVwGJAQcAigFYAVcBBwCLAVgBigEHAIsBWQFYAQcAjAFZAYsBBwCMAVoBWQEHAI0BWgGMAQcAjQFbAVoBBwCOAVsBjQEHAI4BXAFbAQcAjwFcAY4BBwCPAV0BXAEHAJABXQGPAQcAkAFeAV0BBwCRAV4BkAEHAJEBXwFeAQcAkgFfAZEBBwCSAWABXwEHAJMBYAGSAQcAkwFhAWABBwCUAWEBkwEHAJQBYgFhAQcAlQFiAZQBBwCVAWMBYgEHAJUBZAFjAQcAlQGWAWQBBwCWAWUBZAEHAJYBlwFlAQcAlwFmAWUBBwCXAZgBZgEHAJgBZwFmAQcAmAGZAWcBBwCZAWgBZwEHAJkBmgFoAQcAmgFpAWgBBwCaAZsBaQEHAJsBagFpAQcAmwGcAWoBBwCcAWsBagEHAJwBnQFrAQcAnQFsAWsBBwCdAZ4BbAEHAJ4BbQFsAQcAngGfAW0BBwCfAW4BbQEHAJ8BoAFuAQcAoAFvAW4BBwCgAaEBbwEHAG8BogFwAQcAbwGhAaIBBwBwAaMBcQEHAHABogGjAQcAcQGkAXIBBwBxAaMBpAEHAHIBpQFzAQcAcgGkAaUBBwBzAaYBdAEHAHMBpQGmAQcAdAGnAXUBBwB0AaYBpwEHAHUBqAF2AQcAdQGnAagBBwB2AakBdwEHAHYBqAGpAQcAdwGqAXgBBwB3AakBqgEHAHgBqwF5AQcAeAGqAasBBwB5AawBegEHAHkBqwGsAQcAegGtAXsBBwB6AawBrQEHAHwBrQGuAQcAfAF7Aa0BBwB9Aa4BrwEHAH0BfAGuAQcAfgGvAbABBwB+AX0BrwEHAH8BsAGxAQcAfwF+AbABBwCAAbEBsgEHAIABfwGxAQcAgQGyAbMBBwCBAYABsgEHAIIBswG0AQcAggGBAbMBBwCDAbQBtQEHAIMBggG0AQcAhAG1AbYBBwCEAYMBtQEHAIUBtgG3AQcAhQGEAbYBBwBUAbcBhgEHAFQBhQG3AQcAhwG4AbkBBwCHAYYBuAEHAIgBuQG6AQcAiAGHAbkBBwC7AYgBugEHALsBiQGIAQcAvAGJAbsBBwC8AYoBiQEHAL0BigG8AQcAvQGLAYoBBwC+AYsBvQEHAL4BjAGLAQcAvwGMAb4BBwC/AY0BjAEHAMABjQG/AQcAwAGOAY0BBwDBAY4BwAEHAMEBjwGOAQcAwgGPAcEBBwDCAZABjwEHAMMBkAHCAQcAwwGRAZABBwDEAZEBwwEHAMQBkgGRAQcAxQGSAcQBBwDFAZMBkgEHAMYBkwHFAQcAxgGUAZMBBwDHAZQBxgEHAMcBlQGUAQcAxwGWAZUBBwDHAcgBlgEHAMgBlwGWAQcAyAHJAZcBBwDJAZgBlwEHAMkBygGYAQcAygGZAZgBBwDKAcsBmQEHAMsBmgGZAQcAywHMAZoBBwDMAZsBmgEHAMwBzQGbAQcAzQGcAZsBBwDNAc4BnAEHAM4BnQGcAQcAzgHPAZ0BBwDPAZ4BnQEHAM8B0AGeAQcA0AGfAZ4BBwDQAdEBnwEHANEBoAGfAQcA0QHSAaABBwDSAaEBoAEHANIB0wGhAQcAoQHUAaIBBwChAdMB1AEHAKIB1QGjAQcAogHUAdUBBwCjAdYBpAEHAKMB1QHWAQcApAHXAaUBBwCkAdYB1wEHAKUB2AGmAQcApQHXAdgBBwCmAdkBpwEHAKYB2AHZAQcApwHaAagBBwCnAdkB2gEHAKgB2wGpAQcAqAHaAdsBBwCpAdwBqgEHAKkB2wHcAQcAqgHdAasBBwCqAdwB3QEHAKsB3gGsAQcAqwHdAd4BBwCsAd8BrQEHAKwB3gHfAQcArgHfAeABBwCuAa0B3wEHAK8B4AHhAQcArwGuAeABBwCwAeEB4gEHALABrwHhAQcAsQHiAeMBBwCxAbAB4gEHALIB4wHkAQcAsgGxAeMBBwCzAeQB5QEHALMBsgHkAQcAtAHlAeYBBwC0AbMB5QEHALUB5gHnAQcAtQG0AeYBBwC2AecB6AEHALYBtQHnAQcAtwHoAekBBwC3AbYB6AEHAIYB6QG4AQcAhgG3AekBBwC4AeoBuQEHALgB6wHqAQcAuQHsAboBBwC5AeoB7AEHAOwBuwG6AQcA7AHtAbsBBwDtAbwBuwEHAO0B7gG8AQcA7gG9AbwBBwDuAe8BvQEHAO8BvgG9AQcA7wHwAb4BBwDwAb8BvgEHAPAB8QG/AQcA8QHAAb8BBwDxAfIBwAEHAPIBwQHAAQcA8gHzAcEBBwDzAcIBwQEHAPMB9AHCAQcA9AHDAcIBBwD0AfUBwwEHAPUBxAHDAQcA9QH2AcQBBwD2AcUBxAEHAPYB9wHFAQcA9wHGAcUBBwD3AfgBxgEHAPgBxwHGAQcA+AH5AccBBwD5AcgBxwEHAPkB+gHIAQcA+gHJAcgBBwD6AfsByQEHAPsBygHJAQcA+wH8AcoBBwD8AcsBygEHAPwB/QHLAQcA/QHMAcsBBwD9Af4BzAEHAP4BzQHMAQcA/gH/Ac0BBwD/Ac4BzQEHAP8BAALOAQcAAALPAc4BBwAAAgECzwEHAAEC0AHPAQcAAQICAtABBwACAtEB0AEHAAICAwLRAQcAAwLSAdEBBwADAgQC0gEHAAQC0wHSAQcABAIFAtMBBwDTAQYC1AEHANMBBQIGAgcA1AEHAtUBBwDUAQYCBwIHANUBCALWAQcA1QEHAggCBwDWAQkC1wEHANYBCAIJAgcA1wEKAtgBBwDXAQkCCgIHANgBCwLZAQcA2AEKAgsCBwDZAQwC2gEHANkBCwIMAgcA2gENAtsBBwDaAQwCDQIHANsBDgLcAQcA2wENAg4CBwDcAQ8C3QEHANwBDgIPAgcA3QEQAt4BBwDdAQ8CEAIHAN4BEQLfAQcA3gEQAhECBwDfARIC4AEHAN8BEQISAgcA4AETAuEBBwDgARICEwIHAOEBFALiAQcA4QETAhQCBwDiARUC4wEHAOIBFAIVAgcA4wEWAuQBBwDjARUCFgIHAOQBFwLlAQcA5AEWAhcCBwDlARgC5gEHAOUBFwIYAgcA5gEZAucBBwDmARgCGQIHAOcBGgLoAQcA5wEZAhoCBwDoARsC6QEHAOgBGgIbAgcA6QHrAbgBBwDpARsC6wEHABwCxAAdAgcAHALJAMQABwDEAB4CHQIHAMQAwwAeAgcAHwLHACACBwAfApYAxwAHAMcAIQIgAgcAxwDLACECBwAiApYAHwIHACIClwCWAAcAIwKXACICBwAjAswAlwAHACQCmgAlAgcAJAKbAJoABwCaACYCJQIHAJoAzwAmAgcAJwKbACQCBwAnApwAmwAHACgCnAAnAgcAKALQAJwABwApAp8AKgIHACkCoACfAAcAnwArAioCBwCfANMAKwIHACwCoAApAgcALAKhAKAABwDVACwCLQIHANUAoQAsAgcALgLXAC8CBwAuAqQA1wAHADACpAAuAgcAMAKlAKQABwAxAqUAMAIHADECpgClAAcA2QAxAjICBwDZAKYAMQIHADMC2wA0AgcAMwKpANsABwA1AqkAMwIHADUCqgCpAAcANgKqADUCBwA2AqsAqgAHAN0ANgI3AgcA3QCrADYCBwA4At8AOQIHADgCrgDfAAcArwA4AjoCBwCvAK4AOAIHALAAOgI7AgcAsACvADoCBwDgADsCPAIHAOAAsAA7AgcAPQLjAD4CBwA9ArMA4wAHALQAPQI/AgcAtACzAD0CBwC1AD8CQAIHALUAtAA/AgcA5ABAAkECBwDkALUAQAIHAEIC5wBDAgcAQgK4AOcABwC5AEICRAIHALkAuABCAgcARQK6AEYCBwBFAukAugAHALoARAJGAgcAugC5AEQCBwC9AEcCSAIHAL0A6wBHAgcAvgBIAkkCBwC+AL0ASAIHAEoCvwBLAgcASgLtAL8ABwC/AEkCSwIHAL8AvgBJAgcAwgBMAk0CBwDCAO8ATAIHAMMATQIeAgcAwwDCAE0CBwBOAskAHAIHAE4C8QDJAAcATwLxAE4CBwBPAhgB8QAHAPMAUAJRAgcA8wAeAVACBwDLAFECIQIHAMsA8wBRAgcAUgLMACMCBwBSAvQAzAAHAB4BUgJQAgcAHgH0AFICBwD3AFMCVAIHAPcAJAFTAgcAzwBUAiYCBwDPAPcAVAIHAFUC0AAoAgcAVQL4ANAABwAkAVUCUwIHACQB+ABVAgcA+wBWAlcCBwD7ACoBVgIHANMAVwIrAgcA0wD7AFcCBwD9AC0CWAIHAP0A1QAtAgcAKgFYAlYCBwAqAf0AWAIHAC8C/wBZAgcALwLXAP8ABwD/AFoCWQIHAP8AMQFaAgcAAQEyAlsCBwABAdkAMgIHADEBWwJaAgcAMQEBAVsCBwA0AgMBXAIHADQC2wADAQcAAwFdAlwCBwADATcBXQIHAAUBNwJeAgcABQHdADcCBwA3AV4CXQIHADcBBQFeAgcAXwI8AWACBwBfAgcBPAEHADkCBwFfAgcAOQLfAAcBBwBgAggBYQIHAGACPAEIAQcACAE8AmECBwAIAeAAPAIHAGICQgFjAgcAYgILAUIBBwA+AgsBYgIHAD4C4wALAQcAYwIMAWQCBwBjAkIBDAEHAAwBQQJkAgcADAHkAEECBwBlAkkBZgIHAGUCDwFJAQcAQwIPAWUCBwBDAucADwEHAGcC6QBFAgcAZwIRAekABwBmAhEBZwIHAGYCSQERAQcAaAJPAWkCBwBoAhMBTwEHAOsAaAJHAgcA6wATAWgCBwBqAu0ASgIHAGoCFQHtAAcAaQIVAWoCBwBpAk8BFQEHAGsCGAFPAgcAawIXARgBBwDvAGsCTAIHAO8AFwFrAgcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHwCdwJ0AgcAfAJ9AncCBwB7An4CeQIHAHsCfwJ+AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCIAoMCgAIHAIgCiQKDAgcAhwKKAoUCBwCHAosCigIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAjgKUApUCBwCOAo0ClAIHAJYCkgKXAgcAlgKQApICBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAJoCoAKhAgcAmgKZAqACBwCiAp4CowIHAKICnAKeAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCmAqwCrQIHAKYCpQKsAgcArgKqAq8CBwCuAqgCqgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAsgK4ArkCBwCyArECuAIHALoCtgK7AgcAugK0ArYCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAL4CxALFAgcAvgK9AsQCBwDGAsICxwIHAMYCwALCAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDQAssCyAIHANAC0QLLAgcAzwLSAs0CBwDPAtMC0gIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA3ALXAtQCBwDcAt0C1wIHANsC3gLZAgcA2wLfAt4CBwBuAuAC4QIHAG4CbQLgAgcA4gJyAuMCBwDiAnACcgIHAOQC4gLlAgcA5AJwAuICBwDmAnAC5AIHAOYCcwJwAgcA5wJzAuYCBwDnAngCcwIHAOgCeALnAgcA6AJ7AngCBwDpAnsC6AIHAOkCfwJ7AgcA6gJ/AukCBwDqAoQCfwIHAOsChALqAgcA6wKHAoQCBwDsAocC6wIHAOwCiwKHAgcA7QKLAuwCBwDtAo8CiwIHAI0C7QLuAgcAjQKPAu0CBwCUAu4C7wIHAJQCjQLuAgcAmwLvAvACBwCbApQC7wIHAJkC8ALxAgcAmQKbAvACBwCgAvEC8gIHAKACmQLxAgcApwLyAvMCBwCnAqAC8gIHAKUC8wL0AgcApQKnAvMCBwCsAvQC9QIHAKwCpQL0AgcAswL1AvYCBwCzAqwC9QIHALEC9gL3AgcAsQKzAvYCBwC4AvcC+AIHALgCsQL3AgcAvwL4AvkCBwC/ArgC+AIHAL0C+QL6AgcAvQK/AvkCBwDEAvoC+wIHAMQCvQL6AgcAzAL7AvwCBwDMAsQC+wIHAP0CzAL8AgcA/QLPAswCBwD+As8C/QIHAP4C0wLPAgcA/wLTAv4CBwD/AtgC0wIHAAAD2AL/AgcAAAPbAtgCBwABA9sCAAMHAAED3wLbAgcA5QLfAgEDBwDlAuIC3wIHAAID5ALlAgcAAgMDA+QCBwADA+YC5AIHAAMDBAPmAgcABQPmAgQDBwAFA+cC5gIHAAYD5wIFAwcABgPoAucCBwAHA+gCBgMHAAcD6QLoAgcACAPpAgcDBwAIA+oC6QIHAAkD6gIIAwcACQPrAuoCBwAKA+sCCQMHAAoD7ALrAgcACwPsAgoDBwALA+0C7AIHAO4CCwMMAwcA7gLtAgsDBwDvAgwDDQMHAO8C7gIMAwcA8AINAw4DBwDwAu8CDQMHAPECDgMPAwcA8QLwAg4DBwDyAg8DEAMHAPIC8QIPAwcA8wIQAxEDBwDzAvICEAMHAPQCEQMSAwcA9ALzAhEDBwD0AhMD9QIHAPQCEgMTAwcA9QIUA/YCBwD1AhMDFAMHAPYCFQP3AgcA9gIUAxUDBwD3AhYD+AIHAPcCFQMWAwcA+AIXA/kCBwD4AhYDFwMHAPkCGAP6AgcA+QIXAxgDBwD6AhkD+wIHAPoCGAMZAwcA+wIaA/wCBwD7AhkDGgMHABoD/QL8AgcAGgMbA/0CBwAbA/4C/QIHABsDHAP+AgcAHAP/Av4CBwAcAx0D/wIHAB0DAAP/AgcAHQMeAwADBwAeAwEDAAMHAB4DHwMBAwcAHwPlAgEDBwAfAwID5QIHACADAgMhAwcAIAMDAwIDBwAiAwMDIAMHACIDBAMDAwcAIwMEAyIDBwAjAwUDBAMHACQDBQMjAwcAJAMGAwUDBwAlAwYDJAMHACUDBwMGAwcAJgMHAyUDBwAmAwgDBwMHACcDCAMmAwcAJwMJAwgDBwAoAwkDJwMHACgDCgMJAwcAKQMKAygDBwApAwsDCgMHAAwDKQMqAwcADAMLAykDBwANAyoDKwMHAA0DDAMqAwcADgMrAywDBwAOAw0DKwMHAA8DLAMtAwcADwMOAywDBwAQAy0DLgMHABADDwMtAwcAEQMuAy8DBwARAxADLgMHABIDLwMwAwcAEgMRAy8DBwATAzADMQMHABMDEgMwAwcAFAMxAzIDBwAUAxMDMQMHABUDMgMzAwcAFQMUAzIDBwAWAzMDNAMHABYDFQMzAwcAFwM0AzUDBwAXAxYDNAMHABgDNQM2AwcAGAMXAzUDBwAZAzYDNwMHABkDGAM2AwcAGgM3AzgDBwAaAxkDNwMHADkDGgM4AwcAOQMbAxoDBwA6AxsDOQMHADoDHAMbAwcAOwMcAzoDBwA7Ax0DHAMHADwDHQM7AwcAPAMeAx0DBwA9Ax4DPAMHAD0DHwMeAwcAIQMfAz0DBwAhAwIDHwMHAD4DIQM/AwcAPgMgAyEDBwBAAyADPgMHAEADIgMgAwcAQQMiA0ADBwBBAyMDIgMHAEIDIwNBAwcAQgMkAyMDBwBDAyQDQgMHAEMDJQMkAwcARAMlA0MDBwBEAyYDJQMHAEUDJgNEAwcARQMnAyYDBwBGAycDRQMHAEYDKAMnAwcARwMoA0YDBwBHAykDKAMHACoDRwNIAwcAKgMpA0cDBwArA0gDSQMHACsDKgNIAwcALANJA0oDBwAsAysDSQMHAC0DSgNLAwcALQMsA0oDBwAuA0sDTAMHAC4DLQNLAwcALwNMA00DBwAvAy4DTAMHADADTQNOAwcAMAMvA00DBwAxA04DTwMHADEDMANOAwcAMgNPA1ADBwAyAzEDTwMHADMDUANRAwcAMwMyA1ADBwA0A1EDUgMHADQDMwNRAwcANQNSA1MDBwA1AzQDUgMHADYDUwNUAwcANgM1A1MDBwA3A1QDVQMHADcDNgNUAwcAOANVA1YDBwA4AzcDVQMHAFcDOANWAwcAVwM5AzgDBwBYAzkDVwMHAFgDOgM5AwcAWQM6A1gDBwBZAzsDOgMHAFoDOwNZAwcAWgM8AzsDBwBbAzwDWgMHAFsDPQM8AwcAPwM9A1sDBwA/AyEDPQMHAFwDXQNeAwcAXANfA10DBwBeA2ADYQMHAF4DXQNgAwcAYQNiA2MDBwBhA2ADYgMHAGMDZANlAwcAYwNiA2QDBwBlA2YDZwMHAGUDZANmAwcAZwNoA2kDBwBnA2YDaAMHAGkDagNrAwcAaQNoA2oDBwBrA2wDbQMHAGsDagNsAwcAbANuA20DBwBsA28DbgMHAG8DcANuAwcAbwNxA3ADBwBxA3IDcAMHAHEDcwNyAwcAcwN0A3IDBwBzA3UDdAMHAHUDdgN0AwcAdQN3A3YDBwB3A3gDdgMHAHcDeQN4AwcAeQN6A3gDBwB5A3sDegMHAHsDfAN6AwcAewN9A3wDBwB+A3wDfQMHAH4DfwN8AwcAgAN/A34DBwCAA4EDfwMHAIIDgQOAAwcAggODA4EDBwCEA4MDggMHAIQDhQODAwcAhgOFA4QDBwCGA4cDhQMHAIgDhwOGAwcAiAOJA4cDBwCKA4kDiAMHAIoDiwOJAwcAjAOKA40DBwCMA4sDigMHAI4DjQOPAwcAjgOMA40DBwCQA48DkQMHAJADjgOPAwcAkgORA5MDBwCSA5ADkQMHAJQDkwOVAwcAlAOSA5MDBwCWA5UDlwMHAJYDlAOVAwcAXAOXA18DBwBcA5YDlwMHAF8DmANdAwcAXwOZA5gDBwBdA5oDYAMHAF0DmAOaAwcAYAObA2IDBwBgA5oDmwMHAGYDnANoAwcAZgOdA5wDBwBoA54DagMHAGgDnAOeAwcAagOfA2wDBwBqA54DnwMHAJ8DbwNsAwcAnwOgA28DBwChA3UDcwMHAKEDogN1AwcAogN3A3UDBwCiA6MDdwMHAKMDeQN3AwcAowOkA3kDBwCkA3sDeQMHAKQDpQN7AwcApgN+A6cDBwCmA4ADfgMHAKgDgAOmAwcAqAOCA4ADBwCpA4IDqAMHAKkDhAOCAwcAqgOEA6kDBwCqA4YDhAMHAI0DqwOsAwcAjQOKA6sDBwCPA6wDrQMHAI8DjQOsAwcAkQOtA64DBwCRA48DrQMHAJMDrgOvAwcAkwORA64DBwBfA7ADmQMHAF8DlwOwAwcAmQOxA5gDBwCZA7IDsQMHAJgDswOaAwcAmAOxA7MDBwCaA7QDmwMHAJoDswO0AwcAmwO1A7YDBwCbA7QDtQMHALYDtwOdAwcAtgO1A7cDBwCdA7gDnAMHAJ0DtwO4AwcAnAO5A54DBwCcA7gDuQMHAJ4DugOfAwcAngO5A7oDBwC6A6ADnwMHALoDuwOgAwcAuwO8A6ADBwC7A70DvAMHAL0DoQO8AwcAvQO+A6EDBwC+A6IDoQMHAL4DvwOiAwcAvwOjA6IDBwC/A8ADowMHAMADpAOjAwcAwAPBA6QDBwDBA6UDpAMHAMEDwgOlAwcAwgPDA6UDBwDCA8QDwwMHAMUDwwPEAwcAxQOnA8MDBwDGA6cDxQMHAMYDpgOnAwcAxwOmA8YDBwDHA6gDpgMHAMgDqAPHAwcAyAOpA6gDBwDJA6kDyAMHAMkDqgOpAwcAygOqA8kDBwDKA8sDqgMHAMwDywPKAwcAzAOrA8sDBwCsA8wDzQMHAKwDqwPMAwcArQPNA84DBwCtA6wDzQMHAK4DzgPPAwcArgOtA84DBwCvA88D0AMHAK8DrgPPAwcA0QPQA9IDBwDRA68D0AMHALAD0gPTAwcAsAPRA9IDBwCZA9MDsgMHAJkDsAPTAwcAsgPUA7EDBwCyA9UD1AMHALED1gOzAwcAsQPUA9YDBwCzA9cDtAMHALMD1gPXAwcAtAPYA7UDBwC0A9cD2AMHALUD2QO3AwcAtQPYA9kDBwC3A9oDuAMHALcD2QPaAwcAuAPbA7kDBwC4A9oD2wMHALkD3AO6AwcAuQPbA9wDBwDcA7sDugMHANwD3QO7AwcA3QO9A7sDBwDdA94DvQMHAN4DvgO9AwcA3gPfA74DBwDfA78DvgMHAN8D4AO/AwcA4APAA78DBwDgA+EDwAMHAOEDwQPAAwcA4QPiA8EDBwDiA8IDwQMHAOID4wPCAwcA4wPEA8IDBwDjA+QDxAMHAOUDxAPkAwcA5QPFA8QDBwDmA8UD5QMHAOYDxgPFAwcA5wPGA+YDBwDnA8cDxgMHAOgDxwPnAwcA6APIA8cDBwDpA8gD6AMHAOkDyQPIAwcA6gPJA+kDBwDqA8oDyQMHAOsDygPqAwcA6wPMA8oDBwDNA+sD7AMHAM0DzAPrAwcAzgPsA+0DBwDOA80D7AMHAM8D7QPuAwcAzwPOA+0DBwDQA+4D7wMHANADzwPuAwcA0gPvA/ADBwDSA9AD7wMHANMD8APxAwcA0wPSA/ADBwCyA/ED1QMHALID0wPxAwcA1APyA/MDBwDUA9UD8gMHANYD8wP0AwcA1gPUA/MDBwDXA/QD9QMHANcD1gP0AwcA2AP1A/YDBwDYA9cD9QMHANkD9gP3AwcA2QPYA/YDBwDaA/cD+AMHANoD2QP3AwcA2wP4A/kDBwDbA9oD+AMHANwD+QP6AwcA3APbA/kDBwD7A9wD+gMHAPsD3QPcAwcA/APdA/sDBwD8A94D3QMHAP0D3gP8AwcA/QPfA94DBwD+A98D/QMHAP4D4APfAwcA/wPgA/4DBwD/A+ED4AMHAAAE4QP/AwcAAATiA+EDBwABBOIDAAQHAAEE4wPiAwcAAgTjAwEEBwACBOQD4wMHAAME5AMCBAcAAwTlA+QDBwAEBOUDAwQHAAQE5gPlAwcABQTmAwQEBwAFBOcD5gMHAAYE5wMFBAcABgToA+cDBwAHBOgDBgQHAAcE6QPoAwcACATpAwcEBwAIBOoD6QMHAAkE6gMIBAcACQTrA+oDBwDsAwkECgQHAOwD6wMJBAcA7QMKBAsEBwDtA+wDCgQHAO4DCwQMBAcA7gPtAwsEBwDvAwwEDQQHAO8D7gMMBAcA8AMNBA4EBwDwA+8DDQQHAPEDDgQPBAcA8QPwAw4EBwDVAw8E8gMHANUD8QMPBAcA8wMQBBEEBwDzA/IDEAQHAPQDEQQSBAcA9APzAxEEBwD1AxIEEwQHAPUD9AMSBAcA9gMTBBQEBwD2A/UDEwQHAPcDFAQVBAcA9wP2AxQEBwD4AxUEFgQHAPgD9wMVBAcA+QMWBBcEBwD5A/gDFgQHAPoDFwQYBAcA+gP5AxcEBwAZBPoDGAQHABkE+wP6AwcAGgT7AxkEBwAaBPwD+wMHABsE/AMaBAcAGwT9A/wDBwAcBP0DGwQHABwE/gP9AwcAHQT+AxwEBwAdBP8D/gMHAB4E/wMdBAcAHgQABP8DBwAfBAAEHgQHAB8EAQQABAcAIAQBBB8EBwAgBAIEAQQHACEEAgQgBAcAIQQDBAIEBwAiBAMEIQQHACIEBAQDBAcAIwQEBCIEBwAjBAUEBAQHACQEBQQjBAcAJAQGBAUEBwAlBAYEJAQHACUEBwQGBAcAJgQHBCUEBwAmBAgEBwQHACcECAQmBAcAJwQJBAgEBwAKBCcEKAQHAAoECQQnBAcACwQoBCkEBwALBAoEKAQHAAwEKQQqBAcADAQLBCkEBwANBCoEKwQHAA0EDAQqBAcADgQrBCwEBwAOBA0EKwQHAA8ELAQtBAcADwQOBCwEBwDyAy0EEAQHAPIDDwQtBAcAEAQuBBEEBwAQBC8ELgQHABEEMAQSBAcAEQQuBDAEBwASBDEEEwQHABIEMAQxBAcAEwQyBBQEBwATBDEEMgQHABQEMwQVBAcAFAQyBDMEBwAVBDQEFgQHABUEMwQ0BAcAFgQ1BBcEBwAWBDQENQQHABcENgQYBAcAFwQ1BDYEBwA2BBkEGAQHADYENwQZBAcANwQaBBkEBwA3BDgEGgQHADgEGwQaBAcAOAQ5BBsEBwA5BBwEGwQHADkEOgQcBAcAOgQdBBwEBwA6BDsEHQQHADsEHgQdBAcAOwQ8BB4EBwA8BB8EHgQHADwEPQQfBAcAPQQgBB8EBwA9BD4EIAQHAD8EIAQ+BAcAPwQhBCAEBwBABCEEPwQHAEAEIgQhBAcAQQQiBEAEBwBBBCMEIgQHAEIEIwRBBAcAQgQkBCMEBwBDBCQEQgQHAEMEJQQkBAcARAQlBEMEBwBEBCYEJQQHAEUEJgREBAcARQQnBCYEBwAoBEUERgQHACgEJwRFBAcAKQRGBEcEBwApBCgERgQHACoERwRIBAcAKgQpBEcEBwArBEgESQQHACsEKgRIBAcALARJBEoEBwAsBCsESQQHAC0ESgRLBAcALQQsBEoEBwAQBEsELwQHABAELQRLBAcAeANMBHYDBwB4A00ETAQHAHoDTQR4AwcAegNOBE0EBwB8A04EegMHAHwDTwROBAcAfwNPBHwDBwB/A1AETwQHAIEDUAR/AwcAgQNRBFAEBwCDA1EEgQMHAIMDUgRRBAcAhQNSBIMDBwCFA1MEUgQHAIcDUwSFAwcAhwNUBFMEBwCJA1QEhwMHAIkDVQRUBAcAiwNVBIkDBwCLA1YEVQQHAIwDVgSLAwcAjANXBFYEBwCOA1cEjAMHAI4DWARXBAcAkANYBI4DBwCQA1kEWAQHAJIDWQSQAwcAkgNaBFkEBwCUA1oEkgMHAJQDWwRaBAcAlgNbBJQDBwCWA1wEWwQHAFwDXASWAwcAXANdBFwEBwBeA10EXAMHAF4DXgRdBAcAYQNeBF4DBwBhA18EXgQHAGMDXwRhAwcAYwNgBF8EBwBlA2AEYwMHAGUDYQRgBAcAZwNhBGUDBwBnA2IEYQQHAGkDYgRnAwcAaQNjBGIEBwBrA2MEaQMHAGsDZARjBAcAbQNkBGsDBwBtA2UEZAQHAG4DZQRtAwcAbgNmBGUEBwBwA2YEbgMHAHADZwRmBAcAcgNnBHADBwByA2gEZwQHAHQDaARyAwcAdANpBGgEBwB2A2kEdAMHAHYDTARpBAcAtwJqBK4CBwC3AmsEagQHAGsETgRqBAcAawRNBE4EBwC0AmsEtwIHALQCbARrBAcAbARNBGsEBwBsBEwETQQHALoCbAS0AgcAugJtBGwEBwBtBEwEbAQHAG0EaQRMBAcAwwJtBLoCBwDDAm4EbQQHAG4EaQRtBAcAbgRoBGkEBwDAAm4EwwIHAMACbwRuBAcAbwRoBG4EBwBvBGcEaAQHAMYCbwTAAgcAxgJwBG8EBwBwBGcEbwQHAHAEZgRnBAcAyQJwBMYCBwDJAnEEcAQHAHEEZgRwBAcAcQRlBGYEBwDLAnEEyQIHAMsCcgRxBAcAcgRlBHEEBwByBGQEZQQHANECcgTLAgcA0QJzBHIEBwBzBGQEcgQHAHMEYwRkBAcA1QJzBNECBwDVAnQEcwQHAHQEYwRzBAcAdARiBGMEBwDXAnQE1QIHANcCdQR0BAcAdQRiBHQEBwB1BGEEYgQHAN0CdQTXAgcA3QJ2BHUEBwB2BGEEdQQHAHYEYARhBAcA4AJ2BN0CBwDgAncEdgQHAHcEYAR2BAcAdwRfBGAEBwBtAncE4AIHAG0CeAR3BAcAeARfBHcEBwB4BF4EXwQHAG8CeARtAgcAbwJ5BHgEBwB5BF4EeAQHAHkEXQReBAcAdQJ5BG8CBwB1AnoEeQQHAHoEXQR5BAcAegRcBF0EBwB3AnoEdQIHAHcCewR6BAcAewRcBHoEBwB7BFsEXAQHAH0CewR3AgcAfQJ8BHsEBwB8BFsEewQHAHwEWgRbBAcAgQJ8BH0CBwCBAn0EfAQHAH0EWgR8BAcAfQRZBFoEBwCDAn0EgQIHAIMCfgR9BAcAfgRZBH0EBwB+BFgEWQQHAIkCfgSDAgcAiQJ/BH4EBwB/BFgEfgQHAH8EVwRYBAcAkwJ/BIkCBwCTAoAEfwQHAIAEVwR/BAcAgARWBFcEBwCQAoAEkwIHAJACgQSABAcAgQRWBIAEBwCBBFUEVgQHAJYCgQSQAgcAlgKCBIEEBwCCBFUEgQQHAIIEVARVBAcAnwKCBJYCBwCfAoMEggQHAIMEVASCBAcAgwRTBFQEBwCcAoMEnwIHAJwChASDBAcAhARTBIMEBwCEBFIEUwQHAKIChAScAgcAogKFBIQEBwCFBFIEhAQHAIUEUQRSBAcAqwKFBKICBwCrAoYEhQQHAIYEUQSFBAcAhgRQBFEEBwCoAoYEqwIHAKgChwSGBAcAhwRQBIYEBwCHBE8EUAQHAK4ChwSoAgcArgJqBIcEBwBqBE8EhwQHAGoETgRPBAcAiARzAngCBwCIBIkEcwIHAG8CiAR1AgcAbwKJBIgEBwCKBH8ChAIHAIoEiwR/AgcAfQKKBIECBwB9AosEigQHAI8CjASLAgcAjwKNBIwEBwCJAo0EkwIHAIkCjASNBAcAmwKOBJQCBwCbAo8EjgQHAJYCjwSfAgcAlgKOBI8EBwCnApAEoAIHAKcCkQSQBAcAogKRBKsCBwCiApAEkQQHALMCkgSsAgcAswKTBJIEBwCuApMEtwIHAK4CkgSTBAcAvwKUBLgCBwC/ApUElAQHALoClQTDAgcAugKUBJUEBwCWBMQCzAIHAJYElwTEAgcAxgKWBMkCBwDGApcElgQHAJgE0wLYAgcAmASZBNMCBwDRApgE1QIHANECmQSYBAcAmgTfAuICBwCaBJsE3wIHAN0CmgTgAgcA3QKbBJoEBwCJBGwCnAQHAIkEbwJsAgcAcwKcBHECBwBzAokEnAQHAHUCnQR2AgcAdQKIBJ0EBwCIBHoCnQQHAIgEeAJ6AgcAiwR8Ap4EBwCLBH0CfAIHAH8CngR+AgcAfwKLBJ4EBwCBAp8EggIHAIECigSfBAcAigSGAp8EBwCKBIQChgIHAIwEiAKgBAcAjASJAogCBwCLAqAEigIHAIsCjASgBAcAkwKhBJECBwCTAo0EoQQHAI0EjAKhBAcAjQSPAowCBwCOBJcCogQHAI4ElgKXAgcAlAKiBJUCBwCUAo4EogQHAJ8CowSdAgcAnwKPBKMEBwCPBJgCowQHAI8EmwKYAgcAkASjAqQEBwCQBKICowIHAKACpAShAgcAoAKQBKQEBwCrAqUEqQIHAKsCkQSlBAcAkQSkAqUEBwCRBKcCpAIHAJIErwKmBAcAkgSuAq8CBwCsAqYErQIHAKwCkgSmBAcAtwKnBLUCBwC3ApMEpwQHAJMEsAKnBAcAkwSzArACBwCUBLsCqAQHAJQEugK7AgcAuAKoBLkCBwC4ApQEqAQHAMMCqQTBAgcAwwKVBKkEBwCVBLwCqQQHAJUEvwK8AgcAlwTHAqoEBwCXBMYCxwIHAMQCqgTFAgcAxAKXBKoEBwDJAqsEygIHAMkClgSrBAcAlgTOAqsEBwCWBMwCzgIHAJkE0AKsBAcAmQTRAtACBwDTAqwE0gIHANMCmQSsBAcA1QKtBNYCBwDVApgErQQHAJgE2gKtBAcAmATYAtoCBwCbBNwCrgQHAJsE3QLcAgcA3wKuBN4CBwDfApsErgQHAOACrwThAgcA4AKaBK8EBwCaBOMCrwQHAJoE4gLjAgcAqgQgAiECBwCqBMcCIAIHAMcCHwIgAgcAxwLCAh8CBwAiAsICwQIHACICHwLCAgcAIQLFAqoEBwAhAlECxQIHACMCwQKpBAcAIwIiAsECBwBSAqkEvAIHAFICIwKpBAcAUQK+AsUCBwBRAlACvgIHALwCUAJSAgcAvAK+AlACBwAdAsgCygIHAB0CHgLIAgcAHgLQAsgCBwAeAk0C0AIHAE0CrATQAgcATQJMAqwEBwBrAqwETAIHAGsC0gKsBAcAHALKAqsEBwAcAh0CygIHAKsETgIcAgcAqwTOAk4CBwBPAs4CzQIHAE8CTgLOAgcAawLNAtICBwBrAk8CzQIHANoCaQJqAgcA2gLZAmkCBwDeAmkC2QIHAN4CaAJpAgcArQRqAkoCBwCtBNoCagIHANYCSgJLAgcA1gKtBEoCBwDUAksCSQIHANQC1gJLAgcA3AJJAkgCBwDcAtQCSQIHAK4ESAJHAgcArgTcAkgCBwDeAkcCaAIHAN4CrgRHAgcAbAJEAkICBwBsAm4CRAIHAG4CRgJEAgcAbgLhAkYCBwDhAkUCRgIHAOECrwRFAgcArwRnAkUCBwCvBOMCZwIHAJwEQgJDAgcAnARsAkICBwBxAkMCZQIHAHECnARDAgcAZQJyAnECBwBlAmYCcgIHAGYC4wJyAgcAZgJnAuMCBwBjAnoCeQIHAGMCZAJ6AgcAYgJ5An4CBwBiAmMCeQIHAD4CfgKeBAcAPgJiAn4CBwA9Ap4EfAIHAD0CPgKeBAcAfAI/Aj0CBwB8AnQCPwIHAHQCQAI/AgcAdAJ2AkACBwB2AkECQAIHAHYCnQRBAgcAnQRkAkECBwCdBHoCZAIHAGECnwSGAgcAYQI8Ap8EBwCCAjwCOwIHAIICnwQ8AgcAgAI7AjoCBwCAAoICOwIHAIgCOgI4AgcAiAKAAjoCBwCgBDgCOQIHAKAEiAI4AgcAigI5Al8CBwCKAqAEOQIHAF8ChQKKAgcAXwJgAoUCBwCGAmACYQIHAIYChQJgAgcAXQKMAo4CBwBdAl4CjAIHAI4CXAJdAgcAjgKVAlwCBwCiBDMCNAIHAKIElwIzAgcAlwI1AjMCBwCXApICNQIHAJICNgI1AgcAkgKRAjYCBwCRAjcCNgIHAJECoQQ3AgcAXgKhBIwCBwBeAjcCoQQHAJUCNAJcAgcAlQKiBDQCBwAuAqQEowIHAC4CLwKkBAcAMAKjAp4CBwAwAi4CowIHADECngKdAgcAMQIwAp4CBwAvAqECpAQHAC8CWQKhAgcAMgKdAqMEBwAyAjECnQIHAFsCowSYAgcAWwIyAqMEBwCYAloCWwIHAJgCmgJaAgcAmgJZAloCBwCaAqECWQIHAC0CqQKlBAcALQIsAqkCBwBYAqUEpAIHAFgCLQKlBAcALAKqAqkCBwAsAikCqgIHACkCrwKqAgcAKQIqAq8CBwAqAqYErwIHACoCKwKmBAcAKwKtAqYEBwArAlcCrQIHAKQCVgJYAgcApAKmAlYCBwCmAlcCVgIHAKYCrQJXAgcAJwK2ArUCBwAnAiQCtgIHACQCuwK2AgcAJAIlArsCBwAoArUCpwQHACgCJwK1AgcAVQKnBLACBwBVAigCpwQHACUCqAS7AgcAJQImAqgEBwAmArkCqAQHACYCVAK5AgcAsAJTAlUCBwCwArICUwIHALICVAJTAgcAsgK5AlQCBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDEBMgEyQQHAMQExgTIBAcAyQTKBMsEBwDJBMgEygQHAMoEzATLBAcAygTNBMwEBwDNBM4EzAQHAM0EzwTOBAcAxQTOBM8EBwDFBMcEzgQHANAE0QTSBAcA0ATTBNEEBwDSBNQE1QQHANIE0QTUBAcA1ATWBNUEBwDUBNcE1gQHANcE2ATWBAcA1wTZBNgEBwDaBNgE2QQHANoE2wTYBAcA0ATaBNMEBwDQBNsE2gQHANwE3QTeBAcA3ATfBN0EBwDdBOAE3gQHAN0E4QTgBAcA4QTiBOAEBwDhBOME4gQHAOQE4gTjBAcA5ATlBOIEBwDmBOQE5wQHAOYE5QTkBAcA5gTfBNwEBwDmBOcE3wQHAOgE6QTqBAcA6ATrBOkEBwDrBOwE6QQHAOsE7QTsBAcA7gTsBO0EBwDuBO8E7AQHAPAE7gTxBAcA8ATvBO4EBwDwBPIE8wQHAPAE8QTyBAcA8wToBOoEBwDzBPIE6AQHAPQE9QT2BAcA9AT3BPUEBwD4BPUE9wQHAPgE+QT1BAcA+gT4BPsEBwD6BPkE+AQHAPoE/AT9BAcA+gT7BPwEBwD9BP4E/wQHAP0E/AT+BAcA/gT2BP8EBwD+BPQE9gQHAMYEAAUBBQcAxgTFBAAFBwDIBAEFAgUHAMgExgQBBQcAygQCBQMFBwDKBMgEAgUHAAQFygQDBQcABAXNBMoEBwAFBc0EBAUHAAUFzwTNBAcAAAXPBAUFBwAABcUEzwQHANEEBgUHBQcA0QTTBAYFBwDUBAcFCAUHANQE0QQHBQcACQXUBAgFBwAJBdcE1AQHAAoF1wQJBQcACgXZBNcEBwALBdkECgUHAAsF2gTZBAcA0wQLBQYFBwDTBNoECwUHAN0EDAUNBQcA3QTfBAwFBwAOBd0EDQUHAA4F4QTdBAcADwXhBA4FBwAPBeME4QQHABAF4wQPBQcAEAXkBOMEBwDnBBAFEQUHAOcE5AQQBQcA3wQRBQwFBwDfBOcEEQUHABIF6AQTBQcAEgXrBOgEBwAUBesEEgUHABQF7QTrBAcAFQXtBBQFBwAVBe4E7QQHAPEEFQUWBQcA8QTuBBUFBwDyBBYFFwUHAPIE8QQWBQcA6AQXBRMFBwDoBPIEFwUHABgF9AQZBQcAGAX3BPQEBwAaBfcEGAUHABoF+AT3BAcA+wQaBRsFBwD7BPgEGgUHAPwEGwUcBQcA/AT7BBsFBwD+BBwFHQUHAP4E/AQcBQcAGQX+BB0FBwAZBfQE/gQHAAEFHgUfBQcAAQUABR4FBwACBR8FIAUHAAIFAQUfBQcAAwUgBSEFBwADBQIFIAUHACIFAwUhBQcAIgUEBQMFBwAjBQQFIgUHACMFBQUEBQcAHgUFBSMFBwAeBQAFBQUHAAcFJAUlBQcABwUGBSQFBwAIBSUFJgUHAAgFBwUlBQcAJwUIBSYFBwAnBQkFCAUHACgFCQUnBQcAKAUKBQkFBwApBQoFKAUHACkFCwUKBQcABgUpBSQFBwAGBQsFKQUHAA0FKgUrBQcADQUMBSoFBwAsBQ0FKwUHACwFDgUNBQcALQUOBSwFBwAtBQ8FDgUHAC4FDwUtBQcALgUQBQ8FBwARBS4FLwUHABEFEAUuBQcADAUvBSoFBwAMBREFLwUHADAFEwUxBQcAMAUSBRMFBwAyBRIFMAUHADIFFAUSBQcAMwUUBTIFBwAzBRUFFAUHABYFMwU0BQcAFgUVBTMFBwAXBTQFNQUHABcFFgU0BQcAEwU1BTEFBwATBRcFNQUHADYFGQU3BQcANgUYBRkFBwA4BRgFNgUHADgFGgUYBQcAGwU4BTkFBwAbBRoFOAUHABwFOQU6BQcAHAUbBTkFBwAdBToFOwUHAB0FHAU6BQcANwUdBTsFBwA3BRkFHQUHAB8FsQSzBAcAHwUeBbEEBwAfBbAEIAUHAB8FswSwBAcAIAU8BSEFBwAgBbAEPAUHADwFIgUhBQcAPAU9BSIFBwA9BSMFIgUHAD0FsgQjBQcAsQQjBbIEBwCxBB4FIwUHACQFtAQlBQcAJAW3BLQEBwAlBT4FJgUHACUFtAQ+BQcAPgUnBSYFBwA+BT8FJwUHAD8FKAUnBQcAPwW2BCgFBwC1BCgFtgQHALUEKQUoBQcAJAW1BLcEBwAkBSkFtQQHACoFQAUrBQcAKgW4BEAFBwBABSwFKwUHAEAFQQUsBQcAQQUtBSwFBwBBBboELQUHALkELQW6BAcAuQQuBS0FBwAvBbkEuwQHAC8FLgW5BAcALwW4BCoFBwAvBbsEuAQHAEIFMAUxBQcAQgVDBTAFBwBDBTIFMAUHAEMFvgQyBQcAvQQyBb4EBwC9BDMFMgUHADQFvQS/BAcANAUzBb0EBwA0BbwENQUHADQFvwS8BAcANQVCBTEFBwA1BbwEQgUHAMEENgU3BQcAwQTDBDYFBwDABDYFwwQHAMAEOAU2BQcAOQXABEQFBwA5BTgFwAQHADkFRQU6BQcAOQVEBUUFBwA6BcIEOwUHADoFRQXCBAcAwgQ3BTsFBwDCBMEENwUHALIEPAWwBAcAsgQ9BTwFBwC2BD4FtAQHALYEPwU+BQcAugRABbgEBwC6BEEFQAUHAMIERAXABAcAwgRFBUQFBwC+BEIFvAQHAL4EQwVCBQcA6gRkA/MEBwDqBGYDZAMHAGID8wRkAwcAYgPwBPMEBwCdA+wEtgMHAJ0D6QTsBAcAZgPpBJ0DBwBmA+oE6QQHAJsD8ARiAwcAmwPvBPAEBwCbA+wE7wQHAJsDtgPsBAcA3gTRA7ADBwDeBOAE0QMHAJcD3gSwAwcAlwPcBN4EBwCVA9wElwMHAJUD5gTcBAcAkwPmBJUDBwCTA+UE5gQHAK8D5QSTAwcArwPiBOUEBwCvA+AE4gQHAK8D0QPgBAcA1gTLA9UEBwDWBKoDywMHAKsD1QTLAwcAqwPSBNUEBwCKA9IEqwMHAIoD0ATSBAcAiAPQBIoDBwCIA9sE0AQHAIYD2wSIAwcAhgPYBNsEBwCqA9gEhgMHAKoD1gTYBAcApQPMBHsDBwClA8sEzAQHAMMDywSlAwcAwwPJBMsEBwCnA8kEwwMHAKcDxATJBAcAzgR7A8wEBwDOBH0DewMHAMcEfQPOBAcAxwR+A30DBwDEBH4DxwQHAMQEpwN+AwcAbwP/BHEDBwBvA/0E/wQHAKAD/QRvAwcAoAP6BP0EBwCgA/kE+gQHAKADvAP5BAcAoQP5BLwDBwChA/UE+QQHAHMD9QShAwcAcwP2BPUEBwBxA/YEcwMHAHED/wT2BAcARgVHBUgFBwBGBUkFRwUHAEgFSgVLBQcASAVHBUoFBwBLBUwFTQUHAEsFSgVMBQcATQVOBU8FBwBNBUwFTgUHAE8FUAVRBQcATwVOBVAFBwBRBVIFUwUHAFEFUAVSBQcAUwVUBVUFBwBTBVIFVAUHAFUFVgVXBQcAVQVUBVYFBwBWBVgFVwUHAFYFWQVYBQcAWQVaBVgFBwBZBVsFWgUHAFsFXAVaBQcAWwVdBVwFBwBdBV4FXAUHAF0FXwVeBQcAXwVgBV4FBwBfBWEFYAUHAGEFYgVgBQcAYQVjBWIFBwBjBWQFYgUHAGMFZQVkBQcAZQVmBWQFBwBlBWcFZgUHAGgFZgVnBQcAaAVpBWYFBwBqBWkFaAUHAGoFawVpBQcAbAVrBWoFBwBsBW0FawUHAG4FbQVsBQcAbgVvBW0FBwBwBW8FbgUHAHAFcQVvBQcAcgVxBXAFBwByBXMFcQUHAHQFcwVyBQcAdAV1BXMFBwB2BXQFdwUHAHYFdQV0BQcAeAV3BXkFBwB4BXYFdwUHAHoFeQV7BQcAegV4BXkFBwB8BXsFfQUHAHwFegV7BQcAfgV9BX8FBwB+BXwFfQUHAIAFfwWBBQcAgAV+BX8FBwBGBYEFSQUHAEYFgAWBBQcAdwVyBYIFBwB3BXQFcgUHAHsFdwWCBQcAewV5BXcFBwB/BXsFggUHAH8FfQV7BQcASQV/BYIFBwBJBYEFfwUHAEoFSQWCBQcASgVHBUkFBwBOBUoFggUHAE4FTAVKBQcAUgVOBYIFBwBSBVAFTgUHAFYFUgWCBQcAVgVUBVIFBwBbBVYFggUHAFsFWQVWBQcAXwVbBYIFBwBfBV0FWwUHAGMFXwWCBQcAYwVhBV8FBwBnBWMFggUHAGcFZQVjBQcAagVnBYIFBwBqBWgFZwUHAG4FagWCBQcAbgVsBWoFBwByBW4FggUHAHIFcAVuBQcAgwWABUYFBwCDBYQFgAUHAIUFRgVIBQcAhQWDBUYFBwCEBX4FgAUHAIQFhgV+BQcAhgV8BX4FBwCGBYcFfAUHAIcFegV8BQcAhwWIBXoFBwCIBXgFegUHAIgFiQV4BQcAiQV2BXgFBwCJBYoFdgUHAIoFdQV2BQcAigWLBXUFBwCMBVcFWAUHAIwFjQVXBQcAjgVYBVoFBwCOBYwFWAUHAI0FVQVXBQcAjQWPBVUFBwCPBVMFVQUHAI8FkAVTBQcAkAVRBVMFBwCQBZEFUQUHAJEFTwVRBQcAkQWSBU8FBwCSBU0FTwUHAJIFkwVNBQcAkwVLBU0FBwCTBZQFSwUHAJQFSAVLBQcAlAWFBUgFBwCLBXMFdQUHAIsFlQVzBQcAlQVxBXMFBwCVBZYFcQUHAJYFbwVxBQcAlgWXBW8FBwCXBW0FbwUHAJcFmAVtBQcAmAVrBW0FBwCYBZkFawUHAJkFaQVrBQcAmQWaBWkFBwCaBWYFaQUHAJoFmwVmBQcAmwVkBWYFBwCbBZwFZAUHAJwFYgVkBQcAnAWdBWIFBwCdBWAFYgUHAJ0FngVgBQcAngVeBWAFBwCeBZ8FXgUHAJ8FXAVeBQcAnwWgBVwFBwCgBVoFXAUHAKAFjgVaBQcAoQWEBYMFBwChBaIFhAUHAKMFgwWFBQcAowWhBYMFBwCiBYYFhAUHAKIFpAWGBQcApQWFBZQFBwClBaMFhQUHAKQFhwWGBQcApAWmBYcFBwCmBYgFhwUHAKYFpwWIBQcApwWJBYgFBwCnBagFiQUHAKgFigWJBQcAqAWpBYoFBwCpBYsFigUHAKkFqgWLBQcAqgWVBYsFBwCqBasFlQUHAKwFjQWMBQcArAWtBY0FBwCuBYwFjgUHAK4FrAWMBQcArQWPBY0FBwCtBa8FjwUHALAFjgWgBQcAsAWuBY4FBwCvBZAFjwUHAK8FsQWQBQcAsQWRBZAFBwCxBbIFkQUHALIFkgWRBQcAsgWzBZIFBwCzBZMFkgUHALMFtAWTBQcAtAWUBZMFBwC0BaUFlAUHAKsFlgWVBQcAqwW1BZYFBwC1BZcFlgUHALUFtgWXBQcAtgWYBZcFBwC2BbcFmAUHALcFmQWYBQcAtwW4BZkFBwC4BZoFmQUHALgFuQWaBQcAuQWbBZoFBwC5BboFmwUHALoFnAWbBQcAugW7BZwFBwC7BZ0FnAUHALsFvAWdBQcAvAWeBZ0FBwC8Bb0FngUHAL0FnwWeBQcAvQW+BZ8FBwC+BaAFnwUHAL4FsAWgBQcAvwXABcEFBwC/BcIFwAUHAL8FwwXCBQcAvwXEBcMFBwDEBcUFwwUHAMQFxgXFBQcAxgXHBcUFBwDGBcgFxwUHAMgFyQXHBQcAyAXKBckFBwDKBcsFyQUHAMoFzAXLBQcAzAXNBcsFBwDMBc4FzQUHAM0FzwXQBQcAzQXOBc8FBwDQBdEF0gUHANAFzwXRBQcA0gXTBdQFBwDSBdEF0wUHANQF1QXWBQcA1AXTBdUFBwDWBdcF2AUHANYF1QXXBQcA2QXXBdoFBwDZBdgF1wUHANsF2gXcBQcA2wXZBdoFBwDdBdwF3gUHAN0F2wXcBQcA3wXeBeAFBwDfBd0F3gUHAOEF4AXiBQcA4QXfBeAFBwDjBeIF5AUHAOMF4QXiBQcA5QXkBeYFBwDlBeMF5AUHAOcF5QXmBQcA5wXoBeUFBwDpBegF5wUHAOkF6gXoBQcA6wXqBekFBwDrBewF6gUHAO0F7AXrBQcA7QXuBewFBwDBBe4F7QUHAMEFwAXuBQcA7wXBBfAFBwDvBb8FwQUHAPEFvwXvBQcA8QXEBb8FBwDyBcQF8QUHAPIFxgXEBQcA8wXGBfIFBwDzBcgFxgUHAPQFyAXzBQcA9AXKBcgFBwD1BcoF9AUHAPUFzAXKBQcA9gXMBfUFBwD2Bc4FzAUHAM8F9gX3BQcAzwXOBfYFBwDRBfcF+AUHANEFzwX3BQcA0wX4BfkFBwDTBdEF+AUHANUF+QX6BQcA1QXTBfkFBwDXBfoF+wUHANcF1QX6BQcA2gX7BfwFBwDaBdcF+wUHANwF/AX9BQcA3AXaBfwFBwDeBf0F/gUHAN4F3AX9BQcA4AX+Bf8FBwDgBd4F/gUHAOIF/wUABgcA4gXgBf8FBwDkBQAGAQYHAOQF4gUABgcA5gUBBgIGBwDmBeQFAQYHAAMG5gUCBgcAAwbnBeYFBwAEBucFAwYHAAQG6QXnBQcABQbpBQQGBwAFBusF6QUHAAYG6wUFBgcABgbtBesFBwDwBe0FBgYHAPAFwQXtBQcABwbwBQgGBwAHBu8F8AUHAAcG8QXvBQcABwYJBvEFBwAJBvIF8QUHAAkGCgbyBQcACgbzBfIFBwAKBgsG8wUHAAsG9AXzBQcACwYMBvQFBwAMBvUF9AUHAAwGDQb1BQcADQb2BfUFBwANBg4G9gUHAPYFDwb3BQcA9gUOBg8GBwD3BRAG+AUHAPcFDwYQBgcA+AURBvkFBwD4BRAGEQYHAPkFEgb6BQcA+QURBhIGBwD6BRMG+wUHAPoFEgYTBgcA/AUTBhQGBwD8BfsFEwYHAP0FFAYVBgcA/QX8BRQGBwD+BRUGFgYHAP4F/QUVBgcA/wUWBhcGBwD/Bf4FFgYHAAAGFwYYBgcAAAb/BRcGBwABBhgGGQYHAAEGAAYYBgcAAgYZBhoGBwACBgEGGQYHABsGAgYaBgcAGwYDBgIGBwAcBgMGGwYHABwGBAYDBgcAHQYEBhwGBwAdBgUGBAYHAB4GBQYdBgcAHgYGBgUGBwAIBgYGHgYHAAgG8AUGBgcAHwYHBggGBwAfBiAGBwYHACAGCQYHBgcAIAYhBgkGBwAhBgoGCQYHACEGIgYKBgcAIgYLBgoGBwAiBiMGCwYHACMGDAYLBgcAIwYkBgwGBwAkBg0GDAYHACQGJQYNBgcAJQYOBg0GBwAlBiYGDgYHAA4GJwYPBgcADgYmBicGBwAPBigGEAYHAA8GJwYoBgcAEAYpBhEGBwAQBigGKQYHABEGKgYSBgcAEQYpBioGBwASBisGEwYHABIGKgYrBgcAEwYsBhQGBwATBisGLAYHABQGLQYVBgcAFAYsBi0GBwAVBi4GFgYHABUGLQYuBgcAFgYvBhcGBwAWBi4GLwYHABcGMAYYBgcAFwYvBjAGBwAYBjEGGQYHABgGMAYxBgcAGQYyBhoGBwAZBjEGMgYHADIGGwYaBgcAMgYzBhsGBwAzBhwGGwYHADMGNAYcBgcANAYdBhwGBwA0BjUGHQYHADUGHgYdBgcANQY2Bh4GBwA2BggGHgYHADYGHwYIBgcANwY4BjkGBwA3BjoGOAYHADsGOgY3BgcAOwY8BjoGBwA9BjwGOwYHAD0GPgY8BgcAPwY+Bj0GBwA/BkAGPgYHAEEGQAY/BgcAQQZCBkAGBwBDBkIGQQYHAEMGRAZCBgcARQZEBkMGBwBFBkYGRAYHAEcGRQZIBgcARwZGBkUGBwBJBkgGSgYHAEkGRwZIBgcASwZKBkwGBwBLBkkGSgYHAE0GTAZOBgcATQZLBkwGBwBPBk4GUAYHAE8GTQZOBgcAUQZQBlIGBwBRBk8GUAYHAFMGUgZUBgcAUwZRBlIGBwBVBlQGVgYHAFUGUwZUBgcAVwZWBlgGBwBXBlUGVgYHAFkGWAZaBgcAWQZXBlgGBwBbBloGXAYHAFsGWQZaBgcAXQZcBl4GBwBdBlsGXAYHAF8GXQZeBgcAXwZgBl0GBwBhBmAGXwYHAGEGYgZgBgcAYwZiBmEGBwBjBmQGYgYHAGUGZAZjBgcAZQZmBmQGBwA5BmYGZQYHADkGOAZmBgcAZwY3BjkGBwBnBmgGNwYHAGkGNwZoBgcAaQY7BjcGBwBqBjsGaQYHAGoGPQY7BgcAawY9BmoGBwBrBj8GPQYHAGwGPwZrBgcAbAZBBj8GBwBtBkEGbAYHAG0GQwZBBgcAbgZDBm0GBwBuBkUGQwYHAEgGbgZvBgcASAZFBm4GBwBKBm8GcAYHAEoGSAZvBgcATAZwBnEGBwBMBkoGcAYHAE4GcQZyBgcATgZMBnEGBwBQBnIGcwYHAFAGTgZyBgcAUAZ0BlIGBwBQBnMGdAYHAFIGdQZUBgcAUgZ0BnUGBwBUBnYGVgYHAFQGdQZ2BgcAVgZ3BlgGBwBWBnYGdwYHAFgGeAZaBgcAWAZ3BngGBwBaBnkGXAYHAFoGeAZ5BgcAXAZ6Bl4GBwBcBnkGegYHAHoGXwZeBgcAegZ7Bl8GBwB7BmEGXwYHAHsGfAZhBgcAfAZjBmEGBwB8Bn0GYwYHAH0GZQZjBgcAfQZ+BmUGBwB+BjkGZQYHAH4GZwY5BgcAfwZnBoAGBwB/BmgGZwYHAIEGaAZ/BgcAgQZpBmgGBwCCBmkGgQYHAIIGagZpBgcAgwZqBoIGBwCDBmsGagYHAIQGawaDBgcAhAZsBmsGBwCFBmwGhAYHAIUGbQZsBgcAhgZtBoUGBwCGBm4GbQYHAG8GhgaHBgcAbwZuBoYGBwBwBocGiAYHAHAGbwaHBgcAcQaIBokGBwBxBnAGiAYHAHIGiQaKBgcAcgZxBokGBwBzBooGiwYHAHMGcgaKBgcAdAaLBowGBwB0BnMGiwYHAHUGjAaNBgcAdQZ0BowGBwB2Bo0GjgYHAHYGdQaNBgcAdwaOBo8GBwB3BnYGjgYHAHgGjwaQBgcAeAZ3Bo8GBwB5BpAGkQYHAHkGeAaQBgcAegaRBpIGBwB6BnkGkQYHAJMGegaSBgcAkwZ7BnoGBwCUBnsGkwYHAJQGfAZ7BgcAlQZ8BpQGBwCVBn0GfAYHAJYGfQaVBgcAlgZ+Bn0GBwCABn4GlgYHAIAGZwZ+BgcAlwaABpgGBwCXBn8GgAYHAJcGgQZ/BgcAlwaZBoEGBwCZBoIGgQYHAJkGmgaCBgcAmgaDBoIGBwCaBpsGgwYHAJsGhAaDBgcAmwacBoQGBwCcBoUGhAYHAJwGnQaFBgcAnQaGBoUGBwCdBp4GhgYHAIYGnwaHBgcAhgaeBp8GBwCHBqAGiAYHAIcGnwagBgcAiAahBokGBwCIBqAGoQYHAIkGogaKBgcAiQahBqIGBwCKBqMGiwYHAIoGogajBgcAjAajBqQGBwCMBosGowYHAI0GpAalBgcAjQaMBqQGBwCOBqUGpgYHAI4GjQalBgcAjwamBqcGBwCPBo4GpgYHAJAGpwaoBgcAkAaPBqcGBwCRBqgGqQYHAJEGkAaoBgcAkgapBqoGBwCSBpEGqQYHAKsGkgaqBgcAqwaTBpIGBwCsBpMGqwYHAKwGlAaTBgcArQaUBqwGBwCtBpUGlAYHAK4GlQatBgcArgaWBpUGBwCYBpYGrgYHAJgGgAaWBgcArwaYBrAGBwCvBpcGmAYHALEGlwavBgcAsQaZBpcGBwCyBpkGsQYHALIGmgaZBgcAswaaBrIGBwCzBpsGmgYHALQGmwazBgcAtAacBpsGBwC1BpwGtAYHALUGnQacBgcAtgadBrUGBwC2Bp4GnQYHAJ8Gtga3BgcAnwaeBrYGBwCgBrcGuAYHAKAGnwa3BgcAoQa4BrkGBwChBqAGuAYHAKIGuQa6BgcAogahBrkGBwCjBroGuwYHAKMGoga6BgcApAa7BrwGBwCkBqMGuwYHAKUGvAa9BgcApQakBrwGBwCmBr0GvgYHAKYGpQa9BgcApwa+Br8GBwCnBqYGvgYHAKgGvwbABgcAqAanBr8GBwCpBsAGwQYHAKkGqAbABgcAqgbBBsIGBwCqBqkGwQYHAMMGqgbCBgcAwwarBqoGBwDEBqsGwwYHAMQGrAarBgcAxQasBsQGBwDFBq0GrAYHAMYGrQbFBgcAxgauBq0GBwCwBq4GxgYHALAGmAauBgcAxwavBrAGBwDHBsgGrwYHAMkGrwbIBgcAyQaxBq8GBwDKBrEGyQYHAMoGsgaxBgcAywayBsoGBwDLBrMGsgYHAMwGswbLBgcAzAa0BrMGBwDNBrQGzAYHAM0GtQa0BgcAzga1Bs0GBwDOBrYGtQYHALcGzgbPBgcAtwa2Bs4GBwC4Bs8G0AYHALgGtwbPBgcAuQbQBtEGBwC5BrgG0AYHALoG0QbSBgcAuga5BtEGBwC7BtIG0wYHALsGugbSBgcAuwbUBrwGBwC7BtMG1AYHALwG1Qa9BgcAvAbUBtUGBwC9BtYGvgYHAL0G1QbWBgcAvgbXBr8GBwC+BtYG1wYHAL8G2AbABgcAvwbXBtgGBwDABtkGwQYHAMAG2AbZBgcAwQbaBsIGBwDBBtkG2gYHANoGwwbCBgcA2gbbBsMGBwDbBsQGwwYHANsG3AbEBgcA3AbFBsQGBwDcBt0GxQYHAN0GxgbFBgcA3QbeBsYGBwDeBrAGxgYHAN4GxwawBgcAKwbfBiwGBwArBuAG3wYHACoG4AYrBgcAKgbhBuAGBwApBuEGKgYHACkG4gbhBgcAKAbiBikGBwAoBuMG4gYHACcG4wYoBgcAJwbkBuMGBwAmBuQGJwYHACYG5QbkBgcAJQblBiYGBwAlBuYG5QYHACQG5gYlBgcAJAbnBuYGBwAjBucGJAYHACMG6AbnBgcAIgboBiMGBwAiBukG6AYHACEG6QYiBgcAIQbqBukGBwAgBuoGIQYHACAG6wbqBgcAHwbrBiAGBwAfBuwG6wYHADYG7AYfBgcANgbtBuwGBwA1Bu0GNgYHADUG7gbtBgcANAbuBjUGBwA0Bu8G7gYHADMG7wY0BgcAMwbwBu8GBwAyBvAGMwYHADIG8QbwBgcAMQbxBjIGBwAxBvIG8QYHADAG8gYxBgcAMAbzBvIGBwAvBvMGMAYHAC8G9AbzBgcALgb0Bi8GBwAuBvUG9AYHAC0G9QYuBgcALQb2BvUGBwAsBvYGLQYHACwG3wb2BgcAUQb3Bk8GBwBRBvgG9wYHAPgG4Ab3BgcA+AbfBuAGBwBTBvgGUQYHAFMG+Qb4BgcA+QbfBvgGBwD5BvYG3wYHAFUG+QZTBgcAVQb6BvkGBwD6BvYG+QYHAPoG9Qb2BgcAVwb6BlUGBwBXBvsG+gYHAPsG9Qb6BgcA+wb0BvUGBwBZBvsGVwYHAFkG/Ab7BgcA/Ab0BvsGBwD8BvMG9AYHAFsG/AZZBgcAWwb9BvwGBwD9BvMG/AYHAP0G8gbzBgcAXQb9BlsGBwBdBv4G/QYHAP4G8gb9BgcA/gbxBvIGBwBgBv4GXQYHAGAG/wb+BgcA/wbxBv4GBwD/BvAG8QYHAGIG/wZgBgcAYgYAB/8GBwAAB/AG/wYHAAAH7wbwBgcAZAYAB2IGBwBkBgEHAAcHAAEH7wYABwcAAQfuBu8GBwBmBgEHZAYHAGYGAgcBBwcAAgfuBgEHBwACB+0G7gYHADgGAgdmBgcAOAYDBwIHBwADB+0GAgcHAAMH7AbtBgcAOgYDBzgGBwA6BgQHAwcHAAQH7AYDBwcABAfrBuwGBwA8BgQHOgYHADwGBQcEBwcABQfrBgQHBwAFB+oG6wYHAD4GBQc8BgcAPgYGBwUHBwAGB+oGBQcHAAYH6QbqBgcAQAYGBz4GBwBABgcHBgcHAAcH6QYGBwcABwfoBukGBwBCBgcHQAYHAEIGCAcHBwcACAfoBgcHBwAIB+cG6AYHAEQGCAdCBgcARAYJBwgHBwAJB+cGCAcHAAkH5gbnBgcARgYJB0QGBwBGBgoHCQcHAAoH5gYJBwcACgflBuYGBwBHBgoHRgYHAEcGCwcKBwcACwflBgoHBwALB+QG5QYHAEkGCwdHBgcASQYMBwsHBwAMB+QGCwcHAAwH4wbkBgcASwYMB0kGBwBLBg0HDAcHAA0H4wYMBwcADQfiBuMGBwBNBg0HSwYHAE0GDgcNBwcADgfiBg0HBwAOB+EG4gYHAE8GDgdNBgcATwb3Bg4HBwD3BuEGDgcHAPcG4AbhBgcADwcQBxEHBwAPBxIHEAcHABIHEwcQBwcAEgcUBxMHBwAUBxUHEwcHABQHFgcVBwcAFgcXBxUHBwAWBxgHFwcHABgHGQcXBwcAGAcaBxkHBwAaBxsHGQcHABoHHAcbBwcAGwcdBx4HBwAbBxwHHQcHAB4HHwcgBwcAHgcdBx8HBwAgByEHIgcHACAHHwchBwcAIgcjByQHBwAiByEHIwcHACQHJQcmBwcAJAcjByUHBwAmBycHKAcHACYHJQcnBwcAKAcpByoHBwAoBycHKQcHACoHKwcsBwcAKgcpBysHBwAsBy0HLgcHACwHKwctBwcALgcvBzAHBwAuBy0HLwcHADAHMQcyBwcAMAcvBzEHBwAyBzMHNAcHADIHMQczBwcAMwc1BzQHBwAzBzYHNQcHADYHNwc1BwcANgc4BzcHBwA4BzkHNwcHADgHOgc5BwcAOgc7BzkHBwA6BzwHOwcHADwHPQc7BwcAPAc+Bz0HBwA+BxEHPQcHAD4HDwcRBwcAPwc+B0AHBwA/Bw8HPgcHAD8HEgcPBwcAPwdBBxIHBwBBBxQHEgcHAEEHQgcUBwcAQgcWBxQHBwBCB0MHFgcHAEMHGAcWBwcAQwdEBxgHBwBEBxoHGAcHAEQHRQcaBwcARQccBxoHBwBFB0YHHAcHABwHRwcdBwcAHAdGB0cHBwAdB0gHHwcHAB0HRwdIBwcAHwdJByEHBwAfB0gHSQcHACEHSgcjBwcAIQdJB0oHBwAjB0sHJQcHACMHSgdLBwcAJwdLB0wHBwAnByUHSwcHACkHTAdNBwcAKQcnB0wHBwArB00HTgcHACsHKQdNBwcALQdOB08HBwAtBysHTgcHAC8HTwdQBwcALwctB08HBwAxB1AHUQcHADEHLwdQBwcAMwdRB1IHBwAzBzEHUQcHAFMHMwdSBwcAUwc2BzMHBwBUBzYHUwcHAFQHOAc2BwcAVQc4B1QHBwBVBzoHOAcHAFYHOgdVBwcAVgc8BzoHBwBABzwHVgcHAEAHPgc8BwcAVwdAB1gHBwBXBz8HQAcHAFkHPwdXBwcAWQdBBz8HBwBaB0EHWQcHAFoHQgdBBwcAWwdCB1oHBwBbB0MHQgcHAFwHQwdbBwcAXAdEB0MHBwBdB0QHXAcHAF0HRQdEBwcAXgdFB10HBwBeB0YHRQcHAEcHXgdfBwcARwdGB14HBwBIB18HYAcHAEgHRwdfBwcASQdgB2EHBwBJB0gHYAcHAEoHYQdiBwcASgdJB2EHBwBLB2IHYwcHAEsHSgdiBwcATAdjB2QHBwBMB0sHYwcHAE0HZAdlBwcATQdMB2QHBwBOB2UHZgcHAE4HTQdlBwcATwdmB2cHBwBPB04HZgcHAFAHZwdoBwcAUAdPB2cHBwBRB2gHaQcHAFEHUAdoBwcAUgdpB2oHBwBSB1EHaQcHAGsHUgdqBwcAawdTB1IHBwBsB1MHawcHAGwHVAdTBwcAbQdUB2wHBwBtB1UHVAcHAG4HVQdtBwcAbgdWB1UHBwBYB1YHbgcHAFgHQAdWBwcAbwdYB3AHBwBvB1cHWAcHAG8HWQdXBwcAbwdxB1kHBwBxB1oHWQcHAHEHcgdaBwcAcgdbB1oHBwByB3MHWwcHAHMHXAdbBwcAcwd0B1wHBwB0B10HXAcHAHQHdQddBwcAdQdeB10HBwB1B3YHXgcHAF4HdwdfBwcAXgd2B3cHBwBfB3gHYAcHAF8Hdwd4BwcAYAd5B2EHBwBgB3gHeQcHAGEHegdiBwcAYQd5B3oHBwBiB3sHYwcHAGIHegd7BwcAZAd7B3wHBwBkB2MHewcHAGUHfAd9BwcAZQdkB3wHBwBmB30HfgcHAGYHZQd9BwcAZwd+B38HBwBnB2YHfgcHAGgHfweABwcAaAdnB38HBwBpB4AHgQcHAGkHaAeABwcAageBB4IHBwBqB2kHgQcHAIMHageCBwcAgwdrB2oHBwCEB2sHgwcHAIQHbAdrBwcAhQdsB4QHBwCFB20HbAcHAIYHbQeFBwcAhgduB20HBwBwB24HhgcHAHAHWAduBwcAhwdwB4gHBwCHB28HcAcHAIkHbweHBwcAiQdxB28HBwCKB3EHiQcHAIoHcgdxBwcAiwdyB4oHBwCLB3MHcgcHAIwHcweLBwcAjAd0B3MHBwCNB3QHjAcHAI0HdQd0BwcAjgd1B40HBwCOB3YHdQcHAHcHjgePBwcAdwd2B44HBwB4B48HkAcHAHgHdwePBwcAeQeQB5EHBwB5B3gHkAcHAHoHkQeSBwcAegd5B5EHBwB7B5IHkwcHAHsHegeSBwcAfAeTB5QHBwB8B3sHkwcHAH0HlAeVBwcAfQd8B5QHBwB+B5UHlgcHAH4HfQeVBwcAfweWB5cHBwB/B34HlgcHAIAHlweYBwcAgAd/B5cHBwCBB5gHmQcHAIEHgAeYBwcAggeZB5oHBwCCB4EHmQcHAJsHggeaBwcAmweDB4IHBwCcB4MHmwcHAJwHhAeDBwcAnQeEB5wHBwCdB4UHhAcHAJ4HhQedBwcAngeGB4UHBwCIB4YHngcHAIgHcAeGBwcAnweHB4gHBwCfB6AHhwcHAKEHhwegBwcAoQeJB4cHBwCiB4kHoQcHAKIHigeJBwcAoweKB6IHBwCjB4sHigcHAKQHiwejBwcApAeMB4sHBwClB4wHpAcHAKUHjQeMBwcApgeNB6UHBwCmB44HjQcHAI8HpgenBwcAjweOB6YHBwCQB6cHqAcHAJAHjwenBwcAkQeoB6kHBwCRB5AHqAcHAJIHqQeqBwcAkgeRB6kHBwCTB6oHqwcHAJMHkgeqBwcAkwesB5QHBwCTB6sHrAcHAJQHrQeVBwcAlAesB60HBwCVB64HlgcHAJUHrQeuBwcAlgevB5cHBwCWB64HrwcHAJcHsAeYBwcAlwevB7AHBwCYB7EHmQcHAJgHsAexBwcAmQeyB5oHBwCZB7EHsgcHALIHmweaBwcAsgezB5sHBwCzB5wHmwcHALMHtAecBwcAtAedB5wHBwC0B7UHnQcHALUHngedBwcAtQe2B54HBwC2B4gHngcHALYHnweIBwcAwgWfB8AFBwDCBaAHnwcHAMMFoAfCBQcAwwWhB6AHBwDFBaEHwwUHAMUFogehBwcAxwWiB8UFBwDHBaMHogcHAMkFowfHBQcAyQWkB6MHBwDLBaQHyQUHAMsFpQekBwcAzQWlB8sFBwDNBaYHpQcHAKcHzQXQBQcApwemB80FBwCoB9AF0gUHAKgHpwfQBQcAqQfSBdQFBwCpB6gH0gUHAKoH1AXWBQcAqgepB9QFBwCrB9YF2AUHAKsHqgfWBQcArAfYBdkFBwCsB6sH2AUHAK0H2QXbBQcArQesB9kFBwCuB9sF3QUHAK4HrQfbBQcArwfdBd8FBwCvB64H3QUHALAH3wXhBQcAsAevB98FBwCxB+EF4wUHALEHsAfhBQcAsgfjBeUFBwCyB7EH4wUHAOgFsgflBQcA6AWzB7IHBwDqBbMH6AUHAOoFtAezBwcA7AW0B+oFBwDsBbUHtAcHAO4FtQfsBQcA7gW2B7UHBwDABbYH7gUHAMAFnwe2BwcAtwfHBrgHBwC3B8gGxwYHALkHyAa3BwcAuQfJBsgGBwC6B8kGuQcHALoHygbJBgcAuwfKBroHBwC7B8sGygYHALwHywa7BwcAvAfMBssGBwC9B8wGvAcHAL0HzQbMBgcAvgfNBr0HBwC+B84GzQYHAM8Gvge/BwcAzwbOBr4HBwDQBr8HwAcHANAGzwa/BwcA0QbAB8EHBwDRBtAGwAcHANIGwQfCBwcA0gbRBsEHBwDTBsIHwwcHANMG0gbCBwcA1AbDB8QHBwDUBtMGwwcHANUGxAfFBwcA1QbUBsQHBwDWBsUHxgcHANYG1QbFBwcA1wbGB8cHBwDXBtYGxgcHANgGxwfIBwcA2AbXBscHBwDZBsgHyQcHANkG2AbIBwcA2gbJB8oHBwDaBtkGyQcHAMsH2gbKBwcAywfbBtoGBwDMB9sGywcHAMwH3AbbBgcAzQfcBswHBwDNB90G3AYHAM4H3QbNBwcAzgfeBt0GBwC4B94GzgcHALgHxwbeBgcAzwe3B7gHBwDPB9AHtwcHANEHtwfQBwcA0Qe5B7cHBwDSB7kH0QcHANIHuge5BwcA0we6B9IHBwDTB7sHugcHANQHuwfTBwcA1Ae8B7sHBwDVB7wH1AcHANUHvQe8BwcA1ge9B9UHBwDWB74HvQcHAL8H1gfXBwcAvwe+B9YHBwDAB9cH2AcHAMAHvwfXBwcAwQfYB9kHBwDBB8AH2AcHAMIH2QfaBwcAwgfBB9kHBwDDB9oH2wcHAMMHwgfaBwcAwwfcB8QHBwDDB9sH3AcHAMQH3QfFBwcAxAfcB90HBwDFB94HxgcHAMUH3QfeBwcAxgffB8cHBwDGB94H3wcHAMcH4AfIBwcAxwffB+AHBwDIB+EHyQcHAMgH4AfhBwcAyQfiB8oHBwDJB+EH4gcHAOIHywfKBwcA4gfjB8sHBwDjB8wHywcHAOMH5AfMBwcA5AfNB8wHBwDkB+UHzQcHAOUHzgfNBwcA5QfmB84HBwDmB7gHzgcHAOYHzwe4BwcA5wfPB+gHBwDnB9AHzwcHAOkH0AfnBwcA6QfRB9AHBwDqB9EH6QcHAOoH0gfRBwcA6wfSB+oHBwDrB9MH0gcHAOwH0wfrBwcA7AfUB9MHBwDtB9QH7AcHAO0H1QfUBwcA7gfVB+0HBwDuB9YH1QcHANcH7gfvBwcA1wfWB+4HBwDYB+8H8AcHANgH1wfvBwcA2QfwB/EHBwDZB9gH8AcHANoH8QfyBwcA2gfZB/EHBwDbB/IH8wcHANsH2gfyBwcA3AfzB/QHBwDcB9sH8wcHAN0H9Af1BwcA3QfcB/QHBwDeB/UH9gcHAN4H3Qf1BwcA3wf2B/cHBwDfB94H9gcHAOAH9wf4BwcA4AffB/cHBwDhB/gH+QcHAOEH4Af4BwcA4gf5B/oHBwDiB+EH+QcHAPsH4gf6BwcA+wfjB+IHBwD8B+MH+wcHAPwH5AfjBwcA/QfkB/wHBwD9B+UH5AcHAP4H5Qf9BwcA/gfmB+UHBwDoB+YH/gcHAOgHzwfmBwcA/wcACAEIBwD/BwIIAAgHAAMIAgj/BwcAAwgECAIIBwABCAUIBggHAAEIAAgFCAcABwgICAkIBwAHCAoICAgHAAsICggHCAcACwgMCAoIBwAJCA0IDggHAAkICAgNCAcADwgMCAsIBwAPCBAIDAgHAA4IEQgSCAcADggNCBEIBwATCBAIDwgHABMIFAgQCAcAEggVCBYIBwASCBEIFQgHABcIFAgTCAcAFwgYCBQIBwAWCBkIGggHABYIFQgZCAcAGggECAMIBwAaCBkIBAgHAAYIGAgXCAcABggFCBgIBwAbCAAIAggHABsIHAgACAcABAgbCAIIBwAECB0IGwgHABwIBQgACAcAHAgeCAUIBwAKCB8ICAgHAAoIIAgfCAcAIQgKCAwIBwAhCCAICggHAAgIIggNCAcACAgfCCIIBwAjCAwIEAgHACMIIQgMCAcADQgkCBEIBwANCCIIJAgHACUIEAgUCAcAJQgjCBAIBwARCCYIFQgHABEIJAgmCAcAJwgUCBgIBwAnCCUIFAgHABUIKAgZCAcAFQgmCCgIBwAZCB0IBAgHABkIKAgdCAcAHggYCAUIBwAeCCcIGAgHABsIKQgcCAcAGwgqCCkIBwAdCCoIGwgHAB0IKwgqCAcAHAgsCB4IBwAcCCkILAgHACAILQgfCAcAIAguCC0IBwAhCC4IIAgHACEILwguCAcAHwgwCCIIBwAfCC0IMAgHACMILwghCAcAIwgxCC8IBwAiCDIIJAgHACIIMAgyCAcAJQgxCCMIBwAlCDMIMQgHACQINAgmCAcAJAgyCDQIBwAnCDMIJQgHACcINQgzCAcAJgg2CCgIBwAmCDQINggHACgIKwgdCAcAKAg2CCsIBwAeCDUIJwgHAB4ILAg1CAcAKgg3CCkIBwAqCDgINwgHACsIOAgqCAcAKwg5CDgIBwApCDoILAgHACkINwg6CAcALgg7CC0IBwAuCDwIOwgHAC8IPAguCAcALwg9CDwIBwAtCD4IMAgHAC0IOwg+CAcAMQg9CC8IBwAxCD8IPQgHADAIQAgyCAcAMAg+CEAIBwAzCD8IMQgHADMIQQg/CAcAMghCCDQIBwAyCEAIQggHADUIQQgzCAcANQhDCEEIBwA0CEQINggHADQIQghECAcANgg5CCsIBwA2CEQIOQgHACwIQwg1CAcALAg6CEMIBwA4CEUINwgHADgIRghFCAcAOQhGCDgIBwA5CEcIRggHADcISAg6CAcANwhFCEgIBwA8CEkIOwgHADwISghJCAcAPQhKCDwIBwA9CEsISggHADsITAg+CAcAOwhJCEwIBwA/CEsIPQgHAD8ITQhLCAcAPghOCEAIBwA+CEwITggHAEEITQg/CAcAQQhPCE0IBwBACFAIQggHAEAITghQCAcAQwhPCEEIBwBDCFEITwgHAEIIUghECAcAQghQCFIIBwBECEcIOQgHAEQIUghHCAcAOghRCEMIBwA6CEgIUQgHAEYIUwhFCAcARghUCFMIBwBHCFQIRggHAEcIVQhUCAcARQhWCEgIBwBFCFMIVggHAEoIVwhJCAcASghYCFcIBwBLCFgISggHAEsIWQhYCAcASQhaCEwIBwBJCFcIWggHAE0IWQhLCAcATQhbCFkIBwBMCFwITggHAEwIWghcCAcATwhbCE0IBwBPCF0IWwgHAE4IXghQCAcATghcCF4IBwBRCF0ITwgHAFEIXwhdCAcAUAhgCFIIBwBQCF4IYAgHAFIIVQhHCAcAUghgCFUIBwBICF8IUQgHAEgIVghfCAcAVAhhCFMIBwBUCGIIYQgHAFUIYghUCAcAVQhjCGIIBwBTCGQIVggHAFMIYQhkCAcAWAhlCFcIBwBYCGYIZQgHAFkIZghYCAcAWQhnCGYIBwBXCGgIWggHAFcIZQhoCAcAWwhnCFkIBwBbCGkIZwgHAFoIaghcCAcAWghoCGoIBwBdCGkIWwgHAF0IawhpCAcAXAhsCF4IBwBcCGoIbAgHAF8IawhdCAcAXwhtCGsIBwBeCG4IYAgHAF4IbAhuCAcAYAhjCFUIBwBgCG4IYwgHAFYIbQhfCAcAVghkCG0IBwBiCG8IYQgHAGIIcAhvCAcAYwhwCGIIBwBjCHEIcAgHAGEIcghkCAcAYQhvCHIIBwBmCHMIZQgHAGYIdAhzCAcAZwh0CGYIBwBnCHUIdAgHAGUIdghoCAcAZQhzCHYIBwBpCHUIZwgHAGkIdwh1CAcAaAh4CGoIBwBoCHYIeAgHAGsIdwhpCAcAawh5CHcIBwBqCHoIbAgHAGoIeAh6CAcAbQh5CGsIBwBtCHsIeQgHAGwIfAhuCAcAbAh6CHwIBwBuCHEIYwgHAG4IfAhxCAcAZAh7CG0IBwBkCHIIewgHAHAIfQhvCAcAcAh+CH0IBwBxCH4IcAgHAHEIfwh+CAcAbwiACHIIBwBvCH0IgAgHAHQIgQhzCAcAdAiCCIEIBwB1CIIIdAgHAHUIgwiCCAcAcwiECHYIBwBzCIEIhAgHAHcIgwh1CAcAdwiFCIMIBwB2CIYIeAgHAHYIhAiGCAcAeQiFCHcIBwB5CIcIhQgHAHgIiAh6CAcAeAiGCIgIBwB7CIcIeQgHAHsIiQiHCAcAegiKCHwIBwB6CIgIiggHAHwIfwhxCAcAfAiKCH8IBwByCIkIewgHAHIIgAiJCAcAfgiLCH0IBwB+CIwIiwgHAH8IjAh+CAcAfwiNCIwIBwB9CI4IgAgHAH0IiwiOCAcAggiPCIEIBwCCCJAIjwgHAIMIkAiCCAcAgwiRCJAIBwCBCJIIhAgHAIEIjwiSCAcAhQiRCIMIBwCFCJMIkQgHAIQIlAiGCAcAhAiSCJQIBwCHCJMIhQgHAIcIlQiTCAcAhgiWCIgIBwCGCJQIlggHAIkIlQiHCAcAiQiXCJUIBwCICJgIiggHAIgIlgiYCAcAigiNCH8IBwCKCJgIjQgHAIAIlwiJCAcAgAiOCJcIBwCMCJkIiwgHAIwImgiZCAcAjQiaCIwIBwCNCJsImggHAIsInAiOCAcAiwiZCJwIBwCQCJ0IjwgHAJAIngidCAcAkQieCJAIBwCRCJ8InggHAI8IoAiSCAcAjwidCKAIBwCTCJ8IkQgHAJMIoQifCAcAkgiiCJQIBwCSCKAIoggHAJUIoQiTCAcAlQijCKEIBwCUCKQIlggHAJQIogikCAcAlwijCJUIBwCXCKUIowgHAJYIpgiYCAcAlgikCKYIBwCYCJsIjQgHAJgIpgibCAcAjgilCJcIBwCOCJwIpQgHAJoIpwiZCAcAmgioCKcIBwCbCKgImggHAJsIqQioCAcAmQiqCJwIBwCZCKcIqggHAJ4IqwidCAcAngisCKsIBwCfCKwInggHAJ8IrQisCAcAnQiuCKAIBwCdCKsIrggHAKEIrQifCAcAoQivCK0IBwCgCLAIoggHAKAIrgiwCAcAowivCKEIBwCjCLEIrwgHAKIIsgikCAcAogiwCLIIBwClCLEIowgHAKUIswixCAcApAi0CKYIBwCkCLIItAgHAKYIqQibCAcApgi0CKkIBwCcCLMIpQgHAJwIqgizCAcAqAi1CKcIBwCoCLYItQgHAKkItgioCAcAqQi3CLYIBwCnCLgIqggHAKcItQi4CAcArAi5CKsIBwCsCLoIuQgHAK0IugisCAcArQi7CLoIBwCrCLwIrggHAKsIuQi8CAcArwi7CK0IBwCvCL0IuwgHAK4IvgiwCAcArgi8CL4IBwCxCL0IrwgHALEIvwi9CAcAsAjACLIIBwCwCL4IwAgHALMIvwixCAcAswjBCL8IBwCyCMIItAgHALIIwAjCCAcAtAi3CKkIBwC0CMIItwgHAKoIwQizCAcAqgi4CMEIBwC2CMMItQgHALYIxAjDCAcAtwjECLYIBwC3CMUIxAgHALUIxgi4CAcAtQjDCMYIBwC6CMcIuQgHALoIyAjHCAcAuwjICLoIBwC7CMkIyAgHALkIygi8CAcAuQjHCMoIBwC9CMkIuwgHAL0IywjJCAcAvAjMCL4IBwC8CMoIzAgHAL8Iywi9CAcAvwjNCMsIBwC+CM4IwAgHAL4IzAjOCAcAwQjNCL8IBwDBCM8IzQgHAMAI0AjCCAcAwAjOCNAIBwDCCMUItwgHAMII0AjFCAcAuAjPCMEIBwC4CMYIzwgHAMQI0QjDCAcAxAjSCNEIBwABCNII/wcHAAEI0QjSCAcAxQjSCMQIBwDFCNMI0ggHAP8H0wgDCAcA/wfSCNMIBwDDCNQIxggHAMMI0QjUCAcABgjRCAEIBwAGCNQI0QgHAMgI1QjHCAcAyAjWCNUIBwDXCNYI2AgHANcI1QjWCAcAyQjWCMgIBwDJCNkI1ggHANgI2QjaCAcA2AjWCNkIBwDHCNsIyggHAMcI1QjbCAcA3AjVCNcIBwDcCNsI1QgHAMsI2QjJCAcAywjdCNkIBwDaCN0IDwgHANoI2QjdCAcAygjeCMwIBwDKCNsI3ggHABII2wjcCAcAEgjeCNsIBwDNCN0IywgHAM0I3wjdCAcADwjfCBMIBwAPCN0I3wgHAMwI4AjOCAcAzAjeCOAIBwAWCN4IEggHABYI4AjeCAcAzwjfCM0IBwDPCOEI3wgHABMI4QgXCAcAEwjfCOEIBwDOCOII0AgHAM4I4AjiCAcAGgjgCBYIBwAaCOII4AgHANAI0wjFCAcA0AjiCNMIBwADCOIIGggHAAMI0wjiCAcAxgjhCM8IBwDGCNQI4QgHABcI1AgGCAcAFwjhCNQIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ0wQdUDAAByYXY0LXNoaWVsZHMA4AFWDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ8wQZIDAAByYXY0LXRpcmUAwAE2DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kPSg9LD0wPTQ9OD08PUA9RD1IPUw9UD1UPVg9XD1gPWQ9aD1sPXA9dD14PXw9gD2EPYg9jD2QPZQ9mD2cPaA9pD2oPaw9sD20Pbg9vD3APcQ9yD3MPdA91D3YPdw94D3kPeg97D3wPfQ9+D38PgA+BD4IPgw+ED4UPhg+HD4gPiQ+KD4sPjA+ND44Pjw+QD5EPkg+TD5QPlQ+WD5cPmA+ZD5oPmw+cD50Png+fD6APoQ+iD6MPpA+lD6YPpw+oD6kPqg+rD6wPrQ+uD68PsA+xD7IPsw+0D7UPtg+3D7gPuQ+6D7sPvA+9D74Pvw/AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MP1A/VD9YP1w/YD9kP2g/bD9wP3Q/eD98P4A/hD+IP4w/kD+UP5g/nD+gP6Q/qD+sP7A/tD+4P7w/wD/EP8g/zD/QP9Q/2D/cP+A/5D/oP+w/8D/0P/g//DwAQARACEAMQBBAFEAYQBxAIEAkQChALEAwQDRAOEA8QEBAREBIQExAUEBUQFhAXEBgQGRAaEBsQHBAdEB4QHxAgECEQIhAjECQQJRAmECcQKBApECoQKxAsEC0QLhAvEDAQMRAyEDMQNBA1EDYQNxA4EDkQOhA7EDwQPRA+ED8QQBBBEEIQQxBEEEUQRhBHEEgQSRBKEEsQTBBNEE4QTxBQEFEQUhBTEFQQVRBWEFcQWBBZEFoQWxBcEF0QXhBfEGAQYRBiEGMQZBBlEGYQZxBoEGkQahBrEGwQbRBuEG8QcBBxEHIQcxB0EHUQdhB3EHgQeRB6EHsQfBB9EH4QfxCAEIEQghCDEIQQhRCGEIcQiBCJEIoQixCMEI0QjhCPEJAQkRCSEJMQlBCVEJYQlxCYEJkQmhCbEJwQnRCeEJ8QoBChEKIQoxCkEKUQphCnEKgQqRCqEKsQrBCtEK4QrxCwELEQshCzELQQtRC2ELcQuBC5ELoQuxC8EL0QvhC/EMAQwRDCEMMQxBDFEMYQxxDIEMkQyhDLEMwQzRDOEM8Q0BDRENIQ0xDUENUQ1hDXENgQ2RDaENsQ3BDdEN4Q3xDgEOEQ4hDjEOQQ5RDmEOcQ6BDpEOoQ6xDsEO0Q7hDvEPAQ8RDyEPMQ9BD1EFBB3kMAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPQAAgD8AAAAAAAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAQAAgAFAAcABAAAAAIABwAGAAUABwAHAAYABAAFAAcACAAHAAkABwAIAAYABwAHAAoACQALAAcACgAIAAkABwAMAAsADQAHAAwACgALAAcADgANAA8ABwAOAAwADQAHABAADwARAAcAEAAOAA8ABwASABEAEwAHABIAEAARAAcAFAATABUABwAUABIAEwAHABYAFQAXAAcAFgAUABUABwAYABcAGQAHABgAFgAXAAcAGgAZABsABwAaABgAGQAHABwAGwAdAAcAHAAaABsABwAeABwAHQAHAB4AHwAcAAcAIAAfAB4ABwAgACEAHwAHACIAIQAgAAcAIgAjACEABwAkACMAIgAHACQAJQAjAAcAJgAlACQABwAmACcAJQAHACgAJwAmAAcAKAApACcABwAqACkAKAAHACoAKwApAAcALAArACoABwAsAC0AKwAHAC4ALQAsAAcALgAvAC0ABwAwAC8ALgAHADAAMQAvAAcAMgAxADAABwAyADMAMQAHADQAMwAyAAcANAA1ADMABwA2ADUANAAHADYANwA1AAcAOAA3ADYABwA4ADkANwAHADoAOQA4AAcAOgA7ADkABwA8ADsAOgAHADwAPQA7AAcAPgA9ADwABwA+AD8APQAHAEAAPwA+AAcAQABBAD8ABwBCAEEAQAAHAEIAQwBBAAcARABDAEIABwBEAEUAQwAHAEYARQBEAAcARgBHAEUABwBIAEcARgAHAEgASQBHAAcASgBJAEgABwBKAEsASQAHAEwASwBKAAcATABNAEsABwBOAE0ATAAHAE4ATwBNAAcAUABOAFEABwBQAE8ATgAHAFIAUQBTAAcAUgBQAFEABwBUAFMAVQAHAFQAUgBTAAcAVgBVAFcABwBWAFQAVQAHAFgAVwBZAAcAWABWAFcABwBaAFkAWwAHAFoAWABZAAcAXABbAF0ABwBcAFoAWwAHAF4AXQBfAAcAXgBcAF0ABwBgAF8AYQAHAGAAXgBfAAcAYgBhAGMABwBiAGAAYQAHAAMAYwABAAcAAwBiAGMABwBkAAMAAAAHAGQAZQADAAcAZgAAAAQABwBmAGQAAAAHAGcABAAGAAcAZwBmAAQABwBoAAYACAAHAGgAZwAGAAcAaQAIAAoABwBpAGgACAAHAGoACgAMAAcAagBpAAoABwBrAAwADgAHAGsAagAMAAcAbAAOABAABwBsAGsADgAHAG0AEAASAAcAbQBsABAABwBuABIAFAAHAG4AbQASAAcAbwAUABYABwBvAG4AFAAHAHAAFgAYAAcAcABvABYABwBxABgAGgAHAHEAcAAYAAcAcgAaABwABwByAHEAGgAHAB8AcgAcAAcAHwBzAHIABwAhAHMAHwAHACEAdABzAAcAIwB0ACEABwAjAHUAdAAHACUAdQAjAAcAJQB2AHUABwAnAHYAJQAHACcAdwB2AAcAKQB3ACcABwApAHgAdwAHACsAeAApAAcAKwB5AHgABwAtAHkAKwAHAC0AegB5AAcALwB6AC0ABwAvAHsAegAHADEAewAvAAcAMQB8AHsABwAzAHwAMQAHADMAfQB8AAcANQB9ADMABwA1AH4AfQAHADcAfgA1AAcANwB/AH4ABwA5AH8ANwAHADkAgAB/AAcAOwCAADkABwA7AIEAgAAHAD0AgQA7AAcAPQCCAIEABwA/AIIAPQAHAD8AgwCCAAcAQQCDAD8ABwBBAIQAgwAHAEMAhABBAAcAQwCFAIQABwBFAIUAQwAHAEUAhgCFAAcARwCGAEUABwBHAIcAhgAHAEkAhwBHAAcASQCIAIcABwBLAIgASQAHAEsAiQCIAAcATQCJAEsABwBNAIoAiQAHAE8AigBNAAcATwCLAIoABwCMAE8AUAAHAIwAiwBPAAcAjQBQAFIABwCNAIwAUAAHAI4AUgBUAAcAjgCNAFIABwCPAFQAVgAHAI8AjgBUAAcAkABWAFgABwCQAI8AVgAHAJEAWABaAAcAkQCQAFgABwCSAFoAXAAHAJIAkQBaAAcAkwBcAF4ABwCTAJIAXAAHAJQAXgBgAAcAlACTAF4ABwCVAGAAYgAHAJUAlABgAAcAZQBiAAMABwBlAJUAYgAHAJYAZACXAAcAlgBlAGQABwCYAGQAZgAHAJgAlwBkAAcAmQBmAGcABwCZAJgAZgAHAJoAZwBoAAcAmgCZAGcABwCbAGgAaQAHAJsAmgBoAAcAnABpAGoABwCcAJsAaQAHAJ0AagBrAAcAnQCcAGoABwCeAGsAbAAHAJ4AnQBrAAcAnwBsAG0ABwCfAJ4AbAAHAKAAbQBuAAcAoACfAG0ABwChAG4AbwAHAKEAoABuAAcAogBvAHAABwCiAKEAbwAHAKMAcABxAAcAowCiAHAABwCkAHEAcgAHAKQAowBxAAcAcwCkAHIABwBzAKUApAAHAHQApQBzAAcAdACmAKUABwB1AKYAdAAHAHUApwCmAAcAdgCnAHUABwB2AKgApwAHAHcAqAB2AAcAdwCpAKgABwB4AKkAdwAHAHgAqgCpAAcAeQCqAHgABwB5AKsAqgAHAHoAqwB5AAcAegCsAKsABwB7AKwAegAHAHsArQCsAAcAfACtAHsABwB8AK4ArQAHAH0ArgB8AAcAfQCvAK4ABwB+AK8AfQAHAH4AsACvAAcAfwCwAH4ABwB/ALEAsAAHAH8AsgCxAAcAfwCAALIABwCAALMAsgAHAIAAgQCzAAcAgQC0ALMABwCBAIIAtAAHAIIAtQC0AAcAggCDALUABwCDALYAtQAHAIMAhAC2AAcAhAC3ALYABwCEAIUAtwAHAIUAuAC3AAcAhQCGALgABwCGALkAuAAHAIYAhwC5AAcAhwC6ALkABwCHAIgAugAHAIgAuwC6AAcAiACJALsABwCJALwAuwAHAIkAigC8AAcAigC9ALwABwCKAIsAvQAHAL0AjAC+AAcAvQCLAIwABwC+AI0AvwAHAL4AjACNAAcAvwCOAMAABwC/AI0AjgAHAMAAjwDBAAcAwACOAI8ABwDBAJAAwgAHAMEAjwCQAAcAwgCRAMMABwDCAJAAkQAHAMMAkgDEAAcAwwCRAJIABwDEAJMAxQAHAMQAkgCTAAcAxQCUAMYABwDFAJMAlAAHAMYAlQDHAAcAxgCUAJUABwDHAGUAlgAHAMcAlQBlAAcAyADEAMUABwDIAMkAxAAHAMYAyADFAAcAxgDKAMgABwDHAMoAxgAHAMcAywDKAAcAmADMAJcABwCYAM0AzAAHAJkAzQCYAAcAmQDOAM0ABwCaAM4AmQAHAJoAzwDOAAcAnQDQAJwABwCdANEA0AAHAJ4A0QCdAAcAngDSANEABwCfANIAngAHAJ8A0wDSAAcAoQDUANUABwChAKIA1AAHAKIA1gDUAAcAogCjANYABwCjANcA1gAHAKMApADXAAcApgDYANkABwCmAKcA2AAHAKcA2gDYAAcApwCoANoABwCoANsA2gAHAKgAqQDbAAcAqwDcAN0ABwCrAKwA3AAHANwArQDeAAcA3ACsAK0ABwDeAK4A3wAHAN4ArQCuAAcA4ACxAOEABwDgALAAsQAHAOEAsgDiAAcA4QCxALIABwDiALMA4wAHAOIAsgCzAAcA5AC2AOUABwDkALUAtgAHAOUAtwDmAAcA5QC2ALcABwDmALgA5wAHAOYAtwC4AAcA6AC6ALsABwDoAOkAugAHAOoAuwC8AAcA6gDoALsABwDrALwAvQAHAOsA6gC8AAcA7AC/AMAABwDsAO0AvwAHAO4AwADBAAcA7gDsAMAABwDvAMEAwgAHAO8A7gDBAAcA8ADJAMgABwDwAPEAyQAHAMoA8ADIAAcAygDyAPAABwDLAPIAygAHAMsA8wDyAAcAzQD0AMwABwDNAPUA9AAHAM4A9QDNAAcAzgD2APUABwDPAPYAzgAHAM8A9wD2AAcA0QD4ANAABwDRAPkA+AAHANIA+QDRAAcA0gD6APkABwDTAPoA0gAHANMA+wD6AAcA1QD8AP0ABwDVANQA/AAHANQA/gD8AAcA1ADWAP4ABwDWAP8A/gAHANYA1wD/AAcA2QAAAQEBBwDZANgAAAEHANgAAgEAAQcA2ADaAAIBBwDaAAMBAgEHANoA2wADAQcA3QAEAQUBBwDdANwABAEHAAQB3gAGAQcABAHcAN4ABwAGAd8ABwEHAAYB3gDfAAcACAHhAAkBBwAIAeAA4QAHAAkB4gAKAQcACQHhAOIABwAKAeMACwEHAAoB4gDjAAcADAHlAA0BBwAMAeQA5QAHAA0B5gAOAQcADQHlAOYABwAOAecADwEHAA4B5gDnAAcAEAHpAOgABwAQAREB6QAHABIB6ADqAAcAEgEQAegABwATAeoA6wAHABMBEgHqAAcAFAHtAOwABwAUARUB7QAHABYB7ADuAAcAFgEUAewABwAXAe4A7wAHABcBFgHuAAcAGAEZAfEABwAYARoBGQEHABsB8QDwAAcAGwEYAfEABwDyABsB8AAHAPIAHAEbAQcA8wAcAfIABwDzAB0BHAEHAB4BHQHzAAcAHgEfAR0BBwD0AB8BHgEHAPQAIAEfAQcA9QAgAfQABwD1ACEBIAEHAPYAIQH1AAcA9gAiASEBBwD3ACIB9gAHAPcAIwEiAQcAJAEjAfcABwAkASUBIwEHAPgAJQEkAQcA+AAmASUBBwD5ACYB+AAHAPkAJwEmAQcA+gAnAfkABwD6ACgBJwEHAPsAKAH6AAcA+wApASgBBwAqASkB+wAHACoBKwEpAQcAKgEsASsBBwAqAf0ALAEHAP0ALQEsAQcA/QD8AC0BBwD8AC4BLQEHAPwA/gAuAQcA/gAvAS4BBwD+AP8ALwEHAP8AMAEvAQcA/wAxATABBwAxATIBMAEHADEBAQEyAQcAAQEzATIBBwABAQABMwEHAAABNAEzAQcAAAECATQBBwACATUBNAEHAAIBAwE1AQcAAwE2ATUBBwADATcBNgEHADcBOAE2AQcANwEFATgBBwAFATkBOAEHAAUBBAE5AQcAOQEGAToBBwA5AQQBBgEHADoBBwE7AQcAOgEGAQcBBwA7ATwBPQEHADsBBwE8AQcAPQEIAT4BBwA9ATwBCAEHAD4BCQE/AQcAPgEIAQkBBwA/AQoBQAEHAD8BCQEKAQcAQAELAUEBBwBAAQoBCwEHAEEBQgFDAQcAQQELAUIBBwBDAQwBRAEHAEMBQgEMAQcARAENAUUBBwBEAQwBDQEHAEUBDgFGAQcARQENAQ4BBwBGAQ8BRwEHAEYBDgEPAQcASAEPAUkBBwBIAUcBDwEHAEoBSQERAQcASgFIAUkBBwBLAREBEAEHAEsBSgERAQcATAEQARIBBwBMAUsBEAEHAE0BEgETAQcATQFMARIBBwBOARMBTwEHAE4BTQETAQcAUAFPARUBBwBQAU4BTwEHAFEBFQEUAQcAUQFQARUBBwBSARQBFgEHAFIBUQEUAQcAUwEWARcBBwBTAVIBFgEHABoBFwEZAQcAGgFTARcBBwBUARgBVQEHAFQBGgEYAQcAVQEbAVYBBwBVARgBGwEHABsBVwFWAQcAGwEcAVcBBwAcAVgBVwEHABwBHQFYAQcAHQFZAVgBBwAdAR8BWQEHAB8BWgFZAQcAHwEgAVoBBwAgAVsBWgEHACABIQFbAQcAIQFcAVsBBwAhASIBXAEHACIBXQFcAQcAIgEjAV0BBwAjAV4BXQEHACMBJQFeAQcAJQFfAV4BBwAlASYBXwEHACYBYAFfAQcAJgEnAWABBwAnAWEBYAEHACcBKAFhAQcAKAFiAWEBBwAoASkBYgEHACkBYwFiAQcAKQErAWMBBwAsAWMBKwEHACwBZAFjAQcALQFkASwBBwAtAWUBZAEHAC4BZQEtAQcALgFmAWUBBwAvAWYBLgEHAC8BZwFmAQcAMAFnAS8BBwAwAWgBZwEHADIBaAEwAQcAMgFpAWgBBwAzAWkBMgEHADMBagFpAQcANAFqATMBBwA0AWsBagEHADUBawE0AQcANQFsAWsBBwA2AWwBNQEHADYBbQFsAQcAOAFtATYBBwA4AW4BbQEHADkBbgE4AQcAOQFvAW4BBwBwATkBOgEHAHABbwE5AQcAcQE6ATsBBwBxAXABOgEHAHIBOwE9AQcAcgFxATsBBwBzAT0BPgEHAHMBcgE9AQcAdAE+AT8BBwB0AXMBPgEHAHUBPwFAAQcAdQF0AT8BBwB2AUABQQEHAHYBdQFAAQcAdwFBAUMBBwB3AXYBQQEHAHgBQwFEAQcAeAF3AUMBBwB5AUQBRQEHAHkBeAFEAQcAegFFAUYBBwB6AXkBRQEHAHsBRgFHAQcAewF6AUYBBwB7AUgBfAEHAHsBRwFIAQcAfAFKAX0BBwB8AUgBSgEHAH0BSwF+AQcAfQFKAUsBBwB+AUwBfwEHAH4BSwFMAQcAfwFNAYABBwB/AUwBTQEHAIABTgGBAQcAgAFNAU4BBwCBAVABggEHAIEBTgFQAQcAggFRAYMBBwCCAVABUQEHAIMBUgGEAQcAgwFRAVIBBwCEAVMBhQEHAIQBUgFTAQcAhQEaAVQBBwCFAVMBGgEHAIYBVQGHAQcAhgFUAVUBBwCHAVYBiAEHAIcBVQFWAQcAVgGJAYgBBwBWAVcBiQEHAFcBigGJAQcAVwFYAYoBBwBYAYsBigEHAFgBWQGLAQcAWQGMAYsBBwBZAVoBjAEHAFoBjQGMAQcAWgFbAY0BBwBbAY4BjQEHAFsBXAGOAQcAXAGPAY4BBwBcAV0BjwEHAF0BkAGPAQcAXQFeAZABBwBeAZEBkAEHAF4BXwGRAQcAXwGSAZEBBwBfAWABkgEHAGABkwGSAQcAYAFhAZMBBwBhAZQBkwEHAGEBYgGUAQcAYgGVAZQBBwBiAWMBlQEHAGQBlQFjAQcAZAGWAZUBBwBlAZYBZAEHAGUBlwGWAQcAZgGXAWUBBwBmAZgBlwEHAGcBmAFmAQcAZwGZAZgBBwBoAZkBZwEHAGgBmgGZAQcAaQGaAWgBBwBpAZsBmgEHAGoBmwFpAQcAagGcAZsBBwBrAZwBagEHAGsBnQGcAQcAbAGdAWsBBwBsAZ4BnQEHAG0BngFsAQcAbQGfAZ4BBwBuAZ8BbQEHAG4BoAGfAQcAbwGgAW4BBwBvAaEBoAEHAKIBbwFwAQcAogGhAW8BBwCjAXABcQEHAKMBogFwAQcApAFxAXIBBwCkAaMBcQEHAKUBcgFzAQcApQGkAXIBBwCmAXMBdAEHAKYBpQFzAQcApwF0AXUBBwCnAaYBdAEHAKgBdQF2AQcAqAGnAXUBBwCpAXYBdwEHAKkBqAF2AQcAqgF3AXgBBwCqAakBdwEHAKsBeAF5AQcAqwGqAXgBBwCsAXkBegEHAKwBqwF5AQcArQF6AXsBBwCtAawBegEHAK0BfAGuAQcArQF7AXwBBwCuAX0BrwEHAK4BfAF9AQcArwF+AbABBwCvAX0BfgEHALABfwGxAQcAsAF+AX8BBwCxAYABsgEHALEBfwGAAQcAsgGBAbMBBwCyAYABgQEHALMBggG0AQcAswGBAYIBBwC0AYMBtQEHALQBggGDAQcAtQGEAbYBBwC1AYMBhAEHALYBhQG3AQcAtgGEAYUBBwC3AVQBhgEHALcBhQFUAQcAuAGHAbkBBwC4AYYBhwEHALkBiAG6AQcAuQGHAYgBBwCIAbsBugEHAIgBiQG7AQcAiQG8AbsBBwCJAYoBvAEHAIoBvQG8AQcAigGLAb0BBwCLAb4BvQEHAIsBjAG+AQcAjAG/Ab4BBwCMAY0BvwEHAI0BwAG/AQcAjQGOAcABBwCOAcEBwAEHAI4BjwHBAQcAjwHCAcEBBwCPAZABwgEHAJABwwHCAQcAkAGRAcMBBwCRAcQBwwEHAJEBkgHEAQcAkgHFAcQBBwCSAZMBxQEHAJMBxgHFAQcAkwGUAcYBBwCUAccBxgEHAJQBlQHHAQcAlgHHAZUBBwCWAcgBxwEHAJcByAGWAQcAlwHJAcgBBwCYAckBlwEHAJgBygHJAQcAmQHKAZgBBwCZAcsBygEHAJoBywGZAQcAmgHMAcsBBwCbAcwBmgEHAJsBzQHMAQcAnAHNAZsBBwCcAc4BzQEHAJ0BzgGcAQcAnQHPAc4BBwCeAc8BnQEHAJ4B0AHPAQcAnwHQAZ4BBwCfAdEB0AEHAKAB0QGfAQcAoAHSAdEBBwChAdIBoAEHAKEB0wHSAQcA1AGhAaIBBwDUAdMBoQEHANUBogGjAQcA1QHUAaIBBwDWAaMBpAEHANYB1QGjAQcA1wGkAaUBBwDXAdYBpAEHANgBpQGmAQcA2AHXAaUBBwDZAaYBpwEHANkB2AGmAQcA2gGnAagBBwDaAdkBpwEHANsBqAGpAQcA2wHaAagBBwDcAakBqgEHANwB2wGpAQcA3QGqAasBBwDdAdwBqgEHAN4BqwGsAQcA3gHdAasBBwDfAawBrQEHAN8B3gGsAQcA3wGuAeABBwDfAa0BrgEHAOABrwHhAQcA4AGuAa8BBwDhAbAB4gEHAOEBrwGwAQcA4gGxAeMBBwDiAbABsQEHAOMBsgHkAQcA4wGxAbIBBwDkAbMB5QEHAOQBsgGzAQcA5QG0AeYBBwDlAbMBtAEHAOYBtQHnAQcA5gG0AbUBBwDnAbYB6AEHAOcBtQG2AQcA6AG3AekBBwDoAbYBtwEHAOkBhgG4AQcA6QG3AYYBBwDqAbgBuQEHAOoB6wG4AQcA7AG5AboBBwDsAeoBuQEHALsB7AG6AQcAuwHtAewBBwC8Ae0BuwEHALwB7gHtAQcAvQHuAbwBBwC9Ae8B7gEHAL4B7wG9AQcAvgHwAe8BBwC/AfABvgEHAL8B8QHwAQcAwAHxAb8BBwDAAfIB8QEHAMEB8gHAAQcAwQHzAfIBBwDCAfMBwQEHAMIB9AHzAQcAwwH0AcIBBwDDAfUB9AEHAMQB9QHDAQcAxAH2AfUBBwDFAfYBxAEHAMUB9wH2AQcAxgH3AcUBBwDGAfgB9wEHAMcB+AHGAQcAxwH5AfgBBwDIAfkBxwEHAMgB+gH5AQcAyQH6AcgBBwDJAfsB+gEHAMoB+wHJAQcAygH8AfsBBwDLAfwBygEHAMsB/QH8AQcAzAH9AcsBBwDMAf4B/QEHAM0B/gHMAQcAzQH/Af4BBwDOAf8BzQEHAM4BAAL/AQcAzwEAAs4BBwDPAQECAAIHANABAQLPAQcA0AECAgECBwDRAQIC0AEHANEBAwICAgcA0gEDAtEBBwDSAQQCAwIHANMBBALSAQcA0wEFAgQCBwAGAtMB1AEHAAYCBQLTAQcABwLUAdUBBwAHAgYC1AEHAAgC1QHWAQcACAIHAtUBBwAJAtYB1wEHAAkCCALWAQcACgLXAdgBBwAKAgkC1wEHAAsC2AHZAQcACwIKAtgBBwAMAtkB2gEHAAwCCwLZAQcADQLaAdsBBwANAgwC2gEHAA4C2wHcAQcADgINAtsBBwAPAtwB3QEHAA8CDgLcAQcAEALdAd4BBwAQAg8C3QEHABEC3gHfAQcAEQIQAt4BBwASAt8B4AEHABICEQLfAQcAEwLgAeEBBwATAhIC4AEHABQC4QHiAQcAFAITAuEBBwAVAuIB4wEHABUCFALiAQcAFgLjAeQBBwAWAhUC4wEHABcC5AHlAQcAFwIWAuQBBwAYAuUB5gEHABgCFwLlAQcAGQLmAecBBwAZAhgC5gEHABoC5wHoAQcAGgIZAucBBwAbAugB6QEHABsCGgLoAQcA6wHpAbgBBwDrARsC6QEHAMQAHAIdAgcAxADJABwCBwAeAsQAHQIHAB4CwwDEAAcAxwAfAiACBwDHAJYAHwIHACECxwAgAgcAIQLLAMcABwCWACICHwIHAJYAlwAiAgcAlwAjAiICBwCXAMwAIwIHAJoAJAIlAgcAmgCbACQCBwAmApoAJQIHACYCzwCaAAcAmwAnAiQCBwCbAJwAJwIHAJwAKAInAgcAnADQACgCBwCfACkCKgIHAJ8AoAApAgcAKwKfACoCBwArAtMAnwAHAKAALAIpAgcAoAChACwCBwAsAtUALQIHACwCoQDVAAcA1wAuAi8CBwDXAKQALgIHAKQAMAIuAgcApAClADACBwClADECMAIHAKUApgAxAgcAMQLZADICBwAxAqYA2QAHANsAMwI0AgcA2wCpADMCBwCpADUCMwIHAKkAqgA1AgcAqgA2AjUCBwCqAKsANgIHADYC3QA3AgcANgKrAN0ABwDfADgCOQIHAN8ArgA4AgcAOAKvADoCBwA4Aq4ArwAHADoCsAA7AgcAOgKvALAABwA7AuAAPAIHADsCsADgAAcA4wA9Aj4CBwDjALMAPQIHAD0CtAA/AgcAPQKzALQABwA/ArUAQAIHAD8CtAC1AAcAQALkAEECBwBAArUA5AAHAOcAQgJDAgcA5wC4AEICBwBCArkARAIHAEICuAC5AAcAugBFAkYCBwC6AOkARQIHAEQCugBGAgcARAK5ALoABwBHAr0ASAIHAEcC6wC9AAcASAK+AEkCBwBIAr0AvgAHAL8ASgJLAgcAvwDtAEoCBwBJAr8ASwIHAEkCvgC/AAcATALCAE0CBwBMAu8AwgAHAE0CwwAeAgcATQLCAMMABwDJAE4CHAIHAMkA8QBOAgcA8QBPAk4CBwDxABkBTwIHAFAC8wBRAgcAUAIeAfMABwBRAssAIQIHAFEC8wDLAAcAzABSAiMCBwDMAPQAUgIHAFICHgFQAgcAUgL0AB4BBwBTAvcAVAIHAFMCJAH3AAcAVALPACYCBwBUAvcAzwAHANAAVQIoAgcA0AD4AFUCBwBVAiQBUwIHAFUC+AAkAQcAVgL7AFcCBwBWAioB+wAHAFcC0wArAgcAVwL7ANMABwAtAv0AWAIHAC0C1QD9AAcAWAIqAVYCBwBYAv0AKgEHAP8ALwJZAgcA/wDXAC8CBwBaAv8AWQIHAFoCMQH/AAcAMgIBAVsCBwAyAtkAAQEHAFsCMQFaAgcAWwIBATEBBwADATQCXAIHAAMB2wA0AgcAXQIDAVwCBwBdAjcBAwEHADcCBQFeAgcANwLdAAUBBwBeAjcBXQIHAF4CBQE3AQcAPAFfAmACBwA8AQcBXwIHAAcBOQJfAgcABwHfADkCBwAIAWACYQIHAAgBPAFgAgcAPAIIAWECBwA8AuAACAEHAEIBYgJjAgcAQgELAWICBwALAT4CYgIHAAsB4wA+AgcADAFjAmQCBwAMAUIBYwIHAEECDAFkAgcAQQLkAAwBBwBJAWUCZgIHAEkBDwFlAgcADwFDAmUCBwAPAecAQwIHAOkAZwJFAgcA6QARAWcCBwARAWYCZwIHABEBSQFmAgcATwFoAmkCBwBPARMBaAIHAGgC6wBHAgcAaAITAesABwDtAGoCSgIHAO0AFQFqAgcAFQFpAmoCBwAVAU8BaQIHABkBawJPAgcAGQEXAWsCBwBrAu8ATAIHAGsCFwHvAAcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHcCfAJ1AgcAdwJ9AnwCBwB+AnsCeAIHAH4CfwJ7AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCDAogCgQIHAIMCiQKIAgcAigKHAoQCBwCKAosChwIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAlAKOApUCBwCUAowCjgIHAJIClgKXAgcAkgKRApYCBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAKACmgKhAgcAoAKYApoCBwCeAqICowIHAJ4CnQKiAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCsAqYCrQIHAKwCpAKmAgcAqgKuAq8CBwCqAqkCrgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAuAKyArkCBwC4ArACsgIHALYCugK7AgcAtgK1AroCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAMQCvgLFAgcAxAK8Ar4CBwDCAsYCxwIHAMICwQLGAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDLAtACyQIHAMsC0QLQAgcA0gLPAswCBwDSAtMCzwIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA1wLcAtUCBwDXAt0C3AIHAN4C2wLYAgcA3gLfAtsCBwDgAm4C4QIHAOACbAJuAgcAcgLiAuMCBwByAnEC4gIHAOIC5ALlAgcA4gJxAuQCBwBxAuYC5AIHAHECcwLmAgcAcwLnAuYCBwBzAnkC5wIHAHkC6ALnAgcAeQJ7AugCBwB7AukC6AIHAHsCfwLpAgcAfwLqAukCBwB/AoUC6gIHAIUC6wLqAgcAhQKHAusCBwCHAuwC6wIHAIcCiwLsAgcAiwLtAuwCBwCLAo8C7QIHAO0CjALuAgcA7QKPAowCBwDuApQC7wIHAO4CjAKUAgcA7wKbAvACBwDvApQCmwIHAPACmALxAgcA8AKbApgCBwDxAqAC8gIHAPECmAKgAgcA8gKnAvMCBwDyAqACpwIHAPMCpAL0AgcA8wKnAqQCBwD0AqwC9QIHAPQCpAKsAgcA9QKzAvYCBwD1AqwCswIHAPYCsAL3AgcA9gKzArACBwD3ArgC+AIHAPcCsAK4AgcA+AK/AvkCBwD4ArgCvwIHAPkCvAL6AgcA+QK/ArwCBwD6AsQC+wIHAPoCvALEAgcA+wLNAvwCBwD7AsQCzQIHAM0C/QL8AgcAzQLPAv0CBwDPAv4C/QIHAM8C0wL+AgcA0wL/Av4CBwDTAtkC/wIHANkCAAP/AgcA2QLbAgADBwDbAgEDAAMHANsC3wIBAwcA3wLlAgEDBwDfAuIC5QIHAOQCAgPlAgcA5AIDAwIDBwDmAgMD5AIHAOYCBAMDAwcA5gIFAwQDBwDmAucCBQMHAOcCBgMFAwcA5wLoAgYDBwDoAgcDBgMHAOgC6QIHAwcA6QIIAwcDBwDpAuoCCAMHAOoCCQMIAwcA6gLrAgkDBwDrAgoDCQMHAOsC7AIKAwcA7AILAwoDBwDsAu0CCwMHAAsD7gIMAwcACwPtAu4CBwAMA+8CDQMHAAwD7gLvAgcADQPwAg4DBwANA+8C8AIHAA4D8QIPAwcADgPwAvECBwAPA/ICEAMHAA8D8QLyAgcAEAPzAhEDBwAQA/IC8wIHABED9AISAwcAEQPzAvQCBwATA/QC9QIHABMDEgP0AgcAFAP1AvYCBwAUAxMD9QIHABUD9gL3AgcAFQMUA/YCBwAWA/cC+AIHABYDFQP3AgcAFwP4AvkCBwAXAxYD+AIHABgD+QL6AgcAGAMXA/kCBwAZA/oC+wIHABkDGAP6AgcAGgP7AvwCBwAaAxkD+wIHAP0CGgP8AgcA/QIbAxoDBwD+AhsD/QIHAP4CHAMbAwcA/wIcA/4CBwD/Ah0DHAMHAAADHQP/AgcAAAMeAx0DBwABAx4DAAMHAAEDHwMeAwcA5QIfAwEDBwDlAgIDHwMHAAIDIAMhAwcAAgMDAyADBwADAyIDIAMHAAMDBAMiAwcABAMjAyIDBwAEAwUDIwMHAAUDJAMjAwcABQMGAyQDBwAGAyUDJAMHAAYDBwMlAwcABwMmAyUDBwAHAwgDJgMHAAgDJwMmAwcACAMJAycDBwAJAygDJwMHAAkDCgMoAwcACgMpAygDBwAKAwsDKQMHACkDDAMqAwcAKQMLAwwDBwAqAw0DKwMHACoDDAMNAwcAKwMOAywDBwArAw0DDgMHACwDDwMtAwcALAMOAw8DBwAtAxADLgMHAC0DDwMQAwcALgMRAy8DBwAuAxADEQMHAC8DEgMwAwcALwMRAxIDBwAwAxMDMQMHADADEgMTAwcAMQMUAzIDBwAxAxMDFAMHADIDFQMzAwcAMgMUAxUDBwAzAxYDNAMHADMDFQMWAwcANAMXAzUDBwA0AxYDFwMHADUDGAM2AwcANQMXAxgDBwA2AxkDNwMHADYDGAMZAwcANwMaAzgDBwA3AxkDGgMHABoDOQM4AwcAGgMbAzkDBwAbAzoDOQMHABsDHAM6AwcAHAM7AzoDBwAcAx0DOwMHAB0DPAM7AwcAHQMeAzwDBwAeAz0DPAMHAB4DHwM9AwcAHwMhAz0DBwAfAwIDIQMHACEDPgM/AwcAIQMgAz4DBwAgA0ADPgMHACADIgNAAwcAIgNBA0ADBwAiAyMDQQMHACMDQgNBAwcAIwMkA0IDBwAkA0MDQgMHACQDJQNDAwcAJQNEA0MDBwAlAyYDRAMHACYDRQNEAwcAJgMnA0UDBwAnA0YDRQMHACcDKANGAwcAKANHA0YDBwAoAykDRwMHAEcDKgNIAwcARwMpAyoDBwBIAysDSQMHAEgDKgMrAwcASQMsA0oDBwBJAysDLAMHAEoDLQNLAwcASgMsAy0DBwBLAy4DTAMHAEsDLQMuAwcATAMvA00DBwBMAy4DLwMHAE0DMANOAwcATQMvAzADBwBOAzEDTwMHAE4DMAMxAwcATwMyA1ADBwBPAzEDMgMHAFADMwNRAwcAUAMyAzMDBwBRAzQDUgMHAFEDMwM0AwcAUgM1A1MDBwBSAzQDNQMHAFMDNgNUAwcAUwM1AzYDBwBUAzcDVQMHAFQDNgM3AwcAVQM4A1YDBwBVAzcDOAMHADgDVwNWAwcAOAM5A1cDBwA5A1gDVwMHADkDOgNYAwcAOgNZA1gDBwA6AzsDWQMHADsDWgNZAwcAOwM8A1oDBwA8A1sDWgMHADwDPQNbAwcAPQM/A1sDBwA9AyEDPwMHAFwDXQNeAwcAXANfA10DBwBgA14DYQMHAGADXANeAwcAYgNhA2MDBwBiA2ADYQMHAGQDYwNlAwcAZANiA2MDBwBmA2UDZwMHAGYDZANlAwcAaANnA2kDBwBoA2YDZwMHAGoDaQNrAwcAagNoA2kDBwBsA2sDbQMHAGwDagNrAwcAbgNsA20DBwBuA28DbAMHAHADbwNuAwcAcANxA28DBwByA3EDcAMHAHIDcwNxAwcAdANzA3IDBwB0A3UDcwMHAHYDdQN0AwcAdgN3A3UDBwB4A3cDdgMHAHgDeQN3AwcAegN5A3gDBwB6A3sDeQMHAHwDewN6AwcAfAN9A3sDBwB8A34DfQMHAHwDfwN+AwcAfwOAA34DBwB/A4EDgAMHAIEDggOAAwcAgQODA4IDBwCDA4QDggMHAIMDhQOEAwcAhQOGA4QDBwCFA4cDhgMHAIcDiAOGAwcAhwOJA4gDBwCJA4oDiAMHAIkDiwOKAwcAigOMA40DBwCKA4sDjAMHAI0DjgOPAwcAjQOMA44DBwCPA5ADkQMHAI8DjgOQAwcAkQOSA5MDBwCRA5ADkgMHAJMDlAOVAwcAkwOSA5QDBwCVA5YDlwMHAJUDlAOWAwcAlwNdA18DBwCXA5YDXQMHAJgDXwNcAwcAmAOZA18DBwCaA1wDYAMHAJoDmANcAwcAmwNgA2IDBwCbA5oDYAMHAJwDZgNoAwcAnAOdA2YDBwCeA2gDagMHAJ4DnANoAwcAnwNqA2wDBwCfA54DagMHAG8DnwNsAwcAbwOgA58DBwB1A6EDcwMHAHUDogOhAwcAdwOiA3UDBwB3A6MDogMHAHkDowN3AwcAeQOkA6MDBwB7A6QDeQMHAHsDpQOkAwcAfgOmA6cDBwB+A4ADpgMHAIADqAOmAwcAgAOCA6gDBwCCA6kDqAMHAIIDhAOpAwcAhAOqA6kDBwCEA4YDqgMHAKsDjQOsAwcAqwOKA40DBwCsA48DrQMHAKwDjQOPAwcArQORA64DBwCtA48DkQMHAK4DkwOvAwcArgORA5MDBwCwA18DmQMHALADlwNfAwcAsQOZA5gDBwCxA7IDmQMHALMDmAOaAwcAswOxA5gDBwC0A5oDmwMHALQDswOaAwcAtQObA7YDBwC1A7QDmwMHALcDtgOdAwcAtwO1A7YDBwC4A50DnAMHALgDtwOdAwcAuQOcA54DBwC5A7gDnAMHALoDngOfAwcAugO5A54DBwCgA7oDnwMHAKADuwO6AwcAvAO7A6ADBwC8A70DuwMHAKEDvQO8AwcAoQO+A70DBwCiA74DoQMHAKIDvwO+AwcAowO/A6IDBwCjA8ADvwMHAKQDwAOjAwcApAPBA8ADBwClA8EDpAMHAKUDwgPBAwcAwwPCA6UDBwDDA8QDwgMHAMMDxQPEAwcAwwOnA8UDBwCnA8YDxQMHAKcDpgPGAwcApgPHA8YDBwCmA6gDxwMHAKgDyAPHAwcAqAOpA8gDBwCpA8kDyAMHAKkDqgPJAwcAqgPKA8kDBwCqA8sDygMHAMsDzAPKAwcAywOrA8wDBwDMA6wDzQMHAMwDqwOsAwcAzQOtA84DBwDNA6wDrQMHAM4DrgPPAwcAzgOtA64DBwDPA68D0AMHAM8DrgOvAwcA0APRA9IDBwDQA68D0QMHANIDsAPTAwcA0gPRA7ADBwDTA5kDsgMHANMDsAOZAwcA1AOyA7EDBwDUA9UDsgMHANYDsQOzAwcA1gPUA7EDBwDXA7MDtAMHANcD1gOzAwcA2AO0A7UDBwDYA9cDtAMHANkDtQO3AwcA2QPYA7UDBwDaA7cDuAMHANoD2QO3AwcA2wO4A7kDBwDbA9oDuAMHANwDuQO6AwcA3APbA7kDBwC7A9wDugMHALsD3QPcAwcAvQPdA7sDBwC9A94D3QMHAL4D3gO9AwcAvgPfA94DBwC/A98DvgMHAL8D4APfAwcAwAPgA78DBwDAA+ED4AMHAMED4QPAAwcAwQPiA+EDBwDCA+IDwQMHAMID4wPiAwcAxAPjA8IDBwDEA+QD4wMHAMQD5QPkAwcAxAPFA+UDBwDFA+YD5QMHAMUDxgPmAwcAxgPnA+YDBwDGA8cD5wMHAMcD6APnAwcAxwPIA+gDBwDIA+kD6AMHAMgDyQPpAwcAyQPqA+kDBwDJA8oD6gMHAMoD6wPqAwcAygPMA+sDBwDrA80D7AMHAOsDzAPNAwcA7APOA+0DBwDsA80DzgMHAO0DzwPuAwcA7QPOA88DBwDuA9AD7wMHAO4DzwPQAwcA7wPSA/ADBwDvA9AD0gMHAPAD0wPxAwcA8APSA9MDBwDxA7ID1QMHAPED0wOyAwcA8gPUA/MDBwDyA9UD1AMHAPMD1gP0AwcA8wPUA9YDBwD0A9cD9QMHAPQD1gPXAwcA9QPYA/YDBwD1A9cD2AMHAPYD2QP3AwcA9gPYA9kDBwD3A9oD+AMHAPcD2QPaAwcA+APbA/kDBwD4A9oD2wMHAPkD3AP6AwcA+QPbA9wDBwDcA/sD+gMHANwD3QP7AwcA3QP8A/sDBwDdA94D/AMHAN4D/QP8AwcA3gPfA/0DBwDfA/4D/QMHAN8D4AP+AwcA4AP/A/4DBwDgA+ED/wMHAOEDAAT/AwcA4QPiAwAEBwDiAwEEAAQHAOID4wMBBAcA4wMCBAEEBwDjA+QDAgQHAOQDAwQCBAcA5APlAwMEBwDlAwQEAwQHAOUD5gMEBAcA5gMFBAQEBwDmA+cDBQQHAOcDBgQFBAcA5wPoAwYEBwDoAwcEBgQHAOgD6QMHBAcA6QMIBAcEBwDpA+oDCAQHAOoDCQQIBAcA6gPrAwkEBwAJBOwDCgQHAAkE6wPsAwcACgTtAwsEBwAKBOwD7QMHAAsE7gMMBAcACwTtA+4DBwAMBO8DDQQHAAwE7gPvAwcADQTwAw4EBwANBO8D8AMHAA4E8QMPBAcADgTwA/EDBwAPBNUD8gMHAA8E8QPVAwcAEATzAxEEBwAQBPID8wMHABEE9AMSBAcAEQTzA/QDBwASBPUDEwQHABIE9AP1AwcAEwT2AxQEBwATBPUD9gMHABQE9wMVBAcAFAT2A/cDBwAVBPgDFgQHABUE9wP4AwcAFgT5AxcEBwAWBPgD+QMHABcE+gMYBAcAFwT5A/oDBwD6AxkEGAQHAPoD+wMZBAcA+wMaBBkEBwD7A/wDGgQHAPwDGwQaBAcA/AP9AxsEBwD9AxwEGwQHAP0D/gMcBAcA/gMdBBwEBwD+A/8DHQQHAP8DHgQdBAcA/wMABB4EBwAABB8EHgQHAAAEAQQfBAcAAQQgBB8EBwABBAIEIAQHAAIEIQQgBAcAAgQDBCEEBwADBCIEIQQHAAMEBAQiBAcABAQjBCIEBwAEBAUEIwQHAAUEJAQjBAcABQQGBCQEBwAGBCUEJAQHAAYEBwQlBAcABwQmBCUEBwAHBAgEJgQHAAgEJwQmBAcACAQJBCcEBwAnBAoEKAQHACcECQQKBAcAKAQLBCkEBwAoBAoECwQHACkEDAQqBAcAKQQLBAwEBwAqBA0EKwQHACoEDAQNBAcAKwQOBCwEBwArBA0EDgQHACwEDwQtBAcALAQOBA8EBwAtBPIDEAQHAC0EDwTyAwcALgQQBBEEBwAuBC8EEAQHADAEEQQSBAcAMAQuBBEEBwAxBBIEEwQHADEEMAQSBAcAMgQTBBQEBwAyBDEEEwQHADMEFAQVBAcAMwQyBBQEBwA0BBUEFgQHADQEMwQVBAcANQQWBBcEBwA1BDQEFgQHADYEFwQYBAcANgQ1BBcEBwAZBDYEGAQHABkENwQ2BAcAGgQ3BBkEBwAaBDgENwQHABsEOAQaBAcAGwQ5BDgEBwAcBDkEGwQHABwEOgQ5BAcAHQQ6BBwEBwAdBDsEOgQHAB4EOwQdBAcAHgQ8BDsEBwAfBDwEHgQHAB8EPQQ8BAcAIAQ9BB8EBwAgBD4EPQQHACAEPwQ+BAcAIAQhBD8EBwAhBEAEPwQHACEEIgRABAcAIgRBBEAEBwAiBCMEQQQHACMEQgRBBAcAIwQkBEIEBwAkBEMEQgQHACQEJQRDBAcAJQREBEMEBwAlBCYERAQHACYERQREBAcAJgQnBEUEBwBFBCgERgQHAEUEJwQoBAcARgQpBEcEBwBGBCgEKQQHAEcEKgRIBAcARwQpBCoEBwBIBCsESQQHAEgEKgQrBAcASQQsBEoEBwBJBCsELAQHAEoELQRLBAcASgQsBC0EBwBLBBAELwQHAEsELQQQBAcATAR4A3YDBwBMBE0EeAMHAE0EegN4AwcATQROBHoDBwBOBHwDegMHAE4ETwR8AwcATwR/A3wDBwBPBFAEfwMHAFAEgQN/AwcAUARRBIEDBwBRBIMDgQMHAFEEUgSDAwcAUgSFA4MDBwBSBFMEhQMHAFMEhwOFAwcAUwRUBIcDBwBUBIkDhwMHAFQEVQSJAwcAVQSLA4kDBwBVBFYEiwMHAFYEjAOLAwcAVgRXBIwDBwBXBI4DjAMHAFcEWASOAwcAWASQA44DBwBYBFkEkAMHAFkEkgOQAwcAWQRaBJIDBwBaBJQDkgMHAFoEWwSUAwcAWwSWA5QDBwBbBFwElgMHAFwEXQOWAwcAXARdBF0DBwBdBF4DXQMHAF0EXgReAwcAXgRhA14DBwBeBF8EYQMHAF8EYwNhAwcAXwRgBGMDBwBgBGUDYwMHAGAEYQRlAwcAYQRnA2UDBwBhBGIEZwMHAGIEaQNnAwcAYgRjBGkDBwBjBGsDaQMHAGMEZARrAwcAZARtA2sDBwBkBGUEbQMHAGUEbgNtAwcAZQRmBG4DBwBmBHADbgMHAGYEZwRwAwcAZwRyA3ADBwBnBGgEcgMHAGgEdANyAwcAaARpBHQDBwBpBHYDdAMHAGkETAR2AwcAagS3Aq4CBwBqBGsEtwIHAE4EawRqBAcATgRNBGsEBwBrBLUCtwIHAGsEbAS1AgcATQRsBGsEBwBNBEwEbAQHAGwEugK1AgcAbARtBLoCBwBMBG0EbAQHAEwEaQRtBAcAbQTDAroCBwBtBG4EwwIHAGkEbgRtBAcAaQRoBG4EBwBuBMECwwIHAG4EbwTBAgcAaARvBG4EBwBoBGcEbwQHAG8ExgLBAgcAbwRwBMYCBwBnBHAEbwQHAGcEZgRwBAcAcATIAsYCBwBwBHEEyAIHAGYEcQRwBAcAZgRlBHEEBwBxBMsCyAIHAHEEcgTLAgcAZQRyBHEEBwBlBGQEcgQHAHIE0QLLAgcAcgRzBNECBwBkBHMEcgQHAGQEYwRzBAcAcwTUAtECBwBzBHQE1AIHAGMEdARzBAcAYwRiBHQEBwB0BNcC1AIHAHQEdQTXAgcAYgR1BHQEBwBiBGEEdQQHAHUE3QLXAgcAdQR2BN0CBwBhBHYEdQQHAGEEYAR2BAcAdgTgAt0CBwB2BHcE4AIHAGAEdwR2BAcAYARfBHcEBwB3BGwC4AIHAHcEeARsAgcAXwR4BHcEBwBfBF4EeAQHAHgEbwJsAgcAeAR5BG8CBwBeBHkEeAQHAF4EXQR5BAcAeQR0Am8CBwB5BHoEdAIHAF0EegR5BAcAXQRcBHoEBwB6BHcCdAIHAHoEewR3AgcAXAR7BHoEBwBcBFsEewQHAHsEfQJ3AgcAewR8BH0CBwBbBHwEewQHAFsEWgR8BAcAfASAAn0CBwB8BH0EgAIHAFoEfQR8BAcAWgRZBH0EBwB9BIMCgAIHAH0EfgSDAgcAWQR+BH0EBwBZBFgEfgQHAH4EiQKDAgcAfgR/BIkCBwBYBH8EfgQHAFgEVwR/BAcAfwSTAokCBwB/BIAEkwIHAFcEgAR/BAcAVwRWBIAEBwCABJECkwIHAIAEgQSRAgcAVgSBBIAEBwBWBFUEgQQHAIEElgKRAgcAgQSCBJYCBwBVBIIEgQQHAFUEVASCBAcAggSfApYCBwCCBIMEnwIHAFQEgwSCBAcAVARTBIMEBwCDBJ0CnwIHAIMEhASdAgcAUwSEBIMEBwBTBFIEhAQHAIQEogKdAgcAhASFBKICBwBSBIUEhAQHAFIEUQSFBAcAhQSrAqICBwCFBIYEqwIHAFEEhgSFBAcAUQRQBIYEBwCGBKkCqwIHAIYEhwSpAgcAUASHBIYEBwBQBE8EhwQHAIcErgKpAgcAhwRqBK4CBwBPBGoEhwQHAE8ETgRqBAcAcwKIBHkCBwBzAokEiAQHAIgEbwJ0AgcAiASJBG8CBwB/AooEhQIHAH8CiwSKBAcAigR9AoACBwCKBIsEfQIHAIwEjwKLAgcAjASNBI8CBwCNBIkCkwIHAI0EjASJAgcAjgSbApQCBwCOBI8EmwIHAI8ElgKfAgcAjwSOBJYCBwCQBKcCoAIHAJAEkQSnAgcAkQSiAqsCBwCRBJAEogIHAJIEswKsAgcAkgSTBLMCBwCTBK4CtwIHAJMEkgSuAgcAlAS/ArgCBwCUBJUEvwIHAJUEugLDAgcAlQSUBLoCBwDEApYEzQIHAMQClwSWBAcAlgTGAsgCBwCWBJcExgIHANMCmATZAgcA0wKZBJgEBwCYBNEC1AIHAJgEmQTRAgcA3wKaBOICBwDfApsEmgQHAJoE3QLgAgcAmgSbBN0CBwBtAokEnAQHAG0CbwKJBAcAnARzAnACBwCcBIkEcwIHAJ0EdAJ2AgcAnQSIBHQCBwB6AogEnQQHAHoCeQKIBAcAfAKLBJ4EBwB8An0CiwQHAJ4EfwJ+AgcAngSLBH8CBwCfBIACggIHAJ8EigSAAgcAhgKKBJ8EBwCGAoUCigQHAIgCjASgBAcAiAKJAowEBwCgBIsCigIHAKAEjASLAgcAoQSTApACBwChBI0EkwIHAI0CjQShBAcAjQKPAo0EBwCXAo4EogQHAJcClgKOBAcAogSUApUCBwCiBI4ElAIHAKMEnwKcAgcAowSPBJ8CBwCZAo8EowQHAJkCmwKPBAcAowKQBKQEBwCjAqICkAQHAKQEoAKhAgcApASQBKACBwClBKsCqAIHAKUEkQSrAgcApQKRBKUEBwClAqcCkQQHAK8CkgSmBAcArwKuApIEBwCmBKwCrQIHAKYEkgSsAgcApwS3ArQCBwCnBJMEtwIHALECkwSnBAcAsQKzApMEBwC7ApQEqAQHALsCugKUBAcAqAS4ArkCBwCoBJQEuAIHAKkEwwLAAgcAqQSVBMMCBwC9ApUEqQQHAL0CvwKVBAcAxwKXBKoEBwDHAsYClwQHAKoExALFAgcAqgSXBMQCBwCrBMgCygIHAKsElgTIAgcAzgKWBKsEBwDOAs0ClgQHANACmQSsBAcA0ALRApkEBwCsBNMC0gIHAKwEmQTTAgcArQTUAtYCBwCtBJgE1AIHANoCmAStBAcA2gLZApgEBwDcApsErgQHANwC3QKbBAcArgTfAt4CBwCuBJsE3wIHAK8E4ALhAgcArwSaBOACBwDjApoErwQHAOMC4gKaBAcAIAKqBCECBwAgAscCqgQHAB8CxwIgAgcAHwLCAscCBwDCAiICwAIHAMICHwIiAgcAxQIhAqoEBwDFAlECIQIHAMACIwKpBAcAwAIiAiMCBwCpBFICvQIHAKkEIwJSAgcAvgJRAsUCBwC+AlACUQIHAFACvQJSAgcAUAK+Ar0CBwDJAh0CygIHAMkCHgIdAgcA0AIeAskCBwDQAk0CHgIHAKwETQLQAgcArARMAk0CBwCsBGsCTAIHAKwE0gJrAgcAygIcAqsEBwDKAh0CHAIHAE4CqwQcAgcATgLOAqsEBwDOAk8CzAIHAM4CTgJPAgcAzAJrAtICBwDMAk8CawIHAGkC2gJqAgcAaQLYAtoCBwBpAt4C2AIHAGkCaALeAgcAagKtBEoCBwBqAtoCrQQHAEoC1gJLAgcASgKtBNYCBwBLAtUCSQIHAEsC1gLVAgcASQLcAkgCBwBJAtUC3AIHAEgCrgRHAgcASALcAq4EBwBHAt4CaAIHAEcCrgTeAgcARAJtAkICBwBEAm4CbQIHAEYCbgJEAgcARgLhAm4CBwBFAuECRgIHAEUCrwThAgcAZwKvBEUCBwBnAuMCrwQHAEICnARDAgcAQgJtApwEBwBDAnACZQIHAEMCnARwAgcAcgJlAnACBwByAmYCZQIHAOMCZgJyAgcA4wJnAmYCBwB6AmMCeAIHAHoCZAJjAgcAeAJiAn4CBwB4AmMCYgIHAH4CPgKeBAcAfgJiAj4CBwCeBD0CfAIHAJ4EPgI9AgcAPwJ8Aj0CBwA/AnUCfAIHAEACdQI/AgcAQAJ2AnUCBwBBAnYCQAIHAEECnQR2AgcAZAKdBEECBwBkAnoCnQQHAJ8EYQKGAgcAnwQ8AmECBwA8AoICOwIHADwCnwSCAgcAOwKBAjoCBwA7AoICgQIHADoCiAI4AgcAOgKBAogCBwA4AqAEOQIHADgCiAKgBAcAOQKKAl8CBwA5AqAEigIHAIQCXwKKAgcAhAJgAl8CBwBgAoYCYQIHAGAChAKGAgcAjQJdAo4CBwCNAl4CXQIHAFwCjgJdAgcAXAKVAo4CBwAzAqIENAIHADMClwKiBAcANQKXAjMCBwA1ApIClwIHADYCkgI1AgcANgKQApICBwA3ApACNgIHADcCoQSQAgcAoQReAo0CBwChBDcCXgIHADQClQJcAgcANAKiBJUCBwCkBC4CowIHAKQELwIuAgcAowIwAp4CBwCjAi4CMAIHAJ4CMQKcAgcAngIwAjECBwChAi8CpAQHAKECWQIvAgcAnAIyAqMEBwCcAjECMgIHAKMEWwKZAgcAowQyAlsCBwBaApkCWwIHAFoCmgKZAgcAWQKaAloCBwBZAqECmgIHAKgCLQKlBAcAqAIsAi0CBwClBFgCpQIHAKUELQJYAgcAqgIsAqgCBwCqAikCLAIHAK8CKQKqAgcArwIqAikCBwCmBCoCrwIHAKYEKwIqAgcArQIrAqYEBwCtAlcCKwIHAFYCpQJYAgcAVgKmAqUCBwBXAqYCVgIHAFcCrQKmAgcAtgInArQCBwC2AiQCJwIHALsCJAK2AgcAuwIlAiQCBwC0AigCpwQHALQCJwIoAgcApwRVArECBwCnBCgCVQIHAKgEJQK7AgcAqAQmAiUCBwC5AiYCqAQHALkCVAImAgcAUwKxAlUCBwBTArICsQIHAFQCsgJTAgcAVAK5ArICBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDIBMUEyQQHAMgExgTFBAcAygTJBMsEBwDKBMgEyQQHAMwEygTLBAcAzATNBMoEBwDOBM0EzAQHAM4EzwTNBAcAzgTEBM8EBwDOBMcExAQHANAE0QTSBAcA0ATTBNEEBwDUBNIE1QQHANQE0ATSBAcA1gTUBNUEBwDWBNcE1AQHANgE1wTWBAcA2ATZBNcEBwDYBNoE2QQHANgE2wTaBAcA2gTRBNMEBwDaBNsE0QQHANwE3QTeBAcA3ATfBN0EBwDgBNwE3gQHAOAE4QTcBAcA4gThBOAEBwDiBOME4QQHAOIE5ATjBAcA4gTlBOQEBwDkBOYE5wQHAOQE5QTmBAcA3wTmBN0EBwDfBOcE5gQHAOgE6QTqBAcA6ATrBOkEBwDsBOsE6AQHAOwE7QTrBAcA7ATuBO0EBwDsBO8E7gQHAO4E8ATxBAcA7gTvBPAEBwDyBPAE8wQHAPIE8QTwBAcA6QTzBOoEBwDpBPIE8wQHAPQE9QT2BAcA9AT3BPUEBwD0BPgE9wQHAPQE+QT4BAcA+AT6BPsEBwD4BPkE+gQHAPwE+gT9BAcA/AT7BPoEBwD+BP0E/wQHAP4E/AT9BAcA9gT+BP8EBwD2BPUE/gQHAAAFxgQBBQcAAAXEBMYEBwABBcgEAgUHAAEFxgTIBAcAAgXKBAMFBwACBcgEygQHAMoEBAUDBQcAygTNBAQFBwDNBAUFBAUHAM0EzwQFBQcAzwQABQUFBwDPBMQEAAUHAAYF0AQHBQcABgXTBNAEBwAHBdQECAUHAAcF0ATUBAcA1AQJBQgFBwDUBNcECQUHANcECgUJBQcA1wTZBAoFBwDZBAsFCgUHANkE2gQLBQcACwXTBAYFBwALBdoE0wQHAAwF3AQNBQcADAXfBNwEBwDcBA4FDQUHANwE4QQOBQcA4QQPBQ4FBwDhBOMEDwUHAOMEEAUPBQcA4wTkBBAFBwAQBecEEQUHABAF5ATnBAcAEQXfBAwFBwARBecE3wQHAOkEEgUTBQcA6QTrBBIFBwDrBBQFEgUHAOsE7QQUBQcA7QQVBRQFBwDtBO4EFQUHABUF8QQWBQcAFQXuBPEEBwAWBfIEFwUHABYF8QTyBAcAFwXpBBMFBwAXBfIE6QQHAPUEGAUZBQcA9QT3BBgFBwD3BBoFGAUHAPcE+AQaBQcAGgX7BBsFBwAaBfgE+wQHABsF/AQcBQcAGwX7BPwEBwAcBf4EHQUHABwF/AT+BAcA/gQZBR0FBwD+BPUEGQUHAB4FAQUfBQcAHgUABQEFBwAfBQIFIAUHAB8FAQUCBQcAIAUDBSEFBwAgBQIFAwUHAAMFIgUhBQcAAwUEBSIFBwAEBSMFIgUHAAQFBQUjBQcABQUeBSMFBwAFBQAFHgUHACQFBwUlBQcAJAUGBQcFBwAlBQgFJgUHACUFBwUIBQcACAUnBSYFBwAIBQkFJwUHAAkFKAUnBQcACQUKBSgFBwAKBSkFKAUHAAoFCwUpBQcAKQUGBSQFBwApBQsFBgUHACoFDQUrBQcAKgUMBQ0FBwANBSwFKwUHAA0FDgUsBQcADgUtBSwFBwAOBQ8FLQUHAA8FLgUtBQcADwUQBS4FBwAuBREFLwUHAC4FEAURBQcALwUMBSoFBwAvBREFDAUHABMFMAUxBQcAEwUSBTAFBwASBTIFMAUHABIFFAUyBQcAFAUzBTIFBwAUBRUFMwUHADMFFgU0BQcAMwUVBRYFBwA0BRcFNQUHADQFFgUXBQcANQUTBTEFBwA1BRcFEwUHABkFNgU3BQcAGQUYBTYFBwAYBTgFNgUHABgFGgU4BQcAOAUbBTkFBwA4BRoFGwUHADkFHAU6BQcAOQUbBRwFBwA6BR0FOwUHADoFHAUdBQcAHQU3BTsFBwAdBRkFNwUHALAEHwWzBAcAsAQeBR8FBwCxBB8FIAUHALEEswQfBQcAPAUgBSEFBwA8BbEEIAUHACIFPAUhBQcAIgU9BTwFBwAjBT0FIgUHACMFsgQ9BQcAIwWwBLIEBwAjBR4FsAQHALUEJAUlBQcAtQS3BCQFBwA+BSUFJgUHAD4FtQQlBQcAJwU+BSYFBwAnBT8FPgUHACgFPwUnBQcAKAW2BD8FBwAoBbQEtgQHACgFKQW0BAcAtAQkBbcEBwC0BCkFJAUHAEAFKgUrBQcAQAW5BCoFBwAsBUAFKwUHACwFQQVABQcALQVBBSwFBwAtBboEQQUHAC0FuAS6BAcALQUuBbgEBwC4BC8FuwQHALgELgUvBQcAuQQvBSoFBwC5BLsELwUHADAFQgUxBQcAMAVDBUIFBwAyBUMFMAUHADIFvgRDBQcAMgW8BL4EBwAyBTMFvAQHALwENAW/BAcAvAQzBTQFBwC9BDQFNQUHAL0EvwQ0BQcAQgU1BTEFBwBCBb0ENQUHADYFwAQ3BQcANgXDBMAEBwA2BcEEwwQHADYFOAXBBAcAwQQ5BUQFBwDBBDgFOQUHAEUFOQU6BQcARQVEBTkFBwDCBDoFOwUHAMIERQU6BQcANwXCBDsFBwA3BcAEwgQHADwFsgSxBAcAPAU9BbIEBwA+BbYEtQQHAD4FPwW2BAcAQAW6BLkEBwBABUEFugQHAEQFwgTBBAcARAVFBcIEBwBCBb4EvQQHAEIFQwW+BAcAZAPqBPMEBwBkA2YD6gQHAPMEYgNkAwcA8wTwBGIDBwDsBJ0DtgMHAOwE6ASdAwcA6ARmA50DBwDoBOoEZgMHAPAEmwNiAwcA8ATvBJsDBwDsBJsD7wQHAOwEtgObAwcA0QPeBLADBwDRA+AE3gQHAN4ElwOwAwcA3gTdBJcDBwDdBJUDlwMHAN0E5gSVAwcA5gSTA5UDBwDmBOUEkwMHAOUErwOTAwcA5QTiBK8DBwDgBK8D4gQHAOAE0QOvAwcAywPWBNUEBwDLA6oD1gQHANUEqwPLAwcA1QTSBKsDBwDSBIoDqwMHANIE0QSKAwcA0QSIA4oDBwDRBNsEiAMHANsEhgOIAwcA2wTYBIYDBwDYBKoDhgMHANgE1gSqAwcAzASlA3sDBwDMBMsEpQMHAMsEwwOlAwcAywTJBMMDBwDJBKcDwwMHAMkExQSnAwcAewPOBMwEBwB7A30DzgQHAH0DxwTOBAcAfQN+A8cEBwB+A8UExwQHAH4DpwPFBAcA/wRvA3EDBwD/BP0EbwMHAP0EoANvAwcA/QT6BKADBwD5BKAD+gQHAPkEvAOgAwcA+QShA7wDBwD5BPQEoQMHAPQEcwOhAwcA9AT2BHMDBwD2BHEDcwMHAPYE/wRxAwcARgVHBUgFBwBGBUkFRwUHAEoFSAVLBQcASgVGBUgFBwBMBUsFTQUHAEwFSgVLBQcATgVNBU8FBwBOBUwFTQUHAFAFTwVRBQcAUAVOBU8FBwBSBVEFUwUHAFIFUAVRBQcAVAVTBVUFBwBUBVIFUwUHAFYFVQVXBQcAVgVUBVUFBwBYBVYFVwUHAFgFWQVWBQcAWgVZBVgFBwBaBVsFWQUHAFwFWwVaBQcAXAVdBVsFBwBeBV0FXAUHAF4FXwVdBQcAYAVfBV4FBwBgBWEFXwUHAGIFYQVgBQcAYgVjBWEFBwBkBWMFYgUHAGQFZQVjBQcAZgVlBWQFBwBmBWcFZQUHAGYFaAVnBQcAZgVpBWgFBwBpBWoFaAUHAGkFawVqBQcAawVsBWoFBwBrBW0FbAUHAG0FbgVsBQcAbQVvBW4FBwBvBXAFbgUHAG8FcQVwBQcAcQVyBXAFBwBxBXMFcgUHAHMFdAVyBQcAcwV1BXQFBwB0BXYFdwUHAHQFdQV2BQcAdwV4BXkFBwB3BXYFeAUHAHkFegV7BQcAeQV4BXoFBwB7BXwFfQUHAHsFegV8BQcAfQV+BX8FBwB9BXwFfgUHAH8FgAWBBQcAfwV+BYAFBwCBBUcFSQUHAIEFgAVHBQcAcgV3BYIFBwByBXQFdwUHAHcFewWCBQcAdwV5BXsFBwB7BX8FggUHAHsFfQV/BQcAfwVJBYIFBwB/BYEFSQUHAEkFSgWCBQcASQVGBUoFBwBKBU4FggUHAEoFTAVOBQcATgVSBYIFBwBOBVAFUgUHAFIFVgWCBQcAUgVUBVYFBwBWBVsFggUHAFYFWQVbBQcAWwVfBYIFBwBbBV0FXwUHAF8FYwWCBQcAXwVhBWMFBwBjBWcFggUHAGMFZQVnBQcAZwVqBYIFBwBnBWgFagUHAGoFbgWCBQcAagVsBW4FBwBuBXIFggUHAG4FcAVyBQcAgAWDBUcFBwCABYQFgwUHAEcFhQVIBQcARwWDBYUFBwB+BYQFgAUHAH4FhgWEBQcAfAWGBX4FBwB8BYcFhgUHAHoFhwV8BQcAegWIBYcFBwB4BYgFegUHAHgFiQWIBQcAdgWJBXgFBwB2BYoFiQUHAHUFigV2BQcAdQWLBYoFBwBXBYwFWAUHAFcFjQWMBQcAWAWOBVoFBwBYBYwFjgUHAFUFjQVXBQcAVQWPBY0FBwBTBY8FVQUHAFMFkAWPBQcAUQWQBVMFBwBRBZEFkAUHAE8FkQVRBQcATwWSBZEFBwBNBZIFTwUHAE0FkwWSBQcASwWTBU0FBwBLBZQFkwUHAEgFlAVLBQcASAWFBZQFBwBzBYsFdQUHAHMFlQWLBQcAcQWVBXMFBwBxBZYFlQUHAG8FlgVxBQcAbwWXBZYFBwBtBZcFbwUHAG0FmAWXBQcAawWYBW0FBwBrBZkFmAUHAGkFmQVrBQcAaQWaBZkFBwBmBZoFaQUHAGYFmwWaBQcAZAWbBWYFBwBkBZwFmwUHAGIFnAVkBQcAYgWdBZwFBwBgBZ0FYgUHAGAFngWdBQcAXgWeBWAFBwBeBZ8FngUHAFwFnwVeBQcAXAWgBZ8FBwBaBaAFXAUHAFoFjgWgBQcAhAWhBYMFBwCEBaIFoQUHAIMFowWFBQcAgwWhBaMFBwCGBaIFhAUHAIYFpAWiBQcAhQWlBZQFBwCFBaMFpQUHAIcFpAWGBQcAhwWmBaQFBwCIBaYFhwUHAIgFpwWmBQcAiQWnBYgFBwCJBagFpwUHAIoFqAWJBQcAigWpBagFBwCLBakFigUHAIsFqgWpBQcAlQWqBYsFBwCVBasFqgUHAI0FrAWMBQcAjQWtBawFBwCMBa4FjgUHAIwFrAWuBQcAjwWtBY0FBwCPBa8FrQUHAI4FsAWgBQcAjgWuBbAFBwCQBa8FjwUHAJAFsQWvBQcAkQWxBZAFBwCRBbIFsQUHAJIFsgWRBQcAkgWzBbIFBwCTBbMFkgUHAJMFtAWzBQcAlAW0BZMFBwCUBaUFtAUHAJYFqwWVBQcAlgW1BasFBwCXBbUFlgUHAJcFtgW1BQcAmAW2BZcFBwCYBbcFtgUHAJkFtwWYBQcAmQW4BbcFBwCaBbgFmQUHAJoFuQW4BQcAmwW5BZoFBwCbBboFuQUHAJwFugWbBQcAnAW7BboFBwCdBbsFnAUHAJ0FvAW7BQcAngW8BZ0FBwCeBb0FvAUHAJ8FvQWeBQcAnwW+Bb0FBwCgBb4FnwUHAKAFsAW+BQcAvwXABcEFBwC/BcIFwAUHAMMFwAXCBQcAwwXEBcAFBwDFBcQFwwUHAMUFxgXEBQcAxwXGBcUFBwDHBcgFxgUHAMkFyAXHBQcAyQXKBcgFBwDLBcoFyQUHAMsFzAXKBQcAzQXMBcsFBwDNBc4FzAUHAM8FzQXQBQcAzwXOBc0FBwDRBdAF0gUHANEFzwXQBQcA0wXSBdQFBwDTBdEF0gUHANUF1AXWBQcA1QXTBdQFBwDXBdYF2AUHANcF1QXWBQcA1wXZBdoFBwDXBdgF2QUHANoF2wXcBQcA2gXZBdsFBwDcBd0F3gUHANwF2wXdBQcA3gXfBeAFBwDeBd0F3wUHAOAF4QXiBQcA4AXfBeEFBwDiBeMF5AUHAOIF4QXjBQcA5AXlBeYFBwDkBeMF5QUHAOUF5wXmBQcA5QXoBecFBwDoBekF5wUHAOgF6gXpBQcA6gXrBekFBwDqBewF6wUHAOwF7QXrBQcA7AXuBe0FBwDuBcEF7QUHAO4FvwXBBQcAwQXvBfAFBwDBBcAF7wUHAMAF8QXvBQcAwAXEBfEFBwDEBfIF8QUHAMQFxgXyBQcAxgXzBfIFBwDGBcgF8wUHAMgF9AXzBQcAyAXKBfQFBwDKBfUF9AUHAMoFzAX1BQcAzAX2BfUFBwDMBc4F9gUHAPYFzwX3BQcA9gXOBc8FBwD3BdEF+AUHAPcFzwXRBQcA+AXTBfkFBwD4BdEF0wUHAPkF1QX6BQcA+QXTBdUFBwD6BdcF+wUHAPoF1QXXBQcA+wXaBfwFBwD7BdcF2gUHAPwF3AX9BQcA/AXaBdwFBwD9Bd4F/gUHAP0F3AXeBQcA/gXgBf8FBwD+Bd4F4AUHAP8F4gUABgcA/wXgBeIFBwAABuQFAQYHAAAG4gXkBQcAAQbmBQIGBwABBuQF5gUHAOYFAwYCBgcA5gXnBQMGBwDnBQQGAwYHAOcF6QUEBgcA6QUFBgQGBwDpBesFBQYHAOsFBgYFBgcA6wXtBQYGBwDtBfAFBgYHAO0FwQXwBQcA8AUHBggGBwDwBe8FBwYHAPEFBwbvBQcA8QUJBgcGBwDyBQkG8QUHAPIFCgYJBgcA8wUKBvIFBwDzBQsGCgYHAPQFCwbzBQcA9AUMBgsGBwD1BQwG9AUHAPUFDQYMBgcA9gUNBvUFBwD2BQ4GDQYHAA8G9gX3BQcADwYOBvYFBwAQBvcF+AUHABAGDwb3BQcAEQb4BfkFBwARBhAG+AUHABIG+QX6BQcAEgYRBvkFBwATBvoF+wUHABMGEgb6BQcAEwb8BRQGBwATBvsF/AUHABQG/QUVBgcAFAb8Bf0FBwAVBv4FFgYHABUG/QX+BQcAFgb/BRcGBwAWBv4F/wUHABcGAAYYBgcAFwb/BQAGBwAYBgEGGQYHABgGAAYBBgcAGQYCBhoGBwAZBgEGAgYHAAIGGwYaBgcAAgYDBhsGBwADBhwGGwYHAAMGBAYcBgcABAYdBhwGBwAEBgUGHQYHAAUGHgYdBgcABQYGBh4GBwAGBggGHgYHAAYG8AUIBgcABwYfBggGBwAHBiAGHwYHAAkGIAYHBgcACQYhBiAGBwAKBiEGCQYHAAoGIgYhBgcACwYiBgoGBwALBiMGIgYHAAwGIwYLBgcADAYkBiMGBwANBiQGDAYHAA0GJQYkBgcADgYlBg0GBwAOBiYGJQYHACcGDgYPBgcAJwYmBg4GBwAoBg8GEAYHACgGJwYPBgcAKQYQBhEGBwApBigGEAYHACoGEQYSBgcAKgYpBhEGBwArBhIGEwYHACsGKgYSBgcALAYTBhQGBwAsBisGEwYHAC0GFAYVBgcALQYsBhQGBwAuBhUGFgYHAC4GLQYVBgcALwYWBhcGBwAvBi4GFgYHADAGFwYYBgcAMAYvBhcGBwAxBhgGGQYHADEGMAYYBgcAMgYZBhoGBwAyBjEGGQYHABsGMgYaBgcAGwYzBjIGBwAcBjMGGwYHABwGNAYzBgcAHQY0BhwGBwAdBjUGNAYHAB4GNQYdBgcAHgY2BjUGBwAIBjYGHgYHAAgGHwY2BgcANwY4BjkGBwA3BjoGOAYHADoGOwY4BgcAOgY8BjsGBwA8Bj0GOwYHADwGPgY9BgcAPgY/Bj0GBwA+BkAGPwYHAEAGQQY/BgcAQAZCBkEGBwBCBkMGQQYHAEIGRAZDBgcARAZFBkMGBwBEBkYGRQYHAEUGRwZIBgcARQZGBkcGBwBIBkkGSgYHAEgGRwZJBgcASgZLBkwGBwBKBkkGSwYHAEwGTQZOBgcATAZLBk0GBwBOBk8GUAYHAE4GTQZPBgcAUAZRBlIGBwBQBk8GUQYHAFIGUwZUBgcAUgZRBlMGBwBUBlUGVgYHAFQGUwZVBgcAVgZXBlgGBwBWBlUGVwYHAFgGWQZaBgcAWAZXBlkGBwBaBlsGXAYHAFoGWQZbBgcAXAZdBl4GBwBcBlsGXQYHAF0GXwZeBgcAXQZgBl8GBwBgBmEGXwYHAGAGYgZhBgcAYgZjBmEGBwBiBmQGYwYHAGQGZQZjBgcAZAZmBmUGBwBmBjkGZQYHAGYGNwY5BgcAOAZnBjkGBwA4BmgGZwYHADgGaQZoBgcAOAY7BmkGBwA7BmoGaQYHADsGPQZqBgcAPQZrBmoGBwA9Bj8GawYHAD8GbAZrBgcAPwZBBmwGBwBBBm0GbAYHAEEGQwZtBgcAQwZuBm0GBwBDBkUGbgYHAG4GSAZvBgcAbgZFBkgGBwBvBkoGcAYHAG8GSAZKBgcAcAZMBnEGBwBwBkoGTAYHAHEGTgZyBgcAcQZMBk4GBwByBlAGcwYHAHIGTgZQBgcAdAZQBlIGBwB0BnMGUAYHAHUGUgZUBgcAdQZ0BlIGBwB2BlQGVgYHAHYGdQZUBgcAdwZWBlgGBwB3BnYGVgYHAHgGWAZaBgcAeAZ3BlgGBwB5BloGXAYHAHkGeAZaBgcAegZcBl4GBwB6BnkGXAYHAF8GegZeBgcAXwZ7BnoGBwBhBnsGXwYHAGEGfAZ7BgcAYwZ8BmEGBwBjBn0GfAYHAGUGfQZjBgcAZQZ+Bn0GBwA5Bn4GZQYHADkGZwZ+BgcAZwZ/BoAGBwBnBmgGfwYHAGgGgQZ/BgcAaAZpBoEGBwBpBoIGgQYHAGkGagaCBgcAagaDBoIGBwBqBmsGgwYHAGsGhAaDBgcAawZsBoQGBwBsBoUGhAYHAGwGbQaFBgcAbQaGBoUGBwBtBm4GhgYHAIYGbwaHBgcAhgZuBm8GBwCHBnAGiAYHAIcGbwZwBgcAiAZxBokGBwCIBnAGcQYHAIkGcgaKBgcAiQZxBnIGBwCKBnMGiwYHAIoGcgZzBgcAiwZ0BowGBwCLBnMGdAYHAIwGdQaNBgcAjAZ0BnUGBwCNBnYGjgYHAI0GdQZ2BgcAjgZ3Bo8GBwCOBnYGdwYHAI8GeAaQBgcAjwZ3BngGBwCQBnkGkQYHAJAGeAZ5BgcAkQZ6BpIGBwCRBnkGegYHAHoGkwaSBgcAegZ7BpMGBwB7BpQGkwYHAHsGfAaUBgcAfAaVBpQGBwB8Bn0GlQYHAH0GlgaVBgcAfQZ+BpYGBwB+BoAGlgYHAH4GZwaABgcAgAaXBpgGBwCABn8GlwYHAIEGlwZ/BgcAgQaZBpcGBwCCBpkGgQYHAIIGmgaZBgcAgwaaBoIGBwCDBpsGmgYHAIQGmwaDBgcAhAacBpsGBwCFBpwGhAYHAIUGnQacBgcAhgadBoUGBwCGBp4GnQYHAJ8GhgaHBgcAnwaeBoYGBwCgBocGiAYHAKAGnwaHBgcAoQaIBokGBwChBqAGiAYHAKIGiQaKBgcAogahBokGBwCjBooGiwYHAKMGogaKBgcAowaMBqQGBwCjBosGjAYHAKQGjQalBgcApAaMBo0GBwClBo4GpgYHAKUGjQaOBgcApgaPBqcGBwCmBo4GjwYHAKcGkAaoBgcApwaPBpAGBwCoBpEGqQYHAKgGkAaRBgcAqQaSBqoGBwCpBpEGkgYHAJIGqwaqBgcAkgaTBqsGBwCTBqwGqwYHAJMGlAasBgcAlAatBqwGBwCUBpUGrQYHAJUGrgatBgcAlQaWBq4GBwCWBpgGrgYHAJYGgAaYBgcAmAavBrAGBwCYBpcGrwYHAJcGsQavBgcAlwaZBrEGBwCZBrIGsQYHAJkGmgayBgcAmgazBrIGBwCaBpsGswYHAJsGtAazBgcAmwacBrQGBwCcBrUGtAYHAJwGnQa1BgcAnQa2BrUGBwCdBp4GtgYHALYGnwa3BgcAtgaeBp8GBwC3BqAGuAYHALcGnwagBgcAuAahBrkGBwC4BqAGoQYHALkGoga6BgcAuQahBqIGBwC6BqMGuwYHALoGogajBgcAuwakBrwGBwC7BqMGpAYHALwGpQa9BgcAvAakBqUGBwC9BqYGvgYHAL0GpQamBgcAvganBr8GBwC+BqYGpwYHAL8GqAbABgcAvwanBqgGBwDABqkGwQYHAMAGqAapBgcAwQaqBsIGBwDBBqkGqgYHAKoGwwbCBgcAqgarBsMGBwCrBsQGwwYHAKsGrAbEBgcArAbFBsQGBwCsBq0GxQYHAK0GxgbFBgcArQauBsYGBwCuBrAGxgYHAK4GmAawBgcArwbHBrAGBwCvBsgGxwYHAK8GyQbIBgcArwaxBskGBwCxBsoGyQYHALEGsgbKBgcAsgbLBsoGBwCyBrMGywYHALMGzAbLBgcAswa0BswGBwC0Bs0GzAYHALQGtQbNBgcAtQbOBs0GBwC1BrYGzgYHAM4GtwbPBgcAzga2BrcGBwDPBrgG0AYHAM8Gtwa4BgcA0Aa5BtEGBwDQBrgGuQYHANEGugbSBgcA0Qa5BroGBwDSBrsG0wYHANIGuga7BgcA1Aa7BrwGBwDUBtMGuwYHANUGvAa9BgcA1QbUBrwGBwDWBr0GvgYHANYG1Qa9BgcA1wa+Br8GBwDXBtYGvgYHANgGvwbABgcA2AbXBr8GBwDZBsAGwQYHANkG2AbABgcA2gbBBsIGBwDaBtkGwQYHAMMG2gbCBgcAwwbbBtoGBwDEBtsGwwYHAMQG3AbbBgcAxQbcBsQGBwDFBt0G3AYHAMYG3QbFBgcAxgbeBt0GBwCwBt4GxgYHALAGxwbeBgcA3wYrBiwGBwDfBuAGKwYHAOAGKgYrBgcA4AbhBioGBwDhBikGKgYHAOEG4gYpBgcA4gYoBikGBwDiBuMGKAYHAOMGJwYoBgcA4wbkBicGBwDkBiYGJwYHAOQG5QYmBgcA5QYlBiYGBwDlBuYGJQYHAOYGJAYlBgcA5gbnBiQGBwDnBiMGJAYHAOcG6AYjBgcA6AYiBiMGBwDoBukGIgYHAOkGIQYiBgcA6QbqBiEGBwDqBiAGIQYHAOoG6wYgBgcA6wYfBiAGBwDrBuwGHwYHAOwGNgYfBgcA7AbtBjYGBwDtBjUGNgYHAO0G7gY1BgcA7gY0BjUGBwDuBu8GNAYHAO8GMwY0BgcA7wbwBjMGBwDwBjIGMwYHAPAG8QYyBgcA8QYxBjIGBwDxBvIGMQYHAPIGMAYxBgcA8gbzBjAGBwDzBi8GMAYHAPMG9AYvBgcA9AYuBi8GBwD0BvUGLgYHAPUGLQYuBgcA9Qb2Bi0GBwD2BiwGLQYHAPYG3wYsBgcA9wZRBk8GBwD3BvgGUQYHAOAG+Ab3BgcA4AbfBvgGBwD4BlMGUQYHAPgG+QZTBgcA3wb5BvgGBwDfBvYG+QYHAPkGVQZTBgcA+Qb6BlUGBwD2BvoG+QYHAPYG9Qb6BgcA+gZXBlUGBwD6BvsGVwYHAPUG+wb6BgcA9Qb0BvsGBwD7BlkGVwYHAPsG/AZZBgcA9Ab8BvsGBwD0BvMG/AYHAPwGWwZZBgcA/Ab9BlsGBwDzBv0G/AYHAPMG8gb9BgcA/QZdBlsGBwD9Bv4GXQYHAPIG/gb9BgcA8gbxBv4GBwD+BmAGXQYHAP4G/wZgBgcA8Qb/Bv4GBwDxBvAG/wYHAP8GYgZgBgcA/wYAB2IGBwDwBgAH/wYHAPAG7wYABwcAAAdkBmIGBwAABwEHZAYHAO8GAQcABwcA7wbuBgEHBwABB2YGZAYHAAEHAgdmBgcA7gYCBwEHBwDuBu0GAgcHAAIHNwZmBgcAAgcDBzcGBwDtBgMHAgcHAO0G7AYDBwcAAwc6BjcGBwADBwQHOgYHAOwGBAcDBwcA7AbrBgQHBwAEBzwGOgYHAAQHBQc8BgcA6wYFBwQHBwDrBuoGBQcHAAUHPgY8BgcABQcGBz4GBwDqBgYHBQcHAOoG6QYGBwcABgdABj4GBwAGBwcHQAYHAOkGBwcGBwcA6QboBgcHBwAHB0IGQAYHAAcHCAdCBgcA6AYIBwcHBwDoBucGCAcHAAgHRAZCBgcACAcJB0QGBwDnBgkHCAcHAOcG5gYJBwcACQdGBkQGBwAJBwoHRgYHAOYGCgcJBwcA5gblBgoHBwAKB0cGRgYHAAoHCwdHBgcA5QYLBwoHBwDlBuQGCwcHAAsHSQZHBgcACwcMB0kGBwDkBgwHCwcHAOQG4wYMBwcADAdLBkkGBwAMBw0HSwYHAOMGDQcMBwcA4wbiBg0HBwANB00GSwYHAA0HDgdNBgcA4gYOBw0HBwDiBuEGDgcHAA4HTwZNBgcADgf3Bk8GBwDhBvcGDgcHAOEG4Ab3BgcADwcQBxEHBwAPBxIHEAcHABMHEgcPBwcAEwcUBxIHBwAVBxQHEwcHABUHFgcUBwcAFwcWBxUHBwAXBxgHFgcHABkHGAcXBwcAGQcaBxgHBwAbBxoHGQcHABsHHAcaBwcAHQcbBx4HBwAdBxwHGwcHAB8HHgcgBwcAHwcdBx4HBwAhByAHIgcHACEHHwcgBwcAIwciByQHBwAjByEHIgcHACUHJAcmBwcAJQcjByQHBwAnByYHKAcHACcHJQcmBwcAKQcoByoHBwApBycHKAcHACsHKgcsBwcAKwcpByoHBwAtBywHLgcHAC0HKwcsBwcALwcuBzAHBwAvBy0HLgcHADEHMAcyBwcAMQcvBzAHBwAzBzIHNAcHADMHMQcyBwcANQczBzQHBwA1BzYHMwcHADcHNgc1BwcANwc4BzYHBwA5BzgHNwcHADkHOgc4BwcAOwc6BzkHBwA7BzwHOgcHAD0HPAc7BwcAPQc+BzwHBwARBz4HPQcHABEHEAc+BwcAPgc/B0AHBwA+BxAHPwcHABIHPwcQBwcAEgdBBz8HBwAUB0EHEgcHABQHQgdBBwcAFgdCBxQHBwAWB0MHQgcHABgHQwcWBwcAGAdEB0MHBwAaB0QHGAcHABoHRQdEBwcAHAdFBxoHBwAcB0YHRQcHAEcHHAcdBwcARwdGBxwHBwBIBx0HHwcHAEgHRwcdBwcASQcfByEHBwBJB0gHHwcHAEoHIQcjBwcASgdJByEHBwBLByMHJQcHAEsHSgcjBwcASwcnB0wHBwBLByUHJwcHAEwHKQdNBwcATAcnBykHBwBNBysHTgcHAE0HKQcrBwcATgctB08HBwBOBysHLQcHAE8HLwdQBwcATwctBy8HBwBQBzEHUQcHAFAHLwcxBwcAUQczB1IHBwBRBzEHMwcHADMHUwdSBwcAMwc2B1MHBwA2B1QHUwcHADYHOAdUBwcAOAdVB1QHBwA4BzoHVQcHADoHVgdVBwcAOgc8B1YHBwA8B0AHVgcHADwHPgdABwcAQAdXB1gHBwBABz8HVwcHAD8HWQdXBwcAPwdBB1kHBwBBB1oHWQcHAEEHQgdaBwcAQgdbB1oHBwBCB0MHWwcHAEMHXAdbBwcAQwdEB1wHBwBEB10HXAcHAEQHRQddBwcARQdeB10HBwBFB0YHXgcHAF4HRwdfBwcAXgdGB0cHBwBfB0gHYAcHAF8HRwdIBwcAYAdJB2EHBwBgB0gHSQcHAGEHSgdiBwcAYQdJB0oHBwBiB0sHYwcHAGIHSgdLBwcAYwdMB2QHBwBjB0sHTAcHAGQHTQdlBwcAZAdMB00HBwBlB04HZgcHAGUHTQdOBwcAZgdPB2cHBwBmB04HTwcHAGcHUAdoBwcAZwdPB1AHBwBoB1EHaQcHAGgHUAdRBwcAaQdSB2oHBwBpB1EHUgcHAFIHawdqBwcAUgdTB2sHBwBTB2wHawcHAFMHVAdsBwcAVAdtB2wHBwBUB1UHbQcHAFUHbgdtBwcAVQdWB24HBwBWB1gHbgcHAFYHQAdYBwcAWAdvB3AHBwBYB1cHbwcHAFkHbwdXBwcAWQdxB28HBwBaB3EHWQcHAFoHcgdxBwcAWwdyB1oHBwBbB3MHcgcHAFwHcwdbBwcAXAd0B3MHBwBdB3QHXAcHAF0HdQd0BwcAXgd1B10HBwBeB3YHdQcHAHcHXgdfBwcAdwd2B14HBwB4B18HYAcHAHgHdwdfBwcAeQdgB2EHBwB5B3gHYAcHAHoHYQdiBwcAegd5B2EHBwB7B2IHYwcHAHsHegdiBwcAewdkB3wHBwB7B2MHZAcHAHwHZQd9BwcAfAdkB2UHBwB9B2YHfgcHAH0HZQdmBwcAfgdnB38HBwB+B2YHZwcHAH8HaAeABwcAfwdnB2gHBwCAB2kHgQcHAIAHaAdpBwcAgQdqB4IHBwCBB2kHagcHAGoHgweCBwcAagdrB4MHBwBrB4QHgwcHAGsHbAeEBwcAbAeFB4QHBwBsB20HhQcHAG0HhgeFBwcAbQduB4YHBwBuB3AHhgcHAG4HWAdwBwcAcAeHB4gHBwBwB28HhwcHAG8HiQeHBwcAbwdxB4kHBwBxB4oHiQcHAHEHcgeKBwcAcgeLB4oHBwByB3MHiwcHAHMHjAeLBwcAcwd0B4wHBwB0B40HjAcHAHQHdQeNBwcAdQeOB40HBwB1B3YHjgcHAI4HdwePBwcAjgd2B3cHBwCPB3gHkAcHAI8Hdwd4BwcAkAd5B5EHBwCQB3gHeQcHAJEHegeSBwcAkQd5B3oHBwCSB3sHkwcHAJIHegd7BwcAkwd8B5QHBwCTB3sHfAcHAJQHfQeVBwcAlAd8B30HBwCVB34HlgcHAJUHfQd+BwcAlgd/B5cHBwCWB34HfwcHAJcHgAeYBwcAlwd/B4AHBwCYB4EHmQcHAJgHgAeBBwcAmQeCB5oHBwCZB4EHggcHAIIHmweaBwcAggeDB5sHBwCDB5wHmwcHAIMHhAecBwcAhAedB5wHBwCEB4UHnQcHAIUHngedBwcAhQeGB54HBwCGB4gHngcHAIYHcAeIBwcAhwefB4gHBwCHB6AHnwcHAIcHoQegBwcAhweJB6EHBwCJB6IHoQcHAIkHigeiBwcAigejB6IHBwCKB4sHowcHAIsHpAejBwcAiweMB6QHBwCMB6UHpAcHAIwHjQelBwcAjQemB6UHBwCNB44HpgcHAKYHjwenBwcApgeOB48HBwCnB5AHqAcHAKcHjweQBwcAqAeRB6kHBwCoB5AHkQcHAKkHkgeqBwcAqQeRB5IHBwCqB5MHqwcHAKoHkgeTBwcArAeTB5QHBwCsB6sHkwcHAK0HlAeVBwcArQesB5QHBwCuB5UHlgcHAK4HrQeVBwcArweWB5cHBwCvB64HlgcHALAHlweYBwcAsAevB5cHBwCxB5gHmQcHALEHsAeYBwcAsgeZB5oHBwCyB7EHmQcHAJsHsgeaBwcAmwezB7IHBwCcB7MHmwcHAJwHtAezBwcAnQe0B5wHBwCdB7UHtAcHAJ4HtQedBwcAnge2B7UHBwCIB7YHngcHAIgHnwe2BwcAnwfCBb8FBwCfB6AHwgUHAKAHwwXCBQcAoAehB8MFBwChB8UFwwUHAKEHogfFBQcAogfHBcUFBwCiB6MHxwUHAKMHyQXHBQcAowekB8kFBwCkB8sFyQUHAKQHpQfLBQcApQfNBcsFBwClB6YHzQUHAM0FpwfQBQcAzQWmB6cHBwDQBagH0gUHANAFpweoBwcA0gWpB9QFBwDSBagHqQcHANQFqgfWBQcA1AWpB6oHBwDWBasH2AUHANYFqgerBwcA2AWsB9kFBwDYBasHrAcHANkFrQfbBQcA2QWsB60HBwDbBa4H3QUHANsFrQeuBwcA3QWvB98FBwDdBa4HrwcHAN8FsAfhBQcA3wWvB7AHBwDhBbEH4wUHAOEFsAexBwcA4wWyB+UFBwDjBbEHsgcHALIH6AXlBQcAsgezB+gFBwCzB+oF6AUHALMHtAfqBQcAtAfsBeoFBwC0B7UH7AUHALUH7gXsBQcAtQe2B+4FBwC2B78F7gUHALYHnwe/BQcAxwa3B7gHBwDHBsgGtwcHAMgGuQe3BwcAyAbJBrkHBwDJBroHuQcHAMkGyga6BwcAyga7B7oHBwDKBssGuwcHAMsGvAe7BwcAywbMBrwHBwDMBr0HvAcHAMwGzQa9BwcAzQa+B70HBwDNBs4GvgcHAL4Hzwa/BwcAvgfOBs8GBwC/B9AGwAcHAL8HzwbQBgcAwAfRBsEHBwDAB9AG0QYHAMEH0gbCBwcAwQfRBtIGBwDCB9MGwwcHAMIH0gbTBgcAwwfUBsQHBwDDB9MG1AYHAMQH1QbFBwcAxAfUBtUGBwDFB9YGxgcHAMUH1QbWBgcAxgfXBscHBwDGB9YG1wYHAMcH2AbIBwcAxwfXBtgGBwDIB9kGyQcHAMgH2AbZBgcAyQfaBsoHBwDJB9kG2gYHANoGywfKBwcA2gbbBssHBwDbBswHywcHANsG3AbMBwcA3AbNB8wHBwDcBt0GzQcHAN0GzgfNBwcA3QbeBs4HBwDeBrgHzgcHAN4Gxwa4BwcAtwfPB7gHBwC3B9AHzwcHALcH0QfQBwcAtwe5B9EHBwC5B9IH0QcHALkHugfSBwcAugfTB9IHBwC6B7sH0wcHALsH1AfTBwcAuwe8B9QHBwC8B9UH1AcHALwHvQfVBwcAvQfWB9UHBwC9B74H1gcHANYHvwfXBwcA1ge+B78HBwDXB8AH2AcHANcHvwfABwcA2AfBB9kHBwDYB8AHwQcHANkHwgfaBwcA2QfBB8IHBwDaB8MH2wcHANoHwgfDBwcA3AfDB8QHBwDcB9sHwwcHAN0HxAfFBwcA3QfcB8QHBwDeB8UHxgcHAN4H3QfFBwcA3wfGB8cHBwDfB94HxgcHAOAHxwfIBwcA4AffB8cHBwDhB8gHyQcHAOEH4AfIBwcA4gfJB8oHBwDiB+EHyQcHAMsH4gfKBwcAywfjB+IHBwDMB+MHywcHAMwH5AfjBwcAzQfkB8wHBwDNB+UH5AcHAM4H5QfNBwcAzgfmB+UHBwC4B+YHzgcHALgHzwfmBwcAzwfnB+gHBwDPB9AH5wcHANAH6QfnBwcA0AfRB+kHBwDRB+oH6QcHANEH0gfqBwcA0gfrB+oHBwDSB9MH6wcHANMH7AfrBwcA0wfUB+wHBwDUB+0H7AcHANQH1QftBwcA1QfuB+0HBwDVB9YH7gcHAO4H1wfvBwcA7gfWB9cHBwDvB9gH8AcHAO8H1wfYBwcA8AfZB/EHBwDwB9gH2QcHAPEH2gfyBwcA8QfZB9oHBwDyB9sH8wcHAPIH2gfbBwcA8wfcB/QHBwDzB9sH3AcHAPQH3Qf1BwcA9AfcB90HBwD1B94H9gcHAPUH3QfeBwcA9gffB/cHBwD2B94H3wcHAPcH4Af4BwcA9wffB+AHBwD4B+EH+QcHAPgH4AfhBwcA+QfiB/oHBwD5B+EH4gcHAOIH+wf6BwcA4gfjB/sHBwDjB/wH+wcHAOMH5Af8BwcA5Af9B/wHBwDkB+UH/QcHAOUH/gf9BwcA5QfmB/4HBwDmB+gH/gcHAOYHzwfoBwcA/wcACAEIBwD/BwIIAAgHAAIIAwgACAcAAggECAMIBwAFCAEIBggHAAUI/wcBCAcABwgICAkIBwAHCAoICAgHAAoICwgICAcACggMCAsIBwANCAkIDggHAA0IBwgJCAcADAgPCAsIBwAMCBAIDwgHABEIDggSCAcAEQgNCA4IBwAQCBMIDwgHABAIFAgTCAcAFQgSCBYIBwAVCBEIEggHABQIFwgTCAcAFAgYCBcIBwAZCBYIGggHABkIFQgWCAcABAgaCAMIBwAECBkIGggHABgIBggXCAcAGAgFCAYIBwD/BxsIAggHAP8HHAgbCAcAGwgECAIIBwAbCB0IBAgHAAUIHAj/BwcABQgeCBwIBwAfCAoIBwgHAB8IIAgKCAcACgghCAwIBwAKCCAIIQgHACIIBwgNCAcAIggfCAcIBwAMCCMIEAgHAAwIIQgjCAcAJAgNCBEIBwAkCCIIDQgHABAIJQgUCAcAEAgjCCUIBwAmCBEIFQgHACYIJAgRCAcAFAgnCBgIBwAUCCUIJwgHACgIFQgZCAcAKAgmCBUIBwAdCBkIBAgHAB0IKAgZCAcAGAgeCAUIBwAYCCcIHggHACkIGwgcCAcAKQgqCBsIBwAqCB0IGwgHACoIKwgdCAcALAgcCB4IBwAsCCkIHAgHAC0IIAgfCAcALQguCCAIBwAuCCEIIAgHAC4ILwghCAcAMAgfCCIIBwAwCC0IHwgHAC8IIwghCAcALwgxCCMIBwAyCCIIJAgHADIIMAgiCAcAMQglCCMIBwAxCDMIJQgHADQIJAgmCAcANAgyCCQIBwAzCCcIJQgHADMINQgnCAcANggmCCgIBwA2CDQIJggHACsIKAgdCAcAKwg2CCgIBwA1CB4IJwgHADUILAgeCAcANwgqCCkIBwA3CDgIKggHADgIKwgqCAcAOAg5CCsIBwA6CCkILAgHADoINwgpCAcAOwguCC0IBwA7CDwILggHADwILwguCAcAPAg9CC8IBwA+CC0IMAgHAD4IOwgtCAcAPQgxCC8IBwA9CD8IMQgHAEAIMAgyCAcAQAg+CDAIBwA/CDMIMQgHAD8IQQgzCAcAQggyCDQIBwBCCEAIMggHAEEINQgzCAcAQQhDCDUIBwBECDQINggHAEQIQgg0CAcAOQg2CCsIBwA5CEQINggHAEMILAg1CAcAQwg6CCwIBwBFCDgINwgHAEUIRgg4CAcARgg5CDgIBwBGCEcIOQgHAEgINwg6CAcASAhFCDcIBwBJCDwIOwgHAEkISgg8CAcASgg9CDwIBwBKCEsIPQgHAEwIOwg+CAcATAhJCDsIBwBLCD8IPQgHAEsITQg/CAcATgg+CEAIBwBOCEwIPggHAE0IQQg/CAcATQhPCEEIBwBQCEAIQggHAFAITghACAcATwhDCEEIBwBPCFEIQwgHAFIIQghECAcAUghQCEIIBwBHCEQIOQgHAEcIUghECAcAUQg6CEMIBwBRCEgIOggHAFMIRghFCAcAUwhUCEYIBwBUCEcIRggHAFQIVQhHCAcAVghFCEgIBwBWCFMIRQgHAFcISghJCAcAVwhYCEoIBwBYCEsISggHAFgIWQhLCAcAWghJCEwIBwBaCFcISQgHAFkITQhLCAcAWQhbCE0IBwBcCEwITggHAFwIWghMCAcAWwhPCE0IBwBbCF0ITwgHAF4ITghQCAcAXghcCE4IBwBdCFEITwgHAF0IXwhRCAcAYAhQCFIIBwBgCF4IUAgHAFUIUghHCAcAVQhgCFIIBwBfCEgIUQgHAF8IVghICAcAYQhUCFMIBwBhCGIIVAgHAGIIVQhUCAcAYghjCFUIBwBkCFMIVggHAGQIYQhTCAcAZQhYCFcIBwBlCGYIWAgHAGYIWQhYCAcAZghnCFkIBwBoCFcIWggHAGgIZQhXCAcAZwhbCFkIBwBnCGkIWwgHAGoIWghcCAcAaghoCFoIBwBpCF0IWwgHAGkIawhdCAcAbAhcCF4IBwBsCGoIXAgHAGsIXwhdCAcAawhtCF8IBwBuCF4IYAgHAG4IbAheCAcAYwhgCFUIBwBjCG4IYAgHAG0IVghfCAcAbQhkCFYIBwBvCGIIYQgHAG8IcAhiCAcAcAhjCGIIBwBwCHEIYwgHAHIIYQhkCAcAcghvCGEIBwBzCGYIZQgHAHMIdAhmCAcAdAhnCGYIBwB0CHUIZwgHAHYIZQhoCAcAdghzCGUIBwB1CGkIZwgHAHUIdwhpCAcAeAhoCGoIBwB4CHYIaAgHAHcIawhpCAcAdwh5CGsIBwB6CGoIbAgHAHoIeAhqCAcAeQhtCGsIBwB5CHsIbQgHAHwIbAhuCAcAfAh6CGwIBwBxCG4IYwgHAHEIfAhuCAcAewhkCG0IBwB7CHIIZAgHAH0IcAhvCAcAfQh+CHAIBwB+CHEIcAgHAH4IfwhxCAcAgAhvCHIIBwCACH0IbwgHAIEIdAhzCAcAgQiCCHQIBwCCCHUIdAgHAIIIgwh1CAcAhAhzCHYIBwCECIEIcwgHAIMIdwh1CAcAgwiFCHcIBwCGCHYIeAgHAIYIhAh2CAcAhQh5CHcIBwCFCIcIeQgHAIgIeAh6CAcAiAiGCHgIBwCHCHsIeQgHAIcIiQh7CAcAigh6CHwIBwCKCIgIeggHAH8IfAhxCAcAfwiKCHwIBwCJCHIIewgHAIkIgAhyCAcAiwh+CH0IBwCLCIwIfggHAIwIfwh+CAcAjAiNCH8IBwCOCH0IgAgHAI4Iiwh9CAcAjwiCCIEIBwCPCJAIgggHAJAIgwiCCAcAkAiRCIMIBwCSCIEIhAgHAJIIjwiBCAcAkQiFCIMIBwCRCJMIhQgHAJQIhAiGCAcAlAiSCIQIBwCTCIcIhQgHAJMIlQiHCAcAlgiGCIgIBwCWCJQIhggHAJUIiQiHCAcAlQiXCIkIBwCYCIgIiggHAJgIlgiICAcAjQiKCH8IBwCNCJgIiggHAJcIgAiJCAcAlwiOCIAIBwCZCIwIiwgHAJkImgiMCAcAmgiNCIwIBwCaCJsIjQgHAJwIiwiOCAcAnAiZCIsIBwCdCJAIjwgHAJ0IngiQCAcAngiRCJAIBwCeCJ8IkQgHAKAIjwiSCAcAoAidCI8IBwCfCJMIkQgHAJ8IoQiTCAcAogiSCJQIBwCiCKAIkggHAKEIlQiTCAcAoQijCJUIBwCkCJQIlggHAKQIogiUCAcAowiXCJUIBwCjCKUIlwgHAKYIlgiYCAcApgikCJYIBwCbCJgIjQgHAJsIpgiYCAcApQiOCJcIBwClCJwIjggHAKcImgiZCAcApwioCJoIBwCoCJsImggHAKgIqQibCAcAqgiZCJwIBwCqCKcImQgHAKsIngidCAcAqwisCJ4IBwCsCJ8InggHAKwIrQifCAcArgidCKAIBwCuCKsInQgHAK0IoQifCAcArQivCKEIBwCwCKAIoggHALAIrgigCAcArwijCKEIBwCvCLEIowgHALIIogikCAcAsgiwCKIIBwCxCKUIowgHALEIswilCAcAtAikCKYIBwC0CLIIpAgHAKkIpgibCAcAqQi0CKYIBwCzCJwIpQgHALMIqgicCAcAtQioCKcIBwC1CLYIqAgHALYIqQioCAcAtgi3CKkIBwC4CKcIqggHALgItQinCAcAuQisCKsIBwC5CLoIrAgHALoIrQisCAcAugi7CK0IBwC8CKsIrggHALwIuQirCAcAuwivCK0IBwC7CL0IrwgHAL4IrgiwCAcAvgi8CK4IBwC9CLEIrwgHAL0IvwixCAcAwAiwCLIIBwDACL4IsAgHAL8IswixCAcAvwjBCLMIBwDCCLIItAgHAMIIwAiyCAcAtwi0CKkIBwC3CMIItAgHAMEIqgizCAcAwQi4CKoIBwDDCLYItQgHAMMIxAi2CAcAxAi3CLYIBwDECMUItwgHAMYItQi4CAcAxgjDCLUIBwDHCLoIuQgHAMcIyAi6CAcAyAi7CLoIBwDICMkIuwgHAMoIuQi8CAcAygjHCLkIBwDJCL0IuwgHAMkIywi9CAcAzAi8CL4IBwDMCMoIvAgHAMsIvwi9CAcAywjNCL8IBwDOCL4IwAgHAM4IzAi+CAcAzQjBCL8IBwDNCM8IwQgHANAIwAjCCAcA0AjOCMAIBwDFCMIItwgHAMUI0AjCCAcAzwi4CMEIBwDPCMYIuAgHANEIxAjDCAcA0QjSCMQIBwDSCAEIAAgHANII0QgBCAcA0gjFCMQIBwDSCNMIxQgHANMIAAgDCAcA0wjSCAAIBwDUCMMIxggHANQI0QjDCAcA0QgGCAEIBwDRCNQIBggHANUIyAjHCAcA1QjWCMgIBwDWCNcI2AgHANYI1QjXCAcA1gjJCMgIBwDWCNkIyQgHANkI2AjaCAcA2QjWCNgIBwDbCMcIyggHANsI1QjHCAcA1QjcCNcIBwDVCNsI3AgHANkIywjJCAcA2QjdCMsIBwDdCNoIDwgHAN0I2QjaCAcA3gjKCMwIBwDeCNsIyggHANsIEgjcCAcA2wjeCBIIBwDdCM0IywgHAN0I3wjNCAcA3wgPCBMIBwDfCN0IDwgHAOAIzAjOCAcA4AjeCMwIBwDeCBYIEggHAN4I4AgWCAcA3wjPCM0IBwDfCOEIzwgHAOEIEwgXCAcA4QjfCBMIBwDiCM4I0AgHAOII4AjOCAcA4AgaCBYIBwDgCOIIGggHANMI0AjFCAcA0wjiCNAIBwDiCAMIGggHAOII0wgDCAcA4QjGCM8IBwDhCNQIxggHANQIFwgGCAcA1AjhCBcIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0X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AAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA9AAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAIABAAFAAcAAgABAAQABwAFAAYABwAHAAUABAAGAAcABwAIAAkABwAHAAYACAAHAAkACgALAAcACQAIAAoABwALAAwADQAHAAsACgAMAAcADQAOAA8ABwANAAwADgAHAA8AEAARAAcADwAOABAABwARABIAEwAHABEAEAASAAcAEwAUABUABwATABIAFAAHABUAFgAXAAcAFQAUABYABwAXABgAGQAHABcAFgAYAAcAGQAaABsABwAZABgAGgAHABsAHAAdAAcAGwAaABwABwAcAB4AHQAHABwAHwAeAAcAHwAgAB4ABwAfACEAIAAHACEAIgAgAAcAIQAjACIABwAjACQAIgAHACMAJQAkAAcAJQAmACQABwAlACcAJgAHACcAKAAmAAcAJwApACgABwApACoAKAAHACkAKwAqAAcAKwAsACoABwArAC0ALAAHAC0ALgAsAAcALQAvAC4ABwAvADAALgAHAC8AMQAwAAcAMQAyADAABwAxADMAMgAHADMANAAyAAcAMwA1ADQABwA1ADYANAAHADUANwA2AAcANwA4ADYABwA3ADkAOAAHADkAOgA4AAcAOQA7ADoABwA7ADwAOgAHADsAPQA8AAcAPQA+ADwABwA9AD8APgAHAD8AQAA+AAcAPwBBAEAABwBBAEIAQAAHAEEAQwBCAAcAQwBEAEIABwBDAEUARAAHAEUARgBEAAcARQBHAEYABwBHAEgARgAHAEcASQBIAAcASQBKAEgABwBJAEsASgAHAEsATABKAAcASwBNAEwABwBNAE4ATAAHAE0ATwBOAAcATgBQAFEABwBOAE8AUAAHAFEAUgBTAAcAUQBQAFIABwBTAFQAVQAHAFMAUgBUAAcAVQBWAFcABwBVAFQAVgAHAFcAWABZAAcAVwBWAFgABwBZAFoAWwAHAFkAWABaAAcAWwBcAF0ABwBbAFoAXAAHAF0AXgBfAAcAXQBcAF4ABwBfAGAAYQAHAF8AXgBgAAcAYQBiAGMABwBhAGAAYgAHAGMAAwAAAAcAYwBiAAMABwADAGQAAQAHAAMAZQBkAAcAAQBmAAQABwABAGQAZgAHAAQAZwAGAAcABABmAGcABwAGAGgACAAHAAYAZwBoAAcACABpAAoABwAIAGgAaQAHAAoAagAMAAcACgBpAGoABwAMAGsADgAHAAwAagBrAAcADgBsABAABwAOAGsAbAAHABAAbQASAAcAEABsAG0ABwASAG4AFAAHABIAbQBuAAcAFABvABYABwAUAG4AbwAHABYAcAAYAAcAFgBvAHAABwAYAHEAGgAHABgAcABxAAcAGgByABwABwAaAHEAcgAHAHIAHwAcAAcAcgBzAB8ABwBzACEAHwAHAHMAdAAhAAcAdAAjACEABwB0AHUAIwAHAHUAJQAjAAcAdQB2ACUABwB2ACcAJQAHAHYAdwAnAAcAdwApACcABwB3AHgAKQAHAHgAKwApAAcAeAB5ACsABwB5AC0AKwAHAHkAegAtAAcAegAvAC0ABwB6AHsALwAHAHsAMQAvAAcAewB8ADEABwB8ADMAMQAHAHwAfQAzAAcAfQA1ADMABwB9AH4ANQAHAH4ANwA1AAcAfgB/ADcABwB/ADkANwAHAH8AgAA5AAcAgAA7ADkABwCAAIEAOwAHAIEAPQA7AAcAgQCCAD0ABwCCAD8APQAHAIIAgwA/AAcAgwBBAD8ABwCDAIQAQQAHAIQAQwBBAAcAhACFAEMABwCFAEUAQwAHAIUAhgBFAAcAhgBHAEUABwCGAIcARwAHAIcASQBHAAcAhwCIAEkABwCIAEsASQAHAIgAiQBLAAcAiQBNAEsABwCJAIoATQAHAIoATwBNAAcAigCLAE8ABwBPAIwAUAAHAE8AiwCMAAcAUACNAFIABwBQAIwAjQAHAFIAjgBUAAcAUgCNAI4ABwBUAI8AVgAHAFQAjgCPAAcAVgCQAFgABwBWAI8AkAAHAFgAkQBaAAcAWACQAJEABwBaAJIAXAAHAFoAkQCSAAcAXACTAF4ABwBcAJIAkwAHAF4AlABgAAcAXgCTAJQABwBgAJUAYgAHAGAAlACVAAcAYgBlAAMABwBiAJUAZQAHAGQAlgCXAAcAZABlAJYABwBkAJgAZgAHAGQAlwCYAAcAZgCZAGcABwBmAJgAmQAHAGcAmgBoAAcAZwCZAJoABwBoAJsAaQAHAGgAmgCbAAcAaQCcAGoABwBpAJsAnAAHAGoAnQBrAAcAagCcAJ0ABwBrAJ4AbAAHAGsAnQCeAAcAbACfAG0ABwBsAJ4AnwAHAG0AoABuAAcAbQCfAKAABwBuAKEAbwAHAG4AoAChAAcAbwCiAHAABwBvAKEAogAHAHAAowBxAAcAcACiAKMABwBxAKQAcgAHAHEAowCkAAcApABzAHIABwCkAKUAcwAHAKUAdABzAAcApQCmAHQABwCmAHUAdAAHAKYApwB1AAcApwB2AHUABwCnAKgAdgAHAKgAdwB2AAcAqACpAHcABwCpAHgAdwAHAKkAqgB4AAcAqgB5AHgABwCqAKsAeQAHAKsAegB5AAcAqwCsAHoABwCsAHsAegAHAKwArQB7AAcArQB8AHsABwCtAK4AfAAHAK4AfQB8AAcArgCvAH0ABwCvAH4AfQAHAK8AsAB+AAcAsAB/AH4ABwCwALEAfwAHALIAfwCxAAcAsgCAAH8ABwCzAIAAsgAHALMAgQCAAAcAtACBALMABwC0AIIAgQAHALUAggC0AAcAtQCDAIIABwC2AIMAtQAHALYAhACDAAcAtwCEALYABwC3AIUAhAAHALgAhQC3AAcAuACGAIUABwC5AIYAuAAHALkAhwCGAAcAugCHALkABwC6AIgAhwAHALsAiAC6AAcAuwCJAIgABwC8AIkAuwAHALwAigCJAAcAvQCKALwABwC9AIsAigAHAIwAvQC+AAcAjACLAL0ABwCNAL4AvwAHAI0AjAC+AAcAjgC/AMAABwCOAI0AvwAHAI8AwADBAAcAjwCOAMAABwCQAMEAwgAHAJAAjwDBAAcAkQDCAMMABwCRAJAAwgAHAJIAwwDEAAcAkgCRAMMABwCTAMQAxQAHAJMAkgDEAAcAlADFAMYABwCUAJMAxQAHAJUAxgDHAAcAlQCUAMYABwBlAMcAlgAHAGUAlQDHAAcAxADIAMUABwDEAMkAyAAHAMgAxgDFAAcAyADKAMYABwDKAMcAxgAHAMoAywDHAAcAzACYAJcABwDMAM0AmAAHAM0AmQCYAAcAzQDOAJkABwDOAJoAmQAHAM4AzwCaAAcA0ACdAJwABwDQANEAnQAHANEAngCdAAcA0QDSAJ4ABwDSAJ8AngAHANIA0wCfAAcA1AChANUABwDUAKIAoQAHANYAogDUAAcA1gCjAKIABwDXAKMA1gAHANcApACjAAcA2ACmANkABwDYAKcApgAHANoApwDYAAcA2gCoAKcABwDbAKgA2gAHANsAqQCoAAcA3ACrAN0ABwDcAKwAqwAHAK0A3ADeAAcArQCsANwABwCuAN4A3wAHAK4ArQDeAAcAsQDgAOEABwCxALAA4AAHALIA4QDiAAcAsgCxAOEABwCzAOIA4wAHALMAsgDiAAcAtgDkAOUABwC2ALUA5AAHALcA5QDmAAcAtwC2AOUABwC4AOYA5wAHALgAtwDmAAcAugDoALsABwC6AOkA6AAHALsA6gC8AAcAuwDoAOoABwC8AOsAvQAHALwA6gDrAAcAvwDsAMAABwC/AO0A7AAHAMAA7gDBAAcAwADsAO4ABwDBAO8AwgAHAMEA7gDvAAcAyQDwAMgABwDJAPEA8AAHAPAAygDIAAcA8ADyAMoABwDyAMsAygAHAPIA8wDLAAcA9ADNAMwABwD0APUAzQAHAPUAzgDNAAcA9QD2AM4ABwD2AM8AzgAHAPYA9wDPAAcA+ADRANAABwD4APkA0QAHAPkA0gDRAAcA+QD6ANIABwD6ANMA0gAHAPoA+wDTAAcA/ADVAP0ABwD8ANQA1QAHAP4A1AD8AAcA/gDWANQABwD/ANYA/gAHAP8A1wDWAAcAAAHZAAEBBwAAAdgA2QAHAAIB2AAAAQcAAgHaANgABwADAdoAAgEHAAMB2wDaAAcABAHdAAUBBwAEAdwA3QAHAN4ABAEGAQcA3gDcAAQBBwDfAAYBBwEHAN8A3gAGAQcA4QAIAQkBBwDhAOAACAEHAOIACQEKAQcA4gDhAAkBBwDjAAoBCwEHAOMA4gAKAQcA5QAMAQ0BBwDlAOQADAEHAOYADQEOAQcA5gDlAA0BBwDnAA4BDwEHAOcA5gAOAQcA6QAQAegABwDpABEBEAEHAOgAEgHqAAcA6AAQARIBBwDqABMB6wAHAOoAEgETAQcA7QAUAewABwDtABUBFAEHAOwAFgHuAAcA7AAUARYBBwDuABcB7wAHAO4AFgEXAQcAGAEZAfEABwAYARoBGQEHAPEAGwHwAAcA8QAZARsBBwAbAfIA8AAHABsBHAHyAAcAHAHzAPIABwAcAR0B8wAHAB0BHgHzAAcAHQEfAR4BBwAfAfQAHgEHAB8BIAH0AAcAIAH1APQABwAgASEB9QAHACEB9gD1AAcAIQEiAfYABwAiAfcA9gAHACIBIwH3AAcAIwEkAfcABwAjASUBJAEHACUB+AAkAQcAJQEmAfgABwAmAfkA+AAHACYBJwH5AAcAJwH6APkABwAnASgB+gAHACgB+wD6AAcAKAEpAfsABwApASoB+wAHACkBKwEqAQcALAEqASsBBwAsAf0AKgEHAC0B/QAsAQcALQH8AP0ABwAuAfwALQEHAC4B/gD8AAcALwH+AC4BBwAvAf8A/gAHADAB/wAvAQcAMAExAf8ABwAyATEBMAEHADIBAQExAQcAMwEBATIBBwAzAQABAQEHADQBAAEzAQcANAECAQABBwA1AQIBNAEHADUBAwECAQcANgEDATUBBwA2ATcBAwEHADgBNwE2AQcAOAEFATcBBwA5AQUBOAEHADkBBAEFAQcABgE5AToBBwAGAQQBOQEHAAcBOgE7AQcABwEGAToBBwA8ATsBPQEHADwBBwE7AQcACAE9AT4BBwAIATwBPQEHAAkBPgE/AQcACQEIAT4BBwAKAT8BQAEHAAoBCQE/AQcACwFAAUEBBwALAQoBQAEHAEIBQQFDAQcAQgELAUEBBwAMAUMBRAEHAAwBQgFDAQcADQFEAUUBBwANAQwBRAEHAA4BRQFGAQcADgENAUUBBwAPAUYBRwEHAA8BDgFGAQcADwFIAUkBBwAPAUcBSAEHAEkBSgERAQcASQFIAUoBBwARAUsBEAEHABEBSgFLAQcAEAFMARIBBwAQAUsBTAEHABIBTQETAQcAEgFMAU0BBwATAU4BTwEHABMBTQFOAQcATwFQARUBBwBPAU4BUAEHABUBUQEUAQcAFQFQAVEBBwAUAVIBFgEHABQBUQFSAQcAFgFTARcBBwAWAVIBUwEHABcBGgEYAQcAFwFTARoBBwAZAVQBVQEHABkBGgFUAQcAGwFVAVYBBwAbARkBVQEHAFcBGwFWAQcAVwEcARsBBwBYARwBVwEHAFgBHQEcAQcAWQEdAVgBBwBZAR8BHQEHAFoBHwFZAQcAWgEgAR8BBwBbASABWgEHAFsBIQEgAQcAXAEhAVsBBwBcASIBIQEHAF0BIgFcAQcAXQEjASIBBwBeASMBXQEHAF4BJQEjAQcAXwElAV4BBwBfASYBJQEHAGABJgFfAQcAYAEnASYBBwBhAScBYAEHAGEBKAEnAQcAYgEoAWEBBwBiASkBKAEHAGMBKQFiAQcAYwErASkBBwBjASwBKwEHAGMBZAEsAQcAZAEtASwBBwBkAWUBLQEHAGUBLgEtAQcAZQFmAS4BBwBmAS8BLgEHAGYBZwEvAQcAZwEwAS8BBwBnAWgBMAEHAGgBMgEwAQcAaAFpATIBBwBpATMBMgEHAGkBagEzAQcAagE0ATMBBwBqAWsBNAEHAGsBNQE0AQcAawFsATUBBwBsATYBNQEHAGwBbQE2AQcAbQE4ATYBBwBtAW4BOAEHAG4BOQE4AQcAbgFvATkBBwA5AXABOgEHADkBbwFwAQcAOgFxATsBBwA6AXABcQEHADsBcgE9AQcAOwFxAXIBBwA9AXMBPgEHAD0BcgFzAQcAPgF0AT8BBwA+AXMBdAEHAD8BdQFAAQcAPwF0AXUBBwBAAXYBQQEHAEABdQF2AQcAQQF3AUMBBwBBAXYBdwEHAEMBeAFEAQcAQwF3AXgBBwBEAXkBRQEHAEQBeAF5AQcARQF6AUYBBwBFAXkBegEHAEYBewFHAQcARgF6AXsBBwBIAXsBfAEHAEgBRwF7AQcASgF8AX0BBwBKAUgBfAEHAEsBfQF+AQcASwFKAX0BBwBMAX4BfwEHAEwBSwF+AQcATQF/AYABBwBNAUwBfwEHAE4BgAGBAQcATgFNAYABBwBQAYEBggEHAFABTgGBAQcAUQGCAYMBBwBRAVABggEHAFIBgwGEAQcAUgFRAYMBBwBTAYQBhQEHAFMBUgGEAQcAGgGFAVQBBwAaAVMBhQEHAFUBhgGHAQcAVQFUAYYBBwBWAYcBiAEHAFYBVQGHAQcAiQFWAYgBBwCJAVcBVgEHAIoBVwGJAQcAigFYAVcBBwCLAVgBigEHAIsBWQFYAQcAjAFZAYsBBwCMAVoBWQEHAI0BWgGMAQcAjQFbAVoBBwCOAVsBjQEHAI4BXAFbAQcAjwFcAY4BBwCPAV0BXAEHAJABXQGPAQcAkAFeAV0BBwCRAV4BkAEHAJEBXwFeAQcAkgFfAZEBBwCSAWABXwEHAJMBYAGSAQcAkwFhAWABBwCUAWEBkwEHAJQBYgFhAQcAlQFiAZQBBwCVAWMBYgEHAJUBZAFjAQcAlQGWAWQBBwCWAWUBZAEHAJYBlwFlAQcAlwFmAWUBBwCXAZgBZgEHAJgBZwFmAQcAmAGZAWcBBwCZAWgBZwEHAJkBmgFoAQcAmgFpAWgBBwCaAZsBaQEHAJsBagFpAQcAmwGcAWoBBwCcAWsBagEHAJwBnQFrAQcAnQFsAWsBBwCdAZ4BbAEHAJ4BbQFsAQcAngGfAW0BBwCfAW4BbQEHAJ8BoAFuAQcAoAFvAW4BBwCgAaEBbwEHAG8BogFwAQcAbwGhAaIBBwBwAaMBcQEHAHABogGjAQcAcQGkAXIBBwBxAaMBpAEHAHIBpQFzAQcAcgGkAaUBBwBzAaYBdAEHAHMBpQGmAQcAdAGnAXUBBwB0AaYBpwEHAHUBqAF2AQcAdQGnAagBBwB2AakBdwEHAHYBqAGpAQcAdwGqAXgBBwB3AakBqgEHAHgBqwF5AQcAeAGqAasBBwB5AawBegEHAHkBqwGsAQcAegGtAXsBBwB6AawBrQEHAHwBrQGuAQcAfAF7Aa0BBwB9Aa4BrwEHAH0BfAGuAQcAfgGvAbABBwB+AX0BrwEHAH8BsAGxAQcAfwF+AbABBwCAAbEBsgEHAIABfwGxAQcAgQGyAbMBBwCBAYABsgEHAIIBswG0AQcAggGBAbMBBwCDAbQBtQEHAIMBggG0AQcAhAG1AbYBBwCEAYMBtQEHAIUBtgG3AQcAhQGEAbYBBwBUAbcBhgEHAFQBhQG3AQcAhwG4AbkBBwCHAYYBuAEHAIgBuQG6AQcAiAGHAbkBBwC7AYgBugEHALsBiQGIAQcAvAGJAbsBBwC8AYoBiQEHAL0BigG8AQcAvQGLAYoBBwC+AYsBvQEHAL4BjAGLAQcAvwGMAb4BBwC/AY0BjAEHAMABjQG/AQcAwAGOAY0BBwDBAY4BwAEHAMEBjwGOAQcAwgGPAcEBBwDCAZABjwEHAMMBkAHCAQcAwwGRAZABBwDEAZEBwwEHAMQBkgGRAQcAxQGSAcQBBwDFAZMBkgEHAMYBkwHFAQcAxgGUAZMBBwDHAZQBxgEHAMcBlQGUAQcAxwGWAZUBBwDHAcgBlgEHAMgBlwGWAQcAyAHJAZcBBwDJAZgBlwEHAMkBygGYAQcAygGZAZgBBwDKAcsBmQEHAMsBmgGZAQcAywHMAZoBBwDMAZsBmgEHAMwBzQGbAQcAzQGcAZsBBwDNAc4BnAEHAM4BnQGcAQcAzgHPAZ0BBwDPAZ4BnQEHAM8B0AGeAQcA0AGfAZ4BBwDQAdEBnwEHANEBoAGfAQcA0QHSAaABBwDSAaEBoAEHANIB0wGhAQcAoQHUAaIBBwChAdMB1AEHAKIB1QGjAQcAogHUAdUBBwCjAdYBpAEHAKMB1QHWAQcApAHXAaUBBwCkAdYB1wEHAKUB2AGmAQcApQHXAdgBBwCmAdkBpwEHAKYB2AHZAQcApwHaAagBBwCnAdkB2gEHAKgB2wGpAQcAqAHaAdsBBwCpAdwBqgEHAKkB2wHcAQcAqgHdAasBBwCqAdwB3QEHAKsB3gGsAQcAqwHdAd4BBwCsAd8BrQEHAKwB3gHfAQcArgHfAeABBwCuAa0B3wEHAK8B4AHhAQcArwGuAeABBwCwAeEB4gEHALABrwHhAQcAsQHiAeMBBwCxAbAB4gEHALIB4wHkAQcAsgGxAeMBBwCzAeQB5QEHALMBsgHkAQcAtAHlAeYBBwC0AbMB5QEHALUB5gHnAQcAtQG0AeYBBwC2AecB6AEHALYBtQHnAQcAtwHoAekBBwC3AbYB6AEHAIYB6QG4AQcAhgG3AekBBwC4AeoBuQEHALgB6wHqAQcAuQHsAboBBwC5AeoB7AEHAOwBuwG6AQcA7AHtAbsBBwDtAbwBuwEHAO0B7gG8AQcA7gG9AbwBBwDuAe8BvQEHAO8BvgG9AQcA7wHwAb4BBwDwAb8BvgEHAPAB8QG/AQcA8QHAAb8BBwDxAfIBwAEHAPIBwQHAAQcA8gHzAcEBBwDzAcIBwQEHAPMB9AHCAQcA9AHDAcIBBwD0AfUBwwEHAPUBxAHDAQcA9QH2AcQBBwD2AcUBxAEHAPYB9wHFAQcA9wHGAcUBBwD3AfgBxgEHAPgBxwHGAQcA+AH5AccBBwD5AcgBxwEHAPkB+gHIAQcA+gHJAcgBBwD6AfsByQEHAPsBygHJAQcA+wH8AcoBBwD8AcsBygEHAPwB/QHLAQcA/QHMAcsBBwD9Af4BzAEHAP4BzQHMAQcA/gH/Ac0BBwD/Ac4BzQEHAP8BAALOAQcAAALPAc4BBwAAAgECzwEHAAEC0AHPAQcAAQICAtABBwACAtEB0AEHAAICAwLRAQcAAwLSAdEBBwADAgQC0gEHAAQC0wHSAQcABAIFAtMBBwDTAQYC1AEHANMBBQIGAgcA1AEHAtUBBwDUAQYCBwIHANUBCALWAQcA1QEHAggCBwDWAQkC1wEHANYBCAIJAgcA1wEKAtgBBwDXAQkCCgIHANgBCwLZAQcA2AEKAgsCBwDZAQwC2gEHANkBCwIMAgcA2gENAtsBBwDaAQwCDQIHANsBDgLcAQcA2wENAg4CBwDcAQ8C3QEHANwBDgIPAgcA3QEQAt4BBwDdAQ8CEAIHAN4BEQLfAQcA3gEQAhECBwDfARIC4AEHAN8BEQISAgcA4AETAuEBBwDgARICEwIHAOEBFALiAQcA4QETAhQCBwDiARUC4wEHAOIBFAIVAgcA4wEWAuQBBwDjARUCFgIHAOQBFwLlAQcA5AEWAhcCBwDlARgC5gEHAOUBFwIYAgcA5gEZAucBBwDmARgCGQIHAOcBGgLoAQcA5wEZAhoCBwDoARsC6QEHAOgBGgIbAgcA6QHrAbgBBwDpARsC6wEHABwCxAAdAgcAHALJAMQABwDEAB4CHQIHAMQAwwAeAgcAHwLHACACBwAfApYAxwAHAMcAIQIgAgcAxwDLACECBwAiApYAHwIHACIClwCWAAcAIwKXACICBwAjAswAlwAHACQCmgAlAgcAJAKbAJoABwCaACYCJQIHAJoAzwAmAgcAJwKbACQCBwAnApwAmwAHACgCnAAnAgcAKALQAJwABwApAp8AKgIHACkCoACfAAcAnwArAioCBwCfANMAKwIHACwCoAApAgcALAKhAKAABwDVACwCLQIHANUAoQAsAgcALgLXAC8CBwAuAqQA1wAHADACpAAuAgcAMAKlAKQABwAxAqUAMAIHADECpgClAAcA2QAxAjICBwDZAKYAMQIHADMC2wA0AgcAMwKpANsABwA1AqkAMwIHADUCqgCpAAcANgKqADUCBwA2AqsAqgAHAN0ANgI3AgcA3QCrADYCBwA4At8AOQIHADgCrgDfAAcArwA4AjoCBwCvAK4AOAIHALAAOgI7AgcAsACvADoCBwDgADsCPAIHAOAAsAA7AgcAPQLjAD4CBwA9ArMA4wAHALQAPQI/AgcAtACzAD0CBwC1AD8CQAIHALUAtAA/AgcA5ABAAkECBwDkALUAQAIHAEIC5wBDAgcAQgK4AOcABwC5AEICRAIHALkAuABCAgcARQK6AEYCBwBFAukAugAHALoARAJGAgcAugC5AEQCBwC9AEcCSAIHAL0A6wBHAgcAvgBIAkkCBwC+AL0ASAIHAEoCvwBLAgcASgLtAL8ABwC/AEkCSwIHAL8AvgBJAgcAwgBMAk0CBwDCAO8ATAIHAMMATQIeAgcAwwDCAE0CBwBOAskAHAIHAE4C8QDJAAcATwLxAE4CBwBPAhgB8QAHAPMAUAJRAgcA8wAeAVACBwDLAFECIQIHAMsA8wBRAgcAUgLMACMCBwBSAvQAzAAHAB4BUgJQAgcAHgH0AFICBwD3AFMCVAIHAPcAJAFTAgcAzwBUAiYCBwDPAPcAVAIHAFUC0AAoAgcAVQL4ANAABwAkAVUCUwIHACQB+ABVAgcA+wBWAlcCBwD7ACoBVgIHANMAVwIrAgcA0wD7AFcCBwD9AC0CWAIHAP0A1QAtAgcAKgFYAlYCBwAqAf0AWAIHAC8C/wBZAgcALwLXAP8ABwD/AFoCWQIHAP8AMQFaAgcAAQEyAlsCBwABAdkAMgIHADEBWwJaAgcAMQEBAVsCBwA0AgMBXAIHADQC2wADAQcAAwFdAlwCBwADATcBXQIHAAUBNwJeAgcABQHdADcCBwA3AV4CXQIHADcBBQFeAgcAXwI8AWACBwBfAgcBPAEHADkCBwFfAgcAOQLfAAcBBwBgAggBYQIHAGACPAEIAQcACAE8AmECBwAIAeAAPAIHAGICQgFjAgcAYgILAUIBBwA+AgsBYgIHAD4C4wALAQcAYwIMAWQCBwBjAkIBDAEHAAwBQQJkAgcADAHkAEECBwBlAkkBZgIHAGUCDwFJAQcAQwIPAWUCBwBDAucADwEHAGcC6QBFAgcAZwIRAekABwBmAhEBZwIHAGYCSQERAQcAaAJPAWkCBwBoAhMBTwEHAOsAaAJHAgcA6wATAWgCBwBqAu0ASgIHAGoCFQHtAAcAaQIVAWoCBwBpAk8BFQEHAGsCGAFPAgcAawIXARgBBwDvAGsCTAIHAO8AFwFrAgcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHwCdwJ0AgcAfAJ9AncCBwB7An4CeQIHAHsCfwJ+AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCIAoMCgAIHAIgCiQKDAgcAhwKKAoUCBwCHAosCigIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAjgKUApUCBwCOAo0ClAIHAJYCkgKXAgcAlgKQApICBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAJoCoAKhAgcAmgKZAqACBwCiAp4CowIHAKICnAKeAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCmAqwCrQIHAKYCpQKsAgcArgKqAq8CBwCuAqgCqgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAsgK4ArkCBwCyArECuAIHALoCtgK7AgcAugK0ArYCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAL4CxALFAgcAvgK9AsQCBwDGAsICxwIHAMYCwALCAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDQAssCyAIHANAC0QLLAgcAzwLSAs0CBwDPAtMC0gIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA3ALXAtQCBwDcAt0C1wIHANsC3gLZAgcA2wLfAt4CBwBuAuAC4QIHAG4CbQLgAgcA4gJyAuMCBwDiAnACcgIHAOQC4gLlAgcA5AJwAuICBwDmAnAC5AIHAOYCcwJwAgcA5wJzAuYCBwDnAngCcwIHAOgCeALnAgcA6AJ7AngCBwDpAnsC6AIHAOkCfwJ7AgcA6gJ/AukCBwDqAoQCfwIHAOsChALqAgcA6wKHAoQCBwDsAocC6wIHAOwCiwKHAgcA7QKLAuwCBwDtAo8CiwIHAI0C7QLuAgcAjQKPAu0CBwCUAu4C7wIHAJQCjQLuAgcAmwLvAvACBwCbApQC7wIHAJkC8ALxAgcAmQKbAvACBwCgAvEC8gIHAKACmQLxAgcApwLyAvMCBwCnAqAC8gIHAKUC8wL0AgcApQKnAvMCBwCsAvQC9QIHAKwCpQL0AgcAswL1AvYCBwCzAqwC9QIHALEC9gL3AgcAsQKzAvYCBwC4AvcC+AIHALgCsQL3AgcAvwL4AvkCBwC/ArgC+AIHAL0C+QL6AgcAvQK/AvkCBwDEAvoC+wIHAMQCvQL6AgcAzAL7AvwCBwDMAsQC+wIHAP0CzAL8AgcA/QLPAswCBwD+As8C/QIHAP4C0wLPAgcA/wLTAv4CBwD/AtgC0wIHAAAD2AL/AgcAAAPbAtgCBwABA9sCAAMHAAED3wLbAgcA5QLfAgEDBwDlAuIC3wIHAAID5ALlAgcAAgMDA+QCBwADA+YC5AIHAAMDBAPmAgcABQPmAgQDBwAFA+cC5gIHAAYD5wIFAwcABgPoAucCBwAHA+gCBgMHAAcD6QLoAgcACAPpAgcDBwAIA+oC6QIHAAkD6gIIAwcACQPrAuoCBwAKA+sCCQMHAAoD7ALrAgcACwPsAgoDBwALA+0C7AIHAO4CCwMMAwcA7gLtAgsDBwDvAgwDDQMHAO8C7gIMAwcA8AINAw4DBwDwAu8CDQMHAPECDgMPAwcA8QLwAg4DBwDyAg8DEAMHAPIC8QIPAwcA8wIQAxEDBwDzAvICEAMHAPQCEQMSAwcA9ALzAhEDBwD0AhMD9QIHAPQCEgMTAwcA9QIUA/YCBwD1AhMDFAMHAPYCFQP3AgcA9gIUAxUDBwD3AhYD+AIHAPcCFQMWAwcA+AIXA/kCBwD4AhYDFwMHAPkCGAP6AgcA+QIXAxgDBwD6AhkD+wIHAPoCGAMZAwcA+wIaA/wCBwD7AhkDGgMHABoD/QL8AgcAGgMbA/0CBwAbA/4C/QIHABsDHAP+AgcAHAP/Av4CBwAcAx0D/wIHAB0DAAP/AgcAHQMeAwADBwAeAwEDAAMHAB4DHwMBAwcAHwPlAgEDBwAfAwID5QIHACADAgMhAwcAIAMDAwIDBwAiAwMDIAMHACIDBAMDAwcAIwMEAyIDBwAjAwUDBAMHACQDBQMjAwcAJAMGAwUDBwAlAwYDJAMHACUDBwMGAwcAJgMHAyUDBwAmAwgDBwMHACcDCAMmAwcAJwMJAwgDBwAoAwkDJwMHACgDCgMJAwcAKQMKAygDBwApAwsDCgMHAAwDKQMqAwcADAMLAykDBwANAyoDKwMHAA0DDAMqAwcADgMrAywDBwAOAw0DKwMHAA8DLAMtAwcADwMOAywDBwAQAy0DLgMHABADDwMtAwcAEQMuAy8DBwARAxADLgMHABIDLwMwAwcAEgMRAy8DBwATAzADMQMHABMDEgMwAwcAFAMxAzIDBwAUAxMDMQMHABUDMgMzAwcAFQMUAzIDBwAWAzMDNAMHABYDFQMzAwcAFwM0AzUDBwAXAxYDNAMHABgDNQM2AwcAGAMXAzUDBwAZAzYDNwMHABkDGAM2AwcAGgM3AzgDBwAaAxkDNwMHADkDGgM4AwcAOQMbAxoDBwA6AxsDOQMHADoDHAMbAwcAOwMcAzoDBwA7Ax0DHAMHADwDHQM7AwcAPAMeAx0DBwA9Ax4DPAMHAD0DHwMeAwcAIQMfAz0DBwAhAwIDHwMHAD4DIQM/AwcAPgMgAyEDBwBAAyADPgMHAEADIgMgAwcAQQMiA0ADBwBBAyMDIgMHAEIDIwNBAwcAQgMkAyMDBwBDAyQDQgMHAEMDJQMkAwcARAMlA0MDBwBEAyYDJQMHAEUDJgNEAwcARQMnAyYDBwBGAycDRQMHAEYDKAMnAwcARwMoA0YDBwBHAykDKAMHACoDRwNIAwcAKgMpA0cDBwArA0gDSQMHACsDKgNIAwcALANJA0oDBwAsAysDSQMHAC0DSgNLAwcALQMsA0oDBwAuA0sDTAMHAC4DLQNLAwcALwNMA00DBwAvAy4DTAMHADADTQNOAwcAMAMvA00DBwAxA04DTwMHADEDMANOAwcAMgNPA1ADBwAyAzEDTwMHADMDUANRAwcAMwMyA1ADBwA0A1EDUgMHADQDMwNRAwcANQNSA1MDBwA1AzQDUgMHADYDUwNUAwcANgM1A1MDBwA3A1QDVQMHADcDNgNUAwcAOANVA1YDBwA4AzcDVQMHAFcDOANWAwcAVwM5AzgDBwBYAzkDVwMHAFgDOgM5AwcAWQM6A1gDBwBZAzsDOgMHAFoDOwNZAwcAWgM8AzsDBwBbAzwDWgMHAFsDPQM8AwcAPwM9A1sDBwA/AyEDPQMHAFwDXQNeAwcAXANfA10DBwBeA2ADYQMHAF4DXQNgAwcAYQNiA2MDBwBhA2ADYgMHAGMDZANlAwcAYwNiA2QDBwBlA2YDZwMHAGUDZANmAwcAZwNoA2kDBwBnA2YDaAMHAGkDagNrAwcAaQNoA2oDBwBrA2wDbQMHAGsDagNsAwcAbANuA20DBwBsA28DbgMHAG8DcANuAwcAbwNxA3ADBwBxA3IDcAMHAHEDcwNyAwcAcwN0A3IDBwBzA3UDdAMHAHUDdgN0AwcAdQN3A3YDBwB3A3gDdgMHAHcDeQN4AwcAeQN6A3gDBwB5A3sDegMHAHsDfAN6AwcAewN9A3wDBwB+A3wDfQMHAH4DfwN8AwcAgAN/A34DBwCAA4EDfwMHAIIDgQOAAwcAggODA4EDBwCEA4MDggMHAIQDhQODAwcAhgOFA4QDBwCGA4cDhQMHAIgDhwOGAwcAiAOJA4cDBwCKA4kDiAMHAIoDiwOJAwcAjAOKA40DBwCMA4sDigMHAI4DjQOPAwcAjgOMA40DBwCQA48DkQMHAJADjgOPAwcAkgORA5MDBwCSA5ADkQMHAJQDkwOVAwcAlAOSA5MDBwCWA5UDlwMHAJYDlAOVAwcAXAOXA18DBwBcA5YDlwMHAF8DmANdAwcAXwOZA5gDBwBdA5oDYAMHAF0DmAOaAwcAYAObA2IDBwBgA5oDmwMHAGYDnANoAwcAZgOdA5wDBwBoA54DagMHAGgDnAOeAwcAagOfA2wDBwBqA54DnwMHAJ8DbwNsAwcAnwOgA28DBwChA3UDcwMHAKEDogN1AwcAogN3A3UDBwCiA6MDdwMHAKMDeQN3AwcAowOkA3kDBwCkA3sDeQMHAKQDpQN7AwcApgN+A6cDBwCmA4ADfgMHAKgDgAOmAwcAqAOCA4ADBwCpA4IDqAMHAKkDhAOCAwcAqgOEA6kDBwCqA4YDhAMHAI0DqwOsAwcAjQOKA6sDBwCPA6wDrQMHAI8DjQOsAwcAkQOtA64DBwCRA48DrQMHAJMDrgOvAwcAkwORA64DBwBfA7ADmQMHAF8DlwOwAwcAmQOxA5gDBwCZA7IDsQMHAJgDswOaAwcAmAOxA7MDBwCaA7QDmwMHAJoDswO0AwcAmwO1A7YDBwCbA7QDtQMHALYDtwOdAwcAtgO1A7cDBwCdA7gDnAMHAJ0DtwO4AwcAnAO5A54DBwCcA7gDuQMHAJ4DugOfAwcAngO5A7oDBwC6A6ADnwMHALoDuwOgAwcAuwO8A6ADBwC7A70DvAMHAL0DoQO8AwcAvQO+A6EDBwC+A6IDoQMHAL4DvwOiAwcAvwOjA6IDBwC/A8ADowMHAMADpAOjAwcAwAPBA6QDBwDBA6UDpAMHAMEDwgOlAwcAwgPDA6UDBwDCA8QDwwMHAMUDwwPEAwcAxQOnA8MDBwDGA6cDxQMHAMYDpgOnAwcAxwOmA8YDBwDHA6gDpgMHAMgDqAPHAwcAyAOpA6gDBwDJA6kDyAMHAMkDqgOpAwcAygOqA8kDBwDKA8sDqgMHAMwDywPKAwcAzAOrA8sDBwCsA8wDzQMHAKwDqwPMAwcArQPNA84DBwCtA6wDzQMHAK4DzgPPAwcArgOtA84DBwCvA88D0AMHAK8DrgPPAwcA0QPQA9IDBwDRA68D0AMHALAD0gPTAwcAsAPRA9IDBwCZA9MDsgMHAJkDsAPTAwcAsgPUA7EDBwCyA9UD1AMHALED1gOzAwcAsQPUA9YDBwCzA9cDtAMHALMD1gPXAwcAtAPYA7UDBwC0A9cD2AMHALUD2QO3AwcAtQPYA9kDBwC3A9oDuAMHALcD2QPaAwcAuAPbA7kDBwC4A9oD2wMHALkD3AO6AwcAuQPbA9wDBwDcA7sDugMHANwD3QO7AwcA3QO9A7sDBwDdA94DvQMHAN4DvgO9AwcA3gPfA74DBwDfA78DvgMHAN8D4AO/AwcA4APAA78DBwDgA+EDwAMHAOEDwQPAAwcA4QPiA8EDBwDiA8IDwQMHAOID4wPCAwcA4wPEA8IDBwDjA+QDxAMHAOUDxAPkAwcA5QPFA8QDBwDmA8UD5QMHAOYDxgPFAwcA5wPGA+YDBwDnA8cDxgMHAOgDxwPnAwcA6APIA8cDBwDpA8gD6AMHAOkDyQPIAwcA6gPJA+kDBwDqA8oDyQMHAOsDygPqAwcA6wPMA8oDBwDNA+sD7AMHAM0DzAPrAwcAzgPsA+0DBwDOA80D7AMHAM8D7QPuAwcAzwPOA+0DBwDQA+4D7wMHANADzwPuAwcA0gPvA/ADBwDSA9AD7wMHANMD8APxAwcA0wPSA/ADBwCyA/ED1QMHALID0wPxAwcA1APyA/MDBwDUA9UD8gMHANYD8wP0AwcA1gPUA/MDBwDXA/QD9QMHANcD1gP0AwcA2AP1A/YDBwDYA9cD9QMHANkD9gP3AwcA2QPYA/YDBwDaA/cD+AMHANoD2QP3AwcA2wP4A/kDBwDbA9oD+AMHANwD+QP6AwcA3APbA/kDBwD7A9wD+gMHAPsD3QPcAwcA/APdA/sDBwD8A94D3QMHAP0D3gP8AwcA/QPfA94DBwD+A98D/QMHAP4D4APfAwcA/wPgA/4DBwD/A+ED4AMHAAAE4QP/AwcAAATiA+EDBwABBOIDAAQHAAEE4wPiAwcAAgTjAwEEBwACBOQD4wMHAAME5AMCBAcAAwTlA+QDBwAEBOUDAwQHAAQE5gPlAwcABQTmAwQEBwAFBOcD5gMHAAYE5wMFBAcABgToA+cDBwAHBOgDBgQHAAcE6QPoAwcACATpAwcEBwAIBOoD6QMHAAkE6gMIBAcACQTrA+oDBwDsAwkECgQHAOwD6wMJBAcA7QMKBAsEBwDtA+wDCgQHAO4DCwQMBAcA7gPtAwsEBwDvAwwEDQQHAO8D7gMMBAcA8AMNBA4EBwDwA+8DDQQHAPEDDgQPBAcA8QPwAw4EBwDVAw8E8gMHANUD8QMPBAcA8wMQBBEEBwDzA/IDEAQHAPQDEQQSBAcA9APzAxEEBwD1AxIEEwQHAPUD9AMSBAcA9gMTBBQEBwD2A/UDEwQHAPcDFAQVBAcA9wP2AxQEBwD4AxUEFgQHAPgD9wMVBAcA+QMWBBcEBwD5A/gDFgQHAPoDFwQYBAcA+gP5AxcEBwAZBPoDGAQHABkE+wP6AwcAGgT7AxkEBwAaBPwD+wMHABsE/AMaBAcAGwT9A/wDBwAcBP0DGwQHABwE/gP9AwcAHQT+AxwEBwAdBP8D/gMHAB4E/wMdBAcAHgQABP8DBwAfBAAEHgQHAB8EAQQABAcAIAQBBB8EBwAgBAIEAQQHACEEAgQgBAcAIQQDBAIEBwAiBAMEIQQHACIEBAQDBAcAIwQEBCIEBwAjBAUEBAQHACQEBQQjBAcAJAQGBAUEBwAlBAYEJAQHACUEBwQGBAcAJgQHBCUEBwAmBAgEBwQHACcECAQmBAcAJwQJBAgEBwAKBCcEKAQHAAoECQQnBAcACwQoBCkEBwALBAoEKAQHAAwEKQQqBAcADAQLBCkEBwANBCoEKwQHAA0EDAQqBAcADgQrBCwEBwAOBA0EKwQHAA8ELAQtBAcADwQOBCwEBwDyAy0EEAQHAPIDDwQtBAcAEAQuBBEEBwAQBC8ELgQHABEEMAQSBAcAEQQuBDAEBwASBDEEEwQHABIEMAQxBAcAEwQyBBQEBwATBDEEMgQHABQEMwQVBAcAFAQyBDMEBwAVBDQEFgQHABUEMwQ0BAcAFgQ1BBcEBwAWBDQENQQHABcENgQYBAcAFwQ1BDYEBwA2BBkEGAQHADYENwQZBAcANwQaBBkEBwA3BDgEGgQHADgEGwQaBAcAOAQ5BBsEBwA5BBwEGwQHADkEOgQcBAcAOgQdBBwEBwA6BDsEHQQHADsEHgQdBAcAOwQ8BB4EBwA8BB8EHgQHADwEPQQfBAcAPQQgBB8EBwA9BD4EIAQHAD8EIAQ+BAcAPwQhBCAEBwBABCEEPwQHAEAEIgQhBAcAQQQiBEAEBwBBBCMEIgQHAEIEIwRBBAcAQgQkBCMEBwBDBCQEQgQHAEMEJQQkBAcARAQlBEMEBwBEBCYEJQQHAEUEJgREBAcARQQnBCYEBwAoBEUERgQHACgEJwRFBAcAKQRGBEcEBwApBCgERgQHACoERwRIBAcAKgQpBEcEBwArBEgESQQHACsEKgRIBAcALARJBEoEBwAsBCsESQQHAC0ESgRLBAcALQQsBEoEBwAQBEsELwQHABAELQRLBAcAeANMBHYDBwB4A00ETAQHAHoDTQR4AwcAegNOBE0EBwB8A04EegMHAHwDTwROBAcAfwNPBHwDBwB/A1AETwQHAIEDUAR/AwcAgQNRBFAEBwCDA1EEgQMHAIMDUgRRBAcAhQNSBIMDBwCFA1MEUgQHAIcDUwSFAwcAhwNUBFMEBwCJA1QEhwMHAIkDVQRUBAcAiwNVBIkDBwCLA1YEVQQHAIwDVgSLAwcAjANXBFYEBwCOA1cEjAMHAI4DWARXBAcAkANYBI4DBwCQA1kEWAQHAJIDWQSQAwcAkgNaBFkEBwCUA1oEkgMHAJQDWwRaBAcAlgNbBJQDBwCWA1wEWwQHAFwDXASWAwcAXANdBFwEBwBeA10EXAMHAF4DXgRdBAcAYQNeBF4DBwBhA18EXgQHAGMDXwRhAwcAYwNgBF8EBwBlA2AEYwMHAGUDYQRgBAcAZwNhBGUDBwBnA2IEYQQHAGkDYgRnAwcAaQNjBGIEBwBrA2MEaQMHAGsDZARjBAcAbQNkBGsDBwBtA2UEZAQHAG4DZQRtAwcAbgNmBGUEBwBwA2YEbgMHAHADZwRmBAcAcgNnBHADBwByA2gEZwQHAHQDaARyAwcAdANpBGgEBwB2A2kEdAMHAHYDTARpBAcAtwJqBK4CBwC3AmsEagQHAGsETgRqBAcAawRNBE4EBwC0AmsEtwIHALQCbARrBAcAbARNBGsEBwBsBEwETQQHALoCbAS0AgcAugJtBGwEBwBtBEwEbAQHAG0EaQRMBAcAwwJtBLoCBwDDAm4EbQQHAG4EaQRtBAcAbgRoBGkEBwDAAm4EwwIHAMACbwRuBAcAbwRoBG4EBwBvBGcEaAQHAMYCbwTAAgcAxgJwBG8EBwBwBGcEbwQHAHAEZgRnBAcAyQJwBMYCBwDJAnEEcAQHAHEEZgRwBAcAcQRlBGYEBwDLAnEEyQIHAMsCcgRxBAcAcgRlBHEEBwByBGQEZQQHANECcgTLAgcA0QJzBHIEBwBzBGQEcgQHAHMEYwRkBAcA1QJzBNECBwDVAnQEcwQHAHQEYwRzBAcAdARiBGMEBwDXAnQE1QIHANcCdQR0BAcAdQRiBHQEBwB1BGEEYgQHAN0CdQTXAgcA3QJ2BHUEBwB2BGEEdQQHAHYEYARhBAcA4AJ2BN0CBwDgAncEdgQHAHcEYAR2BAcAdwRfBGAEBwBtAncE4AIHAG0CeAR3BAcAeARfBHcEBwB4BF4EXwQHAG8CeARtAgcAbwJ5BHgEBwB5BF4EeAQHAHkEXQReBAcAdQJ5BG8CBwB1AnoEeQQHAHoEXQR5BAcAegRcBF0EBwB3AnoEdQIHAHcCewR6BAcAewRcBHoEBwB7BFsEXAQHAH0CewR3AgcAfQJ8BHsEBwB8BFsEewQHAHwEWgRbBAcAgQJ8BH0CBwCBAn0EfAQHAH0EWgR8BAcAfQRZBFoEBwCDAn0EgQIHAIMCfgR9BAcAfgRZBH0EBwB+BFgEWQQHAIkCfgSDAgcAiQJ/BH4EBwB/BFgEfgQHAH8EVwRYBAcAkwJ/BIkCBwCTAoAEfwQHAIAEVwR/BAcAgARWBFcEBwCQAoAEkwIHAJACgQSABAcAgQRWBIAEBwCBBFUEVgQHAJYCgQSQAgcAlgKCBIEEBwCCBFUEgQQHAIIEVARVBAcAnwKCBJYCBwCfAoMEggQHAIMEVASCBAcAgwRTBFQEBwCcAoMEnwIHAJwChASDBAcAhARTBIMEBwCEBFIEUwQHAKIChAScAgcAogKFBIQEBwCFBFIEhAQHAIUEUQRSBAcAqwKFBKICBwCrAoYEhQQHAIYEUQSFBAcAhgRQBFEEBwCoAoYEqwIHAKgChwSGBAcAhwRQBIYEBwCHBE8EUAQHAK4ChwSoAgcArgJqBIcEBwBqBE8EhwQHAGoETgRPBAcAiARzAngCBwCIBIkEcwIHAG8CiAR1AgcAbwKJBIgEBwCKBH8ChAIHAIoEiwR/AgcAfQKKBIECBwB9AosEigQHAI8CjASLAgcAjwKNBIwEBwCJAo0EkwIHAIkCjASNBAcAmwKOBJQCBwCbAo8EjgQHAJYCjwSfAgcAlgKOBI8EBwCnApAEoAIHAKcCkQSQBAcAogKRBKsCBwCiApAEkQQHALMCkgSsAgcAswKTBJIEBwCuApMEtwIHAK4CkgSTBAcAvwKUBLgCBwC/ApUElAQHALoClQTDAgcAugKUBJUEBwCWBMQCzAIHAJYElwTEAgcAxgKWBMkCBwDGApcElgQHAJgE0wLYAgcAmASZBNMCBwDRApgE1QIHANECmQSYBAcAmgTfAuICBwCaBJsE3wIHAN0CmgTgAgcA3QKbBJoEBwCJBGwCnAQHAIkEbwJsAgcAcwKcBHECBwBzAokEnAQHAHUCnQR2AgcAdQKIBJ0EBwCIBHoCnQQHAIgEeAJ6AgcAiwR8Ap4EBwCLBH0CfAIHAH8CngR+AgcAfwKLBJ4EBwCBAp8EggIHAIECigSfBAcAigSGAp8EBwCKBIQChgIHAIwEiAKgBAcAjASJAogCBwCLAqAEigIHAIsCjASgBAcAkwKhBJECBwCTAo0EoQQHAI0EjAKhBAcAjQSPAowCBwCOBJcCogQHAI4ElgKXAgcAlAKiBJUCBwCUAo4EogQHAJ8CowSdAgcAnwKPBKMEBwCPBJgCowQHAI8EmwKYAgcAkASjAqQEBwCQBKICowIHAKACpAShAgcAoAKQBKQEBwCrAqUEqQIHAKsCkQSlBAcAkQSkAqUEBwCRBKcCpAIHAJIErwKmBAcAkgSuAq8CBwCsAqYErQIHAKwCkgSmBAcAtwKnBLUCBwC3ApMEpwQHAJMEsAKnBAcAkwSzArACBwCUBLsCqAQHAJQEugK7AgcAuAKoBLkCBwC4ApQEqAQHAMMCqQTBAgcAwwKVBKkEBwCVBLwCqQQHAJUEvwK8AgcAlwTHAqoEBwCXBMYCxwIHAMQCqgTFAgcAxAKXBKoEBwDJAqsEygIHAMkClgSrBAcAlgTOAqsEBwCWBMwCzgIHAJkE0AKsBAcAmQTRAtACBwDTAqwE0gIHANMCmQSsBAcA1QKtBNYCBwDVApgErQQHAJgE2gKtBAcAmATYAtoCBwCbBNwCrgQHAJsE3QLcAgcA3wKuBN4CBwDfApsErgQHAOACrwThAgcA4AKaBK8EBwCaBOMCrwQHAJoE4gLjAgcAqgQgAiECBwCqBMcCIAIHAMcCHwIgAgcAxwLCAh8CBwAiAsICwQIHACICHwLCAgcAIQLFAqoEBwAhAlECxQIHACMCwQKpBAcAIwIiAsECBwBSAqkEvAIHAFICIwKpBAcAUQK+AsUCBwBRAlACvgIHALwCUAJSAgcAvAK+AlACBwAdAsgCygIHAB0CHgLIAgcAHgLQAsgCBwAeAk0C0AIHAE0CrATQAgcATQJMAqwEBwBrAqwETAIHAGsC0gKsBAcAHALKAqsEBwAcAh0CygIHAKsETgIcAgcAqwTOAk4CBwBPAs4CzQIHAE8CTgLOAgcAawLNAtICBwBrAk8CzQIHANoCaQJqAgcA2gLZAmkCBwDeAmkC2QIHAN4CaAJpAgcArQRqAkoCBwCtBNoCagIHANYCSgJLAgcA1gKtBEoCBwDUAksCSQIHANQC1gJLAgcA3AJJAkgCBwDcAtQCSQIHAK4ESAJHAgcArgTcAkgCBwDeAkcCaAIHAN4CrgRHAgcAbAJEAkICBwBsAm4CRAIHAG4CRgJEAgcAbgLhAkYCBwDhAkUCRgIHAOECrwRFAgcArwRnAkUCBwCvBOMCZwIHAJwEQgJDAgcAnARsAkICBwBxAkMCZQIHAHECnARDAgcAZQJyAnECBwBlAmYCcgIHAGYC4wJyAgcAZgJnAuMCBwBjAnoCeQIHAGMCZAJ6AgcAYgJ5An4CBwBiAmMCeQIHAD4CfgKeBAcAPgJiAn4CBwA9Ap4EfAIHAD0CPgKeBAcAfAI/Aj0CBwB8AnQCPwIHAHQCQAI/AgcAdAJ2AkACBwB2AkECQAIHAHYCnQRBAgcAnQRkAkECBwCdBHoCZAIHAGECnwSGAgcAYQI8Ap8EBwCCAjwCOwIHAIICnwQ8AgcAgAI7AjoCBwCAAoICOwIHAIgCOgI4AgcAiAKAAjoCBwCgBDgCOQIHAKAEiAI4AgcAigI5Al8CBwCKAqAEOQIHAF8ChQKKAgcAXwJgAoUCBwCGAmACYQIHAIYChQJgAgcAXQKMAo4CBwBdAl4CjAIHAI4CXAJdAgcAjgKVAlwCBwCiBDMCNAIHAKIElwIzAgcAlwI1AjMCBwCXApICNQIHAJICNgI1AgcAkgKRAjYCBwCRAjcCNgIHAJECoQQ3AgcAXgKhBIwCBwBeAjcCoQQHAJUCNAJcAgcAlQKiBDQCBwAuAqQEowIHAC4CLwKkBAcAMAKjAp4CBwAwAi4CowIHADECngKdAgcAMQIwAp4CBwAvAqECpAQHAC8CWQKhAgcAMgKdAqMEBwAyAjECnQIHAFsCowSYAgcAWwIyAqMEBwCYAloCWwIHAJgCmgJaAgcAmgJZAloCBwCaAqECWQIHAC0CqQKlBAcALQIsAqkCBwBYAqUEpAIHAFgCLQKlBAcALAKqAqkCBwAsAikCqgIHACkCrwKqAgcAKQIqAq8CBwAqAqYErwIHACoCKwKmBAcAKwKtAqYEBwArAlcCrQIHAKQCVgJYAgcApAKmAlYCBwCmAlcCVgIHAKYCrQJXAgcAJwK2ArUCBwAnAiQCtgIHACQCuwK2AgcAJAIlArsCBwAoArUCpwQHACgCJwK1AgcAVQKnBLACBwBVAigCpwQHACUCqAS7AgcAJQImAqgEBwAmArkCqAQHACYCVAK5AgcAsAJTAlUCBwCwArICUwIHALICVAJTAgcAsgK5AlQCBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDEBMgEyQQHAMQExgTIBAcAyQTKBMsEBwDJBMgEygQHAMoEzATLBAcAygTNBMwEBwDNBM4EzAQHAM0EzwTOBAcAxQTOBM8EBwDFBMcEzgQHANAE0QTSBAcA0ATTBNEEBwDSBNQE1QQHANIE0QTUBAcA1ATWBNUEBwDUBNcE1gQHANcE2ATWBAcA1wTZBNgEBwDaBNgE2QQHANoE2wTYBAcA0ATaBNMEBwDQBNsE2gQHANwE3QTeBAcA3ATfBN0EBwDdBOAE3gQHAN0E4QTgBAcA4QTiBOAEBwDhBOME4gQHAOQE4gTjBAcA5ATlBOIEBwDmBOQE5wQHAOYE5QTkBAcA5gTfBNwEBwDmBOcE3wQHAOgE6QTqBAcA6ATrBOkEBwDrBOwE6QQHAOsE7QTsBAcA7gTsBO0EBwDuBO8E7AQHAPAE7gTxBAcA8ATvBO4EBwDwBPIE8wQHAPAE8QTyBAcA8wToBOoEBwDzBPIE6AQHAPQE9QT2BAcA9AT3BPUEBwD4BPUE9wQHAPgE+QT1BAcA+gT4BPsEBwD6BPkE+AQHAPoE/AT9BAcA+gT7BPwEBwD9BP4E/wQHAP0E/AT+BAcA/gT2BP8EBwD+BPQE9gQHAMYEAAUBBQcAxgTFBAAFBwDIBAEFAgUHAMgExgQBBQcAygQCBQMFBwDKBMgEAgUHAAQFygQDBQcABAXNBMoEBwAFBc0EBAUHAAUFzwTNBAcAAAXPBAUFBwAABcUEzwQHANEEBgUHBQcA0QTTBAYFBwDUBAcFCAUHANQE0QQHBQcACQXUBAgFBwAJBdcE1AQHAAoF1wQJBQcACgXZBNcEBwALBdkECgUHAAsF2gTZBAcA0wQLBQYFBwDTBNoECwUHAN0EDAUNBQcA3QTfBAwFBwAOBd0EDQUHAA4F4QTdBAcADwXhBA4FBwAPBeME4QQHABAF4wQPBQcAEAXkBOMEBwDnBBAFEQUHAOcE5AQQBQcA3wQRBQwFBwDfBOcEEQUHABIF6AQTBQcAEgXrBOgEBwAUBesEEgUHABQF7QTrBAcAFQXtBBQFBwAVBe4E7QQHAPEEFQUWBQcA8QTuBBUFBwDyBBYFFwUHAPIE8QQWBQcA6AQXBRMFBwDoBPIEFwUHABgF9AQZBQcAGAX3BPQEBwAaBfcEGAUHABoF+AT3BAcA+wQaBRsFBwD7BPgEGgUHAPwEGwUcBQcA/AT7BBsFBwD+BBwFHQUHAP4E/AQcBQcAGQX+BB0FBwAZBfQE/gQHAAEFHgUfBQcAAQUABR4FBwACBR8FIAUHAAIFAQUfBQcAAwUgBSEFBwADBQIFIAUHACIFAwUhBQcAIgUEBQMFBwAjBQQFIgUHACMFBQUEBQcAHgUFBSMFBwAeBQAFBQUHAAcFJAUlBQcABwUGBSQFBwAIBSUFJgUHAAgFBwUlBQcAJwUIBSYFBwAnBQkFCAUHACgFCQUnBQcAKAUKBQkFBwApBQoFKAUHACkFCwUKBQcABgUpBSQFBwAGBQsFKQUHAA0FKgUrBQcADQUMBSoFBwAsBQ0FKwUHACwFDgUNBQcALQUOBSwFBwAtBQ8FDgUHAC4FDwUtBQcALgUQBQ8FBwARBS4FLwUHABEFEAUuBQcADAUvBSoFBwAMBREFLwUHADAFEwUxBQcAMAUSBRMFBwAyBRIFMAUHADIFFAUSBQcAMwUUBTIFBwAzBRUFFAUHABYFMwU0BQcAFgUVBTMFBwAXBTQFNQUHABcFFgU0BQcAEwU1BTEFBwATBRcFNQUHADYFGQU3BQcANgUYBRkFBwA4BRgFNgUHADgFGgUYBQcAGwU4BTkFBwAbBRoFOAUHABwFOQU6BQcAHAUbBTkFBwAdBToFOwUHAB0FHAU6BQcANwUdBTsFBwA3BRkFHQUHAB8FsQSzBAcAHwUeBbEEBwAfBbAEIAUHAB8FswSwBAcAIAU8BSEFBwAgBbAEPAUHADwFIgUhBQcAPAU9BSIFBwA9BSMFIgUHAD0FsgQjBQcAsQQjBbIEBwCxBB4FIwUHACQFtAQlBQcAJAW3BLQEBwAlBT4FJgUHACUFtAQ+BQcAPgUnBSYFBwA+BT8FJwUHAD8FKAUnBQcAPwW2BCgFBwC1BCgFtgQHALUEKQUoBQcAJAW1BLcEBwAkBSkFtQQHACoFQAUrBQcAKgW4BEAFBwBABSwFKwUHAEAFQQUsBQcAQQUtBSwFBwBBBboELQUHALkELQW6BAcAuQQuBS0FBwAvBbkEuwQHAC8FLgW5BAcALwW4BCoFBwAvBbsEuAQHAEIFMAUxBQcAQgVDBTAFBwBDBTIFMAUHAEMFvgQyBQcAvQQyBb4EBwC9BDMFMgUHADQFvQS/BAcANAUzBb0EBwA0BbwENQUHADQFvwS8BAcANQVCBTEFBwA1BbwEQgUHAMEENgU3BQcAwQTDBDYFBwDABDYFwwQHAMAEOAU2BQcAOQXABEQFBwA5BTgFwAQHADkFRQU6BQcAOQVEBUUFBwA6BcIEOwUHADoFRQXCBAcAwgQ3BTsFBwDCBMEENwUHALIEPAWwBAcAsgQ9BTwFBwC2BD4FtAQHALYEPwU+BQcAugRABbgEBwC6BEEFQAUHAMIERAXABAcAwgRFBUQFBwC+BEIFvAQHAL4EQwVCBQcA6gRkA/MEBwDqBGYDZAMHAGID8wRkAwcAYgPwBPMEBwCdA+wEtgMHAJ0D6QTsBAcAZgPpBJ0DBwBmA+oE6QQHAJsD8ARiAwcAmwPvBPAEBwCbA+wE7wQHAJsDtgPsBAcA3gTRA7ADBwDeBOAE0QMHAJcD3gSwAwcAlwPcBN4EBwCVA9wElwMHAJUD5gTcBAcAkwPmBJUDBwCTA+UE5gQHAK8D5QSTAwcArwPiBOUEBwCvA+AE4gQHAK8D0QPgBAcA1gTLA9UEBwDWBKoDywMHAKsD1QTLAwcAqwPSBNUEBwCKA9IEqwMHAIoD0ATSBAcAiAPQBIoDBwCIA9sE0AQHAIYD2wSIAwcAhgPYBNsEBwCqA9gEhgMHAKoD1gTYBAcApQPMBHsDBwClA8sEzAQHAMMDywSlAwcAwwPJBMsEBwCnA8kEwwMHAKcDxATJBAcAzgR7A8wEBwDOBH0DewMHAMcEfQPOBAcAxwR+A30DBwDEBH4DxwQHAMQEpwN+AwcAbwP/BHEDBwBvA/0E/wQHAKAD/QRvAwcAoAP6BP0EBwCgA/kE+gQHAKADvAP5BAcAoQP5BLwDBwChA/UE+QQHAHMD9QShAwcAcwP2BPUEBwBxA/YEcwMHAHED/wT2BAcARgVHBUgFBwBGBUkFRwUHAEgFSgVLBQcASAVHBUoFBwBLBUwFTQUHAEsFSgVMBQcATQVOBU8FBwBNBUwFTgUHAE8FUAVRBQcATwVOBVAFBwBRBVIFUwUHAFEFUAVSBQcAUwVUBVUFBwBTBVIFVAUHAFUFVgVXBQcAVQVUBVYFBwBWBVgFVwUHAFYFWQVYBQcAWQVaBVgFBwBZBVsFWgUHAFsFXAVaBQcAWwVdBVwFBwBdBV4FXAUHAF0FXwVeBQcAXwVgBV4FBwBfBWEFYAUHAGEFYgVgBQcAYQVjBWIFBwBjBWQFYgUHAGMFZQVkBQcAZQVmBWQFBwBlBWcFZgUHAGgFZgVnBQcAaAVpBWYFBwBqBWkFaAUHAGoFawVpBQcAbAVrBWoFBwBsBW0FawUHAG4FbQVsBQcAbgVvBW0FBwBwBW8FbgUHAHAFcQVvBQcAcgVxBXAFBwByBXMFcQUHAHQFcwVyBQcAdAV1BXMFBwB2BXQFdwUHAHYFdQV0BQcAeAV3BXkFBwB4BXYFdwUHAHoFeQV7BQcAegV4BXkFBwB8BXsFfQUHAHwFegV7BQcAfgV9BX8FBwB+BXwFfQUHAIAFfwWBBQcAgAV+BX8FBwBGBYEFSQUHAEYFgAWBBQcAdwVyBYIFBwB3BXQFcgUHAHsFdwWCBQcAewV5BXcFBwB/BXsFggUHAH8FfQV7BQcASQV/BYIFBwBJBYEFfwUHAEoFSQWCBQcASgVHBUkFBwBOBUoFggUHAE4FTAVKBQcAUgVOBYIFBwBSBVAFTgUHAFYFUgWCBQcAVgVUBVIFBwBbBVYFggUHAFsFWQVWBQcAXwVbBYIFBwBfBV0FWwUHAGMFXwWCBQcAYwVhBV8FBwBnBWMFggUHAGcFZQVjBQcAagVnBYIFBwBqBWgFZwUHAG4FagWCBQcAbgVsBWoFBwByBW4FggUHAHIFcAVuBQcAgwWABUYFBwCDBYQFgAUHAIUFRgVIBQcAhQWDBUYFBwCEBX4FgAUHAIQFhgV+BQcAhgV8BX4FBwCGBYcFfAUHAIcFegV8BQcAhwWIBXoFBwCIBXgFegUHAIgFiQV4BQcAiQV2BXgFBwCJBYoFdgUHAIoFdQV2BQcAigWLBXUFBwCMBVcFWAUHAIwFjQVXBQcAjgVYBVoFBwCOBYwFWAUHAI0FVQVXBQcAjQWPBVUFBwCPBVMFVQUHAI8FkAVTBQcAkAVRBVMFBwCQBZEFUQUHAJEFTwVRBQcAkQWSBU8FBwCSBU0FTwUHAJIFkwVNBQcAkwVLBU0FBwCTBZQFSwUHAJQFSAVLBQcAlAWFBUgFBwCLBXMFdQUHAIsFlQVzBQcAlQVxBXMFBwCVBZYFcQUHAJYFbwVxBQcAlgWXBW8FBwCXBW0FbwUHAJcFmAVtBQcAmAVrBW0FBwCYBZkFawUHAJkFaQVrBQcAmQWaBWkFBwCaBWYFaQUHAJoFmwVmBQcAmwVkBWYFBwCbBZwFZAUHAJwFYgVkBQcAnAWdBWIFBwCdBWAFYgUHAJ0FngVgBQcAngVeBWAFBwCeBZ8FXgUHAJ8FXAVeBQcAnwWgBVwFBwCgBVoFXAUHAKAFjgVaBQcAoQWEBYMFBwChBaIFhAUHAKMFgwWFBQcAowWhBYMFBwCiBYYFhAUHAKIFpAWGBQcApQWFBZQFBwClBaMFhQUHAKQFhwWGBQcApAWmBYcFBwCmBYgFhwUHAKYFpwWIBQcApwWJBYgFBwCnBagFiQUHAKgFigWJBQcAqAWpBYoFBwCpBYsFigUHAKkFqgWLBQcAqgWVBYsFBwCqBasFlQUHAKwFjQWMBQcArAWtBY0FBwCuBYwFjgUHAK4FrAWMBQcArQWPBY0FBwCtBa8FjwUHALAFjgWgBQcAsAWuBY4FBwCvBZAFjwUHAK8FsQWQBQcAsQWRBZAFBwCxBbIFkQUHALIFkgWRBQcAsgWzBZIFBwCzBZMFkgUHALMFtAWTBQcAtAWUBZMFBwC0BaUFlAUHAKsFlgWVBQcAqwW1BZYFBwC1BZcFlgUHALUFtgWXBQcAtgWYBZcFBwC2BbcFmAUHALcFmQWYBQcAtwW4BZkFBwC4BZoFmQUHALgFuQWaBQcAuQWbBZoFBwC5BboFmwUHALoFnAWbBQcAugW7BZwFBwC7BZ0FnAUHALsFvAWdBQcAvAWeBZ0FBwC8Bb0FngUHAL0FnwWeBQcAvQW+BZ8FBwC+BaAFnwUHAL4FsAWgBQcAvwXABcEFBwC/BcIFwAUHAL8FwwXCBQcAvwXEBcMFBwDEBcUFwwUHAMQFxgXFBQcAxgXHBcUFBwDGBcgFxwUHAMgFyQXHBQcAyAXKBckFBwDKBcsFyQUHAMoFzAXLBQcAzAXNBcsFBwDMBc4FzQUHAM0FzwXQBQcAzQXOBc8FBwDQBdEF0gUHANAFzwXRBQcA0gXTBdQFBwDSBdEF0wUHANQF1QXWBQcA1AXTBdUFBwDWBdcF2AUHANYF1QXXBQcA2QXXBdoFBwDZBdgF1wUHANsF2gXcBQcA2wXZBdoFBwDdBdwF3gUHAN0F2wXcBQcA3wXeBeAFBwDfBd0F3gUHAOEF4AXiBQcA4QXfBeAFBwDjBeIF5AUHAOMF4QXiBQcA5QXkBeYFBwDlBeMF5AUHAOcF5QXmBQcA5wXoBeUFBwDpBegF5wUHAOkF6gXoBQcA6wXqBekFBwDrBewF6gUHAO0F7AXrBQcA7QXuBewFBwDBBe4F7QUHAMEFwAXuBQcA7wXBBfAFBwDvBb8FwQUHAPEFvwXvBQcA8QXEBb8FBwDyBcQF8QUHAPIFxgXEBQcA8wXGBfIFBwDzBcgFxgUHAPQFyAXzBQcA9AXKBcgFBwD1BcoF9AUHAPUFzAXKBQcA9gXMBfUFBwD2Bc4FzAUHAM8F9gX3BQcAzwXOBfYFBwDRBfcF+AUHANEFzwX3BQcA0wX4BfkFBwDTBdEF+AUHANUF+QX6BQcA1QXTBfkFBwDXBfoF+wUHANcF1QX6BQcA2gX7BfwFBwDaBdcF+wUHANwF/AX9BQcA3AXaBfwFBwDeBf0F/gUHAN4F3AX9BQcA4AX+Bf8FBwDgBd4F/gUHAOIF/wUABgcA4gXgBf8FBwDkBQAGAQYHAOQF4gUABgcA5gUBBgIGBwDmBeQFAQYHAAMG5gUCBgcAAwbnBeYFBwAEBucFAwYHAAQG6QXnBQcABQbpBQQGBwAFBusF6QUHAAYG6wUFBgcABgbtBesFBwDwBe0FBgYHAPAFwQXtBQcABwbwBQgGBwAHBu8F8AUHAAcG8QXvBQcABwYJBvEFBwAJBvIF8QUHAAkGCgbyBQcACgbzBfIFBwAKBgsG8wUHAAsG9AXzBQcACwYMBvQFBwAMBvUF9AUHAAwGDQb1BQcADQb2BfUFBwANBg4G9gUHAPYFDwb3BQcA9gUOBg8GBwD3BRAG+AUHAPcFDwYQBgcA+AURBvkFBwD4BRAGEQYHAPkFEgb6BQcA+QURBhIGBwD6BRMG+wUHAPoFEgYTBgcA/AUTBhQGBwD8BfsFEwYHAP0FFAYVBgcA/QX8BRQGBwD+BRUGFgYHAP4F/QUVBgcA/wUWBhcGBwD/Bf4FFgYHAAAGFwYYBgcAAAb/BRcGBwABBhgGGQYHAAEGAAYYBgcAAgYZBhoGBwACBgEGGQYHABsGAgYaBgcAGwYDBgIGBwAcBgMGGwYHABwGBAYDBgcAHQYEBhwGBwAdBgUGBAYHAB4GBQYdBgcAHgYGBgUGBwAIBgYGHgYHAAgG8AUGBgcAHwYHBggGBwAfBiAGBwYHACAGCQYHBgcAIAYhBgkGBwAhBgoGCQYHACEGIgYKBgcAIgYLBgoGBwAiBiMGCwYHACMGDAYLBgcAIwYkBgwGBwAkBg0GDAYHACQGJQYNBgcAJQYOBg0GBwAlBiYGDgYHAA4GJwYPBgcADgYmBicGBwAPBigGEAYHAA8GJwYoBgcAEAYpBhEGBwAQBigGKQYHABEGKgYSBgcAEQYpBioGBwASBisGEwYHABIGKgYrBgcAEwYsBhQGBwATBisGLAYHABQGLQYVBgcAFAYsBi0GBwAVBi4GFgYHABUGLQYuBgcAFgYvBhcGBwAWBi4GLwYHABcGMAYYBgcAFwYvBjAGBwAYBjEGGQYHABgGMAYxBgcAGQYyBhoGBwAZBjEGMgYHADIGGwYaBgcAMgYzBhsGBwAzBhwGGwYHADMGNAYcBgcANAYdBhwGBwA0BjUGHQYHADUGHgYdBgcANQY2Bh4GBwA2BggGHgYHADYGHwYIBgcANwY4BjkGBwA3BjoGOAYHADsGOgY3BgcAOwY8BjoGBwA9BjwGOwYHAD0GPgY8BgcAPwY+Bj0GBwA/BkAGPgYHAEEGQAY/BgcAQQZCBkAGBwBDBkIGQQYHAEMGRAZCBgcARQZEBkMGBwBFBkYGRAYHAEcGRQZIBgcARwZGBkUGBwBJBkgGSgYHAEkGRwZIBgcASwZKBkwGBwBLBkkGSgYHAE0GTAZOBgcATQZLBkwGBwBPBk4GUAYHAE8GTQZOBgcAUQZQBlIGBwBRBk8GUAYHAFMGUgZUBgcAUwZRBlIGBwBVBlQGVgYHAFUGUwZUBgcAVwZWBlgGBwBXBlUGVgYHAFkGWAZaBgcAWQZXBlgGBwBbBloGXAYHAFsGWQZaBgcAXQZcBl4GBwBdBlsGXAYHAF8GXQZeBgcAXwZgBl0GBwBhBmAGXwYHAGEGYgZgBgcAYwZiBmEGBwBjBmQGYgYHAGUGZAZjBgcAZQZmBmQGBwA5BmYGZQYHADkGOAZmBgcAZwY3BjkGBwBnBmgGNwYHAGkGNwZoBgcAaQY7BjcGBwBqBjsGaQYHAGoGPQY7BgcAawY9BmoGBwBrBj8GPQYHAGwGPwZrBgcAbAZBBj8GBwBtBkEGbAYHAG0GQwZBBgcAbgZDBm0GBwBuBkUGQwYHAEgGbgZvBgcASAZFBm4GBwBKBm8GcAYHAEoGSAZvBgcATAZwBnEGBwBMBkoGcAYHAE4GcQZyBgcATgZMBnEGBwBQBnIGcwYHAFAGTgZyBgcAUAZ0BlIGBwBQBnMGdAYHAFIGdQZUBgcAUgZ0BnUGBwBUBnYGVgYHAFQGdQZ2BgcAVgZ3BlgGBwBWBnYGdwYHAFgGeAZaBgcAWAZ3BngGBwBaBnkGXAYHAFoGeAZ5BgcAXAZ6Bl4GBwBcBnkGegYHAHoGXwZeBgcAegZ7Bl8GBwB7BmEGXwYHAHsGfAZhBgcAfAZjBmEGBwB8Bn0GYwYHAH0GZQZjBgcAfQZ+BmUGBwB+BjkGZQYHAH4GZwY5BgcAfwZnBoAGBwB/BmgGZwYHAIEGaAZ/BgcAgQZpBmgGBwCCBmkGgQYHAIIGagZpBgcAgwZqBoIGBwCDBmsGagYHAIQGawaDBgcAhAZsBmsGBwCFBmwGhAYHAIUGbQZsBgcAhgZtBoUGBwCGBm4GbQYHAG8GhgaHBgcAbwZuBoYGBwBwBocGiAYHAHAGbwaHBgcAcQaIBokGBwBxBnAGiAYHAHIGiQaKBgcAcgZxBokGBwBzBooGiwYHAHMGcgaKBgcAdAaLBowGBwB0BnMGiwYHAHUGjAaNBgcAdQZ0BowGBwB2Bo0GjgYHAHYGdQaNBgcAdwaOBo8GBwB3BnYGjgYHAHgGjwaQBgcAeAZ3Bo8GBwB5BpAGkQYHAHkGeAaQBgcAegaRBpIGBwB6BnkGkQYHAJMGegaSBgcAkwZ7BnoGBwCUBnsGkwYHAJQGfAZ7BgcAlQZ8BpQGBwCVBn0GfAYHAJYGfQaVBgcAlgZ+Bn0GBwCABn4GlgYHAIAGZwZ+BgcAlwaABpgGBwCXBn8GgAYHAJcGgQZ/BgcAlwaZBoEGBwCZBoIGgQYHAJkGmgaCBgcAmgaDBoIGBwCaBpsGgwYHAJsGhAaDBgcAmwacBoQGBwCcBoUGhAYHAJwGnQaFBgcAnQaGBoUGBwCdBp4GhgYHAIYGnwaHBgcAhgaeBp8GBwCHBqAGiAYHAIcGnwagBgcAiAahBokGBwCIBqAGoQYHAIkGogaKBgcAiQahBqIGBwCKBqMGiwYHAIoGogajBgcAjAajBqQGBwCMBosGowYHAI0GpAalBgcAjQaMBqQGBwCOBqUGpgYHAI4GjQalBgcAjwamBqcGBwCPBo4GpgYHAJAGpwaoBgcAkAaPBqcGBwCRBqgGqQYHAJEGkAaoBgcAkgapBqoGBwCSBpEGqQYHAKsGkgaqBgcAqwaTBpIGBwCsBpMGqwYHAKwGlAaTBgcArQaUBqwGBwCtBpUGlAYHAK4GlQatBgcArgaWBpUGBwCYBpYGrgYHAJgGgAaWBgcArwaYBrAGBwCvBpcGmAYHALEGlwavBgcAsQaZBpcGBwCyBpkGsQYHALIGmgaZBgcAswaaBrIGBwCzBpsGmgYHALQGmwazBgcAtAacBpsGBwC1BpwGtAYHALUGnQacBgcAtgadBrUGBwC2Bp4GnQYHAJ8Gtga3BgcAnwaeBrYGBwCgBrcGuAYHAKAGnwa3BgcAoQa4BrkGBwChBqAGuAYHAKIGuQa6BgcAogahBrkGBwCjBroGuwYHAKMGoga6BgcApAa7BrwGBwCkBqMGuwYHAKUGvAa9BgcApQakBrwGBwCmBr0GvgYHAKYGpQa9BgcApwa+Br8GBwCnBqYGvgYHAKgGvwbABgcAqAanBr8GBwCpBsAGwQYHAKkGqAbABgcAqgbBBsIGBwCqBqkGwQYHAMMGqgbCBgcAwwarBqoGBwDEBqsGwwYHAMQGrAarBgcAxQasBsQGBwDFBq0GrAYHAMYGrQbFBgcAxgauBq0GBwCwBq4GxgYHALAGmAauBgcAxwavBrAGBwDHBsgGrwYHAMkGrwbIBgcAyQaxBq8GBwDKBrEGyQYHAMoGsgaxBgcAywayBsoGBwDLBrMGsgYHAMwGswbLBgcAzAa0BrMGBwDNBrQGzAYHAM0GtQa0BgcAzga1Bs0GBwDOBrYGtQYHALcGzgbPBgcAtwa2Bs4GBwC4Bs8G0AYHALgGtwbPBgcAuQbQBtEGBwC5BrgG0AYHALoG0QbSBgcAuga5BtEGBwC7BtIG0wYHALsGugbSBgcAuwbUBrwGBwC7BtMG1AYHALwG1Qa9BgcAvAbUBtUGBwC9BtYGvgYHAL0G1QbWBgcAvgbXBr8GBwC+BtYG1wYHAL8G2AbABgcAvwbXBtgGBwDABtkGwQYHAMAG2AbZBgcAwQbaBsIGBwDBBtkG2gYHANoGwwbCBgcA2gbbBsMGBwDbBsQGwwYHANsG3AbEBgcA3AbFBsQGBwDcBt0GxQYHAN0GxgbFBgcA3QbeBsYGBwDeBrAGxgYHAN4GxwawBgcAKwbfBiwGBwArBuAG3wYHACoG4AYrBgcAKgbhBuAGBwApBuEGKgYHACkG4gbhBgcAKAbiBikGBwAoBuMG4gYHACcG4wYoBgcAJwbkBuMGBwAmBuQGJwYHACYG5QbkBgcAJQblBiYGBwAlBuYG5QYHACQG5gYlBgcAJAbnBuYGBwAjBucGJAYHACMG6AbnBgcAIgboBiMGBwAiBukG6AYHACEG6QYiBgcAIQbqBukGBwAgBuoGIQYHACAG6wbqBgcAHwbrBiAGBwAfBuwG6wYHADYG7AYfBgcANgbtBuwGBwA1Bu0GNgYHADUG7gbtBgcANAbuBjUGBwA0Bu8G7gYHADMG7wY0BgcAMwbwBu8GBwAyBvAGMwYHADIG8QbwBgcAMQbxBjIGBwAxBvIG8QYHADAG8gYxBgcAMAbzBvIGBwAvBvMGMAYHAC8G9AbzBgcALgb0Bi8GBwAuBvUG9AYHAC0G9QYuBgcALQb2BvUGBwAsBvYGLQYHACwG3wb2BgcAUQb3Bk8GBwBRBvgG9wYHAPgG4Ab3BgcA+AbfBuAGBwBTBvgGUQYHAFMG+Qb4BgcA+QbfBvgGBwD5BvYG3wYHAFUG+QZTBgcAVQb6BvkGBwD6BvYG+QYHAPoG9Qb2BgcAVwb6BlUGBwBXBvsG+gYHAPsG9Qb6BgcA+wb0BvUGBwBZBvsGVwYHAFkG/Ab7BgcA/Ab0BvsGBwD8BvMG9AYHAFsG/AZZBgcAWwb9BvwGBwD9BvMG/AYHAP0G8gbzBgcAXQb9BlsGBwBdBv4G/QYHAP4G8gb9BgcA/gbxBvIGBwBgBv4GXQYHAGAG/wb+BgcA/wbxBv4GBwD/BvAG8QYHAGIG/wZgBgcAYgYAB/8GBwAAB/AG/wYHAAAH7wbwBgcAZAYAB2IGBwBkBgEHAAcHAAEH7wYABwcAAQfuBu8GBwBmBgEHZAYHAGYGAgcBBwcAAgfuBgEHBwACB+0G7gYHADgGAgdmBgcAOAYDBwIHBwADB+0GAgcHAAMH7AbtBgcAOgYDBzgGBwA6BgQHAwcHAAQH7AYDBwcABAfrBuwGBwA8BgQHOgYHADwGBQcEBwcABQfrBgQHBwAFB+oG6wYHAD4GBQc8BgcAPgYGBwUHBwAGB+oGBQcHAAYH6QbqBgcAQAYGBz4GBwBABgcHBgcHAAcH6QYGBwcABwfoBukGBwBCBgcHQAYHAEIGCAcHBwcACAfoBgcHBwAIB+cG6AYHAEQGCAdCBgcARAYJBwgHBwAJB+cGCAcHAAkH5gbnBgcARgYJB0QGBwBGBgoHCQcHAAoH5gYJBwcACgflBuYGBwBHBgoHRgYHAEcGCwcKBwcACwflBgoHBwALB+QG5QYHAEkGCwdHBgcASQYMBwsHBwAMB+QGCwcHAAwH4wbkBgcASwYMB0kGBwBLBg0HDAcHAA0H4wYMBwcADQfiBuMGBwBNBg0HSwYHAE0GDgcNBwcADgfiBg0HBwAOB+EG4gYHAE8GDgdNBgcATwb3Bg4HBwD3BuEGDgcHAPcG4AbhBgcADwcQBxEHBwAPBxIHEAcHABIHEwcQBwcAEgcUBxMHBwAUBxUHEwcHABQHFgcVBwcAFgcXBxUHBwAWBxgHFwcHABgHGQcXBwcAGAcaBxkHBwAaBxsHGQcHABoHHAcbBwcAGwcdBx4HBwAbBxwHHQcHAB4HHwcgBwcAHgcdBx8HBwAgByEHIgcHACAHHwchBwcAIgcjByQHBwAiByEHIwcHACQHJQcmBwcAJAcjByUHBwAmBycHKAcHACYHJQcnBwcAKAcpByoHBwAoBycHKQcHACoHKwcsBwcAKgcpBysHBwAsBy0HLgcHACwHKwctBwcALgcvBzAHBwAuBy0HLwcHADAHMQcyBwcAMAcvBzEHBwAyBzMHNAcHADIHMQczBwcAMwc1BzQHBwAzBzYHNQcHADYHNwc1BwcANgc4BzcHBwA4BzkHNwcHADgHOgc5BwcAOgc7BzkHBwA6BzwHOwcHADwHPQc7BwcAPAc+Bz0HBwA+BxEHPQcHAD4HDwcRBwcAPwc+B0AHBwA/Bw8HPgcHAD8HEgcPBwcAPwdBBxIHBwBBBxQHEgcHAEEHQgcUBwcAQgcWBxQHBwBCB0MHFgcHAEMHGAcWBwcAQwdEBxgHBwBEBxoHGAcHAEQHRQcaBwcARQccBxoHBwBFB0YHHAcHABwHRwcdBwcAHAdGB0cHBwAdB0gHHwcHAB0HRwdIBwcAHwdJByEHBwAfB0gHSQcHACEHSgcjBwcAIQdJB0oHBwAjB0sHJQcHACMHSgdLBwcAJwdLB0wHBwAnByUHSwcHACkHTAdNBwcAKQcnB0wHBwArB00HTgcHACsHKQdNBwcALQdOB08HBwAtBysHTgcHAC8HTwdQBwcALwctB08HBwAxB1AHUQcHADEHLwdQBwcAMwdRB1IHBwAzBzEHUQcHAFMHMwdSBwcAUwc2BzMHBwBUBzYHUwcHAFQHOAc2BwcAVQc4B1QHBwBVBzoHOAcHAFYHOgdVBwcAVgc8BzoHBwBABzwHVgcHAEAHPgc8BwcAVwdAB1gHBwBXBz8HQAcHAFkHPwdXBwcAWQdBBz8HBwBaB0EHWQcHAFoHQgdBBwcAWwdCB1oHBwBbB0MHQgcHAFwHQwdbBwcAXAdEB0MHBwBdB0QHXAcHAF0HRQdEBwcAXgdFB10HBwBeB0YHRQcHAEcHXgdfBwcARwdGB14HBwBIB18HYAcHAEgHRwdfBwcASQdgB2EHBwBJB0gHYAcHAEoHYQdiBwcASgdJB2EHBwBLB2IHYwcHAEsHSgdiBwcATAdjB2QHBwBMB0sHYwcHAE0HZAdlBwcATQdMB2QHBwBOB2UHZgcHAE4HTQdlBwcATwdmB2cHBwBPB04HZgcHAFAHZwdoBwcAUAdPB2cHBwBRB2gHaQcHAFEHUAdoBwcAUgdpB2oHBwBSB1EHaQcHAGsHUgdqBwcAawdTB1IHBwBsB1MHawcHAGwHVAdTBwcAbQdUB2wHBwBtB1UHVAcHAG4HVQdtBwcAbgdWB1UHBwBYB1YHbgcHAFgHQAdWBwcAbwdYB3AHBwBvB1cHWAcHAG8HWQdXBwcAbwdxB1kHBwBxB1oHWQcHAHEHcgdaBwcAcgdbB1oHBwByB3MHWwcHAHMHXAdbBwcAcwd0B1wHBwB0B10HXAcHAHQHdQddBwcAdQdeB10HBwB1B3YHXgcHAF4HdwdfBwcAXgd2B3cHBwBfB3gHYAcHAF8Hdwd4BwcAYAd5B2EHBwBgB3gHeQcHAGEHegdiBwcAYQd5B3oHBwBiB3sHYwcHAGIHegd7BwcAZAd7B3wHBwBkB2MHewcHAGUHfAd9BwcAZQdkB3wHBwBmB30HfgcHAGYHZQd9BwcAZwd+B38HBwBnB2YHfgcHAGgHfweABwcAaAdnB38HBwBpB4AHgQcHAGkHaAeABwcAageBB4IHBwBqB2kHgQcHAIMHageCBwcAgwdrB2oHBwCEB2sHgwcHAIQHbAdrBwcAhQdsB4QHBwCFB20HbAcHAIYHbQeFBwcAhgduB20HBwBwB24HhgcHAHAHWAduBwcAhwdwB4gHBwCHB28HcAcHAIkHbweHBwcAiQdxB28HBwCKB3EHiQcHAIoHcgdxBwcAiwdyB4oHBwCLB3MHcgcHAIwHcweLBwcAjAd0B3MHBwCNB3QHjAcHAI0HdQd0BwcAjgd1B40HBwCOB3YHdQcHAHcHjgePBwcAdwd2B44HBwB4B48HkAcHAHgHdwePBwcAeQeQB5EHBwB5B3gHkAcHAHoHkQeSBwcAegd5B5EHBwB7B5IHkwcHAHsHegeSBwcAfAeTB5QHBwB8B3sHkwcHAH0HlAeVBwcAfQd8B5QHBwB+B5UHlgcHAH4HfQeVBwcAfweWB5cHBwB/B34HlgcHAIAHlweYBwcAgAd/B5cHBwCBB5gHmQcHAIEHgAeYBwcAggeZB5oHBwCCB4EHmQcHAJsHggeaBwcAmweDB4IHBwCcB4MHmwcHAJwHhAeDBwcAnQeEB5wHBwCdB4UHhAcHAJ4HhQedBwcAngeGB4UHBwCIB4YHngcHAIgHcAeGBwcAnweHB4gHBwCfB6AHhwcHAKEHhwegBwcAoQeJB4cHBwCiB4kHoQcHAKIHigeJBwcAoweKB6IHBwCjB4sHigcHAKQHiwejBwcApAeMB4sHBwClB4wHpAcHAKUHjQeMBwcApgeNB6UHBwCmB44HjQcHAI8HpgenBwcAjweOB6YHBwCQB6cHqAcHAJAHjwenBwcAkQeoB6kHBwCRB5AHqAcHAJIHqQeqBwcAkgeRB6kHBwCTB6oHqwcHAJMHkgeqBwcAkwesB5QHBwCTB6sHrAcHAJQHrQeVBwcAlAesB60HBwCVB64HlgcHAJUHrQeuBwcAlgevB5cHBwCWB64HrwcHAJcHsAeYBwcAlwevB7AHBwCYB7EHmQcHAJgHsAexBwcAmQeyB5oHBwCZB7EHsgcHALIHmweaBwcAsgezB5sHBwCzB5wHmwcHALMHtAecBwcAtAedB5wHBwC0B7UHnQcHALUHngedBwcAtQe2B54HBwC2B4gHngcHALYHnweIBwcAwgWfB8AFBwDCBaAHnwcHAMMFoAfCBQcAwwWhB6AHBwDFBaEHwwUHAMUFogehBwcAxwWiB8UFBwDHBaMHogcHAMkFowfHBQcAyQWkB6MHBwDLBaQHyQUHAMsFpQekBwcAzQWlB8sFBwDNBaYHpQcHAKcHzQXQBQcApwemB80FBwCoB9AF0gUHAKgHpwfQBQcAqQfSBdQFBwCpB6gH0gUHAKoH1AXWBQcAqgepB9QFBwCrB9YF2AUHAKsHqgfWBQcArAfYBdkFBwCsB6sH2AUHAK0H2QXbBQcArQesB9kFBwCuB9sF3QUHAK4HrQfbBQcArwfdBd8FBwCvB64H3QUHALAH3wXhBQcAsAevB98FBwCxB+EF4wUHALEHsAfhBQcAsgfjBeUFBwCyB7EH4wUHAOgFsgflBQcA6AWzB7IHBwDqBbMH6AUHAOoFtAezBwcA7AW0B+oFBwDsBbUHtAcHAO4FtQfsBQcA7gW2B7UHBwDABbYH7gUHAMAFnwe2BwcAtwfHBrgHBwC3B8gGxwYHALkHyAa3BwcAuQfJBsgGBwC6B8kGuQcHALoHygbJBgcAuwfKBroHBwC7B8sGygYHALwHywa7BwcAvAfMBssGBwC9B8wGvAcHAL0HzQbMBgcAvgfNBr0HBwC+B84GzQYHAM8Gvge/BwcAzwbOBr4HBwDQBr8HwAcHANAGzwa/BwcA0QbAB8EHBwDRBtAGwAcHANIGwQfCBwcA0gbRBsEHBwDTBsIHwwcHANMG0gbCBwcA1AbDB8QHBwDUBtMGwwcHANUGxAfFBwcA1QbUBsQHBwDWBsUHxgcHANYG1QbFBwcA1wbGB8cHBwDXBtYGxgcHANgGxwfIBwcA2AbXBscHBwDZBsgHyQcHANkG2AbIBwcA2gbJB8oHBwDaBtkGyQcHAMsH2gbKBwcAywfbBtoGBwDMB9sGywcHAMwH3AbbBgcAzQfcBswHBwDNB90G3AYHAM4H3QbNBwcAzgfeBt0GBwC4B94GzgcHALgHxwbeBgcAzwe3B7gHBwDPB9AHtwcHANEHtwfQBwcA0Qe5B7cHBwDSB7kH0QcHANIHuge5BwcA0we6B9IHBwDTB7sHugcHANQHuwfTBwcA1Ae8B7sHBwDVB7wH1AcHANUHvQe8BwcA1ge9B9UHBwDWB74HvQcHAL8H1gfXBwcAvwe+B9YHBwDAB9cH2AcHAMAHvwfXBwcAwQfYB9kHBwDBB8AH2AcHAMIH2QfaBwcAwgfBB9kHBwDDB9oH2wcHAMMHwgfaBwcAwwfcB8QHBwDDB9sH3AcHAMQH3QfFBwcAxAfcB90HBwDFB94HxgcHAMUH3QfeBwcAxgffB8cHBwDGB94H3wcHAMcH4AfIBwcAxwffB+AHBwDIB+EHyQcHAMgH4AfhBwcAyQfiB8oHBwDJB+EH4gcHAOIHywfKBwcA4gfjB8sHBwDjB8wHywcHAOMH5AfMBwcA5AfNB8wHBwDkB+UHzQcHAOUHzgfNBwcA5QfmB84HBwDmB7gHzgcHAOYHzwe4BwcA5wfPB+gHBwDnB9AHzwcHAOkH0AfnBwcA6QfRB9AHBwDqB9EH6QcHAOoH0gfRBwcA6wfSB+oHBwDrB9MH0gcHAOwH0wfrBwcA7AfUB9MHBwDtB9QH7AcHAO0H1QfUBwcA7gfVB+0HBwDuB9YH1QcHANcH7gfvBwcA1wfWB+4HBwDYB+8H8AcHANgH1wfvBwcA2QfwB/EHBwDZB9gH8AcHANoH8QfyBwcA2gfZB/EHBwDbB/IH8wcHANsH2gfyBwcA3AfzB/QHBwDcB9sH8wcHAN0H9Af1BwcA3QfcB/QHBwDeB/UH9gcHAN4H3Qf1BwcA3wf2B/cHBwDfB94H9gcHAOAH9wf4BwcA4AffB/cHBwDhB/gH+QcHAOEH4Af4BwcA4gf5B/oHBwDiB+EH+QcHAPsH4gf6BwcA+wfjB+IHBwD8B+MH+wcHAPwH5AfjBwcA/QfkB/wHBwD9B+UH5AcHAP4H5Qf9BwcA/gfmB+UHBwDoB+YH/gcHAOgHzwfmBwcA/wcACAEIBwD/BwIIAAgHAAMIAgj/BwcAAwgECAIIBwABCAUIBggHAAEIAAgFCAcABwgICAkIBwAHCAoICAgHAAsICggHCAcACwgMCAoIBwAJCA0IDggHAAkICAgNCAcADwgMCAsIBwAPCBAIDAgHAA4IEQgSCAcADggNCBEIBwATCBAIDwgHABMIFAgQCAcAEggVCBYIBwASCBEIFQgHABcIFAgTCAcAFwgYCBQIBwAWCBkIGggHABYIFQgZCAcAGggECAMIBwAaCBkIBAgHAAYIGAgXCAcABggFCBgIBwAbCAAIAggHABsIHAgACAcABAgbCAIIBwAECB0IGwgHABwIBQgACAcAHAgeCAUIBwAKCB8ICAgHAAoIIAgfCAcAIQgKCAwIBwAhCCAICggHAAgIIggNCAcACAgfCCIIBwAjCAwIEAgHACMIIQgMCAcADQgkCBEIBwANCCIIJAgHACUIEAgUCAcAJQgjCBAIBwARCCYIFQgHABEIJAgmCAcAJwgUCBgIBwAnCCUIFAgHABUIKAgZCAcAFQgmCCgIBwAZCB0IBAgHABkIKAgdCAcAHggYCAUIBwAeCCcIGAgHABsIKQgcCAcAGwgqCCkIBwAdCCoIGwgHAB0IKwgqCAcAHAgsCB4IBwAcCCkILAgHACAILQgfCAcAIAguCC0IBwAhCC4IIAgHACEILwguCAcAHwgwCCIIBwAfCC0IMAgHACMILwghCAcAIwgxCC8IBwAiCDIIJAgHACIIMAgyCAcAJQgxCCMIBwAlCDMIMQgHACQINAgmCAcAJAgyCDQIBwAnCDMIJQgHACcINQgzCAcAJgg2CCgIBwAmCDQINggHACgIKwgdCAcAKAg2CCsIBwAeCDUIJwgHAB4ILAg1CAcAKgg3CCkIBwAqCDgINwgHACsIOAgqCAcAKwg5CDgIBwApCDoILAgHACkINwg6CAcALgg7CC0IBwAuCDwIOwgHAC8IPAguCAcALwg9CDwIBwAtCD4IMAgHAC0IOwg+CAcAMQg9CC8IBwAxCD8IPQgHADAIQAgyCAcAMAg+CEAIBwAzCD8IMQgHADMIQQg/CAcAMghCCDQIBwAyCEAIQggHADUIQQgzCAcANQhDCEEIBwA0CEQINggHADQIQghECAcANgg5CCsIBwA2CEQIOQgHACwIQwg1CAcALAg6CEMIBwA4CEUINwgHADgIRghFCAcAOQhGCDgIBwA5CEcIRggHADcISAg6CAcANwhFCEgIBwA8CEkIOwgHADwISghJCAcAPQhKCDwIBwA9CEsISggHADsITAg+CAcAOwhJCEwIBwA/CEsIPQgHAD8ITQhLCAcAPghOCEAIBwA+CEwITggHAEEITQg/CAcAQQhPCE0IBwBACFAIQggHAEAITghQCAcAQwhPCEEIBwBDCFEITwgHAEIIUghECAcAQghQCFIIBwBECEcIOQgHAEQIUghHCAcAOghRCEMIBwA6CEgIUQgHAEYIUwhFCAcARghUCFMIBwBHCFQIRggHAEcIVQhUCAcARQhWCEgIBwBFCFMIVggHAEoIVwhJCAcASghYCFcIBwBLCFgISggHAEsIWQhYCAcASQhaCEwIBwBJCFcIWggHAE0IWQhLCAcATQhbCFkIBwBMCFwITggHAEwIWghcCAcATwhbCE0IBwBPCF0IWwgHAE4IXghQCAcATghcCF4IBwBRCF0ITwgHAFEIXwhdCAcAUAhgCFIIBwBQCF4IYAgHAFIIVQhHCAcAUghgCFUIBwBICF8IUQgHAEgIVghfCAcAVAhhCFMIBwBUCGIIYQgHAFUIYghUCAcAVQhjCGIIBwBTCGQIVggHAFMIYQhkCAcAWAhlCFcIBwBYCGYIZQgHAFkIZghYCAcAWQhnCGYIBwBXCGgIWggHAFcIZQhoCAcAWwhnCFkIBwBbCGkIZwgHAFoIaghcCAcAWghoCGoIBwBdCGkIWwgHAF0IawhpCAcAXAhsCF4IBwBcCGoIbAgHAF8IawhdCAcAXwhtCGsIBwBeCG4IYAgHAF4IbAhuCAcAYAhjCFUIBwBgCG4IYwgHAFYIbQhfCAcAVghkCG0IBwBiCG8IYQgHAGIIcAhvCAcAYwhwCGIIBwBjCHEIcAgHAGEIcghkCAcAYQhvCHIIBwBmCHMIZQgHAGYIdAhzCAcAZwh0CGYIBwBnCHUIdAgHAGUIdghoCAcAZQhzCHYIBwBpCHUIZwgHAGkIdwh1CAcAaAh4CGoIBwBoCHYIeAgHAGsIdwhpCAcAawh5CHcIBwBqCHoIbAgHAGoIeAh6CAcAbQh5CGsIBwBtCHsIeQgHAGwIfAhuCAcAbAh6CHwIBwBuCHEIYwgHAG4IfAhxCAcAZAh7CG0IBwBkCHIIewgHAHAIfQhvCAcAcAh+CH0IBwBxCH4IcAgHAHEIfwh+CAcAbwiACHIIBwBvCH0IgAgHAHQIgQhzCAcAdAiCCIEIBwB1CIIIdAgHAHUIgwiCCAcAcwiECHYIBwBzCIEIhAgHAHcIgwh1CAcAdwiFCIMIBwB2CIYIeAgHAHYIhAiGCAcAeQiFCHcIBwB5CIcIhQgHAHgIiAh6CAcAeAiGCIgIBwB7CIcIeQgHAHsIiQiHCAcAegiKCHwIBwB6CIgIiggHAHwIfwhxCAcAfAiKCH8IBwByCIkIewgHAHIIgAiJCAcAfgiLCH0IBwB+CIwIiwgHAH8IjAh+CAcAfwiNCIwIBwB9CI4IgAgHAH0IiwiOCAcAggiPCIEIBwCCCJAIjwgHAIMIkAiCCAcAgwiRCJAIBwCBCJIIhAgHAIEIjwiSCAcAhQiRCIMIBwCFCJMIkQgHAIQIlAiGCAcAhAiSCJQIBwCHCJMIhQgHAIcIlQiTCAcAhgiWCIgIBwCGCJQIlggHAIkIlQiHCAcAiQiXCJUIBwCICJgIiggHAIgIlgiYCAcAigiNCH8IBwCKCJgIjQgHAIAIlwiJCAcAgAiOCJcIBwCMCJkIiwgHAIwImgiZCAcAjQiaCIwIBwCNCJsImggHAIsInAiOCAcAiwiZCJwIBwCQCJ0IjwgHAJAIngidCAcAkQieCJAIBwCRCJ8InggHAI8IoAiSCAcAjwidCKAIBwCTCJ8IkQgHAJMIoQifCAcAkgiiCJQIBwCSCKAIoggHAJUIoQiTCAcAlQijCKEIBwCUCKQIlggHAJQIogikCAcAlwijCJUIBwCXCKUIowgHAJYIpgiYCAcAlgikCKYIBwCYCJsIjQgHAJgIpgibCAcAjgilCJcIBwCOCJwIpQgHAJoIpwiZCAcAmgioCKcIBwCbCKgImggHAJsIqQioCAcAmQiqCJwIBwCZCKcIqggHAJ4IqwidCAcAngisCKsIBwCfCKwInggHAJ8IrQisCAcAnQiuCKAIBwCdCKsIrggHAKEIrQifCAcAoQivCK0IBwCgCLAIoggHAKAIrgiwCAcAowivCKEIBwCjCLEIrwgHAKIIsgikCAcAogiwCLIIBwClCLEIowgHAKUIswixCAcApAi0CKYIBwCkCLIItAgHAKYIqQibCAcApgi0CKkIBwCcCLMIpQgHAJwIqgizCAcAqAi1CKcIBwCoCLYItQgHAKkItgioCAcAqQi3CLYIBwCnCLgIqggHAKcItQi4CAcArAi5CKsIBwCsCLoIuQgHAK0IugisCAcArQi7CLoIBwCrCLwIrggHAKsIuQi8CAcArwi7CK0IBwCvCL0IuwgHAK4IvgiwCAcArgi8CL4IBwCxCL0IrwgHALEIvwi9CAcAsAjACLIIBwCwCL4IwAgHALMIvwixCAcAswjBCL8IBwCyCMIItAgHALIIwAjCCAcAtAi3CKkIBwC0CMIItwgHAKoIwQizCAcAqgi4CMEIBwC2CMMItQgHALYIxAjDCAcAtwjECLYIBwC3CMUIxAgHALUIxgi4CAcAtQjDCMYIBwC6CMcIuQgHALoIyAjHCAcAuwjICLoIBwC7CMkIyAgHALkIygi8CAcAuQjHCMoIBwC9CMkIuwgHAL0IywjJCAcAvAjMCL4IBwC8CMoIzAgHAL8Iywi9CAcAvwjNCMsIBwC+CM4IwAgHAL4IzAjOCAcAwQjNCL8IBwDBCM8IzQgHAMAI0AjCCAcAwAjOCNAIBwDCCMUItwgHAMII0AjFCAcAuAjPCMEIBwC4CMYIzwgHAMQI0QjDCAcAxAjSCNEIBwABCNII/wcHAAEI0QjSCAcAxQjSCMQIBwDFCNMI0ggHAP8H0wgDCAcA/wfSCNMIBwDDCNQIxggHAMMI0QjUCAcABgjRCAEIBwAGCNQI0QgHAMgI1QjHCAcAyAjWCNUIBwDXCNYI2AgHANcI1QjWCAcAyQjWCMgIBwDJCNkI1ggHANgI2QjaCAcA2AjWCNkIBwDHCNsIyggHAMcI1QjbCAcA3AjVCNcIBwDcCNsI1QgHAMsI2QjJCAcAywjdCNkIBwDaCN0IDwgHANoI2QjdCAcAygjeCMwIBwDKCNsI3ggHABII2wjcCAcAEgjeCNsIBwDNCN0IywgHAM0I3wjdCAcADwjfCBMIBwAPCN0I3wgHAMwI4AjOCAcAzAjeCOAIBwAWCN4IEggHABYI4AjeCAcAzwjfCM0IBwDPCOEI3wgHABMI4QgXCAcAEwjfCOEIBwDOCOII0AgHAM4I4AjiCAcAGgjgCBYIBwAaCOII4AgHANAI0wjFCAcA0AjiCNMIBwADCOIIGggHAAMI0wjiCAcAxgjhCM8IBwDGCNQI4QgHABcI1AgGCAcAFwjhCNQIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ0wQdUDAAByYXY0LXNoaWVsZHMA4AFWDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ8wQZIDAAByYXY0LXRpcmUAwAE2DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kPSg9LD0wPTQ9OD08PUA9RD1IPUw9UD1UPVg9XD1gPWQ9aD1sPXA9dD14PXw9gD2EPYg9jD2QPZQ9mD2cPaA9pD2oPaw9sD20Pbg9vD3APcQ9yD3MPdA91D3YPdw94D3kPeg97D3wPfQ9+D38PgA+BD4IPgw+ED4UPhg+HD4gPiQ+KD4sPjA+ND44Pjw+QD5EPkg+TD5QPlQ+WD5cPmA+ZD5oPmw+cD50Png+fD6APoQ+iD6MPpA+lD6YPpw+oD6kPqg+rD6wPrQ+uD68PsA+xD7IPsw+0D7UPtg+3D7gPuQ+6D7sPvA+9D74Pvw/AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MP1A/VD9YP1w/YD9kP2g/bD9wP3Q/eD98P4A/hD+IP4w/kD+UP5g/nD+gP6Q/qD+sP7A/tD+4P7w/wD/EP8g/zD/QP9Q/2D/cP+A/5D/oP+w/8D/0P/g//DwAQARACEAMQBBAFEAYQBxAIEAkQChALEAwQDRAOEA8QEBAREBIQExAUEBUQFhAXEBgQGRAaEBsQHBAdEB4QHxAgECEQIhAjECQQJRAmECcQKBApECoQKxAsEC0QLhAvEDAQMRAyEDMQNBA1EDYQNxA4EDkQOhA7EDwQPRA+ED8QQBBBEEIQQxBEEEUQRhBHEEgQSRBKEEsQTBBNEE4QTxBQEFEQUhBTEFQQVRBWEFcQWBBZEFoQWxBcEF0QXhBfEGAQYRBiEGMQZBBlEGYQZxBoEGkQahBrEGwQbRBuEG8QcBBxEHIQcxB0EHUQdhB3EHgQeRB6EHsQfBB9EH4QfxCAEIEQghCDEIQQhRCGEIcQiBCJEIoQixCMEI0QjhCPEJAQkRCSEJMQlBCVEJYQlxCYEJkQmhCbEJwQnRCeEJ8QoBChEKIQoxCkEKUQphCnEKgQqRCqEKsQrBCtEK4QrxCwELEQshCzELQQtRC2ELcQuBC5ELoQuxC8EL0QvhC/EMAQwRDCEMMQxBDFEMYQxxDIEMkQyhDLEMwQzRDOEM8Q0BDRENIQ0xDUENUQ1hDXENgQ2RDaENsQ3BDdEN4Q3xDgEOEQ4hDjEOQQ5RDmEOcQ6BDpEOoQ6xDsEO0Q7hDvEPAQ8RDyEPMQ9BD1EFBB3kMAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPQAAgD8AAAAAAAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAQAAgAFAAcABAAAAAIABwAGAAUABwAHAAYABAAFAAcACAAHAAkABwAIAAYABwAHAAoACQALAAcACgAIAAkABwAMAAsADQAHAAwACgALAAcADgANAA8ABwAOAAwADQAHABAADwARAAcAEAAOAA8ABwASABEAEwAHABIAEAARAAcAFAATABUABwAUABIAEwAHABYAFQAXAAcAFgAUABUABwAYABcAGQAHABgAFgAXAAcAGgAZABsABwAaABgAGQAHABwAGwAdAAcAHAAaABsABwAeABwAHQAHAB4AHwAcAAcAIAAfAB4ABwAgACEAHwAHACIAIQAgAAcAIgAjACEABwAkACMAIgAHACQAJQAjAAcAJgAlACQABwAmACcAJQAHACgAJwAmAAcAKAApACcABwAqACkAKAAHACoAKwApAAcALAArACoABwAsAC0AKwAHAC4ALQAsAAcALgAvAC0ABwAwAC8ALgAHADAAMQAvAAcAMgAxADAABwAyADMAMQAHADQAMwAyAAcANAA1ADMABwA2ADUANAAHADYANwA1AAcAOAA3ADYABwA4ADkANwAHADoAOQA4AAcAOgA7ADkABwA8ADsAOgAHADwAPQA7AAcAPgA9ADwABwA+AD8APQAHAEAAPwA+AAcAQABBAD8ABwBCAEEAQAAHAEIAQwBBAAcARABDAEIABwBEAEUAQwAHAEYARQBEAAcARgBHAEUABwBIAEcARgAHAEgASQBHAAcASgBJAEgABwBKAEsASQAHAEwASwBKAAcATABNAEsABwBOAE0ATAAHAE4ATwBNAAcAUABOAFEABwBQAE8ATgAHAFIAUQBTAAcAUgBQAFEABwBUAFMAVQAHAFQAUgBTAAcAVgBVAFcABwBWAFQAVQAHAFgAVwBZAAcAWABWAFcABwBaAFkAWwAHAFoAWABZAAcAXABbAF0ABwBcAFoAWwAHAF4AXQBfAAcAXgBcAF0ABwBgAF8AYQAHAGAAXgBfAAcAYgBhAGMABwBiAGAAYQAHAAMAYwABAAcAAwBiAGMABwBkAAMAAAAHAGQAZQADAAcAZgAAAAQABwBmAGQAAAAHAGcABAAGAAcAZwBmAAQABwBoAAYACAAHAGgAZwAGAAcAaQAIAAoABwBpAGgACAAHAGoACgAMAAcAagBpAAoABwBrAAwADgAHAGsAagAMAAcAbAAOABAABwBsAGsADgAHAG0AEAASAAcAbQBsABAABwBuABIAFAAHAG4AbQASAAcAbwAUABYABwBvAG4AFAAHAHAAFgAYAAcAcABvABYABwBxABgAGgAHAHEAcAAYAAcAcgAaABwABwByAHEAGgAHAB8AcgAcAAcAHwBzAHIABwAhAHMAHwAHACEAdABzAAcAIwB0ACEABwAjAHUAdAAHACUAdQAjAAcAJQB2AHUABwAnAHYAJQAHACcAdwB2AAcAKQB3ACcABwApAHgAdwAHACsAeAApAAcAKwB5AHgABwAtAHkAKwAHAC0AegB5AAcALwB6AC0ABwAvAHsAegAHADEAewAvAAcAMQB8AHsABwAzAHwAMQAHADMAfQB8AAcANQB9ADMABwA1AH4AfQAHADcAfgA1AAcANwB/AH4ABwA5AH8ANwAHADkAgAB/AAcAOwCAADkABwA7AIEAgAAHAD0AgQA7AAcAPQCCAIEABwA/AIIAPQAHAD8AgwCCAAcAQQCDAD8ABwBBAIQAgwAHAEMAhABBAAcAQwCFAIQABwBFAIUAQwAHAEUAhgCFAAcARwCGAEUABwBHAIcAhgAHAEkAhwBHAAcASQCIAIcABwBLAIgASQAHAEsAiQCIAAcATQCJAEsABwBNAIoAiQAHAE8AigBNAAcATwCLAIoABwCMAE8AUAAHAIwAiwBPAAcAjQBQAFIABwCNAIwAUAAHAI4AUgBUAAcAjgCNAFIABwCPAFQAVgAHAI8AjgBUAAcAkABWAFgABwCQAI8AVgAHAJEAWABaAAcAkQCQAFgABwCSAFoAXAAHAJIAkQBaAAcAkwBcAF4ABwCTAJIAXAAHAJQAXgBgAAcAlACTAF4ABwCVAGAAYgAHAJUAlABgAAcAZQBiAAMABwBlAJUAYgAHAJYAZACXAAcAlgBlAGQABwCYAGQAZgAHAJgAlwBkAAcAmQBmAGcABwCZAJgAZgAHAJoAZwBoAAcAmgCZAGcABwCbAGgAaQAHAJsAmgBoAAcAnABpAGoABwCcAJsAaQAHAJ0AagBrAAcAnQCcAGoABwCeAGsAbAAHAJ4AnQBrAAcAnwBsAG0ABwCfAJ4AbAAHAKAAbQBuAAcAoACfAG0ABwChAG4AbwAHAKEAoABuAAcAogBvAHAABwCiAKEAbwAHAKMAcABxAAcAowCiAHAABwCkAHEAcgAHAKQAowBxAAcAcwCkAHIABwBzAKUApAAHAHQApQBzAAcAdACmAKUABwB1AKYAdAAHAHUApwCmAAcAdgCnAHUABwB2AKgApwAHAHcAqAB2AAcAdwCpAKgABwB4AKkAdwAHAHgAqgCpAAcAeQCqAHgABwB5AKsAqgAHAHoAqwB5AAcAegCsAKsABwB7AKwAegAHAHsArQCsAAcAfACtAHsABwB8AK4ArQAHAH0ArgB8AAcAfQCvAK4ABwB+AK8AfQAHAH4AsACvAAcAfwCwAH4ABwB/ALEAsAAHAH8AsgCxAAcAfwCAALIABwCAALMAsgAHAIAAgQCzAAcAgQC0ALMABwCBAIIAtAAHAIIAtQC0AAcAggCDALUABwCDALYAtQAHAIMAhAC2AAcAhAC3ALYABwCEAIUAtwAHAIUAuAC3AAcAhQCGALgABwCGALkAuAAHAIYAhwC5AAcAhwC6ALkABwCHAIgAugAHAIgAuwC6AAcAiACJALsABwCJALwAuwAHAIkAigC8AAcAigC9ALwABwCKAIsAvQAHAL0AjAC+AAcAvQCLAIwABwC+AI0AvwAHAL4AjACNAAcAvwCOAMAABwC/AI0AjgAHAMAAjwDBAAcAwACOAI8ABwDBAJAAwgAHAMEAjwCQAAcAwgCRAMMABwDCAJAAkQAHAMMAkgDEAAcAwwCRAJIABwDEAJMAxQAHAMQAkgCTAAcAxQCUAMYABwDFAJMAlAAHAMYAlQDHAAcAxgCUAJUABwDHAGUAlgAHAMcAlQBlAAcAyADEAMUABwDIAMkAxAAHAMYAyADFAAcAxgDKAMgABwDHAMoAxgAHAMcAywDKAAcAmADMAJcABwCYAM0AzAAHAJkAzQCYAAcAmQDOAM0ABwCaAM4AmQAHAJoAzwDOAAcAnQDQAJwABwCdANEA0AAHAJ4A0QCdAAcAngDSANEABwCfANIAngAHAJ8A0wDSAAcAoQDUANUABwChAKIA1AAHAKIA1gDUAAcAogCjANYABwCjANcA1gAHAKMApADXAAcApgDYANkABwCmAKcA2AAHAKcA2gDYAAcApwCoANoABwCoANsA2gAHAKgAqQDbAAcAqwDcAN0ABwCrAKwA3AAHANwArQDeAAcA3ACsAK0ABwDeAK4A3wAHAN4ArQCuAAcA4ACxAOEABwDgALAAsQAHAOEAsgDiAAcA4QCxALIABwDiALMA4wAHAOIAsgCzAAcA5AC2AOUABwDkALUAtgAHAOUAtwDmAAcA5QC2ALcABwDmALgA5wAHAOYAtwC4AAcA6AC6ALsABwDoAOkAugAHAOoAuwC8AAcA6gDoALsABwDrALwAvQAHAOsA6gC8AAcA7AC/AMAABwDsAO0AvwAHAO4AwADBAAcA7gDsAMAABwDvAMEAwgAHAO8A7gDBAAcA8ADJAMgABwDwAPEAyQAHAMoA8ADIAAcAygDyAPAABwDLAPIAygAHAMsA8wDyAAcAzQD0AMwABwDNAPUA9AAHAM4A9QDNAAcAzgD2APUABwDPAPYAzgAHAM8A9wD2AAcA0QD4ANAABwDRAPkA+AAHANIA+QDRAAcA0gD6APkABwDTAPoA0gAHANMA+wD6AAcA1QD8AP0ABwDVANQA/AAHANQA/gD8AAcA1ADWAP4ABwDWAP8A/gAHANYA1wD/AAcA2QAAAQEBBwDZANgAAAEHANgAAgEAAQcA2ADaAAIBBwDaAAMBAgEHANoA2wADAQcA3QAEAQUBBwDdANwABAEHAAQB3gAGAQcABAHcAN4ABwAGAd8ABwEHAAYB3gDfAAcACAHhAAkBBwAIAeAA4QAHAAkB4gAKAQcACQHhAOIABwAKAeMACwEHAAoB4gDjAAcADAHlAA0BBwAMAeQA5QAHAA0B5gAOAQcADQHlAOYABwAOAecADwEHAA4B5gDnAAcAEAHpAOgABwAQAREB6QAHABIB6ADqAAcAEgEQAegABwATAeoA6wAHABMBEgHqAAcAFAHtAOwABwAUARUB7QAHABYB7ADuAAcAFgEUAewABwAXAe4A7wAHABcBFgHuAAcAGAEZAfEABwAYARoBGQEHABsB8QDwAAcAGwEYAfEABwDyABsB8AAHAPIAHAEbAQcA8wAcAfIABwDzAB0BHAEHAB4BHQHzAAcAHgEfAR0BBwD0AB8BHgEHAPQAIAEfAQcA9QAgAfQABwD1ACEBIAEHAPYAIQH1AAcA9gAiASEBBwD3ACIB9gAHAPcAIwEiAQcAJAEjAfcABwAkASUBIwEHAPgAJQEkAQcA+AAmASUBBwD5ACYB+AAHAPkAJwEmAQcA+gAnAfkABwD6ACgBJwEHAPsAKAH6AAcA+wApASgBBwAqASkB+wAHACoBKwEpAQcAKgEsASsBBwAqAf0ALAEHAP0ALQEsAQcA/QD8AC0BBwD8AC4BLQEHAPwA/gAuAQcA/gAvAS4BBwD+AP8ALwEHAP8AMAEvAQcA/wAxATABBwAxATIBMAEHADEBAQEyAQcAAQEzATIBBwABAQABMwEHAAABNAEzAQcAAAECATQBBwACATUBNAEHAAIBAwE1AQcAAwE2ATUBBwADATcBNgEHADcBOAE2AQcANwEFATgBBwAFATkBOAEHAAUBBAE5AQcAOQEGAToBBwA5AQQBBgEHADoBBwE7AQcAOgEGAQcBBwA7ATwBPQEHADsBBwE8AQcAPQEIAT4BBwA9ATwBCAEHAD4BCQE/AQcAPgEIAQkBBwA/AQoBQAEHAD8BCQEKAQcAQAELAUEBBwBAAQoBCwEHAEEBQgFDAQcAQQELAUIBBwBDAQwBRAEHAEMBQgEMAQcARAENAUUBBwBEAQwBDQEHAEUBDgFGAQcARQENAQ4BBwBGAQ8BRwEHAEYBDgEPAQcASAEPAUkBBwBIAUcBDwEHAEoBSQERAQcASgFIAUkBBwBLAREBEAEHAEsBSgERAQcATAEQARIBBwBMAUsBEAEHAE0BEgETAQcATQFMARIBBwBOARMBTwEHAE4BTQETAQcAUAFPARUBBwBQAU4BTwEHAFEBFQEUAQcAUQFQARUBBwBSARQBFgEHAFIBUQEUAQcAUwEWARcBBwBTAVIBFgEHABoBFwEZAQcAGgFTARcBBwBUARgBVQEHAFQBGgEYAQcAVQEbAVYBBwBVARgBGwEHABsBVwFWAQcAGwEcAVcBBwAcAVgBVwEHABwBHQFYAQcAHQFZAVgBBwAdAR8BWQEHAB8BWgFZAQcAHwEgAVoBBwAgAVsBWgEHACABIQFbAQcAIQFcAVsBBwAhASIBXAEHACIBXQFcAQcAIgEjAV0BBwAjAV4BXQEHACMBJQFeAQcAJQFfAV4BBwAlASYBXwEHACYBYAFfAQcAJgEnAWABBwAnAWEBYAEHACcBKAFhAQcAKAFiAWEBBwAoASkBYgEHACkBYwFiAQcAKQErAWMBBwAsAWMBKwEHACwBZAFjAQcALQFkASwBBwAtAWUBZAEHAC4BZQEtAQcALgFmAWUBBwAvAWYBLgEHAC8BZwFmAQcAMAFnAS8BBwAwAWgBZwEHADIBaAEwAQcAMgFpAWgBBwAzAWkBMgEHADMBagFpAQcANAFqATMBBwA0AWsBagEHADUBawE0AQcANQFsAWsBBwA2AWwBNQEHADYBbQFsAQcAOAFtATYBBwA4AW4BbQEHADkBbgE4AQcAOQFvAW4BBwBwATkBOgEHAHABbwE5AQcAcQE6ATsBBwBxAXABOgEHAHIBOwE9AQcAcgFxATsBBwBzAT0BPgEHAHMBcgE9AQcAdAE+AT8BBwB0AXMBPgEHAHUBPwFAAQcAdQF0AT8BBwB2AUABQQEHAHYBdQFAAQcAdwFBAUMBBwB3AXYBQQEHAHgBQwFEAQcAeAF3AUMBBwB5AUQBRQEHAHkBeAFEAQcAegFFAUYBBwB6AXkBRQEHAHsBRgFHAQcAewF6AUYBBwB7AUgBfAEHAHsBRwFIAQcAfAFKAX0BBwB8AUgBSgEHAH0BSwF+AQcAfQFKAUsBBwB+AUwBfwEHAH4BSwFMAQcAfwFNAYABBwB/AUwBTQEHAIABTgGBAQcAgAFNAU4BBwCBAVABggEHAIEBTgFQAQcAggFRAYMBBwCCAVABUQEHAIMBUgGEAQcAgwFRAVIBBwCEAVMBhQEHAIQBUgFTAQcAhQEaAVQBBwCFAVMBGgEHAIYBVQGHAQcAhgFUAVUBBwCHAVYBiAEHAIcBVQFWAQcAVgGJAYgBBwBWAVcBiQEHAFcBigGJAQcAVwFYAYoBBwBYAYsBigEHAFgBWQGLAQcAWQGMAYsBBwBZAVoBjAEHAFoBjQGMAQcAWgFbAY0BBwBbAY4BjQEHAFsBXAGOAQcAXAGPAY4BBwBcAV0BjwEHAF0BkAGPAQcAXQFeAZABBwBeAZEBkAEHAF4BXwGRAQcAXwGSAZEBBwBfAWABkgEHAGABkwGSAQcAYAFhAZMBBwBhAZQBkwEHAGEBYgGUAQcAYgGVAZQBBwBiAWMBlQEHAGQBlQFjAQcAZAGWAZUBBwBlAZYBZAEHAGUBlwGWAQcAZgGXAWUBBwBmAZgBlwEHAGcBmAFmAQcAZwGZAZgBBwBoAZkBZwEHAGgBmgGZAQcAaQGaAWgBBwBpAZsBmgEHAGoBmwFpAQcAagGcAZsBBwBrAZwBagEHAGsBnQGcAQcAbAGdAWsBBwBsAZ4BnQEHAG0BngFsAQcAbQGfAZ4BBwBuAZ8BbQEHAG4BoAGfAQcAbwGgAW4BBwBvAaEBoAEHAKIBbwFwAQcAogGhAW8BBwCjAXABcQEHAKMBogFwAQcApAFxAXIBBwCkAaMBcQEHAKUBcgFzAQcApQGkAXIBBwCmAXMBdAEHAKYBpQFzAQcApwF0AXUBBwCnAaYBdAEHAKgBdQF2AQcAqAGnAXUBBwCpAXYBdwEHAKkBqAF2AQcAqgF3AXgBBwCqAakBdwEHAKsBeAF5AQcAqwGqAXgBBwCsAXkBegEHAKwBqwF5AQcArQF6AXsBBwCtAawBegEHAK0BfAGuAQcArQF7AXwBBwCuAX0BrwEHAK4BfAF9AQcArwF+AbABBwCvAX0BfgEHALABfwGxAQcAsAF+AX8BBwCxAYABsgEHALEBfwGAAQcAsgGBAbMBBwCyAYABgQEHALMBggG0AQcAswGBAYIBBwC0AYMBtQEHALQBggGDAQcAtQGEAbYBBwC1AYMBhAEHALYBhQG3AQcAtgGEAYUBBwC3AVQBhgEHALcBhQFUAQcAuAGHAbkBBwC4AYYBhwEHALkBiAG6AQcAuQGHAYgBBwCIAbsBugEHAIgBiQG7AQcAiQG8AbsBBwCJAYoBvAEHAIoBvQG8AQcAigGLAb0BBwCLAb4BvQEHAIsBjAG+AQcAjAG/Ab4BBwCMAY0BvwEHAI0BwAG/AQcAjQGOAcABBwCOAcEBwAEHAI4BjwHBAQcAjwHCAcEBBwCPAZABwgEHAJABwwHCAQcAkAGRAcMBBwCRAcQBwwEHAJEBkgHEAQcAkgHFAcQBBwCSAZMBxQEHAJMBxgHFAQcAkwGUAcYBBwCUAccBxgEHAJQBlQHHAQcAlgHHAZUBBwCWAcgBxwEHAJcByAGWAQcAlwHJAcgBBwCYAckBlwEHAJgBygHJAQcAmQHKAZgBBwCZAcsBygEHAJoBywGZAQcAmgHMAcsBBwCbAcwBmgEHAJsBzQHMAQcAnAHNAZsBBwCcAc4BzQEHAJ0BzgGcAQcAnQHPAc4BBwCeAc8BnQEHAJ4B0AHPAQcAnwHQAZ4BBwCfAdEB0AEHAKAB0QGfAQcAoAHSAdEBBwChAdIBoAEHAKEB0wHSAQcA1AGhAaIBBwDUAdMBoQEHANUBogGjAQcA1QHUAaIBBwDWAaMBpAEHANYB1QGjAQcA1wGkAaUBBwDXAdYBpAEHANgBpQGmAQcA2AHXAaUBBwDZAaYBpwEHANkB2AGmAQcA2gGnAagBBwDaAdkBpwEHANsBqAGpAQcA2wHaAagBBwDcAakBqgEHANwB2wGpAQcA3QGqAasBBwDdAdwBqgEHAN4BqwGsAQcA3gHdAasBBwDfAawBrQEHAN8B3gGsAQcA3wGuAeABBwDfAa0BrgEHAOABrwHhAQcA4AGuAa8BBwDhAbAB4gEHAOEBrwGwAQcA4gGxAeMBBwDiAbABsQEHAOMBsgHkAQcA4wGxAbIBBwDkAbMB5QEHAOQBsgGzAQcA5QG0AeYBBwDlAbMBtAEHAOYBtQHnAQcA5gG0AbUBBwDnAbYB6AEHAOcBtQG2AQcA6AG3AekBBwDoAbYBtwEHAOkBhgG4AQcA6QG3AYYBBwDqAbgBuQEHAOoB6wG4AQcA7AG5AboBBwDsAeoBuQEHALsB7AG6AQcAuwHtAewBBwC8Ae0BuwEHALwB7gHtAQcAvQHuAbwBBwC9Ae8B7gEHAL4B7wG9AQcAvgHwAe8BBwC/AfABvgEHAL8B8QHwAQcAwAHxAb8BBwDAAfIB8QEHAMEB8gHAAQcAwQHzAfIBBwDCAfMBwQEHAMIB9AHzAQcAwwH0AcIBBwDDAfUB9AEHAMQB9QHDAQcAxAH2AfUBBwDFAfYBxAEHAMUB9wH2AQcAxgH3AcUBBwDGAfgB9wEHAMcB+AHGAQcAxwH5AfgBBwDIAfkBxwEHAMgB+gH5AQcAyQH6AcgBBwDJAfsB+gEHAMoB+wHJAQcAygH8AfsBBwDLAfwBygEHAMsB/QH8AQcAzAH9AcsBBwDMAf4B/QEHAM0B/gHMAQcAzQH/Af4BBwDOAf8BzQEHAM4BAAL/AQcAzwEAAs4BBwDPAQECAAIHANABAQLPAQcA0AECAgECBwDRAQIC0AEHANEBAwICAgcA0gEDAtEBBwDSAQQCAwIHANMBBALSAQcA0wEFAgQCBwAGAtMB1AEHAAYCBQLTAQcABwLUAdUBBwAHAgYC1AEHAAgC1QHWAQcACAIHAtUBBwAJAtYB1wEHAAkCCALWAQcACgLXAdgBBwAKAgkC1wEHAAsC2AHZAQcACwIKAtgBBwAMAtkB2gEHAAwCCwLZAQcADQLaAdsBBwANAgwC2gEHAA4C2wHcAQcADgINAtsBBwAPAtwB3QEHAA8CDgLcAQcAEALdAd4BBwAQAg8C3QEHABEC3gHfAQcAEQIQAt4BBwASAt8B4AEHABICEQLfAQcAEwLgAeEBBwATAhIC4AEHABQC4QHiAQcAFAITAuEBBwAVAuIB4wEHABUCFALiAQcAFgLjAeQBBwAWAhUC4wEHABcC5AHlAQcAFwIWAuQBBwAYAuUB5gEHABgCFwLlAQcAGQLmAecBBwAZAhgC5gEHABoC5wHoAQcAGgIZAucBBwAbAugB6QEHABsCGgLoAQcA6wHpAbgBBwDrARsC6QEHAMQAHAIdAgcAxADJABwCBwAeAsQAHQIHAB4CwwDEAAcAxwAfAiACBwDHAJYAHwIHACECxwAgAgcAIQLLAMcABwCWACICHwIHAJYAlwAiAgcAlwAjAiICBwCXAMwAIwIHAJoAJAIlAgcAmgCbACQCBwAmApoAJQIHACYCzwCaAAcAmwAnAiQCBwCbAJwAJwIHAJwAKAInAgcAnADQACgCBwCfACkCKgIHAJ8AoAApAgcAKwKfACoCBwArAtMAnwAHAKAALAIpAgcAoAChACwCBwAsAtUALQIHACwCoQDVAAcA1wAuAi8CBwDXAKQALgIHAKQAMAIuAgcApAClADACBwClADECMAIHAKUApgAxAgcAMQLZADICBwAxAqYA2QAHANsAMwI0AgcA2wCpADMCBwCpADUCMwIHAKkAqgA1AgcAqgA2AjUCBwCqAKsANgIHADYC3QA3AgcANgKrAN0ABwDfADgCOQIHAN8ArgA4AgcAOAKvADoCBwA4Aq4ArwAHADoCsAA7AgcAOgKvALAABwA7AuAAPAIHADsCsADgAAcA4wA9Aj4CBwDjALMAPQIHAD0CtAA/AgcAPQKzALQABwA/ArUAQAIHAD8CtAC1AAcAQALkAEECBwBAArUA5AAHAOcAQgJDAgcA5wC4AEICBwBCArkARAIHAEICuAC5AAcAugBFAkYCBwC6AOkARQIHAEQCugBGAgcARAK5ALoABwBHAr0ASAIHAEcC6wC9AAcASAK+AEkCBwBIAr0AvgAHAL8ASgJLAgcAvwDtAEoCBwBJAr8ASwIHAEkCvgC/AAcATALCAE0CBwBMAu8AwgAHAE0CwwAeAgcATQLCAMMABwDJAE4CHAIHAMkA8QBOAgcA8QBPAk4CBwDxABkBTwIHAFAC8wBRAgcAUAIeAfMABwBRAssAIQIHAFEC8wDLAAcAzABSAiMCBwDMAPQAUgIHAFICHgFQAgcAUgL0AB4BBwBTAvcAVAIHAFMCJAH3AAcAVALPACYCBwBUAvcAzwAHANAAVQIoAgcA0AD4AFUCBwBVAiQBUwIHAFUC+AAkAQcAVgL7AFcCBwBWAioB+wAHAFcC0wArAgcAVwL7ANMABwAtAv0AWAIHAC0C1QD9AAcAWAIqAVYCBwBYAv0AKgEHAP8ALwJZAgcA/wDXAC8CBwBaAv8AWQIHAFoCMQH/AAcAMgIBAVsCBwAyAtkAAQEHAFsCMQFaAgcAWwIBATEBBwADATQCXAIHAAMB2wA0AgcAXQIDAVwCBwBdAjcBAwEHADcCBQFeAgcANwLdAAUBBwBeAjcBXQIHAF4CBQE3AQcAPAFfAmACBwA8AQcBXwIHAAcBOQJfAgcABwHfADkCBwAIAWACYQIHAAgBPAFgAgcAPAIIAWECBwA8AuAACAEHAEIBYgJjAgcAQgELAWICBwALAT4CYgIHAAsB4wA+AgcADAFjAmQCBwAMAUIBYwIHAEECDAFkAgcAQQLkAAwBBwBJAWUCZgIHAEkBDwFlAgcADwFDAmUCBwAPAecAQwIHAOkAZwJFAgcA6QARAWcCBwARAWYCZwIHABEBSQFmAgcATwFoAmkCBwBPARMBaAIHAGgC6wBHAgcAaAITAesABwDtAGoCSgIHAO0AFQFqAgcAFQFpAmoCBwAVAU8BaQIHABkBawJPAgcAGQEXAWsCBwBrAu8ATAIHAGsCFwHvAAcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHcCfAJ1AgcAdwJ9AnwCBwB+AnsCeAIHAH4CfwJ7AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCDAogCgQIHAIMCiQKIAgcAigKHAoQCBwCKAosChwIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAlAKOApUCBwCUAowCjgIHAJIClgKXAgcAkgKRApYCBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAKACmgKhAgcAoAKYApoCBwCeAqICowIHAJ4CnQKiAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCsAqYCrQIHAKwCpAKmAgcAqgKuAq8CBwCqAqkCrgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAuAKyArkCBwC4ArACsgIHALYCugK7AgcAtgK1AroCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAMQCvgLFAgcAxAK8Ar4CBwDCAsYCxwIHAMICwQLGAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDLAtACyQIHAMsC0QLQAgcA0gLPAswCBwDSAtMCzwIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA1wLcAtUCBwDXAt0C3AIHAN4C2wLYAgcA3gLfAtsCBwDgAm4C4QIHAOACbAJuAgcAcgLiAuMCBwByAnEC4gIHAOIC5ALlAgcA4gJxAuQCBwBxAuYC5AIHAHECcwLmAgcAcwLnAuYCBwBzAnkC5wIHAHkC6ALnAgcAeQJ7AugCBwB7AukC6AIHAHsCfwLpAgcAfwLqAukCBwB/AoUC6gIHAIUC6wLqAgcAhQKHAusCBwCHAuwC6wIHAIcCiwLsAgcAiwLtAuwCBwCLAo8C7QIHAO0CjALuAgcA7QKPAowCBwDuApQC7wIHAO4CjAKUAgcA7wKbAvACBwDvApQCmwIHAPACmALxAgcA8AKbApgCBwDxAqAC8gIHAPECmAKgAgcA8gKnAvMCBwDyAqACpwIHAPMCpAL0AgcA8wKnAqQCBwD0AqwC9QIHAPQCpAKsAgcA9QKzAvYCBwD1AqwCswIHAPYCsAL3AgcA9gKzArACBwD3ArgC+AIHAPcCsAK4AgcA+AK/AvkCBwD4ArgCvwIHAPkCvAL6AgcA+QK/ArwCBwD6AsQC+wIHAPoCvALEAgcA+wLNAvwCBwD7AsQCzQIHAM0C/QL8AgcAzQLPAv0CBwDPAv4C/QIHAM8C0wL+AgcA0wL/Av4CBwDTAtkC/wIHANkCAAP/AgcA2QLbAgADBwDbAgEDAAMHANsC3wIBAwcA3wLlAgEDBwDfAuIC5QIHAOQCAgPlAgcA5AIDAwIDBwDmAgMD5AIHAOYCBAMDAwcA5gIFAwQDBwDmAucCBQMHAOcCBgMFAwcA5wLoAgYDBwDoAgcDBgMHAOgC6QIHAwcA6QIIAwcDBwDpAuoCCAMHAOoCCQMIAwcA6gLrAgkDBwDrAgoDCQMHAOsC7AIKAwcA7AILAwoDBwDsAu0CCwMHAAsD7gIMAwcACwPtAu4CBwAMA+8CDQMHAAwD7gLvAgcADQPwAg4DBwANA+8C8AIHAA4D8QIPAwcADgPwAvECBwAPA/ICEAMHAA8D8QLyAgcAEAPzAhEDBwAQA/IC8wIHABED9AISAwcAEQPzAvQCBwATA/QC9QIHABMDEgP0AgcAFAP1AvYCBwAUAxMD9QIHABUD9gL3AgcAFQMUA/YCBwAWA/cC+AIHABYDFQP3AgcAFwP4AvkCBwAXAxYD+AIHABgD+QL6AgcAGAMXA/kCBwAZA/oC+wIHABkDGAP6AgcAGgP7AvwCBwAaAxkD+wIHAP0CGgP8AgcA/QIbAxoDBwD+AhsD/QIHAP4CHAMbAwcA/wIcA/4CBwD/Ah0DHAMHAAADHQP/AgcAAAMeAx0DBwABAx4DAAMHAAEDHwMeAwcA5QIfAwEDBwDlAgIDHwMHAAIDIAMhAwcAAgMDAyADBwADAyIDIAMHAAMDBAMiAwcABAMjAyIDBwAEAwUDIwMHAAUDJAMjAwcABQMGAyQDBwAGAyUDJAMHAAYDBwMlAwcABwMmAyUDBwAHAwgDJgMHAAgDJwMmAwcACAMJAycDBwAJAygDJwMHAAkDCgMoAwcACgMpAygDBwAKAwsDKQMHACkDDAMqAwcAKQMLAwwDBwAqAw0DKwMHACoDDAMNAwcAKwMOAywDBwArAw0DDgMHACwDDwMtAwcALAMOAw8DBwAtAxADLgMHAC0DDwMQAwcALgMRAy8DBwAuAxADEQMHAC8DEgMwAwcALwMRAxIDBwAwAxMDMQMHADADEgMTAwcAMQMUAzIDBwAxAxMDFAMHADIDFQMzAwcAMgMUAxUDBwAzAxYDNAMHADMDFQMWAwcANAMXAzUDBwA0AxYDFwMHADUDGAM2AwcANQMXAxgDBwA2AxkDNwMHADYDGAMZAwcANwMaAzgDBwA3AxkDGgMHABoDOQM4AwcAGgMbAzkDBwAbAzoDOQMHABsDHAM6AwcAHAM7AzoDBwAcAx0DOwMHAB0DPAM7AwcAHQMeAzwDBwAeAz0DPAMHAB4DHwM9AwcAHwMhAz0DBwAfAwIDIQMHACEDPgM/AwcAIQMgAz4DBwAgA0ADPgMHACADIgNAAwcAIgNBA0ADBwAiAyMDQQMHACMDQgNBAwcAIwMkA0IDBwAkA0MDQgMHACQDJQNDAwcAJQNEA0MDBwAlAyYDRAMHACYDRQNEAwcAJgMnA0UDBwAnA0YDRQMHACcDKANGAwcAKANHA0YDBwAoAykDRwMHAEcDKgNIAwcARwMpAyoDBwBIAysDSQMHAEgDKgMrAwcASQMsA0oDBwBJAysDLAMHAEoDLQNLAwcASgMsAy0DBwBLAy4DTAMHAEsDLQMuAwcATAMvA00DBwBMAy4DLwMHAE0DMANOAwcATQMvAzADBwBOAzEDTwMHAE4DMAMxAwcATwMyA1ADBwBPAzEDMgMHAFADMwNRAwcAUAMyAzMDBwBRAzQDUgMHAFEDMwM0AwcAUgM1A1MDBwBSAzQDNQMHAFMDNgNUAwcAUwM1AzYDBwBUAzcDVQMHAFQDNgM3AwcAVQM4A1YDBwBVAzcDOAMHADgDVwNWAwcAOAM5A1cDBwA5A1gDVwMHADkDOgNYAwcAOgNZA1gDBwA6AzsDWQMHADsDWgNZAwcAOwM8A1oDBwA8A1sDWgMHADwDPQNbAwcAPQM/A1sDBwA9AyEDPwMHAFwDXQNeAwcAXANfA10DBwBgA14DYQMHAGADXANeAwcAYgNhA2MDBwBiA2ADYQMHAGQDYwNlAwcAZANiA2MDBwBmA2UDZwMHAGYDZANlAwcAaANnA2kDBwBoA2YDZwMHAGoDaQNrAwcAagNoA2kDBwBsA2sDbQMHAGwDagNrAwcAbgNsA20DBwBuA28DbAMHAHADbwNuAwcAcANxA28DBwByA3EDcAMHAHIDcwNxAwcAdANzA3IDBwB0A3UDcwMHAHYDdQN0AwcAdgN3A3UDBwB4A3cDdgMHAHgDeQN3AwcAegN5A3gDBwB6A3sDeQMHAHwDewN6AwcAfAN9A3sDBwB8A34DfQMHAHwDfwN+AwcAfwOAA34DBwB/A4EDgAMHAIEDggOAAwcAgQODA4IDBwCDA4QDggMHAIMDhQOEAwcAhQOGA4QDBwCFA4cDhgMHAIcDiAOGAwcAhwOJA4gDBwCJA4oDiAMHAIkDiwOKAwcAigOMA40DBwCKA4sDjAMHAI0DjgOPAwcAjQOMA44DBwCPA5ADkQMHAI8DjgOQAwcAkQOSA5MDBwCRA5ADkgMHAJMDlAOVAwcAkwOSA5QDBwCVA5YDlwMHAJUDlAOWAwcAlwNdA18DBwCXA5YDXQMHAJgDXwNcAwcAmAOZA18DBwCaA1wDYAMHAJoDmANcAwcAmwNgA2IDBwCbA5oDYAMHAJwDZgNoAwcAnAOdA2YDBwCeA2gDagMHAJ4DnANoAwcAnwNqA2wDBwCfA54DagMHAG8DnwNsAwcAbwOgA58DBwB1A6EDcwMHAHUDogOhAwcAdwOiA3UDBwB3A6MDogMHAHkDowN3AwcAeQOkA6MDBwB7A6QDeQMHAHsDpQOkAwcAfgOmA6cDBwB+A4ADpgMHAIADqAOmAwcAgAOCA6gDBwCCA6kDqAMHAIIDhAOpAwcAhAOqA6kDBwCEA4YDqgMHAKsDjQOsAwcAqwOKA40DBwCsA48DrQMHAKwDjQOPAwcArQORA64DBwCtA48DkQMHAK4DkwOvAwcArgORA5MDBwCwA18DmQMHALADlwNfAwcAsQOZA5gDBwCxA7IDmQMHALMDmAOaAwcAswOxA5gDBwC0A5oDmwMHALQDswOaAwcAtQObA7YDBwC1A7QDmwMHALcDtgOdAwcAtwO1A7YDBwC4A50DnAMHALgDtwOdAwcAuQOcA54DBwC5A7gDnAMHALoDngOfAwcAugO5A54DBwCgA7oDnwMHAKADuwO6AwcAvAO7A6ADBwC8A70DuwMHAKEDvQO8AwcAoQO+A70DBwCiA74DoQMHAKIDvwO+AwcAowO/A6IDBwCjA8ADvwMHAKQDwAOjAwcApAPBA8ADBwClA8EDpAMHAKUDwgPBAwcAwwPCA6UDBwDDA8QDwgMHAMMDxQPEAwcAwwOnA8UDBwCnA8YDxQMHAKcDpgPGAwcApgPHA8YDBwCmA6gDxwMHAKgDyAPHAwcAqAOpA8gDBwCpA8kDyAMHAKkDqgPJAwcAqgPKA8kDBwCqA8sDygMHAMsDzAPKAwcAywOrA8wDBwDMA6wDzQMHAMwDqwOsAwcAzQOtA84DBwDNA6wDrQMHAM4DrgPPAwcAzgOtA64DBwDPA68D0AMHAM8DrgOvAwcA0APRA9IDBwDQA68D0QMHANIDsAPTAwcA0gPRA7ADBwDTA5kDsgMHANMDsAOZAwcA1AOyA7EDBwDUA9UDsgMHANYDsQOzAwcA1gPUA7EDBwDXA7MDtAMHANcD1gOzAwcA2AO0A7UDBwDYA9cDtAMHANkDtQO3AwcA2QPYA7UDBwDaA7cDuAMHANoD2QO3AwcA2wO4A7kDBwDbA9oDuAMHANwDuQO6AwcA3APbA7kDBwC7A9wDugMHALsD3QPcAwcAvQPdA7sDBwC9A94D3QMHAL4D3gO9AwcAvgPfA94DBwC/A98DvgMHAL8D4APfAwcAwAPgA78DBwDAA+ED4AMHAMED4QPAAwcAwQPiA+EDBwDCA+IDwQMHAMID4wPiAwcAxAPjA8IDBwDEA+QD4wMHAMQD5QPkAwcAxAPFA+UDBwDFA+YD5QMHAMUDxgPmAwcAxgPnA+YDBwDGA8cD5wMHAMcD6APnAwcAxwPIA+gDBwDIA+kD6AMHAMgDyQPpAwcAyQPqA+kDBwDJA8oD6gMHAMoD6wPqAwcAygPMA+sDBwDrA80D7AMHAOsDzAPNAwcA7APOA+0DBwDsA80DzgMHAO0DzwPuAwcA7QPOA88DBwDuA9AD7wMHAO4DzwPQAwcA7wPSA/ADBwDvA9AD0gMHAPAD0wPxAwcA8APSA9MDBwDxA7ID1QMHAPED0wOyAwcA8gPUA/MDBwDyA9UD1AMHAPMD1gP0AwcA8wPUA9YDBwD0A9cD9QMHAPQD1gPXAwcA9QPYA/YDBwD1A9cD2AMHAPYD2QP3AwcA9gPYA9kDBwD3A9oD+AMHAPcD2QPaAwcA+APbA/kDBwD4A9oD2wMHAPkD3AP6AwcA+QPbA9wDBwDcA/sD+gMHANwD3QP7AwcA3QP8A/sDBwDdA94D/AMHAN4D/QP8AwcA3gPfA/0DBwDfA/4D/QMHAN8D4AP+AwcA4AP/A/4DBwDgA+ED/wMHAOEDAAT/AwcA4QPiAwAEBwDiAwEEAAQHAOID4wMBBAcA4wMCBAEEBwDjA+QDAgQHAOQDAwQCBAcA5APlAwMEBwDlAwQEAwQHAOUD5gMEBAcA5gMFBAQEBwDmA+cDBQQHAOcDBgQFBAcA5wPoAwYEBwDoAwcEBgQHAOgD6QMHBAcA6QMIBAcEBwDpA+oDCAQHAOoDCQQIBAcA6gPrAwkEBwAJBOwDCgQHAAkE6wPsAwcACgTtAwsEBwAKBOwD7QMHAAsE7gMMBAcACwTtA+4DBwAMBO8DDQQHAAwE7gPvAwcADQTwAw4EBwANBO8D8AMHAA4E8QMPBAcADgTwA/EDBwAPBNUD8gMHAA8E8QPVAwcAEATzAxEEBwAQBPID8wMHABEE9AMSBAcAEQTzA/QDBwASBPUDEwQHABIE9AP1AwcAEwT2AxQEBwATBPUD9gMHABQE9wMVBAcAFAT2A/cDBwAVBPgDFgQHABUE9wP4AwcAFgT5AxcEBwAWBPgD+QMHABcE+gMYBAcAFwT5A/oDBwD6AxkEGAQHAPoD+wMZBAcA+wMaBBkEBwD7A/wDGgQHAPwDGwQaBAcA/AP9AxsEBwD9AxwEGwQHAP0D/gMcBAcA/gMdBBwEBwD+A/8DHQQHAP8DHgQdBAcA/wMABB4EBwAABB8EHgQHAAAEAQQfBAcAAQQgBB8EBwABBAIEIAQHAAIEIQQgBAcAAgQDBCEEBwADBCIEIQQHAAMEBAQiBAcABAQjBCIEBwAEBAUEIwQHAAUEJAQjBAcABQQGBCQEBwAGBCUEJAQHAAYEBwQlBAcABwQmBCUEBwAHBAgEJgQHAAgEJwQmBAcACAQJBCcEBwAnBAoEKAQHACcECQQKBAcAKAQLBCkEBwAoBAoECwQHACkEDAQqBAcAKQQLBAwEBwAqBA0EKwQHACoEDAQNBAcAKwQOBCwEBwArBA0EDgQHACwEDwQtBAcALAQOBA8EBwAtBPIDEAQHAC0EDwTyAwcALgQQBBEEBwAuBC8EEAQHADAEEQQSBAcAMAQuBBEEBwAxBBIEEwQHADEEMAQSBAcAMgQTBBQEBwAyBDEEEwQHADMEFAQVBAcAMwQyBBQEBwA0BBUEFgQHADQEMwQVBAcANQQWBBcEBwA1BDQEFgQHADYEFwQYBAcANgQ1BBcEBwAZBDYEGAQHABkENwQ2BAcAGgQ3BBkEBwAaBDgENwQHABsEOAQaBAcAGwQ5BDgEBwAcBDkEGwQHABwEOgQ5BAcAHQQ6BBwEBwAdBDsEOgQHAB4EOwQdBAcAHgQ8BDsEBwAfBDwEHgQHAB8EPQQ8BAcAIAQ9BB8EBwAgBD4EPQQHACAEPwQ+BAcAIAQhBD8EBwAhBEAEPwQHACEEIgRABAcAIgRBBEAEBwAiBCMEQQQHACMEQgRBBAcAIwQkBEIEBwAkBEMEQgQHACQEJQRDBAcAJQREBEMEBwAlBCYERAQHACYERQREBAcAJgQnBEUEBwBFBCgERgQHAEUEJwQoBAcARgQpBEcEBwBGBCgEKQQHAEcEKgRIBAcARwQpBCoEBwBIBCsESQQHAEgEKgQrBAcASQQsBEoEBwBJBCsELAQHAEoELQRLBAcASgQsBC0EBwBLBBAELwQHAEsELQQQBAcATAR4A3YDBwBMBE0EeAMHAE0EegN4AwcATQROBHoDBwBOBHwDegMHAE4ETwR8AwcATwR/A3wDBwBPBFAEfwMHAFAEgQN/AwcAUARRBIEDBwBRBIMDgQMHAFEEUgSDAwcAUgSFA4MDBwBSBFMEhQMHAFMEhwOFAwcAUwRUBIcDBwBUBIkDhwMHAFQEVQSJAwcAVQSLA4kDBwBVBFYEiwMHAFYEjAOLAwcAVgRXBIwDBwBXBI4DjAMHAFcEWASOAwcAWASQA44DBwBYBFkEkAMHAFkEkgOQAwcAWQRaBJIDBwBaBJQDkgMHAFoEWwSUAwcAWwSWA5QDBwBbBFwElgMHAFwEXQOWAwcAXARdBF0DBwBdBF4DXQMHAF0EXgReAwcAXgRhA14DBwBeBF8EYQMHAF8EYwNhAwcAXwRgBGMDBwBgBGUDYwMHAGAEYQRlAwcAYQRnA2UDBwBhBGIEZwMHAGIEaQNnAwcAYgRjBGkDBwBjBGsDaQMHAGMEZARrAwcAZARtA2sDBwBkBGUEbQMHAGUEbgNtAwcAZQRmBG4DBwBmBHADbgMHAGYEZwRwAwcAZwRyA3ADBwBnBGgEcgMHAGgEdANyAwcAaARpBHQDBwBpBHYDdAMHAGkETAR2AwcAagS3Aq4CBwBqBGsEtwIHAE4EawRqBAcATgRNBGsEBwBrBLUCtwIHAGsEbAS1AgcATQRsBGsEBwBNBEwEbAQHAGwEugK1AgcAbARtBLoCBwBMBG0EbAQHAEwEaQRtBAcAbQTDAroCBwBtBG4EwwIHAGkEbgRtBAcAaQRoBG4EBwBuBMECwwIHAG4EbwTBAgcAaARvBG4EBwBoBGcEbwQHAG8ExgLBAgcAbwRwBMYCBwBnBHAEbwQHAGcEZgRwBAcAcATIAsYCBwBwBHEEyAIHAGYEcQRwBAcAZgRlBHEEBwBxBMsCyAIHAHEEcgTLAgcAZQRyBHEEBwBlBGQEcgQHAHIE0QLLAgcAcgRzBNECBwBkBHMEcgQHAGQEYwRzBAcAcwTUAtECBwBzBHQE1AIHAGMEdARzBAcAYwRiBHQEBwB0BNcC1AIHAHQEdQTXAgcAYgR1BHQEBwBiBGEEdQQHAHUE3QLXAgcAdQR2BN0CBwBhBHYEdQQHAGEEYAR2BAcAdgTgAt0CBwB2BHcE4AIHAGAEdwR2BAcAYARfBHcEBwB3BGwC4AIHAHcEeARsAgcAXwR4BHcEBwBfBF4EeAQHAHgEbwJsAgcAeAR5BG8CBwBeBHkEeAQHAF4EXQR5BAcAeQR0Am8CBwB5BHoEdAIHAF0EegR5BAcAXQRcBHoEBwB6BHcCdAIHAHoEewR3AgcAXAR7BHoEBwBcBFsEewQHAHsEfQJ3AgcAewR8BH0CBwBbBHwEewQHAFsEWgR8BAcAfASAAn0CBwB8BH0EgAIHAFoEfQR8BAcAWgRZBH0EBwB9BIMCgAIHAH0EfgSDAgcAWQR+BH0EBwBZBFgEfgQHAH4EiQKDAgcAfgR/BIkCBwBYBH8EfgQHAFgEVwR/BAcAfwSTAokCBwB/BIAEkwIHAFcEgAR/BAcAVwRWBIAEBwCABJECkwIHAIAEgQSRAgcAVgSBBIAEBwBWBFUEgQQHAIEElgKRAgcAgQSCBJYCBwBVBIIEgQQHAFUEVASCBAcAggSfApYCBwCCBIMEnwIHAFQEgwSCBAcAVARTBIMEBwCDBJ0CnwIHAIMEhASdAgcAUwSEBIMEBwBTBFIEhAQHAIQEogKdAgcAhASFBKICBwBSBIUEhAQHAFIEUQSFBAcAhQSrAqICBwCFBIYEqwIHAFEEhgSFBAcAUQRQBIYEBwCGBKkCqwIHAIYEhwSpAgcAUASHBIYEBwBQBE8EhwQHAIcErgKpAgcAhwRqBK4CBwBPBGoEhwQHAE8ETgRqBAcAcwKIBHkCBwBzAokEiAQHAIgEbwJ0AgcAiASJBG8CBwB/AooEhQIHAH8CiwSKBAcAigR9AoACBwCKBIsEfQIHAIwEjwKLAgcAjASNBI8CBwCNBIkCkwIHAI0EjASJAgcAjgSbApQCBwCOBI8EmwIHAI8ElgKfAgcAjwSOBJYCBwCQBKcCoAIHAJAEkQSnAgcAkQSiAqsCBwCRBJAEogIHAJIEswKsAgcAkgSTBLMCBwCTBK4CtwIHAJMEkgSuAgcAlAS/ArgCBwCUBJUEvwIHAJUEugLDAgcAlQSUBLoCBwDEApYEzQIHAMQClwSWBAcAlgTGAsgCBwCWBJcExgIHANMCmATZAgcA0wKZBJgEBwCYBNEC1AIHAJgEmQTRAgcA3wKaBOICBwDfApsEmgQHAJoE3QLgAgcAmgSbBN0CBwBtAokEnAQHAG0CbwKJBAcAnARzAnACBwCcBIkEcwIHAJ0EdAJ2AgcAnQSIBHQCBwB6AogEnQQHAHoCeQKIBAcAfAKLBJ4EBwB8An0CiwQHAJ4EfwJ+AgcAngSLBH8CBwCfBIACggIHAJ8EigSAAgcAhgKKBJ8EBwCGAoUCigQHAIgCjASgBAcAiAKJAowEBwCgBIsCigIHAKAEjASLAgcAoQSTApACBwChBI0EkwIHAI0CjQShBAcAjQKPAo0EBwCXAo4EogQHAJcClgKOBAcAogSUApUCBwCiBI4ElAIHAKMEnwKcAgcAowSPBJ8CBwCZAo8EowQHAJkCmwKPBAcAowKQBKQEBwCjAqICkAQHAKQEoAKhAgcApASQBKACBwClBKsCqAIHAKUEkQSrAgcApQKRBKUEBwClAqcCkQQHAK8CkgSmBAcArwKuApIEBwCmBKwCrQIHAKYEkgSsAgcApwS3ArQCBwCnBJMEtwIHALECkwSnBAcAsQKzApMEBwC7ApQEqAQHALsCugKUBAcAqAS4ArkCBwCoBJQEuAIHAKkEwwLAAgcAqQSVBMMCBwC9ApUEqQQHAL0CvwKVBAcAxwKXBKoEBwDHAsYClwQHAKoExALFAgcAqgSXBMQCBwCrBMgCygIHAKsElgTIAgcAzgKWBKsEBwDOAs0ClgQHANACmQSsBAcA0ALRApkEBwCsBNMC0gIHAKwEmQTTAgcArQTUAtYCBwCtBJgE1AIHANoCmAStBAcA2gLZApgEBwDcApsErgQHANwC3QKbBAcArgTfAt4CBwCuBJsE3wIHAK8E4ALhAgcArwSaBOACBwDjApoErwQHAOMC4gKaBAcAIAKqBCECBwAgAscCqgQHAB8CxwIgAgcAHwLCAscCBwDCAiICwAIHAMICHwIiAgcAxQIhAqoEBwDFAlECIQIHAMACIwKpBAcAwAIiAiMCBwCpBFICvQIHAKkEIwJSAgcAvgJRAsUCBwC+AlACUQIHAFACvQJSAgcAUAK+Ar0CBwDJAh0CygIHAMkCHgIdAgcA0AIeAskCBwDQAk0CHgIHAKwETQLQAgcArARMAk0CBwCsBGsCTAIHAKwE0gJrAgcAygIcAqsEBwDKAh0CHAIHAE4CqwQcAgcATgLOAqsEBwDOAk8CzAIHAM4CTgJPAgcAzAJrAtICBwDMAk8CawIHAGkC2gJqAgcAaQLYAtoCBwBpAt4C2AIHAGkCaALeAgcAagKtBEoCBwBqAtoCrQQHAEoC1gJLAgcASgKtBNYCBwBLAtUCSQIHAEsC1gLVAgcASQLcAkgCBwBJAtUC3AIHAEgCrgRHAgcASALcAq4EBwBHAt4CaAIHAEcCrgTeAgcARAJtAkICBwBEAm4CbQIHAEYCbgJEAgcARgLhAm4CBwBFAuECRgIHAEUCrwThAgcAZwKvBEUCBwBnAuMCrwQHAEICnARDAgcAQgJtApwEBwBDAnACZQIHAEMCnARwAgcAcgJlAnACBwByAmYCZQIHAOMCZgJyAgcA4wJnAmYCBwB6AmMCeAIHAHoCZAJjAgcAeAJiAn4CBwB4AmMCYgIHAH4CPgKeBAcAfgJiAj4CBwCeBD0CfAIHAJ4EPgI9AgcAPwJ8Aj0CBwA/AnUCfAIHAEACdQI/AgcAQAJ2AnUCBwBBAnYCQAIHAEECnQR2AgcAZAKdBEECBwBkAnoCnQQHAJ8EYQKGAgcAnwQ8AmECBwA8AoICOwIHADwCnwSCAgcAOwKBAjoCBwA7AoICgQIHADoCiAI4AgcAOgKBAogCBwA4AqAEOQIHADgCiAKgBAcAOQKKAl8CBwA5AqAEigIHAIQCXwKKAgcAhAJgAl8CBwBgAoYCYQIHAGAChAKGAgcAjQJdAo4CBwCNAl4CXQIHAFwCjgJdAgcAXAKVAo4CBwAzAqIENAIHADMClwKiBAcANQKXAjMCBwA1ApIClwIHADYCkgI1AgcANgKQApICBwA3ApACNgIHADcCoQSQAgcAoQReAo0CBwChBDcCXgIHADQClQJcAgcANAKiBJUCBwCkBC4CowIHAKQELwIuAgcAowIwAp4CBwCjAi4CMAIHAJ4CMQKcAgcAngIwAjECBwChAi8CpAQHAKECWQIvAgcAnAIyAqMEBwCcAjECMgIHAKMEWwKZAgcAowQyAlsCBwBaApkCWwIHAFoCmgKZAgcAWQKaAloCBwBZAqECmgIHAKgCLQKlBAcAqAIsAi0CBwClBFgCpQIHAKUELQJYAgcAqgIsAqgCBwCqAikCLAIHAK8CKQKqAgcArwIqAikCBwCmBCoCrwIHAKYEKwIqAgcArQIrAqYEBwCtAlcCKwIHAFYCpQJYAgcAVgKmAqUCBwBXAqYCVgIHAFcCrQKmAgcAtgInArQCBwC2AiQCJwIHALsCJAK2AgcAuwIlAiQCBwC0AigCpwQHALQCJwIoAgcApwRVArECBwCnBCgCVQIHAKgEJQK7AgcAqAQmAiUCBwC5AiYCqAQHALkCVAImAgcAUwKxAlUCBwBTArICsQIHAFQCsgJTAgcAVAK5ArICBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDIBMUEyQQHAMgExgTFBAcAygTJBMsEBwDKBMgEyQQHAMwEygTLBAcAzATNBMoEBwDOBM0EzAQHAM4EzwTNBAcAzgTEBM8EBwDOBMcExAQHANAE0QTSBAcA0ATTBNEEBwDUBNIE1QQHANQE0ATSBAcA1gTUBNUEBwDWBNcE1AQHANgE1wTWBAcA2ATZBNcEBwDYBNoE2QQHANgE2wTaBAcA2gTRBNMEBwDaBNsE0QQHANwE3QTeBAcA3ATfBN0EBwDgBNwE3gQHAOAE4QTcBAcA4gThBOAEBwDiBOME4QQHAOIE5ATjBAcA4gTlBOQEBwDkBOYE5wQHAOQE5QTmBAcA3wTmBN0EBwDfBOcE5gQHAOgE6QTqBAcA6ATrBOkEBwDsBOsE6AQHAOwE7QTrBAcA7ATuBO0EBwDsBO8E7gQHAO4E8ATxBAcA7gTvBPAEBwDyBPAE8wQHAPIE8QTwBAcA6QTzBOoEBwDpBPIE8wQHAPQE9QT2BAcA9AT3BPUEBwD0BPgE9wQHAPQE+QT4BAcA+AT6BPsEBwD4BPkE+gQHAPwE+gT9BAcA/AT7BPoEBwD+BP0E/wQHAP4E/AT9BAcA9gT+BP8EBwD2BPUE/gQHAAAFxgQBBQcAAAXEBMYEBwABBcgEAgUHAAEFxgTIBAcAAgXKBAMFBwACBcgEygQHAMoEBAUDBQcAygTNBAQFBwDNBAUFBAUHAM0EzwQFBQcAzwQABQUFBwDPBMQEAAUHAAYF0AQHBQcABgXTBNAEBwAHBdQECAUHAAcF0ATUBAcA1AQJBQgFBwDUBNcECQUHANcECgUJBQcA1wTZBAoFBwDZBAsFCgUHANkE2gQLBQcACwXTBAYFBwALBdoE0wQHAAwF3AQNBQcADAXfBNwEBwDcBA4FDQUHANwE4QQOBQcA4QQPBQ4FBwDhBOMEDwUHAOMEEAUPBQcA4wTkBBAFBwAQBecEEQUHABAF5ATnBAcAEQXfBAwFBwARBecE3wQHAOkEEgUTBQcA6QTrBBIFBwDrBBQFEgUHAOsE7QQUBQcA7QQVBRQFBwDtBO4EFQUHABUF8QQWBQcAFQXuBPEEBwAWBfIEFwUHABYF8QTyBAcAFwXpBBMFBwAXBfIE6QQHAPUEGAUZBQcA9QT3BBgFBwD3BBoFGAUHAPcE+AQaBQcAGgX7BBsFBwAaBfgE+wQHABsF/AQcBQcAGwX7BPwEBwAcBf4EHQUHABwF/AT+BAcA/gQZBR0FBwD+BPUEGQUHAB4FAQUfBQcAHgUABQEFBwAfBQIFIAUHAB8FAQUCBQcAIAUDBSEFBwAgBQIFAwUHAAMFIgUhBQcAAwUEBSIFBwAEBSMFIgUHAAQFBQUjBQcABQUeBSMFBwAFBQAFHgUHACQFBwUlBQcAJAUGBQcFBwAlBQgFJgUHACUFBwUIBQcACAUnBSYFBwAIBQkFJwUHAAkFKAUnBQcACQUKBSgFBwAKBSkFKAUHAAoFCwUpBQcAKQUGBSQFBwApBQsFBgUHACoFDQUrBQcAKgUMBQ0FBwANBSwFKwUHAA0FDgUsBQcADgUtBSwFBwAOBQ8FLQUHAA8FLgUtBQcADwUQBS4FBwAuBREFLwUHAC4FEAURBQcALwUMBSoFBwAvBREFDAUHABMFMAUxBQcAEwUSBTAFBwASBTIFMAUHABIFFAUyBQcAFAUzBTIFBwAUBRUFMwUHADMFFgU0BQcAMwUVBRYFBwA0BRcFNQUHADQFFgUXBQcANQUTBTEFBwA1BRcFEwUHABkFNgU3BQcAGQUYBTYFBwAYBTgFNgUHABgFGgU4BQcAOAUbBTkFBwA4BRoFGwUHADkFHAU6BQcAOQUbBRwFBwA6BR0FOwUHADoFHAUdBQcAHQU3BTsFBwAdBRkFNwUHALAEHwWzBAcAsAQeBR8FBwCxBB8FIAUHALEEswQfBQcAPAUgBSEFBwA8BbEEIAUHACIFPAUhBQcAIgU9BTwFBwAjBT0FIgUHACMFsgQ9BQcAIwWwBLIEBwAjBR4FsAQHALUEJAUlBQcAtQS3BCQFBwA+BSUFJgUHAD4FtQQlBQcAJwU+BSYFBwAnBT8FPgUHACgFPwUnBQcAKAW2BD8FBwAoBbQEtgQHACgFKQW0BAcAtAQkBbcEBwC0BCkFJAUHAEAFKgUrBQcAQAW5BCoFBwAsBUAFKwUHACwFQQVABQcALQVBBSwFBwAtBboEQQUHAC0FuAS6BAcALQUuBbgEBwC4BC8FuwQHALgELgUvBQcAuQQvBSoFBwC5BLsELwUHADAFQgUxBQcAMAVDBUIFBwAyBUMFMAUHADIFvgRDBQcAMgW8BL4EBwAyBTMFvAQHALwENAW/BAcAvAQzBTQFBwC9BDQFNQUHAL0EvwQ0BQcAQgU1BTEFBwBCBb0ENQUHADYFwAQ3BQcANgXDBMAEBwA2BcEEwwQHADYFOAXBBAcAwQQ5BUQFBwDBBDgFOQUHAEUFOQU6BQcARQVEBTkFBwDCBDoFOwUHAMIERQU6BQcANwXCBDsFBwA3BcAEwgQHADwFsgSxBAcAPAU9BbIEBwA+BbYEtQQHAD4FPwW2BAcAQAW6BLkEBwBABUEFugQHAEQFwgTBBAcARAVFBcIEBwBCBb4EvQQHAEIFQwW+BAcAZAPqBPMEBwBkA2YD6gQHAPMEYgNkAwcA8wTwBGIDBwDsBJ0DtgMHAOwE6ASdAwcA6ARmA50DBwDoBOoEZgMHAPAEmwNiAwcA8ATvBJsDBwDsBJsD7wQHAOwEtgObAwcA0QPeBLADBwDRA+AE3gQHAN4ElwOwAwcA3gTdBJcDBwDdBJUDlwMHAN0E5gSVAwcA5gSTA5UDBwDmBOUEkwMHAOUErwOTAwcA5QTiBK8DBwDgBK8D4gQHAOAE0QOvAwcAywPWBNUEBwDLA6oD1gQHANUEqwPLAwcA1QTSBKsDBwDSBIoDqwMHANIE0QSKAwcA0QSIA4oDBwDRBNsEiAMHANsEhgOIAwcA2wTYBIYDBwDYBKoDhgMHANgE1gSqAwcAzASlA3sDBwDMBMsEpQMHAMsEwwOlAwcAywTJBMMDBwDJBKcDwwMHAMkExQSnAwcAewPOBMwEBwB7A30DzgQHAH0DxwTOBAcAfQN+A8cEBwB+A8UExwQHAH4DpwPFBAcA/wRvA3EDBwD/BP0EbwMHAP0EoANvAwcA/QT6BKADBwD5BKAD+gQHAPkEvAOgAwcA+QShA7wDBwD5BPQEoQMHAPQEcwOhAwcA9AT2BHMDBwD2BHEDcwMHAPYE/wRxAwcARgVHBUgFBwBGBUkFRwUHAEoFSAVLBQcASgVGBUgFBwBMBUsFTQUHAEwFSgVLBQcATgVNBU8FBwBOBUwFTQUHAFAFTwVRBQcAUAVOBU8FBwBSBVEFUwUHAFIFUAVRBQcAVAVTBVUFBwBUBVIFUwUHAFYFVQVXBQcAVgVUBVUFBwBYBVYFVwUHAFgFWQVWBQcAWgVZBVgFBwBaBVsFWQUHAFwFWwVaBQcAXAVdBVsFBwBeBV0FXAUHAF4FXwVdBQcAYAVfBV4FBwBgBWEFXwUHAGIFYQVgBQcAYgVjBWEFBwBkBWMFYgUHAGQFZQVjBQcAZgVlBWQFBwBmBWcFZQUHAGYFaAVnBQcAZgVpBWgFBwBpBWoFaAUHAGkFawVqBQcAawVsBWoFBwBrBW0FbAUHAG0FbgVsBQcAbQVvBW4FBwBvBXAFbgUHAG8FcQVwBQcAcQVyBXAFBwBxBXMFcgUHAHMFdAVyBQcAcwV1BXQFBwB0BXYFdwUHAHQFdQV2BQcAdwV4BXkFBwB3BXYFeAUHAHkFegV7BQcAeQV4BXoFBwB7BXwFfQUHAHsFegV8BQcAfQV+BX8FBwB9BXwFfgUHAH8FgAWBBQcAfwV+BYAFBwCBBUcFSQUHAIEFgAVHBQcAcgV3BYIFBwByBXQFdwUHAHcFewWCBQcAdwV5BXsFBwB7BX8FggUHAHsFfQV/BQcAfwVJBYIFBwB/BYEFSQUHAEkFSgWCBQcASQVGBUoFBwBKBU4FggUHAEoFTAVOBQcATgVSBYIFBwBOBVAFUgUHAFIFVgWCBQcAUgVUBVYFBwBWBVsFggUHAFYFWQVbBQcAWwVfBYIFBwBbBV0FXwUHAF8FYwWCBQcAXwVhBWMFBwBjBWcFggUHAGMFZQVnBQcAZwVqBYIFBwBnBWgFagUHAGoFbgWCBQcAagVsBW4FBwBuBXIFggUHAG4FcAVyBQcAgAWDBUcFBwCABYQFgwUHAEcFhQVIBQcARwWDBYUFBwB+BYQFgAUHAH4FhgWEBQcAfAWGBX4FBwB8BYcFhgUHAHoFhwV8BQcAegWIBYcFBwB4BYgFegUHAHgFiQWIBQcAdgWJBXgFBwB2BYoFiQUHAHUFigV2BQcAdQWLBYoFBwBXBYwFWAUHAFcFjQWMBQcAWAWOBVoFBwBYBYwFjgUHAFUFjQVXBQcAVQWPBY0FBwBTBY8FVQUHAFMFkAWPBQcAUQWQBVMFBwBRBZEFkAUHAE8FkQVRBQcATwWSBZEFBwBNBZIFTwUHAE0FkwWSBQcASwWTBU0FBwBLBZQFkwUHAEgFlAVLBQcASAWFBZQFBwBzBYsFdQUHAHMFlQWLBQcAcQWVBXMFBwBxBZYFlQUHAG8FlgVxBQcAbwWXBZYFBwBtBZcFbwUHAG0FmAWXBQcAawWYBW0FBwBrBZkFmAUHAGkFmQVrBQcAaQWaBZkFBwBmBZoFaQUHAGYFmwWaBQcAZAWbBWYFBwBkBZwFmwUHAGIFnAVkBQcAYgWdBZwFBwBgBZ0FYgUHAGAFngWdBQcAXgWeBWAFBwBeBZ8FngUHAFwFnwVeBQcAXAWgBZ8FBwBaBaAFXAUHAFoFjgWgBQcAhAWhBYMFBwCEBaIFoQUHAIMFowWFBQcAgwWhBaMFBwCGBaIFhAUHAIYFpAWiBQcAhQWlBZQFBwCFBaMFpQUHAIcFpAWGBQcAhwWmBaQFBwCIBaYFhwUHAIgFpwWmBQcAiQWnBYgFBwCJBagFpwUHAIoFqAWJBQcAigWpBagFBwCLBakFigUHAIsFqgWpBQcAlQWqBYsFBwCVBasFqgUHAI0FrAWMBQcAjQWtBawFBwCMBa4FjgUHAIwFrAWuBQcAjwWtBY0FBwCPBa8FrQUHAI4FsAWgBQcAjgWuBbAFBwCQBa8FjwUHAJAFsQWvBQcAkQWxBZAFBwCRBbIFsQUHAJIFsgWRBQcAkgWzBbIFBwCTBbMFkgUHAJMFtAWzBQcAlAW0BZMFBwCUBaUFtAUHAJYFqwWVBQcAlgW1BasFBwCXBbUFlgUHAJcFtgW1BQcAmAW2BZcFBwCYBbcFtgUHAJkFtwWYBQcAmQW4BbcFBwCaBbgFmQUHAJoFuQW4BQcAmwW5BZoFBwCbBboFuQUHAJwFugWbBQcAnAW7BboFBwCdBbsFnAUHAJ0FvAW7BQcAngW8BZ0FBwCeBb0FvAUHAJ8FvQWeBQcAnwW+Bb0FBwCgBb4FnwUHAKAFsAW+BQcAvwXABcEFBwC/BcIFwAUHAMMFwAXCBQcAwwXEBcAFBwDFBcQFwwUHAMUFxgXEBQcAxwXGBcUFBwDHBcgFxgUHAMkFyAXHBQcAyQXKBcgFBwDLBcoFyQUHAMsFzAXKBQcAzQXMBcsFBwDNBc4FzAUHAM8FzQXQBQcAzwXOBc0FBwDRBdAF0gUHANEFzwXQBQcA0wXSBdQFBwDTBdEF0gUHANUF1AXWBQcA1QXTBdQFBwDXBdYF2AUHANcF1QXWBQcA1wXZBdoFBwDXBdgF2QUHANoF2wXcBQcA2gXZBdsFBwDcBd0F3gUHANwF2wXdBQcA3gXfBeAFBwDeBd0F3wUHAOAF4QXiBQcA4AXfBeEFBwDiBeMF5AUHAOIF4QXjBQcA5AXlBeYFBwDkBeMF5QUHAOUF5wXmBQcA5QXoBecFBwDoBekF5wUHAOgF6gXpBQcA6gXrBekFBwDqBewF6wUHAOwF7QXrBQcA7AXuBe0FBwDuBcEF7QUHAO4FvwXBBQcAwQXvBfAFBwDBBcAF7wUHAMAF8QXvBQcAwAXEBfEFBwDEBfIF8QUHAMQFxgXyBQcAxgXzBfIFBwDGBcgF8wUHAMgF9AXzBQcAyAXKBfQFBwDKBfUF9AUHAMoFzAX1BQcAzAX2BfUFBwDMBc4F9gUHAPYFzwX3BQcA9gXOBc8FBwD3BdEF+AUHAPcFzwXRBQcA+AXTBfkFBwD4BdEF0wUHAPkF1QX6BQcA+QXTBdUFBwD6BdcF+wUHAPoF1QXXBQcA+wXaBfwFBwD7BdcF2gUHAPwF3AX9BQcA/AXaBdwFBwD9Bd4F/gUHAP0F3AXeBQcA/gXgBf8FBwD+Bd4F4AUHAP8F4gUABgcA/wXgBeIFBwAABuQFAQYHAAAG4gXkBQcAAQbmBQIGBwABBuQF5gUHAOYFAwYCBgcA5gXnBQMGBwDnBQQGAwYHAOcF6QUEBgcA6QUFBgQGBwDpBesFBQYHAOsFBgYFBgcA6wXtBQYGBwDtBfAFBgYHAO0FwQXwBQcA8AUHBggGBwDwBe8FBwYHAPEFBwbvBQcA8QUJBgcGBwDyBQkG8QUHAPIFCgYJBgcA8wUKBvIFBwDzBQsGCgYHAPQFCwbzBQcA9AUMBgsGBwD1BQwG9AUHAPUFDQYMBgcA9gUNBvUFBwD2BQ4GDQYHAA8G9gX3BQcADwYOBvYFBwAQBvcF+AUHABAGDwb3BQcAEQb4BfkFBwARBhAG+AUHABIG+QX6BQcAEgYRBvkFBwATBvoF+wUHABMGEgb6BQcAEwb8BRQGBwATBvsF/AUHABQG/QUVBgcAFAb8Bf0FBwAVBv4FFgYHABUG/QX+BQcAFgb/BRcGBwAWBv4F/wUHABcGAAYYBgcAFwb/BQAGBwAYBgEGGQYHABgGAAYBBgcAGQYCBhoGBwAZBgEGAgYHAAIGGwYaBgcAAgYDBhsGBwADBhwGGwYHAAMGBAYcBgcABAYdBhwGBwAEBgUGHQYHAAUGHgYdBgcABQYGBh4GBwAGBggGHgYHAAYG8AUIBgcABwYfBggGBwAHBiAGHwYHAAkGIAYHBgcACQYhBiAGBwAKBiEGCQYHAAoGIgYhBgcACwYiBgoGBwALBiMGIgYHAAwGIwYLBgcADAYkBiMGBwANBiQGDAYHAA0GJQYkBgcADgYlBg0GBwAOBiYGJQYHACcGDgYPBgcAJwYmBg4GBwAoBg8GEAYHACgGJwYPBgcAKQYQBhEGBwApBigGEAYHACoGEQYSBgcAKgYpBhEGBwArBhIGEwYHACsGKgYSBgcALAYTBhQGBwAsBisGEwYHAC0GFAYVBgcALQYsBhQGBwAuBhUGFgYHAC4GLQYVBgcALwYWBhcGBwAvBi4GFgYHADAGFwYYBgcAMAYvBhcGBwAxBhgGGQYHADEGMAYYBgcAMgYZBhoGBwAyBjEGGQYHABsGMgYaBgcAGwYzBjIGBwAcBjMGGwYHABwGNAYzBgcAHQY0BhwGBwAdBjUGNAYHAB4GNQYdBgcAHgY2BjUGBwAIBjYGHgYHAAgGHwY2BgcANwY4BjkGBwA3BjoGOAYHADoGOwY4BgcAOgY8BjsGBwA8Bj0GOwYHADwGPgY9BgcAPgY/Bj0GBwA+BkAGPwYHAEAGQQY/BgcAQAZCBkEGBwBCBkMGQQYHAEIGRAZDBgcARAZFBkMGBwBEBkYGRQYHAEUGRwZIBgcARQZGBkcGBwBIBkkGSgYHAEgGRwZJBgcASgZLBkwGBwBKBkkGSwYHAEwGTQZOBgcATAZLBk0GBwBOBk8GUAYHAE4GTQZPBgcAUAZRBlIGBwBQBk8GUQYHAFIGUwZUBgcAUgZRBlMGBwBUBlUGVgYHAFQGUwZVBgcAVgZXBlgGBwBWBlUGVwYHAFgGWQZaBgcAWAZXBlkGBwBaBlsGXAYHAFoGWQZbBgcAXAZdBl4GBwBcBlsGXQYHAF0GXwZeBgcAXQZgBl8GBwBgBmEGXwYHAGAGYgZhBgcAYgZjBmEGBwBiBmQGYwYHAGQGZQZjBgcAZAZmBmUGBwBmBjkGZQYHAGYGNwY5BgcAOAZnBjkGBwA4BmgGZwYHADgGaQZoBgcAOAY7BmkGBwA7BmoGaQYHADsGPQZqBgcAPQZrBmoGBwA9Bj8GawYHAD8GbAZrBgcAPwZBBmwGBwBBBm0GbAYHAEEGQwZtBgcAQwZuBm0GBwBDBkUGbgYHAG4GSAZvBgcAbgZFBkgGBwBvBkoGcAYHAG8GSAZKBgcAcAZMBnEGBwBwBkoGTAYHAHEGTgZyBgcAcQZMBk4GBwByBlAGcwYHAHIGTgZQBgcAdAZQBlIGBwB0BnMGUAYHAHUGUgZUBgcAdQZ0BlIGBwB2BlQGVgYHAHYGdQZUBgcAdwZWBlgGBwB3BnYGVgYHAHgGWAZaBgcAeAZ3BlgGBwB5BloGXAYHAHkGeAZaBgcAegZcBl4GBwB6BnkGXAYHAF8GegZeBgcAXwZ7BnoGBwBhBnsGXwYHAGEGfAZ7BgcAYwZ8BmEGBwBjBn0GfAYHAGUGfQZjBgcAZQZ+Bn0GBwA5Bn4GZQYHADkGZwZ+BgcAZwZ/BoAGBwBnBmgGfwYHAGgGgQZ/BgcAaAZpBoEGBwBpBoIGgQYHAGkGagaCBgcAagaDBoIGBwBqBmsGgwYHAGsGhAaDBgcAawZsBoQGBwBsBoUGhAYHAGwGbQaFBgcAbQaGBoUGBwBtBm4GhgYHAIYGbwaHBgcAhgZuBm8GBwCHBnAGiAYHAIcGbwZwBgcAiAZxBokGBwCIBnAGcQYHAIkGcgaKBgcAiQZxBnIGBwCKBnMGiwYHAIoGcgZzBgcAiwZ0BowGBwCLBnMGdAYHAIwGdQaNBgcAjAZ0BnUGBwCNBnYGjgYHAI0GdQZ2BgcAjgZ3Bo8GBwCOBnYGdwYHAI8GeAaQBgcAjwZ3BngGBwCQBnkGkQYHAJAGeAZ5BgcAkQZ6BpIGBwCRBnkGegYHAHoGkwaSBgcAegZ7BpMGBwB7BpQGkwYHAHsGfAaUBgcAfAaVBpQGBwB8Bn0GlQYHAH0GlgaVBgcAfQZ+BpYGBwB+BoAGlgYHAH4GZwaABgcAgAaXBpgGBwCABn8GlwYHAIEGlwZ/BgcAgQaZBpcGBwCCBpkGgQYHAIIGmgaZBgcAgwaaBoIGBwCDBpsGmgYHAIQGmwaDBgcAhAacBpsGBwCFBpwGhAYHAIUGnQacBgcAhgadBoUGBwCGBp4GnQYHAJ8GhgaHBgcAnwaeBoYGBwCgBocGiAYHAKAGnwaHBgcAoQaIBokGBwChBqAGiAYHAKIGiQaKBgcAogahBokGBwCjBooGiwYHAKMGogaKBgcAowaMBqQGBwCjBosGjAYHAKQGjQalBgcApAaMBo0GBwClBo4GpgYHAKUGjQaOBgcApgaPBqcGBwCmBo4GjwYHAKcGkAaoBgcApwaPBpAGBwCoBpEGqQYHAKgGkAaRBgcAqQaSBqoGBwCpBpEGkgYHAJIGqwaqBgcAkgaTBqsGBwCTBqwGqwYHAJMGlAasBgcAlAatBqwGBwCUBpUGrQYHAJUGrgatBgcAlQaWBq4GBwCWBpgGrgYHAJYGgAaYBgcAmAavBrAGBwCYBpcGrwYHAJcGsQavBgcAlwaZBrEGBwCZBrIGsQYHAJkGmgayBgcAmgazBrIGBwCaBpsGswYHAJsGtAazBgcAmwacBrQGBwCcBrUGtAYHAJwGnQa1BgcAnQa2BrUGBwCdBp4GtgYHALYGnwa3BgcAtgaeBp8GBwC3BqAGuAYHALcGnwagBgcAuAahBrkGBwC4BqAGoQYHALkGoga6BgcAuQahBqIGBwC6BqMGuwYHALoGogajBgcAuwakBrwGBwC7BqMGpAYHALwGpQa9BgcAvAakBqUGBwC9BqYGvgYHAL0GpQamBgcAvganBr8GBwC+BqYGpwYHAL8GqAbABgcAvwanBqgGBwDABqkGwQYHAMAGqAapBgcAwQaqBsIGBwDBBqkGqgYHAKoGwwbCBgcAqgarBsMGBwCrBsQGwwYHAKsGrAbEBgcArAbFBsQGBwCsBq0GxQYHAK0GxgbFBgcArQauBsYGBwCuBrAGxgYHAK4GmAawBgcArwbHBrAGBwCvBsgGxwYHAK8GyQbIBgcArwaxBskGBwCxBsoGyQYHALEGsgbKBgcAsgbLBsoGBwCyBrMGywYHALMGzAbLBgcAswa0BswGBwC0Bs0GzAYHALQGtQbNBgcAtQbOBs0GBwC1BrYGzgYHAM4GtwbPBgcAzga2BrcGBwDPBrgG0AYHAM8Gtwa4BgcA0Aa5BtEGBwDQBrgGuQYHANEGugbSBgcA0Qa5BroGBwDSBrsG0wYHANIGuga7BgcA1Aa7BrwGBwDUBtMGuwYHANUGvAa9BgcA1QbUBrwGBwDWBr0GvgYHANYG1Qa9BgcA1wa+Br8GBwDXBtYGvgYHANgGvwbABgcA2AbXBr8GBwDZBsAGwQYHANkG2AbABgcA2gbBBsIGBwDaBtkGwQYHAMMG2gbCBgcAwwbbBtoGBwDEBtsGwwYHAMQG3AbbBgcAxQbcBsQGBwDFBt0G3AYHAMYG3QbFBgcAxgbeBt0GBwCwBt4GxgYHALAGxwbeBgcA3wYrBiwGBwDfBuAGKwYHAOAGKgYrBgcA4AbhBioGBwDhBikGKgYHAOEG4gYpBgcA4gYoBikGBwDiBuMGKAYHAOMGJwYoBgcA4wbkBicGBwDkBiYGJwYHAOQG5QYmBgcA5QYlBiYGBwDlBuYGJQYHAOYGJAYlBgcA5gbnBiQGBwDnBiMGJAYHAOcG6AYjBgcA6AYiBiMGBwDoBukGIgYHAOkGIQYiBgcA6QbqBiEGBwDqBiAGIQYHAOoG6wYgBgcA6wYfBiAGBwDrBuwGHwYHAOwGNgYfBgcA7AbtBjYGBwDtBjUGNgYHAO0G7gY1BgcA7gY0BjUGBwDuBu8GNAYHAO8GMwY0BgcA7wbwBjMGBwDwBjIGMwYHAPAG8QYyBgcA8QYxBjIGBwDxBvIGMQYHAPIGMAYxBgcA8gbzBjAGBwDzBi8GMAYHAPMG9AYvBgcA9AYuBi8GBwD0BvUGLgYHAPUGLQYuBgcA9Qb2Bi0GBwD2BiwGLQYHAPYG3wYsBgcA9wZRBk8GBwD3BvgGUQYHAOAG+Ab3BgcA4AbfBvgGBwD4BlMGUQYHAPgG+QZTBgcA3wb5BvgGBwDfBvYG+QYHAPkGVQZTBgcA+Qb6BlUGBwD2BvoG+QYHAPYG9Qb6BgcA+gZXBlUGBwD6BvsGVwYHAPUG+wb6BgcA9Qb0BvsGBwD7BlkGVwYHAPsG/AZZBgcA9Ab8BvsGBwD0BvMG/AYHAPwGWwZZBgcA/Ab9BlsGBwDzBv0G/AYHAPMG8gb9BgcA/QZdBlsGBwD9Bv4GXQYHAPIG/gb9BgcA8gbxBv4GBwD+BmAGXQYHAP4G/wZgBgcA8Qb/Bv4GBwDxBvAG/wYHAP8GYgZgBgcA/wYAB2IGBwDwBgAH/wYHAPAG7wYABwcAAAdkBmIGBwAABwEHZAYHAO8GAQcABwcA7wbuBgEHBwABB2YGZAYHAAEHAgdmBgcA7gYCBwEHBwDuBu0GAgcHAAIHNwZmBgcAAgcDBzcGBwDtBgMHAgcHAO0G7AYDBwcAAwc6BjcGBwADBwQHOgYHAOwGBAcDBwcA7AbrBgQHBwAEBzwGOgYHAAQHBQc8BgcA6wYFBwQHBwDrBuoGBQcHAAUHPgY8BgcABQcGBz4GBwDqBgYHBQcHAOoG6QYGBwcABgdABj4GBwAGBwcHQAYHAOkGBwcGBwcA6QboBgcHBwAHB0IGQAYHAAcHCAdCBgcA6AYIBwcHBwDoBucGCAcHAAgHRAZCBgcACAcJB0QGBwDnBgkHCAcHAOcG5gYJBwcACQdGBkQGBwAJBwoHRgYHAOYGCgcJBwcA5gblBgoHBwAKB0cGRgYHAAoHCwdHBgcA5QYLBwoHBwDlBuQGCwcHAAsHSQZHBgcACwcMB0kGBwDkBgwHCwcHAOQG4wYMBwcADAdLBkkGBwAMBw0HSwYHAOMGDQcMBwcA4wbiBg0HBwANB00GSwYHAA0HDgdNBgcA4gYOBw0HBwDiBuEGDgcHAA4HTwZNBgcADgf3Bk8GBwDhBvcGDgcHAOEG4Ab3BgcADwcQBxEHBwAPBxIHEAcHABMHEgcPBwcAEwcUBxIHBwAVBxQHEwcHABUHFgcUBwcAFwcWBxUHBwAXBxgHFgcHABkHGAcXBwcAGQcaBxgHBwAbBxoHGQcHABsHHAcaBwcAHQcbBx4HBwAdBxwHGwcHAB8HHgcgBwcAHwcdBx4HBwAhByAHIgcHACEHHwcgBwcAIwciByQHBwAjByEHIgcHACUHJAcmBwcAJQcjByQHBwAnByYHKAcHACcHJQcmBwcAKQcoByoHBwApBycHKAcHACsHKgcsBwcAKwcpByoHBwAtBywHLgcHAC0HKwcsBwcALwcuBzAHBwAvBy0HLgcHADEHMAcyBwcAMQcvBzAHBwAzBzIHNAcHADMHMQcyBwcANQczBzQHBwA1BzYHMwcHADcHNgc1BwcANwc4BzYHBwA5BzgHNwcHADkHOgc4BwcAOwc6BzkHBwA7BzwHOgcHAD0HPAc7BwcAPQc+BzwHBwARBz4HPQcHABEHEAc+BwcAPgc/B0AHBwA+BxAHPwcHABIHPwcQBwcAEgdBBz8HBwAUB0EHEgcHABQHQgdBBwcAFgdCBxQHBwAWB0MHQgcHABgHQwcWBwcAGAdEB0MHBwAaB0QHGAcHABoHRQdEBwcAHAdFBxoHBwAcB0YHRQcHAEcHHAcdBwcARwdGBxwHBwBIBx0HHwcHAEgHRwcdBwcASQcfByEHBwBJB0gHHwcHAEoHIQcjBwcASgdJByEHBwBLByMHJQcHAEsHSgcjBwcASwcnB0wHBwBLByUHJwcHAEwHKQdNBwcATAcnBykHBwBNBysHTgcHAE0HKQcrBwcATgctB08HBwBOBysHLQcHAE8HLwdQBwcATwctBy8HBwBQBzEHUQcHAFAHLwcxBwcAUQczB1IHBwBRBzEHMwcHADMHUwdSBwcAMwc2B1MHBwA2B1QHUwcHADYHOAdUBwcAOAdVB1QHBwA4BzoHVQcHADoHVgdVBwcAOgc8B1YHBwA8B0AHVgcHADwHPgdABwcAQAdXB1gHBwBABz8HVwcHAD8HWQdXBwcAPwdBB1kHBwBBB1oHWQcHAEEHQgdaBwcAQgdbB1oHBwBCB0MHWwcHAEMHXAdbBwcAQwdEB1wHBwBEB10HXAcHAEQHRQddBwcARQdeB10HBwBFB0YHXgcHAF4HRwdfBwcAXgdGB0cHBwBfB0gHYAcHAF8HRwdIBwcAYAdJB2EHBwBgB0gHSQcHAGEHSgdiBwcAYQdJB0oHBwBiB0sHYwcHAGIHSgdLBwcAYwdMB2QHBwBjB0sHTAcHAGQHTQdlBwcAZAdMB00HBwBlB04HZgcHAGUHTQdOBwcAZgdPB2cHBwBmB04HTwcHAGcHUAdoBwcAZwdPB1AHBwBoB1EHaQcHAGgHUAdRBwcAaQdSB2oHBwBpB1EHUgcHAFIHawdqBwcAUgdTB2sHBwBTB2wHawcHAFMHVAdsBwcAVAdtB2wHBwBUB1UHbQcHAFUHbgdtBwcAVQdWB24HBwBWB1gHbgcHAFYHQAdYBwcAWAdvB3AHBwBYB1cHbwcHAFkHbwdXBwcAWQdxB28HBwBaB3EHWQcHAFoHcgdxBwcAWwdyB1oHBwBbB3MHcgcHAFwHcwdbBwcAXAd0B3MHBwBdB3QHXAcHAF0HdQd0BwcAXgd1B10HBwBeB3YHdQcHAHcHXgdfBwcAdwd2B14HBwB4B18HYAcHAHgHdwdfBwcAeQdgB2EHBwB5B3gHYAcHAHoHYQdiBwcAegd5B2EHBwB7B2IHYwcHAHsHegdiBwcAewdkB3wHBwB7B2MHZAcHAHwHZQd9BwcAfAdkB2UHBwB9B2YHfgcHAH0HZQdmBwcAfgdnB38HBwB+B2YHZwcHAH8HaAeABwcAfwdnB2gHBwCAB2kHgQcHAIAHaAdpBwcAgQdqB4IHBwCBB2kHagcHAGoHgweCBwcAagdrB4MHBwBrB4QHgwcHAGsHbAeEBwcAbAeFB4QHBwBsB20HhQcHAG0HhgeFBwcAbQduB4YHBwBuB3AHhgcHAG4HWAdwBwcAcAeHB4gHBwBwB28HhwcHAG8HiQeHBwcAbwdxB4kHBwBxB4oHiQcHAHEHcgeKBwcAcgeLB4oHBwByB3MHiwcHAHMHjAeLBwcAcwd0B4wHBwB0B40HjAcHAHQHdQeNBwcAdQeOB40HBwB1B3YHjgcHAI4HdwePBwcAjgd2B3cHBwCPB3gHkAcHAI8Hdwd4BwcAkAd5B5EHBwCQB3gHeQcHAJEHegeSBwcAkQd5B3oHBwCSB3sHkwcHAJIHegd7BwcAkwd8B5QHBwCTB3sHfAcHAJQHfQeVBwcAlAd8B30HBwCVB34HlgcHAJUHfQd+BwcAlgd/B5cHBwCWB34HfwcHAJcHgAeYBwcAlwd/B4AHBwCYB4EHmQcHAJgHgAeBBwcAmQeCB5oHBwCZB4EHggcHAIIHmweaBwcAggeDB5sHBwCDB5wHmwcHAIMHhAecBwcAhAedB5wHBwCEB4UHnQcHAIUHngedBwcAhQeGB54HBwCGB4gHngcHAIYHcAeIBwcAhwefB4gHBwCHB6AHnwcHAIcHoQegBwcAhweJB6EHBwCJB6IHoQcHAIkHigeiBwcAigejB6IHBwCKB4sHowcHAIsHpAejBwcAiweMB6QHBwCMB6UHpAcHAIwHjQelBwcAjQemB6UHBwCNB44HpgcHAKYHjwenBwcApgeOB48HBwCnB5AHqAcHAKcHjweQBwcAqAeRB6kHBwCoB5AHkQcHAKkHkgeqBwcAqQeRB5IHBwCqB5MHqwcHAKoHkgeTBwcArAeTB5QHBwCsB6sHkwcHAK0HlAeVBwcArQesB5QHBwCuB5UHlgcHAK4HrQeVBwcArweWB5cHBwCvB64HlgcHALAHlweYBwcAsAevB5cHBwCxB5gHmQcHALEHsAeYBwcAsgeZB5oHBwCyB7EHmQcHAJsHsgeaBwcAmwezB7IHBwCcB7MHmwcHAJwHtAezBwcAnQe0B5wHBwCdB7UHtAcHAJ4HtQedBwcAnge2B7UHBwCIB7YHngcHAIgHnwe2BwcAnwfCBb8FBwCfB6AHwgUHAKAHwwXCBQcAoAehB8MFBwChB8UFwwUHAKEHogfFBQcAogfHBcUFBwCiB6MHxwUHAKMHyQXHBQcAowekB8kFBwCkB8sFyQUHAKQHpQfLBQcApQfNBcsFBwClB6YHzQUHAM0FpwfQBQcAzQWmB6cHBwDQBagH0gUHANAFpweoBwcA0gWpB9QFBwDSBagHqQcHANQFqgfWBQcA1AWpB6oHBwDWBasH2AUHANYFqgerBwcA2AWsB9kFBwDYBasHrAcHANkFrQfbBQcA2QWsB60HBwDbBa4H3QUHANsFrQeuBwcA3QWvB98FBwDdBa4HrwcHAN8FsAfhBQcA3wWvB7AHBwDhBbEH4wUHAOEFsAexBwcA4wWyB+UFBwDjBbEHsgcHALIH6AXlBQcAsgezB+gFBwCzB+oF6AUHALMHtAfqBQcAtAfsBeoFBwC0B7UH7AUHALUH7gXsBQcAtQe2B+4FBwC2B78F7gUHALYHnwe/BQcAxwa3B7gHBwDHBsgGtwcHAMgGuQe3BwcAyAbJBrkHBwDJBroHuQcHAMkGyga6BwcAyga7B7oHBwDKBssGuwcHAMsGvAe7BwcAywbMBrwHBwDMBr0HvAcHAMwGzQa9BwcAzQa+B70HBwDNBs4GvgcHAL4Hzwa/BwcAvgfOBs8GBwC/B9AGwAcHAL8HzwbQBgcAwAfRBsEHBwDAB9AG0QYHAMEH0gbCBwcAwQfRBtIGBwDCB9MGwwcHAMIH0gbTBgcAwwfUBsQHBwDDB9MG1AYHAMQH1QbFBwcAxAfUBtUGBwDFB9YGxgcHAMUH1QbWBgcAxgfXBscHBwDGB9YG1wYHAMcH2AbIBwcAxwfXBtgGBwDIB9kGyQcHAMgH2AbZBgcAyQfaBsoHBwDJB9kG2gYHANoGywfKBwcA2gbbBssHBwDbBswHywcHANsG3AbMBwcA3AbNB8wHBwDcBt0GzQcHAN0GzgfNBwcA3QbeBs4HBwDeBrgHzgcHAN4Gxwa4BwcAtwfPB7gHBwC3B9AHzwcHALcH0QfQBwcAtwe5B9EHBwC5B9IH0QcHALkHugfSBwcAugfTB9IHBwC6B7sH0wcHALsH1AfTBwcAuwe8B9QHBwC8B9UH1AcHALwHvQfVBwcAvQfWB9UHBwC9B74H1gcHANYHvwfXBwcA1ge+B78HBwDXB8AH2AcHANcHvwfABwcA2AfBB9kHBwDYB8AHwQcHANkHwgfaBwcA2QfBB8IHBwDaB8MH2wcHANoHwgfDBwcA3AfDB8QHBwDcB9sHwwcHAN0HxAfFBwcA3QfcB8QHBwDeB8UHxgcHAN4H3QfFBwcA3wfGB8cHBwDfB94HxgcHAOAHxwfIBwcA4AffB8cHBwDhB8gHyQcHAOEH4AfIBwcA4gfJB8oHBwDiB+EHyQcHAMsH4gfKBwcAywfjB+IHBwDMB+MHywcHAMwH5AfjBwcAzQfkB8wHBwDNB+UH5AcHAM4H5QfNBwcAzgfmB+UHBwC4B+YHzgcHALgHzwfmBwcAzwfnB+gHBwDPB9AH5wcHANAH6QfnBwcA0AfRB+kHBwDRB+oH6QcHANEH0gfqBwcA0gfrB+oHBwDSB9MH6wcHANMH7AfrBwcA0wfUB+wHBwDUB+0H7AcHANQH1QftBwcA1QfuB+0HBwDVB9YH7gcHAO4H1wfvBwcA7gfWB9cHBwDvB9gH8AcHAO8H1wfYBwcA8AfZB/EHBwDwB9gH2QcHAPEH2gfyBwcA8QfZB9oHBwDyB9sH8wcHAPIH2gfbBwcA8wfcB/QHBwDzB9sH3AcHAPQH3Qf1BwcA9AfcB90HBwD1B94H9gcHAPUH3QfeBwcA9gffB/cHBwD2B94H3wcHAPcH4Af4BwcA9wffB+AHBwD4B+EH+QcHAPgH4AfhBwcA+QfiB/oHBwD5B+EH4gcHAOIH+wf6BwcA4gfjB/sHBwDjB/wH+wcHAOMH5Af8BwcA5Af9B/wHBwDkB+UH/QcHAOUH/gf9BwcA5QfmB/4HBwDmB+gH/gcHAOYHzwfoBwcA/wcACAEIBwD/BwIIAAgHAAIIAwgACAcAAggECAMIBwAFCAEIBggHAAUI/wcBCAcABwgICAkIBwAHCAoICAgHAAoICwgICAcACggMCAsIBwANCAkIDggHAA0IBwgJCAcADAgPCAsIBwAMCBAIDwgHABEIDggSCAcAEQgNCA4IBwAQCBMIDwgHABAIFAgTCAcAFQgSCBYIBwAVCBEIEggHABQIFwgTCAcAFAgYCBcIBwAZCBYIGggHABkIFQgWCAcABAgaCAMIBwAECBkIGggHABgIBggXCAcAGAgFCAYIBwD/BxsIAggHAP8HHAgbCAcAGwgECAIIBwAbCB0IBAgHAAUIHAj/BwcABQgeCBwIBwAfCAoIBwgHAB8IIAgKCAcACgghCAwIBwAKCCAIIQgHACIIBwgNCAcAIggfCAcIBwAMCCMIEAgHAAwIIQgjCAcAJAgNCBEIBwAkCCIIDQgHABAIJQgUCAcAEAgjCCUIBwAmCBEIFQgHACYIJAgRCAcAFAgnCBgIBwAUCCUIJwgHACgIFQgZCAcAKAgmCBUIBwAdCBkIBAgHAB0IKAgZCAcAGAgeCAUIBwAYCCcIHggHACkIGwgcCAcAKQgqCBsIBwAqCB0IGwgHACoIKwgdCAcALAgcCB4IBwAsCCkIHAgHAC0IIAgfCAcALQguCCAIBwAuCCEIIAgHAC4ILwghCAcAMAgfCCIIBwAwCC0IHwgHAC8IIwghCAcALwgxCCMIBwAyCCIIJAgHADIIMAgiCAcAMQglCCMIBwAxCDMIJQgHADQIJAgmCAcANAgyCCQIBwAzCCcIJQgHADMINQgnCAcANggmCCgIBwA2CDQIJggHACsIKAgdCAcAKwg2CCgIBwA1CB4IJwgHADUILAgeCAcANwgqCCkIBwA3CDgIKggHADgIKwgqCAcAOAg5CCsIBwA6CCkILAgHADoINwgpCAcAOwguCC0IBwA7CDwILggHADwILwguCAcAPAg9CC8IBwA+CC0IMAgHAD4IOwgtCAcAPQgxCC8IBwA9CD8IMQgHAEAIMAgyCAcAQAg+CDAIBwA/CDMIMQgHAD8IQQgzCAcAQggyCDQIBwBCCEAIMggHAEEINQgzCAcAQQhDCDUIBwBECDQINggHAEQIQgg0CAcAOQg2CCsIBwA5CEQINggHAEMILAg1CAcAQwg6CCwIBwBFCDgINwgHAEUIRgg4CAcARgg5CDgIBwBGCEcIOQgHAEgINwg6CAcASAhFCDcIBwBJCDwIOwgHAEkISgg8CAcASgg9CDwIBwBKCEsIPQgHAEwIOwg+CAcATAhJCDsIBwBLCD8IPQgHAEsITQg/CAcATgg+CEAIBwBOCEwIPggHAE0IQQg/CAcATQhPCEEIBwBQCEAIQggHAFAITghACAcATwhDCEEIBwBPCFEIQwgHAFIIQghECAcAUghQCEIIBwBHCEQIOQgHAEcIUghECAcAUQg6CEMIBwBRCEgIOggHAFMIRghFCAcAUwhUCEYIBwBUCEcIRggHAFQIVQhHCAcAVghFCEgIBwBWCFMIRQgHAFcISghJCAcAVwhYCEoIBwBYCEsISggHAFgIWQhLCAcAWghJCEwIBwBaCFcISQgHAFkITQhLCAcAWQhbCE0IBwBcCEwITggHAFwIWghMCAcAWwhPCE0IBwBbCF0ITwgHAF4ITghQCAcAXghcCE4IBwBdCFEITwgHAF0IXwhRCAcAYAhQCFIIBwBgCF4IUAgHAFUIUghHCAcAVQhgCFIIBwBfCEgIUQgHAF8IVghICAcAYQhUCFMIBwBhCGIIVAgHAGIIVQhUCAcAYghjCFUIBwBkCFMIVggHAGQIYQhTCAcAZQhYCFcIBwBlCGYIWAgHAGYIWQhYCAcAZghnCFkIBwBoCFcIWggHAGgIZQhXCAcAZwhbCFkIBwBnCGkIWwgHAGoIWghcCAcAaghoCFoIBwBpCF0IWwgHAGkIawhdCAcAbAhcCF4IBwBsCGoIXAgHAGsIXwhdCAcAawhtCF8IBwBuCF4IYAgHAG4IbAheCAcAYwhgCFUIBwBjCG4IYAgHAG0IVghfCAcAbQhkCFYIBwBvCGIIYQgHAG8IcAhiCAcAcAhjCGIIBwBwCHEIYwgHAHIIYQhkCAcAcghvCGEIBwBzCGYIZQgHAHMIdAhmCAcAdAhnCGYIBwB0CHUIZwgHAHYIZQhoCAcAdghzCGUIBwB1CGkIZwgHAHUIdwhpCAcAeAhoCGoIBwB4CHYIaAgHAHcIawhpCAcAdwh5CGsIBwB6CGoIbAgHAHoIeAhqCAcAeQhtCGsIBwB5CHsIbQgHAHwIbAhuCAcAfAh6CGwIBwBxCG4IYwgHAHEIfAhuCAcAewhkCG0IBwB7CHIIZAgHAH0IcAhvCAcAfQh+CHAIBwB+CHEIcAgHAH4IfwhxCAcAgAhvCHIIBwCACH0IbwgHAIEIdAhzCAcAgQiCCHQIBwCCCHUIdAgHAIIIgwh1CAcAhAhzCHYIBwCECIEIcwgHAIMIdwh1CAcAgwiFCHcIBwCGCHYIeAgHAIYIhAh2CAcAhQh5CHcIBwCFCIcIeQgHAIgIeAh6CAcAiAiGCHgIBwCHCHsIeQgHAIcIiQh7CAcAigh6CHwIBwCKCIgIeggHAH8IfAhxCAcAfwiKCHwIBwCJCHIIewgHAIkIgAhyCAcAiwh+CH0IBwCLCIwIfggHAIwIfwh+CAcAjAiNCH8IBwCOCH0IgAgHAI4Iiwh9CAcAjwiCCIEIBwCPCJAIgggHAJAIgwiCCAcAkAiRCIMIBwCSCIEIhAgHAJIIjwiBCAcAkQiFCIMIBwCRCJMIhQgHAJQIhAiGCAcAlAiSCIQIBwCTCIcIhQgHAJMIlQiHCAcAlgiGCIgIBwCWCJQIhggHAJUIiQiHCAcAlQiXCIkIBwCYCIgIiggHAJgIlgiICAcAjQiKCH8IBwCNCJgIiggHAJcIgAiJCAcAlwiOCIAIBwCZCIwIiwgHAJkImgiMCAcAmgiNCIwIBwCaCJsIjQgHAJwIiwiOCAcAnAiZCIsIBwCdCJAIjwgHAJ0IngiQCAcAngiRCJAIBwCeCJ8IkQgHAKAIjwiSCAcAoAidCI8IBwCfCJMIkQgHAJ8IoQiTCAcAogiSCJQIBwCiCKAIkggHAKEIlQiTCAcAoQijCJUIBwCkCJQIlggHAKQIogiUCAcAowiXCJUIBwCjCKUIlwgHAKYIlgiYCAcApgikCJYIBwCbCJgIjQgHAJsIpgiYCAcApQiOCJcIBwClCJwIjggHAKcImgiZCAcApwioCJoIBwCoCJsImggHAKgIqQibCAcAqgiZCJwIBwCqCKcImQgHAKsIngidCAcAqwisCJ4IBwCsCJ8InggHAKwIrQifCAcArgidCKAIBwCuCKsInQgHAK0IoQifCAcArQivCKEIBwCwCKAIoggHALAIrgigCAcArwijCKEIBwCvCLEIowgHALIIogikCAcAsgiwCKIIBwCxCKUIowgHALEIswilCAcAtAikCKYIBwC0CLIIpAgHAKkIpgibCAcAqQi0CKYIBwCzCJwIpQgHALMIqgicCAcAtQioCKcIBwC1CLYIqAgHALYIqQioCAcAtgi3CKkIBwC4CKcIqggHALgItQinCAcAuQisCKsIBwC5CLoIrAgHALoIrQisCAcAugi7CK0IBwC8CKsIrggHALwIuQirCAcAuwivCK0IBwC7CL0IrwgHAL4IrgiwCAcAvgi8CK4IBwC9CLEIrwgHAL0IvwixCAcAwAiwCLIIBwDACL4IsAgHAL8IswixCAcAvwjBCLMIBwDCCLIItAgHAMIIwAiyCAcAtwi0CKkIBwC3CMIItAgHAMEIqgizCAcAwQi4CKoIBwDDCLYItQgHAMMIxAi2CAcAxAi3CLYIBwDECMUItwgHAMYItQi4CAcAxgjDCLUIBwDHCLoIuQgHAMcIyAi6CAcAyAi7CLoIBwDICMkIuwgHAMoIuQi8CAcAygjHCLkIBwDJCL0IuwgHAMkIywi9CAcAzAi8CL4IBwDMCMoIvAgHAMsIvwi9CAcAywjNCL8IBwDOCL4IwAgHAM4IzAi+CAcAzQjBCL8IBwDNCM8IwQgHANAIwAjCCAcA0AjOCMAIBwDFCMIItwgHAMUI0AjCCAcAzwi4CMEIBwDPCMYIuAgHANEIxAjDCAcA0QjSCMQIBwDSCAEIAAgHANII0QgBCAcA0gjFCMQIBwDSCNMIxQgHANMIAAgDCAcA0wjSCAAIBwDUCMMIxggHANQI0QjDCAcA0QgGCAEIBwDRCNQIBggHANUIyAjHCAcA1QjWCMgIBwDWCNcI2AgHANYI1QjXCAcA1gjJCMgIBwDWCNkIyQgHANkI2AjaCAcA2QjWCNgIBwDbCMcIyggHANsI1QjHCAcA1QjcCNcIBwDVCNsI3AgHANkIywjJCAcA2QjdCMsIBwDdCNoIDwgHAN0I2QjaCAcA3gjKCMwIBwDeCNsIyggHANsIEgjcCAcA2wjeCBIIBwDdCM0IywgHAN0I3wjNCAcA3wgPCBMIBwDfCN0IDwgHAOAIzAjOCAcA4AjeCMwIBwDeCBYIEggHAN4I4AgWCAcA3wjPCM0IBwDfCOEIzwgHAOEIEwgXCAcA4QjfCBMIBwDiCM4I0AgHAOII4AjOCAcA4AgaCBYIBwDgCOIIGggHANMI0AjFCAcA0wjiCNAIBwDiCAMIGggHAOII0wgDCAcA4QjGCM8IBwDhCNQIxggHANQIFwgGCAcA1AjhCBcIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ0wQdUDAAByYXY0LXNoaWVsZHMA4AFWDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ8wQZIDAAByYXY0LXRpcmUAwAE2DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kPSg9LD0wPTQ9OD08PUA9RD1IPUw9UD1UPVg9XD1gPWQ9aD1sPXA9dD14PXw9gD2EPYg9jD2QPZQ9mD2cPaA9pD2oPaw9sD20Pbg9vD3APcQ9yD3MPdA91D3YPdw94D3kPeg97D3wPfQ9+D38PgA+BD4IPgw+ED4UPhg+HD4gPiQ+KD4sPjA+ND44Pjw+QD5EPkg+TD5QPlQ+WD5cPmA+ZD5oPmw+cD50Png+fD6APoQ+iD6MPpA+lD6YPpw+oD6kPqg+rD6wPrQ+uD68PsA+xD7IPsw+0D7UPtg+3D7gPuQ+6D7sPvA+9D74Pvw/AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MP1A/VD9YP1w/YD9kP2g/bD9wP3Q/eD98P4A/hD+IP4w/kD+UP5g/nD+gP6Q/qD+sP7A/tD+4P7w/wD/EP8g/zD/QP9Q/2D/cP+A/5D/oP+w/8D/0P/g//DwAQARACEAMQBBAFEAYQBxAIEAkQChALEAwQDRAOEA8QEBAREBIQExAUEBUQFhAXEBgQGRAaEBsQHBAdEB4QHxAgECEQIhAjECQQJRAmECcQKBApECoQKxAsEC0QLhAvEDAQMRAyEDMQNBA1EDYQNxA4EDkQOhA7EDwQPRA+ED8QQBBBEEIQQxBEEEUQRhBHEEgQSRBKEEsQTBBNEE4QTxBQEFEQUhBTEFQQVRBWEFcQWBBZEFoQWxBcEF0QXhBfEGAQYRBiEGMQZBBlEGYQZxBoEGkQahBrEGwQbRBuEG8QcBBxEHIQcxB0EHUQdhB3EHgQeRB6EHsQfBB9EH4QfxCAEIEQghCDEIQQhRCGEIcQiBCJEIoQixCMEI0QjhCPEJAQkRCSEJMQlBCVEJYQlxCYEJkQmhCbEJwQnRCeEJ8QoBChEKIQoxCkEKUQphCnEKgQqRCqEKsQrBCtEK4QrxCwELEQshCzELQQtRC2ELcQuBC5ELoQuxC8EL0QvhC/EMAQwRDCEMMQxBDFEMYQxxDIEMkQyhDLEMwQzRDOEM8Q0BDRENIQ0xDUENUQ1hDXENgQ2RDaENsQ3BDdEN4Q3xDgEOEQ4hDjEOQQ5RDmEOcQ6BDpEOoQ6xDsEO0Q7hDvEPAQ8RDyEPMQ9BD1EFBB3kMAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA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\');\n\n;// CONCATENATED MODULE: ./js/objects/CarObject.js\n\n\n\n\nconst CAR_COLOR = 0x0088ff;\nconst WHEEL_COLOR = 0xff8800;\n\nclass CarObject extends THREE.Object3D {\n constructor(car) {\n super();\n\n this.car = car;\n\n this.buildCar2D();\n this.buildCar3D();\n }\n\n buildCar2D() {\n const carMesh = new THREE.Mesh(\n new THREE.PlaneGeometry(Car_Car.HALF_CAR_LENGTH * 2, Car_Car.HALF_CAR_WIDTH * 2),\n new THREE.MeshBasicMaterial({ color: CAR_COLOR, depthTest: false, transparent: true, opacity: 0.7 })\n );\n carMesh.rotation.x = -Math.PI / 2;\n carMesh.layers.set(2);\n this.add(carMesh);\n\n const wheelGeometry = new THREE.PlaneGeometry(Car_Car.HALF_WHEEL_LENGTH * 2, Car_Car.HALF_WHEEL_WIDTH * 2);\n const wheelMaterial = new THREE.MeshBasicMaterial({ color: WHEEL_COLOR, depthTest: false, transparent: true, opacity: 0.7 })\n\n this.lfWheel2D = new THREE.Mesh(wheelGeometry, wheelMaterial);\n this.lfWheel2D.renderOrder = 1;\n this.lfWheel2D.position.set(Car_Car.FRONT_AXLE_POS, 0, Car_Car.WHEEL_LATERAL_POS);\n this.lfWheel2D.rotation.x = -Math.PI / 2;\n this.lfWheel2D.layers.set(2);\n this.add(this.lfWheel2D);\n\n this.rfWheel2D = new THREE.Mesh(wheelGeometry, wheelMaterial);\n this.rfWheel2D.renderOrder = 1;\n this.rfWheel2D.position.set(Car_Car.FRONT_AXLE_POS, 0, -Car_Car.WHEEL_LATERAL_POS);\n this.rfWheel2D.rotation.x = -Math.PI / 2;\n this.rfWheel2D.layers.set(2);\n this.add(this.rfWheel2D);\n\n const lrWheel = new THREE.Mesh(wheelGeometry, wheelMaterial);\n lrWheel.renderOrder = 1;\n lrWheel.position.set(Car_Car.REAR_AXLE_POS, 0, Car_Car.WHEEL_LATERAL_POS);\n lrWheel.rotation.x = -Math.PI / 2;\n lrWheel.layers.set(2);\n this.add(lrWheel);\n\n const rrWheel = new THREE.Mesh(wheelGeometry, wheelMaterial);\n rrWheel.renderOrder = 1;\n rrWheel.position.set(Car_Car.REAR_AXLE_POS, 0, -Car_Car.WHEEL_LATERAL_POS);\n rrWheel.rotation.x = -Math.PI / 2;\n rrWheel.layers.set(2);\n this.add(rrWheel);\n }\n\n buildCar3D() {\n const loader = new TDSLoader();\n loader.skipMaps = true;\n\n loader.load(suv, object => {\n object.layers.set(3);\n object.rotation.z = Math.PI / 2;\n object.rotation.x = -Math.PI / 2;\n\n const box = (new THREE.Box3()).setFromObject(object);\n const scaleLength = Car_Car.HALF_CAR_LENGTH * 2 / (box.max.x - box.min.x);\n const scaleWidth = Car_Car.HALF_CAR_WIDTH * 2 / (box.max.z - box.min.z);\n object.scale.set(scaleWidth, scaleLength, (scaleWidth + scaleLength) / 2);\n\n box.setFromObject(object);\n object.position.setX(-(box.max.x + box.min.x) / 2);\n object.position.setY(-box.min.y);\n\n this.add(object);\n\n const carMaterial = new THREE.MeshToonMaterial({ color: 0x0088ff });\n const wheelMaterial = new THREE.MeshToonMaterial({ color: 0xff8800 });\n\n object.traverse(child => {\n if (child instanceof THREE.Mesh) {\n child.layers.set(3);\n child.material = [\'Toyota_RA7\', \'Toyota_RA8\', \'Toyota_RA9\', \'Toyota_R10\'].includes(child.name) ? wheelMaterial : carMaterial;\n\n if (child.name == \'Toyota_RA7\')\n this.lfWheel3D = child;\n else if (child.name == \'Toyota_RA8\')\n this.rfWheel3D = child;\n }\n });\n\n [this.lfWheel3D, this.rfWheel3D].forEach(wheel => {\n wheel.geometry.computeBoundingBox();\n wheel.geometry.center();\n wheel.position.setY(wheel.position.y - 36);\n wheel.position.setZ(wheel.position.z + 36);\n });\n });\n }\n\n updateMatrix() {\n this.updateCar();\n super.updateMatrix();\n }\n\n updateCar() {\n const carPosition = this.car.position;\n this.position.set(carPosition.x, 0, carPosition.y);\n this.rotation.y = -this.car.rotation;\n\n const wheelAngle = this.car.wheelAngle;\n\n // Adding the wheels to the car object can trigger this function in some browsers\n // before the other wheels are added, so check them first.\n if (this.lfWheel2D) this.lfWheel2D.rotation.z = -wheelAngle;\n if (this.rfWheel2D) this.rfWheel2D.rotation.z = -wheelAngle;\n if (this.lfWheel3D) this.lfWheel3D.rotation.y = wheelAngle;\n if (this.rfWheel3D) this.rfWheel3D.rotation.y = wheelAngle;\n }\n}\n\n;// CONCATENATED MODULE: ./js/objects/StaticObstacleObject.js\nconst COLOR = 0xdd0000;\nconst HEIGHT = 5;\n\nclass StaticObstacleObject extends THREE.Object3D {\n constructor(staticObstacle) {\n super();\n\n const mesh2D = new THREE.Mesh(\n new THREE.PlaneGeometry(staticObstacle.width, staticObstacle.height),\n new THREE.MeshBasicMaterial({ color: COLOR, depthTest: false, transparent: true, opacity: 0.5 })\n );\n mesh2D.rotation.x = -Math.PI / 2;\n mesh2D.layers.set(2);\n this.add(mesh2D);\n\n const stoneTexture = new THREE.TextureLoader().load(\'http://127.0.0.1:8008/images/stone.jpg\');\n stoneTexture.wrapS = THREE.RepeatWrapping\n stoneTexture.wrapT = THREE.RepeatWrapping\n stoneTexture.magFilter = THREE.NearestFilter\n\n const mesh3D = new THREE.Mesh(\n new THREE.BoxBufferGeometry(staticObstacle.width, HEIGHT, staticObstacle.height),\n new THREE.MeshToonMaterial({ map: stoneTexture, transparent: true, opacity: 0.9 })\n );\n mesh3D.position.setY(HEIGHT / 2);\n mesh3D.layers.set(3);\n this.add(mesh3D);\n\n this.rotation.y = -staticObstacle.rot;\n this.position.set(staticObstacle.pos.x, 0, staticObstacle.pos.y);\n }\n}\n\n;// CONCATENATED MODULE: ./js/objects/DynamicObstacleObject.js\nclass DynamicObstacleObject extends THREE.Object3D {\n constructor(dynamicObstacle, lanePath) {\n super();\n\n this.dynamicObstacle = dynamicObstacle;\n this.lanePath = lanePath;\n this.size = dynamicObstacle.size;\n\n const colors = {\n vehicle: 0xff8800,\n cyclist: 0x00ccff,\n pedestrian: 0xffdd00\n };\n\n const heights = {\n vehicle: 2.0,\n cyclist: 1.8,\n pedestrian: 1.8\n };\n\n const mesh2D = new THREE.Mesh(\n new THREE.PlaneGeometry(dynamicObstacle.size.w * 2, dynamicObstacle.size.h * 2),\n new THREE.MeshBasicMaterial({ color: colors[dynamicObstacle.type] || 0xff8800, depthTest: false, transparent: true, opacity: 0.7 })\n );\n mesh2D.rotation.x = -Math.PI / 2;\n mesh2D.layers.set(2);\n this.add(mesh2D);\n\n const mesh3D = new THREE.Mesh(\n new THREE.BoxBufferGeometry(dynamicObstacle.size.w * 2, heights[dynamicObstacle.type] || 1.5, dynamicObstacle.size.h * 2),\n new THREE.MeshToonMaterial({ color: colors[dynamicObstacle.type] || 0xff8800, transparent: true, opacity: 0.7 })\n );\n mesh3D.position.setY((heights[dynamicObstacle.type] || 1.5) / 2);\n mesh3D.layers.set(3);\n this.add(mesh3D);\n }\n\n update(time) {\n const slPos = this.dynamicObstacle.positionAtTime(time);\n\n // Sample just the station this dynamic obstacle is at\n const [sample] = this.lanePath.sampleStations(slPos.x, 1, 0);\n\n if (sample === undefined) {\n this.visible = false;\n return;\n }\n\n const rot = sample.rot;\n const pos = THREE.Vector2.fromAngle(rot + Math.PI / 2).multiplyScalar(slPos.y).add(sample.pos);\n\n this.position.set(pos.x, 0, pos.y);\n this.rotation.y = -rot;\n\n super.updateMatrix();\n\n this.visible = slPos.x >= 0;\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/LanePath.js\nconst halfLaneWidth = 3.7;\n\nconst centerlineGeometry = new THREE.Geometry();\nconst leftBoundaryGeometry = new THREE.Geometry();\nconst rightBoundaryGeometry = new THREE.Geometry();\n\nclass LanePath {\n static hydrate(obj) {\n Object.setPrototypeOf(obj, LanePath.prototype);\n }\n\n constructor() {\n this.anchors = [];\n this.centerlines = [];\n this.sampleLengths = [];\n this.arcLengths = [];\n this.leftBoundaries = [];\n this.rightBoundaries = [];\n }\n\n get centerline() {\n return [].concat(...this.centerlines);\n }\n\n get leftBoundary() {\n return [].concat(...this.leftBoundaries);\n }\n\n get rightBoundary() {\n return [].concat(...this.rightBoundaries);\n }\n\n get arcLength() {\n return this.arcLengths.reduce((sum, l) => sum + l, 0);\n }\n\n sampleStations(startStation, num, interval) {\n const samples = [];\n let anchorIndex = 0;\n let sampleIndex = 0;\n let totalLength = 0;\n let nextStation = startStation;\n\n while (totalLength + this.arcLengths[anchorIndex] < nextStation) {\n totalLength += this.arcLengths[anchorIndex];\n\n if (++anchorIndex >= this.arcLengths.length)\n return samples;\n }\n\n for (let i = 0; i < num; i++) {\n let length = this.sampleLengths[anchorIndex][sampleIndex];\n while (totalLength + length < nextStation) {\n totalLength += length;\n\n if (++sampleIndex >= this.sampleLengths[anchorIndex].length) {\n sampleIndex = 0;\n\n if (++anchorIndex >= this.sampleLengths.length)\n return samples;\n }\n\n length = this.sampleLengths[anchorIndex][sampleIndex];\n }\n\n const [p0, p1, p2, p3] = this.anchorsForSplineIndex(anchorIndex);\n const weight = (sampleIndex + (nextStation - totalLength) / length) / this.sampleLengths[anchorIndex].length;\n const pos = catmullRomVec(weight, p0, p1, p2, p3);\n const tangent = tangentAt(weight, p0, p1, p2, p3);\n const rot = Math.atan2(tangent.y, tangent.x);\n const curv = curvatureAt(weight, p0, p1, p2, p3);\n\n samples.push({ pos, rot, curv });\n nextStation += interval;\n }\n\n return samples;\n }\n\n stationLatitudeFromPosition(position, aroundAnchorIndex = null) {\n const [anchorIndex, sampleIndex, sampleStation, prevSampleStation] = this._findClosestSample(position, aroundAnchorIndex);\n\n if (anchorIndex === undefined) return [0, 0, 0];\n\n let prevPoint;\n let nextPoint;\n let prevStation;\n let nextStation;\n\n if (anchorIndex == 0 && sampleIndex == 0) {\n prevPoint = this.centerlines[anchorIndex][sampleIndex];\n nextPoint = this.centerlines[anchorIndex][sampleIndex + 1];\n prevStation = 0;\n nextStation = this.sampleLengths[anchorIndex][sampleIndex];\n } else if (anchorIndex == this.centerlines.length - 1 && sampleIndex == this.centerlines[anchorIndex].length - 1) {\n prevPoint = this.centerlines[anchorIndex][sampleIndex - 1];\n nextPoint = this.centerlines[anchorIndex][sampleIndex];\n prevStation = prevSampleStation;\n nextStation = sampleStation;\n } else {\n prevPoint = sampleIndex == 0 ? this.centerlines[anchorIndex - 1][this.centerlines[anchorIndex - 1].length - 1] : this.centerlines[anchorIndex][sampleIndex - 1];\n nextPoint = sampleIndex == this.centerlines[anchorIndex].length - 1 ? this.centerlines[anchorIndex + 1][0] : this.centerlines[anchorIndex][sampleIndex + 1];\n\n const possibleNext = this.centerlines[anchorIndex][sampleIndex];\n const possibleProgress = position.clone().sub(prevPoint).dot(possibleNext.clone().sub(prevPoint)) / prevPoint.distanceToSquared(possibleNext);\n\n if (possibleProgress < 1) {\n nextPoint = possibleNext;\n prevStation = prevSampleStation;\n nextStation = sampleStation;\n } else {\n prevPoint = possibleNext;\n prevStation = sampleStation;\n nextStation = sampleStation + this.sampleLengths[anchorIndex][sampleIndex];\n }\n }\n\n const progress = Math.clamp(position.clone().sub(prevPoint).dot(nextPoint.clone().sub(prevPoint)) / prevPoint.distanceToSquared(nextPoint), 0, 1);\n const projectedPosition = nextPoint.clone().sub(prevPoint).multiplyScalar(progress).add(prevPoint);\n\n const station = prevStation + (nextStation - prevStation) * progress;\n const latitude = Math.sign((nextPoint.x - prevPoint.x) * (position.y - prevPoint.y) - (nextPoint.y - prevPoint.y) * (position.x - prevPoint.x)) * position.distanceTo(projectedPosition);\n\n return [station, latitude, anchorIndex];\n }\n\n _findClosestSample(position, aroundAnchorIndex = null) {\n let closest = Number.POSITIVE_INFINITY;\n let bestAnchorIndex;\n let bestSampleIndex;\n let bestStation;\n let bestPrevStation;\n\n let currStation = 0;\n let prevStation = 0;\n\n let startAnchorIndex = 0;\n let endAnchorIndex = this.centerlines.length - 1;\n\n if (aroundAnchorIndex !== null) {\n startAnchorIndex = Math.max(0, aroundAnchorIndex - 2);\n endAnchorIndex = Math.min(this.centerlines.length - 1, aroundAnchorIndex + 2);\n }\n\n if (startAnchorIndex > 0) {\n for (let anchorIndex = 0; anchorIndex < startAnchorIndex; anchorIndex++) {\n currStation += this.arcLengths[anchorIndex];\n }\n\n prevStation = currStation - this.sampleLengths[startAnchorIndex - 1][this.sampleLengths[startAnchorIndex - 1].length - 1];\n }\n\n for (let anchorIndex = startAnchorIndex; anchorIndex <= endAnchorIndex; anchorIndex++) {\n const centerline = this.centerlines[anchorIndex];\n for (let sampleIndex = 0; sampleIndex < centerline.length; sampleIndex++) {\n const distSq = position.distanceToSquared(centerline[sampleIndex]);\n if (distSq < closest) {\n closest = distSq;\n bestAnchorIndex = anchorIndex;\n bestSampleIndex = sampleIndex;\n bestStation = currStation;\n bestPrevStation = prevStation;\n }\n\n prevStation = currStation;\n currStation += this.sampleLengths[anchorIndex][sampleIndex];\n }\n }\n\n return [bestAnchorIndex, bestSampleIndex, bestStation, bestPrevStation];\n }\n\n addAnchor(position, resample = true) {\n const index = this.anchors.push(position) - 1;\n\n if (resample) {\n for (let i = index - 2; i < index; i++)\n this.resample(i);\n }\n }\n\n updateAnchor(index, position) {\n this.anchors[index] = position;\n\n for (let i = index - 2; i <= index + 1; i++)\n this.resample(i);\n }\n\n removeAnchor(index) {\n if (index < 0 || index >= this.anchors.length) return;\n\n this.anchors.splice(index, 1);\n\n const segmentIndex = index < this.anchors.length ? index : index - 1;\n this.centerlines.splice(segmentIndex, 1);\n this.sampleLengths.splice(segmentIndex, 1);\n this.leftBoundaries.splice(segmentIndex, 1);\n this.rightBoundaries.splice(segmentIndex, 1);\n this.arcLengths.splice(segmentIndex, 1);\n\n for (let i = segmentIndex - 2; i <= segmentIndex; i++)\n this.resample(i);\n }\n\n resample(index) {\n if (index < 0 || index > this.anchors.length - 2) return;\n\n const [p0, p1, p2, p3] = this.anchorsForSplineIndex(index);\n const points = [];\n const lengths = [];\n const leftBoundary = [];\n const rightBoundary = [];\n let prevPoint = null;\n\n const pointsPerSegment = Math.max(10, Math.ceil(p1.distanceTo(p2) / 1));\n const numPoints = index == this.anchors.length - 2 ? pointsPerSegment + 1 : pointsPerSegment;\n\n for (let i = 0; i < numPoints; i++) {\n const t = i / pointsPerSegment;\n const point = catmullRomVec(t, p0, p1, p2, p3);\n points.push(point);\n\n if (prevPoint != null)\n lengths.push(prevPoint.distanceTo(point));\n prevPoint = point;\n\n const tangent = tangentAt(t, p0, p1, p2, p3);\n const normal = new THREE.Vector2(-tangent.y, tangent.x);\n\n leftBoundary.push(normal.clone().multiplyScalar(-halfLaneWidth).add(point));\n rightBoundary.push(normal.clone().multiplyScalar(halfLaneWidth).add(point));\n }\n\n lengths.push(prevPoint.distanceTo(p2));\n\n this.centerlines[index] = points;\n this.sampleLengths[index] = lengths;\n this.leftBoundaries[index] = leftBoundary;\n this.rightBoundaries[index] = rightBoundary;\n this.arcLengths[index] = lengths.reduce((sum, l) => sum + l, 0);\n }\n\n resampleAll() {\n for (let i = 0; i < this.anchors.length; i++)\n this.resample(i);\n }\n\n anchorsForSplineIndex(index) {\n let p;\n if (index == 0)\n p = [this.anchors[0]].concat(this.anchors.slice(0, 3));\n else\n p = this.anchors.slice(index - 1, index + 3);\n\n if (p[3] === undefined)\n p[3] = p[2];\n\n return p;\n }\n}\n\nfunction catmullRom(t, p0, p1, p2, p3) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction catmullRomVec(t, p0, p1, p2, p3) {\n return new THREE.Vector2(catmullRom(t, p0.x, p1.x, p2.x, p3.x), catmullRom(t, p0.y, p1.y, p2.y, p3.y));\n}\n\nfunction tangentAt(t, p0, p1, p2, p3) {\n const delta = 0.0001;\n let t1 = t - delta;\n let t2 = t + delta;\n\n if (t1 < 0) t1 = 0;\n if (t2 > 1) t2 = 1;\n\n const prev = catmullRomVec(t1, p0, p1, p2, p3);\n const next = catmullRomVec(t2, p0, p1, p2, p3);\n\n return next.sub(prev).normalize();\n}\n\nfunction curvatureAt(t2, p0, p1, p2, p3) {\n const delta = 0.0001;\n\n // If we\'re estimating curvature at one of the endpoints of the spline,\n // slightly shift it inwards to avoid infinite curvature.\n if (t2 == 0) t2 = delta;\n if (t2 == 1) t2 = 1 - delta;\n\n let t1 = t2 - delta;\n let t3 = t2 + delta;\n\n if (t1 < 0) t1 = 0;\n if (t3 > 1) t3 = 1;\n\n const pt1 = catmullRomVec(t1, p0, p1, p2, p3);\n const pt2 = catmullRomVec(t2, p0, p1, p2, p3);\n const pt3 = catmullRomVec(t3, p0, p1, p2, p3);\n\n return (Math.atan2(pt3.y - pt2.y, pt3.x - pt2.x) - Math.atan2(pt2.y - pt1.y, pt2.x - pt1.x)) / pt2.distanceTo(pt1);\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/StaticObstacle.js\nclass StaticObstacle {\n static hydrate(obj) {\n Object.setPrototypeOf(obj, StaticObstacle.prototype);\n Object.setPrototypeOf(obj.pos, THREE.Vector2.prototype);\n }\n\n static fromJSON(json) {\n return new StaticObstacle(new THREE.Vector2(json.p[0], json.p[1]), json.r, json.w, json.h);\n }\n\n constructor(pos, rot, width, height) {\n this.pos = pos;\n this.rot = rot;\n this.width = width;\n this.height = height;\n\n this.updateVertices();\n }\n\n toJSON() {\n const trunc = n => +n.toFixed(5);\n\n return {\n p: [trunc(this.pos.x), trunc(this.pos.y)],\n r: trunc(this.rot),\n w: trunc(this.width),\n h: trunc(this.height)\n };\n }\n\n updateVertices() {\n this.vertices = [];\n\n const cosRot = Math.cos(this.rot);\n const sinRot = Math.sin(this.rot);\n const halfWidth = this.width / 2;\n const halfHeight = this.height / 2;\n\n const hWcR = halfWidth * cosRot;\n const hWsR = halfWidth * sinRot;\n const hHcR = halfHeight * cosRot;\n const hHsR = halfHeight * sinRot;\n\n const v1 = [-hWcR - hHsR + this.pos.x, -hWsR + hHcR + this.pos.y];\n const v2 = [-hWcR + hHsR + this.pos.x, -hWsR - hHcR + this.pos.y];\n const v3 = [hWcR + hHsR + this.pos.x, hWsR - hHcR + this.pos.y];\n const v4 = [hWcR - hHsR + this.pos.x, hWsR + hHcR + this.pos.y];\n\n this.vertices = [\n v1[0], v1[1],\n v2[0], v2[1],\n v3[0], v3[1],\n v3[0], v3[1],\n v4[0], v4[1],\n v1[0], v1[1]\n ];\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/DynamicObstacle.js\n// Half width and half height\nconst VEHICLE_SIZE = { w: 2.5, h: 1 };\nconst CYCLIST_SIZE = { w: 1.2, h: 0.6 };\nconst PEDESTRIAN_SIZE = { w: 0.6, h: 0.6 };\n\nclass DynamicObstacle {\n static hydrate(obj) {\n Object.setPrototypeOf(obj, DynamicObstacle.prototype);\n Object.setPrototypeOf(obj.startPos, THREE.Vector2.prototype);\n Object.setPrototypeOf(obj.velocity, THREE.Vector2.prototype);\n }\n\n constructor(type, startPos, velocity, parallel) {\n this.type = type;\n this.startPos = startPos;\n this.velocity = velocity;\n this.parallel = parallel;\n\n switch (type) {\n case \'cyclist\':\n this.size = Object.assign({}, CYCLIST_SIZE);\n break;\n\n case \'pedestrian\':\n this.size = Object.assign({}, PEDESTRIAN_SIZE);\n break;\n\n default:\n this.size = Object.assign({}, VEHICLE_SIZE);\n }\n\n if (!parallel)\n [this.size.w, this.size.h] = [this.size.h, this.size.w];\n }\n\n positionAtTime(time) {\n return this.velocity.clone().multiplyScalar(time).add(this.startPos);\n }\n\n positionsInTimeRange(startTime, endTime, numFrames) {\n const dt = (endTime - startTime) / numFrames;\n const positions = [];\n let time = startTime;\n\n for (let i = 0; i <= numFrames; i++) {\n positions.push(this.positionAtTime(time));\n time += dt;\n }\n\n return positions;\n }\n\n verticesInTimeRange(startTime, endTime, config) {\n const positions = this.positionsInTimeRange(startTime, endTime, config.numDynamicSubframes);\n const vertices = [];\n\n // Hazard dilation (drawn behind, z = 0.75)\n const hazardHalfWidth = this.size.w + config.dynamicHazardDilationS + config.collisionDilationS;\n const hazardHalfHeight = this.size.h + config.dynamicHazardDilationL + config.collisionDilationL;\n\n positions.forEach(p => {\n const v1 = [-hazardHalfWidth + p.x, hazardHalfHeight + p.y];\n const v2 = [hazardHalfWidth + p.x, hazardHalfHeight + p.y];\n const v3 = [hazardHalfWidth + p.x, -hazardHalfHeight + p.y];\n const v4 = [-hazardHalfWidth + p.x, -hazardHalfHeight + p.y];\n\n vertices.push(\n v1[0], v1[1], 0.75,\n v2[0], v2[1], 0.75,\n v3[0], v3[1], 0.75,\n v3[0], v3[1], 0.75,\n v4[0], v4[1], 0.75,\n v1[0], v1[1], 0.75\n );\n });\n\n // Collision dilation (drawn in front, z = 0.25)\n const collisionHalfWidth = this.size.w + config.collisionDilationS;\n const collisionHalfHeight = this.size.h + config.collisionDilationL;\n\n positions.forEach(p => {\n const v1 = [-collisionHalfWidth + p.x, collisionHalfHeight + p.y];\n const v2 = [collisionHalfWidth + p.x, collisionHalfHeight + p.y];\n const v3 = [collisionHalfWidth + p.x, -collisionHalfHeight + p.y];\n const v4 = [-collisionHalfWidth + p.x, -collisionHalfHeight + p.y];\n\n vertices.push(\n v1[0], v1[1], 0.25,\n v2[0], v2[1], 0.25,\n v3[0], v3[1], 0.25,\n v3[0], v3[1], 0.25,\n v4[0], v4[1], 0.25,\n v1[0], v1[1], 0.25\n );\n });\n\n return vertices;\n }\n}\n\n;// CONCATENATED MODULE: ./js/simulator/PathPlannerConfigEditor.js\n\n\nconst LOCAL_STORAGE_KEY = \'dash_PathPlannerConfig\';\n\nconst internalConfig = {\n lattice: {\n numStations: 8,\n numLatitudes: 17,\n stationConnectivity: 3,\n latitudeConnectivity: 7\n },\n\n roadWidth: 3.7 * 2, // meters\n\n numDynamicFrames: 20,\n numDynamicSubframes: 4,\n\n dCurvatureMax: Car_Car.MAX_STEER_SPEED / Car_Car.WHEEL_BASE,\n rearAxleToCenter: -Car_Car.REAR_AXLE_POS\n};\n\nconst defaultConfig = {\n spatialHorizon: 120, // meters\n centerlineStationInterval: 0.5, // meters\n\n xyGridCellSize: 0.3, // meters\n slGridCellSize: 0.15, // meters\n gridMargin: 20, // meters\n pathSamplingStep: 1, // meters\n\n cubicPathPenalty: 0,\n\n collisionDilationS: Car_Car.HALF_CAR_LENGTH + 2, // meters\n hazardDilationS: 8, // meters\n collisionDilationL: Car_Car.HALF_CAR_WIDTH + 0.5, //meters\n hazardDilationL: 0.5, // meters\n\n dynamicHazardDilationS: 16,\n dynamicHazardDilationL: 0.5,\n\n obstacleHazardCost: 200,\n\n laneCenterLatitude: internalConfig.roadWidth / 4,\n laneShoulderLatitude: internalConfig.roadWidth / 2 * 1.1 - Car_Car.HALF_CAR_WIDTH,\n laneCostSlope: 20, // cost / meter\n lanePreferenceDiscount: 55,\n\n stationReachDiscount: 400,\n extraTimePenalty: 1000,\n\n hysteresisDiscount: 50,\n\n speedLimitPenalty: 200,\n\n hardAccelerationPenalty: 70,\n hardDecelerationPenalty: 50,\n\n softLateralAccelerationLimit: 4, // m/s^2\n softLateralAccelerationPenalty: 100,\n linearLateralAccelerationPenalty: 10,\n\n accelerationChangePenalty: 10\n};\n\nclass PathPlannerConfigEditor {\n constructor() {\n this._config = Object.assign({}, defaultConfig);\n\n this.showConfigBox = document.getElementById(\'show-config-box\');\n this.configBox = document.getElementById(\'config-box-content\');\n this.configForm = document.getElementById(\'config-form\');\n\n this._setUpButtons();\n\n let storedConfig = {};\n try {\n storedConfig = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY)) || {};\n } catch (e) {}\n\n for (const key of Object.keys(this._config).sort()) {\n if (storedConfig[key] !== undefined) this._config[key] = storedConfig[key];\n this.configForm.appendChild(this._createConfigField(key, this._config[key]));\n }\n }\n\n get config() {\n return Object.assign({}, this._config, internalConfig);\n }\n\n _setUpButtons() {\n document.getElementById(\'show-config-button\').addEventListener(\'click\', e => {\n this.showConfigBox.classList.add(\'is-hidden\');\n this.configBox.classList.remove(\'is-hidden\');\n });\n\n document.getElementById(\'hide-config-button\').addEventListener(\'click\', e => {\n this.showConfigBox.classList.remove(\'is-hidden\');\n this.configBox.classList.add(\'is-hidden\');\n });\n\n document.getElementById(\'save-config-button\').addEventListener(\'click\', this._saveConfigFields.bind(this));\n document.getElementById(\'restore-defaults-config-button\').addEventListener(\'click\', this._restoreDefaults.bind(this));\n }\n\n _createConfigField(key, value) {\n const html =\n `
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
`;\n\n const template = document.createElement(\'template\');\n template.innerHTML = html;\n return template.content.firstChild;\n }\n\n _saveConfigFields() {\n const formData = new FormData(this.configForm);\n\n for (const [k, v] of formData.entries()) {\n const parsedValue = Number.parseFloat(v);\n this._config[k] = parsedValue\n\n const fieldDom = document.getElementById(`config-field-${k}`);\n if (parsedValue === defaultConfig[k])\n fieldDom.classList.remove(\'is-danger\');\n else\n fieldDom.classList.add(\'is-danger\');\n }\n\n try {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(this._config));\n } catch (e) {}\n }\n\n _restoreDefaults() {\n this._config = Object.assign({}, defaultConfig);\n\n try {\n window.localStorage.removeItem(LOCAL_STORAGE_KEY);\n } catch (e) {}\n\n while (this.configForm.firstChild)\n this.configForm.removeChild(this.configForm.firstChild);\n\n for (const key of Object.keys(this._config).sort())\n this.configForm.appendChild(this._createConfigField(key, this._config[key]));\n }\n}\n\nPathPlannerConfigEditor.internalConfig = internalConfig;\n\n;// CONCATENATED MODULE: ./js/simulator/DynamicObstacleEditor.js\n\n\n\nclass DynamicObstacleEditor {\n constructor() {\n this.editorDom = document.getElementById(\'editor-dynamic-obstacles-box\');\n this.formsContainer = document.getElementById(\'editor-dynamic-obstacle-forms\');\n this.statsDynamicObstacles = document.getElementById(\'editor-stats-dynamic-obstacles\');\n\n document.getElementById(\'editor-add-dynamic-obstacle\').addEventListener(\'click\', this.addDynamicObstacle.bind(this));\n }\n\n enable() {\n this.editorDom.classList.remove(\'is-hidden\');\n }\n\n disable() {\n this.editorDom.classList.add(\'is-hidden\');\n }\n\n toJSON() {\n const forms = this.formsContainer.getElementsByTagName(\'form\');\n const obstacles = [];\n\n for (let i = 0; i < forms.length; i++) {\n const formData = new FormData(forms[i]);\n const params = { parallel: false };\n\n for (const [k, v] of formData.entries())\n params[k] = v;\n\n let type = 0;\n if (params.type == \'cyclist\')\n type = 1;\n else if (params.type == \'pedestrian\')\n type = 2;\n\n obstacles.push({\n p: [params.sPos, params.lPos],\n v: [params.sVel, params.lVel],\n l: !!params.parallel ? 1 : 0,\n t: type\n });\n }\n\n return obstacles;\n }\n\n loadJSON(json) {\n this.clearDynamicObstacles();\n\n json.forEach(o => {\n const form = this.addDynamicObstacle();\n\n form[\'sPos\'].value = o.p[0];\n form[\'lPos\'].value = o.p[1];\n form[\'sVel\'].value = o.v[0];\n form[\'lVel\'].value = o.v[1];\n form[\'parallel\'].checked = !!o.l;\n form[\'type\'].selectedIndex = o.t;\n });\n }\n\n collectDynamicObstacles() {\n const forms = this.formsContainer.getElementsByTagName(\'form\');\n const obstacles = [];\n\n for (let i = 0; i < forms.length; i++) {\n const formData = new FormData(forms[i]);\n const params = { parallel: false };\n\n for (const [k, v] of formData.entries())\n params[k] = v;\n\n const pos = new THREE.Vector2(Number(params.sPos) || 0, (Number(params.lPos) || 0) * PathPlannerConfigEditor.internalConfig.roadWidth / 2);\n const vel = new THREE.Vector2(Number(params.sVel) || 0, Number(params.lVel) || 0);\n const parallel = !!params.parallel;\n\n obstacles.push(new DynamicObstacle(params.type, pos, vel, parallel));\n }\n\n return obstacles;\n }\n\n addDynamicObstacle() {\n const index = this.formsContainer.getElementsByTagName(\'form\').length + 1;\n const form = this.buildForm(index);\n\n this.formsContainer.appendChild(form);\n this.statsDynamicObstacles.textContent = this.formsContainer.getElementsByTagName(\'form\').length;\n\n return form;\n }\n\n removeDynamicObstacle(form) {\n this.formsContainer.removeChild(form);\n this.reindexForms();\n this.statsDynamicObstacles.textContent = this.formsContainer.getElementsByTagName(\'form\').length;\n }\n\n clearDynamicObstacles() {\n this.formsContainer.innerHTML = \'\';\n this.statsDynamicObstacles.textContent = 0;\n }\n\n reindexForms() {\n const forms = this.formsContainer.getElementsByTagName(\'form\');\n\n for (let i = 0; i < forms.length; i++) {\n forms[i].getElementsByClassName(\'dynamic-obstacle-index\')[0].textContent = i + 1;\n }\n }\n\n buildForm(index) {\n const html =\n `
\n
\n
\n
\n
${index}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
`;\n\n const template = document.createElement(\'template\');\n template.innerHTML = html;\n const form = template.content.firstChild;\n\n form.getElementsByClassName(\'editor-remove-dynamic-obstacle\')[0].addEventListener(\'click\', e => this.removeDynamicObstacle(form));\n\n return form;\n }\n}\n\n;// CONCATENATED MODULE: ./js/Helpers.js\nfunction formatDate(date) {\n return date && date.toLocaleDateString(undefined, {month: \'short\', day: \'numeric\', year: \'numeric\', hour: \'numeric\', minute: \'numeric\', hour12: true});\n}\n\n\n\n;// CONCATENATED MODULE: ./js/simulator/examples.js\n/* harmony default export */ const examples = ([\n { name: "One-car overtake", data: {"p":[-298.12979,357.51057,7.55497,136.89255,255.45446,-186.65063,586.66288,-494.5808],"s":[],"d":[{"p":["150","0.5"],"v":["15","0"],"l":1,"t":0}],"l":1238.129,"c":{"s":"25","sl":"25","lp":1},"v":1} },\n\n { name: "Two-car overtake", data: {"p":[-276.4674,303.00865,44.88593,120.86712,305.10729,-435.99728],"s":[],"d":[{"p":["100","0.5"],"v":["5","0"],"l":1,"t":0},{"p":["100","-0.5"],"v":["6","0"],"l":1,"t":0}],"l":990.576,"c":{"s":"20","sl":"20","lp":1},"v":1} },\n\n { name: "Rough road", data: {"p":[-102.46078,26.38513,-68.69821,25.79776,-55.94913,19.50427,-25.32284,12.6183,-16.6024,10.7739,-6.708,11.78013,31.36054,12.11554,47.04057,14.7988,56.85048,23.26776,56.84979,35.25828,46.95511,43.89463,25.48979,43.55924,8.13326,52.2799,-15.34437,64.10242],"s":[{"p":[-54.96429,21.2553],"r":-0.27612,"w":2.7671,"h":1.67703},{"p":[-36.09254,12.36963],"r":0.14726,"w":3.43791,"h":1.84475},{"p":[-13.41625,14.2537],"r":0.11658,"w":4.69568,"h":1.42549},{"p":[44.00931,18.38166],"r":0.25771,"w":4.94713,"h":4.27642},{"p":[62.74669,29.41331],"r":0,"w":4.10855,"h":5.86952},{"p":[46.71119,38.74469],"r":1.14742,"w":4.52775,"h":6.70794},{"p":[-14.26275,63.60006],"r":2.67526,"w":10.14584,"h":12.24173},{"p":[19.7351,9.40621],"r":0.65041,"w":1.97177,"h":1.07553},{"p":[28.99679,9.71727],"r":0.20862,"w":1.97175,"h":1.03072},{"p":[24.15205,9.93872],"r":-0.31907,"w":1.25476,"h":0.9859}],"d":[],"l":259.088,"c":{"s":"10","sl":"10","lp":1},"v":1} },\n\n { name: "Dodging a speeder", data: {"p":[-226.14066,275.34941,21.32194,-6.2654,266.99958,-174.39559,466.42449,-427.95124],"s":[],"d":[{"p":["-250","-0.5"],"v":["40","0"],"l":1,"t":0}],"l":996.572,"c":{"s":"25","sl":"25","lp":-1},"v":1} },\n\n { name: "Lane blockage with oncoming traffic", data: {"p":[-84.96318,-14.94973,374.91044,-14.7168],"s":[{"p":[-34.91024,-12.51359],"r":0,"w":2.76711,"h":2.68324}],"d":[{"p":["40","-0.5"],"v":["-10","0"],"l":1,"t":0},{"p":["150","-0.5"],"v":["-10","0"],"l":1,"t":0}],"l":459.874,"c":{"s":"20","sl":"20","lp":1},"v":1} },\n\n { name: "Merging into slower traffic", data: {"p":[-629.09464,16.31589,281.97162,14.81565],"s":[{"p":[-440.00152,11.62602],"r":0,"w":3.1379,"h":3.13801},{"p":[-259.74036,11.98013],"r":0,"w":2.51556,"h":4.4441},{"p":[93.71013,11.27032],"r":0,"w":4.07947,"h":7.84501},{"p":[-94.72208,11.28172],"r":0,"w":3.76609,"h":7.53122}],"d":[{"p":["320","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["280","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["240","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["200","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["160","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["120","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["80","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["40","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["0","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-40","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-80","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-120","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-160","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-200","0.5"],"v":["12","0"],"l":1,"t":0}],"l":911.067,"c":{"s":"25","sl":"25","lp":-1},"v":1} },\n\n { name: "Negotiating crosswalks", data: {"p":[-144.73574,55.4495,-104.89441,31.62755,-33.87479,61.57811,54.60631,46.34858,152.3728,-41.4335,219.90258,-113.95225],"s":[],"d":[{"p":["51","-2"],"v":["0","1.5"],"l":1,"t":2},{"p":["52","+2"],"v":["0","-1.6"],"l":1,"t":2},{"p":["53","-2"],"v":["0","1.5"],"l":1,"t":2},{"p":["54","+2"],"v":["0","-1.4"],"l":1,"t":2},{"p":["55","-2"],"v":["0","1.5"],"l":1,"t":2},{"p":["50","+3"],"v":["0","-1.5"],"l":1,"t":2},{"p":["51","-3"],"v":["0","1.7"],"l":1,"t":2},{"p":["52","+3"],"v":["0","-1.5"],"l":1,"t":2},{"p":["53","-3"],"v":["0","1.3"],"l":1,"t":2},{"p":["50","-4"],"v":["0","1.6"],"l":1,"t":2},{"p":["51","-4"],"v":["0","1.2"],"l":1,"t":2},{"p":["52","-5"],"v":["0","1.5"],"l":1,"t":2},{"p":["53","-5"],"v":["0","1.4"],"l":1,"t":2},{"p":["50","4.5"],"v":["0","-1.6"],"l":1,"t":2},{"p":["51","5"],"v":["0","-1.4"],"l":1,"t":2},{"p":["52","4"],"v":["0","-1.5"],"l":1,"t":2},{"p":["53","4.5"],"v":["0","-1.4"],"l":1,"t":2},{"p":["49","5.5"],"v":["0","-1.2"],"l":1,"t":2},{"p":["50","6"],"v":["0","-1.6"],"l":1,"t":2},{"p":["51","5.75"],"v":["0","-1.5"],"l":1,"t":2},{"p":["52","5"],"v":["0","-1.5"],"l":1,"t":2},{"p":["49","-6"],"v":["0","1.5"],"l":1,"t":2},{"p":["50","-5.5"],"v":["0","1.7"],"l":1,"t":2},{"p":["51","-5"],"v":["0","0.9"],"l":1,"t":2},{"p":["52","-5.75"],"v":["0","1.2"],"l":1,"t":2},{"p":["150","-75"],"v":["0","9"],"l":0,"t":1},{"p":["152","-80"],"v":["0","10"],"l":0,"t":1},{"p":["154","-85"],"v":["0","9.5"],"l":0,"t":1},{"p":["150","75"],"v":["0","-10"],"l":0,"t":1},{"p":["152","80"],"v":["0","-9"],"l":0,"t":1},{"p":["154","85"],"v":["0","-9.5"],"l":0,"t":1}],"l":447.535,"c":{"s":"5","sl":"20","lp":1},"v":1} },\n\n { name: "Chasing the peloton", data: {"p":[-708.1093,561.67222,-657.73649,701.46772,-531.30212,736.41613,-332.91517,708.663,-201.34176,611.01215,-80.04523,477.38232,22.75082,341.69385,147.66174,176.73622,253.02371,-15.01574,448.31828,-335.71836,495.60932,-544.40048],"s":[],"d":[{"p":["50","0.4"],"v":["15.5","-0.1"],"l":1,"t":1},{"p":["52","0.6"],"v":["15.7","-0.15"],"l":1,"t":1},{"p":["54","0.3"],"v":["15.3","-0.13"],"l":1,"t":1},{"p":["56","0.7"],"v":["15.2","-0.1"],"l":1,"t":1},{"p":["58","0.3"],"v":["15.8","-0.12"],"l":1,"t":1},{"p":["60","0.7"],"v":["15.6","-0.17"],"l":1,"t":1},{"p":["62","0.1"],"v":["15.4","-0.14"],"l":1,"t":1},{"p":["64","-0.1"],"v":["15.5","0.13"],"l":1,"t":1},{"p":["66","0.3"],"v":["15.3","-0.13"],"l":1,"t":1},{"p":["68","0"],"v":["15.6","0.15"],"l":1,"t":1},{"p":["70","-0.3"],"v":["15.8","0.17"],"l":1,"t":1},{"p":["72","-0.7"],"v":["15.7","0.12"],"l":1,"t":1},{"p":["74","-0.5"],"v":["15.1","0.15"],"l":1,"t":1},{"p":["76","-0.7"],"v":["15.9","0.11"],"l":1,"t":1},{"p":["78","-0.3"],"v":["15.5","0.16"],"l":1,"t":1},{"p":["80","-0.5"],"v":["15.6","0.13"],"l":1,"t":1}],"l":2018.213,"c":{"s":"15","sl":"25","lp":1},"v":1} }\n]);\n\n;// CONCATENATED MODULE: ./js/simulator/ScenarioManager.js\n\n\n\nconst ScenarioManager_LOCAL_STORAGE_KEY = \'dash_Scenarios\';\n\nclass ScenarioManager {\n constructor(editor) {\n this.editor = editor;\n this.modal = document.getElementById(\'scenarios-modal\');\n\n document.getElementById(\'scenarios-modal-background\').addEventListener(\'click\', this._closeModal.bind(this));\n document.getElementById(\'scenarios-modal-close\').addEventListener(\'click\', this._closeModal.bind(this));\n\n this.examplesTab = document.getElementById(\'scenarios-modal-examples-tab\');\n this.savedTab = document.getElementById(\'scenarios-modal-saved-tab\');\n this.importTab = document.getElementById(\'scenarios-modal-import-tab\');\n\n this.examplesTabButton = document.getElementById(\'scenarios-modal-examples-tab-button\');\n this.savedTabButton = document.getElementById(\'scenarios-modal-saved-tab-button\');\n this.importTabButton = document.getElementById(\'scenarios-modal-import-tab-button\');\n this.examplesTabButton.addEventListener(\'click\', e => this.switchTab(this.examplesTab));\n this.savedTabButton.addEventListener(\'click\', e => this.switchTab(this.savedTab));\n this.importTabButton.addEventListener(\'click\', e => this.switchTab(this.importTab));\n\n this.itemsContainer = document.getElementById(\'scenarios-modal-items\');\n\n this.sortName = document.getElementById(\'scenarios-sort-name\');\n this.sortName.addEventListener(\'click\', e => this._buildScenarioItems(\'name\'));\n this.sortSavedAt = document.getElementById(\'scenarios-sort-saved-at\');\n this.sortSavedAt.addEventListener(\'click\', e => this._buildScenarioItems(\'savedAt\'));\n\n this.importBox = document.getElementById(\'scenario-import-box\');\n this.importInfo = document.getElementById(\'scenario-import-info\');\n\n this.importBox.addEventListener(\'input\', this._importBoxChanged.bind(this));\n\n for (let i = 0; i < examples.length; i++)\n document.getElementById(`example-${i}`).addEventListener(\'click\', e => this._loadScenario(examples[i]));\n }\n\n switchTab(tab) {\n this.examplesTab.classList.add(\'is-hidden\')\n this.savedTab.classList.add(\'is-hidden\')\n this.importTab.classList.add(\'is-hidden\')\n this.examplesTabButton.classList.remove(\'is-active\');\n this.savedTabButton.classList.remove(\'is-active\');\n this.importTabButton.classList.remove(\'is-active\');\n\n let button = this.savedTabButton;\n if (tab == this.examplesTab)\n button = this.examplesTabButton;\n else if (tab == this.importTab)\n button = this.importTabButton;\n\n tab.classList.remove(\'is-hidden\');\n button.classList.add(\'is-active\');\n\n if (tab == this.importTab)\n this.importBox.focus();\n }\n\n saveScenario(name, data, force = false) {\n const scenarios = this.fetchScenarios();\n let scenario = scenarios[name];\n const now = new Date();\n\n if (scenario) {\n if (!force) return [false, scenario.savedAt];\n\n scenario.data = data;\n scenario.savedAt = now;\n } else {\n scenario = {\n name: name,\n data: data,\n savedAt: now\n };\n \n scenarios[name] = scenario;\n }\n\n const json = JSON.stringify(scenarios);\n window.localStorage.setItem(ScenarioManager_LOCAL_STORAGE_KEY, json);\n\n return [true, scenario.savedAt];\n }\n\n fetchScenarios() {\n const scenarios = JSON.parse(window.localStorage.getItem(ScenarioManager_LOCAL_STORAGE_KEY)) || {};\n\n for (const k in scenarios)\n scenarios[k].savedAt = new Date(scenarios[k].savedAt);\n\n return scenarios;\n }\n\n showModal(onLoadScenario = null) {\n this.onLoadScenario = onLoadScenario;\n\n this.modal.classList.add(\'is-active\');\n this.switchTab(this.savedTab);\n\n this._buildScenarioItems();\n this.itemsContainer.scrollTop = 0;\n \n this.importBox.value = \'\';\n this.importBox.dispatchEvent(new Event(\'input\'));\n }\n\n _closeModal() {\n this.onLoadScenario = null;\n this.modal.classList.remove(\'is-active\');\n }\n\n _buildScenarioItems(sort = \'savedAt\') {\n this.itemsContainer.innerHTML = \'\';\n\n this.sortName.classList.remove(\'is-underlined\');\n this.sortSavedAt.classList.remove(\'is-underlined\');\n if (sort == \'name\')\n this.sortName.classList.add(\'is-underlined\');\n else if (sort == \'savedAt\')\n this.sortSavedAt.classList.add(\'is-underlined\');\n\n const scenarios = Object.values(this.fetchScenarios());\n\n if (scenarios.length == 0) {\n this._showEmptyMessage();\n } else {\n scenarios.sort((a, b) => {\n if (sort == \'savedAt\') {\n if (a.savedAt < b.savedAt) return +1;\n else if (b.savedAt < a.savedAt) return -1;\n }\n\n const nameA = a.name.toLowerCase();\n const nameB = b.name.toLowerCase();\n\n if (nameA < nameB) return -1;\n if (nameB < nameA) return +1;\n return 0;\n });\n\n scenarios.forEach(s => this._addScenarioItem(s));\n }\n }\n\n _showEmptyMessage() {\n this.itemsContainer.innerHTML = "You don\'t have any saved scenarios.";\n }\n\n _addScenarioItem(scenario) {\n const html =\n `
\n
\n
\n
\n
\n

\n \n \n \n \n \n

\n
\n
\n
`;\n\n const template = document.createElement(\'template\');\n template.innerHTML = html;\n const item = template.content.firstChild;\n\n const nameDom = item.getElementsByClassName(\'scenario-item-name\')[0];\n nameDom.textContent = scenario.name;\n nameDom.title = scenario.name;\n\n item.getElementsByClassName(\'scenario-item-saved-at\')[0].textContent = formatDate(scenario.savedAt);\n\n item.getElementsByClassName(\'scenario-item-load\')[0].addEventListener(\'click\', e => this._loadScenario(scenario));\n\n item.getElementsByClassName(\'scenario-item-delete\')[0].addEventListener(\'click\', e => {\n if (window.confirm(`Are you sure you want to delete the scenario "${scenario.name}"?`)) {\n this._deleteScenario(scenario);\n this.itemsContainer.removeChild(item);\n\n if (this.itemsContainer.children.length == 0)\n this._showEmptyMessage();\n }\n });\n\n this.itemsContainer.appendChild(item);\n }\n\n _loadScenario(scenario) {\n this.editor.loadJSON(scenario.data);\n this.editor.updateSavedInfo(scenario.name, formatDate(scenario.savedAt));\n\n if (this.onLoadScenario) this.onLoadScenario();\n\n this._closeModal();\n }\n\n _deleteScenario(scenario) {\n const scenarios = this.fetchScenarios();\n delete scenarios[scenario.name];\n\n const json = JSON.stringify(scenarios);\n window.localStorage.setItem(ScenarioManager_LOCAL_STORAGE_KEY, json);\n }\n\n _importBoxChanged() {\n this.importBox.classList.remove(\'is-danger\');\n this.importInfo.classList.add(\'is-hidden\');\n\n const encoded = this.importBox.value;\n\n if (encoded != \'\') {\n try {\n const json = JSON.parse(atob(this.importBox.value));\n\n if (json.s === undefined || json.d === undefined || json.p === undefined || json.p.length % 2 != 0)\n throw new Error();\n\n this.importInfo.innerHTML = `\n
\n Road Length: ${json.l.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}m\n
\n  \n
\n Static Obstacles: ${json.s.length}\n
\n  \n
\n Dynamic Obstacles: ${json.d.length}\n
\n
\n \n \n \n Import\n
\n `;\n\n this.importInfo.getElementsByClassName(\'scenario-import-button\')[0].addEventListener(\'click\', e => this._loadScenario({ data: json }));\n this.importInfo.classList.remove(\'is-hidden\');\n } catch (e) {\n this.importBox.classList.add(\'is-danger\');\n }\n }\n }\n}\n\n;// CONCATENATED MODULE: ./js/simulator/ShareManager.js\nclass ShareManager {\n constructor() {\n this.modal = document.getElementById(\'scenario-share-modal\');\n this.linkDom = document.getElementById(\'scenario-share-link\');\n this.boxDom = document.getElementById(\'scenario-share-box\');\n this.clipboardButton = document.getElementById(\'scenario-share-clipboard\');\n this.clipboardIcon = document.getElementById(\'scenario-share-clipboard-icon\');\n this.clipboardSuccessIcon = document.getElementById(\'scenario-share-clipboard-success-icon\');\n\n document.getElementById(\'scenario-share-modal-background\').addEventListener(\'click\', this._closeModal.bind(this));\n document.getElementById(\'scenario-share-modal-close\').addEventListener(\'click\', this._closeModal.bind(this));\n this.clipboardButton.addEventListener(\'click\', this._copyLinkToClipboard.bind(this));\n\n this.linkDom.addEventListener(\'focus\', e => this.linkDom.select());\n this.boxDom.addEventListener(\'focus\', e => this.boxDom.select());\n }\n\n showModal(scenario) {\n this.modal.classList.add(\'is-active\');\n\n this.clipboardIcon.classList.remove(\'is-hidden\');\n this.clipboardSuccessIcon.classList.add(\'is-hidden\');\n this.clipboardButton.classList.remove(\'is-success\');\n\n const code = btoa(JSON.stringify(scenario));\n\n const url = new URL(window.location);\n url.search = \'\';\n url.hash = \'/s/\' + encodeURIComponent(code);\n\n this.linkDom.value = url.href;\n this.boxDom.value = code;\n }\n\n _closeModal() {\n this.modal.classList.remove(\'is-active\');\n }\n\n _copyLinkToClipboard() {\n this.linkDom.focus();\n this.linkDom.select();\n\n if (document.execCommand(\'copy\', false, null)) {\n this.clipboardIcon.classList.add(\'is-hidden\');\n this.clipboardSuccessIcon.classList.remove(\'is-hidden\');\n this.clipboardButton.classList.add(\'is-success\');\n }\n }\n}\n\n;// CONCATENATED MODULE: ./js/simulator/Editor.js\n\n\n\n\n\n\n\nconst GROUND_PLANE = new THREE.Plane(new THREE.Vector3(0, 1, 0));\n\nconst NORMAL_OPACITY = 0.7;\nconst HOVER_OPACITY = 1;\nconst NORMAL_POINT_COLOR = 0x0088ff;\nconst HOVER_POINT_COLOR = 0x33ccff;\nconst NORMAL_STATIC_OBSTACLE_COLOR = 0xdd0000;\nconst HOVER_STATIC_OBSTACLE_COLOR = 0xdd3333;\nconst NORMAL_DYNAMIC_OBSTACLE_COLOR = 0xff8800;\nconst HOVER_DYNAMIC_OBSTACLE_COLOR = 0xffcc33;\n\nconst INITIAL_SPEED_FALLBACK = 20;\nconst SPEED_LIMIT_FALLBACK = 20;\nconst LANE_PREFERENCE_FALLBACK = +1;\n\nclass Editor {\n constructor(canvas, camera, scene) {\n this.canvas = canvas;\n this.camera = camera;\n\n this.isEnabled = false;\n this.raycaster = new THREE.Raycaster();\n this.mouse = new THREE.Vector2();\n this.dragOffset = new THREE.Vector3();\n this.draggingPoint = null;\n this.pointIndex = 0;\n this.obstacleIndex = 0;\n this.previousSavedName = null;\n this.scenarioManager = new ScenarioManager(this);\n this.shareManager = new ShareManager();\n\n this.centerlineGeometry = new THREE.Geometry();\n this.leftBoundaryGeometry = new THREE.Geometry();\n this.rightBoundaryGeometry = new THREE.Geometry();\n this.draggingObstaclePreview = null;\n\n this.group = new THREE.Group();\n this.group.renderOrder = 1;\n this.pointGroup = new THREE.Group();\n this.pointGroup.renderOrder = 2;\n this.obstacleGroup = new THREE.Group();\n this.obstacleGroup.renderOrder = 1;\n this.group.add(this.obstacleGroup);\n this.group.add(this.pointGroup);\n scene.add(this.group);\n\n this.lanePath = new LanePath();\n this.dynamicObstacleEditor = new DynamicObstacleEditor();\n\n this.editorPathButton = document.getElementById(\'editor-path\');\n this.editorPathButton.addEventListener(\'click\', e => this.changeEditMode(\'path\'));\n this.editorObstaclesButton = document.getElementById(\'editor-obstacles\');\n this.editorObstaclesButton.addEventListener(\'click\', e => this.changeEditMode(\'staticObstacles\'));\n this.editorDynamicObstaclesButton = document.getElementById(\'editor-dynamic-obstacles\');\n this.editorDynamicObstaclesButton.addEventListener(\'click\', e => this.changeEditMode(\'dynamicObstacles\'));\n\n this.editorRoadBox = document.getElementById(\'editor-road-box\');\n this.initialSpeedDom = document.getElementById(\'editor-initial-speed\');\n this.speedLimitDom = document.getElementById(\'editor-speed-limit\');\n this.laneLeftDom = document.getElementById(\'editor-lane-left\');\n this.laneRightDom = document.getElementById(\'editor-lane-right\');\n\n this.laneLeftDom.addEventListener(\'click\', e => this._changeLanePreference(-1));\n this.laneRightDom.addEventListener(\'click\', e => this._changeLanePreference(+1));\n\n this.initialSpeedDom.value = INITIAL_SPEED_FALLBACK;\n this.speedLimitDom.value = SPEED_LIMIT_FALLBACK;\n this._changeLanePreference(LANE_PREFERENCE_FALLBACK);\n\n this.statsRoadLength = document.getElementById(\'editor-stats-road-length\');\n this.statsStaticObstacles = document.getElementById(\'editor-stats-static-obstacles\');\n this.statsStation = document.getElementById(\'editor-stats-station\');\n this.statsLatitude = document.getElementById(\'editor-stats-latitude\');\n this.scenarioNameDom = document.getElementById(\'editor-scenario-name\');\n this.scenarioSavedAtDom = document.getElementById(\'editor-scenario-saved-at\');\n\n this.helpPath = document.getElementById(\'editor-help-path\');\n this.helpStaticObstacles = document.getElementById(\'editor-help-static-obstacles\');\n this.helpDynamicObstacles = document.getElementById(\'editor-help-dynamic-obstacles\');\n\n this.changeEditMode(\'path\');\n this.removeMode = false;\n\n canvas.addEventListener(\'mousedown\', this.mouseDown.bind(this));\n canvas.addEventListener(\'mousemove\', this.mouseMove.bind(this));\n canvas.addEventListener(\'mouseup\', this.mouseUp.bind(this));\n canvas.addEventListener(\'contextmenu\', e => this.isEnabled && e.preventDefault());\n\n const editorClearOptions = document.getElementById(\'editor-clear-options\');\n document.getElementById(\'editor-clear\').addEventListener(\'click\', event => {\n event.stopPropagation();\n editorClearOptions.classList.toggle(\'is-hidden\');\n });\n document.addEventListener(\'click\', () => editorClearOptions.classList.add(\'is-hidden\'));\n\n document.getElementById(\'editor-clear-obstacles\').addEventListener(\'click\', this.clearStaticObstacles.bind(this));\n document.getElementById(\'editor-clear-dynamic-obstacles\').addEventListener(\'click\', this.dynamicObstacleEditor.clearDynamicObstacles.bind(this.dynamicObstacleEditor));\n document.getElementById(\'editor-clear-path\').addEventListener(\'click\', this.clearPath.bind(this));\n document.getElementById(\'editor-clear-all\').addEventListener(\'click\', this.clearAll.bind(this));\n\n document.getElementById(\'editor-save\').addEventListener(\'click\', this.saveClicked.bind(this));\n document.getElementById(\'editor-load\').addEventListener(\'click\', this.loadClicked.bind(this));\n document.getElementById(\'editor-share\').addEventListener(\'click\', this.shareClicked.bind(this));\n\n document.addEventListener(\'keydown\', this.keyDown.bind(this));\n document.addEventListener(\'keyup\', this.keyUp.bind(this));\n\n const resolution = new THREE.Vector2(this.canvas.clientWidth, this.canvas.clientHeight);\n this.centerlineObject = new THREE.Mesh(\n new THREE.Geometry(),\n new MeshLineMaterial({\n color: new THREE.Color(0x004488),\n lineWidth: 8,\n resolution: resolution,\n sizeAttenuation: false,\n near: camera.near,\n far: camera.far,\n depthWrite: false\n })\n );\n this.centerlineObject.rotation.x = Math.PI / 2;\n this.centerlineObject.renderOrder = 1;\n this.group.add(this.centerlineObject);\n\n this.leftBoundaryObject = new THREE.Mesh(\n new THREE.Geometry(),\n new MeshLineMaterial({\n color: new THREE.Color(0xff40ff),\n lineWidth: 0.15,\n resolution: resolution,\n transparent: true,\n opacity: 0.7\n })\n );\n this.leftBoundaryObject.rotation.x = Math.PI / 2;\n this.leftBoundaryObject.renderOrder = 1;\n this.group.add(this.leftBoundaryObject);\n\n this.rightBoundaryObject = new THREE.Mesh(\n new THREE.Geometry(),\n new MeshLineMaterial({\n color: new THREE.Color(0xff40ff),\n lineWidth: 0.15,\n resolution: resolution,\n transparent: true,\n opacity: 0.7\n })\n );\n this.rightBoundaryObject.rotation.x = Math.PI / 2;\n this.rightBoundaryObject.renderOrder = 1;\n this.group.add(this.rightBoundaryObject);\n\n window.addEventListener(\'resize\', () => {\n // Use setTimeout to queue the resolution update after the canvas is reflowed.\n // This gets around some weirdness noticed when opening and closing Chrome Developer Tools.\n setTimeout(() => {\n const resolution = new THREE.Vector2(this.canvas.clientWidth, this.canvas.clientHeight);\n this.centerlineObject.material.uniforms.resolution.value = resolution;\n this.leftBoundaryObject.material.uniforms.resolution.value = resolution;\n this.rightBoundaryObject.material.uniforms.resolution.value = resolution;\n }, 0);\n });\n }\n\n get enabled() {\n return this.isEnabled;\n }\n\n set enabled(e) {\n this.isEnabled = e;\n this.pointGroup.visible = this.obstacleGroup.visible = !!this.isEnabled\n }\n\n get staticObstacles() {\n return this.obstacleGroup.children.map(o => new StaticObstacle(new THREE.Vector2(o.position.x, o.position.z), -o.rotation.z, o.userData.width, o.userData.height));\n }\n\n get dynamicObstacles() {\n return this.dynamicObstacleEditor.collectDynamicObstacles();\n }\n\n get initialSpeed() {\n let speed = parseFloat(this.initialSpeedDom.value);\n if (Number.isNaN(speed) || speed < 0)\n speed = 0;\n\n return Number.isNaN(speed) || speed < 0 ? INITIAL_SPEED_FALLBACK : speed;\n }\n\n get speedLimit() {\n let limit = parseFloat(this.speedLimitDom.value);\n if (Number.isNaN(limit) || limit < 0)\n limit = 0;\n\n return Number.isNaN(limit) || limit < 0 ? SPEED_LIMIT_FALLBACK : limit;\n }\n\n scenarioToJSON() {\n const trunc = n => +n.toFixed(5);\n\n const json = {\n p: Array.prototype.concat.apply([], this.lanePath.anchors.map(a => [trunc(a.x), trunc(a.y)])),\n s: this.staticObstacles.map(o => o.toJSON()),\n d: this.dynamicObstacleEditor.toJSON(),\n l: Number(this.lanePath.arcLength.toFixed(3)),\n c: {\n s: this.initialSpeedDom.value,\n sl: this.speedLimitDom.value,\n lp: this.lanePreference\n },\n v: 1\n };\n\n return json;\n }\n\n loadJSON(json) {\n if (json.p === undefined || json.p.length % 2 != 0) {\n throw new Error(\'Incomplete lane path.\');\n }\n\n this.clearAll();\n\n this.lanePath = new LanePath();\n for (let i = 0; i < json.p.length; i += 2) {\n this.addPoint(new THREE.Vector2(json.p[i], json.p[i + 1]), false);\n }\n this.lanePath.resampleAll();\n this.rebuildPathGeometry();\n\n json.s.forEach(o => {\n const staticObstacle = StaticObstacle.fromJSON(o);\n this.addStaticObstacle(new THREE.Vector3(staticObstacle.pos.x, 0, staticObstacle.pos.y), staticObstacle.width, staticObstacle.height, staticObstacle.rot)\n });\n\n this.dynamicObstacleEditor.loadJSON(json.d);\n\n let initialSpeed = INITIAL_SPEED_FALLBACK;\n let speedLimit = SPEED_LIMIT_FALLBACK;\n try { initialSpeed = json.c.s; } catch (e) { }\n try { speedLimit = json.c.sl; } catch (e) { }\n\n this.initialSpeedDom.value = initialSpeed;\n this.speedLimitDom.value = speedLimit;\n\n let lanePreference = LANE_PREFERENCE_FALLBACK;\n try {\n if (typeof(json.c.lp) === \'number\')\n lanePreference = Math.sign(json.c.lp) || LANE_PREFERENCE_FALLBACK;\n } catch (e) { }\n\n this._changeLanePreference(lanePreference);\n }\n\n update() {\n if (!this.isEnabled) return;\n\n this.raycaster.setFromCamera(this.mouse, this.camera);\n const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE);\n\n const [station, latitude, _around] = this.lanePath.stationLatitudeFromPosition(new THREE.Vector2(intersection.x, intersection.z));\n this.statsStation.textContent = (station || 0).toFixed(1);\n this.statsLatitude.textContent = (latitude || 0).toFixed(1);\n\n if (this.draggingPoint) {\n if (intersection != null) {\n this.updatePoint(this.draggingPoint, intersection.clone().add(this.dragOffset));\n this.rebuildPathGeometry();\n }\n } else if (this.draggingObstacle) {\n if (intersection !== null) {\n if (this.draggingObstacle === true) {\n if (this.draggingObstaclePreview) this.group.remove(this.draggingObstaclePreview);\n\n const [center, width, height] = this._dimensionsFromRect(this.dragOffset, intersection);\n\n this.draggingObstaclePreview = new THREE.Mesh(\n new THREE.PlaneGeometry(width, height),\n new THREE.MeshBasicMaterial({ color: NORMAL_STATIC_OBSTACLE_COLOR, depthTest: false, transparent: true, opacity: 0.4 })\n );\n this.draggingObstaclePreview.rotation.x = -Math.PI / 2;\n this.draggingObstaclePreview.position.copy(center);\n this.group.add(this.draggingObstaclePreview);\n } else {\n this.draggingObstacle.position.copy(intersection.clone().add(this.dragOffset));\n }\n }\n } else if (this.rotatingObstacle) {\n const rotation = (this.dragOffset.x - this.mouse.x) * 2 * Math.PI;\n this.rotatingObstacle.rotation.z = Math.wrapAngle(rotation + this.initialObstacleRotation);\n } else {\n this.pointGroup.children.forEach(p => {\n p.material.color.set(NORMAL_POINT_COLOR)\n p.material.opacity = NORMAL_OPACITY;\n });\n\n this.obstacleGroup.children.forEach(o => {\n o.material.color.set(NORMAL_STATIC_OBSTACLE_COLOR)\n o.material.opacity = NORMAL_OPACITY;\n });\n\n this.canvas.classList.remove(\'editor-grab\', \'editor-grabbing\', \'editor-removing\');\n\n if (this.editMode == \'path\' && this.pointGroup.children.length > 0) {\n let picked = null;\n this.raycaster.intersectObjects(this.pointGroup.children).forEach(p => {\n if (picked === null || p.object.userData.index > picked.object.userData.index) picked = p;\n });\n\n if (picked) {\n picked.object.material.color.set(HOVER_POINT_COLOR);\n picked.object.material.opacity = HOVER_OPACITY;\n\n if (this.removeMode)\n this.canvas.classList.add(\'editor-removing\');\n else\n this.canvas.classList.add(\'editor-grab\');\n }\n } else if (this.editMode == \'staticObstacles\' && this.obstacleGroup.children.length > 0) {\n let picked = null;\n this.raycaster.intersectObjects(this.obstacleGroup.children).forEach(o => {\n if (picked === null || o.object.userData.index > picked.object.userData.index) picked = o;\n });\n\n if (picked) {\n picked.object.material.color.set(HOVER_STATIC_OBSTACLE_COLOR);\n picked.object.material.opacity = HOVER_OPACITY;\n\n if (this.removeMode)\n this.canvas.classList.add(\'editor-removing\');\n else\n this.canvas.classList.add(\'editor-grab\');\n }\n }\n }\n }\n\n changeEditMode(mode) {\n this.editorPathButton.classList.add(\'is-outlined\');\n this.editorObstaclesButton.classList.add(\'is-outlined\');\n this.editorDynamicObstaclesButton.classList.add(\'is-outlined\');\n this.editorPathButton.classList.remove(\'is-selected\');\n this.editorObstaclesButton.classList.remove(\'is-selected\');\n this.editorDynamicObstaclesButton.classList.remove(\'is-selected\');\n this.editorRoadBox.classList.add(\'is-hidden\');\n this.helpPath.classList.add(\'is-hidden\');\n this.helpStaticObstacles.classList.add(\'is-hidden\');\n this.helpDynamicObstacles.classList.add(\'is-hidden\');\n\n if (mode == \'path\') {\n this.editMode = \'path\';\n this.editorPathButton.classList.remove(\'is-outlined\');\n this.editorPathButton.classList.add(\'is-selected\');\n this.editorRoadBox.classList.remove(\'is-hidden\');\n this.helpPath.classList.remove(\'is-hidden\');\n this.dynamicObstacleEditor.disable();\n } else if (mode == \'staticObstacles\') {\n this.editMode = \'staticObstacles\';\n this.editorObstaclesButton.classList.remove(\'is-outlined\');\n this.editorObstaclesButton.classList.add(\'is-selected\');\n this.helpStaticObstacles.classList.remove(\'is-hidden\');\n this.dynamicObstacleEditor.disable();\n } else {\n this.editMode = \'dynamicObstacles\';\n this.editorDynamicObstaclesButton.classList.remove(\'is-outlined\');\n this.editorDynamicObstaclesButton.classList.add(\'is-selected\');\n this.helpDynamicObstacles.classList.remove(\'is-hidden\');\n this.dynamicObstacleEditor.enable();\n }\n }\n\n addStaticObstacle(center, width, height, rotation = 0) {\n const obstacle = new THREE.Mesh(\n new THREE.PlaneGeometry(width, height),\n new THREE.MeshBasicMaterial({ color: NORMAL_STATIC_OBSTACLE_COLOR, depthTest: false, transparent: true, opacity: NORMAL_OPACITY })\n );\n obstacle.rotation.x = -Math.PI / 2;\n obstacle.rotation.z = -Math.wrapAngle(rotation);\n obstacle.position.copy(center);\n obstacle.userData = { index: this.obstacleIndex++, width: width, height: height };\n\n this.obstacleGroup.add(obstacle);\n this.statsStaticObstacles.textContent = this.obstacleGroup.children.length;\n }\n\n removeStaticObstacle(obstacle) {\n this.obstacleGroup.remove(obstacle);\n this.statsStaticObstacles.textContent = this.obstacleGroup.children.length;\n }\n\n clearStaticObstacles() {\n this.group.remove(this.obstacleGroup);\n this.obstacleGroup = new THREE.Group();\n this.obstacleGroup.renderOrder = 1;\n this.group.add(this.obstacleGroup);\n this.obstacleIndex = 0;\n this.statsStaticObstacles.textContent = 0;\n }\n\n clearAll() {\n this.clearPath();\n this.clearStaticObstacles();\n this.dynamicObstacleEditor.clearDynamicObstacles();\n }\n\n rebuildPathGeometry() {\n if (this.lanePath.anchors.length > 1) {\n this.centerlineGeometry.setFromPoints(this.lanePath.centerline);\n const centerline = new MeshLine();\n centerline.setGeometry(this.centerlineGeometry);\n this.centerlineObject.geometry = centerline.geometry;\n\n this.leftBoundaryGeometry.setFromPoints(this.lanePath.leftBoundary);\n const leftBoundary = new MeshLine();\n leftBoundary.setGeometry(this.leftBoundaryGeometry);\n this.leftBoundaryObject.geometry = leftBoundary.geometry;\n\n this.rightBoundaryGeometry.setFromPoints(this.lanePath.rightBoundary);\n const rightBoundary = new MeshLine();\n rightBoundary.setGeometry(this.rightBoundaryGeometry);\n this.rightBoundaryObject.geometry = rightBoundary.geometry;\n } else {\n this.centerlineObject.geometry.dispose();\n this.centerlineObject.geometry = new THREE.Geometry();\n\n this.leftBoundaryObject.geometry.dispose();\n this.leftBoundaryObject.geometry = new THREE.Geometry();\n\n this.rightBoundaryObject.geometry.dispose();\n this.rightBoundaryObject.geometry = new THREE.Geometry();\n }\n\n this.statsRoadLength.textContent = this.lanePath.arcLength.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 });\n }\n\n addPoint(pos, resample = true) {\n const point = new THREE.Mesh(\n new THREE.CircleGeometry(1, 32),\n new THREE.MeshBasicMaterial({\n color: NORMAL_POINT_COLOR,\n depthTest: false,\n transparent: true,\n opacity: NORMAL_OPACITY\n })\n );\n point.rotation.x = -Math.PI / 2;\n point.position.set(pos.x, 0, pos.y);\n point.userData = { index: this.pointIndex++ };\n\n this.lanePath.addAnchor(pos, resample);\n this.pointGroup.add(point);\n\n return point;\n }\n\n updatePoint(object, pos) {\n object.position.copy(pos);\n this.lanePath.updateAnchor(object.userData.index, new THREE.Vector2(pos.x, pos.z));\n }\n\n removePoint(object) {\n const index = object.userData.index;\n\n this.pointGroup.remove(object);\n this.pointGroup.children.forEach(p => {\n if (p.userData.index > index) p.userData.index--;\n });\n this.pointIndex--;\n\n this.lanePath.removeAnchor(index);\n }\n\n clearPath() {\n this.group.remove(this.pointGroup);\n this.pointGroup = new THREE.Group();\n this.pointGroup.renderOrder = 2;\n this.group.add(this.pointGroup);\n this.pointIndex = 0;\n\n this.lanePath = new LanePath();\n this.rebuildPathGeometry();\n\n this.initialSpeedDom.value = INITIAL_SPEED_FALLBACK;\n this.speedLimitDom.value = SPEED_LIMIT_FALLBACK;\n }\n\n keyDown(event) {\n if (event.repeat || this.editMode != \'path\' && this.editMode != \'staticObstacles\') return;\n\n if (event.key == \'Shift\') {\n this.removeMode = true;\n this.canvas.classList.add(\'editor-pointing\');\n event.preventDefault();\n } else if (event.key == \'Control\' && this.editMode == \'staticObstacles\') {\n this.rotateMode = true;\n this.canvas.classList.add(\'editor-pointing\');\n event.preventDefault();\n }\n }\n\n keyUp(event) {\n if (event.key == \'Shift\') {\n this.removeMode = false;\n this.canvas.classList.remove(\'editor-pointing\', \'editor-removing\');\n } else if (event.key == \'Control\') {\n this.rotateMode = false;\n this.canvas.classList.remove(\'editor-pointing\', \'editor-grabbing\');\n }\n }\n\n mouseDown(event) {\n if (!this.isEnabled || event.button != 0) return;\n\n this.mouse.x = (event.offsetX / this.canvas.clientWidth) * 2 - 1;\n this.mouse.y = -(event.offsetY / this.canvas.clientHeight) * 2 + 1;\n\n this.raycaster.setFromCamera(this.mouse, this.camera);\n\n if (this.editMode == \'path\') {\n let picked = null;\n this.raycaster.intersectObjects(this.pointGroup.children).forEach(p => {\n if (picked === null || p.object.userData.index > picked.object.userData.index) picked = p;\n });\n\n if (picked) {\n if (this.removeMode) {\n this.removePoint(picked.object);\n this.rebuildPathGeometry();\n } else {\n this.canvas.classList.remove(\'editor-grab\');\n this.canvas.classList.add(\'editor-grabbing\');\n\n this.draggingPoint = picked.object;\n this.dragOffset.copy(picked.object.position).sub(picked.point);\n }\n } else if (!this.removeMode) {\n const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE);\n if (intersection != null) {\n this.addPoint(new THREE.Vector2(intersection.x, intersection.z));\n this.rebuildPathGeometry();\n }\n }\n } else if (this.editMode == \'staticObstacles\') {\n let picked = null;\n this.raycaster.intersectObjects(this.obstacleGroup.children).forEach(o => {\n if (picked === null || o.object.userData.index > picked.object.userData.index) picked = o;\n });\n\n if (picked) {\n if (this.removeMode) {\n this.removeStaticObstacle(picked.object);\n } else {\n this.canvas.classList.remove(\'editor-grab\');\n this.canvas.classList.add(\'editor-grabbing\');\n\n if (this.rotateMode) {\n this.rotatingObstacle = picked.object;\n this.initialObstacleRotation = picked.object.rotation.z;\n this.dragOffset.set(this.mouse.x, this.mouse.y, 0);\n } else {\n this.draggingObstacle = picked.object;\n this.dragOffset.copy(picked.object.position).sub(picked.point);\n }\n }\n } else if (!this.removeMode && !this.rotateMode) {\n const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE);\n if (intersection != null) {\n this.draggingObstacle = true;\n this.dragOffset.copy(intersection);\n }\n }\n }\n }\n\n mouseMove(event) {\n this.mouse.x = (event.offsetX / this.canvas.clientWidth) * 2 - 1;\n this.mouse.y = -(event.offsetY / this.canvas.clientHeight) * 2 + 1;\n }\n\n mouseUp(event) {\n if (!this.isEnabled || event.button != 0) return;\n\n if (this.draggingObstacle === true) {\n this.group.remove(this.draggingObstaclePreview);\n this.draggingObstaclePreview = null;\n\n this.mouse.x = (event.offsetX / this.canvas.clientWidth) * 2 - 1;\n this.mouse.y = -(event.offsetY / this.canvas.clientHeight) * 2 + 1;\n\n this.raycaster.setFromCamera(this.mouse, this.camera);\n\n const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE);\n if (intersection != null) {\n const [center, width, height] = this._dimensionsFromRect(this.dragOffset, intersection);\n this.addStaticObstacle(center, width, height);\n }\n }\n\n this.draggingPoint = null;\n this.draggingObstacle = null;\n this.rotatingObstacle = null;\n this.canvas.classList.remove(\'editor-grab\', \'editor-grabbing\');\n }\n\n updateSavedInfo(name, savedAt) {\n this.previousSavedName = name || null;\n\n name = name || \'Untitled\';\n savedAt = savedAt || \'Unsaved\';\n\n this.scenarioNameDom.textContent = name;\n this.scenarioNameDom.title = name;\n this.scenarioSavedAtDom.textContent = savedAt;\n }\n\n _changeLanePreference(pref) {\n this.lanePreference = pref;\n\n if (pref > 0) {\n this.laneLeftDom.classList.add(\'is-outlined\');\n this.laneLeftDom.classList.remove(\'is-selected\');\n this.laneRightDom.classList.remove(\'is-outlined\');\n this.laneRightDom.classList.add(\'is-selected\');\n } else {\n this.laneRightDom.classList.add(\'is-outlined\');\n this.laneRightDom.classList.remove(\'is-selected\');\n this.laneLeftDom.classList.remove(\'is-outlined\');\n this.laneLeftDom.classList.add(\'is-selected\');\n }\n }\n\n saveClicked() {\n const name = window.prompt(\'Name your scenario:\', this.previousSavedName || \'\');\n if (name === null) return;\n if (name === \'\') {\n window.alert(\'The scenario name cannot be blank.\');\n return;\n }\n\n let [success, savedAt] = this.scenarioManager.saveScenario(name, this.scenarioToJSON(), name === this.previousSavedName);\n const formattedSavedAt = formatDate(savedAt);\n\n if (success) {\n this.updateSavedInfo(name, formattedSavedAt);\n } else if (confirm(`A scenario named "${name}" already exists, last saved ${formattedSavedAt}. Do you want to overwrite it?`)) {\n [success, savedAt] = this.scenarioManager.saveScenario(name, this.scenarioToJSON(), true);\n this.updateSavedInfo(name, formatDate(savedAt));\n }\n }\n\n loadClicked() {\n this.scenarioManager.showModal();\n }\n\n shareClicked() {\n this.shareManager.showModal(this.scenarioToJSON());\n }\n\n _dimensionsFromRect(from, to) {\n const center = from.clone().add(to).divideScalar(2);\n const width = Math.max(0.5, Math.abs(from.x - to.x));\n const height = Math.max(0.5, Math.abs(from.z - to.z));\n return [center, width, height];\n }\n}\n\n;// CONCATENATED MODULE: ./js/simulator/OrbitControls.js\n/**\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n */\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one finger move\n// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish\n// Pan - right mouse, or arrow keys / touch: three finger swipe\n\nconst OrbitControls = function ( object, domElement ) {\n\n\tthis.object = object;\n\n\tthis.domElement = ( domElement !== undefined ) ? domElement : document;\n\n\t// Set to false to disable this control\n\tthis.enabled = true;\n\n\t// "target" sets the location of focus, where the object orbits around\n\tthis.target = new THREE.Vector3();\n\n\t// How far you can dolly in and out ( PerspectiveCamera only )\n\tthis.minDistance = 0;\n\tthis.maxDistance = Infinity;\n\n\t// How far you can zoom in and out ( OrthographicCamera only )\n\tthis.minZoom = 0;\n\tthis.maxZoom = Infinity;\n\n\t// How far you can orbit vertically, upper and lower limits.\n\t// Range is 0 to Math.PI radians.\n\tthis.minPolarAngle = 0; // radians\n\tthis.maxPolarAngle = Math.PI; // radians\n\n\t// How far you can orbit horizontally, upper and lower limits.\n\t// If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n\tthis.minAzimuthAngle = - Infinity; // radians\n\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t// Set to true to enable damping (inertia)\n\t// If damping is enabled, you must call controls.update() in your animation loop\n\tthis.enableDamping = false;\n\tthis.dampingFactor = 0.25;\n\n\t// This option actually enables dollying in and out; left as "zoom" for backwards compatibility.\n\t// Set to false to disable zooming\n\tthis.enableZoom = true;\n\tthis.zoomSpeed = 1.0;\n\n\t// Set to false to disable rotating\n\tthis.enableRotate = true;\n\tthis.rotateSpeed = 1.0;\n\n\t// Set to false to disable panning\n\tthis.enablePan = true;\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t// Set to true to automatically rotate around the target\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\tthis.autoRotate = false;\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\n\n\t// Set to false to disable use of the keys\n\tthis.enableKeys = true;\n\n\t// The four arrow keys\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\n\n\t// Mouse buttons\n\tthis.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT };\n\n\t// for reset\n\tthis.target0 = this.target.clone();\n\tthis.position0 = this.object.position.clone();\n\tthis.zoom0 = this.object.zoom;\n\n\t//\n\t// public methods\n\t//\n\n\tthis.getPolarAngle = function () {\n\n\t\treturn spherical.phi;\n\n\t};\n\n\tthis.getAzimuthalAngle = function () {\n\n\t\treturn spherical.theta;\n\n\t};\n\n\tthis.saveState = function () {\n\n\t\tscope.target0.copy( scope.target );\n\t\tscope.position0.copy( scope.object.position );\n\t\tscope.zoom0 = scope.object.zoom;\n\n\t};\n\n\tthis.reset = function () {\n\n\t\tscope.target.copy( scope.target0 );\n\t\tscope.object.position.copy( scope.position0 );\n\t\tscope.object.zoom = scope.zoom0;\n\n\t\tscope.object.updateProjectionMatrix();\n\t\tscope.dispatchEvent( changeEvent );\n\n\t\tscope.update();\n\n\t\tstate = STATE.NONE;\n\n\t};\n\n this.rotateLeft = function(angle) {\n rotateLeft(angle);\n }\n\n\t// this method is exposed, but perhaps it would be better if we can make it private...\n\tthis.update = function () {\n\n\t\tvar offset = new THREE.Vector3();\n\n\t\t// so camera.up is the orbit axis\n\t\tvar quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) );\n\t\tvar quatInverse = quat.clone().inverse();\n\n\t\tvar lastPosition = new THREE.Vector3();\n\t\tvar lastQuaternion = new THREE.Quaternion();\n\n\t\treturn function update() {\n\n\t\t\tvar position = scope.object.position;\n\n\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t// rotate offset to "y-axis-is-up" space\n\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t// angle from z-axis around y-axis\n\t\t\tspherical.setFromVector3( offset );\n\n\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t}\n\n\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t// restrict theta to be between desired limits\n\t\t\tspherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) );\n\n\t\t\t// restrict phi to be between desired limits\n\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\tspherical.makeSafe();\n\n\n\t\t\tspherical.radius *= scale;\n\n\t\t\t// restrict radius to be between desired limits\n\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t// move target to panned location\n\t\t\tscope.target.add( panOffset );\n\n\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t// rotate offset back to "camera-up-vector-is-up" space\n\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t} else {\n\n\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t}\n\n\t\t\tscale = 1;\n\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t// update condition is:\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\tif ( zoomChanged ||\n\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\tscope.dispatchEvent( changeEvent );\n\n\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\tzoomChanged = false;\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t\treturn false;\n\n\t\t};\n\n\t}();\n\n\tthis.dispose = function () {\n\n\t\tscope.domElement.removeEventListener( \'contextmenu\', onContextMenu, false );\n\t\tscope.domElement.removeEventListener( \'mousedown\', onMouseDown, false );\n\t\tscope.domElement.removeEventListener( \'wheel\', onMouseWheel, false );\n\n\t\tscope.domElement.removeEventListener( \'touchstart\', onTouchStart, false );\n\t\tscope.domElement.removeEventListener( \'touchend\', onTouchEnd, false );\n\t\tscope.domElement.removeEventListener( \'touchmove\', onTouchMove, false );\n\n\t\tdocument.removeEventListener( \'mousemove\', onMouseMove, false );\n\t\tdocument.removeEventListener( \'mouseup\', onMouseUp, false );\n\n\t\twindow.removeEventListener( \'keydown\', onKeyDown, false );\n\n\t\t//scope.dispatchEvent( { type: \'dispose\' } ); // should this be added here?\n\n\t};\n\n\t//\n\t// internals\n\t//\n\n\tvar scope = this;\n\n\tvar changeEvent = { type: \'change\' };\n\tvar startEvent = { type: \'start\' };\n\tvar endEvent = { type: \'end\' };\n\n\tvar STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 };\n\n\tvar state = STATE.NONE;\n\n\tvar EPS = 0.000001;\n\n\t// current position in spherical coordinates\n\tvar spherical = new THREE.Spherical();\n\tvar sphericalDelta = new THREE.Spherical();\n\n\tvar scale = 1;\n\tvar panOffset = new THREE.Vector3();\n\tvar zoomChanged = false;\n\n\tvar rotateStart = new THREE.Vector2();\n\tvar rotateEnd = new THREE.Vector2();\n\tvar rotateDelta = new THREE.Vector2();\n\n\tvar panStart = new THREE.Vector2();\n\tvar panEnd = new THREE.Vector2();\n\tvar panDelta = new THREE.Vector2();\n\n\tvar dollyStart = new THREE.Vector2();\n\tvar dollyEnd = new THREE.Vector2();\n\tvar dollyDelta = new THREE.Vector2();\n\n\tfunction getAutoRotationAngle() {\n\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t}\n\n\tfunction getZoomScale() {\n\n\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t}\n\n\tfunction rotateLeft( angle ) {\n\n\t\tsphericalDelta.theta -= angle;\n\n\t}\n\n\tfunction rotateUp( angle ) {\n\n\t\tsphericalDelta.phi -= angle;\n\n\t}\n\n\tvar panLeft = function () {\n\n\t\tvar v = new THREE.Vector3();\n\n\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\tv.multiplyScalar( - distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\tvar panUp = function () {\n\n\t\tvar v = new THREE.Vector3();\n\n\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\tv.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix\n\t\t\tv.multiplyScalar( distance );\n\n\t\t\tpanOffset.add( v );\n\n\t\t};\n\n\t}();\n\n\t// deltaX and deltaY are in pixels; right and down are positive\n\tvar pan = function () {\n\n\t\tvar offset = new THREE.Vector3();\n\n\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t// perspective\n\t\t\t\tvar position = scope.object.position;\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\tvar targetDistance = offset.length();\n\n\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t// we actually don\'t use screenWidth, since perspective camera is fixed to screen height\n\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t// orthographic\n\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t} else {\n\n\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\tconsole.warn( \'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.\' );\n\t\t\t\tscope.enablePan = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}();\n\n\tfunction dollyIn( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale /= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( \'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.\' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\tfunction dollyOut( dollyScale ) {\n\n\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\tscale *= dollyScale;\n\n\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tzoomChanged = true;\n\n\t\t} else {\n\n\t\t\tconsole.warn( \'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.\' );\n\t\t\tscope.enableZoom = false;\n\n\t\t}\n\n\t}\n\n\t//\n\t// event callbacks - update the object state\n\t//\n\n\tfunction handleMouseDownRotate( event ) {\n\n\t\t//console.log( \'handleMouseDownRotate\' );\n\n\t\trotateStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownDolly( event ) {\n\n\t\t//console.log( \'handleMouseDownDolly\' );\n\n\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseDownPan( event ) {\n\n\t\t//console.log( \'handleMouseDownPan\' );\n\n\t\tpanStart.set( event.clientX, event.clientY );\n\n\t}\n\n\tfunction handleMouseMoveRotate( event ) {\n\n\t\t//console.log( \'handleMouseMoveRotate\' );\n\n\t\trotateEnd.set( event.clientX, event.clientY );\n\t\trotateDelta.subVectors( rotateEnd, rotateStart );\n\n\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t// rotating across whole screen goes 360 degrees around\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n\t\t// rotating up and down along whole screen attempts to go 360, but limited to 180\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMoveDolly( event ) {\n\n\t\t//console.log( \'handleMouseMoveDolly\' );\n\n\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseMovePan( event ) {\n\n\t\t//console.log( \'handleMouseMovePan\' );\n\n\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\tpanDelta.subVectors( panEnd, panStart );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleMouseUp( event ) {\n\n\t\t// console.log( \'handleMouseUp\' );\n\n\t}\n\n\tfunction handleMouseWheel( event ) {\n\n\t\t// console.log( \'handleMouseWheel\' );\n\n\t\tif ( event.deltaY < 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleKeyDown( event ) {\n\n\t\t//console.log( \'handleKeyDown\' );\n\n\t\tswitch ( event.keyCode ) {\n\n\t\t\tcase scope.keys.UP:\n\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.LEFT:\n\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t\tcase scope.keys.RIGHT:\n\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\tscope.update();\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction handleTouchStartRotate( event ) {\n\n\t\t//console.log( \'handleTouchStartRotate\' );\n\n\t\trotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t}\n\n\tfunction handleTouchStartDolly( event ) {\n\n\t\t//console.log( \'handleTouchStartDolly\' );\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyStart.set( 0, distance );\n\n\t}\n\n\tfunction handleTouchStartPan( event ) {\n\n\t\t//console.log( \'handleTouchStartPan\' );\n\n\t\tpanStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t}\n\n\tfunction handleTouchMoveRotate( event ) {\n\n\t\t//console.log( \'handleTouchMoveRotate\' );\n\n\t\trotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\t\trotateDelta.subVectors( rotateEnd, rotateStart );\n\n\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\n\n\t\t// rotating across whole screen goes 360 degrees around\n\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n\t\t// rotating up and down along whole screen attempts to go 360, but limited to 180\n\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n\t\trotateStart.copy( rotateEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleTouchMoveDolly( event ) {\n\n\t\t//console.log( \'handleTouchMoveDolly\' );\n\n\t\tvar dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX;\n\t\tvar dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY;\n\n\t\tvar distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\tdollyEnd.set( 0, distance );\n\n\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\tdollyOut( getZoomScale() );\n\n\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\tdollyIn( getZoomScale() );\n\n\t\t}\n\n\t\tdollyStart.copy( dollyEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleTouchMovePan( event ) {\n\n\t\t//console.log( \'handleTouchMovePan\' );\n\n\t\tpanEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );\n\n\t\tpanDelta.subVectors( panEnd, panStart );\n\n\t\tpan( panDelta.x, panDelta.y );\n\n\t\tpanStart.copy( panEnd );\n\n\t\tscope.update();\n\n\t}\n\n\tfunction handleTouchEnd( event ) {\n\n\t\t//console.log( \'handleTouchEnd\' );\n\n\t}\n\n\t//\n\t// event handlers - FSM: listen for events and reset state\n\t//\n\n\tfunction onMouseDown( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( event.button ) {\n\n\t\t\tcase scope.mouseButtons.ORBIT:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\tbreak;\n\n\t\t\tcase scope.mouseButtons.ZOOM:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase scope.mouseButtons.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tdocument.addEventListener( \'mousemove\', onMouseMove, false );\n\t\t\tdocument.addEventListener( \'mouseup\', onMouseUp, false );\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onMouseMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t\tswitch ( state ) {\n\n\t\t\tcase STATE.ROTATE:\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.DOLLY:\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase STATE.PAN:\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction onMouseUp( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleMouseUp( event );\n\n\t\tdocument.removeEventListener( \'mousemove\', onMouseMove, false );\n\t\tdocument.removeEventListener( \'mouseup\', onMouseUp, false );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onMouseWheel( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\thandleMouseWheel( event );\n\n\t\tscope.dispatchEvent( startEvent ); // not sure why these are here...\n\t\tscope.dispatchEvent( endEvent );\n\n\t}\n\n\tfunction onKeyDown( event ) {\n\n\t\tif ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return;\n\n\t\thandleKeyDown( event );\n\n\t}\n\n\tfunction onTouchStart( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1:\t// one-fingered touch: rotate\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\thandleTouchStartRotate( event );\n\n\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\t// two-fingered touch: dolly\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\thandleTouchStartDolly( event );\n\n\t\t\t\tstate = STATE.TOUCH_DOLLY;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 3: // three-fingered touch: pan\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\thandleTouchStartPan( event );\n\n\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t\tif ( state !== STATE.NONE ) {\n\n\t\t\tscope.dispatchEvent( startEvent );\n\n\t\t}\n\n\t}\n\n\tfunction onTouchMove( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tswitch ( event.touches.length ) {\n\n\t\t\tcase 1: // one-fingered touch: rotate\n\n\t\t\t\tif ( scope.enableRotate === false ) return;\n\t\t\t\tif ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?...\n\n\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 2: // two-fingered touch: dolly\n\n\t\t\t\tif ( scope.enableZoom === false ) return;\n\t\t\t\tif ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?...\n\n\t\t\t\thandleTouchMoveDolly( event );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 3: // three-fingered touch: pan\n\n\t\t\t\tif ( scope.enablePan === false ) return;\n\t\t\t\tif ( state !== STATE.TOUCH_PAN ) return; // is this needed?...\n\n\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tstate = STATE.NONE;\n\n\t\t}\n\n\t}\n\n\tfunction onTouchEnd( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\thandleTouchEnd( event );\n\n\t\tscope.dispatchEvent( endEvent );\n\n\t\tstate = STATE.NONE;\n\n\t}\n\n\tfunction onContextMenu( event ) {\n\n\t\tif ( scope.enabled === false ) return;\n\n\t\tevent.preventDefault();\n\n\t}\n\n\t//\n\n\tscope.domElement.addEventListener( \'contextmenu\', onContextMenu, false );\n\n\tscope.domElement.addEventListener( \'mousedown\', onMouseDown, false );\n\tscope.domElement.addEventListener( \'wheel\', onMouseWheel, false );\n\n\tscope.domElement.addEventListener( \'touchstart\', onTouchStart, false );\n\tscope.domElement.addEventListener( \'touchend\', onTouchEnd, false );\n\tscope.domElement.addEventListener( \'touchmove\', onTouchMove, false );\n\n\twindow.addEventListener( \'keydown\', onKeyDown, false );\n\n\t// force an update at start\n\n\tthis.update();\n\n};\n\nOrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype );\nOrbitControls.prototype.constructor = OrbitControls;\n\nObject.defineProperties( OrbitControls.prototype, {\n\n\tcenter: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( \'OrbitControls: .center has been renamed to .target\' );\n\t\t\treturn this.target;\n\n\t\t}\n\n\t},\n\n\t// backward compatibility\n\n\tnoZoom: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( \'OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.\' );\n\t\t\treturn ! this.enableZoom;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( \'OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.\' );\n\t\t\tthis.enableZoom = ! value;\n\n\t\t}\n\n\t},\n\n\tnoRotate: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( \'OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.\' );\n\t\t\treturn ! this.enableRotate;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( \'OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.\' );\n\t\t\tthis.enableRotate = ! value;\n\n\t\t}\n\n\t},\n\n\tnoPan: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( \'OrbitControls: .noPan has been deprecated. Use .enablePan instead.\' );\n\t\t\treturn ! this.enablePan;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( \'OrbitControls: .noPan has been deprecated. Use .enablePan instead.\' );\n\t\t\tthis.enablePan = ! value;\n\n\t\t}\n\n\t},\n\n\tnoKeys: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( \'OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.\' );\n\t\t\treturn ! this.enableKeys;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( \'OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.\' );\n\t\t\tthis.enableKeys = ! value;\n\n\t\t}\n\n\t},\n\n\tstaticMoving: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( \'OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.\' );\n\t\t\treturn ! this.enableDamping;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( \'OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.\' );\n\t\t\tthis.enableDamping = ! value;\n\n\t\t}\n\n\t},\n\n\tdynamicDampingFactor: {\n\n\t\tget: function () {\n\n\t\t\tconsole.warn( \'OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.\' );\n\t\t\treturn this.dampingFactor;\n\n\t\t},\n\n\t\tset: function ( value ) {\n\n\t\t\tconsole.warn( \'OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.\' );\n\t\t\tthis.dampingFactor = value;\n\n\t\t}\n\n\t}\n\n} );\n\n/* harmony default export */ const simulator_OrbitControls = (OrbitControls);\n\n;// CONCATENATED MODULE: ./js/simulator/TopDownCameraControls.js\nconst groundPlane = new THREE.Plane(new THREE.Vector3(0, 1, 0));\nlet panning = false;\n\nclass TopDownCameraControls {\n constructor(domElement, camera) {\n this.domElement = domElement;\n this.camera = camera;\n this.enablePanning = false;\n this.enabled = true;\n\n this.minAltitude = Number.NEGATIVE_INFINITY;\n this.maxAltitude = Number.POSITIVE_INFINITY;\n\n this.mouseDown = this.mouseDown.bind(this);\n this.mouseMove = this.mouseMove.bind(this);\n this.mouseUp = this.mouseUp.bind(this);\n this.wheel = this.wheel.bind(this);\n\n this.domElement.addEventListener(\'mousedown\', this.mouseDown);\n this.domElement.addEventListener(\'mousemove\', this.mouseMove);\n this.domElement.addEventListener(\'mouseup\', this.mouseUp);\n this.domElement.addEventListener(\'wheel\', this.wheel);\n }\n\n reset(prevCamera) {\n const lookAt = new THREE.Vector3(0, 0, -1);\n lookAt.applyQuaternion(prevCamera.quaternion);\n\n const ray = new THREE.Ray(prevCamera.position, lookAt);\n const intersection = ray.intersectPlane(groundPlane);\n\n if (intersection) {\n this.camera.position.set(intersection.x, 50, intersection.z);\n } else {\n this.camera.position.y = 50;\n }\n\n this.camera.rotation.set(-Math.PI / 2, 0, 0);\n }\n\n mouseDown(event) {\n if (!this.enabled || !this.enablePanning || event.button != 2) return;\n panning = true;\n }\n\n mouseMove(event) {\n if (panning) {\n const distance = 2 * this.camera.position.y * Math.tan((this.camera.fov / 2) * Math.PI / 180) / this.domElement.clientHeight;\n this.camera.position.x -= distance * event.movementX;\n this.camera.position.z -= distance * event.movementY;\n }\n }\n\n mouseUp(event) {\n if (event.button != 2) return;\n panning = false;\n }\n\n wheel(event) {\n if (!this.enabled) return;\n\n event.preventDefault();\n\n this.camera.position.y = Math.max(this.minAltitude, Math.min(this.maxAltitude, this.camera.position.y * Math.pow(0.995, -event.deltaY)));\n }\n}\n\n;// CONCATENATED MODULE: ./js/simulator/Dashboard.js\n\n\nconst MPS_TO_MPH = 2.23694;\nconst METERS_TO_FEET = 3.28084;\n\nclass Dashboard {\n constructor(car) {\n this.car = car;\n this.units = \'metric\';\n\n if (document.readyState == \'complete\') {\n this.fetchDomElements.call(this);\n } else {\n document.addEventListener(\'readystatechange\', event => {\n if (event.target.readyState == \'complete\')\n this.fetchDomElements.call(this);\n });\n }\n }\n\n fetchDomElements() {\n this.wheelDom = document.getElementById(\'wheel\');\n this.wheelPieDom = document.getElementById(\'wheel-pie\');\n this.wheelPieLeftDom = document.getElementById(\'wheel-pie-left\');\n this.wheelPieRightDom = document.getElementById(\'wheel-pie-right\');\n this.gearDom = document.getElementById(\'gear\');\n this.gasDom = document.getElementById(\'gas\');\n this.brakeDom = document.getElementById(\'brake\');\n this.speedDom = document.getElementById(\'speed\');\n this.stationDom = document.getElementById(\'station\');\n this.latitudeDom = document.getElementById(\'latitude\');\n this.planTimeDom = document.getElementById(\'plan-time\');\n this.elapsedTimeDom = document.getElementById(\'elapsed-time\');\n\n this.speedUnitsDom = document.getElementById(\'speed-units\');\n this.stationUnitsDom = document.getElementById(\'station-units\');\n this.latitudeUnitsDom = document.getElementById(\'latitude-units\');\n\n [this.speedUnitsDom, this.stationUnitsDom, this.latitudeUnitsDom].forEach(el => {\n el.addEventListener(\'click\', event => {\n this.toggleUnits();\n });\n });\n }\n\n toggleUnits() {\n let speedUnits;\n let distanceUnits;\n\n if (this.units == \'metric\') {\n this.units = \'imperial\';\n speedUnits = \'mph\';\n distanceUnits = \'feet\';\n } else {\n this.units = \'metric\';\n speedUnits = \'m/s\';\n distanceUnits = \'meters\';\n }\n\n this.speedUnitsDom.textContent = speedUnits;\n this.stationUnitsDom.textContent = distanceUnits;\n this.latitudeUnitsDom.textContent = distanceUnits;\n }\n\n updatePlanTime(planTime) {\n if (!this.wheelDom) return;\n\n this.planTimeDom.textContent = planTime !== null ? (planTime).toLocaleString(undefined, { maximumFractionDigits: 3 }) : \'—\';\n }\n\n update(controls, speed, station, latitude, elapsedTime, planTime) {\n if (!this.wheelDom) return;\n\n const wheelTurn = Math.clamp(this.car.wheelAngle / Car_Car.MAX_WHEEL_ANGLE * 0.95, -1, +1);\n\n this.wheelDom.style.transform = `rotate(${wheelTurn}turn)`;\n\n if (wheelTurn >= 0) {\n this.wheelPieRightDom.style.transform = `rotate(${wheelTurn}turn)`;\n\n if (wheelTurn <= 0.5) {\n this.wheelPieDom.style.clipPath = "inset(0 0 0 50%)";\n this.wheelPieLeftDom.style.transform = "rotate(0)";\n } else {\n this.wheelPieDom.style.clipPath = "inset(0 0 0 0)";\n this.wheelPieLeftDom.style.transform = "rotate(0.5turn)";\n }\n } else {\n this.wheelPieRightDom.style.transform = `rotate(${0.5 + wheelTurn}turn)`;\n\n if (wheelTurn >= -0.5) {\n this.wheelPieDom.style.clipPath = "inset(0 50% 0 0)";\n this.wheelPieLeftDom.style.transform = "rotate(0.5turn)";\n } else {\n this.wheelPieDom.style.clipPath = "inset(0 0 0 0)";\n this.wheelPieLeftDom.style.transform = "rotate(0)";\n }\n }\n\n this.gearDom.innerText = controls.gas < 0 ? \'R\' : \'D\';\n this.brakeDom.style.clipPath = `inset(50% 50% 0 ${50 - controls.brake * 25}%)`;\n this.gasDom.style.clipPath = `inset(50% ${50 - Math.abs(controls.gas) * 25}% 0 50%)`;\n\n if (this.units == \'imperial\') {\n speed *= MPS_TO_MPH;\n station = station !== null ? station * METERS_TO_FEET : null;\n latitude = latitude !== null ? latitude * METERS_TO_FEET : null;\n }\n\n let latitudeText = latitude !== null ? latitude.toFixed(2) : \'—\';\n if (latitudeText == \'-0.00\') latitudeText = \'0.00\';\n\n this.speedDom.textContent = speed.toFixed(1);\n this.stationDom.textContent = station !== null ? station.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 }) : \'—\';\n this.latitudeDom.textContent = latitudeText;\n this.updatePlanTime(planTime);\n\n let mins = Math.floor(elapsedTime / 60);\n let seconds = elapsedTime % 60;\n\n if (mins == 0) {\n this.elapsedTimeDom.textContent = seconds.toFixed(1);\n } else {\n if (seconds < 10)\n seconds = \'0\' + seconds.toFixed(1);\n else\n seconds = seconds.toFixed(1);\n\n this.elapsedTimeDom.textContent = `${mins}:${seconds}`;\n }\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/RoadLattice.js\nclass RoadLattice {\n constructor(lanePath, latticeStartStation, config) {\n const stationInterval = config.spatialHorizon / config.lattice.numStations;\n const centerline = lanePath.sampleStations(latticeStartStation, config.lattice.numStations, stationInterval);\n const lattice = new Array(centerline.length);\n const offset = Math.floor(config.lattice.numLatitudes / 2);\n\n for (let s = 0; s < centerline.length; s++) {\n const sample = centerline[s];\n const latitudes = lattice[s] = new Array(config.lattice.numLatitudes);\n\n for (let l = 0; l < config.lattice.numLatitudes; l++) {\n const latitude = (l - offset) / offset * config.roadWidth / 2;\n const rot = sample.rot;\n const pos = THREE.Vector2.fromAngle(rot + Math.PI / 2).multiplyScalar(latitude).add(sample.pos);\n const curv = sample.curv == 0 ? 0 : 1 / (1 / sample.curv - latitude);\n\n latitudes[l] = { pos, rot, curv };\n }\n }\n\n this.lattice = lattice;\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/xyObstacleGrid.js\nconst OBSTACLE_VERTEX_SHADER = `#version 300 es\nuniform mat3 xform;\nin vec2 position;\n\nvoid main(void) {\n gl_Position = vec4((xform * vec3(position, 1)).xy, 0, 1);\n}\n`;\n\nconst OBSTACLE_KERNEL = `\n vec4 kernel() {\n return vec4(1, 0, 0, 1);\n }\n`;\n\nlet obstacleVertices;\nlet obstacleXform;\n\n// Draw obstacle triangles to XY-space obstacle grid\n/* harmony default export */ const gpgpu_programs_xyObstacleGrid = ({\n setUp() {\n return {\n kernel: OBSTACLE_KERNEL,\n vertexShader: OBSTACLE_VERTEX_SHADER,\n output: { name: \'xyObstacleGrid\' },\n draw: (gpgpu, program) => {\n const gl = gpgpu.gl;\n\n gl.clearColor(0, 0, 0, 0);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n if (obstacleVertices.length > 0) {\n const buf = gl.createBuffer();\n\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, obstacleVertices, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(program.positionLocation);\n gl.vertexAttribPointer(program.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n const xformLocation = gl.getUniformLocation(program.glProgram, \'xform\');\n gl.uniformMatrix3fv(xformLocation, false, obstacleXform.elements);\n\n gl.drawArrays(gl.TRIANGLES, 0, obstacleVertices.length / 2);\n\n gl.deleteBuffer(buf);\n }\n }\n };\n },\n\n update(config, xyWidth, xyHeight, xyCenterPoint, vehicleXform, obstacles) {\n obstacleVertices = new Float32Array(Array.prototype.concat.apply([], obstacles.map(o => o.vertices)));\n\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -xyCenterPoint.x,\n 0, 1, -xyCenterPoint.y,\n 0, 0, 1\n );\n\n const scale = new THREE.Matrix3();\n scale.set(\n 2 / (xyWidth * config.xyGridCellSize), 0, 0,\n 0, 2 / (xyHeight * config.xyGridCellSize), 0,\n 0, 0, 1\n );\n\n obstacleXform = scale.multiply(translate).multiply(vehicleXform);\n\n return {\n width: xyWidth,\n height: xyHeight\n }\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/slObstacleGrid.js\nconst SL_OBSTACLE_KERNEL = `\n\nvec4 kernel() {\n float centerlineWidth = float(textureSize(centerline, 0).x);\n\n vec2 sl = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(slGridCellSize) + slCenterPoint;\n float centerlineCoord = sl.x / centerlineStationInterval / centerlineWidth * (centerlineWidth - 1.0) / centerlineWidth + (0.5 / centerlineWidth);\n if (centerlineCoord < 0.0 || centerlineCoord > 1.0) return vec4(0);\n\n vec3 centerlineSample = texture(centerline, vec2(centerlineCoord, 0)).xyz;\n float perpindicular = centerlineSample.z + radians(90.0);\n vec2 xy = centerlineSample.xy + sl.yy * vec2(cos(perpindicular), sin(perpindicular));\n\n vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyObstacleGrid, 0)) / vec2(xyGridCellSize) + 0.5;\n return texture(xyObstacleGrid, xyTexCoords);\n}\n\n`;\n\n// Convert XY-space obstacle grid to SL-space obstacle grid\n/* harmony default export */ const gpgpu_programs_slObstacleGrid = ({\n setUp() {\n return {\n kernel: SL_OBSTACLE_KERNEL,\n output: { name: \'slObstacleGrid\' },\n uniforms: {\n xyObstacleGrid: { type: \'outputTexture\' },\n slGridCellSize: { type: \'float\' },\n xyGridCellSize: { type: \'float\' },\n slCenterPoint: { type: \'vec2\' },\n xyCenterPoint: { type: \'vec2\' },\n centerlineStationInterval: { type: \'float\' },\n centerline: { type: \'sharedTexture\' }\n }\n }\n },\n\n update(config, slWidth, slHeight, slCenterPoint, xyCenterPoint) {\n return {\n width: slWidth,\n height: slHeight,\n uniforms: {\n slGridCellSize: config.slGridCellSize,\n xyGridCellSize: config.xyGridCellSize,\n slCenterPoint: [slCenterPoint.x, slCenterPoint.y],\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n centerlineStationInterval: config.centerlineStationInterval\n }\n }\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/slObstacleGridDilation.js\nconst SL_OBSTACLE_DILATION_KERNEL = `\n\n// TODO: test performance of returning early if non-zero pixel found\nvec4 kernel() {\n float val = 0.0;\n\n for (int d = 0; d <= collisionDilation; d++) {\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(d)).r);\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(-d)).r);\n }\n\n for (int d = collisionDilation + 1; d <= collisionDilation + hazardDilation; d++) {\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(d)).r * 0.5);\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(-d)).r * 0.5);\n }\n\n val = max(val, step(0.1, val) * 0.5);\n\n return vec4(val, 0, 0, 1);\n}\n\n`;\n\n/* harmony default export */ const gpgpu_programs_slObstacleGridDilation = ({\n setUp() {\n return [\n { // SL-space obstacle grid S dilation\n kernel: SL_OBSTACLE_DILATION_KERNEL,\n output: { name: \'slObstacleGridStationDilated\' },\n uniforms: {\n slObstacleGrid: { type: \'outputTexture\' },\n delta: { type: \'vec2\' },\n collisionDilation: { type: \'int\' },\n hazardDilation: { type: \'int\' }\n }\n },\n { // SL-space obstacle grid L dilation\n kernel: SL_OBSTACLE_DILATION_KERNEL,\n output: { name: \'slObstacleGridDilated\' },\n uniforms: {\n slObstacleGrid: { type: \'outputTexture\', name: \'slObstacleGridStationDilated\' },\n delta: { type: \'vec2\' },\n collisionDilation: { type: \'int\' },\n hazardDilation: { type: \'int\' }\n }\n }\n ];\n },\n\n update(config, slWidth, slHeight) {\n return [\n { // SL-space obstacle grid S dilation\n width: slWidth,\n height: slHeight,\n uniforms: {\n delta: [1 / slWidth, 0],\n collisionDilation: Math.ceil(config.collisionDilationS / config.slGridCellSize),\n hazardDilation: Math.ceil(config.hazardDilationS / config.slGridCellSize)\n }\n },\n { // SL-space obstacle grid L dilation\n width: slWidth,\n height: slHeight,\n uniforms: {\n delta: [0, 1 / slHeight],\n collisionDilation: Math.ceil(config.collisionDilationL / config.slGridCellSize),\n hazardDilation: Math.ceil(config.hazardDilationL / config.slGridCellSize)\n }\n }\n ];\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/slDynamicObstacleGrid.js\nconst DYNAMIC_OBSTACLE_VERTEX_SHADER = `#version 300 es\nuniform mat3 xform;\nin vec3 position;\nout float color;\n\nvoid main(void) {\n gl_Position = vec4((xform * vec3(position.xy, 1)).xy, position.z, 1);\n\n // The z coordinate is 0.25 for collision zone and 0.75 for hazard zone,\n // so that the collision zone is drawn on top.\n // Convert this to 1.0 for collision zone, 0.5 for hazard zone\n color = (1.0 - step(0.5, position.z)) * 0.5 + 0.5;\n}\n`;\n\nconst DYNAMIC_OBSTACLE_KERNEL = `\n in float color;\n\n vec4 kernel() {\n return vec4(color, 0, 0, 1);\n }\n`;\n\nlet slDynamicObstacleGrid_obstacleVertices;\nlet slDynamicObstacleGrid_obstacleXform;\nconst numDynamicFrames = 20;\n\n// Draw dynamic obstacle triangles to SL-space obstacle grid\n/* harmony default export */ const gpgpu_programs_slDynamicObstacleGrid = ({\n setUp() {\n return {\n kernel: DYNAMIC_OBSTACLE_KERNEL,\n vertexShader: DYNAMIC_OBSTACLE_VERTEX_SHADER,\n output: { name: \'slDynamicObstacleGrid\', textureType: \'2DArray\', depth: numDynamicFrames },\n draw: (gpgpu, program) => {\n const gl = gpgpu.gl;\n\n gl.enable(gl.DEPTH_TEST);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, program.inputWidth, program.inputHeight);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuffer);\n\n for (let frame = 0; frame < numDynamicFrames; frame++) {\n gl.framebufferTextureLayer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, program.outputTexture, 0, frame);\n const frameBufferStatus = (gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_COMPLETE);\n if (!frameBufferStatus)\n throw new Error(\'Error attaching float texture to framebuffer. Your device is probably incompatible.\');\n\n gl.clearColor(0, 0, 0, 0);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n if (slDynamicObstacleGrid_obstacleVertices[frame].length > 0) {\n const buf = gl.createBuffer();\n\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, slDynamicObstacleGrid_obstacleVertices[frame], gl.STATIC_DRAW);\n gl.enableVertexAttribArray(program.positionLocation);\n gl.vertexAttribPointer(program.positionLocation, 3, gl.FLOAT, false, 0, 0);\n\n const xformLocation = gl.getUniformLocation(program.glProgram, \'xform\');\n gl.uniformMatrix3fv(xformLocation, false, slDynamicObstacleGrid_obstacleXform.elements);\n\n gl.drawArrays(gl.TRIANGLES, 0, slDynamicObstacleGrid_obstacleVertices[frame].length / 3);\n\n if (frame == 0) {\n const obstacleGrid = new Float32Array(program.inputWidth * program.inputHeight * 4);\n gl.readPixels(0, 0, program.inputWidth, program.inputHeight, gl.RGBA, gl.FLOAT, obstacleGrid);\n gpgpu._dynamicObstacleGrid = obstacleGrid;\n }\n\n gl.deleteBuffer(buf);\n }\n }\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n gl.deleteRenderbuffer(renderbuffer);\n gl.disable(gl.DEPTH_TEST);\n }\n };\n },\n\n update(config, slWidth, slHeight, slCenterPoint, vehicleStation, startTime, dynamicFrameTime, dynamicObstacles) {\n slDynamicObstacleGrid_obstacleVertices = [];\n\n let time = startTime;\n for (let frame = 0; frame < numDynamicFrames; frame++) {\n const vertices = Array.prototype.concat.apply([], dynamicObstacles.map(o => o.verticesInTimeRange(time, time + dynamicFrameTime, config)));\n slDynamicObstacleGrid_obstacleVertices.push(new Float32Array(vertices));\n time += dynamicFrameTime;\n }\n\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -slCenterPoint.x - vehicleStation,\n 0, 1, -slCenterPoint.y,\n 0, 0, 1\n );\n\n const scale = new THREE.Matrix3();\n scale.set(\n 2 / (slWidth * config.slGridCellSize), 0, 0,\n 0, 2 / (slHeight * config.slGridCellSize), 0,\n 0, 0, 1\n );\n\n slDynamicObstacleGrid_obstacleXform = scale.multiply(translate);\n\n return {\n width: slWidth,\n height: slHeight\n }\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/xyslMap.js\nconst XYSL_MAP_KERNEL = `\n\nvec4 kernel() {\n vec2 xy = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(xyGridCellSize) + xyCenterPoint;\n\n int numSamples = textureSize(centerline, 0).x;\n int closest = 0;\n float closestDist = distance(xy, texelFetch(centerline, ivec2(0, 0), 0).xy);\n for (int i = 1; i < numSamples; i++) {\n float dist = distance(xy, texelFetch(centerline, ivec2(i, 0), 0).xy);\n if (dist < closestDist) {\n closestDist = dist;\n closest = i;\n }\n }\n\n vec2 closestPos = texelFetch(centerline, ivec2(closest, 0), 0).xy;\n vec2 prev, next;\n int prevIndex, nextIndex;\n\n if (closest == 0) {\n prevIndex = 0;\n nextIndex = 1;\n prev = closestPos;\n next = texelFetch(centerline, ivec2(1, 0), 0).xy;\n } else if (closest == numSamples - 1) {\n prevIndex = closest - 1;\n nextIndex = closest;\n prev = texelFetch(centerline, ivec2(prevIndex, 0), 0).xy;\n next = closestPos;\n } else {\n vec2 before = texelFetch(centerline, ivec2(closest - 1, 0), 0).xy;\n vec2 after = texelFetch(centerline, ivec2(closest + 1, 0), 0).xy;\n\n if (distance(before, xy) < distance(after, xy)) {\n prevIndex = closest - 1;\n nextIndex = closest;\n prev = before;\n next = closestPos;\n } else {\n prevIndex = closest;\n nextIndex = closest + 1;\n prev = closestPos;\n next = after;\n }\n }\n\n float dist = distance(prev, next);\n float progress = clamp(dot(xy - prev, next - prev) / dist / dist, 0.0, 1.0);\n vec2 projectedPos = (next - prev) * vec2(progress) + prev;\n\n return vec4(\n (float(prevIndex) + progress) * centerlineStationInterval,\n sign(determinant(mat2(next - prev, xy - prev))) * distance(xy, projectedPos),\n 0,\n 0\n );\n}\n\n`;\n\n// Build XY-SL map\n/* harmony default export */ const gpgpu_programs_xyslMap = ({\n setUp() {\n return {\n kernel: XYSL_MAP_KERNEL,\n output: { name: \'xyslMap\', filter: \'linear\' },\n uniforms: {\n centerline: { type: \'sharedTexture\' },\n xyCenterPoint: { type: \'vec2\' },\n xyGridCellSize: { type: \'float\'},\n centerlineStationInterval: { type: \'float\'}\n }\n };\n },\n\n update(config, xyWidth, xyHeight, xyCenterPoint) {\n return {\n width: xyWidth,\n height: xyHeight,\n uniforms: {\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n xyGridCellSize: config.xyGridCellSize,\n centerlineStationInterval: config.centerlineStationInterval\n }\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/optimizeCubicPaths.js\n// Config:\n// num stations\n// num latitudes\n// station connectivity\n// latitude connectivity\n//\n// Shared:\n// lattice\n\nconst OPTIMIZE_CUBIC_SHARED = `\n\nconst int NEWTON_ITERATIONS = 16;\nconst int RELAXATION_ITERATIONS = 16;\nconst float CONVERGENCE_ERROR = 0.01;\n\n// These two consts must stay in sync.\nconst int SIMPSONS_INTERVALS = 8;\n//const float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0);\nconst float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0);\n\nconst float PI = 3.1415926535897932384626433832795;\nconst float TWO_PI = PI + PI;\n\nconst float RELAXATION_ITERATIONS_F = float(RELAXATION_ITERATIONS);\nconst float SIMPSONS_INTERVALS_F = float(SIMPSONS_INTERVALS);\n\nfloat wrapAngle(float angle) {\n angle = mod(angle, TWO_PI);\n if (angle <= -PI) return angle + TWO_PI;\n else if (angle > PI) return angle - TWO_PI;\n return angle;\n}\n\nvec4 iterate(vec4 goal, float p0, float p1, float p2, float p3, float sG) {\n float ds = sG / SIMPSONS_INTERVALS_F;\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n vec3 dX_p = vec3(0.0);\n vec3 dY_p = vec3(0.0);\n vec2 guess = vec2(0.0);\n float s = 0.0;\n\n float theta, cosTheta, sinTheta;\n vec3 dT_p;\n\n for (int i = 0; i <= SIMPSONS_INTERVALS; i++) {\n float coeff = SIMPSONS_COEFFS[i];\n\n float a = p0;\n float b = (-5.5 * p0 + 9.0 * p1 - 4.5 * p2 + p3) / sG;\n float c = (9.0 * p0 - 22.5 * p1 + 18.0 * p2 - 4.5 * p3) / sG_2;\n float d = (-4.5 * (p0 - 3.0 * p1 + 3.0 * p2 - p3)) / sG_3;\n\n theta = (((d * s / 4.0 + c / 3.0) * s + b / 2.0) * s + a) * s;\n cosTheta = cos(theta);\n sinTheta = sin(theta);\n\n float s_sG = s / sG;\n\n dT_p = vec3(\n // p1\n ((3.375 * s_sG - 7.5) * s_sG + 4.5) * s_sG * s,\n\n // p2\n ((-3.375 * s_sG + 6.0) * s_sG - 2.25) * s_sG * s,\n\n // sG\n ((3.375 * (p0 - 3.0 * p1 + 3.0 * p2 - p3) * s_sG - 3.0 * (2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3)) * s_sG + 0.25 * (11.0 * p0 - 18.0 * p1 + 9.0 * p2 - 2.0 * p3)) * s_sG * s_sG\n );\n\n dX_p -= coeff * sinTheta * dT_p;\n dY_p += coeff * cosTheta * dT_p;\n\n guess += coeff * vec2(cosTheta, sinTheta);\n\n s += ds;\n }\n\n float hOver3 = sG / SIMPSONS_INTERVALS_F / 3.0;\n\n vec3 delta;\n delta.xy = goal.xy - guess * hOver3;\n delta.z = wrapAngle(goal.z - theta);\n\n if (abs(delta.x) + abs(delta.y) + abs(delta.z) < CONVERGENCE_ERROR)\n return vec4(p1, p2, sG, 1.0);\n\n dX_p.xyz *= hOver3;\n dY_p.xyz *= hOver3;\n dX_p.z += cosTheta;\n dY_p.z += sinTheta;\n\n mat3 invJacobian = inverse(transpose(mat3(dX_p, dY_p, dT_p)));\n\n vec3 deltaP = invJacobian * delta;\n vec4 params = vec4(p1, p2, sG, 0.0);\n params.xyz += deltaP;\n\n return params;\n}\n\n/* Input:\n * start: (vec4)\n * x: x position,\n * y: y position,\n * z: theta rotation,\n * w: k curvature\n * end: (vec4)\n * x: x position,\n * y: y position,\n * z: theta rotation,\n * w: k curvature\n *\n * Output: (vec4)\n * x: p1,\n * y: p2,\n * z: sG,\n * w: 1 if converged, 0 if not\n */\n\nvec4 optimize(vec4 start, vec4 end) {\n // Translate and rotate start and end so that start is at the origin\n float sinRot = sin(start.z);\n float cosRot = cos(start.z);\n\n vec4 diff = end - start;\n vec4 goal;\n goal.xy = mat2(cosRot, -sinRot, sinRot, cosRot) * diff.xy;\n goal.z = wrapAngle(diff.z);\n goal.w = end.w;\n\n vec4 originalGoal = goal;\n vec4 dGoal;\n dGoal.x = 0.0;\n dGoal.yzw = goal.yzw / RELAXATION_ITERATIONS_F;\n float dK0 = start.w / RELAXATION_ITERATIONS_F;\n\n // Relax the goal to (x, 0, 0, 0)\n goal.yzw = vec3(0, 0, 0);\n\n // Relax the params to (0, 0, 0, 0, goal.x)\n float p0 = 0.0;\n float p1 = 0.0;\n float p2 = 0.0;\n float p3 = 0.0;\n float sG = goal.x;\n\n if (sG < 0.1) return vec4(0.0);\n\n for (int i = 0; i < RELAXATION_ITERATIONS; i++) {\n p0 += dK0;\n p3 += dGoal.w;\n goal += dGoal;\n \n vec4 result = iterate(goal, p0, p1, p2, p3, sG);\n p1 = result.x;\n p2 = result.y;\n sG = result.z;\n }\n\n goal = originalGoal;\n\n for (int i = 0; i < NEWTON_ITERATIONS; i++) {\n vec4 result = iterate(goal, p0, p1, p2, p3, sG);\n if (result.w == 1.0) {\n result.w = step(0.0, result.z);\n return result;\n }\n\n p1 = result.x;\n p2 = result.y;\n sG = result.z;\n }\n\n return vec4(p1, p2, sG, 0.0);\n}\n\n`;\n\nconst OPTIMIZE_CUBIC_KERNEL = OPTIMIZE_CUBIC_SHARED + `\n\n// width: station * latitude index\n// height: station_conn * lattice_conn\n//\n// lattice:\n// width: latitudes\n// height: stations\n\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n int endStation = indexes.x / numLatitudes;\n int endLatitude = int(mod(float(indexes.x), float(numLatitudes)));\n\n int startStation = endStation - stationConnectivity + indexes.y / latitudeConnectivity;\n int startLatitude = endLatitude - latitudeConnectivity / 2 + int(mod(float(indexes.y), float(latitudeConnectivity)));\n\n if (startStation < 0 || startStation >= numStations || startLatitude < 0 || startLatitude >= numLatitudes)\n return vec4(0.0);\n\n vec4 start = texelFetch(lattice, ivec2(startLatitude, startStation), 0);\n vec4 end = texelFetch(lattice, ivec2(endLatitude, endStation), 0);\n\n return optimize(start, end);\n}\n\n`;\n\nconst OPTIMIZE_CUBIC_FROM_VEHICLE_KERNEL = OPTIMIZE_CUBIC_SHARED + `\n\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n vec4 start = vec4(0, 0, 0, curvVehicle);\n vec4 end = texelFetch(lattice, indexes, 0);\n\n return optimize(start, end);\n}\n\n`;\n\n/* harmony default export */ const gpgpu_programs_optimizeCubicPaths = ({\n setUp() {\n return [\n { // Cubic paths between lattice nodes\n kernel: OPTIMIZE_CUBIC_KERNEL,\n output: { name: \'cubicPaths\', read: true },\n uniforms: {\n lattice: { type: \'sharedTexture\' },\n numStations: { type: \'int\' },\n numLatitudes: { type: \'int\' },\n stationConnectivity: { type: \'int\' },\n latitudeConnectivity: { type: \'int\' }\n }\n },\n { // Cubic paths from vehicle to lattice nodes\n kernel: OPTIMIZE_CUBIC_FROM_VEHICLE_KERNEL,\n output: { name: \'cubicPathsFromVehicle\', read: true },\n uniforms: {\n lattice: { type: \'sharedTexture\' },\n curvVehicle: { type: \'float\' }\n }\n }\n ]\n },\n\n update(config, pose) {\n return [\n { // Cubic paths between lattice nodes\n width: config.lattice.numStations * config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity * config.lattice.latitudeConnectivity,\n uniforms: {\n numStations: config.lattice.numStations,\n numLatitudes: config.lattice.numLatitudes,\n stationConnectivity: config.lattice.stationConnectivity,\n latitudeConnectivity: config.lattice.latitudeConnectivity,\n }\n },\n { // Cubic paths from vehicle to lattice nodes\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity,\n uniforms: {\n curvVehicle: pose.curv\n }\n }\n ];\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/optimizeQuinticPaths.js\nconst OPTIMIZE_KERNEL = `\n\nconst int NEWTON_ITERATIONS = 32;\nconst int RELAXATION_ITERATIONS = 32;\nconst float CONVERGENCE_ERROR = 0.01;\n\n// These two consts must stay in sync.\nconst int SIMPSONS_INTERVALS = 8;\nconst float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0);\n\nconst float PI = 3.1415926535897932384626433832795;\nconst float TWO_PI = PI + PI;\n\nconst float RELAXATION_ITERATIONS_F = float(RELAXATION_ITERATIONS);\nconst float SIMPSONS_INTERVALS_F = float(SIMPSONS_INTERVALS);\n\nfloat wrapAngle(float angle) {\n angle = mod(angle, TWO_PI);\n if (angle <= -PI) return angle + TWO_PI;\n else if (angle > PI) return angle - TWO_PI;\n return angle;\n}\n\nvec4 iterate(vec4 goal, float p0, float p1, float p2, float p3, float p4, float p5, float sG) {\n float ds = sG / SIMPSONS_INTERVALS_F;\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n vec3 dX_p = vec3(0.0);\n vec3 dY_p = vec3(0.0);\n vec2 guess = vec2(0.0);\n float s = 0.0;\n\n float theta, cosTheta, sinTheta;\n vec3 dT_p;\n\n for (int i = 0; i <= SIMPSONS_INTERVALS; i++) {\n float coeff = SIMPSONS_COEFFS[i];\n\n float a = p0;\n float b = p1;\n float c = p2 / 2.0;\n float d = (-71.875 * p0 + 81.0 * p3 - 10.125 * p4 + p5 - 21.25 * p1 * sG - 2.75 * p2 * sG_2) / sG_3;\n float e = (166.5 * p0 - 202.5 * p3 + 40.5 * p4 - 4.5 * p5 + 45.0 * p1 * sG + 4.5 * p2 * sG_2) / (sG_2 * sG_2);\n float f = (-95.625 * p0 + 121.5 * p3 - 30.375 * p4 + 4.5 * p5 - 24.75 * p1 * sG - 2.25 * p2 * sG_2) / (sG_2 * sG_3);\n\n theta = (((((f * s / 6.0 + e / 5.0) * s + d / 4.0) * s + c / 3.0) * s + b / 2.0) * s + a) * s;\n cosTheta = cos(theta);\n sinTheta = sin(theta);\n\n float s_2 = s * s;\n float s_sG = s / sG;\n float s_sG_2 = s_sG * s_sG;\n float s_sG_3 = s_sG_2 * s_sG;\n float s_sG_4 = s_sG_3 * s_sG;\n float s_sG_5 = s_sG_4 * s_sG;\n\n dT_p = vec3(\n // p3\n ((20.25 * s_sG - 40.5) * s_sG + 20.25) * s_sG_3 * s,\n\n // p4\n ((-5.0625 * s_sG + 8.1) * s_sG - 2.53125) * s_sG_3 * s,\n\n // sG\n (53.90625 * p0 - 60.75 * p3 + 7.59375 * p4 - 0.75 * p5) * s_sG_4 + 10.625 * p1 * s * s_sG_3 + 0.6875 * p2 * s_2 * s_sG_2 + (-133.2 * p0 + 162.0 * p3 - 32.4 * p4 + 3.6 * p5) * s_sG_5 + (-27.0) * p1 * s * s_sG_4 - 1.8 * p2 * s_2 * s_sG_3 + (79.6875 * p0 - 101.25 * p3 + 25.3125 * p4 - 3.75 * p5) * s_sG_5 * s_sG + 16.5 * p1 * s * s_sG_5 + 1.125 * p2 * s_2 * s_sG_4\n );\n\n dX_p -= coeff * sinTheta * dT_p;\n dY_p += coeff * cosTheta * dT_p;\n\n guess += coeff * vec2(cosTheta, sinTheta);\n\n s += ds;\n }\n\n float hOver3 = sG / SIMPSONS_INTERVALS_F / 3.0;\n\n vec3 delta;\n delta.xy = goal.xy - guess * hOver3;\n delta.z = wrapAngle(goal.z - theta);\n\n if (abs(delta.x) + abs(delta.y) + abs(delta.z) < CONVERGENCE_ERROR)\n return vec4(p3, p4, sG, 1.0);\n\n dX_p.xyz *= hOver3;\n dY_p.xyz *= hOver3;\n dX_p.z += cosTheta;\n dY_p.z += sinTheta;\n\n mat3 invJacobian = inverse(transpose(mat3(dX_p, dY_p, dT_p)));\n\n vec3 deltaP = invJacobian * delta;\n vec4 params = vec4(p3, p4, sG, 0.0);\n params.xyz += deltaP;\n\n return params;\n}\n\nvec4 optimize(vec4 start, vec4 end) {\n // Translate and rotate start and end so that start is at the origin\n float sinRot = sin(start.z);\n float cosRot = cos(start.z);\n\n vec4 diff = end - start;\n vec4 goal;\n goal.xy = mat2(cosRot, -sinRot, sinRot, cosRot) * diff.xy;\n goal.z = wrapAngle(diff.z);\n goal.w = end.w;\n\n vec4 originalGoal = goal;\n vec4 dGoal;\n dGoal.x = 0.0;\n dGoal.yzw = goal.yzw / RELAXATION_ITERATIONS_F;\n float d_K0 = start.w / RELAXATION_ITERATIONS_F;\n float d_dK0 = dCurvVehicle / RELAXATION_ITERATIONS_F;\n float d_ddK0 = ddCurvVehicle / RELAXATION_ITERATIONS_F;\n\n // Relax the goal to (x, 0, 0, 0)\n goal.yzw = vec3(0, 0, 0);\n\n // Relax the params to (0, 0, 0, 0, goal.x)\n float p0 = 0.0;\n float p1 = 0.0;\n float p2 = 0.0;\n float p3 = 0.0;\n float p4 = 0.0;\n float p5 = 0.0;\n float sG = goal.x;\n\n if (sG < 0.1) return vec4(0.0);\n\n for (int i = 0; i < RELAXATION_ITERATIONS; i++) {\n p0 += d_K0;\n p1 += d_dK0;\n p2 += d_ddK0;\n p5 += dGoal.w;\n goal += dGoal;\n \n vec4 result = iterate(goal, p0, p1, p2, p3, p4, p5, sG);\n p3 = result.x;\n p4 = result.y;\n sG = result.z;\n }\n\n goal = originalGoal;\n\n for (int i = 0; i < NEWTON_ITERATIONS; i++) {\n vec4 result = iterate(goal, p0, p1, p2, p3, p4, p5, sG);\n if (result.w == 1.0) {\n result.w = step(0.0, result.z);\n return result;\n }\n\n p3 = result.x;\n p4 = result.y;\n sG = result.z;\n }\n\n return vec4(p3, p4, sG, 0.0);\n}\n\nvec4 kernel() {\n ivec2 latticeIndexes = ivec2(kernelPosition * vec2(kernelSize));\n\n vec4 start = vec4(0, 0, 0, curvVehicle);\n vec4 end = texelFetch(lattice, latticeIndexes, 0);\n\n return optimize(start, end);\n}\n\n`;\n\n// Quintic spiral path optimizer\n// * Start of paths is the vehicle pose\n// * x-pos, y-pos, and rotation aren\'t needed, since the lattice origin is the vehicle pose\n// * So assume position and rotation are 0\n// * Ends of paths are all latitudes within the first (stationConnectivity) stations\n/* harmony default export */ const gpgpu_programs_optimizeQuinticPaths = ({\n setUp() {\n return {\n kernel: OPTIMIZE_KERNEL,\n output: { name: \'quinticPathsFromVehicle\', read: true },\n uniforms: {\n lattice: { type: \'sharedTexture\' },\n curvVehicle: { type: \'float\' },\n dCurvVehicle: { type: \'float\' },\n ddCurvVehicle: { type: \'float\' }\n }\n };\n },\n\n update(config, pose) {\n return {\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity,\n uniforms: {\n curvVehicle: pose.curv,\n dCurvVehicle: pose.dCurv,\n ddCurvVehicle: pose.ddCurv\n }\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/graphSearchShared.js\nconst SHARED_SHADER = `\n\nconst float smallV = 0.01;\nvec4 pathSamples[128];\nfloat pathSampleCurvRates[128];\n\nfloat calculateAcceleration(int index, float initialVelocitySq, float distance) {\n if (index <= 4) {\n // [aMaxHard, aMinHard, aMaxSoft, aMinSoft, 0]\n return accelerationProfiles[index];\n } else {\n float finalVelocity = finalVelocityProfiles[index - 5];\n if (distance < 0.001) return 0.0;\n return clamp((finalVelocity * finalVelocity - initialVelocitySq) / (2.0 * distance), accelerationProfiles[1], accelerationProfiles[0]);\n }\n}\n\nvec2 xy2sl(vec4 xytk) {\n vec2 xy = xytk.xy + rearAxleToCenter * vec2(cos(xytk.z), sin(xytk.z));\n vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyslMap, 0)) / vec2(xyGridCellSize) + 0.5;\n return texture(xyslMap, xyTexCoords).xy;\n}\n\nfloat sampleStaticCost(vec4 xytk) {\n vec2 sl = xy2sl(xytk);\n vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slObstacleGrid, 0)) / vec2(slGridCellSize) + 0.5;\n float obstacleCost = texture(slObstacleGrid, slTexCoords).r;\n\n if (obstacleCost >= 0.75) return -1.0; // Infinite cost\n\n obstacleCost = step(0.25, obstacleCost) * obstacleHazardCost;\n\n float absLatitude = abs(sl.y);\n if (absLatitude >= laneShoulderLatitude) return -1.0;\n\n float laneCost = abs(absLatitude - laneCenterLatitude) * laneCostSlope + step(0.0, -sl.y * sign(lanePreference)) * lanePreferenceDiscount;\n\n return obstacleCost + laneCost;\n}\n\nfloat sampleDynamicCost(vec4 xytk, float time, float velocity, float acceleration) {\n vec2 sl = xy2sl(xytk);\n vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slDynamicObstacleGrid, 0).xy) / vec2(slGridCellSize) + 0.5;\n float dynamicFrame = floor(time / dynamicFrameTime);\n\n float obstacleCost = texture(slDynamicObstacleGrid, vec3(slTexCoords, dynamicFrame)).r;\n\n if (obstacleCost > 0.75) return -1.0; // Infinite cost\n\n return step(0.25, obstacleCost) * obstacleHazardCost;\n}\n\nfloat calculateAverageStaticCost(int numSamples) {\n float averageStaticCost = 0.0;\n\n for (int i = 0; i < numSamples; i++) {\n float cost = sampleStaticCost(pathSamples[i]);\n\n if (cost < 0.0) return cost;\n\n averageStaticCost += cost;\n }\n\n averageStaticCost /= float(numSamples);\n\n return averageStaticCost;\n}\n\nfloat calculateAverageDynamicCost(int numSamples, float pathLength, float initialTime, float initialVelocity, float acceleration, float abandonThreshold) {\n float s = 0.0;\n float ds = pathLength / float(numSamples - 1);\n float averageDynamicCost = 0.0;\n float maxVelocity = 0.0;\n float maxLateralAcceleration = 0.0;\n float numSamples_f = float(numSamples);\n\n for (int i = 0; i < numSamples; i++) {\n vec4 pathSample = pathSamples[i]; // vec4(x-pos, y-pos, theta (rotation), kappa (curvature))\n\n float velocitySq = 2.0 * acceleration * s + initialVelocity * initialVelocity;\n float velocity = max(smallV, sqrt(max(0.0, velocitySq)));\n maxVelocity = max(maxVelocity, velocity);\n maxLateralAcceleration = max(maxLateralAcceleration, abs(pathSample.w * velocity * velocity));\n\n float time = 2.0 * s / (initialVelocity + velocity) + initialTime;\n\n float dCurv = pathSampleCurvRates[i] * velocity;\n if (dCurv > dCurvatureMax) return -1.0;\n\n float cost = sampleDynamicCost(pathSample, time, velocity, acceleration);\n if (cost < 0.0) return cost;\n\n averageDynamicCost += cost;\n if (averageDynamicCost / numSamples_f >= abandonThreshold) return -1.0;\n\n s += ds;\n }\n\n averageDynamicCost /= numSamples_f;\n\n // Apply speeding penality if any velocity along the trajectory is over the speed limit\n averageDynamicCost += step(speedLimit, maxVelocity) * speedLimitPenalty;\n\n // Apply hard acceleration/deceleration penalties if the acceleration/deceleration exceeds the soft limits\n averageDynamicCost += step(accelerationProfiles[2] + 0.0001, acceleration) * hardAccelerationPenalty;\n averageDynamicCost += (1.0 - step(accelerationProfiles[3], acceleration)) * hardDecelerationPenalty;\n\n // Penalize lateral acceleration\n averageDynamicCost += step(softLateralAccelerationLimit, maxLateralAcceleration) * softLateralAccelerationPenalty;\n averageDynamicCost += linearLateralAccelerationPenalty * maxLateralAcceleration;\n\n return averageDynamicCost;\n}\n\nvec3 calculateAVT(int accelerationIndex, float initialVelocity, float initialTime, float pathLength) {\n float initialVelocitySq = initialVelocity * initialVelocity;\n float acceleration = calculateAcceleration(accelerationIndex, initialVelocitySq, pathLength);\n\n float finalVelocitySq = 2.0 * acceleration * pathLength + initialVelocitySq;\n float finalVelocity = max(smallV, sqrt(max(0.0, finalVelocitySq)));\n\n float finalTime = initialTime;\n\n if (acceleration == 0.0) {\n finalTime += pathLength / finalVelocity;\n } else if (finalVelocitySq <= 0.0) { // Calculate final time if the vehicle stops before the end of the trajectory\n float distanceLeft = pathLength - (smallV * smallV - initialVelocitySq) / (2.0 * acceleration);\n finalTime += (finalVelocity - initialVelocity) / acceleration + distanceLeft / smallV;\n } else {\n finalTime += 2.0 * pathLength / (finalVelocity + initialVelocity);\n }\n\n return vec3(acceleration, finalVelocity, finalTime);\n}\n\n`;\n\nconst SAMPLE_CUBIC_PATH_FN = `\n\nint sampleCubicPath(vec4 start, vec4 end, vec4 cubicPathParams) {\n float p0 = start.w;\n float p1 = cubicPathParams.x;\n float p2 = cubicPathParams.y;\n float p3 = end.w;\n float sG = cubicPathParams.z;\n\n if (sG <= 0.0) return 0;\n\n int numSamples = int(ceil(sG / pathSamplingStep)) + 1;\n\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n float a = p0;\n float b = (-5.5 * p0 + 9.0 * p1 - 4.5 * p2 + p3) / sG;\n float c = (9.0 * p0 - 22.5 * p1 + 18.0 * p2 - 4.5 * p3) / sG_2;\n float d = (-4.5 * (p0 - 3.0 * p1 + 3.0 * p2 - p3)) / sG_3;\n\n pathSamples[0] = start;\n\n float ds = sG / float(numSamples - 1);\n float s = ds;\n vec2 dxy = vec2(0);\n vec2 prevCosSin = vec2(cos(start.z), sin(start.z));\n\n for (int i = 1; i < numSamples; i++) {\n float rot = (((d * s / 4.0 + c / 3.0) * s + b / 2.0) * s + a) * s + start.z;\n float curv = ((d * s + c) * s + b) * s + a;\n\n vec2 cosSin = vec2(cos(rot), sin(rot));\n dxy = dxy * vec2(float(i - 1) / float(i)) + (cosSin + prevCosSin) / vec2(2 * i);\n\n pathSamples[i] = vec4(dxy * vec2(s) + start.xy, rot, curv);\n pathSampleCurvRates[i] = b + s * (2.0 * c + 3.0 * d * s);\n\n s += ds;\n prevCosSin = cosSin;\n }\n\n return numSamples;\n}\n\n`;\n\nconst SAMPLE_QUINTIC_PATH_FN = `\n\nint sampleQuinticPath(vec4 start, vec4 end, vec4 quinticPathParams) {\n float p0 = start.w;\n float p1 = dCurvVehicle;\n float p2 = ddCurvVehicle;\n float p3 = quinticPathParams.x;\n float p4 = quinticPathParams.y;\n float p5 = end.w;\n float sG = quinticPathParams.z;\n\n if (sG <= 0.0) return 0;\n\n int numSamples = int(ceil(sG / pathSamplingStep)) + 1;\n\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n float a = p0;\n float b = p1;\n float c = p2 / 2.0;\n float d = (-71.875 * p0 + 81.0 * p3 - 10.125 * p4 + p5 - 21.25 * p1 * sG - 2.75 * p2 * sG_2) / sG_3;\n float e = (166.5 * p0 - 202.5 * p3 + 40.5 * p4 - 4.5 * p5 + 45.0 * p1 * sG + 4.5 * p2 * sG_2) / (sG_2 * sG_2);\n float f = (-95.625 * p0 + 121.5 * p3 - 30.375 * p4 + 4.5 * p5 - 24.75 * p1 * sG - 2.25 * p2 * sG_2) / (sG_2 * sG_3);\n\n pathSamples[0] = start;\n\n float ds = sG / float(numSamples - 1);\n float s = ds;\n vec2 dxy = vec2(0);\n vec2 prevCosSin = vec2(cos(start.z), sin(start.z));\n\n for (int i = 1; i < numSamples; i++) {\n float rot = (((((f * s / 6.0 + e / 5.0) * s + d / 4.0) * s + c / 3.0) * s + b / 2.0) * s + a) * s + start.z;\n float curv = ((((f * s + e) * s + d) * s + c) * s + b) * s + a;\n\n vec2 cosSin = vec2(cos(rot), sin(rot));\n dxy = dxy * vec2(float(i - 1) / float(i)) + (cosSin + prevCosSin) / vec2(2 * i);\n\n pathSamples[i] = vec4(dxy * vec2(s) + start.xy, rot, curv);\n pathSampleCurvRates[i] = b + s * (2.0 * c + s * (3.0 * d + s * (4.0 * e + 5.0 * f * s)));\n\n s += ds;\n prevCosSin = cosSin;\n }\n\n return numSamples;\n}\n\n`;\n\nconst NUM_ACCELERATION_PROFILES = 8;\nconst NUM_VELOCITY_RANGES = 4;\nconst NUM_TIME_RANGES = 2;\n\nconst SHARED_UNIFORMS = {\n xyslMap: { type: \'outputTexture\' },\n slObstacleGrid: { type: \'outputTexture\', name: \'slObstacleGridDilated\' },\n slDynamicObstacleGrid: { type: \'outputTexture\', name: \'slDynamicObstacleGrid\', textureType: \'2DArray\' },\n accelerationProfiles: { type: \'float\', length: 5 },\n finalVelocityProfiles: { type: \'float\', length: 3 },\n xyCenterPoint: { type: \'vec2\' },\n xyGridCellSize: { type: \'float\' },\n slCenterPoint: { type: \'vec2\' },\n slGridCellSize: { type: \'float\'},\n laneCenterLatitude: { type: \'float\'},\n laneShoulderLatitude: { type: \'float\'},\n laneCostSlope: { type: \'float\'},\n lanePreference: { type: \'float\' },\n lanePreferenceDiscount: { type: \'float\' },\n obstacleHazardCost: { type: \'float\' },\n speedLimit: { type: \'float\' },\n speedLimitPenalty: { type: \'float\' },\n hardAccelerationPenalty: { type: \'float\' },\n hardDecelerationPenalty: { type: \'float\' },\n softLateralAccelerationLimit: { type: \'float\' },\n softLateralAccelerationPenalty: { type: \'float\' },\n linearLateralAccelerationPenalty: { type: \'float\' },\n dCurvatureMax: { type: \'float\' },\n pathSamplingStep: { type: \'float\' },\n rearAxleToCenter: { type: \'float\' },\n dynamicFrameTime: { type: \'float\' }\n};\n\nfunction buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime) {\n return {\n accelerationProfiles: [3.5, -6.5, 2.0, -3.0, 0],\n finalVelocityProfiles: [0.999 * config.speedLimit, 1.0, 0.01],\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n xyGridCellSize: config.xyGridCellSize,\n slCenterPoint: [slCenterPoint.x, slCenterPoint.y],\n slGridCellSize: config.slGridCellSize,\n laneCenterLatitude: config.laneCenterLatitude,\n laneShoulderLatitude: config.laneShoulderLatitude,\n laneCostSlope: config.laneCostSlope,\n lanePreference: config.lanePreference,\n lanePreferenceDiscount: config.lanePreferenceDiscount,\n obstacleHazardCost: config.obstacleHazardCost,\n speedLimit: config.speedLimit,\n speedLimitPenalty: config.speedLimitPenalty,\n hardAccelerationPenalty: config.hardAccelerationPenalty,\n hardDecelerationPenalty: config.hardDecelerationPenalty,\n softLateralAccelerationLimit: config.softLateralAccelerationLimit,\n softLateralAccelerationPenalty: config.softLateralAccelerationPenalty,\n linearLateralAccelerationPenalty: config.linearLateralAccelerationPenalty,\n dCurvatureMax: config.dCurvatureMax,\n pathSamplingStep: config.pathSamplingStep,\n rearAxleToCenter: config.rearAxleToCenter,\n dynamicFrameTime: dynamicFrameTime\n };\n}\n\n\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/pathFromVehicleCosts.js\n\n\nfunction fromVehiclePathCostsKernel(pathType) {\n return SHARED_SHADER + (pathType == \'cubic\' ? SAMPLE_CUBIC_PATH_FN : SAMPLE_QUINTIC_PATH_FN) +\n\n`\n\n/* Calculate cost of a {cubic|quintic} path from vehicle to (stationConnectivity * numLatitudes * numAccelerations) nodes\n * width: numLatitudes\n * height: station * numAccelerations\n */\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n int latitude = indexes.x;\n int station = indexes.y / numAccelerations;\n int accelerationIndex = int(mod(float(indexes.y), float(numAccelerations)));\n\n vec4 pathStart = vec4(0, 0, 0, curvVehicle);\n vec4 pathEnd = texelFetch(lattice, ivec2(latitude, station), 0);\n\n vec4 pathParams = texelFetch(pathsFromVehicle, ivec2(latitude, station), 0);\n\n // If the path didn\'t converge\n if (pathParams.w == 0.0) return vec4(-1);\n\n int numSamples = ${pathType == \'cubic\' ? \'sampleCubicPath\' : \'sampleQuinticPath\'}(pathStart, pathEnd, pathParams);\n float pathLength = pathParams.z;\n\n if (numSamples < 2) return vec4(-1);\n\n float averageStaticCost = calculateAverageStaticCost(numSamples);\n if (averageStaticCost < 0.0) return vec4(-1);\n\n int slIndex = station * kernelSize.x + latitude;\n float hysteresisAdjustment = (slIndex == firstLatticePoint || slIndex == secondLatticePoint) ? 0.0 : hysteresisDiscount;\n averageStaticCost += hysteresisAdjustment;\n\n vec3 avt = calculateAVT(accelerationIndex, velocityVehicle, 0.0, pathLength);\n float acceleration = avt.x;\n float finalVelocity = avt.y;\n float finalTime = avt.z;\n\n float averageDynamicCost = calculateAverageDynamicCost(numSamples, pathLength, 0.0, velocityVehicle, acceleration, 1.0 / 0.0);\n if (averageDynamicCost < 0.0) return vec4(-1);\n\n averageDynamicCost += accelerationChangePenalty;\n\n // The cost of a trajectory is the average sample cost scaled by the path length\n float totalCost = (averageStaticCost + averageDynamicCost + ${pathType == \'cubic\' ? \'(cubicPathPenalty * velocityVehicle * velocityVehicle)\' : \'0.0\'}) * pathLength;\n ${pathType != \'cubic\' ? \'totalCost = -1.0;\' : \'\'}\n\n return vec4(totalCost, finalVelocity, finalTime, ${pathType == \'cubic\' ? \'-2\' : \'-1\'});\n}\n\n`;\n}\n\n/* harmony default export */ const gpgpu_programs_pathFromVehicleCosts = ({\n setUp() {\n return [\n {\n kernel: fromVehiclePathCostsKernel(\'cubic\'),\n output: { name: \'cubicPathFromVehicleCosts\' },\n uniforms: Object.assign({}, SHARED_UNIFORMS, {\n lattice: { type: \'sharedTexture\' },\n pathsFromVehicle: { type: \'outputTexture\', name: \'cubicPathsFromVehicle\' },\n firstLatticePoint: { type: \'int\' },\n secondLatticePoint: { type: \'int\' },\n velocityVehicle: { type: \'float\' },\n curvVehicle: { type: \'float\' },\n numAccelerations: { type: \'int\' },\n cubicPathPenalty: { type: \'float\' },\n hysteresisDiscount: { type: \'float\' },\n accelerationChangePenalty: { type: \'float\' }\n })\n },\n {\n kernel: fromVehiclePathCostsKernel(\'quintic\'),\n output: { name: \'quinticPathFromVehicleCosts\' },\n uniforms: Object.assign({}, SHARED_UNIFORMS, {\n lattice: { type: \'sharedTexture\' },\n pathsFromVehicle: { type: \'outputTexture\', name: \'quinticPathsFromVehicle\' },\n firstLatticePoint: { type: \'int\' },\n secondLatticePoint: { type: \'int\' },\n velocityVehicle: { type: \'float\' },\n curvVehicle: { type: \'float\' },\n dCurvVehicle: { type: \'float\' },\n ddCurvVehicle: { type: \'float\' },\n numAccelerations: { type: \'int\' },\n hysteresisDiscount: { type: \'float\' },\n accelerationChangePenalty: { type: \'float\' }\n })\n }\n ];\n },\n\n update(config, pose, xyCenterPoint, slCenterPoint, firstLatticePoint, secondLatticePoint, dynamicFrameTime) {\n return [\n {\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity * NUM_ACCELERATION_PROFILES,\n uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), {\n firstLatticePoint: firstLatticePoint,\n secondLatticePoint: secondLatticePoint,\n velocityVehicle: pose.velocity,\n curvVehicle: pose.curv,\n numAccelerations: NUM_ACCELERATION_PROFILES,\n cubicPathPenalty: config.cubicPathPenalty,\n hysteresisDiscount: config.hysteresisDiscount,\n accelerationChangePenalty: config.accelerationChangePenalty\n })\n },\n {\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity * NUM_ACCELERATION_PROFILES,\n uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), {\n firstLatticePoint: firstLatticePoint,\n secondLatticePoint: secondLatticePoint,\n velocityVehicle: pose.velocity,\n curvVehicle: pose.curv,\n dCurvVehicle: pose.dCurv,\n ddCurvVehicle: pose.ddCurv,\n numAccelerations: NUM_ACCELERATION_PROFILES,\n hysteresisDiscount: config.hysteresisDiscount,\n accelerationChangePenalty: config.accelerationChangePenalty\n })\n }\n ];\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/graphSearch.js\n/* State Lattice Cost Map\n * \n * 5-dimensional node: station, latitude, acceleration profile, velocity, time\n *\n * A draw call per station s\n * * Input to kernel: latitude l, acceleration profile a, velocity range v, time range t\n * * Find all SL vertices that can connect to this node\n * * For each of those vertices, check if any terminate in this specific velocity and time range\n * * Based on initial velocity, initial time, and acceleration\n * * Each connected SL vertex should have a * v * t nodes that could possibly terminate at this node\n * * For all valid edges, find the one with the lowest cost\n *\n * Input:\n * * 2D texture array cost map\n * * Height: num of latitudes (~20)\n * * Width: num of acceleration profiles * num of time ranges * num of velocity ranges (8 * 2 * 4 = ~64)\n * * A flattened 3D array:\n * d1: acceleration\n * d2: velocity\n * d3: time\n * * Layer: num of stations (~10)\n * \n * Output:\n * * 2D texture slice of the next station in the input 2D texture array cost map\n *\n * Cost Map Elements:\n * * Traversal cost so far\n * * Ending velocity\n * * Ending time\n * * Index of parent node\n *\n * Since one cubic path can be shared between multiple trajectories, they need to be pre-optimized.\n *\n * Quintic Paths:\n * Stations 0 through (numStations - 1) correspond to the stations on the lattice; however,\n * a new station (station -1) will be used to signifiy the single vehicle pose node. Either\n * a cubic path or quintic path can be used to connect this single node to the lattice\n * (depending on vehicle velocity). At station -1, latitude 0 will correspond to a cubic path,\n * and latitude 1 will correspond to a quintic path. All other latitudes will be skipped.\n */\n\n\n\nconst SOLVE_STATION_KERNEL =\n SHARED_SHADER +\n SAMPLE_CUBIC_PATH_FN +\n SAMPLE_QUINTIC_PATH_FN +\n\n`\n\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n int latitude = indexes.y;\n\n int numPerTime = numAccelerations * numVelocities;\n int timeIndex = indexes.x / numPerTime;\n indexes.x -= timeIndex * numPerTime;\n int velocityIndex = indexes.x / numAccelerations;\n int accelerationIndex = int(mod(float(indexes.x), float(numAccelerations)));\n\n int minLatitude = max(latitude - latitudeConnectivity / 2, 0);\n int maxLatitude = min(latitude + latitudeConnectivity / 2, numLatitudes - 1);\n\n int slIndex = station * numLatitudes + latitude;\n\n vec4 pathEnd = texelFetch(lattice, ivec2(latitude, station), 0);\n\n float minVelocity = velocityRanges[velocityIndex];\n float maxVelocity = velocityRanges[velocityIndex + 1];\n\n float minTime = timeRanges[timeIndex];\n float maxTime = timeRanges[timeIndex + 1];\n\n vec4 bestTrajectory = vec4(-1); // -1 means infinite cost\n float bestTerminalCost = 1.0 / 0.0;\n\n float hysteresisAdjustment = (slIndex == firstLatticePoint || slIndex == secondLatticePoint) ? 0.0 : hysteresisDiscount;\n\n for (int prevStation = max(station - stationConnectivity, 0); prevStation < station; prevStation++) {\n int stationConnectivityIndex = prevStation - station + stationConnectivity;\n\n for (int prevLatitude = minLatitude; prevLatitude <= maxLatitude; prevLatitude++) {\n int latitudeConnectivityIndex = prevLatitude - latitude + latitudeConnectivity / 2;\n int connectivityIndex = stationConnectivityIndex * latitudeConnectivity + latitudeConnectivityIndex;\n\n vec4 pathStart = texelFetch(lattice, ivec2(prevLatitude, prevStation), 0);\n vec4 cubicPathParams = texelFetch(cubicPaths, ivec2(slIndex, connectivityIndex), 0);\n\n // If the path didn\'t converge\n if (cubicPathParams.w == 0.0) continue;\n\n int numSamples = sampleCubicPath(pathStart, pathEnd, cubicPathParams);\n float pathLength = cubicPathParams.z;\n\n if (numSamples < 2) continue;\n\n float averageStaticCost = calculateAverageStaticCost(numSamples);\n if (averageStaticCost < 0.0) continue;\n\n averageStaticCost += hysteresisAdjustment;\n\n if (averageStaticCost * pathLength >= bestTerminalCost) continue;\n\n for (int prevVelocity = 0; prevVelocity < numVelocities; prevVelocity++) {\n for (int prevTime = 0; prevTime < numTimes; prevTime++) {\n for (int prevAccel = 0; prevAccel < numAccelerations; prevAccel++) {\n int avtIndex = prevTime * numPerTime + prevVelocity * numAccelerations + prevAccel;\n\n // Cost table entry:\n // x: cost so far\n // y: end velocity\n // z: end time\n // w: parent index\n vec4 costTableEntry = texelFetch(costTable, ivec3(avtIndex, prevLatitude, prevStation), 0);\n\n // If cost entry is infinity\n if (costTableEntry.x < 0.0 || averageStaticCost * pathLength + costTableEntry.x >= bestTerminalCost) continue;\n\n vec3 avt = calculateAVT(accelerationIndex, costTableEntry.y, costTableEntry.z, pathLength);\n float acceleration = avt.x;\n float finalVelocity = avt.y;\n float finalTime = avt.z;\n\n if (averageStaticCost * pathLength + costTableEntry.x + extraTimePenalty * finalTime >= bestTerminalCost) continue;\n\n // If the calculated final velocity does not match this fragment\'s velocity range, then skip this trajectory\n if (finalVelocity < minVelocity || finalVelocity >= maxVelocity) continue;\n\n // If the calculated final time does not match this fragment\'s time range, then skip this trajectory\n if (finalTime < minTime || finalTime >= maxTime) continue;\n\n float abandonThreshold = (bestTerminalCost - extraTimePenalty * finalTime - costTableEntry.x) / pathLength - averageStaticCost;\n float averageDynamicCost = calculateAverageDynamicCost(numSamples, pathLength, costTableEntry.z, costTableEntry.y, acceleration, abandonThreshold);\n if (averageDynamicCost < 0.0) continue;\n\n if (accelerationIndex != prevAccel)\n averageDynamicCost += accelerationChangePenalty;\n\n // The cost of a trajectory is the average sample cost scaled by the path length\n float totalCost = (averageStaticCost + averageDynamicCost) * pathLength + costTableEntry.x;\n\n float terminalCost = totalCost + extraTimePenalty * finalTime;\n if (terminalCost >= bestTerminalCost) continue;\n bestTerminalCost = terminalCost;\n\n int incomingIndex = avtIndex + numPerTime * numTimes * (prevLatitude + numLatitudes * prevStation);\n bestTrajectory = vec4(totalCost, finalVelocity, finalTime, incomingIndex);\n }\n }\n }\n }\n }\n\n if (station < stationConnectivity) {\n ivec2 slaIndex = ivec2(latitude, station * numAccelerations + accelerationIndex);\n\n vec4 costTableEntry = texelFetch(cubicPathFromVehicleCosts, slaIndex, 0);\n float terminalCost;\n\n if (costTableEntry.x >= 0.0) {\n terminalCost = costTableEntry.x + extraTimePenalty * costTableEntry.z;\n\n if (terminalCost < bestTerminalCost) {\n bestTerminalCost = terminalCost;\n bestTrajectory = costTableEntry;\n }\n }\n\n costTableEntry = texelFetch(quinticPathFromVehicleCosts, slaIndex, 0);\n\n if (costTableEntry.x >= 0.0) {\n terminalCost = costTableEntry.x + extraTimePenalty * costTableEntry.z;\n\n if (terminalCost < bestTerminalCost) {\n bestTerminalCost = terminalCost;\n bestTrajectory = costTableEntry;\n }\n }\n }\n\n return bestTrajectory;\n}\n\n`;\n\n/* harmony default export */ const gpgpu_programs_graphSearch = ({\n setUp() {\n return {\n kernel: SOLVE_STATION_KERNEL,\n output: { name: \'graphSearch\' },\n uniforms: Object.assign({}, SHARED_UNIFORMS, {\n lattice: { type: \'sharedTexture\' },\n costTable: { type: \'sharedTexture\', textureType: \'2DArray\' },\n cubicPaths: { type: \'outputTexture\' },\n cubicPathFromVehicleCosts: { type: \'outputTexture\' },\n quinticPathFromVehicleCosts: { type: \'outputTexture\' },\n firstLatticePoint: { type: \'int\' },\n secondLatticePoint: { type: \'int\' },\n velocityVehicle: { type: \'float\' },\n curvVehicle: { type: \'float\' },\n dCurvVehicle: { type: \'float\' },\n ddCurvVehicle: { type: \'float\' },\n extraTimePenalty: { type: \'float\' },\n hysteresisDiscount: { type: \'float\' },\n accelerationChangePenalty: { type: \'float\' },\n numStations: { type: \'int\' },\n numLatitudes: { type: \'int\' },\n numAccelerations: { type: \'int\' },\n numVelocities: { type: \'int\' },\n numTimes: { type: \'int\' },\n stationConnectivity: { type: \'int\' },\n latitudeConnectivity: { type: \'int\' },\n velocityRanges: { type: \'float\', length: NUM_VELOCITY_RANGES + 1 },\n timeRanges: { type: \'float\', length: NUM_TIME_RANGES + 1 },\n station: { type: \'int\' } // Updated in `drawProxy`\n }),\n drawProxy: (gpgpu, program, draw) => {\n const width = NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES * NUM_TIME_RANGES;\n const height = program.meta.lattice.numLatitudes;\n const costTable = new Float32Array(width * height * program.meta.lattice.numStations * 4);\n\n for (let s = 0; s < program.meta.lattice.numStations; s++) {\n gpgpu.updateProgramUniforms(program, { station: s });\n draw();\n\n gpgpu.gl.readPixels(0, 0, width, height, gpgpu.gl.RGBA, gpgpu.gl.FLOAT, costTable, s * width * height * 4);\n\n gpgpu.gl.bindTexture(gpgpu.gl.TEXTURE_2D_ARRAY, gpgpu.sharedTextures.costTable);\n gpgpu.gl.copyTexSubImage3D(gpgpu.gl.TEXTURE_2D_ARRAY, 0, 0, 0, s, 0, 0, width, height);\n }\n\n gpgpu._graphSearchCostTable = costTable;\n }\n };\n },\n\n update(config, pose, xyCenterPoint, slCenterPoint, firstLatticePoint, secondLatticePoint, dynamicFrameTime) {\n return {\n width: NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES * NUM_TIME_RANGES,\n height: config.lattice.numLatitudes,\n meta: {\n lattice: config.lattice\n },\n uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), {\n firstLatticePoint: firstLatticePoint,\n secondLatticePoint: secondLatticePoint,\n velocityVehicle: pose.velocity,\n curvVehicle: pose.curv,\n dCurvVehicle: pose.dCurv,\n ddCurvVehicle: pose.ddCurv,\n extraTimePenalty: config.extraTimePenalty,\n hysteresisDiscount: config.hysteresisDiscount,\n accelerationChangePenalty: config.accelerationChangePenalty,\n numStations: config.lattice.numStations,\n numLatitudes: config.lattice.numLatitudes,\n numAccelerations: NUM_ACCELERATION_PROFILES,\n numVelocities: NUM_VELOCITY_RANGES,\n numTimes: NUM_TIME_RANGES,\n stationConnectivity: config.lattice.stationConnectivity,\n latitudeConnectivity: config.lattice.latitudeConnectivity,\n velocityRanges: [0, config.speedLimit / 3, config.speedLimit * 2 / 3, config.speedLimit, 1000000],\n timeRanges: [0, 10, 1000000]\n })\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/xyObstacleCostGrid.js\nconst XY_OBSTACLE_COST_KERNEL = `\n\nvec4 kernel() {\n vec2 xy = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(xyGridCellSize) + xyCenterPoint;\n\n vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyslMap, 0)) / vec2(xyGridCellSize) + 0.5;\n vec2 sl = texture(xyslMap, xyTexCoords).xy;\n\n vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slObstacleGrid, 0)) / vec2(slGridCellSize) + 0.5;\n return texture(slObstacleGrid, slTexCoords);\n}\n\n`;\n\n// Build XY obstacle costs using XYSL map\n/* harmony default export */ const xyObstacleCostGrid = ({\n setUp() {\n return {\n kernel: XY_OBSTACLE_COST_KERNEL,\n output: { name: \'xyObstacleCostGrid\', read: true },\n uniforms: {\n xyslMap: { type: \'outputTexture\' },\n slObstacleGrid: { type: \'outputTexture\', name: \'slObstacleGridDilated\' },\n xyCenterPoint: { type: \'vec2\' },\n xyGridCellSize: { type: \'float\'},\n slCenterPoint: { type: \'vec2\' },\n slGridCellSize: { type: \'float\'}\n }\n };\n },\n\n update(config, xyWidth, xyHeight, xyCenterPoint, slCenterPoint) {\n return {\n width: xyWidth,\n height: xyHeight,\n uniforms: {\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n xyGridCellSize: config.xyGridCellSize,\n slCenterPoint: [slCenterPoint.x, slCenterPoint.y],\n slGridCellSize: config.slGridCellSize\n }\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/PathPlanner.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PathPlanner_NUM_ACCELERATION_PROFILES = 8;\nconst PathPlanner_NUM_VELOCITY_RANGES = 4;\nconst PathPlanner_NUM_TIME_RANGES = 2;\n\n/* Obstacle cost map:\n *\n * 1. Rasterize triangles from polygonal obstacles into XY-space occupancy grid\n * 2. Convert occupancy grid to SL-space\n * * Width is spatial horizon of the state lattice\n * * Height is lane width\n * * Resolution should be higher than XY-grid\n * * Get XY position from centerline texture\n * * Lookup XY in XY occupancy grid (nearest)\n * 3. Dilate SL-space grid using two passes (along station, then along latitude)\n * * collision area: half car size + 0.3m\n * * high cost area: 1 meter\n * 4. Convert back to XY-space using XYSL map\n */\n\nclass PathPlanner {\n constructor() {\n this.previousStartStation = null;\n this.previousFirstLatticePoint = -1;\n this.previousSecondLatticePoint = -1;\n this.previousFirstAcceleration = -1;\n this.previousSecondLatticePoint = -1;\n\n let start = performance.now();\n const programs = [\n xyObstacleGrid.setUp(),\n slObstacleGrid.setUp(),\n ...slObstacleGridDilation.setUp(),\n slDynamicObstacleGrid.setUp(),\n xyslMap.setUp(),\n ...optimizeCubicPaths.setUp(),\n optimizeQuinticPaths.setUp(),\n ...pathFromVehicleCosts.setUp(),\n graphSearch.setUp(),\n ].map(p => Object.assign({}, p, { width: 1, height: 1 }));\n\n this.gpgpu = new GPGPU(programs);\n }\n\n reset() {\n this.previousStartStation = null;\n this.previousFirstLatticePoint = -1;\n this.previousSecondLatticePoint = -1;\n this.previousFirstAcceleration = -1;\n this.previousSecondLatticePoint = -1;\n }\n\n plan(vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles) {\n const latticeStationInterval = this._latticeStationInterval();\n\n const centerlineRaw = lanePath.sampleStations(vehicleStation, Math.ceil((this.config.spatialHorizon + latticeStationInterval) / this.config.centerlineStationInterval) + 1, this.config.centerlineStationInterval);\n\n // Transform all centerline points into vehicle frame\n const vehicleXform = vehicleTransform(vehiclePose);\n const centerline = centerlineRaw.map(c => { return { pos: c.pos.clone().applyMatrix3(vehicleXform), rot: c.rot - vehiclePose.rot, curv: c.curv } });\n\n const centerlineData = new Float32Array(centerline.length * 3);\n const maxPoint = new THREE.Vector2(0, 0);\n const minPoint = new THREE.Vector2(0, 0);\n\n for (let i = 0; i < centerline.length; i++) {\n const sample = centerline[i];\n const pos = sample.pos;\n centerlineData[i * 3 + 0] = pos.x;\n centerlineData[i * 3 + 1] = pos.y;\n centerlineData[i * 3 + 2] = sample.rot;\n\n maxPoint.max(pos);\n minPoint.min(pos);\n }\n\n const diff = maxPoint.clone().sub(minPoint);\n const xyCenterPoint = minPoint.clone().add(maxPoint).divideScalar(2);\n\n // Sizes of the xy grids (in pixels, not meters)\n const xyWidth = Math.ceil((diff.x + this.config.gridMargin * 2) / this.config.xyGridCellSize);\n const xyHeight = Math.ceil((diff.y + this.config.gridMargin * 2) / this.config.xyGridCellSize);\n\n const stationWidth = this.config.spatialHorizon + latticeStationInterval * 2;\n const slCenterPoint = new THREE.Vector2(this.config.spatialHorizon / 2, 0);\n\n // Sizes of the sl grids (in pixels, not meters)\n const slWidth = Math.ceil(stationWidth / this.config.slGridCellSize);\n const slHeight = Math.ceil((this.config.roadWidth + this.config.gridMargin * 2) / this.config.slGridCellSize);\n\n let startStation;\n\n if (this.previousStartStation === null || vehicleStation + latticeStationInterval / 2 > this.previousStartStation) {\n startStation = (this.previousStartStation === null ? vehicleStation : this.previousStartStation) + latticeStationInterval;\n this.previousStartStation = startStation;\n this.previousFirstLatticePoint -= this.config.lattice.numLatitudes;\n this.previousSecondLatticePoint -= this.config.lattice.numLatitudes;\n } else {\n startStation = this.previousStartStation;\n }\n\n const lattice = this._buildLattice(lanePath, startStation, vehiclePose.rot, vehicleXform);\n\n const temporalHorizon = this.config.spatialHorizon / this.config.speedLimit;\n const dynamicFrameTime = temporalHorizon / this.config.numDynamicFrames;\n\n for (const [i, p] of [\n xyObstacleGrid.update(this.config, xyWidth, xyHeight, xyCenterPoint, vehicleXform, staticObstacles),\n slObstacleGrid.update(this.config, slWidth, slHeight, slCenterPoint, xyCenterPoint),\n ...slObstacleGridDilation.update(this.config, slWidth, slHeight),\n slDynamicObstacleGrid.update(this.config, slWidth, slHeight, slCenterPoint, vehicleStation, startTime, dynamicFrameTime, dynamicObstacles),\n xyslMap.update(this.config, xyWidth, xyHeight, xyCenterPoint),\n ...optimizeCubicPaths.update(this.config, vehiclePose),\n optimizeQuinticPaths.update(this.config, vehiclePose),\n ...pathFromVehicleCosts.update(this.config, vehiclePose, xyCenterPoint, slCenterPoint, this.previousFirstLatticePoint, this.previousSecondLatticePoint, dynamicFrameTime),\n graphSearch.update(this.config, vehiclePose, xyCenterPoint, slCenterPoint, this.previousFirstLatticePoint, this.previousSecondLatticePoint, dynamicFrameTime)\n ].entries()) {\n this.gpgpu.updateProgram(i, p);\n }\n\n this.gpgpu.updateSharedTextures({\n centerline: {\n width: centerline.length,\n height: 1,\n channels: 3,\n filter: \'linear\',\n data: centerlineData\n },\n costTable: {\n width: PathPlanner_NUM_ACCELERATION_PROFILES * PathPlanner_NUM_VELOCITY_RANGES * PathPlanner_NUM_TIME_RANGES,\n height: this.config.lattice.numLatitudes,\n depth: this.config.lattice.numStations,\n channels: 4,\n textureType: \'2DArray\'\n },\n lattice: {\n width: this.config.lattice.numLatitudes,\n height: this.config.lattice.numStations,\n channels: 4,\n data: lattice\n }\n });\n\n this.gpgpu._graphSearchCostTable = null;\n this.gpgpu._dynamicObstacleGrid = null;\n\n let start = performance.now();\n const outputs = this.gpgpu.run();\n const costTable = this.gpgpu._graphSearchCostTable;\n const cubicPathParams = outputs[6];\n const cubicPathFromVehicleParams = outputs[7];\n const quinticPathFromVehicleParams = outputs[8];\n\n let bestEntry = [Number.POSITIVE_INFINITY];\n let bestEntryIndex;\n const numEntries = costTable.length / 4;\n\n for (let i = 0; i < numEntries; i++) {\n const entryUnpacked = this._unpackCostTableIndex(i);\n const entry = [\n costTable[i * 4],\n costTable[i * 4 + 1],\n costTable[i * 4 + 2],\n costTable[i * 4 + 3]\n ];\n\n if (entry[0] < 0) continue;\n\n entry[0] += this._terminalCost(entryUnpacked, entry);\n\n if (entry[0] < bestEntry[0]) {\n bestEntryIndex = i;\n bestEntry = entry;\n }\n }\n\n const inverseVehicleXform = (new THREE.Matrix3()).getInverse(vehicleXform);\n let bestTrajectory = null;\n let fromVehicleSegment = null;\n let fromVehicleParams = null;\n let firstLatticePoint = -1;\n let firstAcceleration = -1;\n let secondLatticePoint = -1;\n let secondAcceleration = -1;\n\n if (isFinite(bestEntry[0])) {\n [bestTrajectory, fromVehicleSegment, fromVehicleParams, firstLatticePoint, firstAcceleration, secondLatticePoint, secondAcceleration] = this._reconstructTrajectory(\n bestEntryIndex,\n costTable,\n cubicPathParams,\n cubicPathFromVehicleParams,\n quinticPathFromVehicleParams,\n vehiclePose,\n lattice\n );\n\n fromVehicleSegment.forEach(p => {\n p.pos = p.pos.applyMatrix3(inverseVehicleXform);\n p.rot += vehiclePose.rot;\n });\n\n bestTrajectory.forEach(p => {\n p.pos = p.pos.applyMatrix3(inverseVehicleXform);\n p.rot += vehiclePose.rot;\n });\n }\n\n this.previousFirstLatticePoint = firstLatticePoint;\n this.previousFirstAcceleration = firstAcceleration;\n this.previousSecondLatticePoint = secondLatticePoint;\n this.previousSecondAcceleration = secondAcceleration;\n\n return {\n path: bestTrajectory,\n fromVehicleSegment: fromVehicleSegment,\n fromVehicleParams: fromVehicleParams,\n latticeStartStation: this.previousStartStation,\n dynamicObstacleGrid: { data: this.gpgpu._dynamicObstacleGrid, width: slWidth, height: slHeight }\n };\n }\n\n _buildLattice(lanePath, startStation, vehicleRot, vehicleXform) {\n const centerline = lanePath.sampleStations(startStation, this.config.lattice.numStations, this._latticeStationInterval());\n const offset = Math.floor(this.config.lattice.numLatitudes / 2);\n const lattice = new Float32Array(this.config.lattice.numStations * this.config.lattice.numLatitudes * 4);\n let index = 0;\n\n for (let s = 0; s < centerline.length; s++) {\n const sample = centerline[s];\n\n for (let l = 0; l < this.config.lattice.numLatitudes; l++) {\n const latitude = (l - offset) / offset * this.config.roadWidth / 2;\n const rot = sample.rot - vehicleRot;\n const pos = THREE.Vector2.fromAngle(rot + Math.PI / 2).multiplyScalar(latitude).add(sample.pos.clone().applyMatrix3(vehicleXform));\n const curv = sample.curv == 0 ? 0 : 1 / (1 / sample.curv - latitude);\n\n lattice[index++] = pos.x;\n lattice[index++] = pos.y;\n lattice[index++] = rot;\n lattice[index++] = curv;\n }\n }\n\n return lattice;\n }\n\n _latticeStationInterval() {\n return this.config.spatialHorizon / this.config.lattice.numStations;\n }\n\n _terminalCost([stationIndex, latitudeIndex, timeIndex, velocityIndex, accelerationIndex], [cost, finalVelocity, finalTime, incomingIndex]) {\n // Only consider vertices that reach the end of the spatial or temporal horizon\n if (stationIndex != this.config.lattice.numStations - 1 && finalVelocity > 0.05)\n return Number.POSITIVE_INFINITY;\n\n const station = (this.config.spatialHorizon / this.config.lattice.numStations) * (stationIndex + 1);\n\n return station * -this.config.stationReachDiscount + finalTime * this.config.extraTimePenalty;\n }\n\n _unpackCostTableIndex(index) {\n if (index < 0) return [-1, index + 2, null, null, null];\n\n const numPerTime = PathPlanner_NUM_ACCELERATION_PROFILES * PathPlanner_NUM_VELOCITY_RANGES;\n const numPerLatitude = numPerTime * PathPlanner_NUM_TIME_RANGES;\n const numPerStation = this.config.lattice.numLatitudes * numPerLatitude;\n\n const stationIndex = Math.floor(index / numPerStation);\n index -= stationIndex * numPerStation;\n\n const latitudeIndex = Math.floor(index / numPerLatitude);\n index -= latitudeIndex * numPerLatitude;\n\n const timeIndex = Math.floor(index / numPerTime);\n index -= timeIndex * numPerTime;\n\n const velocityIndex = Math.floor(index / PathPlanner_NUM_ACCELERATION_PROFILES);\n const accelerationIndex = index % PathPlanner_NUM_ACCELERATION_PROFILES;\n\n return [stationIndex, latitudeIndex, timeIndex, velocityIndex, accelerationIndex];\n }\n\n _reconstructTrajectory(index, costTable, cubicPathParams, cubicPathFromVehicleParams, quinticPathFromVehicleParams, vehiclePose, lattice) {\n let unpacked = this._unpackCostTableIndex(index);\n unpacked.push(costTable[index * 4 + 1]);\n const nodes = [unpacked];\n\n let count = 0;\n while (unpacked[0] >= 0 && count++ < 100) {\n index = costTable[index * 4 + 3];\n unpacked = this._unpackCostTableIndex(index);\n\n const finalVelocity = unpacked[0] >= 0 ? costTable[index * 4 + 1] : vehiclePose.velocity;\n unpacked.push(finalVelocity);\n\n nodes.unshift(unpacked);\n }\n if (count >= 100) throw new Error(\'Infinite loop encountered while reconstructing trajectory.\');\n\n const points = [];\n let fromVehicleSegment = [];\n let fromVehicleParams = null;\n\n for (let i = 0; i < nodes.length - 1; i++) {\n const [prevStation, prevLatitude, _pt, _pv, _pa, prevVelocity] = nodes[i];\n const [station, latitude, _t, _v, _a, velocity] = nodes[i + 1];\n\n let length;\n let pathBuilder;\n\n if (prevStation < 0) {\n const start = {\n pos: new THREE.Vector2(0, 0),\n rot: 0,\n curv: vehiclePose.curv\n };\n\n const endIndex = (station * this.config.lattice.numLatitudes + latitude) * 4;\n const end = {\n pos: new THREE.Vector2(lattice[endIndex], lattice[endIndex + 1]),\n rot: lattice[endIndex + 2],\n curv: lattice[endIndex + 3]\n };\n\n if (prevLatitude == 0) { // Cubic path from vehicle to lattice node\n length = cubicPathFromVehicleParams[endIndex + 2];\n\n const params = {\n p1: cubicPathFromVehicleParams[endIndex],\n p2: cubicPathFromVehicleParams[endIndex + 1],\n sG: length\n };\n\n pathBuilder = new CubicPath(start, end, params);\n\n fromVehicleParams = { type: \'cubic\', params: params };\n } else { // Quintic path from vehicle to lattice node\n length = quinticPathFromVehicleParams[endIndex + 2];\n\n const params = {\n p3: quinticPathFromVehicleParams[endIndex],\n p4: quinticPathFromVehicleParams[endIndex + 1],\n sG: length\n };\n\n pathBuilder = new QuinticPath(start, end, params);\n\n fromVehicleParams = { type: \'quintic\', params: params };\n }\n } else {\n const startIndex = (prevStation * this.config.lattice.numLatitudes + prevLatitude) * 4;\n const endIndex = (station * this.config.lattice.numLatitudes + latitude) * 4;\n\n const start = {\n pos: new THREE.Vector2(lattice[startIndex], lattice[startIndex + 1]),\n rot: lattice[startIndex + 2],\n curv: lattice[startIndex + 3]\n };\n\n const end = {\n pos: new THREE.Vector2(lattice[endIndex], lattice[endIndex + 1]),\n rot: lattice[endIndex + 2],\n curv: lattice[endIndex + 3]\n };\n\n const slIndex = station * this.config.lattice.numLatitudes + latitude;\n const connectivityIndex = (prevStation - station + this.config.lattice.stationConnectivity) * this.config.lattice.latitudeConnectivity + prevLatitude - latitude + Math.floor(this.config.lattice.latitudeConnectivity / 2);\n const cubicPathIndex = (connectivityIndex * this.config.lattice.numStations * this.config.lattice.numLatitudes + slIndex) * 4;\n\n length = cubicPathParams[cubicPathIndex + 2];\n\n pathBuilder = new CubicPath(start, end, {\n p1: cubicPathParams[cubicPathIndex],\n p2: cubicPathParams[cubicPathIndex + 1],\n sG: length\n });\n }\n\n const path = pathBuilder.buildPath(Math.ceil(length / 0.25));\n\n const prevVelocitySq = prevVelocity * prevVelocity;\n const accel = (velocity * velocity - prevVelocitySq) / 2 / length;\n const ds = length / (path.length - 1);\n let s = 0;\n\n for (let p = 0; p < path.length; p++) {\n path[p].velocity = Math.sqrt(2 * accel * s + prevVelocitySq);\n path[p].acceleration = accel;\n s += ds;\n }\n\n if (prevStation < 0) {\n fromVehicleSegment = path;\n } else {\n if (i > 0) path.shift();\n points.push(...path);\n }\n }\n\n let firstLatticePoint = null\n let firstAcceleration = null;\n let secondLatticePoint = null;\n let secondAcceleration = null;\n\n if (nodes.length >= 2) {\n firstLatticePoint = nodes[1][0] * this.config.lattice.numLatitudes + nodes[1][1];\n firstAcceleration = nodes[1][4];\n }\n\n if (nodes.length >= 3) {\n secondLatticePoint = nodes[2][0] * this.config.lattice.numLatitudes + nodes[2][1];\n secondAcceleration = nodes[2][4];\n }\n\n return [points, fromVehicleSegment, fromVehicleParams, firstLatticePoint, firstAcceleration, secondLatticePoint, secondAcceleration];\n }\n}\n\nfunction vehicleTransform({ pos, rot }) {\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -pos.x,\n 0, 1, -pos.y,\n 0, 0, 1\n );\n\n const cosRot = Math.cos(rot);\n const sinRot = Math.sin(rot);\n\n const rotate = new THREE.Matrix3();\n rotate.set(\n cosRot, sinRot, 0,\n -sinRot, cosRot, 0,\n 0, 0, 1\n );\n\n return rotate.multiply(translate);\n}\n\nfunction obstacleTransform(vehicleXform, xyCenterPoint, width, height) {\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -xyCenterPoint.x,\n 0, 1, -xyCenterPoint.y,\n 0, 0, 1\n );\n\n const scale = new THREE.Matrix3();\n scale.set(\n 2 / width, 0, 0,\n 0, 2 / height, 0,\n 0, 0, 1\n );\n\n return scale.multiply(translate).multiply(vehicleXform);\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/MovingAverage.js\nclass MovingAverage {\n constructor(maxSamples) {\n this.samples = new Array(maxSamples);\n this.numSamples = 0;\n this.nextIndex = 0;\n this.average = null;\n }\n\n addSample(sample) {\n this.samples[this.nextIndex++] = sample;\n this.nextIndex = this.nextIndex % this.samples.length;\n this.numSamples = Math.min(this.numSamples + 1, this.samples.length);\n\n const k = 2 / (this.numSamples + 1);\n let curr = this.nextIndex % this.numSamples;\n let newAverage = this.samples[curr];\n\n for (let i = 1; i < this.numSamples; i++) {\n curr = (curr + 1) % this.numSamples;\n newAverage = this.samples[curr] * k + newAverage * (1 - k);\n }\n\n this.average = newAverage;\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/script-loader/index.js!./js/Utils.js\nvar Utils = __webpack_require__(172);\n;// CONCATENATED MODULE: ./js/Simulator.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst WELCOME_MODAL_KEY = \'dash_WelcomeModal\';\n\n\n\nclass Simulator {\n constructor(domElement) {\n this.pathPlannerWorker = new Worker(URL.createObjectURL(new Blob([`(${dash_initPathPlannerWorker.toString()})()`], { type: \'text/javascript\' })));\n this.pathPlannerWorker.onmessage = this.receivePlannedPath.bind(this);\n this.pathPlannerConfigEditor = new PathPlannerConfigEditor();\n\n this.physics = new Physics();\n this.car = this.physics.createCar();\n\n this.renderer = new THREE.WebGLRenderer({ antialias: true });\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setSize(domElement.clientWidth, domElement.clientHeight);\n this.renderer.shadowMap.enabled = true;\n domElement.appendChild(this.renderer.domElement);\n\n this.lastPlanParams = null;\n this.renderer.context.canvas.addEventListener(\'webglcontextlost\', event => {\n console.log(\'Simulator: webgl context lost\');\n console.log(event);\n console.log(this.lastPlanParams);\n });\n\n this._setUpCameras(this.renderer.domElement);\n\n this.scene = new THREE.Scene();\n this.sceneFog = null;//new THREE.FogExp2(0x111111, 0.0025);\n this.scene.fog = this.sceneFog;\n this.scene.background = new THREE.Color(0x111111);\n\n this.editor = new Editor(this.renderer.domElement, this.editorCamera, this.scene);\n\n const geolocation = null;//[33.523900, -111.908756];\n const map = new MapObject(geolocation);\n this.scene.add(map);\n\n this.carObject = new CarObject(this.car);\n this.scene.add(this.carObject);\n\n this.scene.add(new THREE.AmbientLight(0x666666));\n const light = new THREE.DirectionalLight(0xffffff, 0.75);\n light.position.set(1, 1, 1).normalize();\n this.scene.add(light);\n\n this.manualCarController = new ManualController();\n this.autonomousCarController = null;\n\n this.dashboard = new Dashboard(this.car);\n\n this.plannerReady = false;\n this.plannerRunning = false;\n this.plannerReset = false;\n this.carStation = null;\n this.plannedPathGroup = new THREE.Group();\n this.scene.add(this.plannedPathGroup);\n\n this.staticObstaclesGroup = new THREE.Group();\n this.scene.add(this.staticObstaclesGroup);\n this.dynamicObstaclesGroup = new THREE.Group();\n this.scene.add(this.dynamicObstaclesGroup);\n\n this.paused = false;\n this.prevTimestamp = null;\n this.frameCounter = 0;\n this.fpsTime = 0;\n this.fps = 0;\n this.simulatedTime = 0;\n this.lastPlanRequestTime = null;\n this.latestPlanTimestamp = null;\n this.averagePlanTime = new MovingAverage(20);\n\n window.addEventListener(\'resize\', e => {\n this._updateCameraAspects(domElement.clientWidth / domElement.clientHeight);\n this.renderer.setSize(domElement.clientWidth, domElement.clientHeight);\n });\n\n window.addEventListener(\'hashchange\', e => {\n if (window.location.hash.startsWith(\'#/s/\'))\n window.location.reload();\n });\n\n this.manualModeButton = document.getElementById(\'mode-manual\');\n this.manualModeButton.addEventListener(\'click\', this.enableManualMode.bind(this));\n this.autonomousModeButton = document.getElementById(\'mode-autonomous\');\n this.autonomousModeButton.addEventListener(\'click\', this.enableAutonomousMode.bind(this));\n\n document.getElementById(\'editor-enable\').addEventListener(\'click\', this.enableEditor.bind(this));\n document.getElementById(\'editor-finalize\').addEventListener(\'click\', this.finalizeEditor.bind(this));\n document.getElementById(\'simulator-load\').addEventListener(\'click\', this.loadScenario.bind(this));\n\n this.scenarioPlayButton = document.getElementById(\'scenario-play\');\n this.scenarioPlayButton.addEventListener(\'click\', this.playScenario.bind(this));\n this.scenarioPauseButton = document.getElementById(\'scenario-pause\');\n this.scenarioPauseButton.addEventListener(\'click\', this.pauseScenario.bind(this));\n for (const btn of document.querySelectorAll(\'[id=scenario-restart]\')) {\n btn.addEventListener(\'click\', this.restartScenario.bind(this));\n }\n\n this.welcomeModal = document.getElementById(\'welcome-modal\');\n document.getElementById(\'show-welcome-modal\').addEventListener(\'click\', e => this.welcomeModal.classList.add(\'is-active\'));\n\n // if (window.localStorage.getItem(WELCOME_MODAL_KEY) !== \'hide\') {\n // this.welcomeModal.classList.add(\'is-active\');\n // }\n\n this.collisionMessage = document.getElementById(\'collision-message\');\n this.successMessage = document.getElementById(\'success-message\');\n // If the click was outside the div, hide it\n document.addEventListener("click", this.setHideCollisionMessageOnClickOutside.bind(this));\n\n document.getElementById(\'welcome-modal-background\').addEventListener(\'click\', this.hideWelcomeModal.bind(this));\n document.getElementById(\'welcome-modal-close\').addEventListener(\'click\', this.hideWelcomeModal.bind(this));\n\n document.getElementById(\'welcome-modal-examples\').addEventListener(\'click\', e => {\n this.welcomeModal.classList.remove(\'is-active\');\n this.loadScenario();\n this.editor.scenarioManager.switchTab(this.editor.scenarioManager.examplesTab);\n });\n\n document.getElementById(\'welcome-modal-create\').addEventListener(\'click\', e => {\n this.welcomeModal.classList.remove(\'is-active\');\n this.enableEditor();\n });\n\n this.simModeBoxes = Array.prototype.slice.call(document.getElementsByClassName(\'sim-mode-box\'), 0);\n this.editModeBoxes = Array.prototype.slice.call(document.getElementsByClassName(\'edit-mode-box\'), 0);\n\n this.fpsBox = document.getElementById(\'fps\');\n\n this.enableManualMode();\n this.changeCamera(\'chase\');\n\n this.aroundAnchorIndex = null;\n this.staticObstacles = [];\n this.dynamicObstacles = [];\n\n this._checkHashScenario();\n\n requestAnimationFrame(this.step.bind(this));\n\n this.editor.scenarioManager._loadScenario(examples[2]);\n this.finalizeEditor();\n }\n\n toss() {\n const pose = this.car.pose;\n const rotVec = THREE.Vector2.fromAngle(pose.rot);\n const pos = rotVec.clone().multiplyScalar(50).add(new THREE.Vector2(rotVec.y, rotVec.x)).add(pose.pos);\n const obstacle = new StaticObstacle(pos, 0, 1.0, 1.0);\n\n const obsGeom = new THREE.PlaneGeometry(obstacle.width, obstacle.height);\n const obsMat = new THREE.MeshBasicMaterial({ color: 0x0000ff, depthTest: false, transparent: true, opacity: 0.5 });\n const obsObj = new THREE.Mesh(obsGeom, obsMat);\n obsObj.rotation.x = -Math.PI / 2;\n obsObj.rotation.z = -obstacle.rot;\n obsObj.position.set(obstacle.pos.x, 0, obstacle.pos.y);\n this.scene.add(obsObj);\n\n this.staticObstacles.push(obstacle);\n }\n\n _checkHashScenario() {\n if (!window.location.hash.startsWith(\'#/s/\')) return;\n\n const [_hash, _s, code] = window.location.hash.split(\'/\');\n\n try {\n const json = JSON.parse(atob(decodeURIComponent(code)));\n this.editor.loadJSON(json);\n this.finalizeEditor();\n this.welcomeModal.classList.remove(\'is-active\');\n window.location.hash = \'\';\n } catch (e) {\n console.log(\'Error importing scenario code:\');\n console.log(code);\n console.log(e);\n }\n }\n\n _setUpCameras(domElement) {\n this.chaseCamera = new THREE.PerspectiveCamera(55, domElement.clientWidth / domElement.clientHeight, 1, 10000);\n this.chaseCameraControls = new simulator_OrbitControls(this.chaseCamera, domElement);\n this.chaseCameraControls.minDistance = 4;\n this.chaseCameraControls.maxDistance = 5000;\n this.chaseCameraControls.maxPolarAngle = Math.PI / 2.02;\n this.chaseCameraControls.enablePan = false;\n this.chaseCameraControls.enabled = false;\n this._resetChaseCamera();\n\n this.freeCamera = new THREE.PerspectiveCamera(55, domElement.clientWidth / domElement.clientHeight, 1, 10000);\n this.freeCameraControls = new simulator_OrbitControls(this.freeCamera, domElement);\n this.freeCameraControls.minDistance = 5;\n this.freeCameraControls.maxDistance = 5000;\n this.freeCameraControls.maxPolarAngle = Math.PI / 2.02;\n this.freeCameraControls.enabled = true;\n this._resetFreeCamera();\n\n this.topDownCamera = new THREE.PerspectiveCamera(55, domElement.clientWidth / domElement.clientHeight, 1, 10000);\n this.topDownCamera.position.set(0, 50, 0);\n this.topDownCamera.lookAt(0, 0, 0);\n this.topDownControls = new TopDownCameraControls(domElement, this.topDownCamera);\n this.topDownControls.enabled = false;\n this.topDownControls.minAltitude = 5;\n this.topDownControls.maxAltitude = 10000;\n\n this.editorCamera = new THREE.PerspectiveCamera(45, domElement.clientWidth / domElement.clientHeight, 1, 10000);\n this.editorCamera.layers.enable(2);\n this.editorCamera.position.set(0, 200, 0);\n this.editorCamera.lookAt(0, 0, 0);\n this.editorCameraControls = new TopDownCameraControls(domElement, this.editorCamera);\n this.editorCameraControls.enabled = false;\n this.editorCameraControls.enablePanning = true;\n this.editorCameraControls.minAltitude = 10;\n this.editorCameraControls.maxAltitude = 10000;\n\n this.cameraButtons = {};\n\n [\'free\', \'chase\', \'topDown\'].forEach(c => {\n const cameraButton = document.getElementById(`camera-${c}`);\n cameraButton.addEventListener(\'click\', () => this.changeCamera(c));\n this.cameraButtons[c] = cameraButton;\n });\n\n this.switchTo2DButton = document.getElementById(\'camera-2D\');\n this.switchTo2DButton.addEventListener(\'click\', this.switchTo2D.bind(this));\n this.switchTo3DButton = document.getElementById(\'camera-3D\');\n this.switchTo3DButton.addEventListener(\'click\', this.switchTo3D.bind(this));\n\n this.switchTo3D();\n }\n\n _resetFreeCamera() {\n this.freeCameraControls.position0.copy(this.chaseCamera.position);\n const carPosition = this.car.position;\n this.freeCameraControls.target0.set(carPosition.x, 0, carPosition.y);\n this.freeCameraControls.reset();\n }\n\n _resetChaseCamera() {\n const pos = this.car.position;\n const dirVector = THREE.Vector2.fromAngle(this.car.rotation).multiplyScalar(-20);\n this.chaseCamera.position.set(pos.x + dirVector.x, 8, pos.y + dirVector.y);\n this.chaseCamera.lookAt(pos.x, 0, pos.y);\n }\n\n _resetTopDownCamera() {\n const carPosition = this.car.position;\n this.topDownCamera.position.set(carPosition.x, 50, carPosition.y);\n this.topDownCamera.rotation.z = -this.car.rotation - Math.PI / 2\n }\n\n _updateCameraAspects(aspect) {\n this.freeCamera.aspect = aspect;\n this.freeCamera.updateProjectionMatrix();\n this.chaseCamera.aspect = aspect;\n this.chaseCamera.updateProjectionMatrix();\n this.topDownCamera.aspect = aspect;\n this.topDownCamera.updateProjectionMatrix();\n this.editorCamera.aspect = aspect;\n this.editorCamera.updateProjectionMatrix();\n }\n\n enableEditor() {\n this.editor.enabled = true;\n this.plannerRunning = false;\n\n this.previousCamera = this.camera;\n this.camera = this.editorCamera;\n this.editorCameraControls.enabled = true;\n this.chaseCameraControls.enabled = false;\n this.topDownControls.enabled = false;\n this.freeCameraControls.enabled = false;\n\n this.scene.fog = null;\n this.carObject.visible = false;\n if (this.plannedPathGroup) this.plannedPathGroup.visible = false;\n this.staticObstaclesGroup.visible = false;\n this.dynamicObstaclesGroup.visible = false;\n\n this.simModeBoxes.forEach(el => el.classList.add(\'is-hidden\'));\n this.editModeBoxes.forEach(el => el.classList.remove(\'is-hidden\'));\n\n this.showPlannerUnavailable(false);\n }\n\n finalizeEditor(replaceCamera = true) {\n this.editor.enabled = false;\n this.editorCameraControls.enabled = false;\n\n this.latestPlanTimestamp = null;\n this.prevTimestamp = null;\n\n this.scene.fog = this.sceneFog;\n this.carObject.visible = true;\n\n this.simModeBoxes.forEach(el => el.classList.remove(\'is-hidden\'));\n this.editModeBoxes.forEach(el => el.classList.add(\'is-hidden\'));\n\n if (this.editor.lanePath.anchors.length > 1) {\n const centerline = this.editor.lanePath.centerline;\n const pos = centerline[0].clone();\n const dir = centerline[1].clone().sub(centerline[0]);\n const rot = Math.atan2(dir.y, dir.x);\n const perpindicular = rot + Math.PI / 2 * (Math.sign(this.editor.lanePreference) || 0);\n const latitude = this.pathPlannerConfigEditor.config.roadWidth / 4;\n\n this.car.setPose(pos.x + Math.cos(perpindicular) * latitude, pos.y + Math.sin(perpindicular) * latitude, rot);\n this.car.velocity = this.editor.initialSpeed;\n\n this.dynamicObstacles = this.editor.dynamicObstacles;\n\n // The `false` value means the controller is waiting to be created after the first planning cycle.\n // This signals the simulator to use neutral controls instead of the hard brake used for the `null` value.\n this.autonomousCarController = false;\n this.enableAutonomousMode();\n\n if (!this.plannerRunning) {\n this.plannerReady = true;\n this.plannerRunning = true;\n }\n this.plannerReset = true;\n this.simulatedTime = 0;\n this.carStation = 0;\n this.aroundAnchorIndex = null;\n\n this.pauseScenario();\n this.autonomousModeButton.classList.add(\'is-loading\');\n this.waitingForFirstPlan = true;\n } else {\n this.dynamicObstacles = [];\n }\n\n this.staticObstacles = this.editor.staticObstacles;\n this.recreateStaticObstacleObjects();\n this.recreateDynamicObstacleObjects();\n\n this.dashboard.update({ steer: 0, brake: 0, gas: 0 }, this.car.velocity, null, null, 0, this.averagePlanTime.average);\n\n if (replaceCamera) {\n this.camera = this.previousCamera;\n\n if (this.previousCamera == this.chaseCamera)\n this.chaseCameraControls.enabled = true;\n else if (this.previousCamera == this.topDownCamera)\n this.topDownControls.enabled = true;\n else if (this.previousCamera == this.freeCamera)\n this.freeCameraControls.enabled = true;\n else\n this.changeCamera(\'chase\');\n }\n\n this._resetFreeCamera();\n this._resetChaseCamera();\n this._resetTopDownCamera();\n }\n\n recreateStaticObstacleObjects() {\n this.scene.remove(this.staticObstaclesGroup);\n this.staticObstaclesGroup = new THREE.Group();\n this.scene.add(this.staticObstaclesGroup);\n\n this.staticObstacles.forEach(o => {\n const obstacleObject = new StaticObstacleObject(o);\n this.staticObstaclesGroup.add(obstacleObject);\n });\n }\n\n recreateDynamicObstacleObjects() {\n this.scene.remove(this.dynamicObstaclesGroup);\n this.dynamicObstaclesGroup = new THREE.Group();\n this.scene.add(this.dynamicObstaclesGroup);\n\n this.dynamicObstacles.forEach(o => {\n const obstacleObject = new DynamicObstacleObject(o, this.editor.lanePath);\n this.dynamicObstaclesGroup.add(obstacleObject);\n });\n\n this.updateDynamicObjects(this.simulatedTime);\n }\n\n updateDynamicObjects(time) {\n this.dynamicObstaclesGroup.children.forEach(o => o.update(time));\n }\n\n playScenario() {\n this.paused = false;\n this.scenarioPlayButton.classList.add(\'is-hidden\');\n this.scenarioPauseButton.classList.remove(\'is-hidden\');\n this.showPlannerUnavailable(false);\n }\n\n pauseScenario() {\n this.paused = true;\n this.scenarioPlayButton.classList.remove(\'is-hidden\');\n this.scenarioPauseButton.classList.add(\'is-hidden\');\n\n this.showPlannerUnavailable(false);\n this.waitingForFirstPlan = false;\n }\n\n restartScenario() {\n if (this.editor.enabled) return;\n\n if (this.plannedPathGroup)\n this.scene.remove(this.plannedPathGroup);\n\n this.finalizeEditor(false);\n\n this.successMessage.classList.remove(\'is-active\');\n this.collisionMessage.classList.remove(\'is-active\');\n\n this.latestPlanTimestamp = null;\n this.showPlannerUnavailable(false);\n }\n\n loadScenario() {\n if (this.editor.enabled) return;\n\n this.editor.scenarioManager.showModal(this.finalizeEditor.bind(this));\n }\n\n enableManualMode() {\n this.manualModeButton.classList.remove(\'is-outlined\');\n this.manualModeButton.classList.add(\'is-selected\');\n this.autonomousModeButton.classList.add(\'is-outlined\', \'is-inverted\');\n this.autonomousModeButton.classList.remove(\'is-selected\', \'is-link\');\n\n this.carControllerMode = \'manual\';\n\n this.showPlannerUnavailable(false);\n }\n\n enableAutonomousMode() {\n this.autonomousModeButton.classList.remove(\'is-outlined\', \'is-inverted\');\n this.autonomousModeButton.classList.add(\'is-selected\', \'is-link\');\n this.manualModeButton.classList.add(\'is-outlined\');\n this.manualModeButton.classList.remove(\'is-selected\');\n\n this.carControllerMode = \'autonomous\';\n }\n\n changeCamera(mode) {\n if (this.editor.enabled) return;\n\n switch (mode) {\n case "free":\n this.chaseCameraControls.enabled = false;\n this.topDownControls.enabled = false;\n this.freeCameraControls.enabled = true;\n\n if (this.camera == this.freeCamera)\n this._resetFreeCamera();\n else\n this.camera = this.freeCamera;\n\n break;\n case "chase":\n this.freeCameraControls.enabled = false;\n this.topDownControls.enabled = false;\n this.chaseCameraControls.enabled = true;\n\n if (this.camera == this.chaseCamera)\n this._resetChaseCamera();\n else\n this.camera = this.chaseCamera;\n\n break;\n case "topDown":\n this.freeCameraControls.enabled = false;\n this.chaseCameraControls.enabled = false;\n this.topDownControls.enabled = true;\n\n if (this.camera == this.topDownCamera)\n this._resetTopDownCamera();\n else\n this.camera = this.topDownCamera;\n\n break;\n default:\n console.log(`Unknown camera mode: ${mode}`);\n return;\n }\n\n for (const c in this.cameraButtons) {\n const classes = this.cameraButtons[c].classList;\n if (c == mode) {\n classes.remove(\'is-outlined\');\n classes.add(\'is-selected\');\n } else {\n classes.add(\'is-outlined\');\n classes.remove(\'is-selected\');\n }\n }\n }\n\n switchTo2D() {\n this.switchTo2DButton.classList.remove(\'is-outlined\');\n this.switchTo2DButton.classList.add(\'is-selected\');\n this.switchTo3DButton.classList.add(\'is-outlined\');\n this.switchTo3DButton.classList.remove(\'is-selected\');\n\n this.chaseCamera.layers.enable(2);\n this.topDownCamera.layers.enable(2);\n this.freeCamera.layers.enable(2);\n this.chaseCamera.layers.disable(3);\n this.topDownCamera.layers.disable(3);\n this.freeCamera.layers.disable(3);\n }\n\n switchTo3D() {\n this.switchTo3DButton.classList.remove(\'is-outlined\');\n this.switchTo3DButton.classList.add(\'is-selected\');\n this.switchTo2DButton.classList.add(\'is-outlined\');\n this.switchTo2DButton.classList.remove(\'is-selected\');\n\n this.chaseCamera.layers.enable(3);\n this.topDownCamera.layers.enable(3);\n this.freeCamera.layers.enable(3);\n this.chaseCamera.layers.disable(2);\n this.topDownCamera.layers.disable(2);\n this.freeCamera.layers.disable(2);\n }\n\n hideWelcomeModal() {\n this.welcomeModal.classList.remove(\'is-active\');\n window.localStorage.setItem(WELCOME_MODAL_KEY, \'hide\');\n }\n\n showPlannerUnavailable(show) {\n const message = document.getElementById("planner-unavailable-message");\n if (show) {\n message.classList.add(\'is-active\');\n this.autonomousModeButton.classList.add(\'is-loading\');\n } else {\n message.classList.remove(\'is-active\');\n this.autonomousModeButton.classList.remove(\'is-loading\');\n }\n }\n\n setHideCollisionMessageOnClickOutside() {\n if (!this.collisionMessage.contains(event.target)) {\n this.collisionMessage.classList.remove(\'is-active\');\n }\n if (!this.successMessage.contains(event.target)) {\n this.successMessage.classList.remove(\'is-active\');\n }\n }\n\n startPlanner(pose, station) {\n this.plannerReady = false;\n this.lastPlanRequestTime = performance.now();\n\n // In order to create a stable trajectory between successive planning\n // cycles, we must compensate for the latency between when a planning cycle\n // starts and when it ends. The average planning time is used to forward\n // simulate the vehicle to the pose it is expected to have when the\n // planning actually finishes.\n\n let predictedPose = pose;\n let predictedStation = station;\n let startTime = this.simulatedTime;\n\n if (!this.plannerReset && !this.paused && this.autonomousCarController && this.carControllerMode == \'autonomous\') {\n const latency = this.averagePlanTime.average;\n predictedPose = this.autonomousCarController.predictPoseAfterTime(pose, latency);\n predictedStation = this.editor.lanePath.stationLatitudeFromPosition(predictedPose.pos, this.aroundAnchorIndex)[0];\n startTime += latency;\n }\n\n const reset = this.plannerReset;\n this.plannerReset = false;\n\n this.lastPlanParams = {\n type: \'plan\',\n config: Object.assign({}, this.pathPlannerConfigEditor.config, { speedLimit: this.editor.speedLimit, lanePreference: this.editor.lanePreference }),\n vehiclePose: predictedPose,\n vehicleStation: predictedStation,\n lanePath: this.editor.lanePath,\n startTime: startTime,\n staticObstacles: this.staticObstacles,\n dynamicObstacles: this.dynamicObstacles.filter(o => o.positionAtTime(startTime).x >= 0),\n reset: reset\n };\n\n this.pathPlannerWorker.postMessage(this.lastPlanParams);\n }\n\n receivePlannedPath(event) {\n if (event.data.error) {\n if (event.data.error === "planner_unavailable" && !this.paused) {\n this.showPlannerUnavailable(true);\n }\n //document.getElementById(\'planner-error\').classList.remove(\'is-hidden\')\n return;\n }\n\n this.showPlannerUnavailable(false);\n\n this.latestPlanTimestamp = performance.now();\n\n if (this.waitingForFirstPlan && !this.plannerReset) {\n this.waitingForFirstPlan = false;\n this.autonomousModeButton.classList.remove(\'is-loading\');\n this.playScenario();\n }\n\n if (this.editor.enabled) return;\n\n const { fromVehicleParams, vehiclePose, vehicleStation, latticeStartStation, config, dynamicObstacleGrid } = event.data;\n let { path, fromVehicleSegment } = event.data;\n\n const planningDuration = Math.min((this.latestPlanTimestamp - this.lastPlanRequestTime) / 1000, 0.3);\n this.averagePlanTime.addSample(planningDuration);\n this.plannerReady = true;\n\n if (this.plannerReset) return;\n\n if (this.plannedPathGroup)\n this.scene.remove(this.plannedPathGroup);\n this.plannedPathGroup = new THREE.Group();\n this.scene.add(this.plannedPathGroup);\n\n const circleGeom = new THREE.CircleGeometry(0.1, 32);\n const circleMat = new THREE.MeshBasicMaterial({ color: 0x00ff80, transparent: true, opacity: 0.7 });\n\n if (latticeStartStation) {\n const lattice = new RoadLattice(this.editor.lanePath, latticeStartStation, config);\n lattice.lattice.forEach(cells => {\n cells.forEach(c => {\n const circle = new THREE.Mesh(circleGeom, circleMat);\n circle.position.set(c.pos.x, 0, c.pos.y);\n circle.rotation.x = -Math.PI / 2;\n this.plannedPathGroup.add(circle);\n });\n });\n }\n\n // TODO: clear this up or just remove it\n if (false) {}\n\n if (path === null) {\n this.autonomousCarController = null;\n return;\n }\n\n if (fromVehicleParams.type == \'cubic\') {\n const start = this.car.pose;\n const end = fromVehicleSegment[fromVehicleSegment.length - 1];\n\n const pathBuilder = new CubicPath_CubicPath(start, end, fromVehicleParams.params);\n\n if (pathBuilder.optimize()) {\n fromVehicleSegment = pathBuilder.buildPath(Math.ceil(pathBuilder.params.sG / 0.25));\n\n const prevVelocitySq = this.car.velocity * this.car.velocity;\n const accel = (end.velocity * end.velocity - prevVelocitySq) / 2 / pathBuilder.params.sG;\n const ds = pathBuilder.params.sG / (fromVehicleSegment.length - 1);\n let s = 0;\n\n for (let p = 0; p < fromVehicleSegment.length; p++) {\n fromVehicleSegment[p].velocity = Math.sqrt(2 * accel * s + prevVelocitySq);\n fromVehicleSegment[p].acceleration = accel;\n s += ds;\n }\n }\n }\n\n if (fromVehicleSegment.length > 0) {\n path = fromVehicleSegment.concat(path);\n }\n\n path.forEach(p => Object.setPrototypeOf(p.pos, THREE.Vector2.prototype));\n const followPath = new Path(path);\n\n if (this.autonomousCarController)\n this.autonomousCarController.replacePath(followPath);\n else\n this.autonomousCarController = new FollowController(followPath, this.car);\n\n const pathGeometry = new THREE.Geometry();\n pathGeometry.setFromPoints(path.map(p => new THREE.Vector3(p.pos.x, 0, p.pos.y)));\n const pathLine = new MeshLine();\n pathLine.setGeometry(pathGeometry);\n\n const color = fromVehicleParams.type == \'cubic\' ? new THREE.Color(0xff8800) : new THREE.Color(0xffff40);\n const pathObject = new THREE.Mesh(\n pathLine.geometry,\n new MeshLineMaterial({\n color: color,\n lineWidth: 0.15,\n resolution: new THREE.Vector2(this.renderer.domElement.clientWidth, this.renderer.domElement.clientHeight)\n })\n );\n pathObject.renderOrder = 1;\n this.plannedPathGroup.add(pathObject);\n }\n\n _hasCarStaticObstacleCollision(carRectangle) {\n for (const obstacle of this.staticObstacles) {\n const obstacleRectangle = {\n x: obstacle.pos.x,\n y: obstacle.pos.y,\n width: obstacle.width,\n height: obstacle.height,\n angle: obstacle.rot,\n };\n if (areRectanglesColliding(carRectangle, obstacleRectangle)) {\n return true;\n }\n }\n }\n\n _hasCarDynamicObstacleCollision(carRectangle) {\n for (const obstacle of this.dynamicObstaclesGroup.children) {\n const positoin_at_time = obstacle.position\n const obstacleRectangle = {\n x: positoin_at_time.x,\n y: positoin_at_time.z,\n width: obstacle.size.w + 0.4, // 30 cm is collision buffer\n height: obstacle.size.h + 0.4,\n angle: obstacle.rotation.y,\n };\n if (areRectanglesColliding(carRectangle, obstacleRectangle)) {\n return true;\n }\n }\n }\n\n _hasCarOutOfRoadCollision(carRectangle) {\n for (const left_boundary of this.editor.lanePath.leftBoundaries) {\n if (checkRectanglePolylineIntersection(carRectangle, left_boundary)) {\n return true;\n }\n }\n\n for (const right_boundary of this.editor.lanePath.rightBoundaries) {\n if (checkRectanglePolylineIntersection(carRectangle, right_boundary)) {\n return true;\n }\n }\n\n return false;\n }\n\n hasAnyCollisions() {\n const carRectangle = {\n x: this.car.position.x,\n y: this.car.position.y,\n height: Car_Car.HALF_CAR_WIDTH * 2,\n width: Car_Car.HALF_CAR_LENGTH * 2,\n angle: this.car.pose.rot,\n };\n\n if (this._hasCarStaticObstacleCollision(carRectangle)) {\n return "Collision with static object";\n }\n if (this._hasCarDynamicObstacleCollision(carRectangle)) {\n return "Collision with bot";\n }\n if (this._hasCarOutOfRoadCollision(carRectangle)) {\n return "Out of road";\n }\n\n return null;\n }\n\n checkScenarioCompletion() {\n return this.carStation >= this.editor.lanePath.arcLength - 5.0;\n }\n\n step(timestamp) {\n if (this.prevTimestamp == null) {\n this.prevTimestamp = timestamp;\n requestAnimationFrame(this.step.bind(this));\n return;\n }\n\n // plan is outdated, should pause simulation\n const planWaitingThreshold = 0.3; // path expected to be updated once in 300ms\n const timeSinceLastPlanUpdate =\n this.latestPlanTimestamp != null ? (performance.now() - this.latestPlanTimestamp) / 1000.0 : 0; // in ms\n if (!this.editor.enabled &&\n (this.waitingForFirstPlan || (!this.paused && timeSinceLastPlanUpdate > planWaitingThreshold))) {\n this.showPlannerUnavailable(true);\n this.prevTimestamp = timestamp;\n }\n const dt = (timestamp - this.prevTimestamp) / 1000;\n\n this.editor.update();\n\n // skip simulation when dt is not in valid expected range\n if (!this.editor.enabled && !this.paused && dt > 1e-6 && dt < 0.5) {\n this.showPlannerUnavailable(false);\n\n this.simulatedTime += dt;\n\n const prevCarPosition = this.car.position;\n const prevCarRotation = this.car.rotation;\n\n const manualControls = this.manualCarController.control(this.car.pose, this.car.wheelAngle, this.car.velocity, dt);\n if (manualControls.steer != 0 || manualControls.brake != 0 || manualControls.gas != 0)\n this.enableManualMode();\n\n let autonomousControls = { steer: 0, brake: 0, gas: 0};\n if (this.autonomousCarController)\n autonomousControls = this.autonomousCarController.control(this.car.pose, this.car.wheelAngle, this.car.velocity, dt, this.carControllerMode == \'autonomous\') ;\n else if (this.autonomousCarController === null)\n autonomousControls = { steer: 0, brake: 1, gas: 0 };\n\n const controls = this.carControllerMode == \'autonomous\' ? autonomousControls : manualControls;\n\n this.car.update(controls, dt);\n this.physics.step(dt);\n\n this.updateDynamicObjects(this.simulatedTime);\n\n const carPosition = this.car.position;\n const carRotation = this.car.rotation;\n const carRearAxle = this.car.rearAxlePosition;\n const carVelocity = this.car.velocity;\n\n const positionOffset = { x: carPosition.x - prevCarPosition.x, y: 0, z: carPosition.y - prevCarPosition.y };\n this.chaseCamera.position.add(positionOffset);\n this.chaseCameraControls.target.set(carPosition.x, 0, carPosition.y);\n this.chaseCameraControls.rotateLeft(carRotation - prevCarRotation);\n this.chaseCameraControls.update();\n\n this.topDownCamera.position.setX(carPosition.x);\n this.topDownCamera.position.setZ(carPosition.y);\n this.topDownCamera.rotation.z = -carRotation - Math.PI / 2\n\n let latitude = null;\n\n if (this.editor.lanePath.anchors.length > 1) {\n const [s, l, aroundAnchorIndex] = this.editor.lanePath.stationLatitudeFromPosition(carRearAxle, this.aroundAnchorIndex);\n this.aroundAnchorIndex = aroundAnchorIndex;\n\n this.carStation = s;\n latitude = l;\n }\n\n const any_collision = this.hasAnyCollisions();\n if (any_collision != null) {\n this.pauseScenario();\n this.collisionMessage.classList.add(\'is-active\');\n document.getElementById(\'collision-message-text\').innerText = "Case failed: " + any_collision;\n\n this.pathPlannerWorker.postMessage({\n type: \'notify_case_status\',\n status: {status: "failed", reason: any_collision}\n });\n\n } else if (this.checkScenarioCompletion()) {\n this.pauseScenario();\n this.successMessage.classList.add(\'is-active\');\n\n this.pathPlannerWorker.postMessage({\n type: \'notify_case_status\',\n status: {status: "completed"}\n });\n }\n\n this.dashboard.update(\n controls,\n carVelocity,\n this.carStation,\n latitude,\n this.simulatedTime,\n this.averagePlanTime.average);\n }\n\n if (!this.editor.enabled && this.plannerReady) {\n this.startPlanner(this.car.pose, this.carStation || 0);\n this.dashboard.updatePlanTime(this.averagePlanTime.average);\n } else if (!this.plannerReady) {\n this.dashboard.updatePlanTime(timeSinceLastPlanUpdate);\n }\n\n this.frameCounter++;\n this.fpsTime += dt;\n if (this.fpsTime >= 1) {\n this.fps = this.frameCounter / this.fpsTime;\n this.frameCounter = 0;\n this.fpsTime = 0;\n this.fpsBox.textContent = this.fps.toFixed(1);\n }\n\n this.renderer.render(this.scene, this.camera);\n\n this.prevTimestamp = timestamp;\n\n requestAnimationFrame(this.step.bind(this));\n }\n}\n\n;// CONCATENATED MODULE: ./js/Dash.js\n\n\n\ndocument.addEventListener(\'DOMContentLoaded\', e => {\n window.simulator = new Simulator(document.getElementById(\'container\'));\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUE7O0FBRUE7O0FBRUE7O0FBRUEsR0FBRzs7QUFFSCxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxhQUFhO0FBQ3pCLFlBQVksUUFBUTtBQUNwQixhQUFhLFVBQVU7QUFDdkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsd0JBQXdCOztBQUUzQzs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxhQUFhO0FBQ3pCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLE1BQU07O0FBRU47QUFDQTs7QUFFQSxNQUFNOztBQUVOOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFVBQVU7QUFDdEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEsSUFBSTs7QUFFSjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsWUFBWTs7QUFFbEM7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLE1BQU0sT0FBTzs7QUFFYixzQkFBc0IsWUFBWTs7QUFFbEM7O0FBRUE7O0FBRUE7O0FBRUEsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsWUFBWTs7QUFFbEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBLE1BQU0sT0FBTzs7QUFFYjtBQUNBLHNCQUFzQixZQUFZOztBQUVsQzs7QUFFQTs7QUFFQTs7QUFFQSxLQUFLOztBQUVMOztBQUVBO0FBQ0EscUJBQXFCLFFBQVE7O0FBRTdCOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEscUJBQXFCLDJCQUEyQjs7QUFFaEQ7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksVUFBVTtBQUN0QixZQUFZLE1BQU07QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLG1CQUFtQixXQUFXOztBQUU5Qjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxLQUFLOztBQUVMOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFVBQVU7QUFDdEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUEsS0FBSzs7QUFFTDtBQUNBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQSxLQUFLOztBQUVMOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFVBQVU7QUFDdEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsY0FBYzs7QUFFakM7O0FBRUE7O0FBRUEsV0FBVzs7QUFFWCxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLElBQUk7O0FBRUo7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLElBQUk7O0FBRUo7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQjtBQUNBOztBQUVBOztBQUVBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFVBQVU7QUFDdEIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCO0FBQ0E7O0FBRUE7O0FBRUEsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksVUFBVTtBQUN0QixhQUFhLFFBQVE7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksVUFBVTtBQUN0QixhQUFhLFFBQVE7QUFDckI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSTs7QUFFSjs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCLGFBQWEsUUFBUTtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVO0FBQ3RCLFlBQVksUUFBUTtBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTs7QUFFQTs7QUFFQSxtQkFBbUIsZUFBZTs7QUFFbEM7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQjtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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RUE7O0FBRUE7O0FBRUEsNkNBQTZDO0FBQzdDOztBQUVBOztBQUVBOztBQUVBLEVBQUU7O0FBRUY7O0FBRUE7O0FBRUE7O0FBRUEsNkNBQTZDO0FBQzdDOztBQUVBOztBQUVBOztBQUVBLEVBQUU7O0FBRUYscUNBQXFDO0FBQ3JDOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLEVBQUU7O0FBRUY7O0FBRUE7O0FBRUE7O0FBRUEsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7O0FBRUEsSUFBSTs7QUFFSjtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBLElBQUk7O0FBRUo7QUFDQTtBQUNBOztBQUVBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEsSUFBSTs7QUFFSjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxJQUFJOztBQUVKOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxJQUFJOztBQUVKOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQSxxQ0FBcUM7QUFDckM7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7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Q0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUNBQWlDLHFCQUFxQjtBQUN0RDtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDLEtBQUs7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4Qix5Q0FBeUMsZ0ZBQWdGO0FBQ3ZKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsWUFBWSxtR0FBbUc7QUFDL0csVUFBVSwyQkFBMkI7O0FBRXJDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9EQUFvRCxrREFBa0Q7O0FBRXRHO0FBQ0EsMEJBQTBCLFdBQVc7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBLFFBQVEsS0FBNEIsRUFBRSxFQWlCakM7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDhCQUE4QixtQkFBUzs7QUFFdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0IsK0JBQStCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsSUFBSTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGdCQUFnQjs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsT0FBRztBQUNqQixhQUFhLE9BQUc7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0EsdUdBQXVHO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjs7QUFFL0I7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CLFNBQVM7O0FBRVQsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQixTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7O0FDMTZCdUM7QUFDbUI7O0FBRTFEO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL2Rhc2gvLi9qcy9waHlzaWNzL0Nhci5qcz8yYzBlIiwid2VicGFjazovL2Rhc2gvLi9qcy9waHlzaWNzL1BoeXNpY3MuanM/NGZlMSIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvUGF0aC5qcz9kOWY4Iiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL0N1YmljUGF0aC5qcz85NDBjIiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9jb250cm9sL0F1dG9ub21vdXNDb250cm9sbGVyLmpzP2VlN2MiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L2NvbnRyb2wvRm9sbG93Q29udHJvbGxlci5qcz85MTc5Iiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9jb250cm9sL01hbnVhbENvbnRyb2xsZXIuanM/MzQ1MSIsIndlYnBhY2s6Ly9kYXNoLy4vanMvb2JqZWN0cy9NYXBPYmplY3QuanM/NDM0YiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvb2JqZWN0cy9URFNMb2FkZXIuanM/OWU1NCIsIndlYnBhY2s6Ly9kYXNoLy4vbW9kZWxzL3N1di5qcz9jZDQ4Iiwid2VicGFjazovL2Rhc2gvLi9qcy9vYmplY3RzL0Nhck9iamVjdC5qcz84NGNjIiwid2VicGFjazovL2Rhc2gvLi9qcy9vYmplY3RzL1N0YXRpY09ic3RhY2xlT2JqZWN0LmpzP2EyNDciLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL29iamVjdHMvRHluYW1pY09ic3RhY2xlT2JqZWN0LmpzP2U1NTUiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L0xhbmVQYXRoLmpzPzBmYTQiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L1N0YXRpY09ic3RhY2xlLmpzPzg5MDYiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L0R5bmFtaWNPYnN0YWNsZS5qcz8yZTcwIiwid2VicGFjazovL2Rhc2gvLi9qcy9zaW11bGF0b3IvUGF0aFBsYW5uZXJDb25maWdFZGl0b3IuanM/OTQ2ZiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvc2ltdWxhdG9yL0R5bmFtaWNPYnN0YWNsZUVkaXRvci5qcz8xOWRkIiwid2VicGFjazovL2Rhc2gvLi9qcy9IZWxwZXJzLmpzPzkyOWIiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL3NpbXVsYXRvci9leGFtcGxlcy5qcz8xZGNlIiwid2VicGFjazovL2Rhc2gvLi9qcy9zaW11bGF0b3IvU2NlbmFyaW9NYW5hZ2VyLmpzP2I0YjciLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL3NpbXVsYXRvci9TaGFyZU1hbmFnZXIuanM/NjA4ZiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvc2ltdWxhdG9yL0VkaXRvci5qcz9hN2QwIiwid2VicGFjazovL2Rhc2gvLi9qcy9zaW11bGF0b3IvT3JiaXRDb250cm9scy5qcz9lMTc3Iiwid2VicGFjazovL2Rhc2gvLi9qcy9zaW11bGF0b3IvVG9wRG93bkNhbWVyYUNvbnRyb2xzLmpzP2NmZjciLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL3NpbXVsYXRvci9EYXNoYm9hcmQuanM/OTYzMyIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvcGF0aC1wbGFubmluZy9Sb2FkTGF0dGljZS5qcz84MWE4Iiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL3h5T2JzdGFjbGVHcmlkLmpzP2Q3OGMiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMvc2xPYnN0YWNsZUdyaWQuanM/ZTU0YiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvcGF0aC1wbGFubmluZy9ncGdwdS1wcm9ncmFtcy9zbE9ic3RhY2xlR3JpZERpbGF0aW9uLmpzPzE3NDkiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMvc2xEeW5hbWljT2JzdGFjbGVHcmlkLmpzPzZjMGUiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMveHlzbE1hcC5qcz81YmE5Iiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL29wdGltaXplQ3ViaWNQYXRocy5qcz8xNTNkIiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL29wdGltaXplUXVpbnRpY1BhdGhzLmpzP2MwNWQiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMvZ3JhcGhTZWFyY2hTaGFyZWQuanM/MjA1MiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvcGF0aC1wbGFubmluZy9ncGdwdS1wcm9ncmFtcy9wYXRoRnJvbVZlaGljbGVDb3N0cy5qcz9lNTBjIiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL2dyYXBoU2VhcmNoLmpzPzRjODgiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMveHlPYnN0YWNsZUNvc3RHcmlkLmpzP2M5NzQiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvUGF0aFBsYW5uZXIuanM/ZDMyNiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvTW92aW5nQXZlcmFnZS5qcz9mYmNjIiwid2VicGFjazovL2Rhc2gvLi9qcy9TaW11bGF0b3IuanM/MWQ3MSIsIndlYnBhY2s6Ly9kYXNoLy4vanMvRGFzaC5qcz81MTk1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIENhciB7XG4gIGNvbnN0cnVjdG9yKHggPSAwLCB5ID0gMCwgcm90YXRpb24gPSAwKSB7XG4gICAgdGhpcy5zZXRQb3NlKHgsIHksIHJvdGF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRGcm9udEF4bGVQb3NpdGlvbihwb3MsIHJvdCkge1xuICAgIHJldHVybiBUSFJFRS5WZWN0b3IyLmZyb21BbmdsZShyb3QpLm11bHRpcGx5U2NhbGFyKENhci5XSEVFTF9CQVNFKS5hZGQocG9zKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRGYWtlQXhsZVBvc2l0aW9uKHBvcywgcm90KSB7XG4gICAgcmV0dXJuIENhci5mcm9udFRvUmVhckF4bGVQb3NpdGlvbihwb3MsIHJvdCk7XG4gIH1cblxuICBzdGF0aWMgY2VudGVyVG9SZWFyQXhsZVBvc2l0aW9uKHBvcywgcm90KSB7XG4gICAgcmV0dXJuIFRIUkVFLlZlY3RvcjIuZnJvbUFuZ2xlKHJvdCkubXVsdGlwbHlTY2FsYXIoQ2FyLlJFQVJfQVhMRV9QT1MpLmFkZChwb3MpO1xuICB9XG5cbiAgc3RhdGljIGZyb250VG9SZWFyQXhsZVBvc2l0aW9uKHBvcywgcm90KSB7XG4gICAgcmV0dXJuIFRIUkVFLlZlY3RvcjIuZnJvbUFuZ2xlKHJvdCkubXVsdGlwbHlTY2FsYXIoLUNhci5XSEVFTF9CQVNFKS5hZGQocG9zKTtcbiAgfVxuXG4gIGdldCBwb3NlKCkge1xuICAgIHJldHVybiB7IHBvczogdGhpcy5yZWFyQXhsZVBvc2l0aW9uLmNsb25lKCksIHJvdDogdGhpcy5yb3RhdGlvbiwgdmVsb2NpdHk6IHRoaXMudmVsb2NpdHksIGN1cnY6IHRoaXMuY3VydmF0dXJlLCBkQ3VydjogdGhpcy5kQ3VydiwgZGRDdXJ2OiB0aGlzLmRkQ3VydiB9O1xuICB9XG5cbiAgZ2V0IGN1cnZhdHVyZSgpIHtcbiAgICByZXR1cm4gTWF0aC50YW4odGhpcy53aGVlbEFuZ2xlKSAvIENhci5XSEVFTF9CQVNFO1xuICB9XG5cbiAgZ2V0IHJlYXJBeGxlUG9zaXRpb24oKSB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLnBvc2l0aW9uO1xuICAgIGNvbnN0IHJvdCA9IHRoaXMucm90YXRpb247XG4gICAgcmV0dXJuIG5ldyBUSFJFRS5WZWN0b3IyKHggKyBNYXRoLmNvcyhyb3QpICogQ2FyLlJFQVJfQVhMRV9QT1MsIHkgKyBNYXRoLnNpbihyb3QpICogQ2FyLlJFQVJfQVhMRV9QT1MpO1xuICB9XG5cbiAgZ2V0IGZyb250QXhsZVBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5wb3NpdGlvbjtcbiAgICBjb25zdCByb3QgPSB0aGlzLnJvdGF0aW9uO1xuICAgIHJldHVybiBuZXcgVEhSRUUuVmVjdG9yMih4ICsgTWF0aC5jb3Mocm90KSAqIENhci5GUk9OVF9BWExFX1BPUywgeSArIE1hdGguc2luKHJvdCkgKiBDYXIuRlJPTlRfQVhMRV9QT1MpO1xuICB9XG5cbiAgc2V0UG9zZSh4LCB5LCByb3RhdGlvbikge1xuICAgIC8vIFRyYW5zbGF0ZSBzbyB0aGF0IHggYW5kIHkgYmVjb21lIHRoZSBjZW50ZXIgb2YgdGhlIHZlaGljbGUgKGluc3RlYWQgb2YgdGhlIGNlbnRlciBvZiB0aGUgcmVhciBheGxlKVxuICAgIHggLT0gQ2FyLlJFQVJfQVhMRV9QT1MgKiBNYXRoLmNvcyhyb3RhdGlvbik7XG4gICAgeSAtPSBDYXIuUkVBUl9BWExFX1BPUyAqIE1hdGguc2luKHJvdGF0aW9uKTtcblxuICAgIHRoaXMucG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMih4LCB5KTtcbiAgICB0aGlzLnJvdGF0aW9uID0gTWF0aC53cmFwQW5nbGUocm90YXRpb24pO1xuICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICAgIHRoaXMuYWNjZWxlcmF0aW9uID0gMDtcbiAgICB0aGlzLndoZWVsQW5nbGUgPSAwO1xuICAgIHRoaXMud2hlZWxBbmd1bGFyVmVsb2NpdHkgPSAwO1xuICAgIHRoaXMuZEN1cnYgPSAwOyAvLyBkZXJpdmF0aXZlIHdpdGggcmVzcGVjdCB0byBhcmMgbGVuZ3RoXG4gICAgdGhpcy5kZEN1cnYgPSAwOyAvLyBkZXJpdmF0aXZlIHdpdGggcmVzcGVjdCB0byBhcmMgbGVuZ3RoXG4gIH1cblxuICBzdGVwKGR0KSB7XG4gICAgY29uc3QgY3VydlByZXYgPSB0aGlzLmN1cnZhdHVyZTtcbiAgICBjb25zdCBkQ3VydlByZXYgPSB0aGlzLmRDdXJ2O1xuXG4gICAgY29uc3QgZHJhZyA9ICgwLjUgKiBDYXIuRFJBR19DT0VGRiAqIENhci5GUk9OVEFMX0FSRUEgKiBDYXIuREVOU0lUWV9PRl9BSVIgKiBNYXRoLmFicyh0aGlzLnZlbG9jaXR5KSArIENhci5ST0xMX1JFU0lTVCkgKiAtdGhpcy52ZWxvY2l0eTtcbiAgICB0aGlzLnZlbG9jaXR5ICs9ICh0aGlzLmFjY2VsZXJhdGlvbiArIGRyYWcgLyBDYXIuTUFTUykgKiBkdDtcblxuICAgIGNvbnN0IHZlbG9jaXR5U3EgPSB0aGlzLnZlbG9jaXR5ICogdGhpcy52ZWxvY2l0eTtcbiAgICBjb25zdCBtYXhXaGVlbEFuZ2xlID0gTWF0aC5jbGFtcChNYXRoLmF0YW4oQ2FyLk1BWF9MQVRFUkFMX0FDQ0VMICogQ2FyLldIRUVMX0JBU0UgLyB2ZWxvY2l0eVNxKSwgMC4wNywgQ2FyLk1BWF9XSEVFTF9BTkdMRSk7XG4gICAgdGhpcy53aGVlbEFuZ2xlID0gTWF0aC5jbGFtcChNYXRoLndyYXBBbmdsZSh0aGlzLndoZWVsQW5nbGUgKyB0aGlzLndoZWVsQW5ndWxhclZlbG9jaXR5ICogZHQpLCAtbWF4V2hlZWxBbmdsZSwgbWF4V2hlZWxBbmdsZSk7XG5cbiAgICBjb25zdCBhbmd1bGFyVmVsb2NpdHkgPSB0aGlzLnZlbG9jaXR5ICogdGhpcy5jdXJ2YXR1cmU7XG4gICAgdGhpcy5yb3RhdGlvbiA9IE1hdGgud3JhcEFuZ2xlKHRoaXMucm90YXRpb24gKyBhbmd1bGFyVmVsb2NpdHkgKiBkdCk7XG5cbiAgICBjb25zdCBkaXN0ID0gdGhpcy52ZWxvY2l0eSAqIGR0O1xuICAgIHRoaXMucG9zaXRpb24gPSBUSFJFRS5WZWN0b3IyLmZyb21BbmdsZSh0aGlzLnJvdGF0aW9uKS5tdWx0aXBseVNjYWxhcihkaXN0KS5hZGQodGhpcy5wb3NpdGlvbik7XG5cbiAgICB0aGlzLmRDdXJ2ID0gZGlzdCA+IDAuMSA/ICh0aGlzLmN1cnZhdHVyZSAtIGN1cnZQcmV2KSAvIGRpc3QgOiAwO1xuICAgIHRoaXMuZGRDdXJ2ID0gZGlzdCA+IDAuMSA/ICh0aGlzLmRDdXJ2IC0gZEN1cnZQcmV2KSAvIGRpc3QgOiAwO1xuICB9XG5cbiAgdXBkYXRlKGNvbnRyb2xzLCBkdCkge1xuICAgIGNvbnN0IGdhcyA9IE1hdGguY2xhbXAoY29udHJvbHMuZ2FzLCAtMSwgKzEpO1xuICAgIGNvbnN0IGJyYWtlID0gTWF0aC5jbGFtcChjb250cm9scy5icmFrZSwgMCwgMSk7XG4gICAgY29uc3Qgc3RlZXIgPSBNYXRoLmNsYW1wKGNvbnRyb2xzLnN0ZWVyLCAtMSwgKzEpO1xuXG4gICAgaWYgKGJyYWtlID4gMCkge1xuICAgICAgdGhpcy5hY2NlbGVyYXRpb24gPSAtTWF0aC5zaWduKHRoaXMudmVsb2NpdHkpICogQ2FyLk1BWF9CUkFLRV9ERUNFTCAqIGJyYWtlO1xuICAgICAgY29uc3QgbmV3VmVsb2NpdHkgPSB0aGlzLnZlbG9jaXR5ICsgdGhpcy5hY2NlbGVyYXRpb24gKiBkdDtcblxuICAgICAgLy8gSWYgYXBwbHlpbmcgdGhlIGJyYWtpbmcgZGVjZWxlcmF0aW9uIGF0IHRoZSBuZXh0IHN0ZXAgd291bGQgY2F1c2UgdGhlIHZlbG9jaXR5XG4gICAgICAvLyB0byBjaGFuZ2UgZGlyZWN0aW9ucywgdGhlbiBqdXN0IHNldCB0aGUgY2FyIGFzIHN0b3BwZWQuXG4gICAgICBpZiAoTWF0aC5zaWduKG5ld1ZlbG9jaXR5KSAhPSBNYXRoLnNpZ24odGhpcy52ZWxvY2l0eSkpIHtcbiAgICAgICAgdGhpcy52ZWxvY2l0eSA9IDA7XG4gICAgICAgIHRoaXMuYWNjZWxlcmF0aW9uID0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY2NlbGVyYXRpb24gPSBDYXIuTUFYX0dBU19BQ0NFTCAqIGdhcztcbiAgICB9XG5cbiAgICBpZiAoc3RlZXIgIT0gMCkge1xuICAgICAgdGhpcy53aGVlbEFuZ3VsYXJWZWxvY2l0eSA9IHN0ZWVyICogQ2FyLk1BWF9TVEVFUl9TUEVFRDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53aGVlbEFuZ3VsYXJWZWxvY2l0eSA9IE1hdGguY2xhbXAoLXRoaXMud2hlZWxBbmdsZSAvIENhci5NQVhfV0hFRUxfQU5HTEUgKiB0aGlzLnZlbG9jaXR5ICogdGhpcy52ZWxvY2l0eSAqIGR0LCAtQ2FyLk1BWF9TVEVFUl9TUEVFRCwgQ2FyLk1BWF9TVEVFUl9TUEVFRCk7XG4gICAgfVxuICB9XG59XG5cbkNhci5IQUxGX0NBUl9MRU5HVEggPSAyLjU7IC8vIG1ldGVyc1xuQ2FyLkhBTEZfQ0FSX1dJRFRIID0gMTsgLy8gbWV0ZXJzXG5DYXIuSEFMRl9XSEVFTF9MRU5HVEggPSAwLjM4OyAvLyBtZXRlcnNcbkNhci5IQUxGX1dIRUVMX1dJRFRIID0gMC4xMjsgLy8gbWV0ZXJzXG5DYXIuTUFYX1dIRUVMX0FOR0xFID0gMzIgLyAxODAgKiBNYXRoLlBJOyAvLyByYWRpYW5zXG5DYXIuTUFTUyA9IDE2MDA7IC8vIGtnXG5DYXIuRFJBR19DT0VGRiA9IDAuNztcbkNhci5ERU5TSVRZX09GX0FJUiA9IDEuODU4MDYwODsgLy8gKGtnL21eMylcbkNhci5GUk9OVEFMX0FSRUEgPSAxLjg1OyAvLyBtXjJcbkNhci5ST0xMX1JFU0lTVCA9IDA7XG5DYXIuTUFYX1NURUVSX1NQRUVEID0gMC44Oy8vMS4yOyAvLyBSYWRpYW5zIHBlciBzZWNvbmRcbkNhci5NQVhfR0FTX0FDQ0VMID0gMy4wOyAvLyBtIC8gc14yXG5DYXIuTUFYX0JSQUtFX0RFQ0VMID0gMy4wOyAvLyBtIC8gc14yXG5DYXIuV0hFRUxfTEFURVJBTF9QT1MgPSAwLjg0MzsgLy8gbWV0ZXJzXG5DYXIuRlJPTlRfQVhMRV9QT1MgPSAxLjY7IC8vIG1ldGVyc1xuQ2FyLlJFQVJfQVhMRV9QT1MgPSAtMS40MzsgLy8gbWV0ZXJzXG5DYXIuV0hFRUxfQkFTRSA9IENhci5GUk9OVF9BWExFX1BPUyAtIENhci5SRUFSX0FYTEVfUE9TOyAvLyBtZXRlcnNcbkNhci5NQVhfTEFURVJBTF9BQ0NFTCA9IDUuODE7IC8vIG0gLyBzXjJcbiIsImltcG9ydCBDYXIgZnJvbSBcIi4vQ2FyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBoeXNpY3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNhcnMgPSBbXTtcbiAgfVxuXG4gIHN0ZXAoZHQpIHtcbiAgICB0aGlzLmNhcnMuZm9yRWFjaChjID0+IGMuc3RlcChkdCkpO1xuICB9XG5cbiAgY3JlYXRlQ2FyKCkge1xuICAgIGNvbnN0IG5ld0NhciA9IG5ldyBDYXIoKTtcbiAgICB0aGlzLmNhcnMucHVzaChuZXdDYXIpO1xuXG4gICAgcmV0dXJuIG5ld0NhcjtcbiAgfVxufTtcbiIsImltcG9ydCBDYXIgZnJvbSBcIi4uL3BoeXNpY3MvQ2FyLmpzXCJcblxuLy8gaW5wdXQgcG9zZTogeyBwb3M6IFZlY3RvcjIgWywgcm90OiByYWRpYW5zXSB9XG4vLyBwb3NlOiB7IHBvczogVmVjdG9yMiwgZnJvbnRQb3M6IFZlY3RvcjIsIGZha2VQb3M6IFZlY3RvcjIsIHJvdDogcmFkaWFucyB9XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRoIHtcbiAgY29uc3RydWN0b3IocG9zZXMsIHN0YXJ0Um90YXRpb24gPSAwLCBnb2FsUm90YXRpb24gPSAwKSB7XG4gICAgdGhpcy5wb3NlcyA9IHBvc2VzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3Nlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcG9zZSA9IHBvc2VzW2ldO1xuXG4gICAgICBpZiAocG9zZS5yb3QgPT09IHVuZGVmaW5lZCB8fCBwb3NlLnJvdCA9PSBudWxsKSB7XG4gICAgICAgIGxldCByb3Q7XG5cbiAgICAgICAgaWYgKGkgPT0gMCkge1xuICAgICAgICAgIHJvdCA9IHN0YXJ0Um90YXRpb247XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PSBwb3Nlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgcm90ID0gZ29hbFJvdGF0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHByZXYgPSBwb3Nlc1tpIC0gMV0ucG9zO1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBwb3Nlc1tpICsgMV0ucG9zO1xuICAgICAgICAgIHJvdCA9IE1hdGguYXRhbjIobmV4dC55IC0gcHJldi55LCBuZXh0LnggLSBwcmV2LngpO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zZS5yb3QgPSByb3Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChwb3NlLmN1cnYgPT09IHVuZGVmaW5lZCB8fCBwb3NlLmN1cnYgPT0gbnVsbCkge1xuICAgICAgICBpZiAoaSA+IDAgJiYgaSA8IHBvc2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBjb25zdCBwcmV2ID0gcG9zZXNbaSAtIDFdLnBvcztcbiAgICAgICAgICBjb25zdCBjdXIgPSBwb3Nlc1tpXS5wb3M7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHBvc2VzW2kgKyAxXS5wb3M7XG5cbiAgICAgICAgICBjb25zdCBkaXIxID0geyB4OiBjdXIueCAtIHByZXYueCwgeTogY3VyLnkgLSBwcmV2LnkgfTtcbiAgICAgICAgICBjb25zdCBkaXIyID0geyB4OiBuZXh0LnggLSBjdXIueCwgeTogbmV4dC55IC0gY3VyLnkgfTtcblxuICAgICAgICAgIGNvbnN0IGFuZ2xlMSA9IE1hdGguYXRhbjIoZGlyMS55LCBkaXIxLngpO1xuICAgICAgICAgIGNvbnN0IGFuZ2xlMiA9IE1hdGguYXRhbjIoZGlyMi55LCBkaXIyLngpO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBhbmd1bGFyIGRpZmZlcmVuY2UgaW4gYSB3YXkgdGhhdCBwcm9wZXJseSBoYW5kbGVzIHRoZSB3cmFwLWFyb3VuZCBmcm9tIC3PgCB0byDPgFxuICAgICAgICAgIGxldCBkZWx0YUFuZ2xlID0gYW5nbGUyIC0gYW5nbGUxO1xuICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgYW5nbGUgZGlmZmVyZW5jZSB0byBiZSB3aXRoaW4gdGhlIHJhbmdlIFstz4AsIM+AXVxuICAgICAgICAgIGRlbHRhQW5nbGUgPSAoZGVsdGFBbmdsZSArIE1hdGguUEkpICUgKDIgKiBNYXRoLlBJKSAtIE1hdGguUEk7XG5cbiAgICAgICAgICAvLyBBc3N1bWluZyB1bmlmb3JtIHNlZ21lbnQgbGVuZ3RocywgdGhlIGN1cnZhdHVyZSAoaW52ZXJzZSByYWRpdXMgb2YgY3VydmF0dXJlKSBjYW4gYmVcbiAgICAgICAgICAvLyBhcHByb3hpbWF0ZWQgYXMgdGhlIGNoYW5nZSBpbiBhbmdsZS4gRm9yIG5vbi11bmlmb3JtIHNlZ21lbnQgbGVuZ3RocywgaW5jbHVkZSBhcmMgbGVuZ3RoIGluIGNhbGN1bGF0aW9uXG4gICAgICAgICAgY29uc3QgY3VydmF0dXJlID0gTWF0aC5hYnMoZGVsdGFBbmdsZSk7IC8vIFVzaW5nIGFic29sdXRlIHZhbHVlIG9mIGFuZ2xlIGRpZmZlcmVuY2VcblxuICAgICAgICAgIHBvc2UuY3VydiA9IGN1cnZhdHVyZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBc3NpZ24gemVybyBjdXJ2YXR1cmUgZm9yIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIG9yIGhhbmRsZSBhcyBuZWVkZWRcbiAgICAgICAgICBwb3NlLmN1cnYgPSAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHBvc2UuZnJvbnRQb3MgPSBDYXIuZ2V0RnJvbnRBeGxlUG9zaXRpb24ocG9zZS5wb3MsIHBvc2Uucm90KTtcbiAgICAgIHBvc2UuZmFrZVBvcyA9IENhci5nZXRGYWtlQXhsZVBvc2l0aW9uKHBvc2UucG9zLCBwb3NlLnJvdCk7XG4gICAgfVxuICB9XG59XG4iLCJjb25zdCBTSU1QU09OU19JTlRFUlZBTFMgPSA4O1xuY29uc3QgTkVXVE9OX0lURVJBVElPTlMgPSAxNjtcbmNvbnN0IFJFTEFYQVRJT05fSVRFUkFUSU9OUyA9IDMyO1xuY29uc3QgQ09OVkVSR0VOQ0VfRVJST1IgPSAwLjAxO1xuXG5jb25zdCBqYWNvYmlhbiA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG5jb25zdCBpbnZKYWNvYmlhbiA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG5cbi8vIEFsdGVybmF0ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb246IGh0dHBzOi8vZ2l0aHViLmNvbS9BcG9sbG9BdXRvL2Fwb2xsby9ibG9iL21hc3Rlci9tb2R1bGVzL3BsYW5uaW5nL21hdGgvc3BpcmFsX2N1cnZlL2N1YmljX3NwaXJhbF9jdXJ2ZS5jY1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3ViaWNQYXRoIHtcbiAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCwgcGFyYW1zID0gbnVsbCkge1xuICAgIHRoaXMuc3RhcnQgPSBPYmplY3QuYXNzaWduKHt9LCBzdGFydCk7XG4gICAgdGhpcy5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBlbmQpO1xuXG4gICAgaWYgKHN0YXJ0LnBvcykge1xuICAgICAgdGhpcy5zdGFydC54ID0gc3RhcnQucG9zLng7XG4gICAgICB0aGlzLnN0YXJ0LnkgPSBzdGFydC5wb3MueVxuICAgIH1cblxuICAgIGlmIChlbmQucG9zKSB7XG4gICAgICB0aGlzLmVuZC54ID0gZW5kLnBvcy54O1xuICAgICAgdGhpcy5lbmQueSA9IGVuZC5wb3MueVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZYID0gdGhpcy5lbmQueCAtIHRoaXMuc3RhcnQueDtcbiAgICBjb25zdCBkaWZmWSA9IHRoaXMuZW5kLnkgLSB0aGlzLnN0YXJ0Lnk7XG4gICAgY29uc3Qgc2luUm90ID0gTWF0aC5zaW4odGhpcy5zdGFydC5yb3QpO1xuICAgIGNvbnN0IGNvc1JvdCA9IE1hdGguY29zKHRoaXMuc3RhcnQucm90KTtcblxuICAgIHRoaXMuZ29hbCA9IHtcbiAgICAgIHg6IGNvc1JvdCAqIGRpZmZYICsgc2luUm90ICogZGlmZlksXG4gICAgICB5OiAtc2luUm90ICogZGlmZlggKyBjb3NSb3QgKiBkaWZmWSxcbiAgICAgIHJvdDogTWF0aC53cmFwQW5nbGUodGhpcy5lbmQucm90IC0gdGhpcy5zdGFydC5yb3QpLFxuICAgICAgY3VydjogdGhpcy5lbmQuY3VydlxuICAgIH07XG5cbiAgICBpZiAocGFyYW1zKVxuICAgICAgdGhpcy5wYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCBwYXJhbXMsIHsgcDA6IHRoaXMuc3RhcnQuY3VydiwgcDM6IHRoaXMuZW5kLmN1cnYgfSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5ndWVzc0luaXRpYWxQYXJhbXMoKTtcblxuICAgIHRoaXMuY29udmVyZ2VkID0gZmFsc2U7XG4gIH1cblxuICBndWVzc0luaXRpYWxQYXJhbXMoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxHb2FsID0gdGhpcy5nb2FsO1xuICAgIGNvbnN0IGRTdGFydEN1cnYgPSB0aGlzLnN0YXJ0LmN1cnYgLyBSRUxBWEFUSU9OX0lURVJBVElPTlM7XG4gICAgY29uc3QgZEdvYWxZID0gb3JpZ2luYWxHb2FsLnkgLyBSRUxBWEFUSU9OX0lURVJBVElPTlM7XG4gICAgY29uc3QgZEdvYWxSb3QgPSBvcmlnaW5hbEdvYWwucm90IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TO1xuICAgIGNvbnN0IGRHb2FsQ3VydiA9IG9yaWdpbmFsR29hbC5jdXJ2IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TO1xuXG4gICAgdGhpcy5nb2FsID0ge1xuICAgICAgeDogb3JpZ2luYWxHb2FsLngsXG4gICAgICB5OiAwLFxuICAgICAgcm90OiAwLFxuICAgICAgY3VydjogMFxuICAgIH07XG5cbiAgICB0aGlzLnBhcmFtcyA9IHtcbiAgICAgIHAwOiAwLFxuICAgICAgcDE6IDAsXG4gICAgICBwMjogMCxcbiAgICAgIHAzOiAwLFxuICAgICAgc0c6IG9yaWdpbmFsR29hbC54XG4gICAgfTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgUkVMQVhBVElPTl9JVEVSQVRJT05TOyBpKyspIHtcbiAgICAgIHRoaXMucGFyYW1zLnAwICs9IGRTdGFydEN1cnY7XG4gICAgICB0aGlzLnBhcmFtcy5wMyArPSBkR29hbEN1cnY7XG4gICAgICB0aGlzLmdvYWwueSArPSBkR29hbFk7XG4gICAgICB0aGlzLmdvYWwucm90ICs9IGRHb2FsUm90O1xuICAgICAgdGhpcy5nb2FsLmN1cnYgKz0gZEdvYWxDdXJ2O1xuXG4gICAgICB0aGlzLml0ZXJhdGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmdvYWwgPSBvcmlnaW5hbEdvYWw7XG4gIH1cblxuICBvcHRpbWl6ZSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE5FV1RPTl9JVEVSQVRJT05TOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLml0ZXJhdGUoKSkge1xuICAgICAgICB0aGlzLmNvbnZlcmdlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29udmVyZ2VkID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXRlcmF0ZSgpIHtcbiAgICBjb25zdCB7IHAwLCBwMSwgcDIsIHAzLCBzRyB9ID0gdGhpcy5wYXJhbXM7XG5cbiAgICBjb25zdCBkcyA9IHNHIC8gU0lNUFNPTlNfSU5URVJWQUxTO1xuICAgIGNvbnN0IHNHXzIgPSBzRyAqIHNHO1xuICAgIGNvbnN0IHNHXzMgPSBzR18yICogc0c7XG5cbiAgICBsZXQgZFhfcDEgPSAwO1xuICAgIGxldCBkWF9wMiA9IDA7XG4gICAgbGV0IGRYX3NHID0gMDtcbiAgICBsZXQgZFlfcDEgPSAwO1xuICAgIGxldCBkWV9wMiA9IDA7XG4gICAgbGV0IGRZX3NHID0gMDtcbiAgICBsZXQgZ3Vlc3NYID0gMDtcbiAgICBsZXQgZ3Vlc3NZID0gMDtcblxuICAgIGxldCB0aGV0YSwgY29zVGhldGEsIHNpblRoZXRhLCBkVF9wMSwgZFRfcDIsIGRUX3NHO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIHMgPSAwOyBpIDw9IFNJTVBTT05TX0lOVEVSVkFMUzsgaSsrLCBzICs9IGRzKSB7XG4gICAgICBjb25zdCBjb2VmZiA9IGkgPT0gMCB8fCBpID09IFNJTVBTT05TX0lOVEVSVkFMUyA/IDEgOiBpICUgMiA9PSAwID8gMiA6IDQ7XG5cbiAgICAgIGNvbnN0IGEgPSBwMDtcbiAgICAgIGNvbnN0IGIgPSAoLTUuNSAqIHAwICsgOSAqIHAxIC0gNC41ICogcDIgKyBwMykgLyBzRztcbiAgICAgIGNvbnN0IGMgPSAoOSAqIHAwIC0gMjIuNSAqIHAxICsgMTggKiBwMiAtIDQuNSAqIHAzKSAvIHNHXzI7XG4gICAgICBjb25zdCBkID0gKC00LjUgKiAocDAgLSAzICogcDEgKyAzICogcDIgLSBwMykpIC8gc0dfMztcblxuICAgICAgdGhldGEgPSAoKChkICogcyAvIDQgKyBjIC8gMykgKiBzICsgYiAvIDIpICogcyArIGEpICogcztcbiAgICAgIGNvc1RoZXRhID0gTWF0aC5jb3ModGhldGEpO1xuICAgICAgc2luVGhldGEgPSBNYXRoLnNpbih0aGV0YSk7XG5cbiAgICAgIGNvbnN0IHNfc0cgPSBzIC8gc0c7XG4gICAgICBkVF9wMSA9ICgoMy4zNzUgKiBzX3NHIC0gNy41KSAqIHNfc0cgKyA0LjUpICogc19zRyAqIHM7XG4gICAgICBkVF9wMiA9ICgoLTMuMzc1ICogc19zRyArIDYpICogc19zRyAtIDIuMjUpICogc19zRyAqIHM7XG4gICAgICBkVF9zRyA9ICgoMy4zNzUgKiAocDAgLSAzICogcDEgKyAzICogcDIgLSBwMykgKiBzX3NHIC0gMyAqICgyICogcDAgLSA1ICogcDEgKyA0ICogcDIgLSBwMykpICogc19zRyArIDAuMjUgKiAoMTEgKiBwMCAtIDE4ICogcDEgKyA5ICogcDIgLSAyICogcDMpKSAqIHNfc0cgKiBzX3NHO1xuXG4gICAgICBkWF9wMSAtPSBjb2VmZiAqIHNpblRoZXRhICogZFRfcDE7XG4gICAgICBkWF9wMiAtPSBjb2VmZiAqIHNpblRoZXRhICogZFRfcDI7XG4gICAgICBkWF9zRyAtPSBjb2VmZiAqIHNpblRoZXRhICogZFRfc0c7XG5cbiAgICAgIGRZX3AxICs9IGNvZWZmICogY29zVGhldGEgKiBkVF9wMTtcbiAgICAgIGRZX3AyICs9IGNvZWZmICogY29zVGhldGEgKiBkVF9wMjtcbiAgICAgIGRZX3NHICs9IGNvZWZmICogY29zVGhldGEgKiBkVF9zRztcblxuICAgICAgZ3Vlc3NYICs9IGNvZWZmICogY29zVGhldGE7XG4gICAgICBndWVzc1kgKz0gY29lZmYgKiBzaW5UaGV0YTtcbiAgICB9XG5cbiAgICAvLyBBZnRlciB0aGUgU2ltcHNvbidzIGludGVncmF0aW9uIGxvb3AsIGB0aGV0YWAsIGBjb3NUaGV0YWAsIGBzaW5UaGV0YWAsXG4gICAgLy8gYGRUX3AxYCwgYGRUX3AyYCwgYW5kIGBkVF9zR2AgaG9sZCB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzIGZvciBgc0dgLlxuXG4gICAgY29uc3QgaE92ZXIzID0gc0cgLyBTSU1QU09OU19JTlRFUlZBTFMgLyAzO1xuXG4gICAgY29uc3QgZGVsdGFYID0gdGhpcy5nb2FsLnggLSBndWVzc1ggKiBoT3ZlcjM7XG4gICAgY29uc3QgZGVsdGFZID0gdGhpcy5nb2FsLnkgLSBndWVzc1kgKiBoT3ZlcjM7XG4gICAgY29uc3QgZGVsdGFSb3QgPSBNYXRoLndyYXBBbmdsZSh0aGlzLmdvYWwucm90IC0gdGhldGEpO1xuXG4gICAgaWYgKE1hdGguYWJzKGRlbHRhWCkgKyBNYXRoLmFicyhkZWx0YVkpICsgTWF0aC5hYnMoZGVsdGFSb3QpIDwgQ09OVkVSR0VOQ0VfRVJST1IpXG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGphY29iaWFuLnNldChcbiAgICAgIGRYX3AxICogaE92ZXIzLCBkWF9wMiAqIGhPdmVyMywgY29zVGhldGEgKyBkWF9zRyAqIGhPdmVyMyxcbiAgICAgIGRZX3AxICogaE92ZXIzLCBkWV9wMiAqIGhPdmVyMywgc2luVGhldGEgKyBkWV9zRyAqIGhPdmVyMyxcbiAgICAgIGRUX3AxLCBkVF9wMiwgZFRfc0dcbiAgICApO1xuXG4gICAgY29uc3QgW20xMSwgbTIxLCBtMzEsIG0xMiwgbTIyLCBtMzIsIG0xMywgbTIzLCBtMzNdID0gaW52SmFjb2JpYW4uZ2V0SW52ZXJzZShqYWNvYmlhbikuZWxlbWVudHM7XG5cbiAgICB0aGlzLnBhcmFtcy5wMSArPSBtMTEgKiBkZWx0YVggKyBtMTIgKiBkZWx0YVkgKyBtMTMgKiBkZWx0YVJvdDtcbiAgICB0aGlzLnBhcmFtcy5wMiArPSBtMjEgKiBkZWx0YVggKyBtMjIgKiBkZWx0YVkgKyBtMjMgKiBkZWx0YVJvdDtcbiAgICB0aGlzLnBhcmFtcy5zRyArPSBtMzEgKiBkZWx0YVggKyBtMzIgKiBkZWx0YVkgKyBtMzMgKiBkZWx0YVJvdDtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGJ1aWxkUGF0aChudW0pIHtcbiAgICBjb25zdCB7IHAwLCBwMSwgcDIsIHAzLCBzRyB9ID0gdGhpcy5wYXJhbXM7XG5cbiAgICBjb25zdCBzR18yID0gc0cgKiBzRztcbiAgICBjb25zdCBzR18zID0gc0dfMiAqIHNHO1xuXG4gICAgY29uc3QgYSA9IHAwO1xuICAgIGNvbnN0IGIgPSAoLTUuNSAqIHAwICsgOSAqIHAxIC0gNC41ICogcDIgKyBwMykgLyBzRztcbiAgICBjb25zdCBjID0gKDkgKiBwMCAtIDIyLjUgKiBwMSArIDE4ICogcDIgLSA0LjUgKiBwMykgLyBzR18yO1xuICAgIGNvbnN0IGQgPSAoLTQuNSAqIChwMCAtIDMgKiBwMSArIDMgKiBwMiAtIHAzKSkgLyBzR18zO1xuXG4gICAgY29uc3QgcGF0aCA9IFt7IHBvczogbmV3IFRIUkVFLlZlY3RvcjIodGhpcy5zdGFydC54LCB0aGlzLnN0YXJ0LnkpLCByb3Q6IHRoaXMuc3RhcnQucm90LCBjdXJ2OiB0aGlzLnN0YXJ0LmN1cnYgfV07XG4gICAgY29uc3QgZHMgPSBzRyAvIChudW0gLSAxKTtcbiAgICBsZXQgcyA9IGRzO1xuICAgIGxldCBkeCA9IDA7XG4gICAgbGV0IGR5ID0gMDtcbiAgICBsZXQgcHJldkNvc1JvdCA9IE1hdGguY29zKHBhdGhbMF0ucm90KTtcbiAgICBsZXQgcHJldlNpblJvdCA9IE1hdGguc2luKHBhdGhbMF0ucm90KTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCByb3QgPSAoKChkICogcyAvIDQgKyBjIC8gMykgKiBzICsgYiAvIDIpICogcyArIGEpICogcyArIHRoaXMuc3RhcnQucm90O1xuICAgICAgY29uc3QgY3VydiA9ICgoZCAqIHMgKyBjKSAqIHMgKyBiKSAqIHMgKyBhO1xuICAgICAgY29uc3QgY29zUm90ID0gTWF0aC5jb3Mocm90KTtcbiAgICAgIGNvbnN0IHNpblJvdCA9IE1hdGguc2luKHJvdCk7XG5cbiAgICAgIGR4ID0gZHggKiAoaSAtIDEpIC8gaSArIChjb3NSb3QgKyBwcmV2Q29zUm90KSAvICgyICogaSk7XG4gICAgICBkeSA9IGR5ICogKGkgLSAxKSAvIGkgKyAoc2luUm90ICsgcHJldlNpblJvdCkgLyAoMiAqIGkpO1xuXG4gICAgICBwYXRoLnB1c2goeyBwb3M6IG5ldyBUSFJFRS5WZWN0b3IyKHMgKiBkeCArIHRoaXMuc3RhcnQueCwgcyAqIGR5ICsgdGhpcy5zdGFydC55KSwgcm90OiByb3QsIGN1cnY6IGN1cnYgfSk7XG5cbiAgICAgIHMgKz0gZHM7XG4gICAgICBwcmV2Q29zUm90ID0gY29zUm90O1xuICAgICAgcHJldlNpblJvdCA9IHNpblJvdDtcbiAgICB9XG5cbiAgICBwYXRoLnB1c2goeyBwb3M6IG5ldyBUSFJFRS5WZWN0b3IyKHRoaXMuZW5kLngsIHRoaXMuZW5kLnkpLCByb3Q6IHRoaXMuZW5kLnJvdCwgY3VydjogdGhpcy5lbmQuY3VydiB9KTtcblxuICAgIHJldHVybiBwYXRoO1xuICB9XG59XG4iLCJpbXBvcnQgQ2FyIGZyb20gXCIuLi8uLi9waHlzaWNzL0Nhci5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dG9ub21vdXNDb250cm9sbGVyIHtcbiAgY29uc3RydWN0b3IocGF0aCkge1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5uZXh0SW5kZXggPSAxO1xuICAgIHRoaXMucHJldlBoaUVycm9yID0gMDtcbiAgICB0aGlzLnByZXZWZWxvY2l0eSA9IDA7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnByZXZWZWxvY2l0eSA9IDA7XG4gIH1cblxuICByZXBsYWNlUGF0aChwYXRoKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLm5leHRJbmRleCA9IDE7XG4gIH1cblxuICBwcmVkaWN0UG9zZUFmdGVyVGltZShjdXJyZW50UG9zZSwgcHJlZGljdGlvblRpbWUpIHtcbiAgICBjb25zdCBwYXRoUG9zZXMgPSB0aGlzLnBhdGgucG9zZXM7XG4gICAgY29uc3QgZnJvbnRBeGxlUG9zID0gQ2FyLmdldEZyb250QXhsZVBvc2l0aW9uKGN1cnJlbnRQb3NlLnBvcywgY3VycmVudFBvc2Uucm90KTtcbiAgICBsZXQgW25leHRJbmRleCwgcHJvZ3Jlc3NdID0gdGhpcy5maW5kTmV4dEluZGV4KGZyb250QXhsZVBvcyk7XG4gICAgbGV0IGN1cnJlbnRWZWxvY2l0eSA9IGN1cnJlbnRQb3NlLnZlbG9jaXR5O1xuXG4gICAgaWYgKGN1cnJlbnRWZWxvY2l0eSA8PSAwLjAxKSByZXR1cm4gY3VycmVudFBvc2U7XG5cbiAgICB3aGlsZSAocHJlZGljdGlvblRpbWUgPiAwKSB7XG4gICAgICBjb25zdCBwcmV2UG9zZSA9IHBhdGhQb3Nlc1tuZXh0SW5kZXggLSAxXTtcbiAgICAgIGNvbnN0IG5leHRQb3NlID0gcGF0aFBvc2VzW25leHRJbmRleF07XG5cbiAgICAgIGNvbnN0IHNlZ21lbnREaXN0ID0gbmV4dFBvc2UucG9zLmRpc3RhbmNlVG8ocHJldlBvc2UucG9zKTtcbiAgICAgIGNvbnN0IGRpc3RMZWZ0ID0gc2VnbWVudERpc3QgKiAoMSAtIHByb2dyZXNzKTtcbiAgICAgIGNvbnN0IHN1bVYgPSBjdXJyZW50VmVsb2NpdHkgKyBuZXh0UG9zZS52ZWxvY2l0eTtcbiAgICAgIGNvbnN0IHRpbWVUb05leHRJbmRleCA9IDIgKiBkaXN0TGVmdCAvIChzdW1WID09IDAgPyAwLjAxIDogc3VtVik7XG4gICAgICAvL2NvbnN0IHRpbWVUb05leHRJbmRleCA9IGRpc3RMZWZ0IC8gY3VycmVudFZlbG9jaXR5O1xuXG4gICAgICBpZiAodGltZVRvTmV4dEluZGV4ID49IHByZWRpY3Rpb25UaW1lIHx8IG5leHRJbmRleCArIDEgPj0gcGF0aFBvc2VzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBkaXN0ID0gc3VtViAvIDIgKiBwcmVkaWN0aW9uVGltZTtcbiAgICAgICAgY29uc3QgbmV3UHJvZ3Jlc3MgPSBwcm9ncmVzcyArIGRpc3QgLyBzZWdtZW50RGlzdDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBvczogbmV4dFBvc2UucG9zLmNsb25lKCkuc3ViKHByZXZQb3NlLnBvcykubXVsdGlwbHlTY2FsYXIobmV3UHJvZ3Jlc3MpLmFkZChuZXh0UG9zZS5wb3MpLFxuICAgICAgICAgIHJvdDogcHJldlBvc2Uucm90ICsgKG5leHRQb3NlLnJvdCAtIHByZXZQb3NlLnJvdCkgKiBuZXdQcm9ncmVzcyxcbiAgICAgICAgICBjdXJ2OiBwcmV2UG9zZS5jdXJ2ICsgKG5leHRQb3NlLmN1cnYgLSBwcmV2UG9zZS5jdXJ2KSAqIG5ld1Byb2dyZXNzLFxuICAgICAgICAgIGRDdXJ2OiAwLFxuICAgICAgICAgIGRkQ3VydjogMCxcbiAgICAgICAgICB2ZWxvY2l0eTogbmV4dFBvc2UudmVsb2NpdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL2N1cnJlbnRWZWxvY2l0eSA9IG5leHRQb3NlLnZlbG9jaXR5O1xuICAgICAgcHJlZGljdGlvblRpbWUgLT0gdGltZVRvTmV4dEluZGV4O1xuICAgICAgcHJvZ3Jlc3MgPSAwO1xuICAgICAgbmV4dEluZGV4Kys7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbChwb3NlLCB3aGVlbEFuZ2xlLCB2ZWxvY2l0eSwgZHQpIHtcbiAgICBjb25zdCBwYXRoUG9zZXMgPSB0aGlzLnBhdGgucG9zZXM7XG4gICAgY29uc3QgZnJvbnRBeGxlUG9zID0gQ2FyLmdldEZyb250QXhsZVBvc2l0aW9uKHBvc2UucG9zLCBwb3NlLnJvdCk7XG4gICAgY29uc3QgW25leHRJbmRleCwgcHJvZ3Jlc3NdID0gdGhpcy5maW5kTmV4dEluZGV4KGZyb250QXhsZVBvcyk7XG4gICAgdGhpcy5uZXh0SW5kZXggPSBuZXh0SW5kZXg7XG5cbiAgICBsZXQgZ2FzID0gMDtcbiAgICBsZXQgYnJha2UgPSAwO1xuICAgIGxldCBwaGkgPSAwOyAvLyB0aGUgZGVzaXJlZCB3aGVlbCBkZWZsZWN0aW9uXG5cbiAgICBpZiAobmV4dEluZGV4ID49IHBhdGhQb3Nlcy5sZW5ndGggLSAxICYmIHByb2dyZXNzID49IDEpIHtcbiAgICAgIGdhcyA9IDA7XG4gICAgICBicmFrZSA9IDE7XG4gICAgICBwaGkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBrcF9hID0gNDtcbiAgICAgIGNvbnN0IGtkX2EgPSAwLjU7XG4gICAgICBjb25zdCBrZmZfYSA9IDAuNTtcblxuICAgICAgY29uc3QgY3VycmVudEFjY2VsID0gKHZlbG9jaXR5IC0gdGhpcy5wcmV2VmVsb2NpdHkpIC8gZHQ7XG4gICAgICBjb25zdCBwcmV2TmV4dERpc3QgPSBwYXRoUG9zZXNbdGhpcy5uZXh0SW5kZXhdLnBvcy5kaXN0YW5jZVRvKHBhdGhQb3Nlc1t0aGlzLm5leHRJbmRleCAtIDFdLnBvcyk7XG4gICAgICBjb25zdCB0YXJnZXRWZWxvY2l0eSA9IE1hdGguc3FydCgyICogcGF0aFBvc2VzW25leHRJbmRleF0uYWNjZWxlcmF0aW9uICogcHJldk5leHREaXN0ICogTWF0aC5jbGFtcChwcm9ncmVzcywgMCwgMSkgKyBwYXRoUG9zZXNbdGhpcy5uZXh0SW5kZXggLSAxXS52ZWxvY2l0eSAqIHBhdGhQb3Nlc1t0aGlzLm5leHRJbmRleCAtIDFdLnZlbG9jaXR5KTtcbiAgICAgIGNvbnN0IGRpZmZWZWxvY2l0eSA9IHRhcmdldFZlbG9jaXR5IC0gdmVsb2NpdHk7XG4gICAgICBjb25zdCBkaWZmQWNjZWwgPSBwYXRoUG9zZXNbdGhpcy5uZXh0SW5kZXhdLmFjY2VsZXJhdGlvbiAtIGN1cnJlbnRBY2NlbDtcbiAgICAgIGNvbnN0IHRhcmdldEFjY2VsID0ga3BfYSAqIGRpZmZWZWxvY2l0eSArIGtkX2EgKiBkaWZmQWNjZWwgKyBrZmZfYSAqIHBhdGhQb3Nlc1t0aGlzLm5leHRJbmRleF0uYWNjZWxlcmF0aW9uO1xuXG4gICAgICBpZiAodGFyZ2V0QWNjZWwgPiAwKVxuICAgICAgICBnYXMgPSBNYXRoLm1pbih0YXJnZXRBY2NlbCAvIENhci5NQVhfR0FTX0FDQ0VMLCAxKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYnJha2UgPSBNYXRoLm1pbigtdGFyZ2V0QWNjZWwgLyBDYXIuTUFYX0JSQUtFX0RFQ0VMLCAxKTtcblxuICAgICAgdGhpcy5wcmV2VmVsb2NpdHkgPSB2ZWxvY2l0eTtcblxuICAgICAgY29uc3QgY2xvc2VzdEZyb250UGF0aFBvcyA9IHByb2plY3RQb2ludE9uU2VnbWVudChmcm9udEF4bGVQb3MsIHBhdGhQb3Nlc1t0aGlzLm5leHRJbmRleCAtIDFdLmZyb250UG9zLCBwYXRoUG9zZXNbdGhpcy5uZXh0SW5kZXhdLmZyb250UG9zKVswXTtcblxuICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkZXNpcmVkIGhlYWRpbmcgYXQgdGhlIHNwZWNpZmljIHBvaW50IG9uIHRoZSBmcm9udCBwYXRoIGJ5IGxlcnBpbmcgYmV0d2VlbiBwcmV2SGVhZGluZyBhbmQgbmV4dEhlYWRpbmcgdXNpbmcgcHJvZ3Jlc3MgYXMgdGhlIHdlaWdodFxuICAgICAgY29uc3QgcHJldkhlYWRpbmcgPSB0aGlzLm5leHRJbmRleCA+IDEgPyBwYXRoUG9zZXNbbmV4dEluZGV4XS5mcm9udFBvcy5jbG9uZSgpLnN1YihwYXRoUG9zZXNbbmV4dEluZGV4IC0gMl0uZnJvbnRQb3MpLmFuZ2xlKCkgOiBwYXRoUG9zZXNbMF0ucm90O1xuICAgICAgY29uc3QgbmV4dEhlYWRpbmcgPSB0aGlzLm5leHRJbmRleCA8IHBhdGhQb3Nlcy5sZW5ndGggLSAxID8gcGF0aFBvc2VzW25leHRJbmRleCArIDFdLmZyb250UG9zLmNsb25lKCkuc3ViKHBhdGhQb3Nlc1tuZXh0SW5kZXggLSAxXS5mcm9udFBvcykuYW5nbGUoKSA6IHBhdGhQb3Nlc1twYXRoUG9zZXMubGVuZ3RoIC0gMV0ucm90O1xuICAgICAgY29uc3QgZGVzaXJlZEhlYWRpbmcgPSBwcmV2SGVhZGluZyArIChuZXh0SGVhZGluZyAtIHByZXZIZWFkaW5nKSAqIHByb2dyZXNzO1xuXG4gICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGZyb250IGF4bGUgaXMgdG8gdGhlIGxlZnQgb3IgcmlnaHQgb2YgdGhlIGZyb250IHBhdGhcbiAgICAgIGNvbnN0IHBhdGhWZWMgPSBwYXRoUG9zZXNbbmV4dEluZGV4XS5mcm9udFBvcy5jbG9uZSgpLnN1YihwYXRoUG9zZXNbbmV4dEluZGV4IC0gMV0uZnJvbnRQb3MpLm5vcm1hbGl6ZSgpO1xuICAgICAgY29uc3QgemVybyA9IG5ldyBUSFJFRS5WZWN0b3IyKDAsIDApO1xuICAgICAgY29uc3QgbGVmdCA9IHBhdGhWZWMuY2xvbmUoKS5yb3RhdGVBcm91bmQoemVybywgTWF0aC5QSSAvIDIpLmFkZChjbG9zZXN0RnJvbnRQYXRoUG9zKTtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gcGF0aFZlYy5jbG9uZSgpLnJvdGF0ZUFyb3VuZCh6ZXJvLCAtTWF0aC5QSSAvIDIpLmFkZChjbG9zZXN0RnJvbnRQYXRoUG9zKTtcbiAgICAgIGNvbnN0IGRpciA9IGZyb250QXhsZVBvcy5kaXN0YW5jZVRvU3F1YXJlZChsZWZ0KSA8IGZyb250QXhsZVBvcy5kaXN0YW5jZVRvU3F1YXJlZChyaWdodCkgPyAtMSA6IDE7XG5cbiAgICAgIGNvbnN0IGsgPSA0O1xuICAgICAgY29uc3QgZ2FpbiA9IDAuODtcbiAgICAgIGNvbnN0IGNyb3NzVHJhY2tFcnJvciA9IGZyb250QXhsZVBvcy5kaXN0YW5jZVRvKGNsb3Nlc3RGcm9udFBhdGhQb3MpO1xuICAgICAgY29uc3QgaGVhZGluZ0Vycm9yID0gTWF0aC53cmFwQW5nbGUocG9zZS5yb3QgLSBkZXNpcmVkSGVhZGluZyk7XG5cbiAgICAgIC8vcGhpID0gLWhlYWRpbmdFcnJvciArIGdhaW4gKiBNYXRoLmF0YW4oayAqIGRpciAqIGNyb3NzVHJhY2tFcnJvciAvIHZlbG9jaXR5KTtcblxuICAgICAgY29uc3QgY3VydiA9IHBhdGhQb3Nlc1tuZXh0SW5kZXggLSAxXS5jdXJ2ICsgKHBhdGhQb3Nlc1tuZXh0SW5kZXhdLmN1cnYgLSBwYXRoUG9zZXNbbmV4dEluZGV4IC0gMV0uY3VydikgKiBwcm9ncmVzcztcblxuICAgICAgcGhpID0gTWF0aC5hdGFuKGN1cnYgKiBDYXIuV0hFRUxfQkFTRSkgKyBnYWluICogTWF0aC5hdGFuKGsgKiBkaXIgKiBjcm9zc1RyYWNrRXJyb3IgLyBNYXRoLm1heCh2ZWxvY2l0eSwgMC4wMSkpO1xuXG4gICAgICBjb25zdCBjaGVja1N0ZWVyID0gTWF0aC5jbGFtcCgocGhpIC0gd2hlZWxBbmdsZSkgLyBkdCAvIENhci5NQVhfU1RFRVJfU1BFRUQsIC0xLCAxKTtcbiAgICB9XG5cbiAgICBjb25zdCBwaGlFcnJvciA9IHBoaSAtIHdoZWVsQW5nbGU7XG4gICAgLypcbiAgICBjb25zdCBkUGhpRXJyb3IgPSAocGhpRXJyb3IgLSB0aGlzLnByZXZQaGlFcnJvcikgLyBkdDtcbiAgICB0aGlzLnByZXZQaGlFcnJvciA9IHBoaUVycm9yO1xuICAgIFxuICAgIGNvbnN0IHN0ZWVyID0gTWF0aC5jbGFtcCgxMiAqIHBoaUVycm9yICsgMC44ICogZFBoaUVycm9yLCAtMSwgMSk7XG4gICAgKi9cblxuICAgIGNvbnN0IHN0ZWVyID0gTWF0aC5jbGFtcChwaGlFcnJvciAvIGR0IC8gQ2FyLk1BWF9TVEVFUl9TUEVFRCwgLTEsIDEpO1xuXG4gICAgcmV0dXJuIHsgZ2FzLCBicmFrZSwgc3RlZXIgfTtcbiAgfVxuXG4gIC8vIEZpbmRzIHRoZSBuZXh0IHBvaW50IHRoZSB2ZWhpY2xlIGlzIGFwcHJvYWNoaW5nIGFuZCB0aGUgcHJvZ3Jlc3MgYmV0d2VlbiB0aGUgcHJldiBwb2ludCBhbmQgdGhlIG5leHQgcG9pbnRcbiAgLy8gUmV0dXJucyBbbmV4dFBvaW50SW5kZXgsIHByb2dyZXNzIGZyb20gKG5leHRQb2ludEluZGV4IC0gMSkgdG8gbmV4dFBvaW50SW5kZXgsIHswIC0gMX1dXG4gIGZpbmROZXh0SW5kZXgoZnJvbnRBeGxlUG9zKSB7XG4gICAgY29uc3QgcGF0aFBvc2VzID0gdGhpcy5wYXRoLnBvc2VzO1xuXG4gICAgLy8gQ29uc3RyYWluIHRoZSBzZWFyY2ggdG8ganVzdCBhIGZldyBwb2ludHMgc3Vycm91bmRpbmcgdGhlIGN1cnJlbnQgbmV4dEluZGV4XG4gICAgLy8gZm9yIHBlcmZvcm1hbmNlIGFuZCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGEgcGF0aCB0aGF0IGNyb3NzZXMgaXRzZWxmXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCB0aGlzLm5leHRJbmRleCAtIDIwKTtcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihwYXRoUG9zZXMubGVuZ3RoIC0gMSwgdGhpcy5uZXh0SW5kZXggKyAyMCk7XG4gICAgbGV0IGNsb3Nlc3REaXN0U3FyID0gZnJvbnRBeGxlUG9zLmRpc3RhbmNlVG9TcXVhcmVkKHBhdGhQb3Nlc1tzdGFydF0uZnJvbnRQb3MpO1xuICAgIGxldCBjbG9zZXN0SW5kZXggPSBzdGFydDtcblxuICAgIGZvciAobGV0IGkgPSBzdGFydCArIDE7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgY29uc3QgZGlzdFNxciA9IGZyb250QXhsZVBvcy5kaXN0YW5jZVRvU3F1YXJlZChwYXRoUG9zZXNbaV0uZnJvbnRQb3MpO1xuICAgICAgaWYgKGRpc3RTcXIgPCBjbG9zZXN0RGlzdFNxcikge1xuICAgICAgICBjbG9zZXN0RGlzdFNxciA9IGRpc3RTcXI7XG4gICAgICAgIGNsb3Nlc3RJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsb3Nlc3RJbmRleCA9PSBwYXRoUG9zZXMubGVuZ3RoIC0gMSkge1xuICAgICAgY29uc3QgW18sIHByb2dyZXNzXSA9IHByb2plY3RQb2ludE9uU2VnbWVudChmcm9udEF4bGVQb3MsIHBhdGhQb3Nlc1tjbG9zZXN0SW5kZXggLSAxXS5mcm9udFBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleF0uZnJvbnRQb3MpO1xuICAgICAgcmV0dXJuIFtjbG9zZXN0SW5kZXgsIHByb2dyZXNzXTtcbiAgICB9IGVsc2UgaWYgKGNsb3Nlc3RJbmRleCA9PSAwKSB7XG4gICAgICBjb25zdCBbXywgcHJvZ3Jlc3NdID0gcHJvamVjdFBvaW50T25TZWdtZW50KGZyb250QXhsZVBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleF0uZnJvbnRQb3MsIHBhdGhQb3Nlc1tjbG9zZXN0SW5kZXggKyAxXS5mcm9udFBvcyk7XG4gICAgICByZXR1cm4gW2Nsb3Nlc3RJbmRleCArIDEsIHByb2dyZXNzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIG5leHRQb2ludCBpcyBlaXRoZXIgKGNsb3Nlc3RQb2ludCkgb3IgKGNsb3Nlc3RQb2ludCArIDEpLiBQcm9qZWN0IHRoZSBmcm9udEF4bGVQb3MgdG8gYm90aFxuICAgICAgLy8gb2YgdGhvc2UgdHdvIGxpbmUgc2VnbWVudHMgKHRoZSBzZWdtZW50IHByZWNlZGluZyBjbG9zZXN0UG9pbnQgYW5kIHRoZSBzZWdtZW50IHN1Y2NlZWRpbmcgY2xvc2VzdFBvaW50KVxuICAgICAgLy8gdG8gZGV0ZXJtaW5lIHdoaWNoIHNlZ21lbnQgaXQncyBjbG9zZXN0IHRvLlxuICAgICAgY29uc3QgW3ByZWNlZGluZ1Byb2plY3Rpb24sIHByZWNlZGluZ1Byb2dyZXNzXSA9IHByb2plY3RQb2ludE9uU2VnbWVudChmcm9udEF4bGVQb3MsIHBhdGhQb3Nlc1tjbG9zZXN0SW5kZXggLSAxXS5mcm9udFBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleF0uZnJvbnRQb3MpO1xuICAgICAgY29uc3QgW3N1Y2NlZWRpbmdQcm9qZWN0aW9uLCBzdWNjZWVkaW5nUHJvZ3Jlc3NdID0gcHJvamVjdFBvaW50T25TZWdtZW50KGZyb250QXhsZVBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleF0uZnJvbnRQb3MsIHBhdGhQb3Nlc1tjbG9zZXN0SW5kZXggKyAxXS5mcm9udFBvcyk7XG5cbiAgICAgIGlmIChmcm9udEF4bGVQb3MuZGlzdGFuY2VUb1NxdWFyZWQocHJlY2VkaW5nUHJvamVjdGlvbikgPCBmcm9udEF4bGVQb3MuZGlzdGFuY2VUb1NxdWFyZWQoc3VjY2VlZGluZ1Byb2plY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBbY2xvc2VzdEluZGV4LCBwcmVjZWRpbmdQcm9ncmVzc107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW2Nsb3Nlc3RJbmRleCArIDEsIHN1Y2NlZWRpbmdQcm9ncmVzc107XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFJldHVybnMgW3BvaW50T25TZWdtZW50LCBwcm9ncmVzc0Fsb25nU2VnbWVudCB7MCAtIDF9XVxuZnVuY3Rpb24gcHJvamVjdFBvaW50T25TZWdtZW50KHBvaW50LCBzdGFydCwgZW5kKSB7XG4gIGNvbnN0IGRpc3RTcXIgPSBzdGFydC5kaXN0YW5jZVRvU3F1YXJlZChlbmQpO1xuICAvL2NvbnN0IHByb2dyZXNzID0gTWF0aC5jbGFtcChwb2ludC5jbG9uZSgpLnN1YihzdGFydCkuZG90KGVuZC5jbG9uZSgpLnN1YihzdGFydCkpIC8gZGlzdFNxciwgMCwgMSk7XG4gIGNvbnN0IHByb2dyZXNzID0gcG9pbnQuY2xvbmUoKS5zdWIoc3RhcnQpLmRvdChlbmQuY2xvbmUoKS5zdWIoc3RhcnQpKSAvIGRpc3RTcXI7XG4gIHJldHVybiBbZW5kLmNsb25lKCkuc3ViKHN0YXJ0KS5tdWx0aXBseVNjYWxhcihwcm9ncmVzcykuYWRkKHN0YXJ0KSwgcHJvZ3Jlc3NdO1xufVxuIiwiaW1wb3J0IENhciBmcm9tIFwiLi4vLi4vcGh5c2ljcy9DYXIuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb2xsb3dDb250cm9sbGVyIHtcbiAgY29uc3RydWN0b3IocGF0aCwgY2FyKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLmNhciA9IGNhcjtcbiAgICB0aGlzLm5leHRJbmRleCA9IDE7XG4gICAgdGhpcy5wcmV2VmVsb2NpdHkgPSAwO1xuICAgIHRoaXMucHJldkFjY2VsID0gMDtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMucHJldlZlbG9jaXR5ID0gMDtcbiAgICB0aGlzLnByZXZBY2NlbCA9IDA7XG4gIH1cblxuICByZXBsYWNlUGF0aChwYXRoKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLm5leHRJbmRleCA9IDE7XG4gIH1cblxuICBwcmVkaWN0UG9zZUFmdGVyVGltZShjdXJyZW50UG9zZSwgcHJlZGljdGlvblRpbWUpIHtcbiAgICBjb25zdCBwYXRoUG9zZXMgPSB0aGlzLnBhdGgucG9zZXM7XG4gICAgbGV0IFtuZXh0SW5kZXgsIHByb2dyZXNzXSA9IHRoaXMuZmluZE5leHRJbmRleChjdXJyZW50UG9zZS5wb3MpO1xuICAgIGxldCBjdXJyZW50VmVsb2NpdHkgPSBjdXJyZW50UG9zZS52ZWxvY2l0eTtcblxuICAgIGlmIChjdXJyZW50VmVsb2NpdHkgPD0gMC4wMSkgcmV0dXJuIGN1cnJlbnRQb3NlO1xuXG4gICAgd2hpbGUgKHByZWRpY3Rpb25UaW1lID4gMCkge1xuICAgICAgY29uc3QgcHJldlBvc2UgPSBwYXRoUG9zZXNbbmV4dEluZGV4IC0gMV07XG4gICAgICBjb25zdCBuZXh0UG9zZSA9IHBhdGhQb3Nlc1tuZXh0SW5kZXhdO1xuXG4gICAgICBjb25zdCBzZWdtZW50RGlzdCA9IG5leHRQb3NlLnBvcy5kaXN0YW5jZVRvKHByZXZQb3NlLnBvcyk7XG4gICAgICBjb25zdCBkaXN0TGVmdCA9IHNlZ21lbnREaXN0ICogKDEgLSBwcm9ncmVzcyk7XG4gICAgICBjb25zdCBzdW1WID0gKGN1cnJlbnRWZWxvY2l0eSArIG5leHRQb3NlLnZlbG9jaXR5KSAvIDI7XG4gICAgICBjb25zdCB0aW1lVG9OZXh0SW5kZXggPSAyICogZGlzdExlZnQgLyAoc3VtViA9PSAwID8gMC4wMSA6IHN1bVYpO1xuXG4gICAgICBpZiAodGltZVRvTmV4dEluZGV4ID49IHByZWRpY3Rpb25UaW1lIHx8IG5leHRJbmRleCArIDEgPj0gcGF0aFBvc2VzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBkaXN0ID0gc3VtViAvIDIgKiBwcmVkaWN0aW9uVGltZTtcbiAgICAgICAgY29uc3QgbmV3UHJvZ3Jlc3MgPSBwcm9ncmVzcyArIGRpc3QgLyBzZWdtZW50RGlzdDtcbiAgICAgICAgY29uc3QgbmV3Um90YXRpb24gPSBNYXRoLndyYXBBbmdsZShwcmV2UG9zZS5yb3QgKyBNYXRoLndyYXBBbmdsZShuZXh0UG9zZS5yb3QgLSBwcmV2UG9zZS5yb3QpICogbmV3UHJvZ3Jlc3MpO1xuXG4gICAgICAgIGNvbnN0IHBwcmV2UG9zZSA9IG5leHRJbmRleCAtIDIgPj0gMCA/IHBhdGhQb3Nlc1tuZXh0SW5kZXggLSAyXSA6IHByZXZQb3NlO1xuICAgICAgICBjb25zdCBubmV4dFBvc2UgPSBuZXh0SW5kZXggKyAxIDwgcGF0aFBvc2VzLmxlbmd0aCA/IHBhdGhQb3Nlc1tuZXh0SW5kZXggKyAxXSA6IG5leHRQb3NlO1xuXG4gICAgICAgIGNvbnN0IGRDdXJ2ID0gKG5leHRQb3NlLmN1cnYgLSBwcmV2UG9zZS5jdXJ2KSAvIHNlZ21lbnREaXN0O1xuICAgICAgICBjb25zdCBkQ3VydlByZXYgPSAoKHByZXZQb3NlLmN1cnYgLSBwcHJldlBvc2UuY3VydikgLyBwcHJldlBvc2UucG9zLmRpc3RhbmNlVG8ocHJldlBvc2UucG9zKSArIGRDdXJ2KSAvIDI7XG4gICAgICAgIGNvbnN0IGRDdXJ2TmV4dCA9IChkQ3VydiArIChubmV4dFBvc2UuY3VydiAtIG5leHRQb3NlLmN1cnYpIC8gbmV4dFBvc2UucG9zLmRpc3RhbmNlVG8obm5leHRQb3NlLnBvcykpIC8gMjtcblxuICAgICAgICBjb25zdCBkZEN1cnYgPSAoZEN1cnZOZXh0IC0gZEN1cnZQcmV2KSAvIHNlZ21lbnREaXN0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcG9zOiBuZXh0UG9zZS5wb3MuY2xvbmUoKS5zdWIocHJldlBvc2UucG9zKS5tdWx0aXBseVNjYWxhcihuZXdQcm9ncmVzcykuYWRkKG5leHRQb3NlLnBvcyksXG4gICAgICAgICAgcm90OiBuZXdSb3RhdGlvbixcbiAgICAgICAgICBjdXJ2OiBwcmV2UG9zZS5jdXJ2ICsgKG5leHRQb3NlLmN1cnYgLSBwcmV2UG9zZS5jdXJ2KSAqIG5ld1Byb2dyZXNzLFxuICAgICAgICAgIGRDdXJ2OiBkQ3VydixcbiAgICAgICAgICBkZEN1cnY6IGRkQ3VydixcbiAgICAgICAgICB2ZWxvY2l0eTogbmV4dFBvc2UudmVsb2NpdHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjdXJyZW50VmVsb2NpdHkgPSBuZXh0UG9zZS52ZWxvY2l0eTtcbiAgICAgIHByZWRpY3Rpb25UaW1lIC09IHRpbWVUb05leHRJbmRleDtcbiAgICAgIHByb2dyZXNzID0gMDtcbiAgICAgIG5leHRJbmRleCsrO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2wocG9zZSwgd2hlZWxBbmdsZSwgdmVsb2NpdHksIGR0LCBsb2NrUGF0aCA9IGZhbHNlKSB7XG4gICAgY29uc3QgcGF0aFBvc2VzID0gdGhpcy5wYXRoLnBvc2VzO1xuICAgIGNvbnN0IFtuZXh0SW5kZXgsIHByb2dyZXNzLCBwcm9qZWN0aW9uXSA9IHRoaXMuZmluZE5leHRJbmRleChwb3NlLnBvcyk7XG4gICAgdGhpcy5uZXh0SW5kZXggPSBuZXh0SW5kZXg7XG5cbiAgICBjb25zdCBwcmV2UG9zZSA9IHBhdGhQb3Nlc1tuZXh0SW5kZXggLSAxXTtcbiAgICBjb25zdCBuZXh0UG9zZSA9IHBhdGhQb3Nlc1tuZXh0SW5kZXhdO1xuXG4gICAgbGV0IGdhcyA9IDA7XG4gICAgbGV0IGJyYWtlID0gMDtcbiAgICBsZXQgc3RlZXIgPSAwO1xuXG4gICAgaWYgKG5leHRJbmRleCA+PSBwYXRoUG9zZXMubGVuZ3RoIC0gMiAmJiBwcm9ncmVzcyA+PSAxIC0gMWUtNikge1xuICAgICAgYnJha2UgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKlxuICAgICAgY29uc3Qga3BfYSA9IDQ7XG4gICAgICBjb25zdCBrZF9hID0gMC41O1xuICAgICAgY29uc3Qga2ZmX2EgPSAwLjU7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBY2NlbCA9ICh2ZWxvY2l0eSAtIHRoaXMucHJldlZlbG9jaXR5KSAvIGR0O1xuICAgICAgY29uc3QgcHJldk5leHREaXN0ID0gbmV4dFBvc2UucG9zLmRpc3RhbmNlVG8ocHJldlBvc2UucG9zKTtcbiAgICAgIGNvbnN0IHRhcmdldFZlbG9jaXR5ID0gTWF0aC5zcXJ0KDIgKiBuZXh0UG9zZS5hY2NlbGVyYXRpb24gKiBwcmV2TmV4dERpc3QgKiBNYXRoLmNsYW1wKHByb2dyZXNzLCAwLCAxKSArIHByZXZQb3NlLnZlbG9jaXR5ICogcHJldlBvc2UudmVsb2NpdHkpO1xuICAgICAgY29uc3QgZGlmZlZlbG9jaXR5ID0gdGFyZ2V0VmVsb2NpdHkgLSB2ZWxvY2l0eTtcbiAgICAgIGNvbnN0IGRpZmZBY2NlbCA9IG5leHRQb3NlLmFjY2VsZXJhdGlvbiAtIGN1cnJlbnRBY2NlbDtcbiAgICAgIGNvbnN0IHRhcmdldEFjY2VsID0ga3BfYSAqIGRpZmZWZWxvY2l0eSArIGtkX2EgKiBkaWZmQWNjZWwgKyBrZmZfYSAqIG5leHRQb3NlLmFjY2VsZXJhdGlvbjtcbiAgICAgICovXG4gICAgICBjb25zdCBhY2NlbERhbXBpbmcgPSAwLjE7XG4gICAgICBjb25zdCB0YXJnZXRBY2NlbCA9IG5leHRQb3NlLmFjY2VsZXJhdGlvbjtcbiAgICAgIGNvbnN0IGRhbXBlZEFjY2VsID0gdGhpcy5wcmV2QWNjZWwgKiAoMSAtIGFjY2VsRGFtcGluZykgKyB0YXJnZXRBY2NlbCAqIGFjY2VsRGFtcGluZztcblxuICAgICAgaWYgKGRhbXBlZEFjY2VsID4gMClcbiAgICAgICAgZ2FzID0gTWF0aC5taW4oZGFtcGVkQWNjZWwgLyBDYXIuTUFYX0dBU19BQ0NFTCwgQ2FyLk1BWF9HQVNfQUNDRUwpO1xuICAgICAgZWxzZVxuICAgICAgICBicmFrZSA9IE1hdGgubWluKC1kYW1wZWRBY2NlbCAvIENhci5NQVhfQlJBS0VfREVDRUwsIENhci5NQVhfQlJBS0VfREVDRUwpO1xuXG4gICAgICB0aGlzLnByZXZWZWxvY2l0eSA9IHZlbG9jaXR5O1xuICAgICAgdGhpcy5wcmV2QWNjZWwgPSBkYW1wZWRBY2NlbDtcblxuICAgICAgY29uc3QgY3VydmF0dXJlID0gcHJldlBvc2UuY3VydiArIChuZXh0UG9zZS5jdXJ2IC0gcHJldlBvc2UuY3VydikgKiBwcm9ncmVzcztcbiAgICAgIGNvbnN0IGRlc2lyZWRXaGVlbEFuZ2xlID0gTWF0aC5hdGFuKGN1cnZhdHVyZSAqIENhci5XSEVFTF9CQVNFKTtcbiAgICAgIGNvbnN0IHdoZWVsQW5nbGVFcnJvciA9IGRlc2lyZWRXaGVlbEFuZ2xlIC0gd2hlZWxBbmdsZTtcbiAgICAgIHN0ZWVyID0gTWF0aC5jbGFtcCh3aGVlbEFuZ2xlRXJyb3IgLyBkdCAvIENhci5NQVhfU1RFRVJfU1BFRUQsIC0xLCAxKTtcblxuICAgICAgaWYgKGxvY2tQYXRoKSB7XG4gICAgICAgIGNvbnN0IGRhbXBpbmcgPSAwLjE7XG4gICAgICAgIGNvbnN0IG5ld1JvdGF0aW9uID0gTWF0aC53cmFwQW5nbGUocHJldlBvc2Uucm90ICsgTWF0aC53cmFwQW5nbGUobmV4dFBvc2Uucm90IC0gcHJldlBvc2Uucm90KSAqIHByb2dyZXNzKTtcbiAgICAgICAgY29uc3QgbmV3UG9zaXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMihwcm9qZWN0aW9uLnggLSBDYXIuUkVBUl9BWExFX1BPUyAqIE1hdGguY29zKG5ld1JvdGF0aW9uKSwgcHJvamVjdGlvbi55IC0gQ2FyLlJFQVJfQVhMRV9QT1MgKiBNYXRoLnNpbihuZXdSb3RhdGlvbikpO1xuXG4gICAgICAgIGlmIChNYXRoLmFicyhNYXRoLndyYXBBbmdsZShuZXdSb3RhdGlvbiAtIHRoaXMuY2FyLnJvdGF0aW9uKSkgPiAwLjUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnd3V0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhci5yb3RhdGlvbiArPSBkYW1waW5nICogTWF0aC53cmFwQW5nbGUobmV3Um90YXRpb24gLSB0aGlzLmNhci5yb3RhdGlvbik7XG4gICAgICAgIHRoaXMuY2FyLnBvc2l0aW9uID0gdGhpcy5jYXIucG9zaXRpb24uY2xvbmUoKS5tdWx0aXBseVNjYWxhcigxIC0gZGFtcGluZykuYWRkKG5ld1Bvc2l0aW9uLm11bHRpcGx5U2NhbGFyKGRhbXBpbmcpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBnYXMsIGJyYWtlLCBzdGVlciB9O1xuICB9XG5cbiAgZmluZE5leHRJbmRleChwb3MpIHtcbiAgICBjb25zdCBwYXRoUG9zZXMgPSB0aGlzLnBhdGgucG9zZXM7XG5cbiAgICAvLyBDb25zdHJhaW4gdGhlIHNlYXJjaCB0byBqdXN0IGEgZmV3IHBvaW50cyBzdXJyb3VuZGluZyB0aGUgY3VycmVudCBuZXh0SW5kZXhcbiAgICAvLyBmb3IgcGVyZm9ybWFuY2UgYW5kIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggYSBwYXRoIHRoYXQgY3Jvc3NlcyBpdHNlbGZcbiAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIHRoaXMubmV4dEluZGV4IC0gMjApO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHBhdGhQb3Nlcy5sZW5ndGggLSAxLCB0aGlzLm5leHRJbmRleCArIDIwKTtcbiAgICBsZXQgY2xvc2VzdERpc3RTcXIgPSBwb3MuZGlzdGFuY2VUb1NxdWFyZWQocGF0aFBvc2VzW3N0YXJ0XS5wb3MpO1xuICAgIGxldCBjbG9zZXN0SW5kZXggPSBzdGFydDtcblxuICAgIGZvciAobGV0IGkgPSBzdGFydCArIDE7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgY29uc3QgZGlzdFNxciA9IHBvcy5kaXN0YW5jZVRvU3F1YXJlZChwYXRoUG9zZXNbaV0ucG9zKTtcbiAgICAgIGlmIChkaXN0U3FyIDwgY2xvc2VzdERpc3RTcXIpIHtcbiAgICAgICAgY2xvc2VzdERpc3RTcXIgPSBkaXN0U3FyO1xuICAgICAgICBjbG9zZXN0SW5kZXggPSBpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZXN0SW5kZXggPT0gcGF0aFBvc2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgIGNvbnN0IFtwcm9qZWN0aW9uLCBwcm9ncmVzc10gPSBwcm9qZWN0UG9pbnRPblNlZ21lbnQocG9zLCBwYXRoUG9zZXNbY2xvc2VzdEluZGV4IC0gMV0ucG9zLCBwYXRoUG9zZXNbY2xvc2VzdEluZGV4XS5wb3MpO1xuICAgICAgcmV0dXJuIFtjbG9zZXN0SW5kZXgsIHByb2dyZXNzLCBwcm9qZWN0aW9uXTtcbiAgICB9IGVsc2UgaWYgKGNsb3Nlc3RJbmRleCA9PSAwKSB7XG4gICAgICBjb25zdCBbcHJvamVjdGlvbiwgcHJvZ3Jlc3NdID0gcHJvamVjdFBvaW50T25TZWdtZW50KHBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleF0ucG9zLCBwYXRoUG9zZXNbY2xvc2VzdEluZGV4ICsgMV0ucG9zKTtcbiAgICAgIHJldHVybiBbY2xvc2VzdEluZGV4ICsgMSwgcHJvZ3Jlc3MsIHByb2plY3Rpb25dO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGUgbmV4dFBvaW50IGlzIGVpdGhlciAoY2xvc2VzdFBvaW50KSBvciAoY2xvc2VzdFBvaW50ICsgMSkuIFByb2plY3QgdGhlIHBvcyB0byBib3RoXG4gICAgICAvLyBvZiB0aG9zZSB0d28gbGluZSBzZWdtZW50cyAodGhlIHNlZ21lbnQgcHJlY2VkaW5nIGNsb3Nlc3RQb2ludCBhbmQgdGhlIHNlZ21lbnQgc3VjY2VlZGluZyBjbG9zZXN0UG9pbnQpXG4gICAgICAvLyB0byBkZXRlcm1pbmUgd2hpY2ggc2VnbWVudCBpdCdzIGNsb3Nlc3QgdG8uXG4gICAgICBjb25zdCBbcHJlY2VkaW5nUHJvamVjdGlvbiwgcHJlY2VkaW5nUHJvZ3Jlc3NdID0gcHJvamVjdFBvaW50T25TZWdtZW50KHBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleCAtIDFdLnBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleF0ucG9zKTtcbiAgICAgIGNvbnN0IFtzdWNjZWVkaW5nUHJvamVjdGlvbiwgc3VjY2VlZGluZ1Byb2dyZXNzXSA9IHByb2plY3RQb2ludE9uU2VnbWVudChwb3MsIHBhdGhQb3Nlc1tjbG9zZXN0SW5kZXhdLnBvcywgcGF0aFBvc2VzW2Nsb3Nlc3RJbmRleCArIDFdLnBvcyk7XG5cbiAgICAgIGlmIChwb3MuZGlzdGFuY2VUb1NxdWFyZWQocHJlY2VkaW5nUHJvamVjdGlvbikgPCBwb3MuZGlzdGFuY2VUb1NxdWFyZWQoc3VjY2VlZGluZ1Byb2plY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBbY2xvc2VzdEluZGV4LCBwcmVjZWRpbmdQcm9ncmVzcywgcHJlY2VkaW5nUHJvamVjdGlvbl07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gW2Nsb3Nlc3RJbmRleCArIDEsIHN1Y2NlZWRpbmdQcm9ncmVzcywgc3VjY2VlZGluZ1Byb2plY3Rpb25dO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBSZXR1cm5zIFtwb2ludE9uU2VnbWVudCwgcHJvZ3Jlc3NBbG9uZ1NlZ21lbnQgezAgLSAxfV1cbmZ1bmN0aW9uIHByb2plY3RQb2ludE9uU2VnbWVudChwb2ludCwgc3RhcnQsIGVuZCkge1xuICBjb25zdCBkaXN0U3FyID0gc3RhcnQuZGlzdGFuY2VUb1NxdWFyZWQoZW5kKTtcbiAgY29uc3QgcHJvZ3Jlc3MgPSBwb2ludC5jbG9uZSgpLnN1YihzdGFydCkuZG90KGVuZC5jbG9uZSgpLnN1YihzdGFydCkpIC8gZGlzdFNxcjtcblxuICBjb25zdCBjbGFtcGVkUHJvZ3Jlc3MgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBwcm9ncmVzcykpO1xuICByZXR1cm4gW2VuZC5jbG9uZSgpLnN1YihzdGFydCkubXVsdGlwbHlTY2FsYXIoY2xhbXBlZFByb2dyZXNzKS5hZGQoc3RhcnQpLCBjbGFtcGVkUHJvZ3Jlc3NdO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWFudWFsQ29udHJvbGxlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2FyS2V5cyA9IHsgZm9yd2FyZDogZmFsc2UsIGJhY2t3YXJkOiBmYWxzZSwgbGVmdDogZmFsc2UsIHJpZ2h0OiBmYWxzZSwgYnJha2U6IGZhbHNlIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT4ge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAndyc6IGNhc2UgJ1cnOiB0aGlzLmNhcktleXMuZm9yd2FyZCA9IHRydWU7IGJyZWFrO1xuICAgICAgICBjYXNlICdzJzogY2FzZSAnUyc6IHRoaXMuY2FyS2V5cy5iYWNrd2FyZCA9IHRydWU7IGJyZWFrO1xuICAgICAgICBjYXNlICdhJzogY2FzZSAnQSc6IHRoaXMuY2FyS2V5cy5sZWZ0ID0gdHJ1ZTsgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2QnOiBjYXNlICdEJzogdGhpcy5jYXJLZXlzLnJpZ2h0ID0gdHJ1ZTsgYnJlYWs7XG4gICAgICAgIGNhc2UgJyAnOiB0aGlzLmNhcktleXMuYnJha2UgPSB0cnVlOyBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZXZlbnQgPT4ge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAndyc6IGNhc2UgJ1cnOiB0aGlzLmNhcktleXMuZm9yd2FyZCA9IGZhbHNlOyBicmVhaztcbiAgICAgICAgY2FzZSAncyc6IGNhc2UgJ1MnOiB0aGlzLmNhcktleXMuYmFja3dhcmQgPSBmYWxzZTsgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2EnOiBjYXNlICdBJzogdGhpcy5jYXJLZXlzLmxlZnQgPSBmYWxzZTsgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2QnOiBjYXNlICdEJzogdGhpcy5jYXJLZXlzLnJpZ2h0ID0gZmFsc2U7IGJyZWFrO1xuICAgICAgICBjYXNlICcgJzogdGhpcy5jYXJLZXlzLmJyYWtlID0gZmFsc2U7IGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29udHJvbCgpIHtcbiAgICBsZXQgZ2FzID0gMDtcbiAgICBsZXQgYnJha2UgPSAwO1xuICAgIGxldCBzdGVlciA9IDA7XG5cbiAgICBpZiAodGhpcy5jYXJLZXlzLmZvcndhcmQpIGdhcyArPSAxO1xuICAgIGlmICh0aGlzLmNhcktleXMuYmFja3dhcmQpIGdhcyAtPSAxO1xuICAgIGlmICh0aGlzLmNhcktleXMubGVmdCkgc3RlZXIgLT0gMTtcbiAgICBpZiAodGhpcy5jYXJLZXlzLnJpZ2h0KSBzdGVlciArPSAxO1xuICAgIGlmICh0aGlzLmNhcktleXMuYnJha2UpIGJyYWtlICs9IDE7XG5cbiAgICByZXR1cm4geyBnYXMsIGJyYWtlLCBzdGVlciB9O1xuICB9XG59XG4iLCIvLyBnZW9sb2NhdGlvbiA9IFszMy41MjM5MDAsIC0xMTEuOTA4NzU2XTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hcE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEIHtcbiAgY29uc3RydWN0b3IoZ2VvbG9jYXRpb24gPSBudWxsKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZ2VvbG9jYXRpb24gPSBnZW9sb2NhdGlvbjtcbiAgICB0aGlzLnRpbGVzR3JvdXAgPSBudWxsO1xuXG4gICAgY29uc3QgdGlsZVNpemUgPSBnZW9sb2NhdGlvbiA/IHRoaXMudGlsZVNpemVJbk1ldGVycygpIDogMTA7XG4gICAgY29uc3QgZ3JpZCA9IG5ldyBUSFJFRS5HcmlkSGVscGVyKE1hcE9iamVjdC5IQUxGX05VTV9USUxFUyAqIDggKiB0aWxlU2l6ZSwgTWFwT2JqZWN0LkhBTEZfTlVNX1RJTEVTICogOCwgMHgzMzMzMzMsIDB4MzMzMzMzKTtcbiAgICBncmlkLnJlbmRlck9yZGVyID0gLTE7XG4gICAgZ3JpZC5tYXRlcmlhbC5kZXB0aFRlc3QgPSBmYWxzZTtcbiAgICBncmlkLnBvc2l0aW9uLmFkZChuZXcgVEhSRUUuVmVjdG9yMygtdGlsZVNpemUgLyAyLCAwLCAtdGlsZVNpemUgLyAyKSk7XG4gICAgdGhpcy5hZGQoZ3JpZCk7XG5cbiAgICBpZiAoZ2VvbG9jYXRpb24pXG4gICAgICB0aGlzLmRyYXdUaWxlcygpO1xuICB9XG5cbiAgLy8gQ29udmVydHMgbGF0LWxvbmcgZ2VvbG9jYXRpb24gdG8gR29vZ2xlIE1hcHMgd29ybGQgY29vZGluYXRlc1xuICBzdGF0aWMgZ2VvVG9Xb3JsZChsYXRsbmcpIHtcbiAgICBjb25zdCBsYXRpdHVkZVJhZGlhbnMgPSBsYXRsbmdbMF0gKiBNYXRoLlBJIC8gMTgwO1xuICAgIGNvbnN0IHggPSAobGF0bG5nWzFdICsgMTgwKSAvIDM2MCAqIDI1NjtcbiAgICBjb25zdCB5ID0gKCgxIC0gTWF0aC5sb2coTWF0aC50YW4obGF0aXR1ZGVSYWRpYW5zKSArIDEgLyBNYXRoLmNvcyhsYXRpdHVkZVJhZGlhbnMpKSAvIE1hdGguUEkpIC8gMikgKiAyNTY7XG4gICAgcmV0dXJuIFt4LCB5XTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZXMgdGhlIHggYW5kIHkgdGlsZSBpbmRpY2VzIGZvciB0aGUgcHJvdmlkZWQgd29ybGQgY29vcmRpbmF0ZXNcbiAgc3RhdGljIHdvcmxkVG9UaWxlKHdvcmxkQ29vcmRpbmF0ZXMpIHtcbiAgICByZXR1cm4gW01hdGguZmxvb3Iod29ybGRDb29yZGluYXRlc1swXSAqIE1hcE9iamVjdC5TQ0FMRSAvIDI1NiksIE1hdGguZmxvb3Iod29ybGRDb29yZGluYXRlc1sxXSAqIE1hcE9iamVjdC5TQ0FMRSAvIDI1NildO1xuICB9XG5cbiAgZHJhd1RpbGVzKCkge1xuICAgIGlmICh0aGlzLnRpbGVHcm91cCAhPSBudWxsKSB0aGlzLnJlbW92ZSh0aGlzLnRpbGVzR3JvdXApO1xuICAgIHRoaXMudGlsZUdyb3VwID0gbmV3IFRIUkVFLkdyb3VwKCk7XG5cbiAgICBjb25zdCBvcmlnaW5UaWxlID0gTWFwT2JqZWN0LndvcmxkVG9UaWxlKE1hcE9iamVjdC5nZW9Ub1dvcmxkKHRoaXMuZ2VvbG9jYXRpb24pKTtcbiAgICBjb25zdCB0aWxlU2l6ZSA9IHRoaXMudGlsZVNpemVJbk1ldGVycygpO1xuXG4gICAgZm9yIChsZXQgeCA9IC1NYXBPYmplY3QuSEFMRl9OVU1fVElMRVMsIGggPSAwOyB4IDwgTWFwT2JqZWN0LkhBTEZfTlVNX1RJTEVTOyB4KyspIHtcbiAgICAgIGZvciAobGV0IHkgPSAtTWFwT2JqZWN0LkhBTEZfTlVNX1RJTEVTOyB5IDwgTWFwT2JqZWN0LkhBTEZfTlVNX1RJTEVTOyB5KyssIGgrKykge1xuICAgICAgICBjb25zdCB0aWxlVGV4dHVyZSA9IG5ldyBUSFJFRS5UZXh0dXJlTG9hZGVyKCkubG9hZChgaHR0cHM6Ly9raG1zJHtoICUgNH0uZ29vZ2xlLmNvbS9raC92PTc0OD94PSR7b3JpZ2luVGlsZVswXSArIHh9Jnk9JHtvcmlnaW5UaWxlWzFdICsgeX0mej0ke01hcE9iamVjdC5aT09NfWApO1xuICAgICAgICB0aWxlVGV4dHVyZS5hbmlzb3Ryb3B5ID0gMTY7XG4gICAgICAgIGNvbnN0IHRpbGVHZW9tZXRyeSA9IG5ldyBUSFJFRS5QbGFuZUJ1ZmZlckdlb21ldHJ5KHRpbGVTaXplLCB0aWxlU2l6ZSk7XG4gICAgICAgIGNvbnN0IHRpbGVNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7IG1hcDogdGlsZVRleHR1cmUsIGNvbG9yOiAweGZmZmZmZiB9KTtcbiAgICAgICAgY29uc3QgdGlsZSA9IG5ldyBUSFJFRS5NZXNoKHRpbGVHZW9tZXRyeSwgdGlsZU1hdGVyaWFsKTtcbiAgICAgICAgdGlsZS5yb3RhdGlvbi54ID0gLU1hdGguUEkgLyAyO1xuICAgICAgICB0aWxlLnBvc2l0aW9uLnggPSB4ICogdGlsZVNpemU7XG4gICAgICAgIHRpbGUucG9zaXRpb24ueiA9IHkgKiB0aWxlU2l6ZTtcblxuICAgICAgICB0aGlzLnRpbGVHcm91cC5hZGQodGlsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hZGQodGhpcy50aWxlR3JvdXApO1xuICB9XG5cbiAgdGlsZVNpemVJbk1ldGVycygpIHtcbiAgICAvLyBCZWNhdXNlIG9mIHRoZSBNZXJjYXRvciBwcm9qZWN0aW9uIHVzZWQgdG8gY3JlYXRlIHRoZSB0aWxlIGltYWdlcywgdGhlIHNpemUgb2YgYSB0aWxlIChpbiBtZXRlcnMpIGRlcGVuZHMgb24gdGhlIGxhdGl0dWRlXG4gICAgcmV0dXJuIDIgKiBNYXRoLlBJICogTWFwT2JqZWN0LkVBUlRIX1JBRElVUyAqIE1hdGguY29zKHRoaXMuZ2VvbG9jYXRpb25bMF0gKiBNYXRoLlBJIC8gMTgwKSAvIE1hdGgucG93KDIsIE1hcE9iamVjdC5aT09NKTtcbiAgfVxufVxuXG5NYXBPYmplY3QuRUFSVEhfUkFESVVTID0gNjM3ODEzNzsgLy8gbWV0ZXJzXG5NYXBPYmplY3QuVElMRV9QSVhFTFMgPSAyNTY7IC8vIHBpeGVscyBwZXIgdGlsZVxuTWFwT2JqZWN0LlpPT00gPSAyMDtcbk1hcE9iamVjdC5TQ0FMRSA9IDEgPDwgTWFwT2JqZWN0LlpPT007XG5NYXBPYmplY3QuSEFMRl9OVU1fVElMRVMgPSAyMDtcbiIsIi8qXG4gKiBBdXRvZGVzayAzRFMgdGhyZWVlLmpzIGZpbGUgbG9hZGVyLCBiYXNlZCBvbiBsaWIzZHMuXG4gKlxuICogTG9hZHMgZ2VvbWV0cnkgd2l0aCB1diBhbmQgbWF0ZXJpYWxzIGJhc2ljIHByb3BlcnRpZXMgd2l0aCB0ZXh0dXJlIHN1cHBvcnQuXG4gKlxuICogQGF1dGhvciBAdGVudG9uZVxuICogQGF1dGhvciBAdGlta25pcFxuICogQGNsYXNzIFREU0xvYWRlclxuICogQGNvbnN0cnVjdG9yXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5USFJFRS5URFNMb2FkZXIgPSBmdW5jdGlvbiAoIG1hbmFnZXIgKSB7XG5cblx0dGhpcy5tYW5hZ2VyID0gKCBtYW5hZ2VyICE9PSB1bmRlZmluZWQgKSA/IG1hbmFnZXIgOiBUSFJFRS5EZWZhdWx0TG9hZGluZ01hbmFnZXI7XG5cdHRoaXMuZGVidWcgPSBmYWxzZTtcblxuXHR0aGlzLmdyb3VwID0gbnVsbDtcblx0dGhpcy5wb3NpdGlvbiA9IDA7XG5cblx0dGhpcy5tYXRlcmlhbHMgPSBbXTtcblx0dGhpcy5tZXNoZXMgPSBbXTtcblxufTtcblxuVEhSRUUuVERTTG9hZGVyLnByb3RvdHlwZSA9IHtcblxuXHRjb25zdHJ1Y3RvcjogVEhSRUUuVERTTG9hZGVyLFxuXG5cdC8qKlxuXHQgKiBMb2FkIDNkcyBmaWxlIGZyb20gdXJsLlxuXHQgKlxuXHQgKiBAbWV0aG9kIGxvYWRcblx0ICogQHBhcmFtIHtbdHlwZV19IHVybCBVUkwgZm9yIHRoZSBmaWxlLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbkxvYWQgb25Mb2FkIGNhbGxiYWNrLCByZWNlaXZlcyBncm91cCBPYmplY3QzRCBhcyBhcmd1bWVudC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gb25Qcm9ncmVzcyBvblByb2dyZXNzIGNhbGxiYWNrLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvbkVycm9yIG9uRXJyb3IgY2FsbGJhY2suXG5cdCAqL1xuXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xuXG5cdFx0dmFyIHNjb3BlID0gdGhpcztcblxuXHRcdHZhciBwYXRoID0gdGhpcy5wYXRoICE9PSB1bmRlZmluZWQgPyB0aGlzLnBhdGggOiBUSFJFRS5Mb2FkZXJVdGlscy5leHRyYWN0VXJsQmFzZSggdXJsICk7XG5cblx0XHR2YXIgbG9hZGVyID0gbmV3IFRIUkVFLkZpbGVMb2FkZXIoIHRoaXMubWFuYWdlciApO1xuXG5cdFx0bG9hZGVyLnNldFJlc3BvbnNlVHlwZSggJ2FycmF5YnVmZmVyJyApO1xuXG5cdFx0bG9hZGVyLmxvYWQoIHVybCwgZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0XHRvbkxvYWQoIHNjb3BlLnBhcnNlKCBkYXRhLCBwYXRoICkgKTtcblxuXHRcdH0sIG9uUHJvZ3Jlc3MsIG9uRXJyb3IgKTtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBQYXJzZSBhcnJheWJ1ZmZlciBkYXRhIGFuZCBsb2FkIDNkcyBmaWxlLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHBhcnNlXG5cdCAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5YnVmZmVyIEFycmF5YnVmZmVyIGRhdGEgdG8gYmUgbG9hZGVkLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gcGF0aCBQYXRoIGZvciBleHRlcm5hbCByZXNvdXJjZXMuXG5cdCAqIEByZXR1cm4ge09iamVjdDNEfSBHcm91cCBsb2FkZWQgZnJvbSAzZHMgZmlsZS5cblx0ICovXG5cdHBhcnNlOiBmdW5jdGlvbiAoIGFycmF5YnVmZmVyLCBwYXRoICkge1xuXG5cdFx0dGhpcy5ncm91cCA9IG5ldyBUSFJFRS5Hcm91cCgpO1xuXHRcdHRoaXMucG9zaXRpb24gPSAwO1xuXHRcdHRoaXMubWF0ZXJpYWxzID0gW107XG5cdFx0dGhpcy5tZXNoZXMgPSBbXTtcblxuXHRcdHRoaXMucmVhZEZpbGUoIGFycmF5YnVmZmVyLCBwYXRoICk7XG5cblx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCB0aGlzLm1lc2hlcy5sZW5ndGg7IGkgKysgKSB7XG5cblx0XHRcdHRoaXMuZ3JvdXAuYWRkKCB0aGlzLm1lc2hlc1sgaSBdICk7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5ncm91cDtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBEZWNvZGUgZmlsZSBjb250ZW50IHRvIHJlYWQgM2RzIGRhdGEuXG5cdCAqXG5cdCAqIEBtZXRob2QgcmVhZEZpbGVcblx0ICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlidWZmZXIgQXJyYXlidWZmZXIgZGF0YSB0byBiZSBsb2FkZWQuXG5cdCAqL1xuXHRyZWFkRmlsZTogZnVuY3Rpb24gKCBhcnJheWJ1ZmZlciwgcGF0aCApIHtcblxuXHRcdHZhciBkYXRhID0gbmV3IERhdGFWaWV3KCBhcnJheWJ1ZmZlciApO1xuXHRcdHZhciBjaHVuayA9IHRoaXMucmVhZENodW5rKCBkYXRhICk7XG5cblx0XHRpZiAoIGNodW5rLmlkID09PSBNTElCTUFHSUMgfHwgY2h1bmsuaWQgPT09IENNQUdJQyB8fCBjaHVuay5pZCA9PT0gTTNETUFHSUMgKSB7XG5cblx0XHRcdHZhciBuZXh0ID0gdGhpcy5uZXh0Q2h1bmsoIGRhdGEsIGNodW5rICk7XG5cblx0XHRcdHdoaWxlICggbmV4dCAhPT0gMCApIHtcblxuXHRcdFx0XHRpZiAoIG5leHQgPT09IE0zRF9WRVJTSU9OICkge1xuXG5cdFx0XHRcdFx0dmFyIHZlcnNpb24gPSB0aGlzLnJlYWREV29yZCggZGF0YSApO1xuXHRcdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnM0RTIGZpbGUgdmVyc2lvbjogJyArIHZlcnNpb24gKTtcblxuXHRcdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNREFUQSApIHtcblxuXHRcdFx0XHRcdHRoaXMucmVzZXRQb3NpdGlvbiggZGF0YSApO1xuXHRcdFx0XHRcdHRoaXMucmVhZE1lc2hEYXRhKCBkYXRhLCBwYXRoICk7XG5cblx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnVW5rbm93biBtYWluIGNodW5rOiAnICsgbmV4dC50b1N0cmluZyggMTYgKSApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRuZXh0ID0gdGhpcy5uZXh0Q2h1bmsoIGRhdGEsIGNodW5rICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnUGFyc2VkICcgKyB0aGlzLm1lc2hlcy5sZW5ndGggKyAnIG1lc2hlcycgKTtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZWFkIG1lc2ggZGF0YSBjaHVuay5cblx0ICpcblx0ICogQG1ldGhvZCByZWFkTWVzaERhdGFcblx0ICogQHBhcmFtIHtEYXRhdmlld30gZGF0YSBEYXRhdmlldyBpbiB1c2UuXG5cdCAqL1xuXHRyZWFkTWVzaERhdGE6IGZ1bmN0aW9uICggZGF0YSwgcGF0aCApIHtcblxuXHRcdHZhciBjaHVuayA9IHRoaXMucmVhZENodW5rKCBkYXRhICk7XG5cdFx0dmFyIG5leHQgPSB0aGlzLm5leHRDaHVuayggZGF0YSwgY2h1bmsgKTtcblxuXHRcdHdoaWxlICggbmV4dCAhPT0gMCApIHtcblxuXHRcdFx0aWYgKCBuZXh0ID09PSBNRVNIX1ZFUlNJT04gKSB7XG5cblx0XHRcdFx0dmFyIHZlcnNpb24gPSArIHRoaXMucmVhZERXb3JkKCBkYXRhICk7XG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnTWVzaCBWZXJzaW9uOiAnICsgdmVyc2lvbiApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVNURVJfU0NBTEUgKSB7XG5cblx0XHRcdFx0dmFyIHNjYWxlID0gdGhpcy5yZWFkRmxvYXQoIGRhdGEgKTtcblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICdNYXN0ZXIgc2NhbGU6ICcgKyBzY2FsZSApO1xuXHRcdFx0XHR0aGlzLmdyb3VwLnNjYWxlLnNldCggc2NhbGUsIHNjYWxlLCBzY2FsZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBOQU1FRF9PQkpFQ1QgKSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICdOYW1lZCBPYmplY3QnICk7XG5cdFx0XHRcdHRoaXMucmVzZXRQb3NpdGlvbiggZGF0YSApO1xuXHRcdFx0XHR0aGlzLnJlYWROYW1lZE9iamVjdCggZGF0YSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfRU5UUlkgKSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICdNYXRlcmlhbCcgKTtcblx0XHRcdFx0dGhpcy5yZXNldFBvc2l0aW9uKCBkYXRhICk7XG5cdFx0XHRcdHRoaXMucmVhZE1hdGVyaWFsRW50cnkoIGRhdGEsIHBhdGggKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJ1Vua25vd24gTURBVEEgY2h1bms6ICcgKyBuZXh0LnRvU3RyaW5nKCAxNiApICk7XG5cblx0XHRcdH1cblxuXHRcdFx0bmV4dCA9IHRoaXMubmV4dENodW5rKCBkYXRhLCBjaHVuayApO1xuXG5cdFx0fVxuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlYWQgbmFtZWQgb2JqZWN0IGNodW5rLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHJlYWROYW1lZE9iamVjdFxuXHQgKiBAcGFyYW0ge0RhdGF2aWV3fSBkYXRhIERhdGF2aWV3IGluIHVzZS5cblx0ICovXG5cdHJlYWROYW1lZE9iamVjdDogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIGNodW5rID0gdGhpcy5yZWFkQ2h1bmsoIGRhdGEgKTtcblx0XHR2YXIgbmFtZSA9IHRoaXMucmVhZFN0cmluZyggZGF0YSwgNjQgKTtcblx0XHRjaHVuay5jdXIgPSB0aGlzLnBvc2l0aW9uO1xuXG5cdFx0dmFyIG5leHQgPSB0aGlzLm5leHRDaHVuayggZGF0YSwgY2h1bmsgKTtcblx0XHR3aGlsZSAoIG5leHQgIT09IDAgKSB7XG5cblx0XHRcdGlmICggbmV4dCA9PT0gTl9UUklfT0JKRUNUICkge1xuXG5cdFx0XHRcdHRoaXMucmVzZXRQb3NpdGlvbiggZGF0YSApO1xuXHRcdFx0XHR2YXIgbWVzaCA9IHRoaXMucmVhZE1lc2goIGRhdGEgKTtcblx0XHRcdFx0bWVzaC5uYW1lID0gbmFtZTtcblx0XHRcdFx0dGhpcy5tZXNoZXMucHVzaCggbWVzaCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnVW5rbm93biBuYW1lZCBvYmplY3QgY2h1bms6ICcgKyBuZXh0LnRvU3RyaW5nKCAxNiApICk7XG5cblx0XHRcdH1cblxuXHRcdFx0bmV4dCA9IHRoaXMubmV4dENodW5rKCBkYXRhLCBjaHVuayApO1xuXG5cdFx0fVxuXG5cdFx0dGhpcy5lbmRDaHVuayggY2h1bmsgKTtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZWFkIG1hdGVyaWFsIGRhdGEgY2h1bmsgYW5kIGFkZCBpdCB0byB0aGUgbWF0ZXJpYWwgbGlzdC5cblx0ICpcblx0ICogQG1ldGhvZCByZWFkTWF0ZXJpYWxFbnRyeVxuXHQgKiBAcGFyYW0ge0RhdGF2aWV3fSBkYXRhIERhdGF2aWV3IGluIHVzZS5cblx0ICovXG5cdHJlYWRNYXRlcmlhbEVudHJ5OiBmdW5jdGlvbiAoIGRhdGEsIHBhdGggKSB7XG5cblx0XHR2YXIgY2h1bmsgPSB0aGlzLnJlYWRDaHVuayggZGF0YSApO1xuXHRcdHZhciBuZXh0ID0gdGhpcy5uZXh0Q2h1bmsoIGRhdGEsIGNodW5rICk7XG5cdFx0dmFyIG1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsKCk7XG5cblx0XHR3aGlsZSAoIG5leHQgIT09IDAgKSB7XG5cblx0XHRcdGlmICggbmV4dCA9PT0gTUFUX05BTUUgKSB7XG5cblx0XHRcdFx0bWF0ZXJpYWwubmFtZSA9IHRoaXMucmVhZFN0cmluZyggZGF0YSwgNjQgKTtcblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICBOYW1lOiAnICsgbWF0ZXJpYWwubmFtZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfV0lSRSApIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIFdpcmVmcmFtZScgKTtcblx0XHRcdFx0bWF0ZXJpYWwud2lyZWZyYW1lID0gdHJ1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggbmV4dCA9PT0gTUFUX1dJUkVfU0laRSApIHtcblxuXHRcdFx0XHR2YXIgdmFsdWUgPSB0aGlzLnJlYWRCeXRlKCBkYXRhICk7XG5cdFx0XHRcdG1hdGVyaWFsLndpcmVmcmFtZUxpbmV3aWR0aCA9IHZhbHVlO1xuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIFdpcmVmcmFtZSBUaGlja25lc3M6ICcgKyB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfVFdPX1NJREUgKSB7XG5cblx0XHRcdFx0bWF0ZXJpYWwuc2lkZSA9IFRIUkVFLkRvdWJsZVNpZGU7XG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnICAgRG91YmxlU2lkZWQnICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG5leHQgPT09IE1BVF9BRERJVElWRSApIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIEFkZGl0aXZlIEJsZW5kaW5nJyApO1xuXHRcdFx0XHRtYXRlcmlhbC5ibGVuZGluZyA9IFRIUkVFLkFkZGl0aXZlQmxlbmRpbmc7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG5leHQgPT09IE1BVF9ESUZGVVNFICkge1xuXG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnICAgRGlmZnVzZSBDb2xvcicgKTtcblx0XHRcdFx0bWF0ZXJpYWwuY29sb3IgPSB0aGlzLnJlYWRDb2xvciggZGF0YSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfU1BFQ1VMQVIgKSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICBTcGVjdWxhciBDb2xvcicgKTtcblx0XHRcdFx0bWF0ZXJpYWwuc3BlY3VsYXIgPSB0aGlzLnJlYWRDb2xvciggZGF0YSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfQU1CSUVOVCApIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIEFtYmllbnQgY29sb3InICk7XG5cdFx0XHRcdG1hdGVyaWFsLmNvbG9yID0gdGhpcy5yZWFkQ29sb3IoIGRhdGEgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggbmV4dCA9PT0gTUFUX1NISU5JTkVTUyApIHtcblxuXHRcdFx0XHR2YXIgc2hpbmluZXNzID0gdGhpcy5yZWFkV29yZCggZGF0YSApO1xuXHRcdFx0XHRtYXRlcmlhbC5zaGluaW5lc3MgPSBzaGluaW5lc3M7XG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnICAgU2hpbmluZXNzIDogJyArIHNoaW5pbmVzcyApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfVEVYTUFQICkge1xuXG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnICAgQ29sb3JNYXAnICk7XG5cdFx0XHRcdHRoaXMucmVzZXRQb3NpdGlvbiggZGF0YSApO1xuXHRcdFx0XHRtYXRlcmlhbC5tYXAgPSB0aGlzLnJlYWRNYXAoIGRhdGEsIHBhdGggKTtcblxuXHRcdFx0fSBlbHNlIGlmICggbmV4dCA9PT0gTUFUX0JVTVBNQVAgKSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICBCdW1wTWFwJyApO1xuXHRcdFx0XHR0aGlzLnJlc2V0UG9zaXRpb24oIGRhdGEgKTtcblx0XHRcdFx0bWF0ZXJpYWwuYnVtcE1hcCA9IHRoaXMucmVhZE1hcCggZGF0YSwgcGF0aCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfT1BBQ01BUCApIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIE9wYWNpdHlNYXAnICk7XG5cdFx0XHRcdHRoaXMucmVzZXRQb3NpdGlvbiggZGF0YSApO1xuXHRcdFx0XHRtYXRlcmlhbC5hbHBoYU1hcCA9IHRoaXMucmVhZE1hcCggZGF0YSwgcGF0aCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfU1BFQ01BUCApIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIFNwZWN1bGFyTWFwJyApO1xuXHRcdFx0XHR0aGlzLnJlc2V0UG9zaXRpb24oIGRhdGEgKTtcblx0XHRcdFx0bWF0ZXJpYWwuc3BlY3VsYXJNYXAgPSB0aGlzLnJlYWRNYXAoIGRhdGEsIHBhdGggKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIFVua25vd24gbWF0ZXJpYWwgY2h1bms6ICcgKyBuZXh0LnRvU3RyaW5nKCAxNiApICk7XG5cblx0XHRcdH1cblxuXHRcdFx0bmV4dCA9IHRoaXMubmV4dENodW5rKCBkYXRhLCBjaHVuayApO1xuXG5cdFx0fVxuXG5cdFx0dGhpcy5lbmRDaHVuayggY2h1bmsgKTtcblxuXHRcdHRoaXMubWF0ZXJpYWxzWyBtYXRlcmlhbC5uYW1lIF0gPSBtYXRlcmlhbDtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZWFkIG1lc2ggZGF0YSBjaHVuay5cblx0ICpcblx0ICogQG1ldGhvZCByZWFkTWVzaFxuXHQgKiBAcGFyYW0ge0RhdGF2aWV3fSBkYXRhIERhdGF2aWV3IGluIHVzZS5cblx0ICovXG5cdHJlYWRNZXNoOiBmdW5jdGlvbiAoIGRhdGEgKSB7XG5cblx0XHR2YXIgY2h1bmsgPSB0aGlzLnJlYWRDaHVuayggZGF0YSApO1xuXHRcdHZhciBuZXh0ID0gdGhpcy5uZXh0Q2h1bmsoIGRhdGEsIGNodW5rICk7XG5cblx0XHR2YXIgdXNlQnVmZmVyR2VvbWV0cnkgPSBmYWxzZTtcblx0XHR2YXIgZ2VvbWV0cnkgPSBudWxsO1xuXHRcdHZhciB1dnMgPSBbXTtcblxuXHRcdGlmICggdXNlQnVmZmVyR2VvbWV0cnkgKSB7XG5cblx0XHRcdGdlb21ldHJ5ID0gbmV3IFRIUkVFLkJ1ZmZlckdlb21ldHJ5KCk7XG5cblx0XHR9XHRlbHNlIHtcblxuXHRcdFx0Z2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnkoKTtcblxuXHRcdH1cblxuXHRcdHZhciBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbCgpO1xuXHRcdHZhciBtZXNoID0gbmV3IFRIUkVFLk1lc2goIGdlb21ldHJ5LCBtYXRlcmlhbCApO1xuXHRcdG1lc2gubmFtZSA9ICdtZXNoJztcblxuXHRcdHdoaWxlICggbmV4dCAhPT0gMCApIHtcblxuXHRcdFx0aWYgKCBuZXh0ID09PSBQT0lOVF9BUlJBWSApIHtcblxuXHRcdFx0XHR2YXIgcG9pbnRzID0gdGhpcy5yZWFkV29yZCggZGF0YSApO1xuXG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnICAgVmVydGV4OiAnICsgcG9pbnRzICk7XG5cblx0XHRcdFx0Ly9CdWZmZXJHZW9tZXRyeVxuXG5cdFx0XHRcdGlmICggdXNlQnVmZmVyR2VvbWV0cnkgKVx0e1xuXG5cdFx0XHRcdFx0dmFyIHZlcnRpY2VzID0gW107XG5cdFx0XHRcdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgcG9pbnRzOyBpICsrIClcdFx0e1xuXG5cdFx0XHRcdFx0XHR2ZXJ0aWNlcy5wdXNoKCB0aGlzLnJlYWRGbG9hdCggZGF0YSApICk7XG5cdFx0XHRcdFx0XHR2ZXJ0aWNlcy5wdXNoKCB0aGlzLnJlYWRGbG9hdCggZGF0YSApICk7XG5cdFx0XHRcdFx0XHR2ZXJ0aWNlcy5wdXNoKCB0aGlzLnJlYWRGbG9hdCggZGF0YSApICk7XG5cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUoIG5ldyBGbG9hdDMyQXJyYXkoIHZlcnRpY2VzICksIDMgKSApO1xuXG5cdFx0XHRcdH0gZWxzZVx0eyAvL0dlb21ldHJ5XG5cblx0XHRcdFx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBwb2ludHM7IGkgKysgKVx0XHR7XG5cblx0XHRcdFx0XHRcdGdlb21ldHJ5LnZlcnRpY2VzLnB1c2goIG5ldyBUSFJFRS5WZWN0b3IzKCB0aGlzLnJlYWRGbG9hdCggZGF0YSApLCB0aGlzLnJlYWRGbG9hdCggZGF0YSApLCB0aGlzLnJlYWRGbG9hdCggZGF0YSApICkgKTtcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cblx0XHRcdH0gZWxzZSBpZiAoIG5leHQgPT09IEZBQ0VfQVJSQVkgKSB7XG5cblx0XHRcdFx0dGhpcy5yZXNldFBvc2l0aW9uKCBkYXRhICk7XG5cdFx0XHRcdHRoaXMucmVhZEZhY2VBcnJheSggZGF0YSwgbWVzaCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBURVhfVkVSVFMgKSB7XG5cblx0XHRcdFx0dmFyIHRleGVscyA9IHRoaXMucmVhZFdvcmQoIGRhdGEgKTtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIFVWOiAnICsgdGV4ZWxzICk7XG5cblx0XHRcdFx0Ly9CdWZmZXJHZW9tZXRyeVxuXG5cdFx0XHRcdGlmICggdXNlQnVmZmVyR2VvbWV0cnkgKVx0e1xuXG5cdFx0XHRcdFx0dmFyIHV2cyA9IFtdO1xuXHRcdFx0XHRcdGZvciAoIHZhciBpID0gMDsgaSA8IHRleGVsczsgaSArKyApXHRcdHtcblxuXHRcdFx0XHRcdFx0dXZzLnB1c2goIHRoaXMucmVhZEZsb2F0KCBkYXRhICkgKTtcblx0XHRcdFx0XHRcdHV2cy5wdXNoKCB0aGlzLnJlYWRGbG9hdCggZGF0YSApICk7XG5cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKCBuZXcgRmxvYXQzMkFycmF5KCB1dnMgKSwgMiApICk7XG5cblx0XHRcdFx0fSBlbHNlIHsgLy9HZW9tZXRyeVxuXG5cdFx0XHRcdFx0dXZzID0gW107XG5cdFx0XHRcdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgdGV4ZWxzOyBpICsrIClcdFx0e1xuXG5cdFx0XHRcdFx0XHR1dnMucHVzaCggbmV3IFRIUkVFLlZlY3RvcjIoIHRoaXMucmVhZEZsb2F0KCBkYXRhICksIHRoaXMucmVhZEZsb2F0KCBkYXRhICkgKSApO1xuXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdH1cblxuXHRcdFx0fSBlbHNlIGlmICggbmV4dCA9PT0gTUVTSF9NQVRSSVggKSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICBUcmFuZm9ybWF0aW9uIE1hdHJpeCAoVE9ETyknICk7XG5cblx0XHRcdFx0dmFyIHZhbHVlcyA9IFtdO1xuXHRcdFx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCAxMjsgaSArKyApIHtcblxuXHRcdFx0XHRcdHZhbHVlc1sgaSBdID0gdGhpcy5yZWFkRmxvYXQoIGRhdGEgKTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFyIG1hdHJpeCA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5cblx0XHRcdFx0Ly9YIExpbmVcblx0XHRcdFx0bWF0cml4LmVsZW1lbnRzWyAwIF0gPSB2YWx1ZXNbIDAgXTtcblx0XHRcdFx0bWF0cml4LmVsZW1lbnRzWyAxIF0gPSB2YWx1ZXNbIDYgXTtcblx0XHRcdFx0bWF0cml4LmVsZW1lbnRzWyAyIF0gPSB2YWx1ZXNbIDMgXTtcblx0XHRcdFx0bWF0cml4LmVsZW1lbnRzWyAzIF0gPSB2YWx1ZXNbIDkgXTtcblxuXHRcdFx0XHQvL1kgTGluZVxuXHRcdFx0XHRtYXRyaXguZWxlbWVudHNbIDQgXSA9IHZhbHVlc1sgMiBdO1xuXHRcdFx0XHRtYXRyaXguZWxlbWVudHNbIDUgXSA9IHZhbHVlc1sgOCBdO1xuXHRcdFx0XHRtYXRyaXguZWxlbWVudHNbIDYgXSA9IHZhbHVlc1sgNSBdO1xuXHRcdFx0XHRtYXRyaXguZWxlbWVudHNbIDcgXSA9IHZhbHVlc1sgMTEgXTtcblxuXHRcdFx0XHQvL1ogTGluZVxuXHRcdFx0XHRtYXRyaXguZWxlbWVudHNbIDggXSA9IHZhbHVlc1sgMSBdO1xuXHRcdFx0XHRtYXRyaXguZWxlbWVudHNbIDkgXSA9IHZhbHVlc1sgNyBdO1xuXHRcdFx0XHRtYXRyaXguZWxlbWVudHNbIDEwIF0gPSB2YWx1ZXNbIDQgXTtcblx0XHRcdFx0bWF0cml4LmVsZW1lbnRzWyAxMSBdID0gdmFsdWVzWyAxMCBdO1xuXG5cdFx0XHRcdC8vVyBMaW5lXG5cdFx0XHRcdG1hdHJpeC5lbGVtZW50c1sgMTIgXSA9IDA7XG5cdFx0XHRcdG1hdHJpeC5lbGVtZW50c1sgMTMgXSA9IDA7XG5cdFx0XHRcdG1hdHJpeC5lbGVtZW50c1sgMTQgXSA9IDA7XG5cdFx0XHRcdG1hdHJpeC5lbGVtZW50c1sgMTUgXSA9IDE7XG5cblx0XHRcdFx0bWF0cml4LnRyYW5zcG9zZSgpO1xuXG5cdFx0XHRcdHZhciBpbnZlcnNlID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcblx0XHRcdFx0aW52ZXJzZS5nZXRJbnZlcnNlKCBtYXRyaXgsIHRydWUgKTtcblx0XHRcdFx0Z2VvbWV0cnkuYXBwbHlNYXRyaXgoIGludmVyc2UgKTtcblxuXHRcdFx0XHRtYXRyaXguZGVjb21wb3NlKCBtZXNoLnBvc2l0aW9uLCBtZXNoLnF1YXRlcm5pb24sIG1lc2guc2NhbGUgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgIFVua25vd24gbWVzaCBjaHVuazogJyArIG5leHQudG9TdHJpbmcoIDE2ICkgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRuZXh0ID0gdGhpcy5uZXh0Q2h1bmsoIGRhdGEsIGNodW5rICk7XG5cblx0XHR9XG5cblx0XHR0aGlzLmVuZENodW5rKCBjaHVuayApO1xuXG5cdFx0aWYgKCAhIHVzZUJ1ZmZlckdlb21ldHJ5ICkge1xuXG5cdFx0XHQvL2dlb21ldHJ5LmZhY2VWZXJ0ZXhVdnNbMF1bZmFjZUluZGV4XVt2ZXJ0ZXhJbmRleF1cblxuXHRcdFx0aWYgKCB1dnMubGVuZ3RoID4gMCApIHtcblxuXHRcdFx0XHR2YXIgZmFjZVVWID0gW107XG5cblx0XHRcdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgZ2VvbWV0cnkuZmFjZXMubGVuZ3RoOyBpICsrICkge1xuXG5cdFx0XHRcdFx0ZmFjZVVWLnB1c2goIFsgdXZzWyBnZW9tZXRyeS5mYWNlc1sgaSBdLmEgXSwgdXZzWyBnZW9tZXRyeS5mYWNlc1sgaSBdLmIgXSwgdXZzWyBnZW9tZXRyeS5mYWNlc1sgaSBdLmMgXSBdICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGdlb21ldHJ5LmZhY2VWZXJ0ZXhVdnNbIDAgXSA9IGZhY2VVVjtcblxuXHRcdFx0fVxuXG5cdFx0XHRnZW9tZXRyeS5jb21wdXRlVmVydGV4Tm9ybWFscygpO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1lc2g7XG5cblx0fSxcblxuXHQvKipcblx0ICogUmVhZCBmYWNlIGFycmF5IGRhdGEgY2h1bmsuXG5cdCAqXG5cdCAqIEBtZXRob2QgcmVhZEZhY2VBcnJheVxuXHQgKiBAcGFyYW0ge0RhdGF2aWV3fSBkYXRhIERhdGF2aWV3IGluIHVzZS5cblx0ICogQHBhcmFtIHtNZXNofSBtZXNoIE1lc2ggdG8gYmUgZmlsbGVkIHdpdGggdGhlIGRhdGEgcmVhZC5cblx0ICovXG5cdHJlYWRGYWNlQXJyYXk6IGZ1bmN0aW9uICggZGF0YSwgbWVzaCApIHtcblxuXHRcdHZhciBjaHVuayA9IHRoaXMucmVhZENodW5rKCBkYXRhICk7XG5cdFx0dmFyIGZhY2VzID0gdGhpcy5yZWFkV29yZCggZGF0YSApO1xuXG5cdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICBGYWNlczogJyArIGZhY2VzICk7XG5cblx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBmYWNlczsgKysgaSApIHtcblxuXHRcdFx0bWVzaC5nZW9tZXRyeS5mYWNlcy5wdXNoKCBuZXcgVEhSRUUuRmFjZTMoIHRoaXMucmVhZFdvcmQoIGRhdGEgKSwgdGhpcy5yZWFkV29yZCggZGF0YSApLCB0aGlzLnJlYWRXb3JkKCBkYXRhICkgKSApO1xuXG5cdFx0XHR2YXIgdmlzaWJpbGl0eSA9IHRoaXMucmVhZFdvcmQoIGRhdGEgKTtcblxuXHRcdH1cblxuXHRcdC8vVGhlIHJlc3Qgb2YgdGhlIEZBQ0VfQVJSQVkgY2h1bmsgaXMgc3ViY2h1bmtzXG5cblx0XHR3aGlsZSAoIHRoaXMucG9zaXRpb24gPCBjaHVuay5lbmQgKSB7XG5cblx0XHRcdHZhciBjaHVuayA9IHRoaXMucmVhZENodW5rKCBkYXRhICk7XG5cblx0XHRcdGlmICggY2h1bmsuaWQgPT09IE1TSF9NQVRfR1JPVVAgKSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICAgICBNYXRlcmlhbCBHcm91cCcgKTtcblxuXHRcdFx0XHR0aGlzLnJlc2V0UG9zaXRpb24oIGRhdGEgKTtcblxuXHRcdFx0XHR2YXIgZ3JvdXAgPSB0aGlzLnJlYWRNYXRlcmlhbEdyb3VwKCBkYXRhICk7XG5cblx0XHRcdFx0dmFyIG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbHNbIGdyb3VwLm5hbWUgXTtcblxuXHRcdFx0XHRpZiAoIG1hdGVyaWFsICE9PSB1bmRlZmluZWQgKVx0e1xuXG5cdFx0XHRcdFx0bWVzaC5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuXG5cdFx0XHRcdFx0aWYgKCBtYXRlcmlhbC5uYW1lID09PSAnJyApXHRcdHtcblxuXHRcdFx0XHRcdFx0bWF0ZXJpYWwubmFtZSA9IG1lc2gubmFtZTtcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICAgICBVbmtub3duIGZhY2UgYXJyYXkgY2h1bms6ICcgKyBjaHVuay50b1N0cmluZyggMTYgKSApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZW5kQ2h1bmsoIGNodW5rICk7XG5cblx0XHR9XG5cblx0XHR0aGlzLmVuZENodW5rKCBjaHVuayApO1xuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlYWQgdGV4dHVyZSBtYXAgZGF0YSBjaHVuay5cblx0ICpcblx0ICogQG1ldGhvZCByZWFkTWFwXG5cdCAqIEBwYXJhbSB7RGF0YXZpZXd9IGRhdGEgRGF0YXZpZXcgaW4gdXNlLlxuXHQgKiBAcmV0dXJuIHtUZXh0dXJlfSBUZXh0dXJlIHJlYWQgZnJvbSB0aGlzIGRhdGEgY2h1bmsuXG5cdCAqL1xuXHRyZWFkTWFwOiBmdW5jdGlvbiAoIGRhdGEsIHBhdGggKSB7XG4gICAgaWYgKHRoaXMuc2tpcE1hcHMpIHJldHVybiBudWxsO1xuXG5cdFx0dmFyIGNodW5rID0gdGhpcy5yZWFkQ2h1bmsoIGRhdGEgKTtcblx0XHR2YXIgbmV4dCA9IHRoaXMubmV4dENodW5rKCBkYXRhLCBjaHVuayApO1xuXHRcdHZhciB0ZXh0dXJlID0ge307XG5cblx0XHR2YXIgbG9hZGVyID0gbmV3IFRIUkVFLlRleHR1cmVMb2FkZXIoIHRoaXMubWFuYWdlciApO1xuXHRcdGxvYWRlci5zZXRQYXRoKCBwYXRoICk7XG5cblx0XHR3aGlsZSAoIG5leHQgIT09IDAgKSB7XG5cblx0XHRcdGlmICggbmV4dCA9PT0gTUFUX01BUE5BTUUgKSB7XG5cblx0XHRcdFx0dmFyIG5hbWUgPSB0aGlzLnJlYWRTdHJpbmcoIGRhdGEsIDEyOCApO1xuXHRcdFx0XHR0ZXh0dXJlID0gbG9hZGVyLmxvYWQoIG5hbWUgKTtcblxuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgICAgIEZpbGU6ICcgKyBwYXRoICsgbmFtZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBuZXh0ID09PSBNQVRfTUFQX1VPRkZTRVQgKSB7XG5cblx0XHRcdFx0dGV4dHVyZS5vZmZzZXQueCA9IHRoaXMucmVhZEZsb2F0KCBkYXRhICk7XG5cdFx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnICAgICAgT2Zmc2V0WDogJyArIHRleHR1cmUub2Zmc2V0LnggKTtcblxuXHRcdFx0fSBlbHNlIGlmICggbmV4dCA9PT0gTUFUX01BUF9WT0ZGU0VUICkge1xuXG5cdFx0XHRcdHRleHR1cmUub2Zmc2V0LnkgPSB0aGlzLnJlYWRGbG9hdCggZGF0YSApO1xuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgICAgIE9mZnNldFk6ICcgKyB0ZXh0dXJlLm9mZnNldC55ICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG5leHQgPT09IE1BVF9NQVBfVVNDQUxFICkge1xuXG5cdFx0XHRcdHRleHR1cmUucmVwZWF0LnggPSB0aGlzLnJlYWRGbG9hdCggZGF0YSApO1xuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgICAgIFJlcGVhdFg6ICcgKyB0ZXh0dXJlLnJlcGVhdC54ICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG5leHQgPT09IE1BVF9NQVBfVlNDQUxFICkge1xuXG5cdFx0XHRcdHRleHR1cmUucmVwZWF0LnkgPSB0aGlzLnJlYWRGbG9hdCggZGF0YSApO1xuXHRcdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgICAgIFJlcGVhdFk6ICcgKyB0ZXh0dXJlLnJlcGVhdC55ICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICAgICBVbmtub3duIG1hcCBjaHVuazogJyArIG5leHQudG9TdHJpbmcoIDE2ICkgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRuZXh0ID0gdGhpcy5uZXh0Q2h1bmsoIGRhdGEsIGNodW5rICk7XG5cblx0XHR9XG5cblx0XHR0aGlzLmVuZENodW5rKCBjaHVuayApO1xuXG5cdFx0cmV0dXJuIHRleHR1cmU7XG5cblx0fSxcblxuXHQvKipcblx0ICogUmVhZCBtYXRlcmlhbCBncm91cCBkYXRhIGNodW5rLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHJlYWRNYXRlcmlhbEdyb3VwXG5cdCAqIEBwYXJhbSB7RGF0YXZpZXd9IGRhdGEgRGF0YXZpZXcgaW4gdXNlLlxuXHQgKiBAcmV0dXJuIHtPYmplY3R9IE9iamVjdCB3aXRoIG5hbWUgYW5kIGluZGV4IG9mIHRoZSBvYmplY3QuXG5cdCAqL1xuXHRyZWFkTWF0ZXJpYWxHcm91cDogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIGNodW5rID0gdGhpcy5yZWFkQ2h1bmsoIGRhdGEgKTtcblx0XHR2YXIgbmFtZSA9IHRoaXMucmVhZFN0cmluZyggZGF0YSwgNjQgKTtcblx0XHR2YXIgbnVtRmFjZXMgPSB0aGlzLnJlYWRXb3JkKCBkYXRhICk7XG5cblx0XHR0aGlzLmRlYnVnTWVzc2FnZSggJyAgICAgICAgIE5hbWU6ICcgKyBuYW1lICk7XG5cdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICAgICAgICBGYWNlczogJyArIG51bUZhY2VzICk7XG5cblx0XHR2YXIgaW5kZXggPSBbXTtcblx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBudW1GYWNlczsgKysgaSApIHtcblxuXHRcdFx0aW5kZXgucHVzaCggdGhpcy5yZWFkV29yZCggZGF0YSApICk7XG5cblx0XHR9XG5cblx0XHRyZXR1cm4geyBuYW1lOiBuYW1lLCBpbmRleDogaW5kZXggfTtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZWFkIGEgY29sb3IgdmFsdWUuXG5cdCAqXG5cdCAqIEBtZXRob2QgcmVhZENvbG9yXG5cdCAqIEBwYXJhbSB7RGF0YVZpZXd9IGRhdGEgRGF0YXZpZXcuXG5cdCAqIEByZXR1cm4ge0NvbG9yfSBDb2xvciB2YWx1ZSByZWFkLi5cblx0ICovXG5cdHJlYWRDb2xvcjogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIGNodW5rID0gdGhpcy5yZWFkQ2h1bmsoIGRhdGEgKTtcblx0XHR2YXIgY29sb3IgPSBuZXcgVEhSRUUuQ29sb3IoKTtcblxuXHRcdGlmICggY2h1bmsuaWQgPT09IENPTE9SXzI0IHx8IGNodW5rLmlkID09PSBMSU5fQ09MT1JfMjQgKSB7XG5cblx0XHRcdHZhciByID0gdGhpcy5yZWFkQnl0ZSggZGF0YSApO1xuXHRcdFx0dmFyIGcgPSB0aGlzLnJlYWRCeXRlKCBkYXRhICk7XG5cdFx0XHR2YXIgYiA9IHRoaXMucmVhZEJ5dGUoIGRhdGEgKTtcblxuXHRcdFx0Y29sb3Iuc2V0UkdCKCByIC8gMjU1LCBnIC8gMjU1LCBiIC8gMjU1ICk7XG5cblx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnICAgICAgQ29sb3I6ICcgKyBjb2xvci5yICsgJywgJyArIGNvbG9yLmcgKyAnLCAnICsgY29sb3IuYiApO1xuXG5cdFx0fVx0ZWxzZSBpZiAoIGNodW5rLmlkID09PSBDT0xPUl9GIHx8IGNodW5rLmlkID09PSBMSU5fQ09MT1JfRiApIHtcblxuXHRcdFx0dmFyIHIgPSB0aGlzLnJlYWRGbG9hdCggZGF0YSApO1xuXHRcdFx0dmFyIGcgPSB0aGlzLnJlYWRGbG9hdCggZGF0YSApO1xuXHRcdFx0dmFyIGIgPSB0aGlzLnJlYWRGbG9hdCggZGF0YSApO1xuXG5cdFx0XHRjb2xvci5zZXRSR0IoIHIsIGcsIGIgKTtcblxuXHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICAgICBDb2xvcjogJyArIGNvbG9yLnIgKyAnLCAnICsgY29sb3IuZyArICcsICcgKyBjb2xvci5iICk7XG5cblx0XHR9XHRlbHNlIHtcblxuXHRcdFx0dGhpcy5kZWJ1Z01lc3NhZ2UoICcgICAgICBVbmtub3duIGNvbG9yIGNodW5rOiAnICsgY2h1bmsudG9TdHJpbmcoIDE2ICkgKTtcblxuXHRcdH1cblxuXHRcdHRoaXMuZW5kQ2h1bmsoIGNodW5rICk7XG5cdFx0cmV0dXJuIGNvbG9yO1xuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlYWQgbmV4dCBjaHVuayBvZiBkYXRhLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHJlYWRDaHVua1xuXHQgKiBAcGFyYW0ge0RhdGFWaWV3fSBkYXRhIERhdGF2aWV3LlxuXHQgKiBAcmV0dXJuIHtPYmplY3R9IENodW5rIG9mIGRhdGEgcmVhZC5cblx0ICovXG5cdHJlYWRDaHVuazogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIGNodW5rID0ge307XG5cblx0XHRjaHVuay5jdXIgPSB0aGlzLnBvc2l0aW9uO1xuXHRcdGNodW5rLmlkID0gdGhpcy5yZWFkV29yZCggZGF0YSApO1xuXHRcdGNodW5rLnNpemUgPSB0aGlzLnJlYWREV29yZCggZGF0YSApO1xuXHRcdGNodW5rLmVuZCA9IGNodW5rLmN1ciArIGNodW5rLnNpemU7XG5cdFx0Y2h1bmsuY3VyICs9IDY7XG5cblx0XHRyZXR1cm4gY2h1bms7XG5cblx0fSxcblxuXHQvKipcblx0ICogU2V0IHBvc2l0aW9uIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgY2h1bmsgb2YgZGF0YS5cblx0ICpcblx0ICogQG1ldGhvZCBlbmRDaHVua1xuXHQgKiBAcGFyYW0ge09iamVjdH0gY2h1bmsgRGF0YSBjaHVuay5cblx0ICovXG5cdGVuZENodW5rOiBmdW5jdGlvbiAoIGNodW5rICkge1xuXG5cdFx0dGhpcy5wb3NpdGlvbiA9IGNodW5rLmVuZDtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBNb3ZlIHRvIHRoZSBuZXh0IGRhdGEgY2h1bmsuXG5cdCAqXG5cdCAqIEBtZXRob2QgbmV4dENodW5rXG5cdCAqIEBwYXJhbSB7RGF0YVZpZXd9IGRhdGEgRGF0YXZpZXcuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBjaHVuayBEYXRhIGNodW5rLlxuXHQgKi9cblx0bmV4dENodW5rOiBmdW5jdGlvbiAoIGRhdGEsIGNodW5rICkge1xuXG5cdFx0aWYgKCBjaHVuay5jdXIgPj0gY2h1bmsuZW5kICkge1xuXG5cdFx0XHRyZXR1cm4gMDtcblxuXHRcdH1cblxuXHRcdHRoaXMucG9zaXRpb24gPSBjaHVuay5jdXI7XG5cblx0XHR0cnkge1xuXG5cdFx0XHR2YXIgbmV4dCA9IHRoaXMucmVhZENodW5rKCBkYXRhICk7XG5cdFx0XHRjaHVuay5jdXIgKz0gbmV4dC5zaXplO1xuXHRcdFx0cmV0dXJuIG5leHQuaWQ7XG5cblx0XHR9XHRjYXRjaCAoIGUgKSB7XG5cblx0XHRcdHRoaXMuZGVidWdNZXNzYWdlKCAnVW5hYmxlIHRvIHJlYWQgY2h1bmsgYXQgJyArIHRoaXMucG9zaXRpb24gKTtcblx0XHRcdHJldHVybiAwO1xuXG5cdFx0fVxuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlc2V0IGRhdGF2aWV3IHBvc2l0aW9uLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHJlc2V0UG9zaXRpb25cblx0ICogQHBhcmFtIHtEYXRhVmlld30gZGF0YSBEYXRhdmlldy5cblx0ICovXG5cdHJlc2V0UG9zaXRpb246IGZ1bmN0aW9uICgpIHtcblxuXHRcdHRoaXMucG9zaXRpb24gLT0gNjtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZWFkIGJ5dGUgdmFsdWUuXG5cdCAqXG5cdCAqIEBtZXRob2QgcmVhZEJ5dGVcblx0ICogQHBhcmFtIHtEYXRhVmlld30gZGF0YSBEYXRhdmlldyB0byByZWFkIGRhdGEgZnJvbS5cblx0ICogQHJldHVybiB7TnVtYmVyfSBEYXRhIHJlYWQgZnJvbSB0aGUgZGF0YXZpZXcuXG5cdCAqL1xuXHRyZWFkQnl0ZTogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIHYgPSBkYXRhLmdldFVpbnQ4KCB0aGlzLnBvc2l0aW9uLCB0cnVlICk7XG5cdFx0dGhpcy5wb3NpdGlvbiArPSAxO1xuXHRcdHJldHVybiB2O1xuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlYWQgMzIgYml0IGZsb2F0IHZhbHVlLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHJlYWRGbG9hdFxuXHQgKiBAcGFyYW0ge0RhdGFWaWV3fSBkYXRhIERhdGF2aWV3IHRvIHJlYWQgZGF0YSBmcm9tLlxuXHQgKiBAcmV0dXJuIHtOdW1iZXJ9IERhdGEgcmVhZCBmcm9tIHRoZSBkYXRhdmlldy5cblx0ICovXG5cdHJlYWRGbG9hdDogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dHJ5IHtcblxuXHRcdFx0dmFyIHYgPSBkYXRhLmdldEZsb2F0MzIoIHRoaXMucG9zaXRpb24sIHRydWUgKTtcblx0XHRcdHRoaXMucG9zaXRpb24gKz0gNDtcblx0XHRcdHJldHVybiB2O1xuXG5cdFx0fVx0Y2F0Y2ggKCBlICkge1xuXG5cdFx0XHR0aGlzLmRlYnVnTWVzc2FnZSggZSArICcgJyArIHRoaXMucG9zaXRpb24gKyAnICcgKyBkYXRhLmJ5dGVMZW5ndGggKTtcblxuXHRcdH1cblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZWFkIDMyIGJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZS5cblx0ICpcblx0ICogQG1ldGhvZCByZWFkSW50XG5cdCAqIEBwYXJhbSB7RGF0YVZpZXd9IGRhdGEgRGF0YXZpZXcgdG8gcmVhZCBkYXRhIGZyb20uXG5cdCAqIEByZXR1cm4ge051bWJlcn0gRGF0YSByZWFkIGZyb20gdGhlIGRhdGF2aWV3LlxuXHQgKi9cblx0cmVhZEludDogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIHYgPSBkYXRhLmdldEludDMyKCB0aGlzLnBvc2l0aW9uLCB0cnVlICk7XG5cdFx0dGhpcy5wb3NpdGlvbiArPSA0O1xuXHRcdHJldHVybiB2O1xuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlYWQgMTYgYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHJlYWRTaG9ydFxuXHQgKiBAcGFyYW0ge0RhdGFWaWV3fSBkYXRhIERhdGF2aWV3IHRvIHJlYWQgZGF0YSBmcm9tLlxuXHQgKiBAcmV0dXJuIHtOdW1iZXJ9IERhdGEgcmVhZCBmcm9tIHRoZSBkYXRhdmlldy5cblx0ICovXG5cdHJlYWRTaG9ydDogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIHYgPSBkYXRhLmdldEludDE2KCB0aGlzLnBvc2l0aW9uLCB0cnVlICk7XG5cdFx0dGhpcy5wb3NpdGlvbiArPSAyO1xuXHRcdHJldHVybiB2O1xuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlYWQgNjQgYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUuXG5cdCAqXG5cdCAqIEBtZXRob2QgcmVhZERXb3JkXG5cdCAqIEBwYXJhbSB7RGF0YVZpZXd9IGRhdGEgRGF0YXZpZXcgdG8gcmVhZCBkYXRhIGZyb20uXG5cdCAqIEByZXR1cm4ge051bWJlcn0gRGF0YSByZWFkIGZyb20gdGhlIGRhdGF2aWV3LlxuXHQgKi9cblx0cmVhZERXb3JkOiBmdW5jdGlvbiAoIGRhdGEgKSB7XG5cblx0XHR2YXIgdiA9IGRhdGEuZ2V0VWludDMyKCB0aGlzLnBvc2l0aW9uLCB0cnVlICk7XG5cdFx0dGhpcy5wb3NpdGlvbiArPSA0O1xuXHRcdHJldHVybiB2O1xuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFJlYWQgMzIgYml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUuXG5cdCAqXG5cdCAqIEBtZXRob2QgcmVhZFdvcmRcblx0ICogQHBhcmFtIHtEYXRhVmlld30gZGF0YSBEYXRhdmlldyB0byByZWFkIGRhdGEgZnJvbS5cblx0ICogQHJldHVybiB7TnVtYmVyfSBEYXRhIHJlYWQgZnJvbSB0aGUgZGF0YXZpZXcuXG5cdCAqL1xuXHRyZWFkV29yZDogZnVuY3Rpb24gKCBkYXRhICkge1xuXG5cdFx0dmFyIHYgPSBkYXRhLmdldFVpbnQxNiggdGhpcy5wb3NpdGlvbiwgdHJ1ZSApO1xuXHRcdHRoaXMucG9zaXRpb24gKz0gMjtcblx0XHRyZXR1cm4gdjtcblxuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZWFkIHN0cmluZyB2YWx1ZS5cblx0ICpcblx0ICogQG1ldGhvZCByZWFkU3RyaW5nXG5cdCAqIEBwYXJhbSB7RGF0YVZpZXd9IGRhdGEgRGF0YXZpZXcgdG8gcmVhZCBkYXRhIGZyb20uXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBtYXhMZW5ndGggTWF4IHNpemUgb2YgdGhlIHN0cmluZyB0byBiZSByZWFkLlxuXHQgKiBAcmV0dXJuIHtTdHJpbmd9IERhdGEgcmVhZCBmcm9tIHRoZSBkYXRhdmlldy5cblx0ICovXG5cdHJlYWRTdHJpbmc6IGZ1bmN0aW9uICggZGF0YSwgbWF4TGVuZ3RoICkge1xuXG5cdFx0dmFyIHMgPSAnJztcblxuXHRcdGZvciAoIHZhciBpID0gMDsgaSA8IG1heExlbmd0aDsgaSArKyApIHtcblxuXHRcdFx0dmFyIGMgPSB0aGlzLnJlYWRCeXRlKCBkYXRhICk7XG5cdFx0XHRpZiAoICEgYyApIHtcblxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0fVxuXG5cdFx0XHRzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoIGMgKTtcblxuXHRcdH1cblxuXHRcdHJldHVybiBzO1xuXG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldCByZXNvdXJjZSBwYXRoIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBmaWxlIHBhdGggdG8gYXR0YWNoZWQgcmVzb3VyY2VzLlxuXHQgKlxuXHQgKiBAbWV0aG9kIHNldFBhdGhcblx0ICogQHBhcmFtIHtTdHJpbmd9IHBhdGggUGF0aCB0byByZXNvdXJjZXMuXG5cdCAqIEByZXR1cm4gU2VsZiBmb3IgY2hhaW5pbmcuXG5cdCAqL1xuXHRzZXRQYXRoOiBmdW5jdGlvbiAoIHBhdGggKSB7XG5cblx0XHR0aGlzLnBhdGggPSBwYXRoO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fSxcblxuXHQvKipcblx0ICogUHJpbnQgZGVidWcgbWVzc2FnZSB0byB0aGUgY29uc29sZS5cblx0ICpcblx0ICogSXMgY29udHJvbGxlZCBieSBhIGZsYWcgdG8gc2hvdyBvciBoaWRlIGRlYnVnIG1lc3NhZ2VzLlxuXHQgKlxuXHQgKiBAbWV0aG9kIGRlYnVnTWVzc2FnZVxuXHQgKiBAcGFyYW0ge09iamVjdH0gbWVzc2FnZSBEZWJ1ZyBtZXNzYWdlIHRvIHByaW50IHRvIHRoZSBjb25zb2xlLlxuXHQgKi9cblx0ZGVidWdNZXNzYWdlOiBmdW5jdGlvbiAoIG1lc3NhZ2UgKSB7XG5cblx0XHRpZiAoIHRoaXMuZGVidWcgKSB7XG5cblx0XHRcdGNvbnNvbGUubG9nKCBtZXNzYWdlICk7XG5cblx0XHR9XG5cblx0fVxufTtcblxudmFyIE5VTExfQ0hVTksgPSAweDAwMDA7XG52YXIgTTNETUFHSUMgPSAweDRENEQ7XG52YXIgU01BR0lDID0gMHgyRDJEO1xudmFyIExNQUdJQyA9IDB4MkQzRDtcbnZhciBNTElCTUFHSUMgPSAweDNEQUE7XG52YXIgTUFUTUFHSUMgPSAweDNERkY7XG52YXIgQ01BR0lDID0gMHhDMjNEO1xudmFyIE0zRF9WRVJTSU9OID0gMHgwMDAyO1xudmFyIE0zRF9LRlZFUlNJT04gPSAweDAwMDU7XG52YXIgQ09MT1JfRiA9IDB4MDAxMDtcbnZhciBDT0xPUl8yNCA9IDB4MDAxMTtcbnZhciBMSU5fQ09MT1JfMjQgPSAweDAwMTI7XG52YXIgTElOX0NPTE9SX0YgPSAweDAwMTM7XG52YXIgSU5UX1BFUkNFTlRBR0UgPSAweDAwMzA7XG52YXIgRkxPQVRfUEVSQ0VOVEFHRSA9IDB4MDAzMTtcbnZhciBNREFUQSA9IDB4M0QzRDtcbnZhciBNRVNIX1ZFUlNJT04gPSAweDNEM0U7XG52YXIgTUFTVEVSX1NDQUxFID0gMHgwMTAwO1xudmFyIExPX1NIQURPV19CSUFTID0gMHgxNDAwO1xudmFyIEhJX1NIQURPV19CSUFTID0gMHgxNDEwO1xudmFyIFNIQURPV19NQVBfU0laRSA9IDB4MTQyMDtcbnZhciBTSEFET1dfU0FNUExFUyA9IDB4MTQzMDtcbnZhciBTSEFET1dfUkFOR0UgPSAweDE0NDA7XG52YXIgU0hBRE9XX0ZJTFRFUiA9IDB4MTQ1MDtcbnZhciBSQVlfQklBUyA9IDB4MTQ2MDtcbnZhciBPX0NPTlNUUyA9IDB4MTUwMDtcbnZhciBBTUJJRU5UX0xJR0hUID0gMHgyMTAwO1xudmFyIEJJVF9NQVAgPSAweDExMDA7XG52YXIgU09MSURfQkdORCA9IDB4MTIwMDtcbnZhciBWX0dSQURJRU5UID0gMHgxMzAwO1xudmFyIFVTRV9CSVRfTUFQID0gMHgxMTAxO1xudmFyIFVTRV9TT0xJRF9CR05EID0gMHgxMjAxO1xudmFyIFVTRV9WX0dSQURJRU5UID0gMHgxMzAxO1xudmFyIEZPRyA9IDB4MjIwMDtcbnZhciBGT0dfQkdORCA9IDB4MjIxMDtcbnZhciBMQVlFUl9GT0cgPSAweDIzMDI7XG52YXIgRElTVEFOQ0VfQ1VFID0gMHgyMzAwO1xudmFyIERDVUVfQkdORCA9IDB4MjMxMDtcbnZhciBVU0VfRk9HID0gMHgyMjAxO1xudmFyIFVTRV9MQVlFUl9GT0cgPSAweDIzMDM7XG52YXIgVVNFX0RJU1RBTkNFX0NVRSA9IDB4MjMwMTtcbnZhciBNQVRfRU5UUlkgPSAweEFGRkY7XG52YXIgTUFUX05BTUUgPSAweEEwMDA7XG52YXIgTUFUX0FNQklFTlQgPSAweEEwMTA7XG52YXIgTUFUX0RJRkZVU0UgPSAweEEwMjA7XG52YXIgTUFUX1NQRUNVTEFSID0gMHhBMDMwO1xudmFyIE1BVF9TSElOSU5FU1MgPSAweEEwNDA7XG52YXIgTUFUX1NISU4yUENUID0gMHhBMDQxO1xudmFyIE1BVF9UUkFOU1BBUkVOQ1kgPSAweEEwNTA7XG52YXIgTUFUX1hQRkFMTCA9IDB4QTA1MjtcbnZhciBNQVRfVVNFX1hQRkFMTCA9IDB4QTI0MDtcbnZhciBNQVRfUkVGQkxVUiA9IDB4QTA1MztcbnZhciBNQVRfU0hBRElORyA9IDB4QTEwMDtcbnZhciBNQVRfVVNFX1JFRkJMVVIgPSAweEEyNTA7XG52YXIgTUFUX1NFTEZfSUxMVU0gPSAweEEwODQ7XG52YXIgTUFUX1RXT19TSURFID0gMHhBMDgxO1xudmFyIE1BVF9ERUNBTCA9IDB4QTA4MjtcbnZhciBNQVRfQURESVRJVkUgPSAweEEwODM7XG52YXIgTUFUX1dJUkUgPSAweEEwODU7XG52YXIgTUFUX0ZBQ0VNQVAgPSAweEEwODg7XG52YXIgTUFUX1RSQU5TRkFMTE9GRl9JTiA9IDB4QTA4QTtcbnZhciBNQVRfUEhPTkdTT0ZUID0gMHhBMDhDO1xudmFyIE1BVF9XSVJFQUJTID0gMHhBMDhFO1xudmFyIE1BVF9XSVJFX1NJWkUgPSAweEEwODc7XG52YXIgTUFUX1RFWE1BUCA9IDB4QTIwMDtcbnZhciBNQVRfU1hQX1RFWFRfREFUQSA9IDB4QTMyMDtcbnZhciBNQVRfVEVYTUFTSyA9IDB4QTMzRTtcbnZhciBNQVRfU1hQX1RFWFRNQVNLX0RBVEEgPSAweEEzMkE7XG52YXIgTUFUX1RFWDJNQVAgPSAweEEzM0E7XG52YXIgTUFUX1NYUF9URVhUMl9EQVRBID0gMHhBMzIxO1xudmFyIE1BVF9URVgyTUFTSyA9IDB4QTM0MDtcbnZhciBNQVRfU1hQX1RFWFQyTUFTS19EQVRBID0gMHhBMzJDO1xudmFyIE1BVF9PUEFDTUFQID0gMHhBMjEwO1xudmFyIE1BVF9TWFBfT1BBQ19EQVRBID0gMHhBMzIyO1xudmFyIE1BVF9PUEFDTUFTSyA9IDB4QTM0MjtcbnZhciBNQVRfU1hQX09QQUNNQVNLX0RBVEEgPSAweEEzMkU7XG52YXIgTUFUX0JVTVBNQVAgPSAweEEyMzA7XG52YXIgTUFUX1NYUF9CVU1QX0RBVEEgPSAweEEzMjQ7XG52YXIgTUFUX0JVTVBNQVNLID0gMHhBMzQ0O1xudmFyIE1BVF9TWFBfQlVNUE1BU0tfREFUQSA9IDB4QTMzMDtcbnZhciBNQVRfU1BFQ01BUCA9IDB4QTIwNDtcbnZhciBNQVRfU1hQX1NQRUNfREFUQSA9IDB4QTMyNTtcbnZhciBNQVRfU1BFQ01BU0sgPSAweEEzNDg7XG52YXIgTUFUX1NYUF9TUEVDTUFTS19EQVRBID0gMHhBMzMyO1xudmFyIE1BVF9TSElOTUFQID0gMHhBMzNDO1xudmFyIE1BVF9TWFBfU0hJTl9EQVRBID0gMHhBMzI2O1xudmFyIE1BVF9TSElOTUFTSyA9IDB4QTM0NjtcbnZhciBNQVRfU1hQX1NISU5NQVNLX0RBVEEgPSAweEEzMzQ7XG52YXIgTUFUX1NFTEZJTUFQID0gMHhBMzNEO1xudmFyIE1BVF9TWFBfU0VMRklfREFUQSA9IDB4QTMyODtcbnZhciBNQVRfU0VMRklNQVNLID0gMHhBMzRBO1xudmFyIE1BVF9TWFBfU0VMRklNQVNLX0RBVEEgPSAweEEzMzY7XG52YXIgTUFUX1JFRkxNQVAgPSAweEEyMjA7XG52YXIgTUFUX1JFRkxNQVNLID0gMHhBMzRDO1xudmFyIE1BVF9TWFBfUkVGTE1BU0tfREFUQSA9IDB4QTMzODtcbnZhciBNQVRfQUNVQklDID0gMHhBMzEwO1xudmFyIE1BVF9NQVBOQU1FID0gMHhBMzAwO1xudmFyIE1BVF9NQVBfVElMSU5HID0gMHhBMzUxO1xudmFyIE1BVF9NQVBfVEVYQkxVUiA9IDB4QTM1MztcbnZhciBNQVRfTUFQX1VTQ0FMRSA9IDB4QTM1NDtcbnZhciBNQVRfTUFQX1ZTQ0FMRSA9IDB4QTM1NjtcbnZhciBNQVRfTUFQX1VPRkZTRVQgPSAweEEzNTg7XG52YXIgTUFUX01BUF9WT0ZGU0VUID0gMHhBMzVBO1xudmFyIE1BVF9NQVBfQU5HID0gMHhBMzVDO1xudmFyIE1BVF9NQVBfQ09MMSA9IDB4QTM2MDtcbnZhciBNQVRfTUFQX0NPTDIgPSAweEEzNjI7XG52YXIgTUFUX01BUF9SQ09MID0gMHhBMzY0O1xudmFyIE1BVF9NQVBfR0NPTCA9IDB4QTM2NjtcbnZhciBNQVRfTUFQX0JDT0wgPSAweEEzNjg7XG52YXIgTkFNRURfT0JKRUNUID0gMHg0MDAwO1xudmFyIE5fRElSRUNUX0xJR0hUID0gMHg0NjAwO1xudmFyIERMX09GRiA9IDB4NDYyMDtcbnZhciBETF9PVVRFUl9SQU5HRSA9IDB4NDY1QTtcbnZhciBETF9JTk5FUl9SQU5HRSA9IDB4NDY1OTtcbnZhciBETF9NVUxUSVBMSUVSID0gMHg0NjVCO1xudmFyIERMX0VYQ0xVREUgPSAweDQ2NTQ7XG52YXIgRExfQVRURU5VQVRFID0gMHg0NjI1O1xudmFyIERMX1NQT1RMSUdIVCA9IDB4NDYxMDtcbnZhciBETF9TUE9UX1JPTEwgPSAweDQ2NTY7XG52YXIgRExfU0hBRE9XRUQgPSAweDQ2MzA7XG52YXIgRExfTE9DQUxfU0hBRE9XMiA9IDB4NDY0MTtcbnZhciBETF9TRUVfQ09ORSA9IDB4NDY1MDtcbnZhciBETF9TUE9UX1JFQ1RBTkdVTEFSID0gMHg0NjUxO1xudmFyIERMX1NQT1RfQVNQRUNUID0gMHg0NjU3O1xudmFyIERMX1NQT1RfUFJPSkVDVE9SID0gMHg0NjUzO1xudmFyIERMX1NQT1RfT1ZFUlNIT09UID0gMHg0NjUyO1xudmFyIERMX1JBWV9CSUFTID0gMHg0NjU4O1xudmFyIERMX1JBWVNIQUQgPSAweDQ2Mjc7XG52YXIgTl9DQU1FUkEgPSAweDQ3MDA7XG52YXIgQ0FNX1NFRV9DT05FID0gMHg0NzEwO1xudmFyIENBTV9SQU5HRVMgPSAweDQ3MjA7XG52YXIgT0JKX0hJRERFTiA9IDB4NDAxMDtcbnZhciBPQkpfVklTX0xPRlRFUiA9IDB4NDAxMTtcbnZhciBPQkpfRE9FU05UX0NBU1QgPSAweDQwMTI7XG52YXIgT0JKX0RPTlRfUkVDVlNIQURPVyA9IDB4NDAxNztcbnZhciBPQkpfTUFUVEUgPSAweDQwMTM7XG52YXIgT0JKX0ZBU1QgPSAweDQwMTQ7XG52YXIgT0JKX1BST0NFRFVSQUwgPSAweDQwMTU7XG52YXIgT0JKX0ZST1pFTiA9IDB4NDAxNjtcbnZhciBOX1RSSV9PQkpFQ1QgPSAweDQxMDA7XG52YXIgUE9JTlRfQVJSQVkgPSAweDQxMTA7XG52YXIgUE9JTlRfRkxBR19BUlJBWSA9IDB4NDExMTtcbnZhciBGQUNFX0FSUkFZID0gMHg0MTIwO1xudmFyIE1TSF9NQVRfR1JPVVAgPSAweDQxMzA7XG52YXIgU01PT1RIX0dST1VQID0gMHg0MTUwO1xudmFyIE1TSF9CT1hNQVAgPSAweDQxOTA7XG52YXIgVEVYX1ZFUlRTID0gMHg0MTQwO1xudmFyIE1FU0hfTUFUUklYID0gMHg0MTYwO1xudmFyIE1FU0hfQ09MT1IgPSAweDQxNjU7XG52YXIgTUVTSF9URVhUVVJFX0lORk8gPSAweDQxNzA7XG52YXIgS0ZEQVRBID0gMHhCMDAwO1xudmFyIEtGSERSID0gMHhCMDBBO1xudmFyIEtGU0VHID0gMHhCMDA4O1xudmFyIEtGQ1VSVElNRSA9IDB4QjAwOTtcbnZhciBBTUJJRU5UX05PREVfVEFHID0gMHhCMDAxO1xudmFyIE9CSkVDVF9OT0RFX1RBRyA9IDB4QjAwMjtcbnZhciBDQU1FUkFfTk9ERV9UQUcgPSAweEIwMDM7XG52YXIgVEFSR0VUX05PREVfVEFHID0gMHhCMDA0O1xudmFyIExJR0hUX05PREVfVEFHID0gMHhCMDA1O1xudmFyIExfVEFSR0VUX05PREVfVEFHID0gMHhCMDA2O1xudmFyIFNQT1RMSUdIVF9OT0RFX1RBRyA9IDB4QjAwNztcbnZhciBOT0RFX0lEID0gMHhCMDMwO1xudmFyIE5PREVfSERSID0gMHhCMDEwO1xudmFyIFBJVk9UID0gMHhCMDEzO1xudmFyIElOU1RBTkNFX05BTUUgPSAweEIwMTE7XG52YXIgTU9SUEhfU01PT1RIID0gMHhCMDE1O1xudmFyIEJPVU5EQk9YID0gMHhCMDE0O1xudmFyIFBPU19UUkFDS19UQUcgPSAweEIwMjA7XG52YXIgQ09MX1RSQUNLX1RBRyA9IDB4QjAyNTtcbnZhciBST1RfVFJBQ0tfVEFHID0gMHhCMDIxO1xudmFyIFNDTF9UUkFDS19UQUcgPSAweEIwMjI7XG52YXIgTU9SUEhfVFJBQ0tfVEFHID0gMHhCMDI2O1xudmFyIEZPVl9UUkFDS19UQUcgPSAweEIwMjM7XG52YXIgUk9MTF9UUkFDS19UQUcgPSAweEIwMjQ7XG52YXIgSE9UX1RSQUNLX1RBRyA9IDB4QjAyNztcbnZhciBGQUxMX1RSQUNLX1RBRyA9IDB4QjAyODtcbnZhciBISURFX1RSQUNLX1RBRyA9IDB4QjAyOTtcbnZhciBQT0xZXzJEID0gMHg1MDAwO1xudmFyIFNIQVBFX09LID0gMHg1MDEwO1xudmFyIFNIQVBFX05PVF9PSyA9IDB4NTAxMTtcbnZhciBTSEFQRV9IT09LID0gMHg1MDIwO1xudmFyIFBBVEhfM0QgPSAweDYwMDA7XG52YXIgUEFUSF9NQVRSSVggPSAweDYwMDU7XG52YXIgU0hBUEVfMkQgPSAweDYwMTA7XG52YXIgTV9TQ0FMRSA9IDB4NjAyMDtcbnZhciBNX1RXSVNUID0gMHg2MDMwO1xudmFyIE1fVEVFVEVSID0gMHg2MDQwO1xudmFyIE1fRklUID0gMHg2MDUwO1xudmFyIE1fQkVWRUwgPSAweDYwNjA7XG52YXIgWFpfQ1VSVkUgPSAweDYwNzA7XG52YXIgWVpfQ1VSVkUgPSAweDYwODA7XG52YXIgSU5URVJQQ1QgPSAweDYwOTA7XG52YXIgREVGT1JNX0xJTUlUID0gMHg2MEEwO1xudmFyIFVTRV9DT05UT1VSID0gMHg2MTAwO1xudmFyIFVTRV9UV0VFTiA9IDB4NjExMDtcbnZhciBVU0VfU0NBTEUgPSAweDYxMjA7XG52YXIgVVNFX1RXSVNUID0gMHg2MTMwO1xudmFyIFVTRV9URUVURVIgPSAweDYxNDA7XG52YXIgVVNFX0ZJVCA9IDB4NjE1MDtcbnZhciBVU0VfQkVWRUwgPSAweDYxNjA7XG52YXIgREVGQVVMVF9WSUVXID0gMHgzMDAwO1xudmFyIFZJRVdfVE9QID0gMHgzMDEwO1xudmFyIFZJRVdfQk9UVE9NID0gMHgzMDIwO1xudmFyIFZJRVdfTEVGVCA9IDB4MzAzMDtcbnZhciBWSUVXX1JJR0hUID0gMHgzMDQwO1xudmFyIFZJRVdfRlJPTlQgPSAweDMwNTA7XG52YXIgVklFV19CQUNLID0gMHgzMDYwO1xudmFyIFZJRVdfVVNFUiA9IDB4MzA3MDtcbnZhciBWSUVXX0NBTUVSQSA9IDB4MzA4MDtcbnZhciBWSUVXX1dJTkRPVyA9IDB4MzA5MDtcbnZhciBWSUVXUE9SVF9MQVlPVVRfT0xEID0gMHg3MDAwO1xudmFyIFZJRVdQT1JUX0RBVEFfT0xEID0gMHg3MDEwO1xudmFyIFZJRVdQT1JUX0xBWU9VVCA9IDB4NzAwMTtcbnZhciBWSUVXUE9SVF9EQVRBID0gMHg3MDExO1xudmFyIFZJRVdQT1JUX0RBVEFfMyA9IDB4NzAxMjtcbnZhciBWSUVXUE9SVF9TSVpFID0gMHg3MDIwO1xudmFyIE5FVFdPUktfVklFVyA9IDB4NzAzMDtcblxuZXhwb3J0IGRlZmF1bHQgVEhSRUUuVERTTG9hZGVyO1xuIiwiZXhwb3J0IGRlZmF1bHQgJ2RhdGE6dGV4dC9wbGFpbjtiYXNlNjQsVFUzUHpSTUFBZ0FLQUFBQUF3QUFBRDA5Y3NNVEFBQUJDZ0FBQUFBQWdEOEFJUThBQUFBUkFBa0FBQUF6TXpQL3I1NEFBQUFBb0E4QUFBQnlZWFkwTFdGc2RRQVFvQThBQUFBUkFBa0FBQUFBQUFBZ29BOEFBQUFSQUFrQUFBQjRlSGd3b0E4QUFBQVJBQWtBQUFESXlNaEFvQTRBQUFBd0FBZ0FBQUFuQUVHZ0RnQUFBREFBQ0FBQUFESUFVS0FPQUFBQU1BQUlBQUFBQUFCU29BNEFBQUF3QUFnQUFBQUFBRk9nRGdBQUFEQUFDQUFBQUFBQUFLRUlBQUFBQXdDRW9BNEFBQUF3QUFnQUFBQUFBUCt2b0FBQUFBQ2dFUUFBQUhKaGRqUXRaR2x6WTNNQUVLQVBBQUFBRVFBSkFBQUFBQUFBSUtBUEFBQUFFUUFKQUFBQWIyOXZNS0FQQUFBQUVRQUpBQUFBLy8vL1FLQU9BQUFBTUFBSUFBQUFXd0JCb0E0QUFBQXdBQWdBQUFBeUFGQ2dEZ0FBQURBQUNBQUFBQUFBVXFBT0FBQUFNQUFJQUFBQUFBQlRvQTRBQUFBd0FBZ0FBQUFBQUFDaENBQUFBQU1BaEtBT0FBQUFNQUFJQUFBQUFBRC9yNklBQUFBQW9CTUFBQUJ5WVhZMExYTm9hV1ZzWkhNQUVLQVBBQUFBRVFBSkFBQUFBQUFBSUtBUEFBQUFFUUFKQUFBQUp5Y25NS0FQQUFBQUVRQUpBQUFBYm01dVFLQU9BQUFBTUFBSUFBQUFPd0JCb0E0QUFBQXdBQWdBQUFBeUFGQ2dEZ0FBQURBQUNBQUFBQUFBVXFBT0FBQUFNQUFJQUFBQUFBQlRvQTRBQUFBd0FBZ0FBQUFBQUFDaENBQUFBQU1BaEtBT0FBQUFNQUFJQUFBQUFBRC9yLzRBQUFBQW9CQUFBQUJ5WVhZMExYUnBjbVVBRUtBUEFBQUFFUUFKQUFBQUFBQUFJS0FQQUFBQUVRQUpBQUFBRlJVVk1LQVBBQUFBRVFBSkFBQUFGQlFVUUtBT0FBQUFNQUFJQUFBQUNRQkJvQTRBQUFBd0FBZ0FBQUFKQUZDZ0RnQUFBREFBQ0FBQUFBQUFVcUFPQUFBQU1BQUlBQUFBQUFCVG9BNEFBQUF3QUFnQUFBQUFBQUNoQ0FBQUFBTUFoS0FPQUFBQU1BQUlBQUFBQUFBd29sOEFBQUF3QUFnQUFBQVdBQUNqRHdBQUFIUnBjbVV1YW5CbkFGS2lDQUFBQUZrQVZLTUtBQUFBQUFDQVAxYWpDZ0FBQUFBQWdEOVlvd29BQUFBQUFBQ0FXS01LQUFBQUFBQUFnRnlqQ2dBQUFBQUFBQUJSb3dnQUFBQUFBUCt2b0FBQUFBQ2dFUUFBQUhKaGRqUXRZbXhoWTJzQUVLQVBBQUFBRVFBSkFBQUFBQUFBSUtBUEFBQUFFUUFKQUFBQUFBQUFNS0FQQUFBQUVRQUpBQUFBQUFBQVFLQU9BQUFBTUFBSUFBQUFBQUJCb0E0QUFBQXdBQWdBQUFBQUFGQ2dEZ0FBQURBQUNBQUFBQUFBVXFBT0FBQUFNQUFJQUFBQUFBQlRvQTRBQUFBd0FBZ0FBQUFBQUFDaENBQUFBQU1BaEtBT0FBQUFNQUFJQUFBQUFBRC9yNlVBQUFBQW9CQUFBQUJ5WVhZMExXSnZaSGtBRUtBUEFBQUFFUUFKQUFBQUFBQUFJS0FQQUFBQUVRQUpBQUFBTHk4dk1LQVBBQUFBRVFBSkFBQUEvLy8vUUtBT0FBQUFNQUFJQUFBQUp3QkJvQTRBQUFBd0FBZ0FBQUJQQUZDZ0RnQUFBREFBQ0FBQUFBQUFVcUFPQUFBQU1BQUlBQUFBQUFCVG9BNEFBQUF3QUFnQUFBQUFBSUdnQmdBQUFBQ2hDQUFBQUFNQWhLQU9BQUFBTUFBSUFBQUFBQUQvcjZFQUFBQUFvQklBQUFCeVlYWTBMVzFwY25KdmNnQVFvQThBQUFBUkFBa0FBQUFBQUFBZ29BOEFBQUFSQUFrQUFBQUFBQUF3b0E4QUFBQVJBQWtBQUFELy8vOUFvQTRBQUFBd0FBZ0FBQUJQQUVHZ0RnQUFBREFBQ0FBQUFGa0FVS0FPQUFBQU1BQUlBQUFBQUFCU29BNEFBQUF3QUFnQUFBQUFBRk9nRGdBQUFEQUFDQUFBQUFBQUFLRUlBQUFBQXdDRW9BNEFBQUF3QUFnQUFBQUFBUCt2K3dBQUFBQ2dFUUFBQUhKaGRqUXRNM04wYjNBQUVLQVBBQUFBRVFBSkFBQUFBQUFBSUtBUEFBQUFFUUFKQUFBQWg0ZUhNS0FQQUFBQUVRQUpBQUFBbFpXVlFLQU9BQUFBTUFBSUFBQUFNUUJCb0E0QUFBQXdBQWdBQUFBeUFGQ2dEZ0FBQURBQUNBQUFBQUFBVXFBT0FBQUFNQUFJQUFBQUFBQlRvQTRBQUFBd0FBZ0FBQUFBQUFDaENBQUFBQU1BaEtBT0FBQUFNQUFJQUFBQUFBQUFvbHNBQUFBd0FBZ0FBQUJrQUFDakV3QUFBR0poWTJzdGNtVmtMbXB3WndCVW93b0FBQUFBQUlBL1ZxTUtBQUFBQUFDQVAxaWpDZ0FBQUFBQUFJQllvd29BQUFBQUFBQ0FYS01LQUFBQUFBQUFBRkdqQ0FBQUFBQUEvNitzQUFBQUFLQVhBQUFBY21GMk5DMWliR0ZqYTE5bmJHRnpjd0FRb0E4QUFBQVJBQWtBQUFBQUFBQWdvQThBQUFBUkFBa0FBQUFWRlJVd29BOEFBQUFSQUFrQUFBQldWbFpBb0E0QUFBQXdBQWdBQUFBN0FFR2dEZ0FBQURBQUNBQUFBRVVBVUtBT0FBQUFNQUFJQUFBQUFBQlNvQTRBQUFBd0FBZ0FBQUFBQUZPZ0RnQUFBREFBQ0FBQUFBQUFnYUFHQUFBQUFLRUlBQUFBQXdDRW9BNEFBQUF3QUFnQUFBQUFBUCt2ckFBQUFBQ2dGd0FBQUhKaGRqUXRaR0Z5YTJWeVgyZHNZWE1BRUtBUEFBQUFFUUFKQUFBQUFBQUFJS0FQQUFBQUVRQUpBQUFBRkJRVU1LQVBBQUFBRVFBSkFBQUEvLy8vUUtBT0FBQUFNQUFJQUFBQU93QkJvQTRBQUFBd0FBZ0FBQUJGQUZDZ0RnQUFBREFBQ0FBQUFCOEFVcUFPQUFBQU1BQUlBQUFBQUFCVG9BNEFBQUF3QUFnQUFBQUFBSUdnQmdBQUFBQ2hDQUFBQUFNQWhLQU9BQUFBTUFBSUFBQUFBQUQvci9vQUFBQUFvQkVBQUFCeVlYWTBMWEJzWVhSbEFCQ2dEd0FBQUJFQUNRQUFBQUFBQUNDZ0R3QUFBQkVBQ1FBQUFNakl5RENnRHdBQUFCRUFDUUFBQUhaMmRrQ2dEZ0FBQURBQUNBQUFBRW9BUWFBT0FBQUFNQUFJQUFBQU1nQlFvQTRBQUFBd0FBZ0FBQUFBQUZLZ0RnQUFBREFBQ0FBQUFBQUFVNkFPQUFBQU1BQUlBQUFBQUFBQW9RZ0FBQUFEQUlTZ0RnQUFBREFBQ0FBQUFBQUFBS0phQUFBQU1BQUlBQUFBWkFBQW94SUFBQUIwWVdKc2FXTmhMbXB3WndCVW93b0FBQUFBQUlBL1ZxTUtBQUFBQUFDQVAxaWpDZ0FBQUFBQUFJQllvd29BQUFBQUFBQ0FYS01LQUFBQUFBQUFBRkdqQ0FBQUFBQUEvNi8wQUFBQUFLQVBBQUFBY21GMk5DMXlaV1FBRUtBUEFBQUFFUUFKQUFBQUFBQUFJS0FQQUFBQUVRQUpBQUFBbEFRQk1LQVBBQUFBRVFBSkFBQUEvLy8vUUtBT0FBQUFNQUFJQUFBQU1RQkJvQTRBQUFBd0FBZ0FBQUF5QUZDZ0RnQUFBREFBQ0FBQUFBQUFVcUFPQUFBQU1BQUlBQUFBQUFCVG9BNEFBQUF3QUFnQUFBQUFBQUNoQ0FBQUFBTUFoS0FPQUFBQU1BQUlBQUFBQUFBQW9sWUFBQUF3QUFnQUFBQmtBQUNqRGdBQUFISmxaQzVxY0djQVZLTUtBQUFBQUFDQVAxYWpDZ0FBQUFBQWdEOVlvd29BQUFBQUFBQ0FXS01LQUFBQUFBQUFnRnlqQ2dBQUFBQUFBQUJSb3dnQUFBQUFBUCt2L3dBQUFBQ2dGUUFBQUhKaGRqUXRjMjFoYkd4ZmNtVmtBQkNnRHdBQUFCRUFDUUFBQUFBQUFDQ2dEd0FBQUJFQUNRQUFBS0FEQXpDZ0R3QUFBQkVBQ1FBQUFIUjBkRUNnRGdBQUFEQUFDQUFBQURFQVFhQU9BQUFBTUFBSUFBQUFNZ0JRb0E0QUFBQXdBQWdBQUFBQUFGS2dEZ0FBQURBQUNBQUFBQUFBVTZBT0FBQUFNQUFJQUFBQUFBQUFvUWdBQUFBREFJU2dEZ0FBQURBQUNBQUFBQUFBQUtKYkFBQUFNQUFJQUFBQVpBQUFveE1BQUFCaVlXTnJMWEpsWkM1cWNHY0FWS01LQUFBQUFBQ0FQMWFqQ2dBQUFBQUFnRDlZb3dvQUFBQUFBQUNBV0tNS0FBQUFBQUFBZ0Z5akNnQUFBQUFBQUFCUm93Z0FBQUFBQVArdm9nQUFBQUNnRXdBQUFISmhkalF0Wm13dGJHVnVjd0FRb0E4QUFBQVJBQWtBQUFBQUFBQWdvQThBQUFBUkFBa0FBQURJeU1nd29BOEFBQUFSQUFrQUFBRC8vLzlBb0E0QUFBQXdBQWdBQUFBeEFFR2dEZ0FBQURBQUNBQUFBRElBVUtBT0FBQUFNQUFJQUFBQVh3QlNvQTRBQUFBd0FBZ0FBQUFBQUZPZ0RnQUFBREFBQ0FBQUFBQUFBS0VJQUFBQUF3Q0VvQTRBQUFBd0FBZ0FBQUFBQVArdnBBQUFBQUNnRlFBQUFISmhkalF0Wm13dGJXbHljbTl5QUJDZ0R3QUFBQkVBQ1FBQUFBQUFBQ0NnRHdBQUFCRUFDUUFBQUZkWFZ6Q2dEd0FBQUJFQUNRQUFBT0xpNGtDZ0RnQUFBREFBQ0FBQUFEY0FRYUFPQUFBQU1BQUlBQUFBVHdCUW9BNEFBQUF3QUFnQUFBQUFBRktnRGdBQUFEQUFDQUFBQUFBQVU2QU9BQUFBTUFBSUFBQUFBQUFBb1FnQUFBQURBSVNnRGdBQUFEQUFDQUFBQUFBQS82LzlBQUFBQUtBVkFBQUFjbUYyTkMxbWJDMXZjbUZ1WjJVQUVLQVBBQUFBRVFBSkFBQUFBQUFBSUtBUEFBQUFFUUFKQUFBQXRXNEFNS0FQQUFBQUVRQUpBQUFBdXJxNlFLQU9BQUFBTUFBSUFBQUFNUUJCb0E0QUFBQXdBQWdBQUFBeUFGQ2dEZ0FBQURBQUNBQUFBQUFBVXFBT0FBQUFNQUFJQUFBQUFBQlRvQTRBQUFBd0FBZ0FBQUFBQUFDaENBQUFBQU1BaEtBT0FBQUFNQUFJQUFBQUFBQUFvbGtBQUFBd0FBZ0FBQUJrQUFDakVRQUFBRzl5WVc1blpTNXFjR2NBVktNS0FBQUFBQUNBUDFhakNnQUFBQUFBZ0Q5WW93b0FBQUFBQUFDQVdLTUtBQUFBQUFBQWdGeWpDZ0FBQUFBQUFBQlJvd2dBQUFBQUFQK3ZvUUFBQUFDZ0VnQUFBSEpoZGpRdFkyaHliMjFsQUJDZ0R3QUFBQkVBQ1FBQUFBQUFBQ0NnRHdBQUFCRUFDUUFBQUJRVUZEQ2dEd0FBQUJFQUNRQUFBUC8vLzBDZ0RnQUFBREFBQ0FBQUFFWUFRYUFPQUFBQU1BQUlBQUFBVHdCUW9BNEFBQUF3QUFnQUFBQUFBRktnRGdBQUFEQUFDQUFBQUFBQVU2QU9BQUFBTUFBSUFBQUFBQUFBb1FnQUFBQURBSVNnRGdBQUFEQUFDQUFBQUFBQS82K2lBQUFBQUtBVEFBQUFjbUYyTkMxbWJDMWlkV3hpQUJDZ0R3QUFBQkVBQ1FBQUFBQUFBQ0NnRHdBQUFCRUFDUUFBQVAvbHNEQ2dEd0FBQUJFQUNRQUFBUC8vLzBDZ0RnQUFBREFBQ0FBQUFERUFRYUFPQUFBQU1BQUlBQUFBTWdCUW9BNEFBQUF3QUFnQUFBQUFBRktnRGdBQUFEQUFDQUFBQUFBQVU2QU9BQUFBTUFBSUFBQUFBQUFBb1FnQUFBQURBSVNnRGdBQUFEQUFDQUFBQUFBQS82K2pBQUFBQUtBVUFBQUFjbUYyTkMxbWJDMW1jbUZ0WlFBUW9BOEFBQUFSQUFrQUFBQUFBQUFnb0E4QUFBQVJBQWtBQUFCSlNVa3dvQThBQUFBUkFBa0FBQUQvLy85QW9BNEFBQUF3QUFnQUFBQXhBRUdnRGdBQUFEQUFDQUFBQURJQVVLQU9BQUFBTUFBSUFBQUFBQUJTb0E0QUFBQXdBQWdBQUFBQUFGT2dEZ0FBQURBQUNBQUFBQUFBQUtFSUFBQUFBd0NFb0E0QUFBQXdBQWdBQUFBQUFQK3Zvd0FBQUFDZ0ZBQUFBSEpoZGpRdFptd3RaMnhoYzNNQUVLQVBBQUFBRVFBSkFBQUFBQUFBSUtBUEFBQUFFUUFKQUFBQVpHUmtNS0FQQUFBQUVRQUpBQUFBLy8vL1FLQU9BQUFBTUFBSUFBQUFKd0JCb0E0QUFBQXdBQWdBQUFBN0FGQ2dEZ0FBQURBQUNBQUFBRmtBVXFBT0FBQUFNQUFJQUFBQUFBQlRvQTRBQUFBd0FBZ0FBQUFBQUFDaENBQUFBQU1BaEtBT0FBQUFNQUFJQUFBQUFBRC9yNllBQUFBQW9CRUFBQUJ5WVhZMExXZHNZWE56QUJDZ0R3QUFBQkVBQ1FBQUFBQUFBQ0NnRHdBQUFCRUFDUUFBQUM0dUxqQ2dEd0FBQUJFQUNRQUFBUC8vLzBDZ0RnQUFBREFBQ0FBQUFEc0FRYUFPQUFBQU1BQUlBQUFBUlFCUW9BNEFBQUF3QUFnQUFBQXlBRktnRGdBQUFEQUFDQUFBQUFBQVU2QU9BQUFBTUFBSUFBQUFBQUNCb0FZQUFBQUFvUWdBQUFBREFJU2dEZ0FBQURBQUNBQUFBQUFBLzYvNUFBQUFBS0FRQUFBQWNtRjJOQzFuY21sa0FCQ2dEd0FBQUJFQUNRQUFBQUFBQUNDZ0R3QUFBQkVBQ1FBQUFGQlFVRENnRHdBQUFCRUFDUUFBQURNek0wQ2dEZ0FBQURBQUNBQUFBRElBUWFBT0FBQUFNQUFJQUFBQU1nQlFvQTRBQUFBd0FBZ0FBQUFBQUZLZ0RnQUFBREFBQ0FBQUFBQUFVNkFPQUFBQU1BQUlBQUFBQUFBQW9RZ0FBQUFEQUlTZ0RnQUFBREFBQ0FBQUFBQUFFS0phQUFBQU1BQUlBQUFBWkFBQW94SUFBQUJpZFcxd1ltVmxMbXB3WndCVW93b0FBQUFBQUlBL1ZxTUtBQUFBQUFDQVAxaWpDZ0FBQUFBQUFJQllvd29BQUFBQUFBQ0FYS01LQUFBQUFBQUFBRkdqQ0FBQUFBQUEvNitoQUFBQUFLQVNBQUFBY21GMk5DMXBibk5wWkdVQUVLQVBBQUFBRVFBSkFBQUFBQUFBSUtBUEFBQUFFUUFKQUFBQXlNV25NS0FQQUFBQUVRQUpBQUFBS0Nnb1FLQU9BQUFBTUFBSUFBQUFXd0JCb0E0QUFBQXdBQWdBQUFBQUFGQ2dEZ0FBQURBQUNBQUFBQUFBVXFBT0FBQUFNQUFJQUFBQUFBQlRvQTRBQUFBd0FBZ0FBQUFBQUFDaENBQUFBQU1BaEtBT0FBQUFNQUFJQUFBQUFBQUFRSzl0QWdCVWIzbHZkR0ZmVWtFeEFBQkJubTBDQUJCQndNVUFBSG9RVGI2eVFiRnpLajlXWjNyQklBTEtRVG1xUDBGQ3NHN0J3WGJFUWVNck5rRWlCVy9CcDBtNFFmc2FJai8vYTNyQjNXVTFRYVgvUlQvd1YzckIzV1UxUVFiN05rSG8vVzdCVGI2eVFmUGo3TUZUbVd2QnAwbTRRVlgrbjhFZmZXTEJUYjZ5UVpHN244RjNlR0xCcDBtNFFiZ203Y0g3bld2QjNXVTFRWmdIN01IdGlXdkIzV1UxUVRIZm5zRVJhV0xCRmplcFFESGZuc0VSYVdMQkZqZXBRRjg0QThJa1ltM0I2Z21iUUJIK25zRzFnRnZCNmdtYlFNNUhBOExJZVdiQjZnbWJRSGRMbnNHblNMUEE2Z21iUUZZOEJNTGZJUExBVS9PVFFOTzhuOEZvTjRyQVUvT1RRS1pxQk1MS3JzakFBQUFBQU5POG44Rm9ONHJBQUFBQUFLWnFCTUxLcnNqQUZqZXBRS1gvUlQvd1YzckI2Z21iUU1NY05rRkdVR2pCNmdtYlFLZ2pRaitaYjNQQkZqZXBRS2xZTmtHU0EyL0I2Z21iUUIxanlUL25SWGZBNmdtYlFKNEpYa0Z1R1NuQWFJM05RZnNhSWovL2EzckJhSTNOUVJ2dE5VRlVCMi9CYUkzTlFiZ203Y0g3bld2QmFJM05RVlgrbjhFZmZXTEJwMG00UVJQa1pzRlZhNEhCVGI2eVFSUGtac0ZWYTRIQjNXVTFRUlBrWnNGVmE0SEJGamVwUUJQa1pzRlZhNEhCNmdtYlFOWWhaOEZRN252QjZnbWJRQXA5WjhFS0djekFVL09UUUw1ZmFzSFdCNlBBQUFBQUFMNWZhc0hXQjZQQWFJM05RUlBrWnNGVmE0SEJUYjZ5UWFhNHk4QXRWWDdCcDBtNFFhYTR5OEF0Vlg3QjNXVTFRYWE0eThBdFZYN0JGamVwUUthNHk4QXRWWDdCNmdtYlFDdzB6TURTYkhmQjZnbWJRUFYrMXNDVUhzakFVL09UUUhyeDE4Q0JySjdBQUFBQUFIcngxOENCcko3QWFJM05RYWE0eThBdFZYN0JwMG00UWMwekJzQ0I4bnZCVGI2eVFjMHpCc0NCOG52QjNXVTFRYzB6QnNDQjhudkJGamVwUU0wekJzQ0I4bnZCNmdtYlFOTXFCOEFvQ25YQjZnbWJRS21MeHIvdmo0WEFVL09UUUxGVnpMKzRPempBVS9PVFFDWjNYVUdLV3JHL1UvT1RRTzNYd3orLzRTVEFBQUFBQUxGVnpMKzRPempBQUFBQUFDWjNYVUdLV3JHL0FBQUFBTzNYd3orLzRTVEFhSTNOUWMwekJzQ0I4bnZCYUkzTlFlSzd5a0VoZEYvQklBTEtRZUs3eWtFaGRGL0I2Z21iUUFlanlrSFV3RmpCNmdtYlFBUG94MEU3dGVLL3gyQVNRTlczZk1ISWszSEFacFoyUUM2UmZjSDZEWExBRnBCU1FJb3dlc0hlSjNEQVRNQVNRQzZSZmNINkRYTEFGamVwUU9LN3lrRWhkRi9CM1dVMVFlSzd5a0VoZEYvQlUvT1RRRytkeDBGRnpBTy9BQUFBQUcrZHgwRkZ6QU8vd1hiRVFlSzd5a0VoZEYvQmFJM05RWi80NzhINE9KVEFhSTNOUVQzUW9zRkE5NEhBYUkzTlFlS0hiTUZjcXNMQWFJM05RVWtBMThCZ3A3bkFhSTNOUVFmREhNQUo0clRBYUkzTlFjVzdqejRIMWJIQWFJM05RVXBKTUVHdkM1dkFhSTNOUWJOa3lFR2F5bmZBaGxEUVFTcnVHTUxoYytWQWhsRFFRVE5md3NFRDN3aEJobERRUVFscGs4R3hYdzFCaGxEUVFmYks1c0Q0UndWQmhsRFFRV2hZUE1Da3FnZEJobERRUWJ6ZFdiNG1NUWxCaGxEUVFmTmpLRUhTbFJSQmhsRFFRVGtHNWtFR0tTUkJ2dGJWUVZLZkRjSmUyQzlCdnRiVlFVODJ3OEc5MDBaQnZ0YlZRUnhVbDhIZDVrUkJ2dGJWUVlkSzk4Qjhqa05CdnRiVlFUbW5SY0FZd0VoQnZ0YlZRZUxkdTc1aGoweEJ2dGJWUVpBWEpVSCs3V0JCdnRiVlFYU1Q1RUVZSEhkQldqWHZRUTVJQ3NMRUFUTkJXalh2UVFNMHFzSG0va1JCV2pYdlFjL3JmTUZLSlV0QldqWHZRWkRMK01BMUYxbEJXalh2UVVDcFNNRFNTRjVCV2pYdlFhU2FlNzRxTUdKQldqWHZRUytISkVHSEZIRkJXalh2UVZKajVFRTg4SUJCV2pYdlFjaWpGa0w1em9kQi9ackhRV1JQRmtKUlRZSkJDTDNEUVhjeElVSkJzVXBCRHM3QlFUUG9Ea0tsR2xmQURzN0JRWjdOQ2tKTitGckI5VksvUVo3TkNrSk4rRnJCYUhHN1FaN05Da0pOK0ZyQjh2RHVRSjdOQ2tKTitGckIxTGR2UUo3TkNrSk4rRnJCL2Q1YlFETDVDa0xUSFZUQi9kNWJRTlRDRDBKOU1adS9rdkpSUUpkRkVFSUxtNVE5QUFBQUFKZEZFRUlMbTVROU1jdmtRY0R2UVVKTWlvZEJGQXVsUVY3ZVJVTC9DRVZCV2pYdlFTVkVRa0x6QzQxQlNFYXRRV0pWSWtMQ2JoMC9vZW1tUWN5L0lVSWx4NzIvOHZEdVFNeS9JVUlseDcyL0w4dXFRY3kvSVVJbHg3Mi9rdkpSUU9RR0pFTG5aWnMvQUFBQUFPUUdKRUxuWlpzLy9kNWJRS2hrSTBKaFpuMC8vZDViUU9EMUlVSklOclMvMUxkdlFNeS9JVUlseDcyL1NFYXRRY3kvSVVJbHg3Mi9MU2ZUUVNRUVAwTHRSbjFCQ2xXOFFheTZQa0x3dW9WQmxOT2lRV1hpUlVLUENVVkJBQUFBQUNRUVAwS3NQSXRCQUFBQUFLeTZQa0x3dW9WQkFBQUFBR1hpUlVLUENVVkJXalh2UWIyc2hFSS8xb0pCU3ZXdlFXNjRoRUxpMTRKQkFBQUFBRzY0aEVMaTE0SkJwd25VUWRGd25VS2pPbkJCRW9LUFFmeXBtRUtXL205QkFBQUFBSHRpblVJaitYRkI0Uk82UVY2Ym8wSTlDM2xCOHBCK1FWbk1wa0lLQ1h0QkFBQUFBSWkvcVVMemhIeEI4cEIrUVJuQ3BVSmJHbzlCQUFBQUFFaTFxRUpRMkk5QjRSTzZRWXJIb1VMNDJwMUJwd25VUWY2Y20wS3JjcGxCV2pYdlFYeWlnMElWYkpSQldqWHZRVEFOUTBJMGw0MUJJQUxLd1RtcVAwRkNzRzdCVGI2eXdiRnpLajlXWjNyQndYYkV3ZU1yTmtFaUJXL0JwMG00d2ZzYUlqLy9hM3JCM1dVMXdhWC9SVC93VjNyQjNXVTF3UWI3TmtIby9XN0JwMG00d1ZYK244RWZmV0xCVGI2eXdmUGo3TUZUbVd2QlRiNnl3Wkc3bjhGM2VHTEJwMG00d2JnbTdjSDduV3ZCM1dVMXdaZ0g3TUh0aVd2QjNXVTF3VEhmbnNFUmFXTEJGamVwd0RIZm5zRVJhV0xCRmplcHdGODRBOElrWW0zQjZnbWJ3QkgrbnNHMWdGdkI2Z21id001SEE4TEllV2JCNmdtYndIZExuc0duU0xQQTZnbWJ3Rlk4Qk1MZklQTEFVL09Ud05POG44Rm9ONHJBVS9PVHdLWnFCTUxLcnNqQTZnbWJ3TU1jTmtGR1VHakJGamVwd0tYL1JUL3dWM3JCNmdtYndLZ2pRaitaYjNQQkZqZXB3S2xZTmtHU0EyL0I2Z21id0IxanlUL25SWGZBNmdtYndKNEpYa0Z1R1NuQWFJM053ZnNhSWovL2EzckJhSTNOd1J2dE5VRlVCMi9CYUkzTndiZ203Y0g3bld2QmFJM053VlgrbjhFZmZXTEJwMG00d1JQa1pzRlZhNEhCVGI2eXdSUGtac0ZWYTRIQjNXVTF3UlBrWnNGVmE0SEJGamVwd0JQa1pzRlZhNEhCNmdtYndOWWhaOEZRN252QjZnbWJ3QXA5WjhFS0djekFVL09Ud0w1ZmFzSFdCNlBBYUkzTndSUGtac0ZWYTRIQlRiNnl3YWE0eThBdFZYN0JwMG00d2FhNHk4QXRWWDdCM1dVMXdhYTR5OEF0Vlg3QkZqZXB3S2E0eThBdFZYN0I2Z21id0N3MHpNRFNiSGZCNmdtYndQVisxc0NVSHNqQVUvT1R3SHJ4MThDQnJKN0FhSTNOd2FhNHk4QXRWWDdCcDBtNHdjMHpCc0NCOG52QlRiNnl3YzB6QnNDQjhudkIzV1Uxd2MwekJzQ0I4bnZCRmplcHdNMHpCc0NCOG52QjZnbWJ3Tk1xQjhBb0NuWEI2Z21id0ttTHhyL3ZqNFhBVS9PVHdMRlZ6TCs0T3pqQVUvT1R3TzNYd3orLzRTVEFVL09Ud0NaM1hVR0tXckcvYUkzTndjMHpCc0NCOG52QmFJM053ZUs3eWtFaGRGL0JJQUxLd2VLN3lrRWhkRi9CNmdtYndBZWp5a0hVd0ZqQjZnbWJ3QVBveDBFN3RlSy9pZ3FsUHd5SmRzSHZHVzdBZDV5Y1AxZ0plc0hWRVhEQVRCY1NRS0lRZk1IR05YSEFGamVwd09LN3lrRWhkRi9CM1dVMXdlSzd5a0VoZEYvQlUvT1R3RytkeDBGRnpBTy93WGJFd2VLN3lrRWhkRi9CYUkzTndaLzQ3OEg0T0pUQWFJM053VDNRb3NGQTk0SEFhSTNOd2VLSGJNRmNxc0xBYUkzTndVa0ExOEJncDduQWFJM053UWZESE1BSjRyVEFhSTNOd2NXN2p6NEgxYkhBYUkzTndVcEpNRUd2QzV2QWFJM053Yk5reUVHYXluZkFobERRd1NydUdNTGhjK1ZBaGxEUXdUTmZ3c0VEM3doQmhsRFF3UWxwazhHeFh3MUJobERRd2ZiSzVzRDRSd1ZCaGxEUXdXaFlQTUNrcWdkQmhsRFF3YnpkV2I0bU1RbEJobERRd2ZOaktFSFNsUlJCaGxEUXdUa0c1a0VHS1NSQnZ0YlZ3VktmRGNKZTJDOUJ2dGJWd1U4Mnc4RzkwMFpCdnRiVndSeFVsOEhkNWtSQnZ0YlZ3WWRLOThCOGprTkJ2dGJWd1RtblJjQVl3RWhCdnRiVndlTGR1NzVoajB4QnZ0YlZ3WkFYSlVIKzdXQkJ2dGJWd1hTVDVFRVlISGRCV2pYdndRNUlDc0xFQVROQldqWHZ3UU0wcXNIbS9rUkJXalh2d2MvcmZNRktKVXRCV2pYdndaREwrTUExRjFsQldqWHZ3VUNwU01EU1NGNUJXalh2d2FTYWU3NHFNR0pCV2pYdndTK0hKRUdIRkhGQldqWHZ3VkpqNUVFODhJQkJXalh2d2NpakZrTDV6b2RCL1pySHdXUlBGa0pSVFlKQkNMM0R3WGN4SVVKQnNVcEJEczdCd1RQb0RrS2xHbGZBRHM3QndaN05Da0pOK0ZyQjlWSy93WjdOQ2tKTitGckJhSEc3d1o3TkNrSk4rRnJCOHZEdXdKN05Da0pOK0ZyQjFMZHZ3SjdOQ2tKTitGckIvZDVid0RMNUNrTFRIVlRCL2Q1YndOVENEMEo5TVp1L2t2SlJ3SmRGRUVJTG01UTlNY3Zrd2NEdlFVSk1pb2RCRkF1bHdWN2VSVUwvQ0VWQldqWHZ3U1ZFUWtMekM0MUJTRWF0d1dKVklrTENiaDAvb2VtbXdjeS9JVUlseDcyLzh2RHV3TXkvSVVJbHg3Mi9MOHVxd2N5L0lVSWx4NzIva3ZKUndPUUdKRUxuWlpzLy9kNWJ3S2RrSTBKaFpuMC8vZDVid09EMUlVSklOclMvMUxkdndNeS9JVUlseDcyL1NFYXR3Y3kvSVVJbHg3Mi9MU2ZUd1NRUVAwTHRSbjFCQ2xXOHdheTZQa0x3dW9WQmxOT2l3V1hpUlVLUENVVkJXalh2d2Iyc2hFSS8xb0pCU3ZXdndXNjRoRUxpMTRKQnB3blV3ZEZ3blVLak9uQkJFb0tQd2Z5cG1FS1cvbTlCNFJPNndWNmJvMEk5QzNsQjhwQit3Vm5NcGtJS0NYdEI4cEIrd1JuQ3BVSmJHbzlCNFJPNndZckhvVUw0MnAxQnB3blV3ZjZjbTBLcmNwbEJXalh2d1h5aWcwSVZiSlJCV2pYdndUQU5RMEkwbDQxQjlRdnRRZmhvQU1LWHdRWS9YRDdkUVJ4akE4SkFHZ0EvWEQ3ZFFmaG9BTUtYd1FZLzlRdnRRUnhqQThKQUdnQS85UXZ0UWNXLzdNSFlydDAvWEQ3ZFFjVy83TUhZcnQwL2FFVGtRWThOcmNGYkxraEFYRDdkUVRPY3BjR2xRa3BBYUVUa1FVRDNvTUVIV0pwQVhEN2RRZVdGbWNFc1lwdEFhRVRrUVZreW5zRTVsTEpBWEQ3ZFFmckFsc0ZlbnJOQWFFVGtRZEtjbnNHNE4rSkFYRDdkUVhRcmw4SGRRZU5BYUVUa1FZK3hvY0VrdHUxQVhEN2RRVGhBbXNGSndPNUFhRVRrUVhxM21jSFFxd2hCWEQ3ZFFSeEdrc0hqTUFsQmFFVGtRWG1DbDhHcGZCOUJYRDdkUVI0UmtNRzlBU0JCYUVUa1FaNHlzY0hhMlVkQlhEN2RRYWVmbmNIUGUwUkJYRDdkUVVYQnFjSHRYa2hCYUVUa1FRVVJwY0c4OWtOQlhEN2RRWjQ0bE1HWnRUVkJhRVRrUWZtcG04R0hNRFZCOVF2dFFkWDc2OEUzRkJkQTlRdnRRU1c4NzhId0J4WkE5UXZ0UVZKczdjRkVyUlpBYUVUa1FWNlp3TUZtYjF4QWFFVGtRV1dJdGNFV09vVkFhRVRrUVNiWXM4RWc3WnBBYUVUa1FSOFl0c0VDaXNWQWFFVGtRVDBJdU1GQWJNeEFhRVRrUVdiL3NzRUoxdUZBYUVUa1FRNVR4OEdmdnlSQmFFVGtRU2F2djhFR2NTSkJhRVRrUWJrcHQ4RVhsUXhCYUVUa1FjdkV1Y0dYbUJsQlJ6TFBRUnhHa3NIak1BbEJSekxQUVRoQW1zRkp3TzVBUnpMUFFSNFJrTUc5QVNCQlJ6TFBRZVdGbWNFc1lwdEFSekxQUVRPY3BjR2xRa3BBUnpMUFFjVy83TUhZcnQwL1J6TFBRZmhvQU1LWHdRWS9SekxQUVJ4akE4SkFHZ0EvUzdYU1FQaG9BTUtYd1FZL1M3VlNRUnhqQThKQUdnQS9TN1hTUUJ4akE4SkFHZ0EvUzdWU1FmaG9BTUtYd1FZLzZINlRRUnhqQThKQUdnQS82SDZUUWZob0FNS1h3UVkvUzdYU1FNVy83TUhZcnQwL1M3VlNRY1cvN01IWXJ0MC82SDZUUWNXLzdNSFlydDAvUzdYU1FET2NwY0dsUWtwQVM3VlNRVE9jcGNHbFFrcEE2SDZUUVRPY3BjR2xRa3BBUzdYU1FPV0ZtY0VzWXB0QVM3VlNRZVdGbWNFc1lwdEE2SDZUUWVXRm1jRXNZcHRBUzdYU1FCeEdrc0hqTUFsQlM3VlNRVGhBbXNGSndPNUFTN1hTUURoQW1zRkp3TzVBUzdWU1FSeEdrc0hqTUFsQjZINlRRVGhBbXNGSndPNUE2SDZUUVJ4R2tzSGpNQWxCRlpldlFCNFJrTUc5QVNCQlM3VlNRUjRSa01HOUFTQkI2SDZUUVI0UmtNRzlBU0JCSEc3QlFOSFZ0c0dUR2xoQlNqODVRUzlucmNGOVpvUkJIRzdCUUJLNHJNR1c2bHBCU2o4NVFkWDR2c0U3ZjN4QmV6bUtRUzlucmNGOVpvUkJlem1LUWRYNHZzRTdmM3hCU2o4NVFUaUVwOEY2bUlSQkhHN0JRQkFVcDhIRnBHQkJlem1LUVRpRXA4RjZtSVJCU2o4NVFjc0xwc0dhaTRCQkhHN0JRSGxVcHNIZTZWZEJlem1LUWNzTHBzR2FpNEJCUzdYU1FFa3Fvc0Ztejc4L1M3WFNRSmd1bHNFZk8yUkFTN1hTUU5hRjNNRnBySzYvUzdYU1FHZEYvY0dNK01DL1M3WFNRQjVSOThIbnBMMi9wYzZpUUsvZG5zRlhqTGMrcGM2aVFESGhrc0g0alJwQXBjNmlRSzhmMmNFc0tqZkFwYzZpUVBicTg4RnVwajdBcGM2aVFEM2YrY0ZBVUVEQXBjNmlRRHRqcDhHOHpKSy9wYzZpUUhEVmxjRUNYaFU5cGM2aVFOdDEzc0ZOS0tQQXBjNmlRQy81NzhHTG1xWEFwYzZpUUh6dDljRjBiNmJBcGM2aVFKUHh1TUV3cUJUQXBjNmlRTVZqcDhIUTJKRy9wYzZpUUc5MTc4RjRqdURBcGM2aVFOYXc5OEhZdE9IQXBjNmlRQitsL2NIRGllTEFwYzZpUU9DOHVNRzUwVVBBcGM2aVFCRXZwOEhXSy9DL3BjNmlRTGxBNzhFK0kvakFwYzZpUUNGODk4R2VTZm5BcGM2aVFHcHcvY0dHSHZyQXBjNmlRRThPcWNHekEyL0FwYzZpUUlDQWw4SHNSeVBBcGM2aVFKeDA3Y0dXcGczQnBjNmlRQUt3OWNIRU9RN0JwYzZpUUVxays4RTZwQTdCek8rQlFKS3cxc0diSWVlL3pPK0JRQkV2cDhIV0svQy96TytCUUs1NzFzRmEvaTNBek8rQlFNVmpwOEhRMkpHL3pPK0JRSUNBbDhIc1J5UEF6TytCUVAyWTFjRU9tWlBBcXJsMlFLNTcxc0ZhL2kzQXFybDJRUDJZMWNFT21aUEFxcmwyUUlDQWw4SHNSeVBBcXJsMlFKS3cxc0diSWVlL3FybDJRTVZqcDhIUTJKRy9xcmwyUUhEVmxjRUNYaFU5ek8rQlFIRFZsY0VDWGhVOXFybDJRREhoa3NINGpScEF6TytCUURIaGtzSDRqUnBBQ1pHb1FEaEFtc0ZKd081QVpDT2dRQnhHa3NIak1BbEJDWkdvUUJ4R2tzSGpNQWxCWkNPZ1FEaEFtc0ZKd081QVpDT2dRQjRSa01HOUFTQkJDWkdvUUI0UmtNRzlBU0JCWkNPZ1FKNDRsTUdadFRWQkNaR29RSjQ0bE1HWnRUVkJaQ09nUUtlZm5jSFBlMFJCQ1pHb1FLZWZuY0hQZTBSQlpDT2dRRVhCcWNIdFhraEJDWkdvUUVYQnFjSHRYa2hCS1lXZlFCRXZwOEhXSy9DL0tZV2ZRSUNBbDhIc1J5UEFLWVdmUU1WanA4SFEySkcvS1lXZlFIRFZsY0VDWGhVOUtZV2ZRREhoa3NINGpScEFlSDdPUUpndWxzRWZPMlJBZUg3T1FPV0ZtY0VzWXB0QWVIN09RUHJBbHNGZW5yTkFTN1hTUVByQWxzRmVuck5BZUg3T1FIUXJsOEhkUWVOQVM3WFNRSFFybDhIZFFlTkFlSDdPUURoQW1zRkp3TzVBZUg3T1FCeEdrc0hqTUFsQlFtQ3JRQjRSa01HOUFTQkJRbUNyUUo0NGxNR1p0VFZCRlpldlFKNDRsTUdadFRWQlFtQ3JRS2VmbmNIUGUwUkJGWmV2UUtlZm5jSFBlMFJCUW1DclFFWEJxY0h0WGtoQkZaZXZRRVhCcWNIdFhraEJJK1dFUUlDQWw4SHNSeVBBSStXRVFCRXZwOEhXSy9DL0krV0VRTVZqcDhIUTJKRy9JK1dFUUhEVmxjRUNYaFU5SStXRVFESGhrc0g0alJwQS9GdXNRSmd1bHNFZk8yUkEvRnVzUU9XRm1jRXNZcHRBL0Z1c1FQckFsc0ZlbnJOQS9GdXNRSFFybDhIZFFlTkEvRnVzUURoQW1zRkp3TzVBL0Z1c1FCeEdrc0hqTUFsQi9GdXNRQjRSa01HOUFTQkIvRnVzUUo0NGxNR1p0VFZCL0Z1c1FLZWZuY0hQZTBSQi9GdXNRRVhCcWNIdFhraEJVQnlBUDU0NGxNR1p0VFZCQUFBQUFLZWZuY0hQZTBSQlVCeUFQNmVmbmNIUGUwUkJBQUFBQUo0NGxNR1p0VFZCVUJ5QVB4NFJrTUc5QVNCQkFBQUFBQjRSa01HOUFTQkJVQnlBUHh4R2tzSGpNQWxCQUFBQUFCeEdrc0hqTUFsQlVCeUFQemhBbXNGSndPNUFBQUFBQURoQW1zRkp3TzVBc24wN1AzRFZsY0VDWGhVOUFBQUFBREhoa3NINGpScEFzbjA3UHpIaGtzSDRqUnBBQUFBQUFIRFZsY0VDWGhVOXNuMDdQOFZqcDhIUTJKRy9BQUFBQU1WanA4SFEySkcvc24wN1A1S3cxc0diSWVlL0FBQUFBSkt3MXNHYkllZS9zbjA3UDY1NzFzRmEvaTNBQUFBQUFLNTcxc0ZhL2kzQXNuMDdQLzJZMWNFT21aUEFBQUFBQVAyWTFjRU9tWlBBc24wN1A0Q0FsOEhzUnlQQUFBQUFBSUNBbDhIc1J5UEFBQUFBQUVYQnFjSHRYa2hCVUJ5QVAwWEJxY0h0WGtoQlVCeUFQOGpjbmNGT1pFTkJVQnlBUDJPemxNR1FBRFZCWkNPZ1FNamNuY0ZPWkVOQlpDT2dRR096bE1HUUFEVkJVQnlBUHhDcGtNRW01eDlCWkNPZ1FCQ3BrTUVtNXg5QlpDT2dRTFRLcWNGeUxrZEJVQnlBUDdUS3FjRnlMa2RCVUJ5QVAycmVvTUdSYkVGQlVCeUFQMnVGbU1HanVqTkJaQ09nUUdyZW9NR1JiRUZCWkNPZ1FHdUZtTUdqdWpOQlVCeUFQMTNVbE1HcHJCOUJaQ09nUUYzVWxNR3ByQjlCWkNPZ1FGRzZxOEdvRGtWQlVCeUFQMUc2cThHb0RrVkJWcC9BUVI0UmtNRzlBU0JCVnAvQVFSeEdrc0hqTUFsQlZwL0FRVGhBbXNGSndPNUFWcC9BUWVXRm1jRXNZcHRBVnAvQVFUT2NwY0dsUWtwQVZwL0FRY1cvN01IWXJ0MC9WcC9BUWZob0FNS1h3UVkvVnAvQVFSeGpBOEpBR2dBL0doSGRRU21ra01IZjV4OUJSekxQUVJDcGtNRW01eDlCSkJqZFFUbXdsTUc4QXpWQmppbmRRZVBibmNIQ1pVTkJSekxQUVVYQnFjSHRYa2hCampuZFFhN0txY0dNTGtkQlJ6TFBRYlRLcWNGeUxrZEJWcC9BUVVYQnFjSHRYa2hCVnAvQVFiVEtxY0Z5TGtkQlZwL0FRYWVmbmNIUGUwUkJWcC9BUWNqY25jRk9aRU5CVnAvQVFaNDRsTUdadFRWQlZwL0FRV096bE1HUUFEVkJWcC9BUVJDcGtNRW01eDlCR2hIZFFhSFBsTUVXbmg5QlJ6TFBRUmJVbE1Gc25SOUJKQmpkUVVTQ21NRmxyak5CamluZFFWWGRvTUd5WGtGQmpqbmRRUVM2cThHRC8wUkJSekxQUVFxNnE4RnIvMFJCVnAvQVFRcTZxOEZyLzBSQlZwL0FRU2Jlb01GUVhVRkJWcC9BUVNlRm1NRmtxek5CVnAvQVFSYlVsTUZzblI5QlJ6TFBRZk53bThGdGllNUFaT0hjUVpWbW04R05pdTVBdXVuY1FYczRtTUZtVCtGQS8rVGNRUnptbDhGcE03UkFSekxQUVM1em1zRVFZWjVBVVBqY1FlTnNtc0huV3A1QVM3WFNRQm1ybXNIYXNweEFTN1ZTUVM1em1zRVFZWjVBUzdYU1FKM3ZsOEd1TjdSQTZINlRRUzV6bXNFUVlaNUFTN1hTUUFsQm1NSE9SK0ZBUzdWU1FmTndtOEZ0aWU1QVM3WFNRUE53bThGdGllNUE2SDZUUWZOd204RnRpZTVBVnAvQVFmTndtOEZ0aWU1QVZwL0FRUzV6bXNFUVlaNUEvRnVzUUgzd21jSGRUWnRBL0Z1c1FCT1lsc0cyOFdOQS9GdXNRTkt2bmNFamw1cEEvRnVzUUhCTm1zR1pYR0ZBSStXRVFPaExrOEY3ZFJwQUkrV0VRRWNNbDhFTm1SbEF6TytCUU9oTGs4RjdkUnBBek8rQlFFY01sOEVObVJsQXFybDJRT2hMazhGN2RScEFxcmwyUUVjTWw4RU5tUmxBc24wN1AraExrOEY3ZFJwQUFBQUFBT2hMazhGN2RScEFzbjA3UDBjTWw4RU5tUmxBQUFBQUFFY01sOEVObVJsQS9GdXNRSk1ybDhGR21iTkEvRnVzUU4vcW1zRkdhN05BL0Z1c1FNdVVsOEhORytOQS9GdXNRTTlJbThFWXhlRkEvRnVzUU9tcW1zSENzTzVBL0Z1c1FDaHJuc0VZSmU1QUNaR29RT21xbXNIQ3NPNUFDWkdvUUNocm5zRVlKZTVBWkNPZ1FPbXFtc0hDc081QVpDT2dRQ2hybnNFWUplNUFVQnlBUCttcW1zSENzTzVBVUJ5QVB5aHJuc0VZSmU1QUFBQUFBT21xbXNIQ3NPNUFBQUFBQUNocm5zRVlKZTVBcGM2aVFQY1BqOEV1c3pqQXBjNmlRTWlkb01GN040TEFwYzZpUUpsRzdjR3RhQS9CcGM2aVFQbWdqOEZkRXpqQnBjNmlRSWtDNjhGQlhFVEJwYzZpUUFDQzljSGMrdy9CcGM2aVFPNDk4OEZ1NzBUQnBjNmlRRWQyKzhGUlpoREJwYzZpUURneStjSGpXVVhCS1lXZlFQY1BqOEV1c3pqQUkrV0VRUGNQajhFdXN6akF6TytCUVBjUGo4RXVzempBcXJsMlFQY1BqOEV1c3pqQUFBQUFBUGNQajhFdXN6akFzbjA3UC9jUGo4RXVzempBVnZPUlFBMmRoTUZxVGpmQlZ2T1JRR0xBZzhHTmJwL0FWdk9SUUozN2hNRWJ4SGpBMnFtT1FKMzdoTUVieEhqQUkrV0VRSjM3aE1FYnhIakF6TytCUUozN2hNRWJ4SGpBcXJsMlFKMzdoTUVieEhqQXNuMDdQNTM3aE1FYnhIakFBQUFBQUozN2hNRWJ4SGpBVnZPUlFKOEVoTUhGUXpmQlZ2T1JRRnNwZzhHa0daL0FWdk9SUUpaa2hNRkdHbmpBMnFtT1FKWmtoTUZHR25qQUkrV0VRSlpraE1GR0duakF6TytCUUpaa2hNRkdHbmpBcXJsMlFKWmtoTUZHR25qQXNuMDdQNVpraE1GR0duakFBQUFBQUpaa2hNRkdHbmpBK2hDTlFKa0VoTUg2UkRmQitoQ05RTEFNZzhFL1NhTEEraENOUUhVK2hNSHZTWURBdk9DSlFIVStoTUh2U1lEQWdlaUFRSFUraE1IdlNZREF4eE44UUhVK2hNSHZTWURBMDFKdlFIVStoTUh2U1lEQXd0MDFQM1UraE1IdlNZREFBQUFBQUhVK2hNSHZTWURBK2hDTlFQVWZnOEVDTlRmQitoQ05RQ1FxZ3NIaHlhSEEraENOUU9sYmc4RWxsWC9Bdk9DSlFPbGJnOEVsbFgvQWdlaUFRT2xiZzhFbGxYL0F4eE44UU9sYmc4RWxsWC9BMDFKdlFPbGJnOEVsbFgvQXd0MDFQK2xiZzhFbGxYL0FBQUFBQU9sYmc4RWxsWC9BbjlpUlFQb2ZnOEhZTXpmQm45aVJRUEJGZ3NHOXNwN0FuOWlSUU9DQWc4R1pYSGZBNUkrT1FPQ0FnOEdaWEhmQVQ5R0VRT0NBZzhHWlhIZkFwZHlCUU9DQWc4R1pYSGZBWnBaMlFPQ0FnOEdaWEhmQXk2ZzdQK0NBZzhHWlhIZkFBQUFBQU9DQWc4R1pYSGZBeTZnN1A2bGdaY0dEZEdUQUFBQUFBSkFnZE1GYnYyekF5Nmc3UDVBZ2RNRmJ2MnpBQUFBQUFLbGdaY0dEZEdUQXBkeUJRS2xnWmNHRGRHVEFacFoyUUpBZ2RNRmJ2MnpBcGR5QlFKQWdkTUZidjJ6QVpwWjJRS2xnWmNHRGRHVEFUOUdFUUtsZ1pjR0RkR1RBVDlHRVFKQWdkTUZidjJ6QTVJK09RS2xnWmNHRGRHVEE1SStPUUpBZ2RNRmJ2MnpBbjlpUlFLbGdaY0dEZEdUQW45aVJRSkFnZE1GYnYyekFuOWlSUU1UcVlzR3dQcFhBbjlpUlFMR3FjY0ViWkpuQTY4eHlRUFVmZzhFQ05UZkJNRng4UVBvZmc4SFlNemZCNjh4eVFKa0VoTUg2UkRmQm41RjhRSjhFaE1IRlF6ZkJuNUY4UUEyZGhNRnFUamZCSHlTUFFQbWdqOEZkRXpqQkh5U1BRSWtDNjhGQlhFVEJ3TDEyUUxHcWNjRWJaSm5BUHBtUFFEc3ljOEdDaVRiQndMMTJRRHN5YzhHQ2lUYkJQcG1QUUxHcWNjRWJaSm5BbjlpUlFEc3ljOEdDaVRiQndMMTJRTVRxWXNHd1BwWEFQcG1QUU1UcVlzR3dQcFhBd0wxMlFCWk5VTUdmQnJyQVBwbVBRTGgzUXNHUEg0ekF3TDEyUUxoM1FzR1BINHpBUHBtUFFCWk5VTUdmQnJyQW45aVJRTGgzUXNHUEg0ekFuOWlSUUJaTlVNR2ZCcnJBbjlpUlFKM3RSTUZHTmxMQW45aVJRUHpDVXNFMUFwZkE1SStPUUozdFJNRkdObExBNUkrT1FQekNVc0UxQXBmQVQ5R0VRSjN0Uk1GR05sTEFUOUdFUVB6Q1VzRTFBcGZBcGR5QlFKM3RSTUZHTmxMQXBkeUJRUHpDVXNFMUFwZkFacFoyUUozdFJNRkdObExBWnBaMlFQekNVc0UxQXBmQXk2ZzdQL3pDVXNFMUFwZkFBQUFBQUozdFJNRkdObExBeTZnN1A1M3RSTUZHTmxMQUFBQUFBUHpDVXNFMUFwZkFYRDdkd1J4akE4SkFHZ0EvOVF2dHdmaG9BTUtYd1FZL1hEN2R3ZmhvQU1LWHdRWS85UXZ0d1J4akE4SkFHZ0EvOVF2dHdjVy83TUhZcnQwL1hEN2R3Y1cvN01IWXJ0MC9hRVRrd1k4TnJjRmJMa2hBWEQ3ZHdUT2NwY0dsUWtwQWFFVGt3VUQzb01FSFdKcEFYRDdkd2VXRm1jRXNZcHRBYUVUa3dWa3luc0U1bExKQVhEN2R3ZnJBbHNGZW5yTkFhRVRrd2RLY25zRzROK0pBWEQ3ZHdYUXJsOEhkUWVOQWFFVGt3WSt4b2NFa3R1MUFYRDdkd1RoQW1zRkp3TzVBYUVUa3dYcTNtY0hRcXdoQlhEN2R3UnhHa3NIak1BbEJhRVRrd1htQ2w4R3BmQjlCWEQ3ZHdSNFJrTUc5QVNCQlhEN2R3YWVmbmNIUGUwUkJhRVRrd1o0eXNjSGEyVWRCWEQ3ZHdVWEJxY0h0WGtoQmFFVGt3UVVScGNHODlrTkJYRDdkd1o0NGxNR1p0VFZCYUVUa3dmbXBtOEdITURWQjlRdnR3ZFg3NjhFM0ZCZEE5UXZ0d1NXODc4SHdCeFpBOVF2dHdWSnM3Y0ZFclJaQWFFVGt3VjZad01GbWIxeEFhRVRrd1dXSXRjRVdPb1ZBYUVUa3dTYllzOEVnN1pwQWFFVGt3UjhZdHNFQ2lzVkFhRVRrd1QwSXVNRkFiTXhBYUVUa3dXYi9zc0VKMXVGQWFFVGt3UTVUeDhHZnZ5UkJhRVRrd1NhdnY4RUdjU0pCYUVUa3dia3B0OEVYbFF4QmFFVGt3Y3ZFdWNHWG1CbEJSekxQd1J4R2tzSGpNQWxCUnpMUHdUaEFtc0ZKd081QVJ6TFB3UjRSa01HOUFTQkJSekxQd2VXRm1jRXNZcHRBUnpMUHdUT2NwY0dsUWtwQVJ6TFB3Y1cvN01IWXJ0MC9SekxQd2Zob0FNS1h3UVkvUnpMUHdSeGpBOEpBR2dBL1M3VlN3UnhqQThKQUdnQS9TN1hTd1Bob0FNS1h3UVkvUzdYU3dCeGpBOEpBR2dBL1M3VlN3ZmhvQU1LWHdRWS82SDZUd1J4akE4SkFHZ0EvNkg2VHdmaG9BTUtYd1FZL1M3WFN3TVcvN01IWXJ0MC9TN1ZTd2NXLzdNSFlydDAvNkg2VHdjVy83TUhZcnQwL1M3WFN3RE9jcGNHbFFrcEFTN1ZTd1RPY3BjR2xRa3BBNkg2VHdUT2NwY0dsUWtwQVM3WFN3T1dGbWNFc1lwdEFTN1ZTd2VXRm1jRXNZcHRBNkg2VHdlV0ZtY0VzWXB0QVM3VlN3VGhBbXNGSndPNUFTN1hTd0J4R2tzSGpNQWxCUzdYU3dEaEFtc0ZKd081QVM3VlN3UnhHa3NIak1BbEI2SDZUd1RoQW1zRkp3TzVBNkg2VHdSeEdrc0hqTUFsQlM3WFN3QjRSa01HOUFTQkJTN1ZTd1I0UmtNRzlBU0JCNkg2VHdSNFJrTUc5QVNCQlM3VlN3YWVmbmNIUGUwUkJTN1hTd0VYQnFjSHRYa2hCUzdYU3dLZWZuY0hQZTBSQlM3VlN3VVhCcWNIdFhraEI2SDZUd2FlZm5jSFBlMFJCNkg2VHdVWEJxY0h0WGtoQlM3VlN3WjQ0bE1HWnRUVkJTN1hTd0o0NGxNR1p0VFZCNkg2VHdaNDRsTUdadFRWQlM3WFN3RWtxb3NGbXo3OC9TN1hTd0pndWxzRWZPMlJBUzdYU3dOYUYzTUZwcks2L1M3WFN3R2RGL2NHTStNQy9TN1hTd0I1Ujk4SG5wTDIvcGM2aXdLL2Ruc0ZYakxjK3BjNml3REhoa3NINGpScEFwYzZpd0s4ZjJjRXNLamZBcGM2aXdQYnE4OEZ1cGo3QXBjNml3RDNmK2NGQVVFREFwYzZpd0R0anA4Rzh6SksvcGM2aXdIRFZsY0VDWGhVOXBjNml3TnQxM3NGTktLUEFwYzZpd0MvNTc4R0xtcVhBcGM2aXdIenQ5Y0YwYjZiQXBjNml3SlB4dU1Fd3FCVEFwYzZpd01WanA4SFEySkcvcGM2aXdHOTE3OEY0anVEQXBjNml3TmF3OThIWXRPSEFwYzZpd0IrbC9jSERpZUxBcGM2aXdPQzh1TUc1MFVQQXBjNml3QkV2cDhIV0svQy9wYzZpd0xsQTc4RStJL2pBcGM2aXdDRjg5OEdlU2ZuQXBjNml3R3B3L2NHR0h2ckFwYzZpd0U4T3FjR3pBMi9BcGM2aXdJQ0FsOEhzUnlQQXBjNml3SngwN2NHV3BnM0JwYzZpd0FLdzljSEVPUTdCcGM2aXdFcWsrOEU2cEE3QnpPK0J3QkV2cDhIV0svQy96TytCd0pLdzFzR2JJZWUvek8rQndLNTcxc0ZhL2kzQXpPK0J3TVZqcDhIUTJKRy96TytCd0lDQWw4SHNSeVBBek8rQndQMlkxY0VPbVpQQXFybDJ3SzU3MXNGYS9pM0Fxcmwyd1AyWTFjRU9tWlBBcXJsMndJQ0FsOEhzUnlQQXFybDJ3Skt3MXNHYkllZS9xcmwyd01WanA4SFEySkcvcXJsMndIRFZsY0VDWGhVOXpPK0J3SERWbGNFQ1hoVTlxcmwyd0RIaGtzSDRqUnBBek8rQndESGhrc0g0alJwQVpDT2d3QnhHa3NIak1BbEJDWkdvd0RoQW1zRkp3TzVBQ1pHb3dCeEdrc0hqTUFsQlpDT2d3RGhBbXNGSndPNUFaQ09nd0I0UmtNRzlBU0JCQ1pHb3dCNFJrTUc5QVNCQlpDT2d3SjQ0bE1HWnRUVkJDWkdvd0o0NGxNR1p0VFZCWkNPZ3dLZWZuY0hQZTBSQkNaR293S2VmbmNIUGUwUkJaQ09nd0VYQnFjSHRYa2hCQ1pHb3dFWEJxY0h0WGtoQktZV2Z3QkV2cDhIV0svQy9LWVdmd0lDQWw4SHNSeVBBS1lXZndNVmpwOEhRMkpHL0tZV2Z3SERWbGNFQ1hoVTlLWVdmd0RIaGtzSDRqUnBBZUg3T3dKZ3Vsc0VmTzJSQWVIN093T1dGbWNFc1lwdEFlSDdPd1ByQWxzRmVuck5BUzdYU3dQckFsc0ZlbnJOQWVIN093SFFybDhIZFFlTkFTN1hTd0hRcmw4SGRRZU5BZUg3T3dEaEFtc0ZKd081QWVIN093QnhHa3NIak1BbEJlSDdPd0I0UmtNRzlBU0JCZUg3T3dKNDRsTUdadFRWQmVIN093S2VmbmNIUGUwUkJlSDdPd0VYQnFjSHRYa2hCSStXRXdJQ0FsOEhzUnlQQUkrV0V3QkV2cDhIV0svQy9JK1dFd01WanA4SFEySkcvSStXRXdIRFZsY0VDWGhVOUkrV0V3REhoa3NINGpScEEvRnVzd0pndWxzRWZPMlJBL0Z1c3dPV0ZtY0VzWXB0QS9GdXN3UHJBbHNGZW5yTkEvRnVzd0hRcmw4SGRRZU5BL0Z1c3dEaEFtc0ZKd081QS9GdXN3QnhHa3NIak1BbEIvRnVzd0I0UmtNRzlBU0JCL0Z1c3dKNDRsTUdadFRWQi9GdXN3S2VmbmNIUGUwUkIvRnVzd0VYQnFjSHRYa2hCVUJ5QXY1NDRsTUdadFRWQlVCeUF2NmVmbmNIUGUwUkJVQnlBdng0UmtNRzlBU0JCVUJ5QXZ4eEdrc0hqTUFsQlVCeUF2emhBbXNGSndPNUFzbjA3djNEVmxjRUNYaFU5c24wN3Z6SGhrc0g0alJwQXNuMDd2OFZqcDhIUTJKRy9zbjA3djVLdzFzR2JJZWUvc24wN3Y2NTcxc0ZhL2kzQXNuMDd2LzJZMWNFT21aUEFzbjA3djRDQWw4SHNSeVBBVUJ5QXYwWEJxY0h0WGtoQlVCeUF2OGpjbmNGT1pFTkJVQnlBdjJPemxNR1FBRFZCWkNPZ3dNamNuY0ZPWkVOQlpDT2d3R096bE1HUUFEVkJVQnlBdnhDcGtNRW01eDlCWkNPZ3dCQ3BrTUVtNXg5QlpDT2d3TFRLcWNGeUxrZEJVQnlBdjdUS3FjRnlMa2RCVUJ5QXYycmVvTUdSYkVGQlVCeUF2MnVGbU1HanVqTkJaQ09nd0dyZW9NR1JiRUZCWkNPZ3dHdUZtTUdqdWpOQlVCeUF2MTNVbE1HcHJCOUJaQ09nd0YzVWxNR3ByQjlCWkNPZ3dGRzZxOEdvRGtWQlVCeUF2MUc2cThHb0RrVkJWcC9Bd1I0UmtNRzlBU0JCVnAvQXdSeEdrc0hqTUFsQlZwL0F3VGhBbXNGSndPNUFWcC9Bd2VXRm1jRXNZcHRBVnAvQXdUT2NwY0dsUWtwQVZwL0F3Y1cvN01IWXJ0MC9WcC9Bd2Zob0FNS1h3UVkvVnAvQXdSeGpBOEpBR2dBL0doSGR3U21ra01IZjV4OUJSekxQd1JDcGtNRW01eDlCSkJqZHdUbXdsTUc4QXpWQmppbmR3ZVBibmNIQ1pVTkJqam5kd2E3S3FjR01Ma2RCUnpMUHdVWEJxY0h0WGtoQlJ6TFB3YlRLcWNGeUxrZEJWcC9Bd1VYQnFjSHRYa2hCVnAvQXdiVEtxY0Z5TGtkQlZwL0F3YWVmbmNIUGUwUkJWcC9Bd2NqY25jRk9aRU5CVnAvQXdaNDRsTUdadFRWQlZwL0F3V096bE1HUUFEVkJWcC9Bd1JDcGtNRW01eDlCR2hIZHdhSFBsTUVXbmg5QlJ6TFB3UmJVbE1Gc25SOUJKQmpkd1VTQ21NRmxyak5CamluZHdWWGRvTUd5WGtGQmpqbmR3UVM2cThHRC8wUkJSekxQd1FxNnE4RnIvMFJCVnAvQXdRcTZxOEZyLzBSQlZwL0F3U2Jlb01GUVhVRkJWcC9Bd1NlRm1NRmtxek5CVnAvQXdSYlVsTUZzblI5QlJ6TFB3Zk53bThGdGllNUFaT0hjd1pWbW04R05pdTVBdXVuY3dYczRtTUZtVCtGQS8rVGN3UnptbDhGcE03UkFSekxQd1M1em1zRVFZWjVBVVBqY3dlTnNtc0huV3A1QVM3WFN3Qm1ybXNIYXNweEFTN1ZTd1M1em1zRVFZWjVBUzdYU3dKM3ZsOEd1TjdSQTZINlR3UzV6bXNFUVlaNUFTN1hTd0FsQm1NSE9SK0ZBUzdWU3dmTndtOEZ0aWU1QVM3WFN3UE53bThGdGllNUE2SDZUd2ZOd204RnRpZTVBVnAvQXdmTndtOEZ0aWU1QVZwL0F3UzV6bXNFUVlaNUEvRnVzd0gzd21jSGRUWnRBL0Z1c3dCT1lsc0cyOFdOQS9GdXN3Tkt2bmNFamw1cEEvRnVzd0hCTm1zR1pYR0ZBSStXRXdPaExrOEY3ZFJwQUkrV0V3RWNNbDhFTm1SbEF6TytCd09oTGs4RjdkUnBBek8rQndFY01sOEVObVJsQXFybDJ3T2hMazhGN2RScEFxcmwyd0VjTWw4RU5tUmxBc24wN3YraExrOEY3ZFJwQXNuMDd2MGNNbDhFTm1SbEEvRnVzd0pNcmw4RkdtYk5BL0Z1c3dOL3Ftc0ZHYTdOQS9GdXN3TXVVbDhITkcrTkEvRnVzd005SW04RVl4ZUZBL0Z1c3dPbXFtc0hDc081QS9GdXN3Q2hybnNFWUplNUFDWkdvd09tcW1zSENzTzVBQ1pHb3dDaHJuc0VZSmU1QVpDT2d3T21xbXNIQ3NPNUFaQ09nd0Nocm5zRVlKZTVBVUJ5QXYrbXFtc0hDc081QVVCeUF2eWhybnNFWUplNUFwYzZpd1BjUGo4RXVzempBcGM2aXdNaWRvTUY3TjRMQXBjNml3SmxHN2NHdGFBL0JwYzZpd1BtZ2o4RmRFempCcGM2aXdJa0M2OEZCWEVUQnBjNml3QUNDOWNIYyt3L0JwYzZpd080OTg4RnU3MFRCcGM2aXdFZDIrOEZSWmhEQnBjNml3RGd5K2NIaldVWEJLWVdmd1BjUGo4RXVzempBSStXRXdQY1BqOEV1c3pqQXpPK0J3UGNQajhFdXN6akFxcmwyd1BjUGo4RXVzempBc24wN3YvY1BqOEV1c3pqQVZ2T1J3QTJkaE1GcVRqZkJWdk9Sd0dMQWc4R05icC9BVnZPUndKMzdoTUVieEhqQTJxbU93SjM3aE1FYnhIakFJK1dFd0ozN2hNRWJ4SGpBek8rQndKMzdoTUVieEhqQXFybDJ3SjM3aE1FYnhIakFzbjA3djUzN2hNRWJ4SGpBVnZPUndKOEVoTUhGUXpmQlZ2T1J3RnNwZzhHa0daL0FWdk9Sd0paa2hNRkdHbmpBMnFtT3dKWmtoTUZHR25qQUkrV0V3SlpraE1GR0duakF6TytCd0paa2hNRkdHbmpBcXJsMndKWmtoTUZHR25qQXNuMDd2NVpraE1GR0duakEraENOd0prRWhNSDZSRGZCK2hDTndMQU1nOEUvU2FMQStoQ053SFUraE1IdlNZREF2T0NKd0hVK2hNSHZTWURBZ2VpQXdIVStoTUh2U1lEQXh4Tjh3SFUraE1IdlNZREEwMUp2d0hVK2hNSHZTWURBd3QwMXYzVStoTUh2U1lEQStoQ053UFVmZzhFQ05UZkIraENOd0NRcWdzSGh5YUhBK2hDTndPbGJnOEVsbFgvQXZPQ0p3T2xiZzhFbGxYL0FnZWlBd09sYmc4RWxsWC9BeHhOOHdPbGJnOEVsbFgvQTAxSnZ3T2xiZzhFbGxYL0F3dDAxditsYmc4RWxsWC9BbjlpUndQb2ZnOEhZTXpmQm45aVJ3UEJGZ3NHOXNwN0FuOWlSd09DQWc4R1pYSGZBNUkrT3dPQ0FnOEdaWEhmQVQ5R0V3T0NBZzhHWlhIZkFwZHlCd09DQWc4R1pYSGZBWnBaMndPQ0FnOEdaWEhmQXk2Zzd2K0NBZzhHWlhIZkF5Nmc3djZsZ1pjR0RkR1RBeTZnN3Y1QWdkTUZidjJ6QVpwWjJ3SkFnZE1GYnYyekFwZHlCd0tsZ1pjR0RkR1RBcGR5QndKQWdkTUZidjJ6QVpwWjJ3S2xnWmNHRGRHVEFUOUdFd0tsZ1pjR0RkR1RBVDlHRXdKQWdkTUZidjJ6QTVJK093S2xnWmNHRGRHVEE1SStPd0pBZ2RNRmJ2MnpBbjlpUndLbGdaY0dEZEdUQW45aVJ3SkFnZE1GYnYyekFuOWlSd01UcVlzR3dQcFhBbjlpUndMR3FjY0ViWkpuQTY4eHl3UFVmZzhFQ05UZkJNRng4d1BvZmc4SFlNemZCNjh4eXdKa0VoTUg2UkRmQm41Rjh3SjhFaE1IRlF6ZkJuNUY4d0EyZGhNRnFUamZCSHlTUHdQbWdqOEZkRXpqQkh5U1B3SWtDNjhGQlhFVEJQcG1Qd0RzeWM4R0NpVGJCd0wxMndMR3FjY0ViWkpuQXdMMTJ3RHN5YzhHQ2lUYkJQcG1Qd0xHcWNjRWJaSm5BbjlpUndEc3ljOEdDaVRiQndMMTJ3TVRxWXNHd1BwWEFQcG1Qd01UcVlzR3dQcFhBUHBtUHdMaDNRc0dQSDR6QXdMMTJ3QlpOVU1HZkJyckF3TDEyd0xoM1FzR1BINHpBUHBtUHdCWk5VTUdmQnJyQW45aVJ3TGgzUXNHUEg0ekFuOWlSd0JaTlVNR2ZCcnJBbjlpUndKM3RSTUZHTmxMQW45aVJ3UHpDVXNFMUFwZkE1SStPd0ozdFJNRkdObExBNUkrT3dQekNVc0UxQXBmQVQ5R0V3SjN0Uk1GR05sTEFUOUdFd1B6Q1VzRTFBcGZBcGR5QndKM3RSTUZHTmxMQXBkeUJ3UHpDVXNFMUFwZkFacFoyd0ozdFJNRkdObExBWnBaMndQekNVc0UxQXBmQXk2Zzd2L3pDVXNFMUFwZkF5Nmc3djUzdFJNRkdObExBcXZpdlFZaWpwc0Z4bVdsQnF2aXZRU0JqcDhGWVZISkJGaHk4UVo0NGxNR1p0VFZCRmh5OFFSNFJrTUc5QVNCQnF2aXZRUjRIcmNFb21teEJGaHk4UWFlZm5jSFBlMFJCcXZpdlFkMGt0OEVveW1sQkZoeThRVVhCcWNIdFhraEJGaHk4UVJ4R2tzSGpNQWxCRmh5OFFUaEFtc0ZKd081QUZoeThRZk53bThGdGllNUFlem1LUWNRNjBjRmc4VkpCcXZpdlFXMzExY0dkVFVsQnF2aXZRVUdidzhFTzRHVkJlem1LUVZZbjU4RTdsRU5CK1FlZVFUcSs5Y0d2aGpOQkZoeThRWml4K2NGbEd4dEJGaHk4UVUxUDFjRjUrRFpCK1FlZVFUS3dBY0lpY3hkQlNqODVRY1E2MGNGZzhWSkJTajg1UVZZbjU4RTdsRU5CZnlGSFFkYlk5Y0VkZXpsQmZ5RkhRWnVMQmNKLzN4eEJIRzdCUUdoTHc4SERBbFJCSEc3QlFMRHQxc0cxVVQ1QkNaR29RSmREMjhFRmpqWkJGWmV2UVBkOUNNTDZlaGxCUW1DclFJVEcyY0docURaQkZaZXZRSHNQdzhGN21rWkJRbUNyUUFFSitjRzZlVFJCUW1DclFBR0lDTUtUZVJsQi9GdXNRSVRHMmNHaHFEWkIvRnVzUUFFSitjRzZlVFJCL0Z1c1FPYlJDTUpCYnhsQkNaR29RSVRHMmNHaHFEWkJDWkdvUUFFSitjRzZlVFJCQ1pHb1FFalpDTUk1YmhsQlpDT2dRSVRHMmNHaHFEWkJaQ09nUUFFSitjRzZlVFJCWkNPZ1FCL3BDTUlDYkJsQlVCeUFQNFRHMmNHaHFEWkJVQnlBUHdFSitjRzZlVFJCVUJ5QVA4ZDFDY0pkV0JsQkFBQUFBSVRHMmNHaHFEWkJBQUFBQUFFSitjRzZlVFJCQUFBQUFLSjdDY0tMVnhsQlVCeUF2NFRHMmNHaHFEWkJVQnlBdndFSitjRzZlVFJCVUJ5QXY4ZDFDY0pkV0JsQlpDT2d3SVRHMmNHaHFEWkJaQ09nd0FFSitjRzZlVFJCWkNPZ3dCL3BDTUlDYkJsQkNaR293SVRHMmNHaHFEWkJDWkdvd0FFSitjRzZlVFJCQ1pHb3dFalpDTUk1YmhsQi9GdXN3SVRHMmNHaHFEWkIvRnVzd0FFSitjRzZlVFJCL0Z1c3dPYlJDTUpCYnhsQmVIN093SVRHMmNHaHFEWkJlSDdPd0FFSitjRzZlVFJCZUg3T3dBR0lDTUtUZVJsQlM3WFN3SVRHMmNHaHFEWkJTN1hTd0FFSitjRzZlVFJCUzdYU3dQZDlDTUw2ZWhsQlM3VlN3VG14MmNFUzVURkJTN1hTd05YZCtNR0F1QzlCUzdYU3dEbXgyY0VTNVRGQlM3VlN3YW5jK01HcHVDOUJTN1ZTd1FFSitjRzZlVFJCUzdWU3dmT0VCY0pINVJsQjZINlR3VG14MmNFUzVURkI2SDZUd2RmWCtNRm51UzlCNkg2VHdRRUorY0c2ZVRSQjZINlR3ZGkyQWNKWWJScEJSekxQd1lURzJjR2hxRFpCVnAvQXdRRUorY0c2ZVRSQlZwL0F3WVRHMmNHaHFEWkJSekxQd1FFSitjRzZlVFJCVnAvQXdYaDMrTUZWTVJ0QlJ6TFB3UnhPOU1HOWV4dEJYRDdkd1lURzJjR2hxRFpCbTEzY3dRRUorY0c2ZVRSQjJuemJ3VDZQOE1HMXZodEI5UXZ0d1lURzJjR2hxRFpCYnNmbndRRUorY0c2ZVRSQjVJTGl3WHRTN3NHMTVodEI5UXZ0d1JjVDNNSG84QlJCYnNmbndhWEU3OEhMa0JOQjVJTGl3YU9OM2NGYWRRUkJGaHk4UVhzUHc4Rjdta1pCVnAvQVFRRUorY0c2ZVRSQlZwL0FRWVRHMmNHaHFEWkJWcC9BUVhoMytNRlZNUnRCUnpMUFFRRUorY0c2ZVRSQlJ6TFBRWVRHMmNHaHFEWkJSekxQUVJ4TzlNRzlleHRCbTEzY1FRRUorY0c2ZVRSQlhEN2RRWVRHMmNHaHFEWkIybnpiUVQ2UDhNRzF2aHRCYnNmblFRRUorY0c2ZVRSQjlRdnRRWVRHMmNHaHFEWkI1SUxpUVh0UzdzRzE1aHRCYnNmblFhWEU3OEhMa0JOQjlRdnRRUmNUM01IbzhCUkI1SUxpUWFPTjNjRmFkUVJCaUpQQlFDeHNwOEU0V2xkQkhhNnZRRlNOa2NIK3lCOUJTN1ZTUVdpT2tjR3VCeUJCU2o4NVFaNFBwOEcxNkg5QjZINlRRV2lPa2NHdUJ5QkJlem1LUVo0UHA4RzE2SDlCZnhhOFFWU05rY0greUI5QmxPK3ZRVHE3cDhISUNXbEJpSlBCUU5IUnRNR3dhbFpCSGE2dlFDNXFvOEdlaVI1QlM3VlNRVU5ybzhGT3lCNUJTajg1UVdEbHVzSGNPM1JCNkg2VFFVTnJvOEZPeUI1QmV6bUtRV0RsdXNIY08zUkJmeGE4UVM1cW84R2VpUjVCbE8rdlFkOGd0Y0ZBR21oQkZoeThRWHlSQU1KU2xocEJWcC9BUWRUby84RkNyQnBCK1FlZVFkNW9CY0lQN2haQlJ6TFB3WFMvKzhHcTlocEJWcC9Bd2RUby84RkNyQnBCWkNPZ3dNcWhETUx3NWhoQlVCeUF2M011RGNKSzB4aEJBQUFBQUZBMERjSjQwaGhCZUg3T3dLNUFETUtBOUJoQi9GdXN3SkdLRE1JdTZoaEJDWkdvd1BlUkRNSWw2UmhCUzdYU3dLSTJETUxuOVJoQlM3VlN3WjQ5Q2NJMFlCbEI2SDZUd1ladkJjSkY2QmxCMm56YndZOEErTUdqT1J0QjVJTGl3ZHpEOWNHallSdEJSekxQUVhTLys4R3E5aHBCVUJ5QVAzTXVEY0pLMHhoQlpDT2dRTXFoRE1MdzVoaEIvRnVzUUpHS0RNSXU2aGhCUW1DclFLNUFETUtBOUJoQkNaR29RUGVSRE1JbDZSaEJGWmV2UUtJMkRNTG45UmhCZnlGSFFVaEVDY0pzV2h4QjJuemJRWThBK01Hak9SdEI1SUxpUWR6RDljR2pZUnRCRmh5OFFRSkJGY0tIWXd4QlZwL0FRZkNqRk1KNGVReEIrUWVlUVdZWUdzSkV1d2hCUnpMUFFVS1BFc0xnd3d4QmZ5RkhRYy96SGNLaUp3NUJSekxQd1VLUEVzTGd3d3hCVnAvQXdmQ2pGTUo0ZVF4QjJuemJ3ZEd2RU1MWkJnMUI2SDZUd1F3ZkdzSjd0UXRCUzdWU3dTYnRIY0pxTFF0QlpDT2d3RkZSSWNJbXRBcEJVQnlBdi9uZEljSi9vQXBCQUFBQUFOWGpJY0t1bndwQkNaR293SHBCSWNKY3RncEJVQnlBUC9uZEljSi9vQXBCZUg3T3dEVHdJTUsyd1FwQi9GdXN3Qms2SWNKa3R3cEJTN1hTd0NmbUlNSWR3d3BCNUlMaXdYR1JEOExaTGcxQjJuemJRZEd2RU1MWkJnMUJaQ09nUUZGUkljSW10QXBCQ1pHb1FIcEJJY0pjdGdwQi9GdXNRQms2SWNKa3R3cEJRbUNyUURUd0lNSzJ3UXBCRlpldlFDZm1JTUlkd3dwQjVJTGlRWEdSRDhMWkxnMUJTN1hTd1BwNHRNRk5uMGRCUzdWU3dmcDR0TUZObjBkQlM3VlN3YTlqdE1HKzIwSkJTN1hTd0s5anRNRysyMEpCNkg2VHdmcDR0TUZObjBkQjZINlR3YTlqdE1HKzIwSkJWcC9Bd2ZwNHRNRk5uMGRCUnpMUHdmcDR0TUZObjBkQlhEN2R3ZnA0dE1GTm4wZEI2d1htd1VGdHVzSFhORWRCNndYbXdUY0Z4OEZYYVJaQmVIN093UHA0dE1GTm4wZEIvRnVzd1BwNHRNRk5uMGRCQ1pHb3dQcDR0TUZObjBkQlpDT2d3UHA0dE1GTm4wZEJVQnlBdi9wNHRNRk5uMGRCQUFBQUFQcDR0TUZObjBkQlVCeUFQL3A0dE1GTm4wZEJaQ09nUVBwNHRNRk5uMGRCQ1pHb1FQcDR0TUZObjBkQi9GdXNRUHA0dE1GTm4wZEJRbUNyUVBwNHRNRk5uMGRCRlpldlFPZlFyc0Z2QkVoQkhHN0JRTDlsdXNISlExZEJTajg1UWJqeHlNR0g5WFZCZXptS1Fianh5TUdIOVhWQnF2aXZRY3kwdXNGYzgyaEJGaHk4UWVmUXJzRnZCRWhCVnAvQVFmcDR0TUZObjBkQlJ6TFBRZnA0dE1GTm4wZEJYRDdkUWZwNHRNRk5uMGRCNndYbVFVRnR1c0hYTkVkQjZ3WG1RVGNGeDhGWGFSWkJIdytxd2ZwNHRNRk5uMGRCSHcrcXdZVEcyY0docURaQkh3K3F3VG14MmNFUzVURkJIdytxd2E5anRNRysyMEpCSHcrcXdRRUorY0c2ZVRSQkh3K3F3ZXpSK01GcnVpOUJIdytxd1pmeS9jRld6eHBCSHcrcXdmaXhBc0pFU2hwQkh3K3F3WUJoRjhKNUZ3eEJIdytxd1VYQnFjSHRYa2hCSHcrcXdhZWZuY0hQZTBSQkh3K3F3WjQ0bE1HWnRUVkJIdytxd1I0UmtNRzlBU0JCSHcrcXdSeEdrc0hqTUFsQkh3K3F3VGhBbXNGSndPNUFIdytxd2ZOd204RnRpZTVBeTZnN3Z5NlJmY0g2RFhMQUFBQUFBQzZSZmNINkRYTEF5Nmc3UHk2UmZjSDZEWExBcGR5QlFDNlJmY0g2RFhMQVQ5R0VRQzZSZmNINkRYTEE1SStPUUM2UmZjSDZEWExBbjlpUlFDNlJmY0g2RFhMQW45aVJRRU1iZThGdkM1ekFuOWlSUUJTNWZNR3QzamJCcGR5QndDNlJmY0g2RFhMQVpwWjJ3QzZSZmNINkRYTEFUOUdFd0M2UmZjSDZEWExBNUkrT3dDNlJmY0g2RFhMQW45aVJ3QzZSZmNINkRYTEFuOWlSd0VNYmU4RnZDNXpBbjlpUndCUzVmTUd0M2piQnk2Zzd2eVluVmNGbFZWdkFBQUFBQUNZblZjRmxWVnZBeTZnN1B5WW5WY0ZsVlZ2QVpwWjJRQ1luVmNGbFZWdkFwZHlCUUNZblZjRmxWVnZBVDlHRVFDWW5WY0ZsVlZ2QTVJK09RQ1luVmNGbFZWdkFuOWlSUUNZblZjRmxWVnZBbjlpUlFFR3hVc0VncjVEQVBwbVBRRUd4VXNFZ3I1REF3TDEyUUVHeFVzRWdyNURBcGR5QndDWW5WY0ZsVlZ2QVpwWjJ3Q1luVmNGbFZWdkFUOUdFd0NZblZjRmxWVnZBNUkrT3dDWW5WY0ZsVlZ2QW45aVJ3Q1luVmNGbFZWdkFuOWlSd0VHeFVzRWdyNURBUHBtUHdFR3hVc0VncjVEQXdMMTJ3RUd4VXNFZ3I1REFpZ3FsditEVlc4RXRGMS9BaXArQ3YzWXZhY0dPbUdiQVljRmd2M1l2YWNHT21HYkFWZkd4djYwd1hjRXIybC9BVmZHeHZ6OHVkY0gzVm0zQWlncWx2d3lKZHNIdkdXN0FUQmNTd0M0bWVzRUpJbkRBVEJjU3dLSVFmTUhHTlhIQVU2bFJ3QXlKZHNIdkdXN0E4RFZMd0Q4dWRjSDNWbTNBUVA1cndIWXZhY0dPbUdiQTB0NWl3SFl2YWNHT21HYkE4RFZMd0swd1hjRXIybC9BVTZsUndPRFZXOEV0RjEvQVRCY1N3TGM0V01FVEQxM0FUQmNTd0VST1ZzRlcrMXZBVmZHeHYzUWJYY0ZnTm1MQWlwK0N2em9hYWNITjlHakFWZkd4dndNWmRjRXZzMi9BVEJjU3dQVVFlc0ZJZm5MQThEVkx3QU1aZGNFdnMyL0EwdDVpd0RvYWFjSE45R2pBOERWTHdIUWJYY0ZnTm1MQVRCY1N3SDRqV01GTGExL0FWZkd4ditXZldjR1FxNkxBaXArQ3Y2NmVaY0hEQ3FiQVZmR3h2M2VkY2NIM2FhbkFUQmNTd0dPVmRzR0Z6NnJBOERWTHdIZWRjY0gzYWFuQTB0NWl3SzZlWmNIRENxYkE4RFZMd09XZldjR1FxNkxBVEJjU3dQT25WTUVGUnFIQVZmR3h2Nm1LV2NHczJhUEFpcCtDdjNLSlpjSGlPS2ZBVmZHeHZ6dUljY0VWbUtyQVRCY1N3REdBZHNHai9hdkE4RFZMd0R1SWNjRVZtS3JBMHQ1aXdIS0paY0hpT0tmQThEVkx3S21LV2NHczJhUEFUQmNTd0xhU1ZNRWdkS0xBaXArQ1AzWXZhY0dPbUdiQWlncWxQK0RWVzhFdEYxL0FZY0ZnUDNZdmFjR09tR2JBVmZHeFA2MHdYY0VyMmwvQVZmR3hQejh1ZGNIM1ZtM0FUQmNTUUM0bWVzRUpJbkRBVTZsUlFBeUpkc0h2R1c3QThEVkxRRDh1ZGNIM1ZtM0FRUDVyUUhZdmFjR09tR2JBMHQ1aVFIWXZhY0dPbUdiQThEVkxRSzB3WGNFcjJsL0FVNmxSUU9EVlc4RXRGMS9BVEJjU1FMYzRXTUVURDEzQVRCY1NRRVJPVnNGVysxdkFWZkd4UDNRYlhjRmdObUxBaXArQ1B6b2FhY0hOOUdqQVZmR3hQd01aZGNFdnMyL0FUQmNTUVBVUWVzRklmbkxBOERWTFFBTVpkY0V2czIvQTB0NWlRRG9hYWNITjlHakE4RFZMUUhRYlhjRmdObUxBVEJjU1FINGpXTUZMYTEvQVZmR3hQK1dmV2NHUXE2TEFpcCtDUDY2ZVpjSERDcWJBVmZHeFAzZWRjY0gzYWFuQVRCY1NRR09WZHNHRno2ckE4RFZMUUhlZGNjSDNhYW5BMHQ1aVFLNmVaY0hEQ3FiQThEVkxRT1dmV2NHUXE2TEFUQmNTUVBPblZNRUZScUhBVmZHeFA2bUtXY0dzMmFQQWlwK0NQM0tKWmNIaU9LZkFWZkd4UHp1SWNjRVZtS3JBVEJjU1FER0Fkc0dqL2F2QThEVkxRRHVJY2NFVm1LckEwdDVpUUhLSlpjSGlPS2ZBOERWTFFLbUtXY0dzMmFQQVRCY1NRTGFTVk1FZ2RLTEFUTUFTUU9DQWc4R1pYSGZBSUdVT1FPbGJnOEVsbFgvQUlHVU9RSFUraE1IdlNZREFpOHdTUUpaa2hNRkdHbmpBaTh3U1FKMzdoTUVieEhqQWk4d1NRUGNQajhFdXN6akFpOHdTUUlDQWw4SHNSeVBBaTh3U1FQMlkxY0VPbVpQQWk4d1NRSzU3MXNGYS9pM0FpOHdTUUpLdzFzR2JJZWUvaTh3U1FNVmpwOEhRMkpHL2k4d1NRSERWbGNFQ1hoVTlpOHdTUURIaGtzSDRqUnBBaTh3U1FPaExrOEY3ZFJwQWk4d1NRRWNNbDhFTm1SbEFUTUFTd0M2UmZjSDZEWExBVE1BU3dPQ0FnOEdaWEhmQUlHVU93T2xiZzhFbGxYL0FJR1VPd0hVK2hNSHZTWURBaTh3U3dKWmtoTUZHR25qQWk4d1N3SjM3aE1FYnhIakFpOHdTd1BjUGo4RXVzempBaTh3U3dJQ0FsOEhzUnlQQWk4d1N3UDJZMWNFT21aUEFpOHdTd0s1NzFzRmEvaTNBaTh3U3dKS3cxc0diSWVlL2k4d1N3TVZqcDhIUTJKRy9pOHdTd0hEVmxjRUNYaFU5aTh3U3dESGhrc0g0alJwQWk4d1N3T2hMazhGN2RScEFpOHdTd0VjTWw4RU5tUmxBVE1BU3dDWW5WY0ZsVlZ2QVRNQVN3SjN0Uk1GR05sTEFUTUFTd1B6Q1VzRTFBcGZBVE1BU1FQekNVc0UxQXBmQVRNQVNRSjN0Uk1GR05sTEFUTUFTUUNZblZjRmxWVnZBZjZxZHYxQXVlc0dkSm5EQW5tTVN3RXUrZk1GcGwzSEFQeHRVd0NwQWVzR25NSERBeTBXclFkc1V0Y0U1YW1WQkI1U0lRWmZ3dk1HQVkzTkIxSE8yUVdaMW84SDdDeUZCMzNnNlFaZnd2TUdBWTNOQm03elhRRlhMdE1HVTkxUkJzVVhIUUdaMW84SDlDeUZCd0t4VVFXVjJvOEZKUmlGQmtSdVJRV1YybzhGSlJpRkJUS2R3UWN3WHZzR3pPRUZCSUM5dFFZb2F2c0dOMDBGQmdjVnhRY3Q0dmNHSXNqbEJJNVpxUVlvYXZzR04wMEZCZlFsdVFlVjR2Y0hpdURsQmIrdGtRYmNQdnNHSmFUOUJFWUprUWN0NHZjR0lzamxCOXlocVFlVjR2Y0hpdURsQlBwbVBRUHJFRXNHcnVxakF3TDEyUVBMeGtNQVVoNmZBUHBtUFFQTHhrTUFVaDZmQXdMMTJRUHJFRXNHcnVxakFuOWlSUVByRUVzR3J1cWpBbjlpUlFQTHhrTUFVaDZmQW45aVJRTms2RmNFOHRvWEFuOWlSUU9RdGtzQVZNSVRBNUkrT1FOazZGY0U4dG9YQTVJK09RT1F0a3NBVk1JVEFUOUdFUU5rNkZjRTh0b1hBVDlHRVFPUXRrc0FWTUlUQXBkeUJRTms2RmNFOHRvWEFwZHlCUU9RdGtzQVZNSVRBWnBaMlFOazZGY0U4dG9YQVpwWjJRT1F0a3NBVk1JVEFBQUFBQU5rNkZjRTh0b1hBeTZnN1ArUXRrc0FWTUlUQUFBQUFBT1F0a3NBVk1JVEF5Nmc3UDlrNkZjRTh0b1hBd0wxMndQTHhrTUFVaDZmQVBwbVB3UHJFRXNHcnVxakFQcG1Qd1BMeGtNQVVoNmZBd0wxMndQckVFc0dydXFqQW45aVJ3UHJFRXNHcnVxakFuOWlSd1BMeGtNQVVoNmZBbjlpUndOazZGY0U4dG9YQW45aVJ3T1F0a3NBVk1JVEE1SStPd05rNkZjRTh0b1hBNUkrT3dPUXRrc0FWTUlUQVQ5R0V3Tms2RmNFOHRvWEFUOUdFd09RdGtzQVZNSVRBcGR5QndOazZGY0U4dG9YQXBkeUJ3T1F0a3NBVk1JVEFacFoyd05rNkZjRTh0b1hBWnBaMndPUXRrc0FWTUlUQXk2Zzd2K1F0a3NBVk1JVEF5Nmc3djlrNkZjRTh0b1hBVE1BU3dOazZGY0U4dG9YQVRNQVN3T1F0a3NBVk1JVEFUTUFTUU5rNkZjRTh0b1hBVE1BU1FPUXRrc0FWTUlUQVBwbVBRQTFESE1ESU1hWEF3TDEyUUExREhNRElNYVhBbjlpUlFBMURITURJTWFYQW45aVJRT3E2SHNESjJvSEE1SStPUU9xNkhzREoyb0hBVDlHRVFPcTZIc0RKMm9IQXBkeUJRT3E2SHNESjJvSEFacFoyUU9xNkhzREoyb0hBQUFBQUFPcTZIc0RKMm9IQXk2ZzdQK3E2SHNESjJvSEF3TDEyd0ExREhNRElNYVhBUHBtUHdBMURITURJTWFYQW45aVJ3QTFESE1ESU1hWEFuOWlSd09xNkhzREoyb0hBNUkrT3dPcTZIc0RKMm9IQVQ5R0V3T3E2SHNESjJvSEFwZHlCd09xNkhzREoyb0hBWnBaMndPcTZIc0RKMm9IQXk2Zzd2K3E2SHNESjJvSEFUTUFTd09xNkhzREoyb0hBVE1BU1FPcTZIc0RKMm9IQXdMMTJRQ3IxL3orWm9sZkFQcG1QUUNyMS96K1pvbGZBUHBtUFFKV3hmMEhzVEFMQXdMMTJRSld4ZjBIc1RBTEFuOWlSUUNyMS96K1pvbGZBbjlpUlFKV3hmMEhzVEFMQW45aVJRSEVGK3orVzlCREFuOWlSUUZzWWYwSGI5bmEvNUkrT1FIRUYreitXOUJEQTVJK09RRnNZZjBIYjluYS9UOUdFUUhFRit6K1c5QkRBVDlHRVFGc1lmMEhiOW5hL3BkeUJRSEVGK3orVzlCREFwZHlCUUZzWWYwSGI5bmEvWnBaMlFIRUYreitXOUJEQVpwWjJRRnNZZjBIYjluYS95Nmc3UDNFRit6K1c5QkRBQUFBQUFIRUYreitXOUJEQUFBQUFBRnNZZjBIYjluYS95Nmc3UDFzWWYwSGI5bmEvd0wxMndDcjEveitab2xmQVBwbVB3Q3IxL3orWm9sZkF3TDEyd0pXeGYwSHNUQUxBUHBtUHdKV3hmMEhzVEFMQW45aVJ3Q3IxL3orWm9sZkFuOWlSd0pXeGYwSHNUQUxBbjlpUndIRUYreitXOUJEQW45aVJ3RnNZZjBIYjluYS81SStPd0hFRit6K1c5QkRBNUkrT3dGc1lmMEhiOW5hL1Q5R0V3SEVGK3orVzlCREFUOUdFd0ZzWWYwSGI5bmEvcGR5QndIRUYreitXOUJEQXBkeUJ3RnNZZjBIYjluYS9acFoyd0hFRit6K1c5QkRBWnBaMndGc1lmMEhiOW5hL3k2Zzd2M0VGK3orVzlCREF5Nmc3djFzWWYwSGI5bmEvVE1BU3dIRUYreitXOUJEQVRNQVN3RnNZZjBIYjluYS9UTUFTUUhFRit6K1c5QkRBVE1BU1FGc1lmMEhiOW5hL1RNQVNRTUlpMUVHV2lCZSt5Nmc3UDhJaTFFR1dpQmUrWnBaMlFNSWkxRUdXaUJlK3k2Zzd2OElpMUVHV2lCZStUTUFTd01JaTFFR1dpQmUrWnBaMndNSWkxRUdXaUJlK0FBQUFBTUlpMUVHV2lCZStwZHlCd01JaTFFR1dpQmUrVDlHRXdNSWkxRUdXaUJlKzVJK093TUlpMUVHV2lCZStuOWlSd01JaTFFR1dpQmUrbjlpUndGcGkxRUZ4RDV5L1BwbVB3RnBpMUVGeEQ1eS93TDEyd0ZwaTFFRnhENXkvcGR5QlFNSWkxRUdXaUJlK1Q5R0VRTUlpMUVHV2lCZSs1SStPUU1JaTFFR1dpQmUrbjlpUlFNSWkxRUdXaUJlK245aVJRRnBpMUVGeEQ1eS9QcG1QUUZwaTFFRnhENXkvd0wxMlFGcGkxRUZ4RDV5L0h3K3F3Y2w4R3NLUnhSRkI2SDZUd1ZZNkhjS1NZeEZCVnAvQXdUaS9GOEtRSnhKQjJuemJRUm5MRThMdnRCSkI1SUxpUWJxc0VzTHczQkpCUW1DclFIMExKTUxOYnhCQkZaZXZRSEFCSk1JMGNSQkJmeUZIUVJZUEljSzYxUk5CL0Z1c1FHTlZKTUo3WlJCQkNaR29RTVJjSk1KMFpCQkJaQ09nUUp0c0pNSTlZaEJCVUJ5QVAwSDVKTUtYVGhCQlJ6TFBRWWlxRmNMNGNSSkI1SUxpd2Jxc0VzTHczQkpCMm56YndSbkxFOEx2dEJKQlM3WFN3SEFCSk1JMGNSQkJlSDdPd0gwTEpNTE5ieEJCUzdWU3dXNElJY0tCMnhCQi9GdXN3R05WSk1KN1pSQkJDWkdvd01SY0pNSjBaQkJCQUFBQUFCNy9KTUxHVFJCQlpDT2d3SnRzSk1JOVloQkJVQnlBdjBINUpNS1hUaEJCUnpMUHdZaXFGY0w0Y1JKQitRZWVRYTh6SGNKYmFRNUJWcC9BUVRpL0Y4S1FKeEpCRmh5OFFVdGNHTUtmRVJKQkh3K3F3YjF3SzhMa3ZpRkI2SDZUd1VrdUxzTG1YQ0ZCVnAvQXdTeXpLTUxpSUNKQlM3VlN3Vk1sTXNLb0pqTkJSekxQd1h1ZUpzSkxheUpCMm56YlFReS9KTUpEcmlKQjVJTGlRYTZnSThKRTFpSkJSekxQUVh1ZUpzSkxheUpCUW1DclFNdnhOTUxhVFJwQkZaZXZRTHpuTk1KQ1R4cEJmeUZIUVFrRE1zSU16eU5CL0Z1c1FMRTdOY0tJUXhwQitRZWVRWk5RTHNLQnREQkJDWkdvUUE5RE5jS0FRaHBCWkNPZ1FPWlNOY0pLUUJwQlVCeUFQNDdmTmNLa0xCcEJBQUFBQUdubE5jTFRLeHBCVnAvQVFTeXpLTUxpSUNKQjVJTGl3YTZnSThKRTFpSkIybnpid1F5L0pNSkRyaUpCUzdYU3dMem5OTUpDVHhwQmVIN093TXZ4Tk1MYVRScEIvRnVzd0xFN05jS0lReHBCQ1pHb3dBOUROY0tBUWhwQlpDT2d3T1pTTmNKS1FCcEJVQnlBdjQ3Zk5jS2tMQnBCRmh5OFFUdFFLY0x6Q2lKQk0xU2tRTUhJSGNGTEp6M0FNMVNrUVBrbUU4RllEUkhCTTFTa1FJcGNHc0hKVFJIQk0xU2tRRE9URnNHRUpUekFxN21wUUkzek0wRmJHOW5BcTdtcFFIM096a0NaRlpuQXE3bXBRSGpRTjBGcnI5VEFxN21wUVAxbnJVQldwWkhBNUg4U1FYalFOMEZycjlUQVVGTVNRWDdyMDBDZjhMREFMVllZUVhqUU4wRnJyOVRBQ24wTVFYN3IwMENmOExEQUNuME1RZnBqUU1IMzIzVEFzNC8wUUFmZlpjSFU4QlBCVUZNU1FSU3VaOEYwU2NEQTBBSElRQTdLUThFa3dCTEJDbjBNUWNBSU9jSHQxSFBBVUZNU1FkZFNZTUh1eGIvQVVGTVNRZjZEdjBBVWE2bkFDbjBNUWVkQnJrQmRCYXJBNUg4U1Fha0NMRUZZcWRuQUxWWVlRYWtDTEVGWXFkbkFNRnM3UVVxWTNrRFJuYXZBTUZzN1FYalFOMEZycjlUQU1GczdRUWZmWmNIVThCUEJNRnM3UVNyVVpzR01DZkhBTUZzN1FmTjRYOEVIaHZEQU1GczdRZlgxeWtDeUFxYkFNRnM3UWFrQ0xFRllxZG5BbzZrTVFYalFOMEZycjlUQXlLWUdRWDNPemtDWkZabkF5S1lHUVluVlFNR2xERUxBTG55L1FBN0tROEVrd0JMQnlLWUdRVTk2T2NHYkJVSEF5S1lHUWYxbnJVQldwWkhBbzZrTVFha0NMRUZZcWRuQU0xU2tRTW1HbDhEY2ZtSEFNMVNrUUpjTSs4QUFUQkRCTTFTa1FNTU5BY0VmOEN6QU0xU2tRSmRCaThCTldBN0JjVkFNUVNYWDNjQk5NWkRBQ24wTVFSWDNJc0c3djNEQVVGTVNRUlgzSXNHN3YzREFMSG9HUVNYWDNjQk5NWkRBTUZzN1FlWnVJc0hvMTViQU1GczdRVUg5M01CY2thakF5S1lHUWVTREk4Rnd3REhBNmFNQVFTNS8zc0QzeW5yQXE3bXBRQjNwUVVCNk9BckJzK0cxUUV6NGVqK21vMUxBQ24wTVFZTUxPVUJaZ0pYQVVGTVNRWU1MT1VCWmdKWEFNRnM3UVNHcmVVQkNtNkhBeUtZR1FRUXFtei8vSGxMQU0xU2tRTXJXWE1CbjF3M0JNMVNrUUJCT0ljRE9PazNBTTFTa1FEZS9GTUJJTmczQk0xU2tRTk5MYU1BM1JtL0FMSG9HUVNpUHA4QkFOb25BY1ZBTVFYY1Jnc0JJUHB6QUxIb0dRWGNSZ3NCSVBwekFjVkFNUVNpUHA4QkFOb25BTUZzN1FRUnVnY0JXaHE3QU1GczdRVnZicGNCVzlybkE2YU1BUWF2UnFNQ01SVXJBNmFNQVFlYmdnOEN6emxEQU0xU2tRS0pXQ01HdHJCREJNMVNrUUh2UUM4SFNpalRBVUZNU1FZVVlNY0VVdlpyQUNuME1RUm9LTWNINDlwM0FNRnM3UWErOVY4RUVrWnJBeUtZR1FSVi9Mc0VDWXpuQXZ0WVhRYUQ5dHo5VnM0M0FNRnM3UVgxMUhFQS9qSm5BUk9VWVFTeHdIRUF6N1l6QU1GczdRY3VWdVQrN201dkFVOFVYUVN0eGhiNkIyNHpBTUZzN1FRR0NLajhVeDV2QW5EZ1lRV3lqT0QvWks0ekFNRnM3UVhYeGZMNlluSnpBVS93S1FiZC9rei9YTDVmQWx0SVFRYmQva3ovWEw1ZkFtM3NKUWZzdUZyOVUzNWpBM2xFUFFmc3VGcjlVMzVqQURpWUZRZTBXK0wzcXlsSEFWcVVEUWNrc3VyL1pkbEhBVW42eFFFMWYxejF6U1ZIQThocXRRQlFnUmI4OTcwL0FVbjZ4UUFZYnZ6OUtGQXZCOGhxdFFLYnBZVDVMeWd2QktMb1hRWGRiK3I5MmY0N0FNRnM3UWFPYmg3OG14cDdBcnhnWVFXamFnTDl6M0kzQU1GczdRVlpzK0wrcGhKL0FiMXNWUWZUdGFNQVVGNURBTUZzN1FYYU9LTUQyZXFEQWNuVVdRYkRpS01BL1FZL0FNRnM3UVgxSmFNREFiYUxBNVBvSFFWblhGTURPanByQUtkRU5RVm5YRk1ET2pwckFuaVFDUVJKc01zREtJbEhBbHJlb1FCV1cwcjhIbFU3QWxyZW9RS21naHI5TGdBekJNRnM3UWFDRmxUK1VxNlhBTUZzN1FaeklFYjh0bjZqQU1GczdRUmluRThDOWtxdkEwQUhJUUtXY1E4RmExQmZCczQvMFFKNnhaY0VIQlJuQk1GczdRWjZ4WmNFSEJSbkJMbnkvUUtXY1E4RmExQmZCTTFTa1FKRDVFc0dOSVJiQk0xU2tRQ0V2R3NFQVloYkJNMVNrUU1qbWlzQ0NiQlBCTTFTa1FNdXgrc0ExWUJYQkxWWVlRUkV3TEVIQzBlUEE1SDhTUVJFd0xFSEMwZVBBTUZzN1FSRXdMRUhDMGVQQW82a01RUkV3TEVIQzBlUEFxN21wUUJFd0xFSEMwZVBBcTdtcFFMdWVRa0N1VEEvQk0xU2tRSklKRk1CL1NoTEJNMVNrUURJaFhNQ2U2eExCTTFTa1FEa3BDTUhpd0JYQlVuNnhRRStHd0QrQUtCREI4aHF0UUl0RGJUNS8zaERCbHJlb1FHQTFoYjkvbEJIQjBBSElRTzBpUXNFYUZVTEJzNC8wUU9ZM1pNSEhSVVBCTUZzN1FlWTNaTUhIUlVQQkxueS9RTzBpUXNFYUZVTEJNMVNrUU5WL0VjRk1Za0RCTTFTa1FHbTFHTUcrb2tEQk0xU2tRRkx6aDhCQ3JUM0JNMVNrUUZ5Kzk4RDBvRC9CTFZZWVFieUFMa0hLTkRUQjVIOFNRYnlBTGtIS05EVEJNRnM3UWJ5QUxrSEtORFRCbzZrTVFieUFMa0hLTkRUQnE3bXBRTHlBTGtIS05EVEJxN21wUUtDRlNFQnNqVG5CTTFTa1FLY2lEc0EraXp6Qk0xU2tRRG82VnNCY0xEM0JNMVNrUUg2dkJzR2dBVURCVW42eFFDWlV6RDgrYVRyQjhocXRRQ0hacFQ0K0h6dkJscmVvUUJMUGNyOCsxVHZCN1JwNFFSRXdMRUhDMGVQQTdScDRRYnlBTGtIS05EVEI3UnA0UWVZM1pNSEhSVVBCN1JwNFFaNnhaY0VIQlJuQjdScDRRYWtDTEVGWXFkbkE3UnA0UVFmZlpjSFU4QlBCN1JwNFFYMUphTURBYmFMQTdScDRRWGFPS01EMmVxREE3UnA0UVJpbkU4QzlrcXZBN1JwNFFRUnVnY0JXaHE3QTdScDRRVlpzK0wrcGhKL0E3UnA0UWFPYmg3OG14cDdBN1JwNFFaeklFYjh0bjZqQTdScDRRWFh4Zkw2WW5KekE3UnA0UVFHQ0tqOFV4NXZBN1JwNFFhQ0ZsVCtVcTZYQTdScDRRY3VWdVQrN201dkE3UnA0UVgxMUhFQS9qSm5BN1JwNFFTR3JlVUJDbTZIQTdScDRRYSs5VjhFRWtackE3UnA0UWVadUlzSG8xNWJBN1JwNFFmTjRYOEVIaHZEQTdScDRRVnZicGNCVzlybkE3UnA0UVVIOTNNQmNrYWpBN1JwNFFmWDF5a0N5QXFiQTdScDRRWGpRTjBGcnI5VEE3UnA0UVVxWTNrRFJuYXZBN1JwNFFTclVac0dNQ2ZIQTRBWFBRZmttRThGWURSSEI0QVhQUWNISUhjRkxKejNBNEFYUFFZcGNHc0hKVFJIQjRBWFBRVE9URnNHRUpUekFncXpOUVgzT3prQ1pGWm5BZ3F6TlFZM3pNMEZiRzluQWdxek5RWGpRTjBGcnI5VEFncXpOUWYxbnJVQldwWkhBUmZHdVFYN3IwMENmOExEQSt0cXVRWGpRTjBGcnI5VEEyTytyUVhqUU4wRnJyOVRBWjl5eFFYN3IwMENmOExEQUFQZTZRUWZmWmNIVThCUEJaOXl4UWZwalFNSDMyM1RBUmZHdVFSU3VaOEYwU2NEQWVockdRUTdLUThFa3dCTEJaOXl4UWNBSU9jSHQxSFBBUmZHdVFkZFNZTUh1eGIvQVJmR3VRZjZEdjBBVWE2bkFaOXl4UWVkQnJrQmRCYXJBK3RxdVFha0NMRUZZcWRuQTJPK3JRYWtDTEVGWXFkbkFWVzJhUVVxWTNrRFJuYXZBVlcyYVFYalFOMEZycjlUQVZXMmFRUWZmWmNIVThCUEJWVzJhUVNyVVpzR01DZkhBVlcyYVFmTjRYOEVIaHZEQVZXMmFRZlgxeWtDeUFxYkFWVzJhUWFrQ0xFRllxZG5BR3NheFFYalFOMEZycjlUQWlzZTBRWDNPemtDWkZabkFpc2UwUVluVlFNR2xERUxBNGp2SVFRN0tROEVrd0JMQmlzZTBRVTk2T2NHYkJVSEFpc2UwUWYxbnJVQldwWkhBR3NheFFha0NMRUZZcWRuQTRBWFBRWmNNKzhBQVRCREI0QVhQUWNtR2w4RGNmbUhBNEFYUFFjTU5BY0VmOEN6QTRBWFBRWmRCaThCTldBN0JaOXl4UVJYM0lzRzd2M0RBdFBLeFFTWFgzY0JOTVpEQVJmR3VRUlgzSXNHN3YzREExOTIwUVNYWDNjQk5NWkRBVlcyYVFlWnVJc0hvMTViQVZXMmFRVUg5M01CY2thakFpc2UwUWVTREk4Rnd3REhBK2NpM1FTNS8zc0QzeW5yQWdxek5RUjNwUVVCNk9BckJmNkxLUVV6NGVqK21vMUxBWjl5eFFZTUxPVUJaZ0pYQVJmR3VRWU1MT1VCWmdKWEFWVzJhUVNHcmVVQkNtNkhBaXNlMFFRUXFtei8vSGxMQTRBWFBRUkJPSWNET09rM0E0QVhQUWNyV1hNQm4xdzNCNEFYUFFUZS9GTUJJTmczQjRBWFBRZE5MYU1BM1JtL0F0UEt4UVhjUmdzQklQcHpBMTkyMFFTaVBwOEJBTm9uQTE5MjBRWGNSZ3NCSVBwekF0UEt4UVNpUHA4QkFOb25BVlcyYVFRUnVnY0JXaHE3QVZXMmFRVnZicGNCVzlybkErY2kzUWF2UnFNQ01SVXJBK2NpM1FlYmdnOEN6emxEQTRBWFBRYUpXQ01HdHJCREI0QVhQUVh2UUM4SFNpalRBUmZHdVFZVVlNY0VVdlpyQVo5eXhRUm9LTWNINDlwM0FWVzJhUWErOVY4RUVrWnJBaXNlMFFSVi9Mc0VDWXpuQVZXMmFRWDExSEVBL2pKbkFqUytzUWFEOXR6OVZzNDNBUzZpclFTeHdIRUF6N1l6QVZXMmFRY3VWdVQrN201dkFWVzJhUVFHQ0tqOFV4NXZBUWppc1FTdHhoYjZCMjR6QW92NnJRV3lqT0QvWks0ekFWVzJhUVhYeGZMNlluSnpBd3B5eVFiZC9rei9YTDVmQW9iR3ZRYmQva3ovWEw1ZkFIMTJ6UWZzdUZyOVUzNWpBL1hHd1Fmc3VGcjlVMzVqQTVvZTFRZTBXK0wzcXlsSEFRVWkyUWNrc3VyL1pkbEhBV2J2TFFVMWYxejF6U1ZIQUw5VE1RUlFnUmI4OTcwL0FXYnZMUVFZYnZ6OUtGQXZCTDlUTVFhYnBZVDVMeWd2QlZXMmFRYU9iaDc4bXhwN0ExejJzUVhkYityOTJmNDdBbFE2c1FXamFnTDl6M0kzQVZXMmFRVlpzK0wrcGhKL0FWVzJhUVhhT0tNRDJlcURBTkcydFFmVHRhTUFVRjVEQU5lQ3NRYkRpS01BL1FZL0FWVzJhUVgxSmFNREFiYUxBZWgyMFFWblhGTURPanByQVdqS3hRVm5YRk1ET2pwckFuZ2kzUVJKc01zREtJbEhBQ2UzTlFSV1cwcjhIbFU3QUNlM05RYW1naHI5TGdBekJWVzJhUWFDRmxUK1VxNlhBVlcyYVFaeklFYjh0bjZqQVZXMmFRUmluRThDOWtxdkFlaHJHUWFXY1E4RmExQmZCQVBlNlFaNnhaY0VIQlJuQlZXMmFRWjZ4WmNFSEJSbkI0anZJUWFXY1E4RmExQmZCNEFYUFFaRDVFc0dOSVJiQjRBWFBRU0V2R3NFQVloYkI0QVhQUWNqbWlzQ0NiQlBCNEFYUFFjdXgrc0ExWUJYQjJPK3JRUkV3TEVIQzBlUEErdHF1UVJFd0xFSEMwZVBBVlcyYVFSRXdMRUhDMGVQQUdzYXhRUkV3TEVIQzBlUEFncXpOUVJFd0xFSEMwZVBBZ3F6TlFidWVRa0N1VEEvQjRBWFBRWklKRk1CL1NoTEI0QVhQUVRJaFhNQ2U2eExCNEFYUFFUa3BDTUhpd0JYQldidkxRVStHd0QrQUtCREJMOVRNUVl0RGJUNS8zaERCQ2UzTlFXQTFoYjkvbEJIQmVockdRZTBpUXNFYUZVTEJBUGU2UWVZM1pNSEhSVVBCVlcyYVFlWTNaTUhIUlVQQjRqdklRZTBpUXNFYUZVTEI0QVhQUWRWL0VjRk1Za0RCNEFYUFFXbTFHTUcrb2tEQjRBWFBRVkx6aDhCQ3JUM0I0QVhQUVZ5Kzk4RDBvRC9CMk8rclFieUFMa0hLTkRUQit0cXVRYnlBTGtIS05EVEJWVzJhUWJ5QUxrSEtORFRCR3NheFFieUFMa0hLTkRUQmdxek5RYnlBTGtIS05EVEJncXpOUWFDRlNFQnNqVG5CNEFYUFFhY2lEc0EraXp6QjRBWFBRVG82VnNCY0xEM0I0QVhQUVg2dkJzR2dBVURCV2J2TFFTWlV6RDgrYVRyQkw5VE1RU0hacFQ0K0h6dkJDZTNOUVJMUGNyOCsxVHZCTTFTa3dQa21FOEZZRFJIQk0xU2t3TUhJSGNGTEp6M0FNMVNrd0lwY0dzSEpUUkhCTTFTa3dET1RGc0dFSlR6QXE3bXB3SDNPemtDWkZabkFxN21wd0kzek0wRmJHOW5BcTdtcHdIalFOMEZycjlUQXE3bXB3UDFuclVCV3BaSEFVRk1Td1g3cjAwQ2Y4TERBNUg4U3dYalFOMEZycjlUQUxWWVl3WGpRTjBGcnI5VEFDbjBNd1g3cjAwQ2Y4TERBczQvMHdBZmZaY0hVOEJQQkNuME13ZnBqUU1IMzIzVEFVRk1Td1JTdVo4RjBTY0RBMEFISXdBN0tROEVrd0JMQkNuME13Y0FJT2NIdDFIUEFVRk1Td2RkU1lNSHV4Yi9BVUZNU3dmNkR2MEFVYTZuQUNuME13ZWRCcmtCZEJhckE1SDhTd2FrQ0xFRllxZG5BTFZZWXdha0NMRUZZcWRuQU1Gczd3VXFZM2tEUm5hdkFNRnM3d1hqUU4wRnJyOVRBTUZzN3dRZmZaY0hVOEJQQk1Gczd3U3JVWnNHTUNmSEFNRnM3d2ZONFg4RUhodkRBTUZzN3dmWDF5a0N5QXFiQU1Gczd3YWtDTEVGWXFkbkFvNmtNd1hqUU4wRnJyOVRBeUtZR3dYM096a0NaRlpuQXlLWUd3WW5WUU1HbERFTEFMbnkvd0E3S1E4RWt3QkxCeUtZR3dVOTZPY0diQlVIQXlLWUd3ZjFuclVCV3BaSEFvNmtNd2FrQ0xFRllxZG5BTTFTa3dKY00rOEFBVEJEQk0xU2t3TW1HbDhEY2ZtSEFNMVNrd01NTkFjRWY4Q3pBTTFTa3dKZEJpOEJOV0E3QkNuME13UlgzSXNHN3YzREFjVkFNd1NYWDNjQk5NWkRBVUZNU3dSWDNJc0c3djNEQUxIb0d3U1hYM2NCTk1aREFNRnM3d2VadUlzSG8xNWJBTUZzN3dVSDkzTUJja2FqQXlLWUd3ZVNESThGd3dESEE2YU1Bd1M1LzNzRDN5bnJBcTdtcHdCM3BRVUI2T0FyQnMrRzF3RXo0ZWorbW8xTEFDbjBNd1lNTE9VQlpnSlhBVUZNU3dZTUxPVUJaZ0pYQU1Gczd3U0dyZVVCQ202SEF5S1lHd1FRcW16Ly9IbExBTTFTa3dCQk9JY0RPT2szQU0xU2t3TXJXWE1CbjF3M0JNMVNrd0RlL0ZNQklOZzNCTTFTa3dOTkxhTUEzUm0vQWNWQU13WGNSZ3NCSVBwekFMSG9Hd1NpUHA4QkFOb25BTEhvR3dYY1Jnc0JJUHB6QWNWQU13U2lQcDhCQU5vbkFNRnM3d1FSdWdjQldocTdBTUZzN3dWdmJwY0JXOXJuQTZhTUF3YXZScU1DTVJVckE2YU1Bd2ViZ2c4Q3p6bERBTTFTa3dLSldDTUd0ckJEQk0xU2t3SHZRQzhIU2lqVEFVRk1Td1lVWU1jRVV2WnJBQ24wTXdSb0tNY0g0OXAzQU1Gczd3YSs5VjhFRWtackF5S1lHd1JWL0xzRUNZem5BTUZzN3dYMTFIRUEvakpuQXZ0WVh3YUQ5dHo5VnM0M0FST1VZd1N4d0hFQXo3WXpBTUZzN3djdVZ1VCs3bTV2QU1Gczd3UUdDS2o4VXg1dkFVOFVYd1N0eGhiNkIyNHpBbkRnWXdXeWpPRC9aSzR6QU1Gczd3WFh4Zkw2WW5KekFVL3dLd2JkL2t6L1hMNWZBbHRJUXdiZC9rei9YTDVmQW0zc0p3ZnN1RnI5VTM1akEzbEVQd2ZzdUZyOVUzNWpBRGlZRndlMFcrTDNxeWxIQVZxVUR3Y2tzdXIvWmRsSEFVbjZ4d0UxZjF6MXpTVkhBOGhxdHdCUWdSYjg5NzAvQVVuNnh3QVlidno5S0ZBdkI4aHF0d0ticFlUNUx5Z3ZCTUZzN3dhT2JoNzhteHA3QUtMb1h3WGRiK3I5MmY0N0FyeGdZd1dqYWdMOXozSTNBTUZzN3dWWnMrTCtwaEovQU1Gczd3WGFPS01EMmVxREFiMXNWd2ZUdGFNQVVGNURBY25VV3diRGlLTUEvUVkvQU1Gczd3WDFKYU1EQWJhTEE1UG9Id1ZuWEZNRE9qcHJBS2RFTndWblhGTURPanByQW5pUUN3UkpzTXNES0lsSEFscmVvd0JXVzByOEhsVTdBbHJlb3dLbWdocjlMZ0F6Qk1Gczd3YUNGbFQrVXE2WEFNRnM3d1p6SUViOHRuNmpBTUZzN3dSaW5FOEM5a3F2QTBBSEl3S1djUThGYTFCZkJzNC8wd0o2eFpjRUhCUm5CTUZzN3daNnhaY0VIQlJuQkxueS93S1djUThGYTFCZkJNMVNrd0pENUVzR05JUmJCTTFTa3dDRXZHc0VBWWhiQk0xU2t3TWptaXNDQ2JCUEJNMVNrd011eCtzQTFZQlhCTFZZWXdSRXdMRUhDMGVQQTVIOFN3UkV3TEVIQzBlUEFNRnM3d1JFd0xFSEMwZVBBbzZrTXdSRXdMRUhDMGVQQXE3bXB3QkV3TEVIQzBlUEFxN21wd0x1ZVFrQ3VUQS9CTTFTa3dKSUpGTUIvU2hMQk0xU2t3REloWE1DZTZ4TEJNMVNrd0RrcENNSGl3QlhCVW42eHdFK0d3RCtBS0JEQjhocXR3SXREYlQ1LzNoREJscmVvd0dBMWhiOS9sQkhCMEFISXdPMGlRc0VhRlVMQnM0LzB3T1kzWk1ISFJVUEJNRnM3d2VZM1pNSEhSVVBCTG55L3dPMGlRc0VhRlVMQk0xU2t3TlYvRWNGTVlrREJNMVNrd0dtMUdNRytva0RCTTFTa3dGTHpoOEJDclQzQk0xU2t3RnkrOThEMG9EL0JMVllZd2J5QUxrSEtORFRCNUg4U3dieUFMa0hLTkRUQk1Gczd3YnlBTGtIS05EVEJvNmtNd2J5QUxrSEtORFRCcTdtcHdMeUFMa0hLTkRUQnE3bXB3S0NGU0VCc2pUbkJNMVNrd0tjaURzQStpenpCTTFTa3dEbzZWc0JjTEQzQk0xU2t3SDZ2QnNHZ0FVREJVbjZ4d0NaVXpEOCthVHJCOGhxdHdDSFpwVDQrSHp2QmxyZW93QkxQY3I4KzFUdkI3UnA0d1JFd0xFSEMwZVBBN1JwNHdieUFMa0hLTkRUQjdScDR3ZVkzWk1ISFJVUEI3UnA0d1o2eFpjRUhCUm5CN1JwNHdha0NMRUZZcWRuQTdScDR3UWZmWmNIVThCUEI3UnA0d1gxSmFNREFiYUxBN1JwNHdYYU9LTUQyZXFEQTdScDR3UmluRThDOWtxdkE3UnA0d1FSdWdjQldocTdBN1JwNHdWWnMrTCtwaEovQTdScDR3YU9iaDc4bXhwN0E3UnA0d1p6SUViOHRuNmpBN1JwNHdYWHhmTDZZbkp6QTdScDR3UUdDS2o4VXg1dkE3UnA0d2FDRmxUK1VxNlhBN1JwNHdjdVZ1VCs3bTV2QTdScDR3WDExSEVBL2pKbkE3UnA0d1NHcmVVQkNtNkhBN1JwNHdhKzlWOEVFa1pyQTdScDR3ZVp1SXNIbzE1YkE3UnA0d2ZONFg4RUhodkRBN1JwNHdWdmJwY0JXOXJuQTdScDR3VUg5M01CY2thakE3UnA0d2ZYMXlrQ3lBcWJBN1JwNHdYalFOMEZycjlUQTdScDR3VXFZM2tEUm5hdkE3UnA0d1NyVVpzR01DZkhBNEFYUHdjSElIY0ZMSnozQTRBWFB3ZmttRThGWURSSEI0QVhQd1lwY0dzSEpUUkhCNEFYUHdUT1RGc0dFSlR6QWdxek53WTN6TTBGYkc5bkFncXpOd1gzT3prQ1pGWm5BZ3F6TndYalFOMEZycjlUQWdxek53ZjFuclVCV3BaSEErdHF1d1hqUU4wRnJyOVRBUmZHdXdYN3IwMENmOExEQTJPK3J3WGpRTjBGcnI5VEFaOXl4d1g3cjAwQ2Y4TERBWjl5eHdmcGpRTUgzMjNUQUFQZTZ3UWZmWmNIVThCUEJSZkd1d1JTdVo4RjBTY0RBZWhyR3dRN0tROEVrd0JMQlo5eXh3Y0FJT2NIdDFIUEFSZkd1d2RkU1lNSHV4Yi9BUmZHdXdmNkR2MEFVYTZuQVo5eXh3ZWRCcmtCZEJhckErdHF1d2FrQ0xFRllxZG5BMk8rcndha0NMRUZZcWRuQVZXMmF3VXFZM2tEUm5hdkFWVzJhd1hqUU4wRnJyOVRBVlcyYXdRZmZaY0hVOEJQQlZXMmF3U3JVWnNHTUNmSEFWVzJhd2ZONFg4RUhodkRBVlcyYXdmWDF5a0N5QXFiQVZXMmF3YWtDTEVGWXFkbkFHc2F4d1hqUU4wRnJyOVRBaXNlMHdYM096a0NaRlpuQWlzZTB3WW5WUU1HbERFTEE0anZJd1E3S1E4RWt3QkxCaXNlMHdVOTZPY0diQlVIQWlzZTB3ZjFuclVCV3BaSEFHc2F4d2FrQ0xFRllxZG5BNEFYUHdjbUdsOERjZm1IQTRBWFB3WmNNKzhBQVRCREI0QVhQd2NNTkFjRWY4Q3pBNEFYUHdaZEJpOEJOV0E3QnRQS3h3U1hYM2NCTk1aREFaOXl4d1JYM0lzRzd2M0RBUmZHdXdSWDNJc0c3djNEQTE5MjB3U1hYM2NCTk1aREFWVzJhd2VadUlzSG8xNWJBVlcyYXdVSDkzTUJja2FqQWlzZTB3ZVNESThGd3dESEErY2kzd1M1LzNzRDN5bnJBZ3F6TndSM3BRVUI2T0FyQmY2TEt3VXo0ZWorbW8xTEFaOXl4d1lNTE9VQlpnSlhBUmZHdXdZTUxPVUJaZ0pYQVZXMmF3U0dyZVVCQ202SEFpc2Uwd1FRcW16Ly9IbExBNEFYUHdjcldYTUJuMXczQjRBWFB3UkJPSWNET09rM0E0QVhQd1RlL0ZNQklOZzNCNEFYUHdkTkxhTUEzUm0vQTE5MjB3U2lQcDhCQU5vbkF0UEt4d1hjUmdzQklQcHpBMTkyMHdYY1Jnc0JJUHB6QXRQS3h3U2lQcDhCQU5vbkFWVzJhd1FSdWdjQldocTdBVlcyYXdWdmJwY0JXOXJuQStjaTN3YXZScU1DTVJVckErY2kzd2ViZ2c4Q3p6bERBNEFYUHdhSldDTUd0ckJEQjRBWFB3WHZRQzhIU2lqVEFSZkd1d1lVWU1jRVV2WnJBWjl5eHdSb0tNY0g0OXAzQVZXMmF3YSs5VjhFRWtackFpc2Uwd1JWL0xzRUNZem5BalMrc3dhRDl0ejlWczQzQVZXMmF3WDExSEVBL2pKbkFTNmlyd1N4d0hFQXo3WXpBVlcyYXdjdVZ1VCs3bTV2QVFqaXN3U3R4aGI2QjI0ekFWVzJhd1FHQ0tqOFV4NXZBb3Y2cndXeWpPRC9aSzR6QVZXMmF3WFh4Zkw2WW5KekF3cHl5d2JkL2t6L1hMNWZBb2JHdndiZC9rei9YTDVmQUgxMnp3ZnN1RnI5VTM1akEvWEd3d2ZzdUZyOVUzNWpBNW9lMXdlMFcrTDNxeWxIQVFVaTJ3Y2tzdXIvWmRsSEFXYnZMd1UxZjF6MXpTVkhBTDlUTXdSUWdSYjg5NzAvQVdidkx3UVlidno5S0ZBdkJMOVRNd2FicFlUNUx5Z3ZCMXoyc3dYZGIrcjkyZjQ3QVZXMmF3YU9iaDc4bXhwN0FsUTZzd1dqYWdMOXozSTNBVlcyYXdWWnMrTCtwaEovQU5HMnR3ZlR0YU1BVUY1REFWVzJhd1hhT0tNRDJlcURBTmVDc3diRGlLTUEvUVkvQVZXMmF3WDFKYU1EQWJhTEFlaDIwd1ZuWEZNRE9qcHJBV2pLeHdWblhGTURPanByQW5naTN3UkpzTXNES0lsSEFDZTNOd1JXVzByOEhsVTdBQ2UzTndhbWdocjlMZ0F6QlZXMmF3YUNGbFQrVXE2WEFWVzJhd1p6SUViOHRuNmpBVlcyYXdSaW5FOEM5a3F2QWVockd3YVdjUThGYTFCZkJBUGU2d1o2eFpjRUhCUm5CVlcyYXdaNnhaY0VIQlJuQjRqdkl3YVdjUThGYTFCZkI0QVhQd1pENUVzR05JUmJCNEFYUHdTRXZHc0VBWWhiQjRBWFB3Y2ptaXNDQ2JCUEI0QVhQd2N1eCtzQTFZQlhCMk8rcndSRXdMRUhDMGVQQSt0cXV3UkV3TEVIQzBlUEFWVzJhd1JFd0xFSEMwZVBBR3NheHdSRXdMRUhDMGVQQWdxek53UkV3TEVIQzBlUEFncXpOd2J1ZVFrQ3VUQS9CNEFYUHdaSUpGTUIvU2hMQjRBWFB3VEloWE1DZTZ4TEI0QVhQd1RrcENNSGl3QlhCV2J2THdVK0d3RCtBS0JEQkw5VE13WXREYlQ1LzNoREJDZTNOd1dBMWhiOS9sQkhCZWhyR3dlMGlRc0VhRlVMQkFQZTZ3ZVkzWk1ISFJVUEJWVzJhd2VZM1pNSEhSVVBCNGp2SXdlMGlRc0VhRlVMQjRBWFB3ZFYvRWNGTVlrREI0QVhQd1dtMUdNRytva0RCNEFYUHdWTHpoOEJDclQzQjRBWFB3VnkrOThEMG9EL0IyTytyd2J5QUxrSEtORFRCK3RxdXdieUFMa0hLTkRUQlZXMmF3YnlBTGtIS05EVEJHc2F4d2J5QUxrSEtORFRCZ3F6TndieUFMa0hLTkRUQmdxek53YUNGU0VCc2pUbkI0QVhQd2FjaURzQStpenpCNEFYUHdUbzZWc0JjTEQzQjRBWFB3WDZ2QnNHZ0FVREJXYnZMd1NaVXpEOCthVHJCTDlUTXdTSFpwVDQrSHp2QkNlM053UkxQY3I4KzFUdkJTUGFnUUczSmlrRnJOS05CaldDM1FJbXpXRUdLNzU1Qk1WT2tRSHhEaTBIdHc2VkJxQU8wUUVURVYwR01ZSnhCeTZsdVFMMXR4MEFOY1U3QXk2bHVRTG5QSVVISmVObkF5Nmx1UUFGZHNVQ2x5NHpBeTZsdVFGMHZJMEZtVjlEQVRTV2ZRQUZkc1VDbHk0ekFoTzdtUUxuUElVSEplTm5BdVlJTFFST201MEJqMzQvQTlrSGJRTG5QSVVISmVObkFkUEQ0UUFreGxFR2lTcVJCQnVrZVFkQ3BYa0ZSSzZGQnNhMFpRUjB6bEVGdlFxZEJCdzBGUVM2eldFRk9PNTlCVWRrZFFmMjRYVUdJS0o1QkF0WURRZXZEVjBHZHBKeEJiWUwyUUhLMmswRlBzNkZCL1owWVFSdTRrMEVaUDZSQjlrSGJRTDF0eDBBTmNVN0F1WUlMUWJUZiswRDF6MnJBaE83bVFGMHZJMEZtVjlEQTlrSGJRRjB2STBGbVY5REF5Nmx1UUZIM3MwQURZTTYveTZsdVFIQnhSa0ZJckEzQXVZSUxRVUVqR2tINGl0bS85a0hiUUZIM3MwQURZTTYvOWtIYlFHU29WVUZML0RYQXVZSUxRV1NvVlVGTC9EWEF5Nmx1UUJ6NjRFQXJ1VEJBeTZsdVFLWElZRUZoanloQXVZSUxRYzVQSDBIVjFWbEE5a0hiUUJ6NjRFQXJ1VEJBOWtIYlFLRC9iMEZRUHdCQXVZSUxRYUQvYjBGUVB3QkF5Nmx1UUFFaEFVSDFZNWRBeTZsdVFJRm9hRUcyZFYxQXk2bHVRQUdDYmtIUzQ0TkF5Nmx1UUJrZ0RFRzBIYkJBdVlJTFFZUTRJMEdLWG9wQTlrSGJRQUVoQVVIMVk1ZEE5a0hiUUJrZ0RFRzBIYkJBaE83bVFCWlpKa0ZGN3FGQTlrSGJRSHFmZDBHMkpUVkF1WUlMUVhxZmQwRzJKVFZBOWtIYlFQbTRmVUdwZDE5QXVZSUxRZm00ZlVHcGQxOUFSakN2UU9XYVFrSGpuWlpCajkrV1FDOWNpVUVhaHB0QlFYK3FRS0M0UDBGODRaSkI2K3FiUUtNU2lrRTRYWjlCa3BRYlFWN1hXMEZRWlpsQmlHSUFRVVM0UDBIM0NKTkJOYW9hUWRYb1drRndJSlZCcXhRQ1FYMmFRa0dnMEpaQldEanZRSlpIa2tHRjdabEJjQVlYUWZUL2trRXZ1cDlCNVc0VlFUMUlra0ZiTlp0QllkM3lRTm4ra2tGZzBKMUJYVGNFUVhNV01FR2J5d2xCSXozbFFLb3BERUZXdEF0QlE3cUVRS29wREVGV3RBdEJRN3FFUUtJVGZVR2ZxUDVBSXozbFFMOTFoMEc4dC9aQUZUMFFRYjkxaDBHOHQvWkFqT2hlUVJPbTUwQmozNC9Bak9oZVFiVGYrMEQxejJyQWpPaGVRYm5QSVVISmVObkFqT2hlUVVFakdrSDRpdG0vak9oZVFhRC9iMEZRUHdCQWpPaGVRV1NvVlVGTC9EWEFqT2hlUVYwdkkwRm1WOURBak9oZVFjNVBIMEhWMVZsQWpPaGVRWVE0STBHS1hvcEFqT2hlUVJaWkprRkY3cUZBak9oZVFYTVdNRUdieXdsQmpPaGVRZFhvV2tGd0lKVkJqT2hlUVY3WFcwRlFaWmxCak9oZVFmMjRYVUdJS0o1QmpPaGVRZENwWGtGUks2RkJqT2hlUVIwemxFRnZRcWRCak9oZVFSdTRrMEVaUDZSQmpPaGVRZlQva2tFdnVwOUJqT2hlUVQxSWtrRmJOWnRCak9oZVFiOTFoMEc4dC9aQWpPaGVRZm00ZlVHcGQxOUFqT2hlUVhxZmQwRzJKVFZBWnhDeFFZbXpXRUdLNzU1QitLcTJRVzNKaWtGck5LTkJ2OU8xUVh4RGkwSHR3NlZCbytleFFVVEVWMEdNWUp4QlV4UEJRYm5QSVVISmVObkFVeFBCUWIxdHgwQU5jVTdBVXhQQlFRRmRzVUNseTR6QVV4UEJRVjB2STBGbVY5REE2aXlsUWJuUElVSEplTm5BTngrM1FRRmRzVUNseTR6QU1DZVpRUk9tNTBCajM0L0FEaGlvUWJuUElVSEplTm5BQ25TUFFkQ3BYa0ZSSzZGQmI2eWdRUWt4bEVHaVNxUkJzeEdTUVIwemxFRnZRcWRCQ0dLY1FTNnpXRUZPTzU5QjVmdVBRZjI0WFVHSUtKNUJpdjJjUWV2RFYwR2RwSnhCNzBlaFFYSzJrMEZQczZGQmpwbVNRUnU0azBFWlA2UkJEaGlvUWIxdHgwQU5jVTdBTUNlWlFiVGYrMEQxejJyQTZpeWxRVjB2STBGbVY5REFEaGlvUVYwdkkwRm1WOURBVXhQQlFWSDNzMEFEWU02L1V4UEJRWEJ4UmtGSXJBM0FNQ2VaUVVFakdrSDRpdG0vRGhpb1FWSDNzMEFEWU02L0RoaW9RV1NvVlVGTC9EWEFNQ2VaUVdTb1ZVRkwvRFhBVXhQQlFSejY0RUFydVRCQVV4UEJRYVhJWUVGaGp5aEFNQ2VaUWM1UEgwSFYxVmxBRGhpb1FSejY0RUFydVRCQURoaW9RYUQvYjBGUVB3QkFNQ2VaUWFEL2IwRlFQd0JBVXhQQlFRRWhBVUgxWTVkQVV4UEJRWUZvYUVHMmRWMUFVeFBCUVFHQ2JrSFM0NE5BVXhQQlFSa2dERUcwSGJCQU1DZVpRWVE0STBHS1hvcEFEaGlvUVFFaEFVSDFZNWRBRGhpb1FSa2dERUcwSGJCQTZpeWxRUlpaSmtGRjdxRkFEaGlvUVhxZmQwRzJKVFZBTUNlWlFYcWZkMEcySlRWQURoaW9RZm00ZlVHcGQxOUFNQ2VaUWZtNGZVR3BkMTlBcURDNVFTOWNpVUVhaHB0QmVSeXpRZVdhUWtIam5aWkJ1a2kwUWFDNFAwRjg0WkpCMHUyM1FhTVNpa0U0WFo5QlI3ZWVRVVM0UDBIM0NKTkJRUjZSUVY3WFcwRlFaWmxCY3BPUlFkWG9Xa0Z3SUpWQk5ONmRRWDJhUWtHZzBKWkJWR1dUUWZUL2trRXZ1cDlCZGhxalFaWkhra0dGN1psQkdUR1VRVDFJa2tGYk5adEJNekdpUWRuK2trRmcwSjFCM015Y1FYTVdNRUdieXdsQlFwbWxRYW9wREVGV3RBdEIrN205UWFvcERFRld0QXRCKzdtOVFhSVRmVUdmcVA1QVFwbWxRYjkxaDBHOHQvWkFBc3FXUWI5MWgwRzh0L1pBb1ZVRVFmeUdhVUZSdVp4Qm1ZY0NRZjZZamtHdDdhZEJ6ZWNCUWJiRWprRUVjcVpCK2U4RVFUQ2phVUhTUDU1QnZDYWVRYmJFamtFRWNxWkJES0djUVRDamFVSFNQNTVCaU82Y1FmeUdhVUZSdVp4QmdkYWRRZjZZamtHdDdhZEJQc1lQUVpuZGJFR3lZTTlCYnJReVFiU25nVUd1WitSQjdQZ05RV2VwaDBFZlpOTkJDODh6UVk3allFRlNXZUJCVWVZZVFmeUdhVUZSdVp4QjN5NGRRYmJFamtFRWNxWkJaRk1mUVRDamFVSFNQNTVCMFo4ZFFmNllqa0d0N2FkQnc0U1lRV2VwaDBFZlpOTkJja3lDUVk3allFRlNXZUJCcDVtWFFabmRiRUd5WU05Qm5kMkNRYlNuZ1VHdVorUkJNWU9RUWJiRWprRUVjcVpCTGFhUFFmeUdhVUZSdVp4QlVtK1BRVENqYVVIU1A1NUJhRXFRUWY2WWprR3Q3YWRCQkxvTlFacVpXMEdSNmJwQmgrMEpRY0F0a0VFeFFNSkJXVGVZUVpxWlcwR1I2YnBCbXgrYVFjQXRrRUV4UU1KQmhva2xRWnFaVzBHUjZicEJQOW9pUWNBdGtFRXhRTUpCbEUrTVFacVpXMEdSNmJwQlBLbU5RY0F0a0VFeFFNSkJLZWxlUWV2V2cwRWgzT1JCS2VsZVFmbEJaVUhDemVCQktlbGVRYmJFamtFRWNxWkJLZWxlUWZ5R2FVRlJ1WnhCS2VsZVFUQ2phVUhTUDU1QktlbGVRZjZZamtHdDdhZEJLZWxlUVpxWlcwR1I2YnBCS2VsZVFjQXRrRUV4UU1KQmpXQzN3SW16V0VHSzc1NUJTUGFnd0czSmlrRnJOS05CTVZPa3dIeERpMEh0dzZWQnFBTzB3RVRFVjBHTVlKeEJ5Nmx1d0xuUElVSEplTm5BeTZsdXdMMXR4MEFOY1U3QXk2bHV3QUZkc1VDbHk0ekF5Nmx1d0YwdkkwRm1WOURBaE83bXdMblBJVUhKZU5uQVRTV2Z3QUZkc1VDbHk0ekF1WUlMd1JPbTUwQmozNC9BOWtIYndMblBJVUhKZU5uQUJ1a2V3ZENwWGtGUks2RkJkUEQ0d0FreGxFR2lTcVJCc2EwWndSMHpsRUZ2UXFkQkJ3MEZ3UzZ6V0VGT081OUJVZGtkd2YyNFhVR0lLSjVCQXRZRHdldkRWMEdkcEp4QmJZTDJ3SEsyazBGUHM2RkIvWjBZd1J1NGswRVpQNlJCOWtIYndMMXR4MEFOY1U3QXVZSUx3YlRmKzBEMXoyckFoTzdtd0YwdkkwRm1WOURBOWtIYndGMHZJMEZtVjlEQXk2bHV3RkgzczBBRFlNNi95Nmx1d0hCeFJrRklyQTNBdVlJTHdVRWpHa0g0aXRtLzlrSGJ3RkgzczBBRFlNNi85a0hid0dTb1ZVRkwvRFhBdVlJTHdXU29WVUZML0RYQXk2bHV3Qno2NEVBcnVUQkF5Nmx1d0tYSVlFRmhqeWhBdVlJTHdjNVBIMEhWMVZsQTlrSGJ3Qno2NEVBcnVUQkE5a0hid0tEL2IwRlFQd0JBdVlJTHdhRC9iMEZRUHdCQXk2bHV3QUVoQVVIMVk1ZEF5Nmx1d0lGb2FFRzJkVjFBeTZsdXdBR0Nia0hTNDROQXk2bHV3QmtnREVHMEhiQkF1WUlMd1lRNEkwR0tYb3BBOWtIYndBRWhBVUgxWTVkQTlrSGJ3QmtnREVHMEhiQkFoTzdtd0JaWkprRkY3cUZBOWtIYndIcWZkMEcySlRWQXVZSUx3WHFmZDBHMkpUVkE5a0hid1BtNGZVR3BkMTlBdVlJTHdmbTRmVUdwZDE5QWo5K1d3QzljaVVFYWhwdEJSakN2d09XYVFrSGpuWlpCUVgrcXdLQzRQMEY4NFpKQjYrcWJ3S01TaWtFNFhaOUJpR0lBd1VTNFAwSDNDSk5Ca3BRYndWN1hXMEZRWlpsQk5hb2F3ZFhvV2tGd0lKVkJxeFFDd1gyYVFrR2cwSlpCY0FZWHdmVC9ra0V2dXA5QldEanZ3SlpIa2tHRjdabEI1VzRWd1QxSWtrRmJOWnRCWWQzeXdObitra0ZnMEoxQlhUY0V3WE1XTUVHYnl3bEJJejNsd0tvcERFRld0QXRCUTdxRXdLb3BERUZXdEF0QlE3cUV3S0lUZlVHZnFQNUFJejNsd0w5MWgwRzh0L1pBRlQwUXdiOTFoMEc4dC9aQWpPaGV3Uk9tNTBCajM0L0FqT2hld2JUZiswRDF6MnJBak9oZXdiblBJVUhKZU5uQWpPaGV3VUVqR2tINGl0bS9qT2hld2FEL2IwRlFQd0JBak9oZXdXU29WVUZML0RYQWpPaGV3VjB2STBGbVY5REFqT2hld2M1UEgwSFYxVmxBak9oZXdZUTRJMEdLWG9wQWpPaGV3UlpaSmtGRjdxRkFqT2hld1hNV01FR2J5d2xCak9oZXdkWG9Xa0Z3SUpWQmpPaGV3VjdYVzBGUVpabEJqT2hld2YyNFhVR0lLSjVCak9oZXdkQ3BYa0ZSSzZGQmpPaGV3UjB6bEVGdlFxZEJqT2hld1J1NGswRVpQNlJCak9oZXdmVC9ra0V2dXA5QmpPaGV3VDFJa2tGYk5adEJqT2hld2I5MWgwRzh0L1pBak9oZXdmbTRmVUdwZDE5QWpPaGV3WHFmZDBHMkpUVkErS3Eyd1czSmlrRnJOS05CWnhDeHdZbXpXRUdLNzU1QnY5TzF3WHhEaTBIdHc2VkJvK2V4d1VURVYwR01ZSnhCVXhQQndiMXR4MEFOY1U3QVV4UEJ3Ym5QSVVISmVObkFVeFBCd1FGZHNVQ2x5NHpBVXhQQndWMHZJMEZtVjlEQU54KzN3UUZkc1VDbHk0ekE2aXlsd2JuUElVSEplTm5BTUNlWndST201MEJqMzQvQURoaW93Ym5QSVVISmVObkFiNnlnd1FreGxFR2lTcVJCQ25TUHdkQ3BYa0ZSSzZGQnN4R1N3UjB6bEVGdlFxZEJDR0tjd1M2eldFRk9PNTlCNWZ1UHdmMjRYVUdJS0o1Qml2MmN3ZXZEVjBHZHBKeEI3MGVod1hLMmswRlBzNkZCanBtU3dSdTRrMEVaUDZSQkRoaW93YjF0eDBBTmNVN0FNQ2Vad2JUZiswRDF6MnJBNml5bHdWMHZJMEZtVjlEQURoaW93VjB2STBGbVY5REFVeFBCd1ZIM3MwQURZTTYvVXhQQndYQnhSa0ZJckEzQU1DZVp3VUVqR2tINGl0bS9EaGlvd1ZIM3MwQURZTTYvRGhpb3dXU29WVUZML0RYQU1DZVp3V1NvVlVGTC9EWEFVeFBCd1J6NjRFQXJ1VEJBVXhQQndhWElZRUZoanloQU1DZVp3YzVQSDBIVjFWbEFEaGlvd1J6NjRFQXJ1VEJBRGhpb3dhRC9iMEZRUHdCQU1DZVp3YUQvYjBGUVB3QkFVeFBCd1FFaEFVSDFZNWRBVXhQQndZRm9hRUcyZFYxQVV4UEJ3UUdDYmtIUzQ0TkFVeFBCd1JrZ0RFRzBIYkJBTUNlWndZUTRJMEdLWG9wQURoaW93UUVoQVVIMVk1ZEFEaGlvd1JrZ0RFRzBIYkJBNml5bHdSWlpKa0ZGN3FGQURoaW93WHFmZDBHMkpUVkFNQ2Vad1hxZmQwRzJKVFZBRGhpb3dmbTRmVUdwZDE5QU1DZVp3Zm00ZlVHcGQxOUFlUnl6d2VXYVFrSGpuWlpCcURDNXdTOWNpVUVhaHB0QnVraTB3YUM0UDBGODRaSkIwdTIzd2FNU2lrRTRYWjlCUVI2UndWN1hXMEZRWlpsQlI3ZWV3VVM0UDBIM0NKTkJjcE9Sd2RYb1drRndJSlZCTk42ZHdYMmFRa0dnMEpaQmRocWp3WlpIa2tHRjdabEJWR1dUd2ZUL2trRXZ1cDlCR1RHVXdUMUlra0ZiTlp0Qk16R2l3ZG4ra2tGZzBKMUIzTXljd1hNV01FR2J5d2xCUXBtbHdhb3BERUZXdEF0Qis3bTl3YW9wREVGV3RBdEIrN205d2FJVGZVR2ZxUDVBUXBtbHdiOTFoMEc4dC9aQUFzcVd3YjkxaDBHOHQvWkFtWWNDd2Y2WWprR3Q3YWRCb1ZVRXdmeUdhVUZSdVp4QnplY0J3YmJFamtFRWNxWkIrZThFd1RDamFVSFNQNTVCREtHY3dUQ2phVUhTUDU1QnZDYWV3YmJFamtFRWNxWkJpTzZjd2Z5R2FVRlJ1WnhCZ2RhZHdmNllqa0d0N2FkQmJyUXl3YlNuZ1VHdVorUkJQc1lQd1puZGJFR3lZTTlCN1BnTndXZXBoMEVmWk5OQkM4OHp3WTdqWUVGU1dlQkJVZVlld2Z5R2FVRlJ1WnhCM3k0ZHdiYkVqa0VFY3FaQlpGTWZ3VENqYVVIU1A1NUIwWjhkd2Y2WWprR3Q3YWRCY2t5Q3dZN2pZRUZTV2VCQnc0U1l3V2VwaDBFZlpOTkJwNW1Yd1puZGJFR3lZTTlCbmQyQ3diU25nVUd1WitSQk1ZT1F3YmJFamtFRWNxWkJMYWFQd2Z5R2FVRlJ1WnhCVW0rUHdUQ2phVUhTUDU1QmFFcVF3ZjZZamtHdDdhZEJCTG9Od1pxWlcwR1I2YnBCaCswSndjQXRrRUV4UU1KQldUZVl3WnFaVzBHUjZicEJteCthd2NBdGtFRXhRTUpCaG9rbHdacVpXMEdSNmJwQlA5b2l3Y0F0a0VFeFFNSkJsRStNd1pxWlcwR1I2YnBCUEttTndjQXRrRUV4UU1KQktlbGV3ZXZXZzBFaDNPUkJLZWxld2ZsQlpVSEN6ZUJCS2VsZXdiYkVqa0VFY3FaQktlbGV3ZnlHYVVGUnVaeEJLZWxld1RDamFVSFNQNTVCS2VsZXdmNllqa0d0N2FkQktlbGV3WnFaVzBHUjZicEJLZWxld2NBdGtFRXhRTUpCSWx1TXdDOTBOVUpNTjRwQkpqV1B3Rjl3UWtKTWhaRkJvVEdRd0xTRFFrTHVtWkJCU1dlTHdNOTlOVUlxS290QlMxQ1dRTFNEUWtMdW1aQkIzWUNSUU05OU5VSXFLb3RCdW5XU1FDOTBOVUpNTjRwQnhsS1ZRRjl3UWtKTWhaRkIyWTkwd0hLZk5rSituYnhCaXk0R3dNOWVQRUxKMU1sQm9rRjZ3SVpDUDBKTVZyOUJnYkVDd0FHK00wSTlGY2RCSDhSRXdDOTBOVUpNTjRwQndUQkt3TFNEUWtMdW1aQkJkR3REd005OU5VSXFLb3RCM010SXdGOXdRa0pNaFpGQnFJT0VRSVpDUDBKTVZyOUJQVEw1UHdHK00wSTlGY2RCc3B5QlFIS2ZOa0orbmJ4Qm5TNEFRTTllUEVMSjFNbEJCbTVXUUxTRFFrTHVtWkJCTlBsUVFDOTBOVUpNTjRwQmg1NVBRTTk5TlVJcUtvdEJJZ2RWUUY5d1FrSk1oWkZCYXdoN3dGVXNNa0pieUs5QnZvU0R3REJuUTBJeXpMUkJCSStEUUZVc01rSmJ5SzlCN3BXSlFEQm5RMEl5ekxSQm5jb3Z3RlVzTWtKYnlLOUJaVVk0d0RCblEwSXl6TFJCSXVBN1FGVXNNa0pieUs5QnMyaEVRREJuUTBJeXpMUkJHVXF3UFJGM1BVS0xKTXBCR1Vxd1BUL1dORUwvWk1kQkdVcXdQYlNEUWtMdW1aQkJHVXF3UFM5ME5VSk1ONHBCR1Vxd1BjOTlOVUlxS290QkdVcXdQVjl3UWtKTWhaRkJHVXF3UFZVc01rSmJ5SzlCR1Vxd1BUQm5RMEl5ekxSQis3a2J3UVJ5UWtJR0o1RkJBb2dkd1FGNU5VSkVJNGxCTGhvYndjK0ZRa0pqSVpCQldpSWV3U21DTlVJRU1ZcEJQRHFwd1NtQ05VSUVNWXBCN2IrcXdjK0ZRa0pqSVpCQnVZZXB3UUY1TlVKRUk0bEJzMitxd1FSeVFrSUdKNUZCeitaTHdiQk5QRUp5cWMxQm9QZ293YTZVTmtJWEJyOUJUaXNud2JRMlAwSVgrOEZCYkFGTndmU3RNMEx3ck1wQnNoZzR3UUY1TlVKRUk0bEJRV0Uyd2MrRlFrSmpJWkJCeElVNHdTbUNOVUlFTVlwQk1kSTJ3UVJ5UWtJR0o1RkJvdVdPd2ZTdE0wTHdyTXBCOUIybHdiUTJQMElYKzhGQjJUS2t3YTZVTmtJWEJyOUJ6bmFQd2JCTlBFSnlxYzFCWWh5ZHdjK0ZRa0pqSVpCQlhUK2N3UUY1TlVKRUk0bEJnZ2ljd1NtQ05VSUVNWXBCbU9PY3dRUnlRa0lHSjVGQlpld213Y1luTWtJM3piQkI2Qjhqd2I1Z1EwSlZQYlpCaTlDa3djWW5Na0kzemJCQnpMaW13YjVnUTBKVlBiWkI1N3Mrd2NZbk1rSTN6YkJCb1F3OHdiNWdRMEpWUGJaQncraVl3Y1luTWtJM3piQkJiVUthd2I1Z1EwSlZQYlpCaWh0NHdkSmxQVUxoLzgxQmlodDR3UkxHTkVKZ0E4dEJpaHQ0d2MrRlFrSmpJWkJCaWh0NHdRRjVOVUpFSTRsQmlodDR3U21DTlVJRU1ZcEJpaHQ0d1FSeVFrSUdKNUZCaWh0NHdjWW5Na0kzemJCQmlodDR3YjVnUTBKVlBiWkI0QVhQUWFkR3NrRUQzdnJBNEFYUFFSdmRyVUhwVzkyLzRBWFBRYjVJcjBIcFh2dkE0QVhQUVFQYnNFRldXTnUvZ3F6TlFkVWdEVUxVc1dQQWdxek5RUklESFVLdTNySEFncXpOUVVUUUhVSytjcTNBZ3F6TlFiaXBDVUpNMFZUQVJmR3VRYVdvRFVMdHM0bkErdHF1UVVUUUhVSytjcTNBMk8rclFVVFFIVUsrY3EzQVo5eXhRYVdvRFVMdHM0bkFBUGU2UVpieWowRjhVZ0RCWjl5eFFZZUFuMEdiWWliQVJmR3VRV3N5ajBIRkRKbkFlaHJHUVhNWG5rR2JRLzdBWjl5eFFSQ09va0dOV3lYQVJmR3VRZlEva2tFL2laakFSZkd1UWJTS0MwSmxMb0xBWjl5eFFWVEFDVUt0eUlMQSt0cXVRVDFkRzBLbWJMTEEyTytyUVQxZEcwS21iTExBVlcyYVFTdkVEa0loWVlUQVZXMmFRVVRRSFVLK2NxM0FWVzJhUVpieWowRjhVZ0RCVlcyYVFkcU1qMEhnek1uQVZXMmFRV09ha2tGYlNjbkFWVzJhUWJDNkRFSUdqSDNBVlcyYVFUMWRHMEttYkxMQUdzYXhRVVRRSFVLK2NxM0Fpc2UwUWRVZ0RVTFVzV1BBaXNlMFFXZFJuMEdTSnVlLzRqdklRWE1YbmtHYlEvN0Fpc2UwUWZGZW9rRjNHT1cvaXNlMFFiaXBDVUpNMFZUQUdzYXhRVDFkRzBLbWJMTEE0QVhQUVYxQXUwRlFXL25BNEFYUFFRWG56MEYvQlJQQTRBWFBRVzNKdVVHTDdieS80QVhQUWM5eTBrSHVjL1hBWjl5eFFhNjJxMEZsUmlMQXRQS3hRZTlQd1VGQjZWSEFSZkd1UWE2MnEwRmxSaUxBMTkyMFFlOVB3VUZCNlZIQVZXMmFRVFB2cTBGek5sL0FWVzJhUVNkOXdVR3VWSUhBaXNlMFFVQjhxMEVnanNhLytjaTNRUkl0d1VHZFVTekFncXpOUVM2N0FVSkFOTzNBZjZMS1FZemE5VUZKS2dUQVo5eXhRWEpGQVVKVmgxekFSZkd1UVhKRkFVSlZoMXpBVlcyYVFhYWZCRUludlhUQWlzZTBRYTFrOTBHaXBRUEE0QVhQUWRlYjNrSGpndjIvNEFYUFFaOXUyRUVlY3ZUQTRBWFBRV0xwMzBIakwvUEE0QVhQUVZFKzEwSGF6Q0RBdFBLeFFlSmExRUUyQTJyQTE5MjBRVnFUekVFajgwUEExOTIwUWVKYTFFRTJBMnJBdFBLeFFWcVR6RUVqODBQQVZXMmFRY3Q4MUVHblNZZkFWVzJhUWN2dHpFR2x1WkxBK2NpM1FXOVF6RUZYbVBlLytjaTNRYmo2MDBGVFZRTEE0QVhQUVlMRHRrR29IUHJBNEFYUFFUaFN0VUh3SXN5L1JmR3VRWEhacFVISkFHZkFaOXl4UVczZnBVR1JkRzNBVlcyYVFjalBsVUd1cUdiQWlzZTBRWnZ0cGtGUzA5Vy9WVzJhUWFhVC8wRWhuMlRBalMrc1FYL2orRUZPN1V6QVM2aXJRUnFULzBFRllVdkFWVzJhUWF6NCtFRVl2bWpBVlcyYVFVYkU4MEhMRkduQVFqaXNRUk9kN1VHalBVdkFvdjZyUVJvaTlFRlYza25BVlcyYVFUaTA3VUhQdjJyQXdweXlRZVQrOWtGVjVsL0FvYkd2UWVUKzlrRlY1bC9BSDEyelFlSnk2MEZKUldQQS9YR3dRZUp5NjBGSlJXUEE1b2UxUVRHSzdrR1JVUVBBUVVpMlFiT3Y1VUY4L1FMQVdidkxRZDRLOEVFVzBBTEFMOVRNUVRFNzZrSGRkUUhBV2J2TFFmdEIrVUhuNis3QUw5VE1RUjdQOEVIalYvREFWVzJhUVRwUDZFSHlFbS9BMXoyc1FWdGI0a0dSaFU3QWxRNnNRZTJvNkVHR1AwM0FWVzJhUVFwMTRrSDFqM0RBVlcyYVFUN2IzVUdRZkhMQU5HMnRRWDh0MTBITXRGSEFOZUNzUVlIUzNVRWtDVkRBVlcyYVFZMCsxMEVqWW5iQWVoMjBRZURtMzBGRHBHYkFXakt4UWVEbTMwRkRwR2JBbmdpM1FUYlYzRUZxcVFMQUNlM05RWU5yNUVHcUd3REFDZTNOUVVCYzZFSG53L0hBVlcyYVFjSVo5MEhMM1h6QVZXMmFRUmVRNjBGK1lvSEFWVzJhUVhBRzRFRVBWb1RBZWhyR1FVb3Fua0VETmdUQkFQZTZRVzBGa0VHeFpnWEJWVzJhUVcwRmtFR3haZ1hCNGp2SVFVb3Fua0VETmdUQjRBWFBRWDlac2tFMWd3TEI0QVhQUVpSYnIwR3B3d0xCNEFYUFFhaUYwa0ZWblAvQTRBWFBRVFJUdTBIZHdRSEIyTytyUWF0bUcwSVNsYnpBK3RxdVFhdG1HMElTbGJ6QVZXMmFRYXRtRzBJU2xiekFHc2F4UWF0bUcwSVNsYnpBZ3F6TlFhdG1HMElTbGJ6QWdxek5RWnJFQVVLdFhQZkE0QVhQUVRyODMwRktXUDNBNEFYUFFYYUIyRUdMbXY3QTRBWFBRVnZXdGtHSklnTEJXYnZMUWROVStVRlVGUG5BTDlUTVFmYmg4RUZRZ1ByQUNlM05RUmx2NkVGTjdQdkFlaHJHUVF6SG5rSENkaTdCQVBlNlFTK2lrRUZ5cHkvQlZXMmFRUytpa0VGeXB5L0I0anZJUVF6SG5rSENkaTdCNEFYUFFVSDJza0gyd3l6QjRBWFBRVlg0cjBGcEJDM0I0QVhQUVdraTAwSG9EaXJCNEFYUFFmYnZ1MEdjQWl6QjJPK3JRVW0xRFVKSisxTEIrdHF1UVVtMURVSkorMUxCVlcyYVFVbTFEVUpKKzFMQkdzYXhRVW0xRFVKSisxTEJncXpOUVVtMURVSkorMUxCZ3F6TlFmd1NBa0lVN3lYQjRBWFBRZnlZNEVIbzdDakI0QVhQUVRjZTJVRUVqaW5CNEFYUFFSMXp0MEZJWXl6QldidkxRWlR4K1VIb3lpYkJMOVRNUWJkKzhVSG1nQ2ZCQ2UzTlFkZ0w2VUhvTmlqQjdScDRRYXRtRzBJU2xiekE3UnA0UVVtMURVSkorMUxCN1JwNFFTK2lrRUZ5cHkvQjdScDRRVzBGa0VHeFpnWEI3UnA0UVQxZEcwS21iTExBN1JwNFFaYnlqMEY4VWdEQjdScDRRWTArMTBFalluYkE3UnA0UVQ3YjNVR1FmSExBN1JwNFFYQUc0RUVQVm9UQTdScDRRY3Q4MUVHblNZZkE3UnA0UVFwMTRrSDFqM0RBN1JwNFFUcFA2RUh5RW0vQTdScDRRUmVRNjBGK1lvSEE3UnA0UVRpMDdVSFB2MnJBN1JwNFFVYkU4MEhMRkduQTdScDRRY0laOTBITDNYekE3UnA0UWF6NCtFRVl2bWpBN1JwNFFhYVQvMEVobjJUQTdScDRRYWFmQkVJbnZYVEE3UnA0UWNqUGxVR3VxR2JBN1JwNFFUUHZxMEZ6TmwvQTdScDRRV09ha2tGYlNjbkE3UnA0UWN2dHpFR2x1WkxBN1JwNFFTZDl3VUd1VklIQTdScDRRYkM2REVJR2pIM0E3UnA0UVVUUUhVSytjcTNBN1JwNFFTdkVEa0loWVlUQTdScDRRZHFNajBIZ3pNbkFtS205UVloTk1VS3VQNGxCS1VURFFWdUZRRUtRaEkxQjhHekNRV1BDUUVJU0ZKQkIxSUMrUWJjUk1VS3lzSVpCaEt6TlFYay9HVUlkUExMQWhLek5RZUJjREVKZjcvKy9oS3pOUWRJU0NrTHBIVXZBaEt6TlFYQ0lHVUs3R3FuQUdzYXhRWGsvR1VJZFBMTEFhYmpEUWRJU0NrTHBIVXZBWWNDbFFhUzBEMEpxUlZIQVA3RzBRWGsvR1VJZFBMTEFPZzJjUVJyTE1rSjJlNHRCb0VXdFFTbzVSVUxHbW81QjQ2cWVRVE02UlVLVGtwRkJPdnVvUVhOTk1VSnppNGxCRlpXY1FlZU9Na0t1ZUloQnVwYXBRYUVSTVVMQjlJWkJJT0d0UWQvN1JFSjFBNHhCdnpLZlFiUDhSRUkrajQ1QlA3RzBRZUJjREVKZjcvKy9ZY0NsUWRQTkVVS1hWaHpBR3NheFFYQ0lHVUs3R3FuQVA3RzBRWENJR1VLN0dxbkFoS3pOUWZOWENrSWd0Y1craEt6TlFWdlpJRUtReTN5L1ljQ2xRZG1uRjBMMVlQSytQN0cwUWZOWENrSWd0Y1crUDdHMFFZNEJKRUxhQmMrL1ljQ2xRWTRCSkVMYUJjKy9oS3pOUVhBREQwS0lNbjlBaEt6TlFaRlFKa0s5Q0hkQVljQ2xRYkc2R0VLWko1UkFQN0cwUVhBREQwS0lNbjlBUDdHMFFjVjRLVUt0dUU1QVljQ2xRY1Y0S1VLdHVFNUFoS3pOUVdGM0VrS2tvTDVBaEt6TlFaTGxKMEtLOTVWQWhLek5RWlFwS1VLQklLdEFoS3pOUVlLL0ZFSmpXdGRBWWNDbFFWZUtHVUk1bTdGQVA3RzBRV0YzRWtLa29MNUFQN0cwUVlLL0ZFSmpXdGRBR3NheFFYVXdHa0x6S3NsQVA3RzBRY2NOSzBLS3o0RkFZY0NsUWNjTkswS0t6NEZBUDdHMFFjbFJMRUtEK0paQVljQ2xRY2xSTEVLRCtKWkEyY25GUWIzT1AwSS8xb1ZCcXJXL1FWL0hLMElIN29CQjYrSEFRYzBPSzBKQ1kzcEJBb2ZFUWZVcFFFSmRyWWxCZUZDclFiZ09LMEk0c25wQmNyZWRRWDBXTWtKMXRZTkJveXllUWR6YU1VSXA0WDVCWlhlcVFVWEhLMExGSUlGQmhQNmZRYUNnUkVKVENvcEJwN092UVhGRVJFS3FQWVJCU2NxZ1FjUkVSRUtBaFlWQlpjcXVRUk9nUkVLRklJaEJEV2FwUVpCTUtrSmVuRFpCY3pLeVFWOVJJVUlaaFRoQkxGUEtRVjlSSVVJWmhUaEJMRlBLUWR1TFBVSVRKU3hCY3pLeVFkSUJRa0kxK2c1Qk0yT2pRZElCUWtJMStnNUI3UnA0UWFTMEQwSnFSVkhBN1JwNFFkUE5FVUtYVmh6QTdScDRRWGsvR1VJZFBMTEE3UnA0UWRtbkYwTDFZUEsrN1JwNFFjVjRLVUt0dUU1QTdScDRRWTRCSkVMYUJjKy83UnA0UVhDSUdVSzdHcW5BN1JwNFFiRzZHRUtaSjVSQTdScDRRVmVLR1VJNW03RkE3UnA0UVhVd0drTHpLc2xBN1JwNFFaQk1La0plbkRaQjdScDRRZHphTVVJcDRYNUI3UnA0UVgwV01rSjF0WU5CN1JwNFFlZU9Na0t1ZUloQjdScDRRUnJMTWtKMmU0dEI3UnA0UVRNNlJVS1RrcEZCN1JwNFFiUDhSRUkrajQ1QjdScDRRYUNnUkVKVENvcEI3UnA0UWNSRVJFS0FoWVZCN1JwNFFkSUJRa0kxK2c1QjdScDRRY2xSTEVLRCtKWkE3UnA0UWNjTkswS0t6NEZBQUFBQUFNY05LMEtLejRGQUFBQUFBTWxSTEVLRCtKWkFBQUFBQU1WNEtVS3R1RTVBQUFBQUFOSUJRa0kxK2c1QkFBQUFBTVJFUkVLQWhZVkJBQUFBQUtDZ1JFSlRDb3BCQUFBQUFMUDhSRUkrajQ1QkFBQUFBRE02UlVLVGtwRkJBQUFBQUJyTE1rSjJlNHRCQUFBQUFPZU9Na0t1ZUloQkFBQUFBSDBXTWtKMXRZTkJBQUFBQU56YU1VSXA0WDVCQUFBQUFKQk1La0plbkRaQkFBQUFBSFV3R2tMektzbEFBQUFBQUZlS0dVSTVtN0ZBQUFBQUFMRzZHRUtaSjVSQUFBQUFBTm1uRjBMMVlQSytBQUFBQUhDSUdVSzdHcW5BQUFBQUFJNEJKRUxhQmMrL0FBQUFBSGsvR1VJZFBMTEFBQUFBQU5QTkVVS1hWaHpBQUFBQUFLUzBEMEpxUlZIQUFBQUFBR09ha2tGYlNjbkFBQUFBQU5xTWowSGd6TW5BQUFBQUFKYnlqMEY4VWdEQkFBQUFBRVRRSFVLK2NxM0FBQUFBQUN2RURrSWhZWVRBQUFBQUFMQzZERUlHakgzQUFBQUFBRDFkRzBLbWJMTEFBQUFBQUthZkJFSW52WFRBQUFBQUFNdnR6RUdsdVpMQUFBQUFBQ2Q5d1VHdVZJSEFBQUFBQURQdnEwRnpObC9BQUFBQUFNdDgxRUduU1lmQUFBQUFBTWpQbFVHdXFHYkFBQUFBQUthVC8wRWhuMlRBQUFBQUFLejQrRUVZdm1qQUFBQUFBTUlaOTBITDNYekFBQUFBQUViRTgwSExGR25BQUFBQUFEaTA3VUhQdjJyQUFBQUFBQmVRNjBGK1lvSEFBQUFBQURwUDZFSHlFbS9BQUFBQUFBcDE0a0gxajNEQUFBQUFBSEFHNEVFUFZvVEFBQUFBQUkwKzEwRWpZbmJBQUFBQUFEN2IzVUdRZkhMQUFBQUFBRzBGa0VHeFpnWEJBQUFBQUt0bUcwSVNsYnpBQUFBQUFDK2lrRUZ5cHkvQkFBQUFBRW0xRFVKSisxTEI0QVhQd1J2ZHJVSHBXOTIvNEFYUHdhZEdza0VEM3ZyQTRBWFB3YjVJcjBIcFh2dkE0QVhQd1FQYnNFRldXTnUvZ3F6TndSSURIVUt1M3JIQWdxek53ZFVnRFVMVXNXUEFncXpOd1VUUUhVSytjcTNBZ3F6TndiaXBDVUpNMFZUQSt0cXV3VVRRSFVLK2NxM0FSZkd1d2FXb0RVTHRzNG5BMk8rcndVVFFIVUsrY3EzQVo5eXh3YVdvRFVMdHM0bkFaOXl4d1llQW4wR2JZaWJBQVBlNndaYnlqMEY4VWdEQlJmR3V3V3N5ajBIRkRKbkFlaHJHd1hNWG5rR2JRLzdBWjl5eHdSQ09va0dOV3lYQVJmR3V3ZlEva2tFL2laakFSZkd1d2JTS0MwSmxMb0xBWjl5eHdWVEFDVUt0eUlMQSt0cXV3VDFkRzBLbWJMTEEyTytyd1QxZEcwS21iTExBVlcyYXdTdkVEa0loWVlUQVZXMmF3VVRRSFVLK2NxM0FWVzJhd1pieWowRjhVZ0RCVlcyYXdkcU1qMEhnek1uQVZXMmF3V09ha2tGYlNjbkFWVzJhd2JDNkRFSUdqSDNBVlcyYXdUMWRHMEttYkxMQUdzYXh3VVRRSFVLK2NxM0Fpc2Uwd2RVZ0RVTFVzV1BBaXNlMHdXZFJuMEdTSnVlLzRqdkl3WE1YbmtHYlEvN0Fpc2Uwd2ZGZW9rRjNHT1cvaXNlMHdiaXBDVUpNMFZUQUdzYXh3VDFkRzBLbWJMTEE0QVhQd1FYbnowRi9CUlBBNEFYUHdWMUF1MEZRVy9uQTRBWFB3VzNKdVVHTDdieS80QVhQd2M5eTBrSHVjL1hBdFBLeHdlOVB3VUZCNlZIQVo5eXh3YTYycTBGbFJpTEFSZkd1d2E2MnEwRmxSaUxBMTkyMHdlOVB3VUZCNlZIQVZXMmF3VFB2cTBGek5sL0FWVzJhd1NkOXdVR3VWSUhBaXNlMHdVQjhxMEVnanNhLytjaTN3Ukl0d1VHZFVTekFncXpOd1M2N0FVSkFOTzNBZjZMS3dZemE5VUZKS2dUQVo5eXh3WEpGQVVKVmgxekFSZkd1d1hKRkFVSlZoMXpBVlcyYXdhYWZCRUludlhUQWlzZTB3YTFrOTBHaXBRUEE0QVhQd1o5dTJFRWVjdlRBNEFYUHdkZWIza0hqZ3YyLzRBWFB3V0xwMzBIakwvUEE0QVhQd1ZFKzEwSGF6Q0RBMTkyMHdWcVR6RUVqODBQQXRQS3h3ZUphMUVFMkEyckExOTIwd2VKYTFFRTJBMnJBdFBLeHdWcVR6RUVqODBQQVZXMmF3Y3Q4MUVHblNZZkFWVzJhd2N2dHpFR2x1WkxBK2NpM3dXOVF6RUZYbVBlLytjaTN3Ymo2MDBGVFZRTEE0QVhQd1lMRHRrR29IUHJBNEFYUHdUaFN0VUh3SXN5L1JmR3V3WEhacFVISkFHZkFaOXl4d1czZnBVR1JkRzNBVlcyYXdjalBsVUd1cUdiQWlzZTB3WnZ0cGtGUzA5Vy9qUytzd1gvaitFRk83VXpBVlcyYXdhYVQvMEVobjJUQVM2aXJ3UnFULzBFRllVdkFWVzJhd2F6NCtFRVl2bWpBUWppc3dST2Q3VUdqUFV2QVZXMmF3VWJFODBITEZHbkFvdjZyd1JvaTlFRlYza25BVlcyYXdUaTA3VUhQdjJyQXdweXl3ZVQrOWtGVjVsL0FvYkd2d2VUKzlrRlY1bC9BSDEyendlSnk2MEZKUldQQS9YR3d3ZUp5NjBGSlJXUEE1b2Uxd1RHSzdrR1JVUVBBUVVpMndiT3Y1VUY4L1FMQVdidkx3ZDRLOEVFVzBBTEFMOVRNd1RFNzZrSGRkUUhBV2J2THdmdEIrVUhuNis3QUw5VE13UjdQOEVIalYvREExejJzd1Z0YjRrR1JoVTdBVlcyYXdUcFA2RUh5RW0vQWxRNnN3ZTJvNkVHR1AwM0FWVzJhd1FwMTRrSDFqM0RBTkcydHdYOHQxMEhNdEZIQVZXMmF3VDdiM1VHUWZITEFOZUNzd1lIUzNVRWtDVkRBVlcyYXdZMCsxMEVqWW5iQWVoMjB3ZURtMzBGRHBHYkFXakt4d2VEbTMwRkRwR2JBbmdpM3dUYlYzRUZxcVFMQUNlM053WU5yNUVHcUd3REFDZTNOd1VCYzZFSG53L0hBVlcyYXdjSVo5MEhMM1h6QVZXMmF3UmVRNjBGK1lvSEFWVzJhd1hBRzRFRVBWb1RBZWhyR3dVb3Fua0VETmdUQkFQZTZ3VzBGa0VHeFpnWEJWVzJhd1cwRmtFR3haZ1hCNGp2SXdVb3Fua0VETmdUQjRBWFB3WDlac2tFMWd3TEI0QVhQd1pSYnIwR3B3d0xCNEFYUHdhaUYwa0ZWblAvQTRBWFB3VFJUdTBIZHdRSEIyTytyd2F0bUcwSVNsYnpBK3RxdXdhdG1HMElTbGJ6QVZXMmF3YXRtRzBJU2xiekFHc2F4d2F0bUcwSVNsYnpBZ3F6TndhdG1HMElTbGJ6QWdxek53WnJFQVVLdFhQZkE0QVhQd1RyODMwRktXUDNBNEFYUHdYYUIyRUdMbXY3QTRBWFB3VnZXdGtHSklnTEJXYnZMd2ROVStVRlVGUG5BTDlUTXdmYmg4RUZRZ1ByQUNlM053Umx2NkVGTjdQdkFlaHJHd1F6SG5rSENkaTdCQVBlNndTK2lrRUZ5cHkvQlZXMmF3Uytpa0VGeXB5L0I0anZJd1F6SG5rSENkaTdCNEFYUHdVSDJza0gyd3l6QjRBWFB3Vlg0cjBGcEJDM0I0QVhQd1draTAwSG9EaXJCNEFYUHdmYnZ1MEdjQWl6QjJPK3J3VW0xRFVKSisxTEIrdHF1d1VtMURVSkorMUxCVlcyYXdVbTFEVUpKKzFMQkdzYXh3VW0xRFVKSisxTEJncXpOd1VtMURVSkorMUxCZ3F6Tndmd1NBa0lVN3lYQjRBWFB3ZnlZNEVIbzdDakI0QVhQd1RjZTJVRUVqaW5CNEFYUHdSMXp0MEZJWXl6Qldidkx3WlR4K1VIb3lpYkJMOVRNd2JkKzhVSG1nQ2ZCQ2UzTndkZ0w2VUhvTmlqQjdScDR3YXRtRzBJU2xiekE3UnA0d1VtMURVSkorMUxCN1JwNHdTK2lrRUZ5cHkvQjdScDR3VzBGa0VHeFpnWEI3UnA0d1QxZEcwS21iTExBN1JwNHdaYnlqMEY4VWdEQjdScDR3WTArMTBFalluYkE3UnA0d1Q3YjNVR1FmSExBN1JwNHdYQUc0RUVQVm9UQTdScDR3Y3Q4MUVHblNZZkE3UnA0d1FwMTRrSDFqM0RBN1JwNHdUcFA2RUh5RW0vQTdScDR3UmVRNjBGK1lvSEE3UnA0d1RpMDdVSFB2MnJBN1JwNHdVYkU4MEhMRkduQTdScDR3Y0laOTBITDNYekE3UnA0d2F6NCtFRVl2bWpBN1JwNHdhYVQvMEVobjJUQTdScDR3YWFmQkVJbnZYVEE3UnA0d2NqUGxVR3VxR2JBN1JwNHdUUHZxMEZ6TmwvQTdScDR3V09ha2tGYlNjbkE3UnA0d2N2dHpFR2x1WkxBN1JwNHdTZDl3VUd1VklIQTdScDR3YkM2REVJR2pIM0E3UnA0d1VUUUhVSytjcTNBN1JwNHdTdkVEa0loWVlUQTdScDR3ZHFNajBIZ3pNbkFLVVREd1Z1RlFFS1FoSTFCbUttOXdZaE5NVUt1UDRsQjhHekN3V1BDUUVJU0ZKQkIxSUMrd2JjUk1VS3lzSVpCaEt6TndlQmNERUpmNy8rL2hLek53WGsvR1VJZFBMTEFoS3pOd2RJU0NrTHBIVXZBaEt6TndYQ0lHVUs3R3FuQWFiakR3ZElTQ2tMcEhVdkFHc2F4d1hrL0dVSWRQTExBWWNDbHdhUzBEMEpxUlZIQVA3RzB3WGsvR1VJZFBMTEFvRVd0d1NvNVJVTEdtbzVCT2cyY3dSckxNa0oyZTR0QjQ2cWV3VE02UlVLVGtwRkJPdnVvd1hOTk1VSnppNGxCRlpXY3dlZU9Na0t1ZUloQnVwYXB3YUVSTVVMQjlJWkJJT0d0d2QvN1JFSjFBNHhCdnpLZndiUDhSRUkrajQ1QlA3RzB3ZUJjREVKZjcvKy9ZY0Nsd2RQTkVVS1hWaHpBR3NheHdYQ0lHVUs3R3FuQVA3RzB3WENJR1VLN0dxbkFoS3pOd2ZOWENrSWd0Y1craEt6TndWdlpJRUtReTN5L1ljQ2x3ZG1uRjBMMVlQSytQN0cwd2ZOWENrSWd0Y1crUDdHMHdZNEJKRUxhQmMrL1ljQ2x3WTRCSkVMYUJjKy9oS3pOd1hBREQwS0lNbjlBaEt6TndaRlFKa0s5Q0hkQVljQ2x3Ykc2R0VLWko1UkFQN0cwd1hBREQwS0lNbjlBUDdHMHdjVjRLVUt0dUU1QVljQ2x3Y1Y0S1VLdHVFNUFoS3pOd1dGM0VrS2tvTDVBaEt6TndaTGxKMEtLOTVWQWhLek53WlFwS1VLQklLdEFoS3pOd1lLL0ZFSmpXdGRBWWNDbHdWZUtHVUk1bTdGQVA3RzB3V0YzRWtLa29MNUFQN0cwd1lLL0ZFSmpXdGRBR3NheHdYVXdHa0x6S3NsQVA3RzB3Y2NOSzBLS3o0RkFZY0Nsd2NjTkswS0t6NEZBUDdHMHdjbFJMRUtEK0paQVljQ2x3Y2xSTEVLRCtKWkFxclcvd1YvSEswSUg3b0JCMmNuRndiM09QMEkvMW9WQjYrSEF3YzBPSzBKQ1kzcEJBb2ZFd2ZVcFFFSmRyWWxCY3JlZHdYMFdNa0oxdFlOQmVGQ3J3YmdPSzBJNHNucEJveXlld2R6YU1VSXA0WDVCWlhlcXdVWEhLMExGSUlGQnA3T3Z3WEZFUkVLcVBZUkJoUDZmd2FDZ1JFSlRDb3BCU2NxZ3djUkVSRUtBaFlWQlpjcXV3Uk9nUkVLRklJaEJEV2Fwd1pCTUtrSmVuRFpCY3pLeXdWOVJJVUlaaFRoQkxGUEt3VjlSSVVJWmhUaEJMRlBLd2R1TFBVSVRKU3hCY3pLeXdkSUJRa0kxK2c1Qk0yT2p3ZElCUWtJMStnNUI3UnA0d2FTMEQwSnFSVkhBN1JwNHdkUE5FVUtYVmh6QTdScDR3WGsvR1VJZFBMTEE3UnA0d2RtbkYwTDFZUEsrN1JwNHdjVjRLVUt0dUU1QTdScDR3WTRCSkVMYUJjKy83UnA0d1hDSUdVSzdHcW5BN1JwNHdiRzZHRUtaSjVSQTdScDR3VmVLR1VJNW03RkE3UnA0d1hVd0drTHpLc2xBN1JwNHdaQk1La0plbkRaQjdScDR3ZHphTVVJcDRYNUI3UnA0d1gwV01rSjF0WU5CN1JwNHdlZU9Na0t1ZUloQjdScDR3UnJMTWtKMmU0dEI3UnA0d1RNNlJVS1RrcEZCN1JwNHdiUDhSRUkrajQ1QjdScDR3YUNnUkVKVENvcEI3UnA0d2NSRVJFS0FoWVZCN1JwNHdkSUJRa0kxK2c1QjdScDR3Y2xSTEVLRCtKWkE3UnA0d2NjTkswS0t6NEZBQW9nZFFRRjVOVUpFSTRsQis3a2JRUVJ5UWtJR0o1RkJMaG9iUWMrRlFrSmpJWkJCV2lJZVFTbUNOVUlFTVlwQjdiK3FRYytGUWtKaklaQkJQRHFwUVNtQ05VSUVNWXBCdVllcFFRRjVOVUpFSTRsQnMyK3FRUVJ5UWtJR0o1RkJvUGdvUWE2VU5rSVhCcjlCeitaTFFiQk5QRUp5cWMxQlRpc25RYlEyUDBJWCs4RkJiQUZOUWZTdE0wTHdyTXBCc2hnNFFRRjVOVUpFSTRsQlFXRTJRYytGUWtKaklaQkJ4SVU0UVNtQ05VSUVNWXBCTWRJMlFRUnlRa0lHSjVGQjlCMmxRYlEyUDBJWCs4RkJvdVdPUWZTdE0wTHdyTXBCMlRLa1FhNlVOa0lYQnI5QnpuYVBRYkJOUEVKeXFjMUJZaHlkUWMrRlFrSmpJWkJCWFQrY1FRRjVOVUpFSTRsQmdnaWNRU21DTlVJRU1ZcEJtT09jUVFSeVFrSUdKNUZCWmV3bVFjWW5Na0kzemJCQjZCOGpRYjVnUTBKVlBiWkJpOUNrUWNZbk1rSTN6YkJCekxpbVFiNWdRMEpWUGJaQjU3cytRY1luTWtJM3piQkJvUXc4UWI1Z1EwSlZQYlpCdytpWVFjWW5Na0kzemJCQmJVS2FRYjVnUTBKVlBiWkJpaHQ0UWRKbFBVTGgvODFCaWh0NFFSTEdORUpnQTh0QmlodDRRYytGUWtKaklaQkJpaHQ0UVFGNU5VSkVJNGxCaWh0NFFTbUNOVUlFTVlwQmlodDRRUVJ5UWtJR0o1RkJpaHQ0UWNZbk1rSTN6YkJCaWh0NFFiNWdRMEpWUGJaQnpPK0JRTFY1azhHTm1CcEFaQ09nUU9DNmxzRVlYR0pBQ1pHb1FPQzZsc0VZWEdKQXFybDJRTFY1azhHTm1CcEFaQ09nUUVFZG1zSGlGcHRBQ1pHb1FFRWRtc0hpRnB0QVpDT2dRRTVZbDhFRzY3TkFDWkdvUUU1WWw4RUc2N05BWkNPZ1FEMjJsOEhZUk9KQUNaR29RRDIybDhIWVJPSkFaQ09nUUpiWW1zSFlwTzVBQ1pHb1FKYlltc0hZcE81QUkrV0VRTFY1azhHTm1CcEEvRnVzUU9DNmxzRVlYR0pBL0Z1c1FFRWRtc0hpRnB0QS9GdXNRRTVZbDhFRzY3TkEvRnVzUUQyMmw4SFlST0pBL0Z1c1FKYlltc0hZcE81QVVCeUFQNWJZbXNIWXBPNUFVQnlBUHoyMmw4SFlST0pBQUFBQUFKYlltc0hZcE81QUFBQUFBRDIybDhIWVJPSkFVQnlBUDA1WWw4RUc2N05BQUFBQUFFNVlsOEVHNjdOQVVCeUFQMEVkbXNIaUZwdEFBQUFBQUVFZG1zSGlGcHRBVUJ5QVArQzZsc0VZWEdKQUFBQUFBT0M2bHNFWVhHSkFzbjA3UDdWNWs4R05tQnBBQUFBQUFMVjVrOEdObUJwQUkrV0VRR2prazhHL2VocEEvRnVzUUk4bGw4RkxQbUpBSStXRVFMaWtsOEYzYmhsQS9GdXNRT0RsbXNFRU1tRkEvRnVzUVBTSG1zSDdCNXRBL0Z1c1FENUluc0hZZ1pwQS9GdXNRQUhEbDhFZjNMTkEvRnVzUUV1RG04SDdWYk5BL0Z1c1FQQWdtTUh4TmVKQS9GdXNRRC9obThIT3IrRkEvRnVzUUVkRG04SHhsZTVBL0Z1c1FKVURuOEhORCs1QUNaR29RRWREbThIeGxlNUFDWkdvUUpVRG44SE5EKzVBWkNPZ1FFZERtOEh4bGU1QVpDT2dRSlVEbjhITkQrNUFVQnlBUDBkRG04SHhsZTVBVUJ5QVA1VURuOEhORCs1QUFBQUFBRWREbThIeGxlNUFBQUFBQUpVRG44SE5EKzVBek8rQlFHamtrOEcvZWhwQXpPK0JRTGlrbDhGM2JobEFxcmwyUUdqa2s4Ry9laHBBcXJsMlFMaWtsOEYzYmhsQXNuMDdQMmprazhHL2VocEFzbjA3UDdpa2w4RjNiaGxBQUFBQUFHamtrOEcvZWhwQUFBQUFBTGlrbDhGM2JobEF1dW5jUVo4SGw4SDdlZUZBUnpMUFFSZEFtc0VDdE81QVpPSGNRYmsxbXNFaXRlNUFSekxQUVN3UWw4RmtjdUZBLytUY1FUKzFsc0grWGJSQVJ6TFBRY0MrbHNGRFlyUkFVUGpjUVF3MG1jSFg4cHBBUnpMUFFWYzZtY0g2K0pwQVM3WFNRTUMrbHNGRFlyUkFTN1ZTUVZjNm1jSDYrSnBBUzdYU1FFSnltY0hKU3BsQVM3VlNRY0MrbHNGRFlyUkE2SDZUUVZjNm1jSDYrSnBBNkg2VFFjQytsc0ZEWXJSQVM3WFNRQ3dRbDhGa2N1RkFTN1ZTUVN3UWw4RmtjdUZBNkg2VFFTd1FsOEZrY3VGQVM3WFNRQmRBbXNFQ3RPNUFTN1ZTUVJkQW1zRUN0TzVBNkg2VFFSZEFtc0VDdE81QVZwL0FRUmRBbXNFQ3RPNUFWcC9BUVN3UWw4RmtjdUZBVnAvQVFjQytsc0ZEWXJSQVZwL0FRVmM2bWNINitKcEFTN1ZTUWNxcW1zRWJwZTVBUzdYU1FNcXFtc0VicGU1QVM3VlNRUmRybnNIM0h1NUFTN1hTUUJkcm5zSDNIdTVBUzdYU1FPQjZsOEY4WStGQVM3WFNRQzg3bThGWTNlQkFTN1hTUUhRcGw4RmNVN1JBUzdYU1FNSHBtc0U1emJOQVM3WFNRUFhjbWNIaU81bEFTN1hTUUVLZG5jRy90WmhBUzdWU1FRZWxtY0VUNnBwQVM3VlNRVlpsbmNId1k1cEE2SDZUUVFlbG1jRVQ2cHBBNkg2VFFWWmxuY0h3WTVwQVZwL0FRUWVsbWNFVDZwcEFWcC9BUVZabG5jSHdZNXBBUnpMUFFRZWxtY0VUNnBwQVJ6TFBRVlpsbmNId1k1cEFVUGpjUWI2ZW1jSHY0NXBBVVBqY1FRdGZuY0hNWFpwQS8rVGNRZklmbDhFWFQ3UkEvK1RjUVQvZ21zSDB5TE5BdXVuY1FWQnlsOEVVYStGQXV1bmNRWjB5bThIeDVPQkFaT0hjUVd5Z21zRTZwdTVBWk9IY1FiaGduc0VZSU81QVJ6TFBRY3FxbXNFYnBlNUFSekxQUVJkcm5zSDNIdTVBVnAvQVFjcXFtc0VicGU1QVZwL0FRUmRybnNIM0h1NUE2SDZUUWNxcW1zRWJwZTVBNkg2VFFSZHJuc0gzSHU1QVpDT2d3T0M2bHNFWVhHSkF6TytCd0xWNWs4R05tQnBBQ1pHb3dPQzZsc0VZWEdKQXFybDJ3TFY1azhHTm1CcEFaQ09nd0VFZG1zSGlGcHRBQ1pHb3dFRWRtc0hpRnB0QVpDT2d3RTVZbDhFRzY3TkFDWkdvd0U1WWw4RUc2N05BWkNPZ3dEMjJsOEhZUk9KQUNaR293RDIybDhIWVJPSkFaQ09nd0piWW1zSFlwTzVBQ1pHb3dKYlltc0hZcE81QUkrV0V3TFY1azhHTm1CcEEvRnVzd09DNmxzRVlYR0pBL0Z1c3dFRWRtc0hpRnB0QS9GdXN3RTVZbDhFRzY3TkEvRnVzd0QyMmw4SFlST0pBL0Z1c3dKYlltc0hZcE81QVVCeUF2NWJZbXNIWXBPNUFVQnlBdnoyMmw4SFlST0pBVUJ5QXYwNVlsOEVHNjdOQVVCeUF2MEVkbXNIaUZwdEFVQnlBditDNmxzRVlYR0pBc24wN3Y3VjVrOEdObUJwQUkrV0V3R2prazhHL2VocEEvRnVzd0k4bGw4RkxQbUpBSStXRXdMaWtsOEYzYmhsQS9GdXN3T0RsbXNFRU1tRkEvRnVzd1BTSG1zSDdCNXRBL0Z1c3dENUluc0hZZ1pwQS9GdXN3QUhEbDhFZjNMTkEvRnVzd0V1RG04SDdWYk5BL0Z1c3dQQWdtTUh4TmVKQS9GdXN3RC9obThIT3IrRkEvRnVzd0VkRG04SHhsZTVBL0Z1c3dKVURuOEhORCs1QUNaR293RWREbThIeGxlNUFDWkdvd0pVRG44SE5EKzVBWkNPZ3dFZERtOEh4bGU1QVpDT2d3SlVEbjhITkQrNUFVQnlBdjBkRG04SHhsZTVBVUJ5QXY1VURuOEhORCs1QXpPK0J3R2prazhHL2VocEF6TytCd0xpa2w4RjNiaGxBcXJsMndHamtrOEcvZWhwQXFybDJ3TGlrbDhGM2JobEFzbjA3djJqa2s4Ry9laHBBc24wN3Y3aWtsOEYzYmhsQVJ6TFB3UmRBbXNFQ3RPNUF1dW5jd1o4SGw4SDdlZUZBWk9IY3diazFtc0VpdGU1QVJ6TFB3U3dRbDhGa2N1RkEvK1Rjd1QrMWxzSCtYYlJBUnpMUHdjQytsc0ZEWXJSQVVQamN3UXcwbWNIWDhwcEFSekxQd1ZjNm1jSDYrSnBBUzdWU3dWYzZtY0g2K0pwQVM3WFN3TUMrbHNGRFlyUkFTN1hTd0VKeW1jSEpTcGxBUzdWU3djQytsc0ZEWXJSQTZINlR3VmM2bWNINitKcEE2SDZUd2NDK2xzRkRZclJBUzdYU3dDd1FsOEZrY3VGQVM3VlN3U3dRbDhGa2N1RkE2SDZUd1N3UWw4RmtjdUZBUzdYU3dCZEFtc0VDdE81QVM3VlN3UmRBbXNFQ3RPNUE2SDZUd1JkQW1zRUN0TzVBVnAvQXdSZEFtc0VDdE81QVZwL0F3U3dRbDhGa2N1RkFWcC9Bd2NDK2xzRkRZclJBVnAvQXdWYzZtY0g2K0pwQVM3VlN3Y3FxbXNFYnBlNUFTN1hTd01xcW1zRWJwZTVBUzdWU3dSZHJuc0gzSHU1QVM3WFN3QmRybnNIM0h1NUFTN1hTd09CNmw4RjhZK0ZBUzdYU3dDODdtOEZZM2VCQVM3WFN3SFFwbDhGY1U3UkFTN1hTd01IcG1zRTV6Yk5BUzdYU3dQWGNtY0hpTzVsQVM3WFN3RUtkbmNHL3RaaEFTN1ZTd1FlbG1jRVQ2cHBBUzdWU3dWWmxuY0h3WTVwQTZINlR3UWVsbWNFVDZwcEE2SDZUd1ZabG5jSHdZNXBBVnAvQXdRZWxtY0VUNnBwQVZwL0F3VlpsbmNId1k1cEFSekxQd1FlbG1jRVQ2cHBBUnpMUHdWWmxuY0h3WTVwQVVQamN3YjZlbWNIdjQ1cEFVUGpjd1F0Zm5jSE1YWnBBLytUY3dmSWZsOEVYVDdSQS8rVGN3VC9nbXNIMHlMTkF1dW5jd1ZCeWw4RVVhK0ZBdXVuY3daMHltOEh4NU9CQVpPSGN3V3lnbXNFNnB1NUFaT0hjd2JoZ25zRVlJTzVBUnpMUHdjcXFtc0VicGU1QVJ6TFB3UmRybnNIM0h1NUFWcC9Bd2NxcW1zRWJwZTVBVnAvQXdSZHJuc0gzSHU1QTZINlR3Y3FxbXNFYnBlNUE2SDZUd1Jkcm5zSDNIdTVBRkx4aVFTS3RnOEhjZVZSQnA4UnhRZXArZjhHM3dVdEJuZ0ZrUVhSYmY4RXZia3RCcDhSeFFZSEFnOEVhMVZSQm9HYUFRU0t0ZzhIY2VWUkJzb2QvUVhSYmY4RXZia3RCSVk2TlFkcjdnc0Y0TmxGQlh5YUxRWm9vZnNFc20waEJPQzJVUWQyZmdjRzF6a3BCVzJtTlFkczZmY0VYYTBaQlcybU5RVmRnZE1IMmpqRkJPQzJVUWVka2Q4Rng0QzVCZnBLTFFXVUViOEdiN2lSQmc4YVJRZDFsY01HZVpCNUJRdHlHUVRtU2E4RWQwQnhCdHFDS1FhTXJhOEdsRXhKQjAzSi9RVWdjYXNFY1h4bEJvcTJBUVVzaWFjRlJSdzFCcDhSeFFlNDhhY0VXaGcxQnA4UnhRYXN6YXNFMGxobEJmeFprUVVnY2FzRWNYeGxCQ1M1aVFVc2lhY0ZSUncxQjVrZE9RYU1yYThHbEV4SkJ6dEJWUVRtU2E4RWQwQnhCVFB3L1FkMWxjTUdlWkI1QlZtUk1RV1VFYjhHYjdpUkI0UzQ3UWVka2Q4Rng0QzVCbWJaSVFWZGdkTUgyampGQjRTNDdRZDJmZ2NHMXprcEJtYlpJUWRzNmZjRVhhMFpCa0R4TlFab29mc0VzbTBoQkVXMUlRZHI3Z3NGNE5sRkJjYzFlUWJscmlzRjNwUWhCMVNKeFFWektqTUdHQlNWQmNjMWVRYk8wak1Hb2xDUkIxU0p4UVdLQmlzRlJGZ2xCSGJ5QlFibHJpc0YzcFFoQkhieUJRYk8wak1Hb2xDUkIwOGFSUWNaWGlzR0VQUWhCMDhhUlFXbnVpOEZzaXlCQkJOcVpRVHMzaXNIOWt3ZEJCTnFaUVM5cGlzRlJueGhCQk5xWlFjUW9pY0dsRWdKQk9DMlVRWHQyaU1IS0NTUkJnOGFSUVR6bWg4RWVFQkZCZzhhUlFmVDJoTUgzalJOQjZEU09RYTMvZzhFbTdPZEE2RFNPUWNyRWdjR3lxZlJBdUJLQ1FUVmxnY0Zab2VCQXVCS0NRYkJVZnNIbVh1MUExU0p4UWNtWWZzRk12dTFBMVNKeFFVZUhnY0hDQU9GQU95QmVRVFZsZ2NGWm9lQkFPeUJlUWJCVWZzSG1YdTFBM2R0RlFjckVnY0d5cWZSQTNkdEZRYTMvZzhFbTdPZEFUUHcvUWZUMmhNSDNqUk5CVFB3L1FUem1oOEVlRUJGQjRTNDdRWHQyaU1IS0NTUkJwSkV1UWNRb2ljR2xFZ0pCcEpFdVFTOXBpc0ZSbnhoQnBKRXVRVHMzaXNIOWt3ZEJBcmcrUVdudWk4RnNpeUJCQXJnK1FjWlhpc0dFUFFoQjFTSnhRY1A1aXNFL2FpWkJjYzFlUVJma2lzRmYrU1ZCSGJ5QlFSZmtpc0ZmK1NWQjA4YVJRY3NkaXNFajhDRkJCTnFaUVphWWlNRUpCQnBCT0MyVVFkZitoc0c0U0NWQjN3T3lRU2JkY3NFcXF6WkJudm11UWRXTWdzRTNUQlpCbnZtdVFaOEJhc0duekNGQjN3T3lRWm42aHNHMUtpdEJnOGFSUVZKL2c4SG16QlJCNkRTT1FWbW5nTUY1Q1B0QXVCS0NRY3daZk1HcXZmTkExU0p4UWU1ZGZNRVRIZlJBT3lCZVFjd1pmTUdxdmZOQTNkdEZRVm1uZ01GNUNQdEFUUHcvUVZKL2c4SG16QlJCZUZnTFFaOEJhc0duekNGQjlrTUZRWm42aHNHM0tpdEI5a01GUVNiZGNzRXFxelpCZWxnTFFkV01nc0U1VEJaQjRTNDdRZGYraHNHNFNDVkJwSkV1UVphWWlNRUpCQnBCQXJnK1Fjc2Rpc0VqOENGQjFTSnhRZnRSak1HYXNRZEJjYzFlUVZJOGpNRy9RQWRCMVNKeFFhVk56Y0c3WEx4QWNjMWVRZnM4emNGVGRMdEFIYnlCUVZJOGpNRy9RQWRCSGJ5QlFmczh6Y0ZUZEx0QTA4YVJRV0Fvak1ITjJBWkIwOGFSUWFNdHpjRkVucnBBQk5xWlFka0hqTUZGTHdaQkJOcVpRWm9VemNFcVFibEFCTnFaUVYzNWlzSHRyUUJCQk5xWlFaUkV6TUhrNnExQVgreVdRYmNQaDhGcWxkaEFYK3lXUWFEL3lNR0dVVXhBNkRTT1FTQWRoY0ZlamVGQTZEU09RZnEveHNFemxBMUF1QktDUWFxQ2dzR05RdHBBdUJLQ1FibmZ4Y0VVUnVvLzFTSnhRYnFrZ3NIem9kcEExU0p4UVMzcnhjR294ZXcvT3lCZVFhcUNnc0dOUXRwQU95QmVRYm5meGNFVVJ1by8zZHRGUVNBZGhjRmVqZUZBM2R0RlFmcS94c0V6bEExQTcydzBRYmNQaDhGcWxkaEE3MncwUWFEL3lNR0dVVXhBcEpFdVFWMzVpc0h0clFCQnBKRXVRWlJFek1IazZxMUFwSkV1UWRrSGpNRkZMd1pCcEpFdVFab1V6Y0VxUWJsQUFyZytRV0Fvak1ITjJBWkJBcmcrUWFNdHpjRkVucnBBNE1xWlFSV01kc0dYNFN4QktXU1hRUXVOYjhIRVpSeEJLV1NYUWVvU2c4RU56aEpCNE1xWlFXK1Noc0hlU1NOQmtQTXZRUldNZHNHWDRTeEIvY0EwUVF1TmI4SEVaUnhCa1BNdlFXK1Noc0hlU1NOQi9jQTBRZW9TZzhFTnpoSkJ0d2VZUWRMb2RjRzUzeDVCVkNlWlFkTXVlY0V4bGlaQnR3ZVlRWW5CZ2NGMEdSbEJWQ2VaUVkxa2c4SHB6eUJCNW5relFkTG9kY0c1M3g1QnFEb3hRZE11ZWNFeGxpWkJxRG94UVkxa2c4SHB6eUJCNW5relFZbkJnY0YwR1JsQlU5aXNRZWx6ZDhFeXVTNUJzcmlyUWR3dGRNRzdBaWRCc3JpclFSUGtnTUYwUENGQlU5aXNRUmFIZ3NIczhpaEJGWnNQUWVsemQ4RXl1UzVCVTlvUlFkd3RkTUc3QWlkQkZac1BRUmFIZ3NIcDhpaEJWZG9SUVJQa2dNRjBQQ0ZCenY2cVFTenNjOEc1S1RsQmkvU25RYVVRYThFM1N5UkJpL1NuUVZVVWc4SEl5aGhCenY2cVFSeUNoOEZJcVMxQkhFNFRRU3pzYzhHNUtUbEJuV0laUWFVUWE4RTNTeVJCSEU0VFFSeUNoOEZHcVMxQm5XSVpRVlVVZzhISXloaEJvczJ0UWNWL2M4Rk1LamhCWWNPcVFUdWthc0hLU3lOQlljT3FRU0xlZ3NGY3l4ZEJvczJ0UWVkTGg4SFpxU3hCYzdBTlFjVi9jOEZNS2poQjlzUVRRVHVrYXNIS1N5TkJjN0FOUWVkTGg4SFpxU3hCOXNRVFFTTGVnc0ZjeXhkQkNaR29RTGZCdWNIUnp6ZEJLMVFkUHl4T3E4RkRra1pCQ1pHb1FDeE9xOEZEa2taQksxUWRQN2ZCdWNIUnp6ZEJDWkdvUVA2UXVzSGw4alZCSzFRZFAvNlF1c0hsOGpWQksxUWRQL3l5a3NGMkZSMUJDWkdvUVBJUG9zSDRwQTFCQ1pHb1FQeXlrc0YyRlIxQksxUWRQL0lQb3NINHBBMUJLMVFkUDFNaG84SHFMd3RCQ1pHb1FGTWhvOEhxTHd0QkNaR29RSXdMczhHNU9TaEJLMVFkUDR3THM4RzVPU2hCSzFRZFA0YjNuc0Z6d1Q1QksxUWRQMXJMc2NGRHBDbEJDWkdvUUliM25zRnp3VDVCQ1pHb1FGckxzY0ZEcENsQkNaR29RUEVwcThGbTJCbEJLMVFkUC9FcHE4Rm0yQmxCSzFRZFA4S3lsc0Z1MERCQksxUWRQNVBLcWNFNVpodEJDWkdvUU1LeWxzRnUwREJCQ1pHb1FKUEtxY0U1Wmh0QksxUWR2eXhPcThGRGtrWkJDWkdvd0xmQnVjSFJ6emRCQ1pHb3dDeE9xOEZEa2taQksxUWR2N2ZCdWNIUnp6ZEJDWkdvd1A2UXVzSGw4alZCSzFRZHYvNlF1c0hsOGpWQkNaR293UElQb3NINHBBMUJLMVFkdi95eWtzRjJGUjFCQ1pHb3dQeXlrc0YyRlIxQksxUWR2L0lQb3NINHBBMUJLMVFkdjFNaG84SHFMd3RCQ1pHb3dGTWhvOEhxTHd0QkNaR293SXdMczhHNU9TaEJLMVFkdjR3THM4RzVPU2hCSzFRZHY0YjNuc0Z6d1Q1QksxUWR2MXJMc2NGRHBDbEJDWkdvd0liM25zRnp3VDVCQ1pHb3dGckxzY0ZEcENsQkNaR293UEVwcThGbTJCbEJLMVFkdi9FcHE4Rm0yQmxCSzFRZHY4S3lsc0Z1MERCQksxUWR2NVBLcWNFNVpodEJDWkdvd01LeWxzRnUwREJCQ1pHb3dKUEtxY0U1Wmh0QkUvWGVRUzZXdU1IL0ZUbEJBVE8rUWRGWXE4RUY5RWhCRS9YZVFkRllxOEVGOUVoQkFUTytRUzZXdU1IL0ZUbEJFL1hlUVhWbHVjRVNPVGRCQVRPK1FYVmx1Y0VTT1RkQkFUTytRVGtWa3NFNjd4dEJFL1hlUVdqa29NRW42dzVCRS9YZVFUa1Zrc0U2N3h0QkFUTytRV2prb01FbjZ3NUJBVE8rUWN2MW9jRVpkZ3hCRS9YZVFjdjFvY0VaZGd4QkUvWGVRUVBnc2NIcGZ5bEJBVE8rUVFQZ3NjSHBmeWxCQVRPK1FRSE1uY0dmQjBCQkFUTytRY3lmc01GeTZpcEJFL1hlUVFITW5jR2ZCMEJCRS9YZVFjeWZzTUZ5NmlwQkUvWGVRV2YrcWNHVkhodEJBVE8rUVdmK3FjR1ZIaHRCQVRPK1FUZUhsY0diRmpKQkFUTytRUTZmcU1GbHJCeEJFL1hlUVRlSGxjR2JGakpCRS9YZVFRNmZxTUZsckJ4QkFUTyt3ZEZZcThFRjlFaEJFL1hld1M2V3VNSC9GVGxCRS9YZXdkRllxOEVGOUVoQkFUTyt3UzZXdU1IL0ZUbEJFL1hld1hWbHVjRVNPVGRCQVRPK3dYVmx1Y0VTT1RkQkUvWGV3V2prb01FbjZ3NUJBVE8rd1RrVmtzRTY3eHRCRS9YZXdUa1Zrc0U2N3h0QkFUTyt3V2prb01FbjZ3NUJBVE8rd2N2MW9jRVpkZ3hCRS9YZXdjdjFvY0VaZGd4QkUvWGV3UVBnc2NIcGZ5bEJBVE8rd1FQZ3NjSHBmeWxCQVRPK3dRSE1uY0dmQjBCQkFUTyt3Y3lmc01GeTZpcEJFL1hld1FITW5jR2ZCMEJCRS9YZXdjeWZzTUZ5NmlwQkUvWGV3V2YrcWNHVkhodEJBVE8rd1dmK3FjR1ZIaHRCQVRPK3dUZUhsY0diRmpKQkFUTyt3UTZmcU1GbHJCeEJFL1hld1RlSGxjR2JGakpCRS9YZXdRNmZxTUZsckJ4QmRrZE9RYXJJcThHZDcyMUJ1OGMxUVUvZXhjRlZHbTFCZGtkT1FkVEp4OEhwK210QnU4YzFRZUx4cWNFZnMzTkJYYm9jUVdESXBNSExiRzVCWGJvY1FZbkp3TUVWZUd4QjJOVUpRVDZ1bmNGd2hsOUIyTlVKUVdxdnVjRzZrVjFCRnlvQ1FhcUtsc0VlL2twQkZ5b0NRZE9Mc3NGcUNVbEJUTVVIUVZCSGtjRkFWRFpCVE1VSFFYZElyY0dNWHpSQjVpWVpRVHhOajhGQ0VpZEI1aVlaUVdOT3E4R09IU1ZCb3FZeFFRTWtrY0hDVGlGQm9xWXhRUzRscmNFTldoOUIvck5LUWJCT3NzRmhvQ1JCL3JOS1FZUk5sc0VXbFNaQmhwaGRRYzlvdWNHOGhqTkJocGhkUWFkbm5jRndlelZCUjBSbFFXYU13TUVRRDBoQlIwUmxRVDJMcE1IRUEwcEJGS2xmUWIzUHhjSHN1RnhCRktsZlFaUE9xY0dmclY1QmRrZE9RWlVJcXNIcERtNUJ1OGMxUWRFeHFNRnIwbk5CWGJvY1FVNElvOEVXakc1QjJOVUpRUzN1bThHNnBWOUJGeW9DUVpmS2xNRnFIVXRCVE1VSFFUNkhqOEdNY3paQjVpWVpRU3VOamNHT01TZEJvcVl4UWZKamo4RU5iaUZCL3JOS1FYT05sTUZodENaQmhwaGRRWk9ubThHOG1qVkJSMFJsUVN2TG9zRVFJMHBCRktsZlFZTU9xTUhxekY1QmlHdzFRZnNOcHNHNnRteEJHN0pKUVltVHA4SE04V2RCeExFZ1FZSElvY0ZmV1doQnhBOFJRUlRvbThFdEJWeEIycllLUWRmL2xjSFFCMHRCYTFvUFFmbWtrY0d2N2psQlE3d2RRVFlDa01HcVRpMUIyQUV5UWNPSGtjRy9pU2hCbDd4R1FVRE5sY0VYNXl4Qm0xNVdRYTJ0bThGSk96bEJoTGRjUWVxVm9jR3BPRXBCOGhOWVFjandwY0hHVVZ0QmlHdzFRUkRPcDhGc2wyeEJHN0pKUVo1VHFjR0EwbWRCeExFZ1FaT0lvOEVVT21oQnhBOFJRU2VvbmNIaTVWdEIycllLUWVpL2w4R0U2RXBCYTFvUFFRbGxrOEZrenpsQlE3d2RRVWpDa2NGZkx5MUIyQUV5UWRkSGs4RjBhaWhCbDd4R1FWT05sOEhNeHl4Qm0xNVdRYjF0bmNIK0d6bEJoTGRjUWY5Vm84RmVHVXBCOGhOWVFkbXdwOEY4TWx0QlZoRTFRUnVydXNFeEJHUkJ2UnhGUVhIZnU4SGZQV0JCTEtra1FhTkp0OEhiajJCQnRFa1lRZkdpc3NIUHpWWkJua01UUVFqMnJjRmxXMGxCak84V1FhU0Rxc0VDMHp0Qm4xRWlRVFE0cWNIeTFERkJDbDB5UVlsc3FzR2hEaTVCTWNWQ1FmN05yY0g0Z2pGQnJDUlBRYkowc3NFRFJUdEJ2eXBVUVpvaHQ4Rnd0MGhCMDM1UVFRQ1V1c0hRUDFaQlZoRTFRUzVydk1IbTVHTkJ2UnhGUVlLZnZjR1VIbUJCTEtra1FiWUp1Y0dRY0dCQnRFa1lRUVJqdE1HQ3JsWkJua01UUVJ1MnI4RVpQRWxCak84V1FiaERyTUcyc3p0Qm4xRWlRVVQ0cXNHbnRURkJDbDB5UVpvc3JNRlc3eTFCTWNWQ1FSR09yOEdzWXpGQnJDUlBRY1kwdE1HNUpUdEJ2eXBVUWJEaHVNRWxtRWhCMDM1UVFSTlV2TUdFSUZaQnV2U0pRVS9leGNGVkdtMUJ1R2w3UWFySXE4R2Q3MjFCdUdsN1FkVEp4OEhwK210QnV2U0pRZUx4cWNFZnMzTkJhM3VXUVdESXBNSExiRzVCYTN1V1FZbkp3TUVWZUd4QnJPMmZRVDZ1bmNGd2hsOUJyTzJmUVdxdnVjRzZrVjFCamNPalFhcUtsc0VlL2twQmpjT2pRZE9Mc3NGcUNVbEI4dldnUVZCSGtjRkFWRFpCOHZXZ1FYZElyY0dNWHpSQkpVV1lRVHhOajhGQ0VpZEJKVVdZUVdOT3E4R09IU1ZCUmdXTVFRTWtrY0hDVGlGQlJnV01RUzRscmNFTldoOUJNUDErUWJCT3NzRmhvQ1JCTVAxK1FZUk5sc0VXbFNaQnFCaHNRYzlvdWNHOGhqTkJxQmhzUWFkbm5jRndlelZCNjJ4a1FXYU13TUVRRDBoQjYyeGtRVDJMcE1IRUEwcEJIUWhxUWIzUHhjSHN1RnhCSFFocVFaUE9xY0dmclY1QnVHbDdRWlVJcXNIcERtNUJ1dlNKUWRFeHFNRnIwbk5CYTN1V1FVNElvOEVXakc1QnJPMmZRUzN1bThHNnBWOUJqY09qUVpmS2xNRnFIVXRCOHZXZ1FUNkhqOEdNY3paQkpVV1lRU3VOamNHT01TZEJSZ1dNUWZKamo4RU5iaUZCTVAxK1FYT05sTUZodENaQnFCaHNRWk9ubThHOG1qVkI2MnhrUVN2TG9zRVFJMHBCSFFocVFZTU9xTUhxekY1QlZTS0tRZnNOcHNHNnRteEJGUDkvUVltVHA4SE04V2RCdEgrVVFZSElvY0ZmV1doQnRsQ2NRUlRvbThFdEJWeEJMSDJmUWRmL2xjSFFCMHRCWWl1ZFFmbWtrY0d2N2psQmQvcVZRVFlDa01HcVRpMUJyZGVMUWNPSGtjRy9pU2hCUzNxQlFVRE5sY0VYNXl4QmxsSnpRYTJ0bThGSk96bEJxL2xzUWVxVm9jR3BPRXBCUHAxeFFjandwY0hHVVZ0QlZTS0tRUkRPcDhGc2wyeEJGUDkvUVo1VHFjR0EwbWRCdEgrVVFaT0lvOEVVT21oQnRsQ2NRU2VvbmNIaTVWdEJMSDJmUWVpL2w4R0U2RXBCWWl1ZFFRbGxrOEZrenpsQmQvcVZRVWpDa2NGZkx5MUJyZGVMUWRkSGs4RjBhaWhCUzNxQlFWT05sOEhNeHl4QmxsSnpRYjF0bmNIK0d6bEJxL2xzUWY5Vm84RmVHVXBCUHAxeFFkbXdwOEY4TWx0QjdrK0tRUnVydXNFeEJHUkJPa3FDUVhIZnU4SGZQV0JCQTRTU1FhTkp0OEhiajJCQnY3T1lRZkdpc3NIUHpWWkJ5VGFiUVFqMnJjRmxXMGxCMG1DWlFhU0Rxc0VDMHp0QnlLK1RRVFE0cWNIeTFERkJGS3FMUVlsc3FzR2hEaTVCQUhhRFFmN05yY0g0Z2pGQmhZeDZRYkowc3NFRFJUdEJjSVoxUVpvaHQ4Rnd0MGhCV3pKNVFRQ1V1c0hRUDFaQjdrK0tRUzVydk1IbTVHTkJPa3FDUVlLZnZjR1VIbUJCQTRTU1FiWUp1Y0dRY0dCQnY3T1lRUVJqdE1HQ3JsWkJ5VGFiUVJ1MnI4RVpQRWxCMG1DWlFiaERyTUcyc3p0QnlLK1RRVVQ0cXNHbnRURkJGS3FMUVpvc3JNRlc3eTFCQUhhRFFSR09yOEdzWXpGQmhZeDZRY1kwdE1HNUpUdEJjSVoxUWJEaHVNRWxtRWhCV3pKNVFSTlV2TUdFSUZaQlM3dDhRYlVKZ2NGZDNveEJma3FUUVU1MmdzR3RXNGxCcjhLUVFYcldmTUZwd1laQlNKdCtRZFpPaGNFc0FKQkJTOXQ2UWV1NmdjRk9wb2RCM0RxT1FRV3Rmc0hlRUlKQlM5dDZRVHF4aHNFTGtJVkIzRHFPUWRSTWhNRSs5WDlCcjhLUVFkOVhpTUhtbElKQlM3dDhRVm4yaXNIY3NZaEJma3FUUVo1c2g4RnVSWWRCU0p0K1FTSkZpc0hzNlkxQjkzS2pRU21CZXNFOVpYcEJlYUdmUWFnL2M4SG5JSGRCL3MrYlFjcnFkY0VVc0c5Qi9zK2JRVy9YZjhHVWcydEJlYUdmUVhpTWc4SGx4MjVCOTNLalFlYzJnc0c5T0haQkp0U3RRUjJkYk1IeCtGbEI0aTZwUVFkM1pzRXBTbGxCbklta1FaSTlhc0hYYmxSQm5JbWtRVGNxZE1GWVFsQkI0aTZwUVVwUWVzRWo4VkJCSnRTdFFiK0pkc0Z2ekZWQjhFT3NRVlFIV01IZGx6ZEJpeTJ4UVZudFhNR1hXelZCVjFxblFmQU5YY0dicHpWQlYxcW5RWXo2WnNFY2V6RkI4RU9zUVp2Z2E4SFlQaTlCaXkyeFFmN1pac0VYTHpGQmY0R29RVWV1U2NGL0doWkJ2aGV0UVRkV1RjSEc5eEJCUCt1alFmcnlUOEc2RUJkQlArdWpRWi9mV2NFODVCSkJmNEdvUVk2SFhjR0F3UTFCdmhldFFkOUNWOEZIeXd4Qm5sdWVRZm9tUGNGVnVQRkE0QkNpUVNXNVA4RXdZdUpBVjZhYVFXNkJSTUY4dGZoQVY2YWFRUk51VHNGeVhQQkFubHVlUVQ0QVVjRlRCdUZBNEJDaVFjcWxTY0VzQ2RwQXBndVBRUy8wTThHZXg4WkFjRzJSUVhHNk5jRjV1Yk5BMnFtTVFaTWFQTUc5Zk5GQTJxbU1RVFVIUnNHK0k4bEFwZ3VQUVhiTlI4R1VGYlpBY0cyUlFSYW5QOEYwWUt0QS9ZVitRUnJzTDhHQjliTkF0OHFBUWFaNk1jRlI0NTlBalhaN1FTOUtPTUdtcnI5QWpYWjdRZEUyUXNHaVZiZEEvWVYrUVYzRlE4RjRRNk5BdDhxQVFVVm5POEZPaXBkQU9qT1NRUWhwYThFOElCMUJuTWlQUVdPYldjSEc2QTVCT2pPU1FXeDhZY0c4VENGQm5NaVBRUVdJWThGRXZBcEJZVDZFUVVQY1VzRXdrZmRBWVQ2RVFldklYTUV3T085QXFLMTVRVFJCVWNIWGVmVkFxSzE1UWRNdFc4SFVJTzFBTjZ4blFldGhoY0c3TEpCQk42eG5RVnNiZ2NHTkI0MUJONnhuUVJ6TGdjRWd6SWRCTjZ4blFYREJoc0hmdFlWQk42eG5RZndIaThFTTI0aEJONnhuUVR4WWlzRjVGbzVCQ295V1FXZ2lkTUVkTUZCQkwrS1BRV21QZ01FVUtWTkJDb3lXUVFZUGZzR2RBMHhCTCtLUFFTMHlkOEdXVlZkQk9jMTJRUktPZ2NGU2ZsbEJPYzEyUVlBdmVjSFRxbDFCTjZ4blFlR2pnY0VpNUZsQk42eG5RUjFiZWNHa0VGNUJBVldmUVVZb2RNSGVQVkJCQVZXZlFlcnBac0ZJVkRGQkFWV2ZRVWo5WE1ITWdEVkJBVldmUWFvN2FzRmdhbFJCZGNNb1FVNTJnc0d0VzRsQkpKMVNRYlVKZ2NGZDNveEJGZE10UVhyV2ZNRnB3WVpCSkwxUVFkWk9oY0VzQUpCQkpuMVVRZXU2Z2NGT3BvZEJ0T0l5UVFXdGZzSGVFSUpCSm4xVVFUcXhoc0VMa0lWQnRPSXlRZFJNaE1FKzlYOUJGZE10UWQ5WGlNSG1sSUpCSkoxU1FWbjJpc0hjc1loQmRjTW9RWjVzaDhGdVJZZEJKTDFRUVNKRmlzSHM2WTFCZ1hJSVFTbUJlc0U5WlhwQmZoVVFRYWcvYzhIbklIZEJkTGdYUWNycWRjRVVzRzlCZExnWFFXL1hmOEdVZzJ0QmZoVVFRWGlNZzhIbHgyNUJnWElJUWVjMmdzRzlPSFpCUm1EblFCMmRiTUh4K0ZsQlYvWDVRQWQzWnNFcFNsbEJOa1VHUVpJOWFzSFhibFJCTmtVR1FUY3FkTUZZUWxCQlYvWDVRRXBRZXNFajhWQkJSbURuUUwrSmRzRnZ6RlZCRXFIdFFGUUhXTUhkbHpkQnNQclpRRm50WE1HWFd6VkJ3YU1BUWZBTlhjR2JwelZCd2FNQVFZejZac0VjZXpGQkVxSHRRSnZnYThIWVBpOUJzUHJaUVA3WlpzRVhMekZCNTZyOFFFZXVTY0YvR2haQjRWSHFRRGRXVGNIRzl4QkI5b0VIUWZyeVQ4RzZFQmRCOW9FSFFaL2ZXY0U4NUJKQjU2cjhRSTZIWGNHQXdRMUI0VkhxUU45Q1Y4Rkh5d3hCTktFU1Fmb21QY0ZWdVBGQXF6WUxRU1c1UDhFd1l1SkF3UXNhUVc2QlJNRjh0ZmhBd1FzYVFSTnVUc0Z5WFBCQU5LRVNRVDRBVWNGVEJ1RkFxellMUWNxbFNjRXNDZHBBSlVFeFFTLzBNOEdleDhaQWtuMHNRWEc2TmNGNXViTkF2UVEyUVpNYVBNRzlmTkZBSlVFeFFYYk5SOEdVRmJaQWtuMHNRUmFuUDhGMFlLdEFiOUpRUVJyc0w4R0I5Yk5BL2NKTlFhWjZNY0ZSNDU5QTR1RlRRUzlLT01HbXJyOUF2UVEyUVRVSFJzRytJOGxBNHVGVFFkRTJRc0dpVmJkQWI5SlFRVjNGUThGNFE2TkEvY0pOUVVWbk84Rk9pcGRBTzhjdlFXT2JXY0hHNkE1QkFQSXFRUWhwYThFOElCMUJBUElxUVd4OFljRzhUQ0ZCTzhjdlFRV0lZOEZFdkFwQmpNRkpRVTFLVThHaTgveEFqTUZKUWV3MlhjR2ZtdlJBUnZ4WFFUUkJVY0hYZWZWQVJ2eFhRZE10VzhIVUlPMUFNcTRzUVdtUGdNRVVLVk5CZTFvZlFXZ2lkTUVkTUZCQmUxb2ZRUVlQZnNHZEEweEJNcTRzUVMweWQ4R1dWVmRCTll0WVFSS09nY0ZTZmxsQk5ZdFlRWUF2ZWNIVHFsMUJiYTRRUVVZb2RNSGVQVkJCYmE0UVFlcnBac0ZJVkRGQmJhNFFRVWo5WE1ITWdEVkJiYTRRUWFvN2FzRmdhbFJCQVBJcVFZWXRYc0hsc0NKQmUxb2ZRWWpUY01GTmxGRkJPOGN2UVlSTVZzSHRUQkJCak1GSlFXZjdUOEg0dS85QVJ2eFhRVTd5VGNFdlF2aEFONnhuUVMwelVjR0ozdk5BTjZ4blFWSGtUY0hkcHZaQXFLMTVRVTd5VGNFdlF2aEFZVDZFUVdxTlQ4R0VXZnBBbk1pUFFZUk1Wc0h0VEJCQk9qT1NRWVl0WHNIbHNDSkJDb3lXUVlqVGNNRk5sRkZCTCtLUFFVM2pjOEcrdVZoQk9jMTJRYVBnZGNFQUQxOUJONnhuUVRjTWRzSFBkRjlCTll0WVFhUGdkY0VBRDE5Qk1xNHNRVTNqYzhHK3VWaEJPOGN2UWVKZlRNRndlUlJCQVBJcVFlRkFWTUZuM1NaQlJ2eFhRYThGUk1HWFRRQkJqTUZKUWNrT1JzRi9DZ1JCTjZ4blFhbjNROEhpLy81QXFLMTVRYThGUk1HWFRRQkJZVDZFUWNpZ1JjRkVXUUZCbk1pUFFlSmZUTUZ3ZVJSQk9qT1NRZUZBVk1GbjNTWkJDb3lXUWVibVpzSEx3RlZCTCtLUFFhajJhY0ZBNWx4Qk9jMTJRZjd6YThGL08yTkJONnhuUVprZmJNRlBvV05CTll0WVFmN3phOEYvTzJOQk1xNHNRYWoyYWNGQTVseEJlMW9mUWVibVpzSEx3RlZCSWZjN1FUYjhVY0dzeFNsQm5sOHdRYlpvWU1HYXpFNUJkV0kvUVRWcFRNSE53aHhCZTZSSFFSMElTY0dQM3hSQnMySmFRWDJNUjhHR2FSRkJONnhuUWVpbFI4SFZwQkZCZk1GNlFYMk1SOEdHYVJGQi9ObURRUjBJU2NHUDN4UkIvZnFIUVRWcFRNSE53aHhCcDdDSlFUYjhVY0dzeFNsQmR3bU9RYlpvWU1HYXpFNUJuZHVNUVdUellNRlhFRkJCdGpOMVFaR3RZc0hpeUZWQk42eG5RWkhVWXNIcUkxWkJ1aVJhUVpHdFlzSGl5RlZCVnJzeVFXVHpZTUZYRUZCQm4yVlpRWVNKZ01IVkdGRkJadWd2UVlBNWY4RWtGMHRCTjZ4blFSaWVnTUhrZUZGQjFQSjFRWVNKZ01IVkdGRkJGRVdPUVlBNWY4RWtGMHRCSUFLU1FjeUJmY0hCRkVkQlVhbU5RWmtjYmNHK2N4MUJONStMUVRwMlpzRTY3ZzFCVmJlQlFZa05ZY0Y4MnZ0QURrOTRRWHplWDhHVHUvdEEzMXBaUVh6ZVg4R1R1L3RBcDg5T1FaQjdZY0Y0bmdCQkFSbzRRVHAyWnNFNjdnMUJ5d1UwUVprY2JjRytjeDFCU0c0b1FjeUJmY0hCRkVkQkphVm9RWGV5WDhFdmxQbEFKYVZvUWRFQlc4RncrZXBBWUVFMkFBQUFDcFBKUGdBQUFBQUFBQUFBQUFBQUFBMlR5VElOazhrK0FBQUFBQTJUeWI0Tms4a3lBQUFBQUthWm5VR1Y0Y1pBSUVHaXB3RUFRQjRBQUFFQUFnQUhBQUFBQXdBQkFBY0FCQUFDQUFVQUJ3QUVBQUFBQWdBSEFBWUFCd0FJQUFjQUJnQUpBQWNBQndBS0FBZ0FDd0FIQUFvQUJnQUlBQWNBREFBS0FBc0FCd0FNQUEwQUNnQUhBQTRBRFFBTUFBY0FEZ0FQQUEwQUJ3QVFBQThBRGdBSEFCQUFFUUFQQUFjQUVnQVJBQkFBQndBU0FCTUFFUUFIQUJRQUV3QVNBQWNBRkFBVkFCTUFCd0FXQUJjQUdBQUhBQllBR1FBWEFBY0FHZ0FYQUJzQUJ3QWFBQmdBRndBSEFCWUFCUUFaQUFjQUZnQUVBQVVBQndBY0FBRUFBd0FIQUJ3QUhRQUJBQWNBSGdBSEFBa0FCd0FlQUI4QUJ3QUhBQ0FBQ0FBSEFBY0FJQUFoQUFnQUJ3QWhBQXNBQ0FBSEFDRUFJZ0FMQUFjQUN3QWpBQXdBQndBTEFDSUFJd0FIQUF3QUpBQU9BQWNBREFBakFDUUFCd0FPQUNVQUVBQUhBQTRBSkFBbEFBY0FFQUFtQUJJQUJ3QVFBQ1VBSmdBSEFCSUFKd0FVQUFjQUVnQW1BQ2NBQndBZkFDQUFCd0FIQUI4QUtBQWdBQWNBSUFBcEFDRUFCd0FnQUNvQUtRQUhBQ0VBS3dBaUFBY0FJUUFwQUNzQUJ3QWlBQ3dBSXdBSEFDSUFLd0FzQUFjQUl3QXRBQ1FBQndBakFDd0FMUUFIQUNRQUxnQWxBQWNBSkFBdEFDNEFCd0FsQUM4QUpnQUhBQ1VBTGdBdkFBY0FKZ0F3QUNjQUJ3QW1BQzhBTUFBSEFDZ0FLZ0FnQUFjQUtBQXhBQ29BQndBeUFBQUFNd0FIQURJQUF3QUFBQWNBS2dBekFDa0FCd0FxQURJQU13QUhBRE1BQkFBMEFBY0FNd0FBQUFRQUJ3QXBBRFFBS3dBSEFDa0FNd0EwQUFjQUt3QTFBQ3dBQndBckFEUUFOUUFIQUJZQU5BQUVBQWNBRmdBMUFEUUFCd0FzQURZQUxRQUhBQ3dBTlFBMkFBY0FHQUExQUJZQUJ3QVlBRFlBTlFBSEFEWUFHZ0EzQUFjQU5nQVlBQm9BQndBdEFEY0FMZ0FIQUMwQU5nQTNBQWNBTGdBNEFDOEFCd0F1QURjQU9BQUhBRGtBR2dBYkFBY0FPUUE2QUJvQUJ3QXZBRHNBTUFBSEFDOEFPQUE3QUFjQVBBQTZBRGtBQndBOEFEMEFPZ0FIQURFQU1nQXFBQWNBTVFBK0FESUFCd0FEQUQ0QUhBQUhBQU1BTWdBK0FBY0FQd0FCQUIwQUJ3QS9BRUFBQVFBSEFFRUFHd0FYQUFjQVFRQkNBQnNBQndCREFFUUFSUUFIQUVNQVJnQkVBQWNBUndBWEFCa0FCd0JIQUVFQUZ3QUhBRWdBR1FBRkFBY0FTQUJIQUJrQUJ3QkpBRHdBT1FBSEFFa0FTZ0E4QUFjQVFnQTVBQnNBQndCQ0FFa0FPUUFIQUVzQUJRQUNBQWNBU3dCSUFBVUFCd0JBQUFJQUFRQUhBRUFBU3dBQ0FBY0FUQUFmQUI0QUJ3Qk1BRTBBSHdBSEFFMEFLQUFmQUFjQVRRQk9BQ2dBQndCT0FERUFLQUFIQUU0QVR3QXhBQWNBVHdBK0FERUFCd0JQQUZBQVBnQUhBRkFBSEFBK0FBY0FVQUJSQUJ3QUJ3QlJBQjBBSEFBSEFGRUFVZ0FkQUFjQVVnQS9BQjBBQndCU0FGTUFQd0FIQUZRQVRRQk1BQWNBVkFCVkFFMEFCd0JWQUU0QVRRQUhBRlVBVmdCT0FBY0FWZ0JQQUU0QUJ3QldBRmNBVHdBSEFGY0FVQUJQQUFjQVZ3QllBRkFBQndCWUFGRUFVQUFIQUZnQVdRQlJBQWNBV1FCU0FGRUFCd0JaQUZvQVVnQUhBRm9BVXdCU0FBY0FXZ0JiQUZNQUJ3QmNBRlVBVkFBSEFGd0FYUUJWQUFjQVhRQldBRlVBQndCZEFGNEFWZ0FIQUY0QVZ3QldBQWNBWGdCZkFGY0FCd0JmQUZnQVZ3QUhBRjhBWUFCWUFBY0FZQUJaQUZnQUJ3QmdBR0VBV1FBSEFHRUFXZ0JaQUFjQVlRQmlBRm9BQndCaUFGc0FXZ0FIQUdJQVl3QmJBQWNBWkFCZEFGd0FCd0JrQUdVQVhRQUhBR1VBWGdCZEFBY0FaUUJtQUY0QUJ3Qm1BRjhBWGdBSEFHWUFad0JmQUFjQVp3QmdBRjhBQndCbkFHZ0FZQUFIQUdnQVlRQmdBQWNBYUFCcEFHRUFCd0JwQUdJQVlRQUhBR2tBYWdCaUFBY0FhZ0JqQUdJQUJ3QnFBR3NBWXdBSEFHd0FZd0JyQUFjQWJBQnRBR01BQndCdEFGc0FZd0FIQUcwQWJnQmJBQWNBYmdCVEFGc0FCd0J1QUc4QVV3QUhBRzhBUHdCVEFBY0Fid0J3QUQ4QUJ3QndBRUFBUHdBSEFIQUFjUUJBQUFjQWNRQkxBRUFBQndCeEFISUFTd0FIQUhJQVNBQkxBQWNBY2dCekFFZ0FCd0J6QUVjQVNBQUhBSE1BZEFCSEFBY0FkQUJCQUVjQUJ3QjBBSFVBUVFBSEFIVUFRZ0JCQUFjQWRRQjJBRUlBQndCMkFFa0FRZ0FIQUhZQWR3QkpBQWNBZHdCS0FFa0FCd0IzQUhnQVNnQUhBSGtBYmdCdEFBY0FlUUI2QUc0QUJ3QjdBRzBBYkFBSEFIc0FlUUJ0QUFjQWVnQnZBRzRBQndCNkFId0Fid0FIQUgwQWN3QnlBQWNBZlFCK0FITUFCd0IvQUhJQWNRQUhBSDhBZlFCeUFBY0FnQUI0QUhjQUJ3Q0FBSUVBZUFBSEFJSUFkd0IyQUFjQWdnQ0FBSGNBQndDREFIWUFkUUFIQUlNQWdnQjJBQWNBaEFCMUFIUUFCd0NFQUlNQWRRQUhBSDRBZEFCekFBY0FmZ0NFQUhRQUJ3Q0ZBSEVBY0FBSEFJVUFmd0J4QUFjQWZBQndBRzhBQndCOEFJVUFjQUFIQUlZQWVRQjdBQWNBaGdDSEFIa0FCd0NIQUhvQWVRQUhBSWNBaUFCNkFBY0FpUUNIQUlZQUJ3Q0pBSW9BaHdBSEFJb0FpQUNIQUFjQWlnQ0xBSWdBQndDTUFJWUFld0FIQUl3QWpRQ0dBQWNBalFDSkFJWUFCd0NOQUk0QWlRQUhBSThBalFDTUFBY0Fqd0NRQUkwQUJ3Q1FBSTRBalFBSEFKQUFrUUNPQUFjQWtnQ1FBSThBQndDU0FKTUFrQUFIQUpNQWtRQ1FBQWNBa3dDVUFKRUFCd0NWQUpRQWt3QUhBSlVBbGdDVUFBY0Fsd0NUQUpJQUJ3Q1hBSlVBa3dBSEFKZ0FrZ0NQQUFjQW1BQ1hBSklBQndDWkFJOEFqQUFIQUprQW1BQ1BBQWNBbWdDTUFIc0FCd0NhQUprQWpBQUhBSnNBbkFDZEFBY0Ftd0NlQUp3QUJ3Q2RBSjhBb0FBSEFKMEFuQUNmQUFjQW9RQ2lBS01BQndDaEFLUUFvZ0FIQUtNQXBRQ21BQWNBb3dDaUFLVUFCd0NsQUtjQXBnQUhBS1VBcUFDbkFBY0FxQUNwQUtjQUJ3Q29BS29BcVFBSEFLb0Fxd0NwQUFjQXFnQ3NBS3NBQndDc0FLMEFxd0FIQUt3QXJnQ3RBQWNBcmdBVUFLMEFCd0N1QUJVQUZBQUhBSzhBc0FDeEFBY0Fyd0N5QUxBQUJ3Q3pBSzhBc1FBSEFMTUF0QUN2QUFjQW9BQ3dBTElBQndDZ0FKOEFzQUFIQUpzQXRRQ2VBQWNBbXdDMkFMVUFCd0NoQUxjQXBBQUhBS0VBdUFDM0FBY0Fvd0M1QUtFQUJ3Q2pBTG9BdVFBSEFLWUF1Z0NqQUFjQXBnQzdBTG9BQndDOEFLWUFwd0FIQUx3QXV3Q21BQWNBdlFDbkFLa0FCd0M5QUx3QXB3QUhBTDRBcVFDckFBY0F2Z0M5QUtrQUJ3Qy9BS3NBclFBSEFMOEF2Z0NyQUFjQUp3Q3RBQlFBQndBbkFMOEFyUUFIQUxrQXVBQ2hBQWNBdVFEQUFMZ0FCd0RCQUxrQXVnQUhBTUVBd2dDNUFBY0F3d0M2QUxzQUJ3RERBTUVBdWdBSEFNUUF1d0M4QUFjQXhBRERBTHNBQndERkFMd0F2UUFIQU1VQXhBQzhBQWNBeGdDOUFMNEFCd0RHQU1VQXZRQUhBTWNBdmdDL0FBY0F4d0RHQUw0QUJ3QXdBTDhBSndBSEFEQUF4d0MvQUFjQXdnREFBTGtBQndEQ0FNZ0F3QUFIQUp3QXlRREtBQWNBbkFDZUFNa0FCd0RLQU1JQXdRQUhBTW9BeVFEQ0FBY0Fud0RLQU1zQUJ3Q2ZBSndBeWdBSEFNc0F3UUREQUFjQXl3REtBTUVBQndETUFNTUF4QUFIQU13QXl3RERBQWNBeXdDd0FKOEFCd0RMQU13QXNBQUhBTTBBeEFERkFBY0F6UURNQU1RQUJ3RE1BTEVBc0FBSEFNd0F6UUN4QUFjQXN3RE5BTTRBQndDekFMRUF6UUFIQU00QXhRREdBQWNBemdETkFNVUFCd0RQQU1ZQXh3QUhBTThBemdER0FBY0Fzd0RQQU5BQUJ3Q3pBTTRBendBSEFEc0F4d0F3QUFjQU93RFBBTWNBQndEUUFEd0EwUUFIQU5BQVBRQThBQWNBeVFESUFNSUFCd0RKQU5JQXlBQUhBTklBbmdDMUFBY0EwZ0RKQUo0QUJ3Q2JBTk1BdGdBSEFKc0ExQURUQUFjQXRBRFZBSzhBQndDMEFOWUExUUFIQUVNQTF3RFlBQWNBUXdEWkFOY0FCd0N2QU5vQXNnQUhBSzhBMVFEYUFBY0FzZ0RiQUtBQUJ3Q3lBTm9BMndBSEFEd0EzQURSQUFjQVBBQktBTndBQndEUkFOWUF0QUFIQU5FQTNBRFdBQWNBb0FEZEFKMEFCd0NnQU5zQTNRQUhBSjBBMUFDYkFBY0FuUURkQU5RQUJ3QzRBTjRBdHdBSEFMZ0Ezd0RlQUFjQXdBRGZBTGdBQndEQUFPQUEzd0FIQU1nQTRBREFBQWNBeUFEaEFPQUFCd0RTQU9FQXlBQUhBTklBNGdEaEFBY0F0UURpQU5JQUJ3QzFBT01BNGdBSEFMWUE0d0MxQUFjQXRnRGtBT01BQndEVEFPUUF0Z0FIQU5NQTVRRGtBQWNBM3dEbUFONEFCd0RmQU9jQTVnQUhBT0FBNXdEZkFBY0E0QURvQU9jQUJ3RGhBT2dBNEFBSEFPRUE2UURvQUFjQTRnRHBBT0VBQndEaUFPb0E2UUFIQU9NQTZnRGlBQWNBNHdEckFPb0FCd0RrQU9zQTR3QUhBT1FBN0FEckFBY0E1UURzQU9RQUJ3RGxBTzBBN0FBSEFPY0E3Z0RtQUFjQTV3RHZBTzRBQndEb0FPOEE1d0FIQU9nQThBRHZBQWNBNlFEd0FPZ0FCd0RwQVBFQThBQUhBT29BOFFEcEFBY0E2Z0R5QVBFQUJ3RHJBUElBNmdBSEFPc0E4d0R5QUFjQTdBRHpBT3NBQndEc0FQUUE4d0FIQU8wQTlBRHNBQWNBN1FEMUFQUUFCd0R2QVBZQTdnQUhBTzhBOXdEMkFBY0E4QUQzQU84QUJ3RHdBUGdBOXdBSEFQRUErQUR3QUFjQThRRDVBUGdBQndEeUFQa0E4UUFIQVBJQStnRDVBQWNBOHdENkFQSUFCd0R6QVBzQStnQUhBUFFBK3dEekFBY0E5QUQ4QVBzQUJ3RDFBUHdBOUFBSEFQVUEvUUQ4QUFjQTlRRCtBUDBBQndEMUFQOEEvZ0FIQU8wQS93RDFBQWNBN1FBQUFmOEFCd0RsQUFBQjdRQUhBT1VBQVFFQUFRY0Ewd0FCQWVVQUJ3RFRBQUlCQVFFSEFOUUFBZ0hUQUFjQTFBQURBUUlCQndEZEFBTUIxQUFIQU4wQUJBRURBUWNBMndBRUFkMEFCd0RiQUFVQkJBRUhBTm9BQlFIYkFBY0EyZ0FHQVFVQkJ3RFZBQVlCMmdBSEFOVUFCd0VHQVFjQTFnQUhBZFVBQndEV0FBZ0JCd0VIQU53QUNBSFdBQWNBM0FBSkFRZ0JCd0JLQUFrQjNBQUhBRW9BZUFBSkFRY0FBQUVLQWY4QUJ3QUFBUXNCQ2dFSEFQOEFEQUgrQUFjQS93QUtBUXdCQndBQkFRc0JBQUVIQUFFQkRRRUxBUWNBQlFFT0FRUUJCd0FGQVE4QkRnRUhBQVFCRUFFREFRY0FCQUVPQVJBQkJ3QjRBQkVCQ1FFSEFIZ0FnUUFSQVFjQUNRRVNBUWdCQndBSkFSRUJFZ0VIQUFnQkV3RUhBUWNBQ0FFU0FSTUJCd0FIQVJRQkJnRUhBQWNCRXdFVUFRY0FCZ0VQQVFVQkJ3QUdBUlFCRHdFSEFBTUJGUUVDQVFjQUF3RVFBUlVCQndBQ0FRMEJBUUVIQUFJQkZRRU5BUWNBQ2dFV0FRd0JCd0FLQVJjQkZnRUhBQXNCRndFS0FRY0FDd0VZQVJjQkJ3QVhBWWtBRmdFSEFCY0JpZ0NKQUFjQUdBR0tBQmNCQndBWUFZc0FpZ0FIQUJZQkdRRU1BUWNBRmdFYUFSa0JCd0NKQUJvQkZnRUhBSWtBamdBYUFRY0FHZ0ViQVJrQkJ3QWFBUndCR3dFSEFJNEFIQUVhQVFjQWpnQ1JBQndCQndBY0FSMEJHd0VIQUJ3QkhnRWRBUWNBa1FBZUFSd0JCd0NSQUpRQUhnRUhBSlFBSHdFZUFRY0FsQUNXQUI4QkJ3QWVBU0FCSFFFSEFCNEJId0VnQVFjQUhRRWhBUnNCQndBZEFTQUJJUUVIQUJzQklnRVpBUWNBR3dFaEFTSUJCd0FaQVNNQkRBRUhBQmtCSWdFakFRY0FKQUVsQVNZQkJ3QWtBU2NCSlFFSEFDZ0JKZ0VwQVFjQUtBRWtBU1lCQndBcUFTa0JLd0VIQUNvQktBRXBBUWNBTEFFckFTMEJCd0FzQVNvQkt3RUhBQzRCTFFFdkFRY0FMZ0VzQVMwQkJ3QXdBUzhCTVFFSEFEQUJMZ0V2QVFjQU1nRXhBVE1CQndBeUFUQUJNUUVIQURRQk13RTFBUWNBTkFFeUFUTUJCd0EyQVRVQk53RUhBRFlCTkFFMUFRY0FPQUU1QVRvQkJ3QTRBVHNCT1FFSEFEc0JQQUU1QVFjQU93RTlBVHdCQndBOUFUY0JQQUVIQUQwQk5nRTNBUWNBUGdFbkFTUUJCd0ErQVQ4Qkp3RUhBRUFCSkFFb0FRY0FRQUUrQVNRQkJ3QkJBU2dCS2dFSEFFRUJRQUVvQVFjQVFnRXFBU3dCQndCQ0FVRUJLZ0VIQUVNQkxBRXVBUWNBUXdGQ0FTd0JCd0JFQVM0Qk1BRUhBRVFCUXdFdUFRY0FSUUV3QVRJQkJ3QkZBVVFCTUFFSEFFWUJNZ0UwQVFjQVJnRkZBVElCQndCSEFUc0JPQUVIQUVjQlNBRTdBUWNBU1FFMEFUWUJCd0JKQVVZQk5BRUhBRW9CTmdFOUFRY0FTZ0ZKQVRZQkJ3QklBVDBCT3dFSEFFZ0JTZ0U5QVFjQU13RkxBVFVCQndBekFVd0JTd0VIQURVQlRRRTNBUWNBTlFGTEFVMEJCd0FyQVU0QkxRRUhBQ3NCVHdGT0FRY0FLUUZQQVNzQkJ3QXBBVkFCVHdFSEFDWUJVQUVwQVFjQUpnRlJBVkFCQndBbEFWRUJKZ0VIQUNVQlVnRlJBUWNBVXdGVUFWVUJCd0JUQVZZQlZBRUhBRmNCVmdGWUFRY0FWd0ZVQVZZQkJ3QlpBVllCVXdFSEFGa0JXZ0ZXQVFjQVdBRmFBVnNCQndCWUFWWUJXZ0VIQUZ3QldnRlpBUWNBWEFGZEFWb0JCd0JiQVYwQlhnRUhBRnNCV2dGZEFRY0FYd0ZkQVZ3QkJ3QmZBV0FCWFFFSEFGNEJZQUZoQVFjQVhnRmRBV0FCQndCaUFXTUJaQUVIQUdJQlpRRmpBUWNBWmdGbEFXY0JCd0JtQVdNQlpRRUhBR2dCWlFGaUFRY0FhQUZwQVdVQkJ3Qm5BV2tCYWdFSEFHY0JaUUZwQVFjQWF3RnNBVzBCQndCckFXNEJiQUVIQUc4QmJnRndBUWNBYndGc0FXNEJCd0J0QVhFQmNnRUhBRzBCYkFGeEFRY0Fjd0ZzQVc4QkJ3QnpBWEVCYkFFSEFISUJkQUYxQVFjQWNnRnhBWFFCQndCMkFYRUJjd0VIQUhZQmRBRnhBUWNBZHdGZkFWd0JCd0IzQVhnQlh3RUhBSGtCWEFGWkFRY0FlUUYzQVZ3QkJ3QjZBVk1CVlFFSEFIb0Jld0ZUQVFjQWV3RlpBVk1CQndCN0FYa0JXUUVIQUh3QmVBRjNBUWNBZkFGOUFYZ0JCd0IrQVhjQmVRRUhBSDRCZkFGM0FRY0Fmd0Y1QVhzQkJ3Qi9BWDRCZVFFSEFJQUJld0Y2QVFjQWdBRi9BWHNCQndDQkFYMEJmQUVIQUlFQmdnRjlBUWNBZ3dGOEFYNEJCd0NEQVlFQmZBRUhBSVFCZmdGL0FRY0FoQUdEQVg0QkJ3Q0ZBWDhCZ0FFSEFJVUJoQUYvQVFjQWhnR0NBWUVCQndDR0FZY0JnZ0VIQUlnQmdRR0RBUWNBaUFHR0FZRUJCd0NKQVlNQmhBRUhBSWtCaUFHREFRY0FpZ0dFQVlVQkJ3Q0tBWWtCaEFFSEFJc0Jod0dHQVFjQWl3R01BWWNCQndDTkFZWUJpQUVIQUkwQml3R0dBUWNBamdHSUFZa0JCd0NPQVkwQmlBRUhBSThCaVFHS0FRY0Fqd0dPQVlrQkJ3Q1FBWXdCaXdFSEFKQUJrUUdNQVFjQWtnR0xBWTBCQndDU0FaQUJpd0VIQUpNQmpRR09BUWNBa3dHU0FZMEJCd0NVQVk0Qmp3RUhBSlFCa3dHT0FRY0FsUUdXQVpjQkJ3Q1ZBWmdCbGdFSEFKY0JtUUdhQVFjQWx3R1dBWmtCQndDYUFac0Jsd0VIQUpvQm5BR2JBUWNBbVFHY0Fab0JCd0NaQVowQm5BRUhBSmNCbmdHVkFRY0Fsd0diQVo0QkJ3Q1ZBWjhCbUFFSEFKVUJuZ0dmQVFjQW1BR2dBYUVCQndDWUFaOEJvQUVIQUtFQm9nR2pBUWNBb1FHZ0FhSUJCd0NrQWFVQnBnRUhBS1FCcHdHbEFRY0FwZ0dvQWFrQkJ3Q21BYVVCcUFFSEFLa0JxZ0dyQVFjQXFRR29BYW9CQndDckFhd0JyUUVIQUtzQnFnR3NBUWNBclFHdUFhOEJCd0N0QWF3QnJnRUhBSkVCc0FHTUFRY0FrUUd4QWJBQkJ3Q01BYklCaHdFSEFJd0JzQUd5QVFjQWh3R3pBWUlCQndDSEFiSUJzd0VIQUlJQnRBRjlBUWNBZ2dHekFiUUJCd0I5QWJVQmVBRUhBSDBCdEFHMUFRY0FlQUcyQVY4QkJ3QjRBYlVCdGdFSEFGOEJ0d0c0QVFjQVh3RzJBYmNCQndDNEFia0J1Z0VIQUxnQnR3RzVBUWNBdWdHN0FXUUJCd0M2QWJrQnV3RUhBR1FCdkFGaUFRY0FaQUc3QWJ3QkJ3QmlBYjBCYUFFSEFHSUJ2QUc5QVFjQWFBRytBYjhCQndCb0FiMEJ2Z0VIQUw4QndBSEJBUWNBdndHK0FjQUJCd0RCQWNJQnd3RUhBTUVCd0FIQ0FRY0FsZ0hFQVprQkJ3Q1dBY1VCeEFFSEFNVUJzUUhFQVFjQXhRR3dBYkVCQndDWUFjVUJsZ0VIQUpnQnhnSEZBUWNBeGdHd0FjVUJCd0RHQWJJQnNBRUhBS0VCeGdHWUFRY0FvUUhIQWNZQkJ3REhBYklCeGdFSEFNY0Jzd0d5QVFjQW93SEhBYUVCQndDakFjZ0J4d0VIQU1nQnN3SEhBUWNBeUFHMEFiTUJCd0RKQWJRQnlBRUhBTWtCdFFHMEFRY0F5Z0cxQWNrQkJ3REtBYllCdFFFSEFNc0J0Z0hLQVFjQXl3RzNBYllCQndETUFiY0J5d0VIQU13QnVRRzNBUWNBelFHNUFjd0JCd0ROQWJzQnVRRUhBS1lCelFHa0FRY0FwZ0hPQWMwQkJ3RE9BYnNCelFFSEFNNEJ2QUc3QVFjQXFRSE9BYVlCQndDcEFjOEJ6Z0VIQU04QnZBSE9BUWNBendHOUFid0JCd0NyQWM4QnFRRUhBS3NCMEFIUEFRY0EwQUc5QWM4QkJ3RFFBYjRCdlFFSEFLMEIwQUdyQVFjQXJRSFJBZEFCQndEUkFiNEIwQUVIQU5FQndBRytBUWNBcndIUkFhMEJCd0N2QWRJQjBRRUhBTklCd0FIUkFRY0EwZ0hDQWNBQkJ3RFRBZFFCMVFFSEFOTUIxZ0hVQVFjQTF3SFdBZE1CQndEWEFkZ0IxZ0VIQUtVQjF3R29BUWNBcFFIWkFkY0JCd0RaQWRnQjF3RUhBTmtCMmdIWUFRY0Fwd0haQWFVQkJ3Q25BZHNCMlFFSEFOc0IyZ0haQVFjQTJ3SGNBZG9CQndEZEFkNEIzd0VIQU4wQjRBSGVBUWNBNFFIZ0FkMEJCd0RoQWVJQjRBRUhBT01CNGdIaEFRY0E0d0hrQWVJQkJ3RGxBZVFCNHdFSEFPVUI1Z0hrQVFjQTV3SG1BZVVCQndEbkFlZ0I1Z0VIQU9rQjZBSG5BUWNBNlFIcUFlZ0JCd0RWQWVzQjdBRUhBTlVCMUFIckFRY0Ewd0h0QWU0QkJ3RFRBZFVCN1FFSEFPOEJxZ0h3QVFjQTd3R3NBYW9CQndEWEFlNEI4UUVIQU5jQjB3SHVBUWNBOGdIWEFmRUJCd0R5QWFnQjF3RUhBUEFCcUFIeUFRY0E4QUdxQWFnQkJ3RHNBZk1COUFFSEFPd0JyZ0h6QVFjQTFRSDBBZTBCQndEVkFld0I5QUVIQVBNQnJBSHZBUWNBOHdHdUFhd0JCd0R1QWZVQjlnRUhBTzRCN1FIMUFRY0E5d0h3QWZnQkJ3RDNBZThCOEFFSEFQRUI5Z0g1QVFjQThRSHVBZllCQndENkFmRUIrUUVIQVBvQjhnSHhBUWNBK0FIeUFmb0JCd0Q0QWZBQjhnRUhBUFFCK3dIOEFRY0E5QUh6QWZzQkJ3RHRBZndCOVFFSEFPMEI5QUg4QVFjQSt3SHZBZmNCQndEN0FmTUI3d0VIQUVzQi9RRk5BUWNBU3dIK0FmMEJCd0JNQWY0QlN3RUhBRXdCL3dIK0FRY0FUd0VBQWs0QkJ3QlBBUUVDQUFJSEFBRUNZUUVBQWdjQUFRSmVBV0VCQndCUUFRRUNUd0VIQUZBQkFnSUJBZ2NBQWdKZUFRRUNCd0FDQWxzQlhnRUhBRkVCQWdKUUFRY0FVUUVEQWdJQ0J3QURBbHNCQWdJSEFBTUNXQUZiQVFjQVVnRURBbEVCQndCU0FRUUNBd0lIQUFRQ1dBRURBZ2NBQkFKWEFWZ0JCd0FGQWswQkJnSUhBQVVDTndGTkFRY0FCd0kzQVFVQ0J3QUhBandCTndFSEFBZ0NQQUVIQWdjQUNBSTVBVHdCQndBSkFnb0NDd0lIQUFrQ09nRUtBZ2NBQ2dJNUFRZ0NCd0FLQWpvQk9RRUhBQXdDQ3dJTkFnY0FEQUlKQWdzQ0J3QU9BZzBDRHdJSEFBNENEQUlOQWdjQUVBSVBBaEVDQndBUUFnNENEd0lIQVAwQkVRSVNBZ2NBL1FFUUFoRUNCd0FHQXYwQkVnSUhBQVlDVFFIOUFRY0FFd0lHQWhRQ0J3QVRBZ1VDQmdJSEFCVUNCUUlUQWdjQUZRSUhBZ1VDQndBV0FnY0NGUUlIQUJZQ0NBSUhBZ2NBQ3dJWEFoZ0NCd0FMQWdvQ0Z3SUhBQmNDQ0FJV0FnY0FGd0lLQWdnQ0J3QU5BaGdDR1FJSEFBMENDd0lZQWdjQUR3SVpBaG9DQndBUEFnMENHUUlIQUJFQ0dnSWJBZ2NBRVFJUEFob0NCd0FTQWhzQ0hBSUhBQklDRVFJYkFnY0FGQUlTQWh3Q0J3QVVBZ1lDRWdJSEFCMENNd0VlQWdjQUhRSk1BVE1CQndBZUFqRUJId0lIQUI0Q013RXhBUWNBSUFJeEFTOEJCd0FnQWg4Q01RRUhBQ0VDTFFGT0FRY0FJUUlpQWkwQkJ3QWlBaThCTFFFSEFDSUNJQUl2QVFjQUl3SmdBVjhCQndBakFpUUNZQUVIQUxnQkl3SmZBUWNBdUFFbEFpTUNCd0FrQW1FQllBRUhBQ1FDSmdKaEFRY0F1Z0VsQXJnQkJ3QzZBU2NDSlFJSEFHUUJLQUlwQWdjQVpBRmpBU2dDQndDNkFTa0NKd0lIQUxvQlpBRXBBZ2NBWXdFcUFpZ0NCd0JqQVdZQktnSUhBUDhCSFFJckFnY0Evd0ZNQVIwQ0J3QXNBazRCQUFJSEFDd0NJUUpPQVFjQUpnSUFBbUVCQndBbUFpd0NBQUlIQU1rQkxRTEtBUWNBeVFFdUFpMENCd0F1QWk4Q0xRSUhBQzRDTUFJdkFnY0F5QUV1QXNrQkJ3RElBVEVDTGdJSEFERUNNQUl1QWdjQU1RSXlBakFDQndDakFURUN5QUVIQUtNQk13SXhBZ2NBTXdJeUFqRUNCd0F6QWpRQ01nSUhBS0lCTXdLakFRY0FvZ0UxQWpNQ0J3QTFBalFDTXdJSEFEVUNOZ0kwQWdjQTNnRTNBdDhCQndEZUFUZ0NOd0lIQURnQ09RSTNBZ2NBT0FJNkFqa0NCd0RLQVRzQ3l3RUhBTW9CTFFJN0FnY0FMUUk4QWpzQ0J3QXRBaThDUEFJSEFNc0JQUUxNQVFjQXl3RTdBajBDQndBN0FqNENQUUlIQURzQ1BBSStBZ2NBekFFL0FzMEJCd0RNQVQwQ1B3SUhBRDBDUUFJL0FnY0FQUUkrQWtBQ0J3RE5BVUVDcEFFSEFNMEJQd0pCQWdjQVB3SkNBa0VDQndBL0FrQUNRZ0lIQUtRQlF3S25BUWNBcEFGQkFrTUNCd0JCQWtRQ1F3SUhBRUVDUWdKRUFnY0Fwd0ZGQXRzQkJ3Q25BVU1DUlFJSEFFTUNSZ0pGQWdjQVF3SkVBa1lDQndEYkFVY0MzQUVIQU5zQlJRSkhBZ2NBUlFKSUFrY0NCd0JGQWtZQ1NBSUhBSkFCU1FLUkFRY0FrQUZLQWtrQ0J3Q1NBVW9Da0FFSEFKSUJTd0pLQWdjQVN3Sk1Ba29DQndCTEFrMENUQUlIQUpNQlN3S1NBUWNBa3dGT0Frc0NCd0JPQWswQ1N3SUhBRTRDVHdKTkFnY0FsQUZPQXBNQkJ3Q1VBVkFDVGdJSEFGQUNUd0pPQWdjQVVBSlJBazhDQndDUkFWSUNzUUVIQUpFQlNRSlNBZ2NBc1FGVEFzUUJCd0N4QVZJQ1V3SUhBTVFCVkFLWkFRY0F4QUZUQWxRQ0J3Q1pBVlVDblFFSEFKa0JWQUpWQWdjQTZRRldBdW9CQndEcEFWY0NWZ0lIQUZnQ1NnSk1BZ2NBV0FKWkFrb0NCd0JaQWtrQ1NnSUhBRmtDV2dKSkFnY0FXZ0pTQWtrQ0J3QmFBbHNDVWdJSEFGc0NVd0pTQWdjQVd3SmNBbE1DQndCY0FsUUNVd0lIQUZ3Q1hRSlVBZ2NBWFFKVkFsUUNCd0JkQWw0Q1ZRSUhBRjhDVmdKWEFnY0FYd0pnQWxZQ0J3QmhBbGtDV0FJSEFHRUNZZ0paQWdjQVlnSmFBbGtDQndCaUFtTUNXZ0lIQUdNQ1d3SmFBZ2NBWXdKa0Fsc0NCd0JrQWx3Q1d3SUhBR1FDWlFKY0FnY0FaUUpkQWx3Q0J3QmxBbVlDWFFJSEFHWUNYZ0pkQWdjQVpnSm5BbDRDQndCb0FtQUNYd0lIQUdnQ2FRSmdBZ2NBYWdKaUFtRUNCd0JxQW1zQ1lnSUhBR3NDWXdKaUFnY0Fhd0pzQW1NQ0J3QnNBbVFDWXdJSEFHd0NiUUprQWdjQWJRSmxBbVFDQndCdEFtNENaUUlIQUc0Q1pnSmxBZ2NBYmdKdkFtWUNCd0J2QW1jQ1pnSUhBRzhDY0FKbkFnY0FjUUpwQW1nQ0J3QnhBbklDYVFJSEFITUNhd0pxQWdjQWN3SjBBbXNDQndCMEFtd0Nhd0lIQUhRQ2RRSnNBZ2NBZFFKdEFtd0NCd0IxQW5ZQ2JRSUhBSFlDYmdKdEFnY0FkZ0ozQW00Q0J3QjNBbThDYmdJSEFIY0NlQUp2QWdjQWVBSndBbThDQndCNEFua0NjQUlIQUhvQ2NnSnhBZ2NBZWdKN0FuSUNCd0I4QW5RQ2N3SUhBSHdDZlFKMEFnY0FmUUoxQW5RQ0J3QjlBbjRDZFFJSEFINENkZ0oxQWdjQWZnSi9BbllDQndCL0FuY0NkZ0lIQUg4Q2dBSjNBZ2NBZ0FKNEFuY0NCd0NBQW9FQ2VBSUhBSUVDZVFKNEFnY0FnUUtDQW5rQ0J3Q0RBbnNDZWdJSEFJTUNoQUo3QWdjQWhRS0dBb2NDQndDRkFvZ0NoZ0lIQUlrQ2lnS0xBZ2NBaVFLTUFvb0NCd0NOQW9zQ2pnSUhBSTBDaVFLTEFnY0Fqd0tPQXBBQ0J3Q1BBbzBDamdJSEFKRUNrQUtTQWdjQWtRS1BBcEFDQndDVEFwSUNsQUlIQUpNQ2tRS1NBZ2NBbFFKOEFuTUNCd0NWQXBZQ2ZBSUhBSmNDY3dKcUFnY0Fsd0tWQW5NQ0J3Q1lBbW9DWVFJSEFKZ0Nsd0pxQWdjQW1RSmhBbGdDQndDWkFwZ0NZUUlIQUpvQ1dBSk1BZ2NBbWdLWkFsZ0NCd0NiQWt3Q1RRSUhBSnNDbWdKTUFnY0FuQUtkQXA0Q0J3Q2NBcDhDblFJSEFKOENvQUtkQWdjQW53S1VBcUFDQndDaEFwOENuQUlIQUtFQ29nS2ZBZ2NBb2dLVUFwOENCd0NpQXBNQ2xBSUhBS01DcEFLbEFnY0Fvd0ttQXFRQ0J3Q21BcWNDcEFJSEFLWUNxQUtuQWdjQXFBS3BBcWNDQndDb0Fxb0NxUUlIQUtvQ3F3S3BBZ2NBcWdLc0Fxc0NCd0NzQXEwQ3F3SUhBS3dDcmdLdEFnY0FyZ0t2QXEwQ0J3Q3VBckFDcndJSEFMQUNzUUt2QWdjQXNBS3lBckVDQndDekFyUUN0UUlIQUxNQ3RnSzBBZ2NBdHdLNEFya0NCd0MzQXJvQ3VBSUhBTGtDdXdLOEFnY0F1UUs0QXJzQ0J3QzhBcjBDdmdJSEFMd0N1d0s5QWdjQXZnSy9Bc0FDQndDK0FyMEN2d0lIQU1BQ3dRTENBZ2NBd0FLL0FzRUNCd0RDQXNNQ3hBSUhBTUlDd1FMREFnY0F4QUxGQXNZQ0J3REVBc01DeFFJSEFNWUN4d0xJQWdjQXhnTEZBc2NDQndESUFza0N5Z0lIQU1nQ3h3TEpBZ2NBeXdMTUFzMENCd0RMQXM0Q3pBSUhBTThDemdMTEFnY0F6d0xRQXM0Q0J3REtBdEFDendJSEFNb0N5UUxRQWdjQXVnTFJBcmdDQndDNkF0SUMwUUlIQUxnQzB3SzdBZ2NBdUFMUkF0TUNCd0M3QXRRQ3ZRSUhBTHNDMHdMVUFnY0F2UUxWQXI4Q0J3QzlBdFFDMVFJSEFMOEMxZ0xCQWdjQXZ3TFZBdFlDQndEQkF0Y0N3d0lIQU1FQzFnTFhBZ2NBd3dMWUFzVUNCd0REQXRjQzJBSUhBTVVDMlFMSEFnY0F4UUxZQXRrQ0J3RE9BdG9DekFJSEFNNEMyd0xhQWdjQXh3TGNBc2tDQndESEF0a0MzQUlIQU1rQzNRTFFBZ2NBeVFMY0F0MENCd0RRQXRzQ3pnSUhBTkFDM1FMYkFnY0EzZ0xHQXNnQ0J3RGVBdDhDeGdJSEFPQUN5QUxLQWdjQTRBTGVBc2dDQndEaEFyNEN3QUlIQU9FQzRnSytBZ2NBNGdLOEFyNENCd0RpQXVNQ3ZBSUhBT01DdVFLOEFnY0E0d0xrQXJrQ0J3RGtBcmNDdVFJSEFPUUM1UUszQWdjQTVnTG5BdWdDQndEbUF1a0M1d0lIQU9rQzZnTHJBZ2NBNlFMbUF1b0NCd0RwQXV3QzV3SUhBT2tDN1FMc0FnY0E3UUxyQXU0Q0J3RHRBdWtDNndJSEFPMEM3d0xzQWdjQTdRTHdBdThDQndEd0F1NEM4UUlIQVBBQzdRTHVBZ2NBOEFMeUF1OENCd0R3QXZNQzhnSUhBUE1DOFFMMEFnY0E4d0x3QXZFQ0J3RDFBdllDOXdJSEFQVUMrQUwyQWdjQStBTDVBdm9DQndENEF2VUMrUUlIQVBnQyt3TDJBZ2NBK0FMOEF2c0NCd0Q4QXZvQy9RSUhBUHdDK0FMNkFnY0EvZ0wvQWdBREJ3RCtBZ0VEL3dJSEFBRURBZ01EQXdjQUFRUCtBZ0lEQndBRUF3QURCUU1IQUFRRC9nSUFBd2NBL2dJR0F3SURCd0QrQWdRREJnTUhBUHdDQlFQN0FnY0EvQUlFQXdVREJ3QUVBLzBDQmdNSEFBUUQvQUw5QWdjQThnSUhBKzhDQndEeUFnZ0RCd01IQU84Q0NRUHNBZ2NBN3dJSEF3a0RCd0RuQWdvRDZBSUhBT2NDQ3dNS0F3Y0E3QUlMQStjQ0J3RHNBZ2tEQ3dNSEFBZ0REQU1IQXdjQUNBTU5Bd3dEQndBSEF3NERDUU1IQUFjRERBTU9Bd2NBQ1FNUEF3c0RCd0FKQXc0RER3TUhBQXNERUFNS0F3Y0FDd01QQXhBREJ3QU5BeEVEREFNSEFBMERFZ01SQXdjQURBTVRBdzREQndBTUF4RURFd01IQUE0REZBTVBBd2NBRGdNVEF4UURCd0FQQXhVREVBTUhBQThERkFNVkF3Y0FFZ01XQXhFREJ3QVNBeGNERmdNSEFCRURHQU1UQXdjQUVRTVdBeGdEQndBVEF4a0RGQU1IQUJNREdBTVpBd2NBRkFNYUF4VURCd0FVQXhrREdnTUhBQmNER3dNV0F3Y0FGd01jQXhzREJ3QVdBeDBER0FNSEFCWURHd01kQXdjQUdBTWVBeGtEQndBWUF4MERIZ01IQUJrREh3TWFBd2NBR1FNZUF4OERCd0FjQXlBREd3TUhBQndESVFNZ0F3Y0FHd01pQXgwREJ3QWJBeUFESWdNSEFCMERJd01lQXdjQUhRTWlBeU1EQndBZUF5UURId01IQUI0REl3TWtBd2NBSlFNbUF5Y0RCd0FsQXlnREpnTUhBQ2tESndNcUF3Y0FLUU1sQXljREJ3QXJBeW9ESndNSEFDc0RMQU1xQXdjQUxBTXBBeW9EQndBc0F5MERLUU1IQUM0REp3TW1Bd2NBTGdNckF5Y0RCd0F2QXlZREtBTUhBQzhETGdNbUF3Y0FNQU1vQXpFREJ3QXdBeThES0FNSEFESURNUU16QXdjQU1nTXdBekVEQndBMEF6VUROZ01IQURRRE53TTFBd2NBT0FNMkF6a0RCd0E0QXpRRE5nTUhBRG9ET1FNN0F3Y0FPZ000QXprREJ3QThBenNEUFFNSEFEd0RPZ003QXdjQVBnTTlBejhEQndBK0F6d0RQUU1IQUVBRElRTWNBd2NBUUFOQkF5RURCd0JDQXh3REZ3TUhBRUlEUUFNY0F3Y0FRd01YQXhJREJ3QkRBMElERndNSEFFUURFZ01OQXdjQVJBTkRBeElEQndCRkF3MERDQU1IQUVVRFJBTU5Bd2NBUmdNSUEvSUNCd0JHQTBVRENBTUhBRWNEOGdKSUF3Y0FSd05HQS9JQ0J3QkpBMGdEU2dNSEFFa0RSd05JQXdjQVN3TktBL2NDQndCTEEwa0RTZ01IQUV3RDl3TDJBZ2NBVEFOTEEvY0NCd0JOQS9ZQyt3SUhBRTBEVEFQMkFnY0FUZ1A3QWdVREJ3Qk9BMDBEK3dJSEFFOERCUU1BQXdjQVR3Tk9Bd1VEQndCUUF3QUQvd0lIQUZBRFR3TUFBd2NBVVFNbEF5a0RCd0JSQTFJREpRTUhBRUVEVWdOUkF3Y0FRUU5BQTFJREJ3QlNBeWdESlFNSEFGSURVd01vQXdjQVFBTlRBMUlEQndCQUEwSURVd01IQUZNRE1RTW9Bd2NBVXdOVUF6RURCd0JDQTFRRFV3TUhBRUlEUXdOVUF3Y0FWQU16QXpFREJ3QlVBMVVETXdNSEFFTURWUU5VQXdjQVF3TkVBMVVEQndCRUExWURWUU1IQUVRRFJRTldBd2NBUlFOWEExWURCd0JGQTBZRFZ3TUhBRVlEV0FOWEF3Y0FSZ05IQTFnREJ3QkhBMWtEV0FNSEFFY0RTUU5aQXdjQVNRTmFBMWtEQndCSkEwc0RXZ01IQUZvRE5nTTFBd2NBV2dOYkF6WURCd0JMQTFzRFdnTUhBRXNEVEFOYkF3Y0FXd001QXpZREJ3QmJBMXdET1FNSEFFd0RYQU5iQXdjQVRBTk5BMXdEQndCY0F6c0RPUU1IQUZ3RFhRTTdBd2NBVFFOZEExd0RCd0JOQTA0RFhRTUhBRjBEUFFNN0F3Y0FYUU5lQXowREJ3Qk9BMTREWFFNSEFFNERUd05lQXdjQVhnTS9BejBEQndCZUExOERQd01IQUU4RFh3TmVBd2NBVHdOUUExOERCd0RVQVdBRFlRTUhBTlFCMWdGZ0F3Y0ExZ0ZpQTJBREJ3RFdBZGdCWWdNSEFHSUROQU00QXdjQVlnTmpBelFEQndEWUFXTURZZ01IQU5nQjJnRmpBd2NBWXdNM0F6UURCd0JqQTJRRE53TUhBTm9CWkFOakF3Y0EyZ0hjQVdRREJ3RGVBV1VEWmdNSEFONEI0QUZsQXdjQTRBRm5BMlVEQndEZ0FlSUJad01IQU9JQmFBTm5Bd2NBNGdIa0FXZ0RCd0RrQVdrRGFBTUhBT1FCNWdGcEF3Y0E1Z0ZxQTJrREJ3RG1BZWdCYWdNSEFPZ0Jhd05xQXdjQTZBSHFBV3NEQndEckFXRURiQU1IQU9zQjFBRmhBd2NBYlFOZ0EyNERCd0J0QTJFRFlBTUhBRG9EYndOd0F3Y0FPZ004QTI4REJ3QnVBMklEY1FNSEFHNERZQU5pQXdjQVlnTnlBM0VEQndCaUF6Z0RjZ01IQURnRGNBTnlBd2NBT0FNNkEzQURCd0J6QTJ3RGRBTUhBSE1EUGdOc0F3Y0FkQU5oQTIwREJ3QjBBMndEWVFNSEFEd0Rjd052QXdjQVBBTStBM01EQndCMUEyNERkZ01IQUhVRGJRTnVBd2NBY0FOM0EzZ0RCd0J3QTI4RGR3TUhBSFlEY1FONUF3Y0FkZ051QTNFREJ3QnhBM29EZVFNSEFIRURjZ042QXdjQWNnTjRBM29EQndCeUEzQURlQU1IQUhzRGRBTjhBd2NBZXdOekEzUURCd0I4QTIwRGRRTUhBSHdEZEFOdEF3Y0Fid043QTNjREJ3QnZBM01EZXdNSEFIMEQzZ0xnQWdjQWZRTitBOTRDQndCK0E5OEMzZ0lIQUg0RGZ3UGZBZ2NBZ0FQaUF1RUNCd0NBQTRFRDRnSUhBUFFDZ1FPQUF3Y0E5QUx4QW9FREJ3Q0JBK01DNGdJSEFJRURnZ1BqQWdjQThRS0NBNEVEQndEeEF1NENnZ01IQUlJRDVBTGpBZ2NBZ2dPREErUUNCd0R1QW9NRGdnTUhBTzRDNndLREF3Y0Fnd1BsQXVRQ0J3Q0RBNFFENVFJSEFPc0NoQU9EQXdjQTZ3THFBb1FEQndEZ0FvVURoZ01IQU9BQ3lnS0ZBd2NBeWdLSEE0VURCd0RLQXM4Q2h3TUhBTThDaUFPSEF3Y0F6d0xMQW9nREJ3Q0pBNG9EaXdNSEFJa0R6UUtLQXdjQXl3S0pBNGdEQndETEFzMENpUU1IQUlzRGpBT05Bd2NBaXdPS0E0d0RCd0NOQTQ0RGp3TUhBSTBEakFPT0F3Y0Fqd09RQTVFREJ3Q1BBNDREa0FNSEFKRURmUU9TQXdjQWtRT1FBMzBEQndCOUE0WURrZ01IQUgwRDRBS0dBd2NBaGdPVEE1UURCd0NHQTRVRGt3TUhBSVVEbFFPVEF3Y0FoUU9IQTVVREJ3Q0hBNVlEbFFNSEFJY0RpQU9XQXdjQWx3T0xBNWdEQndDWEE0a0Rpd01IQUlnRGx3T1dBd2NBaUFPSkE1Y0RCd0NZQTQwRG1RTUhBSmdEaXdPTkF3Y0FtUU9QQTVvREJ3Q1pBNDBEandNSEFKb0RrUU9iQXdjQW1nT1BBNUVEQndDYkE1SURuQU1IQUpzRGtRT1NBd2NBa2dPVUE1d0RCd0NTQTRZRGxBTUhBTVlDblFPZUF3Y0F4Z0xmQXAwREJ3REVBcDREbndNSEFNUUN4Z0tlQXdjQXhBS2dBOElDQndERUFwOERvQU1IQU1BQ29RUGhBZ2NBd0FLaUE2RURCd0RDQXFJRHdBSUhBTUlDb0FPaUF3Y0E4d0tqQS9JQ0J3RHpBcVFEb3dNSEFLTURTQVB5QWdjQW93T2xBMGdEQndEMEFxUUQ4d0lIQVBRQ3BnT2tBd2NBcFFOS0EwZ0RCd0NsQTZjRFNnTUhBS2dEOXdLcEF3Y0FxQVAxQXZjQ0J3Q3BBMG9EcHdNSEFLa0Q5d0pLQXdjQXFnUDFBcWdEQndDcUEva0M5UUlIQUowRGZ3T3JBd2NBblFQZkFuOERCd0RoQXF3RGdBTUhBT0VDb1FPc0F3Y0FnQU9tQS9RQ0J3Q0FBNndEcGdNSEFLMERWZ05YQXdjQXJRT3VBMVlEQndDdkE2NERyUU1IQUs4RHNBT3VBd2NBcmdOVkExWURCd0N1QTdFRFZRTUhBTEFEc1FPdUF3Y0FzQU95QTdFREJ3Q3hBek1EVlFNSEFMRURzd016QXdjQXNnT3pBN0VEQndDeUE3UURzd01IQUxNRE1nTXpBd2NBc3dPMUF6SURCd0MwQTdVRHN3TUhBTFFEdGdPMUF3Y0F0d1BlQVdZREJ3QzNBemdDM2dFSEFMZ0RPQUszQXdjQXVBTTZBamdDQndDNUExY0RXQU1IQUxrRHJRTlhBd2NBdWdPdEE3a0RCd0M2QTY4RHJRTUhBTHNEV0FOWkF3Y0F1d081QTFnREJ3QzhBN2tEdXdNSEFMd0R1Z081QXdjQXZRTlpBMW9EQndDOUE3c0RXUU1IQUw0RHV3TzlBd2NBdmdPOEE3c0RCd0MvQTFvRE5RTUhBTDhEdlFOYUF3Y0F3QU85QTc4REJ3REFBNzREdlFNSEFNRUROUU0zQXdjQXdRTy9BelVEQndEQ0E3OER3UU1IQU1JRHdBTy9Bd2NBd3dNM0EyUURCd0REQThFRE53TUhBTVFEd1FQREF3Y0F4QVBDQThFREJ3QkhBbVFEM0FFSEFFY0N3d05rQXdjQVNBTERBMGNDQndCSUFzUUR3d01IQU1VRElBTWhBd2NBeFFQR0F5QURCd0RHQXlJRElBTUhBTVlEeHdNaUF3Y0F5QVBIQThZREJ3RElBOGtEeHdNSEFNY0RJd01pQXdjQXh3UEtBeU1EQndESkE4b0R4d01IQU1rRHl3UEtBd2NBeWdNa0F5TURCd0RLQTh3REpBTUhBTXNEekFQS0F3Y0F5d1BOQTh3REJ3RE9BeUVEUVFNSEFNNER4UU1oQXdjQXp3TkJBMUVEQndEUEE4NERRUU1IQU5BRFVRTXBBd2NBMEFQUEExRURCd0RSQXlrRExRTUhBTkVEMEFNcEF3Y0FWZ0pyQStvQkJ3QldBdElEYXdNSEFNWUQwd1BJQXdjQXhnUFVBOU1EQndERkE5UUR4Z01IQU1VRDFRUFVBd2NBemdQVkE4VURCd0RPQTlZRDFRTUhBTThEMWdQT0F3Y0F6d1BYQTlZREJ3RFFBOWNEendNSEFOQUQyQVBYQXdjQTBRUFlBOUFEQndEUkE5a0QyQU1IQUZZQzJnUFNBd2NBVmdKZ0F0b0RCd0RVQTlzRDB3TUhBTlFEM0FQYkF3Y0ExUVBjQTlRREJ3RFZBOTBEM0FNSEFOWUQzUVBWQXdjQTFnUGVBOTBEQndEWEE5NEQxZ01IQU5jRDN3UGVBd2NBMkFQZkE5Y0RCd0RZQStBRDN3TUhBTmtENEFQWUF3Y0EyUVBoQStBREJ3QmdBdUlEMmdNSEFHQUNhUUxpQXdjQTNBUGpBOXNEQndEY0ErUUQ0d01IQU4wRDVBUGNBd2NBM1FQbEErUURCd0RlQStVRDNRTUhBTjRENWdQbEF3Y0Ezd1BtQTk0REJ3RGZBK2NENWdNSEFPQUQ1d1BmQXdjQTRBUG9BK2NEQndEaEErZ0Q0QU1IQU9FRDZRUG9Bd2NBYVFMcUErSURCd0JwQW5JQzZnTUhBT1FENndQakF3Y0E1QVBzQStzREJ3RGxBK3dENUFNSEFPVUQ3UVBzQXdjQTVnUHRBK1VEQndEbUErNEQ3UU1IQU9jRDdnUG1Bd2NBNXdQdkErNERCd0RvQSs4RDV3TUhBT2dEOEFQdkF3Y0E2UVB3QStnREJ3RHBBL0VEOEFNSEFISUM4Z1BxQXdjQWNnSjdBdklEQndEc0EvTUQ2d01IQU93RDlBUHpBd2NBN1FQMEErd0RCd0R0QS9VRDlBTUhBTzREOVFQdEF3Y0E3Z1AyQS9VREJ3RHZBL1lEN2dNSEFPOEQ5d1AyQXdjQThBUDNBKzhEQndEd0EvZ0Q5d01IQVBFRCtBUHdBd2NBOFFQNUEvZ0RCd0I3QXZvRDhnTUhBSHNDaEFMNkF3Y0FoZ0w3QS93REJ3Q0dBb2dDK3dNSEFQMEQvZ1AvQXdjQS9RTUFCUDREQndEL0F3RUVBZ1FIQVA4RC9nTUJCQWNBQWdRREJBUUVCd0FDQkFFRUF3UUhBQVFFQlFRR0JBY0FCQVFEQkFVRUJ3QUdCQWNFQ0FRSEFBWUVCUVFIQkFjQTh3TUpCT3NEQndEekF3b0VDUVFIQU9zREN3VGpBd2NBNndNSkJBc0VCd0RqQXd3RTJ3TUhBT01EQ3dRTUJBY0Eyd01OQk5NREJ3RGJBd3dFRFFRSEFOTUREZ1RJQXdjQTB3TU5CQTRFQndESUF3OEV5UU1IQU1nRERnUVBCQWNBRUFRUkJCSUVCd0FRQkJNRUVRUUhBQlFFRXdRUUJBY0FGQVFJQkJNRUJ3QVRCQlVFRVFRSEFCTUVGZ1FWQkFjQUNBUVdCQk1FQndBSUJBY0VGZ1FIQUJjRUdBUVpCQWNBRndRYUJCZ0VCd0FiQkJvRUZ3UUhBQnNFSEFRYUJBY0FIUVFjQkJzRUJ3QWRCQjRFSEFRSEFCOEVIZ1FkQkFjQUh3UWdCQjRFQndBaEJDQUVId1FIQUNFRUlnUWdCQWNBSXdRaUJDRUVCd0FqQkNRRUlnUUhBQ1VFSkFRakJBY0FKUVFtQkNRRUJ3QzBBaWNFS0FRSEFMUUN0Z0luQkFjQWN3RXBCSFlCQndCekFTb0VLUVFIQUNzRS9RRXNCQWNBS3dRUUF2MEJCd0J2QVNvRWN3RUhBRzhCTFFRcUJBY0FMZ1FRQWlzRUJ3QXVCQTRDRUFJSEFIQUJMUVJ2QVFjQWNBRXZCQzBFQndBd0JBNENMZ1FIQURBRURBSU9BZ2NBYWdFeEJHY0JCd0JxQVN3RU1RUUhBQ3dFL2dFeEJBY0FMQVQ5QWY0QkJ3Qm5BVElFWmdFSEFHY0JNUVF5QkFjQU1RVC9BVElFQndBeEJQNEIvd0VIQUdZQk13UXFBZ2NBWmdFeUJETUVCd0F5QkNzQ013UUhBRElFL3dFckFnY0FOQVExQkRZRUJ3QTBCRGNFTlFRSEFEZ0VPUVE2QkFjQU9BUTdCRGtFQndBOEJEY0VOQVFIQUR3RVBRUTNCQWNBUGdRN0JEZ0VCd0ErQkQ4RU93UUhBRUFFUFFROEJBY0FRQVJCQkQwRUJ3QkNCRDhFUGdRSEFFSUVRd1EvQkFjQVJBUkNCRVVFQndCRUJFWUVRZ1FIQUVZRVF3UkNCQWNBUmdSSEJFTUVCd0JJQkVZRVJBUUhBRWdFU1FSR0JBY0FTUVJIQkVZRUJ3QkpCRW9FUndRSEFFc0VTUVJJQkFjQVN3Uk1CRWtFQndCTUJFb0VTUVFIQUV3RVRRUktCQWNBVGdSTUJFc0VCd0JPQkU4RVRBUUhBRThFVFFSTUJBY0FUd1JRQkUwRUJ3QlJCRThFVGdRSEFGRUVVZ1JQQkFjQVVnUlFCRThFQndCU0JGTUVVQVFIQUZRRVVnUlJCQWNBVkFSVkJGSUVCd0JWQkZNRVVnUUhBRlVFVmdSVEJBY0FWd1JWQkZRRUJ3QlhCRmdFVlFRSEFGZ0VWZ1JWQkFjQVdBUlpCRllFQndCYUJGZ0VWd1FIQUZvRVd3UllCQWNBV3dSWkJGZ0VCd0JiQkZ3RVdRUUhBRjBFV3dSYUJBY0FYUVJlQkZzRUJ3QmVCRndFV3dRSEFGNEVYd1JjQkFjQVlBUmVCRjBFQndCZ0JHRUVYZ1FIQUdFRVh3UmVCQWNBWVFSaUJGOEVCd0JqQkdFRVlBUUhBR01FWkFSaEJBY0FaQVJpQkdFRUJ3QmtCR1VFWWdRSEFHWUVaQVJqQkFjQVpnUm5CR1FFQndCbkJHVUVaQVFIQUdjRWFBUmxCQWNBYVFScUJHc0VCd0JwQkd3RWFnUUhBRzBFYUFSbkJBY0FiUVJ1QkdnRUJ3QnZCR3dFYVFRSEFHOEVjQVJzQkFjQWNRUnVCRzBFQndCeEJISUViZ1FIQUhNRWRBUjFCQWNBY3dSMkJIUUVCd0IyQkhjRWRBUUhBSFlFZUFSM0JBY0FlUVIyQkhNRUJ3QjVCSG9FZGdRSEFIb0VlQVIyQkFjQWVnUjdCSGdFQndCOEJIb0VlUVFIQUh3RWZRUjZCQWNBZlFSN0JIb0VCd0I5Qkg0RWV3UUhBSDhFZlFSOEJBY0Fmd1NBQkgwRUJ3Q0FCSDRFZlFRSEFJQUVnUVIrQkFjQWdnU0RCSVFFQndDQ0JEb0Vnd1FIQURvRWhRU0RCQWNBT2dRNUJJVUVCd0NFQklZRWh3UUhBSVFFZ3dTR0JBY0Fnd1NJQklZRUJ3Q0RCSVVFaUFRSEFJY0VpUVNLQkFjQWh3U0dCSWtFQndDR0JJc0VpUVFIQUlZRWlBU0xCQWNBaWdTTUJJMEVCd0NLQklrRWpBUUhBSWtFamdTTUJBY0FpUVNMQkk0RUJ3Q05CSThFa0FRSEFJMEVqQVNQQkFjQWpBU1JCSThFQndDTUJJNEVrUVFIQU1FQmF3RnRBUWNBd1FIREFXc0JCd0MvQVcwQmNnRUhBTDhCd1FGdEFRY0FhQUZ5QVhVQkJ3Qm9BYjhCY2dFSEFDb0VMQVFwQkFjQUtnUXJCQ3dFQndBdEJDc0VLZ1FIQUMwRUxnUXJCQWNBTHdRdUJDMEVCd0F2QkRBRUxnUUhBRG9FTmdRMUJBY0FPZ1NDQkRZRUJ3QTRCRFVFTndRSEFEZ0VPZ1ExQkFjQVBnUTNCRDBFQndBK0JEZ0VOd1FIQUVFRVBnUTlCQWNBUVFSQ0JENEVCd0JBQkVJRVFRUUhBRUFFUlFSQ0JBY0FhQUdTQkpNRUJ3Qm9BWFVCa2dRSEFKUUVhQUdUQkFjQWxBUnBBV2dCQndCMUFaVUVrZ1FIQUhVQmRBR1ZCQWNBbEFScUFXa0JCd0NVQkpZRWFnRUhBSFFCbHdTVkJBY0FkQUYyQVpjRUJ3QXNCSllFbUFRSEFDd0VhZ0dXQkFjQW1RUXNCSmdFQndDWkJDa0VMQVFIQUpjRUtRU1pCQWNBbHdSMkFTa0VCd0NUQkpvRW13UUhBSk1Fa2dTYUJBY0FuQVNUQkpzRUJ3Q2NCSlFFa3dRSEFKSUVuUVNhQkFjQWtnU1ZCSjBFQndDZUJKUUVuQVFIQUo0RWxnU1VCQWNBbFFTZkJKMEVCd0NWQkpjRW53UUhBSmdFbmdTZ0JBY0FtQVNXQko0RUJ3Q2hCSmdFb0FRSEFLRUVtUVNZQkFjQW53U1pCS0VFQndDZkJKY0VtUVFIQUtJRWhRUTVCQWNBb2dTakJJVUVCd0NrQkRrRU93UUhBS1FFb2dRNUJBY0FwUVIzQkhnRUJ3Q2xCS1lFZHdRSEFLY0VXUVJjQkFjQXB3U29CRmtFQndDb0JGWUVXUVFIQUtnRXFRUldCQWNBcWdSaUJHVUVCd0NxQktzRVlnUUhBS3NFWHdSaUJBY0Fxd1NzQkY4RUJ3Q3RCR1VFYUFRSEFLMEVxZ1JsQkFjQXJBUmNCRjhFQndDc0JLY0VYQVFIQUs0RWFBUnVCQWNBcmdTdEJHZ0VCd0N2Qkc0RWNnUUhBSzhFcmdSdUJBY0FzQVI0QkhzRUJ3Q3dCS1VFZUFRSEFMRUVld1IrQkFjQXNRU3dCSHNFQndDakJJZ0VoUVFIQUtNRXNnU0lCQWNBc3dSUUJGTUVCd0N6QkxRRVVBUUhBS2tFVXdSV0JBY0FxUVN6QkZNRUJ3QzFCRWNFU2dRSEFMVUV0Z1JIQkFjQXR3UktCRTBFQndDM0JMVUVTZ1FIQUxZRVF3UkhCQWNBdGdTNEJFTUVCd0MwQkUwRVVBUUhBTFFFdHdSTkJBY0F1QVEvQkVNRUJ3QzRCTGtFUHdRSEFMa0VPd1EvQkFjQXVRU2tCRHNFQndDeUJJc0VpQVFIQUxJRXVnU0xCQWNBdWdTT0JJc0VCd0M2QkxzRWpnUUhBTHdFb3dTaUJBY0F2QVM5QktNRUJ3QytCS0lFcEFRSEFMNEV2QVNpQkFjQXZRU3lCS01FQndDOUJMOEVzZ1FIQU1BRXBBUzVCQWNBd0FTK0JLUUVCd0RCQktZRXBRUUhBTUVFd2dTbUJBY0F3d1NsQkxBRUJ3RERCTUVFcFFRSEFNUUVyZ1N2QkFjQXhBVEZCSzRFQndER0JLZ0Vwd1FIQU1ZRXh3U29CQWNBeHdTcEJLZ0VCd0RIQk1nRXFRUUhBTWtFcHdTc0JBY0F5UVRHQktjRUJ3RElCTE1FcVFRSEFNZ0V5Z1N6QkFjQXl3U3JCS29FQndETEJNd0Vxd1FIQU13RXJBU3JCQWNBekFUSkJLd0VCd0ROQktvRXJRUUhBTTBFeXdTcUJBY0F4UVN0Qks0RUJ3REZCTTBFclFRSEFNNEVzQVN4QkFjQXpnVERCTEFFQndDL0JMb0VzZ1FIQUw4RXp3UzZCQWNBeWdTMEJMTUVCd0RLQk5BRXRBUUhBTkFFdHdTMEJBY0EwQVRSQkxjRUJ3RFNCTFlFdFFRSEFOSUUwd1MyQkFjQTBRUzFCTGNFQndEUkJOSUV0UVFIQU5NRXVBUzJCQWNBMHdUVUJMZ0VCd0RVQkxrRXVBUUhBTlFFd0FTNUJBY0F6d1M3QkxvRUJ3RFBCTlVFdXdRSEFBRUQxZ1QvQWdjQUFRUFhCTllFQndEWUJHc0UyUVFIQU5nRWFRUnJCQWNBQXdQWEJBRURCd0FEQTlvRTF3UUhBTnNFYVFUWUJBY0Eyd1J2QkdrRUJ3Q0tBOXdFakFNSEFJb0QzUVRjQkFjQTNRUjFCTndFQndEZEJITUVkUVFIQU0wQzNRU0tBd2NBelFMZUJOMEVCd0RlQkhNRTNRUUhBTjRFZVFSekJBY0F6QUxlQk0wQ0J3RE1BdDhFM2dRSEFOOEVlUVRlQkFjQTN3UjhCSGtFQndEYUF0OEV6QUlIQU5vQzRBVGZCQWNBNEFSOEJOOEVCd0RnQkg4RWZBUUhBUDhDNFFSUUF3Y0Evd0xXQk9FRUJ3RFdCR01FNFFRSEFOWUVaZ1JqQkFjQVVBUGlCRjhEQndCUUErRUU0Z1FIQU9FRVlBVGlCQWNBNFFSakJHQUVCd0JmQStNRVB3TUhBRjhENGdUakJBY0E0Z1JkQk9NRUJ3RGlCR0FFWFFRSEFEOEQ1QVErQXdjQVB3UGpCT1FFQndEakJGb0U1QVFIQU9NRVhRUmFCQWNBUGdQbEJHd0RCd0ErQStRRTVRUUhBT1FFVndUbEJBY0E1QVJhQkZjRUJ3QnNBK1lFNndFSEFHd0Q1UVRtQkFjQTVRUlVCT1lFQndEbEJGY0VWQVFIQU9zQjV3VHNBUWNBNndIbUJPY0VCd0RtQkZFRTV3UUhBT1lFVkFSUkJBY0E3QUhvQks0QkJ3RHNBZWNFNkFRSEFPY0VUZ1RvQkFjQTV3UlJCRTRFQndDdUFla0Vyd0VIQUs0QjZBVHBCQWNBNkFSTEJPa0VCd0RvQkU0RVN3UUhBSzhCNmdUU0FRY0Fyd0hwQk9vRUJ3RHBCRWdFNmdRSEFPa0VTd1JJQkFjQTBnSHJCTUlCQndEU0Flb0U2d1FIQU9vRVJBVHJCQWNBNmdSSUJFUUVCd0RDQWV3RXd3RUhBTUlCNndUc0JBY0E2d1JGQk93RUJ3RHJCRVFFUlFRSEFNTUI3UVJyQVFjQXd3SHNCTzBFQndEc0JFQUU3UVFIQU93RVJRUkFCQWNBYXdIdUJHNEJCd0JyQWUwRTdnUUhBTzBFUEFUdUJBY0E3UVJBQkR3RUJ3QnVBZThFY0FFSEFHNEI3Z1R2QkFjQTdnUTBCTzhFQndEdUJEd0VOQVFIQUhBQjhBUXZCQWNBY0FIdkJQQUVCd0R2QkRZRThBUUhBTzhFTkFRMkJBY0FMd1R4QkRBRUJ3QXZCUEFFOFFRSEFQQUVnZ1R4QkFjQThBUTJCSUlFQndBd0JQSUVEQUlIQURBRThRVHlCQWNBOFFTRUJQSUVCd0R4QklJRWhBUUhBQXdDOHdRSkFnY0FEQUx5QlBNRUJ3RHlCSWNFOHdRSEFQSUVoQVNIQkFjQUNRTDBCRG9CQndBSkF2TUU5QVFIQVBNRWlnVDBCQWNBOHdTSEJJb0VCd0E2QWZVRU9BRUhBRG9COUFUMUJBY0E5QVNOQlBVRUJ3RDBCSW9FalFRSEFEZ0I5Z1JIQVFjQU9BSDFCUFlFQndEMUJKQUU5Z1FIQVBVRWpRU1FCQWNBZFFUM0JOd0VCd0IxQlBnRTl3UUhBUGtFMndUNkJBY0ErUVJ2Qk5zRUJ3QjBCUGdFZFFRSEFIUUUrd1Q0QkFjQS9BUnZCUGtFQndEOEJIQUVid1FIQUhjRSt3UjBCQWNBZHdUOUJQc0VCd0Q5QkhFRSt3UUhBUDBFY2dSeEJBY0FwZ1Q5QkhjRUJ3Q21CUDRFL1FRSEFQNEVjZ1Q5QkFjQS9nU3ZCSElFQndEQ0JQNEVwZ1FIQU1JRS93VCtCQWNBL3dTdkJQNEVCd0QvQk1RRXJ3UUhBTndFQUFXTUF3Y0EzQVQzQkFBRkJ3RDNCQU1EQUFVSEFQY0UyZ1FEQXdjQWpBTUJCWTREQndDTUF3QUZBUVVIQUFBRkFnTUJCUWNBQUFVREF3SURCd0NPQXdJRmtBTUhBSTREQVFVQ0JRY0FBUVVHQXdJRkJ3QUJCUUlEQmdNSEFKQURBd1Y5QXdjQWtBTUNCUU1GQndBQ0JmMENBd1VIQUFJRkJnUDlBZ2NBZlFNRUJYNERCd0I5QXdNRkJBVUhBQU1GK2dJRUJRY0FBd1g5QXZvQ0J3QitBd1VGZndNSEFINERCQVVGQlFjQUJBWDVBZ1VGQndBRUJmb0MrUUlIQUg4REJnV3JBd2NBZndNRkJRWUZCd0FGQmFvREJnVUhBQVVGK1FLcUF3Y0FhZ1JtQkdzRUJ3QnFCR2NFWmdRSEFHd0Vad1JxQkFjQWJBUnRCR2NFQndCd0JHMEViQVFIQUhBRWNRUnRCQWNBWmdUWkJHc0VCd0JtQk5ZRTJRUUhBTllFMkFUWkJBY0ExZ1RYQk5nRUJ3RFhCTnNFMkFRSEFOY0UyZ1RiQkFjQTJnVDZCTnNFQndEYUJQY0UrZ1FIQVBvRStBVDVCQWNBK2dUM0JQZ0VCd0Q4QkhFRWNBUUhBUHdFK3dSeEJBY0ErQVQ4QlBrRUJ3RDRCUHNFL0FRSEFJUUNCd1g2QXdjQWhBSUlCUWNGQndBSUJmd0RCd1VIQUFnRmhnTDhBd2NBZ3dJSUJZUUNCd0NEQWdrRkNBVUhBQWtGaGdJSUJRY0FDUVdIQW9ZQ0J3Q0JBa1FBZ2dJSEFJRUNDZ1ZFQUFjQUNnV0tBa1FBQndBS0JZc0NpZ0lIQUlBQ0NnV0JBZ2NBZ0FJTEJRb0ZCd0FMQllzQ0NnVUhBQXNGamdLTEFnY0Fmd0lMQllBQ0J3Qi9BZ3dGQ3dVSEFBd0ZqZ0lMQlFjQURBV1FBbzRDQndCK0Fnd0Zmd0lIQUg0Q0RRVU1CUWNBRFFXUUFnd0ZCd0FOQlpJQ2tBSUhBSDBDRFFWK0FnY0FmUUlPQlEwRkJ3QU9CWklDRFFVSEFBNEZsQUtTQWdjQWZBSU9CWDBDQndCOEFnOEZEZ1VIQUE4RmxBSU9CUWNBRHdXZ0FwUUNCd0Q1QXhBRitBTUhBUGtERVFVUUJRY0FFUVgvQXhBRkJ3QVJCZjBEL3dNSEFQZ0RFZ1gzQXdjQStBTVFCUklGQndBUUJRSUVFZ1VIQUJBRi93TUNCQWNBOXdNVEJmWURCd0QzQXhJRkV3VUhBQklGQkFRVEJRY0FFZ1VDQkFRRUJ3RDJBeFFGOVFNSEFQWURFd1VVQlFjQUV3VUdCQlFGQndBVEJRUUVCZ1FIQVBVREZRWDBBd2NBOVFNVUJSVUZCd0FVQlFnRUZRVUhBQlFGQmdRSUJBY0E5QU1XQmZNREJ3RDBBeFVGRmdVSEFCVUZGQVFXQlFjQUZRVUlCQlFFQndDSUFoY0Yrd01IQUlnQ0dBVVhCUWNBR0FVb0JCY0ZCd0FZQmJRQ0tBUUhBSVVDR0FXSUFnY0FoUUlaQlJnRkJ3QVpCYlFDR0FVSEFCa0Z0UUswQWdjQWlRSWFCWXdDQndDSkFoc0ZHZ1VIQUJzRnNRSWFCUWNBR3dXdkFyRUNCd0NOQWhzRmlRSUhBSTBDSEFVYkJRY0FIQVd2QWhzRkJ3QWNCYTBDcndJSEFJOENIQVdOQWdjQWp3SWRCUndGQndBZEJhMENIQVVIQUIwRnF3S3RBZ2NBa1FJZEJZOENCd0NSQWg0RkhRVUhBQjRGcXdJZEJRY0FIZ1dwQXFzQ0J3Q1RBaDRGa1FJSEFKTUNId1VlQlFjQUh3V3BBaDRGQndBZkJhY0NxUUlIQUtJQ0h3V1RBZ2NBb2dJZ0JSOEZCd0FnQmFjQ0h3VUhBQ0FGcEFLbkFnY0FvUUlnQmFJQ0J3Q2hBaUVGSUFVSEFDRUZwQUlnQlFjQUlRV2xBcVFDQndBQUJDSUYvZ01IQUFBRUl3VWlCUWNBSXdVakJDSUZCd0FqQlNVRUl3UUhBUDRESkFVQkJBY0EvZ01pQlNRRkJ3QWlCU0VFSkFVSEFDSUZJd1FoQkFjQUFRUWxCUU1FQndBQkJDUUZKUVVIQUNRRkh3UWxCUWNBSkFVaEJCOEVCd0FEQkNZRkJRUUhBQU1FSlFVbUJRY0FKUVVkQkNZRkJ3QWxCUjhFSFFRSEFBVUVKd1VIQkFjQUJRUW1CU2NGQndBbUJSc0VKd1VIQUNZRkhRUWJCQWNBQndRb0JSWUVCd0FIQkNjRktBVUhBQ2NGRndRb0JRY0FKd1ViQkJjRUJ3QVdCQ2tGRlFRSEFCWUVLQVVwQlFjQUtBVVpCQ2tGQndBb0JSY0VHUVFIQUNvRkt3VXNCUWNBS2dVdEJTc0ZCd0FzQlM0Rkx3VUhBQ3dGS3dVdUJRY0FMd1V3QlRFRkJ3QXZCUzRGTUFVSEFEQUZNZ1V4QlFjQU1BVXpCVElGQndBekJUUUZNZ1VIQURNRk5RVTBCUWNBTmdVMEJUVUZCd0EyQlRjRk5BVUhBRGdGTndVMkJRY0FPQVU1QlRjRkJ3QXFCVGdGTFFVSEFDb0ZPUVU0QlFjQUt3VTZCVHNGQndBckJTMEZPZ1VIQUM0Rk93VThCUWNBTGdVckJUc0ZCd0F3QlR3RlBRVUhBREFGTGdVOEJRY0FQZ1V3QlQwRkJ3QStCVE1GTUFVSEFEOEZNd1UrQlFjQVB3VTFCVE1GQndCQUJUVUZQd1VIQUVBRk5nVTFCUWNBUVFVMkJVQUZCd0JCQlRnRk5nVUhBQzBGUVFVNkJRY0FMUVU0QlVFRkJ3QTdCVUlGUXdVSEFEc0ZPZ1ZDQlFjQVBBVkRCVVFGQndBOEJUc0ZRd1VIQUQwRlJBVkZCUWNBUFFVOEJVUUZCd0JHQlQwRlJRVUhBRVlGUGdVOUJRY0FSd1UrQlVZRkJ3QkhCVDhGUGdVSEFFZ0ZQd1ZIQlFjQVNBVkFCVDhGQndCSkJVQUZTQVVIQUVrRlFRVkFCUWNBT2dWSkJVSUZCd0E2QlVFRlNRVUhBRU1GU2dWTEJRY0FRd1ZDQlVvRkJ3QkVCVXNGVEFVSEFFUUZRd1ZMQlFjQVJRVk1CVTBGQndCRkJVUUZUQVVIQUU0RlJRVk5CUWNBVGdWR0JVVUZCd0JQQlVZRlRnVUhBRThGUndWR0JRY0FVQVZIQlU4RkJ3QlFCVWdGUndVSEFGRUZTQVZRQlFjQVVRVkpCVWdGQndCQ0JWRUZTZ1VIQUVJRlNRVlJCUWNBVUFWT0JVMEZCd0JRQlU4RlRnVUhBRXdGVUFWTkJRY0FUQVZSQlZBRkJ3QkxCVkVGVEFVSEFFc0ZTZ1ZSQlFjQVVnVlRCVlFGQndCU0JWVUZVd1VIQUZZRlZBWFhBQWNBVmdWU0JWUUZCd0JYQmRjQTJRQUhBRmNGVmdYWEFBY0FXQVZYQmRrQUJ3QllCVmtGVndVSEFGb0ZXUVZZQlFjQVdnVmJCVmtGQndCYUJWd0ZXd1VIQUZvRlhRVmNCUWNBWFFWZUJWd0ZCd0JkQlY4RlhnVUhBRjRGVXdWVkJRY0FYZ1ZmQlZNRkJ3QmdCVklGWVFVSEFHQUZWUVZTQlFjQVlRVldCV0lGQndCaEJWSUZWZ1VIQUdJRlZ3VmpCUWNBWWdWV0JWY0ZCd0JYQldRRll3VUhBRmNGV1FWa0JRY0FXUVZsQldRRkJ3QlpCVnNGWlFVSEFGc0ZaZ1ZsQlFjQVd3VmNCV1lGQndCY0JXY0ZaZ1VIQUZ3RlhnVm5CUWNBWndWVkJXQUZCd0JuQlY0RlZRVUhBR2dGWVFWcEJRY0FhQVZnQldFRkJ3QnBCV0lGYWdVSEFHa0ZZUVZpQlFjQWFnVmpCV3NGQndCcUJXSUZZd1VIQUdNRmJBVnJCUWNBWXdWa0JXd0ZCd0JrQlcwRmJBVUhBR1FGWlFWdEJRY0FaUVZ1QlcwRkJ3QmxCV1lGYmdVSEFHWUZid1Z1QlFjQVpnVm5CVzhGQndCdkJXQUZhQVVIQUc4Rlp3VmdCUWNBY0FWcEJYRUZCd0J3QldnRmFRVUhBSEVGYWdWeUJRY0FjUVZwQldvRkJ3QnlCV3NGY3dVSEFISUZhZ1ZyQlFjQWF3VjBCWE1GQndCckJXd0ZkQVVIQUd3RmRRVjBCUWNBYkFWdEJYVUZCd0J0QlhZRmRRVUhBRzBGYmdWMkJRY0FiZ1YzQlhZRkJ3QnVCVzhGZHdVSEFIY0ZhQVZ3QlFjQWR3VnZCV2dGQndCMEJYWUZjd1VIQUhRRmRRVjJCUWNBZGdWeUJYTUZCd0IyQlhjRmNnVUhBSGNGY1FWeUJRY0Fkd1Z3QlhFRkJ3Q0RBa1lBQ1FVSEFJTUNlQVZHQUFjQWVBVkVBRVlBQndCNEJZSUNSQUFIQUhvQ2VBV0RBZ2NBZWdKNUJYZ0ZCd0I1QllJQ2VBVUhBSGtGZVFLQ0FnY0FjUUo1QlhvQ0J3QnhBbm9GZVFVSEFIb0ZlUUo1QlFjQWVnVndBbmtDQndCb0Fub0ZjUUlIQUdnQ2V3VjZCUWNBZXdWd0Fub0ZCd0I3QldjQ2NBSUhBRjhDZXdWb0FnY0FYd0o4QlhzRkJ3QjhCV2NDZXdVSEFId0ZYZ0puQWdjQVZ3SjhCVjhDQndCWEFuMEZmQVVIQUgwRlhnSjhCUWNBZlFWVkFsNENCd0RwQVgwRlZ3SUhBT2tCZmdWOUJRY0FmZ1ZWQW4wRkJ3QitCWjBCVlFJSEFPY0JmZ1hwQVFjQTV3Ri9CWDRGQndCL0JaMEJmZ1VIQUg4Rm5BR2RBUWNBNVFGL0JlY0JCd0RsQVlBRmZ3VUhBSUFGbkFGL0JRY0FnQVdiQVp3QkJ3RGpBWUFGNVFFSEFPTUJnUVdBQlFjQWdRV2JBWUFGQndDQkJaNEJtd0VIQU9FQmdRWGpBUWNBNFFHQ0JZRUZCd0NDQlo0QmdRVUhBSUlGbndHZUFRY0EzUUdDQmVFQkJ3RGRBWU1GZ2dVSEFJTUZud0dDQlFjQWd3V2dBWjhCQndEZkFZTUYzUUVIQU44QmhBV0RCUWNBaEFXZ0FZTUZCd0NFQmFJQm9BRUhBRGNDaEFYZkFRY0FOd0tGQllRRkJ3Q0ZCYUlCaEFVSEFJVUZOUUtpQVFjQU9RS0ZCVGNDQndBNUFvWUZoUVVIQUlZRk5RS0ZCUWNBaGdVMkFqVUNCd0Q1QTRjRkVRVUhBUGtEaUFXSEJRY0FpQVVIQlljRkJ3Q0lCZm9EQndVSEFQRURpQVg1QXdjQThRT0pCWWdGQndDSkJmb0RpQVVIQUlrRjhnUDZBd2NBNlFPSkJmRURCd0RwQTRvRmlRVUhBSW9GOGdPSkJRY0FpZ1hxQS9JREJ3RGhBNG9GNlFNSEFPRURpd1dLQlFjQWl3WHFBNG9GQndDTEJlSUQ2Z01IQU5rRGl3WGhBd2NBMlFPTUJZc0ZCd0NNQmVJRGl3VUhBSXdGMmdQaUF3Y0EwUU9NQmRrREJ3RFJBNDBGakFVSEFJMEYyZ09NQlFjQWpRWFNBOW9EQndBdEE0MEYwUU1IQUMwRGpnV05CUWNBamdYU0E0MEZCd0NPQldzRDBnTUhBQ3dEamdVdEF3Y0FMQU9QQlk0RkJ3Q1BCV3NEamdVSEFJOEZhZ05yQXdjQUt3T1BCU3dEQndBckE1QUZqd1VIQUpBRmFnT1BCUWNBa0FWcEEyb0RCd0F1QTVBRkt3TUhBQzREa1FXUUJRY0FrUVZwQTVBRkJ3Q1JCV2dEYVFNSEFDOERrUVV1QXdjQUx3T1NCWkVGQndDU0JXZ0RrUVVIQUpJRlp3Tm9Bd2NBTUFPU0JTOERCd0F3QTVNRmtnVUhBSk1GWndPU0JRY0Frd1ZsQTJjREJ3QXlBNU1GTUFNSEFESURsQVdUQlFjQWxBVmxBNU1GQndDVUJXWURaUU1IQUxVRGxBVXlBd2NBdFFPVkJaUUZCd0NWQldZRGxBVUhBSlVGdHdObUF3Y0F0Z09WQmJVREJ3QzJBNVlGbFFVSEFKWUZ0d09WQlFjQWxnVzRBN2NEQndEWUFFWUFRd0FIQU5nQUNRVkdBQWNBUlFEWkFFTUFCd0JGQUZnRjJRQUhBTmdBaHdJSkJRY0EyQURYQUljQ0J3QkZBSW9DV0FVSEFFVUFSQUNLQWdjQWlnSmFCVmdGQndDS0Fvd0NXZ1VIQUljQ1ZBV0ZBZ2NBaHdMWEFGUUZCd0JUQllVQ1ZBVUhBRk1GR1FXRkFnY0FLQVNYQlJjRkJ3QW9CSmdGbHdVSEFKZ0ZJd1dYQlFjQW1BVWxCQ01GQndBbkJKZ0ZLQVFIQUNjRW1RV1lCUWNBbVFVbEJKZ0ZCd0NaQlNZRUpRUUhBTFVDbWdXekFnY0F0UUtiQlpvRkJ3Q2JCYklDbWdVSEFKc0ZzUUt5QWdjQUdRV2JCYlVDQndBWkJad0Ztd1VIQUp3RnNRS2JCUWNBbkFVYUJiRUNCd0JhQlJvRlhRVUhBRm9GakFJYUJRY0FHZ1ZmQlYwRkJ3QWFCWndGWHdVSEFCa0ZYd1djQlFjQUdRVlRCVjhGQndDZEJURUZuZ1VIQUowRkx3VXhCUWNBblFYOEF5OEZCd0NkQlFjRi9BTUhBUHdETEFVdkJRY0EvQVA3QXl3RkJ3QVhCU3dGK3dNSEFCY0ZLZ1VzQlFjQWx3VXFCUmNGQndDWEJUa0ZLZ1VIQUNNRk9RV1hCUWNBSXdVM0JUa0ZCd0FBQkRjRkl3VUhBQUFFTkFVM0JRY0EvUU0wQlFBRUJ3RDlBeklGTkFVSEFKOEYvUU1SQlFjQW53VXlCZjBEQndDZUJSRUZod1VIQUo0Rm53VVJCUWNBb0FXZkJLRUVCd0NnQmFFRm53UUhBS0lGb1FTZ0JBY0FvZ1dnQmFFRUJ3Q2hCWjBFbndRSEFLRUZvd1dkQkFjQW93V2FCSjBFQndDakJhUUZtZ1FIQUtRRm13U2FCQWNBcEFXbEJac0VCd0NsQlp3RW13UUhBS1VGcGdXY0JBY0FwZ1dlQkp3RUJ3Q21CYWNGbmdRSEFLY0ZvQVNlQkFjQXB3V2lCYUFFQndDb0JhRUZvQVVIQUtnRnFRV2hCUWNBcWdXZ0JhSUZCd0NxQmFnRm9BVUhBS2tGb3dXaEJRY0FxUVdyQmFNRkJ3Q3NCYUlGcHdVSEFLd0ZxZ1dpQlFjQXF3V2tCYU1GQndDckJhMEZwQVVIQUswRnBRV2tCUWNBclFXdUJhVUZCd0N1QmFZRnBRVUhBSzRGcndXbUJRY0Fyd1duQmFZRkJ3Q3ZCYXdGcHdVSEFMQUZzUVd5QlFjQXNBV3pCYkVGQndDakFyQUZwZ0lIQUtNQ3N3V3dCUWNBdEFXeUJiVUZCd0MwQmJBRnNnVUhBS1lDdEFXb0FnY0FwZ0t3QmJRRkJ3QzJCYlVGdHdVSEFMWUZ0QVcxQlFjQXFBSzJCYW9DQndDb0FyUUZ0Z1VIQUxnRnR3VzVCUWNBdUFXMkJiY0ZCd0NxQXJnRnJBSUhBS29DdGdXNEJRY0F1Z1c1QmJzRkJ3QzZCYmdGdVFVSEFLd0N1Z1d1QWdjQXJBSzRCYm9GQndDOEJic0Z2UVVIQUx3RnVnVzdCUWNBcmdLOEJiQUNCd0N1QXJvRnZBVUhBTDRGdlFXL0JRY0F2Z1c4QmIwRkJ3Q3dBcjRGc2dJSEFMQUN2QVcrQlFjQXdBWEJCY0lGQndEQUJjTUZ3UVVIQUxNQ3dBVzJBZ2NBc3dMREJjQUZCd0RFQmNVRnhnVUhBTVFGeHdYRkJRY0FHZ1RIQlJnRUJ3QWFCTVVGeHdVSEFNWUZ5QVhKQlFjQXhnWEZCY2dGQndBY0JNVUZHZ1FIQUJ3RXlBWEZCUWNBeVFYS0Jjc0ZCd0RKQmNnRnlnVUhBQjRFeUFVY0JBY0FIZ1RLQmNnRkJ3RExCY3dGelFVSEFNc0Z5Z1hNQlFjQUlBVEtCUjRFQndBZ0JNd0Z5Z1VIQU0wRnpnWFBCUWNBelFYTUJjNEZCd0FpQk13RklBUUhBQ0lFemdYTUJRY0F6d1hRQmRFRkJ3RFBCYzRGMEFVSEFDUUV6Z1VpQkFjQUpBVFFCYzRGQndEUkJkSUYwd1VIQU5FRjBBWFNCUWNBSmdUUUJTUUVCd0FtQk5JRjBBVUhBTlFGd0FYQ0JRY0ExQVhWQmNBRkJ3QzJBdFVGSndRSEFMWUN3QVhWQlFjQTFnWFVCZGNGQndEV0JkVUYxQVVIQUNjRTFnV1pCUWNBSndUVkJkWUZCd0RTQmRjRjB3VUhBTklGMWdYWEJRY0FtUVhTQlNZRUJ3Q1pCZFlGMGdVSEFOZ0Zzd0thQlFjQTJBWERCYk1DQndEQkJkZ0YyUVVIQU1FRnd3WFlCUWNBdmdXYUJiSUNCd0MrQmRnRm1nVUhBTmtGdmdXL0JRY0EyUVhZQmI0RkJ3Q3hCZG9Gc2dVSEFMRUYyd1hhQlFjQXNnWGNCYlVGQndDeUJkb0YzQVVIQUxVRjNRVzNCUWNBdFFYY0JkMEZCd0MzQmQ0RnVRVUhBTGNGM1FYZUJRY0F1UVhmQmJzRkJ3QzVCZDRGM3dVSEFMc0Y0QVc5QlFjQXV3WGZCZUFGQndDOUJlRUZ2d1VIQUwwRjRBWGhCUWNBd1FYaUJjSUZCd0RCQmVNRjRnVUhBTVlGNUFYRUJRY0F4Z1hsQmVRRkJ3REpCZVVGeGdVSEFNa0Y1Z1hsQlFjQXl3WG1CY2tGQndETEJlY0Y1Z1VIQU0wRjV3WExCUWNBelFYb0JlY0ZCd0RQQmVnRnpRVUhBTThGNlFYb0JRY0EwUVhwQmM4RkJ3RFJCZW9GNlFVSEFOTUY2Z1hSQlFjQTB3WHJCZW9GQndEQ0Jld0YxQVVIQU1JRjRnWHNCUWNBMUFYdEJkY0ZCd0RVQmV3RjdRVUhBTmNGNndYVEJRY0Exd1h0QmVzRkJ3RHVCY0VGMlFVSEFPNEY0d1hCQlFjQTRRWFpCYjhGQndEaEJlNEYyUVVIQU84RjJnWGJCUWNBN3dYd0Jkb0ZCd0R4QmU4RjhnVUhBUEVGOEFYdkJRY0E4QVhjQmRvRkJ3RHdCZk1GM0FVSEFQUUY4QVh4QlFjQTlBWHpCZkFGQndEekJkMEYzQVVIQVBNRjlRWGRCUWNBOWdYekJmUUZCd0QyQmZVRjh3VUhBUFVGM2dYZEJRY0E5UVgzQmQ0RkJ3RDRCZlVGOWdVSEFQZ0Y5d1gxQlFjQTl3WGZCZDRGQndEM0Jma0Yzd1VIQVBvRjl3WDRCUWNBK2dYNUJmY0ZCd0Q1QmVBRjN3VUhBUGtGK3dYZ0JRY0EvQVg1QmZvRkJ3RDhCZnNGK1FVSEFQc0Y0UVhnQlFjQSt3WDlCZUVGQndEK0Jmc0YvQVVIQVA0Ri9RWDdCUWNBL3dYaUJlTUZCd0QvQlFBRzRnVUhBQUVHL3dVQ0JnY0FBUVlBQnY4RkJ3RGxCUU1HNUFVSEFPVUZCQVlEQmdjQUJRWUVCZ1lHQndBRkJnTUdCQVlIQU9ZRkJBYmxCUWNBNWdVSEJnUUdCd0FHQmdjR0NBWUhBQVlHQkFZSEJnY0E1d1VIQnVZRkJ3RG5CUWtHQndZSEFBZ0dDUVlLQmdjQUNBWUhCZ2tHQndEb0JRa0c1d1VIQU9nRkN3WUpCZ2NBQ2dZTEJnd0dCd0FLQmdrR0N3WUhBT2tGQ3dib0JRY0E2UVVOQmdzR0J3QU1CZzBHRGdZSEFBd0dDd1lOQmdjQTZnVU5CdWtGQndEcUJROEdEUVlIQUE0R0R3WVFCZ2NBRGdZTkJnOEdCd0RyQlE4RzZnVUhBT3NGRVFZUEJnY0FFQVlSQmhJR0J3QVFCZzhHRVFZSEFPSUZFd2JzQlFjQTRnVUFCaE1HQndBVUJnQUdBUVlIQUJRR0V3WUFCZ2NBRXdidEJld0ZCd0FUQmhVRzdRVUhBQllHRXdZVUJnY0FGZ1lWQmhNR0J3QVZCdXNGN1FVSEFCVUdFUWJyQlFjQUVnWVZCaFlHQndBU0JoRUdGUVlIQU80Ri93WGpCUWNBN2dVWEJ2OEZCd0FDQmhjR0dBWUhBQUlHL3dVWEJnY0E0UVVYQnU0RkJ3RGhCZjBGRndZSEFCZ0cvUVgrQlFjQUdBWVhCdjBGQndBWkJnSUdHQVlIQUJrR0dnWUNCZ2NBR3dZWUJ2NEZCd0FiQmhrR0dBWUhBQndHRmdZVUJnY0FIQVlkQmhZR0J3QWRCaElHRmdZSEFCMEdIZ1lTQmdjQUh3WVVCZ0VHQndBZkJod0dGQVlIQUI0R0VBWVNCZ2NBSGdZZ0JoQUdCd0FnQmc0R0VBWUhBQ0FHSVFZT0JnY0FJUVlNQmc0R0J3QWhCaUlHREFZSEFDSUdDZ1lNQmdjQUlnWWpCZ29HQndBakJnZ0dDZ1lIQUNNR0pBWUlCZ2NBSkFZR0JnZ0dCd0FrQmlVR0JnWUhBQ1VHQlFZR0JnY0FKUVltQmdVR0J3QWFCZ0VHQWdZSEFCb0dId1lCQmdjQUp3YitCZndGQndBbkJoc0cvZ1VIQUNnRy9BWDZCUWNBS0FZbkJ2d0ZCd0FwQnZvRitBVUhBQ2tHS0FiNkJRY0FLZ2I0QmZZRkJ3QXFCaWtHK0FVSEFDc0c5Z1gwQlFjQUt3WXFCdllGQndBc0J2UUY4UVVIQUN3R0t3YjBCUWNBTFFieEJmSUZCd0F0Qml3RzhRVUhBQzRHeEFUL0JBY0FMZ1l2QnNRRUJ3QXdCdjhFd2dRSEFEQUdMZ2IvQkFjQU1RYlZCTThFQndBeEJqSUcxUVFIQURNRzFBVFRCQWNBTXdZMEJ0UUVCd0EwQnNBRTFBUUhBRFFHTlFiQUJBY0FOZ2JUQk5JRUJ3QTJCak1HMHdRSEFEY0cwZ1RSQkFjQU53WTJCdElFQndBNEJ0RUUwQVFIQURnR053YlJCQWNBT1FiUUJNb0VCd0E1QmpnRzBBUUhBRG9HendTL0JBY0FPZ1l4QnM4RUJ3QTdCc01FemdRSEFEc0dQQWJEQkFjQVBRYkxCTTBFQndBOUJqNEd5d1FIQUQ4R3pRVEZCQWNBUHdZOUJzMEVCd0ErQnN3RXl3UUhBRDRHUUFiTUJBY0FRQWJKQk13RUJ3QkFCa0VHeVFRSEFFSUd5Z1RJQkFjQVFnWTVCc29FQndCQkJzWUV5UVFIQUVFR1F3YkdCQWNBUkFiSUJNY0VCd0JFQmtJR3lBUUhBRU1HeHdUR0JBY0FRd1pFQnNjRUJ3QXZCc1VFeEFRSEFDOEdQd2JGQkFjQVBBYkJCTU1FQndBOEJrVUd3UVFIQUVVR3dnVEJCQWNBUlFZd0JzSUVCd0ExQnI0RXdBUUhBRFVHUmdhK0JBY0FSd2EvQkwwRUJ3QkhCam9HdndRSEFFWUd2QVMrQkFjQVJnWklCcndFQndCSUJyMEV2QVFIQUVnR1J3YTlCQWNBU1FZdkJpNEdCd0JKQmtvR0x3WUhBRXNHTGdZd0JnY0FTd1pKQmk0R0J3QktCajhHTHdZSEFFb0dUQVkvQmdjQVRRWXdCa1VHQndCTkJrc0dNQVlIQUU0R01nWXhCZ2NBVGdaUEJqSUdCd0JRQmpFR09nWUhBRkFHVGdZeEJnY0FVUVkwQmpNR0J3QlJCbElHTkFZSEFGSUdOUVkwQmdjQVVnWlRCalVHQndCVUJqTUdOZ1lIQUZRR1VRWXpCZ2NBVXdaR0JqVUdCd0JUQmxVR1JnWUhBRllHTmdZM0JnY0FWZ1pVQmpZR0J3QlhCamNHT0FZSEFGY0dWZ1kzQmdjQVdBWTRCamtHQndCWUJsY0dPQVlIQUZrR09RWkNCZ2NBV1FaWUJqa0dCd0JhQmpvR1J3WUhBRm9HVUFZNkJnY0FXd1k4QmpzR0J3QmJCbHdHUEFZSEFGd0dSUVk4QmdjQVhBWk5Ca1VHQndCZEJqNEdQUVlIQUYwR1hnWStCZ2NBVEFZOUJqOEdCd0JNQmwwR1BRWUhBRjRHUUFZK0JnY0FYZ1pmQmtBR0J3QmZCa0VHUUFZSEFGOEdZQVpCQmdjQVlBWkRCa0VHQndCZ0JtRUdRd1lIQUdJR1FnWkVCZ2NBWWdaWkJrSUdCd0JoQmtRR1F3WUhBR0VHWWdaRUJnY0FWUVpJQmtZR0J3QlZCbU1HU0FZSEFHTUdSd1pJQmdjQVl3WmFCa2NHQndCa0JtVUdaZ1lIQUdRR1p3WmxCZ2NBYUFacEJtb0dCd0JvQm1zR2FRWUhBR3dHYlFadUJnY0FiQVp2Qm0wR0J3QndCbkVHY2dZSEFIQUdjd1p4QmdjQWRBWnlCblVHQndCMEJuQUdjZ1lIQUc4R2RnWnRCZ2NBYndaM0JuWUdCd0I0Qm00R2VRWUhBSGdHYkFadUJnY0FlZ1p1Qm0wR0J3QjZCbnNHYmdZSEFId0djZ1p4QmdjQWZBWjlCbklHQndCOUJuVUdjZ1lIQUgwR2ZnWjFCZ2NBZndadEJuWUdCd0IvQm5vR2JRWUhBSHNHZVFadUJnY0Fld2FBQm5rR0J3Q0JCbThHYkFZSEFJRUdnZ1p2QmdjQWdnWnFCbWtHQndDQ0JvRUdhZ1lIQUlNR2N3WndCZ2NBZ3dhRUJuTUdCd0NFQm1RR1pnWUhBSVFHZ3daa0JnY0FoUVp3Qm5RR0J3Q0ZCb01HY0FZSEFJTUdad1prQmdjQWd3YUZCbWNHQndDQ0JuY0did1lIQUlJR2hnWjNCZ2NBaGdacEJtc0dCd0NHQm9JR2FRWUhBSWNHYkFaNEJnY0Fod2FCQm13R0J3Q0JCbWdHYWdZSEFJRUdod1pvQmdjQWlBYUpCb29HQndDSUJvc0dpUVlIQUl3R2pRYU9CZ2NBakFhUEJvMEdCd0NRQm93R2pnWUhBSkFHa1FhTUJnY0Fqd2FTQm8wR0J3Q1BCcE1Ha2dZSEFKSUdpQWFLQmdjQWtnYVRCb2dHQndDVUJtc0dhQVlIQUpRR2xRWnJCZ2NBbGdaMkJuY0dCd0NXQnBjR2RnWUhBSmNHZndaMkJnY0Fsd2FZQm44R0J3Q1pCbmNHaGdZSEFKa0dsZ1ozQmdjQWxRYUdCbXNHQndDVkJwa0doZ1lIQUpvR213YWNCZ2NBbWdhZEJwc0dCd0NhQm9nR25RWUhBSm9HaXdhSUJnY0FuZ2FmQnFBR0J3Q2VCcUVHbndZSEFLRUdqd2FNQmdjQW9RYWVCbzhHQndDaEJxSUdud1lIQUtFR293YWlCZ2NBb3dhTUJwRUdCd0NqQnFFR2pBWUhBS1FHb0FhbEJnY0FwQWFlQnFBR0J3Q2tCbzhHbmdZSEFLUUdrd2FQQmdjQW5RYWxCcHNHQndDZEJxUUdwUVlIQUtRR2lBYVRCZ2NBcEFhZEJvZ0dCd0NtQm9vR2lRWUhBS1lHcHdhS0JnY0FwZ1puQnFjR0J3Q21CbVVHWndZSEFLZ0dqUWFwQmdjQXFBYU9CbzBHQndDb0JuUUdkUVlIQUtnR3FRWjBCZ2NBcUFhUUJvNEdCd0NvQnFvR2tBWUhBS29HZFFaK0JnY0FxZ2FvQm5VR0J3Q1NCcWtHalFZSEFKSUdxd2FwQmdjQXF3WjBCcWtHQndDckJvVUdkQVlIQUtjR2tnYUtCZ2NBcHdhckJwSUdCd0NyQm1jR2hRWUhBS3NHcHdabkJnY0FyQWF0QnE0R0J3Q3NCcThHclFZSEFMQUdzUWF5QmdjQXNBYXpCckVHQndDMEJwY0dsZ1lIQUxRR3RRYVhCZ2NBdGdhMUJyUUdCd0MyQnJjR3RRWUhBTGdHbGdhWkJnY0F1QWEwQnBZR0J3QzVCclFHdUFZSEFMa0d0Z2EwQmdjQXVnYVpCcFVHQndDNkJyZ0dtUVlIQUxzR3VBYTZCZ2NBdXdhNUJyZ0dCd0M4QnBVR2xBWUhBTHdHdWdhVkJnY0F2UWE2QnJ3R0J3QzlCcnNHdWdZSEFMNEd2d2JBQmdjQXZnYkJCcjhHQndEQ0JzTUd4QVlIQU1JR3hRYkRCZ2NBeGdhM0JyWUdCd0RHQnNjR3R3WUhBS0FHeHdiR0JnY0FvQWFmQnNjR0J3RElCcllHdVFZSEFNZ0d4Z2EyQmdjQXBRYkdCc2dHQndDbEJxQUd4Z1lIQU1rR3VRYTdCZ2NBeVFiSUJya0dCd0NiQnNnR3lRWUhBSnNHcFFiSUJnY0F5Z2E3QnIwR0J3REtCc2tHdXdZSEFKd0d5UWJLQmdjQW5BYWJCc2tHQndDMUJxNEdsd1lIQUxVR3JBYXVCZ2NBcndhMUJzc0dCd0N2QnF3R3RRWUhBSmNHclFhWUJnY0Fsd2F1QnEwR0J3QzNCcklHdFFZSEFMY0dzQWF5QmdjQXN3YTNCc3dHQndDekJyQUd0d1lIQUxVR3NRYkxCZ2NBdFFheUJyRUdCd0RIQnNBR3R3WUhBTWNHdmdiQUJnY0F3UWJIQnMwR0J3REJCcjRHeHdZSEFMY0d2d2JNQmdjQXR3YkFCcjhHQndDZkJzUUd4d1lIQUo4R3dnYkVCZ2NBeFFhZkJxSUdCd0RGQnNJR253WUhBTWNHd3diTkJnY0F4d2JFQnNNR0J3QnhCczRHendZSEFIRUdjd2JPQmdjQTBBWnhCczhHQndEUUJud0djUVlIQU00R2hBYlJCZ2NBemdaekJvUUdCd0JtQnRJRzB3WUhBR1lHWlFiU0JnY0FoQWJUQnRFR0J3Q0VCbVlHMHdZSEFJa0cxQWJWQmdjQWlRYUxCdFFHQndCNEJ0WUcxd1lIQUhnR2VRYldCZ2NBZVFiWUJ0WUdCd0I1Qm9BRzJBWUhBSWNHMXdiWkJnY0Fod1o0QnRjR0J3Qm9CdGtHMmdZSEFHZ0dod2JaQmdjQWxBYmFCdHNHQndDVUJtZ0cyZ1lIQUpvRzNBYmRCZ2NBbWdhY0J0d0dCd0NMQnQwRzFBWUhBSXNHbWdiZEJnY0FwZ2JWQnQ0R0J3Q21Cb2tHMVFZSEFHVUczZ2JTQmdjQVpRYW1CdDRHQndDOEJ0c0czd1lIQUx3R2xBYmJCZ2NBdlFiZkJ1QUdCd0M5QnJ3RzN3WUhBTW9HNEFiaEJnY0F5Z2E5QnVBR0J3Q2NCdUVHM0FZSEFKd0d5Z2JoQmdjQXp3YmlCdU1HQndEUEJzNEc0Z1lIQU9RR3p3YmpCZ2NBNUFiUUJzOEdCd0RpQnRFRzVRWUhBT0lHemdiUkJnY0Ewd2JtQnVjR0J3RFRCdElHNWdZSEFORUc1d2JsQmdjQTBRYlRCdWNHQndEVkJ1Z0c2UVlIQU5VRzFBYm9CZ2NBMXdicUJ1c0dCd0RYQnRZRzZnWUhBTllHN0FicUJnY0ExZ2JZQnV3R0J3RFpCdXNHN1FZSEFOa0cxd2JyQmdjQTJnYnRCdTRHQndEYUJ0a0c3UVlIQU5zRzdnYnZCZ2NBMndiYUJ1NEdCd0RkQnZBRzhRWUhBTjBHM0Fid0JnY0ExQWJ4QnVnR0J3RFVCdDBHOFFZSEFONEc2UWJ5QmdjQTNnYlZCdWtHQndEU0J2SUc1Z1lIQU5JRzNnYnlCZ2NBM3didkJ2TUdCd0RmQnRzRzd3WUhBT0FHOHdiMEJnY0E0QWJmQnZNR0J3RGhCdlFHOVFZSEFPRUc0QWIwQmdjQTNBYjFCdkFHQndEY0J1RUc5UVlIQVBZRzdBYllCZ2NBOWdiM0J1d0dCd0Q0QnRBRzVBWUhBUGdHK1FiUUJnY0ErZ2JZQm9BR0J3RDZCdllHMkFZSEFQa0dmQWJRQmdjQStRYjdCbndHQndEOEJzTUd4UVlIQVB3Ry9RYkRCZ2NBL1FiTkJzTUdCd0Q5QnY0R3pRWUhBUDhHeFFhaUJnY0Evd2I4QnNVR0J3QUFCNzhHd1FZSEFBQUhBUWUvQmdjQUFRZk1CcjhHQndBQkJ3SUh6QVlIQVA0R3dRYk5CZ2NBL2dZQUI4RUdCd0FEQjdFR3N3WUhBQU1IQkFleEJnY0FCQWZMQnJFR0J3QUVCd1VIeXdZSEFBSUhzd2JNQmdjQUFnY0RCN01HQndBR0I2MEdyd1lIQUFZSEJ3ZXRCZ2NBQndlWUJxMEdCd0FIQndnSG1BWUhBQVVIcndiTEJnY0FCUWNHQjY4R0J3QUpCNUFHcWdZSEFBa0hDZ2VRQmdjQUN3ZXFCbjRHQndBTEJ3a0hxZ1lIQUF3SG9nYWpCZ2NBREFmL0JxSUdCd0FOQjZNR2tRWUhBQTBIREFlakJnY0FDQWQvQnBnR0J3QUlCdzRIZndZSEFBb0hrUWFRQmdjQUNnY05CNUVHQndBUEI0QUdld1lIQUE4SCtnYUFCZ2NBRGdkNkJuOEdCd0FPQnhBSGVnWUhBQkVIZmdaOUJnY0FFUWNMQjM0R0J3RDdCbjBHZkFZSEFQc0dFUWQ5QmdjQUVBZDdCbm9HQndBUUJ3OEhld1lIQUJJSEV3Y1VCd2NBRWdjVkJ4TUhCd0FXQnhjSEdBY0hBQllIR1FjWEJ3Y0FHZ2NiQnh3SEJ3QWFCeDBIR3djSEFCNEhId2NnQndjQUhnY2hCeDhIQndBZ0J5SUhJd2NIQUNBSEh3Y2lCd2NBSkFjZEJ4b0hCd0FrQnlVSEhRY0hBQndISmdjbkJ3Y0FIQWNiQnlZSEJ3QWNCeWdIR2djSEFCd0hLUWNvQndjQUlBY3FCeDRIQndBZ0J5c0hLZ2NIQUNNSEt3Y2dCd2NBSXdjc0J5c0hCd0FhQnkwSEpBY0hBQm9IS0FjdEJ3Y0FKd2NwQnh3SEJ3QW5CeTRIS1FjSEFCMEhMd2NiQndjQUhRY3dCeThIQndBWUJ6QUhGZ2NIQUJnSEx3Y3dCd2NBSVFjeEJ4OEhCd0FoQnpJSE1RY0hBQk1ITWdjVUJ3Y0FFd2N4QnpJSEJ3QWZCek1ISWdjSEFCOEhNUWN6QndjQUZRY3hCeE1IQndBVkJ6TUhNUWNIQUNVSE1BY2RCd2NBSlFjMEJ6QUhCd0FXQnpRSEdRY0hBQllITUFjMEJ3Y0FHd2MxQnlZSEJ3QWJCeThITlFjSEFCY0hMd2NZQndjQUZ3YzFCeThIQndBMkJ6Y0hPQWNIQURZSE9RYzNCd2NBT2djN0J6d0hCd0E2QnowSE93Y0hBRHNIUGdjOEJ3Y0FPd2MvQno0SEJ3QkFCejBIT2djSEFFQUhRUWM5QndjQU53ZEFCemdIQndBM0IwRUhRQWNIQUJrSFFnY1hCd2NBR1FkREIwSUhCd0FrQjBRSEpRY0hBQ1FIUlFkRUJ3Y0FMUWRGQnlRSEJ3QXRCMFlIUlFjSEFDVUhSd2MwQndjQUpRZEVCMGNIQndBMEIwTUhHUWNIQURRSFJ3ZERCd2NBU0FkSkIwb0hCd0JJQjBzSFNRY0hBRGNIU1FkTEJ3Y0FOd2M1QjBrSEJ3Qk1CMDBIVGdjSEFFd0hUd2ROQndjQVBRZFBCenNIQndBOUIwMEhUd2NIQUZBSFR3ZE1Cd2NBVUFkUkIwOEhCd0E3QjFFSFB3Y0hBRHNIVHdkUkJ3Y0FUZ2RTQjFNSEJ3Qk9CMDBIVWdjSEFEMEhVZ2ROQndjQVBRZEJCMUlIQndCVEIwc0hTQWNIQUZNSFVnZExCd2NBTndkU0IwRUhCd0EzQjBzSFVnY0hBRGdIVkFjMkJ3Y0FPQWRWQjFRSEJ3QVZCMVFIVlFjSEFCVUhFZ2RVQndjQU9nZFdCMWNIQndBNkJ6d0hWZ2NIQUNJSFZnY2pCd2NBSWdkWEIxWUhCd0ErQjFZSFBBY0hBRDRIV0FkV0J3Y0FJd2RZQnl3SEJ3QWpCMVlIV0FjSEFGY0hRQWM2QndjQVZ3ZFpCMEFIQndBaUIxa0hWd2NIQUNJSE13ZFpCd2NBUUFkVkJ6Z0hCd0JBQjFrSFZRY0hBQlVIV1FjekJ3Y0FGUWRWQjFrSEJ3QmFCMXNIWEFjSEFGb0hYUWRiQndjQVhnZGZCMkFIQndCZUIyRUhYd2NIQUVVSFlnZEVCd2NBUlFkakIySUhCd0JqQjJRSFlnY0hBR01IWlFka0J3Y0FSQWRtQjBjSEJ3QkVCMklIWmdjSEFHSUhad2RtQndjQVlnZGtCMmNIQndCSEIyZ0hRd2NIQUVjSFpnZG9Cd2NBWmdkcEIyZ0hCd0JtQjJjSGFRY0hBRU1IYWdkQ0J3Y0FRd2RvQjJvSEJ3Qm9CMnNIYWdjSEFHZ0hhUWRyQndjQWJBZHRCMjRIQndCc0IyOEhiUWNIQUhBSGNRZHlCd2NBY0FkekIzRUhCd0JsQjNRSFpBY0hBR1VIZFFkMEJ3Y0FkUWRPQjNRSEJ3QjFCMHdIVGdjSEFHUUhkZ2RuQndjQVpBZDBCM1lIQndCMEIxTUhkZ2NIQUhRSFRnZFRCd2NBWndkM0Iya0hCd0JuQjNZSGR3Y0hBSFlIU0FkM0J3Y0FkZ2RUQjBnSEJ3QnBCM2dIYXdjSEFHa0hkd2Q0QndjQWR3ZEtCM2dIQndCM0IwZ0hTZ2NIQUZ3SFl3ZEZCd2NBWEFkYkIyTUhCd0JqQjEwSGVRY0hBR01IV3dkZEJ3Y0FXZ2RGQjBZSEJ3QmFCMXdIUlFjSEFHQUhaUWRqQndjQVlBZGZCMlVIQndCbEIyRUhlZ2NIQUdVSFh3ZGhCd2NBWGdkakIza0hCd0JlQjJBSFl3Y0hBRzRIZFFkbEJ3Y0FiZ2R0QjNVSEJ3QjFCMjhIZXdjSEFIVUhiUWR2QndjQWJBZGxCM29IQndCc0IyNEhaUWNIQUhJSFRBZDFCd2NBY2dkeEIwd0hCd0JNQjNNSFVBY0hBRXdIY1FkekJ3Y0FjQWQxQjNzSEJ3QndCM0lIZFFjSEFId0hIZ2Q5QndjQWZBY2hCeDRIQndBZUIzNEhmUWNIQUI0SEtnZCtCd2NBTWdkOEIzOEhCd0F5QnlFSGZBY0hBSUFIRkFlQkJ3Y0FnQWNTQnhRSEJ3Q0JCeklIZndjSEFJRUhGQWN5QndjQWdnYzJCNE1IQndDQ0J6a0hOZ2NIQUlRSEpnZUZCd2NBaEFjbkJ5WUhCd0NHQnljSGhBY0hBSVlITGdjbkJ3Y0FoUWMxQjRjSEJ3Q0ZCeVlITlFjSEFJY0hGd2VJQndjQWh3YzFCeGNIQndDSUIwSUhpUWNIQUlnSEZ3ZENCd2NBaWdkSkI0c0hCd0NLQjBvSFNRY0hBSXNIT1FlQ0J3Y0Fpd2RKQnprSEJ3Q0RCMVFIakFjSEFJTUhOZ2RVQndjQWpBY1NCNEFIQndDTUIxUUhFZ2NIQUlrSGFnZU5Cd2NBaVFkQ0Iyb0hCd0NOQjJzSGpnY0hBSTBIYWdkckJ3Y0FqZ2Q0QjQ4SEJ3Q09CMnNIZUFjSEFJOEhTZ2VLQndjQWp3ZDRCMG9IQndDUUIzMEhrUWNIQUpBSGZBZDlCd2NBZlFlU0I1RUhCd0I5QjM0SGtnY0hBSDhIa0FlVEJ3Y0Fmd2Q4QjVBSEJ3Q1VCNEVIbFFjSEFKUUhnQWVCQndjQWxRZC9CNU1IQndDVkI0RUhmd2NIQUpZSGd3ZVhCd2NBbGdlQ0I0TUhCd0NZQjRVSG1RY0hBSmdIaEFlRkJ3Y0FtZ2VFQjVnSEJ3Q2FCNFlIaEFjSEFKa0hod2ViQndjQW1RZUZCNGNIQndDYkI0Z0huQWNIQUpzSGh3ZUlCd2NBbkFlSkI1MEhCd0NjQjRnSGlRY0hBSjRIaXdlZkJ3Y0FuZ2VLQjRzSEJ3Q2ZCNElIbGdjSEFKOEhpd2VDQndjQWx3ZU1CNkFIQndDWEI0TUhqQWNIQUtBSGdBZVVCd2NBb0FlTUI0QUhCd0NkQjQwSG9RY0hBSjBIaVFlTkJ3Y0FvUWVPQjZJSEJ3Q2hCNDBIamdjSEFLSUhqd2VqQndjQW9nZU9CNDhIQndDakI0b0huZ2NIQUtNSGp3ZUtCd2NBbWdmMkJvWUhCd0NhQi9jRzlnWUhBSDRIK0FhU0J3Y0FmZ2Y1QnZnR0J3Q0dCL29HTGdjSEFJWUg5Z2I2QmdjQUtnZjVCbjRIQndBcUIvc0crUVlIQUhBSC9BWnpCd2NBY0FmOUJ2d0dCd0I3Qi8wR2NBY0hBSHNIL2diOUJnY0Fjd2YvQmxBSEJ3QnpCL3dHL3dZSEFHd0hBQWR2QndjQWJBY0JCd0FIQndCNkJ3RUhiQWNIQUhvSEFnY0JCd2NBYndmK0Juc0hCd0J2QndBSC9nWUhBRjRIQXdkaEJ3Y0FYZ2NFQndNSEJ3QjVCd1FIWGdjSEFIa0hCUWNFQndjQVlRY0NCM29IQndCaEJ3TUhBZ2NIQUZvSEJnZGRCd2NBV2djSEJ3WUhCd0JHQndjSFdnY0hBRVlIQ0FjSEJ3Y0FYUWNGQjNrSEJ3QmRCd1lIQlFjSEFENEhDUWRZQndjQVBnY0tCd2tIQndCWUJ3c0hMQWNIQUZnSENRY0xCd2NBVUFjTUIxRUhCd0JRQi84R0RBY0hBRkVIRFFjL0J3Y0FVUWNNQncwSEJ3QXRCd2dIUmdjSEFDMEhEZ2NJQndjQVB3Y0tCejRIQndBL0J3MEhDZ2NIQUM0SER3Y3BCd2NBTGdmNkJnOEhCd0FvQnc0SExRY0hBQ2dIRUFjT0J3Y0FMQWNSQnlzSEJ3QXNCd3NIRVFjSEFDc0grd1lxQndjQUt3Y1JCL3NHQndBcEJ4QUhLQWNIQUNrSER3Y1FCd2NBcEFlbEI2WUhCd0NrQjZjSHBRY0hBS2dIcVFlcUJ3Y0FxQWVyQjZrSEJ3Q3NCNjBIcmdjSEFLd0hyd2V0QndjQXNBZXhCN0lIQndDd0I3TUhzUWNIQUxJSHRBZTFCd2NBc2dleEI3UUhCd0MyQjY4SHJBY0hBTFlIdHdldkJ3Y0FyZ2U0QjdrSEJ3Q3VCNjBIdUFjSEFLNEh1Z2VzQndjQXJnZTdCN29IQndDeUI3d0hzQWNIQUxJSHZRZThCd2NBdFFlOUI3SUhCd0MxQjc0SHZRY0hBS3dIdndlMkJ3Y0FyQWU2Qjc4SEJ3QzVCN3NIcmdjSEFMa0h3QWU3QndjQXJ3ZkJCNjBIQndDdkI4SUh3UWNIQUtvSHdnZW9Cd2NBcWdmQkI4SUhCd0N6QjhNSHNRY0hBTE1IeEFmREJ3Y0FwUWZFQjZZSEJ3Q2xCOE1IeEFjSEFMRUh4UWUwQndjQXNRZkRCOFVIQndDbkI4TUhwUWNIQUtjSHhRZkRCd2NBdHdmQ0I2OEhCd0MzQjhZSHdnY0hBS2dIeGdlckJ3Y0FxQWZDQjhZSEJ3Q3RCOGNIdUFjSEFLMEh3UWZIQndjQXFRZkJCNm9IQndDcEI4Y0h3UWNIQU1nSHlRZktCd2NBeUFmTEI4a0hCd0RNQjgwSHpnY0hBTXdIendmTkJ3Y0F6UWZRQjg0SEJ3RE5COUVIMEFjSEFOSUh6d2ZNQndjQTBnZlRCODhIQndESkI5SUh5Z2NIQU1rSDB3ZlNCd2NBcXdmVUI2a0hCd0NyQjlVSDFBY0hBTFlIMWdlM0J3Y0F0Z2ZYQjlZSEJ3Qy9COWNIdGdjSEFMOEgyQWZYQndjQXR3ZlpCOFlIQndDM0I5WUgyUWNIQU1ZSDFRZXJCd2NBeGdmWkI5VUhCd0RhQjlzSDNBY0hBTm9IM1FmYkJ3Y0F5UWZiQjkwSEJ3REpCOHNIMndjSEFONEgzd2ZnQndjQTNnZmhCOThIQndEUEIrRUh6UWNIQU04SDN3ZmhCd2NBNGdmaEI5NEhCd0RpQitNSDRRY0hBTTBINHdmUkJ3Y0F6UWZoQitNSEJ3RGdCK1FINVFjSEFPQUgzd2ZrQndjQXp3ZmtCOThIQndEUEI5TUg1QWNIQU9VSDNRZmFCd2NBNVFma0I5MEhCd0RKQitRSDB3Y0hBTWtIM1Fma0J3Y0F5Z2ZtQjhnSEJ3REtCK2NINWdjSEFLY0g1Z2ZuQndjQXB3ZWtCK1lIQndETUIrZ0g2UWNIQU13SHpnZm9Cd2NBdEFmb0I3VUhCd0MwQitrSDZBY0hBTkFINkFmT0J3Y0EwQWZxQitnSEJ3QzFCK29IdmdjSEFMVUg2QWZxQndjQTZRZlNCOHdIQndEcEIrc0gwZ2NIQUxRSDZ3ZnBCd2NBdEFmRkIrc0hCd0RTQitjSHlnY0hBTklINndmbkJ3Y0Fwd2ZyQjhVSEJ3Q25CK2NINndjSEFPd0g3UWZ1QndjQTdBZnZCKzBIQndEd0IvRUg4Z2NIQVBBSDh3ZnhCd2NBMXdmMEI5WUhCd0RYQi9VSDlBY0hBUFVIOWdmMEJ3Y0E5UWYzQi9ZSEJ3RFdCL2dIMlFjSEFOWUg5QWY0QndjQTlBZjVCL2dIQndEMEIvWUgrUWNIQU5rSCtnZlZCd2NBMlFmNEIvb0hCd0Q0Qi9zSCtnY0hBUGdIK1FmN0J3Y0ExUWY4QjlRSEJ3RFZCL29IL0FjSEFQb0gvUWY4QndjQStnZjdCLzBIQndEK0IvOEhBQWdIQVA0SEFRai9Cd2NBQWdnRENBUUlCd0FDQ0FVSUF3Z0hBUGNIQmdqMkJ3Y0E5d2NIQ0FZSUJ3QUhDT0FIQmdnSEFBY0kzZ2ZnQndjQTlnY0lDUGtIQndEMkJ3WUlDQWdIQUFZSTVRY0lDQWNBQmdqZ0IrVUhCd0Q1QndrSSt3Y0hBUGtIQ0FnSkNBY0FDQWphQndrSUJ3QUlDT1VIMmdjSEFQc0hDZ2o5QndjQSt3Y0pDQW9JQndBSkNOd0hDZ2dIQUFrSTJnZmNCd2NBN2dmMUI5Y0hCd0R1QiswSDlRY0hBUFVIN3djTENBY0E5UWZ0Qis4SEJ3RHNCOWNIMkFjSEFPd0g3Z2ZYQndjQThnZjNCL1VIQndEeUIvRUg5d2NIQVBjSDh3Y01DQWNBOXdmeEIvTUhCd0R3Qi9VSEN3Z0hBUEFIOGdmMUJ3Y0FBQWdIQ1BjSEJ3QUFDUDhIQndnSEFBY0lBUWdOQ0FjQUJ3ai9Cd0VJQndEK0IvY0hEQWdIQVA0SEFBajNCd2NBQkFqZUJ3Y0lCd0FFQ0FNSTNnY0hBTjRIQlFqaUJ3Y0EzZ2NEQ0FVSUJ3QUNDQWNJRFFnSEFBSUlCQWdIQ0FjQURnaXdCdzhJQndBT0NMTUhzQWNIQUxBSEVBZ1BDQWNBc0FlOEJ4QUlCd0RFQnc0SUVRZ0hBTVFIc3djT0NBY0FFZ2ltQnhNSUJ3QVNDS1FIcGdjSEFCTUl4QWNSQ0FjQUV3aW1COFFIQndBVUNNZ0hGUWdIQUJRSXl3ZklCd2NBRmdpNEJ4Y0lCd0FXQ0xrSHVBY0hBQmdJdVFjV0NBY0FHQWpBQjdrSEJ3QVhDTWNIR1FnSEFCY0l1QWZIQndjQUdRaXBCeG9JQndBWkNNY0hxUWNIQUJvSTFBY2JDQWNBR2dpcEI5UUhCd0FjQ05zSEhRZ0hBQndJM0FmYkJ3Y0FIUWpMQnhRSUJ3QWRDTnNIeXdjSEFCVUk1Z2NlQ0FjQUZRaklCK1lIQndBZUNLUUhFZ2dIQUI0STVnZWtCd2NBR3dqOEJ4OElCd0FiQ05RSC9BY0hBQjhJL1FjZ0NBY0FId2o4Qi8wSEJ3QWdDQW9JSVFnSEFDQUkvUWNLQ0FjQUlRamNCeHdJQndBaENBb0kzQWNIQUNJSUR3Z2pDQWNBSWdnT0NBOElCd0FQQ0NRSUl3Z0hBQThJRUFna0NBY0FFUWdpQ0NVSUJ3QVJDQTRJSWdnSEFDWUlFd2duQ0FjQUpnZ1NDQk1JQndBbkNCRUlKUWdIQUNjSUV3Z1JDQWNBS0FnVkNDa0lCd0FvQ0JRSUZRZ0hBQ29JRndnckNBY0FLZ2dXQ0JjSUJ3QXNDQllJS2dnSEFDd0lHQWdXQ0FjQUt3Z1pDQzBJQndBckNCY0lHUWdIQUMwSUdnZ3VDQWNBTFFnWkNCb0lCd0F1Q0JzSUx3Z0hBQzRJR2dnYkNBY0FNQWdkQ0RFSUJ3QXdDQndJSFFnSEFERUlGQWdvQ0FjQU1RZ2RDQlFJQndBcENCNElNZ2dIQUNrSUZRZ2VDQWNBTWdnU0NDWUlCd0F5Q0I0SUVnZ0hBQzhJSHdnekNBY0FMd2diQ0I4SUJ3QXpDQ0FJTkFnSEFETUlId2dnQ0FjQU5BZ2hDRFVJQndBMENDQUlJUWdIQURVSUhBZ3dDQWNBTlFnaENCd0lCd0FzQ0RZSUdBZ0hBQ3dJTndnMkNBY0FFQWc0Q0NRSUJ3QVFDRGtJT0FnSEFCZ0lPZ2pBQndjQUdBZzJDRG9JQndDOEJ6a0lFQWdIQUx3SE93ZzVDQWNBQWdnOENBVUlCd0FDQ0QwSVBBZ0hBQTBJUFFnQ0NBY0FEUWcrQ0QwSUJ3QUZDRDhJNGdjSEFBVUlQQWcvQ0FjQS9nZEFDQUVJQndEK0IwRUlRQWdIQUF3SVFRaitCd2NBREFoQ0NFRUlCd0FCQ0Q0SURRZ0hBQUVJUUFnK0NBY0E4QWREQ1BNSEJ3RHdCMFFJUXdnSEFBc0lSQWp3QndjQUN3aEZDRVFJQndEekIwSUlEQWdIQVBNSFF3aENDQWNBN0FkR0NPOEhCd0RzQjBjSVJnZ0hBTmdIUndqc0J3Y0EyQWRJQ0VjSUJ3RHZCMFVJQ3dnSEFPOEhSZ2hGQ0FjQTBBZEpDT29IQndEUUIwb0lTUWdIQU9vSFN3aStCd2NBNmdkSkNFc0lCd0RpQjB3STR3Y0hBT0lIUHdoTUNBY0E0d2ROQ05FSEJ3RGpCMHdJVFFnSEFMOEhTQWpZQndjQXZ3ZE9DRWdJQndEUkIwb0kwQWNIQU5FSFRRaEtDQWNBd0FkUENMc0hCd0RBQnpvSVR3Z0hBTG9IVGdpL0J3Y0F1Z2RRQ0U0SUJ3QytCMUVJdlFjSEFMNEhTd2hSQ0FjQXZRYzdDTHdIQndDOUIxRUlPd2dIQUxzSFVBaTZCd2NBdXdkUENGQUlCd0JTQ0ZNSVZBZ0hBRklJVlFoVENBY0FWZ2hYQ0ZnSUJ3QldDRmtJVndnSEFGb0lXd2hjQ0FjQVdnaGRDRnNJQndCZUNGOElZQWdIQUY0SVlRaGZDQWNBWWdoZ0NHTUlCd0JpQ0Y0SVlBZ0hBRjBJWkFoYkNBY0FYUWhsQ0dRSUJ3Qm1DRndJWndnSEFHWUlXZ2hjQ0FjQWFBaGNDRnNJQndCb0NHa0lYQWdIQUdvSVlBaGZDQWNBYWdockNHQUlCd0JyQ0dNSVlBZ0hBR3NJYkFoakNBY0FiUWhiQ0dRSUJ3QnRDR2dJV3dnSEFHa0lad2hjQ0FjQWFRaHVDR2NJQndCdkNGMElXZ2dIQUc4SWNBaGRDQWNBY0FoWUNGY0lCd0J3Q0c4SVdBZ0hBSEVJWVFoZUNBY0FjUWh5Q0dFSUJ3QnlDRklJVkFnSEFISUljUWhTQ0FjQWN3aGVDR0lJQndCekNIRUlYZ2dIQUhFSVZRaFNDQWNBY1FoekNGVUlCd0J3Q0dVSVhRZ0hBSEFJZEFobENBY0FkQWhYQ0ZrSUJ3QjBDSEFJVndnSEFIVUlXZ2htQ0FjQWRRaHZDRm9JQndCdkNGWUlXQWdIQUc4SWRRaFdDQWNBZGdoM0NIZ0lCd0IyQ0hrSWR3Z0hBSG9JZXdoOENBY0FlZ2g5Q0hzSUJ3QitDSG9JZkFnSEFINElmd2g2Q0FjQWZRaUFDSHNJQndCOUNJRUlnQWdIQUlBSWRnaDRDQWNBZ0FpQkNIWUlCd0NDQ0ZrSVZnZ0hBSUlJZ3doWkNBY0FoQWhrQ0dVSUJ3Q0VDSVVJWkFnSEFJVUliUWhrQ0FjQWhRaUdDRzBJQndDSENHVUlkQWdIQUljSWhBaGxDQWNBZ3doMENGa0lCd0NEQ0ljSWRBZ0hBSWdJaVFpS0NBY0FpQWlMQ0lrSUJ3Q0lDSFlJaXdnSEFJZ0llUWgyQ0FjQWpBaU5DSTRJQndDTUNJOElqUWdIQUk4SWZRaDZDQWNBandpTUNIMElCd0NQQ0pBSWpRZ0hBSThJa1FpUUNBY0FrUWg2Q0g4SUJ3Q1JDSThJZWdnSEFKSUlqZ2lUQ0FjQWtnaU1DSTRJQndDU0NIMElqQWdIQUpJSWdRaDlDQWNBaXdpVENJa0lCd0NMQ0pJSWt3Z0hBSklJZGdpQkNBY0FrZ2lMQ0hZSUJ3Q1VDSGdJZHdnSEFKUUlsUWg0Q0FjQWxBaFZDSlVJQndDVUNGTUlWUWdIQUpZSWV3aVhDQWNBbGdoOENIc0lCd0NXQ0dJSVl3Z0hBSllJbHdoaUNBY0FsZ2grQ0h3SUJ3Q1dDSmdJZmdnSEFKZ0lZd2hzQ0FjQW1BaVdDR01JQndDQUNKY0lld2dIQUlBSW1RaVhDQWNBbVFoaUNKY0lCd0NaQ0hNSVlnZ0hBSlVJZ0FoNENBY0FsUWlaQ0lBSUJ3Q1pDRlVJY3dnSEFKa0lsUWhWQ0FjQW1naWJDSndJQndDYUNKMEltd2dIQUo0SW53aWdDQWNBbmdpaENKOElCd0NpQ0lVSWhBZ0hBS0lJb3dpRkNBY0FwQWlqQ0tJSUJ3Q2tDS1VJb3dnSEFLWUloQWlIQ0FjQXBnaWlDSVFJQndDbkNLSUlwZ2dIQUtjSXBBaWlDQWNBcUFpSENJTUlCd0NvQ0tZSWh3Z0hBS2tJcGdpb0NBY0FxUWluQ0tZSUJ3Q3FDSU1JZ2dnSEFLb0lxQWlEQ0FjQXF3aW9DS29JQndDckNLa0lxQWdIQUt3SXJRaXVDQWNBckFpdkNLMElCd0N3Q0xFSXNnZ0hBTEFJc3dpeENBY0F0QWlsQ0tRSUJ3QzBDTFVJcFFnSEFJNEl0UWkwQ0FjQWpnaU5DTFVJQndDMkNLUUlwd2dIQUxZSXRBaWtDQWNBa3dpMENMWUlCd0NUQ0k0SXRBZ0hBTGNJcHdpcENBY0F0d2kyQ0tjSUJ3Q0pDTFlJdHdnSEFJa0lrd2kyQ0FjQXVBaXBDS3NJQndDNENMY0lxUWdIQUlvSXR3aTRDQWNBaWdpSkNMY0lCd0NqQ0p3SWhRZ0hBS01JbWdpY0NBY0FuUWlqQ0xrSUJ3Q2RDSm9Jb3dnSEFJVUltd2lHQ0FjQWhRaWNDSnNJQndDbENLQUlvd2dIQUtVSW5naWdDQWNBb1FpbENMb0lCd0NoQ0o0SXBRZ0hBS01JbndpNUNBY0Fvd2lnQ0o4SUJ3QzFDSzRJcFFnSEFMVUlyQWl1Q0FjQXJ3aTFDTHNJQndDdkNLd0l0UWdIQUtVSXJRaTZDQWNBcFFpdUNLMElCd0NOQ0xJSXRRZ0hBSTBJc0FpeUNBY0Fzd2lOQ0pBSUJ3Q3pDTEFJalFnSEFMVUlzUWk3Q0FjQXRRaXlDTEVJQndCZkNMd0l2UWdIQUY4SVlRaThDQWNBdmdoZkNMMElCd0MrQ0dvSVh3Z0hBTHdJY2dpL0NBY0F2QWhoQ0hJSUJ3QlVDTUFJd1FnSEFGUUlVd2pBQ0FjQWNnakJDTDhJQndCeUNGUUl3UWdIQUhjSXdnakRDQWNBZHdoNUNNSUlCd0JtQ01RSXhRZ0hBR1lJWndqRUNBY0Fad2pHQ01RSUJ3Qm5DRzRJeGdnSEFIVUl4UWpIQ0FjQWRRaG1DTVVJQndCV0NNY0l5QWdIQUZZSWRRakhDQWNBZ2dqSUNNa0lCd0NDQ0ZZSXlBZ0hBSWdJeWdqTENBY0FpQWlLQ01vSUJ3QjVDTXNJd2dnSEFIa0lpQWpMQ0FjQWxBakRDTXdJQndDVUNIY0l3d2dIQUZNSXpBakFDQWNBVXdpVUNNd0lCd0NxQ01rSXpRZ0hBS29JZ2dqSkNBY0Fxd2pOQ000SUJ3Q3JDS29JelFnSEFMZ0l6Z2pQQ0FjQXVBaXJDTTRJQndDS0NNOEl5Z2dIQUlvSXVBalBDQWNBdlFqUUNORUlCd0M5Q0x3STBBZ0hBTklJdlFqUkNBY0EwZ2krQ0wwSUJ3RFFDTDhJMHdnSEFOQUl2QWkvQ0FjQXdRalVDTlVJQndEQkNNQUkxQWdIQUw4STFRalRDQWNBdndqQkNOVUlCd0REQ05ZSTF3Z0hBTU1Jd2dqV0NBY0F4UWpZQ05rSUJ3REZDTVFJMkFnSEFNUUkyZ2pZQ0FjQXhBakdDTm9JQndESENOa0kyd2dIQU1jSXhRalpDQWNBeUFqYkNOd0lCd0RJQ01jSTJ3Z0hBTWtJM0FqZENBY0F5UWpJQ053SUJ3RExDTjRJM3dnSEFNc0l5Z2plQ0FjQXdnamZDTllJQndEQ0NNc0kzd2dIQU13STF3amdDQWNBekFqRENOY0lCd0RBQ09BSTFBZ0hBTUFJekFqZ0NBY0F6UWpkQ09FSUJ3RE5DTWtJM1FnSEFNNEk0UWppQ0FjQXpnak5DT0VJQndEUENPSUk0d2dIQU04SXpnamlDQWNBeWdqakNONElCd0RLQ004STR3Z0hBRFlJMmdqR0NBY0FOZ2czQ05vSUJ3QTRDTDRJMGdnSEFEZ0lPUWkrQ0FjQU9nakdDRzRJQndBNkNEWUl4Z2dIQURrSWFnaStDQWNBT1FnN0NHb0lCd0E4Q0xFSXN3Z0hBRHdJUFFpeENBY0FQUWk3Q0xFSUJ3QTlDRDRJdXdnSEFEOElzd2lRQ0FjQVB3ZzhDTE1JQndCQUNLMElyd2dIQUVBSVFRaXRDQWNBUVFpNkNLMElCd0JCQ0VJSXVnZ0hBRDRJcndpN0NBY0FQZ2hBQ0s4SUJ3QkRDSjhJb1FnSEFFTUlSQWlmQ0FjQVJBaTVDSjhJQndCRUNFVUl1UWdIQUVJSW9RaTZDQWNBUWdoRENLRUlCd0JHQ0pzSW5RZ0hBRVlJUndpYkNBY0FSd2lHQ0pzSUJ3QkhDRWdJaGdnSEFFVUluUWk1Q0FjQVJRaEdDSjBJQndCSkNINEltQWdIQUVrSVNnaCtDQWNBU3dpWUNHd0lCd0JMQ0VrSW1BZ0hBRXdJa0FpUkNBY0FUQWcvQ0pBSUJ3Qk5DSkVJZndnSEFFMElUQWlSQ0FjQVNBaHRDSVlJQndCSUNFNEliUWdIQUVvSWZ3aCtDQWNBU2doTkNIOElCd0JQQ0c0SWFRZ0hBRThJT2dodUNBY0FUZ2hvQ0cwSUJ3Qk9DRkFJYUFnSEFGRUliQWhyQ0FjQVVRaExDR3dJQndBN0NHc0lhZ2dIQURzSVVRaHJDQWNBVUFocENHZ0lCd0JRQ0U4SWFRZ0hBT1FJNVFqbUNBY0E1QWpuQ09VSUJ3RG9DT2tJNmdnSEFPZ0k2d2pwQ0FjQTdBanRDTzRJQndEc0NPOEk3UWdIQU84STZnanBDQWNBN3dqc0NPb0lCd0R3Q1BFSThnZ0hBUEFJOHdqeENBY0E4d2ptQ09VSUJ3RHpDUEFJNWdnSEFQTUk5QWp4Q0FjQTh3ajFDUFFJQndEMUNPVUk1d2dIQVBVSTh3amxDQWNBOWdqeUNQY0lCd0QyQ1BBSThnZ0hBUEFJNUFqbUNBY0E4QWoyQ09RSUJ3RDRDTzRJK1FnSEFQZ0k3QWp1Q0FjQTdBam9DT29JQndEc0NQZ0k2QWdIQU84SStnanRDQWNBN3dqN0NQb0lCd0Q3Q09rSTZ3Z0hBUHNJN3dqcENBY0EvQWpyQ09nSUJ3RDhDUDBJNndnSEFQNEkrQWo1Q0FjQS9nai9DUGdJQndEL0NPZ0krQWdIQVA4SS9Bam9DQWNBQUFuNkNQc0lCd0FBQ1FFSitnZ0hBUDBJK3dqckNBY0EvUWdBQ2ZzSUJ3QUNDZjBJL0FnSEFBSUpBd245Q0FjQUJBbi9DUDRJQndBRUNRVUovd2dIQUFVSi9Bai9DQWNBQlFrQ0Nmd0lCd0FHQ1FFSkFBa0hBQVlKQndrQkNRY0FBd2tBQ2YwSUJ3QURDUVlKQUFrSEFBZ0pBd2tDQ1FjQUNBa0pDUU1KQndBSUNRb0pDUWtIQUFnSkN3a0tDUWNBREFrRkNRUUpCd0FNQ1EwSkJRa0hBQXdKRGdrTkNRY0FEQWtQQ1E0SkJ3QU5DUUlKQlFrSEFBMEpDQWtDQ1FjQUNBa09DUXNKQndBSUNRMEpEZ2tIQUJBSkJ3a0dDUWNBRUFrUkNRY0pCd0FSQ1JJSkV3a0hBQkVKRUFrU0NRY0FDUWtHQ1FNSkJ3QUpDUkFKQmdrSEFCQUpDZ2tTQ1FjQUVBa0pDUW9KQndBVUNSVUpGZ2tIQUJRSkZ3a1ZDUWNBRkFua0NCY0pCd0FVQ2VjSTVBZ0hBQmdKR1FrYUNRY0FHQWtiQ1JrSkJ3QVlDZlVJR3drSEFCZ0o5QWoxQ0FjQUdRa1VDUllKQndBWkNSc0pGQWtIQUJRSjlRam5DQWNBRkFrYkNmVUlCd0FjQ1IwSkhna0hBQndKSHdrZENRY0FIUW4yQ1BjSUJ3QWRDUjhKOWdnSEFCY0pIQWtWQ1FjQUZ3a2ZDUndKQndBZkNlUUk5Z2dIQUI4SkZ3bmtDQWNBSUFrT0NROEpCd0FnQ1NFSkRna0hBQm9KSVFrZ0NRY0FHZ2taQ1NFSkJ3QWhDUXNKRGdrSEFDRUpJZ2tMQ1FjQUdRa2lDU0VKQndBWkNSWUpJZ2tIQUNJSkNna0xDUWNBSWdrakNRb0pCd0FXQ1NNSklna0hBQllKRlFrakNRY0FJd2tTQ1FvSkJ3QWpDU1FKRWdrSEFCVUpKQWtqQ1FjQUZRa2NDU1FKQndBa0NSTUpFZ2tIQUNRSkpRa1RDUWNBSEFrbENTUUpCd0FjQ1I0SkpRa0hBQ1lKK1FqdUNBY0FKZ2tuQ2ZrSUJ3QW9DZTRJN1FnSEFDZ0pKZ251Q0FjQUp3bitDUGtJQndBbkNTa0ovZ2dIQUNvSkFRa0hDUWNBS2drckNRRUpCd0FyQ2ZvSUFRa0hBQ3NKTEFuNkNBY0FLUWtFQ2Y0SUJ3QXBDUzBKQkFrSEFDMEpEQWtFQ1FjQUxRa3VDUXdKQndBdUNROEpEQWtIQUM0Skx3a1BDUWNBTHdrZ0NROEpCd0F2Q1RBSklBa0hBREFKR2drZ0NRY0FNQWt4Q1JvSkJ3QXhDUmdKR2drSEFERUpNZ2tZQ1FjQU1nbjBDQmdKQndBeUNUTUo5QWdIQURNSjhRajBDQWNBTXdrMENmRUlCd0EwQ2ZJSThRZ0hBRFFKTlFueUNBY0FOUW4zQ1BJSUJ3QTFDVFlKOXdnSEFEWUpIUW4zQ0FjQU5nazNDUjBKQndBM0NSNEpIUWtIQURjSk9Ba2VDUWNBT0FrbENSNEpCd0E0Q1RrSkpRa0hBRGtKRXdrbENRY0FPUWs2Q1JNSkJ3QTZDUkVKRXdrSEFEb0pPd2tSQ1FjQU93a0hDUkVKQndBN0NTb0pCd2tIQUN3SjdRajZDQWNBTEFrb0NlMElCd0E4Q1QwSlBna0hBRHdKUHdrOUNRY0FRQWxCQ1VJSkJ3QkFDVU1KUVFrSEFFUUpSUWxHQ1FjQVJBbEhDVVVKQndCQ0NVY0pRQWtIQUVJSlJRbEhDUWNBU0FsSkNVb0pCd0JJQ1VzSlNRa0hBRDRKU3drOENRY0FQZ2xKQ1VzSkJ3Qk1DVXNKU0FrSEFFd0pUUWxMQ1FjQVBBbE5DVDhKQndBOENVc0pUUWtIQUVvSlRnbFBDUWNBU2dsSkNVNEpCd0E5Q1VrSlBna0hBRDBKVGdsSkNRY0FSZ2xRQ1ZFSkJ3QkdDVVVKVUFrSEFFRUpSUWxDQ1FjQVFRbFFDVVVKQndCU0NVY0pSQWtIQUZJSlV3bEhDUWNBUUFsVENVTUpCd0JBQ1VjSlV3a0hBRU1KVkFsQkNRY0FRd2xWQ1ZRSkJ3QlFDVllKVVFrSEFGQUpWd2xXQ1FjQVFRbFhDVkFKQndCQkNWUUpWd2tIQUZJSldBbFRDUWNBVWdsWkNWZ0pCd0JUQ1ZVSlF3a0hBRk1KV0FsVkNRY0FWUWxhQ1ZRSkJ3QlZDVnNKV2drSEFGY0pYQWxXQ1FjQVZ3bGRDVndKQndCVUNWMEpWd2tIQUZRSldnbGRDUWNBV1FsZUNWZ0pCd0JaQ1Y4Slhna0hBRmdKV3dsVkNRY0FXQWxlQ1ZzSkJ3QmJDV0FKV2drSEFGc0pZUWxnQ1FjQVlnbGdDV0VKQndCaUNXTUpZQWtIQUYwSlpBbGNDUWNBWFFsbENXUUpCd0JtQ1dRSlpRa0hBR1lKWndsa0NRY0FXZ2xsQ1YwSkJ3QmFDV0FKWlFrSEFHWUpZQWxqQ1FjQVpnbGxDV0FKQndCZkNXZ0pYZ2tIQUY4SmFRbG9DUWNBYWdscENXc0pCd0JxQ1dnSmFRa0hBRjRKWVFsYkNRY0FYZ2xvQ1dFSkJ3QmlDV2dKYWdrSEFHSUpZUWxvQ1FjQWJBbHRDVzRKQndCc0NXOEpiUWtIQUQwSmJRbHZDUWNBUFFrL0NXMEpCd0J3Q1hFSmNna0hBSEFKY3dseENRY0FUUWx4Q1hNSkJ3Qk5DVXdKY1FrSEFHMEpjQWx1Q1FjQWJRbHpDWEFKQndCTkNXMEpQd2tIQUUwSmN3bHRDUWNBZEFsMUNYWUpCd0IwQ1hjSmRRa0hBRTRKZEFsUENRY0FUZ2wzQ1hRSkJ3QjFDVzhKYkFrSEFIVUpkd2x2Q1FjQVBRbDNDVTRKQndBOUNXOEpkd2tIQUdZSmVBbG5DUWNBWmdsNUNYZ0pCd0I1Q1hJSmVBa0hBSGtKY0FseUNRY0FZd2w1Q1dZSkJ3QmpDWG9KZVFrSEFIb0pjQWw1Q1FjQWVnbHVDWEFKQndCaUNYb0pZd2tIQUdJSmV3bDZDUWNBZXdsdUNYb0pCd0I3Q1d3SmJna0hBR29KZXdsaUNRY0FhZ2w4Q1hzSkJ3QjhDV3dKZXdrSEFId0pkUWxzQ1FjQWF3bDhDV29KQndCckNYMEpmQWtIQUgwSmRRbDhDUWNBZlFsMkNYVUpCd0JSQ1NZSlJna0hBRkVKSndrbUNRY0FSZ2tvQ1VRSkJ3QkdDU1lKS0FrSEFGWUpKd2xSQ1FjQVZna3BDU2NKQndCWkNTb0pYd2tIQUZrSkt3a3FDUWNBVWdrckNWa0pCd0JTQ1N3Skt3a0hBRndKS1FsV0NRY0FYQWt0Q1NrSkJ3QmtDUzBKWEFrSEFHUUpMZ2t0Q1FjQVp3a3VDV1FKQndCbkNTOEpMZ2tIQUhnSkx3bG5DUWNBZUFrd0NTOEpCd0J5Q1RBSmVBa0hBSElKTVFrd0NRY0FjUWt4Q1hJSkJ3QnhDVElKTVFrSEFFd0pNZ2x4Q1FjQVRBa3pDVElKQndCSUNUTUpUQWtIQUVnSk5Ba3pDUWNBU2drMENVZ0pCd0JLQ1RVSk5Ba0hBRThKTlFsS0NRY0FUd2syQ1RVSkJ3QjBDVFlKVHdrSEFIUUpOd2syQ1FjQWRnazNDWFFKQndCMkNUZ0pOd2tIQUgwSk9BbDJDUWNBZlFrNUNUZ0pCd0JyQ1RrSmZRa0hBR3NKT2drNUNRY0FhUWs2Q1dzSkJ3QnBDVHNKT2drSEFGOEpPd2xwQ1FjQVh3a3FDVHNKQndCRUNTd0pVZ2tIQUVRSktBa3NDUWNBZmdsL0NZQUpCd0IrQ1lFSmZ3a0hBSUlKZ3dtRUNRY0FnZ21GQ1lNSkJ3Q0dDWWNKaUFrSEFJWUppUW1IQ1FjQWdBbUtDWDRKQndDQUNZc0ppZ2tIQUg0SmpBbUJDUWNBZmdtS0NZd0pCd0NOQ1lBSmZ3a0hBSTBKaXdtQUNRY0FqZ21QQ1pBSkJ3Q09DWkVKandrSEFJUUprZ21DQ1FjQWhBbVRDWklKQndDRENaTUpoQWtIQUlNSmxBbVRDUWNBZ2dtVkNZVUpCd0NDQ1pJSmxRa0hBSllKaUFtWENRY0FsZ21HQ1lnSkJ3Q0JDWmNKZndrSEFJRUpsZ21YQ1FjQWpnbVlDWmtKQndDT0NaQUptQWtIQUlVSm1BbURDUWNBaFFtWkNaZ0pCd0NHQ1pvSmlRa0hBSVlKbGdtYUNRY0FqQW1XQ1lFSkJ3Q01DWm9KbGdrSEFKc0ppQW1IQ1FjQW13bVhDWWdKQndCL0Nac0pqUWtIQUg4Smx3bWJDUWNBbkFtUUNZOEpCd0NjQ1pnSmtBa0hBSU1KbkFtVUNRY0Fnd21ZQ1p3SkJ3Q2RDWVVKbFFrSEFKMEptUW1GQ1FjQWpnbWRDWkVKQndDT0Naa0puUWtIQUo0Smp3bVJDUWNBbmdtZkNZOEpCd0NKQ1o0Smh3a0hBSWtKbndtZUNRY0Frd21nQ1pJSkJ3Q1RDYUVKb0FrSEFLRUppd21nQ1FjQW9RbUtDWXNKQndDVUNhRUprd2tIQUpRSm9nbWhDUWNBb2dtS0NhRUpCd0NpQ1l3Smlna0hBS01Ka2dtZ0NRY0Fvd21WQ1pJSkJ3Q05DYUFKaXdrSEFJMEpvd21nQ1FjQXBBbU1DYUlKQndDa0Nab0pqQWtIQUp3Sm9nbVVDUWNBbkFta0NhSUpCd0NrQ1lrSm1na0hBS1FKbndtSkNRY0Fqd21rQ1p3SkJ3Q1BDWjhKcEFrSEFJY0pwUW1iQ1FjQWh3bWVDYVVKQndDZUNaMEpwUWtIQUo0SmtRbWRDUWNBbXdtakNZMEpCd0NiQ2FVSm93a0hBS1VKbFFtakNRY0FwUW1kQ1pVSkJ3Q21DYWNKcUFrSEFLWUpxUW1uQ1FjQXFnbXJDYXdKQndDcUNhMEpxd2tIQUs0SnJ3bXdDUWNBcmdteENhOEpCd0NzQ2JFSnFna0hBS3dKcndteENRY0FzZ216Q2JRSkJ3Q3lDYlVKc3drSEFLZ0p0UW1tQ1FjQXFBbXpDYlVKQndDMkNiVUpzZ2tIQUxZSnR3bTFDUWNBcGdtM0Nha0pCd0NtQ2JVSnR3a0hBTFFKdUFtNUNRY0F0QW16Q2JnSkJ3Q25DYk1KcUFrSEFLY0p1QW16Q1FjQXNBbTZDYnNKQndDd0NhOEp1Z2tIQUtzSnJ3bXNDUWNBcXdtNkNhOEpCd0M4Q2JFSnJna0hBTHdKdlFteENRY0FxZ205Q2EwSkJ3Q3FDYkVKdlFrSEFLMEp2Z21yQ1FjQXJRbS9DYjRKQndDNkNjQUp1d2tIQUxvSndRbkFDUWNBcXduQkNib0pCd0NyQ2I0SndRa0hBTHdKd2dtOUNRY0F2QW5EQ2NJSkJ3QzlDYjhKclFrSEFMMEp3Z20vQ1FjQXZ3bkVDYjRKQndDL0NjVUp4QWtIQU1FSnhnbkFDUWNBd1FuSENjWUpCd0MrQ2NjSndRa0hBTDRKeEFuSENRY0F3d25JQ2NJSkJ3RERDY2tKeUFrSEFNSUp4UW0vQ1FjQXdnbklDY1VKQndERkNjb0p4QWtIQU1VSnl3bktDUWNBekFuS0Njc0pCd0RNQ2MwSnlna0hBTWNKemduR0NRY0F4d25QQ2M0SkJ3RFFDYzRKendrSEFOQUowUW5PQ1FjQXhBblBDY2NKQndERUNjb0p6d2tIQU5BSnlnbk5DUWNBMEFuUENjb0pCd0RKQ2RJSnlBa0hBTWtKMHduU0NRY0ExQW5UQ2RVSkJ3RFVDZElKMHdrSEFNZ0p5d25GQ1FjQXlBblNDY3NKQndETUNkSUoxQWtIQU13Snl3blNDUWNBMWduWENkZ0pCd0RXQ2RrSjF3a0hBS2NKMXduWkNRY0Fwd21wQ2RjSkJ3RGFDZHNKM0FrSEFOb0ozUW5iQ1FjQXR3bmJDZDBKQndDM0NiWUoyd2tIQU5jSjJnbllDUWNBMXduZENkb0pCd0MzQ2RjSnFRa0hBTGNKM1FuWENRY0EzZ25mQ2VBSkJ3RGVDZUVKM3drSEFMZ0ozZ201Q1FjQXVBbmhDZDRKQndEZkNka0oxZ2tIQU44SjRRblpDUWNBcHduaENiZ0pCd0NuQ2RrSjRRa0hBTkFKNGduUkNRY0EwQW5qQ2VJSkJ3RGpDZHdKNGdrSEFPTUoyZ25jQ1FjQXpRbmpDZEFKQndETkNlUUo0d2tIQU9RSjJnbmpDUWNBNUFuWUNkb0pCd0RNQ2VRSnpRa0hBTXdKNVFua0NRY0E1UW5ZQ2VRSkJ3RGxDZFlKMkFrSEFOUUo1UW5NQ1FjQTFBbm1DZVVKQndEbUNkWUo1UWtIQU9ZSjN3bldDUWNBMVFubUNkUUpCd0RWQ2VjSjVna0hBT2NKM3dubUNRY0E1d25nQ2Q4SkJ3QzdDZWdKc0FrSEFMc0o2UW5vQ1FjQXNBbnFDYTRKQndDd0NlZ0o2Z2tIQU1BSjZRbTdDUWNBd0FuckNla0pCd0REQ2V3SnlRa0hBTU1KN1Fuc0NRY0F2QW50Q2NNSkJ3QzhDZTRKN1FrSEFNWUo2d25BQ1FjQXhnbnZDZXNKQndET0NlOEp4Z2tIQU00SjhBbnZDUWNBMFFud0NjNEpCd0RSQ2ZFSjhBa0hBT0lKOFFuUkNRY0E0Z255Q2ZFSkJ3RGNDZklKNGdrSEFOd0o4d255Q1FjQTJ3bnpDZHdKQndEYkNmUUo4d2tIQUxZSjlBbmJDUWNBdGduMUNmUUpCd0N5Q2ZVSnRna0hBTElKOWduMUNRY0F0QW4yQ2JJSkJ3QzBDZmNKOWdrSEFMa0o5d20wQ1FjQXVRbjRDZmNKQndEZUNmZ0p1UWtIQU40SitRbjRDUWNBNEFuNUNkNEpCd0RnQ2ZvSitRa0hBT2NKK2duZ0NRY0E1d243Q2ZvSkJ3RFZDZnNKNXdrSEFOVUovQW43Q1FjQTB3bjhDZFVKQndEVENmMEovQWtIQU1rSi9RblRDUWNBeVFuc0NmMEpCd0N1Q2U0SnZBa0hBSzRKNmdudUNRY0EvZ24vQ1FBS0J3RCtDUUVLL3drSEFBSUtBd29FQ2djQUFnb0ZDZ01LQndBR0NnY0tDQW9IQUFZS0NRb0hDZ2NBQ1FvRUNnTUtCd0FKQ2dZS0JBb0hBQW9LQ3dvTUNnY0FDZ29OQ2dzS0J3QU5DZ0FLL3drSEFBMEtDZ29BQ2djQURRb09DZ3NLQndBTkNnOEtEZ29IQUE4Sy93a0JDZ2NBRHdvTkN2OEpCd0FRQ2d3S0VRb0hBQkFLQ2dvTUNnY0FDZ3IrQ1FBS0J3QUtDaEFLL2drSEFCSUtDQW9UQ2djQUVnb0dDZ2dLQndBR0NnSUtCQW9IQUFZS0Vnb0NDZ2NBQ1FvVUNnY0tCd0FKQ2hVS0ZBb0hBQlVLQXdvRkNnY0FGUW9KQ2dNS0J3QVdDZ1VLQWdvSEFCWUtGd29GQ2djQUdBb1NDaE1LQndBWUNoa0tFZ29IQUJrS0Fnb1NDZ2NBR1FvV0NnSUtCd0FhQ2hRS0ZRb0hBQm9LR3dvVUNnY0FGd29WQ2dVS0J3QVhDaG9LRlFvSEFCd0tGd29XQ2djQUhBb2RDaGNLQndBZUNoa0tHQW9IQUI0S0h3b1pDZ2NBSHdvV0Noa0tCd0FmQ2h3S0Znb0hBQ0FLR3dvYUNnY0FJQW9oQ2hzS0J3QWRDaG9LRndvSEFCMEtJQW9hQ2djQUlnb2RDaHdLQndBaUNpTUtIUW9IQUNJS0pBb2pDZ2NBSWdvbENpUUtCd0FtQ2g4S0hnb0hBQ1lLSndvZkNnY0FKZ29vQ2ljS0J3QW1DaWtLS0FvSEFDY0tIQW9mQ2djQUp3b2lDaHdLQndBaUNpZ0tKUW9IQUNJS0p3b29DZ2NBS2dvaENpQUtCd0FxQ2lzS0lRb0hBQ3NLTEFvdENnY0FLd29xQ2l3S0J3QWpDaUFLSFFvSEFDTUtLZ29nQ2djQUtnb2tDaXdLQndBcUNpTUtKQW9IQUM0S0x3b3dDZ2NBTGdveENpOEtCd0F1Q3Y0Sk1Rb0hBQzRLQVFyK0NRY0FNZ296Q2pRS0J3QXlDalVLTXdvSEFESUtEd28xQ2djQU1nb09DZzhLQndBekNpNEtNQW9IQURNS05Rb3VDZ2NBTGdvUENnRUtCd0F1Q2pVS0R3b0hBRFlLTndvNENnY0FOZ281Q2pjS0J3QTNDaEFLRVFvSEFEY0tPUW9RQ2djQU1RbzJDaThLQndBeENqa0tOZ29IQURrSy9na1FDZ2NBT1FveEN2NEpCd0E2Q2lnS0tRb0hBRG9LT3dvb0NnY0FOQW83Q2pvS0J3QTBDak1LT3dvSEFEc0tKUW9vQ2djQU93bzhDaVVLQndBekNqd0tPd29IQURNS01BbzhDZ2NBUEFva0NpVUtCd0E4Q2owS0pBb0hBREFLUFFvOENnY0FNQW92Q2owS0J3QTlDaXdLSkFvSEFEMEtQZ29zQ2djQUx3bytDajBLQndBdkNqWUtQZ29IQUQ0S0xRb3NDZ2NBUGdvL0NpMEtCd0EyQ2o4S1Bnb0hBRFlLT0FvL0NnY0E2QWtUQ2dnS0J3RG9DZWtKRXdvSEFPb0pDQW9IQ2djQTZnbm9DUWdLQndEcENSZ0tFd29IQU9rSjZ3a1lDZ2NBN0FrYkNpRUtCd0RzQ2UwSkd3b0hBTzBKRkFvYkNnY0E3UW51Q1JRS0J3RHJDUjRLR0FvSEFPc0o3d2tlQ2djQTd3a21DaDRLQndEdkNmQUpKZ29IQVBBSktRb21DZ2NBOEFueENTa0tCd0R4Q1RvS0tRb0hBUEVKOGdrNkNnY0E4Z2swQ2pvS0J3RHlDZk1KTkFvSEFQTUpNZ28wQ2djQTh3bjBDVElLQndEMENRNEtNZ29IQVBRSjlRa09DZ2NBOVFrTENnNEtCd0QxQ2ZZSkN3b0hBUFlKREFvTENnY0E5Z24zQ1F3S0J3RDNDUkVLREFvSEFQY0orQWtSQ2djQStBazNDaEVLQndENENma0pOd29IQVBrSk9BbzNDZ2NBK1FuNkNUZ0tCd0Q2Q1Q4S09Bb0hBUG9KK3drL0NnY0Erd2t0Q2o4S0J3RDdDZndKTFFvSEFQd0pLd290Q2djQS9BbjlDU3NLQndEOUNTRUtLd29IQVAwSjdBa2hDZ2NBN2drSENoUUtCd0R1Q2VvSkJ3b0hBRUFLUVFwQ0NnY0FRQXBEQ2tFS0J3QkVDa1VLUmdvSEFFUUtSd3BGQ2djQVNBcEpDa29LQndCSUNrc0tTUW9IQUV3S1FncEJDZ2NBVEFwTkNrSUtCd0JPQ2tFS1F3b0hBRTRLVEFwQkNnY0FRZ3BQQ2tBS0J3QkNDazBLVHdvSEFGQUtVUXBTQ2djQVVBcFRDbEVLQndCVUNrWUtSUW9IQUZRS1ZRcEdDZ2NBVlFwRUNrWUtCd0JWQ2xZS1JBb0hBRmNLUlFwSENnY0FWd3BVQ2tVS0J3QktDbGdLV1FvSEFFb0tTUXBZQ2djQVdRcERDa0FLQndCWkNsZ0tRd29IQUZvS1VRcGJDZ2NBV2dwU0NsRUtCd0JhQ2tjS1JBb0hBRm9LV3dwSENnY0FYQXBKQ2tzS0J3QmNDbGdLU1FvSEFGZ0tUZ3BEQ2djQVdBcGNDazRLQndCS0NsMEtTQW9IQUVvS1dRcGRDZ2NBWFFwQUNrOEtCd0JkQ2xrS1FBb0hBRklLWGdwUUNnY0FVZ3BhQ2w0S0J3QmVDa1FLVmdvSEFGNEtXZ3BFQ2djQVJ3cGZDbGNLQndCSENsc0tYd29IQUY4S1VRcFRDZ2NBWHdwYkNsRUtCd0JRQ21BS1V3b0hBRkFLWVFwZ0NnY0FZQXBMQ2tnS0J3QmdDbUVLU3dvSEFHSUtWUXBVQ2djQVlncGpDbFVLQndCTkNtTUtZZ29IQUUwS1RBcGpDZ2NBWXdwV0NsVUtCd0JqQ21RS1Znb0hBRXdLWkFwakNnY0FUQXBPQ21RS0J3QlVDbVVLWWdvSEFGUUtWd3BsQ2djQVlncFBDazBLQndCaUNtVUtUd29IQUU0S1pncGtDZ2NBVGdwY0NtWUtCd0JrQ2w0S1Znb0hBR1FLWmdwZUNnY0FTd3BtQ2x3S0J3QkxDbUVLWmdvSEFHWUtVQXBlQ2djQVpncGhDbEFLQndCbkNrZ0tYUW9IQUdjS1lBcElDZ2NBWHdwZ0NtY0tCd0JmQ2xNS1lBb0hBR1VLWFFwUENnY0FaUXBuQ2wwS0J3QlhDbWNLWlFvSEFGY0tYd3BuQ2djQWFBcHBDbW9LQndCb0Ntc0thUW9IQUd3S2JRcHVDZ2NBYkFwdkNtMEtCd0J3Q25FS2Nnb0hBSEFLY3dweENnY0FhZ3AwQ21nS0J3QnFDblVLZEFvSEFHZ0tkZ3ByQ2djQWFBcDBDbllLQndCM0Ntb0thUW9IQUhjS2RRcHFDZ2NBZUFwNUNub0tCd0I0Q25zS2VRb0hBRzRLZkFwc0NnY0FiZ3A5Q253S0J3QnRDbjBLYmdvSEFHMEtmZ3A5Q2djQWJBcC9DbThLQndCc0Nud0tmd29IQUlBS2NncUJDZ2NBZ0Fwd0NuSUtCd0JyQ29FS2FRb0hBR3NLZ0FxQkNnY0FlQXFDQ29NS0J3QjRDbm9LZ2dvSEFHOEtnZ3B0Q2djQWJ3cURDb0lLQndCd0NvUUtjd29IQUhBS2dBcUVDZ2NBZGdxQUNtc0tCd0IyQ29RS2dBb0hBSVVLY2dweENnY0FoUXFCQ25JS0J3QnBDb1VLZHdvSEFHa0tnUXFGQ2djQWhncDZDbmtLQndDR0NvSUtlZ29IQUcwS2hncCtDZ2NBYlFxQ0NvWUtCd0NIQ204S2Z3b0hBSWNLZ3dwdkNnY0FlQXFIQ25zS0J3QjRDb01LaHdvSEFJZ0tlUXA3Q2djQWlBcUpDbmtLQndCekNvZ0tjUW9IQUhNS2lRcUlDZ2NBZlFxS0Nud0tCd0I5Q29zS2lnb0hBSXNLZFFxS0NnY0Fpd3AwQ25VS0J3QitDb3NLZlFvSEFINEtqQXFMQ2djQWpBcDBDb3NLQndDTUNuWUtkQW9IQUkwS2ZBcUtDZ2NBalFwL0Nud0tCd0IzQ29vS2RRb0hBSGNLalFxS0NnY0FqZ3AyQ293S0J3Q09Db1FLZGdvSEFJWUtqQXArQ2djQWhncU9Db3dLQndDT0NuTUtoQW9IQUk0S2lRcHpDZ2NBZVFxT0NvWUtCd0I1Q29rS2pnb0hBSEVLandxRkNnY0FjUXFJQ284S0J3Q0lDb2NLandvSEFJZ0tld3FIQ2djQWhRcU5DbmNLQndDRkNvOEtqUW9IQUk4S2Z3cU5DZ2NBandxSENuOEtCd0NRQ3BFS2tnb0hBSkFLa3dxUkNnY0FsQXFWQ3BZS0J3Q1VDcGNLbFFvSEFKZ0ttUXFhQ2djQW1BcWJDcGtLQndDY0NwSUtrUW9IQUp3S25RcVNDZ2NBbmdxUkNwTUtCd0NlQ3B3S2tRb0hBSklLbndxUUNnY0FrZ3FkQ3A4S0J3Q2dDcUVLb2dvSEFLQUtvd3FoQ2djQXBBcVdDcFVLQndDa0NxVUtsZ29IQUtVS2xBcVdDZ2NBcFFxbUNwUUtCd0NuQ3BVS2x3b0hBS2NLcEFxVkNnY0FtZ3FvQ3FrS0J3Q2FDcGtLcUFvSEFLa0trd3FRQ2djQXFRcW9DcE1LQndDcUNxRUtxd29IQUtvS29ncWhDZ2NBcWdxWENwUUtCd0NxQ3FzS2x3b0hBS3dLbVFxYkNnY0FyQXFvQ3BrS0J3Q29DcDRLa3dvSEFLZ0tyQXFlQ2djQW1ncXRDcGdLQndDYUNxa0tyUW9IQUswS2tBcWZDZ2NBclFxcENwQUtCd0NpQ3E0S29Bb0hBS0lLcWdxdUNnY0FyZ3FVQ3FZS0J3Q3VDcW9LbEFvSEFKY0tyd3FuQ2djQWx3cXJDcThLQndDdkNxRUtvd29IQUs4S3F3cWhDZ2NBb0Fxd0NxTUtCd0NnQ3JFS3NBb0hBTEFLbXdxWUNnY0FzQXF4Q3BzS0J3Q3lDcVVLcEFvSEFMSUtzd3FsQ2djQW5RcXpDcklLQndDZENwd0tzd29IQUxNS3BncWxDZ2NBc3dxMENxWUtCd0NjQ3JRS3N3b0hBSndLbmdxMENnY0FwQXExQ3JJS0J3Q2tDcWNLdFFvSEFMSUtud3FkQ2djQXNncTFDcDhLQndDZUNyWUt0QW9IQUo0S3JBcTJDZ2NBdEFxdUNxWUtCd0MwQ3JZS3Jnb0hBSnNLdGdxc0NnY0Ftd3F4Q3JZS0J3QzJDcUFLcmdvSEFMWUtzUXFnQ2djQXR3cVlDcTBLQndDM0NyQUttQW9IQUs4S3NBcTNDZ2NBcndxakNyQUtCd0MxQ3EwS253b0hBTFVLdHdxdENnY0Fwd3EzQ3JVS0J3Q25DcThLdHdvSEFMZ0t1UXE2Q2djQXVBcTdDcmtLQndDOENyMEt2Z29IQUx3S3Z3cTlDZ2NBd0FyQkNzSUtCd0RBQ3NNS3dRb0hBTVFLeFFyR0NnY0F4QXJIQ3NVS0J3REdDc2dLeVFvSEFNWUt4UXJJQ2djQXlnckRDc0FLQndES0Nzc0t3d29IQU1JS3pBck5DZ2NBd2dyQkNzd0tCd0RDQ3M0S3dBb0hBTUlLendyT0NnY0F4Z3JRQ3NRS0J3REdDdEVLMEFvSEFNa0swUXJHQ2djQXlRclNDdEVLQndEQUN0TUt5Z29IQU1BS3pnclRDZ2NBelFyUENzSUtCd0ROQ3RRS3p3b0hBTU1LMVFyQkNnY0F3d3JXQ3RVS0J3QytDdFlLdkFvSEFMNEsxUXJXQ2djQXh3clhDc1VLQndESEN0Z0sxd29IQUxrSzJBcTZDZ2NBdVFyWEN0Z0tCd0RGQ3RrS3lBb0hBTVVLMXdyWkNnY0F1d3JYQ3JrS0J3QzdDdGtLMXdvSEFNc0sxZ3JEQ2djQXl3cmFDdFlLQndDOEN0b0t2d29IQUx3SzFncmFDZ2NBd1FyYkNzd0tCd0RCQ3RVSzJ3b0hBTDBLMVFxK0NnY0F2UXJiQ3RVS0J3RGNDdDBLM2dvSEFOd0szd3JkQ2djQTRBcmhDdUlLQndEZ0N1TUs0UW9IQU9FSzVBcmlDZ2NBNFFybEN1UUtCd0RtQ3VNSzRBb0hBT1lLNXdyakNnY0EzUXJtQ3Q0S0J3RGRDdWNLNWdvSEFMOEs2QXE5Q2djQXZ3cnBDdWdLQndES0N1b0t5d29IQU1vSzZ3cnFDZ2NBMHdyckNzb0tCd0RUQ3V3SzZ3b0hBTXNLN1FyYUNnY0F5d3JxQ3UwS0J3RGFDdWtLdndvSEFOb0s3UXJwQ2djQTdncnZDdkFLQndEdUN2RUs3d29IQU4wSzd3cnhDZ2NBM1FyZkN1OEtCd0R5Q3ZNSzlBb0hBUElLOVFyekNnY0E0d3IxQ3VFS0J3RGpDdk1LOVFvSEFQWUs5UXJ5Q2djQTlncjNDdlVLQndEaEN2Y0s1UW9IQU9FSzlRcjNDZ2NBOUFyNEN2a0tCd0QwQ3ZNSytBb0hBT01LK0FyekNnY0E0d3JuQ3ZnS0J3RDVDdkVLN2dvSEFQa0srQXJ4Q2djQTNRcjRDdWNLQndEZEN2RUsrQW9IQU40SytncmNDZ2NBM2dyN0N2b0tCd0M3Q3ZvSyt3b0hBTHNLdUFyNkNnY0E0QXI4Q3YwS0J3RGdDdUlLL0FvSEFNZ0svQXJKQ2djQXlBcjlDdndLQndEa0N2d0s0Z29IQU9RSy9ncjhDZ2NBeVFyK0N0SUtCd0RKQ3Z3Sy9nb0hBUDBLNWdyZ0NnY0EvUXIvQ3VZS0J3RElDdjhLL1FvSEFNZ0syUXIvQ2djQTVncjdDdDRLQndEbUN2OEsrd29IQUxzSy93clpDZ2NBdXdyN0N2OEtCd0FBQ3dFTEFnc0hBQUFMQXdzQkN3Y0FCQXNGQ3dZTEJ3QUVDd2NMQlFzSEFPc0tDQXZxQ2djQTZ3b0pDd2dMQndBSkN3b0xDQXNIQUFrTEN3c0tDd2NBNmdvTUMrMEtCd0RxQ2dnTERBc0hBQWdMRFFzTUN3Y0FDQXNLQ3cwTEJ3RHRDZzRMNlFvSEFPMEtEQXNPQ3djQURBc1BDdzRMQndBTUN3MExEd3NIQU9rS0VBdm9DZ2NBNlFvT0N4QUxCd0FPQ3hFTEVBc0hBQTRMRHdzUkN3Y0FFZ3NUQ3hRTEJ3QVNDeFVMRXdzSEFCWUxGd3NZQ3djQUZnc1pDeGNMQndBTEN4b0xDZ3NIQUFzTEd3c2FDd2NBR3d2MENob0xCd0FiQy9JSzlBb0hBQW9MSEFzTkN3Y0FDZ3NhQ3h3TEJ3QWFDL2tLSEFzSEFCb0w5QXI1Q2djQURRc2RDdzhMQndBTkN4d0xIUXNIQUJ3TDdnb2RDd2NBSEF2NUN1NEtCd0FQQ3g0TEVRc0hBQThMSFFzZUN3Y0FIUXZ3Q2g0TEJ3QWRDKzRLOEFvSEFBSUxDUXZyQ2djQUFnc0JDd2tMQndBSkN3TUxId3NIQUFrTEFRc0RDd2NBQUF2ckN1d0tCd0FBQ3dJTDZ3b0hBQVlMQ3dzSkN3Y0FCZ3NGQ3dzTEJ3QUxDd2NMSUFzSEFBc0xCUXNIQ3djQUJBc0pDeDhMQndBRUN3WUxDUXNIQUJRTEd3c0xDd2NBRkFzVEN4c0xCd0FiQ3hVTElRc0hBQnNMRXdzVkN3Y0FFZ3NMQ3lBTEJ3QVNDeFFMQ3dzSEFCZ0w4Z29iQ3djQUdBc1hDL0lLQndEeUNoa0w5Z29IQVBJS0Z3c1pDd2NBRmdzYkN5RUxCd0FXQ3hnTEd3c0hBQ0lMeEFvakN3Y0FJZ3ZIQ3NRS0J3REVDaVFMSXdzSEFNUUswQW9rQ3djQTJBb2lDeVVMQndEWUNzY0tJZ3NIQUNZTHVnb25Dd2NBSmd1NENyb0tCd0FuQzlnS0pRc0hBQ2NMdWdyWUNnY0FLQXZjQ2lrTEJ3QW9DOThLM0FvSEFDb0x6QW9yQ3djQUtndk5Dc3dLQndBc0M4MEtLZ3NIQUN3TDFBck5DZ2NBS3d2YkNpMExCd0FyQzh3SzJ3b0hBQzBMdlFvdUN3Y0FMUXZiQ3IwS0J3QXVDK2dLTHdzSEFDNEx2UXJvQ2djQU1BdnZDakVMQndBd0MvQUs3d29IQURFTDN3b29Dd2NBTVF2dkN0OEtCd0FwQy9vS01nc0hBQ2tMM0FyNkNnY0FNZ3U0Q2lZTEJ3QXlDL29LdUFvSEFDOExFQXN6Q3djQUx3dm9DaEFMQndBekN4RUxOQXNIQURNTEVBc1JDd2NBTkFzZUN6VUxCd0EwQ3hFTEhnc0hBRFVMOEFvd0N3Y0FOUXNlQy9BS0J3QTJDeU1MTndzSEFEWUxJZ3NqQ3djQUl3czRDemNMQndBakN5UUxPQXNIQUNVTE5nczVDd2NBSlFzaUN6WUxCd0E2Q3ljTE93c0hBRG9MSmdzbkN3Y0FPd3NsQ3prTEJ3QTdDeWNMSlFzSEFEd0xLUXM5Q3djQVBBc29DeWtMQndBK0N5c0xQd3NIQUQ0TEtnc3JDd2NBUUFzcUN6NExCd0JBQ3l3TEtnc0hBRDhMTFF0QkN3Y0FQd3NyQ3kwTEJ3QkJDeTRMUWdzSEFFRUxMUXN1Q3djQVFnc3ZDME1MQndCQ0N5NExMd3NIQUVRTE1RdEZDd2NBUkFzd0N6RUxCd0JGQ3lnTFBBc0hBRVVMTVFzb0N3Y0FQUXN5QzBZTEJ3QTlDeWtMTWdzSEFFWUxKZ3M2Q3djQVJnc3lDeVlMQndCREN6TUxSd3NIQUVNTEx3c3pDd2NBUndzMEMwZ0xCd0JIQ3pNTE5Bc0hBRWdMTlF0SkN3Y0FTQXMwQ3pVTEJ3QkpDekFMUkFzSEFFa0xOUXN3Q3djQVFBdEtDeXdMQndCQUMwc0xTZ3NIQUNRTFRBczRDd2NBSkF0TkMwd0xCd0FzQzA0TDFBb0hBQ3dMU2d0T0N3Y0EwQXBOQ3lRTEJ3RFFDazhMVFFzSEFCWUxVQXNaQ3djQUZndFJDMUFMQndBaEMxRUxGZ3NIQUNFTFVndFJDd2NBR1F0VEMvWUtCd0FaQzFBTFV3c0hBQklMVkFzVkN3Y0FFZ3RWQzFRTEJ3QWdDMVVMRWdzSEFDQUxWZ3RWQ3djQUZRdFNDeUVMQndBVkMxUUxVZ3NIQUFRTFZ3c0hDd2NBQkF0WUMxY0xCd0FmQzFnTEJBc0hBQjhMV1F0WUN3Y0FCd3RXQ3lBTEJ3QUhDMWNMVmdzSEFBQUxXZ3NEQ3djQUFBdGJDMW9MQndEc0Nsc0xBQXNIQU93S1hBdGJDd2NBQXd0WkN4OExCd0FEQzFvTFdRc0hBT1FLWFF2K0NnY0E1QXBlQzEwTEJ3RCtDbDhMMGdvSEFQNEtYUXRmQ3djQTlncGdDL2NLQndEMkNsTUxZQXNIQVBjS1lRdmxDZ2NBOXdwZ0MyRUxCd0RUQ2x3TDdBb0hBTk1LWWd0Y0N3Y0E1UXBlQytRS0J3RGxDbUVMWGdzSEFOUUtZd3ZQQ2djQTFBcE9DMk1MQndET0NtSUwwd29IQU00S1pBdGlDd2NBMGdwbEM5RUtCd0RTQ2w4TFpRc0hBTkVLVHd2UUNnY0EwUXBsQzA4TEJ3RFBDbVFMemdvSEFNOEtZd3RrQ3djQVpndG5DMmdMQndCbUMya0xad3NIQUdvTGF3dHNDd2NBYWd0dEMyc0xCd0J1QzI4TGNBc0hBRzRMY1F0dkN3Y0FiQXR4QzJvTEJ3QnNDMjhMY1FzSEFISUxjd3QwQ3djQWNndDFDM01MQndCb0MzVUxaZ3NIQUdnTGN3dDFDd2NBZGd0MUMzSUxCd0IyQzNjTGRRc0hBR1lMZHd0cEN3Y0FaZ3QxQzNjTEJ3QjBDM2dMZVFzSEFIUUxjd3Q0Q3djQVp3dHpDMmdMQndCbkMzZ0xjd3NIQUhBTGVndDdDd2NBY0F0dkMzb0xCd0JyQzI4TGJBc0hBR3NMZWd0dkN3Y0FmQXR4QzI0TEJ3QjhDMzBMY1FzSEFHb0xmUXR0Q3djQWFndHhDMzBMQndCdEMzNExhd3NIQUcwTGZ3dCtDd2NBZWd1QUMzc0xCd0I2QzRFTGdBc0hBR3NMZ1F0NkN3Y0Fhd3QrQzRFTEJ3QjhDNElMZlFzSEFId0xnd3VDQ3djQWZRdC9DMjBMQndCOUM0SUxmd3NIQUg4TGhBdCtDd2NBZnd1RkM0UUxCd0NCQzRZTGdBc0hBSUVMaHd1R0N3Y0FmZ3VIQzRFTEJ3QitDNFFMaHdzSEFJTUxpQXVDQ3djQWd3dUpDNGdMQndDQ0M0VUxmd3NIQUlJTGlBdUZDd2NBaFF1S0M0UUxCd0NGQzRzTGlnc0hBSXdMaWd1TEN3Y0FqQXVOQzRvTEJ3Q0hDNDRMaGdzSEFJY0xqd3VPQ3djQWtBdU9DNDhMQndDUUM1RUxqZ3NIQUlRTGp3dUhDd2NBaEF1S0M0OExCd0NRQzRvTGpRc0hBSkFMand1S0N3Y0FpUXVTQzRnTEJ3Q0pDNU1Ma2dzSEFKUUxrd3VWQ3djQWxBdVNDNU1MQndDSUM0c0xoUXNIQUlnTGtndUxDd2NBakF1U0M1UUxCd0NNQzRzTGtnc0hBSllMbHd1WUN3Y0FsZ3VaQzVjTEJ3Qm5DNWNMbVFzSEFHY0xhUXVYQ3djQW1ndWJDNXdMQndDYUM1MExtd3NIQUhjTG13dWRDd2NBZHd0MkM1c0xCd0NYQzVvTG1Bc0hBSmNMblF1YUN3Y0Fkd3VYQzJrTEJ3QjNDNTBMbHdzSEFKNExud3VnQ3djQW5ndWhDNThMQndCNEM1NExlUXNIQUhnTG9RdWVDd2NBbnd1WkM1WUxCd0NmQzZFTG1Rc0hBR2NMb1F0NEN3Y0Fad3VaQzZFTEJ3Q1FDNklMa1FzSEFKQUxvd3VpQ3djQW93dWNDNklMQndDakM1b0xuQXNIQUkwTG93dVFDd2NBalF1a0M2TUxCd0NrQzVvTG93c0hBS1FMbUF1YUN3Y0FqQXVrQzQwTEJ3Q01DNlVMcEFzSEFLVUxtQXVrQ3djQXBRdVdDNWdMQndDVUM2VUxqQXNIQUpRTHBndWxDd2NBcGd1V0M2VUxCd0NtQzU4TGxnc0hBSlVMcGd1VUN3Y0FsUXVuQzZZTEJ3Q25DNThMcGdzSEFLY0xvQXVmQ3djQWV3dW9DM0FMQndCN0M2a0xxQXNIQUhBTHFndHVDd2NBY0F1b0M2b0xCd0NBQzZrTGV3c0hBSUFMcXd1cEN3Y0Fnd3VzQzRrTEJ3Q0RDNjBMckFzSEFId0xyUXVEQ3djQWZBdXVDNjBMQndDR0M2c0xnQXNIQUlZTHJ3dXJDd2NBamd1dkM0WUxCd0NPQzdBTHJ3c0hBSkVMc0F1T0N3Y0FrUXV4QzdBTEJ3Q2lDN0VMa1FzSEFLSUxzZ3V4Q3djQW5BdXlDNklMQndDY0M3TUxzZ3NIQUpzTHN3dWNDd2NBbXd1MEM3TUxCd0IyQzdRTG13c0hBSFlMdFF1MEN3Y0FjZ3UxQzNZTEJ3QnlDN1lMdFFzSEFIUUx0Z3R5Q3djQWRBdTNDN1lMQndCNUM3Y0xkQXNIQUhrTHVBdTNDd2NBbmd1NEMza0xCd0NlQzdrTHVBc0hBS0FMdVF1ZUN3Y0FvQXU2QzdrTEJ3Q25DN29Mb0FzSEFLY0x1d3U2Q3djQWxRdTdDNmNMQndDVkM3d0x1d3NIQUpNTHZBdVZDd2NBa3d1OUM3d0xCd0NKQzcwTGt3c0hBSWtMckF1OUN3Y0FiZ3V1QzN3TEJ3QnVDNm9McmdzSEFMNEx2QXU5Q3djQXZndS9DN3dMQndEQUM3MExyQXNIQU1BTHZndTlDd2NBdnd1N0M3d0xCd0MvQzhFTHV3c0hBTUVMdWd1N0N3Y0F3UXZDQzdvTEJ3RENDN2tMdWdzSEFNSUx3d3U1Q3djQXd3dTRDN2tMQndEREM4UUx1QXNIQU1RTHR3dTRDd2NBeEF2RkM3Y0xCd0RGQzdZTHR3c0hBTVVMeGd1MkN3Y0F4Z3UxQzdZTEJ3REdDOGNMdFFzSEFNY0x0QXUxQ3djQXh3dklDN1FMQndESUM3TUx0QXNIQU1nTHlRdXpDd2NBeVF1eUM3TUxCd0RKQzhvTHNnc0hBTW9Mc1F1eUN3Y0F5Z3ZMQzdFTEJ3RExDN0FMc1FzSEFNc0x6QXV3Q3djQXpBdXZDN0FMQndETUM4MExyd3NIQU0wTHF3dXZDd2NBelF2T0M2c0xCd0RQQzYwTHJnc0hBTThMMEF1dEN3Y0EwUXV1QzZvTEJ3RFJDODhMcmdzSEFOQUxyQXV0Q3djQTBBdkFDNndMQndET0M2a0xxd3NIQU00TDBndXBDd2NBMHd1cUM2Z0xCd0RUQzlFTHFnc0hBTklMcUF1cEN3Y0EwZ3ZUQzZnTEJ3RFVDMlVMWHdzSEFOUUwxUXRsQ3djQTFRdFBDMlVMQndEVkM5WUxUd3NIQU5jTFpBdGpDd2NBMXd2WUMyUUxCd0RZQzJJTFpBc0hBTmdMMlF0aUN3Y0EyZ3RqQzA0TEJ3RGFDOWNMWXdzSEFOa0xYQXRpQ3djQTJRdmJDMXdMQndEY0MyRUxZQXNIQU53TDNRdGhDd2NBM1F0ZUMyRUxCd0RkQzk0TFhnc0hBTjhMWUF0VEN3Y0Ezd3ZjQzJBTEJ3RGdDMThMWFFzSEFPQUwxQXRmQ3djQTNndGRDMTRMQndEZUMrQUxYUXNIQU5zTFd3dGNDd2NBMnd2aEMxc0xCd0RoQzFvTFd3c0hBT0VMNGd0YUN3Y0E0Z3RaQzFvTEJ3RGlDK01MV1FzSEFPTUxXQXRaQ3djQTR3dmtDMWdMQndEa0MxY0xXQXNIQU9RTDVRdFhDd2NBNVF0V0MxY0xCd0RsQytZTFZnc0hBT1lMVlF0V0N3Y0E1Z3ZuQzFVTEJ3RG5DMVFMVlFzSEFPY0w2QXRVQ3djQTZBdFNDMVFMQndEb0Mra0xVZ3NIQU9vTFV3dFFDd2NBNmd2ZkMxTUxCd0RwQzFFTFVnc0hBT2tMNnd0UkN3Y0E2d3RRQzFFTEJ3RHJDK29MVUFzSEFOWUxUUXRQQ3djQTFndnNDMDBMQndEdEMwNExTZ3NIQU8wTDJndE9Dd2NBN0F0TUMwMExCd0RzQys0TFRBc0hBTzhMU2d0TEN3Y0E3d3Z0QzBvTEJ3RHdDL0VMOGdzSEFQQUw4d3Z4Q3djQTlBdjFDL1lMQndEMEMvY0w5UXNIQVBnTCtRdjZDd2NBK0F2N0Mva0xCd0Q4Qy8wTC9nc0hBUHdML3d2OUN3Y0FBQXorQ3dFTUJ3QUFEUHdML2dzSEFQc0xBZ3o1Q3djQSt3c0REQUlNQndBRURQb0xCUXdIQUFRTStBdjZDd2NBQmd6NkMva0xCd0FHREFjTStnc0hBQWdNL2d2OUN3Y0FDQXdKRFA0TEJ3QUpEQUVNL2dzSEFBa01DZ3dCREFjQUN3ejVDd0lNQndBTERBWU0rUXNIQUFjTUJRejZDd2NBQnd3TURBVU1Cd0FORFBzTCtBc0hBQTBNRGd6N0N3Y0FEZ3oyQy9VTEJ3QU9EQTBNOWdzSEFBOE0vd3Y4Q3djQUR3d1FEUDhMQndBUURQQUw4Z3NIQUJBTUR3endDd2NBRVF6OEN3QU1Cd0FSREE4TS9Bc0hBQThNOHd2d0N3Y0FEd3dSRFBNTEJ3QU9EQU1NK3dzSEFBNE1FZ3dEREFjQUVnejFDL2NMQndBU0RBNE05UXNIQUJNTStBc0VEQWNBRXd3TkRQZ0xCd0FORFBRTDlnc0hBQTBNRXd6MEN3Y0FGQXdWREJZTUJ3QVVEQmNNRlF3SEFCZ01HUXdhREFjQUdBd2JEQmtNQndBY0RCZ01HZ3dIQUJ3TUhRd1lEQWNBR3d3ZURCa01Cd0FiREI4TUhnd0hBQjRNRkF3V0RBY0FIZ3dmREJRTUJ3QWdEUGNMOUFzSEFDQU1JUXozQ3djQUlnd0NEQU1NQndBaURDTU1BZ3dIQUNNTUN3d0NEQWNBSXd3a0RBc01Cd0FsREFNTUVnd0hBQ1VNSWd3RERBY0FJUXdTRFBjTEJ3QWhEQ1VNRWd3SEFDWU1Kd3dvREFjQUpnd3BEQ2NNQndBbURCUU1LUXdIQUNZTUZ3d1VEQWNBS2d3ckRDd01Cd0FxREMwTUt3d0hBQzBNR3d3WURBY0FMUXdxREJzTUJ3QXREQzRNS3d3SEFDME1Md3d1REFjQUx3d1lEQjBNQndBdkRDME1HQXdIQURBTUxBd3hEQWNBTUF3cURDd01Cd0F3REJzTUtnd0hBREFNSHd3YkRBY0FLUXd4RENjTUJ3QXBEREFNTVF3SEFEQU1GQXdmREFjQU1Bd3BEQlFNQndBeURCWU1GUXdIQURJTU13d1dEQWNBTWd6ekN6TU1Cd0F5RFBFTDh3c0hBRFFNR1F3MURBY0FOQXdhREJrTUJ3QTBEQUFNQVF3SEFEUU1OUXdBREFjQU5Bd2NEQm9NQndBMEREWU1IQXdIQURZTUFRd0tEQWNBTmd3MERBRU1Cd0FlRERVTUdRd0hBQjRNTnd3MURBY0FOd3dBRERVTUJ3QTNEQkVNQUF3SEFETU1IZ3dXREFjQU13dzNEQjRNQndBM0RQTUxFUXdIQURjTU13enpDd2NBT0F3NUREb01Cd0E0RERzTU9Rd0hBRHdNUFF3K0RBY0FQQXcvREQwTUJ3QkFEQ01NSWd3SEFFQU1RUXdqREFjQVFneEJERUFNQndCQ0RFTU1RUXdIQUVRTUlnd2xEQWNBUkF4QURDSU1Cd0JGREVBTVJBd0hBRVVNUWd4QURBY0FSZ3dsRENFTUJ3QkdERVFNSlF3SEFFY01SQXhHREFjQVJ3eEZERVFNQndCSURDRU1JQXdIQUVnTVJnd2hEQWNBU1F4R0RFZ01Cd0JKREVjTVJnd0hBRW9NU3d4TURBY0FTZ3hOREVzTUJ3Qk9ERThNVUF3SEFFNE1VUXhQREFjQVVneERERUlNQndCU0RGTU1Rd3dIQUN3TVV3eFNEQWNBTEF3ckRGTU1Cd0JVREVJTVJRd0hBRlFNVWd4Q0RBY0FNUXhTREZRTUJ3QXhEQ3dNVWd3SEFGVU1SUXhIREFjQVZReFVERVVNQndBbkRGUU1WUXdIQUNjTU1ReFVEQWNBVmd4SERFa01Cd0JXREZVTVJ3d0hBQ2dNVlF4V0RBY0FLQXduREZVTUJ3QkJERG9NSXd3SEFFRU1PQXc2REFjQU93eEJERmNNQndBN0REZ01RUXdIQUNNTU9Rd2tEQWNBSXd3NkREa01Cd0JEREQ0TVFRd0hBRU1NUEF3K0RBY0FQd3hEREZnTUJ3QS9ERHdNUXd3SEFFRU1QUXhYREFjQVFRdytERDBNQndCVERFd01Rd3dIQUZNTVNneE1EQWNBVFF4VERGa01Cd0JOREVvTVV3d0hBRU1NU3d4WURBY0FRd3hNREVzTUJ3QXJERkFNVXd3SEFDc01UZ3hRREFjQVVRd3JEQzRNQndCUkRFNE1Ld3dIQUZNTVR3eFpEQWNBVXd4UURFOE1Cd0Q5QzFvTVd3d0hBUDBML3d0YURBY0FYQXo5QzFzTUJ3QmNEQWdNL1FzSEFGb01FQXhkREFjQVdnei9DeEFNQndEeUMxNE1Yd3dIQVBJTDhRdGVEQWNBRUF4ZkRGME1Cd0FRRFBJTFh3d0hBQlVNWUF4aERBY0FGUXdYREdBTUJ3QUVER0lNWXd3SEFBUU1CUXhpREFjQUJReGtER0lNQndBRkRBd01aQXdIQUJNTVl3eGxEQWNBRXd3RURHTU1Cd0QwQzJVTVpnd0hBUFFMRXd4bERBY0FJQXhtREdjTUJ3QWdEUFFMWmd3SEFDWU1hQXhwREFjQUpnd29ER2dNQndBWERHa01ZQXdIQUJjTUpneHBEQWNBTWd4aERHb01Cd0F5REJVTVlRd0hBUEVMYWd4ZURBY0E4UXN5REdvTUJ3QklER2NNYXd3SEFFZ01JQXhuREFjQVNReHJER3dNQndCSkRFZ01hd3dIQUZZTWJBeHREQWNBVmd4SkRHd01Cd0FvREcwTWFBd0hBQ2dNVmd4dERBY0FXd3h1REc4TUJ3QmJERm9NYmd3SEFIQU1Xd3h2REFjQWNBeGNERnNNQndCdURGME1jUXdIQUc0TVdneGREQWNBWHd4eURITU1Cd0JmREY0TWNnd0hBRjBNY3d4eERBY0FYUXhmREhNTUJ3QmhESFFNZFF3SEFHRU1ZQXgwREFjQVl3eDJESGNNQndCakRHSU1kZ3dIQUdJTWVBeDJEQWNBWWd4a0RIZ01Cd0JsREhjTWVRd0hBR1VNWXd4M0RBY0FaZ3g1REhvTUJ3Qm1ER1VNZVF3SEFHY01lZ3g3REFjQVp3eG1ESG9NQndCcERId01mUXdIQUdrTWFBeDhEQWNBWUF4OURIUU1Cd0JnREdrTWZRd0hBR29NZFF4K0RBY0FhZ3hoREhVTUJ3QmVESDRNY2d3SEFGNE1hZ3grREFjQWF3eDdESDhNQndCckRHY01ld3dIQUd3TWZ3eUFEQWNBYkF4ckRIOE1Cd0J0RElBTWdRd0hBRzBNYkF5QURBY0FhQXlCREh3TUJ3Qm9ERzBNZ1F3SEFJSU1lQXhrREFjQWdneURESGdNQndDRURGd01jQXdIQUlRTWhReGNEQWNBaGd4a0RBd01Cd0NHRElJTVpBd0hBSVVNQ0F4Y0RBY0FoUXlIREFnTUJ3Q0lERThNVVF3SEFJZ01pUXhQREFjQWlReFpERThNQndDSkRJb01XUXdIQUlzTVVRd3VEQWNBaXd5SURGRU1Cd0NNREVzTVRRd0hBSXdNalF4TERBY0FqUXhZREVzTUJ3Q05ESTRNV0F3SEFJb01UUXhaREFjQWlneU1ERTBNQndDUEREME1Qd3dIQUk4TWtBdzlEQWNBa0F4WEREME1Cd0NRREpFTVZ3d0hBSTRNUHd4WURBY0FqZ3lQREQ4TUJ3Q1NERGtNT3d3SEFKSU1rd3c1REFjQWt3d2tERGtNQndDVERKUU1KQXdIQUpFTU93eFhEQWNBa1F5U0REc01Cd0NWREJ3TU5nd0hBSlVNbGd3Y0RBY0Fsd3cyREFvTUJ3Q1hESlVNTmd3SEFKZ01MZ3d2REFjQW1BeUxEQzRNQndDWkRDOE1IUXdIQUprTW1Bd3ZEQWNBbEF3TERDUU1Cd0NVREpvTUN3d0hBSllNSFF3Y0RBY0FsZ3laREIwTUJ3Q2JEQXdNQnd3SEFKc01oZ3dNREFjQW1nd0dEQXNNQndDYURKd01CZ3dIQUowTUNnd0pEQWNBblF5WERBb01Cd0NIREFrTUNBd0hBSWNNblF3SkRBY0FuQXdIREFZTUJ3Q2NESnNNQnd3SEFKNE1ud3lnREFjQW5neWhESjhNQndDaURLTU1wQXdIQUtJTXBReWpEQWNBcGd5bkRLZ01Cd0NtREtrTXB3d0hBS2tNcEF5akRBY0FxUXltREtRTUJ3Q3FES3NNckF3SEFLb01yUXlyREFjQXJReWdESjhNQndDdERLb01vQXdIQUswTXJneXJEQWNBclF5dkRLNE1Cd0N2REo4TW9Rd0hBSzhNclF5ZkRBY0FzQXlzRExFTUJ3Q3dES29NckF3SEFLb01uZ3lnREFjQXFneXdESjRNQndDeURLZ01zd3dIQUxJTXBneW9EQWNBcGd5aURLUU1Cd0NtRExJTW9nd0hBS2tNdEF5bkRBY0FxUXkxRExRTUJ3QzFES01NcFF3SEFMVU1xUXlqREFjQXRneWxES0lNQndDMkRMY01wUXdIQUxnTXNneXpEQWNBdUF5NURMSU1Cd0M1REtJTXNnd0hBTGtNdGd5aURBY0F1Z3kwRExVTUJ3QzZETHNNdEF3SEFMY010UXlsREFjQXR3eTZETFVNQndDOERMY010Z3dIQUx3TXZReTNEQWNBdmd5NURMZ01Cd0MrREw4TXVRd0hBTDhNdGd5NURBY0F2d3k4RExZTUJ3REFETHNNdWd3SEFNQU13UXk3REFjQXZReTZETGNNQndDOURNQU11Z3dIQU1JTXZReThEQWNBd2d6RERMME1Cd0RDRE1RTXd3d0hBTUlNeFF6RURBY0F4Z3kvREw0TUJ3REdETWNNdnd3SEFNWU15QXpIREFjQXhnekpETWdNQndESERMd012d3dIQU1jTXdneThEQWNBd2d6SURNVU1Cd0RDRE1jTXlBd0hBTW9Nd1F6QURBY0F5Z3pMRE1FTUJ3RExETXdNelF3SEFNc015Z3pNREFjQXd3ekFETDBNQndERERNb013QXdIQU1vTXhBek1EQWNBeWd6RERNUU1Cd0RPRE04TTBBd0hBTTRNMFF6UERBY0F6Z3llRE5FTUJ3RE9ES0VNbmd3SEFOSU0wd3pVREFjQTBnelZETk1NQndEU0RLOE0xUXdIQU5JTXJneXZEQWNBMHd6T0ROQU1Cd0RURE5VTXpnd0hBTTRNcnd5aERBY0F6Z3pWREs4TUJ3RFdETmNNMkF3SEFOWU0yUXpYREFjQTF3eXdETEVNQndEWEROa01zQXdIQU5FTTFnelBEQWNBMFF6WkROWU1Cd0RaREo0TXNBd0hBTmtNMFF5ZURBY0EyZ3pJRE1rTUJ3RGFETnNNeUF3SEFOUU0yd3phREFjQTFBelRETnNNQndEYkRNVU15QXdIQU5zTTNBekZEQWNBMHd6Y0ROc01Cd0RURE5BTTNBd0hBTndNeEF6RkRBY0EzQXpkRE1RTUJ3RFFETjBNM0F3SEFOQU16d3pkREFjQTNRek1ETVFNQndEZERONE16QXdIQU04TTNnemREQWNBend6V0RONE1Cd0RlRE0wTXpBd0hBTjRNM3d6TkRBY0ExZ3pmRE40TUJ3RFdETmdNM3d3SEFPQU1zd3lvREFjQTRBemhETE1NQndEaURLZ01wd3dIQU9JTTRBeW9EQWNBNFF5NERMTU1Cd0RoRE9NTXVBd0hBT1FNdXd6QkRBY0E1QXpsRExzTUJ3RGxETFFNdXd3SEFPVU01Z3kwREFjQTR3eStETGdNQndEakRPY012Z3dIQU9jTXhneStEQWNBNXd6b0RNWU1Cd0RvRE1rTXhnd0hBT2dNNlF6SkRBY0E2UXphRE1rTUJ3RHBET29NMmd3SEFPb00xQXphREFjQTZnenJETlFNQndEckROSU0xQXdIQU9zTTdBelNEQWNBN0F5dUROSU1Cd0RzRE8wTXJnd0hBTzBNcXd5dURBY0E3UXp1REtzTUJ3RHVES3dNcXd3SEFPNE03d3lzREFjQTd3eXhES3dNQndEdkRQQU1zUXdIQVBBTTF3eXhEQWNBOEF6eEROY01Cd0R4RE5nTTF3d0hBUEVNOGd6WURBY0E4Z3pmRE5nTUJ3RHlEUE1NM3d3SEFQTU16UXpmREFjQTh3ejBETTBNQndEMERNc016UXdIQVBRTTlRekxEQWNBOVF6QkRNc01Cd0QxRE9RTXdRd0hBT1lNcHd5MERBY0E1Z3ppREtjTUJ3RDBETDRMOVF3SEFQUU12d3UrQ3djQTlRekFDK1FNQndEMURMNEx3QXNIQVBNTXZ3djBEQWNBOHd6QkM3OExCd0R5RE1FTDh3d0hBUElNd2d2QkN3Y0E4UXpDQy9JTUJ3RHhETU1Md2dzSEFQQU13d3Z4REFjQThBekVDOE1MQndEdkRNUUw4QXdIQU84TXhRdkVDd2NBN2d6RkMrOE1Cd0R1RE1ZTHhRc0hBTzBNeGd2dURBY0E3UXpIQzhZTEJ3RHNETWNMN1F3SEFPd015QXZIQ3djQTZ3eklDK3dNQndEckRNa0x5QXNIQU9vTXlRdnJEQWNBNmd6S0M4a0xCd0RwRE1vTDZnd0hBT2tNeXd2S0N3Y0E2QXpMQytrTUJ3RG9ETXdMeXdzSEFPY016QXZvREFjQTV3ek5DOHdMQndEakRNMEw1d3dIQU9NTXpndk5Dd2NBNVF6UEMrWU1Cd0RsRE5BTHp3c0hBT1lNMFF2aURBY0E1Z3pQQzlFTEJ3RGtETkFMNVF3SEFPUU13QXZRQ3djQTRRek9DK01NQndEaEROSUx6Z3NIQU9JTTB3dmdEQWNBNGd6UkM5TUxCd0RnRE5JTDRRd0hBT0FNMHd2U0N3Y0FuUXpVQzVjTUJ3Q2RETlVMMUFzSEFJY00xUXVkREFjQWh3eldDOVVMQndDY0ROY0xtd3dIQUp3TTJBdlhDd2NBbWd6WUM1d01Cd0NhRE5rTDJBc0hBSnNNMmd1R0RBY0Ftd3pYQzlvTEJ3Q1VETmtMbWd3SEFKUU0yd3ZaQ3djQW1RemNDNWdNQndDWkROMEwzQXNIQUpZTTNRdVpEQWNBbGd6ZUM5MExCd0NZRE44TGl3d0hBSmdNM0F2ZkN3Y0Fsd3pnQzVVTUJ3Q1hETlFMNEFzSEFKVU0zZ3VXREFjQWxRemdDOTRMQndDVEROc0xsQXdIQUpNTTRRdmJDd2NBa2d6aEM1TU1Cd0NTRE9JTDRRc0hBSkVNNGd1U0RBY0FrUXpqQytJTEJ3Q1FET01Ma1F3SEFKQU01QXZqQ3djQWp3emtDNUFNQndDUERPVUw1QXNIQUk0TTVRdVBEQWNBamd6bUMrVUxCd0NORE9ZTGpnd0hBSTBNNXd2bUN3Y0FqQXpuQzQwTUJ3Q01ET2dMNXdzSEFJb002QXVNREFjQWlnenBDK2dMQndDTERPb0xpQXdIQUlzTTN3dnFDd2NBaVF6cEM0b01Cd0NKRE9zTDZRc0hBSWdNNnd1SkRBY0FpQXpxQytzTEJ3Q0ZETllMaHd3SEFJVU03QXZXQ3djQWhnenRDNElNQndDR0ROb0w3UXNIQUlRTTdBdUZEQWNBaEF6dUMrd0xCd0NDRE84TGd3d0hBSUlNN1F2dkN3Y0E5Z3ozRFBnTUJ3RDJEUGtNOXd3SEFQb00rd3o4REFjQStnejlEUHNNQndEK0RQOE1BQTBIQVA0TUFRMy9EQWNBK0F3Q0RmWU1Cd0Q0REFNTkFnMEhBUFlNQkEzNURBY0E5Z3dDRFFRTkJ3QUZEZmdNOXd3SEFBVU5BdzM0REFjQUJnMEhEUWdOQndBR0RRa05CdzBIQVB3TUNnMzZEQWNBL0F3TERRb05Cd0Q3REFzTi9Bd0hBUHNNREEwTERRY0ErZ3dORGYwTUJ3RDZEQW9ORFEwSEFBNE5BQTBQRFFjQURnMytEQUFOQndENURBOE45d3dIQVBrTURnMFBEUWNBQmcwUURSRU5Cd0FHRFFnTkVBMEhBUDBNRUEzN0RBY0EvUXdSRFJBTkJ3RCtEQklOQVEwSEFQNE1EZzBTRFFjQUJBME9EZmtNQndBRURSSU5EZzBIQUJNTkFBMy9EQWNBRXcwUERRQU5Cd0QzREJNTkJRMEhBUGNNRHcwVERRY0FGQTBJRFFjTkJ3QVVEUkFOQ0EwSEFQc01GQTBNRFFjQSt3d1FEUlFOQndBVkRmME1EUTBIQUJVTkVRMzlEQWNBQmcwVkRRa05Cd0FHRFJFTkZRMEhBQllOQncwSkRRY0FGZzBYRFFjTkJ3QUJEUllOL3d3SEFBRU5GdzBXRFFjQUN3MFlEUW9OQndBTERSa05HQTBIQUJrTkF3MFlEUWNBR1EwQ0RRTU5Cd0FNRFJrTkN3MEhBQXdOR2cwWkRRY0FHZzBDRFJrTkJ3QWFEUVFOQWcwSEFCc05DZzBZRFFjQUd3ME5EUW9OQndBRkRSZ05BdzBIQUFVTkd3MFlEUWNBSEEwRURSb05Cd0FjRFJJTkJBMEhBQlFOR2cwTURRY0FGQTBjRFJvTkJ3QWNEUUVORWcwSEFCd05GdzBCRFFjQUJ3MGNEUlFOQndBSERSY05IQTBIQVA4TUhRMFREUWNBL3d3V0RSME5Cd0FXRFJVTkhRMEhBQllOQ1EwVkRRY0FFdzBiRFFVTkJ3QVREUjBOR3cwSEFCME5EUTBiRFFjQUhRMFZEUTBOQndBZURSOE5JQTBIQUI0TklRMGZEUWNBSUEwaURTTU5Cd0FnRFI4TklnMEhBQ01OSkEwbERRY0FJdzBpRFNRTkJ3QWxEU1lOSncwSEFDVU5KQTBtRFFjQUp3MG9EU2tOQndBbkRTWU5LQTBIQUNBTktnMGVEUWNBSUEwckRTb05Cd0FqRFNzTklBMEhBQ01OTEEwckRRY0FKUTBzRFNNTkJ3QWxEUzBOTEEwSEFDY05MUTBsRFFjQUp3MHVEUzBOQndBcERTNE5KdzBIQUNrTkx3MHVEUWNBSmcwd0RTZ05Cd0FtRFRFTk1BMEhBREVOTWcwd0RRY0FNUTB6RFRJTkJ3QWtEVEVOSmcwSEFDUU5OQTB4RFFjQU5BMHpEVEVOQndBMERUVU5NdzBIQUNJTk5BMGtEUWNBSWcwMkRUUU5Cd0EyRFRVTk5BMEhBRFlOTncwMURRY0FIdzAyRFNJTkJ3QWZEVGdOTmcwSEFEZ05OdzAyRFFjQU9BMDVEVGNOQndBaERUZ05IdzBIQUNFTk9nMDREUWNBT2cwNURUZ05Cd0E2RFRzTk9RMEhBQ3NOUEEwcURRY0FLdzA5RFR3TkJ3QTlEVDROUEEwSEFEME5QdzArRFFjQUxBMDlEU3NOQndBc0RVQU5QUTBIQUVBTlB3MDlEUWNBUUExQkRUOE5Cd0F0RFVBTkxBMEhBQzBOUWcxQURRY0FRZzFCRFVBTkJ3QkNEVU1OUVEwSEFDNE5RZzB0RFFjQUxnMUVEVUlOQndCRURVTU5RZzBIQUVRTlJRMUREUWNBTHcxRURTNE5Cd0F2RFVZTlJBMEhBRVlOUlExRURRY0FSZzFIRFVVTkJ3QXBEVVlOTHcwSEFDa05TQTFHRFFjQVNBMUhEVVlOQndCSURVa05SdzBIQUNnTlNBMHBEUWNBS0ExS0RVZ05Cd0JLRFVrTlNBMEhBRW9OU3cxSkRRY0FNQTFLRFNnTkJ3QXdEVXdOU2cwSEFFd05TdzFLRFFjQVRBMU5EVXNOQndBeURVd05NQTBIQURJTlRnMU1EUWNBVGcxTkRVd05Cd0JPRFU4TlRRMEhBQ29OVUEwZURRY0FLZzA4RFZBTkJ3QThEVkVOVUEwSEFEd05QZzFSRFFjQUhnMVNEU0VOQndBZURWQU5VZzBIQUZBTlV3MVNEUWNBVUExUkRWTU5Cd0FoRFZRTk9nMEhBQ0VOVWcxVURRY0FVZzFWRFZRTkJ3QlNEVk1OVlEwSEFEb05WZzA3RFFjQU9nMVVEVllOQndCVURWY05WZzBIQUZRTlZRMVhEUWNBV0ExWkRWb05Cd0JZRFZzTldRMEhBRndOV3cxWURRY0FYQTFkRFZzTkJ3QmVEVjBOWEEwSEFGNE5YdzFkRFFjQVlBMWhEV0lOQndCZ0RXTU5ZUTBIQUdRTll3MWxEUWNBWkExaERXTU5Cd0JtRFdNTllBMEhBR1lOWncxakRRY0FaUTFuRFdnTkJ3QmxEV01OWncwSEFHa05adzFtRFFjQWFRMXFEV2NOQndCb0RXb05hdzBIQUdnTlp3MXFEUWNBV3cxc0RWa05Cd0JiRFcwTmJBMEhBRzBOYXcxc0RRY0FiUTFvRFdzTkJ3QmREVzBOV3cwSEFGME5iZzF0RFFjQWJnMW9EVzBOQndCdURXVU5hQTBIQUY4TmJnMWREUWNBWHcxdkRXNE5Cd0J2RFdVTmJnMEhBRzhOWkExbERRY0FhUTF3RFdvTkJ3QnBEWEVOY0EwSEFIRU5jZzF3RFFjQWNRMXpEWElOQndCbURYRU5hUTBIQUdZTmRBMXhEUWNBZEExekRYRU5Cd0IwRFhVTmN3MEhBR0FOZEExbURRY0FZQTEyRFhRTkJ3QjJEWFVOZEEwSEFIWU5kdzExRFFjQVlnMTJEV0FOQndCaURYZ05kZzBIQUhnTmR3MTJEUWNBZUExNURYY05Cd0JoRFhnTllnMEhBR0VOZWcxNERRY0FlZzE1RFhnTkJ3QjZEWHNOZVEwSEFHUU5lZzFoRFFjQVpBMThEWG9OQndCOERYc05lZzBIQUh3TmZRMTdEUWNBYncxOERXUU5Cd0J2RFg0TmZBMEhBSDROZlExOERRY0FmZzEvRFgwTkJ3QmZEWDROYncwSEFGOE5nQTErRFFjQWdBMS9EWDROQndDQURZRU5mdzBIQUY0TmdBMWZEUWNBWGcyQ0RZQU5Cd0NDRFlFTmdBMEhBSUlOZ3cyQkRRY0FYQTJDRFY0TkJ3QmNEWVFOZ2cwSEFJUU5ndzJDRFFjQWhBMkZEWU1OQndCWURZUU5YQTBIQUZnTmhnMkVEUWNBaGcyRkRZUU5Cd0NHRFljTmhRMEhBRm9OaGcxWURRY0FXZzJJRFlZTkJ3Q0lEWWNOaGcwSEFJZ05pUTJIRFFjQVdRMklEVm9OQndCWkRZb05pQTBIQUlvTmlRMklEUWNBaWcyTERZa05Cd0JzRFlvTldRMEhBR3dOakEyS0RRY0FqQTJMRFlvTkJ3Q01EWTBOaXcwSEFHc05qQTFzRFFjQWF3Mk9EWXdOQndDT0RZME5qQTBIQUk0Tmp3Mk5EUWNBYWcyT0RXc05Cd0JxRFhBTmpnMEhBSEFOancyT0RRY0FjQTF5RFk4TkJ3Q1FEWkVOa2cwSEFKQU5rdzJSRFFjQWxBMlNEWlVOQndDVURaQU5rZzBIQUpZTmxRMlhEUWNBbGcyVURaVU5Cd0NZRFpjTm1RMEhBSmdObGcyWERRY0FtZzJaRFpzTkJ3Q2FEWmdObVEwSEFKd05rZzJSRFFjQW5BMmREWklOQndDZERaVU5rZzBIQUowTm5nMlZEUWNBbmcyWERaVU5Cd0NlRFo4Tmx3MEhBSjhObVEyWERRY0FudzJnRFprTkJ3Q2dEWnNObVEwSEFLQU5vUTJiRFFjQW9nMllEWm9OQndDaURhTU5tQTBIQURJTm93MmlEUWNBTWcwekRhTU5Cd0NqRFpZTm1BMEhBS01OcEEyV0RRY0FNdzJrRGFNTkJ3QXpEVFVOcEEwSEFLUU5sQTJXRFFjQXBBMmxEWlFOQndBMURhVU5wQTBIQURVTk53MmxEUWNBcFEyUURaUU5Cd0NsRGFZTmtBMEhBRGNOcGcybERRY0FOdzA1RGFZTkJ3Q21EWk1Oa0EwSEFLWU5wdzJURFFjQU9RMm5EYVlOQndBNURUc05wdzBIQUtnTm5RMmNEUWNBcUEycERaME5Cd0NxRGFrTnFBMEhBS29OcXcycERRY0FxUTJlRFowTkJ3Q3BEYXdObmcwSEFLc05yQTJwRFFjQXF3MnREYXdOQndDc0RaOE5uZzBIQUt3TnJnMmZEUWNBclEydURhd05Cd0N0RGE4TnJnMEhBSzROb0EyZkRRY0FyZzJ3RGFBTkJ3Q3ZEYkFOcmcwSEFLOE5zUTJ3RFFjQXNBMmhEYUFOQndDd0RiSU5vUTBIQUxFTnNnMndEUWNBc1EyekRiSU5Cd0N5RFpzTm9RMEhBTElOdEEyYkRRY0FzdzIwRGJJTkJ3Q3pEYlVOdEEwSEFMUU5tZzJiRFFjQXRBMjJEWm9OQndDMURiWU50QTBIQUxVTnR3MjJEUWNBdGcyaURab05Cd0MyRGJnTm9nMEhBTGNOdUEyMkRRY0F0dzI1RGJnTkJ3QzREVElOb2cwSEFMZ05UZzB5RFFjQXVRMU9EYmdOQndDNURVOE5UZzBIQUxvTm5BMlJEUWNBdWcyb0Rad05Cd0M3RGFnTnVnMEhBTHNOcWcyb0RRY0F2QTJSRFpNTkJ3QzhEYm9Oa1EwSEFMME51ZzI4RFFjQXZRMjdEYm9OQndDK0RaTU5wdzBIQUw0TnZBMlREUWNBdncyOERiNE5Cd0MvRGIwTnZBMEhBRllOcHcwN0RRY0FWZzIrRGFjTkJ3QlhEYjROVmcwSEFGY052dzIrRFFjQXdBM0JEY0lOQndEQURjTU53UTBIQU1NTnhBM0JEUWNBd3czRkRjUU5Cd0RGRGNZTnhBMEhBTVVOeHczR0RRY0F5QTNKRGNvTkJ3RElEY3NOeVEwSEFNc056QTNORFFjQXl3M0lEY3dOQndETERjNE55UTBIQU1zTnp3M09EUWNBenczTkRkQU5Cd0RQRGNzTnpRMEhBTThOMFEzT0RRY0F6dzNTRGRFTkJ3RFNEZEFOMHcwSEFOSU56dzNRRFFjQTFBM0REY0FOQndEVURkVU53dzBIQU5NTjFRM1VEUWNBMHczUURkVU5Cd0RWRGNVTnd3MEhBTlVOMWczRkRRY0EwQTNXRGRVTkJ3RFFEYzBOMWcwSEFOWU54dzNGRFFjQTFnM1hEY2NOQndETkRkY04xZzBIQU0wTnpBM1hEUWNBMkEzUkRkSU5Cd0RZRGRrTjBRMEhBTm9OMlEzWURRY0EyZzNiRGRrTkJ3RFpEYzROMFEwSEFOa04zQTNPRFFjQTJ3M2NEZGtOQndEYkRkME4zQTBIQU53TnlRM09EUWNBM0EzZURja05Cd0RkRGQ0TjNBMEhBTjBOM3czZURRY0EzZzNLRGNrTkJ3RGVEZUFOeWcwSEFOOE40QTNlRFFjQTN3M2hEZUFOQndEZ0RjZ055ZzBIQU9BTjRnM0lEUWNBNFEzaURlQU5Cd0RoRGVNTjRnMEhBT0lOekEzSURRY0E0ZzNrRGN3TkJ3RGpEZVFONGcwSEFPTU41UTNrRFFjQTVBM1hEY3dOQndEa0RlWU4xdzBIQU9VTjVnM2tEUWNBNVEzbkRlWU5Cd0RtRGNjTjF3MEhBT1lONkEzSERRY0E1dzNvRGVZTkJ3RG5EZWtONkEwSEFPZ054ZzNIRFFjQTZBM3FEY1lOQndEcERlb042QTBIQU9rTjZ3M3FEUWNBNmczRURjWU5Cd0RxRGV3TnhBMEhBT3NON0EzcURRY0E2dzN0RGV3TkJ3RHNEY0VOeEEwSEFPd043ZzNCRFFjQTdRM3VEZXdOQndEdERlOE43ZzBIQU80TndnM0JEUWNBN2czd0RjSU5Cd0R2RGZBTjdnMEhBTzhOOFEzd0RRY0E4QTNBRGNJTkJ3RHdEZklOd0EwSEFQRU44ZzN3RFFjQThRM3pEZklOQndEeURkUU53QTBIQVBJTjlBM1VEUWNBOHczMERmSU5Cd0R6RGZVTjlBMEhBUFFOMHczVURRY0E5QTMyRGRNTkJ3RDFEZllOOUEwSEFQVU45dzMyRFFjQTlnM1NEZE1OQndEMkRkZ04wZzBIQVBjTjJBMzJEUWNBOXczYURkZ05Cd0Q0RGZrTitnMEhBUGdOK3czNURRY0ErUTM4RGYwTkJ3RDVEZnNOL0EwSEFQME4vZzMvRFFjQS9RMzhEZjROQndEL0RRQU9BUTRIQVA4Ti9nMEFEZ2NBQWc0QURnTU9Cd0FDRGdFT0FBNEhBQVFPQXc0RkRnY0FCQTRDRGdNT0J3QUdEZ1VPQnc0SEFBWU9CQTRGRGdjQUNBNEhEZ2tPQndBSURnWU9CdzRIQUFvT0NBNEpEZ2NBQ2c0TERnZ09Cd0FNRGdvT0RRNEhBQXdPQ3c0S0RnY0FEZzRNRGcwT0J3QU9EZzhPREE0SEFCQU9EdzRPRGdjQUVBNFJEZzhPQndBU0RoRU9FQTRIQUJJT0V3NFJEZ2NBRkE0VERoSU9Cd0FVRGhVT0V3NEhBQlFPRmc0VkRnY0FGQTRYRGhZT0J3QVhEdm9ORmc0SEFCY08rQTM2RFFjQUdBNFpEaG9PQndBWURoc09HUTRIQUJrT0hBNGREZ2NBR1E0YkRod09Cd0FkRGg0T0h3NEhBQjBPSEE0ZURnY0FIdzRnRGlFT0J3QWZEaDRPSUE0SEFDRU9JZzRqRGdjQUlRNGdEaUlPQndBakRpUU9KUTRIQUNNT0lnNGtEZ2NBSlE0bURpY09Cd0FsRGlRT0pnNEhBQ2NPS0E0cERnY0FKdzRtRGlnT0J3QW9EaW9PS1E0SEFDZ09LdzRxRGdjQUtnNHNEaTBPQndBcURpc09MQTRIQUN3T0xnNHREZ2NBTEE0dkRpNE9Cd0F2RGpBT0xnNEhBQzhPTVE0d0RnY0FNUTR5RGpBT0J3QXhEak1PTWc0SEFETU9OQTR5RGdjQU13NDFEalFPQndBMURqWU9OQTRIQURVT053NDJEZ2NBTnc0YURqWU9Cd0EzRGhnT0dnNEhBUGdOT0E3N0RRY0ErQTA1RGpnT0J3QVpEamtPR2c0SEFCa09PQTQ1RGdjQSt3MDZEdndOQndEN0RUZ09PZzRIQUIwT09BNFpEZ2NBSFE0NkRqZ09Cd0Q4RFRzTy9nMEhBUHdOT2c0N0RnY0FIdzQ2RGgwT0J3QWZEanNPT2c0SEFQNE5QQTRBRGdjQS9nMDdEandPQndBaERqc09IdzRIQUNFT1BBNDdEZ2NBQUE0OURnTU9Cd0FBRGp3T1BRNEhBQ01PUEE0aERnY0FJdzQ5RGp3T0J3QStEajhPUUE0SEFENE9RUTQvRGdjQUpRNDlEaU1PQndBbERrSU9QUTRIQUFVT1F3NEhEZ2NBQlE1Q0RrTU9Cd0FuRGtJT0pRNEhBQ2NPUXc1Q0RnY0FCdzVFRGdrT0J3QUhEa01PUkE0SEFDa09RdzRuRGdjQUtRNUVEa01PQndBSkRrVU9DZzRIQUFrT1JBNUZEZ2NBS2c1RURpa09Cd0FxRGtVT1JBNEhBQW9PUmc0TkRnY0FDZzVGRGtZT0J3QXREa1VPS2c0SEFDME9SZzVGRGdjQURRNUhEZzRPQndBTkRrWU9SdzRIQUM0T1JnNHREZ2NBTGc1SERrWU9Cd0FPRGtnT0VBNEhBQTRPUnc1SURnY0FNQTVIRGk0T0J3QXdEa2dPUnc0SEFFa09TZzVMRGdjQVNRNU1Ea29PQndBeURrZ09NQTRIQURJT1RRNUlEZ2NBRWc1T0RoUU9Cd0FTRGswT1RnNEhBRFFPVFE0eURnY0FOQTVPRGswT0J3QVVEazhPRnc0SEFCUU9UZzVQRGdjQU5nNU9EalFPQndBMkRrOE9UZzRIQUJjT09RNzREUWNBRnc1UERqa09Cd0FhRGs4T05nNEhBQm9PT1E1UERnY0FHQTVRRGhzT0J3QVlEbEVPVUE0SEFGSU9VUTVURGdjQVVnNVFEbEVPQndBYkRsUU9IQTRIQUJzT1VBNVVEZ2NBVlE1UURsSU9Cd0JWRGxRT1VBNEhBQndPVmc0ZURnY0FIQTVVRGxZT0J3QlhEbFFPVlE0SEFGY09WZzVVRGdjQUhnNVlEaUFPQndBZURsWU9XQTRIQUZrT1ZnNVhEZ2NBV1E1WURsWU9Cd0FnRGxvT0lnNEhBQ0FPV0E1YURnY0FXdzVZRGxrT0J3QmJEbG9PV0E0SEFDSU9YQTRrRGdjQUlnNWFEbHdPQndCZERsb09XdzRIQUYwT1hBNWFEZ2NBSkE1ZURpWU9Cd0FrRGx3T1hnNEhBRjhPWEE1ZERnY0FYdzVlRGx3T0J3QW1EbUFPS0E0SEFDWU9YZzVnRGdjQVlRNWVEbDhPQndCaERtQU9YZzRIQUNnT1lnNHJEZ2NBS0E1Z0RtSU9Cd0JqRG1BT1lRNEhBR01PWWc1Z0RnY0FLdzVrRGl3T0J3QXJEbUlPWkE0SEFHVU9ZZzVqRGdjQVpRNWtEbUlPQndBc0RtWU9MdzRIQUN3T1pBNW1EZ2NBWnc1a0RtVU9Cd0JuRG1ZT1pBNEhBQzhPYUE0eERnY0FMdzVtRG1nT0J3QnBEbVlPWnc0SEFHa09hQTVtRGdjQU1RNXFEak1PQndBeERtZ09hZzRIQUdzT2FBNXBEZ2NBYXc1cURtZ09Cd0F6RG13T05RNEhBRE1PYWc1c0RnY0FiUTVxRG1zT0J3QnREbXdPYWc0SEFEVU9iZzQzRGdjQU5RNXNEbTRPQndCdkRtd09iUTRIQUc4T2JnNXNEZ2NBTnc1UkRoZ09Cd0EzRG00T1VRNEhBRk1PYmc1dkRnY0FVdzVSRG00T0J3QUZEbkFPY1E0SEFBVU9BdzV3RGdjQVFnNXhEbklPQndCQ0RnVU9jUTRIQUhNT1FnNXlEZ2NBY3c0OURrSU9Cd0J3RGowT2N3NEhBSEFPQXc0OURnY0FkQTRRRG5VT0J3QjBEaElPRUE0SEFFME9kQTUyRGdjQVRRNFNEblFPQndCSURuWU9kdzRIQUVnT1RRNTJEZ2NBZFE1SURuY09Cd0IxRGhBT1NBNEhBSEFPZUE1eERnY0FjQTU1RG5nT0J3QnhEbm9PY2c0SEFIRU9lQTU2RGdjQWVnNXpEbklPQndCNkRuc09jdzRIQUhrT2N3NTdEZ2NBZVE1d0RuTU9Cd0I4RG5RT2RRNEhBSHdPZlE1MERnY0FkZzU5RG40T0J3QjJEblFPZlE0SEFIWU9mdzUzRGdjQWRnNStEbjhPQndCL0RuVU9kdzRIQUg4T2ZBNTFEZ2NBZUE2QURvRU9Cd0I0RG5rT2dBNEhBSG9PZ1E2Q0RnY0FlZzU0RG9FT0J3Q0REbm9PZ2c0SEFJTU9ldzU2RGdjQWdBNTdEb01PQndDQURua09ldzRIQUlRT2ZBNkZEZ2NBaEE1OURud09Cd0IrRG9RT2hnNEhBSDRPZlE2RURnY0FmdzZHRG9jT0J3Qi9EbjRPaGc0SEFJVU9mdzZIRGdjQWhRNThEbjhPQndDQkRvZ09pUTRIQUlFT2dBNklEZ2NBZ2c2SkRvb09Cd0NDRG9FT2lRNEhBSXNPZ2c2S0RnY0FpdzZERG9JT0J3Q0xEb0FPZ3c0SEFJc09pQTZBRGdjQWpBNkZEbzBPQndDTURvUU9oUTRIQUlRT2pnNkdEZ2NBaEE2TURvNE9Cd0NIRG80T2p3NEhBSWNPaGc2T0RnY0FqUTZIRG84T0J3Q05Eb1VPaHc0SEFJa09rQTZSRGdjQWlRNklEcEFPQndDS0RwRU9rZzRIQUlvT2lRNlJEZ2NBa3c2S0RwSU9Cd0NURG9zT2lnNEhBSkFPaXc2VERnY0FrQTZJRG9zT0J3Q1VEbzBPbFE0SEFKUU9qQTZORGdjQWpnNlVEcFlPQndDT0Rvd09sQTRIQUk4T2xnNlhEZ2NBanc2T0RwWU9Cd0NWRG84T2x3NEhBSlVPalE2UERnY0FrUTQrRGtBT0J3Q1JEcEFPUGc0SEFKSU9RQTQvRGdjQWtnNlJEa0FPQndCQkRwSU9QdzRIQUVFT2t3NlNEZ2NBUGc2VERrRU9Cd0ErRHBBT2t3NEhBRXNPbFE1SkRnY0FTdzZVRHBVT0J3Q1dEa3NPU2c0SEFKWU9sQTVMRGdjQWx3NUtEa3dPQndDWERwWU9TZzRIQUVrT2x3NU1EZ2NBU1E2VkRwY09Cd0NZRHBrT21nNEhBSmdPbXc2WkRnY0FtdzZjRHAwT0J3Q2JEcGdPbkE0SEFKNE9udzZnRGdjQW5nNmhEcDhPQndDZkRxSU9vdzRIQUo4T29RNmlEZ2NBcEE2ZERwd09Cd0NrRHFVT25RNEhBS1lPbXc2bkRnY0FwZzZaRHBzT0J3Q2JEcVVPcHc0SEFKc09uUTZsRGdjQW1BNm9EcWtPQndDWURwb09xQTRIQUtRT21BNnBEZ2NBcEE2Y0RwZ09Cd0NxRHFVT3BBNEhBS29PcXc2bERnY0FxdzZqRHFJT0J3Q3JEcW9Pb3c0SEFLd09wdzZ0RGdjQXJBNm1EcWNPQndDc0RxRU9uZzRIQUt3T3JRNmhEZ2NBclE2bERxc09Cd0N0RHFjT3BRNEhBS0VPcXc2aURnY0FvUTZ0RHFzT0J3Q3BEcTRPcnc0SEFLa09xQTZ1RGdjQW53NnVEcUFPQndDZkRxOE9yZzRIQUtRT3J3NnFEZ2NBcEE2cERxOE9Cd0NxRHA4T293NEhBS29Pcnc2ZkRnY0FzQTZ4RHJJT0J3Q3dEck1Pc1E0SEFMUU9zdzYxRGdjQXRBNnhEck1PQndDMkRyY091QTRIQUxZT3VRNjNEZ2NBdWc2MkRyc09Cd0M2RHJrT3RnNEhBTFVPdkE2MERnY0F0UTY5RHJ3T0J3Q3pEcjRPdnc0SEFMTU9zQTYrRGdjQXZRNnpEcjhPQndDOURyVU9zdzRIQU1BT3NRN0JEZ2NBd0E2eURyRU9Cd0N4RHJ3T3dRNEhBTEVPdEE2OERnY0F2UTdDRHJ3T0J3QzlEc01Pd2c0SEFMc093dzY2RGdjQXV3N0NEc01PQndDL0RzUU94UTRIQUw4T3ZnN0VEZ2NBdVE3RURyY09Cd0M1RHNVT3hBNEhBTDBPeFE3RERnY0F2UTYvRHNVT0J3REREcmtPdWc0SEFNTU94UTY1RGdjQXhnN0JEc2NPQndER0RzQU93UTRIQU1ZT3RnNjREZ2NBeGc3SERyWU9Cd0RIRHJ3T3dnNEhBTWNPd1E2OERnY0F0ZzdDRHJzT0J3QzJEc2NPd2c0SEFNZ095UTdLRGdjQXlBN0xEc2tPQndETERzd096UTRIQU1zT3lBN01EZ2NBemc3UER0QU9Cd0RPRHRFT3p3NEhBTThPMGc3VERnY0F6dzdSRHRJT0J3RFVEczBPekE0SEFOUU8xUTdORGdjQTFnN0xEdGNPQndEV0Rza095dzRIQU1zTzFRN1hEZ2NBeXc3TkR0VU9Cd0RJRHRnTzJRNEhBTWdPeWc3WURnY0ExQTdJRHRrT0J3RFVEc3dPeUE0SEFOb08xUTdVRGdjQTJnN2JEdFVPQndEYkR0TU8wZzRIQU5zTzJnN1REZ2NBM0E3WER0ME9Cd0RjRHRZTzF3NEhBTndPMFE3T0RnY0EzQTdkRHRFT0J3RGREdFVPMnc0SEFOME8xdzdWRGdjQTBRN2JEdElPQndEUkR0ME8ydzRIQU5rTzNnN2ZEZ2NBMlE3WUR0NE9Cd0RQRHQ0TzBBNEhBTThPM3c3ZURnY0ExQTdmRHRvT0J3RFVEdGtPM3c0SEFOb096dzdURGdjQTJnN2ZEczhPQndEZ0R1RU80ZzRIQU9BTzR3N2hEZ2NBNUE3akR1VU9Cd0RrRHVFTzR3NEhBT1lPNXc3b0RnY0E1ZzdwRHVjT0J3RHFEdVlPNnc0SEFPb082UTdtRGdjQTVRN3NEdVFPQndEbER1ME83QTRIQU9NTzdnN3ZEZ2NBNHc3Z0R1NE9Cd0R0RHVNTzd3NEhBTzBPNVE3akRnY0E4QTdoRHZFT0J3RHdEdUlPNFE0SEFPRU83QTd4RGdjQTRRN2tEdXdPQndEdER2SU83QTRIQU8wTzh3N3lEZ2NBNnc3ekR1b09Cd0RyRHZJTzh3NEhBTzhPOUE3MURnY0E3dzd1RHZRT0J3RHBEdlFPNXc0SEFPa085UTcwRGdjQTdRNzFEdk1PQndEdER1OE85UTRIQVBNTzZRN3FEZ2NBOHc3MUR1a09Cd0QyRHZFTzl3NEhBUFlPOEE3eERnY0E5ZzdtRHVnT0J3RDJEdmNPNWc0SEFQY083QTd5RGdjQTl3N3hEdXdPQndEbUR2SU82dzRIQU9ZTzl3N3lEZ2NBK0E3NUR2b09Cd0Q0RHZzTytRNEhBUGtPL0E3OURnY0ErUTc3RHZ3T0J3RDlEdjRPL3c0SEFQME8vQTcrRGdjQS93NEFEd0VQQndEL0R2NE9BQThIQUFFUEFnOEREd2NBQVE4QUR3SVBCd0FERHdRUEJROEhBQU1QQWc4RUR3Y0FCUThHRHdjUEJ3QUZEd1FQQmc4SEFBWVBDQThIRHdjQUJnOEpEd2dQQndBSkR3b1BDQThIQUFrUEN3OEtEd2NBQ3c4TUR3b1BCd0FMRHcwUERBOEhBQTBQRGc4TUR3Y0FEUThQRHc0UEJ3QVBEL29PRGc4SEFBOFArQTc2RGdjQUVBLzdEdmdPQndBUUR4RVArdzRIQVBzT0VnLzhEZ2NBK3c0UkR4SVBCd0Q4RGhNUC9nNEhBUHdPRWc4VER3Y0EvZzRVRHdBUEJ3RCtEaE1QRkE4SEFBQVBGUThDRHdjQUFBOFVEeFVQQndBQ0R4WVBCQThIQUFJUEZROFdEd2NBQkE4WER3WVBCd0FFRHhZUEZ3OEhBQmNQQ1E4R0R3Y0FGdzhZRHdrUEJ3QVlEd3NQQ1E4SEFCZ1BHUThMRHdjQUdROE5Ed3NQQndBWkR4b1BEUThIQUJvUER3OE5Ed2NBR2c4YkR3OFBCd0FiRC9nT0R3OEhBQnNQRUEvNERnY0FIQThRRHgwUEJ3QWNEeEVQRUE4SEFCSVBIQThlRHdjQUVnOFJEeHdQQndBVER4NFBIdzhIQUJNUEVnOGVEd2NBRXc4Z0R4UVBCd0FURHg4UElBOEhBQlFQSVE4VkR3Y0FGQThnRHlFUEJ3QVZEeUlQRmc4SEFCVVBJUThpRHdjQUZnOGpEeGNQQndBV0R5SVBJdzhIQUNNUEdBOFhEd2NBSXc4a0R4Z1BCd0FrRHhrUEdBOEhBQ1FQSlE4WkR3Y0FKUThhRHhrUEJ3QWxEeVlQR2c4SEFDY1BHZzhtRHdjQUp3OGJEeG9QQndBZER4c1BKdzhIQUIwUEVBOGJEd2NBS0E4ZER5a1BCd0FvRHh3UEhROEhBQjRQS0E4cUR3Y0FIZzhjRHlnUEJ3QWZEeW9QS3c4SEFCOFBIZzhxRHdjQUlBOHJEeXdQQndBZ0R4OFBLdzhIQUNFUExBOHREd2NBSVE4Z0R5d1BCd0FpRHkwUExnOEhBQ0lQSVE4dER3Y0FJdzh1RHk4UEJ3QWpEeUlQTGc4SEFEQVBJdzh2RHdjQU1BOGtEeU1QQndBeER5UVBNQThIQURFUEpROGtEd2NBTWc4bER6RVBCd0F5RHlZUEpROEhBRE1QSmc4eUR3Y0FNdzhuRHlZUEJ3QXBEeWNQTXc4SEFDa1BIUThuRHdjQU5BOHBEelVQQndBMER5Z1BLUThIQUNvUE5BODJEd2NBS2c4b0R6UVBCd0FyRHpZUE53OEhBQ3NQS2c4MkR3Y0FMQTgzRHpnUEJ3QXNEeXNQTnc4SEFDd1BPUTh0RHdjQUxBODREemtQQndBdER6b1BMZzhIQUMwUE9RODZEd2NBTGc4N0R5OFBCd0F1RHpvUE93OEhBRHNQTUE4dkR3Y0FPdzg4RHpBUEJ3QThEekVQTUE4SEFEd1BQUTh4RHdjQVBROHlEekVQQndBOUR6NFBNZzhIQUQ4UE1nOCtEd2NBUHc4ekR6SVBCd0ExRHpNUFB3OEhBRFVQS1E4ekR3Y0FRQTgxRDBFUEJ3QkFEelFQTlE4SEFEWVBRQTlDRHdjQU5nODBEMEFQQndBM0QwSVBRdzhIQURjUE5nOUNEd2NBT0E5REQwUVBCd0E0RHpjUFF3OEhBRGtQUkE5RkR3Y0FPUTg0RDBRUEJ3QTZEMFVQUmc4SEFEb1BPUTlGRHdjQU93OUdEMGNQQndBN0R6b1BSZzhIQUVnUE93OUhEd2NBU0E4OER6c1BCd0JKRHp3UFNBOEhBRWtQUFE4OER3Y0FTZzg5RDBrUEJ3QktEejRQUFE4SEFFc1BQZzlLRHdjQVN3OC9EejRQQndCQkR6OFBTdzhIQUVFUE5ROC9Ed2NBVEE5TkQwNFBCd0JNRDA4UFRROEhBRkFQVEE5UkR3Y0FVQTlQRDB3UEJ3QlNEMUVQVXc4SEFGSVBVQTlSRHdjQVZBOVREMVVQQndCVUQxSVBVdzhIQUZZUFZROVhEd2NBVmc5VUQxVVBCd0JZRDFjUFdROEhBRmdQVmc5WER3Y0FXZzlaRDFzUEJ3QmFEMWdQV1E4SEFGd1BXZzliRHdjQVhBOWREMW9QQndCZUQxMFBYQThIQUY0UFh3OWREd2NBWUE5ZkQxNFBCd0JnRDJFUFh3OEhBR0lQWVE5Z0R3Y0FZZzlqRDJFUEJ3Qk9EMk1QWWc4SEFFNFBUUTlqRHdjQVR3OWtEMDBQQndCUEQyVVBaQThIQUdZUFR3OVFEd2NBWmc5bEQwOFBCd0JuRDFBUFVnOEhBR2NQWmc5UUR3Y0FhQTlTRDFRUEJ3Qm9EMmNQVWc4SEFHa1BWQTlXRHdjQWFROW9EMVFQQndCcUQxWVBXQThIQUdvUGFROVdEd2NBYXc5WUQxb1BCd0JyRDJvUFdBOEhBRjBQYXc5YUR3Y0FYUTlzRDJzUEJ3QmZEMndQWFE4SEFGOFBiUTlzRHdjQVlROXREMThQQndCaEQyNFBiUThIQUdNUGJnOWhEd2NBWXc5dkQyNFBCd0JORDI4UFl3OEhBRTBQWkE5dkR3Y0FaQTl3RDNFUEJ3QmtEMlVQY0E4SEFIQVBaZzl5RHdjQWNBOWxEMllQQndCeUQyY1BjdzhIQUhJUFpnOW5Ed2NBZEE5bkQyZ1BCd0IwRDNNUFp3OEhBSFVQYUE5cER3Y0FkUTkwRDJnUEJ3QjJEMmtQYWc4SEFIWVBkUTlwRHdjQWR3OXFEMnNQQndCM0QzWVBhZzhIQUd3UGR3OXJEd2NBYkE5NEQzY1BCd0J0RDNnUGJBOEhBRzBQZVE5NER3Y0FiZzk1RDIwUEJ3QnVEM29QZVE4SEFHNFBldzk2RHdjQWJnOXZEM3NQQndCdkQzRVBldzhIQUc4UFpBOXhEd2NBY1E5OEQzMFBCd0J4RDNBUGZBOEhBSHdQY2c5K0R3Y0FmQTl3RDNJUEJ3QitEM01QZnc4SEFINFBjZzl6RHdjQWZ3OTBENEFQQndCL0QzTVBkQThIQUlBUGRRK0JEd2NBZ0E5MEQzVVBCd0NCRDNZUGdnOEhBSUVQZFE5MkR3Y0FnZzkzRDRNUEJ3Q0NEM1lQZHc4SEFIY1BoQStERHdjQWR3OTRENFFQQndCNEQ0VVBoQThIQUhnUGVRK0ZEd2NBZVErR0Q0VVBCd0I1RDNvUGhnOEhBSG9QaHcrR0R3Y0FlZzk3RDRjUEJ3QjdEMzBQaHc4SEFIc1BjUTk5RHdjQWZRK0lENGtQQndCOUQzd1BpQThIQUlnUGZnK0tEd2NBaUE5OEQzNFBCd0NLRDM4UGl3OEhBSW9QZmc5L0R3Y0FpdytBRDR3UEJ3Q0xEMzhQZ0E4SEFJMFBnQStCRHdjQWpRK01ENEFQQndDT0Q0RVBnZzhIQUk0UGpRK0JEd2NBancrQ0Q0TVBCd0NQRDQ0UGdnOEhBSVFQancrRER3Y0FoQStRRDQ4UEJ3Q0ZENUFQaEE4SEFJVVBrUStRRHdjQWhnK1JENFVQQndDR0Q1SVBrUThIQUlZUGt3K1NEd2NBaGcrSEQ1TVBCd0NIRDRrUGt3OEhBSWNQZlErSkR3Y0FpUStVRDVVUEJ3Q0pENGdQbEE4SEFKUVBpZytXRHdjQWxBK0lENG9QQndDV0Q0c1BsdzhIQUpZUGlnK0xEd2NBbHcrTUQ1Z1BCd0NYRDRzUGpBOEhBSmdQalErWkR3Y0FtQStNRDQwUEJ3Q1pENDRQbWc4SEFKa1BqUStPRHdjQW1nK1BENXNQQndDYUQ0NFBqdzhIQUk4UG5BK2JEd2NBancrUUQ1d1BCd0NRRDUwUG5BOEhBSkFQa1ErZER3Y0FrUStlRDUwUEJ3Q1JENUlQbmc4SEFKSVBudytlRHdjQWtnK1RENThQQndDVEQ1VVBudzhIQUpNUGlRK1ZEd2NBb0EraEQ2SVBCd0NnRDZNUG9ROEhBS1FQb2crbER3Y0FwQStnRDZJUEJ3Q21ENlVQcHc4SEFLWVBwQStsRHdjQXFBK21ENmNQQndDb0Q2a1BwZzhIQUtvUHFRK29Ed2NBcWcrckQ2a1BCd0NoRDZzUHFnOEhBS0VQb3crckR3Y0FvZytzRDYwUEJ3Q2lENkVQckE4SEFLVVByUSt1RHdjQXBRK2lENjBQQndDbkQ2NFBydzhIQUtjUHBRK3VEd2NBc0ErbkQ2OFBCd0N3RDZnUHB3OEhBTEVQcUErd0R3Y0FzUStxRDZnUEJ3Q3NENm9Qc1E4SEFLd1BvUStxRHdjQXJRK3lEN01QQndDdEQ2d1BzZzhIQUs0UHN3KzBEd2NBcmcrdEQ3TVBCd0N2RDdRUHRROEhBSzhQcmcrMER3Y0F0Zyt2RDdVUEJ3QzJEN0FQcnc4SEFMY1BzQSsyRHdjQXR3K3hEN0FQQndDeUQ3RVB0dzhIQUxJUHJBK3hEd2NBdUEreUQ3a1BCd0M0RDdNUHNnOEhBTG9Qc3crNER3Y0F1ZyswRDdNUEJ3QzJEN3NQdkE4SEFMWVB0USs3RHdjQXR3KzhENzBQQndDM0Q3WVB2QThIQUxrUHR3KzlEd2NBdVEreUQ3Y1BCd0MrRDdrUHZ3OEhBTDRQdUErNUR3Y0F3QSs0RDc0UEJ3REFEN29QdUE4SEFMc1B3QS9CRHdjQXV3KzZEOEFQQndDOEQ4RVB3ZzhIQUx3UHV3L0JEd2NBdlEvQ0Q4TVBCd0M5RDd3UHdnOEhBTDhQdlEvRER3Y0F2dys1RDcwUEJ3REVENzhQeFE4SEFNUVB2ZysvRHdjQXhnKytEOFFQQndER0Q4QVB2ZzhIQU1FUHhnL0hEd2NBd1EvQUQ4WVBCd0RDRDhjUHlBOEhBTUlQd1EvSER3Y0F3dy9JRDhrUEJ3REREOElQeUE4SEFNVVB3dy9KRHdjQXhRKy9EOE1QQndES0Q4VVB5dzhIQU1vUHhBL0ZEd2NBekEvRUQ4b1BCd0RNRDhZUHhBOEhBTWdQelEvT0R3Y0F5QS9IRDgwUEJ3REpEODRQenc4SEFNa1B5QS9PRHdjQXl3L0pEODhQQndETEQ4VVB5UThIQU5BUHl3L1JEd2NBMEEvS0Q4c1BCd0RRRDh3UHlnOEhBTkFQMGcvTUR3Y0EwZy9ORDh3UEJ3RFNEOU1QelE4SEFNMFAxQS9PRHdjQXpRL1REOVFQQndEUEQ5UVAxUThIQU04UHpnL1VEd2NBencvUkQ4c1BCd0RQRDlVUDBROEhBTllQMXcvWUR3Y0ExZy9aRDljUEJ3RFpEOW9QMXc4SEFOa1Aydy9hRHdjQTNBL2JEOTBQQndEY0Q5b1AydzhIQUtBUDNnK2pEd2NBb0EvZkQ5NFBCd0NrRDk4UG9BOEhBS1FQNEEvZkR3Y0FwZy9nRDZRUEJ3Q21EK0VQNEE4SEFPSVBwZytwRHdjQTRnL2hENllQQndEakQ2a1BxdzhIQU9NUDRnK3BEd2NBb3cvakQ2c1BCd0NqRDk0UDR3OEhBT1FQNVEvbUR3Y0E1QS9uRCtVUEJ3RG5EK2dQNVE4SEFPY1A2US9vRHdjQTZnL3BEK3NQQndEcUQrZ1A2UThIQUxzUDdBL3REd2NBdXcrMUQrd1BCd0M3RCs0UHVnOEhBTHNQN1EvdUR3Y0E3dys2RCs0UEJ3RHZEN1FQdWc4SEFMUVA3QSsxRHdjQXRBL3ZEK3dQQndEd0QvRVA4ZzhIQVBBUDh3L3hEd2NBOGcvMEQvVVBCd0R5RC9FUDlBOEhBUFVQOWcvM0R3Y0E5US8wRC9ZUEJ3RDJEL2dQOXc4SEFQWVArUS80RHdjQStRLzZEL2dQQndENUQvc1ArZzhIQVBzUDhBLzZEd2NBK3cvekQvQVBCd0Q4RC9JUC9ROEhBUHdQOEEveUR3Y0EvUS8xRC80UEJ3RDlEL0lQOVE4SEFQNFA5dy8vRHdjQS9nLzFEL2NQQndEM0R3QVEvdzhIQVBjUCtBOEFFQWNBK0E4QkVBQVFCd0Q0RC9vUEFSQUhBUG9QL0E4QkVBY0ErZy93RC93UEJ3QUNFUDBQQXhBSEFBSVEvQS85RHdjQUF4RCtEd1FRQndBREVQMFAvZzhIQUFRUS93OEZFQWNBQkJEK0QvOFBCd0QvRHdZUUJSQUhBUDhQQUJBR0VBY0FBQkFIRUFZUUJ3QUFFQUVRQnhBSEFBRVFBaEFIRUFjQUFSRDhEd0lRQndBQ0VBZ1FDUkFIQUFJUUF4QUlFQWNBQXhBS0VBZ1FCd0FERUFRUUNoQUhBQXNRQmhBTUVBY0FDeEFGRUFZUUJ3QU1FQWNRRFJBSEFBd1FCaEFIRUFjQUJ4QUpFQTBRQndBSEVBSVFDUkFIQUFrUURoQVBFQWNBQ1JBSUVBNFFCd0FJRUJBUURoQUhBQWdRQ2hBUUVBY0FFQkFMRUJFUUJ3QVFFQW9RQ3hBSEFCRVFEQkFTRUFjQUVSQUxFQXdRQndBU0VBMFFFeEFIQUJJUURCQU5FQWNBRFJBUEVCTVFCd0FORUFrUUR4QUhBQThRRkJBVkVBY0FEeEFPRUJRUUJ3QU9FQllRRkJBSEFBNFFFQkFXRUFjQUZoQVJFQmNRQndBV0VCQVFFUkFIQUJjUUVoQVlFQWNBRnhBUkVCSVFCd0FZRUJNUUdSQUhBQmdRRWhBVEVBY0FFeEFWRUJrUUJ3QVRFQThRRlJBSEFCVVFHaEFiRUFjQUZSQVVFQm9RQndBVUVCd1FHaEFIQUJRUUZoQWNFQWNBSFJBWkVCNFFCd0FkRUJnUUdSQUhBQmtRR3hBZUVBY0FHUkFWRUJzUUJ3QWJFQjhRSUJBSEFCc1FHaEFmRUFjQUhCQWZFQm9RQndBY0VDRVFIeEFIQUNJUUlSQWNFQWNBSWhBakVDRVFCd0FrRUNJUUhSQUhBQ1FRSXhBaUVBY0FKQkFlRUNVUUJ3QWtFQjBRSGhBSEFDQVFIaEFiRUFjQUlCQWxFQjRRQndBbUVDY1FLQkFIQUNZUUtSQW5FQWNBS2hBcEVDWVFCd0FxRUNzUUtSQUhBQ3NRTEJBdEVBY0FLeEFxRUN3UUJ3RGVEL0VQOHc4SEFONFAzdy94RHdjQTN3LzBEL0VQQndEZkQrQVA5QThIQU9BUDlnLzBEd2NBNEEvaEQvWVBCd0QyRCtJUCtROEhBUFlQNFEvaUR3Y0ErUS9qRC9zUEJ3RDVEK0lQNHc4SEFPTVA4dy83RHdjQTR3L2VEL01QQndBdUVDOFFNQkFIQUM0UU1SQXZFQWNBTWhBeEVDNFFCd0F5RURNUU1SQUhBRE1RNmcvckR3Y0FNeEF5RU9vUEJ3QTBFQXNRTlJBSEFEUVFCUkFMRUFjQU5oQUxFQW9RQndBMkVEVVFDeEFIQUFvUU54QTJFQWNBQ2hBRUVEY1FCd0EwRUFRUUJSQUhBRFFRTnhBRUVBY0FMeEE0RUNnUUJ3QXZFRGtRT0JBSEFDZ1FPaEFtRUFjQUtCQTRFRG9RQndBbUVEc1FLaEFIQUNZUU9oQTdFQWNBS2hBOEVDd1FCd0FxRURzUVBCQUhBRHdRUFJBc0VBY0FQQkErRUQwUUJ3QTlFRDhRM0E4SEFEMFFQaEEvRUFjQVB4RGFEOXdQQndBL0VFQVEyZzhIQUVBUTF3L2FEd2NBUUJCQkVOY1BCd0JCRU5nUDF3OEhBRUVRUWhEWUR3Y0FRaERrRDlnUEJ3QkNFRU1RNUE4SEFFTVE1dy9rRHdjQVF4QkVFT2NQQndCRUVPa1A1dzhIQUVRUVJSRHBEd2NBUlJEckQra1BCd0JGRUVZUTZ3OEhBT3NQUnhBekVBY0E2dzlHRUVjUUJ3QXpFRWdRTVJBSEFETVFSeEJJRUFjQU1SQTVFQzhRQndBeEVFZ1FPUkFIQURnUVNSQTZFQWNBT0JCS0VFa1FCd0E3RUVzUVBCQUhBRHNRVEJCTEVBY0FTeEErRUR3UUJ3QkxFRTBRUGhBSEFENFFUaEEvRUFjQVBoQk5FRTRRQndCT0VFQVFQeEFIQUU0UVR4QkFFQWNBVUJCQ0VFRVFCd0JRRUZFUVFoQUhBRklRUkJCREVBY0FVaEJURUVRUUJ3QlRFRVVRUkJBSEFGTVFWQkJGRUFjQVZCQkdFRVVRQndCVUVGVVFSaEFIQUVZUVZoQkhFQWNBUmhCVkVGWVFCd0JIRUZjUVNCQUhBRWNRVmhCWEVBY0FTQkJZRURrUUJ3QklFRmNRV0JBSEFGZ1FXUkJLRUFjQVdCQmFFRmtRQndCS0VGc1FTUkFIQUVvUVdSQmJFQWNBU1JCY0VFd1FCd0JKRUZzUVhCQUhBRXdRWFJCTEVBY0FUQkJjRUYwUUJ3QmRFRTBRU3hBSEFGMFFYaEJORUFjQVRSQmZFRTRRQndCTkVGNFFYeEFIQUY4UVR4Qk9FQWNBWHhCZ0VFOFFCd0JnRUZBUVR4QUhBR0FRWVJCUUVBY0FZUkJSRUZBUUJ3QmhFR0lRVVJBSEFHSVFVaEJSRUFjQVloQmpFRklRQndCa0VGSVFZeEFIQUdRUVV4QlNFQWNBWlJCVEVHUVFCd0JsRUZRUVV4QUhBR1lRVkJCbEVBY0FaaEJWRUZRUUJ3QldFR1lRWnhBSEFGWVFWUkJtRUFjQVZ4Qm5FR2dRQndCWEVGWVFaeEFIQUZnUWFCQmFFQWNBV0JCWEVHZ1FCd0JjRUZrUVhSQUhBRndRV3hCWkVBY0FXUkJlRUYwUUJ3QlpFRm9RWGhBSEFHSVFZQkJmRUFjQVloQmhFR0FRQndCZUVHSVFYeEFIQUY0UVl4QmlFQWNBWlJCakVGNFFCd0JsRUdRUVl4QUhBR2dRWmhCYUVBY0FhQkJuRUdZUUJ3Qm1FRjRRV2hBSEFHWVFaUkJlRUFjQWFSQXVFR29RQndCcEVESVFMaEFIQUdzUU1oQnBFQWNBYXhEcUR6SVFCd0RvRDJzUWJCQUhBT2dQNmc5ckVBY0E1UTlzRUcwUUJ3RGxEK2dQYkJBSEFPWVBiUkJ1RUFjQTVnL2xEMjBRQndEbUQyOFExZzhIQU9ZUGJoQnZFQWNBMWc5d0VOa1BCd0RXRDI4UWNCQUhBTmtQY1JEYkR3Y0EyUTl3RUhFUUJ3RGJEM0lRM1E4SEFOc1BjUkJ5RUFjQWN4QXJFQzBRQndCekVIUVFLeEFIQUhRUUtSQXJFQWNBZEJCMUVDa1FCd0IxRUNjUUtSQUhBSFVRZGhBbkVBY0FkaEF3RUNjUUJ3QjJFSGNRTUJBSEFHb1FNQkIzRUFjQWFoQXVFREFRQndBaEVOQVBIeEFIQUNFUTBnL1FEd2NBMFE4ZkVOQVBCd0RSRHlBUUh4QUhBQ1VRMFEvVkR3Y0FKUkFnRU5FUEJ3QWtFTlVQMUE4SEFDUVFKUkRWRHdjQUl4RFVEOU1QQndBakVDUVExQThIQUNFUTB3L1NEd2NBSVJBakVOTVBCd0I0RUMwUWVSQUhBSGdRY3hBdEVBY0FjaEI1RU4wUEJ3QnlFSGdRZVJBSEFOMFBQUkRjRHdjQTNROTVFRDBRQndCNUVDd1FQUkFIQUhrUUxSQXNFQWNBMWcva0QrWVBCd0RXRDlnUDVBOEhBQ2dRTUJBdkVBY0FLQkFuRURBUUJ3RHVEMUlRN3c4SEFPNFBVUkJTRUFjQVFoRHVEKzBQQndCQ0VGRVE3ZzhIQU93UFFoRHREd2NBN0E5REVFSVFCd0R2RDBNUTdBOEhBTzhQVWhCREVBY0FTaEEzRUZnUUJ3QktFRFlRTnhBSEFEVVFTaEE0RUFjQU5SQTJFRW9RQndBNUVEVVFPQkFIQURrUU5CQTFFQWNBTnhBNUVGZ1FCd0EzRURRUU9SQUhBTVlQVHhCUUVBY0F4Zy9NRDA4UUJ3RE1EMEFRVHhBSEFNd1B6UTlBRUFjQXh3OVFFRUVRQndESEQ4WVBVQkFIQU0wUFFSQkFFQWNBelEvSEQwRVFCd0FYRUIwUUloQUhBQmNRR0JBZEVBY0FUQkFpRUJ3UUJ3Qk1FRHNRSWhBSEFEb1FJaEE3RUFjQU9oQVhFQ0lRQndBV0VEb1FTUkFIQUJZUUZ4QTZFQWNBU1JBY0VCWVFCd0JKRUV3UUhCQUhBSjRGQndXZEJRY0FuZ1dIQlFjRkJ3Q2VCVElGbndVSEFKNEZNUVV5QlFjQU9nQTNBQm9BQndBNkFEZ0FOd0FIQUQwQU9BQTZBQWNBUFFBN0FEZ0FCd0RRQUxRQXN3QUhBTkFBMFFDMEFBY0EwQUE3QUQwQUJ3RFFBTThBT3dBSEFEQkJsRHdBQUhKaGRqUXRhVzV6YVdSbEFFQWVBQUFCQUFJQUF3QUVBQVVBQmdBSEFBZ0FDUUFLQUFzQURBQU5BQTRBRHdBUUFCRUFFZ0FUQUJRQUZRQVdBQmNBR0FBWkFCb0FHd0FjQUIwQUhnQWZBQ0FBSVFBaUFDTUFKQUFsQUNZQUp3QW9BQ2tBS2dBckFDd0FMUUF1QUM4QU1BQXhBRElBTXdBMEFEVUFOZ0EzQURnQU9RQTZBRHNBUEFBOUFENEFQd0JBQUVFQVFnQkRBRVFBUlFCR0FFY0FTQUJKQUVvQVN3Qk1BRTBBVGdCUEFGQUFVUUJTQUZNQVZBQlZBRllBVndCWUFGa0FXZ0JiQUZ3QVhRQmVBRjhBWUFCaEFHSUFZd0JrQUdVQVpnQm5BR2dBYVFCcUFHc0FiQUJ0QUc0QWJ3QndBSEVBY2dCekFIUUFkUUIyQUhjQWVBQjVBSG9BZXdCOEFIMEFmZ0IvQUlBQWdRQ0NBSU1BaEFDRkFJWUFod0NJQUlrQWlnQ0xBSXdBalFDT0FJOEFrQUNSQUpJQWt3Q1VBSlVBbGdDWEFKZ0FtUUNhQUpzQW5BQ2RBSjRBbndDZ0FLRUFvZ0NqQUtRQXBRQ21BS2NBcUFDcEFLb0Fxd0NzQUswQXJnQ3ZBTEFBc1FDeUFMTUF0QUMxQUxZQXR3QzRBTGtBdWdDN0FMd0F2UUMrQUw4QXdBREJBTUlBd3dERUFNVUF4Z0RIQU1nQXlRREtBTXNBekFETkFNNEF6d0RRQU5FQTBnRFRBTlFBMVFEV0FOY0EyQURaQU5vQTJ3RGNBTjBBM2dEZkFPQUE0UURpQU9NQTVBRGxBT1lBNXdEb0FPa0E2Z0RyQU93QTdRRHVBTzhBOEFEeEFQSUE4d0QwQVBVQTlnRDNBUGdBK1FENkFQc0EvQUQ5QVA0QS93QUFBUUVCQWdFREFRUUJCUUVHQVFjQkNBRUpBUW9CQ3dFTUFRMEJEZ0VQQVJBQkVRRVNBUk1CRkFFVkFSWUJGd0VZQVJrQkdnRWJBUndCSFFFZUFSOEJJQUVoQVNJQkl3RWtBU1VCSmdFbkFTZ0JLUUVxQVNzQkxBRXRBUzRCTHdFd0FURUJNZ0V6QVRRQk5RRTJBVGNCT0FFNUFUb0JPd0U4QVQwQlBnRS9BVUFCUVFGQ0FVTUJSQUZGQVVZQlJ3RklBVWtCU2dGTEFVd0JUUUZPQVU4QlVBRlJBVklCVXdGVUFWVUJWZ0ZYQVZnQldRRmFBVnNCWEFGZEFWNEJYd0ZnQVdFQllnRmpBV1FCWlFGbUFXY0JhQUZwQVdvQmF3RnNBVzBCYmdGdkFYQUJjUUZ5QVhNQmRBRjFBWFlCZHdGNEFYa0JlZ0Y3QVh3QmZRRitBWDhCZ0FHQkFZSUJnd0dFQVlVQmhnR0hBWWdCaVFHS0FZc0JqQUdOQVk0Qmp3R1FBWkVCa2dHVEFaUUJsUUdXQVpjQm1BR1pBWm9CbXdHY0FaMEJuZ0dmQWFBQm9RR2lBYU1CcEFHbEFhWUJwd0dvQWFrQnFnR3JBYXdCclFHdUFhOEJzQUd4QWJJQnN3RzBBYlVCdGdHM0FiZ0J1UUc2QWJzQnZBRzlBYjRCdndIQUFjRUJ3Z0hEQWNRQnhRSEdBY2NCeUFISkFjb0J5d0hNQWMwQnpnSFBBZEFCMFFIU0FkTUIxQUhWQWRZQjF3SFlBZGtCMmdIYkFkd0IzUUhlQWQ4QjRBSGhBZUlCNHdIa0FlVUI1Z0huQWVnQjZRSHFBZXNCN0FIdEFlNEI3d0h3QWZFQjhnSHpBZlFCOVFIMkFmY0IrQUg1QWZvQit3SDhBZjBCL2dIL0FRQUNBUUlDQWdNQ0JBSUZBZ1lDQndJSUFna0NDZ0lMQWd3Q0RRSU9BZzhDRUFJUkFoSUNFd0lVQWhVQ0ZnSVhBaGdDR1FJYUFoc0NIQUlkQWg0Q0h3SWdBaUVDSWdJakFpUUNKUUltQWljQ0tBSXBBaW9DS3dJc0FpMENMZ0l2QWpBQ01RSXlBak1DTkFJMUFqWUNOd0k0QWprQ09nSTdBandDUFFJK0FqOENRQUpCQWtJQ1F3SkVBa1VDUmdKSEFrZ0NTUUpLQWtzQ1RBSk5BazRDVHdKUUFsRUNVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0pjQWwwQ1hnSmZBbUFDWVFKaUFtTUNaQUpsQW1ZQ1p3Sm9BbWtDYWdKckFtd0NiUUp1QW04Q2NBSnhBbklDY3dKMEFuVUNkZ0ozQW5nQ2VRSjZBbnNDZkFKOUFuNENmd0tBQW9FQ2dnS0RBb1FDaFFLR0FvY0NpQUtKQW9vQ2l3S01BbzBDamdLUEFwQUNrUUtTQXBNQ2xBS1ZBcFlDbHdLWUFwa0NtZ0tiQXB3Q25RS2VBcDhDb0FLaEFxSUNvd0trQXFVQ3BnS25BcWdDcVFLcUFxc0NyQUt0QXE0Q3J3S3dBckVDc2dLekFyUUN0UUsyQXJjQ3VBSzVBcm9DdXdLOEFyMEN2Z0svQXNBQ3dRTENBc01DeEFMRkFzWUN4d0xJQXNrQ3lnTExBc3dDelFMT0FzOEMwQUxSQXRJQzB3TFVBdFVDMWdMWEF0Z0MyUUxhQXRzQzNBTGRBdDRDM3dMZ0F1RUM0Z0xqQXVRQzVRTG1BdWNDNkFMcEF1b0M2d0xzQXUwQzdnTHZBdkFDOFFMeUF2TUM5QUwxQXZZQzl3TDRBdmtDK2dMN0F2d0MvUUwrQXY4Q0FBTUJBd0lEQXdNRUF3VURCZ01IQXdnRENRTUtBd3NEREFNTkF3NEREd01RQXhFREVnTVRBeFFERlFNV0F4Y0RHQU1aQXhvREd3TWNBeDBESGdNZkF5QURJUU1pQXlNREpBTWxBeVlESndNb0F5a0RLZ01yQXl3RExRTXVBeThETUFNeEF6SURNd00wQXpVRE5nTTNBemdET1FNNkF6c0RQQU05QXo0RFB3TkFBMEVEUWdOREEwUURSUU5HQTBjRFNBTkpBMG9EU3dOTUEwMERUZ05QQTFBRFVRTlNBMU1EVkFOVkExWURWd05ZQTFrRFdnTmJBMXdEWFFOZUExOERZQU5oQTJJRFl3TmtBMlVEWmdObkEyZ0RhUU5xQTJzRGJBTnRBMjREYndOd0EzRURjZ056QTNRRGRRTjJBM2NEZUFONUEzb0Rld044QTMwRGZnTi9BNEFEZ1FPQ0E0TURoQU9GQTRZRGh3T0lBNGtEaWdPTEE0d0RqUU9PQTQ4RGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud09nQTZFRG9nT2pBNlFEcFFPbUE2Y0RxQU9wQTZvRHF3T3NBNjBEcmdPdkE3QURzUU95QTdNRHRBTzFBN1lEdHdPNEE3a0R1Z083QTd3RHZRTytBNzhEd0FQQkE4SUR3d1BFQThVRHhnUEhBOGdEeVFQS0E4c0R6QVBOQTg0RHp3UFFBOUVEMGdQVEE5UUQxUVBXQTljRDJBUFpBOW9EMndQY0E5MEQzZ1BmQStBRDRRUGlBK01ENUFQbEErWUQ1d1BvQStrRDZnUHJBK3dEN1FQdUErOEQ4QVB4QS9JRDh3UDBBL1VEOWdQM0EvZ0QrUVA2QS9zRC9BUDlBLzREL3dNQUJBRUVBZ1FEQkFRRUJRUUdCQWNFQ0FRSkJBb0VDd1FNQkEwRURnUVBCQkFFRVFRU0JCTUVGQVFWQkJZRUZ3UVlCQmtFR2dRYkJCd0VIUVFlQkI4RUlBUWhCQ0lFSXdRa0JDVUVKZ1FuQkNnRUtRUXFCQ3NFTEFRdEJDNEVMd1F3QkRFRU1nUXpCRFFFTlFRMkJEY0VPQVE1QkRvRU93UThCRDBFUGdRL0JFQUVRUVJDQkVNRVJBUkZCRVlFUndSSUJFa0VTZ1JMQkV3RVRRUk9CRThFVUFSUkJGSUVVd1JVQkZVRVZnUlhCRmdFV1FSYUJGc0VYQVJkQkY0RVh3UmdCR0VFWWdSakJHUUVaUVJtQkdjRWFBUnBCR29FYXdSc0JHMEViZ1J2QkhBRWNRUnlCSE1FZEFSMUJIWUVkd1I0QkhrRWVnUjdCSHdFZlFSK0JIOEVnQVNCQklJRWd3U0VCSVVFaGdTSEJJZ0VpUVNLQklzRWpBU05CSTRFandTUUJKRUVrZ1NUQkpRRWxRU1dCSmNFbUFTWkJKb0Vtd1NjQkowRW5nU2ZCS0FFb1FTaUJLTUVwQVNsQktZRXB3U29CS2tFcWdTckJLd0VyUVN1Qks4RXNBU3hCTElFc3dTMEJMVUV0Z1MzQkxnRXVRUzZCTHNFdkFTOUJMNEV2d1RBQk1FRXdnVERCTVFFeFFUR0JNY0V5QVRKQk1vRXl3VE1CTTBFemdUUEJOQUUwUVRTQk5NRTFBVFZCTllFMXdUWUJOa0UyZ1RiQk53RTNRVGVCTjhFNEFUaEJPSUU0d1RrQk9VRTVnVG5CT2dFNlFUcUJPc0U3QVR0Qk80RTd3VHdCUEVFOGdUekJQUUU5UVQyQlBjRStBVDVCUG9FK3dUOEJQMEUvZ1QvQkFBRkFRVUNCUU1GQkFVRkJRWUZCd1VJQlFrRkNnVUxCUXdGRFFVT0JROEZFQVVSQlJJRkV3VVVCUlVGRmdVWEJSZ0ZHUVVhQlJzRkhBVWRCUjRGSHdVZ0JTRUZJZ1VqQlNRRkpRVW1CU2NGS0FVcEJTb0ZLd1VzQlMwRkxnVXZCVEFGTVFVeUJUTUZOQVUxQlRZRk53VTRCVGtGT2dVN0JUd0ZQUVUrQlQ4RlFBVkJCVUlGUXdWRUJVVUZSZ1ZIQlVnRlNRVktCVXNGVEFWTkJVNEZUd1ZRQlZFRlVnVlRCVlFGVlFWV0JWY0ZXQVZaQlZvRld3VmNCVjBGWGdWZkJXQUZZUVZpQldNRlpBVmxCV1lGWndWb0JXa0ZhZ1ZyQld3RmJRVnVCVzhGY0FWeEJYSUZjd1YwQlhVRmRnVjNCWGdGZVFWNkJYc0ZmQVY5Qlg0RmZ3V0FCWUVGZ2dXREJZUUZoUVdHQlljRmlBV0pCWW9GaXdXTUJZMEZqZ1dQQlpBRmtRV1NCWk1GbEFXVkJaWUZsd1dZQlprRm1nV2JCWndGblFXZUJaOEZvQVdoQmFJRm93V2tCYVVGcGdXbkJhZ0ZxUVdxQmFzRnJBV3RCYTRGcndXd0JiRUZzZ1d6QmJRRnRRVzJCYmNGdUFXNUJib0Z1d1c4QmIwRnZnVy9CY0FGd1FYQ0JjTUZ4QVhGQmNZRnh3WElCY2tGeWdYTEJjd0Z6UVhPQmM4RjBBWFJCZElGMHdYVUJkVUYxZ1hYQmRnRjJRWGFCZHNGM0FYZEJkNEYzd1hnQmVFRjRnWGpCZVFGNVFYbUJlY0Y2QVhwQmVvRjZ3WHNCZTBGN2dYdkJmQUY4UVh5QmZNRjlBWDFCZllGOXdYNEJma0YrZ1g3QmZ3Ri9RWCtCZjhGQUFZQkJnSUdBd1lFQmdVR0JnWUhCZ2dHQ1FZS0Jnc0dEQVlOQmc0R0R3WVFCaEVHRWdZVEJoUUdGUVlXQmhjR0dBWVpCaG9HR3dZY0JoMEdIZ1lmQmlBR0lRWWlCaU1HSkFZbEJpWUdKd1lvQmlrR0tnWXJCaXdHTFFZdUJpOEdNQVl4QmpJR013WTBCalVHTmdZM0JqZ0dPUVk2QmpzR1BBWTlCajRHUHdaQUJrRUdRZ1pEQmtRR1JRWkdCa2NHU0FaSkJrb0dTd1pNQmswR1RnWlBCbEFHVVFaU0JsTUdWQVpWQmxZR1Z3WllCbGtHV2daYkJsd0dYUVplQmw4R1lBWmhCbUlHWXdaa0JtVUdaZ1puQm1nR2FRWnFCbXNHYkFadEJtNEdid1p3Qm5FR2NnWnpCblFHZFFaMkJuY0dlQVo1Qm5vR2V3WjhCbjBHZmdaL0JvQUdnUWFDQm9NR2hBYUZCb1lHaHdhSUJva0dpZ2FMQm93R2pRYU9CbzhHa0FhUkJwSUdrd2FVQnBVR2xnYVhCcGdHbVFhYUJwc0duQWFkQnA0R253YWdCcUVHb2dhakJxUUdwUWFtQnFjR3FBYXBCcW9HcXdhc0JxMEdyZ2F2QnJBR3NRYXlCck1HdEFhMUJyWUd0d2E0QnJrR3VnYTdCcndHdlFhK0JyOEd3QWJCQnNJR3d3YkVCc1VHeGdiSEJzZ0d5UWJLQnNzR3pBYk5CczRHendiUUJ0RUcwZ2JUQnRRRzFRYldCdGNHMkFiWkJ0b0cyd2JjQnQwRzNnYmZCdUFHNFFiaUJ1TUc1QWJsQnVZRzV3Ym9CdWtHNmdickJ1d0c3UWJ1QnU4RzhBYnhCdklHOHdiMEJ2VUc5Z2IzQnZnRytRYjZCdnNHL0FiOUJ2NEcvd1lBQndFSEFnY0RCd1FIQlFjR0J3Y0hDQWNKQndvSEN3Y01CdzBIRGdjUEJ4QUhFUWNTQnhNSEZBY1ZCeFlIRndjWUJ4a0hHZ2NiQnh3SEhRY2VCeDhISUFjaEJ5SUhJd2NrQnlVSEpnY25CeWdIS1FjcUJ5c0hMQWN0Qnk0SEx3Y3dCekVITWdjekJ6UUhOUWMyQnpjSE9BYzVCem9IT3djOEJ6MEhQZ2MvQjBBSFFRZENCME1IUkFkRkIwWUhSd2RJQjBrSFNnZExCMHdIVFFkT0IwOEhVQWRSQjFJSFV3ZFVCMVVIVmdkWEIxZ0hXUWRhQjFzSFhBZGRCMTRIWHdkZ0IyRUhZZ2RqQjJRSFpRZG1CMmNIYUFkcEIyb0hhd2RzQjIwSGJnZHZCM0FIY1FkeUIzTUhkQWQxQjNZSGR3ZDRCM2tIZWdkN0Izd0hmUWQrQjM4SGdBZUJCNElIZ3dlRUI0VUhoZ2VIQjRnSGlRZUtCNHNIakFlTkI0NEhqd2VRQjVFSGtnZVRCNVFIbFFlV0I1Y0htQWVaQjVvSG13ZWNCNTBIbmdlZkI2QUhvUWVpQjZNSHBBZWxCNllIcHdlb0I2a0hxZ2VyQjZ3SHJRZXVCNjhIc0FleEI3SUhzd2UwQjdVSHRnZTNCN2dIdVFlNkI3c0h2QWU5Qjc0SHZ3ZkFCOEVId2dmREI4UUh4UWZHQjhjSHlBZkpCOG9IeXdmTUI4MEh6Z2ZQQjlBSDBRZlNCOU1IMUFmVkI5WUgxd2ZZQjlrSDJnZmJCOXdIM1FmZUI5OEg0QWZoQitJSDR3ZmtCK1VINWdmbkIrZ0g2UWZxQitzSDdBZnRCKzRIN3dmd0IvRUg4Z2Z6Qi9RSDlRZjJCL2NIK0FmNUIvb0grd2Y4Qi8wSC9nZi9Cd0FJQVFnQ0NBTUlCQWdGQ0FZSUJ3Z0lDQWtJQ2dnTENBd0lEUWdPQ0E4SUVBZ1JDQklJRXdnVUNCVUlGZ2dYQ0JnSUdRZ2FDQnNJSEFnZENCNElId2dnQ0NFSUlnZ2pDQ1FJSlFnbUNDY0lLQWdwQ0NvSUt3Z3NDQzBJTGdndkNEQUlNUWd5Q0RNSU5BZzFDRFlJTndnNENEa0lPZ2c3Q0R3SVBRZytDRDhJUUFoQkNFSUlRd2hFQ0VVSVJnaEhDRWdJU1FoS0NFc0lUQWhOQ0U0SVR3aFFDRkVJVWdoVENGUUlWUWhXQ0ZjSVdBaFpDRm9JV3doY0NGMElYZ2hmQ0dBSVlRaGlDR01JWkFobENHWUlad2hvQ0drSWFnaHJDR3dJYlFodUNHOEljQWh4Q0hJSWN3aDBDSFVJZGdoM0NIZ0llUWg2Q0hzSWZBaDlDSDRJZndpQUNJRUlnZ2lEQ0lRSWhRaUdDSWNJaUFpSkNJb0lpd2lNQ0kwSWpnaVBDSkFJa1FpU0NKTUlsQWlWQ0pZSWx3aVlDSmtJbWdpYkNKd0luUWllQ0o4SW9BaWhDS0lJb3dpa0NLVUlwZ2luQ0tnSXFRaXFDS3NJckFpdENLNElyd2l3Q0xFSXNnaXpDTFFJdFFpMkNMY0l1QWk1Q0xvSXV3aThDTDBJdmdpL0NNQUl3UWpDQ01NSXhBakZDTVlJeHdqSUNNa0l5Z2pMQ013SXpRak9DTThJMEFqUkNOSUkwd2pVQ05VSTFnalhDTmdJMlFqYUNOc0kzQWpkQ040STN3amdDT0VJNGdqakNPUUk1UWptQ09jSTZBanBDT29JNndqc0NPMEk3Z2p2Q1BBSThRanlDUE1JOUFqMUNQWUk5d2o0Q1BrSStnajdDUHdJL1FqK0NQOElBQWtCQ1FJSkF3a0VDUVVKQmdrSENRZ0pDUWtLQ1FzSkRBa05DUTRKRHdrUUNSRUpFZ2tUQ1JRSkZRa1dDUmNKR0FrWkNSb0pHd2tjQ1IwSkhna2ZDU0FKSVFraUNTTUpKQWtsQ1NZSkp3a29DU2tKS2drckNTd0pMUWt1Q1M4Sk1Ba3hDVElKTXdrMENUVUpOZ2szQ1RnSk9RazZDVHNKUEFrOUNUNEpQd2xBQ1VFSlFnbERDVVFKUlFsR0NVY0pTQWxKQ1VvSlN3bE1DVTBKVGdsUENWQUpVUWxTQ1ZNSlZBbFZDVllKVndsWUNWa0pXZ2xiQ1Z3SlhRbGVDVjhKWUFsaENXSUpZd2xrQ1dVSlpnbG5DV2dKYVFscUNXc0piQWx0Q1c0SmJ3bHdDWEVKY2dsekNYUUpkUWwyQ1hjSmVBbDVDWG9KZXdsOENYMEpmZ2wvQ1lBSmdRbUNDWU1KaEFtRkNZWUpod21JQ1lrSmlnbUxDWXdKalFtT0NZOEprQW1SQ1pJSmt3bVVDWlVKbGdtWENaZ0ptUW1hQ1pzSm5BbWRDWjRKbndtZ0NhRUpvZ21qQ2FRSnBRbW1DYWNKcUFtcENhb0pxd21zQ2EwSnJnbXZDYkFKc1FteUNiTUp0QW0xQ2JZSnR3bTRDYmtKdWdtN0Nid0p2UW0rQ2I4SndBbkJDY0lKd3duRUNjVUp4Z25IQ2NnSnlRbktDY3NKekFuTkNjNEp6d25RQ2RFSjBnblRDZFFKMVFuV0NkY0oyQW5aQ2RvSjJ3bmNDZDBKM2duZkNlQUo0UW5pQ2VNSjVBbmxDZVlKNXdub0Nla0o2Z25yQ2V3SjdRbnVDZThKOEFueENmSUo4d24wQ2ZVSjlnbjNDZmdKK1FuNkNmc0ovQW45Q2Y0Si93a0FDZ0VLQWdvRENnUUtCUW9HQ2djS0NBb0pDZ29LQ3dvTUNnMEtEZ29QQ2hBS0VRb1NDaE1LRkFvVkNoWUtGd29ZQ2hrS0dnb2JDaHdLSFFvZUNoOEtJQW9oQ2lJS0l3b2tDaVVLSmdvbkNpZ0tLUW9xQ2lzS0xBb3RDaTRLTHdvd0NqRUtNZ296Q2pRS05RbzJDamNLT0FvNUNqb0tPd284Q2owS1Bnby9Da0FLUVFwQ0NrTUtSQXBGQ2tZS1J3cElDa2tLU2dwTENrd0tUUXBPQ2s4S1VBcFJDbElLVXdwVUNsVUtWZ3BYQ2xnS1dRcGFDbHNLWEFwZENsNEtYd3BnQ21FS1lncGpDbVFLWlFwbUNtY0thQXBwQ21vS2F3cHNDbTBLYmdwdkNuQUtjUXB5Q25NS2RBcDFDbllLZHdwNENua0tlZ3A3Q253S2ZRcCtDbjhLZ0FxQkNvSUtnd3FFQ29VS2hncUhDb2dLaVFxS0Nvc0tqQXFOQ280S2p3cVFDcEVLa2dxVENwUUtsUXFXQ3BjS21BcVpDcG9LbXdxY0NwMEtuZ3FmQ3FBS29RcWlDcU1LcEFxbENxWUtwd3FvQ3FrS3FncXJDcXdLclFxdUNxOEtzQXF4Q3JJS3N3cTBDclVLdGdxM0NyZ0t1UXE2Q3JzS3ZBcTlDcjRLdndyQUNzRUt3Z3JEQ3NRS3hRckdDc2NLeUFySkNzb0t5d3JNQ3MwS3pnclBDdEFLMFFyU0N0TUsxQXJWQ3RZSzF3cllDdGtLMmdyYkN0d0szUXJlQ3Q4SzRBcmhDdUlLNHdya0N1VUs1Z3JuQ3VnSzZRcnFDdXNLN0FydEN1NEs3d3J3Q3ZFSzhncnpDdlFLOVFyMkN2Y0srQXI1Q3ZvSyt3cjhDdjBLL2dyL0NnQUxBUXNDQ3dNTEJBc0ZDd1lMQndzSUN3a0xDZ3NMQ3d3TERRc09DdzhMRUFzUkN4SUxFd3NVQ3hVTEZnc1hDeGdMR1FzYUN4c0xIQXNkQ3g0TEh3c2dDeUVMSWdzakN5UUxKUXNtQ3ljTEtBc3BDeW9MS3dzc0N5MExMZ3N2Q3pBTE1Rc3lDek1MTkFzMUN6WUxOd3M0Q3prTE9nczdDendMUFFzK0N6OExRQXRCQzBJTFF3dEVDMFVMUmd0SEMwZ0xTUXRLQzBzTFRBdE5DMDRMVHd0UUMxRUxVZ3RUQzFRTFZRdFdDMWNMV0F0WkMxb0xXd3RjQzEwTFhndGZDMkFMWVF0aUMyTUxaQXRsQzJZTFp3dG9DMmtMYWd0ckMyd0xiUXR1QzI4TGNBdHhDM0lMY3d0MEMzVUxkZ3QzQzNnTGVRdDZDM3NMZkF0OUMzNExmd3VBQzRFTGdndURDNFFMaFF1R0M0Y0xpQXVKQzRvTGl3dU1DNDBMamd1UEM1QUxrUXVTQzVNTGxBdVZDNVlMbHd1WUM1a0xtZ3ViQzV3TG5RdWVDNThMb0F1aEM2SUxvd3VrQzZVTHBndW5DNmdMcVF1cUM2c0xyQXV0QzY0THJ3dXdDN0VMc2d1ekM3UUx0UXUyQzdjTHVBdTVDN29MdXd1OEM3MEx2Z3UvQzhBTHdRdkNDOE1MeEF2RkM4WUx4d3ZJQzhrTHlndkxDOHdMelF2T0M4OEwwQXZSQzlJTDB3dlVDOVVMMWd2WEM5Z0wyUXZhQzlzTDNBdmRDOTRMM3d2Z0MrRUw0Z3ZqQytRTDVRdm1DK2NMNkF2cEMrb0w2d3ZzQyswTDdndnZDL0FMOFF2eUMvTUw5QXYxQy9ZTDl3djRDL2tMK2d2N0Mvd0wvUXYrQy84TEFBd0JEQUlNQXd3RURBVU1CZ3dIREFnTUNRd0tEQXNNREF3TkRBNE1Ed3dRREJFTUVnd1REQlFNRlF3V0RCY01HQXdaREJvTUd3d2NEQjBNSGd3ZkRDQU1JUXdpRENNTUpBd2xEQ1lNSnd3b0RDa01LZ3dyREN3TUxRd3VEQzhNTUF3eERESU1Nd3cwRERVTU5ndzNERGdNT1F3NkREc01QQXc5REQ0TVB3eEFERUVNUWd4RERFUU1SUXhHREVjTVNBeEpERW9NU3d4TURFME1UZ3hQREZBTVVReFNERk1NVkF4VkRGWU1Wd3hZREZrTVdneGJERndNWFF4ZURGOE1ZQXhoREdJTVl3eGtER1VNWmd4bkRHZ01hUXhxREdzTWJBeHRERzRNYnd4d0RIRU1jZ3h6REhRTWRReDJESGNNZUF4NURIb01ld3g4REgwTWZneC9ESUFNZ1F5Q0RJTU1oQXlGRElZTWh3eUlESWtNaWd5TERJd01qUXlPREk4TWtBeVJESklNa3d5VURKVU1sZ3lYREpnTW1ReWFESnNNbkF5ZERKNE1ud3lnREtFTW9neWpES1FNcFF5bURLY01xQXlwREtvTXF3eXNESzBNcmd5dkRMQU1zUXl5RExNTXRBeTFETFlNdHd5NERMa011Z3k3REx3TXZReStETDhNd0F6QkRNSU13d3pFRE1VTXhnekhETWdNeVF6S0RNc016QXpORE00TXp3elFETkVNMGd6VEROUU0xUXpXRE5jTTJBelpETm9NMnd6Y0ROME0zZ3pmRE9BTTRRemlET01NNUF6bERPWU01d3pvRE9rTTZnenJET3dNN1F6dURPOE04QXp4RFBJTTh3ejBEUFVNOWd6M0RQZ00rUXo2RFBzTS9BejlEUDRNL3d3QURRRU5BZzBERFFRTkJRMEdEUWNOQ0EwSkRRb05DdzBNRFEwTkRnMFBEUkFORVEwU0RSTU5GQTBWRFJZTkZ3MFlEUmtOR2cwYkRSd05IUTBlRFI4TklBMGhEU0lOSXcwa0RTVU5KZzBuRFNnTktRMHFEU3NOTEEwdERTNE5MdzB3RFRFTk1nMHpEVFFOTlEwMkRUY05PQTA1RFRvTk93MDhEVDBOUGcwL0RVQU5RUTFDRFVNTlJBMUZEVVlOUncxSURVa05TZzFMRFV3TlRRMU9EVThOVUExUkRWSU5VdzFVRFZVTlZnMVhEVmdOV1ExYURWc05YQTFkRFY0Tlh3MWdEV0VOWWcxakRXUU5aUTFtRFdjTmFBMXBEV29OYXcxc0RXME5iZzF2RFhBTmNRMXlEWE1OZEExMURYWU5kdzE0RFhrTmVnMTdEWHdOZlExK0RYOE5nQTJCRFlJTmd3MkVEWVVOaGcySERZZ05pUTJLRFlzTmpBMk5EWTROancyUURaRU5rZzJURFpRTmxRMldEWmNObUEyWkRab05tdzJjRFowTm5nMmZEYUFOb1EyaURhTU5wQTJsRGFZTnB3Mm9EYWtOcWcyckRhd05yUTJ1RGE4TnNBMnhEYklOc3cyMERiVU50ZzIzRGJnTnVRMjZEYnNOdkEyOURiNE52dzNBRGNFTndnM0REY1FOeFEzR0RjY055QTNKRGNvTnl3M01EYzBOemczUERkQU4wUTNTRGRNTjFBM1ZEZFlOMXczWURka04yZzNiRGR3TjNRM2VEZDhONEEzaERlSU40dzNrRGVVTjVnM25EZWdONlEzcURlc043QTN0RGU0Tjd3M3dEZkVOOGczekRmUU45UTMyRGZjTitBMzVEZm9OK3czOERmME4vZzMvRFFBT0FRNENEZ01PQkE0RkRnWU9CdzRJRGdrT0NnNExEZ3dPRFE0T0RnOE9FQTRSRGhJT0V3NFVEaFVPRmc0WERoZ09HUTRhRGhzT0hBNGREaDRPSHc0Z0RpRU9JZzRqRGlRT0pRNG1EaWNPS0E0cERpb09LdzRzRGkwT0xnNHZEakFPTVE0eURqTU9OQTQxRGpZT053NDREamtPT2c0N0Rqd09QUTQrRGo4T1FBNUJEa0lPUXc1RURrVU9SZzVIRGtnT1NRNUtEa3NPVEE1TkRrNE9UdzVRRGxFT1VnNVREbFFPVlE1V0RsY09XQTVaRGxvT1d3NWNEbDBPWGc1ZkRtQU9ZUTVpRG1NT1pBNWxEbVlPWnc1b0Rta09hZzVyRG13T2JRNXVEbThPY0E1eERuSU9jdzUwRG5VT2RnNTNEbmdPZVE1NkRuc09mQTU5RG40T2Z3NkFEb0VPZ2c2RERvUU9oUTZHRG9jT2lBNkpEb29PaXc2TURvME9qZzZQRHBBT2tRNlNEcE1PbEE2VkRwWU9sdzZZRHBrT21nNmJEcHdPblE2ZURwOE9vQTZoRHFJT293NmtEcVVPcGc2bkRxZ09xUTZxRHFzT3JBNnREcTRPcnc2d0RyRU9zZzZ6RHJRT3RRNjJEcmNPdUE2NURyb091dzY4RHIwT3ZnNi9Ec0FPd1E3Q0RzTU94QTdGRHNZT3h3N0lEc2tPeWc3TERzd096UTdPRHM4TzBBN1JEdElPMHc3VUR0VU8xZzdYRHRnTzJRN2FEdHNPM0E3ZER0NE8zdzdnRHVFTzRnN2pEdVFPNVE3bUR1Y082QTdwRHVvTzZ3N3NEdTBPN2c3dkR2QU84UTd5RHZNTzlBNzFEdllPOXc3NER2a08rZzc3RHZ3Ty9RNytEdjhPQUE4QkR3SVBBdzhFRHdVUEJnOEhEd2dQQ1E4S0R3c1BEQThORHc0UER3OFFEeEVQRWc4VER4UVBGUThXRHhjUEdBOFpEeG9QR3c4Y0R4MFBIZzhmRHlBUElROGlEeU1QSkE4bER5WVBKdzhvRHlrUEtnOHJEeXdQTFE4dUR5OFBNQTh4RHpJUE13ODBEelVQTmc4M0R6Z1BPUTg2RHpzUFBBODlEejRQUHc5QUQwRVBRZzlERDBRUFJROUdEMGNQU0E5SkQwb1BTdzlNRDAwUFRnOVBEMUFQVVE5U0QxTVBWQTlWRDFZUFZ3OVlEMWtQV2c5YkQxd1BYUTllRDE4UFlBOWhEMklQWXc5a0QyVVBaZzluRDJnUGFROXFEMnNQYkE5dEQyNFBidzl3RDNFUGNnOXpEM1FQZFE5MkQzY1BlQTk1RDNvUGV3OThEMzBQZmc5L0Q0QVBnUStDRDRNUGhBK0ZENFlQaHcrSUQ0a1BpZytMRDR3UGpRK09ENDhQa0ErUkQ1SVBrdytVRDVVUGxnK1hENWdQbVErYUQ1c1BuQStkRDU0UG53K2dENkVQb2crakQ2UVBwUSttRDZjUHFBK3BENm9QcXcrc0Q2MFByZyt2RDdBUHNRK3lEN01QdEErMUQ3WVB0dys0RDdrUHVnKzdEN3dQdlErK0Q3OFB3QS9CRDhJUHd3L0VEOFVQeGcvSEQ4Z1B5US9LRDhzUHpBL05EODRQencvUUQ5RVAwZy9URDlRUDFRL1dEOWNQMkEvWkQ5b1Aydy9jRDkwUDNnL2ZEK0FQNFEvaUQrTVA1QS9sRCtZUDV3L29EK2tQNmcvckQrd1A3US91RCs4UDhBL3hEL0lQOHcvMEQvVVA5Zy8zRC9nUCtRLzZEL3NQL0EvOUQvNFAvdzhBRUFFUUFoQURFQVFRQlJBR0VBY1FDQkFKRUFvUUN4QU1FQTBRRGhBUEVCQVFFUkFTRUJNUUZCQVZFQllRRnhBWUVCa1FHaEFiRUJ3UUhSQWVFQjhRSUJBaEVDSVFJeEFrRUNVUUpoQW5FQ2dRS1JBcUVDc1FMQkF0RUM0UUx4QXdFREVRTWhBekVEUVFOUkEyRURjUU9CQTVFRG9RT3hBOEVEMFFQaEEvRUVBUVFSQkNFRU1RUkJCRkVFWVFSeEJJRUVrUVNoQkxFRXdRVFJCT0VFOFFVQkJSRUZJUVV4QlVFRlVRVmhCWEVGZ1FXUkJhRUZzUVhCQmRFRjRRWHhCZ0VHRVFZaEJqRUdRUVpSQm1FR2NRYUJCcEVHb1FheEJzRUcwUWJoQnZFSEFRY1JCeUVITVFkQkIxRUhZUWR4QjRFSGtRZWhCN0VId1FmUkIrRUg4UWdCQ0JFSUlRZ3hDRUVJVVFoaENIRUlnUWlSQ0tFSXNRakJDTkVJNFFqeENRRUpFUWtoQ1RFSlFRbFJDV0VKY1FtQkNaRUpvUW14Q2NFSjBRbmhDZkVLQVFvUkNpRUtNUXBCQ2xFS1lRcHhDb0VLa1FxaENyRUt3UXJSQ3VFSzhRc0JDeEVMSVFzeEMwRUxVUXRoQzNFTGdRdVJDNkVMc1F2QkM5RUw0UXZ4REFFTUVRd2hEREVNUVF4UkRHRU1jUXlCREpFTW9ReXhETUVNMFF6aERQRU5BUTBSRFNFTk1RMUJEVkVOWVExeERZRU5rUTJoRGJFTndRM1JEZUVOOFE0QkRoRU9JUTR4RGtFT1VRNWhEbkVPZ1E2UkRxRU9zUTdCRHRFTzRRN3hEd0VQRVE4aER6RVBRUTlSRDJFUGNRK0JENUVQb1EreEQ4RVAwUS9oRC9FQUFSQVJFQ0VRTVJCQkVGRVFZUkJ4RUlFUWtSQ2hFTEVRd1JEUkVPRVE4UkVCRVJFUklSRXhFVUVSVVJGaEVYRVJnUkdSRWFFUnNSSEJFZEVSNFJIeEVnRVNFUkloRWpFU1FSSlJFbUVTY1JLQkVwRVNvUkt4RXNFUzBSTGhFdkVUQVJNUkV5RVRNUk5CRTFFVFlSTnhFNEVUa1JPaEU3RVR3UlBSRStFVDhSUUJGQkVVSVJReEZFRVVVUlJoRkhFVWdSU1JGS0VVc1JUQkZORVU0UlR4RlFFVkVSVWhGVEVWUVJWUkZXRVZjUldCRlpFVm9SV3hGY0VWMFJYaEZmRVdBUllSRmlFV01SWkJGbEVXWVJaeEZvRVdrUmFoRnJFV3dSYlJGdUVXOFJjQkZ4RVhJUmN4RjBFWFVSZGhGM0VYZ1JlUkY2RVhzUmZCRjlFWDRSZnhHQUVZRVJnaEdERVlRUmhSR0dFWWNSaUJHSkVZb1JpeEdNRVkwUmpoR1BFWkFSa1JHU0VaTVJsQkdWRVpZUmx4R1lFWmtSbWhHYkVad1JuUkdlRVo4Um9CR2hFYUlSb3hHa0VhVVJwaEduRWFnUnFSR3FFYXNSckJHdEVhNFJyeEd3RWJFUnNoR3pFYlFSdFJHMkViY1J1Qkc1RWJvUnV4RzhFYjBSdmhHL0VjQVJ3UkhDRWNNUnhCSEZFY1lSeHhISUVja1J5aEhMRWN3UnpSSE9FYzhSMEJIUkVkSVIweEhVRWRVUjFoSFhFZGdSMlJIYUVkc1IzQkhkRWQ0UjN4SGdFZUVSNGhIakVlUVI1UkhtRWVjUjZCSHBFZW9SNnhIc0VlMFI3aEh2RWZBUjhSSHlFZk1SOUJIMUVmWVI5eEg0RWZrUitoSDdFZndSL1JIK0VmOFJBQklCRWdJU0F4SUVFZ1VTQmhJSEVnZ1NDUklLRWdzU0RCSU5FZzRTRHhJUUVoRVNFaElURWhRU0ZSSVdFaGNTR0JJWkVob1NHeEljRWgwU0hoSWZFaUFTSVJJaUVpTVNKQklsRWlZU0p4SW9FaWtTS2hJckVpd1NMUkl1RWk4U01CSXhFaklTTXhJMEVqVVNOaEkzRWpnU09SSTZFanNTUEJJOUVqNFNQeEpBRWtFU1FoSkRFa1FTUlJKR0VrY1NTQkpKRWtvU1N4Sk1FazBTVGhKUEVsQVNVUkpTRWxNU1ZCSlZFbFlTVnhKWUVsa1NXaEpiRWx3U1hSSmVFbDhTWUJKaEVtSVNZeEprRW1VU1poSm5FbWdTYVJKcUVtc1NiQkp0RW00U2J4SndFbkVTY2hKekVuUVNkUkoyRW5jU2VCSjVFbm9TZXhKOEVuMFNmaEovRW9BU2dSS0NFb01TaEJLRkVvWVNoeEtJRW9rU2loS0xFb3dTalJLT0VvOFNrQktSRXBJU2t4S1VFcFVTbGhLWEVwZ1NtUkthRXBzU25CS2RFcDRTbnhLZ0VxRVNvaEtqRXFRU3BSS21FcWNTcUJLcEVxb1NxeEtzRXEwU3JoS3ZFckFTc1JLeUVyTVN0QksxRXJZU3R4SzRFcmtTdWhLN0Vyd1N2UksrRXI4U3dCTEJFc0lTd3hMRUVzVVN4aExIRXNnU3lSTEtFc3NTekJMTkVzNFN6eExRRXRFUzBoTFRFdFFTMVJMV0V0Y1MyQkxaRXRvUzJ4TGNFdDBTM2hMZkV1QVM0UkxpRXVNUzVCTGxFdVlTNXhMb0V1a1M2aExyRXV3UzdSTHVFdThTOEJMeEV2SVM4eEwwRXZVUzloTDNFdmdTK1JMNkV2c1MvQkw5RXY0Uy94SUFFd0VUQWhNREV3UVRCUk1HRXdjVENCTUpFd29UQ3hNTUV3MFREaE1QRXhBVEVSTVNFeE1URkJNVkV4WVRGeE1ZRXhrVEdoTWJFeHdUSFJNZUV4OFRJQk1oRXlJVEl4TWtFeVVUSmhNbkV5Z1RLUk1xRXlzVExCTXRFeTRUTHhNd0V6RVRNaE16RXpRVE5STTJFemNUT0JNNUV6b1RPeE04RXowVFBoTS9FMEFUUVJOQ0UwTVRSQk5GRTBZVFJ4TklFMGtUU2hOTEUwd1RUUk5PRTA4VFVCTlJFMUlUVXhOVUUxVVRWaE5YRTFnVFdSTmFFMXNUWEJOZEUxNFRYeE5nRTJFVFloTmpFMlFUWlJObUUyY1RhQk5wRTJvVGF4TnNFMjBUYmhOdkUzQVRjUk55RTNNVGRCTjFFM1lUZHhONEUza1RlaE43RTN3VGZSTitFMzhUZ0JPQkU0SVRneE9FRTRVVGhoT0hFNGdUaVJPS0U0c1RqQk9ORTQ0VGp4T1FFNUVUa2hPVEU1UVRsUk9XRTVjVG1CT1pFNW9UbXhPY0U1MFRuaE9mRTZBVG9ST2lFNk1UcEJPbEU2WVRweE9vRTZrVHFoT3JFNndUclJPdUU2OFRzQk94RTdJVHN4TzBFN1VUdGhPM0U3Z1R1Uk82RTdzVHZCTzlFNzRUdnhQQUU4RVR3aFBERThRVHhSUEdFOGNUeUJQSkU4b1R5eFBNRTgwVHpoUFBFOUFUMFJQU0U5TVQxQlBWRTlZVDF4UFlFOWtUMmhQYkU5d1QzUlBlRTk4VDRCUGhFK0lUNHhQa0UrVVQ1aFBuRStnVDZSUHFFK3NUN0JQdEUrNFQ3eFB3RS9FVDhoUHpFL1FUOVJQMkUvY1QrQlA1RS9vVCt4UDhFLzBUL2hQL0V3QVVBUlFDRkFNVUJCUUZGQVlVQnhRSUZBa1VDaFFMRkF3VURSUU9GQThVRUJRUkZCSVVFeFFVRkJVVUZoUVhGQmdVR1JRYUZCc1VIQlFkRkI0VUh4UWdGQ0VVSWhRakZDUVVKUlFtRkNjVUtCUXBGQ29VS3hRc0ZDMFVMaFF2RkRBVU1SUXlGRE1VTkJRMUZEWVVOeFE0RkRrVU9oUTdGRHdVUFJRK0ZEOFVRQlJCRkVJVVF4UkVGRVVVUmhSSEZFZ1VTUlJLRkVzVVRCUk5GRTRVVHhSUUZGRVVVaFJURkZRVVZSUldGRmNVV0JSWkZGb1VXeFJjRkYwVVhoUmZGR0FVWVJSaUZHTVVaQlJsRkdZVVp4Um9GR2tVYWhSckZHd1ViUlJ1Rkc4VWNCUnhGSElVY3hSMEZIVVVkaFIzRkhnVWVSUjZGSHNVZkJSOUZINFVmeFNBRklFVWdoU0RGSVFVaFJTR0ZJY1VpQlNKRklvVWl4U01GSTBVamhTUEZKQVVrUlNTRkpNVWxCU1ZGSllVbHhTWUZKa1VtaFNiRkp3VW5SU2VGSjhVb0JTaEZLSVVveFNrRktVVXBoU25GS2dVcVJTcUZLc1VyQlN0Rks0VXJ4U3dGTEVVc2hTekZMUVV0UlMyRkxjVXVCUzVGTG9VdXhTOEZMMFV2aFMvRk1BVXdSVENGTU1VeEJURkZNWVV4eFRJRk1rVXloVExGTXdVelJUT0ZNOFUwQlRSRk5JVTB4VFVGTlVVMWhUWEZOZ1UyUlRhRk5zVTNCVGRGTjRVM3hUZ0ZPRVU0aFRqRk9RVTVSVG1GT2NVNkJUcEZPb1U2eFRzRk8wVTdoVHZGUEFVOFJUeUZQTVU5QlQxRlBZVTl4VDRGUGtVK2hUN0ZQd1UvUlQrRlA4VUFCVUJGUUlWQXhVRUZRVVZCaFVIRlFnVkNSVUtGUXNWREJVTkZRNFZEeFVRRlJFVkVoVVRGUlFWRlJVV0ZSY1ZHQlVaRlJvVkd4VWNGUjBWSGhVZkZTQVZJUlVpRlNNVkpCVWxGU1lWSnhVb0ZTa1ZLaFVyRlN3VkxSVXVGUzhWTUJVeEZUSVZNeFUwRlRVVk5oVTNGVGdWT1JVNkZUc1ZQQlU5RlQ0VlB4VkFGVUVWUWhWREZVUVZSUlZHRlVjVlNCVkpGVW9WU3hWTUZVMFZUaFZQRlZBVlVSVlNGVk1WVkJWVkZWWVZWeFZZRlZrVldoVmJGVndWWFJWZUZWOFZZQlZoRldJVll4VmtGV1VWWmhWbkZXZ1ZhUlZxRldzVmJCVnRGVzRWYnhWd0ZYRVZjaFZ6RlhRVmRSVjJGWGNWZUJWNUZYb1ZleFY4RlgwVmZoVi9GWUFWZ1JXQ0ZZTVZoQldGRllZVmh4V0lGWWtWaWhXTEZZd1ZqUldPRlk4VmtCV1JGWklWa3hXVUZaVVZsaFdYRlpnVm1SV2FGWnNWbkJXZEZaNFZueFdnRmFFVm9oV2pGYVFWcFJXbUZhY1ZxQldwRmFvVnF4V3NGYTBWcmhXdkZiQVZzUld5RmJNVnRCVzFGYllWdHhXNEZia1Z1aFc3RmJ3VnZSVytGYjhWd0JYQkZjSVZ3eFhFRmNVVnhoWEhGY2dWeVJYS0Zjc1Z6QlhORmM0Vnp4WFFGZEVWMGhYVEZkUVYxUlhXRmRjVjJCWFpGZG9WMnhYY0ZkMFYzaFhmRmVBVjRSWGlGZU1WNUJYbEZlWVY1eFhvRmVrVjZoWHJGZXdWN1JYdUZlOFY4Qlh4RmZJVjh4WDBGZlVWOWhYM0ZmZ1YrUlg2RmZzVi9CWDlGZjRWL3hVQUZnRVdBaFlERmdRV0JSWUdGZ2NXQ0JZSkZnb1dDeFlNRmcwV0RoWVBGaEFXRVJZU0ZoTVdGQllWRmhZV0Z4WVlGaGtXR2hZYkZod1dIUlllRmg4V0lCWWhGaUlXSXhZa0ZpVVdKaFluRmlnV0tSWXFGaXNXTEJZdEZpNFdMeFl3RmpFV01oWXpGalFXTlJZMkZqY1dPQlk1RmpvV094WThGajBXUGhZL0ZrQVdRUlpDRmtNV1JCWkZGa1lXUnhaSUZra1dTaFpMRmt3V1RSWk9GazhXVUJaUkZsSVdVeFpVRmxVV1ZoWlhGbGdXV1JaYUZsc1dYQlpkRmw0V1h4WmdGbUVXWWhaakZtUVdaUlptRm1jV2FCWnBGbW9XYXhac0ZtMFdiaFp2Rm5BV2NSWnlGbk1XZEJaMUZuWVdkeFo0Rm5rV2VoWjdGbndXZlJaK0ZuOFdnQmFCRm9JV2d4YUVGb1VXaGhhSEZvZ1dpUmFLRm9zV2pCYU5GbzRXanhhUUZwRVdraGFURnBRV2xSYVdGcGNXbUJhWkZwb1dteGFjRnAwV25oYWZGcUFXb1JhaUZxTVdwQmFsRnFZV3B4YW9GcWtXcWhhckZxd1dyUmF1RnE4V3NCYXhGcklXc3hhMEZyVVd0aGEzRnJnV3VSYTZGcnNXdkJhOUZyNFd2eGJBRnNFV3doYkRGc1FXeFJiR0ZzY1d5QmJKRnNvV3l4Yk1GczBXemhiUEZ0QVcwUmJTRnRNVzFCYlZGdFlXMXhiWUZ0a1cyaGJiRnR3VzNSYmVGdDhXNEJiaEZ1SVc0eGJrRnVVVzVoYm5GdWdXNlJicUZ1c1c3QmJ0RnU0Vzd4YndGdkVXOGhiekZ2UVc5UmIyRnZjVytCYjVGdm9XK3hiOEZ2MFcvaGIvRmdBWEFSY0NGd01YQkJjRkZ3WVhCeGNJRndrWENoY0xGd3dYRFJjT0Z3OFhFQmNSRnhJWEV4Y1VGeFVYRmhjWEZ4Z1hHUmNhRnhzWEhCY2RGeDRYSHhjZ0Z5RVhJaGNqRnlRWEpSY21GeWNYS0JjcEZ5b1hLeGNzRnkwWExoY3ZGekFYTVJjeUZ6TVhOQmMxRnpZWE54YzRGemtYT2hjN0Z6d1hQUmMrRno4WFFCZEJGMElYUXhkRUYwVVhSaGRIRjBnWFNSZEtGMHNYVEJkTkYwNFhUeGRRRjFFWFVoZFRGMVFYVlJkV0YxY1hXQmRaRjFvWFd4ZGNGMTBYWGhkZkYyQVhZUmRpRjJNWFpCZGxGMllYWnhkb0Yya1hhaGRyRjJ3WGJSZHVGMjhYY0JkeEYzSVhjeGQwRjNVWGRoZDNGM2dYZVJkNkYzc1hmQmQ5RjM0WGZ4ZUFGNEVYZ2hlREY0UVhoUmVHRjRjWGlCZUpGNG9YaXhlTUY0MFhqaGVQRjVBWGtSZVNGNU1YbEJlVkY1WVhseGVZRjVrWG1oZWJGNXdYblJlZUY1OFhvQmVoRjZJWG94ZWtGNlVYcGhlbkY2Z1hxUmVxRjZzWHJCZXRGNjRYcnhld0Y3RVhzaGV6RjdRWHRSZTJGN2NYdUJlNUY3b1h1eGU4RjcwWHZoZS9GOEFYd1JmQ0Y4TVh4QmZGRjhZWHh4ZklGOGtYeWhmTEY4d1h6UmZPRjg4WDBCZlJGOUlYMHhmVUY5VVgxaGZYRjlnWDJSZmFGOXNYM0JmZEY5NFgzeGZnRitFWDRoZmpGK1FYNVJmbUYrY1g2QmZwRitvWDZ4ZnNGKzBYN2hmdkYvQVg4UmZ5Ri9NWDlCZjFGL1lYOXhmNEYva1graGY3Ri93WC9SZitGLzhYQUJnQkdBSVlBeGdFR0FVWUJoZ0hHQWdZQ1JnS0dBc1lEQmdOR0E0WUR4Z1FHQkVZRWhnVEdCUVlGUmdXR0JjWUdCZ1pHQm9ZR3hnY0dCMFlIaGdmR0NBWUlSZ2lHQ01ZSkJnbEdDWVlKeGdvR0NrWUtoZ3JHQ3dZTFJndUdDOFlNQmd4R0RJWU14ZzBHRFVZTmhnM0dEZ1lPUmc2R0RzWVBCZzlHRDRZUHhoQUdFRVlRaGhER0VRWVJSaEdHRWNZU0JoSkdFb1lTeGhNR0UwWVRoaFBHRkFZVVJoU0dGTVlWQmhWR0ZZWVZ4aFlHRmtZV2hoYkdGd1lYUmhlR0Y4WVlCaGhHR0lZWXhoa0dHVVlaaGhuR0dnWWFSaHFHR3NZYkJodEdHNFlieGh3R0hFWWNoaHpHSFFZZFJoMkdIY1llQmg1R0hvWWV4aDhHSDBZZmhoL0dJQVlnUmlDR0lNWWhCaUZHSVlZaHhpSUdJa1lpaGlMR0l3WWpSaU9HSThZa0JpUkdKSVlreGlVR0pVWWxoaVhHSmdZbVJpYUdKc1luQmlkR0o0WW54aWdHS0VZb2hpakdLUVlwUmltR0tjWXFCaXBHS29ZcXhpc0dLMFlyaGl2R0xBWXNSaXlHTE1ZdEJpMUdMWVl0eGk0R0xrWXVoaTdHTHdZdlJpK0dMOFl3QmpCR01JWXd4akVHTVVZeGhqSEdNZ1l5UmpLR01zWXpCak5HTTRZenhqUUdORVkwaGpUR05RWTFSaldHTmNZMkJqWkdOb1kyeGpjR04wWTNoamZHT0FZNFJqaUdPTVk1QmpsR09ZWTV4am9HT2tZNmhqckdPd1k3Ump1R084WThCanhHUElZOHhqMEdQVVk5aGozR1BnWStSajZHUHNZL0JqOUdQNFkveGdBR1FFWkFoa0RHUVFaQlJrR0dRY1pDQmtKR1FvWkN4a01HUTBaRGhrUEdSQVpFUmtTR1JNWkZCa1ZHUllaRnhrWUdSa1pHaGtiR1J3WkhSa2VHUjhaSUJraEdTSVpJeGtrR1NVWkpoa25HU2daS1JrcUdTc1pMQmt0R1M0Wkx4a3dHVEVaTWhrekdUUVpOUmsyR1RjWk9CazVHVG9aT3hrOEdUMFpQaGsvR1VBWlFSbENHVU1aUkJsRkdVWVpSeGxJR1VrWlNobExHVXdaVFJsT0dVOFpVQmxSR1ZJWlV4bFVHVlVaVmhsWEdWZ1pXUmxhR1ZzWlhCbGRHVjRaWHhsZ0dXRVpZaGxqR1dRWlpSbG1HV2NaYUJscEdXb1pheGxzR1cwWmJobHZHWEFaY1JseUdYTVpkQmwxR1hZWmR4bDRHWGtaZWhsN0dYd1pmUmwrR1g4WmdCbUJHWUlaZ3htRUdZVVpoaG1IR1lnWmlSbUtHWXNaakJtTkdZNFpqeG1RR1pFWmtobVRHWlFabFJtV0daY1ptQm1aR1pvWm14bWNHWjBabmhtZkdhQVpvUm1pR2FNWnBCbWxHYVlacHhtb0dha1pxaG1yR2F3WnJSbXVHYThac0JteEdiSVpzeG0wR2JVWnRobTNHYmdadVJtNkdic1p2Qm05R2I0WnZ4bkFHY0Vad2huREdjUVp4Um5HR2NjWnlCbkpHY29aeXhuTUdjMFp6aG5QR2RBWjBSblNHZE1aMUJuVkdkWVoxeG5ZR2RrWjJobmJHZHdaM1JuZUdkOFo0Qm5oR2VJWjR4bmtHZVVaNWhubkdlZ1o2Um5xR2VzWjdCbnRHZTRaN3hud0dmRVo4aG56R2ZRWjlSbjJHZmNaK0JuNUdmb1oreG44R2YwWi9obi9HUUFhQVJvQ0dnTWFCQm9GR2dZYUJ4b0lHZ2thQ2hvTEdnd2FEUm9PR2c4YUVCb1JHaElhRXhvVUdoVWFGaG9YR2hnYUdSb2FHaHNhSEJvZEdoNGFIeG9nR2lFYUlob2pHaVFhSlJvbUdpY2FLQm9wR2lvYUt4b3NHaTBhTGhvdkdqQWFNUm95R2pNYU5CbzFHallhTnhvNEdqa2FPaG83R2p3YVBSbytHajhhUUJwQkdrSWFReHBFR2tVYVJocEhHa2dhU1JwS0drc2FUQnBOR2s0YVR4cFFHbEVhVWhwVEdsUWFWUnBXR2xjYVdCcFpHbG9hV3hwY0dsMGFYaHBmR21BYVlScGlHbU1hWkJwbEdtWWFaeHBvR21rYWFocHJHbXdhYlJwdUdtOGFjQnB4R25JYWN4cDBHblVhZGhwM0duZ2FlUnA2R25zYWZCcDlHbjRhZnhxQUdvRWFnaHFER29RYWhScUdHb2NhaUJxSkdvb2FpeHFNR28wYWpocVBHcEFha1JxU0dwTWFsQnFWR3BZYWx4cVlHcGthbWhxYkdwd2FuUnFlR3A4YW9CcWhHcUlhb3hxa0dxVWFwaHFuR3FnYXFScXFHcXNhckJxdEdxNGFyeHF3R3JFYXNocXpHclFhdFJxMkdyY2F1QnE1R3JvYXV4cThHcjBhdmhxL0dzQWF3UnJDR3NNYXhCckZHc1lheHhySUdza2F5aHJMR3N3YXpSck9HczhhMEJyUkd0SWEweHJVR3RVYTFoclhHdGdhMlJyYUd0c2EzQnJkR3Q0YTN4cmdHdUVhNGhyakd1UWE1UnJtR3VjYTZCcnBHdW9hNnhyc0d1MGE3aHJ2R3ZBYThScnlHdk1hOUJyMUd2WWE5eHI0R3ZrYStocjdHdndhL1JyK0d2OGFBQnNCR3dJYkF4c0VHd1ViQmhzSEd3Z2JDUnNLR3dzYkRCc05HdzRiRHhzUUd4RWJFaHNUR3hRYkZSc1dHeGNiR0JzWkd4b2JHeHNjR3gwYkhoc2ZHeUFiSVJzaUd5TWJKQnNsR3lZYkp4c29HeWtiS2hzckd5d2JMUnN1R3k4Yk1Cc3hHekliTXhzMEd6VWJOaHMzR3pnYk9SczZHenNiUEJzOUd6NGJQeHRBRzBFYlFodERHMFFiUlJ0R0cwY2JTQnRKRzBvYlN4dE1HMDBiVGh0UEcxQWJVUnRTRzFNYlZCdFZHMVliVnh0WUcxa2JXaHRiRzF3YlhSdGVHMThiWUJ0aEcySWJZeHRrRzJVYlpodG5HMmdiYVJ0cUcyc2JiQnR0RzI0YmJ4dHdHM0ViY2h0ekczUWJkUnQyRzNjYmVCdDVHM29iZXh0OEczMGJmaHQvRzRBYmdSdUNHNE1iaEJ1Rkc0WWJoeHVJRzRrYmlodUxHNHdialJ1T0c0OGJrQnVSRzVJYmt4dVVHNVVibGh1WEc1Z2JtUnVhRzVzYm5CdWRHNTRibnh1Z0c2RWJvaHVqRzZRYnBSdW1HNmNicUJ1cEc2b2JxeHVzRzYwYnJodXZHN0Fic1J1eUc3TWJ0QnUxRzdZYnR4dTRHN2tidWh1N0c3d2J2UnUrRzc4YndCdkJHOElid3h2RUc4VWJ4aHZIRzhnYnlSdktHOHNiekJ2Tkc4NGJ6eHZRRzlFYjBodlRHOVFiMVJ2V0c5Y2IyQnZaRzlvYjJ4dmNHOTBiM2h2ZkcrQWI0UnZpRytNYjVCdmxHK1liNXh2b0cra2I2aHZyRyt3YjdSdnVHKzhiOEJ2eEcvSWI4eHYwRy9VYjlodjNHL2diK1J2Nkcvc2IvQnY5Ry80Yi94c0FIQUVjQWh3REhBUWNCUndHSEFjY0NCd0pIQW9jQ3h3TUhBMGNEaHdQSEJBY0VSd1NIQk1jRkJ3VkhCWWNGeHdZSEJrY0dod2JIQndjSFJ3ZUhCOGNJQndoSENJY0l4d2tIQ1VjSmh3bkhDZ2NLUndxSENzY0xCd3RIQzRjTHh3d0hERWNNaHd6SERRY05SdzJIRGNjT0J3NUhEb2NPeHc4SEQwY1Body9IRUFjUVJ4Q0hFTWNSQnhGSEVZY1J4eElIRWtjU2h4TEhFd2NUUnhPSEU4Y1VCeFJIRkljVXh4VUhGVWNWaHhYSEZnY1dSeGFIRnNjWEJ4ZEhGNGNYeHhnSEdFY1loeGpIR1FjWlJ4bUhHY2NhQnhwSEdvY2F4eHNIRzBjYmh4dkhIQWNjUnh5SEhNY2RCeDFISFljZHh4NEhIa2NlaHg3SEh3Y2ZSeCtISDhjZ0J5QkhJSWNneHlFSElVY2hoeUhISWdjaVJ5S0hJc2NqQnlOSEk0Y2p4eVFISkVja2h5VEhKUWNsUnlXSEpjY21CeVpISm9jbXh5Y0hKMGNuaHlmSEtBY29SeWlIS01jcEJ5bEhLWWNweHlvSEtrY3FoeXJIS3djclJ5dUhLOGNzQnl4SExJY3N4eTBITFVjdGh5M0hMZ2N1Unk2SExzY3ZCeTlITDRjdnh6QUhNRWN3aHpESE1RY3hSekdITWNjeUJ6SkhNb2N5eHpNSE0wY3poelBITkFjMFJ6U0hOTWMxQnpWSE5ZYzF4ellITmtjMmh6YkhOd2MzUnplSE44YzRCemhIT0ljNHh6a0hPVWM1aHpuSE9nYzZSenFIT3NjN0J6dEhPNGM3eHp3SFBFYzhoenpIUFFjOVJ6MkhQY2MrQno1SFBvYyt4ejhIUDBjL2h6L0hBQWRBUjBDSFFNZEJCMEZIUVlkQngwSUhRa2RDaDBMSFF3ZERSME9IUThkRUIwUkhSSWRFeDBVSFJVZEZoMFhIUmdkR1IwYUhSc2RIQjBkSFI0ZEh4MGdIU0VkSWgwakhTUWRKUjBtSFNjZEtCMHBIU29kS3gwc0hTMGRMaDB2SFRBZE1SMHlIVE1kTkIwMUhUWWROeDA0SFRrZE9oMDdIVHdkUFIwK0hUOGRRQjFCSFVJZFF4MUVIVVVkUmgxSEhVZ2RTUjFLSFVzZFRCMU5IVTRkVHgxUUhWRWRVaDFUSFZRZFZSMVdIVmNkV0IxWkhWb2RXeDFjSFYwZFhoMWZIV0FkWVIxaUhXTWRaQjFsSFdZZFp4MW9IV2tkYWgxckhXd2RiUjF1SFc4ZGNCMXhIWElkY3gxMEhYVWRkaDEzSFhnZGVSMTZIWHNkZkIxOUhYNGRmeDJBSFlFZGdoMkRIWVFkaFIyR0hZY2RpQjJKSFlvZGl4Mk1IWTBkamgyUEhaQWRrUjJTSFpNZGxCMlZIWllkbHgyWUhaa2RtaDJiSFp3ZG5SMmVIWjhkb0IyaEhhSWRveDJrSGFVZHBoMm5IYWdkcVIycUhhc2RyQjJ0SGE0ZHJ4MndIYkVkc2gyekhiUWR0UjIySGJjZHVCMjVIYm9kdXgyOEhiMGR2aDIvSGNBZHdSM0NIY01keEIzRkhjWWR4eDNJSGNrZHloM0xIY3dkelIzT0hjOGQwQjNSSGRJZDB4M1VIZFVkMWgzWEhkZ2QyUjNhSGRzZDNCM2RIZDRkM3gzZ0hlRWQ0aDNqSGVRZDVSM21IZWNkNkIzcEhlb2Q2eDNzSGUwZDdoM3ZIZkFkOFIzeUhmTWQ5QjMxSGZZZDl4MzRIZmtkK2gzN0hmd2QvUjMrSGY4ZEFCNEJIZ0llQXg0RUhnVWVCaDRISGdnZUNSNEtIZ3NlREI0TkhnNGVEeDRRSGhFZUVoNFRIaFFlRlI0V0hoY2VHQjRaSGhvZUd4NGNIaDBlSGg0ZkhpQWVJUjRpSGlNZUpCNGxIaVllSng0b0hpa2VLaDRySGl3ZUxSNHVIaThlTUI0eEhqSWVNeDQwSGpVZU5oNDNIamdlT1I0Nkhqc2VQQjQ5SGo0ZVB4NVFRUVo1QUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQUVDOUJRQUFWRzk1YjNSaFgxSkJNZ0FBUWF3RkFBQVFRUUFDQUFBcUFBQUFBQUI5bXAvQ01oWVJ3SHJGQWtCOW1wL0NNaFlSd0hyRkFrRGpUWm5DZ0NDdFFBQUFBQURqVFpuQ2dDQ3RRSXBPZzBFaGJKN0NNaFlSd0lwT2cwR0dINWpDZ0NDdFFJbE9qMEdlNkozQ0lwWFd2L0VCaVVFRG5KZkM1ZE9tUUhyRkFzRGpUWm5DZ0NDdFFIckZBc0I5bXAvQ01oWVJ3SXBPZzhFaGJKN0NNaFlSd0lwT2c4R0dINWpDZ0NDdFFQRUJpY0VEbkpmQzVkT21RSWxPajhHZTZKM0NJcFhXdndBQUFBQyszS0RDMDdHU3dBQUFBQUM5LzZEQ2NKL3l3TVoyRWtDOS82RENjSi95d01aMkVrQyszS0RDMDdHU3dFa1FrMEhzNTUvQ2NKL3l3RWtRazBGMndwL0NHT3lMd0l0Ym5FRVNoNS9DY0oveXdOQnltVUdRSTUvQ2g5dU93TVoyRXNDKzNLREMwN0dTd01aMkVzQzkvNkRDY0oveXdFa1FrOEYyd3AvQ0dPeUx3RWtRazhIczU1L0NjSi95d05CeW1jR1FJNS9DaDl1T3dJdGJuTUVTaDUvQ2NKL3l3TVoyRWtDUDlxUENiZndkd1FBQUFBQlMvYVBDYmZ3ZHdRQUFBQUNSNWFMQ1gzTm53Y1oyRWtEUTNxTENYM05ud1VrUWswSDlCcURDRGUxaXdVa1FrMEdFS0tIQ0srWWN3ZTJBb0VHRjBaL0NYYjlld1l0Ym5FRlJocURDMm9VY3djWjJFc0NQOXFQQ2Jmd2R3Y1oyRXNEUTNxTENYM05ud1VrUWs4R0VLS0hDSytZY3dVa1FrOEg5QnFEQ0RlMWl3WXRibk1GUmhxREMyb1Vjd2UyQW9NR0YwWi9DWGI5ZXdXQkJOZ0FBQUFxVHlUNEFBQUFBQUFBQUFBQUFBQUFOazhreURaUEpQZ0FBQUFBTms4bStEWlBKTWdBQUFBQ3F6SjNDSHVPUXdFQkJXQUVBQUNvQUFBQUFBT0JvYWo3Smpkdzk0R2hxUHNtTjNEMCs1REkvQUFBQUFEN2tNajhJZm1BLzRHaHFQZ2grWUQ4KzVESS9RQXgxUCtCb2FqNUFESFUvUHVReVA4bU4zRDArNURJL3lZM2NQZUJvYWo0SWZtQS80R2hxUGdoK1lEOCs1REkvUUF4MVB6N2tNajlBREhVLzRHaHFQZ0FBQUFBKzVESS9BQUFBQU5ac0J6L0pqZHc5MW13SFA4bU4zRDArNURJL0NINWdQMEpiQkQ4SWZtQS9QdVF5UDBBTWRUK2NTZ0UvUUF4MVB6N2tNai9KamR3OVB1UXlQOG1OM0QzV2JBYy9DSDVnUHo3a01qOElmbUEvUWxzRVAwQU1kVDgrNURJL1FBeDFQNXhLQVQvSmpkdzkxbXdIUHdBQUFBRFdiQWMvQUFBQUFPQm9hajdKamR3OTRHaHFQZ2grWUQvZ2FHbytDSDVnUDBKYkJEOUFESFUvNEdocVBrQU1kVCtjU2dFL3lZM2NQZFpzQnovSmpkdzk0R2hxUGdoK1lEOUNXd1EvQ0g1Z1ArQm9hajVBREhVL25Fb0JQMEFNZFQvZ2FHbytJRUVZQWdBQUpBQUFBQUVBQWdBSEFBSUFBd0FBQUFjQUFnQUJBQVFBQndBRUFBVUFBZ0FIQUFZQUJ3QUZBQWNBQlFBRUFBWUFCd0FJQUFrQUFBQUhBQUFBQXdBSUFBY0FDZ0FKQUFnQUJ3QUlBQXNBQ2dBSEFBc0FEQUFOQUFjQURRQUtBQXNBQndBT0FBOEFFQUFIQUJBQUVRQU9BQWNBRVFBUUFCSUFCd0FTQUJNQUVRQUhBQlFBRlFBVEFBY0FFd0FTQUJRQUJ3QVdBQmNBRHdBSEFBOEFEZ0FXQUFjQUZ3QVdBQmdBQndBWUFCa0FGd0FIQUJnQUdnQWJBQWNBR3dBWkFCZ0FCd0FjQUIwQUhnQUhBQjRBSHdBY0FBY0FJQUFoQUJ3QUJ3QWNBQjhBSUFBSEFDSUFJd0FoQUFjQUlRQWdBQ0lBQndBZUFCMEFKQUFIQUNRQUpRQWVBQWNBSkFBbUFDY0FCd0FuQUNVQUpBQUhBQ1lBS0FBcEFBY0FLUUFuQUNZQUJ3QXdRVm9BQUFCeVlYWTBMV2R5YVdRQUpBQUFBQUVBQWdBREFBUUFCUUFHQUFjQUNBQUpBQW9BQ3dBTUFBMEFEZ0FQQUJBQUVRQVNBQk1BRkFBVkFCWUFGd0FZQUJrQUdnQWJBQndBSFFBZUFCOEFJQUFoQUNJQUl3QlFRWllBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQVFMNlJBQUJYYVhCbGNsOXVjd0FBUWErUkFBQVFRY2d0QUFEUUE4UWFoY0Vmd1J6Q0NYVjlRVXVNaGNHZ3NCekMvbGQ5UWREcmhjRzZuQnpDdWlkOVFkc3loc0hNaGh6Q2p1ZDhRWE5jaHNGT2NCekMwcHQ4UWRSbGhzSFRXaHpDcTBsOFFWOU9oc0hMUnh6Q3VmWjdRYWNYaHNHRU9CekNvcWg3UVZ2RmhjRUpMaHpDdldSN1FURmRoY0VNS1J6Q215OTdRVGJtaE1IcktSekM1d3g3UVg5b2hNR1ZNQnpDLy81NlFhYnNnOEdTUEJ6QzBRWjdRU3Q3ZzhFWFRSekMxQ043UWJVYmc4SDVZQnpDSEZSN1FielVnc0hxZGh6Q1FaUjdRUzJyZ3NGampSekMvZDk3UWM2aGdzSGRvaHpDSnpKOFFVTzVnc0hudFJ6Q0Y0VjhRZkx2Z3NFdXhSekNMOU44UVRKQ2c4R3J6eHpDR0JkOVFVcXFnOEdrMUJ6Q09reDlRVGtoaE1ISjB4ekM3RzU5UWVxZWhNRWd6UnpDMm54OVFZVndnOEhaL2hyQ01SQ0NRY0g1Z3NHNC94ckMxZjZCUWVtUmdzRzgraHJDUk9TQlFRRkFnc0U5OEJyQ1NjS0JRYmdKZ3NIeTRCckNPNXVCUWF2eWdjSGx6UnJDdlhHQlFYbjhnY0ZtdUJyQ3BraUJRV29tZ3NIcG9SckN4Q0tCUWIxdGdzSDBpeHJDcWdLQlFYTE5nc0VNZUJyQ2hlcUFRUncvZzhHSVp4ckNBZHlBUVFDN2c4R05XeHJDR05pQVFhbzRoTUhvVkJyQ0RkK0FRWHF2aE1FS1ZCckNadkNBUVdJWGhjRUlXUnJDK1FxQlFWZHBoY0dDWXhyQzhpeUJRYXVmaGNIUmNockMvbE9CUWJTMmhjSGRoUnJDZm4yQlFlS3NoY0ZabXhyQ2xxYUJRZVdDaGNIV3NSckNmTXlCUVlRN2hjSE94eHJDbHV5QlFiM2JoTUd5MnhyQ3VRU0NRUXRxaE1FMjdCckNQeE9DUVNUdWc4RXkrQnJDS1JlQ1FheE9iY0Z1MVIzQ0xSdDlRVm95YnNIb3hCM0NJUDU4UWRMeGJzRUJzUjNDMjgxOFFSMkFiOEVQbXgzQ3FJMThRWnpUYjhHWGhCM0M1RUY4UVd2bWI4RVZieDNDeCs5N1FXSzNiOEVRWEIzQzJKeDdRWmRKYjhIS1RCM0N3MDU3UWJTa2JzRlJRaDNDMGdwN1FmZlRiY0ZYUFIzQ3c5VjZRV0xsYk1FN1BoM0NGck42UVlQcGE4SGtSQjNDTDZWNlFVenhhc0hnVUIzQ0NhMTZRYlFOYXNGb1lSM0NFOHA2UVdKT2FjRk5kUjNDVnZwNlFUakFhTUU4aXgzQ2pqcDdRZkpzYU1HM29SM0NTWVo3UVF4YWFNRTR0eDNDYXRoN1FTaUphTUU4eWgzQ1d5dDhRYnoyYU1HRTJSM0NiM2w4UVh5YmFjSDk0eDNDV2IxOFFSOXNhc0gyNkIzQ2RQSjhRWlZhYThFWDZCM0NJUlY5UVl4V2JNRnA0UjNDQ1NOOVFWejVhY0VxRXh6Q1MrT0JRVElMYWNFRUZCekM4dEdCUVFVN2FNRU5EeHpDWTdlQlFleVdaOEdOQkJ6Q2E1V0JRUmdxWjhGQjlSdkNYbTZCUWNMN1pzRTA0aHZDNVVTQlFYSVBaOEc0ekJ2Q3lCdUJRWGhqWjhFOHRodkM1UFdBUVVUeVo4Rk1vQnZDeXRXQVFSZXlhTUZqakJ2Q3ByMkFRZjZWYWNIZmV4dkNISytBUVZXT2FzSGJieHZDTXF1QVFSaUthOEV5YVJ2Q0piS0FRVnA0Yk1GU2FCdkNlOE9BUWF0SWJjRk9iUnZDRE42QVFlWHNiY0hLZHh2Q0F3Q0JRZXhaYnNFUWh4dkNFQ2VCUVNtSWJzRWNtaHZDakZDQlFZVjBic0dmcnh2Q28zbUJRVWtnYnNFYnhodkNoNStCUVZ1UmJjRU0zQnZDcGIrQlFXM1JiTUgyN3h2Q3l0ZUJRVzN0YThGOEFCekNVK2FCUVM3MWFzRi9EQnpDUE9xQlFka2VlVDlVZGlQQ2JXSldRVE03WGo5VDZ5UENXYUpVUWVCYU9EK1JTU1RDSUNoVFFSWWJDaitiaWlUQ2pnMVNRYXRGclQ0UHFpVEMyR1ZSUVNWelhMK1ZqeVRDNE1WUVFjQXNpTCs5WnlUQ1N4MVJRZGpGbjc4U0h5VENrTzlSUVZsb3M3K011aVBDVmk1VFFZRzh3YjhDUVNQQzNzTlVRV2ZFeWIvRnVpTENqSlJXUVlmeXlyL3VNQ0xDdm9CWVFTMHd4Yi9xckNIQzZHWmFRY1RodUwrNU55SEMzeVZjUWZYZHByOVIyU0RDTjU5ZFFZQmlrTDhwbUNEQ05MbGVRYjd5YmIrcGVDRENvR0JmUVd4bHNEN0psQ0RDZ0FsZ1FWZXBDeitZdkNEQzI3RmZRYy9FT1Q4dUJTSENHTjllUVlaYlh6K01hU0hDajU5ZFFWN2JlVC9pNGlIQ0JBbGNRY2kzZ3ovdGFDTENLRGRhUWFPWGd6K0s4aUxDd0VsWVFSaVhCei9lS1NYQ1FpbGtRVllXQWorRzlDVENqdUprUWF2cDdqNDh4Q1RDVDRSbFFldlcwRDVGbkNUQ2JnTm1RUzhHckQ1aWZ5VENSMWRtUWJyNWdqNktieVRDSjNwbVFiS0Njci9SVkNUQ3ZlTmxRWDVrZzc5YVlTVENFNkZsUVp4ZmpMOUZleVRDMURCbFFhR1VrNy9Vb0NUQ29KcGtRUktHbUw5MXp5VEN0ZWhqUVpQZW1yLzdBeVhDTWlkalFmaHltci9WT2lYQ1MyTmlRVFJObDc5Q2NDWENVYXBoUVJhamtiK2RvQ1hDNWdoaFFiN1hpYitZeUNYQ0VvcGdRUmwwZ0wrRzVTWENZRFpnUVpaWE1UN1hEU2JDbjVaZ1Fka2VnejZRRHliQ0lxZGdRYWNpckQ0TEF5YkMzZWxnUVVQczBENHI2U1hDVVZwaFFTZjA3ajZtd3lYQ3pQQmhRZHNZQWo4VWxTWENEcU5pUVJ5WkJ6K2lZQ1hDOG1SalFUVVhJRUZYZWgvQzV2MTVRZlFPSDBHY2VoL0M5K1Y1UWZJbEhrRnRkQi9DUExoNVFmdHJIVUU0YUIvQzMzZDVRZmp0SEVIUlZoL0NRU2w1UVZTMEhFRndRUi9DdXRGNFFlZkNIRUdKS1IvQ1BIZDRRYXdZSFVIRkVCL0M3eDk0UWV1dkhVSEYrQjdDMHRGM1FSRitIa0V2NHg3Q01aSjNRVEIxSDBGNjBSN0NhMlYzUVpHRUlFSFV4QjdDaFU1M1FhNlpJVUVQdmg3Q0MwOTNRWlNoSWtHenZSN0NBbWQzUVd5S0kwRzh3eDdDdnBSM1FZQkVKRUhKeng3Q0pOVjNRZGZDSkVFSjRSN0MwU040UWZQOEpFRmE5aDdDWDN0NFFkanVKRUZBRGgvQzRkVjRRVzJaSkVFZkp4L0NJeTE1UVZFQ0pFRkVQeC9DT250NVFSUTBJMEVEVlIvQzFicDVRYVk4SWtIZVpoL0NsZWQ1UWMwc0lVR1pjeC9DZWY1NVFXNmRJVUVPWngzQ2dxK0FRU0dVSWtFeFZSM0NIWm1BUWY1aEkwRjJQeDNDVG5tQVFSUDVJMEZQSngzQ1FGS0FRZGxPSkVGckRoM0NteWFBUWFWZEpFRjc5aHpDdXZKL1FZY2tKRUVwNFJ6Q0lwdC9RV1duSTBIZnp4ekNlRXgvUWE3dUlrSEp3eHpDRWd4L1FUc0hJa0c4dlJ6Q1c5NStRYkVBSVVFVXZoekNiY1orUWRMc0gwSFN4QnpDNGNWK1FYSGVIa0YzMFJ6QzFOeCtRUkRvSFVFczR4ekNvZ2wvUVUwYUhVSEUrQnpDUlVsL1FSYURIRUhERUIzQ2FwZC9RZm9zSEVHTEtSM0N2TzUvUWJrZEhFRjRRUjNDblNTQVFXWldIRUhhVmgzQ1pGQ0FRVExUSEVGS2FCM0N0M2VBUWMyTEhVR0VkQjNDNHBlQVFXWnpIa0crZWgzQ3ZLNkFRVVY2SDBGOGVoM0N0THFBUVorT0lFSEdjeDNDOTdxQVFmUFZQa0Y5VUI3Q3IrcDNRZlhPUFVGTVR4N0N1OGwzUVlMb1BFSFlSeDdDOHBOM1FUSXlQRUduT2g3Q0VFMTNRVmk0TzBHb0tCN0MxZmwyUVd5RE8wRVdFeDdDL1o5MlFkaVdPMEZuK3gzQ21rVjJRVi94TzBFNzR4M0MzUEIxUVo2TVBFRTl6QjNDaUtkMVFSUmVQVUh1dHgzQ21tNTFRWmxYUGtHdnB4M0NBVXAxUWZkblAwR2RuQjNDTGp4MVFmTjhRRUZ4bHgzQ0hrWjFRWnFEUVVHSm1CM0NGR2QxUWUxcFFrSFZueDNDNUp4MVFXQWdRMEhhckIzQzFlTjFRWENhUTBHOHZoM0NFRGQyUWYvUFEwRTgxQjNDOFpCMlFlaThRMEh6NngzQ1QrdDJRZGxpUTBFMEJCN0NDMEIzUWJQSFFrRmNHeDdDVjRsM1FScjJRVUhXTHg3Q09zSjNRVHY4UUVFMVFCN0N6K1ozUVVQclAwRlpTeDdDbFBSM1FRZFFRRUVOUFJ6Q3gwNS9RVEJKUVVHc0xCekNNaXAvUVdRYVFrRTNHQnpDVFBGK1FZSzFRa0VNQVJ6Q0NxaCtRZkVQUTBIRDZCdkNUVk4rUWJnalEwRU8wUnZDN2ZoOVFUYnZRa0dIdXh2Q0VKOTlRVjEyUWtHa3FSdkMza3Q5UVVmQlFVR1huQnZDOGdSOVFXVGNRRUZBbFJ2Q0tjOThRUnZYUDBFamxCdkNONjU4UVZ6RFBrRkltUnZDUnFSOFFRSzBQVUZYcEJ2Q0hiSjhRVEs3UEVHVHRCdkN3ZFo4UVNIcU8wSGp5QnZDcVE5OVFlVk9PMEhrM3h2Q0FWbDlRUVgwT2tFVCtCdkN2YTE5UWVmZk9rSEREeHpDRmdoK1Fka1RPMEZaSlJ6QzhXRitRWGVNTzBGaU54ekNJN1YrUVdWQlBFR1pSQnpDQlB4K1FXZ21QVUVRVEJ6Q3hERi9RUUFzUGtGS1RSekN0MUovUVJWQVAwRXRTQnpDbVZ4L1FkM2F2a0dod3cvQ1UvOVhRYkdidmtHK1dSRENWU1ZXUVlENXZVSGw4QkRDQm9GVVFVUC92RUdsZmhIQ0tpOVRRZkc5dTBFbitSSEM2RVpTUWFGTHVrSCtWeExDTGRoUlFkSEJ1RUdkbEJMQ2xPcFJRYnc3dDBIWnFoTEM1bnhTUVVYVXRVRkltUkxDSllWVFFRdWt0RUZCWVJMQ0cvRlVRZHUvczBHbUJoTEM5NmRXUVEwM3MwSFlqeEhDcEl0WVFiRVNzMEg3QkJIQ0ludGFRZHRVczBHSGJ4RENuMVJjUWRENHMwR2MyUS9DK3ZkZFFTWHp0RUZRVFEvQ2wwaGZRZE15dGtFTzFBN0N1eTlnUVQ2aXQwSDFkUTdDeEoxZ1FhRW91VUZuT1E3Q05vdGdRYmVydWtGNElnN0NYZmxmUVdrUnZFSFFNZzdDSmZKZVFaTkJ2VUZyYVE3Q1pJZGRRV1ludmtIQ3dnN0NxZEZiUVJ5enZrSEtPQS9DdHU1WlFSQ3B2VUc2cnhIQ3B0dGtRY3hMdlVGdmpCSENtWWxsUWQ3UXZFSCtkaEhDc3hsbVFaSkF2RUhJY0JIQ0o0Sm1RY21rdTBFMWVoSEM1THRtUVJJSXUwR25raEhDODhKbVFROTF1a0ZxdUJIQzRKWm1RYm4xdVVIejZCSENvVHBtUWJDU3VVSCtJQkxDZmJSbFFjQlN1VUcxWEJMQ253MWxRVUk2dVVFTW1CTENVbEZrUWVCS3VVRUZ6eExDY294alFhS0R1VUhZL1JMQ1lzeGlRWjNndVVGUUlSUENSQjVpUVkxYnVrRUdOeFBDOW8xaFFSWHN1a0Z4UFJQQ1dDVmhRVk9JdTBFWE5CUENqZXRnUVpZbHZFR3NHeFBDZ2VSZ1FRMjV2RUhGOVJMQ3JoQmhRYTQ0dlVFQXhSTENIbTFoUWIrYnZVRytqQkxDY1BOaFFXM2J2VUhYVUJMQ2VacGlRWFh6dlVGZ0ZSTEM0RlpqUVUzaXZVRnMzaEhDdWh0a1FWVk1YTUdUSGgzQ29JNTNRU25xVk1HT294M0NWRzk0UVl3bWtNSFowaHJDeDFsNVFiUHVqTUg3MFJyQ0VFNTRRU3ROVmNHckxoN0NOYVo2UWZ0WGtNSDFYUnZDclpCN1FZVDJYTUhlRXg3Q0RrdCtRWmREamNGSHh4dkNrQXAvUWJsN2o4RzQvUmpDWVFXQVFTbEZqTUhVL0JqQzZ2NStRVjVpdnNHcWhoWENKeDV6UWRlQ3ZjR3drUlBDbS8xNFFhc0t2Y0ZNa3hMQ0J0TjBRVlBQdmNFemNoVENZMjF1UVZqcmpNSFMzQnJDb2pHQlFTT3FqOEh2aUJuQzhTQ0JRVEZHWE1GbUtSM0M0OUdBUVJueFU4R29XUnpDdDZ1QVFYaTk1OERVUkI3Q3BDWjhRZmZQNk1EMUl4L0Nuc2wvUVhsMzZzRHFsQ0RDd2V0M1FVeGk2Y0RMdWgvQ3hsZDBRZVgzV3NGdlNSdkNmajkrUVVhVFU4RjB6aHZDVnlCL1FXSGpMc0ZRSGg3Q0RaQjNRV0pHTDhGcnFSN0M2TVo1UWFmOExjRzE0UnpDREZDQVFjMnFMY0dIWHh6Q0o0UitRYmRIb3NIVlpCakNoZjV6UVJ5RW9jRUVreGJDdDdCNlFSZS9vY0ZVSFJmQ0VPZDhRZUNGb3NILzdoakNqVFIyUWRoUHVNSHlSaFBDa3dCMlFTRVJ1Y0gxSHhYQzZIZHZRU2ZEdU1HUVFSVENGQlI2UVZ1YnVjR09MQmJDK1BoelFaVlF0OEVMM1JQQzBQMTNRVzBidU1IZHZCWEN6NTV4UVI2VHQ4SG9iUlRDL0Z0NlFacHB1TUdDVmhiQ2JqSjBRZHF4L3NCdFJTRENTRk40UVJPaS9jQlZiUi9DYU1WMFFUc1UvY0JVMkI3Q1d4NkFRVFFVL01EUC94M0NvYTE4UVdHU0FjRjh0Ui9DZldOMlFjM2VBY0YrTUNEQzYybDRRUzhQQWNIT3doN0MweWlBUVVYTEFNR0lTaDdDVjFOK1FTOEUwc0ZMT1JIQ2FscHNRZnVOMGNFTEZSRENYaFJ3UVlwazBjSFo0Zy9DckQ5dlFkL1YwY0hwQWhIQ1NXeHJRUlFOajhDWXFoN0NYbmwwUVpNVmo4QkU0UjdDRFZGMVFSaVJrTURtOFIvQ3dESnhRZm1Ka01CV3ZCL0NXVjV3UVpIQTBNRnpBaERDZ1FkdVFUc0swY0hwd0JEQzZuQnJRZDNXa2NDL3RSN0NZbkp6UVREVGtzRGVheC9DaDdSd1FSNS96c0V4eGcvQzBjaHFRUW1lenNFL0lCRENNbDVwUWVHV21jQjBKeDdDTUhCd1FiY1Vtc0FEZ3g3Q3hoSnZRYlQ1ck1IazN4UEN4dHB1UVh3YnJjR2tPaFRDMEhSdFFYeG9yY0c1WWhUQ1Q5QnpRVzVJcmNGVU1SVEMyUVJ6UVVYVXJjRWtkaFhDQzdKdlFadXlyY0hYUXhYQ0JlRnVRY0tQcmNGVi9CVENpaVZ2UVpWSnJjR3lSUlRDWHVweFFaaFBlTUVRUWhuQy9tbHlRYllQZU1FdjVCakNhTUJ6UVVOOGVNSDZjQm5DQ2RONFFXWldlTUhVUEJuQ2gvNTNRV05CZWNHVmlockNuYzkwUVUwYWVjRnNWaHJDSlB0elFXdm1lTUZzRFJyQ0hqeDBRVHBrZU1HblVSbkNDdWwyUVlQR0U4R1dHQnpDMHoxelFWbjBFOEYzYUJ6Q1ZiMXhRWm5vRThIUXRoekMwWGw0UWNEWUU4RVFneHpDODZoM1FRbHBGTUZHbkIzQ3RObHpRYXRhRk1GbWFoM0NoQTV6UWNBK0ZNRkNLeDNDWFc1elFSTG9FOEcya0J6Q0MzOTJRWk1ZaXNHQTdodkNRUWFBUVovUmljSHNNaHZDOVZ5QlFWS3ZpY0YveWhyQ1E0aUFRVjMxaWNFYWhodkNMMk4rUVJFbDdjQTkxeURDblllQlFUcC83Y0F2THlIQ2trT0NRZEpoN3NBNjB5SENrY21BUVRuMDdjRDlkQ0hDSndTQVFRS0xVc0hoOWgzQ2NKaDlRZXJSVXNGR1h4N0N2RUYvUVRORVVzR3lveDNDa2ZlQVFkeitVY0ZFT3gzQzR5S0FRVWlHSU1IVjFCL0N5Q2VBUWVuS0lNRTlQU0RDZWZ5QVFlQTdJTUhaZ2gvQzZsU0NRVW4vSDhGZEh4L0NwSWVCUVRVV2tzSGZEUm5DQktGNFFVdmtrY0VYZ1JqQ3pLSjZRWEMra2NIRkdCakN1L2w0UWFudmtjR1ZwUmpDQS9oMlFYVU1Uc0dhU1J2Q0FQQjNRZnBYVHNIbHNSdkNISmw1UWF5OFRzR3FQaHpDU1pkM1FRTndUc0ZmMWh2Q1BlNTFRZm9nY3NFMUlodkNndGg0UWZ4cmNzR0hpaHZDcklGNlFYZjlmc0ZvRWh2Q3NLaDZRWG15ZnNFWXFockNsLzk0UWRNRmNzSE4vUnJDaFlOOFFXZVhmc0dwaFJyQ2o2cDhRYXBOZnNGUkhSckNZZ0Y3UVJTOGNjRjNsUnJDVzlwNlFidkZXY0VtYWh2Q0hoRjJRWUlTV3NGdjBodkNLN3AzUWZDdFdjR3FSUnZDOTd0NVFWTmlXY0ZmM1JyQzJ4SjRRVDV6ak1IV2VSbkNkbjE0UWJSTWpNR05FUm5DYk5SMlFVZEJqTUVMN1JqQ1BIOTZRV1liak1IQWhCakNKZFo0UWVuWlQ4SDVDQnpDcjdGeVFSbzhVTUZLaXh6QzRNUjBRWHpLVjhFa1F4ekNJZHgwUVNSb1Y4SFF3QnZDOE1oeVFlL2hWc0drK2hyQzZvcDVRZmlDVnNGQ2VCckNsSGQzUVU5VFQ4SE5RaHZDclhONVFXejBUc0Zzd0JyQ1cyQjNRZk1FamNFMlVSbkNIODF6UVdjMmpjR0kweG5DVStCMVFabVlrY0dSZnhuQy9QdDFRU1Jua2NGQi9SakN6K2h6UVRJbGtjRUlOeGpDc0twNlFiYjFrTUdudEJmQ1daZDRRZWpDak1IL2loakNBNDk2UVdTVGpNR2dDQmpDc250NFFUWWdaY0dtenh6Q21TbDVRVmtlWnNIblBCN0MzZmwrUVljcWg4Rjh2QnpDMDNaL1FjcXJoc0U3VHh2Q2c2WjVRZG10aHNGSGRCdkNMaE9DUVlFMGhzSFdCaHJDamxWK1FWTWxaY0d0OUJ6Q3NkU0JRUmd4Wk1GR2h4dkNxTmg5UVN1cW84RklwQlhDbWFGelFaclpvOEhaQ3hiQ0RVcDFRZDRTcE1Hcmx4YkM1a2R6UWJuaW84RWhNQmJDaEo5eFFTTjAwY0VCZFJIQ1d0cHZRYjQwMGNHUzN4RENEcU54UWZQODBNR1JjUkRDWTlOdlFidzMwY0VLQXhIQ2d2SnRRWGVzdXNHRGJCVEM0OVp5UWMycHdNRU1zUlBDRXd0eVFhRnR3TUhHUFJQQ3ZodHdRY0YwdXNGdC9SUEM2Z0J4UVhkd3VzSGUzQlBDS01KMFFkVnF3TUdoSFJQQ3F0OXpRUjR6d01FMHJoTEMwUWR5UVljOHVzSHpjQlBDZGY5eVFWVGN5OEZYMnhIQzhnTnZRZWlmeThIUGFSSEMxUjV0UVZlZXk4RXlSeEhDa05Sd1FXQm55OEY5MmhEQ3FReHZRU1lacmNFVVFoWENiSFZ4UVY1SnJjR0FxUlhDS2gxelFhWVJyY0VLSHhYQ2NTZDFRUlhqck1HVXVCVENsb1Z6UWRaQnpjRXBLQkxDczZGc1FmSDgwTUYyNUJIQ3RUTnRRVWV2ME1Hd1ZSSEMwczlxUVJmMHpNR3RtUkhDYmo5cVFjNXV6TUVZU0JEQ0NLMXVRV0t0ek1GRnlSRENsYjV3UWRobTBNRWZoQkRDczBkeFFkQW0wTUVRQVJEQzlpcHZRYm5YcE1INDdSYkN2cXB3UVJEVnJNRkdJUmJDOVk5d1FReVhyTUdxbnhYQ0FueHVRVEdhcE1HYmJCYkNZNWh1UWNnWHBNRXlKaFhDd1VkelFUNVRwTUducHhYQ1VWcDFRY0JTck1HbDNCVENwa2wxUVNRWnJNRlNYUlRDL2tOelFmVFJLTUZaemh6QzV2WjJRV0tDS01FYlVSekNYeWQ1UWFjK0tNRVc3aHZDR0k1M1FmNk1LTUZBYXh6Q1psMTFRWG9YazhEbUt4L0NUbHQxUWQrdWs4RE5sUi9DTUFsM1FjUm9sTURPR3lEQ0lQTjBRU3pUazhBb3N4L0Mva2h6UVl3UTNNQ1JWUi9DU1RkM1FmNkwzTUJidFIvQ3lNWjRRVC9WOWNEUFJSL0NwZ2Q1UVc5ZjljQXQ2QjdDcVg1M1Fhd0szTUQxUkIvQzJCMTdRWFpmOWNDRTJSN0NFR3Q3UWY3bjlNQi9laDdDNk4xNVFZeU0yOEJ1NHg3Q0hvbDVRZFBDcXNCUFpCL0NDTVJ6UVNaWHE4Qlh6Qi9DWFd4MVFXQ3Rxc0F0VEIvQ0JKUjNRWEFWcXNBcTRoN0N3T1YxUVpNdUZzSFZ0QjNDVjFOM1FabnVGY0hKVkIzQ0NNTjFRZlB0RmNIeFFoM0M1NlY1UVkydEZjSEQ0UnpDT0JKNFFhU2Zsc0NrNEIvQ0hmMXZRUXBkbDhBUVl5RENvUkJ5UVplWnBzQ1ZLU0RDMmxOeVFSYmRwY0NrcHgvQzFVRndRZFFHcGNETitoN0M1VTkzUVJCQnBNQ29jeDdDUHk1MVFZYXdsY0FXS3gvQzlQQjJRWUx0bE1EZHBCN0NGdEowUWRSQUY4SFNlaDNDdTI1eVFiYVVGOEV5OUIzQ0VHZDBRU3pKSjhHRE5oM0NMelYwUVVWdko4RnR1UnpDdFRGeVFiUVJKOEdTRWh6Q3oxRjVRU083SnNGN2xSdkNWMDUzUVpyOEZzSDM1eHpDM01wNVFjT25Gc0Y4YXh6Q1RzbDNRWG1KRk1ISC95REM4Q2lCUWJmUEU4R0FDQ0RDRlJDRFFTOVVFOEY1SkIvQzl5MkJRYnJvRThHTUF5REMyVVIrUVJkdFBqL28zU1BDMTdka1FhdDYwRDVqMWlUQ0l5UnBRZmZWbVQ0djlpYkN1MmxoUWVCV0lqK2cvU1hDRXYxY1Fld00xOEJPbFNIQ2V2ZDlRWklxMk1DcmhDTEM2ZTZBUWRqZDFzRGpteUhDMU91Q1FWVDQxY0EvdmlEQ1VST0JRZWtKSE1Bb0R5WENTRnRkUVdtWUlNQjhLQ2JDUEo1aFFadWNHOEFQQ0NUQ01GVnBRUlpBRjhDbzdpTEM1QkZsUVpKdGRqNHQweVhDZFNsZFFZYnlZajZ5N1NiQ21YSmhRUzBTcUQ3c3pTVEM5aXhwUWFBZnN6NTFzeVBDSWVSa1FhWG9DVDlnbXlUQ2Q2ZGhRU25pQ1Q4bjBpVENKdU5nUVZaeEJEOE1aaVRDejJCaVFaaXk4ejYvTlNUQ2pRSmpRZEd3MVQ3S0RTVEN0SUZqUVF2dnNEN2w4Q1BDa2RWalFYRHVoejRTNFNQQ2EvaGpRWldxYWIvbnhpUEMvMlJqUVZucWZiOXYweVBDVnlKalFVM3NoNzljN1NQQ0c3SmlRY3NjajcvdEVpVEM4QnRpUVgwSmxMK05RU1RDQ0dwaFFZcGRscjhWZGlUQ2k2aGdRWXp0bGIvcnJDVENwK1JmUVR6RWtyOWI0aVRDcnl0ZlFlb1hqYiswRWlYQ1RZcGVRVFZMaGIrM09pWENjZ3RlUVIvUGQ3K2ZWeVhDeGJkZFFXNU5PajVVZnlYQ3h4UmVRZldSaHo0UmdTWENUQ1ZlUVJLU3NENk9kQ1hDQzJoZVFiTmQxVDZ1V2lYQ2Q5aGVRV3RzOHo0cE5TWEMrRzVmUVNWYUJEK2JCaVhDUFNGZ1FUYm9IajhxZWlUQ3YxTmZRWXYzRnovV3V5VEM5R0JlUWJiMEhqK2NOU1RDbTBsZ1FWTWdHRC9NOGlQQ3F6RmhRYm5kQ2o5U3RpUENPZnhoUWJBdzhENVFoQ1BDYlp0aVFUQXN3ajRwWUNQQ2FBUmpRYnpZamo1U1RDUENHVEJqUVdJbWFyL1VNU1BDSjVsaVFUTEFnYitFUVNQQ3NrVmlRWDc0akwvOVlTUENKTGxoUVdQNGxiOEZrU1BDSVAxZ1FTMGhuTDlveXlQQ1hCNWdRUzRKbjc4eURTVENGU3hmUVZ4N25yL2NVU1RDelRaZVFTT0Vtci9EbENUQ1BrOWRRU0Zuazc5UDBTVENKb1ZjUVpLaWliOW5BeVhDU3VaYlFXUEFlNythSnlYQ2YzMWJRYjR1TWo0R1V5WENRTkJiUVd3dWpqNHhWU1hDNk9SYlFhR0Z3VDZGUlNYQ2RqaGNRZktXN3o0ZkpTWENRc1ZjUVFpaENqOGs5aVRDdW9GZFFXeVRIeitqR1NUQ1I4MWRRY0NmR0Q5UFd5VENmZHBjUVphakh6OE8xU1BDSE1OZVFjWFNHRDlEa2lQQ1BxdGZRVHFVQ3ovUFZTUEN2M1ZnUVlPazhUN0tJeVBDK3hSaFFVYW13ejZlL3lMQytuMWhRWHhYa0Q3TjZ5TENvS2xoUVFZaFo3K0YwU0xDeEJOaFFTRThnTDh5NFNMQ1VzQmdRYUp5aTcrckFTUEMwRE5nUWNSd2xMKzFNQ1BDd25kZlFacVhtcjhZYXlQQ0RKbGVRYko5bmIvY3JDUEN3cVpkUVVQdW5MK0s4U1BDZWJGY1FhbjFtTDl0TkNUQzc4bGJRZFhYa2IvN2NDVEMwUDlhUWRZU2lMOFVveVRDLzJCYVFSdWhlTDlLeHlUQ05maFpRZExNTkQ1KzhpVEN5RWxhUVVaNmp6Nm05Q1RDYmw1YVFXclB3ajc5NUNUQy9MRmFRYi9nOEQ2VHhDVEN6ajViUVVoSEN6K2JsU1RDUmZ0YlFjSzlnajhxRkNUQ1M5MWNRZkI3ZHovMmx5VENBUFphUWN2VGdqK05paVBDcThwZVFYWDhkejkvQkNQQ2dKeGdRU0JsWFQ4bml5TEMrakppUVh5NE56Ky9KaUxDZm5KalFmV0pDVDh2M2lIQ09rVmtRVmtJckQ1anRpSEMwWnhrUVhBVGQ3K3FtU0hDcnZCalFUYjdsTDhqdVNIQ1FrbGpRYytBcTc5TitpSENQUzlpUVN5UXZiK3ZXQ0xDMmJWZ1FXYnF5Yi9nelNMQzFQWmVRZiszejcva1VTUENuQkJkUWNhVHpyKzAyeVBDYXlSYlFXQ1R4ci80WVNUQ3JsTlpRUTVFdUw5KzJ5VENKTDVYUVRxanBMOEVRQ1hDWTM5V1FiMElqYitxaUNYQ0g2MVZRWEVpWnIrSHNDWENzMVZWUVM4U3FqNnd5eVhDY1BsVlFVK0lDRDgvckNYQ0txRldRYy9JTmo4emF5WEN5YnRYUWFhalhELzVEQ1hDOXpWWlFZdS9UMEZNR3h6Q1d6eHlRY3c4V0VGZEJCekMxUFJ5UVVUSkJVRllIUi9DdjB0MlFUeHlERUdQb0I3Q0Z2ZDBRWkhxV0VFMm5oekN3VmgxUWExVkJrRkx1Ui9DQTY5NFFVWTFVVUdqTEIzQzBvMTVRZG16RFVIWXRSL0NsMGQ4UWJWUkJVSHFIQjNDbDhOOVFlVDFDMEVsb0J6Q3htNThRYThENmovdkNpSEN0QTF4UWZNdDZqK1gzeDdDTUtKM1FSZTc1RC9mdXgzQzl5SnpRZmxjNUQ4TXpCL0M2ZnRyUVZodkRVSE50UjdDd0FHQVFicllCVUVBdVIzQ2VST0FRUy9OVUVFaUxSekMvMGg5UVZJWFdFRXhueHJDMTg1OFFUQk9ua0hMZnhUQ3VYMTBRYW45bmtFL2NCWEM2MnQ0UWIxMW4wR28rUmJDbWJOdlFWVEJua0Y5RHhiQ1c5VnJRYlg5VGtIUEd4ckNqTEo1UWRKdlYwRWhCUnJDM0dwNlFaRnZnRUVxQUJyQ3hPbHdRZDdPZ0VIRG1CckNEVTV6UVROVWdFRUVxaGpDVXU1NlFYejFmMEdXR3hqQ1JxZDRRVnJvdVVEeS9CL0MyUXR3UWF0bXVVQUsvQjNDVTRSM1FTWmN1a0RsbUI3Q1VPZDVRWHZudWtDOG1TREN5RzV5UVdTcEhrQkUxUjNDL1JCMFFUbXdIa0I0M2gvQ0ZjUnNRY1IvSVVBSDlCN0NGM2Q0UVZpa0lVQmdFeUhDK0tGeFFSRDdLa0FVVXg3Q3JpQjJRWEljSzBDN1pDRENkd0Z2UVQrY0xFRGYrQjdDMzY1NFFmN09MRUJYRlNIQ0k4cHhRUWd2bWtFUHF4ZkNjbWh3UWZsK21VR1Z3aGJDK0pCc1FabTdtVUgwSlJiQ2lpMTVRUm9TbVVGL1BCWEMvVlIxUWFGNG1FRXVVUmZDOG1GdVFUN2NtRUdRMVJmQ1RwSndRWFZwbUVIQ1R4YkNvRlY1UVprS21FRTF6aFhDTkM1M1FSZ3hGY0NnK0I3QzVidHJRYnRVRmNCZ3RoM0MwZWx2UWJINEZNQ0plaDNDMGdKdlFTVEhGTUNtdHg3Q0VMbHFRVjNjczBIYlZSRENCZ2RyUWZVYXRFR2ZqQkRDYys5clFSWjd0RUdXc3hIQ0QxdG5RUjQ4dEVFbmZoSENJblptUWNZcUQ4Q25oeDNDQnA1dFFlRUJEOEFYV1I3Q243ZHFRY0VwczBGSmh4REMwdTFwUWVsb3MwRnJUQkhDUU9GbVFRc0QrNy9iL2h6Q2ErNXBRVk95K3I4NllSM0M2MWhvUVpXU3NFRUhZeERDVjhKbVFUS3hzRUZDeGhEQ3BUMWxRUzQrZmtETDBSekNvWHRyUVh0TGZrQk9OUjNDV2V4cFFYTEtmMERDY0IzQ1NlVndRV2h3ZjBBaU54M0NLZ2x3UVNNQ2dFQlBueDdDRDAxc1FUS21mMENSWkI3Q3lHcHJRYWR1ZjBBOUZCN0N6N3ByUVRaTWYwQytTeDNDaHRGdVFmMS9MRUhEWUJyQ2tyUnRRU2xrTEVGQStobkNyREp2UVcxVkxVRVhtUnJDcHJoMFFkd1pMVUVDWHhyQ1dkTnpRWmV1TFVGOXpCdkNNVDV3UWNSeExVRnZraHZDNmxodlFSbEZMVUVvUWh2Q1ZhVnZRZW9LTFVFdWRSckNvcUZ5UVc4WmpFRkZaaFhDQXF0clFZVXRqRUZNdkJYQytQOXBRVC9makVFNEN4YkM3RnR4UVZXdmpFSEwxQlhDMUhwd1Flb2JqVUZUQVJmQzhqbHNRY3JyakVFZ3pSYkM3bDVyUVE3S2pFRUJpaGJDaHN4clFmQ2hqRUVVNUJYQ2RETnZRU0dyRkVFdVpSL0NvVEI5UWJCd0ZFRmdtQjdDckJhQVFhQUhGRUdNSXg3Q3QySitRVjVBRkVGZzhCN0NDMlo3UVlhUm4wSFFZUmZDcyt4N1FRRFluMEVud0JmQzY0SjlRVFFUb0VFUWNCakNuanQ2UVdISm4wR1BDaGpDOHBCNFFmdXlXMEYxS1J6QzNvVjRRZmd5WEVIaW5CekM1VkI2UVU3YVcwR1MwQnZDK2t4OVFUbGNXMEVWWFJ2QzdvRjdRVE9RaVVGV2J4ckNpd0I2UVNiWGlVR2w0UnJDOGN0N1FhYWRpVUZqRnhyQ0tzdCtRU2haaVVHNnFobkMyQTk5UWZoOC9rQ0RpQjNDUXNoMVFUazkva0N5N2h6QzF3VjRRVmR1L1VDbWVSekNianQyUWNDci9VQjRFeDNDNGYxelFhdU1XMEZxL1JqQ2JHOXlRWWdRWEVHdmNCbkNaVHAwUVExTlhFRWRDaHJDZGYxeFFjbkhXMEhubGhuQ2lESndRUVpoTmtGOTJodkNtbXAwUVM3Wk5rR05UaHpDVmpWMlFTTWpLVUUzMHh6QzJzTjJRU2F2S0VIbVhoekNOUGwwUVcybU5rSDl0QnZDaTNKNFFhTDBLRUdhT1J6Q0t3RjVRZktCS0VGQXhSdkNmelozUVpjdk5rSGxRQnZDMDZkMlFRNlBUMEgrSGhyQ1Q2OXdRWVlRVUVGOWtockNMM3B5UWNUWFQwSDYrQm5DTHJkMFFhdFhUMEYxaFJuQ1RPeHlRUTJoQzBGREpCM0NBRVIxUVo4MEMwRjByeHpDam5selFWeDlDMEdGaWh6Q2VJRjNRU0lTQzBHcUZSekNBN2QxUVhwQVdrRno2Um5DUXF0c1FmWG9Xa0Z3ZVJyQzN1aHVRYjIvVWtGOTFCckM3anR2UVc4YVVrRktSQnJDWmY1c1FSSThVa0ZEYmhuQzYzUjBRYkthVVVIdjNSakNUamR5UVgxZldrRlBFeG5DcmlGMFFmMjZXVUV3Z3hqQ0R1UnhRUnV4Q1VHbkN4M0NPeXh3UVJZNkNrR3FuUjNDUldseVFXYVdBRUdXNngzQ0V0QnlRU29SQUVGZldSM0NJSk53UVFOTkFFR3poQnpDVlFwNFFWeVcvMEJuOGh2Q1ZzMTFRY3pwQ1VIWE5oekNZNk4zUVV0a0NVSEFwQnZDUjJaMVFVSmFSa0VwaUJ6Q2cwSjBRWVFLU0VGMUhSN0Nob2g2UVhIb0cwRjl5Ui9DT1U5OFFXeG1Ha0ZGTVI3Q0lRcDJRUk44RzBFdll4N0NzTVNBUVhNRUdrRzB5aHpDSEVSN1FYZDlSMEd2dHh6QzhzRi9RWGJZUlVFSElodkMwbnQ1UVd4RXJFQzJUaDNDZVA1dlFjUC9yRUJleEIzQ21NaHhRVHdmclVCS1hoN0MzWXB2UWNSaHJFQ2Y2QjNDd2NCdFFTSjZEc0NoTEIvQzRJTnZRZVNCRHNCcWh4N0NuWVJ4UVlUbERzQmFDQjdDVlk5dlFmWFFEc0N4cUI3Q0szUnRRWXdDRDBEV1hCL0NRS0Z3UVhXR3J6OTVaUi9DVnpOd1FUTXdyVCtnNEI3Q01CeHVRWmpGRFVCRjNSN0NyYVZ1UVlNREQwQmN2aDdDYk1aeVFYaXdyejl6d2g3QytqOXlRUTlnclQ5VVFoN0NhRUp3UVVUS0RVQ3dRaDdDNWQ5d1FadDVsYjZKNGg3Q2JzVnRRV25UbmI1blh4N0NVTGxyUVZHT2s3N0tQaDdDK00xdlFWZ0h1ci9velIzQ0cwMXVRVWY5Z2tDZ1RoN0N1RFZ1UVJhdWcwQnl4QjdDRWY5dlFjeWJnMEF1TEI3QzEwVnlRU3J0Z2tDTXR4M0MrWUp3UWJjeHFrREYxQjdDaUxCc1FTTkFoa0JNTHgvQ1ZDQnRRZGxlaFVDUm14N0NGT0pxUVp0Q3FVQzZRUjdDNW5OcVFhVUVxVUNFMmh6Q2w2NXZRYnJ0cVVDZWJSM0NRT3R4UVdNV2hrQXl5aDNDV0daeVFWczdoVUJaT1IzQzR6ZHdRVHBpZ2tGK0dCakNDamR3UVdSQ2drRTlrUmZDRHFaeVFkUDdnVUVBSlJmQysrdHdRZDRhZ2tFNHJCZkNybnh1UVk1cHMwR2dEUkhDZlFCc1FmL0JzMEVIZnhIQ2VORnRRUi95czBIQ0R4TEN3MzlyUVdXWnMwSGdueEhDMExKcFFhSGNvVUZIL1JUQzl0dHVRZmtxb2tFblpCWEMxNHR3UVRPTG0wR0hOeGJDenlkeFFZby9tMEhLMGhYQ0MzOXZRYWdHb2tFZTdCVENCU1J6UWNScG0wRXN4QlhDY00xelFYTWVtMEhBWFJYQ0xTQnlRWUM0b1VFb2d4VENlbTV4UVh6R3JVRXJoUkxDaklGcVFRSWRya0crOUJMQ2JreHNRZWZ3clVHY2FoTENQN0Z1UVd1YXJVRzMrQkhDL3Q5c1FZV0RqRUd1UlJmQ2RoSndRVzQ2akVGbjNSYkM0R0Z1UVhka2pFR3F5eGJDSUtaeVFkRWJqRUVLWWhiQytmRndRVWJlc2tFbjlSSENGQnBtUVQ1T3MwR0ZnQkxDQjFsb1FjRm9yMEVYRkJQQ3ROSm9RWnI2cmtIOGlCTENjWlZtUVY4QnIwRnV6UkhDaFZ4dVFXZVRya0VqUEJIQ1lRNXNRWFBnc2tGcUx4SENyc1J0UVRweHNrR0ZueERDZ1hsclFaQjhpMEZmSkJmQ3FzQnFRWFBaaTBFcnFCZkNuK0ZzUWFjVGcwRndhaGpDNVNGdFFaaTRna0hUNFJmQy9QUnFRV2ZLZ2tFZ0x4ZkNrZEJ5UVo5eGdrRmpwaGJDdjZOd1FTZVNpMEY0aUJiQzB0eHlRYVkyaTBIeUFCYkM5ckZ3UWRxdmtFRmZmUnJDb05CN1FiSmVrRUg4Y1JuQ1NnYUFRWnUxajBIeWVoakNHdnQ3UWFUN2owR2JhaG5DY25CM1FaYlF2VUZ5S1JEQ1FKbGxRVEtHdlVHb3NCTENwSlJ1UVFFSnYwRmNzaFRDdWVKbVFZeEh2MEZsTFJMQ1FPVmRRY043cFVHdkFSZkNpd1oyUVZnNnBrSDdBaGpDcHoxNlFYemlwVUVVQ1JmQ0RLaCtRV1V1cFVIYUd4YkNwcXA2UWErMHNFRytIUlhDa0NaY1FWT3lza0ZJTGhmQ0NtaGxRWGs5c1VHWktoWENDaHh0UVVGT3IwR2FGeFBDMzl4alFiNXB2RUYyeEJMQ0lZdGRRVloxdmtHMjBCVENqTkJtUVRUenZFSHB6aExDbklKdVFSRDJ1a0VQd0JEQ21EOWxRWm55dkVIQ25oSEN5Y05pUVNjcnZVR1Z6UkhDdlFOaVFRQ1d2RUZYZXhIQzBuRmpRYUlidkVHNVpSSENGQUprUWNtTHUwRmZYeEhDcjJwa1FWSHd1a0d2YUJIQ2Y2UmtRY05UdWtFSGdSSENxYXRrUWJYQXVVRzlwaEhDb0g5a1FTVkJ1VUU4MXhIQ2FpTmtRY0hkdUVGSkR4TENTNTFqUVUrZHVFRUtTeExDWFBaaVFUaUV1RUY2aGhMQy9qbGlRU3VVdUVHUnZSTEM5M1JoUVVuTXVFR0U3QkxDekxSZ1Fad291VUVoRUJQQ2t3WmdRZm1pdVVIL0pSUENJWFpmUVJNenVrR0hMQlBDWXcxZlFmck91a0ZTSXhQQ2V0TmVRUlpzdTBINkNoUENWY3hlUVpuL3UwRWs1UkxDZ2ZoZVFXdC92RUZ1dEJMQzMxUmZRZHppdkVFb2ZCTENOdHRmUVFnanZVRXhRQkxDVG9KZ1FhWTd2VUdtQkJMQ3lUNWhRWXBtdlVFRVdCSENGWXBnUVFaN3ZVSDhuQkhDYlpOZlFmTWZ2VUZZSFJIQ21ucGhRVWVzdkVIMDhCRENsRlJpUVZFVHZFSGUxUkRDUEFsalFaaGZ1MEhnelJEQ05veGpRVGlkdWtGOTJSRENxOVJqUVhYWnVVSHA5eERDcTkxalFZUWh1VUVSSnhIQ25hWmpRZCtCdUVIQ1l4SENORE5qUVdBRnVFSGlxUkhDUll0aVFYYTB0MEd0OUJIQ1NycGhRY2VVdDBFZVB4TENaODVnUVcrb3QwRXFoQkxDcHRkZlFVbnV0MEVBdnhMQy9lWmVRWWxodUVHMTZ4TEN0d3hlUVlENnVFRXBCeFBDdjFkZFFhYXV1VUYyRHhQQ2Y5UmNRYnB4dWtFQkJCUEM2SXRjUVZNMnUwR1I1UkxDOTRKY1FmUHV1MEU3dGhMQ05icGNRUXVQdkVFMWVSTEM2QzFkUVpBTHZVRzlNaExDSTlaZFFRMWN2VUdkNXhIQ1k2ZGVRZTBOdlVIc0FCSENQZjVlUVNraXZVSDdSUkhDaUFkZVFhUEh2RUUweGhEQzFlNWZRVVpVdkVHOW1SREM0c2hnUVoyN3UwR1lmaERDaG4xaFFTNEl1MEdLZGhEQ25BQmlRUXRHdWtFWmdoRENJMGxpUVh5Q3VVRjNvQkRDTlZKaVFhdkt1RUdSenhEQ01CdGlRUXNydUVGQURCSEN2YWRoUVg2dXQwRmJVaEhDMXY5Z1FYUmR0MEV3blJIQzB5NWdRWTQ5dDBHaTV4SEM1MEpmUWU5UXQwR3dMQkxDTGt4ZVFYNld0MEdoWnhMQ1lWdGRRVzBKdUVGZ2xCTENGNEZjUVJhaXVFSHRyeExDRk14YlFmRlZ1VUZKdUJMQ3dFaGJRY3dZdWtIbnJCTENHZ0JiUVRYZHVrR0RqaExDR1BkYVFjQ1Z1MEUxWHhMQ1NTNWJRY3cxdkVFMkloTENBYUpiUVZ5eXZFRzkyeEhDT2twY1Fmd0N2VUdYa0JIQ2ZodGRRZkRBdjBFVVBSRENHcE5lUVRIcXYwR294eERDOXFOY1FYc3p2MEZZeHcvQ3dIVmdRZFZMdmtGbWJnL0NJeXRpUWNzWnZVRTFPQS9DZ1pWalFWdXl1MEZDS0EvQ1dKeGtRYzB0dWtHUVB3L0MwQzFsUVUrbXVFRjFmQS9DRjBCbFFUczJ0MEhFMmcvQzN0RmtRV0gydFVFdVZCRENsdXBqUVYvOHRFRi80QkRDNnBsaVFTNVp0RUZqZGhIQ3FmWmdRVEVZdEVHdUN4TENUUjFmUVJJK3RFRktsaExDRUM1ZFFaZkl0RUhHREJQQ3FVcGJRWmV1dFVFRFp4UENKSlJaUVovZ3RrR3BuaFBDaWloWVFjSkp1RUhYcnhQQ3NDQlhRVG5SdVVFNW1SUEN0WTVXUVI1Y3UwRktYQlBDajN4V1FSN1B2RUV5L1JMQ2ordFdRYWtRdmtHRmdoTEMrTk5YUWFjS3YwRzQ5QkhDNENWWlFTZXN2MEdjWFJIQ0ljcGFRV0JCTmdBQUFBcVR5VDRBQUFBQUFBQUFBQUFBQUFBTms4a3lEWlBKUGdBQUFBQU5rOG0rRFpQSk11elBrTDlVakJyQ0JYTnJRU0JCcTJNQUFCd0hBQUFCQUFJQUJ3QUFBQUlBQXdBSEFBQUFBd0FFQUFjQUFBQUVBQVVBQndBQUFBVUFCZ0FIQUFBQUJnQUhBQWNBQUFBSEFBZ0FCd0FBQUFnQUNRQUhBQUFBQ1FBS0FBY0FBQUFLQUFzQUJ3QUFBQXNBREFBSEFBQUFEQUFOQUFjQUFBQU5BQTRBQndBQUFBNEFEd0FIQUFBQUR3QVFBQWNBQUFBUUFCRUFCd0FBQUJFQUVnQUhBQUFBRWdBVEFBY0FBQUFUQUJRQUJ3QUFBQlFBRlFBSEFBQUFGUUFXQUFjQUFBQVdBQmNBQndBWUFCa0FHZ0FIQUJnQUdnQWJBQWNBR0FBYkFCd0FCd0FZQUJ3QUhRQUhBQmdBSFFBZUFBY0FHQUFlQUI4QUJ3QVlBQjhBSUFBSEFCZ0FJQUFoQUFjQUdBQWhBQ0lBQndBWUFDSUFJd0FIQUJnQUl3QWtBQWNBR0FBa0FDVUFCd0FZQUNVQUpnQUhBQmdBSmdBbkFBY0FHQUFuQUNnQUJ3QVlBQ2dBS1FBSEFCZ0FLUUFxQUFjQUdBQXFBQ3NBQndBWUFDc0FMQUFIQUJnQUxBQXRBQWNBR0FBdEFDNEFCd0FZQUM0QUx3QUhBREFBTVFBeUFBY0FNQUF5QURNQUJ3QXdBRE1BTkFBSEFEQUFOQUExQUFjQU1BQTFBRFlBQndBd0FEWUFOd0FIQURBQU53QTRBQWNBTUFBNEFEa0FCd0F3QURrQU9nQUhBREFBT2dBN0FBY0FNQUE3QUR3QUJ3QXdBRHdBUFFBSEFEQUFQUUErQUFjQU1BQStBRDhBQndBd0FEOEFRQUFIQURBQVFBQkJBQWNBTUFCQkFFSUFCd0F3QUVJQVF3QUhBREFBUXdCRUFBY0FNQUJFQUVVQUJ3QXdBRVVBUmdBSEFEQUFSZ0JIQUFjQVNBQkpBRW9BQndCSUFFb0FTd0FIQUVnQVN3Qk1BQWNBU0FCTUFFMEFCd0JJQUUwQVRnQUhBRWdBVGdCUEFBY0FTQUJQQUZBQUJ3QklBRkFBVVFBSEFFZ0FVUUJTQUFjQVNBQlNBRk1BQndCSUFGTUFWQUFIQUVnQVZBQlZBQWNBU0FCVkFGWUFCd0JJQUZZQVZ3QUhBRWdBVndCWUFBY0FTQUJZQUZrQUJ3QklBRmtBV2dBSEFFZ0FXZ0JiQUFjQVNBQmJBRndBQndCSUFGd0FYUUFIQUVnQVhRQmVBQWNBU0FCZUFGOEFCd0JnQUdFQVlnQUhBR0FBWWdCakFBY0FZQUJqQUdRQUJ3QmdBR1FBWlFBSEFHQUFaUUJtQUFjQVlBQm1BR2NBQndCZ0FHY0FhQUFIQUdBQWFBQnBBQWNBWUFCcEFHb0FCd0JnQUdvQWF3QUhBR0FBYXdCc0FBY0FZQUJzQUcwQUJ3QmdBRzBBYmdBSEFHQUFiZ0J2QUFjQVlBQnZBSEFBQndCZ0FIQUFjUUFIQUdBQWNRQnlBQWNBWUFCeUFITUFCd0JnQUhNQWRBQUhBR0FBZEFCMUFBY0FZQUIxQUhZQUJ3QmdBSFlBZHdBSEFIZ0FlUUI2QUFjQWVBQjZBSHNBQndCNEFIc0FmQUFIQUhnQWZBQjlBQWNBZUFCOUFINEFCd0I0QUg0QWZ3QUhBSGdBZndDQUFBY0FlQUNBQUlFQUJ3QjRBSUVBZ2dBSEFIZ0FnZ0NEQUFjQWVBQ0RBSVFBQndCNEFJUUFoUUFIQUhnQWhRQ0dBQWNBZUFDR0FJY0FCd0I0QUljQWlBQUhBSGdBaUFDSkFBY0FlQUNKQUlvQUJ3QjRBSW9BaXdBSEFIZ0Fpd0NNQUFjQWVBQ01BSTBBQndCNEFJMEFqZ0FIQUhnQWpnQ1BBQWNBa0FDUkFKSUFCd0NRQUpJQWt3QUhBSkFBa3dDVUFBY0FrQUNVQUpVQUJ3Q1FBSlVBbGdBSEFKQUFsZ0NYQUFjQWtBQ1hBSmdBQndDUUFKZ0FtUUFIQUpBQW1RQ2FBQWNBa0FDYUFKc0FCd0NRQUpzQW5BQUhBSkFBbkFDZEFBY0FrQUNkQUo0QUJ3Q1FBSjRBbndBSEFKQUFud0NnQUFjQWtBQ2dBS0VBQndDUUFLRUFvZ0FIQUpBQW9nQ2pBQWNBa0FDakFLUUFCd0NRQUtRQXBRQUhBSkFBcFFDbUFBY0FrQUNtQUtjQUJ3Q29BS2tBcWdBSEFLZ0FxZ0NyQUFjQXFBQ3JBS3dBQndDb0FLd0FyUUFIQUtnQXJRQ3VBQWNBcUFDdUFLOEFCd0NvQUs4QXNBQUhBS2dBc0FDeEFBY0FxQUN4QUxJQUJ3Q29BTElBc3dBSEFLZ0Fzd0MwQUFjQXFBQzBBTFVBQndDb0FMVUF0Z0FIQUtnQXRnQzNBQWNBcUFDM0FMZ0FCd0NvQUxnQXVRQUhBS2dBdVFDNkFBY0FxQUM2QUxzQUJ3Q29BTHNBdkFBSEFLZ0F2QUM5QUFjQXFBQzlBTDRBQndDb0FMNEF2d0FIQU1BQXdRRENBQWNBd0FEQ0FNTUFCd0RBQU1NQXhBQUhBTUFBeEFERkFBY0F3QURGQU1ZQUJ3REFBTVlBeHdBSEFNQUF4d0RJQUFjQXdBRElBTWtBQndEQUFNa0F5Z0FIQU1BQXlnRExBQWNBd0FETEFNd0FCd0RBQU13QXpRQUhBTUFBelFET0FBY0F3QURPQU04QUJ3REFBTThBMEFBSEFNQUEwQURSQUFjQXdBRFJBTklBQndEQUFOSUEwd0FIQU1BQTB3RFVBQWNBd0FEVUFOVUFCd0RBQU5VQTFnQUhBTUFBMWdEWEFBY0EyQURaQU5vQUJ3RFlBTm9BMndBSEFOZ0Eyd0RjQUFjQTJBRGNBTjBBQndEWUFOMEEzZ0FIQU5nQTNnRGZBQWNBMkFEZkFPQUFCd0RZQU9BQTRRQUhBTmdBNFFEaUFBY0EyQURpQU9NQUJ3RFlBT01BNUFBSEFOZ0E1QURsQUFjQTJBRGxBT1lBQndEWUFPWUE1d0FIQU5nQTV3RG9BQWNBMkFEb0FPa0FCd0RZQU9rQTZnQUhBTmdBNmdEckFBY0EyQURyQU93QUJ3RFlBT3dBN1FBSEFOZ0E3UUR1QUFjQTJBRHVBTzhBQndEd0FQRUE4Z0FIQVBBQThnRHpBQWNBOEFEekFQUUFCd0R3QVBRQTlRQUhBUEFBOVFEMkFBY0E4QUQyQVBjQUJ3RHdBUGNBK0FBSEFQQUErQUQ1QUFjQThBRDVBUG9BQndEd0FQb0Erd0FIQVBBQSt3RDhBQWNBOEFEOEFQMEFCd0R3QVAwQS9nQUhBUEFBL2dEL0FBY0E4QUQvQUFBQkJ3RHdBQUFCQVFFSEFQQUFBUUVDQVFjQThBQUNBUU1CQndEd0FBTUJCQUVIQVBBQUJBRUZBUWNBOEFBRkFRWUJCd0R3QUFZQkJ3RUhBQWdCQ1FFS0FRY0FDQUVLQVFzQkJ3QUlBUXNCREFFSEFBZ0JEQUVOQVFjQUNBRU5BUTRCQndBSUFRNEJEd0VIQUFnQkR3RVFBUWNBQ0FFUUFSRUJCd0FJQVJFQkVnRUhBQWdCRWdFVEFRY0FDQUVUQVJRQkJ3QUlBUlFCRlFFSEFBZ0JGUUVXQVFjQUNBRVdBUmNCQndBSUFSY0JHQUVIQUFnQkdBRVpBUWNBQ0FFWkFSb0JCd0FJQVJvQkd3RUhBQWdCR3dFY0FRY0FDQUVjQVIwQkJ3QUlBUjBCSGdFSEFBZ0JIZ0VmQVFjQUlBRWhBU0lCQndBaUFTTUJJQUVIQUNFQkpBRWxBUWNBSlFFaUFTRUJCd0FrQVNZQkp3RUhBQ2NCSlFFa0FRY0FJZ0VvQVNrQkJ3QXBBU01CSWdFSEFDb0JLd0VzQVFjQUxBRXRBU29CQndBbkFTNEJMd0VIQUM4QkpRRW5BUWNBSmdFd0FTNEJCd0F1QVNjQkpnRUhBREVCTUFFbUFRY0FKZ0VrQVRFQkJ3QXlBVE1CTkFFSEFEUUJOUUV5QVFjQU5nRTNBU0VCQndBaEFTQUJOZ0VIQUNrQk5nRWdBUWNBSUFFakFTa0JCd0FvQVRjQk5nRUhBRFlCS1FFb0FRY0FMd0V4QVRjQkJ3QTNBU2dCTHdFSEFDNEJNQUV4QVFjQU1RRXZBUzRCQndBaEFUZ0JPUUVIQURrQkpBRWhBUWNBSkFFNUFUb0JCd0E2QVRFQkpBRUhBREVCT2dFN0FRY0FPd0UzQVRFQkJ3QTNBVHNCT0FFSEFEZ0JJUUUzQVFjQUlnRThBVDBCQndBOUFTZ0JJZ0VIQUNnQlBRRStBUWNBUGdFdkFTZ0JCd0F2QVQ0QlB3RUhBRDhCSlFFdkFRY0FKUUUvQVR3QkJ3QThBU0lCSlFFSEFDd0JRQUZCQVFjQVFRRXRBU3dCQndBckFVSUJRQUVIQUVBQkxBRXJBUWNBS2dGREFVSUJCd0JDQVNzQktnRUhBQzBCUVFGREFRY0FRd0VxQVMwQkJ3QkVBVVVCUVFFSEFFRUJRQUZFQVFjQVBBRkZBVVFCQndCRUFUMEJQQUVIQUQ0QlBRRkVBUWNBUkFGR0FUNEJCd0JDQVVZQlJBRUhBRVFCUUFGQ0FRY0FRd0ZIQVVZQkJ3QkdBVUlCUXdFSEFENEJSZ0ZIQVFjQVJ3RS9BVDRCQndBOEFUOEJSd0VIQUVjQlJRRThBUWNBUVFGRkFVY0JCd0JIQVVNQlFRRUhBRFFCU0FGSkFRY0FTUUUxQVRRQkJ3QXpBVW9CU0FFSEFFZ0JOQUV6QVFjQU1nRkxBVW9CQndCS0FUTUJNZ0VIQURVQlNRRkxBUWNBU3dFeUFUVUJCd0E1QVRnQlRBRUhBRXdCVFFFNUFRY0FTQUZOQVV3QkJ3Qk1BVWtCU0FFSEFFNEJUUUZJQVFjQVNBRktBVTRCQndBNUFVMEJUZ0VIQUU0Qk9nRTVBUWNBT3dFNkFVNEJCd0JPQVU4Qk93RUhBRXNCVHdGT0FRY0FUZ0ZLQVVzQkJ3QkpBVXdCVHdFSEFFOEJTd0ZKQVFjQU93RlBBVXdCQndCTUFUZ0JPd0VIQUZBQlVRRlNBUWNBVWdGVEFWQUJCd0JVQVZVQlZnRUhBRllCVndGVUFRY0FVd0ZTQVZnQkJ3QllBVmtCVXdFSEFGb0JWQUZYQVFjQVZ3RmJBVm9CQndCWkFWZ0JYQUVIQUZ3QlhRRlpBUWNBWGdGYUFWc0JCd0JiQVY4QlhnRUhBRndCWUFGaEFRY0FZUUZkQVZ3QkJ3QlJBV0lCWXdFSEFHTUJVZ0ZSQVFjQVVBRmtBV0lCQndCaUFWRUJVQUVIQUZNQlpRRmtBUWNBWkFGUUFWTUJCd0JaQVdZQlpRRUhBR1VCVXdGWkFRY0Fad0ZZQVZJQkJ3QlNBV01CWndFSEFGMEJZUUZtQVFjQVpnRlpBVjBCQndCZ0FWd0JXQUVIQUZnQlp3RmdBUWNBYUFGaEFXQUJCd0JnQVdrQmFBRUhBR0lCYWdGckFRY0Fhd0ZqQVdJQkJ3QnNBV29CWWdFSEFHSUJaQUZzQVFjQWJRRnNBV1FCQndCa0FXVUJiUUVIQUdZQmJnRnRBUWNBYlFGbEFXWUJCd0JqQVdzQmJ3RUhBRzhCWndGakFRY0FiZ0ZtQVdFQkJ3QmhBV2dCYmdFSEFHY0Jid0ZwQVFjQWFRRmdBV2NCQndCcEFYQUJjUUVIQUhFQmFBRnBBUWNBWHdGeEFYQUJCd0J3QVY0Qlh3RUhBR29CY2dGekFRY0Fjd0ZyQVdvQkJ3QlVBWE1CY2dFSEFISUJWUUZVQVFjQWJBRjBBWElCQndCeUFXb0JiQUVIQUZVQmNnRjBBUWNBZEFGV0FWVUJCd0J0QVhVQmRBRUhBSFFCYkFGdEFRY0FWZ0YwQVhVQkJ3QjFBVmNCVmdFSEFIWUJXd0ZYQVFjQVZ3RjFBWFlCQndCMUFXMEJiZ0VIQUc0QmRnRjFBUWNBYXdGekFYY0JCd0IzQVc4QmF3RUhBRm9CZHdGekFRY0Fjd0ZVQVZvQkJ3Qm9BWEVCZGdFSEFIWUJiZ0ZvQVFjQWNRRmZBVnNCQndCYkFYWUJjUUVIQUc4QmR3RndBUWNBY0FGcEFXOEJCd0JlQVhBQmR3RUhBSGNCV2dGZUFRY0FlQUY1QVhvQkJ3QjZBWHNCZUFFSEFId0JmUUYrQVFjQWZnRi9BWHdCQndCN0FZQUJnUUVIQUlFQmVBRjdBUWNBZUFHQkFZSUJCd0NDQVhrQmVBRUhBSG9CZ3dHQUFRY0FnQUY3QVhvQkJ3QjVBWUlCZ3dFSEFJTUJlZ0Y1QVFjQWhBR0ZBWUVCQndDQkFZQUJoQUVIQUg0QmhRR0VBUWNBaEFGL0FYNEJCd0NGQVlZQmdnRUhBSUlCZ1FHRkFRY0FmUUdHQVlVQkJ3Q0ZBWDRCZlFFSEFJTUJod0dFQVFjQWhBR0FBWU1CQndCL0FZUUJod0VIQUljQmZBRi9BUWNBZ2dHR0FZY0JCd0NIQVlNQmdnRUhBSHdCaHdHR0FRY0FoZ0Y5QVh3QkJ3Q0lBWWtCaWdFSEFJb0Jpd0dJQVFjQWpBR05BWTRCQndDT0FZOEJqQUVIQUpBQmtRR1NBUWNBa2dHVEFaQUJCd0NSQVpRQmxRRUhBSlVCa2dHUkFRY0FsZ0dYQVpBQkJ3Q1FBWk1CbGdFSEFKVUJsQUdYQVFjQWx3R1dBWlVCQndDUUFaZ0JtUUVIQUprQmtRR1FBUWNBamdHWkFaZ0JCd0NZQVk4QmpnRUhBSkVCbVFHYUFRY0FtZ0dVQVpFQkJ3Q05BWm9CbVFFSEFKa0JqZ0dOQVFjQWx3R2JBWmdCQndDWUFaQUJsd0VIQUk4Qm1BR2JBUWNBbXdHTUFZOEJCd0NVQVpvQm13RUhBSnNCbHdHVUFRY0FqQUdiQVpvQkJ3Q2FBWTBCakFFSEFKSUJuQUdkQVFjQW5RR1RBWklCQndDTEFaMEJuQUVIQUp3QmlBR0xBUWNBbFFHZUFad0JCd0NjQVpJQmxRRUhBSWdCbkFHZUFRY0FuZ0dKQVlnQkJ3Q1RBWjBCbndFSEFKOEJsZ0dUQVFjQWlnR2ZBWjBCQndDZEFZc0JpZ0VIQUpZQm53R2VBUWNBbmdHVkFaWUJCd0NKQVo0Qm53RUhBSjhCaWdHSkFRY0FvQUdoQWFJQkJ3Q2lBYU1Cb0FFSEFLSUJwQUdsQVFjQXBRR2pBYUlCQndDaEFhWUJwQUVIQUtRQm9nR2hBUWNBcHdHbUFhRUJCd0NoQWFBQnB3RUhBS1VCcHdHZ0FRY0FvQUdqQWFVQkJ3Q2tBYVlCcHdFSEFLY0JwUUdrQVFjQXFBR3BBYW9CQndDcUFhc0JxQUVIQUtvQnJBR3RBUWNBclFHckFhb0JCd0NwQWE0QnJBRUhBS3dCcWdHcEFRY0Fyd0d1QWFrQkJ3Q3BBYWdCcndFSEFLMEJyd0dvQVFjQXFBR3JBYTBCQndDc0FhNEJyd0VIQUs4QnJRR3NBUWNBc0FHeEFiSUJCd0N5QWJNQnNBRUhBTElCdEFHMUFRY0F0UUd6QWJJQkJ3Q3hBYllCdEFFSEFMUUJzZ0d4QVFjQXR3RzJBYkVCQndDeEFiQUJ0d0VIQUxVQnR3R3dBUWNBc0FHekFiVUJCd0MwQWJZQnR3RUhBTGNCdFFHMEFRY0FHQUF2QUJjQUJ3QVhBQllBR0FBSEFCa0FHQUFXQUFjQUZnQVZBQmtBQndBYUFCa0FGUUFIQUJVQUZBQWFBQWNBR3dBYUFCUUFCd0FVQUJNQUd3QUhBQndBR3dBVEFBY0FFd0FTQUJ3QUJ3QWRBQndBRWdBSEFCSUFFUUFkQUFjQUhnQWRBQkVBQndBUkFCQUFIZ0FIQUI4QUhnQVFBQWNBRUFBUEFCOEFCd0FnQUI4QUR3QUhBQThBRGdBZ0FBY0FJUUFnQUE0QUJ3QU9BQTBBSVFBSEFDSUFJUUFOQUFjQURRQU1BQ0lBQndBakFDSUFEQUFIQUF3QUN3QWpBQWNBQ2dBa0FDTUFCd0FqQUFzQUNnQUhBQWtBSlFBa0FBY0FKQUFLQUFrQUJ3QUlBQ1lBSlFBSEFDVUFDUUFJQUFjQUJ3QW5BQ1lBQndBbUFBZ0FCd0FIQUFZQUtBQW5BQWNBSndBSEFBWUFCd0FGQUNrQUtBQUhBQ2dBQmdBRkFBY0FCQUFxQUNrQUJ3QXBBQVVBQkFBSEFBTUFLd0FxQUFjQUtnQUVBQU1BQndBQ0FDd0FLd0FIQUNzQUF3QUNBQWNBQVFBdEFDd0FCd0FzQUFJQUFRQUhBQUFBTGdBdEFBY0FMUUFCQUFBQUJ3QVhBQzhBTGdBSEFDNEFBQUFYQUFjQVNBQmZBRWNBQndCSEFFWUFTQUFIQUVrQVNBQkdBQWNBUmdCRkFFa0FCd0JLQUVrQVJRQUhBRVVBUkFCS0FBY0FTd0JLQUVRQUJ3QkVBRU1BU3dBSEFFd0FTd0JEQUFjQVF3QkNBRXdBQndCTkFFd0FRZ0FIQUVJQVFRQk5BQWNBVGdCTkFFRUFCd0JCQUVBQVRnQUhBRThBVGdCQUFBY0FRQUEvQUU4QUJ3QlFBRThBUHdBSEFEOEFQZ0JRQUFjQVVRQlFBRDRBQndBK0FEMEFVUUFIQUZJQVVRQTlBQWNBUFFBOEFGSUFCd0JUQUZJQVBBQUhBRHdBT3dCVEFBY0FPZ0JVQUZNQUJ3QlRBRHNBT2dBSEFEa0FWUUJVQUFjQVZBQTZBRGtBQndBNEFGWUFWUUFIQUZVQU9RQTRBQWNBTndCWEFGWUFCd0JXQURnQU53QUhBRFlBV0FCWEFBY0FWd0EzQURZQUJ3QTFBRmtBV0FBSEFGZ0FOZ0ExQUFjQU5BQmFBRmtBQndCWkFEVUFOQUFIQURNQVd3QmFBQWNBV2dBMEFETUFCd0F5QUZ3QVd3QUhBRnNBTXdBeUFBY0FNUUJkQUZ3QUJ3QmNBRElBTVFBSEFEQUFYZ0JkQUFjQVhRQXhBREFBQndCSEFGOEFYZ0FIQUY0QU1BQkhBQWNBdUFHNUFib0JCd0M2QWJzQnVBRUhBTHdCdlFHK0FRY0F2Z0cvQWJ3QkJ3REFBY0VCd2dFSEFNSUJ3d0hBQVFjQXhBSEZBY0VCQndEQkFjQUJ4QUVIQU1JQnhnSEhBUWNBeHdIREFjSUJCd0RHQWNVQnhBRUhBTVFCeHdIR0FRY0F5QUhKQWNJQkJ3RENBY0VCeUFFSEFNa0J5QUc4QVFjQXZBRy9BY2tCQndES0FjZ0J3UUVIQU1FQnhRSEtBUWNBeUFIS0FiMEJCd0M5QWJ3QnlBRUhBTWtCeXdIR0FRY0F4Z0hDQWNrQkJ3RExBY2tCdndFSEFMOEJ2Z0hMQVFjQXl3SEtBY1VCQndERkFjWUJ5d0VIQU1vQnl3RytBUWNBdmdHOUFjb0JCd0RNQWMwQndBRUhBTUFCd3dITUFRY0F6UUhNQWJzQkJ3QzdBYm9CelFFSEFNMEJ6Z0hFQVFjQXhBSEFBYzBCQndET0FjMEJ1Z0VIQUxvQnVRSE9BUWNBendITUFjTUJCd0REQWNjQnp3RUhBTXdCendHNEFRY0F1QUc3QWN3QkJ3RE9BYzhCeHdFSEFNY0J4QUhPQVFjQXp3SE9BYmtCQndDNUFiZ0J6d0VIQU5BQjBRSFNBUWNBMGdIVEFkQUJCd0RVQWRVQjBBRUhBTkFCMHdIVUFRY0ExUUhXQWRFQkJ3RFJBZEFCMVFFSEFORUIxZ0hYQVFjQTF3SFNBZEVCQndEU0FkY0IxQUVIQU5RQjB3SFNBUWNBMXdIV0FkVUJCd0RWQWRRQjF3RUhBTmdCMlFIYUFRY0EyZ0hiQWRnQkJ3RGNBZDBCMkFFSEFOZ0Iyd0hjQVFjQTNRSGVBZGtCQndEWkFkZ0IzUUVIQU5rQjNnSGZBUWNBM3dIYUFka0JCd0RhQWQ4QjNBRUhBTndCMndIYUFRY0Ezd0hlQWQwQkJ3RGRBZHdCM3dFSEFPQUI0UUhpQVFjQTRnSGpBZUFCQndEa0FlVUI1Z0VIQU9ZQjV3SGtBUWNBNkFIcEFlb0JCd0RxQWVzQjZBRUhBT2tCN0FIdEFRY0E3UUhxQWVrQkJ3RHVBZThCNkFFSEFPZ0I2d0h1QVFjQTdRSHNBZThCQndEdkFlNEI3UUVIQU9nQjhBSHhBUWNBOFFIcEFlZ0JCd0RtQWZFQjhBRUhBUEFCNXdIbUFRY0E2UUh4QWZJQkJ3RHlBZXdCNlFFSEFPVUI4Z0h4QVFjQThRSG1BZVVCQndEdkFmTUI4QUVIQVBBQjZBSHZBUWNBNXdId0FmTUJCd0R6QWVRQjV3RUhBT3dCOGdIekFRY0E4d0h2QWV3QkJ3RGtBZk1COGdFSEFQSUI1UUhrQVFjQTZnSDBBZlVCQndEMUFlc0I2Z0VIQU9NQjlRSDBBUWNBOUFIZ0FlTUJCd0R0QWZZQjlBRUhBUFFCNmdIdEFRY0E0QUgwQWZZQkJ3RDJBZUVCNEFFSEFPc0I5UUgzQVFjQTl3SHVBZXNCQndEaUFmY0I5UUVIQVBVQjR3SGlBUWNBN2dIM0FmWUJCd0QyQWUwQjdnRUhBT0VCOWdIM0FRY0E5d0hpQWVFQkJ3RDRBZmtCK2dFSEFQb0Ird0g0QVFjQStnSDhBZjBCQndEOUFmc0IrZ0VIQVBrQi9nSDhBUWNBL0FINkFma0JCd0QvQWY0QitRRUhBUGtCK0FIL0FRY0EvUUgvQWZnQkJ3RDRBZnNCL1FFSEFQd0IvZ0gvQVFjQS93SDlBZndCQndBQUFnRUNBZ0lIQUFJQ0F3SUFBZ2NBQWdJRUFnVUNCd0FGQWdNQ0FnSUhBQUVDQmdJRUFnY0FCQUlDQWdFQ0J3QUhBZ1lDQVFJSEFBRUNBQUlIQWdjQUJRSUhBZ0FDQndBQUFnTUNCUUlIQUFRQ0JnSUhBZ2NBQndJRkFnUUNCd0FJQWdrQ0NnSUhBQW9DQ3dJSUFnY0FEQUlOQWc0Q0J3QU9BZzhDREFJSEFBc0NFQUlSQWdjQUVRSUlBZ3NDQndBSUFoRUNFZ0lIQUJJQ0NRSUlBZ2NBQ2dJVEFoQUNCd0FRQWdzQ0NnSUhBQWtDRWdJVEFnY0FFd0lLQWdrQ0J3QVVBaFVDRVFJSEFCRUNFQUlVQWdjQUZRSVdBaElDQndBU0FoRUNGUUlIQUJNQ0Z3SVVBZ2NBRkFJUUFoTUNCd0FTQWhZQ0Z3SUhBQmNDRXdJU0FnY0FGQUlZQWhrQ0J3QVpBaFVDRkFJSEFBNENHUUlZQWdjQUdBSVBBZzRDQndBVkFoa0NHZ0lIQUJvQ0ZnSVZBZ2NBRFFJYUFoa0NCd0FaQWc0Q0RRSUhBQmNDR3dJWUFnY0FHQUlVQWhjQ0J3QVBBaGdDR3dJSEFCc0NEQUlQQWdjQUZnSWFBaHNDQndBYkFoY0NGZ0lIQUF3Q0d3SWFBZ2NBR2dJTkFnd0NCd0FjQW5nQWp3QUhBSThBSFFJY0FnY0FIZ0o1QUhnQUJ3QjRBQndDSGdJSEFCOENlZ0I1QUFjQWVRQWVBaDhDQndBZ0Fuc0FlZ0FIQUhvQUh3SWdBZ2NBSVFKOEFIc0FCd0I3QUNBQ0lRSUhBQ0lDZlFCOEFBY0FmQUFoQWlJQ0J3QitBSDBBSWdJSEFDSUNJd0orQUFjQWZ3QitBQ01DQndBakFpUUNmd0FIQUlBQWZ3QWtBZ2NBSkFJbEFvQUFCd0NCQUlBQUpRSUhBQ1VDSmdLQkFBY0FnZ0NCQUNZQ0J3QW1BaWNDZ2dBSEFJTUFnZ0FuQWdjQUp3SW9Bb01BQndDRUFJTUFLQUlIQUNnQ0tRS0VBQWNBaFFDRUFDa0NCd0FwQWlvQ2hRQUhBSVlBaFFBcUFnY0FLZ0lyQW9ZQUJ3Q0hBSVlBS3dJSEFDc0NMQUtIQUFjQWlBQ0hBQ3dDQndBc0FpMENpQUFIQUlrQWlBQXRBZ2NBTFFJdUFva0FCd0F2QW9vQWlRQUhBSWtBTGdJdkFnY0FNQUtMQUlvQUJ3Q0tBQzhDTUFJSEFERUNqQUNMQUFjQWl3QXdBakVDQndBeUFvMEFqQUFIQUl3QU1RSXlBZ2NBTXdLT0FJMEFCd0NOQURJQ013SUhBQjBDandDT0FBY0FqZ0F6QWgwQ0J3QTBBaDBDTXdJSEFETUNOUUkwQWdjQU5nSWNBaDBDQndBZEFqUUNOZ0lIQURjQ0hnSWNBZ2NBSEFJMkFqY0NCd0E0QWg4Q0hnSUhBQjRDTndJNEFnY0FPUUlnQWg4Q0J3QWZBamdDT1FJSEFEb0NJUUlnQWdjQUlBSTVBam9DQndBN0FpSUNJUUlIQUNFQ09nSTdBZ2NBSXdJaUFqc0NCd0E3QWp3Q0l3SUhBQ1FDSXdJOEFnY0FQQUk5QWlRQ0J3QWxBaVFDUFFJSEFEMENQZ0lsQWdjQUpnSWxBajRDQndBK0FqOENKZ0lIQUNjQ0pnSS9BZ2NBUHdKQUFpY0NCd0FvQWljQ1FBSUhBRUFDUVFJb0FnY0FLUUlvQWtFQ0J3QkJBa0lDS1FJSEFDb0NLUUpDQWdjQVFnSkRBaW9DQndBckFpb0NRd0lIQUVNQ1JBSXJBZ2NBTEFJckFrUUNCd0JFQWtVQ0xBSUhBQzBDTEFKRkFnY0FSUUpHQWkwQ0J3QXVBaTBDUmdJSEFFWUNSd0l1QWdjQVNBSXZBaTRDQndBdUFrY0NTQUlIQUVrQ01BSXZBZ2NBTHdKSUFra0NCd0JLQWpFQ01BSUhBREFDU1FKS0FnY0FTd0l5QWpFQ0J3QXhBa29DU3dJSEFEVUNNd0l5QWdjQU1nSkxBalVDQndCTUFqUUNOUUlIQURVQ1RRSk1BZ2NBVGdJMkFqUUNCd0EwQWt3Q1RnSUhBRThDTndJMkFnY0FOZ0pPQWs4Q0J3QlFBamdDTndJSEFEY0NUd0pRQWdjQVVRSTVBamdDQndBNEFsQUNVUUlIQUZJQ09nSTVBZ2NBT1FKUkFsSUNCd0JUQWpzQ09nSUhBRG9DVWdKVEFnY0FQQUk3QWxNQ0J3QlRBbFFDUEFJSEFEMENQQUpVQWdjQVZBSlZBajBDQndBK0FqMENWUUlIQUZVQ1ZnSStBZ2NBUHdJK0FsWUNCd0JXQWxjQ1B3SUhBRUFDUHdKWEFnY0FWd0pZQWtBQ0J3QkJBa0FDV0FJSEFGZ0NXUUpCQWdjQVFnSkJBbGtDQndCWkFsb0NRZ0lIQUVNQ1FnSmFBZ2NBV2dKYkFrTUNCd0JFQWtNQ1d3SUhBRnNDWEFKRUFnY0FSUUpFQWx3Q0J3QmNBbDBDUlFJSEFFWUNSUUpkQWdjQVhRSmVBa1lDQndCSEFrWUNYZ0lIQUY0Q1h3SkhBZ2NBWUFKSUFrY0NCd0JIQWw4Q1lBSUhBR0VDU1FKSUFnY0FTQUpnQW1FQ0J3QmlBa29DU1FJSEFFa0NZUUppQWdjQVl3SkxBa29DQndCS0FtSUNZd0lIQUUwQ05RSkxBZ2NBU3dKakFrMENCd0JrQWt3Q1RRSUhBRTBDWlFKa0FnY0FaZ0pPQWt3Q0J3Qk1BbVFDWmdJSEFHY0NUd0pPQWdjQVRnSm1BbWNDQndCb0FsQUNUd0lIQUU4Q1p3Sm9BZ2NBYVFKUkFsQUNCd0JRQW1nQ2FRSUhBR29DVWdKUkFnY0FVUUpwQW1vQ0J3QnJBbE1DVWdJSEFGSUNhZ0pyQWdjQVZBSlRBbXNDQndCckFtd0NWQUlIQUZVQ1ZBSnNBZ2NBYkFKdEFsVUNCd0JXQWxVQ2JRSUhBRzBDYmdKV0FnY0FWd0pXQW00Q0J3QnVBbThDVndJSEFGZ0NWd0p2QWdjQWJ3SndBbGdDQndCWkFsZ0NjQUlIQUhBQ2NRSlpBZ2NBV2dKWkFuRUNCd0J4QW5JQ1dnSUhBRnNDV2dKeUFnY0FjZ0p6QWxzQ0J3QmNBbHNDY3dJSEFITUNkQUpjQWdjQVhRSmNBblFDQndCMEFuVUNYUUlIQUY0Q1hRSjFBZ2NBZFFKMkFsNENCd0JmQWw0Q2RnSUhBSFlDZHdKZkFnY0FlQUpnQWw4Q0J3QmZBbmNDZUFJSEFIa0NZUUpnQWdjQVlBSjRBbmtDQndCNkFtSUNZUUlIQUdFQ2VRSjZBZ2NBZXdKakFtSUNCd0JpQW5vQ2V3SUhBR1VDVFFKakFnY0FZd0o3QW1VQ0J3QjNBR1FDWlFJSEFHVUNZQUIzQUFjQWRnQm1BbVFDQndCa0FuY0FkZ0FIQUhVQVp3Sm1BZ2NBWmdKMkFIVUFCd0IwQUdnQ1p3SUhBR2NDZFFCMEFBY0Fjd0JwQW1nQ0J3Qm9BblFBY3dBSEFISUFhZ0pwQWdjQWFRSnpBSElBQndCeEFHc0NhZ0lIQUdvQ2NnQnhBQWNBYkFKckFuRUFCd0J4QUhBQWJBSUhBRzBDYkFKd0FBY0FjQUJ2QUcwQ0J3QnVBbTBDYndBSEFHOEFiZ0J1QWdjQWJ3SnVBbTRBQndCdUFHMEFid0lIQUhBQ2J3SnRBQWNBYlFCc0FIQUNCd0J4QW5BQ2JBQUhBR3dBYXdCeEFnY0FjZ0p4QW1zQUJ3QnJBR29BY2dJSEFITUNjZ0pxQUFjQWFnQnBBSE1DQndCMEFuTUNhUUFIQUdrQWFBQjBBZ2NBZFFKMEFtZ0FCd0JvQUdjQWRRSUhBSFlDZFFKbkFBY0Fad0JtQUhZQ0J3QjNBbllDWmdBSEFHWUFaUUIzQWdjQVpBQjRBbmNDQndCM0FtVUFaQUFIQUdNQWVRSjRBZ2NBZUFKa0FHTUFCd0JpQUhvQ2VRSUhBSGtDWXdCaUFBY0FZUUI3QW5vQ0J3QjZBbUlBWVFBSEFHQUFaUUo3QWdjQWV3SmhBR0FBQndCOEFuMENmZ0lIQUg0Q2Z3SjhBZ2NBZlFLQUFvRUNCd0NCQW40Q2ZRSUhBSUFDZ2dLREFnY0Fnd0tCQW9BQ0J3QitBb1FDaFFJSEFJVUNmd0orQWdjQWhnS0hBb2dDQndDSUFva0NoZ0lIQUlNQ2lnS0xBZ2NBaXdLQkFvTUNCd0NDQW93Q2lnSUhBSW9DZ3dLQ0FnY0FqUUtNQW9JQ0J3Q0NBb0FDalFJSEFJNENqd0tRQWdjQWtBS1JBbzRDQndDU0FwTUNmUUlIQUgwQ2ZBS1NBZ2NBaFFLU0Fud0NCd0I4QW44Q2hRSUhBSVFDa3dLU0FnY0FrZ0tGQW9RQ0J3Q0xBbzBDa3dJSEFKTUNoQUtMQWdjQWlnS01BbzBDQndDTkFvc0NpZ0lIQUgwQ2xBS1ZBZ2NBbFFLQUFuMENCd0NBQXBVQ2xnSUhBSllDalFLQUFnY0FqUUtXQXBjQ0J3Q1hBcE1DalFJSEFKTUNsd0tVQWdjQWxBSjlBcE1DQndCK0FwZ0NtUUlIQUprQ2hBSitBZ2NBaEFLWkFwb0NCd0NhQW9zQ2hBSUhBSXNDbWdLYkFnY0Ftd0tCQW9zQ0J3Q0JBcHNDbUFJSEFKZ0NmZ0tCQWdjQWlBS2NBcDBDQndDZEFva0NpQUlIQUljQ25nS2NBZ2NBbkFLSUFvY0NCd0NHQXA4Q25nSUhBSjRDaHdLR0FnY0FpUUtkQXA4Q0J3Q2ZBb1lDaVFJSEFLQUNvUUtkQWdjQW5RS2NBcUFDQndDWUFxRUNvQUlIQUtBQ21RS1lBZ2NBbWdLWkFxQUNCd0NnQXFJQ21nSUhBSjRDb2dLZ0FnY0FvQUtjQXA0Q0J3Q2ZBcU1Db2dJSEFLSUNuZ0tmQWdjQW1nS2lBcU1DQndDakFwc0NtZ0lIQUpnQ213S2pBZ2NBb3dLaEFwZ0NCd0NkQXFFQ293SUhBS01DbndLZEFnY0FrQUtrQXFVQ0J3Q2xBcEVDa0FJSEFJOENwZ0trQWdjQXBBS1FBbzhDQndDT0FxY0NwZ0lIQUtZQ2p3S09BZ2NBa1FLbEFxY0NCd0NuQW80Q2tRSUhBSlVDbEFLb0FnY0FxQUtwQXBVQ0J3Q2tBcWtDcUFJSEFLZ0NwUUtrQWdjQXFnS3BBcVFDQndDa0FxWUNxZ0lIQUpVQ3FRS3FBZ2NBcWdLV0FwVUNCd0NYQXBZQ3FnSUhBS29DcXdLWEFnY0Fwd0tyQXFvQ0J3Q3FBcVlDcHdJSEFLVUNxQUtyQWdjQXF3S25BcVVDQndDWEFxc0NxQUlIQUtnQ2xBS1hBZ2NBckFLdEFxNENCd0N1QXE4Q3JBSUhBTEFDc1FLeUFnY0FzZ0t6QXJBQ0J3Q3ZBcTRDdEFJSEFMUUN0UUt2QWdjQXRnS3dBck1DQndDekFyY0N0Z0lIQUxVQ3RBSzRBZ2NBdUFLNUFyVUNCd0M2QXJZQ3R3SUhBTGNDdXdLNkFnY0F1QUs4QXIwQ0J3QzlBcmtDdUFJSEFLMEN2Z0svQWdjQXZ3S3VBcTBDQndDc0FzQUN2Z0lIQUw0Q3JRS3NBZ2NBcndMQkFzQUNCd0RBQXF3Q3J3SUhBTFVDd2dMQkFnY0F3UUt2QXJVQ0J3RERBclFDcmdJSEFLNEN2d0xEQWdjQXVRSzlBc0lDQndEQ0FyVUN1UUlIQUx3Q3VBSzBBZ2NBdEFMREFyd0NCd0RFQXIwQ3ZBSUhBTHdDeFFMRUFnY0F2Z0xHQXNjQ0J3REhBcjhDdmdJSEFNZ0N4Z0srQWdjQXZnTEFBc2dDQndESkFzZ0N3QUlIQU1BQ3dRTEpBZ2NBd2dMS0Fza0NCd0RKQXNFQ3dnSUhBTDhDeHdMTEFnY0F5d0xEQXI4Q0J3REtBc0lDdlFJSEFMMEN4QUxLQWdjQXd3TExBc1VDQndERkFyd0N3d0lIQU1VQ3pBTE5BZ2NBelFMRUFzVUNCd0M3QXMwQ3pBSUhBTXdDdWdLN0FnY0F4Z0xPQXM4Q0J3RFBBc2NDeGdJSEFMQUN6d0xPQWdjQXpnS3hBckFDQndESUF0QUN6Z0lIQU00Q3hnTElBZ2NBc1FMT0F0QUNCd0RRQXJJQ3NRSUhBTWtDMFFMUUFnY0EwQUxJQXNrQ0J3Q3lBdEFDMFFJSEFORUNzd0t5QWdjQTBnSzNBck1DQndDekF0RUMwZ0lIQU5FQ3lRTEtBZ2NBeWdMU0F0RUNCd0RIQXM4QzB3SUhBTk1DeXdMSEFnY0F0Z0xUQXM4Q0J3RFBBckFDdGdJSEFNUUN6UUxTQWdjQTBnTEtBc1FDQndETkFyc0N0d0lIQUxjQzBnTE5BZ2NBeXdMVEFzd0NCd0RNQXNVQ3l3SUhBTG9DekFMVEFnY0Ewd0syQXJvQ0J3RFVBdFVDMWdJSEFOWUMxd0xVQWdjQTJBTFpBdG9DQndEYUF0c0MyQUlIQU5jQzNBTGRBZ2NBM1FMVUF0Y0NCd0RVQXQwQzNnSUhBTjRDMVFMVUFnY0ExZ0xmQXR3Q0J3RGNBdGNDMWdJSEFOVUMzZ0xmQWdjQTN3TFdBdFVDQndEZ0F1RUMzUUlIQU4wQzNBTGdBZ2NBMmdMaEF1QUNCd0RnQXRzQzJnSUhBT0VDNGdMZUFnY0EzZ0xkQXVFQ0J3RFpBdUlDNFFJSEFPRUMyZ0xaQWdjQTN3TGpBdUFDQndEZ0F0d0Mzd0lIQU5zQzRBTGpBZ2NBNHdMWUF0c0NCd0RlQXVJQzR3SUhBT01DM3dMZUFnY0EyQUxqQXVJQ0J3RGlBdGtDMkFJSEFPUUM1UUxtQWdjQTVnTG5BdVFDQndEb0F1a0M2Z0lIQU9vQzZ3TG9BZ2NBN0FMdEF1NENCd0R1QXU4QzdBSUhBTzBDOEFMeEFnY0E4UUx1QXUwQ0J3RHlBdk1DN0FJSEFPd0M3d0x5QWdjQThRTHdBdk1DQndEekF2SUM4UUlIQU93QzlBTDFBZ2NBOVFMdEF1d0NCd0RxQXZVQzlBSUhBUFFDNndMcUFnY0E3UUwxQXZZQ0J3RDJBdkFDN1FJSEFPa0M5Z0wxQWdjQTlRTHFBdWtDQndEekF2Y0M5QUlIQVBRQzdBTHpBZ2NBNndMMEF2Y0NCd0QzQXVnQzZ3SUhBUEFDOWdMM0FnY0E5d0x6QXZBQ0J3RG9BdmNDOWdJSEFQWUM2UUxvQWdjQTdnTDRBdmtDQndENUF1OEM3Z0lIQU9jQytRTDRBZ2NBK0FMa0F1Y0NCd0R4QXZvQytBSUhBUGdDN2dMeEFnY0E1QUw0QXZvQ0J3RDZBdVVDNUFJSEFPOEMrUUw3QWdjQSt3THlBdThDQndEbUF2c0MrUUlIQVBrQzV3TG1BZ2NBOGdMN0F2b0NCd0Q2QXZFQzhnSUhBT1VDK2dMN0FnY0Erd0xtQXVVQ0J3RDhBdjBDL2dJSEFQNEMvd0w4QWdjQS9nSUFBd0VEQndBQkEvOEMvZ0lIQVAwQ0FnTUFBd2NBQUFQK0F2MENCd0FEQXdJRC9RSUhBUDBDL0FJREF3Y0FBUU1EQS93Q0J3RDhBdjhDQVFNSEFBQURBZ01EQXdjQUF3TUJBd0FEQndBRUF3VURCZ01IQUFZREJ3TUVBd2NBQmdNSUF3a0RCd0FKQXdjREJnTUhBQVVEQ2dNSUF3Y0FDQU1HQXdVREJ3QUxBd29EQlFNSEFBVURCQU1MQXdjQUNRTUxBd1FEQndBRUF3Y0RDUU1IQUFnRENnTUxBd2NBQ3dNSkF3Z0RCd0FNQXcwRERnTUhBQTRERHdNTUF3Y0FEZ01RQXhFREJ3QVJBdzhERGdNSEFBMERFZ01RQXdjQUVBTU9BdzBEQndBVEF4SUREUU1IQUEwRERBTVRBd2NBRVFNVEF3d0RCd0FNQXc4REVRTUhBQkFERWdNVEF3Y0FFd01SQXhBREJ3Q29BTDhBcHdBSEFLY0FwZ0NvQUFjQXFRQ29BS1lBQndDbUFLVUFxUUFIQUtvQXFRQ2xBQWNBcFFDa0FLb0FCd0NyQUtvQXBBQUhBS1FBb3dDckFBY0FyQUNyQUtNQUJ3Q2pBS0lBckFBSEFLMEFyQUNpQUFjQW9nQ2hBSzBBQndDdUFLMEFvUUFIQUtFQW9BQ3VBQWNBcndDdUFLQUFCd0NnQUo4QXJ3QUhBTEFBcndDZkFBY0Fud0NlQUxBQUJ3Q3hBTEFBbmdBSEFKNEFuUUN4QUFjQXNnQ3hBSjBBQndDZEFKd0FzZ0FIQUxNQXNnQ2NBQWNBbkFDYkFMTUFCd0NhQUxRQXN3QUhBTE1BbXdDYUFBY0FtUUMxQUxRQUJ3QzBBSm9BbVFBSEFKZ0F0Z0MxQUFjQXRRQ1pBSmdBQndDWEFMY0F0Z0FIQUxZQW1BQ1hBQWNBbGdDNEFMY0FCd0MzQUpjQWxnQUhBSlVBdVFDNEFBY0F1QUNXQUpVQUJ3Q1VBTG9BdVFBSEFMa0FsUUNVQUFjQWt3QzdBTG9BQndDNkFKUUFrd0FIQUpJQXZBQzdBQWNBdXdDVEFKSUFCd0NSQUwwQXZBQUhBTHdBa2dDUkFBY0FrQUMrQUwwQUJ3QzlBSkVBa0FBSEFLY0F2d0MrQUFjQXZnQ1FBS2NBQndEWUFPOEExd0FIQU5jQTFnRFlBQWNBMlFEWUFOWUFCd0RXQU5VQTJRQUhBTm9BMlFEVkFBY0ExUURVQU5vQUJ3RGJBTm9BMUFBSEFOUUEwd0RiQUFjQTNBRGJBTk1BQndEVEFOSUEzQUFIQU4wQTNBRFNBQWNBMGdEUkFOMEFCd0RlQU4wQTBRQUhBTkVBMEFEZUFBY0Ezd0RlQU5BQUJ3RFFBTThBM3dBSEFPQUEzd0RQQUFjQXp3RE9BT0FBQndEaEFPQUF6Z0FIQU00QXpRRGhBQWNBNGdEaEFNMEFCd0ROQU13QTRnQUhBT01BNGdETUFBY0F6QURMQU9NQUJ3REtBT1FBNHdBSEFPTUF5d0RLQUFjQXlRRGxBT1FBQndEa0FNb0F5UUFIQU1nQTVnRGxBQWNBNVFESkFNZ0FCd0RIQU9jQTVnQUhBT1lBeUFESEFBY0F4Z0RvQU9jQUJ3RG5BTWNBeGdBSEFNVUE2UURvQUFjQTZBREdBTVVBQndERUFPb0E2UUFIQU9rQXhRREVBQWNBd3dEckFPb0FCd0RxQU1RQXd3QUhBTUlBN0FEckFBY0E2d0REQU1JQUJ3REJBTzBBN0FBSEFPd0F3Z0RCQUFjQXdBRHVBTzBBQndEdEFNRUF3QUFIQU5jQTd3RHVBQWNBN2dEQUFOY0FCd0FVQXhVREZnTUhBQllERndNVUF3Y0FHQU1aQXhvREJ3QWFBeHNER0FNSEFCd0RIUU1lQXdjQUhnTWZBeHdEQndBZ0F5RURIUU1IQUIwREhBTWdBd2NBSGdNaUF5TURCd0FqQXg4REhnTUhBQ0lESVFNZ0F3Y0FJQU1qQXlJREJ3QWtBeVVESGdNSEFCNERIUU1rQXdjQUpRTWtBeGdEQndBWUF4c0RKUU1IQUNZREpBTWRBd2NBSFFNaEF5WURCd0FrQXlZREdRTUhBQmtER0FNa0F3Y0FKUU1uQXlJREJ3QWlBeDRESlFNSEFDY0RKUU1iQXdjQUd3TWFBeWNEQndBbkF5WURJUU1IQUNFRElnTW5Bd2NBSmdNbkF4b0RCd0FhQXhrREpnTUhBQ2dES1FNY0F3Y0FIQU1mQXlnREJ3QXBBeWdERndNSEFCY0RGZ01wQXdjQUtRTXFBeUFEQndBZ0F4d0RLUU1IQUNvREtRTVdBd2NBRmdNVkF5b0RCd0FyQXlnREh3TUhBQjhESXdNckF3Y0FLQU1yQXhRREJ3QVVBeGNES0FNSEFDb0RLd01qQXdjQUl3TWdBeW9EQndBckF5b0RGUU1IQUJVREZBTXJBd2NBTEFNdEF5NERCd0F1QXk4RExBTUhBREFETVFNc0F3Y0FMQU12QXpBREJ3QXhBeklETFFNSEFDMERMQU14QXdjQUxRTXlBek1EQndBekF5NERMUU1IQUM0RE13TXdBd2NBTUFNdkF5NERCd0F6QXpJRE1RTUhBREVETUFNekF3Y0FOQU0xQXpZREJ3QTJBemNETkFNSEFEZ0RPUU02QXdjQU9nTTdBemdEQndBOEF6MERQZ01IQUQ0RFB3TThBd2NBUFFOQUEwRURCd0JCQXo0RFBRTUhBRUlEUXdNOEF3Y0FQQU0vQTBJREJ3QkJBMEFEUXdNSEFFTURRZ05CQXdjQVBBTkVBMFVEQndCRkF6MERQQU1IQURvRFJRTkVBd2NBUkFNN0F6b0RCd0E5QTBVRFJnTUhBRVlEUUFNOUF3Y0FPUU5HQTBVREJ3QkZBem9ET1FNSEFFTURSd05FQXdjQVJBTThBME1EQndBN0EwUURSd01IQUVjRE9BTTdBd2NBUUFOR0EwY0RCd0JIQTBNRFFBTUhBRGdEUndOR0F3Y0FSZ001QXpnREJ3QStBMGdEU1FNSEFFa0RQd00rQXdjQU53TkpBMGdEQndCSUF6UUROd01IQUVFRFNnTklBd2NBU0FNK0EwRURCd0EwQTBnRFNnTUhBRW9ETlFNMEF3Y0FQd05KQTBzREJ3QkxBMElEUHdNSEFEWURTd05KQXdjQVNRTTNBellEQndCQ0Ewc0RTZ01IQUVvRFFRTkNBd2NBTlFOS0Ewc0RCd0JMQXpZRE5RTUhBRXdEVFFOT0F3Y0FUZ05QQTB3REJ3Qk9BMUFEVVFNSEFGRURUd05PQXdjQVRRTlNBMUFEQndCUUEwNERUUU1IQUZNRFVnTk5Bd2NBVFFOTUExTURCd0JSQTFNRFRBTUhBRXdEVHdOUkF3Y0FVQU5TQTFNREJ3QlRBMUVEVUFNSEFGUURWUU5XQXdjQVZnTlhBMVFEQndCV0ExZ0RXUU1IQUZrRFZ3TldBd2NBVlFOYUExZ0RCd0JZQTFZRFZRTUhBRnNEV2dOVkF3Y0FWUU5VQTFzREJ3QlpBMXNEVkFNSEFGUURWd05aQXdjQVdBTmFBMXNEQndCYkExa0RXQU1IQUZ3RFhRTmVBd2NBWGdOZkExd0RCd0JnQTJFRFlnTUhBR0lEWXdOZ0F3Y0FYd05rQTJVREJ3QmxBMXdEWHdNSEFGd0RaUU5tQXdjQVpnTmRBMXdEQndCZUEyY0RaQU1IQUdRRFh3TmVBd2NBWFFObUEyY0RCd0JuQTE0RFhRTUhBR2dEYVFObEF3Y0FaUU5rQTJnREJ3QnBBMm9EWmdNSEFHWURaUU5wQXdjQVp3TnJBMmdEQndCb0EyUURad01IQUdZRGFnTnJBd2NBYXdObkEyWURCd0JvQTJ3RGJRTUhBRzBEYVFOb0F3Y0FZZ050QTJ3REJ3QnNBMk1EWWdNSEFHa0RiUU51QXdjQWJnTnFBMmtEQndCaEEyNERiUU1IQUcwRFlnTmhBd2NBYXdOdkEyd0RCd0JzQTJnRGF3TUhBR01EYkFOdkF3Y0Fid05nQTJNREJ3QnFBMjREYndNSEFHOERhd05xQXdjQVlBTnZBMjREQndCdUEyRURZQU1IQUhBRENBRWZBUWNBSHdGeEEzQURCd0J5QXdrQkNBRUhBQWdCY0FOeUF3Y0Fjd01LQVFrQkJ3QUpBWElEY3dNSEFIUURDd0VLQVFjQUNnRnpBM1FEQndCMUF3d0JDd0VIQUFzQmRBTjFBd2NBZGdNTkFRd0JCd0FNQVhVRGRnTUhBQTRCRFFGMkF3Y0FkZ04zQXc0QkJ3QVBBUTRCZHdNSEFIY0RlQU1QQVFjQUVBRVBBWGdEQndCNEEza0RFQUVIQUJFQkVBRjVBd2NBZVFONkF4RUJCd0FTQVJFQmVnTUhBSG9EZXdNU0FRY0FFd0VTQVhzREJ3QjdBM3dERXdFSEFCUUJFd0Y4QXdjQWZBTjlBeFFCQndBVkFSUUJmUU1IQUgwRGZnTVZBUWNBRmdFVkFYNERCd0IrQTM4REZnRUhBQmNCRmdGL0F3Y0Fmd09BQXhjQkJ3QVlBUmNCZ0FNSEFJQURnUU1ZQVFjQUdRRVlBWUVEQndDQkE0SURHUUVIQUlNREdnRVpBUWNBR1FHQ0E0TURCd0NFQXhzQkdnRUhBQm9CZ3dPRUF3Y0FoUU1jQVJzQkJ3QWJBWVFEaFFNSEFJWURIUUVjQVFjQUhBR0ZBNFlEQndDSEF4NEJIUUVIQUIwQmhnT0hBd2NBY1FNZkFSNEJCd0FlQVljRGNRTUhBSWdEY1FPSEF3Y0Fod09KQTRnREJ3Q0tBM0FEY1FNSEFIRURpQU9LQXdjQWl3TnlBM0FEQndCd0E0b0Rpd01IQUl3RGN3TnlBd2NBY2dPTEE0d0RCd0NOQTNRRGN3TUhBSE1EakFPTkF3Y0FqZ04xQTNRREJ3QjBBNDBEamdNSEFJOERkZ04xQXdjQWRRT09BNDhEQndCM0EzWURqd01IQUk4RGtBTjNBd2NBZUFOM0E1QURCd0NRQTVFRGVBTUhBSGtEZUFPUkF3Y0FrUU9TQTNrREJ3QjZBM2tEa2dNSEFKSURrd042QXdjQWV3TjZBNU1EQndDVEE1UURld01IQUh3RGV3T1VBd2NBbEFPVkEzd0RCd0I5QTN3RGxRTUhBSlVEbGdOOUF3Y0FmZ045QTVZREJ3Q1dBNWNEZmdNSEFIOERmZ09YQXdjQWx3T1lBMzhEQndDQUEzOERtQU1IQUpnRG1RT0FBd2NBZ1FPQUE1a0RCd0NaQTVvRGdRTUhBSUlEZ1FPYUF3Y0FtZ09iQTRJREJ3Q2NBNE1EZ2dNSEFJSURtd09jQXdjQW5RT0VBNE1EQndDREE1d0RuUU1IQUo0RGhRT0VBd2NBaEFPZEE1NERCd0NmQTRZRGhRTUhBSVVEbmdPZkF3Y0FpUU9IQTRZREJ3Q0dBNThEaVFNSEFLQURpQU9KQXdjQWlRT2hBNkFEQndDaUE0b0RpQU1IQUlnRG9BT2lBd2NBb3dPTEE0b0RCd0NLQTZJRG93TUhBS1FEakFPTEF3Y0Fpd09qQTZRREJ3Q2xBNDBEakFNSEFJd0RwQU9sQXdjQXBnT09BNDBEQndDTkE2VURwZ01IQUtjRGp3T09Bd2NBamdPbUE2Y0RCd0NRQTQ4RHB3TUhBS2NEcUFPUUF3Y0FrUU9RQTZnREJ3Q29BNmtEa1FNSEFKSURrUU9wQXdjQXFRT3FBNUlEQndDVEE1SURxZ01IQUtvRHF3T1RBd2NBbEFPVEE2c0RCd0NyQTZ3RGxBTUhBSlVEbEFPc0F3Y0FyQU90QTVVREJ3Q1dBNVVEclFNSEFLMERyZ09XQXdjQWx3T1dBNjREQndDdUE2OERsd01IQUpnRGx3T3ZBd2NBcndPd0E1Z0RCd0NaQTVnRHNBTUhBTEFEc1FPWkF3Y0FtZ09aQTdFREJ3Q3hBN0lEbWdNSEFKc0RtZ095QXdjQXNnT3pBNXNEQndDMEE1d0Rtd01IQUpzRHN3TzBBd2NBdFFPZEE1d0RCd0NjQTdRRHRRTUhBTFlEbmdPZEF3Y0FuUU8xQTdZREJ3QzNBNThEbmdNSEFKNER0Z08zQXdjQW9RT0pBNThEQndDZkE3Y0RvUU1IQUxnRG9BT2hBd2NBb1FPNUE3Z0RCd0M2QTZJRG9BTUhBS0FEdUFPNkF3Y0F1d09qQTZJREJ3Q2lBN29EdXdNSEFMd0RwQU9qQXdjQW93TzdBN3dEQndDOUE2VURwQU1IQUtRRHZBTzlBd2NBdmdPbUE2VURCd0NsQTcwRHZnTUhBTDhEcHdPbUF3Y0FwZ08rQTc4REJ3Q29BNmNEdndNSEFMOER3QU9vQXdjQXFRT29BOEFEQndEQUE4RURxUU1IQUtvRHFRUEJBd2NBd1FQQ0E2b0RCd0NyQTZvRHdnTUhBTUlEd3dPckF3Y0FyQU9yQThNREJ3RERBOFFEckFNSEFLMERyQVBFQXdjQXhBUEZBNjBEQndDdUE2MER4UU1IQU1VRHhnT3VBd2NBcndPdUE4WURCd0RHQThjRHJ3TUhBTEFEcndQSEF3Y0F4d1BJQTdBREJ3Q3hBN0FEeUFNSEFNZ0R5UU94QXdjQXNnT3hBOGtEQndESkE4b0RzZ01IQUxNRHNnUEtBd2NBeWdQTEE3TURCd0RNQTdRRHN3TUhBTE1EeXdQTUF3Y0F6UU8xQTdRREJ3QzBBOHdEelFNSEFNNER0Z08xQXdjQXRRUE5BODREQndEUEE3Y0R0Z01IQUxZRHpnUFBBd2NBdVFPaEE3Y0RCd0MzQTg4RHVRTUhBQWNCdUFPNUF3Y0F1UVB3QUFjQkJ3QUdBYm9EdUFNSEFMZ0RCd0VHQVFjQUJRRzdBN29EQndDNkF3WUJCUUVIQUFRQnZBTzdBd2NBdXdNRkFRUUJCd0FEQWIwRHZBTUhBTHdEQkFFREFRY0FBZ0crQTcwREJ3QzlBd01CQWdFSEFBRUJ2d08rQXdjQXZnTUNBUUVCQndEQUE3OERBUUVIQUFFQkFBSEFBd2NBd1FQQUF3QUJCd0FBQWY4QXdRTUhBTUlEd1FQL0FBY0Evd0QrQU1JREJ3RERBOElEL2dBSEFQNEEvUUREQXdjQXhBUERBLzBBQndEOUFQd0F4QU1IQU1VRHhBUDhBQWNBL0FEN0FNVURCd0RHQThVRCt3QUhBUHNBK2dER0F3Y0F4d1BHQS9vQUJ3RDZBUGtBeHdNSEFNZ0R4d1A1QUFjQStRRDRBTWdEQndESkE4Z0QrQUFIQVBnQTl3REpBd2NBeWdQSkEvY0FCd0QzQVBZQXlnTUhBTXNEeWdQMkFBY0E5Z0QxQU1zREJ3RDBBTXdEeXdNSEFNc0Q5UUQwQUFjQTh3RE5BOHdEQndETUEvUUE4d0FIQVBJQXpnUE5Bd2NBelFQekFQSUFCd0R4QU04RHpnTUhBTTREOGdEeEFBY0E4QUM1QTg4REJ3RFBBL0VBOEFBSEFEQkJUUTRBQUhKaGRqUXRjMmhwWld4a2N3QWNCd0FBQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUVsQVNZQkp3RW9BU2tCS2dFckFTd0JMUUV1QVM4Qk1BRXhBVElCTXdFMEFUVUJOZ0UzQVRnQk9RRTZBVHNCUEFFOUFUNEJQd0ZBQVVFQlFnRkRBVVFCUlFGR0FVY0JTQUZKQVVvQlN3Rk1BVTBCVGdGUEFWQUJVUUZTQVZNQlZBRlZBVllCVndGWUFWa0JXZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQlpnRm5BV2dCYVFGcUFXc0JiQUZ0QVc0QmJ3RndBWEVCY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQmdRR0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVpzQm5BR2RBWjRCbndHZ0FhRUJvZ0dqQWFRQnBRR21BYWNCcUFHcEFhb0Jxd0dzQWEwQnJnR3ZBYkFCc1FHeUFiTUJ0QUcxQWJZQnR3RzRBYmtCdWdHN0Fid0J2UUcrQWI4QndBSEJBY0lCd3dIRUFjVUJ4Z0hIQWNnQnlRSEtBY3NCekFITkFjNEJ6d0hRQWRFQjBnSFRBZFFCMVFIV0FkY0IyQUhaQWRvQjJ3SGNBZDBCM2dIZkFlQUI0UUhpQWVNQjVBSGxBZVlCNXdIb0Fla0I2Z0hyQWV3QjdRSHVBZThCOEFIeEFmSUI4d0gwQWZVQjlnSDNBZmdCK1FINkFmc0IvQUg5QWY0Qi93RUFBZ0VDQWdJREFnUUNCUUlHQWdjQ0NBSUpBZ29DQ3dJTUFnMENEZ0lQQWhBQ0VRSVNBaE1DRkFJVkFoWUNGd0lZQWhrQ0dnSWJBaHdDSFFJZUFoOENJQUloQWlJQ0l3SWtBaVVDSmdJbkFpZ0NLUUlxQWlzQ0xBSXRBaTRDTHdJd0FqRUNNZ0l6QWpRQ05RSTJBamNDT0FJNUFqb0NPd0k4QWowQ1BnSS9Ba0FDUVFKQ0FrTUNSQUpGQWtZQ1J3SklBa2tDU2dKTEFrd0NUUUpPQWs4Q1VBSlJBbElDVXdKVUFsVUNWZ0pYQWxnQ1dRSmFBbHNDWEFKZEFsNENYd0pnQW1FQ1lnSmpBbVFDWlFKbUFtY0NhQUpwQW1vQ2F3SnNBbTBDYmdKdkFuQUNjUUp5QW5NQ2RBSjFBbllDZHdKNEFua0NlZ0o3QW53Q2ZRSitBbjhDZ0FLQkFvSUNnd0tFQW9VQ2hnS0hBb2dDaVFLS0Fvc0NqQUtOQW80Q2p3S1FBcEVDa2dLVEFwUUNsUUtXQXBjQ21BS1pBcG9DbXdLY0FwMENuZ0tmQXFBQ29RS2lBcU1DcEFLbEFxWUNwd0tvQXFrQ3FnS3JBcXdDclFLdUFxOENzQUt4QXJJQ3N3SzBBclVDdGdLM0FyZ0N1UUs2QXJzQ3ZBSzlBcjRDdndMQUFzRUN3Z0xEQXNRQ3hRTEdBc2NDeUFMSkFzb0N5d0xNQXMwQ3pnTFBBdEFDMFFMU0F0TUMxQUxWQXRZQzF3TFlBdGtDMmdMYkF0d0MzUUxlQXQ4QzRBTGhBdUlDNHdMa0F1VUM1Z0xuQXVnQzZRTHFBdXNDN0FMdEF1NEM3d0x3QXZFQzhnTHpBdlFDOVFMMkF2Y0MrQUw1QXZvQyt3TDhBdjBDL2dML0FnQURBUU1DQXdNREJBTUZBd1lEQndNSUF3a0RDZ01MQXd3RERRTU9BdzhERUFNUkF4SURFd01VQXhVREZnTVhBeGdER1FNYUF4c0RIQU1kQXg0REh3TWdBeUVESWdNakF5UURKUU1tQXljREtBTXBBeW9ES3dNc0F5MERMZ012QXpBRE1RTXlBek1ETkFNMUF6WUROd000QXprRE9nTTdBendEUFFNK0F6OERRQU5CQTBJRFF3TkVBMFVEUmdOSEEwZ0RTUU5LQTBzRFRBTk5BMDREVHdOUUExRURVZ05UQTFRRFZRTldBMWNEV0FOWkExb0RXd05jQTEwRFhnTmZBMkFEWVFOaUEyTURaQU5sQTJZRFp3Tm9BMmtEYWdOckEyd0RiUU51QTI4RGNBTnhBM0lEY3dOMEEzVURkZ04zQTNnRGVRTjZBM3NEZkFOOUEzNERmd09BQTRFRGdnT0RBNFFEaFFPR0E0Y0RpQU9KQTRvRGl3T01BNDBEamdPUEE1QURrUU9TQTVNRGxBT1ZBNVlEbHdPWUE1a0RtZ09iQTV3RG5RT2VBNThEb0FPaEE2SURvd09rQTZVRHBnT25BNmdEcVFPcUE2c0RyQU90QTY0RHJ3T3dBN0VEc2dPekE3UUR0UU8yQTdjRHVBTzVBN29EdXdPOEE3MER2Z08vQThBRHdRUENBOE1EeEFQRkE4WUR4d1BJQThrRHlnUExBOHdEelFQT0E4OEQwQVBSQTlJRDB3UFVBOVVEMWdQWEE5Z0QyUVBhQTlzRDNBUGRBOTREM3dQZ0ErRUQ0Z1BqQStRRDVRUG1BK2NENkFQcEErb0Q2d1BzQSswRDdnUHZBL0FEOFFQeUEvTUQ5QVAxQS9ZRDl3UDRBL2tEK2dQN0Evd0QvUVArQS84REFBUUJCQUlFQXdRRUJBVUVCZ1FIQkFnRUNRUUtCQXNFREFRTkJBNEVEd1FRQkJFRUVnUVRCQlFFRlFRV0JCY0VHQVFaQkJvRUd3UWNCQjBFSGdRZkJDQUVJUVFpQkNNRUpBUWxCQ1lFSndRb0JDa0VLZ1FyQkN3RUxRUXVCQzhFTUFReEJESUVNd1EwQkRVRU5nUTNCRGdFT1FRNkJEc0VQQVE5QkQ0RVB3UkFCRUVFUWdSREJFUUVSUVJHQkVjRVNBUkpCRW9FU3dSTUJFMEVUZ1JQQkZBRVVRUlNCRk1FVkFSVkJGWUVWd1JZQkZrRVdnUmJCRndFWFFSZUJGOEVZQVJoQkdJRVl3UmtCR1VFWmdSbkJHZ0VhUVJxQkdzRWJBUnRCRzRFYndSd0JIRUVjZ1J6QkhRRWRRUjJCSGNFZUFSNUJIb0Vld1I4QkgwRWZnUi9CSUFFZ1FTQ0JJTUVoQVNGQklZRWh3U0lCSWtFaWdTTEJJd0VqUVNPQkk4RWtBU1JCSklFa3dTVUJKVUVsZ1NYQkpnRW1RU2FCSnNFbkFTZEJKNEVud1NnQktFRW9nU2pCS1FFcFFTbUJLY0VxQVNwQktvRXF3U3NCSzBFcmdTdkJMQUVzUVN5QkxNRXRBUzFCTFlFdHdTNEJMa0V1Z1M3Qkx3RXZRUytCTDhFd0FUQkJNSUV3d1RFQk1VRXhnVEhCTWdFeVFUS0JNc0V6QVROQk00RXp3VFFCTkVFMGdUVEJOUUUxUVRXQk5jRTJBVFpCTm9FMndUY0JOMEUzZ1RmQk9BRTRRVGlCT01FNUFUbEJPWUU1d1RvQk9rRTZnVHJCT3dFN1FUdUJPOEU4QVR4QlBJRTh3VDBCUFVFOWdUM0JQZ0UrUVQ2QlBzRS9BVDlCUDRFL3dRQUJRRUZBZ1VEQlFRRkJRVUdCUWNGQ0FVSkJRb0ZDd1VNQlEwRkRnVVBCUkFGRVFVU0JSTUZGQVVWQlJZRkZ3VVlCUmtGR2dVYkJSd0ZIUVVlQlI4RklBVWhCU0lGSXdVa0JTVUZKZ1VuQlNnRktRVXFCU3NGTEFVdEJTNEZMd1V3QlRFRk1nVXpCVFFGTlFVMkJUY0ZPQVU1QlRvRk93VThCVDBGUGdVL0JVQUZRUVZDQlVNRlJBVkZCVVlGUndWSUJVa0ZTZ1ZMQlV3RlRRVk9CVThGVUFWUkJWSUZVd1ZVQlZVRlZnVlhCVmdGV1FWYUJWc0ZYQVZkQlY0Rlh3VmdCV0VGWWdWakJXUUZaUVZtQldjRmFBVnBCV29GYXdWc0JXMEZiZ1Z2QlhBRmNRVnlCWE1GZEFWMUJYWUZkd1Y0QlhrRmVnVjdCWHdGZlFWK0JYOEZnQVdCQllJRmd3V0VCWVVGaGdXSEJZZ0ZpUVdLQllzRmpBV05CWTRGandXUUJaRUZrZ1dUQlpRRmxRV1dCWmNGbUFXWkJab0Ztd1djQlowRm5nV2ZCYUFGb1FXaUJhTUZwQVdsQmFZRnB3V29CYWtGcWdXckJhd0ZyUVd1QmE4RnNBV3hCYklGc3dXMEJiVUZ0Z1czQmJnRnVRVzZCYnNGdkFXOUJiNEZ2d1hBQmNFRndnWERCY1FGeFFYR0JjY0Z5QVhKQmNvRnl3WE1CYzBGemdYUEJkQUYwUVhTQmRNRjFBWFZCZFlGMXdYWUJka0YyZ1hiQmR3RjNRWGVCZDhGNEFYaEJlSUY0d1hrQmVVRjVnWG5CZWdGNlFYcUJlc0Y3QVh0QmU0Rjd3WHdCZkVGOGdYekJmUUY5UVgyQmZjRitBWDVCZm9GK3dYOEJmMEYvZ1gvQlFBR0FRWUNCZ01HQkFZRkJnWUdCd1lJQmdrR0NnWUxCZ3dHRFFZT0JnOEdFQVlSQmhJR0V3WVVCaFVHRmdZWEJoZ0dHUVlhQmhzR0hBWWRCaDRHSHdZZ0JpRUdJZ1lqQmlRR0pRWW1CaWNHS0FZcEJpb0dLd1lzQmkwR0xnWXZCakFHTVFZeUJqTUdOQVkxQmpZR053WTRCamtHT2dZN0Jqd0dQUVkrQmo4R1FBWkJCa0lHUXdaRUJrVUdSZ1pIQmtnR1NRWktCa3NHVEFaTkJrNEdUd1pRQmxFR1VnWlRCbFFHVlFaV0JsY0dXQVpaQmxvR1d3WmNCbDBHWGdaZkJtQUdZUVppQm1NR1pBWmxCbVlHWndab0Jta0dhZ1pyQm13R2JRWnVCbThHY0FaeEJuSUdjd1owQm5VR2RnWjNCbmdHZVFaNkJuc0dmQVo5Qm40R2Z3YUFCb0VHZ2dhREJvUUdoUWFHQm9jR2lBYUpCb29HaXdhTUJvMEdqZ2FQQnBBR2tRYVNCcE1HbEFhVkJwWUdsd2FZQnBrR21nYWJCcHdHblFhZUJwOEdvQWFoQnFJR293YWtCcVVHcGdhbkJxZ0dxUWFxQnFzR3JBYXRCcTRHcndhd0JyRUdzZ2F6QnJRR3RRYTJCcmNHdUFhNUJyb0d1d2E4QnIwR3ZnYS9Cc0FHd1FiQ0JzTUd4QWJGQnNZR3h3YklCc2tHeWdiTEJzd0d6UWJPQnM4RzBBYlJCdElHMHdiVUJ0VUcxZ2JYQnRnRzJRYmFCdHNHM0FiZEJ0NEczd2JnQnVFRzRnYmpCdVFHNVFibUJ1Y0c2QWJwQnVvRzZ3YnNCdTBHN2didkJ2QUc4UWJ5QnZNRzlBYjFCdllHOXdiNEJ2a0crZ2I3QnZ3Ry9RYitCdjhHQUFjQkJ3SUhBd2NFQndVSEJnY0hCd2dIQ1FjS0J3c0hEQWNOQnc0SER3Y1FCeEVIRWdjVEJ4UUhGUWNXQnhjSEdBY1pCeG9IR3dkUVFYWWNBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUJBenJnQ0FGUnZlVzkwWVY5U1FUTUFBRUc5dUFJQUVFR2s0UUFBelJMUDkvdEJtaTM5d1RCRms4RjV4Nk5CUVZBRHdvR21WTUY1eDZOQm1pMzl3VEJGazhITGJnZENRVkFEd29HbVZNRjV4Nk5CS2NNTXdzbFVyY0E5S0F4Q0tjTU13c2xVcmNCNXg2TkJJRHdod2dQRTFUODlLQXhDSUR3aHdnUEUxVDk1eDZOQnBQc3d3aDNlYUVBOUtBeENwUHN3d2gzZWFFQjV4Nk5CbTNSRndrVUlnVUE5S0F4Q20zUkZ3a1VJZ1VCNXg2TkJpMlp1d2tkNU5rQTlLQXhDaTJadXdrZDVOa0I1eDZOQjZBS0R3cFBRbUw0OUtBeEM2QUtEd3BQUW1MNTV4Nk5CR0JtS3dwRzdvTUE5S0F4Q0dCbUt3cEc3b01CNXg2TkIrQWlPd2tHT0tNSExiZ2RDK0FpT3drR09LTUY1eDZOQkg1eVB3b1VsZE1HQVNBUkNINXlQd29VbGRNRjV4Nk5CSDV5UHdwUDRqTUdjWHU5Qkg1eVB3cFA0ak1FdG9hQkJINXlQd3BQNGpNRXRvYUJCSDV5UHdvVWxkTUV0b2FCQitBaU93a0dPS01FdG9hQkJHQm1Ld3BHN29NQXRvYUJCNkFLRHdwUFFtTDR0b2FCQmkyWnV3a2Q1TmtBdG9hQkJtM1JGd2tVSWdVQXRvYUJCcFBzd3doM2VhRUF0b2FCQklEd2h3Z1BFMVQ4dG9hQkJLY01Nd3NsVXJjQXRvYUJCUVZBRHdvR21WTUV0b2FCQm1pMzl3VEJGazhFdG9hQkJJbk5jd2k5aWtjRXRvYUJCNDNsY3drRmNqc0V0b2FCQmlCWmN3bk5NaU1FdG9hQkJJZ3hid3NFMGdjRXRvYUJCd0IxWndsQXVkc0V0b2FCQlE5aFZ3bVRqYmNFdG9hQkJaU0JRd2daM2FzRXRvYUJCcFVGTndzZEZhOEV0b2FCQnJ3ZEx3a1FvY01FdG9hQkJ6QlZJd2xFTWdjRXRvYUJCc0t4R3drWVVpOEV0b2FCQnd2UkZ3amVia2NHV1ZKcEJJbk5jd2k5aWtjR1dWSnBCNDNsY3drRmNqc0dXVkpwQmlCWmN3bk5NaU1HV1ZKcEJJZ3hid3NFMGdjR1dWSnBCd0IxWndsQXVkc0dXVkpwQlE5aFZ3bVRqYmNHV1ZKcEJaU0JRd2daM2FzR1dWSnBCcFVGTndzZEZhOEdXVkpwQnJ3ZEx3a1FvY01HV1ZKcEJ6QlZJd2xFTWdjR1dWSnBCc0t4R3drWVVpOEdXVkpwQnd2UkZ3amVia2NFNHEzVkJJbk5jd2k5aWtjRTRxM1ZCNDNsY3drRmNqc0U0cTNWQmlCWmN3bk5NaU1FNHEzVkJJZ3hid3NFMGdjRTRxM1ZCd0IxWndsQXVkc0U0cTNWQlE5aFZ3bVRqYmNFNHEzVkJaU0JRd2daM2FzRTRxM1ZCcFVGTndzZEZhOEU0cTNWQnJ3ZEx3a1FvY01FNHEzVkJ6QlZJd2xFTWdjRTRxM1ZCc0t4R3drWVVpOEU0cTNWQnd2UkZ3amVia2NGNXg2UEJRVkFEd29HbVZNSFA5L3ZCbWkzOXdUQkZrOEY1eDZQQm1pMzl3VEJGazhITGJnZkNRVkFEd29HbVZNRjV4NlBCS2NNTXdzbFVyY0E5S0F6Q0tjTU13c2xVcmNCNXg2UEJJRHdod2dQRTFUODlLQXpDSUR3aHdnUEUxVDk1eDZQQnBQc3d3aDNlYUVBOUtBekNwUHN3d2gzZWFFQjV4NlBCbTNSRndrVUlnVUE5S0F6Q20zUkZ3a1VJZ1VCNXg2UEJpMlp1d2tkNU5rQTlLQXpDaTJadXdrZDVOa0I1eDZQQjZBS0R3cFBRbUw0OUtBekM2QUtEd3BQUW1MNTV4NlBCR0JtS3dwRzdvTUE5S0F6Q0dCbUt3cEc3b01CNXg2UEIrQWlPd2tHT0tNSExiZ2ZDK0FpT3drR09LTUY1eDZQQkg1eVB3b1VsZE1HQVNBVENINXlQd29VbGRNRjV4NlBCSDV5UHdwUDRqTUdjWHUvQkg1eVB3cFA0ak1FdG9hREJINXlQd3BQNGpNRXRvYURCSDV5UHdvVWxkTUV0b2FEQitBaU93a0dPS01FdG9hREJHQm1Ld3BHN29NQXRvYURCNkFLRHdwUFFtTDR0b2FEQmkyWnV3a2Q1TmtBdG9hREJtM1JGd2tVSWdVQXRvYURCcFBzd3doM2VhRUF0b2FEQklEd2h3Z1BFMVQ4dG9hREJLY01Nd3NsVXJjQXRvYURCUVZBRHdvR21WTUV0b2FEQm1pMzl3VEJGazhFdG9hREJJbk5jd2k5aWtjRXRvYURCNDNsY3drRmNqc0V0b2FEQmlCWmN3bk5NaU1FdG9hREJJZ3hid3NFMGdjRXRvYURCd0IxWndsQXVkc0V0b2FEQlE5aFZ3bVRqYmNFdG9hREJaU0JRd2daM2FzRXRvYURCcFVGTndzZEZhOEV0b2FEQnJ3ZEx3a1FvY01FdG9hREJ6QlZJd2xFTWdjRXRvYURCc0t4R3drWVVpOEV0b2FEQnd2UkZ3amVia2NHV1ZKckJJbk5jd2k5aWtjR1dWSnJCNDNsY3drRmNqc0dXVkpyQmlCWmN3bk5NaU1HV1ZKckJJZ3hid3NFMGdjR1dWSnJCd0IxWndsQXVkc0dXVkpyQlE5aFZ3bVRqYmNHV1ZKckJaU0JRd2daM2FzR1dWSnJCcFVGTndzZEZhOEdXVkpyQnJ3ZEx3a1FvY01HV1ZKckJ6QlZJd2xFTWdjR1dWSnJCc0t4R3drWVVpOEdXVkpyQnd2UkZ3amVia2NFNHEzWEJJbk5jd2k5aWtjRTRxM1hCNDNsY3drRmNqc0U0cTNYQmlCWmN3bk5NaU1FNHEzWEJJZ3hid3NFMGdjRTRxM1hCd0IxWndsQXVkc0U0cTNYQlE5aFZ3bVRqYmNFNHEzWEJaU0JRd2daM2FzRTRxM1hCcFVGTndzZEZhOEU0cTNYQnJ3ZEx3a1FvY01FNHEzWEJ6QlZJd2xFTWdjRTRxM1hCc0t4R3drWVVpOEU0cTNYQnd2UkZ3amVia2NIVUg4RkJkU3dWd3JWMlVVRU9sTXRCTUZnTndqdmJjVUhVSDhGQkxMWU93cEMyZFVFT2xNdEJJZGtUd21sMVVVRjFWcE5CRmRJYXdneDdVVUYxVnBOQk1WVVR3bWd4ZmtIL2hENUJxTjhmd3NOOVVVSC9oRDVCYnNvV3d1KytnVUZvRjZWQTNlOGh3dHQrVVVGb0Y2VkFySG9Zd3JUUGdrRUFBQUFBVGg4aXd2UitVVUVBQUFBQWdhRVl3Zy9wZ2tGRFJycEJMejg2d2RBNThVRm5rY05CalQrYXdmR1Exa0ZpeU1KQksyZVp3VUxqemtHZFZybEJVMGM3d2I4MCtVRzhwOE5CbDFlYXdWcHIxMEg4TzdsQnJXUTd3YjRYK2tHNDlxSkJmQTcvd0lkQkFVSzI0S3BCaDdUMHdHd0VCRUxTdTZ0Qm0yN3p3TTlHQUVLY0c2SkJKaW9Bd2FUN0JFSmR5S3BCdjlqMHdOSnVCRUpEQTZKQlFEd0F3YWRsQlVKUS8zaEJVS3NWd1dXYkEwSTRZbmRCRjAwV3dVVWdCMEpTTkhkQkVsOFd3VjZFQjBLN1F4NUJEbm9wd1J6MUJFTFhxeDlCMkJzcXdRdDBDRUxhMHg5QjBDMHF3WHZYQ0VLeVhvZEFrSkF4d2JwOUJVTHBMb3BBV1RJeXdYVDhDRUx2Zm9wQVVrUXl3ZDVmQ1VJQUFBQUFtVW95d2RXSkJVSUFBQUFBWU93eXdSTUpDVUlBQUFBQVhQNHl3WXRzQ1VMRnZNOUJmQWZqd1Jvc3BFSEI4ODVCdWRyaHdXdCtuRUViMDg5QjZDamp3WU1HcFVHTC90VkJLbzRGd2tSTWhFRjlWTlZCZENvQXdwOEplMEZ2RWRaQmVDY0d3aGdOaFVFcVQ5WkJoQ0VMd3VuS2IwRWVwZFZCblpJRXdrekNaVUVRWXRaQkVOd0x3bERvY0VHdG1OWkIwc0FSd3VKd1VVR3RtTlpCRUdBTHdtMGdUVUd0bU5aQlBuWVN3azF6VVVIbEJOVkJXRVlHd2lVSmhVRzIvODVCVDA3andia2VwVUVPbE10Qk5Wd0h3cERsaEVFcWtjZEI1NTdrd1pmNHBVR3k2c0pCN3NLYXdYbUQxMEZVUmJ4QnFPdWR3V1ZTMkVIbWVMaEJ6eE04d1NrditrRXRuYkZCMi8xQndYMEIrMEhuZnJOQnV0am53SVlVQTBKL2g3SkJmVW5wd0lLaEEwTGFZN05CclFEb3dMT0tBMEpJb3JKQjZTSHB3SVFzQTBKYmNyUkJMbkhtd1BIWi9VRk9rN05CdWIzbndCd2Yva0YxVGRWQkZBSU13cHNBY1VHY2Z0VkJ1NWtTd29OelVVRjFNWGhCY1kwZHdmclNCa0tGZHlCQk1Gd3h3UmdtQ0VJcHFhSkJuMm9Id1VXMEJFSStkNnRCdnBvQndXKzlBMEtsSDdOQjVwTDN3Qjc2QWtKMytiTkI4a2Yyd0dya0FrSjZGTFJCSVI3MndMWnVBa0tMQjdWQnRLWDB3THFXL0VIQkRJdEFzWEk1d1h1dUNFSUFBQUFBdWl3NndTaTdDRUlPbE12Qk1GZ053anZiY1VIVUg4SEJkU3dWd3JWMlVVSFVIOEhCTExZT3dwQzJkVUVPbE12Qklka1R3bWwxVVVGMVZwUEJGZElhd2d4N1VVRjFWcFBCTVZVVHdtZ3hma0gvaEQ3QnFOOGZ3c045VVVIL2hEN0Jic29Xd3UrK2dVRm9GNlhBM2U4aHd0dCtVVUZvRjZYQXJIb1l3clRQZ2tGbmtjUEJqVCthd2ZHUTFrRkRScnJCTHo4NndkQTU4VUZpeU1MQksyZVp3VUxqemtHZFZybkJVMGM3d2I4MCtVRzhwOFBCbDFlYXdWcHIxMEg4TzduQnJXUTd3YjRYK2tHMjRLckJoN1Qwd0d3RUJFSzQ5cUxCZkE3L3dJZEJBVUxTdTZ2Qm0yN3p3TTlHQUVLY0c2TEJKaW9Bd2FUN0JFSmR5S3JCdjlqMHdOSnVCRUpEQTZMQlFEd0F3YWRsQlVKUS8zakJVS3NWd1dXYkEwSTRZbmZCRjAwV3dVVWdCMEpTTkhmQkVsOFd3VjZFQjBLN1F4N0JEbm9wd1J6MUJFTFhxeC9CMkJzcXdRdDBDRUxhMHgvQjBDMHF3WHZYQ0VLeVhvZkFrSkF4d2JwOUJVTHBMb3JBV1RJeXdYVDhDRUx2Zm9yQVVrUXl3ZDVmQ1VMRnZNL0JmQWZqd1Jvc3BFSEI4ODdCdWRyaHdXdCtuRUViMDgvQjZDamp3WU1HcFVHTC90WEJLbzRGd2tSTWhFRjlWTlhCZENvQXdwOEplMEZ2RWRiQmVDY0d3aGdOaFVFcVQ5YkJoQ0VMd3VuS2IwRWVwZFhCblpJRXdrekNaVUVRWXRiQkVOd0x3bERvY0VHdG1OYkIwc0FSd3VKd1VVR3RtTmJCRUdBTHdtMGdUVUd0bU5iQlBuWVN3azF6VVVIbEJOWEJXRVlHd2lVSmhVRzIvODdCVDA3andia2VwVUVPbE12Qk5Wd0h3cERsaEVFcWtjZkI1NTdrd1pmNHBVR3k2c0xCN3NLYXdYbUQxMEZVUmJ6QnFPdWR3V1ZTMkVIbWVMakJ6eE04d1NrditrRXRuYkhCMi8xQndYMEIrMEYvaDdMQmZVbnB3SUtoQTBMbmZyUEJ1dGpud0lZVUEwTGFZN1BCclFEb3dMT0tBMEpJb3JMQjZTSHB3SVFzQTBKYmNyVEJMbkhtd1BIWi9VRk9rN1BCdWIzbndCd2Yva0YxVGRYQkZBSU13cHNBY1VHY2Z0WEJ1NWtTd29OelVVRjFNWGpCY1kwZHdmclNCa0tGZHlEQk1Gd3h3UmdtQ0VJcHFhTEJuMm9Id1VXMEJFSStkNnZCdnBvQndXKzlBMEtsSDdQQjVwTDN3Qjc2QWtKMytiUEI4a2Yyd0dya0FrSjZGTFRCSVI3MndMWnVBa0tMQjdYQnRLWDB3THFXL0VIQkRJdkFzWEk1d1h1dUNFS2NmdFhCZkhrYXdyS05Qa0VPbE12QjQ3Z2J3cG1QUGtHdG1OYkIvMVVhd255TlBrR3RtTmJCbEtBWndoR0xQa0gvaEQ3QmFyOG53dk9YUGtGb0Y2WEFuYzhwd2dtWlBrRUFBQUFBRHY4cHdpU1pQa0YxVnBQQjFyRWl3anlWUGtIVUg4SEJOZ3dkd3VTUVBrRU9sTXRCNDdnYndwbVBQa0djZnRWQmZIa2F3cktOUGtHdG1OWkIvMVVhd255TlBrR3RtTlpCbEtBWndoR0xQa0ZvRjZWQW5jOHB3Z21aUGtIL2hENUJhcjhud3ZPWFBrRjFWcE5CMXJFaXdqeVZQa0hVSDhGQk5nd2R3dVNRUGtHY2Z0WEJCcnd2d24zME1VRU9sTXZCYi9zd3dtUDJNVUd0bU5iQmlaZ3Z3a2YwTVVIVUg4SEJ3VTR5d3EvM01VR3RtTmJCSCtNdXd0dnhNVUgvaEQ3QjlRRTl3cjMrTVVGb0Y2WEFLUkkvd3RUL01VRUFBQUFBbWtFL3d1Ny9NVUYxVnBQQll2UTN3Z2I4TVVGb0Y2VkFLUkkvd3RUL01VRU9sTXRCYi9zd3dtUDJNVUdjZnRWQkJyd3Z3bjMwTVVHdG1OWkJpWmd2d2tmME1VSFVIOEZCd1U0eXdxLzNNVUd0bU5aQkgrTXV3dHZ4TVVIL2hENUI5UUU5d3IzK01VRjFWcE5CWXZRM3dnYjhNVUdjZnRYQk5kSTJ3azdhUkVFT2xNdkJuQkU0d2pUY1JFR3RtTmJCdUs0MndoamFSRUhVSDhIQjcyUTV3bi9kUkVHdG1OYkJUZmsxd3F6WFJFRjFWcFBCandvL3d0amhSRUgvaEQ3QkpCaEV3bzdrUkVGb0Y2WEFWaWhHd3FYbFJFRUFBQUFBeVZkR3dyL2xSRUZvRjZWQVZpaEd3cVhsUkVIL2hENUJKQmhFd283a1JFRU9sTXRCbkJFNHdqVGNSRUdjZnRWQk5kSTJ3azdhUkVHdG1OWkJ1SzQyd2hqYVJFSFVIOEZCNzJRNXduL2RSRUd0bU5aQlRmazF3cXpYUkVGMVZwTkJqd28vd3RqaFJFRUFBQUFBbnE1dXdhOXhBa0x5aW8zQUVubFZ3YytKQlVJaUNaREFxQnR1d1NSbEFrSUFBQUFBamlSV3dXeVdCVUlpQ1pCQXFCdHV3U1JsQWtMeWlvMUFFbmxWd2MrSkJVSjlPQ1pCOWJkbndSN2VBVUlCV0NOQllBUk93UnNDQlVMWmk0QkJFUkpZd1dTT0FFS1dwSHhCNThFN3dhK3dBMEpHZnFoQlNaVkd3VGZxL0VHNGs2VkI4bGtud2JDVUFVSTFpcTVCVy80aHdSZWZBRUpHekxWQm9QTWJ3ZGtJQUVLNW1yWkJOa1Fid1Vqdy8wR010YlpCVWlvYndSVUovMEhvcHJkQkJFa2F3VWJvOWtFQldDUEJZQVJPd1JzQ0JVSjlPQ2JCOWJkbndSN2VBVUtXcEh6QjU4RTd3YSt3QTBMWmk0REJFUkpZd1dTT0FFSzRrNlhCOGxrbndiQ1VBVUpHZnFqQlNaVkd3VGZxL0VFMWlxN0JXLzRod1JlZkFFSkd6TFhCb1BNYndka0lBRUs1bXJiQk5rUWJ3VWp3LzBHTXRiYkJVaW9id1JVSi8wSG9wcmZCQkVrYXdVYm85a0d2WE5sQkxwcUdRdGlCMjBGUHlNMUJtSStJUWdPVTlFRTJDYzlCbUkrSVFnT1U5RUhJRzloQkxwcUdRdGlCMjBFRkwrZEI0ZzZDUWd5aXIwRWI3dVZCNGc2Q1FneWlyMEdDWnV0Qld1Ti9RdUVabzBHYkplcEJXdU4vUXVFWm8wR0hmdkpCZmh4ZFFzN3RrRUh6M3UxQnhibHlRc2lEbEVIYUgrOUJ4Ymx5UXNpRGxFR2dQZkZCZmh4ZFFzN3RrRUZQWS9KQkJ2UktRbmxRamtGb0l2RkJ5cFJMUW5sUWprRlBZL0pCeXBSTFFubFFqa0ZvSXZGQkJ2UktRbmxRamtIS25zQkJtSStJUWdPVTlFRkU4c3BCTHBxR1F0aUIyMEdXeE5oQjRnNkNRZ3lpcjBFVy9OeEJXdU4vUXVFWm8wRnZ0ZUJCeGJseVFzaURsRUVjRk9SQmZoeGRRczd0a0VIaitPTkJ5cFJMUW5sUWprSGorT05CQnZSS1FubFFqa0U5a2J4QmR2NkdRckJwL0VFdkhjWkJmY2h4UWgxWEFVTEJ1c2xCZHY2R1FyQnAvRUdSbGJ0QmZjaHhRaDFYQVVLNjNjWkJmY2h4UWgxWEFVS3ErOHBCZHY2R1FyQnAvRUZFU3RsQktSbzhRaENwMjBGNjBNMUJvVU0zUW52YjlFRkpYOWhCS1JvOFFoQ3AyMEYzbjg1Qm9VTTNRbnZiOUVHYlVzTkJqa3czUW52YjlFRnZPYzFCNUNBOFFoQ3AyMEVoTWVwQmNxOUdRc09LcEVGYVdldEJjcTlHUXNPS3BFSFBtOTFCWWJGR1FzT0twRUY5YU8xQm02bElRcDQrbWtFbW5PNUJtNmxJUXA0K21rRjJqdUJCbTZwSVFzNCtta0ViamU1QmM2eEpRaUZvbWtIWVErdEJBWnhIUWdiRXBFSE1TdGxCS3kwOVF1K24yMEhUb3M1QjRZczRRamJaOUVGM2NjTkJpMWswUW5CZ0JVSm1CTVJCRGhzelF2UkJCVUxlS01SQmkxazBRbkJnQlVKNlRjTkJEaHN6UXZSQkJVTGxhYmxCaTFrMFFqeDdCVUttVExsQkRoc3pRaWxlQlVJeXFzdEJBYjZIUXZhcitFRVo2OHhCQWI2SFF2YXIrRUd1Z0w1QkFiNkhRdmFyK0VId3FzTkJDRUF6UXF6aEJFS3lZc1JCQ0VBelFxemhCRUtwdjdsQkxFc3pRcVBnQkVKMHdNUkJSWlkwUXZiQkJFTDVPL0ZCQnd4Y1FpekZrRUhnZlBKQkJ3eGNRaXpGa0VGMEV1UkJCd3hjUWl6RmtFRS9vdTFCb25WWlFqWHduRUcyT09wQlNUUlhRa3VMcDBFWlR0bEIreUJNUXVhZzIwRWFzODVCYmNaR1FqZk85RUYreU1SQjU0QkNRbDl5QkVMOURzUkI1NEJDUWw5eUJFS1k2YmxCNEhkQ1FwcUhCRUtCMmNWQnpPOUNRcHB0QTBKUHlNM0JtSStJUWdPVTlFR3ZYTm5CTHBxR1F0aUIyMEUyQ2MvQm1JK0lRZ09VOUVISUc5akJMcHFHUXRpQjIwRUZMK2ZCNGc2Q1FneWlyMEViN3VYQjRnNkNRZ3lpcjBHQ1p1dkJXdU4vUXVFWm8wR2JKZXJCV3VOL1F1RVpvMEh6M3UzQnhibHlRc2lEbEVHSGZ2TEJmaHhkUXM3dGtFSGFIKy9CeGJseVFzaURsRUdnUGZIQmZoeGRRczd0a0VGb0l2SEJ5cFJMUW5sUWprRlBZL0xCQnZSS1FubFFqa0ZQWS9MQnlwUkxRbmxRamtGb0l2SEJCdlJLUW5sUWprSEtuc0RCbUkrSVFnT1U5RUZFOHNyQkxwcUdRdGlCMjBHV3hOakI0ZzZDUWd5aXIwRVcvTnpCV3VOL1F1RVpvMEZ2dGVEQnhibHlRc2lEbEVFY0ZPVEJmaHhkUXM3dGtFSGorT1BCeXBSTFFubFFqa0hqK09QQkJ2UktRbmxRamtFdkhjYkJmY2h4UWgxWEFVSTlrYnpCZHY2R1FyQnAvRUhCdXNuQmR2NkdRckJwL0VHUmxidkJmY2h4UWgxWEFVSzYzY2JCZmNoeFFoMVhBVUtxKzhyQmR2NkdRckJwL0VGNjBNM0JvVU0zUW52YjlFRkVTdG5CS1JvOFFoQ3AyMEZKWDlqQktSbzhRaENwMjBGM244N0JvVU0zUW52YjlFR2JVc1BCamt3M1FudmI5RUZ2T2MzQjVDQThRaENwMjBFaE1lckJjcTlHUXNPS3BFRmFXZXZCY3E5R1FzT0twRUhQbTkzQlliRkdRc09LcEVGOWFPM0JtNmxJUXA0K21rRW1uTzdCbTZsSVFwNCtta0YyanVEQm02cElRczQrbWtFYmplN0JjNnhKUWlGb21rSFlRK3ZCQVp4SFFnYkVwRUhNU3RuQkt5MDlRdStuMjBIVG9zN0I0WXM0UWpiWjlFRm1CTVRCRGhzelF2UkJCVUozY2NQQmkxazBRbkJnQlVMZUtNVEJpMWswUW5CZ0JVSjZUY1BCRGhzelF2UkJCVUxsYWJuQmkxazBRang3QlVLbVRMbkJEaHN6UWlsZUJVSXlxc3ZCQWI2SFF2YXIrRUVaNjh6QkFiNkhRdmFyK0VHdWdMN0JBYjZIUXZhcitFSHdxc1BCQ0VBelFxemhCRUt5WXNUQkNFQXpRcXpoQkVLcHY3bkJMRXN6UXFQZ0JFSjB3TVRCUlpZMFF2YkJCRUw1Ty9IQkJ3eGNRaXpGa0VIZ2ZQTEJCd3hjUWl6RmtFRjBFdVRCQnd4Y1FpekZrRUUvb3UzQm9uVlpRalh3bkVHMk9PckJTVFJYUWt1THAwRVpUdG5CK3lCTVF1YWcyMEVhczg3QmJjWkdRamZPOUVGK3lNVEI1NEJDUWw5eUJFTDlEc1RCNTRCQ1FsOXlCRUtZNmJuQjRIZENRcHFIQkVLQjJjWEJ6TzlDUXBwdEEwTEt0d0pDWmVSZXdraU9BVUUwYlExQ1hkNXd3cVVtVFVBMGJRMUN4QlJjd3Q1VWgwRG14UUZDYVB0N3dvbUM3RUN0cVFOQ0FqZEV3a3lwQ0VFMGJRMUNwd2hHd2g1emxrQjZFQXRDZnVNSXduNmtrNzAwYlExQ3p5SWZ3bkdaQmtBMGJRMUNCOEFSd2pDVjFyOVVmUWxDWkZZSndnWUZnVUI2RUF0Q0t0UUd3bVJXa2NBMGJRMUNlZm9Ld3FOQW84QjZFQXRDc01rQ3dqUUhHY0dob3d4Q0lVOEZ3Zy8xRzhGVWZRbEN2ZmYrd1gyaVZzRlVmUWxDNGE4Qnd0RE1WOEdVN3Z4QlpiVHB3VURNbE1IaXd3UkM2blgyd1NJL2lNR1U3dnhCbmsvendWallsTUhpd3dSQ0JZVHR3VnBiaU1HYklBZENPaHo4d1NOeWVzRThjUWRDdHduMXdZb2xkTUhpd3dSQ1o3Ym13VmdJaU1HYklBZENacmJtd1JlZWY4R1U3dnhCWjdibXdjbllsTUVYTCsxQlpiVHB3V1pmbHNFWEwrMUJaN2Jtd1FsNGxzRVhMKzFCbmsvendYNXJsc0hCc3doQ25vRmF3aUZmb3o5QjlBeENmZTVzd3VYY3ZUN0Jzd2hDZmU1c3d1WGN2VDVCOUF4Q25vRmF3aUZmb3o4MGJRMUNmZTVzd3VYY3ZUNDBiUTFDbm9GYXdpRmZvei9Cc3doQ3B3aEd3cmVseGo5QjlBeENwd2hHd3JlbHhqODBiUTFDcHdoR3dyZWx4ai9Cc3doQzNha2V3a1lVVU1CQjlBeEN4aHdvd3EyYS9iN0Jzd2hDeGh3b3dxMmEvYjVCOUF4QzNha2V3a1lVVU1BMGJRMUN4aHdvd3EyYS9iNDBiUTFDM2FrZXdrWVVVTURCc3doQ0hNb1d3bkVnMDhCQjlBeENITW9Xd25FZzA4QTBiUTFDSE1vV3duRWcwOEF1NmdkQ2dIMFF3cWxCSXNHdUtneENnSDBRd3FsQklzR2hvd3hDZ0gwUXdxbEJJc0hpd3dSQ0drc0x3cmcvWWNGaUJBbENHa3NMd3JnL1ljRlVmUWxDR2tzTHdyZy9ZY0VwWndKQ0UzSUp3aU55ZXNHcHB3WkNFM0lKd2lOeWVzR2JJQWRDRTNJSndpTnllc0Z4Q2dCQ0s5UUh3aUkvaU1Id1NnUkNLOVFId2lJL2lNSGl3d1JDSzlRSHdpSS9pTUd2ZS9OQkJFRUd3bGpZbE1Hdi9QdEJCRUVHd2xqWWxNR1U3dnhCQkVFR3dsallsTUV5dk9OQkJFRUd3bjVybHNFelBleEJCRUVHd241cmxzRVhMKzFCQkVFR3duNXJsc0UwYlExQ25RQmN3bXFiZ2tBMGJRMUMrYXR3d240VVJFQTBiUTFDcHdoR3dnaHBrVUEwYlExQ1VXVVN3bUNwNEw4MGJRMUN0cFVmd3B1Ui9EODBiUTFDcHBFTHdtNmxwY0Nob3d4Q0s5UUZ3cUsrSE1GVWZRbEMxaW9Dd2lIMVY4R2JJQWRDMGovOXdTTnllc0hpd3dSQ2I3ajN3U0kvaU1HVTd2eEJJNUwwd1ZqWWxNRVhMKzFCSTVMMHdYNXJsc0UwYlExQ1hCNXR3cGhtQVQ4MGJRMUN4SlJhd2haVHRUODBiUTFDcHdoR3dndk0yVDgwYlExQ242OG53dlJvdnI0MGJRMUMxUXdld3JCS1M4QTBiUTFDZkRvV3drbmEwTUNob3d4Q0h2OFB3aXlDSWNGVWZRbENTdFlLd213WlljR2JJQWRDa2VjSXdpTnllc0hpd3dSQytEb0h3aUkvaU1HVTd2eEIwcWNGd2xqWWxNRVhMKzFCMHFjRnduNXJsc0UwYlExQ3V3cC93cjZseGo5Z0FnSkN6d3FDd25wbHpFQzdNQU5DU2NlRndrbTVwRUEwYlExQ0xVVjR3dTlRSWtBMGJRMUNKc0Ird24wR3R6ODBiUTFDcndaNHdnbmdHVUEwYlExQzdIMTV3bC9vUmI4MGJRMUN4cDV6d2xmNHdUdzBiUTFDRXpkNXd1NldZNzgwYlExQ2FHTnp3bGNjMEwxQjlBeENFemQ1d3U2V1k3OUI5QXhDYUdOendsY2MwTDNCc3doQ0V6ZDV3dTZXWTcvQnN3aENhR056d2xjYzBMMnovdmhCTDk5OXdqZzVBa0Y3NHZwQk1FbGZ3ZzN2RVVHY1h1OUI5c0ovd29aZkJVR2NYdTlCOXExZndxazdHRUdpZGZ4Qk9OSkR3a1FpSFVHY1h1OUJiMjFEd2hDSEowR2NYdTlCRnk2R3dwK004VUJ4WGZoQk16eUZ3Z1JBNjBBMGJRMUN2Qll4d3ZOZWpFQndWQWhDYk1NSXdyd2x0MER2U2dSQ3JLZ3J3a08rREVFMGJRMUMzYmNsd2pFb1ZVQkI5QXhDL0trdXdvVG8vejdCc3doQy9La3V3b1RvL3o3QnN3aEMvTFUwd2gxZm96OUI5QXhDL0xVMHdoMWZvejgwYlExQy9La3V3b1RvL3o0MGJRMUMvTFUwd2gxZm96ODBiUTFDZElBbXdnSzdUMEEwYlExQ0dVVXh3djFraDBBMGJRMUNhZmN0d2laSEV6ODBiUTFDOElrMHdpVkl0ajlVZlFsQzNoTUl3Z1lGZ1VCd1ZBaEM1WUFId3J3bHQwRGl3d1JDWFFjRHdsbklFVUdFWi8xQlNWZit3V1ZMSzBIaXd3UkM0a2tFd2xuSUVVR0VaLzFCUHRMN3dXVkxLMEdjWHU5QlFOVDR3UStlUEVHY1h1OUJyd3oxd1ZJL1BVRjZFQXRDcFpFRndtUldrY0I2RUF0QythQUh3b0drazcxNkVBdENLb2NCd2pRSEdjRlVmUWxDcjNMOHdYMmlWc0U4Y1FkQzd5WHp3UVRqY3NHYklBZENacmJtd1lDNWU4R2JJQWRDSlJYbXdSZWVmOEdiSUFkQ0pSWG13WUM1ZThFWEwrMUJKUlhtd1FsNGxzR1U3dnhCSlJYbXdjbllsTUhpd3dSQ0pSWG13VmdJaU1IblJncENLb2NCd2pRSEdjSG5SZ3BDcFpFRndtUldrY0RuUmdwQythQUh3b0drazczQnN3aENyM0w4d1gyaVZzR3Bwd1pDN3lYendRVGpjc0VJVndaQ1pyYm13WUM1ZThFSVZ3WkNKUlhtd1lDNWU4RUlWd1pDSlJYbXdSZWVmOEZQK2dOQ0pSWG13VmdJaU1GdVcvdEJKUlhtd2NuWWxNSHhtK3RCSlJYbXdRbDRsc0h4bSt0Qlo3Ym13UWw0bHNIeG0rdEJaYlRwd1daZmxzSHhtK3RCbmsvendYNXJsc0h4bSt0Qkk1TDB3WDVybHNIeG0rdEIwcWNGd241cmxzRjJ5KzFCcnd6MXdWSS9QVUYyeSsxQlFOVDR3UStlUEVGZTFQdEJQdEw3d1dWTEswRlArZ05DWFFjRHdsbklFVUhCc3doQzNoTUl3Z1lGZ1VEZGlnZEM1WUFId3J3bHQwRGl3d1JDS29jQndqUUhHY0hpd3dSQ3BaRUZ3bVJXa2NEaXd3UkMrYUFId29Ha2s3MjdNQU5DcjNMOHdYMmlWc0c3TUFOQzNoTUl3Z1lGZ1VDa0pBRkM3eVh6d1FUamNzRUQxQUJDWnJibXdZQzVlOEVEMUFCQ0pSWG13WUM1ZThFRDFBQkNKUlhtd1JlZWY4R1U3dnhCSlJYbXdWZ0lpTUZqVmZCQkpSWG13Y25ZbE1IbWxlQkJKUlhtd1FsNGxzSG1sZUJCWjdibXdRbDRsc0htbGVCQlpiVHB3V1pmbHNIbWxlQkJuay96d1g1cmxzSG1sZUJCSTVMMHdYNXJsc0htbGVCQjBxY0Z3bjVybHNGc3hlSkJyd3oxd1ZJL1BVRnN4ZUpCUU5UNHdRK2VQRUZVenZCQlB0TDd3V1ZMSzBHUzd2eEJYUWNEd2xuSUVVSFhCd0pDNVlBSHdyd2x0MEFkWVFGQ3p3cUN3bnBsekVCNWp3SkNTY2VGd2ttNXBFQ05hL2RCendxQ3ducGx6RUJHeVBsQlNjZUZ3a201cEVDN01BTkNvbldPd3JJKzREODBiUTFDVEE2RXd1d0JENzVCOUF4Q04xQjd3bkhOcHIvQnN3aENOMUI3d25ITnByODBiUTFDTjFCN3duSE5wcjgwYlExQ083eUR3am14U3I0MGJRMUNBT3Q3d2pmRW43OTVqd0pDb25XT3dySSs0RDlHeVBsQm9uV093ckkrNEQ4MGJRMUMvVEtFd2hIQVJiNjdNQU5DWDVlT3duU2wyVC9Cc3doQ0JabDd3ckQ4cmI5QjlBeENCWmw3d3JEOHJiODBiUTFDQlpsN3dyRDhyYjgwYlExQzllQ0R3cFRFZ0w0MGJRMUNHRFI4d2t6c3ByOTVqd0pDWDVlT3duU2wyVDlHeVBsQlg1ZU93blNsMlQ4WTJkZEJ2R0FJd2xybGcwSEtCK1JCT29zR3dpb3dnMEhJc05kQm9kTUh3ai9YaEVFWk1PUkJWQmdId2tZK2drRVpldFpCT0lVSXdsMFVoRUhKVWRaQkh2Z0h3a0VHaFVFQjkreEJLeUVBd25UWmRVRlJIKzFCUmE0QXdxejFjMEVRWXRaQng4NEh3bEFwZzBIQU9kWkJyRUVId2pRYmhFSDBYKzVCTlVYN3dSbHNiMEZFaU81QmFsLzh3VktJYlVFZXBkVkJ3OUVCd2c5Q2QwSFBmTlZCcVVRQnd0Y2xlVUZkNGUxQmFsLzh3VktJYlVGbW1PUkJOVVg3d1Jsc2IwRU51ZTFCTlVYN3dSbHNiMEcyd09SQmFsLzh3VktJYlVHdG1OWkJueWNQd2p5RGJrR094dGxCbnljUHdxVUhiVUVaTU9SQmtuSU93b3ZlYTBFUVl0WkI1RVlOd3N1bGIwRWVwZFZCTEZvSXducFpZVUZSSCsxQm8vTUd3alJrWFVHZ2d1NUJNdUlEd3NpdFZVSDVZZVZCTXVJRHdzaXRWVUdIS2U5Qk11SUR3c2l0VlVHSEtlOUIzN2NHd2dOTlJVR2dndTVCMzdjR3dnTk5SVUg1WWVWQjM3Y0d3Z05OUlVHRVovMUJyUzRId2hFaEtrR2NYdTlCVXdJRndoR0ZPa0dDclFSQ2RaSUx3cTdaRUVHdVp1TkJkaE1Gd2tpNk9rRzRiTzVCZGhNRndraTZPa0dFWi8xQlQzb3F3c3orSkVHY1h1OUJ0dkFYd2pqbU5VR2NYdTlCRjk4cXdtQkhNVUdFWi8xQmY5UVl3dTZQSjBFNWZBUkNqNTBid3ZuTERrRXBqQVpDcDRZR3dqZGI3VUFwakFaQ0lVUUZ3amRiN1VDVndnVkNJVVFGd2pkYjdVQ1FQd0JDSVVRRndqZGI3VUNjWHU5QlF5WTN3amhuTEVHUzd2eEJReVkzd29nUUlVRk8rZ05DMXU4M3dzaXpDa0UwYlExQ3NJODd3Z2hwa1VBMGJRMUM0S1k3d2dObmpFQTBiUTFDUzBrOXdoc0t5RDgwYlExQ1VGODl3bkFDdFQ5QjlBeENVRjg5d25BQ3RUL0Jzd2hDVUY4OXduQUN0VCtaTk5aQnNKTVV3dTR6YTBGMHB0SkJMZ2NRd2kyWmEwRjBwdEpCTGdjUXducS9ia0hMVGRsQnhFWVp3aDY4WlVFQW51VkJGOThxd3QwbFFrR1R2K05CUyswb3dzNFFTRUZmVGVWQkMxZ3J3dDBsUWtGYnZlNUJReVkzd2pobkxFR1R2K05Cam80cHdzNFFTRUhMVGRsQlZ4QWF3aDY4WlVHWk5OWkJSRjBWd3U0emEwRXpCZEpCZ0M4UXducS9ia0hVNE81QmIyMUR3aENISjBIVTRPNUI5cTFmd3FrN0dFSFU0TzVCOXNKL3dvWmZCVUhVNE81QjlxMWZ3bHNWRlVIVTRPNUI5c0ovd2pnNUFrSFU0TzVCYjIxRHdzTmdKRUZidmU1QlF5WTN3dXRBS1VGZlRlVkJDMWdyd28vL1BrR1R2K05Cam80cHdvSHFSRUhMVGRsQlZ4QWF3dENWWWtHWk5OWkJSRjBWd3FBTmFFRXpCZEpCZ0M4UXdpMlphMEd0bU5aQm55Y1B3dTljYTBIVTRPNUI5cTFmd2tSNThVRFU0TzVCOXNKL3d2M0F5MERVNE81QmIyMUR3Z2tJQ0VGYnZlNUJReVkzd2pIb0RFRmZUZVZCQzFncnd0YW1Ja0dUditOQmpvNHB3c2VSS0VITFRkbEJXQkFhd2hjOVJrR1pOTlpCUkYwVnd1ZTBTMEV6QmRKQmdDOFF3blJBVDBGMHB0SkJMZ2NRd25SQVQwR3RtTlpCbnljUHdqVUVUMEg0NTZEQms3Z3BRWDJ1RTBMSFFwM0JnUVdYUVF3K0YwS1BKcC9CUHNZcFFXL3ZFMEl3QkovQmdRV1hRUnY5RmtMVTRPNUJHakNHd3BLRzdrRFU0TzVCS2ppR3dwK004VURVNE81QnBmV0V3bEZvMzBDY1h1OUJGeTZHd2xKbTdrQnhYZmhCTXp5RndyY1o2RUNjWHU5QnB2V0V3aEZJMzBCeFhmaEJ3UU9Fd25mNzJFRHh0dGhCbUVnSHdnd2poRUVNZTlkQmIya0h3bHBOaEVFTDB1TkJDQ0VHd2thbWdrRnFaZGRCUGNVR3dzOTVnMEZldTlaQmgyRUJ3clZrZVVHTDNPdEJMbHNBd3NOc2RrRmxJZTFCOFRqOHdmQ2pjRUV5Vk9SQjhUajh3ZkNqY0VFdWkreEI4VGo4d2ZDamNFSEErTjFCSTY0RHdtVUZmMEhUbHQxQlViZ0R3cUFmZjBFZWF1RkJnMUlEd2xFWmZrRWRrTjFCYTRVRHduZWNma0ZBNk9OQllZZ0J3dVo4ZVVGbVc5MUJ0ZGtCd254b2VrSHpUT1JCT2RZQXd0bXhkMEZqSHVSQk9kWUF3dG14ZDBGMWt1RkJPZFlBd3RteGQwRmZBdzFDejFDRXduYjBNcjVmQXcxQzRRS0V3bVhBYTc3dVNRTkNMRENPd3FYZ3p6OWZBdzFDMUF0OXdxWjJuYjlmQXcxQ2dIaDh3cHdzcEw5NmtBeENnSGg4d3B3c3BMOW5oZ2hDZ0hoOHdwd3NwTCs4c0FKQ0xEQ093cVhnenovdG0vcEJMRENPd3FYZ3p6K1grQXBDSHVTRXd0QTJyTDJYK0FwQ2RLcUV3Z2dqQUw1bnhnTkNYektNd29LZW56K1grQXBDeDVxQXdrOTNYYjhLVlFOQ1h6S013b0tlbnorWCtBcENSR1NBd3ZobFo3K1Jvd3BDUkdTQXd2aGxaNzlhcGdkQ1JHU0F3dmhsWjcrQXNmNUJYektNd29LZW56LzQ1NkRCOHVKT1FiREdGMEprWmFIQkVELy9RRU8rRkVLUEpwL0JudkJPUWFFSEdFSnFKcVBCRUQvL1FEeDhGRUl3QkovQmdRV1hRU2VDR1VMSFFwM0JnUVdYUVJiREdVSXJFNS9CZUVaMVFwTmdFa0tTL1ozQmU4bG1RdHEzRTBJbFVwM0JlRVoxUWw2Z0VrS1l2cC9CZThsbVFqWjRFMElWSnAvQk9pWjlRaDVHRVVJUlpaM0JPaVo5UXZpRkVVSVZKcC9CR1JDRFFwc0ZEVUlSWlozQkdSQ0RRbmRGRFVJckU1L0J2V0tBUWlLcENrSVJaWjNCL0FHRVFzcHZDa0lsVXAzQnZXS0FRdTNvQ2tJVkpwL0IvQUdFUXZBdkNrS1l2cC9CT3FkeFFuT1lDMEtTL1ozQk9xZHhRaG5ZQzBKSXc2akJFRC8vUVBPb0UwSm02cVRCeTcyTlFHOVZFa0lBbGFyQm9GNk5RR3R6RVVKL0txckJFRC8vUUNGMEUwS20vNnZCMWthTlFPazZFVUptNnFUQnEyZnZQL3ViRFVJQWxhckJCZXZ0UC9lNURFS20vNnZCMjR2dFAzYUJERUlBbGFyQldKckZQK3cwQ2tKcUpxUEJCVWVqUUw0OURVSm02cVRCK3hiSFAvQVdDMEpJdzZqQkJVZWpRSFJxREVLbS82dkJLenZGUDJ2OENVSi9LcXJCQlVlalFLSTFERUw0NTZEQjdlWWdRV21rRGtJVGhxYkJMYnNnUVpyVURVS1o3YWZCUGJBZ1FhYWdEVUlUaHFiQjA0d3BRYTdlRWtKTG9xVEJnUVdYUVV3dEZrS1o3YWZCNDRFcFFidXFFa0xTQ2FiQmdRV1hRVm41RlVJVGhxYkJNcmRPUWVEMkZrS1o3YWZCUXF4T1FlM0NGa0pMb3FUQmdRV1hRVml5R0VMU0NhYkJnUVdYUVdOK0dFSUpzS1RCZUVaMVFtK1VFVUoxVzZYQmU4bG1Rb3lzRWtKQUY2YkJlRVoxUW1aaEVVS3R3cWJCZThsbVFxSjVFa0x5d3FUQk9pWjlRc2g1RUVJcEtxYkJPaVo5UXJKR0VFTHl3cVRCR1JDRFFrWTVERUlwS3FiQkdSQ0RRakFHREVJSnNLVEJ2V0tBUXYzY0NVTHl3cVRCL0FHRVFwbGpDVUpBRjZiQnZXS0FRdldwQ1VJcEtxYkIvQUdFUW9Rd0NVSjFXNlhCT3FkeFFzdk1Da0t0d3FiQk9xZHhRdUNaQ2tKa1phSEJKMWVyUU0yREQwS1BKcC9CT3NRb1FXeHVFMEprWmFIQk1GdXRRTThFRUVJV0phUEJmczduUDVsaERVSVdKYVBCb043dlA1emlEVUptNnFUQmpGZm5QL2dhRFVJQWxhckI0TnJsUC9VNERFS20vNnZCdG52bFAzUUFERUovS3FyQkoxZXJRS3M1RGtKL0txckJNRnV0UUt5NkRrS1o3YWZCMzM4b1FiZ3BFa0lUaHFiQno0b29RYTFkRWtMNDU2REJqcllvUVh3dEUwSVdKYVBCUVFIT1A4YkVDMEprWmFIQjJPT2tRUHJtRFVJV0phUEI4NDNIUDVCZEMwSmtaYUhCQlVlalFNUi9EVUtQSnAvQkE4TWhRWTlNRDBLUEpwL0JtZlFnUVZybERrTDQ1NkRCVjdVaFFaNExEMElUaHFiQmw0a2hRYzg3RGtLWjdhZkJwMzRoUWR3SERrSi9LcXJCMk9Pa1FOZWNERUttLzZ2QmZxN0xQNkZqQ2tJQWxhckJyQTNNUHlLY0NrSm02cVRCVG9yTlB5VitDMEtZL3FUQlBWVCtRU2ZDR0VLdHdxYkJIU0l6UXNZS0YwTDRaYWJCUFZUK1FiaU9HRUoxVzZYQkhTSXpRckE5RjBJY1laL0JQVlQrUWVXUEdVS1l2cC9CSFNJelFsa0pHRUxsbjUzQlBWVCtRVEhRR1VLUy9aM0JIU0l6UXY1SUdFTDRaYWJCUFZUK1FXVE5GVUt0d3FiQkhTSXpRc2dNRkVLUy9aM0JIU0l6UWdGTEZVTGxuNTNCUFZUK1Fkc09GMEljWVovQlBWVCtRWkRPRmtLWXZwL0JIU0l6UWx3TEZVS1kvcVRCUFZUK1FkSUFGa0oxVzZYQkhTSXpRck0vRkVJbFVwM0JXektBUWc5NkMwS1MvWjNCZUVaeFFvdVJERUlSWlozQm05R0RRdTBBQzBJVkpwL0JtOUdEUWhMQkNrTHl3cVRCbTlHRFFyejBDVUlwS3FiQm05R0RRcWJCQ1VKQUY2YkJXektBUWhjN0NrS3R3cWJCZUVaeFFsTlRDMEoxVzZYQmVFWnhRajJHQzBLWXZwL0JlRVp4UXVkUkRFSVJaWjNCekRhRFFsdlJERUlsVXAzQkdTOS9RbjVLRFVJbFVwM0JzZUYrUXBtK0RVS1MvWjNCMlJCd1F1RFVEMEtTL1ozQmM4TnZRanhwRUVLWXZwL0IyUkJ3UWpxVkQwS1l2cC9CYzhOdlFwY3BFRUoxVzZYQjJSQndRcEhKRGtKMVc2WEJjOE52UXU1ZEQwS3R3cWJCMlJCd1FxZVdEa0t0d3FiQmM4TnZRZ0lyRDBKQUY2YkJHUzkvUW9ZTERFSkFGNmJCc2VGK1FxRi9ERUlwS3FiQnpEYURRaFdTQzBMeXdxVEJ6RGFEUWlyRkMwSVZKcC9CekRhRFFvR1JERUt0d3FaQmM4TnZRZ0lyRDBLdHdxWkI1b0JhUXFpUEUwS3R3cVpCNW9CYVFqN2hFRUt0d3FaQmU4bG1RcUo1RWtLUy9aMUI1b0JhUXVITkZFS1MvWjFCYzhOdlFqeHBFRUtTL1oxQjVvQmFRbmNmRWtLUy9aMUJlOGxtUXRxM0UwS1l2cDlCNW9CYVFqdU9GRUtZdnA5QmU4bG1Ralo0RTBLWXZwOUI1b0JhUXRMZkVVS1l2cDlCYzhOdlFwY3BFRUoxVzZWQjVvQmFRcFBDRTBKMVc2VkJlOGxtUW95c0VrSjFXNlZCNW9CYVFpa1VFVUoxVzZWQmM4TnZRdTVkRDBLdHdxYkI1b0JhUXFpUEUwS3R3cWJCNW9CYVFqN2hFRUtTL1ozQjVvQmFRdUhORkVLUy9aM0I1b0JhUW5jZkVrS1l2cC9CNW9CYVFqdU9GRUtZdnAvQjVvQmFRdExmRVVKMVc2WEI1b0JhUXBQQ0UwSjFXNlhCNW9CYVFpa1VFVUt0d3FaQnIrZE5RdENzRkVLdHdxWkJyK2ROUXU3a0VVS3R3cVpCSFNJelFzZ01GRUt0d3FaQkhTSXpRc1lLRjBLUy9aMUJyK2ROUWlnakUwS1MvWjFCcitkTlFnanJGVUtTL1oxQkhTSXpRdjVJR0VLUy9aMUJIU0l6UWdGTEZVS1l2cDlCcitkTlFtU3JGVUtZdnA5QkhTSXpRbGtKR0VLWXZwOUJyK2ROUW9MakVrS1l2cDlCSFNJelFsd0xGVUoxVzZWQnIrZE5RcnZmRkVKMVc2VkJIU0l6UXJBOUYwSjFXNlZCcitkTlF0a1hFa0oxVzZWQkhTSXpRck0vRkVLdHdxYkJyK2ROUXU3a0VVS3R3cWJCcitkTlF0Q3NGRUtTL1ozQnIrZE5RZ2pyRlVLUy9aM0JyK2ROUWlnakUwS1l2cC9CcitkTlFtU3JGVUtZdnAvQnIrZE5Rb0xqRWtKMVc2WEJyK2ROUXJ2ZkZFSjFXNlhCcitkTlF0a1hFa0w0WmFaQlBWVCtRYmlPR0VMbDZxUkJIa2pvUWNlK0dFSk9VcVpCSGtqb1FUeUxHRUtZL3FSQlBWVCtRU2ZDR0VKSVRaOUJIa2pvUWZhTUdVSWNZWjlCUFZUK1FlV1BHVUlGakoxQkhram9RV1hOR1VMbG41MUJQVlQrUVRIUUdVSk9VcVpCSGtqb1FjWFdGVUw0WmFaQlBWVCtRV1RORlVMbG41MUJQVlQrUWRzT0YwSUZqSjFCSGtqb1FlMFlGMEpJVFo5Qkhram9RWDdZRmtJY1laOUJQVlQrUVpET0ZrTGw2cVJCSGtqb1FWQUtGa0tZL3FSQlBWVCtRZElBRmtKT1VxYkJIa2pvUVR5TEdFTGw2cVRCSGtqb1FjZStHRUpJVFovQkhram9RZmFNR1VJRmpKM0JIa2pvUVdYTkdVSk9VcWJCSGtqb1FjWFdGVUlGakozQkhram9RZTBZRjBKSVRaL0JIa2pvUVg3WUZrTGw2cVRCSGtqb1FWQUtGa0pqMUtSQnNSWFBRZXk2R0VMVU82WkJzUlhQUVQrSEdFTFNDYVpCZ1FXWFFXTitHRUpMb3FSQmdRV1hRVml5R0VLZU5wOUJzUlhQUVp5SkdVSXdCSjlCZ1FXWFFTZUNHVUpQZFoxQnNSWFBRVFRLR1VMSFFwMUJnUVdYUVJiREdVTFVPNlpCc1JYUFFYM2hGVUxTQ2FaQmdRV1hRVm41RlVMSFFwMUJnUVdYUVF3K0YwSlBkWjFCc1JYUFFYQWtGMEtlTnA5QnNSWFBRZG5qRmtJd0JKOUJnUVdYUVJ2OUZrSmoxS1JCc1JYUFFTb1ZGa0pMb3FSQmdRV1hRVXd0RmtMVU82YkJzUlhQUVQrSEdFSmoxS1RCc1JYUFFleTZHRUtlTnAvQnNSWFBRWnlKR1VKUGRaM0JzUlhQUVRUS0dVTFVPNmJCc1JYUFFYM2hGVUpQZFozQnNSWFBRWEFrRjBLZU5wL0JzUlhQUWRuakZrSmoxS1RCc1JYUFFTb1ZGa0pDMVoxQnIrZE5RaWdqRTBKQzFaMUI1b0JhUXVITkZFSkMxWjFCcitkTlFnanJGVUpDMVoxQjVvQmFRbmNmRWtKRzE1cEJyK2ROUXNsekUwTFF5bU5Cc09kTlF0SE9GMExReW1OQnNPZE5RblZKRmtKRzE1cEJzT2ROUXFzN0ZrSkcxNXBCNW9CYVFoaHdFa0xReW1OQjVvQmFRc1JGRlVMUXltTkI1b0JhUXFteEZrSkcxNXBCNW9CYVFvSWVGVUp4YTdKQXNPZE5RdmhoR1VKeGE3SkFzT2ROUXB6Y0YwSnhhN0pBNW9CYVF1cllGa0p4YTdKQTVvQmFRczlFR0VJQUFBQUFzT2ROUXZoaEdVSUFBQUFBc09kTlFwemNGMElBQUFBQTVvQmFRdXJZRmtJQUFBQUE1b0JhUXM5RUdFSmJPSnhCcitkTlFvQVdGa0piT0p4QnIrZE5RcDVPRTBKYk9KeEI1b0JhUWxmNUZFSmJPSnhCNW9CYVF1MUtFa0xnZXAxQnIrZE5Rb3owRlVMZ2VwMUJyK2ROUXF3c0UwTGdlcDFCNW9CYVFtWFhGRUxnZXAxQjVvQmFRdm9vRWtKQzFaM0I1b0JhUXVITkZFSkMxWjNCcitkTlFpZ2pFMEpDMVozQnIrZE5RZ2pyRlVKQzFaM0I1b0JhUW5jZkVrTFF5bVBCc09kTlF0SE9GMEpHMTVyQnIrZE5Rc2x6RTBMUXltUEJzT2ROUW5WSkZrSkcxNXJCc09kTlFxczdGa0pHMTVyQjVvQmFRaGh3RWtMUXltUEI1b0JhUXNSRkZVTFF5bVBCNW9CYVFxbXhGa0pHMTVyQjVvQmFRb0llRlVKeGE3TEFzT2ROUXZoaEdVSnhhN0xBc09kTlFwemNGMEp4YTdMQTVvQmFRdXJZRmtKeGE3TEE1b0JhUXM5RUdFSmJPSnpCcitkTlFvQVdGa0piT0p6QnIrZE5RcDVPRTBKYk9KekI1b0JhUWxmNUZFSmJPSnpCNW9CYVF1MUtFa0xnZXAzQnIrZE5Rb3owRlVMZ2VwM0JyK2ROUXF3c0UwTGdlcDNCNW9CYVFtWFhGRUxnZXAzQjVvQmFRdm9vRWtKQzFaMUJvUWY0UVJUbUdFSkMxWjFCQjUwSVFvVFFGVUpDMVoxQkI1MElRbWFZR0VKQzFaMUJvUWY0UWFrM0ZrTFF5bU5CQjUwSVFpMThHa0pHMTVwQkI1MElRaVVoRmtMUXltTkJCNTBJUXRIMkdFSkcxNXBCQjUwSVFnYnBHRUpHMTVwQm9RZjRRVXFJRmtMUXltTkJvUWY0UWZaZEdVTFF5bU5Cb1FmNFFkdkpHa0pHMTVwQm9RZjRRYlEyR1VKeGE3SkFCNTBJUWxRUEhFSnhhN0pBQjUwSVF2aUpHa0p4YTdKQW9RZjRRUnp4R2tKeGE3SkFvUWY0UVFGZEhFSUFBQUFBQjUwSVFsUVBIRUlBQUFBQUI1MElRdmlKR2tJQUFBQUFvUWY0UVJ6eEdrSUFBQUFBb1FmNFFRRmRIRUpiT0p4QkI1MElRdHpER0VKYk9KeEJCNTBJUXZyN0ZVSmJPSnhCb1FmNFFZb1JHVUpiT0p4Qm9RZjRRUjlqRmtMZ2VwMUJCNTBJUXVpaEdFTGdlcDFCQjUwSVFnamFGVUxnZXAxQm9RZjRRWmJ2R0VMZ2VwMUJvUWY0UVN4QkZrSkMxWjNCQjUwSVFvVFFGVUpDMVozQm9RZjRRUlRtR0VKQzFaM0JCNTBJUW1hWUdFSkMxWjNCb1FmNFFhazNGa0pHMTVyQkI1MElRaVVoRmtMUXltUEJCNTBJUWkxOEdrTFF5bVBCQjUwSVF0SDJHRUpHMTVyQkI1MElRZ2JwR0VKRzE1ckJvUWY0UVVxSUZrTFF5bVBCb1FmNFFmWmRHVUxReW1QQm9RZjRRZHZKR2tKRzE1ckJvUWY0UWJRMkdVSnhhN0xBQjUwSVFsUVBIRUp4YTdMQUI1MElRdmlKR2tKeGE3TEFvUWY0UVJ6eEdrSnhhN0xBb1FmNFFRRmRIRUpiT0p6QkI1MElRdHpER0VKYk9KekJCNTBJUXZyN0ZVSmJPSnpCb1FmNFFZb1JHVUpiT0p6Qm9RZjRRUjlqRmtMZ2VwM0JCNTBJUXVpaEdFTGdlcDNCQjUwSVFnamFGVUxnZXAzQm9RZjRRWmJ2R0VMZ2VwM0JvUWY0UVN4QkZrSmZySFJCcDFhSVFveWtERUpCb0pWQjdMS1FRZ3pSQ1VMZE1IVkI3TEtRUXErSkMwS0dXcFZCcDFhSVFrTDhDa0lYeHBWQjdMS1FRajB1Q1VLL2VIVkI3TEtRUXN2dkNrS0tRSFJCdldLQVFscXlEVUt4TkpWQi9BR0VRaWVlQzBKK1pIUkIvQUdFUXAwOURVTEdJWlZCdldLQVFrb1hERUsyMUhOQk9xZHhRaTZYRGtJenpaVkJPcWR4UW5ZR0RVSk5qM1pCN0xLUVFyS1lDRUtva3BaQnAxYUlRbHE0QlVKdC9YWkJwMWFJUXFlcUIwS3pXSlpCN0xLUVFrMjBCa0tLdFhaQi9BR0VRaUJHQ0VMVGJKWkIvQUdFUXVsY0JrS1lrWFpCdldLQVFoQzhDRUxuV1paQnZXS0FRbUhYQmtMRkpYWkJPcWR4UW9Da0NVSldCWmRCT3FkeFFvWEtCMEorWkhSQks2a3lRcDA5RFVLTG9aVkJLNmt5UXMrY0MwSndFM0pCSzZreVFrTWhFa0pvYVpSQks2a3lRaFhJRUVMR3NITkIxcUx0UVFDN0RrSWRpNVJCMXFMdFFXSXlEVUs2WDNGQjFxTHRRYU9ZRTBMOFVwTkIxcUx0UWZwV0VrSWRpNVJCNTdpUVFXSXlEVUxHc0hOQjU3aVFRUUM3RGtMOFVwTkI1N2lRUWZwV0VrSzZYM0ZCNTdpUVFhT1lFMEpYWnBwQkJVZWpRTVpoQ1VJTmFYVkJCVWVqUU50Q0MwSUZOWmxCQlVlalFDS3VEa0x4SkhOQkJVZWpRRUZGRUVJeWY1MUJBTGxsd0ZGeUNVS0JUM1ZCMzRHYXdCeElDMExFcko1Qk5BTmZ3RmRXQkVKK2pIZEI5eWFYd0Y1MEJrSTg0YUZCMkdNQXdVdWdCVUtiOTNaQlNZVVd3VUMzQjBKREE2SkIvVFgvd0FZVkJVSlNOSGRCemIwVndid3pCMExFRWFOQnVxUDl3RXQ2QUVKUE1ubEJFUFlVd2MvYUFrS3lDQ0pCcDFhSVFsdnVEVUl6bFNGQjdMS1FRbVRWREVLS1ZpRkI3TEtRUW9rOERFS3haaUpCdldLQVFwejZEa0pjUnlKQi9BR0VRbVNHRGtLd3hDSkJPcWR4UXVUZEQwSzFZeUJCN0xLUVFuTHBDVUsyQXlCQnAxYUlRdnY4Q0VKaFFpQkIvQUdFUW11WENVSzFZU0JCdldLQVF0Z01Da0swdnlCQk9xZHhRcnJ6Q2tKY1J5SkJLNmt5UW1PR0RrSlpUQ1JCSzZreVFvZGhFMElHNUNKQjFxTHRRVEVCRUVJQzZTUkIxcUx0UVZIV0ZFSUc1Q0pCNTdpUVFURUJFRUlDNlNSQjU3aVFRVkxXRkVJM1pDRkJaYkY1UUt5Y0RFTHNYU05CWmJGNVFHcVdFVUo3ZWlGQlhSL0N3RU9VREVMOWhoOUJkY1Mrd01ISUIwTEpDQ0JCQ0ZRcXdYNEpDVUxhMHg5Qmpvd3B3ZHFHQ0VKSEZ4NUIwTVFvd1VNMUJFS2Q2STVBcDFhSVFtdDJEa0tnQVk1QTdMS1FRb1ZkRFVKTmhJMUE3TEtRUXJQRURFS2NwSTlBdldLQVFwNkNEMEx6Wlk5QS9BR0VRbW9PRDBLYllKQkFPcWR4UXRobEVFS2pub3RBN0xLUVFyOXhDa0tsM29wQXAxYUlRbGVGQ1VMNlc0dEEvQUdFUXI0ZkNrS2ttb3RBdldLQVFpV1ZDa0tpVm94QU9xZHhRdnA3QzBMeVpZOUFLNmt5UW1vT0QwTHJiNU5BSzZreVFrTHBFMEpGbjVCQTFxTHRRU0dKRUVJOXFaUkExcUx0UWZWZEZVSkZuNUJBNTdpUVFTR0pFRUk5cVpSQTU3aVFRZlZkRlVLb240MUFNS3BaUUVjcURVSVNrNUZBTUtwWlFMWWpFa0l3ekkxQVhFelN3R2NjRFVJMDVZbEFlUEhPd0M5UkNFTEs2SXBBaVdveXdkbVJDVUx2Zm9wQUQ2TXh3VDBQQ1VMSEJZZEFVZHN3d2VlOUJFSUFBQUFBcDFhSVF1cUREa0lBQUFBQTdMS1FRdGhxRFVJQUFBQUE3TEtRUXUvUkRFSUFBQUFBdldLQVFrQ1FEMElBQUFBQS9BR0VRZ0VjRDBJQUFBQUFPcWR4UXA1ekVFSUFBQUFBN0xLUVFxRitDa0lBQUFBQXAxYUlRaFdTQ1VJQUFBQUEvQUdFUXBNc0NrSUFBQUFBdldLQVFnYWlDa0lBQUFBQU9xZHhRdjZJQzBJQUFBQUFLNmt5UWdBY0QwSUFBQUFBSzZreVFwMzNFMElBQUFBQTFxTHRRZk9XRUVJQUFBQUExcUx0UVk5c0ZVSUFBQUFBNTdpUVFmT1dFRUlBQUFBQTU3aVFRWTlzRlVJQUFBQUFlOGxXUUE4NERVSUFBQUFBZk1sV1FFWXlFa0lBQUFBQWNzRFR3TEFwRFVJQUFBQUFpbVhRd01CZENFSUFBQUFBa2lRendacWVDVUlBQUFBQUdsMHl3ZW9iQ1VJQUFBQUFXNVV4d2ZQSkJFS21oSjlCN0xLUVFycklCMElianA5Qld1bVBRczZmQjBMd3M1OUJXdW1QUXV2N0JrTFFYcDlCN0xLUVFqWnNDRUtzZDU5QjNmR0hRdGdBQ0VJV0daOUJwMWFJUXF1WUNVSSs4NTVCL0FHRVFqdzdDa0tnRDU5QnZXS0FRcW5wQ1VMV1VaOUIvQUdFUWppa0NFSlc0SjVCdldLQVFyYTBDa0lOdTU5QnpYQnlRa1BhQ2tMQ2k1OUJPcWR4UXJha0MwSTRVYUJCcDFhSVFqQlBCRUpDRjZCQi9McU9RaXhNQlVMc0lhQkIzZkdIUXEwZEJVSkNGNkJCN0xLUVFpeE1CVUxMeko5Qi9BR0VRaFNRQmtKaUs2QkIvQUdFUW16MEJFSXM2WjlCdldLQVFoczlCa0o0R0tCQnZXS0FRanB2QlVLWmxLQkJPcWR4UW5zd0IwTGt3NkJCT3FkeFFqTmpCa0xQTUo5Qks2a3lRcEFFQzBJWVlKOUJLNmt5UXM4NUNrSkJWNTVCSzZreVFybWlEa0wySjU1Qks2a3lRcVpxRDBJWTY1MUIxcUx0UVRKa0RVS3VTWjVCMXFMdFFUZlJDMExXUUoxQjFxTHRRWGcwRUVLTEVaMUIxcUx0UVdIN0VFS3VTWjVCNTdpUVFUalJDMEpqR3A1QjU3aVFRZldhREVLTEVaMUI1N2lRUVdIN0VFTFdRSjFCNTdpUVFYZzBFRUxuSktSQkJFZWpRQjd0QjBLYzlhTkJpUXFkUUlYQkNFS1Y4NkpCQlVlalFDUS9EVUxnSXFOQkJVZWpRSnR0REVMQ1BhZEJuV1JNd0pZTENFSU5iYWRCbldSTXdQcytCMEpVYTZoQjBhNUZ3RG5xQWtLOERLaEIwYTVGd0Z1SUJFSVd6NnRCNkM3bndObGxBMExUd2F0Qm9rSHl3QVNwQTBJZDhhdEJnNWpsd0t2WkFrTExuNnRCZ2RQendOczBCRUpXMEt4Qk02L3d3UGdTL2tFSm9heEI3bHpxd0dDMi8wRldwcXBCRkNqMXdGaFpCRUpOUktaQit2NU93Snd2Q0VJZytxRkJCVWVqUVA5akRVSVdHSnhCNTdpUVFVb2VFVUlXR0p4QjFxTHRRVW9lRVVLRExwMUJLNmt5UXIrTkQwSlBrcDVCT3FkeFFqM0lDMExoNXAxQnZXS0FRbExZQ2tMSytaMUIvQUdFUXVCZUNrS2hINTVCcDFhSVFtQzhDVUpjWlo1QjdMS1FRZ3VRQ0VJeGk1NUI3TEtRUXFIc0IwTE5IWjlCN0xLUVFsVndCVUxEVjU5QnAxYUlRblJ6QkVMdE1aOUIvQUdFUXA0WUJVSUNINTlCdldLQVFtU1RCVUp2eXA5Qk9xZHhRa2lIQmtLalpwNUJLNmt5UW5SZENrSTRVSjFCMXFMdFFhLzBDMEk0VUoxQjU3aVFRYS8wQzBKeUs2TkJCRWVqUUlrU0NFTGVjYWRCSzBsSXdNZ09BMExmMXF0Qnp3UHl3QWhkL2tGZHlLcEJQSmJ6d0pITkEwSlEvM2hCRGdvVndjUktBMEs0OXFKQitNdjl3T2J3QUVMU3U2dEJGQ3p5d0JwTC8wRkd0YXhCZDlmd3dDSUIvMEZ4ajZ4QkllUHB3Q1FvQUVKVURhQkJPZG1PUW5KM0JVS1pDS0JCN0xLUVFneU1CVUlsRDU5QjdMS1FRaSt3QlVJSlNwWkI3TEtRUXVyekJrSjBjM1pCN0xLUVFzN1VDRUw5ZXlCQjdMS1FRaVlsQ2tJMHo0dEE3TEtRUW5HdENrSUFBQUFBN0xLUVFsdTZDa0s3UXg1QnpkZ293WHVrQkVLeVhvZEFUdTh3d1JrdEJVSUFBQUFBV2FreHdUVTVCVUpCb0pYQjdMS1FRZ3pSQ1VKZnJIVEJwMWFJUW95a0RFTGRNSFhCN0xLUVFxK0pDMEtHV3BYQnAxYUlRa0w4Q2tJWHhwWEI3TEtRUWowdUNVSy9lSFhCN0xLUVFzdnZDa0t4TkpYQi9BR0VRaWVlQzBLS1FIVEJ2V0tBUWxxeURVSitaSFRCL0FHRVFwMDlEVUxHSVpYQnZXS0FRa29YREVLMjFIUEJPcWR4UWk2WERrSXp6WlhCT3FkeFFuWUdEVUtva3BiQnAxYUlRbHE0QlVKTmozYkI3TEtRUXJLWUNFSnQvWGJCcDFhSVFxZXFCMEt6V0piQjdMS1FRazIwQmtLS3RYYkIvQUdFUWlCR0NFTFRiSmJCL0FHRVF1bGNCa0tZa1hiQnZXS0FRaEM4Q0VMbldaYkJ2V0tBUW1IWEJrTEZKWGJCT3FkeFFvQ2tDVUpXQlpmQk9xZHhRb1hLQjBKK1pIVEJLNmt5UXAwOURVS0xvWlhCSzZreVFzK2NDMEp3RTNMQks2a3lRa01oRWtKb2FaVEJLNmt5UWhYSUVFTEdzSFBCMXFMdFFRQzdEa0lkaTVUQjFxTHRRV0l5RFVLNlgzSEIxcUx0UWFPWUUwTDhVcFBCMXFMdFFmcFdFa0lkaTVUQjU3aVFRV0l5RFVMR3NIUEI1N2lRUVFDN0RrTDhVcFBCNTdpUVFmcFdFa0s2WDNIQjU3aVFRYU9ZRTBKWFpwckJCVWVqUU1aaENVSU5hWFhCQlVlalFOdENDMElGTlpuQkJVZWpRQ0t1RGtMeEpIUEJCVWVqUUVGRkVFSXlmNTNCQUxsbHdGRnlDVUtCVDNYQjM0R2F3QnhJQzBMRXJKN0JOQU5md0ZkV0JFSitqSGZCOXlhWHdGNTBCa0k4NGFIQjJHTUF3VXVnQlVLYjkzYkJTWVVXd1VDM0IwSkRBNkxCL1RYL3dBWVZCVUpTTkhmQnpiMFZ3Ynd6QjBMRUVhUEJ1cVA5d0V0NkFFSlBNbm5CRVBZVXdjL2FBa0t5Q0NMQnAxYUlRbHZ1RFVJemxTSEI3TEtRUW1UVkRFS0tWaUhCN0xLUVFvazhERUt4WmlMQnZXS0FRcHo2RGtKY1J5TEIvQUdFUW1TR0RrS3d4Q0xCT3FkeFF1VGREMEsxWXlEQjdMS1FRbkxwQ1VLMkF5REJwMWFJUXZ2OENFSmhRaURCL0FHRVFtdVhDVUsxWVNEQnZXS0FRdGdNQ2tLMHZ5REJPcWR4UXJyekNrSmNSeUxCSzZreVFtT0dEa0paVENUQks2a3lRb2RoRTBJRzVDTEIxcUx0UVRFQkVFSUM2U1RCMXFMdFFWSFdGRUlHNUNMQjU3aVFRVEVCRUVJQzZTVEI1N2lRUVZMV0ZFSTNaQ0hCWmJGNVFLeWNERUxzWFNQQlpiRjVRR3FXRVVKN2VpSEJYUi9Dd0VPVURFTDloaC9CZGNTK3dNSElCMExKQ0NEQkNGUXF3WDRKQ1VMYTB4L0Jqb3dwd2RxR0NFSkhGeDdCME1Rb3dVTTFCRUtkNkk3QXAxYUlRbXQyRGtLZ0FZN0E3TEtRUW9WZERVSk5oSTNBN0xLUVFyUEVERUtjcEkvQXZXS0FRcDZDRDBMelpZL0EvQUdFUW1vT0QwS2JZSkRBT3FkeFF0aGxFRUtqbm92QTdMS1FRcjl4Q2tLbDNvckFwMWFJUWxlRkNVTDZXNHZBL0FHRVFyNGZDa0trbW92QXZXS0FRaVdWQ2tLaVZvekFPcWR4UXZwN0MwTHlaWS9BSzZreVFtb09EMExyYjVQQUs2a3lRa0xwRTBKRm41REExcUx0UVNHSkVFSTlxWlRBMXFMdFFmVmRGVUpGbjVEQTU3aVFRU0dKRUVJOXFaVEE1N2lRUWZWZEZVS29uNDNBTUtwWlFFY3FEVUlTazVIQU1LcFpRTFlqRWtJd3pJM0FYRXpTd0djY0RVSTA1WW5BZVBIT3dDOVJDRUxLNklyQWlXb3l3ZG1SQ1VMdmZvckFENk14d1QwUENVTEhCWWZBVWRzd3dlZTlCRUlianAvQld1bVBRczZmQjBLbWhKL0I3TEtRUXJySUIwTHdzNS9CV3VtUFF1djdCa0xRWHAvQjdMS1FRalpzQ0VLc2Q1L0IzZkdIUXRnQUNFSVdHWi9CcDFhSVFxdVlDVUtnRDUvQnZXS0FRcW5wQ1VJKzg1N0IvQUdFUWp3N0NrTFdVWi9CL0FHRVFqaWtDRUpXNEo3QnZXS0FRcmEwQ2tJTnU1L0J6WEJ5UWtQYUNrTENpNS9CT3FkeFFyYWtDMEpDRjZEQi9McU9RaXhNQlVJNFVhREJwMWFJUWpCUEJFTHNJYURCM2ZHSFFxMGRCVUpDRjZEQjdMS1FRaXhNQlVMTHpKL0IvQUdFUWhTUUJrSmlLNkRCL0FHRVFtejBCRUlzNlovQnZXS0FRaHM5QmtKNEdLREJ2V0tBUWpwdkJVS1psS0RCT3FkeFFuc3dCMExrdzZEQk9xZHhRak5qQmtMUE1KL0JLNmt5UXBBRUMwSVlZSi9CSzZreVFzODVDa0pCVjU3Qks2a3lRcm1pRGtMMko1N0JLNmt5UXFacUQwSVk2NTNCMXFMdFFUSmtEVUt1U1o3QjFxTHRRVGZSQzBMV1FKM0IxcUx0UVhnMEVFS0xFWjNCMXFMdFFXSDdFRUt1U1o3QjU3aVFRVGpSQzBKakdwN0I1N2lRUWZXYURFS0xFWjNCNTdpUVFXSDdFRUxXUUozQjU3aVFRWGcwRUVMbkpLVEJCRWVqUUI3dEIwS2M5YVBCaVFxZFFJWEJDRUtWODZMQkJVZWpRQ1EvRFVMZ0lxUEJCVWVqUUp0dERFTENQYWZCbldSTXdKWUxDRUlOYmFmQm5XUk13UHMrQjBKVWE2akIwYTVGd0RucUFrSzhES2pCMGE1RndGdUlCRUxUd2F2Qm9rSHl3QVNwQTBJV3o2dkI2Qzdud05sbEEwSWQ4YXZCZzVqbHdLdlpBa0xMbjZ2QmdkUHp3TnMwQkVKVzBLekJNNi93d1BnUy9rRUpvYXpCN2x6cXdHQzIvMEZXcHFyQkZDajF3RmhaQkVKTlJLYkIrdjVPd0p3dkNFSWcrcUhCQlVlalFQOWpEVUlXR0p6QjU3aVFRVW9lRVVJV0dKekIxcUx0UVVvZUVVS0RMcDNCSzZreVFyK05EMEpQa3A3Qk9xZHhRajNJQzBMaDVwM0J2V0tBUWxMWUNrTEsrWjNCL0FHRVF1QmVDa0toSDU3QnAxYUlRbUM4Q1VKY1paN0I3TEtRUWd1UUNFSXhpNTdCN0xLUVFxSHNCMExOSFovQjdMS1FRbFZ3QlVMRFY1L0JwMWFJUW5SekJFTHRNWi9CL0FHRVFwNFlCVUlDSDUvQnZXS0FRbVNUQlVKdnlwL0JPcWR4UWtpSEJrS2pacDdCSzZreVFuUmRDa0k0VUozQjFxTHRRYS8wQzBJNFVKM0I1N2lRUWEvMEMwSnlLNlBCQkVlalFJa1NDRUxlY2FmQkswbEl3TWdPQTBMZjFxdkJ6d1B5d0FoZC9rRmR5S3JCUEpiendKSE5BMEpRLzNqQkRnb1Z3Y1JLQTBLNDlxTEIrTXY5d09id0FFTFN1NnZCRkN6eXdCcEwvMEZHdGF6QmQ5Znd3Q0lCLzBGeGo2ekJJZVBwd0NRb0FFSlVEYURCT2RtT1FuSjNCVUtaQ0tEQjdMS1FRZ3lNQlVJbEQ1L0I3TEtRUWkrd0JVSUpTcGJCN0xLUVF1cnpCa0owYzNiQjdMS1FRczdVQ0VMOWV5REI3TEtRUWlZbENrSTB6NHZBN0xLUVFuR3RDa0s3UXg3QnpkZ293WHVrQkVLeVhvZkFUdTh3d1JrdEJVS2JJQWRDUWlQbHdSZWVmOEdiSUFkQ2hNVGx3WUM1ZThHYklBZENoTVRsd1JlZWY4R2JJQWRDUWlQbHdZQzVlOEhpd3dSQ1FpUGx3VmdJaU1IaXd3UkNoTVRsd1ZnSWlNR1U3dnhCUWlQbHdjbllsTUdVN3Z4QmhNVGx3Y25ZbE1FWEwrMUJRaVBsd1FsNGxzRVhMKzFCaE1UbHdRbDRsc0diSUFkQ3NWdmh3UmVlZjhHYklBZENzVnZod1lDNWU4SGl3d1JDc1Z2aHdWZ0lpTUdVN3Z4QnNWdmh3Y25ZbE1FWEwrMUJzVnZod1FsNGxzRVhMKzFCREtFQ1FtOHJrTUdVN3Z4QkRLRUNRakNNanNIaXd3UkNES0VDUXNDN2djR2JJQWRDREtFQ1F0bC9jTUdiSUFkQ0RLRUNRa09iYk1FMGJRMUMvQUNLUWdQbVRFQTBiUTFDdldDTlFpZDlzajgwYlExQ1JTYUtRcWUxVkVBMGJRMUNHZytOUWd2dXFqODBiUTFDWnI5clFtbVp3VUEwYlExQzVmdC9RcWU1dVVBMGJRMUNqOU5yUXQxU3hrQTBiUTFDZjhsL1FwUXd0VUEwYlExQ2NNZFZRcDAwdDBBMGJRMUNjTWRWUXJNK3ZFRGl3d1JDTURJSFFrZFJnY0diSUFkQ1RJQUhRdjFkY01IaXd3UkM3WkFHUWtkUmdjR2JJQWRDR0JJSVF2MWRjTUdVN3Z4Qi9CY0dRc0NManNHVTd2eEJ1SFlGUXNDTGpzRVhMKzFCL0JjR1F1WWVrTUVYTCsxQnVIWUZRdVlla01FMGJRMUMySFdIUXQzVklyODBiUTFDcWxpRlFpcUxsVDQwYlExQ1NpaUhRcUF5TWI4MGJRMUNGM3lGUW5ybzBENDBiUTFDTm1aNVF0SnBLRUEwYlExQ2FVQnFRaWQ1TmtBMGJRMUNWelo1UXNYTEgwQTBiUTFDajFOcVFoNXpQMEEwYlExQ2NNZFZRcHUzRlVBMGJRMUNjTWRWUXNWS0gwQTBiUTFDN1FkR1F0REQxVDgwYlExQzRkdEZRdEtzNkQ4MGJRMUNhVzQzUXR2bVh6NDBiUTFDcUdndVFvV3ZIY0EwYlExQ2tOczNRdEFHd3owMGJRMUNvTXN0UXZMbEdNQTBiUTFDNW9nbVFoRHV1Y0EwYlExQ1Iva2xRdWludDhDaG93eENTendnUW5xb0ZjR2hvd3hDNkwwZlF2em9GTUZVZlFsQzVRa2JRb2VtVk1GVWZRbENGSlVhUWp5QVZNR2JJQWRDVzZZWVF2UFliY0hpd3dSQ21PTVhRa2RSZ2NHYklBZEMzVEFaUXZQWWJjSGl3d1JDWlVvWFFrZFJnY0dVN3Z4QjBQOFZRc0NManNHVTd2eEJuV1lWUXNDTGpzRVhMKzFCMFA4VlF1WWVrTUVYTCsxQm5XWVZRdVlla01FMGJRMUN0VjZHUW5RbWtFQTBiUTFDZHorR1FnTHVpMEEwYlExQ0pOMkNRcDlvc3o4MGJRMUNkcitDUXZKZW96ODBiUTFDV3pJL1FqaVJpejgwYlExQ3gzOCtRcW82bFQ4WGZnZENKSDhJUW1XbGFzRkxlUWRDR09zSFFwdnFhc0VqTWdoQzFBWWFRa0J6WXNHbUtnaENBb0FaUWtpeVlzRndWQWhDaFZaWFFubmJQa0UvWGdsQ0tpQnlRbnNGR1VHU1VRZENLaUJ5UWtjUU9FR1hIZ3BDaFZaWFF2UGVIMEZWZndWQ2hWWlhRak9rYmtITHNmeEJLaUJ5UWdBb2hrSE9xUDlCaFZaWFFodzJoVUVCMWdOQ0tpQnlRdnVIY0VGd0lQRkJLaUJ5UXVBUWtFRlNvL0pCaFZaWFF2d2VqMEhEa2dWQ0tpQnlRdThOV1VISjNBWkNoVlpYUXRhL1ZrSDBPd1JDV3BPU1FtWDRRa0hlcHY5QmtNbWlRb3psUTBHWlBQOUI1SFNlUXNNMldrSHdwZ0ZDZGE2YVF2bHVRMEZKU1FkQ3kzQnlRcFpFT0VFdUxBaEMyTytBUW1KQkdrRUlqd1pDMk8rQVFuaTFPRUY0U3dsQ3kzQnlRcnJZR1VIRGhRVkNTYWVJUWxrbU9VRm5OQWRDU2FlSVFndXFHa0dLMy9kQm1jK0lRZ0FvaGtIUXJnSkMyTytBUXZ1SGNFRUJOd0ZDbWMrSVF2cUhjRUZNbWZwQjJPK0FRZ0FvaGtHMjR1OUIyTytBUXVBUWtFRzRBKzVCbWMrSVF0OFFrRUhsZlFOQ1NhZUlRdFlUV1VGRXZnSkMyTytBUWl5YmIwRXBzQVJDMk8rQVFwYldXRUg0VFFGQ1NhZUlRaXliYjBGcWt3VkN5M0J5UWxXWldFR08zd05DeTNCeVFpMmJiMEVtMHdwQy93T0JRbkw0KzBBWk9RaEMyTytBUWtad0dVRzZaUXRDM1BsdVF1blFBa0ZWQmd4Q3hucC9RdGYvM2tBVlVBeENHNDV0UWpZUzZVRFdQZ3hDK281V1FreisvVUEveHd4QzlUUldRdU5VNEVCdGRnaENQendhUXMrYVg4RlNid2hDTDdnWlFuVFJYOEhSQWdoQ0luRVBRaWtTWk1GVWZRbENHMDBWUXRGdlVjRTBiUTFDV1lRaFFrWGVxTUNob3d4Q0NVNGJRcUY5RThFMGJRMUNnMjRwUWdHdTdiODBiUTFDY1JvMVFxejVjajgwYlExQ3BFYzhRaVh2OXo4MGJRMUNHeXhFUWtHcU8wQTBiUTFDekt0SVFsK1VoMEEwYlExQ01veExRdlFQckVBMGJRMUNZOWRMUWo1OHNVRFdQZ3hDQmlGT1FnSlcrRUEveHd4QzBoaE5RbFJmMkVDWEhncENQaUJRUXFTbEhrRndWQWhDNm1SUlFrUFpQVUhKM0FaQ2NzTlJRcXJOVlVFdGVBVkN2dVZRUW1pTWJVSGxrLzlCVSsxTlFySnBoRUgzaC9KQm13VkxRbmNUamtGVWZRbENLZFFVUWpBZlVjSFJBZ2hDTC9nT1F1aHdZOEdob3d4Q2FQMGFRcUY5RThFMGJRMUM0VWNoUXI2YnA4QTBiUTFDQ3pJcFF1eWo2TDgwYlExQzk5MDBRdmdMZ1Q4MGJRMUNWQjg4UWtGKy96ODBiUTFDeWdORVF0cjJRVUEwYlExQ1p5ZExRdlFQckVBMGJRMUNFbUpJUWpIOWlFQTBiUTFDbW5KTFFqNThzVURXUGd4Q1BMeE5RZ0pXK0VBL3h3eENDTFJNUWxSZjJFQ1hIZ3BDYzd0UFFxU2xIa0Z3VkFoQ0lBQlJRa1BaUFVISjNBWkNxRjVSUXFyTlZVRXRlQVZDODRCUVFtaU1iVUhsay85QmlZaE5RckpwaEVIM2gvSkIwS0JLUW5jVGprRk9TK3RCMFA4VlF1WWVrTUhMQ3Z0QjBQOFZRc0NManNILzBRTkNtT01YUWtkUmdjRzRMZ1pDM1RBWlF2UFliY0ZBUUFkQzFBWWFRa0J6WXNHS2hBZENQendhUXMrYVg4Rndpd2hDNVFrYlFvZW1WTUc4c1F0Q1N6d2dRbnFvRmNGUGV3eEM1b2dtUWhEdXVjQlBld3hDcUdndVFvV3ZIY0JQZXd4Q2tOczNRdEFHd3oxUGV3eENXekkvUWppUml6OVBld3hDN1FkR1F0REQxVDlQZXd4Q2NNZFZRcHUzRlVCUGV3eENhVUJxUWlkNU5rQlBld3hDVnpaNVFzWExIMEJQZXd4Q2RyK0NRdkplb3o5UGV3eENxbGlGUWlxTGxUNVBld3hDU2lpSFFxQXlNYjhvTitGQjBQOFZRdVlla01HbDl2QkIwUDhWUXNDTGpzSFdqLzFCbU9NWFFrZFJnY0dsSkFGQzNUQVpRdlBZYmNFdE5nSkMxQVlhUWtCellzRjNlZ0pDUHp3YVFzK2FYOEZkZ1FOQzVRa2JRb2VtVk1HcHB3WkNTendnUW5xb0ZjRThjUWRDNW9nbVFoRHV1Y0E4Y1FkQ3FHZ3VRb1d2SGNBOGNRZENrTnMzUXRBR3d6MDhjUWRDV3pJL1FqaVJpejg4Y1FkQzdRZEdRdEREMVQ4OGNRZENjTWRWUXB1M0ZVQThjUWRDYVVCcVFpZDVOa0E4Y1FkQ1Z6WjVRc1hMSDBBOGNRZENkcitDUXZKZW96ODhjUWRDcWxpRlFpcUxsVDQ4Y1FkQ1NpaUhRcUF5TWI4NGJBMUNzY09PUXJiM2s3dzBiUTFDUWhHUFFzRDNQRDF4WUExQ2xKdUlRZ0ZHcWI4aVh3MUN5bEdJUXZ3V3NiOCtiUXhDeWxHSVF2d1dzYjhyWXdkQ3lsR0lRdndXc2I4RWJBMUNxdHVPUW1uanc3MDBiUTFDMENpUFFpUkNBcjE0V1ExQzhMZUlRbHE5c3IvRlZ3MUM1RzZJUWloNnVyL2laUXhDNUc2SVFpaDZ1ci9QV3dkQzVHNklRaWg2dXI4MGJRMUM0VWFDUXJ2R3EwQTBiUTFDMDJPQ1F1OG9zRUEwYlExQ2wxMS9RbEZmQ1VBMGJRMUN4eVovUWlZU0FVQlBld3hDeHlaL1FpWVNBVUE4Y1FkQ3h5Wi9RaVlTQVVDZDZRbENXN0dEUXJ1Si9VQkNQQWRDbWMrSVFoTGJHVUhWaEFWQ21jK0lRcWIyT0VGNkRmOUIwMStkUWl3dVdrRmFjZ05DbWMrSVF2R0tXVUhKTVFSQ1hSYVNRa0h4UWtGUUR3ZENqTHVMUXBwMUkwR1VCZ2RDNmVLTFFxOTNJMEg2NUFsQ1RaMkdRdnZZL1VBLzNBbENxOFNHUWlmZC9VQTBiUTFDSVVXQ1FsK2pzRUEwYlExQ1lDaUNRamsvckVBMGJRMUNPQkYvUXFYc0NrQTBiUTFDd3RwK1FuR2JBa0JQZXd4Q3d0cCtRbkdiQWtBOGNRZEN3dHArUW5HYkFrQ2dNL3BCbUVLWlF2cUhjRUhEeFBsQk9pQ2FRdnFIY0VHNDVmRkJIUWFVUWdBb2hrRXlsZkZCTXAyVVFnQW9oa0d4aGVsQjMrYVNRdDhRa0VFcVNlbEIxVzZUUXQ4UWtFSGl3d1JDYW5PaVFyRytJVUI2RUF0Q080eVdRamdXblQ5NkVBdEN5S09XUW04Y2t6L2l3d1JDM2x1aVFwYTdKa0RhdndwQ3FGU1ZRdXpmS1VEaXd3UkM2M1NoUWs4R2ZVQ1M3dnhCaVlHclFrK0tSMENTN3Z4Qi9HbXJRamVIVEVCUVRmeEJUU1NyUXZkb2tVQW9PZkpCeitXdFFuRVpUMEFvT2ZKQnorV3RRbGtXVkVBb09mSkJCb0d0UW9jd2xVQ09hK05CQkFDdlFudWVVVUNPYStOQkJBQ3ZRbU9iVmtDT2ErTkJPcHV1UWcxemxrQ09hK05CbVVxdVFqb0EzVUFldE85QlpUQ3RRdlhiNmtDbGQvbEJYS3VxUW9teUIwR2dJZ1JDYUxPZVFqc0EzVURuUmdwQ3h1T1NRc3BPcEVCQTV3SkNUTjJiUXAzUkpFRzZnZjVCT2g2blFnYnBKRUdWWlFOQ0tCaWRRa1RKQzBIZkZnbEMrQUNRUW9jcTZrQkJuZnhCK2NDb1F2Y1NHVUZvOFFwQzBheUtRdXpkeDBBTzJndENaVFNPUXRuWmlVRFdQZ3hDaWthUlFsOGVDVURXUGd4Q3ZzNlNRdmI5SWovV1BneENUT2FTUWxnS0R6K0ZJT1ZCRkFHVVFucGRsa0dYSSt4Qm1jK0lRbnRkbGtILzQrUkJDb21VUW5wZGxrR1ZBdTVCMk8rQVFudGRsa0ZQUU85QktpQnlRbnRkbGtGYzhmQkI3cjVrUW5NSGtrR3VzdS9CbWFCa1FnQzNra0ZQUU8vQktpQnlRbnRkbGtFejlmREJtYUJrUWdDM2trSEwvZTNCS2lCeVFudGRsa0dYd005QnowS1ZRaU9vMjBIUjBlUkJMSm1KUXVhUHIwR3ZkK0JCU0ErVFF1YVByMEhuNE5aQjV2V0xRaU9vMjBFNXArWkJKUmFFUXVhUHIwSGx2OWhCQmdhSVFpT28yMEVsWWRsQkw1dUdRaU9vMjBGQVJlZEJEQXFDUXVhUHIwR3prdXBCcjB5RFFwejNva0cxcytoQmFqU0pRcHozb2tIbFVlSkJZcHlUUXB6M29rSGZsZFpCa2pxYVF1YVByMEVJYXR4QmVKU1pRcHozb2tFc2d1dEJQTlIvUXAzM29rRUQxczVCZ1dTZ1FxUHVya0d6dnRaQm8vV2RRcHozb2tFYmN0QkJ0TENoUXB6M29rRUFQZEpCbGFLZFFrVS9yMEVramNWQjFWR2FRZ1NvMjBFdEVzaEJIOW1aUWdTbzIwSDQ5Y2xCSkFHWlFpT28yMEc0cjh0QkZDNmhRcVB1cmtHOFdNTkJtSm1hUWdTbzIwSFBTODFCNk1xaVFwejNva0VpWDg1Qjl2MkpRbzdhOUVGa0FNOUJJSk9JUW83YTlFR2ZQY3RCcnRtTlFvN2E5RUVjTDhKQllaT1dRbjVZOUVIT1BRekM1b1ZNUW5iSzBrRFdQZ3pDUEx4TlFnSlcrRUFSM3d6QzVvVk1RbmJLMGtDVW5RdkNQTHhOUWdKVytFQWZmcnhCVGd5WFFnUTA5RUZ3cEw1QjVNeVdRZ2o0OUVHcDZiNUJSZU9XUWtZWTlFSEVRcnhCTXZpV1FnajQ5RUZMMGNKQnZQR1dRaFg1OEVHdWticEJEbUtWUXIrdy9FRWZVcjFCYi9PVVFrKzYvRUdZaWNaQk9CNk1RbEM2L0VGamE3ZEJBM09WUXIrdy9FRWxmcnRCS2dhWFF2N1E5RUVDTUxoQjRHNlZRc2pYL0VGZFRNcEJ6MnFJUWxDNi9FR2c3Y3BCK2YrR1FsQzYvRUVrT2NCQnhPV0ZRdCszQTBKbTJzQkI3bnFFUXQrM0EwS2hGNzFCM0hDSlFxaTdBMEpxZ2JSQkJiK1NRamJkQTBKOUE3TkJBOTJTUXYzZEEwSjFmckJCK2UyU1FuYm5BMExBRzdGQjF1bVNRcXY0QTBMdlFjUkJPcWR4UXQrM0EwSmt5c1pCT0tkeFFuV0RBVUs5Z2RaQmZEeXZRbU9iVmtDOWdkWkJCQUN2UWcxemxrQzlnZFpCem1TdlFtT2JWa0M5Z2RaQnM5ZXVRZzF6bGtDOWdkWkJmRHl2UW51ZVVVQzlnZFpCem1TdlFudWVVVUM5Z2RaQllxK3VRaVgyMTBDOWdkWkJFWWV1UWlYMjEwQzlnZFpCZURxdFFtT2JWa0M5Z2RaQnJ0V3NRZzF6bGtDOWdkWkJlRHF0UW55ZVVVQzlnZFpCRElXc1FpWDIxMEJUek5kQnUxcXZRbU9iVmtCVHpOZEI4UFd1UWcxemxrQlR6TmRCVDZXdVFpaDMyRUJUek5kQi9ueXVRaWgzMkVDT2ErTkJSeUt1UWpvQTNVQlR6TmRCK0hxc1FpaDMyRUNPYStOQlF5Q3NRanNBM1VCVHpOZEJ1MXF2UW51ZVVVQlR6TmRCYVRLdlFudWVVVUNPYStOQnM5ZXVRbnVlVVVCVHpOZEJaVEN0UW55ZVVVQ09hK05CcnRXc1FueWVVVUJZZndaQ3NWdmh3WUM1ZThGWWZ3WkNRaVBsd1lDNWU4Rllmd1pDREtFQ1FrT2JiTUZZZndaQ2hNVGx3WUM1ZThGWWZ3WkNoTVRsd1JlZWY4R2dJZ1JDaE1UbHdWZ0lpTUVQclB0QmhNVGx3Y25ZbE1HUzdPdEJoTVRsd1FsNGxzR1M3T3RCUWlQbHdRbDRsc0dTN090QnNWdmh3UWw0bHNHUzdPdEJES0VDUW04cmtNR1M3T3RCdUhZRlF1WWVrTUdTN090Qi9CY0dRdVlla01HUzdPdEJuV1lWUXVZZWtNRVpxOGxCK2YrR1FsQzYvRUhmdmMxQklKT0lRbzdhOUVHaEh0aEJMNXVHUWlPbzIwRzlBdVpCREFxQ1F1YVByMEduUCtwQlBOUi9RcDMzb2tITC9lMUJLaUJ5UW50ZGxrSFlydTlCN3I1a1FuTUhra0hOWVBGQmhWWlhRdndlajBGeVJmRkJtd1ZMUW5jVGprRnlSZkZCMEtCS1FuY1Rqa0ZnVWY1QmlZaE5RckpwaEVIcjFnUkM4NEJRUW1pTWJVR0hPd1pDcUY1UlFxck5WVUV0c3dkQ0lBQlJRa1BaUFVGVWZRbENjN3RQUXFTbEhrR1VuUXRDUEx4TlFnSlcrRUQ4SlF4Q0NMUk1RbE5mMkVEd3l3eENtbkpMUWo1OHNVRHd5d3hDWnlkTFF2UVByRUR3eXd4Q0VtSklRakg5aUVEd3l3eEN5Z05FUXRyMlFVRHd5d3hDVkI4OFFrRisvei93eXd4Qzk5MDBRdmdMZ1Qvd3l3eENDeklwUXV5ajZML3d5d3hDNFVjaFFyNmJwOEJlQWd4Q2FQMGFRcUY5RThFUzNBaENLZFFVUWpBZlVjR1BZUWRDTC9nT1F1aHdZOEVKMkFaQ0dPc0hRcHZxYXNFOXhQOUJzVnZod1lDNWU4RTl4UDlCUWlQbHdZQzVlOEU5eFA5QkRLRUNRa09iYk1FOXhQOUJoTVRsd1lDNWU4SFBPZ0JDR09zSFFwdnFhc0U5eFA5QmhNVGx3UmVlZjhITEN2dEJoTVRsd1ZnSWlNR2FjZTVCaE1UbHdjbllsTUVlc3Q1QmhNVGx3UWw0bHNFZXN0NUJRaVBsd1FsNGxzRWVzdDVCc1Z2aHdRbDRsc0Vlc3Q1QkRLRUNRbThya01FZXN0NUJ1SFlGUXVZZWtNRWVzdDVCL0JjR1F1WWVrTUVlc3Q1Qm5XWVZRdVlla01Hb2NMeEIrZitHUWxDNi9FRnNnOEJCSUpPSVFvN2E5RUV0NU1wQkw1dUdRaU9vMjBGSnlOaEJEQXFDUXVhUHIwRXpCZDFCUE5SL1FwMzNva0ZYdytCQktpQnlRbnRkbGtGa2RPSkI3cjVrUW5NSGtrRlpKdVJCaFZaWFF2d2VqMEgrQ3VSQm13VkxRbmNUamtIK0N1UkIwS0JLUW5jVGprSHRGdkZCaVloTlFySnBoRUZqYy94Qjg0QlFRbWlNYlVHYlBQOUJxRjVSUXFyTlZVSHpGUUZDSUFCUlFrUFpQVUViNEFKQ2M3dFBRcVNsSGtGYUFBVkNQTHhOUWdKVytFRERpQVZDQ0xSTVFsUmYyRUMzTGdaQ21uSkxRajU4c1VDM0xnWkNaeWRMUXZRUHJFQzNMZ1pDRW1KSVFqSDlpRUMzTGdaQ3lnTkVRdHIyUVVDM0xnWkNWQjg4UWtGKy96KzNMZ1pDOTkwMFF2Z0xnVCszTGdaQ0N6SXBRdXlqNkwrM0xnWkM0VWNoUXI2YnA4QWtaUVZDYVAwYVFxRjlFOEhaUGdKQ0tkUVVRakFmVWNGVnhBQkNML2dPUXVod1k4R3VVdkJCTXAyVVFnQW9oa0dsQnVoQjFXNlRRdDhRa0VFK2d2aEJPaUNhUXZxSGNFRjVvZU5CQ29tVVFucGRsa0VXa3R0Qm9VR2NRditmbDBHUFQ5cEJvVUdjUXYrZmwwRmxJdjVCNUhTZVFzTTJXa0ZaWlA1QmtNbWlRb3psUTBFMlAvMUJPaDZuUWdicEpFRzlXdnRCK2NDb1F2Y1NHVUVoTmZoQlhLdXFRb215QjBHWmNlNUIvLzJzUXZYYjZrRFNaT2xCTXAyVVFnQW9oa0hMR09GQjFXNlRRdDhRa0VGaWxQRkJPaUNhUXZxSGNFR2ZzOXhCQ29tVVFucGRsa0g0YXZaQjVIU2VRc00yV2tHMVlkTkJvVUdjUXYrZmwwRitkdmRCa01taVFvemxRMEZhVWZaQk9oNm5RZ2JwSkVIaWJQUkIrY0NvUXZjU0dVRkdSL0ZCWEt1cVFvbXlCMEdTN3VoQlpiR3JRdlhiNmtEcW50RkI1ZnlpUW9YaW1FSGdHYzlCR2hla1FvWGltRUVzUU5KQjVmeWlRb1hpbUVHZWVNNUJHaGVrUW9YaW1FR05xc3hCNk1xaVFwejNva0YzRHN0QkZDNmhRcVB1cmtHVTg4dEJSS3lpUW9YaW1FRkl6Y2hCZU1halFvWGltRUUyLzhaQlIzcWlRcHozb2tFZ1k4VkJjOTJnUXFQdXJrR24yT1JCRlFHVVFoZWdsMEgrQ3VSQkxncVZRaGVnbDBHTkZ0dEJPbTJjUWx6Q21FSDJFZEpCcmR1aVFxRGttVUdxNjg1QjRmV2pRcURrbVVGb1NzNUI0ZldqUXFEa21VRVRuOGhCUUtXalFxRGttVUdheSt0QnJ0bUlRaGVnbDBHWHF1MUJWQ3lCUWhpZ2wwRis0TzVCK241elFoaWdsMEg1bmUxQituNXpRaGlnbDBHR1krQkIrbjV6UWhpZ2wwRlN0cnRCaWhtWFF2WTg5RUY1dDhKQm1KbWFRZ1NvMjBIWUlydEJBeWFYUXVMdzgwSGozTHBCS2dhWFF2N1E5RUVoeXJaQkEzT1ZRcit3L0VFMDNhOUIrZTJTUXM3cEEwTEUzcmRCalpHVlFpUDY4MEdZdHJkQkEzT1ZRdi9ROUVIVm83TkIzZCtUUXIrdy9FR2pINnhCNzFxUlFwSDNBMExpYXJ4QmNRYVpRZ1NvMjBIT1FyVkJ2V0tBUWhVZ0NVTERscmRCT3FkeFFsVzVDVUxaTWJSQi9BR0VRcHVxQ0VKeE1ySkIrSDZJUW5ZUENFSlcycXhCN0xLUVFwRDJCa0pQaUt0QmFVQ1JRcHJOQkVLZ3BxcEJxbm1SUXEyMUJVSi95YXRCQ2krUlFzZGVCa0syenFwQkczT1JRc2pYQlVMZUM2dEJnbUtSUWpnTUJrTGlDTVpCT0tkeFFuV0RBVUs0Yzd0Qk9LZHhRbldEQVVJcU5xZEI3TEtRUW00WkIwSWN1NlpCcDFhSVFqa3RDVUxaQUtkQjdMS1FRbXdBQ0VMeDRLWkJwMWFJUWlhS0NFSWN1NlpCL0FHRVFqb3RDVUpjZ3FaQnZXS0FRb3RKQ2tKSGxhWkIvQUdFUXZyUENVSXlxS1pCdldLQVF2V21DVUxMTGFkQk9xZHhRcTA1QzBLaFU2ZEJPcWR4UXBHWENrSS84NmRCcDFhSVFqYmlBMEoxeEtkQmJSYVBRcXV1QkVKcXphZEIvQUdFUXFHSEJFSit1cWRCdldLQVFvZ0NCVUxzWmFoQk9xZHhRcVAyQlVMWUpLZEI2dENRUXJaa0IwSUVQYWRCdmQyUVFuTVBCMEpFWHFkQjdMS1FRaUJyQmtKWXU2ZEI4MmFRUXNTOUJFSWV2cWRCbFFDUVFtSEtCRUpKdWFkQjdMS1FRbnpmQkVMUVJLZEI0T0dRUWlQYUJrTFBUS2RCNE9HUVFuVzNCa0lnQXFkQks2a3lRbnJPQ1VMVDc2VkJLNmt5UXNOZ0RrTCt5YVZCSzZreVF0b0FEMEtQTmNOQktxa3lRbFp6QlVMY0o3bEJLcWt5UXErUEJVSm03Y05CS3FreVFsWnpCVUt6WkxWQks2a3lRaDJJRFVLL2ZzRkJLNmt5UXA2cUIwSzE2NlZCMXFMdFFYZG1DMEpvMmFSQjFxTHRRZUh5RDBLVHM2UkIxcUx0UVNpU0VFSWtIOEpCMDZMdFFYMEdCMEp1RWJoQjA2THRRU0l0QjBMNTFzSkIwNkx0UVgwR0IwSlRhTUJCMXFMdFFXOUZDVUpIVHJSQjFxTHRRV1ViRDBLMTY2VkI1N2lRUVhkbUMwSm8yYVJCNTdpUVFlTHlEMEtUczZSQjU3aVFRU2lTRUVKSFRyUkI1N2lRUVdVYkQwSlRhTUJCNTdpUVFXOUZDVUlrSDhKQjVMaVFRWDBHQjBKdUViaEI1TGlRUVNJdEIwTDUxc0pCNUxpUVFYMEdCMEx2eHF0QkJFZWpRQlY4QjBJSnVLcEJCVWVqUVA4MkRFS2JsYXBCQlVlalFLblBERUtKd0xoQkJVZWpRTFZuQzBMMHZjTkJCRWVqUUM3ZUJVS0k4OFZCUmkyalFEdmdBMEtoVE1WQlJpMmpRRHZnQTBMNks3eEJSaTJqUUp2b0EwS2NlOGxCS05rUXdDencva0h6V3NCQktOa1F3Q3p3L2tHRElzcEJLTmtRd0N6dy9rRi84OGRCaTB3YndMaGRBVUwyQnIxQlZDdzJ3TkpPQmtKWUFLOUJ1eWc1d0lNUkIwTEkzNjVCSmlVOHdIV2VCMEpiRGJCQlZDdzJ3SjU3QWtKMjA4UkJHNi9Sd0JqTjkwRk5rdE5CUTBrcndTTVA3RUdtY2NwQlEwa3J3U01QN0VFZDlNMUJHNi9Sd0JqTjkwRTBPZFJCUTBrcndTTVA3RUVGbTg1Qkc2L1J3QmpOOTBIRkU5SkJlRXd2d2IrSTcwRmNac3hCVlNUWHdNQ0YrMEhmUDhkQjdaMDV3VkY0K0VIM2E4RkJyaTdsd0RtTUFrTGFZN05CS2I3bXdCSTZBMElySHJsQjZPZzd3YWgwK2tIVFFiTkJyazNvd0JIR0EwTDhPN2xCYThNNndYdDIrVUZiY3JSQnF5N2x3Szg0L1VGRFJycEI3WjA1d1k2WThFRml5TUpCaWhhWndRQkN6a0c4cDhOQjlnYWF3UmZLMWtIenVNTkJZZmVhd1hGeTEwR1hmTkZCalJhWndjTWgxa0UxcWRwQnlxS1F3YTgyMEVFSUt0eEJXRm1Od1h2cHpVRWdnOXRCV0ZtTndYdnB6VUY0WXRKQldGbU53WHZwelVIQjg4NUJGb3Jod1NqZG0wRWIwODlCUmRqaXdVQmxwRUZSNU05QmNTYmt3Wm9OcFVIMnA5MUJHSXJod2V5OG8wR1UxT1pCZXNyVndkalJuVUZwVmVoQjNUalJ3YVNFbTBHQXJ1ZEIzVGpSd2FTRW0wSFpqZDVCM1RqUndhU0VtMEY5Vk5WQlo2TUF3cDhKZTBGdkVkWkJhcUFHd2hnTmhVRjRLZFpCM0ZZSHdpWDRoVUY0MytOQjkra0Z3ZzRpaEVHd3p1eEIwUC8rd1R5OWQwR2pOKzVCcmdMNndlRlBjVUc4a08xQnJnTDZ3ZUZQY1VFVmNPUkJyZ0w2d2VGUGNVRkFjd1JDYW5PaVFyRytJVUJRVGZ4QmlZR3JRaytLUjBEYXZ3cEN5S09XUW04Y2t6L25sL0ZCZjcydFFuRVpUMEExN2d0Q1RPYVNRbGdLRHorU0hBMUMwQ2lQUWlSQ0FyMWpHdzFDcXR1T1Ftbmp3NzNYQ0ExQzhMZUlRbHE5c3I4OXhQOUJhbk9pUXJHK0lVQXp2dlJCSzFPcVFrK0tSMEM0TGdaQ3lLT1dRbThja3ovdm0rdEJJWStzUW5FWlQwQVVYUWRDVE9hU1FsZ0tEejl3aXdoQzBDaVBRaVJDQXIxQmlnaENxdHVPUW1uanc3MjFkd2hDOExlSVFscTlzcitabHFkQjdMS1FRdWZsQjBMbUFLaEJwMWFJUWx3UUNVTGVBYWhCL0FHRVFxQ3lDVUlBL0tkQnZXS0FRZ2tzQ2tMazBhaEJPcWR4UW80VEMwSjRXYWRCSzZreVFuZmJEa0lLUTZaQjFxTHRRZmxzRUVJS1E2WkI1N2lRUWZsc0VFSk1BS3hCQlVlalFPcXJERUlhU3JCQlJZdzd3Q0I5QjBKeHJMUkJ4djNud015a0EwTHVoN3BCTnE0N3dkUkIra0ZPR2NWQlNzZWF3Y1ZRMTBHdlJORkJtK1Bqd2UvcnBFRjRpTmRCWGpJSHdpTEpoVUd6bTZkQlZOcVFRcEpLQjBKcW42ZEJaZkNRUWxuQUJrS0NucWRCQSt1UVFwUDFCa0tZb3FkQkR2R1FRcm1kQmtMS0dxaEJFc0dRUXJYZEJFTElzTmRCS0pjSHd1QW5oVUhLQitSQndFNEd3c3VBZzBISlVkWkJwcnNId3VKV2hVRU51ZTFCUTh6NndWd05jRUZtbU9SQlE4ejZ3VndOY0VIMFgrNUJROHo2d1Z3TmNFRUI5K3hCWThuL3diVjZka0hBT2RaQk13VUh3dFpyaEVIUGZOVkJNUWdCd2hySGVVRmhnOWRCaW40R3dpekRnMEhHbU5kQjZpQUh3bDJVaEVFNDI5WkJKeW9Cd3Y0ZGVrRXAwZGhCY0FBSHdvWnFoRUdzek9OQko5d0Z3dnp4Z2tGTndPdEJ1aVlBd253dWQwR0xBZTFCenR6N3dTQjJjVUgvYk94Qnp0ejd3U0IyY1VGaFRlUkJ6dHo3d1NCMmNVR2JzOTVCdm80RHdvNFZnRUUrdXQ1QkZNRUR3bWhXZ0VGNmY5NUJ5T2NCd2hVRGZFRVVHOTlCQTdjRHduQkpnRUduZ3VKQloxd0R3bXVwZjBHeCtlUkJYWmNCd2g0YWUwRkhYZVZCTHVjQXdpcFVlVUU4TCtWQkx1Y0F3aXBVZVVHTnF1SkJMdWNBd2lwVWVVR2JJQWZDaE1UbHdZQzVlOEdiSUFmQ1FpUGx3UmVlZjhHYklBZkNoTVRsd1JlZWY4R2JJQWZDUWlQbHdZQzVlOEhpd3dUQ1FpUGx3VmdJaU1IaXd3VENoTVRsd1ZnSWlNR1U3dnpCUWlQbHdjbllsTUdVN3Z6QmhNVGx3Y25ZbE1FWEwrM0JRaVBsd1FsNGxzRVhMKzNCaE1UbHdRbDRsc0diSUFmQ3NWdmh3UmVlZjhHYklBZkNzVnZod1lDNWU4SGl3d1RDc1Z2aHdWZ0lpTUdVN3Z6QnNWdmh3Y25ZbE1FWEwrM0JzVnZod1FsNGxzRVhMKzNCREtFQ1FtOHJrTUdVN3Z6QkRLRUNRakNNanNIaXd3VENES0VDUXNDN2djR2JJQWZDREtFQ1F0bC9jTUdiSUFmQ0RLRUNRa09iYk1FMGJRM0N2V0NOUWlkOXNqODBiUTNDL0FDS1FnUG1URUEwYlEzQ1JTYUtRcWUxVkVBMGJRM0NHZytOUWd2dXFqODBiUTNDNWZ0L1FxZTV1VUEwYlEzQ1pyOXJRbW1ad1VBMGJRM0NqOU5yUXQxU3hrQTBiUTNDZjhsL1FwUXd0VUEwYlEzQ2NNZFZRcDAwdDBBMGJRM0NjTWRWUXJNK3ZFQ2JJQWZDVElBSFF2MWRjTUhpd3dUQ01ESUhRa2RSZ2NIaXd3VEM3WkFHUWtkUmdjR2JJQWZDR0JJSVF2MWRjTUdVN3Z6Qi9CY0dRc0NManNHVTd2ekJ1SFlGUXNDTGpzRVhMKzNCL0JjR1F1WWVrTUVYTCszQnVIWUZRdVlla01FMGJRM0NxbGlGUWlxTGxUNDBiUTNDMkhXSFF0M1ZJcjgwYlEzQ1NpaUhRcUF5TWI4MGJRM0NGM3lGUW5ybzBENDBiUTNDYVVCcVFpZDVOa0EwYlEzQ05tWjVRdEpwS0VBMGJRM0NWelo1UXNYTEgwQTBiUTNDajFOcVFoNXpQMEEwYlEzQ2NNZFZRcHUzRlVBMGJRM0NjTWRWUXNWS0gwQTBiUTNDN1FkR1F0REQxVDgwYlEzQzRkdEZRdEtzNkQ4MGJRM0NxR2d1UW9XdkhjQTBiUTNDYVc0M1F0dm1YejQwYlEzQ2tOczNRdEFHd3owMGJRM0NvTXN0UXZMbEdNQTBiUTNDNW9nbVFoRHV1Y0EwYlEzQ1Iva2xRdWludDhDaG93ekNTendnUW5xb0ZjR2hvd3pDNkwwZlF2em9GTUZVZlFuQzVRa2JRb2VtVk1GVWZRbkNGSlVhUWp5QVZNSGl3d1RDbU9NWFFrZFJnY0diSUFmQ1c2WVlRdlBZYmNHYklBZkMzVEFaUXZQWWJjSGl3d1RDWlVvWFFrZFJnY0dVN3Z6QjBQOFZRc0NManNHVTd2ekJuV1lWUXNDTGpzRVhMKzNCMFA4VlF1WWVrTUVYTCszQm5XWVZRdVlla01FMGJRM0N0VjZHUW5RbWtFQTBiUTNDZHorR1FnTHVpMEEwYlEzQ0pOMkNRcDlvc3o4MGJRM0NkcitDUXZKZW96ODBiUTNDV3pJL1FqaVJpejgwYlEzQ3gzOCtRcW82bFQ4WGZnZkNKSDhJUW1XbGFzRkxlUWZDR09zSFFwdnFhc0VqTWdqQzFBWWFRa0J6WXNHbUtnakNBb0FaUWtpeVlzRS9YZ25DS2lCeVFuc0ZHVUZ3VkFqQ2hWWlhRbm5iUGtHU1VRZkNLaUJ5UWtjUU9FR1hIZ3JDaFZaWFF2UGVIMEhMc2Z6QktpQnlRZ0FvaGtGVmZ3WENoVlpYUWpPa2JrSE9xUC9CaFZaWFFodzJoVUVCMWdQQ0tpQnlRdnVIY0VGd0lQSEJLaUJ5UXVBUWtFRlNvL0xCaFZaWFF2d2VqMEhEa2dYQ0tpQnlRdThOV1VISjNBYkNoVlpYUXRhL1ZrSGVwdi9Ca01taVFvemxRMEgwT3dUQ1dwT1NRbVg0UWtHWlBQL0I1SFNlUXNNMldrRysxQUhDeE5tYVFqc09QMEVaT1FqQzJPK0FRa1p3R1VHRWt3YkMyTytBUW5hRE9FSFZoQVhDbWMrSVFxYjJPRUZDUEFmQ21jK0lRaExiR1VIUXJnTEMyTytBUXZ1SGNFR0szL2ZCbWMrSVFnQW9oa0VCTndIQ21jK0lRdnFIY0VGTW1mckIyTytBUWdBb2hrRzI0dS9CMk8rQVF1QVFrRUc0QSs3Qm1jK0lRdDhRa0VGYWNnUENtYytJUXZHS1dVSGZxZ1RDMk8rQVFuQk1XVUVtMHdyQy93T0JRbkw0KzBDNlpRdkMzUGx1UXVuUUFrSEJPUXpDL2xWL1FpVEoyVUFDZVF6Q2xrNXRRbklWNUVEV1BnekMrbzVXUWt6Ky9VQVIzd3pDUENWV1F1b20yMEJ0ZGdqQ1B6d2FRcythWDhGU2J3akNMN2daUW5UUlg4SFJBZ2pDSW5FUFFpa1NaTUZVZlFuQ0cwMFZRdEZ2VWNFMGJRM0NXWVFoUWtYZXFNQ2hvd3pDQ1U0YlFxRjlFOEUwYlEzQ2cyNHBRZ0d1N2I4MGJRM0NjUm8xUXF6NWNqODBiUTNDcEVjOFFpWHY5ejgwYlEzQ0d5eEVRa0dxTzBBMGJRM0N0RFpJUXNKcGhFQTBiUTNDTW94TFF2UVByRUEwYlEzQ1k5ZExRajU4c1VBUjN3ekNyK3BNUW5YSzBrQ1hIZ3JDUGlCUVFxU2xIa0hXUGd6Q0JpRk9RZ0pXK0VCd1ZBakM2bVJSUWtQWlBVSEozQWJDY3NOUlFxck5WVUV0ZUFYQ3Z1VlFRbWlNYlVIbGsvL0JVKzFOUXJKcGhFSDNoL0xCbXdWTFFuY1Rqa0ZVZlFuQ0tkUVVRakFmVWNIUkFnakNML2dPUXVod1k4R2hvd3pDYVAwYVFxRjlFOEUwYlEzQzRVY2hRcjZicDhBMGJRM0NDeklwUXV5ajZMODBiUTNDOTkwMFF2Z0xnVDgwYlEzQ1ZCODhRa0YrL3o4MGJRM0N5Z05FUXRyMlFVQTBiUTNDa1BCSFFta0Noa0EwYlEzQ21uSkxRajU4c1VBMGJRM0NaeWRMUXZRUHJFQ1hIZ3JDYzd0UFFxU2xIa0Z3VkFqQ0lBQlJRa1BaUFVISjNBYkNxRjVSUXFyTlZVRXRlQVhDODRCUVFtaU1iVUhsay8vQmlZaE5RckpwaEVIM2gvTEIwS0JLUW5jVGprRzNMZ2JDa1BCSFFta0Noa0R3eXd6Q1p5ZExRdlFQckVEd3l3ekNrUEJIUW1rQ2hrQzNMZ2JDWnlkTFF2UVByRUJPUyt2QjBQOFZRdVlla01ITEN2dkIwUDhWUXNDTGpzSC8wUVBDbU9NWFFrZFJnY0c0TGdiQzNUQVpRdlBZYmNGQVFBZkMxQVlhUWtCellzR0toQWZDUHp3YVFzK2FYOEZ3aXdqQzVRa2JRb2VtVk1HOHNRdkNTendnUW5xb0ZjRlBld3pDNW9nbVFoRHV1Y0JQZXd6Q3FHZ3VRb1d2SGNCUGV3ekNrTnMzUXRBR3d6MVBld3pDV3pJL1FqaVJpejlQZXd6QzdRZEdRdEREMVQ5UGV3ekNjTWRWUXB1M0ZVQlBld3pDYVVCcVFpZDVOa0JQZXd6Q1Z6WjVRc1hMSDBCUGV3ekNkcitDUXZKZW96OVBld3pDcWxpRlFpcUxsVDVQZXd6Q1NpaUhRcUF5TWI4b04rSEIwUDhWUXVZZWtNR2w5dkRCMFA4VlFzQ0xqc0hXai8zQm1PTVhRa2RSZ2NHbEpBSEMzVEFaUXZQWWJjRXROZ0xDMUFZYVFrQnpZc0YzZWdMQ1B6d2FRcythWDhGZGdRUEM1UWtiUW9lbVZNR3Bwd2JDU3p3Z1FucW9GY0U4Y1FmQzVvZ21RaER1dWNBOGNRZkNxR2d1UW9XdkhjQThjUWZDa05zM1F0QUd3ejA4Y1FmQ1d6SS9RamlSaXo4OGNRZkM3UWRHUXRERDFUODhjUWZDY01kVlFwdTNGVUE4Y1FmQ2FVQnFRaWQ1TmtBOGNRZkNWelo1UXNYTEgwQThjUWZDZHIrQ1F2SmVvejg4Y1FmQ3FsaUZRaXFMbFQ0OGNRZkNTaWlIUXFBeU1iODRiQTNDc2NPT1FyYjNrN3cwYlEzQ1FoR1BRc0QzUEQxeFlBM0NsSnVJUWdGR3FiOGlYdzNDeWxHSVF2d1dzYjgrYlF6Q3lsR0lRdndXc2I4cll3ZkN5bEdJUXZ3V3NiOEViQTNDcXR1T1Ftbmp3NzAwYlEzQzBDaVBRaVJDQXIxNFdRM0M4TGVJUWxxOXNyL0ZWdzNDNUc2SVFpaDZ1ci9pWlF6QzVHNklRaWg2dXIvUFd3ZkM1RzZJUWloNnVyODBiUTNDNFVhQ1FydkdxMEEwYlEzQzAyT0NRdThvc0VBMGJRM0NsMTEvUWxGZkNVQTBiUTNDeHlaL1FpWVNBVUJQZXd6Q3h5Wi9RaVlTQVVBOGNRZkN4eVovUWlZU0FVQ2Q2UW5DVzdHRFFydUovVUI2RGYvQjAxK2RRaXd1V2tISk1RVENYUmFTUWtIeFFrRlFEd2ZDakx1TFFwcDFJMEdVQmdmQzZlS0xRcTkzSTBINjVBbkNUWjJHUXZ2WS9VQS8zQW5DcThTR1FpZmQvVUEwYlEzQ0lVV0NRbCtqc0VBMGJRM0NZQ2lDUWprL3JFQTBiUTNDT0JGL1FxWHNDa0EwYlEzQ3d0cCtRbkdiQWtCUGV3ekN3dHArUW5HYkFrQThjUWZDd3RwK1FuR2JBa0NnTS9yQm1FS1pRdnFIY0VIRHhQbkJPaUNhUXZxSGNFRzQ1ZkhCSFFhVVFnQW9oa0V5bGZIQk1wMlVRZ0FvaGtHeGhlbkIzK2FTUXQ4UWtFRXFTZW5CMVc2VFF0OFFrRUY2RUF2Q080eVdRamdXblQvaXd3VENhbk9pUXJHK0lVQjZFQXZDeUtPV1FtOGNrei9pd3dUQzNsdWlRcGE3SmtEYXZ3ckNxRlNWUXV6ZktVRGl3d1RDNjNTaFFrOEdmVUNTN3Z6QmlZR3JRaytLUjBDUzd2ekIvR21yUWplSFRFQlFUZnpCVFNTclF2ZG9rVUFvT2ZMQnorV3RRbkVaVDBBb09mTEJ6K1d0UWxrV1ZFQW9PZkxCQm9HdFFvY3dsVUNPYStQQkJBQ3ZRbnVlVVVDT2ErUEJCQUN2UW1PYlZrQ09hK1BCT3B1dVFnMXpsa0NPYStQQm1VcXVRam9BM1VBZXRPL0JaVEN0UXZYYjZrQ2xkL25CWEt1cVFvbXlCMEdnSWdUQ2FMT2VRanNBM1VEblJnckN4dU9TUXNwT3BFQkE1d0xDVE4yYlFwM1JKRUc2Z2Y3Qk9oNm5RZ2JwSkVHVlpRUENLQmlkUWtUSkMwSGZGZ25DK0FDUVFvY3E2a0JCbmZ6QitjQ29RdmNTR1VGbzhRckMwYXlLUXV6ZHgwQU8yZ3ZDWlRTT1F0blppVURXUGd6Q2lrYVJRbDhlQ1VEV1BnekN2czZTUXZiOUlqL1dQZ3pDVE9hU1FsZ0tEeitGSU9YQkZBR1VRbnBkbGtHWEkrekJtYytJUW50ZGxrSC80K1RCQ29tVVFucGRsa0dWQXU3QjJPK0FRbnRkbGtHemt1ckJyMHlEUXB6M29rSFIwZVRCTEptSlF1YVByMEcxcytqQmFqU0pRcHozb2tFNXArYkJKUmFFUXVhUHIwSGZsZGJCa2pxYVF1YVByMEhsVWVMQllweVRRcHozb2tHdmQrREJTQStUUXVhUHIwRUlhdHpCZUpTWlFwejNva0VzZ3V2QlBOUi9RcDMzb2tGQVJlZkJEQXFDUXVhUHIwR3p2dGJCby9XZFFwejNva0VEMXM3QmdXU2dRcVB1cmtFYmN0REJ0TENoUXB6M29rRUFQZExCbGFLZFFrVS9yMEhQUzgzQjZNcWlRcHozb2tHNHI4dkJGQzZoUXFQdXJrRzlnZGJCQkFDdlFnMXpsa0M5Z2RiQmZEeXZRbU9iVmtDOWdkYkJ6bVN2UW1PYlZrQzlnZGJCczlldVFnMXpsa0M5Z2RiQmZEeXZRbnVlVVVDOWdkYkJ6bVN2UW51ZVVVQzlnZGJCWXErdVFpWDIxMEM5Z2RiQkVZZXVRaVgyMTBDOWdkYkJlRHF0UW1PYlZrQzlnZGJCcnRXc1FnMXpsa0M5Z2RiQmVEcXRRbnllVVVDOWdkYkJESVdzUWlYMjEwQlR6TmZCdTFxdlFtT2JWa0JUek5mQjhQV3VRZzF6bGtCVHpOZkJUNld1UWloMzJFQlR6TmZCL255dVFpaDMyRUNPYStQQlJ5S3VRam9BM1VCVHpOZkIrSHFzUWloMzJFQ09hK1BCUXlDc1Fqc0EzVUJUek5mQnUxcXZRbnVlVVVCVHpOZkJhVEt2UW51ZVVVQ09hK1BCczlldVFudWVVVUJUek5mQlpUQ3RRbnllVVVDT2ErUEJydFdzUW55ZVVVQllmd2JDc1Z2aHdZQzVlOEZZZndiQ1FpUGx3WUM1ZThGWWZ3YkNES0VDUWtPYmJNRllmd2JDaE1UbHdZQzVlOEZZZndiQ2hNVGx3UmVlZjhHZ0lnVENoTVRsd1ZnSWlNRVByUHZCaE1UbHdjbllsTUdTN092QmhNVGx3UWw0bHNHUzdPdkJRaVBsd1FsNGxzR1M3T3ZCc1Z2aHdRbDRsc0dTN092QkRLRUNRbThya01HUzdPdkJ1SFlGUXVZZWtNR1M3T3ZCL0JjR1F1WWVrTUdTN092Qm5XWVZRdVlla01HOUF1YkJEQXFDUXVhUHIwR25QK3JCUE5SL1FwMzNva0hOWVBIQmhWWlhRdndlajBGeVJmSEJtd1ZMUW5jVGprRnlSZkhCMEtCS1FuY1Rqa0ZnVWY3QmlZaE5RckpwaEVIcjFnVEM4NEJRUW1pTWJVR0hPd2JDcUY1UlFxck5WVUV0c3dmQ0lBQlJRa1BaUFVGVWZRbkNjN3RQUXFTbEhrSHd5d3pDbW5KTFFqNThzVUR3eXd6Q3lnTkVRdHIyUVVEd3l3ekNWQjg4UWtGKy96L3d5d3pDOTkwMFF2Z0xnVC93eXd6Q0N6SXBRdXlqNkwvd3l3ekM0VWNoUXI2YnA4QmVBZ3pDYVAwYVFxRjlFOEVTM0FqQ0tkUVVRakFmVWNHUFlRZkNML2dPUXVod1k4RUoyQWJDR09zSFFwdnFhc0U5eFAvQnNWdmh3WUM1ZThFOXhQL0JRaVBsd1lDNWU4RTl4UC9CREtFQ1FrT2JiTUU5eFAvQmhNVGx3WUM1ZThIUE9nRENHT3NIUXB2cWFzRTl4UC9CaE1UbHdSZWVmOEhMQ3Z2QmhNVGx3VmdJaU1HYWNlN0JoTVRsd2NuWWxNRWVzdDdCaE1UbHdRbDRsc0Vlc3Q3QlFpUGx3UWw0bHNFZXN0N0JzVnZod1FsNGxzRWVzdDdCREtFQ1FtOHJrTUVlc3Q3QnVIWUZRdVlla01FZXN0N0IvQmNHUXVZZWtNRWVzdDdCbldZVlF1WWVrTUZKeU5qQkRBcUNRdWFQcjBFekJkM0JQTlIvUXAzM29rRlpKdVRCaFZaWFF2d2VqMEU2ZU9MQm1hQmtRZ0Mza2tIK0N1VEJtd1ZMUW5jVGprSCtDdVRCMEtCS1FuY1Rqa0h0RnZIQmlZaE5RckpwaEVGamMvekI4NEJRUW1pTWJVR2JQUC9CcUY1UlFxck5WVUh6RlFIQ0lBQlJRa1BaUFVFYjRBTENjN3RQUXFTbEhrRmFBQVhDUEx4TlFnSlcrRUMzTGdiQ21uSkxRajU4c1VDVW9BWEM1b1ZNUW5iSzBrQzNMZ2JDeWdORVF0cjJRVUMzTGdiQ1ZCODhRa0YrL3orM0xnYkM5OTAwUXZnTGdUKzNMZ2JDQ3pJcFF1eWo2TCszTGdiQzRVY2hRcjZicDhBa1pRWENhUDBhUXFGOUU4SFpQZ0xDS2RRVVFqQWZVY0ZWeEFEQ0wvZ09RdWh3WThHdVV2REJNcDJVUWdBb2hrR2xCdWpCMVc2VFF0OFFrRUUrZ3ZqQk9pQ2FRdnFIY0VGNW9lUEJDb21VUW5wZGxrRVdrdHZCb1VHY1F2K2ZsMEdQVDlyQm9VR2NRditmbDBGbEl2N0I1SFNlUXNNMldrRlpaUDdCa01taVFvemxRMEUyUC8zQk9oNm5RZ2JwSkVHOVd2dkIrY0NvUXZjU0dVRWhOZmpCWEt1cVFvbXlCMEdaY2U3Qi8vMnNRdlhiNmtEU1pPbkJNcDJVUWdBb2hrSExHT0hCMVc2VFF0OFFrRUZpbFBIQk9pQ2FRdnFIY0VHZnM5ekJDb21VUW5wZGxrSDRhdmJCNUhTZVFzTTJXa0cxWWRQQm9VR2NRditmbDBGK2R2ZkJrTW1pUW96bFEwRmFVZmJCT2g2blFnYnBKRUhpYlBUQitjQ29RdmNTR1VGR1IvSEJYS3VxUW9teUIwR1M3dWpCWmJHclF2WGI2a0RnR2MvQkdoZWtRb1hpbUVIcW50SEI1ZnlpUW9YaW1FRXNRTkxCNWZ5aVFvWGltRUdlZU03QkdoZWtRb1hpbUVHTnFzekI2TXFpUXB6M29rRjNEc3ZCRkM2aFFxUHVya0dVODh2QlJLeWlRb1hpbUVGSXpjakJlTWFqUW9YaW1FRTIvOGJCUjNxaVFwejNva0VnWThYQmM5MmdRcVB1cmtHbjJPVEJGUUdVUWhlZ2wwSCtDdVRCTGdxVlFoZWdsMEdORnR2Qk9tMmNRbHpDbUVIMkVkTEJyZHVpUXFEa21VR3E2ODdCNGZXalFxRGttVUZvU3M3QjRmV2pRcURrbVVFVG44akJRS1dqUXFEa21VR2F5K3ZCcnRtSVFoZWdsMEdYcXUzQlZDeUJRaGlnbDBGKzRPN0IrbjV6UWhpZ2wwSDVuZTNCK241elFoaWdsMEdHWStEQituNXpRaGlnbDBGWHcrREJLaUJ5UW50ZGxrRkFjd1RDYW5PaVFyRytJVUJRVGZ6QmlZR3JRaytLUjBEYXZ3ckN5S09XUW04Y2t6L25sL0hCZjcydFFuRVpUMEExN2d2Q1RPYVNRbGdLRHorU0hBM0MwQ2lQUWlSQ0FyMWpHdzNDcXR1T1Ftbmp3NzNYQ0EzQzhMZUlRbHE5c3I4OXhQL0Jhbk9pUXJHK0lVQXp2dlRCSzFPcVFrK0tSMEM0TGdiQ3lLT1dRbThja3ovdm0rdkJJWStzUW5FWlQwQVVYUWZDVE9hU1FsZ0tEejl3aXdqQzBDaVBRaVJDQXIxQmlnakNxdHVPUW1uanc3MjFkd2pDOExlSVFscTlzci9JRUFoQzJPK0FRa1p3R1VIdk5RbENLaUJ5UW5zRkdVRkNLUWRDS2lCeVFrY1FPRUh5RXdkQ21jK0lRaExiR1VHRVhBVkNtYytJUXFiMk9FR3ZEZ0ZDbWMrSVF2cUhjRUdCaGdKQzJPK0FRdnVIY0VFTFNnTkNtYytJUXZHS1dVR3hyUU5DS2lCeVF2dUhjRUZ6YWdWQ0tpQnlRdThOV1VHaWZRWkMyTytBUWtad0dVSElvZ2RDS2lCeVFuc0ZHVUVibGdWQ0tpQnlRa2NRT0VITWdBVkNtYytJUWhMYkdVRmR5UU5DbWMrSVFxYjJPRUVVOS81Qm1jK0lRdnFIY0VGYjh3QkMyTytBUXZ1SGNFSGx0Z0ZDbWMrSVF2R0tXVUdMR2dKQ0tpQnlRdnVIY0VGTjF3TkNLaUJ5UXU4TldVRzNjQVpDMk8rQVFtSkJHa0VCa0FkQ3kzQnlRcnJZR1VIVGpRVkN5M0J5UXBaRU9FSHdlQVZDU2FlSVFndXFHa0ZNeWdOQ1NhZUlRbGttT1VFQ0pmOUJTYWVJUWl5YmIwSE9BZ0ZDMk8rQVFpeWJiMEZ1d2dGQ1NhZUlRdFlUV1VFWEpBSkN5M0J5UWkyYmIwSDAxd05DeTNCeVFsV1pXRUhlQXdoQzJPK0FRbUpCR2tFbkl3bEN5M0J5UXJyWUdVSDRJQWRDeTNCeVFwWkVPRUVYREFkQ1NhZUlRZ3VxR2tGeVhRVkNTYWVJUWxrbU9VR29KUUZDU2FlSVFpeWJiMEgxbFFKQzJPK0FRaXliYjBHVVZRTkNTYWVJUXRZVFdVRTl0d05DeTNCeVFpMmJiMEVhYXdWQ3kzQnlRbFdaV0VIVjNjL0I1eStWUWlPbzIwRllvOC9CdGxXVlFpT28yMEhuNE5iQjV2V0xRaU9vMjBIbHY5akJCZ2FJUWlPbzIwRWxZZG5CTDV1R1FpT28yMEVramNYQjFWR2FRZ1NvMjBFdEVzakJIOW1aUWdTbzIwSDQ5Y25CSkFHWlFpT28yMEc4V01QQm1KbWFRZ1NvMjBFaVg4N0I5djJKUW83YTlFRmtBTS9CSUpPSVFvN2E5RUdmUGN2QnJ0bU5RbzdhOUVFa0JzTEJsNGFXUW83YTlFRndwTDdCNU15V1F2N1E5RUV0d0x2Qk9pU1hRbm45ODBHcDZiN0JSZU9XUWtZWTlFRWxmcnZCS2dhWFF2N1E5RUVVV01MQkxLQ1dRbS9XODBHdWtickJEbUtWUXIrdy9FRWZVcjNCYi9PVVFrKzYvRUdZaWNiQk9CNk1RbEM2L0VGamE3ZkJBM09WUXIrdy9FRmRUTXJCejJxSVFsQzYvRUdnN2NyQitmK0dRbEM2L0VFa09jREJ4T1dGUXQrM0EwSm0yc0RCN25xRVF0KzNBMEtoRjczQjNIQ0pRcWk3QTBKcWdiVEJCYitTUWpiZEEwSjlBN1BCQTkyU1F2M2RBMEoxZnJEQitlMlNRbmJuQTBMdlFjVEJPcWR4UXQrM0EwSmt5c2JCT0tkeFFuV0RBVUlacThuQitmK0dRbEM2L0VIZnZjM0JJSk9JUW83YTlFR2hIdGpCTDV1R1FpT28yMEdvY0x6QitmK0dRbEM2L0VGc2c4REJJSk9JUW83YTlFRXQ1TXJCTDV1R1FpT28yMEVSTEwvQmN2eVlRdXdDNTBIWUlydkJBeWFYUXVMdzgwRit5Ny9CblB1WVF0QUk1MEhqM0xyQktnYVhRdjdROUVFaHlyYkJBM09WUXIrdy9FRTAzYS9CK2UyU1FzN3BBMExFM3JmQmpaR1ZRaVA2ODBHWXRyZkJBM09WUXYvUTlFSFZvN1BCM2QrVFFyK3cvRUdqSDZ6QjcxcVJRcEgzQTBKNXQ4TEJtSm1hUWdTbzIwSGlhcnpCY1FhWlFnU28yMEhPUXJYQnZXS0FRaFVnQ1VMRGxyZkJPcWR4UWxXNUNVTFpNYlRCL0FHRVFwdXFDRUp4TXJMQitINklRbllQQ0VKVzJxekI3TEtRUXBEMkJrSlBpS3ZCYVVDUlFwck5CRUtncHFyQnFubVJRcTIxQlVKL3lhdkJDaStSUXNkZUJrSzJ6cXJCRzNPUlFzalhCVUxpQ01iQk9LZHhRbldEQVVLNGM3dkJPS2R4UW5XREFVSWN1NmJCcDFhSVFqa3RDVUt1SnFmQjdMS1FRc0ZjQjBMWkFLZkI3TEtRUW13QUNFTHg0S2JCcDFhSVFpYUtDRUpjZ3FiQnZXS0FRb3RKQ2tJY3U2YkIvQUdFUWpvdENVSkhsYWJCL0FHRVF2clBDVUl5cUtiQnZXS0FRdldtQ1VMTExhZkJPcWR4UXEwNUMwS2hVNmZCT3FkeFFwR1hDa0pKdWFmQjdMS1FRbnpmQkVJLzg2ZkJwMWFJUWpiaUEwSnF6YWZCL0FHRVFxR0hCRUordXFmQnZXS0FRb2dDQlVMc1phakJPcWR4UXFQMkJVTFlKS2ZCNnRDUVFyWmtCMExRUktmQjRPR1FRaVBhQmtMUFRLZkI0T0dRUW5XM0JrS1FTcnJCcm1pWFFrQUg1MEVnQXFmQks2a3lRbnJPQ1VMVDc2WEJLNmt5UXNOZ0RrTCt5YVhCSzZreVF0b0FEMEtQTmNQQktxa3lRbFp6QlVMY0o3bkJLcWt5UXErUEJVSm03Y1BCS3FreVFsWnpCVUt6WkxYQks2a3lRaDJJRFVLL2ZzSEJLNmt5UXA2cUIwSzE2NlhCMXFMdFFYZG1DMEpvMmFUQjFxTHRRZUh5RDBLVHM2VEIxcUx0UVNpU0VFSWtIOExCMDZMdFFYMEdCMEp1RWJqQjA2THRRU0l0QjBMNTFzTEIwNkx0UVgwR0IwSlRhTURCMXFMdFFXOUZDVUpIVHJUQjFxTHRRV1ViRDBLMTY2WEI1N2lRUVhkbUMwSm8yYVRCNTdpUVFlTHlEMEtUczZUQjU3aVFRU2lTRUVKSFRyVEI1N2lRUVdVYkQwSlRhTURCNTdpUVFXOUZDVUlrSDhMQjVMaVFRWDBHQjBKdUViakI1TGlRUVNJdEIwTDUxc0xCNUxpUVFYMEdCMEx2eHF2QkJFZWpRQlY4QjBJSnVLckJCVWVqUVA4MkRFS2JsYXJCQlVlalFLblBERUtKd0xqQkJVZWpRTFZuQzBMMHZjUEJCRWVqUUM3ZUJVS0k4OFhCUmkyalFEdmdBMEtoVE1YQlJpMmpRRHZnQTBMNks3ekJSaTJqUUp2b0EwS2NlOG5CS05rUXdDencva0h6V3NEQktOa1F3Q3p3L2tHRElzckJLTmtRd0N6dy9rRi84OGZCaTB3YndMaGRBVUwyQnIzQlZDdzJ3TkpPQmtKWUFLL0J1eWc1d0lNUkIwTEkzNjdCSmlVOHdIV2VCMEpiRGJEQlZDdzJ3SjU3QWtKTmt0UEJRMGtyd1NNUDdFRjIwOFRCRzYvUndCak45MEdtY2NyQlEwa3J3U01QN0VFZDlNM0JHNi9Sd0JqTjkwRTBPZFRCUTBrcndTTVA3RUVGbTg3Qkc2L1J3QmpOOTBIRkU5TEJlRXd2d2IrSTcwRmNac3pCVlNUWHdNQ0YrMEhmUDhmQjdaMDV3VkY0K0VIM2E4SEJyaTdsd0RtTUFrSXJIcm5CNk9nN3dhaDAra0hhWTdQQktiN213Qkk2QTBMVFFiUEJyazNvd0JIR0EwTDhPN25CYThNNndYdDIrVUZiY3JUQnF5N2x3Szg0L1VGRFJyckI3WjA1d1k2WThFRml5TUxCaWhhWndRQkN6a0c4cDhQQjlnYWF3UmZLMWtIenVNUEJZZmVhd1hGeTEwR1hmTkhCalJhWndjTWgxa0UxcWRyQnlxS1F3YTgyMEVFSUt0ekJXRm1Od1h2cHpVRWdnOXZCV0ZtTndYdnB6VUY0WXRMQldGbU53WHZwelVIQjg4N0JGb3Jod1NqZG0wRWIwOC9CUmRqaXdVQmxwRUZSNU0vQmNTYmt3Wm9OcFVIMnA5M0JHSXJod2V5OG8wR1UxT2JCZXNyVndkalJuVUZwVmVqQjNUalJ3YVNFbTBHQXJ1ZkIzVGpSd2FTRW0wSFpqZDdCM1RqUndhU0VtMEY5Vk5YQlo2TUF3cDhKZTBGdkVkYkJhcUFHd2hnTmhVRjRLZGJCM0ZZSHdpWDRoVUY0MytQQjkra0Z3ZzRpaEVHd3p1ekIwUC8rd1R5OWQwR2pOKzdCcmdMNndlRlBjVUc4a08zQnJnTDZ3ZUZQY1VFVmNPVEJyZ0w2d2VGUGNVR1pscWZCN0xLUVF1ZmxCMExtQUtqQnAxYUlRbHdRQ1VMZUFhakIvQUdFUXFDeUNVSUEvS2ZCdldLQVFna3NDa0xrMGFqQk9xZHhRbzRUQzBKNFdhZkJLNmt5UW5mYkRrSUtRNmJCMXFMdFFmbHNFRUlLUTZiQjU3aVFRZmxzRUVKTUFLekJCVWVqUU9xckRFSWFTckRCUll3N3dDQjlCMEp4ckxUQnh2M253TXlrQTBMdWg3ckJOcTQ3d2RSQitrRk9HY1hCU3NlYXdjVlExMEd2Uk5IQm0rUGp3ZS9ycEVGNGlOZkJYaklId2lMSmhVR3ptNmZCVk5xUVFwSktCMEpxbjZmQlpmQ1FRbG5BQmtLWW9xZkJEdkdRUXJtZEJrTEtHcWpCRXNHUVFyWGRCRUxJc05mQktKY0h3dUFuaFVIS0IrVEJ3RTRHd3N1QWcwSEpVZGJCcHJzSHd1SldoVUVOdWUzQlE4ejZ3VndOY0VGbW1PVEJROHo2d1Z3TmNFSDBYKzdCUTh6NndWd05jRUVCOSt6Qlk4bi93YlY2ZGtIQU9kYkJNd1VId3RacmhFSFBmTlhCTVFnQndockhlVUZoZzlmQmluNEd3aXpEZzBIR21OZkI2aUFId2wyVWhFRTQyOWJCSnlvQnd2NGRla0VwMGRqQmNBQUh3b1pxaEVHc3pPUEJKOXdGd3Z6eGdrRk53T3ZCdWlZQXdud3VkMEdMQWUzQnp0ejd3U0IyY1VIL2JPekJ6dHo3d1NCMmNVRmhUZVRCenR6N3dTQjJjVUdiczk3QnZvNER3bzRWZ0VFK3V0N0JGTUVEd21oV2dFRjZmOTdCeU9jQndoVURmRUVVRzkvQkE3Y0R3bkJKZ0VHbmd1TEJaMXdEd211cGYwR3grZVRCWFpjQndoNGFlMEZIWGVYQkx1Y0F3aXBVZVVFOEwrWEJMdWNBd2lwVWVVR05xdUxCTHVjQXdpcFVlVUhmVk5sQndzaHFRbjJTMjBFMXErbEJOWGRmUWhjRXFVRzM0czVCeFdkd1FnaXU5RUZJYisxQmUrSmNRdFI4blVHQVpzbEJCRmx4UXBOQi9rSG82dXhCUWFhTVFVcHVnMEVwR3VOQjVBK1FRVktvcmtFeFV1TkJucU5wUVRhRXJVSG82dXhCOHhsZ1FUb0dna0hvNnV4Qm0rUmFRWERsZ1VIR1YrTkJRamRrUVNObnJVRitlZEpCdkJ5VVFhdjE0VUVubHNKQjl2U1dRZkgrQWtJTmE4SkJIUlI5UVlBVUEwTERjOUpCelNOMVFhejE0VUVnYzlKQllIcHZRYXoxNFVIa1pjSkJWajEzUVJNWEEwSWZwOUpCYUtvdlFxdjE0VUdDNGNOQndGRXBRa05aQWtMbzZ1eEJYY1UrUWloSGowRkVVT0ZCc2xVM1Fqcjd0MEhvNnV4QmdkRkdRc3dSa0VGQU1lRkJ3OTgrUXVtY3VFRjJPT0ZCRng4OVFsTjN1RUhvNnV4QjRJcEVRbjNZajBGUXF0SkJ1TVUyUXF2MTRVRUsrY05CMFBzdlFuOU5Ba0pOOXNOQm5EVXZRdDVPQWtMQ3FkSkJlSW8xUXF2MTRVSGZWTm5Cd3NocVFuMlMyMEUxcStuQk5YZGZRaGNFcVVHMzRzN0J4V2R3UWdpdTlFRkliKzNCZStKY1F0UjhuVUdBWnNuQkJGbHhRcE5CL2tFeFV1UEJucU5wUVRhRXJVRXBHdVBCNUErUVFWS29ya0hvNnV6QlFhYU1RVXB1ZzBIbzZ1ekI4eGxnUVRvR2drSG82dXpCbStSYVFYRGxnVUhHVitQQlFqZGtRU05uclVFTmE4TEJIUlI5UVlBVUEwSW5sc0xCOXZTV1FmSCtBa0orZWRMQnZCeVVRYXYxNFVIRGM5TEJ6U04xUWF6MTRVRWdjOUxCWUhwdlFhejE0VUhrWmNMQlZqMTNRUk1YQTBLQzRjUEJ3RkVwUWtOWkFrSWZwOUxCYUtvdlFxdjE0VUZFVU9IQnNsVTNRanI3dDBIbzZ1ekJYY1UrUWloSGowRjJPT0hCRng4OVFsTjN1RUZBTWVIQnc5OCtRdW1jdUVIbzZ1ekJnZEZHUXN3UmtFSG82dXpCNElwRVFuM1lqMEZOOXNQQm5EVXZRdDVPQWtJSytjUEIwUHN2UW45TkFrSlFxdExCdU1VMlFxdjE0VUhDcWRMQmVJbzFRcXYxNFVGVW1ySkJzRTJnd1dFbjJrRlNRb2hCRkdHcHdZY3Uza0dqTVRCQkZvQ3h3ZHF5NEVHRnJaaEFBTkcwd2Z1MTRVRUFBQUFBUlIyMXdSRE80VUdzVWIxQi94N253ZU5zcDBGQ2I1QkJPSkh3d1UrMnFrSDV3enBCRmdYNXdSTEVyRUdtMXFGQXBuajh3WWVYclVFQUFBQUFCOGo4d1MycnJVSFVIOEZCajVjSXdzblhoa0YxVnBOQnpmRU13ZzhnaTBIL2hENUJrak1Rd2hUTmpVRm9GNlZBcjhvUndwUGdqa0VBQUFBQVF1OFJ3aTc2amtGVW1yTEJzRTJnd1dFbjJrRlNRb2pCRkdHcHdZY3Uza0dqTVREQkZvQ3h3ZHF5NEVHRnJaakFBTkcwd2Z1MTRVR3NVYjNCL3g3bndlTnNwMEZDYjVEQk9KSHd3VSsycWtINXd6ckJGZ1g1d1JMRXJFR20xcUhBcG5qOHdZZVhyVUhVSDhIQmo1Y0l3c25YaGtGMVZwUEJ6ZkVNd2c4Z2kwSC9oRDdCa2pNUXdoVE5qVUZvRjZYQXI4b1J3cFBnamtGVklleEJVOVhQUDBkcGRrRUhldVJCaVFIV1AwR2pwa0VJKytSQmcvTFR3T1hQblVGVklleEJoc3pUd0FMcGFrRlZJZXhCZEswTVFmNDBnRUg5Q3VWQm80c2JRWmRZckVGVklleEJWMDBQUVVwU2dFRVpBK1ZCaXVRZVFhOStyRUVmaHVaQlNtTjR3VGFha1VGVklleEJpZnlCd1R4NVhVRTgzT2xCb3lyQ3dkeXZla0ZWSWV4Qk9sakZ3WjY1VVVFc0RlcEJMSjdFd1JYbGVFRlZJZXhCWHpmSHdRdG1VVUdLTzlsQjF0MWd3ZUJqMkVGMU1lQkJqYUJzd1F2L3RFRU1mTnRCRWhuVXdOSEh4a0dueU05Qm96L1V3TDYvNzBHTVR1UkJ6N2E3d1EzdHBrRllqdWRCdVBDK3dYNGlra0hZNHVSQm5WZS93Y1dLcEVIMDhPZEI1ZnJCd2FoK2tFSFIzdGhCcWtYY1AxYTYwa0VQZk1sQnk0bmlQMnJSL2tHeGFkaEJmYU1xUVdZbjJVR3hiY1pCV0xzNVFSdjdBa0xIV2RoQk43Z3VRV3BXMlVIRFZjWkI0NHMrUVJNWEEwSUkrK1RCZy9MVHdPWFBuVUVIZXVUQmlRSFdQMEdqcGtGVkllekJVOVhQUDBkcGRrRlZJZXpCaHN6VHdBTHBha0g5Q3VYQm80c2JRWmRZckVGVkllekJkSzBNUWY0MGdFRVpBK1hCaXVRZVFhOStyRUZWSWV6QlYwMFBRVXBTZ0VFZmh1YkJTbU40d1RhYWtVRlZJZXpCaWZ5QndUeDVYVUU4M09uQm95ckN3ZHl2ZWtGVkllekJPbGpGd1o2NVVVRXNEZXJCTEo3RXdSWGxlRUZWSWV6Qlh6Zkh3UXRtVVVFTWZOdkJFaG5Vd05ISHhrRjFNZURCamFCc3dRdi90RUdLTzluQjF0MWd3ZUJqMkVHbnlNL0Jvei9Vd0w2LzcwRllqdWZCdVBDK3dYNGlra0dNVHVUQno3YTd3UTN0cGtIMDhPZkI1ZnJCd2FoK2tFSFk0dVRCblZlL3djV0twRUhSM3RqQnFrWGNQMWE2MGtFUGZNbkJ5NG5pUDJyUi9rR3hhZGpCZmFNcVFXWW4yVUd4YmNiQldMczVRUnY3QWtMSFdkakJON2d1UVdwVzJVSERWY2JCNDRzK1FSTVhBMEo4YXFaQnAxYUlRbFV1Q1VJTTFxWkI3TEtRUXQxZEIwSTNzS1pCN0xLUVFva0JDRUpSa0taQnAxYUlRa0tMQ0VLOE1hWkJ2V0tBUXFaS0NrSjhhcVpCL0FHRVFsVXVDVUtuUktaQi9BR0VRaFhSQ1VLU1Y2WkJ2V0tBUWhDb0NVSXAzYVpCT3FkeFFzbzZDMElBQTZkQk9xZHhRcTZZQ2tJeW42VkJLNmt5UXQ1aERrSmRlYVZCSzZreVF2TUJEMExIaUtSQjFxTHRRZnJ6RDBMeVlxUkIxcUx0UVVDVEVFTEhpS1JCNTdpUVFmcnpEMEx5WXFSQjU3aVFRVUdURUVKb1o2cEJCVWVqUUMwNERFTDZSS3BCQlVlalFOZlFERUsxcjY1QnV5ZzV3SzBTQjBJb2o2NUJKaVU4d0o2ZkIwSXo4YkpCU0Y3cHdFTEhBMEk1RTdOQlI4em53RVE3QTBLODNwOUJXdW1QUXI2ZUIwS1JCS0JCV3VtUFF0djZCa0pPeUo5QjNmR0hRc2ovQjBKQllKOUJ2V0tBUXBub0NVSjJvcDlCL0FHRVFpaWpDRUt1QzZCQnpYQnlRakxaQ2tMalo2QkIvTHFPUWh0TEJVS05jcUJCM2ZHSFFwc2NCVUp0SGFCQi9BR0VRZ1NQQmtMTk9hQkJ2V0tBUWdvOEJrSTY1YUJCT3FkeFFta3ZCMEp3Z1o5Qks2a3lRbjhEQzBMaXA1NUJLNmt5UXF1aERrSzVPNTVCMXFMdFFTUmpEVUoza1oxQjFxTHRRV3N6RUVJRWE1NUI1N2lRUWVpWkRFSjNrWjFCNTdpUVFXd3pFRUk4UnFSQmlRcWRRR0xBQ0VLQWM2TkJCVWVqUUhsc0RFS3V2YWRCbklWTHdOMDlCMEpkWGFoQnpNOUV3RDJIQkVLM0g2eEI3cnptd0xSa0EwSytRYXhCaGlibHdJYllBa0tyOGF4QjllcnB3QkswLzBGRzFaOUI3TEtRUXFySEIwS1dYNlpCN0xLUVFxUUNDRUpyaGFaQjdMS1FRdnBlQjBKd3I1OUI3TEtRUWlackNFTGJHYVpCcDFhSVFuQXZDVUsyYVo5QnAxYUlRcHlYQ1VMZ1E1OUIvQUdFUWkwNkNrSVo0YVZCdldLQVFzRkxDa0lHOUtWQi9BR0VRakhTQ1VMMk1KOUJ2V0tBUXFlekNrS0pqS1pCT3FkeFF1WTdDMEpqM0o5Qk9xZHhRcWFqQzBMWW9hQkJwMWFJUWg1T0JFSUlHS2RCN0xLUVFyYmhCRUw4VWFkQnAxYUlRbkxrQTBMalo2QkI3TEtRUWh0TEJVSW5MS2RCL0FHRVF0eUpCRUlDZktCQi9BR0VRbHJ6QkVJOEdhZEJ2V0tBUXNNRUJVSVlhYUJCdldLQVFpbHVCVUtyeEtkQk9xZHhRdUQ0QlVLRkZLRkJPcWR4UWlGaUJrTGZZS1pCSzZreVFyTFFDVUs1c0o5Qks2a3lRcjQ0Q2tLOUtLVkJLNmt5UWcwREQwS1hlSjVCSzZreVFwaHBEMEp5U3FWQjFxTHRRYXhvQzBKUG1wNUIxcUx0UVNuUUMwSlBFcVJCMXFMdFFWaVVFRUlzWXAxQjFxTHRRVlg2RUVKUG1wNUI1N2lRUVNuUUMwSnlTcVZCNTdpUVFheG9DMElzWXAxQjU3aVFRVmI2RUVKUEVxUkI1N2lRUVZpVUVFS0pkYVJCQkVlalFQbnJCMEtzSmF0QkJFZWpRSFIrQjBJMVJLTkJCVWVqUUFNK0RVSlo5S2xCQlVlalFBWFNERUppanFkQm5JVkx3SGdLQ0VLSFBxNUJKaVU4d01tZ0IwTDF1NmhCek05RXdCcnBBa0laYks5QlZDdzJ3UFo5QWtLUW9MSkJIdFhwd0hUSUEwSnpFcXhCcTgveHdONm5BMEtYd3JKQkhVUG93SFU4QTBKczhLdEJpbUh6d0xVekJFTDJJSzFCT1Qzd3dLa1Eva0VaMGJOQmpyRG13Szg0L1VHb2FLZEI3TEtRUXBuZ0JFS2VvcWRCcDFhSVFsVGpBMExKZktkQi9BR0VRcitJQkVMZGFhZEJ2V0tBUXFVREJVSk1GYWhCT3FkeFFzTDNCVUtBc2FaQks2a3lRcGJQQ1VJVm02VkIxcUx0UVpGbkMwSVZtNlZCNTdpUVFaRm5DMEpOZHF0QkJFZWpRRVY5QjBLNXZLOUJWQ3cyd010OEFrSzZJYlJCdFRubXdLODQvVUVTNEt4QkozSHB3UDBtQUVMbkJhMUJmbVh3d05YKy9rRU10ck5CMXRqbXdLMGwva0dzQnJSQkFHTG13RWtqL2tIVW9hOUJ3WGcyd09yeUFrSTNXNnRCQkVlalFDUDNCMEttZjZWQjU3aVFRY2JjQzBLbWY2VkIxcUx0UWNiY0MwSVJscVpCSzZreVFtQkZDa0xkK2FkQk9xZHhRZ1J2QmtKdlRxZEJ2V0tBUWtCN0JVSmFZYWRCL0FHRVFuZ0FCVUl2aDZkQnAxYUlRa3BiQkVML1dhZEI3TEtRUW9zZ0JVSmVDYWRCN0xLUVFxY2hCVUk1V2FCQjdMS1FRdnVLQlVMMFhhQkJPZG1PUW1GMkJVSU0xcWJCN0xLUVF0MWRCMEo4YXFiQnAxYUlRbFV1Q1VJM3NLYkI3TEtRUW9rQkNFSlJrS2JCcDFhSVFrS0xDRUo4YXFiQi9BR0VRbFV1Q1VLOE1hYkJ2V0tBUXFaS0NrS25SS2JCL0FHRVFoWFJDVUtTVjZiQnZXS0FRaENvQ1VJcDNhYkJPcWR4UXNvNkMwSUFBNmZCT3FkeFFxNllDa0l5bjZYQks2a3lRdDVoRGtKZGVhWEJLNmt5UXZNQkQwTEhpS1RCMXFMdFFmcnpEMEx5WXFUQjFxTHRRVUNURUVMSGlLVEI1N2lRUWZyekQwTHlZcVRCNTdpUVFVR1RFRUpvWjZyQkJVZWpRQzA0REVMNlJLckJCVWVqUU5mUURFSzFyNjdCdXlnNXdLMFNCMElvajY3QkppVTh3SjZmQjBJejhiTEJTRjdwd0VMSEEwSTVFN1BCUjh6bndFUTdBMEs4M3AvQld1bVBRcjZlQjBLUkJLREJXdW1QUXR2NkJrSk95Si9CM2ZHSFFzai9CMEpCWUovQnZXS0FRcG5vQ1VKMm9wL0IvQUdFUWlpakNFS3VDNkRCelhCeVFqTFpDa0xqWjZEQi9McU9RaHRMQlVLTmNxREIzZkdIUXBzY0JVSnRIYURCL0FHRVFnU1BCa0xOT2FEQnZXS0FRZ284QmtJNjVhREJPcWR4UW1rdkIwSndnWi9CSzZreVFuOERDMExpcDU3Qks2a3lRcXVoRGtLNU81N0IxcUx0UVNSakRVSjNrWjNCMXFMdFFXc3pFRUlFYTU3QjU3aVFRZWlaREVKM2taM0I1N2lRUVd3ekVFSThScVRCaVFxZFFHTEFDRUtBYzZQQkJVZWpRSGxzREVLdXZhZkJuSVZMd04wOUIwSmRYYWpCek05RXdEMkhCRUszSDZ6Qjdyem13TFJrQTBLK1FhekJoaWJsd0liWUFrS3I4YXpCOWVycHdCSzAvMEdXWDZiQjdMS1FRcVFDQ0VKRzFaL0I3TEtRUXFySEIwSnJoYWJCN0xLUVF2cGVCMEp3cjUvQjdMS1FRaVpyQ0VMYkdhYkJwMWFJUW5BdkNVSzJhWi9CcDFhSVFweVhDVUlaNGFYQnZXS0FRc0ZMQ2tMZ1E1L0IvQUdFUWkwNkNrSUc5S1hCL0FHRVFqSFNDVUwyTUovQnZXS0FRcWV6Q2tLSmpLYkJPcWR4UXVZN0MwSmozSi9CT3FkeFFxYWpDMElJR0tmQjdMS1FRcmJoQkVMWW9hREJwMWFJUWg1T0JFTDhVYWZCcDFhSVFuTGtBMExqWjZEQjdMS1FRaHRMQlVJbkxLZkIvQUdFUXR5SkJFSUNmS0RCL0FHRVFscnpCRUk4R2FmQnZXS0FRc01FQlVJWWFhREJ2V0tBUWlsdUJVS3J4S2ZCT3FkeFF1RDRCVUtGRktIQk9xZHhRaUZpQmtMZllLYkJLNmt5UXJMUUNVSzVzSi9CSzZreVFyNDRDa0s5S0tYQks2a3lRZzBERDBLWGVKN0JLNmt5UXBocEQwSnlTcVhCMXFMdFFheG9DMEpQbXA3QjFxTHRRU25RQzBKUEVxVEIxcUx0UVZpVUVFSXNZcDNCMXFMdFFWWDZFRUpQbXA3QjU3aVFRU25RQzBKeVNxWEI1N2lRUWF4b0MwSXNZcDNCNTdpUVFWYjZFRUpQRXFUQjU3aVFRVmlVRUVLSmRhVEJCRWVqUVBuckIwS3NKYXZCQkVlalFIUitCMEkxUktQQkJVZWpRQU0rRFVKWjlLbkJCVWVqUUFYU0RFSmlqcWZCbklWTHdIZ0tDRUtIUHE3QkppVTh3TW1nQjBMMXU2akJ6TTlFd0JycEFrSVpiSy9CVkN3MndQWjlBa0p6RXF6QnE4L3h3TjZuQTBLUW9MTEJIdFhwd0hUSUEwS1h3ckxCSFVQb3dIVThBMEpzOEt2QmltSHp3TFV6QkVMMklLM0JPVDN3d0trUS9rRVowYlBCanJEbXdLODQvVUdvYUtmQjdMS1FRcG5nQkVLZW9xZkJwMWFJUWxUakEwTEpmS2ZCL0FHRVFyK0lCRUxkYWFmQnZXS0FRcVVEQlVKTUZhakJPcWR4UXNMM0JVS0FzYWJCSzZreVFwYlBDVUlWbTZYQjFxTHRRWkZuQzBJVm02WEI1N2lRUVpGbkMwSk5kcXZCQkVlalFFVjlCMEs1dksvQlZDdzJ3TXQ4QWtLNkliVEJ0VG5td0s4NC9VRVM0S3pCSjNIcHdQMG1BRUxuQmEzQmZtWHd3TlgrL2tFTXRyUEIxdGptd0swbC9rR3NCclRCQUdMbXdFa2ova0hVb2EvQndYZzJ3T3J5QWtJM1c2dkJCRWVqUUNQM0IwS21mNlhCNTdpUVFjYmNDMEttZjZYQjFxTHRRY2JjQzBJUmxxYkJLNmt5UW1CRkNrTGQrYWZCT3FkeFFnUnZCa0p2VHFmQnZXS0FRa0I3QlVKYVlhZkIvQUdFUW5nQUJVSXZoNmZCcDFhSVFrcGJCRUwvV2FmQjdMS1FRb3NnQlVKZUNhZkI3TEtRUXFjaEJVSTVXYURCN0xLUVF2dUtCVUwwWGFEQk9kbU9RbUYyQlVKNjBNMUJlQzgzUW52YjlFRkVTdGxCQVFZOFFoQ3AyMEZKWDloQkFRWThRaENwMjBGM244NUJlQzgzUW52YjlFR2JVc05CWnpnM1FudmI5RUZ2T2MxQnZRdzhRaENwMjBFaE1lcEJTcHRHUXNPS3BFRmFXZXRCU3B0R1FzT0twRUhQbTkxQk9KMUdRc09LcEVGOWFPMUJkSlZJUXA0K21rRW1uTzVCZEpWSVFwNCtta0YyanVCQmRKWklRczQrbWtId3FzTkI0Q3N6UXB6WkJFSm1CTVJCdmZJeVFqVmlCVUt5WXNSQjRDc3pRcHpaQkVKNlRjTkJ2Zkl5UWpWaUJVS21UTGxCdmZJeVFtbCtCVUtwdjdsQkF6Y3pRcFBZQkVMc20vQkJpK1V5UVdUZ2RrRnlDdTlCemJjMFFSVUJkMEdZbmZCQnpiYzBRUlVCZDBIR0NPOUJpK1V5UVdUZ2RrSE9KTzlCc25GUlFhUUVlVUgwdC9CQnNuRlJRYVFFZVVFbEYvSkJLNnNwUWhjdmkwRjAxdkJCWDhjN1F1TVNqVUdhYWZKQlg4YzdRdU1TalVFQmhQQkJLNnNwUWhjdmkwSHBoZkpCT3dWS1FyMG5qa0hEOHZCQkJXcEtRcjBuamtIcGhmSkJCV3BLUXIwbmprSEQ4dkJCT3dWS1FyMG5qa0dObCtWQnpiYzBRUlVCZDBIaGxlVkJpK1V5UVdUZ2RrSHBzZVZCc25GUlFhUUVlVUdQWStkQlg4YzdRdU1TalVFY0VlZEJLNnNwUWhjdmkwSGdmK2RCQldwS1FyMG5qa0hnZitkQk93VktRcjBuamtGdUViaEIwNkx0UVJJbEIwSWtIOEpCNUxpUVFXMytCa0lrSDhKQjA2THRRVzMrQmtKdUViaEI1TGlRUVJJbEIwTDUxc0pCNUxpUVFXMytCa0w1MXNKQjA2THRRVzMrQmtMQ2JybEJXbFJjUWVvT0JrSkVGY05CRG81aVFYd0tCa0lwVDdsQm9aUmlRUklvQmtLN0xjTkIrazFjUVQzeUJVTHczOE5CK2sxY1FUM3lCVUw4eDhOQkRvNWlRWHdLQmtLUE5jTkJBcFV5UWtkckJVSm03Y05CQXBVeVFrZHJCVUxjSjdsQkFwVXlRcCtIQlVLZEU4eEJ4YjVRUVpVWDRrRndNZVZCMnlKQ1FYdnpya0dzc05WQkhzWlFRZnNYNGtFS3FkdEJIQjlDUVVienJrSE1jZVpCMnlKQ1FYdnpya0dFb2RaQkhzWlFRZnNYNGtGbk4rOUJjd0ptUVZKd2VrR055dkJCY3dKbVFWSndla0dDeE9WQmN3Sm1RVkp3ZWtHRW9kWkJ4bTVWUWZzWDRrSE1jZVpCLzMxR1FYdnpya0dFb2RaQnY1RjJRZnNYNGtITWNlWkJla2htUVh2enJrSE1jZVpCR0R0dVFYdnpya0dFb2RaQkovRnZRZnNYNGtIMnE4SkJCWFo5UWRweUJrSi9kY05CYlJSNFFmcGRCa0xmWU1OQkJYWjlRZHB5QmtJR3djSkJiUlI0UWZwZEJrSUd4N2hCTFlSOVFYcVVCa0pCNHJoQkVpRjRRY3QrQmtKc0hNTkIyUzh0UXF5UEJVS0dEcmxCd1NRdFFqK3RCVUpFMU1OQjJTOHRRcXlQQlVJYTZ2QkJIcXBGUWhEVGpVRkFmZkpCSHFwRlFoRFRqVUUzZCtkQkhxcEZRaERUalVGRVN0bEIrb0kyUWhDcDIwRjNuODVCWHFJMlFudmI5RUYzbjg1QmNLd3hRbnZiOUVGRVN0bEI1M2c3UWhDcDIwRmFXZXRCUXhoQlFzT0twRUZhV2V0Qk1BNUdRc09LcEVFbW5PNUJiUkpEUXA0K21rRW1uTzVCV2doSVFwNCtta0h3MjhSQnp0b3lRb3JTQkVMdzI4UkI0T1F0UW9yU0JFSm9JdkZCM2Q5S1FzcDRqa0ZQWS9KQjNkOUtRc3A0amtIaitPTkIzZDlLUXNwNGprRzFZL0pCMWtaRlF1M25qa0cxWS9KQnd6eEtRdTNuamtHYkpNZEIwdFZaUVhONEFVTHBnTDFCMGN4WlFXRjRBVUk2NU1kQjB0VlpRWE40QVVKbzE4ZEJkN3BmUWRHRUFVTG5tc2RCc2ZKN1FRakFBVUlBcDhkQnhFeDJRUzYwQVVLbWZjaEI5TWMwUXNXckFFS1R2TWRCOU1jMFFzV3JBRUl0bHIxQkVOSTBRb1NyQUVMRXY4aEJTbHcwUW5hdUFFS3FvY2hCdFZvdlFvRE9BRUxZNE1OQjNlWjNRWm5tQlVJVXpjTkJTVTk5UVpINkJVTEtQOGRCMDZMdFFWajBBVUxiUjhOQjVMaVFRV3Q5QmtMS1A4ZEI1TGlRUVZqMEFVTGJSOE5CMDZMdFFXdDlCa0x1TDhSQnMwVmlRYmVXQlVMRFJzUkJ3dzVjUWFsL0JVSTRrOE5Cd3c1Y1FhbC9CVUw1MXJsQm1STmNRWFdaQlVMWkUvQkJRSGxKUXVDcmxVRUwyKzVCUUhsSlF1Q3JsVUVvNHVGQjMzbEpRdTZybFVGQkp2QkJQKzVJUWtxZ2xVSDRTUEJCa2d4RVFpYzRsVUVMcmUxQkJ3QTFRV0dNZ2tFdU4rUkJndjgwUVZ1TWdrSEROTzlCQndBMVFXR01na0U5UCs5QmpqeG5RVHlraEVHb09POUJKSHRVUVMzY2cwRmpOTzlCQmk4M1FheWpna0YyZnZCQlVPWlJRVE01ZTBGQWovQkJrVEZtUVZlcWZFRTFudkZCSzZzcFFuUmRqRUdvOFBGQlg4YzdRa0ZCamtIYjhPNUJLNnNwUXRrT2swRk1RKzlCWDhjN1FxWHlsRUZwWi9CQmZSWTFRVGdsZVVFTVp2QkJVVFl6UVhNQ2VVR2QxTzVCVVRZelFYTUNlVUZIWWVWQlBUWXpRWEFDZVVFQUNlMUJiUkpEUXA0K21rSFR0ZTVCa2d4RVFpYzRsVUUweHVsQlF4aEJRc09LcEVFb3NPMUJYOGM3UXFYeWxFRzFYZTFCSzZzcFF0a09rMEVYck8xQmpqeG5RVHlraEVHbTN1UkJHRHR1UVh2enJrRmVEdFZCdjVGMlFmc1g0a0hCQjhaQnNmSjdRUWpBQVVLa3JNVkI1TGlRUVZqMEFVS2tyTVZCMDZMdFFWajBBVUtGRHNkQnRWb3ZRb0RPQUVKUkRNMUJjS3d4UW52YjlFRWV0OWRCK29JMlFoQ3AyMEVkbHVOQmJSSkRRcDQrbWtIdlF1VkJrZ3hFUWljNGxVRlBVK0JCUXhoQlFzT0twRUU3Uk01QitvSTJRaENwMjBGRFBlUkJYOGM3UXFYeWxFSFE2dU5CSzZzcFF0a09rMEV5T2VSQmpqeG5RVHlraEVIRGE5dEJHRHR1UVh2enJrRjdtOHRCdjVGMlFmc1g0a0hjbEx4QnNmSjdRUWpBQVVMQk9ieEI1TGlRUVZqMEFVTEJPYnhCMDZMdFFWajBBVUtobTcxQnRWb3ZRb0RPQUVKdG1jTkJjS3d4UW52YjlFR0owUEJCOUtGc1FYRGxla0ZqUGU5QjlLRnNRWERsZWtFVmpQRkJZd2JlUWJXY2hFSHYrTzlCWXdiZVFiV2NoRUdBeXVWQjlLRnNRWERsZWtFTWh1WkJZd2JlUWJXY2hFRWpFL0ZCWXdiZVFSTExoVUZIay9CQnNMbHNRUU1mZlVITFplNUJZd2JlUVhkOGpFRVdPZTlCSlVCdFFmemNoRUh5cGUxQkpVQnRRZnpjaEVHbDB1eEJZd2JlUVhkOGpFRU5NK1JCSlVCdFFmemNoRUhBWCtOQll3YmVRWGQ4akVGeUZzTkJVdWNyUWxTWUJVS1VDTGxCQjk0clFoTzJCVUpKenNOQlV1Y3JRbFNZQlVMOHpzUkIyaUFzUWpuZ0JFSmJsY2hCTW1NdFFybllBRUkwQXNkQk1tTXRRcm5ZQUVKUmo3MUJNbU10UXJuWUFFS2hkL0pCc2RWQ1FnMmNqVUY2NVBCQnNkVkNRZzJjalVHWWNlZEJzZFZDUWcyY2pVR0JRL0pCUEo1Q1FrYTVqa0ZHOU85QlJsOUJRcWNobFVFZ1llNUJSbDlCUXFjaGxVRTc3dVJCUmw5QlFxY2hsVUVzazhKQjdPV0JRVzJMQmtMM3ByaEJEKzZCUVFHdUJrS1lTTU5CN09XQlFXMkxCa0pIamNkQjk4YUFRZHZIQVVMK3RjTkJMY21CUVQ0UkJrSWgrc1ZCOThhQVFkdkhBVUk4aDd4Qjk4YUFRZHZIQVVJeWUvQkJOVDBQUVU5UWRFSHVCZTlCcHNzdlFaeVlka0VUbWZCQnBzc3ZRWnlZZGtFTjZPNUJOVDBQUVU5UWRFRzRCKzlCY1pFeVFlN2Jka0hkbXZCQmNaRXlRZTdiZGtFS2srVkJwc3N2UVp5WWRrRW5kZVZCTlQwUFFVOVFkRUhVbE9WQmNaRXlRZTdiZGtINks3eEJSaTJqUUhQVUEwS2NlOGxCS05rUXdOdkgva0doVE1WQlJpMmpRQkxNQTBMeldzQkJLTmtRd052SC9rR0RJc3BCS05rUXdOdkgva0dJODhWQlJpMmpRQkxNQTBLc1FkTkJRMGtyd2RMbTYwRjIwOFJCRzYvUndNZWs5MEVGSWNwQlEwa3J3ZExtNjBFZDlNMUJHNi9Sd01lazkwR1Y2Tk5CUTBrcndkTG02MEVGbTg1Qkc2L1J3TWVrOTBFSUt0eEJXRm1Od1NyQnpVRWdnOXRCV0ZtTndTckJ6VUY0WXRKQldGbU53U3JCelVHMndPUkJGemY4d1ZLSWJVR2dndTVCQ3M0RHdzaXRWVUZkNGUxQkZ6Zjh3VktJYlVINVllVkJDczREd3NpdFZVR0hLZTlCQ3M0RHdzaXRWVUZFaU81QkZ6Zjh3VktJYlVHSEtlOUJXWFVGd24ySlMwR2dndTVCV1hVRnduMkpTMEg1WWVWQldYVUZ3bjJKUzBFYWIrNUJ1OExMUDgwU2EwR2NYdTlCVDkwRndXcVNYa0YyeSsxQlQ5MEZ3V3FTWGtFK0F2QkJ1OExMUDgwU2EwRTEvT1JCdThMTFA4MFNhMEdTV09SQlQ5MEZ3V3FTWGtHcnQrNUJVa1BBUUJ1ZWNFSFFTdkJCVWtQQVFCdWVjRUhIUk9WQlVrUEFRQnVlY0VGMnkrMUJxRFhId1NkZlJrR2NYdTlCR1pEandUY3ZRVUYyeSsxQkdaRGp3VGN2UVVHY1h1OUJxRFhId1NkZlJrR1NXT1JCcURYSHdTZGZSa0dTV09SQkdaRGp3VGN2UVVGcFZlaEJqUkRSd2FTRW0wRjJ6K0pCWitXMXdhU3dyMEdBcnVkQmpSRFJ3YVNFbTBGZmR1TkJaK1cxd2FTd3IwSFBydGxCWitXMXdhU3dyMEhaamQ1QmpSRFJ3YVNFbTBHak4rNUJYZHI1d2VGUGNVRzhrTzFCWGRyNXdlRlBjVUVWY09SQlhkcjV3ZUZQY1VGd01lVkJPdEpCUVh2enJrR2RFOHhCSkc1UVFaVVg0a0dzc05WQmZIVlFRZnNYNGtFS3FkdEJlODVCUVVienJrSE1jZVpCT3RKQlFYdnpya0dFb2RaQmZIVlFRZnNYNGtHYkpNZEJNWVZaUVhONEFVTHBnTDFCTUh4WlFXRjRBVUk2NU1kQk1ZVlpRWE40QVVJNGs4TkJJcjViUWFsL0JVTERSc1JCSXI1YlFhbC9CVUphTjhOQkpnMWNRY1R3QlVKYzZjTkJKZzFjUWNUd0JVTDUxcmxCK01KYlFYV1pCVUl1ZTdsQmNSTmNRUlFOQmtJTHJlMUJaYTgwUVdHTWdrRXVOK1JCNGE0MFFWdU1na0hETk85QlphODBRV0dNZ2tHZDFPNUJzZVV5UVhNQ2VVRU1adkJCc2VVeVFYTUNlVUZIWWVWQm5PVXlRWEFDZVVGcWIvQkJ0c01EUWRScGMwRkMzTzVCdHNNRFFkUnBjMEZoYWVWQnRzTURRZFJwYzBIRE5POUI4dlV2UVdHTWdrSE1jZVpCeGhnOVFYdnpya0VNWnZCQlBDd3VRWE1DZVVHRW9kWkJpZnhMUWZzWDRrRTY1TWRCUDQxVlFWTm9BVUxEUnNSQk1jWlhRWWh2QlVKVCtjTkJaZEZYUWYzZkJVS29SOE5CWmRGWFFmM2ZCVUlsa0xsQmd0eFhRY2I3QlVMRE5POUIyM0FGUVdHTWdrSE1jZVpCOVRRZFFYdnpya0hNY2VaQnNKTVNRWHZ6cmtIRE5POUJJUklRUVdHTWdrRU1adkJCSnFjRFFYTUNlVUVNWnZCQmEwZ09RWE1DZVVHRW9kWkJJTXd0UWZzWDRrR0VvZFpCL2JzalFmc1g0a0h2UHNoQnBjTTZRWG43QUVJclhjaEJ4dFV4UVRIWEFFSzJ2OFJCbHZ3OFFhOENCVUlGNk1SQnVBNDBRV2JlQkVKTlhzUkJod285UWVCMUJVTDNmOFJCa3gwMFFZTlNCVUxJcnNOQmh3bzlRZUIxQlVJbzBjTkJreDAwUVlOU0JVSmtGYnBCSmhJOVFjV05CVUxQUWJwQkNDUTBRUnRwQlVLdVp1TkJNM0lFd3F6c08wRVM5TzFCeXliOXdiOWtQRUc0Yk81Qk0zSUV3cXpzTzBFRjd1SkJ5eWI5d2I5a1BFRjJ5KzFCUU5UNHdaSGVQRUZzeGVKQlFOVDR3WkhlUEVHY1h1OUJUeWI5d1ZoV1BFR2NYdTlCRUdFRXduYTNPMEdjWHU5QlFOVDR3WkhlUEVGMnkrMUJaQmEvd1kvYlIwR2NYdTlCWkJhL3dZL2JSMEdTV09SQlpCYS93WS9iUjBIeGJ1SkI1aTJ3d2NydHMwRUt5T0ZCNWkyd3djcnRzMEZrcDloQjVpMnd3Y3J0czBHY1h1OUJUOTBGd2JlNFlVR2NYdTlCWkJhL3dkd0JTMEUrQXZCQnU4TExQeG81YmtIUVN2QkJVa1BBUUdqRWMwRmJ2ZTVCVDkwRndlMVJia0ZidmU1QlpCYS93UkdiVjBIK1lPOUJ1OExMUDFIU2VrR1FxZTlCTVlDL1FOQ2dnRUdUTWU5QnRobmp3WGNoUkVGb0V1OUIyY2JHd1dneVNrRkJXZTlCVmlEOXdUR1JQVUUrVis5QnpkcjR3VE11UGtGSVhlOUIzRmtFd3FwalBFRy9pdTVCRldQaHdmZ0xUMEVRK08xQlVTekZ3WXBlV0VGblJlOUJMUXI5d2JVZlFrSHJPKzlCRlBQNHdiZ0pRMEZlV085QmwvUUV3cFRUUDBHUldlOUJERUFGd295dlBVSE1idTVCUFNjRnd1MzdPMEhmbHVOQlBTY0Z3dTM3TzBGbjcrTkJaWlcyd2Z1bXJFSHRuT2hCbGN6Undha3RtVUZhUSs1QjlzLzV3YzA2YjBISWtPNUJtVUQ4d1VHVWEwR2tLKzlCZTlrRHdrYWNWRUd3Sys5Qm8vQUZ3aW1pUjBHOGdlNUJWZkVGd2xPa1IwRlJUZVZCVmZFRndsT2tSMEhEdmVWQnJqVzV3VThNb1VFaHJ1bEIzcHJVd1k4OWtFRVpjTzVCTXFqNXdYTkdaMEZLc2U1QjMyVDh3ZjRkWkVHdk0rOUJMd1VFd25lSFVFSHpNKzlCMDAwR3dzRnZRMEZUZnU1Qk1WRUd3ak42UTBGay91UkJNVkVHd2pONlEwRmRST3hCYU9Ud3dkdW1TVUdhWXUxQi9sWHh3U1dRU1VGZFJPeEIvbFh4d1NXUVNVR2FZdTFCYU9Ud3dkdW1TVUgwanVWQmFPVHd3ZHVtU1VIMGp1VkIvbFh4d1NXUVNVR2duT3BCMHNIb3dXQ0pna0ZRUk9wQkhKUHB3WURXZ1VIUnV1cEJISlBwd1lEV2dVRWZKdXBCMHNIb3dXQ0pna0ZMeWVOQkhKUHB3WURXZ1VFYXErTkIwc0hvd1dDSmdrR2FVZTFCVXlUeHdSRUVTMEg4VU8xQmk3RHd3YW9oUzBHakV1MUJTR3p3d1FsbVVFR3JEKzFCU3ZEdndlMmRVRUgvdU9wQnl4VHB3VjlhZ1VITzFlcEJBZUxwd1NXdmdFRkhKZXRCaUZIcXdScXJlVUhwUE90QlhnL3J3Y09OZUVGRSt1cEIxK25ud1RUOWgwRUR4T3RCYnR2b3diY3VoMEVyb2V0QjErbm53VFQ5aDBFY0hldEJidHZvd2JjdWgwR2QyZUZCMStubndUVDloMEYyL09GQmJ0dm93YmN1aDBGcUUrUkJGTi96d2NQcFBVRjJ5KzFCRk4vendjUHBQVUdTV09SQlJ0anl3UmNoUGtGMnkrMUJSdGp5d1JjaFBrR2NYdTlCRk4vendjUHBQVUdjWHU5QlJ0anl3UmNoUGtHdFJ1OUJVWkx5d2Vzc1FFRm1TZTlCVDV2endjallQMEg5N2U1QkhJL3h3Ym5CUjBFaStlNUJ2SjN5d2U0VVIwSHo2ZXRCUzAzcHdkNk9oVUV1eCt0Qjlsam93VFpkaGtGamV1eEJrZi9xd2FpNWZrRnFXT3hCYXdIcXdSc29nRUYyeSsxQlN6anl3UkpCUGtHY1h1OUJmUHp3d1RXQVBrR2NYdTlCU3pqeXdSSkJQa0YyeSsxQmZQend3VFdBUGtHU1dPUkJTemp5d1JKQlBrR1NXT1JCZlB6d3dUV0FQa0dtZHV0QkU4UG13U1Q1aUVIbGxlcEJFVExsd2VOUGlrRy96K3BCRThQbXdTVDVpRUhQUE90QkVUTGx3ZU5QaWtGQWRlRkJFVExsd2VOUGlrRVlyK0ZCRThQbXdTVDVpRUViUk85QjhyRHd3ZnVuUUVITlJlOUJRTy94d1p4V1FFSDE0ZTVCR3BudndRT2tTRUhPNmU1QmVlRHd3WElRU0VHY251dEI3RGZud1dCT2gwRzdadXRCMEtubHdZK2FpRUh5QnV4QlRuUG53YmNUZ2tFZE4reEJEdmJvd1EzeGdFRVJyOTVCNUorSXdXbmh4VUZpcCtKQnBJeXZ3WGhFczBGWm8rUkJUT0dwd1k1UXJVR0lhdHhCWmVDTXdaYjN6RUdlYmRaQnFQd2t3WEMyNDBFVktkUkJBS2dxd1M4VjYwR3djTkZCNUJYRndBYkY3MEdWNDg1QmxHelF3RFBiOWtIT1NNMUJiVTN2dnhybzlrRWtjOHBCR2xRT3dFZisvVUczQzhwQmZNYXZRR080LzBGWlhNWkJ5MitrUUVobkEwSzZ2KzVCdThMTFAxSFNla0VaSE81QlQ5MEZ3ZTFSYmtFWkhPNUJaQmEvd1JHYlYwRk1DTzlCTVlDL1FOQ2dnRUdLME9WQnNKTVNRWHZ6cmtHQmsrNUIyM0FGUVdHTWdrRkVBTlpCL2JzalFmc1g0a0hwdThkQnh0VXhRVEhYQUVLTXA4eEJiVTN2dnhybzlrRjFhc2xCZk1hdlFHTzQvMEZzejlCQjVCWEZ3QWJGNzBGY3pOVkJxUHdrd1hDMjQwSFBEZDVCNUorSXdXbmh4VUVYQXVSQlRPR3B3WTVRclVHQkhPVkJyalc1d1U4TW9VSE9WdTFCVVN6RndZcGVXRUhZVE9WQnU4TExQMUhTZWtFMHFlUkJUOTBGd2UxUmJrRTBxZVJCWkJhL3dSR2JWMEZwbGVWQk1ZQy9RTkNnZ0VIcDQrTkJVU3pGd1lwZVdFR21YZHhCc0pNU1FYdnpya0dkSU9WQjIzQUZRV0dNZ2tGZWpjeEIvYnNqUWZzWDRrRUdTYjVCeHRVeFFUSFhBRUtwTk1OQmJVM3Z2eHJvOWtHUjk3OUJmTWF2UUdPNC8wR0tYTWRCNUJYRndBYkY3MEYzV2N4QnFQd2t3WEMyNDBIc210UkI1SitJd1duaHhVRTBqOXBCVE9HcHdZNVFyVUdlcWR0QnJqVzV3VThNb1VHMTFPNUJDOC80UVA3VmNrSGJaL0JCQzgvNFFQN1Zja0hRWWVWQkM4LzRRUDdWY2tGK1lQQkJDOC80UUpqd2QwSEVVTzlCQzgvNFFJWVdna0dDcis1QkM4LzRRSVlXZ2tHZFBPVkJDOC80UUlZV2drRmhwc1JCOE8wcFFTVXFCVUprK01OQjhPMHBRU1VxQlVJM2RMcEJwUUVxUVg0L0JVSXBFTVZCc1lJcFFmZTFCRUt6bHNoQkxkRWxRYWkxQUVKdzljZEJMZEVsUWFpMUFFS01ncjVCTGRFbFFhaTFBRUp4RThOQlcwSXJRcTJjQlVMQUJibEJXMElyUWtpNkJVSkl5OE5CVzBJclFxMmNCVUtieU1SQlcwSXJRdmJtQkVJSWlNaEI3d3NzUXNqakFFTGo5TVpCN3dzc1FzampBRUwrZ2IxQjd3c3NRc2pqQUVMRkJNTkJEaHdvUXV5eEJVSVQ5N2hCRGh3b1FoTFFCVUtjdk1OQkRod29RdXl4QlVLQXNjUkJEaHdvUWwvL0JFSlRkTWhCRGh3b1FpZjBBRUlzNGNaQkRod29RaWYwQUVKSWJyMUJEaHdvUWlmMEFFTFhlUEJCd1BVa1FnbW9pa0g5Qy9KQndQVWtRZ21vaWtIeUJlZEJ3UFVrUWdtb2lrRUxrL0ZCd1BVa1FtYldpMEd4NWU1QndQVWtRc3VIa2tHS1V1MUJ3UFVrUXN1SGtrR20zK05Cd1BVa1FzdUhra0ZTRmZKQm9lVW9RdlVZaTBFc2d2QkJvZVVvUXZVWWkwRkhEK2RCb2VVb1F2VVlpMEZnblBGQm9lVW9RbEpIakVFRzcrNUJvZVVvUXJmNGtrSGZXKzFCb2VVb1FyZjRra0g5Nk9OQm9lVW9RcmY0a2tGMng5OUJWTDhsUWw1TnJVRmRldE5CZWxJblFwV1A1VUdmbXN0QmVsSW5RbTc4NDBFT0ZPWkJWTDhsUWw1TnJVR0REZFZCZWxJblFwV1A1VUUwcCtkQlZMOGxRbDVOclVFNUlkVkJXMElyUXRodTVVR0pzT2RCTks4cFFrbStyVUVVanROQlcwSXJRdGh1NVVGa0hlWkJOSzhwUWttK3JVRldyc3RCVzBJclFySGI0MEhNME45Qk5LOHBRa20rclVGZzc4aEJYQlFvUXJkcEFFSTVYTWRCWEJRb1FyZHBBRUtKOU1oQkp3VXNRcmRwQUVKalljZEJKd1VzUXJkcEFFSnQ4YjFCeFJRb1FyZHBBRUtqOWIxQmdRVXNRcmRwQUVJSmpPNUJZL0FvUW9WbWxFSGwrT3hCWS9Bb1FvVm1sRUhaZSs1QlFRRWxRdklPbEVHMDZPeEJRUUVsUXZJT2xFRUtzZU5CWS9Bb1FvVm1sRUhUbytOQlFRRWxRdklPbEVGRVN0bkJBUVk4UWhDcDIwRjYwTTNCZUM4M1FudmI5RUZKWDlqQkFRWThRaENwMjBGM244N0JlQzgzUW52YjlFR2JVc1BCWnpnM1FudmI5RUZ2T2MzQnZRdzhRaENwMjBFaE1lckJTcHRHUXNPS3BFRmFXZXZCU3B0R1FzT0twRUhQbTkzQk9KMUdRc09LcEVGOWFPM0JkSlZJUXA0K21rRW1uTzdCZEpWSVFwNCtta0YyanVEQmRKWklRczQrbWtGbUJNVEJ2Zkl5UWpWaUJVTHdxc1BCNENzelFwelpCRUt5WXNUQjRDc3pRcHpaQkVKNlRjUEJ2Zkl5UWpWaUJVS21UTG5CdmZJeVFtbCtCVUtwdjduQkF6Y3pRcFBZQkVKeUN1L0J6YmMwUVJVQmQwSHNtL0RCaStVeVFXVGdka0dZbmZEQnpiYzBRUlVCZDBIR0NPL0JpK1V5UVdUZ2RrSE9KTy9Cc25GUlFhUUVlVUgwdC9EQnNuRlJRYVFFZVVGMDF2REJYOGM3UXVNU2pVRWxGL0xCSzZzcFFoY3ZpMEdhYWZMQlg4YzdRdU1TalVFQmhQREJLNnNwUWhjdmkwSEQ4dkRCQldwS1FyMG5qa0hwaGZMQk93VktRcjBuamtIcGhmTEJCV3BLUXIwbmprSEQ4dkRCT3dWS1FyMG5qa0dObCtYQnpiYzBRUlVCZDBIaGxlWEJpK1V5UVdUZ2RrSHBzZVhCc25GUlFhUUVlVUdQWStmQlg4YzdRdU1TalVFY0VlZkJLNnNwUWhjdmkwSGdmK2ZCQldwS1FyMG5qa0hnZitmQk93VktRcjBuamtFa0g4TEI1TGlRUVczK0JrSnVFYmpCMDZMdFFSSWxCMElrSDhMQjA2THRRVzMrQmtKdUViakI1TGlRUVJJbEIwTDUxc0xCNUxpUVFXMytCa0w1MXNMQjA2THRRVzMrQmtKRUZjUEJEbzVpUVh3S0JrTENicm5CV2xSY1Flb09Ca0lwVDduQm9aUmlRUklvQmtLN0xjUEIrazFjUVQzeUJVTHczOFBCK2sxY1FUM3lCVUw4eDhQQkRvNWlRWHdLQmtLUE5jUEJBcFV5UWtkckJVSm03Y1BCQXBVeVFrZHJCVUxjSjduQkFwVXlRcCtIQlVKd01lWEIyeUpDUVh2enJrR2RFOHpCeGI1UVFaVVg0a0dzc05YQkhzWlFRZnNYNGtFS3FkdkJIQjlDUVVienJrSE1jZWJCMnlKQ1FYdnpya0dFb2RiQkhzWlFRZnNYNGtGbk4rL0Jjd0ptUVZKd2VrR055dkRCY3dKbVFWSndla0dDeE9YQmN3Sm1RVkp3ZWtHRW9kYkJ4bTVWUWZzWDRrSE1jZWJCLzMxR1FYdnpya0hNY2ViQmVraG1RWHZ6cmtHRW9kYkJ2NUYyUWZzWDRrSE1jZWJCR0R0dVFYdnpya0dFb2RiQkovRnZRZnNYNGtGL2RjUEJiUlI0UWZwZEJrTDJxOExCQlhaOVFkcHlCa0xmWU1QQkJYWjlRZHB5QmtJR3djTEJiUlI0UWZwZEJrSUd4N2pCTFlSOVFYcVVCa0pCNHJqQkVpRjRRY3QrQmtKc0hNUEIyUzh0UXF5UEJVS0dEcm5Cd1NRdFFqK3RCVUpFMU1QQjJTOHRRcXlQQlVJYTZ2REJIcXBGUWhEVGpVRkFmZkxCSHFwRlFoRFRqVUUzZCtmQkhxcEZRaERUalVGM244N0JYcUkyUW52YjlFRkVTdG5CK29JMlFoQ3AyMEYzbjg3QmNLd3hRbnZiOUVGRVN0bkI1M2c3UWhDcDIwRmFXZXZCUXhoQlFzT0twRUZhV2V2Qk1BNUdRc09LcEVFbW5PN0JiUkpEUXA0K21rRW1uTzdCV2doSVFwNCtta0h3MjhUQnp0b3lRb3JTQkVMdzI4VEI0T1F0UW9yU0JFSm9JdkhCM2Q5S1FzcDRqa0ZQWS9MQjNkOUtRc3A0amtIaitPUEIzZDlLUXNwNGprRzFZL0xCMWtaRlF1M25qa0cxWS9MQnd6eEtRdTNuamtHYkpNZkIwdFZaUVhONEFVTHBnTDNCMGN4WlFXRjRBVUk2NU1mQjB0VlpRWE40QVVKbzE4ZkJkN3BmUWRHRUFVTG5tc2ZCc2ZKN1FRakFBVUlBcDhmQnhFeDJRUzYwQVVLbWZjakI5TWMwUXNXckFFS1R2TWZCOU1jMFFzV3JBRUl0bHIzQkVOSTBRb1NyQUVMRXY4akJTbHcwUW5hdUFFS3FvY2pCdFZvdlFvRE9BRUxZNE1QQjNlWjNRWm5tQlVJVXpjUEJTVTk5UVpINkJVTGJSOFBCNUxpUVFXdDlCa0xLUDhmQjA2THRRVmowQVVMS1A4ZkI1TGlRUVZqMEFVTGJSOFBCMDZMdFFXdDlCa0x1TDhUQnMwVmlRYmVXQlVMRFJzVEJ3dzVjUWFsL0JVSTRrOFBCd3c1Y1FhbC9CVUw1MXJuQm1STmNRWFdaQlVMWkUvREJRSGxKUXVDcmxVRUwyKzdCUUhsSlF1Q3JsVUVvNHVIQjMzbEpRdTZybFVGQkp2REJQKzVJUWtxZ2xVSDRTUERCa2d4RVFpYzRsVUVMcmUzQkJ3QTFRV0dNZ2tFdU4rVEJndjgwUVZ1TWdrSEROTy9CQndBMVFXR01na0U5UCsvQmpqeG5RVHlraEVHb09PL0JKSHRVUVMzY2cwRmpOTy9CQmk4M1FheWpna0YyZnZEQlVPWlJRVE01ZTBGQWovREJrVEZtUVZlcWZFRTFudkhCSzZzcFFuUmRqRUdvOFBIQlg4YzdRa0ZCamtIYjhPN0JLNnNwUXRrT2swRk1RKy9CWDhjN1FxWHlsRUZwWi9EQmZSWTFRVGdsZVVFTVp2REJVVFl6UVhNQ2VVR2QxTzdCVVRZelFYTUNlVUZIWWVYQlBUWXpRWEFDZVVFQUNlM0JiUkpEUXA0K21rSFR0ZTdCa2d4RVFpYzRsVUUweHVuQlF4aEJRc09LcEVFb3NPM0JYOGM3UXFYeWxFRzFYZTNCSzZzcFF0a09rMEVYck8zQmpqeG5RVHlraEVHbTN1VEJHRHR1UVh2enJrRmVEdFhCdjVGMlFmc1g0a0hCQjhiQnNmSjdRUWpBQVVLa3JNWEI1TGlRUVZqMEFVS2tyTVhCMDZMdFFWajBBVUtGRHNmQnRWb3ZRb0RPQUVKUkRNM0JjS3d4UW52YjlFRWV0OWZCK29JMlFoQ3AyMEVkbHVQQmJSSkRRcDQrbWtIdlF1WEJrZ3hFUWljNGxVRlBVK0RCUXhoQlFzT0twRUU3Uk03QitvSTJRaENwMjBGRFBlVEJYOGM3UXFYeWxFSFE2dVBCSzZzcFF0a09rMEV5T2VUQmpqeG5RVHlraEVIRGE5dkJHRHR1UVh2enJrRjdtOHZCdjVGMlFmc1g0a0hjbEx6QnNmSjdRUWpBQVVMQk9iekI1TGlRUVZqMEFVTEJPYnpCMDZMdFFWajBBVUtobTczQnRWb3ZRb0RPQUVKdG1jUEJjS3d4UW52YjlFR0owUERCOUtGc1FYRGxla0ZqUGUvQjlLRnNRWERsZWtFVmpQSEJZd2JlUWJXY2hFSHYrTy9CWXdiZVFiV2NoRUdBeXVYQjlLRnNRWERsZWtFTWh1YkJZd2JlUWJXY2hFRWpFL0hCWXdiZVFSTExoVUZIay9EQnNMbHNRUU1mZlVITFplN0JZd2JlUVhkOGpFRVdPZS9CSlVCdFFmemNoRUh5cGUzQkpVQnRRZnpjaEVHbDB1ekJZd2JlUVhkOGpFRU5NK1RCSlVCdFFmemNoRUhBWCtQQll3YmVRWGQ4akVGeUZzUEJVdWNyUWxTWUJVS1VDTG5CQjk0clFoTzJCVUpKenNQQlV1Y3JRbFNZQlVMOHpzVEIyaUFzUWpuZ0JFSmJsY2pCTW1NdFFybllBRUkwQXNmQk1tTXRRcm5ZQUVKUmo3M0JNbU10UXJuWUFFS2hkL0xCc2RWQ1FnMmNqVUY2NVBEQnNkVkNRZzJjalVHWWNlZkJzZFZDUWcyY2pVR0JRL0xCUEo1Q1FrYTVqa0ZHOU8vQlJsOUJRcWNobFVFZ1llN0JSbDlCUXFjaGxVRTc3dVRCUmw5QlFxY2hsVUVzazhMQjdPV0JRVzJMQmtMM3ByakJEKzZCUVFHdUJrS1lTTVBCN09XQlFXMkxCa0pIamNmQjk4YUFRZHZIQVVMK3RjUEJMY21CUVQ0UkJrSWgrc1hCOThhQVFkdkhBVUk4aDd6Qjk4YUFRZHZIQVVMdUJlL0Jwc3N2UVp5WWRrRXllL0RCTlQwUFFVOVFkRUVUbWZEQnBzc3ZRWnlZZGtFTjZPN0JOVDBQUVU5UWRFRzRCKy9CY1pFeVFlN2Jka0hkbXZEQmNaRXlRZTdiZGtFS2srWEJwc3N2UVp5WWRrRW5kZVhCTlQwUFFVOVFkRUhVbE9YQmNaRXlRZTdiZGtHY2U4bkJLTmtRd052SC9rSDZLN3pCUmkyalFIUFVBMEtoVE1YQlJpMmpRQkxNQTBMeldzREJLTmtRd052SC9rR0RJc3JCS05rUXdOdkgva0dJODhYQlJpMmpRQkxNQTBKMjA4VEJHNi9Sd01lazkwR3NRZFBCUTBrcndkTG02MEVGSWNyQlEwa3J3ZExtNjBFZDlNM0JHNi9Sd01lazkwR1Y2TlBCUTBrcndkTG02MEVGbTg3Qkc2L1J3TWVrOTBFSUt0ekJXRm1Od1NyQnpVRWdnOXZCV0ZtTndTckJ6VUY0WXRMQldGbU53U3JCelVHZ2d1N0JDczREd3NpdFZVRzJ3T1RCRnpmOHdWS0liVUZkNGUzQkZ6Zjh3VktJYlVINVllWEJDczREd3NpdFZVR0hLZS9CQ3M0RHdzaXRWVUZFaU83QkZ6Zjh3VktJYlVHSEtlL0JXWFVGd24ySlMwR2dndTdCV1hVRnduMkpTMEg1WWVYQldYVUZ3bjJKUzBHY1h1L0JUOTBGd1dxU1hrRWFiKzdCdThMTFA4MFNhMEYyeSszQlQ5MEZ3V3FTWGtFK0F2REJ1OExMUDgwU2EwRTEvT1RCdThMTFA4MFNhMEdTV09UQlQ5MEZ3V3FTWGtHcnQrN0JVa1BBUUJ1ZWNFSFFTdkRCVWtQQVFCdWVjRUhIUk9YQlVrUEFRQnVlY0VHY1h1L0JHWkRqd1RjdlFVRjJ5KzNCcURYSHdTZGZSa0YyeSszQkdaRGp3VGN2UVVHY1h1L0JxRFhId1NkZlJrR1NXT1RCcURYSHdTZGZSa0dTV09UQkdaRGp3VGN2UVVGMnorTEJaK1cxd2FTd3IwRnBWZWpCalJEUndhU0VtMEdBcnVmQmpSRFJ3YVNFbTBGZmR1UEJaK1cxd2FTd3IwSFBydG5CWitXMXdhU3dyMEhaamQ3QmpSRFJ3YVNFbTBHak4rN0JYZHI1d2VGUGNVRzhrTzNCWGRyNXdlRlBjVUVWY09UQlhkcjV3ZUZQY1VHZEU4ekJKRzVRUVpVWDRrRndNZVhCT3RKQlFYdnpya0dzc05YQmZIVlFRZnNYNGtFS3FkdkJlODVCUVVienJrSE1jZWJCT3RKQlFYdnpya0dFb2RiQmZIVlFRZnNYNGtHYkpNZkJNWVZaUVhONEFVTHBnTDNCTUh4WlFXRjRBVUk2NU1mQk1ZVlpRWE40QVVJNGs4UEJJcjViUWFsL0JVTERSc1RCSXI1YlFhbC9CVUphTjhQQkpnMWNRY1R3QlVKYzZjUEJKZzFjUWNUd0JVTDUxcm5CK01KYlFYV1pCVUl1ZTduQmNSTmNRUlFOQmtJTHJlM0JaYTgwUVdHTWdrRXVOK1RCNGE0MFFWdU1na0hETk8vQlphODBRV0dNZ2tHZDFPN0JzZVV5UVhNQ2VVRU1adkRCc2VVeVFYTUNlVUZIWWVYQm5PVXlRWEFDZVVGcWIvREJ0c01EUWRScGMwRkMzTzdCdHNNRFFkUnBjMEZoYWVYQnRzTURRZFJwYzBIRE5PL0I4dlV2UVdHTWdrSE1jZWJCeGhnOVFYdnpya0VNWnZEQlBDd3VRWE1DZVVHRW9kYkJpZnhMUWZzWDRrRTY1TWZCUDQxVlFWTm9BVUxEUnNUQk1jWlhRWWh2QlVKVCtjUEJaZEZYUWYzZkJVS29SOFBCWmRGWFFmM2ZCVUlsa0xuQmd0eFhRY2I3QlVMTWNlYkI5VFFkUVh2enJrSEROTy9CMjNBRlFXR01na0hNY2ViQnNKTVNRWHZ6cmtIRE5PL0JJUklRUVdHTWdrRU1adkRCSnFjRFFYTUNlVUVNWnZEQmEwZ09RWE1DZVVHRW9kYkJJTXd0UWZzWDRrR0VvZGJCL2JzalFmc1g0a0h2UHNqQnBjTTZRWG43QUVJclhjakJ4dFV4UVRIWEFFSzJ2OFRCbHZ3OFFhOENCVUlGNk1UQnVBNDBRV2JlQkVKTlhzVEJod285UWVCMUJVTDNmOFRCa3gwMFFZTlNCVUxJcnNQQmh3bzlRZUIxQlVJbzBjUEJreDAwUVlOU0JVSmtGYnJCSmhJOVFjV05CVUxQUWJyQkNDUTBRUnRwQlVJUzlPM0J5eWI5d2I5a1BFR3VadVBCTTNJRXdxenNPMEc0Yk83Qk0zSUV3cXpzTzBFRjd1TEJ5eWI5d2I5a1BFRjJ5KzNCUU5UNHdaSGVQRUZzeGVMQlFOVDR3WkhlUEVHY1h1L0JUeWI5d1ZoV1BFR2NYdS9CRUdFRXduYTNPMEdjWHUvQlFOVDR3WkhlUEVGMnkrM0JaQmEvd1kvYlIwR2NYdS9CWkJhL3dZL2JSMEdTV09UQlpCYS93WS9iUjBIeGJ1TEI1aTJ3d2NydHMwRUt5T0hCNWkyd3djcnRzMEZrcDlqQjVpMnd3Y3J0czBHY1h1L0JUOTBGd2JlNFlVR2NYdS9CWkJhL3dkd0JTMEUrQXZEQnU4TExQeG81YmtIUVN2REJVa1BBUUdqRWMwRmJ2ZTdCVDkwRndlMVJia0ZidmU3QlpCYS93UkdiVjBIK1lPL0J1OExMUDFIU2VrR1FxZS9CTVlDL1FOQ2dnRUdUTWUvQnRobmp3WGNoUkVGb0V1L0IyY2JHd1dneVNrRkJXZS9CVmlEOXdUR1JQVUUrVisvQnpkcjR3VE11UGtGSVhlL0IzRmtFd3FwalBFRy9pdTdCRldQaHdmZ0xUMEVRK08zQlVTekZ3WXBlV0VGblJlL0JMUXI5d2JVZlFrSHJPKy9CRlBQNHdiZ0pRMEZlV08vQmwvUUV3cFRUUDBHUldlL0JERUFGd295dlBVSE1idTdCUFNjRnd1MzdPMEhmbHVQQlBTY0Z3dTM3TzBGbjcrUEJaWlcyd2Z1bXJFSHRuT2pCbGN6Undha3RtVUZhUSs3QjlzLzV3YzA2YjBISWtPN0JtVUQ4d1VHVWEwR2tLKy9CZTlrRHdrYWNWRUd3SysvQm8vQUZ3aW1pUjBHOGdlN0JWZkVGd2xPa1IwRlJUZVhCVmZFRndsT2tSMEhEdmVYQnJqVzV3VThNb1VFaHJ1bkIzcHJVd1k4OWtFRVpjTzdCTXFqNXdYTkdaMEZLc2U3QjMyVDh3ZjRkWkVHdk0rL0JMd1VFd25lSFVFSHpNKy9CMDAwR3dzRnZRMEZUZnU3Qk1WRUd3ak42UTBGay91VEJNVkVHd2pONlEwR2FZdTNCL2xYeHdTV1FTVUZkUk96QmFPVHd3ZHVtU1VGZFJPekIvbFh4d1NXUVNVR2FZdTNCYU9Ud3dkdW1TVUgwanVYQmFPVHd3ZHVtU1VIMGp1WEIvbFh4d1NXUVNVRlFST3JCSEpQcHdZRFdnVUdnbk9yQjBzSG93V0NKZ2tIUnV1ckJISlBwd1lEV2dVRWZKdXJCMHNIb3dXQ0pna0ZMeWVQQkhKUHB3WURXZ1VFYXErUEIwc0hvd1dDSmdrR2FVZTNCVXlUeHdSRUVTMEg4VU8zQmk3RHd3YW9oUzBHakV1M0JTR3p3d1FsbVVFR3JEKzNCU3ZEdndlMmRVRUgvdU9yQnl4VHB3VjlhZ1VITzFlckJBZUxwd1NXdmdFRkhKZXZCaUZIcXdScXJlVUhwUE92QlhnL3J3Y09OZUVFRHhPdkJidHZvd2JjdWgwRkUrdXJCMStubndUVDloMEVyb2V2QjErbm53VFQ5aDBFY0hldkJidHZvd2JjdWgwR2QyZUhCMStubndUVDloMEYyL09IQmJ0dm93YmN1aDBGcUUrVEJGTi96d2NQcFBVRjJ5KzNCRk4vendjUHBQVUdTV09UQlJ0anl3UmNoUGtGMnkrM0JSdGp5d1JjaFBrR2NYdS9CRk4vendjUHBQVUdjWHUvQlJ0anl3UmNoUGtHdFJ1L0JVWkx5d2Vzc1FFRm1TZS9CVDV2endjallQMEg5N2U3QkhJL3h3Ym5CUjBFaStlN0J2SjN5d2U0VVIwSHo2ZXZCUzAzcHdkNk9oVUV1eCt2Qjlsam93VFpkaGtGamV1ekJrZi9xd2FpNWZrRnFXT3pCYXdIcXdSc29nRUdjWHUvQmZQend3VFdBUGtGMnkrM0JTemp5d1JKQlBrR2NYdS9CU3pqeXdSSkJQa0YyeSszQmZQend3VFdBUGtHU1dPVEJTemp5d1JKQlBrR1NXT1RCZlB6d3dUV0FQa0hsbGVyQkVUTGx3ZU5QaWtHbWR1dkJFOFBtd1NUNWlFRy96K3JCRThQbXdTVDVpRUhQUE92QkVUTGx3ZU5QaWtGQWRlSEJFVExsd2VOUGlrRVlyK0hCRThQbXdTVDVpRUViUk8vQjhyRHd3ZnVuUUVITlJlL0JRTy94d1p4V1FFSDE0ZTdCR3BudndRT2tTRUhPNmU3QmVlRHd3WElRU0VHY251dkI3RGZud1dCT2gwRzdadXZCMEtubHdZK2FpRUh5QnV6QlRuUG53YmNUZ2tFZE4rekJEdmJvd1EzeGdFRmlwK0xCcEl5dndYaEVzMEVScjk3QjVKK0l3V25oeFVGWm8rVEJUT0dwd1k1UXJVR0lhdHpCWmVDTXdaYjN6RUdlYmRiQnFQd2t3WEMyNDBFVktkVEJBS2dxd1M4VjYwR3djTkhCNUJYRndBYkY3MEdWNDg3QmxHelF3RFBiOWtIT1NNM0JiVTN2dnhybzlrRWtjOHJCR2xRT3dFZisvVUczQzhyQmZNYXZRR080LzBGWlhNYkJ5MitrUUVobkEwSzZ2KzdCdThMTFAxSFNla0VaSE83QlQ5MEZ3ZTFSYmtFWkhPN0JaQmEvd1JHYlYwRk1DTy9CTVlDL1FOQ2dnRUdLME9YQnNKTVNRWHZ6cmtHQmsrN0IyM0FGUVdHTWdrRkVBTmJCL2JzalFmc1g0a0hwdThmQnh0VXhRVEhYQUVLTXA4ekJiVTN2dnhybzlrRjFhc25CZk1hdlFHTzQvMEZzejlEQjVCWEZ3QWJGNzBGY3pOWEJxUHdrd1hDMjQwSFBEZDdCNUorSXdXbmh4VUVYQXVUQlRPR3B3WTVRclVHQkhPWEJyalc1d1U4TW9VSE9WdTNCVVN6RndZcGVXRUhZVE9YQnU4TExQMUhTZWtFMHFlVEJUOTBGd2UxUmJrRTBxZVRCWkJhL3dSR2JWMEZwbGVYQk1ZQy9RTkNnZ0VIcDQrUEJVU3pGd1lwZVdFR21YZHpCc0pNU1FYdnpya0dkSU9YQjIzQUZRV0dNZ2tGZWpjekIvYnNqUWZzWDRrRUdTYjdCeHRVeFFUSFhBRUtwTk1QQmJVM3Z2eHJvOWtHUjk3L0JmTWF2UUdPNC8wR0tYTWZCNUJYRndBYkY3MEYzV2N6QnFQd2t3WEMyNDBIc210VEI1SitJd1duaHhVRTBqOXJCVE9HcHdZNVFyVUdlcWR2QnJqVzV3VThNb1VHMTFPN0JDOC80UVA3VmNrSGJaL0RCQzgvNFFQN1Zja0hRWWVYQkM4LzRRUDdWY2tGK1lQREJDOC80UUpqd2QwSEVVTy9CQzgvNFFJWVdna0dDcis3QkM4LzRRSVlXZ2tHZFBPWEJDOC80UUlZV2drRmhwc1RCOE8wcFFTVXFCVUprK01QQjhPMHBRU1VxQlVJM2RMckJwUUVxUVg0L0JVSXBFTVhCc1lJcFFmZTFCRUt6bHNqQkxkRWxRYWkxQUVKdzljZkJMZEVsUWFpMUFFS01ncjdCTGRFbFFhaTFBRUp4RThQQlcwSXJRcTJjQlVMQUJibkJXMElyUWtpNkJVSkl5OFBCVzBJclFxMmNCVUtieU1UQlcwSXJRdmJtQkVJSWlNakI3d3NzUXNqakFFTGo5TWJCN3dzc1FzampBRUwrZ2IzQjd3c3NRc2pqQUVMRkJNUEJEaHdvUXV5eEJVSVQ5N2pCRGh3b1FoTFFCVUtjdk1QQkRod29RdXl4QlVLQXNjVEJEaHdvUWwvL0JFSlRkTWpCRGh3b1FpZjBBRUlzNGNiQkRod29RaWYwQUVKSWJyM0JEaHdvUWlmMEFFTFhlUERCd1BVa1FnbW9pa0g5Qy9MQndQVWtRZ21vaWtIeUJlZkJ3UFVrUWdtb2lrRUxrL0hCd1BVa1FtYldpMEd4NWU3QndQVWtRc3VIa2tHS1V1M0J3UFVrUXN1SGtrR20zK1BCd1BVa1FzdUhra0ZTRmZMQm9lVW9RdlVZaTBFc2d2REJvZVVvUXZVWWkwRkhEK2ZCb2VVb1F2VVlpMEZnblBIQm9lVW9RbEpIakVFRzcrN0JvZVVvUXJmNGtrSGZXKzNCb2VVb1FyZjRra0g5Nk9QQm9lVW9RcmY0a2tGZGV0UEJlbEluUXBXUDVVRjJ4OS9CVkw4bFFsNU5yVUdmbXN2QmVsSW5RbTc4NDBFT0ZPYkJWTDhsUWw1TnJVR0REZFhCZWxJblFwV1A1VUUwcCtmQlZMOGxRbDVOclVFNUlkWEJXMElyUXRodTVVR0pzT2ZCTks4cFFrbStyVUVVanRQQlcwSXJRdGh1NVVGa0hlYkJOSzhwUWttK3JVRldyc3ZCVzBJclFySGI0MEhNME4vQk5LOHBRa20rclVGZzc4akJYQlFvUXJkcEFFSTVYTWZCWEJRb1FyZHBBRUtKOU1qQkp3VXNRcmRwQUVKalljZkJKd1VzUXJkcEFFSnQ4YjNCeFJRb1FyZHBBRUtqOWIzQmdRVXNRcmRwQUVJSmpPN0JZL0FvUW9WbWxFSGwrT3pCWS9Bb1FvVm1sRUhaZSs3QlFRRWxRdklPbEVHMDZPekJRUUVsUXZJT2xFRUtzZVBCWS9Bb1FvVm1sRUhUbytQQlFRRWxRdklPbEVGL0txcEJNRnV0UUt5NkRrS1o3YWRCUXF4T1FlM0NGa0ovS3FwQkVELy9RQ0YwRTBLWjdhZEI0NEVwUWJ1cUVrS1BKcDlCbnZCT1FhRUhHRUprWmFGQk1GdXRRTThFRUVKa1phRkJFRC8vUUVPK0ZFS1BKcDlCUHNZcFFXL3ZFMElXSmFOQm9ON3ZQNXppRFVJV0phTkJpTnVOUUErY0VrS20vNnRCMjR2dFAzYUJERUttLzZ0QjFrYU5RT2s2RVVJbFVwMUJzZUYrUXBtK0RVSWxVcDFCZUVaMVFsNmdFa0pBRjZaQnNlRitRcUYvREVKQUY2WkJlRVoxUW1aaEVVSVJaWjFCR1JDRFFuZEZEVUlSWloxQk9pWjlRdmlGRVVJcEtxWkJHUkNEUWpBR0RFSXBLcVpCT2laOVFySkdFRUpxSnFOQkVELy9RRHg4RkVKbTZxUkJ5NzJOUUc5VkVrSm02cVJCcTJmdlAvdWJEVUprWmFGQkJVZWpRTVIvRFVKbTZxUkIreGJIUC9BV0MwSVdKYU5CODQzSFA1QmRDMEpxSnFOQkJVZWpRTDQ5RFVLUEpwOUJtZlFnUVZybERrTDQ1NkJCN2VZZ1FXbWtEa0w0NTZCQms3Z3BRWDJ1RTBMNDU2QkI4dUpPUWJER0YwSXJFNTlCZUVaMVFwTmdFa0lWSnA5Qk9pWjlRaDVHRVVJVkpwOUJHUkNEUXBzRkRVSVJaWjFCL0FHRVFzcHZDa0lyRTU5QnZXS0FRaUtwQ2tJbFVwMUJ2V0tBUXUzb0NrSVZKcDlCL0FHRVF2QXZDa0tZdnA5Qk9xZHhRbk9ZQzBLUy9aMUJPcWR4UWhuWUMwSkl3NmhCRUQvL1FQT29FMElBbGFwQm9GNk5RR3R6RVVJQWxhcEJCZXZ0UC9lNURFSUFsYXBCV0pyRlArdzBDa0pJdzZoQkJVZWpRSFJxREVLbS82dEJLenZGUDJ2OENVSi9LcXBCQlVlalFLSTFERUlUaHFaQkxic2dRWnJVRFVLWjdhZEJQYkFnUWFhZ0RVSVRocVpCMDR3cFFhN2VFa0lUaHFaQk1yZE9RZUQyRmtJSnNLUkJlRVoxUW0rVUVVTHl3cVJCT2laOVFzaDVFRUx5d3FSQkdSQ0RRa1k1REVJSnNLUkJ2V0tBUXYzY0NVTHl3cVJCL0FHRVFwbGpDVUpBRjZaQnZXS0FRdldwQ1VJcEtxWkIvQUdFUW9Rd0NVSjFXNlZCT3FkeFFzdk1Da0t0d3FaQk9xZHhRdUNaQ2tKa1phRkJKMWVyUU0yREQwS1BKcDlCT3NRb1FXeHVFMElXSmFOQmZzN25QNWxoRFVKbTZxUkJqRmZuUC9nYURVSUFsYXBCNE5ybFAvVTRERUttLzZ0QnRudmxQM1FBREVKL0txcEJKMWVyUUtzNURrS1o3YWRCMzM4b1FiZ3BFa0lUaHFaQno0b29RYTFkRWtMNDU2QkJqcllvUVh3dEUwSVdKYU5CUVFIT1A4YkVDMEprWmFGQjJPT2tRUHJtRFVLUEpwOUJBOE1oUVk5TUQwTDQ1NkJCVjdVaFFaNExEMElUaHFaQmw0a2hRYzg3RGtLWjdhZEJwMzRoUWR3SERrSi9LcXBCMk9Pa1FOZWNERUttLzZ0QmZxN0xQNkZqQ2tJQWxhcEJyQTNNUHlLY0NrSm02cVJCVG9yTlB5VitDMElsVXAxQld6S0FRZzk2QzBLUy9aMUJlRVp4UW91UkRFSVJaWjFCbTlHRFF1MEFDMElWSnA5Qm05R0RRaExCQ2tMeXdxUkJtOUdEUXJ6MENVSXBLcVpCbTlHRFFxYkJDVUpBRjZaQld6S0FRaGM3Q2tLdHdxWkJlRVp4UWxOVEMwSjFXNlZCZUVaeFFqMkdDMEtZdnA5QmVFWnhRdWRSREVJUlpaMUJ6RGFEUWx2UkRFSWxVcDFCR1M5L1FuNUtEVUtTL1oxQjJSQndRdURVRDBLWXZwOUIyUkJ3UWpxVkQwSjFXNlZCMlJCd1FwSEpEa0t0d3FaQjJSQndRcWVXRGtKQUY2WkJHUzkvUW9ZTERFSXBLcVpCekRhRFFoV1NDMEx5d3FSQnpEYURRaXJGQzBJVkpwOUJ6RGFEUW9HUkRFSVdKYVBCaU51TlFBK2NFa0kwYlEzQ1hkNXd3cVVtVFVES3R3TENaZVJld2tpT0FVRTBiUTNDeEJSY3d0NVVoMERteFFIQ2FQdDd3b21DN0VDdHFRUENBamRFd2t5cENFRTBiUTNDcHdoR3doNXpsa0EwYlEzQ3p5SWZ3bkdaQmtCNkVBdkNmdU1Jd242a2s3MDBiUTNDQjhBUndqQ1YxcjlVZlFuQ1pGWUp3Z1lGZ1VCNkVBdkNLdFFHd21SV2tjQTBiUTNDZWZvS3dxTkFvOEI2RUF2Q3NNa0N3alFIR2NHaG93ekNJVThGd2cvMUc4RlVmUW5DdmZmK3dYMmlWc0ZVZlFuQzRhOEJ3dERNVjhIaXd3VEM2blgyd1NJL2lNR1U3dnpCWmJUcHdVRE1sTUdVN3Z6Qm5rL3p3VmpZbE1IaXd3VENCWVR0d1ZwYmlNR2JJQWZDT2h6OHdTTnllc0U4Y1FmQ3R3bjF3WW9sZE1IaXd3VENaN2Jtd1ZnSWlNR2JJQWZDWnJibXdSZWVmOEdVN3Z6Qlo3Ym13Y25ZbE1FWEwrM0JaYlRwd1daZmxzRVhMKzNCWjdibXdRbDRsc0VYTCszQm5rL3p3WDVybHNGQjlBekNmZTVzd3VYY3ZUN0Jzd2pDbm9GYXdpRmZvei9Cc3dqQ2ZlNXN3dVhjdlQ1QjlBekNub0Zhd2lGZm96ODBiUTNDZmU1c3d1WGN2VDQwYlEzQ25vRmF3aUZmb3ovQnN3akNwd2hHd3JlbHhqOUI5QXpDcHdoR3dyZWx4ajgwYlEzQ3B3aEd3cmVseGo5QjlBekN4aHdvd3EyYS9iN0Jzd2pDM2FrZXdrWVVVTURCc3dqQ3hod293cTJhL2I1QjlBekMzYWtld2tZVVVNQTBiUTNDeGh3b3dxMmEvYjQwYlEzQzNha2V3a1lVVU1EQnN3akNITW9Xd25FZzA4QkI5QXpDSE1vV3duRWcwOEEwYlEzQ0hNb1d3bkVnMDhBdTZnZkNnSDBRd3FsQklzR3VLZ3pDZ0gwUXdxbEJJc0dob3d6Q2dIMFF3cWxCSXNIaXd3VENHa3NMd3JnL1ljRmlCQW5DR2tzTHdyZy9ZY0ZVZlFuQ0drc0x3cmcvWWNFcFp3TENFM0lKd2lOeWVzR3Bwd2JDRTNJSndpTnllc0diSUFmQ0UzSUp3aU55ZXNGeENnRENLOVFId2lJL2lNSHdTZ1RDSzlRSHdpSS9pTUhpd3dUQ0s5UUh3aUkvaU1HdmUvUEJCRUVHd2xqWWxNR3YvUHZCQkVFR3dsallsTUdVN3Z6QkJFRUd3bGpZbE1FeXZPUEJCRUVHd241cmxzRXpQZXpCQkVFR3duNXJsc0VYTCszQkJFRUd3bjVybHNFMGJRM0NuUUJjd21xYmdrQTBiUTNDK2F0d3duNFVSRUEwYlEzQ3B3aEd3Z2hwa1VBMGJRM0NVV1VTd21DcDRMODBiUTNDdHBVZndwdVIvRDgwYlEzQ3BwRUx3bTZscGNDaG93ekNLOVFGd3FLK0hNRlVmUW5DMWlvQ3dpSDFWOEdiSUFmQzBqLzl3U055ZXNIaXd3VENiN2ozd1NJL2lNR1U3dnpCSTVMMHdWallsTUVYTCszQkk1TDB3WDVybHNFMGJRM0NYQjV0d3BobUFUODBiUTNDeEpSYXdoWlR0VDgwYlEzQ3B3aEd3Z3ZNMlQ4MGJRM0NuNjhud3ZSb3ZyNDBiUTNDMVF3ZXdyQktTOEEwYlEzQ2ZEb1d3a25hME1DaG93ekNIdjhQd2l5Q0ljRlVmUW5DU3RZS3dtd1pZY0diSUFmQ2tlY0l3aU55ZXNIaXd3VEMrRG9Id2lJL2lNR1U3dnpCMHFjRndsallsTUVYTCszQjBxY0Z3bjVybHNGZ0FnTEN6d3FDd25wbHpFQTBiUTNDdXdwL3dyNmx4ais3TUFQQ1NjZUZ3a201cEVBMGJRM0NMVVY0d3U5UUlrQTBiUTNDSnNCK3duMEd0ejgwYlEzQ3J3WjR3Z25nR1VBMGJRM0M3SDE1d2wvb1JiODBiUTNDeHA1endsZjR3VHcwYlEzQ0V6ZDV3dTZXWTc4MGJRM0NhR056d2xjYzBMMUI5QXpDRXpkNXd1NldZNzlCOUF6Q2FHTnp3bGNjMEwzQnN3akNFemQ1d3U2V1k3L0Jzd2pDYUdOendsY2MwTDJ6L3ZqQkw5OTl3amc1QWtGNzR2ckJNRWxmd2czdkVVR2NYdS9COXNKL3dvWmZCVUdjWHUvQjlxMWZ3cWs3R0VHaWRmekJPTkpEd2tRaUhVR2NYdS9CYjIxRHdoQ0hKMEdjWHUvQkZ5Nkd3cCtNOFVCeFhmakJNenlGd2dSQTYwQndWQWpDYk1NSXdyd2x0MEEwYlEzQ3ZCWXh3dk5lakVEdlNnVENyS2dyd2tPK0RFRTBiUTNDM2JjbHdqRW9WVUJCOUF6Qy9La3V3b1RvL3o3QnN3akMvS2t1d29Uby96N0Jzd2pDL0xVMHdoMWZvejlCOUF6Qy9MVTB3aDFmb3o4MGJRM0MvS2t1d29Uby96NDBiUTNDL0xVMHdoMWZvejgwYlEzQ2RJQW13Z0s3VDBBMGJRM0NHVVV4d3Yxa2gwQTBiUTNDYWZjdHdpWkhFejgwYlEzQzhJazB3aVZJdGo5VWZRbkMzaE1Jd2dZRmdVQndWQWpDNVlBSHdyd2x0MENFWi8zQlNWZit3V1ZMSzBIaXd3VENYUWNEd2xuSUVVSGl3d1RDNGtrRXdsbklFVUdFWi8zQlB0TDd3V1ZMSzBHY1h1L0JRTlQ0d1ErZVBFR2NYdS9Ccnd6MXdWSS9QVUY2RUF2Q3BaRUZ3bVJXa2NCNkVBdkMrYUFId29Ha2s3MTZFQXZDS29jQndqUUhHY0ZVZlFuQ3IzTDh3WDJpVnNFOGNRZkM3eVh6d1FUamNzR2JJQWZDWnJibXdZQzVlOEdiSUFmQ0pSWG13UmVlZjhHYklBZkNKUlhtd1lDNWU4RVhMKzNCSlJYbXdRbDRsc0dVN3Z6QkpSWG13Y25ZbE1IaXd3VENKUlhtd1ZnSWlNSG5SZ3JDS29jQndqUUhHY0huUmdyQ3BaRUZ3bVJXa2NEblJnckMrYUFId29Ha2s3M0Jzd2pDcjNMOHdYMmlWc0dwcHdiQzd5WHp3UVRqY3NFSVZ3YkNacmJtd1lDNWU4RUlWd2JDSlJYbXdZQzVlOEVJVndiQ0pSWG13UmVlZjhGUCtnUENKUlhtd1ZnSWlNRnVXL3ZCSlJYbXdjbllsTUh4bSt2QkpSWG13UWw0bHNIeG0rdkJaN2Jtd1FsNGxzSHhtK3ZCWmJUcHdXWmZsc0h4bSt2Qm5rL3p3WDVybHNIeG0rdkJJNUwwd1g1cmxzSHhtK3ZCMHFjRnduNXJsc0YyeSszQnJ3ejF3VkkvUFVGMnkrM0JRTlQ0d1ErZVBFRmUxUHZCUHRMN3dXVkxLMEZQK2dQQ1hRY0R3bG5JRVVIQnN3akMzaE1Jd2dZRmdVRGRpZ2ZDNVlBSHdyd2x0MERpd3dUQ0tvY0J3alFIR2NIaXd3VENwWkVGd21SV2tjRGl3d1RDK2FBSHdvR2trNzI3TUFQQ3IzTDh3WDJpVnNHN01BUEMzaE1Jd2dZRmdVQ2tKQUhDN3lYendRVGpjc0VEMUFEQ1pyYm13WUM1ZThFRDFBRENKUlhtd1lDNWU4RUQxQURDSlJYbXdSZWVmOEdVN3Z6QkpSWG13VmdJaU1GalZmREJKUlhtd2NuWWxNSG1sZURCSlJYbXdRbDRsc0htbGVEQlo3Ym13UWw0bHNIbWxlREJaYlRwd1daZmxzSG1sZURCbmsvendYNXJsc0htbGVEQkk1TDB3WDVybHNIbWxlREIwcWNGd241cmxzRnN4ZUxCcnd6MXdWSS9QVUZzeGVMQlFOVDR3UStlUEVGVXp2REJQdEw3d1dWTEswR1M3dnpCWFFjRHdsbklFVUhYQndMQzVZQUh3cndsdDBBZFlRSEN6d3FDd25wbHpFQjVqd0xDU2NlRndrbTVwRUNOYS9mQnp3cUN3bnBsekVCR3lQbkJTY2VGd2ttNXBFQzdNQVBDb25XT3dySSs0RDgwYlEzQ1RBNkV3dXdCRDc1QjlBekNOMUI3d25ITnByL0Jzd2pDTjFCN3duSE5wcjgwYlEzQ04xQjd3bkhOcHI4MGJRM0NPN3lEd2pteFNyNDBiUTNDQU90N3dqZkVuNzk1andMQ29uV093ckkrNEQ5R3lQbkJvbldPd3JJKzREODBiUTNDL1RLRXdoSEFSYjY3TUFQQ1g1ZU93blNsMlQvQnN3akNCWmw3d3JEOHJiOUI5QXpDQlpsN3dyRDhyYjgwYlEzQ0JabDd3ckQ4cmI4MGJRM0M5ZUNEd3BURWdMNDBiUTNDR0RSOHdrenNwcjk1andMQ1g1ZU93blNsMlQ5R3lQbkJYNWVPd25TbDJUL0tCK1RCT29zR3dpb3dnMEVZMmRmQnZHQUl3bHJsZzBISXNOZkJvZE1Id2ovWGhFRVpNT1RCVkJnSHdrWStna0VaZXRiQk9JVUl3bDBVaEVISlVkYkJIdmdId2tFR2hVRUI5K3pCS3lFQXduVFpkVUZSSCszQlJhNEF3cXoxYzBFUVl0YkJ4ODRId2xBcGcwSEFPZGJCckVFSHdqUWJoRUgwWCs3Qk5VWDd3UmxzYjBGRWlPN0JhbC84d1ZLSWJVRWVwZFhCdzlFQndnOUNkMEhQZk5YQnFVUUJ3dGNsZVVGbW1PVEJOVVg3d1Jsc2IwRmQ0ZTNCYWwvOHdWS0liVUVOdWUzQk5VWDd3UmxzYjBHMndPVEJhbC84d1ZLSWJVR3RtTmJCbnljUHdqeURia0dPeHRuQm55Y1B3cVVIYlVFWk1PVEJrbklPd292ZWEwRVFZdGJCNUVZTndzdWxiMEVlcGRYQkxGb0l3bnBaWVVGUkgrM0JvL01Hd2pSa1hVR2dndTdCTXVJRHdzaXRWVUg1WWVYQk11SUR3c2l0VlVHSEtlL0JNdUlEd3NpdFZVR0hLZS9CMzdjR3dnTk5SVUdnZ3U3QjM3Y0d3Z05OUlVINVllWEIzN2NHd2dOTlJVR0VaLzNCclM0SHdoRWhLa0djWHUvQlV3SUZ3aEdGT2tHQ3JRVENkWklMd3E3WkVFR3VadVBCZGhNRndraTZPa0c0Yk83QmRoTUZ3a2k2T2tHY1h1L0J0dkFYd2pqbU5VR0VaLzNCVDNvcXdzeitKRUdjWHUvQkY5OHF3bUJITVVHRVovM0JmOVFZd3U2UEowRTVmQVRDajUwYnd2bkxEa0VwakFiQ3A0WUd3amRiN1VBcGpBYkNJVVFGd2pkYjdVQ1Z3Z1hDSVVRRndqZGI3VUNRUHdEQ0lVUUZ3amRiN1VDY1h1L0JReVkzd2pobkxFR1M3dnpCUXlZM3dvZ1FJVUZPK2dQQzF1ODN3c2l6Q2tFMGJRM0NzSTg3d2docGtVQTBiUTNDNEtZN3dnTm5qRUEwYlEzQ1Mwazl3aHNLeUQ4MGJRM0NVRjg5d25BQ3RUOUI5QXpDVUY4OXduQUN0VC9Cc3dqQ1VGODl3bkFDdFQ5MHB0TEJMZ2NRd2kyWmEwR1pOTmJCc0pNVXd1NHphMEYwcHRMQkxnY1F3bnEvYmtITFRkbkJ4RVlad2g2OFpVRUFudVhCRjk4cXd0MGxRa0dUditQQlMrMG93czRRU0VGYnZlN0JReVkzd2pobkxFRmZUZVhCQzFncnd0MGxRa0dUditQQmpvNHB3czRRU0VITFRkbkJWeEFhd2g2OFpVR1pOTmJCUkYwVnd1NHphMEV6QmRMQmdDOFF3bnEvYmtIVTRPN0I5cTFmd3FrN0dFSFU0TzdCYjIxRHdoQ0hKMEhVNE83QjlzSi93b1pmQlVIVTRPN0I5c0ovd2pnNUFrSFU0TzdCOXExZndsc1ZGVUhVNE83QmIyMUR3c05nSkVGYnZlN0JReVkzd3V0QUtVRmZUZVhCQzFncndvLy9Qa0dUditQQmpvNHB3b0hxUkVITFRkbkJWeEFhd3RDVllrR1pOTmJCUkYwVndxQU5hRUV6QmRMQmdDOFF3aTJaYTBHdG1OYkJueWNQd3U5Y2EwSFU0TzdCOXNKL3d2M0F5MERVNE83QjlxMWZ3a1I1OFVEVTRPN0JiMjFEd2drSUNFRmJ2ZTdCUXlZM3dqSG9ERUZmVGVYQkMxZ3J3dGFtSWtHVHYrUEJqbzRwd3NlUktFSExUZG5CV0JBYXdoYzlSa0daTk5iQlJGMFZ3dWUwUzBFekJkTEJnQzhRd25SQVQwRjBwdExCTGdjUXduUkFUMEd0bU5iQm55Y1B3alVFVDBIVTRPN0JLamlHd3ArTThVRFU0TzdCR2pDR3dwS0c3a0RVNE83QnBmV0V3bEZvMzBCeFhmakJNenlGd3JjWjZFQ2NYdS9CRnk2R3dsSm03a0J4WGZqQndRT0V3bmY3MkVDY1h1L0JwdldFd2hGSTMwQU1lOWZCYjJrSHdscE5oRUh4dHRqQm1FZ0h3Z3dqaEVFTDB1UEJDQ0VHd2thbWdrRnFaZGZCUGNVR3dzOTVnMEZldTliQmgyRUJ3clZrZVVHTDNPdkJMbHNBd3NOc2RrRmxJZTNCOFRqOHdmQ2pjRUV1aSt6QjhUajh3ZkNqY0VFeVZPVEI4VGo4d2ZDamNFSFRsdDNCVWJnRHdxQWZmMEhBK04zQkk2NER3bVVGZjBFZWF1SEJnMUlEd2xFWmZrRWRrTjNCYTRVRHduZWNma0ZBNk9QQllZZ0J3dVo4ZVVGbVc5M0J0ZGtCd254b2VrSHpUT1RCT2RZQXd0bXhkMEZqSHVUQk9kWUF3dG14ZDBGMWt1SEJPZFlBd3RteGQwRmZBdzNDNFFLRXdtWEFhNzVmQXczQ3oxQ0V3bmIwTXI3dVNRUENMRENPd3FYZ3p6OWZBdzNDMUF0OXdxWjJuYjlmQXczQ2dIaDh3cHdzcEw5NmtBekNnSGg4d3B3c3BMOW5oZ2pDZ0hoOHdwd3NwTCs4c0FMQ0xEQ093cVhnenovdG0vckJMRENPd3FYZ3p6K1grQXJDZEtxRXdnZ2pBTDZYK0FyQ0h1U0V3dEEyckwxbnhnUENYektNd29LZW56K1grQXJDeDVxQXdrOTNYYjhLVlFQQ1h6S013b0tlbnorWCtBckNSR1NBd3ZobFo3K1Jvd3JDUkdTQXd2aGxaNzlhcGdmQ1JHU0F3dmhsWjcrQXNmN0JYektNd29LZW56OWdRVFlBQUFBS2s4aytBQUFBQUFBQUFBQUFBQUFBRFpQSk1nMlR5VDRBQUFBQURaUEp2ZzJUeVRJQUFBQUFnRVgrUVBsQklrRWdRZDNXQVFDWUlRQUFBUUFDQUFjQUFBQURBQUVBQndBREFBUUFBUUFIQUFNQUJRQUVBQWNBQlFBR0FBUUFCd0FGQUFjQUJnQUhBQWNBQ0FBR0FBY0FCd0FKQUFnQUJ3QUpBQW9BQ0FBSEFBa0FDd0FLQUFjQUN3QU1BQW9BQndBTEFBMEFEQUFIQUEwQURnQU1BQWNBRFFBUEFBNEFCd0FQQUJBQURnQUhBQThBRVFBUUFBY0FFUUFTQUJBQUJ3QVJBQk1BRWdBSEFCTUFGQUFTQUFjQUV3QVZBQlFBQndBVkFCWUFGQUFIQUJVQUZ3QVdBQWNBR0FBVUFCWUFCd0FZQUJrQUZBQUhBQmtBRWdBVUFBY0FHUUFhQUJJQUJ3QWFBQkFBRWdBSEFCb0FHd0FRQUFjQUd3QU9BQkFBQndBYkFCd0FEZ0FIQUJ3QURBQU9BQWNBSEFBZEFBd0FCd0FkQUFvQURBQUhBQjBBSGdBS0FBY0FIZ0FJQUFvQUJ3QWVBQjhBQ0FBSEFCOEFCZ0FJQUFjQUh3QWdBQVlBQndBZ0FBUUFCZ0FIQUNBQUlRQUVBQWNBSVFBQkFBUUFCd0FoQUNJQUFRQUhBQ0lBQWdBQkFBY0FJZ0FqQUFJQUJ3QWtBQmtBR0FBSEFDUUFKUUFaQUFjQUpRQWFBQmtBQndBbEFDWUFHZ0FIQUNZQUd3QWFBQWNBSmdBbkFCc0FCd0FuQUJ3QUd3QUhBQ2NBS0FBY0FBY0FLQUFkQUJ3QUJ3QW9BQ2tBSFFBSEFDa0FIZ0FkQUFjQUtRQXFBQjRBQndBcUFCOEFIZ0FIQUNvQUt3QWZBQWNBS3dBZ0FCOEFCd0FyQUN3QUlBQUhBQ3dBSVFBZ0FBY0FMQUF0QUNFQUJ3QXRBQ0lBSVFBSEFDMEFMZ0FpQUFjQUxnQWpBQ0lBQndBdUFDOEFJd0FIQURBQUpRQWtBQWNBTUFBeEFDVUFCd0F4QUNZQUpRQUhBREVBTWdBbUFBY0FNZ0FuQUNZQUJ3QXlBRE1BSndBSEFETUFLQUFuQUFjQU13QTBBQ2dBQndBMEFDa0FLQUFIQURRQU5RQXBBQWNBTlFBcUFDa0FCd0ExQURZQUtnQUhBRFlBS3dBcUFBY0FOZ0EzQUNzQUJ3QTNBQ3dBS3dBSEFEY0FPQUFzQUFjQU9BQXRBQ3dBQndBNEFEa0FMUUFIQURrQUxnQXRBQWNBT1FBNkFDNEFCd0E2QUM4QUxnQUhBRG9BT3dBdkFBY0FQQUF4QURBQUJ3QThBRDBBTVFBSEFEMEFNZ0F4QUFjQVBRQStBRElBQndBK0FETUFNZ0FIQUQ0QVB3QXpBQWNBUHdBMEFETUFCd0EvQUVBQU5BQUhBRUFBTlFBMEFBY0FRQUJCQURVQUJ3QkJBRFlBTlFBSEFFRUFRZ0EyQUFjQVFnQTNBRFlBQndCQ0FFTUFOd0FIQUVNQU9BQTNBQWNBUXdCRUFEZ0FCd0JFQURrQU9BQUhBRVFBUlFBNUFBY0FSUUE2QURrQUJ3QkZBRVlBT2dBSEFFWUFPd0E2QUFjQVJnQkhBRHNBQndCSUFFa0FTZ0FIQUVnQVN3QkpBQWNBVEFCTEFFZ0FCd0JNQUUwQVN3QUhBRTRBVFFCTUFBY0FUZ0JQQUUwQUJ3QlFBRThBVGdBSEFGQUFVUUJQQUFjQVVnQlJBRkFBQndCU0FGTUFVUUFIQUZRQVV3QlNBQWNBVkFCVkFGTUFCd0JXQUZVQVZBQUhBRllBVndCVkFBY0FXQUJYQUZZQUJ3QllBRmtBVndBSEFGb0FXUUJZQUFjQVdnQmJBRmtBQndCY0FGc0FXZ0FIQUZ3QVhRQmJBQWNBWGdCZEFGd0FCd0JlQUY4QVhRQUhBRndBWUFCZUFBY0FYQUJoQUdBQUJ3QmFBR0VBWEFBSEFGb0FZZ0JoQUFjQVdBQmlBRm9BQndCWUFHTUFZZ0FIQUZZQVl3QllBQWNBVmdCa0FHTUFCd0JVQUdRQVZnQUhBRlFBWlFCa0FBY0FVZ0JsQUZRQUJ3QlNBR1lBWlFBSEFGQUFaZ0JTQUFjQVVBQm5BR1lBQndCT0FHY0FVQUFIQUU0QWFBQm5BQWNBVEFCb0FFNEFCd0JNQUdrQWFBQUhBRWdBYVFCTUFBY0FTQUJxQUdrQUJ3QktBR29BU0FBSEFFb0Fhd0JxQUFjQVlRQnNBR0FBQndCaEFHMEFiQUFIQUdJQWJRQmhBQWNBWWdCdUFHMEFCd0JqQUc0QVlnQUhBR01BYndCdUFBY0FaQUJ2QUdNQUJ3QmtBSEFBYndBSEFHVUFjQUJrQUFjQVpRQnhBSEFBQndCbUFIRUFaUUFIQUdZQWNnQnhBQWNBWndCeUFHWUFCd0JuQUhNQWNnQUhBR2dBY3dCbkFBY0FhQUIwQUhNQUJ3QnBBSFFBYUFBSEFHa0FkUUIwQUFjQWFnQjFBR2tBQndCcUFIWUFkUUFIQUdzQWRnQnFBQWNBYXdCM0FIWUFCd0J0QUhnQWJBQUhBRzBBZVFCNEFBY0FiZ0I1QUcwQUJ3QnVBSG9BZVFBSEFHOEFlZ0J1QUFjQWJ3QjdBSG9BQndCd0FIc0Fid0FIQUhBQWZBQjdBQWNBY1FCOEFIQUFCd0J4QUgwQWZBQUhBSElBZlFCeEFBY0FjZ0IrQUgwQUJ3QnpBSDRBY2dBSEFITUFmd0IrQUFjQWRBQi9BSE1BQndCMEFJQUFmd0FIQUhVQWdBQjBBQWNBZFFDQkFJQUFCd0IyQUlFQWRRQUhBSFlBZ2dDQkFBY0Fkd0NDQUhZQUJ3QjNBSU1BZ2dBSEFIa0FoQUI0QUFjQWVRQ0ZBSVFBQndCNkFJVUFlUUFIQUhvQWhnQ0ZBQWNBZXdDR0FIb0FCd0I3QUljQWhnQUhBSHdBaHdCN0FBY0FmQUNJQUljQUJ3QjlBSWdBZkFBSEFIMEFpUUNJQUFjQWZnQ0pBSDBBQndCK0FJb0FpUUFIQUg4QWlnQitBQWNBZndDTEFJb0FCd0NBQUlzQWZ3QUhBSUFBakFDTEFBY0FnUUNNQUlBQUJ3Q0JBSTBBakFBSEFJSUFqUUNCQUFjQWdnQ09BSTBBQndDREFJNEFnZ0FIQUlNQWp3Q09BQWNBa0FDUkFKSUFCd0NRQUpNQWtRQUhBSlFBa2dDVkFBY0FsQUNRQUpJQUJ3Q1dBSlVBbHdBSEFKWUFsQUNWQUFjQW1BQ1hBSmtBQndDWUFKWUFsd0FIQUpvQW1RQ2JBQWNBbWdDWUFKa0FCd0NjQUowQW5nQUhBSndBbndDZEFBY0Fud0NnQUowQUJ3Q2ZBS0VBb0FBSEFLSUFvd0NrQUFjQW9nQ2xBS01BQndDbEFLWUFvd0FIQUtVQXB3Q21BQWNBcUFDbEFLSUFCd0NvQUtrQXBRQUhBS2tBcHdDbEFBY0FxUUNxQUtjQUJ3Q3JBS2tBcUFBSEFLc0FyQUNwQUFjQXJBQ3FBS2tBQndDc0FLMEFxZ0FIQUs0QXJBQ3JBQWNBcmdDdkFLd0FCd0N2QUswQXJBQUhBSzhBc0FDdEFBY0FzUUN2QUs0QUJ3Q3hBTElBcndBSEFMSUFzQUN2QUFjQXNnQ3pBTEFBQndDZUFMUUF0UUFIQUo0QW5RQzBBQWNBblFDMkFMUUFCd0NkQUtBQXRnQUhBTFVBdHdDNEFBY0F0UUMwQUxjQUJ3QzBBTGtBdHdBSEFMUUF0Z0M1QUFjQXVBQzZBTHNBQndDNEFMY0F1Z0FIQUxjQXZBQzZBQWNBdHdDNUFMd0FCd0M3QUwwQXZnQUhBTHNBdWdDOUFBY0F1Z0MvQUwwQUJ3QzZBTHdBdndBSEFMWUF3QUM1QUFjQXRnREJBTUFBQndEQkFNSUF3QUFIQU1FQXd3RENBQWNBb0FEQkFMWUFCd0NnQU1RQXdRQUhBTVFBd3dEQkFBY0F4QURGQU1NQUJ3Q2hBTVFBb0FBSEFLRUF4Z0RFQUFjQXhnREZBTVFBQndER0FNY0F4UUFIQU1nQXlRREtBQWNBeUFETEFNa0FCd0RMQUtZQXlRQUhBTXNBb3dDbUFBY0F6QURMQU1nQUJ3RE1BTTBBeXdBSEFNMEFvd0RMQUFjQXpRQ2tBS01BQndDNUFNNEF2QUFIQUxrQXdBRE9BQWNBd0FDUkFNNEFCd0RBQU1JQWtRQUhBTHdBendDL0FBY0F2QURPQU04QUJ3RE9BSk1BendBSEFNNEFrUUNUQUFjQTBBQ3RBTkVBQndEUUFLb0FyUUFIQU5JQXFnRFFBQWNBMGdDbkFLb0FCd0RUQUtjQTBnQUhBTk1BcGdDbkFBY0ExQUNtQU5NQUJ3RFVBTWtBcGdBSEFOVUF5UURVQUFjQTFRREtBTWtBQndEV0FNb0ExUUFIQU5ZQXlBREtBQWNBMXdESUFOWUFCd0RYQU13QXlBQUhBTkVBc0FEWUFBY0EwUUN0QUxBQUJ3RFlBTE1BMlFBSEFOZ0FzQUN6QUFjQTJnRGJBTndBQndEYUFOMEEyd0FIQU53QTNnRGZBQWNBM0FEYkFONEFCd0RmQU9BQTRRQUhBTjhBM2dEZ0FBY0E0UURpQU9NQUJ3RGhBT0FBNGdBSEFPTUFtZ0NiQUFjQTR3RGlBSm9BQndEa0FPVUE1Z0FIQU9RQTV3RGxBQWNBNkFEbkFPUUFCd0RvQU9rQTV3QUhBT29BNndEc0FBY0E2Z0R0QU9zQUJ3RHVBTzBBNmdBSEFPNEE3d0R0QUFjQTdRRHdBT3NBQndEdEFQRUE4QUFIQU84QThRRHRBQWNBN3dEeUFQRUFCd0R4QVBNQThBQUhBUEVBOUFEekFBY0E4Z0QwQVBFQUJ3RHlBUFVBOUFBSEFQUUE5Z0R6QUFjQTlBRDNBUFlBQndEMUFQY0E5QUFIQVBVQStBRDNBQWNBOXdDeEFQWUFCd0QzQUxJQXNRQUhBUGdBc2dEM0FBY0ErQUN6QUxJQUJ3RDVBT1lBK2dBSEFQa0E1QURtQUFjQSt3RGtBUGtBQndEN0FPZ0E1QUFIQVB3QStnRDlBQWNBL0FENUFQb0FCd0QrQVBrQS9BQUhBUDRBK3dENUFBY0Evd0Q5QUFBQkJ3RC9BUHdBL1FBSEFBRUIvQUQvQUFjQUFRSCtBUHdBQndBQ0FRQUJBd0VIQUFJQi93QUFBUWNBQkFIL0FBSUJCd0FFQVFFQi93QUhBQVVCK3dEK0FBY0FCUUVHQWZzQUJ3QUhBUVlCQlFFSEFBY0JDQUVHQVFjQUJnSG9BUHNBQndBR0FRa0I2QUFIQUFnQkNRRUdBUWNBQ0FFS0FRa0JCd0FKQWVrQTZBQUhBQWtCQ3dIcEFBY0FDZ0VMQVFrQkJ3QUtBUXdCQ3dFSEFBMEJEZ0VQQVFjQURRRVFBUTRCQndEdUFCQUJEUUVIQU80QTZnQVFBUWNBRUFFUkFRNEJCd0FRQVJJQkVRRUhBT29BRWdFUUFRY0E2Z0RzQUJJQkJ3QVRBZjRBQVFFSEFCTUJCUUgrQUFjQTJnQUZBUk1CQndEYUFBY0JCUUVIQUJRQkFRRUVBUWNBRkFFVEFRRUJCd0RkQUJNQkZBRUhBTjBBMmdBVEFRY0E5UUFWQVJZQkJ3RDFBUElBRlFFSEFQSUFGd0VWQVFjQThnRHZBQmNCQndEdkFCZ0JGd0VIQU84QTdnQVlBUWNBN2dBWkFSZ0JCd0R1QUEwQkdRRUhBQTBCR2dFWkFRY0FEUUVQQVJvQkJ3QVBBUnNCR2dFSEFBOEJEZ0ViQVFjQURnRWNBUnNCQndBT0FSRUJIQUVIQVBnQUZnRWRBUWNBK0FEMUFCWUJCd0N6QUIwQjJRQUhBTE1BK0FBZEFRY0FIZ0hkQUJRQkJ3QWVBUjhCM1FBSEFDQUJGQUVFQVFjQUlBRWVBUlFCQndBaEFRUUJBZ0VIQUNFQklBRUVBUWNBSWdIaUFPQUFCd0FpQVNNQjRnQUhBQ01CbWdEaUFBY0FJd0VrQVpvQUJ3QWxBZUFBM2dBSEFDVUJJZ0hnQUFjQUpnSGVBTnNBQndBbUFTVUIzZ0FIQUI4QjJ3RGRBQWNBSHdFbUFkc0FCd0FuQWM4QWt3QUhBQ2NCS0FIUEFBY0FLQUcvQU04QUJ3QW9BU2tCdndBSEFDa0J2UUMvQUFjQUtRRXFBYjBBQndBa0FaZ0FtZ0FIQUNRQkt3R1lBQWNBS3dHV0FKZ0FCd0FyQVN3QmxnQUhBQ3dCbEFDV0FBY0FMQUV0QVpRQUJ3QXRBWkFBbEFBSEFDMEJMZ0dRQUFjQUxnR1RBSkFBQndBdUFTY0Jrd0FIQUM4Qkh3RWVBUWNBTHdFd0FSOEJCd0F4QVI0QklBRUhBREVCTHdFZUFRY0FNQUVtQVI4QkJ3QXdBVElCSmdFSEFETUJJQUVoQVFjQU13RXhBU0FCQndBMEFTTUJJZ0VIQURRQk5RRWpBUWNBTlFFa0FTTUJCd0ExQVRZQkpBRUhBRGNCSWdFbEFRY0FOd0UwQVNJQkJ3QTJBU3NCSkFFSEFEWUJPQUVyQVFjQU1nRWxBU1lCQndBeUFUY0JKUUVIQURrQktBRW5BUWNBT1FFNkFTZ0JCd0E2QVNrQktBRUhBRG9CT3dFcEFRY0FQQUVuQVM0QkJ3QThBVGtCSndFSEFEc0JLZ0VwQVFjQU93RTlBU29CQndBNEFTd0JLd0VIQURnQlBnRXNBUWNBUGdFdEFTd0JCd0ErQVQ4QkxRRUhBRDhCTGdFdEFRY0FQd0U4QVM0QkJ3QkFBVEFCTHdFSEFFQUJRUUV3QVFjQVFnRXZBVEVCQndCQ0FVQUJMd0VIQUVFQk1nRXdBUWNBUVFGREFUSUJCd0JFQVRFQk13RUhBRVFCUWdFeEFRY0FRd0UzQVRJQkJ3QkRBVVVCTndFSEFFWUJOUUUwQVFjQVJnRkhBVFVCQndCSEFUWUJOUUVIQUVjQlNBRTJBUWNBUlFFMEFUY0JCd0JGQVVZQk5BRUhBRWdCT0FFMkFRY0FTQUZKQVRnQkJ3QkpBVDRCT0FFSEFFa0JTZ0UrQVFjQVN3RTZBVGtCQndCTEFVd0JPZ0VIQUV3Qk93RTZBUWNBVEFGTkFUc0JCd0JPQVRrQlBBRUhBRTRCU3dFNUFRY0FUUUU5QVRzQkJ3Qk5BVThCUFFFSEFGQUJQQUUvQVFjQVVBRk9BVHdCQndCS0FUOEJQZ0VIQUVvQlVBRS9BUWNBVVFGU0FWTUJCd0JSQVZRQlVnRUhBRlFCSFFGU0FRY0FWQUhaQUIwQkJ3QlZBVlFCVVFFSEFGVUJWZ0ZVQVFjQVZnSFpBRlFCQndCV0FkZ0EyUUFIQUZjQlZnRlZBUWNBVndGWUFWWUJCd0JZQWRnQVZnRUhBRmdCMFFEWUFBY0FXUUZZQVZjQkJ3QlpBVm9CV0FFSEFGb0IwUUJZQVFjQVdnSFFBTkVBQndCYkFWb0JXUUVIQUZzQlhBRmFBUWNBWEFIUUFGb0JCd0JjQWRJQTBBQUhBTWNBWEFGYkFRY0F4d0JkQVZ3QkJ3QmRBZElBWEFFSEFGMEIwd0RTQUFjQXhnQmRBY2NBQndER0FGNEJYUUVIQUY0QjB3QmRBUWNBWGdIVUFOTUFCd0NoQUY0QnhnQUhBS0VBWHdGZUFRY0FYd0hVQUY0QkJ3QmZBZFVBMUFBSEFKOEFYd0doQUFjQW53QmdBVjhCQndCZ0FkVUFYd0VIQUdBQjFnRFZBQWNBbkFCZ0FaOEFCd0NjQUdFQllBRUhBR0VCMWdCZ0FRY0FZUUhYQU5ZQUJ3QlRBV0lCWXdFSEFGTUJVZ0ZpQVFjQVVnRVdBV0lCQndCU0FSMEJGZ0VIQUdNQlpBRmxBUWNBWXdGaUFXUUJCd0JpQVJVQlpBRUhBR0lCRmdFVkFRY0FaUUZtQVdjQkJ3QmxBV1FCWmdFSEFHUUJGd0ZtQVFjQVpBRVZBUmNCQndCbkFXZ0JEQUVIQUdjQlpnRm9BUWNBWmdFWUFXZ0JCd0JtQVJjQkdBRUhBQXdCYVFFTEFRY0FEQUZvQVdrQkJ3Qm9BUmtCYVFFSEFHZ0JHQUVaQVFjQUN3RnFBZWtBQndBTEFXa0JhZ0VIQUdrQkdnRnFBUWNBYVFFWkFSb0JCd0RwQUdzQjV3QUhBT2tBYWdGckFRY0FhZ0ViQVdzQkJ3QnFBUm9CR3dFSEFPY0FiQUhsQUFjQTV3QnJBV3dCQndCckFSd0JiQUVIQUdzQkd3RWNBUWNBYlFGdUFXOEJCd0J0QVhBQmJnRUhBSEVCY0FGdEFRY0FjUUZ5QVhBQkJ3QnpBWElCY1FFSEFITUJkQUZ5QVFjQWRRRjJBWGNCQndCMUFYZ0JkZ0VIQUhrQmVnRjdBUWNBZVFGOEFYb0JCd0J3QVgwQmJnRUhBSEFCZmdGOUFRY0FjZ0YrQVhBQkJ3QnlBWDhCZmdFSEFIUUJmd0Z5QVFjQWRBR0FBWDhCQndCNEFZRUJkZ0VIQUhnQmdnR0JBUWNBZkFHREFYb0JCd0I4QVlRQmd3RUhBSFFCZHdGMkFRY0FkQUZ6QVhjQkJ3Q0FBWFlCZ1FFSEFJQUJkQUYyQVFjQWhRR0dBWWNCQndDRkFZZ0JoZ0VIQUljQmlRR0tBUWNBaHdHR0FZa0JCd0NMQVl3QmpRRUhBSXNCamdHTUFRY0FqUUdQQVpBQkJ3Q05BWXdCandFSEFJc0JrUUdTQVFjQWl3R05BWkVCQndDTkFaTUJrUUVIQUkwQmtBR1RBUWNBa2dHVUFaVUJCd0NTQVpFQmxBRUhBSGtCbEFGOEFRY0FlUUdWQVpRQkJ3Q1JBWllCbEFFSEFKRUJrd0dXQVFjQWZBR1dBWVFCQndCOEFaUUJsZ0VIQUpjQmVRRjdBUWNBbHdHVkFYa0JCd0NZQVpVQmx3RUhBSmdCa2dHVkFRY0FtUUdTQVpnQkJ3Q1pBWXNCa2dFSEFKb0Jpd0daQVFjQW1nR09BWXNCQndDYkFad0JuUUVIQUpzQm5nR2NBUWNBbndHZUFac0JCd0NmQWFBQm5nRUhBS0VCYndGdUFRY0FvUUdpQVc4QkJ3Q0tBYUVCaHdFSEFJb0JvZ0doQVFjQW93RnVBWDBCQndDakFhRUJiZ0VIQUljQm93R0ZBUWNBaHdHaEFhTUJCd0NjQWFRQnBRRUhBSndCbmdHa0FRY0FqZ0drQVl3QkJ3Q09BYVVCcEFFSEFLUUJvQUdtQVFjQXBBR2VBYUFCQndDa0FZOEJqQUVIQUtRQnBnR1BBUWNBbkFHbkFaMEJCd0NjQWFVQnB3RUhBSTRCcHdHbEFRY0FqZ0dhQWFjQkJ3Q29BWHNCZWdFSEFLZ0JxUUY3QVFjQWRRR29BWGdCQndCMUFha0JxQUVIQUtvQmVnR0RBUWNBcWdHb0FYb0JCd0I0QWFvQmdnRUhBSGdCcUFHcUFRY0Fxd0Y3QWFrQkJ3Q3JBWmNCZXdFSEFLd0Jsd0dyQVFjQXJBR1lBWmNCQndDc0Faa0JtQUVIQUt3QnJRR1pBUWNBclFHYUFaa0JCd0N0QWE0Qm1nRUhBSnNCcndHd0FRY0Ftd0dkQWE4QkJ3Q0dBYThCaVFFSEFJWUJzQUd2QVFjQXNRR2JBYkFCQndDeEFaOEJtd0VIQUxFQmhnR0lBUWNBc1FHd0FZWUJCd0N2QWFjQnNnRUhBSzhCblFHbkFRY0FyZ0duQVpvQkJ3Q3VBYklCcHdFSEFMTUJ0QUcxQVFjQXN3RzJBYlFCQndDMkFiY0J0QUVIQUxZQnVBRzNBUWNBdUFHNUFiY0JCd0M0QWJvQnVRRUhBTHNCdkFHOUFRY0F1d0crQWJ3QkJ3Qy9BY0FCd1FFSEFMOEJ3Z0hBQVFjQXd3RzJBYk1CQndEREFjUUJ0Z0VIQU1RQnVBRzJBUWNBeEFIRkFiZ0JCd0RGQWJvQnVBRUhBTVVCeGdHNkFRY0F4d0crQWJzQkJ3REhBY2dCdmdFSEFNa0J3Z0cvQVFjQXlRSEtBY0lCQndDOUFib0J1d0VIQUwwQnVRRzZBUWNBdXdIR0FjY0JCd0M3QWJvQnhnRUhBTXNCekFITkFRY0F5d0hPQWN3QkJ3RFBBYzBCMEFFSEFNOEJ5d0hOQVFjQTBRSFNBZE1CQndEUkFkUUIwZ0VIQU5VQjB3SFdBUWNBMVFIUkFkTUJCd0RYQWRJQjJBRUhBTmNCMHdIU0FRY0EyUUhUQWRjQkJ3RFpBZFlCMHdFSEFOb0IyQUhiQVFjQTJnSFhBZGdCQndEYUFjQUJ3Z0VIQU5vQjJ3SEFBUWNBM0FIWEFkb0JCd0RjQWRrQjF3RUhBTndCd2dIS0FRY0EzQUhhQWNJQkJ3REFBZDBCd1FFSEFNQUIyd0hkQVFjQTJ3SGVBZDBCQndEYkFkZ0IzZ0VIQU5nQjN3SGVBUWNBMkFIU0FkOEJCd0RTQWVBQjN3RUhBTklCMUFIZ0FRY0E0UUhpQWVNQkJ3RGhBZVFCNGdFSEFPUUI1UUhpQVFjQTVBSG1BZVVCQndDMUFlY0Jzd0VIQUxVQjZBSG5BUWNBNXdIUUFjMEJCd0RuQWVnQjBBRUhBTE1CNlFIREFRY0Fzd0huQWVrQkJ3RHBBYzBCekFFSEFPa0I1d0hOQVFjQTZnSGhBZXNCQndEcUFlUUI0UUVIQU9vQjFBSFJBUWNBNmdIckFkUUJCd0RtQWVvQjdBRUhBT1lCNUFIcUFRY0ExUUhxQWRFQkJ3RFZBZXdCNmdFSEFPMEI0UUhqQVFjQTdRSHJBZUVCQndEdEFkUUI2d0VIQU8wQjRBSFVBUWNBd1FIdUFiOEJCd0RCQWU4QjdnRUhBTzRCdkFHK0FRY0E3Z0h2QWJ3QkJ3Qy9BZkFCeVFFSEFMOEI3Z0h3QVFjQThBRytBY2dCQndEd0FlNEJ2Z0VIQU1FQjhRSHZBUWNBd1FIZEFmRUJCd0RkQWZJQjhRRUhBTjBCM2dIeUFRY0Ezd0h5QWQ0QkJ3RGZBZk1COGdFSEFPQUI4d0hmQVFjQTRBSDBBZk1CQndEMUFlSUI5Z0VIQVBVQjR3SGlBUWNBOVFITEFjOEJCd0QxQWZZQnl3RUhBT0lCOXdIMkFRY0E0Z0hsQWZjQkJ3RExBZmNCemdFSEFNc0I5Z0gzQVFjQTdRSDFBZmdCQndEdEFlTUI5UUVIQU8wQjlBSGdBUWNBN1FINEFmUUJCd0Q1QWZvQit3RUhBUGtCL0FINkFRY0EvUUg3QWY0QkJ3RDlBZmtCK3dFSEFQOEJBQUlCQWdjQS93RUNBZ0FDQndBREFnRUNCQUlIQUFNQy93RUJBZ2NBQlFJRUFnWUNCd0FGQWdNQ0JBSUhBQWNDQmdJSUFnY0FCd0lGQWdZQ0J3QUpBZ29DQ3dJSEFBa0NEQUlLQWdjQUJ3SU5BZzRDQndBSEFnZ0NEUUlIQUF3Q0RRSUtBZ2NBREFJT0FnMENCd0FQQWc0Q0RBSUhBQThDRUFJT0FnY0FFUUlNQWdrQ0J3QVJBZzhDREFJSEFCSUNFUUlKQWdjQUVnSVRBaEVDQndBVUFna0NDd0lIQUJRQ0VnSUpBZ2NBRlFJV0FoY0NCd0FWQWhnQ0ZnSUhBQmdDR1FJV0FnY0FHQUlhQWhrQ0J3QWJBaGdDRlFJSEFCc0NIQUlZQWdjQUhBSWFBaGdDQndBY0FoMENHZ0lIQUI0Q0h3SWdBZ2NBSGdJaEFoOENCd0FoQWlJQ0h3SUhBQ0VDSXdJaUFnY0FKQUloQWg0Q0J3QWtBaVVDSVFJSEFDVUNJd0loQWdjQUpRSW1BaU1DQndBbkFpVUNKQUlIQUNjQ0tBSWxBZ2NBS0FJbUFpVUNCd0FvQWlrQ0pnSUhBQ29DS0FJbkFnY0FLZ0lyQWlnQ0J3QXJBaWtDS0FJSEFDc0NMQUlwQWdjQUxRSXJBaW9DQndBdEFpNENLd0lIQUM0Q0xBSXJBZ2NBTGdJdkFpd0NCd0F3QWk0Q0xRSUhBREFDTVFJdUFnY0FNUUl2QWk0Q0J3QXhBaklDTHdJSEFETUNNUUl3QWdjQU13STBBakVDQndBMEFqSUNNUUlIQURRQ05RSXlBZ2NBTmdJMEFqTUNCd0EyQWpjQ05BSUhBRGNDTlFJMEFnY0FOd0k0QWpVQ0J3RDZBVGtDK3dFSEFQb0JPZ0k1QWdjQSt3RTdBdjRCQndEN0FUa0NPd0lIQUFBQ1BBSUJBZ2NBQUFJOUFqd0NCd0FCQWo0Q0JBSUhBQUVDUEFJK0FnY0FCQUkvQWdZQ0J3QUVBajRDUHdJSEFBWUNRQUlJQWdjQUJnSS9Ba0FDQndBSUFrRUNEUUlIQUFnQ1FBSkJBZ2NBRFFKQ0Fnb0NCd0FOQWtFQ1FnSUhBQW9DUXdJTEFnY0FDZ0pDQWtNQ0J3QUxBa1FDRkFJSEFBc0NRd0pFQWdjQUdnSkZBaGtDQndBYUFrWUNSUUlIQUVZQ09nSkZBZ2NBUmdJNUFqb0NCd0FkQWtZQ0dnSUhBQjBDUndKR0FnY0FSd0k1QWtZQ0J3QkhBanNDT1FJSEFDTUNTQUlpQWdjQUl3SkpBa2dDQndCSkFqMENTQUlIQUVrQ1BBSTlBZ2NBSmdKSkFpTUNCd0FtQWtvQ1NRSUhBRW9DUEFKSkFnY0FTZ0krQWp3Q0J3QXBBa29DSmdJSEFDa0NTd0pLQWdjQVN3SStBa29DQndCTEFqOENQZ0lIQUN3Q1N3SXBBZ2NBTEFKTUFrc0NCd0JNQWo4Q1N3SUhBRXdDUUFJL0FnY0FMd0pNQWl3Q0J3QXZBazBDVEFJSEFFMENRQUpNQWdjQVRRSkJBa0FDQndBeUFrMENMd0lIQURJQ1RnSk5BZ2NBVGdKQkFrMENCd0JPQWtJQ1FRSUhBRFVDVGdJeUFnY0FOUUpQQWs0Q0J3QlBBa0lDVGdJSEFFOENRd0pDQWdjQU9BSlBBalVDQndBNEFsQUNUd0lIQUZBQ1F3SlBBZ2NBVUFKRUFrTUNCd0JSQWxJQ1V3SUhBRkVDVkFKU0FnY0FWQUw4QVZJQ0J3QlVBdm9CL0FFSEFGVUNWQUpSQWdjQVZRSldBbFFDQndCV0F2b0JWQUlIQUZZQ09nTDZBUWNBVndKV0FsVUNCd0JYQWxnQ1ZnSUhBRmdDT2dKV0FnY0FXQUpGQWpvQ0J3QlpBbGdDVndJSEFGa0NXZ0pZQWdjQVdnSkZBbGdDQndCYUFoa0NSUUlIQUZzQ1dnSlpBZ2NBV3dKY0Fsb0NCd0JjQWhrQ1dnSUhBRndDRmdJWkFnY0FYUUpjQWxzQ0J3QmRBbDRDWEFJSEFGNENGZ0pjQWdjQVhnSVhBaFlDQndENUFWOEMvQUVIQVBrQllBSmZBZ2NBWUFKaEFsOENCd0JnQW1JQ1lRSUhBUDBCWUFMNUFRY0EvUUZqQW1BQ0J3QmpBbUlDWUFJSEFHTUNaQUppQWdjQVpRSmZBbUVDQndCbEFtWUNYd0lIQVB3QlpnSlNBZ2NBL0FGZkFtWUNCd0JuQW1nQ2FRSUhBR2NDYWdKb0FnY0FhZ0lDQW1nQ0J3QnFBZ0FDQWdJSEFHc0NJQUlmQWdjQWF3SnNBaUFDQndCdEFtc0NiZ0lIQUcwQ2JBSnJBZ2NBYndJZkFpSUNCd0J2QW1zQ0h3SUhBRzRDYndKd0FnY0FiZ0pyQW04Q0J3Qm5BbkVDYWdJSEFHY0NjZ0p4QWdjQUFBSnhBajBDQndBQUFtb0NjUUlIQUVnQ2J3SWlBZ2NBU0FKekFtOENCd0IwQW04Q2N3SUhBSFFDY0FKdkFnY0FQUUp6QWtnQ0J3QTlBbkVDY3dJSEFISUNjd0p4QWdjQWNnSjBBbk1DQndCMUFtZ0NBZ0lIQUhVQ2RnSm9BZ2NBZHdKNEFua0NCd0IzQW5vQ2VBSUhBSG9DZXdKNEFnY0FlZ0o4QW5zQ0J3QjlBdjhCQXdJSEFIMENmZ0wvQVFjQWZ3SURBZ1VDQndCL0FuMENBd0lIQUg0Q0FnTC9BUWNBZmdKMUFnSUNCd0NBQWdVQ0J3SUhBSUFDZndJRkFnY0FnUUlIQWc0Q0J3Q0JBb0FDQndJSEFJSUNEZ0lRQWdjQWdnS0JBZzRDQndDREFvSUNFQUlIQUlNQ2hBS0NBZ2NBaFFJUkFoTUNCd0NGQW9ZQ0VRSUhBSVlDRHdJUkFnY0FoZ0tIQWc4Q0J3Q0hBaEFDRHdJSEFJY0Nnd0lRQWdjQWlBSjlBbjhDQndDSUFva0NmUUlIQUlrQ2ZnSjlBZ2NBaVFLS0FuNENCd0NMQW44Q2dBSUhBSXNDaUFKL0FnY0FqQUtBQW9FQ0J3Q01Bb3NDZ0FJSEFJMENnUUtDQWdjQWpRS01Bb0VDQndDT0FvSUNoQUlIQUk0Q2pRS0NBZ2NBandLRUFvTUNCd0NQQW80Q2hBSUhBSkFDZ3dLSEFnY0FrQUtQQW9NQ0J3Q1JBb2NDaGdJSEFKRUNrQUtIQWdjQWtnS0dBb1VDQndDU0FwRUNoZ0lIQUpNQ2hRSVRBZ2NBa3dLU0FvVUNCd0NVQWhNQ0VnSUhBSlFDa3dJVEFnY0FsUUlTQWhRQ0J3Q1ZBcFFDRWdJSEFKWUNGQUpFQWdjQWxnS1ZBaFFDQndDWEFrUUNVQUlIQUpjQ2xnSkVBZ2NBbUFKN0Fud0NCd0NZQXBrQ2V3SUhBSm9DZkFKNkFnY0FtZ0tZQW53Q0J3Q2JBbm9DZHdJSEFKc0NtZ0o2QWdjQW5BSjJBblVDQndDY0FwMENkZ0lIQUlvQ2RRSitBZ2NBaWdLY0FuVUNCd0NlQW9rQ2lBSUhBSjRDbndLSkFnY0Fud0tLQW9rQ0J3Q2ZBcUFDaWdJSEFLRUNpQUtMQWdjQW9RS2VBb2dDQndDZ0Fwd0NpZ0lIQUtBQ29nS2NBZ2NBb3dLTEFvd0NCd0NqQXFFQ2l3SUhBS1FDakFLTkFnY0FwQUtqQW93Q0J3Q2xBbzBDamdJSEFLVUNwQUtOQWdjQXBnS09BbzhDQndDbUFxVUNqZ0lIQUtjQ2p3S1FBZ2NBcHdLbUFvOENCd0NvQXBBQ2tRSUhBS2dDcHdLUUFnY0FxUUtSQXBJQ0J3Q3BBcWdDa1FJSEFLb0NrZ0tUQWdjQXFnS3BBcElDQndDckFwTUNsQUlIQUtzQ3FnS1RBZ2NBckFLVUFwVUNCd0NzQXFzQ2xBSUhBSzBDbFFLV0FnY0FyUUtzQXBVQ0J3Q3VBcFlDbHdJSEFLNENyUUtXQWdjQXJ3S1pBcGdDQndDdkFyQUNtUUlIQUxFQ21BS2FBZ2NBc1FLdkFwZ0NCd0N5QXBvQ213SUhBTElDc1FLYUFnY0FvZ0tkQXB3Q0J3Q2lBck1DblFJSEFMUUNVd0pTQWdjQXRBSzFBbE1DQndDMkFyVUN0QUlIQUxZQ3R3SzFBZ2NBdUFKUkFsTUNCd0M0QXJrQ1VRSUhBTG9DWFFKYkFnY0F1Z0s3QWwwQ0J3QzhBbHNDV1FJSEFMd0N1Z0piQWdjQXZRSlJBcmtDQndDOUFsVUNVUUlIQUx3Q1Z3SytBZ2NBdkFKWkFsY0NCd0MrQWxVQ3ZRSUhBTDRDVndKVkFnY0F0UUs0QWxNQ0J3QzFBcjhDdUFJSEFMY0N2d0sxQWdjQXR3TEFBcjhDQndDNEFzRUN1UUlIQUxnQ3dnTEJBZ2NBdWdMREFyc0NCd0M2QXNRQ3d3SUhBTHdDeEFLNkFnY0F2QUxGQXNRQ0J3QzlBc0VDeGdJSEFMMEN1UUxCQWdjQXZBTEhBc1VDQndDOEFyNEN4d0lIQUw0Q3hnTEhBZ2NBdmdLOUFzWUNCd0MvQXNJQ3VBSUhBTDhDeUFMQ0FnY0F3QUxJQXI4Q0J3REFBc2tDeUFJSEFNb0N5d0xNQWdjQXlnTE5Bc3NDQndET0Fzd0N6d0lIQU00Q3lnTE1BZ2NBelFMUUFzc0NCd0ROQXRFQzBBSUhBTklDendMVEFnY0EwZ0xPQXM4Q0J3RFJBdFFDMEFJSEFORUMxUUxVQWdjQTFnTFRBdGNDQndEV0F0SUMwd0lIQU5nQzJRTGFBZ2NBMkFMYkF0a0NCd0RWQXRvQzFBSUhBTlVDMkFMYUFnY0EzQUxLQXM0Q0J3RGNBdDBDeWdJSEFOMEN6UUxLQWdjQTNRTGVBczBDQndEZkFzNEMwZ0lIQU44QzNBTE9BZ2NBNEFMU0F0WUNCd0RnQXQ4QzBnSUhBTjRDMFFMTkFnY0EzZ0xoQXRFQ0J3RGlBdHNDMkFJSEFPSUM0d0xiQWdjQTVBTFlBdFVDQndEa0F1SUMyQUlIQU9FQzFRTFJBZ2NBNFFMa0F0VUNCd0RsQXVJQzVBSUhBT1VDNWdMaUFnY0E1Z0xqQXVJQ0J3RG1BdWNDNHdJSEFPZ0Nld0xwQWdjQTZBSjRBbnNDQndEcUFuZ0M2QUlIQU9vQ2VRSjRBZ2NBNndLWkFyQUNCd0RyQXV3Q21RSUhBT3dDZXdLWkFnY0E3QUxwQW5zQ0J3RG1BdWtDN0FJSEFPWUM1UUxwQWdjQTZ3TG1BdXdDQndEckF1Y0M1Z0lIQU8wQzdnTHZBZ2NBN1FMd0F1NENCd0R3QXVrQzdnSUhBUEFDNkFMcEFnY0FhUUx3QXUwQ0J3QnBBdkVDOEFJSEFQRUM2QUx3QWdjQThRTHFBdWdDQndCb0F2RUNhUUlIQUdnQzhnTHhBZ2NBOGdMcUF2RUNCd0R5QW5rQzZnSUhBSFlDOGdKb0FnY0FkZ0x6QXZJQ0J3RHpBbmtDOGdJSEFQTUNkd0o1QWdjQW5RTHpBbllDQndDZEF2UUM4d0lIQVBRQ2R3THpBZ2NBOUFLYkFuY0NCd0N6QXZRQ25RSUhBTE1DOVFMMEFnY0E5UUtiQXZRQ0J3RDFBcklDbXdJSEFPOEM1QUxoQWdjQTd3THVBdVFDQndEa0F1a0M1UUlIQU9RQzdnTHBBZ2NBWXdMMkFtUUNCd0JqQXZjQzlnSUhBUGNDN3dMMkFnY0E5d0x0QXU4Q0J3RDlBZmNDWXdJSEFQMEIrQUwzQWdjQStBTHRBdmNDQndENEFta0M3UUlIQVA0QitBTDlBUWNBL2dINUF2Z0NCd0Q1QW1rQytBSUhBUGtDWndKcEFnY0FPd0w1QXY0QkJ3QTdBdm9DK1FJSEFQb0Nad0w1QWdjQStnSnlBbWNDQndCSEF2b0NPd0lIQUVjQyt3TDZBZ2NBK3dKeUF2b0NCd0Q3QW5RQ2NnSUhBQjBDK3dKSEFnY0FIUUw4QXZzQ0J3RDhBblFDK3dJSEFQd0NjQUowQWdjQUhBTDhBaDBDQndBY0F2MEMvQUlIQVAwQ2NBTDhBZ2NBL1FKdUFuQUNCd0FiQXYwQ0hBSUhBQnNDL2dMOUFnY0EvZ0p1QXYwQ0J3RCtBbTBDYmdJSEFQOENBQU1CQXdjQS93TGNBZ0FEQndBQ0E5d0Mvd0lIQUFJRDNRTGNBZ2NBOWdMaEFnTURCd0QyQXU4QzRRSUhBQVFENFFMZUFnY0FCQU1EQStFQ0J3RGRBZ1FEM2dJSEFOMENBZ01FQXdjQUJRUDJBZ01EQndBRkF3WUQ5Z0lIQUFjREF3TUVBd2NBQndNRkF3TURCd0FJQXdRREFnTUhBQWdEQndNRUF3Y0FDUU1DQS84Q0J3QUpBd2dEQWdNSEFBb0Qvd0lCQXdjQUNnTUpBLzhDQndBTEEySUNaQUlIQUFzRERBTmlBZ2NBREFOaEFtSUNCd0FNQXcwRFlRSUhBQXNEOWdJR0F3Y0FDd05rQXZZQ0J3QU9BdzBEREFNSEFBNEREd01OQXdjQUVBTU1Bd3NEQndBUUF3NEREQU1IQUJFREN3TUdBd2NBRVFNUUF3c0RCd0FTQXdZREJRTUhBQklERVFNR0F3Y0FFd01GQXdjREJ3QVRBeElEQlFNSEFCUURCd01JQXdjQUZBTVRBd2NEQndBVkF3Z0RDUU1IQUJVREZBTUlBd2NBRmdNSkF3b0RCd0FXQXhVRENRTUhBQUFEQ2dNQkF3Y0FBQU1XQXdvREJ3RGZBZ0FEM0FJSEFOOENGd01BQXdjQUdBTVBBdzREQndBWUF4a0REd01IQUJvRERnTVFBd2NBR2dNWUF3NERCd0FiQXhBREVRTUhBQnNER2dNUUF3Y0FIQU1SQXhJREJ3QWNBeHNERVFNSEFCMERFZ01UQXdjQUhRTWNBeElEQndBZUF4TURGQU1IQUI0REhRTVRBd2NBSHdNVUF4VURCd0FmQXg0REZBTUhBQ0FERlFNV0F3Y0FJQU1mQXhVREJ3QWhBeFlEQUFNSEFDRURJQU1XQXdjQUlnTUFBeGNEQndBaUF5RURBQU1IQUNNREpBTWxBd2NBSXdNbUF5UURCd0RnQWhjRDN3SUhBT0FDSWdNWEF3Y0FKd01OQXc4REJ3QW5BeWdERFFNSEFDa0REd01aQXdjQUtRTW5BdzhEQndBb0EyRUNEUU1IQUNnRFpRSmhBZ2NBS2dObUFtVUNCd0FxQXlzRFpnSUhBQ3dES3dNcUF3Y0FMQU10QXlzREJ3QW5BMlVDS0FNSEFDY0RLZ05sQWdjQUtRTXFBeWNEQndBcEF5d0RLZ01IQUdZQ3RBSlNBZ2NBWmdJckE3UUNCd0FyQTdZQ3RBSUhBQ3NETFFPMkFnY0FMZ1BQQXN3Q0J3QXVBeThEendJSEFEQUR6QUxMQWdjQU1BTXVBOHdDQndBdkE5TUN6d0lIQUM4RE1RUFRBZ2NBTVFQWEF0TUNCd0F4QXpJRDF3SUhBRE1EeXdMUUFnY0FNd013QThzQ0J3QTBBOUFDMUFJSEFEUURNd1BRQWdjQU5RUGFBdGtDQndBMUF6WUQyZ0lIQURZRDFBTGFBZ2NBTmdNMEE5UUNCd0EzQXk4RExnTUhBRGNET0FNdkF3Y0FPUU11QXpBREJ3QTVBemNETGdNSEFEZ0RNUU12QXdjQU9BTTZBekVEQndBN0F6QURNd01IQURzRE9RTXdBd2NBT2dNeUF6RURCd0E2QXp3RE1nTUhBRDBETXdNMEF3Y0FQUU03QXpNREJ3QStBelFETmdNSEFENERQUU0wQXdjQVB3TTJBelVEQndBL0F6NEROZ01IQUVBRHhnTEJBZ2NBUUFOQkE4WUNCd0JDQThFQ3dnSUhBRUlEUUFQQkFnY0FRUVBIQXNZQ0J3QkJBME1EeHdJSEFFTUR4UUxIQWdjQVF3TkVBOFVDQndCRUE4UUN4UUlIQUVRRFJRUEVBZ2NBUlFQREFzUUNCd0JGQTBZRHd3SUhBRWNEd2dMSUFnY0FSd05DQThJQ0J3QklBOGdDeVFJSEFFZ0RSd1BJQWdjQVNRTkJBMEFEQndCSkEwb0RRUU1IQUVzRFFBTkNBd2NBU3dOSkEwQURCd0JLQTBNRFFRTUhBRW9EVEFOREF3Y0FUUU5DQTBjREJ3Qk5BMHNEUWdNSEFFd0RSQU5EQXdjQVRBTk9BMFFEQndCT0EwVURSQU1IQUU0RFR3TkZBd2NBVHdOR0EwVURCd0JQQTFBRFJnTUhBRkVEUndOSUF3Y0FVUU5OQTBjREJ3QlNBMU1EVkFNSEFGSURWUU5UQXdjQVZnTlVBMWNEQndCV0ExSURWQU1IQUZnRFdRTmFBd2NBV0FOYkExa0RCd0JjQTFvRFhRTUhBRndEV0FOYUF3Y0FYZ05kQTE4REJ3QmVBMXdEWFFNSEFHQURZUU5pQXdjQVlBTmpBMkVEQndCa0EySURaUU1IQUdRRFlBTmlBd2NBWmdObkExVURCd0JtQTJnRFp3TUhBR2tEYUFObUF3Y0FhUU5xQTJnREJ3Qm9BMnNEWndNSEFHZ0RiQU5yQXdjQWFnTnNBMmdEQndCcUEyMERiQU1IQUc0RGJ3TndBd2NBYmdOeEEyOERCd0J5QTNFRGJnTUhBSElEY3dOeEF3Y0FjUU4wQTI4REJ3QnhBM1VEZEFNSEFITURkUU54QXdjQWN3TjJBM1VEQndCM0F5WURJd01IQUhjRGVBTW1Bd2NBZVFONEEzY0RCd0I1QTNvRGVBTUhBSHNEVlFOU0F3Y0Fld05tQTFVREJ3QjhBMllEZXdNSEFId0RhUU5tQXdjQWZRTlNBMVlEQndCOUEzc0RVZ01IQUg0RGV3TjlBd2NBZmdOOEEzc0RCd0IvQTFzRFdBTUhBSDhEZ0FOYkF3Y0FnUU9BQTM4REJ3Q0JBNElEZ0FNSEFJTURXQU5jQXdjQWd3Ti9BMWdEQndDRUEzOERnd01IQUlRRGdRTi9Bd2NBaFFOY0ExNERCd0NGQTRNRFhBTUhBSVlEZ3dPRkF3Y0FoZ09FQTRNREJ3Q0hBMk1EWUFNSEFJY0RpQU5qQXdjQWlRT0lBNGNEQndDSkE0b0RpQU1IQUlzRFlBTmtBd2NBaXdPSEEyQURCd0NNQTRjRGl3TUhBSXdEaVFPSEF3Y0FKUU9OQTQ0REJ3QWxBNDhEalFNSEFJOERrQU9OQXdjQWp3T1JBNUFEQndDUkE1SURrQU1IQUpFRGF3T1NBd2NBYXdPVEE1SURCd0JyQTJ3RGt3TUhBR3dEbEFPVEF3Y0FiQU50QTVRREJ3QnRBNVVEbEFNSEFHMERsZ09WQXdjQWxnT1hBNVVEQndDV0Eza0Rsd01IQUhrRG1BT1hBd2NBZVFOM0E1Z0RCd0IzQTVrRG1BTUhBSGNESXdPWkF3Y0FJd09PQTVrREJ3QWpBeVVEamdNSEFKb0RqUU9RQXdjQW1nT2JBNDBEQndDY0E1c0RtZ01IQUp3RG5RT2JBd2NBbXdPT0E0MERCd0NiQTU0RGpnTUhBSjBEbmdPYkF3Y0FuUU9mQTU0REJ3Q2VBNWtEamdNSEFKNERvQU9aQXdjQW53T2dBNTREQndDZkEzUURvQU1IQUtBRG1BT1pBd2NBb0FPaEE1Z0RCd0IwQTZFRG9BTUhBSFFEZFFPaEF3Y0FvUU9YQTVnREJ3Q2hBNklEbHdNSEFIVURvZ09oQXdjQWRRTjJBNklEQndDaUE1VURsd01IQUtJRG93T1ZBd2NBZGdPakE2SURCd0IyQTNNRG93TUhBS01EbEFPVkF3Y0Fvd09rQTVRREJ3QnpBNlFEb3dNSEFITURjZ09rQXdjQXBBT1RBNVFEQndDa0E2VURrd01IQUhJRHBRT2tBd2NBY2dOdUE2VURCd0NsQTVJRGt3TUhBS1VEcGdPU0F3Y0FiZ09tQTZVREJ3QnVBM0FEcGdNSEFLWURrQU9TQXdjQXBnT2FBNUFEQndCd0E1b0RwZ01IQUhBRG5BT2FBd2NBcHdPb0E2a0RCd0NuQTZvRHFBTUhBS3NEcWdPbkF3Y0Fxd09zQTZvREJ3Q3RBNndEcXdNSEFLMERyZ09zQXdjQXJ3T29BN0FEQndDdkE2a0RxQU1IQUswRHNRT3VBd2NBclFPeUE3RURCd0N6QTdFRHNnTUhBTE1EdEFPeEF3Y0F0UU8wQTdNREJ3QzFBN1lEdEFNSEFLOER0Z08xQXdjQXJ3T3dBN1lEQndCbEE3Y0R1QU1IQUdVRFlnTzNBd2NBWWdPNUE3Y0RCd0JpQTJFRHVRTUhBR0VEdWdPNUF3Y0FZUU5qQTdvREJ3QmpBN3NEdWdNSEFHTURpQU83QXdjQWlBTzhBN3NEQndDSUE0b0R2QU1IQUlvRHZRTzhBd2NBaWdPSkE3MERCd0NKQTc0RHZRTUhBSWtEakFPK0F3Y0FqQU8vQTc0REJ3Q01BNHNEdndNSEFJc0R3QU8vQXdjQWl3TmtBOEFEQndCa0E3Z0R3QU1IQUdRRFpRTzRBd2NBd1FPM0E3a0RCd0RCQThJRHR3TUhBRjhEd2dQQkF3Y0FYd1BEQThJREJ3RENBN2dEdHdNSEFNSUR4QU80QXdjQXd3UEVBOElEQndEREE4VUR4QU1IQU1RRHdBTzRBd2NBeEFQR0E4QURCd0RGQThZRHhBTUhBTVVEeHdQR0F3Y0F4Z08vQThBREJ3REdBOGdEdndNSEFNY0R5QVBHQXdjQXh3UEpBOGdEQndESUE3NER2d01IQU1nRHlnTytBd2NBeVFQS0E4Z0RCd0RKQThzRHlnTUhBTW9EdlFPK0F3Y0F5Z1BNQTcwREJ3RExBOHdEeWdNSEFNc0R6UVBNQXdjQXpBTzhBNzBEQndETUE4NER2QU1IQU0wRHpnUE1Bd2NBelFPR0E4NERCd0RPQTdzRHZBTUhBTTREendPN0F3Y0FoZ1BQQTg0REJ3Q0dBNFVEendNSEFNOER1Z083QXdjQXp3UFFBN29EQndDRkE5QUR6d01IQUlVRFhnUFFBd2NBMEFPNUE3b0RCd0RRQThFRHVRTUhBRjREd1FQUUF3Y0FYZ05mQThFREJ3RFJBOUlEMHdNSEFORUQxQVBTQXdjQTFRUFdBOWNEQndEVkE5Z0QxZ01IQU5nRDJRUGFBd2NBMkFQVkE5a0RCd0RiQTlZRDNBTUhBTnNEMXdQV0F3Y0EyZ1BkQTk0REJ3RGFBOWtEM1FNSEFONEQwZ1BVQXdjQTNnUGRBOUlEQndEZkE5d0Q0QU1IQU44RDJ3UGNBd2NBMHdQZ0E5RURCd0RUQTk4RDRBTUhBT0VEeXdQaUF3Y0E0UU9DQThzREJ3REZBK01ENUFNSEFNVURXUVBqQXdjQVd3UGpBMWtEQndCYkErVUQ0d01IQU1VRDVnUEhBd2NBeFFQa0ErWURCd0NBQStVRFd3TUhBSUFENXdQbEF3Y0FnZ1BuQTRBREJ3Q0NBK0VENXdNSEFNY0Q2QVBKQXdjQXh3UG1BK2dEQndESkErSUR5d01IQU1rRDZBUGlBd2NBMHdQcEErb0RCd0RUQTlJRDZRTUhBT3NENlFQc0F3Y0E2d1BxQStrREJ3RFZBKzBEN2dNSEFOVUQxd1B0QXdjQTd3UHRBL0FEQndEdkErNEQ3UU1IQU80RDJRUFZBd2NBN2dQeEE5a0RCd0R5QSs0RDd3TUhBUElEOFFQdUF3Y0Eyd1B0QTljREJ3RGJBL01EN1FNSEFQQUQ4d1AwQXdjQThBUHRBL01EQndEeEE5MEQyUU1IQVBFRDlRUGRBd2NBOWdQeEEvSURCd0QyQS9VRDhRTUhBUFVEMGdQZEF3Y0E5UVBwQTlJREJ3RHNBL1VEOWdNSEFPd0Q2UVAxQXdjQTN3UHpBOXNEQndEZkEvY0Q4d01IQVBRRDl3UDRBd2NBOUFQekEvY0RCd0RUQS9jRDN3TUhBTk1ENmdQM0F3Y0ErQVBxQStzREJ3RDRBL2NENmdNSEFPRUQrUVA2QXdjQTRRUGlBL2tEQndDb0Eva0RzQU1IQUtnRCtnUDVBd2NBNUFQN0Evd0RCd0RrQStNRCt3TUhBTEVEK3dPdUF3Y0FzUVA4QS9zREJ3RGxBL3NENHdNSEFPVUQvUVA3QXdjQXJnUDlBNndEQndDdUEvc0QvUU1IQU9RRC9nUG1Bd2NBNUFQOEEvNERCd0MwQS93RHNRTUhBTFFEL2dQOEF3Y0E1d1A5QStVREJ3RG5BLzhEL1FNSEFLd0Qvd09xQXdjQXJBUDlBLzhEQndEaEEvOEQ1d01IQU9FRCtnUC9Bd2NBcWdQNkE2Z0RCd0NxQS84RCtnTUhBT1lEQUFUb0F3Y0E1Z1ArQXdBRUJ3QzJBLzREdEFNSEFMWURBQVQrQXdjQTZBUDVBK0lEQndEb0F3QUUrUU1IQUxBREFBUzJBd2NBc0FQNUF3QUVCd0FCQkFJRUF3UUhBQUVFQkFRQ0JBY0FCQVFGQkFJRUJ3QUVCQVlFQlFRSEFBWUVCd1FGQkFjQUJnUUlCQWNFQndBQkJBa0VDZ1FIQUFFRUF3UUpCQWNBQ3dRSEJBZ0VCd0FMQkF3RUJ3UUhBQXNFRFFRTUJBY0FDd1FPQkEwRUJ3QU9CQThFRFFRSEFBNEVFQVFQQkFjQUVBUUpCQThFQndBUUJBb0VDUVFIQUtjREVRUVNCQWNBcHdPcEF4RUVCd0NyQXhJRUV3UUhBS3NEcHdNU0JBY0FyUU1UQkJRRUJ3Q3RBNnNERXdRSEFLOERFUVNwQXdjQXJ3TVZCQkVFQndDdEF4WUVzZ01IQUswREZBUVdCQWNBc3dNV0JCY0VCd0N6QTdJREZnUUhBTFVERndRWUJBY0F0UU96QXhjRUJ3Q3ZBeGdFRlFRSEFLOER0UU1ZQkFjQUF3UVpCQm9FQndBREJBSUVHUVFIQUJzRUdRUWNCQWNBR3dRYUJCa0VCd0FDQkIwRUdRUUhBQUlFQlFRZEJBY0FIQVFkQkI0RUJ3QWNCQmtFSFFRSEFBVUVId1FkQkFjQUJRUUhCQjhFQndBZUJCOEVJQVFIQUI0RUhRUWZCQWNBR3dRaEJCb0VCd0FiQkNJRUlRUUhBQU1FSVFRSkJBY0FBd1FhQkNFRUJ3QWpCQjhFSkFRSEFDTUVJQVFmQkFjQURBUWZCQWNFQndBTUJDUUVId1FIQUF3RUpRUWtCQWNBREFRTkJDVUVCd0FqQkNVRUpnUUhBQ01FSkFRbEJBY0FEUVFuQkNVRUJ3QU5CQThFSndRSEFDWUVKd1FvQkFjQUpnUWxCQ2NFQndBUEJDRUVKd1FIQUE4RUNRUWhCQWNBS0FRaEJDSUVCd0FvQkNjRUlRUUhBQklFS1FRcUJBY0FFZ1FSQkNrRUJ3QjlBeWtFZmdNSEFIMERLZ1FwQkFjQUV3UXFCQ3NFQndBVEJCSUVLZ1FIQUZZREtnUjlBd2NBVmdNckJDb0VCd0FVQkNzRUxBUUhBQlFFRXdRckJBY0FWd01yQkZZREJ3QlhBeXdFS3dRSEFIb0RLUVF0QkFjQWVnTitBeWtFQndBVkJDa0VFUVFIQUJVRUxRUXBCQWNBVndNdUJDd0VCd0JYQXlRRExnUUhBQlFFTGdRV0JBY0FGQVFzQkM0RUJ3QVhCQzRFTHdRSEFCY0VGZ1F1QkFjQUpnTXVCQ1FEQndBbUF5OEVMZ1FIQUJnRUx3UXdCQWNBR0FRWEJDOEVCd0I0QXk4RUpnTUhBSGdETUFRdkJBY0FGUVF3QkMwRUJ3QVZCQmdFTUFRSEFIb0RNQVI0QXdjQWVnTXRCREFFQndBeEJESUVNd1FIQURFRU5BUXlCQWNBTlFRMkJEY0VCd0ExQkRnRU5nUUhBRGtFTndRNkJBY0FPUVExQkRjRUJ3QTdCRGtFT2dRSEFEc0VQQVE1QkFjQU5nUThCRHNFQndBMkJEZ0VQQVFIQURjRVBRUStCQWNBTndRMkJEMEVCd0E2QkQ0RVB3UUhBRG9FTndRK0JBY0FRQVE2QkQ4RUJ3QkFCRHNFT2dRSEFEMEVPd1JBQkFjQVBRUTJCRHNFQndBK0JFRUVRZ1FIQUQ0RVBRUkJCQWNBUHdSQ0JFTUVCd0EvQkQ0RVFnUUhBRVFFUHdSREJBY0FSQVJBQkQ4RUJ3QkJCRUFFUkFRSEFFRUVQUVJBQkFjQU5RUkZCRGdFQndBMUJFWUVSUVFIQUVVRVBBUTRCQWNBUlFSSEJEd0VCd0JIQkRrRVBBUUhBRWNFU0FRNUJBY0FPUVJHQkRVRUJ3QTVCRWdFUmdRSEFFWUVTUVJGQkFjQVJnUktCRWtFQndBekJFb0VNUVFIQURNRVNRUktCQWNBUlFSTEJFY0VCd0JGQkVrRVN3UUhBRElFU1FRekJBY0FNZ1JMQkVrRUJ3QkhCRXdFU0FRSEFFY0VTd1JNQkFjQU5BUkxCRElFQndBMEJFd0VTd1FIQUVnRVNnUkdCQWNBU0FSTUJFb0VCd0F4QkV3RU5BUUhBREVFU2dSTUJBY0FUUVJPQkU4RUJ3Qk5CRkFFVGdRSEFGRUVVZ1JUQkFjQVVRUlVCRklFQndCVEJGVUVWZ1FIQUZNRVVnUlZCQWNBVlFSWEJGWUVCd0JWQkZnRVZ3UUhBRmdFVVFSWEJBY0FXQVJVQkZFRUJ3QlpCRk1FV2dRSEFGa0VVUVJUQkFjQVdnUldCRnNFQndCYUJGTUVWZ1FIQUZZRVhBUmJCQWNBVmdSWEJGd0VCd0JYQkZrRVhBUUhBRmNFVVFSWkJBY0FRUVJhQkVJRUJ3QkJCRmtFV2dRSEFFSUVXd1JEQkFjQVFnUmFCRnNFQndCYkJFUUVRd1FIQUZzRVhBUkVCQWNBWEFSQkJFUUVCd0JjQkZrRVFRUUhBRjBFVWdSVUJBY0FYUVJlQkZJRUJ3QllCRjBFVkFRSEFGZ0VYd1JkQkFjQVZRUmZCRmdFQndCVkJHQUVYd1FIQUY0RVZRUlNCQWNBWGdSZ0JGVUVCd0JoQkY0RVhRUUhBR0VFWWdSZUJBY0FZZ1JQQkU0RUJ3QmlCR0VFVHdRSEFHTUVYUVJmQkFjQVl3UmhCRjBFQndCaEJFMEVUd1FIQUdFRVl3Uk5CQWNBWkFSZkJHQUVCd0JrQkdNRVh3UUhBR01FVUFSTkJBY0FZd1JrQkZBRUJ3QmlCR0FFWGdRSEFHSUVaQVJnQkFjQVpBUk9CRkFFQndCa0JHSUVUZ1FIQUdVRVpnUm5CQWNBWlFSb0JHWUVCd0JwQkdvRWF3UUhBR2tFYkFScUJBY0Fhd1J0Qkc0RUJ3QnJCR29FYlFRSEFHMEVid1J1QkFjQWJRUndCRzhFQndCd0JHa0Vid1FIQUhBRWJBUnBCQWNBY1FSckJISUVCd0J4QkdrRWF3UUhBSElFYmdSekJBY0FjZ1JyQkc0RUJ3QnVCSFFFY3dRSEFHNEVid1IwQkFjQWJ3UnhCSFFFQndCdkJHa0VjUVFIQUhVRWNnUjJCQWNBZFFSeEJISUVCd0IyQkhNRWR3UUhBSFlFY2dSekJBY0Fjd1I0QkhjRUJ3QnpCSFFFZUFRSEFIUUVkUVI0QkFjQWRBUnhCSFVFQndCNUJHb0ViQVFIQUhrRWVnUnFCQWNBY0FSNUJHd0VCd0J3QkhzRWVRUUhBRzBFZXdSd0JBY0FiUVI4QkhzRUJ3QjZCRzBFYWdRSEFIb0VmQVJ0QkFjQWZRUjZCSGtFQndCOUJINEVlZ1FIQUg0RVp3Um1CQWNBZmdSOUJHY0VCd0IvQkhrRWV3UUhBSDhFZlFSNUJBY0FmUVJsQkdjRUJ3QjlCSDhFWlFRSEFJQUVld1I4QkFjQWdBUi9CSHNFQndCL0JHZ0VaUVFIQUg4RWdBUm9CQWNBZmdSOEJIb0VCd0IrQklBRWZBUUhBSUFFWmdSb0JBY0FnQVIrQkdZRUJ3Q0JCSUlFZ3dRSEFJRUVoQVNDQkFjQWhRU0dCSWNFQndDRkJJZ0VoZ1FIQUlrRWh3U0tCQWNBaVFTRkJJY0VCd0NMQklrRWlnUUhBSXNFakFTSkJBY0FoZ1NNQklzRUJ3Q0dCSWdFakFRSEFJY0VqUVNPQkFjQWh3U0dCSTBFQndDS0JJNEVqd1FIQUlvRWh3U09CQWNBa0FTS0JJOEVCd0NRQklzRWlnUUhBSTBFaXdTUUJBY0FqUVNHQklzRUJ3Q09CSFVFZGdRSEFJNEVqUVIxQkFjQWp3UjJCSGNFQndDUEJJNEVkZ1FIQUhnRWp3UjNCQWNBZUFTUUJJOEVCd0IxQkpBRWVBUUhBSFVFalFTUUJBY0FoUVNSQklnRUJ3Q0ZCSklFa1FRSEFKRUVqQVNJQkFjQWtRU1RCSXdFQndDVEJJa0VqQVFIQUpNRWxBU0pCQWNBaVFTU0JJVUVCd0NKQkpRRWtnUUhBSklFbFFTUkJBY0FrZ1NXQkpVRUJ3Q0RCSllFZ1FRSEFJTUVsUVNXQkFjQWtRU1hCSk1FQndDUkJKVUVsd1FIQUlJRWxRU0RCQWNBZ2dTWEJKVUVCd0NUQkpnRWxBUUhBSk1FbHdTWUJBY0FoQVNYQklJRUJ3Q0VCSmdFbHdRSEFKUUVsZ1NTQkFjQWxBU1lCSllFQndDQkJKZ0VoQVFIQUlFRWxnU1lCQWNBbVFTYUJKc0VCd0NaQkp3RW1nUUhBSnNFblFTZUJBY0Ftd1NhQkowRUJ3Q2ZCS0FFb1FRSEFKOEVvZ1NnQkFjQW9RU2NCSmtFQndDaEJLQUVuQVFIQUtNRW9nU2ZCQWNBb3dTa0JLSUVCd0NsQktZRXB3UUhBS1VFcUFTbUJBY0FwZ1NwQktjRUJ3Q21CS29FcVFRSEFLb0Vxd1NwQkFjQXFnU3NCS3NFQndDc0JLMEVxd1FIQUt3RXJnU3RCQWNBcmdTdkJLMEVCd0N1QkxBRXJ3UUhBTEVFcEFTakJBY0FzUVN5QktRRUJ3Q3dCTE1FcndRSEFMQUV0QVN6QkFjQXRRU3lCTEVFQndDMUJMWUVzZ1FIQUxNRXR3UzRCQWNBc3dTMEJMY0VCd0M1QkxVRXVnUUhBTGtFdGdTMUJBY0F1QVM3Qkx3RUJ3QzRCTGNFdXdRSEFMMEV1Z1MrQkFjQXZRUzVCTG9FQndDL0JMNEV3QVFIQUw4RXZRUytCQWNBdkFUQkJNSUVCd0M4QkxzRXdRUUhBTU1Fd0FURUJBY0F3d1MvQk1BRUJ3REZCTVFFeGdRSEFNVUV3d1RFQkFjQXdnVEhCTWdFQndEQ0JNRUV4d1FIQU1rRW13VEtCQWNBeVFTWkJKc0VCd0RLQko0RXl3UUhBTW9FbXdTZUJBY0F6QVNoQk0wRUJ3RE1CSjhFb1FRSEFNMEVtUVRKQkFjQXpRU2hCSmtFQndET0JKOEV6QVFIQU00RW93U2ZCQWNBendTbkJOQUVCd0RQQktVRXB3UUhBS2NFMFFUUUJBY0Fwd1NwQk5FRUJ3Q3BCTklFMFFRSEFLa0Vxd1RTQkFjQXF3VFRCTklFQndDckJLMEUwd1FIQUswRTFBVFRCQWNBclFTdkJOUUVCd0RWQktNRXpnUUhBTlVFc1FTakJBY0Fyd1RXQk5RRUJ3Q3ZCTE1FMWdRSEFOY0VzUVRWQkFjQTF3UzFCTEVFQndEV0JMZ0UyQVFIQU5ZRXN3UzRCQWNBdWdUWEJOa0VCd0M2QkxVRTF3UUhBTmdFdkFUYUJBY0EyQVM0Qkx3RUJ3QytCTmtFMndRSEFMNEV1Z1RaQkFjQXdBVGJCTndFQndEQUJMNEUyd1FIQU5vRXdnVGRCQWNBMmdTOEJNSUVCd0RFQk53RTNnUUhBTVFFd0FUY0JBY0F4Z1RlQk44RUJ3REdCTVFFM2dRSEFOMEV5QVRnQkFjQTNRVENCTWdFQndEaEJNb0U0Z1FIQU9FRXlRVEtCQWNBNGdUTEJPTUVCd0RpQk1vRXl3UUhBT1FFelFUbEJBY0E1QVRNQk0wRUJ3RGxCTWtFNFFRSEFPVUV6UVRKQkFjQTVnVE1CT1FFQndEbUJNNEV6QVFIQU9jRTBBVG9CQWNBNXdUUEJOQUVCd0RRQk9rRTZBUUhBTkFFMFFUcEJBY0EwUVRxQk9rRUJ3RFJCTklFNmdRSEFOSUU2d1RxQkFjQTBnVFRCT3NFQndEVEJPd0U2d1FIQU5NRTFBVHNCQWNBN1FUT0JPWUVCd0R0Qk5VRXpnUUhBTlFFN2dUc0JBY0ExQVRXQk80RUJ3RHZCTlVFN1FRSEFPOEUxd1RWQkFjQTdnVFlCUEFFQndEdUJOWUUyQVFIQU5rRTd3VHhCQWNBMlFUWEJPOEVCd0R3Qk5vRThnUUhBUEFFMkFUYUJBY0Eyd1R4QlBNRUJ3RGJCTmtFOFFRSEFOd0U4d1QwQkFjQTNBVGJCUE1FQndEeUJOMEU5UVFIQVBJRTJnVGRCQWNBM2dUMEJQWUVCd0RlQk53RTlBUUhBTjhFOWdUM0JBY0Ezd1RlQlBZRUJ3RDFCT0FFK0FRSEFQVUUzUVRnQkFjQStRVGlCUG9FQndENUJPRUU0Z1FIQVBvRTR3VDdCQWNBK2dUaUJPTUVCd0Q4Qk9VRS9RUUhBUHdFNUFUbEJBY0EvUVRoQlBrRUJ3RDlCT1VFNFFRSEFQNEU1QVQ4QkFjQS9nVG1CT1FFQndEL0JPZ0VBQVVIQVA4RTV3VG9CQWNBNkFRQkJRQUZCd0RvQk9rRUFRVUhBT2tFQWdVQkJRY0E2UVRxQkFJRkJ3RHFCQU1GQWdVSEFPb0U2d1FEQlFjQTZ3UUVCUU1GQndEckJPd0VCQVVIQUFVRjVnVCtCQWNBQlFYdEJPWUVCd0RzQkFZRkJBVUhBT3dFN2dRR0JRY0FCd1h0QkFVRkJ3QUhCZThFN1FRSEFBWUY4QVFJQlFjQUJnWHVCUEFFQndEeEJBY0ZDUVVIQVBFRTd3UUhCUWNBQ0FYeUJBb0ZCd0FJQmZBRThnUUhBUE1FQ1FVTEJRY0E4d1R4QkFrRkJ3RDBCQXNGREFVSEFQUUU4d1FMQlFjQUNnWDFCQTBGQndBS0JmSUU5UVFIQVBZRURBVU9CUWNBOWdUMEJBd0ZCd0QzQkE0RkR3VUhBUGNFOWdRT0JRY0FEUVg0QkJBRkJ3QU5CZlVFK0FRSEFCRUZFZ1VUQlFjQUVRVVVCUklGQndBVUJSVUZFZ1VIQUJRRkZnVVZCUWNBRndVWUJSa0ZCd0FYQlJvRkdBVUhBQllGR1FVVkJRY0FGZ1VYQlJrRkJ3QWFCUnNGR0FVSEFCb0ZIQVViQlFjQUhRVWVCUjhGQndBZEJTQUZIZ1VIQUNFRkhRVWZCUWNBSVFVaUJSMEZCd0FqQlNJRklRVUhBQ01GSkFVaUJRY0FKUVVrQlNNRkJ3QWxCU1lGSkFVSEFDY0ZKZ1VsQlFjQUp3VW9CU1lGQndBY0JTa0ZHd1VIQUJ3RktnVXBCUWNBS3dVb0JTY0ZCd0FyQlN3RktBVUhBQ29GTFFVcEJRY0FLZ1V1QlMwRkJ3QXZCU3NGTUFVSEFDOEZMQVVyQlFjQUxRVXhCVElGQndBdEJTNEZNUVVIQURNRk1BVTBCUWNBTXdVdkJUQUZCd0F5QlRVRk5nVUhBRElGTVFVMUJRY0FOZ1UzQlRnRkJ3QTJCVFVGTndVSEFEa0ZOQVU2QlFjQU9RVXpCVFFGQndBN0JUd0ZQUVVIQURzRlBnVThCUWNBT0FVK0JUc0ZCd0E0QlRjRlBnVUhBRDhGT2dWQUJRY0FQd1U1QlRvRkJ3QTNCVUVGUGdVSEFEY0ZRZ1ZCQlFjQVFnWERCRUVGQndCQ0JiOEV3d1FIQURVRlFnVTNCUWNBTlFWREJVSUZCd0JEQmI4RVFnVUhBRU1GdlFTL0JBY0FNUVZEQlRVRkJ3QXhCVVFGUXdVSEFFUUZ2UVJEQlFjQVJBVzVCTDBFQndBdUJVUUZNUVVIQUM0RlJRVkVCUWNBUlFXNUJFUUZCd0JGQmJZRXVRUUhBQ29GUlFVdUJRY0FLZ1ZHQlVVRkJ3QkdCYllFUlFVSEFFWUZzZ1MyQkFjQUhBVkdCU29GQndBY0JVY0ZSZ1VIQUVjRnNnUkdCUWNBUndXa0JMSUVCd0FhQlVjRkhBVUhBQm9GU0FWSEJRY0FTQVdrQkVjRkJ3QklCYUlFcEFRSEFCY0ZTQVVhQlFjQUZ3VkpCVWdGQndCSkJhSUVTQVVIQUVrRm9BU2lCQWNBRmdWSkJSY0ZCd0FXQlVvRlNRVUhBRW9Gb0FSSkJRY0FTZ1djQktBRUJ3QVVCVW9GRmdVSEFCUUZTd1ZLQlFjQVN3V2NCRW9GQndCTEJab0VuQVFIQUJFRlN3VVVCUWNBRVFWTUJVc0ZCd0JNQlpvRVN3VUhBRXdGblFTYUJBY0FIUVZOQlNBRkJ3QWRCVTRGVFFVSEFFNEZxQVJOQlFjQVRnV21CS2dFQndBaUJVNEZIUVVIQUNJRlR3Vk9CUWNBVHdXbUJFNEZCd0JQQmFvRXBnUUhBQ1FGVHdVaUJRY0FKQVZRQlU4RkJ3QlFCYW9FVHdVSEFGQUZyQVNxQkFjQUpnVlFCU1FGQndBbUJWRUZVQVVIQUZFRnJBUlFCUWNBVVFXdUJLd0VCd0FvQlZFRkpnVUhBQ2dGVWdWUkJRY0FVZ1d1QkZFRkJ3QlNCYkFFcmdRSEFDd0ZVZ1VvQlFjQUxBVlRCVklGQndCVEJiQUVVZ1VIQUZNRnRBU3dCQWNBTHdWVEJTd0ZCd0F2QlZRRlV3VUhBRlFGdEFSVEJRY0FWQVczQkxRRUJ3QXpCVlFGTHdVSEFETUZWUVZVQlFjQVZRVzNCRlFGQndCVkJic0V0d1FIQURrRlZRVXpCUWNBT1FWV0JWVUZCd0JXQmJzRVZRVUhBRllGd1FTN0JBY0FQd1ZXQlRrRkJ3QS9CVmNGVmdVSEFGY0Z3UVJXQlFjQVZ3WEhCTUVFQndBK0JWZ0ZQQVVIQUQ0RlFRVllCUWNBUVFYRkJGZ0ZCd0JCQmNNRXhRUUhBTWNFV1FYSUJBY0F4d1JhQlZrRkJ3QmFCY1lFV1FVSEFGb0Z4UVRHQkFjQVZ3VmFCY2NFQndCWEJWc0ZXZ1VIQUZzRnhRUmFCUWNBV3dWWUJjVUVCd0EvQlZzRlZ3VUhBRDhGWEFWYkJRY0FYQVZZQlZzRkJ3QmNCVHdGV0FVSEFFQUZYQVUvQlFjQVFBVmRCVndGQndCZEJUd0ZYQVVIQUYwRlBRVThCUWNBSUFWZUJSNEZCd0FnQlY4RlhnVUhBRjhGRXdWZUJRY0FYd1VSQlJNRkJ3Qk5CVjhGSUFVSEFFMEZZQVZmQlFjQVlBVVJCVjhGQndCZ0JVd0ZFUVVIQUtnRVlBVk5CUWNBcUFSaEJXQUZCd0JoQlV3RllBVUhBR0VGblFSTUJRY0FwUVJoQmFnRUJ3Q2xCR0lGWVFVSEFHSUZuUVJoQlFjQVlnV2VCSjBFQndEUEJHSUZwUVFIQU04RVl3VmlCUWNBWXdXZUJHSUZCd0JqQmNzRW5nUUhBT2NFWXdYUEJBY0E1d1JrQldNRkJ3QmtCY3NFWXdVSEFHUUY0d1RMQkFjQS93UmtCZWNFQndEL0JHVUZaQVVIQUdVRjR3UmtCUWNBWlFYN0JPTUVCd0RJQkdZRjRBUUhBTWdFV1FWbUJRY0FXUVhmQkdZRkJ3QlpCY1lFM3dRSEFPQUVad1g0QkFjQTRBUm1CV2NGQndCbUJmY0Vad1VIQUdZRjN3VDNCQWNBK0FSb0JSQUZCd0Q0QkdjRmFBVUhBR2NGRHdWb0JRY0Fad1gzQkE4RkJ3QnBCV29GYXdVSEFHa0ZiQVZxQlFjQWJRVnJCVzRGQndCdEJXa0Zhd1VIQUc4RmNBVnhCUWNBYndWeUJYQUZCd0JzQlhFRmFnVUhBR3dGYndWeEJRY0FjZ1Z6QlhBRkJ3QnlCWFFGY3dVSEFIVUZkZ1YzQlFjQWRRVjRCWFlGQndCNUJYVUZkd1VIQUhrRmVnVjFCUWNBZXdWNkJYa0ZCd0I3Qlh3RmVnVUhBSDBGZkFWN0JRY0FmUVYrQlh3RkJ3Qi9CWDRGZlFVSEFIOEZnQVYrQlFjQWRBV0JCWE1GQndCMEJZSUZnUVVIQUlNRmdBVi9CUWNBZ3dXRUJZQUZCd0NDQllVRmdRVUhBSUlGaGdXRkJRY0Fod1dEQllnRkJ3Q0hCWVFGZ3dVSEFJVUZpUVdLQlFjQWhRV0dCWWtGQndDTEJZZ0ZqQVVIQUlzRmh3V0lCUWNBaWdXTkJZNEZCd0NLQllrRmpRVUhBSTRGandXUUJRY0FqZ1dOQlk4RkJ3Q1JCWXdGa2dVSEFKRUZpd1dNQlFjQWtBV1RCWlFGQndDUUJZOEZrd1VIQUpRRmxRV1dCUWNBbEFXVEJaVUZCd0NYQlpJRm1BVUhBSmNGa1FXU0JRY0Fhd1daQlpvRkJ3QnJCV29GbVFVSEFHNEZtZ1diQlFjQWJnVnJCWm9GQndCeEJad0ZuUVVIQUhFRmNBV2NCUWNBYWdXZEJaa0ZCd0JxQlhFRm5RVUhBSEFGbmdXY0JRY0FjQVZ6Qlo0RkJ3QjNCWjhGb0FVSEFIY0ZkZ1dmQlFjQW9RVjNCYUFGQndDaEJYa0Zkd1VIQUtJRmVRV2hCUWNBb2dWN0JYa0ZCd0NqQlhzRm9nVUhBS01GZlFWN0JRY0FwQVY5QmFNRkJ3Q2tCWDhGZlFVSEFITUZwUVdlQlFjQWN3V0JCYVVGQndDbUJYOEZwQVVIQUtZRmd3Vi9CUWNBZ1FXbkJhVUZCd0NCQllVRnB3VUhBSWdGcGdXb0JRY0FpQVdEQmFZRkJ3Q25CWW9GcVFVSEFLY0ZoUVdLQlFjQWpBV29CYW9GQndDTUJZZ0ZxQVVIQUtrRmpnV3JCUWNBcVFXS0JZNEZCd0NyQlpBRnJBVUhBS3NGamdXUUJRY0FrZ1dxQmEwRkJ3Q1NCWXdGcWdVSEFLd0ZsQVd1QlFjQXJBV1FCWlFGQndDdUJaWUZyd1VIQUs0RmxBV1dCUWNBbUFXdEJiQUZCd0NZQlpJRnJRVUhBSm9Gc1FXeUJRY0FtZ1daQmJFRkJ3Q2JCYklGc3dVSEFKc0ZtZ1d5QlFjQW5RVzBCYlVGQndDZEJad0Z0QVVIQUprRnRRV3hCUWNBbVFXZEJiVUZCd0NjQmJZRnRBVUhBSndGbmdXMkJRY0FvQVczQmJnRkJ3Q2dCWjhGdHdVSEFMa0ZvQVc0QlFjQXVRV2hCYUFGQndDNkJhRUZ1UVVIQUxvRm9nV2hCUWNBdXdXaUJib0ZCd0M3QmFNRm9nVUhBTHdGb3dXN0JRY0F2QVdrQmFNRkJ3Q2VCYjBGdGdVSEFKNEZwUVc5QlFjQXZnV2tCYndGQndDK0JhWUZwQVVIQUtVRnZ3VzlCUWNBcFFXbkJiOEZCd0NvQmI0RndBVUhBS2dGcGdXK0JRY0F2d1dwQmNFRkJ3Qy9CYWNGcVFVSEFLb0Z3QVhDQlFjQXFnV29CY0FGQndEQkJhc0Z3d1VIQU1FRnFRV3JCUWNBd3dXc0JjUUZCd0REQmFzRnJBVUhBSzBGd2dYRkJRY0FyUVdxQmNJRkJ3REVCYTRGeGdVSEFNUUZyQVd1QlFjQXhnV3ZCY2NGQndER0JhNEZyd1VIQUxBRnhRWElCUWNBc0FXdEJjVUZCd0N5QmZrRStnUUhBTElGc1FYNUJBY0Fzd1g2QlBzRUJ3Q3pCYklGK2dRSEFMVUYvQVQ5QkFjQXRRVzBCZndFQndDeEJmMEUrUVFIQUxFRnRRWDlCQWNBdEFYK0JQd0VCd0MwQmJZRi9nUUhBTGdGL3dRQUJRY0F1QVczQmY4RUJ3QUJCYmdGQUFVSEFBRUZ1UVc0QlFjQUFnVzVCUUVGQndBQ0Jib0Z1UVVIQUFNRnVnVUNCUWNBQXdXN0Jib0ZCd0FFQmJzRkF3VUhBQVFGdkFXN0JRY0F0Z1VGQmY0RUJ3QzJCYjBGQlFVSEFBWUZ2QVVFQlFjQUJnVytCYndGQndDOUJRY0ZCUVVIQUwwRnZ3VUhCUWNBd0FVR0JRZ0ZCd0RBQmI0RkJnVUhBQWNGd1FVSkJRY0FCd1cvQmNFRkJ3RENCUWdGQ2dVSEFNSUZ3QVVJQlFjQUNRWERCUXNGQndBSkJjRUZ3d1VIQUFzRnhBVU1CUWNBQ3dYREJjUUZCd0RGQlFvRkRRVUhBTVVGd2dVS0JRY0FEQVhHQlE0RkJ3QU1CY1FGeGdVSEFBNEZ4d1VQQlFjQURnWEdCY2NGQndESUJRMEZFQVVIQU1nRnhRVU5CUWNBeVFYS0Jjc0ZCd0RKQmN3RnlnVUhBTTBGekFYSkJRY0F6UVhPQmN3RkJ3RFBCZEFGMFFVSEFNOEYwZ1hRQlFjQTBRWE9CYzBGQndEUkJkQUZ6Z1VIQU5NRjBnWFBCUWNBMHdYVUJkSUZCd0RWQmRZRjF3VUhBTlVGMkFYV0JRY0ExZ1haQmRjRkJ3RFdCZG9GMlFVSEFOb0Yyd1haQlFjQTJnWGNCZHNGQndEY0JkMEYyd1VIQU53RjNnWGRCUWNBM2dYZkJkMEZCd0RlQmVBRjN3VUhBT0VGMUFYVEJRY0E0UVhpQmRRRkJ3RGdCZU1GM3dVSEFPQUY1QVhqQlFjQTVRWGlCZUVGQndEbEJlWUY0Z1VIQU9NRjV3WG9CUWNBNHdYa0JlY0ZCd0RwQmVVRjZnVUhBT2tGNWdYbEJRY0E2QVhyQmV3RkJ3RG9CZWNGNndVSEFPMEY2Z1h1QlFjQTdRWHBCZW9GQndEdkJlNEY4QVVIQU84RjdRWHVCUWNBN0FYeEJmSUZCd0RzQmVzRjhRVUhBUE1GOUFYMUJRY0E4d1gyQmZRRkJ3RDJCZkFGOUFVSEFQWUY3d1h3QlFjQThnWDNCZmdGQndEeUJmRUY5d1VIQVBrRjd3WDJCUWNBK1FYNkJlOEZCd0NUQmZvRitRVUhBSk1GandYNkJRY0ErZ1h0QmU4RkJ3RDZCZnNGN1FVSEFJOEYrd1g2QlFjQWp3V05CZnNGQndEN0Jla0Y3UVVIQVBzRi9BWHBCUWNBalFYOEJmc0ZCd0NOQllrRi9BVUhBUHdGNWdYcEJRY0EvQVg5QmVZRkJ3Q0pCZjBGL0FVSEFJa0ZoZ1g5QlFjQS9RWGlCZVlGQndEOUJmNEY0Z1VIQUlZRi9nWDlCUWNBaGdXQ0JmNEZCd0QrQmRRRjRnVUhBUDRGL3dYVUJRY0FnZ1gvQmY0RkJ3Q0NCWFFGL3dVSEFQOEYwZ1hVQlFjQS93VUFCdElGQndCMEJRQUcvd1VIQUhRRmNnVUFCZ2NBQUFiUUJkSUZCd0FBQmdFRzBBVUhBSElGQVFZQUJnY0FjZ1Z2QlFFR0J3QUJCczRGMEFVSEFBRUdBZ2JPQlFjQWJ3VUNCZ0VHQndCdkJXd0ZBZ1lIQUFJR3pBWE9CUWNBQWdZREJzd0ZCd0JzQlFNR0FnWUhBR3dGYVFVREJnY0FBd2JLQmN3RkJ3QURCZ1FHeWdVSEFHa0ZCQVlEQmdjQWFRVnRCUVFHQndBRkJ0WUYyQVVIQUFVR0JnYldCUWNBZUFVR0JnVUdCd0I0QlhVRkJnWUhBQVlHMmdYV0JRY0FCZ1lIQnRvRkJ3QjFCUWNHQmdZSEFIVUZlZ1VIQmdjQUJ3YmNCZG9GQndBSEJnZ0czQVVIQUhvRkNBWUhCZ2NBZWdWOEJRZ0dCd0FJQnQ0RjNBVUhBQWdHQ1FiZUJRY0FmQVVKQmdnR0J3QjhCWDRGQ1FZSEFBa0c0QVhlQlFjQUNRWUtCdUFGQndCK0JRb0dDUVlIQUg0RmdBVUtCZ2NBQ2dia0JlQUZCd0FLQmdzRzVBVUhBSUFGQ3dZS0JnY0FnQVdFQlFzR0J3QUxCdWNGNUFVSEFBc0dEQWJuQlFjQWhBVU1CZ3NHQndDRUJZY0ZEQVlIQUF3RzZ3WG5CUWNBREFZTkJ1c0ZCd0NIQlEwR0RBWUhBSWNGaXdVTkJnY0FEUWJ4QmVzRkJ3QU5CZzRHOFFVSEFJc0ZEZ1lOQmdjQWl3V1JCUTRHQndBT0J2Y0Y4UVVIQUE0R0R3YjNCUWNBa1FVUEJnNEdCd0NSQlpjRkR3WUhBQkFHOWdYekJRY0FFQWI1QmZZRkJ3Q1ZCZmtGRUFZSEFKVUZrd1g1QlFjQUVRYVhCWmdGQndBUkJoSUdsd1VIQUpZRkVnWVJCZ2NBbGdXVkJSSUdCd0FTQmc4R2x3VUhBQklHRXdZUEJnY0FsUVVUQmhJR0J3Q1ZCUkFHRXdZSEFCTUc5d1VQQmdjQUV3WVVCdmNGQndBUUJoUUdFd1lIQUJBRzh3VVVCZ2NBRkFiNEJmY0ZCd0FVQmhVRytBVUhBUE1GRlFZVUJnY0E4d1gxQlJVR0J3QVdCdGdGMVFVSEFCWUdGd2JZQlFjQXl3VVhCaFlHQndETEJjb0ZGd1lIQUJjR0JRYllCUWNBRndZWUJnVUdCd0RLQlJnR0Z3WUhBTW9GQkFZWUJnY0FHQVo0QlFVR0J3QVlCaGtHZUFVSEFBUUdHUVlZQmdjQUJBWnRCUmtHQndBWkJuWUZlQVVIQUJrR0dnWjJCUWNBYlFVYUJoa0dCd0J0Qlc0RkdnWUhBQm9HbndWMkJRY0FHZ1liQnA4RkJ3QnVCUnNHR2dZSEFHNEZtd1ViQmdjQUd3YTNCWjhGQndBYkJod0d0d1VIQUpzRkhBWWJCZ2NBbXdXekJSd0dCd0FjQnY4RXR3VUhBQndHWlFYL0JBY0Fzd1ZsQlJ3R0J3Q3pCZnNFWlFVSEFCMEdtQVd3QlFjQUhRWVJCcGdGQndDdkJSRUdIUVlIQUs4RmxnVVJCZ2NBSGdhd0JjZ0ZCd0FlQmgwR3NBVUhBTWNGSFFZZUJnY0F4d1d2QlIwR0J3Qm9CY2dGRUFVSEFHZ0ZIZ2JJQlFjQUR3VWVCbWdGQndBUEJjY0ZIZ1lIQUI4R0lBWWhCZ2NBSHdZaUJpQUdCd0FqQmlFR0pBWUhBQ01HSHdZaEJnY0FKUVlrQmlZR0J3QWxCaU1HSkFZSEFDY0dKZ1lvQmdjQUp3WWxCaVlHQndBcEJpSUdId1lIQUNrR0tnWWlCZ2NBS3dZZkJpTUdCd0FyQmlrR0h3WUhBQ3dHSXdZbEJnY0FMQVlyQmlNR0J3QXRCaVVHSndZSEFDMEdMQVlsQmdjQUxnWXNCaTBHQndBdUJpOEdMQVlIQUM4R0t3WXNCZ2NBTHdZd0Jpc0dCd0F3QmlrR0t3WUhBREFHTVFZcEJnY0FNUVlxQmlrR0J3QXhCaklHS2dZSEFETUdOQVkxQmdjQU13WTJCalFHQndBM0JqZ0dPUVlIQURjR09nWTRCZ2NBT3dZNUJqd0dCd0E3QmpjR09RWUhBRDBHUGdZL0JnY0FQUVpBQmo0R0J3QkJCajhHUWdZSEFFRUdQUVkvQmdjQVF3WkNCa1FHQndCREJrRUdRZ1lIQUVVR1JnWkhCZ2NBUlFaSUJrWUdCd0EyQmtnR1JRWUhBRFlHTXdaSUJnY0FTUVpLQmtzR0J3QkpCa3dHU2dZSEFEb0dUQVpKQmdjQU9nWTNCa3dHQndCTUJrMEdTZ1lIQUV3R1RnWk5CZ2NBTndaT0Jrd0dCd0EzQmpzR1RnWUhBRTRHVHdaTkJnY0FUZ1pRQms4R0J3QlJCbElHVXdZSEFGRUdWQVpTQmdjQVZBWlZCbElHQndCVUJsWUdWUVlIQUZZR1Z3WlZCZ2NBVmdaWUJsY0dCd0JZQmxrR1Z3WUhBRmdHV2daWkJnY0FXd1pjQmwwR0J3QmJCbDRHWEFZSEFFQUdYZ1piQmdjQVFBWTlCbDRHQndCZUJsOEdYQVlIQUY0R1lBWmZCZ2NBUFFaZ0JsNEdCd0E5QmtFR1lBWUhBR0FHWVFaZkJnY0FZQVppQm1FR0J3QkJCbUlHWUFZSEFFRUdRd1ppQmdjQVl3WXpCalVHQndCakJtUUdNd1lIQUdRR1NBWXpCZ2NBWkFabEJrZ0dCd0JsQmtZR1NBWUhBR1VHWmdaR0JnY0Fad1pSQmxNR0J3Qm5CbWdHVVFZSEFHY0dVQVpvQmdjQVp3WlBCbEFHQndBdkJrUUdRZ1lIQUM4R0xnWkVCZ2NBTUFaQ0JqOEdCd0F3Qmk4R1FnWUhBR2tHUGdaQUJnY0FhUVpxQmo0R0J3QnJCbHNHWFFZSEFHc0diQVpiQmdjQWFRWmJCbXdHQndCcEJrQUdXd1lIQURFR1B3WStCZ2NBTVFZd0JqOEdCd0F5Qmo0R2FnWUhBRElHTVFZK0JnY0FiUVp1Qm04R0J3QnRCbkFHYmdZSEFIRUdjZ1p6QmdjQWNRWjBCbklHQndCekJuVUdkZ1lIQUhNR2NnWjFCZ2NBZHdaeEJuZ0dCd0IzQm5RR2NRWUhBRzhHZUFadEJnY0Fid1ozQm5nR0J3QjVCbm9HZXdZSEFIa0dmQVo2QmdjQWZRWitCbjhHQndCOUJvQUdmZ1lIQUlFR2ZnYUNCZ2NBZ1FaL0JuNEdCd0NEQm9RR2hRWUhBSU1HaGdhRUJnY0FkQWFHQm5JR0J3QjBCb1FHaGdZSEFJTUdod2FHQmdjQWd3YUlCb2NHQndCeUJvY0dkUVlIQUhJR2hnYUhCZ2NBaVFhS0Jvc0dCd0NKQm93R2lnWUhBSTBHaWdhT0JnY0FqUWFMQm9vR0J3Q0JCb3NHZndZSEFJRUdpUWFMQmdjQWZRYUxCbzBHQndCOUJuOEdpd1lIQUc0R2p3YVFCZ2NBYmdhUkJvOEdCd0NSQnBJR2p3WUhBSkVHa3dhU0JnY0FjQWFSQm00R0J3QndCcFFHa1FZSEFKUUdrd2FSQmdjQWxBYVZCcE1HQndDV0Jsb0dsd1lIQUpZR1dRWmFCZ2NBYXdhWEJtd0dCd0JyQnBZR2x3WUhBR2tHbHdhWUJnY0FhUVpzQnBjR0J3Q1lCbG9HbVFZSEFKZ0dsd1phQmdjQW1nWllCbFlHQndDYUJwc0dXQVlIQUpzR1dnWllCZ2NBbXdhWkJsb0dCd0NhQmxRR25BWUhBSm9HVmdaVUJnY0FuQVpSQnAwR0J3Q2NCbFFHVVFZSEFKMEdhQWFlQmdjQW5RWlJCbWdHQndDZUJsQUdud1lIQUo0R2FBWlFCZ2NBVUFhZ0JwOEdCd0JRQms0R29BWUhBS0VHUEFhaUJnY0FvUVk3Qmp3R0J3Q2pCcFVHbEFZSEFLTUdwQWFWQmdjQXBRYVVCbkFHQndDbEJxTUdsQVlIQUtVR2JRYW1CZ2NBcFFad0JtMEdCd0NtQm5nR3B3WUhBS1lHYlFaNEJnY0Fwd1p4QnFnR0J3Q25CbmdHY1FZSEFLZ0djd2FwQmdjQXFBWnhCbk1HQndDcEJuWUdxZ1lIQUtrR2N3WjJCZ2NBcXdhWUJwa0dCd0NyQnF3R21BWUhBSzBHbVFhYkJnY0FyUWFyQnBrR0J3Q3VCcHNHbWdZSEFLNEdyUWFiQmdjQXJ3YWFCcHdHQndDdkJxNEdtZ1lIQUxBR25BYWRCZ2NBc0FhdkJwd0dCd0N4QnAwR25nWUhBTEVHc0FhZEJnY0FzZ2FlQnA4R0J3Q3lCckVHbmdZSEFMTUdvQWFoQmdjQXN3YTBCcUFHQndDMUJxRUdvZ1lIQUxVR3N3YWhCZ2NBdGdha0JxTUdCd0MyQnJjR3BBWUhBTGdHb3dhbEJnY0F1QWEyQnFNR0J3QzVCcVVHcGdZSEFMa0d1QWFsQmdjQXVnYW1CcWNHQndDNkJya0dwZ1lIQUxzR3B3YW9CZ2NBdXdhNkJxY0dCd0M4QnFnR3FRWUhBTHdHdXdhb0JnY0F2UWFwQnFvR0J3QzlCcndHcVFZSEFHb0dtQWFzQmdjQWFnWnBCcGdHQndDK0JsOEdZUVlIQUw0R3Z3WmZCZ2NBdndaY0JsOEdCd0MvQnNBR1hBWUhBTUFHWFFaY0JnY0F3QWJCQmwwR0J3REJCbXNHWFFZSEFNRUd3Z1pyQmdjQXdnYVdCbXNHQndEQ0JzTUdsZ1lIQU1NR1dRYVdCZ2NBd3diRUJsa0dCd0RFQmxjR1dRWUhBTVFHeFFaWEJnY0F4UVpWQmxjR0J3REZCc1lHVlFZSEFNWUdVZ1pWQmdjQXhnYkhCbElHQndESEJsTUdVZ1lIQU1jR3lBWlRCZ2NBeUFabkJsTUdCd0RJQnNrR1p3WUhBTWtHVHdabkJnY0F5UWJLQms4R0J3REtCazBHVHdZSEFNb0d5d1pOQmdjQXl3WktCazBHQndETEJzd0dTZ1lIQU13R1N3WktCZ2NBekFiTkJrc0dCd0RPQmtZR1pnWUhBTTRHendaR0JnY0F6d1pIQmtZR0J3RFBCdEFHUndZSEFORUd2d2ErQmdjQTBRYlNCcjhHQndEU0JzQUd2d1lIQU5JRzB3YkFCZ2NBMHdiQkJzQUdCd0RUQnRRR3dRWUhBTlFHd2diQkJnY0ExQWJWQnNJR0J3RFZCc01Hd2dZSEFOVUcxZ2JEQmdjQTFnYkVCc01HQndEV0J0Y0d4QVlIQU5jR3hRYkVCZ2NBMXdiWUJzVUdCd0RZQnNZR3hRWUhBTmdHMlFiR0JnY0EyUWJIQnNZR0J3RFpCdG9HeHdZSEFOb0d5QWJIQmdjQTJnYmJCc2dHQndEYkJza0d5QVlIQU5zRzNBYkpCZ2NBM0FiS0Jza0dCd0RjQnQwR3lnWUhBTjBHeXdiS0JnY0EzUWJlQnNzR0J3RGVCc3dHeXdZSEFONEczd2JNQmdjQTN3Yk5Cc3dHQndEZkJ1QUd6UVlIQU9FR3p3Yk9CZ2NBNFFiaUJzOEdCd0RpQnRBR3p3WUhBT0lHNHdiUUJnY0E1QVkwQmpZR0J3RGtCdVVHTkFZSEFFVUc1QVkyQmdjQVJRYm1CdVFHQndEbkJrVUdSd1lIQU9jRzVnWkZCZ2NBMEFibkJrY0dCd0RRQnVnRzV3WUhBT01HNkFiUUJnY0E0d2JwQnVnR0J3RHFCdVVHNUFZSEFPb0c2d2JsQmdjQTVnYnFCdVFHQndEbUJ1d0c2Z1lIQU8wRzVnYm5CZ2NBN1Fic0J1WUdCd0RvQnUwRzV3WUhBT2dHN2didEJnY0E2UWJ1QnVnR0J3RHBCdThHN2dZSEFQQUdZd2J4QmdjQThBWmtCbU1HQndEeUJtUUc4QVlIQVBJR1pRWmtCZ2NBOHdabEJ2SUdCd0R6Qm1ZR1pRWUhBR1lHOUFiT0JnY0FaZ2J6QnZRR0J3RE9CdlVHNFFZSEFNNEc5QWIxQmdjQWp3WTRCdllHQndDUEJwSUdPQVlIQVBjR2p3YjJCZ2NBOXdhUUJvOEdCd0Q0QnZrRytnWUhBUGdHK3diNUJnY0Erd1o3QnZrR0J3RDdCbmtHZXdZSEFQY0crd2I0QmdjQTl3YjhCdnNHQndEOEJua0crd1lIQVB3Ry9RWjVCZ2NBOWdiOEJ2Y0dCd0QyQnY0Ry9BWUhBUDRHL1FiOEJnY0EvZ2IvQnYwR0J3QTRCdjRHOWdZSEFEZ0dBQWYrQmdjQUFBZi9CdjRHQndBQUIvRUcvd1lIQURvR0FBYzRCZ2NBT2dZQkJ3QUhCd0FCQi9FR0FBY0hBQUVIOEFieEJnY0FTUVlCQnpvR0J3QkpCZ0lIQVFjSEFBSUg4QVlCQndjQUFnZnlCdkFHQndCTEJnSUhTUVlIQUVzR0F3Y0NCd2NBQXdmeUJnSUhCd0FEQi9NRzhnWUhBTTBHQXdkTEJnY0F6UVlFQndNSEJ3QUVCL01HQXdjSEFBUUg5QWJ6QmdjQTRBWUVCODBHQndEZ0JnVUhCQWNIQUFVSDlBWUVCd2NBQlFmMUJ2UUdCd0Q2QmdZSGhRWUhBUG9HK1FZR0J3Y0ErUVlIQndZSEJ3RDVCbnNHQndjSEFJVUdDQWVEQmdjQWhRWUdCd2dIQndBR0J3a0hDQWNIQUFZSEJ3Y0pCd2NBZ3dZS0I0Z0dCd0NEQmdnSENnY0hBQWdIQ3djS0J3Y0FDQWNKQndzSEJ3QU1CdzBIRGdjSEFBd0hEd2NOQndjQUR3Y1FCdzBIQndBUEJ4RUhFQWNIQUJJSER3Y01Cd2NBRWdjVEJ3OEhCd0FUQnhFSER3Y0hBQk1IRkFjUkJ3Y0FGUWNUQnhJSEJ3QVZCeFlIRXdjSEFCWUhGQWNUQndjQUZnY1hCeFFIQndBWUJ4WUhGUWNIQUJnSEdRY1dCd2NBR1FjWEJ4WUhCd0FaQnhvSEZ3Y0hBQnNIRndjYUJ3Y0FHd2NjQnhjSEJ3QWNCeFFIRndjSEFCd0hIUWNVQndjQUhnY1FCeEVIQndBZUJ4OEhFQWNIQUJRSEhnY1JCd2NBRkFjZEJ4NEhCd0I2QmlBSElRY0hBSG9HZkFZZ0J3Y0FmQWI5QmlBSEJ3QjhCbmtHL1FZSEFDSUgvUVlqQndjQUlnY2dCLzBHQndBZUJ5TUhId2NIQUI0SElnY2pCd2NBSFFjaUJ4NEhCd0FkQnlRSElnY0hBQ1FISUFjaUJ3Y0FKQWNoQnlBSEJ3QTFCaVVIWXdZSEFEVUdKZ2NsQndjQUpnY2pCeVVIQndBbUJ4OEhJd2NIQURRR0pnYzFCZ2NBTkFZbkJ5WUhCd0FuQng4SEpnY0hBQ2NIRUFjZkJ3Y0E1UVluQnpRR0J3RGxCaWdISndjSEFDZ0hFQWNuQndjQUtBY05CeEFIQndEckJpZ0g1UVlIQU9zR0tRY29Cd2NBS1FjTkJ5Z0hCd0FwQnc0SERRY0hBUDhHWXdZbEJ3Y0Evd2J4Qm1NR0J3RDlCaVVISXdjSEFQMEcvd1lsQndjQUtnZUlCZ29IQndBcUJ5c0hpQVlIQUN3SENnY0xCd2NBTEFjcUJ3b0hCd0FyQjRjR2lBWUhBQ3NITFFlSEJnY0FMUWQxQm9jR0J3QXRCeTRIZFFZSEFDOEhkUVl1QndjQUx3ZDJCblVHQndBd0J6RUhNZ2NIQURBSE13Y3hCd2NBTkFjMUJ6WUhCd0EwQnpjSE5RY0hBRGNIT0FjMUJ3Y0FOd2M1QnpnSEJ3QTZCemdIT1FjSEFEb0hPd2M0QndjQU5RYzhCejBIQndBMUJ6Z0hQQWNIQUQ0SFB3YzJCd2NBUGdkQUJ6OEhCd0EyQnowSFBnY0hBRFlITlFjOUJ3Y0FPQWRCQnp3SEJ3QTRCenNIUVFjSEFFSUhRd2RFQndjQVFnZEZCME1IQndCRkIwQUhRd2NIQUVVSFB3ZEFCd2NBUmdkRkIwSUhCd0JHQjBjSFJRY0hBRWNIUHdkRkJ3Y0FSd2RJQno4SEJ3QkpCMFlIUWdjSEFFa0hTZ2RHQndjQVN3ZENCMFFIQndCTEIwa0hRZ2NIQUV3SE9nYzVCd2NBVEFkTkJ6b0hCd0JPQnprSE53Y0hBRTRIVEFjNUJ3Y0FUd2MzQnpRSEJ3QlBCMDRITndjSEFGQUhVUWRTQndjQVVBZFRCMUVIQndCVUIxVUhWZ2NIQUZRSFZ3ZFZCd2NBV0FkVkIwOEhCd0JZQjFZSFZRY0hBRWdIVHdjMEJ3Y0FTQWRZQjA4SEJ3QlpCMDhIVlFjSEFGa0hXZ2RQQndjQVdnZE9CMDhIQndCYUIxc0hUZ2NIQUZ3SFZ3ZGRCd2NBWEFkZUIxY0hCd0JiQjB3SFRnY0hBRnNIWHdkTUJ3Y0FYd2ROQjB3SEJ3QmZCMkFIVFFjSEFHRUhZQWRmQndjQVlRZGlCMkFIQndCakIxOEhXd2NIQUdNSFlRZGZCd2NBWkFkYkIxb0hCd0JrQjJNSFd3Y0hBR1VIV2dkWkJ3Y0FaUWRrQjFvSEJ3Qm1CMTRIWEFjSEFHWUhad2RlQndjQWFBZGdCMklIQndCb0Iya0hZQWNIQUdvSGF3ZHNCd2NBYWdkdEIyc0hCd0J1QjJ3SGJ3Y0hBRzRIYWdkc0J3Y0FiUWR3QjJzSEJ3QnRCM0VIY0FjSEFISUhiUWRxQndjQWNnZHpCMjBIQndCMEIyb0hiZ2NIQUhRSGNnZHFCd2NBY3dkeEIyMEhCd0J6QjNVSGNRY0hBR3NIZGdkc0J3Y0Fhd2QzQjNZSEJ3QjNCeGtIZGdjSEFIY0hHZ2NaQndjQWNBZDNCMnNIQndCd0IzZ0hkd2NIQUhnSEdnZDNCd2NBZUFjYkJ4b0hCd0J4QjNnSGNBY0hBSEVIZVFkNEJ3Y0FlUWNiQjNnSEJ3QjVCM29IR3djSEFIVUhlUWR4QndjQWRRZDdCM2tIQndCN0Izb0hlUWNIQUhzSGZBZDZCd2NBYkFkOUIyOEhCd0JzQjNZSGZRY0hBSFlIR0FkOUJ3Y0FkZ2NaQnhnSEJ3QnZCMzRIYmdjSEFHOEhmUWQrQndjQWZRZC9CMzRIQndCOUJ4Z0hmd2NIQUc0SGdBZDBCd2NBYmdkK0I0QUhCd0IrQjRFSGdBY0hBSDRIZndlQkJ3Y0FnZ2NpQmlvR0J3Q0NCNE1ISWdZSEFJUUhLZ1l5QmdjQWhBZUNCeW9HQndDREJ5QUdJZ1lIQUlNSGhRY2dCZ2NBaFFjaEJpQUdCd0NGQjRZSElRWUhBSVlISkFZaEJnY0FoZ2VIQnlRR0J3Q0hCeVlHSkFZSEFJY0hpQWNtQmdjQWlBY29CaVlHQndDSUI0a0hLQVlIQUlrSEp3WW9CZ2NBaVFlS0J5Y0dCd0NLQnkwR0p3WUhBSW9IaXdjdEJnY0Fpd2N1QmkwR0J3Q0xCNHdITGdZSEFJd0hSQVl1QmdjQWpBZU5CMFFHQndDTkIwTUdSQVlIQUkwSGpnZERCZ2NBamdkaUJrTUdCd0NPQjQ4SFlnWUhBSkFIVFFkZ0J3Y0FrQWVSQjAwSEJ3Q1JCem9IVFFjSEFKRUhrZ2M2QndjQWtnYzdCem9IQndDU0I1TUhPd2NIQUpNSFFRYzdCd2NBa3dlVUIwRUhCd0NWQnk4SExnY0hBSlVIbGdjdkJ3Y0Fsd2VxQm5ZR0J3Q1hCNWdIcWdZSEFKZ0h2UWFxQmdjQW1BZVpCNzBHQndDWkI3d0d2UVlIQUprSG1nZThCZ2NBbWdlN0Jyd0dCd0NhQjVzSHV3WUhBSnNIdWdhN0JnY0Ftd2VjQjdvR0J3Q2NCN2tHdWdZSEFKd0huUWU1QmdjQW5RZTRCcmtHQndDZEI1NEh1QVlIQUo0SHRnYTRCZ2NBbmdlZkI3WUdCd0NmQjdjR3RnWUhBSjhIb0FlM0JnY0FvUWV6QnJVR0J3Q2hCNklIc3dZSEFLSUh0QWF6QmdjQW9nZWpCN1FHQndDa0I3RUdzZ1lIQUtRSHBRZXhCZ2NBcFFld0JyRUdCd0NsQjZZSHNBWUhBS1lIcndhd0JnY0FwZ2VuQjY4R0J3Q25CNjRHcndZSEFLY0hxQWV1QmdjQXFBZXRCcTRHQndDb0I2a0hyUVlIQUtrSHF3YXRCZ2NBcVFlcUI2c0dCd0NxQjZ3R3F3WUhBS29IcXdlc0JnY0Fxd2RxQnF3R0J3Q3JCNndIYWdZSEFLd0hNZ1pxQmdjQXJBZUVCeklHQndDdEI0TUhnZ2NIQUswSHJnZURCd2NBcndlQ0I0UUhCd0N2QjYwSGdnY0hBSzRIaFFlREJ3Y0FyZ2V3QjRVSEJ3Q3hCNFFIckFjSEFMRUhyd2VFQndjQXNBZUdCNFVIQndDd0I3SUhoZ2NIQUxJSGh3ZUdCd2NBc2dlekI0Y0hCd0N6QjRnSGh3Y0hBTE1IdEFlSUJ3Y0F0QWVKQjRnSEJ3QzBCN1VIaVFjSEFMVUhpZ2VKQndjQXRRZTJCNG9IQndDMkI0c0hpZ2NIQUxZSHR3ZUxCd2NBdHdlTUI0c0hCd0MzQjdnSGpBY0hBTGdIalFlTUJ3Y0F1QWU1QjQwSEJ3QzVCNDRIalFjSEFMa0h1Z2VPQndjQXVnZVBCNDRIQndDNkI3c0hqd2NIQUx3SGtRZVFCd2NBdkFlOUI1RUhCd0M5QjVJSGtRY0hBTDBIdmdlU0J3Y0F2Z2VUQjVJSEJ3QytCNzhIa3djSEFMOEhsQWVUQndjQXZ3ZkFCNVFIQndEQkI1WUhsUWNIQU1FSHdnZVdCd2NBd3dlWUI1Y0hCd0REQjhRSG1BY0hBTVFIbVFlWUJ3Y0F4QWZGQjVrSEJ3REZCNW9IbVFjSEFNVUh4Z2VhQndjQXhnZWJCNW9IQndER0I4Y0htd2NIQU1jSG5BZWJCd2NBeHdmSUI1d0hCd0RJQjUwSG5BY0hBTWdIeVFlZEJ3Y0F5UWVlQjUwSEJ3REpCOG9IbmdjSEFNb0hud2VlQndjQXlnZkxCNThIQndETEI2QUhud2NIQU1zSHpBZWdCd2NBelFlaUI2RUhCd0ROQjg0SG9nY0hBTTRIb3dlaUJ3Y0F6Z2ZQQjZNSEJ3RFFCNlVIcEFjSEFOQUgwUWVsQndjQTBRZW1CNlVIQndEUkI5SUhwZ2NIQU5JSHB3ZW1Cd2NBMGdmVEI2Y0hCd0RUQjZnSHB3Y0hBTk1IMUFlb0J3Y0ExQWVwQjZnSEJ3RFVCOVVIcVFjSEFOVUhxZ2VwQndjQTFRZldCNm9IQndEV0I2c0hxZ2NIQU5ZSDF3ZXJCd2NBMXdlc0I2c0hCd0RYQjdFSHJBY0hBR0VHandlK0JnY0FZUVppQm84SEJ3QzdCNzRHandjSEFMc0gwUWErQmdjQTJBY0xCd2tIQndEWUI5a0hDd2NIQU5vSENRY0hCd2NBMmdmWUJ3a0hCd0RaQnl3SEN3Y0hBTmtIMndjc0J3Y0Eyd2ZjQnl3SEJ3RGJCOTBIM0FjSEFONEhCd2Q3QmdjQTNnZmFCd2NIQndEZkIzc0dlZ1lIQU44SDNnZDdCZ2NBNEFkNkJpRUhCd0RnQjk4SGVnWUhBT0VISVFja0J3Y0E0UWZnQnlFSEJ3RGlCeVFISFFjSEFPSUg0UWNrQndjQTR3Y2RCeHdIQndEakIrSUhIUWNIQU9RSDJRZllCd2NBNUFmbEI5a0hCd0RtQjlnSDJnY0hBT1lINUFmWUJ3Y0E1UWZiQjlrSEJ3RGxCK2NIMndjSEFPZ0gyZ2ZlQndjQTZBZm1COW9IQndEbkI5MEgyd2NIQU9jSDZRZmRCd2NBNmdmZUI5OEhCd0RxQitnSDNnY0hBT3NIM3dmZ0J3Y0E2d2ZxQjk4SEJ3RHNCK0FINFFjSEFPd0g2d2ZnQndjQTdRZmhCK0lIQndEdEIrd0g0UWNIQU80SDRnZmpCd2NBN2dmdEIrSUhCd0FiQitNSEhBY0hBQnNIZWdmakJ3Y0E3Z2Q2QjN3SEJ3RHVCK01IZWdjSEFPOEg4QWZ4QndjQTd3ZnlCL0FIQndEekIwa0hTd2NIQVBNSDlBZEpCd2NBOVFmeUIrOEhCd0QxQi9ZSDhnY0hBUGNIOUFmekJ3Y0E5d2Y0Qi9RSEJ3RGNCKzhIOFFjSEFOd0gzUWZ2QndjQTNRZjFCKzhIQndEZEIra0g5UWNIQUN3SCtRY3FCd2NBTEFmNkIva0hCd0Q2Qno0SCtRY0hBUG9IUUFjK0J3Y0EzQWY2Qnl3SEJ3RGNCL3NIK2djSEFQc0hRQWY2QndjQSt3ZERCMEFIQndEeEIvc0gzQWNIQVBFSC9BZjdCd2NBL0FkREIvc0hCd0Q4QjBRSFF3Y0hBUEFIL0FmeEJ3Y0E4QWY5Qi93SEJ3RDlCMFFIL0FjSEFQMEhTd2RFQndjQThnZjlCL0FIQndEeUIvNEgvUWNIQVA0SFN3ZjlCd2NBL2dmekIwc0hCd0QyQi80SDhnY0hBUFlIL3dmK0J3Y0Evd2Z6Qi80SEJ3RC9CL2NIOHdjSEFDb0hBQWdyQndjQUtnZjVCd0FJQndENUJ6MEhBQWdIQVBrSFBnYzlCd2NBS3djQkNDMEhCd0FyQndBSUFRZ0hBQUFJUEFjQkNBY0FBQWc5Qnp3SEJ3QXRCd0lJTGdjSEFDMEhBUWdDQ0FjQUFRaEJCd0lJQndBQkNEd0hRUWNIQUM0SEF3aVZCd2NBTGdjQ0NBTUlCd0FDQ0pRSEF3Z0hBQUlJUVFlVUJ3Y0FsUWNFQ01FSEJ3Q1ZCd01JQkFnSEFBTUl3QWNFQ0FjQUF3aVVCOEFIQndBRkNBWUlCd2dIQUFVSVNnY0dDQWNBQ0FoY0IxMEhCd0FJQ0FrSVhBY0hBQWtJWmdkY0J3Y0FDUWdLQ0dZSEJ3QUxDQWdJQndnSEFBc0lEQWdJQ0FjQURBZ0pDQWdJQndBTUNBMElDUWdIQUEwSUNnZ0pDQWNBRFFnT0NBb0lCd0JKQndZSVNnY0hBRWtIOUFjR0NBY0FEd2owQi9nSEJ3QVBDQVlJOUFjSEFCQUlhQWRpQndjQUVBZ1JDR2dIQndBU0NHSUhZUWNIQUJJSUVBaGlCd2NBRXdoaEIyTUhCd0FUQ0JJSVlRY0hBQlFJWXdka0J3Y0FGQWdUQ0dNSEJ3QVZDQW9JRGdnSEFCVUlGZ2dLQ0FjQUZ3aGtCMlVIQndBWENCUUlaQWNIQUJnSVp3ZG1Cd2NBR0FnWkNHY0hCd0FXQ0dZSENnZ0hBQllJR0FobUJ3Y0FHZ2k4QjVBSEJ3QWFDQnNJdkFjSEFHa0hrQWRnQndjQWFRY2FDSkFIQndBY0NCMElIZ2dIQUJ3SUh3Z2RDQWNBSUFnaENDSUlCd0FnQ0NNSUlRZ0hBQjhJSWdnZENBY0FId2dnQ0NJSUJ3QWpDQ1FJSVFnSEFDTUlKUWdrQ0FjQUpnZ2NDQ2NJQndBbUNCOElIQWdIQUNZSUlBZ2ZDQWNBSmdnb0NDQUlCd0FvQ0NNSUlBZ0hBQ2dJS1FnakNBY0FLUWdsQ0NNSUJ3QXBDQ29JSlFnSEFDc0lIQWdlQ0FjQUt3Z3NDQndJQndBdENDNElMd2dIQUMwSU1BZ3VDQWNBTUFneENESUlCd0F3Q0MwSU1RZ0hBRE1JSlFncUNBY0FNd2cwQ0NVSUJ3QTBDQ1FJSlFnSEFEUUlOUWdrQ0FjQU5nZ2JDQm9JQndBMkNEY0lHd2dIQURnSUdnaHBCd2NBT0FnMkNCb0lCd0E1Q0dnSEVRZ0hBRGtJT2dob0J3Y0FPZ2hwQjJnSEJ3QTZDRGdJYVFjSEFEc0lOQWd6Q0FjQU93ZzhDRFFJQndBOENEVUlOQWdIQUR3SVBRZzFDQWNBUGdnM0NEWUlCd0ErQ0Q4SU53Z0hBRUFJTmdnNENBY0FRQWcrQ0RZSUJ3QkJDRGdJT2dnSEFFRUlRQWc0Q0FjQVFnZzZDRGtJQndCQ0NFRUlPZ2dIQUVNSVBBZzdDQWNBUXdoRUNEd0lCd0JFQ0QwSVBBZ0hBRVFJUlFnOUNBY0FSZ2hCQ0VJSUJ3QkdDRWNJUVFnSEFFZ0lQd2crQ0FjQVNBaEpDRDhJQndCS0NENElRQWdIQUVvSVNBZytDQWNBUndoQUNFRUlCd0JIQ0VvSVFBZ0hBRXNJUkFoRENBY0FTd2hNQ0VRSUJ3Qk1DRVVJUkFnSEFFd0lUUWhGQ0FjQVRnaEhDRVlJQndCT0NFOElSd2dIQUU4SVNnaEhDQWNBVHdoUUNFb0lCd0JSQ0VrSVNBZ0hBRkVJVWdoSkNBY0FVQWhJQ0VvSUJ3QlFDRkVJU0FnSEFGTUlVZ2hSQ0FjQVV3aFVDRklJQndCVkNGRUlVQWdIQUZVSVV3aFJDQWNBVmdoUUNFOElCd0JXQ0ZVSVVBZ0hBRmNJVHdoT0NBY0FWd2hXQ0U4SUJ3QllDRTBJVEFnSEFGZ0lXUWhOQ0FjQVdnaE1DRXNJQndCYUNGZ0lUQWdIQUZzSVhBaGRDQWNBV3doZUNGd0lCd0JUQ0ZzSVZBZ0hBRk1JWGdoYkNBY0FYZ2hmQ0Z3SUJ3QmVDR0FJWHdnSEFGVUlYZ2hUQ0FjQVZRaGdDRjRJQndCaENHQUlZZ2dIQUdFSVh3aGdDQWNBWWdoVkNGWUlCd0JpQ0dBSVZRZ0hBR01JWWdoa0NBY0FZd2hoQ0dJSUJ3QmtDRllJVndnSEFHUUlZZ2hXQ0FjQVpRaG1DR2NJQndCbENHZ0laZ2dIQUZnSVp3aFpDQWNBV0FobENHY0lCd0JwQ0dnSVpRZ0hBR2tJYWdob0NBY0FXZ2hsQ0ZnSUJ3QmFDR2tJWlFnSEFHc0lhQWhxQ0FjQWF3aHNDR2dJQndCc0NHWUlhQWdIQUd3SWJRaG1DQWNBYmdoaENHTUlCd0J1Q0c4SVlRZ0hBRzhJWHdoaENBY0Fid2h3Q0Y4SUJ3QndDRndJWHdnSEFIQUljUWhjQ0FjQWNRaGRDRndJQndCeENISUlYUWdIQUhNSWJBaHJDQWNBY3doMENHd0lCd0IwQ0cwSWJBZ0hBSFFJZFFodENBY0FkZ2h2Q0c0SUJ3QjJDSGNJYndnSEFIY0ljQWh2Q0FjQWR3aDRDSEFJQndCNENIRUljQWdIQUhnSWVRaHhDQWNBZVFoeUNIRUlCd0I1Q0hvSWNnZ0hBSHNJZEFoekNBY0Fld2g4Q0hRSUJ3QjhDSFVJZEFnSEFId0lmUWgxQ0FjQWZnaDNDSFlJQndCK0NIOElkd2dIQUg4SWVBaDNDQWNBZndpQUNIZ0lCd0NBQ0hrSWVBZ0hBSUFJZ1FoNUNBY0FnUWg2Q0hrSUJ3Q0JDSUlJZWdnSEFJTUlFZ2NNQndjQWd3aUVDQklIQndDRkNBd0hEZ2NIQUlVSWd3Z01Cd2NBaEFnVkJ4SUhCd0NFQ0lZSUZRY0hBSWNJRGdjcEJ3Y0Fod2lGQ0E0SEJ3Q0lDQ2tINndZSEFJZ0lod2dwQndjQWlRanJCdW9HQndDSkNJZ0k2d1lIQUlvSTZnYnNCZ2NBaWdpSkNPb0dCd0NMQ0lRSWd3Z0hBSXNJakFpRUNBY0FqUWlEQ0lVSUJ3Q05DSXNJZ3dnSEFJd0loZ2lFQ0FjQWpBaU9DSVlJQndDUENJVUlod2dIQUk4SWpRaUZDQWNBa0FpSENJZ0lCd0NRQ0k4SWh3Z0hBSkVJaUFpSkNBY0FrUWlRQ0lnSUJ3Q1NDSWtJaWdnSEFKSUlrUWlKQ0FjQUZRZC9CeGdIQndBVkI0WUlmd2NIQUlZSWdRZC9Cd2NBaGdpT0NJRUhCd0NLQ08wRzdnWUhBSW9JN0FidEJnY0FpZ2p2QnBJSUJ3Q0tDTzRHN3dZSEFCMElrd2dlQ0FjQUhRaVVDSk1JQndDVUNCUUlrd2dIQUpRSUV3Z1VDQWNBSWdpVUNCMElCd0FpQ0pVSWxBZ0hBSlVJRXdpVUNBY0FsUWdTQ0JNSUJ3QWhDSlVJSWdnSEFDRUlsZ2lWQ0FjQWxnZ1NDSlVJQndDV0NCQUlFZ2dIQUNRSWxnZ2hDQWNBSkFpWENKWUlCd0NYQ0JBSWxnZ0hBSmNJRVFnUUNBY0FOUWlYQ0NRSUJ3QTFDSmdJbHdnSEFKZ0lFUWlYQ0FjQW1BZzVDQkVJQndBOUNKZ0lOUWdIQUQwSW1RaVlDQWNBbVFnNUNKZ0lCd0NaQ0VJSU9RZ0hBRVVJbVFnOUNBY0FSUWlhQ0prSUJ3Q2FDRUlJbVFnSEFKb0lSZ2hDQ0FjQVRRaWFDRVVJQndCTkNKc0ltZ2dIQUpzSVJnaWFDQWNBbXdoT0NFWUlCd0JaQ0pzSVRRZ0hBRmtJbkFpYkNBY0FuQWhPQ0pzSUJ3Q2NDRmNJVGdnSEFHY0luQWhaQ0FjQVp3aWRDSndJQndDZENGY0luQWdIQUowSVpBaFhDQWNBWmdpZENHY0lCd0JtQ0o0SW5RZ0hBSjRJWkFpZENBY0FuZ2hqQ0dRSUJ3QnRDSjRJWmdnSEFHMElud2llQ0FjQW53aGpDSjRJQndDZkNHNElZd2dIQUhVSW53aHRDQWNBZFFpZ0NKOElCd0NnQ0c0SW53Z0hBS0FJZGdodUNBY0FmUWlnQ0hVSUJ3QjlDS0VJb0FnSEFLRUlkZ2lnQ0FjQW9RaCtDSFlJQndBZUNLSUlLd2dIQUI0SWt3aWlDQWNBa3dnWENLSUlCd0NUQ0JRSUZ3Z0hBQ3dJb3dneENBY0FMQWlrQ0tNSUJ3Q2tDQmNJR1FnSEFLUUlvZ2dYQ0FjQU1RaWxDRElJQndBeENLTUlwUWdIQUtNSUZnaWxDQWNBb3dnWUNCWUlCd0F5Q0tZSU1BZ0hBRElJcFFpbUNBY0FwUWdWQ0tZSUJ3Q2xDQllJRlFnSEFLY0lmZ2loQ0FjQXB3aW9DSDRJQndDcENLRUlmUWdIQUtrSXB3aWhDQWNBcWdpQ0NJRUlCd0NxQ0tzSWdnZ0hBS3dJZ1FpQUNBY0FyQWlxQ0lFSUJ3Q3RDSUFJZndnSEFLMElyQWlBQ0FjQXFBaC9DSDRJQndDb0NLMElmd2dIQUs0SWZRaDhDQWNBcmdpcENIMElCd0N2Q0h3SWV3Z0hBSzhJcmdoOENBY0FzQWlwQ0s0SUJ3Q3dDTEVJcVFnSEFMSUlyZ2l2Q0FjQXNnaXdDSzRJQndDeENLY0lxUWdIQUxFSXN3aW5DQWNBc3dpb0NLY0lCd0N6Q0xRSXFBZ0hBTFFJclFpb0NBY0F0QWkxQ0swSUJ3QzFDS3dJclFnSEFMVUl0Z2lzQ0FjQXR3aXJDS29JQndDM0NMZ0lxd2dIQUxZSXFnaXNDQWNBdGdpM0NLb0lCd0M1Q0xFSXNBZ0hBTGtJdWdpeENBY0F1d2l3Q0xJSUJ3QzdDTGtJc0FnSEFMb0lzd2l4Q0FjQXVnaThDTE1JQndDOENMUUlzd2dIQUx3SXZRaTBDQWNBdlFpMUNMUUlCd0M5Q0w0SXRRZ0hBTDRJdGdpMUNBY0F2Z2kvQ0xZSUJ3Qy9DTGNJdGdnSEFMOEl3QWkzQ0FjQXdBaTRDTGNJQndEQUNNRUl1QWdIQU1JSXd3akVDQWNBd2dqRkNNTUlCd0RFQ01ZSXh3Z0hBTVFJd3dqR0NBY0F4d2pJQ01rSUJ3REhDTVlJeUFnSEFNa0l5Z2pMQ0FjQXlRaklDTW9JQndERkNNd0l3d2dIQU1VSXpRak1DQWNBd3dqT0NNWUlCd0REQ013SXpnZ0hBTVlJendqSUNBY0F4Z2pPQ004SUJ3RElDTkFJeWdnSEFNZ0l6d2pRQ0FjQXp3alJDTkFJQndEUENOSUkwUWdIQU00STBnalBDQWNBemdqVENOSUlCd0RNQ05NSXpnZ0hBTXdJMUFqVENBY0F6UWpVQ013SUJ3RE5DTlVJMUFnSEFOWUkxd2pZQ0FjQTFnalpDTmNJQndEYUNOc0kzQWdIQU5vSTNRamJDQWNBM0FqZUNOOElCd0RjQ05zSTNnZ0hBT0FJNFFqaUNBY0E0QWpqQ09FSUJ3RGlDT1FJNVFnSEFPSUk0UWprQ0FjQTVRam1DT2NJQndEbENPUUk1Z2dIQU9nSTZRanFDQWNBNkFqckNPa0lCd0RyQ05rSTZRZ0hBT3NJMXdqWkNBY0E3QWp0Q080SUJ3RHNDTzhJN1FnSEFPOEkzUWp0Q0FjQTd3amJDTjBJQndEd0NPOEk3QWdIQVBBSThRanZDQWNBOFFqYkNPOElCd0R4Q040STJ3Z0hBUElJOFFqd0NBY0E4Z2p6Q1BFSUJ3RDBDUFVJOWdnSEFQUUk5d2oxQ0FjQStBajNDUFFJQndENENQa0k5d2dIQVBvSStRajRDQWNBK2dqN0NQa0lCd0Q4Q1BzSStnZ0hBUHdJL1FqN0NBY0EvZ2ovQ0FBSkJ3RCtDQUVKL3dnSEFBRUo0d2ovQ0FjQUFRbmhDT01JQndBQ0NRRUovZ2dIQUFJSkF3a0JDUWNBQXduaENBRUpCd0FEQ2VRSTRRZ0hBQVFKQXdrQ0NRY0FCQWtGQ1FNSkJ3QUZDZVFJQXdrSEFBVUo1Z2prQ0FjQTF3Z0dDZGdJQndEWENBY0pCZ2tIQU9zSUJ3blhDQWNBNndnSUNRY0pCd0RvQ0FnSjZ3Z0hBT2dJQ1FrSUNRY0E5UWdLQ2ZZSUJ3RDFDQXNKQ2drSEFQTUlDZ2tMQ1FjQTh3anlDQW9KQndEbkNOSUk1UWdIQU9jSTBRalNDQWNBNVFqVENPSUlCd0RsQ05JSTB3Z0hBT0FJREFuakNBY0E0QWdOQ1F3SkJ3RC9DQTRKQUFrSEFQOElEd2tPQ1FjQS93Z01DUThKQndEL0NPTUlEQWtIQU9JSTFBamdDQWNBNGdqVENOUUlCd0RnQ05VSURRa0hBT0FJMUFqVkNBY0FFQWtSQ1JJSkJ3QVFDUk1KRVFrSEFCUUpGUWtXQ1FjQUZBa1hDUlVKQndBWUNSWUpHUWtIQUJnSkZBa1dDUWNBRlFrYUNSc0pCd0FWQ1JjSkdna0hBQnNKRWdrUkNRY0FHd2thQ1JJSkJ3QWNDUjBKSGdrSEFCd0pId2tkQ1FjQUlBa1NDU0VKQndBZ0NSQUpFZ2tIQUNBSklna2pDUWNBSUFraENTSUpCd0FrQ1NVSkpna0hBQ1FKSndrbENRY0FKd2tYQ1JRSkJ3QW5DU1FKRndrSEFDZ0pKUWtuQ1FjQUtBa3BDU1VKQndBb0NSUUpHQWtIQUNnSkp3a1VDUWNBSkFrcUNTc0pCd0FrQ1NZSktna0hBQ1FKR2drWENRY0FKQWtyQ1JvSkJ3QXJDU0lKSVFrSEFDc0pLZ2tpQ1FjQUt3a1NDUm9KQndBckNTRUpFZ2tIQUN3SkVBa2dDUWNBTEFrdENSQUpCd0F1Q2R3SUx3a0hBQzRKMmdqY0NBY0FMUWtUQ1JBSkJ3QXRDVEFKRXdrSEFDOEozd2d4Q1FjQUx3bmNDTjhJQndEOUNESUpNd2tIQVAwSS9BZ3lDUWNBTXdrT0NROEpCd0F6Q1RJSkRna0hBRE1KREFrMENRY0FNd2tQQ1F3SkJ3RDlDRFFKTlFrSEFQMElNd2swQ1FjQSt3ZzJDZmtJQndEN0NEY0pOZ2tIQVAwSU53bjdDQWNBL1FnMUNUY0pCd0QzQ0RZSk9Ba0hBUGNJK1FnMkNRY0E5UWc0Q1RrSkJ3RDFDUGNJT0FrSEFBc0pPUWs2Q1FjQUN3bjFDRGtKQndEekNEb0pPd2tIQVBNSUN3azZDUWNBUEFuekNEc0pCd0E4Q2ZFSTh3Z0hBTjhJUFFrK0NRY0Ezd2plQ0QwSkJ3QXhDVDRKUHdrSEFERUozd2crQ1FjQU1BbEFDUk1KQndBd0NVRUpRQWtIQUJFSlFBbENDUWNBRVFrVENVQUpCd0FiQ1VJSlF3a0hBQnNKRVFsQ0NRY0FGUWxEQ1VRSkJ3QVZDUnNKUXdrSEFCWUpSQWxGQ1FjQUZna1ZDVVFKQndBWkNVVUpSZ2tIQUJrSkZnbEZDUWNBTkFsSENUVUpCd0EwQ1VnSlJ3a0hBRFVKU1FrM0NRY0FOUWxIQ1VrSkJ3QTNDVW9KTmdrSEFEY0pTUWxLQ1FjQU5nbExDVGdKQndBMkNVb0pTd2tIQURnSlRBazVDUWNBT0FsTENVd0pCd0E1Q1UwSk9na0hBRGtKVEFsTkNRY0FPZ2xPQ1RzSkJ3QTZDVTBKVGdrSEFEd0pUZ2xQQ1FjQVBBazdDVTRKQndBOUNWQUpQZ2tIQUQwSlVRbFFDUWNBUHdsUUNWSUhCd0EvQ1Q0SlVBa0hBRUVKVWdsQUNRY0FRUWxSQjFJSkJ3QkFDVk1KUWdrSEFFQUpVZ2xUQ1FjQVFnbFVDVU1KQndCQ0NWTUpWQWtIQUVNSlZRbEVDUWNBUXdsVUNWVUpCd0JFQ1ZZSlJRa0hBRVFKVlFsV0NRY0FSUWxYQ1VZSkJ3QkZDVllKVndrSEFEUUpEUWxJQ1FjQU5Ba01DUTBKQndCWUNWa0pXZ2tIQUZnSld3bFpDUWNBQWdsY0NRUUpCd0FDQ1YwSlhBa0hBUDRJWFFrQ0NRY0EvZ2hlQ1YwSkJ3QUFDVjRKL2dnSEFBQUpYd2xlQ1FjQURnbGZDUUFKQndBT0NXQUpYd2tIQURJSllBa09DUWNBTWdsaENXQUpCd0Q4Q0dFSk1na0hBUHdJWWdsaENRY0ErZ2hpQ2Z3SUJ3RDZDR01KWWdrSEFQZ0lZd242Q0FjQStBaGtDV01KQndEMENHUUorQWdIQVBRSVpRbGtDUWNBOWdobENmUUlCd0QyQ0dZSlpRa0hBQW9KWmduMkNBY0FDZ2xuQ1dZSkJ3RHlDR2NKQ2drSEFQSUlhQWxuQ1FjQThBaG9DZklJQndEd0NHa0phQWtIQU93SWFRbndDQWNBN0FocUNXa0pCd0R1Q0dvSjdBZ0hBTzRJYXdscUNRY0E2QWhzQ1FrSkJ3RG9DRzBKYkFrSEFPb0liUW5vQ0FjQTZnaHVDVzBKQndCZENXOEpYQWtIQUYwSmNBbHZDUWNBWGdsd0NWMEpCd0JlQ1hFSmNBa0hBRjhKY1FsZUNRY0FYd2x5Q1hFSkJ3QmdDWElKWHdrSEFHQUpjd2x5Q1FjQVlRbHpDV0FKQndCaENYUUpjd2tIQUdJSmRBbGhDUWNBWWdsMUNYUUpCd0JqQ1hVSllna0hBR01KZGdsMUNRY0FaQWwyQ1dNSkJ3QmtDWGNKZGdrSEFHVUpkd2xrQ1FjQVpRbDRDWGNKQndCbUNYZ0paUWtIQUdZSmVRbDRDUWNBWndsNUNXWUpCd0JuQ1hvSmVRa0hBR2dKZWdsbkNRY0FhQWw3Q1hvSkJ3QnBDWHNKYUFrSEFHa0pmQWw3Q1FjQWFnbDhDV2tKQndCcUNYMEpmQWtIQUdzSmZRbHFDUWNBYXdsK0NYMEpCd0J0Q1g4SmJBa0hBRzBKZ0FsL0NRY0FiZ21BQ1cwSkJ3QnVDWUVKZ0FrSEFOWUlnZ25aQ0FjQTFnaURDWUlKQndDQ0Nla0kyUWdIQUlJSmhBbnBDQWNBNlFpRkNlb0lCd0RwQ0lRSmhRa0hBSVVKYmducUNBY0FoUW1HQ1c0SkJ3Q0dDWUVKYmdrSEFJWUpod21CQ1FjQWd3bUlDWUlKQndDRENZa0ppQWtIQUlnSmhBbUNDUWNBaUFtS0NZUUpCd0NFQ1lzSmhRa0hBSVFKaWdtTENRY0Fpd21HQ1lVSkJ3Q0xDWXdKaGdrSEFJd0pod21HQ1FjQWpBbU5DWWNKQndBR0NZNEpqd2tIQUFZSkJ3bU9DUWNBQndtUUNZNEpCd0FIQ1FnSmtBa0hBQWdKa1FtUUNRY0FDQWtKQ1pFSkJ3Q1NDUWtKYkFrSEFKSUprUWtKQ1FjQWt3bHNDWDhKQndDVENaSUpiQWtIQU5vSUxBbVVDUWNBMmdndUNTd0pCd0FzQ1NNSmxBa0hBQ3dKSUFrakNRY0FsUWtpQ1NvSkJ3Q1ZDWllKSWdrSEFCNEpsZ21WQ1FjQUhna2RDWllKQndDV0NTTUpJZ2tIQUpZSmx3a2pDUWNBSFFtWENaWUpCd0FkQ1pnSmx3a0hBSmNKbEFrakNRY0Fsd21aQ1pRSkJ3Q1lDWmtKbHdrSEFKZ0ptZ21aQ1FjQW1RbmFDSlFKQndDWkNac0oyZ2dIQUpvSm13bVpDUWNBbWdtUENac0pCd0NiQ2QwSTJnZ0hBSnNKbkFuZENBY0Fqd21jQ1pzSkJ3Q1BDWTRKbkFrSEFKd0o3UWpkQ0FjQW5BbWRDZTBJQndDT0NaMEpuQWtIQUk0SmtBbWRDUWNBblFudUNPMElCd0NkQ1o0SjdnZ0hBSkFKbmdtZENRY0FrQW1SQ1o0SkJ3Q2VDV3NKN2dnSEFKNEpud2xyQ1FjQWtRbWZDWjRKQndDUkNaSUpud2tIQUo4SmZnbHJDUWNBbndtZ0NYNEpCd0NTQ2FBSm53a0hBSklKa3dtZ0NRY0FvUWtxQ1NZSkJ3Q2hDWlVKS2drSEFLSUpsUW1oQ1FjQW9na2VDWlVKQndDakNTWUpKUWtIQUtNSm9Ra21DUWNBcEFtaENhTUpCd0NrQ2FJSm9Ra0hBS1VKSlFrcENRY0FwUW1qQ1NVSkJ3Q21DYU1KcFFrSEFLWUpwQW1qQ1FjQXB3bW9DYWtKQndDbkNhb0pxQWtIQUtzSnFnbW5DUWNBcXdtc0Nhb0pCd0NxQ2EwSnFBa0hBS29KcmdtdENRY0FyQW11Q2FvSkJ3Q3NDYThKcmdrSEFLNEpzQW10Q1FjQXJnbXhDYkFKQndDdkNiRUpyZ2tIQUs4SnNnbXhDUWNBc1FtekNiQUpCd0N4Q2JRSnN3a0hBTElKdEFteENRY0FzZ20xQ2JRSkJ3Q3lDYllKdFFrSEFMSUp0d20yQ1FjQXJ3bTNDYklKQndDdkNiZ0p0d2tIQUtzSnVRbXNDUWNBcXdtNkNia0pCd0M1Q2E4SnJBa0hBTGtKdUFtdkNRY0F1d2tjQ2J3SkJ3QzdDUjhKSEFrSEFKZ0pId203Q1FjQW1Ba2RDUjhKQndDWUNiMEp2Z2tIQUpnSnV3bTlDUWNBdmdtNUNib0pCd0MrQ2IwSnVRa0hBTDBKdUFtNUNRY0F2UW0vQ2JnSkJ3QzdDYjhKdlFrSEFMc0p2QW0vQ1FjQXdBbllDQVlKQndEQUNjRUoyQWdIQUw0SndRbkFDUWNBdmdtNkNjRUpCd0RCQ2RZSTJBZ0hBTUVKd2duV0NBY0F1Z25DQ2NFSkJ3QzZDYXNKd2drSEFNSUpnd25XQ0FjQXdnbkRDWU1KQndDckNjTUp3Z2tIQUtzSnB3bkRDUWNBd3dtSkNZTUpCd0REQ2NRSmlRa0hBS2NKeEFuRENRY0Fwd21wQ2NRSkJ3QUdDWm9Kd0FrSEFBWUpqd21hQ1FjQXdBbVlDYjRKQndEQUNab0ptQWtIQUNrSnhRbWxDUWNBS1FuR0NjVUpCd0NsQ2NjSnBna0hBS1VKeFFuSENRY0FLQW5HQ1NrSkJ3QW9DY2dKeGdrSEFCZ0p5QWtvQ1FjQUdBa3hCOGdKQndBWUNUSUhNUWNIQUJnSkdRa3lCd2NBeVFuS0Njc0pCd0RKQ2N3Snlna0hBTTBKemduUENRY0F6UW5RQ2M0SkJ3RExDYzhKemdrSEFNc0p5Z25QQ1FjQTBRbk1DY2tKQndEUkNkSUp6QWtIQU5NSjFBblZDUWNBMHduV0NkUUpCd0RRQ2RZSjB3a0hBTkFKelFuV0NRY0ExQW5YQ2RVSkJ3RFVDZGdKMXdrSEFOa0oyZ25iQ1FjQTJRbmNDZG9KQndEYkNkMEozZ2tIQU5zSjJnbmRDUWNBM3duY0Nka0pCd0RmQ2VBSjNBa0hBTndKNFFuYUNRY0EzQW5pQ2VFSkJ3RGFDZU1KM1FrSEFOb0o0UW5qQ1FjQTRBbmlDZHdKQndEZ0NlUUo0Z2tIQU9VSjJRbmJDUWNBNVFubUNka0pCd0MwQ2VZSjVRa0hBTFFKdFFubUNRY0E1Z25mQ2RrSkJ3RG1DZWNKM3drSEFMVUo1d25tQ1FjQXRRbTJDZWNKQndEbkNlQUozd2tIQU9jSjZBbmdDUWNBdGdub0NlY0pCd0MyQ2VrSjZBa0hBT2dKNUFuZ0NRY0E2QW5xQ2VRSkJ3RHBDZW9KNkFrSEFPa0o2d25xQ1FjQTdBbmJDZDRKQndEc0NlVUoyd2tIQUxNSjVRbnNDUWNBc3dtMENlVUpCd0R0Q2Q0SjNRa0hBTzBKN0FuZUNRY0E3Z25zQ2UwSkJ3RHVDYk1KN0FrSEFPOEozUW5qQ1FjQTd3bnRDZDBKQndEd0NlMEo3d2tIQVBBSjdnbnRDUWNBeFFqeENjMElCd0RGQ1BJSjhRa0hBTTBJOHduVkNBY0F6UWp4Q2ZNSkJ3RENDUElKeFFnSEFNSUk5QW55Q1FjQXhBajBDY0lJQndERUNQVUo5QWtIQU1jSTlRbkVDQWNBeHdqMkNmVUpCd0RKQ1BZSnh3Z0hBTWtJOXduMkNRY0F5d2ozQ2NrSUJ3RExDUGdKOXdrSEFNb0krQW5MQ0FjQXlnajVDZmdKQndEUUNQa0p5Z2dIQU5BSStnbjVDUWNBMFFqNkNkQUlCd0RSQ1BzSitna0hBT2NJK3duUkNBY0E1d2o4Q2ZzSkJ3RG1DUHdKNXdnSEFPWUkvUW44Q1FjQUJRbjlDZVlJQndBRkNmNEovUWtIQU5FSi93blNDUWNBMFFrQUN2OEpCd0F5QndFS01BY0hBRElIR1FrQkNnY0FSZ2tCQ2hrSkJ3QkdDUUlLQVFvSEFGY0pBZ3BHQ1FjQVZ3a0RDZ0lLQndCV0NRTUtWd2tIQUZZSkJBb0RDZ2NBVlFrRUNsWUpCd0JWQ1FVS0JBb0hBRlFKQlFwVkNRY0FWQWtHQ2dVS0J3QlRDUVlLVkFrSEFGTUpCd29HQ2djQVVna0hDbE1KQndCU0NRZ0tCd29IQUZFSENBcFNDUWNBVVFkVEJ3Z0tCd0JTQndrS1VBY0hBRklIVUFrSkNnY0FVUWtKQ2xBSkJ3QlJDVmtKQ1FvSEFFOEpDZ3BhQ1FjQVR3bE9DUW9LQndCTkNRb0tUZ2tIQUUwSkN3b0tDZ2NBVEFrTENrMEpCd0JNQ1F3S0N3b0hBRXNKREFwTUNRY0FTd2tOQ2d3S0J3QktDUTBLU3drSEFFb0pEZ29OQ2djQVNRa09Da29KQndCSkNROEtEZ29IQUVjSkR3cEpDUWNBUndrUUNnOEtCd0JJQ1JBS1J3a0hBRWdKRVFvUUNnY0FEUWtSQ2tnSkJ3QU5DUklLRVFvSEFOVUlFZ29OQ1FjQTFRanpDUklLQndEeUNSTUs4UWtIQVBJSkZBb1RDZ2NBOFFrVkN2TUpCd0R4Q1JNS0ZRb0hBUFFKRkFyeUNRY0E5QWtXQ2hRS0J3RHpDUmNLRWdvSEFQTUpGUW9YQ2djQTlRa1dDdlFKQndEMUNSZ0tGZ29IQVBZSkdBcjFDUWNBOWdrWkNoZ0tCd0QzQ1JrSzlna0hBUGNKR2dvWkNnY0ErQWthQ3ZjSkJ3RDRDUnNLR2dvSEFQa0pHd3I0Q1FjQStRa2NDaHNLQndENkNSd0srUWtIQVBvSkhRb2NDZ2NBK3drZEN2b0pCd0Q3Q1I0S0hRb0hBUHdKSGdyN0NRY0EvQWtmQ2g0S0J3RDlDUjhLL0FrSEFQMEpJQW9mQ2djQS9na2dDdjBKQndEK0NTRUtJQW9IQUFBS0lnci9DUWNBQUFvakNpSUtCd0F3QnlRS0pRb0hBREFIQVFva0NnY0FBZ29rQ2dFS0J3QUNDaVlLSkFvSEFBTUtKZ29DQ2djQUF3b25DaVlLQndBRUNpY0tBd29IQUFRS0tBb25DZ2NBQlFvb0NnUUtCd0FGQ2lrS0tBb0hBQVlLS1FvRkNnY0FCZ29xQ2lrS0J3QUhDaW9LQmdvSEFBY0tLd29xQ2djQUNBb3JDZ2NLQndBSUNpd0tLd29IQUZNSExBb0lDZ2NBVXdjdENpd0tCd0JRQnk0S0x3b0hBRkFIQ1FvdUNnY0FXUWt1Q2drS0J3QlpDVnNKTGdvSEFGb0pNQXBZQ1FjQVdna0tDakFLQndBTENqQUtDZ29IQUFzS01Rb3dDZ2NBREFveENnc0tCd0FNQ2pJS01Rb0hBQTBLTWdvTUNnY0FEUW96Q2pJS0J3QU9Dak1LRFFvSEFBNEtOQW96Q2djQUR3bzBDZzRLQndBUENqVUtOQW9IQUJBS05Rb1BDZ2NBRUFvMkNqVUtCd0FSQ2pZS0VBb0hBQkVLTndvMkNnY0FFZ28zQ2hFS0J3QVNDaGNLTndvSEFQNEpCQWxjQ1FjQS9na0ZDUVFKQndCY0NTRUsvZ2tIQUZ3SmJ3a2hDZ2NBcGdrNENxUUpCd0NtQ1RrS09Bb0hBS1FKT2dxaUNRY0FwQWs0Q2pvS0J3REhDVGtLcGdrSEFNY0pPd281Q2djQVBBbzdDc2NKQndBOENqMEtPd29IQUtJSlBnb2VDUWNBb2drNkNqNEtCd0FlQ1Q4S0hBa0hBQjRKUGdvL0NnY0FIQWxBQ3J3SkJ3QWNDVDhLUUFvSEFMd0pRUXEvQ1FjQXZBbEFDa0VLQndDL0NVSUt1QWtIQUw4SlFRcENDZ2NBdUFsRENyY0pCd0M0Q1VJS1F3b0hBRGtLUkFvNENnY0FPUXBGQ2tRS0J3QTRDa1lLT2dvSEFEZ0tSQXBHQ2djQU93cEZDamtLQndBN0NrY0tSUW9IQURvS1NBbytDZ2NBT2dwR0NrZ0tCd0E5Q2tjS093b0hBRDBLU1FwSENnY0FQZ3BLQ2o4S0J3QStDa2dLU2dvSEFEOEtTd3BBQ2djQVB3cEtDa3NLQndCQUNrd0tRUW9IQUVBS1N3cE1DZ2NBUVFwTkNrSUtCd0JCQ2t3S1RRb0hBRUlLVGdwRENnY0FRZ3BOQ2s0S0J3QkRDcllKdHdrSEFFTUs2UW0yQ1FjQTZRbE9DdXNKQndEcENVTUtUZ29IQUU4S1VBcFJDZ2NBVHdwU0NsQUtCd0RZQ1ZNSzF3a0hBTmdKVkFwVENnY0FVZ3BWQ2xBS0J3QlNDbFlLVlFvSEFGUUtWd3BUQ2djQVZBcFlDbGNLQndCUUNqd0tVUW9IQUZBS1BRbzhDZ2NBVlFvOUNsQUtCd0JWQ2trS1BRb0hBRmtLeHduRkNRY0FXUXBhQ3NjSkJ3RE9DVm9LV1FvSEFNNEowQWxhQ2djQVdnbzhDc2NKQndCYUNsc0tQQW9IQU5BSld3cGFDZ2NBMEFuVENWc0tCd0JiQ2xFS1BBb0hBRnNLWEFwUkNnY0Ewd2xjQ2xzS0J3RFRDZFVKWEFvSEFGd0tUd3BSQ2djQVhBcGRDazhLQndEVkNWMEtYQW9IQU5VSjF3bGRDZ2NBWFFwU0NrOEtCd0JkQ2w0S1Vnb0hBTmNKWGdwZENnY0Exd2xUQ2w0S0J3QmVDbFlLVWdvSEFGNEtYd3BXQ2djQVV3cGZDbDRLQndCVENsY0tYd29IQUdBS3hRbkdDUWNBWUFwWkNzVUpCd0RMQ1ZrS1lBb0hBTXNKemdsWkNnY0FZUXJHQ2NnSkJ3QmhDbUFLeGdrSEFNa0pZQXBoQ2djQXlRbkxDV0FLQndCaUNzZ0pNUWNIQUdJS1lRcklDUWNBMFFsaENtSUtCd0RSQ2NrSllRb0hBR01LTVFjekJ3Y0FZd3BpQ2pFSEJ3QUFDbUlLWXdvSEFBQUswUWxpQ2djQVpBb3pCMlVLQndCa0NtTUtNd2NIQUNNS1l3cGtDZ2NBSXdvQUNtTUtCd0N0Q1dZS3FBa0hBSzBKWndwbUNnY0FxQWxvQ3FrSkJ3Q29DV1lLYUFvSEFMQUpad3F0Q1FjQXNBbHBDbWNLQndDcENXb0t4QWtIQUtrSmFBcHFDZ2NBeEFsckNva0pCd0RFQ1dvS2F3b0hBSWtKYkFxSUNRY0FpUWxyQ213S0J3Q0lDVzBLaWdrSEFJZ0piQXB0Q2djQVp3cHVDbVlLQndCbkNtOEtiZ29IQUdZS2NBcG9DZ2NBWmdwdUNuQUtCd0JwQ204S1p3b0hBR2tLY1FwdkNnY0FhQXB5Q21vS0J3Qm9DbkFLY2dvSEFHb0tjd3ByQ2djQWFncHlDbk1LQndCckNuUUtiQW9IQUdzS2N3cDBDZ2NBYkFwMUNtMEtCd0JzQ25RS2RRb0hBTzRKc0FtekNRY0E3Z2xwQ3JBSkJ3RHdDV2tLN2drSEFQQUpjUXBwQ2djQWl3bHRDb3dKQndDTENZb0piUW9IQUkwSmJRcDFDZ2NBalFtTUNXMEtCd0J1Qm5ZS2R3b0hBRzRHa0FaMkNnY0FlQXB1Qm5jS0J3QjRDbThHYmdZSEFKQUdlUXAyQ2djQWtBYjNCbmtLQndEM0Jub0tlUW9IQVBjRytBWjZDZ2NBZXdxRUJud0tCd0I3Q29VR2hBWUhBUG9HZXdwOUNnY0ErZ2FGQm5zS0J3QjhDblFHZmdvSEFId0toQVowQmdjQWZncDNCbjhLQndCK0NuUUdkd1lIQVBnR2ZRcDZDZ2NBK0FiNkJuMEtCd0IvQ204R2VBb0hBSDhLZHdadkJnY0Fkd3FBQ29FS0J3QjNDbllLZ0FvSEFJSUtkd3FCQ2djQWdncDRDbmNLQndCMkNvTUtnQW9IQUhZS2VRcURDZ2NBZVFxRUNvTUtCd0I1Q25vS2hBb0hBSVVLZkFxR0NnY0FoUXA3Q253S0J3QjlDb1VLaHdvSEFIMEtld3FGQ2djQWhncCtDb2dLQndDR0Nud0tmZ29IQUlnS2Z3cUpDZ2NBaUFwK0NuOEtCd0I2Q29jS2hBb0hBSG9LZlFxSENnY0FpUXA0Q29JS0J3Q0pDbjhLZUFvSEFJRUtpZ3FMQ2djQWdRcUFDb29LQndDTUNvRUtpd29IQUl3S2dncUJDZ2NBZ0FxTkNvb0tCd0NBQ29NS2pRb0hBSU1LamdxTkNnY0Fnd3FFQ280S0J3Q1BDb1lLa0FvSEFJOEtoUXFHQ2djQWh3cVBDcEVLQndDSENvVUtqd29IQUpBS2lBcVNDZ2NBa0FxR0NvZ0tCd0NTQ29rS2t3b0hBSklLaUFxSkNnY0FoQXFSQ280S0J3Q0VDb2NLa1FvSEFKTUtnZ3FNQ2djQWt3cUpDb0lLQndDTENwUUtsUW9IQUlzS2lncVVDZ2NBbGdxTENwVUtCd0NXQ293S2l3b0hBSW9LbHdxVUNnY0FpZ3FOQ3BjS0J3Q05DcGdLbHdvSEFJMEtqZ3FZQ2djQW1RcVFDcG9LQndDWkNvOEtrQW9IQUpFS21RcWJDZ2NBa1FxUENwa0tCd0NhQ3BJS25Bb0hBSm9La0FxU0NnY0FuQXFUQ3AwS0J3Q2NDcElLa3dvSEFJNEttd3FZQ2djQWpncVJDcHNLQndDZENvd0tsZ29IQUowS2t3cU1DZ2NBbFFwK0JvQUdCd0NWQ3BRS2ZnWUhBSDBHbFFxQUJnY0FmUWFXQ3BVS0J3Q1VDb0lHZmdZSEFKUUtsd3FDQmdjQWx3cUJCb0lHQndDWENwZ0tnUVlIQUl3R21ncUtCZ2NBakFhWkNwb0tCd0NiQ293R2lRWUhBSnNLbVFxTUJnY0FpZ2FjQ280R0J3Q0tCcG9LbkFvSEFJNEduUXFOQmdjQWpnYWNDcDBLQndDWUNva0dnUVlIQUpnS213cUpCZ2NBalFhV0NuMEdCd0NOQnAwS2xnb0hBQzhLVXdkUUJ3Y0FMd290Q2xNSEJ3QldCMGdIUndjSEFGWUhXQWRJQndjQVZBZEhCMFlIQndCVUIxWUhSd2NIQUVnSE5nYy9Cd2NBU0FjMEJ6WUhCd0FGQ0VZSFNnY0hBQVVJVkFkR0J3Y0FCd2hkQndVSUJ3QUhDQWdJWFFjSEFBOElCd2dHQ0FjQUR3Z0xDQWNJQndDZUNzMEp6d2tIQUo0S253ck5DUWNBeWdtZUNzOEpCd0RLQ2FBS25nb0hBTXdKb0FyS0NRY0F6QW1oQ3FBS0J3RE1DYUlLb1FvSEFNd0owZ21pQ2djQTFnbWpDdFFKQndEV0NhUUtvd29IQU0wSnBBcldDUWNBelFtbENxUUtCd0NqQ3RnSjFBa0hBS01LcGdyWUNRY0FvZ3FuQ3FFS0J3Q2lDcWdLcHdvSEFLRUtxUXFnQ2djQW9RcW5DcWtLQndDZ0Nxb0tuZ29IQUtBS3FRcXFDZ2NBSEFndkNDY0lCd0FjQ0MwSUx3Z0hBS3NLckFxdENnY0Fxd3F1Q3F3S0J3Q3FDcTBLcndvSEFLb0txd3F0Q2djQW5ncXZDcDhLQndDZUNxb0tyd29IQUtvS3NBcXJDZ2NBcWdxeENyQUtCd0NwQ3JFS3Fnb0hBS2tLc2dxeENnY0Fxd3F6Q3E0S0J3Q3JDckFLc3dvSEFLY0tzZ3FwQ2djQXB3cTBDcklLQndDb0NyUUtwd29IQUtnS3RRcTBDZ2NBdFFxMkNyUUtCd0MxQ3JjS3Rnb0hBTFFLdUFxeUNnY0F0QXEyQ3JnS0J3Q3lDcmtLc1FvSEFMSUt1QXE1Q2djQXNRcTZDckFLQndDeENya0t1Z29IQUxBS3V3cXpDZ2NBc0FxNkNyc0tCd0MxQ3J3S3R3b0hBTFVLdlFxOENnY0FxQXErQ3JVS0J3Q29DcjhLdmdvSEFLSUt2d3FvQ2djQW9nckFDcjhLQndEU0NjQUtvZ29IQU5JSi93bkFDZ2NBdndyQkNyNEtCd0MvQ3NJS3dRb0hBTUFLd2dxL0NnY0F3QXJEQ3NJS0J3RC9DY01Ld0FvSEFQOEpJZ3JEQ2djQXhBcXNDc1VLQndERUNzWUtyQW9IQUxNS3h3cXVDZ2NBc3dySUNzY0tCd0M3Q3NnS3N3b0hBTHNLeVFySUNnY0F4d3JLQ3NVS0J3REhDc3NLeWdvSEFNZ0t5d3JIQ2djQXlBck1Dc3NLQndESkNzd0t5QW9IQU1rS3pRck1DZ2NBemdyWUNhWUtCd0RPQ2xRSzJBa0hBRlFLendwWUNnY0FWQXJPQ3M4S0J3QzhDdEFLdHdvSEFMd0swUXJRQ2djQXR3clNDcllLQndDM0N0QUswZ29IQUxZSzB3cTRDZ2NBdGdyU0N0TUtCd0M0Q3RRS3VRb0hBTGdLMHdyVUNnY0F5UXJWQ3MwS0J3REpDdFlLMVFvSEFMa0sxd3E2Q2djQXVRclVDdGNLQndDNkN0Z0t1d29IQUxvSzF3cllDZ2NBdXdyV0Nza0tCd0M3Q3RnSzFnb0hBTUVLMlFxK0NnY0F3UXJhQ3RrS0J3QytDcjBLdFFvSEFMNEsyUXE5Q2djQTJ3cmNDdDBLQndEYkN0NEszQW9IQU44SzRBcmhDZ2NBM3dyaUN1QUtCd0RoQ3Q0SzJ3b0hBT0VLNEFyZUNnY0E0d3JpQ3Q4S0J3RGpDdVFLNGdvSEFONEs1UXJjQ2djQTNncm1DdVVLQndEZ0N1WUszZ29IQU9BSzV3cm1DZ2NBNGdybkN1QUtCd0RpQ3VnSzV3b0hBT1FLNkFyaUNnY0E1QXJwQ3VnS0J3RGNDdW9LM1FvSEFOd0s2d3JxQ2djQTNBcnNDdXNLQndEY0N1VUs3QW9IQU8wS3pnckVDZ2NBN1FyUENzNEtCd0RrQ3U0SzZRb0hBT1FLN3dydUNnY0E0d3J2Q3VRS0J3RGpDdkFLN3dvSEFOb0s4UXJaQ2djQTJncnlDdkVLQndEWkN2TUt2UW9IQU5rSzhRcnpDZ2NBdkFyMEN0RUtCd0M4Q3ZVSzlBb0hBTDBLOVFxOENnY0F2UXJ6Q3ZVS0J3RHZDdllLN2dvSEFPOEs5d3IyQ2djQThBcjNDdThLQndEd0N2Z0s5d29IQVBJSytRcnhDZ2NBOGdyNkN2a0tCd0R4Q3ZzSzh3b0hBUEVLK1FyN0NnY0E4d3I4Q3ZVS0J3RHpDdnNLL0FvSEFQVUsvUXIwQ2djQTlRcjhDdjBLQndEM0N2NEs5Z29IQVBjSy93citDZ2NBK0FyL0N2Y0tCd0Q0Q2dBTC93b0hBUHdLQVF2OUNnY0EvQW9DQ3dFTEJ3RDZDZ01MK1FvSEFQb0tCQXNEQ3djQStRb0ZDL3NLQndENUNnTUxCUXNIQVBzS0FndjhDZ2NBK3dvRkN3SUxCd0QvQ2dZTC9nb0hBUDhLQndzR0N3Y0FBQXNIQy84S0J3QUFDd2dMQndzSEFBSUxDUXNCQ3djQUFnc0tDd2tMQndBRkN3b0xBZ3NIQUFVTEN3c0tDd2NBQkFzTUN3TUxCd0FFQ3cwTERBc0hBQU1MQ3dzRkN3Y0FBd3NNQ3dzTEJ3QU5DdzRMREFzSEFBMExEd3NPQ3djQURBc1FDd3NMQndBTUN3NExFQXNIQUFzTEVRc0tDd2NBQ3dzUUN4RUxCd0FLQ3hJTENRc0hBQW9MRVFzU0N3Y0FDQXNUQ3djTEJ3QUlDeFFMRXdzSEFBY0xGUXNHQ3djQUJ3c1RDeFVMQndBV0N4Y0xHQXNIQUJZTEdRc1hDd2NBRndzT0N3OExCd0FYQ3hrTERnc0hBQm9MR1FzV0N3Y0FHZ3NiQ3hrTEJ3QVpDeEFMRGdzSEFCa0xHd3NRQ3djQUd3c2NDeDBMQndBYkN4b0xIQXNIQUJBTEhRc1JDd2NBRUFzYkN4MExCd0FkQ3g0TEh3c0hBQjBMSEFzZUN3Y0FFUXNmQ3hJTEJ3QVJDeDBMSHdzSEFDQUxJUXNpQ3djQUlBc2pDeUVMQndBaUN4TUxGQXNIQUNJTElRc1RDd2NBSXdza0N5RUxCd0FqQ3lVTEpBc0hBQ0VMRlFzVEN3Y0FJUXNrQ3hVTEJ3QWpDeVlMSlFzSEFDTUxKd3NtQ3djQUlBc25DeU1MQndBZ0N5Z0xKd3NIQUJ3TEtRc2VDd2NBSEFzcUN5a0xCd0FhQ3lvTEhBc0hBQm9MS3dzcUN3Y0FGZ3NyQ3hvTEJ3QVdDeXdMS3dzSEFCZ0xMQXNXQ3djQUdBc3RDeXdMQndBbkN5NExKZ3NIQUNjTEx3c3VDd2NBS0FzdkN5Y0xCd0FvQ3pBTEx3c0hBQ29MTVFzcEN3Y0FLZ3N5Q3pFTEJ3QXJDeklMS2dzSEFDc0xNd3N5Q3djQUxBc3pDeXNMQndBc0N6UUxNd3NIQUMwTE5Bc3NDd2NBTFFzMUN6UUxCd0F2Q3pZTExnc0hBQzhMTndzMkN3Y0FNQXMzQ3k4TEJ3QXdDemdMTndzSEFESUxPUXN4Q3djQU1nczZDemtMQndBekN6b0xNZ3NIQURNTE93czZDd2NBTkFzN0N6TUxCd0EwQ3p3TE93c0hBRFVMUEFzMEN3Y0FOUXM5Q3p3TEJ3QStDOXNLM1FvSEFENExQd3ZiQ2djQTFBby9DejRMQndEVUN0TUtQd3NIQUQ4TDRRcmJDZ2NBUHd0QUMrRUtCd0RUQ2tBTFB3c0hBTk1LMGdwQUN3Y0FRQXZmQ3VFS0J3QkFDMEVMM3dvSEFOSUtRUXRBQ3djQTBnclFDa0VMQndCQkMrTUszd29IQUVFTFFndmpDZ2NBMEFwQ0MwRUxCd0RRQ3RFS1Fnc0hBRUlMOEFyakNnY0FRZ3REQy9BS0J3RFJDa01MUWdzSEFORUs5QXBEQ3djQVF3djRDdkFLQndCREMwUUwrQW9IQVBRS1JBdERDd2NBOUFyOUNrUUxCd0JFQ3dBTCtBb0hBRVFMUlFzQUN3Y0EvUXBGQzBRTEJ3RDlDZ0VMUlFzSEFFVUxDQXNBQ3djQVJRdEdDd2dMQndBQkMwWUxSUXNIQUFFTENRdEdDd2NBUmdzVUN3Z0xCd0JHQzBjTEZBc0hBQWtMUnd0R0N3Y0FDUXNTQzBjTEJ3QkhDeUlMRkFzSEFFY0xTQXNpQ3djQUVndElDMGNMQndBU0N4OExTQXNIQUVnTElBc2lDd2NBU0F0SkN5QUxCd0FmQzBrTFNBc0hBQjhMSGd0SkN3Y0FTUXNvQ3lBTEJ3QkpDMG9MS0FzSEFCNExTZ3RKQ3djQUhnc3BDMG9MQndCS0N6QUxLQXNIQUVvTFN3c3dDd2NBS1F0TEMwb0xCd0FwQ3pFTFN3c0hBRXNMT0Fzd0N3Y0FTd3RNQ3pnTEJ3QXhDMHdMU3dzSEFERUxPUXRNQ3djQVRRdmRDdW9LQndCTkN6NEwzUW9IQU5jS1BndE5Dd2NBMXdyVUNqNExCd0JPQytvSzZ3b0hBRTRMVFF2cUNnY0EyQXBOQzA0TEJ3RFlDdGNLVFFzSEFFOEw2d3JzQ2djQVR3dE9DK3NLQndEV0NrNExUd3NIQU5ZSzJBcE9Dd2NBVUF2c0N1VUtCd0JRQzA4TDdBb0hBTlVLVHd0UUN3Y0ExUXJXQ2s4TEJ3QTVDMUVMVEFzSEFEa0xVZ3RSQ3djQVRBdFRDemdMQndCTUMxRUxVd3NIQUQwTFZBczhDd2NBUFF0VkMxUUxCd0E4QzFZTE93c0hBRHdMVkF0V0N3Y0FPd3RYQ3pvTEJ3QTdDMVlMVndzSEFEb0xVZ3M1Q3djQU9ndFhDMUlMQndBNEMxZ0xOd3NIQURnTFV3dFlDd2NBTnd0WkN6WUxCd0EzQzFnTFdRc0hBRk1MV2d0WUN3Y0FVd3RiQzFvTEJ3QllDMXdMV1FzSEFGZ0xXZ3RjQ3djQVVRdGJDMU1MQndCUkMxMExXd3NIQUZJTFhRdFJDd2NBVWd0ZUMxMExCd0JYQzE0TFVnc0hBRmNMWHd0ZUN3Y0FWZ3RmQzFjTEJ3QldDMkFMWHdzSEFGVUxZUXRVQ3djQVZRdGlDMkVMQndCVUMyQUxWZ3NIQUZRTFlRdGdDd2NBV3d0akMxb0xCd0JiQzJRTFl3c0hBRm9MWlF0Y0N3Y0FXZ3RqQzJVTEJ3QmRDMlFMV3dzSEFGMExaZ3RrQ3djQVhndG1DMTBMQndCZUMyY0xaZ3NIQUY4TFp3dGVDd2NBWHd0b0MyY0xCd0JnQzJnTFh3c0hBR0FMYVF0b0N3Y0FZUXRwQzJBTEJ3QmhDMm9MYVFzSEFHSUxhZ3RoQ3djQVlndHJDMm9MQndDbENwOEtyd29IQUtVS3pRbWZDZ2NBcFFxdENxUUtCd0NsQ3E4S3JRb0hBS1FLckFxakNnY0FwQXF0Q3F3S0J3QWxDak1ITUFjSEFDVUtaUW96QndjQXhncWpDcXdLQndER0NxWUtvd29IQUs0S3hRcXNDZ2NBcmdySENzVUtCd0RFQ3NvSzdRb0hBTVFLeFFyS0NnY0FjUUZ0QVd3TEJ3QnhBV3dMYlFzSEFHMEJid0Z1Q3djQWJRRnVDMndMQndCdEMyOExjd0VIQUcwTGN3RnhBUWNBYnd0MUFYY0JCd0J2QzNjQmN3RUhBRzhCb2dGd0N3Y0Fid0Z3QzI0TEJ3Q2lBWW9CaVFFSEFLSUJpUUZ3Q3djQXF3R3BBWFVCQndDckFYVUJid3NIQUt3QnF3RnZDd2NBckFGdkMyMExCd0NzQVcwTGJBc0hBS3dCYkF1dEFRY0FyUUZzQzI0TEJ3Q3RBVzRMcmdFSEFLOEJzZ0Z3Q3djQXJ3RndDNGtCQndDdUFXNExjQXNIQUs0QmNBdXlBUWNBY1F0eUMzTUxCd0J4QzNNTGRBc0hBSFVMZEF0ekN3Y0FkUXR6QzNZTEJ3QjNDM2dMZVFzSEFIY0xlUXQ2Q3djQWV3dDZDM2tMQndCN0Mza0xmQXNIQUhJTGR3dDZDd2NBY2d0NkMzTUxCd0IyQzNNTGVnc0hBSFlMZWd0N0N3Y0FmUXQrQzNnTEJ3QjlDM2dMZHdzSEFIOExnQXR5Q3djQWZ3dHlDM0VMQndDQUMzMExkd3NIQUlBTGR3dHlDd2NBZ1F1Q0M0TUxCd0NCQzRNTGhBc0hBSVFMZ3d1QUN3Y0FoQXVBQzM4TEJ3Q0ZDNFlMaHdzSEFJVUxod3VJQ3djQWlBdUhDMzRMQndDSUMzNExmUXNIQUlJTGhRdUlDd2NBZ2d1SUM0TUxCd0NBQzRNTGlBc0hBSUFMaUF0OUN3Y0FpUXUwQWJjQkJ3Q0pDN2NCaWdzSEFJc0x0UUcwQVFjQWl3dTBBWWtMQndDNUFZd0xpZ3NIQUxrQmlndTNBUWNBdlFHOEFZd0xCd0M5QVl3THVRRUhBSTBMNkFHMUFRY0FqUXUxQVlzTEJ3RFBBZEFCNkFFSEFNOEI2QUdOQ3djQXZBSHZBZkVCQndDOEFmRUJqQXNIQUl3TDhRSHlBUWNBakF2eUFZb0xCd0NKQzRvTDhnRUhBSWtMOGdIekFRY0Fpd3VKQy9NQkJ3Q0xDL01COUFFSEFJMEwrQUgxQVFjQWpRdjFBYzhCQndDTkM0c0w5QUVIQUkwTDlBSDRBUWNBamd1UEM1QUxCd0NPQzVBTGtRc0hBSTRMa1F1U0N3Y0FqZ3VTQzVNTEJ3Q1VDNVVMbGdzSEFKUUxsZ3VYQ3djQWxBdVhDNWdMQndDVUM1Z0xtUXNIQUpjTGxndVBDd2NBbHd1UEM0NExCd0NYQzQ0TGt3c0hBSmNMa3d1WUN3Y0FsUXVhQzVzTEJ3Q1ZDNXNMbGdzSEFJOExuQXVkQ3djQWp3dWRDNUFMQndDV0M1c0xuQXNIQUpZTG5BdVBDd2NBbmd1ZkM2QUxCd0NlQzZBTG9Rc0hBSndMbmd1aEN3Y0FuQXVoQzUwTEJ3Q2lDNk1McEFzSEFLSUxwQXVsQ3djQW1ndWlDNlVMQndDYUM2VUxtd3NIQUtVTHBBdWZDd2NBcFF1ZkM1NExCd0NsQzU0TG5Bc0hBS1VMbkF1YkN3Y0FwZ3ZGQU1jQUJ3Q21DOGNBV3dFSEFLY0xwZ3RiQVFjQXB3dGJBVmtCQndDb0M2Y0xXUUVIQUtnTFdRRlhBUWNBcVF1b0MxY0JCd0NwQzFjQlZRRUhBS29McVF0VkFRY0FxZ3RWQVZFQkJ3Q3JDOE1BeFFBSEFLc0x4UUNtQ3djQXJBdXJDNllMQndDc0M2WUxwd3NIQUswTHJBdW5Dd2NBclF1bkM2Z0xCd0N1QzYwTHFBc0hBSzRMcUF1cEN3Y0Fyd3V1QzZrTEJ3Q3ZDNmtMcWdzSEFMQUx3Z0REQUFjQXNBdkRBS3NMQndDeEM3QUxxd3NIQUxFTHF3dXNDd2NBc2d1eEM2d0xCd0N5QzZ3THJRc0hBTE1Mc2d1dEN3Y0Fzd3V0QzY0TEJ3QzBDN01McmdzSEFMUUxyZ3V2Q3djQWtnQ1JBTUlBQndDU0FNSUFzQXNIQUpVQWtnQ3dDd2NBbFFDd0M3RUxCd0NYQUpVQXNRc0hBSmNBc1F1eUN3Y0FtUUNYQUxJTEJ3Q1pBTElMc3dzSEFKc0FtUUN6Q3djQW13Q3pDN1FMQndBTUFRb0J0UXNIQUF3QnRRdG5BUWNBWndHMUM3WUxCd0JuQWJZTFpRRUhBR1VCdGd1M0N3Y0FaUUczQzJNQkJ3QmpBYmNMdUFzSEFHTUJ1QXRUQVFjQVV3RzRDNm9MQndCVEFhb0xVUUVIQUFvQkNBRzVDd2NBQ2dHNUM3VUxCd0MxQzdrTHVnc0hBTFVMdWd1MkN3Y0F0Z3U2QzdzTEJ3QzJDN3NMdHdzSEFMY0x1d3U4Q3djQXR3dThDN2dMQndDNEM3d0xyd3NIQUxnTHJ3dXFDd2NBQ0FFSEFiMExCd0FJQWIwTHVRc0hBTGtMdlF1K0N3Y0F1UXUrQzdvTEJ3QzZDNzRMdndzSEFMb0x2d3U3Q3djQXV3dS9DOEFMQndDN0M4QUx2QXNIQUx3THdBdTBDd2NBdkF1MEM2OExCd0FIQWRvQTNBQUhBQWNCM0FDOUN3Y0F2UXZjQU44QUJ3QzlDOThBdmdzSEFMNEwzd0RoQUFjQXZndmhBTDhMQndDL0MrRUE0d0FIQUw4TDR3REFDd2NBd0F2akFKc0FCd0RBQzVzQXRBc0hBTUVMd2d2REN3Y0F3UXZEQzhRTEJ3REZDOFlMd2dzSEFNVUx3Z3ZCQ3djQXh3dklDOFlMQndESEM4WUx4UXNIQU1RTHd3dkpDd2NBeEF2SkM4b0xCd0RLQzhrTHl3c0hBTW9MeXd2TUN3Y0F6QXZMQzgwTEJ3RE1DODBMemdzSEFNOEwwQXZSQ3djQXp3dlJDOUlMQndEUUM4a0x3d3NIQU5BTHd3dlJDd2NBMHd2VUM5QUxCd0RUQzlBTHp3c0hBTlFMeXd2SkN3Y0ExQXZKQzlBTEJ3RFZDOVlMMUFzSEFOVUwxQXZUQ3djQTFndk5DOHNMQndEV0M4c0wxQXNIQU5JTDBRdlhDd2NBMGd2WEM5Z0xCd0RSQzhNTHdnc0hBTkVMd2d2WEN3Y0EyQXZYQzlrTEJ3RFlDOWtMMmdzSEFOY0x3Z3ZHQ3djQTF3dkdDOWtMQndEYUM5a0wyd3NIQU5vTDJ3dmNDd2NBMlF2R0M4Z0xCd0RaQzhnTDJ3c0hBTjBMM2d2ZkN3Y0EzUXZmQytBTEJ3RGVDK0VMNGdzSEFONEw0Z3ZmQ3djQTRRdmpDK1FMQndEaEMrUUw0Z3NIQU9VTDNRdmdDd2NBNVF2Z0MrWUxCd0RuQytVTDVnc0hBT2NMNWd2b0N3Y0E2UXZuQytnTEJ3RHBDK2dMNmdzSEFPc0w3QXZ0Q3djQTZ3dnRDKzRMQndEZEMrVUw3QXNIQU4wTDdBdnJDd2NBN0F2dkMvQUxCd0RzQy9BTDdRc0hBT1VMNXd2dkN3Y0E1UXZ2Qyt3TEJ3RHZDL0VMOGdzSEFPOEw4Z3Z3Q3djQTV3dnBDL0VMQndEbkMvRUw3d3NIQVBNTDZ3dnVDd2NBOHd2dUMvUUxCd0RlQzkwTDZ3c0hBTjRMNnd2ekN3Y0E5UXZ6Qy9RTEJ3RDFDL1FMOWdzSEFPRUwzZ3Z6Q3djQTRRdnpDL1VMQndEM0MvVUw5Z3NIQVBjTDlndjRDd2NBNHd2aEMvVUxCd0RqQy9VTDl3c0hBUGtMK2d2N0N3Y0ErUXY4Qy9vTEJ3RDlDLzRML3dzSEFQMExBQXorQ3djQS93djhDL2tMQndEL0MvNEwvQXNIQUFFTUFBejlDd2NBQVF3Q0RBQU1Cd0FCREFNTUFnd0hBQUVNQkF3RERBY0FCQXdGREFNTUJ3QUVEQVlNQlF3SEFBWU1Cd3dGREFjQUJnd0lEQWNNQndBSURBa01Cd3dIQUFnTUNnd0pEQWNBQ2d3TERBa01Cd0FLREF3TUN3d0hBQTBNQ3d3TURBY0FEUXdPREFzTUJ3QVRCUThNRUF3SEFCTUZFZ1VQREFjQUVnVVJEQThNQndBU0JSVUZFUXdIQUJrRkVnd1REQWNBR1FVWUJSSU1Cd0FWQlJNTUVRd0hBQlVGR1FVVERBY0FHQVVVREJJTUJ3QVlCUnNGRkF3SEFCOEZGUXdXREFjQUh3VWVCUlVNQndBWERCOEZGZ3dIQUJjTUlRVWZCUWNBR0F3aEJSY01Cd0FZRENNRklRVUhBQmtNSXdVWURBY0FHUXdsQlNNRkJ3QWFEQ1VGR1F3SEFCb01Kd1VsQlFjQUd3VWJEQlFNQndBYkJTa0ZHd3dIQUJ3TUp3VWFEQWNBSEF3ckJTY0ZCd0FwQlIwTUd3d0hBQ2tGTFFVZERBY0FNQVVjREI0TUJ3QXdCU3NGSEF3SEFCME1NZ1VmREFjQUhRd3RCVElGQndBMEJSNE1JQXdIQURRRk1BVWVEQWNBSHd3MkJTRU1Cd0FmRERJRk5nVUhBQ0VNT0FVaURBY0FJUXcyQlRnRkJ3QTZCU0FNSXd3SEFEb0ZOQVVnREFjQUpBdzlCU1VNQndBa0REc0ZQUVVIQUNJTU93VWtEQWNBSWd3NEJUc0ZCd0JBQlNNTUpnd0hBRUFGT2dVakRBY0FKd3dvRENrTUJ3QW5EQ29NS0F3SEFDb01Ld3dvREFjQUtnd3NEQ3NNQndBdERDNE1Md3dIQUMwTU1Bd3VEQWNBTEF3dkRDc01Cd0FzREMwTUx3d0hBREFNTVF3dURBY0FNQXd5RERFTUJ3QXpERFFNTlF3SEFETU1OZ3cwREFjQU53d3pERFVNQndBM0REZ01Nd3dIQURrTU9BdzNEQWNBT1F3NkREZ01Cd0E3RERvTU9Rd0hBRHNNUEF3NkRBY0FQUXc4RERzTUJ3QTlERDRNUEF3SEFESU1Qd3d4REFjQU1neEFERDhNQndCQkRENE1QUXdIQUVFTVFndytEQWNBUUF4REREOE1Cd0JBREVRTVF3d0hBRVVNUVF4R0RBY0FSUXhDREVFTUJ3QkRERWNNU0F3SEFFTU1SQXhIREFjQVNReEdERW9NQndCSkRFVU1SZ3dIQUVnTVN3eE1EQWNBU0F4SERFc01Cd0JNREUwTVRnd0hBRXdNU3d4TkRBY0FUd3hLREZBTUJ3QlBERWtNU2d3SEFGRU1VZ3hUREFjQVVReFVERklNQndCT0RGUU1VUXdIQUU0TVRReFVEQWNBVlF4UURGWU1Cd0JWREU4TVVBd0hBQ2tNK3d2NkN3Y0FLUXdvRFBzTEJ3QW9EUGtMK3dzSEFDZ01Ld3o1Q3djQUx3ejlDLzhMQndBdkRDNE0vUXNIQUNzTS93djVDd2NBS3d3dkRQOExCd0F1REFFTS9Rc0hBQzRNTVF3QkRBY0FOUXhYREZnTUJ3QTFERFFNVnd3SEFGa01OUXhZREFjQVdRdzNERFVNQndCYUREY01XUXdIQUZvTU9RdzNEQWNBV3d3NURGb01Cd0JiRERzTU9Rd0hBRndNT3d4YkRBY0FYQXc5RERzTUJ3QXhEQVFNQVF3SEFERU1Qd3dFREFjQVhRdzlERndNQndCZERFRU1QUXdIQUQ4TUJnd0VEQWNBUHd4RERBWU1Cd0JHREYwTVhnd0hBRVlNUVF4ZERBY0FCZ3hJREFnTUJ3QUdERU1NU0F3SEFFb01YZ3hmREFjQVNneEdERjRNQndBSURFd01DZ3dIQUFnTVNBeE1EQWNBQ2d4T0RBd01Cd0FLREV3TVRnd0hBRkFNWHd4Z0RBY0FVQXhLREY4TUJ3QU5ERk1NRGd3SEFBME1VUXhUREFjQURBeFJEQTBNQndBTURFNE1VUXdIQUZZTVlBeGhEQWNBVmd4UURHQU1Cd0FQRENjTUVBd0hBQThNS2d3bkRBY0FFUXdxREE4TUJ3QVJEQ3dNS2d3SEFCSU1MUXdUREFjQUVnd3dEQzBNQndBVERDd01FUXdIQUJNTUxRd3NEQWNBRkF3d0RCSU1Cd0FVRERJTU1Bd0hBQlVNTXd3V0RBY0FGUXcyRERNTUJ3QXpEQmNNRmd3SEFETU1PQXdYREFjQU9Bd1lEQmNNQndBNEREb01HQXdIQURvTUdRd1lEQWNBT2d3OERCa01Cd0E4REJvTUdRd0hBRHdNUGd3YURBY0FHd3d5REJRTUJ3QWJERUFNTWd3SEFENE1IQXdhREFjQVBneENEQndNQndBZERFQU1Hd3dIQUIwTVJBeEFEQWNBSEF4RkRCNE1Cd0FjREVJTVJRd0hBRWNNSFF3ZkRBY0FSd3hFREIwTUJ3QWVERWtNSUF3SEFCNE1SUXhKREFjQVN3d2ZEQ0VNQndCTERFY01Id3dIQUUwTUlRd2lEQWNBVFF4TERDRU1Cd0FnREU4TUl3d0hBQ0FNU1F4UERBY0FVZ3drRENVTUJ3QlNERlFNSkF3SEFGUU1JZ3drREFjQVZBeE5EQ0lNQndBakRGVU1KZ3dIQUNNTVR3eFZEQWNBSmd4ZEJVQUZCd0FtREdJTVhRVUhBR0lNUFFWZEJRY0FZZ3dsREQwRkJ3QlZER0lNSmd3SEFGVU1Zd3hpREFjQVl3d2xER0lNQndCakRGSU1KUXdIQUZZTVl3eFZEQWNBVmd4a0RHTU1Cd0JrREZJTVl3d0hBR1FNVXd4U0RBY0FZUXhrREZZTUJ3QmhER1VNWkF3SEFHVU1Vd3hrREFjQVpRd09ERk1NQndCZ0RHVU1ZUXdIQUdBTVpneGxEQWNBWmd3T0RHVU1Cd0JtREFzTURnd0hBRjhNWmd4Z0RBY0FYd3huREdZTUJ3Qm5EQXNNWmd3SEFHY01DUXdMREFjQVhneG5ERjhNQndCZURHZ01ad3dIQUdnTUNReG5EQWNBYUF3SERBa01Cd0JkREdnTVhnd0hBRjBNYVF4b0RBY0FhUXdIREdnTUJ3QnBEQVVNQnd3SEFGd01hUXhkREFjQVhBeHFER2tNQndCcURBVU1hUXdIQUdvTUF3d0ZEQWNBV3d4cURGd01Cd0JiREdzTWFnd0hBR3NNQXd4cURBY0Fhd3dDREFNTUJ3QmFER3NNV3d3SEFGb01iQXhyREFjQWJBd0NER3NNQndCc0RBQU1BZ3dIQUZrTWJBeGFEQWNBV1F4dERHd01Cd0J0REFBTWJBd0hBRzBNL2dzQURBY0FXQXh0REZrTUJ3QllERzRNYlF3SEFHNE0vZ3R0REFjQWJnejhDLzRMQndCWERHNE1XQXdIQUZjTWJ3eHVEQWNBYnd6OEMyNE1Cd0J2RFBvTC9Bc0hBRFFNYnd4WERBY0FOQXh3REc4TUJ3QndEUG9MYnd3SEFIQU1LUXo2Q3djQU5neHdERFFNQndBMkRIRU1jQXdIQUhFTUtReHdEQWNBY1F3bkRDa01Cd0FWREhFTU5nd0hBQlVNY2d4eERBY0FjZ3duREhFTUJ3QnlEQkFNSnd3SEFCNEZjZ3dWREFjQUhnVmVCWElNQndCZUJSQU1jZ3dIQUY0RkV3VVFEQWNBY3d4MERIVU1Cd0J6REhZTWRBd0hBSGNNZUF4NURBY0Fkd3g2REhnTUJ3QjJESGtNZEF3SEFIWU1kd3g1REFjQWVneDdESGdNQndCNkRId01ld3dIQUgwTWV3eDhEQWNBZlF4K0RIc01Cd0IvREg0TWZRd0hBSDhNZ0F4K0RBY0FnUXlBREg4TUJ3Q0JESUlNZ0F3SEFJTU1nZ3lCREFjQWd3eUVESUlNQndDRkRJUU1nd3dIQUlVTWhneUVEQWNBaFF5SERJWU1Cd0NGRElnTWh3d0hBSWtNeXdXS0RBY0FpUXpKQmNzRkJ3Q0xETWtGaVF3SEFJc016UVhKQlFjQWpBelJCWTBNQndDTURNOEYwUVVIQUkwTXpRV0xEQWNBalF6UkJjMEZCd0NPRE04RmpBd0hBSTRNMHdYUEJRY0Fqd3pYQlpBTUJ3Q1BETlVGMXdVSEFOY0ZrUXlRREFjQTF3WFpCWkVNQndEWkJaSU1rUXdIQU5rRjJ3V1NEQWNBMndXVERKSU1Cd0RiQmQwRmt3d0hBTjBGbEF5VERBY0EzUVhmQlpRTUJ3Q1ZETk1Gamd3SEFKVU00UVhUQlFjQTN3V1dESlFNQndEZkJlTUZsZ3dIQUpjTTRRV1ZEQWNBbHd6bEJlRUZCd0NXRE9nRm1Bd0hBSllNNHdYb0JRY0E2Z1dYREprTUJ3RHFCZVVGbHd3SEFKZ003QVdhREFjQW1Bem9CZXdGQndEdUJaa01td3dIQU80RjZnV1pEQWNBOEFXYkRKd01Cd0R3QmU0Rm13d0hBSm9NOGdXZERBY0FtZ3pzQmZJRkJ3RDFCWjRNbnd3SEFQVUY5QVdlREFjQTlBV2NESjRNQndEMEJmQUZuQXdIQUowTStBV2dEQWNBblF6eUJmZ0ZCd0NoREtJTW93d0hBS0VNcEF5aURBY0FwUXlrREtFTUJ3Q2xES1lNcEF3SEFLY01xQXlwREFjQXB3eXFES2dNQndDcERLWU1wUXdIQUtrTXFBeW1EQWNBcXd5cURLY01Cd0NyREt3TXFnd0hBSzBNcmd5dkRBY0FyUXl3REs0TUJ3Q3VETEVNcnd3SEFLNE1zZ3l4REFjQXNneXpETEVNQndDeURMUU1zd3dIQUxRTXRReXpEQWNBdEF5MkRMVU1Cd0MyRExjTXRRd0hBTFlNdUF5M0RBY0F1UXlzREtzTUJ3QzVETG9NckF3SEFMZ011d3kzREFjQXVBeThETHNNQndDOURMb011UXdIQUwwTXZneTZEQWNBdXd5L0RNQU1Cd0M3REx3TXZ3d0hBTUVNdlF6Q0RBY0F3UXkrREwwTUJ3REFETU1NeEF3SEFNQU12d3pEREFjQXhRekNETVlNQndERkRNRU13Z3dIQU1jTXhneklEQWNBeHd6RkRNWU1Cd0RFRE1rTXlnd0hBTVFNd3d6SkRBY0F5d3pNRE0wTUJ3RExETTRNekF3SEFNNE15QXpNREFjQXpnekhETWdNQndES0RNOE0wQXdIQU1vTXlRelBEQWNBZFF5akRITU1Cd0IxREtFTW93d0hBSFFNb1F4MURBY0FkQXlsREtFTUJ3QjRES2tNZVF3SEFIZ01wd3lwREFjQWVReWxESFFNQndCNURLa01wUXdIQUhzTXB3eDREQWNBZXd5ckRLY01Cd0RSREs4TTBnd0hBTkVNclF5dkRBY0Fyd3pURE5JTUJ3Q3ZETEVNMHd3SEFMRU0xQXpUREFjQXNReXpETlFNQndDekROVU0xQXdIQUxNTXRRelZEQWNBdFF6V0ROVU1Cd0MxRExjTTFnd0hBSDRNcXd4N0RBY0FmZ3k1REtzTUJ3QzNETmNNMWd3SEFMY011d3pYREFjQWdBeTVESDRNQndDQURMME11UXdIQU5jTXdBellEQWNBMXd5N0RNQU1Cd0RDRElBTWdnd0hBTUlNdlF5QURBY0EyQXpFRE5rTUJ3RFlETUFNeEF3SEFNWU1nZ3lFREFjQXhnekNESUlNQndESURJUU1oZ3dIQU1nTXhneUVEQWNBMlF6S0ROb01Cd0RaRE1RTXlnd0hBTTBNaHd5SURBY0F6UXpNREljTUJ3RE1ESVlNaHd3SEFNd015QXlHREFjQTJnelFETnNNQndEYURNb00wQXdIQUtJTWlReUtEQWNBb2d5a0RJa01Cd0NrRElzTWlRd0hBS1FNcGd5TERBY0FxQXlNREkwTUJ3Q29ES29NakF3SEFLWU1qUXlMREFjQXBneW9ESTBNQndDcURJNE1qQXdIQUtvTXJBeU9EQWNBcmd5UERKQU1Cd0N1RExBTWp3d0hBSkVNcmd5UURBY0FrUXl5REs0TUJ3Q1NETElNa1F3SEFKSU10QXl5REFjQWt3eTBESklNQndDVERMWU10QXdIQUpRTXRneVREQWNBbEF5NERMWU1Cd0NzREpVTWpnd0hBS3dNdWd5VkRBY0FsZ3k0REpRTUJ3Q1dETHdNdUF3SEFMb01sd3lWREFjQXVneStESmNNQndDL0RKWU1tQXdIQUw4TXZBeVdEQWNBbHd6QkRKa01Cd0NYREw0TXdRd0hBTU1NbUF5YURBY0F3d3kvREpnTUJ3Q1pETVVNbXd3SEFKa013UXpGREFjQW13ekhESndNQndDYkRNVU14d3dIQU1rTW1neWREQWNBeVF6RERKb01Cd0NlRE1zTW53d0hBSjRNemd6TERBY0FuQXpPREo0TUJ3Q2NETWNNemd3SEFNOE1uUXlnREFjQXp3ekpESjBNQndBVkJxQU0rQVVIQUJVRzNBeWdEQWNBOVFYY0RCVUdCd0QxQlo4TTNBd0hBTndNend5Z0RBY0EzQXpkRE04TUJ3Q2ZETjBNM0F3SEFKOE15d3pkREFjQTNRelFETThNQndEZERONE0wQXdIQU1zTTNnemREQWNBeXd6TkRONE1Cd0RlRE5zTTBBd0hBTjRNM3d6YkRBY0F6UXpmRE40TUJ3RE5ESWdNM3d3SEFOOE0yZ3piREFjQTN3emdETm9NQndDSURPQU0zd3dIQUlnTWhRemdEQWNBNEF6WkROb01Cd0RnRE9FTTJRd0hBSVVNNFF6Z0RBY0FoUXlERE9FTUJ3RGhETmdNMlF3SEFPRU00Z3pZREFjQWd3emlET0VNQndDRERJRU00Z3dIQU9JTTF3ellEQWNBNGd6akROY01Cd0NCRE9NTTRnd0hBSUVNZnd6akRBY0E0d3pXRE5jTUJ3RGpET1FNMWd3SEFIOE01QXpqREFjQWZ3eDlET1FNQndEa0ROVU0xZ3dIQU9RTTVRelZEQWNBZlF6bERPUU1Cd0I5REh3TTVRd0hBT1VNMUF6VkRBY0E1UXptRE5RTUJ3QjhET1lNNVF3SEFId01lZ3ptREFjQTVnelRETlFNQndEbURPY00wd3dIQUhvTTV3em1EQWNBZWd4M0RPY01Cd0RuRE5JTTB3d0hBT2NNNkF6U0RBY0Fkd3pvRE9jTUJ3QjNESFlNNkF3SEFPZ00wUXpTREFjQTZBenBETkVNQndCMkRPa002QXdIQUhZTWN3enBEQWNBNlF5dERORU1Cd0RwRE9vTXJRd0hBSE1NNmd6cERBY0Fjd3lqRE9vTUJ3RHFETEFNclF3SEFPb002d3l3REFjQW93enJET29NQndDakRLSU02d3dIQU9zTWp3eXdEQWNBNnd6c0RJOE1Cd0NpRE93TTZ3d0hBS0lNaWd6c0RBY0E3QXpWQlk4TUJ3RHNEQllHMVFVSEFJb01GZ2JzREFjQWlnekxCUllHQndEdERPNE03d3dIQU8wTThBenVEQWNBOFF6dkRQSU1Cd0R4RE8wTTd3d0hBUE1NN2d6MERBY0E4d3p2RE80TUJ3RDFETzhNOHd3SEFQVU04Z3p2REFjQTlnejBEUGNNQndEMkRQTU05QXdIQVBnTTh3ejJEQWNBK0F6MURQTU1Cd0Q1RFBvTSt3d0hBUGtNL0F6NkRBY0EvUXo1RFA0TUJ3RDlEUHdNK1F3SEFQOE1BQTBCRFFjQS93d0NEUUFOQndBQkRRTU5CQTBIQUFFTkFBMEREUWNBQlEwR0RRY05Cd0FGRFFnTkJnMEhBQWtOQ2cwTERRY0FDUTBNRFFvTkJ3QUNEUTBOQUEwSEFBSU5EZzBORFFjQUFBMFBEUU1OQndBQURRME5EdzBIQUFnTkVBMEdEUWNBQ0EwUkRSQU5Cd0FNRFJJTkNnMEhBQXdORXcwU0RRY0FGQTBWRFJZTkJ3QVVEUmNORlEwSEFCWU5HQTBaRFFjQUZnMFZEUmdOQndBYURSc05IQTBIQUJvTkhRMGJEUWNBR3cwZURSOE5Cd0FiRFIwTkhnMEhBQ0FOK2d6OERBY0FJQTBoRGZvTUJ3RDlEQ0FOL0F3SEFQME1JZzBnRFFjQUl3MGtEU1VOQndBakRTWU5KQTBIQUNjTkpRMGtEUWNBSncwb0RTVU5Cd0FwRFFRTkF3MEhBQ2tOS2cwRURRY0FLdzBERFE4TkJ3QXJEU2tOQXcwSEFDY05MQTBvRFFjQUp3MHREU3dOQndBdURTOE5NQTBIQUM0Tk1RMHZEUWNBTVEwdERTOE5Cd0F4RFN3TkxRMEhBRElOTXcwMERRY0FNZzAxRFRNTkJ3QTFEUjhOTXcwSEFEVU5HdzBmRFFjQU5nMDFEVElOQndBMkRUY05OUTBIQURjTkd3MDFEUWNBTncwY0RSc05Cd0E0RFNJTk9RMEhBRGdOSUEwaURRY0FJQTA2RFNFTkJ3QWdEVGdOT2cwSEFBa05PdzBNRFFjQUNRMDhEVHNOQndBTURUME5FdzBIQUF3Tk93MDlEUWNBUGcwL0RVQU5Cd0ErRFVFTlB3MEhBRUVOOEF3L0RRY0FRUTN1RFBBTUJ3QkNEVUVOUGcwSEFFSU5RdzFCRFFjQVF3M3VERUVOQndCRERmUU03Z3dIQUVRTlF3MUNEUWNBUkExRkRVTU5Cd0JGRGZRTVF3MEhBRVVOOXd6MERBY0FSZzM2RENFTkJ3QkdEZnNNK2d3SEFEb05SZzBoRFFjQU9nMUhEVVlOQndCSURRc05DZzBIQUVnTlNRMExEUWNBRWcxSURRb05Cd0FTRFVvTlNBMEhBRXNOQ1ExTURRY0FTdzA4RFFrTkJ3Qk1EUXNOU1EwSEFFd05DUTBMRFFjQUl3MU5EVTROQndBakRTVU5UUTBIQUNnTlRRMGxEUWNBS0ExUERVME5Cd0JQRFN3TlVBMEhBRThOS0Ewc0RRY0FVUTB4RFM0TkJ3QlJEVklOTVEwSEFGSU5MQTB4RFFjQVVnMVFEU3dOQndENURGTU5WQTBIQVBrTSt3eFREUWNBN1F4VERmQU1Cd0R0REZRTlV3MEhBRlVOK1F4VURRY0FWUTMrRFBrTUJ3RHhERlFON1F3SEFQRU1WUTFVRFFjQVJ3MVdEVVlOQndCSERWY05WZzBIQUQ4TlZ3MUFEUWNBUHcxV0RWY05Cd0R3REZZTlB3MEhBUEFNVXcxV0RRY0Erd3hXRFZNTkJ3RDdERVlOVmcwSEFGRU5XQTFTRFFjQVVRMVpEVmdOQndCWkRUTU5XQTBIQUZrTk5BMHpEUWNBV2cxYkRWd05Cd0JhRFYwTld3MEhBRjBOR0ExYkRRY0FYUTBaRFJnTkJ3QlNEVjROVUEwSEFGSU5XQTFlRFFjQVdBMGZEVjROQndCWURUTU5IdzBIQUZBTlh3MVBEUWNBVUExZURWOE5Cd0JlRFI0Tlh3MEhBRjROSHcwZURRY0FUdzFnRFUwTkJ3QlBEVjhOWUEwSEFGOE5IUTFnRFFjQVh3MGVEUjBOQndCTkRXRU5UZzBIQUUwTllBMWhEUWNBWUEwYURXRU5Cd0JnRFIwTkdnMEhBUFlNWWcxakRRY0E5Z3ozREdJTkJ3QklEV0lOU1EwSEFFZ05ZdzFpRFFjQStBeGpEV1FOQndENERQWU1ZdzBIQUdRTlNBMUtEUWNBWkExakRVZ05Cd0JsRFVzTlRBMEhBR1VOWmcxTERRY0FaZzFGRFVRTkJ3Qm1EV1VOUlEwSEFHSU5SUTFsRFFjQVlnMzNERVVOQndCaURVd05TUTBIQUdJTlpRMU1EUWNBSmcxbkRTUU5Cd0FtRFdnTlp3MEhBQ2NOWncxcERRY0FKdzBrRFdjTkJ3QnFEUzhOYXcwSEFHb05NQTB2RFFjQWJBMHZEUzBOQndCc0RXc05MdzBIQUdrTkxRMG5EUWNBYVExc0RTME5Cd0FxRFcwTkJBMEhBQ29OYmcxdERRY0FiZzFyRFcwTkJ3QnVEV29OYXcwSEFBY05idzBGRFFjQUJ3MXdEVzhOQndCd0RYRU5idzBIQUhBTmNnMXhEUWNBQkExekRRRU5Cd0FFRFcwTmN3MEhBRzBOYkExekRRY0FiUTFyRFd3TkJ3QUJEWFFOL3d3SEFBRU5jdzEwRFFjQWN3MXBEWFFOQndCekRXd05hUTBIQVA4TWRRMENEUWNBL3d4MERYVU5Cd0IwRFdjTmRRMEhBSFFOYVExbkRRY0FBZzEyRFE0TkJ3QUNEWFVOZGcwSEFIVU5hQTEyRFFjQWRRMW5EV2dOQndCM0RXWU5SQTBIQUhjTmVBMW1EUWNBZVExRURVSU5Cd0I1RFhjTlJBMEhBSG9OY1ExeURRY0FlZzE3RFhFTkJ3QjhEVEFOYWcwSEFId05mUTB3RFFjQWZRMHVEVEFOQndCOURYNE5MZzBIQUg0TlVRMHVEUWNBZmcxL0RWRU5Cd0NBRFZvTlhBMEhBSUFOZ1ExYURRY0FnZzFBRFZjTkJ3Q0NEWU1OUUEwSEFJTU5QZzFBRFFjQWd3MkVEVDROQndDRURVSU5QZzBIQUlRTmVRMUNEUWNBaFExNERYY05Cd0NGRFlZTmVBMEhBSWNOZHcxNURRY0FodzJGRFhjTkJ3Q0lEWGtOaEEwSEFJZ05odzE1RFFjQWlRMTdEWG9OQndDSkRZb05ldzBIQUlzTmZRMThEUWNBaXcyTURYME5Cd0NNRFg0TmZRMEhBSXdOalExK0RRY0FqUTEvRFg0TkJ3Q05EWTROZncwSEFJOE5nUTJBRFFjQWp3MlFEWUVOQndDUkRZTU5nZzBIQUpFTmtnMkREUWNBa2cyRURZTU5Cd0NTRFlnTmhBMEhBQ2tOa3cwcURRY0FLUTJVRFpNTkJ3Q1ZEWlFObGcwSEFKVU5rdzJVRFFjQUt3MlVEU2tOQndBckRaY05sQTBIQUpZTmx3MllEUWNBbGcyVURaY05Cd0NaRFpNTmxRMEhBSmtObWcyVERRY0FtZzBxRFpNTkJ3Q2FEVzROS2cwSEFKc05tZzJaRFFjQW13MmNEWm9OQndDY0RXNE5tZzBIQUp3TmFnMXVEUWNBYWcyZERYd05Cd0JxRFp3Tm5RMEhBSjRObkEyYkRRY0FuZzJkRFp3TkJ3QjhEWjhOaXcwSEFId05uUTJmRFFjQW9BMmREWjROQndDZ0RaOE5uUTBIQURrTm9RMDREUWNBT1EyaURhRU5Cd0E0RGFNTk9nMEhBRGdOb1EyakRRY0FPZzJrRFVjTkJ3QTZEYU1OcEEwSEFGY05wQTJsRFFjQVZ3MUhEYVFOQndCWERhWU5nZzBIQUZjTnBRMm1EUWNBZ2cybkRaRU5Cd0NDRGFZTnB3MEhBS2dOT3cwOERRY0FxQTJwRFRzTkJ3QUdEYWdOQncwSEFBWU5xUTJvRFFjQXFRMDlEVHNOQndDcERhb05QUTBIQUJBTnFRMEdEUWNBRUEycURha05Cd0NvRFhBTkJ3MEhBS2dOcXcxd0RRY0FQQTJyRGFnTkJ3QThEVXNOcXcwSEFLc05jZzF3RFFjQXF3MnNEWElOQndCTERhd05xdzBIQUVzTlpnMnNEUWNBY2cydERYb05Cd0J5RGF3TnJRMEhBSGdOckExbURRY0FlQTJ0RGF3TkJ3QjZEYTROaVEwSEFIb05yUTJ1RFFjQWhnMnREWGdOQndDR0RhNE5yUTBIQURZTnJ3MndEUWNBTmcweURhOE5Cd0FYRGE4TkZRMEhBQmNOc0EydkRRY0FNZzJ4RGE4TkJ3QXlEVFFOc1EwSEFCVU5zUTBZRFFjQUZRMnZEYkVOQndCYkRiSU5YQTBIQUZzTnN3MnlEUWNBV1EyeURiTU5Cd0JaRFZFTnNnMEhBQmdOc3cxYkRRY0FHQTJ4RGJNTkJ3QTBEYk1Oc1EwSEFEUU5XUTJ6RFFjQVhBMjBEWUFOQndCY0RiSU50QTBIQUg4TnNnMVJEUWNBZncyMERiSU5Cd0NBRGJVTmp3MEhBSUFOdEEyMURRY0FqZzIwRFg4TkJ3Q09EYlVOdEEwSEFMWU50dzI0RFFjQXRnMjVEYmNOQndDNERib051dzBIQUxnTnR3MjZEUWNBdVEyOERiY05Cd0M1RGIwTnZBMEhBTGNOdmcyNkRRY0F0dzI4RGI0TkJ3Qy9EY0FOd1EwSEFMOE53ZzNBRFFjQXdRM0REY1FOQndEQkRjQU53dzBIQU1VTnhnM0hEUWNBeFEzSURjWU5Cd0RHRGNBTndnMEhBTVlOeUEzQURRY0F5UTNJRGNVTkJ3REpEY29OeUEwSEFNZ053dzNBRFFjQXlBM0tEY01OQndERkRjc055UTBIQU1VTnpBM0xEUWNBeHczTURjVU5Cd0RIRGMwTnpBMEhBTTROenczUURRY0F6ZzNSRGM4TkJ3RFFEZElOMHcwSEFOQU56dzNTRFFjQXp3M1VEZElOQndEUERkVU4xQTBIQU5FTjFRM1BEUWNBMFEzV0RkVU5Cd0RYRGRnTjJRMEhBTmNOMmczWURRY0EydzNaRGR3TkJ3RGJEZGNOMlEwSEFOME4yZzNYRFFjQTNRM2VEZG9OQndEZkRkY04ydzBIQU44TjNRM1hEUWNBNEEzaERlSU5Cd0RnRGVNTjRRMEhBT1FONGczbERRY0E1QTNnRGVJTkJ3RG1EZWNONkEwSEFPWU42UTNuRFFjQTZBM3FEZXNOQndEb0RlY042ZzBIQU5BTjdBM3REUWNBMEEzVERld05Cd0R1RGRBTjdRMEhBTzROemczUURRY0E3dzN3RGZFTkJ3RHZEZklOOEEwSEFQRU44dzN2RFFjQThRMzBEZk1OQndEMURmQU45ZzBIQVBVTjhRM3dEUWNBOVEzMERmRU5Cd0QxRGZjTjlBMEhBUGdOOXczMURRY0ErQTM1RGZjTkJ3RDZEZmtOK0EwSEFQb04rdzM1RFFjQS9BMzFEZllOQndEOERmZ045UTBIQVAwTitBMzhEUWNBL1EzNkRmZ05Cd0QrRGZJTjd3MEhBUDROL3czeURRY0EvZzN6RFFBT0J3RCtEZThOOHcwSEFBRU91dzI2RFFjQUFRNENEcnNOQndEK0RRSU9BUTRIQVA0TkFBNENEZ2NBQXc2NkRiNE5Cd0FERGdFT3VnMEhBUDhOQVE0RERnY0EvdzMrRFFFT0J3QUVEcmtOdGcwSEFBUU9CUTY1RFFjQUJRNjlEYmtOQndBRkRnWU92UTBIQUFjTzh3MElEZ2NBQnc0QUR2TU5Cd0FKRGdBT0J3NEhBQWtPQWc0QURnY0FDQTcwRFFvT0J3QUlEdk1OOUEwSEFBb085dzBMRGdjQUNnNzBEZmNOQndBTER2a05EQTRIQUFzTzl3MzVEUWNBK2cwTkR2c05Cd0Q2RFE0T0RRNEhBUDBORGc3NkRRY0EvUTBQRGc0T0J3QU5EdmtOK3cwSEFBME9EQTc1RFFjQUVBNFJEaElPQndBUURoTU9FUTRIQUJNT0NBNFJEZ2NBRXc0SERnZ09Cd0FVRGhNT0VBNEhBQlFPRlE0VERnY0FGUTRIRGhNT0J3QVZEZ2tPQnc0SEFCSU9GZzRYRGdjQUVnNFJEaFlPQndBUkRnb09GZzRIQUJFT0NBNEtEZ2NBRnc0WURoa09Cd0FYRGhZT0dBNEhBQllPQ3c0WURnY0FGZzRLRGdzT0J3QVpEaG9PR3c0SEFCa09HQTRhRGdjQUdBNE1EaG9PQndBWURnc09EQTRIQUJzT0hBNGREZ2NBR3c0YURod09Cd0FhRGcwT0hBNEhBQm9PREE0TkRnY0FIUTRlRGg4T0J3QWREaHdPSGc0SEFCd09EZzRlRGdjQUhBNE5EZzRPQndBZkRpQU9JUTRIQUI4T0hnNGdEZ2NBSGc0UERpQU9Cd0FlRGc0T0R3NEhBTFlORkE0RURnY0F0ZzBWRGhRT0J3QzREUlVPdGcwSEFMZ05DUTRWRGdjQXV3MEpEcmdOQndDN0RRSU9DUTRIQUNJT0l3NGtEZ2NBSWc0bERpTU9Cd0FtRGlVT0p3NEhBQ1lPSXc0bERnY0FLQTRrRGlNT0J3QW9EaWtPSkE0SEFDb09JdzRtRGdjQUtnNG9EaU1PQndBckR1TU40QTBIQUNzT0xBN2pEUWNBMkEwckR0a05Cd0RZRFN3T0t3NEhBQzBPNEEza0RRY0FMUTRyRHVBTkJ3RFpEUzBPM0EwSEFOa05LdzR0RGdjQUxnN25EZWtOQndBdURpOE81dzBIQU13TkxnN0xEUWNBekEwdkRpNE9Cd0F2RHVvTjV3MEhBQzhPTUE3cURRY0F6UTB2RHN3TkJ3RE5EVEFPTHc0SEFERU9MQTdZRFFjQU1RNHlEaXdPQndBekR0Z04yZzBIQURNT01RN1lEUWNBTkE3YURkNE5Cd0EwRGpNTzJnMEhBRFVPTWc0eERnY0FOUTQyRGpJT0J3QTNEakVPTXc0SEFEY09OUTR4RGdjQU9BNHpEalFPQndBNERqY09NdzRIQU9NTk9RN2hEUWNBNHcwNkRqa09Cd0FxRGpzT0tBNEhBQ29PUEE0N0RnY0FLQTQ5RGlrT0J3QW9EanNPUFE0SEFEb09QZzQ1RGdjQU9nNC9EajRPQndBOERrQU9PdzRIQUR3T1FRNUFEZ2NBT3c1Q0RqME9Cd0E3RGtBT1FnNEhBRDBPUXc0cERnY0FQUTVDRGtNT0J3QXBEa1FPSkE0SEFDa09RdzVFRGdjQUpBNUZEaUlPQndBa0RrUU9SUTRIQURvT0xBNHlEZ2NBT2c3akRTd09Cd0EyRGpvT01nNEhBRFlPUHc0NkRnY0FSZzdtRFVjT0J3QkdEdWtONWcwSEFFZ08wdzFKRGdjQVNBN3NEZE1OQndCSkR0SU5TZzRIQUVrTzB3M1NEUWNBU2c3VURVc09Cd0JLRHRJTjFBMEhBRXNPMVExTURnY0FTdzdVRGRVTkJ3Qk1EdFlOVFE0SEFFd08xUTNXRFFjQVJ3NU9Ea1lPQndCSERrOE9UZzRIQUU4T1B3NU9EZ2NBVHc0K0RqOE9Cd0JKRGxBT1NBNEhBRWtPVVE1UURnY0FVUTVCRGxBT0J3QlJEa0FPUVE0SEFFb09VUTVKRGdjQVNnNVNEbEVPQndCU0RrQU9VUTRIQUZJT1FnNUFEZ2NBU3c1U0Rrb09Cd0JMRGxNT1VnNEhBRk1PUWc1U0RnY0FVdzVERGtJT0J3Qk1EbE1PU3c0SEFFd09WQTVURGdjQVZBNUREbE1PQndCVURrUU9RdzRIQUUwT1ZBNU1EZ2NBVFE1VkRsUU9Cd0JWRGtRT1ZBNEhBRlVPUlE1RURnY0FWZzVYRGxnT0J3QldEbGtPVnc0SEFGb09XQTViRGdjQVdnNVdEbGdPQndCY0RsME9YZzRIQUZ3T1h3NWREZ2NBWHc1Z0RsME9Cd0JmRG1FT1lBNEhBR0lPV1E1akRnY0FZZzVYRGxrT0J3QmtEbU1PWlE0SEFHUU9ZZzVqRGdjQVhnNW1EbHdPQndCZURtY09aZzRIQUdjT2FBNW1EZ2NBWnc1cERtZ09Cd0JwRG1VT2FBNEhBR2tPWkE1bERnY0FhZzVyRG13T0J3QnFEbTBPYXc0SEFPd05iUTd0RFFjQTdBMXJEbTBPQndCdURtME9hZzRIQUc0T2J3NXREZ2NBN1ExdkR1NE5Cd0R0RFcwT2J3NEhBSEFPSmc0bkRnY0FjQTV4RGlZT0J3QnlEbkVPY0E0SEFISU9jdzV4RGdjQWNRNHFEaVlPQndCeERuUU9LZzRIQUhVT2NRNXpEZ2NBZFE1MERuRU9Cd0IyRG5RT2RRNEhBSFlPZHc1MERnY0FQQTUwRG5jT0J3QThEaW9PZEE0SEFIZ09kdzUyRGdjQWVBNTVEbmNPQndCQkRuY09lUTRIQUVFT1BBNTNEZ2NBYkE1NkRuc09Cd0JzRG1zT2VnNEhBT3dOZWc1ckRnY0E3QTFJRG5vT0J3QklEbndPZWc0SEFFZ09VQTU4RGdjQWV3NThEbjBPQndCN0Rub09mQTRIQUZBT2VRNThEZ2NBVUE1QkRua09Cd0I5RG5rT2VBNEhBSDBPZkE1NURnY0FmZzUvRG9BT0J3QitEb0VPZnc0SEFPRU5nUTdpRFFjQTRRMS9Eb0VPQndDQ0RvRU9mZzRIQUlJT2d3NkJEZ2NBNGcyRER1VU5Cd0RpRFlFT2d3NEhBSVFPaFE2R0RnY0FoQTZIRG9VT0J3RG9EWWNPNWcwSEFPZ05oUTZIRGdjQWhnNklEb2tPQndDR0RvVU9pQTRIQU9zTmhRN29EUWNBNncySURvVU9Cd0NLRG9BT2Z3NEhBSW9PaXc2QURnY0FpZzdoRFRrT0J3Q0tEbjhPNFEwSEFJd09pdzZLRGdjQWpBNk5Eb3NPQndDTURqa09QZzRIQUl3T2lnNDVEZ2NBaHc2T0RvOE9Cd0NIRG9RT2pnNEhBSWNPUnc3bURRY0FodzZQRGtjT0J3Q09EcEFPanc0SEFJNE9rUTZRRGdjQWp3NVBEa2NPQndDUERwQU9UdzRIQUpFT2pBNlFEZ2NBa1E2TkRvd09Cd0NRRGo0T1R3NEhBSkFPakE0K0RnY0FWdzV6RGxnT0J3QlhEblVPY3c0SEFINE9XUTVXRGdjQWZnNkFEbGtPQndCWURuSU9XdzRIQUZnT2N3NXlEZ2NBZ2c1V0Rsb09Cd0NDRG40T1ZnNEhBSElPV2c1YkRnY0FjZzZDRGxvT0J3QnFEbDRPWFE0SEFHb09iQTVlRGdjQVhBNkdEbDhPQndCY0RvUU9oZzRIQUc0T1hRNWdEZ2NBYmc1cURsME9Cd0JoRG00T1lBNEhBR0VPaVE1dURnY0FYdzZKRG1FT0J3QmZEb1lPaVE0SEFJQU9ZdzVaRGdjQWdBNkxEbU1PQndCaURuVU9WdzRIQUdJT2RnNTFEZ2NBaXc1bERtTU9Cd0NMRG8wT1pRNEhBR1FPZGc1aURnY0FaQTU0RG5ZT0J3Q09EbHdPWmc0SEFJNE9oQTVjRGdjQVhnNTdEbWNPQndCZURtd09ldzRIQUpFT1pnNW9EZ2NBa1E2T0RtWU9Cd0JuRG4wT2FRNEhBR2NPZXc1OURnY0FqUTVvRG1VT0J3Q05EcEVPYUE0SEFHa09lQTVrRGdjQWFRNTlEbmdPQndDU0RwTU9sQTRIQUpJT2xRNlREZ2NBbFE0dURwTU9Cd0NWRHNzTkxnNEhBSllPbFE2U0RnY0FsZzZYRHBVT0J3Q1hEc3NObFE0SEFKY095UTNMRFFjQW1BNlhEcFlPQndDWURwa09sdzRIQUprT3lRMlhEZ2NBbVE3S0Rja05Cd0NhRHBrT21BNEhBSm9PbXc2WkRnY0FtdzdLRFprT0J3Q2JEc01OeWcwSEFKd09tdzZhRGdjQW5BNmREcHNPQndDZERzTU5tdzRIQUowT3hBM0REUWNBNlEyVERpNE9Cd0RwRFVZT2t3NEhBRVlPbEE2VERnY0FSZzVPRHBRT0J3Q2VEalVPTnc0SEFKNE9udzQxRGdjQW53NDJEalVPQndDZkRxQU9OZzRIQUtFT053NDREZ2NBb1E2ZURqY09Cd0NpRGhBT0VnNEhBS0lPb3c0UURnY0FwQTRTRGhjT0J3Q2tEcUlPRWc0SEFLVU9GdzRaRGdjQXBRNmtEaGNPQndDbURwd09tZzRIQUtZT3B3NmNEZ2NBcUE2YURwZ09Cd0NvRHFZT21nNEhBS2tPbUE2V0RnY0FxUTZvRHBnT0J3Q3FEcFlPa2c0SEFLb09xUTZXRGdjQXF3NlNEcFFPQndDckRxb09rZzRIQUt3T2xBNU9EZ2NBckE2ckRwUU9Cd0N0RGs0T1B3NEhBSzBPckE1T0RnY0FvQTQvRGpZT0J3Q2dEcTBPUHc0SEFLNE9udzZlRGdjQXJnNnZEcDhPQndDdkRxQU9udzRIQUs4T3NBNmdEZ2NBc1E2ZURxRU9Cd0N4RHE0T25nNEhBTEFPclE2Z0RnY0FzQTZ5RHEwT0J3Q3pEcU1Pb2c0SEFMTU90QTZqRGdjQXRRNmlEcVFPQndDMURyTU9vZzRIQUxZT3BBNmxEZ2NBdGc2MURxUU9Cd0MzRHFjT3BnNEhBTGNPdUE2bkRnY0F1UTZtRHFnT0J3QzVEcmNPcGc0SEFMb09xQTZwRGdjQXVnNjVEcWdPQndDN0Rxa09xZzRIQUxzT3VnNnBEZ2NBdkE2cURxc09Cd0M4RHJzT3FnNEhBTDBPcXc2c0RnY0F2UTY4RHFzT0J3Q3lEcXdPclE0SEFMSU92UTZzRGdjQUJBNitEZ1VPQndBRURyOE92ZzRIQU4wTnZ3N2VEUWNBM1EyK0RyOE9Cd0FGRHNBT0JnNEhBQVVPdmc3QURnY0EzdzIrRHQwTkJ3RGZEY0FPdmc0SEFEUU92dzdCRGdjQU5BN2VEYjhPQndBVURyOE9CQTRIQUJRT3dRNi9EZ2NBTkE3Q0RqZ09Cd0EwRHNFT3dnNEhBTUVPRUE3Q0RnY0F3UTRVRGhBT0J3QTREc01Pb1E0SEFEZ093ZzdERGdjQW93N0NEaEFPQndDakRzTU93ZzRIQUtFT3hBNnhEZ2NBb1E3RERzUU9Cd0MwRHNNT293NEhBTFFPeEE3RERnY0F3UTNGRHNZT0J3REJEY1FOeFE0SEFCOE94UTRkRGdjQUh3N0dEc1VPQndDL0RjWU94dzRIQUw4TndRM0dEZ2NBSVE3R0RoOE9Cd0FoRHNjT3hnNEhBQjBPeUE0YkRnY0FIUTdGRHNnT0J3REVEY2dPeFE0SEFNUU5uUTdJRGdjQW5RN0pEc2dPQndDZERwd095UTRIQUJzT3lRNFpEZ2NBR3c3SURza09Cd0FaRHNvT3BRNEhBQmtPeVE3S0RnY0FwdzdKRHB3T0J3Q25Ec29PeVE0SEFLVU95dzYyRGdjQXBRN0tEc3NPQndDNERzb09wdzRIQUxnT3l3N0tEZ2NBb2czTURxRU5Cd0NpRGMwT3pBNEhBS0VOemc2akRRY0FvUTNNRHM0T0J3Q2pEYzhPcEEwSEFLTU56ZzdQRGdjQXBRM1BEdEFPQndDbERhUU56dzRIQUtVTjBRNm1EUWNBcFEzUUR0RU9Cd0NtRGRJT3B3MEhBS1lOMFE3U0RnY0F6UTdURHN3T0J3RE5EdFFPMHc0SEFCWU4xQTRVRFFjQUZnM1REdFFPQndBV0RkVU8wdzRIQUJZTkdRM1ZEZ2NBekE3VkRzNE9Cd0RNRHRNTzFRNEhBQmtOMWc3VkRnY0FHUTFkRGRZT0J3RE9EdFlPenc0SEFNNE8xUTdXRGdjQTBBN1dEdGNPQndEUURzOE8xZzRIQUZvTjFnNWREUWNBV2czWER0WU9Cd0NCRGRjT1dnMEhBSUVOMkE3WERnY0FrQTNZRG9FTkJ3Q1FEZGtPMkE0SEFOb09sUTJXRFFjQTJnN2JEcFVOQndEY0RwWU5tQTBIQU53TzJnNldEUWNBbFEzZERwa05Cd0NWRGRzTzNRNEhBSmtOM2c2YkRRY0FtUTNkRHQ0T0J3Q2JEZDhPbmcwSEFKc04zZzdmRGdjQW5nM2dEcUFOQndDZURkOE80QTRIQU5vTzRRN2JEZ2NBMmc3aUR1RU9Cd0FGRGVJT0NBMEhBQVVONFE3aURnY0EzQTdpRHRvT0J3RGNEdU1PNGc0SEFBZ040dzRSRFFjQUNBM2lEdU1PQndEaER0ME8ydzRIQU9FTzVBN2REZ2NBYnczaERnVU5Cd0J2RGVRTzRRNEhBT1FPM2c3ZERnY0E1QTdsRHQ0T0J3QnhEZVFPYncwSEFIRU41UTdrRGdjQWV3M2xEbkVOQndCN0RlWU81UTRIQUlvTjVnNTdEUWNBaWczbkR1WU9Cd0RvRHVrTzZnNEhBT2dPNnc3cERnY0E2dzdzRHVrT0J3RHJEdTBPN0E0SEFPNE83UTd2RGdjQTdnN3NEdTBPQndEdkR2QU83ZzRIQU84TzhRN3dEZ2NBOGc3eER2TU9Cd0R5RHZBTzhRNEhBTmdPOUE3WERnY0EyQTcxRHZRT0J3RHNEdlVPNlE0SEFPd085QTcxRGdjQTlnN1hEdlFPQndEMkR0QU8xdzRIQVBRTzdnNzJEZ2NBOUE3c0R1NE9Cd0QyRHRFTzBBNEhBUFlPOXc3UkRnY0E4QTcyRHU0T0J3RHdEdmNPOWc0SEFOa085UTdZRGdjQTJRNzREdlVPQndEcUR2VU8rQTRIQU9vTzZRNzFEZ2NBOXc3U0R0RU9Cd0QzRHZrTzBnNEhBUGNPOGc3NURnY0E5dzd3RHZJT0J3RG1Edm9PNVE0SEFPWU8rdzc2RGdjQTd3NzdEdkVPQndEdkR2b08rdzRIQU9VTy9BN2VEZ2NBNVE3NkR2d09Cd0R0RHZvTzd3NEhBTzBPL0E3NkRnY0EvQTdmRHQ0T0J3RDhEdjBPM3c0SEFPc08vQTd0RGdjQTZ3NzlEdndPQndEbkR2c081ZzRIQU9jTy9nNzdEZ2NBOHc3N0R2NE9Cd0R6RHZFTyt3NEhBUDBPNEE3ZkRnY0EvUTcvRHVBT0J3RHJEdjhPL1E0SEFPc082QTcvRGdjQUFBOEJEd0lQQndBQUR3TVBBUThIQUFJUEJBOEZEd2NBQWc4QkR3UVBCd0FBRHdZUEJ3OEhBQUFQQWc4R0R3Y0FBZzhJRHdZUEJ3QUNEd1VQQ0E4SEFBY1BDUThLRHdjQUJ3OEdEd2tQQndBR0R3c1BDUThIQUFZUENBOExEd2NBREE4TkR3NFBCd0FNRHc4UERROEhBQTBQRUE4UkR3Y0FEUThQRHhBUEJ3QVNEeE1QRkE4SEFCSVBGUThURHdjQUZnOFVEeGNQQndBV0R4SVBGQThIQUJnUEdROGFEd2NBR0E4YkR4a1BCd0FjRHgwUEhnOEhBQndQSHc4ZER3Y0FJQThWRHhJUEJ3QWdEeUVQRlE4SEFDSVBFZzhXRHdjQUlnOGdEeElQQndBakR4c1BHQThIQUNNUEpBOGJEd2NBSlE4ZkR4d1BCd0FsRHlZUEh3OEhBQ2NQS0E4cER3Y0FKdzhxRHlnUEJ3QXJEeWtQTEE4SEFDc1BKdzhwRHdjQUxROHVEeThQQndBdER6QVBMZzhIQURFUExROHlEd2NBTVE4d0R5MFBCd0FNRHpNUER3OEhBQXdQTkE4ekR3Y0FNdzhRRHc4UEJ3QXpEelVQRUE4SEFEWVBOdzg0RHdjQU5nODVEemNQQndBNER6b1BOZzhIQURnUE93ODZEd2NBRnc4OER4WVBCd0FYRHowUFBBOEhBQllQUGc4aUR3Y0FGZzg4RHo0UEJ3QS9Eem9QT3c4SEFEOFBRQTg2RHdjQVFROUNEME1QQndCQkQwUVBRZzhIQUVBUFJBOUJEd2NBUUE4L0QwUVBCd0JGRDBZUFJ3OEhBRVVQU0E5R0R3Y0FNZzlJRDBVUEJ3QXlEeTBQU0E4SEFFZ1BTUTlHRHdjQVNBOUtEMGtQQndBdEQwb1BTQThIQUMwUEx3OUtEd2NBTlE5TEQwd1BCd0ExRHpNUFN3OEhBRTBQTXc4MER3Y0FUUTlMRHpNUEJ3Qk9EeDBQSHc4SEFFNFBUdzhkRHdjQVVBOGZEeVlQQndCUUQwNFBIdzhIQUZFUFVnOVREd2NBVVE5VUQxSVBCd0FERDFRUFVROEhBQU1QQUE5VUR3Y0FWQTlWRDFJUEJ3QlVEMVlQVlE4SEFBQVBWZzlVRHdjQUFBOEhEMVlQQndCV0QxY1BWUThIQUZZUFdBOVhEd2NBQnc5WUQxWVBCd0FIRHdvUFdBOEhBQXdQV1E4MER3Y0FEQThPRDFrUEJ3QlpEMDBQTkE4SEFGa1BXZzlORHdjQUhnOWJEeHdQQndBZUQxd1BXdzhIQUZzUEpROGNEd2NBV3c5ZER5VVBCd0FkRDE0UFh3OEhBQjBQVHc5ZUR3Y0FIZzlmRDF3UEJ3QWVEeDBQWHc4SEFHQVBOdzloRHdjQVlBODREemNQQndCZ0R6c1BPQThIQUdBUFlnODdEd2NBUHc5aUQyTVBCd0EvRHpzUFlnOEhBRVFQWkE5Q0R3Y0FSQTlsRDJRUEJ3QS9EMlVQUkE4SEFEOFBZdzlsRHdjQVpnOE5EMmNQQndCbUR3NFBEUThIQUdZUEFROEREd2NBWmc5bkR3RVBCd0FORDJnUFp3OEhBQTBQRVE5b0R3Y0FadzhFRHdFUEJ3Qm5EMmdQQkE4SEFHa1BXZzlaRHdjQWFROXFEMW9QQndCcUQxRVBVdzhIQUdvUGFROVJEd2NBYVE4REQxRVBCd0JwRDJZUEF3OEhBR2tQRGc5bUR3Y0FhUTlaRHc0UEJ3QnJEMlFQWlE4SEFHc1BiQTlrRHdjQVJROXNEMnNQQndCRkQwY1BiQThIQUcwUGJnOXZEd2NBYlE5d0QyNFBCd0FyRDNBUGJROEhBQ3NQTEE5d0R3Y0FjUTlsRDJNUEJ3QnhEMnNQWlE4SEFESVBhdzl4RHdjQU1nOUZEMnNQQndCeUQyTVBZZzhIQUhJUGNROWpEd2NBTVE5eEQzSVBCd0F4RHpJUGNROEhBSE1QWWc5Z0R3Y0Fjdzl5RDJJUEJ3QXdEM0lQY3c4SEFEQVBNUTl5RHdjQWRBOWdEMkVQQndCMEQzTVBZQThIQUM0UGN3OTBEd2NBTGc4d0QzTVBCd0IxRHdrUGRnOEhBSFVQQ2c4SkR3Y0FkUTliRDF3UEJ3QjFEM1lQV3c4SEFIWVBDdzkzRHdjQWRnOEpEd3NQQndCYkQzY1BYUThIQUZzUGRnOTNEd2NBWGc5NEQxOFBCd0JlRDNrUGVBOEhBRmdQZVE5WER3Y0FXQTk0RDNrUEJ3QllEM1VQZUE4SEFGZ1BDZzkxRHdjQVh3OTFEMXdQQndCZkQzZ1BkUThIQUhvUE9RODJEd2NBZWc5N0R6a1BCd0I2RHpvUGZBOEhBSG9QTmc4NkR3Y0FRUTk5RDM0UEJ3QkJEME1QZlE4SEFFRVBmdzlBRHdjQVFROStEMzhQQndCQUQzd1BPZzhIQUVBUGZ3OThEd2NBZ0E4OUR4Y1BCd0NBRDRFUFBROEhBSDRQZ1ErQUR3Y0FmZzk5RDRFUEJ3Q0NEeG9QR1E4SEFJSVBndzhhRHdjQWhBK0RENElQQndDRUQ0VVBndzhIQUlZUEZ3OFVEd2NBaGcrQUR4Y1BCd0IvRDRBUGhnOEhBSDhQZmcrQUR3Y0FodzhVRHhNUEJ3Q0hENFlQRkE4SEFId1BoZytIRHdjQWZBOS9ENFlQQndDSUR4TVBGUThIQUlnUGh3OFREd2NBZWcrSEQ0Z1BCd0I2RDN3UGh3OEhBSWtQRlE4aER3Y0FpUStJRHhVUEJ3QjdENGdQaVE4SEFIc1BlZytJRHdjQWVRK0tEMWNQQndCNUQ0c1BpZzhIQUZjUGpBOVZEd2NBVncrS0Q0d1BCd0NFRDQwUGhROEhBSVFQamcrTkR3Y0FRdytQRDMwUEJ3QkRENUFQanc4SEFFSVBrQTlERHdjQVFnK1JENUFQQndCa0Q1RVBRZzhIQUdRUGtnK1JEd2NBYmcrVEQyOFBCd0J1RDVRUGt3OEhBRk1QbFE5cUR3Y0FVdytXRDVVUEJ3QlNENVlQVXc4SEFGSVBsdytXRHdjQVZRK1hEMUlQQndCVkQ0d1BsdzhIQUlzUG1BK0tEd2NBaXcrWkQ1Z1BCd0NLRDVvUGpBOEhBSW9QbUErYUR3Y0FqQStiRDVjUEJ3Q01ENW9QbXc4SEFJNFBuQStORHdjQWpnK2RENXdQQndDUUQ1NFBqdzhIQUpBUG53K2VEd2NBa1ErZkQ1QVBCd0NSRDZBUG53OEhBSklQb0ErUkR3Y0FrZytoRDZBUEJ3Q1VENklQa3c4SEFKUVBvdytpRHdjQWxnK2tENVVQQndDV0Q2VVBwQThIQUpjUHBRK1dEd2NBbHcrYkQ2VVBCd0NtRHp3UFBROEhBS1lQcHc4OER3Y0FwdytvRDZrUEJ3Q25ENllQcUE4SEFLY1BQZzg4RHdjQXB3K3FEejRQQndDcUQ2a1BxdzhIQUtvUHB3K3BEd2NBcGcrc0Q2Z1BCd0NtRDYwUHJBOEhBRDBQclErbUR3Y0FQUStCRDYwUEJ3Q3RENjRQckE4SEFLMFBydyt1RHdjQWdRK3ZENjBQQndDQkQzMFBydzhIQUxBUGZRK1BEd2NBc0ErdkQzMFBCd0N2RDdFUHJnOEhBSzhQc0EreER3Y0FzZytQRDU0UEJ3Q3lEN0FQanc4SEFMQVBzdyt4RHdjQXNBK3lEN01QQndDMEQwd1BTdzhIQUxRUHRROU1Ed2NBdGc5TEQwMFBCd0MyRDdRUFN3OEhBTGNQVFE5YUR3Y0F0dysyRDAwUEJ3QzNEMm9QdUE4SEFMY1BXZzlxRHdjQXVROXFENVVQQndDNUQ3Z1BhZzhIQUxvUGxRK2tEd2NBdWcrNUQ1VVBCd0JPRDdzUFR3OEhBRTRQdkErN0R3Y0F1dzhZRHhvUEJ3QzdEN3dQR0E4SEFGQVB2QTlPRHdjQVVBKzlEN3dQQndDOER5TVBHQThIQUx3UHZROGpEd2NBZ3crN0R4b1BCd0NERDc0UHV3OEhBTDRQVHcrN0R3Y0F2ZzllRDA4UEJ3Q0ZENzRQZ3c4SEFJVVB2dysrRHdjQXZ3OWVENzRQQndDL0Qza1BYZzhIQU1BUGhRK05Ed2NBd0ErL0Q0VVBCd0MvRDRzUGVROEhBTDhQd0ErTER3Y0F3UStORDV3UEJ3REJEOEFQalE4SEFNQVBtUStMRHdjQXdBL0JENWtQQndEQ0Qwa1B3dzhIQU1JUFJnOUpEd2NBd2c4cUR5Y1BCd0RDRDhNUEtnOEhBTVFQUmcvQ0R3Y0F4QTlIRDBZUEJ3REVEeWNQS3c4SEFNUVB3ZzhuRHdjQXhROXREMjhQQndERkQ4WVBiUThIQU1VUGJBL0dEd2NBeFE5a0Qyd1BCd0RHRHlzUGJROEhBTVlQeEE4ckR3Y0F4ZzlIRDhRUEJ3REdEMndQUnc4SEFNY1BidytURHdjQXh3L0ZEMjhQQndERkQ1SVBaQThIQU1VUHh3K1NEd2NBeUErVEQ2SVBCd0RJRDhjUGt3OEhBTWNQb1ErU0R3Y0F4dy9JRDZFUEJ3REpEOG9QeXc4SEFNa1B6QS9LRHdjQXpRL0xEODRQQndETkQ4a1B5dzhIQU04UHpBL0pEd2NBencvUUQ4d1BCd0RSRDhrUHpROEhBTkVQencvSkR3Y0EwZy9URDlRUEJ3RFNEOVVQMHc4SEFOWVAxQS9YRHdjQTFnL1NEOVFQQndEWUQ5a1AyZzhIQU5nUDJ3L1pEd2NBMGcvWUQ5VVBCd0RTRDlzUDJBOEhBTnNQM0EvWkR3Y0Eydy9kRDl3UEJ3RFdEOXNQMGc4SEFOWVAzUS9iRHdjQTNnL1pEOXdQQndEZUQ5OFAyUThIQU44UDJnL1pEd2NBM3cvZ0Q5b1BCd0RoRCtJUDR3OEhBT0VQNUEvaUR3Y0E1US9qRCtZUEJ3RGxEK0VQNHc4SEFPY1A0US9sRHdjQTV3L29EK0VQQndEb0QrUVA0UThIQU9nUDZRL2tEd2NBNmcvckQrd1BCd0RxRCswUDZ3OEhBT3dQN2cvdkR3Y0E3QS9yRCs0UEJ3RHREL0FQNnc4SEFPMFA4US93RHdjQTZ3L3lEKzRQQndEckQvQVA4ZzhIQVBNUDlBLzFEd2NBOHcvMkQvUVBCd0QxRC9jUCtBOEhBUFVQOUEvM0R3Y0ErUS82RC9zUEJ3RDVEL3dQK2c4SEFQMFArdy8rRHdjQS9RLzVEL3NQQndEL0QrTVBBQkFIQVA4UDVnL2pEd2NBNHc4QkVBQVFCd0RqRCtJUEFSQUhBQUlRQXhBRUVBY0FBaEFGRUFNUUJ3QUdFQVFRQXhBSEFBWVFCeEFFRUFjQUFoQUlFQWtRQndBQ0VBUVFDQkFIQUFjUUNCQUVFQWNBQnhBS0VBZ1FCd0FLRUFzUUNCQUhBQW9RREJBTEVBY0FEQkFORUFzUUJ3QU1FQTRRRFJBSEFBZ1FEeEFKRUFjQUNCQUxFQThRQndBTEVCQVFEeEFIQUFzUURSQVFFQWNBQlJBUkVBTVFCd0FGRUJJUUVSQUhBQVlRRVJBVEVBY0FCaEFERUJFUUJ3RE9EeFFRelE4SEFNNFBGUkFVRUFjQUZSQVJFQlFRQndBVkVCTVFFUkFIQU0wUEZoRFJEd2NBelE4VUVCWVFCd0FVRUJJUUZoQUhBQlFRRVJBU0VBY0F6QThYRU1vUEJ3RE1EeGdRRnhBSEFOQVBHQkRNRHdjQTBBOFpFQmdRQndBR0VCb1FHeEFIQUFZUUV4QWFFQWNBRXhBY0VCb1FCd0FURUJVUUhCQUhBQWNRR3hBZEVBY0FCeEFHRUJzUUJ3QUtFQjBRSGhBSEFBb1FCeEFkRUFjQURCQWVFQjhRQndBTUVBb1FIaEFIQUNBUURSQU9FQWNBSUJBaEVBMFFCd0FoRUJBUURSQUhBQ0VRSWhBUUVBY0FEQkFnRUE0UUJ3QU1FQjhRSUJBSEFDTVFKQkFsRUFjQUl4QW1FQ1FRQndBYkVDWVFJeEFIQUJzUUdoQW1FQWNBSmhBbkVDUVFCd0FtRUNnUUp4QUhBQm9RS0JBbUVBY0FHaEFjRUNnUUJ3QXBFQ1VRS2hBSEFDa1FJeEFsRUFjQUhSQWpFQ2tRQndBZEVCc1FJeEFIQUNzUUtoQXNFQWNBS3hBcEVDb1FCd0FlRUNrUUt4QUhBQjRRSFJBcEVBY0FMUkFzRUM0UUJ3QXRFQ3NRTEJBSEFCOFFLeEF0RUFjQUh4QWVFQ3NRQndBdkVDNFFNQkFIQUM4UUxSQXVFQWNBSUJBdEVDOFFCd0FnRUI4UUxSQUhBREVRTUJBeUVBY0FNUkF2RURBUUJ3QWhFQzhRTVJBSEFDRVFJQkF2RUFjQU14QXlFRFFRQndBekVERVFNaEFIQUNJUU1SQXpFQWNBSWhBaEVERVFCd0FuRU1vUEZ4QUhBQ2NRS0JES0R3Y0FLQkRMRDhvUEJ3QW9FQndReXc4SEFCd1F6Zy9MRHdjQUhCQVZFTTRQQndBMUVEWVFOeEFIQURVUU9CQTJFQWNBT0JBNUVEb1FCd0E0RURVUU9SQUhBRGNRT3hBMUVBY0FOeEE4RURzUUJ3QTFFRDBRT1JBSEFEVVFPeEE5RUFjQTlnOCtFUFFQQndEMkR6OFFQaEFIQUQ0UTZnL3NEd2NBUGhBL0VPb1BCd0QwRDBBUTl3OEhBUFFQUGhCQUVBY0FRQkRzRCs4UEJ3QkFFRDRRN0E4SEFQa1BRUkQ4RHdjQStROUNFRUVRQndCQkVOOFAzZzhIQUVFUVFoRGZEd2NBL1E5Q0VQa1BCd0Q5RDBNUVFoQUhBRUlRNEEvZkR3Y0FRaEJERU9BUEJ3QS9FRVFRNmc4SEFEOFFSUkJFRUFjQTZnOUdFTzBQQndEcUQwUVFSaEFIQU8wUFJ4RHhEd2NBN1E5R0VFY1FCd0JGRUVnUVJCQUhBRVVRU1JCSUVBY0FSQkJLRUVZUUJ3QkVFRWdRU2hBSEFFWVFTeEJIRUFjQVJoQktFRXNRQndCTUVQWVA4dzhIQUV3UVRSRDJEd2NBVGhBOUVEc1FCd0JPRUU4UVBSQUhBRkFRT3hBOEVBY0FVQkJPRURzUUJ3QlJFRTBRVEJBSEFGRVFVaEJORUFjQVV4QlBFRTRRQndCVEVGUVFUeEFIQUZVUVRoQlFFQWNBVlJCVEVFNFFCd0JXRUZBUVBCQUhBRllRVlJCUUVBY0FWeEE4RURjUUJ3QlhFRllRUEJBSEFGZ1FOeEEyRUFjQVdCQlhFRGNRQndBL0VFMFFSUkFIQUQ4UTlnOU5FQWNBVFJCSkVFVVFCd0JORUZJUVNSQUhBUG9QV1JCYUVBY0ErZy84RDFrUUJ3RG1EMXNRWEJBSEFPWVAvdzliRUFjQTVROWNFRjBRQndEbEQrWVBYQkFIQU9jUFhSQmVFQWNBNXcvbEQxMFFCd0RvRDE0UVh4QUhBT2dQNXc5ZUVBY0E2UTlmRUdBUUJ3RHBEK2dQWHhBSEFHRVFXaEJaRUFjQVlSQmlFRm9RQndCU0VHSVFZUkFIQUZJUVVSQmlFQWNBWXhCY0VGc1FCd0JqRUdRUVhCQUhBRlFRWkJCakVBY0FWQkJURUdRUUJ3QmtFRjBRWEJBSEFHUVFaUkJkRUFjQVV4QmxFR1FRQndCVEVGVVFaUkFIQUdVUVhoQmRFQWNBWlJCbUVGNFFCd0JWRUdZUVpSQUhBRlVRVmhCbUVBY0FaaEJmRUY0UUJ3Qm1FR2NRWHhBSEFGWVFaeEJtRUFjQVZoQlhFR2NRQndCbkVHQVFYeEFIQUdjUWFCQmdFQWNBVnhCb0VHY1FCd0JYRUZnUWFCQUhBR2tRYWhCckVBY0FhUkJzRUdvUUJ3QnJFRzBRYmhBSEFHc1FhaEJ0RUFjQWJ4QndFSEVRQndCdkVISVFjQkFIQUhNUWNoQnZFQWNBY3hCMEVISVFCd0JzRUhVUWRoQUhBR3dRYVJCMUVBY0FkaEIzRUhnUUJ3QjJFSFVRZHhBSEFIa1FjUkJ3RUFjQWVSQjZFSEVRQndCN0VIb1FlUkFIQUhzUWZCQjZFQWNBZUJCOEVIc1FCd0I0RUhjUWZCQUhBSDBRZmhCL0VBY0FmUkNBRUg0UUJ3Q0FFUDhQQUJBSEFJQVFmUkQvRHdjQWdCQ0JFSDRRQndDQUVJSVFnUkFIQUlJUUFCQUJFQWNBZ2hDQUVBQVFCd0E1RUlNUU9oQUhBRGtRaEJDREVBY0FoQkNGRUlNUUJ3Q0VFSVlRaFJBSEFEMFFoQkE1RUFjQVBSQ0hFSVFRQndDRUVJZ1FoaEFIQUlRUWh4Q0lFQWNBaHhDSkVJZ1FCd0NIRUlvUWlSQUhBSWNRVHhDS0VBY0FoeEE5RUU4UUJ3Q0tFSXNRaVJBSEFJb1FqQkNMRUFjQWloQlVFSXdRQndDS0VFOFFWQkFIQUkwUWZ4Q09FQWNBalJCOUVIOFFCd0NORVA4UGZSQUhBSTBRV3hEL0R3Y0FqeEJiRUkwUUJ3Q1BFR01RV3hBSEFJOFFqaENRRUFjQWp4Q05FSTRRQndDTUVHTVFqeEFIQUl3UVZCQmpFQWNBakJDUUVJc1FCd0NNRUk4UWtCQUhBSkVRa2hDVEVBY0FrUkNVRUpJUUJ3Q1VFUE1QOVE4SEFKUVFrUkR6RHdjQWxCQ1ZFSklRQndDVUVKWVFsUkFIQUpZUTlRLzREd2NBbGhDVUVQVVBCd0NYRUpnUW1SQUhBSmNRbWhDWUVBY0FtaEQ3RC9vUEJ3Q2FFSmNRK3c4SEFKc1FtUkNjRUFjQW14Q1hFSmtRQndDWEVQNFArdzhIQUpjUW14RCtEd2NBa3hDZEVKRVFCd0NURUo0UW5SQUhBUE1QblJCTUVBY0E4dytSRUowUUJ3Q2VFSjhRblJBSEFKNFFvQkNmRUFjQVRCQ2ZFRkVRQndCTUVKMFFueEFIQUtFUW1oQ2lFQWNBb1JDWUVKb1FCd0JhRUpvUStnOEhBRm9Rb2hDYUVBY0FveENoRUtJUUJ3Q2pFS1FRb1JBSEFHSVFvaEJhRUFjQVloQ2pFS0lRQndDZkVLUVFveEFIQUo4UW9CQ2tFQWNBVVJDakVHSVFCd0JSRUo4UW94QUhBSVlRYVJCckVBY0FoaENJRUdrUUJ3QnNFSklRYWhBSEFHd1FreENTRUFjQWhSQnJFRzRRQndDRkVJWVFheEFIQUdvUWxSQnRFQWNBYWhDU0VKVVFCd0J0RUlVUWJoQUhBRzBRbFJDRkVBY0FjUkIrRUc4UUJ3QnhFSDhRZmhBSEFKa1FjQkJ5RUFjQW1SQ1lFSEFRQndCdkVJRVFjeEFIQUc4UWZoQ0JFQWNBZ1JCMEVITVFCd0NCRUp3UWRCQUhBSndRY2hCMEVBY0FuQkNaRUhJUUJ3QjJFSk1RYkJBSEFIWVFuaENURUFjQWlCQjFFR2tRQndDSUVJa1FkUkFIQUhnUW5oQjJFQWNBZUJDZ0VKNFFCd0NKRUhjUWRSQUhBSWtRaXhCM0VBY0FjQkNoRUhrUUJ3QndFSmdRb1JBSEFJNFFjUkI2RUFjQWpoQi9FSEVRQndCNUVLUVFleEFIQUhrUW9SQ2tFQWNBa0JCNkVId1FCd0NRRUk0UWVoQUhBSHNRb0JCNEVBY0FleENrRUtBUUJ3Q0xFSHdRZHhBSEFJc1FrQkI4RUFjQXBSQ21FS2NRQndDbEVLZ1FwaEFIQUVFUXFCQ2xFQWNBUVJEZUQ2Z1FCd0NvRUtrUXBoQUhBS2dRcWhDcEVBY0EzZytxRUtnUUJ3RGVEOXdQcWhBSEFLb1FxeENwRUFjQXFoQ3NFS3NRQndEY0Q2d1FxaEFIQU53UDNRK3NFQWNBckJDdEVLc1FCd0NzRUs0UXJSQUhBTjBQcmhDc0VBY0EzUS9XRDY0UUJ3Q3VFSzhRclJBSEFLNFFzQkN2RUFjQTFnK3dFSzRRQndEV0Q5Y1BzQkFIQUtVUS9BOUJFQWNBcFJCWkVQd1BCd0NuRUZrUXBSQUhBS2NRWVJCWkVBY0FTQkN4RUVvUUJ3QklFTElRc1JBSEFFa1FzaEJJRUFjQVNSQ3pFTElRQndCS0VMUVFTeEFIQUVvUXNSQzBFQWNBSkJDMUVDVVFCd0FrRUxZUXRSQUhBQ1VRdHhBcUVBY0FKUkMxRUxjUUJ3QXFFTGdRTEJBSEFDb1F0eEM0RUFjQXJ4QzVFSzBRQndDdkVMb1F1UkFIQUswUXV4Q3JFQWNBclJDNUVMc1FCd0NyRUx3UXFSQUhBS3NRdXhDOEVBY0FxUkM5RUtZUUJ3Q3BFTHdRdlJBSEFLWVF2aENuRUFjQXBoQzlFTDRRQndDbkVMOFFZUkFIQUtjUXZoQy9FQWNBWVJEQUVGSVFCd0JoRUw4UXdCQUhBRklRc3hCSkVBY0FVaERBRUxNUUJ3Q3lFTUVRc1JBSEFMSVF3aERCRUFjQXN4RENFTElRQndDekVNTVF3aEFIQUxFUXhCQzBFQWNBc1JEQkVNUVFCd0RBRU1NUXN4QUhBTUFReFJEREVBY0F0aERHRUxVUUJ3QzJFTWNReGhBSEFMVVF5QkMzRUFjQXRSREdFTWdRQndDM0VNa1F1QkFIQUxjUXlCREpFQWNBdWhES0VMa1FCd0M2RU1zUXloQUhBTGtRekJDN0VBY0F1UkRLRU13UUJ3QzdFTTBRdkJBSEFMc1F6QkRORUFjQXZCRE9FTDBRQndDOEVNMFF6aEFIQUwwUXp4QytFQWNBdlJET0VNOFFCd0MrRU5BUXZ4QUhBTDRRenhEUUVBY0F2eERGRU1BUUJ3Qy9FTkFReFJBSEFORVFGeEFZRUFjQTBSRFNFQmNRQndEU0VQQVA4UThIQU5JUTBSRHdEd2NBMHhBWUVCa1FCd0RURU5FUUdCQUhBTkVROGcvd0R3Y0EwUkRURVBJUEJ3RFNFRWNRMUJBSEFOSVE4UTlIRUFjQTBoQW5FQmNRQndEU0VOUVFKeEFIQU5VUVJ4QkxFQWNBMVJEVUVFY1FCd0FrRU5RUTFSQUhBQ1FRSnhEVUVBY0ExaEJMRUxRUUJ3RFdFTlVRU3hBSEFOVVF0aEFrRUFjQTFSRFdFTFlRQndEWEVMUVF4QkFIQU5jUTFoQzBFQWNBMWhESEVMWVFCd0RXRU5jUXh4QUhBTmdRMUEvWkVBY0EyQkRYRDlRUEJ3RFlFRElRTUJBSEFOZ1EyUkF5RUFjQTJSRFREOW9RQndEWkVOUVAwdzhIQU5rUU5CQXlFQWNBMlJEYUVEUVFCd0RiRURBUUxoQUhBTnNRMkJBd0VBY0EyeERYRDlnUUJ3RGJFTEFRMXc4SEFOd1FzQkRiRUFjQTNCQ3ZFTEFRQndEY0VDNFFMQkFIQU53UTJ4QXVFQWNBM1JBc0VMZ1FCd0RkRU53UUxCQUhBTndRdWhDdkVBY0EzQkRkRUxvUUJ3RGVFTGdReVJBSEFONFEzUkM0RUFjQTNSRExFTG9RQndEZEVONFF5eEFIQU44UXRRKzBEd2NBM3hEZ0VMVVBCd0RoRUxRUHRnOEhBT0VRM3hDMER3Y0E0aEMyRDdjUEJ3RGlFT0VRdGc4SEFPSVF1QS9qRUFjQTRoQzNEN2dQQndEa0VMZ1B1UThIQU9RUTR4QzREd2NBNVJDNUQ3b1BCd0RsRU9RUXVROEhBT1lRNEJEZkVBY0E1aERuRU9BUUJ3RG5FQ2tQS0E4SEFPY1E1aEFwRHdjQTZCQXBEK1lRQndEb0VDd1BLUThIQU9nUTN4RGhFQWNBNkJEbUVOOFFCd0RwRUN3UDZCQUhBT2tRY0E4c0R3Y0E2UkRoRU9JUUJ3RHBFT2dRNFJBSEFPa1E0eERxRUFjQTZSRGlFT01RQndEcEVHNFBjQThIQU9rUTZoQnVEd2NBNmhDVUQyNFBCd0RxRU9zUWxBOEhBT3NRb3crVUR3Y0E2eERzRUtNUEJ3Q29EKzBRcVE4SEFLZ1A3aER0RUFjQXFRL3ZFS3NQQndDcEQrMFE3eEFIQVBBUXFBK3NEd2NBOEJEdUVLZ1BCd0R4RUt3UHJnOEhBUEVROEJDc0R3Y0E4aEN1RDdFUEJ3RHlFUEVRcmc4SEFQTVFzUSt6RHdjQTh4RHlFTEVQQndEMEVPMFE3aEFIQVBRUTlSRHRFQWNBOVJBWkR4c1BCd0QxRVBRUUdROEhBUFVRN3hEdEVBY0E5UkQyRU84UUJ3RDJFQnNQSkE4SEFQWVE5UkFiRHdjQThCRDBFTzRRQndEd0VQY1E5QkFIQVBRUWdnOFpEd2NBOUJEM0VJSVBCd0R4RVBjUThCQUhBUEVRK0JEM0VBY0E5eENFRDRJUEJ3RDNFUGdRaEE4SEFQZ1FqZytFRHdjQStCRDVFSTRQQndENUVKMFBqZzhIQVBrUStoQ2REd2NBK3hEOEVQMFFCd0Q3RVA0US9CQUhBUDhRL2hEN0VBY0EveEFBRWY0UUJ3QUFFUUVSQWhFSEFBQVIveEFCRVFjQUF4RUNFUUVSQndBREVRUVJBaEVIQUFRUkJSRUdFUWNBQkJFREVRVVJCd0FIRWVzUTZoQUhBQWNSQ0JIckVBY0FDQkgvRVBzUUJ3QUlFUWNSL3hBSEFPb1FDUkVIRVFjQTZoRGpFQWtSQndBQkVRY1JDUkVIQUFFUi94QUhFUWNBNUJBSkVlTVFCd0RrRUFvUkNSRUhBQWtSQXhFQkVRY0FDUkVLRVFNUkJ3QUlFZXdRNnhBSEFBZ1JDeEhzRUFjQUNCSDlFQXNSQndBSUVmc1EvUkFIQU9VUUNoSGtFQWNBNVJBTUVRb1JCd0FGRVFvUkRCRUhBQVVSQXhFS0VRY0FEUkg1RVBnUUJ3QU5FUTRSK1JBSEFBNFJBaEVFRVFjQURoRU5FUUlSQndBUEVmZ1E4UkFIQUE4UkRSSDRFQWNBRFJFQUVRSVJCd0FORVE4UkFCRUhBUElRRHhIeEVBY0E4aEFRRVE4UkJ3QVBFZjRRQUJFSEFBOFJFQkgrRUFjQURoSDZFUGtRQndBT0VSRVIraEFIQUE0UkJoRVJFUWNBRGhFRUVRWVJCd0R6RUJBUjhoQUhBUE1RRWhFUUVRY0FFaEgrRUJBUkJ3QVNFZndRL2hBSEFCTVJGQkVWRVFjQUV4RVdFUlFSQndBWEVSZ1JHUkVIQUJjUkdoRVlFUWNBR1JFYkVSd1JCd0FaRVJnUkd4RUhBQjBSRlJFZUVRY0FIUkVURVJVUkJ3QWFFU0FFSXdRSEFCb1JGeEVnQkFjQUd3UVdFU0lFQndBYkJCUVJGaEVIQUI4UjJBTWdFUWNBSHhIV0E5Z0RCd0RVQXlFUkloRUhBTlFEMFFNaEVRY0FJeEVnRVNRUkJ3QWpFUjhSSUJFSEFDSVJKUkVtRVFjQUloRWhFU1VSQndBY0VTY1JHUkVIQUJ3UktCRW5FUWNBR3hFb0VSd1JCd0FiRVNrUktCRUhBQ29SS3hFc0VRY0FLaEV0RVNzUkJ3QXVFUzBSS2hFSEFDNFJMeEV0RVFjQUl3UXdFUm9SQndBakJDWUVNQkVIQUJrUk1SRVhFUWNBR1JFbkVURVJCd0FYRVI0RUlBUUhBQmNSTVJFZUJBY0EyQU15RVNBUkJ3RFlBOW9ETWhFSEFDQVJNeEVrRVFjQUlCRXlFVE1SQndBa0VUUVJJeEVIQUNRUk14RTBFUWNBTlJFMkVUY1JCd0ExRVRnUk5oRUhBRGNST1JFNkVRY0FOeEUyRVRrUkJ3QW9FVHNSSnhFSEFDZ1JQQkU3RVFjQVBCRVZFVHNSQndBOEVSNFJGUkVIQUNrUlBCRW9FUWNBS1JFOUVUd1JCd0E5RVI0UlBCRUhBRDBSSFJFZUVRY0FMUkUrRVNzUkJ3QXRFVDhSUGhFSEFEOFJRQkUrRVFjQVB4RkJFVUFSQndBdkVUOFJMUkVIQUM4UlFoRS9FUWNBUWhGQkVUOFJCd0JDRVVNUlFSRUhBQ1lFUkJFd0VRY0FKZ1FvQkVRUkJ3QW9CQllSUkJFSEFDZ0VJZ1FXRVFjQUp4RkZFVEVSQndBbkVUc1JSUkVIQURzUkZCRkZFUWNBT3hFVkVSUVJCd0F4RVJ3RUhnUUhBREVSUlJFY0JBY0FSUkViQkJ3RUJ3QkZFUlFSR3dRSEFOb0RSaEV5RVFjQTJnUGVBMFlSQndEZUF5SVJSaEVIQU40RDFBTWlFUWNBTWhGSEVUTVJCd0F5RVVZUlJ4RUhBRVlSSmhGSEVRY0FSaEVpRVNZUkJ3QXpFVWdSTkJFSEFETVJSeEZJRVFjQVJ4RWxFVWdSQndCSEVTWVJKUkVIQURnUlNSRTJFUWNBT0JGS0VVa1JCd0JLRVVzUlNSRUhBRW9SVEJGTEVRY0FOaEZORVRrUkJ3QTJFVWtSVFJFSEFFa1JUaEZORVFjQVNSRkxFVTRSQndCUEVSb1JVQkVIQUU4UkdCRWFFUWNBVVJFWUVVOFJCd0JSRVJzUkdCRUhBRklSR3hGUkVRY0FVaEVwRVJzUkJ3QlRFU2tSVWhFSEFGTVJQUkVwRVFjQVZCRTlFVk1SQndCVUVSMFJQUkVIQUZVUkhSRlVFUWNBVlJFVEVSMFJCd0JXRVJNUlZSRUhBRllSRmhFVEVRY0FWeEVXRVZZUkJ3QlhFVVFSRmhFSEFGZ1JSQkZYRVFjQVdCRXdFVVFSQndCUUVUQVJXQkVIQUZBUkdoRXdFUWNBVHhGWkVWRVJCd0JQRVZvUldSRUhBRm9STEJGWkVRY0FXaEVxRVN3UkJ3QlFFVm9SVHhFSEFGQVJXeEZhRVFjQVd4RXFFVm9SQndCYkVTNFJLaEVIQUZnUld4RlFFUWNBV0JGY0VWc1JCd0JjRVM0Uld4RUhBRndSTHhFdUVRY0FWeEZjRVZnUkJ3QlhFVjBSWEJFSEFGMFJMeEZjRVFjQVhSRkNFUzhSQndCV0VWMFJWeEVIQUZZUlhoRmRFUWNBWGhGQ0VWMFJCd0JlRVVNUlFoRUhBRlVSWGhGV0VRY0FWUkZmRVY0UkJ3QmZFVU1SWGhFSEFGOFJRUkZERVFjQVZCRmZFVlVSQndCVUVXQVJYeEVIQUdBUlFSRmZFUWNBWUJGQUVVRVJCd0JURVdBUlZCRUhBRk1SWVJGZ0VRY0FZUkZBRVdBUkJ3QmhFVDRSUUJFSEFGSVJZUkZURVFjQVVoRmlFV0VSQndCaUVUNFJZUkVIQUdJUkt4RStFUWNBVVJGaUVWSVJCd0JSRVZrUlloRUhBRmtSS3hGaUVRY0FXUkVzRVNzUkJ3RHNBd1FFQVFRSEFPd0Q5Z01FQkFjQTlnTUdCQVFFQndEMkEvSURCZ1FIQVBJRENBUUdCQWNBOGdQdkF3Z0VCd0RzQXdvRTZ3TUhBT3dEQVFRS0JBY0E4QU1JQk84REJ3RHdBd3NFQ0FRSEFQQUREZ1FMQkFjQThBUDBBdzRFQndEMEF4QUVEZ1FIQVBRRCtBTVFCQWNBK0FNS0JCQUVCd0Q0QStzRENnUUhBR01ST2hGa0VRY0FZeEUzRVRvUkJ3QmxFVGNSWXhFSEFHVVJOUkUzRVFjQVpoRTFFV1VSQndCbUVUZ1JOUkVIQUdjUk9CRm1FUWNBWnhGS0VUZ1JCd0JvRVVvUlp4RUhBR2dSVEJGS0VRY0FhUkZNRVdnUkJ3QnBFVXNSVEJFSEFHb1JTeEZwRVFjQWFoRk9FVXNSQndCckVVNFJhaEVIQUdzUlRSRk9FUWNBYkJGTkVXc1JCd0JzRVRrUlRSRUhBR1FST1JGc0VRY0FaQkU2RVRrUkJ3QmpFVzBSWlJFSEFHTVJiaEZ0RVFjQWJoRWpFVzBSQndCdUVSOFJJeEVIQUdRUmJoRmpFUWNBWkJGdkVXNFJCd0J2RVI4UmJoRUhBRzhSMWdNZkVRY0FiQkZ2RVdRUkJ3QnNFWEFSYnhFSEFIQVIxZ052RVFjQWNCSGNBOVlEQndCckVYQVJiQkVIQUdzUmNSRndFUWNBY1JIY0EzQVJCd0J4RWVBRDNBTUhBR29SY1JGckVRY0FhaEZ5RVhFUkJ3QnlFZUFEY1JFSEFISVIwUVBnQXdjQWFSRnlFV29SQndCcEVYTVJjaEVIQUhNUjBRTnlFUWNBY3hFaEVkRURCd0JvRVhNUmFSRUhBR2dSZEJGekVRY0FkQkVoRVhNUkJ3QjBFU1VSSVJFSEFHY1JkQkZvRVFjQVp4RjFFWFFSQndCMUVTVVJkQkVIQUhVUlNCRWxFUWNBWmhGMUVXY1JCd0JtRVhZUmRSRUhBSFlSU0JGMUVRY0FkaEUwRVVnUkJ3QmxFWFlSWmhFSEFHVVJiUkYyRVFjQWJSRTBFWFlSQndCdEVTTVJOQkVIQUh3RGxnTnBBd2NBZkFONUE1WURCd0NQQTFRRFV3TUhBSThESlFOVUF3Y0FrUU5UQTNjUkJ3Q1JBNDhEVXdNSEFHa0RiUU5xQXdjQWFRT1dBMjBEQndCWEF5VURKQU1IQUZjRFZBTWxBd2NBZVFOK0Ezb0RCd0I1QTN3RGZnTUhBRmtEd3dOYUF3Y0FXUVBGQThNREJ3RE5BNElEZ1FNSEFNMER5d09DQXdjQVdnTmZBMTBEQndCYUE4TURYd01IQUlZRGdRT0VBd2NBaGdQTkE0RURCd0JWQTNjUlV3TUhBRlVEWndOM0VRY0Fad09SQTNjUkJ3Qm5BMnNEa1FNSEFIQURuUU9jQXdjQWNBTnZBNTBEQndCdkE1OERuUU1IQUc4RGRBT2ZBd2NBZUJGNUVYb1JCd0I0RVhzUmVSRUhBSG9SZkJGOUVRY0FlaEY1RVh3UkJ3QitFWDhSZ0JFSEFINFJnUkYvRVFjQWdCR0NFWU1SQndDQUVYOFJnaEVIQUlNUmhCR0ZFUWNBZ3hHQ0VZUVJCd0NGRVlZUmh4RUhBSVVSaEJHR0VRY0FpQkdKRVlvUkJ3Q0lFWXNSaVJFSEFJd1JoaEdORVFjQWpCR0hFWVlSQndDTUVZc1JpQkVIQUl3UmpSR0xFUWNBalJHT0VZc1JCd0NORVk4UmpoRUhBSXNSa0JHSkVRY0FpeEdPRVpBUkJ3Q1FFWkVSaVJFSEFKQVJraEdSRVFjQWlSR1RFWW9SQndDSkVaRVJreEVIQUpRUmxSR1dFUWNBbEJHWEVaVVJCd0NZRVpjUmxCRUhBSmdSbVJHWEVRY0FseEdhRVpVUkJ3Q1hFWnNSbWhFSEFKa1JteEdYRVFjQW1SR2NFWnNSQndDZEVaNFJueEVIQUowUm9CR2VFUWNBb1JHZ0VaMFJCd0NoRWFJUm9CRUhBS0FSb3hHZUVRY0FvQkdrRWFNUkJ3Q2lFYVFSb0JFSEFLSVJwUkdrRVFjQXBCR21FYU1SQndDa0VhY1JwaEVIQUtVUnB4R2tFUWNBcFJHb0VhY1JCd0NuRWFrUnBoRUhBS2NScWhHcEVRY0FxQkdxRWFjUkJ3Q29FYXNScWhFSEFLb1JyQkdwRVFjQXFoR3RFYXdSQndDckVhMFJxaEVIQUtzUnJoR3RFUWNBclJHdkVhd1JCd0N0RWJBUnJ4RUhBSzRSc0JHdEVRY0FyaEd4RWJBUkJ3Q3dFYklScnhFSEFMQVJzeEd5RVFjQXNSR3pFYkFSQndDeEViUVJzeEVIQUxNUnRSR3lFUWNBc3hHMkViVVJCd0MwRWJZUnN4RUhBTFFSdHhHMkVRY0F1QkY0RVhvUkJ3QzRFYmtSZUJFSEFMb1JlaEY5RVFjQXVoRzRFWG9SQndDN0VYNFJnQkVIQUxzUnZCRitFUWNBdlJHQUVZTVJCd0M5RWJzUmdCRUhBTDRSZ3hHRkVRY0F2aEc5RVlNUkJ3Qy9FWVVSaHhFSEFMOFJ2aEdGRVFjQXdCR0hFWXdSQndEQUViOFJoeEVIQU1FUmpCR0lFUWNBd1JIQUVZd1JCd0RDRVlnUmloRUhBTUlSd1JHSUVRY0F3eEdLRVpNUkJ3RERFY0lSaWhFSEFNUVJtUkdZRVFjQXhCSEZFWmtSQndDNUVjVVJ4QkVIQUxrUnVCSEZFUWNBeFJHY0Vaa1JCd0RGRWNZUm5CRUhBTGdSeGhIRkVRY0F1Qkc2RWNZUkJ3REhFYUlSb1JFSEFNY1J5QkdpRVFjQXZCSElFY2NSQndDOEVic1J5QkVIQU1nUnBSR2lFUWNBeUJISkVhVVJCd0M3RWNrUnlCRUhBTHNSdlJISkVRY0F5UkdvRWFVUkJ3REpFY29ScUJFSEFMMFJ5aEhKRVFjQXZSRytFY29SQndES0Vhc1JxQkVIQU1vUnl4R3JFUWNBdmhITEVjb1JCd0MrRWI4Unl4RUhBTXNScmhHckVRY0F5eEhNRWE0UkJ3Qy9FY3dSeXhFSEFMOFJ3QkhNRVFjQXpCR3hFYTRSQndETUVjMFJzUkVIQU1BUnpSSE1FUWNBd0JIQkVjMFJCd0RORWJRUnNSRUhBTTBSemhHMEVRY0F3UkhPRWMwUkJ3REJFY0lSemhFSEFNNFJ0eEcwRVFjQXpoSFBFYmNSQndEQ0VjOFJ6aEVIQU1JUnd4SFBFUWNBMEJIUkVkSVJCd0RRRWRNUjBSRUhBSHNSMHhIUUVRY0FleEY0RWRNUkJ3RFRFZFFSMFJFSEFOTVIxUkhVRVFjQWVCSFZFZE1SQndCNEVia1IxUkVIQU5VUjFoSFVFUWNBMVJIWEVkWVJCd0M1RWRjUjFSRUhBTGtSeEJIWEVRY0ExeEhZRWRZUkJ3RFhFZGtSMkJFSEFNUVIyUkhYRVFjQXhCR1lFZGtSQndEWkVkb1IyQkVIQU5rUjJ4SGFFUWNBbUJIYkVka1JCd0NZRVpRUjJ4RUhBTnNSM0JIYUVRY0EyeEhkRWR3UkJ3Q1VFZDBSMnhFSEFKUVJsaEhkRVFjQTNoRjVFWHNSQndEZUVkOFJlUkVIQU9BUjN4SGVFUWNBNEJIaEVkOFJCd0RmRVh3UmVSRUhBTjhSNGhGOEVRY0E0UkhpRWQ4UkJ3RGhFZU1SNGhFSEFONFI1QkhnRVFjQTNoSGxFZVFSQndEbEVYc1IwQkVIQU9VUjNoRjdFUWNBNWhIbkVlZ1JCd0RtRWVrUjV4RUhBSUVSNlJIbUVRY0FnUkYrRWVrUkJ3Q2ZFZW9SblJFSEFKOFI2eEhxRVFjQTZoSHNFZTBSQndEcUVlc1I3QkVIQUowUjdoR2hFUWNBblJIcUVlNFJCd0R1RWUwUjd4RUhBTzRSNmhIdEVRY0E4QkhuRWVrUkJ3RHdFZkVSNXhFSEFQQVJmaEc4RVFjQThCSHBFWDRSQndEdUVjY1JvUkVIQU80UjhoSEhFUWNBN2hIekVmSVJCd0R1RWU4Ujh4RUhBUElSdkJISEVRY0E4aEh3RWJ3UkJ3RHlFZkVSOEJFSEFQSVI4eEh4RVFjQTVoSDBFWUVSQndEbUVmVVI5QkVIQVBZUjl4SDRFUWNBOWhINUVmY1JCd0Q2RWZrUjloRUhBUG9SK3hINUVRY0FmeEg4RVlJUkJ3Qi9FZjBSL0JFSEFJSVIvaEdFRVFjQWdoSDhFZjRSQndDQkVmMFJmeEVIQUlFUjlCSDlFUWNBaEJIL0VZWVJCd0NFRWY0Ui94RUhBSVlSQUJLTkVRY0FoaEgvRVFBU0J3Q05FUUVTanhFSEFJMFJBQklCRWdjQUFSSUNFbzhSQndBQkVnTVNBaElIQUpBUkJCS1NFUWNBa0JFRkVnUVNCd0NPRVFVU2tCRUhBSTRSQmhJRkVnY0FqeEVHRW80UkJ3Q1BFUUlTQmhJSEFQd1JCeEwrRVFjQS9CRUlFZ2NTQndEOUVRZ1MvQkVIQVAwUkNSSUlFZ2NBL2hFS0V2OFJCd0QrRVFjU0NoSUhBUDhSQ3hJQUVnY0EveEVLRWdzU0J3QUFFZ3dTQVJJSEFBQVNDeElNRWdjQUFSSU5FZ01TQndBQkVnd1NEUklIQUFNU0RoSUNFZ2NBQXhJTkVnNFNCd0FDRWc4U0JoSUhBQUlTRGhJUEVnY0FCaElRRWdVU0J3QUdFZzhTRUJJSEFBVVNFUklFRWdjQUJSSVFFaEVTQndBRUVoSVNraEVIQUFRU0VSSVNFZ2NBa2hFVEVwRVJCd0NTRVJJU0V4SUhBSkVSRkJLVEVRY0FrUkVURWhRU0J3Q1RFUlVTd3hFSEFKTVJGQklWRWdjQXd4RVdFczhSQndEREVSVVNGaElIQVBvUkZ4TDdFUWNBK2hFWUVoY1NCd0Q3RVJrUytSRUhBUHNSRnhJWkVnY0ErUkVhRXZjUkJ3RDVFUmtTR2hJSEFQVVJHeEwwRVFjQTlSRWNFaHNTQndEMEVRa1MvUkVIQVBRUkd4SUpFZ2NBQ0JJZEVnY1NCd0FJRWg0U0hSSUhBQWtTSGhJSUVnY0FDUklmRWg0U0J3QUhFaUFTQ2hJSEFBY1NIUklnRWdjQUd4SWZFZ2tTQndBYkVpRVNIeElIQUFvU0loSUxFZ2NBQ2hJZ0VpSVNCd0FMRWlNU0RCSUhBQXNTSWhJakVnY0FEQklrRWcwU0J3QU1FaU1TSkJJSEFBMFNKUklPRWdjQURSSWtFaVVTQndBT0VpWVNEeElIQUE0U0pSSW1FZ2NBRHhJbkVoQVNCd0FQRWlZU0p4SUhBQkFTS0JJUkVnY0FFQkluRWlnU0J3QVJFaWtTRWhJSEFCRVNLQklwRWdjQUVoSXFFaE1TQndBU0Vpa1NLaElIQUJNU0t4SVVFZ2NBRXhJcUVpc1NCd0FVRWl3U0ZSSUhBQlFTS3hJc0VnY0FGUkl0RWhZU0J3QVZFaXdTTFJJSEFCZ1NMaElYRWdjQUdCSXZFaTRTQndBWEVqQVNHUklIQUJjU0xoSXdFZ2NBR1JJeEVob1NCd0FaRWpBU01SSUhBQndTSVJJYkVnY0FIQkl5RWlFU0J3RFNFVE1TMEJFSEFOSVJOQkl6RWdjQU5CSTFFak1TQndBMEVqWVNOUklIQU5FUk54TFNFUWNBMFJFNEVqY1NCd0RjRVRrUzJoRUhBTndST2hJNUVnY0EyaEU3RXRnUkJ3RGFFVGtTT3hJSEFORVJQQkk0RWdjQTBSSFVFVHdTQndEV0VUc1NQUklIQU5ZUjJCRTdFZ2NBMUJFOUVqd1NCd0RVRWRZUlBSSUhBRGNTTkJMU0VRY0FOeEkrRWpRU0J3QStFallTTkJJSEFENFNQeEkyRWdjQVFCSTNFamdTQndCQUVrRVNOeElIQUVJU09SSTZFZ2NBUWhKREVqa1NCd0JERWpzU09SSUhBRU1TUkJJN0VnY0FRQkk4RWtVU0J3QkFFamdTUEJJSEFFWVNPeEpFRWdjQVJoSTlFanNTQndCRkVqMFNSaElIQUVVU1BCSTlFZ2NBUVJJK0VqY1NCd0JCRWtjU1BoSUhBRWNTUHhJK0VnY0FSeEpJRWo4U0J3QkpFa29TU3hJSEFFa1NUQkpLRWdjQVN4Sk5FazRTQndCTEVrb1NUUklIQUU4U1RCSkpFZ2NBVHhKUUVrd1NCd0JPRWxFU1VoSUhBRTRTVFJKUkVnY0FVeEpRRWs4U0J3QlRFbFFTVUJJSEFGSVNWUkpXRWdjQVVoSlJFbFVTQndCWEVsZ1NXUklIQUZjU1doSllFZ2NBV1JKVUVsTVNCd0JaRWxnU1ZCSUhBRW9TV3hKTkVnY0FTaEpjRWxzU0J3Qk1FbHdTU2hJSEFFd1NYUkpjRWdjQVRSSmVFbEVTQndCTkVsc1NYaElIQUZFU1h4SlZFZ2NBVVJKZUVsOFNCd0JRRWwwU1RCSUhBRkFTWUJKZEVnY0FXaEpoRWxnU0J3QmFFbUlTWVJJSEFGZ1NZeEpVRWdjQVdCSmhFbU1TQndCVUVtQVNVQklIQUZRU1l4SmdFZ2NBWVJKa0VtTVNCd0JoRW1VU1pCSUhBR0lTWlJKaEVnY0FZaEptRW1VU0J3RDZFV2NTYUJJSEFQb1I5aEZuRWdjQTloRnBFbWNTQndEMkVmZ1JhUklIQUJnU2FoSXZFZ2NBR0JKckVtb1NCd0Q2RVdzU0dCSUhBUG9SYUJKckVnY0FhQkpsRW1zU0J3Qm9FbVFTWlJJSEFHVVNhaEpyRWdjQVpSSm1FbW9TQndCc0VtMFNiaElIQUd3U2J4SnRFZ2NBYUJKdkVtd1NCd0JvRW1jU2J4SUhBRzhTY0JMb0VRY0FieExvRVcwU0J3Qm5FbWtTY0JJSEFHY1NjQkp2RWdjQWNCSnhFdVlSQndCd0V1WVI2QkVIQUdrUytCRnhFZ2NBYVJKeEVuQVNCd0J4RW5JUzlSRUhBSEVTOVJIbUVRY0ErQkgzRVhJU0J3RDRFWElTY1JJSEFISVNjeEljRWdjQWNoSWNFdlVSQndEM0VSb1NjeElIQVBjUmN4SnlFZ2NBY3hKMEVqSVNCd0J6RWpJU0hCSUhBQm9TTVJKMEVnY0FHaEowRW5NU0J3QmpFbXdTYmhJSEFHTVNiaEpnRWdjQWFCSnNFbU1TQndCb0VtTVNaQklIQUhVU2RoTGlFUWNBZFJMaUVlTVJCd0J1RW0wU2RoSUhBRzRTZGhKMUVnY0FkaEozRW53UkJ3QjJFbndSNGhFSEFHMFM2QkYzRWdjQWJSSjNFbllTQndCM0VuZ1NmUkVIQUhjU2ZSRjhFUWNBNkJIbkVYZ1NCd0RvRVhnU2R4SUhBSGdTZVJLNkVRY0FlQks2RVgwUkJ3RG5FZkVSZVJJSEFPY1JlUko0RWdjQWVSSjZFc1lSQndCNUVzWVJ1aEVIQVBFUjh4RjZFZ2NBOFJGNkVua1NCd0I2RW5zU25CRUhBSG9TbkJIR0VRY0E4eEh2RVhzU0J3RHpFWHNTZWhJSEFIc1NmQktiRVFjQWV4S2JFWndSQndEdkVlMFJmQklIQU84UmZCSjdFZ2NBZkJKOUVwb1JCd0I4RXBvUm14RUhBTzBSN0JGOUVnY0E3UkY5RW53U0J3QitFbHNTZnhJSEFINFNmeEtBRWdjQVd4SmNFb0VTQndCYkVvRVNmeElIQUdBU2JoSjFFZ2NBWUJKMUVvSVNCd0JnRW9JU2d4SUhBR0FTZ3hKZEVnY0FneEtCRWx3U0J3Q0RFbHdTWFJJSEFIVVNoQktGRWdjQWRSS0ZFb0lTQndDQ0VvVVNoaElIQUlJU2hoS0RFZ2NBZ3hLR0VvY1NCd0NERW9jU2dSSUhBSUVTaHhLSUVnY0FnUktJRW44U0J3Qi9Fb2dTaVJJSEFIOFNpUktBRWdjQTRSR0tFb3NTQndEaEVZc1M0eEVIQU9BUmpCS0tFZ2NBNEJHS0V1RVJCd0IxRXVNUml4SUhBSFVTaXhLRUVnY0FqQktORW80U0J3Q01FbzRTaWhJSEFJb1NqaEtQRWdjQWloS1BFb3NTQndDTEVvOFNrQklIQUlzU2tCS0VFZ2NBaEJLUUVwRVNCd0NFRXBFU2hSSUhBSVVTa1JLU0VnY0FoUktTRW9ZU0J3Q0dFcElTa3hJSEFJWVNreEtIRWdjQWh4S1RFcFFTQndDSEVwUVNpQklIQUlnU2xCS1ZFZ2NBaUJLVkVva1NCd0NKRXBVU2ZoSUhBSWtTZmhLQUVnY0FmaEtXRWw0U0J3QitFbDRTV3hJSEFJMFNseEtZRWdjQWpSS1lFbzRTQndDT0VwZ1NtUklIQUk0U21SS1BFZ2NBanhLWkVwb1NCd0NQRXBvU2tCSUhBSkFTbWhLYkVnY0FrQktiRXBFU0J3Q1JFcHNTbkJJSEFKRVNuQktTRWdjQWtoS2NFcDBTQndDU0VwMFNreElIQUpNU25SS2VFZ2NBa3hLZUVwUVNCd0NVRXA0U254SUhBSlFTbnhLVkVnY0FsUktmRXFBU0J3Q1ZFcUFTZmhJSEFINFNvQktoRWdjQWZoS2hFcFlTQndDV0VxRVNYeElIQUpZU1h4SmVFZ2NBakJLaUVxTVNCd0NNRXFNU2pSSUhBSTBTb3hLa0VnY0FqUktrRXBjU0J3RGdFZVFSb2hJSEFPQVJvaEtNRWdjQTVSR2xFcVlTQndEbEVhWVM1QkVIQUtVU3B4S29FZ2NBcFJLb0VxWVNCd0RrRWFZU294SUhBT1FSb3hLaUVnY0FwaEtvRXFRU0J3Q21FcVFTb3hJSEFETVNwUkxsRVFjQU14TGxFZEFSQndBMUVxY1NwUklIQURVU3BSSXpFZ2NBVGhLcEVxb1NCd0JPRXFvU1N4SUhBRXNTcWhLckVnY0FTeEtyRWtrU0J3QlNFcXdTcVJJSEFGSVNxUkpPRWdjQVZoS3RFcXdTQndCV0Vxd1NVaElIQUVrU3F4S3VFZ2NBU1JLdUVrOFNCd0JQRXE0U3J4SUhBRThTcnhKVEVnY0FXUkt3RXJFU0J3QlpFckVTVnhJSEFGTVNyeEt3RWdjQVV4S3dFbGtTQndDcEVySVNzeElIQUtrU3N4S3FFZ2NBcWhLekVyUVNCd0NxRXJRU3F4SUhBS3dTdFJLeUVnY0FyQkt5RXFrU0J3Q3JFclFTdGhJSEFLc1N0aEt1RWdjQXJSSzNFclVTQndDdEVyVVNyQklIQUs0U3RoSzRFZ2NBcmhLNEVxOFNCd0N2RXJnU3VSSUhBSzhTdVJLd0VnY0FzQks1RXJvU0J3Q3dFcm9Tc1JJSEFFVVN1eEs4RWdjQVJSSzhFa0FTQndCQUVyd1N2UklIQUVBU3ZSSkJFZ2NBUmhLK0Vyc1NCd0JHRXJzU1JSSUhBRVFTdnhLK0VnY0FSQksrRWtZU0J3QkRFc0FTdnhJSEFFTVN2eEpFRWdjQVFoTEJFc0FTQndCQ0VzQVNReElIQUVFU3ZSTENFZ2NBUVJMQ0VrY1NCd0JIRXNJU3d4SUhBRWNTd3hKSUVnY0F1eExFRXNVU0J3QzdFc1VTdkJJSEFMd1N4UkxHRWdjQXZCTEdFcjBTQndDK0VzY1N4QklIQUw0U3hCSzdFZ2NBdlJMR0VzZ1NCd0M5RXNnU3doSUhBTDhTeVJMSEVnY0F2eExIRXI0U0J3REFFc29TeVJJSEFNQVN5UksvRWdjQXdSTExFc29TQndEQkVzb1N3QklIQU1JU3lCTE1FZ2NBd2hMTUVzTVNCd0E4Q1QwSjNnZ0hBRHdKM2dqeENBY0FUd2xSQ1QwSkJ3QlBDVDBKUEFrSEFGb0pXUWxSQ1FjQVdnbFJDVThKQndBdkNTMEpMQWtIQUM4SkxBa3VDUWNBTVFrd0NTMEpCd0F4Q1MwSkx3a0hBRDhKUVFrd0NRY0FQd2t3Q1RFSkJ3QlNCMUVIUVFrSEFGSUhRUWsvQ1FjQUxBZ3hDQzBJQndBc0NDMElIQWdIQUZRSEJRaGRCd2NBVkFkZEIxY0hCd0JlQjFrSFZRY0hBRjRIVlFkWEJ3Y0Fad2RsQjFrSEJ3Qm5CMWtIWGdjSEFCa0lGd2hsQndjQUdRaGxCMmNIQndBc0NDc0lvZ2dIQUN3SW9naWtDQWNBR1FnWUNLTUlCd0FaQ0tNSXBBZ0hBRHNHb1FhZ0JnY0FPd2FnQms0R0J3QzBCcklHbndZSEFMUUdud2FnQmdjQW93ZWtCN0lHQndDakI3SUd0QVlIQU04SDBBZWtCd2NBendla0I2TUhCd0NUQmprR09BWUhBSk1HT0FhU0JnY0FsUVk4QmprR0J3Q1ZCamtHa3dZSEFLUUdvZ1k4QmdjQXBBWThCcFVHQndDM0JyVUdvZ1lIQUxjR29nYWtCZ2NBb0FlaEI3VUdCd0NnQjdVR3R3WUhBTXdIelFlaEJ3Y0F6QWVoQjZBSEJ3Q1dCNWNIZGdZSEFKWUhkZ1l2QndjQXdnZkRCNWNIQndEQ0I1Y0hsZ2NIQU1RS3pncW1DZ2NBeEFxbUNzWUtCd0F3UWNzQkFBQnlZWFkwTFdKc1lXTnJBTndBQUFBQkFBSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QURzQVBBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0F3UVlrRUFBQnlZWFkwTFdKc1lXTnJYMmRzWVhOekFEZ0MzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUVsQVNZQkp3RW9BU2tCS2dFckFTd0JMUUV1QVM4Qk1BRXhBVElCTXdFMEFUVUJOZ0UzQVRnQk9RRTZBVHNCUEFFOUFUNEJQd0ZBQVVFQlFnRkRBVVFCUlFGR0FVY0JTQUZKQVVvQlN3Rk1BVTBCVGdGUEFWQUJVUUZTQVZNQlZBRlZBVllCVndGWUFWa0JXZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQlpnRm5BV2dCYVFGcUFXc0JiQUZ0QVc0QmJ3RndBWEVCY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQmdRR0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVpzQm5BR2RBWjRCbndHZ0FhRUJvZ0dqQWFRQnBRR21BYWNCcUFHcEFhb0Jxd0dzQWEwQnJnR3ZBYkFCc1FHeUFiTUJ0QUcxQWJZQnR3RzRBYmtCdWdHN0Fid0J2UUcrQWI4QndBSEJBY0lCd3dIRUFjVUJ4Z0hIQWNnQnlRSEtBY3NCekFITkFjNEJ6d0hRQWRFQjBnSFRBZFFCMVFIV0FkY0IyQUhaQWRvQjJ3SGNBZDBCM2dIZkFlQUI0UUhpQWVNQjVBSGxBZVlCNXdIb0Fla0I2Z0hyQWV3QjdRSHVBZThCOEFIeEFmSUI4d0gwQWZVQjlnSDNBZmdCK1FINkFmc0IvQUg5QWY0Qi93RUFBZ0VDQWdJREFnUUNCUUlHQWdjQ0NBSUpBZ29DQ3dJTUFnMENEZ0lQQWhBQ0VRSVNBaE1DRkFJVkFoWUNGd0lZQWhrQ0dnSWJBaHdDSFFJZUFoOENJQUloQWlJQ0l3SWtBaVVDSmdJbkFpZ0NLUUlxQWlzQ0xBSXRBaTRDTHdJd0FqRUNNZ0l6QWpRQ05RSTJBamNDT0FJNUFqb0NPd0k4QWowQ1BnSS9Ba0FDUVFKQ0FrTUNSQUpGQWtZQ1J3SklBa2tDU2dKTEFrd0NUUUpPQWs4Q1VBSlJBbElDVXdKVUFsVUNWZ0pYQWxnQ1dRSmFBbHNDWEFKZEFsNENYd0pnQW1FQ1lnSmpBbVFDWlFKbUFtY0NhQUpwQW1vQ2F3SnNBbTBDYmdKdkFuQUNjUUp5QW5NQ2RBSjFBbllDZHdKNEFua0NlZ0o3QW53Q2ZRSitBbjhDZ0FLQkFvSUNnd0tFQW9VQ2hnS0hBb2dDaVFLS0Fvc0NqQUtOQW80Q2p3S1FBcEVDa2dLVEFwUUNsUUtXQXBjQ21BS1pBcG9DbXdLY0FwMENuZ0tmQXFBQ29RS2lBcU1DcEFLbEFxWUNwd0tvQXFrQ3FnS3JBcXdDclFLdUFxOENzQUt4QXJJQ3N3SzBBclVDdGdLM0FyZ0N1UUs2QXJzQ3ZBSzlBcjRDdndMQUFzRUN3Z0xEQXNRQ3hRTEdBc2NDeUFMSkFzb0N5d0xNQXMwQ3pnTFBBdEFDMFFMU0F0TUMxQUxWQXRZQzF3TFlBdGtDMmdMYkF0d0MzUUxlQXQ4QzRBTGhBdUlDNHdMa0F1VUM1Z0xuQXVnQzZRTHFBdXNDN0FMdEF1NEM3d0x3QXZFQzhnTHpBdlFDOVFMMkF2Y0MrQUw1QXZvQyt3TDhBdjBDL2dML0FnQURBUU1DQXdNREJBTUZBd1lEQndNSUF3a0RDZ01MQXd3RERRTU9BdzhERUFNUkF4SURFd013UWNvaEFBQnlZWFkwTFdKdlpIa0EzQkFVQXhVREZnTVhBeGdER1FNYUF4c0RIQU1kQXg0REh3TWdBeUVESWdNakF5UURKUU1tQXljREtBTXBBeW9ES3dNc0F5MERMZ012QXpBRE1RTXlBek1ETkFNMUF6WUROd000QXprRE9nTTdBendEUFFNK0F6OERRQU5CQTBJRFF3TkVBMFVEUmdOSEEwZ0RTUU5LQTBzRFRBTk5BMDREVHdOUUExRURVZ05UQTFRRFZRTldBMWNEV0FOWkExb0RXd05jQTEwRFhnTmZBMkFEWVFOaUEyTURaQU5sQTJZRFp3Tm9BMmtEYWdOckEyd0RiUU51QTI4RGNBTnhBM0lEY3dOMEEzVURkZ04zQTNnRGVRTjZBM3NEZkFOOUEzNERmd09BQTRFRGdnT0RBNFFEaFFPR0E0Y0RpQU9KQTRvRGl3T01BNDBEamdPUEE1QURrUU9TQTVNRGxBT1ZBNVlEbHdPWUE1a0RtZ09iQTV3RG5RT2VBNThEb0FPaEE2SURvd09rQTZVRHBnT25BNmdEcVFPcUE2c0RyQU90QTY0RHJ3T3dBN0VEc2dPekE3UUR0UU8yQTdjRHVBTzVBN29EdXdPOEE3MER2Z08vQThBRHdRUENBOE1EeEFQRkE4WUR4d1BJQThrRHlnUExBOHdEelFQT0E4OEQwQVBSQTlJRDB3UFVBOVVEMWdQWEE5Z0QyUVBhQTlzRDNBUGRBOTREM3dQZ0ErRUQ0Z1BqQStRRDVRUG1BK2NENkFQcEErb0Q2d1BzQSswRDdnUHZBL0FEOFFQeUEvTUQ5QVAxQS9ZRDl3UDRBL2tEK2dQN0Evd0QvUVArQS84REFBUUJCQUlFQXdRRUJBVUVCZ1FIQkFnRUNRUUtCQXNFREFRTkJBNEVEd1FRQkJFRUVnUVRCQlFFRlFRV0JCY0VHQVFaQkJvRUd3UWNCQjBFSGdRZkJDQUVJUVFpQkNNRUpBUWxCQ1lFSndRb0JDa0VLZ1FyQkN3RUxRUXVCQzhFTUFReEJESUVNd1EwQkRVRU5nUTNCRGdFT1FRNkJEc0VQQVE5QkQ0RVB3UkFCRUVFUWdSREJFUUVSUVJHQkVjRVNBUkpCRW9FU3dSTUJFMEVUZ1JQQkZBRVVRUlNCRk1FVkFSVkJGWUVWd1JZQkZrRVdnUmJCRndFWFFSZUJGOEVZQVJoQkdJRVl3UmtCR1VFWmdSbkJHZ0VhUVJxQkdzRWJBUnRCRzRFYndSd0JIRUVjZ1J6QkhRRWRRUjJCSGNFZUFSNUJIb0Vld1I4QkgwRWZnUi9CSUFFZ1FTQ0JJTUVoQVNGQklZRWh3U0lCSWtFaWdTTEJJd0VqUVNPQkk4RWtBU1JCSklFa3dTVUJKVUVsZ1NYQkpnRW1RU2FCSnNFbkFTZEJKNEVud1NnQktFRW9nU2pCS1FFcFFTbUJLY0VxQVNwQktvRXF3U3NCSzBFcmdTdkJMQUVzUVN5QkxNRXRBUzFCTFlFdHdTNEJMa0V1Z1M3Qkx3RXZRUytCTDhFd0FUQkJNSUV3d1RFQk1VRXhnVEhCTWdFeVFUS0JNc0V6QVROQk00RXp3VFFCTkVFMGdUVEJOUUUxUVRXQk5jRTJBVFpCTm9FMndUY0JOMEUzZ1RmQk9BRTRRVGlCT01FNUFUbEJPWUU1d1RvQk9rRTZnVHJCT3dFN1FUdUJPOEU4QVR4QlBJRTh3VDBCUFVFOWdUM0JQZ0UrUVQ2QlBzRS9BVDlCUDRFL3dRQUJRRUZBZ1VEQlFRRkJRVUdCUWNGQ0FVSkJRd0ZEUVVPQlE4RkVBVVJCUklGRXdVVUJSVUZGZ1VYQlJnRkdRVWFCUnNGSEFVZEJSNEZId1VnQlNFRklnVWpCU1FGSlFVbUJTY0ZLQVVwQlNvRkt3VXNCUzBGTGdVdkJUQUZNUVV5QlRNRk5BVTFCVFlGTndVNEJUa0ZPZ1U3QlR3RlBRVStCVDhGUUFWQkJVSUZRd1ZFQlVVRlJnVkhCVWdGU1FWS0JVc0ZUQVZOQlU0RlR3VlFCVkVGVWdWVEJWUUZWUVZXQlZjRldBVlpCVm9GV3dWY0JWMEZYZ1ZmQmE0SHJ3ZXdCN0VIc2dlekI3UUh0UWUyQjdjSHVBZTVCN29IdXdlOEI3MEh2Z2UvQjhBSHdRZkNCOE1IeEFmRkI4WUh4d2ZJQjhrSHlnZkxCOHdIelFmT0I4OEgwQWZSQjlJSDB3ZlVCOVVIMWdmWEI5Z0gyUWZhQjlzSDNBZmRCOTRIM3dmZ0IrRUg0Z2ZqQitRSDVRZm1CK2NINkFmcEIrb0g2d2ZzQiswSDdnZnZCL0FIOFFmeUIvTUg5QWYxQi9ZSDl3ZjRCL2tIK2dmN0Ivd0gvUWYrQi84SEFBZ0JDQUlJQXdnRUNBVUlCZ2dIQ0FnSUNRZ0tDQXNJREFnTkNBNElEd2dRQ0JFSUVnZ1RDQlFJRlFnV0NCY0lHQWdaQ0JvSUd3Z2NDQjBJSGdnZkNDQUlJUWdpQ0NNSUpBZ2xDQ1lJSndnb0NDa0lLZ2dyQ0N3SUxRZ3VDQzhJTUFneENESUlNd2cwQ0RVSU5nZzNDRGdJT1FnNkNEc0lQQWc5Q0Q0SVB3aEFDRUVJUWdoRENFUUlSUWhHQ0VjSVNBaEpDRW9JU3doTUNFMElUZ2hQQ0ZBSVVRaFNDRk1JVkFoVkNGWUlWd2hZQ0ZrSVdnaGJDRndJWFFoZUNGOElZQWhoQ0dJSVl3aGtDR1VJWmdobkNHZ0lhUWhxQ0dzSWJBaHRDRzRJYndod0NIRUljZ2h6Q0hRSWRRaDJDSGNJZUFoNUNIb0lld2g4Q0gwSWZnaC9DSUFJZ1FpQ0NJTUloQWlGQ0lZSWh3aUlDSWtJaWdpTENJd0lqUWlPQ0k4SWtBaVJDSklJa3dpVUNKVUlsZ2lYQ0pnSW1RaWFDSnNJbkFpZENKNElud2lnQ0tFSW9naWpDS1FJcFFpbUNLY0lxQWlwQ0tvSXF3aXNDSzBJcmdpdkNMQUlzUWl5Q0xNSXRBaTFDTFlJdHdpNENMa0l1Z2k3Q0x3SXZRaStDTDhJd0FqQkNNSUl3d2pFQ01VSXhnakhDTWdJeVFqS0NNc0l6QWpOQ000SXp3alFDTkVJMGdqVENOUUkxUWpXQ05jSTJBalpDTm9JMndqY0NOMEkzZ2pmQ09BSTRRamlDT01JNUFqbENPWUk1d2pvQ09rSTZnanJDT3dJN1FqdUNPOEk4QWp4Q1BJSTh3ajBDUFVJOWdqM0NQZ0krUWo2Q1BzSS9BajlDUDRJL3dnQUNRRUpBZ2tEQ1FRSkJRa0dDUWNKQ0FrSkNRb0pDd2tNQ1EwSkRna1BDUkFKRVFrU0NSTUpGQWtWQ1JZSkZ3a1lDUmtKR2drYkNSd0pIUWtlQ1I4SklBa2hDU0lKSXdra0NTVUpKZ2tuQ1NnSktRa3FDU3NKTEFrdENTNEpMd2t3Q1RFSk1na3pDVFFKTlFrMkNUY0pPQWs1Q1RvSk93azhDVDBKUGdrL0NVQUpRUWxDQ1VNSlJBbEZDVVlKUndsSUNVa0pTZ2xMQ1V3SlRRbE9DVThKVUFsUkNWSUpVd2xVQ1ZVSlZnbFhDVmdKV1FsYUNWc0pYQWxkQ1Y0Slh3bGdDV0VKWWdsakNXUUpaUWxtQ1djSmFBbHBDV29KYXdsc0NXMEpiZ2x2Q1hBSmNRbHlDWE1KZEFsMUNYWUpkd2w0Q1hrSmVnbDdDWHdKZlFsK0NYOEpnQW1CQ1lJSmd3bUVDWVVKaGdtSENZZ0ppUW1LQ1lzSmpBbU5DWTRKandtUUNaRUprZ21UQ1pRSmxRbVdDWmNKbUFtWkNab0ptd21jQ1owSm5nbWZDYUFKb1FtaUNhTUpwQW1sQ2FZSnB3bW9DYWtKcWdtckNhd0pyUW11Q2E4SnNBbXhDYklKc3dtMENiVUp0Z20zQ2JnSnVRbTZDYnNKdkFtOUNiNEp2d25BQ2NFSndnbkRDY1FKeFFuR0NjY0p5QW5KQ2NvSnl3bk1DYzBKemduUENkQUowUW5TQ2RNSjFBblZDZFlKMXduWUNka0oyZ25iQ2R3SjNRbmVDZDhKNEFuaENlSUo0d25rQ2VVSjVnbm5DZWdKNlFucUNlc0o3QW50Q2U0Sjd3bndDZkVKOGduekNmUUo5UW4yQ2ZjSitBbjVDZm9KK3duOENmMEovZ24vQ1FBS0FRb0NDZ01LQkFvRkNnWUtCd29JQ2drS0Nnb0xDZ3dLRFFvT0NnOEtFQW9SQ2hJS0V3b1VDaFVLRmdvWENoZ0tHUW9hQ2hzS0hBb2RDaDRLSHdvZ0NpRUtJZ29qQ2lRS0pRb21DaWNLS0FvcENpb0tLd29zQ2kwS0xnb3ZDakFLTVFveUNqTUtOQW8xQ2pZS053bzRDamtLT2dvN0Nqd0tQUW8rQ2o4S1FBcEJDa0lLUXdwRUNrVUtSZ3BIQ2tnS1NRcEtDa3NLVEFwTkNrNEtUd3BRQ2xFS1VncFRDbFFLVlFwV0NsY0tXQXBaQ2xvS1d3cGNDbDBLWGdwZkNtQUtZUXBpQ21NS1pBcGxDbVlLWndwb0Nta0thZ3ByQ213S2JRcHVDbThLY0FweENuSUtjd3AwQ25VS2RncDNDbmdLZVFwNkNuc0tmQXA5Q240S2Z3cUFDb0VLZ2dxRENvUUtoUXFHQ29jS2lBcUpDb29LaXdxTUNvMEtqZ3FQQ3BBS2tRcVNDcE1LbEFxVkNwWUtsd3FZQ3BrS21ncWJDcHdLblFxZUNwOEtvQXFoQ3FJS293cWtDcVVLcGdxbkNxZ0txUXFxQ3FzS3JBcXRDcTRLcndxd0NyRUtzZ3F6Q3JRS3RRcTJDcmNLdUFxNUNyb0t1d3E4Q3IwS3ZncS9Dc0FLd1FyQ0NzTUt4QXJGQ3NZS3h3cklDc2tLeWdyTENzd0t6UXJPQ3M4SzBBclJDdElLMHdyVUN0VUsxZ3JYQ3RnSzJRcmFDdHNLM0FyZEN0NEszd3JnQ3VFSzRncmpDdVFLNVFybUN1Y0s2QXJwQ3VvSzZ3cnNDdTBLN2dydkN2QUs4UXJ5Q3ZNSzlBcjFDdllLOXdyNEN2a0srZ3I3Q3Z3Sy9RcitDdjhLQUFzQkN3SUxBd3NFQ3dVTEJnc0hDd2dMQ1FzS0N3c0xEQXNOQ3c0TER3c1FDeEVMRWdzVEN4UUxGUXNXQ3hjTEdBc1pDeG9MR3dzY0N4MExIZ3NmQ3lBTElRc2lDeU1MSkFzbEN5WUxKd3NvQ3lrTEtnc3JDeXdMTFFzdUN5OExNQXN4Q3pJTE13czBDelVMTmdzM0N6Z0xPUXM2Q3pzTFBBczlDejRMUHd0QUMwRUxRZ3REQzBRTFJRdEdDMGNMU0F0SkMwb0xTd3RNQzAwTFRndFBDMUFMVVF0U0MxTUxWQXRWQzFZTFZ3dFlDMWtMV2d0YkMxd0xYUXRlQzE4TFlBdGhDMklMWXd0a0MyVUxaZ3RuQzJnTGFRdHFDMnNMYkF0dEMyNExid3R3QzNFTGNndHpDM1FMZFF0MkMzY0xlQXQ1QzNvTGV3dDhDMzBMZmd0L0M0QUxnUXVDQzRNTGhBdUZDNFlMaHd1SUM0a0xpZ3VMQzR3TGpRdU9DNDhMa0F1UkM1SUxrd3VVQzVVTGxndVhDNWdMbVF1YUM1c0xuQXVkQzU0TG53dWdDNkVMb2d1akM2UUxwUXVtQzZjTHFBdXBDNm9McXd1c0M2MExyZ3V2QzdBTHNRdXlDN01MdEF1MUM3WUx0d3U0QzdrTHVndTdDN3dMdlF1K0M3OEx3QXZCQzhJTHd3dkVDOFVMeGd2SEM4Z0x5UXZLQzhzTHpBdk5DODRMend2UUM5RUwwZ3ZUQzlRTDFRdldDOWNMMkF2WkM5b0wyd3ZjQzkwTDNndmZDK0FMNFF2aUMrTUw1QXZsQytZTDV3dm9DK2tMNmd2ckMrd0w3UXZ1Qys4TDhBdnhDL0lMOHd2MEMvVUw5Z3YzQy9nTCtRdjZDL3NML0F2OUMvNEwvd3NBREFFTUFnd0REQVFNQlF3R0RBY01DQXdKREFvTUN3d01EQTBNRGd3UERCQU1FUXdTREJNTUZBd1ZEQllNRnd3WURCa01HZ3diREJ3TUhRd2VEQjhNSUF3aERDSU1Jd3drRENVTUpnd25EQ2dNS1F3cURDc01MQXd0REM0TUx3d3dEREVNTWd3ekREUU1OUXcyRERjTU9BdzVERG9NT3d3OEREME1QZ3cvREVBTVFReENERU1NUkF4RkRFWU1Sd3hJREVrTVNneExERXdNVFF4T0RFOE1VQXhSREZJTVV3eFVERlVNVmd4WERGZ01XUXhhREZzTVhBeGRERjRNWHd4Z0RHRU1ZZ3hqREdRTVpReG1ER2NNYUF4cERHb01hd3hzREcwTWJneHZESEFNY1F4eURITU1kQXgxREhZTWR3eDRESGtNZWd4N0RId01mUXgrREg4TWdBeUJESUlNZ3d5RURJVU1oZ3lIRElnTWlReUtESXNNakF5TkRJNE1qd3lRREpFTWtneVRESlFNbFF5V0RKY01tQXlaREpvTW13eWNESjBNbmd5ZkRLQU1vUXlpREtNTXBBeWxES1lNcHd5b0RLa01xZ3lyREt3TXJReXVESzhNc0F5eERMSU1zd3kwRExVTXRneTNETGdNdVF5NkRMc012QXk5REw0TXZ3ekFETUVNd2d6RERNUU14UXpHRE1jTXlBekpETW9NeXd6TURNME16Z3pQRE5BTTBRelNETk1NMUF6VkROWU0xd3pZRE5rTTJnemJETndNM1F6ZUROOE00QXpoRE9JTTR3emtET1VNNWd6bkRPZ002UXpxRE9zTTdBenRETzRNN3d6d0RQRU04Z3p6RFBRTTlRejJEUGNNK0F6NURQb00rd3o4RFAwTS9nei9EQUFOQVEwQ0RRTU5CQTBGRFFZTkJ3MElEUWtOQ2cwTERRd05EUTBPRFE4TkVBMFJEUklORXcwVURSVU5GZzBYRFJnTkdRMGFEUnNOSEEwZERSNE5IdzBnRFNFTklnMGpEU1FOSlEwbURTY05LQTBwRFNvTkt3MHNEUzBOTGcwdkRUQU5NUTB5RFRNTk5BMDFEVFlOTncwNERUa05PZzA3RFR3TlBRMCtEVDhOUUExQkRVSU5RdzFFRFVVTlJnMUhEVWdOU1ExS0RVc05UQTFORFU0TlR3MVFEVkVOVWcxVERWUU5WUTFXRFZjTldBMVpEVm9OV3cxY0RWME5YZzFmRFdBTllRMWlEV01OWkExbERXWU5adzFvRFdrTmFnMXJEV3dOYlExdURXOE5jQTF4RFhJTmN3MTBEWFVOZGcxM0RYZ05lUTE2RFhzTmZBMTlEWDROZncyQURZRU5nZzJERFlRTmhRMkdEWWNOaUEySkRZb05pdzJNRFkwTmpnMlBEWkFOa1EyU0RaTU5sQTJWRFpZTmx3MllEWmtObWcyYkRad05uUTJlRFo4Tm9BMmhEYUlOb3cya0RhVU5wZzJuRGFnTnFRMnFEYXNOckEydERhNE5ydzJ3RGJFTnNnMnpEYlFOdFEyMkRiY051QTI1RGJvTnV3MjhEYjBOdmcyL0RjQU53UTNDRGNNTnhBM0ZEY1lOeHczSURja055ZzNMRGN3TnpRM09EYzhOMEEzUkRkSU4wdzNVRGRVTjFnM1hEZGdOMlEzYURkc04zQTNkRGQ0TjN3M2dEZUVONGczakRlUU41UTNtRGVjTjZBM3BEZW9ONnczc0RlME43ZzN2RGZBTjhRM3lEZk1OOUEzMURmWU45dzM0RGZrTitnMzdEZndOL1EzK0RmOE5BQTRCRGdJT0F3NEVEZ1VPQmc0SERnZ09DUTRLRGdzT0RBNE5EZzRPRHc0UURoRU9FZzRURGhRT0ZRNFdEaGNPR0E0WkRob09HdzRjRGgwT0hnNGZEaUFPSVE0aURpTU9KQTRsRGlZT0p3NG9EaWtPS2c0ckRpd09MUTR1RGk4T01BNHhEaklPTXc0MERqVU9OZzQzRGpnT09RNDZEanNPUEE0OURqNE9QdzVBRGtFT1FnNUREa1FPUlE1R0RrY09TQTVKRGtvT1N3NU1EazBPVGc1UERsQU9VUTVTRGxNT1ZBNVZEbFlPVnc1WURsa09XZzViRGx3T1hRNWVEbDhPWUE1aERtSU9ZdzVrRG1VT1pnNW5EbWdPYVE1cURtc09iQTV0RG00T2J3NXdEbkVPY2c1ekRuUU9kUTUyRG5jT2VBNTVEbm9PZXc1OERuME9mZzUvRG9BT2dRNkNEb01PaEE2RkRvWU9odzZJRG9rT2lnNkxEb3dPalE2T0RvOE9rQTZSRHBJT2t3NlVEcFVPbGc2WERwZ09tUTZhRHBzT25BNmREcDRPbnc2Z0RxRU9vZzZqRHFRT3BRNm1EcWNPcUE2cERxb09xdzZzRHEwT3JnNnZEckFPc1E2eURyTU90QTYxRHJZT3R3NjREcmtPdWc2N0Ryd092UTYrRHI4T3dBN0JEc0lPd3c3RURzVU94ZzdIRHNnT3lRN0tEc3NPekE3TkRzNE96dzdRRHRFTzBnN1REdFFPMVE3V0R0Y08yQTdaRHRvTzJ3N2NEdDBPM2c3ZkR1QU80UTdpRHVNTzVBN2xEdVlPNXc3b0R1a082ZzdyRHV3TzdRN3VEdThPOEE3eER2SU84dzcwRHZVTzlnNzNEdmdPK1E3NkR2c08vQTc5RHY0Ty93NEFEd0VQQWc4RER3UVBCUThHRHdjUENBOEpEd29QQ3c4TUR3MFBEZzhQRHhBUEVROFNEeE1QRkE4VkR4WVBGdzhZRHhrUEdnOGJEeHdQSFE4ZUR4OFBJQThoRHlJUEl3OGtEeVVQSmc4bkR5Z1BLUThxRHlzUExBOHREeTRQTHc4d0R6RVBNZzh6RHpRUE5RODJEemNQT0E4NUR6b1BPdzg4RHowUFBnOC9EMEFQUVE5Q0QwTVBSQTlGRDBZUFJ3OUlEMGtQU2c5TEQwd1BUUTlPRDA4UFVBOVJEMUlQVXc5VUQxVVBWZzlYRDFnUFdROWFEMXNQWEE5ZEQxNFBYdzlnRDJFUFlnOWpEMlFQWlE5bUQyY1BhQTlwRDJvUGF3OXNEMjBQYmc5dkQzQVBjUTl5RDNNUGRBOTFEM1lQZHc5NEQza1BlZzk3RDN3UGZROStEMzhQZ0ErQkQ0SVBndytFRDRVUGhnK0hENGdQaVErS0Q0c1BqQStORDQ0UGp3K1FENUVQa2crVEQ1UVBsUStXRDVjUG1BK1pENW9QbXcrY0Q1MFBuZytmRDZBUG9RK2lENk1QcEErbEQ2WVBwdytvRDZrUHFnK3JENndQclErdUQ2OFBzQSt4RDdJUHN3KzBEN1VQdGcrM0Q3Z1B1USs2RDdzUHZBKzlENzRQdncvQUQ4RVB3Zy9ERDhRUHhRL0dEOGNQeUEvSkQ4b1B5dy9NRDgwUHpnL1BEOUFQMFEvU0Q5TVAxQS9WRDlZUDF3L1lEOWtQMmcvYkQ5d1AzUS9lRDk4UDRBL2hEK0lQNHcva0QrVVA1Zy9uRCtnUDZRL3FEK3NQN0EvdEQrNFA3dy93RC9FUDhnL3pEL1FQOVEvMkQvY1ArQS81RC9vUCt3LzhELzBQL2cvL0R3QVFBUkFDRUFNUUJCQUZFQVlRQnhBSUVBa1FDaEFMRUF3UURSQU9FQThRRUJBUkVCSVFFeEFVRUJVUUZoQVhFQmdRR1JBYUVCc1FIQkFkRUI0UUh4QWdFQ0VRSWhBakVDUVFKUkFtRUNjUUtCQXBFQ29RS3hBc0VDMFFMaEF2RURBUU1SQXlFRE1RTkJBMUVEWVFOeEE0RURrUU9oQTdFRHdRUFJBK0VEOFFRQkJCRUVJUVF4QkVFRVVRUmhCSEVFZ1FTUkJLRUVzUVRCQk5FRTRRVHhCUUVGRVFVaEJURUZRUVZSQldFRmNRV0JCWkVGb1FXeEJjRUYwUVhoQmZFR0FRWVJCaUVHTVFaQkJsRUdZUVp4Qm9FR2tRYWhCckVHd1FiUkJ1RUc4UWNCQnhFSElRY3hCMEVIVVFkaEIzRUhnUWVSQjZFSHNRZkJCOUVINFFmeENBRUlFUWdoQ0RFSVFRaFJDR0VJY1FpQkNKRUlvUWl4Q01FSTBRamhDUEVKQVFrUkNTRUpNUWxCQ1ZFSllRbHhDWUVKa1FtaENiRUp3UW5SQ2VFSjhRb0JDaEVLSVFveENrRUtVUXBoQ25FS2dRcVJDcUVLc1FyQkN0RUs0UXJ4Q3dFTEVRc2hDekVMUVF0UkMyRUxjUXVCQzVFTG9RdXhDOEVMMFF2aEMvRU1BUXdSRENFTU1ReEJERkVNWVF4eERJRU1rUXloRExFTXdRelJET0VNOFEwQkRSRU5JUTB4RFVFTlVRMWhEWEVOZ1EyUkRhRU5zUTNCRGRFTjRRM3hEZ0VPRVE0aERqRU9RUTVSRG1FT2NRNkJEcEVPb1E2eERzRU8wUTdoRHZFUEFROFJEeUVQTVE5QkQxRVBZUTl4RDRFUGtRK2hEN0VQd1EvUkQrRVA4UUFCRUJFUUlSQXhFRUVRVVJCaEVIRVFnUkNSRUtFUXNSREJFTkVRNFJEeEVRRVJFUkVoRVRFUlFSRlJFV0VSY1JHQkVaRVJvUkd4RWNFUjBSSGhFZkVTQVJJUkVpRVNNUkpCRWxFU1lSSnhFb0VTa1JLaEVyRVN3UkxSRXVFUzhSTUJFeEVUSVJNeEUwRVRVUk5oRTNFVGdST1JFNkVUc1JQQkU5RVQ0UlB4RkFFVUVSUWhGREVVUVJSUkZHRVVjUlNCRkpFVW9SU3hGTUVVMFJUaEZQRVZBUlVSRlNFVk1SVkJGVkVWWVJWeEZZRVZrUldoRmJFVndSWFJGZUVWOFJZQkZoRVdJUll4RmtFV1VSWmhGbkVXZ1JhUkZxRVdzUmJCRnRFVzRSYnhGd0VYRVJjaEZ6RVhRUmRSRjJFWGNSZUJGNUVYb1JleEY4RVgwUmZoRi9FWUFSZ1JHQ0VZTVJoQkdGRVlZUmh4R0lFWWtSaWhHTEVZd1JqUkdPRVk4UmtCR1JFWklSa3hHVUVaVVJsaEdYRVpnUm1SR2FFWnNSbkJHZEVaNFJueEdnRWFFUm9oR2pFYVFScFJHbUVhY1JxQkdwRWFvUnF4R3NFYTBScmhHdkViQVJzUkd5RWJNUnRCRzFFYllSdHhHNEVia1J1aEc3RWJ3UnZSRytFYjhSd0JIQkVjSVJ3eEhFRWNVUnhoSEhFY2dSeVJIS0Vjc1J6QkhORWM0Unp4SFFFZEVSMGhIVEVkUVIxUkhXRWRjUjJCSFpFZG9SMnhIY0VkMFIzaEhmRWVBUjRSSGlFZU1SNUJIbEVlWVI1eEhvRWVrUjZoSHJFZXdSN1JIdUVlOFI4Qkh4RWZJUjh4SDBFZlVSOWhIM0VmZ1IrUkg2RWZzUi9CSDlFZjRSL3hFQUVnRVNBaElERWdRU0JSSUdFZ2NTQ0JJSkVnb1NDeElNRWcwU0RoSVBFaEFTRVJJU0VoTVNGQklWRWhZU0Z4SVlFaGtTR2hJYkVod1NIUkllRWg4U0lCSWhFaUlTSXhJa0VpVVNKaEluRWlnU0tSSXFFaXNTTEJJdEVpNFNMeEl3RWpFU01oSXpFalFTTlJJMkVqY1NPQkk1RWpvU094SThFajBTUGhJL0VrQVNRUkpDRWtNU1JCSkZFa1lTUnhKSUVra1NTaEpMRWt3U1RSSk9FazhTVUJKUkVsSVNVeEpVRWxVU1ZoSlhFbGdTV1JKYUVsc1NYQkpkRWw0U1h4SmdFbUVTWWhKakVtUVNaUkptRW1jU2FCSnBFbW9TYXhKc0VtMFNiaEp2RW5BU2NSSnlFbk1TZEJKMUVuWVNkeEo0RW5rU2VoSjdFbndTZlJKK0VuOFNnQktCRW9JU2d4S0VFb1VTaGhLSEVvZ1NpUktLRW9zU2pCS05FbzRTanhLUUVwRVNraEtURXBRU2xSS1dFcGNTbUJLWkVwb1NteEtjRXAwU25oS2ZFcUFTb1JLaUVxTVNwQktsRXFZU3B4S29FcWtTcWhLckVxd1NyUkt1RXE4U3NCS3hFcklTc3hLMEVyVVN0aEszRXJnU3VSSzZFcnNTdkJLOUVyNFN2eExBRXNFU3doTERFc1FTeFJMR0VzY1N5QkxKRXNvU3l4TE1FczBTemhMUEV0QVMwUkxTRXRNUzFCTFZFdFlTMXhMWUV0a1MyaExiRXR3UzNSTGVFdDhTNEJMaEV1SVM0eExrRXVVUzVoTG5FdWdTNlJMcUV1c1M3Qkx0RXU0Uzd4THdFdkVTOGhMekV2UVM5UkwyRXZjUytCTDVFdm9TK3hMOEV2MFMvaEwvRWdBVEFSTUNFd01UQkJNRkV3WVRCeE1JRXdrVENoTUxFd3dURFJNT0V3OFRFQk1SRXhJVEV4TVVFeFVURmhNWEV4Z1RHUk1hRXhzVEhCTWRFeDRUSHhNZ0V5RVRJaE1qRXlRVEpSTW1FeWNUS0JNcEV5b1RLeE1zRXkwVExoTXZFekFUTVJNeUV6TVROQk0xRXpZVE54TTRFemtUT2hNN0V6d1RQUk0rRXo4VFFCTkJFMElUUXhORUUwVVRSaE5IRTBnVFNSTktFMHNUVEJOTkUwNFRUeE5RRTFFVFVoTlRFMVFUVlJOV0UxY1RXQk5aRTFvVFd4TmNFMTBUWGhOZkUyQVRZUk5pRTJNVFpCTmxFMllUWnhOb0Uya1RhaE5yRTJ3VGJSTnVFMjhUY0JOeEUzSVRjeE4wRTNVVGRoTjNFM2dUZVJONkUzc1RmQk45RTM0VGZ4T0FFNEVUZ2hPREU0UVRoUk9HRTRjVGlCT0pFNG9UaXhPTUU0MFRqaE9QRTVBVGtST1NFNU1UbEJPVkU1WVRseE9ZRTVrVG1oT2JFNXdUblJPZUU1OFRvQk9oRTZJVG94T2tFNlVUcGhPbkU2Z1RxUk9xRTZzVHJCT3RFNjRUcnhPd0U3RVRzaE96RTdRVHRSTzJFN2NUdUJPNUU3b1R1eE84RTcwVHZoTy9FeGdmR1I4YUh4c2ZIQjhkSHg0Zkh4OGdIeUVmSWg4akh5UWZKUjhtSHljZktCOHBIeW9mS3g4c0h5MGZMaDh2SHpBZk1SOHlIek1mTkI4MUh6WWZOeDg0SHprZk9oODdIendmUFI4K0h6OGZRQjlCSDBJZlF4OUVIMFVmUmg5SEgwZ2ZTUjlLSDBzZlRCOU5IMDRmVHg5UUgxRWZVaDlUSDFRZlZSOVdIMWNmV0I5Wkgxb2ZXeDljSDEwZlhoOWZIMkFmWVI5aUgyTWZaQjlsSDJZZlp4OW9IMmtmYWg5ckgyd2ZiUjl1SDI4ZmNCOXhIM0lmY3g5MEgzVWZkaDkzSDNnZmVSOTZIM3NmZkI5OUgzNGZmeCtBSDRFZmdoK0RINFFmaFIrR0g0Y2ZpQitKSDRvZml4K01INDBmamgrUEg1QWZrUitTSDVNZmxCK1ZINVlmbHgrWUg1a2ZtaCtiSDV3Zm5SK2VINThmb0IraEg2SWZveCtrSDZVZnBoK25INmdmcVIrcUg2c2ZyQit0SDY0ZnJ4K3dIN0Vmc2grekg3UWZ0UisySDdjZnVCKzVIN29mdXgrOEg3MGZ2aCsvSDhBZndSL0NIOE1meEIvRkg4WWZ4eC9JSDhrZnloL0xIOHdmelIvT0g4OGYwQi9SSDlJZjB4L1VIOVVmMWgvWEg5Z2YyUi9hSDlzZjNCL2RIOTRmM3gvZ0grRWY0aC9qSCtRZjVSL21IK2NmNkIvcEgrb2Y2eC9zSCswZjdoL3ZIL0FmOFIveUgvTWY5Qi8xSC9ZZjl4LzRIL2tmK2gvN0gvd2YvUi8rSC84ZkFDQUJJQUlnQXlBRUlBVWdCaUFISUFnZ0NTQUtJQXNnRENBTklBNGdEeUFRSUJFZ0VpQVRJQlFnRlNBV0lCY2dHQ0FaSUJvZ0d5QWNJQjBnSGlBZklDQWdJU0FpSUNNZ0pDQWxJQ1lnSnlBb0lDa2dLaUFySUN3Z0xTQXVJQzhnTUNBeElESWdNeUEwSURVZ05pQTNJRGdnT1NBNklEc2dQQ0E5SUQ0Z1B5QkFJRUVnUWlCRElFUWdSU0JHSUVjZ1NDQkpJRW9nU3lCTUlFMGdUaUJQSUZBZ1VTQlNJRk1nVkNCVklGWWdWeUJZSUZrZ1dpQmJJRndnWFNCZUlGOGdZQ0JoSUdJZ1l5QmtJR1VnWmlCbklHZ2dhU0JxSUdzZ2JDQnRJRzRnYnlCd0lIRWdjaUJ6SUhRZ2RTQjJJSGNnZUNCNUlIb2dleUI4SUgwZ2ZpQi9JSUFnZ1NDQ0lJTWdoQ0NGSUlZZ2h5Q0lJSWtnaWlDTElJd2dqU0NPSUk4Z2tDQ1JJSklna3lDVUlKVWdsaUNYSUpnZ21TQ2FJSnNnbkNDZElKNGdueUNnSUtFZ29pQ2pJS1FncFNDbUlLY2dxQ0NwSUtvZ3F5Q3NJSzBncmlDdklMQWdzU0N5SUxNZ3RDQzFJTFlndHlDNElMa2d1aUM3SUx3Z3ZTQytJTDhnd0NEQklNSWd3eURFSU1VZ3hpREhJTWdneVNES0lNc2d6Q0ROSU00Z3p5RFFJTkVnMGlEVElOUWcxU0RXSU5jZzJDRFpJTm9nMnlEY0lOMGczaURmSU9BZzRTRGlJT01nNUNEbElPWWc1eURvSU9rZzZpRHJJT3dnN1NEdUlPOGc4Q0R4SVBJZzh5RDBJUFVnOWlEM0lQZ2crU0Q2SVBzZy9DRDlJUDRnL3lBQUlRRWhBaUVESVFRaEJTRUdJUWNoQ0NFSklRb2hDeUVNSVEwaERpRVBJUkFoRVNFU0lSTWhGQ0VWSVJZaEZ5RVlJUmtoR2lFYklSd2hIU0VlSVI4aElDRWhJU0loSXlFa0lTVWhKaUVuSVNnaEtTRXFJU3NoTENFdElTNGhMeUV3SVRFaE1pRXpJVFFoTlNFMklUY2hPQ0U1SVRvaE95RThJVDBoUGlFL0lVQWhRU0ZDSVVNaFJDRkZJVVloUnlGSUlVa2hTaUZMSVV3aFRTRk9JVThoVUNGUklWSWhVeUZVSVZVaFZpRlhJVmdoV1NGYUlWc2hYQ0ZkSVY0aFh5RmdJV0VoWWlGaklXUWhaU0ZtSVdjaGFDRnBJV29oYXlGc0lXMGhiaUZ2SVhBaGNTRnlJWE1oZENGMUlYWWhkeUY0SVhraGVpRjdJWHdoZlNGK0lYOGhnQ0dCSVlJaGd5R0VJWVVoaGlHSElZZ2hpU0dLSVlzaGpDR05JWTRoanlHUUlaRWhraUdUSVpRaGxTR1dJWmNoTUVGZEdRQUFjbUYyTkMxemFHbGxiR1J6QUtRTUNnVUxCV0FGWVFWaUJXTUZaQVZsQldZRlp3Vm9CV2tGYWdWckJXd0ZiUVZ1Qlc4RmNBVnhCWElGY3dWMEJYVUZkZ1YzQlhnRmVRVjZCWHNGZkFWOUJYNEZmd1dBQllFRmdnV0RCWVFGaFFXR0JZY0ZpQVdKQllvRml3V01CWTBGamdXUEJaQUZrUVdTQlpNRmxBV1ZCWllGbHdXWUJaa0ZtZ1diQlp3Rm5RV2VCWjhGb0FXaEJhSUZvd1drQmFVRnBnV25CYWdGcVFXcUJhc0ZyQVd0QmE0RnJ3V3dCYkVGc2dXekJiUUZ0UVcyQmJjRnVBVzVCYm9GdXdXOEJiMEZ2Z1cvQmNBRndRWENCY01GeEFYRkJjWUZ4d1hJQmNrRnlnWExCY3dGelFYT0JjOEYwQVhSQmRJRjB3WFVCZFVGMWdYWEJkZ0YyUVhhQmRzRjNBWGRCZDRGM3dYZ0JlRUY0Z1hqQmVRRjVRWG1CZWNGNkFYcEJlb0Y2d1hzQmUwRjdnWHZCZkFGOFFYeUJmTUY5QVgxQmZZRjl3WDRCZmtGK2dYN0Jmd0YvUVgrQmY4RkFBWUJCZ0lHQXdZRUJnVUdCZ1lIQmdnR0NRWUtCZ3NHREFZTkJnNEdEd1lRQmhFR0VnWVRCaFFHRlFZV0JoY0dHQVlaQmhvR0d3WWNCaDBHSGdZZkJpQUdJUVlpQmlNR0pBWWxCaVlHSndZb0Jpa0dLZ1lyQml3R0xRWXVCaThHTUFZeEJqSUdNd1kwQmpVR05nWTNCamdHT1FZNkJqc0dQQVk5Qmo0R1B3WkFCa0VHUWdaREJrUUdSUVpHQmtjR1NBWkpCa29HU3daTUJrMEdUZ1pQQmxBR1VRWlNCbE1HVkFaVkJsWUdWd1pZQmxrR1dnWmJCbHdHWFFaZUJsOEdZQVpoQm1JR1l3WmtCbVVHWmdabkJtZ0dhUVpxQm1zR2JBWnRCbTRHYndad0JuRUdjZ1p6Qm5RR2RRWjJCbmNHZUFaNUJub0dld1o4Qm4wR2ZnWi9Cb0FHZ1FhQ0JvTUdoQWFGQm9ZR2h3YUlCb2tHaWdhTEJvd0dqUWFPQm84R2tBYVJCcElHa3dhVUJwVUdsZ2FYQnBnR21RYWFCcHNHbkFhZEJwNEdud2FnQnFFR29nYWpCcVFHcFFhbUJxY0dxQWFwQnFvR3F3YXNCcTBHcmdhdkJyQUdzUWF5QnJNR3RBYTFCcllHdHdhNEJya0d1Z2E3QnJ3R3ZRYStCcjhHd0FiQkJzSUd3d2JFQnNVR3hnYkhCc2dHeVFiS0Jzc0d6QWJOQnM0R3p3YlFCdEVHMGdiVEJ0UUcxUWJXQnRjRzJBYlpCdG9HMndiY0J0MEczZ2JmQnVBRzRRYmlCdU1HNUFibEJ1WUc1d2JvQnVrRzZnYnJCdXdHN1FidUJ1OEc4QWJ4QnZJRzh3YjBCdlVHOWdiM0J2Z0crUWI2QnZzRy9BYjlCdjRHL3dZQUJ3RUhBZ2NEQndRSEJRY0dCd2NIQ0FjSkJ3b0hDd2NNQncwSERnY1BCeEFIRVFjU0J4TUhGQWNWQnhZSEZ3Y1lCeGtIR2djYkJ4d0hIUWNlQng4SElBY2hCeUlISXdja0J5VUhKZ2NuQnlnSEtRY3FCeXNITEFjdEJ5NEhMd2N3QnpFSE1nY3pCelFITlFjMkJ6Y0hPQWM1QnpvSE93YzhCejBIUGdjL0IwQUhRUWRDQjBNSFJBZEZCMFlIUndkSUIwa0hTZ2RMQjB3SFRRZE9CMDhIVUFkUkIxSUhVd2RVQjFVSFZnZFhCMWdIV1FkYUIxc0hYQWRkQjE0SFh3ZGdCMkVIWWdkakIyUUhaUWRtQjJjSGFBZHBCMm9IYXdkc0IyMEhiZ2R2QjNBSGNRZHlCM01IZEFkMUIzWUhkd2Q0QjNrSGVnZDdCM3dIZlFkK0IzOEhnQWVCQjRJSGd3ZUVCNFVIaGdlSEI0Z0hpUWVLQjRzSGpBZU5CNDRIandlUUI1RUhrZ2VUQjVRSGxRZVdCNWNIbUFlWkI1b0htd2VjQjUwSG5nZWZCNkFIb1FlaUI2TUhwQWVsQjZZSHB3ZW9CNmtIcWdlckI2d0hyUWZFRk1VVXhoVEhGTWdVeVJUS0ZNc1V6QlRORk00VXp4VFFGTkVVMGhUVEZOUVUxUlRXRk5jVTJCVFpGTm9VMnhUY0ZOMFUzaFRmRk9BVTRSVGlGT01VNUJUbEZPWVU1eFRvRk9rVTZoVHJGT3dVN1JUdUZPOFU4QlR4RlBJVTh4VDBGUFVVOWhUM0ZQZ1UrUlQ2RlBzVS9CVDlGUDRVL3hRQUZRRVZBaFVERlFRVkJSVUdGUWNWQ0JVSkZRb1ZDeFVNRlEwVkRoVVBGUkFWRVJVU0ZSTVZGQlVWRlJZVkZ4VVlGUmtWR2hVYkZSd1ZIUlVlRlI4VklCVWhGU0lWSXhVa0ZTVVZKaFVuRlNnVktSVXFGU3NWTEJVdEZTNFZMeFV3RlRFVk1oVXpGVFFWTlJVMkZUY1ZPQlU1RlRvVk94VThGVDBWUGhVL0ZVQVZRUlZDRlVNVlJCVkZGVVlWUnhWSUZVa1ZTaFZMRlV3VlRSVk9GVThWVUJWUkZWSVZVeFZVRlZVVlZoVlhGVmdWV1JWYUZWc1ZYQlZkRlY0Vlh4VmdGV0VWWWhWakZXUVZaUlZtRldjVmFCVnBGV29WYXhWc0ZXMFZiaFZ2RlhBVmNSVnlGWE1WZEJWMUZYWVZkeFY0RlhrVmVoVjdGWHdWZlJWK0ZYOFZnQldCRllJVmd4V0VGWVVWaGhXSEZZZ1ZpUldLRllzVmpCV05GWTRWanhXUUZaRVZraFdURlpRVmxSV1dGWmNWbUJXWkZab1ZteFdjRlowVm5oV2ZGYUFWb1JXaUZhTVZwQldsRmFZVnB4V29GYWtWcWhXckZhd1ZyUld1RmE4VnNCV3hGYklWc3hXMEZiVVZ0aFczRmJnVnVSVzZGYnNWdkJXOUZiNFZ2eFhBRmNFVndoWERGY1FWeFJYR0ZjY1Z5QlhKRmNvVnl4WE1GYzBWemhYUEZkQVYwUlhTRmRNVjFCWFZGZFlWMXhYWUZka1YyaFhiRmR3VjNSWGVGZDhWNEJYaEZlSVY0eFhrRmVVVjVoWG5GZWdWNlJYcUZlc1Y3Qlh0RmU0Vjd4WHdGZkVWOGhYekZmUVY5UlgyRmZjVitCWDVGZm9WK3hYOEZmMFYvaFgvRlFBV0FSWUNGZ01XQkJZRkZnWVdCeFlJRmdrV0NoWUxGZ3dXRFJZT0ZnOFdFQllSRmhJV0V4WVVGaFVXRmhZWEZoZ1dHUllhRmhzV0hCWWRGaDRXSHhZZ0ZpRVdJaFlqRmlRV0pSWW1GaWNXS0JZcEZpb1dLeFlzRmkwV0xoWXZGakFXTVJZeUZqTVdOQlkxRmpZV054WTRGamtXT2hZN0Zqd1dQUlkrRmo4V1FCWkJGa0lXUXhaRUZrVVdSaFpIRmtnV1NSWktGa3NXVEJaTkZrNFdUeFpRRmxFV1VoWlRGbFFXVlJaV0ZsY1dXQlpaRmxvV1d4WmNGbDBXWGhaZkZtQVdZUlppRm1NV1pCWmxGbVlXWnhab0Zta1dhaFpyRm13V2JSWnVGbThXY0JaeEZuSVdjeFowRm5VV2RoWjNGbmdXZVJaNkZuc1dmQlo5Rm40V2Z4YUFGb0VXZ2hhREZvUVdoUmFHRm9jV2lCYUpGb29XaXhhTUZvMFdqaGFQRnBBV2tSYVNGcE1XbEJhVkZwWVdseGFZRnBrV21oYWJGcHdXblJhZUZwOFdvQmFoRnFJV294YWtGcVVXcGhhbkZxZ1dxUmFxRnFzV3JCYXRGcTRXcnhhd0ZyRVdzaGF6RnJRV3RSYTJGcmNXdUJhNUZyb1d1eGE4RnIwV3ZoYS9Gc0FXd1JiQ0ZzTVd4QmJGRnNZV3h4YklGc2tXeWhiTEZzd1d6UmJPRnM4VzBCYlJGdElXMHhiVUZ0VVcxaGJYRnRnVzJSYmFGdHNXM0JiZEZ0NFczeGJnRnVFVzRoYmpGdVFXNVJibUZ1Y1c2QmJwRnVvVzZ4YnNGdTBXN2hidkZ2QVc4UmJ5RnZNVzlCYjFGdllXOXhiNEZ2a1craGI3RnZ3Vy9SYitGdjhXQUJjQkZ3SVhBeGNFRndVWEJoY0hGd2dYQ1JjS0Z3c1hEQmNORnc0WER4Y1FGeEVYRWhjVEZ4UVhGUmNXRnhjWEdCY1pGeG9YR3hjY0Z4MFhIaGNmRnlBWElSY2lGeU1YSkJjbEZ5WVhKeGNvRnlrWEtoY3JGeXdYTFJjdUZ5OFhNQmN4RnpJWE14YzBGelVYTmhjM0Z6Z1hPUmM2RnpzWFBCYzlGejRYUHhkQUYwRVhRaGRERjBRWFJSZEdGMGNYU0JkSkYwb1hTeGRNRjAwWFRoZFBGMUFYVVJkU0YxTVhWQmRWRjFZWFZ4ZFlGMWtYV2hkYkYxd1hYUmRlRjE4WFlCZGhGMklYWXhka0YyVVhaaGRuRjJnWGFSZHFGMnNYYkJkdEYyNFhieGR3RjNFWGNoZHpGM1FYZFJkMkYzY1hlQmQ1RjNvWGV4ZDhGMzBYZmhkL0Y0QVhnUmVDRjRNWGhCZUZGNFlYaHhlSUY0a1hpaGVMRjR3WGpSZU9GNDhYa0JlUkY1SVhreGVVRjVVWGxoZVhGNWdYbVJlYUY1c1huQmVkRjU0WG54ZWdGNkVYb2hlakY2UVhwUmVtRjZjWHFCZXBGNm9YcXhlc0Y2MFhyaGV2RjdBWHNSZXlGN01YdEJlMUY3WVh0eGU0RjdrWHVoZTdGN3dYdlJlK0Y3OFh3QmZCRjhJWHd4ZkVGOFVYeGhmSEY4Z1h5UmZLRjhzWHpCZk5GODRYenhmUUY5RVgwaGZURjlRWDFSZldGOWNYMkJmWkY5b1gyeGZjRjkwWDNoZmZGK0FYNFJmaUYrTVg1QmZsRitZWDV4Zm9GK2tYNmhmckYrd1g3UmZ1Ris4WDhCZnhGL0lYOHhmMEYvVVg5aGYzRi9nWCtSZjZGL3NYL0JmOUYvNFgveGNBR0FFWUFoZ0RHQVFZQlJnR0dBY1lDQmdKR0FvWUN4Z01HQTBZRGhnUEdCQVlFUmdTR0JNWUZCZ1ZHQllZRnhnWUdCa1lHaGdiR0J3WUhSZ2VHQjhZSUJnaEdDSVlJeGdrR0NVWUpoZ25HQ2dZS1JncUdDc1lMQmd0R0M0WUx4Z3dHREVZTWhnekdEUVlOUmcyR0RjWU9CZzVHRG9ZT3hnOEdEMFlQaGcvR0VBWVFSaENHRU1ZUkJoRkdFWVlSeGhJR0VrWVNoaExHRXdZVFJoT0dFOFlVQmhSR0ZJWVV4aFVHRlVZVmhoWEdGZ1lXUmhhR0ZzWVhCaGRHRjRZWHhoZ0dHRVlZaGhqR0dRWVpSaG1HR2NZYUJocEdHb1lheGhzR0cwWWJoaHZHSEFZY1JoeUdITVlkQmgxR0hZWWR4aDRHSGtZZWhoN0dId1lmUmgrR0g4WWdCaUJHSUlZZ3hpRUdJVVloaGlIR0lnWWlSaUtHSXNZakJpTkdJNFlqeGlRR0pFWWtoaVRHSlFZbFJpV0dKY1ltQmlaR0pvWW14aWNHSjBZbmhpZkdLQVlvUmlpR0tNWXBCaWxHS1lZcHhpb0dLa1lxaGlyR0t3WXJSaXVHSzhZc0JpeEdMSVlzeGkwR0xVWXRoaTNHTGdZdVJpNkdMc1l2Qmk5R0w0WXZ4akFHTUVZd2hqREdNUVl4UmpHR01jWXlCakpHTW9ZeXhqTUdNMFl6aGpQR05BWTBSalNHTk1ZMUJqVkdOWVkxeGpZR05rWTJoamJHTndZM1JqZUdOOFk0QmpoR09JWTR4amtHT1VZNWhqbkdPZ1k2UmpxR09zWTdCanRHTzRZN3hqd0dQRVk4aGp6R1BRWTlSajJHUGNZK0JqNUdQb1kreGo4R1AwWS9oai9HQUFaQVJrQ0dRTVpCQmtGR1FZWkJ4a0lHUWtaQ2hrTEdRd1pEUmtPR1E4WkVCa1JHUklaRXhrVUdSVVpGaGtYR1JnWkdSa2FHUnNaSEJrZEdSNFpIeGtnR1NFWkloa2pHU1FaSlJrbUdTY1pLQmtwR1NvWkt4a3NHUzBaTGhrdkdUQVpNUmt5R1RNWk5CazFHVFlaTnhrNEdUa1pPaGs3R1R3WlBSaytHVDhaUUJsQkdVSVpReGxFR1VVWlJobEhHVWdaU1JsS0dVc1pUQmxOR1U0WlR4bFFHVkVaVWhsVEdWUVpWUmxXR1ZjWldCbFpHVm9aV3hsY0dWMFpYaGxmR1dBWllSbGlHV01aWkJsbEdXWVpaeGxvR1drWmFobHJHV3daYlJsdUdXOFpjQmx4R1hJWmN4bDBHWFVaZGhsM0dYZ1plUmw2R1hzWmZCbDlHWDRaZnhtQUdZRVpnaG1ER1lRWmhSbUdHWWNaaUJtSkdZb1ppeG1NR1kwWmpobVBHWkFaa1JtU0daTVpsQm1WR1pZWmx4bVlHWmtabWhtYkdad1puUm1lR1o4Wm9CbWhHYUlab3hta0dhVVpwaG1uR2FnWnFSbXFHYXNackJtdEdhNFpyeG13R2JFWnNobXpHYlFadFJtMkdiY1p1Qm01R2JvWnV4bThHYjBadmhtL0djQVp3Um5DR2NNWnhCbkZHY1laeHhuSUdja1p5aG5MR2N3WnpSbk9HYzhaMEJuUkdkSVoweG5VR2RVWjFoblhHZGdaMlJuYUdkc1ozQm5kR2Q0WjN4bmdHZUVaNGhuakdlUVo1Um5tR2VjWjZCbnBHZW9aNnhuc0dlMFo3aG52R2ZBWjhSbnlHZk1aOUJuMUdmWVo5eG40R2ZrWitobjdHZndaL1JuK0dmOFpBQm9CR2dJYUF4b0VHZ1VhQmhvSEdnZ2FDUm9LR2dzYURCb05HZzRhRHhvUUdoRWFFaG9UR2hRYUZSb1dHaGNhR0JvWkdob2FHeG9jR2gwYUhob2ZHaUFhSVJvaUdpTWFKQm9sR2lZYUp4b29HaWthS2hvckdpd2FMUm91R2k4YU1Cb3hHaklhTXhvMEdqVWFOaG8zR2pnYU9SbzZHanNhUEJvOUdqNGFQeHBBR2tFYVFocERHa1FhUlJwR0drY2FTQnBKR2tvYVN4cE1HazBhVGhwUEdsQWFVUnBTR2xNYVZCcFZHbFlhVnhwWUdsa2FXaHBiR2x3YVhScGVHbDhhWUJwaEdtSWFZeHBrR21VYVpocG5HbWdhYVJwcUdtc2FiQnB0R200YWJ4cHdHbkVhY2hwekduUWFkUnAyR25jYWVCcDVHbm9hZXhwOEduMGFmaHAvR29BYWdScUNHb01haEJxRkdvWWFoeHFJR29rYWlocUxHb3dhalJxT0dvOGFrQnFSR3BJYWt4cVVHcFVhbGhxWEdwZ2FtUnFhR3BzYW5CcWRHcDRhbnhxZ0dxRWFvaHFqR3FRYXBScW1HcWNhcUJxcEdxb2FxeHFzR3EwYXJocXZHckFhc1JxeUdyTWF0QnExR3JZYXR4cTRHcmthdWhxN0dyd2F2UnErR3I4YXdCckJHc0lhd3hyRUdzVWF4aHJIR3NnYXlScktHc3NhekJyTkdzNGF6eHJRR3RFYTBoclRHdFFhMVJyV0d0Y2EyQnJaR3RvYTJ4cmNHdDBhM2hyZkd1QWE0UnJpR3VNYTVCcmxHdVlhNXhyb0d1a2E2aHJyR3V3YTdScnVHdThhOEJyeEd2SWE4eHIwR3ZVYTlocjNHdmdhK1JyNkd2c2EvQnI5R3Y0YS94b0FHd0ViQWhzREd3UWJCUnNHR3djYkNCc0pHd29iQ3hzTUd3MGJEaHNQR3hBYkVSc1NHeE1iRkJzVkd4WWJGeHNZR3hrYkdoc2JHeHdiSFJzZUd4OGJJQnNoR3lJYkl4c2tHeVViSmhzbkd5Z2JLUnNxR3lzYkxCc3RHeTRiTHhzd0d6RWJNaHN6R3pRYk5SczJHemNiT0JzNUd6b2JPeHM4R3owYlBocy9HMEFiUVJ0Q0cwTWJSQnRGRzBZYlJ4dElHMGtiU2h0TEcwd2JUUnRPRzA4YlVCdFJHMUliVXh0VUcxVWJWaHRYRzFnYldSdGFHMXNiWEJ0ZEcxNGJYeHRnRzJFYllodGpHMlFiWlJ0bUcyY2JhQnRwRzJvYmF4dHNHMjBiYmh0dkczQWJjUnR5RzNNYmRCdDFHM1liZHh0NEcza2JlaHQ3RzN3YmZSdCtHMzhiZ0J1Qkc0SWJneHVFRzRVYmhodUhHNGdiaVJ1S0c0c2JqQnVORzQ0Ymp4dVFHNUVia2h1VEc1UWJsUnVXRzVjYm1CdVpHNW9ibXh1Y0c1MGJuaHVmRzZBYm9SdWlHNk1icEJ1bEc2WWJweHVvRzZrYnFodXJHNndiclJ1dUc2OGJzQnV4RzdJYnN4dTBHN1VidGh1M0c3Z2J1UnU2RzdzYnZCdTlHNzRidnh2QUc4RWJ3aHZERzhRYnhSdkdHOGNieUJ2Skc4b2J5eHZNRzgwYnpodlBHOUFiMFJ2U0c5TWIxQnZWRzlZYjF4dllHOWtiMmh2Ykc5d2IzUnZlRzk4YjRCdmhHK0liNHh2a0crVWI1aHZuRytnYjZSdnFHK3NiN0J2dEcrNGI3eHZ3Ry9FYjhodnpHL1FiOVJ2MkcvY2IrQnY1Ry9vYit4djhHLzBiL2h2L0d3QWNBUndDSEFNY0JCd0ZIQVljQnh3SUhBa2NDaHdMSEF3Y0RSd09IQThjRUJ3UkhCSWNFeHdVSEJVY0Zod1hIQmdjR1J3YUhCc2NIQndkSEI0Y0h4d2dIQ0VjSWh3akhDUWNKUndtSENjY0tCd3BIQ29jS3h3c0hDMGNMaHd2SERBY01Sd3lIRE1jTkJ3MUhEWWNOeHc0SERrY09odzdIRHdjUFJ3K0hEOGNRQnhCSEVJY1F4eEVIRVVjUmh4SEhFZ2NTUnhLSEVzY1RCeE5IRTRjVHh4UUhGRWNVaHhUSEZRY1ZSeFdIRmNjV0J4WkhGb2NXeHhjSEYwY1hoeGZIR0FjWVJ4aUhHTWNaQnhsSEdZY1p4eG9IR2tjYWh4ckhHd2NiUnh1SEc4Y2NCeHhISEljY3h4MEhIVWNkaHgzSEhnY2VSeDZISHNjZkJ4OUhINGNmeHlBSElFY2doeURISVFjaFJ5R0hJY2NpQnlKSElvY2l4eU1ISTBjamh5UEhKQWNrUnlTSEpNY2xCeVZISlljbHh5WUhKa2NtaHliSEp3Y25SeWVISjhjb0J5aEhLSWNveHlrSEtVY3BoeW5IS2djcVJ5cUhLc2NyQnl0SEs0Y3J4eXdITEVjc2h5ekhMUWN0UnkySExjY3VCeTVITG9jdXh5OEhMMGN2aHkvSE1BY3dSekNITU1jeEJ6RkhNWWN4eHpJSE1rY3loekxITXdjelJ6T0hNOGMwQnpSSE5JYzB4elVITlVjMWh6WEhOZ2MyUnphSE5zYzNCemRITjRjM3h6Z0hPRWM0aHpqSE9RYzVSem1IT2NjNkJ6cEhPb2M2eHpzSE8wYzdoenZIUEFjOFJ6eUhQTWM5QnoxSFBZYzl4ejRIUGtjK2h6N0hQd2MvUnorSFA4Y0FCMEJIUUlkQXgwRUhRVWRCaDBISFFnZENSMEtIUXNkREIwTkhRNGREeDBRSFJFZEVoMFRIUlFkRlIwV0hSY2RHQjBaSFJvZEd4MGNIUjBkSGgwZkhTQWRJUjBpSFNNZEpCMGxIU1lkSngwb0hTa2RLaDBySFN3ZExSMHVIUzhkTUIweEhUSWRNeDAwSFRVZE5oMDNIVGdkT1IwNkhUc2RQQjA5SFQ0ZFB4MUFIVUVkUWgxREhVUWRSUjFHSFVjZFNCMUpIVW9kU3gxTUhVMGRUaDFQSFZBZFVSMVNIVk1kVkIxVkhWWWRWeDFZSFZrZFdoMWJIVndkWFIxZUhWOGRZQjFoSFdJZFl4MWtIV1VkWmgxbkhXZ2RhUjFxSFdzZGJCMXRIVzRkYngxd0hYRWRjaDF6SFhRZGRSMTJIWGNkZUIxNUhYb2RleDE4SFgwZGZoMS9IWUFkZ1IyQ0hZTWRoQjJGSFlZZGh4MklIWWtkaWgyTEhZd2RqUjJPSFk4ZGtCMlJIWklka3gyVUhaVWRsaDJYSFpnZG1SMmFIWnNkbkIyZEhaNGRueDJnSGFFZG9oMmpIYVFkcFIybUhhY2RxQjJwSGFvZHF4MnNIYTBkcmgydkhiQWRzUjJ5SGJNZHRCMjFIYllkdHgyNEhia2R1aDI3SGJ3ZHZSMitIYjhkd0IzQkhjSWR3eDNFSGNVZHhoM0hIY2dkeVIzS0hjc2R6QjNOSGM0ZHp4M1FIZEVkMGgzVEhkUWQxUjNXSGRjZDJCM1pIZG9kMngzY0hkMGQzaDNmSGVBZDRSM2lIZU1kNUIzbEhlWWQ1eDNvSGVrZDZoM3JIZXdkN1IzdUhlOGQ4QjN4SGZJZDh4MzBIZlVkOWgzM0hmZ2QrUjM2SGZzZC9CMzlIZjRkL3gwQUhnRWVBaDRESGdRZUJSNEdIZ2NlQ0I0Skhnb2VDeDRNSGcwZURoNFBIaEFlRVI0U0hoTWVGQjRWSGhZZUZ4NFlIaGtlR2g0Ykhod2VIUjRlSGg4ZUlCNGhIaUllSXg0a0hpVWVKaDRuSGlnZUtSNHFIaXNlTEI0dEhpNGVMeDR3SGpFZU1oNHpIalFlTlI0MkhqY2VPQjQ1SGpvZU94NDhIajBlUGg0L0hrQWVRUjVDSGtNZVJCNUZIa1llUng1SUhra2VTaDVMSGt3ZVRSNU9IazhlVUI1UkhsSWVVeDVVSGxVZVZoNVhIbGdlV1I1YUhsc2VYQjVkSGw0ZVh4NWdIbUVlWWg1akhtUWVaUjVtSG1jZWFCNXBIbW9lYXg1c0htMGViaDV2SG5BZWNSNXlIbk1lZEI1MUhuWWVkeDU0SG5rZWVoNTdIbndlZlI1K0huOGVnQjZCSG9JZWd4NkVIb1VlaGg2SEhvZ2VpUjZLSG9zZWpCNk5IbzRlang2UUhwRWVraDZUSHBRZWxSNldIcGNlbUI2Wkhwb2VteDZjSHAwZW5oNmZIcUFlb1I2aUhxTWVwQjZsSHFZZXB4Nm9IcWtlcWg2ckhxd2VyUjZ1SHE4ZXNCNnhIckllc3g2MEhyVWV0aDYzSHJnZXVSNjZIcnNldkI2OUhyNGV2eDdBSHNFZXdoN0RIc1FleFI3R0hzY2V5QjdKSHNvZXl4N01IczBlemg3UEh0QWUwUjdTSHRNZTFCN1ZIdFllMXg3WUh0a2UyaDdiSHR3ZTNSN2VIdDhlNEI3aEh1SWU0eDdrSHVVZTVoN25IdWdlNlI3cUh1c2U3Qjd0SHU0ZTd4N3dIdkVlOGg3ekh2UWU5UjcySHZjZStCNzVIdm9lK3g3OEh2MGUvaDcvSGdBZkFSOENId01mQkI4Rkh3WWZCeDhJSHdrZkNoOExId3dmRFI4T0h3OGZFQjhSSHhJZkV4OFVIeFVmRmg4WEh6QkI4UUFBQUhKaGRqUXRaR0Z5YTJWeVgyZHNZWE1BYkFEQUU4RVR3aFBERThRVHhSUEdFOGNUeUJQSkU4b1R5eFBNRTgwVHpoUFBFOUFUMFJQU0U5TVQxQlBWRTlZVDF4UFlFOWtUMmhQYkU5d1QzUlBlRTk4VDRCUGhFK0lUNHhQa0UrVVQ1aFBuRStnVDZSUHFFK3NUN0JQdEUrNFQ3eFB3RS9FVDhoUHpFL1FUOVJQMkUvY1QrQlA1RS9vVCt4UDhFLzBUL2hQL0V3QVVBUlFDRkFNVUJCUUZGQVlVQnhRSUZBa1VDaFFMRkF3VURSUU9GQThVRUJRUkZCSVVFeFFVRkJVVUZoUVhGQmdVR1JRYUZCc1VIQlFkRkI0VUh4UWdGQ0VVSWhRakZDUVVKUlFtRkNjVUtCUXBGQ29VS3hRd1FVTUJBQUJ5WVhZMExXZHNZWE56QUpnQUxCUXRGQzRVTHhRd0ZERVVNaFF6RkRRVU5SUTJGRGNVT0JRNUZEb1VPeFE4RkQwVVBoUS9GRUFVUVJSQ0ZFTVVSQlJGRkVZVVJ4UklGRWtVU2hSTEZFd1VUUlJPRkU4VVVCUlJGRklVVXhSVUZGVVVWaFJYRkZnVVdSUmFGRnNVWEJSZEZGNFVYeFJnRkdFVVloUmpGR1FVWlJSbUZHY1VhQlJwRkdvVWF4UnNGRzBVYmhSdkZIQVVjUlJ5RkhNVWRCUjFGSFlVZHhSNEZIa1VlaFI3Rkh3VWZSUitGSDhVZ0JTQkZJSVVneFNFRklVVWhoU0hGSWdVaVJTS0ZJc1VqQlNORkk0VWp4U1FGSkVVa2hTVEZKUVVsUlNXRkpjVW1CU1pGSm9VbXhTY0ZKMFVuaFNmRktBVW9SU2lGS01VcEJTbEZLWVVweFNvRktrVXFoU3JGS3dVclJTdUZLOFVzQlN4RkxJVXN4UzBGTFVVdGhTM0ZMZ1V1UlM2RkxzVXZCUzlGTDRVdnhUQUZNRVV3aFRERkZCQlpvWUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQUVDWS93SUFWRzk1YjNSaFgxSkJOQUFBUVlmL0FnQVFRWFRNQUFBSkVaOWFwVUhYdlpuQ0d2TmF3Vkkwb2tHUUdwekNwMEVpd1ZJMG9rSDlVSnZDcDBFaXdaOWFwVUZxaDVyQ0d2TmF3Vkkwb2tHMEtxTENwMEVpd1o5YXBVR05sNkRDR3ZOYXdRWU9uMEg5VUp2Q3AwRWl3Vkkwb2tIWHZabkNHdk5hd1FZT24wR1FHcHpDcDBFaXdRWU9uMEcwS3FMQ3AwRWl3Vkkwb2tGcWg1ckNHdk5hd1ZJMG9rR05sNkRDR3ZOYXdlQjZIVUhIdFp2Q0d2TmF3ZUI2SFVIdVNKM0NwMEVpd1FBQUFBREh0WnZDR3ZOYXdRQUFBQUR1U0ozQ3AwRWl3ZUI2SFVHQ0VwN0NwMEVpd1FBQUFBQ0NFcDdDcDBFaXdlQjZIVUdrSXFUQ3AwRWl3UUFBQUFDa0lxVENwMEVpd2VCNkhVRmJmNXpDR3ZOYXdRQUFBQUJiZjV6Q0d2TmF3ZUI2SFVGOWo2TENHdk5hd1FBQUFBQjlqNkxDR3ZOYXdTS2JsVUZxaDVyQ09nYm13Q0tibFVIOVVKdkN3OVdOd0NLYmxVRnFoNXJDdzlXTndDS2JsVUg5VUp2Q09nYm13Q0tibFVFZ1lhSEN3OVdOd0NLYmxVRWdZYUhDT2dibXdOWjBra0ZxaDVyQ3c5V053Tlowa2tGcWg1ckNPZ2Jtd05aMGtrSDlVSnZDdzlXTndOWjBra0VnWWFIQ3c5V053Tlowa2tIOVVKdkNPZ2Jtd05aMGtrRWdZYUhDT2dibXdPQjZIVUZiZjV6Q09nYm13T0I2SFVGYmY1ekN3OVdOd0FBQUFBQmJmNXpDT2dibXdBQUFBQUJiZjV6Q3c5V053T0I2SFVIdVNKM0N3OVdOd0FBQUFBRHVTSjNDdzlXTndPQjZIVUVSV2FQQ3d0V053QUFBQUFBUldhUEN3dFdOd09CNkhVSHVTSjNDT2dibXdBQUFBQUR1U0ozQ09nYm13T0I2SFVFUldhUENPZ2Jtd0FBQUFBQVJXYVBDT2dibXdETWlBVUZNZVpIQzF1RTJ3QUFBQUFDeExJdkN0N201UUFBQUFBQk1lWkhDMXVFMndETWlBVUd4TEl2Q3Q3bTVRRDBvakVFazVvL0MxdUUyd0Qwb2pFR0ttWW5DdDdtNVFHL0JtRUdTSEkvQzErRTJ3Ry9CbUVIM3o0akN0N201UUcvQm1FSDVXNWZDdUxtNVFHL0JtRUg0a0pEQzF1RTJ3Ry9CbUVHVnFKM0MxZUUyd0cvQm1FRmRSSXJDdDdtNVFEMG9qRUdOSlpqQ3VMbTVRRDBvakVIeERZdkN0N201UURNaUFVR3p1Sm5DdUxtNVFETWlBVUVYb1l6Q3Q3bTVRQUFBQUFDenVKbkN1TG01UUFBQUFBQVhvWXpDdDdtNVFEMG9qRUdMV3BIQzF1RTJ3RDBvakVFb2NwN0MxZUUyd0RNaUFVR3k3WkxDMXVFMndETWlBVUZQQmFEQzFPRTJ3QUFBQUFDeTdaTEMxdUUyd0FBQUFBQlBCYURDMU9FMndGSTBvc0dRR3B6Q3AwRWl3WjlhcGNIWHZabkNHdk5hd1ZJMG9zSDlVSnZDcDBFaXdaOWFwY0ZxaDVyQ0d2TmF3Vkkwb3NHMEtxTENwMEVpd1o5YXBjR05sNkRDR3ZOYXdRWU9uOEg5VUp2Q3AwRWl3Vkkwb3NIWHZabkNHdk5hd1FZT244R1FHcHpDcDBFaXdRWU9uOEcwS3FMQ3AwRWl3Vkkwb3NGcWg1ckNHdk5hd1ZJMG9zR05sNkRDR3ZOYXdlQjZIY0hIdFp2Q0d2TmF3ZUI2SGNIdVNKM0NwMEVpd2VCNkhjR0NFcDdDcDBFaXdlQjZIY0drSXFUQ3AwRWl3ZUI2SGNGYmY1ekNHdk5hd2VCNkhjRjlqNkxDR3ZOYXdTS2JsY0g5VUp2Q3c5V053Q0tibGNGcWg1ckNPZ2Jtd0NLYmxjRnFoNXJDdzlXTndDS2JsY0g5VUp2Q09nYm13Q0tibGNFZ1lhSEN3OVdOd0NLYmxjRWdZYUhDT2dibXdOWjBrc0ZxaDVyQ3c5V053Tlowa3NGcWg1ckNPZ2Jtd05aMGtzSDlVSnZDdzlXTndOWjBrc0VnWWFIQ3c5V053Tlowa3NIOVVKdkNPZ2Jtd05aMGtzRWdZYUhDT2dibXdPQjZIY0ZiZjV6Q09nYm13T0I2SGNGYmY1ekN3OVdOd09CNkhjSHVTSjNDdzlXTndPQjZIY0VSV2FQQ3d0V053T0I2SGNIdVNKM0NPZ2Jtd09CNkhjRVJXYVBDT2dibXdETWlBY0ZNZVpIQzF1RTJ3RE1pQWNHeExJdkN0N201UUQwb2pNRWs1by9DMXVFMndEMG9qTUdLbVluQ3Q3bTVRRy9CbU1HU0hJL0MxK0Uyd0cvQm1NSDN6NGpDdDdtNVFHL0JtTUg0a0pEQzF1RTJ3Ry9CbU1INVc1ZkN1TG01UUcvQm1NR1ZxSjNDMWVFMndHL0JtTUZkUklyQ3Q3bTVRRDBvak1HTkpaakN1TG01UUQwb2pNSHhEWXZDdDdtNVFETWlBY0d6dUpuQ3VMbTVRRE1pQWNFWG9ZekN0N201UUQwb2pNR0xXcEhDMXVFMndEMG9qTUVvY3A3QzFlRTJ3RE1pQWNHeTdaTEMxdUUyd0RNaUFjRlBCYURDMU9FMndBQUFBQUNkVnAzQ0FZRmlRUDhEbkw4eXZwekNUdFNJUUl6K2Q3KzRicDNDbUF0YlFBQUFBQURkbjV6Q2lJV05RUDhEbkQ4eXZwekNUdFNJUUl6K2R6KzRicDNDbUF0YlFHR0lFRURtRXAzQ01YUjNRTFBwM3o5VXJwM0N6MTFIUUZHUVBrRGZpNTNDcXdaU1FCK3REVUJ3L0ozQ2h6TXZRSVdpVkVDWUVaN0NONmNvUUpvcEdFRDRPNTdDWTRzYlFKb3BHRUFyYlo3QzJWSU1RSVdpVkVDS2w1N0NEbTcrUHgrdERVQzBySjdDYmxYeFAxR1FQa0JFSFovQ0k2K3JQNjdwM3ovUCtwN0Mxd0RCUDErSUVFQTlscC9DTXFoQlA0eitkejlxT3AvQ1FxV1pQLzhEbkQvdzZwL0M3cXl4UGdBQUFBQ0ZVcC9DZUxxS1B3QUFBQUJGQ2FEQ3FUSk5QdjhEbkwvdzZwL0M3cXl4UG96K2Q3OXFPcC9DUXFXWlAxK0lFTUE5bHAvQ01xaEJQNjdwMzcvUCtwN0Mxd0RCUDFHUVBzQkVIWi9DSTYrclB4K3REY0Mwcko3Q2JsWHhQNFdpVk1DS2w1N0NEbTcrUDVvcEdNQXJiWjdDMlZJTVFJV2lWTUNZRVo3Q042Y29RSm9wR01ENE81N0NZNHNiUUIrdERjQncvSjNDaHpNdlFGR1FQc0RmaTUzQ3F3WlNRTFBwMzc5VXJwM0N6MTFIUUdHSUVNRG1FcDNDTVhSM1FLR2VjVUI2c1NyQ2I2UnpRUUFBQUFBbHhqUENwdU5zUVp4ZWIwQ1ltVFBDenRSc1FRQUFBQURlM2lyQzlxcHpRU2NvajBGaFpDREM4YnB4UWNIdEprRjRhekxDRjNCc1FhN2hrRUdSc1MvQ1ZYeG9RWFIvS0VHNjZDZkNIWGh6UVQvNnZFSGpmUmJDVXdwd1FSb2F0VUgvWlMzQ0hLVmtRWEVXeGtGVU14dkM5eVJyUVJPWjFFSHUvQ3JDQTVoZFFjME8xa0hmbnhiQzkvTnBRZlVpMlVHdnJSdkM5QzVrUVdDLzEwRVozeXJDVGpsYVFRQUFBQURBRVdIQ2tzdFFRWnhlYjBBN0NFYkNXSzVpUVFBQUFBREtORWJDTTcxaVFhOW1ZMEJ0RVdIQ3g3eFFRU1NkRWtHWkQySENuYUZNUVJhVmlrRnhiVVBDdjh4YlFaRlVHa0YzREVYQ1l0VmZRVHVuZzBFWitXREM2SnhJUVlITnJrRnhiVVBDWmR0WFFRY1Fwa0ViNDJEQ1pxOUVRWDFNemtGeGJVUENmSkZRUWQzN3cwRnp1bURDbFd3OVFjbHkwVUZ4YlVQQ3NWSk5RZG41eGtGWXFHREM5VEE2UWZrTDNrRnhiVVBDUmlBMFFjYngwa0hNRzJEQ0ZSY2hRUUFBQUFCUUU0SENPTVEwUVlFMVVVQW1FNEhDV0xjMFFYM2lCa0U1RW9IQ0RLY3dRZk05Y2tIZEJvSENFeWd0UVJMSG1FSEIrNERDU2IwcFFSeE90RUU1NTREQ0hXd2pRZElPdDBFVzNvRENGSndnUWFJUndrRWJsNERDa01VS1FXSzdqVUZTN3puQ2l5UmlRYzd6c1VFWnJ6ZkNRVUJlUWNseTBVRkdKamZDd0JSWFFST1oxRUZHSmpmQ0FNWlRRYVhoNEVGR0pqZkMvY2M4UVZDMzQwRVozeXJDdG05RlFUdDc2VUZHSmpmQ09BOHpRY1VxN1VGR0pqZkNtK1F1UVNtaElFSDVsVHpDdkNKbVFRQUFBQUQ1MWozQ2JOQm5RWnhlYjBCcnFqM0NsTUZuUVNndjNrRmo3U0xDZFlOVlFhb2M3a0ZHSmpmQ20rUXVRVkMzNDBFMTdTbkN0bTlGUVNndjNrRnEzQ0hDZFlOVlFmVWkyVUZhZ0JyQzlDNWtRYzBPMWtINnJSWEM5dk5wUVk4bTBVRWxYQkRDWHRadVFkSEgwVUhUTXhEQ1h0WnVRYlBxeGtGNmVCUENsM0p2UWJCSjdrSFJzbC9DaUo4WVFlRy83VUZ4YlVQQ0RIb29RWFBON1VIUnNsL0NpSjhZUWJKRzdrRnhiVVBDREhvb1FmNXA3a0Vtem4vQ0RZb0ZRV2JSN1VFbXpuL0NEWW9GUWY1cDdrRW16bi9DQWdVRFFiQko3a0hSc2wvQ2ZSb1dRYkpHN2tGeGJVUENBZlVsUWFvYzdrRkdKamZDa0Y4c1FWQzM0MEUxN1NuQ3JPcENRU2d2M2tGcTNDSENhLzVTUWZVaTJVRmFnQnJDNnFsaFFjME8xa0g2clJYQzYyNW5RZEhIMFVIVE14RENVbEZzUVk4bTBVRWxYQkRDVWxGc1FiUHF4a0Y2ZUJQQ2krMXNRVC82dkVIamZSYkNSb1Z0UVNjb2owRmhaQ0RDNVRWdlFYUi9LRUc2NkNmQ0V2TndRYUdlY1VCNnNTckNaUjl4UVFBQUFBRGUzaXJDN0NWeFFTcVZwa0g0NUl2Q0Zha0xRVW1hc0VGSW5ZdkNGdy80UU9FVHBFRXo3b3ZDVUJRT1FSTUhpMEh3QW96Q0ZZTVRRYkp3WEVFb0RvekNaM01XUVgxOTlVQ2lHWXpDRlhVWlFRQUFBQUM3R296Q1JJWWRRVlJoUGtDUkdvekNNbnNkUVkxQm1VSEJzSlRDY01ydFFFamlwa0Z3SHBUQ0dBYlVRSkx6bGtIeHVaVENhaG55UUpMUGYwRVQ5SlRDcHNiN1FCUE9Ta0U5LzVUQ1Y0RUFRZHJaNFVDb0NwWEMwUzREUVFBQUFBREFDNVhDYlBVRlFWa21MMENXQzVYQ2tPc0ZRVnlaaFVHRjZwdkN3RmlHUUR3YmgwSFU3NXZDVkR1SFFGeVpoVUZQVDV6Q3dGaUdRRHdiaDBFWms1dkNWRHVIUUdDSGpVSDZtSnZDMnVhS1FIZVVqRUhvOEp2QzkxV0tRRnlaaFVFNHhKakN2MWlHUUR3YmgwRk9yWmpDVkR1SFFQSTNwMEdTUFpyQzZwU1pRT21BcUVGS2Q1ckMwVXFhUVBJM3AwSFk0Sm5DNnBTWlFPbUFxRUdBRXByQzBVcWFRUEkzcDBFTCs1YkM2cFNaUU9tQXFFRXo3SmJDMFVxYVFNSHNrRUdqWjVuQ2FBZU5RTUhza0VFc1I1bkNhQWVOUURVc2swRTdTWm5DUFZDT1FNSHNrRUdOUTVqQ2FBZU5RQUVxbkVHa3o1akNqM09UUUFFcW5FRXdyNWpDajNPVFFBRXFuRUdPcTVmQ2ozT1RRRStMaEVHMm01akM5WkNLUUlXWmZrRkJTWnZDTEl1ZlFJV1pma0gwSXBqQ0xJdWZRRStMaEVFQ3dwdkM5WkNLUUlXWmZrRU1ycHZDTEl1ZlFFK0xoRUhOSnB6QzlaQ0tRQURaaWtFRC81ckNZb2lqUUtHUWkwSHR5WnZDVTJXT1FFQXNya0Z6REpuQ1NBSzJRQlptcVVFWVVackNQYXVlUUVBc3JrR3BwNWpDU0FLMlFCWm1xVUZON0puQ1BhdWVRRUFzcmtGYmdaWENTQUsyUUJabXFVRUF4cGJDUEt1ZVFCdmlZa0ZkMXB2Q1ZwK3BRQnZpWWtHU2NadkNWcCtwUUJ2aVlrRkZTNWpDVnArcFFKZ2NJRUZQVDV6Q1lpU3NRSmdjSUVHRjZwdkNZaVNzUUpnY0lFRTR4SmpDWWlTc1FBQUFBQUR3bjV6Q2JLbXVRUENXRWtBbU81ekNiS211UVBDV0VrRHduNXpDYkttdVFBQUFBQUFtTzV6Q2JLbXVRUENXRWtEWkZKbkNiS211UUFBQUFBRFpGSm5DYkttdVFBQUFBQUNsZXByQ1NMamhRS25qSWtDYWRwckNxNnJoUUpzSzBrREVYNXJDdE5qZVFNK2JQRUdSQkpyQ0NpYmJRSERuYlVHQ3NabkN2WWpYUUlSaWpFRXVGWm5DaStEUlFHaWhqMEdlNzVqQzV1Yk9RQ2M0cGtGbTRwZkNaWnUvUUJVWXpFQndFSnpDdjFPdFFCVVl6RUE2ZFp6Q3YxT3RRQlVZekVBaTZwakN2MU90UVA1cDdrSENQWWJDcitIeFFQNXA3a0hDUFliQ210ZnNRR2JSN1VIWFI0YkNyK0h4UU9OK3YwRkU5cEhDeVQ3VVFPTit2MEVPVzVMQ3lUN1VRT04rdjBIMno0N0N5VDdVUUpEWDIwRzVzWW5DSit6cVFKRFgyMEdERm9yQ0orenFRSkRYMjBGcmk0YkNKK3pxUUQ1djdFRVpSb2JDSit6cVFFLzM3RUYrblliQ0orenFRRDV2N0VIOUVZVEM2RzNuUUhYTDdVRWJZNGJDSit6cVFKRFgyMEhoeFluQ1ZBRDFRT04rdjBGdENwTEM5RkxlUU0zODdFRXVmb2JDTWg3eVFCQjAyMEdNNjRmQ2FPTDJRSGV4NEVIakc0REM1eHNIUWIrKzVVRlAwbC9DekNrYlFlZ0o2VUZ4YlVQQ3R2Z3JRZjVwN2tFbXpuL0NvbTRCUWY1cDdrRkg1b1hDMWZYclFQNXA3a0Vtem4vQ3BWenZRUDVwN2tIZ3pJUENna3puUUxCSjdrSFJzbC9DSG9RVVFiQko3a0hSc2wvQ3pjTUtRYkpHN2tGeGJVUENvRjRrUWJKRzdrRnhiVVBDVVo0YVFhb2M3a0ZHSmpmQ01ja3FRYW9jN2tGR0pqZkM0QWdoUVZDMzQwRTE3U25DUzFSQlFWQzM0MEUxN1NuQytwTTNRU2d2M2tGcTNDSENDbWhSUWZVaTJVRmFnQnJDT0ZOV1FmVWkyVUZhZ0JyQ2l4TmdRU2d2M2tGcTNDSEN1YWRIUWMwTzFrSDZyUlhDaXRobFFjME8xa0g2clJYQ09oaGNRZEhIMFVIVE14REM4YnBxUWRISDBVSFRNeERDb2ZwZ1FZOG0wVUVsWEJEQzhicHFRWThtMFVFbFhCRENvZnBnUWJQcXhrRjZlQlBDSzFkclFULzZ2RUhqZlJiQ2x5NWlRVC82dkVIamZSYkM1KzVyUWJQcXhrRjZlQlBDMjVaaFFTY29qMEZoWkNEQ2hwOXRRU2NvajBGaFpDRENOZDlqUVhSL0tFRzY2Q2ZDczF4dlFYUi9LRUc2NkNmQ1lweGxRUUFBQUFEZTNpckNpNDl2UWFHZWNVQjZzU3JDQW9sdlFRQUFBQURlM2lyQ09zOWxRYUdlY1VCNnNTckNzOGhsUVhYTDdVRlIvb1hDSit6cVFIWEw3VUVRM29QQ21TVG5RSHlmMVVDVktUM0NDRlJtUVY4ZTBFQnFra1hDQmdKZ1FhVSszRUM5Q3pQQ2hhVnNRYlJUamtBNEM1WENkMUFEUVRjSW1rQXpHb3pDSTVzWlFaMEVoVUNtSjV6Q2FBMnVRT1FsaVVELy81akNud0t1UUllYTRrQ3ZWQ25Dd0k1elFZOGZ2a0NtRUdIQ29kRk1RVXQ0cUVETEVvSENwdE13UVllYTRrQ3ZWQ25DdGdseFFRUkloMEFMYlpyQ2JBWGZRSEtBaEVDYWpKekN3dzZ1UUllYTRrQ3ZWQ25DVTNOdlFZZWE0a0N2VkNuQ0JMTmxRVURqd0VCVk1qUENZN0pzUVJJZHgwQlJyeW5DWVpSelFUdmRva0R0RUdIQzVLVlFRV1BFdEVEYnRrWENONU5pUWZVMWpVRHlFb0hDT3FjMFFSSWR4MEJScnluQ1Z3OXhRYmFMZlVCZkdvekNERzRkUVJUL1YwRGpjWnJDeVpyaFFLZ2laa0JtQzVYQ2ZlQUZRVWxsVWtDRmxaekNGVmF1UUJJZHgwQlJyeW5DOTNodlFSSWR4MEJScnluQ3BiaGxRY3RFdWtBYVR6M0NGYU5uUVoxdFUwQ1BNSnpDdkZTdVFDbXdXMERxQ0puQzgwbXVRUFVqN2tIYUVKbkNnQmdqd2RoaDZrRjJDNW5DNXhRaHdidWY1a0VRQnBuQ2dCZ2p3ZGhoNmtIdEdwbkNZeDB3d1JQbThVRkJGcG5DWXgwd3dVZms4RUhQRkpuQ0paa293ZlVqN2tIYUVKbkNSaUk5d1VmazhFSFBGSm5Db2FFM3didWY1a0VRQnBuQ1JpSTl3ZGhoNmtGMkM1bkMzeVUvd1p6ZDRrR3FBSm5DWXgwd3dXbmY0MEVjQXBuQ29hRTN3V25mNDBFY0FwbkNKWmtvd1VmazhFR082cGpDcXBBWndkaGg2a0UxNFpqQ254TVd3VEdvOVVGbThaakNnQmdqd2JWbTkwSG44NWpDWXgwd3dUR285VUZtOFpqQ1JpSTl3VWZrOEVHTzZwakNHNnBHd2RoaDZrRTE0WmpDSnlkS3dXbmY0MEhhMTVqQ0c2cEd3WUFiMzBFQzBaakNSaUk5d2Z0YzNVR0N6cGpDWXgwd3dZQWIzMEVDMFpqQ2dCZ2p3V25mNDBIYTE1akNxcEFad1JQbThVRklzcGpDbnhNV3dkaGg2a0Y4cDVqQ2JBd1N3YlZtOTBFdnVwakM1eFFod1U5cStVRVN2WmpDWXgwd3diVm05MEV2dXBqQzN5VS93UlBtOFVGSXNwakNKeWRLd2RoaDZrRjhwNWpDV2k1T3daemQ0a0d5bkpqQ0p5ZEt3ZnRjM1VISWxKakMzeVUvd1dKWjIwSGxrWmpDWXgwd3dmdGMzVUhJbEpqQzV4UWh3WnpkNGtHeW5KakNueE1Xd2RoaDZrSEZiWmpDbnhNV3dVZms4RUVlZDVqQ3FwQVp3VEdvOVVIMmZaakNnQmdqd2JWbTkwRjNnSmpDWXgwd3dUR285VUgyZlpqQ1JpSTl3VWZrOEVFZmQ1akNHNnBHd2RoaDZrSEZiWmpDSnlkS3dXbmY0MEZzWkpqQ0c2cEd3WUFiMzBHU1haakNSaUk5d2Z0YzNVRVJXNWpDWXgwd3dZQWIzMEdTWFpqQ2dCZ2p3V25mNDBGc1pKakNxcEFad2RoaDZrR0VRNWpDNXhRaHdmVWo3a0hvU0pqQ2dCZ2p3VWZrOEVIZFRKakNKWmtvd1JQbThVRlJUcGpDWXgwd3dVZms4RUhkVEpqQ29hRTN3ZlVqN2tIb1NKakNSaUk5d2RoaDZrR0VRNWpDM3lVL3didWY1a0VlUHBqQ1JpSTl3V25mNDBFck9wakNvYUUzd1p6ZDRrRzVPSmpDWXgwd3dXbmY0MEVyT3BqQ0paa293YnVmNWtFZVBwakNnQmdqd2RoaDZrRU1OSmpDWXgwd3dWTS9xRUV5UjUzQ2RsajR2ajV1cUVHa2NKakNhNmgvUDFNL3FFR0thSnpDYmFoL1B6NXVxRUVmSUpuQ2VsajR2bE0vcUVFNWZwM0Nld3Rhdno1dXFFRitTNW5DZlF0YXY2QW11RUVXZzV6Q2gzNGd2d0srdGtHUWhaakNpWDRnditRaTBrRTVoNXJDY091RXZsNGd6a0ZNOVpiQ2RPdUV2cTIxNzBIT0dwWEN2QTJUUEZHOTZFRlBVSlBDbncyVFBKV2pBRUtuVkkvQzNjRFdQNXVNK0VIQ01vL0MzY0RXUDVXakFFTGs0WTdDak92c1A1dU0rRUVyczQ3Q2krdnNQNkYvN2tIMDBJYkNUaFBqUUNxZTdFSEEySVRDK0xUZ1FCdEw5VUd1d1lYQytMVGdRSkhJNUVIMkhZYkNUaFBqUUtISzZVRkFoNGZDRDF6alFIS3UzVUhGMG9iQ0QxempRSmltMmtGY2FZckNqWnJpUU9SKzAwRUxyWW5DOE16YlFQdWN3RUZHRVpMQ2c4ck5RRUh1dmtGQ1NwREMrSVhMUUNaeXNFSFROcGpDOEo2eFFQdk9yMEZySXBYQzhKNnhRUFVCckVINFlKbkNaYTZiUUlUUXEwRmxEWmJDWmE2YlFETVNxMEZ1bnBuQzZTbVNRTVA0cWtIVlBaYkM2Q21TUUJLaXFVRWZMNXZDbndFd1FIdXRxVUdnZVpmQ253RXdRTDBlMzBFaEo0N0NBeU4yUHJDS3hrSGl4cERDQzVCTlBKaTQ3VUdTTUl2Q2t5Yk5Qd1R5c0VFUzU1SENZZkdUdmw2Nm8wR1VkWkxDQW12eXZsNjZvMEZhVnBMQ2thSXd2bDY2bzBFRDJKSENtTTJGUHpYaHBFRW9KcEhDRXVnZVFDY1Rwa0hLUXBEQ0IySitRR3JhcGtIcEg1REM0UUNIUUxXS3FrRzZkby9DN3dLWlFQK0J1RUhRK1l2Q3IwV3VRQitBeTBHeU5vZkM3Nkc3UUZEbzFFSG5LSVhDU2RiQlFHMTMyMEc0cG9UQ2twckJRTEN6NGtHUnZJUEM0YWkvUUppNDdVRzExSXJDV2xqZlAvaFkxMEVrTVlYQzVsWVpRTGZ3MFVIdXhJWEN1aUVXUUV5UDJrRkRpb1RDaTRVc1FHb3d6VUZWQkliQyt1SVJRRXlQMmtFTmRvVEM1b1V1UUFCSXlrR3VJNGJDNEVrUFFBQkl5a0hRSEliQ3Y0WVRRQUJJeWtFRUFZYkNaS3drUU4ySXlrSGoyWVhDSHVvNFFDN015a0hlcDRYQ1dldE5RQWI0eWtFeW9JWENTVnRSUU1QSHkwSDVlb1hDdDBkWlFGSGF6a0dJdG9UQ2g2SmlRUDRIMDBGVnFvUENiNE5vUU1rWjFVR25Ob1BDVFQ1clFET0wxa0VER29QQ0NTUnJRTFFpMkVHQTVvTENEVWxxUUY3bDYwSFhPWVBDMjBpcVFJRW8ya0c5eVlMQ1d1RmdRSmk0N1VFNDFZVEMwcXlMUUV5UDJrRS9KSVBDZ0dsVFFCSFJ0a0ZEdUpYQ05kMkVRTGxZcWtHSXI1YkM5VkpvUUk5aHEwRlFxNWJDVytaZlFEV3d0a0U0cVpYQ3dMdUtRQTIwdlVHMVRwWENxSEdGUUE5UnZVRmxaSlhDTWh5QVFHK2F5MEZ1QXBYQzdTb2pRSWY4d2tFOUc1WEMyV3R3UUpJc3lrRzBIWlhDOEJBZ1FJZlN3MEhCLzVUQ295ZDZRQUlPeVVIZXZaWENVQ3A1UCtGanlrSDlyNVhDWHRSa1A3UWl3RUZ1c1piQ0w4M3R2UzdBd0VFOHQ1YkM3aXFSdm95UnMwRnRocGZDQ3RHQnZnQXlzMEg1bkpmQ1doSGR2aElScUVHNDlaZkNSYndFUDRGRnFVR0wySmZDeUM0Z1AzR1NwRUh6bDVmQ1c5a0hRUHNMcGtFRGdwZkN2TWNHUUk5aHEwRzFqWmJDVytaZlFCSFJ0a0dvbXBYQ05kMkVRSWY4d2tHaS9aVEMyV3R3UUE5UnZVSEtScFhDTWh5QVFKSXN5a0VaQUpYQzhCQWdRQUlPeVVGQ29KWENVQ3A1UDdRaXdFSFRrNWJDTU0zdHZZeVJzMEhTYUpmQ0N0R0J2b0ZGcVVIdnVwZkN5QzRnUC9zTHBrRm9aSmZDdk1jR1FJOWhxMEZpbHBUQ1d1WmZRQkhSdGtGVW81UENOZDJFUUE5UnZVRjJUNVBDTWh5QVFKSXN5a0hIQ0pQQzd4QWdRSWY4d2tGUEJwUEMyV3R3UUFJT3lVSHVxSlBDVHlwNVA3UWl3RUYvbkpUQ044M3R2WXlSczBGK2NaWENETkdCdm9GRnFVR2J3NVhDeHk0Z1Avc0xwa0VUYlpYQ3ZNY0dRSkZKdDBFeWQ1TENzNjllUUowc3IwR2lJNVBDdlFKQlFCem11MEd4TzVMQ3lCaFZRTi9ydjBIS0I1TENhN3RNUUJMdnhFR0VDWkxDdmJFVVFIa294RUdDZUpMQ1I5MmhQMHpodlVIMEk1UENtZGorUHVEdnRFR0d1NVBDbE1YTVBtcXdyVUZUOVpQQ1NtbUNQMHgwcTBGY3VaUENVOXdDUU1FT3VFRXlBcExDR1VFWVFKNWh0VUVUTzVMQ0MzY09RQzZVdVVHUjdwSENTaGNWUU43bnVrRnkzWkhDNlZRU1FPVmJ2RUh5M1pIQzR4VUNRRG9sdkVGKy9KSEM1OTdlUDNNd3VrSHFNWkxDcVVuQVB5UXR0MEg1WkpMQzV4RzhQd0RydEVIOWRwTEMvTURVUDRoTnRFRjdacExDNytUNFA3bFlxa0ZSZEpiQzlWSm9RSEdTcEVHOVhKZkNXOWtIUUJJUnFFR0N1cGZDUmJ3RVB6V3d0a0VEYnBYQ3dMdUtRSWZTdzBHSnhKVENveWQ2UUEyMHZVRitFNVhDcUhHRlFHK2F5MEUzeDVUQzdTb2pRT0ZqeWtISGRKWENYdFJrUHk3QXdFRUVmSmJDN2lxUnZnQXlzMEhDWVpmQ1doSGR2cmxZcWtGTU5ZZkM4MUpvUUhHU3BFRzJIWWpDV2RrSFFCSVJxRUY5ZTRqQ1Byd0VQeld3dGtIOExvYkN3THVLUUFBeXMwRzlJb2pDYVJIZHZvZlN3MEdHaFlYQ29TZDZRQTIwdlVGNTFJWENwM0dGUUcrYXkwRXlpSVhDNnlvalFPRmp5a0hCTlliQ1Z0UmtQeTdBd0VIL1BJZkMvU3FSdm9ONjJVSHQrSkRDYzZQRVFLTi95RUdlU1pMQ1grV3RRRUhveVVIaFE1TENGeW1vUU1STjJVRng1SkRDYWFITVFOU0E0VUdtZXBEQytRTEdRSFVUNFVIbWxwRENRS1crUUdMSTlVRlVBWkRDN0o5OVFMUU02a0VlSTVEQ3JtaXpRRGJXODBGNkpwREN6Mlo1UUJrdzYwR3gvWS9DSlFtNlFBRlE4a0dOQUpIQ0dZam9QNFVoOUVHcDdaREN4Ni9hUCs4cTVrRTFUSkxDWHArcVBsc0I1MEVhVkpMQ3paN1hQVU1PMVVFOGJwUENOcDBWUGlxTTFFSHdqSlBDa2NqRnZick55VUhJQlpUQ1kwT1pQN054eTBFTTNwUENQZk9yUHdiSncwRVpocFBDa0o5eFFCdkx4VUU2YUpQQzh5cHdRRUhveVVHUUc1TENGeW1vUUlONjJVR2IwSkRDYzZQRVFMUU02a0hOK28vQ3JtaXpRSFVUNFVHVmJwRENRS1crUURiVzgwRXAvby9DejJaNVFBRlE4a0U5MkpEQ0dZam9QKzhxNWtIbEk1TENYcCtxUHZ1aDlrRytzWmJDanlsNndkNFM3MEVrNW8vQzg2ZU13WU1VQlVLQkZKSENZeE43d1RLODQwSGR3WkxDQzdTTXdYU05CVUlxNkpMQ05TSzl2NUljRFVJTlc0ekNONGZHd0RSdERVTEFOSW5DYmloYXdIU05CVUllNHBiQ2tiZXV3TUd6Q0VLZEpJUENQNU9Nd0tHakRFSWk1b1hDQjIzWndDQmpDRUlpNW9YQ0IyM1p3RUgwREVLZEpJUENQNU9Nd0pJY0RVSWk1b1hDQjIzWndEUnREVUtkSklQQ1A1T013QkZiQUVMbng0ckNZeE43d1dyYThrSG54NHJDODZlTXdXeFo2a0hueDRyQzg2ZU13WkdiQkVMbng0ckNZeE43d1UvTTgwSG54NHJDODZlTXdZTVVCVUxueDRyQ1l4Tjd3U1JsQlVMaHc1RENZeE43d1I2MDcwR0VsWS9DODZlTXdUUnREVUlwNllqQ3VrNWR3SkljRFVKb0NJekNISG5Id0pJY0RVS21OSWJDT29mWXdEUnREVUp0YklQQ1B4U0x3RS9NODBHQUZJdkM4NmVNd1lNVUJVS0FGSXZDWXhON3dhNTc4MEVuWlp6Q2tiZXV3SzU3ODBGYS9wbkNWYWtLd0k1cDBrR2FIcUhDVDVtZndJNXAwa0h5U3FEQ2tzRTJ3QlNWQ2tCL0VLZkNDSGxTd0hqSEkwR1VHcWZDSklXVndIakhJMEcycTZiQ0NIbFN3QlNWQ2tCZGY2ZkNKSVdWd0FBQUFBQi9FS2ZDQ0hsU3dBQUFBQUJkZjZmQ0pJV1Z3QUFBQUFBTVY2YkNMZ1Vvd1JTVkNrRFd1NmJDZGF3THdRQUFBQURXdTZiQ2Rhd0x3UlNWQ2tBTVY2YkNMZ1Vvd1hqSEkwRU5WNmJDZGF3THdYakhJMEZEOHFYQ0xnVW93UlNWQ2tBanNxYkNWcUx3d0hqSEkwRmJUYWJDVnFMd3dBQUFBQUFqc3FiQ1ZxTHd3Sk5yMFVFY0w2SENWcUx3d0lubzhVSHZTSjNDZHF3THdiTjk4a0duOUp6Q1ZxTHd3Qnl3elVGeGlhSENkcXdMd2VMREJFSjZqNWpDZHF3THdYWU9CVUtlOEpmQ1Y2THd3SzRxREVMV1BvN0NYSjRRd2ZxMkRFSXc3STNDRlBzR3dVOTdERUkxN28zQ3JjWVF3ZnEyREVMUm1vM0NPa0VId1U5N0RFTEd0NGpDWFJzaXdmcTJERUw2M1lmQ1lTOE93VTk3REVJdGE0akNxVUVpd2ZxMkRFS3JrSWZDQkhJT3dWNENERUl0YTRqQ3FVRWl3UWMrREVLcmtJZkNCSElPd2Q3QkIwSXRhNGpDcVVFaXdZajlCMEtya0lmQ0JISU93UUFBQUFCN0tadkMrT2lNd1hlMDREK3NRS0hDbFNoOXdRQUFBQUNzUUtIQ2xTaDl3VWc0L0Q5N0tadkMrT2lNd1JTVkNrQVFXNXZDQ2JTTXdaTlVHa0hWdTZIQ0RPbDV3YlR0OWo5MURLTENET2w1d1pOVUdrRndDcHZDQ2JTTXdXblcwRUZuQnB6Q0RPbDV3V25XMEVFQ1ZaWENDYlNNd1hxLy9VRUhvNWpDb3RGU3dadHhDVUx3RFpIQ1huMDR3ZDhqQVVLcHFaakNUREl6d1hFNkNFS3RxWkhDVENaU3dkSnpBa0tBclpqQ1NlSWd3VzRYQ2tMblpwREN2cWtrd2NWV0MwSzYwNGpDOXVvdXdVVVdCMEs2MDRqQzl1b3V3VFBzQkVKVC9vbkN6Y3hYd1VTTENrSzRUNG5DM2U0OXdiTXNDVUpUL29uQ3pjeFh3Y1ZLQmtLNFQ0bkMzZTQ5d2JmUEMwSzYwNGpDOXVvdXdUY0VDMEs0VDRuQzNlNDl3YVNsQ1VKVC9vbkN6Y3hYd2IyMENVSXZ5cERDR2F3NHdmcCtDRUlqWlpIQ1RDWlN3Vk5iQ2tLNUlwREN0dEVrd1liUUMwTGhING5DVTc0dXdhU2xDVUxzU29yQ3pjeFh3ZjBGQzBKV200bkN0cm85d1EzV0MwS1NpbzdDUVk0andhU2xDVUpOK28vQ3pjeFh3UkVTQzBJQlJJL0NvZE01d2RONFhFRTJxcWJDSklXVndOTjRYRUZZTzZiQ0NYbFN3QmNjYmtHdjVxWENkYXdMd1JjY2JrSGxnYVhDTGdVb3dSY2Nia0g4M0tYQ1ZxTHd3T3VaSEVHQkg1dkNVbDJOd2Zmd1dFSFEvcURDQm5COXdldVpIRUgyV0tIQ0JuQjl3ZmZ3V0VGY3hackNVbDJOd2E1NzgwSGxSSlhDek5OS3Z2eFFCVUplZ3BMQ2F5ZVd2N3N3QTBJMTdvN0N6S25JUDY1NzgwRm5oWm5DTEJiM3Y0NXAwa0Yva1p2Q1hKajh2bzVwMGtFQTBwL0NVYU1ud0hqSEkwRkQ4cUhDL25vVHdOTjRYRUZtd3FYQzZlbEt3Tk40WEVIa2dhSEN4dUVHd0hqSEkwSEVNcWJDYml4TXdCU1ZDa0FMVjZMQy9Yb1R3QlNWQ2tDTmw2YkNiaXhNd0FBQUFBQUxWNkxDL1hvVHdBQUFBQUNObDZiQ2JpeE13RFJ0RFVLTW00YkM4UHZKdnpSdERVSk1lNFRDMzlDWXZqUnREVUphVDRiQ3pXalF2elJ0RFVLb0tZVENYQTIzdmpSdERVSmtuNERDUHpFaXdEUnREVUl0MEh6Q1lUUzJ2elJ0RFVJQ1Y0RENqajRsd0RSdERVSVFOWHpDdm1LOXYwSDBERUlDVjREQ2pqNGx3RUgwREVJUU5YekN2bUs5djhHekNFSUNWNERDamo0bHdNR3pDRUlRTlh6Q3ZtSzl2d0FBQUFCWC9LSENEY2Fhd0svaEFFQVFXYVRDRGNhYXdBQUFBQUFRV2FUQ0RjYWF3Sy9oQUVCWC9LSENEY2Fhd0hERElVRkg5S1BDRGNhYXdIRERJVUdObDZIQ0RjYWF3SFRKWEVIcGc2UENEY2Fhd0hUSlhFRXZKNkhDRGNhYXdMaHNia0gxV2FEQ3I0M2F3TDNwSkVFTUo2UENyNDNhd0xoc2JrR3V0cUxDcjQzYXdMM3BKRUZUeXFEQ3I0M2F3Sy9oQUVEV2k2UENyNDNhd0svaEFFQWNMNkhDcjQzYXdBQUFBQURXaTZQQ3I0M2F3QUFBQUFBY0w2SENyNDNhd1B2VkkwRUpKYWJDc1lmdndDQWdia0dydEtYQ3NZZnZ3T2dZQ2tEU2lhYkNzWWZ2d0FBQUFBRFNpYWJDc1lmdndOdDhYRUhsZ2FiQ1k4aVZ3S3V0STBGRDhxYkNZOGlWd09nWUNrQU5WNmZDWThpVndBQUFBQUFOVjZmQ1k4aVZ3Si9GWEVFMXFxUENLNGFhd1BUYklVR1RHcVRDSzRhYXdLVlhBVUJjZjZUQ0s0YWF3QUFBQUFCY2Y2VENLNGFhd1BMYkpFRlpUYVBDTUpyYndPVm9ia0g4M0tMQ01KcmJ3S1ZYQVVBanNxUENNSnJid0FBQUFBQWpzcVBDTUpyYndBbGNtMEYxVzZYQ3NZZnZ3TkExa1VFUWVxTENNQmpWd0oyQ2tVSEdnNkxDTUpyYndBRlltMEcvVWFYQ0s0N213SjJDamtHaklxTENLNGFhd0VkNmxrRlQrcVRDWThpVndMcm5tMEhIZzZYQ1ZxTHd3THJubTBFUWVxWEN6NFhud0VndWwwR2tJcVhDSklXVndQaUUwVUYxTGFIQzFZZm93Qm1YOGtGTjVwekMyZ3Jxd0NrYkJVS1IxWmZDMmdycXdDUEJERUlUeEkzQ3UyZ0R3U1BCREVLVGNvM0M5Yk1Ed1NQQkRFSnhzNGZDQWNzS3dTUEJERUlEWm9mQ2R4SUx3VEZJREVJRFpvZkNkeElMd2JFSENFSURab2ZDZHhJTHdVZXRrRUhEVTZMQzdTelV3T2o5a0VGNlhhTENyNDNhd0p6WGpVRlgvS0hDRGNhYXdFZXRrRUVKOTUvQzdTelV3T2o5a0VIQUFLRENyNDNhd0p6WGpVR2NuNS9DRGNhYXdDY2VtMEZFaHFUQ2Rhd0x3ZUI2blVFd2ZLVENMZ1Vvd2I3cG1FR1NmS1RDVnFMd3dEbHNtRUZCVktUQ3NZZnZ3RzcvalVHUmZLSENNSnJid0RDSWpVRkVWcUhDcjQzYXdEQ0lqVUdMK1o3Q3I0M2F3RTQyVzBHQ3FackNDYlNNd1pOVW1rRnRLNkRDRE9sNXdVNDJXMEhuV3FIQ0RPbDV3ZndIbEVFSWVwbkNDYlNNd1ZJMG9rRTA3Si9DRE9sNXdicm5tMEhQT3BuQ0NiU013Vkkwb2tGeENxREN0ME5Yd2VyL24wR3hLS1hDTGdVb3dlci9uMEdhbmFIQ0xnVW93Vkkwb2tHSWxhUEN0ME5Yd2VyL24wRjVqYVhDTGdVb3dWSTBva0ZSK3FQQ3QwTlh3Wk5VbWtIMVRhREN0ME5Yd1pOVW1rRU0yYVBDdDBOWHdaTlVta0hWUGFUQ3QwTlh3ZE40WEVFRWtxSEN0ME5Yd2RONFhFRWJIYVhDdDBOWHdkTjRYRUhsZ2FYQ3QwTlh3Wk5VR2tGaUFxTEN0ME5Yd1pOVUdrRjRqYVhDdDBOWHdaTlVHa0ZEOHFYQ3QwTlh3UlNWQ2tBclo2TEN0ME5Yd1JTVkNrQkQ4cVhDdDBOWHdSU1ZDa0FNVjZiQ3QwTlh3UUFBQUFBclo2TEN0ME5Yd1FBQUFBQkQ4cVhDdDBOWHdRQUFBQUFNVjZiQ3QwTlh3ZUI2blVHdHVxSENMZ1Vvd1JjY2JrRWFIYVhDTGdVb3dSY2Nia0VFa3FIQ0xnVW93ZUI2blVHM1A2VENMZ1Vvd1hqSEkwRjVqYVhDTGdVb3dYakhJMEZpQXFMQ0xnVW93UlNWQ2tCQzhxWENMZ1Vvd1JTVkNrQXJaNkxDTGdVb3dRQUFBQUJDOHFYQ0xnVW93UUFBQUFBclo2TENMZ1Vvd2J4b0pFSHZmYVhDbFRGZXdXWEY0aitYNGFYQ2xURmV3WmhhVFVHeE5hWENsVEZld1pOVW1rSFV3NlBDbFRGZXdWSTBva0V1ZjZQQ2xURmV3WlR1L0VITUlwakNhazFmd1duVzBFR25wWi9DdDBOWHdXblcwRUVXSUovQ2xqRmV3YmlCL2tGWmY1akNZWlpZd1RCckNFSS9jNURDN05wZXdRTlZDVUx2U3BEQ3pjeFh3ZEc3Q0VLZUlwREM3TnBld2RHN0NFSTljNHJDN2RwZXdkRzdDRUtrSm9yQzdkcGV3ZDVDQ0VLa0pvckM3ZHBld1Y4Q0JFS2tKb3JDN2RwZXdRQUFBQUNYNGFYQ2xURmV3V1VOdUVFc2xhTEMreWhFd0k1QnVFRStOS1BDSzhPYXdQd0hsRUhHczZUQ0NYbFN3TjR3dUVGWUFhUENMZ1Vvd2FIeXprRlcvS0RDTGdVb3djdFF1RUc4WXFQQ2Rxd0x3U1FjbmtGNWphWENkYXdMd2NWUHVFR2FYNlBDVnFMd3dCSFF0MEhuUHFMQ3QwTlh3VytXdGtHTUhaN0NET2w1d2V0eHRFR0tsSmZDQ2JTTXdmWjF0a0dBdXAzQ2lWVml2L3dIbEVIVE9xVEMxTjlGd01UbXQwRlpINkxDSEZnMndKOWFwVUh6eTU3Q2NzZVB2MTlPdUVGY1c2UENmZzdvd0FHbnQwRityYUhDbGpGZXdUSzg0MEVBVTVMQ1c5eU13V25XMEVFazVwVENXOXlNd2ZHYjYwRXpiWTdDdDRtUHdXblcwRUZZQUpIQ01FZU93ZXR4dEVHc0paZkNXOXlNd2V0eHRFSGZQNVBDTUVlT3dicm5tMEh3eTVqQ1c5eU13YnJubTBFazVwVENNRWVPd2Z3SGxFRXBDNW5DVzl5TXdmd0hsRUZkSlpYQ01FZU93VTQyVzBHa09wckNXOXlNd1U0MlcwSFhWSmJDTUVlT3dmZndXRUUvWHByQzBZS053ZXVaSEVGbXVKckMwWUtOd2Zmd1dFRk12cGJDUU5TT3dldVpIRUZ4R0pmQ1FOU093Wk5VR2tHU201ckNXOXlNd1JTVkNrQXk3SnJDVzl5TXdaTlVHa0hHdFpiQ01FZU93UlNWQ2tCbEJwZkNNRWVPd1VnNC9EK1h4SnJDcVEyTndRQUFBQUNYeEpyQ3FRMk53VWc0L0QrWU9KZkMyRmVPd1FBQUFBQ1lPSmZDMkZlT3dlcHlpa0Z4U2FYQ0NYbFN3SXRxZUVGcU1xYkNKSVdWd01zS2lFSHl6S1hDSklXVndKdUdmVUdscmFYQ0NYbFN3S0FSZmtGZE1xWENZQTlKd0M2RGtrRkt6S0RDVFYzR3Y5bWVoa0VYU2FIQ0g3VDF2Mkc5aWtFQXpxVEN1TVJId00vM2gwR2xwcUxDRGNhYXdGelBkMEZKc3FEQ0RjYWF3TS8zaDBIclNhRENEY2Fhd0Z6UGQwRURENlBDRGNhYXdNaGllRUU5Q3FiQ1k4aVZ3TmdKaUVHaHBLWENZOGlWd0x2V2QwRXJOYVBDSzRhYXdMYjRoMEh4ektMQ0s0YWF3R2tZaGtIcERaekNqQ3QvUU9GTmkwRjhEcDdDWnE0TFFHa1loa0d6Y3B6Q2pDdC9RT0ZOaTBHenFaM0NacTRMUUdXZmtFRnpZWi9DQUJ1dVBtV2ZrRUdwL0o3Q0FCdXVQbHlaaFVHRjZwdkNPaGFGUUZ5WmhVRlBUNXpDT2hhRlFObWVoa0ZNNUtEQ0g3VDF2OU40WEVFYUhhSEN4dUVHd0hqSEkwRjRqYUhDL25vVHdCU1ZDa0JCOHFIQy9ub1R3QUFBQUFCQjhxSEMvbm9Ud0drWWhrR2M1NWpDaXl0L1FPRk5pMEZsZzVyQ1phNExRR1dma0VGYzFwdkMvUnF1UGx5WmhVRTR4SmpDT2hhRlFObWVoa0VBdnAzQ0lMVDF2OU40WEVITTlwM0N4K0VHd0hqSEkwRXJaNTdDL25vVHdCU1ZDa0R6eTU3Qy9ub1R3QUFBQUFEenk1N0Mvbm9Ud0RCa3FFRTVMNXJDT291VVFPbUFxRUZLZDVyQ1RBaVpRREJrcUVFRWxKckNPb3VVUU9tQXFFR0FFcHJDVEFpWlFEWFlwa0dINDV2Q2hWY3RRRFhZcGtGUlNKekNoVmN0UUo5YXBVSE5PSjNDaDJGWVA1OWFwVUdYblozQ2gyRllQL1oxdGtHMVZaM0NpbFZpdjU5YXBVRXBaNTdDY3NlUHY0NXAwa0cwTEp2Q1hKajh2akJrcUVIc0NKZkNPb3VVUU9tQXFFRXo3SmJDVEFpWlFEWFlwa0U1dlpqQ2hGY3RRSjlhcFVHQUVwckNoV0ZZUC9aMXRrRnBMNXJDaTFWaXY1OWFwVUhjUUp2Q2M4ZVB2NDVwMGtGbkJwakNYNWo4dmtpTmlFSHQ2cURDMGRxOXY5OHhra0ZRajZEQ0hiYWR2NEZ0akVIM0xhRENvSTBidjBpTmlFRWpocURDMGRxOXY0RnRqRUV0eVovQ280MGJ2MGlOaUVIVlg1M0MwdHE5djRGdGpFSGZvcHpDcUkwYnY1OWFwVUUrSzU3Q3ZiRTd2NTlhcFVFS2tKN0N2TEU3djU5YXBVSHlCSnZDdnJFN3YzZVVqRUhvOEp2Q2NST0pRRjcwakVIMkVwekMzY2FEUVBMUGtFR29zNTNDMDJrU1FOakVsRUVVQjUvQ0w5YmhQdEVHbGtFT0thRENSUENRdjkxSGxrSFNaYURDaVhLN3Z6OHNqa0dSc0tUQ3YyTkh3SzN3alVHQks2WENDWGxTd01nRGpFSGpxcVhDSklXVndBVGZpMEdTZ3FYQ1k4aVZ3SDVIaVVIanFxTENLNGFhd0pJa2lVR1doS0xDRGNhYXdKSWtpVUhjSjZEQ0RjYWF3RHdiaDBIVTc1dkN6L2lGUUR3YmgwRVprNXZDei9pRlFHQ0hqVUg2bUp2Q1ZhU0pRRHdiaDBGT3JaakN6L2lGUVBJM3AwR1NQWnJDWlZLWVFQSTNwMEhZNEpuQ1pWS1lRUEkzcDBFTCs1YkNaVktZUU1Ic2tFR2paNW5DNDhTTFFNSHNrRUVzUjVuQzQ4U0xRRFVzazBFN1NabkN1QTJOUU1Ic2tFR05RNWpDNDhTTFFBRXFuRUdrejVqQ0NqR1NRQUVxbkVFd3I1akNDakdTUUFFcW5FR09xNWZDQ2pHU1FIbVBBa0kxN283Q3pLbklQeW81OGtIbFJKWEN6Tk5LdmtiSStVRTE3bzdDektuSVAzM2k1a0hsUkpYQ3pOTkt2alJ0RFVKMFY0VENWU1o4dnJzd0EwS3R1bzdDdzczU1AwSDBERUl4MzN2Q2dlbTB2OEd6Q0VJeDMzdkNnZW0wdnpSdERVSXgzM3ZDZ2VtMHZ6UnREVUptQllUQzJ2bWJ2alJ0RFVLbmVuekN0OVN0djNtUEFrS3R1bzdDdzczU1AwYkkrVUd0dW83Q3c3M1NQL2lxOGtGdWk1bkNVZDFOd1RHViswSFhYNW5DN3dJd3dSMUQ4MEZWd3ByQ2tDZ1N3YXR1NFVHRUdadkNVOTFOd2R2dDFrSEp0cDdDeHJGUndaWWMyVUVCZkp6QzhBSXd3UllLMVVFZDRKL0Nhb2twd2M4RzRrRnBVSnpDa0NnU3daSEgwMEViWHFEQ05YRVJ3YU1SODBFV2c1dkNKWlVSd1JJSzgwSEh0SnpDTlhFUndSdVBBMEsrc0pqQ05YRVJ3V08zQWtKZktZN0NsUVBGUDBMRytrRmZLWTdDbFFQRlAvaE9BMEpmS1k3Q2xRUEZQelh1REVLeVpZVEMwNjUxdmpYdURFS1FHSVRDMHZLV3ZqWHVERUtaVW4zQzIzdWt2elh1REVKNXdIekM0Q09ydjRaOERFSjV3SHpDNENPcnYxUjlDRUo1d0h6QzRDT3J2enA1QTBJbmRJdkNQWGlGUDhXWC8wRW5kSXZDUFhpRlA5SGhBMEluZEl2Q1BYaUZQM09GQ2tKaHQ0VEM3RWM5dm5PRkNrSW9nb1RDbEJGa3ZuT0ZDa0l2d29EQ2UrMW52M09GQ2tMRWo0RENCQjF4dndJM0NrTEVqNERDQkIxeHZ3RjFCMExFajREQ0JCMXh2d3BWNGtIdUc1dkNnaTFMd2FyQzJrR0ZYcHpDOEFJd3dUa0U4a0d0c1puQ2dDMUx3WHpmNGtIWk5wekNZTmdVd2JDTzhrR1p6SnJDWU5nVXdRd2gra0VDaXBuQzd3SXd3UXBWNGtHZ3packNnaTFMd2FyQzJrRTFFSnpDOEFJd3dUa0U4a0ZjWTVuQ2dDMUx3WHpmNGtHSTZKdkNZTmdVd1F3aCtrR3lPNW5DN3dJd3diQ084a0ZLZnByQ1lOZ1V3UXBWNGtIaDNwZkNnaTFMd2FyQzJrRWc5cGZDOFFJd3dUa0U4a0YvLzVmQ2dDMUx3WHpmNGtIK0xaakNZTmdVd1F3aCtrRmVONWpDN3dJd3diQ084a0dkVHBqQ1lOZ1V3ZmNSKzBFY09aakN1QVl3d1loNDhrSGsvWmZDa05KTXdVd0w4MEhCVVpqQzR6b1R3Vy9ZNFVGUDI1ZkNrTkpNd2NEUjJVSDA4NWZDdVFZd3dTOXI0a0V0TDVqQzR6b1R3ZkdDbVVFMXNhVENWcUx3d0ZtM20wSHB1cVRDZGF3THdlUDduVUhhc3FUQ0xnVW93ZVA3blVIbk9hVENMZ1Vvd2VQN25VSGR0S0hDTGdVb3daWUNtVUhraUtUQ3NZZnZ3RVd6amtFMXNhSENNSnJid0ZRNWprSG9pcUhDcjQzYXdGUTVqa0V1THAvQ3I0M2F3TFdZbjBIQVlhWENMZ1Vvd1pPaG5VRmRZNlhDZGF3THdTdHRtMEdxV2FYQ1ZxTHd3TDdqbWtGWk1hWENzWWZ2d0w3eWtFR29XYUxDTUpyYndERndrRUZjTTZMQ3I0M2F3REZ3a0VHaTFwL0NyNDNhd0xXWW4wRllMYVhDTGdVb3diV1luMEZBb3FIQ0xnVW93YlR0OWorUUdxSENoNlo0d1JTVkNrQXJhWnJDeHhLTXdVNDJXMEVDYWFEQ2g2WjR3VTQyVzBHZHQ1bkN4eEtNd1pOVUdrSHd5YURDaDZaNHdaTlVHa0dMR0pyQ3h4S013WmhhVFVITVE2VENFTzljd2J4b0pFRUxqS1RDRU85Y3dXWEY0ait6NzZUQ0VPOWN3UUFBQUFDejc2VENFTzljd1U0MlcwRy9TSm5DR0R1TXdaTlVHa0d0cVpuQ0dEdU13VTQyVzBIeVlwWEM3cVdOd1pOVUdrSGd3NVhDN3FXTndSU1ZDa0JOK3BuQ0dEdU13UlNWQ2tDQUZKYkM3cVdOd1FBQUFBQmxCcGZDTUVlT3dRQUFBQUNBRkpiQzdxV053ZmZ3V0VFOE5hRENlS2g1d2Zmd1dFSEkrNW5DaW5tTHdldVpIRUZpajZEQ2VLaDV3ZXVaSEVIdFZackNpbm1Md1prTlRFSHp5cVBDcnVGZndYWDVKVUVpRHFUQ3J1RmZ3ZmZ3V0VHcmxKbkNDWitMd2V1WkhFSFM3cG5DQ1orTHdmZndXRUc0OUpYQ2VmQ013ZXVaSEVIZFRwYkNlZkNNd1prTlRFR0hsS1RDUUtsandYWDVKVUcyMTZUQ1FLbGp3Vkkwb2tHd2JLTENPWUptd1R4VnQwRWF0S0RDT1lKbXdXblcwRUg3TVo3Q09ZSm13Y3NLKzBFVXRKZkNRVnhud2NscUIwS2dvNURDUWxKbndXbTdCMEwvVXBEQ1FsSm53VHFqQjBLZW80ckNRbEpud1RxakIwSUZWNHJDUWxKbndVZ3FCMElGVjRyQ1FsSm53Y2pwQWtJRlY0ckNRbEpud1pOVW1rRzFyNkxDT1lKbXdlaUNVVUduRGFUQ09ZSm13ZWlDVVVIREc2UEN0ajlsd1duclQwR2t0NkxDVXAxbndXbnJUMEUxZ2FQQzRXUnJ3Wm9wSTBGSnk2UEM0V1Jyd1pvcEkwRzFBYVBDVXAxbndiQmlJVUZwYTZQQ3RqOWx3YkJpSVVGT1hhVENPWUptd1h6UjZEOC91NlRDT1lKbXdYelI2RDljeWFQQ3RqOWx3UUFBQUFDbXNhUEN5WUJyd1Z2ZDB6K21zYVBDeVlCcndRQUFBQUNBdmFUQ3QrOWp3WmRjemorQXZhVEN0Kzlqd1hlMDREKzV4NkRDQjJGNXdVZzQvRCtJc0pyQ01RV0x3VWc0L0Qra1M1ckM0U21Md1VnNC9EK2x2NWJDRDNTTXdRQUFBQUNsdjViQ0QzU013VnZkMHorME9LUENPTGxud1pkY3pqK05SS1RDSnloZ3dRQUFBQUNOUktUQ0p5aGd3VUlDREVJemJZN0NUY1FSd2N6bkNrS0VsWS9DRmhRVXdXOWtDMElFQlkvQ1MrOGp3VVNwQ2tJT3VZL0MrSG81d1Q1TkNVSW5aNURDMmhwV3dUNEFDVUlvdEpEQzJocFd3WFJIL2tFTmlwakNXZHRXd1QrcTBrSCtYWi9DNzVkVndYakcwRUVScDZEQ3Aza293ZktEejBHa0w2SENmR2NOd1dVLzhrRjlISjNDZkdjTndVRm5CRUowbVpqQ2ZXY053VUtqQ2tJTjJvL0MwZkVUd1VHMUMwSXp1bzdDekowUndVTU8xVUhxUlpQQ05aMFZQck54eTBHN3RaUENQZk9yUHh2THhVSHBQNVBDOHlwd1FFSG95VUUwYm8vQ0Z5bW9RSU42MlVGQkk0N0NjNlBFUUhVVDRVRTZ3WTNDUDZXK1FEYlc4MEhOVUkzQ3ptWjVRTFFNNmtGeFRZM0NybWl6UUFGUThrSGhLbzdDR1lqb1ArOHE1a0dKZG8vQ1c1K3FQa01PMVVHUW1KRENNSjBWUHJOeHkwRmhDSkhDUFBPclB4dkx4VUdOa3BEQzhpcHdRSmdlMmtHU2lvekNtMVduUUlBU3owRmZkWTNDWUNHVFFIV0MzMEVHUll6QzZMcWhRRVRnNVVIaDhvdkNWaHliUUl1ejdFRTY5WXZDdXVwcFFCNmw2MEZjakl6QytLVU5RTE1ZNDBIUGRZM0NnS1dWUDB6cjFrRXpSSTdDcTVtRVA4d016VUhua283Q0MzandQOFVCeWtFL1FZN0NRcUpSUUJjcjIwRkM2NHZDc3NOdVFDeUcxMEcyT0l6Q1ZtOWhRRVh5M0VGUjFJdkNLaEZyUU9jTDMwRTR1WXZDSzdObVFIWUc0VUhtdVl2Q0NwUlFRQWU4NEVGLzQ0dkM3UzQzUUNNUzNrRThMSXpDZkZ3aVFPUDMyVUhGY1l6Q2FIMGZRS2prMWtGS2lvekNsVXN3UUR3TzFrSFJjNHpDaitaSVFLTi95RUg5K0pIQ1grV3RRQWJKdzBGNE5aUENrSjl4UUxyTnlVRW50WlBDWTBPWlA4Uk4yVUhRazVEQ2FhSE1RQmt3NjBFUHJZL0NKUW02UU5TQTRVRUVLcERDK1FMR1FHTEk5VUd6c0kvQzdKOTlRSVVoOUVFSW5aREN4Ni9hUDFzQjUwRjZBNUxDeko3WFBTcU0xRUZPUEpQQ2s4akZ2V0xleDBHRnZvVENYdVd0UU1VbncwSCsrb1hDanA5eFFIZ3N5VUd1ZW9iQ1lFT1pQNE9zMkVGWFdZUENhS0hNUU9qcTAwSFdBWWJDeU1qRnZScGc1a0VBeVlUQ2w1N1hQVU9BODBHUVlvUEN4Sy9hUHo1dXFNR2tjSmpDYTZoL1AxTS9xTUV5UjUzQ2RsajR2bE0vcU1HS2FKekNiYWgvUHo1dXFNRWZJSm5DZWxqNHZsTS9xTUU1ZnAzQ2V3dGF2ejV1cU1GK1M1bkNmUXRhdjZBbXVNRVdnNXpDaDM0Z3Z3Syt0c0dRaFpqQ2lYNGd2K1FpMHNFNWg1ckNjT3VFdmw0Z3pzRk05WmJDZE91RXZxMjE3OEhPR3BYQ3ZBMlRQRkc5Nk1GUFVKUENudzJUUEpXakFNS25WSS9DM2NEV1A1dU0rTUhDTW8vQzNjRFdQNVdqQU1MazRZN0NqT3ZzUDV1TStNRXJzNDdDaSt2c1B5cWU3TUhBMklUQytMVGdRS0YvN3NIMDBJYkNUaFBqUUJ0TDljR3V3WVhDK0xUZ1FKSEk1TUgySFliQ1RoUGpRS0hLNmNGQWg0ZkNEMXpqUUhLdTNjSEYwb2JDRDF6alFKaW0yc0ZjYVlyQ2pacmlRT1IrMDhFTHJZbkM4TXpiUVB1Y3dNRkdFWkxDZzhyTlFFSHV2c0ZDU3BEQytJWExRQ1p5c01IVE5wakM4SjZ4UVB2T3I4RnJJcFhDOEo2eFFQVUJyTUg0WUpuQ1phNmJRSVRRcThGbERaYkNaYTZiUURNU3E4RnVucG5DNlNtU1FNUDRxc0hWUFpiQzZDbVNRQktpcWNFZkw1dkNud0V3UUh1dHFjR2dlWmZDbndFd1FMMGUzOEVoSjQ3Q0F5TjJQckNLeHNIaXhwRENDNUJOUEppNDdjR1NNSXZDa3liTlB3VHlzTUVTNTVIQ1lmR1R2bDY2bzhHVWRaTENBbXZ5dmw2Nm84RmFWcExDa2FJd3ZsNjZvOEVEMkpIQ21NMkZQelhocE1Fb0pwSENFdWdlUUNjVHBzSEtRcERDQjJKK1FHcmFwc0hwSDVEQzRRQ0hRTFdLcXNHNmRvL0M3d0taUVArQnVNSFErWXZDcjBXdVFCK0F5OEd5Tm9mQzc2RzdRRkRvMU1IbktJWENTZGJCUUcxMzI4RzRwb1RDa3ByQlFMQ3o0c0dSdklQQzRhaS9RSmk0N2NHMTFJckNXbGpmUC9oWTE4RWtNWVhDNWxZWlFMZncwY0h1eElYQ3VpRVdRRXlQMnNGRGlvVENpNFVzUUdvd3pjRlZCSWJDK3VJUlFFeVAyc0VOZG9UQzVvVXVRQUJJeXNHdUk0YkM0RWtQUUFCSXlzSFFISWJDdjRZVFFBQkl5c0VFQVliQ1pLd2tRTjJJeXNIajJZWENIdW80UUM3TXlzSGVwNFhDV2V0TlFBYjR5c0V5b0lYQ1NWdFJRTVBIeThINWVvWEN0MGRaUUZIYXpzR0l0b1RDaDZKaVFQNEgwOEZWcW9QQ2I0Tm9RTWtaMWNHbk5vUENUVDVyUURPTDFzRURHb1BDQ1NSclFMUWkyTUdBNW9MQ0RVbHFRRjdsNjhIWE9ZUEMyMGlxUUlFbzJzRzl5WUxDV3VGZ1FKaTQ3Y0U0MVlUQzBxeUxRRXlQMnNFL0pJUENnR2xUUVBjUiswRTh5WmZDdUFZd3dZaDQ4a0VEanBmQ2tOSk13VXdMODBIaDRaZkM0em9Ud1cvWTRVRnVhNWZDa05KTXdTOXI0a0ZNdjVmQzR6b1R3Y0RSMlVFVGhKZkN1UVl3d1dDLzlrRklFcGJDblF3d3dWRmk4RUYzNXBYQ3gxdEZ3ZXpPOEVHRkpKYkNkYjBhd2N3VTVFSGV6SlhDeDF0RndXU0I1RUh0Q3BiQ2RiMGF3VmNrM2tFYjM1WENuZ3d3d1JLMDhVR3picFhDZlJNd3dlM3k3VUhaVkpYQ0M2WTh3UUV6N2tGM2VaWEM4b0Fqd2JldzVrRy9SWlhDQzZZOHdjbnc1a0ZjYXBYQzhvQWp3YVF2NDBHQ1VKWENmaE13d2JocjdVR1hXNVhDVXhrd3dhYmg2MEg5VUpYQzhFQTF3ZTc3NjBFQVlKWEN1dkVxd2NubjZFSE1TcFhDOEVBMXdROEM2VUhQV1pYQ3V2RXF3ZjEzNTBFMlQ1WENVeGt3d2JocjdVRllpSlhDVXhrd3dhYmg2MEc5ZlpYQzhFQTF3ZTc3NjBIQmpKWEN1dkVxd2NubjZFR05kNVhDOEVBMXdROEM2VUdRaHBYQ3V2RXF3ZjEzNTBIM2U1WENVeGt3d1pXakFFSlBtSWpDY2wraFFKdU0rRUh6bHBEQ2pPdnNQNVdqQUVLc3haRENqT3ZzUDV1TStFRlRRb2pDY2wraFFQMFUvMEgrTllYQ1FxckdRTEtTOWtINUJvYkNRcXJHUUJ0TDlVRjJwWWZDK0xUZ1FDcWU3RUdKdkliQytMVGdRTEN6NGtGYW9JWEM0YWkvUUY3bDYwR2ZIWVhDMjBpcVFKaTQ3VUVBdVliQzBxeUxRSmk0N1VGOXVJekNXbGpmUDdoeTRrR003NExDK0FMR1FPcmcya0hRazVEQ2FhSE1RUG9UNDBFRUtwREMrUUxHUUtrLzJrRlhXWVBDYUtITVFFYTY5a0U1ZG9MQzZwOTlRRC9EN0VFUHJZL0NKUW02UUloYjkwR3pzSS9DN0o5OVFQMGg3RUdXY29MQ0pBbTZRR2tUOVVHUVlvUEN4Sy9hUDZ1MDlVRUluWkRDeDYvYVA1V2pBRUxrNFk3Q2pPdnNQNXVNK0VFcnM0N0NpK3ZzUDVXakFFS0h0SWJDY1YraFFQMFUvMEUxVW9QQ1FhckdRQnRMOVVHdXdZWEMrTFRnUUNxZTdFSEEySVRDK0xUZ1FGN2w2MEhYT1lQQzIwaXFRTEN6NGtHUnZJUEM0YWkvUUppNDdVRTQxWVRDMHF5TFFKaTQ3VUcxMUlyQ1dsamZQeGt3NjBFUHJZL0NKUW02UU5TQTRVRUVLcERDK1FMR1FNUk4yVUhRazVEQ2FhSE1RSU9zMkVGWFdZUENhS0hNUUpMZjRFR003NExDK0FMR1FHTEk5VUd6c0kvQzdKOTlRQ0FuOVVFNWRvTEM2cDk5UU5lTzZrR1djb0xDSkFtNlFJVWg5RUVJblpEQ3g2L2FQME9BODBHUVlvUEN4Sy9hUDV0RkdFRVIzcWZDWlhVK3dkSVdGa0hPNWFmQ0NOd3p3UUVHRmtHQzRLZkNXbkkrd1FqdUhVSDQycWZDQ29zNHdRbFlEMEVhN2FmQzV0SXp3VGxIRDBITDU2ZkNOMmsrd2FDK3pVRG5HS2pDSVp3endmK2N6VUNaRTZqQ2NUSSt3VTJuTVVBbldLakNBazB6d1F0a01VRFdVcWpDVWVNOXdRQUFBQUNGVzZqQzVhQTl3UUFBQUFDN1lLakNoQW96d1pSc0ZrSGFBS2pDMnJyN3dHWkRIa0hsOWFmQy9zb0N3UzJzR0VGcS9xZkM3OEQ3d0hKZEZrRVYvS2ZDdFdRSHdjdXREMEVqQ0tqQ2xhajd3S2llRDBGZkE2akNrMXNId1NKcXprRHpNNmpDQ2p2N3dPSkx6a0FyTDZqQ3ppUUh3VlgrTWtBeGM2akN5Wno2d012Qk1rQnJicWpDcmRVR3dRQUFBQUJWZTZqQ0p4ZjZ3QUFBQUFDamRxakM2NUlHd1FoQUhrSFc5S2ZDRWVrRXdSVmFGa0VFKzZmQ3g0SUp3VXliRDBGUUFxakNwWGtKd1NSRnprQWRMcWpDMzBJSndWcTBNa0JjYmFqQ3ZmTUl3UUFBQUFDWGRhakMvckFJd1dUeEhVRUgzS2ZDL1d3MndTNGFGa0hmNXFmQytiMHh3V2RiRDBFbzdxZkMyTFF4d1Z2RnpVRDNHYWpDRVg0eHdiNjBNVUEyV2FqQzhpNHh3UUFBQUFER1lhakNjT3d3d1ZFd0dFRmlsYWZDczJrK3diL1lIVUZHa3FmQ1dYODR3Ymp3RlVIT2w2ZkNwMlkrd2U0eEQwRWNuNmZDaFYwK3dXOXl6VURpeXFmQ3Z5WSt3ZW9PTVVBbENxakNuOWM5d1FBQUFBREdFcWpDZXBVOXdSd3VIa0V4cmFmQ1RMOEN3ZU9XR0VHNXRhZkNpYW43d0VwWEZrRW91S2ZDY0tQN3dJR1lEMEYydjZmQ0twSDd3SkkvemtBODY2ZkNvaVA3d0RPcE1rQjlLcWpDWElYNndBQUFBQUNhTXFqQ1RRRDZ3TUFxSGtFZ3JLZkNXdDBFd1J2Y0hVRlRrNmZDU0dFMndkSVdGc0hPNWFmQ0NOd3p3WnRGR01FUjNxZkNaWFUrd1FFR0ZzR0M0S2ZDV25JK3dRanVIY0g0MnFmQ0NvczR3UWxZRDhFYTdhZkM1dEl6d1RsSEQ4SEw1NmZDTjJrK3dhQyt6Y0RuR0tqQ0lad3p3ZitjemNDWkU2akNjVEkrd1Uybk1jQW5XS2pDQWswendRdGtNY0RXVXFqQ1VlTTl3V1pESHNIbDlhZkMvc29Dd1pSc0ZzSGFBS2pDMnJyN3dDMnNHTUZxL3FmQzc4RDd3SEpkRnNFVi9LZkN0V1FId2N1dEQ4RWpDS2pDbGFqN3dLaWVEOEZmQTZqQ2sxc0h3U0pxenNEek02akNDanY3d09KTHpzQXJMNmpDemlRSHdWWCtNc0F4YzZqQ3laejZ3TXZCTXNCcmJxakNyZFVHd1FoQUhzSFc5S2ZDRWVrRXdSVmFGc0VFKzZmQ3g0SUp3VXliRDhGUUFxakNwWGtKd1NSRnpzQWRMcWpDMzBJSndWcTBNc0JjYmFqQ3ZmTUl3V1R4SGNFSDNLZkMvV3cyd1M0YUZzSGY1cWZDK2IweHdXZGJEOEVvN3FmQzJMUXh3VnZGemNEM0dhakNFWDR4d2I2ME1jQTJXYWpDOGk0eHdWRXdHTUZpbGFmQ3Myayt3Yi9ZSGNGR2txZkNXWDg0d2Jqd0ZjSE9sNmZDcDJZK3dlNHhEOEVjbjZmQ2hWMCt3Vzl5emNEaXlxZkN2eVkrd2VvT01jQWxDcWpDbjljOXdSd3VIc0V4cmFmQ1RMOEN3ZU9XR01HNXRhZkNpYW43d0VwWEZzRW91S2ZDY0tQN3dJR1lEOEYydjZmQ0twSDd3SkkvenNBODY2ZkNvaVA3d0RPcE1zQjlLcWpDWElYNndNQXFIc0VncktmQ1d0MEV3UnZjSGNGVGs2ZkNTR0Uyd2NyakdVRzFXcWZDWlhYMXdKeUJIRUU1TXFqQ0JNTDF3TDFCSEVFbFdLZkN6SHYxd0tjakdrSElOS2pDbXJ2MXdDNFJIRUhERHFqQ2pxdEJ3VnR6R1VFL042ZkNQNFZCd1V6UkcwR3ZOS2ZDZG9oQndUaXpHVUZTRWFqQ1c2aEJ3YzBKRTBGM1BLakNZYWoxd1BESkVrRmhZcWZDSzJMMXdJRlpFa0h1UHFmQ29udEJ3VjZaRWtFQ0dhakN2NTVCd1dMZDBFQ05hcWpDQ2pYMXdLZGQwRUI3a0tmQzJlNzB3TVo4ejBBSWJhZkMrMEZCd1lQOHowQWJSNmpDRldWQndlU1BLMEFwcmFqQ2VJNzB3R3VRS2tBVDA2ZkNRRWowd0FBQUFBQXpzNmpDb3czMHdBQUFBQUQrMktmQ0VNbnp3Sy9PS0VDZXI2ZkNzTzVBd1N2T0tVQ3dpYWpDeUJGQndRQUFBQUFmdHFmQ2hLOUF3UUFBQUFCWGtLakN6TkZBd1JvSElrSFlDNmpDQmIwNndUekhJVUhHTWFmQzY1azZ3Y3FGR1VFUFBhZkNWK28xd2U5ckVrRzhSS2ZDdStBMXdhU2h6MERXY3FmQ0Q2YzF3V3NZS1VCcnRhZkN3MU0xd1FBQUFBRFd1NmZDaVJRMXdXVWpJa0hVVHFmQ1hwTUF3VUpqSWtIcUtLakNlYllBd1RUVEdVRjNWYWZDaEN3RndWaTVFa0VvWGFmQzZDSUZ3WFk4MEVCQmk2ZkNQdWtFd1JKT0trRFh6YWZDOUpVRXdRQUFBQURZMDZmQ2JWWUV3YlVmSWtHclRhZkNqZVVDd1pOZklrSENKNmpDcWdnRHdZVFBHVUZPVktmQ3RYNEh3YW0xRWtIOVc2ZkNGblVId1JnMTBFQVlpcWZDYmpzSHdWUS9La0N1ektmQ0l1Z0d3UUFBQUFDejBxZkNucWdHd2UzS0lVSHZNcWZDdTBjNHdja0tJa0VERGFqQzFXbzR3WG1KR1VFNFBxZkNLcGd6d1o5dkVrSGxSYWZDaTQ0endRYXB6MEFCZEtmQzRsUXp3U2duS1VDWXRxZkNtQUV6d1FBQUFBRDV2S2ZDVnNJeXdhN0VIa0ZZRUtqQ1ZkUTR3WXdOR1VGMUU2akMvZGsrd1NYSUZrSG9GYWpDNTlZK3dlcjNEMEZISGFqQ3NNMCt3Ukl0emtDRVNhakNYSlkrd1lzbk1FQm5pYWpDY1VZK3dRQUFBQUM0a2FqQ1RBUSt3U3AxR1VFZ05LakNGVHo3d01JYUgwRjlLNmpDVHFFQ3diOHZGMEdWTnFqQzlEWDd3SU5mRUVIMVBhakNoaVA3d0VuOHprQXZhcWpDM2JUNndQckZNVUFVcXFqQ0FSWDZ3QUFBQUFEYnNhakM5by81d0YwWEgwRnFLcWpDMThRRXdSVElIa0ZwRWFqQ3pMQTJ3VisvSGtFby9xZkNadEU0d1RvSUdVRklBYWpDRDljK3dkTENGa0c4QTZqQyt0TSt3WmZ5RDBFZEM2akN4TW8rd1c0aXprQlhONmpDYnBNK3dVTVNNRUE1ZDZqQ2dVTSt3UUFBQUFDTGY2akNjd0Urd2RkdkdVSDFJYWpDUHpiN3dITVZIMEZPR2FqQ1hwNEN3VzRxRjBGb0pLakNHREQ3d0ROYUVFSElLNmpDckIzN3dLUHh6a0FFV0tqQ0FhLzZ3TEd3TVVEbGw2akNKQS82d0FBQUFBQ3JuNmpDTzRyNXdBMFNIMEUrR0tqQzY4RUV3Y0xDSGtFOC82ZkMzYTAyd2NDa0hrRk5vNmZDeXNJNHdaN3RHRUZxcHFmQ2NjZyt3VE9vRmtIY3FLZkNXOFUrd2ZyWEQwRStzS2ZDSkx3K3dUYnR6VUIzM0tmQ3pvUSt3YytuTDBCZUhLakM0VFErd1FBQUFBQ2NKS2pDS3ZNOXdUcFZHVUVVeDZmQy94ajd3TlQ2SGtGeHZxZkN3SThDd2M4UEYwR0t5YWZDMkJMN3dKVS9FRUhyMEtmQ2FnRDd3RzI4emtBay9hZkN3Wkg2d0Q1R01VQUlQYWpDNlBINXdBQUFBQUM5UktqQ3IyMzV3SEQzSGtGZXZhZkNTYk1Fd1Nlb0hrRmNwS2ZDUHA4MndXNmZIa0Vna2FmQzJyODR3VXZvR0VFOWxLZkNnY1Urd2VHaUZrR3pscWZDYnNJK3dhblNEMEVSbnFmQ05Mayt3WkRpelVCTnlxZkM0SUUrd1ltU0wwQXVDcWpDOXpFK3dRQUFBQUJzRXFqQ1VQQTl3ZWRQR1VIcXRLZkNKUlA3d0lQMUhrRkdyS2ZDMDR3Q3dYMEtGMEZkdDZmQy9nejd3RVE2RUVHOHZxZkNqL3I2d01heHprRDY2cWZDNVl2NndQRXdNVURjS3FqQ0VPejV3QUFBQUFDUU1xakM4bWY1d0I3eUhrRTJxNmZDWHJBRXdkU2lIa0V5a3FmQ1VwdzJ3Yi9ZSFVGR2txZkNXWDg0d1ZFd0dFRmlsYWZDczJrK3diandGVUhPbDZmQ3AyWSt3ZTR4RDBFY242ZkNoVjArd1c5eXpVRGl5cWZDdnlZK3dlb09NVUFsQ3FqQ245Yzl3UUFBQUFER0VxakNlcFU5d2VPV0dFRzV0YWZDaWFuN3dCd3VIa0V4cmFmQ1RMOEN3VXBYRmtFb3VLZkNjS1A3d0lHWUQwRjJ2NmZDS3BIN3dKSS96a0E4NjZmQ29pUDd3RE9wTWtCOUtxakNYSVg2d0FBQUFBQ2FNcWpDVFFENndNQXFIa0VncktmQ1d0MEV3UnZjSFVGVGs2ZkNTR0Uyd1p5QkhNRTVNcWpDQk1MMXdNcmpHY0cxV3FmQ1pYWDF3TDFCSE1FbFdLZkN6SHYxd0tjakdzSElOS2pDbXJ2MXdGdHpHY0UvTjZmQ1A0VkJ3UzRSSE1IRERxakNqcXRCd1V6Ukc4R3ZOS2ZDZG9oQndUaXpHY0ZTRWFqQ1c2aEJ3YzBKRThGM1BLakNZYWoxd1BESkVzRmhZcWZDSzJMMXdJRlpFc0h1UHFmQ29udEJ3VjZaRXNFQ0dhakN2NTVCd1dMZDBNQ05hcWpDQ2pYMXdLZGQwTUI3a0tmQzJlNzB3TVo4ejhBSWJhZkMrMEZCd1lQOHo4QWJSNmpDRldWQndlU1BLOEFwcmFqQ2VJNzB3R3VRS3NBVDA2ZkNRRWowd0svT0tNQ2VyNmZDc081QXdTdk9LY0N3aWFqQ3lCRkJ3Um9ISXNIWUM2akNCYjA2d1R6SEljSEdNYWZDNjVrNndjcUZHY0VQUGFmQ1YrbzF3ZTlyRXNHOFJLZkN1K0Exd2FTaHo4RFdjcWZDRDZjMXdXc1lLY0JydGFmQ3cxTTF3V1VqSXNIVVRxZkNYcE1Bd1VKaklzSHFLS2pDZWJZQXdUVFRHY0YzVmFmQ2hDd0Z3Vmk1RXNFb1hhZkM2Q0lGd1hZODBNQkJpNmZDUHVrRXdSSk9Lc0RYemFmQzlKVUV3YlVmSXNHclRhZkNqZVVDd1pOZklzSENKNmpDcWdnRHdZVFBHY0ZPVktmQ3RYNEh3YW0xRXNIOVc2ZkNGblVId1JnMTBNQVlpcWZDYmpzSHdWUS9Lc0N1ektmQ0l1Z0d3ZTNLSWNIdk1xZkN1MGM0d2NrS0lzRUREYWpDMVdvNHdYbUpHY0U0UHFmQ0twZ3p3Wjl2RXNIbFJhZkNpNDR6d1FhcHo4QUJkS2ZDNGxRendTZ25LY0NZdHFmQ21BRXp3YTdFSHNGWUVLakNWZFE0d1l3TkdjRjFFNmpDL2RrK3dTWElGc0hvRmFqQzU5WSt3ZXIzRDhGSEhhakNzTTArd1JJdHpzQ0VTYWpDWEpZK3dZc25NTUJuaWFqQ2NVWSt3U3AxR2NFZ05LakNGVHo3d01JYUg4RjlLNmpDVHFFQ3diOHZGOEdWTnFqQzlEWDd3SU5mRU1IMVBhakNoaVA3d0VuOHpzQXZhcWpDM2JUNndQckZNY0FVcXFqQ0FSWDZ3RjBYSDhGcUtxakMxOFFFd1JUSUhzRnBFYWpDekxBMndWKy9Ic0VvL3FmQ1p0RTR3VG9JR2NGSUFhakNEOWMrd2RMQ0ZzRzhBNmpDK3RNK3daZnlEOEVkQzZqQ3hNbyt3VzRpenNCWE42akNicE0rd1VNU01NQTVkNmpDZ1VNK3dkZHZHY0gxSWFqQ1B6Yjd3SE1WSDhGT0dhakNYcDRDd1c0cUY4Rm9KS2pDR0REN3dETmFFTUhJSzZqQ3JCMzd3S1B4enNBRVdLakNBYS82d0xHd01jRGxsNmpDSkEvNndBMFNIOEUrR0tqQzY4RUV3Y0xDSHNFOC82ZkMzYTAyd2NDa0hzRk5vNmZDeXNJNHdaN3RHTUZxcHFmQ2NjZyt3VE9vRnNIY3FLZkNXOFUrd2ZyWEQ4RStzS2ZDSkx3K3dUYnR6Y0IzM0tmQ3pvUSt3YytuTDhCZUhLakM0VFErd1RwVkdjRVV4NmZDL3hqN3dOVDZIc0Z4dnFmQ3dJOEN3YzhQRjhHS3lhZkMyQkw3d0pVL0VNSHIwS2ZDYWdEN3dHMjh6c0FrL2FmQ3daSDZ3RDVHTWNBSVBhakM2UEg1d0hEM0hzRmV2YWZDU2JNRXdTZW9Ic0ZjcEtmQ1BwODJ3VzZmSHNFZ2thZkMycjg0d1V2b0dNRTlsS2ZDZ2NVK3dlR2lGc0d6bHFmQ2JzSSt3YW5TRDhFUm5xZkNOTGsrd1pEaXpjQk55cWZDNElFK3dZbVNMOEF1Q3FqQzl6RSt3ZWRQR2NIcXRLZkNKUlA3d0lQMUhzRkdyS2ZDMDR3Q3dYMEtGOEZkdDZmQy9nejd3RVE2RU1HOHZxZkNqL3I2d01heHpzRDY2cWZDNVl2NndQRXdNY0RjS3FqQ0VPejV3Qjd5SHNFMnE2ZkNYckFFd2RTaUhzRXlrcWZDVXB3MndiL1lIY0ZHa3FmQ1dYODR3VkV3R01GaWxhZkNzMmsrd2Jqd0ZjSE9sNmZDcDJZK3dlNHhEOEVjbjZmQ2hWMCt3Vzl5emNEaXlxZkN2eVkrd2VvT01jQWxDcWpDbjljOXdlT1dHTUc1dGFmQ2lhbjd3Qnd1SHNFeHJhZkNUTDhDd1VwWEZzRW91S2ZDY0tQN3dJR1lEOEYydjZmQ0twSDd3SkkvenNBODY2ZkNvaVA3d0RPcE1zQjlLcWpDWElYNndNQXFIc0VncktmQ1d0MEV3UnZjSGNGVGs2ZkNTR0Uyd2VGTmkwR25vNXpDWnE0TFFHa1loa0dRNFpmQ2l5dC9RR2tZaGtIZUI1dkNqQ3QvUU9GTmkwRmFmWm5DWmE0TFFHV2ZrRUdlOXAzQy94cXVQbVdma0VGUjBKckMvQnF1UHRONFhFRVBGNkRDeHVFR3dObWVoa0gwdDV6Q0lMVDF2OW1laGtGQjNwL0NJTFQxdjlONFhFSEI4SnpDeCtFR3dIakhJMEZ0aDZEQy9ub1R3SGpISTBFZllaM0Mvbm9Ud0JTVkNrQTI3S0RDL25vVHdCU1ZDa0RweFozQy9ub1R3QUFBQUFBMjdLREMvbm9Ud0FBQUFBRHB4WjNDL25vVHdPQXBZejlIdTUzQzh5VXBRTUdwWnovZnNKN0NHS1liUU1HcFp6OUNDSjdDcndJUlFPQXBZei9uWTU3Q1lNa3pRT0FwWXovVi9aN0N5SUlEUU9BcFl6ODZWWjdDdUw3eFA1VFdWVC9aUjUvQ05acllQNVRXVlQ4OW41N0NMbFBEUCs4eVFEOEpqSi9DL2RHdFArOHlRRDlzNDU3Q2hJdVlQOTRUSXovUng1L0NCMU9JUDk0VEl6ODFINS9DZVJobVA2RXYvejdoK0ovQzhCbFRQNkV2L3o1SVVKL0NwSXNvUDlNM3JqNVZIYURDVGw0bFA5TTNyajY1ZEovQ0RxSDFQcGk1TEQ3Sk02RENuak1KUDVpNUxENHdpNS9DcFUyOVBxQWdJTHhmTzZEQ3dtVC9QcUFnSUx6Q2twL0Mwa2VxUGd1K1FMNHdpNS9DcFUyOVBndStRTDdKTTZEQ25qTUpQdzQ2dUw2NWRKL0NEcUgxUGc0NnVMNVZIYURDVGw0bFArNllCTDlJVUovQ3BJc29QKzZZQkwvaCtKL0M4QmxUUC9NVUtMODFINS9DZVJobVAvTVVLTC9SeDUvQ0IxT0lQdzgwUmI5czQ1N0NoSXVZUHc4MFJiOEpqSi9DL2RHdFA3TFhXcjg5bjU3Q0xsUERQN0xYV3IvWlI1L0NOWnJZUCswcWFMODZWWjdDdUw3eFArMHFhTC9WL1o3Q3lJSURRTTZxYkw5Q0NKN0Nyd0lSUU02cWJML2ZzSjdDR0tZYlFPMHFhTDlIdTUzQzh5VXBRTzBxYUwvblk1N0NZTWt6UUxMWFdyOUpjWjNDa2x0QVFMTFhXci9tR1o3QzYvNUtRQTgwUmI4WExaM0NVcjlWUUE4MFJiK3gxWjNDOUdKZ1FQTVVLTDlPOFp6Q1ZuOW9RUE1VS0wvb21aM0N6eUp6UU82WUJMODl3SnpDT09KM1FPNllCTC9ZYUozQzdrS0JRQTQ2dUw3TW01ekNqNmlCUUE0NnVMNWxSSjNDV1BxR1FBdStRTDVZaFp6Q3lDMkZRQXUrUUw3eExaM0NrWCtLUUtBZ0lMekdmWnpDL0YyR1FLQWdJTHhkSnAzQ3pxK0xRSmk1TEQ3eExaM0NrWCtLUUppNUxENVloWnpDeUMyRlFOTTNyajVsUkozQ1dQcUdRTk0zcmo3TW01ekNqNmlCUUtFdi96N1lhSjNDN2tLQlFLRXYvejQ5d0p6Q09PSjNRTjRUSXovb21aM0N6eUp6UU40VEl6OU84WnpDVm45b1FPOHlRRCt4MVozQzlHSmdRTzh5UUQ4WExaM0NVcjlWUUpUV1ZUL21HWjdDNi81S1FKVFdWVDlKY1ozQ2tsdEFRRk9rV2o5N3lKN0NEZHdjUUFReFZqOWNmSjdDRDdzMFFBUXhWaitkRkovQ1cvd0VRUG9HU1QrNVhaL0N1aHpjUDV5ME16L3NvSi9DNlBTeFArc29GeitHMjUvQ3J6T05QdzkwNlQ0akM2REM5YTFlUDFSdG5EN1BMYURDWnl3elB4cDNGejV1UXFEQ1gwNFpQNkFnSUx3ZlNhREM2T2NRUDQ5N0s3NXVRcURDWDA0WlA0NXZwcjdQTGFEQ1p5d3pQMXAyODc0akM2REM5YTFlUC9FcEhMK0cyNS9DcnpPTlA3RzFPTC9zb0ovQzZQU3hQdzhJVHIrNVhaL0N1aHpjUHhzeVc3K2RGSi9DVy93RVFGeWxYNzk3eUo3Q0Rkd2NRQnN5Vzc5Y2ZKN0NEN3MwUUE4SVRyOUdNNTdDQ0tsTFFMRzFPTDhSOEozQ1pieGdRUEVwSEw5NHRaM0NWUjF6UUZwMjg3N1hoWjNDNmdXQlFJNXZwcjRzWTUzQ0dYYUdRSTk3Szc2TVRwM0N5YkdKUUtBZ0lMemFSNTNDeGI2S1FCcDNGejZNVHAzQ3liR0pRRlJ0bkQ0c1k1M0NHWGFHUUE5MDZUN1hoWjNDNmdXQlFPc29Gejk0dFozQ1ZSMXpRSnkwTXo4UjhKM0NaYnhnUVBvR1NUOUdNNTdDQ0tsTFFJV0RERDk3eUo3Q0Rkd2NRQ2hjQ0Q4K2laN0M0YkF3UUNoY0NEKzdCNS9DcGdZSlFJQlMrRDRIUkovQ0h6dnNQK2w4MFQ2QWVwL0NueERLUHpkT256NVRxSi9DRkZDdFB3OGRUajd2eXAvQ3ZKcVhQN201eGoxWTRKL0NrUytLUDFCRHZ6enE2Si9DSXM2RVA2QWdJTHdvNnAvQ1pRV0VQL1N5TDczcTZKL0NJczZFUDEzRDdyMVk0Si9Da1MrS1A0TWhZcjd2eXAvQ3ZKcVhQMEZRcWI1VHFKL0NGRkN0UHlSLzI3NkFlcC9DbnhES1AxVXFBYjhIUkovQ0h6dnNQelpkRGIrN0I1L0NwZ1lKUUtLRUViOTd5SjdDRGR3Y1FEWmREYjgraVo3QzRiQXdRRlVxQWIvelRKN0N3WmxEUUNSLzI3NStGcDdDdjY1VVFFRlFxYjZtNkozQ25BOWpRSU1oWXI0SHhwM0NFdXB0UUYzRDdyMnFzSjNDUlo5MFFQU3lMNzBQcUozQ0sxQjNRS0FnSUx6VHBwM0NnTFIzUUUxQXZ6d1BxSjNDSzFCM1FMbTV4ajJxc0ozQ1JaOTBRQThkVGo0SHhwM0NFdXB0UURkT256Nm02SjNDbkE5alFPbDgwVDUrRnA3Q3Y2NVVRSUJTK0Q3elRKN0N3WmxEUUpQTDlqNlRjcDdDNGk0dlFJbjYvajdmc0o3Q0dLWWJRSlBMOWo0bTc1N0NDeDBJUUJyTjNqNTBLcC9DR1FqclAwVEF1RDdRWDUvQ3A0N0pQelAwaHo1a2pKL0N6cGl0UDB4Q0pENkVyWi9Dd2RLWVB6cjdnejAxd1ovQzVuaU1QLzYxa2pzeXlKL0M5aGVJUDZBZ0lMeTd5Si9DZ3NHSFB4dlF4THd5eUovQzloZUlQNTBFckwwMXdaL0M1bmlNUDhKR09MNkVyWi9Dd2RLWVB6NzJrYjVrakovQ3pwaXRQMTNDd3I3UVg1L0NwNDdKUHpmUDZMNTBLcC9DR1FqclA5NW1BTDhtNzU3Q0N4MElRRkorQkwvZnNKN0NHS1liUU41bUFMK1RjcDdDNGk0dlFEZlA2TDVKTjU3Q0FNaEJRRjNDd3I3cEFaN0M2WVJTUUQ3MmtiNVMxWjNDNm45Z1FNSkdPTDQydEozQ3dlSnFRSjBFckwySm9KM0NRdzl4UUJ2UXhMeUttWjNDN2o5elFLQWdJTHdCbVozQ1BHdHpRQkNxa2p1S21aM0M3ajl6UURyN2d6MkpvSjNDUXc5eFFFeENKRDQydEozQ3dlSnFRRFAwaHo1UzFaM0M2bjlnUUVUQXVEN3BBWjdDNllSU1FCck4zajVKTjU3Q0FNaEJRSlBMOWo3M3laM0NlWXNrUUluNi9qNUNDSjdDcndJUlFKUEw5ajZOUnA3Q1Z2UDZQeHJOM2o3YWdaN0MvTURWUDBUQXVENDN0NTdDLzBlMFB6UDBoejdONDU3Q1lsR1lQMHhDSkQ3cEJKL0Nnb3VEUHpyN2d6MmNHSi9DVm1SdVAvNjFranVZSDUvQ2o2SmxQNkFnSUx3ZUlKL0NpUFZrUHh2UXhMeVlINS9DajZKbFA1MEVyTDJjR0ovQ1ZtUnVQOEpHT0w3cEJKL0Nnb3VEUHo3MmtiN040NTdDWWxHWVAxM0N3cjQzdDU3Qy8wZTBQemZQNkw3YWdaN0MvTURWUDk1bUFMK05ScDdDVnZQNlAxSitCTDlDQ0o3Q3J3SVJRTjVtQUwvM3laM0NlWXNrUURmUDZMNnZqcDNDVXlRM1FGM0N3cjVRV1ozQ1R1RkhRRDcya2I2OExKM0NhTnhWUU1KR09MNmRDNTNDQ2o5Z1FKMEVyTDNwOTV6QyttdG1RQnZReEx6eThKekNScHhvUUtBZ0lMeHE4SnpDcThkb1FCQ3FranZ5OEp6Q1JweG9RRHI3Z3ozcDk1ekMrbXRtUUV4Q0pENmRDNTNDQ2o5Z1FEUDBoejY4TEozQ2FOeFZRRVRBdUQ1UVdaM0NUdUZIUUJyTjNqNnZqcDNDVXlRM1FFZ0taVUFjcDUzQ1lRd3ZRQ0tLYVVBU3BwN0MrNW9lUUNLS2FVQnovWjNDblBjVFFFZ0taVUMwVDU3QzFxODVRRWdLWlVCcy9KN0NVSVlEUUVnS1pVRE9VNTdDazhYeFAvKzJWMEJ4VDUvQ3MvZlNQLysyVjBEV3BwN0NEN0c5UDE0VFFrRDVtNS9DUnZpaVAxNFRRa0JhODU3Q3pyR05QMGYwSkVBSzM1L0NhY3h4UDBmMEpFQnhOcC9DbnoxSFB6bDRBVUFYRnFEQ3NMNHNQemw0QVVCNGJaL0NoakVDUDZQNHNULzhQcURDWGQ3eVBxUDRzVDlobHAvQ3pzS2RQamc3TkQ4cldLRENoNjJ6UGpnN05EK1ByNS9DZ3lVOVBxQWdJTHl0WUtEQ2UxZWVQcUFnSUx3V3VKL0NjM1FTUGtZOE9iK1ByNS9DZ3lVOVBrWThPYjhyV0tEQ2g2MnpQaXQ1dEw5aGxwL0N6c0tkUGl0NXRMLzhQcURDWGQ3eVBuKzRBc0I0YlovQ2hqRUNQMys0QXNBWEZxRENzTDRzUDRzMEpzQnhOcC9DbnoxSFA0czBKc0FLMzUvQ2FjeHhQNlJUUThCYTg1N0N6ckdOUDZSVFE4RDVtNS9DUnZpaVAwZjNXTURXcHA3Q0Q3RzlQMGYzV01CeFQ1L0NzL2ZTUDVCS1pzRE9VNTdDazhYeFA1Qktac0JzL0o3Q1VJWURRR3JLYXNCei9aM0NuUGNUUUdyS2FzQVNwcDdDKzVvZVFKQktac0FjcDUzQ1lRd3ZRSkJLWnNDMFQ1N0MxcTg1UUVmM1dNQVhWSjNDcVJaSlFFZjNXTUN2L0ozQ1RicFRRS1JUUThDUEI1M0NnUlpoUUtSVFE4QW9zSjNDRXJwclFJczBKc0I3eEp6Q1pSOTJRSXMwSnNBU2JaM0NuR0dBUUgrNEFzQnhqWnpDZXJHRFFIKzRBc0FOTnAzQ0pBT0pRQ3Q1dEwrS1pKekNYeHVLUUN0NXRMOGtEWjNDSjIyUFFFWThPYjliUzV6Q2xRNk9RRVk4T2IveDg1ekNRR0NUUUtBZ0lMelVRcHpDQ1dTUFFLQWdJTHh1NjV6Q3pMV1VRRGc3TkQveDg1ekNRR0NUUURnN05EOWJTNXpDbFE2T1FLUDRzVDhrRFozQ0oyMlBRS1A0c1QrS1pKekNYeHVLUURsNEFVQU5OcDNDSkFPSlFEbDRBVUJ4alp6Q2VyR0RRRWYwSkVBU2JaM0NuR0dBUUVmMEpFQjd4SnpDWlI5MlFGNFRRa0Fvc0ozQ0VycHJRRjRUUWtDUEI1M0NnUlpoUVArMlYwQ3YvSjNDVGJwVFFQKzJWMEFYVkozQ3FSWkpRRTcxWWtDdnZaN0NrdEFmUUtqQlhrQVBiWjdDa3hvNVFLakJYa0JVRHAvQ2ZZWUdRTUV4VWtDYlhKL0NDL1RiUHp1SVBVQ3BwWi9DVXgrdVB3QnJJVUJxNXAvQzk0R0ZQMDNKL1QvNkc2RENLdFJIUDUyZHJqLzFRNkRDSzZnVlAranNNRCtzWEtEQ2RWZnRQcUFnSUx3QlphRENDR1RZUHY3dE5iK3NYS0RDZFZmdFBpb2VzYi8xUTZEQ0s2Z1ZQK2trQU1ENkc2RENLdFJIUDBhcklzQnE1cC9DOTRHRlA0UElQc0NwcFovQ1V4K3VQd1J5VThDYlhKL0NDL1RiUCs0QllNQlVEcC9DZllZR1FKTTFaTUN2dlo3Q2t0QWZRTzRCWU1BUGJaN0NreG81UUFSeVU4RElIcDdDVWFkUlFJUElQc0M1MVozQ2ZKRm9RRWFySXNEM2xKM0NYdUI4UU9ra0FNQmpYNTNDTHRhR1FDb2VzYjltTjUzQ21SdU5RUDd0TmIrNUhwM0NIdnVRUUtBZ0lMeGJGcDNDWVVxU1FPanNNRCs1SHAzQ0h2dVFRSjJkcmo5bU41M0NtUnVOUUUzSi9UOWpYNTNDTHRhR1FBQnJJVUQzbEozQ1h1QjhRRHVJUFVDNTFaM0NmSkZvUU1FeFVrRElIcDdDVWFkUlFOc2RUMEN2dlo3Q2t0QWZRR0p5UzBDRWM1N0NGUlEzUUdKeVMwRGJCNS9DbTQwSVFCcGJRRUNuVUovQ09IUGpQeGJhTFVDU2xaL0NsRG00UHhCZkZFQmUwNS9Db25TUlAraWo2VC9yQnFEQ2pUNWlQOHpvb0QrYUxhRENOYlV4UDFzTkl6K1RSYURDajZNVFA2QWdJTHkrVWFEQ1ZHSUVQNGdPS0wrVFJhRENqNk1UUDE5cG83K2FMYURDTmJVeFAyZ2s3TC9yQnFEQ2pUNWlQMUdmRmNCZTA1L0NvblNSUDE4YUw4Q1NsWi9DbERtNFAxNmJRY0NuVUovQ09IUGpQNml5VE1EYkI1L0NtNDBJUUI1ZVVNQ3Z2WjdDa3RBZlFLaXlUTUNFYzU3Q0ZSUTNRRjZiUWNDNktwN0MwdWROUUY4YUw4RFM1WjNDdVlSalFGR2ZGY0QrcDUzQ0t1ZDJRR2drN0w5MGRKM0Mzb2lEUUY5cG83L0JUWjNDWEpxSlFJZ09LTC9KTlozQ1RGeU5RS0FnSUx5eExaM0NMYUtPUUZzTkl6L0pOWjNDVEZ5TlFNem9vRC9CVFozQ1hKcUpRT2lqNlQ5MGRKM0Mzb2lEUUJCZkZFRCtwNTNDS3VkMlFCYmFMVURTNVozQ3VZUmpRQnBiUUVDNktwN0MwdWROUUZSK1NFQzVYcDdDZFBzMFFQa0ZURUFTcHA3Qys1b2VRRlIrU0VCcDdaN0N0VG9JUU9IQ1BVRFpNNS9DVEVqa1AycTNLMEFJZDUvQ2tpRzZQNVMxRWtDMXM1L0NIUlNVUCtjMzV6K0U1cC9DVzJ0b1B4QlZuei9CREtEQzdYQTRQNXQvSVQ5OEpLREMzS3dhUDZBZ0lMeDNNS0RDVXFRTFA5Q0FKcjk4SktEQzNLd2FQNlhWb2IvQkRLREM3WEE0UDJTNDZiK0U1cC9DVzJ0b1A5ajFFOEMxczUvQ0hSU1VQN1gzTE1BSWQ1L0NraUc2UHlRRFA4RFpNNS9DVEVqa1A1aStTY0JwN1o3Q3RUb0lRRVZHVGNBU3BwN0MrNW9lUUppK1NjQzVYcDdDZFBzMFFDUURQOEJKR0o3QzloRkxRTFgzTE1BUzFaM0N1Q1ZnUU5qMUU4QnFtSjNDREN4elFHUzQ2YitkWlozQ3A0MkJRS1hWb2I5Y1A1M0NCSTJIUU5DQUpyK2hKNTNDaUVXTFFLQWdJTHlZSDUzQ0s0aU1RSnQvSVQraEo1M0NpRVdMUUJCVm56OWNQNTNDQkkySFFPYzM1eitkWlozQ3A0MkJRSlMxRWtCcW1KM0NEQ3h6UUdxM0swQVMxWjNDdUNWZ1FPSENQVUJKR0o3QzloRkxRRlIrU0VBYXRwM0NLMWdxUVBrRlRFQnovWjNDblBjVFFGUitTRUROUko3Q3NpNzdQK0hDUFVBNWk1N0NtZ0hQUDJxM0swQnd6cDdDR3Rxa1A1UzFFa0FhQzUvQ3BacDlQK2MzNXovcFBaL0NCZDQ5UHhCVm56OHBaSi9DanVJTlA1dC9JVC9rZTUvQ0pUemdQcUFnSUx6Zmg1L0N0Q3ZDUHRDQUpyL2tlNS9DSlR6Z1BxWFZvYjhwWkovQ2p1SU5QMlM0NmIvcFBaL0NCZDQ5UDlqMUU4QWFDNS9DcFpwOVA3WDNMTUJ3enA3Q0d0cWtQeVFEUDhBNWk1N0NtZ0hQUDVpK1NjRE5SSjdDc2k3N1AwVkdUY0J6L1ozQ25QY1RRSmkrU2NBYXRwM0NLMWdxUUNRRFA4Q3JiNTNDeUc1QVFMWDNMTUI0TEozQ09vSlZRTmoxRThETTc1ekNwNGhvUUdTNDZiOEZ2WnpDNDNkNFFLWFZvYi9CbHB6Q1FEdUNRTkNBSnI4SWY1ekMydk9GUUtBZ0lMeitkcHpDZlRhSFFKdC9JVDhJZjV6QzJ2T0ZRQkJWbnovQmxwekNRRHVDUU9jMzV6OEZ2WnpDNDNkNFFKUzFFa0RNNzV6Q3A0aG9RR3EzSzBCNExKM0NPb0pWUU9IQ1BVQ3JiNTNDeUc1QVFJQStKVUNSNjV6Q2RJcG1RR2QrS0VBbHZwM0NibFZqUUdkK0tFRGhGSjNDOHVkWVFJQStKVURRbEozQ3cvZHdRSUErSlVCMTU1M0NjN05WUUlBK0pVQXpQcDNDRWtaTFFNMmVHMEF3RDU3Q2VaZElRTTJlRzBEb1paM0NWeW8rUVBEOUMwRFBNNTdDY29JOFFQRDlDMENMaXAzQzF4UXlRSERyN1QvcVU1N0NZZXN4UUhEcjdUK2hxcDNDY0g0blFBZXF1ajg2YnA3Q0Jqc3BRQWVxdWovNXhKM0NnYzBlUU93dmdEL1JnWjdDamNVaVFPd3ZnRCtMMkozQ1VGZ1lRTkY0QVQvWGpaN0N1TXNlUU5GNEFUK2I1SjNDWEY0VVFLQWdJTHp2a1o3Q2luTWRRS0FnSUx5cTZKM0NYd1lUUU81NUJyK2I1SjNDWEY0VVFPNTVCci9Yalo3Q3VNc2VRSFd3Z3IrTDJKM0NVRmdZUUhXd2dyL1JnWjdDamNVaVFJOHF2Yi81eEozQ2djMGVRSThxdmI4NmJwN0NCanNwUVBocjhMK2hxcDNDY0g0blFQaHI4TC9xVTU3Q1llc3hRRGsrRGNDTGlwM0MxeFF5UURrK0RjRFBNNTdDY29JOFFCWGZITURvWlozQ1Z5bytRQlhmSE1Bd0Q1N0NlWmRJUU1aK0pzQXpQcDNDRWtaTFFNWitKc0IxNTUzQ2M3TlZRS3UrS2NEaEZKM0M4dWRZUUt1K0tjQWx2cDNDYmxWalFNWitKc0NSNjV6Q2RJcG1RTVorSnNEUWxKM0N3L2R3UUJYZkhNRFN3NXpDWGFaelFCWGZITUFUYlozQ21oTitRRGsrRGNBMm41ekNMN3QvUURrK0RjQjVTSjNDUXhTRlFQaHI4TDhlZjV6Q0RTbUZRUGhyOEw5aUtKM0M0VitLUUk4cXZiL0daSnpDZ29HSlFJOHF2YjhHRHAzQ1FiaU9RSFd3Z3I4M1VaekMrcnVNUUhXd2dyOTMrcHpDd1BLUlFPNTVCcjhtUlp6Q0w3bU9RTzU1QnI5dTdwekN2KytUUUtBZ0lMd1dRWnpDL0dTUFFLQWdJTHhaNnB6Q21wdVVRTkY0QVQ5dTdwekN2KytUUU5GNEFUOG1SWnpDTDdtT1FPd3ZnRDkzK3B6Q3dQS1JRT3d2Z0Q4M1VaekMrcnVNUUFlcXVqOEdEcDNDUWJpT1FBZXF1ai9HWkp6Q2dvR0pRSERyN1Q5aUtKM0M0VitLUUhEcjdUOGVmNXpDRFNtRlFQRDlDMEI1U0ozQ1F4U0ZRUEQ5QzBBMm41ekNMN3QvUU0yZUcwQVRiWjNDbWhOK1FNMmVHMERTdzV6Q1hhWnpRR3NwSlVEdTFaM0NuWDFrUU5BMElrQmJzSjNDMytOd1FOQTBJa0NCKzUzQ2hSZFlRQ1V5R1VDMUlKN0NhOUZMUUljcUNrRHJRNTdDOGpKQVFMVkE2ejlEWTU3Q1VOczFRTWpNdUQ4dGZaN0NYazB0UU5vQmZqK0VrSjdDYWVzbVFGbFNBRDkzbko3Q1BQc2lRS0FnSUx4K29KN0NscVloUUc5VEJiOTNuSjdDUFBzaVFIV0JnYitFa0o3Q2Flc21RRlJOdTc4dGZaN0NYazB0UUQvQjdiOURZNTdDVU5zMVFOQnFDOERyUTU3QzhqSkFRR2h5R3NDMUlKN0NhOUZMUUJoMUk4Q0IrNTNDaFJkWVFLOXBKc0R1MVozQ25YMWtRQmgxSThCYnNKM0MzK053UUdoeUdzQW1pNTNDK2lsOVFOQnFDOER3WjUzQ0oyU0VRRC9CN2IrV1NKM0NBNUNKUUZSTnU3K29McDNDQjllTlFIV0JnYjlSRzUzQzhRZVJRRzlUQmI5bUQ1M0MvZitTUUtBZ0lMeFpDNTNDVEtxVFFGbFNBRDltRDUzQy9mK1NRTm9CZmo5Ukc1M0M4UWVSUU1qTXVEK29McDNDQjllTlFMVkE2eitXU0ozQ0E1Q0pRSWNxQ2tEd1o1M0NKMlNFUUNVeUdVQW1pNTNDK2lsOVFJZUFGRUR1MVozQ25YMWtRR0VFRTBBTHc1M0NZcmhxUUdFRUUwRFI2SjNDalVKZVFOc1NEVUJjQVo3Q1RDcFdRR3NKQVVDTkhaN0N5TnRNUUEzcjNUOG5PWjdDNE1GRFFJbDZyei84VUo3Q1ZPSTdRS3dyY2o4eVk1N0NxZUExUUtNajlUNlFicDdDRFNFeVFLQWdJTHhzY3A3Q0J0c3dRT0FsLzc2UWJwN0NEU0V5UU1rc2Q3OHlZNTdDcWVBMVFCSDdzYi84VUo3Q1ZPSTdRSTlyNEw4bk9aN0M0TUZEUUxGSkFzQ05IWjdDeU50TVFDSlREc0JjQVo3Q1RDcFdRS1ZFRk1EUjZKM0NqVUplUU1qQUZjRHUxWjNDblgxa1FLVkVGTUFMdzUzQ1lyaHFRQ0pURHNDRXFwM0MxZEJ5UUxGSkFzQk5qcDNDU0I5OFFJOXI0TCs0Y3AzQ3M1eUNRQkg3c2IvYVdwM0NvNHlHUU1rc2Q3K21TSjNDZG8ySlFPQWwvNzVLUFozQ0oyMkxRS0FnSUx4dk9aM0NGeENNUUtNajlUNUtQWjNDSjIyTFFLd3JjaittU0ozQ2RvMkpRSWw2cnovYVdwM0NvNHlHUUEzcjNUKzRjcDNDczV5Q1FHc0pBVUJOanAzQ1NCOThRTnNTRFVDRXFwM0MxZEJ5UUxENkQwRC9ycDNDZ0ZSb1FJd3JFVUFsdnAzQ2JsVmpRTEQ2RDBCR3paM0MwRlplUURTbUNrQkk0NTNDM3hOWFFBRnMvajhWL3AzQ1V6eE9RRkpBMnovckdKN0NxbUZGUUVtZHJUOWVNSjdDQTZVOVFKek5iejlVUXA3Q1VMWTNRSlhXOGo2WFRaN0NoZ0EwUUtBZ0lMeHBVWjdDeUwweVFPRFkvTDZYVFo3Q2hnQTBRTXJPZEw5VVFwN0NVTFkzUU5ZZHNMOWVNSjdDQTZVOVFOVEEzYi9yR0o3Q3FtRkZRRWQyQU1BVi9wM0NVenhPUUhubUM4Qkk0NTNDM3hOWFFQZzZFY0JHelozQzBGWmVRTTlyRXNBbHZwM0NibFZqUVBnNkVjRC9ycDNDZ0ZSb1FIbm1DOEQ4bUozQ05KZHZRRWQyQU1BMGZwM0N4VzU0UU5UQTNiOWVZNTNDMjZTQVFOWWRzTC9tUzUzQ1JvT0VRTXJPZEwvdk9aM0NaWHFIUU9EWS9MNnhMcDNDUjFXSlFLQWdJTHplS3AzQ3hmYUpRSlhXOGo2eExwM0NSMVdKUUp6TmJ6L3ZPWjNDWlhxSFFFbWRyVC9tUzUzQ1JvT0VRRkpBMno5ZVk1M0MyNlNBUUFGcy9qODBmcDNDeFc1NFFEU21Da0Q4bUozQ05KZHZRTEQ2RDBDN0JaM0NVK2RkUUl3ckVVRGhGSjNDOHVkWVFMRDZEMEFFSkozQ091bFRRRFNtQ2tBRE9wM0N4S1pNUUFGcy9qL1FWSjNDOHM1RFFGSkEyeituYjUzQ1cvUTZRRW1kclQ4Ymg1M0NYamN6UUp6TmJ6OFptWjNDczBndFFKWFc4ajVYcEozQ0FwTXBRS0FnSUx3anFKM0NwbEFvUU9EWS9MNVhwSjNDQXBNcFFNck9kTDhabVozQ3MwZ3RRTllkc0w4Ymg1M0NYamN6UU5UQTNiK25iNTNDVy9RNlFFZDJBTURRVkozQzhzNURRSG5tQzhBRE9wM0N4S1pNUVBnNkVjQUVKSjNDT3VsVFFNOXJFc0RoRkozQzh1ZFlRUGc2RWNDN0JaM0NVK2RkUUhubUM4QzY3NXpDOFNsbFFFZDJBTURyMUp6Q2ZBRnVRTlRBM2I4WnVwekNPdHgyUU5ZZHNMK2tvcHpDRVpsK1FNck9kTCtwa0p6Q3pFT0NRT0RZL0w1c2haekNyeDZFUUtBZ0lMeWFnWnpDOTcrRVFKWFc4ajVzaFp6Q3J4NkVRSnpOYnorcGtKekN6RU9DUUVtZHJUK2tvcHpDRVpsK1FGSkEyejhadXB6Q090eDJRQUZzL2ovcjFKekNmQUZ1UURTbUNrQzY3NXpDOFNsbFFKaXl0ai9mbTVuQ01OS0tRQUFBQUFDR0U1dkMzYkthUUppeXRqOE5ONXZDTkRTVlFBQUFBQUJaZUpuQzJWQ1FRUHl0SzBBbUFwckN2ZjkxUVB5dEswQlRuWnZDNDJHRlFLT0RnMEFSWDV2Q3FRd0tRS1pOWjBBRU9wekM0a2hhUUtPRGcwQTgrcHpDc05BZVFLWk5aMERYbnByQzI0UkZRS09EZzBDZEs1ekN4NGFWUDZPRGcwRE14cDNDMlE2L1AveXRLMENJaUozQ3hyNEV2NlpOWjBBRWg1N0M1RHdRUC95dEswQzFJNS9DcUxwR3ZxWk5aMERWNjV6Q0JMTjBQcGl5dGovUTdwM0NwcWlCdjVpeXRqLzhpWi9DTEVFd3Z3QUFBQUJURXA3Q1NhT1h2d0FBQUFDRHJaL0NjalpjdjVpeXRyLzhpWi9DTEVFd3Y1aXl0ci9RN3AzQ3BxaUJ2L3l0SzhDMUk1L0NxTHBHdnZ5dEs4Q0lpSjNDeHI0RXY2Wk5aOEFFaDU3QzVEd1FQNlpOWjhEVjY1ekNCTE4wUHFPRGc4QTgrcHpDc05BZVFLT0RnOENkSzV6Q3g0YVZQNk9EZzhETXhwM0MyUTYvUDZPRGc4QVJYNXZDcVF3S1FLWk5aOEFFT3B6QzRraGFRS1pOWjhEWG5wckMyNFJGUUppeXRyOE5ONXZDTkRTVlFQeXRLOEFtQXByQ3ZmOTFRUHl0SzhCVG5adkM0MkdGUUppeXRyL2ZtNW5DTU5LS1FBQUFBQURuT0p2Q2dhU2JRSml5dHI5dFhKdkMyaVdXUUppeXRqOXRYSnZDMmlXV1FQeXRLMEN6d3B2Q2lGT0dRS1pOWjBCb1g1ekNNQ3hjUUtPRGcwQ2ZINTNDL2JNZ1FLT0RnMEF0N0ozQ2NkWENQNlpOWjBCa3JKN0NEc29YUC95dEswQVhTWi9DOG9Vb3ZwaXl0ajllcjUvQytMTW92d0FBQUFEazBwL0NMNmxVdjVpeXRyOWVyNS9DK0xNb3YveXRLOEFYU1ovQzhvVW92cVpOWjhCa3JKN0NEc29YUDZPRGc4QXQ3SjNDY2RYQ1A2T0RnOENmSDUzQy9iTWdRS1pOWjhCb1g1ekNNQ3hjUVB5dEs4Q3p3cHZDaUZPR1FBQUFBQUJUcUp2Q0ZiK2NRSWtIdEw5VXk1dkMrRlNYUUlrSHREOVV5NXZDK0ZTWFFBWDNLRURaTDV6Q1JjaUhRTFk2WTBENnlKekNsVEJnUUpuK2dFQlhnNTNDcVljbVFKbitnRURWU0o3Q1o5dlNQN1k2WTBBekE1L0NFeE0vUHdYM0tFQlVuSi9DKzZYSk80a0h0RC9aQUtEQ3ZxVDF2Z0FBQUFEYUk2RENPaU1tdjRrSHRML1pBS0RDdnFUMXZnWDNLTUJVbkovQys2WEpPN1k2WThBekE1L0NFeE0vUDVuK2dNRFZTSjdDWjl2U1A1bitnTUJYZzUzQ3FZY21RTFk2WThENnlKekNsVEJnUUFYM0tNRFpMNXpDUmNpSFFBQUFBQUNTUFp6Q09nQ1dRRHl3cHIvNlhaekMxUHlRUUR5d3BqLzZYWnpDMVB5UVFEaGtHMEMydVp6Q0xjeUNRQXpjVGtENlFKM0NGcjliUU5QS2FFQVkzcDNDaWlJclFOUEthRUJJZ0o3Q09lcnhQd3pjVGtCbkhaL0NJN0dRUHpka0cwQ3JwSi9DWHZyelBqeXdwajlsQUtEQ2tINEhQUUFBQUFET0lLREMzQm45dlR5d3ByOWxBS0RDa0g0SFBUZGtHOENycEovQ1h2cnpQZ3pjVHNCbkhaL0NJN0dRUDlQS2FNQklnSjdDT2VyeFA5UEthTUFZM3AzQ2lpSXJRQXpjVHNENlFKM0NGcjliUURoa0c4QzJ1WnpDTGN5Q1FFbldQMEJUblp2QzQyR0ZRUE4xZTBBRU9wekM0a2hhUUVuV1AwQW1BcHJDdmY5MVFQTjFlMERYbnByQzI0UkZRTXFYalVETXhwM0MyUTYvUC9OMWUwQUVoNTdDNUR3UVA4cVhqVUNkSzV6Q3g0YVZQL04xZTBEVjY1ekNCTE4wUHZOMWU4QUVoNTdDNUR3UVAvTjFlOERWNjV6Q0JMTjBQc3FYamNDZEs1ekN4NGFWUDhxWGpjRE14cDNDMlE2L1AvTjFlOEFFT3B6QzRraGFRUE4xZThEWG5wckMyNFJGUUVuV1A4QW1BcHJDdmY5MVFFbldQOEJUblp2QzQyR0ZRUHdIRkVGVG5adkM0MkdGUVB3SEZFRUVPcHpDNGtoYVFQd0hGRUVtQXByQ3ZmOTFRUHdIRkVIWG5wckMyNFJGUVB3SEZFSE14cDNDMlE2L1Avd0hGRUVFaDU3QzVEd1FQL3dIRkVHZEs1ekN4NGFWUC93SEZFSFY2NXpDQkxOMFB2d0hGTUVFaDU3QzVEd1FQL3dIRk1IVjY1ekNCTE4wUHZ3SEZNR2RLNXpDeDRhVlAvd0hGTUhNeHAzQzJRNi9QL3dIRk1FRU9wekM0a2hhUVB3SEZNSFhucHJDMjRSRlFQd0hGTUVtQXByQ3ZmOTFRUHdIRk1GVG5adkM0MkdGUUxqclpVR0pPSnZDNDJHRlFManJaVUU2MVp2QzRraGFRTGpyWlVGY25abkN2ZjkxUUxqclpVRU5PcHJDMjRSRlFManJaVUVDWXAzQzJRNi9QN2pyWlVFNUlwN0M0endRUDdqclpVSFR4cHZDeDRhVlA3anJaVUVMaDV6Q0JMTjBQcmpyWmNFNUlwN0M0endRUDdqclpjRUxoNXpDQkxOMFByanJaY0hUeHB2Q3g0YVZQN2pyWmNFQ1lwM0MyUTYvUDdqclpjRTYxWnZDNGtoYVFManJaY0VOT3ByQzI0UkZRTGpyWmNGY25abkN2ZjkxUUxqclpjR0pPSnZDNDJHRlFNcHVoMEcvMDVyQzQyR0ZRTXB1aDBGd2NKdkM0a2hhUU1wdWgwR1JPSm5DdmY5MVFNcHVoMEZEMVpuQzI0UkZRTXB1aDBFMy9aekMyUTYvUDhwdWgwRnZ2WjNDNHp3UVA4cHVoMEVKWXB2Q3g0YVZQOHB1aDBGQklwekNBN04wUHNwdWg4RnZ2WjNDNHp3UVA4cHVoOEZCSXB6Q0E3TjBQc3B1aDhFSllwdkN4NGFWUDhwdWg4RTMvWnpDMlE2L1A4cHVoOEZ3Y0p2QzRraGFRTXB1aDhGRDFabkMyNFJGUU1wdWg4R1JPSm5DdmY5MVFNcHVoOEcvMDVyQzQyR0ZRRSt4aUVFckNwckM0MkdGUUUreGlFSGRwcHJDNGtoYVFFK3hpRUgvYnBqQ3ZmOTFRRSt4aUVHdkM1bkMyNFJGUUdPN2pVR2xNNXpDMkE2L1AyTzdqVUhjODV6QzR6d1FQMk83alVGMW1KckN4NGFWUDJPN2pVR3RXSnZDQWJOMFBtTzdqY0hjODV6QzR6d1FQMk83amNHdFdKdkNBYk4wUG1PN2pjRjFtSnJDeDRhVlAyTzdqY0dsTTV6QzJBNi9QMCt4aU1IZHBwckM0a2hhUUUreGlNR3ZDNW5DMjRSRlFFK3hpTUgvYnBqQ3ZmOTFRRSt4aU1FckNwckM0MkdGUUowdnVFRThFWkxDL29NTVFITnF0a0hiTnBMQ2N3b0dRREF4dVVGQkJKTENZbXdLUU40UnVrSHUrSkhDTFprSVFBWHV1a0U2K1pIQzF2ZjlQMXZQdWtGZUNwTEM4d25wUC9tU3VVRWVMSkxDZ0xmVlA3Q010MEZ1VHBMQ0J1TFNQMjBmdGtIUFdaTENRSHJpUHhMSHRVR01VSkxDbU1IMlA1MHZ1RUYwVEpMQy9vTU1RSE5xdGtFVGNwTENjd29HUURBeHVVRjRQNUxDWW13S1FONFJ1a0VsTkpMQ0xaa0lRQVh1dWtGd05KTEMxdmY5UDF2UHVrR1ZSWkxDOHducFAvbVN1VUZWWjVMQ2dMZlZQN0NNdDBHbGlaTENCdUxTUDIwZnRrRUdsWkxDUUhyaVB4TEh0VUhEaTVMQ21NSDJQOGhZdEVFZW1KTENyK01XUU9YdHQwSDVTNUxDTVA0alFOKzl1MEhKR3BMQ254QWNRQ3ozdVVHME1aTENMY0lmUU1ESnZVRjhHNUxDNEM4RlFCbDd2VUZ4UjVMQ0FiVFVQK3ZOdWtHSmtKTEN3dHVxUDVmTnRrRloxSkxDNFVHbFA1TzJzMEg5N0pMQ3B3ZkhQLzdUc2tGQTFaTENMUWo3UCtYdHQwRU1kSlBDTVA0alFNaFl0RUV4d0pQQ3IrTVdRQ3ozdVVIR1daUENMY0lmUU4rOXUwSGJRcFBDbnhBY1FNREp2VUdRUTVQQzRDOEZRQmw3dlVHRWI1UENBYlRVUCt2TnVrR2J1SlBDd3R1cVA1Zk50a0ZzL0pQQzRVR2xQNU8yczBFUUZaVENxQWZIUC83VHNrRlIvWlBDTGdqN1AzcFF1RUZqM0pQQzNjWUFRRWx6dDBIQTdwUENvVHY3UHpUT3VFRU0xcFBDM29ML1A5ODd1VUdGMEpQQ3lycjlQeXFBdVVHZTBKUEM5c1AzUDN0NXVVRloxSlBDMlRUelAzNzF1RUZ1NHBQQ1d5WHJQenJzdDBIKzg1UENITExwUDkxVHQwRzgrSlBDZnpQd1A1MUF0MEc0OXBQQ1VKNzBQOVpYMjBHOS80dkN5Y2RlUU1udTJFSDRNb3pDeFBaVlFPZUUzRUdSOEl2Q3VsVmNRSUhvM1VHbDNvdkNRSEpaUUVjVTMwRU0zNHZDN1ZwTVFJUHEza0ZqOW92Q0dCcytRTGM3M1VGWEpJekNjL013UVB0NTJrRVFVNHpDZmdVdlFLR0kyRUdQWW96Q2c2TTVRRkVRMkVIelZZekM4bkZIUU5aWDIwRmVVSXpDeWNkZVFNbnUyRUdhZzR6Q3hQWlZRT2VFM0VFeVFZekN1bFZjUUlIbzNVRkdMNHpDUUhKWlFFY1UzMEd0TDR6QzdWcE1RSVBxM2tFRVI0ekNHQnMrUUxjNzNVSDVkSXpDYy9Nd1FQdDUya0d5bzR6Q2ZnVXZRS0dJMkVFd3M0ekNnNk01UUZFUTJFR1Rwb3pDOG5GSFFKRWQxa0ZtdDR6QzYrZHNRRmYrMmtHNFQ0ekNuYjkrUUV3djRFRzlESXpDRS9SelFLTmYzVUVETVl6Q2w4eDVRS1Q0NGtHeURZekNLTTFVUUlxTjRrR05TWXpDeFVJd1FKRG8za0VUcll6Q2g4VVRRTWgxMlVGckNZM0NUdlVQUUxCQTFVSDRLbzNDby9NbVFDZ00xRUdqQ28zQ0tWdEtRRmYrMmtIZTRvM0NucjkrUUpFZDFrR05TbzdDN09kc1FLTmYzVUVweEkzQ2w4eDVRRXd2NEVIbG40M0NFL1J6UUtUNDRrSFpvSTNDS2MxVVFJcU40a0cwM0kzQ3hrSXdRSkRvM2tFNlFJN0NoOFVUUU1oMTJVR1JuSTdDVHZVUFFMQkExVUVmdm83Q28vTW1RQ2dNMUVISm5ZN0NLVnRLUUplRTIwSHpjSTdDM010T1FHZFgya0gwaVk3Q00zNUtRSW9YM0VHS2FZN0NScHBOUUJ6RjNFSExZSTdDVmpGTVFCa2kzVUhyWUk3QzBpRklRQUFaM1VFQVpvN0NRQWRGUUVobDNFRXNlWTdDWjRvL1FCWDgya0VXa1k3Q21JMCtRSnNzMmtHTWw0N0NjZnRDUUdjUzJrSE9sSTdDWFAxRlFFaU5pRUhMV1p6QzB0cTl2MGlOaUVFWWdKL0MwZHE5djRXWmZrRTJRNXJDTEl1ZlFFK0xoRUdxbFpmQzlaQ0tRSVdaZmtIcEhKZkNMSXVmUUUrTGhFSDN1NXJDOVpDS1FCdmlZa0dIYTVyQ1ZwK3BRQnZpWWtFNlJaZkNWcCtwUUpnY0lFRjU1SnJDWWlTc1FKZ2NJRUV0dnBmQ1lpU3NRUENXRWtET0RwakNiS211UUFBQUFBQWJOWnZDYkttdVFQQ1dFa0FiTlp2Q2JLbXVRQUFBQUFET0RwakNiS211UUJVWXpFQVg1SmZDdjFPdFFCVVl6RUJsQ3B2Q3YxT3RRR2tZaHNHUTRaZkNpeXQvUU9GTmk4R25vNXpDWnE0TFFHa1loc0hlQjV2Q2pDdC9RT0ZOaThGYWZabkNaYTRMUUdXZmtNR2U5cDNDL3hxdVBtV2ZrTUZSMEpyQy9CcXVQdG1laHNIMHQ1ekNJTFQxdjlONFhNRVBGNkRDeHVFR3dObWVoc0ZCM3AvQ0lMVDF2OU40WE1IQjhKekN4K0VHd0hqSEk4RnRoNkRDL25vVHdIakhJOEVmWVozQy9ub1R3QlNWQ3NBMjdLREMvbm9Ud0JTVkNzRHB4WjNDL25vVHdFaU5pTUhMV1p6QzB0cTl2MGlOaU1FWWdKL0MwZHE5djArTGhNR3FsWmZDOVpDS1FJV1pmc0UyUTVyQ0xJdWZRSVdaZnNIcEhKZkNMSXVmUUUrTGhNSDN1NXJDOVpDS1FCdmlZc0dIYTVyQ1ZwK3BRQnZpWXNFNlJaZkNWcCtwUUpnY0lNRjU1SnJDWWlTc1FKZ2NJTUV0dnBmQ1lpU3NRUENXRXNET0RwakNiS211UVBDV0VzQWJOWnZDYkttdVFCVVl6TUFYNUpmQ3YxT3RRQlVZek1CbENwdkN2MU90UUI0RHlNQTBQcHZDSEthbVFHYW9EOEFPYUp2QzZ1cW5RTkxvSE1FTEdadkN2WVdsUUFBQUFBQU9hSnZDNnVxblFIZFlYc0dEb3ByQ2ppQ2pRUG1CZWNFQmU1ckMyWXVaUUsva2djRlg4WnJDN0pxRlFOaHBnOEc1TzV2Q09WVjJRSmp0ZzhGWStaL0NqQWZpdnlMU2hjRVJuWi9DaXZDc3YrNjZqY0YxRzU3Q2NLYkRQb25QQjhEbUFhSENPMjBJd095QUlNRWhuNkRDTzIwSXdBQUFBQURtQWFIQ08yMEl3QUlRV01FRE1hRENzT2I0djZTRWlNRkh6NXpDbDR3SVFHYW9EMEFPYUp2QzZ1cW5RQjREeUVBMFBwdkNIS2FtUU5Mb0hFRUxHWnZDdllXbFFIZFlYa0dEb3ByQ2ppQ2pRUG1CZVVFQmU1ckMyWXVaUUsva2dVRlg4WnJDN0pxRlFOaHBnMEc1TzV2Q09WVjJRQ0xTaFVFUm5aL0NpdkNzdjVqdGcwRlkrWi9DakFmaXYrNjZqVUYxRzU3Q2NLYkRQb25QQjBEbUFhSENPMjBJd095QUlFRWhuNkRDTzIwSXdBSVFXRUVETWFEQ3NPYjR2NlNFaUVGSHo1ekNsNHdJUUI0RHlNQjY0WmpDSEthbVFHYW9EOEJWQzVuQzZlcW5RTkxvSE1GUnZKakN2SVdsUUFBQUFBQlZDNW5DNmVxblFIZFlYc0hKUlpqQ2ppQ2pRR2FvRDBCVkM1bkM2ZXFuUVBtQmVjRkhIcGpDMll1WlFLL2tnY0dkbEpqQzdKcUZRTmhwZzhILzNwakNPRlYyUUtTRWlNR05jcHJDbDR3SVFKanRnOEdlbkozQ2pBZml2eUxTaGNGWFFKM0NpL0Nzdis2NmpjRzd2cHZDYnFiRFBnSVFXTUZLMUozQ3NPYjR2NG5QQjhBc3BaN0NPMjBJd095QUlNRm9RcDdDUEcwSXdBQUFBQUFzcFo3Q08yMEl3SW5QQjBBc3BaN0NPMjBJd0I0RHlFQjY0WmpDSEthbVFOTG9IRUZSdkpqQ3ZJV2xRSGRZWGtISlJaakNqaUNqUVBtQmVVRkhIcGpDMll1WlFLL2tnVUdkbEpqQzdKcUZRTmhwZzBILzNwakNPRlYyUUtTRWlFR05jcHJDbDR3SVFDTFNoVUZYUUozQ2kvQ3N2NWp0ZzBHZW5KM0NqQWZpdis2NmpVRzd2cHZDYnFiRFBnSVFXRUZLMUozQ3NPYjR2K3lBSUVGb1FwN0NQRzBJd0U0MlcwSFhWSmJDYytpT3dmd0hsRUZkSlpYQ01FZU93VTQyVzBIWFZKYkNNRWVPd2Z3SGxFRmRKWlhDYytpT3daTlVHa0hHdFpiQ2MraU93Wk5VR2tIR3RaYkNNRWVPd2Jybm0wRWs1cFRDTUVlT3dicm5tMEVrNXBUQ2MraU93ZXR4dEVIZlA1UENNRWVPd2V0eHRFSGZQNVBDYytpT3dXblcwRUZZQUpIQ01FZU93V25XMEVGWUFKSENjK2lPd2ZHYjYwRXpiWTdDdDRtUHdmR2I2MEV6Ylk3QytTcVF3UlNWQ2tCbEJwZkNjK2lPd1JTVkNrQmxCcGZDTUVlT3dRQUFBQUJsQnBmQ2MraU93UUFBQUFCbEJwZkNNRWVPd1FBQUFBQnBpWkxDUkYycHdUYWxBa0RHdDVQQ1JGMnB3UUFBQUFER3Q1UENSRjJwd1RhbEFrQnBpWkxDUkYycHdld3B4MEZkZzR6Q1JGMnB3ZENjNEVHVkhvdkNSWGFud2V3cHgwRzZzWTNDUkYycHdkQ2M0RUU0OEluQ1JYYW53Y2dJcUVIa3dvN0NSRjJwd2NnSXFFRkI4WS9DUkYycHdWazJrVUVwYVpEQ1JGMnB3Vmsya1VHR2w1SENSRjJwd1lsT0QwRW5aNVBDUkYycHdZbE9EMEhLT0pMQ1JGMnB3YlRqaVVGaHFKRENSRjJwd2JUamlVRysxcEhDUkYycHdlZE9URUU0QnBQQ1JGMnB3ZWRPVEVIYjE1SENSRjJwd2V1M2kwRnRiNUxDMnBla3dmditUa0htbnBQQzJwZWt3WGRMRVVIVi81UEMycGVrd1FJa2swRTBNSkxDMnBla3dhUVRCRUIxVUpUQzJaZWt3VlN6N2tFTWpwWENsUmN3d2M5LzdFSGtmcFhDbjNZM3dXR2w3RUZlbEpYQ2piZ293VmMrNkVFTWRwWENuM1kzd2VoajZFR0RpNVhDamJnb3dXTXc1a0ZhZkpYQ2xSY3d3VlN6N2tHc0twYkNsUmN3d2M5LzdFR0RHNWJDbjNZM3dXR2w3RUg5TUpiQ2piZ293VmMrNkVHcUVwYkNuM1kzd2VoajZFRWlLSmJDamJnb3dXTXc1a0g2R0piQ2xSY3d3Vzg3N0VHZU9aYkNJYk12d2NCTzYwRS9NNWJDc01zeXdZbGU2MEZFUEpiQ2xKb3N3UzZGNlVHSEw1YkNzTXN5d2ZXVTZVR05PSmJDbEpvc3dVZW82RUV1TXBiQ0liTXZ3Y0JGcWtIdmlaREMycGVrd1lub3lFRm9TbzdDMnBla3dZVDM0VUhaaG92QzJwZWt3UUFBQUFCMVVKVEMyWmVrd1lUMzRVRXNNSXJDMnBla3dmR2I2MEdGRm8zQytTcVF3VE05N0VHRkZvM0NGVG1Qd2JyeGowRXcwSlBDeVpHWndjUTBWVUdyLzVUQ3laR1p3VmZqRlVHWllKWEN5Wkdad1p1WWwwSDNrSlBDeVpHWndVVmlCMEE0c1pYQ3laR1p3WlZ4cjBHeTZwSEN5Wkdad1d2d3pFRXNxNC9DeVpHWndiNHI1MEdBRjQzQ3laR1p3UUFBQUFBNHNaWEN5Wkdad2ZCNzhFR3FYNVhDd0EyVFBJNXAwa0VUM0pyQ1hKajh2aW81OGtGRTlKVEN6ZE5LdnZPVTBrSEU3SnJDY091RXZyb2ZBVUpXYW8vQzNjRFdQM21QQWtLVW5ZN0N6S25JUC9aMXRrRVVCWjNDaWxWaXY3Rk91RUdYOUp6Q2gzNGd2NTlhcFVHSUZwN0Njc2VQdnhzNnFFR2o5WjNDZXd0YXY1OWFwVUdlMnAzQ3ZiRTd2eHM2cUVGUnZaM0NkVmo0dnA5YXBVRXI2SnpDaDJGWVB4czZxRUZyMlp6Q2JxaC9QelhZcGtIbWtwdkNoVmN0UU0yZ3FVR2ZtSnZDbndFd1FEQmtxRUdZM3BuQ09vdVVRQWNWcTBGLy9wbkM2U21TUUJabXFVR3NtNW5DUGF1ZVFITUhyRUdXdjVuQ1phNmJRRUFzcmtFSVY1akNTQUsyUUVpRXNFRnNqcGpDOEo2eFFPTit2MEdqcFpIQ3lUN1VRTmZNd0VIVlE1TENBd3ZPUUpEWDIwRVlZWW5DSit6cVFCNXkyMEZJZm9yQ0QxempRUEdJN0VIeVRvYkNKK3pxUUJnajYwRk9tNGZDRDF6alFHTkM4VUhXaklYQ3daN3FRUGlUNzBIWDVJYkNUaFBqUUhGZCtFR2djb1RDdGhub1FPSkI5a0dRMjRYQytMVGdRQjFoQVVJdnVvSENlbVhNUUlJREFFTG9USVBDUWFyR1FIbVBBa0txZG9YQ1NibWtRTG9mQVVJQTBJYkNjVitoUUhtUEFrSUNKWTdDc2o3Z1A3b2ZBVUwvK0k3Q2pPdnNQNVdqQUVLSHRJYkNjVitoUVAwVS8wRTFVb1BDUWFyR1FFQXNya0ZuQnBqQ1NBSzJRT04rdjBFQ1ZaSEN5VDdVUUVBc3JrRzZNSlhDU0FLMlFPTit2MEZXZjQ3Q3lUN1VRSkRYMjBGMkVJbkNKK3pxUUpEWDIwSEtPb2JDSit6cVFCR1o3RUZjQkliQ2FJdnFRRE1xN1VFZVpZUENtU1RuUUNNaThVRk9TWVhDZkh6cFFPRC83MEdPNllMQ0VFamZRQkV0K0VFWkw0VENzSmJtUUtwNTlrRmF6NEhDZHZ2WVFQclBBRUl2dW9IQ2VtWE1RSTFyOTBFdnVvSENlbVhNUUZiK0FVS3Fkb1hDU2Jta1FFYkkrVUdxZG9YQ1NibWtRRmIrQVVJQ0pZN0NzajdnUDBiSStVRUNKWTdDc2o3Z1AxYitBVUtVblk3Q3pLbklQMGJJK1VHVW5ZN0N6S25JUDBaSDhVRUQxSlRDemROS3ZrVEc2RUcvc1pQQ3o5Tkt2bzVwMGtGeWk1ckNYWmo4dm81cDBrSEZ0WmZDWDVqOHZ2WjF0a0Z6dEp6Q2lsVml2L1oxdGtISDNwbkNpMVZpdjU5YXBVSG94WjNDY3NlUHY1OWFwVUU3OEpyQ2M4ZVB2NTlhcFVIOWlaM0N2YkU3djU5YXBVRlF0SnJDdnJFN3Y1OWFwVUdMbDV6Q2gyRllQNTlhcFVIZndabkNoV0ZZUHpYWXBrRkZRcHZDaEZjdFFEWFlwa0daYkpqQ2hGY3RRREJrcUVINGpabkNPb3VVUURCa3FFRkx1SmJDT291VVFCWm1xVUVMUzVuQ1BhdWVRQlptcVVGZmRaYkNQS3VlUUk1cDBzRVQzSnJDWEpqOHZ2Qjc4TUdxWDVYQ3dBMlRQQ281OHNGRTlKVEN6ZE5LdnZPVTBzSEU3SnJDY091RXZyb2ZBY0pXYW8vQzNjRFdQM21QQXNLVW5ZN0N6S25JUC9aMXRzRVVCWjNDaWxWaXY3Rk91TUdYOUp6Q2gzNGd2NTlhcGNHSUZwN0Njc2VQdnhzNnFNR2o5WjNDZXd0YXY1OWFwY0dlMnAzQ3ZiRTd2eHM2cU1GUnZaM0NkVmo0dnA5YXBjRXI2SnpDaDJGWVB4czZxTUZyMlp6Q2JxaC9QelhZcHNIbWtwdkNoVmN0UU0yZ3FjR2ZtSnZDbndFd1FEQmtxTUdZM3BuQ09vdVVRQWNWcThGLy9wbkM2U21TUUJabXFjR3NtNW5DUGF1ZVFITUhyTUdXdjVuQ1phNmJRRUFzcnNFSVY1akNTQUsyUUVpRXNNRnNqcGpDOEo2eFFPTit2OEdqcFpIQ3lUN1VRTmZNd01IVlE1TENBd3ZPUUpEWDI4RVlZWW5DSit6cVFCNXkyOEZJZm9yQ0QxempRUEdJN01IeVRvYkNKK3pxUUJnajY4Rk9tNGZDRDF6alFHTkM4Y0hXaklYQ3daN3FRUGlUNzhIWDVJYkNUaFBqUUhGZCtNR2djb1RDdGhub1FPSkI5c0dRMjRYQytMVGdRQjFoQWNJdnVvSENlbVhNUUlJREFNTG9USVBDUWFyR1FIbVBBc0txZG9YQ1NibWtRTG9mQWNJQTBJYkNjVitoUUhtUEFzSUNKWTdDc2o3Z1A3b2ZBY0wvK0k3Q2pPdnNQNVdqQU1LSHRJYkNjVitoUVAwVS84RTFVb1BDUWFyR1FFQXNyc0ZuQnBqQ1NBSzJRT04rdjhFQ1ZaSEN5VDdVUUVBc3JzRzZNSlhDU0FLMlFPTit2OEZXZjQ3Q3lUN1VRSkRYMjhGMkVJbkNKK3pxUUpEWDI4SEtPb2JDSit6cVFCR1o3TUZjQkliQ2FJdnFRRE1xN2NFZVpZUENtU1RuUUNNaThjRk9TWVhDZkh6cFFPRC83OEdPNllMQ0VFamZRQkV0K01FWkw0VENzSmJtUUtwNTlzRmF6NEhDZHZ2WVFQclBBTUl2dW9IQ2VtWE1RSTFyOThFdnVvSENlbVhNUUZiK0FjS3Fkb1hDU2Jta1FFYkkrY0dxZG9YQ1NibWtRRmIrQWNJQ0pZN0NzajdnUDBiSStjRUNKWTdDc2o3Z1AxYitBY0tVblk3Q3pLbklQMGJJK2NHVW5ZN0N6S25JUDBaSDhjRUQxSlRDemROS3ZrVEc2TUcvc1pQQ3o5Tkt2bzVwMHNGeWk1ckNYWmo4dm81cDBzSEZ0WmZDWDVqOHZ2WjF0c0Z6dEp6Q2lsVml2L1oxdHNISDNwbkNpMVZpdjU5YXBjSG94WjNDY3NlUHY1OWFwY0U3OEpyQ2M4ZVB2NTlhcGNIOWlaM0N2YkU3djU5YXBjRlF0SnJDdnJFN3Y1OWFwY0dMbDV6Q2gyRllQNTlhcGNIZndabkNoV0ZZUHpYWXBzRkZRcHZDaEZjdFFEWFlwc0daYkpqQ2hGY3RRREJrcU1INGpabkNPb3VVUURCa3FNRkx1SmJDT291VVFCWm1xY0VMUzVuQ1BhdWVRQlptcWNGZmRaYkNQS3VlUU9ELzcwRnkyNFBDRUVqZlFCc0Y4VUZzL29YQ1AzZm9RSVlCK0VFMjVJVENYRHJsUUtwNTlrRTl3WUxDZHZ2WVFDTWk4VUV5TzRiQ2ZIenBRQkV0K0VIOUlJWENzSmJtUURNcTdVRURWNFRDbVNUblFKV243RUVoczRiQ1VqVHFRQkdaN0VGQjlvYkNhSXZxUUpEWDIwR3VMSWZDSit6cVFKRFgyMEhKdVluQ0orenFRSkRYMjBGYUFvckNKK3pxUU9OK3YwRTVjWS9DeVQ3VVFPTit2MEZWL3BIQ3lUN1VRT04rdjBIbVJwTEN5VDdVUUVBc3JrR2ZJcGJDU0FLMlFFQXNya0c3cjVqQ1NBSzJRRUFzcmtGTCtKakNTQUsyUUJabXFVRkRaNWZDUGF1ZVFCWm1xVUZlOUpuQ1BhdWVRQlptcVVIdlBKckNQYXVlUURCa3FFRXdxcGZDT291VVFEQmtxRUZLTjVyQ09vdVVRREJrcUVIYmY1ckNPb3VVUURYWXBrRjlYcG5DaEZjdFFEWFlwa0dZNjV2Q2hWY3RRRFhZcGtFb05KekNoVmN0UUo5YXBVSERzNXJDaG1GWVA1OWFwVUhlUUozQ2gyRllQNTlhcFVGdmlaM0NoMkZZUDU5YXBVRTFwcHZDdnJFN3Y1OWFwVUZRTTU3Q3ZiRTd2NTlhcFVIaGU1N0N2TEU3djU5YXBVRWc0cHZDYzhlUHY1OWFwVUU3YjU3Q2NzZVB2NTlhcFVITXQ1N0Njc2VQdi9aMXRrR3IwSnJDaTFWaXYvWjF0a0hHWFozQ2lsVml2L1oxdGtGWXBwM0NpVlZpdjQ1cDBrR3JwNWpDWDVqOHZvNXAwa0hHTkp2Q1hKajh2bzVwMGtGV2ZadkNYSmo4dmtURzZFR2lvNVRDemROS3ZwSnQ4RUhocUpYQ3k5Tkt2a1pIOFVIb3haWEN5OU5LdmxQOEFFSjNqNC9DektuSVA0dmtBVUozajQvQ3pLbklQMWIrQVVKM2o0L0N6S25JUDFQOEFFTGxGby9Dc2o3Z1A2eDFBa0xsRm8vQ3NqN2dQNW1mQWtMbEZvL0NzajdnUDFQOEFFS0J6SXJDKzRoYlFGUDhBRUtOYUliQ1NibWtRRHkrQWtKRlJJYkNTYm1rUUltWkFrS1N1b3JDK29oYlFIUEhBa0tVdUlyQytvaGJRRGx2QUVMQ2c0TENlbVhNUUpMb0FVSUtxSUxDZW1YTVFIOFNBa0lUcklMQ2VtWE1RRHZ3QWtJOFFJYkNTYm1rUUpIUC8wR3M4SXZDZlYyZFFBZ1QvMEh3a0k3Q2tteGlRQ1Y1K1VHQjRKSENDcFZtUU9hNCtFSHRMSlBDT0JjalFNbGEva0hwSVpIQ1V5QU1RUFpnL2tFSFhJbkNOeFMvUU8yYytFSDZDNURDOWNLeFFLMisrVUdJMTVEQ3NBR1dRQUo4OUVHS0lZdkNUMWJWUVBQSzhFRVdJcEhDN1JYRVFJV3A3a0VKN1l2Q3NjelhRT293N0VIaG5wSEM1QnpHUUt2cDZrSHRjNHpDNnJMWVFFWTY2VUdZOFpIQ2E5ckdRSWdQM1VGMHBvN0NJd1haUUlKSDNrR09TcFBDSFI3SFFIS2d4VUd6bkpUQ3VyL0ZRUC9CeTBGKzhwYkNyRUMzUUZST3QwRTVjSm5DMlEyc1FDZlB2MEhXdjVuQ2FSbWlRUGhiczBGVFdwckNRamlZUU5oUnZVRzNkNXJDUnNXUlFNS0dza0dVaXByQ2taMlBRRldwdkVGTmxackM2SytLUUdZL3NVRXp4WnZDWUJJMlFKbW11MEU4VnB2Q09jMCtRUEVEc0VGTHU1ekMxWGloUDBXdHVrRWw3WnZDNE1EV1AvRURzRUVlYXAzQ2Y0T2p2VVd0dWtGY1dKekM0TkFTUC9FRHNFRlRsWjNDZXB2U3ZrV3R1a0hiY3B6QzUrYVpQbGtvdmtFajBKekNEQnBWdnJ6YXhVSHYrWnZDSUpIdlBnLzAxRUZyeUpyQ2xlTDlQWXgrMTBHQkU1ckMzY1E5UHlxbjhFRVhvNVhDQ1BLL1BzWGc3RUZIZ0pYQ1ZiaXJQNlFOL0VIYWVKSENxTkhSUDk2LzlFRWpWSlRDQ2piNVArYWx6a0VEV1pqQ1VmZVBRS3YwNFVGSWVwVEMxOGlmUUdRRHdVRUVncHJDbXN1RVFEL1g2MEZVSFpQQ0d1S25RRDRtNzBFYm5wTENCNWlxUUJkVDVrRVY0NVRDT0JaaVFLUFEwa0Z3S1puQzhhWXVRRCt6dzBHb1VwdkN4TTBHUU9wejcwRlltNVBDOWlaNlFCSjU4MEdiM3BMQ0hHQ0NRTDRyNTBIVHdJdkN5Wkdad1V1MGkwRm5hSkxDYW9pa3dSbnVqMEVyeVpQQ1dvS1p3ZnFVbDBIeWlaUENXb0tad1dJZ2swRXVLWkxDYW9pa3dSRStqRUczZDVIQ0dPQ2p3Zmtya0VHN3Y1TENCcUNad2ZEbmxrRVhpSkxDQnFDWndXSERra0g5UDVIQ3RkK2p3WnVNK01IemxwRENqT3ZzUDVXakFNSlBtSWpDY2wraFFKV2pBTUtzeFpEQ2pPdnNQNXVNK01GVFFvakNjbCtoUVAwVS84SCtOWVhDUXFyR1FMS1M5c0g1Qm9iQ1FxckdRQnRMOWNGMnBZZkMrTFRnUUNxZTdNR0p2SWJDK0xUZ1FMQ3o0c0Zhb0lYQzRhaS9RRjdsNjhHZkhZWEMyMGlxUUppNDdjRUF1WWJDMHF5TFFKaTQ3Y0Y5dUl6Q1dsamZQK3JnMnNIUWs1RENhYUhNUVAwaDdNR1djb0xDSkFtNlFEL0Q3TUVQclkvQ0pRbTZRS2svMnNGWFdZUENhS0hNUUVhNjlzRTVkb0xDNnA5OVFJaGI5OEd6c0kvQzdKOTlRR2tUOWNHUVlvUEN4Sy9hUDZ1MDljRUluWkRDeDYvYVA1V2pBTUxrNFk3Q2pPdnNQNXVNK01FcnM0N0NpK3ZzUDVXakFNS0h0SWJDY1YraFFQMFUvOEUxVW9QQ1FhckdRQnRMOWNHdXdZWEMrTFRnUUNxZTdNSEEySVRDK0xUZ1FGN2w2OEhYT1lQQzIwaXFRTEN6NHNHUnZJUEM0YWkvUUppNDdjRTQxWVRDMHF5TFFKaTQ3Y0cxMUlyQ1dsamZQeGt3NjhFUHJZL0NKUW02UU1STjJjSFFrNURDYWFITVFJT3MyTUZYV1lQQ2FLSE1RTmVPNnNHV2NvTENKQW02UUdMSTljR3pzSS9DN0o5OVFDQW45Y0U1ZG9MQzZwOTlRSVVoOU1FSW5aREN4Ni9hUDBPQTg4R1FZb1BDeEsvYVA3dWY1c0VRQnBuQ2dCZ2p3ZGhoNnNGMkM1bkM1eFFod2ZVajdzSGFFSm5DZ0JnandkaGg2c0h0R3BuQ1l4MHd3VWZrOE1IUEZKbkNKWmtvd1JQbThjRkJGcG5DWXgwd3dmVWo3c0hhRUpuQ1JpSTl3VWZrOE1IUEZKbkNvYUUzd2J1ZjVzRVFCcG5DUmlJOXdkaGg2c0YyQzVuQzN5VS93V25mNDhFY0FwbkNvYUUzd1p6ZDRzR3FBSm5DWXgwd3dXbmY0OEVjQXBuQ0paa293ZGhoNnNFMTRaakNueE1Xd1VmazhNR082cGpDcXBBWndUR285Y0ZtOFpqQ2dCZ2p3YlZtOThIbjg1akNZeDB3d1RHbzljRm04WmpDUmlJOXdVZms4TUdPNnBqQ0c2cEd3ZGhoNnNFMTRaakNKeWRLd1duZjQ4SGExNWpDRzZwR3dZQWIzOEVDMFpqQ1JpSTl3ZnRjM2NHQ3pwakNZeDB3d1lBYjM4RUMwWmpDZ0JnandXbmY0OEhhMTVqQ3FwQVp3ZGhoNnNGOHA1akNiQXdTd1JQbThjRklzcGpDbnhNV3diVm05OEV2dXBqQzV4UWh3VTlxK2NFU3ZaakNZeDB3d2JWbTk4RXZ1cGpDM3lVL3dSUG04Y0ZJc3BqQ0p5ZEt3ZGhoNnNGOHA1akNXaTVPd1p6ZDRzR3luSmpDSnlkS3dmdGMzY0hJbEpqQzN5VS93V0paMjhIbGtaakNZeDB3d2Z0YzNjSElsSmpDNXhRaHdaemQ0c0d5bkpqQ254TVd3ZGhoNnNIRmJaakNueE1Xd1VmazhNRWVkNWpDcXBBWndUR285Y0gyZlpqQ2dCZ2p3YlZtOThGM2dKakNZeDB3d1RHbzljSDJmWmpDUmlJOXdVZms4TUVmZDVqQ0c2cEd3ZGhoNnNIRmJaakNKeWRLd1duZjQ4RnNaSmpDRzZwR3dZQWIzOEdTWFpqQ1JpSTl3ZnRjM2NFUlc1akNZeDB3d1lBYjM4R1NYWmpDZ0JnandXbmY0OEZzWkpqQ3FwQVp3ZGhoNnNHRVE1akM1eFFod2ZVajdzSG9TSmpDZ0JnandVZms4TUhkVEpqQ0paa293UlBtOGNGUlRwakNZeDB3d1VmazhNSGRUSmpDb2FFM3dmVWo3c0hvU0pqQ1JpSTl3ZGhoNnNHRVE1akMzeVUvd2J1ZjVzRWVQcGpDUmlJOXdXbmY0OEVyT3BqQ29hRTN3WnpkNHNHNU9KakNZeDB3d1duZjQ4RXJPcGpDSlprb3didWY1c0VlUHBqQ2dCZ2p3ZGhoNnNFTU5KakNZeDB3d1lZQitNRTI1SVRDWERybFFCc0Y4Y0ZzL29YQ1AzZm9RT0QvNzhGeTI0UENFRWpmUUtwNTlzRTl3WUxDZHZ2WVFCRXQrTUg5SUlYQ3NKYm1RQ01pOGNFeU80YkNmSHpwUUpXbjdNRWhzNGJDVWpUcVFETXE3Y0VEVjRUQ21TVG5RQkdaN01GQjlvYkNhSXZxUUpEWDI4SEp1WW5DSit6cVFKRFgyOEd1TElmQ0orenFRSkRYMjhGYUFvckNKK3pxUU9OK3Y4RlYvcEhDeVQ3VVFPTit2OEU1Y1kvQ3lUN1VRT04rdjhIbVJwTEN5VDdVUUVBc3JzRzdyNWpDU0FLMlFFQXNyc0dmSXBiQ1NBSzJRRUFzcnNGTCtKakNTQUsyUUJabXFjRmU5Sm5DUGF1ZVFCWm1xY0ZEWjVmQ1BhdWVRQlptcWNIdlBKckNQYXVlUURCa3FNRktONXJDT291VVFEQmtxTUV3cXBmQ09vdVVRREJrcU1IYmY1ckNPb3VVUURYWXBzR1k2NXZDaFZjdFFEWFlwc0Y5WHBuQ2hGY3RRRFhZcHNFb05KekNoVmN0UUo5YXBjSGVRSjNDaDJGWVA1OWFwY0hEczVyQ2htRllQNTlhcGNGdmlaM0NoMkZZUDU5YXBjRlFNNTdDdmJFN3Y1OWFwY0UxcHB2Q3ZyRTd2NTlhcGNIaGU1N0N2TEU3djU5YXBjRTdiNTdDY3NlUHY1OWFwY0VnNHB2Q2M4ZVB2NTlhcGNITXQ1N0Njc2VQdi9aMXRzSEdYWjNDaWxWaXYvWjF0c0dyMEpyQ2kxVml2L1oxdHNGWXBwM0NpVlZpdjQ1cDBzSEdOSnZDWEpqOHZvNXAwc0dycDVqQ1g1ajh2bzVwMHNGV2ZadkNYSmo4dnBKdDhNSGhxSlhDeTlOS3ZrVEc2TUdpbzVUQ3pkTkt2a1pIOGNIb3haWEN5OU5Ldm92a0FjSjNqNC9DektuSVAxUDhBTUozajQvQ3pLbklQMWIrQWNKM2o0L0N6S25JUDZ4MUFzTGxGby9Dc2o3Z1AxUDhBTUxsRm8vQ3NqN2dQNW1mQXNMbEZvL0NzajdnUHp5K0FzSkZSSWJDU2Jta1FGUDhBTUtOYUliQ1NibWtRRlA4QU1LQnpJckMrNGhiUUltWkFzS1N1b3JDK29oYlFIUEhBc0tVdUlyQytvaGJRSkxvQWNJS3FJTENlbVhNUURsdkFNTENnNExDZW1YTVFEdndBc0k4UUliQ1NibWtRSDhTQXNJVHJJTENlbVhNUUpIUC84R3M4SXZDZlYyZFFBZ1QvOEh3a0k3Q2tteGlRT2E0K01IdExKUENPQmNqUUNWNStjR0I0SkhDQ3BWbVFNbGEvc0hwSVpIQ1V5QU1RUFpnL3NFSFhJbkNOeFMvUUsyKytjR0kxNURDc0FHV1FPMmMrTUg2QzVEQzljS3hRQUo4OU1HS0lZdkNUMWJWUVBQSzhNRVdJcEhDN1JYRVFJV3A3c0VKN1l2Q3NjelhRT293N01IaG5wSEM1QnpHUUt2cDZzSHRjNHpDNnJMWVFFWTY2Y0dZOFpIQ2E5ckdRSWdQM2NGMHBvN0NJd1haUUlKSDNzR09TcFBDSFI3SFFIS2d4Y0d6bkpUQ3VyL0ZRUC9CeThGKzhwYkNyRUMzUUZST3Q4RTVjSm5DMlEyc1FDZlB2OEhXdjVuQ2FSbWlRUGhiczhGVFdwckNRamlZUU5oUnZjRzNkNXJDUnNXUlFNS0dzc0dVaXByQ2taMlBRRldwdk1GTmxackM2SytLUUdZL3NjRXp4WnZDWUJJMlFKbW11OEU4VnB2Q09jMCtRUEVEc01GTHU1ekMxWGloUDBXdHVzRWw3WnZDNE1EV1AvRURzTUVlYXAzQ2Y0T2p2VVd0dXNGY1dKekM0TkFTUC9FRHNNRlRsWjNDZXB2U3ZrV3R1c0hiY3B6QzUrYVpQbGtvdnNFajBKekNEQnBWdnJ6YXhjSHYrWnZDSUpIdlBnLzAxTUZyeUpyQ2xlTDlQWXgrMThHQkU1ckMzY1E5UHlxbjhNRVhvNVhDQ1BLL1BzWGc3TUZIZ0pYQ1ZiaXJQNlFOL01IYWVKSENxTkhSUDk2LzlNRWpWSlRDQ2piNVArYWx6c0VEV1pqQ1VmZVBRS3YwNGNGSWVwVEMxOGlmUUdRRHdjRUVncHJDbXN1RVFEL1g2OEZVSFpQQ0d1S25RRDRtNzhFYm5wTENCNWlxUUJkVDVzRVY0NVRDT0JaaVFLUFEwc0Z3S1puQzhhWXVRRCt6dzhHb1VwdkN4TTBHUU9wejc4RlltNVBDOWlaNlFCSjU4OEdiM3BMQ0hHQ0NRS0dlY2NCNnNTckNiNlJ6UVp4ZWI4Q1ltVFBDenRSc1FjSHRKc0Y0YXpMQ0YzQnNRU2NvajhGaFpDREM4YnB4UWE3aGtNR1JzUy9DVlh4b1FYUi9LTUc2NkNmQ0hYaHpRVC82dk1IamZSYkNVd3B3UVJvYXRjSC9aUzNDSEtWa1FST1oxTUh1L0NyQ0E1aGRRWEVXeHNGVU14dkM5eVJyUWMwTzFzSGZueGJDOS9OcFFmVWkyY0d2clJ2QzlDNWtRV0MvMThFWjN5ckNUamxhUVp4ZWI4QTdDRWJDV0s1aVFhOW1ZOEJ0RVdIQ3g3eFFRUmFWaXNGeGJVUEN2OHhiUVNTZEVzR1pEMkhDbmFGTVFaRlVHc0YzREVYQ1l0VmZRVHVuZzhFWitXREM2SnhJUVlITnJzRnhiVVBDWmR0WFFRY1Fwc0ViNDJEQ1pxOUVRWDFNenNGeGJVUENmSkZRUWQzN3c4Rnp1bURDbFd3OVFjbHkwY0Z4YlVQQ3NWSk5RZG41eHNGWXFHREM5VEE2UWZrTDNzRnhiVVBDUmlBMFFjYngwc0hNRzJEQ0ZSY2hRWUUxVWNBbUU0SENXTGMwUVgzaUJzRTVFb0hDREtjd1FmTTljc0hkQm9IQ0V5Z3RRUkxIbU1IQis0RENTYjBwUVJ4T3RNRTU1NERDSFd3alFkSU90OEVXM29EQ0ZKd2dRYUlSd3NFYmw0RENrTVVLUVdLN2pjRlM3em5DaXlSaVFjN3pzY0VacnpmQ1FVQmVRY2x5MGNGR0pqZkN3QlJYUVJPWjFNRkdKamZDQU1aVFFhWGg0TUZHSmpmQy9jYzhRVkMzNDhFWjN5ckN0bTlGUVR0NzZjRkdKamZDT0E4elFjVXE3Y0ZHSmpmQ20rUXVRU21oSU1INWxUekN2Q0ptUVp4ZWI4QnJxajNDbE1GblFTZ3Yzc0ZqN1NMQ2RZTlZRYW9jN3NGR0pqZkNtK1F1UVZDMzQ4RTE3U25DdG05RlFTZ3Yzc0ZxM0NIQ2RZTlZRZlVpMmNGYWdCckM5QzVrUWMwTzFzSDZyUlhDOXZOcFFZOG0wY0VsWEJEQ1h0WnVRZEhIMGNIVE14RENYdFp1UWJQcXhzRjZlQlBDbDNKdlFlRy83Y0Z4YlVQQ0RIb29RYkJKN3NIUnNsL0NpSjhZUVhQTjdjSFJzbC9DaUo4WVFiSkc3c0Z4YlVQQ0RIb29RZjVwN3NFbXpuL0NEWW9GUVdiUjdjRW16bi9DRFlvRlFmNXA3c0Vtem4vQ0FnVURRYkJKN3NIUnNsL0NmUm9XUWJKRzdzRnhiVVBDQWZVbFFhb2M3c0ZHSmpmQ2tGOHNRVkMzNDhFMTdTbkNyT3BDUVNndjNzRnEzQ0hDYS81U1FmVWkyY0ZhZ0JyQzZxbGhRYzBPMXNINnJSWEM2MjVuUWRISDBjSFRNeERDVWxGc1FZOG0wY0VsWEJEQ1VsRnNRYlBxeHNGNmVCUENpKzFzUVQvNnZNSGpmUmJDUm9WdFFTY29qOEZoWkNEQzVUVnZRWFIvS01HNjZDZkNFdk53UWFHZWNjQjZzU3JDWlI5eFFTcVZwc0g0NUl2Q0Zha0xRVW1hc01GSW5ZdkNGdy80UU9FVHBNRXo3b3ZDVUJRT1FSTUhpOEh3QW96Q0ZZTVRRYkp3WE1Fb0RvekNaM01XUVgxOTljQ2lHWXpDRlhVWlFWUmhQc0NSR296Q01uc2RRWTFCbWNIQnNKVENjTXJ0UUVqaXBzRndIcFRDR0FiVVFKTHpsc0h4dVpUQ2FobnlRSkxQZjhFVDlKVENwc2I3UUJQT1NzRTkvNVRDVjRFQVFkclo0Y0NvQ3BYQzBTNERRVmttTDhDV0M1WENrT3NGUVR3Ymg4SFU3NXZDVkR1SFFGeVpoY0dGNnB2Q3dGaUdRRnlaaGNGUFQ1ekN3RmlHUUR3Ymg4RVprNXZDVkR1SFFHQ0hqY0g2bUp2QzJ1YUtRSGVVak1IbzhKdkM5MVdLUUZ5WmhjRTR4SmpDdjFpR1FEd2JoOEZPclpqQ1ZEdUhRUEkzcDhHU1BackM2cFNaUU9tQXFNRktkNXJDMFVxYVFQSTNwOEhZNEpuQzZwU1pRT21BcU1HQUVwckMwVXFhUVBJM3A4RUwrNWJDNnBTWlFPbUFxTUV6N0piQzBVcWFRTUhza01Halo1bkNhQWVOUU1Ic2tNRXNSNW5DYUFlTlFEVXNrOEU3U1puQ1BWQ09RTUhza01HTlE1akNhQWVOUUFFcW5NR2t6NWpDajNPVFFBRXFuTUV3cjVqQ2ozT1RRQUVxbk1HT3E1ZkNqM09UUUlXWmZzRkJTWnZDTEl1ZlFFK0xoTUcybTVqQzlaQ0tRSVdaZnNIMElwakNMSXVmUUUrTGhNRUN3cHZDOVpDS1FJV1pmc0VNcnB2Q0xJdWZRRStMaE1ITkpwekM5WkNLUUFEWmlzRUQvNXJDWW9palFLR1FpOEh0eVp2Q1UyV09RRUFzcnNGekRKbkNTQUsyUUJabXFjRVlVWnJDUGF1ZVFFQXNyc0dwcDVqQ1NBSzJRQlptcWNGTjdKbkNQYXVlUUVBc3JzRmJnWlhDU0FLMlFCWm1xY0VBeHBiQ1BLdWVRQnZpWXNGZDFwdkNWcCtwUUJ2aVlzR1NjWnZDVnArcFFCdmlZc0ZGUzVqQ1ZwK3BRSmdjSU1GUFQ1ekNZaVNzUUpnY0lNR0Y2cHZDWWlTc1FKZ2NJTUU0eEpqQ1lpU3NRUENXRXNBbU81ekNiS211UVBDV0VzRHduNXpDYkttdVFQQ1dFc0RaRkpuQ2JLbXVRS25qSXNDYWRwckNxNnJoUUpzSzBzREVYNXJDdE5qZVFNK2JQTUdSQkpyQ0NpYmJRSERuYmNHQ3NabkN2WWpYUUlSaWpNRXVGWm5DaStEUlFHaWhqOEdlNzVqQzV1Yk9RQ2M0cHNGbTRwZkNaWnUvUUJVWXpNQndFSnpDdjFPdFFCVVl6TUE2ZFp6Q3YxT3RRQlVZek1BaTZwakN2MU90UVA1cDdzSENQWWJDcitIeFFQNXA3c0hDUFliQ210ZnNRR2JSN2NIWFI0YkNyK0h4UU9OK3Y4RkU5cEhDeVQ3VVFPTit2OEVPVzVMQ3lUN1VRT04rdjhIMno0N0N5VDdVUUpEWDI4RzVzWW5DSit6cVFKRFgyOEdERm9yQ0orenFRSkRYMjhGcmk0YkNKK3pxUUQ1djdNRVpSb2JDSit6cVFFLzM3TUYrblliQ0orenFRRDV2N01IOUVZVEM2RzNuUUhYTDdjRWJZNGJDSit6cVFKRFgyOEhoeFluQ1ZBRDFRT04rdjhGdENwTEM5RkxlUU0zODdNRXVmb2JDTWg3eVFCQjAyOEdNNjRmQ2FPTDJRSGV4NE1Iakc0REM1eHNIUWIrKzVjRlAwbC9DekNrYlFlZ0o2Y0Z4YlVQQ3R2Z3JRZjVwN3NFbXpuL0NvbTRCUWY1cDdzRkg1b1hDMWZYclFQNXA3c0Vtem4vQ3BWenZRUDVwN3NIZ3pJUENna3puUUxCSjdzSFJzbC9DSG9RVVFiQko3c0hSc2wvQ3pjTUtRYkpHN3NGeGJVUENvRjRrUWJKRzdzRnhiVVBDVVo0YVFhb2M3c0ZHSmpmQ01ja3FRYW9jN3NGR0pqZkM0QWdoUVZDMzQ4RTE3U25DUzFSQlFWQzM0OEUxN1NuQytwTTNRU2d2M3NGcTNDSENDbWhSUWZVaTJjRmFnQnJDT0ZOV1FmVWkyY0ZhZ0JyQ2l4TmdRU2d2M3NGcTNDSEN1YWRIUWMwTzFzSDZyUlhDaXRobFFjME8xc0g2clJYQ09oaGNRZEhIMGNIVE14REM4YnBxUWRISDBjSFRNeERDb2ZwZ1FZOG0wY0VsWEJEQzhicHFRWThtMGNFbFhCRENvZnBnUWJQcXhzRjZlQlBDSzFkclFULzZ2TUhqZlJiQ2x5NWlRVC82dk1IamZSYkM1KzVyUWJQcXhzRjZlQlBDMjVaaFFTY29qOEZoWkNEQ2hwOXRRU2NvajhGaFpDRENOZDlqUVhSL0tNRzY2Q2ZDczF4dlFYUi9LTUc2NkNmQ1lweGxRYUdlY2NCNnNTckNBb2x2UWFHZWNjQjZzU3JDczhobFFYWEw3Y0ZSL29YQ0orenFRSFhMN2NFUTNvUENtU1RuUUh5ZjFjQ1ZLVDNDQ0ZSbVFWOGUwTUJxa2tYQ0JnSmdRYVUrM01DOUN6UENoYVZzUWJSVGpzQTRDNVhDZDFBRFFUY0ltc0F6R296Q0k1c1pRWjBFaGNDbUo1ekNhQTJ1UU9RbGljRC8vNWpDbndLdVFJZWE0c0N2VkNuQ3dJNXpRWThmdnNDbUVHSENvZEZNUVV0NHFNRExFb0hDcHRNd1FZZWE0c0N2VkNuQ3RnbHhRUVJJaDhBTGJackNiQVhmUUhLQWhNQ2FqSnpDd3c2dVFJZWE0c0N2VkNuQ1UzTnZRWWVhNHNDdlZDbkNCTE5sUVVEandNQlZNalBDWTdKc1FSSWR4OEJScnluQ1laUnpRVHZkb3NEdEVHSEM1S1ZRUVdQRXRNRGJ0a1hDTjVOaVFmVTFqY0R5RW9IQ09xYzBRUklkeDhCUnJ5bkNWdzl4UWJhTGZjQmZHb3pDREc0ZFFSVC9WOERqY1pyQ3lacmhRS2dpWnNCbUM1WENmZUFGUVVsbFVzQ0ZsWnpDRlZhdVFCSWR4OEJScnluQzkzaHZRUklkeDhCUnJ5bkNwYmhsUWN0RXVzQWFUejNDRmFOblFaMXRVOENQTUp6Q3ZGU3VRQ213VzhEcUNKbkM4MG11UU40Uzc4RWs1by9DODZlTXdmdWg5c0crc1piQ2p5bDZ3WU1VQmNLQkZKSENZeE43d1RLODQ4SGR3WkxDQzdTTXdaSWNEY0lOVzR6Q040Zkd3SFNOQmNJcTZKTENOU0s5dnpSdERjTEFOSW5DYmloYXdIU05CY0llNHBiQ2tiZXV3S0dqRE1JaTVvWENCMjNad01HekNNS2RKSVBDUDVPTXdDQmpDTUlpNW9YQ0IyM1p3RUgwRE1LZEpJUENQNU9Nd0pJY0RjSWk1b1hDQjIzWndEUnREY0tkSklQQ1A1T013R3JhOHNIbng0ckM4NmVNd1JGYkFNTG54NHJDWXhON3dXeFo2c0hueDRyQzg2ZU13WkdiQk1Mbng0ckNZeE43d1UvTTg4SG54NHJDODZlTXdZTVVCY0xueDRyQ1l4Tjd3U1JsQmNMaHc1RENZeE43d1I2MDc4R0VsWS9DODZlTXdUUnREY0lwNllqQ3VrNWR3SkljRGNKb0NJekNISG5Id0pJY0RjS21OSWJDT29mWXdEUnREY0p0YklQQ1B4U0x3RS9NODhHQUZJdkM4NmVNd1lNVUJjS0FGSXZDWXhON3dhNTc4OEVuWlp6Q2tiZXV3SzU3ODhGYS9wbkNWYWtLd0k1cDBzR2FIcUhDVDVtZndJNXAwc0h5U3FEQ2tzRTJ3SGpISThHVUdxZkNKSVdWd0JTVkNzQi9FS2ZDQ0hsU3dIakhJOEcycTZiQ0NIbFN3QlNWQ3NCZGY2ZkNKSVdWd0JTVkNzRFd1NmJDZGF3THdSU1ZDc0FNVjZiQ0xnVW93WGpISThFTlY2YkNkYXdMd1hqSEk4RkQ4cVhDTGdVb3dSU1ZDc0Fqc3FiQ1ZxTHd3SGpISThGYlRhYkNWcUx3d0lubzhjSHZTSjNDZHF3THdaTnIwY0VjTDZIQ1ZxTHd3TE45OHNHbjlKekNWcUx3d0J5d3pjRnhpYUhDZHF3THdlTERCTUo2ajVqQ2Rxd0x3WFlPQmNLZThKZkNWNkx3d0s0cURNTFdQbzdDWEo0UXdmcTJETUl3N0kzQ0ZQc0d3VTk3RE1JMTdvM0NyY1lRd2ZxMkRNTFJtbzNDT2tFSHdVOTdETUxHdDRqQ1hSc2l3ZnEyRE1MNjNZZkNZUzhPd1U5N0RNSXRhNGpDcVVFaXdmcTJETUtya0lmQ0JISU93VjRDRE1JdGE0akNxVUVpd1FjK0RNS3JrSWZDQkhJT3dkN0JCOEl0YTRqQ3FVRWl3WWo5QjhLcmtJZkNCSElPd1hlMDRMK3NRS0hDbFNoOXdVZzQvTDk3S1p2QytPaU13Wk5VR3NIVnU2SENET2w1d1JTVkNzQVFXNXZDQ2JTTXdiVHQ5cjkxREtMQ0RPbDV3Wk5VR3NGd0NwdkNDYlNNd1duVzBNRm5CcHpDRE9sNXdXblcwTUVDVlpYQ0NiU013WnR4Q2NMd0RaSENYbjA0d1hxLy9jRUhvNWpDb3RGU3dkOGpBY0twcVpqQ1RESXp3WEU2Q01LdHFaSENUQ1pTd2RKekFzS0FyWmpDU2VJZ3dXNFhDc0xuWnBEQ3Zxa2t3Y1ZXQzhLNjA0akM5dW91d1VVV0I4SzYwNGpDOXVvdXdVU0xDc0s0VDRuQzNlNDl3VFBzQk1KVC9vbkN6Y3hYd2JNc0NjSlQvb25DemN4WHdjVktCc0s0VDRuQzNlNDl3YmZQQzhLNjA0akM5dW91d1RjRUM4SzRUNG5DM2U0OXdhU2xDY0pUL29uQ3pjeFh3YjIwQ2NJdnlwRENHYXc0d2ZwK0NNSWpaWkhDVENaU3dWTmJDc0s1SXBEQ3R0RWt3WWJRQzhMaEg0bkNVNzR1d2FTbENjTHNTb3JDemN4WHdmMEZDOEpXbTRuQ3Rybzl3UTNXQzhLU2lvN0NRWTRqd2FTbENjSk4rby9DemN4WHdSRVNDOElCUkkvQ29kTTV3ZE40WE1FMnFxYkNKSVdWd05ONFhNRllPNmJDQ1hsU3dCY2Nic0d2NXFYQ2Rhd0x3UmNjYnNIbGdhWENMZ1Vvd1JjY2JzSDgzS1hDVnFMd3dQZndXTUhRL3FEQ0JuQjl3ZXVaSE1HQkg1dkNVbDJOd2V1WkhNSDJXS0hDQm5COXdmZndXTUZjeFpyQ1VsMk53ZnhRQmNKZWdwTENheWVXdjY1Nzg4SGxSSlhDek5OS3Zyc3dBOEkxN283Q3pLbklQNjU3ODhGbmhabkNMQmIzdjQ1cDBzRi9rWnZDWEpqOHZvNXAwc0VBMHAvQ1VhTW53Tk40WE1GbXdxWEM2ZWxLd0hqSEk4RkQ4cUhDL25vVHdOTjRYTUhrZ2FIQ3h1RUd3SGpISThIRU1xYkNiaXhNd0JTVkNzQUxWNkxDL1hvVHdCU1ZDc0NObDZiQ2JpeE13RFJ0RGNLTW00YkM4UHZKdnpSdERjSk1lNFRDMzlDWXZqUnREY0phVDRiQ3pXalF2elJ0RGNLb0tZVENYQTIzdmpSdERjSmtuNERDUHpFaXdEUnREY0l0MEh6Q1lUUzJ2elJ0RGNJQ1Y0RENqajRsd0RSdERjSVFOWHpDdm1LOXYwSDBETUlDVjREQ2pqNGx3RUgwRE1JUU5YekN2bUs5djhHekNNSUNWNERDamo0bHdNR3pDTUlRTlh6Q3ZtSzl2Ni9oQU1BUVdhVENEY2Fhd0svaEFNQlgvS0hDRGNhYXdIRERJY0ZIOUtQQ0RjYWF3SERESWNHTmw2SENEY2Fhd0hUSlhNSHBnNlBDRGNhYXdIVEpYTUV2SjZIQ0RjYWF3TDNwSk1FTUo2UENyNDNhd0xoc2JzSDFXYURDcjQzYXdMaHNic0d1dHFMQ3I0M2F3TDNwSk1GVHlxRENyNDNhd0svaEFNRFdpNlBDcjQzYXdLL2hBTUFjTDZIQ3I0M2F3UHZWSThFSkphYkNzWWZ2d0NBZ2JzR3J0S1hDc1lmdndPZ1lDc0RTaWFiQ3NZZnZ3TnQ4WE1IbGdhYkNZOGlWd0t1dEk4RkQ4cWJDWThpVndPZ1lDc0FOVjZmQ1k4aVZ3Si9GWE1FMXFxUENLNGFhd1BUYkljR1RHcVRDSzRhYXdLVlhBY0JjZjZUQ0s0YWF3UExiSk1GWlRhUENNSnJid09Wb2JzSDgzS0xDTUpyYndLVlhBY0Fqc3FQQ01KcmJ3TkExa2NFUWVxTENNQmpWd0FsY204RjFXNlhDc1lmdndKMkNrY0hHZzZMQ01KcmJ3QUZZbThHL1VhWENLNDdtd0oyQ2pzR2pJcUxDSzRhYXdFZDZsc0ZUK3FUQ1k4aVZ3THJubThISGc2WENWcUx3d0xybm04RVFlcVhDejRYbndFZ3VsOEdrSXFYQ0pJV1Z3UGlFMGNGMUxhSEMxWWZvd0JtWDhzRk41cHpDMmdycXdDa2JCY0tSMVpmQzJncnF3Q1BCRE1JVHhJM0N1MmdEd1NQQkRNS1RjbzNDOWJNRHdTUEJETUp4czRmQ0Fjc0t3U1BCRE1JRFpvZkNkeElMd1RGSURNSURab2ZDZHhJTHdiRUhDTUlEWm9mQ2R4SUx3VWV0a01IRFU2TEM3U3pVd09qOWtNRjZYYUxDcjQzYXdKelhqY0ZYL0tIQ0RjYWF3RWV0a01FSjk1L0M3U3pVd09qOWtNSEFBS0RDcjQzYXdKelhqY0djbjUvQ0RjYWF3Q2NlbThGRWhxVENkYXdMd2VCNm5jRXdmS1RDTGdVb3diN3BtTUdTZktUQ1ZxTHd3RGxzbU1GQlZLVENzWWZ2d0c3L2pjR1JmS0hDTUpyYndEQ0lqY0ZFVnFIQ3I0M2F3RENJamNHTCtaN0NyNDNhd0pOVW1zRnRLNkRDRE9sNXdVNDJXOEdDcVpyQ0NiU013VTQyVzhIbldxSENET2w1d2Z3SGxNRUllcG5DQ2JTTXdWSTBvc0UwN0ovQ0RPbDV3YnJubThIUE9wbkNDYlNNd2VyL244R3hLS1hDTGdVb3dWSTBvc0Z4Q3FEQ3QwTlh3ZXIvbjhHYW5hSENMZ1Vvd1ZJMG9zR0lsYVBDdDBOWHdlci9uOEY1amFYQ0xnVW93Vkkwb3NGUitxUEN0ME5Yd1pOVW1zSDFUYURDdDBOWHdaTlVtc0VNMmFQQ3QwTlh3Wk5VbXNIVlBhVEN0ME5Yd2RONFhNRUVrcUhDdDBOWHdkTjRYTUViSGFYQ3QwTlh3ZE40WE1IbGdhWEN0ME5Yd1pOVUdzRmlBcUxDdDBOWHdaTlVHc0Y0amFYQ3QwTlh3Wk5VR3NGRDhxWEN0ME5Yd1JTVkNzQXJaNkxDdDBOWHdSU1ZDc0JEOHFYQ3QwTlh3UlNWQ3NBTVY2YkN0ME5Yd1JjY2JzRWFIYVhDTGdVb3dlQjZuY0d0dXFIQ0xnVW93UmNjYnNFRWtxSENMZ1Vvd2VCNm5jRzNQNlRDTGdVb3dYakhJOEY1amFYQ0xnVW93WGpISThGaUFxTENMZ1Vvd1JTVkNzQkM4cVhDTGdVb3dSU1ZDc0FyWjZMQ0xnVW93YnhvSk1IdmZhWENsVEZld1dYRjRyK1g0YVhDbFRGZXdaaGFUY0d4TmFYQ2xURmV3Wk5VbXNIVXc2UENsVEZld1ZJMG9zRXVmNlBDbFRGZXdXblcwTUducFovQ3QwTlh3WlR1L01ITUlwakNhazFmd1duVzBNRVdJSi9DbGpGZXdiaUIvc0ZaZjVqQ1laWll3VEJyQ01JL2M1REM3TnBld1FOVkNjTHZTcERDemN4WHdkRzdDTUtlSXBEQzdOcGV3ZEc3Q01JOWM0ckM3ZHBld2RHN0NNS2tKb3JDN2RwZXdkNUNDTUtrSm9yQzdkcGV3VjhDQk1La0pvckM3ZHBld1dVTnVNRXNsYUxDK3loRXdJNUJ1TUUrTktQQ0s4T2F3UHdIbE1IR3M2VENDWGxTd040d3VNRllBYVBDTGdVb3dhSHl6c0ZXL0tEQ0xnVW93Y3RRdU1HOFlxUENkcXdMd1NRY25zRjVqYVhDZGF3THdjVlB1TUdhWDZQQ1ZxTHd3QkhRdDhIblBxTEN0ME5Yd1crV3RzR01IWjdDRE9sNXdldHh0TUdLbEpmQ0NiU013ZndIbE1IVE9xVEMxTjlGd1BaMXRzR0F1cDNDaVZWaXY4VG10OEZaSDZMQ0hGZzJ3SjlhcGNIenk1N0Njc2VQdjE5T3VNRmNXNlBDZmc3b3dBR250OEYrcmFIQ2xqRmV3VEs4NDhFQVU1TENXOXlNd1duVzBNRWs1cFRDVzl5TXdmR2I2OEV6Ylk3Q3Q0bVB3V25XME1GWUFKSENNRWVPd2V0eHRNR3NKWmZDVzl5TXdldHh0TUhmUDVQQ01FZU93YnJubThId3k1akNXOXlNd2Jybm04RWs1cFRDTUVlT3dmd0hsTUVwQzVuQ1c5eU13ZndIbE1GZEpaWENNRWVPd1U0Mlc4R2tPcHJDVzl5TXdVNDJXOEhYVkpiQ01FZU93ZmZ3V01FL1hwckMwWUtOd2V1WkhNRm11SnJDMFlLTndmZndXTUZNdnBiQ1FOU093ZXVaSE1GeEdKZkNRTlNPd1pOVUdzR1NtNXJDVzl5TXdSU1ZDc0F5N0pyQ1c5eU13Wk5VR3NIR3RaYkNNRWVPd1JTVkNzQmxCcGZDTUVlT3dVZzQvTCtYeEpyQ3FRMk53VWc0L0wrWU9KZkMyRmVPd1l0cWVNRnFNcWJDSklXVndPcHlpc0Z4U2FYQ0NYbFN3TXNLaU1IeXpLWENKSVdWd0p1R2ZjR2xyYVhDQ1hsU3dDNkRrc0ZLektEQ1RWM0d2NkFSZnNGZE1xWENZQTlKd05tZWhzRVhTYUhDSDdUMXYyRzlpc0VBenFUQ3VNUkh3RnpQZDhGSnNxRENEY2Fhd00vM2g4R2xwcUxDRGNhYXdNLzNoOEhyU2FEQ0RjYWF3RnpQZDhFREQ2UENEY2Fhd01oaWVNRTlDcWJDWThpVndOZ0ppTUdocEtYQ1k4aVZ3THZXZDhFck5hUENLNGFhd0xiNGg4SHh6S0xDSzRhYXdPRk5pOEY4RHA3Q1pxNExRR2tZaHNIcERaekNqQ3QvUUdrWWhzR3pjcHpDakN0L1FPRk5pOEd6cVozQ1pxNExRR1dma01GellaL0NBQnV1UG1XZmtNR3AvSjdDQUJ1dVBseVpoY0dGNnB2Q09oYUZRRnlaaGNGUFQ1ekNPaGFGUU5tZWhzRk01S0RDSDdUMXY5TjRYTUVhSGFIQ3h1RUd3SGpISThGNGphSEMvbm9Ud0JTVkNzQkI4cUhDL25vVHdHa1loc0djNTVqQ2l5dC9RT0ZOaThGbGc1ckNaYTRMUUdXZmtNRmMxcHZDL1JxdVBseVpoY0U0eEpqQ09oYUZRTm1laHNFQXZwM0NJTFQxdjlONFhNSE05cDNDeCtFR3dIakhJOEVyWjU3Qy9ub1R3QlNWQ3NEenk1N0Mvbm9Ud09tQXFNRktkNXJDVEFpWlFEQmtxTUU1TDVyQ09vdVVRREJrcU1FRWxKckNPb3VVUU9tQXFNR0FFcHJDVEFpWlFEWFlwc0dINDV2Q2hWY3RRRFhZcHNGUlNKekNoVmN0UUo5YXBjSE5PSjNDaDJGWVA1OWFwY0dYblozQ2gyRllQL1oxdHNHMVZaM0NpbFZpdjU5YXBjRXBaNTdDY3NlUHY0NXAwc0cwTEp2Q1hKajh2akJrcU1Ic0NKZkNPb3VVUU9tQXFNRXo3SmJDVEFpWlFEWFlwc0U1dlpqQ2hGY3RRSjlhcGNHQUVwckNoV0ZZUC9aMXRzRnBMNXJDaTFWaXY1OWFwY0hjUUp2Q2M4ZVB2NDVwMHNGbkJwakNYNWo4dmtpTmlNSHQ2cURDMGRxOXY5OHhrc0ZRajZEQ0hiYWR2NEZ0ak1IM0xhRENvSTBidjBpTmlNRWpocURDMGRxOXY0RnRqTUV0eVovQ280MGJ2MGlOaU1IVlg1M0MwdHE5djRGdGpNSGZvcHpDcUkwYnY1OWFwY0UrSzU3Q3ZiRTd2NTlhcGNFS2tKN0N2TEU3djU5YXBjSHlCSnZDdnJFN3YzZVVqTUhvOEp2Q2NST0pRRjcwak1IMkVwekMzY2FEUVBMUGtNR29zNTNDMDJrU1FOakVsTUVVQjUvQ0w5YmhQdEVHbHNFT0thRENSUENRdjkxSGxzSFNaYURDaVhLN3Z6OHNqc0dSc0tUQ3YyTkh3SzN3amNHQks2WENDWGxTd01nRGpNSGpxcVhDSklXVndBVGZpOEdTZ3FYQ1k4aVZ3SDVIaWNIanFxTENLNGFhd0pJa2ljR1doS0xDRGNhYXdKSWtpY0hjSjZEQ0RjYWF3RHdiaDhIVTc1dkN6L2lGUUR3Ymg4RVprNXZDei9pRlFHQ0hqY0g2bUp2Q1ZhU0pRRHdiaDhGT3JaakN6L2lGUVBJM3A4R1NQWnJDWlZLWVFQSTNwOEhZNEpuQ1pWS1lRUEkzcDhFTCs1YkNaVktZUU1Ic2tNR2paNW5DNDhTTFFNSHNrTUVzUjVuQzQ4U0xRRFVzazhFN1NabkN1QTJOUU1Ic2tNR05RNWpDNDhTTFFBRXFuTUdrejVqQ0NqR1NRQUVxbk1Fd3I1akNDakdTUUFFcW5NR09xNWZDQ2pHU1FIbVBBc0kxN283Q3pLbklQeW81OHNIbFJKWEN6Tk5LdmtiSStjRTE3bzdDektuSVAzM2k1c0hsUkpYQ3pOTkt2alJ0RGNKMFY0VENWU1o4dnJzd0E4S3R1bzdDdzczU1AwSDBETUl4MzN2Q2dlbTB2OEd6Q01JeDMzdkNnZW0wdnpSdERjSXgzM3ZDZ2VtMHZ6UnREY0ptQllUQzJ2bWJ2alJ0RGNLbmVuekN0OVN0djNtUEFzS3R1bzdDdzczU1AwYkkrY0d0dW83Q3c3M1NQL2lxOHNGdWk1bkNVZDFOd1RHVis4SFhYNW5DN3dJd3dSMUQ4OEZWd3ByQ2tDZ1N3YXR1NGNHRUdadkNVOTFOd2R2dDFzSEp0cDdDeHJGUndaWWMyY0VCZkp6QzhBSXd3UllLMWNFZDRKL0Nhb2twd2M4RzRzRnBVSnpDa0NnU3daSEgwOEViWHFEQ05YRVJ3YU1SODhFV2c1dkNKWlVSd1JJSzg4SEh0SnpDTlhFUndSdVBBOEsrc0pqQ05YRVJ3V08zQXNKZktZN0NsUVBGUDBMRytzRmZLWTdDbFFQRlAvaE9BOEpmS1k3Q2xRUEZQelh1RE1LeVpZVEMwNjUxdmpYdURNS1FHSVRDMHZLV3ZqWHVETUtaVW4zQzIzdWt2elh1RE1KNXdIekM0Q09ydjRaOERNSjV3SHpDNENPcnYxUjlDTUo1d0h6QzRDT3J2enA1QThJbmRJdkNQWGlGUDhXWC84RW5kSXZDUFhpRlA5SGhBOEluZEl2Q1BYaUZQM09GQ3NKaHQ0VEM3RWM5dm5PRkNzSW9nb1RDbEJGa3ZuT0ZDc0l2d29EQ2UrMW52M09GQ3NMRWo0RENCQjF4dndJM0NzTEVqNERDQkIxeHZ3RjFCOExFajREQ0JCMXh2d3BWNHNIdUc1dkNnaTFMd2FyQzJzR0ZYcHpDOEFJd3dUa0U4c0d0c1puQ2dDMUx3WHpmNHNIWk5wekNZTmdVd2JDTzhzR1p6SnJDWU5nVXdRd2grc0VDaXBuQzd3SXd3UXBWNHNHZ3packNnaTFMd2FyQzJzRTFFSnpDOEFJd3dUa0U4c0ZjWTVuQ2dDMUx3WHpmNHNHSTZKdkNZTmdVd1F3aCtzR3lPNW5DN3dJd3diQ084c0ZLZnByQ1lOZ1V3UXBWNHNIaDNwZkNnaTFMd2FyQzJzRWc5cGZDOFFJd3dUa0U4c0YvLzVmQ2dDMUx3WHpmNHNIK0xaakNZTmdVd1F3aCtzRmVONWpDN3dJd3diQ084c0dkVHBqQ1lOZ1V3ZmNSKzhFY09aakN1QVl3d1loNDhzSGsvWmZDa05KTXdVd0w4OEhCVVpqQzR6b1R3Vy9ZNGNGUDI1ZkNrTkpNd2NEUjJjSDA4NWZDdVFZd3dTOXI0c0V0TDVqQzR6b1R3ZkdDbWNFMXNhVENWcUx3d0ZtM204SHB1cVRDZGF3THdlUDduY0hhc3FUQ0xnVW93ZVA3bmNIbk9hVENMZ1Vvd2VQN25jSGR0S0hDTGdVb3daWUNtY0hraUtUQ3NZZnZ3RVd6anNFMXNhSENNSnJid0ZRNWpzSG9pcUhDcjQzYXdGUTVqc0V1THAvQ3I0M2F3TFdZbjhIQVlhWENMZ1Vvd1pPaG5jRmRZNlhDZGF3THdTdHRtOEdxV2FYQ1ZxTHd3TDdqbXNGWk1hWENzWWZ2d0w3eWtNR29XYUxDTUpyYndERndrTUZjTTZMQ3I0M2F3REZ3a01HaTFwL0NyNDNhd0xXWW44RllMYVhDTGdVb3diV1luOEZBb3FIQ0xnVW93YlR0OXIrUUdxSENoNlo0d1JTVkNzQXJhWnJDeHhLTXdVNDJXOEVDYWFEQ2g2WjR3VTQyVzhHZHQ1bkN4eEtNd1pOVUdzSHd5YURDaDZaNHdaTlVHc0dMR0pyQ3h4S013WmhhVGNITVE2VENFTzljd2J4b0pNRUxqS1RDRU85Y3dXWEY0cit6NzZUQ0VPOWN3VTQyVzhHL1NKbkNHRHVNd1pOVUdzR3RxWm5DR0R1TXdVNDJXOEh5WXBYQzdxV053Wk5VR3NIZ3c1WEM3cVdOd1JTVkNzQk4rcG5DR0R1TXdSU1ZDc0NBRkpiQzdxV053ZmZ3V01FOE5hRENlS2g1d2Zmd1dNSEkrNW5DaW5tTHdldVpITUZpajZEQ2VLaDV3ZXVaSE1IdFZackNpbm1Md1prTlRNSHp5cVBDcnVGZndYWDVKY0VpRHFUQ3J1RmZ3ZmZ3V01HcmxKbkNDWitMd2V1WkhNSFM3cG5DQ1orTHdmZndXTUc0OUpYQ2VmQ013ZXVaSE1IZFRwYkNlZkNNd1prTlRNR0hsS1RDUUtsandYWDVKY0cyMTZUQ1FLbGp3Vkkwb3NHd2JLTENPWUptd1R4VnQ4RWF0S0RDT1lKbXdXblcwTUg3TVo3Q09ZSm13Y3NLKzhFVXRKZkNRVnhud2NscUI4S2dvNURDUWxKbndXbTdCOEwvVXBEQ1FsSm53VHFqQjhLZW80ckNRbEpud1RxakI4SUZWNHJDUWxKbndVZ3FCOElGVjRyQ1FsSm53Y2pwQXNJRlY0ckNRbEpud1pOVW1zRzFyNkxDT1lKbXdlaUNVY0duRGFUQ09ZSm13ZWlDVWNIREc2UEN0ajlsd1duclQ4R2t0NkxDVXAxbndXbnJUOEUxZ2FQQzRXUnJ3Wm9wSThGSnk2UEM0V1Jyd1pvcEk4RzFBYVBDVXAxbndiQmlJY0ZwYTZQQ3RqOWx3YkJpSWNGT1hhVENPWUptd1h6UjZMOC91NlRDT1lKbXdYelI2TDljeWFQQ3RqOWx3VnZkMDcrbXNhUEN5WUJyd1pkY3pyK0F2YVRDdCs5andYZTA0TCs1eDZEQ0IyRjV3VWc0L0wrSXNKckNNUVdMd1VnNC9MK2tTNXJDNFNtTHdVZzQvTCtsdjViQ0QzU013VnZkMDcrME9LUENPTGxud1pkY3pyK05SS1RDSnloZ3dVSUNETUl6Ylk3Q1RjUVJ3Y3puQ3NLRWxZL0NGaFFVd1c5a0M4SUVCWS9DUys4andVU3BDc0lPdVkvQytIbzV3VDVOQ2NJblo1REMyaHBXd1Q0QUNjSW90SkRDMmhwV3dYUkgvc0VOaXBqQ1dkdFd3VCtxMHNIK1haL0M3NWRWd1hqRzBNRVJwNkRDcDNrb3dmS0R6OEdrTDZIQ2ZHY053V1UvOHNGOUhKM0NmR2NOd1VGbkJNSjBtWmpDZldjTndVS2pDc0lOMm8vQzBmRVR3VUcxQzhJenVvN0N6SjBSd2ZjUis4RTh5WmZDdUFZd3dZaDQ4c0VEanBmQ2tOSk13VXdMODhIaDRaZkM0em9Ud1cvWTRjRnVhNWZDa05KTXdTOXI0c0ZNdjVmQzR6b1R3Y0RSMmNFVGhKZkN1UVl3d1dDLzlzRklFcGJDblF3d3dWRmk4TUYzNXBYQ3gxdEZ3ZXpPOE1HRkpKYkNkYjBhd2N3VTVNSGV6SlhDeDF0RndXU0I1TUh0Q3BiQ2RiMGF3VmNrM3NFYjM1WENuZ3d3d1JLMDhjR3picFhDZlJNd3dlM3k3Y0haVkpYQ0M2WTh3UUV6N3NGM2VaWEM4b0Fqd2JldzVzRy9SWlhDQzZZOHdjbnc1c0ZjYXBYQzhvQWp3YVF2NDhHQ1VKWENmaE13d2JocjdjR1hXNVhDVXhrd3dhYmg2OEg5VUpYQzhFQTF3ZTc3NjhFQVlKWEN1dkVxd2NubjZNSE1TcFhDOEVBMXdROEM2Y0hQV1pYQ3V2RXF3ZjEzNThFMlQ1WENVeGt3d2JocjdjRllpSlhDVXhrd3dhYmg2OEc5ZlpYQzhFQTF3ZTc3NjhIQmpKWEN1dkVxd2NubjZNR05kNVhDOEVBMXdROEM2Y0dRaHBYQ3V2RXF3ZjEzNThIM2U1WENVeGt3d2Z3SGxNRmRKWlhDTUVlT3dVNDJXOEhYVkpiQ2MraU93VTQyVzhIWFZKYkNNRWVPd2Z3SGxNRmRKWlhDYytpT3daTlVHc0hHdFpiQ2MraU93Wk5VR3NIR3RaYkNNRWVPd2Jybm04RWs1cFRDTUVlT3dicm5tOEVrNXBUQ2MraU93ZXR4dE1IZlA1UENNRWVPd2V0eHRNSGZQNVBDYytpT3dXblcwTUZZQUpIQ01FZU93V25XME1GWUFKSENjK2lPd2ZHYjY4RXpiWTdDdDRtUHdmR2I2OEV6Ylk3QytTcVF3UlNWQ3NCbEJwZkNjK2lPd1JTVkNzQmxCcGZDTUVlT3dUYWxBc0RHdDVQQ1JGMnB3VGFsQXNCcGlaTENSRjJwd2RDYzRNR1ZIb3ZDUlhhbndld3B4OEZkZzR6Q1JGMnB3ZXdweDhHNnNZM0NSRjJwd2RDYzRNRTQ4SW5DUlhhbndjZ0lxTUhrd283Q1JGMnB3Y2dJcU1GQjhZL0NSRjJwd1ZrMmtjRXBhWkRDUkYycHdWazJrY0dHbDVIQ1JGMnB3WWxPRDhFblo1UENSRjJwd1lsT0Q4SEtPSkxDUkYycHdiVGppY0ZocUpEQ1JGMnB3YlRqaWNHKzFwSENSRjJwd2VkT1RNRTRCcFBDUkYycHdlZE9UTUhiMTVIQ1JGMnB3ZXUzaThGdGI1TEMycGVrd2Z2K1RzSG1ucFBDMnBla3dYZExFY0hWLzVQQzJwZWt3UUlrazhFME1KTEMycGVrd2FRVEJNQjFVSlRDMlpla3dWU3o3c0VNanBYQ2xSY3d3YzkvN01Ia2ZwWENuM1kzd1dHbDdNRmVsSlhDamJnb3dWYys2TUVNZHBYQ24zWTN3ZWhqNk1HRGk1WENqYmdvd1dNdzVzRmFmSlhDbFJjd3dWU3o3c0dzS3BiQ2xSY3d3YzkvN01HREc1YkNuM1kzd1dHbDdNSDlNSmJDamJnb3dWYys2TUdxRXBiQ24zWTN3ZWhqNk1FaUtKYkNqYmdvd1dNdzVzSDZHSmJDbFJjd3dXODc3TUdlT1piQ0liTXZ3Y0JPNjhFL001YkNzTXN5d1lsZTY4RkVQSmJDbEpvc3dTNkY2Y0dITDViQ3NNc3l3ZldVNmNHTk9KYkNsSm9zd1VlbzZNRXVNcGJDSWJNdndjQkZxc0h2aVpEQzJwZWt3WW5veU1Gb1NvN0MycGVrd1lUMzRjSFpob3ZDMnBla3dZVDM0Y0VzTUlyQzJwZWt3ZkdiNjhHRkZvM0MrU3FRd1RNOTdNR0ZGbzNDRlRtUHdicnhqOEV3MEpQQ3laR1p3Y1EwVmNHci81VEN5Wkdad1ZmakZjR1pZSlhDeVpHWndadVlsOEgza0pQQ3laR1p3VVZpQjhBNHNaWEN5Wkdad1pWeHI4R3k2cEhDeVpHWndXdnd6TUVzcTQvQ3laR1p3YjRyNThHQUY0M0N5Wkdad2I0cjU4SFR3SXZDeVpHWndSbnVqOEVyeVpQQ1dvS1p3VXUwaThGbmFKTENhb2lrd2ZxVWw4SHlpWlBDV29LWndXSWdrOEV1S1pMQ2FvaWt3Zmtya01HN3Y1TENCcUNad1JFK2pNRzNkNUhDR09DandmRG5sc0VYaUpMQ0JxQ1p3V0hEa3NIOVA1SEN0ZCtqd2JsWXFzR0lyNWJDOVZKb1FEV3d0c0U0cVpYQ3dMdUtRQkhSdHNGRHVKWENOZDJFUUk5aHE4RlFxNWJDVytaZlFBMjB2Y0cxVHBYQ3FIR0ZRQTlSdmNGbFpKWENNaHlBUUlmOHdzRTlHNVhDMld0d1FJZlN3OEhCLzVUQ295ZDZRRytheThGdUFwWEM3U29qUUpJc3lzRzBIWlhDOEJBZ1FBSU95Y0hldlpYQ1VDcDVQK0ZqeXNIOXI1WENYdFJrUDdRaXdNRnVzWmJDTDgzdHZTN0F3TUU4dDViQzdpcVJ2b3lSczhGdGhwZkNDdEdCdmdBeXM4SDVuSmZDV2hIZHZoSVJxTUc0OVpmQ1Jid0VQNEZGcWNHTDJKZkN5QzRnUDNHU3BNSHpsNWZDVzlrSFFQc0xwc0VEZ3BmQ3ZNY0dRQkhSdHNHb21wWENOZDJFUUk5aHE4RzFqWmJDVytaZlFJZjh3c0dpL1pUQzJXdHdRQTlSdmNIS1JwWENNaHlBUUpJc3lzRVpBSlhDOEJBZ1FBSU95Y0ZDb0pYQ1VDcDVQN1Fpd01IVGs1YkNNTTN0dll5UnM4SFNhSmZDQ3RHQnZvRkZxY0h2dXBmQ3lDNGdQL3NMcHNGb1pKZkN2TWNHUUJIUnRzRlVvNVBDTmQyRVFJOWhxOEZpbHBUQ1d1WmZRQTlSdmNGMlQ1UENNaHlBUUpJc3lzSEhDSlBDN3hBZ1FJZjh3c0ZQQnBQQzJXdHdRQUlPeWNIdXFKUENUeXA1UDdRaXdNRi9uSlRDTjgzdHZZeVJzOEYrY1pYQ0ROR0J2b0ZGcWNHYnc1WEN4eTRnUC9zTHBzRVRiWlhDdk1jR1FKRkp0OEV5ZDVMQ3M2OWVRSjBzcjhHaUk1UEN2UUpCUUJ6bXU4R3hPNUxDeUJoVlFOL3J2OEhLQjVMQ2E3dE1RQkx2eE1HRUNaTEN2YkVVUUhrb3hNR0NlSkxDUjkyaFAwemh2Y0gwSTVQQ21kaitQdUR2dE1HR3U1UENsTVhNUG1xd3JjRlQ5WlBDU21tQ1AweDBxOEZjdVpQQ1U5d0NRTUVPdU1FeUFwTENHVUVZUUo1aHRjRVRPNUxDQzNjT1FDNlV1Y0dSN3BIQ1NoY1ZRTjdudXNGeTNaSEM2VlFTUU9WYnZNSHkzWkhDNHhVQ1FEb2x2TUYrL0pIQzU5N2VQM013dXNIcU1aTENxVW5BUHlRdHQ4SDVaSkxDNXhHOFB3RHJ0TUg5ZHBMQy9NRFVQNGhOdE1GN1pwTEM3K1Q0UDNHU3BNRzlYSmZDVzlrSFFMbFlxc0ZSZEpiQzlWSm9RQklScU1HQ3VwZkNSYndFUHpXd3RzRURicFhDd0x1S1FBMjB2Y0YrRTVYQ3FIR0ZRSWZTdzhHSnhKVENveWQ2UUcrYXk4RTN4NVRDN1NvalFPRmp5c0hIZEpYQ1h0UmtQeTdBd01FRWZKYkM3aXFSdmdBeXM4SENZWmZDV2hIZHZuR1NwTUcySFlqQ1dka0hRTGxZcXNGTU5ZZkM4MUpvUUJJUnFNRjllNGpDUHJ3RVB6V3d0c0g4TG9iQ3dMdUtRQUF5czhHOUlvakNhUkhkdmcyMHZjRjUxSVhDcDNHRlFJZlN3OEdHaFlYQ29TZDZRRytheThFeWlJWEM2eW9qUU9GanlzSEJOWWJDVnRSa1B5N0F3TUgvUElmQy9TcVJ2cDB2dU1FOEVaTEMvb01NUUhOcXRzSGJOcExDY3dvR1FEQXh1Y0ZCQkpMQ1ltd0tRTjRSdXNIdStKSENMWmtJUUFYdXVzRTYrWkhDMXZmOVAxdlB1c0ZlQ3BMQzh3bnBQL21TdWNFZUxKTENnTGZWUDdDTXQ4RnVUcExDQnVMU1AyMGZ0c0hQV1pMQ1FIcmlQeExIdGNHTVVKTENtTUgyUDUwdnVNRjBUSkxDL29NTVFITnF0c0VUY3BMQ2N3b0dRREF4dWNGNFA1TENZbXdLUU40UnVzRWxOSkxDTFprSVFBWHV1c0Z3TkpMQzF2ZjlQMXZQdXNHVlJaTEM4d25wUC9tU3VjRlZaNUxDZ0xmVlA3Q010OEdsaVpMQ0J1TFNQMjBmdHNFR2xaTENRSHJpUHhMSHRjSERpNUxDbU1IMlArWHR0OEg1UzVMQ01QNGpRTWhZdE1FZW1KTENyK01XUU4rOXU4SEpHcExDbnhBY1FDejN1Y0cwTVpMQ0xjSWZRTURKdmNGOEc1TEM0QzhGUUJsN3ZjRnhSNUxDQWJUVVArdk51c0dKa0pMQ3d0dXFQNWZOdHNGWjFKTEM0VUdsUDVPMnM4SDk3SkxDcHdmSFAvN1Rzc0ZBMVpMQ0xRajdQK1h0dDhFTWRKUENNUDRqUU1oWXRNRXh3SlBDcitNV1FDejN1Y0hHV1pQQ0xjSWZRTis5dThIYlFwUENueEFjUU1ESnZjR1FRNVBDNEM4RlFCbDd2Y0dFYjVQQ0FiVFVQK3ZOdXNHYnVKUEN3dHVxUDVmTnRzRnMvSlBDNFVHbFA1TzJzOEVRRlpUQ3FBZkhQLzdUc3NGUi9aUENMZ2o3UDNwUXVNRmozSlBDM2NZQVFFbHp0OEhBN3BQQ29UdjdQelRPdU1FTTFwUEMzb0wvUDk4N3VjR0YwSlBDeXJyOVB5cUF1Y0dlMEpQQzlzUDNQM3Q1dWNGWjFKUEMyVFR6UDM3MXVNRnU0cFBDV3lYclB6cnN0OEgrODVQQ0hMTHBQOTFUdDhHOCtKUENmelB3UDUxQXQ4RzQ5cFBDVUo3MFA2Ti95TUdlU1pMQ1grV3RRTVJOMmNGeDVKRENhYUhNUUlONjJjSHQrSkRDYzZQRVFFSG95Y0hoUTVMQ0Z5bW9RTlNBNGNHbWVwREMrUUxHUUhVVDRjSG1scERDUUtXK1FMUU02c0VlSTVEQ3JtaXpRQmt3NjhHeC9ZL0NKUW02UUdMSTljRlVBWkRDN0o5OVFEYlc4OEY2SnBEQ3oyWjVRQUZROHNHTkFKSENHWWpvUDRVaDlNR3A3WkRDeDYvYVArOHE1c0UxVEpMQ1hwK3FQbHNCNThFYVZKTEN6WjdYUFVNTzFjRThicFBDTnAwVlBpcU0xTUh3akpQQ2tjakZ2YnJOeWNISUJaVENZME9aUDdOeHk4RU0zcFBDUGZPclB3Ykp3OEVaaHBQQ2tKOXhRQnZMeGNFNmFKUEM4eXB3UUlONjJjR2IwSkRDYzZQRVFFSG95Y0dRRzVMQ0Z5bW9RTFFNNnNITitvL0NybWl6UUhVVDRjR1ZicERDUUtXK1FEYlc4OEVwL28vQ3oyWjVRQUZROHNFOTJKRENHWWpvUCs4cTVzSGxJNUxDWHArcVBrTU8xY0hxUlpQQ05aMFZQck54eThHN3RaUENQZk9yUHh2THhjSHBQNVBDOHlwd1FJTjYyY0ZCSTQ3Q2M2UEVRRUhveWNFMGJvL0NGeW1vUUhVVDRjRTZ3WTNDUDZXK1FEYlc4OEhOVUkzQ3ptWjVRTFFNNnNGeFRZM0NybWl6UUFGUThzSGhLbzdDR1lqb1ArOHE1c0dKZG8vQ1c1K3FQa01PMWNHUW1KRENNSjBWUHJOeHk4RmhDSkhDUFBPclB4dkx4Y0dOa3BEQzhpcHdRSmdlMnNHU2lvekNtMVduUUlBU3o4RmZkWTNDWUNHVFFIV0MzOEVHUll6QzZMcWhRRVRnNWNIaDhvdkNWaHliUUl1ejdNRTY5WXZDdXVwcFFCNmw2OEZjakl6QytLVU5RTE1ZNDhIUGRZM0NnS1dWUDB6cjFzRXpSSTdDcTVtRVA4d016Y0hua283Q0MzandQOFVCeXNFL1FZN0NRcUpSUUJjcjI4RkM2NHZDc3NOdVFDeUcxOEcyT0l6Q1ZtOWhRRVh5M01GUjFJdkNLaEZyUU9jTDM4RTR1WXZDSzdObVFIWUc0Y0htdVl2Q0NwUlFRQWU4NE1GLzQ0dkM3UzQzUUNNUzNzRThMSXpDZkZ3aVFPUDMyY0hGY1l6Q2FIMGZRS2prMXNGS2lvekNsVXN3UUR3TzFzSFJjNHpDaitaSVFBYkp3OEY0TlpQQ2tKOXhRS04veU1IOStKSENYK1d0UUxyTnljRW50WlBDWTBPWlA4Uk4yY0hRazVEQ2FhSE1RTlNBNGNFRUtwREMrUUxHUUJrdzY4RVByWS9DSlFtNlFHTEk5Y0d6c0kvQzdKOTlRSVVoOU1FSW5aREN4Ni9hUDFzQjU4RjZBNUxDeko3WFBTcU0xTUZPUEpQQ2s4akZ2Y1VudzhIKytvWENqcDl4UUdMZXg4R0Z2b1RDWHVXdFFIZ3N5Y0d1ZW9iQ1lFT1pQNE9zMk1GWFdZUENhS0hNUU9qcTA4SFdBWWJDeU1qRnZVT0E4OEdRWW9QQ3hLL2FQeHBnNXNFQXlZVENsNTdYUGJoeTRzR003NExDK0FMR1FQb1Q0OEVFS3BEQytRTEdRTlNBNGNFRUtwREMrUUxHUUpMZjRNR003NExDK0FMR1FOWlgyOEc5LzR2Q3ljZGVRTW51Mk1INE1vekN4UFpWUU9lRTNNR1I4SXZDdWxWY1FJSG8zY0dsM292Q1FISlpRRWNVMzhFTTM0dkM3VnBNUUlQcTNzRmo5b3ZDR0JzK1FMYzczY0ZYSkl6Q2MvTXdRUHQ1MnNFUVU0ekNmZ1V2UUtHSTJNR1BZb3pDZzZNNVFGRVEyTUh6Vll6QzhuRkhRTlpYMjhGZVVJekN5Y2RlUU1udTJNR2FnNHpDeFBaVlFPZUUzTUV5UVl6Q3VsVmNRSUhvM2NGR0w0ekNRSEpaUUVjVTM4R3RMNHpDN1ZwTVFJUHEzc0VFUjR6Q0dCcytRTGM3M2NINWRJekNjL013UVB0NTJzR3lvNHpDZmdVdlFLR0kyTUV3czR6Q2c2TTVRRkVRMk1HVHBvekM4bkZIUUZmKzJzRzRUNHpDbmI5K1FKRWQxc0ZtdDR6QzYrZHNRRXd2NE1HOURJekNFL1J6UUtOZjNjRURNWXpDbDh4NVFLVDQ0c0d5RFl6Q0tNMVVRSXFONHNHTlNZekN4VUl3UUpEbzNzRVRyWXpDaDhVVFFNaDEyY0ZyQ1kzQ1R2VVBRTEJBMWNINEtvM0NvL01tUUNnTTFNR2pDbzNDS1Z0S1FGZisyc0hlNG8zQ25yOStRSkVkMXNHTlNvN0M3T2RzUUtOZjNjRXB4STNDbDh4NVFFd3Y0TUhsbjQzQ0UvUnpRS1Q0NHNIWm9JM0NLYzFVUUlxTjRzRzAzSTNDeGtJd1FKRG8zc0U2UUk3Q2g4VVRRTWgxMmNHUm5JN0NUdlVQUUxCQTFjRWZ2bzdDby9NbVFDZ00xTUhKblk3Q0tWdEtRSmVFMjhIemNJN0MzTXRPUUdkWDJzSDBpWTdDTTM1S1FJb1gzTUdLYVk3Q1JwcE5RQnpGM01ITFlJN0NWakZNUUJraTNjSHJZSTdDMGlGSVFBQVozY0VBWm83Q1FBZEZRRWhsM01Fc2VZN0NaNG8vUUJYODJzRVdrWTdDbUkwK1FKc3Myc0dNbDQ3Q2NmdENRR2NTMnNIT2xJN0NYUDFGUUdCQk5nQUFBQXFUeVQ0QUFBQUFBQUFBQUFBQUFBQU5rOGt5RFpQSlBnQUFBQUFOazhtK0RaUEpNZ0FBQUFBZHpYRENJaDgrd0VCQlVJZ0FBQWtSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRldEVXo5bi9DVS9OOEtlUGxBTk9ENjVUdFkrVUEwNFBpaXlPVDluL0NVL21TQjNQN2ZKVVQ4ZVhVOC90OGxSUDRCSk5qOHRZSEEvblBvalB5MWdjRC9EOGc4L1NJOUpQNEVzTmo4UGREQS95L1VuUHltQUREOE4wN1krZ0Jzb1BtaHBNVDhBeUU0L0xGYTJ2WExMV0Q4S0tpdzlBTWhPUHdMY0R6OXl5MWcvVDJaOVAvekkrajVyajBrK092UkNQL1orclQ3OHlQbytvZ3BaUHpyMFFqL0I2MnMvdUtJaVB2U0ppajY0b2lJK2ZFVURQMUFOT0Q1Mi9zNCtVQTA0UG5XaGF6OW4vQ1UvWTUrSFA3ZkpVVCtnWjA0L0xXQndQOGdZUEQ4dFlIQS9vRXBPUHc5ME1EL3dFQ2cvU0k5SlArc1RRRDhwZ0F3L1RRL25Qb0FiS0Q3czFUTStPdlJDUHh1SXFqd0F5RTQvS3NuaHZYTExXRCtpYlFvL2NzdFlQd2o3S3o4QXlFNC9ONktpUHZ6SStqN3Y5M2MvL01qNlBrS2NVejg2OUVJL2FGcC9QcmlpSWo1aGZXWS91S0lpUHI3emVqOEF4Z3c4ampCNVAvZ1lMRDc1SW5rL0FMVVBQRWVGZnovdzM4YzlRcjV6UDdDbExENnZzSE0vZ0lBWVBIc1FVeitJOFM4KzV3SlRQd0EvVFR5VTNDTS9pTFEwUGdIUEl6OEF1SXc4QUFBQVA4Q3lyRHdBQUFBLytMUTRQc3gxZVQ4dC8zby9OY3AvUC9ZRGFEK1JSbnMvZC9ONlA1UnBlVCs0UzFZL2dRTjBQMTBpZXo5STkzTS82RzVXUDdsVlV6OVU5WHMvZzBsVFA5dEJWei9USVNRL0dpWjlQNXNWSkQra2NsZy9BQUFBUDNZbmZqOEFBQUEveFhOWlAzM0hmejhLM0Y4LzNXWjVQOUlqVGorUjlITS8vMFpPUDhwR1V6LzJHVTgvNUJJa1A4SktVRDhBQUFBLzNFdFJQLzZIZno5UWp3UStSRE41UDJpNFRENzZ3SE0vRUVWTlBqSVRVejhBa1ZBK1M5OGpQeEJVVlQ0QUFBQS9zRlJaUG83aWVqK0FDUmc4RjNSL1B6Qkl5VDNLRVhrL2dQZ2FQSDJmY3o4QXhDTTh1UEZTUDRDQ1dEelJ2U00vd0ZtU1BBQUFBRCtBTXJJOEJMbC9Qd1F4YUQ5Z05Ycy9oeUI3UDV4a2VUOUdMSHMvVVBKelAzVlBleitLUkZNL2FDSjhQNlFRSkQ4NFUzMC9BQUFBUDNsVGZqOU90bjgvS0FsZ1A4NTJmeitvUXdVK1MrN1pQUGdZTEQ0MGlLRThBTVlNUE5xZzJ6d0F0UTg4aW5MMU92RGZ4ejNoRzBROXNLVXNQaFQxUkQyQWdCZzhGTDR6UG9qeEx6NWs5RE0rQUQ5TlBOaEd1RDZJdERRKy8yRzRQZ0M0akR3Q0xGYzY5Z05vUDM5RzBUd3QvM28vN1MyWFBIZnplaitCemRJOHVFdFdQL0hIUHoxZElucy9mSXRBUGVodVZqOGRxVEkrVlBWN1AvYlpNajdiUVZjL1dyeTNQaG9tZlQvTDFMYytwSEpZUHpZS1lqb0szRjgvWGlUVFBOSWpUai9ydGtBOS8wWk9QOW5rTWo3MkdVOC9PTnEzUHNKS1VEKzJCUEE2VUk4RVBvS1gyVHhvdUV3K1h2QkRQUkJGVFQ0MnN6TStBSkZRUG1wQnVENFFWRlUrUGE2alBJQUpHRHpyNkFzN01FakpQYy9HM1R5QStCbzhMUWhHUFFERUl6d2dPVFErZ0lKWVBGMkV1RDdBV1pJODEvZU5PZ1F4YUQ4TFZKazhoeUI3UDRoczB6eEdMSHMvQU50QVBYVlBlei9aN1RJK2FDSjhQN25ldHo0NFUzMC9abVNUT2lnSllEOEFNZ2s3cUVNRlBxVFhUeis0SmVJK1Q5UlBQOUNaNGo2V0VGQS90RFBpUGlHY1R6OTBqT0krcGRSUFA0Unh5RDcrMTA4Ly9KVEhQaHNSVUQ4VXI4YytUcHhQUDRoWXlENUU4azQvWkdYaVBtOHJUei9BL09FK1JpdFBQNHhJeHo3ejhVNC9hQS9JUHREUVNqL3NudUUrQ2ZwS1B6d3M0VDZhOWtvL0xNSEZQbEROU2orb21jWStvNEZFUDBBSDRUNXFqMFEvNkl2Z1BnQUFRRCtzOWVBK0FBQkFQNXg0NEQ3WWhrUS8rSWZFUGk1NVJEKzBiOFUrQUFCQVAvaFF4RDRBQUVBL3REdkZQbkZnVUQvc0o4cyt3WjVRUHp4d3lqN3cxMDgvSE1mTFBrMHJUei9VZjhzK0svZEtQK1FTeWo1QmlFUS9vTy9JUGdBQVFEK3N2Y2crLzUxUVAwd2E0RDdXWDFBL0ZJZmdQckxYVHo4b0dkNCthQ3RQUDJqcTNUNkkrVW8vOVB2Y1BpZU9SRDl3UXR3K0FBQkFQekFwM0Q0SG5sQS8yRFhmUHR4ZlVEL2twZDgrdGRkUFB4dzAzVDVuSzA4L0dBVGRQbXY1U2o4Y0Q5dyszNDFFUHh4UTJ6NEFBRUEva0RYYlBycWVVRCtJUnNzK2FtQlFQNGo3eXo3dDEwOC9GS0RNUGs4clR6L2NXY3crU1BkS1AyVHl5ajZKaUVRL3JOUEpQZ0FBUUQvRW9zaytUUk5RUDdpeXl6NXZqRTgvT0ZESlBoMVdUejhBT2NrKzhMRk9Qd0QxeUQ3VHRVby95SmpIUHFtalJEL29mY1krQUFCQVA1Qkh4ajVTakU4L1hIcmhQdWdTVUQ5a3R0OCtKRlpQUDBSdDRUNW5zazQvK0ViaFBoNjVTai9zZytBK1Y2dEVQelRyM3o0QUFFQS9iTmJmUHV3U1VEK3M1dDQrU1JOUVA2UjJ6RDVYR0ZBL3BLUExQbEtSVHo5Y1FNays4RnBQUHd3cHlUNlJ0azQvek9USVBpKzVTajlBaDhjKzJLUkVQekJyeGo0QUFFQS9tRFRHUGpHUlR6K1FjZUUrN3hkUVB5U3QzejcwV2s4L2JHVGhQZ2UzVGovMFBlRStlTHhLUHlCNjRENklyRVEvdE9EZlBnQUFRRC9FeTk4KzhoZFFQeWpkM2o1U0dGQS95R2ZNUHJVeFVEL01WOHMrOEtsUFA0VHd5RDQvYzA4L3hOaklQdXZOVGo5QWs4ZytITXBLUCtBdXh6N1Bxa1EvM0F6R1BnQUFRRC8wMU1VK3ZxbFBQMEJGNFQ0K01WQS9pSDdmUGpGelR6L2NOK0UrVWM1T1A2UVE0VDVmelVvL3VFamdQb215UkQvQXE5OCtBQUJBUHdpVzN6NURNVkEvVUszZVByRXhVRC80SE13KzBqWlFQNGhJeXo3bXJrOC9kT0RJUGlSNFR6K2d5TWcrb2RKT1A5U0N5RDZHelVvL0dCM0hQZ09zUkQvVStjVStBQUJBUDZ6QnhUNndyazgvV0R6aFBsZzJVRDhvZGQ4K0ZIaFBQK0F1NFQ0RDAwNC9nQWZoUHNmUVNqL0lQdUErdjdORVB4U2gzejRBQUVBL05JdmZQbHcyVUQrc285NCt6VFpRUCt3TnpENDVKRkEvY0ZmTFBueWRUeitZK2NnK04yZFBQeURpeUQ0dXcwNC9jSjNJUHNqSFNqOGdQY2MrRExaRVB3Z2R4ajRBQUVBL0pPVEZQbE9kVHorMEd1RSt5aU5RUDNSYzN6NHlaMDgvWkEzaFBwbkRUajlvNXVBK0JzdEtQNHdmNEQ2dHZVUS9oSUxmUGdBQVFEOEliTjgrenlOUVAvaU0zajQxSkZBL0FCdk1QckVyTUQvUW1lSStYQ2d3UDdnbDRqNXE3eTgvdERQaVB0OWpNRDkwak9JK0FpZ3dQL3lVeHo1Ykt6QS9oSEhJUHVYdUx6OFVyOGMrc21Nd1A0aFl5RDY4RFRFL1pHWGlQcEhVTUQvQS9PRSt1dFF3UDR4SXh6NE5EakUvYUEvSVBqQXZOVC9zbnVFKzl3VTFQendzNFQ1bUNUVS9MTUhGUHJBeU5UK29tY1krWFg0N1AwQUg0VDZXY0RzLzZJdmdQaWg1T3ovNGg4USswb1k3UDdSdnhUNlBueTgvN0NmTFBqOWhMejg4Y01vK0VDZ3dQeHpIeXo2ejFEQS8xSC9MUHRVSU5UL2tFc28rdjNjN1A2RHZ5RDRCWWk4L1RCcmdQaXFnTHo4VWgrQStUaWd3UHlnWjNqNlkxREEvYU9yZFBuZ0dOVC8wKzl3KzJYRTdQM0JDM0Q3NVlTOC8yRFhmUGlTZ0x6L2twZDgrU3lnd1B4dzAzVDZaMURBL0dBVGRQcFVHTlQ4Y0Q5dytJWEk3UHh4UTJ6NUdZUzgvaUViTFBwYWZMeitJKzhzK0V5Z3dQeFNnekQ2eDFEQS8zRm5NUHJnSU5UOWs4c28rZDNjN1A2elR5VDZ6N0M4L3VMTExQcEZ6TUQ4NFVNays0Nmt3UHdBNXlUNFFUakUvQVBYSVBpMUtOVC9JbU1jK1YxdzdQK2g5eGo2dWN6QS9YSHJoUGhqdEx6OWt0dDgrM0trd1AwUnQ0VDZaVFRFLytFYmhQdUpHTlQvc2crQStxVlE3UHpUcjN6NFU3Uzgvck9iZVByZnNMeitrZHN3K3FlY3ZQNlNqeXo2dWJqQS9YRURKUGhDbE1EOE1LY2srYjBreFA4emt5RDdSUmpVL1FJZkhQaWhiT3o4d2E4WSt6MjR3UDVCeDRUNFI2QzgvSkszZlBneWxNRDlzWk9FKytVZ3hQL1E5NFQ2SVF6VS9JSHJnUG5oVE96KzA0TjgrRHVndlB5amQzajZ1NXk4L3lHZk1Qa3ZPTHovTVY4cytFRll3UDRUd3lEN0JqREEveE5qSVBoVXlNVDlBazhnKzVEVTFQK0F1eHo0eFZUcy8zQXpHUGtKV01EOUFSZUUrd3M0dlA0aCszejdQakRBLzNEZmhQcTh4TVQra0VPRStvVEkxUDdoSTRENTNUVHMvd0t2ZlByM09MejlRcmQ0K1Q4NHZQL2djekQ0dXlTOC9pRWpMUGhwUk1EOTA0TWcrM0ljd1A2REl5RDVmTFRFLzFJTElQbm95TlQ4WUhjYysvVk03UDlUNXhUNVFVVEEvV0R6aFBxakpMejhvZGQ4KzdJY3dQK0F1NFQ3OUxERS9nQWZoUGprdk5UL0lQdUErUVV3N1B4U2gzejZreVM4L3JLUGVQalBKTHovc0Rjdyt4OXN2UDNCWHl6NkVZakEvbVBuSVBzbVlNRDhnNHNnKzBqd3hQM0NkeUQ0NE9EVS9JRDNIUHZSSk96OElIY1krcldJd1A3UWE0VDQyM0M4L2RGemZQczZZTUQ5a0RlRStaend4UDJqbTRENzZORFUvakIvZ1BsTkNPeitFZ3Q4K01kd3ZQL2lNM2o3TDJ5OC9BQnZNUHJzd1h6OHhleEEvekVkaFA0RHhGeisrVmw4L1FPY1dQNzhLWVQrbk9CRS8rVGhmUHoxTENqK0tBV0UvTUw4S1A1ZTZXRC96NkFJL1RITmVQeUoxQXordHhGdy9BRTBEUHhoVVdqOXlFZ00vbFRoVFArQm9Bai9kbVZRL2NaRUNQNE5XUkQvZHFRSS9UN05FUDQzaUFqOEFBRUEvdnEwQ1B3QUFRRDk5NXdJL0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWFmSmVQejdpQkQ5M1BsMC9SS29FUDdDOFhqOUo0aG8vZlR4aFA2MU5HVCtYdVdBL3R5UWNQK3BHWHovbU1oZy9ZMUJjUDk4Z0hUOWxSbDQvM0tBZVB3aHNWVDg0VVNBL2lDZFhQeUJsSWovczJrVS9DSVluUHdBQVFEKzh3Q1EvNkZSRlA2ZDZKRDhBQUVBL2N0OG5QMkd1VHovU1hpVS9NbUJPUDRIQklqODB1QjQvZ1BFWFAwWFBJRDh4ZXhBL1Fxa2dQMERuRmo5QjlSNC9wemdSUHdmSElEODlTd28vZHY0ZVB6Qy9DaiswakNFL0luVURQMmxGSnovejZBSS9VenNqUHdCTkF6L29xeVUvY2hJRFAydkhMRC9nYUFJL0kyWXJQM0dSQWo5OXFUcy8zYWtDUDdGTU96K040Z0kvbHcwaFB6N2lCRCtKd1NJL1JLb0VQNFBESGordFRSay9VRU1oUDBuaUdqOXBSaDgvdHlRY1B4YTVJRC9tTWhnL25hOGpQOThnSFQrYnVTRS8zS0FlUC9pVEtqODRVU0EvZU5nb1B5QmxJajhVSlRvL0NJWW5QeGlyT2orbmVpUS9uMUV3UDlKZUpUL09uekUvZ2NFaVAvajJNVCtuNXlFL25jMDZQd0tFSXorTENTcy9OSndmUHdBQVFEOU14U00vTkRja1B5aVdIRCs4elNFL1huQWFQOXRCSVQrNjJ4Yy81REFoUCtTY0ZqL3VzQ00vQjg4RFA2MDRJejhzSFFVL0xFUWhQM2lBQ2ovS3dUcy8zVmdEUDlJbExUOXBDZ00vQUFCQVA0WmRBejhtdENjL3Eza0RQK3RRSVQ4MWNSQS9ZekpGUHdLRUl6OElDVTQvcCtjaFAzWDJWRDgwbkI4L3pNaGJQeWlXSEQ5RU1sNC9YbkFhUHlXK1hqKzYyeGMvSE05ZVArU2NGajlUeDF3L0xCMEZQeEpQWEQ4SHp3TS8xTHRlUDNpQUNqODJQa1EvM1ZnRFB5N2FVajlwQ2dNLzJrdFlQNnQ1QXo4VnIxNC9OWEVRUDk0SE1UOHd6U00vZ0c0NlB5RzBKVC9reUNrLzRDSWhQd0FBUUQ5b0FpWS81Y2NpUDN1MEhUK0FrVVUvSWJRbFA3WlhJRDlKWWhzL29kQWZQM2V3R0QvVXdoOC9iR1VYUDFIekh6OGdBUkUvcEhNaVB4cnlBejlUOXlFL3NVc0ZQL3Z5SHo5NzJnby9VSWdtUCsyZUF6ODZmenMvR1kwRFB4MGxMRCtLTUFNL0FBQkFQNnlTQXovR2dFUS9HWTBEUHlMNFRqOHd6U00vSERkV1ArQWlJVDhiT0YwL2U3UWRQMHFvWHo5Sllocy9YeTlnUDNld0dEOHNQV0EvYkdVWFA2OE1ZRDhnQVJFL3JRaGVQN0ZMQlQ5Y2pGMC9HdklEUHdVTllEOTcyZ28vc0hkWlArMmVBei9qMmxNL2lqQURQekEwWGorQXpwZyszaGRsUHhnZHBENHdORjQvN0RlWlB0NFhaVDhVdWFNK0ZSaFhQM0F3ano0VkdGYy9ESjJQUHVaR1pqOWdUYVkrNWtabVA2enFwVDVlSUdvL3dFS3NQbDRnYWovMDQ2cytJZzl1UDZ5MHNqNGlEMjQvckZxeVBwcHJjVCtRazdjK21tdHhQM3crdHo1S3VVVS9tQkdEUGtxNVJUOFlnSU0rQUFCQVB6QkRnajRBQUVBL3VMR0NQZ0FBUUQ4SStrbythd3RHUDJDVVV6NEFBRUEvUU5sUlBrRlFSajk0MTB3KzAxdHdQNnpxbmo3YTQzSS9XQm1uUHVHSWJ6OWNqWjgraDZwelAyU25wajRVRW13LzNKV1ZQand3YXorZ2c1WStOREZvUDVoOWpqNmxTR2MvV0xPUFBvRGRWejl3RjIwK09iWllQNkFrYUQ1TEJHYy9vT21MUGh3WlpqK1lPSTArRkNkZlAyUVlnVDZxRTJBL1VHeCtQamJuWlQ5QU9wRSt3ZmRlUDBSQ2hUN0p0bGMvbUtWMVByRVdaei9FcXBNK0wvdEZQK2c0WEQ0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDbCsyby81RnVhUGlKQmJ6OHM2NkkrQWJOeVA1QVhxVDRBQUVBL0dJRmFQaytTY3orWWw2ZytGejF5UCtUSHRqN0tSWEkveEc2M1BnbDZaVC9zbFpvK2pwQmVQMHdWano3S1lsYy9UQUNGUGxHcFpqKzg2WncrTGRoRlA1QUNjVDVWaUdvL3hFV2pQcHFoYmo5TXY2bytBZjV4UDlTK3NENEFBRUEvNEZWdlBnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN5MVhJL0dFT3dQdmpyWlQvNE9aRStrbjVsUDV5V21qN1lyV1kvNk9xY1BtOGJaejhJcTVNKzdMVm1QNlRIa0Q3a1IyWS9DSW1aUHB4Ulp6L01xSnMreTc1blAxRDlrajQzd3A0K1VBMDRQbFdEVXo5bi9DVS91VTdXUGxBTk9ENG9zamsvWi93bFA1a2dkeiszeVZFL0hsMVBQN2ZKVVQrQVNUWS9MV0J3UDV6Nkl6OHRZSEEvdy9JUFAwaVBTVCtCTERZL0QzUXdQOHYxSno4cGdBdy9EZE8yUG9BYktENHNWcmE5Y3N0WVA2SUtXVDg2OUVJL2E0OUpQanIwUWo4QzNBOC9jc3RZUDA5bWZULzh5UG8rOW42dFB2ekkrajdCNjJzL3VLSWlQdlNKaWo2NG9pSStmRVVEUDFBTk9ENTIvczQrVUEwNFBuV2hhejluL0NVL1k1K0hQN2ZKVVQrZ1owNC9MV0J3UDhnWVBEOHRZSEEvb0VwT1B3OTBNRC93RUNnL1NJOUpQK3NUUUQ4cGdBdy9UUS9uUG9BYktEN3MxVE0rT3ZSQ1B5cko0YjF5eTFnL29tMEtQM0xMV0Q5Q25GTS9PdlJDUHplaW9qNzh5UG8rNy9kM1AvekkrajVvV244K3VLSWlQbUY5WmorNG9pSStBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNMb0dqOFlIYVErME1zaFA0RE9tRDdReXlFLzdEZVpQaUxvR2o4VXVhTSs2K2NvUDNBd2p6N3I1eWcvREoyUFBocTVHVDlnVGFZK0dya1pQNnpxcFQ2aTN4VS93RUtzUHFMZkZULzA0NnMrM3ZBUlA2eTBzajdlOEJFL3JGcXlQbWFVRGorUWs3YytacFFPUDN3K3R6NjJSam8vbUJHRFByWkdPajhZZ0lNK2xmUTVQMkNVVXo2L3J6ay9lTmRNUGlZY0RUOVlHYWMrTGFRUFA2enFuajRmZHhBL1hJMmZQbmxWREQ5a3A2WSs3TzBUUDl5VmxUN0V6eFEvb0lPV1Bzek9GeitZZlk0K1c3Y1lQMWl6ano2QUlpZy9jQmR0UHNkSkp6K2dKR2crdGZzWVA2RHBpejdrNWhrL21EaU5QdXpZSUQ5a0dJRStWdXdmUDFCc2ZqN0tHQm8vUURxUlBqOElJVDlFUW9VK04wa29QNWlsZFQ1UDZSZy94S3FUUHRFRU9qL29PRncrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBV3dRVlArUmJtajdldmhBL0xPdWlQdjlNRFQrUUY2aytzVzBNUDVpWHFEN3B3ZzAvNU1lMlBqYTZEVC9FYnJjKzk0VWFQK3lWbWo1eWJ5RS9UQldQUGphZEtEOU1BSVUrcjFZWlA3enBuRDdUSnpvL2tBSnhQcXQzRlQvRVJhTStabDRSUDB5L3FqNy9BUTQvMUw2d1BrNHFEVDhZUTdBK2JvRWFQNXlXbWo0SUZCby8rRG1SUGloU0dUL282cHcra2VRWVB3aXJrejRjdUJrL0NJbVpQaFJLR1Qra3g1QStaSzRZUDh5b216NDFRUmcvVVAyU1BnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHaHBNVDhBeUU0L0Npb3NQUURJVGo4YmlLbzhBTWhPUHdqN0t6OEF5RTQvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQkJoNm9CQUdZZUFBQUJBQUlBQndBQUFBTUFBUUFIQUFRQUF3QUZBQWNBQkFBQkFBTUFCd0FHQUFBQUFnQUhBQVlBQndBQUFBY0FBUUFHQUFJQUJ3QUJBQWdBQmdBSEFBUUFDQUFCQUFjQUJBQUpBQWdBQndBQUFBb0FBd0FIQUFBQUJ3QUtBQWNBQ2dBRkFBTUFCd0FLQUFzQUJRQUhBQVlBREFBSEFBY0FCZ0FOQUF3QUJ3QU9BQTBBRHdBSEFBNEFEQUFOQUFjQUNBQU5BQVlBQndBSUFCQUFEUUFIQUE4QUVBQVJBQWNBRHdBTkFCQUFCd0FTQUFnQUNRQUhBQklBRUFBSUFBY0FFUUFTQUJNQUJ3QVJBQkFBRWdBSEFBd0FDZ0FIQUFjQURBQVVBQW9BQndBVkFBd0FEZ0FIQUJVQUZBQU1BQWNBQ2dBV0FBc0FCd0FLQUJRQUZnQUhBQmNBRkFBVkFBY0FGd0FXQUJRQUJ3QVlBQmtBR2dBSEFCZ0FHd0FaQUFjQUhBQWJBQjBBQndBY0FCa0FHd0FIQUI0QUdBQWFBQWNBSGdBZkFCZ0FCd0FaQUI0QUdnQUhBQmtBSUFBZUFBY0FIQUFnQUJrQUJ3QWNBQ0VBSUFBSEFCZ0FJZ0FiQUFjQUdBQWZBQ0lBQndBaUFCMEFHd0FIQUNJQUl3QWRBQWNBSGdBa0FCOEFCd0FlQUNVQUpBQUhBQ1lBSlFBbkFBY0FKZ0FrQUNVQUJ3QWdBQ1VBSGdBSEFDQUFLQUFsQUFjQUp3QW9BQ2tBQndBbkFDVUFLQUFIQUNvQUlBQWhBQWNBS2dBb0FDQUFCd0FwQUNvQUt3QUhBQ2tBS0FBcUFBY0FKQUFpQUI4QUJ3QWtBQ3dBSWdBSEFDMEFKQUFtQUFjQUxRQXNBQ1FBQndBaUFDNEFJd0FIQUNJQUxBQXVBQWNBTHdBc0FDMEFCd0F2QUM0QUxBQUhBREFBTVFBeUFBY0FNQUF6QURFQUJ3QTBBRE1BTUFBSEFEUUFOUUF6QUFjQU5RQTJBRGNBQndBMUFEUUFOZ0FIQURnQU9RQTZBQWNBT0FBN0FEa0FCd0E3QURZQU9RQUhBRHNBTndBMkFBY0FQQUE3QURnQUJ3QThBRDBBT3dBSEFEMEFOd0E3QUFjQVBRQTFBRGNBQndBK0FEMEFQQUFIQUQ0QVB3QTlBQWNBUHdBMUFEMEFCd0EvQURNQU5RQUhBRUFBUHdBK0FBY0FRQUJCQUQ4QUJ3QkJBRE1BUHdBSEFFRUFNUUF6QUFjQU9nQkNBRU1BQndBNkFEa0FRZ0FIQURrQU5BQkNBQWNBT1FBMkFEUUFCd0JEQUVRQVJRQUhBRU1BUWdCRUFBY0FRZ0F3QUVRQUJ3QkNBRFFBTUFBSEFFVUFSZ0JIQUFjQVJRQkVBRVlBQndCRUFESUFSZ0FIQUVRQU1BQXlBQWNBU0FCSkFFb0FCd0JJQUVzQVNRQUhBRXNBVEFCTkFBY0FTd0JJQUV3QUJ3QkpBRTRBU2dBSEFFa0FUd0JPQUFjQVRnQklBRW9BQndCT0FGQUFTQUFIQUZBQVRBQklBQWNBVUFCUkFFd0FCd0JTQUVrQVN3QUhBRklBVHdCSkFBY0FUUUJTQUVzQUJ3Qk5BRk1BVWdBSEFGUUFUZ0JQQUFjQVZBQlZBRTRBQndCVkFBNEFEd0FIQUZVQVZBQU9BQWNBVlFCUUFFNEFCd0JWQUZZQVVBQUhBRllBRHdBUkFBY0FWZ0JWQUE4QUJ3QlFBRmNBVVFBSEFGQUFWZ0JYQUFjQVZ3QVJBQk1BQndCWEFGWUFFUUFIQUZJQVZBQlBBQWNBVWdCWUFGUUFCd0JVQUJVQURnQUhBRlFBV0FBVkFBY0FXUUJTQUZNQUJ3QlpBRmdBVWdBSEFGZ0FGd0FWQUFjQVdBQlpBQmNBQndCYUFGc0FYQUFIQUZvQVhRQmJBQWNBWFFCZUFGOEFCd0JkQUZvQVhnQUhBRnNBWUFCY0FBY0FXd0JoQUdBQUJ3QmdBRm9BWEFBSEFHQUFZZ0JhQUFjQVlnQmVBRm9BQndCaUFHTUFYZ0FIQUdRQVd3QmRBQWNBWkFCaEFGc0FCd0JmQUdRQVhRQUhBRjhBWlFCa0FBY0FaZ0JnQUdFQUJ3Qm1BR2NBWUFBSEFHY0FKZ0FuQUFjQVp3Qm1BQ1lBQndCbkFHSUFZQUFIQUdjQWFBQmlBQWNBYUFBbkFDa0FCd0JvQUdjQUp3QUhBR0lBYVFCakFBY0FZZ0JvQUdrQUJ3QnBBQ2tBS3dBSEFHa0FhQUFwQUFjQVpBQm1BR0VBQndCa0FHb0FaZ0FIQUdZQUxRQW1BQWNBWmdCcUFDMEFCd0JyQUdRQVpRQUhBR3NBYWdCa0FBY0FhZ0F2QUMwQUJ3QnFBR3NBTHdBSEFERUFiQUF5QUFjQU1RQnRBR3dBQndCdEFHNEFiQUFIQUcwQWJ3QnVBQWNBY0FCdkFIRUFCd0J3QUc0QWJ3QUhBSElBY3dCMEFBY0FjZ0IxQUhNQUJ3QndBSFVBY2dBSEFIQUFjUUIxQUFjQWRRQjJBSE1BQndCMUFIY0FkZ0FIQUhFQWR3QjFBQWNBY1FCdkFIY0FCd0IzQUhnQWRnQUhBSGNBZVFCNEFBY0Fid0I1QUhjQUJ3QnZBRzBBZVFBSEFIa0FRQUI0QUFjQWVRQkJBRUFBQndCdEFFRUFlUUFIQUcwQU1RQkJBQWNBZWdCMEFIc0FCd0I2QUhJQWRBQUhBRzRBY2dCNkFBY0FiZ0J3QUhJQUJ3QjhBSHNBZlFBSEFId0FlZ0I3QUFjQWJBQjZBSHdBQndCc0FHNEFlZ0FIQUVZQWZRQkhBQWNBUmdCOEFIMEFCd0F5QUh3QVJnQUhBRElBYkFCOEFBY0FmZ0IvQUlBQUJ3QitBSUVBZndBSEFJSUFmZ0NEQUFjQWdnQ0JBSDRBQndDRUFJTUFoUUFIQUlRQWdnQ0RBQWNBaGdDRkFJY0FCd0NHQUlRQWhRQUhBSWdBaHdDSkFBY0FpQUNHQUljQUJ3Q0lBSW9BaXdBSEFJZ0FpUUNLQUFjQWl3Q01BSTBBQndDTEFJb0FqQUFIQUkwQWpnQ1BBQWNBalFDTUFJNEFCd0NQQUpBQWtRQUhBSThBamdDUUFBY0FrUUNTQUpNQUJ3Q1JBSkFBa2dBSEFKSUFsQUNUQUFjQWtnQ1ZBSlFBQndDVkFKWUFsQUFIQUpVQWx3Q1dBQWNBbHdDWUFKWUFCd0NYQUprQW1BQUhBSmtBbWdDWUFBY0FtUUNiQUpvQUJ3Q2JBSndBbWdBSEFKc0FuUUNjQUFjQW5nQ2NBSjBBQndDZUFKOEFuQUFIQUtBQW53Q2VBQWNBb0FDaEFKOEFCd0NBQUtFQW9BQUhBSUFBZndDaEFBY0FpZ0NIQUl3QUJ3Q0tBSWtBaHdBSEFJd0FoUUNPQUFjQWpBQ0hBSVVBQndDRkFKQUFqZ0FIQUlVQWd3Q1FBQWNBa0FCK0FKSUFCd0NRQUlNQWZnQUhBSDRBbFFDU0FBY0FmZ0NBQUpVQUJ3Q0FBSmNBbFFBSEFJQUFvQUNYQUFjQW9BQ1pBSmNBQndDZ0FKNEFtUUFIQUo0QW13Q1pBQWNBbmdDZEFKc0FCd0NpQUtNQXBBQUhBS0lBcFFDakFBY0FwZ0NuQUtnQUJ3Q21BS2tBcHdBSEFLb0FxQUNyQUFjQXFnQ21BS2dBQndDc0FLMEFyZ0FIQUt3QXF3Q3RBQWNBcndDdEFMQUFCd0N2QUs0QXJRQUhBTEVBc2dDekFBY0FzUUMwQUxJQUJ3QzFBTFlBdHdBSEFMVUF1QUMyQUFjQXVBQzVBTFlBQndDNEFMb0F1UUFIQUxvQXV3QzVBQWNBdWdDOEFMc0FCd0M4QUwwQXV3QUhBTHdBdmdDOUFBY0F2Z0MvQUwwQUJ3QytBTUFBdndBSEFNRUF0QUN4QUFjQXdRRENBTFFBQndEREFMZ0F0UUFIQU1NQXhBQzRBQWNBeEFDNkFMZ0FCd0RFQU1VQXVnQUhBTVVBdkFDNkFBY0F4UURHQUx3QUJ3REdBTDRBdkFBSEFNWUF4d0MrQUFjQXh3REFBTDRBQndESEFNZ0F3QUFIQUxrQXlRQzJBQWNBdVFES0FNa0FCd0RLQUtnQXlRQUhBTW9BcXdDb0FBY0F1d0RLQUxrQUJ3QzdBTXNBeWdBSEFNc0Fxd0RLQUFjQXl3Q3RBS3NBQndDOUFNc0F1d0FIQUwwQXpBRExBQWNBekFDdEFNc0FCd0RNQUxBQXJRQUhBTDhBekFDOUFBY0F2d0ROQU13QUJ3RE5BTEFBekFBSEFNMEF6Z0N3QUFjQXpnRFBBTkFBQndET0FNMEF6d0FIQUxZQTBRQzNBQWNBdGdESkFORUFCd0RKQUtjQTBRQUhBTWtBcUFDbkFBY0FzZ0RTQUxNQUJ3Q3lBTk1BMGdBSEFOTUFvd0RTQUFjQTB3Q2tBS01BQndEVUFMQUF6Z0FIQU5RQXJ3Q3dBQWNBMVFET0FOQUFCd0RWQU5ZQXpnQUhBTllBMUFET0FBY0ExZ0RYQU5RQUJ3RFlBSzRBcndBSEFOZ0EyUUN1QUFjQTJRRGFBSzRBQndEWkFOc0EyZ0FIQUt3QTJnRGNBQWNBckFDdUFOb0FCd0RkQU40QTN3QUhBTjBBNEFEZUFBY0E0UURmQU9JQUJ3RGhBTjBBM3dBSEFOVUEzZ0RnQUFjQTFRRFFBTjRBQndEakFOMEE0UUFIQU9NQTVBRGRBQWNBNUFEZ0FOMEFCd0RrQU9VQTRBQUhBT1VBMVFEZ0FBY0E1UURtQU5VQUJ3RG1BTllBMVFBSEFPWUE1d0RXQUFjQTV3RFhBTllBQndEbkFPZ0Exd0FIQU9rQTJRRFlBQWNBNlFEcUFOa0FCd0RxQU5zQTJRQUhBT29BNndEYkFBY0E2d0RhQU5zQUJ3RHJBT3dBMmdBSEFPd0EzQURhQUFjQTdBRHRBTndBQndEdUFLWUFxZ0FIQU80QTd3Q21BQWNBN3dDcEFLWUFCd0R2QVBBQXFRQUhBUEVBcFFDaUFBY0E4UUR5QUtVQUJ3RHpBTWdBeHdBSEFQTUE5QURJQUFjQTlRREhBTVlBQndEMUFQTUF4d0FIQVBZQXhnREZBQWNBOWdEMUFNWUFCd0QzQU1VQXhBQUhBUGNBOWdERkFBY0ErQURFQU1NQUJ3RDRBUGNBeEFBSEFQa0F3Z0RCQUFjQStRRDZBTUlBQndEN0FQUUE4d0FIQVBzQS9BRDBBQWNBL1FEekFQVUFCd0Q5QVBzQTh3QUhBUDRBOVFEMkFBY0EvZ0Q5QVBVQUJ3RC9BUFlBOXdBSEFQOEEvZ0QyQUFjQUFBSDNBUGdBQndBQUFmOEE5d0FIQUFFQitnRDVBQWNBQVFFQ0Fmb0FCd0FEQVFRQkJRRUhBQU1CQmdFRUFRY0FCUUVIQVFnQkJ3QUZBUVFCQndFSEFBa0JCZ0VEQVFjQUNRRUtBUVlCQndBSUFRc0JEQUVIQUFnQkJ3RUxBUWNBREFFTkFRNEJCd0FNQVFzQkRRRUhBQTRCRHdFUUFRY0FEZ0VOQVE4QkJ3QUdBUkVCQkFFSEFBWUJFZ0VSQVFjQUJBRVRBUWNCQndBRUFSRUJFd0VIQUFvQkVnRUdBUWNBQ2dFVUFSSUJCd0FIQVJVQkN3RUhBQWNCRXdFVkFRY0FDd0VXQVEwQkJ3QUxBUlVCRmdFSEFBMEJGd0VQQVFjQURRRVdBUmNCQndBWUFSa0JHZ0VIQUJnQkd3RVpBUWNBQXdFWUFRa0JCd0FEQVJzQkdBRUhBQnNCSEFFWkFRY0FHd0VkQVJ3QkJ3QUZBUnNCQXdFSEFBVUJIUUViQVFjQUhnRWRBUjhCQndBZUFSd0JIUUVIQUFVQkh3RWRBUWNBQlFFSUFSOEJCd0FmQVNBQkhnRUhBQjhCSVFFZ0FRY0FDQUVoQVI4QkJ3QUlBUXdCSVFFSEFDRUJJZ0VnQVFjQUlRRWpBU0lCQndBT0FTRUJEQUVIQUE0Qkl3RWhBUWNBSXdFa0FTSUJCd0FqQVNVQkpBRUhBQkFCSXdFT0FRY0FFQUVsQVNNQkJ3QW1BUmtCSEFFSEFDWUJKd0VaQVFjQUp3RWFBUmtCQndBbkFTZ0JHZ0VIQUNrQkp3RW1BUWNBS1FFcUFTY0JCd0FxQVNnQkp3RUhBQ29CS3dFb0FRY0FMQUV0QVM0QkJ3QXNBUzhCTFFFSEFDOEJNQUV0QVFjQUx3RXhBVEFCQndBeUFRSUJBUUVIQURJQk13RUNBUWNBTkFIL0FBQUJCd0EwQVRVQi93QUhBRFVCL2dEL0FBY0FOUUUyQWY0QUJ3QTJBZjBBL2dBSEFEWUJOd0g5QUFjQU53SDdBUDBBQndBM0FUZ0Ird0FIQURnQi9BRDdBQWNBT0FFNUFmd0FCd0F6QVN3QkxnRUhBRE1CTWdFc0FRY0FLUUU2QVNvQkJ3QXBBVHNCT2dFSEFDb0JQQUVyQVFjQUtnRTZBVHdCQndBMEFTa0JOUUVIQURRQk93RXBBUWNBTlFFbUFUWUJCd0ExQVNrQkpnRUhBRFlCSEFFM0FRY0FOZ0VtQVJ3QkJ3QTRBUndCSGdFSEFEZ0JOd0VjQVFjQUlBRTRBUjRCQndBZ0FUa0JPQUVIQUQwQjR3RGhBQWNBUFFFK0FlTUFCd0EvQWVFQTRnQUhBRDhCUFFIaEFBY0FRQUVnQVNJQkJ3QkFBVUVCSUFFSEFFSUJJZ0VrQVFjQVFnRkFBU0lCQndCREFVRUJRQUVIQUVNQlJBRkJBUWNBUlFGQUFVSUJCd0JGQVVNQlFBRUhBRVlCUkFGREFRY0FSZ0ZIQVVRQkJ3QklBVU1CUlFFSEFFZ0JSZ0ZEQVFjQVBnRS9BVWtCQndBK0FUMEJQd0VIQUVvQlFRRkVBUWNBU2dGTEFVRUJCd0E1QVVFQlN3RUhBRGtCSUFGQkFRY0FSd0ZLQVVRQkJ3QkhBVXdCU2dFSEFPSUFUUUUvQVFjQTRnQk9BVTBCQndCT0FmUUFUUUVIQUU0QnlBRDBBQWNBM3dCT0FlSUFCd0RmQUU4QlRnRUhBRThCeUFCT0FRY0FUd0hBQU1nQUJ3RGVBRThCM3dBSEFONEFVQUZQQVFjQVVBSEFBRThCQndCUUFiOEF3QUFIQU5BQVVBSGVBQWNBMEFEUEFGQUJCd0RQQUw4QVVBRUhBTThBelFDL0FBY0FUUUZNQVQ4QkJ3Qk5BVW9CVEFFSEFQUUFTZ0ZOQVFjQTlBQkxBVW9CQndEOEFFc0I5QUFIQVB3QU9RRkxBUWNBUGdGUkFlTUFCd0ErQVZJQlVRRUhBRklCVXdGUkFRY0FVZ0ZVQVZNQkJ3RGpBRlVCNUFBSEFPTUFVUUZWQVFjQVVRRldBVlVCQndCUkFWTUJWZ0VIQU9RQVZ3SGxBQWNBNUFCVkFWY0JCd0JWQVZnQlZ3RUhBRlVCVmdGWUFRY0E1UUJaQWVZQUJ3RGxBRmNCV1FFSEFGY0JXZ0ZaQVFjQVZ3RllBVm9CQndEbUFGc0I1d0FIQU9ZQVdRRmJBUWNBV1FGY0FWc0JCd0JaQVZvQlhBRUhBT2dBV3dGZEFRY0E2QURuQUZzQkJ3QmRBVjRCWHdFSEFGMEJZQUZlQVFjQTZRQmhBZW9BQndEcEFGOEJZUUVIQUY4QllnRmhBUWNBWHdGZUFXSUJCd0RxQUdNQjZ3QUhBT29BWVFGakFRY0FZUUZrQVdNQkJ3QmhBV0lCWkFFSEFPc0FaUUhzQUFjQTZ3QmpBV1VCQndCakFXWUJaUUVIQUdNQlpBRm1BUWNBN1FCbEFXY0JCd0R0QU93QVpRRUhBR2NCYUFGcEFRY0Fad0ZxQVdnQkJ3RHVBR3NCN3dBSEFPNEFhUUZyQVFjQWFRRnNBV3NCQndCcEFXZ0JiQUVIQU84QWJRSHdBQWNBN3dCckFXMEJCd0JyQVc0QmJRRUhBR3NCYkFGdUFRY0E4UUJ2QWZJQUJ3RHhBSEFCYndFSEFIQUJjUUZ2QVFjQWNBRnlBWEVCQndCU0FVa0Jjd0VIQUZJQlBnRkpBUWNBZEFGU0FYTUJCd0IwQVZRQlVnRUhBSFVCdHdEUkFBY0FkUUYyQWJjQUJ3QjNBZEVBcHdBSEFIY0JkUUhSQUFjQWVBSDRBSGtCQndCNEFRQUIrQUFIQUhvQlBBRTZBUWNBZWdGN0FUd0JCd0NwQUhjQnB3QUhBS2tBZkFGM0FRY0F0d0I5QWJVQUJ3QzNBSFlCZlFFSEFINEJ0UUI5QVFjQWZnSERBTFVBQndCOEFmQUFmd0VIQUh3QnFRRHdBQWNBZVFIREFINEJCd0I1QWZnQXd3QUhBSUFCQUFGNEFRY0FnQUUwQVFBQkJ3Q0JBVG9CT3dFSEFJRUJlZ0U2QVFjQWdBRTdBVFFCQndDQUFZRUJPd0VIQVBBQWdnRi9BUWNBOEFCdEFZSUJCd0J0QVlNQmdnRUhBRzBCYmdHREFRY0FvZ0NFQVlVQkJ3Q2lBS1FBaEFFSEFId0JoQUYzQVFjQWZBR0ZBWVFCQndDeUFJWUJod0VIQUxJQXRBQ0dBUWNBZGdHR0FYMEJCd0IyQVljQmhnRUhBSWdCZlFHR0FRY0FpQUYrQVgwQkJ3RENBSVlCdEFBSEFNSUFpQUdHQVFjQWZ3R0ZBWHdCQndCL0FZa0JoUUVIQUtJQWlRSHhBQWNBb2dDRkFZa0JCd0I1QVlnQmlnRUhBSGtCZmdHSUFRY0ErZ0NJQWNJQUJ3RDZBSW9CaUFFSEFJc0JlQUdNQVFjQWl3R0FBWGdCQndBekFZd0JBZ0VIQURNQml3R01BUWNBaXdFdUFZMEJCd0NMQVRNQkxnRUhBSUFCalFHQkFRY0FnQUdMQVkwQkJ3Q0NBWWtCZndFSEFJSUJqZ0dKQVFjQThRQ09BWEFCQndEeEFJa0JqZ0VIQUlNQmpnR0NBUWNBZ3dHUEFZNEJCd0J3QVk4QmNnRUhBSEFCamdHUEFRY0Ewd0NIQVpBQkJ3RFRBTElBaHdFSEFKQUJkZ0YxQVFjQWtBR0hBWFlCQndDa0FKQUJoQUVIQUtRQTB3Q1FBUWNBZHdHUUFYVUJCd0IzQVlRQmtBRUhBSGdCaWdHTUFRY0FlQUY1QVlvQkJ3QUNBWW9CK2dBSEFBSUJqQUdLQVFjQWVnR05BWkVCQndCNkFZRUJqUUVIQUpFQkxnRXRBUWNBa1FHTkFTNEJCd0I3QVpFQmtnRUhBSHNCZWdHUkFRY0FrZ0V0QVRBQkJ3Q1NBWkVCTFFFSEFKTUJsQUdWQVFjQWt3R1ZBWllCQndDWEFaZ0Jrd0VIQUpjQmt3R1dBUWNBbHdHV0Faa0JCd0NYQVprQm1nRUhBSmtCbGdHYkFRY0FtUUdiQVp3QkJ3Q1dBWjBCbmdFSEFKWUJuZ0diQVFjQWxRR2ZBWjBCQndDVkFaMEJsZ0VIQUtBQm9RR1VBUWNBb0FHVUFaTUJCd0NpQWFBQmt3RUhBS0lCa3dHWUFRY0Fvd0dpQVpnQkJ3Q2pBWmdCbHdFSEFLTUJsd0dhQVFjQW93R2FBYVFCQndDa0Fab0JtUUVIQUtRQm1RR2xBUWNBcFFHWkFad0JCd0NsQVp3QnBnRUhBSndCbXdHbkFRY0FuQUduQWFZQkJ3Q2JBWjRCcUFFSEFKc0JxQUduQVFjQW5nR2RBYWtCQndDZUFha0JxQUVIQUo4QnFnR3BBUWNBbndHcEFaMEJCd0NWQWFzQnFnRUhBSlVCcWdHZkFRY0FsQUdoQWFzQkJ3Q1VBYXNCbFFFSEFLd0JyUUdoQVFjQXJBR2hBYUFCQndDdUFhd0JvQUVIQUs0Qm9BR2lBUWNBcndHdUFhSUJCd0N2QWFJQm93RUhBSzhCb3dHa0FRY0Fyd0drQWJBQkJ3Q3dBYVFCcFFFSEFMQUJwUUd4QVFjQXNRR2xBYVlCQndDeEFhWUJzZ0VIQUtZQnB3R3pBUWNBcGdHekFiSUJCd0NuQWFnQnRBRUhBS2NCdEFHekFRY0FxQUdwQWJVQkJ3Q29BYlVCdEFFSEFLb0J0Z0cxQVFjQXFnRzFBYWtCQndDckFiY0J0Z0VIQUtzQnRnR3FBUWNBb1FHdEFiY0JCd0NoQWJjQnF3RUhBTGdCclFHc0FRY0F1QUdzQWJrQkJ3QzVBYXdCcmdFSEFMa0JyZ0c2QVFjQXV3RzZBYTRCQndDN0FhNEJyd0VIQUx3QnV3R3ZBUWNBdkFHdkFiQUJCd0M5QWJ3QnNBRUhBTDBCc0FHeEFRY0F2Z0c5QWJFQkJ3QytBYkVCc2dFSEFMTUJ2d0crQVFjQXN3RytBYklCQndDMEFjQUJ2d0VIQUxRQnZ3R3pBUWNBdFFIQkFjQUJCd0MxQWNBQnRBRUhBTFlCd2dIQkFRY0F0Z0hCQWJVQkJ3QzJBYmNCd3dFSEFMWUJ3d0hDQVFjQXR3R3RBYmdCQndDM0FiZ0J3d0VIQU1RQnVBRzVBUWNBeEFHNUFjVUJCd0RGQWJrQnVnRUhBTVVCdWdIR0FRY0F4d0hHQWJvQkJ3REhBYm9CdXdFSEFNZ0J4d0c3QVFjQXlBRzdBYndCQndESkFjZ0J2QUVIQU1rQnZBRzlBUWNBeWdISkFiMEJCd0RLQWIwQnZnRUhBTDhCeXdIS0FRY0F2d0hLQWI0QkJ3REFBY3dCeXdFSEFNQUJ5d0cvQVFjQXdRSE5BY3dCQndEQkFjd0J3QUVIQU1JQnpnSE5BUWNBd2dITkFjRUJCd0RDQWNNQnp3RUhBTUlCendIT0FRY0F3d0c0QWNRQkJ3RERBY1FCendFSEFNUUJ4UUhHQVFjQXhBSEdBZEFCQndESUFkQUJ4Z0VIQU1nQnhnSEhBUWNBeWdIUUFjZ0JCd0RLQWNnQnlRRUhBTXNCekFIUUFRY0F5d0hRQWNvQkJ3RE5BYzRCMEFFSEFNMEIwQUhNQVFjQXpnSFBBY1FCQndET0FjUUIwQUVIQU5FQjBnSFRBUWNBMFFIVUFkSUJCd0RWQWRRQjBRRUhBTlVCMWdIVUFRY0Exd0hXQWRVQkJ3RFhBZGdCMWdFSEFOa0IyQUhYQVFjQTJRSGFBZGdCQndEYkFkb0IyUUVIQU5zQjNBSGFBUWNBM1FIY0Fkc0JCd0RkQWQ0QjNBRUhBTjhCM2dIZEFRY0Ezd0hnQWQ0QkJ3RGhBZUlCNHdFSEFPRUI1QUhpQVFjQTVRSGtBZUVCQndEbEFlWUI1QUVIQU9jQjVnSGxBUWNBNXdIb0FlWUJCd0RwQWVnQjV3RUhBT2tCNmdIb0FRY0E2d0hxQWVrQkJ3RHJBZXdCNmdFSEFPMEI3QUhyQVFjQTdRSHVBZXdCQndEdkFlNEI3UUVIQU84QjhBSHVBUWNBOFFId0FlOEJCd0R4QWZJQjhBRUhBTk1COGdIeEFRY0Ewd0hTQWZJQkJ3RHpBZG9CM0FFSEFQTUI5QUhhQVFjQTlRSGNBZDRCQndEMUFmTUIzQUVIQVBRQjJBSGFBUWNBOUFIMkFkZ0JCd0QyQWRZQjJBRUhBUFlCOXdIV0FRY0E5d0hVQWRZQkJ3RDNBZmdCMUFFSEFQZ0IwZ0hVQVFjQStBSDVBZElCQndENUFmSUIwZ0VIQVBrQitnSHlBUWNBK2dId0FmSUJCd0Q2QWZzQjhBRUhBUHNCN2dId0FRY0Erd0g4QWU0QkJ3RDhBZXdCN2dFSEFQd0IvUUhzQVFjQS9RSHFBZXdCQndEOUFmNEI2Z0VIQVA0QjZBSHFBUWNBL2dIL0FlZ0JCd0QvQWVZQjZBRUhBUDhCQUFMbUFRY0FBQUxrQWVZQkJ3QUFBZ0VDNUFFSEFBRUM0Z0hrQVFjQUFRSUNBdUlCQndBREF0NEI0QUVIQUFNQzlRSGVBUWNBQkFMMEFmTUJCd0FFQWdVQzlBRUhBQVlDOHdIMUFRY0FCZ0lFQXZNQkJ3QUZBdllCOUFFSEFBVUNCd0wyQVFjQUNBTDFBUU1DQndBSUFnWUM5UUVIQUFjQzl3SDJBUWNBQndJSkF2Y0JCd0FKQXZnQjl3RUhBQWtDQ2dMNEFRY0FDZ0w1QWZnQkJ3QUtBZ3NDK1FFSEFBc0MrZ0g1QVFjQUN3SU1Bdm9CQndBTUF2c0IrZ0VIQUF3Q0RRTDdBUWNBRFFMOEFmc0JCd0FOQWc0Qy9BRUhBQTRDL1FIOEFRY0FEZ0lQQXYwQkJ3QVBBdjRCL1FFSEFBOENFQUwrQVFjQUVBTC9BZjRCQndBUUFoRUMvd0VIQUJFQ0FBTC9BUWNBRVFJU0FnQUNCd0FTQWdFQ0FBSUhBQklDRXdJQkFnY0FFd0lDQWdFQ0J3QVRBaFFDQWdJSEFCUUNGUUlDQWdjQUZBSVdBaFVDQndBV0FoY0NGUUlIQUJZQ0dBSVhBZ2NBR0FJREFoY0NCd0FZQWdnQ0F3SUhBQmtDR2dJYkFnY0FHUUljQWhvQ0J3QWRBaGtDSGdJSEFCMENIQUlaQWdjQUh3SWdBaUVDQndBZkFpSUNJQUlIQUI4Q0l3SWtBZ2NBSHdJaEFpTUNCd0FrQWlVQ0pnSUhBQ1FDSXdJbEFnY0FKZ0luQWlnQ0J3QW1BaVVDSndJSEFDY0NLUUlvQWdjQUp3SXFBaWtDQndBcUFpc0NLUUlIQUNvQ0xBSXJBZ2NBR3dJckFpd0NCd0FiQWhvQ0t3SUhBQzBDR1FJYkFnY0FMUUl1QWhrQ0J3QWVBaThDSUFJSEFCNENNQUl2QWdjQUlBSXhBaUVDQndBZ0FpOENNUUlIQUNFQ01nSWpBZ2NBSVFJeEFqSUNCd0FqQWpNQ0pRSUhBQ01DTWdJekFnY0FKUUkwQWljQ0J3QWxBak1DTkFJSEFEUUNLZ0luQWdjQU5BSTFBaW9DQndBMUFpd0NLZ0lIQURVQ05nSXNBZ2NBTmdJYkFpd0NCd0EyQWkwQ0d3SUhBRGNDTGdJdEFnY0FOd0k0QWk0Q0J3QXdBamdDT1FJSEFEQUNMZ0k0QWdjQUx3STZBakVDQndBdkFqc0NPZ0lIQURFQ1BBSXlBZ2NBTVFJNkFqd0NCd0F5QWowQ013SUhBRElDUEFJOUFnY0FNd0krQWpRQ0J3QXpBajBDUGdJSEFENENOUUkwQWdjQVBnSS9BalVDQndBL0FqWUNOUUlIQUQ4Q1FBSTJBZ2NBUUFJdEFqWUNCd0JBQWpjQ0xRSUhBRUVDTndKQ0FnY0FRUUk0QWpjQ0J3QTdBa01DUkFJSEFEc0NPUUpEQWdjQU9nSkVBa1VDQndBNkFqc0NSQUlIQURvQ1JnSThBZ2NBT2dKRkFrWUNCd0E4QWtjQ1BRSUhBRHdDUmdKSEFnY0FQUUpJQWo0Q0J3QTlBa2NDU0FJSEFFZ0NQd0krQWdjQVNBSkpBajhDQndCSkFrQUNQd0lIQUVrQ1NnSkFBZ2NBUWdKQUFrb0NCd0JDQWpjQ1FBSUhBRXNDUWdKTUFnY0FTd0pCQWtJQ0J3QkRBa3NDVFFJSEFFTUNRUUpMQWdjQVJRSk9BazhDQndCRkFrUUNUZ0lIQUVVQ1VBSkdBZ2NBUlFKUEFsQUNCd0JHQWxFQ1J3SUhBRVlDVUFKUkFnY0FSd0pTQWtnQ0J3QkhBbEVDVWdJSEFGSUNTUUpJQWdjQVVnSlRBa2tDQndCVEFrb0NTUUlIQUZNQ1ZBSktBZ2NBVEFKS0FsUUNCd0JNQWtJQ1NnSUhBRlVDS3dJYUFnY0FWUUpXQWlzQ0J3QldBaWtDS3dJSEFGWUNWd0lwQWdjQVdBSWFBaHdDQndCWUFsVUNHZ0lIQUZrQ0hRSWlBZ2NBV1FKYUFoMENCd0JiQWlJQ0h3SUhBRnNDV1FJaUFnY0FYQUlmQWlRQ0J3QmNBbHNDSHdJSEFGMENKQUltQWdjQVhRSmNBaVFDQndCZUFpWUNLQUlIQUY0Q1hRSW1BZ2NBVndJb0Fpa0NCd0JYQWw0Q0tBSUhBRjhDVmdKVkFnY0FYd0pnQWxZQ0J3QmdBbGNDVmdJSEFHQUNZUUpYQWdjQVlnSlZBbGdDQndCaUFsOENWUUlIQUdFQ1hnSlhBZ2NBWVFKakFsNENCd0JrQWxvQ1dRSUhBR1FDWlFKYUFnY0FaZ0paQWxzQ0J3Qm1BbVFDV1FJSEFHY0NXd0pjQWdjQVp3Sm1BbHNDQndCb0Fsd0NYUUlIQUdnQ1p3SmNBZ2NBWXdKZEFsNENCd0JqQW1nQ1hRSUhBR2tDYWdKckFnY0FhUUpzQW1vQ0J3QnRBbWtDYmdJSEFHMENiQUpwQWdjQWJ3SndBbkVDQndCdkFuSUNjQUlIQUc4Q2N3SjBBZ2NBYndKeEFuTUNCd0IwQW5VQ2RnSUhBSFFDY3dKMUFnY0FkZ0ozQW5nQ0J3QjJBblVDZHdJSEFIY0NlUUo0QWdjQWR3SjZBbmtDQndCNkFuc0NlUUlIQUhvQ2ZBSjdBZ2NBYXdKN0Fud0NCd0JyQW1vQ2V3SUhBSDBDYVFKckFnY0FmUUorQW1rQ0J3QnVBbjhDY0FJSEFHNENnQUovQWdjQWNBS0JBbkVDQndCd0FuOENnUUlIQUhFQ2dnSnpBZ2NBY1FLQkFvSUNCd0J6QW9NQ2RRSUhBSE1DZ2dLREFnY0FoQUtGQW9ZQ0J3Q0VBb2NDaFFJSEFJZ0NpUUtLQWdjQWlBS0xBb2tDQndDTUFvMENqZ0lIQUl3Q2p3S05BZ2NBandLUUFvMENCd0NQQXBFQ2tBSUhBSklDa3dLVUFnY0FrZ0tWQXBNQ0J3Q1ZBcFlDa3dJSEFKVUNsd0tXQWdjQWhRS1lBb1lDQndDRkFwa0NtQUlIQUlrQ21nS0tBZ2NBaVFLYkFwb0NCd0NSQXB3Q2tBSUhBSkVDblFLY0FnY0FuUUtiQXB3Q0J3Q2RBcG9DbXdJSEFKY0NuZ0tXQWdjQWx3S2ZBcDRDQndDZkFwa0NuZ0lIQUo4Q21BS1pBZ2NBaUFLZ0Fvc0NCd0NJQXFFQ29BSUhBS0VDb2dLZ0FnY0FvUUtqQXFJQ0J3Q2tBcVVDcGdJSEFLUUNwd0tsQWdjQXFBS25BcVFDQndDb0Fxa0Nwd0lIQUtvQ3F3S3NBZ2NBcWdLdEFxc0NCd0N0QXE0Q3F3SUhBSzBDcndLdUFnY0FzQUt1QXJFQ0J3Q3dBcXNDcmdJSEFMSUNxd0t3QWdjQXNnS3NBcXNDQndDekFyUUN0UUlIQUxNQ3RnSzBBZ2NBdFFLM0FyZ0NCd0MxQXJRQ3R3SUhBTGdDdVFLNkFnY0F1QUszQXJrQ0J3QzZBcnNDdkFJSEFMb0N1UUs3QWdjQXZBSzlBcjRDQndDOEFyc0N2UUlIQUw0Q3Z3TEFBZ2NBdmdLOUFyOENCd0RBQXNFQ3dnSUhBTUFDdndMQkFnY0F3Z0xEQXNRQ0J3RENBc0VDd3dJSEFNVUN4Z0xIQWdjQXhRTElBc1lDQndESkFzb0N5d0lIQU1rQ3pBTEtBZ2NBelFLSEFvUUNCd0ROQXM0Q2h3SUhBTThDMEFMUkFnY0F6d0xTQXRBQ0J3RFRBdEFDMUFJSEFOTUMwUUxRQWdjQTFRTERBc0VDQndEVkF0WUN3d0lIQU5jQzJBTFpBZ2NBMXdMYUF0Z0NCd0RiQXRnQzFRSUhBTnNDM0FMWUFnY0EyUUxjQXQwQ0J3RFpBdGdDM0FJSEFOSUMzZ0xRQWdjQTBnTGZBdDRDQndEVUF0NEM0QUlIQU5RQzBBTGVBZ2NBdlFMYkFyOENCd0M5QXVFQzJ3SUhBT0lDM0FMakFnY0E0Z0xkQXR3Q0J3RGtBcjBDdXdJSEFPUUM0UUs5QWdjQTVRTGpBdVlDQndEbEF1SUM0d0lIQU9jQ3BnS2xBZ2NBNXdMb0FxWUNCd0N2QXVrQ3JnSUhBSzhDNmdMcEFnY0E2UUt4QXE0Q0J3RHBBdXNDc1FJSEFPd0M3UUx1QWdjQTdBTHZBdTBDQndEd0F2RUM4Z0lIQVBBQzh3THhBZ2NBOHdLSUF2RUNCd0R6QXFFQ2lBSUhBUFFDOHdMd0FnY0E5QUwxQXZNQ0J3RDFBcUVDOHdJSEFQVUNvd0toQWdjQTlnTDNBdmdDQndEMkF2a0M5d0lIQVBrQzZBTDNBZ2NBK1FLbUF1Z0NCd0Q2QXZrQzlnSUhBUG9DK3dMNUFnY0Erd0ttQXZrQ0J3RDdBcVFDcGdJSEFQd0Mrd0w2QWdjQS9BTDlBdnNDQndEOUFxUUMrd0lIQVAwQ3FBS2tBZ2NBOGdMK0F2OENCd0R5QXZFQy9nSUhBUEVDaWdMK0FnY0E4UUtJQW9vQ0J3RC9BZ0FEQVFNSEFQOEMvZ0lBQXdjQS9nS2FBZ0FEQndEK0Fvb0NtZ0lIQUFFREFnTURBd2NBQVFNQUF3SURCd0FBQTUwQ0FnTUhBQUFEbWdLZEFnY0FBd01FQXdVREJ3QURBd0lEQkFNSEFBSURrUUlFQXdjQUFnT2RBcEVDQndBRkF3WURCd01IQUFVREJBTUdBd2NBQkFPUEFnWURCd0FFQTVFQ2p3SUhBQWNEQ0FNSkF3Y0FCd01HQXdnREJ3QUdBNHdDQ0FNSEFBWURqd0tNQWdjQUNnTUxBd3dEQndBS0F3MERDd01IQUEwRERnTUxBd2NBRFFNUEF3NERCd0FQQXhBRERnTUhBQThERVFNUUF3Y0FFZ01UQXhRREJ3QVNBeFVERXdNSEFCVURGZ01UQXdjQUZRTVhBeFlEQndBWEF4Z0RGZ01IQUJjREdRTVlBd2NBR2dQckFoc0RCd0FhQTdFQzZ3SUhBQndEc1FJYUF3Y0FIQU93QXJFQ0J3QWRBN0FDSEFNSEFCMERzZ0t3QWdjQUhnT2xBaDhEQndBZUErY0NwUUlIQUI4RHB3SWdBd2NBSHdPbEFxY0NCd0FnQTZrQ0lRTUhBQ0FEcHdLcEFnY0FId01pQXg0REJ3QWZBeU1ESWdNSEFDTURFQU1pQXdjQUl3TU9BeEFEQndBZ0F5TURId01IQUNBREpBTWpBd2NBSkFNT0F5TURCd0FrQXdzRERnTUhBQ0VESkFNZ0F3Y0FJUU1sQXlRREJ3QWxBd3NESkFNSEFDVUREQU1MQXdjQUd3TW1BeG9EQndBYkF5Y0RKZ01IQUNjREV3TW1Bd2NBSndNVUF4TURCd0FhQXlnREhBTUhBQm9ESmdNb0F3Y0FKZ01XQXlnREJ3QW1BeE1ERmdNSEFCd0RLUU1kQXdjQUhBTW9BeWtEQndBb0F4Z0RLUU1IQUNnREZnTVlBd2NBS2dNckF5d0RCd0FxQXkwREt3TUhBQzBETGdNckF3Y0FMUU12QXk0REJ3QXdBeTBES2dNSEFEQURNUU10QXdjQU1RTXZBeTBEQndBeEF6SURMd01IQUxVQ013T3pBZ2NBdFFJMEF6TURCd0EwQTZJQ013TUhBRFFEb0FLaUFnY0F1QUkwQTdVQ0J3QzRBalVETkFNSEFEVURvQUkwQXdjQU5RT0xBcUFDQndDNkFqVUR1QUlIQUxvQ05nTTFBd2NBTmdPTEFqVURCd0EyQTRrQ2l3SUhBTHdDTmdPNkFnY0F2QUkzQXpZREJ3QTNBNGtDTmdNSEFEY0Rtd0tKQWdjQXZnSTNBN3dDQndDK0FqZ0ROd01IQURnRG13STNBd2NBT0FPY0Fwc0NCd0RBQWpnRHZnSUhBTUFDT1FNNEF3Y0FPUU9jQWpnREJ3QTVBNUFDbkFJSEFNSUNPUVBBQWdjQXdnSTZBemtEQndBNkE1QUNPUU1IQURvRGpRS1FBZ2NBeEFJNkE4SUNCd0RFQWpzRE9nTUhBRHNEalFJNkF3Y0FPd09PQW8wQ0J3QXNBendEUFFNSEFDd0RLd004QXdjQUt3TStBendEQndBckF5NERQZ01IQUQwRFB3TkFBd2NBUFFNOEF6OERCd0E4QTBFRFB3TUhBRHdEUGdOQkF3Y0FRZ1BxQWtNREJ3QkNBK2tDNmdJSEFFUUQ2UUpDQXdjQVJBUHJBdWtDQndCRkErc0NSQU1IQUVVREd3UHJBZ2NBUmdNYkEwVURCd0JHQXljREd3TUhBRWNESndOR0F3Y0FSd01VQXljREJ3QklBeFFEUndNSEFFZ0RFZ01VQXdjQVNRTktBMHNEQndCSkEwd0RTZ01IQUUwRFRBTk9Bd2NBVFFOS0Ewd0RCd0JQQTFBRFVRTUhBRThEVWdOUUF3Y0FVZ05UQTFBREJ3QlNBMVFEVXdNSEFGVURVZ05QQXdjQVZRTldBMUlEQndCV0ExUURVZ01IQUZZRFZ3TlVBd2NBV0FOV0ExVURCd0JZQTFrRFZnTUhBRmtEVndOV0F3Y0FXUU5hQTFjREJ3QmJBMWtEV0FNSEFGc0RYQU5aQXdjQVhBTmFBMWtEQndCY0ExMERXZ01IQUY0RFhBTmJBd2NBWGdOZkExd0RCd0JmQTEwRFhBTUhBRjhEWUFOZEF3Y0FZUU5mQTE0REJ3QmhBMklEWHdNSEFHSURZQU5mQXdjQVlnTmpBMkFEQndCa0EyVURaZ01IQUdRRFp3TmxBd2NBWndQcUFtVURCd0JuQTBNRDZnSUhBR1lEYUFOcEF3Y0FaZ05sQTJnREJ3QmxBNjhDYUFNSEFHVUQ2Z0t2QWdjQWFRTnFBMnNEQndCcEEyZ0RhZ01IQUdnRHJRSnFBd2NBYUFPdkFxMENCd0JyQTJ3RGJRTUhBR3NEYWdOc0F3Y0FhZ09xQW13REJ3QnFBNjBDcWdJSEFHNERZQU52QXdjQWJnTmRBMkFEQndCd0ExMERiZ01IQUhBRFdnTmRBd2NBY1FOYUEzQURCd0J4QTFjRFdnTUhBSElEVndOeEF3Y0FjZ05VQTFjREJ3QnpBM1FEZFFNSEFITURkZ04wQXdjQWR3TjJBM01EQndCM0EzZ0RkZ01IQUhrRGVBTjNBd2NBZVFQbEFuZ0RCd0I2QStVQ2VRTUhBSG9ENGdMbEFnY0Fld1BpQW5vREJ3QjdBOTBDNGdJSEFId0QzUUo3QXdjQWZBUFpBdDBDQndCOUE5a0NmQU1IQUgwRDF3TFpBZ2NBYndOakEzNERCd0J2QTJBRFl3TUhBSDhETWdPQUF3Y0Fmd09CQXpJREJ3Qi9BNklDb3dJSEFIOERnQU9pQWdjQXRnS0NBNE1EQndDMkFvUURnZ01IQUlRRFV3T0NBd2NBaEFPRkExTURCd0NFQXpBRGhRTUhBSVFEaGdNd0F3Y0FoQU96QW9ZREJ3Q0VBN1lDc3dJSEFJTURod04wQXdjQWd3T0NBNGNEQndCVUE0SURVd01IQUZRRGh3T0NBd2NBemdLSUE0a0RCd0RPQXMwQ2lBTUhBRTBEaVFPSUF3Y0FUUU5PQTRrREJ3Q0tBNHNEakFNSEFJb0RqUU9MQXdjQWlnUDFBdlFDQndDS0E0d0Q5UUlIQUl3RGdRTi9Bd2NBakFPTEE0RURCd0IvQS9VQ2pBTUhBSDhEb3dMMUFnY0FoZ016QTQ0REJ3Q0dBN01DTXdNSEFJWURNUU13QXdjQWhnT09BekVEQndDT0E2SUNnQU1IQUk0RE13T2lBZ2NBamdNeUF6RURCd0NPQTRBRE1nTUhBSFFEandOMUF3Y0FkQU9IQTQ4REJ3QnlBNGNEVkFNSEFISURqd09IQXdjQXpnS1FBNGNDQndET0FwRURrQU1IQUpFRGtnT1FBd2NBa1FPVEE1SURCd0NKQTVFRHpnSUhBSWtEbEFPUkF3Y0FsQU9UQTVFREJ3Q1VBNVVEa3dNSEFFNERsQU9KQXdjQVRnT1dBNVFEQndDV0E1VURsQU1IQUpZRGx3T1ZBd2NBVEFPV0EwNERCd0JNQTVnRGxnTUhBSmdEbHdPV0F3Y0FtQU9aQTVjREJ3QkpBNWdEVEFNSEFFa0RtZ09ZQXdjQW1nT1pBNWdEQndDYUE1c0RtUU1IQU93Q25BUHZBZ2NBN0FLZEE1d0RCd0NkQTU0RG5BTUhBSjBEbndPZUF3Y0F5UUtnQTh3Q0J3REpBcUVEb0FNSEFLRURvZ09nQXdjQW9RT2pBNklEQndERkFxUUR5QUlIQU1VQ3BRT2tBd2NBcFFPbUE2UURCd0NsQTZjRHBnTUhBSmtDaHdLUUF3Y0FtUUtGQW9jQ0J3Q2VBcEFEa2dNSEFKNENtUUtRQXdjQWt3S2VBcElEQndDVEFwWUNuZ0lIQUtnRHFRT3FBd2NBcUFPckE2a0RCd0RuQXFzRDZBSUhBT2NDcVFPckF3Y0FyQU90QTY0REJ3Q3NBNjhEclFNSEFQY0NyZ1A0QWdjQTl3S3NBNjREQndEM0Fxc0RyQU1IQVBjQzZBS3JBd2NBcXdPdkE2d0RCd0NyQTZnRHJ3TUhBTEFEc1FPeUF3Y0FzQU96QTdFREJ3QVJBN01ERUFNSEFCRURzUU96QXdjQXFnTzBBN1VEQndDcUE2a0R0QU1IQU9jQ3RBT3BBd2NBNXdJZUE3UURCd0FlQTdZRHRBTUhBQjRESWdPMkF3Y0F0UU8yQTdjREJ3QzFBN1FEdGdNSEFDSURzd08yQXdjQUlnTVFBN01EQndDM0E3TURzQU1IQUxjRHRnT3pBd2NBdUFPNUE3b0RCd0M0QTdzRHVRTUhBTHNEdkFPNUF3Y0F1d085QTd3REJ3QytBN29EdndNSEFMNER1QU82QXdjQXdBUDRBcTREQndEQUE4RUQrQUlIQU1FRDlnTDRBZ2NBd1FQQ0EvWUNCd0RDQS9vQzlnSUhBTUlEd3dQNkFnY0F3d1A4QXZvQ0J3RERBOFFEL0FJSEFNVUR1d080QXdjQXhRUEdBN3NEQndER0E3MER1d01IQU1ZRHh3TzlBd2NBeUFPNEE3NERCd0RJQThVRHVBTUhBTWtEd1FQQUF3Y0F5UVBLQThFREJ3REtBOElEd1FNSEFNb0R5d1BDQXdjQXl3UERBOElEQndETEE4d0R3d01IQU13RHhBUERBd2NBekFQTkE4UURCd0RPQTg4RDBBTUhBTTREMFFQUEF3Y0EwZ1BRQTlNREJ3RFNBODREMEFNSEFOUUQwd1BWQXdjQTFBUFNBOU1EQndEV0E0MERpZ01IQU5ZRDF3T05Bd2NBMkFPS0EvUUNCd0RZQTlZRGlnTUhBTmtEMFFQT0F3Y0EyUVBhQTlFREJ3RGJBODREMGdNSEFOc0QyUVBPQXdjQTNBUFNBOVFEQndEY0E5c0QwZ01IQU4wRDF3UFdBd2NBM1FQZUE5Y0RCd0RmQTlZRDJBTUhBTjhEM1FQV0F3Y0FyUVBnQTY0REJ3Q3RBK0VENEFNSEFPSUQ0UU84QXdjQTRnUGdBK0VEQndDdUErTUR3QU1IQUs0RDRBUGpBd2NBdlFQaUE3d0RCd0M5QStRRDRnTUhBTUFENVFQSkF3Y0F3QVBqQStVREJ3REhBK1FEdlFNSEFNY0Q1Z1BrQXdjQTFRUG5BOVFEQndEVkErZ0Q1d01IQU5jRDZBT05Bd2NBMXdQbkErZ0RCd0RVQStrRDNBTUhBTlFENXdQcEF3Y0EzZ1BuQTljREJ3RGVBK2tENXdNSEFMb0Q2Z08vQXdjQXVnUHJBK29EQndEckE4OEQ2Z01IQU9zRDBBUFBBd2NBdVFQckE3b0RCd0M1QSt3RDZ3TUhBT3dEMEFQckF3Y0E3QVBUQTlBREJ3QzhBK3dEdVFNSEFMd0Q3UVBzQXdjQTdRUFRBK3dEQndEdEE5VUQwd01IQU9FRDdRTzhBd2NBNFFQdUErMERCd0R1QTlVRDdRTUhBTzRENkFQVkF3Y0FyUVB1QStFREJ3Q3RBKzhEN2dNSEFPOEQ2QVB1QXdjQTd3T05BK2dEQndDdkErOERyUU1IQUs4RDhBUHZBd2NBOEFPTkErOERCd0R3QTRzRGpRTUhBS2dEOEFPdkF3Y0FxQVB4QS9BREJ3RHhBNHNEOEFNSEFQRURnUU9MQXdjQXFnUHhBNmdEQndDcUEvSUQ4UU1IQVBJRGdRUHhBd2NBOGdNeUE0RURCd0MxQS9JRHFnTUhBTFVEOHdQeUF3Y0E4d015QS9JREJ3RHpBeThETWdNSEFMY0Q4d08xQXdjQXR3UDBBL01EQndEMEF5OEQ4d01IQVBRRExnTXZBd2NBc0FQMEE3Y0RCd0N3QS9VRDlBTUhBUFVETGdQMEF3Y0E5UU0rQXk0REJ3Q3lBL1VEc0FNSEFMSUQ5Z1AxQXdjQTlnTStBL1VEQndEMkEwRURQZ01IQVBjRHZnTy9Bd2NBOXdQNEE3NERCd0Q1QTc4RDZnTUhBUGtEOXdPL0F3Y0ErQVBJQTc0REJ3RDRBL29EeUFNSEFQc0Q2Z1BQQXdjQSt3UDVBK29EQndEOEE4OEQwUU1IQVB3RCt3UFBBd2NBL1FQUkE5b0RCd0Q5QS93RDBRTUhBUDREK0FQM0F3Y0EvZ1AvQS9nREJ3QUFCUGNEK1FNSEFBQUUvZ1AzQXdjQS93UDZBL2dEQndEL0F3RUUrZ01IQUFJRStRUDdBd2NBQWdRQUJQa0RCd0FEQlBzRC9BTUhBQU1FQWdUN0F3Y0FCQVQ4QS8wREJ3QUVCQU1FL0FNSEFBVUU4QUx5QWdjQUJRUUdCUEFDQndBSEJBWUVCUVFIQUFjRUNBUUdCQWNBMkFQd0FnWUVCd0RZQS9RQzhBSUhBTjhEQmdRSUJBY0Ezd1BZQXdZRUJ3RHlBZ2tFQ2dRSEFQSUMvd0lKQkFjQUNRTUxCQWNEQndBSkF3d0VDd1FIQUFjRERRUUZBd2NBQndNTEJBMEVCd0FPQlA4Q0FRTUhBQTRFQ1FUL0FnY0FEUVFEQXdVREJ3QU5CQThFQXdNSEFBOEVBUU1EQXdjQUR3UU9CQUVEQndEeUFoQUVCUVFIQVBJQ0NnUVFCQWNBQlFRUkJBY0VCd0FGQkJBRUVRUUhBTkVDRWdUUEFnY0EwUUlUQkJJRUJ3RFRBaE1FMFFJSEFOTUNGQVFUQkFjQUZRVFBBaElFQndBVkJCWUV6d0lIQUJjRUZnUVZCQWNBRndRWUJCWUVCd0FaQkJnRUZ3UUhBQmtFR2dRWUJBY0FHd1FaQkJRRUJ3QWJCQm9FR1FRSEFCc0VIQVFhQkFjQUd3UWRCQndFQndBZUJCRUVFQVFIQUI0RUh3UVJCQWNBSUFRUUJBb0VCd0FnQkI0RUVBUUhBQ0VFQ2dRSkJBY0FJUVFnQkFvRUJ3QWlCQWtFRGdRSEFDSUVJUVFKQkFjQUl3UU9CQThFQndBakJDSUVEZ1FIQUNRRUR3UU5CQWNBSkFRakJBOEVCd0FsQkEwRUN3UUhBQ1VFSkFRTkJBY0FKZ1FMQkF3RUJ3QW1CQ1VFQ3dRSEFDY0VId1FlQkFjQUp3UW9CQjhFQndBcEJCNEVJQVFIQUNrRUp3UWVCQWNBS2dRZ0JDRUVCd0FxQkNrRUlBUUhBQ3NFSVFRaUJBY0FLd1FxQkNFRUJ3QXNCQ0lFSXdRSEFDd0VLd1FpQkFjQUxRUWpCQ1FFQndBdEJDd0VJd1FIQUM0RUpBUWxCQWNBTGdRdEJDUUVCd0F2QkNVRUpnUUhBQzhFTGdRbEJBY0FNQVFYQkJVRUJ3QXdCREVFRndRSEFESUVGUVFTQkFjQU1nUXdCQlVFQndBeEJCa0VGd1FIQURFRU13UVpCQWNBTXdRVUJCa0VCd0F6QkRRRUZBUUhBRFFFRXdRVUJBY0FOQVExQkJNRUJ3QTFCQklFRXdRSEFEVUVNZ1FTQkFjQU5nUXhCREFFQndBMkJEY0VNUVFIQURnRU1BUXlCQWNBT0FRMkJEQUVCd0EzQkRNRU1RUUhBRGNFT1FRekJBY0FPZ1F5QkRVRUJ3QTZCRGdFTWdRSEFEa0VOQVF6QkFjQU9RUTdCRFFFQndBN0JEVUVOQVFIQURzRU9nUTFCQWNBUEFRM0JEWUVCd0E4QkQwRU53UUhBRDRFTmdRNEJBY0FQZ1E4QkRZRUJ3QTlCRGtFTndRSEFEMEVQd1E1QkFjQVFBUTRCRG9FQndCQUJENEVPQVFIQUQ4RU93UTVCQWNBUHdSQkJEc0VCd0JCQkRvRU93UUhBRUVFUUFRNkJBY0FRZ1ErQkVBRUJ3QkNCRU1FUGdRSEFFUUVRQVJCQkFjQVJBUkNCRUFFQndCREJEd0VQZ1FIQUVNRVJRUThCQWNBUlFROUJEd0VCd0JGQkVZRVBRUUhBRVlFUHdROUJBY0FSZ1JIQkQ4RUJ3QkhCRUVFUHdRSEFFY0VSQVJCQkFjQVFnTklCRVFEQndCQ0Ewa0VTQVFIQUVNRFNRUkNBd2NBUXdOS0JFa0VCd0JuQTBvRVF3TUhBR2NEU3dSS0JBY0FaQU5MQkdjREJ3QmtBMHdFU3dRSEFFUURUUVJGQXdjQVJBTklCRTBFQndCRkEwNEVSZ01IQUVVRFRRUk9CQWNBUmdOUEJFY0RCd0JHQTA0RVR3UUhBRWNEVUFSSUF3Y0FSd05QQkZBRUJ3Q0ZBMUVFVXdNSEFJVURVZ1JSQkFjQVVnUktCRkVFQndCU0JFa0VTZ1FIQURBRFVnU0ZBd2NBTUFOVEJGSUVCd0JUQkVrRVVnUUhBRk1FU0FSSkJBY0FLZ05UQkRBREJ3QXFBMVFFVXdRSEFGUUVTQVJUQkFjQVZBUk5CRWdFQndBc0ExUUVLZ01IQUN3RFZRUlVCQWNBVlFSTkJGUUVCd0JWQkU0RVRRUUhBRDBEVlFRc0F3Y0FQUU5XQkZVRUJ3QldCRTRFVlFRSEFGWUVUd1JPQkFjQVFBTldCRDBEQndCQUExY0VWZ1FIQUZjRVR3UldCQWNBVndSUUJFOEVCd0JUQTFnRVVBTUhBRk1EVVFSWUJBY0FVUVJMQkZnRUJ3QlJCRW9FU3dRSEFGQURXUVJSQXdjQVVBTllCRmtFQndCWUJFd0VXUVFIQUZnRVN3Uk1CQWNBeVFKYUJGc0VCd0RKQXNzQ1dnUUhBRWtEWEFSZEJBY0FTUU5MQTF3RUJ3QmVCTXdDWHdRSEFGNEV5Z0xNQWdjQVlBUnVBMkVFQndCZ0JIQURiZ01IQUdJRWZnTmpCQWNBWWdSdkEzNERCd0NhQTEwRVpBUUhBSm9EU1FOZEJBY0FYd1NnQTJVRUJ3QmZCTXdDb0FNSEFKc0RaQVJtQkFjQW13T2FBMlFFQndDaUEyWUVad1FIQUtJRG13Tm1CQWNBWlFTaUEyY0VCd0JsQktBRG9nTUhBS0VEV3dSb0JBY0FvUVBKQWxzRUJ3Q2pBMmdFYVFRSEFLTURvUU5vQkFjQWFnUnBCR3NFQndCcUJLTURhUVFIQUYwRWJBUnRCQWNBWFFSY0JHd0VCd0J1QkY4RWJ3UUhBRzRFWGdSZkJBY0FjQVJoQkhFRUJ3QndCR0FFWVFRSEFHUUViUVJ5QkFjQVpBUmRCRzBFQndCdkJHVUVjd1FIQUc4RVh3UmxCQWNBWmdSeUJIUUVCd0JtQkdRRWNnUUhBR2NFZEFSMUJBY0Fad1JtQkhRRUJ3QnpCR2NFZFFRSEFITUVaUVJuQkFjQWJRVHRBdThDQndCdEJHd0U3UUlIQU80Q2J3VHNBZ2NBN2dKdUJHOEVCd0IyQkhFRWR3UUhBSFlFY0FSeEJBY0FjZ1R2QXB3REJ3QnlCRzBFN3dJSEFPd0Njd1NkQXdjQTdBSnZCSE1FQndCMEJKd0RuZ01IQUhRRWNnU2NBd2NBZFFTZUE1OERCd0IxQkhRRW5nTUhBSjBEZFFTZkF3Y0FuUU56QkhVRUJ3Q0lBM2dFVFFNSEFJZ0RlUVI0QkFjQWVRUnlBM2dFQndCNUJJOERjZ01IQU0wQ2VRU0lBd2NBelFKNkJIa0VCd0I2Qkk4RGVRUUhBSG9FZFFPUEF3Y0FoQUo2Qk0wQ0J3Q0VBbnNFZWdRSEFIc0VkUU42QkFjQWV3UnpBM1VEQndDR0Fuc0VoQUlIQUlZQ2ZBUjdCQWNBZkFSekEzc0VCd0I4QkhjRGN3TUhBSmdDZkFTR0FnY0FtQUo5Qkh3RUJ3QjlCSGNEZkFRSEFIMEVlUU4zQXdjQW53SjlCSmdDQndDZkFuNEVmUVFIQUg0RWVRTjlCQWNBZmdSNkEza0RCd0NYQW40RW53SUhBSmNDZndSK0JBY0Fmd1I2QTM0RUJ3Qi9CSHNEZWdNSEFKVUNmd1NYQWdjQWxRS0FCSDhFQndDQUJIc0Rmd1FIQUlBRWZBTjdBd2NBa2dLQUJKVUNCd0NTQW9FRWdBUUhBSUVFZkFPQUJBY0FnUVI5QTN3REJ3Qk5BNElFU2dNSEFFMERlQVNDQkFjQWVBUnhBNElFQndCNEJISURjUU1IQUVvRGd3UkxBd2NBU2dPQ0JJTUVCd0NDQkhBRGd3UUhBSUlFY1FOd0F3Y0FTd09FQkZ3RUJ3QkxBNE1FaEFRSEFJTUVZQVNFQkFjQWd3UndBMkFFQndCY0JJVUViQVFIQUZ3RWhBU0ZCQWNBaEFSd0JJVUVCd0NFQkdBRWNBUUhBR3dFaGdUdEFnY0FiQVNGQklZRUJ3Q0ZCSFlFaGdRSEFJVUVjQVIyQkFjQTdRS0hCTzRDQndEdEFvWUVod1FIQUlZRWR3U0hCQWNBaGdSMkJIY0VCd0R1QW9nRWJnUUhBTzRDaHdTSUJBY0Fod1J4QklnRUJ3Q0hCSGNFY1FRSEFHNEVpUVJlQkFjQWJnU0lCSWtFQndDSUJHRUVpUVFIQUlnRWNRUmhCQWNBWGdTS0JNb0NCd0JlQklrRWlnUUhBSWtFYmdPS0JBY0FpUVJoQkc0REJ3REtBb3NFeXdJSEFNb0NpZ1NMQkFjQWlnUnZBNHNFQndDS0JHNERid01IQU1zQ2pBUmFCQWNBeXdLTEJJd0VCd0NMQkdJRWpBUUhBSXNFYndOaUJBY0F4Z0tOQk1jQ0J3REdBbzRFalFRSEFJNEVqd1NOQkFjQWpnU1FCSThFQndCYkJKRUVrZ1FIQUZzRVdnU1JCQWNBYUFTU0JKTUVCd0JvQkZzRWtnUUhBR2tFa3dTVUJBY0FhUVJvQkpNRUJ3QnJCSlFFbFFRSEFHc0VhUVNVQkFjQVdnU1dCSkVFQndCYUJJd0VsZ1FIQUpjRVl3U1lCQWNBbHdSaUJHTUVCd0NNQkpjRWxnUUhBSXdFWWdTWEJBY0FrZ1RHQXNnQ0J3Q1NCSkVFeGdJSEFKTUV5QUtrQXdjQWt3U1NCTWdDQndDVUJLUURwZ01IQUpRRWt3U2tBd2NBbFFTbUE2Y0RCd0NWQkpRRXBnTUhBSkVFamdUR0FnY0FrUVNXQkk0RUJ3Q1FCSmdFandRSEFKQUVsd1NZQkFjQWxnU1FCSTRFQndDV0JKY0VrQVFIQU9BQ21RU2FCQWNBNEFLYkJKa0VCd0NiQkxzQ21RUUhBSnNFNUFLN0FnY0Ezd0tjQk40Q0J3RGZBcDBFbkFRSEFKMEU1Z0tjQkFjQW5RVGxBdVlDQndEU0FwMEUzd0lIQU5JQ25nU2RCQWNBbmdUbEFwMEVCd0NlQkhnRDVRSUhBTThDbmdUU0FnY0F6d0tmQko0RUJ3Q2ZCSGdEbmdRSEFKOEVkZ040QXdjQUZnU2ZCTThDQndBV0JLQUVud1FIQUtBRWRnT2ZCQWNBb0FSMEEzWURCd0FZQktBRUZnUUhBQmdFb1FTZ0JBY0FvUVIwQTZBRUJ3Q2hCSU1EZEFNSEFCb0VvUVFZQkFjQUdnU2lCS0VFQndDaUJJTURvUVFIQUtJRXRnS0RBd2NBSEFTaUJCb0VCd0FjQktNRW9nUUhBS01FdGdLaUJBY0Fvd1MwQXJZQ0J3QWRCS01FSEFRSEFCMEVwQVNqQkFjQXBBUzBBcU1FQndDa0JMY0N0QUlIQUtVRXBBUWRCQWNBcFFTbUJLUUVCd0NtQkxjQ3BBUUhBS1lFdVFLM0FnY0FtZ1NtQktVRUJ3Q2FCSmtFcGdRSEFKa0V1UUttQkFjQW1RUzdBcmtDQndCMUFxY0Vkd0lIQUhVQ2d3S25CQWNBcHdSNkFuY0NCd0NuQktnRWVnSUhBS2dFZkFKNkFnY0FxQVNwQkh3Q0J3Q3BCR3NDZkFJSEFLa0VmUUpyQWdjQXFnUitBbjBDQndDcUJLc0VmZ0lIQUlBQ3F3U3NCQWNBZ0FKK0Fxc0VCd0IvQXEwRWdRSUhBSDhDcmdTdEJBY0FnUUt2QklJQ0J3Q0JBcTBFcndRSEFJSUNzQVNEQWdjQWdnS3ZCTEFFQndDREFyRUVwd1FIQUlNQ3NBU3hCQWNBc1FTb0JLY0VCd0N4QkxJRXFBUUhBTElFcVFTb0JBY0FzZ1N6QktrRUJ3Q3pCSDBDcVFRSEFMTUVxZ1I5QWdjQXRBU3FCTFVFQndDMEJLc0VxZ1FIQUs0RXRnUzNCQWNBcmdTc0JMWUVCd0N0QkxjRXVBUUhBSzBFcmdTM0JBY0FyUVM1Qks4RUJ3Q3RCTGdFdVFRSEFLOEV1Z1N3QkFjQXJ3UzVCTG9FQndDd0JMc0VzUVFIQUxBRXVnUzdCQWNBdXdTeUJMRUVCd0M3Qkx3RXNnUUhBTHdFc3dTeUJBY0F2QVM5QkxNRUJ3QzFCTE1FdlFRSEFMVUVxZ1N6QkFjQXZnUzFCTDhFQndDK0JMUUV0UVFIQUxZRXZnVEFCQWNBdGdTMEJMNEVCd0M0Qk1FRXdnUUhBTGdFdHdUQkJBY0F1QVREQkxrRUJ3QzRCTUlFd3dRSEFMa0V4QVM2QkFjQXVRVERCTVFFQndDNkJNVUV1d1FIQUxvRXhBVEZCQWNBeFFTOEJMc0VCd0RGQk1ZRXZBUUhBTVlFdlFTOEJBY0F4Z1RIQkwwRUJ3Qy9CTDBFeHdRSEFMOEV0UVM5QkFjQXlBUjdBbW9DQndESUJNa0Vld0lIQU1rRWVRSjdBZ2NBeVFUS0JIa0NCd0RMQkdvQ2JBSUhBTXNFeUFScUFnY0F6QVJ0QW5JQ0J3RE1CTTBFYlFJSEFNNEVjZ0p2QWdjQXpnVE1CSElDQndEUEJHOENkQUlIQU04RXpnUnZBZ2NBMEFSMEFuWUNCd0RRQk04RWRBSUhBTkVFZGdKNEFnY0EwUVRRQkhZQ0J3REtCSGdDZVFJSEFNb0UwUVI0QWdjQTBnVEpCTWdFQndEU0JOTUV5UVFIQU5NRXlnVEpCQWNBMHdUVUJNb0VCd0RWQk1nRXl3UUhBTlVFMGdUSUJBY0ExQVRSQk1vRUJ3RFVCTllFMFFRSEFOY0V6d1RRQkFjQTF3VFlCTThFQndEV0JOQUUwUVFIQU5ZRTF3VFFCQWNBMlFUYUJOc0VCd0RaQk53RTJnUUhBTndFM1FUYUJBY0EzQVRlQk4wRUJ3RGVCTjhFM1FRSEFONEU0QVRmQkFjQTRBVGhCTjhFQndEZ0JPSUU0UVFIQU9JRTR3VGhCQWNBNGdUa0JPTUVCd0RrQk9VRTR3UUhBT1FFNWdUbEJBY0E1Z1RuQk9VRUJ3RG1CT2dFNXdRSEFPa0U2Z1RyQkFjQTZRVHNCT29FQndEc0JPMEU2Z1FIQU93RTdnVHRCQWNBN2dUdkJPMEVCd0R1QlBBRTd3UUhBUEFFOFFUdkJBY0E4QVR5QlBFRUJ3RHlCUE1FOFFRSEFQSUU5QVR6QkFjQTlBVDFCUE1FQndEMEJQWUU5UVFIQVBZRTl3VDFCQWNBOWdUNEJQY0VCd0Q0QlBrRTl3UUhBUGdFK2dUNUJBY0ErZ1RiQlBrRUJ3RDZCTmtFMndRSEFPSUUrd1RrQkFjQTRnVDhCUHNFQndEa0JQMEU1Z1FIQU9RRSt3VDlCQWNBNEFUOEJPSUVCd0RnQlA0RS9BUUhBTjRFL2dUZ0JBY0EzZ1QvQlA0RUJ3RGNCUDhFM2dRSEFOd0VBQVgvQkFjQTJRUUFCZHdFQndEWkJBRUZBQVVIQVBvRUFRWFpCQWNBK2dRQ0JRRUZCd0Q0QkFJRitnUUhBUGdFQXdVQ0JRY0E5Z1FEQmZnRUJ3RDJCQVFGQXdVSEFQUUVCQVgyQkFjQTlBUUZCUVFGQndEeUJBVUY5QVFIQVBJRUJnVUZCUWNBOEFRR0JmSUVCd0R3QkFjRkJnVUhBTzRFQndYd0JBY0E3Z1FJQlFjRkJ3RHNCQWdGN2dRSEFPd0VDUVVJQlFjQTZRUUpCZXdFQndEcEJBb0ZDUVVIQU9ZRUN3WG9CQWNBNWdUOUJBc0ZCd0Q4QkF3Rit3UUhBUHdFRFFVTUJRY0Erd1FPQmYwRUJ3RDdCQXdGRGdVSEFQNEVEUVg4QkFjQS9nUVBCUTBGQndEOUJCQUZDd1VIQVAwRURnVVFCUWNBL3dRUEJmNEVCd0QvQkJFRkR3VUhBQUFGRVFYL0JBY0FBQVVTQlJFRkJ3QUJCUklGQUFVSEFBRUZFd1VTQlFjQUFnVVRCUUVGQndBQ0JSUUZFd1VIQUFNRkZBVUNCUWNBQXdVVkJSUUZCd0FFQlJVRkF3VUhBQVFGRmdVVkJRY0FCUVVXQlFRRkJ3QUZCUmNGRmdVSEFBWUZGd1VGQlFjQUJnVVlCUmNGQndBSEJSZ0ZCZ1VIQUFjRkdRVVlCUWNBQ0FVWkJRY0ZCd0FJQlJvRkdRVUhBQWtGR2dVSUJRY0FDUVViQlJvRkJ3QUtCUnNGQ1FVSEFBb0ZIQVViQlFjQUhRVWNCUW9GQndBZEJSNEZIQVVIQUI4RkhnVWRCUWNBSHdVZ0JSNEZCd0FMQlNBRkh3VUhBQXNGRUFVZ0JRY0FJUVZEQkVJRUJ3QWhCU0lGUXdRSEFDTUZRZ1JFQkFjQUl3VWhCVUlFQndBaUJVVUVRd1FIQUNJRkpBVkZCQWNBSlFWRUJFY0VCd0FsQlNNRlJBUUhBQ1FGUmdSRkJBY0FKQVVtQlVZRUJ3QW1CVWNFUmdRSEFDWUZKUVZIQkFjQUp3VWlCU0VGQndBbkJTZ0ZJZ1VIQUNrRklRVWpCUWNBS1FVbkJTRUZCd0FvQlNRRklnVUhBQ2dGS2dVa0JRY0FLd1VqQlNVRkJ3QXJCU2tGSXdVSEFDb0ZKZ1VrQlFjQUtnVXNCU1lGQndBc0JTVUZKZ1VIQUN3Rkt3VWxCUWNBTFFVb0JTY0ZCd0F0QlM0RktBVUhBQzhGSndVcEJRY0FMd1V0QlNjRkJ3QXVCU29GS0FVSEFDNEZNQVVxQlFjQU1RVXBCU3NGQndBeEJTOEZLUVVIQURBRkxBVXFCUWNBTUFVeUJTd0ZCd0F5QlNzRkxBVUhBRElGTVFVckJRY0FNd1V1QlMwRkJ3QXpCVFFGTGdVSEFEVUZMUVV2QlFjQU5RVXpCUzBGQndBMEJUQUZMZ1VIQURRRk5nVXdCUWNBTndVdkJURUZCd0EzQlRVRkx3VUhBRFlGTWdVd0JRY0FOZ1U0QlRJRkJ3QTRCVEVGTWdVSEFEZ0ZOd1V4QlFjQU9RVTBCVE1GQndBNUJUb0ZOQVVIQURzRk13VTFCUWNBT3dVNUJUTUZCd0E2QlRZRk5BVUhBRG9GUEFVMkJRY0FQUVUxQlRjRkJ3QTlCVHNGTlFVSEFEd0ZPQVUyQlFjQVBBVStCVGdGQndBK0JUY0ZPQVVIQUQ0RlBRVTNCUWNBUHdWQUJVRUZCd0EvQlVJRlFBVUhBRU1GUWdVL0JRY0FRd1ZFQlVJRkJ3QkZCVVFGUXdVSEFFVUZSZ1ZFQlFjQVJ3VkVCVVlGQndCSEJVZ0ZSQVVIQUVnRlFnVkVCUWNBU0FWSkJVSUZCd0JKQlVBRlFnVUhBRWtGU2dWQUJRY0FTd1ZNQlUwRkJ3QkxCVTRGVEFVSEFFOEZVQVZSQlFjQVR3VlNCVkFGQndCVEJWRUZWQVVIQUZNRlR3VlJCUWNBUUFWVkJVRUZCd0JBQlZZRlZRVUhBRlVGUHdWQkJRY0FWUVZYQlQ4RkJ3QlhCVU1GUHdVSEFGY0ZXQVZEQlFjQVdRVkdCVVVGQndCWkJWb0ZSZ1VIQUZnRlJRVkRCUWNBV0FWWkJVVUZCd0JIQlZzRlNBVUhBRWNGWEFWYkJRY0FSZ1ZjQlVjRkJ3QkdCVm9GWEFVSEFFZ0ZYUVZKQlFjQVNBVmJCVjBGQndCZUJVQUZTZ1VIQUY0RlZnVkFCUWNBU1FWZUJVb0ZCd0JKQlYwRlhnVUhBRTBGWHdWUUJRY0FUUVZnQlY4RkJ3Qk9CV0VGVEFVSEFFNEZZZ1ZoQlFjQVl3Vk9CVXNGQndCakJXSUZUZ1VIQUZBRlpBVlJCUWNBVUFWZkJXUUZCd0JsQlZJRlR3VUhBR1VGWmdWU0JRY0FVUVZuQlZRRkJ3QlJCV1FGWndVSEFHZ0ZUd1ZUQlFjQWFBVmxCVThGQndCbkJWTUZWQVVIQUdjRmFBVlRCUWNBYVFWcUJXc0ZCd0JwQld3RmFnVUhBR3NGYlFWdUJRY0Fhd1ZxQlcwRkJ3QnVCVzhGY0FVSEFHNEZiUVZ2QlFjQWNBVnhCWElGQndCd0JXOEZjUVVIQUhFRmN3VnlCUWNBY1FWMEJYTUZCd0IxQlhZRmR3VUhBSFVGZUFWMkJRY0FlUVY0QlhVRkJ3QjVCWG9GZUFVSEFIc0ZlZ1Y1QlFjQWV3VjhCWG9GQndCOUJYd0Zld1VIQUgwRmZnVjhCUWNBZndWK0JYMEZCd0IvQllBRmZnVUhBSGdGZ1FWMkJRY0FlQVdDQllFRkJ3Q0RCWGdGZWdVSEFJTUZnZ1Y0QlFjQWhBVjZCWHdGQndDRUJZTUZlZ1VIQUlVRmZBVitCUWNBaFFXRUJYd0ZCd0NBQllVRmZnVUhBSUFGaGdXRkJRY0FnZ1dIQllFRkJ3Q0NCWWdGaHdVSEFHd0ZpQVZxQlFjQWJBV0hCWWdGQndDREJZZ0ZnZ1VIQUlNRmlRV0lCUWNBYWdXSkJXMEZCd0JxQllnRmlRVUhBSVFGaVFXREJRY0FoQVdLQllrRkJ3QnRCWW9GYndVSEFHMEZpUVdLQlFjQWhRV0tCWVFGQndDRkJZc0ZpZ1VIQUc4Rml3VnhCUWNBYndXS0JZc0ZCd0NHQllzRmhRVUhBSVlGakFXTEJRY0FjUVdNQlhRRkJ3QnhCWXNGakFVSEFJMEZiQVZwQlFjQWpRV09CV3dGQndDUEJXa0Zhd1VIQUk4RmpRVnBCUWNBa0FWckJXNEZCd0NRQlk4RmF3VUhBSkVGYmdWd0JRY0FrUVdRQlc0RkJ3Q1NCWEFGY2dVSEFKSUZrUVZ3QlFjQWt3VnlCWE1GQndDVEJaSUZjZ1VIQUpRRmR3VjJCUWNBbEFXVkJYY0ZCd0IzQlpZRmRRVUhBSGNGbFFXV0JRY0FkUVdYQlhrRkJ3QjFCWllGbHdVSEFIa0ZtQVY3QlFjQWVRV1hCWmdGQndCN0Jaa0ZmUVVIQUhzRm1BV1pCUWNBZlFXYUJYOEZCd0I5QlprRm1nVUhBSnNGZGdXQkJRY0Ftd1dVQlhZRkJ3Q2NCWUVGaHdVSEFKd0Ztd1dCQlFjQWpnV0hCV3dGQndDT0Jad0Zod1VIQUowRm5nV2ZCUWNBblFXZ0JaNEZCd0NoQlo4Rm9nVUhBS0VGblFXZkJRY0Fvd1dpQmFRRkJ3Q2pCYUVGb2dVSEFLVUZwQVdtQlFjQXBRV2pCYVFGQndCekJhVUZwZ1VIQUhNRmRBV2xCUWNBcHdXb0Jha0ZCd0NuQmFvRnFBVUhBS29GcXdXb0JRY0FxZ1dzQmFzRkJ3Q3NCYTBGcXdVSEFLd0ZyZ1d0QlFjQXJnV3ZCYTBGQndDdUJiQUZyd1VIQUxBRmZ3V3ZCUWNBc0FXQUJYOEZCd0N4QmFvRnB3VUhBTEVGc2dXcUJRY0FxZ1d6QmF3RkJ3Q3FCYklGc3dVSEFLd0Z0QVd1QlFjQXJBV3pCYlFGQndDdUJiVUZzQVVIQUs0RnRBVzFCUWNBdFFXQUJiQUZCd0MxQllZRmdBVUhBTFlGc2dXeEJRY0F0Z1czQmJJRkJ3QzNCYUFGblFVSEFMY0Z0Z1dnQlFjQXR3V3pCYklGQndDM0JiZ0Zzd1VIQUxnRm5RV2hCUWNBdUFXM0JaMEZCd0M0QmJRRnN3VUhBTGdGdVFXMEJRY0F1UVdoQmFNRkJ3QzVCYmdGb1FVSEFMa0Z0UVcwQlFjQXVRVzZCYlVGQndDNkJhTUZwUVVIQUxvRnVRV2pCUWNBdWdXR0JiVUZCd0M2Qll3RmhnVUhBSXdGcFFWMEJRY0FqQVc2QmFVRkJ3Q2dCYnNGbmdVSEFLQUZ2QVc3QlFjQW5nVzlCWjhGQndDZUJic0Z2UVVIQUo4RnZnV2lCUWNBbndXOUJiNEZCd0NpQmI4RnBBVUhBS0lGdmdXL0JRY0FwQVhBQmFZRkJ3Q2tCYjhGd0FVSEFLWUZrd1Z6QlFjQXBnWEFCWk1GQndDcEJjRUZwd1VIQUtrRndnWEJCUWNBd3dXcEJhZ0ZCd0REQmNJRnFRVUhBTVFGcUFXckJRY0F4QVhEQmFnRkJ3REZCYXNGclFVSEFNVUZ4QVdyQlFjQXhnV3RCYThGQndER0JjVUZyUVVIQUpvRnJ3Vi9CUWNBbWdYR0JhOEZCd0NuQmNjRnNRVUhBS2NGd1FYSEJRY0FzUVhJQmJZRkJ3Q3hCY2NGeUFVSEFMWUZ2QVdnQlFjQXRnWElCYndGQndESkJjb0Z5d1VIQU1rRnpBWEtCUWNBelFYT0JjOEZCd0ROQmRBRnpnVUhBTWtGMFFYTUJRY0F5UVhTQmRFRkJ3RFFCZE1GemdVSEFOQUYxQVhUQlFjQTBnWFZCZEVGQndEU0JkWUYxUVVIQU5RRjF3WFRCUWNBMUFYWUJkY0ZCd0RXQmRrRjFRVUhBTllGMmdYWkJRY0Eyd1hhQmR3RkJ3RGJCZGtGMmdVSEFOZ0YzUVhYQlFjQTJBWGVCZDBGQndEZkJkNEY0QVVIQU44RjNRWGVCUWNBendYaEJjMEZCd0RQQmVJRjRRVUhBT01GendYT0JRY0E0d1hpQmM4RkJ3RGtCYzRGMHdVSEFPUUY0d1hPQlFjQTVRWFRCZGNGQndEbEJlUUYwd1VIQU9ZRjF3WGRCUWNBNWdYbEJkY0ZCd0RmQmVZRjNRVUhBTjhGNXdYbUJRY0F5Z1hvQmNzRkJ3REtCZWtGNkFVSEFNc0Y2Z1hKQlFjQXl3WG9CZW9GQndESkJlc0YwZ1VIQU1rRjZnWHJCUWNBMGdYc0JkWUZCd0RTQmVzRjdBVUhBTllGN1FYYUJRY0ExZ1hzQmUwRkJ3RGFCZTRGM0FVSEFOb0Y3UVh1QlFjQTZRWHZCZWdGQndEcEJmQUY3d1VIQU9nRjhRWHFCUWNBNkFYdkJmRUZCd0RxQmZJRjZ3VUhBT29GOFFYeUJRY0E2d1h6QmV3RkJ3RHJCZklGOHdVSEFPd0Y5QVh0QlFjQTdBWHpCZlFGQndEMEJlNEY3UVVIQVBRRjlRWHVCUWNBOEFYMkJlOEZCd0R3QmZjRjlnVUhBT0lGOXdYaEJRY0E0Z1gyQmZjRkJ3RHZCZmdGOFFVSEFPOEY5Z1g0QlFjQTR3WDJCZUlGQndEakJmZ0Y5Z1VIQVBFRitRWHlCUWNBOFFYNEJma0ZCd0RrQmZnRjR3VUhBT1FGK1FYNEJRY0E4Z1g2QmZNRkJ3RHlCZmtGK2dVSEFPVUYrUVhrQlFjQTVRWDZCZmtGQndEekJmc0Y5QVVIQVBNRitnWDdCUWNBNWdYNkJlVUZCd0RtQmZzRitnVUhBUFFGL0FYMUJRY0E5QVg3QmZ3RkJ3RG5CZnNGNWdVSEFPY0YvQVg3QlFjQXpRWDlCZjRGQndETkJlRUYvUVVIQU5BRi9nWC9CUWNBMEFYTkJmNEZCd0RVQmY4RkFBWUhBTlFGMEFYL0JRY0EyQVVBQmdFR0J3RFlCZFFGQUFZSEFONEZBUVlDQmdjQTNnWFlCUUVHQndEZ0JRSUdBd1lIQU9BRjNnVUNCZ2NBNlFVRUJnVUdCd0RwQmNvRkJBWUhBQVFHekFVR0JnY0FCQWJLQmN3RkJ3QUdCdEVGQndZSEFBWUd6QVhSQlFjQUJ3YlZCUWdHQndBSEJ0RUYxUVVIQUFnRzJRVUpCZ2NBQ0FiVkJka0ZCd0FKQnRzRkNnWUhBQWtHMlFYYkJRY0E4QVVGQmdzR0J3RHdCZWtGQlFZSEFQY0ZDd1lNQmdjQTl3WHdCUXNHQndEaEJRd0cvUVVIQU9FRjl3VU1CZ2NBL2dVTkJnNEdCd0QrQmYwRkRRWUhBUDhGRGdZUEJnY0Evd1grQlE0R0J3QUFCZzhHRUFZSEFBQUcvd1VQQmdjQUFRWVFCaEVHQndBQkJnQUdFQVlIQUFJR0VRWVNCZ2NBQWdZQkJoRUdCd0FEQmhJR0V3WUhBQU1HQWdZU0JnY0FCUVlVQmhVR0J3QUZCZ1FHRkFZSEFCUUdCZ1lXQmdjQUZBWUVCZ1lHQndBV0JnY0dGd1lIQUJZR0JnWUhCZ2NBRndZSUJoZ0dCd0FYQmdjR0NBWUhBQmdHQ1FZWkJnY0FHQVlJQmdrR0J3QVpCZ29HR2dZSEFCa0dDUVlLQmdjQUN3WVZCaHNHQndBTEJnVUdGUVlIQUF3R0d3WWNCZ2NBREFZTEJoc0dCd0Q5QlJ3R0RRWUhBUDBGREFZY0JnY0FEZ1lkQmg0R0J3QU9CZzBHSFFZSEFBOEdIZ1lmQmdjQUR3WU9CaDRHQndBUUJoOEdJQVlIQUJBR0R3WWZCZ2NBRVFZZ0JpRUdCd0FSQmhBR0lBWUhBQklHSVFZaUJnY0FFZ1lSQmlFR0J3QVRCaUlHSXdZSEFCTUdFZ1lpQmdjQUZRWWtCaVVHQndBVkJoUUdKQVlIQUNRR0ZnWW1CZ2NBSkFZVUJoWUdCd0FtQmhjR0p3WUhBQ1lHRmdZWEJnY0FKd1lZQmlnR0J3QW5CaGNHR0FZSEFDZ0dHUVlwQmdjQUtBWVlCaGtHQndBcEJob0dLZ1lIQUNrR0dRWWFCZ2NBR3dZbEJpc0dCd0FiQmhVR0pRWUhBQndHS3dZc0JnY0FIQVliQmlzR0J3QU5CaXdHSFFZSEFBMEdIQVlzQmdjQUhnWXRCaTRHQndBZUJoMEdMUVlIQUI4R0xnWXZCZ2NBSHdZZUJpNEdCd0FnQmk4R01BWUhBQ0FHSHdZdkJnY0FJUVl3QmpFR0J3QWhCaUFHTUFZSEFDSUdNUVl5QmdjQUlnWWhCakVHQndBakJqSUdNd1lIQUNNR0lnWXlCZ2NBSlFZMEJqVUdCd0FsQmlRR05BWUhBRFFHSmdZMkJnY0FOQVlrQmlZR0J3QTJCaWNHTndZSEFEWUdKZ1luQmdjQU53WW9CamdHQndBM0JpY0dLQVlIQURnR0tRWTVCZ2NBT0FZb0Jpa0dCd0E1QmlvR09nWUhBRGtHS1FZcUJnY0FLd1kxQmpzR0J3QXJCaVVHTlFZSEFDd0dPd1k4QmdjQUxBWXJCanNHQndBZEJqd0dMUVlIQUIwR0xBWThCZ2NBTGdZOUJqNEdCd0F1QmkwR1BRWUhBQzhHUGdZL0JnY0FMd1l1Qmo0R0J3QXdCajhHUUFZSEFEQUdMd1kvQmdjQU1RWkFCa0VHQndBeEJqQUdRQVlIQURJR1FRWkNCZ2NBTWdZeEJrRUdCd0F6QmtJR1F3WUhBRE1HTWdaQ0JnY0FOUVpFQmtVR0J3QTFCalFHUkFZSEFFUUdOZ1pHQmdjQVJBWTBCallHQndCR0JqY0dSd1lIQUVZR05nWTNCZ2NBUndZNEJrZ0dCd0JIQmpjR09BWUhBRWdHT1FaSkJnY0FTQVk0QmprR0J3QkpCam9HU2dZSEFFa0dPUVk2QmdjQU93WkZCa3NHQndBN0JqVUdSUVlIQUR3R1N3Wk1CZ2NBUEFZN0Jrc0dCd0F0Qmt3R1BRWUhBQzBHUEFaTUJnY0FUUVpPQms4R0J3Qk5CbEFHVGdZSEFGRUdVZ1pUQmdjQVVRWlVCbElHQndCVkJrNEdVQVlIQUZVR1ZnWk9CZ2NBVndaVUJsRUdCd0JYQmxnR1ZBWUhBRmtHVmdaVkJnY0FXUVphQmxZR0J3QmJCbGdHVndZSEFGc0dYQVpZQmdjQVhRWmFCbGtHQndCZEJsNEdXZ1lIQUY0RzJ3WGNCUWNBWGdaZEJ0c0ZCd0JmQmx3R1d3WUhBRjhHWUFaY0JnY0FZQWJmQmVBRkJ3QmdCbDhHM3dVSEFHRUdVd1pTQmdjQVlRWmlCbE1HQndCVEJtTUdVUVlIQUZNR1lnWmpCZ2NBVVFaa0JsY0dCd0JSQm1NR1pBWUhBRmNHWlFaYkJnY0FWd1prQm1VR0J3QmJCbVlHWHdZSEFGc0daUVptQmdjQVpnYmZCVjhHQndCbUJ1Y0Yzd1VIQUdjR1RRWlBCZ2NBWndab0JrMEdCd0JwQms4R1RnWUhBR2tHWndaUEJnY0FhZ1pPQmxZR0J3QnFCbWtHVGdZSEFHc0dWZ1phQmdjQWF3WnFCbFlHQndCc0Jsb0dYZ1lIQUd3R2F3WmFCZ2NBN2dWZUJ0d0ZCd0R1Qld3R1hnWUhBRzBHYUFabkJnY0FiUVp1Qm1nR0J3QnZCbWNHYVFZSEFHOEdiUVpuQmdjQWNBWnBCbW9HQndCd0JtOEdhUVlIQUhFR2FnWnJCZ2NBY1Fad0Jtb0dCd0J5Qm1zR2JBWUhBSElHY1FackJnY0E3Z1Z5Qm13R0J3RHVCZlVGY2dZSEFITUdiZ1p0QmdjQWN3WjBCbTRHQndCMEJtSUdZUVlIQUhRR2N3WmlCZ2NBZFFadEJtOEdCd0IxQm5NR2JRWUhBSE1HWXdaaUJnY0Fjd1oxQm1NR0J3QjJCbThHY0FZSEFIWUdkUVp2QmdjQWRRWmtCbU1HQndCMUJuWUdaQVlIQUhjR2NBWnhCZ2NBZHdaMkJuQUdCd0IyQm1VR1pBWUhBSFlHZHdabEJnY0FlQVp4Qm5JR0J3QjRCbmNHY1FZSEFIY0daZ1psQmdjQWR3WjRCbVlHQndEOEJYSUc5UVVIQVB3RmVBWnlCZ2NBZUFibkJXWUdCd0I0QnZ3RjV3VUhBSGtHVWdaNkJnY0FlUVpoQmxJR0J3QjZCbFFHZXdZSEFIb0dVZ1pVQmdjQWV3WllCbndHQndCN0JsUUdXQVlIQUh3R1hBWjlCZ2NBZkFaWUJsd0dCd0I5Qm1BR2ZnWUhBSDBHWEFaZ0JnY0FmZ2JnQlFNR0J3QitCbUFHNEFVSEFIOEdhQWFBQmdjQWZ3Wk5CbWdHQndCUUJuOEdnUVlIQUZBR1RRWi9CZ2NBVlFhQkJvSUdCd0JWQmxBR2dRWUhBRmtHZ2dhREJnY0FXUVpWQm9JR0J3QmRCb01HaEFZSEFGMEdXUWFEQmdjQTJ3V0VCZ29HQndEYkJWMEdoQVlIQUlBR2JnYUZCZ2NBZ0Fab0JtNEdCd0NGQm5RR2hnWUhBSVVHYmdaMEJnY0FoZ1poQm5rR0J3Q0dCblFHWVFZSEFJY0dlZ2FJQmdjQWh3WjVCbm9HQndDSUJuc0dpUVlIQUlnR2VnWjdCZ2NBaVFaOEJvb0dCd0NKQm5zR2ZBWUhBSW9HZlFhTEJnY0FpZ1o4Qm4wR0J3Q0xCbjRHakFZSEFJc0dmUVorQmdjQWpBWURCaE1HQndDTUJuNEdBd1lIQUkwR2dBYU9CZ2NBalFaL0JvQUdCd0NCQm8wR2p3WUhBSUVHZndhTkJnY0FnZ2FQQnBBR0J3Q0NCb0VHandZSEFJTUdrQWFSQmdjQWd3YUNCcEFHQndDRUJwRUdrZ1lIQUlRR2d3YVJCZ2NBQ2dhU0Job0dCd0FLQm9RR2tnWUhBSTRHaFFhVEJnY0FqZ2FBQm9VR0J3Q1RCb1lHbEFZSEFKTUdoUWFHQmdjQWxBWjVCb2NHQndDVUJvWUdlUVlIQUpVR2lBYVdCZ2NBbFFhSEJvZ0dCd0NXQm9rR2x3WUhBSllHaUFhSkJnY0Fsd2FLQnBnR0J3Q1hCb2tHaWdZSEFKZ0dpd2FaQmdjQW1BYUtCb3NHQndDWkJvd0dtZ1lIQUprR2l3YU1CZ2NBbWdZVEJpTUdCd0NhQm93R0V3WUhBSnNHamdhY0JnY0Ftd2FOQm80R0J3Q1BCcHNHblFZSEFJOEdqUWFiQmdjQWtBYWRCcDRHQndDUUJvOEduUVlIQUpFR25nYWZCZ2NBa1FhUUJwNEdCd0NTQnA4R29BWUhBSklHa1FhZkJnY0FHZ2FnQmlvR0J3QWFCcElHb0FZSEFKd0drd2FoQmdjQW5BYU9CcE1HQndDaEJwUUdvZ1lIQUtFR2t3YVVCZ2NBb2dhSEJwVUdCd0NpQnBRR2h3WUhBS01HbGdha0JnY0Fvd2FWQnBZR0J3Q2tCcGNHcFFZSEFLUUdsZ2FYQmdjQXBRYVlCcVlHQndDbEJwY0dtQVlIQUtZR21RYW5CZ2NBcGdhWUJwa0dCd0NuQnBvR3FBWUhBS2NHbVFhYUJnY0FxQVlqQmpNR0J3Q29CcG9HSXdZSEFLa0duQWFxQmdjQXFRYWJCcHdHQndDZEJxa0dxd1lIQUowR213YXBCZ2NBbmdhckJxd0dCd0NlQnAwR3F3WUhBSjhHckFhdEJnY0Fud2FlQnF3R0J3Q2dCcTBHcmdZSEFLQUdud2F0QmdjQUtnYXVCam9HQndBcUJxQUdyZ1lIQUtvR29RYXZCZ2NBcWdhY0JxRUdCd0N2QnFJR3NBWUhBSzhHb1FhaUJnY0FzQWFWQnFNR0J3Q3dCcUlHbFFZSEFMRUdwQWF5QmdjQXNRYWpCcVFHQndDeUJxVUdzd1lIQUxJR3BBYWxCZ2NBc3dhbUJyUUdCd0N6QnFVR3BnWUhBTFFHcHdhMUJnY0F0QWFtQnFjR0J3QzFCcWdHdGdZSEFMVUdwd2FvQmdjQXRnWXpCa01HQndDMkJxZ0dNd1lIQUxjR3FnYTRCZ2NBdHdhcEJxb0dCd0NyQnJjR3VRWUhBS3NHcVFhM0JnY0FyQWE1QnJvR0J3Q3NCcXNHdVFZSEFLMEd1Z2E3QmdjQXJRYXNCcm9HQndDdUJyc0d2QVlIQUs0R3JRYTdCZ2NBT2dhOEJrb0dCd0E2QnE0R3ZBWUhBTGdHcndhOUJnY0F1QWFxQnE4R0J3QzlCckFHdmdZSEFMMEdyd2F3QmdjQXZnYWpCckVHQndDK0JyQUdvd1lIQUw4R3dBYkJCZ2NBdndiQ0JzQUdCd0REQnNJR3Z3WUhBTU1HeEFiQ0JnY0F4UWJHQnNjR0J3REZCc2dHeGdZSEFNa0d5QWJGQmdjQXlRYktCc2dHQndETEJzb0d5UVlIQU1zR3pBYktCZ2NBelFiTUJzc0dCd0ROQnM0R3pBWUhBTThHMEFiUkJnY0F6d2JTQnRBR0J3RFJCdE1HMUFZSEFORUcwQWJUQmdjQTFBYlZCdFlHQndEVUJ0TUcxUVlIQU5ZRzF3YllCZ2NBMWdiVkJ0Y0dCd0RZQnRrRzJnWUhBTmdHMXdiWkJnY0EyZ2JiQnR3R0J3RGFCdGtHMndZSEFOd0czUWJlQmdjQTNBYmJCdDBHQndEZUJ0OEc0QVlIQU40RzNRYmZCZ2NBNEFiaEJ1SUdCd0RnQnQ4RzRRWUhBT0VHNHdiaUJnY0E0UWJrQnVNR0J3RGtCdVVHNHdZSEFPUUc1Z2JsQmdjQTVnYm5CdVVHQndEbUJ1Z0c1d1lIQU9nRzZRYm5CZ2NBNkFicUJ1a0dCd0RxQnVzRzZRWUhBT29HN0FickJnY0E3QWJ0QnVzR0J3RHNCdTRHN1FZSEFPNEc3d2J0QmdjQTdnYndCdThHQndEd0J2RUc3d1lIQVBBRzhnYnhCZ2NBOGdiekJ2RUdCd0R5QnZRRzh3WUhBUFFHOVFiekJnY0E5QWIyQnZVR0J3RDJCdmNHOVFZSEFQWUcrQWIzQmdjQStBYjVCdmNHQndENEJ2b0crUVlIQVBvRyt3YjVCZ2NBK2diOEJ2c0dCd0Q4QnYwRyt3WUhBUHdHL2diOUJnY0EvZ2IvQnYwR0J3RCtCZ0FIL3dZSEFBQUhBUWYvQmdjQUFBY0NCd0VIQndBQkJ3TUhCQWNIQUFFSEFnY0RCd2NBQkFjRkJ3WUhCd0FFQndNSEJRY0hBQVlIQndjSUJ3Y0FCZ2NGQndjSEJ3QUlCd2tIQ2djSEFBZ0hCd2NKQndjQUNnY0xCd3dIQndBS0J3a0hDd2NIQUF3SERRY09Cd2NBREFjTEJ3MEhCd0FPQjlJR3p3WUhBQTRIRFFmU0JnY0EwZ1lQQjlBR0J3RFNCaEFIRHdjSEFOQUdFUWZUQmdjQTBBWVBCeEVIQndEVEJoSUgxUVlIQU5NR0VRY1NCd2NBMVFZVEI5Y0dCd0RWQmhJSEV3Y0hBTmNHRkFmWkJnY0Exd1lUQnhRSEJ3RFpCaFVIMndZSEFOa0dGQWNWQndjQTJ3WVdCOTBHQndEYkJoVUhGZ2NIQU4wR0Z3ZmZCZ2NBM1FZV0J4Y0hCd0RmQmhnSDRRWUhBTjhHRndjWUJ3Y0FHQWZrQnVFR0J3QVlCeGtINUFZSEFCa0g1Z2JrQmdjQUdRY2FCK1lHQndBYUIrZ0c1Z1lIQUJvSEd3Zm9CZ2NBR3dmcUJ1Z0dCd0FiQnh3SDZnWUhBQndIN0FicUJnY0FIQWNkQit3R0J3QWRCKzRHN0FZSEFCMEhIZ2Z1QmdjQUhnZndCdTRHQndBZUJ4OEg4QVlIQUI4SDhnYndCZ2NBSHdjZ0IvSUdCd0FnQi9RRzhnWUhBQ0FISVFmMEJnY0FJUWYyQnZRR0J3QWhCeUlIOWdZSEFDSUgrQWIyQmdjQUlnY2pCL2dHQndBakIvb0crQVlIQUNNSEpBZjZCZ2NBSkFmOEJ2b0dCd0FrQnlVSC9BWUhBQ1VIL2diOEJnY0FKUWNtQi80R0J3QW1Cd0FIL2dZSEFDWUhKd2NBQndjQUp3Y0NCd0FIQndBbkJ5Z0hBZ2NIQUFJSEtRY0RCd2NBQWdjb0J5a0hCd0FEQnlvSEJRY0hBQU1IS1FjcUJ3Y0FCUWNyQndjSEJ3QUZCeW9IS3djSEFBY0hMQWNKQndjQUJ3Y3JCeXdIQndBSkJ5MEhDd2NIQUFrSExBY3RCd2NBQ3djdUJ3MEhCd0FMQnkwSExnY0hBQTBIRUFmU0JnY0FEUWN1QnhBSEJ3QVFCeThIRHdjSEFCQUhNQWN2QndjQUR3Y3hCeEVIQndBUEJ5OEhNUWNIQUJFSE1nY1NCd2NBRVFjeEJ6SUhCd0FTQnpNSEV3Y0hBQklITWdjekJ3Y0FFd2MwQnhRSEJ3QVRCek1ITkFjSEFCUUhOUWNWQndjQUZBYzBCelVIQndBVkJ6WUhGZ2NIQUJVSE5RYzJCd2NBRmdjM0J4Y0hCd0FXQnpZSE53Y0hBQmNIT0FjWUJ3Y0FGd2MzQnpnSEJ3QTRCeGtIR0FjSEFEZ0hPUWNaQndjQU9RY2FCeGtIQndBNUJ6b0hHZ2NIQURvSEd3Y2FCd2NBT2djN0J4c0hCd0E3Qnh3SEd3Y0hBRHNIUEFjY0J3Y0FQQWNkQnh3SEJ3QThCejBISFFjSEFEMEhIZ2NkQndjQVBRYytCeDRIQndBK0J4OEhIZ2NIQUQ0SFB3Y2ZCd2NBUHdjZ0J4OEhCd0EvQjBBSElBY0hBRUVISUFkQUJ3Y0FRUWNoQnlBSEJ3QkNCeUVIUVFjSEFFSUhJZ2NoQndjQVF3Y2lCMElIQndCREJ5TUhJZ2NIQUVRSEl3ZERCd2NBUkFja0J5TUhCd0JGQnlRSFJBY0hBRVVISlFja0J3Y0FSZ2NsQjBVSEJ3QkdCeVlISlFjSEFFY0hKZ2RHQndjQVJ3Y25CeVlIQndCSUJ5Y0hSd2NIQUVnSEtBY25Cd2NBS1FkSUIwa0hCd0FwQnlnSFNBY0hBQ29IU1FkS0J3Y0FLZ2NwQjBrSEJ3QXJCMG9IU3djSEFDc0hLZ2RLQndjQUxBZExCMHdIQndBc0J5c0hTd2NIQUMwSFRBZE5Cd2NBTFFjc0Iwd0hCd0F1QjAwSFRnY0hBQzRITFFkTkJ3Y0FFQWRPQnpBSEJ3QVFCeTRIVGdjSEFDOEhUd2RRQndjQUx3Y3dCMDhIQndBeEIxQUhVUWNIQURFSEx3ZFFCd2NBTWdkUkIxSUhCd0F5QnpFSFVRY0hBRE1IVWdkVEJ3Y0FNd2N5QjFJSEJ3QTBCMU1IVkFjSEFEUUhNd2RUQndjQU5RZFVCMVVIQndBMUJ6UUhWQWNIQURZSFZRZFdCd2NBTmdjMUIxVUhCd0EzQjFZSFZ3Y0hBRGNITmdkV0J3Y0FPQWRYQjFnSEJ3QTRCemNIVndjSEFGa0hPQWRZQndjQVdRYzVCemdIQndCYUJ6a0hXUWNIQUZvSE9nYzVCd2NBV3djNkIxb0hCd0JiQnpzSE9nY0hBRndIT3dkYkJ3Y0FYQWM4QnpzSEJ3QmRCendIWEFjSEFGMEhQUWM4QndjQVhnYzlCMTBIQndCZUJ6NEhQUWNIQUY4SFBnZGVCd2NBWHdjL0J6NEhCd0JnQno4SFh3Y0hBR0FIUUFjL0J3Y0FZUWRBQjJBSEJ3QmhCMEVIUUFjSEFHSUhRUWRoQndjQVlnZENCMEVIQndCakIwSUhZZ2NIQUdNSFF3ZENCd2NBWkFkREIyTUhCd0JrQjBRSFF3Y0hBR1VIUkFka0J3Y0FaUWRGQjBRSEJ3Qm1CMFVIWlFjSEFHWUhSZ2RGQndjQVp3ZEdCMllIQndCbkIwY0hSZ2NIQUdnSFJ3ZG5Cd2NBYUFkSUIwY0hCd0JKQjJnSGFRY0hBRWtIU0Fkb0J3Y0FTZ2RwQjJvSEJ3QktCMGtIYVFjSEFFc0hhZ2RyQndjQVN3ZEtCMm9IQndCTUIyc0hiQWNIQUV3SFN3ZHJCd2NBVFFkc0IyMEhCd0JOQjB3SGJBY0hBRTRIYlFkdUJ3Y0FUZ2ROQjIwSEJ3QXdCMjRIVHdjSEFEQUhUZ2R1QndjQVVBZHZCM0FIQndCUUIwOEhid2NIQUZFSGNBZHhCd2NBVVFkUUIzQUhCd0JTQjNFSGNnY0hBRklIVVFkeEJ3Y0FVd2R5QjNNSEJ3QlRCMUlIY2djSEFGUUhjd2QwQndjQVZBZFRCM01IQndCVkIzUUhkUWNIQUZVSFZBZDBCd2NBVmdkMUIzWUhCd0JXQjFVSGRRY0hBRmNIZGdkM0J3Y0FWd2RXQjNZSEJ3QllCM2NIZUFjSEFGZ0hWd2QzQndjQWVRZFlCM2dIQndCNUIxa0hXQWNIQUhvSFdRZDVCd2NBZWdkYUIxa0hCd0I3QjFvSGVnY0hBSHNIV3dkYUJ3Y0FmQWRiQjNzSEJ3QjhCMXdIV3djSEFIMEhYQWQ4QndjQWZRZGRCMXdIQndCK0IxMEhmUWNIQUg0SFhnZGRCd2NBZndkZUIzNEhCd0IvQjE4SFhnY0hBSUFIWHdkL0J3Y0FnQWRnQjE4SEJ3Q0JCMkFIZ0FjSEFJRUhZUWRnQndjQWdnZGhCNEVIQndDQ0IySUhZUWNIQUlNSFlnZUNCd2NBZ3dkakIySUhCd0NFQjJNSGd3Y0hBSVFIWkFkakJ3Y0FoUWRrQjRRSEJ3Q0ZCMlVIWkFjSEFJWUhaUWVGQndjQWhnZG1CMlVIQndDSEIyWUhoZ2NIQUljSFp3ZG1Cd2NBaUFkbkI0Y0hCd0NJQjJnSFp3Y0hBR2tIaUFlSkJ3Y0FhUWRvQjRnSEJ3QnFCNGtIaWdjSEFHb0hhUWVKQndjQWF3ZUtCNHNIQndCckIyb0hpZ2NIQUd3SGl3ZU1Cd2NBYkFkckI0c0hCd0J0QjR3SGpRY0hBRzBIYkFlTUJ3Y0FiZ2VOQjQ0SEJ3QnVCMjBIalFjSEFFOEhqZ2R2QndjQVR3ZHVCNDRIQndDUEI1QUhrUWNIQUk4SGtnZVFCd2NBa1FlVEI1UUhCd0NSQjVBSGt3Y0hBSlFIbFFlV0J3Y0FsQWVUQjVVSEJ3Q1dCNWNIbUFjSEFKWUhsUWVYQndjQW1BZVpCNW9IQndDWUI1Y0htUWNIQUpvSG13ZWNCd2NBbWdlWkI1c0hCd0NjQjUwSG5nY0hBSndIbXdlZEJ3Y0FuZ2VmQjZBSEJ3Q2VCNTBIbndjSEFLQUhvUWVpQndjQW9BZWZCNkVIQndDaEI2TUhvZ2NIQUtFSHBBZWpCd2NBcEFlbEI2TUhCd0NrQjZZSHBRY0hBS1lIcHdlbEJ3Y0FwZ2VvQjZjSEJ3Q29CNmtIcHdjSEFLZ0hxZ2VwQndjQXFnZXJCNmtIQndDcUI2d0hxd2NIQUt3SHJRZXJCd2NBckFldUI2MEhCd0N1QjY4SHJRY0hBSzRIc0FldkJ3Y0FzQWV4QjY4SEJ3Q3dCN0lIc1FjSEFMSUhzd2V4QndjQXNnZTBCN01IQndDMEI3VUhzd2NIQUxRSHRnZTFCd2NBdGdlM0I3VUhCd0MyQjdnSHR3Y0hBTGdIdVFlM0J3Y0F1QWU2QjdrSEJ3QzZCN3NIdVFjSEFMb0h2QWU3QndjQXZBZTlCN3NIQndDOEI3NEh2UWNIQUw0SHZ3ZTlCd2NBdmdmQUI3OEhCd0RBQjhFSHZ3Y0hBTUFId2dmQkJ3Y0F3UWZEQjhRSEJ3REJCOElId3djSEFNUUh4UWZHQndjQXhBZkRCOFVIQndER0I4Y0h5QWNIQU1ZSHhRZkhCd2NBeUFmSkI4b0hCd0RJQjhjSHlRY0hBTW9IeXdmTUJ3Y0F5Z2ZKQjhzSEJ3RE1CODBIemdjSEFNd0h5d2ZOQndjQXpnZVNCNDhIQndET0I4MEhrZ2NIQUpJSHp3ZVFCd2NBa2dmUUI4OEhCd0NRQjlFSGt3Y0hBSkFIendmUkJ3Y0Frd2ZTQjVVSEJ3Q1RCOUVIMGdjSEFKVUgwd2VYQndjQWxRZlNCOU1IQndDWEI5UUhtUWNIQUpjSDB3ZlVCd2NBbVFmVkI1c0hCd0NaQjlRSDFRY0hBSnNIMWdlZEJ3Y0Ftd2ZWQjlZSEJ3Q2RCOWNIbndjSEFKMEgxZ2ZYQndjQW53ZllCNkVIQndDZkI5Y0gyQWNIQU5nSHBBZWhCd2NBMkFmWkI2UUhCd0RaQjZZSHBBY0hBTmtIMmdlbUJ3Y0EyZ2VvQjZZSEJ3RGFCOXNIcUFjSEFOc0hxZ2VvQndjQTJ3ZmNCNm9IQndEY0I2d0hxZ2NIQU53SDNRZXNCd2NBM1FldUI2d0hCd0RkQjk0SHJnY0hBTjRIc0FldUJ3Y0EzZ2ZmQjdBSEJ3RGZCN0lIc0FjSEFOOEg0QWV5QndjQTRBZTBCN0lIQndEZ0IrRUh0QWNIQU9FSHRnZTBCd2NBNFFmaUI3WUhCd0RpQjdnSHRnY0hBT0lINHdlNEJ3Y0E0d2U2QjdnSEJ3RGpCK1FIdWdjSEFPUUh2QWU2QndjQTVBZmxCN3dIQndEbEI3NEh2QWNIQU9VSDVnZStCd2NBNWdmQUI3NEhCd0RtQitjSHdBY0hBT2NId2dmQUJ3Y0E1d2ZvQjhJSEJ3RENCK2tId3djSEFNSUg2QWZwQndjQXd3ZnFCOFVIQndEREIra0g2Z2NIQU1VSDZ3ZkhCd2NBeFFmcUIrc0hCd0RIQit3SHlRY0hBTWNINndmc0J3Y0F5UWZ0QjhzSEJ3REpCK3dIN1FjSEFNc0g3Z2ZOQndjQXl3ZnRCKzRIQndETkI5QUhrZ2NIQU0wSDdnZlFCd2NBMEFmdkI4OEhCd0RRQi9BSDd3Y0hBTThIOFFmUkJ3Y0F6d2Z2Qi9FSEJ3RFJCL0lIMGdjSEFORUg4UWZ5QndjQTBnZnpCOU1IQndEU0IvSUg4d2NIQU5NSDlBZlVCd2NBMHdmekIvUUhCd0RVQi9VSDFRY0hBTlFIOUFmMUJ3Y0ExUWYyQjlZSEJ3RFZCL1VIOWdjSEFOWUg5d2ZYQndjQTFnZjJCL2NIQndEWEIvZ0gyQWNIQU5jSDl3ZjRCd2NBK0FmWkI5Z0hCd0Q0Qi9rSDJRY0hBUGtIMmdmWkJ3Y0ErUWY2QjlvSEJ3RDZCOXNIMmdjSEFQb0grd2ZiQndjQSt3ZmNCOXNIQndEN0Ivd0gzQWNIQVB3SDNRZmNCd2NBL0FmOUI5MEhCd0Q5Qjk0SDNRY0hBUDBIL2dmZUJ3Y0EvZ2ZmQjk0SEJ3RCtCLzhIM3djSEFQOEg0QWZmQndjQS93Y0FDT0FIQndBQkNPQUhBQWdIQUFFSTRRZmdCd2NBQWdqaEJ3RUlCd0FDQ09JSDRRY0hBQU1JNGdjQ0NBY0FBd2pqQitJSEJ3QUVDT01IQXdnSEFBUUk1QWZqQndjQUJRamtCd1FJQndBRkNPVUg1QWNIQUFZSTVRY0ZDQWNBQmdqbUIrVUhCd0FIQ09ZSEJnZ0hBQWNJNXdmbUJ3Y0FDQWpuQndjSUJ3QUlDT2dINXdjSEFPa0hDQWdKQ0FjQTZRZm9Cd2dJQndEcUJ3a0lDZ2dIQU9vSDZRY0pDQWNBNndjS0NBc0lCd0RyQitvSENnZ0hBT3dIQ3dnTUNBY0E3QWZyQndzSUJ3RHRCd3dJRFFnSEFPMEg3QWNNQ0FjQTdnY05DQTRJQndEdUIrMEhEUWdIQU5BSERnandCd2NBMEFmdUJ3NElCd0R2Qnc4SUVBZ0hBTzhIOEFjUENBY0E4UWNRQ0JFSUJ3RHhCKzhIRUFnSEFQSUhFUWdTQ0FjQThnZnhCeEVJQndEekJ4SUlFd2dIQVBNSDhnY1NDQWNBOUFjVENCUUlCd0QwQi9NSEV3Z0hBUFVIRkFnVkNBY0E5UWYwQnhRSUJ3RDJCeFVJRmdnSEFQWUg5UWNWQ0FjQTl3Y1dDQmNJQndEM0IvWUhGZ2dIQVBnSEZ3Z1lDQWNBK0FmM0J4Y0lCd0FaQ1BnSEdBZ0hBQmtJK1FmNEJ3Y0FHZ2o1QnhrSUJ3QWFDUG9IK1FjSEFCc0krZ2NhQ0FjQUd3ajdCL29IQndBY0NQc0hHd2dIQUJ3SS9BZjdCd2NBSFFqOEJ4d0lCd0FkQ1AwSC9BY0hBQjRJL1FjZENBY0FIZ2orQi8wSEJ3QWZDUDRISGdnSEFCOEkvd2YrQndjQUlBai9CeDhJQndBZ0NBQUkvd2NIQUNFSUFBZ2dDQWNBSVFnQkNBQUlCd0FpQ0FFSUlRZ0hBQ0lJQWdnQkNBY0FJd2dDQ0NJSUJ3QWpDQU1JQWdnSEFDUUlBd2dqQ0FjQUpBZ0VDQU1JQndBbENBUUlKQWdIQUNVSUJRZ0VDQWNBSmdnRkNDVUlCd0FtQ0FZSUJRZ0hBQ2NJQmdnbUNBY0FKd2dIQ0FZSUJ3QW9DQWNJSndnSEFDZ0lDQWdIQ0FjQUNRZ29DQ2tJQndBSkNBZ0lLQWdIQUFvSUtRZ3FDQWNBQ2dnSkNDa0lCd0FMQ0NvSUt3Z0hBQXNJQ2dncUNBY0FEQWdyQ0N3SUJ3QU1DQXNJS3dnSEFBMElMQWd0Q0FjQURRZ01DQ3dJQndBT0NDMElMZ2dIQUE0SURRZ3RDQWNBOEFjdUNBOElCd0R3Qnc0SUxnZ0hBQkFJTHdnd0NBY0FFQWdQQ0M4SUJ3QVJDREFJTVFnSEFCRUlFQWd3Q0FjQUVnZ3hDRElJQndBU0NCRUlNUWdIQUJNSU1nZ3pDQWNBRXdnU0NESUlCd0FVQ0RNSU5BZ0hBQlFJRXdnekNBY0FGUWcwQ0RVSUJ3QVZDQlFJTkFnSEFCWUlOUWcyQ0FjQUZnZ1ZDRFVJQndBWENEWUlOd2dIQUJjSUZnZzJDQWNBR0FnM0NEZ0lCd0FZQ0JjSU53Z0hBRGtJR0FnNENBY0FPUWdaQ0JnSUJ3QTZDQmtJT1FnSEFEb0lHZ2daQ0FjQU93Z2FDRG9JQndBN0NCc0lHZ2dIQUR3SUd3ZzdDQWNBUEFnY0NCc0lCd0E5Q0J3SVBBZ0hBRDBJSFFnY0NBY0FQZ2dkQ0QwSUJ3QStDQjRJSFFnSEFEOElIZ2crQ0FjQVB3Z2ZDQjRJQndCQUNCOElQd2dIQUVBSUlBZ2ZDQWNBUVFnZ0NFQUlCd0JCQ0NFSUlBZ0hBRUlJSVFoQkNBY0FRZ2dpQ0NFSUJ3QkRDQ0lJUWdnSEFFTUlJd2dpQ0FjQVJBZ2pDRU1JQndCRUNDUUlJd2dIQUVVSUpBaEVDQWNBUlFnbENDUUlCd0JHQ0NVSVJRZ0hBRVlJSmdnbENBY0FSd2dtQ0VZSUJ3QkhDQ2NJSmdnSEFFZ0lKd2hIQ0FjQVNBZ29DQ2NJQndBcENFZ0lTUWdIQUNrSUtBaElDQWNBS2doSkNFb0lCd0FxQ0NrSVNRZ0hBQ3NJU2doTENBY0FLd2dxQ0VvSUJ3QXNDRXNJVEFnSEFDd0lLd2hMQ0FjQUxRaE1DRTBJQndBdENDd0lUQWdIQUM0SVRRaE9DQWNBTGdndENFMElCd0FQQ0U0SUx3Z0hBQThJTGdoT0NBY0FUd2hRQ0ZFSUJ3QlBDRklJVUFnSEFGRUlVd2hVQ0FjQVVRaFFDRk1JQndCVUNGVUlWZ2dIQUZRSVV3aFZDQWNBVmdoWENGZ0lCd0JXQ0ZVSVZ3Z0hBRmdJV1FoYUNBY0FXQWhYQ0ZrSUJ3QmFDRnNJWEFnSEFGb0lXUWhiQ0FjQVhBaGRDRjRJQndCY0NGc0lYUWdIQUY0SVh3aGdDQWNBWGdoZENGOElCd0JnQ0dFSVlnZ0hBR0FJWHdoaENBY0FZUWhqQ0dJSUJ3QmhDR1FJWXdnSEFHUUlaUWhqQ0FjQVpBaG1DR1VJQndCbUNHY0laUWdIQUdZSWFBaG5DQWNBYUFocENHY0lCd0JvQ0dvSWFRZ0hBR29JYXdocENBY0FhZ2hzQ0dzSUJ3QnNDRzBJYXdnSEFHd0liZ2h0Q0FjQWJnaHZDRzBJQndCdUNIQUlid2dIQUhBSWNRaHZDQWNBY0FoeUNIRUlCd0J5Q0hNSWNRZ0hBSElJZEFoekNBY0FkQWgxQ0hNSUJ3QjBDSFlJZFFnSEFIWUlkd2gxQ0FjQWRnaDRDSGNJQndCNENIa0lkd2dIQUhnSWVnaDVDQWNBZWdoN0NIa0lCd0I2Q0h3SWV3Z0hBSHdJZlFoN0NBY0FmQWgrQ0gwSUJ3QitDSDhJZlFnSEFINElnQWgvQ0FjQWdBaUJDSDhJQndDQUNJSUlnUWdIQUlFSWd3aUVDQWNBZ1FpQ0NJTUlCd0NFQ0lVSWhnZ0hBSVFJZ3dpRkNBY0FoZ2lIQ0lnSUJ3Q0dDSVVJaHdnSEFJZ0lpUWlLQ0FjQWlBaUhDSWtJQndDS0NJc0lqQWdIQUlvSWlRaUxDQWNBakFpTkNJNElCd0NNQ0lzSWpRZ0hBSTRJVWdoUENBY0FqZ2lOQ0ZJSUJ3QlNDSThJVUFnSEFGSUlrQWlQQ0FjQVVBaVJDRk1JQndCUUNJOElrUWdIQUZNSWtnaFZDQWNBVXdpUkNKSUlCd0JWQ0pNSVZ3Z0hBRlVJa2dpVENBY0FWd2lVQ0ZrSUJ3QlhDSk1JbEFnSEFGa0lsUWhiQ0FjQVdRaVVDSlVJQndCYkNKWUlYUWdIQUZzSWxRaVdDQWNBWFFpWENGOElCd0JkQ0pZSWx3Z0hBRjhJbUFoaENBY0FYd2lYQ0pnSUJ3Q1lDR1FJWVFnSEFKZ0ltUWhrQ0FjQW1RaG1DR1FJQndDWkNKb0laZ2dIQUpvSWFBaG1DQWNBbWdpYkNHZ0lCd0NiQ0dvSWFBZ0hBSnNJbkFocUNBY0FuQWhzQ0dvSUJ3Q2NDSjBJYkFnSEFKMEliZ2hzQ0FjQW5RaWVDRzRJQndDZUNIQUliZ2dIQUo0SW53aHdDQWNBbndoeUNIQUlCd0NmQ0tBSWNnZ0hBS0FJZEFoeUNBY0FvQWloQ0hRSUJ3Q2hDSFlJZEFnSEFLRUlvZ2gyQ0FjQW9naDRDSFlJQndDaUNLTUllQWdIQUtNSWVnaDRDQWNBb3dpa0NIb0lCd0NrQ0h3SWVnZ0hBS1FJcFFoOENBY0FwUWgrQ0h3SUJ3Q2xDS1lJZmdnSEFLWUlnQWgrQ0FjQXBnaW5DSUFJQndDbkNJSUlnQWdIQUtjSXFBaUNDQWNBZ2dpcENJTUlCd0NDQ0tnSXFRZ0hBSU1JcWdpRkNBY0Fnd2lwQ0tvSUJ3Q0ZDS3NJaHdnSEFJVUlxZ2lyQ0FjQWh3aXNDSWtJQndDSENLc0lyQWdIQUlrSXJRaUxDQWNBaVFpc0NLMElCd0NMQ0s0SWpRZ0hBSXNJclFpdUNBY0FqUWlRQ0ZJSUJ3Q05DSzRJa0FnSEFKQUlyd2lQQ0FjQWtBaXdDSzhJQndDUENMRUlrUWdIQUk4SXJ3aXhDQWNBa1FpeUNKSUlCd0NSQ0xFSXNnZ0hBSklJc3dpVENBY0FrZ2l5Q0xNSUJ3Q1RDTFFJbEFnSEFKTUlzd2kwQ0FjQWxBaTFDSlVJQndDVUNMUUl0UWdIQUpVSXRnaVdDQWNBbFFpMUNMWUlCd0NXQ0xjSWx3Z0hBSllJdGdpM0NBY0Fsd2k0Q0pnSUJ3Q1hDTGNJdUFnSEFMZ0ltUWlZQ0FjQXVBaTVDSmtJQndDNUNKb0ltUWdIQUxrSXVnaWFDQWNBdWdpYkNKb0lCd0M2Q0xzSW13Z0hBTHNJbkFpYkNBY0F1d2k4Q0p3SUJ3QzhDSjBJbkFnSEFMd0l2UWlkQ0FjQXZRaWVDSjBJQndDOUNMNEluZ2dIQUw0SW53aWVDQWNBdmdpL0NKOElCd0MvQ0tBSW53Z0hBTDhJd0FpZ0NBY0F3UWlnQ01BSUJ3REJDS0VJb0FnSEFNSUlvUWpCQ0FjQXdnaWlDS0VJQndERENLSUl3Z2dIQU1NSW93aWlDQWNBeEFpakNNTUlCd0RFQ0tRSW93Z0hBTVVJcEFqRUNBY0F4UWlsQ0tRSUJ3REdDS1VJeFFnSEFNWUlwZ2lsQ0FjQXh3aW1DTVlJQndESENLY0lwZ2dIQU1nSXB3akhDQWNBeUFpb0NLY0lCd0NwQ01nSXlRZ0hBS2tJcUFqSUNBY0FxZ2pKQ01vSUJ3Q3FDS2tJeVFnSEFLc0l5Z2pMQ0FjQXF3aXFDTW9JQndDc0NNc0l6QWdIQUt3SXF3akxDQWNBclFqTUNNMElCd0N0Q0t3SXpBZ0hBSzRJelFqT0NBY0FyZ2l0Q00wSUJ3Q1FDTTRJc0FnSEFKQUlyZ2pPQ0FjQXJ3alBDTkFJQndDdkNMQUl6d2dIQUxFSTBBalJDQWNBc1FpdkNOQUlCd0N5Q05FSTBnZ0hBTElJc1FqUkNBY0Fzd2pTQ05NSUJ3Q3pDTElJMGdnSEFMUUkwd2pVQ0FjQXRBaXpDTk1JQndDMUNOUUkxUWdIQUxVSXRBalVDQWNBdGdqVkNOWUlCd0MyQ0xVSTFRZ0hBTGNJMWdqWENBY0F0d2kyQ05ZSUJ3QzRDTmNJMkFnSEFMZ0l0d2pYQ0FjQTJRaTRDTmdJQndEWkNMa0l1QWdIQU5vSXVRalpDQWNBMmdpNkNMa0lCd0RiQ0xvSTJnZ0hBTnNJdXdpNkNBY0EzQWk3Q05zSUJ3RGNDTHdJdXdnSEFOMEl2QWpjQ0FjQTNRaTlDTHdJQndEZUNMMEkzUWdIQU40SXZnaTlDQWNBM3dpK0NONElCd0RmQ0w4SXZnZ0hBT0FJdndqZkNBY0E0QWpBQ0w4SUJ3RGhDTUFJNEFnSEFPRUl3UWpBQ0FjQTRnakJDT0VJQndEaUNNSUl3UWdIQU9NSXdnamlDQWNBNHdqRENNSUlCd0RrQ01NSTR3Z0hBT1FJeEFqRENBY0E1UWpFQ09RSUJ3RGxDTVVJeEFnSEFPWUl4UWpsQ0FjQTVnakdDTVVJQndEbkNNWUk1Z2dIQU9jSXh3akdDQWNBNkFqSENPY0lCd0RvQ01nSXh3Z0hBTWtJNkFqcENBY0F5UWpJQ09nSUJ3REtDT2tJNmdnSEFNb0l5UWpwQ0FjQXl3anFDT3NJQndETENNb0k2Z2dIQU13STZ3anNDQWNBekFqTENPc0lCd0ROQ093STdRZ0hBTTBJekFqc0NBY0F6Z2p0Q080SUJ3RE9DTTBJN1FnSEFMQUk3Z2pQQ0FjQXNBak9DTzRJQndEUUNPOEk4QWdIQU5BSXp3anZDQWNBMFFqd0NQRUlCd0RSQ05BSThBZ0hBTklJOFFqeUNBY0EwZ2pSQ1BFSUJ3RFRDUElJOHdnSEFOTUkwZ2p5Q0FjQTFBanpDUFFJQndEVUNOTUk4d2dIQU5VSTlBajFDQWNBMVFqVUNQUUlCd0RXQ1BVSTlnZ0hBTllJMVFqMUNBY0Exd2oyQ1BjSUJ3RFhDTllJOWdnSEFOZ0k5d2o0Q0FjQTJBalhDUGNJQndENUNOZ0krQWdIQVBrSTJRallDQWNBK2dqWkNQa0lCd0Q2Q05vSTJRZ0hBUHNJMmdqNkNBY0Erd2piQ05vSUJ3RDhDTnNJK3dnSEFQd0kzQWpiQ0FjQS9RamNDUHdJQndEOUNOMEkzQWdIQVA0STNRajlDQWNBL2dqZUNOMElCd0QvQ040SS9nZ0hBUDhJM3dqZUNBY0FBQW5mQ1A4SUJ3QUFDZUFJM3dnSEFBRUo0QWdBQ1FjQUFRbmhDT0FJQndBQ0NlRUlBUWtIQUFJSjRnamhDQWNBQXduaUNBSUpCd0FEQ2VNSTRnZ0hBQVFKNHdnRENRY0FCQW5rQ09NSUJ3QUZDZVFJQkFrSEFBVUo1UWprQ0FjQUJnbmxDQVVKQndBR0NlWUk1UWdIQUFjSjVnZ0dDUWNBQndubkNPWUlCd0FJQ2VjSUJ3a0hBQWdKNkFqbkNBY0E2UWdJQ1FrSkJ3RHBDT2dJQ0FrSEFPb0lDUWtLQ1FjQTZnanBDQWtKQndEckNBb0pDd2tIQU9zSTZnZ0tDUWNBN0FnTENRd0pCd0RzQ09zSUN3a0hBTzBJREFrTkNRY0E3UWpzQ0F3SkJ3RHVDQTBKRGdrSEFPNEk3UWdOQ1FjQXp3Z09DZThJQndEUENPNElEZ2tIQUE4SkVBa1JDUWNBRHdrU0NSQUpCd0FUQ1JFSkZBa0hBQk1KRHdrUkNRY0FGUWtXQ1JjSkJ3QVZDUmdKRmdrSEFCa0pGd2thQ1FjQUdRa1ZDUmNKQndBYkNSd0pIUWtIQUJzSkhna2NDUWNBSHdrZENTQUpCd0FmQ1JzSkhRa0hBQ0VKSUFraUNRY0FJUWtmQ1NBSkJ3QWpDU0VKSWdrSEFDTUpKQWtoQ1FjQUpRa2tDU01KQndBbENTWUpKQWtIQUNjSkpna2xDUWNBSndrb0NTWUpCd0FwQ1NvSkt3a0hBQ2tKTEFrcUNRY0FMUWtzQ1NrSkJ3QXRDUzRKTEFrSEFDOEpNQWt4Q1FjQUx3a3lDVEFKQndBUUNUSUpMd2tIQUJBSkVna3lDUWNBTXdrdkNUUUpCd0F6Q1JBSkx3a0hBQkVKTXdrMUNRY0FFUWtRQ1RNSkJ3QVVDVFVKTmdrSEFCUUpFUWsxQ1FjQUZnazJDVGNKQndBV0NSUUpOZ2tIQUJjSk53azRDUWNBRndrV0NUY0pCd0FhQ1RnSk9Ra0hBQm9KRndrNENRY0FIQWs1Q1RvSkJ3QWNDUm9KT1FrSEFCMEpPZ2s3Q1FjQUhRa2NDVG9KQndBZ0NUc0pQQWtIQUNBSkhRazdDUWNBSWdrOENUMEpCd0FpQ1NBSlBBa0hBRDRKSWdrOUNRY0FQZ2tqQ1NJSkJ3QS9DU01KUGdrSEFEOEpKUWtqQ1FjQVFBa2xDVDhKQndCQUNTY0pKUWtIQUVFSkp3bEFDUWNBUVFrckNTY0pCd0JDQ1NzSlFRa0hBRUlKS1FrckNRY0FRd2twQ1VJSkJ3QkRDUzBKS1FrSEFFUUpMUWxEQ1FjQVJBa3hDUzBKQndBMENURUpSQWtIQURRSkx3a3hDUWNBUlFrMENVWUpCd0JGQ1RNSk5Ba0hBRFVKUlFsSENRY0FOUWt6Q1VVSkJ3QTJDVWNKU0FrSEFEWUpOUWxIQ1FjQU53bElDVWtKQndBM0NUWUpTQWtIQURnSlNRbEtDUWNBT0FrM0NVa0pCd0E0Q1VzSk9Ra0hBRGdKU2dsTENRY0FPUWxNQ1RvSkJ3QTVDVXNKVEFrSEFEb0pUUWs3Q1FjQU9nbE1DVTBKQndBN0NVNEpQQWtIQURzSlRRbE9DUWNBUEFsUENUMEpCd0E4Q1U0SlR3a0hBRThKUGdrOUNRY0FUd2xRQ1Q0SkJ3QlFDVDhKUGdrSEFGQUpVUWsvQ1FjQVVRbEFDVDhKQndCUkNWSUpRQWtIQUZJSlFRbEFDUWNBVWdsVENVRUpCd0JUQ1VJSlFRa0hBRk1KVkFsQ0NRY0FWUWxDQ1ZRSkJ3QlZDVU1KUWdrSEFGWUpRd2xWQ1FjQVZnbEVDVU1KQndCR0NVUUpWZ2tIQUVZSk5BbEVDUWNBVndsR0NWZ0pCd0JYQ1VVSlJna0hBRWNKVndsWkNRY0FSd2xGQ1ZjSkJ3QklDVmtKV2drSEFFZ0pSd2xaQ1FjQVNRbGFDVnNKQndCSkNVZ0pXZ2tIQUVvSld3bGNDUWNBU2dsSkNWc0pCd0JLQ1YwSlN3a0hBRW9KWEFsZENRY0FTd2xlQ1V3SkJ3QkxDVjBKWGdrSEFFd0pYd2xOQ1FjQVRBbGVDVjhKQndCTkNXQUpUZ2tIQUUwSlh3bGdDUWNBVGdsaENVOEpCd0JPQ1dBSllRa0hBR0VKVUFsUENRY0FZUWxpQ1ZBSkJ3QmlDVkVKVUFrSEFHSUpZd2xSQ1FjQVl3bFNDVkVKQndCakNXUUpVZ2tIQUdRSlV3bFNDUWNBWkFsbENWTUpCd0JsQ1ZRSlV3a0hBR1VKWmdsVUNRY0Fad2xVQ1dZSkJ3Qm5DVlVKVkFrSEFHZ0pWUWxuQ1FjQWFBbFdDVlVKQndCWUNWWUphQWtIQUZnSlJnbFdDUWNBZ1FCWUNYOEFCd0NCQUZjSldBa0hBRmtKZ1FDQ0FBY0FXUWxYQ1lFQUJ3QmFDWUlBaEFBSEFGb0pXUW1DQUFjQVd3bUVBSVlBQndCYkNWb0poQUFIQUZ3SmhnQ0lBQWNBWEFsYkNZWUFCd0JjQ1lzQVhRa0hBRndKaUFDTEFBY0FYUW1OQUY0SkJ3QmRDWXNBalFBSEFGNEpqd0JmQ1FjQVhnbU5BSThBQndCZkNaRUFZQWtIQUY4Smp3Q1JBQWNBWUFtVEFHRUpCd0JnQ1pFQWt3QUhBSk1BWWdsaENRY0Frd0NVQUdJSkJ3Q1VBR01KWWdrSEFKUUFsZ0JqQ1FjQWxnQmtDV01KQndDV0FKZ0FaQWtIQUpnQVpRbGtDUWNBbUFDYUFHVUpCd0NhQUdZSlpRa0hBSm9BbkFCbUNRY0Fud0JtQ1p3QUJ3Q2ZBR2NKWmdrSEFLRUFad21mQUFjQW9RQm9DV2NKQndCL0FHZ0pvUUFIQUg4QVdBbG9DUWNBYVFrV0NXb0pCd0JwQ1JRSkZna0hBQk1KYVFsckNRY0FFd2tVQ1drSkJ3QVlDV3NKYkFrSEFCZ0pFd2xyQ1FjQWFna1lDV3dKQndCcUNSWUpHQWtIQUcwSkhBbHVDUWNBYlFrYUNSd0pCd0FaQ1cwSmJ3a0hBQmtKR2dsdENRY0FIZ2x2Q1hBSkJ3QWVDUmtKYndrSEFHNEpIZ2x3Q1FjQWJna2NDUjRKQndBb0NYRUpjZ2tIQUNnSkp3bHhDUWNBY3drb0NYSUpCd0J6Q1NvSktBa0hBSFFKS2dsekNRY0FkQWtyQ1NvSkJ3QW5DWFFKY1FrSEFDY0pLd2wwQ1FjQUxnbDFDWFlKQndBdUNTMEpkUWtIQUhjSkxnbDJDUWNBZHdrd0NTNEpCd0I0Q1RBSmR3a0hBSGdKTVFrd0NRY0FMUWw0Q1hVSkJ3QXRDVEVKZUFrSEFIa0phZ2w2Q1FjQWVRbHBDV29KQndCckNYa0pld2tIQUdzSmFRbDVDUWNBYkFsN0NYd0pCd0JzQ1dzSmV3a0hBSG9KYkFsOENRY0FlZ2xxQ1d3SkJ3QjlDVzRKZmdrSEFIMEpiUWx1Q1FjQWJ3bDlDWDhKQndCdkNXMEpmUWtIQUhBSmZ3bUFDUWNBY0FsdkNYOEpCd0IrQ1hBSmdBa0hBSDRKYmdsd0NRY0FjZ21CQ1lJSkJ3QnlDWEVKZ1FrSEFJTUpjZ21DQ1FjQWd3bHpDWElKQndDRUNYTUpnd2tIQUlRSmRBbHpDUWNBY1FtRUNZRUpCd0J4Q1hRSmhBa0hBSFlKaFFtR0NRY0FkZ2wxQ1lVSkJ3Q0hDWFlKaGdrSEFJY0pkd2wyQ1FjQWlBbDNDWWNKQndDSUNYZ0pkd2tIQUhVSmlBbUZDUWNBZFFsNENZZ0pCd0NKQ1hvSmlna0hBSWtKZVFsNkNRY0Fld21KQ1lzSkJ3QjdDWGtKaVFrSEFId0ppd21NQ1FjQWZBbDdDWXNKQndDS0NYd0pqQWtIQUlvSmVnbDhDUWNBalFsK0NZNEpCd0NOQ1gwSmZna0hBSDhKalFtUENRY0Fmd2w5Q1kwSkJ3Q0FDWThKa0FrSEFJQUpmd21QQ1FjQWpnbUFDWkFKQndDT0NYNEpnQWtIQUlJSmtRbVNDUWNBZ2dtQkNaRUpCd0NUQ1lJSmtna0hBSk1KZ3dtQ0NRY0FsQW1EQ1pNSkJ3Q1VDWVFKZ3drSEFJRUpsQW1SQ1FjQWdRbUVDWlFKQndDR0NaVUpsZ2tIQUlZSmhRbVZDUWNBbHdtR0NaWUpCd0NYQ1ljSmhna0hBSmdKaHdtWENRY0FtQW1JQ1ljSkJ3Q0ZDWmdKbFFrSEFJVUppQW1ZQ1FjQW1RbUtDWm9KQndDWkNZa0ppZ2tIQUlzSm1RbWJDUWNBaXdtSkNaa0pCd0NNQ1pzSm5Ba0hBSXdKaXdtYkNRY0FtZ21NQ1p3SkJ3Q2FDWW9KakFrSEFKMEpqZ21lQ1FjQW5RbU5DWTRKQndDUENaMEpud2tIQUk4SmpRbWRDUWNBa0FtZkNhQUpCd0NRQ1k4Sm53a0hBSjRKa0FtZ0NRY0FuZ21PQ1pBSkJ3Q1NDYUVKb2drSEFKSUprUW1oQ1FjQW93bVNDYUlKQndDakNaTUprZ2tIQUtRSmt3bWpDUWNBcEFtVUNaTUpCd0NSQ2FRSm9Ra0hBSkVKbEFta0NRY0FsZ21sQ2FZSkJ3Q1dDWlVKcFFrSEFLY0psZ21tQ1FjQXB3bVhDWllKQndDb0NaY0pwd2tIQUtnSm1BbVhDUWNBbFFtb0NhVUpCd0NWQ1pnSnFBa0hBS2tKbWdtcUNRY0FxUW1aQ1pvSkJ3Q2JDYWtKcXdrSEFKc0ptUW1wQ1FjQW5BbXJDYXdKQndDY0Nac0pxd2tIQUtvSm5BbXNDUWNBcWdtYUNad0pCd0N0Q1o0SnJna0hBSzBKblFtZUNRY0Fud210Q2E4SkJ3Q2ZDWjBKclFrSEFLQUpyd213Q1FjQW9BbWZDYThKQndDdUNhQUpzQWtIQUs0Sm5nbWdDUWNBb2dteENiSUpCd0NpQ2FFSnNRa0hBTE1Kb2dteUNRY0Fzd21qQ2FJSkJ3QzBDYU1Kc3drSEFMUUpwQW1qQ1FjQW9RbTBDYkVKQndDaENhUUp0QWtIQUtZSnRRbTJDUWNBcGdtbENiVUpCd0MzQ2FZSnRna0hBTGNKcHdtbUNRY0F1QW1uQ2JjSkJ3QzRDYWdKcHdrSEFLVUp1QW0xQ1FjQXBRbW9DYmdKQndDNUNVd0N1Z2tIQUxrSlN3Sk1BZ2NBVGdLN0Nid0pCd0JPQWswQ3V3a0hBRThDdkFtOUNRY0FUd0pPQXJ3SkJ3QlBBcjRKVUFJSEFFOEN2UW0rQ1FjQVVBSy9DVkVDQndCUUFyNEp2d2tIQUZFQ3dBbFNBZ2NBVVFLL0NjQUpCd0RBQ1ZNQ1VnSUhBTUFKd1FsVEFnY0F3UWxVQWxNQ0J3REJDY0lKVkFJSEFMb0pWQUxDQ1FjQXVnbE1BbFFDQndERENib0p4QWtIQU1NSnVRbTZDUWNBdXduRENjVUpCd0M3Q2JrSnd3a0hBTDBKeGduSENRY0F2UW04Q2NZSkJ3QytDY2NKeUFrSEFMNEp2UW5IQ1FjQXZ3bklDY2tKQndDL0NiNEp5QWtIQU1BSnlRbktDUWNBd0FtL0Nja0pCd0RMQ2NBSnlna0hBTXNKd1FuQUNRY0F6QW5CQ2NzSkJ3RE1DY0lKd1FrSEFNUUp3Z25NQ1FjQXhBbTZDY0lKQndETkNjTUp4QWtIQU0wSnpnbkRDUWNBeFFuUENjWUpCd0RGQ2RBSnp3a0hBTVlKMFFuSENRY0F4Z25QQ2RFSkJ3RElDZEVKMGdrSEFNZ0p4d25SQ1FjQXlRblNDZE1KQndESkNjZ0owZ2tIQU1vSjB3blVDUWNBeWduSkNkTUpCd0RWQ2NvSjFBa0hBTlVKeXduS0NRY0ExZ25MQ2RVSkJ3RFdDY3dKeXdrSEFOWUp4QW5NQ1FjQTFnbk5DY1FKQndEWENjMEoyQWtIQU5jSnpnbk5DUWNBMEFuWENka0pCd0RRQ2M0SjF3a0hBTkVKMmduYkNRY0EwUW5QQ2RvSkJ3RFNDZHNKM0FrSEFOSUowUW5iQ1FjQTB3bmNDZDBKQndEVENkSUozQWtIQU5RSjNRbmVDUWNBMUFuVENkMEpCd0RmQ2RRSjNna0hBTjhKMVFuVUNRY0E0QW5WQ2Q4SkJ3RGdDZFlKMVFrSEFOZ0oxZ25nQ1FjQTJBbk5DZFlKQndEaENkZ0o0Z2tIQU9FSjF3bllDUWNBMmduakNlUUpCd0RhQ2RrSjR3a0hBTnNKNUFubENRY0Eyd25hQ2VRSkJ3RGJDZVlKM0FrSEFOc0o1UW5tQ1FjQTNBbm5DZDBKQndEY0NlWUo1d2tIQU4wSjZBbmVDUWNBM1FubkNlZ0pCd0RvQ2Q4SjNna0hBT2dKNlFuZkNRY0E2UW5nQ2Q4SkJ3RHBDZW9KNEFrSEFPSUo0QW5xQ1FjQTRnbllDZUFKQndEakNlSUo1QWtIQU9NSjRRbmlDUWNBNkFucUNla0pCd0RvQ2VJSjZna0hBT2NKNGdub0NRY0E1d25rQ2VJSkJ3RGxDZWNKNWdrSEFPVUo1QW5uQ1FjQTZ3bS9CT3dKQndEckNiNEV2d1FIQU1FRTdRbnVDUWNBd1FUQUJPMEpCd0RDQk80Sjd3a0hBTUlFd1FUdUNRY0F3Z1R3Q2NNRUJ3RENCTzhKOEFrSEFNTUU4UW5FQkFjQXd3VHdDZkVKQndERUJQSUp4UVFIQU1RRThRbnlDUWNBOGduR0JNVUVCd0R5Q2ZNSnhnUUhBUE1KeHdUR0JBY0E4d24wQ2NjRUJ3RHNDY2NFOUFrSEFPd0p2d1RIQkFjQTlRbnNDZllKQndEMUNlc0o3QWtIQU8wSjlRbjNDUWNBN1FuckNmVUpCd0R2Q2ZnSitRa0hBTzhKN2duNENRY0E4QW41Q2ZvSkJ3RHdDZThKK1FrSEFQRUorZ243Q1FjQThRbndDZm9KQndEeUNmc0ovQWtIQVBJSjhRbjdDUWNBL1FueUNmd0pCd0Q5Q2ZNSjhna0hBUDRKOHduOUNRY0EvZ24wQ2ZNSkJ3RDJDZlFKL2drSEFQWUo3QW4wQ1FjQS93bjFDZllKQndEL0NRQUs5UWtIQVBjSkFRcjRDUWNBOXdrQ0NnRUtCd0Q0Q1FNSytRa0hBUGdKQVFvRENnY0ErZ2tEQ2dRS0J3RDZDZmtKQXdvSEFQc0pCQW9GQ2djQSt3bjZDUVFLQndEOENRVUtCZ29IQVB3Sit3a0ZDZ2NBQndyOENRWUtCd0FIQ3YwSi9Ba0hBQWdLL1FrSENnY0FDQXIrQ2YwSkJ3QUlDdllKL2drSEFBZ0svd24yQ1FjQUNRci9DUW9LQndBSkNnQUsvd2tIQUFJS0NRb0xDZ2NBQWdvQUNna0tCd0FEQ2d3S0RRb0hBQU1LQVFvTUNnY0FCQW9OQ2c0S0J3QUVDZ01LRFFvSEFBVUtEZ29QQ2djQUJRb0VDZzRLQndBR0NnOEtFQW9IQUFZS0JRb1BDZ2NBRVFvR0NoQUtCd0FSQ2djS0Jnb0hBQklLQndvUkNnY0FFZ29JQ2djS0J3QUtDZ2dLRWdvSEFBb0svd2tJQ2djQUV3b0tDaFFLQndBVENna0tDZ29IQUF3S0ZRb1dDZ2NBREFvTENoVUtCd0FOQ2hZS0Z3b0hBQTBLREFvV0NnY0FEUW9ZQ2c0S0J3QU5DaGNLR0FvSEFBNEtHUW9QQ2djQURnb1lDaGtLQndBUENob0tFQW9IQUE4S0dRb2FDZ2NBR2dvUkNoQUtCd0FhQ2hzS0VRb0hBQnNLRWdvUkNnY0FHd29jQ2hJS0J3QVVDaElLSEFvSEFCUUtDZ29TQ2djQUZRb1VDaFlLQndBVkNoTUtGQW9IQUJvS0hBb2JDZ2NBR2dvVUNod0tCd0FaQ2hRS0dnb0hBQmtLRmdvVUNnY0FGd29aQ2hnS0J3QVhDaFlLR1FvSEFCMEt4d2JHQmdjQUhRb2VDc2NHQndBZUNzUUd3d1lIQUI0S0hRckVCZ2NBSHdvZ0NpRUtCd0FmQ2lJS0lBb0hBQ0VLSXdvZkNnY0FJUW9rQ2lNS0J3QWtDaVVLSXdvSEFDUUtKZ29sQ2djQUp3b29DaWtLQndBbkNpb0tLQW9IQUNrS0t3b25DZ2NBS1Fvc0Npc0tCd0FyQ2lVS0pnb0hBQ3NLTEFvbENnY0FMUW91Q2k4S0J3QXRDakFLTGdvSEFEQUtNUW91Q2djQU1Bb3lDakVLQndBekNqUUtOUW9IQURNS05nbzBDZ2NBTmdvM0NqUUtCd0EyQ2pnS053b0hBRGdLT1FvM0NnY0FPQW82Q2prS0J3QTZDczBHT1FvSEFEb0t6Z2JOQmdjQU5RbzdDak1LQndBMUNqd0tPd29IQURJS1BBb3hDZ2NBTWdvN0Nqd0tCd0E5Q2o0S1B3b0hBRDBLUUFvK0NnY0FRUW8vQ2o0S0J3QkJDa0lLUHdvSEFFTUtRZ3BCQ2djQVF3cEVDa0lLQndBb0NrVUtSZ29IQUNnS0tncEZDZ2NBUndwR0NrVUtCd0JIQ2tnS1Jnb0hBRU1LUndwRUNnY0FRd3BJQ2tjS0J3REFCaUlLd1FZSEFNQUdJQW9pQ2djQUx3bzlDaTBLQndBdkNrQUtQUW9IQUVrS1JncElDZ2NBU1FwS0NrWUtCd0JMQ2tnS1F3b0hBRXNLU1FwSUNnY0FTZ29vQ2tZS0J3QktDa3dLS0FvSEFFMEtRd3BCQ2djQVRRcExDa01LQndCT0NrRUtQZ29IQUU0S1RRcEJDZ2NBVHdvK0NrQUtCd0JQQ2s0S1Bnb0hBRkFLUUFvdkNnY0FVQXBQQ2tBS0J3QlJDandLTlFvSEFGRUtVZ284Q2djQVVnb3hDandLQndCU0NsTUtNUW9IQUZRS053bzVDZ2NBVkFwVkNqY0tCd0JXQ2prS3pRWUhBRllLVkFvNUNnY0FWUW8wQ2pjS0J3QlZDbGNLTkFvSEFGY0tOUW8wQ2djQVZ3cFJDalVLQndCVENpNEtNUW9IQUZNS1dBb3VDZ2NBV0FvdkNpNEtCd0JZQ2xBS0x3b0hBRmtLTEFvcENnY0FXUXBhQ2l3S0J3QmFDaVVLTEFvSEFGb0tXd29sQ2djQVRBb3BDaWdLQndCTUNsa0tLUW9IQUZzS0l3b2xDZ2NBV3dwY0NpTUtCd0JjQ2g4S0l3b0hBRndLWFFvZkNnY0FYUW9pQ2g4S0J3QmRDbDRLSWdvSEFGNEt3UVlpQ2djQVhncGZDc0VHQndCZ0NzY0dIZ29IQUdBS1lRckhCZ2NBWWdvZUNzTUdCd0JpQ21BS0hnb0hBR01LelFiTEJnY0FZd3BXQ3MwR0J3QmtDc3NHeVFZSEFHUUtZd3JMQmdjQVpRckpCc1VHQndCbENtUUt5UVlIQUdFS3hRYkhCZ2NBWVFwbENzVUdCd0JtQ3NNR3Z3WUhBR1lLWWdyREJnY0FYd3EvQnNFR0J3QmZDbVlLdndZSEFHY0tTZ3BKQ2djQVp3cG9Da29LQndCcENra0tTd29IQUdrS1p3cEpDZ2NBYUFwTUNrb0tCd0JvQ21vS1RBb0hBR3NLU3dwTkNnY0Fhd3BwQ2tzS0J3QnFDbGtLVEFvSEFHb0tiQXBaQ2djQWJRcE5DazRLQndCdENtc0tUUW9IQUc0S1RncFBDZ2NBYmdwdENrNEtCd0J2Q2s4S1VBb0hBRzhLYmdwUENnY0FjQXBRQ2xnS0J3QndDbThLVUFvSEFIRUtVZ3BSQ2djQWNRcHlDbElLQndCeUNsTUtVZ29IQUhJS2N3cFRDZ2NBZEFwUkNsY0tCd0IwQ25FS1VRb0hBSE1LV0FwVENnY0Fjd3B3Q2xnS0J3QjFDbFVLVkFvSEFIVUtkZ3BWQ2djQWR3cFVDbFlLQndCM0NuVUtWQW9IQUhZS1Z3cFZDZ2NBZGdwMENsY0tCd0I0Q2xZS1l3b0hBSGdLZHdwV0NnY0FiQXBhQ2xrS0J3QnNDbmtLV2dvSEFIa0tXd3BhQ2djQWVRcDZDbHNLQndCNkNsd0tXd29IQUhvS2V3cGNDZ2NBZXdwZENsd0tCd0I3Q253S1hRb0hBSHdLWGdwZENnY0FmQXA5Q2w0S0J3QjlDbDhLWGdvSEFIMEtmZ3BmQ2djQWZncG1DbDhLQndCK0NuOEtaZ29IQUlBS1lRcGdDZ2NBZ0FxQkNtRUtCd0NDQ21BS1lnb0hBSUlLZ0FwZ0NnY0FnUXBsQ21FS0J3Q0JDb01LWlFvSEFIOEtZZ3BtQ2djQWZ3cUNDbUlLQndDRUNtTUtaQW9IQUlRS2VBcGpDZ2NBZ3dwa0NtVUtCd0NEQ29RS1pBb0hBSVVLaGdxSENnY0FoUXFJQ29ZS0J3Q0pDb2NLaWdvSEFJa0toUXFIQ2djQWlBcUxDb1lLQndDSUNvd0tpd29IQUl3S2pRcUxDZ2NBakFxT0NvMEtCd0NPQ284S2pRb0hBSTRLa0FxUENnY0FrQXFSQ284S0J3Q1FDcElLa1FvSEFKTUtpZ3FVQ2djQWt3cUpDb29LQndDVkNwUUtsZ29IQUpVS2t3cVVDZ2NBbHdxWUNwa0tCd0NYQ3BvS21Bb0hBSnNLbkFxZENnY0Ftd3FlQ3B3S0J3Q2ZDcDBLb0FvSEFKOEttd3FkQ2djQW9RcWdDcUlLQndDaENwOEtvQW9IQUpvS293cVlDZ2NBbWdxa0NxTUtCd0NsQ3FJS3Bnb0hBS1VLb1FxaUNnY0FwQXFuQ3FNS0J3Q2tDcWdLcHdvSEFLZ0twZ3FuQ2djQXFBcWxDcVlLQndDbkNxa0txZ29IQUtjS3BncXBDZ2NBb3dxcUNxc0tCd0NqQ3FjS3Fnb0hBS1lLckFxcENnY0FwZ3FpQ3F3S0J3Q1lDcXNLclFvSEFKZ0tvd3FyQ2djQXJnbzZCVGtGQndDdUNxOEtPZ1VIQUxBS09RVTdCUWNBc0FxdUNqa0ZCd0N2Q2p3Rk9nVUhBSzhLc1FvOEJRY0FzZ283QlQwRkJ3Q3lDckFLT3dVSEFMRUtQZ1U4QlFjQXNRcXpDajRGQndDekNqMEZQZ1VIQUxNS3NnbzlCUWNBdEFxdkNxNEtCd0MwQ3JVS3J3b0hBTFlLcmdxd0NnY0F0Z3EwQ3E0S0J3QzFDckVLcndvSEFMVUt0d3F4Q2djQXVBcXdDcklLQndDNENyWUtzQW9IQUxjS3N3cXhDZ2NBdHdxNUNyTUtCd0M1Q3JJS3N3b0hBTGtLdUFxeUNnY0F1Z3ExQ3JRS0J3QzZDcnNLdFFvSEFMd0t0QXEyQ2djQXZBcTZDclFLQndDN0NyY0t0UW9IQUxzS3ZRcTNDZ2NBdmdxMkNyZ0tCd0MrQ3J3S3Rnb0hBTDBLdVFxM0NnY0F2UXEvQ3JrS0J3Qy9DcmdLdVFvSEFMOEt2Z3E0Q2djQXVncStDcjhLQndDNkNyd0t2Z29IQUw4S3V3cTZDZ2NBdndxOUNyc0tCd0NpQ3NBS3JBb0hBS0lLb0FyQUNnY0F3UXFnQ3AwS0J3REJDc0FLb0FvSEFKMEt3Z3JCQ2djQW5RcWNDc0lLQndDWkNxMEt3d29IQUprS21BcXRDZ2NBd2dxZUNzUUtCd0RDQ3B3S25nb0hBSkVLeFFyR0NnY0FrUXFTQ3NVS0J3Q3FDc2NLeUFvSEFLb0txUXJIQ2djQWhRckhDb2dLQndDRkNzZ0t4d29IQUtzS3lBckpDZ2NBcXdxcUNzZ0tCd0NKQ3NnS2hRb0hBSWtLeVFySUNnY0FpQXJLQ293S0J3Q0lDc2NLeWdvSEFLMEt5UXJMQ2djQXJRcXJDc2tLQndDVENza0tpUW9IQUpNS3l3ckpDZ2NBckFyTUNzb0tCd0NzQ3NBS3pBb0hBSXdLekFxT0NnY0FqQXJLQ3N3S0J3Q1FDc3dLelFvSEFKQUtqZ3JNQ2djQXdRck1Dc0FLQndEQkNzMEt6QW9IQU1FS3pnck5DZ2NBd1FyQ0NzNEtCd0ROQ3BJS2tBb0hBTTBLemdxU0NnY0F3d3JMQ3M4S0J3RERDcTBLeXdvSEFOQUswUXJTQ2djQTBBclRDdEVLQndEVUN0SUsxUW9IQU5RSzBBclNDZ2NBMHdyV0N0RUtCd0RUQ3RjSzFnb0hBTmNLMkFyV0NnY0Exd3JaQ3RnS0J3RFpDdG9LMkFvSEFOa0syd3JhQ2djQTJ3cmNDdG9LQndEYkN0MEszQW9IQU4wSzNncmNDZ2NBM1FyZkN0NEtCd0RmQ3VBSzNnb0hBTjhLNFFyZ0NnY0E0UXJpQ3VBS0J3RGhDdU1LNGdvSEFPTUs1QXJpQ2djQTR3cmxDdVFLQndEbEN1WUs1QW9IQU9VSzV3cm1DZ2NBNXdyb0N1WUtCd0RuQ3VrSzZBb0hBT2tLNmdyb0NnY0E2UXJyQ3VvS0J3RHJDdXdLNmdvSEFPc0s3UXJzQ2djQTdRcnVDdXdLQndEdEN1OEs3Z29IQU84SzhBcnVDZ2NBN3dyeEN2QUtCd0R4Q3ZJSzhBb0hBUEVLOHdyeUNnY0E4d3IwQ3ZJS0J3RHpDdlVLOUFvSEFQVUsxUXIwQ2djQTlRclVDdFVLQndEYkN0TUIzUW9IQU5zSzBRSFRBUWNBMlFyUkFkc0tCd0RaQ3RVQjBRRUhBTmNLMVFIWkNnY0Exd3JYQWRVQkJ3RFRDdGNCMXdvSEFOTUsyUUhYQVFjQTBBclpBZE1LQndEUUN0c0IyUUVIQU5RSzJ3SFFDZ2NBMUFyZEFkc0JCd0QxQ3QwQjFBb0hBUFVLM3dIZEFRY0E4d3JmQWZVS0J3RHpDdllLM3dFSEFQRUs5Z3J6Q2djQThRcjNDdllLQndEdkN2Y0s4UW9IQU84SzR3SDNDZ2NBN1FyakFlOEtCd0R0Q3VFQjR3RUhBT3NLNFFIdENnY0E2d3JsQWVFQkJ3RHBDdVVCNndvSEFPa0s1d0hsQVFjQTV3cm5BZWtLQndEbkN1a0I1d0VIQU9VSzZRSG5DZ2NBNVFyckFla0JCd0RqQ3VzQjVRb0hBT01LN1FIckFRY0E0UXJ0QWVNS0J3RGhDdThCN1FFSEFOOEs3d0hoQ2djQTN3cnhBZThCQndEZEN2RUIzd29IQU4wSzB3SHhBUWNBNWdyNEN1UUtCd0RtQ3ZrSytBb0hBUGtLK2dyNENnY0ErUXI3Q3ZvS0J3RG9DdmtLNWdvSEFPZ0svQXI1Q2djQS9BcjdDdmtLQndEOEN2MEsrd29IQU9vSy9Bcm9DZ2NBNmdyK0N2d0tCd0QrQ3YwSy9Bb0hBUDRLL3dyOUNnY0E3QXIrQ3VvS0J3RHNDZ0FML2dvSEFBQUwvd3IrQ2djQUFBc0JDLzhLQndEdUNnQUw3QW9IQU80S0Fnc0FDd2NBQWdzQkN3QUxCd0FDQ3dNTEFRc0hBUEFLQWd2dUNnY0E4QW9FQ3dJTEJ3QUVDd01MQWdzSEFBUUxCUXNEQ3djQThnb0VDL0FLQndEeUNnWUxCQXNIQUFZTEJRc0VDd2NBQmdzSEN3VUxCd0QwQ2dZTDhnb0hBUFFLQ0FzR0N3Y0FDQXNIQ3dZTEJ3QUlDd2tMQndzSEFOVUtDQXYwQ2djQTFRb0tDd2dMQndBS0N3a0xDQXNIQUFvTEN3c0pDd2NBMGdvS0M5VUtCd0RTQ2d3TENnc0hBQXdMQ3dzS0N3Y0FEQXNOQ3dzTEJ3RFJDZ3dMMGdvSEFORUtEZ3NNQ3djQURnc05Dd3dMQndBT0N3OExEUXNIQU5ZS0RndlJDZ2NBMWdvUUN3NExCd0FRQ3c4TERnc0hBQkFMRVFzUEN3Y0EyQW9RQzlZS0J3RFlDaElMRUFzSEFCSUxFUXNRQ3djQUVnc1RDeEVMQndEYUNoSUwyQW9IQU5vS0ZBc1NDd2NBRkFzVEN4SUxCd0FVQ3hVTEV3c0hBTndLRkF2YUNnY0EzQW9XQ3hRTEJ3QVdDeFVMRkFzSEFCWUxGd3NWQ3djQTNnb1dDOXdLQndEZUNoZ0xGZ3NIQUJnTEZ3c1dDd2NBR0FzWkN4Y0xCd0RnQ2hnTDNnb0hBT0FLR2dzWUN3Y0FHZ3NaQ3hnTEJ3QWFDeHNMR1FzSEFPSUtHZ3ZnQ2djQTRnb2NDeG9MQndBY0N4c0xHZ3NIQUJ3TEhRc2JDd2NBNUFvY0MrSUtCd0RrQ3ZnS0hBc0hBUGdLSFFzY0N3Y0ErQXI2Q2gwTEJ3QWVDeDhMSUFzSEFCNExJUXNmQ3djQUlBc2lDeU1MQndBZ0N4OExJZ3NIQUNRTElRc2VDd2NBSkFzbEN5RUxCd0FtQ3lVTEpBc0hBQ1lMSndzbEN3Y0FLQXNuQ3lZTEJ3QW9DeWtMSndzSEFDb0xLUXNvQ3djQUtnc3JDeWtMQndBc0N5c0xLZ3NIQUN3TExRc3JDd2NBTGdzdEN5d0xCd0F1Q3k4TExRc0hBREFMTHdzdUN3Y0FNQXN4Q3k4TEJ3QXlDekVMTUFzSEFESUxNd3N4Q3djQU5Bc3pDeklMQndBMEN6VUxNd3NIQURZTE5RczBDd2NBTmdzM0N6VUxCd0E0Q3pjTE5nc0hBRGdMT1FzM0N3Y0FPZ3M1Q3pnTEJ3QTZDenNMT1FzSEFEd0xPd3M2Q3djQVBBczlDenNMQndBK0N6MExQQXNIQUQ0TFB3czlDd2NBUUFzL0N6NExCd0JBQzBFTFB3c0hBRUlMUVF0QUN3Y0FRZ3REQzBFTEJ3QWpDME1MUWdzSEFDTUxJZ3REQ3djQTJ3UXBDeXNMQndEYkJOb0VLUXNIQU5vRUp3c3BDd2NBMmdUZEJDY0xCd0RkQkNVTEp3c0hBTjBFM3dRbEN3Y0Ezd1FoQ3lVTEJ3RGZCT0VFSVFzSEFPRUVId3NoQ3djQTRRVGpCQjhMQndEakJDSUxId3NIQU9NRTVRUWlDd2NBNVFSREN5SUxCd0RsQk9jRVF3c0hBT2NFUVF0REN3Y0E1d1JFQzBFTEJ3QkVDejhMUVFzSEFFUUxSUXMvQ3djQVJRczlDejhMQndCRkMrc0VQUXNIQU9zRU93czlDd2NBNndUcUJEc0xCd0RxQkRrTE93c0hBT29FN1FRNUN3Y0E3UVEzQ3prTEJ3RHRCTzhFTndzSEFPOEVOUXMzQ3djQTd3VHhCRFVMQndEeEJETUxOUXNIQVBFRTh3UXpDd2NBOHdReEN6TUxCd0R6QlBVRU1Rc0hBUFVFTHdzeEN3Y0E5UVQzQkM4TEJ3RDNCQzBMTHdzSEFQY0UrUVF0Q3djQStRUXJDeTBMQndENUJOc0VLd3NIQUVZTE5Bc3lDd2NBUmd0SEN6UUxCd0JJQzBjTFJnc0hBRWdMU1F0SEN3Y0FSd3MyQ3pRTEJ3QkhDMG9MTmdzSEFFa0xTZ3RIQ3djQVNRdExDMG9MQndCS0N6Z0xOZ3NIQUVvTFRBczRDd2NBU3d0TUMwb0xCd0JMQzAwTFRBc0hBRXdMT2dzNEN3Y0FUQXRPQ3pvTEJ3Qk5DMDRMVEFzSEFFMExUd3RPQ3djQVRnczhDem9MQndCT0MxQUxQQXNIQUU4TFVBdE9Dd2NBVHd0UkMxQUxCd0JRQ3o0TFBBc0hBRkFMVWdzK0N3Y0FVUXRTQzFBTEJ3QlJDMU1MVWdzSEFGSUxRQXMrQ3djQVVndFVDMEFMQndCVEMxUUxVZ3NIQUZNTFZRdFVDd2NBVkF0Q0MwQUxCd0JVQzFZTFFnc0hBRlVMVmd0VUN3Y0FWUXRYQzFZTEJ3QldDeU1MUWdzSEFGWUxXQXNqQ3djQVZ3dFlDMVlMQndCWEMxa0xXQXNIQUZnTElBc2pDd2NBV0F0YUN5QUxCd0JaQzFvTFdBc0hBRmtMV3d0YUN3Y0FXZ3NlQ3lBTEJ3QmFDMXdMSGdzSEFGc0xYQXRhQ3djQVd3dGRDMXdMQndCY0N5UUxIZ3NIQUZ3TFhnc2tDd2NBWFF0ZUMxd0xCd0JkQzE4TFhnc0hBRjRMSmdza0N3Y0FYZ3RnQ3lZTEJ3QmZDMkFMWGdzSEFGOExZUXRnQ3djQVlBc29DeVlMQndCZ0MySUxLQXNIQUdFTFlndGdDd2NBWVF0akMySUxCd0JpQ3lvTEtBc0hBR0lMWkFzcUN3Y0FZd3RrQzJJTEJ3QmpDMlVMWkFzSEFHUUxMQXNxQ3djQVpBdG1DeXdMQndCbEMyWUxaQXNIQUdVTFp3dG1Dd2NBWmdzdUN5d0xCd0JtQzJnTExnc0hBR2NMYUF0bUN3Y0Fad3RwQzJnTEJ3Qm9DekFMTGdzSEFHZ0xhZ3N3Q3djQWFRdHFDMmdMQndCcEMyc0xhZ3NIQUdvTE1nc3dDd2NBYWd0R0N6SUxCd0JyQzBZTGFnc0hBR3NMU0F0R0N3Y0FiQXR0QzI0TEJ3QnNDMjRMYndzSEFHMExjQXR4Q3djQWJRdHhDMjRMQndCeUMzTUxiUXNIQUhJTGJRdHNDd2NBY3d0MEMzQUxCd0J6QzNBTGJRc0hBSFVMZGd0ekN3Y0FkUXR6QzNJTEJ3QjJDM2NMZEFzSEFIWUxkQXR6Q3djQWVBdDVDM1lMQndCNEMzWUxkUXNIQUhrTGVndDNDd2NBZVF0M0MzWUxCd0I3QzN3TGVRc0hBSHNMZVF0NEN3Y0FmQXQ5QzNvTEJ3QjhDM29MZVFzSEFINExmd3Q4Q3djQWZndDhDM3NMQndCL0M0QUxmUXNIQUg4TGZRdDhDd2NBZ1F1Q0MzOExCd0NCQzM4TGZnc0hBSUlMZ3d1QUN3Y0FnZ3VBQzM4TEJ3Q0VDNFVMZ2dzSEFJUUxnZ3VCQ3djQWhRdUdDNE1MQndDRkM0TUxnZ3NIQUljTGlBdUZDd2NBaHd1RkM0UUxCd0NJQzRrTGhnc0hBSWdMaGd1RkN3Y0FpZ3VMQzRnTEJ3Q0tDNGdMaHdzSEFJc0xqQXVKQ3djQWl3dUpDNGdMQndDTkM0NExpd3NIQUkwTGl3dUtDd2NBamd1UEM0d0xCd0NPQzR3TGl3c0hBSkFMa1F1T0N3Y0FrQXVPQzQwTEJ3Q1JDNUlMandzSEFKRUxqd3VPQ3djQWt3dVVDNUVMQndDVEM1RUxrQXNIQUpRTGxRdVNDd2NBbEF1U0M1RUxCd0NXQzVjTGxBc0hBSllMbEF1VEN3Y0Fsd3VZQzVVTEJ3Q1hDNVVMbEFzSEFKa0xtZ3VYQ3djQW1RdVhDNVlMQndDYUM1c0xtQXNIQUpvTG1BdVhDd2NBbkF1ZEM1b0xCd0NjQzVvTG1Rc0hBSjBMbmd1YkN3Y0FuUXViQzVvTEJ3Q2ZDNkFMb1FzSEFKOExvUXVpQ3djQW9ndWpDNTRMQndDaUM1NExuUXNIQUtRTHBRdWhDd2NBcEF1aEM2QUxCd0NsQzZZTHB3c0hBS1VMcHd1aEN3Y0Fid3R1QzZVTEJ3QnZDNlVMcEFzSEFHNExjUXVtQ3djQWJndW1DNlVMQndDakM2Y0xxQXNIQUtNTHFBdXBDd2NBcVF1cUM2c0xCd0NwQzZzTHJBc0hBS1lMclF1b0N3Y0FwZ3VvQzZjTEJ3Q3RDNjRMcndzSEFLMExyd3VvQ3djQWNRdXdDNjBMQndCeEM2MExwZ3NIQUxBTHNRdXVDd2NBc0F1dUM2MExCd0J3QzdJTHNBc0hBSEFMc0F0eEN3Y0FzZ3V6QzdFTEJ3Q3lDN0VMc0FzSEFIUUx0QXV5Q3djQWRBdXlDM0FMQndDMEM3VUxzd3NIQUxRTHN3dXlDd2NBZHd1MkM3UUxCd0IzQzdRTGRBc0hBTFlMdHd1MUN3Y0F0Z3UxQzdRTEJ3QjZDN2dMdGdzSEFIb0x0Z3QzQ3djQXVBdTVDN2NMQndDNEM3Y0x0Z3NIQUgwTHVndTRDd2NBZlF1NEMzb0xCd0M2QzdzTHVRc0hBTG9MdVF1NEN3Y0FnQXU4QzdvTEJ3Q0FDN29MZlFzSEFMd0x2UXU3Q3djQXZBdTdDN29MQndDREM3NEx2QXNIQUlNTHZBdUFDd2NBdmd1L0M3MExCd0MrQzcwTHZBc0hBSVlMd0F1K0N3Y0FoZ3UrQzRNTEJ3REFDOEVMdndzSEFNQUx2d3UrQ3djQWlRdkNDOEFMQndDSkM4QUxoZ3NIQU1JTHd3dkJDd2NBd2d2QkM4QUxCd0NNQzhRTHdnc0hBSXdMd2d1SkN3Y0F4QXZGQzhNTEJ3REVDOE1Md2dzSEFJOEx4Z3ZFQ3djQWp3dkVDNHdMQndER0M4Y0x4UXNIQU1ZTHhRdkVDd2NBa2d2SUM4WUxCd0NTQzhZTGp3c0hBTWdMeVF2SEN3Y0F5QXZIQzhZTEJ3Q1ZDOG9MeUFzSEFKVUx5QXVTQ3djQXlndkxDOGtMQndES0M4a0x5QXNIQUpnTHpBdktDd2NBbUF2S0M1VUxCd0RNQzgwTHl3c0hBTXdMeXd2S0N3Y0Ftd3ZPQzh3TEJ3Q2JDOHdMbUFzSEFNNEx6d3ZOQ3djQXpndk5DOHdMQndDZUM2d0x6Z3NIQUo0THpndWJDd2NBckF1ckM4OExCd0NzQzg4THpnc0hBTGNMdVF2UUN3Y0F0d3ZRQzlFTEJ3QzVDN3NMMGdzSEFMa0wwZ3ZRQ3djQTBRdlRDN1VMQndEUkM3VUx0d3NIQU5RTHN3dTFDd2NBMUF1MUM5TUxCd0N1QzdFTHN3c0hBSzRMc3d2VUN3Y0F2UXUvQzlJTEJ3QzlDOUlMdXdzSEFOVUwwUXZRQ3djQTFRdlFDOVlMQndEVkM5WUx5d3NIQU5VTHl3dk5Dd2NBMWd2UUM5SUxCd0RXQzlJTDF3c0hBTllMMXd2SkN3Y0ExZ3ZKQzhzTEJ3RE5DODhMMkFzSEFNMEwyQXZWQ3djQTFRdllDOU1MQndEVkM5TUwwUXNIQU5rTDFBdlRDd2NBMlF2VEM5Z0xCd0NyQzlrTDJBc0hBS3NMMkF2UEN3Y0Fyd3V1QzlRTEJ3Q3ZDOVFMMlFzSEFLb0xyd3ZaQ3djQXFndlpDNnNMQndERkM4Y0x5UXNIQU1VTHlRdlhDd2NBdnd2QkM5Y0xCd0MvQzljTDBnc0hBTUVMd3d2RkN3Y0F3UXZGQzljTEJ3Q1ZDc3NLa3dvSEFKVUt6d3JMQ2djQWtncmFDOFVLQndDU0NzNEsyZ3NIQU1RS3pnckNDZ2NBeEFyYUM4NEtCd0RiQzhjS3FRb0hBTnNMM0F2SENnY0EzQXZLQ3NjS0J3RGNDOTBMeWdvSEFNb0szZ3VzQ2djQXlncmRDOTRMQndDc0N0c0xxUW9IQUt3SzNndmJDd2NBM3d2Y0M5c0xCd0RmQytBTDNBc0hBT0VMM0F2Z0N3Y0E0UXZkQzl3TEJ3RGRDK0lMM2dzSEFOMEw0UXZpQ3djQTNndmZDOXNMQndEZUMrSUwzd3NIQU9NTDVBdmxDd2NBNHd2bUMrUUxCd0RtQytjTDVBc0hBT1lMNkF2bkN3Y0E2QXZwQytjTEJ3RG9DK29MNlFzSEFPZ0w2d3ZxQ3djQTZBdnNDK3NMQndEbUMrd0w2QXNIQU9ZTDdRdnNDd2NBNHd2dEMrWUxCd0RqQys0TDdRc0hBTzhMOEF2eEN3Y0E3d3Z5Qy9BTEJ3RHhDL01MOUFzSEFQRUw4QXZ6Q3djQTlBdjFDL1lMQndEMEMvTUw5UXNIQVBjTDR3dmxDd2NBOXd2NEMrTUxCd0RrQy9jTDVRc0hBT1FMK1F2M0N3Y0E1d3Y1QytRTEJ3RG5DL29MK1FzSEFPb0wrd3ZwQ3djQTZndjhDL3NMQndEcEMvb0w1d3NIQU9rTCt3djZDd2NBL1F2ckMrd0xCd0Q5Qy80TDZ3c0hBUDRMNmd2ckN3Y0EvZ3Y4QytvTEJ3RC9DK3dMN1FzSEFQOEwvUXZzQ3djQTR3c0FETzRMQndEakMvZ0xBQXdIQUFBTTdRdnVDd2NBQUF6L0MrMExCd0FCRE84TDhRc0hBQUVNQWd6dkN3Y0FBZ3p5Qys4TEJ3QUNEQU1NOGdzSEFQSUxCQXp3Q3djQThnc0REQVFNQndBRkRQRUw5QXNIQUFVTUFRenhDd2NBOEFzR0RQTUxCd0R3Q3dRTUJnd0hBQWNNOUF2MkN3Y0FCd3dGRFBRTEJ3RHpDd2dNOVFzSEFQTUxCZ3dJREFjQTlRc0hEUFlMQndEMUN3Z01Cd3dIQUFrTUNnd0xEQWNBQ1F3TERBd01Cd0FMREEwTURnd0hBQXNNRGd3TURBY0FEd3dNREE0TUJ3QVBEQTRNRUF3SEFCRU1EQXdQREFjQUVRd1BEQklNQndBVERCUU1EQXdIQUJNTURBd1JEQWNBRkF3VkRBa01Cd0FVREFrTURBd0hBQW9NRmd3WERBY0FDZ3dYREFzTUJ3QUxEQmNNR0F3SEFBc01HQXdOREFjQURRd1lEQmtNQndBTkRCa01EZ3dIQUJBTURnd1pEQWNBRUF3WkRCb01Cd0FQREJBTUdnd0hBQThNR2d3YkRBY0FFZ3dQREJzTUJ3QVNEQnNNSEF3SEFCME1FUXdTREFjQUhRd1NEQndNQndBZURCTU1FUXdIQUI0TUVRd2REQWNBSHd3VURCTU1Cd0FmREJNTUhnd0hBQjhNSUF3VkRBY0FId3dWREJRTUJ3QWdEQ0VNQ1F3SEFDQU1DUXdWREFjQUlRd1dEQW9NQndBaERBb01DUXdIQUJZTUlnd2pEQWNBRmd3akRCY01Cd0FYRENNTUpBd0hBQmNNSkF3WURBY0FHQXdrRENVTUJ3QVlEQ1VNR1F3SEFCb01HUXdsREFjQUdnd2xEQ1lNQndBYkRCb01KZ3dIQUJzTUpnd25EQWNBSEF3YkRDY01Cd0FjRENjTUtBd0hBQ2tNSFF3Y0RBY0FLUXdjRENnTUJ3QXFEQjRNSFF3SEFDb01IUXdwREFjQUt3d2ZEQjRNQndBckRCNE1LZ3dIQUNzTUxBd2dEQWNBS3d3Z0RCOE1Cd0FzREMwTUlRd0hBQ3dNSVF3Z0RBY0FMUXdpREJZTUJ3QXREQllNSVF3SEFDTU1JZ3d1REFjQUl3d3VEQzhNQndBa0RDTU1Md3dIQUNRTUx3d3dEQWNBSkF3d0RERU1Cd0FrRERFTUpRd0hBQ1VNTVF3eURBY0FKUXd5RENZTUJ3QW1ERElNTXd3SEFDWU1Nd3duREFjQUp3d3pERFFNQndBbkREUU1LQXdIQURRTU5Rd3BEQWNBTkF3cERDZ01Cd0ExRERZTUtnd0hBRFVNS2d3cERBY0FOZ3czRENzTUJ3QTJEQ3NNS2d3SEFEY01PQXdzREFjQU53d3NEQ3NNQndBNURDME1MQXdIQURrTUxBdzREQWNBTGd3aURDME1Cd0F1REMwTU9Rd0hBQzhNTGd3NkRBY0FMd3c2RERzTUJ3QXdEQzhNT3d3SEFEQU1Pd3c4REFjQU1BdzhERDBNQndBd0REME1NUXdIQURFTVBRdytEQWNBTVF3K0RESU1Cd0F5REQ0TVB3d0hBRElNUHd3ekRBY0FNd3cvREVBTUJ3QXpERUFNTkF3SEFFQU1RUXcxREFjQVFBdzFERFFNQndCQkRFSU1OZ3dIQUVFTU5ndzFEQWNBUWd4REREY01Cd0JDRERjTU5nd0hBRU1NUkF3NERBY0FRd3c0RERjTUJ3QkZERGtNT0F3SEFFVU1PQXhFREFjQU9nd3VERGtNQndBNkREa01SUXdIQUR3TU93dzZEQWNBUEF3NkRFWU1Cd0E4REVZTVBnd0hBRHdNUGd3OURBY0FQZ3hHREVBTUJ3QStERUFNUHd3SEFFWU1RZ3hCREFjQVJneEJERUFNQndCR0RFUU1Rd3dIQUVZTVF3eENEQWNBT2d4RkRFUU1Cd0E2REVRTVJnd0hBS0lMblF1Y0N3Y0FvZ3VjQzU4TEJ3Q2lDNkVMcHdzSEFLSUxwd3VqQ3djQXFRdXNDNTRMQndDcEM1NExvd3NIQUtrTHFBdXZDd2NBcVF1dkM2b0xCd0JIREVnTVNRd0hBRWNNU1F4S0RBY0FTd3hNREVnTUJ3QkxERWdNUnd3SEFFZ01UUXhPREFjQVNBeE9ERWtNQndCTURFOE1UUXdIQUV3TVRReElEQWNBVFF4UURGRU1Cd0JOREZFTVRnd0hBRThNVWd4UURBY0FUd3hRREUwTUJ3QlFERk1NVkF3SEFGQU1WQXhSREFjQVVneFZERk1NQndCU0RGTU1VQXdIQUZNTVZneFhEQWNBVXd4WERGUU1Cd0JWREZnTVZnd0hBRlVNVmd4VERBY0FWZ3haREZvTUJ3QldERm9NVnd3SEFGZ01Xd3haREFjQVdBeFpERllNQndCWkRGd01YUXdIQUZrTVhReGFEQWNBV3d4ZURGd01Cd0JiREZ3TVdRd0hBRndNWHd4Z0RBY0FYQXhnREYwTUJ3QmVER0VNWHd3SEFGNE1Yd3hjREFjQVh3eGlER01NQndCZkRHTU1ZQXdIQUdFTVpBeGlEQWNBWVF4aURGOE1Cd0JpREdVTVpnd0hBR0lNWmd4akRBY0FaQXhuREdVTUJ3QmtER1VNWWd3SEFHVU1hQXhwREFjQVpReHBER1lNQndCbkRHb01hQXdIQUdjTWFBeGxEQWNBYUF4ckRHd01Cd0JvREd3TWFRd0hBR29NYlF4ckRBY0FhZ3hyREdnTUJ3QnJERzRNYnd3SEFHc01id3hzREFjQWJReHdERzRNQndCdERHNE1hd3dIQUc0TWNReHlEQWNBYmd4eURHOE1Cd0J3REhNTWNRd0hBSEFNY1F4dURBY0FjUXgwREhVTUJ3QnhESFVNY2d3SEFITU1kZ3gwREFjQWN3eDBESEVNQndCMERIY01lQXdIQUhRTWVBeDFEQWNBZGd4NURIY01Cd0IyREhjTWRBd0hBSG9NZXd4OERBY0FlZ3g4REgwTUJ3QjVESDRNZlF3SEFIa01mUXgzREFjQWVneC9ESUFNQndCNkRJQU1ld3dIQUlFTWdneC9EQWNBZ1F4L0RIb01Cd0IvREVjTVNnd0hBSDhNU2d5QURBY0FnZ3hMREVjTUJ3Q0NERWNNZnd3SEFJTU1nUXgrREFjQWd3eCtESVFNQndDRkRJWU1oQXdIQUlVTWhBeUhEQWNBZ3d5SURJSU1Cd0NERElJTWdRd0hBSWtNaWd5SURBY0FpUXlJRElNTUJ3Q0lESXNNU3d3SEFJZ01Td3lDREFjQWlneU1ESXNNQndDS0RJc01pQXdIQUlzTWpReE1EQWNBaXd4TURFc01Cd0NNREk0TWpRd0hBSXdNalF5TERBY0FqUXlQREU4TUJ3Q05ERThNVEF3SEFJNE1rQXlQREFjQWpneVBESTBNQndDUERKRU1VZ3dIQUk4TVVneFBEQWNBa0F5U0RKRU1Cd0NRREpFTWp3d0hBSkVNa3d4VkRBY0FrUXhWREZJTUJ3Q1NESlFNa3d3SEFKSU1rd3lSREFjQWt3eVZERmdNQndDVERGZ01WUXdIQUpRTWxneVZEQWNBbEF5VkRKTU1Cd0NWREpjTVd3d0hBSlVNV3d4WURBY0FsZ3lZREpjTUJ3Q1dESmNNbFF3SEFKY01tUXhlREFjQWx3eGVERnNNQndDWURKb01tUXdIQUpnTW1ReVhEQWNBbVF5YkRHRU1Cd0NaREdFTVhnd0hBSm9NbkF5YkRBY0FtZ3liREprTUJ3Q2JESjBNWkF3SEFKc01aQXhoREFjQW5BeWVESjBNQndDY0RKME1td3dIQUowTW53eG5EQWNBblF4bkRHUU1Cd0NlREtBTW53d0hBSjRNbnd5ZERBY0Fud3loREdvTUJ3Q2ZER29NWnd3SEFLQU1vZ3loREFjQW9BeWhESjhNQndDaERLTU1iUXdIQUtFTWJReHFEQWNBb2d5a0RLTU1Cd0NpREtNTW9Rd0hBS01NcFF4d0RBY0Fvd3h3REcwTUJ3Q2tES1lNcFF3SEFLUU1wUXlqREFjQXBReW5ESE1NQndDbERITU1jQXdIQUtZTXFBeW5EQWNBcGd5bkRLVU1Cd0NuREtrTWRnd0hBS2NNZGd4ekRBY0FxQXlxREtrTUJ3Q29ES2tNcHd3SEFLa01od3g1REFjQXFReDVESFlNQndDcURJVU1od3dIQUtvTWh3eXBEQWNBcXd5VURKSU1Cd0NyREpJTXJBd0hBSzBNbGd5VURBY0FyUXlVREtzTUJ3Q1FESzRNckF3SEFKQU1yQXlTREFjQWtBeU9ESzhNQndDUURLOE1yZ3dIQUk0TWpBeUtEQWNBamd5S0RLOE1Cd0N0REpvTW1Bd0hBSzBNbUF5V0RBY0Fxd3lzRExBTUJ3Q3JETEFNc1F3SEFLWU1zUXl3REFjQXBneXdES2dNQndDdERLc01zUXdIQUswTXNReXlEQWNBcEF5eURMRU1Cd0NrRExFTXBnd0hBTE1NcWd5b0RBY0Fzd3lvRExBTUJ3Q3VETE1Nc0F3SEFLNE1zQXlzREFjQXJneXZETFFNQndDdURMUU1zd3dIQUxNTXRBeUZEQWNBc3d5RkRLb01Cd0N2RElvTWlRd0hBSzhNaVF5MERBY0F0QXlKRElZTUJ3QzBESVlNaFF3SEFLUU1vZ3lnREFjQXBBeWdETElNQndDeURKd01tZ3dIQUxJTW1neXREQWNBb0F5ZURKd01Cd0NnREp3TXNnd0hBSGdNZHd4OURBY0FlQXg5REh3TUJ3Q0JESG9NZlF3SEFJRU1mUXgrREFjQWVReUhESVFNQndCNURJUU1mZ3dIQUlrTWd3eUVEQWNBaVF5RURJWU1Cd0JHQVVrQlJ3RUhBRVlCY3dGSkFRY0FTQUZ6QVVZQkJ3QklBWFFCY3dFSEFFY0JQd0ZNQVFjQVJ3RkpBVDhCQndEWEFLOEExQUFIQU5jQTJBQ3ZBQWNBNkFEWUFOY0FCd0RvQU9rQTJBQUhBRjBCNlFEb0FBY0FYUUZmQWVrQUJ3QmRBVndCWUFFSEFGMEJXd0ZjQVFjQTNBQ3JBS3dBQndEY0FLb0Fxd0FIQU8wQXFnRGNBQWNBN1FEdUFLb0FCd0JuQWU0QTdRQUhBR2NCYVFIdUFBY0Fad0ZtQVdvQkJ3Qm5BV1VCWmdFSEFLTUF0UXkyREFjQW93Q2xBTFVNQndDM0RMZ011UXdIQUxjTXVneTREQWNBdVF5N0RMd01Cd0M1RExnTXV3d0hBTDBNdmd5L0RBY0F2UXk4REw0TUJ3QzlETUFNd1F3SEFMME12d3pBREFjQXdneXhBTE1BQndEQ0RNTU1zUUFIQU1RTXhRekdEQWNBeEF6SERNVU1Cd0RJRE1jTXhBd0hBTWdNeVF6SERBY0F5Z3pKRE1nTUJ3REtETXNNeVF3SEFNd015d3pLREFjQXpBek5ETXNNQndET0RNME16QXdIQU00TXp3ek5EQWNBd3d6QkFMRUFCd0RERE5BTXdRQUhBTWNNMFF6RkRBY0F4d3pTRE5FTUJ3REpETklNeHd3SEFNa00wd3pTREFjQXl3elRETWtNQndETEROUU0wd3dIQU0wTTFBekxEQWNBelF6VkROUU1Cd0RQRE5VTXpRd0hBTThNMWd6VkRBY0Exd3pJRE1RTUJ3RFhETmdNeUF3SEFMa00yQXpYREFjQXVReThETmdNQndEWURNb015QXdIQU5nTTJRektEQWNBdkF6WkROZ01Cd0M4REwwTTJRd0hBTmtNekF6S0RBY0EyUXphRE13TUJ3QzlETm9NMlF3SEFMME13UXphREFjQTJnek9ETXdNQndEYUROc016Z3dIQU1FTTJ3emFEQWNBd1F6Y0ROc01Cd0RkRE53TTNnd0hBTjBNMnd6Y0RBY0Ezd3pFRE1ZTUJ3RGZETmNNeEF3SEFMY00xd3pmREFjQXR3eTVETmNNQndEU0FNSU1zd0FIQU5JQTRBekNEQWNBb3dEZ0ROSUFCd0NqQUxZTTRBd0hBTUVNNFF6Y0RBY0F3UXpBRE9FTUJ3RGNET0lNM2d3SEFOd000d3ppREFjQTRRempETndNQndEaERPUU00d3dIQUw4TTVRekFEQWNBdnd6bURPVU1Cd0RuRE9ZTXZ3d0hBT2NNNkF6bURBY0E1d3krRE9rTUJ3RG5ETDhNdmd3SEFPb002d3pzREFjQTZnenRET3NNQndEc0RPNE03d3dIQU93TTZ3enVEQWNBNmd6aURPME1Cd0RxRE40TTRnd0hBT3NNOEF6dURBY0E2d3p4RFBBTUJ3RHREUEVNNnd3SEFPME04Z3p4REFjQTRnenlETzBNQndEaURQTU04Z3dIQU9NTTh3emlEQWNBNHd6MERQTU1Cd0RrRFBRTTR3d0hBT1FNOVF6MERBY0E1Z3oyRE9VTUJ3RG1EUGNNOWd3SEFPZ005d3ptREFjQTZBejREUGNNQndEbkRQZ002QXdIQU9jTStRejREQWNBNlF6NURPY01Cd0RwRFBvTStRd0hBTGdNK3d5N0RBY0F1QXo4RFBzTUJ3QzZEUHdNdUF3SEFMb00vUXo4REFjQXBRRCtETFVNQndDbEFQSUEvZ3dIQU5ZTS93elZEQWNBMWd3QURmOE1Cd0RWREFFTjFBd0hBTlVNL3d3QkRRY0ExQXdDRGRNTUJ3RFVEQUVOQWcwSEFOTU1BdzNTREFjQTB3d0NEUU1OQndEU0RBUU4wUXdIQU5JTUF3MEVEUWNBMEF6NUFNRUFCd0RRREFVTitRQUhBQUFOQmczL0RBY0FBQTBIRFFZTkJ3RC9EQWdOQVEwSEFQOE1CZzBJRFFjQUFRMEpEUUlOQndBQkRRZ05DUTBIQUFJTkNnMEREUWNBQWcwSkRRb05Cd0FERFFzTkJBMEhBQU1OQ2cwTERRY0FCUTBCQWZrQUJ3QUZEUXdOQVFFSEFBME5EZzBQRFFjQURRMFFEUTROQndBUkRROE5FZzBIQUJFTkRRMFBEUWNBRUEwVERRNE5Cd0FRRFJRTkV3MEhBQlVORWcwV0RRY0FGUTBSRFJJTkJ3QVhEUllOR0EwSEFCY05GUTBXRFFjQUdRMFlEUm9OQndBWkRSY05HQTBIQUJzTkVBME5EUWNBR3cwY0RSQU5Cd0FkRFEwTkVRMEhBQjBOR3cwTkRRY0FIQTBVRFJBTkJ3QWNEUjRORkEwSEFCOE5FUTBWRFFjQUh3MGREUkVOQndBZ0RSVU5GdzBIQUNBTkh3MFZEUWNBSVEwWERSa05Cd0FoRFNBTkZ3MEhBQ0lOSXcwa0RRY0FJZzBsRFNNTkJ3QWpEUTRORXcwSEFDTU5KUTBPRFFjQUpnMGxEU0lOQndBbURTY05KUTBIQUNVTkR3ME9EUWNBSlEwbkRROE5Cd0FuRFNnTktRMEhBQ2NOSmcwb0RRY0FLUTBQRFNjTkJ3QXBEUklORHcwSEFDb05LUTBvRFFjQUtnMHJEU2tOQndBckRSSU5LUTBIQUNzTkZnMFNEUWNBTEEwckRTb05Cd0FzRFMwTkt3MEhBQ3NOR0EwV0RRY0FLdzB0RFJnTkJ3QXVEUzBOTEEwSEFDNE5MdzB0RFFjQUxRMGFEUmdOQndBdERTOE5HZzBIQUNJTk1BMG1EUWNBSWcweERUQU5Cd0FrRFRFTklnMEhBQ1FOTWcweERRY0FNUTB6RFRBTkJ3QXhEVFFOTXcwSEFESU5OQTB4RFFjQU1nMDFEVFFOQndBMkRTd0JOdzBIQURZTkx3RXNBUWNBT0EwdkFUWU5Cd0E0RFRFQkx3RUhBQXdOTWdFQkFRY0FEQTA1RFRJQkJ3QUtEVG9OQ3cwSEFBb05PdzA2RFFjQUNRMDdEUW9OQndBSkRUd05PdzBIQUFnTlBBMEpEUWNBQ0EwOURUd05Cd0FHRFQwTkNBMEhBQVlOUGcwOURRY0FCdzArRFFZTkJ3QUhEVDhOUGcwSEFDd0JPUTAzRFFjQUxBRXlBVGtOQndCQURUTU5OQTBIQUVBTlFRMHpEUWNBUWcwMERUVU5Cd0JDRFVBTk5BMEhBRE1OT2cwN0RRY0FNdzFCRFRvTkJ3QXdEVHNOUEEwSEFEQU5NdzA3RFFjQUpnMDhEVDBOQndBbURUQU5QQTBIQUNZTlBnMG9EUWNBSmcwOURUNE5Cd0ErRFNvTktBMEhBRDROUHcwcURRY0E4QXhERGU0TUJ3RHdERVFOUXcwSEFPNE1SUTN2REFjQTdneEREVVVOQndBcURVWU5MQTBIQUNvTlJ3MUdEUWNBTEExSURTNE5Cd0FzRFVZTlNBMEhBRWNOU1ExR0RRY0FSdzFLRFVrTkJ3QkdEVXNOU0EwSEFFWU5TUTFMRFFjQVNnMU1EVWtOQndCS0RVME5UQTBIQUVrTlRnMUxEUWNBU1ExTURVNE5Cd0JGRFVRTlR3MEhBRVVOUXcxRURRY0FSdzFRRFVvTkJ3QkhEVkVOVUEwSEFFY05QdzFSRFFjQVJ3MHFEVDhOQndCUURVME5TZzBIQUZBTlVnMU5EUWNBVXczdkRFVU5Cd0JURFZRTjd3d0hBQUFOVkExVERRY0FBQTNXREZRTkJ3QlVEZXdNN3d3SEFGUU5WUTNzREFjQTFneFZEVlFOQndEV0RNOE1WUTBIQUZVTjZnenNEQWNBVlExV0Rlb01Cd0RQREZZTlZRMEhBTThNemd4V0RRY0FWZzNlRE9vTUJ3QldEZDBNM2d3SEFNNE0zUXhXRFFjQXpnemJETjBNQndCU0RWTU5SUTBIQUZJTlVBMVREUWNBVUEwQURWTU5Cd0JRRFZFTkFBMEhBRkVOQncwQURRY0FVUTAvRFFjTkJ3QlhEVVFOOEF3SEFGY05XQTFFRFFjQVdRMVlEVmNOQndCWkRWb05XQTBIQUZzTjhBenhEQWNBV3cxWERmQU1Cd0JjRFZjTld3MEhBRndOV1ExWERRY0FYUTN4RFBJTUJ3QmREVnNOOFF3SEFGNE5XdzFkRFFjQVhnMWNEVnNOQndCZkRmSU04d3dIQUY4TlhRM3lEQWNBWUExZERWOE5Cd0JnRFY0TlhRMEhBR0VOOHd6MERBY0FZUTFmRGZNTUJ3QmlEVjhOWVEwSEFHSU5ZQTFmRFFjQVlRMzFER01OQndCaERmUU05UXdIQUdRTll3MWxEUWNBWkExbURXTU5Cd0JuRGZZTTl3d0hBR2NOWlEzMkRBY0FhQTFsRFdjTkJ3Qm9EV1FOWlEwSEFHa045d3o0REFjQWFRMW5EZmNNQndCcURXY05hUTBIQUdvTmFBMW5EUWNBYXczNERQa01Cd0JyRFdrTitBd0hBR3dOYVExckRRY0FiQTFxRFdrTkJ3QnJEZm9NYlEwSEFHc04rUXo2REFjQWJnMXREVzhOQndCdURYQU5iUTBIQUhFTit3ejhEQWNBY1ExdkRmc01Cd0J5RFc4TmNRMEhBSElOYmcxdkRRY0FjdzM4RFAwTUJ3QnpEWEVOL0F3SEFIUU5jUTF6RFFjQWRBMXlEWEVOQndCdkFmNE04Z0FIQUc4QmRRMytEQWNBY1FGMURXOEJCd0J4QVhZTmRRMEhBRThOV0ExM0RRY0FUdzFFRFZnTkJ3QllEWGdOZHcwSEFGZ05XZzE0RFFjQXhneDVEZDhNQndER0RIb05lUTBIQU44TWV3MjNEQWNBM3d4NURYc05Cd0FFRFh3TmZRMEhBQVFOQ3cxOERRY0FRZzErRFVBTkJ3QkNEWDhOZmcwSEFIc051Z3kzREFjQWV3MkFEYm9NQndDQkRjWU14UXdIQUlFTmVnM0dEQWNBeFF5Q0RZRU5Cd0RGRE5FTWdnMEhBUDBNZ0EyRERRY0EvUXk2RElBTkJ3RFJESDBOZ2cwSEFORU1CQTE5RFFjQUN3MkVEWHdOQndBTERUb05oQTBIQUVBTmhRMUJEUWNBUUExK0RZVU5Cd0JCRFlRTk9nMEhBRUVOaFEyRURRY0FoZzM5RElNTkJ3Q0dEWE1OL1F3SEFJY05jdzJHRFFjQWh3MTBEWE1OQndDSURiVU1pUTBIQUlnTnRneTFEQWNBaUEyQURYc05Cd0NJRFlrTmdBMEhBSW9Od2d5TERRY0FpZzNERE1JTUJ3Q0tEWG9OZ1EwSEFJb05pdzE2RFFjQWdRMk1EWW9OQndDQkRZSU5qQTBIQUlvTjBBekREQWNBaWcyTURkQU1Cd0NKRFlNTmdBMEhBSWtOalEyRERRY0FqUTIxRFA0TUJ3Q05EWWtOdFF3SEFJd05mUTJPRFFjQWpBMkNEWDBOQndDTURRVU4wQXdIQUl3TmpnMEZEUWNBZkEyUERaQU5Cd0I4RFlRTmp3MEhBSkFOT1EwTURRY0FrQTJQRFRrTkJ3QTNEWThOa1EwSEFEY05PUTJQRFFjQWtRMkVEWVVOQndDUkRZOE5oQTBIQUkwTmhnMkREUWNBalEyU0RZWU5Cd0NTRGY0TWRRMEhBSklOalEzK0RBY0FrZzJIRFlZTkJ3Q1NEWk1OaHcwSEFKTU5kUTEyRFFjQWt3MlNEWFVOQndDTERlQU1sQTBIQUlzTndnemdEQWNBZWcyVURYa05Cd0I2RFlzTmxBMEhBSlFOdGd5SURRY0FsQTNnRExZTUJ3Q1VEWHNOZVEwSEFKUU5pQTE3RFFjQWpnMThEWkFOQndDT0RYME5mQTBIQUk0TkRBMEZEUWNBamcyUURRd05Cd0NSRFg0TmxRMEhBSkVOaFExK0RRY0FOdzJWRFRZTkJ3QTNEWkVObFEwSEFKVU5mdzJXRFFjQWxRMStEWDhOQndBMkRaWU5PQTBIQURZTmxRMldEUWNBVHcxTURVME5Cd0JQRFhjTlRBMEhBSGNOVGcxTURRY0FkdzE0RFU0TkJ3QkZEVTBOVWcwSEFFVU5UdzFORFFjQXdBemtET0VNQndEQURPVU01QXdIQU9VTTlRemtEQWNBNVF6MkRQVU1Cd0QyREdNTjlRd0hBUFlNWlExakRRY0FZZzFqRFdZTkJ3QmlEV0VOWXcwSEFMd002UXkrREFjQXZBeTdET2tNQndDN0RQb002UXdIQUxzTSt3ejZEQWNBK3d4dERmb01Cd0Q3REc4TmJRMEhBR3dOYlExd0RRY0FiQTFyRFcwTkJ3RGtBK0FENGdNSEFPUUQ0d1BnQXdjQTVnUGpBK1FEQndEbUErVUQ0d01IQUIwRUZBVFRBZ2NBSFFRYkJCUUVCd0RVQWgwRTB3SUhBTlFDcFFRZEJBY0ExUUxhQXRZQ0J3RFZBdGdDMmdJSEFOVUN2d0xiQWdjQTFRTEJBcjhDQndEZ0FxVUUxQUlIQU9BQ21nU2xCQWNBNFFMY0F0c0NCd0RoQXVNQzNBSUhBT1FDNHdMaEFnY0E1QUxtQXVNQ0J3RGdBcHdFbXdRSEFPQUMzZ0tjQkFjQW13VG1BdVFDQndDYkJKd0U1Z0lIQUpjTm1BMlpEUWNBbHcyYURaZ05Cd0NiRFp3Tm5RMEhBSnNObmcyY0RRY0FudzJnRGFFTkJ3Q2ZEYUlOb0EwSEFLTU5vZzJmRFFjQW93MmtEYUlOQndDbERhWU5wdzBIQUtVTnFBMm1EUWNBcVEyb0RhVU5Cd0NwRGFvTnFBMEhBS3NObHcyWkRRY0FxdzJzRFpjTkJ3Q3REWnNOblEwSEFLME5yZzJiRFFjQXJ3MmtEYU1OQndDdkRiQU5wQTBIQUs0TnNBMnZEUWNBcmcydERiQU5Cd0N4RGFvTnFRMEhBTEVOc2cycURRY0FyQTJ5RGJFTkJ3Q3NEYXNOc2cwSEFMTU5uQTJlRFFjQXN3MjBEWndOQndDMURiUU5zdzBIQUxVTnRnMjBEUWNBdHcyNERia05Cd0MzRGJvTnVBMEhBTG9OcUFLNERRY0F1ZzJwQXFnQ0J3QzdEYW9DckFJSEFMc052QTJxQWdjQXZRMjhEYnNOQndDOURiNE52QTBIQUwwTnZ3M0FEUWNBdlEyN0RiOE5Cd0M3RGJJQ3Z3MEhBTHNOckFLeUFnY0F3UTNDRGNNTkJ3REJEY1FOd2cwSEFNVU53dzNHRFFjQXhRM0JEY01OQndESERjWU55QTBIQU1jTnhRM0dEUWNBeVEzSURjb05Cd0RKRGNjTnlBMEhBTXNOeWczTURRY0F5dzNKRGNvTkJ3RE5EY3dOemcwSEFNME55dzNNRFFjQXp3M09EZEFOQndEUERjME56ZzBIQU5FTjBBM1NEUWNBMFEzUERkQU5Cd0RURGNVQ3h3SUhBTk1OMUEzRkFnY0ExUTNXRGRjTkJ3RFZEZGdOMWcwSEFKb04yUTJZRFFjQW1nM2FEZGtOQndEYkRkd04zUTBIQU5zTjNnM2NEUWNBMnczZkRlQU5Cd0RiRGQwTjN3MEhBTkVONFEzUERRY0EwUTNpRGVFTkJ3RGpEZVFONVEwSEFPTU41ZzNrRFFjQTR3M25EZUVOQndEakRlZ041dzBIQU9nTjVRM3BEUWNBNkEzakRlVU5Cd0RxRGQ0TjJ3MEhBT29ONnczZURRY0E2ZzNnRGV3TkJ3RHFEZHNONEEwSEFPY055dzNORFFjQTV3M3REY3NOQndEb0RlNE43dzBIQU9nTjZRM3VEUWNBeXczd0Rja05Cd0RMRGUwTjhBMEhBTzhOOFEzeURRY0E3dzN1RGZFTkJ3QzVEZk1OdHcwSEFMa045QTN6RFFjQTlRMitEYjBOQndEMURmWU52ZzBIQU1BTjlRMjlEUWNBd0EzM0RmVU5Cd0Q0RGZrTitnMEhBUGdOK3czNURRY0EvQTM5RGY0TkJ3RDhEZjhOL1EwSEFKd04vdzM4RFFjQW5BMjBEZjhOQndEL0RRQU8vUTBIQVA4TkFRNEFEZ2NBdEEwQkR2OE5Cd0MwRGJZTkFRNEhBQUlPQXc0RURnY0FBZzRGRGdNT0J3RDBEUVVPQWc0SEFQUU51UTBGRGdjQUJRNEdEZ01PQndBRkRnY09CZzRIQUxrTkJ3NEZEZ2NBdVEyNERRY09Cd0FIRHZ3Q0JnNEhBQWNPL1FMOEFnY0F1QTM5QWdjT0J3QzREYWdDL1FJSEFBZ08vZzBKRGdjQUNBNzhEZjROQndDZERmd05DQTRIQUowTm5BMzhEUWNBQ2c0SkRnc09Cd0FLRGdnT0NRNEhBSzBOQ0E0S0RnY0FyUTJkRFFnT0J3QU1EZ3NPRFE0SEFBd09DZzRMRGdjQXNBMEtEZ3dPQndDd0RhME5DZzRIQUE0T0RRNFBEZ2NBRGc0TURnME9Cd0NrRFF3T0RnNEhBS1FOc0EwTURnY0FFQTRQRGhFT0J3QVFEZzRPRHc0SEFLSU5EZzRRRGdjQW9nMmtEUTRPQndBU0RoRU9FdzRIQUJJT0VBNFJEZ2NBb0EwUURoSU9Cd0NnRGFJTkVBNEhBQlFPQ2dNTUF3Y0FGQTRWRGdvREJ3QVdEaFVPRkE0SEFCWU9GdzRWRGdjQUdBNFhEaFlPQndBWURoa09GdzRIQUJvT0d3NGNEZ2NBR2c0ZERoc09Cd0FlRGgwT0dnNEhBQjRPSHc0ZERnY0FHQU1mRGg0T0J3QVlBeGtESHc0SEFQY05JQTRoRGdjQTl3M0FEU0FPQndEQURTSU9JQTRIQU1BTnZ3MGlEZ2NBdncwZEF5SU9Cd0MvRGJJQ0hRTUhBTGNOSXc0a0RnY0F0dzN6RFNNT0J3QzZEU1FPSlE0SEFMb050dzBrRGdjQXFRSWxEaUVEQndDcEFyb05KUTRIQUNZT0pBNGpEZ2NBSmc0bkRpUU9Cd0FZRGljT0pnNEhBQmdPRmc0bkRnY0FKdzRsRGlRT0J3QW5EaWdPSlE0SEFCWU9LQTRuRGdjQUZnNFVEaWdPQndBb0RpRURKUTRIQUNnT0pRTWhBd2NBRkE0bEF5Z09Cd0FVRGd3REpRTUhBQ2tPSVE0Z0RnY0FLUTRxRGlFT0J3QWFEaW9PS1E0SEFCb09IQTRxRGdjQUt3NGdEaUlPQndBckRpa09JQTRIQUI0T0tRNHJEZ2NBSGc0YURpa09Cd0FwQXlJT0hRTUhBQ2tES3c0aURnY0FHQU1yRGlrREJ3QVlBeDRPS3c0SEFDd09MUTR1RGdjQUxBNHZEaTBPQndBd0RpOE9MQTRIQURBT01RNHZEZ2NBTHc0eURpME9Cd0F2RGpNT01nNEhBREVPTXc0dkRnY0FNUTQwRGpNT0J3QTFEc01Od2cwSEFEVU9OZzdERFFjQXRRMDJEalVPQndDMURiTU5OZzRIQURZT3hnM0REUWNBTmc0M0RzWU5Cd0N6RFRjT05nNEhBTE1ObmcwM0RnY0FOdzdJRGNZTkJ3QTNEamdPeUEwSEFKNE5PQTQzRGdjQW5nMmJEVGdPQndBNERzb055QTBIQURnT09RN0tEUWNBbXcwNURqZ09Cd0NiRGE0Tk9RNEhBRGtPekEzS0RRY0FPUTQ2RHN3TkJ3Q3VEVG9PT1E0SEFLNE5ydzA2RGdjQU9nN09EY3dOQndBNkRqc096ZzBIQUs4Tk93NDZEZ2NBcncyakRUc09Cd0E3RHRBTnpnMEhBRHNPUEE3UURRY0FvdzA4RGpzT0J3Q2pEWjhOUEE0SEFEd08wZzNRRFFjQVBBNDlEdElOQndDZkRUME9QQTRIQUo4Tm9RMDlEZ2NBUGc0dURqOE9Cd0ErRGl3T0xnNEhBRUFPTEE0K0RnY0FRQTR3RGl3T0J3QkJEajhPUWc0SEFFRU9QZzQvRGdjQVF3NCtEa0VPQndCRERrQU9QZzRIQVBZTlJBNUZEZ2NBOWczMURVUU9Cd0QxRFVZT1JBNEhBUFVOOXcxR0RnY0E5dzFIRGtZT0J3RDNEU0VPUnc0SEFDRU9TQTVIRGdjQUlRNHFEa2dPQndBcURra09TQTRIQUNvT0hBNUpEZ2NBSEE1S0Rra09Cd0FjRGhzT1NnNEhBRXNPVEE1TkRnY0FTdzVPRGt3T0J3Qk9EazhPVUE0SEFFNE9TdzVQRGdjQVVRNVNEbE1PQndCUkRsUU9VZzRIQUZVT1ZBNVJEZ2NBVlE1V0RsUU9Cd0JVRGxjT1VnNEhBRlFPV0E1WERnY0FWZzVZRGxRT0J3QldEbGtPV0E0SEFGZ09XZzVYRGdjQVdBNWJEbG9PQndCWkRsc09XQTRIQUZrT1hBNWJEZ2NBV3c1ZERsb09Cd0JiRGw0T1hRNEhBRndPWGc1YkRnY0FYQTVmRGw0T0J3QmVEbUFPWFE0SEFGNE9ZUTVnRGdjQVh3NWhEbDRPQndCZkRtSU9ZUTRIQUdFT1lRTmdEZ2NBWVE1aUEyRURCd0JpRG1JRFlRNEhBR0lPWXdOaUF3Y0FZdzVrRG1VT0J3QmpEbVlPWkE0SEFQWU5aZzVqRGdjQTlnMUZEbVlPQndCbkRtVU9hQTRIQUdjT1l3NWxEZ2NBdmcxakRtY09Cd0MrRGZZTll3NEhBR2tPYUE1cURnY0FhUTVuRG1nT0J3QzhEV2NPYVE0SEFMd052ZzFuRGdjQWJBTnFEbTBEQndCc0Eya09hZzRIQUtvQ2FRNXNBd2NBcWdLOERXa09Cd0JpRG1zT2JBNEhBR0lPWHc1ckRnY0FYdzV0RG1zT0J3QmZEbHdPYlE0SEFGd09iZzV0RGdjQVhBNVpEbTRPQndCWkRtOE9iZzRIQUZrT1ZnNXZEZ2NBY0E1eERuSU9Cd0J3RG5NT2NRNEhBSE1PZEE1eERnY0FjdzUxRG5RT0J3QjFEbllPZEE0SEFIVU84UTEyRGdjQThRMTNEbllPQndEeERlNE5kdzRIQU80TmVBNTNEZ2NBN2czcERYZ09Cd0RwRFhrT2VBNEhBT2tONVExNURnY0E1UTE2RG5rT0J3RGxEZVFOZWc0SEFHTURiQTUrQXdjQVl3TmlEbXdPQndBMERuc09mQTRIQURRT2ZRNTdEZ2NBdFExN0RyWU5Cd0MxRFh3T2V3NEhBSDRPeEExL0RnY0FmZzZBRHNRTkJ3QlZEb0FPZmc0SEFGVU9nUTZBRGdjQU1nNkFEb0VPQndBeURvSU9nQTRIQU1JTmdBNkNEZ2NBd2czRURZQU9Cd0NERG44T2NBNEhBSU1PZmc1L0RnY0FmZzVXRGxVT0J3QitEb01PVmc0SEFJUU8yZzJGRGdjQWhBN1pEZG9OQndDRkRrOE9oQTRIQUlVT1VBNVBEZ2NBaGc2SERvZ09Cd0NHRG9rT2h3NEhBQUVPaHc0QURnY0FBUTZJRG9jT0J3QjlEb2dPZXc0SEFIME9oZzZJRGdjQUFRNTdEb2dPQndBQkRyWU5ldzRIQURVT2dnNktEZ2NBTlE3Q0RZSU9Cd0F6RG9JT01nNEhBRE1PaWc2Q0RnY0F0UTJLRG53T0J3QzFEVFVPaWc0SEFEUU9pZzR6RGdjQU5BNThEb29PQndDTERuQU9jZzRIQUlzT2d3NXdEZ2NBZ3c1dkRsWU9Cd0NERG9zT2J3NEhBSXdPMmcyYURRY0FqQTZORHRvTkJ3Q09EbzBPakE0SEFJNE9qdzZORGdjQWpRNkZEdG9OQndDTkRwQU9oUTRIQUk4T2tBNk5EZ2NBanc2UkRwQU9Cd0NRRGxBT2hRNEhBSkFPa2c1UURnY0FrUTZTRHBBT0J3Q1JEcE1Pa2c0SEFKSU9UZzVRRGdjQWtnNlVEazRPQndDVERwUU9rZzRIQUpNT2xRNlVEZ2NBbEE1TURrNE9Cd0NVRHBZT1RBNEhBSlVPbGc2VURnY0FsUTZYRHBZT0J3Q1lEdmtOK3cwSEFKZ09tUTc1RFFjQW1nNlpEcGdPQndDYURwc09tUTRIQUp3TzFnM1lEUWNBbkE2ZER0WU5Cd0NlRHAwT25BNEhBSjRPbnc2ZERnY0FvQTdGQXRRTkJ3Q2dEcVVEeFFJSEFLRU9wUU9nRGdjQW9RNm5BNlVEQndDYURhd05qQTRIQUpvTmx3MnNEUWNBakE2eERZNE9Cd0NNRHF3TnNRMEhBTEVOcFEyT0RnY0FzUTJwRGFVTkJ3Q2lEcU1PcEE0SEFLSU9wUTZqRGdjQXBRN3pEZlFOQndDbERxSU84dzBIQUtZT3B3Nm9EZ2NBcGc2cERxY09Cd0NvRGdJT0JBNEhBS2dPcHc0Q0RnY0FwUTRDRHFjT0J3Q2xEdlFOQWc0SEFLa09wUTZuRGdjQXFRNmpEcVVPQndDcURxc09yQTRIQUtvT3JRNnJEZ2NBclE0WkRoZ09Cd0N0RHFvT0dRNEhBSzRPcEE2dkRnY0FyZzZpRHFRT0J3Q3VEdk1Ob2c0SEFLNE9Jdzd6RFFjQXNBNGpEcTRPQndDd0RpWU9JdzRIQUxBT3J3NnhEZ2NBc0E2dURxOE9Cd0N0RGlZT3NBNEhBSzBPR0E0bURnY0FyUTZ4RHFzT0J3Q3REckFPc1E0SEFMSU9zdzYwRGdjQXNnNjFEck1PQndDMkRyVU9zZzRIQUxZT3R3NjFEZ2NBdEE2NERya09Cd0MwRHJNT3VBNEhBQVFPdWc2b0RnY0FCQTY3RHJvT0J3QUREcnNPQkE0SEFBTU92QTY3RGdjQUJnNjhEZ01PQndBR0RyME92QTRIQVB3Q3ZRNEdEZ2NBL0FMRUE3ME9Cd0MxRHI0T3N3NEhBTFVPdnc2K0RnY0F0dzYvRHJVT0J3QzNEc0FPdnc0SEFMTU93UTY0RGdjQXN3NitEc0VPQndDN0RzSU91ZzRIQUxzT3d3N0NEZ2NBdkE3RERyc09Cd0M4RHNRT3d3NEhBTDBPeEE2OERnY0F2UTdGRHNRT0J3REVBOFVPdlE0SEFNUUR6UVBGRGdjQXhnN0hEc2dPQndER0Rza094dzRIQU1nT3lnN0xEZ2NBeUE3SERzb09Cd0RMRHN3T3pRNEhBTXNPeWc3TURnY0FpUTdPRG9jT0J3Q0pEczhPemc0SEFJY08wQTRBRGdjQWh3N09EdEFPQndESkR0RU94dzRIQU1rTzBnN1JEZ2NBeHc3VERzb09Cd0RIRHRFTzB3NEhBTW9PMUE3TURnY0F5ZzdURHRRT0J3RFBEdFVPemc0SEFNOE8xZzdWRGdjQXpnN1hEdEFPQndET0R0VU8xdzRIQU5nT3BnNm9EZ2NBMkE3WkRxWU9Cd0RaRHRvT3RnNEhBTmtPMkE3YURnY0EydzZvRHJvT0J3RGJEdGdPcUE0SEFOb090dzYyRGdjQTJnN2NEcmNPQndEZERyb093ZzRIQU4wTzJ3NjZEZ2NBM0E3QURyY09Cd0RjRHQ0T3dBNEhBTjhPelE3TURnY0EzdzdnRHMwT0J3RGdEczhPaVE0SEFPQU8zdzdQRGdjQTRRN01EdFFPQndEaER0OE96QTRIQU44TzFnN1BEZ2NBM3c3aER0WU9Cd0RpRHJRT3VRNEhBT0lPNHc2MERnY0F4ZzdqRHVJT0J3REdEc2dPNHc0SEFPTU9zZzYwRGdjQTR3N2tEcklPQndESUR1UU80dzRIQU1nT3l3N2tEZ2NBNUE2MkRySU9Cd0RrRHVVT3RnNEhBTXNPNVE3a0RnY0F5dzdORHVVT0J3RGxEdGtPdGc0SEFPVU81ZzdaRGdjQXpRN21EdVVPQndETkR1QU81ZzRIQU9ZT3BnN1pEZ2NBNWc3bkRxWU9Cd0RnRHVjTzVnNEhBT0FPaVE3bkRnY0E1dzZwRHFZT0J3RG5EdWdPcVE0SEFJa082QTduRGdjQWlRNkdEdWdPQndEb0RxTU9xUTRIQU9nTzZRNmpEZ2NBaGc3cER1Z09Cd0NHRG4wTzZRNEhBT2tPcEE2akRnY0E2UTdxRHFRT0J3QjlEdW9PNlE0SEFIME9OQTdxRGdjQTZnNnZEcVFPQndEcUR1c09ydzRIQURRTzZ3N3FEZ2NBTkE0eER1c09Cd0RyRHJFT3J3NEhBT3NPN0E2eERnY0FNUTdzRHVzT0J3QXhEakFPN0E0SEFPd09xdzZ4RGdjQTdBN3REcXNPQndBd0R1ME83QTRIQURBT1FBN3REZ2NBN1E2c0Rxc09Cd0R0RHU0T3JBNEhBRUFPN2c3dERnY0FRQTVERHU0T0J3QzREdThPdVE0SEFMZ084QTd2RGdjQXVRN3hEdUlPQndDNUR1OE84UTRIQU1FTzhBNjREZ2NBd1E3eUR2QU9Cd0RpRHZNT3hnNEhBT0lPOFE3ekRnY0F4ZzcwRHNrT0J3REdEdk1POUE0SEFNa085UTdTRGdjQXlRNzBEdlVPQndEd0R2WU83dzRIQVBBTzl3NzJEZ2NBN3c3NER2RU9Cd0R2RHZZTytBNEhBUElPOXc3d0RnY0E4Zzc1RHZjT0J3RHhEdm9POHc0SEFQRU8rQTc2RGdjQTh3NzdEdlFPQndEekR2b08rdzRIQVBRTy9BNzFEZ2NBOUE3N0R2d09Cd0Q5RGYwTy9nMEhBUDBOL2c3OURnY0EvZzcvRHYwT0J3RCtEZ0FQL3c0SEFQME4wQTcrRGdjQS9RMEFEdEFPQndEK0R0Y09BQThIQVA0TzBBN1hEZ2NBQVEvK0RRSVBCd0FCRHdrTy9nMEhBQU1QRXc0UkRnY0FBdzhFRHhNT0J3QUZEeEVPRHc0SEFBVVBBdzhSRGdjQUNRNEdEd3NPQndBSkRnRVBCZzhIQUEwT0JROFBEZ2NBRFE0SER3VVBCd0FMRGdjUERRNEhBQXNPQmc4SER3Y0FDQS8rRGYwT0J3QUlEd0lQL2cwSEFBa1AvUTcvRGdjQUNROElELzBPQndBS0Q5ME4zQTBIQUFvUEN3L2REUWNBQ3cvZkRkME5Cd0FMRHd3UDN3MEhBTndORFE4S0R3Y0EzQTBPRHcwUEJ3QU9EdzhQRFE4SEFBNFBFQThQRHdjQUVBOFJEdzhQQndBUUR4SVBFUThIQUJFUEV3OE1Ed2NBRVE4U0R4TVBCd0FVRHhNUEVnOEhBQlFQRlE4VER3Y0FDUThXRHdnUEJ3QUpEeGNQRmc4SEFBZ1BHQThDRHdjQUNBOFdEeGdQQndBQ0R4a1BBUThIQUFJUEdBOFpEd2NBQVE4YUR3WVBCd0FCRHhrUEdnOEhBQVlQR3c4SER3Y0FCZzhhRHhzUEJ3QUhEeHdQQlE4SEFBY1BHdzhjRHdjQUJROGREd01QQndBRkR4d1BIUThIQUFNUEhnOEVEd2NBQXc4ZER4NFBCd0FYRHg4UEZnOEhBQmNQSUE4ZkR3Y0FGZzhoRHhnUEJ3QVdEeDhQSVE4SEFCZ1BJZzhaRHdjQUdBOGhEeUlQQndBWkR5TVBHZzhIQUJrUElnOGpEd2NBR2c4a0R4c1BCd0FhRHlNUEpBOEhBQnNQSlE4Y0R3Y0FHdzhrRHlVUEJ3QWNEeVlQSFE4SEFCd1BKUThtRHdjQUhROG5EeDRQQndBZER5WVBKdzhIQUE4UEtBOE5Ed2NBRHc4cER5Z1BCd0FORHlvUENnOEhBQTBQS0E4cUR3Y0FFUThwRHc4UEJ3QVJEeXNQS1E4SEFBd1BLdzhSRHdjQURBOHNEeXNQQndBTER5d1BEQThIQUFzUExROHNEd2NBQ2c4dER3c1BCd0FLRHlvUExROEhBQ2tQTGc4b0R3Y0FLUTh2RHk0UEJ3QW9EekFQS2c4SEFDZ1BMZzh3RHdjQUt3OHZEeWtQQndBckR6RVBMdzhIQUNvUE1nOHREd2NBS2c4d0R6SVBCd0FzRHpFUEt3OEhBQ3dQTXc4eER3Y0FMUTh6RHl3UEJ3QXREeklQTXc4SEFDOFBOQTh1RHdjQUx3ODFEelFQQndBdUR6WVBNQThIQUM0UE5BODJEd2NBTVE4MUR5OFBCd0F4RHpjUE5ROEhBREFQT0E4eUR3Y0FNQTgyRHpnUEJ3QXpEemNQTVE4SEFETVBPUTgzRHdjQU1nODVEek1QQndBeUR6Z1BPUThIQURZUE9nODREd2NBTmc4N0R6b1BCd0E0RHp3UE9ROEhBRGdQT2c4OER3Y0FOQTg3RHpZUEJ3QTBEejBQT3c4SEFEVVBQUTgwRHdjQU5ROCtEejBQQndBM0R6NFBOUThIQURjUFB3OCtEd2NBT1E4L0R6Y1BCd0E1RHp3UFB3OEhBRUFQUkE1R0RnY0FRQTlCRDBRT0J3QkJEMFVPUkE0SEFFRVBRZzlGRGdjQVFnOW1Ea1VPQndCQ0QwTVBaZzRIQUVNUFpBNW1EZ2NBUXc5RUQyUU9Cd0JGRDBZT1J3NEhBRVVQUUE5R0RnY0FSZzlIRGtnT0J3QkdEMFVQUnc0SEFFY1BTQTVKRGdjQVJ3OUdEMGdPQndCSUQwa09TZzRIQUVnUFJ3OUpEZ2NBU1ErQkRsVU9Cd0JKRDBvUGdRNEhBRUlQU2c5SkR3Y0FRZzlCRDBvUEJ3QktEeklPZ1E0SEFFb1BTdzh5RGdjQVFROUxEMG9QQndCQkQwQVBTdzhIQUVzUExRNHlEZ2NBU3c5TUR5ME9Cd0JBRDB3UFN3OEhBRUFQUlE5TUR3Y0FUQTh1RGkwT0J3Qk1EMDBQTGc0SEFFVVBUUTlNRHdjQVJROUdEMDBQQndCTkR6OE9MZzRIQUUwUFRnOC9EZ2NBUmc5T0QwMFBCd0JHRDBjUFRnOEhBRTRQUWc0L0RnY0FUZzlQRDBJT0J3QkhEMDhQVGc4SEFFY1BTQTlQRHdjQVVBOVZEbEVPQndCUUQwa1BWUTRIQUVNUFNROVFEd2NBUXc5Q0Qwa1BCd0JSRDFFT1V3NEhBRkVQVUE5UkRnY0FSQTlRRDFFUEJ3QkVEME1QVUE4SEFGSVAxZzFURHdjQVVnL1hEZFlOQndCVUQwd09WUThIQUZRUFRRNU1EZ2NBMkExV0QxY1BCd0RZRGRVTlZnOEhBR3NPV0E5WkR3Y0FhdzV0RGxnUEJ3QitBMW9QWXdRSEFINERiQTVhRHdjQVZRK1dEbHNQQndCVkQwd09sZzRIQUp3T1Z3OWNEd2NBbkE3WURWY1BCd0JiRDVjT1hROEhBRnNQbGc2WERnY0FYUStlRGw0UEJ3QmRENWNPbmc0SEFKNE9YQTllRHdjQW5nNmNEbHdQQndCVEQ1ME9YdzhIQUZNUDFnMmREZ2NBWHcrZkRtQVBCd0JmRDUwT253NEhBR0FQYWdSckJBY0FZQStmRG1vRUJ3QmhEMVVQWWc4SEFHRVBWQTlWRHdjQVZ3OWpEMlFQQndCWEQxWVBZdzhIQUZrUFpROW1Ed2NBV1E5WUQyVVBCd0JpRDFzUFp3OEhBR0lQVlE5YkR3Y0FYQTlrRDJnUEJ3QmNEMWNQWkE4SEFHY1BYUTlwRHdjQVp3OWJEMTBQQndCcEQxNFBhZzhIQUdrUFhROWVEd2NBWGc5b0Qyb1BCd0JlRDF3UGFBOEhBUGdOWWcvN0RRY0ErQTFoRDJJUEJ3QmtEL29OK1EwSEFHUVBZdy82RFFjQVpnOXJEMndQQndCbUQyVVBhdzhIQVBzTlp3K1lEZ2NBK3cxaUQyY1BCd0JvRC9rTm1RNEhBR2dQWkEvNURRY0FtQTVwRDVvT0J3Q1lEbWNQYVE4SEFKb09hZytiRGdjQW1nNXBEMm9QQndCcUQ1a09tdzRIQUdvUGFBK1pEZ2NBYlErRURrOE9Cd0J0RDI0UGhBNEhBRzhPYmc5dER3Y0FidzZMRG00UEJ3QnVEOWtOaEE0SEFHNFBidy9aRFFjQWl3NXZEMjRQQndDTERuSU9idzhIQUc4UG1BM1pEUWNBYnc5d0Q1Z05Cd0J5RG5BUGJ3OEhBSElPY1E1d0R3Y0FjQStaRFpnTkJ3QndEM0VQbVEwSEFIRU9jUTl3RHdjQWNRNTBEbkVQQndCeEQ2c05tUTBIQUhFUGNnK3JEUWNBZEE1eUQzRVBCd0IwRG5ZT2NnOEhBSElQc2cyckRRY0FjZzl6RDdJTkJ3QjJEbk1QY2c4SEFIWU9kdzV6RHdjQWN3K3FEYklOQndCekQzUVBxZzBIQUhjT2RBOXpEd2NBZHc1NERuUVBCd0IwRDZnTnFnMEhBSFFQZFErb0RRY0FlQTUxRDNRUEJ3QjREbmtPZFE4SEFIVVBwZzJvRFFjQWRROTJENllOQndCNURuWVBkUThIQUhrT2VnNTJEd2NBZHc5UERrc09Cd0IzRDIwUFR3NEhBRzRPYlE5M0R3Y0FiZzV2RG0wUEJ3QjREMHNPVFE0SEFIZ1BkdzlMRGdjQWJRNTNEM2dQQndCdERtNE9kdzhIQUhrUFRRNVVEd2NBZVE5NEQwME9Cd0JZRDNnUGVROEhBRmdQYlE1NER3Y0FlZzlVRDJFUEJ3QjZEM2tQVkE4SEFHVVBlUTk2RHdjQVpROVlEM2tQQndCN0QyRVArQTBIQUhzUGVnOWhEd2NBYXc5NkQzc1BCd0JyRDJVUGVnOEhBSHdQK0EzNkRRY0FmQTk3RC9nTkJ3QnNEM3NQZkE4SEFHd1Bhdzk3RHdjQWZRLzZEV01QQndCOUQzd1ArZzBIQUdZUGZBOTlEd2NBWmc5c0Qzd1BCd0IrRDJNUFZnOEhBSDRQZlE5akR3Y0FXUTk5RDM0UEJ3QlpEMllQZlE4SEFIOFBWZy9WRFFjQWZ3OStEMVlQQndCckRuNFBmdzhIQUdzT1dROStEd2NBZ0EvVkRkY05Cd0NBRDM4UDFRMEhBR3dPZncrQUR3Y0FiQTVyRG44UEJ3Q0JEOWNOVWc4SEFJRVBnQS9YRFFjQVdnK0FENEVQQndCYUQyd09nQThIQUkwRTB3M0hBZ2NBalFTQ0Q5TU5Cd0NQQklJUGpRUUhBSThFZ3crQ0R3Y0FoQTlURDRVUEJ3Q0VEMUlQVXc4SEFJVVBYdytHRHdjQWhROVREMThQQndDR0QyQVBodzhIQUlZUFh3OWdEd2NBaHc5ckJKVUVCd0NIRDJBUGF3UUhBSWdQVWcrRUR3Y0FpQStCRDFJUEJ3QmpCSWtQbUFRSEFHTUVXZytKRHdjQWlRK0JENGdQQndDSkQxb1BnUThIQU5NTmhRL1VEUWNBMHcyRUQ0VVBCd0RVRFlZUG9BNEhBTlFOaFErR0R3Y0FvQTZIRDZFT0J3Q2dEb1lQaHc4SEFLRU9sUVNuQXdjQW9RNkhENVVFQndDQ0Q0UVAwdzBIQUlJUGlBK0VEd2NBbUFTREQ0OEVCd0NZQklrUGd3OEhBSU1QaUErQ0R3Y0FndytKRDRnUEJ3Q0tEK3dOaXc4SEFJb1BqQS9zRFFjQXlRMk1ENG9QQndESkRmQU5qQThIQUkwUDZ3M3FEUWNBalErT0Qrc05Cd0R5RFk0UGpROEhBUElOOFEyT0R3Y0FqZy9lRGVzTkJ3Q09ENDhQM2cwSEFQRU5qdytPRHdjQThRMTFEbzhQQndDUEQ5d04zZzBIQUk4UGtBL2NEUWNBZFE2UUQ0OFBCd0IxRG5NT2tBOEhBSkFQRGcvY0RRY0FrQStSRHc0UEJ3QnpEcEVQa0E4SEFITU9jQTZSRHdjQWtROFFEdzRQQndDUkQ1SVBFQThIQUhBT2tnK1JEd2NBY0E1L0RwSVBCd0NTRHhJUEVBOEhBSklQa3c4U0R3Y0FmdzZURDVJUEJ3Qi9Ec1FOa3c4SEFKTVBGQThTRHdjQWt3K1VEeFFQQndERURaUVBrdzhIQU1RTndRMlVEd2NBbEE4VkR4UVBCd0NVRDVVUEZROEhBTUVObFErVUR3Y0F3UTNGRFpVUEJ3Q1ZENVlQRlE4SEFKVVBsdytXRHdjQXhRMlhENVVQQndERkRjY05sdzhIQUpjUGl3K1dEd2NBbHcrS0Q0c1BCd0RIRFlvUGx3OEhBTWNOeVEyS0R3Y0FPdytZRHpvUEJ3QTdENWtQbUE4SEFEb1BtZzg4RHdjQU9nK1lENW9QQndBOUQ1a1BPdzhIQUQwUG13K1pEd2NBUEErY0R6OFBCd0E4RDVvUG5BOEhBRDRQbXc4OUR3Y0FQZytkRDVzUEJ3QS9ENTBQUGc4SEFEOFBuQStkRHdjQW1RK2VENWdQQndDWkQ1OFBuZzhIQUpnUG9BK2FEd2NBbUErZUQ2QVBCd0NiRDU4UG1ROEhBSnNQb1ErZkR3Y0FtZytpRDV3UEJ3Q2FENkFQb2c4SEFKMFBvUStiRHdjQW5RK2pENkVQQndDY0Q2TVBuUThIQUp3UG9nK2pEd2NBbncra0Q1NFBCd0NmRDZVUHBBOEhBSjRQcGcrZ0R3Y0FuZytrRDZZUEJ3Q2hENlVQbnc4SEFLRVBwdytsRHdjQW9BK29ENklQQndDZ0Q2WVBxQThIQUtNUHB3K2hEd2NBb3crcEQ2Y1BCd0NpRDZrUG93OEhBS0lQcUErcER3Y0FwUStxRDZRUEJ3Q2xENnNQcWc4SEFLUVByQSttRHdjQXBBK3FENndQQndDbkQ2c1BwUThIQUtjUHJRK3JEd2NBcGcrdUQ2Z1BCd0NtRDZ3UHJnOEhBS2tQclErbkR3Y0FxUSt2RDYwUEJ3Q29ENjhQcVE4SEFLZ1ByZyt2RHdjQXF3K3dENm9QQndDckQ3RVBzQThIQUtvUHNnK3NEd2NBcWcrd0Q3SVBCd0N0RDdFUHF3OEhBSzBQc3creER3Y0FyQSswRDY0UEJ3Q3NEN0lQdEE4SEFLOFBzdyt0RHdjQXJ3KzFEN01QQndDdUQ3VVBydzhIQUs0UHRBKzFEd2NBdGcrM0Q3Z1BCd0MyRDdrUHR3OEhBTGdQdWcrN0R3Y0F1QSszRDdvUEJ3QzhEN2tQdGc4SEFMd1B2USs1RHdjQXZnKzlEN3dQQndDK0Q3OFB2UThIQU1BUHZ3KytEd2NBd0EvQkQ3OFBCd0RDRDhFUHdBOEhBTUlQd3cvQkR3Y0F1dy9FRDhVUEJ3QzdEN29QeEE4SEFNVVBsUXFXQ2djQXhRL0VENVVLQndER0Q1Y0ttUW9IQU1ZUHh3K1hDZ2NBeUEvSkQ4b1BCd0RJRDhzUHlROEhBTW9QekEvTkR3Y0F5Zy9KRDh3UEJ3RE5EODRQenc4SEFNMFB6QS9PRHdjQTBBL0hEOFlQQndEUUQ5RVB4dzhIQU04UDBnL1REd2NBencvT0Q5SVBCd0RVRDlFUDBBOEhBTlFQMVEvUkR3Y0Ewdy9WRDlRUEJ3RFREOUlQMVE4SEFOWVAxQS9YRHdjQTFnL1REOVFQQndEWEQ5QVAyQThIQU5jUDFBL1FEd2NBMlEvVEQ5WVBCd0RaRDg4UDB3OEhBTmdQeGcvYUR3Y0EyQS9RRDhZUEJ3Q3hEOXNQc0E4SEFMRVAzQS9iRHdjQXNBL2REN0lQQndDd0Q5c1AzUThIQUxNUDNBK3hEd2NBc3cvZUQ5d1BCd0N5RDk4UHRBOEhBTElQM1EvZkR3Y0F0US9lRDdNUEJ3QzFEK0FQM2c4SEFMUVA0QSsxRHdjQXRBL2ZEK0FQQndEY0QrRVAydzhIQU53UDRnL2hEd2NBMncvakQ5MFBCd0RiRCtFUDR3OEhBTjRQNGcvY0R3Y0EzZy9rRCtJUEJ3RGREK1VQM3c4SEFOMFA0dy9sRHdjQTRBL2tEOTRQQndEZ0QrWVA1QThIQU44UDVnL2dEd2NBM3cvbEQrWVBCd0RpRCtjUDRROEhBT0lQNkEvbkR3Y0E0US9wRCtNUEJ3RGhEK2NQNlE4SEFPUVA2QS9pRHdjQTVBL3FEK2dQQndEakQrc1A1UThIQU9NUDZRL3JEd2NBNWcvcUQrUVBCd0RtRCt3UDZnOEhBT1VQN0EvbUR3Y0E1US9yRCt3UEJ3RHJEK2NQN0E4SEFPc1A2US9uRHdjQTZBL3NEK2NQQndEb0Qrb1A3QThIQU8wUHp3L1pEd2NBN1EvTkQ4OFBCd0RORCs0UHlnOEhBTTBQN1EvdUR3Y0E3dy9LRCs0UEJ3RHZEOGdQeWc4SEFOb1BtUXJEQ2djQTJnL0dENWtLQndETEQrOFA4QThIQU1zUHlBL3ZEd2NBOFEvQ0QvSVBCd0R4RDhNUHdnOEhBUE1QMXcvMER3Y0E4dy9XRDljUEJ3RHpEN2NQdVE4SEFQTVA5QSszRHdjQTlBL1hEOWdQQndEMEQ5Z1A5UThIQVBRUDlRKzZEd2NBOUErNkQ3Y1BCd0QyRC9NUHVROEhBUFlQdVErOUR3Y0E5US9ZRDlvUEJ3RDFEOW9QOXc4SEFQVVA5dy9FRHdjQTlRL0VEN29QQndENEQrMFAyUThIQVBnUDJRLzJEd2NBK0EvMkQ3MFBCd0Q0RDcwUHZ3OEhBUGdQdncvQkR3Y0ErQS9CRC9rUEJ3RDREL2tQN2c4SEFQZ1A3Zy90RHdjQStnL3ZEKzRQQndENkQrNFArUThIQU1NUCtnLzVEd2NBd3cvNUQ4RVBCd0QzRDlvUHd3b0hBUGNQd3dyUENnY0E5dy9QQ3BVS0J3RDNENVVLeEE4SEFQc1ArZy9ERHdjQSt3L0REL0VQQndENkQvc1A4QThIQVBvUDhBL3ZEd2NBOHcvOEQvMFBCd0R6RC8wUDFnOEhBUFlQL2cvOER3Y0E5Zy84RC9NUEJ3RC9ELzRQOWc4SEFQOFA5Zy9aRHdjQS9RLy9EOWtQQndEOUQ5a1AxZzhIQVB3UEFCQUJFQWNBL0E4QkVQMFBCd0Q4RC80UEFoQUhBUHdQQWhBQUVBY0FBeEFDRVA0UEJ3QURFUDRQL3c4SEFBRVFBeEQvRHdjQUFSRC9ELzBQQndEWUR0c08zQTRIQU5nTzNBN2FEZ2NBMnc3ZER0NE9Cd0RiRHQ0TzNBNEhBQXdQRXc4VkR3Y0FEQThWRDk4TkJ3QVZENVlQNEEwSEFCVVA0QTNmRFFjQTVnM2pEZUVOQndEbURlRU40ZzBIQU0wTnp3M2hEUWNBelEzaERlY05Cd0NXRDRzUDdBMEhBSllQN0EzZ0RRY0E2QTN2RGUwTkJ3RG9EZTBONXcwSEFPOE44ZzN3RFFjQTd3M3dEZTBOQndDTkQrb043QTBIQUkwUDdBMk1Ed2NBOGcyTkQ0d1BCd0R5RFl3UDhBMEhBQjRDSUFJaUFnY0FIZ0lpQWgwQ0J3QWVBaGtDTGdJSEFCNENMZ0l3QWdjQU9RSTdBaThDQndBNUFpOENNQUlIQURrQ09BSkJBZ2NBT1FKQkFrTUNCd0JOQWs0Q1JBSUhBRTBDUkFKREFnY0FXZ0pZQWh3Q0J3QmFBaHdDSFFJSEFHVUNZZ0pZQWdjQVpRSllBbG9DQndCTkFrc0N1UWtIQUUwQ3VRbTdDUWNBeFFuR0Nid0pCd0RGQ2J3SnV3a0hBTVVKd3duT0NRY0F4UW5PQ2RBSkJ3RFpDZG9KendrSEFOa0p6d25RQ1FjQTJRblhDZUVKQndEWkNlRUo0d2tIQUc0Q2NBSnlBZ2NBYmdKeUFtMENCd0J1QW1rQ2ZnSUhBRzRDZmdLQUFnY0FyQVN1Qkg4Q0J3Q3NCSDhDZ0FJSEFLd0Vxd1MwQkFjQXJBUzBCTFlFQndEQUJNRUV0d1FIQU1BRXR3UzJCQWNBelFUTEJHd0NCd0ROQkd3Q2JRSUhBRTBGVUFWU0JRY0FUUVZTQlVzRkJ3Qk5CVXdGWVFVSEFFMEZZUVZnQlFjQVN3VlNCV1lGQndCTEJXWUZZd1VIQU1BRXZnVHJDUWNBd0FUckNlMEpCd0QzQ2ZnSjdna0hBUGNKN2dudENRY0E5d24xQ1FBS0J3RDNDUUFLQWdvSEFBc0tEQW9CQ2djQUN3b0JDZ0lLQndBTENna0tFd29IQUFzS0V3b1ZDZ2NBQkJBRkVBWVFCd0FFRUFZUUJ4QUhBQVlRQlJBSUVBY0FCaEFJRUFrUUJ3QUtFQXNRREJBSEFBb1FEQkFORUFjQURoQU5FQXdRQndBT0VBd1FEeEFIQUJBUURoQVBFQWNBRUJBUEVCRVFCd0FTRUJBUUVSQUhBQklRRVJBVEVBY0FGQkFWRUJJUUJ3QVVFQklRRXhBSEFCWVFGeEFWRUFjQUZoQVZFQlFRQndBV0VBUVFCeEFIQUJZUUJ4QVhFQWNBQmhBWUVCa1FCd0FHRUJrUUJ4QUhBQm9RR3hBSkVBY0FHaEFKRUFvUUJ3QWNFQm9RQ2hBSEFCd1FDaEFORUFjQUhSQWNFQTBRQndBZEVBMFFEaEFIQUI0UUhSQU9FQWNBSGhBT0VCQVFCd0FmRUI0UUVCQUhBQjhRRUJBU0VBY0FGUkFnRUI4UUJ3QVZFQjhRRWhBSEFCY1FJUkFnRUFjQUZ4QWdFQlVRQndBSEVCa1FJUkFIQUFjUUlSQVhFQWNBR0JBaUVDTVFCd0FZRUNNUUdSQUhBQ0lRR0JBYkVBY0FJaEFiRUNRUUJ3QWxFQ1lRR2hBSEFDVVFHaEFjRUFjQUp4QWxFQndRQndBbkVCd1FIUkFIQUNnUUp4QWRFQWNBS0JBZEVCNFFCd0FwRUNnUUhoQUhBQ2tRSGhBZkVBY0FJQkFxRUNrUUJ3QWdFQ2tRSHhBSEFDRVFLeEFxRUFjQUlSQXFFQ0FRQndBWkVDTVFLeEFIQUJrUUt4QWhFQWNBSXhBaUVDd1FCd0FqRUN3UUxSQUhBQzRRSkJBbUVBY0FMaEFtRUM4UUJ3QXZFQ1lRSlJBSEFDOFFKUkF3RUFjQU1SQXdFQ1VRQndBeEVDVVFKeEFIQURJUU1SQW5FQWNBTWhBbkVDZ1FCd0F6RURJUUtCQUhBRE1RS0JBcEVBY0FLaEEwRURNUUJ3QXFFRE1RS1JBSEFDc1FOUkEwRUFjQUt4QTBFQ29RQndBckVDTVFMUkFIQUNzUUxSQTFFQWNBTFJBc0VEWVFCd0F0RURZUU54QUhBRFlRTEJBdUVBY0FOaEF1RURnUUJ3QTVFQzhRTUJBSEFEa1FNQkE2RUFjQU94QTZFREFRQndBN0VEQVFNUkFIQUR3UU94QXhFQWNBUEJBeEVESVFCd0E5RUR3UU1oQUhBRDBRTWhBekVBY0FOQkErRUQwUUJ3QTBFRDBRTXhBSEFEVVFQeEErRUFjQU5SQStFRFFRQndBMUVDMFFOeEFIQURVUU54QS9FQWNBRmhCQUVFRVFCd0FXRUVFUUJCQUhBQlFRUWhCQUVBY0FGQkJBRUJZUUJ3QUVFRUVRUXhBSEFBUVFReEFGRUFjQUNCQkVFRVVRQndBSUVFVVFDeEFIQUFzUVJSQkdFQWNBQ3hCR0VBd1FCd0FNRUVZUVJ4QUhBQXdRUnhBUEVBY0FEeEJIRUVnUUJ3QVBFRWdRRVJBSEFCRVFTQkJKRUFjQUVSQkpFQk1RQndBVEVFa1FRaEFIQUJNUVFoQVVFQWNBUUJCS0VFc1FCd0JBRUVzUVFSQUhBRUlRVEJCS0VBY0FRaEJLRUVBUUJ3QkJFRXNRVFJBSEFFRVFUUkJERUFjQVNSQk9FRXdRQndCSkVFd1FRaEFIQUVRUVR4QlFFQWNBUkJCUUVFVVFCd0JGRUZBUVVSQUhBRVVRVVJCR0VBY0FSaEJSRUZJUUJ3QkdFRklRUnhBSEFFY1FVaEJURUFjQVJ4QlRFRWdRQndCSUVGTVFUaEFIQUVnUVRoQkpFQWNBTnhBMkVGUVFCd0EzRUZRUVZSQUhBRllRT0JBNUVBY0FWaEE1RUZjUUJ3QlhFRGtRT2hBSEFGY1FPaEJZRUFjQVdSQllFRG9RQndCWkVEb1FPeEFIQUZvUVdSQTdFQWNBV2hBN0VEd1FCd0JiRUZvUVBCQUhBRnNRUEJBOUVBY0FQaEJjRUZzUUJ3QStFRnNRUFJBSEFEOFFYUkJjRUFjQVB4QmNFRDRRQndBL0VEY1FWUkFIQUQ4UVZSQmRFQWNBVlJCVUVGNFFCd0JWRUY0UVh4QUhBRjRRVkJCV0VBY0FYaEJXRUdBUUJ3QmhFRmNRV0JBSEFHRVFXQkJpRUFjQVloQllFRmtRQndCaUVGa1FZeEFIQUdNUVdSQmFFQWNBWXhCYUVHUVFCd0JrRUZvUVd4QUhBR1FRV3hCbEVBY0FXeEJjRUdZUUJ3QmJFR1lRWlJBSEFGd1FYUkJuRUFjQVhCQm5FR1lRQndCZEVGVVFYeEFIQUYwUVh4Qm5FQWNBWGhCb0VHa1FCd0JlRUdrUVh4QUhBR29RYXhCZ0VBY0FhaEJnRUdFUUJ3QnNFR29RWVJBSEFHd1FZUkJpRUFjQWJCQmlFR01RQndCc0VHTVFiUkFIQUcwUVl4QmtFQWNBYlJCa0VHNFFCd0J1RUdRUVpSQUhBRzRRWlJCdkVBY0FaUkJtRUhBUUJ3QmxFSEFRYnhBSEFHWVFaeEJ4RUFjQVpoQnhFSEFRQndCZkVHa1FjUkFIQUY4UWNSQm5FQWNBYVJCb0VISVFCd0JwRUhJUWN4QUhBSElRYUJCckVBY0FjaEJyRUhRUUJ3QjFFR29RYkJBSEFIVVFiQkIyRUFjQWRoQnNFRzBRQndCMkVHMFFkeEFIQUhjUWJSQnVFQWNBZHhCdUVIZ1FCd0I0RUc0UWJ4QUhBSGdRYnhCNUVBY0FieEJ3RUhvUUJ3QnZFSG9RZVJBSEFIQVFjUkI3RUFjQWNCQjdFSG9RQndCeEVHa1FjeEFIQUhFUWN4QjdFQWNBY3hCeUVId1FCd0J6RUh3UWZSQUhBSDRRZEJCMUVBY0FmaEIxRUg4UUJ3Qi9FSFVRZGhBSEFIOFFkaENBRUFjQWdSQ0FFSFlRQndDQkVIWVFkeEFIQUlJUWdSQjNFQWNBZ2hCM0VIZ1FCd0NERUlJUWVCQUhBSU1RZUJCNUVBY0FlaENFRUlNUUJ3QjZFSU1RZVJBSEFIc1FoUkNFRUFjQWV4Q0VFSG9RQndCN0VITVFmUkFIQUhzUWZSQ0ZFQWNBZlJCOEVINFFCd0I5RUg0UWZ4QUhBSVVRZlJDREVBY0FoUkNERUlRUUJ3QjlFSDhRZ2hBSEFIMFFnaENERUFjQWdoQi9FSUFRQndDQ0VJQVFnUkFIQUFzUUNoQUpFQWNBQ3hBSkVBZ1FCd0FZRUFZUUNSQUhBQmdRQ1JBYkVBY0FHaEFtRUNRUUJ3QWFFQ1FRR3hBSEFDd1FJaEFrRUFjQUxCQWtFQzRRQndBdkVEa1FPQkFIQUM4UU9CQXVFQWNBQlJCREVFUVFCd0FGRUVRUUNCQUhBRU1RVFJCUEVBY0FReEJQRUVRUUJ3QlVFRFlRT0JBSEFGUVFPQkJXRUFjQVZ4QmhFR0FRQndCWEVHQVFWaEFIQUdnUVhoQmdFQWNBYUJCZ0VHc1FCd0JxRUhVUWRCQUhBR29RZEJCckVBY0FmQkJ5RUhRUUJ3QjhFSFFRZmhBSEFJWVFoeENJRUFjQWhoQ0lFSWtRQndDSUVJY1FpaEFIQUlnUWloQ0xFQWNBakJDTkVJNFFCd0NNRUk0UWp4QUhBSkFRanhDT0VBY0FrQkNPRUpFUUJ3Q1NFSkFRa1JBSEFKSVFrUkNURUFjQWxCQ1NFSk1RQndDVUVKTVFsUkFIQUpZUWx4Q1VFQWNBbGhDVUVKVVFCd0NZRUprUWx4QUhBSmdRbHhDV0VBY0FtQkNHRUlrUUJ3Q1lFSWtRbVJBSEFJZ1FtaENiRUFjQWlCQ2JFSWtRQndDY0VKMFFpeEFIQUp3UWl4Q01FQWNBbmhDY0VJd1FCd0NlRUl3UWp4QUhBSjhRbmhDUEVBY0FueENQRUpBUUJ3Q2dFSjhRa0JBSEFLQVFrQkNTRUFjQW9SQ2dFSklRQndDaEVKSVFsQkFIQUpjUW9oQ2hFQWNBbHhDaEVKUVFCd0NaRUtNUW9oQUhBSmtRb2hDWEVBY0FpUkNiRUtNUUJ3Q0pFS01RbVJBSEFKb1FwQkNsRUFjQW1oQ2xFSnNRQndDa0VKb1FuUkFIQUtRUW5SQ21FQWNBcHhDb0VKd1FCd0NuRUp3UW5oQUhBS2tRcHhDZUVBY0FxUkNlRUo4UUJ3Q3FFS2tRbnhBSEFLb1FueENnRUFjQXF4Q3FFS0FRQndDckVLQVFvUkFIQUtJUXJCQ3JFQWNBb2hDckVLRVFCd0NqRUswUXJCQUhBS01RckJDaUVBY0FteENsRUswUUJ3Q2JFSzBRb3hBSEFLVVFwQkN1RUFjQXBSQ3VFSzhRQndDd0VLWVFxQkFIQUxBUXFCQ3hFQWNBc1JDb0VLY1FCd0N4RUtjUXNoQUhBTE1Rc2hDbkVBY0FzeENuRUtrUUJ3QzBFTE1RcVJBSEFMUVFxUkNxRUFjQXRSQzBFS29RQndDMUVLb1FxeEFIQUt3UXRoQzFFQWNBckJDMUVLc1FCd0N0RUxjUXRoQUhBSzBRdGhDc0VBY0FyUkNsRUs4UUJ3Q3RFSzhRdHhBSEFLOFFyaEM0RUFjQXJ4QzRFTGtRQndDNEVLNFFzQkFIQUxnUXNCQzZFQWNBdXhDeEVMSVFCd0M3RUxJUXZCQUhBTDBRdkJDeUVBY0F2UkN5RUxNUUJ3QytFTDBRc3hBSEFMNFFzeEMwRUFjQXZ4QytFTFFRQndDL0VMUVF0UkFIQUxZUXdCQy9FQWNBdGhDL0VMVVFCd0MzRU1FUXdCQUhBTGNRd0JDMkVBY0F0eEN2RUxrUUJ3QzNFTGtRd1JBSEFKZ1F3aERERUFjQW1CRERFSVlRQndDV0VNUVF3aEFIQUpZUXdoQ1lFQWNBaGhEREVNVVFCd0NHRU1VUWh4QUhBSW9ReGhESEVBY0FpaERIRUkwUUJ3Q05FTWNReUJBSEFJMFF5QkNPRUFjQWpoRElFTWtRQndDT0VNa1FrUkFIQUpFUXlSREtFQWNBa1JES0VKTVFCd0NURU1vUXl4QUhBSk1ReXhDVkVBY0FsUkRMRU1RUUJ3Q1ZFTVFRbGhBSEFNSVF6QkRORUFjQXdoRE5FTU1RQndERUVNNFF6QkFIQU1RUXpCRENFQWNBd3hETkVNOFFCd0RERU04UXhSQUhBTXNRMEJET0VBY0F5eERPRU1RUUJ3REpFTkVRMGhBSEFNa1EwaERLRUFjQXloRFNFTkFRQndES0VOQVF5eEFIQU84TDhndlRFQWNBN3d2VEVOUVFCd0R4Qy9BTDh3c0hBUEVMOHd2MEN3Y0E5QXZ6Qy9VTEJ3RDBDL1VMOWdzSEFBRU0xUkRVRUFjQUFRelVFUEVMQndBQ0RBTU04Z3NIQUFJTThndnZDd2NBOGdzREROWVFCd0R5QzlZUTB4QUhBQVVNQVF6eEN3Y0FCUXp4Qy9RTEJ3RHdDd1FNQmd3SEFQQUxCZ3p6Q3djQUJ3d0ZEUFFMQndBSERQUUw5Z3NIQVBNTEJnd0lEQWNBOHdzSURQVUxCd0QxQ3dnTUJ3d0hBUFVMQnd6MkN3Y0F1UkM0RU5jUUJ3QzVFTmNRMkJBSEFOa1F1aEM3RUFjQTJSQzdFTm9RQndEYUVMc1F2QkFIQU5vUXZCRGJFQWNBM0JEYkVMd1FCd0RjRUx3UXZSQUhBTjBRM0JDOUVBY0EzUkM5RUw0UUJ3RGVFTjBRdmhBSEFONFF2aEMvRUFjQXdCRGZFTjRRQndEQUVONFF2eEFIQU1FUTRCRGZFQWNBd1JEZkVNQVFCd0RCRUxrUTJCQUhBTUVRMkJEZ0VBY0EyQkRYRU9FUUJ3RFlFT0VRNGhBSEFPRVExeERaRUFjQTRSRFpFT01RQndEa0VOb1EyeEFIQU9RUTJ4RGxFQWNBNVJEYkVOd1FCd0RsRU53UTVoQUhBT1lRM0JEZEVBY0E1aERkRU9jUUJ3RG5FTjBRM2hBSEFPY1EzaERvRUFjQTNoRGZFT2tRQndEZUVPa1E2QkFIQU44UTRCRHFFQWNBM3hEcUVPa1FCd0RnRU5nUTRoQUhBT0FRNGhEcUVBY0E0UkRyRU93UUJ3RGhFT3dRNGhBSEFPMFE3aERqRUFjQTdSRGpFT1FRQndEdkVPMFE1QkFIQU84UTVCRGxFQWNBN3hEbEVPWVFCd0R2RU9ZUThCQUhBUEFRNWhEbkVBY0E4QkRuRVBFUUJ3RHhFT2NRNkJBSEFQRVE2QkR5RUFjQTZCRHBFUE1RQndEb0VQTVE4aEFIQU9rUTZoRDBFQWNBNlJEMEVQTVFCd0RpRU93UTlCQUhBT0lROUJEcUVBY0E3QkRyRVBVUUJ3RHNFUFVROWhBSEFQVVE2eER1RUFjQTlSRHVFUGNRQndENEVPMFE3eEFIQVBnUTd4RDVFQWNBK1JEdkVQQVFCd0Q1RVBBUStoQUhBUG9ROEJEeEVBY0EraER4RVBzUUJ3RDdFUEVROGhBSEFQc1E4aEQ4RUFjQThoRHpFUDBRQndEeUVQMFEvQkFIQVBNUTlCRCtFQWNBOHhEK0VQMFFCd0QwRU93UTloQUhBUFFROWhEK0VBY0E5aEQxRVA4UUJ3RDJFUDhRQUJFSEFBRVI5eEQ0RUFjQUFSSDRFQUlSQndBQ0VmZ1ErUkFIQUFJUitSQURFUWNBQkJFREVma1FCd0FFRWZrUStoQUhBQVVSQkJINkVBY0FCUkg2RVBzUUJ3QUdFUVVSK3hBSEFBWVIreEQ4RUFjQS9SQUhFUVlSQndEOUVBWVIvQkFIQVA0UUNCRUhFUWNBL2hBSEVmMFFCd0QrRVBZUUFCRUhBUDRRQUJFSUVRY0FBQkgvRUFFUkJ3QUFFUUVSQWhFSEFBZ1JBQkVHRVFjQUNCRUdFUWNSQndBQUVRSVJCUkVIQUFBUkJSRUdFUWNBQlJFQ0VRTVJCd0FGRVFNUkJCRUhBSTBRakJDTEVBY0FqUkNMRUlvUUJ3Q2FFSWdRaXhBSEFKb1FpeENkRUFjQW5CQ29FS1lRQndDY0VLWVFuUkFIQUs0UXBCQ21FQWNBcmhDbUVMQVFCd0N4RUxzUXVoQUhBTEVRdWhDd0VBY0FoeERGRU1ZUUJ3Q0hFTVlRaWhBSEFQQUw4UXZVRUFjQThBdlVFTk1RQndBQ0RPOEwxQkFIQUFJTTFCRFZFQWNBQkF6d0M5TVFCd0FFRE5NUTFoQUhBTmNRdUJDNkVBY0ExeEM2RU5rUUJ3RGFFT1FRNHhBSEFOb1E0eERaRUFjQTZ4RGhFT01RQndEckVPTVE3aEFIQU8wUStCRDNFQWNBN1JEM0VPNFFCd0QvRVBVUTl4QUhBUDhROXhBQkVRY0FNRUVUQWdBQWNtRjJOQzFpYkdGamF3QUFBUUFBQVFBQ0FBTUFCQUFGQUFZQUJ3QUlBQWtBQ2dBTEFBd0FEUUFPQUE4QUVBQVJBQklBRXdBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFCNEFId0FnQUNFQUlnQWpBQ1FBSlFBbUFDY0FLQUFwQUNvQUt3QXNBQzBBTGdBdkFEQUFNUUF5QURNQU5BQTFBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0JmQUdBQVlRQmlBR01BWkFCbEFHWUFad0JvQUdrQWFnQnJBR3dBYlFCdUFHOEFjQUJ4QUhJQWN3QjBBSFVBZGdCM0FIZ0FlUUI2QUhzQWZBQjlBSDRBZndDQUFJRUFnZ0NEQUlRQWhRQ0dBSWNBaUFDSkFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbWdDYkFKd0FuUUNlQUo4QW9BQ2hBS0lBb3dDa0FLVUFwZ0NuQUtnQXFRQ3FBS3NBckFDdEFLNEFyd0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QUxvQXV3QzhBTDBBdmdDL0FNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5Z0RMQU13QXpRRE9BTThBMEFEUkFOSUEwd0RVQU5VQTFnRFhBTmdBMlFEYUFOc0EzQURkQU40QTN3RGdBT0VBNGdEakFPUUE1UURtQU9jQTZBRHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEFNRUd5RlFBQWNtRjJOQzFpYjJSNUFOQUtBQUVCQVFJQkF3RUVBUVVCQmdFSEFRZ0JDUUVLQVFzQkRBRU5BUTRCRHdFUUFSRUJFZ0VUQVJRQkZRRVdBUmNCR0FFWkFSb0JHd0VjQVIwQkhnRWZBU0FCSVFFaUFTTUJKQUVsQVNZQkp3RW9BU2tCS2dFckFTd0JMUUV1QVM4Qk1BRXhBVElCTXdFMEFUVUJOZ0UzQVRnQk9RRTZBVHNCUEFFOUFUNEJQd0ZBQVVFQlFnRkRBVVFCUlFGR0FVY0JTQUZKQVVvQlN3Rk1BVTBCVGdGUEFWQUJVUUZTQVZNQlZBRlZBVllCVndGWUFWa0JXZ0ZiQVZ3QlhRRmVBVjhCWUFGaEFXSUJZd0ZrQVdVQlpnRm5BV2dCYVFGcUFXc0JiQUZ0QVc0QmJ3RndBWEVCY2dGekFYUUJkUUYyQVhjQmVBRjVBWG9CZXdGOEFYMEJmZ0YvQVlBQmdRR0NBWU1CaEFHRkFZWUJod0dJQVlrQmlnR0xBWXdCalFHT0FZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVpzQm5BR2RBWjRCbndHZ0FhRUJvZ0dqQWFRQnBRR21BYWNCcUFHcEFhb0Jxd0dzQWEwQnJnR3ZBYkFCc1FHeUFiTUJ0QUcxQWJZQnR3RzRBYmtCdWdHN0Fid0J2UUcrQWI4QndBSEJBY0lCd3dIRUFjVUJ4Z0hIQWNnQnlRSEtBY3NCekFITkFjNEJ6d0hRQWRFQjBnSFRBZFFCMVFIV0FkY0IyQUhaQWRvQjJ3SGNBZDBCM2dIZkFlQUI0UUhpQWVNQjVBSGxBZVlCNXdIb0Fla0I2Z0hyQWV3QjdRSHVBZThCOEFIeEFmSUI4d0gwQWZVQjlnSDNBZmdCK1FINkFmc0IvQUg5QWY0Qi93RUFBZ0VDQWdJREFnUUNCUUlHQWdjQ0NBSUpBZ29DQ3dJTUFnMENEZ0lQQWhBQ0VRSVNBaE1DRkFJVkFoWUNGd0lZQWhrQ0dnSWJBaHdDSFFJZUFoOENJQUloQWlJQ0l3SWtBaVVDSmdJbkFpZ0NLUUlxQWlzQ0xBSXRBaTRDTHdJd0FqRUNNZ0l6QWpRQ05RSTJBamNDT0FJNUFqb0NPd0k4QWowQ1BnSS9Ba0FDUVFKQ0FrTUNSQUpGQWtZQ1J3SklBa2tDU2dKTEFrd0NUUUpPQWs4Q1VBSlJBbElDVXdKVUFsVUNWZ0pYQWxnQ1dRSmFBbHNDWEFKZEFsNENYd0pnQW1FQ1lnSmpBbVFDWlFKbUFtY0NhQUpwQW1vQ2F3SnNBbTBDYmdKdkFuQUNjUUp5QW5NQ2RBSjFBbllDZHdKNEFua0NlZ0o3QW53Q2ZRSitBbjhDZ0FLQkFvSUNnd0tFQW9VQ2hnS0hBb2dDaVFLS0Fvc0NqQUtOQW80Q2p3SUlCQWtFQ2dRTEJBd0VEUVFPQkE4RUVBUVJCQklFRXdRVUJCVUVGZ1FYQkJnRUdRUWFCQnNFSEFRZEJCNEVId1FnQkNFRUlnUWpCQ1FFSlFRbUJDY0VLQVFwQkNvRUt3UXNCQzBFTGdRdkJEQUVNUVF5QkRNRU5BUTFCRFlFTndRNEJEa0VPZ1E3QkR3RVBRUStCRDhFUUFSQkJFSUVRd1JFQkVVRVJnUkhCRWdFU1FSS0JFc0VUQVJOQkU0RVR3UlFCRkVFVWdSVEJGUUVWUVJXQkZjRVdBUlpCRm9FV3dSY0JGMEVYZ1JmQkdBRVlRUmlCR01FWkFSbEJHWUVad1JvQkdrRWFnUnJCR3dFYlFSdUJHOEVjQVJ4QkhJRWN3UjBCSFVFZGdSM0JIZ0VlUVI2QkhzRWZBUjlCSDRFZndTQUJJRUVnZ1NEQklRRWhRU0dCSWNFaUFTSkJJb0Vpd1NNQkkwRWpnU1BCSkFFa1FTU0JKTUVsQVNWQkpZRWx3U1lCSmtFbWdTYkJKd0VuUVNlQko4RW9BU2hCS0lFb3dTa0JLVUVwZ1NuQktnRXFRU3FCS3NFckFTdEJLNEVyd1N3QkxFRXNnU3pCTFFFdFFTMkJMY0V1QVM1QkxvRXV3UzhCTDBFdmdTL0JNQUV3UVRDQk1NRXhBVEZCTVlFeHdUSUJNa0V5Z1RMQk13RXpRVE9CTThFMEFUUkJOSUUwd1RVQk5VRTFnVFhCTmdFMlFUYUJOc0UzQVRkQk40RTN3VGdCT0VFNGdUakJPUUU1UVRtQk9jRTZBVHBCT29FNndUc0JPMEU3Z1R2QlBBRThRVHlCUE1FOUFUMUJQWUU5d1Q0QlBrRStnVDdCUHdFL1FUK0JQOEVBQVVCQlFJRkF3VUVCUVVGQmdVSEJRZ0ZDUVVLQlFzRkRBVU5CUTRGRHdVUUJSRUZFZ1VUQlJRRkZRVVdCUmNGR0FVWkJSb0ZHd1VjQlIwRkhnVWZCU0FGSVFVaUJTTUZKQVVsQlNZRkp3VW9CU2tGS2dVckJTd0ZMUVV1QlM4Rk1BVXhCVElGTXdVMEJUVUZOZ1UzQlRnRk9RVTZCVHNGUEFVOUJUNEZQd1ZBQlVFRlFnVkRCVVFGUlFWR0JVY0ZTQVZKQlVvRlN3Vk1CVTBGVGdWUEJWQUZVUVZTQlZNRlZBVlZCVllGVndWWUJWa0ZXZ1ZiQlZ3RlhRVmVCVjhGWUFWaEJXSUZZd1ZrQldVRlpnVm5CV2dGYVFWcUJXc0ZiQVZ0Qlc0RmJ3VndCWEVGY2dWekJYUUZkUVYyQlhjRmVBVjVCWG9GZXdWOEJYMEZmZ1YvQllBRmdRV0NCWU1GaEFXRkJZWUZod1dJQllrRmlnV0xCWXdGalFXT0JZOEZrQVdSQlpJRmt3V1VCWlVGbGdXWEJaZ0ZtUVdhQlpzRm5BV2RCWjRGbndXZ0JhRUZvZ1dqQmFRRnBRV21CYWNGcUFXcEJhb0Zxd1dzQmEwRnJnV3ZCYkFGc1FXeUJiTUZ0QVcxQmJZRnR3VzRCYmtGdWdXN0Jid0Z2UVcrQmI4RndBWEJCY0lGd3dYRUJjVUZ4Z1hIQmNnRnlRWEtCY3NGekFYTkJjNEZ6d1hRQmRFRjBnWFRCZFFGMVFYV0JkY0YyQVhaQmRvRjJ3WGNCZDBGM2dYZkJlQUY0UVhpQmVNRjVBWGxCZVlGNXdYb0Jla0Y2Z1hyQmV3RjdRWHVCZThGOEFYeEJmSUY4d1gwQmZVRjlnWDNCZmdGK1FYNkJmc0YvQVg5QmY0Ri93VUFCZ0VHQWdZREJnUUdCUVlHQmdjR0NBWUpCZ29HQ3dZTUJnMEdEZ1lQQmhBR0VRWVNCaE1HRkFZVkJoWUdGd1lZQmhrR0dnWWJCaHdHSFFZZUJoOEdJQVloQmlJR0l3WWtCaVVHSmdZbkJpZ0dLUVlxQmlzR0xBWXRCaTRHTHdZd0JqRUdNZ1l6QmpRR05RWTJCamNHT0FZNUJqb0dPd1k4QmowR1BnWS9Ca0FHUVFaQ0JrTUdSQVpGQmtZR1J3WklCa2tHU2daTEJrd0dUUVpPQms4R1VBWlJCbElHVXdaVUJsVUdWZ1pYQmxnR1dRWmFCbHNHWEFaZEJsNEdYd1pnQm1FR1lnWmpCbVFHWlFabUJtY0dhQVpwQm1vR2F3WnNCbTBHYmdadkJuQUdjUVp5Qm5NR2RBWjFCbllHZHdaNEJua0dlZ1o3Qm53R2ZRWitCbjhHZ0FhQkJvSUdnd2FFQm9VR2hnYUhCb2dHaVFhS0Jvc0dqQWFOQm80R2p3YVFCcEVHa2dhVEJwUUdsUWFXQnBjR21BYVpCcG9HbXdhY0JwMEduZ2FmQnFBR29RYWlCcU1HcEFhbEJxWUdwd2FvQnFrR3FnYXJCcXdHclFhdUJxOEdzQWF4QnJJR3N3YTBCclVHdGdhM0JyZ0d1UWE2QnJzR3ZBYTlCcjRHdndiQUJzRUd3Z2JEQnNRR3hRYkdCc2NHeUFiSkJzb0d5d2JNQnMwR3pnYlBCdEFHMFFiU0J0TUcxQWJWQnRZRzF3YllCdGtHMmdiYkJ0d0czUWJlQnQ4RzRBYmhCdUlHNHdia0J1VUc1Z2JuQnVnRzZRYnFCdXNHN0FidEJ1NEc3d2J3QnZFRzhnYnpCdlFHOVFiMkJ2Y0crQWI1QnZvRyt3YjhCdjBHL2diL0JnQUhBUWNDQndNSEJBY0ZCd1lIQndjSUJ3a0hDZ2NMQnd3SERRY09CdzhIRUFjUkJ4SUhFd2NVQnhVSEZnY1hCeGdIR1FjYUJ4c0hIQWNkQng0SEh3Y2dCeUVISWdjakJ5UUhKUWNtQnljSEtBY3BCeW9IS3djc0J5MEhMZ2N2QnpBSE1RY3lCek1ITkFjMUJ6WUhOd2M0QnprSE9nYzdCendIUFFjK0J6OEhRQWRCQjBJSFF3ZEVCMFVIUmdkSEIwZ0hTUWRLQjBzSFRBZE5CMDRIVHdkUUIxRUhVZ2RUQjFRSFZRZFdCMWNIV0FkWkIxb0hXd2RjQjEwSFhnZGZCMkFIWVFkaUIyTUhaQWRsQjJZSFp3ZG9CMmtIYWdkckIyd0hiUWR1QjI4SGNBZHhCM0lIY3dkMEIzVUhkZ2QzQjNnSGVRZDZCM3NIZkFkOUIzNEhmd2VBQjRFSGdnZURCNFFIaFFlR0I0Y0hpQWVKQjRvSGl3ZU1CNDBIamdlUEI1QUhrUWVTQjVNSGxBZVZCNVlIbHdlWUI1a0htZ2ViQjV3SG5RZWVCNThIb0FlaEI2SUhvd2VrQjZVSHBnZW5CNmdIcVFlcUI2c0hyQWV0QjY0SHJ3ZXdCN0VIc2dlekI5QVYwUlhTRmRNVjFCWFZGZFlWMXhYWUZka1YyaFhiRmR3VjNSWGVGZDhWNEJYaEZlSVY0eFhrRmVVVjVoWG5GZWdWNlJYcUZlc1Y3Qlh0RmU0Vjd4WHdGZkVWOGhYekZmUVY5UlgyRmZjVitCWDVGZm9WK3hYOEZmMFYvaFgvRlFBV0FSWUNGZ01XQkJZRkZnWVdCeFlJRmdrV0NoWUxGZ3dXRFJZT0ZnOFdFQllSRmhJV0V4WVVGaFVXRmhZWEZoZ1dHUllhRmhzV0hCWWRGaDRXSHhZZ0ZpRVdJaFlqRmlRV0pSWW1GaWNXS0JZcEZpb1dLeFlzRmkwV0xoWXZGakFXTVJZeUZqTVdOQlkxRmpZV054WTRGamtXT2hZN0Zqd1dQUlkrRmo4V1FCWkJGa0lXUXhaRUZrVVdSaFpIRmtnV1NSWktGa3NXVEJaTkZrNFdUeFpRRmxFV1VoWlRGbFFXVlJaV0ZsY1dXQlpaRmxvV1d4WmNGbDBXWGhaZkZtQVdZUlppRm1NV1pCWmxGbVlXWnhab0Zta1dhaFpyRm13V2JSWnVGbThXY0JaeEZuSVdjeFowRm5VV2RoWjNGbmdXZVJaNkZuc1dmQlo5Rm40V2Z4YUFGb0VXZ2hhREZvUVdoUmFHRm9jV2lCYUpGb29XaXhhTUZvMFdqaGFQRnBBV2tSYVNGcE1XbEJhVkZwWVdseGFZRnBrV21oYWJGcHdXblJhZUZwOFdvQmFoRnFJV294YWtGcVVXcGhhbkZxZ1dxUmFxRnFzV3JCYXRGcTRXcnhhd0ZyRVdzaGF6RnJRV3RSYTJGcmNXdUJhNUZyb1d1eGE4RnIwV3ZoYS9Gc0FXd1JiQ0ZzTVd4QmJGRnNZV3h4YklGc2tXeWhiTEZzd1d6UmJPRnM4VzBCYlJGdElXMHhiVUZ0VVcxaGJYRnRnVzJSYmFGdHNXM0JiZEZ0NFczeGJnRnVFVzRoYmpGdVFXNVJibUZ1Y1c2QmJwRnVvVzZ4YnNGdTBXN2hidkZ2QVc4UmJ5RnZNVzlCYjFGdllXOXhiNEZ2a1craGI3RnZ3Vy9SYitGdjhXQUJjQkZ3SVhBeGNFRndVWEJoY0hGd2dYQ1JjS0Z3c1hEQmNORnc0WER4Y1FGeEVYRWhjVEZ4UVhGUmNXRnhjWEdCY1pGeG9YR3hjY0Z4MFhIaGNmRnlBWElSY2lGeU1YSkJjbEZ5WVhKeGNvRnlrWEtoY3JGeXdYTFJjdUZ5OFhNQmN4RnpJWE14YzBGelVYTmhjM0Z6Z1hPUmM2RnpzWFBCYzlGejRYUHhkQUYwRVhRaGRERjBRWFJSZEdGMGNYU0JkSkYwb1hTeGRNRjAwWFRoZFBGMUFYVVJkU0YxTVhWQmRWRjFZWFZ4ZFlGMWtYV2hkYkYxd1hYUmRlRjE4WFlCZGhGMklYWXhka0YyVVhaaGRuRjJnWGFSZHFGMnNYYkJkdEYyNFhieGR3RjNFWGNoZHpGM1FYZFJkMkYzY1hlQmQ1RjNvWGV4ZDhGMzBYZmhkL0Y0QVhnUmVDRjRNWGhCZUZGNFlYaHhlSUY0a1hpaGVMRjR3WGpSZU9GNDhYa0JlUkY1SVhreGVVRjVVWGxoZVhGNWdYbVJlYUY1c1huQmVkRjU0WG54ZWdGNkVYb2hlakY2UVhwUmVtRjZjWHFCZXBGNm9YcXhlc0Y2MFhyaGV2RjdBWHNSZXlGN01YdEJlMUY3WVh0eGU0RjdrWHVoZTdGN3dYdlJlK0Y3OFh3QmZCRjhJWHd4ZkVGOFVYeGhmSEY4Z1h5UmZLRjhzWHpCZk5GODRYenhmUUY5RVgwaGZURjlRWDFSZldGOWNYMkJmWkY5b1gyeGZjRjkwWDNoZmZGK0FYNFJmaUYrTVg1QmZsRitZWDV4Zm9GK2tYNmhmckYrd1g3UmZ1Ris4WDhCZnhGL0lYOHhmMEYvVVg5aGYzRi9nWCtSZjZGL3NYL0JmOUYvNFgveGNBR0FFWUFoZ0RHQVFZQlJnR0dBY1lDQmdKR0FvWUN4Z01HQTBZRGhnUEdCQVlFUmdTR0JNWUZCZ1ZHQllZRnhnWUdCa1lHaGdiR0J3WUhSZ2VHQjhZSUJnaEdDSVlJeGdrR0NVWUpoZ25HQ2dZS1JncUdDc1lMQmd0R0M0WUx4Z3dHREVZTWhnekdEUVlOUmcyR0RjWU9CZzVHRG9ZT3hnOEdEMFlQaGcvR0VBWVFSaENHRU1ZUkJoRkdFWVlSeGhJR0VrWVNoaExHRXdZVFJoT0dFOFlVQmhSR0ZJWVV4aFVHRlVZVmhoWEdGZ1lXUmhhR0ZzWVhCaGRHRjRZWHhoZ0dHRVlZaGhqR0dRWVpSaG1HR2NZYUJocEdHb1lheGhzR0cwWWJoaHZHSEFZY1JoeUdITVlkQmgxR0hZWWR4aDRHSGtZZWhoN0dId1lmUmgrR0g4WWdCaUJHSUlZZ3hpRUdJVVloaGlIR0lnWWlSaUtHSXNZakJpTkdJNFlqeGlRR0pFWWtoaVRHSlFZbFJpV0dKY1ltQmlaR0pvWW14aWNHSjBZbmhpZkdLQVlvUmlpR0tNWXBCaWxHS1lZcHhpb0dLa1lxaGlyR0t3WXJSaXVHSzhZc0JpeEdMSVlzeGkwR0xVWXRoaTNHTGdZdVJpNkdMc1l2Qmk5R0w0WXZ4akFHTUVZd2hqREdNUVl4UmpHR01jWXlCakpHTW9ZeXhqTUdNMFl6aGpQR05BWTBSalNHTk1ZMUJqVkdOWVkxeGpZR05rWTJoamJHTndZM1JqZUdOOFk0QmpoR09JWTR4amtHT1VZNWhqbkdPZ1k2UmpxR09zWTdCanRHTzRZN3hqd0dQRVk4aGp6R1BRWTlSajJHUGNZK0JqNUdQb1kreGo4R1AwWS9oai9HQUFaQVJrQ0dRTVpCQmtGR1FZWkJ4a0lHUWtaQ2hrTEdRd1pEUmtPR1E4WkVCa1JHUklaRXhrVUdSVVpGaGtYR1JnWkdSa2FHUnNaSEJrZEdSNFpIeGtnR1NFWkloa2pHU1FaSlJrbUdTY1pLQmtwR1NvWkt4a3NHUzBaTGhrdkdUQVpNUmt5R1RNWk5CazFHVFlaTnhrNEdUa1pPaGs3R1R3WlBSaytHVDhaUUJsQkdVSVpReGxFR1VVWlJobEhHVWdaU1JsS0dVc1pUQmxOR1U0WlR4bFFHVkVaVWhsVEdWUVpWUmxXR1ZjWldCbFpHVm9aV3hsY0dWMFpYaGxmR1dBWllSbGlHV01aWkJsbEdXWVpaeGxvR1drWmFobHJHV3daYlJsdUdXOFpjQmx4R1hJWmN4bDBHWFVaZGhsM0dYZ1plUmw2R1hzWmZCbDlHWDRaZnhtQUdZRVpnaG1ER1lRWmhSbUdHWWNaaUJtSkdZb1ppeG1NR1kwWmpobVBHWkFaa1JtU0daTVpsQm1WR1pZWmx4bVlHWmtabWhtYkdad1puUm1lR1o4Wm9CbWhHYUlab3hta0dhVVpwaG1uR2FnWnFSbXFHYXNackJtdEdhNFpyeG13R2JFWnNobXpHYlFadFJtMkdiY1p1Qm01R2JvWnV4bThHYjBadmhtL0djQVp3Um5DR2NNWnhCbkZHY1laeHhuSUdja1p5aG5MR2N3WnpSbk9HYzhaMEJuUkdkSVoweG5VR2RVWjFoblhHZGdaMlJuYUdkc1ozQm5kR2Q0WjN4bmdHZUVaNGhuakdlUVo1Um5tR2VjWjZCbnBHZW9aNnhuc0dlMFo3aG52R2ZBWjhSbnlHZk1aOUJuMUdmWVo5eG40R2ZrWitobjdHZndaL1JuK0dmOFpBQm9CR2dJYUF4b0VHZ1VhQmhvSEdnZ2FDUm9LR2dzYURCb05HZzRhRHhvUUdoRWFFaG9UR2hRYUZSb1dHaGNhR0JvWkdob2FHeG9jR2gwYUhob2ZHaUFhSVJvaUdpTWFKQm9sR2lZYUp4b29HaWthS2hvckdpd2FMUm91R2k4YU1Cb3hHaklhTXhvMEdqVWFOaG8zR2pnYU9SbzZHanNhUEJvOUdqNGFQeHBBR2tFYVFocERHa1FhUlJwR0drY2FTQnBKR2tvYVN4cE1HazBhVGhwUEdsQWFVUnBTR2xNYVZCcFZHbFlhVnhwWUdsa2FXaHBiR2x3YVhScGVHbDhhWUJwaEdtSWFZeHBrR21VYVpocG5HbWdhYVJwcUdtc2FiQnB0R200YWJ4cHdHbkVhY2hwekduUWFkUnAyR25jYWVCcDVHbm9hZXhwOEduMGFmaHAvR29BYWdScUNHb01haEJxRkdvWWFoeHFJR29rYWlocUxHb3dhalJxT0dvOGFrQnFSR3BJYWt4cVVHcFVhbGhxWEdwZ2FtUnFhR3BzYW5CcWRHcDRhbnhxZ0dxRWFvaHFqR3FRYXBScW1HcWNhcUJxcEdxb2FxeHFzR3EwYXJocXZHckFhc1JxeUdyTWF0QnExR3JZYXR4cTRHcmthdWhxN0dyd2F2UnErR3I4YXdCckJHc0lhd3hyRUdzVWF4aHJIR3NnYXlScktHc3NhekJyTkdzNGF6eHJRR3RFYTBoclRHdFFhMVJyV0d0Y2EyQnJaR3RvYTJ4cmNHdDBhM2hyZkd1QWE0UnJpR3VNYTVCcmxHdVlhNXhyb0d1a2E2aHJyR3V3YTdScnVHdThhOEJyeEd2SWE4eHIwR3ZVYTlocjNHdmdhK1JyNkd2c2EvQnI5R3Y0YS94b0FHd0ViQWhzREd3UWJCUnNHR3djYkNCc0pHd29iQ3hzTUd3MGJEaHNQR3hBYkVSc1NHeE1iRkJzVkd4WWJGeHNZR3hrYkdoc2JHeHdiSFJzZUd4OGJJQnNoR3lJYkl4c2tHeVViSmhzbkd5Z2JLUnNxR3lzYkxCc3RHeTRiTHhzd0d6RWJNaHN6R3pRYk5SczJHemNiT0JzNUd6b2JPeHM4R3owYlBocy9HMEFiUVJ0Q0cwTWJSQnRGRzBZYlJ4dElHMGtiU2h0TEcwd2JUUnNZSEJrY0dod2JIQndjSFJ3ZUhCOGNJQndoSENJY0l4d2tIQ1VjSmh3bkhDZ2NLUndxSENzY0xCd3RIREJCOVFFQUFISmhkalF0Wm13dGJHVnVjd0R3QUpBQ2tRS1NBcE1DbEFLVkFwWUNsd0tZQXBrQ21nS2JBcHdDblFLZUFwOENvQUtoQXFJQ293S2tBcVVDcGdLbkFxZ0NxUUtxQXFzQ3JBS3RBcTRDcndLd0FyRUNzZ0t6QXJRQ3RRSzJBcmNDdUFLNUFyb0N1d0s4QXIwQ3ZnSy9Bc0FDd1FMQ0FzTUN4QUxGQXNZQ3h3TElBc2tDeWdMTEFzd0N6UUxPQXM4QzBBTFJBdElDMHdMVUF0VUMxZ0xYQXRnQzJRTGFBdHNDM0FMZEF0NEMzd0xnQXVFQzRnTGpBdVFDNVFMbUF1Y0M2QUxwQXVvQzZ3THNBdTBDN2dMdkF2QUM4UUx5QXZNQzlBTDFBdllDOXdMNEF2a0MrZ0w3QXZ3Qy9RTCtBdjhDQUFNQkF3SURBd01FQXdVREJnTUhBNG9VaXhTTUZJMFVqaFNQRkpBVWtSU1NGSk1VbEJTVkZKWVVseFNZRkprVW1oU2JGSndVblJTZUZKOFVvQlNoRktJVW94U2tGS1VVcGhTbkZLZ1VxUlNxRktzVXJCU3RGSzRVcnhTd0ZMRVVzaFN6RkxRVXRSUzJGTGNVdUJTNUZMb1V1eFM4RkwwVXZoUy9GTUFVd1JUQ0ZNTVV4QlRGRk1ZVXh4VElGTWtVeWhUTEZNd1V6UlRPRk04VTBCVFJGTklVMHhUVUZOVVUxaFRYRk5nVTJSVGFGTnNVM0JUZEZONFUzeFRnRk9FVTRoVGpGT1FVNVJUbUZPY1U2QlRwRk9vVTZ4VHNGTzBVN2hUdkZQQVU4UlR5RlBNVTlCVDFGUFlVOXhUNEZQa1UraFQ3RlB3VS9SVCtGUDhVQUJVQkZUQkIzd1lBQUhKaGRqUXRabXd0YldseWNtOXlBR1FEQ0FNSkF3b0RDd01NQXcwRERnTVBBeEFERVFNU0F4TURGQU1WQXhZREZ3TVlBeGtER2dNYkF4d0RIUU1lQXg4RElBTWhBeUlESXdNa0F5VURKZ01uQXlnREtRTXFBeXNETEFNdEF5NERMd013QXpFRE1nTXpBelFETlFNMkF6Y0RPQU01QXpvRE93TThBejBEUGdNL0EwQURRUU5DQTBNRFJBTkZBMFlEUndOSUEwa0RTZ05MQTB3RFRRTk9BMDhEVUFOUkExSURVd05VQTFVRFZnTlhBMWdEV1FOYUExc0RYQU5kQTE0RFh3TmdBMkVEWWdOakEyUURaUU5tQTJjRGFBTnBBMm9EYXdOc0EyMERiZ052QTNBRGNRTnlBM01EZEFOMUEzWURkd040QTNrRGVnTjdBM3dEZlFOK0EzOERnQU9CQTRJRGd3T0VBNFVEaGdPSEE0Z0RpUU9LQTRzRGpBT05BNDREandPUUE1RURrZ09UQTVRRGxRT1dBNWNEbUFPWkE1b0Rtd09jQTUwRG5nT2ZBNkFEb1FPaUE2TURwQU9sQTZZRHB3T29BNmtEcWdPckE2d0RyUU91QTY4RHNBT3hBN0lEc3dPMEE3VUR0Z08zQTdnRHVRTzZBN3NEdkFPOUE3NER2d1BBQThFRHdnUERBOFFEeFFQR0E4Y0R5QVBKQThvRHl3UE1BODBEemdQUEE5QUQwUVBTQTlNRDFBUFZBOVlEMXdQWUE5a0QyZ1BiQTl3RDNRUGVBOThENEFQaEErSUQ0d1BrQStVRDVnUG5BK2dENlFQcUErc0Q3QVB0QSs0RDd3UHdBL0VEOGdQekEvUUQ5UVAyQS9jRCtBUDVBL29EK3dQOEEvMEQvZ1AvQXdBRUFRUUNCQU1FQkFRRkJBWUVCd1MwQjdVSHRnZTNCN2dIdVFlNkI3c0h2QWU5Qjc0SHZ3ZkFCOEVId2dmREI4UUh4UWZHQjhjSHlBZkpCOG9IeXdmTUI4MEh6Z2ZQQjlBSDBRZlNCOU1IMUFmVkI5WUgxd2ZZQjlrSDJnZmJCOXdIM1FmZUI5OEg0QWZoQitJSDR3ZmtCK1VINWdmbkIrZ0g2UWZxQitzSDdBZnRCKzRIN3dmd0IvRUg4Z2Z6Qi9RSDlRZjJCL2NIK0FmNUIvb0grd2Y4Qi8wSC9nZi9Cd0FJQVFnQ0NBTUlCQWdGQ0FZSUJ3Z0lDQWtJQ2dnTENBd0lEUWdPQ0E4SUVBZ1JDQklJRXdnVUNCVUlGZ2dYQ0JnSUdRZ2FDQnNJSEFnZENCNElId2dnQ0NFSUlnZ2pDQ1FJSlFnbUNDY0lLQWdwQ0NvSUt3Z3NDQzBJTGdndkNEQUlNUWd5Q0RNSU5BZzFDRFlJTndnNENEa0lPZ2c3Q0R3SVBRZytDRDhJUUFoQkNFSUlRd2hFQ0VVSVJnaEhDRWdJU1FoS0NFc0lUQWhOQ0U0SVR3aFFDRkVJVWdoVENGUUlWUWhXQ0ZjSVdBaFpDRm9JV3doY0NGMElYZ2hmQ0dBSVlRaGlDR01JWkFobENHWUlad2hvQ0drSWFnaHJDR3dJYlFodUNHOEljQWh4Q0hJSWN3aDBDSFVJZGdoM0NIZ0llUWg2Q0hzSWZBaDlDSDRJZndpQUNJRUlnZ2lEQ0lRSWhRaUdDSWNJaUFpSkNJb0lpd2lNQ0kwSWpnaVBDSkFJa1FpU0NKTUlsQWlWQ0pZSWx3aVlDSmtJbWdpYkNKd0luUWllQ0o4SW9BaWhDS0lJb3dpa0NLVUlwZ2luQ0tnSXFRaXFDS3NJckFpdENLNElyd2l3Q0xFSVRodFBHMUFiVVJ0U0cxTWJWQnRWRzFZYlZ4dFlHMWtiV2h0Ykcxd2JYUnRlRzE4YllCdGhHMkliWXh0a0cyVWJaaHRuRzJnYmFSdHFHMnNiYkJ0dEcyNGJieHR3RzNFYmNodHpHM1FiZFJ0MkczY2JlQnQ1RzNvYmV4dDhHMzBiZmh0L0c0QWJnUnVDRzRNYmhCdUZHNFliaHh1SUc0a2JMaHd2SERBY01Sd3lIRE1jTkJ3MUhEWWNOeHc0SERrY09odzdIRVljUnh4SUhFa2NTaHhMSEV3Y1RSeE9IRThjVUJ4UkhHSWNZeHhrSEdVY1poeG5IR2djYVJ4cUhHc2NiQnh0SEc0Y2J4eHdISEVjY2h4ekhIUWNkUngySEhjY2VCeDVISG9jZXh4OEhIMGNmaHgvSElBY2dSeUNISU1jaEJ5RkhJWWNoeHlJSElrY2loeUxISXdjalJ5T0hJOGNrQnlSSEpJY2t4eVVISlVjbGh5WEhKZ2NtUnlhSEpzY25CeWRISjRjbnh5Z0hLRWNvaHlqSEtRY3BSeW1IS2NjcUJ5cEhLb2NxeHlzSEswY3JoeXZITEFjc1J5eUhMTWN0QnkxSExZY3R4eTRITGtjdWh5N0hMd2N2UnkrSEw4Y3dCekJITUljd3h6RUhNVWN4aHpISE1nY3lSektITXNjekJ6TkhNNGN6eHpRSE5FYzBoelRITlFjMVJ6V0hOY2MyQnpaSE5vYzJ4emNITjBjM2h6ZkhFSWRReDFFSFVVZFJoMUhIVWdkU1IxS0hVc2RUQjFOSFU0ZFR4MWFIVnNkWEIxZEhWNGRYeDFnSFdFZFloMWpIV1FkWlIxbUhXY2RhQjFwSFdvZGF4MXNIVzBkYmgxdkhYQWRjUjF5SFhNZGRCMTFIWFlkZHgxNEhYa2RlaDE3SFh3ZGZSMStIWDhkZ0IyQkhZSWRneDJFSFlVZGhoMkhIWWdkaVIyS0hZc2RqQjJOSFk0ZGp4MlFIWkVka2gyVEhaUWRsUjJXSFpjZG1CMlpIWm9kbXgyY0haMGRuaDJmSGFBZG9SMmlIYU1kcEIybEhhWWRweDJvSGFrZHFoMnJIYXdkclIydUhhOGRzQjJ4SGJJZHN4MjBIYlVkdGgyM0hiZ2R1UjI2SGJzZHZCMjlIYjRkdngzQUhjRWR3aDNESGNRZHhSM0dIY2NkeUIzSkhjb2R5eDNNSGMwZHpoM1BIZEFkMFIxS0hrc2VUQjVOSGs0ZVR4NVFIbEVlVWg1VEhsUWVWUjR3UVRNQkFBQnlZWFkwTFdac0xXOXlZVzVuWlFDT0FMSUlzd2kwQ0xVSXRnaTNDTGdJdVFpNkNMc0l2QWk5Q0w0SXZ3akFDTUVJd2dqRENNUUl4UWpHQ01jSXlBakpDTW9JeXdqTUNNMEl6Z2pQQ05BSTBRalNDTk1JMUFqVkNOWUkxd2pZQ05rSTJnamJDTndJM1FqZUNOOEk0QWpoQ09JSTR3amtDT1VJNWdqbkNGUVVWUlJXRkZjVVdCUlpGRm9VV3hSY0ZGMFVYaFJmRkdBVVlSUmlGR01VWkJSbEZHWVVaeFJvRkdrVWFoUnJGR3dVYlJSdUZHOFVjQlJ4RkhJVWN4UjBGSFVVZGhSM0ZIZ1VlUlI2RkhzVWZCUjlGSDRVZnhTQUZJRVVnaFNERklRVWhSU0dGSWNVaUJTSkZGSWNVeHhVSEZVY1ZoeFhITklkMHgzVUhkVWQxaDNYSGRnZDJSM2FIZHNkM0IzZEhkNGQzeDNnSGVFZDRoM2pIZVFkNVIzbUhlY2RWaDVYSGxnZVdSNWFIbHNlTUVGVEFRQUFjbUYyTkMxd2JHRjBaUUNnQU9nSTZRanFDT3NJN0FqdENPNEk3d2p3Q1BFSThnanpDUFFJOVFqMkNQY0krQWo1Q1BvSSt3ajhDUDBJL2dqL0NBQUpBUWtDQ1FNSkJBa0ZDUVlKQndrSUNRa0pDZ2tMQ1F3SkRRa09DUThKRUFrUkNSSUpFd2tVQ1JVSkZna1hDUmdKR1FrYUNSc0pIQWtkQ1I0Skh3a2dDU0VKSWdrakNTUUpKUWttQ1NjSktBa3BDU29KS3drc0NTMEpMZ2t2Q1RBSk1Ra3lDVE1KTkFrMUNUWUpOd2s0Q1RrSk9nazdDVHdKUFFrK0NUOEpRQWxCQ1VJSlF3bEVDVVVKUmdsSENVZ0pTUWxLQ1VzSlRBbE5DVTRKVHdsUUNWRUpVZ2xUQ1ZRSlZRbFdDVmNKV0FsWkNWb0pXd2xjQ1YwSlhnbGZDV0FKWVFsaUNXTUpaQWxsQ1dZSlp3bG9DV2tKYWdsckNXd0piUWx1Q1c4SmNBbHhDWElKY3dsMENYVUpkZ2wzQ1hnSmVRbDZDWHNKZkFsOUNYNEpmd21BQ1lFSmdnbURDWVFKaFFtR0NZY0pNRUd0QmdBQWNtRjJOQzF6YUdsbGJHUnpBRXdEaUFtSkNZb0ppd21NQ1kwSmpnbVBDWkFKa1FtU0NaTUpsQW1WQ1pZSmx3bVlDWmtKbWdtYkNad0puUW1lQ1o4Sm9BbWhDYUlKb3dta0NhVUpwZ21uQ2FnSnFRbXFDYXNKckFtdENhNEpyd213Q2JFSnNnbXpDYlFKdFFtMkNiY0p1QW01Q2JvSnV3bThDYjBKdmdtL0NjQUp3UW5DQ2NNSnhBbkZDY1lKeHduSUNja0p5Z25MQ2N3SnpRbk9DYzhKMEFuUkNkSUowd25VQ2RVSjFnblhDZGdKMlFuYUNkc0ozQW5kQ2Q0SjN3bmdDZUVKNGduakNlUUo1UW5tQ2VjSjZBbnBDZW9KNnduc0NlMEo3Z252Q2ZBSjhRbnlDZk1KOUFuMUNmWUo5d240Q2ZrSitnbjdDZndKL1FuK0NmOEpBQW9CQ2dJS0F3b0VDZ1VLQmdvSENnZ0tDUW9LQ2dzS0RBb05DZzRLRHdvUUNoRUtFZ29UQ2hRS0ZRb1dDaGNLR0FvWkNob0tHd29jQ2gwS0hnb2ZDaUFLSVFvaUNpTUtKQW9sQ2lZS0p3b29DaWtLS2dvckNpd0tMUW91Q2k4S01Bb3hDaklLTXdvMENqVUtOZ28zQ2pnS09RbzZDanNLUEFvOUNqNEtQd3BBQ2tFS1FncERDa1FLUlFwR0NrY0tTQXBKQ2tvS1N3cE1DazBLVGdwUENsQUtVUXBTQ2xNS1ZBcFZDbFlLVndwWUNsa0tXZ3BiQ2x3S1hRcGVDbDhLWUFwaENtSUtZd3BrQ21VS1pncG5DbWdLYVFwcUNtc0tiQXB0Q200S2J3cHdDbkVLY2dwekNuUUtkUXAyQ25jS2VBcDVDbm9LZXdwOENuMEtmZ3AvQ29BS2dRcUNDb01LaEFxRkNvWUtod3FJQ29rS2lncUxDb3dLalFxT0NvOEtrQXFSQ3BJS2t3cVVDcFVLbGdxWENwZ0ttUXFhQ3BzS25BcWRDcDRLbndxZ0NxRUtvZ3FqQ3FRS3BRcW1DcWNLcUFxcENxb0txd3FzQ3EwS3JncXZDckFLc1FxeUNyTUt0QXExQ3JZS3R3cTRDcmtLdWdxN0Nyd0t2UXErQ3I4S3dBckJDc0lLd3dyRUNzVUt4Z3JIQ3NnS3lRcktDc3NLekFyTkNzNEt6d3JRQ3RFSzBnclRDdFFLMVFyV0N0Y0syQXJaQ3RvSzJ3cmNDdDBLM2dyZkN1QUs0UXJpQ3VNSzVBcmxDdVlLNXdyb0N1a0s2Z3JyQ3V3SzdRcnVDdThLOEFyeEN2SUs4d3IwQ3ZVSzlncjNDdmdLK1FyNkN2c0svQXI5Q3Y0Sy93b0FDd0VMQWdzREN3UUxCUXNHQ3djTENBc0pDd29MQ3dzTUN3MExEZ3NQQ3hBTEVRc1NDeE1MRkFzVkN4WUxGd3NZQ3hrTEdnc2JDeHdMSFFzZUN4OExJQXNoQ3lJTEl3c2tDeVVMSmdzbkN5Z0xLUXNxQ3lzTExBc3RDeTRMTHdzd0N6RUxNZ3N6Q3pRTE5RczJDemNMT0FzNUN6b0xPd3M4Q3owTFBncy9DMEFMUVF0Q0MwTUxSQXRGQzBZTFJ3dElDMGtMU2d0TEMwd0xUUXRPQzA4TFVBdFJDMUlMVXd0VUMxVUxWZ3RYQzFnTFdRdGFDMXNMWEF0ZEMxNExYd3N3RVRFUk1oRXpFVFFSTlJFMkVUY1JPQkU1RVRvUk94RThFVDBSUGhFL0VVQVJRUkZDRVVNUlJCRkZFVVlSUnhGSUVVa1JTaEZMRVV3UlRSRk9FVThSVUJGUkVWSVJVeEZVRVZVUlZoRlhFVmdSV1JGYUVWc1JYQkZkRVY0Ulh4RmdFV0VSWWhGakVXUVJaUkZtRVdjUmFCRnBFV29SYXhGc0VXMFJiaEZ2RVhBUmNSRnlFWE1SZEJGMUVYWVJkeEY0RVhrUmVoRjdFWHdSZlJGK0VYOFJnQkdCRVlJUmd4R0VFWVVSaGhHSEVZZ1JpUkdLRVlzUmpCR05FWTRSanhHUUVaRVJraEdURVpRUmxSR1dFWmNSbUJHWkVab1JteEdjRVowUm5oR2ZFYUFSb1JHaUVhTVJwQkdsRWFZUnB4R29FYWtScWhHckVhd1JyUkd1RWE4UnNCR3hFYklSc3hHMEViVVJ0aEczRWJnUnVSRzZFYnNSdkJHOUViNFJ2eEhBRWNFUndoSERFY1FSeFJIR0VjY1J5QkhKRWNvUnl4SE1FYzBSemhIUEVkQVIwUkhTRWRNUjFCSFZFZFlSMXhIWUVka1IyaEhiRWR3UjNSSGVFZDhSNEJIaEVlSVI0eEhrRWVVUjVoSG5FZWdSNlJIcUVlc1I3Qkh0RWU0Ujd4SHdFZkVSOGhIekVmUVI5UkgyRWZjUitCSDVFZm9SK3hIOEVmMFIvaEgvRVNnU0tSSXFFaXNTTEJJdEVpNFNMeEl3RWpFU01oSXpFalFTTlJJMkVqY1NPQkk1RWpvU094SThFajBTUGhJL0VrQVNRUkpDRWtNU1JCSkZFa1lTUnhKSUVra1NTaEpMRWt3U1RSSk9FazhTUGhRL0ZFQVVRUlJDRkVNVVJCUkZGRVlVUnhSSUZFa1VTaFJMRkV3VVRSUk9GRThVVUJSUkZGSVVVeFNLRzRzYmpCdU5HNDRianh1UUc1RWJraHVURzVRYmxSdVdHNWNibUJ1Wkc1b2JteHVjRzUwYm5odWZHNkFib1J1aUc2TWJwQnVsRzZZYnB4dW9HNmticWh1ckc2d2JyUnV1RzY4YnNCdXhHOW9iMnh2Y0c5MGIzaHZmRytBYjRSdmlHK01iNUJ2bEcrWWI1eHZvRytrYjZodnJHK3diN1J2dUcrOGI4QnZ4Ry9JYjh4djBHL1ViOWh2M0cvZ2IrUnY2Ry9zYi9CdjlHLzRiL3hzQUhBRWNBaHdESEFRY0JSd0dIQWNjQ0J3SkhBb2NDeHdNSEEwY0Rod1BIQkFjRVJ3U0hCTWNGQndWSEJZY0Z4d3dRU3dLQUFCeVlYWTBMV05vY205dFpRQU1CV0FMWVF0aUMyTUxaQXRsQzJZTFp3dG9DMmtMYWd0ckMyd0xiUXR1QzI4TGNBdHhDM0lMY3d0MEMzVUxkZ3QzQzNnTGVRdDZDM3NMZkF0OUMzNExmd3VBQzRFTGdndURDNFFMaFF1R0M0Y0xpQXVKQzRvTGl3dU1DNDBMamd1UEM1QUxrUXVTQzVNTGxBdVZDNVlMbHd1WUM1a0xtZ3ViQzV3TG5RdWVDNThMb0F1aEM2SUxvd3VrQzZVTHBndW5DNmdMcVF1cUM2c0xyQXV0QzY0THJ3dXdDN0VMc2d1ekM3UUx0UXUyQzdjTHVBdTVDN29MdXd1OEM3MEx2Z3UvQzhBTHdRdkNDOE1MeEF2RkM4WUx4d3ZJQzhrTHlndkxDOHdMelF2T0M4OEwwQXZSQzlJTDB3dlVDOVVMMWd2WEM5Z0wyUXZhQzlzTDNBdmRDOTRMM3d2Z0MrRUw0Z3ZqQytRTDVRdm1DK2NMNkF2cEMrb0w2d3ZzQyswTDdndnZDL0FMOFF2eUMvTUw5QXYxQy9ZTDl3djRDL2tMK2d2N0Mvd0wvUXYrQy84TEFBd0JEQUlNQXd3RURBVU1CZ3dIREFnTUNRd0tEQXNNREF3TkRBNE1Ed3dRREJFTUVnd1REQlFNRlF3V0RCY01HQXdaREJvTUd3d2NEQjBNSGd3ZkRDQU1JUXdpRENNTUpBd2xEQ1lNSnd3b0RDa01LZ3dyREN3TUxRd3VEQzhNTUF3eERESU1Nd3cwRERVTU5ndzNERGdNT1F3NkREc01QQXc5REQ0TVB3eEFERUVNUWd4RERFUU1SUXhHREVjTVNBeEpERW9NU3d4TURFME1UZ3hQREZBTVVReFNERk1NVkF4VkRGWU1Wd3hZREZrTVdneGJERndNWFF4ZURGOE1ZQXhoREdJTVl3eGtER1VNWmd4bkRHZ01hUXhxREdzTWJBeHRERzRNYnd4d0RIRU1jZ3h6REhRTWRReDJESGNNZUF4NURIb01ld3g4REgwTWZneC9ESUFNZ1F5Q0RJTU1oQXlGRElZTWh3eUlESWtNaWd5TERJd01qUXlPREk4TWtBeVJESklNa3d5VURKVU1sZ3lYREpnTW1ReWFESnNNbkF5ZERKNE1ud3lnREtFTW9neWpES1FNcFF5bURLY01xQXlwREtvTXF3eXNESzBNcmd5dkRMQU1zUXl5RExNTXRBeTFETFlNdHd5NERMa011Z3k3REx3TXZReStETDhNd0F6QkRNSU13d3pFRE1VTXhnekhETWdNeVF6S0RNc016QXpORE00TXp3elFETkVNMGd6VEROUU0xUXpXRE5jTTJBelpETm9NMnd6Y0ROME0zZ3pmRE9BTTRRemlET01NNUF6bERPWU01d3pvRE9rTTZnenJET3dNN1F6dURPOE04QXp4RFBJTTh3ejBEUFVNOWd6M0RQZ00rUXo2RFBzTS9BejlEUDRNL3d3QURRRU5BZzBERFFRTkJRMEdEUWNOQ0EwSkRRb05DdzBNRFEwTkRnMFBEUkFORVEwU0RSTU5GQTBWRFJZTkZ3MFlEUmtOR2cwYkRSd05IUTBlRFI4TklBMGhEU0lOSXcwa0RTVU5KZzBuRFNnTktRMHFEU3NOTEEwdERTNE5MdzB3RFRFTk1nMHpEVFFOTlEwMkRUY05PQTA1RFRvTk93MDhEVDBOUGcwL0RVQU5RUTFDRFVNTlJBMUZEVVlOUncxSURVa05TZzFMRFV3TlRRMU9EVThOVUExUkRWSU5VdzFVRFZVTlZnMVhEVmdOV1ExYURWc05YQTFkRFY0Tlh3MWdEV0VOWWcxakRXUU5aUTFtRFdjTmFBMXBEV29OYXcxc0RXME5iZzF2RFhBTmNRMXlEWE1OZEExMURYWU5kdzE0RFhrTmVnMTdEWHdOZlExK0RYOE5nQTJCRFlJTmd3MkVEWVVOaGcySERZZ05pUTJLRFlzTmpBMk5EWTROancyUURaRU5rZzJURFpRTmxRMldEWmNObUEyWkRab05tdzJjRFowTm5nMmZEYUFOb1EyaURhTU5wQTJsRGFZTnB3Mm9EYWtOcWcyckRhd05yUTJ1RGE4TnNBMnhEYklOc3cyMERiVU50ZzIzRGJnTnVRMjZEYnNOdkEyOURiNE52dzNBRGNFTndnM0REY1FOeFEzR0RjY055QTNKRGNvTnl3M01EYzBOemczUERkQU4wUTNTRGRNTjFBM1ZEZFlOMXczWURka04yZzNiRGR3TjNRM2VEZDhONEEzaERlSU40dzNrRGVVTjVnM25EZWdONlEzcURlc043QTN0RGU0Tjd3M3dEZkVOOGczekRmUU45UTMyRGZjTitBMzVEZm9OK3czOERmME4vZzMvRFFBT0FRNENEZ01PQkE0RkRnWU9CdzRJRGdrT0NnNExEZ3dPRFE0T0RnOE9FQTRSRGhJT0V3NFVEaFVPRmc0WERoZ09HUTRhRGhzT0hBNGREaDRPSHc0Z0RpRU9JZzRqRGlRT0pRNG1EaWNPS0E0cERpb09LdzRzRGkwT0xnNHZEakFPTVE0eURqTU9OQTQxRGpZT053NDREamtPT2c0N0Rqd09QUTQrRGo4T1FBNUJEa0lPUXc1RURrVU9SZzVIRGtnT1NRNUtEa3NPVEE1TkRrNE9UdzVRRGxFT1VnNVREbFFPVlE1V0RsY09XQTVaRGxvT1d3NWNEbDBPWGc1ZkRtQU9ZUTVpRG1NT1pBNWxEbVlPWnc1b0Rta09hZzVyRG13T2JRNXVEbThPY0E1eERuSU9jdzUwRG5VT2RnNTNEbmdPZVE1NkRuc09mQTU5RG40T2Z3NkFEb0VPZ2c2RERvUU9oUTZHRG9jT2lBNkpEb29PaXc2TURvME9qZzZQRHBBT2tRNlNEcE1PbEE2VkRwWU9sdzZZRHBrT21nNmJEcHdPblE2ZURwOE9vQTZoRHFJT293NmtEcVVPcGc2bkRxZ09xUTZxRHFzT3JBNnREcTRPcnc2d0RyRU9zZzZ6RHJRT3RRNjJEcmNPdUE2NURyb091dzY4RHIwT3ZnNi9Ec0FPd1E3Q0RzTU94QTdGRHNZT3h3N0lEc2tPeWc3TERzd096UTdPRHM4TzBBN1JEdElPMHc3VUR0VU8xZzdYRHRnTzJRN2FEdHNPM0E3ZER0NE8zdzdnRHVFTzRnN2pEdVFPNVE3bUR1Y082QTdwRHVvTzZ3N3NEdTBPN2c3dkR2QU84UTd5RHZNTzlBNzFEdllPOXc3NER2a08rZzc3RHZ3Ty9RNytEdjhPQUE4QkR3SVBBdzhFRHdVUEJnOEhEd2dQQ1E4S0R3c1BEQThORHc0UER3OFFEeEVQRWc4VER4UVBGUThXRHhjUEdBOFpEeG9QR3c4Y0R4MFBIZzhmRHlBUElROGlEeU1QSkE4bER5WVBKdzhvRHlrUEtnOHJEeXdQTFE4dUR5OFBNQTh4RHpJUE13ODBEelVQTmc4M0R6Z1BPUTg2RHpzUFBBODlEejRQUHc5QUQwRVBRZzlERDBRUFJROUdEMGNQU0E5SkQwb1BTdzlNRDAwUFRnOVBEMUFQVVE5U0QxTVBWQTlWRDFZUFZ3OVlEMWtQV2c5YkQxd1BYUTllRDE4UFlBOWhEMklQWXc5a0QyVVBaZzluRDJnUGFROXFEMnNQYkE5dEQyNFBidzl3RDNFUGNnOXpEM1FQZFE5MkQzY1BlQTk1RDNvUGV3OThEMzBQZmc5L0Q0QVBnUStDRDRNUGhBK0ZENFlQaHcrSUQ0a1BpZytMRDR3UGpRK09ENDhQa0ErUkQ1SVBrdytVRDVVUGxnK1hENWdQbVErYUQ1c1BuQStkRDU0UG53K2dENkVQb2crakQ2UVBwUSttRDZjUHFBK3BENm9QcXcrc0Q2MFByZyt2RDdBUHNRK3lEN01QdEErMUQ3WVB0dys0RDdrUHVnKzdEN3dQdlErK0Q3OFB3QS9CRDhJUHd3L0VEOFVQeGcvSEQ4Z1B5US9LRDhzUHpBL05EODRQencvUUQ5RVAwZy9URDlRUDFRL1dEOWNQMkEvWkQ5b1Aydy9jRDkwUDNnL2ZEK0FQNFEvaUQrTVA1QS9sRCtZUDV3L29EK2tQNmcvckQrd1A3US91RCs4UDhBL3hEL0lQOHcvMEQvVVA5Zy8zRC9nUCtRLzZEL3NQL0EvOUQvNFAvdzhBRUFFUUFoQURFQVFRQlJBR0VBY1FDQkFKRUFvUUN4QU1FQTBRRGhBUEVCQVFFUkFTRUJNUUZCQVZFQllRRnhBWUVCa1FHaEFiRUJ3UUhSQWVFQjhRSUJBaEVDSVFJeEFrRUNVUUpoQW5FQ2dRS1JBcUVDc1FMQkF0RUM0UUx4QXdFREVRTWhBekVEUVFOUkEyRURjUU9CQTVFRG9RT3hBOEVEMFFQaEEvRUVBUVFSQkNFRU1RUkJCRkVFWVFSeEJJRUVrUVNoQkxFRXdRVFJCT0VFOFFVQkJSRUZJUVV4QlVFRlVRVmhCWEVGZ1FXUkJhRUZzUVhCQmRFRjRRWHhCZ0VHRVFZaEJqRUdRUVpSQm1FR2NRYUJCcEVHb1FheEF3UVJVRUFBQnlZWFkwTFdac0xXSjFiR0lBQUFKc0VHMFFiaEJ2RUhBUWNSQnlFSE1RZEJCMUVIWVFkeEI0RUhrUWVoQjdFSHdRZlJCK0VIOFFnQkNCRUlJUWd4Q0VFSVVRaGhDSEVJZ1FpUkNLRUlzUWpCQ05FSTRRanhDUUVKRVFraENURUpRUWxSQ1dFSmNRbUJDWkVKb1FteENjRUowUW5oQ2ZFS0FRb1JDaUVLTVFwQkNsRUtZUXB4Q29FS2tRcWhDckVLd1FyUkN1RUs4UXNCQ3hFTElRc3hDMEVMVVF0aEMzRUxnUXVSQzZFTHNRdkJDOUVMNFF2eERBRU1FUXdoRERFTVFReFJER0VNY1F5QkRKRU1vUXl4RE1FTTBRemhEUEVOQVEwUkRTRU5NUTFCRFZFTllRMXhEWUVOa1EyaERiRU53UTNSRGVFTjhRNEJEaEVPSVE0eERrRU9VUTVoRG5FT2dRNlJEcUVPc1E3QkR0RU80UTd4RHdFUEVROGhEekVQUVE5UkQyRVBjUStCRDVFUG9RK3hEOEVQMFEvaEQvRUFBUkFSRUNFUU1SQkJFRkVRWVJCeEVJRVFrUkNoRUxFUXdSRFJFT0VROFJFQkVSRVJJUkV4RVVFUlVSRmhFWEVSZ1JHUkVhRVJzUkhCRWRFUjRSSHhFZ0VTRVJJaEVqRVNRUkpSRW1FU2NSS0JFcEVTb1JLeEVzRVMwUkxoRXZFUUFTQVJJQ0VnTVNCQklGRWdZU0J4SUlFZ2tTQ2hJTEVnd1NEUklPRWc4U0VCSVJFaElTRXhJVUVoVVNGaElYRWhnU0dSSWFFaHNTSEJJZEVoNFNIeElnRWlFU0loSWpFaVFTSlJJbUVpY1NzaHV6RzdRYnRSdTJHN2NidUJ1NUc3b2J1eHU4RzcwYnZodS9HOEFid1J2Q0c4TWJ4QnZGRzhZYnh4dklHOGtieWh2TEc4d2J6UnZPRzg4YjBCdlJHOUliMHh2VUc5VWIxaHZYRzlnYjJSczhIRDBjUGh3L0hFQWNRUnhDSEVNY1JCeEZIRmdjV1J4YUhGc2NYQnhkSEY0Y1h4eGdIR0VjNEJ6aEhPSWM0eHprSE9VYzVoem5IT2djNlJ6cUhPc2M3Qnp0SE80Yzd4endIUEVjOGh6ekhQUWM5UnoySFBjYytCejVIUG9jK3h6OEhQMGMvaHovSEFBZEFSMENIUU1kQkIwRkhRWWRCeDBJSFFrZENoMExIUXdkRFIwT0hROGRFQjBSSFJJZEV4MFVIUlVkRmgwWEhSZ2RHUjBhSFJzZEhCMGRIUjRkSHgwZ0hTRWRJaDBqSFNRZEpSMG1IU2NkS0IwcEhTb2RLeDBzSFMwZExoMHZIVEFkTVIweUhUTWROQjAxSFRZZE54MDRIVGtkT2gwN0hUd2RQUjArSFQ4ZFFCMUJIVkFkVVIxU0hWTWRWQjFWSFZZZFZ4MVlIVmtkNkIzcEhlb2Q2eDNzSGUwZDdoM3ZIZkFkOFIzeUhmTWQ5QjMxSGZZZDl4MzRIZmtkK2gzN0hmd2QvUjMrSGY4ZEFCNEJIZ0llQXg0RUhnVWVCaDRISGdnZUNSNEtIZ3NlREI0TkhnNGVEeDRRSGhFZUVoNFRIaFFlRlI0V0hoY2VHQjRaSGhvZUd4NGNIaDBlSGg0ZkhpQWVJUjRpSGlNZUpCNGxIaVllSng0b0hpa2VLaDRySGl3ZUxSNHVIaThlTUI0eEhqSWVNeDQwSGpVZU5oNDNIamdlT1I0Nkhqc2VQQjQ5SGo0ZVB4NUFIa0VlUWg1REhrUWVSUjVHSGtjZVNCNUpIbHdlWFI1ZUhsOGVZQjVoSG1JZVl4NWtIbVVlTUVGMkFnQUFjbUYyTkMxbWJDMW1jbUZ0WlFBd0FWQVNVUkpTRWxNU1ZCSlZFbFlTVnhKWUVsa1NXaEpiRWx3U1hSSmVFbDhTWUJKaEVtSVNZeEprRW1VU1poSm5FbWdTYVJKcUVtc1NiQkp0RW00U2J4SndFbkVTY2hKekVuUVNkUkoyRW5jU2VCSjVFbm9TZXhKOEVuMFNmaEovRW9BU2dSS0NFb01TaEJLRkVvWVNoeEtJRW9rU2loS0xFb3dTalJLT0VvOFNrQktSRXBJU2t4S1VFcFVTbGhLWEVwZ1NtUkthRXBzU25CS2RFcDRTbnhLZ0VxRVNvaEtqRXFRU3BSS21FcWNTcUJLcEVxb1NxeEtzRXEwU3JoS3ZFckFTc1JLeUVyTVN0QksxRXJZU3R4SzRFcmtTdWhLN0Vyd1N2UksrRXI4U3dCTEJFc0lTd3hMRUVzVVN4aExIRXNnU3lSTEtFc3NTekJMTkVzNFN6eExRRXRFUzBoTFRFdFFTMVJMV0V0Y1MyQkxaRXRvUzJ4TGNFdDBTM2hMZkV1QVM0UkxpRXVNUzVCTGxFdVlTNXhMb0V1a1M2aExyRXV3UzdSTHVFdThTOEJMeEV2SVM4eEwwRXZVUzloTDNFdmdTK1JMNkV2c1MvQkw5RXY0Uy94SUFFd0VUQWhNREV3UVRCUk1HRXdjVENCTUpFd29UQ3hNTUV3MFREaE1QRXhBVEVSTVNFeE1URkJNVkV4WVRGeE1ZRXhrVEdoTWJFeHdUSFJNZUV4OFRJQk1oRXlJVEl4TWtFeVVUSmhNbkV5Z1RLUk1xRXlzVExCTXRFeTRUTHhNd0V6RVRNaE16RXpRVE5STTJFemNUT0JNNUV6b1RPeE04RXowVFBoTS9FMEFUUVJOQ0UwTVRSQk5GRTBZVFJ4TklFMGtUU2hOTEUwd1RUUk5PRTA4VFVCTlJFMUlUVXhOVUUxVVRWaE5YRTFnVFdSTmFFMXNUWEJOZEUxNFRYeE5nRTJFVFloTmpFMlFUWlJObUUyY1RhQk5wRTJvVGF4TnNFMjBUYmhOdkUzQVRjUk55RTNNVGRCTjFFM1lUZHhONEUza1RlaE43RTN3VGZSTitFMzhUTUVFdUF3QUFjbUYyTkMxbWJDMW5iR0Z6Y3dDTUFZQVRnUk9DRTRNVGhCT0ZFNFlUaHhPSUU0a1RpaE9MRTR3VGpST09FNDhUa0JPUkU1SVRreE9VRTVVVGxoT1hFNWdUbVJPYUU1c1RuQk9kRTU0VG54T2dFNkVUb2hPakU2UVRwUk9tRTZjVHFCT3BFNm9UcXhPc0U2MFRyaE92RTdBVHNST3lFN01UdEJPMUU3WVR0eE80RTdrVHVoTzdFN3dUdlJPK0U3OFR3QlBCRThJVHd4UEVFOFVUeGhQSEU4Z1R5UlBLRThzVHpCUE5FODRUenhQUUU5RVQwaFBURTlRVDFSUFdFOWNUMkJQWkU5b1QyeFBjRTkwVDNoUGZFK0FUNFJQaUUrTVQ1QlBsRStZVDV4UG9FK2tUNmhQckUrd1Q3UlB1RSs4VDhCUHhFL0lUOHhQMEUvVVQ5aFAzRS9nVCtSUDZFL3NUL0JQOUUvNFQveE1BRkFFVUFoUURGQVFVQlJRR0ZBY1VDQlFKRkFvVUN4UU1GQTBVRGhRUEZCQVVFUlFTRkJNVUZCUVZGQllVRnhRWUZCa1VHaFFiRkJ3VUhSUWVGQjhVSUJRaEZDSVVJeFFrRkNVVUpoUW5GQ2dVS1JRcUZDc1VMQlF0RkM0VUx4UXdGREVVTWhRekZEUVVOUlEyRkRjVU9CUTVGRG9VT3hROEZEMFVBaFVERlFRVkJSVUdGUWNWQ0JVSkZRb1ZDeFVNRlEwVkRoVVBGUkFWRVJVU0ZSTVZGQlVWRlJZVkZ4VVlGUmtWR2hVYkZSd1ZIUlVlRlI4VklCVWhGU0lWSXhVa0ZTVVZKaFVuRlNnVktSVXFGU3NWTEJVdEZTNFZMeFV3RlRFVk1oVXpGVFFWTlJVMkZUY1ZPQlU1RlRvVk94VThGVDBWUGhVL0ZVQVZRUlZDRlVNVlJCVkZGVVlWUnhWSUZVa1ZTaFZMRlV3VlRSVk9GVThWVUJWUkZWSVZVeFZVRlZVVlZoVlhGVmdWV1JWYUZWc1ZYQlZkRlY0Vlh4VmdGV0VWWWhWakZXUVZaUlZtRldjVmFCVnBGV29WYXhWc0ZXMFZiaFZ2RlhBVmNSVnlGWE1WZEJWMUZYWVZkeFY0RlhrVmVoVjdGWHdWZlJWK0ZYOFZnQldCRllJVmd4V0VGWVVWaGhXSEZZZ1ZpUldLRllzVmpCV05GWTRWanhXUUZaRVZraFdURlpRVmxSV1dGWmNWbUJXWkZab1ZteFdjRlowVm5oV2ZGYUFWb1JXaUZhTVZwQldsRmFZVnB4V29GYWtWcWhXckZhd1ZyUld1RmE4VnNCV3hGYklWc3hXMEZiVVZ0aFczRmJnVnVSVzZGYnNWdkJXOUZiNFZ2eFhBRmNFVndoWERGY1FWeFJYR0ZjY1Z5QlhKRmNvVnl4WE1GYzBWemhYUEZWQkJubmtBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQUNBQUFBQWdBQUFBTUFBQUFEQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFDQUFBQUFnQUFBQU1BQUFBREFBQUFBZ0FBQUFJQUFBQUdBQUFBQmdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQVlBQUFBR0FBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFGQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUdBQUFBQmdBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBR0FBQUFCZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBTUFBQUFEQUFBQUFRQUFBQUVBQUFBREFBQUFBd0FBQUFFQUFBQUJBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQWNBQUFBSEFBQUFBUUFBQUFFQUFBQUhBQUFBQlFBQUFBRUFBQUFCQUFBQUJRQUFBQVVBQUFBQkFBQUFBUUFBQUFVQUFBQUZBQUFBQVFBQUFBRUFBQUFGQUFBQUJRQUFBQUVBQUFBQkFBQUFCd0FBQUFjQUFBQUJBQUFBQVFBQUFBY0FBQUFEQUFBQUFRQUFBQUVBQUFBREFBQUFBd0FBQUFFQUFBQUJBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBUUFBQUFFQUFBQURBQUFBQXdBQUFBRUFBQUFCQUFBQUF3QUFBQU1BQUFBQkFBQUFBUUFBQUFNQUFBQURBQUFBQVFBQUFBRUFBQUFEQUFBQUF3QUFBQUVBQUFBQkFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBTUFBQUFEQUFBQUFRQUFBQUVBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBTUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBUUFBQUFFQUFBQURBQUFBQXdBQUFBRUFBQUFCQUFBQUF3QUFBQU1BQUFBQkFBQUFBUUFBQUFNQUFBQURBQUFBQVFBQUFBRUFBQUFEQUFBQUF3QUFBQUVBQUFBQkFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBTUFBQUFEQUFBQUFRQUFBQUVBQUFBREFBQUFBd0FBQUFFQUFBQUJBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBUUFBQUFFQUFBQURBQUFBQXdBQUFBRUFBQUFCQUFBQUF3QUFBQU1BQUFBQkFBQUFBUUFBQUFNQUFBQURBQUFBQVFBQUFBRUFBQUFEQUFBQUF3QUFBQUVBQUFBQkFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBTUFBQUFEQUFBQUFRQUFBQUVBQUFBREFBQUFBd0FBQUFFQUFBQUJBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUNBQUFBQWdBQUFBSUFBQUFEQUFBQUFRQUFBQU1BQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQUlBQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUJ3QUFBQWNBQUFBREFBQUFBd0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBR0FBQUFBZ0FBQUFZQUFBQUdBQUFBQkFBQUFBWUFBQUFFQUFBQUJBQUFBQVFBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQlFBQUFBVUFBQUFFQUFBQUJBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUNBQUFBQXdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUhBQUFBQndBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFRQUFBQUVBQUFBQlFBQUFBVUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUZBQUFBQlFBQUFBVUFBQUFGQUFBQUFRQUFBQVVBQUFBRkFBQUFCUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFFQUFBQUJBQUFBQVVBQUFBRkFBQUFCQUFBQUFRQUFBQUZBQUFBQkFBQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQlFBQUFBVUFBQUFCQUFBQUFRQUFBQVVBQUFBRkFBQUFBUUFBQUFVQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUF3QUFBQU1BQUFBQkFBQUFBUUFBQUFNQUFBQURBQUFBQVFBQUFBRUFBQUFEQUFBQUF3QUFBQUVBQUFBQkFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBa0FBQUFCQUFBQUNnQUFBQU1BQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQURBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBZ0FBQUFJQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFEQUFBQUF3QUFBQUlBQUFBQ0FBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQU1BQUFBREFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQVFBQUFBRUFBQUFEQUFBQUF3QUFBQUlBQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQWdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQURBQUFBQXdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBQkFBQUFBZ0FBQUFJQUFBQURBQUFBQXdBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUJBaXY4Q0FGUnZlVzkwWVY5U1FUVUFBRUY1L3dJQUVFRTR5UUFBeEJEbFVGWkFlRlNZUXR1TUJFSUFBQUFBVVhlWlFpZ21Ca0xsVUZaQWNuYVpRa0VjQmtJQUFBQUFFWEtZUW82VUJFTGxVRlpBRFg2WlFvVjNCa0lBQUFBQTdINlpRbXlCQmtKVUpMM0JUS2VTUXRiQWI4R2Y2YjNCNXU2V1FzRGpUc0VKRnNUQjVYU1ZRb2lyYzhFOWtyYkJUS2VTUWtTYlNNRmUzWkRCVEtlU1FrU2JTTUZiVlpIQmN6eUhRak5rT01FcTczdkJjenlIUWtPYlNNRWtPNlRCVEtlU1FqUmtPTUhsVUZaQTJweVpRaVRwQjBJQUFBQUF1cDJaUWd6ekIwSVkwWWZCVEtlU1F0bkFiOEdmMW1uQmN6eUhRdG5BYjhIbFVGWkFSRHFYUXR1TUJFSUFBQUFBL0dlWVFvNlVCRUxsVUZaQVpFcVlRdHVNQkVJQUFBQUEzRmVYUW82VUJFTGxVRlpBWG15WlFrRWNCa0xsVUZaQVBWeVlRa0VjQmtMbFVGWkErWE9aUW9WM0JrTGxVRlpBMkdPWVFvVjNCa0l1WTQ3QlRLZVNRamh6aThITCtuYkJjenlIUWpkemk4Rkh1cURCVEtlU1FzT09rOEYrMUkzQmN6eUhRc0tPazhGSE1xSEJjenlIUWpkemk4RVFHTFRCVEtlU1FqaHppOEhsVUZaQXg1S1pRaVRwQjBMbFVGWkFwb0tZUWlUcEIwSUFBQUFBcFpPWlFnenpCMElBQUFBQWhZT1lRZ3p6QjBLTFBxckJjenlIUXRiQWI4RnlyS1BCY3p5SFFrT2JTTUVydklUQmUwWjFRak5rT01IS3ZHTEJlMFoxUWtPYlNNRTlwRkRCZTBaMVF0bkFiOEZweUYzQmUwWjFRamR6aThGTk80SEJlMFoxUXNLT2s4RmdWOEZCNHUralFqeElvMEdlZU01Qkd4ZWtRb1RpbUVGVVM4TkJ1RnFsUWhFMG1VR05xc3hCNmNxaVFwdjNva0ZyYUw5QnVseWlRdTZlcmtGM0RzdEJGUzZoUXFMdXJrRnBxcmxCVjJ5YlFxLzUyMEY1dDhKQm1abWFRZ09vMjBFZ1k4VkJkTjJnUXFMdXJrRTRGc0pCVUhXYVFpTzQyMEhpYXJ4Qnd5NlpRa1ZKM0VGVWZjcEJCaWFoUXFMdXJrRTIvOFpCU0hxaVFwdjNva0ZwR2N4QjJjS2lRcHYzb2tIcEhjbEJEeEdqUW9UaW1FR043ODFCNXZ5alFvVGltRUVESThOQmRibWtRaW5CajBGZlVjaEJOeHFsUWluQmowRVdMY2hCR0l1alFpbkJqMEZNUjhOQmxFaW1RaW5CajBGblZjaEJqMGFsUWluQmowRlVTOE5CN0hTbVFpbkJqMEZsMHE1QldhdWxRaW5CajBGbDBxNUJMeGFuUWluQmowRmwwcTVCZ0Q2blFpbkJqMEVpbTVWQjdIU21RaW5CajBFaW01VkJ3dCtuUWluQmowRWltNVZCRXdpb1FpbkJqMEZRT0d4QkJnS25RaW5CajBGUU9HeEIzR3lvUWluQmowRlFPR3hCTHBXb1FpbkJqMEd4K0JoQklHdW5RaW5CajBHeCtCaEI5dFdvUWluQmowR3grQmhCUi82b1FpbkJqMEVFWHQxQWNKT25RaW5CajBFRVh0MUFSdjZvUWluQmowRUVYdDFBbHlhcFFpbkJqMEVBQUFBQVBwQ25RaW5CajBFQUFBQUFFL3VvUWluQmowRUFBQUFBWlNPcFFpbkJqMEZVUzhOQnRGaW1RZzJ6a0VGbDBxNUJSeUtuUWcyemtFRmwwcTVCU2lTbVFoRTBtVUVpbTVWQjIrdW5RZzJ6a0VFaW01VkIzdTJtUWhFMG1VRlFPR3hCOVhpb1FnMnprRUZRT0d4QitIcW5RaEUwbVVHeCtCaEJEK0tvUWcyemtFR3grQmhCRXVTblFoRTBtVUVFWHQxQVh3cXBRZzJ6a0VFRVh0MUFZZ3lvUWhFMG1VRUFBQUFBTFFlcFFnMnprRUVBQUFBQU1BbW9RaEUwbVVGRjBzaEJPQ2lsUXVXcWtFSHZ3TWhCci8ya1F1V3FrRUhxSk1oQjVINmpRdVdxa0VIMGpaOUJxWGlYUXZYdTlrRXhQYkpCL3krWFFnMXI5VUgwalo5QitxQ1hRdlh1OWtFeFBiSkJyZ2VYUWcxcjlVRnZpb2hCcHVtWFFzT1IrRUZ2aW9oQjlSR1lRc09SK0VFM2wxZEJ2RGlZUW01QitrRTNsMWRCREdHWVFtNUIra0hDbkF0QnBIT1lRaG5nKzBIQ25BdEI5SnVZUWhuZyswSDVDTXBBUElxWVFzcHUvRUg1Q01wQWpiS1lRc3B1L0VFQUFBQUFjb2lZUXBRTC9VRUFBQUFBd3JDWVFwUUwvVUgwalo5QmRWNldRdlh1OWtFeFBiSkJlTzJWUWcxcjlVRnZpb2hCY00rV1FzT1IrRUUzbDFkQmhoNlhRbTVCK2tIQ25BdEJiMW1YUWhuZyswSDVDTXBBQ0hDWFFzcHUvRUVBQUFBQVBXNlhRcFFML1VIeFk3cEIydDJXUXYzUTlFSGozTHBCS3dhWFF2M1E5RUZ6STdaQkJIT1ZRdjNROUVFQUFBQUFXUFNZUWtwayswRzVkTXBBTS9hWVFsYlAra0U0NXd0QjB0NllRc1ZIK2tFeUNsaEIzYUdZUXRhOStFRkIwNGhCQjFDWVFzSWo5MEVONDU5Qkg5dVhRdWFWOVVGQW5MSkJOMmFYUW1JbDlFRnNRYnRCOFRPWFF2R084MEYxeHJwQjFBdVhRcitQODBIU2M3WkJ6cUtWUWdDWDgwRnFKcUZCRUxpWVFxaDI4RUY4QmJSQlBUU1lRdGxQNzBINTU0bEI0enVaUXZHMDhVRWh2MWxCSzVpWlFnSDk4a0VxQWcxQjV0eVpRaWc0OUVFdkRzeEFRL2VaUXB1azlFRUFBQUFBTGZXWlFzVWI5VUZ2djd4QjMrR1hRaWZIN2tIUFBMeEJocnFYUWdiTDdrRTdwYmRCWmxpV1F0dnQ3a0dlZU03Qkd4ZWtRb1RpbUVGZ1Y4SEI0dStqUWp4SW8wRlVTOFBCdUZxbFFoRTBtVUdOcXN6QjZjcWlRcHYzb2tGcmFML0J1bHlpUXU2ZXJrRjNEc3ZCRlM2aFFxTHVya0ZwcXJuQlYyeWJRcS81MjBGNXQ4TEJtWm1hUWdPbzIwRTRGc0xCVUhXYVFpTzQyMEVnWThYQmROMmdRcUx1cmtIaWFyekJ3eTZaUWtWSjNFRlVmY3JCQmlhaFFxTHVya0UyLzhiQlNIcWlRcHYzb2tGcEdjekIyY0tpUXB2M29rSHBIY25CRHhHalFvVGltRUdONzgzQjV2eWpRb1RpbUVGZlVjakJOeHFsUWluQmowRURJOFBCZGJta1FpbkJqMEVXTGNqQkdJdWpRaW5CajBGTVI4UEJsRWltUWluQmowRm5WY2pCajBhbFFpbkJqMEZVUzhQQjdIU21RaW5CajBGbDBxN0JXYXVsUWluQmowRmwwcTdCTHhhblFpbkJqMEZsMHE3QmdENm5RaW5CajBFaW01WEI3SFNtUWluQmowRWltNVhCd3QrblFpbkJqMEVpbTVYQkV3aW9RaW5CajBGUU9HekJCZ0tuUWluQmowRlFPR3pCM0d5b1FpbkJqMEZRT0d6QkxwV29RaW5CajBHeCtCakJJR3VuUWluQmowR3grQmpCOXRXb1FpbkJqMEd4K0JqQlIvNm9RaW5CajBFRVh0M0FjSk9uUWluQmowRUVYdDNBUnY2b1FpbkJqMEVFWHQzQWx5YXBRaW5CajBGVVM4UEJ0RmltUWcyemtFRmwwcTdCUnlLblFnMnprRUZsMHE3QlNpU21RaEUwbVVFaW01WEIyK3VuUWcyemtFRWltNVhCM3UybVFoRTBtVUZRT0d6QjlYaW9RZzJ6a0VGUU9HekIrSHFuUWhFMG1VR3grQmpCRCtLb1FnMnprRUd4K0JqQkV1U25RaEUwbVVFRVh0M0FYd3FwUWcyemtFRUVYdDNBWWd5b1FoRTBtVUZGMHNqQk9DaWxRdVdxa0VIdndNakJyLzJrUXVXcWtFSHFKTWpCNUg2alF1V3FrRUV4UGJMQi95K1hRZzFyOVVIMGpaL0JxWGlYUXZYdTlrSDBqWi9CK3FDWFF2WHU5a0V4UGJMQnJnZVhRZzFyOVVGdmlvakJwdW1YUXNPUitFRnZpb2pCOVJHWVFzT1IrRUUzbDFmQnZEaVlRbTVCK2tFM2wxZkJER0dZUW01QitrSENuQXZCcEhPWVFobmcrMEhDbkF2QjlKdVlRaG5nKzBINUNNckFQSXFZUXNwdS9FSDVDTXJBamJLWVFzcHUvRUgwalovQmRWNldRdlh1OWtFeFBiTEJlTzJWUWcxcjlVRnZpb2pCY00rV1FzT1IrRUUzbDFmQmhoNlhRbTVCK2tIQ25BdkJiMW1YUWhuZyswSDVDTXJBQ0hDWFFzcHUvRUh4WTdyQjJ0MldRdjNROUVIajNMckJLd2FYUXYzUTlFRnpJN2JCQkhPVlF2M1E5RUc1ZE1yQU0vYVlRbGJQK2tFNDV3dkIwdDZZUXNWSCtrRXlDbGpCM2FHWVF0YTkrRUZCMDRqQkIxQ1lRc0lqOTBFTjQ1L0JIOXVYUXVhVjlVRkFuTExCTjJhWFFtSWw5RUZzUWJ2QjhUT1hRdkdPODBGMXhyckIxQXVYUXIrUDgwSFNjN2JCenFLVlFnQ1g4MEZxSnFIQkVMaVlRcWgyOEVGOEJiVEJQVFNZUXRsUDcwSDU1NG5CNHp1WlF2RzA4VUVodjFuQks1aVpRZ0g5OGtFcUFnM0I1dHlaUWlnNDlFRXZEc3pBUS9lWlFwdWs5RUZ2djd6QjMrR1hRaWZIN2tIUFBMekJocnFYUWdiTDdrRTdwYmZCWmxpV1F0dnQ3a0VjTWRaQmU3dXdRdkxTOU1BY01kWkJZSzJ4UXJzOXVzQWNNZFpCRDRXeFFyczl1c0FjTWRaQnpPT3dRdkxTOU1BY01kWkJQNTJ3UXRwRi9zQWNNZFpCa2NXd1F0cEYvc0NxZDlGQjN1dXVRcjFDM2tBY01kWkJFb2V1UWlQMjEwQWNNZFpCM3V1dVFpUDIxMENxZDlGQmpNT3VRcjFDM2tCVVM4TkJScUdsUWluQmowSHJsOGxCS3hTbFFpbkJqMEZuVmNoQmZUeWxRaW5CajBGVVM4TkI5WGlsUWluQmowR0U1TTlCZHppdlFpUDIxMEFUSzh0QmR6aXZRcjFDM2tDRTVNOUJsMGl4UXZMUzlNQ0U1TTlCS2hLeVFyczl1c0NFNU05Qld5cXhRdHBGL3NDRTVNOUJDZ0t4UXRwRi9zQmwwcTVCcE0rbVFpbkJqMEZsMHE1QlVxZW1RaW5CajBHVmE3dEJ3ZDJ2UWlQMjEwQWpzclpCd2QydlFyMUMza0NWYTd0QktoS3lRdkxTOU1DVmE3dEJ2dHV5UXJzOXVzQ1ZhN3RCN3ZPeFF0cEYvc0NWYTd0Qm5jdXhRdHBGL3NBaW01VkJOcG1uUWluQmowRWltNVZCNVhDblFpbkJqMEVpbTVWQlZhZXdRaVAyMTBBaW01VkJWYWV3UXIxQzNrQWltNVZCdnR1eVF2TFM5TUFpbTVWQlVhV3pRcnc5dXNBaW01VkJnYjJ5UXRwRi9zQWltNVZCTVpXeVF0cEYvc0JRT0d4QkFmNm5RaW5CajBGUU9HeEJzTlduUWluQmowRlFPR3hCSHd5eFFpUDIxMEJRT0d4Qkh3eXhRcjFDM2tCUU9HeEJpRUN6UXZMUzlNQlFPR3hCR3dxMFFydzl1c0JRT0d4QlRDS3pRdHBGL3NCUU9HeEIrL215UXRwRi9zQWNNZFpCR0JHeVFpVUJmNzBjTWRaQktoS3lRaE9raWI0Y01kWkJlenF5UWhPa2liNGNNZFpCeCtpeFFpTUJmNzJFNU05QlJwK3lRaFNraWI2RTVNOUI0bld5UWlnQmY3MlZhN3RCMldpelFoU2tpYjZWYTd0QmRUK3pRaTRCZjcwaW01VkJiREswUWhXa2liNGltNVZCQ1FtMFFqUUJmNzFRT0d4Qk41ZTBRaGFraWI1UU9HeEIwMjIwUWpjQmY3MGNNZFpCdVRHeVFvb0tIYjhjTWRaQmFBbXlRb29LSGIrRTVNOUJnNWF5UW9zS0hiK1ZhN3RCRjJDelFvc0tIYjhpbTVWQnFTbTBRb3NLSGI5UU9HeEJkSTYwUW93S0hiK0hKdFJCYnpTdlFqME1UMENISnRSQnVRMnZRbzR3VWtDSEp0UkI5QkN2UWowTVQwQ0hKdFJCTXpHdlFvNHdVa0F4K3MxQklJMnZRajBNVDBBeCtzMUI1b212UW80d1VrQVU2cmxCZ3o2d1FqME1UMEFVNnJsQlNEdXdRbzR3VWtBNzI1UkI1Kyt3UWowTVQwQTcyNVJCcSt5d1FvNHdVa0NKTzJ4Qm1FaXhRajBNVDBDSk8yeEJYa1d4UW80d1VrQWNNZFpCdVZ5dlFoLzRWVUFjTWRaQjB6aXZRbzR3VWtBY01kWkJKR0d2UW80d1VrQWNNZFpCYURTdlFoLzRWVUFjTWRaQnROZXVRZ3B6bGtBY01kWkJCUUN2UWdwemxrQ0U1TTlCN3NXdlFvNHdVa0NFNU05Qmc4R3ZRaC80VlVDRTVNOUIwR1N2UWdwemxrQ1ZhN3RCZ1krd1FvNHdVa0NWYTd0QkZvdXdRaC80VlVDVmE3dEJZeTZ3UWdwemxrQWltNVZCRkZteFFvNHdVa0FpbTVWQnFsU3hRaC80VlVBaW01VkI5dmV3UWdwemxrQlFPR3hCM3IyeFFvNHdVa0JRT0d4QmM3bXhRaC80VlVCUU9HeEJ3Rnl4UWdwemxrQWNNZFpCV3Bld1F0UC94ejhjTWRaQnJMK3dRdFAveHo4Y01kWkJmanl2UWowTVQwQWNNZFpCbzNLdlFtK2hTa0FjTWRaQjBHU3ZRajBNVDBBY01kWkJVa3F2UW0raFNrQ0U1TTlCZFNTeFF0TC94eitFNU05QmJkZXZRbStoU2tDRTVNOUJtc212UWowTVQwQ1ZhN3RCQ2U2eFF0TC94eitWYTd0QkFhR3dRbStoU2tDVmE3dEJMSk93UWowTVQwQWltNVZCbmJleVF0TC94ejhpbTVWQmxHcXhRbStoU2tBaW01VkJ3Rnl4UWowTVQwQlFPR3hCWmh5elF0TC94ejlRT0d4QlhzK3hRbStoU2tCUU9HeEJpc0d4UWowTVQwQ0hKdFJCWTBtdFFvNHdVa0FjTWRaQmVUcXRRajBNVDBDSEp0UkJua3l0UWowTVQwQWNNZFpCelRhdFFvNHdVa0Fqc3JaQitIaXZRdDdRWmtIQ0FzdEJQWnV1UWhMclowRVRLOHRCWmErdVF0N1Faa0hTaWJaQjBXU3ZRaExyWjBIR0JNaEJQaHl0UXYzY2ZFSFhpN05CMHVXdFF2M2NmRUVpbTVWQmpFS3dRdDdRWmtFaW01VkJaQzZ3UWhMclowRWltNVZCWmErdVF2M2NmRUZRT0d4QlZxZXdRdDdRWmtGUU9HeEJMcE93UWhMclowRlFPR3hCTUJTdlF2M2NmRUZhVDlGQmN6YXVRaExyWjBHcWQ5RkJtMHF1UXQ3UVprRmRVYzVCZExlc1F2M2NmRUZhVDlGQklnNnVRaExyWjBHcWQ5RkJTU0t1UXQ3UVprRmRVYzVCSTQrc1F2M2NmRUdxZDlGQjN1dXVRckU2NmtBVEs4dEJkeml2UXJFNjZrQWpzclpCd2QydlFyRTY2a0FpbTVWQlNxS3dRckU2NmtCUU9HeEJGUWV4UXJFNjZrQ3FkOUZCZ3I2dVFyRTY2a0NWYTd0QndkMnZRdmxpemtDRTVNOUJkeml2UXZsaXprQWNNZFpCM3V1dVFwV3YxRUFjTWRaQkc0dXVRcFd2MUVBaW01VkJYYXV3UXZsaXprQlFPR3hCS0JDeFF2bGl6a0F5TzQzQndibTBRb3dLSGIvcHFtekI5MVMwUWtNUmE4QUdLWEhCOTFTMFFyOEpmY0NrMlluQndibTBRaSs5L0w2WnpEbkJMZkN6UW55Wnc4RGErVHpCTGZDelFyU2F6c0RLUW05QUxmQ3pRbnladzhCQVd1WkE5MVMwUXI4SmZjRE45M3RBTGZDelFyU2F6c0FFWHQxQTkxUzBRa01SYThEN054dEJ3Ym0wUXNZeU1iOWh0eFZCd2JtMFFpKzkvTDRjTWRiQllLMnhRcnM5dXNBY01kYkJlN3V3UXZMUzlNQWNNZGJCRDRXeFFyczl1c0FjTWRiQnpPT3dRdkxTOU1BY01kYkJQNTJ3UXRwRi9zQWNNZGJCa2NXd1F0cEYvc0FjTWRiQkVvZXVRaVAyMTBDcWQ5SEIzZXV1UXIxQzNrQWNNZGJCWTYrdVFpUDIxMENxZDlIQmpNT3VRcjFDM2tCblZjakJmRHlsUWluQmowRlVTOFBCaVVLbVFpbkJqMEZuVmNqQnpHU2xRaW5CajBGVVM4UEJPQnFtUWluQmowR0U1TS9CTHhTdlFpUDIxMEFUSzh2QmdEeXZRcjFDM2tDRTVNL0JsMGl4UXZMUzlNQ0U1TS9CS2hLeVFyczl1c0NFNU0vQld5cXhRdHBGL3NDRTVNL0JDZ0t4UXRwRi9zQmwwcTdCYlRTblFpbkJqMEZsMHE3QkhBeW5RaW5CajBFanNyYkJFZ2F3UWlQMjEwQWpzcmJCd2QydlFyMUMza0Fqc3JiQmV6cXlRdkxTOU1BanNyYkJEd1N6UXJzOXVzQWpzcmJCUUJ5eVF0cEYvc0Fqc3JiQjd2T3hRdHBGL3NBY01kYkJLaEt5UWhPa2liNGNNZGJCR0JHeVFpVUJmNzBjTWRiQmV6cXlRaE9raWI0Y01kYkJ4K2l4UWlNQmY3MkU1TS9CUnAreVFoU2tpYjZFNU0vQjRuV3lRaWdCZjcwanNyYkJLcEd6UWhXa2liNGpzcmJCeDJlelFpOEJmNzBjTWRiQnVUR3lRb29LSGI4Y01kYkJhQW15UW9vS0hiK0U1TS9CZzVheVFvc0tIYjhqc3JiQmFJaXpRb3NLSGIrSEp0VEJ1UTJ2UW80d1VrQ0hKdFRCYnpTdlFqME1UMENISnRUQjlCQ3ZRajBNVDBDSEp0VEJNekd2UW80d1VrQXgrczNCSUkydlFqME1UMEF4K3MzQjVvbXZRbzR3VWtESXc3YkIxV2F3UWowTVQwREl3N2JCbW1Pd1FvNHdVa0FjTWRiQjB6aXZRbzR3VWtBY01kYkJ1Vnl2UWgvNFZVQWNNZGJCSkdHdlFvNHdVa0FjTWRiQmFEU3ZRaC80VlVBY01kYkJ0TmV1UWdwemxrQWNNZGJCQlFDdlFncHpsa0NFNU0vQjdzV3ZRbzR3VWtDRTVNL0JnOEd2UWgvNFZVQ0U1TS9CMEdTdlFncHpsa0Fqc3JiQjByZXdRbzR3VWtBanNyYkJaN093UWgvNFZVQWpzcmJCdEZhd1FncHpsa0FjTWRiQlVrcXZRbStoU2tBY01kYkJvM0t2UW0raFNrQWNNZGJCZmp5dlFqME1UMEFjTWRiQjBHU3ZRajBNVDBDRTVNL0JiZGV2UW0raFNrQ0U1TS9CbXNtdlFqME1UMEFqc3JiQlVzbXdRbStoU2tBanNyYkJmcnV3UWowTVQwQWNNZGJCZVRxdFFqME1UMENISnRUQlkwbXRRbzR3VWtDSEp0VEJua3l0UWowTVQwQWNNZGJCelRhdFFvNHdVa0RDQXN2QlBadXVRaExyWjBFanNyYkIrSGl2UXQ3UVprRVRLOHZCWmErdVF0N1Faa0hTaWJiQjBXU3ZRaExyWjBIR0JNakJQaHl0UXYzY2ZFSFhpN1BCMHVXdFF2M2NmRUZhVDlIQmN6YXVRaExyWjBHcWQ5SEJtMHF1UXQ3UVprRmRVYzdCZExlc1F2M2NmRUZhVDlIQklnNnVRaExyWjBHcWQ5SEJTU0t1UXQ3UVprRmRVYzdCSTQrc1F2M2NmRUdxZDlIQjB1YXVRckU2NmtBVEs4dkJkRGV2UXJFNjZrQWpzcmJCdDlpdlFyRTY2a0NxZDlIQmdyNnVRckU2NmtBanNyYkJHd3F3UXBXdjFFQ0U1TS9CTmhpdlFwV3YxRUFjTWRiQmJMT3VRcFd2MUVBY01kYkJHNHV1UXBXdjFFREZlL3BBck1helFpTHMrTUE3TEZaQkVHT3pRc0U0LzhERmUvcEFXNTZ6UXNFNC84QTdMRlpCWW91elFpTHMrTUJkZGVWQUxmQ3pRclNhenNETjkzdEFMZkN6UWlMcytNQTdMRlpCY0JLelFzRTQvOERGZS9wQXVrMnpRc0U0LzhBN0xGWkJMZkN6UXJTYXpzQlFPR3hCeVRXMFFtNUNnOEFpbTVWQi90Q3pRbTFDZzhDVmE3dEJhd2V6UW0xQ2c4Q0U1TTlCMXoyeVFtMUNnOEFjTWRaQkRkbXhRbTFDZzhBY01kWkJ2TEN4UW0xQ2c4REtyVmhCOTFTMFFyOEpmY0JMRkZsQndibTBRcWtlSjcrcmZRbEJKcm12UWtCK2ZVRVd2aUpCejJ5eFF0N1Faa0ZNMEJwQk9qU3hRdDdRWmtFT2F4RkJCQkd3UWtCK2ZVSGZxaVJCZEpPeFF0TkxaRUZHS2g5QmRKT3hRcEVlWVVIck0wbEI0TW13UXROTFpFRWpSMGRCUEtPd1F0N1Faa0VhOURWQklCK3ZRa0IrZlVHcmZRbEJoV2l2UWtCK2ZVRk0wQnBCbWVPd1F0N1Faa0ZHS2g5QjAwS3hRcEVlWVVGaHR4VkJ6MEMwUWkrOS9MNEVYdDFBQk55elFrTVJhOERLUW05QU9uZXpRbnladzhDNUYrVkF6RUNxUWluQmowRi9HOXhBYlpHcVFpbkJqMEYvRzl4QXpFQ3FRaW5CajBHNUYrVkFiWkdxUWluQmowR3grQmhCUi82b1FpbkJqMEd4K0JoQnBxMm9RaW5CajBIM1AwSkJ3Ym0wUXRMV0tyOU5UeU5COTFTMFFyOEpmY0JYbnpaQmRKT3hRa0tGMzBCV0x6eEJkSk94UXFuRUFFSGErVHhCZEpPeFFrS0YzMEFQMVRWQmRKT3hRcW5FQUVFUDFUVkIwMEt4UXFyRUFFRlhuelpCMDBLeFFrS0YzMEFxSkdKQmdScXhRa0tGMzBEbSttRkJweGl4UW5nZTdFQktRU1ZCSTkyelFqWk80ajZaY2g5QmVlR3pRcW03L3o2WmNoOUJXSE96UXFtNy96NWNEVWRCS0NhMFFxY2o4VDI5SGxsQllsKzBRdHA5TXIydFVDMUI5TnF5UW40LzFEK01MU2hCbU1LeVFtK002RC9hUUM1QmRKT3hRdlJiVFVEdll6UkJkSk94UWlMU1MwRGFRQzVCMDBLeFF2UmJUVUNNTFNoQnptS3lRbStNNkQrakRFdEJoSnF6UW1CdFJUOFBKbGxCbnUrelFzbFZ4RDRjSTE1QmtlYXlRb3JxM1QrK1ZGbEJ4YnV4UWlMU1MwQUh5elJCZEpPeFFxTTZWMEFDZ2k1QmRKT3hRcGkxVkVCWW1DNUJkSk94UXFNNlYwQkR0RFJCZEpPeFFwaTFWRUJZbUM1QjAwS3hRcU02VjBBQ2dpNUIwMEt4UXBpMVZFQ0FZQzVCZEpPeFFncnVVRUFha2pSQmRKT3hRZ3J1VUVCN3pqcEJiZjJ3UXBpMVZFRGZ6alZCYmYyd1FncnVVRUJYNlRWQmJmMndRcGkxVkVCL3N6cEJiZjJ3UWdydVVFRGZ6alZCNjd5d1FncnVVRUJYNlRWQjY3eXdRcGkxVkVDQVlDNUIwMEt4UWdydVVFQjNtVGxCZEpPeFFsM1puVURmYXpOQmRKT3hRaVFjbjBEZmF6TkIwMEt4UWlRY24wQkJEVFZCZEpPeFFvM3F2MEJ5Zmp0QmRKT3hRdm14d2tCQkRUVkIwMEt4UW8zcXYwQ1VSVHhCZEpPeFFuaVEwRUQzNFRWQmRKT3hRaXBnejBEMzRUVkIwMEt4UWlwZ3owQ0l2bGxCR2JheFFxTTZWMENNR2w1Qk9tT3hRakptbGtBc2RHRkI1Q2F4UXZZUjAwQXR4V0ZCTVNHeFF2dk0yRUFmRjJCQnl4NnhRcDB3N1VCMFNHQkJqaUN4UWtLRjMwQXk1VjlCNkNheFFvNWoyRUJKamw5QlVTeXhRbHhBMGtCTFIxeEJwV1d4UW8zRmxrQ081VmRCWXJheFFxTTZWMEFwcDFsQldyZXhRcGkxVkVBNHpsZEJrN2V4UXBpMVZFQ0tRVmxCNWZtd1FwaTFWRURKdTFkQkV2cXdRcGkxVkVEWkpWbEJ0aU94UWdydVVFQWhvRmRCenlPeFFncnVVRUFlaEZsQk83bXhRZ3J1VUVBM3ExZEJYTG14UWdydVVFRG1lMWRCeGJ1eFFpTFNTMERJYjBsQjhaQ3pRdDNIVUQrQlBFVkJnU0swUXRJckNUNWVURUJCd2JtMFFqZ29LNzh4NXlCQjkxUzBRcjhKZmNEalNPQkFMZkN6UXJTYXpzQjdjMFZCVDYyd1F0N1Faa0ZGWUVkQjlOT3dRdE5MWkVGeklEUkJPQ3V2UWtCK2ZVSHFGQmRCdzd1b1FpbkJqMEhxRkJkQll3eXBRaW5CajBIK0hxSEJjYld2UWhMclowRlJSNkhCbXNtdlF0N1Faa0V6dUpuQnhGNnVRdjNjZkVFZ0xZekJBUDZuUWluQmowRWdMWXpCVUNhb1FpbkJqMEhwcW16QkJOeXpRa01SYThDazJZbkJ6MEMwUWkrOS9MNlp6RG5CT25lelFueVp3OENXOEhUQk9IZXBRa3JJajBIcHFtekJseWFwUW9yQ2owSHBxbXpCT0hlcFFvckNqMEdNZkhYQmx5YXBRb3JDajBGMTNJM0JkSk94UXQ3UVprRXo2WUhCVng2d1FrQitmVUdrMlluQmRKT3hRcWNvWmtHK0hJYkJOU213UWtCK2ZVR2syWW5CMDBLeFFxY29aa0V6NllIQnRjMnZRa0IrZlVGSFJvekJkSk94UWxYeVcwRVFaWTdCZEpPeFFueHRaRUZIUm96QjAwS3hRbFh5VzBHdVJIZkJMZXFwUWl3VWprSFZoNDNCV0ttb1FySUZqa0ZYUzYvQmM3ZW5RcklGamtGSHhNUEJqOFdtUXJJRmprRmF6c2pCMCtlbFFySUZqa0ZhenNqQmdyK2xRcklGamtHcSsyN0JHT21wUXY4T2prR3ErMjdCZDVpcFF2OE9qa0VkSk90QTlnR3JRc0VOamtGNC9CbEJ3WUNwUXNFTmprR2ozaHRCMlhLcFFzRU5qa0ZRT0d4QkI0R29RcklGamtFaW01VkJQUnlvUXJJRmprRlhTNjlCcVZLblFySUZqa0ZIeE1OQlRDU21RcklGamtGYXpzaEJncitsUXJJRmprSGRFTXBCTVplbFFySUZqa0VJZU9GQUx2bXFRc0VOamtFSWVPRkFqYWlxUXNFTmprRTFxM1hCTGZDelFzRTQvOERhK1R6QkxmQ3pRaUxzK01EYStUekJMZkN6UXNFNC84QTFxM1hCTGZDelFpTHMrTURnZXAzQm1TYXpRc0U0LzhEZ2VwM0JtU2F6UWlMcytNRGdlcDNCaTUrelFqcDl3Y0ExcTNYQkxmQ3pRaytIeHNBMXEzWEJpNSt6UXNFNC84RGdlcDNCK05XeVFzRTQvOERhK1R6Qmk1K3pRc0U0LzhCSExoZkJ3VHF6UWlMcytNQkhMaGZCWW91elFzRTQvOEJITGhmQllvdXpRaUxzK01CSExoZkJ3VHF6UXNFNC84QkhMaGZCd1RxelFrUHE3Y0JITGhmQllvdXpRa1BxN2NCSExoZkJZb3V6UWxCSDRNQkhMaGZCY0JLelFsQkg0TUNmVFpyQmRKT3hRdWhXNkVDRFNaM0JkSk94UWpnQTNVRGdlcDNCZEpPeFF1aFc2RUJDSEpyQmRKT3hRamdBM1VDZlRackIwMEt4UXVoVzZFQkNISnJCMDBLeFFqZ0EzVUFubks3QjdtR3dRamdBM1VDRHphN0I3bEN3UXVoVzZFQlJCcHJCZEpPeFFpUDIxMENUTTUzQmRKT3hRaVAyMTBCUkJwckIwMEt4UWlQMjEwQTJocTdCZkdtd1FpUDIxMEN6QjUzQmRKT3hRdmpoelVCeTJwbkJkSk94UXZqaHpVQnBDNXpCZEpPeFF2L3RrMEFvM3BqQmRKT3hRdi90azBCeTJwbkIwMEt4UXZqaHpVQW8zcGpCMDBLeFF2L3RrMEJWV3E3Qm1IaXdRdmpoelVBTVhxM0JmYyt3UXYvdGswRDFRWmJCZEpPeFFua21UVURyTDVuQmRKT3hRZzNJUmtEcFg1bkJkSk94UW5rbVRVQmdIcGJCZEpPeFF1QlJTRUQxUVpiQjAwS3hRbmttVFVCZ0hwYkIwMEt4UXVCUlNFQ01zcXJCbFJXeFFua21UVUNQZ3FyQmdScXhRZzNJUmtCRnRwbkIvZVN3UW5rbVRVQzVZNXpCL2VTd1FvNHdVa0MyMUpuQi9lU3dRbzR3VWtDWFJKekIvZVN3UW5rbVRVQkZ0cG5CUzZXd1Fua21UVUMyMUpuQlM2V3dRbzR3VWtEK2VLckJqNEd3UW5rbVRVQWhtS3JCZTM2d1FvNHdVa0FWWjViQmRKT3hRbzR3VWtEV3ZwbkJkSk94UXEyL1dVRERucGJCZEpPeFFxMi9XVURoaFpuQmRKT3hRbzR3VWtERG5wYkIwMEt4UXEyL1dVQVZaNWJCMDBLeFFvNHdVa0I2RWF2QjJndXhRcTIvV1VDRzJLckJzUkd4UW80d1VrRERmNTNCYlRLMFFoV2tpYjdEZjUzQnF5bTBRb3NLSGIvRGY1M0JDZ20wUWpRQmY3M0dUSTdCSFdHMFF1bWNqTDUxOG9yQlhJYTBRbTE3aHI1MThvckIvQSswUW14N2hyNmY5WS9CK1FxMFFqMUpCajZ6b296QkdDeTBRZ3R4RWo2em9vekJQTHF6UWd4eEVqNW5DSVRCOTFTMFFxRW9Xc0JSZlozQnhQaXpRcUVvV3NCdDQ0bkJJWDIwUXZhSUJNQjlmcDNCTEJDMFF2YUlCTUFqc3JiQk8wYXpRZ3JmVGNBanNyYkI1Mld6UXM5Qi9MK0U1TS9CVjFTeVFncmZUY0NFNU0vQkEzU3lRczlCL0w4Y01kYkJqTyt4UWdyZlRjQWNNZGJCT0EreVFzOUIvTDhjTWRiQk84ZXhRZ3JmVGNBY01kYkI1K2F4UXM5Qi9MOXN4ZUkvWW91elFpTHMrTUJzeGVJL2NCS3pRc0U0LzhCc3hlSS9jQkt6UWlMcytNQnN4ZUkvRUdPelFzRTQvOEJzeGVJL1lvdXpRazFPNjhCc3hlSS9jQkt6UXFteDY4QnN4ZUkvY0JLelFsMnIzY0JzeGVJL1lvdXpRbDJyM2NDUzJldy9iSSt6UWlxZzNNQ1MyZXcvREkrelFocEQ2c0NTMmV3L0RJK3pRaUxzK01DUzJldy91MmF6UXNFNC84RE45M3RBM01lelFzRTQvOENTMmV3L0d4YXpRc0U0LzhETjkzdEFPbmV6UXNFNC84Q1MyZXcvZVJhelFpcWczTUFySUJqQklvNnpRdTUrMzhBcklCakI1NDJ6UXQ0aDdjQXJJQmpCNTQyelFpTHMrTUFySUJqQjU0MnpRc0U0LzhBcklCakJMeFd6UXU1KzM4QXJJQmpCUlQyelFzRTQvOEI0eHlQQUJnQ3ZRc0U0LzhCc3hlSS80bHF3UWlMcytNQnN4ZUkvdHJXd1FzRTQvOEI0eHlQQUJnQ3ZRaUxzK01Cc3hlSS9KcHl2UXFteDY4QjR4eVBBQmdDdlFxbXg2OEJzeGVJLzd0R3VRbDJyM2NCNHh5UEFCZ0N2UWwycjNjQ1MyZXcvOTlXdVFpcWczTUI0eHlQQUJnQ3ZRaXFnM01ES1FtOUF1RGF2UW51Wnc4QjR4eVBBQmdDdlFudVp3OEFFWHQxQWdwdXZRa0lSYThCNHh5UEFCZ0N2UWtJUmE4Qmh0eFZCVFFDd1FpdTkvTDU0eHlQQUJnQ3ZRaXE5L0w2WmNoOUJLcFN2UXEyNy96NTR4eVBBQmdDdlFxNjcvejZNTFNoQnVBU3ZRbkNNNkQ5NHh5UEFCZ0N2UW5DTTZEL2FRQzVCSjIydVF2VmJUVUI0eHlQQUJnQ3ZRdlZiVFVDQVlDNUJKMjJ1UWd2dVVFQjR4eVBBQmdDdlFndnVVRUI0eHlQQUJnQ3ZRcG0xVkVCWW1DNUJKMjJ1UXFNNlYwQUNnaTVCSjIydVFwbTFWRUI0eHlQQUJnQ3ZRcU02VjBEZmF6TkJKMjJ1UWlRY24wQjR4eVBBQmdDdlFpUWNuMEJCRFRWQkoyMnVRbzNxdjBCNHh5UEFCZ0N2UW8zcXYwRDM0VFZCSjIydVFpcGd6MEI0eHlQQUJnQ3ZRaXBnejBCWG56WkJKMjJ1UWtLRjMwQjR4eVBBQmdDdlFrS0YzMEFQMVRWQkoyMnVRcXJFQUVGNHh5UEFCZ0N2UXFyRUFFRjR4eVBBWmdxdFFwRWVZVUZNMEJwQjdRMnVRdDdRWmtGR0toOUJKMjJ1UXBFZVlVRjR4eVBBaHdtdFF0N1Faa0ZvM0FoQnBIaXJRa0IrZlVGNHh5UEF1dHlzUWtCK2ZVR0x1dUpBZ2FLcFFzRU5qa0Y0eHlQQU1rV3BRc0lOamtFRVh0MUF3VHFwUWluQmowRjR4eVBBditXb1FpbkJqMEZYNlRWQlluaXVRcG0xVkVEZnpqVkJZbml1UWd2dVVFQmh0eFZCSm0yd1FpdTkvTDRFWHQxQVhRaXdRa0lSYThES1FtOUFrYU92UW51Wnc4Q1MyZXcvMGtLdlFpcWczTUJzeGVJL3lENnZRbDJyM2NCc3hlSS95UFN2UXFteDY4QnN4ZUkvY0tDd1FpTHMrTUJzeGVJL0wvS3dRc0U0LzhDUzJldy8ydld3UXNFNC84Q1MyZXcvWWJtd1FzRTQvOEROOTN0QStWYXhRc0U0LzhETjkzdEFnQnF4UXNFNC84QTdMRlpCTC9Ld1FzRTQvOERGZS9wQWVTMnhRc0U0LzhERmUvcEFBUEd3UXNFNC84QlFPR3hCWEN1eFF0cEYvc0E3TEZaQnRyV3dRc0U0LzhCUU9HeEI5dmV3UXRwRi9zQWltNVZCa3Nhd1F0cEYvc0FpbTVWQks1T3dRdHBGL3NDVmE3dEIvL3l2UXRwRi9zQ1ZhN3RCbU1tdlF0cEYvc0NFNU05QmF6T3ZRdHBGL3NDRTVNOUJCUUN2UXRwRi9zQWNNZFpCb2M2dVF0cEYvc0FjTWRaQk81dXVRdHBGL3NBY01kWkIzdXl1UXZMUzlNQWNNZFpCZHJtdVF2TFM5TUFjTWRaQjVQQ3RRcnM5dXNBY01kWkJHWXV0UXJzOXVzQWNNZFpCeE1LdFFtMUNnOEFjTWRaQi9sS3RRbTFDZzhBY01kWkJIV1d0UW9nS0hiOGNNZFpCRk9Hc1FvZ0tIYjhjTWRaQjRHMnRRZzZraWI0Y01kWkIxK21zUWc2a2liNGNNZFpCZTBTdFF2NEFmNzBjTWRaQmM4Q3NRdm9BZjcwY01kWkJ0SHV0UW0raFNrQWNNZFpCUm1DdFF0UC94ejhjTWRaQjBnU3RRdFQveHo4Y01kWkI0RzJ0UWowTVQwQWNNZFpCVFVpdFFtK2hTa0NISnRSQjJYbXRRajBNVDBDSEp0UkJubmF0UW80d1VrQWNNZFpCTTJxdFFvNHdVa0FjTWRaQnltV3RRaUQ0VlVBY01kWkJZekt0UWlENFZVQWNNZFpCRlFtdFFncHpsa0FjTWRaQnI5V3NRZ3B6bGtBY01kWkJmTHlzUXBXdjFFQWNNZFpCRm9tc1FwV3YxRUFjTWRaQmRiaXNRaVAyMTBBY01kWkJEWVdzUWlQMjEwQ3FkOUZCN2ZTc1FyMUMza0NxZDlGQmg4R3NRcjFDM2tDcWQ5RkI1TytzUXJFNjZrQ3FkOUZCZkx5c1FyRTY2a0NxZDlGQnJGT3NRdDdRWmtGYVQ5RkJneitzUWhQclowR3FkOUZCUlNDc1F0N1Faa0ZhVDlGQkhReXNRaFByWjBGZFVjNUJoTUNxUXYzY2ZFRmRVYzVCSG8ycVF2M2NmRUhkRU1wQms4aWpRcklGamtGYXpzaEJMSldqUXJJRmprSHJsOGxCalVXalFpbkJqMEZuVmNoQkpoS2pRaW5CajBGVVM4TkJWcXFqUWluQmowRlVTOE5COEhhalFpbkJqMEZsMHE1QnM5aWtRaW5CajBGbDBxNUJUYVdrUWluQmowRWltNVZCUjZLbFFpbkJqMEVpbTVWQjRHNmxRaW5CajBGUU9HeEJFUWVtUWluQmowRlFPR3hCcXRPbFFpbkJqMEd4K0JoQjZVNm5RaW5CajBHeCtCaEJWZ2FuUWluQmowSHFGQmRCQlYyblFpbkJqMEhxRkJkQmNoU25RaW5CajBGQVd1WkFVb09wUWluQmowRkFXdVpBd1RxcFFpbkJqMEVFWHQxQVVvT3BRaW5CajBHTHV1SkFFK3VwUXNFTmprR3JmUWxCYTl1c1FrQitmVUZNMEJwQmZsYXVRdDdRWmtGR0toOUJ1TFd1UXBFZVlVRVAxVFZCdUxXdVFxckVBRUZYbnpaQnVMV3VRa0tGMzBEMzRUVkJ1TFd1UWlwZ3owQkJEVFZCdDdXdVFvM3F2MERmYXpOQnQ3V3VRaVFjbjBCWW1DNUJ0N1d1UXFNNlYwQUNnaTVCdDdXdVFwbTFWRUJYNlRWQmNMS3VRcG0xVkVEZnpqVkJjTEt1UWd2dVVFQ0FZQzVCdDdXdVFndnVVRURhUUM1QnQ3V3VRdlZiVFVDTUxTaEI3bHF2UW5DTTZEK1pjaDlCU1BldlFxMjcvejUvU0lUQUJnQ3ZRbEJINE1CSExoZkI3dEd1UWtQcTdjQkhMaGZCN3RHdVFsQkg0TUIvU0lUQUJnQ3ZRa1BxN2NCL1NJVEFCZ0N2UXU1KzM4QXJJQmpCcnRTdVF1NSszOEJITGhmQjd0R3VRaUxzK01CL1NJVEFCZ0N2UWlMcytNQi9TSVRBQmdDdlFudVp3OENaekRuQnVEYXZRbnVadzhCSExoZkI3dEd1UXNFNC84Qi9TSVRBQmdDdlFzRTQvOEIvU0lUQUJnQ3ZRa0lSYThEcHFtekJncHV2UWtJUmE4Qi9TSVRBQmdDdlFpcTkvTDZrMlluQlRRQ3dRaXU5L0w1L1NJVEFCZ0N2UW1kN2hyNTE4b3JCbSthdlFtaDdocjUvU0lUQUJnQ3ZRaFZ4RWo2em9vekJlYm12UWhSeEVqNS9TSVRBQmdDdlF1QlJTRUJnSHBiQkoyMnVRdUJSU0VCL1NJVEFCZ0N2UW5rbVRVRDFRWmJCSjIydVFub21UVUIvU0lUQUJnQ3ZRcTIvV1VBVlo1YkJKMjJ1UW80d1VrRERucGJCSjIydVFxMi9XVUIvU0lUQUJnQ3ZRbzR3VWtCL1NJVEFCZ0N2UWdEdWswQW8zcGpCSjIydVFnRHVrMEIvU0lUQUJnQ3ZRdmpoelVCeTJwbkJKMjJ1UXZqaHpVQi9TSVRBQmdDdlFpUDIxMEJSQnByQkoyMnVRaVAyMTBCL1NJVEFCZ0N2UXVoVzZFQkNISnJCSjIydVFqZ0EzVUNmVFpyQkoyMnVRdWhXNkVCL1NJVEFCZ0N2UWpnQTNVQi9TSVRBcHd1dFFxY29aa0ZIUm96QkoyMnVRbFh5VzBHazJZbkJKMjJ1UXFjb1prRi9TSVRBcHd1dFFsWHlXMEYvU0lUQUN2aXNRa0IrZlVFejZZSEJDdmlzUWtCK2ZVRi9TSVRBL2x1cFF2OE9qa0dxKzI3QmFwS29RdjhPamtGL1NJVEFIK3FvUW9yQ2owSHBxbXpCaXlDb1FvckNqMEZGdHBuQkJHaXVRbm9tVFVDMjFKbkJCR2l1UW80d1VrQW8zcGpCdDdXdVFnRHVrMEREbnBiQnQ3V3VRcTIvV1VBVlo1YkJ0N1d1UW80d1VrQzIxSm5CV0tHdVFvNHdVa0JGdHBuQldLR3VRbmttVFVEMVFaYkJ0N1d1UW5rbVRVQmdIcGJCdDdXdVF1QlJTRUN6b296QjhoK3dRaE54RWo1MThvckJKVkd3UW1oN2hyNmsyWW5CSm0yd1FpdTkvTDdwcW16QlhRaXdRa0lSYThDWnpEbkJrYU92UW51Wnc4QXJJQmpCaDBHdlF1NSszOEJITGhmQnlENnZRbEJINE1CSExoZkIwRUt2UWtQcTdjQkhMaGZCMEVLdlFpTHMrTUJITGhmQjBFS3ZRc0U0LzhBcklCakJjOVN1UXNFNC84QXJJQmpCVkVXdlFzRTQvOERhK1R6QnVEYXZRc0U0LzhEYStUekJtcWV2UXNFNC84QTFxM1hCdURhdlFzRTQvOEExcTNYQm1xZXZRc0U0LzhEZ2VwM0JKVzJ1UXNBNC84RGdlcDNCQnQ2dVFzRTQvOEFqc3JiQjZ2R3ZRdHBGL3NBanNyYkJVQ1d3UXRwRi9zQ0U1TS9CQlFDdlF0cEYvc0NFNU0vQmF6T3ZRdHBGL3NBY01kYkJPNXV1UXRwRi9zQWNNZGJCb2M2dVF0cEYvc0FjTWRiQmRybXVRdkxTOU1BY01kYkIzdXl1UXZMUzlNQWNNZGJCR1l1dFFyczl1c0FjTWRiQjVQQ3RRcnM5dXNBY01kYkJGamF0UWduZlRjQWNNZGJCQUt1dFFnbmZUY0FjTWRiQlp3MnRRczFCL0w4Y01kYkJIV1d0UW9nS0hiOGNNZGJCalltdFFzNUIvTDhjTWRiQkZPR3NRb2dLSGI4Y01kYkIxK21zUWc2a2liNGNNZGJCNEcydFFnNmtpYjRjTWRiQmM4Q3NRdm9BZjcwY01kYkJlMFN0UXY0QWY3MGNNZGJCVFVpdFFtK2hTa0FjTWRiQnRIdXRRbStoU2tBY01kYkI0RzJ0UWowTVQwQ0hKdFRCMlhtdFFqME1UMENISnRUQm5uYXRRbzR3VWtBY01kYkJNMnF0UW80d1VrQWNNZGJCWXpLdFFpRDRWVUFjTWRiQnltV3RRaUQ0VlVBY01kYkJyOVdzUWdwemxrQWNNZGJCRlFtdFFncHpsa0FjTWRiQkZvbXNRcFd2MUVBY01kYkJmTHlzUXBXdjFFQWNNZGJCRFlXc1FpUDIxMEFjTWRiQmRiaXNRaVAyMTBDcWQ5SEJoOEdzUXIxQzNrQ3FkOUhCN2ZTc1FyMUMza0NxZDlIQmZMeXNRckU2NmtDcWQ5SEI1TytzUXJFNjZrQmFUOUhCSFF5c1FoUHJaMEdxZDlIQnJGT3NRdDdRWmtHcWQ5SEJSU0NzUXQ3UVprRmFUOUhCZ3orc1FoUHJaMEZkVWM3QkhvMnFRdjNjZkVGZFVjN0JoTUNxUXYzY2ZFRmF6c2pCZmIyalFySUZqa0ZhenNqQjQvQ2pRcklGamtGblZjakJkanFqUWluQmowRm5WY2pCM1cyalFpbkJqMEZVUzhQQk1oaWtRaW5CajBGVVM4UEJtVXVrUWluQmowRmwwcTdCRmdxbFFpbkJqMEZsMHE3QmZUMmxRaW5CajBFZ0xZekIrZnVsUWluQmowRWdMWXpCWUMrbVFpbkJqMEdNZkhYQml5Q29Rb3JDajBHTWZIWEJIV21vUW9yQ2owSHBxbXpCSFdtb1FvckNqMEdxKzI3Qi9OcW9RdjhPamtFejZZSEJtVUN0UWtCK2ZVR2syWW5CdUxXdVFxY29aa0ZIUm96QnVMV3VRbFh5VzBHZlRackJ1TFd1UXVoVzZFQkNISnJCdUxXdVFqZ0EzVUJSQnByQnVMV3VRaVAyMTBCeTJwbkJ1TFd1UXZqaHpVQUVYdDFBY0JLcFFpbkJqMEZBV3VaQWNCS3BRaW5CajBIcUZCZEJJK3ltUWluQmowRjR4eVBBYnIyb1FpbkJqMEd4K0JoQkI5Nm1RaW5CajBGUU9HeEJXYXVsUWluQmowRi9TSVRBenNHb1FvckNqMEhwcW16Qk92aW5Rb3JDajBHTWZIWEJPdmluUW9yQ2owRWdMWXpCcXRPbFFpbkJqMEZsMHE3Qnh1R2tRaW5CajBGVVM4UEI0dStqUWluQmowRm5WY2pCSmhLalFpbkJqMEZhenNqQkxKV2pRcklGamtIcmw4bEIxdW1pUWluQmowSGRFTXBCM0d5alFySUZqa0ZVUzhOQm4wNmpRaW5CajBGbDBxNUIvSHlrUWluQmowRWltNVZCajBhbFFpbkJqMEVFWHQxQUlleWxRaW5CajBGQVd1WkFJZXlsUWluQmowSHFGQmRCMWNXalFpbkJqMEY0eHlQQUg1ZWxRaW5CajBHeCtCaEJ1TGVqUWluQmowRi9TSVRBZ0p1bFFvckNqMEZRT0d4QkRJV2lRaW5CajBFaW01VkJRaUNpUWluQmowSHBxbXpCN2RHa1FvckNqMEdNZkhYQjdkR2tRb3JDajBFZ0xZekJXNjJpUWluQmowRmwwcTdCZWJ1aFFpbkJqMEZVUzhQQmxNbWdRaW5CajBGblZjakIyT3VmUWluQmowRmF6c2pCMzI2Z1FySUZqa0hybDhsQmlNT2ZRaW5CajBIZEVNcEJqMGFnUXJJRmprRlVTOE5CVWlpZ1FpbkJqMEZsMHE1QnJsYWhRaW5CajBGSExoZkJOSFdzUXNBNC84QXJJQmpCdVhlc1FzQTQvOEIvU0lUQVRLT3NRc0E0LzhEYStUekIvdG1zUXNBNC84QTFxM1hCL3Rtc1FzQTQvOERnZXAzQmF4Q3NRc0E0LzhBanNyYkJMNVd0UXRwRi9zQ0U1TS9CUzZPc1F0cEYvc0FjTWRiQmdENnNRdHBGL3NBY01kYkJ2RnlzUXZMUzlNQWNNZFpCdkZ5c1F2TFM5TUFjTWRaQmdENnNRdHBGL3NDRTVNOUJTNk9zUXRwRi9zQ1ZhN3RCM215dFF0cEYvc0FpbTVWQmNqYXVRdHBGL3NCUU9HeEJQSnV1UXRwRi9zQTdMRlpCL0ZpdVFzQTQvOERGZS9wQVJwU3VRc0E0LzhETjkzdEF4cjJ1UXNFNC84Q1MyZXcvcGx5dVFzQTQvOEJzeGVJLy9GaXVRc0E0LzhCNHh5UEFUS09zUXNBNC84QlFPR3hCWEwyd1FpU3FURUVQa1pCQjRvQ3dRclJ4VUVGUU9HeEJZZE93UW1pRE1rRVBrWkJCNTVhd1FtaURNa0VHSTY5QlQ3ZXZRci8yVWtHSmpxaEIybit1UWt1WFBFR1VxcGxCZWVTdVFrSWZMMEdVcXBsQmtOcXVRa3VYUEVHSmpxaEJ3NG11UWtJZkwwRVRLOHRCcjg2dVFpU3FURUVScUxGQlZjMnZRbWlETWtFVEs4dEIrKzJ1UW1pRE1rR3FkOUZCaVc2dVFpU3FURUdxZDlGQmQ1S3VRbWlETWtHcWQ5RkJPRWF1UWlTcVRFR3FkOUZCSldxdVFtaURNa0dxZDlGQm1YZXNRaVNxVEVHcWQ5RkJoNXVzUW1pRE1rR3FkOUZCTTBTc1FpU3FURUdxZDlGQklXaXNRbWlETWtFZzVsTkJIdWl3UXRZMVRFRS9qbGxCV2dheFF0b2ZORUZ3RGxKQnJ2Q3dRdFkxVEVHSnNsZEJhQTJ4UXRvZk5FRnhEQzlCZEpPeFF0WTFURUh2WXpSQmRKT3hRdG9mTkVHYU9pbEJkSk94UXJqTVNVSGFRQzVCZEpPeFF1QjZNa0dhT2lsQjAwS3hRcmpNU1VIYVFDNUIwMEt4UXVCNk1rR2FPaWxCdUxXdVFyak1TVUhhUUM1QnVMV3VRdUY2TWtHYU9pbEJKMjJ1UXJqTVNVSGFRQzVCSjIydVF1RjZNa0Y0eHlQQU5nV3VRcmpNU1VGNHh5UEFCZ0N2UXVGNk1rRi9TSVRBMWdXdVFwczJSMEYvU0lUQUJnQ3ZRdUY2TWtGVU1wSEJKMjJ1UXBzMlIwRmdIcGJCSjIydVF1RjZNa0ZVTXBIQnVMV3VRcHMyUjBGZ0hwYkJ1TFd1UXVGNk1rRlVNcEhCMDBLeFFwczJSMEZnSHBiQjAwS3hRdUI2TWtGVU1wSEJkSk94UXBzMlIwRmdIcGJCZEpPeFF1QjZNa0Y5eXBQQmRKT3hRcXBHVEVIckw1bkJkSk94UXRvZk5FSHU1S1hCOU9TdlFseDRUVUdQZ3FyQlRRQ3dRdG9mTkVFanNyYkI3STJ2UWhUdlRVRWpzcmJCMzZLdlFrb05OVUVUSzh2QkxNMnVRaFR2VFVFVEs4dkI4dXF1UWtvTk5VR3FkOUhCeW15dVFoVHZUVUdxZDlIQitvNnVRa29OTlVHcWQ5SEJla1N1UWhUdlRVR3FkOUhCcVdhdVFrb05OVUdxZDlIQjNIV3NRaFR2VFVHcWQ5SEJESmlzUWtvTk5VR3FkOUhCZEVLc1FoVHZUVUdxZDlIQnBHU3NRa29OTlVGUU9HeEJPKzJ3UW1EUUUwRVBrWkJCd2JDd1FqOUJERUdVcXBsQkd2Q3VRdVBuSFVHSmpxaEJaWld1UXVQbkhVRVJxTEZCTCtldlFqOUJERUVUSzh0QnVSS3ZRbURRRTBHcWQ5RkJwYnl1UW1EUUUwR3FkOUZCVXBTdVFtRFFFMEdxZDlGQnRzV3NRbURRRTBHcWQ5RkJUNUtzUW1EUUUwRWFCMTlCZ0EreFFvc1hGVUZZSjExQkdSYXhRaFJjRlVFbmpEbEJkSk94UWtKeUdrRjZUVE5CZEpPeFFzV2ZHVUY2VFROQjAwS3hRc1dmR1VGNlRUTkJ1TFd1UXNXZkdVRjZUVE5CSjIydVFzV2ZHVUY0eHlQQUJnQ3ZRc1dmR1VGL1NJVEFCZ0N2UWlwVEUwSC9OWmpCSjIydVFpcFRFMEgvTlpqQnVMV3VRaXBURTBIL05aakIwMEt4UWlwVEUwSC9OWmpCZEpPeFFpcFRFMEZsVlp2QmRKT3hRcWNsRkVFSXFLekJueWl3UXFjbEZFRWpzcmJCeXIydlFsRVZGVUVUSzh2Qk14R3ZRbEVWRlVHcWQ5SEI1cnF1UWxFVkZVR3FkOUhCbFpLdVFsRVZGVUdxZDlIQitNT3NRbEVWRlVHcWQ5SEJrSkNzUWxFVkZVRXRZckZCbjhPdlFsMXBNa0V0WXJGQkM5MnZRcy9JREVIdzFwQkJTNk93UXM3SURFSHcxcEJCMzRtd1FsMXBNa0h3MXBCQk4zU3dRanZaVDBFajNhNUI5NjJ2UWtWZVVrRVh4cFZCQXIyUVFqd3VDVUxkTUhWQkFyMlFRcTZKQzBLL2VIVkJBcjJRUXNydkNrSkJvSlZCQXIyUVFnelJDVUl6bFNGQkFyMlFRbVRWREVLS1ZpRkJBcjJRUW9nOERFS2dBWTVBQXIyUVFvVmREVUpOaEkxQUFyMlFRckxFREVJQUFBQUFBcjJRUXRocURVSUFBQUFBQXIyUVF1N1JERUxnWXA1QkFyMlFRcURzQjBJS1BaNUJBcjJRUWd1UUNFSUpTcFpCQXIyUVF1bnpCa0xVNXA1QkFyMlFRaTZ3QlVKMGMzWkJBcjJRUXM3VUNFTDlleUJCQXIyUVFpVWxDa0kwejR0QUFyMlFRbkN0Q2tJQUFBQUFBcjJRUWx1NkNrTDBqWjlCK3FDWFFoWC85a0Z2aW9oQnB1bVhRdU9oK0VGdmlvaEI5UkdZUXVPaCtFSDBqWjlCcVhpWFFoWC85a0UzbDFkQnZEaVlRbzFSK2tFM2wxZEJER0dZUW8xUitrSENuQXRCcEhPWVFqancrMEhDbkF0QjlKdVlRamp3KzBINUNNcEFQSXFZUXVwKy9FSDVDTXBBamJLWVF1cCsvRUVBQUFBQWNvaVlRclFiL1VFQUFBQUF3ckNZUXJRYi9VRnZpb2hCY00rV1F1T2grRUgwalo5QmRWNldRaFgvOWtFM2wxZEJoaDZYUW8xUitrSENuQXRCYjFtWFFqancrMEg1Q01wQUNIQ1hRdXArL0VFQUFBQUFQVzZYUXJRYi9VRXhQYkpCL3krWFFpNTc5VUh4WTdwQjJ0MldRaDNoOUVFeFBiSkJyZ2VYUWk1NzlVR1R0THBCS3dhWFF2M1E5RUZIanJkQkJIT1ZRdjNROUVFeFBiSkJlTzJWUWk1NzlVRmRENnRCOFFPUlFxaFVCRUsyanFkQisvS1FRbnVVQmtKNThxZEJLTXVRUXJUZEJFTDVscXBCQlc2UlFsRE5CVUpIZXFkQkkvdVFRbG51QmtKUWZxcEJ2NE9SUW5ZYUJrSlM5NnRCOEZxUlFwSDNBMElZRXE5QmRxbVNRaVhzQTBMaXRLOUIrdTJTUXM3cEEwSy9HTFpCZkM2VlFyNncvRUdFZTdOQjN0K1RRcjZ3L0VIUW9iWkJCSE9WUXI2dy9FR2dBWTVBKzVtWFF0UzhDMElBQUFBQUk1dVhRdlBKQzBJemxTRkJLWTZYUXNVMkMwTGRNSFZCWEhHWFFobndDVUpCb0pWQkdrdVhRaWcrQ0VJS1BaNUJPeStYUWdnQ0IwSkhlcWRCOXdxWFFxNW1CVUpRZnFwQmtmaVdRZ09XQkVMaXRLOUI4VTZXUXNYZ0FVS2dBWTVBVmtlYVF2REtDa0lBQUFBQWYwaWFRZy9ZQ2tJemxTRkJoVHVhUXVGRUNrTGRNSFZCdUI2YVFqWCtDRUpCb0pWQmR2aVpRa1JNQjBJS1BaNUJsdHlaUWlRUUJrSkhlcWRCWUQrWlFzcDBCRUpRZnFwQkNiU1lRaUNrQTBMaXRLOUJkNUdYUXZ0N0FVSlFmcXBCREZTWFFzamkvRUZIZXFkQmw5cVlRcTEyLzBGUWZxcEJQMCtZUWxmVi9VRkhlcWRCRW1DWFFoNG4va0VLUFo1QnpYZVpRcTlXQVVJS1BaNUJnNXFYUWp4VEFFSkJvSlZCckpPWlF0Q1NBa0pCb0pWQnNyeVhRdWxJQVVMZE1IVkI3cm1aUXNGRUJFSlk3bk5CSkRPWVFpYWFBa0l6bFNGQnV0YVpRbTJMQlVJemxTRkJMRkNZUWdXWUEwS2dBWTVBamVLWlFud1JCa0tnQVk1QVJXS1lRak1BQkVJQUFBQUFmb21ZUW1jS0JFTGl0SzlCclN5WFFnK0YrVUZGN3FaQkQweVhRdkpsOWtFUktLZEJBbk9YUWtOaDlrR3lXYVZCYUR1V1FzS0c5a0ZQaWE1QllrYVhRZ3pJOVVGanJLNUJQUjJYUWpURjlVRnVGNnRCTjF1WFFwRVA5a0VqVzZ0QlRER1hRaE1LOWtFWE5hMUI1Z3VXUXFUajlVSHBvYTlCUFAyVlFrdXg5VUdIQWExQkVrR1hRblpEKzBIaXRLOUJ3VGFYUXZOMitrRlFmcXBCVWxtWVFqekgva0ZIZXFkQnErU1lRa2swQUVJS1BaNUI0WUdaUXFMUEFVSkJvSlZCd0oyWlFzSUxBMExkTUhWQkFzU1pRck85QkVJemxTRkJ6K0NaUWw4RUJrS2dBWTVBb2V5WlFtNktCa0tFOExWQkdwV1ZRdkdOL1VFS1BaNUJoZE9aUWtxakJVSkhlcWRCVGphWlF2RUhCRUpRZnFwQjlxcVlRa1UzQTBMaXRLOUJaWWlYUWlJUEFVSnpWTEJCUXpDV1FqdDlBVUl1WnJCQmV5NlRRa05iQTBMM3hhOUI5K21TUWw1ZEEwSzl0NnhCYnB1UlFxWm5BMEpCb0pWQlkrK1pRbXZmQmtMZE1IVkJwaFdhUWx1UkNFSXpsU0ZCY2pLYVFnZllDVUtnQVk1QVJENmFRaFplQ2tJQUFBQUFiRCthUWpackNrSVdtWlRCZTBaMVFqZHppOEZhcFozQmUwWjFRdFhBYjhGQ0U1ZkJlMFoxUWtPYlNNRzBacnZCSG1hdFFxMHZmc0ZKdUxUQmlUQ3RRdTIvZ2NGSnVMVEJVa1N0UWs3UGdjRzBacnZCVlZLdFF1Z1Fmc0VlRmNMQmlUQ3RRdTIvZ2NFZUZjTEJVa1N0UWs3UGdjR1kyY1RCOGQ2c1F1eE9pTUdZMmNUQnUvS3NRazVlaU1FZUZjTEJXbzJzUXV6ZGpzRWVGY0xCSktHc1FsRHRqc0cwWnJ2QmptdXNRbU9Wa2NHMFpydkJWMytzUXNXa2tjRkp1TFRCSktHc1FsRHRqc0ZKdUxUQldvMnNRdXpkanNIUDg3SEJ1L0tzUWs1ZWlNSFA4N0hCOGQ2c1F1eE9pTUcwWnJ2QnRGdXRRZ25jZjhHUlVyWEI5anl0UXNGbWdzSFhlc0hCOWp5dFFzRm1nc0ZwLzhQQnUvS3NRazVlaU1IWGVzSEJmNmlzUXQ1VmpzRzBacnZCd0ltc1Fwak9rTUdSVXJYQmY2aXNRdDVWanNIK3piTEJ1L0tzUWs1ZWlNR1JVclhCWGdDc1FxQndnY0cwWnJ2QkhSK3NRc2J2ZmNIWGVzSEJYZ0NzUXFCd2djRnAvOFBCSXJhclFpNW9oOEhYZXNIQjVtdXJRcnRmamNHMFpydkJKMDJyUW5qWWo4R1JVclhCNW11clFydGZqY0gremJMQklyYXJRaTVvaDhHUlVyWEJWcWVqUW9qbWRjRzBacnZCRk1halFoTDFjTUhYZXNIQlZxZWpRb2ptZGNGcC84UEJHbDJqUXRIcWdNSFhlc0hCM3hLalFtTGloc0cwWnJ2QkgvU2lRaHhiaWNHUlVyWEIzeEtqUW1MaWhzSCt6YkxCR2wyalF0SHFnTUZCcmJiQjFxZWVRbmFvYXNGbHdiekJHSW1lUXUrWmI4SDRSYi9CM1Q2ZVFnbUplOEZsd2J6Qm9mU2RRaFM4ZzhGQnJiYkI0ZFdkUXRBMGhzRWZtYkRCb2ZTZFFoUzhnOEdNRks3QjNUNmVRZ21KZThFZm1iREJHSW1lUXUrWmI4SE1WSXcrRm5lbVF1Zmdva0dQeHRtOVkxbW1RcjEybzBITklZdytWbXltUXRES29rRVQvTmk5S0dTbVF0ZU1vMEhYMXZlK25IMm1RdERlb2tGQUNmaSsybkttUXJ2SW9rRVdTVUsvb3J5bVFuc0ZvVUdRWWtLLzRMR21RbDd2b0VGU1hsdS9WeENuUXFWL25rSGRkMXUvbHdXblFvZHBua0dJY2tDL1RXS25RbEg2bTBIWmkwQy9qRmVuUWpya20wRW1lUEcralp5blFuOGlta0hVcXZHK3paR25RbVlNbWtIQmtMdTlmYStuUW9WMm1VSCtXcnk5dXFTblFuWmdtVUdvZ0pJK1NJdW5RblFPbWtITXM1SStCWmFuUXBBa21rRXVuZzgvUVV5blFzM25tMEdhdHc4L0FWZW5RdWI5bTBHT3N5Zy9pZmltUXFwdG5rSHZ6Q2cvVGdPblFzS0Rua0dBeHcwL2xLYW1RdTd5b0VIcjRBMC9WckdtUWdzSm9VRzNVSTQrcStLbVF0aTlvMEd0Q3RHOXVjK21Rc2xwcEVHczJ2VytMK21tUXIyN28wRUxTMEcvTlNpblFtL2lvVUdYWUZxLzdudW5RbzFjbjBHV2REKy80ODJuUWtEWG5FRzdlKysrSkFpb1FuTC9ta0ZVb2JPOUZCdW9RbnBUbWtHTnI1UStvUUdvUW44Qm0wRjR0UkEvbWNLblF0amFuRUVCeXlrLzRtNm5RcmRnbjBITzNnNC84UnluUWdEbW9VRW1nNDQrYk8ybVF1blRvMEd3UU5DOWZkcW1RdUIvcEVHbHAvVys3L09tUXR6Um8wSExNVUcvK1RLblFvUDRvVUVaUjFxL3I0YW5RcWx5bjBFS1d6Ky9wTmluUWwzdG5FRVRTZSsrNUJLb1FvVVZtMEYwMWJLOTFpV29RcEpwbWtGTDRwUStYd3lvUXBvWG0wSFJ6aEEvV2MyblF1cnduRUV4NUNrL3BYbW5Rc2gybjBFOStBNC9yeWVuUWhyOG9VSC9PTWk5QWo2blF1YUpvMEZ5bXpVK3VVdW5RbTBObzBITU03NitjMUNuUXVzTG8wR1dDaEsvRVg2blFrQzFvVUVvTXlTL3JMcW5RclhobjBIUnRSQy9BUGFuUW84T25rRlJsN20rTGlDb1F2NjRuRUdBNjdLOTRpMm9Rb1U4bkVGNTFENCtjUnVvUW5tNm5FRUFBQUFBbXhhYVFtS0JDRUtnQVk1QWN4V2FRa04wQ0VLdFM4VSsxdTJuUWljUm5rSHVuT2srT3JHblFyUGtuMEh1b2NJKzUzV25RdFczb1VHc01NYTk1RlNuUXJEWG9rSGE1d0ErL0YrblF1NXlva0d5K0tLK3pHT25RclZ4b2tGRWJmVyt2WWluUW1OY29VR0FhQW0veExtblF2emhuMEVyUmZPK3pPbW5RdkJubmtGY1BaKys3UXVvUW54VG5VRVI5TFM5QVJlb1FyM3VuRUgrWFFnK0dnaW9RcXRVblVHU281WStMK09uUWdscW5rSHZCN1ErSHJLblFtWGtuMEUxZkpRK0dvS25RbnRlb1VFcExzVzlVV0NuUW8xK29rRTRITTA5R21xblFxOGxva0VIVzVXK2VtMm5RcUlrb2tFSkdkNitEWTZuUXZNdm9VRURCL2krVTdtblFpSGluMEUrTXR5K3JlT25RcGlVbmtHaUVKSyt5d0dvUXJHZ25VR08rTFc5bFF1b1F0aEhuVUV6bFNGQm9BbWFRalB1QjBMZE1IVkIxT3laUW9lbkJrSkJvSlZCa3NhWlFwYjFCRUlLUFo1QnM2cVpRbmE1QTBKSGVxZEJmQTJaUWgwZUFrSlFmcXBCSklLWVFuSk5BVUxpdEs5QmsxK1hRcHhLL2tGN0lyTkJyK0tWUWhvaUFFTCtnN05CdjFDVVF0SFpBRUpiNzdKQk9ReVVRdC9hQUVLZ0diQkJwcjJTUWdMZ0FFS1hzRnBBOVU2WVFnaUVCRUlBQUFBQUUyT1lRdU9MQkVLWHNGcEE0RVNZUWdpRUJFSUFBQUFBS0cyWVF1T0xCRUtYc0ZwQXhXeVpRcFFiQmtLWHNGcEEyWGFaUXBRYkJrS1hzRnBBaVhTWlFyVjRCa0tYc0ZwQW5INlpRclY0QmtKRVNObzlhdjZuUXNxaG5VRllubjQrMnQyblFtNldua0ZMUFprK2xiS25Ra1hrbjBHWHNGcEE5NU9aUXVEeEIwS1hzRnBBQzU2WlF1RHhCMElBQUFBQTJwU1pRdnI3QjBJQUFBQUE3cDZaUXZyN0IwTGcwWG8rTm9pblFzMHhvVUVBQUFBQTMwaVhRdU9MQkVLWHNGcEFyQ3FYUWdpRUJFS1hzRnBBa0ZLWVFwUWJCa0tYc0ZwQVUxcVlRclY0QmtLL290WTlNK3VuUXM4dW8wRU5wN3U5YmVHblFyS0hvMEhEK1pLK2srNm5Rcnd0bzBGT3Q5dStKdytvUWhFNW9rR1hzRnBBd1htWVF1RHhCMElBQUFBQXBYcVlRdnI3QjBLd3BmVytianFvUWovcm9FR1kwTm0reG1Tb1FybWRuMEVBQUFBQXlFMlhRbzZVQkVMbFVGWkFNRENYUXR1TUJFTGxVRlpBS2xLWVFrRWNCa0xsVUZaQXhGbVlRb1YzQmtKanI0Kys1NEtvUXRtcG5rRndjcXk5cm95b1F2cFFua0U3emVNOWhYK29RdTZxbmtIbFVGWkFrbmlZUWlUcEIwSUFBQUFBY1htWVFnenpCMExlc0lFKzhWNm9RbzJmbjBIaW5wcytyek9vUW1UdG9FRUFBQUFBM0ZlWFFvNlVCRUxsVUZaQVJEcVhRdHVNQkVMbFVGWkFQVnlZUWtFY0JrTGxVRlpBMkdPWVFvVjNCa0pobFg4K1VRbW9RdkE2b2tIMHFnVStGK0duUWcxOG8wR2pxcnk5K3RXblFzL2dvMEhsVUZaQXBvS1lRaVRwQjBJQUFBQUFoWU9ZUWd6ekIwSkFsNkMrNStTblF0bDZvMEdPQy9PKzBnbW9Rb05sb2tITU53aS8yanFvUWh6cm9FSDg0L0MrNUdxb1FnVnhuMEhVMjV5K0I0Mm9RcDVjbmtFYWI2dTlISmlvUXRiM25VRUFBQUFBbmhDYVFyWjZDRUtRWDR4QWVnK2FRcjV0Q0VLUVg0eEFJT2VaUW95SkJrS1FYNHhBS3QyWlF2MFJCa0tRWDR4QVRtR1lRc3NHQkVJQUFBQUFFNGlZUXVBUUJFSmlJUTArTkltb1FzNWRua0VaQlprK1NXU29RaUJ6bjBGdGFiWStPek9vUW9ydG9FSEgzWlkrTlFPb1FwNW5va0hMMXh3KzRvQ25Rb3dZbzBGeEI4UzlmWFNuUWltSm8wSGx5cSsrSzRXblFqZ1hvMEhwK2dXL2JhNm5RalBob1VFOWFCYS9RdVduUWpnNm9FRUFBQUFBbnFTWlFsRUNDRUxweWwxQXRxT1pRaEg0QjBMcHlsMUExb09aUW94NUJrTHB5bDFBOTN1WlFoa2JCa0xweWwxQTMwK1lRc1Y5QkVJQUFBQUFnVzZZUXJ1RkJFS1d4Z1MvN1Jxb1FwK1Rua0VRbjZ1K0ZrR29RcHBlblVITDkzdkFHUXFxUWtSS3RFRU01UG5BNDJ5M1FrRTJzRUVNNVBuQUdRcXFRa0Uyc0VITDkzdkE0MnkzUWtSS3RFRkJyVGJCNDJ5M1FsdEJwRUZCclRiQkdRcXFRbHRCcEVGNlFHakI0MnkzUWlvOGtVRjZRR2pCR1FxcVFpczhrVUZrSllmQjQyeTNRZ25sY0VGa0pZZkJHUXFxUWdybGNFRkdHcFBCNDJ5M1FyWXBOMEZHR3BQQkdRcXFRcllwTjBGSUxwZkI0MnkzUWhOcjhrQklMcGZCR1FxcVFoUnI4a0JHR3BQQjQyeTNRbllGYlVCR0dwUEJHUXFxUW5nRmJVQmtKWWZCNDJ5M1Fvb0V3ejFrSllmQkdRcXFRcjhFd3oxNlFHakI0MnkzUWdRMVFNQjZRR2pCR1FxcVFnSTFRTUJCclRiQjQyeTNRa2N2ck1CQnJUYkJHUXFxUWtZdnJNQU01UG5BNDJ5M1F0NEMzTUFNNVBuQUdRcXFRdDRDM01ETDkzdkE0MnkzUXV0UzdNREw5M3ZBR1FxcVF1cFM3TUEyOElTOUdRcXFRdDRDM01BMjhJUzk0MnkzUXQ0QzNNQnN4V0pBR1FxcVFrWXZyTUJzeFdKQTQyeTNRa2N2ck1BbWlkUkFHUXFxUWdJMVFNQW1pZFJBNDJ5M1FnUTFRTURpVGhCQkdRcXFRcjhFd3ozaVRoQkI0MnkzUW9vRXd6Mm1PQ2hCR1FxcVFuZ0ZiVUNtT0NoQjQyeTNRbllGYlVDbU9DaEI0MnkzUXJZcE4wSGlUaEJCR1FxcVFncmxjRUdtT0NoQkdRcXFRcllwTjBIaVRoQkI0MnkzUWdubGNFRW1pZFJBR1FxcVFpczhrVUVtaWRSQTQyeTNRaW84a1VGc3hXSkFHUXFxUWx0QnBFRnN4V0pBNDJ5M1FsdEJwRUUyOElTOUdRcXFRa0Uyc0VFMjhJUzk0MnkzUWtFMnNFRU01UG5BZGphNFFrRTJzRUhMOTN2QWRqYTRRa1JLdEVFMjhJUzlkamE0UWtFMnNFRnN4V0pBZGphNFFsdEJwRUVtaWRSQWRqYTRRaW84a1VIaVRoQkJkamE0UWdubGNFR21PQ2hCZGphNFFyWXBOMEdwWURCQmRqYTRRaE5yOGtDcFlEQkI0MnkzUWhOcjhrQ21PQ2hCZGphNFFuWUZiVURpVGhCQmRqYTRRb2NFd3owbWlkUkFkamE0UWdRMVFNQnN4V0pBZGphNFFrY3ZyTUEyOElTOWRqYTRRdDhDM01ETDkzdkFkamE0UXV0UzdNQU01UG5BZGphNFF0OEMzTUJCclRiQmRqYTRRa2N2ck1CNlFHakJkamE0UWdRMVFNQmtKWWZCZGphNFFvY0V3ejFHR3BQQmRqYTRRbllGYlVCSUxwZkJkamE0UWhOcjhrQkdHcFBCZGphNFFyWXBOMEZrSllmQmRqYTRRZ25sY0VGNlFHakJkamE0UWlvOGtVRkJyVGJCZGphNFFsdEJwRUhMOTN2QVZ5YThRdmRucEVGUWN1bkFWeWE4UW9MZW9FSFVLeFMvVnlhOFFvTGVvRUZQUENOQVZ5YThRdFYvbGtIN202ZEFWeWE4UXRzQWhrSERsK2xBVnlhOFFyMENZVUV6aVFsQlZ5YThRdGJ3TGtFYW5CQkJWeWE4UWhKcjhrQXppUWxCVnlhOFFubjBoa0REbCtsQVZ5YThRcTVDaXovN202ZEFWeWE4UWllMXpMOVBQQ05BVnlhOFFsOVNhc0RVS3hTL1Z5YThRdUdqbnNETDkzdkFWeWE4UXJqSnJNQldjdW5BVnlhOFF1R2puc0Q5eWliQlZ5YThRbDlTYXNEa3lWSEJWeWE4UWllMXpML0t4M0xCVnlhOFFxNUNpeitOd29QQlZ5YThRbm4waGtBQ1RJZkJWeWE4UWhKcjhrQ053b1BCVnlhOFF0YndMa0hLeDNMQlZ5YThRcjBDWVVIa3lWSEJWeWE4UXRzQWhrSDl5aWJCVnlhOFF0Vi9sa0hMOTN2QVZ5YThRclU2b1VGaktPYkFWeWE4UXZYTW5VRlVleTYvVnlhOFF2WE1uVUZLaHhaQVZ5YThRb2kvazBHOG41NUFWeWE4UXN6QmcwR1ZsdDVBVnlhOFFublZYVUVjWmdOQlZ5YThRdDFMTFVHWVFRcEJWeWE4UWhKcjhrQWNaZ05CVnlhOFFtdytpa0NWbHQ1QVZ5YThRc1dzcEQrOG41NUFWeWE4UWlQRXFMOUtoeFpBVnlhOFF1OVBWTUJVZXk2L1Z5YThRckpka3NETDkzdkFWeWE4UXJBVW9NQmpLT2JBVnlhOFFySmRrc0M3blNQQlZ5YThRdTlQVk1ESFMwM0JWeWE4UWlQRXFMOHhSMjNCVnlhOFFzV3NwRDhDc1lEQlZ5YThRbXcraWtEQUhvVEJWeWE4UWhKcjhrQUNzWURCVnlhOFF0MUxMVUV4UjIzQlZ5YThRbm5WWFVISFMwM0JWeWE4UXN6QmcwRzduU1BCVnlhOFFvaS9rMEhMOTN2QVZ5YThRaC9xZzBFaHo4ZkFWeWE4UWhaOGdVRzlvdEMvVnlhOFFoWjhnVUdxRkFVL1Z5YThRcjY0ZEVGd2F4ZEFWeWE4UW9JT1hrRXpGSEpBVnlhOFF1V0VRRUhvaUpWQVZ5YThRalVmSGtFTVFaOUFWeWE4UWhKcjhrQzU3NGhBVnlhOFFrNWxqMEF6RkhKQVZ5YThRcmlZUjBCd2F4ZEFWeWE4UW9Ya29qK3FGQVUvVnlhOFF0UnFFNzY5b3RDL1Z5YThRdUJvaEwvTDkzdkFWeWE4UW1wSnE3OGR6OGZBVnlhOFF1Qm9oTDh4VFFiQlZ5YThRdFJxRTc3QzFpUEJWeWE4UW9Ya29qLzJnRHJCVnlhOFFyV1lSMEJnd0VqQlZ5YThRcjZYcUVCdW5FM0JWeWE4UWhKcjhrQmd3RWpCVnlhOFFqTWZIa0gyZ0RyQlZ5YThRdVdFUUVGQWxqUEJWeWE4UWh4YlpFRXhUUWJCVnlhOFFyNjRkRUhMOTN2QVQ2V3BRa1JLdEVFMjhJUzlUNldwUWtFMnNFRU01UG5BVDZXcFFrRTJzRUZCclRiQlQ2V3BRbHRCcEVGNlFHakJUNldwUWlzOGtVRmtKWWZCVDZXcFFncmxjRUZHR3BQQlQ2V3BRcllwTjBGSUxwZkJUNldwUWhScjhrQkdHcFBCVDZXcFFuZ0ZiVUJrSllmQlQ2V3BRc0VFd3oxNlFHakJUNldwUWdJMVFNQkJyVGJCVDZXcFFrWXZyTUFNNVBuQVQ2V3BRdDRDM01ETDkzdkFUNldwUXVwUzdNQTI4SVM5VDZXcFF0NEMzTUJzeFdKQVQ2V3BRa1l2ck1BbWlkUkFUNldwUWdJMVFNRGlUaEJCVDZXcFFzRUV3ejJtT0NoQlQ2V3BRbmdGYlVDcFlEQkJUNldwUWhScjhrQ3BZREJCR1FxcVFoUnI4a0NtT0NoQlQ2V3BRcllwTjBIaVRoQkJUNldwUWdybGNFRW1pZFJBVDZXcFFpczhrVUZzeFdKQVQ2V3BRbHRCcEVITDkzdkFUNldwUW1HR3IwRm9WV0MrVDZXcFF1K2JxMEVpOWZUQVQ2V3BRdSticTBGZjZUSEJUNldwUXVZZ29FRkxnMkhCVDZXcFFwUGRqVUh5QklQQlQ2V3BRaVloYkVIMWY0N0JUNldwUWtDeU5FRmxhcExCVDZXcFFoUnI4a0QxZjQ3QlQ2V3BRbERqZGtEeUJJUEJUNldwUXJvOXlUNUxnMkhCVDZXcFFrSkFKY0JmNlRIQlQ2V3BRbSt0bThBaTlmVEFUNldwUXBDWnljREw5M3ZBVDZXcFFseEQyY0JvVldDK1Q2V3BRcE9aeWNEa3RVOUFUNldwUW0rdG04REdEc2RBVDZXcFFrSkFKY0Q1RFFoQlQ2V3BRcm85eVQ0QkJCOUJUNldwUWxEamRrRGwyQ1pCVDZXcFFoUnI4a0FCQkI5QlQ2V3BRa0N5TkVINURRaEJUNldwUWlZaGJFSEdEc2RBVDZXcFFwUGRqVUhrdFU5QVQ2V3BRdVlnb0VGb1ZXQytHUXFxUXUrYnEwSEw5M3ZBR1FxcVFtR0dyMEVpOWZUQUdRcXFRdSticTBGZjZUSEJHUXFxUXVZZ29FRkxnMkhCR1FxcVFwUGRqVUh5QklQQkdRcXFRaVloYkVIMWY0N0JHUXFxUWtDeU5FRmxhcExCR1FxcVFoUnI4a0QxZjQ3QkdRcXFRbERqZGtEeUJJUEJHUXFxUXJvOXlUNUxnMkhCR1FxcVFrSkFKY0JmNlRIQkdRcXFRbSt0bThBaTlmVEFHUXFxUXBDWnljREw5M3ZBR1FxcVFseEQyY0JvVldDK0dRcXFRcE9aeWNEa3RVOUFHUXFxUW0rdG04REdEc2RBR1FxcVFrSkFKY0Q1RFFoQkdRcXFRcm85eVQ0QkJCOUJHUXFxUWxEamRrRGwyQ1pCR1FxcVFoUnI4a0FCQkI5QkdRcXFRa0N5TkVINURRaEJHUXFxUWlZaGJFSEdEc2RBR1FxcVFwUGRqVUhrdFU5QUdRcXFRdVlnb0VGb1ZXQytkVGlyUXUrYnEwSEw5M3ZBZFRpclFtR0dyMEVpOWZUQWRUaXJRdSticTBGZjZUSEJkVGlyUXVZZ29FRkxnMkhCZFRpclFwUGRqVUh5QklQQmRUaXJRaVloYkVIMWY0N0JkVGlyUWtDeU5FRmxhcExCZFRpclFoTnI4a0QxZjQ3QmRUaXJRay9qZGtEeUJJUEJkVGlyUXJnOXlUNUxnMkhCZFRpclFrTkFKY0JmNlRIQmRUaXJRbSt0bThBaTlmVEFkVGlyUXBDWnljREw5M3ZBZFRpclFseEQyY0JvVldDK2RUaXJRcE9aeWNEa3RVOUFkVGlyUW0rdG04REdEc2RBZFRpclFrTkFKY0Q1RFFoQmRUaXJRcmc5eVQ0QkJCOUJkVGlyUWsvamRrRGwyQ1pCZFRpclFoTnI4a0FCQkI5QmRUaXJRa0N5TkVINURRaEJkVGlyUWlZaGJFSEdEc2RBZFRpclFwUGRqVUhrdFU5QWRUaXJRdVlnb0VHc2o4ckFWeWE4UXJKUUQwRlNncnpBVnlhOFFzeDRHRUVXWmRQQVZ5YThRdSttQkVGbGFOYkFWeWE4UWhKcjhrQVdaZFBBVnlhOFFrYUkyMENzajhyQVZ5YThRc0EweGtCU2dyekFWeWE4UW96a3MwQXBNcXJBVnlhOFFpdlhwVUNxM3BUQVZ5YThRc0VCblVETDkzdkFWeWE4UW03K21VQk5NazdBVnlhOFFzRUJuVUJSaXlQQVZ5YThRaXZYcFVEbTFmMi9WeWE4UW96a3MwQjZvTVcvVnlhOFFzQTB4a0RxU3FLL1Z5YThRa2FJMjBDcTNwVEFWeWE4UWpMcUkwRUNYWXJBVnlhOFFoWHVBMEVwTXFyQVZ5YThRbjUvSDBGWVpJVEFWeWE4UXE0cUJVSEw5M3ZBVnlhOFF0dHJKVUhMOTN2QVZ5YThRcXFXQlVHemZZL0FWeWE4UW5UMkFVRk5NazdBVnlhOFFqTHFJMEhuSm0vQVZ5YThRcTRxQlVIMGJKUEFWeWE4UWpUTS9rQWw1cFhBVnlhOFFvblQrRUFndnBiQVZ5YThRaEpyOGtBbDVwWEFWeWE4UXB3QzdFRDBiSlBBVnlhOFF2RUo1a0N6ZlkvQVZ5YThRai9wNEVBQ1hZckFWeWE4UXZyNTNFQllaSVRBVnlhOFFzbUEya0RMOTN2QVZ5YThRcytvMlVEbkptL0FWeWE4UXNtQTJrQ1ROV1BBVnlhOFF2cjUzRUF6OUZqQVZ5YThRai9wNEVDdUZWSEFWeWE4UXZFSjVrQlBJMHpBVnlhOFFwd0M3RUJhYzByQVZ5YThRaEpyOGtDWlBaYS9WeWE4UWhKcjhrQlBJMHpBVnlhOFFvblQrRURxU3FLL1Z5YThRdSttQkVHdUZWSEFWeWE4UWpUTS9rQjZvTVcvVnlhOFFySlFEMEV6OUZqQVZ5YThRblQyQVVIbTFmMi9WeWE4UXN4NEdFR1ROV1BBVnlhOFFoWHVBMEZSaXlQQVZ5YThRbjUvSDBGVXdPbkFWeWE4UXJDL1owRnJpL0xBVnlhOFFnUFBiMEczV2JuQVZ5YThRdUdrZFVGc3hXTEFWeWE4UXJIMVlFRVhQNmpBVnlhOFFuVGhaVUhzYkhEQVZ5YThRdllGZGtGK2ZlcS9WeWE4UWpzR2IwRnBiR1cvVnlhOFFpcmVTRUdjaVFUQVZ5YThRaGx1VjBHVjZ3TytWeWE4UXV5aFlFRWNJNmsvVnlhOFFnTllUVUYyY0hBL1Z5YThRcFhxS0VFQWtLODlWeWE4UXJtU09VRld1QjVBVnlhOFF2TzBOVUhSUVZsQVZ5YThRZ0RCR2tIbWVubEFWeWE4UWhWakFFRUVSak5BVnlhOFFrZ0UvMERCOC9BL1Z5YThRZ3JGRmtGWUhlVEFWeWE4UWsyb1VVR0N2cXJBVnlhOFFycTdURUhMOTN2QVZ5YThRdUs3UkVHdnZ6VEFWeWE4UW5Hb08wR1JyUGUvVnlhOFFoeXhNRUY3M1pXL1Z5YThRdUYzSlVFVEV1aStWeWE4UWdaa0dVRmVHYncrVnlhOFFyZXBDMEh6dUtzL1Z5YThRaEpyOGtCTHQrckF1ZzY4UXZ0cFowSHlaZlBBT0RxN1FxcG1aRUZqWWpGQUhRMjhRakpqL2tBQllpQkFHQ3E3UW5XNStFQ3dxUEhBOVVDN1F0TzhZa0dqVWEvQUVMMjZRbXMyWWtIOU1iREFZTEs2UWlNN1pFRy94M0RBMUdhNlFzMFBYa0VYWjNEQXVWZTZRblJ4WUVGWTN4UEF6VCs2UXJVUVZVSExJaEhBWmk2NlFobHVWMEdSdzVXL1hrNjZRamV1UmtFenFJeS9YejI2UWtPdVNFRkpEbVMrSzIrNlFnbGlOMEdZWXdXK1pGKzZRdlAxT0VGbDhSZy92S0c2UWxDTkprRnozek0vSUpTNlFoQ2xKMEZTNjhBL0R0aTZRZzhyRkVGdzJNOC9tY3k2UXN2S0ZFRWlYaGxBMVRHN1F1ZUgrRUNVQ3FuQUpBRzhRanEzWlVGcEltVEFGUGk3UW5mb1lFRWt6QVhBOHZPN1FobHVWMEhYbkdxL2N2VzdRbURaU0VFMFZJTTkyZmk3UWd1RE9VSDFZV28vSHY2N1FnZktLRUU1cE8wL3hBTzhRbXFTRmtIK1dYekFWeWE4UWhKcjhrQjl4TEM5ZTAyb1F2M3RuRUhQOWd4Q0laS1JRZ3pxS3NBKytRdENjanFVUXVKVXJjRHArUXhDdWQyUlFzRERKOEJpOXd0Q3plZVRRc05HcnNEUjFRdEN1K3VOUXVWVXY4RHR1d3hDS3hpTFFzekJac0FOMUF0Q041Mk5RckU2d01EZXZneEMrMStMUXM3RFk4QUhtZ2hDWmlPWFFuVTZMY0UxS0FwQ0xaZVdRdU5iRDhFNGVBcENqRWFXUWpTRUQ4RTBkQWhDSFhPWFFuMERMY0VEZkFoQ3pRYVJRckpWTWNHaVlBcEMyMjZRUWpHQ0ZjRU1ZQXBDUWlLUVFuNm9GY0dYZmdoQ2FsS1JRb3NoTWNFMGJRMUNYSytRUXF5MXByOEphZzFDS21PUVFvd2lyYityQ0ExQ3lmMkpRandkR01DcUJRMUNacldKUW80cUc4Q1I5Z05DcEZLWVFzSkJVc0ZnUC9kQlJxT1lRaUx0ZDhHKzd2WkI1L09ZUWlMdGQ4SGlIZ1JDQXdLWVFzSkJVc0VkbnZaQk5oeVRRcjA1ZnNIaUhnUkNvMUtTUXNKQlVzRWRudlpCbk0rU1FyMDVmc0hpSGdSQ0NRYVNRc0pCVXNIR0V3eENacldKUW80cUc4QUp5Z3RDS3hpTFFzekJac0FxNGdwQ041Mk5RckU2d01BcGJnbENRaUtRUW42b0ZjRWdpZ2RDelFhUlFySlZNY0gvTEFOQ0NRYVNRc0pCVXNGV3V2UkJuTStTUXIwNWZzR3pDUWRDWnJXSlFvNHFHOEQydndaQ0t4aUxRc3pCWnNBWDJBVkNONTJOUXJFNndNQVVaQVJDUWlLUVFuNm9GY0VOZ0FKQ3pRYVJRckpWTWNIVlJmeEJDUWFTUXNKQlVzRXdwdXBCbk0rU1FyMDVmc0d2YXcxQ1FRS1BRa1hUWWI0MGJRMUNHem1QUXNxTXI3M2ZhdzFDUU95T1FtRG9HTDQwYlExQ3VFNlBRb29GSWI0OFRnMUNsdVdJUWdQNndiK2tWQTFDajh1SVFzRkp1Yit2VWcxQ0NJT0lRcTc0d0wvc1N3MUN2WjJJUW1PV3liL0xZQXhDQ0lPSVFxNzR3TDhKV2d4Q3ZaMklRbU9XeWIrM1ZnZENDSU9JUXE3NHdMLzJUd2RDdloySVFtT1d5Yjk2RUF0Q3NNbVdRdFVOZ3o5NkVBdENGTFNXUXJvMWpEL2l3d1JDVTVtaVFsNjNHVURpd3dSQ3Q0T2lRbEJMSGtDUzd2eEJjYWVyUWdLRFAwQ1M3dnhCMUpHclF2VVdSRUFvT2ZKQjBlV3RRaUVTUjBBb09mSkIwZVd0UWhPbVMwQ09hK05CQlFDdlFpdVhTVUNPYStOQkJRQ3ZRaDRyVGtBb09mSkJHVUsxUXJTQnViOGVNK2RCbzYyMlFoSi9iTDRvT2ZKQkdVSzFRdUpNaWI0ZU0rZEJvNjIyUWw2K3RMK1M3dnhCTEY2eVFvb3p3NytTN3Z4QkxGNnlRdElUc0w2N01BTkM0ckdwUWxBWHpML2l3d1JDNWJPbVFvZEtKcjk2RUF0Q2llR1hRamF1RHNCNkVBdEN2M3lYUXZBdGhyL2l3d1JDMWtxbVFxaFpzTDU2RUF0QzJHcVhRdUZQVjc4MGJRMUNHSXlRUWg0Tm1MODBhZzFDM3orUVF0eWtucitmRHcxQ3hPR0pRdjZaRXNDd0RBMUNiNW1KUXB1NkZjRE5HZ3hDYjVtSlFwdTZGY0M1RUFkQ2I1bUpRcHU2RmNDUzd2eEJUTEt4UXBwWUtMd29PZkpCcllXMFFyaStqajFjMHVaQkUrbTFRbjlsMnozblJncEMxS3FZUWg5ZHE4RGl3d1JDckkybVF1Q0VvTUR0V0FsQzFYR1pRclo1RE1HV3JRTkNDVWltUWkrOUJjR1M3dnhCRmhxeVFtMDBtTUErWS90QlVwbXhRbEdLQWNFb09mSkJuUGEwUWdjbGxzRG1OdkZCTW1lMFF2eC9BTUVlTStkQmhGNjJRdTBobGNEMHZlWkI2TWUxUWtYNi84REd5KzVCbjUyelFzTFhITUdsYmVSQlZQNjBRcFpUSE1FVTN2aEJ2cyt3UXI3a0hjR3ZXd0pDQ1VpbVF0dmZJTUhtdnN4QkRBKzJRbWNrSE1FQlE5OUJsMCsyUXM2Yy84RFhCZDFCRm9TMVFtY2tITUhaTHRWQkk5cTJRczZjLzhBTzdMeEJUOWEyUW1na0hNSCtQcjFCMWFDM1FzNmMvOEFBQUFBQU5ucTRRbWdrSE1IZ2VwMUFlejI1UXM2Yy84RGdlcDFBNzNPNFFtZ2tITUVBQUFBQXcwTzVRczZjLzhEQ1pRZENCOG1hUW4yeEtjR3FvUEpCcUVDY1FrQWdkTUduNlBoQklCZW1RalNIVk1FSXp3RkNsbE9jUWpTSFZNRk9KZWhCYTgraVF0NjdhOEhDcmRCQmV5U3FRdkxGWWNHeitkaEI0aXF5UXZiNlQ4RWcwK0pCSWdheFFoOS9VTUVMbnNkQnZ1aXFRdHUzWU1FeGU5bEJDNVdvUXFQclk4R0NaT3hCVExLdVFoNk1VY0VjSmNGQkxUT3JRdHBSWU1FT2RzaEJQUTJ6UXNITFQ4R3c4TkZCNXBteVFzSExUOEV6dWI1QnBJQ3JRcm51WDhFenViNUJidVdyUWdZVlk4R0wwcmxCYWhlMFFoRHlVc0VPZHNoQkIzS3pRaER5VXNIQzRyRkJnbFNzUXR5R1lzRzhnZDVCUlhPMlFpSGw4ejI5Z2RaQkJ3R3ZRaXVYU1VDOWdkWkIwR1N2UWl1WFNVRDZJTjVCZmcrMlFpTGw4ejI5Z2RaQk5wbW5RaXlYU1VDZTh0WkJyS2V1UWtEbDh6MWZVOTlCZERxM1F0VGlYcjRRNWQ1Qm9OQzJRdFBpWHI0bHRkWkI2Zld1UXNUaVhyNWZVOTlCZERxM1F1TUtzNzhRNWQ1Qm9OQzJRdU1Lczc4bHRkWkI2Zld1UXVFS3M3OWZVOTlCcSttMlFtVEZsTUFINGQ1QjJIKzJRbVRGbE1DRVpOWkJINld1UW1URmxNQ3kwTjVCeE9XMVFzMmMvOEROVk5aQkRBdXVRczJjLzhDeXdkUkJUM0MyUXM2Yy84RGJwOHhCbDVXdVFzMmMvOEFhM3J4QkFqZTNRczZjLzhBY3JiVkJTVnl2UXMyYy84RGdlcDFBcU5PNFFzNmMvOEFBQUFBQTc5bTRRczZjLzhEZ2VwMUE4UGl3UXMyYy84QUFBQUFBT1Ard1FzMmMvOEM5Z2RaQkJ3R3ZRaDRyVGtDOWdkWkIwR1N2UWg0clRrQzlnZFpCTnBtblFoOHJUa0NaVnQ5QmMyVzJRbHh5OFQxVHpOZEJ2RnF2UWl1WFNVQlR6TmRCdkZxdlFoNHJUa0R6SE9CQlh5eTNRa0UvWUw3ekhPQkJYeXkzUW5FMnM3L3pIT0JCd2R1MlFxTE9sTUIvQXVCQkJrSzJRaWVtLzhCcnc5MUJ0WGExUWlFcEhNSE95c0ZCdXl1clFoQmNZTUhLcE5KQnpJNnlRbnJRVDhFSXFPTkJBZTIyUXZkZVpyNElxT05CQWUyMlFuVDZzNzhJcU9OQkpKMjJRa2Y0bE1BN1lPTkI5d1MyUWpYUS84Q0pHT0ZCaFRxMVFsMCtITUUrejlWQjExeXlRcmZsVDhGc3RNUkJQUXFyUXZlSllNRjdGT05CUWllMlFvaHI1ajN4bTkxQllDMnZRaXVYU1VEeG05MUJZQzJ2UWg0clRrQ0Uyd0JDbjlpdFFxbjRTY0FUZWZwQnVWNnVRcU1aM2IvYVpBRkNMT09wUW1QczVML2FaQUZDM3J5bVFtTHM1TDhUZWZwQkJvV3hRcVFaM2IrYXJ2NUJGV1NxUW5obFNzQVRlZnBCRzBteFFsOUZrc0FUZWZwQnp5S3VRbDVGa3NDYXJ2NUJZb3F0UW5obFNzQ2hEUEZCM09td1FyMlIxTCtoRFBGQktoQzBRcjZSMUwraERQRkJicWV3UWtsMWtNQ2hEUEZCdk0yelFrbDFrTUE3V2VkQnhTbXlRcHhnMEw4N1dlZEJFMUMxUXAxZzBMODdXZWRCSnVTeFFrS1JqOEE3V2VkQmN3cTFRa0tSajhEK091UkJpV0d5UWtXMHo3LytPdVJCMW9lMVFrYTB6Ny8rT3VSQmprRzFRcHhzajhEK091UkJRUnV5UXB0c2o4Qk9MT1JCanF1MVFtN3V6TDlPTE9SQlVHUzFRcGI2ajhCdFZlZEJkU3kxUXJzZmtNQ3VLdkZCYk91elF0c0drY0FGdVBwQkFsNnhRa2Zka3NEWGtnRkNQZDZwUXFsdzRyODkvUDVCTlpLdFFwaGFTc0FGdVBwQnZacXhRcWVDMnIrdUt2RkJ3UzYwUXUzYzBiOXRWZWRCQ1hPMVFpK2R6YitOTnVkQjZqKzJRcmVobE1CQ3RlTkIzSDIyUW9ONGxNQkN0ZU5CMjh5MlFqdDV0citOTnVkQkxvNjJRZ2c3dDc4YUh2SkJrU2ExUWtmeHU3L3F0ZnhCb0VxeVFqMkl4YjlZQndOQ1VMYXBRbWhUenIvcXRmeEJSd2V5UXJPcmw4Q1V1QUJDbE5HdFFtNENTc0FhSHZKQjVOdTBRZ21pbGNCTW9neENRT3lPUW1Eb0dMNFJpd3hDajh1SVFzRkp1Yitob3d4Q0d6bVBRc3FNcjczblJncENGTFNXUXJvMWpEOVArZ05DdDRPaVFsQkxIa0NzL1B0Qk0wR3JRdlVXUkVCSEh3ZENRT3lPUW1Eb0dMNExDQWRDajh1SVFzRkp1YitiSUFkQ0d6bVBRc3FNcjczaXd3UkNGTFNXUXJvMWpEK1M3dnhCdDRPaVFsQkxIa0FvT2ZKQjhwK3FRdlVXUkVDaW9PTkIvc2l1UWg0clRrQ0svUEZCUUxldFFoT21TMENrL2QxQit2U3VRaDRyVGtDbFd0aEIraUN2UWg0clRrRDZHZGRCK01tdVFoNHJUa0Q2R2RkQndTcXZRaDRyVGtENkdkZEJCNXVuUWg4clRrQzR4ZVZCblkrc1FoNHJUa0JYaWU5QmVOV3JRaFNtUzBCODhPRkJoNjJzUWg0clRrQkFHOTVCY3N1c1FoNHJUa0F5UWQxQkdOS3NRaDRyVGtBeVFkMUJScENzUWg0clRrQXlRZDFCeksyblFoOHJUa0FBQUFBQWxDbTRRbWdrSE1IZ2VwMUFUaU80UW1na0hNRjJrRFpCR3FhMFFzSExUOEdrYmpaQlpzbXNRdjlKWHNHa2JqWkJ4bmlzUXY5SlhzRjJrRFpCdS9hMFFzSExUOEVBQUFBQVp4T3hRbWNrSE1IZ2VwMUFJQTJ4UW1ja0hNRjJrRFpCN0krdFFzSExUOEdrYmpaQmxtS2xRdjVKWHNGZE9pMUJjeWk1UXM2Yy84QmRPaTFCNWw2NFFtZ2tITUhpcGpaQnpWeTRRbWdrSE1GcHF6WkJXU2E1UXM2Yy84QmRPaTFCb0w2NFFzNmMvOENEcWpaQmhyeTRRczZjLzhCZE9pMUI1T093UXMyYy84QnRtVFpCenVHd1FzMmMvOEJkT2kxQlJRNjRRbWdrSE1IaXBqWkJLd3k0UW1na0hNRmRPaTFCRi9pd1FtY2tITUhpcGpaQi92V3dRbWNrSE1IbXZzeEIxM08yUXJSS0g4Rk1YN3RCUXFtMVFtUWVPY0VPN0x4QkdUdTNRclJLSDhGNm1zcEI3dkswUW1RZU9jRjZtc3BCSkk2MFFoVDROY0ZEZTlkQi9nNjBRaFQ0TmNFWk5OaEJ3UUswUXM3OE5jSGtjOXRCcnN1elFnY1NOc0d1czk1Qm5KU3pRa1luTnNGenoraEI0Vkd5UW0rck5zRkxvZkpCQmNHdlFtNjROOEVFMFA1QmxTK21Rb1N6T3NGbW1nUkNUbzZiUWxvY1A4RmtOUVpDNGVLWFFwNmlQOEYwWEFaQ3RaS1hRaDIrUDhHOVRnWkNodEtSUXFXeFFjRnpUUVpDYTRhUlFyckxRY0dPV3dWQ2E0YVJRcnJMUWNGOVVRQkNhNGFSUXJyTFFjR3NtelpCSWxtMlFoVDROY0dzbXpaQnhLbTJRaFQ0TmNHc216WkI5VUt2UWhUNE5jRTdMRlpCeFNtNFFtZ2tITUU3TEZaQjAvUzRRczZjLzhBN0xGWkJEcDZzUW5XQlhzRTdMRlpCbzhXMFFzSExUOEU3TEZaQnU0cTRRczZjLzhBN0xGWkJUcXF3UXMyYy84QTdMRlpCbjNlMlFoVDROY0dCMFhoQnIvRzNRbWdrSE1HQjBYaEJYTDY0UXM2Yy84RHI4SkJCTnErM1FtZ2tITUZZYVpKQkxYbTRRczZjLzhDY3FZbEJwbWEwUXNITFQ4R0IwWGhCdjI2c1FnQytYc0dCMFhoQjA0KzBRc0hMVDhHUlRIMUJvV2lzUXRQRlhzRTdMRlpCYlNxMVFoRHlVc0dCMFhoQmlkT3NRbERrWWNFN0xGWkIyQUt0UXNHblljR0IwWGhCblBTMFFoRHlVc0dCMFhoQitsTzRRczZjLzhCaUhwSkJXZys0UXM2Yy84Q0IwWGhCWjIyd1FzMmMvOEFYam94Qm9UU3dRczJjLzhBN0xGWkJqNDY0UXJSS0g4R0IwWGhCWXFXMlFtUWVPY0U3TEZaQmE5eTJRbVFlT2NHQjBYaEJlbGE0UXJSS0g4RkRUWTFCN1FxMlFoVDROY0dCMFhoQm1FQzJRaFQ0TmNFaW01VkJXWmUzUW1na0hNRWltNVZCREdtNFFzNmMvOEFpbTVWQnZCMnNRcXNsWDhFaW01VkJTREcwUXNITFQ4RWltNVZCdFAyM1FzNmMvOEFpbTVWQkJBV3dRczJjLzhBaW01VkJFdU8xUWhUNE5jSEU3YVpCNlZhM1FtZ2tITUhFN2FaQmFpbTRRczZjLzhDTDBybEJvTEt6UXNITFQ4SEU3YVpCcFBTclFrTmFYOEhFN2FaQisvaXpRc0hMVDhIQzRyRkJ1TytyUXBCZ1g4SEU3YVpCOGIyM1FzNmMvOERFN2FaQnZNS3ZRczJjLzhERTdhWkJtS2ExUWhUNE5jRk1YN3RCZDBTMVFoVDROY0dxTHlVK3p6eW9RdkZmblVIaHdxNCtoeE9vUXZXVm5rR09uYzgrdDl5blF1ODhvRUdWV3F3K0JxZW5Rb3Zqb1VFRlRaQStRVTZuUXNxYXBFSHFHOG05VUR1blFydEdwVUdyM3ZPK3gxU25RclNZcEVFMlRVQy96Sk9uUWwrL29rR0hZbG0vaGVlblFvVTVvRUZ4ZGo2L2VEbW9RamkwblVIR2YrMit1bk9vUW1UY20wRkRzS3U5cDRhb1Ftb3dtMEZEcTVZK00yMm9RbTdlbTBHbHN4RS9MaTZvUXMyM25VSGZ5Q28vZHRxblFxWTlvRUhzM0E4L2dvaW5RdkhDb2tHQ3NwQSt4R09uUXZ2R3BFR2xoTWU5MWxDblF1cHlwVUdYZVBPK1IycW5RdXZFcEVGWkdrQy9VS21uUW8zcm9rR2hMMW0vQnYyblFyTmxvRUhYUXo2LytVNm9RbVBnblVHZUd1MitPb21vUW93SW5FRzRHcXE5THB5b1FwOWNtMEZKRVpjK3RZS29RcUFLbkVGZzVoRS9zRU9vUXZyam5VSFgreW8vK08rblF0ZHBvRUd2RHhBL0JaNm5RaVB2b2tGVHFwUSs3RHFvUXRpQXBrRWNPcm05ZWhLb1FxSUFwMEdoUkpRK1p5V29RcTFVcGtISXByZTkveWVvUXNnc3AwRWZnZSsrY1VHb1FzcCtwa0hONXUrKzd5dW9RcGxTcGtGVUhqNi9lWUNvUW5HbHBFRlpVVDYvOTJxb1FqMTVwRUdjTTFlL0x0U29RcGtmb2tHWVpsZS9yNzZvUW1Eem9VR2VSenkvSlNhcFFrNmFuMEdOZWp5L294Q3BRaHB1bjBGV0l1bStZbUNwUW0vQ25VRVhpT20rNFVxcFFrS1duVUdRT3BxOVVYT3BRbjhXblVHWjBKdTl6bDJwUWsvcW5FRXpvNW8rVzBTcFFsS1luVUV2Q1pzKzMxbXBRb1hFblVGeXJ4TS9Wd1dwUXE5eG4wRjM0aE0vMlJxcFF0K2RuMEVFeFN3L29MR29Rb2Yzb1VHaTl5dy9Jc2VvUXJjam9rSFoyQkUvcWwrb1F0QjhwRUd6Q3hJL01IV29RZ0dwcEVIa2NiSzk1R21vUXZIU3BrRU5OM1krTm5xb1FyYytwa0dmZXRPKzAzK29RdlU4cGtHbFpDYS9KN2FvUXZHa3BFR3BBenkvVXY2b1FqNTRva0gvemlTLzkwU3BRZ1ZNb0VGNC9jMitMbmVwUWsrMW5rR1NGWm05Z0llcFFob2hua0dlbVlBK2pIR3BRaHkzbmtFQjZQaytPRHVwUWhsUG9FRzZraEkvRS9Pb1FzbDdva0dXdlBZK2JLeW9RZ21vcEVIdkd5aEFSU3VvUWhZZW5rR2xleGhBUng2b1FwNVJuMEV4Y0JoQTdRcW9RdDhwbjBGZ0p5aEFvajZvUXR0Rm5rRlliSmMrRXBhb1FtQXluRUdCcktpOWlhK29RbUtFbTBIbXZ1eSttWnlvUWxJd25FSDVGVDYvV1dLb1Fpa0lua0hYQVZtL1l4Q29RbmVOb0VHYjdEKy9ycnluUWxJVG8wRitIZk8rcFgyblFxenNwRUVBRjhhOUwyU25RcTJhcFVHc0RaRStJWGVuUXJ6dXBFRmhMUmhBMHF5blFpOEhva0dac3lkQXBKdW5RZ2c4bzBFbXFDZEFUSWluUWtVVW8wSFJPQmhBTHNDblF2Z3Vva0hJVGhoQTNkdW5Rb2lZb0VFeVdoaEFPdStuUWtuQW9FRTUyQmhBSUx1b1FzR1RvRUg5Z3loQWZOdW9RZ0tJbjBGNzRoaEFqc3lvUW91M29FRStqaWhBNmV5b1FzeXJuMEZRVVpvKzd6S3BRb3gwblVHZkdaMjlZRXlwUW9iR25FRnQydW0rZGptcFFuUnluVUdmb3p5L00vK29RazlLbjBHVGoxZS9PcTJvUXA3UG9VRnNlajYvaVZtb1FuSlZwRUdtT1BDK2dScW9RczR1cGtFeGhicTlDd0dvUXRIY3BrRnE4cE0rL0JPb1F0NHdwa0V0RUNoQWdEaW9RaXQrcEVGY2xSaEFDRjJvUWhkeG8wRjZHaWhBN1Vtb1F2YWhwRUd4bnhoQWQyNm9RdVdVbzBITnRoaEFGNHlvUW5FQ29rRVR3UmhBaFoyb1Fqb21va0V6UHhOQXd3dW9RbkVvbjBIcjZpSkFJaXlvUW9FY25rRStYU05BeU8yb1FqaXFuMEdMc1JOQWFNMm9RaVcyb0VIRUhSTkFxdHluUW9tWG9FRUprQk5BVTU2b1Fqa2xva0ZOL0JKQWo2Mm5RcVVHb2tHYmJoTkFNbStvUWx1VW8wRVRkeUpBLzRpblFoTVVvMEZtNlNKQW9VcW9RcjZocEVGZjlpSkFnVCtvUWt4RW5rR0ZnaUpBV0p5blF0ZzdvMEVCVXlOQVc5eW9RbldHbjBFWTN5SkFORG1vUXZwOXBFR3I5cFkvc1hlb1FyWW5uRUV2b3BZL01qeW9RbHIzblVFNzI1Yy9VVG1wUW1tMW5VSEZocGMvMXYyb1FnYUZuMEgzTFpZL1l1cW5RdnAwb0VHSUVwYy9DYXlvUXFZQ29rRkZ1WlUvTkppblFubjFva0hTblpZLzJGbW9RaVNEcEVIaVk1VS9NRnluUWp6SnBFRjFTSlkvMHgyb1F2Qldwa0dQRFpjL0RZdW9RbjVQbkVHL2VwVS9rRytuUWdQeHBFRzd4cGMvNXllcFFweVJuVUh4TTVZL1pBeW9RaVV6cGtGdDRzVS9paFNvUW9rVW4wRk9GTVkvbXplb1FsVURua0VIeDhZL01OYW9Raitpb0VIWStNWS9RZm1vUWdLUm4wRnluc1UvcXVTblFxV0pvRUVNZzhZL1U2YW9RbDRYb2tFN1dzVS9xTFNuUXVmL29VSFBQc1kvUzNhb1FwbU5vMEZ1S01VL2paR25RbmdSbzBFV0RjWS9NVk9vUWl1ZnBFRTdLOFkvOVVxb1FoZ3Jua0ZCUDhVLzZxU25RanM1bzBGWDVNWS8wT2VvUWoxdG4wRncrTVUveEVHb1FsbDdwRUc5SUJwQVU0Nm5RcHprb1VHa2x5aEFQMnVuUW5Ubm9rR2k1QlpBd282blFuYmtvVUhKMHl0QXkycW5RcHZub2tFTk1DbEFibTJvUXJmNXBFRWt1UnBBaHBDb1F1ZjJvMEVDZlJkQTlwQ29RcnIybzBFd2JDeEEvR3lvUXQzNXBFRnBZeHBBTk95blF2Y0luMEZVSnhkQW8reW5RdE1JbjBGUERTbEE1QkNvUWs3Y25VRm9TU3hBZWhDb1FuVGNuVUhNK3hwQVkrNm9RalVib1VHN3Z4ZEExZTZvUWhjYm9VRzJwU2xBR1JPcFFwUHVuMEhVNFN4QXF4S3BRclh1bjBHZzhFaEE1bWFuUXR6b29rRVRDRWxBQ1lpblFwcm1vVUdEb0VsQU9vcW9RdVA0bzBFRWlVbEFGR21vUWh6N3BFSEtTa2xBNXVXblF2UUtuMEZIWmtsQWpneW9RcS9kblVFMDQwbEFGK2lvUWprZG9VR3Uva2xBdnc2cFF2ZnZuMEdrTEV4QWRtYW5Rdm5vb2tFelJFeEFtSWVuUXNEbW9VR1ozRXhBeVltb1FnUDVvMEVJeFV4QXBXaW9RanY3cEVIbmhreEFkK1duUWhRTG4wRmRva3hBSHd5b1F0ZmRuVUZJSDAxQXFPZW9RbHdkb1VIR09rMUFVUTZwUWh6d24wSHlkV3hBQlV5blFvcVdvMEdBald4QUoyMm5Ra21Vb2tIUUpXMUFXMitvUW91bXBFRlNEbTFBTms2b1FzS29wVUYvNzJ4QU9mZW5RbEJnbmtINENtMUEzeDJvUWdzem5VSHBoMjFBYXZtb1FwZHlvRUZrbzIxQURTQ3BRazlGbjBFQ0ZHNUF5MHVuUXBtV28wR0FLMjVBOG15blFscVVva0hzdzI1QUhXK29RcG1tcEVGYXJHNUEvMDJvUXRTb3BVR1RqVzVBLy9hblFtTmdua0VEcVc1QXFCMm9RaDh6blVIN0pXOUFNZm1vUXFaeW9FRmtRVzlBMlIrcFFtRkZuMEdSQ0k1Qi9PZWxRcHpYb2tFSDJvMUJxUXFtUXIvWG9VR2JEWTVCcWdtbVFvcldvVUgrMUkxQit1aWxRczdZb2tIL2RZNUJyUW1uUWc3eG8wRmtQWTVCKytpbVFrenpwRUgzY0k1Qi9PZW1RaDN5cEVGc1FvNUJxZ3FuUWtQeW8wRUI3NDFCQkplbVFxS29uVUdWSW81QkFwYW1RblNublVIZzlJMUJUcjZtUXI1OG5FRjFLSTVCVXIybVFvbDduRUg3aW81QkJaYW5RdjNCbjBGblY0NUJCWmVuUWkzRG4wSGFrSTVCVXIyblFnNldua0ZIWFk1QlRyNm5Ra1dYbmtISklDbEFtMU9vUXJYRXBFSEtiUmRBSTNlb1FyYkJvMEhoWEN4QUwxT29RdHZFcEVHeGVVbEFSRStvUWhMR3BFSGJ0VXhBMUU2b1FqM0dwRUVRLzJ4QVpUU29RcjF6cFVFZm5XNUFMVFNvUXRKenBVR0dabzVCWk02bVFrTzhwRUh6TW81QlljK21RbmE5cEVHT2E0NUJFZkNtUWpHN28wR0pnSTVCYW55blFoK01uMEZvaG81QnVhT25Rak5nbmtIV1VvNUJ0YVNuUW1WaG5rRWhsRzFBUGdhcFFrd1FuMEV1TW05QUJRYXBRbDRRbjBHQkswMUFmL1NvUWd5N24wRjU3MGxBN2ZTb1F1NjZuMEdUMGl4QTJQaW9Rclc1bjBGNmxpbEFTL21vUW8yNW4wR0lzQmRBQTlXb1FoRG1vRUdNNnhaQVg1cW5RbG44b1VHSW5paEEyM2FuUWxQL29rR1gyaXRBYjNhblFuYi9va0ZsOTBoQWhIS25RcThBbzBHTU0weEFGSEtuUXRZQW8wSFJmR3hBb1ZlblFtU3VvMEhUR201QWExZW5Rbld1bzBHdzJZMUJmdlNsUWdqeG9rRkREWTVCZi9PbFF0WHZva0ZQRW81Qk1SV21Rc251b1VGSko0NUJoNkdtUXJDL25VRW9MWTVCMU1pbVFzeVRuRUdXK1kxQjBzbW1RditVbkVIanIyNUFReW1vUXZ4S25VSGZFVzFBZkNtb1F2SktuVUV1cVV4QXZSZW9RcS8xblVFamJVbEFLeGlvUW83MW5VRkhVQ3hBR0J5b1FsRDBuVUV0RkNsQWhoeW9RaTMwblVFdExoZEFSZmluUXJRZ24wRXpiUk5CYTJHblFucWhva0ZCVFJOQk1FQ25RbVdqbzBGS3l4TkJuVUdvUXRtNHBVRTI2eE5CMFdLb1F1TzJwRUZOOGhOQnVPdW5Rc1p1bmtHU0Z4UkJkeEtvUXQxQm5VRlNjQlJCSXUyb1FqR0VvRUdVbFJSQjNCT3BRa2xYbjBHcnZoTkIzQ2VvUW5xRHBVSDdpQlJCSGZxb1F2SWhuMEhwVWhOQnlVdW5RbXU3bzBFOUhSUkJCeDZvUXVKWm5VR1BnR0pCTU91bVFzZzBva0dBWG1KQnZjbW1RaUEybzBGc1UyTkJLdXVuUWtGUHBFRmRNV05CdWNtblFwdFFwVUYzRG1OQm1IYW5Rb29FbmtFME5tTkJuWjJuUWszWW5FRlM0V05CazNhb1FnWWZvRUVPQ1dSQmxaMm9Rc255bmtGRkhHTkJJckNuUXNZYXBVSDQ4Mk5CQUlTb1F2Uzhua0g3WjJKQlFkV21RbDVPbzBHd1AyTkJJYW1uUW8vd25FSEx4SXRCVlpHbFFsUjNua0cwMDR0Qk05Q2xRaTFublVFYnpZdEJDcVNsUWpXNG5rR3F5b3RCbTdpbFFtNUxuVUhJWVd4QTZRNm5RdVgvblVFbVVXeEFNZnVtUW0xdG4wRVNjR3hBb1NhblF0NGFua0ZZUm14QVFlaW1RaTh0bjBHdFRZeEJodzZuUXAvZG5rRkVQWXhCcnFDbVF2RWpva0ZwUVl4QkNhcW1RbDlFb2tFM1VveEJUUnFuUW9Mcm5rSG80MnhBNFBxblFoL1Jva0d6TUcxQTZtYW9RZ0tIbjBIUU4yMUF4M0tvUW4rVW4wRmQ2V3hBV0FTb1FrUHhva0hFY254QUdPYW1RdDR0bjBFOWpueEF2QXluUXBNQW5rRkZaSDFBblhDb1FpMlZuMEhSRlgxQUtBS29Rdkh4b2tGK25IeEFkeVNuUXBFYm5rR3ZmWHhBQmZtbVFpTnVuMEdEcEpCQlp1K3dRbFg2SkVIUm01QkJqdmV3UWpaWU9VRVZqSkJCVE02d1F1VjVPVUUrdEpCQnFSaXhRcWZZSkVHOWpJRkJTRTJ4UWdseE9VRnZsWUZCSUVXeFFpa1RKVUVEZllGQkJTU3hRcmlTT1VFc3BZRkJZVzZ4UW5yeEpFRlBackJCbFVLd1FzOGpPVUVBYjdCQmJUcXdRdTNGSkVHUlZyQkJVeG13UW4xRk9VRzdmckJCcjJPd1FqK2tKRUhoRWNWQjlNU3ZRdXVqSkVFd0NjVkJITTJ2UXNzQk9VRnkrY1JCMnFPdlFua2pPVUdjSWNWQk5PNnZRanVDSkVGbXRJOUIyV3V1UW1lZUpFSDVtNDlCd2txdVF2Y2RPVUZUcFlCQms4R3VRanUzSkVIbWpJQkJlNkN1UXNrMk9VSGtmcTlCNExhdFFnQnFKRUYyWnE5QnlwV3RRby9wT0VIR0ljUkJaa0d0UXZ0SEpFRllDY1JCVUNDdFFvdkhPRUYvOUpOQmdlU3dRckpTT1VIdURKUkJtZ1d4UWlMVEpFR2ovcEJCclBxeFFxYUVPRUc4YjVSQnV3aXlRcEgvSTBFT0Y1RkJ4eHV5UWhVRkpFRlFWNVJCb09leFFpRi9PRUdmRGExQm9WV3dRbElwT1VFUEpxMUJ1M2F3UXNTcEpFRnZjSzFCd0ZpeFFzSlZPRUhkaUsxQjIzbXhRakRXSTBHSzRiQkJ6V2F4UXE3UUkwRWd5YkJCczBXeFFqNVFPRUdDdzQ1QllRZXlRbEtJT0VIdzI0NUJleWl5UXNRSUpFR083NEZCWjFDeVFuZWRPRUg3QjRKQmdIR3lRdWNkSkVHeFlJNUJRUVN4UXVSYk9VSDJVSTVCQU51d1FwTjlPVUVkZVk1QldpV3hRbFhjSkVGamFZNUJHUHl3UWdQK0pFSGJZSTFCZEZldVFxVWhPVUZHZVkxQmpuaXVRaFdpSkVFNk9yUkJ3Vk94UWluTEkwSE5JYlJCcHpLeFFybEtPRUd2eDdOQllTZXdRbXZBSkVGczE3TkJvVkN3UXJ1ZUpFSDl2ck5CaVMrd1Frb2VPVUZDcjdOQlJnYXdRdm8vT1VHVTE3SkIxS090UW50a0pFRW92N0pCdTRLdFFndmtPRUVCYk1WQk90Q3dRam91T0VGZ05jVkJDU0t3UXVsWEpFRnNoTVZCVmZHd1FxcXVJMEgwSE1WQjdnQ3dRbnZYT0VIQTByTkJXMk93UXZ2ek9FRVJlckJCYUhhd1FuLzVPRUZqSWExQmRZbXdRZ0wvT0VGRENKUkJWQml4UW1Jb09VR1dyNUJCWVN1eFF1WXRPVUYxZEk1QkZUaXhRcE14T1VHQm9JRkJISUd4UXJsR09VSHV1SUZCTktLeFFpakhKRUhpakk1QkxsbXhRZ1d5SkVFQ3lKQkJmRXl4UWxldUpFR3dJSlJCYnpteFF0S29KRUhST2ExQmo2cXdRblIvSkVGK2tyQkJncGV3UXU5NUpFRXU2N05CZFlTd1FtdDBKRUVLNzdSQk5HR3dRaGlGTlVFTVhMWkJGV1N3UWcxZ0tFRlhRYlZCdzJxd1FnZFZLRUhCQ2JaQmlGcXdRaHVRTlVFSUNyWkJNYWF2UWlLK0tFRkM0clJCbzQ2dlFoakNLRUZUNzdSQjNxeXZRaHl6S0VINS9MVkI5WWV2UWh6TktFSDRqN1JCRm9XdlFpUHlOVUc4dDdWQm81eXZRaTd1TlVFSG5iUkJVS092UWlyak5VR3RxclZCYUg2dlFpcjlOVUhPT2JWQnI2NnRRdmNvS0VFWkg3UkJYTFd0UXZRZEtFSFF6TE5CenF1dFFnSk9OVUdFNTdSQklxV3RRZ1paTlVGdnJiUkJTOG12UWx2UU5VRWt5TFZCbnNLdlFsN2JOVUZ3R3JaQks4eXZRbENyS0VHNS83UkIyZEt2UWtxZ0tFRktUN1pCUXlheFFpSkhPRUhkMWJaQjZFU3hRdDNHSTBFZk5MVkJqU3l4UXZaSU9FR3l1clZCTmt1eFFxL0lJMEhpTnJWQk5CK3dRZzYrSkVIN1NMVkJhVWl3UWx1Y0pFRU5VclpCNlJpd1FqcThKRUVsWkxaQkhVS3dRb2lhSkVGN3k3VkJRL3F2UW40OE9VR1QzYlZCZGlPd1Fzc2FPVUZPc0xSQmtBQ3dRbEUrT1VGcXdyUkJ4Q213UXA0Y09VRzRLclJCU3B5dFFrMWlKRUhpUmJWQi9aV3RRbmxnSkVGUXY3UkJXSGV0UXIvZ09FRWpwTE5CbzMydFFwTGlPRUZTOUxWQk9WZXdRbmZ3T0VFcDJiUkJobDJ3UWtyeU9FSGplclpCMzNXd1FqTndKRUc1WDdWQkszeXdRZ1J5SkVHNkVMVkJXQzJ4UWpGSk9FRk1sN1ZCL1V1eFF1cklJMEYrRTdWQkFDQ3dRa2ErSkVHWUpiVkJNa213UXBTY0pFSHFqTFJCV2dHd1FvdytPVUVFbjdSQmpTcXdRdGtjT1VGVEI3UkJGSjJ0UW9oaUpFSEFnTE5CYm42dFFzemlPRUhGdGJSQlQxNndRb1h5T0VGV1BMVkI5bnl3UWo5eUpFRmpSTHBCdXcreFFwdEFPRUduSExkQlZrT3hRbWZHSTBFVGxyWkJzQ1N4UXExR09FSFNYTHBCMVRDeFFnM0JJMEh5cXJaQmkwQ3dRaFNhSkVIWG1MWkJWaGV3UXNTN0pFSC8rYmxCdEMyd1FwNlVKRUZGNnJsQmRBU3dRa3kySkVGZkpMWkI1Q0d3UWxVYU9VRkVFclpCc2ZpdlFnbzhPVUdVNGJsQm13eXdRaTRVT1VIWTBibEJXdU92UXR3MU9VRW4rcmhCNW9DdFFsOWFKRUdzakxWQmFwU3RRZ1pnSkVFWkJyVkJ4SFd0UWtyZ09FRzc0YmhCejErdFF1L1pPRUZYOWJsQmJrQ3dRdHpwT0VFYk83WkJwMVd3UWdMd09FR3Z3YlpCVEhTd1FyeHZKRUhDRGJwQmlHR3dRazVxSkVHYWpMdEIxZyt4UXBTQ00wR2Znc0JCWSsrd1FnTFZLRUdPZXJ0QlNBMnhRbU91S0VGQ1JNQkJ6L093UXNlbU0wSDFYc0ZCU3Vld1F1WTBPRUdJNWNGQjhBV3hRcUswSTBIU2M4RkJKQU93UWt1SUpFRzVZY0ZCOHRtdlF2K3BKRUVsMjhCQlRMdXZRa01xT1VFLzdjQkJnT1N2UXBBSU9VR01WY0JCQjFldFFqMU9KRUg3enI5Qlh6aXRRb1BPT0VHUWlzRkI2RGF3UXZSZEpFSCtBOEZCUWhpd1FqdmVPRUh5Ykx0QnFCcXhRdDNETTBFZVdydEIvUmV4UWg1NktFRStxOEJCWmZpd1F1NmlLRUU3YXNCQkFmMndRaWpxTTBFNEVydEJWbEd3UXBUaUowRUtKYnRCL2xPd1FsQXNNMEZZWThCQnZUR3dRbVFMS0VGV0lzQkJXVGF3UXA1U00wRlFTTHRCSEZPd1FwenlNa0UvTnJ0QmoxQ3dRbTRlS0VGUlBzQkJxVEt3UWd0RktFSDEvNzlCRlRld1F0SVdNMEVGaWJ0QjV3V3hRdjk2TTBIMGRydEJXUU94UXRDbUtFRUlmOEJCZE9Xd1FtL05LRUdxUU1CQjMrbXdRalNmTTBIYUVxMUJkYm1rUWp4SW8wRWpISlJCQ0lPbFFqeElvMEdYMjJsQkloQ21RanhJbzBFV2NSZEJQSG1tUWp4SW8wRlFKOXRBaktHbVFqeElvMEVBQUFBQVdwNm1RanhJbzBISlY2dEJUaWFqUXU2ZXJrSDZvSkpCNHUralF1NmVya0hxaEdkQi9IeWtRdTZlcmtGbTdSVkJGT2FrUXU2ZXJrRkk5dGhBWlE2bFF1NmVya0VBQUFBQU13dWxRdTZlcmtIZU02WkIxaXVjUXEvNTIwSGVPbzVCVnV1Y1FxLzUyMEhaa21CQlluR2RRcS81MjBIMGJSRkJPdFdkUXEvNTIwRURkTkpBaC91ZFFxLzUyMEVBQUFBQWZmaWRRcS81MjBIYUVxM0JkYm1rUWp4SW8wRWpISlRCQ0lPbFFqeElvMEdYMjJuQkloQ21RanhJbzBFV2NSZkJQSG1tUWp4SW8wRlFKOXZBaktHbVFqeElvMEhKVjZ2QlRpYWpRdTZlcmtINm9KTEI0dStqUXU2ZXJrSHFoR2ZCL0h5a1F1NmVya0ZtN1JYQkZPYWtRdTZlcmtGSTl0akFaUTZsUXU2ZXJrSGVNNmJCMWl1Y1FxLzUyMEhlT283QlZ1dWNRcS81MjBIWmttREJZbkdkUXEvNTIwSDBiUkhCT3RXZFFxLzUyMEVEZE5MQWgvdWRRcS81MjBHZVJSakJaVFN6UXE2TmFzSFRGaGJCSWp5elFsUDBYOEg4QlJiQjFqYXpRcVNLYXNFTTdoM0JUVEd6UWxPalpNRUtXQS9CYjBPelFpL3JYOEUwUncvQklENnpRb0NCYXNHZ3ZzM0E2a2F6UW1tMFg4RUZuYzNBbTBHelFycEthc0ZYcHpIQXNFbXpRazFsWDhIN1l6SEFZRVN6UXB2N2FjRkdMSXUyRUUyelFpNjVhY0ZHTEl1MlJWS3pRczBpWDhHUWJCYkJMbGV6UXJiMUtjRm1ReDdCT1V5elFrYmpMc0VvckJqQnYxU3pRc0Q0S2NGMFhSYkJhVkt6UXY1OE04SElyUS9CZDE2elFwTHNLY0dzbmcvQnMxbXpRdDF6TThFYWFzN0E5bUd6UXN5MUtjSGlTODdBTGwyelFoYzlNOEZLL2pMQXUyU3pRcTFtS2NIYXdUTEE5Vit6UXZqdE1zRkdMSXUyM215elF0d2pLY0ZHTEl1MkxHaXpRak9yTXNFTlFCN0JLa3V6UWxvQk1jRVNXaGJCV1ZHelFoR2JOY0ZKbXcvQnBGaXpRdkNSTmNFZVJjN0FJVnl6UWlwYk5jRlJ0RExBNWw2elFnZ01OY0ZHTEl1MkltZXpRa25KTk1GajhSM0JYREt6UWthRllzRXJHaGJCTkQyelFrUFdYY0ZqV3cvQmZVU3pRaUxOWGNGUXhjM0ErVWV6UWx5V1hjRzR0REhBd0VxelFqeEhYY0ZHTEl1MlVGT3pRcm9FWGNGUk1CakJ0dXV5UXY2QmFzRy8yQjNCbXVpeVFxT1haTUc2OEJYQkl1NnlRdkYrYXNIeE1RL0JjUFd5UXRCMWFzRnRjczNBNXZpeVFnWS9hc0h2RGpIQXNQdXlRdWZ2YWNGR0xJdTJVQVN6UXNPdGFjRVpMaDdCaFFPelFwYlhMc0hsbGhqQkRReXpRZzN0S2NGTlZ4YkJmUTZ6UWdQcUtjR0ZtQS9CeXhXelF0L2dLY0dWUDg3QVB4bXpRaHlxS2NFK3FUTEFCaHl6UXZkYUtjRkdMSXUySXlTelFuRVlLY0hBS2g3QmRRS3pRcVAxTU1FaDNCM0JxT215UXBONVlzSFZGaFpCSWp5elFsUDBYOEdmUlJoQlpUU3pRcTZOYXNIK0JSWkIxamF6UXFTS2FzRU03aDFCVFRHelFsT2paTUVOV0E5QmIwT3pRaS9yWDhFMlJ3OUJJRDZ6UW9DQmFzR2x2czFBNmthelFtbTBYOEgxbk0xQW0wR3pRcnBLYXNGWXB6RkFzRW16UWsxbFg4SDhZekZBWUVTelFwdjdhY0ZtUXg1Qk9VeXpRa2JqTHNHUmJCWkJMbGV6UXJiMUtjRXFyQmhCdjFTelFzRDRLY0YyWFJaQmFWS3pRdjU4TThIS3JROUJkMTZ6UXBMc0tjR3VuZzlCczFtelF0MXpNOEVkYXM1QTltR3pRc3kxS2NIbFM4NUFMbDJ6UWhjOU04Rk0vakpBdTJTelFxMW1LY0hid1RKQTlWK3pRdmp0TXNFRVFCNUJLa3V6UWxvQk1jRVVXaFpCV1ZHelFoR2JOY0ZNbXc5QnBGaXpRdkNSTmNFaFJjNUFJVnl6UWlwYk5jRlR0REpBNWw2elFnZ01OY0ZqOFIxQlhES3pRa2FGWXNFdEdoWkJORDJ6UWtQV1hjRmxXdzlCZlVTelFpTE5YY0ZWeGMxQStVZXpRbHlXWGNHNnRERkF3RXF6UWp4SFhjRlVNQmhCdHV1eVF2NkJhc0cvMkIxQm11aXlRcU9YWk1HNzhCVkJJdTZ5UXZGK2FzSHpNUTlCY1BXeVF0QjFhc0Z3Y3MxQTV2aXlRZ1kvYXNIeERqRkFzUHV5UXVmdmFjRVpMaDVCaFFPelFwYlhMc0hubGhoQkRReXpRZzN0S2NGUFZ4WkJmUTZ6UWdQcUtjRjltQTlCeXhXelF0L2dLY0dZUDg1QVB4bXpRaHlxS2NGQXFUSkFCaHl6UXZkYUtjSEFLaDVCZFFLelFxUDFNTUVYM0IxQnFPbXlRcE41WXNGV1R2NUJjUFdnUXZhSFcwR0JJL2xCakVpYVF2aUhjRUdvdy81Qk5wMmVRc0UyV2tIUk0vbEJnRStkUXFxYmJVSHc4L0JCaE1XVVF2OG5oa0UvQ2ZOQjJLcVlRak1PZ2tFcWl2NUJZWnVrUWtKMFNVR2NCZjlCNGZHaVFvdmxRMEU1Z1AxQlVrR29RdXBhTUVGNDRQMUJpMGFuUWdYcEpFRzR5UHRCRktLcFFwSEVKa0g5Ky90QlRPbW9RdllTR1VIZTdmaEJMaityUWxleEdFRmkxdmhCcnRPcVFvaXlCMEZMRXZCQkdUU3RRbFRsQ1VIYkV1OUJVU2F0UXZQYjZrRGpNdVJCVVNxdVFuOUlCRUhTRE9SQm1rcXVRamdBM1VEd3lOcEJ1bmF1UWtOeUFrR1ViZGhCVUtXdVFpUjMyRURjZTlsQk9YK3VRZ1ErQWtGZTB0WkJZNit1UWlQMjEwQTFxTlZCS3JLdVFoN0xCRUhyR05KQjNldXVRcjFDM2tBMXFOVkI2cTJ1UWdXa0NVSHJHTkpCMHVhdVFyRTY2a0ExcU5WQlk0cXVRdGFCSWtIckdOSkJwTHl1UW1EUUUwRTFxTlZCMjJhdVFxWmZPMEhyR05KQmQ1S3VRbWlETWtFMXFOVkJsa2l1UW1LT1VFSHJHTkpCaVc2dVFpU3FURUUxcU5WQlVTcXVRbFhaWTBIckdOSkJtMHF1UXQ3UVprSHV0OVZCVnhtdVF2cEVhRUdhOE5GQmN6YXVRaExyWjBFbW9OVkJ0ZGFzUWllL2VrR2g4czVCZExlc1F2M2NmRUU5RXRSQm1GMm9RanJraTBHYmI4bEJ3dCtuUXJJRmprRmdCOVJCRVYrblFnV3Fqa0V5WXNsQmQrR21RdVdxa0VFeVlkWkJrVStsUXFjcmtrSGdHYzlCYXora1FvVGltRUhSTU5wQjVlaWpRdXJNa2tFc1FOSkJOeVdqUW9UaW1FR0htZUJCOGhxZlFvVTBrRUhUOE5wQjhtbWNRdjZmbDBFWXlPaEIzWm1ZUWtndmowRzdRdVJCVzdHVVFucGRsa0hYeE94QklxeVhRaElWaWtIbnAraEJKcGVUUXQ0UWtFR0U5dWRCSnBlVFF0NFFrRUZZa2VOQlc3R1VRbnBkbGtFTHV1RkJKcGVUUXQ0UWtFSGhWTjFCVzdHVVFucGRsa0Z3UDlwQjhtbWNRdjZmbDBIM0F0UkI4bW1jUXY2ZmwwRUlyOUZCSngyalFvVGltRUhXbE14Qmw5U2lRb1RpbUVIT2tNNUJOeVdrUW9UaW1FRXF2OGxCWHptalFvVGltRUdYVXNsQk9MK21RdVdxa0VFdHhzaEIvWXFsUXVXcWtFR2JiOGxCaDdXblFySUZqa0diYjhsQmRqbW1RcklGamtHaDhzNUJNWW1zUXYzY2ZFR2g4czVCMWVpcVF2M2NmRUdhOE5GQk1BaXVRaExyWjBHYThORkIxR2VzUWhQclowSHJHTkpCV0J5dVF0N1Faa0hyR05KQi9YdXNRdDdRWmtIckdOSkJSVUN1UWlTcVRFSHJHTkpCNnArc1FpU3FURUhyR05KQk0yU3VRbWlETWtIckdOSkIyTU9zUW1pRE1rSHJHTkpCWVk2dVFtRFFFMEhyR05KQkIrNnNRbURRRTBIckdOSkJrTGl1UXJFNjZrRHJHTkpCTlJpdFFyRTY2a0RyR05KQm1yMnVRcjFDM2tEckdOSkJQaDJ0UXIxQzNrQmUwdFpCSVlHdVFpUDIxMEJlMHRaQngrQ3NRaVAyMTBDVWJkaEI2SEd1UWlSMzJFQ1ViZGhCUzZPc1FpUjMyRURTRE9SQk14ZXVRamdBM1VEU0RPUkJsVWlzUWpnQTNVREFoZTVCRGdXdFF2UGI2a0RWaitsQnVObXJRdlBiNmtEL0pQaEJydE9xUW9peUIwR0c2UEZCcnRPcVFvaXlCMEdjU3Z0QlRPbW9RdllTR1VFaUR2VkJUT21vUXZZU0dVRVRMLzFCaTBhblFnWHBKRUdjOHZaQmkwYW5RZ1hwSkVFNVZQNUI0ZkdpUW92bFEwSEFGL2hCNGZHaVFvdmxRMEVmL3YxQk5wMmVRc0UyV2tFNkRQZEJOcDJlUXNFMldrRWNjdmhCakVpYVF2aUhjRUdsTmZKQmpFaWFRdmlIY0VHTlF2QkJoTVdVUXY4bmhrRVVCdXBCaE1XVVF2OG5oa0VuMXVSQkZIaXRRdnBFYUVGd3h1UkJFSW10UWxYWlkwRnd4dVJCVktldFFtS09VRUZ3eHVSQm1jV3RRcVpmTzBGd3h1UkJJT210UXRhQklrR1JpKzlCanpXc1F2cEVhRUhZZSs5QmlVYXNRbFhaWTBIWWUrOUJ6bVNzUW1LT1VFSFllKzlCRklPc1FxWmZPMEhZZSs5Qm02YXNRdGFCSWtIeXUvZEJkaW1xUW9DSGFVRkJNZnBCY1RxcVFrSFBYa0hJYy90QnRsaXFRbUtPVUVISWMvdEIrbmFxUWl5aVBFRUFrUGxCMDhLcVFtWkpKa0VkeSs5QkovR3NRbFNLRlVHV2dQaEJTaXFyUXZWaUhrR3plT1JCZVF1dVFsQ1ZFa0didTlwQkwybXVRaURPRVVITlQrNUJWZWVpUW9BMGhVRm1DK2hCQ2graFFqaW9pMEdSb09CQjY4dWxRZ1dxamtHVVB1SkJCcFNuUWpya2kwRjh6T05CSWcyc1FpZS9la0VkWFgxQXZtU29RckNIbjBGdUVIMUFzUGluUXRQUm9rSHJ4b2xCak1LbFFtTlhuVUVPd1lsQlA1dWxRazJEbmtHcFBZcEI4Yk9tUWxCUW9rRjFUb3BCUFNTblFudjNua0gzejRsQkg5cWxRaU56blVGZXlZbEI4cTJsUWluRW5rSHZTWXBCY1JpblFwWHBua0dGT1lwQmxLcW1RdWN2b2tIYk9lQkFoZTJtUXVZd24wR2FSK0JBS2hTblFxY0Rua0djc3VCQURIaW9RanVZbjBGaGkrQkFtUW1vUXYzMG9rRzdUdUJBNWl1blFwOGVua0ZNUCtCQWRnQ25RaTV4bjBFTXIrQkFNR3lvUXNHS24wR3BpT0JBSVFDb1F0clVva0dBYmhOQjhRT25RcHdMbmtFN1NSTkJOdDJtUW9ZNG4wSHYzMUJCdW9DbVFxemlua0VvNlZCQm02ZW1RdXExblVHRHdSTkJQUGluUWtNQW8wSC9LeFJCNW1hb1FucWtuMEdwY1ZGQmw1dW5Ra0dxb2tIN2kxRkJ1Z3FvUXU1T24wRWpleE5CbXh1blF0MG1ua0VGOUZCQlNiK21RaW5SblVGQ1VSTkJHZkNtUWdsNW4wR2g2VkJCbTVPbVFpMGpuMEdxSlJSQkVWdW9RdHFXbjBHTmhsRkI1ZjZuUWtSQm4wRit2Uk5Ceis2blF2dmZva0hSYkZGQkxKS25RdjZKb2tIWUlHSkJpMmltUWh6Sm5rR1NTR0pCa1krbVF1Q2NuVUd4QUdOQmU0R25RbmFXb2tFMWNtTkIvL0NuUXFvOG4wRnlYR0pCSXFlbVFwKzRuVUhKTDJKQlEzdW1RZ0lLbjBGRmFHTkJPZVduUXNvdW4wRSsrV0pCSG5pblFnUjJva0hDSS9wQmxmYXhRdVJQZ2NDR2pQNUJGbzJ0UW1kalNzQWFZL3BCQ2tHeFFyUENrY0RsQXYxQmYyaXZRbUFmUmNEVDBmOUIxdWlzUWtMNkNNQWFZL3BCVzN5eFFyK3kzcjg0VHdGQ0N1NnBRbWx4NXIvQ0kvcEJneCt5UWp0T0JzRFFzL05CN3E2elF1RVNnTURIRHZGQk9MK3pRajMzajhESER2RkIvQUMwUXBsQTFyL1FzL05CVHR5elFrdGtBOEJvRSsxQlI0ZTBRajd1ZnNBNGRPZEJ4ZmkwUW4wVmo4QTRkT2RCc2oyMVFqOGEwcjlvRSsxQjFyYTBRcy8xQWNEM1hlUkI1M1MxUXBSdjBiOGk4dXBCN2R5MFF1MjZBY0QzWGVSQlVpKzFRalh4anNBaTh1cEI2NnkwUWl1OGZzQWFZL3BCY2xTeFFyK3kzci9IRHZGQkV0bXpRcGxBMXI4YVkvcEJIbDZ1UXI2eTNyL0hEdkZCditLd1FwaEExcjg0ZE9kQnlCVzFRajhhMHI4NGRPZEJkaCt5UWo0YTByLzNYZVJCL1V5MVFwUnYwYi8zWGVSQnFsYXlRcE52MGIvM1hlUkJhQWUxUWpYeGpzRDNYZVJCRmhHeVFqWHhqc0E0ZE9kQjI5QzBRbjBWajhBNGRPZEJpTnF4UW4wVmo4REhEdkZCVDVlelFqMzNqOERIRHZGQi9LQ3dRajMzajhBYVkvcEJJQm14UXJQQ2tjQWFZL3BCelNLdVFyUENrY0E0VHdGQ0ljYXBRbWx4NXIrR2pQNUJMR1d0UW1kalNzQ0dqUDVCMlc2cVFtZGpTc0E0VHdGQ3pzK21RbWh4NXI5dmFCMi9MSHVJUW5Jc0RrTHNSeUUvbm9DSVFyZ0VEMExzUnlFL0xIdUlRbklzRGtKdmFCMi9ub0NJUXJnRUQwTHNSeUUvbUFXRVFydUJEMEp2YUIyL0tBQ0VRbldwRGtMc1J5RS9LQUNFUW5XcERrSnZhQjIvbUFXRVFydUJEMExzUnlFL2JvS0lRdEJNRDBKdmFCMi9ib0tJUXRCTUQwTHNSeUUvYXdlRVF0UEpEMEp2YUIyL2F3ZUVRdFBKRDBMM2l2byt2VHVJUW9OVUQwS0V5L0srdlR1SVFvTlVEMEtFeS9LK0cwNkVRaHpDRDBMM2l2bytHMDZFUWh6Q0QwTDNpdm8rWHorSVFyUGtEMEtFeS9LK1h6K0lRclBrRDBMM2l2byt2RkdFUWsxU0VFS0V5L0srdkZHRVFrMVNFRUlRaU5ZK0ZVeUhRbHc1RVVJVnljNitGVXlIUWx3NUVVSVFpTlkreTBTRlFtRW9Fa0lWeWM2K3kwU0ZRbUVvRWtLV0xJOCtQL2FhUW1BQVJrS2JiWWUrVTVhYlFqMlVSVUtiYlllK1AvYWFRbUFBUmtLV0xJOCtVNWFiUWoyVVJVSVFpTlkrRjJ5R1F1VmdFVUlWeWM2K0YyeUdRdVZnRVVMc1J5RS9sb0dGUWxGWUQwTHNSeUUvSTN5RlFncUFEa0p2YUIyL2xvR0ZRbEZZRDBKdmFCMi9JM3lGUWdxQURrTHNSeUUvWm9PRlFtbWdEMEp2YUIyL1pvT0ZRbW1nRDBMM2l2bytab09GUW1tZ0QwS0V5L0srWm9PRlFtbWdEMEwzaXZvK0I0ZUZRcGd3RUVLRXkvSytCNGVGUXBnd0VFSVZ5YzYrYW5PRlF1eGpFa0lWeWM2K3RacUdRbStjRVVJUWlOWSt0WnFHUW0rY0VVSVFpTlkrYW5PRlF1eGpFa0lWeWM2KzhGeUhRc2F0RmtJVnljNitPb1NJUWtubUZVSVFpTlkrT29TSVFrbm1GVUlRaU5ZKzhGeUhRc2F0RmtJQ1NJTStPN2VIUWhpOEZrSU5FbmUrTzdlSFFoaThGa0lORW5lK3hrQ0lRaXRmRmtJQ1NJTSt4a0NJUWl0ZkZrSUNTSU0rQ3J1SFFxSFNGa0lORW5lK0NydUhRcUhTRmtJTkVuZStsVVNJUXJWMUZrSUNTSU0rbFVTSVFyVjFGa0lORW5lKzBIT2FRcEhCUkVJTkVuZStXLzJhUXFWa1JFSU5FbmUrVy8yYVFxVmtSRUlDU0lNK1cvMmFRcVZrUkVJQ1NJTSswSE9hUXBIQlJFSUNTSU0rVy8yYVFxVmtSRUlDU0lNK1ZYV2FRcFhLUkVJTkVuZStWWFdhUXBYS1JFSU5FbmUrNGY2YVFxaHRSRUlORW5lK1cvMmFRcVZrUkVJTkVuZStXLzJhUXFWa1JFSUNTSU0rNGY2YVFxaHRSRUlDU0lNK1cvMmFRcVZrUkVJTkVuZSs0ZjZhUXFodFJFSUNTSU0rNGY2YVFxaHRSRUlDU0lNK1cvMmFRcVZrUkVMLzBwOCtZbUNhUXVjQVJVSUVGSmkrWW1DYVF1Y0FSVUlFRkppK0FpQ2JRbkYvUkVJTkVuZSs0ZjZhUXFodFJFTC8wcDgrQWlDYlFuRi9SRUlFRkppK0FpQ2JRbkYvUkVMLzBwOCtBaUNiUW5GL1JFSUNTSU0rNGY2YVFxaHRSRUpwZWJBKzdxcWFRc0xLUlVKdHVxaSs3cXFhUXNMS1JVSnR1cWkrRzRxYlF2NHpSVUlFRkppK0FpQ2JRbkYvUkVKcGViQStHNHFiUXY0elJVSnR1cWkrRzRxYlF2NHpSVUpwZWJBK0c0cWJRdjR6UlVMLzBwOCtBaUNiUW5GL1JFS1dMSTgrUC9hYVFtQUFSa0tiYlllK1AvYWFRbUFBUmtLYmJZZStVNWFiUWoyVVJVSnR1cWkrRzRxYlF2NHpSVUtXTEk4K1U1YWJRajJVUlVLV0xJOCtQL2FhUW1BQVJrSkJyVFpCaWNHeFFobjFHOEZCclRaQlpwT3lRbHNUSzhGQnJUWkJacE95UWhuMUc4RkJyVFpCaWNHeFFsc1RLOEZCclRaQnoyU3ZRaG4xRzhGQnJUWkJ6MlN2UWxzVEs4RkJyVFpCQmdDdlFsc1RLOEZCclRaQkJnQ3ZRaG4xRzhGQnJUWkJKUkNyUWhuMUc4RkJyVFpCSlJDclFsb1RLOEVBQUFBQWljR3hRaG4xRzhGNHh5TkJacE95UWhuMUc4RUFBQUFBWnBPeVFobjFHOEY0eHlOQmljR3hRaG4xRzhFQUFBQUFacE95UXQ1TGQ4RjR4eU5CaWNHeFF0MUxkOEVBQUFBQWljR3hRdDFMZDhGNHh5TkJacE95UXQ1TGQ4RkJyVFpCaWNHeFF0MUxkOEZCclRaQlpwT3lRdDVMZDhGNHh5TkJ6MlN2UWhuMUc4RUFBQUFBejJTdlFobjFHOEY0eHlOQnoyU3ZRdDFMZDhFQUFBQUF6MlN2UXQxTGQ4RkJyVFpCejJTdlF0MUxkOEVBQUFBQUJnQ3ZRaG4xRzhGNHh5TkJCZ0N2UWhuMUc4RjR4eU5CSlJDclFobjFHOEVBQUFBQUpSQ3JRaG4xRzhFQUFBQUFCZ0N2UXQxTGQ4RjR4eU5CQmdDdlF0MUxkOEZCclRaQkJnQ3ZRdDFMZDhGNHh5TkJKUkNyUXRmTVY4RUFBQUFBSlJDclF0Zk1WOEZCclRaQkpSQ3JRdGZNVjhGNHh5TkJKUkNyUWxvVEs4RUFBQUFBSlJDclFsb1RLOEY0eHlOQlpwT3lRbHNUSzhFQUFBQUFacE95UWxzVEs4RkJyVFpCQmdDdlFuOENkY0ZCclRaQnoyU3ZRbjhDZGNGQnJUWkJpY0d4UW44Q2RjRkJyVFpCWnBPeVFuOENkY0Y0eHlOQlpwT3lRbjhDZGNFQUFBQUFacE95UW44Q2RjRkJyVFpCSlJDclFseDFWc0Y0eHlOQkpSQ3JRbHgxVnNFQUFBQUFKUkNyUWx4MVZzRkJyVGJCWnBPeVFsc1RLOEZCclRiQmljR3hRaG4xRzhGQnJUYkJacE95UWhuMUc4RkJyVGJCaWNHeFFsc1RLOEZCclRiQnoyU3ZRaG4xRzhGQnJUYkJ6MlN2UWxzVEs4RkJyVGJCQmdDdlFsc1RLOEZCclRiQkJnQ3ZRaG4xRzhGQnJUYkJKUkNyUWhuMUc4RkJyVGJCSlJDclFsb1RLOEY0eHlQQlpwT3lRaG4xRzhGNHh5UEJpY0d4UWhuMUc4RjR4eVBCaWNHeFF0MUxkOEY0eHlQQlpwT3lRdDVMZDhGQnJUYkJpY0d4UXQxTGQ4RkJyVGJCWnBPeVF0NUxkOEY0eHlQQnoyU3ZRaG4xRzhGNHh5UEJ6MlN2UXQxTGQ4RkJyVGJCejJTdlF0MUxkOEY0eHlQQkJnQ3ZRaG4xRzhGNHh5UEJKUkNyUWhuMUc4RjR4eVBCQmdDdlF0MUxkOEZCclRiQkJnQ3ZRdDFMZDhGNHh5UEJKUkNyUXRmTVY4RkJyVGJCSlJDclF0Zk1WOEY0eHlQQkpSQ3JRbG9USzhGNHh5UEJacE95UWxzVEs4RkJyVGJCQmdDdlFuOENkY0ZCclRiQnoyU3ZRbjhDZGNGQnJUYkJpY0d4UW44Q2RjRkJyVGJCWnBPeVFuOENkY0Y0eHlQQlpwT3lRbjhDZGNGQnJUYkJKUkNyUWx4MVZzRjR4eVBCSlJDclFseDFWc0hGNHhuQkNiR3lRdnpTSnNHWmdSekJqWWl6UWt2NUpzRzlRUnpCZWE2eVFpN1dKc0doSXhyQkhJdXpRaG4ySnNFdUVSekJGMld6UXRiRGJjRmFjeG5CbEkyeVFvbWRiY0ZJMFJ2QkJJdXlRcitnYmNFMnN4bkJwMmV6UXFiQWJjSFBDUlBCeTVLelFucnNKc0h6eVJMQnRyaXlRbURKSnNGOVdSTEJRWld5UXUyVGJjRmFtUkxCVm0relFnZTNiY0ZvM2REQWtaaXpRcyt5SnNHY1hkREFmNzZ5UXJhUEpzSEZmTS9BQzV1eVFrTmFiY0Y5L00vQUhuV3pRbUI5YmNIcmp5dkFzcDZ6UW9WZkpzRjZrQ3JBbmNTeVFtczhKc0ZHTEl1MnZhU3pRaHdmSnNGR0xJdTJpTXF5UXRMOEpjR2p6aWpBS0tHeVF2Z0diY0U4emluQU9udXpRaElxYmNGR0xJdTJxcWV5UXM3SGJNRkdMSXUyNElHelFoWHFiTUVlQnlMQkxHS3pRazdWWnNFNHh5SEJHb2l5UWpXeVpzSE9oUm5CWTVPeVFxQUNZc0h4YXhMQkQ1dXlRZ1g1WWNHYW9jL0EycUN5UWxlL1ljRjBHQ25BOWFheVFneHNZY0ZHTEl1Mlg2MnlRdE1zWWNGcUl5TEJLYVd5UXFpckxNRkdZeUxCUG4relFzTE9MTUV6MHhuQnpLdXlRczlFTWNGWHVSTEJmTE95UWpBN01jRjJQTkRBUmJteVFvWUJNY0VLVGlyQVlyK3lRanV1TU1GR0xJdTJZc1d5UXJadU1NRzVIeUxCLzZPeVF0YjlMc0dWWHlMQkZuNnpRdk1nTDhHQ3p4bkJvcXF5UWdDWE04R210UkxCVWJLeVFtR05NOEVWTmREQUdyaXlRcmRUTThGR1B5ckFONzZ5UW13QU04RkdMSXUyUGNTeVF1ZkFNc0hweWlIQlFvbXlRZ1JnWk1IUENpTEJWMk96UWgyRFpNRjJpUm5CalpTeVFuS3dYOEdpYnhMQk9weXlRdE9tWDhIOHFNL0FCS0t5UWl4dFg4RTRKeW5BSWFpeVF1SVpYOEZHTEl1Mmc2NnlRcDdhWHNHeXhCN0JyR2F6UXAzc1pNR0xEUm5CeVdtelFrWHlhc0VseUJiQlBXeXpRakx2YXNIbzl3L0JuSE96UXZmbGFzRU1MYzdBaDNlelFxZXVhc0Y3SnpEQThYcXpRcnRlYXNGR0xJdTJRb096UXBjY2FzRXBkUm5CZFlxelFsZTJLY0hJR2gvQjBZR3pRcGk1THNIQ0x4ZkI2WXl6UWtPektjR0dYeERCU3BTelFneXFLY0ZHL003QU1waXpRcmx5S2NIeHhUSEFucHV6UXNvaUtjRkdMSXUyWmFPelFrVGdLTUZiRngvQnZvQ3pRaUhkTU1FVXlCN0J2V2V6UWhmSllzRmt2eDdCZkZTelFyRHBaTUU5Q0JuQm0xZXpRbGZ2YXNITndoYkJFRnF6UWtUc2FzR1o4Zy9CY1dHelFncmphc0Z2SXM3QVcyV3pRcm1yYXNGQ0VqREF3Mml6UXNwYmFzRkdMSXUyRlhHelFyd1phc0hhYnhuQlNYaXpRbW16S2NGdkZSL0JvbSt6UXFlMkxzRnFLaGZCdlhxelFsYXdLY0V1V2hEQkc0S3pRaCtuS2NHcjhjN0FCNGF6UXN0dktjRzRzREhBYm9telF0a2ZLY0ZHTEl1Mk5aR3pRbW5kS01FTkVoL0JrbTZ6UWpUYU1NSEd3aDdCa0ZXelFpYkdZc0cvcEI3Qm9mbXlRaFhiWk1HaTdSakJ2dnl5UXJyZ2FzRXlxQmJCTVAreVFxYmRhc0gxMXcvQmtnYXpRbXpVYXNFNTdjM0FlZ3F6UWhpZGFzSFdweS9BNXcyelFpbE5hc0ZHTEl1MkpSYXpRbk1MYXNFMVZSbkJhUjJ6UXNpa0tjSFUraDdCeGhTelFnbW9Mc0hQRHhmQjN4K3pRcldoS2NHVFB4REJQeWV6UW9HWUtjRjF2TTdBSnl1elFpcGhLY0ZNUmpIQWtpNnpRajRSS2NGR0xJdTJTRGF6UWlEUEtNRnk5eDdCc2hPelFwUExNTUVycUI3QnNmcXlRb2kzWXNGeG54N0JkT2V5UWlUWVpNRks2QmpCa2VxeVFzemRhc0hqb2hiQkIrMnlRcm5hYXNHbjBnL0JadlN5UW43UmFzR0k0czNBVVBpeVFpdWFhc0Yya2kvQXVQdXlRa0pLYXNGR0xJdTI5UU96UXBrSWFzSG5UeG5CUGd1elF0NmhLY0dHOVI3Qm1RS3pRaHVsTHNHQkNoZkJzZzJ6UXNxZUtjRkVPaERCRVJXelFwQ1ZLY0hFc2M3QS9SaXpRajFlS2NIc01ESEFaaHl6UWxFT0tjRkdMSXUyR1NTelFrUE1LTUVhOGg3QmlnR3pRcWpJTU1IVG9oN0JodWl5UXBxMFlzRy8yQjNCbXVpeVFxT1haTUZSTUJqQnR1dXlRdjZCYXNHNjhCWEJJdTZ5UXZGK2FzSHhNUS9CY1BXeVF0QjFhc0Z0Y3MzQTV2aXlRZ1kvYXNIdkRqSEFzUHV5UXVmdmFjRkdMSXUyVUFTelFzT3RhY0hsbGhqQkRReXpRZzN0S2NFWkxoN0JoUU96UXBiWExzRk5WeGJCZlE2elFnUHFLY0dGbUEvQnl4V3pRdC9nS2NHVlA4N0FQeG16UWh5cUtjRStxVExBQmh5elF2ZGFLY0ZHTEl1Mkl5U3pRbkVZS2NIQUtoN0JkUUt6UXFQMU1NRWgzQjNCcU9teVFwTjVZc0djZ1J4QmpZaXpRa3Y1SnNISDR4bEJDYkd5UXZ6U0pzRy9RUnhCZWE2eVFpN1dKc0drSXhwQkhJdXpRaG4ySnNGYmN4bEJsSTJ5UW9tZGJjRXdFUnhCRjJXelF0YkRiY0ZKMFJ0QkJJdXlRcitnYmNFNHN4bEJwMmV6UXFiQWJjSFFDUk5CeTVLelFucnNKc0gweVJKQnRyaXlRbURKSnNGL1dSSkJRWld5UXUyVGJjRmJtUkpCVm0relFnZTNiY0Z0M2RCQWtaaXpRcyt5SnNHZlhkQkFmNzZ5UXJhUEpzSElmTTlBQzV1eVFrTmFiY0dCL005QUhuV3pRbUI5YmNIdGp5dEFzcDZ6UW9WZkpzRjdrQ3BBbmNTeVFtczhKc0duemloQUtLR3lRdmdHYmNFWnppbEFPbnV6UWhJcWJjRWVCeUpCTEdLelFrN1Zac0U0eHlGQkdvaXlRald5WnNIR2hSbEJZNU95UXFBQ1lzSDBheEpCRDV1eVFnWDVZY0dlb2M5QTJxQ3lRbGUvWWNGNUdDbEE5YWF5UWd4c1ljRmdJeUpCS2FXeVFxaXJMTUZHWXlKQlBuK3pRc0xPTE1FMTB4bEJ6S3V5UXM5RU1jRll1UkpCZkxPeVFqQTdNY0Y3UE5CQVJibXlRb1lCTWNFTFRpcEFZcit5UWp1dU1NRzVIeUpCLzZPeVF0YjlMc0dWWHlKQkZuNnpRdk1nTDhHRXp4bEJvcXF5UWdDWE04R250UkpCVWJLeVFtR05NOEVaTmRCQUdyaXlRcmRUTThGSVB5cEFONzZ5UW13QU04SHB5aUZCUW9teVFnUmdaTUhGQ2lKQlYyT3pRaDJEWk1GM2lSbEJqWlN5UW5Ld1g4R2tieEpCT3B5eVF0T21YOEgvcU05QUJLS3lRaXh0WDhFOUp5bEFJYWl5UXVJWlg4R3l4QjVCckdhelFwM3NaTUdNRFJsQnlXbXpRa1h5YXNFbnlCWkJQV3l6UWpMdmFzSHE5dzlCbkhPelF2Zmxhc0VSTGM1QWgzZXpRcWV1YXNGOUp6QkE4WHF6UXJ0ZWFzRXFkUmxCZFlxelFsZTJLY0c5R2g5QjBZR3pRcGk1THNHNkx4ZEI2WXl6UWtPektjR0lYeEJCU3BTelFneXFLY0ZML001QU1waXpRcmx5S2NIenhURkFucHV6UXNvaUtjRmJGeDlCdm9DelFpSGRNTUVVeUI1QnZXZXpRaGZKWXNGYXZ4NUJmRlN6UXJEcFpNRS9DQmxCbTFlelFsZnZhc0hPd2haQkVGcXpRa1RzYXNHYzhnOUJjV0d6UWdyamFzRnlJczVBVzJXelFybXJhc0ZFRWpCQXcyaXpRc3BiYXNIU2J4bEJTWGl6UW1tektjRnZGUjlCb20relFxZTJMc0ZzS2hkQnZYcXpRbGF3S2NFdldoQkJHNEt6UWgrbktjR3U4YzVBQjRhelFzdHZLY0c2c0RGQWJvbXpRdGtmS2NFTkVoOUJrbTZ6UWpUYU1NSEd3aDVCa0ZXelFpYkdZc0cvcEI1Qm9mbXlRaFhiWk1HazdSaEJ2dnl5UXJyZ2FzRXpxQlpCTVAreVFxYmRhc0gyMXc5QmtnYXpRbXpVYXNFODdjMUFlZ3F6UWhpZGFzSFlweTlBNXcyelFpbE5hc0UzVlJsQmFSMnpRc2lrS2NIVStoNUJ4aFN6UWdtb0xzSFJEeGRCM3grelFyV2hLY0dVUHhCQlB5ZXpRb0dZS2NGNHZNNUFKeXV6UWlwaEtjRk9SakZBa2k2elFqNFJLY0Z5OXg1QnNoT3pRcFBMTU1FcnFCNUJzZnF5UW9pM1lzRnhueDVCZE9leVFpVFlaTUZMNkJoQmtlcXlRc3pkYXNIbG9oWkJCKzJ5UXJuYWFzR3AwZzlCWnZTeVFuN1Jhc0dONHMxQVVQaXlRaXVhYXNGM2tpOUF1UHV5UWtKS2FzSHBUeGxCUGd1elF0NmhLY0dHOVI1Qm1RS3pRaHVsTHNGNUNoZEJzZzJ6UXNxZUtjRkdPaEJCRVJXelFwQ1ZLY0hIc2M1QS9SaXpRajFlS2NIdU1ERkFaaHl6UWxFT0tjRWE4aDVCaWdHelFxaklNTUhUb2g1Qmh1aXlRcHEwWXNHLzJCMUJtdWl5UXFPWFpNRlVNQmhCdHV1eVF2NkJhc0c3OEJWQkl1NnlRdkYrYXNIek1ROUJjUFd5UXRCMWFzRndjczFBNXZpeVFnWS9hc0h4RGpGQXNQdXlRdWZ2YWNIbmxoaEJEUXl6UWczdEtjRVpMaDVCaFFPelFwYlhMc0ZQVnhaQmZRNnpRZ1BxS2NGOW1BOUJ5eFd6UXQvZ0tjR1lQODVBUHhtelFoeXFLY0ZBcVRKQUJoeXpRdmRhS2NIQUtoNUJkUUt6UXFQMU1NRVgzQjFCcU9teVFwTjVZc0ZvVldDK2RUaXJRdSticTBITDkzdkFkVGlyUXIvdnJVRmJlb3ErZFRpclFpZ1Rxa0hMOTN2QWRUaXJRbUdHcjBFaTlmVEFkVGlyUXUrYnEwRWxVUFBBZFRpclFpZ1Rxa0ZmNlRIQmRUaXJRdVlnb0VHK1VqREJkVGlyUXIvQW5rRkxnMkhCZFRpclFwUGRqVUU5UkYvQmRUaXJRZ3UrakVIeUJJUEJkVGlyUWlZaGJFSE1wSUhCZFRpclFvU0tha0gxZjQ3QmRUaXJRa0N5TkVFdjk0ekJkVGlyUXNQZk0wRmxhcExCZFRpclFoTnI4a0RGMDVEQmRUaXJRaE5yOGtBdjk0ekJkVGlyUWtBdGVrRDFmNDdCZFRpclFrL2pka0RNcElIQmRUaXJRdVlSL0Q3eUJJUEJkVGlyUXJnOXlUNDlSRi9CZFRpclFndEVITUJMZzJIQmRUaXJRa05BSmNDK1VqREJkVGlyUXRZc2xzQmY2VEhCZFRpclFtK3RtOEFsVVBQQWRUaXJRblIydzhBaTlmVEFkVGlyUXBDWnljREw5M3ZBZFRpclF0VG8wc0RMOTN2QWRUaXJRbHhEMmNCb1ZXQytkVGlyUXBPWnljQmJlb3ErZFRpclFuZDJ3OERrdFU5QWRUaXJRbSt0bThCaFcwbEFkVGlyUXRZc2xzREdEc2RBZFRpclFrTkFKY0Nya01KQWRUaXJRZ3RFSE1ENURRaEJkVGlyUXJnOXlUNnVUUVZCZFRpclF1WVIvRDRCQkI5QmRUaXJRay9qZGtCNDhodEJkVGlyUWtBdGVrRGwyQ1pCZFRpclFoTnI4a0NqcXlOQmRUaXJRaE5yOGtCNDhodEJkVGlyUXNQZk0wRUJCQjlCZFRpclFrQ3lORUd1VFFWQmRUaXJRb1NLYWtINURRaEJkVGlyUWlZaGJFR3JrTUpBZFRpclFndStqRUhHRHNkQWRUaXJRcFBkalVGaFcwbEFkVGlyUXIvQW5rSGt0VTlBZFRpclF1WWdvRUhMOTN2QWRUaXJRaDVackVFQ3lxUytkVGlyUW1LS3FFRXdxL0hBZFRpclFtS0txRUVldkM3QmRUaXJRcGhnblVFdUJWM0JkVGlyUW9PZWkwR2xSSURCZFRpclF1UHphRUZxYm92QmRUaXJRa1lOTTBFbFBZL0JkVGlyUWhOcjhrQnFib3ZCZFRpclFqUjNmVUNsUklEQmRUaXJRZ3B6Rno4dUJWM0JkVGlyUXMxSEU4QWV2QzdCZFRpclFqcXNrTUF3cS9IQWRUaXJRbDlUdmNETDkzdkFkVGlyUWxHT3pNQUN5cVMrZFRpclFsOVR2Y0RlQUVOQWRUaXJRanFza01DS0VyNUFkVGlyUXMxSEU4QmhqUUpCZFRpclFncHpGei9xNEJoQmRUaXJRalIzZlVCaGZpQkJkVGlyUWhOcjhrRHE0QmhCZFRpclFrWU5NMEZoalFKQmRUaXJRdVB6YUVHS0VyNUFkVGlyUW9PZWkwSGVBRU5BZFRpclFwaGduVUhMOTN2QVQ2V3BRaDVackVFQ3lxUytUNldwUW1LS3FFRXdxL0hBVDZXcFFtS0txRUVldkM3QlQ2V3BRcGhnblVFdUJWM0JUNldwUW9PZWkwR2xSSURCVDZXcFF1UHphRUZxYm92QlQ2V3BRa1lOTTBFbFBZL0JUNldwUWhScjhrQnFib3ZCVDZXcFFqUjNmVUNsUklEQlQ2V3BRZ3R6Rno4dUJWM0JUNldwUXMxSEU4QWV2QzdCVDZXcFFqcXNrTUF3cS9IQVQ2V3BRbDlUdmNETDkzdkFUNldwUWxHT3pNQUN5cVMrVDZXcFFsOVR2Y0RlQUVOQVQ2V3BRanFza01DS0VyNUFUNldwUXMxSEU4QmhqUUpCVDZXcFFndHpGei9xNEJoQlQ2V3BRalIzZlVCaGZpQkJUNldwUWhScjhrRHE0QmhCVDZXcFFrWU5NMEZoalFKQlQ2V3BRdVB6YUVHS0VyNUFUNldwUW9PZWkwSGVBRU5BVDZXcFFwaGduVUhMOTN2QVQ2V3BRbnpDcWtHcEdiKytUNldwUXBzQnAwRTNCdkRBVDZXcFFwc0JwMEY4SlMzQlQ2V3BRbkVBbkVFZ3hsckJUNldwUXZwK2lrSDl5SDNCVDZXcFFrRmRaMEdrNVluQlQ2V3BRc2s2TWtHRXBvM0JUNldwUWhScjhrQ2s1WW5CVDZXcFFwVmdnRUQ5eUgzQlQ2V3BRZ25kTUQ4Z3hsckJUNldwUW9sTENzQjhKUzNCVDZXcFFwNHJpOEEzQnZEQVQ2V3BRa013dDhETDkzdkFUNldwUXNzenhzQ3BHYisrVDZXcFFrWXd0OEJicGp4QVQ2V3BRcDRyaThCdGxMbEFUNldwUW9sTENzQXJtdjlBVDZXcFFnbmRNRDloenhWQlQ2V3BRcFZnZ0VBZ1VSMUJUNldwUWhScjhrQmh6eFZCVDZXcFFzazZNa0VybXY5QVQ2V3BRa0ZkWjBGdGxMbEFUNldwUXZwK2lrRmJwanhBVDZXcFFuRUFuRUhMOTN2QVQ2V3BRbGo2WDBFYWt4SEFUNldwUXVaNVhFRkVMclBBVDZXcFF1WjVYRUdJd09UQVQ2V3BRcU0xVWtINXFBZkJUNldwUXFyZ1FVSHEvUmZCVDZXcFF2Q1hMRUVtUWlMQlQ2V3BRc1BPRTBHWXdpWEJUNldwUWhScjhrQW1RaUxCVDZXcFFwNDR2VURxL1JmQlQ2V3BRa09taTBENXFBZkJUNldwUXBvcFFrQ093T1RBVDZXcFFzVFZBRUJKTHJQQVQ2V3BRbjJKcnovTDkzdkFUNldwUXRxRmt6OFBreEhBVDZXcFFuR0pyejlDdWptL1Q2V3BRcjdWQUVEbzBCby9UNldwUXBRcFFrQUlFTkEvVDZXcFFraW1pMEFBR1JGQVQ2V3BRcU00dlVDOUdoOUFUNldwUWhScjhrQUFHUkZBVDZXcFFzTE9FMEVJRU5BL1Q2V3BRdTZYTEVIbzBCby9UNldwUXF2Z1FVRkN1am0vVDZXcFFxUTFVa0cwWnJ2QjRyS29RcGpnZHNGSnVMVEJGcEdvUW9sUGZNSFA4N0hCZnorb1FzTzJoTUZKdUxUQjUrMm5Rc1JGaThHMFpydkJITXluUWp2OWpjRWVGY0xCNSsyblFzUkZpOEdZMmNUQmZ6K29Rc08yaE1FZUZjTEJGcEdvUW9sUGZNRWVGY0xCMnUyalFtQVpkY0cwWnJ2QnBRK2tRbktxYjhGSnVMVEIydTJqUW1BWmRjSFA4N0hCUTV5alFxOGJnY0ZKdUxUQnEwcWpRcStxaDhHMFpydkIzeWlqUWloaWlzRWVGY0xCcTBxalFxK3FoOEdZMmNUQlE1eWpRcThiZ2NGOFBMZkJSSWVlUXRkZGFjRklzYkRCOStPZVFzWE1ic0ZYckszQnVzbWVRc1hxZThGeDhxL0I2VWVlUW1PRWhNR2FMcmJCazZxZFF0bzdoOEhNdWJ6QjMwMmRRbU9FaE1HOXZyL0JIV2lkUXNYcWU4R2plTDNCN09tZFFzWE1ic0dYbmFyQjgwNlhRdS9xWDhGYUlLVEJOYnFYUXQxWlpjRTVHS0hCdXFhWFF0cDNjc0hZUzZQQjZ4K1hRdHVWZjhFUWNhbkJ2M1NXUW1hQ2dzRk03cS9CZkFtV1F0dVZmOEZ2OXJMQitCeVdRdHAzY3NIUHdyREJ5S09XUXQxWlpjRUdzYnZCQUQrV1F0Z05VTUdMa2F2QkV3Q1lRcDNNUWNFa2k1ckJmQm1aUXRnTlVNSGxscExCWWVhWVF0cDNjc0dnWFpqQnM0U1hRdkJ3aXNFYWZhakJuc09WUW8rUmtjR0VnN25CTnFxVVF2Sndpc0hDZDhIQlV0MlVRdHAzY3NFNms2ekJLN3VZUWswQVE4RzFzcnpCR1BxV1FvaEJVY0hUakp2QmxOU1pRb2hCVWNHVm1KUEJlYUdaUW91cmM4Rk9YNW5CeWorWVFzZ0tpOEhKZnFuQnRuNldRbWNya3NFeWhickJUbVdWUXNvS2k4RndlY0xCYVppVlFvaXJjOEZXcnF6QjJzNllRcG1uUDhFK2ZKckJuUHVaUXNEalRzSDkrNUhCL3NTWlFvdXJjOEZrS0pqQi9VcVlRcXM1ak1Hdlk2bkJDR3VXUXNIWGs4SElsYnZCUlQ2VlFxNDVqTUdCSS9uQmpFaWFRdmlIY0VGV1R2N0JjUFdnUXZhSFcwR293LzdCTnAyZVFzRTJXa0hSTS9uQmdFK2RRcXFiYlVIdzgvREJoTVdVUXY4bmhrRS9DZlBCMktxWVFqTU9na0VxaXY3QlladWtRa0owU1VHY0JmL0I0ZkdpUW92bFEwRTVnUDNCVWtHb1F1cGFNRUY0NFAzQmkwYW5RZ1hwSkVHNHlQdkJGS0twUXBIRUprSDkrL3ZCVE9tb1F2WVNHVUhlN2ZqQkxqK3JRbGV4R0VGaTF2akJydE9xUW9peUIwRkxFdkRCR1RTdFFsVGxDVUhiRXUvQlVTYXRRdlBiNmtEak11VEJVU3F1UW45SUJFSFNET1RCbWtxdVFqZ0EzVUR3eU5yQnVuYXVRa055QWtHVWJkakJVS1d1UWlSMzJFRGNlOW5CT1grdVFnUStBa0ZlMHRiQlk2K3VRaVAyMTBBMXFOWEJLckt1UWg3TEJFSHJHTkxCM2V1dVFyMUMza0ExcU5YQjZxMnVRZ1drQ1VIckdOTEIwdWF1UXJFNjZrQTFxTlhCWTRxdVF0YUJJa0hyR05MQnBMeXVRbURRRTBFMXFOWEIyMmF1UXFaZk8wSHJHTkxCZDVLdVFtaURNa0UxcU5YQmxraXVRbUtPVUVIckdOTEJpVzZ1UWlTcVRFRTFxTlhCVVNxdVFsWFpZMEhyR05MQm0wcXVRdDdRWmtIdXQ5WEJWeG11UXZwRWFFR2E4TkhCY3phdVFoTHJaMEVtb05YQnRkYXNRaWUvZWtHaDhzN0JkTGVzUXYzY2ZFRTlFdFRCbUYyb1FqcmtpMEdiYjhuQnd0K25RcklGamtGZ0I5VEJFVituUWdXcWprRXlZc25CZCtHbVF1V3FrRUV5WWRiQmtVK2xRcWNya2tIZ0djL0JheitrUW9UaW1FSFJNTnJCNWVpalF1ck1ra0VzUU5MQk55V2pRb1RpbUVHSG1lREI4aHFmUW9VMGtFSFQ4TnJCOG1tY1F2NmZsMEVZeU9qQjNabVlRa2d2ajBHN1F1VEJXN0dVUW5wZGxrSFh4T3pCSXF5WFFoSVZpa0hucCtqQkpwZVRRdDRRa0VHRTl1ZkJKcGVUUXQ0UWtFRllrZVBCVzdHVVFucGRsa0VMdXVIQkpwZVRRdDRRa0VIaFZOM0JXN0dVUW5wZGxrRndQOXJCOG1tY1F2NmZsMEgzQXRUQjhtbWNRdjZmbDBFSXI5SEJKeDJqUW9UaW1FSFdsTXpCbDlTaVFvVGltRUhPa003Qk55V2tRb1RpbUVFcXY4bkJYem1qUW9UaW1FR1hVc25CT0wrbVF1V3FrRUV0eHNqQi9ZcWxRdVdxa0VHYmI4bkJoN1duUXJJRmprR2JiOG5CZGptbVFySUZqa0doOHM3Qk1ZbXNRdjNjZkVHaDhzN0IxZWlxUXYzY2ZFR2E4TkhCTUFpdVFoTHJaMEdhOE5IQjFHZXNRaFByWjBIckdOTEJXQnl1UXQ3UVprSHJHTkxCL1h1c1F0N1Faa0hyR05MQlJVQ3VRaVNxVEVIckdOTEI2cCtzUWlTcVRFSHJHTkxCTTJTdVFtaURNa0hyR05MQjJNT3NRbWlETWtIckdOTEJZWTZ1UW1EUUUwSHJHTkxCQis2c1FtRFFFMEhyR05MQmtMaXVRckU2NmtEckdOTEJOUml0UXJFNjZrRHJHTkxCbXIydVFyMUMza0RyR05MQlBoMnRRcjFDM2tCZTB0YkJJWUd1UWlQMjEwQmUwdGJCeCtDc1FpUDIxMENVYmRqQjZIR3VRaVIzMkVDVWJkakJTNk9zUWlSMzJFRFNET1RCTXhldVFqZ0EzVURTRE9UQmxVaXNRamdBM1VEQWhlN0JEZ1d0UXZQYjZrRFZqK25CdU5tclF2UGI2a0QvSlBqQnJ0T3FRb2l5QjBHRzZQSEJydE9xUW9peUIwR2NTdnZCVE9tb1F2WVNHVUVpRHZYQlRPbW9RdllTR1VFVEwvM0JpMGFuUWdYcEpFR2M4dmJCaTBhblFnWHBKRUU1VlA3QjRmR2lRb3ZsUTBIQUYvakI0ZkdpUW92bFEwRWYvdjNCTnAyZVFzRTJXa0U2RFBmQk5wMmVRc0UyV2tFY2N2akJqRWlhUXZpSGNFR2xOZkxCakVpYVF2aUhjRUdOUXZEQmhNV1VRdjhuaGtFVUJ1ckJoTVdVUXY4bmhrRW4xdVRCRkhpdFF2cEVhRUZ3eHVUQkVJbXRRbFhaWTBGd3h1VEJWS2V0UW1LT1VFRnd4dVRCbWNXdFFxWmZPMEZ3eHVUQklPbXRRdGFCSWtHUmkrL0JqeldzUXZwRWFFSFllKy9CaVVhc1FsWFpZMEhZZSsvQnptU3NRbUtPVUVIWWUrL0JGSU9zUXFaZk8wSFllKy9CbTZhc1F0YUJJa0h5dS9mQmRpbXFRb0NIYVVGQk1mckJjVHFxUWtIUFhrSEljL3ZCdGxpcVFtS09VRUhJYy92QituYXFRaXlpUEVFQWtQbkIwOEtxUW1aSkprRWR5Ky9CSi9Hc1FsU0tGVUdXZ1BqQlNpcXJRdlZpSGtHemVPVEJlUXV1UWxDVkVrR2J1OXJCTDJtdVFpRE9FVUhOVCs3QlZlZWlRb0EwaFVGbUMrakJDaCtoUWppb2kwR1JvT0RCNjh1bFFnV3Fqa0dVUHVMQkJwU25RanJraTBGOHpPUEJJZzJzUWllL2VrR0dqUDdCRm8ydFFtZGpTc0RDSS9yQmxmYXhRdVJQZ2NBYVkvckJDa0d4UXJQQ2tjRGxBdjNCZjJpdlFtQWZSY0FhWS9yQlczeXhRcit5M3IvVDBmL0IxdWlzUWtMNkNNQTRUd0hDQ3U2cFFtbHg1ci9DSS9yQmd4K3lRanRPQnNEUXMvUEI3cTZ6UXVFU2dNREhEdkhCT0wrelFqMzNqOERIRHZIQi9BQzBRcGxBMXIvUXMvUEJUdHl6UWt0a0E4Qm9FKzNCUjRlMFFqN3Vmc0E0ZE9mQnhmaTBRbjBWajhBNGRPZkJzajIxUWo4YTByOW9FKzNCMXJhMFFzLzFBY0QzWGVUQjUzUzFRcFJ2MGI4aTh1ckI3ZHkwUXUyNkFjRDNYZVRCVWkrMVFqWHhqc0FpOHVyQjY2eTBRaXU4ZnNBYVkvckJjbFN4UXIreTNyL0hEdkhCRXRtelFwbEExcjhhWS9yQkhsNnVRcjZ5M3IvSER2SEJ2K0t3UXBoQTFyODRkT2ZCeUJXMVFqOGEwcjg0ZE9mQmRoK3lRajRhMHIvM1hlVEIvVXkxUXBSdjBiLzNYZVRCcWxheVFwTnYwYi8zWGVUQmFBZTFRalh4anNEM1hlVEJGaEd5UWpYeGpzQTRkT2ZCMjlDMFFuMFZqOEE0ZE9mQmlOcXhRbjBWajhESER2SEJUNWV6UWozM2o4REhEdkhCL0tDd1FqMzNqOEFhWS9yQklCbXhRclBDa2NBYVkvckJ6U0t1UXJQQ2tjQTRUd0hDSWNhcFFtbHg1citHalA3QkxHV3RRbWRqU3NDR2pQN0IyVzZxUW1kalNzQTRUd0hDenMrbVFtaHg1cjgrK1F2Q2NqcVVRdUpVcmNEUDlnekNJWktSUWd6cUtzRHArUXpDdWQyUlFzRERKOEJpOXd2Q3plZVRRc05HcnNEdHV3ekNLeGlMUXN6QlpzRFIxUXZDdSt1TlF1VlV2OEFOMUF2Q041Mk5RckU2d01EZXZnekMrMStMUXM3RFk4QTFLQXJDTFplV1F1TmJEOEVIbWdqQ1ppT1hRblU2TGNFNGVBckNqRWFXUWpTRUQ4RTBkQWpDSFhPWFFuMERMY0dpWUFyQzIyNlFRakdDRmNFRGZBakN6UWFSUXJKVk1jRU1ZQXJDUWlLUVFuNm9GY0dYZmdqQ2FsS1JRb3NoTWNFMGJRM0NYSytRUXF5MXByOEphZzNDS21PUVFvd2lyYityQ0EzQ3lmMkpRandkR01DcUJRM0NacldKUW80cUc4QmdQL2ZCUnFPWVFpTHRkOEdSOWdQQ3BGS1lRc0pCVXNHKzd2YkI1L09ZUWlMdGQ4SGlIZ1RDQXdLWVFzSkJVc0VkbnZiQk5oeVRRcjA1ZnNIaUhnVENvMUtTUXNKQlVzRWRudmJCbk0rU1FyMDVmc0hpSGdUQ0NRYVNRc0pCVXNIR0V3ekNacldKUW80cUc4QUp5Z3ZDS3hpTFFzekJac0FxNGdyQ041Mk5RckU2d01BcGJnbkNRaUtRUW42b0ZjRWdpZ2ZDelFhUlFySlZNY0gvTEFQQ0NRYVNRc0pCVXNGV3V2VEJuTStTUXIwNWZzR3pDUWZDWnJXSlFvNHFHOEQydndiQ0t4aUxRc3pCWnNBWDJBWENONTJOUXJFNndNQVVaQVRDUWlLUVFuNm9GY0VOZ0FMQ3pRYVJRckpWTWNIVlJmekJDUWFTUXNKQlVzRXdwdXJCbk0rU1FyMDVmc0UwYlEzQ0d6bVBRc3FNcjcydmF3M0NRUUtQUWtYVFliN2ZhdzNDUU95T1FtRG9HTDQwYlEzQ3VFNlBRb29GSWI0OFRnM0NsdVdJUWdQNndiK2tWQTNDajh1SVFzRkp1Yit2VWczQ0NJT0lRcTc0d0wvc1N3M0N2WjJJUW1PV3liL0xZQXpDQ0lPSVFxNzR3TDhKV2d6Q3ZaMklRbU9XeWIrM1ZnZkNDSU9JUXE3NHdMLzJUd2ZDdloySVFtT1d5Yjk2RUF2Q3NNbVdRdFVOZ3o5NkVBdkNGTFNXUXJvMWpEL2l3d1RDVTVtaVFsNjNHVURpd3dUQ3Q0T2lRbEJMSGtDUzd2ekJjYWVyUWdLRFAwQ1M3dnpCMUpHclF2VVdSRUFvT2ZMQjBlV3RRaUVTUjBBb09mTEIwZVd0UWhPbVMwQ09hK1BCQlFDdlFpdVhTVUNPYStQQkJRQ3ZRaDRyVGtBZU0rZkJvNjIyUWhKL2JMNG9PZkxCR1VLMVFyU0J1YjhvT2ZMQkdVSzFRdUpNaWI0ZU0rZkJvNjIyUWw2K3RMK1M3dnpCTEY2eVFvb3p3NytTN3Z6QkxGNnlRdElUc0w2N01BUEM0ckdwUWxBWHpML2l3d1RDNWJPbVFvZEtKcjk2RUF2Q2llR1hRamF1RHNCNkVBdkN2M3lYUXZBdGhyL2l3d1RDMWtxbVFxaFpzTDU2RUF2QzJHcVhRdUZQVjc4MGJRM0NHSXlRUWg0Tm1MODBhZzNDM3orUVF0eWtucitmRHczQ3hPR0pRdjZaRXNDd0RBM0NiNW1KUXB1NkZjRE5HZ3pDYjVtSlFwdTZGY0M1RUFmQ2I1bUpRcHU2RmNDUzd2ekJUTEt4UXBwWUtMd29PZkxCcllXMFFyaStqajFjMHViQkUrbTFRbjlsMnozblJnckMxS3FZUWg5ZHE4RGl3d1RDckkybVF1Q0VvTUR0V0FuQzFYR1pRclo1RE1HV3JRUENDVWltUWkrOUJjR1M3dnpCRmhxeVFtMDBtTUErWS92QlVwbXhRbEdLQWNFb09mTEJuUGEwUWdjbGxzRG1OdkhCTW1lMFF2eC9BTUVlTStmQmhGNjJRdTBobGNEMHZlYkI2TWUxUWtYNi84REd5KzdCbjUyelFzTFhITUdsYmVUQlZQNjBRcFpUSE1FVTN2akJ2cyt3UXI3a0hjR3ZXd0xDQ1VpbVF0dmZJTUVCUTkvQmwwKzJRczZjLzhEbXZzekJEQSsyUW1ja0hNSFhCZDNCRm9TMVFtY2tITUhaTHRYQkk5cTJRczZjLzhBTzdMekJUOWEyUW1na0hNSCtQcjNCMWFDM1FzNmMvOERnZXAzQWV6MjVRczZjLzhEZ2VwM0E3M080UW1na0hNSENaUWZDQjhtYVFuMnhLY0duNlBqQklCZW1RalNIVk1HcW9QTEJxRUNjUWtBZ2RNRUl6d0hDbGxPY1FqU0hWTUZPSmVqQmE4K2lRdDY3YThHeitkakI0aXF5UXZiNlQ4SENyZERCZXlTcVF2TEZZY0VnMCtMQklnYXhRaDkvVU1FTG5zZkJ2dWlxUXR1M1lNRXhlOW5CQzVXb1FxUHJZOEdDWk96QlRMS3VRaDZNVWNFT2RzakJQUTJ6UXNITFQ4RWNKY0hCTFRPclF0cFJZTUd3OE5IQjVwbXlRc0hMVDhFenViN0JwSUNyUXJudVg4R0wwcm5CYWhlMFFoRHlVc0V6dWI3QmJ1V3JRZ1lWWThFT2RzakJCM0t6UWhEeVVzSEM0ckhCZ2xTc1F0eUdZc0c5Z2RiQkJ3R3ZRaXVYU1VDOGdkN0JSWE8yUWlIbDh6MjlnZGJCMEdTdlFpdVhTVUQ2SU43QmZnKzJRaUxsOHoyOWdkYkJOcG1uUWl5WFNVQ2U4dGJCcktldVFrRGw4ejFmVTkvQmREcTNRdFRpWHI0UTVkN0JvTkMyUXRQaVhyNGx0ZGJCNmZXdVFzVGlYcjVmVTkvQmREcTNRdU1Lczc4UTVkN0JvTkMyUXVNS3M3OGx0ZGJCNmZXdVF1RUtzNzlmVTkvQnErbTJRbVRGbE1BSDRkN0IySCsyUW1URmxNQ0VaTmJCSDZXdVFtVEZsTUN5ME43QnhPVzFRczJjLzhETlZOYkJEQXV1UXMyYy84Q3l3ZFRCVDNDMlFzNmMvOERicDh6Qmw1V3VRczJjLzhBYTNyekJBamUzUXM2Yy84QWNyYlhCU1Z5dlFzMmMvOERnZXAzQXFOTzRRczZjLzhEZ2VwM0E4UGl3UXMyYy84QzlnZGJCQndHdlFoNHJUa0M5Z2RiQjBHU3ZRaDRyVGtDOWdkYkJOcG1uUWg4clRrQ1pWdC9CYzJXMlFseHk4VDFUek5mQnZGcXZRaXVYU1VCVHpOZkJ2RnF2UWg0clRrRHpIT0RCWHl5M1FrRS9ZTDd6SE9EQlh5eTNRbkUyczcvekhPREJ3ZHUyUXFMT2xNQi9BdURCQmtLMlFpZW0vOEJydzkzQnRYYTFRaUVwSE1IT3lzSEJ1eXVyUWhCY1lNSEtwTkxCekk2eVFuclFUOEVJcU9QQkFlMjJRdmRlWnI0SXFPUEJBZTIyUW5UNnM3OElxT1BCSkoyMlFrZjRsTUE3WU9QQjl3UzJRalhRLzhDSkdPSEJoVHExUWwwK0hNRSt6OVhCMTF5eVFyZmxUOEZzdE1UQlBRcXJRdmVKWU1GN0ZPUEJRaWUyUW9ocjVqM3htOTNCWUMydlFpdVhTVUR4bTkzQllDMnZRaDRyVGtDRTJ3RENuOWl0UXFuNFNjRGFaQUhDTE9PcFFtUHM1TDhUZWZyQnVWNnVRcU1aM2IvYVpBSEMzcnltUW1MczVMOFRlZnJCQm9XeFFxUVozYjhUZWZyQkcwbXhRbDlGa3NDYXJ2N0JGV1NxUW5obFNzQVRlZnJCenlLdVFsNUZrc0NhcnY3QllvcXRRbmhsU3NDaERQSEIzT213UXIyUjFMK2hEUEhCS2hDMFFyNlIxTCtoRFBIQmJxZXdRa2wxa01DaERQSEJ2TTJ6UWtsMWtNQTdXZWZCeFNteVFweGcwTDg3V2VmQkUxQzFRcDFnMEw4N1dlZkJKdVN4UWtLUmo4QTdXZWZCY3dxMVFrS1JqOEQrT3VUQmlXR3lRa1cwejcvK091VEIxb2UxUWthMHo3LytPdVRCamtHMVFweHNqOEQrT3VUQlFSdXlRcHRzajhCT0xPVEJqcXUxUW03dXpMOU9MT1RCVUdTMVFwYjZqOEJ0VmVmQmRTeTFRcnNma01DdUt2SEJiT3V6UXRzR2tjQUZ1UHJCQWw2eFFrZmRrc0RYa2dIQ1BkNnBRcWx3NHI4OS9QN0JOWkt0UXBoYVNzQUZ1UHJCdlpxeFFxZUMycit1S3ZIQndTNjBRdTNjMGI5dFZlZkJDWE8xUWkrZHpiK05OdWZCNmorMlFyZWhsTUJDdGVQQjNIMjJRb040bE1CQ3RlUEIyOHkyUWp0NXRyK05OdWZCTG82MlFnZzd0NzhhSHZMQmtTYTFRa2Z4dTcvcXRmekJvRXF5UWoySXhiOVlCd1BDVUxhcFFtaFR6ci9xdGZ6QlJ3ZXlRck9ybDhDVXVBRENsTkd0UW00Q1NzQWFIdkxCNU51MFFnbWlsY0JNb2d6Q1FPeU9RbURvR0w0Uml3ekNqOHVJUXNGSnViK2hvd3pDR3ptUFFzcU1yNzNuUmdyQ0ZMU1dRcm8xakQ5UCtnUEN0NE9pUWxCTEhrQ3MvUHZCTTBHclF2VVdSRUJISHdmQ1FPeU9RbURvR0w0TENBZkNqOHVJUXNGSnViK2JJQWZDR3ptUFFzcU1yNzNpd3dUQ0ZMU1dRcm8xakQrUzd2ekJ0NE9pUWxCTEhrQW9PZkxCOHArcVF2VVdSRUNpb09QQi9zaXVRaDRyVGtDSy9QSEJRTGV0UWhPbVMwQ2svZDNCK3ZTdVFoNHJUa0NsV3RqQitpQ3ZRaDRyVGtENkdkZkIrTW11UWg0clRrRDZHZGZCd1NxdlFoNHJUa0Q2R2RmQkI1dW5RaDhyVGtDNHhlWEJuWStzUWg0clRrQlhpZS9CZU5XclFoU21TMEI4OE9IQmg2MnNRaDRyVGtCQUc5N0Jjc3VzUWg0clRrQXlRZDNCR05Lc1FoNHJUa0F5UWQzQlJwQ3NRaDRyVGtBeVFkM0J6SzJuUWg4clRrRGdlcDNBVGlPNFFtZ2tITUdrYmpiQlpzbXNRdjlKWHNGMmtEYkJHcWEwUXNITFQ4R2tiamJCeG5pc1F2OUpYc0Yya0RiQnUvYTBRc0hMVDhIZ2VwM0FJQTJ4UW1ja0hNRjJrRGJCN0krdFFzSExUOEdrYmpiQmxtS2xRdjVKWHNGZE9pM0JjeWk1UXM2Yy84QmRPaTNCNWw2NFFtZ2tITUhpcGpiQnpWeTRRbWdrSE1GcHF6YkJXU2E1UXM2Yy84QmRPaTNCb0w2NFFzNmMvOENEcWpiQmhyeTRRczZjLzhCZE9pM0I1T093UXMyYy84QnRtVGJCenVHd1FzMmMvOEJkT2kzQlJRNjRRbWdrSE1IaXBqYkJLd3k0UW1na0hNRmRPaTNCRi9pd1FtY2tITUhpcGpiQi92V3dRbWNrSE1GTVg3dkJRcW0xUW1RZU9jSG12c3pCMTNPMlFyUktIOEVPN0x6QkdUdTNRclJLSDhGNm1zckI3dkswUW1RZU9jRjZtc3JCSkk2MFFoVDROY0ZEZTlmQi9nNjBRaFQ0TmNFWk5OakJ3UUswUXM3OE5jSGtjOXZCcnN1elFnY1NOc0d1czk3Qm5KU3pRa1luTnNGenorakI0Vkd5UW0rck5zRkxvZkxCQmNHdlFtNjROOEVFMFA3QmxTK21Rb1N6T3NGbW1nVENUbzZiUWxvY1A4RmtOUWJDNGVLWFFwNmlQOEYwWEFiQ3RaS1hRaDIrUDhHOVRnYkNodEtSUXFXeFFjRnpUUWJDYTRhUlFyckxRY0dPV3dYQ2E0YVJRcnJMUWNGOVVRRENhNGFSUXJyTFFjR3NtemJCSWxtMlFoVDROY0dzbXpiQnhLbTJRaFQ0TmNHc216YkI5VUt2UWhUNE5jRTdMRmJCeFNtNFFtZ2tITUU3TEZiQjAvUzRRczZjLzhBN0xGYkJEcDZzUW5XQlhzRTdMRmJCbzhXMFFzSExUOEU3TEZiQnU0cTRRczZjLzhBN0xGYkJUcXF3UXMyYy84QTdMRmJCbjNlMlFoVDROY0dCMFhqQnIvRzNRbWdrSE1HQjBYakJYTDY0UXM2Yy84RHI4SkRCTnErM1FtZ2tITUZZYVpMQkxYbTRRczZjLzhDQjBYakJ2MjZzUWdDK1hzR2NxWW5CcG1hMFFzSExUOEdCMFhqQjA0KzBRc0hMVDhHUlRIM0JvV2lzUXRQRlhzR0IwWGpCaWRPc1FsRGtZY0U3TEZiQmJTcTFRaER5VXNFN0xGYkIyQUt0UXNHblljR0IwWGpCblBTMFFoRHlVc0dCMFhqQitsTzRRczZjLzhCaUhwTEJXZys0UXM2Yy84Q0IwWGpCWjIyd1FzMmMvOEFYam96Qm9UU3dRczJjLzhDQjBYakJZcVcyUW1RZU9jRTdMRmJCajQ2NFFyUktIOEU3TEZiQmE5eTJRbVFlT2NHQjBYakJlbGE0UXJSS0g4RkRUWTNCN1FxMlFoVDROY0dCMFhqQm1FQzJRaFQ0TmNFaW01WEJXWmUzUW1na0hNRWltNVhCREdtNFFzNmMvOEFpbTVYQnZCMnNRcXNsWDhFaW01WEJTREcwUXNITFQ4RWltNVhCdFAyM1FzNmMvOEFpbTVYQkJBV3dRczJjLzhBaW01WEJFdU8xUWhUNE5jSEU3YWJCNlZhM1FtZ2tITUhFN2FiQmFpbTRRczZjLzhERTdhYkJwUFNyUWtOYVg4R0wwcm5Cb0xLelFzSExUOEhFN2FiQisvaXpRc0hMVDhIQzRySEJ1TytyUXBCZ1g4SEU3YWJCOGIyM1FzNmMvOERFN2FiQnZNS3ZRczJjLzhERTdhYkJtS2ExUWhUNE5jRk1YN3ZCZDBTMVFoVDROY0hsVUZiQWVGU1lRdHVNQkVMbFVGYkFjbmFaUWtFY0JrTGxVRmJBRFg2WlFvVjNCa0xsVUZiQTJweVpRaVRwQjBMbFVGYkFSRHFYUXR1TUJFTGxVRmJBWkVxWVF0dU1CRUxsVUZiQVhteVpRa0VjQmtMbFVGYkFQVnlZUWtFY0JrTGxVRmJBK1hPWlFvVjNCa0xsVUZiQTJHT1lRb1YzQmtMbFVGYkF4NUtaUWlUcEIwTGxVRmJBcG9LWVFpVHBCMExkTUhYQkFyMlFRcTZKQzBJWHhwWEJBcjJRUWp3dUNVSy9lSFhCQXIyUVFzcnZDa0pCb0pYQkFyMlFRZ3pSQ1VJemxTSEJBcjJRUW1UVkRFS0tWaUhCQXIyUVFvZzhERUtnQVk3QUFyMlFRb1ZkRFVKTmhJM0FBcjJRUXJMRURFTGdZcDdCQXIyUVFxRHNCMElLUFo3QkFyMlFRZ3VRQ0VJSlNwYkJBcjJRUXVuekJrTFU1cDdCQXIyUVFpNndCVUowYzNiQkFyMlFRczdVQ0VMOWV5REJBcjJRUWlVbENrSTB6NHZBQXIyUVFuQ3RDa0p2aW9qQnB1bVhRdU9oK0VIMGpaL0IrcUNYUWhYLzlrRnZpb2pCOVJHWVF1T2grRUgwalovQnFYaVhRaFgvOWtFM2wxZkJ2RGlZUW8xUitrRTNsMWZCREdHWVFvMVIra0hDbkF2QnBIT1lRamp3KzBIQ25BdkI5SnVZUWpqdyswSDVDTXJBUElxWVF1cCsvRUg1Q01yQWpiS1lRdXArL0VGdmlvakJjTStXUXVPaCtFSDBqWi9CZFY2V1FoWC85a0UzbDFmQmhoNlhRbzFSK2tIQ25BdkJiMW1YUWpqdyswSDVDTXJBQ0hDWFF1cCsvRUh4WTdyQjJ0MldRaDNoOUVFeFBiTEIveStYUWk1NzlVRXhQYkxCcmdlWFFpNTc5VUdUdExyQkt3YVhRdjNROUVGSGpyZkJCSE9WUXYzUTlFRXhQYkxCZU8yVlFpNTc5VUcyanFmQisvS1FRbnVVQmtKZEQ2dkI4UU9SUXFoVUJFSjU4cWZCS011UVFyVGRCRUw1bHFyQkJXNlJRbEROQlVKSGVxZkJJL3VRUWxudUJrSlFmcXJCdjRPUlFuWWFCa0pTOTZ2QjhGcVJRcEgzQTBJWUVxL0JkcW1TUWlYc0EwTGl0Sy9CK3UyU1FzN3BBMEsvR0xiQmZDNlZRcjZ3L0VHRWU3UEIzdCtUUXI2dy9FSFFvYmJCQkhPVlFyNncvRUdnQVk3QSs1bVhRdFM4QzBJemxTSEJLWTZYUXNVMkMwTGRNSFhCWEhHWFFobndDVUpCb0pYQkdrdVhRaWcrQ0VJS1BaN0JPeStYUWdnQ0IwSkhlcWZCOXdxWFFxNW1CVUpRZnFyQmtmaVdRZ09XQkVMaXRLL0I4VTZXUXNYZ0FVS2dBWTdBVmtlYVF2REtDa0l6bFNIQmhUdWFRdUZFQ2tMZE1IWEJ1QjZhUWpYK0NFSkJvSlhCZHZpWlFrUk1CMElLUFo3Qmx0eVpRaVFRQmtKSGVxZkJZRCtaUXNwMEJFSlFmcXJCQ2JTWVFpQ2tBMExpdEsvQmQ1R1hRdnQ3QVVKSGVxZkJsOXFZUXExMi8wRlFmcXJCREZTWFFzamkvRUZRZnFyQlAwK1lRbGZWL1VGSGVxZkJFbUNYUWg0bi9rRUtQWjdCelhlWlFxOVdBVUlLUFo3Qmc1cVhRanhUQUVKQm9KWEJySk9aUXRDU0FrSkJvSlhCc3J5WFF1bElBVUxkTUhYQjdybVpRc0ZFQkVKWTduUEJKRE9ZUWlhYUFrSXpsU0hCdXRhWlFtMkxCVUl6bFNIQkxGQ1lRZ1dZQTBLZ0FZN0FqZUtaUW53UkJrS2dBWTdBUldLWVFqTUFCRUxpdEsvQnJTeVhRZytGK1VGRjdxYkJEMHlYUXZKbDlrRVJLS2ZCQW5PWFFrTmg5a0d5V2FYQmFEdVdRc0tHOWtGUGlhN0JZa2FYUWd6STlVRmpySzdCUFIyWFFqVEY5VUZ1RjZ2Qk4xdVhRcEVQOWtFalc2dkJUREdYUWhNSzlrRVhOYTNCNWd1V1FxVGo5VUhwb2EvQlBQMlZRa3V4OVVHSEFhM0JFa0dYUW5aRCswSGl0Sy9Cd1RhWFF2TjIra0ZRZnFyQlVsbVlRanpIL2tGSGVxZkJxK1NZUWtrMEFFSUtQWjdCNFlHWlFxTFBBVUpCb0pYQndKMlpRc0lMQTBMZE1IWEJBc1NaUXJPOUJFSXpsU0hCeitDWlFsOEVCa0tnQVk3QW9leVpRbTZLQmtLRThMWEJHcFdWUXZHTi9VRUtQWjdCaGRPWlFrcWpCVUpIZXFmQlRqYVpRdkVIQkVKUWZxckI5cXFZUWtVM0EwTGl0Sy9CWllpWFFpSVBBVUp6VkxEQlF6Q1dRanQ5QVVJdVpyREJleTZUUWtOYkEwTDN4YS9COSttU1FsNWRBMEs5dDZ6QmJwdVJRcVpuQTBKQm9KWEJZKytaUW12ZkJrTGRNSFhCcGhXYVFsdVJDRUl6bFNIQmNqS2FRZ2ZZQ1VLZ0FZN0FSRDZhUWhaZUNrS2dBWTdBY3hXYVFrTjBDRUl6bFNIQm9BbWFRalB1QjBMZE1IWEIxT3laUW9lbkJrSkJvSlhCa3NhWlFwYjFCRUlLUFo3QnM2cVpRbmE1QTBKSGVxZkJmQTJaUWgwZUFrSlFmcXJCSklLWVFuSk5BVUxpdEsvQmsxK1hRcHhLL2tGN0lyUEJyK0tWUWhvaUFFTCtnN1BCdjFDVVF0SFpBRUpiNzdMQk9ReVVRdC9hQUVLZ0diREJwcjJTUWdMZ0FFS1hzRnJBOVU2WVFnaUVCRUtYc0ZyQTRFU1lRZ2lFQkVLWHNGckEyWGFaUXBRYkJrS1hzRnJBeFd5WlFwUWJCa0tYc0ZyQW5INlpRclY0QmtLWHNGckFpWFNaUXJWNEJrS1hzRnJBQzU2WlF1RHhCMEtYc0ZyQTk1T1pRdUR4QjBLWHNGckFyQ3FYUWdpRUJFS1hzRnJBa0ZLWVFwUWJCa0tYc0ZyQVUxcVlRclY0QmtLWHNGckF3WG1ZUXVEeEIwTGxVRmJBTURDWFF0dU1CRUxsVUZiQUtsS1lRa0VjQmtMbFVGYkF4Rm1ZUW9WM0JrTGxVRmJBa25pWVFpVHBCMExsVUZiQVJEcVhRdHVNQkVMbFVGYkFQVnlZUWtFY0JrTGxVRmJBMkdPWVFvVjNCa0xsVUZiQXBvS1lRaVRwQjBLUVg0ekFlZythUXI1dENFS1FYNHpBSU9lWlFveUpCa0tRWDR6QUt0MlpRdjBSQmtLUVg0ekFUbUdZUXNzR0JFTHB5bDNBdHFPWlFoSDRCMExweWwzQTFvT1pRb3g1QmtMcHlsM0E5M3VaUWhrYkJrTHB5bDNBMzArWVFzVjlCRUpnUVRZQUFBQUtrOGsrQUFBQUFBQUFBQUFBQUFBQURaUEpNZzJUeVQ0QUFBQUFEWlBKdmcyVHlUSUFBQUFBeW1TYlF2OG9lRUZBUVNpR0FBREVFQUFBZ0Q4QUFBQUFBQUFBUDdEUzhENEFBSUEvSFAvcVBnQUFBRDhBNmhBOEFBQ0FQK3BZRUQ4QUFBQS90RUlUUDJseUJ6OVFuMWsrRE5FRFA0QnFZejRkNlFRL1FKRmNQbTIxQnovWWdXRSs5cVVKUDBBWFB6NGpveFEvb0pGVlBza3lGejhnb2o4K3RJc0lQN0F1Vno0QUFJQS9OaFo5UHdBQUFEOEFBSUEvMVVNS1A3Z1BLajRWbVJnL09OZ3JQZ0FBZ0Q4QUFBQUFBQUFBUHdEcUVEd0FBSUEvQUFBQUFBQUFBRDhBNmhBOEFBQ0FQeHovNmo0QUFJQS9IUC9xUGdBQWdEL3FXQkEvQUFDQVArcFlFRDlPendrL0dIMGxQajZSRno4SVRpWSs5cmtJUHpCNU1UN05EeFUvbUVzd1BxZmxFaitJaGtNKzZzOEhQL2c0Umo0QUFJQS9OaFo5UHdBQWdEODJGbjAvQUFBQVB3QUFnRDhBQUFBL0FBQ0FQNFFGRWorb1VsWStUYVlTUHppSFhqNVF2QjgvNFBSblBpendJajlBVTFZK2Fab2tQMkFaUkQ0RFlpTS9BQzQ4UHM1SElEODRGMEkrVzQrZlFiZ2VsVUExdDU5QmJZNktRUC8vb0VGSTRZcEFzMldlUWMzTWxFREI5WjFCMktPZ1FFVENuRUhTOUtCQTlPaVdRVks0emtEWEVwWkJXR1hPUUZsd25FSFM5S0JBK2UyVlFicDF6a0F6b3BSQkxnblBRQlM2bkVIUzlLQkF5Qk9lUWMzTWxFQ0NYWjVCemN5VVFQaXNua0Z0am9wQWxaeWZRVzJPaWtBb1hLQkJya2VCUUhhK29FR3VSNEZBOVNpZlFhNUhnVUNwOGFGQnJrZUJRSVRyb0VHdVI0RkF0eDZpUWE1SGdVRHFVYUZCcmtlQlFJN0Nva0d1UjRGQWhPdWlRYTVIZ1VDM0hxSkJya2VCUUZ1UG8wR3VSNEZBVWJpalFhNUhnVUFUcnFKQnJrZUJRTFllcEVHdVI0RkFyVWVrUWE1SGdVRGJHS05CcmtlQlFIK0pwRUd1UjRGQWRiS2tRYTVIZ1VEUVFhTkJya2VCUUhTeXBFR3VSNEZBYXR1a1FhNUhnVUNSUHFOQnJrZUJRRFN2cEVHdVI0RkFLOWlrUWE1SGdVQUxBcUpCY1QyQ1FOak9va0Z4UFlKQXk4eWhRVWpoaWtDbG02TkJjVDJDUUppWm9rRkk0WXBBQVN1a1FYRTlna0QwS0tOQlNPR0tRTW1WcEVGeFBZSkF2Sk9qUVVqaGlrQyt2cVJCY1QyQ1FMRzhvMEZJNFlwQWY3dWtRWEU5Z2tCeXVhTkJTT0dLUUxETW9FRW5OWUpBZWFHZ1FTYzFna0NQSEo5Qkp6V0NRQmZsa2tIOEcrcEFRNXVTUWVDUjZFQU5EcE5CL0J2cVFFMXlra0hna2VoQTRsZVRRWHpGNjBEWGdKTkJmTVhyUUR5b2swRVFmTzFBTWRHVFFSQjg3VUFXNUpOQlhDSHZRQXNObEVGY0llOUFDdnVUUVZheTcwQUFKSlJCVnJMdlFEbjVrMEdpVWZCQUxpS1VRYUpSOEVCZnhwRkIvQnZxUUpSVGtVSGdrZWhBS1RtU1FYekY2MENEaVpKQkVIenRRRjNGa2tGY0llOUFVdHlTUVZheTcwQ0EycEpCb2xId1FNNUhra0ZZOWVkQXhIQ1NRVmoxNTBBcTE1QkJXUFhuUU5sbWxFR1NvKzVBdTJpVVFUd003a0Q2VUpSQmdJTHRRQXdUbEVGRTh1dEE1NytUUWFCUjZrQWdTWk5CYUwzb1FGblNra0grUnVkQVJaK1NRU2F1NWtDRWRwSkI5cTdtUUxnSGtVRld0dVpBbWltVVFUQ0o0MENybzVOQnFsM2lRSW12bEVHU3pPUkFTZzJWUWVBWjVrQWZVNVZCRWxyblFPaHRsVUZBeU9kQXlXdVZRVlJCNkVEOFQ1TkJ5TkxoUUFJb2swRzQxdUZBTjhDUlFSejY0VUExdDU5QmJZNktRRnVQbjBHNEhwVkEvLytnUVVqaGlrQ3paWjVCemN5VVFNSDFuVUhZbzZCQVJNS2NRZEwwb0VEMDZKWkJVcmpPUU5jU2xrRllaYzVBK2UyVlFicDF6a0JaY0p4QjB2U2dRRE9pbEVFdUNjOUFGTHFjUWRMMG9FRElFNTVCemN5VVFJSmRua0hOekpSQStLeWVRVzJPaWtDVm5KOUJiWTZLUUhhK29FR3VSNEZBS0Z5Z1FhNUhnVUQxS0o5QnJrZUJRS254b1VHdVI0RkFoT3VnUWE1SGdVQzNIcUpCcmtlQlFPcFJvVUd1UjRGQWpzS2lRYTVIZ1VDRTY2SkJya2VCUUxjZW9rR3VSNEZBVzQralFhNUhnVUJSdUtOQnJrZUJRQk91b2tHdVI0RkF0aDZrUWE1SGdVQ3RSNlJCcmtlQlFOc1lvMEd1UjRGQWY0bWtRYTVIZ1VCMXNxUkJya2VCUU5CQm8wR3VSNEZBZExLa1FhNUhnVUJxMjZSQnJrZUJRQXNDb2tGeFBZSkEyTTZpUVhFOWdrREx6S0ZCU09HS1FLV2JvMEZ4UFlKQW1KbWlRVWpoaWtBQks2UkJjVDJDUVBRb28wRkk0WXBBeVpXa1FYRTlna0M4azZOQlNPR0tRTDYrcEVGeFBZSkFzYnlqUVVqaGlrQ3d6S0JCSnpXQ1FIbWhvRUVuTllKQWp4eWZRU2MxZ2tCRG01SkI0SkhvUUJmbGtrSDhHK3BBRFE2VFFmd2I2a0JOY3BKQjRKSG9RT0pYazBGOHhldEExNENUUVh6RjYwQThxSk5CRUh6dFFESFJrMEVRZk8xQUZ1U1RRVndoNzBBTERaUkJYQ0h2UUFyN2swRldzdTlBQUNTVVFWYXk3MEJmeHBGQi9CdnFRSlJUa1VIZ2tlaEFLVG1TUVh6RjYwQ0RpWkpCRUh6dFFGM0Zra0ZjSWU5QVV0eVNRVmF5NzBET1I1SkJXUFhuUU1Sd2trRlk5ZWRBS3RlUVFWajE1MEM3YUpSQlBBenVRUHBRbEVHQWd1MUFEQk9VUVVUeTYwRG52NU5Cb0ZIcVFDQkprMEZvdmVoQVdkS1NRZjVHNTBCRm41SkJKcTdtUUlSMmtrSDJydVpBdUFlUlFWYTI1a0NhS1pSQk1JbmpRS3VqazBHcVhlSkFpYStVUVpMTTVFQktEWlZCNEJubVFCOVRsVUVTV3VkQTZHMlZRVURJNTBEOFQ1TkJ5TkxoUUFJb2swRzQxdUZBTjhDUlFSejY0VUJhanlwQ0JPdXR3QjJGSzBKMktKREFKMXdyUW5Zb2tNQlF1Q3BDQk91dHdLSndLa0xRdDdMQW1aa3FRdEMzc3NCU3VDaENwWEQ5UCtwUktFTGFvL0EvVXJnb1F0cWo4RDlianloQ3BYRDlQNjVISDBKY2ovSkFVYmdlUWx5UDhrQkk0UjVDWEkveVFMZ2VIMEpjai9KQUpRWXBRdHFqOEQ4bEJpbENwWEQ5UDdnZUswSUU2NjNBaE9zclFuWW9rTUFBQUN0QzBMZXl3QXJYS2tMUXQ3TEE0bm9nUWx5UDhrRHJVU0JDWEkveVFCU3VLVUxhby9BL0ZLNHBRcVZ3L1QrRTZ5dENCT3V0d0ZHNExFSjJLSkRBek13clF0QzNzc0RXb3l0QzBMZXl3SzVISVVKY2ovSkF1QjRoUWx5UDhrRGhlaXBDMnFQd1ArRjZLa0tsY1AwL1ViZ3NRZ1RycmNBZWhTMUNkaWlRd0ptWkxFTFF0N0xBbzNBc1F0QzNzc0FWcmlGQ1hJL3lRQitGSVVKY2ovSkFTT0VxUXRxajhEOUk0U3BDcFhEOVA3Z2VMVUlFNjYzQWhlc3RRbllva01BQUFDMUMwTGV5d0FyWExFTFF0N0xBYnVvclFuQTl5citFNnl0Q0VLelh2M29VTEVJUXJOZS9kOEVyUW5BOXlyL2llaXhDRUt6WHY5UlFMRUp3UGNxL3JrY3RRaENzMTcraEhTMUNjRDNLdjNzVUxrSVFyTmUvYnVvdFFuQTl5ci9pZWk1Q0VLelh2OVZRTGtKd1BjcS9sQXNzUW9BVTdyK2U0aXRDZ0JUdXYvdHhMRUtBRk82L3lENHRRb0FVN3IrVUN5NUNnQlR1di90eExrS0FGTzYvREFJcFFxQ3Z3ajI0MmloQ2tNTDFQUURlS0VLZ3I4STl3LzRvUXBEQzlUMHBYQ2xDb0svQ1BlRllLVUtRd3ZVOVloQXFRcUN2d2owYURTcENrTUwxUFp6RUtrS2dyOEk5VThFcVFwREM5VDI1SGl0Q29LL0NQWEViSzBLUXd2VTkreW9wUXFDWkdUNkNCaWxDa01MMVBYZ3ZLVUtRd3ZVOUJRSXBRcUNaR1Q3V295aENRQXBYUDh6TUtFSkFDbGMvMzVVcFFwREM5VDFpa1NsQ29Ka1pQak16S1VKQUNsYy9yR0lxUXBEQzlUMHZYaXBDb0prWlBnQUFLa0pBQ2xjL2VDOHJRcERDOVQzOEtpdENvSmtaUHN6TUtrSkFDbGMvMzVVclFwREM5VDFpa1N0Q29Ka1pQak16SzBKQUNsYy9wV29xUW1ndlFiK2JreXBDYUM5QnZ6d0tLVUtncjhJOVAwRXBRc0RDZFQwek15bENvSy9DUFVrWUtVTEF3blU5QXZvcVFtZ3ZRYittcHlsQ3dNSjFQWnFaS1VLZ3I4STl6OFlyUW1ndlFiOXpkQ3BDd01KMVBXWm1La0tncjhJOW5KTXNRbWd2UWI5QVFTdEN3TUoxUFRNekswS2dyOEk5QXZvc1FtZ3ZRYittcHl0Q3dNSjFQWnFaSzBLZ3I4STlKZzhuUXBEQzlUMy8veVpDb0svQ1BXNFNKMEtncjhJOVJQd21RcERDOVQydVJ5bEN3dlc0UUdkbUtFSjZGTHBBNG5vb1FzTDF1RUEwTXlsQ2VoUzZRRWpoSmtJcVhNOUFGYTRuUWlwY3owQjdGQ3BDd3ZXNFFBRUFLa0o2RkxwQTRub29RaXBjejBEaWVpcEN3dlc0UUdobUtrSjZGTHBBU2VFb1FpcGN6MEFBQUNoQ2VoUzZRSHNVS0VMQzliaEE0WG9tUWlwY3owQUsxeWRDZWhTNlFJVHJKMExDOWJoQTYxRW1RaXBjejBCU3VDaENTZUVLUUNVR0tVSko0UXBBRks0cFFrbmhDa0RDZFNwQ1NlRUtRQ25jS2tKSjRRcEFQSW9vUWtuaENrQVVyaWxDSEMvZFB5VUdLVUljTDkwL1VyZ29RdXI3NlQ4RFZpaEM2dnZwUC9wK0trSWNMOTAvWWVVcVFod3YzVC82blM1Q2dCVHV2NU0zTGtKNGdsckFremN1UW9Dalk4RDZuUzVDSEVybXZ5elJMVUorNlpUQUxORXRRcUtBbXNBczBTMUNmdW1Vd0pNM0xrS0FvMlBBTE5FdFFxS0Ftc0NUTnk1Q2VJSmF3UHFkTGtJd00vTy8rcDB1UWh4SzVyOGRoU3RDZGlpUXdGcVBLa0lFNjYzQUoxd3JRbllva01CUXVDcENCT3V0d0tKd0trTFF0N0xBbVprcVF0QzNzc0RxVVNoQzJxUHdQMUc0S0VLbGNQMC80SG9vUXRxajhEOWJqeWhDcFhEOVAwZmhIa0pjai9KQWhlc2ZRbHlQOGtBOUNoOUNYSS95UUkvQ0gwSmNqL0pBU09Fb1F0cWo4RDgrQ2lsQ3BYRDlQN2dlSzBJRTY2M0FoT3NyUW5Zb2tNQUFBQ3RDMExleXdBclhLa0xRdDdMQVNPRWdRbHlQOGtCU3VDQkNYSS95UUFyWEtVTGFvL0EvRks0cFFxVncvVDk2RkN4Q0JPdXR3RWZoTEVKMktKREF3L1VyUXRDM3NzRE16Q3RDMExleXdJVHJLMElRck5lL2J1b3JRbkE5eXI5NkZDeENFS3pYdjNmQkswSndQY3EvNG5vc1FoQ3MxNy9VVUN4Q2NEM0t2NlJ3TFVJUXJOZS9tRVl0UW5BOXlyK1VDeXhDZ0JUdXY1N2lLMEtBRk82LyszRXNRb0FVN3IrK1p5MUNnQlR1djdqYUtFS1F3dlU5REFJcFFxQ3Z3ajBBM2loQ29LL0NQY1ArS0VLUXd2VTlLVndwUXFDdndqM2hXQ2xDa01MMVBWazVLa0tncjhJOUVUWXFRcERDOVQyQ0JpbENrTUwxUGZzcUtVS2dtUmsrZUM4cFFwREM5VDBGQWlsQ29Ka1pQdGFqS0VKQUNsYy96TXdvUWtBS1Z6L2ZsU2xDa01MMVBXS1JLVUtnbVJrK016TXBRa0FLVnoraWl5cENrTUwxUFNXSEtrS2dtUmsrOWlncVFrQUtWejlKR0NsQ3dNSjFQVDlCS1VMQXduVTlQQW9wUXFDdndqMHpNeWxDb0svQ1BhYW5LVUxBd25VOW1wa3BRcUN2d2oxcG5TcEN3TUoxUFYyUEtrS2dyOEk5Ly84bVFxQ3Z3ajBtRHlkQ2tNTDFQVzRTSjBLZ3I4STlSUHdtUXBEQzlUMW5aaWhDZWhTNlFLNUhLVUxDOWJoQTRub29Rc0wxdUVBME15bENlaFM2UUVqaEprSXFYTTlBRmE0blFpcGN6MEFBQUNoQ2VoUzZRSHNVS0VMQzliaEE0WG9tUWlwY3owQUsxeWRDZWhTNlFJVHJKMExDOWJoQTYxRW1RaXBjejBBeXN5aENTZUVLUUI0RktVSko0UXBBOWFncFFrbmhDa0E4aWloQ1NlRUtRQ1BiS1VMcSsray9ZT1VvUXVyNzZULzVmaWhDNnZ2cFB3TldLRUxxKytrL0FxY3RRZ0FBc01ET1FTMUNORE96d0F0K0xVSTBNN1BBeFdvdFFnQUFzTUFzMFMxQ29vQ2F3Q3pSTFVJQUFMREE0KzhzUWpRenM4QWdMQzFDTkRPendDelJMVUtpZ0pyQTVSY3VRbmgwYU1CK3NTMUNlSFJvd0xIa0xFSjRkR2pBNUJjc1FuaDBhTUI5c1N0Q2VIUm93SWVJSzBKNGRHakFremN1UW9Dalk4RDZuUzVDMktQd3YrT0lLVUlBQU5CQWhFTXJRc0wxdUVBSENpdEN3dlc0UUNuaUtVSUFBTkJBeDJvclFtWm10a0RIYWl0Q0lpeXpRUHFkS2tKbVpyWkF0M1lxUXNMMXVFQm03Q2hDQUFEUVFQZzJLVUlBQU5CQUhMZ3FRc0wxdUVEY0dDdENJaXl6UUJnakxrSWNTdWEvc2J3dFFuaUNXc0JLVmkxQ2Z1bVV3Q1A2STBKY2ovSkFEa3drUWx5UDhrQWoraU5DWEkveVFBNU1KRUpjai9KQWRiSWlRbHlQOGtDS1lDSkNYSS95UVBxZExrS3dsZkcva3pjdVFvQ2pZOERIYWl0Q0FBQUFRTWRxSzBKY2p5SkF4Mm9yUWdBQUFFREhhaXRDWEk4aVFOd1lLMEpjanlKQTNCZ3JRZ0FBQUVEbDd5cENBQUFBUUFQdUtrTE56QXhBMUwwdFFueHpxYjg4d2kxQ3ZMYWx2MWhTTFVLOHRxVy9CQWd1UWlDSnZyOHBRaTVDZkFiSnY0UzNMRUtRdlRTL3hKNHNRb0FkSUwvSGFpdENnRHluUGNkcUswS0FPbzQ5M0JnclFvQThwejF5UFN4Q2dCMGd2eVY2TFVLa0M1Uy9tOUF0UXVCQnJiOVF3eXhDOE9vcXY3MlRLMEtBT280OXgyb3JRZ0RYSXo3SGFpdENLRndQUHNkcUswSUExeU0reDJvclFpaGNEejdjR0N0Q0FOY2pQdHdZSzBJb1hBOCt4Mm9yUXRCSDRUM0hhaXRDMEVmaFBWclNLa0lvWEE4K1d0SXFRdEJINFQxYTBpcENLRndQUGxyU0trTFFSK0U5MEpBcVF0Qkg0VDNRa0NwQ0tGd1BQdHdZSzBMUVIrRTl4Mm9yUXNFY2RUL0hhaXRDaFR4NlA5d1lLMEtGUEhvL3gyb3JRc0hIdnovSGFpdENYRzNGUDl3WUswTEJ4NzgveDJvclF2Q2I0VC9IYWl0Q21ESGZQOXdZSzBLWU1kOC8rbzByUWdEWEl6N0lPU3RDRHRaV1AzcjhLa0p4cytZL3NQWXFRbWxZOGo5QTlDcENWT01OUUFyMktrSUFBQUJBZnZ3cVFqQ0M4VC8rQVN0Q2lBbmxQenc4SzBLVFdWZy9SSTRyUWdEWEl6NUFqeXRDS0Z3UFBucVBLMElvWEE4K3c4NHFRaWhjRHo3eHppcENLRndQUGovNUtrTFFSK0U5V2ZrcVF0Qkg0VDBwa1N0QzBFZmhQVXFSSzBMUVIrRTl2Wk1yUW9BNmpqMXFjQzFDWkNtUnYwNEVMa0pBZTcyLytwMHVRbUNxOGIrVE55NUNnS05qd0N6UkxVS2lnSnJBOUlBcVFzTDF1RUEzcUNwQ1ptYTJRTEQ0S0VJQUFOQkE0RzRpUWx5UDhrREx3Q0pDWEkveVFCK0ZLVUo2RkxwQW1wa3BRc0wxdUVEMktDaENLbHpQUUJTdUlVSmNqL0pBQ3RjaFFseVA4a0N4dkMxQ2VJSmF3QmdqTGtJY1N1YS9TbFl0UW43cGxNQlZMU05DMnAzeVFHcmJJa0lxa3ZKQVZTMGpRaXFTOGtCcTJ5SkNLcEx5UU1kcUswTEM5YmhBc3U4cFFnQUEwRURIYWl0QzJrcTRRTDM2S1VJQUFOQkEzQmdyUXRwS3VFREduU2xDQUFEUVFNZHFLMEs0NnExQXgyb3JRcGlJdGtEY0dDdEN1T3F0UUNHaUkwS3FKKzlBS2x3aVFqNEs3MEJuWmlGQ1BncnZRS1J3SUVJK0N1OUFYSThmUWo0SzcwQm1aaDlDUGdydlFBZWhJMEltSGU5QUhFOGpRaVlkNzBCa3ZpUkNvQnJ2UUFVM0kwS2dHdTlBNUNnalFxQWE3MEEwTXlKQ1BncnZRTTNNSVVJK0N1OUFBQUFoUWo0SzcwRE56QjlDUGdydlFHWm1IMEkrQ3U5QWNEMGZRajRLNzBCNHRTUkNvQnJ2UUl4akpFS2dHdTlBTE5FdFFqUXpzOEFzMFMxQ0FBQ3d3Q3pSTFVJME03UEFMTkV0UWdBQXNNQmZCQzFDTkRPendGOEVMVUlBQUxEQVFIOHRRZ3pYazhBczBTMUNhR2FXd0VCL0xVSTBNN1BBZExJc1FqUXpzOEJBZnkxQ05ET3p3Tm9ZTFVJQUFMREF4V290UWpRenM4REZhaTFDQUFDd3dOb1lMVUkwTTdQQTJoZ3RRb1pvcXNERmFpMUNobWlxd01WcUxVSWdlNlBBNCs4c1FpQjdvOERIYWl0Q3cvVUlRTWRxSzBKSjRmby94Mm9yUXNQMUNFREhhaXRDU2VINlA5d1lLMExEOVFoQTNCZ3JRa25oK2o5ZU5DcENTZUg2UHhnaktrTEQ5UWhBeDJvclF0cWo4RC9IYWl0QzJxUHdQOXdZSzBMYW8vQS9DendxUXRxajhEL0hhaXRDK1NqY1A4ZHFLMEw1S053L3gyb3JRdExNVEQvSGFpdEMwc3hNUDl3WUswTDVLTncvM0JnclF0TE1URDlsU3lwQytTamNQNjZqS2tMU3pFdy94Mm9yUWhEWG96M0hhaXRDUUR6eFBNZHFLMElRMTZNOXgyb3JRZ0NpS2ozY0dDdENFTmVqUGR3WUswSUFvaW85NWVvcVFoRFhvejNsN3lwQ1FEenhQSWE1S2tJUTE2TTlocmtxUXBEQzlUMkd1U3BDa01MMVBZYTVLa0lRMTZNOXozZ3FRaERYb3ozUGVDcENrTUwxUFlCVUtrSVExNk05WUZFcVFwREM5VDNIYWl0Q2tNTDFQY2RxSzBMZ1VUZyt4Mm9yUXVCUk9EN0hhaXRDa01MMVBkd1lLMExnVVRnKzNCZ3JRcERDOVQwQzRTcEM0RkU0UHZIbUtrS1F3dlU5ZkJRdVFoQ3MxNytXQ3k1Q2dCVHV2Mi9xTFVKd1BjcS82ME11UXJBTTJML0NhUzVDWEVYWHYzN3hMVUpjUmRlL1p1d3RRaWlxdmI4TkRpNUNqT1M4djE2YUxVS001THkva3pjdVFvanJVY0RtMlMxQ2lPdFJ3R0pnTGtKa2JDYkFydkV0UW1Sc0pzQ0NKQzFDbEsxTHdMQkVMVUkrS3lQQXdDNHNRcFN0UzhEdVRpeENQaXNqd0ZqSUswS1VyVXZBaHVnclFqNHJJOEJpbnl0Q2xLMUx3SkMvSzBJK0t5UEF4V290UWdBQXNNRGo3eXhDTkRPendPUHZMRUlBQUxEQXprRXRRalF6czhERmFpMUNOQldwd09QdkxFS3NSNm5BNCs4c1F0QW5vc0RGYWkxQzBDZWl3Tjl1TFVJVW9LSEFmbTR0UW5hTnFNQitiaTFDQUFDd3dJaEZMVUkwTTdQQU5xZ3RRalF6czhDZDh5eENORE96d0VwV0xVSTBNN1BBL2ZNc1FoU2dvY0NRYlMxQ1ZoV2p3RlJ0TFVLNkFxckFWRzB0UWdBQXNNQlViUzFDTkRPendLN3lMRUpXRmFQQWFCc3RRalF6czhETnpDaENORE96d0RVdEtrSUFBTERBZllrcVFqUXpzOEROekNoQ0FBQ3d3R3hyS1VLc1I2bkF6Y3dvUXF4SHFjRDRuU2hDMENlaXdNM01LRUxRSjZMQUVxSW9RaFNnb2NETnpDaENGS0Nod0Y4RUtVSis2WlRBemN3b1FuN3BsTURHYWlsQ2VJSmF3TTNNS0VKNGdsckFMZEVwUWh4SzVyL056Q2hDSEVybXYwOWpLVUs4dHFXL3pjd29RcnkycGIrUzBTaENnQjBndjgzTUtFS0FIU0MvbERjb1FvQThwejNOekNoQ2dEeW5QWlEzS0VMUVIrRTl6Y3dvUXRCSDRUM056Q2hDS0Z3UFBwUTNLRUlBMXlNK2xEY29RaWhjRHo3TnpDaENBTmNqUHBRM0tFS0ZQSG8vemN3b1FvVThlaitVTnloQ3djZS9QODNNS0VMQng3OC9sRGNvUXBneDN6L056Q2hDbURIZlA1UTNLRUlBQUFCQXpjd29RZ0FBQUVDVU55aENYSThpUU0zTUtFSmNqeUpBSjg4bVFpSXNzMERVMWlkQ3d2VzRRSlEzS0VJaUxMTkFSTTRtUXNMMXVFRDROaVZDQUFEUVFNQ2dKa0lBQU5CQVQxa2pRcUFhNzBDQytpSkNvQnJ2UU9idklrSmNqL0pBaUpraVFseVA4a0Q5UWloQ0tGd1BQdjFDS0VMUVIrRTl4RDhxUWh4SzVyOWUyU2xDZUlKYXdQWnlLVUorNlpUQXFoQXBRaFNnb2NDUURDbEMwQ2Vpd0huRktVS3NSNm5BNEhNcVFnQUFzTUR1eGlwQ05ET3p3S2pLS2tJME03UEFONDBxUWpRenM4QlZMU3RDTkRPendPVHZLa0kwTTdQQTdzWXFRalF6czhBckF5dENORE96d0xyRktrSTBNN1BBQlFFclF0QzNzc0I5aVNwQ05ET3p3TXpNS2tMUXQ3TEFucG9xUXRDM3NzQmxaaXBDMExleXdOTE5LVUxRdDdMQW1Ka3BRdEMzc3NBRUFTbEMwTGV5d016TUtFTFF0N0xBbnBvb1F0QzNzc0JsWmloQzBMZXl3RmE1S0VJRTY2M0FISVVvUWdUcnJjQlZ1U2RDZGlpUXdPbFJKMEoyS0pEQWVJb25RbmgwYU1Eb0dDZENlSFJvd0ZFckowS0FGTzYvTEtVbVFvQVU3cjg0TkNkQ0VLelh2eEt1SmtJUXJOZS9LZ29uUW5BOXlyOEZoQ1pDY0QzS3YwVkNKMExBd25VOVppWW5RbWd2UWI5N3lTWkNhQzlCdnpnMEowS2dyOEk5Q3c0blFzRENkVDFpUUNkQ29LL0NQUm85SjBLUXd2VTlmREFuUXBEQzlUMEJMQ2RDb0prWlBzZjNKa0tnbVJrKzBNMG1Ra0FLVnorWW1TWkNRQXBYUC81L0prTHErK2sveFVzbVF1cjc2VC9tZXlaQzJxUHdQNnhISmtMYW8vQS9WcmttUXFWdy9UOGRoU1pDcFhEOVB6aTBKa0pKNFFwQS9uOG1Ra25oQ2tDQUZTWkN3dlc0UUFVQkprSjZGTHBBUitFbFFzTDF1RURNekNWQ2VoUzZRT1o3SkVJcVhNOUFyVWNrUWlwY3owQnNaeDFDUGdydlFESXpIVUkrQ3U5QVRlSWNRbHlQOGtBVXJoeENYSS95UUxOSUhVSmNqL0pBZWhRZFFseVA4a0RtZXg1Q1hJL3lRSzFISGtKY2ovSkFzMGdmUWx5UDhrQjZGQjlDWEkveVFCcXZIMEpjai9KQTRIb2ZRbHlQOGtBdy9DQkNYSS95UUhTeUlFSmNqL0pBaGdvaFFseVA4a0RLd0NCQ1hJL3lRS0U1STBKY2ovSkE1dThpUWx5UDhrQ2hPU05DWEkveVFBcWpJMEtnR3U5QWE1OG1RZ0FBMEVDT0lDaEN3dlc0UUU2QktFSWlMTE5BVG9Fb1FseVBJa0JPZ1NoQ0FBQUFRRTZCS0VLWU1kOC9Ub0VvUXNISHZ6OU9nU2hDaFR4NlAwNkJLRUlBMXlNK1RvRW9RaWhjRHo3NWZTaENLRndQUHZsOUtFTFFSK0U5VG9Fb1F0Qkg0VDFPZ1NoQ2dEeW5QU2twS1VLQUhTQy9BOGdwUXJ5MnBiL056Q2hDSUh1andQaWRLRUtHYUtyQStKMG9RaUI3bzhETnpDaENobWlxd00zTUtFSldGYVBBdzZBb1FsWVZvOEQ0blNoQ0FBQ3d3TTNNS0VJQUFMREF6Y3dvUW43cGxNQmZCQ2xDZnVtVXdQaWRLRUkwTTdQQXpjd29RalF6czhETnpDaENlSUphd01acUtVSjRnbHJBemN3b1FoeEs1cjh0MFNsQ0hFcm12ODNNS0VKY1JkZS9FcmNwUWx4RjE3L056Q2hDak9TOHZ6ZUpLVUtNNUx5L3pjd29RZ0NpS2oyVU55aENBS0lxUGMzTUtFSVExNk05bERjb1FoRFhvejNOekNoQzRGRTRQcFEzS0VLUXd2VTlsRGNvUXVCUk9EN056Q2hDa01MMVBjM01LRUxTekV3L2xEY29RdExNVEQvTnpDaEMrU2pjUDVRM0tFTDVLTncvemN3b1F0cWo4RCtVTnloQzJxUHdQODNNS0VMRDlRaEFsRGNvUWtuaCtqK1VOeWhDdy9VSVFNM01LRUpKNGZvL2JkQW1RdHBLdUVDVU55aEN1T3F0UUpRM0tFTGFTcmhBYmRBbVFyanFyVUIvdkNaQ0FBRFFRSCs4SmtJQUFOQkFyQkVqUWlZZDcwRGVSQ0pDSmgzdlFQcWRJa0lxa3ZKQUxkRWhRaXFTOGtCY01paENFTmVqUFZ3eUtFS1F3dlU5VG9Fb1F0TE1URDlPZ1NoQzRGRTRQazZCS0VLUXd2VTltMndvUXBEQzlUMmJiQ2hDRU5lalBVNkJLRUlRMTZNOVRvRW9RZ0NpS2oxVThTbENqT1M4djFBaktrSmNSZGUveEQ4cVFoeEs1cjllMlNsQ2VJSmF3UFp5S1VKKzZaVEFXZzhwUWxZVm84Q1FEQ2xDSUh1andLZ1FLVUtHYUtyQXFCQXBRZ0FBc01Db0VDbENORE96d0llZ0tFSTBNN1BBTnhNcFFqUXpzOEJmQkNsQ05ET3p3QTkzS1VJME03UEFYd1FwUWpRenM4QVBkeWxDTkRPendKSTNLRUkwTTdQQVFxb29RalF6czhDUHdpbEMwTGV5d01qMktVTFF0N0xBek13b1F0QzNzc0FFQVNsQzBMZXl3R1ZtS0VMUXQ3TEFucG9vUXRDM3NzQWNoU2hDQk91dHdGYTVLRUlFNjYzQTZWRW5Rbllva01CVnVTZENkaWlRd0lyN0prS1VyVXZBVW5JblFwU3RTOEEwMGlaQ1Bpc2p3RkVySjBLQUZPNi9WbEFuUWo0ckk4QXNwU1pDZ0JUdXZ4S3VKa0lRck5lL09EUW5RaENzMTc4RmhDWkNjRDNLdnlvS0owSndQY3EvQ3c0blFzRENkVDFGUWlkQ3dNSjFQVGcwSjBLZ3I4STlZa0FuUXFDdndqMGFQU2RDa01MMVBYd3dKMEtRd3ZVOXgvY21RcUNaR1Q0QkxDZENvSmtaUHBpWkprSkFDbGMvME0wbVFrQUtWei9GU3laQzZ2dnBQLzUvSmtMcSsray9yRWNtUXRxajhEL21leVpDMnFQd1B4MkZKa0tsY1AwL1Zya21RcVZ3L1QvK2Z5WkNTZUVLUURpMEprSko0UXBBek13bFFub1V1a0NBRlNaQ3d2VzRRRWZoSlVMQzliaEFCUUVtUW5vVXVrQ3RSeVJDS2x6UFFPWjdKRUlxWE05QUtGd2RRajRLNzBCaGtCMUNQZ3J2UUFuWEhFSmNqL0pBUWdzZFFseVA4a0JSdUIxQ1hJL3lRSXJzSFVKY2ovSkFFNjRlUWx5UDhrQk40aDVDWEkveVFOV2pIMEpjai9KQUR0Z2ZRbHlQOGtBdDBTRkNLcEx5UU9nYUlrSXFrdkpBNkJvaVFpcVM4a0NaamlKQ0poM3ZRRGdHSjBJQUFOQkFUb0VvUXRwS3VFQk9nU2hDdU9xdFFFNkJLRUxEOVFoQVRvRW9Ra25oK2o5T2dTaEMycVB3UDA2QktFTDVLTncvOE1ZaVFseVA4a0R3eGlKQ1hJL3lRTmFYSUVKY2ovSkFrbkFpUWx5UDhrQ0FpU0JDWEkveVFPcFJIMEpjai9KQUJIVWlRaXFTOGtBM3FDRkNLcEx5UURlb0lVSXFrdkpBNEhvZlFseVA4a0FlaFI1Q1hJL3lRRnVQSFVKY2ovSkFGSzRjUWx5UDhrQXlNeDFDUGdydlFCNkZIRUpjai9KQVBRb2RRajRLNzBDRTZ4eENYSS95UUxjZUhrSmNqL0pBaE9zZVFseVA4a0M4a3g5Q1hJL3lRTHlUSDBKY2ovSkFvbVFkUWx5UDhrQmVQUjlDWEkveVFFeFdIVUpjai9KQTBVRWZRaXFTOGtDNEhoeENYSS95UUZHNEcwSmNqL0pBQkhVZVFpcVM4a0FFZFI1Q0twTHlRS3hISEVKY2ovSkE2MUViUWx5UDhrQW9YQnBDWEkveVFPQjZHVUpjai9KQS8vOFpRajRLNzBEclVSbENYSS95UUFyWEdVSStDdTlBVWJnWlFseVA4a0NFNnhwQ1hJL3lRSkkzSmtJME03UEFJVG9tUWpRenM4Qm5aaVpDTkRPendQbWRKa0kwTTdQQStaMG1RalF6czhBczBTVkNORE96d0NoY0owTFF0N0xBWm1ZbVF0QzNzc0QrL3lWQzBMZXl3TFllSmtJRTY2M0F0aDRtUWdUcnJjRCsveVZDMExleXdHWm1Ka0xRdDdMQU1qTW5RdEMzc3NELy95ZEMwTGV5d0dabUtFTFF0N0xBRnlNb1FqUXpzOEJVWHloQ05ET3p3SDZKS0VJME03UEEwQ1lvUWpRenM4QVhJeWhDTkRPendHZG1Ka0kwTTdQQVFwRXFRdkpqbmtEUlV5cEMvRHFpUUtHbktrSWcwb05BTUdvcVFpRFNnMEFFaHlsQ1dNcWtRSlJLS0VKSEQ0NUF6N0FvUWhkZ2dFQzlwaWhDUncrT1FLVlVLRUlYWUlCQXJKb29RdkpqbmtCa25TbENJTktEUUhpNktFSWcwb05BL0Rnb1F2Smpua0I5WFNoQ0lOS0RRQVlRS0VMeVk1NUFoalFvUWlEU2cwQUFPaVpDOG1PZVFJSmVKa0lnMG9OQXlBVW1RdkpqbmtCSktpWkNJTktEUUxPOEtrTEk3WjFBYTlzcVFpcDFoVUJteFNwQ3lPMmRRSmJpS2tJcWRZVkF4Mm9yUXNqdG5VREhhaXRDS25XRlFNZHFLMExMZXB0QXgyb3JRblhKZzBEY0dDdEN5M3FiUU53WUswSjF5WU5BVG9Fb1FzdDZtMEJPZ1NoQ2RjbURRSlEzS0VMTGVwdEFsRGNvUW5YSmcwRDZ6U2RDeTNxYlFNM01LRUoxeVlOQW5NNG5RaGJhbUVETnpDaENkY21EUUpRM0tFSVcycGhBbERjb1FuWEpnMEJPZ1NoQ0Z0cVlRRTZCS0VKMXlZTkEzQmdyUWhiYW1FRGNHQ3RDZGNtRFFNZHFLMElXMnBoQXgyb3JRblhKZzBESGFpdEM0ZjZkUU1kcUswSXFkWVZBWkxVcFFuWTFuMEF0MFNsQ0tuV0ZRUGhjS1VJVXJwOUFRWElwUW1kbWhrQWltU2hDRks2ZlFHSzNLRUpuWm9aQU5qY29RaFN1bjBEeVdTaENaMmFHUUVFT0tFSVVycDlBL0RBb1FtZG1oa0E4T0NaQ0ZLNmZRUGhhSmtKblpvWkFBZ1FtUWhTdW4wQytKaVpDWjJhR1FPWEJLa0xFUWtsQWRJUXFRcHJtT1VDZ3ZDaENjTVJkUUhkZ0tFSnd4RjFBcUxjcFFwcm1PVURNM3loQ3hFSkpRRmlJS0VMRVFrbEFZRjhvUXNSQ1NVQmRpU1pDeEVKSlFDUlZKa0xFUWtsQXQrUXFRcExiUzBCcjZ5cEMxR1pNUU1kcUswTFl2RlpBeDJvclFpSVJWVURjR0N0Q0loRlZRRTZCS0VJaUVWVkFsRGNvUWlJUlZVRE56Q2hDSWhGVlFNM01LRUpXUkVoQWxEY29RbFpFU0VCT2dTaENWa1JJUU53WUswSldSRWhBeDJvclFsWkVTRURIYWl0Q0RQQkpRQ1Q2S1VJTThFbEFtbzBwUWdyWFMwQkEzaWhDQ3RkTFFKS0dLRUlLMTB0QW5GMG9RZ3JYUzBDWWh5WkNDdGRMUUY1VEprSUsxMHRBaDVNcFFxcTNnMEJiclNsQ0QvbzZRTWQyS2tJUCtqcEE4bHdxUXFxM2cwRHlSaXBDRXFDaFFJWjlLVUp1TDZSQTNnMEtRdEQ1ZlVIZURRcENBV0tCUWQ0TkNrS214WUJCM2cwS1FxUkVmMEhlRFFwQ0JiT0NRZDROQ2tLM0Y0SkIzZzBLUWxNOWcwSGVEUXBDRDZLQ1FkNE5Da0xkU29OQjNnMEtRb0d2Z2tIZURRcENUbXg3UWQ0TkNrSmV1SHhCM2cwS1F1eHllVUhlRFFwQ0d1RjJRZDROQ2tJV1JIMUIzZzBLUW9qdmYwSGVEUXBDUFlLQVFkNE5Da0pjajRCQkRRNFJRbDRzWWtIaVZ4RkM0TlZqUWRlQUVVTGcxV05CRitVUVFsNHNZa0U4cUJGQ2NJeGxRVEhSRVVKd2pHVkJGdVFSUXI0eFowRUxEUkpDdmpGblFRcjdFVUs0d21kQkFDUVNRcmpDWjBFNStSRkNCR0pvUVM0aUVrSUVZbWhCS1RrUVF1RFZZMEZmeGc5Q1hpeGlRWU9KRUVKd2pHVkJYY1VRUXI0eFowRlMzQkJDdU1KblFZRGFFRUlFWW1oQlE1c1FRa0tpWUVIT1J4QkN1Z1ZnUVUxeUVFSkNvbUJCeEhBUVFsajFYMEVxMXc1Q1dQVmZRWlJURDBKQ29tQkI3MVVLUXU0ZWRFRzBSQXBDQUxGNFFUNGNDa0pxTlhWQnRzRUtRa3djZDBIOVRBcENuR2Q1UWNuWENrSVF1WGRCVXE0S1FzWmhjMEV5QWd4Q2tFcHpRYzlIREVMUVJYTkJpWkVPUWxqMVowR1JQUTFDV1BWblFTclhEa0pZOVdkQjhRWVJRdmlWZ1VFZUNCRkNUYU9CUWUvNkVFTEVEWUZCck4wUVFyeURmMEhOdGhCQytoRjhRWHlhRUVLY2ozbEJwSFVRUXNCTGRrSHlZaEJDdktOMFFaeTJEMElTSTI5QlE3OFRRamFnZ0VGd3dCTkNpcTJBUVVHekUwSUJHSUJCL3BVVFFqaVlmVUVnYnhOQ2RDWjZRYzVTRTBJV3BIZEJGTE1TUWpwZ2RFR0NKUkpDT0xoeVFVcitFRUpHVm01QjVMOFFRakFvYUVHdVRCSkNvc1pxUVJ1L0VVS2VIbWxCRzh3UVFyUnhhVUZvN0JKQ2ZBcHVRWHNIRVVKSSsydEJ1UWdUUXRxTWNFRTJLaEZDZ081dFFaZ3ZFMEtlL25OQmphSVJRc0tiY0VIYVRCTkNhcFoyUVF6QUVVS2duM0pCM1ZnVFF0S21kMEZ2MGhGQ1VuTnpRVW42RVVJTWlITkI1SmNRUXE2OFpFSEd0eEJDeUpCaFFWbmZFRUlHakdGQnc2SVBRaDZ5WVVFQ3NoQkNYUEJnUVRXSUVFSjQ3V0JCTE1jUVFnWTVZVUdXbkJCQ2NqTmhRWDV5RDBKa0RHRkJsMk1QUWo3WllFR2NyQkJDT0lKbVFTR2lFRUp3c21WQldNa1JRbUlVYWtIclZoSkNaTHhyUWFYMkVrSkFBRzlCOWhJVFFwNkNjVUhWT1JOQ1l2UjBRUmhYRTBJc2pIZEJHbU1UUXBhY2VFSE0rUTVDRk5ab1FaZEpFMExveG5aQjNha1NRZ3lEYzBGS0hCSkNDTnR4UVJQMUVFSVllVzFCY0pjUFF0Qllia0ZZaVF4Q0tpUnlRYnREREVKeUtISkIyTzhLUWxZOWNrSG9aUk5DUmtsNVFjZU1FMElLdTN4QkNhb1RRdFJTZjBFTXRoTkNuakdBUVRpM0UwTHpQb0JCVEhFZFB3Z2VVajdGUUJ3L0lNZGpQdGNiSFQrQVJtMCtCQnJpUGtqTFd6NkhiT0UrYU9aVVBxZE40VDVvOUZRK0JEamlQcGkrV3o3QVd1TStXTWRlUG5vOTR6N0EwbDQrY2pIa1ByaGdYRDVkRk9RK2lHdGNQbFJONUQ3Z0hsWSt6aS9rUGdncVZqNWZtT00rdUlkUFB2MTU0ejc0azA4K1hFM2lQcmhZVEQ2SmJPSStHRXRNUHVoZjRUNG9mMDQrU24vaFBzQndUajdOS2VJK09EaGJQdFZ3NFQ3NEFWVStValBqUGdqOFhUNnM5K00rNk01YlBsTVE1RDY0RzFZK0EycmpQaWdiVUQ3cFdPSStjQ3hOUHVHQjRUN3dJMDgrSDJMalByZ3RWRDRPRHVRK1NIWmFQcUlNNVQ3UVRGMCsrczNsUG1Bb1d6NHc3ZVUrU0hCVlBybFQ1VDZ3WDA4K1kwN2tQcWhkVEQ2TmV1TStPRXBPUGg1UThUNEE3MUErdlpQeFBtQ2FWejYvTi9JK09ObGFQbUxjOGo3ZzUxZytQaXZ6UGxnWlV6Nms5dkkrTUxSTVB2OVM4ajVvUjBrK1Y1L3hQcGp5U2o2Uk1QbytXSXRUUGltVitqNklDbGMrWFNYN1BqaEFWVDZZbFBzK2dHNVBQcm1sK3o2dzNrZys0RWI3UGdBelJUNzRxdm8rY0s1R1B2ODErajZZckV3KzkrOTNQbytUT2ovcGxJRSthNlk3UHc3cmR6N0Vvem8vNVpHQlBtbVZPejliRjRjK0cxODZQNmtmaHo3eWJqby8rTmFLUGlwVU56K1Q0b28rWVdFM1A4bmhpejUrV3pNLy9PMkxQbnhsTXo4NktvbytRSWd2UDVzMGlqNVZqeTgvVVVlR1BpTFNMRDhuVG9ZK0tkY3NQOWMyZ1Q3ZzR5cy9PVG1CUGxyb0t6OWdWSGcrdHY0c1AzVlllRDUwK1N3L0k2OXdQaUxZTHo4bnVuQStqdEF2UDUyR2JUN1V3RE0vMkpSdFBoUzJNei9pQTNBK1VyYzNQeXNRY0Q1MnFUYy9RUjk0UHB6Mk9UL3hkSUUrVXZFNlAzM0hoajc2eFRrL2EyZUtQaFhVTmo5ZWJJcytPL295UHlMR2lUNnBReTgvVkFXR1BqV2hMRC9hSDRFK01ya3JQeG1BZUQ3WnhTdy9YeVJ4UGd1SEx6K01IVzQrbms0elAwaUdjRDR4SXpjL3p5TjRQbXpuT1Q4c2NvRSthdUU2UDlHL2hqNDN0emsvc2x5S1BxVEhOajhRWVlzKzIvQXlQMzI4aVQ0UFBTOC8rLzZGUG55Y0xEK2lIWUUrRWJVclAraURlRDd2d0N3L21DNXhQdkYvTHorNkttNCtrMFF6UDVxUmNENUhGamMvT2xpQlB1aVJPRC85SkhzK2xPRTNQNGNTaFQ3b3dEYy9jcW1IUHNHdE5UK2hjWWcreXZBeVA1eFBoejcvUnpBL2pLS0VQaHhqTGo4UkhZRStUYnd0UHpjNWV6N1dmUzQvd0kwVFFwS2FmRUdUakJOQzZuOThRU0QrZFQ0eWVEQS82KzF6UHMwck16Ky92blUrMnVNMVB5NVNnVDduampjL1o1TjhQZ3dCTno4QlVvUStGT2MyUCt4cmhqN3VPalUvWXhPSFB0QURNejloTElZK0hkc3dQN2tBaEQ3Q1VDOC9WaUtCUGluSkxqL2FrSHcrMFdZdlAyMVVlRDZ3QWpFL2tyRjJQclV6TXovMk0zZytkR1kxUHpWUGdUN25ERGMvMmtoOVBpV1FOaitTOG9NK2EzazJQNi9OaFQ2SEFEVS96V09HUGtRTU16KzBtWVUrL3lNeFB3S3ZnejR5eHk4Ly95U0JQa2RQTHorUWdCTkNnRzk3UVU1akUwSzIxM2hCYnp3VFF2SmxkVUVlSUJOQ2xPTnlRV1NBRWtLNG4yOUIwZklSUXJiM2JVR2F5eEJDeEpWcFFaNUlEMEp5bDJ0QlFiQU5Rc0lNYlVHaWFnMUM1ZzV0UWJVV0RFSldHVzFCMEw0UlFqSi9kRUZCMHhGQ0tJOTBRWkswRVVJeWYzUkJmOTBSUWlpUGRFRXo0UkpDVkx0M1FYRHJFa0pVdTNkQkZ1a1NRcEo0ZUVGVDh4SkNrbmg0UVRvK2ZUN3oyaTgvYVlGNVBobEhNVC9QRTNnK2tUWXpQd1VKRTBMNGRudEJRaE1UUXZoMmUwSHNDUk5DZ0l0N1FTa1VFMEtBaTN0QkdXMTVQcmdtTlQrSnRCQkNLSTkwUWRxVkVFSXlmM1JCZXNJUlFsUzdkMEZkeWhGQ2tuaDRRZHRGZlQ2dy96VS9JVEtCUG9SNE5qK051b00reU9vMVAzZURoVDUrZnpRL1RPb1JRdmgyZTBFejZ4RkNnSXQ3UWI4VWhqNnduREkvWkZPRlBoREZNRCtHdVJCQ3hxQjBRWFdiRUVJaWtYUkJFc0lSUXJTOGQwSE15UkZDS0haNFFRcDhnejdHY3k4L0JndUJQb0wvTGovTE8zMCsvNFV2UHhqcEVVSTZaWHRCK3VrUlFscDVlMEVWcEhrK2JlVXdQMUJGZUQ2cHd6SS94TU1RUXNhZ2RFR3lwUkJDSXBGMFFVL01FVUswdkhkQkNkUVJRaWgyZUVHQmtYaytuNkkwUDd5WGZENi9iRFkvNHpTQlBqWDJOajlWOHhGQ09tVjdRVGowRVVKYWVYdEIreFdFUHVsVU5qOWNHNFkrVDdnMFA0Kzloajc1bERJL21lQ0ZQdmQrTUQvS3lvTStvd0V2UDQ0SWdUNGNmaTQvcTRjVFFnYU5mRUdDaGhOQ3FuSjhRWU5kRTBMSW1uaEJaRk1UUXRpbmQwRjAwUkZDdUlCelFkajRFVUkwbFhOQkRwVjhQZ0VXTHorMmduZytiNk13UC8vd2RqNEd3VEkvNzJSNFBrYmdORC9QNEhzK3FqMDNQeEpMZ1Q3NDJqYy9DWnlFUGk0aE56L0E3SVkrbTBjMVAvMmloejROMVRJLzhCa1RRbUNZZTBFRkdSTkNqSU43UWFMNEVrSkdlbmhCby9BU1FseTZkMEcrdnhGQ2VuSjBRZDNlRVVLb2duUkJrNktHUGxkek1EOTFQb1ErZjhBdVA1RENJMEptWmg1Qktsd3hRcTVCR2tHUXdpTkNya0VhUVNwY01VSm1aaDVCS2x3eFF0TWJEa0dRd2lOQzB4c09RU3BjTVVLQWtmVkFrTUlqUW9DUjlVQXFYREZDTkRQRFFKRENJMEkwTThOQUtsd3hRbmlMaUVDUXdpTkNlSXVJUUNwY01VSTBNeE5Ba01JalFqUXpFMEFxWERGQ3hIdXFQcERDSTBMRWU2bytLbHd4UWdBQXdMK1F3aU5DQUFEQXZ5cGNNVUtZdkVUQWtNSWpRcGk4Uk1BcVhERkNkQVNKd0pEQ0kwSjBCSW5BS2x3eFFpeFFvY0NRd2lOQ0xGQ2h3Q3BjTVVLWW1hbkFrTUlqUXBpWnFjQ1F3aU5DTEZDaHdDcGNNVUlzVUtIQWtNSWpRblFFaWNBcVhERkNkQVNKd0pEQ0kwS1l2RVRBS2x3eFFwaThSTUNRd2lOQ0FBREF2eXBjTVVJQUFNQy9rTUlqUXNSN3FqNHFYREZDeEh1cVBpcGNNVUo0aTRoQWtNSWpRalF6dzBDUXdpTkNlSXVJUUNwY01VSTBNOE5Ba01JalFvQ1I5VUFxWERGQ2dKSDFRSkRDSTBMVEd3NUJLbHd4UXRNYkRrR1F3aU5DcmtFYVFTcGNNVUt1UVJwQjlpZ3lRcTVCR2tIMktESkNabVllUWZZb01rS3VRUnBCOWlneVF0TWJEa0gyS0RKQ2dKSDFRUFlvTWtJME04TkE5aWd5UW5pTGlFRDJLREpDTkRNVFFDcGNNVUkwTXhOQTlpZ3lRc1I3cWo3MktESkNBQURBdi9Zb01rS1l2RVRBOWlneVFuUUVpY0QyS0RKQ0xGQ2h3UFlvTWtLWW1hbkE5aWd5UWl4UW9jRDJLREpDZEFTSndQWW9Na0tZdkVUQTlpZ3lRZ0FBd0wvMktESkN4SHVxUHZZb01rSTBNeE5BOWlneVFuaUxpRUQyS0RKQ05EUERRUFlvTWtLQWtmVkE5aWd5UXRNYkRrSDJLRFpDRGtNT1FmWW9Oa0lkcXdwQjlpZzJRaDJyQ2tIMktEWkMraUVBUWZZb05rTG12dDVBOWlnMlF0d1BzMEQyS0RaQzdUQ0FRUFlvTmtJME14TkE5aWcyUWpRU0dELzJLRFpDUU9WK3YvWW9Oa0ptRnhmQTlpZzJRbndoV3NEMktEWkNCQ09Dd1BZb05rTG9Vb25BOWlnMlFnUWpnc0QyS0RaQ2ZDRmF3UFlvTmtKbUZ4ZkE5aWcyUWtEbGZyLzJLRFpDTkJJWVAvWW9Oa0kwTXhOQTlpZzJRdTB3Z0VEMktEWkMzQSt6UVBZb05rTG12dDVBOWlnMlF2b2hBRUgyS0RaQ3lRZ0xRZllvTmtJQWpRZEI5aWcyUWdDTkIwSDJLRFpDMEt6NlFQWW9Oa0ppTHRwQTlpZzJRcGJWcjBEMktEWkNjQXA5UVBZb05rSTBNeE5BOWlnMlF1RnZKVC8yS0RaQ0dCTmx2L1lvTmtKYTlnM0E5aWcyUWpUelRzRDJLRFpDbU0xM3dQWW9Oa0pnM29MQTlpZzJRcGpOZDhEMktEWkNOUE5Pd1BZb05rSmE5ZzNBOWlnMlFoZ1RaYi8yS0RaQzRXOGxQL1lvTmtJME14TkE5aWcyUW5BS2ZVRDJLRFpDbHRXdlFQWW9Oa0ppTHRwQTlpZzJRdENzK2tEMktEWkNVb0RhUVBZb05rSmFrTlZBOWlnMlFscVExVUQyS0RaQ2xCYkhRUFlvTmtLSUQ3QkE5aWcyUXZjTWtrRDJLRFpDMmpSZVFQWW9Oa0kwTXhOQTlpZzJRc3hmT2ovMktEWkNnQjRUUGZZb05rS2s0bWEvOWlnMlFvQ056Ny8yS0RaQ1VMb0V3UFlvTmtKQW1nN0E5aWcyUWxDNkJNRDJLRFpDZ0kzUHYvWW9Oa0trNG1hLzlpZzJRZ0FlRXozMktEWkNJV09RUC9Zb05rSTBNeE5BOWlnMlF0WTBYa0QyS0RaQzl3eVNRUFlvTmtMdWRiWkE5aWcyUXBRV3gwQXBYQ05DWm1ZZVFTbGNJMEt1UVJwQktWd2pRcTVCR2tFcFhDTkMweHNPUVNsY0kwS0FrZlZBS1Z3alFqUXp3MEFwWENOQ2VJdUlRQ2xjSTBJME14TkFLVndqUXNSN3FqNHBYQ05DQUFEQXZ5bGNJMEtZdkVUQUtWd2pRblFFaWNBcFhDTkNMRkNod0NsY0kwS1ltYW5BS1Z3alFpeFFvY0FwWENOQ2RBU0p3Q2xjSTBLWXZFVEFLVndqUWdBQXdMOHBYQ05DeEh1cVBpbGNJMEkwTXhOQWtNSWpRalF6RTBBcFhDTkNlSXVJUUNsY0kwSTBNOE5BS1Z3alFvQ1I5VUFwWENOQzB4c09RU2xjSTBMK2pobEJLVndqUW9TVUZVRXBYQ05DaEpRVlFTbGNJMEo0NmdsQktWd2pRcmk0N2tBcFhDTkN6RnUrUUNsY0kwTG9DWVpBS1Z3alFqUXpFMEFwWENOQ3dKVFNQaWxjSTBKZ29xeS9LVndqUWdZTE44QXBYQ05DdktHQXdDbGNJMExTOVpmQUtWd2pRc3JxbjhBcFhDTkMxUFdYd0NsY0kwSzhvWURBS1Z3alFnWUxOOEFwWENOQ1lLS3N2eWxjSTBMQWxOSStLVndqUWpRekUwQXBYQ05DNkFtR1FDbGNJMExNVzc1QUtWd2pRcmk0N2tBcFhDTkNlT29KUVpEQ0kwS0VsQlZCa01JalF2Nk9HVUdRd2lOQ2hKUVZRWkRDSTBKNDZnbEJrTUlqUXJpNDdrQ1F3aU5DekZ1K1FKRENJMExvQ1laQWtNSWpRalF6RTBDUXdpTkN3SlRTUHBEQ0kwSmdvcXkva01JalFnWUxOOENRd2lOQ3ZLR0F3SkRDSTBMUzlaZkFrTUlqUXNycW44Q1F3aU5DMVBXWHdKRENJMEs4b1lEQWtNSWpRZ1lMTjhDUXdpTkNZS0tzdjVEQ0kwTEFsTkkra01JalFqUXpFMENRd2lOQzZBbUdRSkRDSTBMTVc3NUFrTUlqUXJpNDdrQ1F3aU5DZU9vSlFjTDFKRUtFbEJWQnd2VWtRdjZPR1VIQzlTUkNoSlFWUWNMMUpFSjQ2Z2xCd3ZVa1FyaTQ3a0RDOVNSQ3pGdStRTUwxSkVMb0NZWkF3dlVrUWpRekUwREM5U1JDd0pUU1BzTDFKRUpnb3F5L3d2VWtRZ1lMTjhEQzlTUkN2S0dBd01MMUpFTFM5WmZBd3ZVa1FzcnFuOERDOVNSQzFQV1h3TUwxSkVLOG9ZREF3dlVrUWdZTE44REM5U1JDWUtLc3Y4TDFKRUxBbE5JK3d2VWtRalF6RTBEQzlTUkM2QW1HUU1MMUpFTE1XNzVBd3ZVa1FyaTQ3a0RDOVNSQ2VPb0pRZllvTmtLU0hrQkE5aWcyUXNLNVVrRDJLRFpDdFhNcVFQWW9Oa0kwTXhOQTlpZzJRbUhsOXovMktEWkNySS9NUC9Zb05rSklXYWMvOWlnMlFuRExpai8yS0RaQ2liQnhQL1lvTmtMaGNXVS85aWcyUW9td2NULzJLRFpDY011S1AvWW9Oa0pJV2FjLzlpZzJRcXlQekQvMktEWkNZZVgzUC9Zb05rSkUrbWxBOWlnMlFobjhLRUQyS0RaQ3NBQmhRUFlvTmtKcmZ5dEE5aWcyUXU0SmJVRDJLRFpDMkZvc1FQWW9Oa0s1L0NSQTlpZzJRa1Q2YVVEMktEWkNhMzhyUVBZb05rSUh4eDlBOWlnMlF1ZTFHVUQyS0RaQ05ETVRRUFlvTmtLQXNBeEE5aWcyUW1HZkJrRDJLRFpDc0drQlFQWW9Oa0tjMVBvLzlpZzJRdmpOOVQvMktEWkNIQmYwUC9Zb05rTDR6ZlUvOWlnMlFwelUrai8yS0RaQ3NHa0JRUFlvTmtKaG53WkE5aWcyUW9Dd0RFRDJLRFpDTkRNVFFQWW9Oa0kwTXhOQTlpZzJRdWUxR1VEMktEWkN0M01xUVBZb05rSUh4eDlBOWlnMlFwSWVRRUQyS0RaQ3Vmd2tRUFlvTmtMQ3VWSkE5aWcyUWhuOEtFRDJLRFpDc0FCaFFQWW9Oa0ptNkxsQTlpZzJRcm9Zd2tEMktEWkNmZ2JJUVBZb05rS2FBck5BOWlnMlFvUUN1RUQyS0RaQ0lHbklRUFlvTmtLOFRNRkE5aWcyUW15SW1rRDJLRFpDL0ZPcFFQWW9Oa0orcmJKQTlpZzJRcG9VbjBEMktEWkNBaVIwUVBZb05rSmEvb3BBOWlnMlFyOFFoMEQyS0RaQzJseFhRUFlvTmtJVXlTRkE5aWcyUWdBQUlFRDJLRFpDVGtSUFFQWW9Oa0tPZHFOQTlpZzJRdEIxbmtEMktEWkNOMVdXUVBZb05rS2JISTFBOWlnMlFsLzRnVUQyS0RaQ1hDSnRRUFlvTmtLOGwxUkE5aWcyUXJHeU9FRDJLRFpDTkRNVFFQa1FOa0pTa2JsQUVEazFRcXlCdGtCVkR6WkNWMXdmUUs0b05VSnBteGxBNlQ4MVFnVFJ0RURvdVRSQ2RraTBRQXl2TkVKeVZiWkFTMkkwUXRnUXNFRHlValJDUUh5eVFLUTZORUxxN0taQTlpZzBRdnhUcVVCeFNUUkNoRStZUUN3NE5FTEJWNXBBeEdvMFFyTEVpRUM4V2pSQ0VsK0tRQ1NlTkVJYVZtOUFVSkEwUW82T2NVQlYxVFJDQ1B0SlFMSEpORUtlUDB0QWl6QTFRaEJwR1VBckF6WkNudGUzUVBiNU5VSXE5YkpBdy9VMVF2eFRxVUJKOXpWQ2pvT2FRTDc2TlVKczdvcEFHUUEyUXR6aGMwRFdCVFpDYnQxT1FQWW9Oa0kwTXhOQThoYUJQczRxTGo5bTVncENoT3M1d0ptWkRVS2NtWW5BTXpNTFF1eFJPTUNoUlExQ2ZCU0t3QTB4QjBKNHZwTEE2MUVFUXV4UldNQkk0UVpDTkRPVHdPR2FCRUxNekZiQWQ0NFFRaFNNNGNBQUFCQkNORFBEd0JXdUQwSXFYTVBBZE44UVFqeFU0Y0RYV0FwQ0pMamx3SGUrQ1VLeWNzbkFwSEFKUXB5WnljQ3FwUXBDS0lQbHdBQUFDa0trY0EzQWxySUpRbkFTRDhBRU13TkNvRjR3d0hucEFrS0k2ekhBajhJUlFvS1ZBOEY3RkJKQ1VyZ1d3V1ptRWtKU3VCYkJwSEFSUW9LVkE4SElkZ3hDaHVzWndmeXBDMEtDbFFQQjlTZ01Rb2JyR2NFb1hBdENncFVEd1hucEFrS0k2ekhBNjFFRVF1eFJXTUJJNFFaQ05ET1R3S1J3Q1VLY21jbkExMWdLUWlTNDVjQW9YQXRDZ3BVRHdmVW9ERUtHNnhuQmVla0NRb2pyTWNEclVRUkM3RkZZd0VqaEJrSTBNNVBBcEhBSlFweVp5Y0RYV0FwQ0pMamx3Q2hjQzBLQ2xRUEI5U2dNUW9ickdjRUlUQWhDSElqVXY4T0RDRUw4dzh1L3JUVUlRc1RtejcrNG1RaENyR3JRdjFZV0FrS2tYUlRBNVBzQlFxNG9Fc0Ewc2dGQ1NCd1V3RmZOQVVLR1RCYkFOTElCUWtnY0ZNQlh6UUZDaGt3V3dEU3lBVUpJSEJUQVY4MEJRb1pNRnNCU014QkM0SjJEdjEwZEVFSmM3bjIvVWpNY1FpZ1JxTDVkSFJ4Q1lIYVZ2b1JtSlVJQWVPZThqMUFsUWdCcEJEd1VyaWRDZ0FZQ1BSU3VKMEpRYm9zOXpNd29RZ0R5VXozTXpDaENFR1MwUFlBb0wwTGlOaExBMjVrd1FwQTExYitBS0M5Qy9LRFh2OXVaTUVJc0FSSEF2VGdzUWtTdEZNQzlPQ3hDdEkzY3YrOW9JMEpRN3hiQXNsNGdRdmh0OEwrbFR4RkN5cE1yd0Q3cEVFSm9MUVhBOWZNZlFwU1czTDhOMXhCQ2dPSDh2eXpjQ1VKK3R3bkF1NDRKUWk1a0M4Q01GZ05DdHBFdHdBL05Ba0pzS0MvQUQ4MENRbXdvTDhBUHpRSkNiQ2d2d0IyS0swSWszTWEvRUdrdVF1Q293YjhtMGk5QzJEbS92eWdjRWtLeW1ZakEzRGNnUWw0WGc4Qlk1aEpDT0VYQXdCenhIMEljYmJuQWtQTXJRank4ZmNDOWNDdENEQ20xd003YkxrSm9wSHZBR1VvdVFuUWF0TUI0U1RCQ0tKMTZ3SE93TDBLQ2xiUEFUSDB0UWtybTBNQ200eTVDQUdEUXdQQ2pLa0tTOTlIQUhQRWZRdVQrMU1DNitDOUNFRERRd0U0Nk1FSUlaclBBaTJzdlFoQXcwTUFSeHpCQ0NHYXp3QzNETUVJUU1OREE4WkF4UWdobXM4RE1iVEpDRUREUXdEQTBNMElJWnJQQWEyY3lRaEF3ME1DU09qTkNDR2F6d0FkREZFS2s5TjNBcXNBVlFocktGTUZydng5QzRyd0V3ZWJURlVMaXZBVEJTR29jUXJxR0VNRmUzU05DWG5jTHdhRUVMRUp5YlFMQk10c3FRcGF3QXNIRXBDUkNLdTRLd1lwSElrS2NqZ3pCMVgwb1FqdzVBOEZrOENSQ1dMb0t3WnZxTEVKMlZRTEJiSFVzUW5aVkFzRVlQeVZDL29jS3dYK2xKVUtXSVF6QkN2a3RRaEx2QThFQ1VTMUNFdThEd1ZvV0prSmUyUXZCamw0d1FyaHl2ci9TelNoQ0FQSlRQVE16S1VJQThsTTlMdmt2UXJoeXZyK3VSeUZDQVBKVFBRbHpLRUs0Y3I2LzdDZ3hRbEJZMUw5bnZUQkNVRmpVdjRiQ0tFSlFXTlMvN0NneFFwQ1NFTUJudlRCQ2tKSVF3SWJDS0VLUWtoREEyZFl3UWlRL2VzQlVhekJDSkQ5NndISndLRUlrUDNyQXljNHZRZ2htczhEbzB5ZENDR2F6d0l4Yk1FSUlaclBBcW1Bb1FnaG1zOEJzSlRGQ0NHYXp3SW9xS1VJSVpyUEFyTWd5UWdobXM4QU56ekpDQ0dhendNck5La0lJWnJQQUxOUXFRZ2htczhEU3pTaENFR1MwUFRNektVSVFaTFE5cmtjaFFoQmt0RDJEVURCQ29JYSt2L1lvS1VJQThsTTk5aWdwUWhCa3REMmVHakZDY0c3VXY1NGFNVUtnblJEQXRzZ3dRb2hJZXNDRkxEQkN5R3F6d1BSZEwwTGVOTkRBMU9na1FvaS9Dc0VrYWl4QzNsY0N3VHphTUVMODBkUy9QTm93UW1qUEVNQVlpVEJDMkhKNndIenVMMElrZ0xQQXpTQXZRbkJLME1Cak55eENwbUlDd2MzR0pFTGExZ3JCVkJFd1FrRGd2ci9nK2loQ0FQSlRQZUQ2S0VJUVpMUTlyS0FuUW1peVNjRHJLQ2hDVGtFYndBT2JJMElBUGgzQTBHY2dRZ0ErSGNBZVhDdENUa0Vid1B3ZEpFS3M2VW5BUGg4clF1QzBkOEFNN0NkQzRMUjN3QzVSSjBLczZVbkFlYjRxUXBnV0djQ3M4UzFDbUJZWndQdDZLa0pnM1hYQUxxNHRRbURkZGNDQUF5eENCZ1lZd0xNMkwwSUdCaGpBeEx3clFyVDFkTUQyN3k1Q3RQVjB3Q2c4TEVKQTJoZkFXMjh2UWtEYUY4RHpKeTlDZU5CMHdNRDBLMEo0MEhUQXBaTXZRdklsRjhCRFN5OUN0R0Ixd0lRU0wwSjBoblhBV013dFFrUnhkc0I2TkN0Q09FOTR3QUNXSTBLSW5CekFJVmtuUWlqa1NjQXVjaXRDNkpnYXdNRVFMa0tnWmhqQU9Gb3ZRbFpTRjhCZ0tqQkM1QnA2d0ZCcE1FSUk4WG5Bazdrd1FxaHhFY0RsZVRCQzRxSVJ3SWNNTDBKRTFSTEE0U1FzUXRSRUZjQndiU05Db0lBWHdIVGdLMEpVTVgzQWhKa25RbUMzU2NDb3dDNUNVQjk3d0swMUNFTEU1cysvNVBzQlFxNG9Fc0REZ3doQy9NUEx2MTBkRUVKYzduMi9YUjBjUW1CMmxiNmsvaVJDQUdrRVBLMDFDRUxFNXMrLzVQc0JRcTRvRXNERGd3aEMvTVBMdjEwZEVFSmM3bjIvWFIwY1FtQjJsYjdPV2lSQ0FHa0VQT09VS0VJUVpMUTl4SDRuUWxCdWl6MlV3U2hDRUdTMFBVanVLRUlRWkxROTRaVW9RaEJrdEQwMytDaENFR1MwUFlaSklVSVFaTFE5WjFJbVFoQmt0RDFJbFNWQ1VHNkxQY3R3SmtJUVpMUTlNWThtUWhCa3REM3lsU1pDRUdTMFBSTlRKa0lRWkxROW1Gd2hRaEJrdEQzZ0d6SkNFRERRd0lBVk1rSVFNTkRBQW9vdVFuWlZBc0VkalNaQ1FySUp3VEk3SmtKQ3NnbkI3dHN1UW5aVkFzR3U2Q3BDRUREUXdFM2lLa0lRTU5EQTBGWW5RblpWQXNIK0J4OUNRcklKd2RJZU0wSUlaclBBREZJeVFoQXcwTURxVHpKQ0VERFF3TEFjTTBJSVpyUEFUck15UWdobXM4QXJzVEpDQ0dhendHaTRLa0lJWnJQQVNyWXFRZ2htczhBaEFESkNFRERRd1A3OU1VSVFNTkRBN3N3cVFoQXcwTURNeWlwQ0VERFF3Q0pmTUVKQ1k5UEFVSkV2UXJTZzdjQ1VLVEZDUW1QVHdCSFlMa0swb08zQXFuRXVRb0J0NnNCODhDMUNnRzNxd0F6a0xVSk1jdXJBR0t3dFF0eUg2c0FrZEMxQ2RKM3F3RUFzTEVLNEkrdkE0cEFwUWdRMTdNQkUyQjlDVUR6dndIWUxGVUkwdC9QQUFsRVJRcUEvOU1DTy94QkNrRnYwd05JbkMwSVVWL2JBZ05vS1FwUng5c0NBMmdwQ2xISDJ3SURhQ2tLVWNmYkFBRVF3UW9CdDZzRHNsVEJDZ0czcXdNNFFLVUtBYmVyQUVSd3lRaEF3ME1CZjZqSkNDR2F6d0JOaEprSnd6Z25CREtvdVFuWlZBc0dVZmpKQ0NHYXp3T1o5S2tJSVpyUEErbUl3UW9CdDZzQVc0ekZDRUREUXdBbXpNa0lJWnJQQWpKOHhRaEF3ME1DL2JESkNDR2F6d0l0SkxrSjJWUUxCQWpFbVFqRHRDY0ZnY3k1Q2RsVUN3Y3NxSmtJcThRbkJjeEF2UWhMdkE4RnBseVpDeklZTHdYckhKa0lJYUF2Qnh0a3VRaEx2QThIelJqSkNDR2F6d0RvQk1rSUlaclBBQmtBcVFnaG1zOEJZQmlwQ0NHYXp3SGlDTWtKQ1k5UEFlSkV3UXJTZzdjQml5VEJDdEtEdHdIMUpNa0pDWTlQQWkvUXZRb0J0NnNBUkt6QkNnRzNxd0U2SE1VSVFNTkRBVzF3eVFnaG1zOEMwM2lWQzJpRUt3VklUTGtKMlZRTEJUTzh4UWdobXM4RDQxU2xDQ0dhendBek1MMEtBYmVyQTFrVXhRaEF3ME1DMUd6SkNDR2F6d0tPU0xVSjJWUUxCODdRbFFwSThDc0VlMmkxQ2RsVUN3Zk92SlVMR1B3ckJoSzR4UWdobXM4Q2draWxDQ0dhendKdU9MMEtBYmVyQTZDb3ZRb0J0NnNBeTZIcytSTmd1UDJzOGR6NFduakEvRVdwMVBnMEpNei9wRG5jK0RYYzFQekpMZUQ3Vllqay9EMXFCUHJkV09qOHlmWVkrb2pVNVAyMy9pVDQxV3pZL3FQNktQcENlTWo5OGFJaytEd012UDVUSGhUNDVjeXcvVXdxQlBpYVJLejhxcFhnK2hKVXNQNTJIY1Q0QlFpOC9KSjF1UGtIdE1qOHk5SEErOEtRMlA1NVRlRDVXUmprLzVsU0JQdGc0T2ovemJvWSsxeGs1UDNmcmlUN2JRelkvbGVtS1B1R01NajkvVm9rK21QWXVQN2U3aFQ1YWFpdy9NQWFCUG15Skt6OUVySGcrTzR3c1A3Q2FjVDYwTkM4L25iVnVQb0RhTWo5SUNYRStsWXcyUDhtaGVENThPamcvbXltQlBpRTdPVDl2bW5nKzlWTTRQeUlsZ1Q1d0lEay92T3FGUHJVVE9EOHQ5NFUrbVN3NFA3d3hpVDR2YURVL1FFT0pQZ3Q5TlQ4RkpZbytNdVl4UDVRM2lqNzM5VEUvVnE2SVBrT0JMajg4dm9nK1lZd3VQN3BNaFQ0akZ5dy9PVmVGUGdZZkxEK0QzNEErTTBFclB5dmpnRDRLU0NzL2p1aDRQajg5TEQvVTduZysvalFzUCtFN2NqNjF3eTQvcTB4eVB1SzNMajlSaEc4KzVqb3lQOXlaYno0d0tqSS8zN3B4UG1xOU5UOVl6WEUrcUtjMVB6RVhnVDdjL3pjL05nTjZQc0E4Tno4eUlZVSt0eHczUDh2dGh6NkUyRFEvYXNTSVB2SGFNVDg0aW9jK3R2TXVQNCtuaEQ0QzRpdy9uZHlBUHBvcUxEL2xMSG8rdC9zc1A0cUZkRDVPSWk4LytVTnlQa1lVTWo4OU1YUStlQTAxUDhacVFENm4vU3cvZkpwRlBxUGZMait2VEVVK3ErY3VQMVc5UUQ2bCtDdy9uN0o0UHU2RExEK0JBb0UrbElJclB5V3hoVDV6WWl3L2VVYUpQbmJyTGovWDFvbytHWDB5UDdyWmlUNFFMelkvVDJLR1B2NEFPVDlVVUlFK1VoNDZQeHhiZUQ3eUxEay9ic3BEUG03ZU1qL3M4VDArT0xvelAvR1hQVDQxeHpNL1hSeEVQcVRSTWo4SWprUStDdVV3UCtiZFJENlMyakEvSVBSSFBsU2dMajlsUEVNK2xOQXNQL1l6U0Q1NW1TNC9UWUJEUGkvTUxEOWk0M2crQjBRc1B5bm1nRDZvVFNzLzBWK0ZQblFsTEQ5Qnk0ZytoNVV1UDh4R2lqNE9BekkvbVZHSlBpYU9OVDllQVlZKy8wQTRQMDB0Z1Q3clVEay9hSlI0UHIxb09EL3VxVUErazFNelB5dVZSajcxYkRJL3VmTkFQbjVJTXo4NjJFWStIbUl5UDkxR1J6NWFpREEvVEloSFBuaC9NRC9ESmtjK3h3c3ZQOEUxUWo0SUl5MC81RGRGUHNydExEL1orRWsrMGJrdVAyRnRSajZDQ3pFL0RWSkpQdWFoTUQ4UHIwVStVUWN6UDlTbVNENjloakkvb0hNL1BoUDFNei93dWtJK29YRXpQMXlHUWo2ZEhTMC9oY3MvUHBUbk16K3c5VVEraHZJc1AvQnlRajRpZlRNL211aGlQcXRBTEQveGRHSStadWN1UHhSUFpENDAvQ3Mvck9kalBvYUFMajhiejJFK3ZvUXlQN3RUWXo3Rzd6RS9EQ0JoUHFvWk5qL3F0MkkrUjFnMVAzeWFZRDU1clRnL1dFRmlQZ2pOTno4OERtTStqRGtzUHh2SFlENERsamcvWlRCa1BoTUNMRDlESFdJK1pPQTNQeEFLV1Q2aUd6QS9TV2RaUHJtUkxqKzQvbG8rb0tzdlB6QlNXejROTlM0L29ZZFlQbWN5TWo4ZmlsbytZYWd4UHhNQldENkNSalEvN1JGYVBnMmpNejh2bkZjK2FNZzFQL1czV1Q3RUVqVS95NXBaUGhxSUxqOEQxVmMrZUxVMVB4d29XejRiUFM0LzNvbFpQbWtpTlQvdWkwSStCLzR5UDd1elBENUg0RE0vZ2JwRFBxWVlNejhkakRzK3BjSXpQOXd4UVQ3ZE56TS82NmhHUGdkWk1qK0t4VWMrQUhBeVA4VWFRRDRwSGpNL0NCaEVQcThFTHovUVAwVStCeDB2UDkrZ1B6N1k3eXcvT0lRK1BubldMRDl1QVVnK2s1d3VQKzhYU1Q2dnNTNC93NzlEUHF5dkxEK2xza0kraTVrc1A4VjVNVDZDcHpJL0hpa3lQajFSTVQvUUtEYytBT1F3UDh1T05qNlZKekkvN3drMFBvdDhMVDlseVRRK3VlUXJQNS9QT0Q0ZlJpMC9SSGc1UHBQRkt6OThaREErY29ZeVA0OFZNVDRtTVRFL2ppSTJQdUxITUQvc2hqVStxQW95UDFqN01qNGtYeTAvMHJ3elBuN0lLejhWempjK1Npd3RQNk40T0Q2eXJDcy8zSFFsUHJZSk1qOU5OeVkrbGI4d1B3dklLejc0Y2pBL3Zoc3JQa1NzTVQrRlFTaytHa3NyUDNFU0tqNDh2eWsvUkhvdVBncElLei9hTXk4K2tORXBQOVR6SkQ2VTl6RS9FTGNsUHV1dE1EK3lUQ3MrYVdNd1ArZWZLajQ5bkRFLzU4TW9QcDA3S3orc2xTaytWN0FwUDhNQkxqNUJPaXMvTjd3dVBrWEVLVDlZb3pzOUg5c1VQK0VtUGozVFZ4US82ZFE5UGRwUUZEK2c5RHM5UWVJVVAyLzlUVDF5TGhVL0lpeE1QV1MrRlQ5dzFrczlLN2NWUDVkVFRqMkZOUlUvc0Q5SFBma1VFai84NmtZOXVnNFNQNFBIU1QxdGNoRS9mbkpKUFYxc0VUOHA1bFk5elBJU1ArRStWejBzK1JJL25HQlpQVUJTRWorNXVWazljMWdTUDhiRlFENGhTRE0vWkdSSFBqQ0FNajgyclQ4K0F5NHpQeW9VTmo0Vk5ESS82d28xUHRJV01qL0xraW8rcGJVeFAyc1dLajV3cFRFL3hUdEtQWktoRlQvcmtFbzl6S2dWUDV0alREMnhHQlUvQVZGVlBXTGNFai9oekZjOXFEc1NQNWtsV0QzVlFSSS9WN2N1UGpUUUtUOGRQeTQreWNJcFB5TUdPRDZlcnlzLy9BWTVQdGJJS3ovT1RVSStsWjhzUDN0Y1F6N3p0U3cvY2J0SVBnZThMajlCN0VNK3d4QXpQL1BxUEQ1djJETS9SY1E3UHVtNk16OFB1REUrbXFFeVAxbWpNRDdIZ0RJL3c3a2xQbzRGTWo4U09TVStnUE14UHoyeFBEMWI3QlEvc1Y4OFBUZmxGRDhIa1Q0OUJsc1VQL2VrUnowdUdSSS90aXRLUGVwMkVUOEpnVW85K253UlAxVFVLVDZEc1NrLzRsQXFQbHpBS1QrMTlqTStVOGNyUDZjQ05UNXM0eXMvZzdjK1ByTFRMRDk5MHo4KzQrd3NQeXR2UlQ3OUZ5OC9Cdm03UGVhcUlUL1hlcm85VDVBaVA5UTl4ajAyVENNLythWEhQZWxzSWorRkVNSTlJK2tkUDQrOHd6MlIyaHcvaTJUTlBTckZIai9TOTg0OUFyNGRQd3dZeFQxbE9pTS9aTi9OUFVlb0hUOGVCcnM5UVpraVB6RkJ4RDFTNVJ3Ly93RjhQVGloR0Q4M2puazk4MGtaUDR0Umh6M0loUmsvdFNHR1BkZ3JHai8xRG9NOUl1QVZQd0YxaEQxT0doVS84RFdNUGV6UEZqODlrSTA5UUEwV1A3NDFoVDNnRlJvL29hcU1QWkgxRlQvZ2FIbzlhMVFaUDMzZmhEMkxKUlUvRGJRNFBkYm1FajhsMkR3OThVc1NQeGpyT1QyVEJSTS9Razg3UFlKQkVqKzEvaU0rcytFc1A4NkdJejVOa2k0L040OGtQa3ZKTEQvcUVDTStWM291UDRKRFVUMG4xQkkvckNSS1BRV2NGRC9BdkVvOXhxb1VQeDRDVWowTTJSSS9zVmtwUGptNEx6OXBseXMrMkl3clB4YlZLejZZZ1NzL2dJMHBQaVRDTHorbENoNCs1c0F0UDNEL0hqNG1MeXcvOVJjblByenNLaitGdXlRK1p4MHZQMmlVSHo3dUdDdy8zNE1lUGw3YUxUOFp4Q3BDUGlOc1FHUE1La0xud29wQWVLSXFRaURsaWtBRjdpcEN6dDVyUUh3akswSWYzSXBBTWhzclFySlZiRUNRK1NwQ1dmNktRQnhGSzBKQ0VXeEFoUlFxUXFtTmlrQTdEQ3BDd3JoclFKcnFLVUxocjRwQUpqWXFRbEowYTBEaGxDbENxSE5yUUNxZEtVSWFhNHBBUUhNcFFsS05pa0RLdmlsQ05DOXJRRUUyS0VKeWFHdEFveFFvUXJtSGlrQmFqU2hDNXBwclFMcHJLRUx4b0lwQVkzNG5RdmI5YWtERlhDZENlMUtLUUFnSEowTFl1R3BBYXVVbVF1d3Zpa0FJdVNwQ1RMMktRS2phS2tLWTAydEFwdE1yUXZYcmlVRHU0U3RDc2lWcVFFajFLMExvTUdwQVRNQXJRbG5taVVEZkp5cENRNU9LUUlCSktrS0lmMnRBSXk4clFsRzhpVURGVUN0Q25ORnBRR2s5SzBKc3htbEF5QnNyUXJlMmlVQ1A0Q3RDc08rSlFEQUNMRUppT0dwQXdDb3NRaXdGaWtCZ1RDeENWbU5xUUVyWktrS2x4b3BBWUs4cVF0M29pa0RxK2lwQ1N1WnJRUC9RS2tLNktteEFpQ0VvUW5lTGlrQXFReWhDN205clFBOHFLMEkydTJsQWJnZ3JRaHV4aVVEaCtDbENrcTFyUU1vaUtrSWNhV3RBS2dFcVFnNklpa0EvMXlsQ1I2cUtRQWxySjBMQThtcEFhRWtuUXVCTWlrQnVwQ3BDSjVTSlFIUHpLVUkwMldwQUVNWXFRa3lCYVVEUjBTbENIVUNLUU5FMUtrSVJYWXBBTEVrcVFxeGlpa0NIWENwQ1JtaUtRSy90S2tKUGtvcEFDZ0VyUXVxWGlrRHlEU3RDcFp1S1FDUllLMElpc1lwQXcza3JRa0s3YTBDU0x5dENVSkJyUUt3aUswTFVpR3RBVVE4clFwNTlhMEFvZmlwQ2ppbHJRTTFxS2tKWUhtdEFjbGNxUWlJVGEwQ2hNeXBDSCtDR1FJNDJLa0tDQ25OQVZ6MHFRaHowY2tEYUxDcENVT3VHUUtCMUtVS3V5WE5Bc2wwcFFyclJjMEJwZkNsQ1NMTnpRT2hXS1VJYzZITkEvbE1wUXVwT2gwRHJheWxDNUVxSFFMTnlLVUt6UDRkQU5FMHBRaDFhaDBBUWRpZENsSnB5UU5sOEowSXloSEpBSkhNblFpaW9oa0JjYkNkQ1diT0dRRXFaS1VLV0xJZEFncElwUXNjM2gwQTJuQ2xDY0tOelFQK2lLVUlLalhOQTEvc3FRbld0aVVENUdpdENlckpwUURzQ0swSlFyNGxBWVNFclFpeTJhVUNUOENsQ3hLaHJRSEFhS2tKS1pHdEFMdW9wUWc2bGEwQUxGQ3BDbEdCclFBckxLVUs5cG9wQTV2UXBRb0NFaWtCeDBTbENtS2lLUUU3N0tVSmJob3BBWUdNblFsTHVha0Q1WENkQ25PcHFRTmM5SjBLSFNZcEFQRVFuUW1KTGlrQjlLU3BDZjFtS1FPUXZLa0paVzRwQW9VZ3FRcEFLYTBBR1R5cENRQTVyUUFrREswS01yNGxBS3lJclFxUzJhVUJpOFNsQ05xbHJRRDBiS2tLOFpHdEFQdElwUXRTb2lrQWEvQ2xDbDRhS1FDMWtKMExLN21wQUNrVW5RcHhMaWtDd01DcENsVnVLUU5WUEtrSzREbXRBOCtRcVF0T21pVUJoR1N0Q2lyRnBRRDM2S2tMK3JJbEFsQVlyUXFxbWFVQnlFaXBDcUY5clFKVG9LVUllcEd0QVR2OHBRcEJVYTBCbDFTbENBSmxyUUU3ektVSUpoSXBBY3NrcFFraW1pa0N1M1NsQ3lIMktRTVN6S1VJQW9JcEFqRWNuUWpUZWFrQmdXeWRDc09scVFEdzhKMElRU1lwQTdTVW5RcHBDaWtCVkVpcEN5bEtLUU9VbktrSUpXWXBBQjBjcVFxQUphMEQyTXlwQ2x2NXFRQTdsS2tKaDFZUkFGc1FxUWlyNGMwQjI0aXBDc0tselFKVElLa0lvK29SQTNMc3FRdTZhaVVBQTJ5cENibzFwUUJEVUtVS0dPMnRBTmFvcFFnQ0FhMEFTaXlsQ09KU0tRTzYwS1VMN2NZcEFBUjBuUW83RmFrRGMvU1pDQURlS1FLZ0lLa0orNVdwQWhPa3BRdmxHaWtBTThDcEN0UmVGUUZidEtrSjZQM05BUGMwcVFtaVNjMERzMFNwQ25UNkZRSUlqS2tLTUMzSkFOU1lxUXJ0OWhFQm9BeXBDZWw1eVFCWUlLa0ttcElSQVR5VXFRaHhEaEVDNElpcENMSVZ5UUZjRUtrS2cwM0pBMVFncVF1Vm5oRUQyMmlwQ3JNMkVRRjdZS2tKTW1uTkEvcmtxUXNib2MwQjh2aXBDZHZLRVFDaGNvRUc0SHBWQTlDaWhRYmdlbFVCUXVLRkJ1QjZWUUJnam9rRzRIcFZBRGt5aVFiZ2VsVURPU0tKQnVCNlZRSTdDbmtIWW82QkFXNCtmUWRpam9FQzNIcUJCMktPZ1FINkpvRUhZbzZCQWRMS2dRZGlqb0VBMXI2QkIyS09nUUlPcmwwRlN1TTVBRTI2WVFWSzR6a0JFOXBoQlVyak9RTFZibVVGU3VNNUFub0taUVZLNHprQ0lmNWxCVXJqT1FDaGNvRUc0SHBWQTlDaWhRYmdlbFVCUXVLRkJ1QjZWUUJnam9rRzRIcFZBRGt5aVFiZ2VsVUNPd3A1QjJLT2dRRnVQbjBIWW82QkF0eDZnUWRpam9FQitpYUJCMktPZ1FIU3lvRUhZbzZCQWc2dVhRVks0emtBVGJwaEJVcmpPUUVUMm1FRlN1TTVBdFZ1WlFWSzR6a0NlZ3BsQlVyak9RSUVuZXo4QUlpQTdrbU41UCtBN0p6NzRWWGsvQU5BeU8vYTZmei9BT2J3OSsrNXpQL2diS0Q1aTRYTS9BTlJxTzNJelV6L0FYQzArMlNWVFB3RENEanl0NnlNL0VQTTBQaFRlSXo4QUZJUThBQUFBUHdCWXB6d0FBQUEvZ0ZzNVB1Mm9lVDhUZUhzL0FBQ0FQMk05YUQ5MmVucy9ZbVY3UDdDY2VUOWFlRlkvVnpSMFB4bXdlejhaS0hRL1lMQldQODE0VXo5TUFIMC9rV3hUUDQ0QVdEOEpNU1EvNk9WK1A4c2tKRDhxNWxrL0FBQUFQd0FBZ0Q4QUFBQS9RZ0JiUDBqOWZ6K05CR0EvK0psNVA0US9UajloSlhRL2luZE9QOWhwVXorNHgwOC9FeUlrUDFtdFVUOEFBQUEvYk1kU1A2NjlmejhnQVA0OVNXWjVQeEFmU0Q2MDhYTS9PUDlJUGlzMlV6OElRRTQrWmU0alAyaldWVDRBQUFBLzJENWFQa2tXZXo4QUFBQUF2cWwvUDRBNHR6M0JSSGsvQUhDVk9TclFjejhBY0pVNm9oUlRQd0J4elR2ZHpDTS9BQjlnUEFBQUFEOUFMSk04eWU1L1AwR2RaejgrYVhzL1JNVjZQN2FYZVQveDEzby9IeU4wUC9zUGV6K1haMU0vSldCOFA5SWZKRC9GUlg0L0FBQUFQNnRlZno4UjdIOC9hMlJmUDNhc2Z6OFEvL2c5elkzVFBPQTdKejdzRDVzOEFDSWdPL2xBMVR3QTBESTdxUlNLT3NBNXZEMU5FRUU5K0Jzb1B1THBRVDBBMUdvN056SXpQc0JjTFQ2ZGFETStBTUlPUEtZb3VENFE4elErMlVPNFBnQVVoRHdBQUFBQVl6MW9QMWZpeWp3VGVIcy9TckdRUEdKbGV6OEVhc3c4V25oV1A0cTZQRDBac0hzL2FINDlQV0N3VmovS0hESStUQUI5UDdwTk1qNk9BRmcvN3AyM1B1amxmajlxdHJjK0t1WlpQNFQ1TFRpTkJHQS9BY0hNUElRL1RqL3VxVDA5aW5kT1A2QllNajY0eDA4LzJidTNQbG10VVQvZHBJUTZJQUQrUGRFMjB6d1FIMGcrditSQVBUai9TRDVVSnpNK0NFQk9QallqdUQ1bzFsVSsyRGFkUEFBQUFBQmhnNnc2Z0RpM1BlUm4xendBY0pVNVovMUNQUUJ3bFRwM3JUTStBSEhOTzBabXVENEFIMkE4M3JxSk9VR2RaejgyMkpJOFJNVjZQMElKelR6eDEzby9EODQ5UGZzUGV6K2lZVEkrSldCOFAxekF0ejdGUlg0L0QzcWZPV3RrWHorVkU2YzZFUC80UFZTUGZEOXpZUkEveUxwalA2bVBLejhXdzM0L0FLME9QelVKWkQ4Z3h5Yy9HR1U4UDlDRVR6L0paMFkvVE9kRVA5S3VmVCtNOS9FK0FBQ0FQNnlVNHo3d3NIZy95UDZ3UG1OL2VqOWtYcE0rOTNCd1Ayd3RtRDVmWjNFL2VIVnBQZys1WWo4UWZHYytPVWhpUCtoK0R6N1BLRGcvb09BYVBtTmRNejhBclVNOWR6ZitQcUNqK3oyZXlmdytnTGhRUE1PK296NmdudWc5S0JpTlBnRDhwanFzUFpjK29JSG1QV2hRZXo0QUFBQUFnKzFrUGhoMkFENjBnU0ErZ0hPQ1BJUHRaRDZBamhrK3RJRWdQa0FuUFQyRDdXUSs3Q1dOUHJTQklEN2dPVTQrZysxa1BwaUV6VDYwZ1NBKytKUzJQb1B0WkQ3OExBSS90SUVnUGhSSCtqNkQ3V1EraENVYlA3U0JJRDZYL0I0L3F4dG1QamZlSUQvR2VoMCsyV2tnUDRKU1pENkZ5RGcvemUvSFBkT0ZPejlqY2tZK2dsMWVQeFR2a1R5RTRXTS9oNkZGUHVXS1pUK000SWs4aDdwcVB5N1JjajZGbm00L3BOVE5QUUFBZ0QvQkNKNCs5ajl3UHg5MEl6NEFBSUEvd0tEYlBobUlhVDhGUHFVK0hiMThQMGdoRlQvYTQyWS95cy8rUGp4NmVUODlTaWcva3E1WlA1cUdGRC9RSzJrL09ESVJQOUFyYVQ4R0ovZytQSHA1UDVoMTVqN1FLMmsvTGppOFBqeDZlVDlCbFo0K0hiMThQOUpNUlQ0ZHZYdy9oSTRZUGdBQWdEOHE4Rms5QUFDQVAyNC91VDBBQUlBL0FBQUFBQUFBZ0QvR2dZQThoN3BxUDNLbnNEdUh1bW8vRk8rUlBJVGhZejhVNzVFOGhPRmpQODN2eHozVGhUcy96ZS9IUGRPRk96L0dlaDArMldrZ1A4WjZIVDdaYVNBL3RJRWdQcGY4SGorMGdTQStsL3dlUDdTQklENFVSL28rdElFZ1BoUkgrajYwZ1NBKytKUzJQclNCSUQ3NGxMWSt0SUVnUHVBNVRqNjBnU0ErNERsT1ByU0JJRDVBSnowOXRJRWdQa0FuUFQyMGdTQStnSE9DUExTQklENkFjNEk4YUZCN1BnQUFBQUJvVUhzK0FBQUFBQ2dZalQ0QS9LWTZLQmlOUGdEOHBqcWV5ZncrZ0xoUVBKN0ovRDZBdUZBOFhMY3dQd0N0UXowVDRSZy9BSzFEUGRmelhqL29mZzgrYS94QVAraCtEejc5RW00L2VIVnBQcEViVUQ5NGRXaytBU3QzUDJSZWt6NlZNMWsvWkY2VFBwNnJmRCtzbE9NK01yUmVQNnlVNHo3YURYcy9BSzBPUDZ1dVdUOEFyUTQvWm1aZ1A2bVBLei82YmtJL3FZOHJQN1lRT1QvUWhFOC9TaGtiUDlDRVR6OUtMQUkvTjk0Z1A4RGdBVCtFSlJzL3dPQUJQL3dzQWovQTRBRS9tSVROUHNEZ0FUL3NKWTArYmFFMVB6ZmVJRC9qVlRVL2hDVWJQK05WTlQvOExBSS80MVUxUDVpRXpUN2pWVFUvN0NXTlBnVDdYRCtvZnlJL0RNdG9QOENmRkQvVjJHNC8vQ3dDUDlYWWJqOTR4OUErSk1SbFA1VHVsajdGMGpZLytDbFhQcXdwWkQ5UVpJUStNbXNBUDhEYVJ6NnNiWXcrR05oQ1BoeTBMeitCRGswL2o1WVJQeTNDWFQ5cTVOcys1WXBsUDB0djZ6NkNYVjQvVzEvNlBvWElPRDhMMkNZK0h2Y3FQKzZGSkQ3Y0VpOC9ONUkrUFNPREVqL243anM5bFNvVFB5NHBUajBTOGhRL0tZTlZQWmNhRXo4cEgwQTlsSTBTUDA4cFBUMlJTUk0vSHNKVVBiUVZFejlpajAwOU9lTVVQd3AxNEQzSXRDUS9PSURpUFo5MUl6OVRYZlE5a0ZBalB6c0g3ejBHdVNZL3E3L2pQYzF6SXo4V2QrRTljOWtrUHp6TTh6MGJVaU0vbzQvdVBlNm9KajlmWTdjOVlVZ2VQM2VjdFQxeFd4OC9XaCtEUFRrL0dEODJ0SVE5Z1d3WFA0L1p3ajErZHlFL0NaUEhQUkNBSGo4WFNJNDltVUlhUHlPaGtqMG85UmMvZ29HNFBjbE1Iai9xcG9VOUpIWVhQK2FFdGowemdSOC9OK0dEUGFGaUdELytEY2M5alg0ZVAvb3NrajNiOEJjLzVtdkNQVnhtSVQrbTZvMDk4ekVhUDVrNmNqMGxzeFkvYWg5MVBWRHJGVC92ZjRNOWZxVVlQejU1aHoyK2RSWS9GT0YyUFFmMUZUOXpvbk05VGRVV1AzVU5oejFjY1JZL3ZpaURQVnlWR0Q4VVB6Zy9pRlEwUHZ1T1hUL01UUFErR1ZjNlB3QUFBQUFIakZBL3RGMEJQOFJQYUQ5ZHlsTS9HVmM2UDVicGRqOEFBSUEvRHB0eFB4US9PRCsvYzFjL3I4VUJQempvUVQ3TXlOWStnR21kUE16STFqNGNzM3cvcjhVQlB3RnlXejl4WkpNKzRKTklQdXI2MEQzQXdPbzg2dnJRUFFpTGZ6OXhaSk0rUkdoZFB3QUFBQUFBQUlBLzFxOWVQdm00WFQ4QUFBQUFBQy8zUE5hdlhqNVlwa2srR1ZjNlA1YnBkai9NeU5ZK0hMTjhQeGxYT2orVzZYWS96TWpXUGh5emZEL3ErdEE5Q0l0L1ArcjYwRDBJaTM4L0FBQUFBQUFBZ0Q4QUFBQUFBQUNBUHdBQUFBQUFML2M4QUFBQUFBQXY5enpxK3RBOXdNRHFQT3I2MEQzQXdPbzh6TWpXUG9CcG5Uek15TlkrZ0dtZFBCbFhPajhBQUFBQUdWYzZQd0FBQUFBQUFJQS9EcHR4UC91T1hUL01UUFErKzQ1ZFA4aE05RDRBQUlBL0RwdHhQN3hhUFQ4Qy8xcy9xYlpDUDJ4YlhEL2h0VUkvS2Y1YlAvcFpQVDlEWEZ3L3hqRkNQMEtBVlQ4dzNEMC9mUnBWUDBReFFqL2VHVlUvc2RzOVArQ0FWVC9ydGtJL0tucGNQN2xaUFQ4QWUxdy84akZDUHhDaVZUK0cyejAvcnFKVlAwOFVRajhXRUZ3L0lQdzlQN29RWEQvSlV6NC8wUTVXUDkyNVFUOVVEbFkvdEJSQ1AzeE5YRCsrK3owL0lFNWNQeUs2UVQ4VVVWWS9obE0rUDVCUlZqK3hza0UvYUV0YlAveGNQai9xUzFzLzRZcEJQNkNEV0Q5ZWd6NC9FSVJZUHdBQUFBQUFBSUEvQUFBQUFBQUFnRDhBQUFBQUFBQ0FQd0FBQUFBQUFJQS9rNkJCUDRqNldUOXpiajQvQXZ0WlA4dFhRaitBc2xjL05sZENQN2RPVnorVnRqMC9NTE5YUHlhM1BUOW1UMWMvL0ZkQ1AyclRWejlrdGowL0dOUlhQenZTUVQ4ZTJWYy9MRHcrUDZiWlZ6K0kwa0UvYkJwWVArRTdQai95R2xnL05vQStQM3ppV0Qvd2FqNC9BbHRhUHppa1FUK0hXbG8vSjQ1QlB3dmlXRCtjV3o0L2sySmRQL1JCUGorYzVsNC92TTVCUHhibVhqOGZ0RUUvRjJKZFA4TVBRVDkyOVYwL1JBQS9QOFAxWFQ4WCtUNC9tcXBlUDJNWFFUOUtxbDQvOXc5QlAvZ0NYajhUQUQ4L1JRTmVQK1A0UGo4WXVGNC9taGRCUDhpM1hqLy9zaXcvYmJoK1ArUDRQajhBQUlBL21oZEJQd0FBZ0QrYUYwRS9BQUNBUHdoVFZEOE10SDQvQ0ZOVVB3QUFnRC9JYmxRL3Y3VitQeTJZTEQ4bHVuNC8vN0lzUHdBQWdELy9zaXcvQUFDQVB3QUFBQUFBQUlBL0FBQUFBQUFBZ0Q4QUFBQUFBQUNBUHdBQUFBQUFBSUEveUc1VVB3QUFnRC9JYmxRL0FBQ0FQNU50Vmo4VmozNC95WFlxUCtLVGZqOHRtQ3cvQUFDQVB5MllMRDhBQUlBL0FBQUFBQUFBZ0Q4QUFBQUFBQUNBUDVOdFZqOEFBSUEvazIxV1B3QUFnRC9VOFY0L1ZNeCtQNW4zSVQrbzBuNC95WFlxUHdBQWdEL0pkaW8vQUFDQVB3QUFBQUFBQUlBL0FBQUFBQUFBZ0QvVThWNC9BQUNBUDlUeFhqOEFBSUEvbWZjaFB3QUFnRCtaOXlFL0FBQ0FQNW4zSVQ4QUFJQS9tZmNoUHdBQWdEL1U4VjQvQUFDQVA5VHhYajhBQUlBL3lKZjhQZkRmTno3bE9nRSswQjQxUHVVNkFUNDRoem8reUpmOFBWQ0NNajRQZHVvOVlGNHdQZzkyNmowd0lTcys5RURuUFFEdEtUNzBRT2M5b0NRdlBsMEh4RDJnZFNNK1hRZkVQYUIySGo0QUFJQStnTmNIUGp3YUNqNFFFak0rQUFDQVB2QThERDV6THdjK3VERXdQZ0FBZ0Q2QWZlazljeThIUGdoakZENEFBSUEra09QaFBUd2FDajRBOXhZK3lKZjhQWkJKR3o3bE9nRStHSzhkUHZ3eC9EMUFCU2crQUFDQVBrREM5VDM4TWZ3OTBCa05QZ0FBZ0Q0d29jczlEM2JxUFFDTEZENEFBSUErNEZyeFBmMzArRDB3cmlZK09PL1VQU0RSR1Q0QUFJQStjQlRFUFFBQWdENnczc2M5L2ZUNFBXanBDejcwUU9jOVdISVRQamp2MUQxSVdBZytBQUNBUHBBR3JEMWRCOFE5UURZUlBqanYxRDJ3QlJVK0FBQ0FQakJvdlQwOEdnbys0TWd0UGdBQWdENGd3UWMrOUVEblBVZ0tGRDRQZHVvOXlDTVZQc2lYL0QwWTV4cys1VG9CUGtCT0hqNDhHZ28rZ0pFWFBnQUFnRDVnZStvOVhRZkVQVkNVRVQ0NDc5UTlFTElJUGdBQWdENWdnS3c5am1LL1B0QWVOVDRPMnNBKzhOODNQbzVpdno0NGh6bytEdHJBUGxDQ01qNThZc1UrWUY0d1BueGl4VDR3SVNzK3d5L0dQZ0R0S1Q3REw4WStvQ1F2UGluK3pqNmdkU00rS2Y3T1BxQjJIajdpOHJvK0VCSXpQa2RvdkQ2NE1UQStSMmk4UGdoakZEN2k4cm8rQVBjV1BnN2F3RDZRU1JzK2ptSy9QaGl2SFQ2Qjg4QStRQVVvUG9IendEN1FHUTArZkdMRlBnQ0xGRDdCd3NFK01LNG1QakxFeWo0ZzBSayt3Y0xCUG1qcEN6N0RMOFkrV0hJVFBqTEV5ajVJV0FnK0tmN09Qa0EyRVQ0eXhNbytzQVVWUHVMeXVqN2d5QzArd3kvR1BrZ0tGRDU4WXNVK3lDTVZQZzdhd0Q0WTV4cytqbUsvUGtCT0hqN2k4cm8rZ0pFWFBpbit6ajVRbEJFK01zVEtQaEN5Q0Q0U1ByZyttT2dyUG9wL3R6NVEyeTgrRE4rNFBrREJMRDRSNExZKzRBa3ZQcG1kdHo2SWhCays0MTI0UGhqaEZUNW8vN2crd0tnV1BwRDl0ajRJd3hnK25mYTBQdmllTEQ2R1Q3WSsrR2NwUG9SdHRqNTRreE0rU1JLMVBnQ0lGajdLVHFnK09Pd2VQdVIwcVQ3SU5CcytNNFNwUHRpWEJqNFFYS2crZ1BrSlBsZS9rVDVRa0JFK0JFV1NQakJLRFQ0Q0FJQSt3TDhPUGdJQWdENVFYQW8rR2pHU1BsQUo5RDFWcTVFK1FMMzdQUUlBZ0Q2QTNPNDlBZ0NBUG9EQTlqMlJJcmsrK0dvZFBuR0h1ajdJbUJvK3FsaTRQbGdqR1Q2WmFMWStnTTBXUHErQnFUNUlvQWsrWnpTU1BnQ3YrVDBDQUlBK1VHZjBQZGhydWo1STNDdysxUWk1UG9qZkx6N0VRcmcrU0U4b1B1dFR0ajVBMWlVK0pIZXBQaGpTRno0WFFwSStlQndLUGdJQWdENUlQQWMrODJ5NlB0Z09MRDdaQ2JrK01CQXZQczlEdUQ0WWh5Yys2RlMyUHNBUEpUNmxkNmsrQ0JZWFBuQkJrajRZYkFrK0FnQ0FQdWlPQmo1WGhybysyRUliUG9ZaHVUNEFGeDQrbTFlNFBoak9HVDZjWjdZK21IWVhQaTZCcVQ1Z1B3bytEVFdTUHBEWCtqMENBSUErUUlyMVBYbEt1RDVRNUJ3K0hjKzJQdUJWR1Q1YU03WStlSjBZUHExVnRENWdmUlkrbVF5b1BnaDdDajRmVDVJK2tITDlQUUlBZ0Q0Z0d2ZzlHYlMyUHREV0xUNENNN2crNkE0dVB0b1l0ajVJRUMwKzBqeTBQdURGS2o2NUFLZytXTUVkUHFoZ2tqNDQ0UkErQWdDQVB1amtEVDd0TTdnK3NGRXRQb3RKdUQ0UWd4MCtnR2U0UGlDbkhEN1k2N1krNkJjWlB1OVB0ajRJWHhnK3pYRzBQb0E5Rmo1L0pLZytrRElLUG1GYWtqNkF6dnc5QWdDQVBnQnk5ejJtMExZK0NKUXRQdUJQdUQ3Z3pTMCtRelcyUHZqTUxEN0xXTFErMElBcVBua1lxRDVZY2gwKzZHdVNQZ2lIRUQ0Q0FJQStPSWdOUHNwUXVEN2dFQzAram1hNFBzaEZIVDRVK3JnK3VIVWJQZzE5dHo1NDRoYytnT0MyUGhnbkZ6NGhBTFUrSVA0VVByZWRxRDY0eHdnK2xKT1NQckNZK1QwQ0FJQStnQ2IwUGZ4Z3R6NUFSaXcrdmVHNFBnaUpMRDd3eExZK1dId3JQanptdEQ2b0p5ays3NUNvUHFqbUd6NEtwWkkrRU1NT1BnSUFnRDVRdHdzK3RlSzRQc0RNS3o0aitiZytrQk1jUHJzWHVUNndPQnMrYkpxM1BxQ2tGejY1L2JZK3lPZ1dQdkFjdFQ1SXZoUStTYmFvUGlCL0NENDRuNUkrMFBQNFBRSUFnRDVRZmZNOUszNjNQb2dETEQ0OS83ZytHRWdzUGdIaXRqNElPU3MrNEFLMVBwamlLRDVacWFnK2NKY2JQcWl3a2o1b2FBNCtBZ0NBUGdoYUN6NHRBTGsrK0lzclBzRVd1VDVnMWhzK1hlTzRQbGdKR3o1b2FMYyswSUlYUHNITXRqNHd5UlkrT08rMFBtaWxGRDdEb3FnK09Ja0lQakRHa2o3d052azlBZ0NBUG5DcTh6MmVUTGMrT0trclBqYkx1RDZ3OENzK2RMRzJQa2poS2o2UTFiUStjSklvUGcyV3FENllieHMrUHRlU1BsaGREajRDQUlBK3lFTUxQaXJNdUQ2NE5pcytiZUs0UG5DbEd6N3JBQkUrV05zdlB0cUREejZZNkNzKzZFRU9Qa0RCTEQ3ZFB4SSs0QWt2UGpsRUR6NFk0UlUremNRUVBvaUVHVDR2QVE0K3dLZ1dQdUFFRWo0SXd4Zyt4UklXUHZpZUxEN3lZQk0rK0djcFB2WWtFejU0a3hNK2Jkc1ZQZ0NJRmo1cllpOCtRT3dlUGpjV0xUN0lOQnMrbWZjc1B0aVhCajdlUnk4K2dQa0pQbEdCWEQ1WWtCRSs5M1ZiUGpCS0RUN0tuVnMrVUFuMFBWeXBYRDVBdmZzOTNyb05QdmhxSFQ0ZjhRbyt5SmdhUHJCT0R6NVlJeGsrelM0VFBvRE5GajZoL0N3K1NLQUpQakdYV3o0QXIvazlWU2dMUGtEY0xENVY3ZzAraU44dlBuZDZEejVJVHlnK0tsZ1RQa0RXSlQ2M0VTMCtHTklYUHRKN1d6NTRIQW8rR3lZTFB0Z09MRDVON0EwK01CQXZQbUY0RHo0WWh5YytMMVlUUHNnUEpUNjFFQzArQ0JZWFBoOTlXejRZYkFrK1VmTUtQdGhDR3o3NXZBMCtBQmNlUHNsUUR6NFl6aGsreURBVFBwaDJGejZrL1N3K1lEOEtQdVNWV3o2UTEvbzlEbXNQUGxEa0hEN0VZUkkrNEZVWlBrcVpFejU0blJnK3BWUVhQbUI5Rmo3TjVpOCtDSHNLUHNKaFd6NlFjdjA5elpjU1B0RFdMVDRDbWc4KzZBNHVQay9PRXo1SUVDMCtXb1lYUHVERktqNk4vaTgrV01FZFBxOCtXejQ0NFJBK0pwZ1BQckJSTFQ3cWJBOCtFSU1kUGdVeER6NGdweHcrVGlnU1B2QVhHVDRpWUJNK0NGOFlQbVFjRno2QVBSWStBTGN2UHBBeUNqNCtTMXMrZ003OFBiaGVFajRJbEMwK1FHQVBQdUROTFQ1NWxSTSsrTXdzUG1wT0Z6N1FnQ28rRGM4dlBsaHlIVDR2S0ZzK0NJY1FQbXhlRHo3Z0VDMCs1VElQUHNoRkhUN1lDdzQrdUhVYlB1VUZFVDU0NGhjK0FEOFNQaGduRno2OS94VStJUDRVUHBERUxqNjR4d2crMk5oYVByQ1krVDBIUGhFK1FFWXNQb1k4RGo0SWlTdytJSFlTUGxoOEt6NkhNeFkrcUNjcFBpSGVMajZvNWhzKzdMVmFQaERERGo2Vk9nNCt3TXdyUHJvTkRqNlFFeHcraXRBTlByQTRHejRueXhBK29LUVhQb3dFRWo3STZCWStIOFlWUGtpK0ZENXRreTQrSUg4SVBwSEJXajdROC9nOXFRTVJQb2dETEQ2R0FRNCtHRWdzUGdNOEVqNElPU3MrUC9vVlBwamlLRDVPclM0K2NKY2JQckdlV2o1b2FBNCtwZjhOUHZpTEt6NTkwZzArWU5ZYlBrYzVEajVZQ1JzK0xpOFJQdENDRno1OFpoSStNTWtXUG80aEZqNW9wUlErZWJvdVBqaUpDRDZnYzFvKzhEYjVQY0ptRVQ0NHFTcytrMmtPUHJEd0t6NFhuUkkrU09FcVB1VlVGajV3a2lnKzVkTXVQcGh2R3o2RlVWbytXRjBPUHF0bkRqNjROaXMrTERzT1BtaWxHejVlUVlJK1VuWTBQMzZlcFQ1SUN6SS90Y2lDUGtNdE16OStucVUrL0VBelA3eWx2ajZSVWlnL2hsKytQdVJTSno5Wm1jMCtaUHdaUDlkQXpUNVRNaGsvMkUvV1BqOGpDejkzOXRVK1hvVUtQMnRTMno1RVJQays0L3ZhUGt4UStENi83dDArZkVmZFBxaWEzVDU0ajl3K3FMN2VQbkJId2o1MWE5NCtoTVBCUHFpYTNUNzQycWMrdis3ZFBxd3ZxRDdqKzlvK2tOV09QbXRTMno2VS9ZNCtkL2JWUGlpMWJUN1lUOVkrK0t4dFB0ZEF6VDdRd1VBK1dabk5Qc2hmUUQ2R1g3NCs0QndaUHJ5bHZqNEFZUmcrZnA2bFBqQUMrRDErbnFVK1FBSDJQVjVCZ2o1QSsrSTl0Y2lDUG1EZzVEM0ZrVUErQ0l3QlBzWlRRajdnQmdJK1JHMFRQaEI5SlQ2NU9oVStnR0FsUGpGSzlEMElqbFUrMnB6M1BhRGlWRDZCTHRzOW1BaUhQbjVJM2oxd2JvWSszSmJUUGRReHB6NURuZFk5TUZHbVBuNUkzajF3bU1vK2dTN2JQUWpHeXo3YW5QYzlEUFB6UGpGSzlEMFVkL1UrdVRvVlBpYkVFRDlFYlJNK3FiWVJQOFpUUWo2N1hDWS94WkZBUGdpREp6OStucVUrOWM0d1AveFBnejQyM0RFLzNCaStQaGRPSmo5RzU4dytjbVFZUDdhYjFUNno1QWsvM0tQYVBrUlk5ejRIUmQwK21OVGJQcmNXM2o2NFBjRStCMFhkUGp5RnB6N2NvOW8rU0syT1ByYWIxVDQ0dm0wK1J1Zk1QaGdtUVQ3Y0dMNCtFTndaUG42ZXBUNGdDL285L0UrRFBuRFA1ajJzR1VRK09JY0NQaW9RRno3d1J5VStMZ0w3UGFnNFZENlBkZUU5bU5PRlByUzIyVDA0YnFVK2ozWGhQVkJteVQ0dUF2czlaR2Z5UGlvUUZ6NjF5dzgvckJsRVBvZ3VKVDk0SWFrK25QZ3pQNUN0Z3o0VTd6VS9obDNDUHJjTEtEK3M0OUErRWkwWlAvWXcyVDVuSVFvL2tldmRQaVF1OXo2R1grQStXRURiUG9JaTRUNThXTUEraGwvZ1B1aFVwajZSNjkwK1ZDbU5Qdll3MlQ2dzMyaytyT1BRUGtnWlBENkdYY0krYUJZVFBuZ2hxVDZBLytjOWtLMkRQb0NCMFQwNkpqNCt3S2p3UFcvQkRqNFloQncrZGY3cFBTaTRURDUxM3RBOXZKR0NQcXRVeVQxY3FLSStkZDdRUFpSWHh6NTEvdWs5M0x6eFBtL0JEajZZMFJBL09pWStQaFVwS0Q5NElhaytYcXd5UDZWRGhENzVpVFEvYWhiQ1BwUDhKajlWak5BKzNsY1lQK0xaMkQ3MmVnay95cGZkUG1RczlqNVpEdUErNUh6YVBrUFM0RDdReXI4K1dRN2dQcnozcFQ3S2w5MCt2UG1NUHVMWjJENEEybWsrVll6UVBwQnVQRDVxRnNJK1FNY1RQbmdocVQ2UThlazlwVU9FUG9CVzB6MFdGRUEra0hYeFBTdXJFRDRnU0J3K0szRHRQVWptU3o2UEM5UTlCT0dCUHRkcXpEM29yS0Urand2VVBZUUp4ajRyY08wOWlCSHdQaXVyRUQ0cnlBOC9GaFJBUHQvb0pqOTRJYWsreEJYaVBuc3RtVDQ0OU5vK1kwVzJQbEJCNFQ3dklNQStqR0xhUHUwTHh6NmdqczgrTDQ3TFBoaFB3ajVYRnM0K0VLZXpQaG5uemo2Z1FxUStWeGJPUGxTZmxENHZqc3MrUUNtRlB1MEx4ejdBbzJ3KzhDREFQcEJNVVQ1a1JiWStBTXc1UG5naHFUNklJaWcrZWkyWlBxaWRIajZOUklnK1VBZ2ZQcjB6Y2o3SXB5aytHSE5iUG1ndlBUNm16RTArOE1GWFBwWkxTVDVZMlhjK3BzeE5QdGhCamo0WWMxcytNSUdpUHIwemNqNTB6N2MralVTSVBuVGl5ejdBYytrK0NGaFpQc2JoNkQ0UU9WSStYUlRwUGxpdlN6NE04dWsrd0xWSlBnZnA2ajQ0UFUwKzIyWHJQaEFSVkQ1R0x1cyt1R1JhUHNkbDZqNWdxVncraE0veFB1aThXejdqRi9FK0VERllQdXpJOEQ3ZzJsQStHaDd4UG5oRVNqN1E1ZkUrR0hGSVBraWQ4ajVvTkV3KzdkbnlQa0EyVXo3Z2hQSStTSlZaUHNCdStqNmdhVlErRjVENVBzZ2FUVDZCcFBrK1FGaEdQcmVvK2o0d1BrUSsrdS83UHNEUVJ6N0ZzL3crZ05ST1BvU1UvRDZvWUZVK09hdjdQc2pGVno3MjR3TS8yTFpNUG9XaEF6K2c1MFErZHNZRFA0Z0tQajdEUGdRLytFczhQbFM2QkQ5Z2JFQStGZkFFUDBEZFJ6NWh5UVEveUlKT1BzbGRCRCtZbjFBK3NITUVQd2hnWVQ1N053TS9LSzVYUHAxcUFqOGdYRUkrck1RQ1AyamxMejZHSVFRLzRDTXNQc2xwQlQvQVZqYyt6TjRGUDFBZlNqNk9kd1UvNkJoYlB1S0NBaitnKzFjK3Q4MERQeUNOWVQ0V293RS8rTXhDUHZYeEFUOHdYREErZkZVRFA4aCtMRDUvc0FRLzJJODNQbEUyQlQ5Z1EwbytGOVlFUDJnNFd6Nzdid0kvR0VOWlB0dDhBVDlBaGtJKzRzOEJQempETGo1YVVBTS9lTG9xUHV6REJEOVltRFkrTFZBRlA3aC9TajdJdW1NL3FZOHJQMVNQZkQ5ellSQS9Gc04rUHdDdERqODFDV1EvSU1jblB4aGxQRC9RaEU4L3lXZEdQMHpuUkQvU3JuMC9qUGZ4UGdBQWdEK3NsT00rOExCNFA4aitzRDVqZjNvL1pGNlRQdmR3Y0Q5c0xaZytYMmR4UDNoMWFUNFB1V0kvRUh4blBqbElZai9vZmc4K3p5ZzRQNkRnR2o1alhUTS9BSzFEUFhjMy9qNmdvL3M5bnNuOFBvQzRVRHpEdnFNK29KN29QU2dZalQ0QS9LWTZyRDJYUHFDQjVqMW9VSHMrQUFBQUFJUHRaRDRZZGdBK3RJRWdQb0J6Z2p5RDdXUStnSTRaUHJTQklENUFKejA5Zysxa1B1d2xqVDYwZ1NBKzREbE9Qb1B0WkQ2WWhNMCt0SUVnUHZpVXRqNkQ3V1ErL0N3Q1A3U0JJRDRVUi9vK2crMWtQb1FsR3orMGdTQStsL3dlUDZzYlpqNDMzaUEveG5vZFB0bHBJRCtDVW1RK2hjZzRQODN2eHozVGhUcy9ZM0pHUG9KZFhqOFU3NUU4aE9GalA0ZWhSVDdsaW1VL2pPQ0pQSWU2YWo4dTBYSStoWjV1UDZUVXpUMEFBSUEvd1FpZVB2WS9jRDhmZENNK0FBQ0FQOENnMno0WmlHay9CVDZsUGgyOWZEOUlJUlUvMnVObVA4clAvajQ4ZW5rL1BVb29QNUt1V1QrYWhoUS8wQ3RwUHpneUVUL1FLMmsvQmlmNFBqeDZlVCtZZGVZKzBDdHBQeTQ0dkQ0OGVuay9RWldlUGgyOWZEL1NURVUrSGIxOFA0U09HRDRBQUlBL0t2QlpQUUFBZ0Q5dVA3azlBQUNBUHdBQUFBQUFBSUEveG9HQVBJZTZhajl5cDdBN2g3cHFQeFR2a1R5RTRXTS9GTytSUElUaFl6L043OGM5MDRVN1A4M3Z4ejNUaFRzL3hub2RQdGxwSUQvR2VoMCsyV2tnUDdTQklENlgvQjQvdElFZ1BwZjhIaiswZ1NBK0ZFZjZQclNCSUQ0VVIvbyt0SUVnUHZpVXRqNjBnU0ErK0pTMlByU0JJRDdnT1U0K3RJRWdQdUE1VGo2MGdTQStRQ2M5UGJTQklENUFKejA5dElFZ1BvQnpnankwZ1NBK2dIT0NQR2hRZXo0QUFBQUFhRkI3UGdBQUFBQW9HSTArQVB5bU9pZ1lqVDRBL0tZNm5zbjhQb0M0VUR5ZXlmdytnTGhRUEZ5M01EOEFyVU05RStFWVB3Q3RRejNYODE0LzZINFBQbXY4UUQvb2ZnOCsvUkp1UDNoMWFUNlJHMUEvZUhWcFBnRXJkejlrWHBNK2xUTlpQMlJla3o2ZXEzdy9ySlRqUGpLMFhqK3NsT00rMmcxN1B3Q3REaitycmxrL0FLME9QMlptWUQrcGp5cy8rbTVDUDZtUEt6KzJFRGsvMElSUFAwb1pHei9RaEU4L1Npd0NQemZlSUQvQTRBRS9oQ1ViUDhEZ0FULzhMQUkvd09BQlA1aUV6VDdBNEFFLzdDV05QbTJoTlQ4MzNpQS80MVUxUDRRbEd6L2pWVFUvL0N3Q1ArTlZOVCtZaE0wKzQxVTFQK3dsalQ0RSsxdy9xSDhpUHd6TGFEL0FueFEvMWRodVAvd3NBai9WMkc0L2VNZlFQaVRFWlQrVTdwWSt4ZEkyUC9ncFZ6NnNLV1EvVUdTRVBqSnJBRC9BMmtjK3JHMk1QaGpZUWo0Y3RDOC9nUTVOUDQrV0VUOHR3bDAvYXVUYlB1V0taVDlMYitzK2dsMWVQMXRmK2o2RnlEZy8rNDVkUDh4TTlENFVQemcvaUZRMFBobFhPajhBQUFBQUI0eFFQN1JkQVQ4WlZ6by9sdWwyUDhSUGFEOWR5bE0vQUFDQVB3NmJjVDhVUHpnL3YzTlhQNi9GQVQ4NDZFRSt6TWpXUG9CcG5Uek15TlkrSExOOFA2L0ZBVDhCY2xzL2NXU1RQdUNUU0Q3cSt0QTl3TURxUE9yNjBEMElpMzgvY1dTVFBrUm9YVDhBQUFBQUFBQ0FQOWF2WGo3NXVGMC9BQUFBQUFBdjl6eldyMTQrV0taSlBobFhPaitXNlhZL3pNaldQaHl6ZkQ4WlZ6by9sdWwyUDh6STFqNGNzM3cvNnZyUVBRaUxmei9xK3RBOUNJdC9Qd0FBQUFBQUFJQS9BQUFBQUFBQWdEOEFBQUFBQUMvM1BBQUFBQUFBTC9jODZ2clFQY0RBNmp6cSt0QTl3TURxUE16STFqNkFhWjA4ek1qV1BvQnBuVHdaVnpvL0FBQUFBQmxYT2o4QUFBQUFBQUNBUHc2YmNULzdqbDAvekV6MFB2dU9YVC9JVFBRK0FBQ0FQdzZiY1QrWm1RMUNuSm1Kd0dibUNrS0U2em5BTXpNTFF1eFJPTUNoUlExQ2ZCU0t3T3RSQkVMc1VWakFEVEVIUW5pK2tzQkk0UVpDTkRPVHdPR2FCRUxNekZiQUFBQVFRalF6dzhCM2poQkNGSXpod0JXdUQwSXFYTVBBZE44UVFqeFU0Y0IzdmdsQ3NuTEp3TmRZQ2tJa3VPWEFwSEFKUXB5WnljQ3FwUXBDS0lQbHdBQUFDa0trY0EzQWxySUpRbkFTRDhBRU13TkNvRjR3d0hucEFrS0k2ekhBZXhRU1FsSzRGc0dQd2hGQ2dwVUR3V1ptRWtKU3VCYkJwSEFSUW9LVkE4SElkZ3hDaHVzWndmeXBDMEtDbFFQQjlTZ01Rb2JyR2NFb1hBdENncFVEd1hucEFrS0k2ekhBNjFFRVF1eFJXTUJJNFFaQ05ET1R3S1J3Q1VLY21jbkExMWdLUWlTNDVjQW9YQXRDZ3BVRHdmVW9ERUtHNnhuQmVla0NRb2pyTWNEclVRUkM3RkZZd0VqaEJrSTBNNVBBcEhBSlFweVp5Y0RYV0FwQ0pMamx3Q2hjQzBLQ2xRUEI5U2dNUW9ickdjSERnd2hDL01QTHZ3aE1DRUljaU5TL3JUVUlRc1RtejcrNG1RaENyR3JRdjFZV0FrS2tYUlRBNVBzQlFxNG9Fc0Ewc2dGQ1NCd1V3RmZOQVVLR1RCYkFOTElCUWtnY0ZNQlh6UUZDaGt3V3dEU3lBVUpJSEJUQVY4MEJRb1pNRnNCU014QkM0SjJEdjEwZEVFSmM3bjIvVWpNY1FpZ1JxTDVkSFJ4Q1lIYVZ2b1JtSlVJQWVPZThqMUFsUWdCcEJEd1VyaWRDZ0FZQ1BSU3VKMEpRYm9zOXpNd29RZ0R5VXozTXpDaENFR1MwUGR1Wk1FS1FOZFcvZ0NndlF1STJFc0NBS0M5Qy9LRFh2OXVaTUVJc0FSSEF2VGdzUWtTdEZNQzlPQ3hDdEkzY3YrOW9JMEpRN3hiQXNsNGdRdmh0OEwrbFR4RkN5cE1yd0Q3cEVFSm9MUVhBOWZNZlFwU1czTDhOMXhCQ2dPSDh2eXpjQ1VKK3R3bkF1NDRKUWk1a0M4Q01GZ05DdHBFdHdBL05Ba0pzS0MvQUQ4MENRbXdvTDhBUHpRSkNiQ2d2d0IyS0swSWszTWEvRUdrdVF1Q293YjhtMGk5QzJEbS92eWdjRWtLeW1ZakEzRGNnUWw0WGc4Qlk1aEpDT0VYQXdCenhIMEljYmJuQWtQTXJRank4ZmNDOWNDdENEQ20xd003YkxrSm9wSHZBR1VvdVFuUWF0TUI0U1RCQ0tKMTZ3SE93TDBLQ2xiUEFUSDB0UWtybTBNQ200eTVDQUdEUXdQQ2pLa0tTOTlIQUhQRWZRdVQrMU1CT09qQkNDR2F6d0xyNEwwSVFNTkRBaTJzdlFoQXcwTUFSeHpCQ0NHYXp3QzNETUVJUU1OREE4WkF4UWdobXM4QXdORE5DQ0dhendHdG5Na0lRTU5EQUIwTVVRcVQwM2NCcnZ4OUM0cndFd2FyQUZVSWF5aFRCNXRNVlF1SzhCTUZJYWh4Q3VvWVF3YUVFTEVKeWJRTEJYdDBqUWw1M0M4RXkyeXBDbHJBQ3djU2tKRUlxN2dyQmlrY2lRcHlPRE1IVmZTaENQRGtEd1p2cUxFSjJWUUxCWlBBa1FsaTZDc0ZzZFN4Q2RsVUN3UmcvSlVMK2h3ckJDdmt0UWhMdkE4Ri9wU1ZDbGlFTXdRSlJMVUlTN3dQQldoWW1RbDdaQzhIU3pTaENBUEpUUFk1ZU1FSzRjcjYvTXpNcFFnRHlVejB1K1M5Q3VISyt2NjVISVVJQThsTTlDWE1vUXJoeXZyL3NLREZDVUZqVXYyZTlNRUpRV05TL2hzSW9RbEJZMUwvc0tERkNrSklRd0dlOU1FS1FraERBaHNJb1FwQ1NFTURaMWpCQ0pEOTZ3RlJyTUVJa1AzckFjbkFvUWlRL2VzREp6aTlDQ0dhendPalRKMElJWnJQQWpGc3dRZ2htczhDcVlDaENDR2F6d0d3bE1VSUlaclBBaWlvcFFnaG1zOENzeURKQ0NHYXp3TXJOS2tJSVpyUEEwczBvUWhCa3REMHpNeWxDRUdTMFBhNUhJVUlRWkxROWcxQXdRcUNHdnIvMktDbENBUEpUUGZZb0tVSVFaTFE5bmhveFFuQnUxTCtlR2pGQ29KMFF3TGJJTUVLSVNIckFoU3d3UXNocXM4RDBYUzlDM2pUUXdOVG9KRUtJdndyQkpHb3NRdDVYQXNFODJqQkMvTkhVdnp6YU1FSm96eERBR0lrd1F0aHllc0I4N2k5Q0pJQ3p3TTBnTDBKd1N0REFZemNzUXFaaUFzSE54aVJDMnRZS3dWUVJNRUpBNEw2LzRQb29RZ0R5VXozZytpaENFR1MwUGEyZ0owSm9za25BQTVzalFnQStIY0RyS0NoQ1RrRWJ3TkJuSUVJQVBoM0FIbHdyUWs1Qkc4QStIeXRDNExSM3dQd2RKRUtzNlVuQURPd25RdUMwZDhBdlVTZENyT2xKd0htK0trS1lGaG5BclBFdFFwZ1dHY0Q3ZWlwQ1lOMTF3QzZ1TFVKZzNYWEFnQU1zUWdZR0dNQ3pOaTlDQmdZWXdNUzhLMEswOVhUQTl1OHVRclQxZE1Bb1BDeENRTm9Yd0Z0dkwwSkEyaGZBOHljdlFualFkTURBOUN0Q2VOQjB3S1dUTDBMeUpSZkFRMHN2UXJSZ2RjQ0VFaTlDZElaMXdGak1MVUpFY1hiQWVqUXJRamhQZU1BQWxpTkNpSndjd0NKWkowSW81RW5BTG5JclF1aVlHc0RCRUM1Q29HWVl3RGhhTDBKV1VoZkFZQ293UXVRYWVzQlFhVEJDQ1BGNXdKTzVNRUtvY1JIQTVYa3dRdUtpRWNDSERDOUNSTlVTd09Fa0xFTFVSQlhBY0cwalFxQ0FGOEIwNEN0Q1ZERjl3SVdaSjBKZ3QwbkFxTUF1UWxBZmU4Q3ROUWhDeE9iUHYrVDdBVUt1S0JMQXc0TUlRdnpEeTc5ZEhSQkNYTzU5djEwZEhFSmdkcFcrcFA0a1FnQnBCRHl0TlFoQ3hPYlB2K1Q3QVVLdUtCTEF3NE1JUXZ6RHk3OWRIUkJDWE81OXYxMGRIRUpnZHBXK3psb2tRZ0JwQkR6amxDaENFR1MwUGNSK0owSlFib3M5bE1Fb1FoQmt0RDFJN2loQ0VHUzBQZUdWS0VJUVpMUTlOL2dvUWhCa3REMkdTU0ZDRUdTMFBXZFNKa0lRWkxROVNKVWxRbEJ1aXozTGNDWkNFR1MwUFRHUEprSVFaTFE5OHBVbVFoQmt0RDBUVXlaQ0VHUzBQWmhjSVVJUVpMUTlnQlV5UWhBdzBNQWRqU1pDUXJJSndRS0tMa0oyVlFMQk1qc21Ra0t5Q2NIdTJ5NUNkbFVDd1UzaUtrSVFNTkRBMEZZblFuWlZBc0grQng5Q1FySUp3ZEllTTBJSVpyUEFERkl5UWhBdzBNRHFUekpDRUREUXdMQWNNMElJWnJQQVRyTXlRZ2htczhBcnNUSkNDR2F6d0dpNEtrSUlaclBBU3JZcVFnaG1zOEFoQURKQ0VERFF3UDc5TVVJUU1OREE3c3dxUWhBdzBNRE15aXBDRUREUXdGQ1JMMEswb08zQUlsOHdRa0pqMDhDVUtURkNRbVBUd0JIWUxrSzBvTzNBcW5FdVFvQnQ2c0I4OEMxQ2dHM3F3QXprTFVKTWN1ckFHS3d0UXR5SDZzQWtkQzFDZEozcXdFQXNMRUs0SSt2QTRwQXBRZ1ExN01CRTJCOUNVRHp2d0hZTEZVSTB0L1BBQWxFUlFxQS85TUNPL3hCQ2tGdjB3TkluQzBJVVYvYkFnTm9LUXBSeDlzQ0EyZ3BDbEhIMndJRGFDa0tVY2ZiQUFFUXdRb0J0NnNEc2xUQkNnRzNxd000UUtVS0FiZXJBRVJ3eVFoQXcwTUJmNmpKQ0NHYXp3Qk5oSmtKd3pnbkJES291UW5aVkFzR1VmakpDQ0dhendPWjlLa0lJWnJQQSttSXdRb0J0NnNBVzR6RkNFRERRd0Ftek1rSUlaclBBako4eFFoQXcwTUMvYkRKQ0NHYXp3QUl4SmtJdzdRbkJpMGt1UW5aVkFzRmdjeTVDZGxVQ3djc3FKa0lxOFFuQmFaY21Rc3lHQzhGekVDOUNFdThEd1hySEprSUlhQXZCeHRrdVFoTHZBOEh6UmpKQ0NHYXp3RG9CTWtJSVpyUEFCa0FxUWdobXM4QllCaXBDQ0dhendIaVJNRUswb08zQWVJSXlRa0pqMDhCaXlUQkN0S0R0d0gxSk1rSkNZOVBBaS9RdlFvQnQ2c0FSS3pCQ2dHM3F3RTZITVVJUU1OREFXMXd5UWdobXM4QzAzaVZDMmlFS3dWSVRMa0oyVlFMQlRPOHhRZ2htczhENDFTbENDR2F6d0F6TUwwS0FiZXJBMWtVeFFoQXcwTUMxR3pKQ0NHYXp3UE8wSlVLU1BBckJvNUl0UW5aVkFzRWUyaTFDZGxVQ3dmT3ZKVUxHUHdyQmhLNHhRZ2htczhDZ2tpbENDR2F6d0p1T0wwS0FiZXJBNkNvdlFvQnQ2c0FBQUlBL0FBQUFBQUFBZ0Q4Yy8rbytBQUNBUCtwWUVEOEFBSUEvTmhaOVB3QUFnRDhBQUFBQUFBQ0FQd0FBQUFBQUFJQS9IUC9xUGdBQWdEOGMvK28rQUFDQVArcFlFRDhBQUlBLzZsZ1FQd0FBZ0Q4MkZuMC9BQUNBUHpZV2ZUL2VEUXBDQVdLQlFkNE5Da0xRK1gxQjNnMEtRcWJGZ0VIZURRcENwRVIvUWQ0TkNrSUZzNEpCM2cwS1FyY1hna0hlRFFwQ1V6MkRRZDROQ2tJUG9vSkIzZzBLUWs1c2UwSGVEUXBDWHJoOFFkNE5Da0xzY25sQjNnMEtRaHJoZGtIZURRcENGa1I5UWQ0TkNrS0k3MzlCM2cwS1FqMkNnRUhpVnhGQzROVmpRUTBPRVVKZUxHSkIxNEFSUXVEVlkwRVg1UkJDWGl4aVFUeW9FVUp3akdWQk1kRVJRbkNNWlVFVzVCRkN2akZuUVFzTkVrSytNV2RCQ3ZzUlFyakNaMEVBSkJKQ3VNSm5RU2s1RUVMZzFXTkJYOFlQUWw0c1lrR0RpUkJDY0l4bFFWM0ZFRUsrTVdkQlV0d1FRcmpDWjBIT1J4QkN1Z1ZnUVVPYkVFSkNvbUJCVFhJUVFrS2lZRUhFY0JCQ1dQVmZRU3JYRGtKWTlWOUJsRk1QUWtLaVlFRzBSQXBDQUxGNFFlOVZDa0x1SG5SQlBod0tRbW8xZFVHMndRcENUQngzUWYxTUNrS2NaM2xCeWRjS1FoQzVkMEZTcmdwQ3htRnpRVElDREVLUVNuTkJ6MGNNUXRCRmMwR0prUTVDV1BWblFaRTlEVUpZOVdkQkt0Y09RbGoxWjBIeEJoRkMrSldCUWUvNkVFTEVEWUZCck4wUVFyeURmMEhOdGhCQytoRjhRWHlhRUVLY2ozbEJwSFVRUXNCTGRrSHlZaEJDdktOMFFaeTJEMElTSTI5QlE3OFRRamFnZ0VGQnN4TkNBUmlBUWY2VkUwSTRtSDFCSUc4VFFuUW1la0hPVWhOQ0ZxUjNRUlN6RWtJNllIUkJnaVVTUWppNGNrRksvaEJDUmxadVFhNU1Fa0tpeG1wQjVMOFFRakFvYUVFYnZ4RkNuaDVwUVJ2TUVFSzBjV2xCYU93U1Fud0tia0Y3QnhGQ1NQdHJRYmtJRTBMYWpIQkJOaW9SUW9EdWJVR1lMeE5DbnY1elFZMmlFVUxDbTNCQjJrd1RRbXFXZGtFTXdCRkNvSjl5UWQxWUUwTFNwbmRCYjlJUlFsSnpjMEhrbHhCQ3JyeGtRY2EzRUVMSWtHRkJXZDhRUWdhTVlVSERvZzlDSHJKaFFRS3lFRUpjOEdCQk5ZZ1FRbmp0WUVFc3h4QkNCamxoUVphY0VFSnlNMkZCZm5JUFFtUU1ZVUdZWXc5Q1B0bGdRWjJzRUVJNGdtWkJJYUlRUW5DeVpVRll5UkZDWWhScVFldFdFa0prdkd0QnBmWVNRa0FBYjBIMkVoTkNub0p4UWRVNUUwSmk5SFJCR0ZjVFFpeU1kMEVhWXhOQ2xweDRRY3o1RGtJVTFtaEJsMGtUUXVqR2RrSGRxUkpDRElOelFVb2NFa0lJMjNGQkUvVVFRaGg1YlVGd2x3OUMwRmh1UVZpSkRFSXFKSEpCdTBNTVFuSW9ja0hZN3dwQ1ZqMXlRZWhsRTBKR1NYbEJ4NHdUUWdxN2ZFRUpxaE5DMUZKL1FReTJFMEtlTVlCQms0d1RRdXAvZkVHUWdCTkNnRzk3UVU1akUwSzIxM2hCYnp3VFF2SmxkVUVlSUJOQ2xPTnlRV1NBRWtLNG4yOUIwZklSUXJiM2JVR2F5eEJDeEpWcFFaNUlEMEp5bDJ0QlFiQU5Rc0lNYlVHaWFnMUM1ZzV0UWJVV0RFSldHVzFCMEw0UlFqSi9kRUdTdEJGQ01uOTBRWERyRWtKVXUzZEJNK0VTUWxTN2QwRlQ4eEpDa25oNFFSYnBFa0tTZUhoQlFoTVRRdmgyZTBFRkNSTkMrSFo3UWRxVkVFSXlmM1JCZXNJUlFsUzdkMEZkeWhGQ2tuaDRRVXpxRVVMNGRudEJkWnNRUWlLUmRFRVN3aEZDdEx4M1FjekpFVUlvZG5oQkdPa1JRanBsZTBHeXBSQkNJcEYwUVUvTUVVSzB2SGRCQ2RRUlFpaDJlRUZWOHhGQ09tVjdRWUtHRTBLcWNueEJnMTBUUXNpYWVFRmtVeE5DMktkM1FYVFJFVUs0Z0hOQkJSa1RRb3lEZTBHaStCSkNSbnA0UWFQd0VrSmN1bmRCdnI4UlFucHlkRUVnUWQydkFRRE1IZ0FBQVFBQ0FBY0FBQUFEQUFFQUJ3QUJBQVFBQWdBSEFBRUFCUUFFQUFjQUJnQUhBQWdBQndBR0FBa0FCd0FIQUFvQUN3QU1BQWNBQ2dBTkFBc0FCd0FGQUE0QUJBQUhBQVVBRHdBT0FBY0FFQUFNQUJFQUJ3QVFBQW9BREFBSEFCSUFFd0FVQUFjQUVnQVZBQk1BQndBV0FCSUFGQUFIQUJZQUZ3QVNBQWNBR0FBWEFCWUFCd0FZQUJrQUZ3QUhBQm9BRVFBYkFBY0FHZ0FRQUJFQUJ3QWNBQnNBSFFBSEFCd0FHZ0FiQUFjQUhnQWNBQjBBQndBZUFCOEFIQUFIQUNBQUdRQVlBQWNBSUFBaEFCa0FCd0FpQUNFQUlBQUhBQ0lBSXdBaEFBY0FKQUFmQUI0QUJ3QWtBQVlBSHdBSEFDVUFCZ0FrQUFjQUpRQUpBQVlBQndBVUFBTUFBQUFIQUJRQUV3QURBQWNBQWdBVUFBQUFCd0FDQUJZQUZBQUhBQVFBRmdBQ0FBY0FCQUFZQUJZQUJ3QUxBQWtBSlFBSEFBc0FEUUFKQUFjQURBQW1BQ2NBQndBTUFBc0FKZ0FIQUJFQUp3QW9BQWNBRVFBTUFDY0FCd0FPQUJnQUJBQUhBQTRBSUFBWUFBY0FEd0FnQUE0QUJ3QVBBQ0lBSUFBSEFCc0FLQUFwQUFjQUd3QVJBQ2dBQndBZEFDa0FLZ0FIQUIwQUd3QXBBQWNBS3dBc0FDMEFCd0FyQUM0QUxBQUhBQzhBTGdBckFBY0FMd0F3QUM0QUJ3QXhBREFBTHdBSEFERUFNZ0F3QUFjQU13QTBBRFVBQndBekFEWUFOQUFIQURZQU1nQTBBQWNBTmdBd0FESUFCd0EzQURZQU13QUhBRGNBT0FBMkFBY0FPQUF3QURZQUJ3QTRBQzRBTUFBSEFEa0FPQUEzQUFjQU9RQTZBRGdBQndBNkFDNEFPQUFIQURvQUxBQXVBQWNBT3dBOEFEMEFCd0E3QUQ0QVBBQUhBRDRBUHdBOEFBY0FQZ0JBQUQ4QUJ3QkJBRDRBT3dBSEFFRUFRZ0ErQUFjQVFnQkFBRDRBQndCQ0FFTUFRQUFIQUVRQVFnQkJBQWNBUkFCRkFFSUFCd0JGQUVNQVFnQUhBRVVBUmdCREFBY0FSd0JGQUVRQUJ3QkhBRWdBUlFBSEFFZ0FSZ0JGQUFjQVNBQkpBRVlBQndCS0FFZ0FSd0FIQUVvQVN3QklBQWNBU3dCSkFFZ0FCd0JMQUV3QVNRQUhBRTBBU3dCS0FBY0FUUUJPQUVzQUJ3Qk9BRXdBU3dBSEFFNEFUd0JNQUFjQVVBQk9BRTBBQndCUUFGRUFUZ0FIQUZFQVR3Qk9BQWNBVVFCU0FFOEFCd0JEQUZNQVFBQUhBRU1BVkFCVEFBY0FWQUF0QUZNQUJ3QlVBRlVBTFFBSEFFWUFWQUJEQUFjQVJnQldBRlFBQndCV0FGVUFWQUFIQUZZQVZ3QlZBQWNBU1FCV0FFWUFCd0JKQUZnQVZnQUhBRmdBVndCV0FBY0FXQUJaQUZjQUJ3Qk1BRmdBU1FBSEFFd0FXZ0JZQUFjQVdnQlpBRmdBQndCYUFGc0FXUUFIQUU4QVdnQk1BQWNBVHdCY0FGb0FCd0JjQUZzQVdnQUhBRndBWFFCYkFBY0FVZ0JjQUU4QUJ3QlNBRjRBWEFBSEFGNEFYUUJjQUFjQVhnQmZBRjBBQndCQUFHQUFQd0FIQUVBQVV3QmdBQWNBVXdBc0FHQUFCd0JUQUMwQUxBQUhBRDhBWVFBOEFBY0FQd0JnQUdFQUJ3QmdBRG9BWVFBSEFHQUFMQUE2QUFjQVBBQmlBRDBBQndBOEFHRUFZZ0FIQUdFQU9RQmlBQWNBWVFBNkFEa0FCd0JqQUdRQVpRQUhBR01BWmdCa0FBY0Fad0JsQUdnQUJ3Qm5BR01BWlFBSEFHa0FhQUJxQUFjQWFRQm5BR2dBQndCckFHb0FiQUFIQUdzQWFRQnFBQWNBYlFCc0FHNEFCd0J0QUdzQWJBQUhBRzhBYmdCd0FBY0Fid0J0QUc0QUJ3QnhBR1lBWXdBSEFIRUFjZ0JtQUFjQWN3QmpBR2NBQndCekFIRUFZd0FIQUhRQVp3QnBBQWNBZEFCekFHY0FCd0IxQUdrQWF3QUhBSFVBZEFCcEFBY0FkZ0JyQUcwQUJ3QjJBSFVBYXdBSEFIY0FiUUJ2QUFjQWR3QjJBRzBBQndCNEFHUUFaZ0FIQUhnQWVRQmtBQWNBWmdCNkFIZ0FCd0JtQUhJQWVnQUhBSHNBYmdCOEFBY0Fld0J3QUc0QUJ3QjhBR3dBZlFBSEFId0FiZ0JzQUFjQWZRQnFBSDRBQndCOUFHd0FhZ0FIQUg0QWFBQi9BQWNBZmdCcUFHZ0FCd0IvQUdVQWdBQUhBSDhBYUFCbEFBY0FnQUJrQUlFQUJ3Q0FBR1VBWkFBSEFJRUFlUUNDQUFjQWdRQmtBSGtBQndDQ0FIZ0Fnd0FIQUlJQWVRQjRBQWNBZ3dCNkFJUUFCd0NEQUhnQWVnQUhBSVVBZ1FDR0FBY0FoUUNBQUlFQUJ3Q0hBSUFBaFFBSEFJY0Fmd0NBQUFjQWlBQi9BSWNBQndDSUFINEFmd0FIQUlrQWZnQ0lBQWNBaVFCOUFINEFCd0NLQUgwQWlRQUhBSW9BZkFCOUFBY0Fpd0I4QUlvQUJ3Q0xBSHNBZkFBSEFERUFqQUF5QUFjQU1RQ0dBSXdBQndDR0FJSUFqQUFIQUlZQWdRQ0NBQWNBTWdDTkFEUUFCd0F5QUl3QWpRQUhBSXdBZ3dDTkFBY0FqQUNDQUlNQUJ3QTBBSTRBTlFBSEFEUUFqUUNPQUFjQWpRQ0VBSTRBQndDTkFJTUFoQUFIQUk4QWtBQ1JBQWNBandDU0FKQUFCd0NTQUpNQWtBQUhBSklBbEFDVEFBY0FsQUNWQUpNQUJ3Q1VBSllBbFFBSEFKY0FtQUNaQUFjQWx3Q2FBSmdBQndDV0FKb0Fsd0FIQUpZQWxBQ2FBQWNBbWdDYkFKZ0FCd0NhQUp3QW13QUhBSlFBbkFDYUFBY0FsQUNTQUp3QUJ3Q2NBSjBBbXdBSEFKd0FuZ0NkQUFjQWtnQ2VBSndBQndDU0FJOEFuZ0FIQUo4QW9BQ2hBQWNBbndDaUFLQUFCd0NqQUtJQW53QUhBS01BcEFDaUFBY0FvZ0NsQUtBQUJ3Q2lBS1lBcFFBSEFLUUFwZ0NpQUFjQXBBQ25BS1lBQndDbUFLZ0FwUUFIQUtZQXFRQ29BQWNBcHdDcEFLWUFCd0NuQUtvQXFRQUhBS2tBcXdDb0FBY0FxUUNzQUtzQUJ3Q3FBS3dBcVFBSEFLb0FyUUNzQUFjQXJBQ3VBS3NBQndDc0FLOEFyZ0FIQUswQXJ3Q3NBQWNBclFDd0FLOEFCd0N2QUxFQXJnQUhBSzhBc2dDeEFBY0FzQUN5QUs4QUJ3Q3dBTE1Bc2dBSEFMSUFVQUN4QUFjQXNnQlJBRkFBQndDekFGRUFzZ0FIQUxNQVVnQlJBQWNBdEFDbkFLUUFCd0MwQUxVQXB3QUhBSkVBdFFDMEFBY0FrUUMyQUxVQUJ3QzFBS29BcHdBSEFMVUF0d0NxQUFjQXRnQzNBTFVBQndDMkFMZ0F0d0FIQUxjQXJRQ3FBQWNBdHdDNUFLMEFCd0M0QUxrQXR3QUhBTGdBdWdDNUFBY0F1UUN3QUswQUJ3QzVBTHNBc0FBSEFMb0F1d0M1QUFjQXVnQzhBTHNBQndDN0FMTUFzQUFIQUxzQXZRQ3pBQWNBdkFDOUFMc0FCd0M4QUw0QXZRQUhBTDBBVWdDekFBY0F2UUJlQUZJQUJ3QytBRjRBdlFBSEFMNEFYd0JlQUFjQXZ3Q2tBS01BQndDL0FMUUFwQUFIQUk4QXRBQy9BQWNBandDUkFMUUFCd0RBQUtNQW53QUhBTUFBdndDakFBY0FuZ0MvQU1BQUJ3Q2VBSThBdndBSEFNRUFud0NoQUFjQXdRREFBSjhBQndDZEFNQUF3UUFIQUowQW5nREFBQWNBd2dEREFNUUFCd0RDQU1VQXd3QUhBTVFBeGdESEFBY0F4QUREQU1ZQUJ3REhBTWdBeVFBSEFNY0F4Z0RJQUFjQXlRREtBTXNBQndESkFNZ0F5Z0FIQU1zQXpBRE5BQWNBeXdES0FNd0FCd0ROQUc4QWNBQUhBTTBBekFCdkFBY0F4UURPQU1NQUJ3REZBTThBemdBSEFNTUEwQURHQUFjQXd3RE9BTkFBQndER0FORUF5QUFIQU1ZQTBBRFJBQWNBeUFEU0FNb0FCd0RJQU5FQTBnQUhBTW9BMHdETUFBY0F5Z0RTQU5NQUJ3RE1BSGNBYndBSEFNd0Ewd0IzQUFjQXdnRFVBTVVBQndEQ0FOVUExQUFIQU5ZQXhRRFVBQWNBMWdEUEFNVUFCd0ROQUhzQTF3QUhBTTBBY0FCN0FBY0F5d0RYQU5nQUJ3RExBTTBBMXdBSEFNa0EyQURaQUFjQXlRRExBTmdBQndESEFOa0EyZ0FIQU1jQXlRRFpBQWNBeEFEYUFOc0FCd0RFQU1jQTJnQUhBTUlBMndEY0FBY0F3Z0RFQU5zQUJ3RFZBTndBM1FBSEFOVUF3Z0RjQUFjQTFBRGRBTjRBQndEVUFOVUEzUUFIQU5ZQTNnRGZBQWNBMWdEVUFONEFCd0RjQU9BQTRRQUhBTndBMndEZ0FBY0Eyd0RpQU9BQUJ3RGJBTm9BNGdBSEFOb0E0d0RpQUFjQTJnRFpBT01BQndEWkFPUUE0d0FIQU5rQTJBRGtBQWNBMkFEbEFPUUFCd0RZQU5jQTVRQUhBTmNBaXdEbEFBY0Exd0I3QUlzQUJ3RG1BSlVBbGdBSEFPWUE0UUNWQUFjQTNRRGhBT1lBQndEZEFOd0E0UUFIQU9jQWxnQ1hBQWNBNXdEbUFKWUFCd0RlQU9ZQTV3QUhBTjRBM1FEbUFBY0E2QUNYQUprQUJ3RG9BT2NBbHdBSEFOOEE1d0RvQUFjQTN3RGVBT2NBQndEcEFPb0E2d0FIQU9rQTdBRHFBQWNBN1FEc0FPa0FCd0R0QU80QTdBQUhBTzhBOEFEeEFBY0E3d0R5QVBBQUJ3RHpBUFFBOVFBSEFQTUE5Z0QwQUFjQTl3RHZBUEVBQndEM0FQZ0E3d0FIQVBrQTZnRHNBQWNBK1FENkFPb0FCd0Q3QU93QTdnQUhBUHNBK1FEc0FBY0EvQUR1QU8wQUJ3RDhBUHNBN2dBSEFQMEE5Z0R6QUFjQS9RRCtBUFlBQndEL0FQZ0E5d0FIQVA4QUFBSDRBQWNBQVFINkFQa0FCd0FCQVFJQitnQUhBQU1CK1FEN0FBY0FBd0VCQWZrQUJ3QUVBZnNBL0FBSEFBUUJBd0g3QUFjQUJRSCtBUDBBQndBRkFRWUIvZ0FIQUFjQkFBSC9BQWNBQndFSUFRQUJCd0FKQVFJQkFRRUhBQWtCQ2dFQ0FRY0FDd0VCQVFNQkJ3QUxBUWtCQVFFSEFBd0JBd0VFQVFjQURBRUxBUU1CQndBTkFRWUJCUUVIQUEwQkRnRUdBUWNBRHdFSUFRY0JCd0FQQVJBQkNBRUhBQkVCQ2dFSkFRY0FFUUVTQVFvQkJ3QVRBUWtCQ3dFSEFCTUJFUUVKQVFjQUZBRUxBUXdCQndBVUFSTUJDd0VIQUJVQkZnRVhBUWNBRlFFWUFSWUJCd0FaQVJVQkZ3RUhBQmtCR2dFVkFRY0FHd0VhQVJrQkJ3QWJBUndCR2dFSEFCMEJIQUViQVFjQUhRRWVBUndCQndBZkFSNEJIUUVIQUI4QklBRWVBUWNBRmdFaEFSY0JCd0FXQVNJQklRRUhBQmNCSXdFWkFRY0FGd0VoQVNNQkJ3QVpBU1FCR3dFSEFCa0JJd0VrQVFjQUd3RWxBUjBCQndBYkFTUUJKUUVIQUIwQkpnRWZBUWNBSFFFbEFTWUJCd0FuQVNnQktRRUhBQ2NCS2dFb0FRY0FLd0VxQVNjQkJ3QXJBU3dCS2dFSEFDMEJMQUVyQVFjQUxRRXVBU3dCQndBdkFTNEJMUUVIQUM4Qk1BRXVBUWNBTVFFd0FTOEJCd0F4QVRJQk1BRUhBRE1CTkFFMUFRY0FNd0UyQVRRQkJ3QTNBVE1CT0FFSEFEY0JOZ0V6QVFjQU9RRXpBVFVCQndBNUFUb0JNd0VIQURnQk9nRTdBUWNBT0FFekFUb0JCd0E4QVRvQk9RRUhBRHdCUFFFNkFRY0FPd0U5QVQ0QkJ3QTdBVG9CUFFFSEFEOEJQUUU4QVFjQVB3RkFBVDBCQndBK0FVQUJRUUVIQUQ0QlBRRkFBUWNBUWdGQUFUOEJCd0JDQVVNQlFBRUhBRUVCUXdGRUFRY0FRUUZBQVVNQkJ3QVZBVVVCR0FFSEFCVUJSZ0ZGQVFjQVJ3RklBVWtCQndCSEFVb0JTQUVIQUJvQlJnRVZBUWNBR2dGTEFVWUJCd0JKQVV3QlRRRUhBRWtCU0FGTUFRY0FIQUZMQVJvQkJ3QWNBVTRCU3dFSEFFMEJUd0ZRQVFjQVRRRk1BVThCQndBZUFVNEJIQUVIQUI0QlVRRk9BUWNBVUFGU0FWTUJCd0JRQVU4QlVnRUhBQ0FCVVFFZUFRY0FJQUZVQVZFQkJ3QlRBVlVCVmdFSEFGTUJVZ0ZWQVFjQUtnRTBBU2dCQndBcUFUVUJOQUVIQUVjQkp3RXBBUWNBUndGSkFTY0JCd0JYQVZnQldRRUhBRmNCV2dGWUFRY0FMQUUxQVNvQkJ3QXNBVGtCTlFFSEFFa0JLd0VuQVFjQVNRRk5BU3NCQndBdUFUa0JMQUVIQUM0QlBBRTVBUWNBVFFFdEFTc0JCd0JOQVZBQkxRRUhBREFCUEFFdUFRY0FNQUUvQVR3QkJ3QlFBUzhCTFFFSEFGQUJVd0V2QVFjQU1nRS9BVEFCQndBeUFVSUJQd0VIQUZNQk1RRXZBUWNBVXdGV0FURUJCd0JiQVZ3QlhRRUhBRnNCWGdGY0FRY0FYZ0ZmQVZ3QkJ3QmVBV0FCWHdFSEFHRUJYZ0ZiQVFjQVlRRmlBVjRCQndCaUFXQUJYZ0VIQUdJQll3RmdBUWNBWkFGaUFXRUJCd0JrQVdVQllnRUhBR1VCWXdGaUFRY0FaUUZtQVdNQkJ3QmRBV2NCYUFFSEFGMEJYQUZuQVFjQVhBRnBBV2NCQndCY0FWOEJhUUVIQUdnQmFnRnJBUWNBYUFGbkFXb0JCd0JuQVd3QmFnRUhBR2NCYVFGc0FRY0ErQUJ0QWU4QUJ3RDRBRzRCYlFFSEFBQUJiZ0g0QUFjQUFBRnZBVzRCQndBSUFXOEJBQUVIQUFnQmNBRnZBUWNBRUFGd0FRZ0JCd0FRQVhFQmNBRUhBTzhBY2dIeUFBY0E3d0J0QVhJQkJ3RDNBSE1CL3dBSEFQY0FkQUZ6QVFjQWRBRStBWE1CQndCMEFUc0JQZ0VIQVBFQWRBSDNBQWNBOFFCMUFYUUJCd0IxQVRzQmRBRUhBSFVCT0FFN0FRY0E4QUIxQWZFQUJ3RHdBSFlCZFFFSEFIWUJPQUYxQVFjQWRnRTNBVGdCQndEL0FIY0JCd0VIQVA4QWN3RjNBUWNBY3dGQkFYY0JCd0J6QVQ0QlFRRUhBQWNCZUFFUEFRY0FCd0YzQVhnQkJ3QjNBVVFCZUFFSEFIY0JRUUZFQVFjQWVRRjZBWHNCQndCNUFYd0JlZ0VIQUhzQmZRRitBUWNBZXdGNkFYMEJCd0IvQVlBQmdRRUhBSDhCZ2dHQUFRY0FnZ0dEQVlBQkJ3Q0NBWVFCZ3dFSEFJVUJoZ0dIQVFjQWhRR0lBWVlCQndDSUFZa0JoZ0VIQUlnQmlnR0pBUWNBaXdHTUFZMEJCd0NMQVk0QmpBRUhBSThCa0FHUkFRY0Fqd0dTQVpBQkJ3Q01BWk1CalFFSEFJd0JsQUdUQVFjQWhRR1ZBWWdCQndDRkFaWUJsUUVIQUlnQmx3R0tBUWNBaUFHVkFaY0JCd0NLQVpnQmlRRUhBSW9CbHdHWUFRY0FrZ0daQVpBQkJ3Q1NBWm9CbVFFSEFKUUJtd0dUQVFjQWxBR2NBWnNCQndDV0FaMEJsUUVIQUpZQm5nR2RBUWNBbFFHZkFaY0JCd0NWQVowQm53RUhBSmNCb0FHWUFRY0Fsd0dmQWFBQkJ3Q2hBYUlCb3dFSEFLRUJwQUdpQVFjQW9nR2xBYU1CQndDaUFhWUJwUUVIQUtZQnB3R2xBUWNBcGdHb0FhY0JCd0NwQWFFQm93RUhBS2tCcWdHaEFRY0Fxd0dqQWFVQkJ3Q3JBYWtCb3dFSEFLd0JwUUduQVFjQXJBR3JBYVVCQndDdEFhNEJyd0VIQUswQnNBR3VBUWNBc0FHeEFhNEJCd0N3QWJJQnNRRUhBTElCc3dHeEFRY0FzZ0cwQWJNQkJ3QzFBYllCdHdFSEFMVUJ1QUcyQVFjQXRnRzVBYm9CQndDMkFiZ0J1UUVIQUxZQnV3RzNBUWNBdGdHOEFic0JCd0M4QWJvQnZRRUhBTHdCdGdHNkFRY0F2QUcrQWJzQkJ3QzhBYjhCdmdFSEFMOEJ2UUhBQVFjQXZ3RzhBYjBCQndEQkFhSUJwQUVIQU1FQndnR2lBUWNBd2dIREFjUUJCd0RDQWNFQnd3RUhBTUlCcGdHaUFRY0F3Z0hGQWFZQkJ3REZBY1FCeGdFSEFNVUJ3Z0hFQVFjQXhRR29BYVlCQndERkFjY0JxQUVIQU1jQnhnSElBUWNBeHdIRkFjWUJCd0MxQWJBQnJRRUhBTFVCdHdHd0FRY0FyZ0hEQWE4QkJ3Q3VBY1FCd3dFSEFNa0J5Z0hMQVFjQXlRSE1BY29CQndDM0FiSUJzQUVIQUxjQnV3R3lBUWNBc1FIRUFhNEJCd0N4QWNZQnhBRUhBTHNCdEFHeUFRY0F1d0crQWJRQkJ3Q3pBY1lCc1FFSEFMTUJ5QUhHQVFjQXpRSE9BYzhCQndETkFkQUJ6Z0VIQU5FQjBBSE5BUWNBMFFIU0FkQUJCd0RUQWM4QjFBRUhBTk1CelFIUEFRY0ExUUhOQWRNQkJ3RFZBZEVCelFFSEFOWUIxQUhYQVFjQTFnSFRBZFFCQndEWUFkTUIxZ0VIQU5nQjFRSFRBUWNBMlFHVUFZd0JCd0RaQWRvQmxBRUhBTm9CbkFHVUFRY0EyZ0hiQVp3QkJ3RGNBWXdCamdFSEFOd0IyUUdNQVFjQTNRR1RBWnNCQndEZEFkNEJrd0VIQU1BQjNnSGRBUWNBd0FHOUFkNEJCd0RlQVkwQmt3RUhBTjRCM3dHTkFRY0F2UUhmQWQ0QkJ3QzlBYm9CM3dFSEFOOEJpd0dOQVFjQTN3SGdBWXNCQndDNkFlQUIzd0VIQUxvQnVRSGdBUWNBNFFIaUFlTUJCd0RoQWVRQjRnRUhBT0VCZ1FIbEFRY0E0UUhtQVlFQkJ3RG5BZU1CNGdFSEFPY0I2QUhqQVFjQUV3SG5BZUlCQndBVEFSUUI1d0VIQUJFQjRnSGtBUWNBRVFFVEFlSUJCd0FTQWVRQjZRRUhBQklCRVFIa0FRY0FKUUhxQVNZQkJ3QWxBZXNCNmdFSEFPc0JFZ0hxQVFjQTZ3RUtBUklCQndBa0Flc0JKUUVIQUNRQjdBSHJBUWNBN0FFS0Flc0JCd0RzQVFJQkNnRUhBQ01CN0FFa0FRY0FJd0h0QWV3QkJ3RHRBUUlCN0FFSEFPMEIrZ0FDQVFjQUlRSHRBU01CQndBaEFlNEI3UUVIQU80QitnRHRBUWNBN2dIcUFQb0FCd0FpQWU0QklRRUhBQ0lCN3dIdUFRY0E3d0hxQU80QkJ3RHZBZXNBNmdBSEFCSUI4QUhxQVFjQUVnSHBBZkFCQndEeEFlb0I4QUVIQVBFQkpnSHFBUWNBOGdIekFmUUJCd0R5QWZVQjh3RUhBUFFCOWdIM0FRY0E5QUh6QWZZQkJ3QmxBZmdCK1FFSEFHVUJaQUg0QVFjQVpnSDVBZm9CQndCbUFXVUIrUUVIQVBRQit3SHlBUWNBOUFIOEFmc0JCd0QzQWZ3QjlBRUhBUGNCL1FIOEFRY0FnZ0grQVlRQkJ3Q0NBZjhCL2dFSEFIOEIvd0dDQVFjQWZ3RUFBdjhCQndBQkFnSUNBd0lIQUFFQ0JBSUNBZ2NBRGdFRkFnWUNCd0FPQVEwQkJRSUhBQWNDOEFFSUFnY0FCd0x4QWZBQkJ3QUlBdWtCNVFFSEFBZ0M4QUhwQVFjQTVBSGxBZWtCQndEa0FlRUI1UUVIQUFrQ0NnSUxBZ2NBQ1FJTUFnb0NCd0FOQWdrQ0RnSUhBQTBDREFJSkFnY0FjUUVQQWhBQ0J3QnhBUkFCRHdJSEFJUUJFUUtEQVFjQWhBRVNBaEVDQndBVEFvUUIvZ0VIQUJNQ0VnS0VBUWNBRkFMeEFRY0NCd0FVQWhVQzhRRUhBQllDRWdJWEFnY0FGZ0lSQWhJQ0J3QVdBaGdDR1FJSEFCWUNGd0lZQWdjQUdnSVhBaHNDQndBYUFoZ0NGd0lIQUJNQ0Z3SVNBZ2NBRXdJYkFoY0NCd0FjQWhVQ0ZBSUhBQndDSFFJVkFnY0FIZ0ljQWg4Q0J3QWVBaDBDSEFJSEFDWUJGUUlmQVFjQUpnSHhBUlVDQndBZkFSMENJQUVIQUI4QkZRSWRBZ2NBSGdJZ0FSMENCd0FlQWxRQklBRUhBQ0FDSVFJaUFnY0FJQUlqQWlFQ0J3QWhBaVFDSWdJSEFDRUNKUUlrQWdjQUdRSW1BaWNDQndBWkFoZ0NKZ0lIQUNnQ0tRSXFBZ2NBS0FJckFpa0NCd0FxQWl3Q0xRSUhBQ29DS1FJc0FnY0FHZ0ltQWhnQ0J3QWFBaTRDSmdJSEFDc0NKZ0lwQWdjQUt3SW5BaVlDQndBaEFpZ0NLZ0lIQUNFQ0l3SW9BZ2NBS1FJdUFpd0NCd0FwQWlZQ0xnSUhBQ1VDS2dJdEFnY0FKUUloQWlvQ0J3QXZBaUlDTUFJSEFDOENJQUlpQWdjQUpBSXdBaUlDQndBa0FqRUNNQUlIQUM4Q01nSXpBZ2NBTHdJd0FqSUNCd0F4QWpJQ01BSUhBREVDTkFJeUFnY0FOUUl5QWpZQ0J3QTFBak1DTWdJSEFBc0NOZ0lKQWdjQUN3STFBallDQndBMEFqWUNNZ0lIQURRQ053STJBZ2NBQ1FJM0FnNENCd0FKQWpZQ053SUhBRVFCT0FJNUFnY0FSQUZEQVRnQ0J3QjRBVGtDT2dJSEFIZ0JSQUU1QWdjQUR3RTZBanNDQndBUEFYZ0JPZ0lIQUJBQk93SVBBZ2NBRUFFUEFUc0NCd0FQQWp3Q0VBSUhBQThDUFFJOEFnY0FQUUlLQWp3Q0J3QTlBZ3NDQ2dJSEFEc0NQUUlQQWdjQU93SStBajBDQndBK0Fnc0NQUUlIQUQ0Q05RSUxBZ2NBT2dJK0Fqc0NCd0E2QWo4Q1BnSUhBRDhDTlFJK0FnY0FQd0l6QWpVQ0J3QTVBajhDT2dJSEFEa0NRQUkvQWdjQVFBSXpBajhDQndCQUFpOENNd0lIQURnQ1FBSTVBZ2NBT0FKQkFrQUNCd0JCQWk4Q1FBSUhBRUVDSUFJdkFnY0FRZ0pCQWpnQ0J3QkNBa01DUVFJSEFFTUNJQUpCQWdjQVF3SWpBaUFDQndCRUFrTUNRZ0lIQUVRQ1JRSkRBZ2NBUlFJakFrTUNCd0JGQWlnQ0l3SUhBRVlDUlFKRUFnY0FSZ0pIQWtVQ0J3QkhBaWdDUlFJSEFFY0NLd0lvQWdjQVNBSkhBa1lDQndCSUFra0NSd0lIQUVrQ0t3SkhBZ2NBU1FJbkFpc0NCd0FmQWtrQ1NBSUhBQjhDU2dKSkFnY0FTZ0luQWtrQ0J3QktBaGtDSndJSEFCd0NTZ0lmQWdjQUhBSkxBa29DQndCTEFoa0NTZ0lIQUVzQ0ZnSVpBZ2NBRkFKTEFod0NCd0FVQWt3Q1N3SUhBRXdDRmdKTEFnY0FUQUlSQWhZQ0J3QUhBa3dDRkFJSEFBY0NUUUpNQWdjQVRRSVJBa3dDQndCTkFvTUJFUUlIQUFnQ1RRSUhBZ2NBQ0FKT0FrMENCd0JPQW9NQlRRSUhBRTRDZ0FHREFRY0E1UUZPQWdnQ0J3RGxBVThDVGdJSEFFOENnQUZPQWdjQVR3S0JBWUFCQndENEFWQUMrUUVIQVBnQlVRSlFBZ2NBVVFMekFWQUNCd0JSQXZZQjh3RUhBUGtCVWdMNkFRY0ErUUZRQWxJQ0J3QlFBdlVCVWdJSEFGQUM4d0gxQVFjQUJRSlRBZ1lDQndBRkFsUUNVd0lIQUZRQ0FRSlRBZ2NBVkFJRUFnRUNCd0JXQVI4Q1NBSUhBRllCVlFFZkFnY0FNUUZJQWtZQ0J3QXhBVllCU0FJSEFESUJSZ0pFQWdjQU1nRXhBVVlDQndCQ0FVUUNRZ0lIQUVJQk1nRkVBZ2NBUXdGQ0FqZ0NCd0JEQVVJQlFnSUhBRlVDemdIUUFRY0FWUUpXQXM0QkJ3QlhBdEFCMGdFSEFGY0NWUUxRQVFjQVdBS1pBWm9CQndCWUFsa0NtUUVIQUZvQ2ZBRmJBZ2NBV2dKNkFYd0JCd0JjQW5vQldnSUhBRndDZlFGNkFRY0FYUUplQWw4Q0J3QmRBbUFDWGdJSEFHQUNXUUpZQWdjQVlBSmRBbGtDQndCaEFtSUNZd0lIQUdFQ1pBSmlBZ2NBWWdKbEFtTUNCd0JpQW1ZQ1pRSUhBR2NDWVFKakFnY0Fad0pvQW1FQ0J3QmxBbWNDWXdJSEFHVUNhUUpuQWdjQVlRSldBbFVDQndCaEFtZ0NWZ0lIQUZjQ1lRSlZBZ2NBVndKa0FtRUNCd0JYQW1vQ1pBSUhBRmNDYXdKcUFnY0Fhd0pkQW1vQ0J3QnJBbGtDWFFJSEFOSUJhd0pYQWdjQTBnRnNBbXNDQndCc0Fsa0Nhd0lIQUd3Q21RRlpBZ2NBMFFGc0F0SUJCd0RSQVcwQ2JBSUhBRzBDbVFGc0FnY0FiUUtRQVprQkJ3RFZBVzBDMFFFSEFOVUJiZ0p0QWdjQWJnS1FBVzBDQndCdUFwRUJrQUVIQU5nQmJnTFZBUWNBMkFGdkFtNENCd0J2QXBFQmJnSUhBRzhDandHUkFRY0FaQUp3QW1JQ0J3QmtBbW9DY0FJSEFHb0NYd0p3QWdjQWFnSmRBbDhDQndCaUFuRUNaZ0lIQUdJQ2NBSnhBZ2NBY0FKZUFuRUNCd0J3QWw4Q1hnSUhBRlFDY2dJRUFnY0FWQUp6QW5JQ0J3QnpBdlVCY2dJSEFITUNVZ0wxQVFjQUJRSnpBbFFDQndBRkFuUUNjd0lIQUhRQ1VnSnpBZ2NBZEFMNkFWSUNCd0FOQVhRQ0JRSUhBQTBCZFFKMEFnY0FkUUw2QVhRQ0J3QjFBbVlCK2dFSEFBVUJkUUlOQVFjQUJRRjJBblVDQndCMkFtWUJkUUlIQUhZQ1l3Rm1BUWNBL1FCMkFnVUJCd0Q5QUhjQ2RnSUhBSGNDWXdGMkFnY0Fkd0pnQVdNQkJ3RHpBSGNDL1FBSEFQTUFlQUozQWdjQWVBSmdBWGNDQndCNEFsOEJZQUVIQVBVQWVBTHpBQWNBOVFCNUFuZ0NCd0I1QWw4QmVBSUhBSGtDYVFGZkFRY0E5QUI1QXZVQUJ3RDBBSG9DZVFJSEFIb0NhUUY1QWdjQWVnSnNBV2tCQndBRUFuc0NBZ0lIQUFRQ2NnSjdBZ2NBY2dMeUFYc0NCd0J5QXZVQjhnRUhBQUlDZkFJREFnY0FBZ0o3QW53Q0J3QjdBdnNCZkFJSEFIc0M4Z0g3QVFjQWZRSitBbjhDQndCOUFvQUNmZ0lIQUlFQ2dBSjlBZ2NBZ1FLQ0FvQUNCd0NDQXA4Qm5RRUhBSUlDZ1FLZkFRY0Fnd0tBQW9JQ0J3Q0RBb1FDZ0FJSEFKNEJnZ0tkQVFjQW5nR0RBb0lDQndCK0FZQUNoQUlIQUg0QmZnS0FBZ2NBaFFLQkFuMENCd0NGQW9ZQ2dRSUhBSWNDZlFKL0FnY0Fod0tGQW4wQ0J3Q0lBb2tDaWdJSEFJZ0Npd0tKQWdjQWpBS0tBbzBDQndDTUFvZ0NpZ0lIQUl3Q2pnS1BBZ2NBakFLTkFvNENCd0NRQXBFQ2tnSUhBSkFDa3dLUkFnY0FsQUtUQXBBQ0J3Q1VBcFVDa3dJSEFKSUNsZ0tYQWdjQWtnS1JBcFlDQndDWUFwRUNrd0lIQUpnQ21RS1JBZ2NBbFFLWUFwTUNCd0NWQXBvQ21BSUhBSkVDbXdLV0FnY0FrUUtaQXBzQ0J3Q1lBcHdDbVFJSEFKZ0NuUUtjQWdjQW5nS2RBcDhDQndDZUFwd0NuUUlIQUpvQ25RS1lBZ2NBbWdLZ0FwMENCd0NmQXFBQ29RSUhBSjhDblFLZ0FnY0FvZ0tlQXFNQ0J3Q2lBcHdDbmdJSEFKa0NvZ0tiQWdjQW1RS2NBcUlDQndEZEFhTUN3QUVIQU4wQm9nS2pBZ2NBM1FHYkFxSUNCd0RkQVpzQm13SUhBSnNCbGdLYkFnY0Ftd0djQVpZQ0J3Q2NBWmNDbGdJSEFKd0Iyd0dYQWdjQXBBS2xBcVlDQndDa0FxY0NwUUlIQUtjQ3FBS3BBZ2NBcHdLa0FxZ0NCd0NsQXFvQ3BnSUhBS1VDcXdLcUFnY0FyQUt0QXE0Q0J3Q3NBcThDclFJSEFLNENzQUtzQWdjQXJnS3hBckFDQndDeUFxMENyd0lIQUxJQ3N3S3RBZ2NBdEFLMUFyWUNCd0MwQXJjQ3RRSUhBSjhDdFFLZUFnY0Fud0syQXJVQ0J3QzBBcmdDdVFJSEFMUUN0Z0s0QWdjQW9RSzJBcDhDQndDaEFyZ0N0Z0lIQUtNQ3RRSzZBZ2NBb3dLZUFyVUNCd0M3QXJVQ3R3SUhBTHNDdWdLMUFnY0FyUUswQXE0Q0J3Q3RBcmNDdEFJSEFLUUNyd0tzQWdjQXBBS21BcThDQndDb0Fxd0NzQUlIQUtnQ3BBS3NBZ2NBcmdLNUFyRUNCd0N1QXJRQ3VRSUhBTHNDclFLekFnY0F1d0szQXEwQ0J3Q3ZBcW9Dc2dJSEFLOENwZ0txQWdjQXdBRzZBcjhCQndEQUFhTUN1Z0lIQUw0QnVnSzdBZ2NBdmdHL0Fib0NCd0M3QXJRQnZnRUhBTHNDc3dLMEFRY0Fzd0t6QWJRQkJ3Q3pBcklDc3dFSEFMSUN5QUd6QVFjQXNnS3FBc2dCQndDcUFzY0J5QUVIQUtvQ3F3TEhBUWNBdkFLc0FhY0JCd0M4QXIwQ3JBRUhBTDRDcHdHb0FRY0F2Z0s4QXFjQkJ3REhBYjRDcUFFSEFNY0Jxd0srQWdjQXZ3SjhBWGtCQndDL0FzQUNmQUVIQU1BQ1d3SjhBUWNBd0FMQkFsc0NCd0RDQXFjQ3d3SUhBTUlDcFFLbkFnY0F3Z0xBQXI4Q0J3RENBc01Dd0FJSEFLY0N4QUxEQWdjQXB3S3BBc1FDQndEQUFzUUN3UUlIQU1BQ3d3TEVBZ2NBdndLK0FzSUNCd0MvQXJ3Q3ZnSUhBSGtCdkFLL0FnY0FlUUc5QXJ3Q0J3QytBcVVDd2dJSEFMNENxd0tsQWdjQWd3TEZBb1FDQndDREFzWUN4UUlIQU1ZQ3h3TEZBZ2NBeGdMSUFzY0NCd0NlQWNZQ2d3SUhBSjRCeVFMR0FnY0F5UUxJQXNZQ0J3REpBc29DeUFJSEFKWUJ5UUtlQVFjQWxnSExBc2tDQndETEFzb0N5UUlIQU1zQ3pBTEtBZ2NBaFFITEFwWUJCd0NGQWMwQ3l3SUhBTTBDekFMTEFnY0F6UUxPQXN3Q0J3Q0hBYzBDaFFFSEFJY0J6d0xOQWdjQXp3TE9BczBDQndEUEF0QUN6Z0lIQU1VQ2ZnR0VBZ2NBeFFKN0FYNEJCd0RIQW5zQnhRSUhBTWNDZVFGN0FRY0EwUUxTQXRNQ0J3RFJBdFFDMGdJSEFOVUMwd0xXQWdjQTFRTFJBdE1DQndEWEF0VUMxZ0lIQU5jQzJBTFZBZ2NBMlFLQkFkb0NCd0RaQW44QmdRRUhBTmdDMmdMVkFnY0EyQUxaQXRvQ0J3RFJBdG9DMndJSEFORUMxUUxhQWdjQTVnSGFBb0VCQndEbUFkc0MyZ0lIQU5FQzNBTFVBZ2NBMFFMYkF0d0NCd0RkQXRzQzVnRUhBTjBDM0FMYkFnY0ExQUxlQXRJQ0J3RFVBdHdDM2dJSEFOOEMzQUxkQWdjQTN3TGVBdHdDQndEZ0F0Z0Mxd0lIQU9BQzJRTFlBZ2NBZndIZ0FnQUNCd0IvQWRrQzRBSUhBSTBDNFFLT0FnY0FqUUxpQXVFQ0J3QjlBZUlDZmdFSEFIMEI0UUxpQWdjQWZnSGpBbjRDQndCK0FlSUM0d0lIQUkwQzR3TGlBZ2NBalFLS0F1TUNCd0IrQXVRQ2Z3SUhBSDRDNHdMa0FnY0FpUUxqQW9vQ0J3Q0pBdVFDNHdJSEFPRUNqd0tPQWdjQTRRTGxBbzhDQndCY0F1RUNmUUVIQUZ3QzVRTGhBZ2NBZndMbUFvY0NCd0IvQXVRQzVnSUhBSXNDNUFLSkFnY0Fpd0xtQXVRQ0J3Q0JBcUFCbndFSEFJRUNoZ0tnQVFjQTV3TG9BdWtDQndEbkF1b0M2QUlIQU9vQzZ3TG9BZ2NBNmdMc0F1c0NCd0RzQXUwQzZ3SUhBT3dDN2dMdEFnY0E3Z0x2QXUwQ0J3RHVBdkFDN3dJSEFQQUM4UUx2QWdjQThBTHlBdkVDQndEeUF2TUM4UUlIQVBJQzlBTHpBZ2NBOUFMMUF2TUNCd0QwQXZZQzlRSUhBUFlDOXdMMUFnY0E5Z0w0QXZjQ0J3RDRBdmtDOXdJSEFQZ0MrZ0w1QWdjQStnTDdBdmtDQndENkF2d0Mrd0lIQVB3Qy9RTDdBZ2NBL0FMK0F2MENCd0QvQWdBREFRTUhBUDhDQWdNQUF3Y0FBZ01EQXdBREJ3QUNBd1FEQXdNSEFBUURCUU1EQXdjQUJBTUdBd1VEQndBR0F3Y0RCUU1IQUFZRENBTUhBd2NBQ0FNSkF3Y0RCd0FJQXdvRENRTUhBQW9EQ3dNSkF3Y0FDZ01NQXdzREJ3QU5BdzRERHdNSEFBMERFQU1PQXdjQUVBTVJBdzREQndBUUF4SURFUU1IQUJJREV3TVJBd2NBRWdNVUF4TURCd0FVQXhVREV3TUhBQlFERmdNVkF3Y0FGd1A5QWdFREJ3QVhBeGdEL1FJSEFQNENBUVA5QWdjQS9nTC9BZ0VEQndEL0FSa0QvZ0VIQVA4QkdnTVpBd2NBR2dQMUFoa0RCd0FhQS9NQzlRSUhBQUFDR2dQL0FRY0FBQUliQXhvREJ3QWJBL01DR2dNSEFCc0Q4UUx6QWdjQTRBSWJBd0FDQndEZ0Fod0RHd01IQUJ3RDhRSWJBd2NBSEFQdkF2RUNCd0RYQWh3RDRBSUhBTmNDSFFNY0F3Y0FIUVB2QWh3REJ3QWRBKzBDN3dJSEFOWUNIUVBYQWdjQTFnSWVBeDBEQndBZUErMENIUU1IQUI0RDZ3THRBZ2NBMHdJZUE5WUNCd0RUQWg4REhnTUhBQjhENndJZUF3Y0FId1BvQXVzQ0J3RFNBaDhEMHdJSEFOSUNJQU1mQXdjQUlBUG9BaDhEQndBZ0Era0M2QUlIQU40Q0lBUFNBZ2NBM2dJaEF5QURCd0FoQStrQ0lBTUhBQ0VESWdQcEFnY0Ezd0loQTk0Q0J3RGZBaU1ESVFNSEFDTURJZ01oQXdjQUl3TWtBeUlEQndEb0FTVURKZ01IQU9nQjV3RWxBd2NBSmdNa0F5TURCd0FtQXljREpBTUhBQlFCSlFQbkFRY0FGQUVvQXlVREJ3QW9BeWtESlFNSEFDZ0RLZ01wQXdjQURBRW9BeFFCQndBTUFTc0RLQU1IQUNzREtnTW9Bd2NBS3dNc0F5b0RCd0FFQVNzRERBRUhBQVFCTFFNckF3Y0FMUU1zQXlzREJ3QXRBeTRETEFNSEFQd0FMUU1FQVFjQS9BQXZBeTBEQndBdkF5NERMUU1IQUM4RE1BTXVBd2NBN1FBdkEvd0FCd0R0QURFREx3TUhBREVETUFNdkF3Y0FNUU15QXpBREJ3RHBBREVEN1FBSEFPa0FNd014QXdjQU13TXlBekVEQndBekF6UURNZ01IQU9zQU13UHBBQWNBNndBMUF6TURCd0ExQXpRRE13TUhBRFVETmdNMEF3Y0E3d0UxQStzQUJ3RHZBVGNETlFNSEFEY0ROZ00xQXdjQU53TTRBellEQndBaUFUY0Q3d0VIQUNJQk9RTTNBd2NBT1FNNEF6Y0RCd0E1QXpvRE9BTUhBQllCT1FNaUFRY0FGZ0U3QXprREJ3QTdBem9ET1FNSEFEc0RQQU02QXdjQUdBRTdBeFlCQndBWUFUMERPd01IQUQwRFBBTTdBd2NBUFFNK0F6d0RCd0JGQVQ4RFFBTUhBRVVCU2dFL0F3Y0FRQU0rQXowREJ3QkFBMEVEUGdNSEFFY0JQd05LQVFjQVJ3RkNBejhEQndCQ0EwTURQd01IQUVJRFdBRkRBd2NBS1FGQ0EwY0JCd0FwQVVRRFFnTUhBRVFEV0FGQ0F3Y0FSQU5aQVZnQkJ3QW9BVVFES1FFSEFDZ0JSUU5FQXdjQVJRTlpBVVFEQndCRkExY0JXUUVIQURRQlJRTW9BUWNBTkFGR0EwVURCd0JHQTFjQlJRTUhBRVlEV2dGWEFRY0FOZ0ZHQXpRQkJ3QTJBVWNEUmdNSEFFY0RXZ0ZHQXdjQVJ3TklBMW9CQndBM0FVY0ROZ0VIQURjQlNRTkhBd2NBU1FOSUEwY0RCd0JKQTBvRFNBTUhBSFlCU1FNM0FRY0FkZ0ZMQTBrREJ3QkxBMG9EU1FNSEFFc0RUQU5LQXdjQThBQkxBM1lCQndEd0FFMERTd01IQUUwRFRBTkxBd2NBVFFOT0Ewd0RCd0R5QUUwRDhBQUhBUElBVHdOTkF3Y0FUd05PQTAwREJ3QlBBMUFEVGdNSEFISUJUd1B5QUFjQWNnRlJBMDhEQndCUkExQURUd01IQUZFRFVnTlFBd2NBYWdGVEEyc0JCd0JxQVZRRFV3TUhBRlFEVlFOVEF3Y0FWQU5XQTFVREJ3QnNBVlFEYWdFSEFHd0JWd05VQXdjQVZ3TldBMVFEQndCWEExZ0RWZ01IQUhvQ1Z3TnNBUWNBZWdKWkExY0RCd0JaQTFnRFZ3TUhBRmtEV2dOWUF3Y0E5QUJaQTNvQ0J3RDBBRnNEV1FNSEFGc0RXZ05aQXdjQVd3TmNBMW9EQndEMkFGc0Q5QUFIQVBZQVhRTmJBd2NBWFFOY0Exc0RCd0JkQTE0RFhBTUhBUDRBWFFQMkFBY0EvZ0JmQTEwREJ3QmZBMTREWFFNSEFGOERZQU5lQXdjQUJnRmZBLzRBQndBR0FXRURYd01IQUdFRFlBTmZBd2NBWVFOaUEyQURCd0FPQVdFREJnRUhBQTRCWXdOaEF3Y0FZd05pQTJFREJ3QmpBMlFEWWdNSEFBWUNZd01PQVFjQUJnSmxBMk1EQndCbEEyUURZd01IQUdVRFpnTmtBd2NBVXdKbEF3WUNCd0JUQW1jRFpRTUhBR2NEWmdObEF3Y0Fad05vQTJZREJ3QUJBbWNEVXdJSEFBRUNhUU5uQXdjQWFRTm9BMmNEQndCcEEyb0RhQU1IQUFNQ2FRTUJBZ2NBQXdKckEya0RCd0JyQTJvRGFRTUhBR3NERlFOcUF3Y0FmQUpyQXdNQ0J3QjhBbXdEYXdNSEFHd0RGUU5yQXdjQWJBTVRBeFVEQndEN0FXd0RmQUlIQVBzQmJRTnNBd2NBYlFNVEEyd0RCd0J0QXhFREV3TUhBUHdCYlFQN0FRY0EvQUZ1QTIwREJ3QnVBeEVEYlFNSEFHNEREZ01SQXdjQS9RRnVBL3dCQndEOUFXOERiZ01IQUc4RERnTnVBd2NBYndNUEF3NERCd0FPQW5BRERRSUhBQTRDY1FOd0F3Y0FjUU1MQTNBREJ3QnhBd2tEQ3dNSEFEY0NjUU1PQWdjQU53SnlBM0VEQndCeUF3a0RjUU1IQUhJREJ3TUpBd2NBTkFKeUF6Y0NCd0EwQW5NRGNnTUhBSE1EQndOeUF3Y0Fjd01GQXdjREJ3QXhBbk1ETkFJSEFERUNkQU56QXdjQWRBTUZBM01EQndCMEF3TURCUU1IQUNRQ2RBTXhBZ2NBSkFKMUEzUURCd0IxQXdNRGRBTUhBSFVEQUFNREF3Y0FKUUoxQXlRQ0J3QWxBbllEZFFNSEFIWURBQU4xQXdjQWRnTUJBd0FEQndBdEFuWURKUUlIQUMwQ2R3TjJBd2NBZHdNQkEzWURCd0IzQXhjREFRTUhBQ3dDZHdNdEFnY0FMQUo0QTNjREJ3QjRBeGNEZHdNSEFIZ0RHQU1YQXdjQUxnSjRBeXdDQndBdUFua0RlQU1IQUhrREdBTjRBd2NBZVFQOUFoZ0RCd0FhQW5rRExnSUhBQm9DZWdONUF3Y0FlZ1A5QW5rREJ3QjZBL3NDL1FJSEFCc0NlZ01hQWdjQUd3SjdBM29EQndCN0Evc0NlZ01IQUhzRCtRTDdBZ2NBRXdKN0F4c0NCd0FUQW53RGV3TUhBSHdEK1FKN0F3Y0FmQVAzQXZrQ0J3RCtBWHdERXdJSEFQNEJHUU44QXdjQUdRUDNBbndEQndBWkEvVUM5d0lIQUgwRGZnTi9Bd2NBZlFPQUEzNERCd0NCQTM4RGdnTUhBSUVEZlFOL0F3Y0FnQU9EQTM0REJ3Q0FBNFFEZ3dNSEFJVURnZ09HQXdjQWhRT0JBNElEQndDRUE0Y0Rnd01IQUlRRGlBT0hBd2NBaVFPR0E0b0RCd0NKQTRVRGhnTUhBSXNEaWdPTUF3Y0Fpd09KQTRvREJ3Q05BNHdEamdNSEFJMERpd09NQXdjQWp3T09BNUFEQndDUEE0MERqZ01IQUpFRGtBT1NBd2NBa1FPUEE1QURCd0NUQTVJRGxBTUhBSk1Ea1FPU0F3Y0FsUU9XQTVjREJ3Q1ZBNWdEbGdNSEFKa0Rsd09hQXdjQW1RT1ZBNWNEQndDYkE1b0RuQU1IQUpzRG1RT2FBd2NBblFPY0E1NERCd0NkQTVzRG5BTUhBSjhEb0FPaEF3Y0Fud09pQTZBREJ3Q2lBNTREb0FNSEFLSURuUU9lQXdjQW93T2tBNlVEQndDakE2WURwQU1IQUtjRHBRT29Bd2NBcHdPakE2VURCd0NwQTZnRHFnTUhBS2tEcHdPb0F3Y0Fxd09xQTZ3REJ3Q3JBNmtEcWdNSEFKUURtQU9UQXdjQWxBT1dBNWdEQndDdEE1WURsQU1IQUswRHJnT1dBd2NBbHdPdkE1b0RCd0NYQTdBRHJ3TUhBTEFEb1FLdkF3Y0FzQU80QXFFQ0J3Q1dBN0FEbHdNSEFKWURzUU93QXdjQXNRTzRBckFEQndDeEE3a0N1QUlIQUs0RHNRT1dBd2NBcmdPeUE3RURCd0N5QTdrQ3NRTUhBTElEc1FLNUFnY0FyUU95QTY0REJ3Q3RBN01Ec2dNSEFMTURzUUt5QXdjQXN3T3dBckVDQndDVUE3TURyUU1IQUpRRHRBT3pBd2NBdEFPd0FyTURCd0MwQTZnQ3NBSUhBSklEdEFPVUF3Y0FrZ08xQTdRREJ3QzFBNmdDdEFNSEFMVURxUUtvQWdjQWtBTzFBNUlEQndDUUE3WUR0UU1IQUxZRHFRSzFBd2NBdGdQRUFxa0NCd0NPQTdZRGtBTUhBSTREdHdPMkF3Y0F0d1BFQXJZREJ3QzNBOEVDeEFJSEFJd0R0d09PQXdjQWpBTzRBN2NEQndDNEE4RUN0d01IQUxnRFd3TEJBZ2NBaWdPNEE0d0RCd0NLQTdrRHVBTUhBTGtEV3dLNEF3Y0F1UU5hQWxzQ0J3Q0dBN2tEaWdNSEFJWUR1Z081QXdjQXVnTmFBcmtEQndDNkExd0NXZ0lIQUlJRHVnT0dBd2NBZ2dPN0E3b0RCd0M3QTF3Q3VnTUhBTHNENVFKY0FnY0Fmd083QTRJREJ3Qi9BN3dEdXdNSEFMd0Q1UUs3QXdjQXZBT1BBdVVDQndCK0E3d0Rmd01IQUg0RHZRTzhBd2NBdlFPUEFyd0RCd0M5QTR3Q2p3SUhBSU1EdlFOK0F3Y0Fnd08rQTcwREJ3QytBNHdDdlFNSEFMNERpQUtNQWdjQWh3TytBNE1EQndDSEE3OER2Z01IQUw4RGlBSytBd2NBdndPTEFvZ0NCd0RBQTc4RGh3TUhBTUFEd1FPL0F3Y0F3UU9MQXI4REJ3REJBK1lDaXdJSEFNSUR3UVBBQXdjQXdnUERBOEVEQndEREErWUN3UU1IQU1NRGh3TG1BZ2NBeEFQREE4SURCd0RFQThVRHd3TUhBTVVEaHdMREF3Y0F4UU9GQW9jQ0J3REdBOFVEeEFNSEFNWUR4d1BGQXdjQXh3T0ZBc1VEQndESEE0WUNoUUlIQU1nRHh3UEdBd2NBeUFQSkE4Y0RCd0RKQTRZQ3h3TUhBTWtEb0FHR0FnY0F5Z1BKQThnREJ3REtBOHNEeVFNSEFNc0RvQUhKQXdjQXl3T1lBYUFCQndETUE4c0R5Z01IQU13RHpRUExBd2NBelFPWUFjc0RCd0ROQTRrQm1BRUhBTTREelFQTUF3Y0F6Z1BQQTgwREJ3RFBBNGtCelFNSEFNOERoZ0dKQVFjQTBBUFBBODREQndEUUE5RUR6d01IQU5FRGhnSFBBd2NBMFFPSEFZWUJCd0RTQTlFRDBBTUhBTklEMHdQUkF3Y0Ewd09IQWRFREJ3RFRBODhDaHdFSEFOUUQxUVBXQXdjQTFBUFhBOVVEQndEV0E4OEMwd01IQU5ZRDBBTFBBZ2NBMkFQVkE5Y0RCd0RZQTlrRDFRTUhBTmtEcWdIVkF3Y0EyUU9oQWFvQkJ3RGFBOWtEMkFNSEFOb0Qyd1BaQXdjQTJ3T2hBZGtEQndEYkE2UUJvUUVIQU53RDJ3UGFBd2NBM0FQZEE5c0RCd0RkQTZRQjJ3TUhBTjBEd1FHa0FRY0F5UUhkQTl3REJ3REpBZDREM1FNSEFONER3UUhkQXdjQTNnUERBY0VCQndETEFkNER5UUVIQU1zQjN3UGVBd2NBM3dQREFkNERCd0RmQTY4Qnd3RUhBTW9CM3dQTEFRY0F5Z0hnQTk4REJ3RGdBNjhCM3dNSEFPQURyUUd2QVFjQXpBSGdBOG9CQndETUFlRUQ0QU1IQU9FRHJRSGdBd2NBNFFPMUFhMEJCd0RpQStFRHpBRUhBT0lENHdQaEF3Y0E0d08xQWVFREJ3RGpBN2dCdFFFSEFPUUQ0d1BpQXdjQTVBUGxBK01EQndEbEE3Z0I0d01IQU9VRHVRRzRBUWNBNWdQbEErUURCd0RtQStjRDVRTUhBT2NEdVFIbEF3Y0E1d1BnQWJrQkJ3RG9BK2NENWdNSEFPZ0Q2UVBuQXdjQTZRUGdBZWNEQndEcEE0c0I0QUVIQU9vRDZRUG9Bd2NBNmdQckEra0RCd0RyQTRzQjZRTUhBT3NEamdHTEFRY0E3QVByQStvREJ3RHNBKzBENndNSEFPMERqZ0hyQXdjQTdRUGNBWTRCQndEdUErOEQ4QU1IQU80RDhRUHZBd2NBOFFQWEFlOERCd0R4QTlZQjF3RUhBUElEOFFQdUF3Y0E4Z1B6QS9FREJ3RHpBOVlCOFFNSEFQTUQyQUhXQVFjQTlBUHpBL0lEQndEMEEvVUQ4d01IQVBVRDJBSHpBd2NBOVFOdkF0Z0JCd0QyQS9VRDlBTUhBUFlEOXdQMUF3Y0E5d052QXZVREJ3RDNBNDhCYndJSEFQZ0Q5d1AyQXdjQStBUDVBL2NEQndENUE0OEI5d01IQVBrRGtnR1BBUWNBK2dQNUEvZ0RCd0Q2QS9zRCtRTUhBUHNEa2dINUF3Y0Erd09hQVpJQkJ3RDhBL3NEK2dNSEFQd0QvUVA3QXdjQS9RT2FBZnNEQndEOUExZ0NtZ0VIQVA0RC9RUDhBd2NBL2dQL0EvMERCd0QvQTFnQy9RTUhBUDhEWUFKWUFnY0FyQVAvQS80REJ3Q3NBd0FFL3dNSEFBQUVZQUwvQXdjQUFBUmVBbUFDQndDcUF3QUVyQU1IQUtvREFRUUFCQWNBQVFSZUFnQUVCd0FCQkhFQ1hnSUhBS2dEQVFTcUF3Y0FxQU1DQkFFRUJ3QUNCSEVDQVFRSEFBSUVaZ0p4QWdjQXBRTUNCS2dEQndDbEF3TUVBZ1FIQUFNRVpnSUNCQWNBQXdSbEFtWUNCd0NrQXdNRXBRTUhBS1FEQkFRREJBY0FCQVJsQWdNRUJ3QUVCR2tDWlFJSEFLQURCUVNoQXdjQW9BTUdCQVVFQndBR0JKUUNCUVFIQUFZRWxRS1VBZ2NBbmdNR0JLQURCd0NlQXdjRUJnUUhBQWNFbFFJR0JBY0FCd1NhQXBVQ0J3Q2NBd2NFbmdNSEFKd0RDQVFIQkFjQUNBU2FBZ2NFQndBSUJLQUNtZ0lIQUpvRENBU2NBd2NBbWdPdkF3Z0VCd0N2QTZBQ0NBUUhBSzhEb1FLZ0FnY0FGZ09wQTZzREJ3QVdBeFFEcVFNSEFCUURwd09wQXdjQUZBTVNBNmNEQndBU0E2TURwd01IQUJJREVBT2pBd2NBRUFPbUE2TURCd0FRQXcwRHBnTUhBQXdEb2dPZkF3Y0FEQU1LQTZJREJ3QUtBNTBEb2dNSEFBb0RDQU9kQXdjQUNBT2JBNTBEQndBSUF3WURtd01IQUFZRG1RT2JBd2NBQmdNRUE1a0RCd0NWQXdRREFnTUhBSlVEbVFNRUF3Y0FBZ09ZQTVVREJ3QUNBLzhDbUFNSEFQOENrd09ZQXdjQS93TCtBcE1EQndEK0FwRURrd01IQVA0Qy9BS1JBd2NBL0FLUEE1RURCd0Q4QXZvQ2p3TUhBUG9DalFPUEF3Y0ErZ0w0QW8wREJ3RDRBb3NEalFNSEFQZ0M5Z0tMQXdjQTlBS0xBL1lDQndEMEFva0Rpd01IQVBRQ2hRT0pBd2NBOUFMeUFvVURCd0NCQS9JQzhBSUhBSUVEaFFQeUFnY0E4QUo5QTRFREJ3RHdBdTRDZlFNSEFPNENnQU45QXdjQTdnTHNBb0FEQndEc0FvUURnQU1IQU93QzZnS0VBd2NBNmdLSUE0UURCd0RxQXVjQ2lBTUhBQWtFYWdNVkF3Y0FDUVFLQkdvREJ3QUtCR2dEYWdNSEFBb0VDd1JvQXdjQURBUVZBeFlEQndBTUJBa0VGUU1IQUFzRVpnTm9Bd2NBQ3dRTkJHWURCd0FOQkdRRFpnTUhBQTBFRGdSa0F3Y0FEd1FXQTZzREJ3QVBCQXdFRmdNSEFCQUVxd09zQXdjQUVBUVBCS3NEQndBUkJLd0QvZ01IQUJFRUVBU3NBd2NBRWdUK0Evd0RCd0FTQkJFRS9nTUhBQk1FL0FQNkF3Y0FFd1FTQlB3REJ3QVVCUG9EK0FNSEFCUUVFd1Q2QXdjQUZRVDRBL1lEQndBVkJCUUUrQU1IQUJZRTlnUDBBd2NBRmdRVkJQWURCd0FYQkZvRFhBTUhBQmNFR0FSYUF3Y0FHUVJjQTE0REJ3QVpCQmNFWEFNSEFCb0VYZ05nQXdjQUdnUVpCRjREQndBYkJHQURZZ01IQUJzRUdnUmdBd2NBRGdSaUEyUURCd0FPQkJzRVlnTUhBQndFQ2dRSkJBY0FIQVFkQkFvRUJ3QWRCQXNFQ2dRSEFCMEVIZ1FMQkFjQUh3UUpCQXdFQndBZkJCd0VDUVFIQUI0RURRUUxCQWNBSGdRZ0JBMEVCd0FoQkF3RUR3UUhBQ0VFSHdRTUJBY0FJQVFPQkEwRUJ3QWdCQ0lFRGdRSEFDSUVHd1FPQkFjQUlnUWpCQnNFQndBa0JBOEVFQVFIQUNRRUlRUVBCQWNBSlFRUUJCRUVCd0FsQkNRRUVBUUhBQ1lFRVFRU0JBY0FKZ1FsQkJFRUJ3QW5CQklFRXdRSEFDY0VKZ1FTQkFjQUtBUVRCQlFFQndBb0JDY0VFd1FIQUNrRUZBUVZCQWNBS1FRb0JCUUVCd0FxQkJVRUZnUUhBQ29FS1FRVkJBY0FLd1FZQkJjRUJ3QXJCQ3dFR0FRSEFDMEVGd1FaQkFjQUxRUXJCQmNFQndBdUJCa0VHZ1FIQUM0RUxRUVpCQWNBSXdRYUJCc0VCd0FqQkM0RUdnUUhBQzhFd0FPSEF3Y0FMd1F3Qk1BREJ3QXhCSWNEaUFNSEFERUVMd1NIQXdjQU1BVENBOEFEQndBd0JESUV3Z01IQURJRXhBUENBd2NBTWdRekJNUURCd0F6Qk1ZRHhBTUhBRE1FTkFUR0F3Y0FOQVRJQThZREJ3QTBCRFVFeUFNSEFEVUV5Z1BJQXdjQU5RUTJCTW9EQndBMkJNd0R5Z01IQURZRU53VE1Bd2NBTndUT0E4d0RCd0EzQkRnRXpnTUhBRGtFTWdNMEF3Y0FPUVE2QkRJREJ3QTZCREFETWdNSEFEb0VPd1F3QXdjQU93UXVBekFEQndBN0JEd0VMZ01IQUR3RUxBTXVBd2NBUEFROUJDd0RCd0E5QkNvRExBTUhBRDBFUGdRcUF3Y0FQZ1FwQXlvREJ3QStCRDhFS1FNSEFEOEVKd01wQXdjQVB3UkFCQ2NEQndCQkJDSURKQU1IQUVFRVFnUWlBd2NBUWdUcEFpSURCd0JDQkVNRTZRSUhBRU1FNXdMcEFnY0FRd1JFQk9jQ0J3QkVCSWdENXdJSEFFUUVNUVNJQXdjQVlRRkZCR1FCQndCaEFVWUVSUVFIQUVZRVJ3UkZCQWNBUmdSSUJFY0VCd0JiQVVZRVlRRUhBRnNCU1FSR0JBY0FTZ1JMQkV3RUJ3QktCRTBFU3dRSEFGMEJTUVJiQVFjQVhRRk9CRWtFQndCT0JFOEVTUVFIQUU0RVVBUlBCQWNBYUFGT0JGMEJCd0JvQVZFRVRnUUhBRkVFVUFST0JBY0FVUVJTQkZBRUJ3QnJBVkVFYUFFSEFHc0JVd1JSQkFjQVV3UlNCRkVFQndCVEJGUUVVZ1FIQUZNRFV3UnJBUWNBVXdOVkJGTUVCd0JWQkZRRVV3UUhBRlVFVmdSVUJBY0FWUU5WQkZNREJ3QlZBMWNFVlFRSEFGY0VWZ1JWQkFjQVZ3UllCRllFQndCa0FWa0UrQUVIQUdRQlJRUlpCQWNBUlFSYUJGa0VCd0JGQkVjRVdnUUhBUGdCV3dSUkFnY0ErQUZaQkZzRUJ3QlpCRndFV3dRSEFGa0VXZ1JjQkFjQVVRSmRCUFlCQndCUkFsc0VYUVFIQUZzRVhnUmRCQWNBV3dSY0JGNEVCd0QyQVY4RTl3RUhBUFlCWFFSZkJBY0FYUVJnQkY4RUJ3QmRCRjRFWUFRSEFQY0JZUVQ5QVFjQTl3RmZCR0VFQndCZkJHSUVZUVFIQUY4RVlBUmlCQWNBL1FGakJHOERCd0Q5QVdFRVl3UUhBR0VFWkFSakJBY0FZUVJpQkdRRUJ3QnZBMlVFRHdNSEFHOERZd1JsQkFjQVl3Um1CR1VFQndCakJHUUVaZ1FIQUE4RFp3UU5Bd2NBRHdObEJHY0VCd0JsQkdnRVp3UUhBR1VFWmdSb0JBY0FEUU5wQktZREJ3QU5BMmNFYVFRSEFHY0VhZ1JwQkFjQVp3Um9CR29FQndDbUEyc0VwQU1IQUtZRGFRUnJCQWNBYVFSc0JHc0VCd0JwQkdvRWJBUUhBS1FEYlFRRUJBY0FwQU5yQkcwRUJ3QnJCRzRFYlFRSEFHc0ViQVJ1QkFjQUJBUnZCR2tDQndBRUJHMEVid1FIQUcwRWNBUnZCQWNBYlFSdUJIQUVCd0JwQW5FRVp3SUhBR2tDYndSeEJBY0Fid1J5QkhFRUJ3QnZCSEFFY2dRSEFHY0Njd1JvQWdjQVp3SnhCSE1FQndCeEJIUUVjd1FIQUhFRWNnUjBCQWNBYUFKMUJGWUNCd0JvQW5NRWRRUUhBSE1FZGdSMUJBY0Fjd1IwQkhZRUJ3QldBbmNFemdFSEFGWUNkUVIzQkFjQWRRUjRCSGNFQndCMUJIWUVlQVFIQU00QmVRVFBBUWNBemdGM0JIa0VCd0IzQkhvRWVRUUhBSGNFZUFSNkJBY0F6d0Y3Qk5RQkJ3RFBBWGtFZXdRSEFIa0VmQVI3QkFjQWVRUjZCSHdFQndEVUFYMEUxd0VIQU5RQmV3UjlCQWNBZXdSK0JIMEVCd0I3Qkh3RWZnUUhBTmNCZndUdkF3Y0Exd0Y5Qkg4RUJ3QjlCSUFFZndRSEFIMEVmZ1NBQkFjQTd3T0JCUEFEQndEdkEzOEVnUVFIQUg4RWdnU0JCQWNBZndTQUJJSUVCd0JJQklNRVJ3UUhBRWdFaEFTREJBY0FoQVJ4QVlNRUJ3Q0VCSEFCY1FFSEFFMEVoUVJMQkFjQVRRU0dCSVVFQndDSEJIQUJoQVFIQUljRWJ3RndBUWNBVUFTSEJFOEVCd0JRQklnRWh3UUhBSWdFYndHSEJBY0FpQVJ1QVc4QkJ3QlNCSWdFVUFRSEFGSUVpUVNJQkFjQWlRUnVBWWdFQndDSkJHMEJiZ0VIQUZRRWlRUlNCQWNBVkFTS0JJa0VCd0NLQkcwQmlRUUhBSW9FY2dGdEFRY0FWZ1NLQkZRRUJ3QldCSXNFaWdRSEFJc0VjZ0dLQkFjQWl3UlJBM0lCQndCWUJJc0VWZ1FIQUZnRWpBU0xCQWNBakFSUkE0c0VCd0NNQkZJRFVRTUhBRWNFalFSYUJBY0FSd1NEQkkwRUJ3Q0RCQkFDalFRSEFJTUVjUUVRQWdjQVdnU09CRndFQndCYUJJMEVqZ1FIQUkwRVBBS09CQWNBalFRUUFqd0NCd0JjQkk4RVhnUUhBRndFamdTUEJBY0FqZ1FLQW84RUJ3Q09CRHdDQ2dJSEFGNEVrQVJnQkFjQVhnU1BCSkFFQndDUEJBd0NrQVFIQUk4RUNnSU1BZ2NBWUFTUkJHSUVCd0JnQkpBRWtRUUhBSkFFRFFLUkJBY0FrQVFNQWcwQ0J3QmlCSklFWkFRSEFHSUVrUVNTQkFjQWtRUndBNUlFQndDUkJBMENjQU1IQUdRRWt3Um1CQWNBWkFTU0JKTUVCd0NTQkFzRGt3UUhBSklFY0FNTEF3Y0FaZ1NVQkdnRUJ3Qm1CSk1FbEFRSEFKTUVEQU9VQkFjQWt3UUxBd3dEQndCb0JKVUVhZ1FIQUdnRWxBU1ZCQWNBbEFTZkE1VUVCd0NVQkF3RG53TUhBR29FbGdSc0JBY0FhZ1NWQkpZRUJ3Q1ZCS0VEbGdRSEFKVUVud09oQXdjQWJBU1hCRzRFQndCc0JKWUVsd1FIQUpZRUJRU1hCQWNBbGdTaEF3VUVCd0J1QkpnRWNBUUhBRzRFbHdTWUJBY0Fsd1NVQXBnRUJ3Q1hCQVVFbEFJSEFIQUVtUVJ5QkFjQWNBU1lCSmtFQndDWUJKQUNtUVFIQUpnRWxBS1FBZ2NBY2dTYUJIUUVCd0J5QkprRW1nUUhBSmtFa2dLYUJBY0FtUVNRQXBJQ0J3QjBCSnNFZGdRSEFIUUVtZ1NiQkFjQW1nU1hBcHNFQndDYUJKSUNsd0lIQUhZRW5BUjRCQWNBZGdTYkJKd0VCd0NiQk5zQm5BUUhBSnNFbHdMYkFRY0FlQVNkQkhvRUJ3QjRCSndFblFRSEFKd0UyZ0dkQkFjQW5BVGJBZG9CQndCNkJKNEVmQVFIQUhvRW5RU2VCQWNBblFUWkFaNEVCd0NkQk5vQjJRRUhBSHdFbndSK0JBY0FmQVNlQko4RUJ3Q2VCTndCbndRSEFKNEUyUUhjQVFjQWZnU2dCSUFFQndCK0JKOEVvQVFIQUo4RTdRT2dCQWNBbndUY0FlMERCd0NBQktFRWdnUUhBSUFFb0FTaEJBY0FvQVRzQTZFRUJ3Q2dCTzBEN0FNSEFJY0VvZ1JQQkFjQWh3U2pCS0lFQndDakJFMEVvZ1FIQUtNRWhnUk5CQWNBaEFTakJJY0VCd0NFQktRRW93UUhBS1FFaGdTakJBY0FwQVNGQklZRUJ3QklCS1FFaEFRSEFFZ0VwUVNrQkFjQXBRU0ZCS1FFQndDbEJFc0VoUVFIQUVZRXBRUklCQWNBUmdTbUJLVUVCd0NtQkVzRXBRUUhBS1lFVEFSTEJBY0FTUVNtQkVZRUJ3QkpCS2NFcGdRSEFLY0VUQVNtQkFjQXB3UktCRXdFQndCUEJLY0VTUVFIQUU4RW9nU25CQWNBb2dSS0JLY0VCd0NpQkUwRVNnUUhBS2dFcVFTcUJBY0FxQVNyQktrRUJ3Q3FCS3dFclFRSEFLb0VxUVNzQkFjQXJRU3VCSzhFQndDdEJLd0VyZ1FIQUs4RXNBU3hCQWNBcndTdUJMQUVCd0NyQkxJRXN3UUhBS3NFcUFTeUJBY0FzZ1MwQkxVRUJ3Q3lCS2dFdEFRSEFLZ0V0Z1MwQkFjQXFBU3FCTFlFQndDcUJMY0V0Z1FIQUtvRXJRUzNCQWNBclFTNEJMY0VCd0N0Qks4RXVBUUhBSzhFdVFTNEJBY0Fyd1N4QkxrRUJ3QzZCTHNFdkFRSEFMb0V2UVM3QkFjQXZBUytCTDhFQndDOEJMc0V2Z1FIQUw4RXdBVEJCQWNBdndTK0JNQUVCd0RCQk1JRXd3UUhBTUVFd0FUQ0JBY0F3d1RFQk1VRUJ3RERCTUlFeEFRSEFMMEV4Z1M3QkFjQXZRVEhCTVlFQndDN0JNZ0V2Z1FIQUxzRXhnVElCQWNBdmdUSkJNQUVCd0MrQk1nRXlRUUhBTUFFeWdUQ0JBY0F3QVRKQk1vRUJ3RENCTXNFeEFRSEFNSUV5Z1RMQkFjQXpBVE5CTTRFQndETUJNOEV6UVFIQU5BRXpnVE5CQWNBMEFUUkJNNEVCd0RTQk5NRTFBUUhBTklFMVFUVEJBY0ExUVRXQk5NRUJ3RFZCTmNFMWdRSEFOZ0UxUVRTQkFjQTJBVFpCTlVFQndEWkJOY0UxUVFIQU5rRTJnVFhCQWNBMEFUYkJOd0VCd0RRQk0wRTJ3UUhBTTBFM1FUYkJBY0F6UVRQQk4wRUJ3Q3pCTk1FMWdRSEFMTUVzZ1RUQkFjQXNnVFVCTk1FQndDeUJMVUUxQVFIQU40RXNBU3VCQWNBM2dUZkJMQUVCd0RnQks0RXJBUUhBT0FFM2dTdUJBY0E0UVNzQktrRUJ3RGhCT0FFckFRSEFPSUVxUVNyQkFjQTRnVGhCS2tFQndEakJLc0Vzd1FIQU9NRTRnU3JCQWNBNUFTekJOWUVCd0RrQk9NRXN3UUhBT1VFMWdUWEJBY0E1UVRrQk5ZRUJ3RG1CTmNFMmdRSEFPWUU1UVRYQkFjQTV3VGZCTjRFQndEbkJPZ0Uzd1FIQU9rRTNnVGdCQWNBNlFUbkJONEVCd0RxQk9BRTRRUUhBT29FNlFUZ0JBY0E2d1RoQk9JRUJ3RHJCT29FNFFRSEFPd0U0Z1RqQkFjQTdBVHJCT0lFQndEdEJPTUU1QVFIQU8wRTdBVGpCQWNBN2dUa0JPVUVCd0R1Qk8wRTVBUUhBTzhFNVFUbUJBY0E3d1R1Qk9VRUJ3RHdCUEVFOGdRSEFQQUU4d1R4QkFjQTh3VDBCUEVFQndEekJQVUU5QVFIQVBVRTlnVDBCQWNBOVFUM0JQWUVCd0QzQlBnRTlnUUhBUGNFK1FUNEJBY0ErUVQ2QlBnRUJ3RDVCUHNFK2dRSEFQc0UvQVQ2QkFjQSt3VDlCUHdFQndEOUJNVUUvZ1FIQVAwRXd3VEZCQWNBK3dUREJQMEVCd0Q3Qk1FRXd3UUhBUGtFd1FUN0JBY0ErUVMvQk1FRUJ3RDVCTHdFdndRSEFQa0U5d1M4QkFjQXZBVDFCTG9FQndDOEJQY0U5UVFIQU13RTNRVFBCQWNBekFUL0JOMEVCd0FBQmJvRUFRVUhBQUFGdlFTNkJBY0FBQVhIQkwwRUJ3QUFCUUlGeHdRSEFBTUZ6Z1FFQlFjQUF3WE1CTTRFQndBQUJRVUZCZ1VIQUFBRkFRVUZCUWNBQUFVSEJRSUZCd0FBQlFZRkJ3VUhBTkVFQkFYT0JBY0EwUVFJQlFRRkJ3RHpCQVVGQVFVSEFQTUU4QVFGQlFjQXVnVHpCQUVGQndDNkJQVUU4d1FIQUFrRkJRWHdCQWNBQ1FVREJRVUZCd0FKQmZJRS93UUhBQWtGOEFUeUJBY0E4Z1FLQmY4RUJ3RHlCQXNGQ2dVSEFQRUVDd1h5QkFjQThRUU1CUXNGQndEMEJBd0Y4UVFIQVBRRURRVU1CUWNBOWdRTkJmUUVCd0QyQkE0RkRRVUhBUGdFRGdYMkJBY0ErQVFQQlE0RkJ3RDZCQThGK0FRSEFQb0VFQVVQQlFjQS9BUVFCZm9FQndEOEJCRUZFQVVIQVA4RUVnWGRCQWNBL3dRS0JSSUZCd0R0QkJNRjdBUUhBTzBFRkFVVEJRY0E3Z1FVQmUwRUJ3RHVCQlVGRkFVSEFPOEVGUVh1QkFjQTd3UVdCUlVGQndEbUJCWUY3d1FIQU9ZRUZ3VVdCUWNBMmdRWEJlWUVCd0RhQkJnRkZ3VUhBTmtFR0FYYUJBY0EyUVFaQlJnRkJ3RFlCQmtGMlFRSEFOZ0VHZ1VaQlFjQTdBUWJCZXNFQndEc0JCTUZHd1VIQU9zRUhBWHFCQWNBNndRYkJSd0ZCd0RxQkIwRjZRUUhBT29FSEFVZEJRY0E2UVFlQmVjRUJ3RHBCQjBGSGdVSEFPY0VId1hvQkFjQTV3UWVCUjhGQndBZ0JSMEFLZ0FIQUNBRkhnQWRBQWNBSVFVZUFDQUZCd0FoQlNRQUhnQUhBQ0lGSkFBaEJRY0FJZ1VsQUNRQUJ3QW1BQ1VBSWdVSEFDWUFDd0FsQUFjQUl3VWtCU1VGQndBakJTWUZKQVVIQUNjRkl3VW9CUWNBSndVbUJTTUZCd0FwQlNnRktnVUhBQ2tGSndVb0JRY0FLd1VxQlN3RkJ3QXJCU2tGS2dVSEFDMEZMQVV1QlFjQUxRVXJCU3dGQndBdkJTMEZMZ1VIQUM4Rk1BVXRCUWNBTVFVd0JTOEZCd0F4QlRJRk1BVUhBQ1VGTWdVeEJRY0FKUVVrQlRJRkJ3QXpCU1VGTkFVSEFETUZJd1VsQlFjQUtBVXpCVFVGQndBb0JTTUZNd1VIQUNvRk5RVTJCUWNBS2dVb0JUVUZCd0FxQlRjRkxBVUhBQ29GTmdVM0JRY0FMQVU0QlM0RkJ3QXNCVGNGT0FVSEFEZ0ZMd1V1QlFjQU9BVTVCUzhGQndBNUJURUZMd1VIQURrRk9nVXhCUWNBT2dVbEJURUZCd0E2QlRRRkpRVUhBRHNGTXdVMEJRY0FPd1U4QlRNRkJ3QXpCVDBGTlFVSEFETUZQQVU5QlFjQU5RVStCVFlGQndBMUJUMEZQZ1VIQURZRlB3VTNCUWNBTmdVK0JUOEZCd0EzQlVBRk9BVUhBRGNGUHdWQUJRY0FRQVU1QlRnRkJ3QkFCVUVGT1FVSEFFRUZPZ1U1QlFjQVFRVkNCVG9GQndCQ0JUUUZPZ1VIQUVJRk93VTBCUWNBUXdVOEJUc0ZCd0JEQlVRRlBBVUhBRHdGUlFVOUJRY0FQQVZFQlVVRkJ3QTlCVVlGUGdVSEFEMEZSUVZHQlFjQVBnVkhCVDhGQndBK0JVWUZSd1VIQUQ4RlNBVkFCUWNBUHdWSEJVZ0ZCd0JJQlVFRlFBVUhBRWdGU1FWQkJRY0FTUVZDQlVFRkJ3QkpCVW9GUWdVSEFFb0ZPd1ZDQlFjQVNnVkRCVHNGQndCRkJVc0ZUQVVIQUVVRlJBVkxCUWNBUmdWTUJVMEZCd0JHQlVVRlRBVUhBRWNGVFFWT0JRY0FSd1ZHQlUwRkJ3QklCVTRGVHdVSEFFZ0ZSd1ZPQlFjQVVBVklCVThGQndCUUJVa0ZTQVVIQUZFRlNRVlFCUWNBVVFWS0JVa0ZCd0JTQlVvRlVRVUhBRklGUXdWS0JRY0FTd1ZEQlZJRkJ3QkxCVVFGUXdVSEFGTUZWQVZWQlFjQVV3VldCVlFGQndCVUJWY0ZXQVVIQUZRRlZnVlhCUWNBV0FWWkJWb0ZCd0JZQlZjRldRVUhBRm9GV3dWY0JRY0FXZ1ZaQlZzRkJ3QmNCVjBGWGdVSEFGd0ZXd1ZkQlFjQVhnVmZCV0FGQndCZUJWMEZYd1VIQUdBRllRVmlCUWNBWUFWZkJXRUZCd0JoQldNRllnVUhBR0VGWkFWakJRY0FaQVZsQldNRkJ3QmtCV1lGWlFVSEFHWUZad1ZsQlFjQVpnVm9CV2NGQndCb0JXa0Zad1VIQUdnRmFnVnBCUWNBYWdWVkJXa0ZCd0JxQlZNRlZRVUhBR3NGVmdWVEJRY0Fhd1ZzQlZZRkJ3QldCVzBGVndVSEFGWUZiQVZ0QlFjQVZ3VnVCVmtGQndCWEJXMEZiZ1VIQUZrRmJ3VmJCUWNBV1FWdUJXOEZCd0JiQlhBRlhRVUhBRnNGYndWd0JRY0FYUVZ4QlY4RkJ3QmRCWEFGY1FVSEFGOEZjZ1ZoQlFjQVh3VnhCWElGQndCeUJXUUZZUVVIQUhJRmN3VmtCUWNBY3dWbUJXUUZCd0J6QlhRRlpnVUhBSFFGYUFWbUJRY0FkQVYxQldnRkJ3QjFCV29GYUFVSEFIVUZkZ1ZxQlFjQWRnVlRCV29GQndCMkJXc0ZVd1VIQUhjRmJBVnJCUWNBZHdWNEJXd0ZCd0JzQlhrRmJRVUhBR3dGZUFWNUJRY0FiUVY2Qlc0RkJ3QnRCWGtGZWdVSEFHNEZld1Z2QlFjQWJnVjZCWHNGQndCdkJYd0ZjQVVIQUc4RmV3VjhCUWNBY0FWOUJYRUZCd0J3Qlh3RmZRVUhBSEVGZmdWeUJRY0FjUVY5Qlg0RkJ3QitCWE1GY2dVSEFINEZmd1Z6QlFjQWZ3VjBCWE1GQndCL0JZQUZkQVVIQUlBRmRRVjBCUWNBZ0FXQkJYVUZCd0NCQlhZRmRRVUhBSUVGZ2dWMkJRY0FnZ1ZyQlhZRkJ3Q0NCWGNGYXdVSEFJTUZkd1dFQlFjQWd3VjRCWGNGQndCNUJZTUZoUVVIQUhrRmVBV0RCUWNBZWdXRkJZWUZCd0I2QlhrRmhRVUhBSG9GaHdWN0JRY0FlZ1dHQlljRkJ3QjdCWWdGZkFVSEFIc0Zod1dJQlFjQWZBV0pCWDBGQndCOEJZZ0ZpUVVIQUgwRmlnVitCUWNBZlFXSkJZb0ZCd0NLQlg4RmZnVUhBSW9GaXdWL0JRY0FqQVVlQlkwRkJ3Q01CUjhGSGdVSEFJc0ZnQVYvQlFjQWl3V09CWUFGQndDT0JZRUZnQVVIQUk0Rmp3V0JCUWNBandXQ0JZRUZCd0NQQlpBRmdnVUhBSVFGZ2dXUUJRY0FoQVYzQllJRkJ3Q1JCWVFGa2dVSEFKRUZnd1dFQlFjQWhRV1JCWk1GQndDRkJZTUZrUVVIQUlZRmt3V1VCUWNBaGdXRkJaTUZCd0NIQlpRRmxRVUhBSWNGaGdXVUJRY0Fod1dXQllnRkJ3Q0hCWlVGbGdVSEFJZ0Zsd1dKQlFjQWlBV1dCWmNGQndDSkJaZ0ZpZ1VIQUlrRmx3V1lCUWNBbUFXTEJZb0ZCd0NZQlprRml3VUhBSmtGamdXTEJRY0FtUVdhQlk0RkJ3Q2FCWThGamdVSEFKb0Ztd1dQQlFjQW5BV1BCWnNGQndDY0JaQUZqd1VIQUpJRmtBV2NCUWNBa2dXRUJaQUZCd0NkQlpJRm5nVUhBSjBGa1FXU0JRY0Frd1dkQlo4RkJ3Q1RCWkVGblFVSEFKUUZud1dnQlFjQWxBV1RCWjhGQndDVkJhQUZvUVVIQUpVRmxBV2dCUWNBbFFXaUJaWUZCd0NWQmFFRm9nVUhBSllGb3dXWEJRY0FsZ1dpQmFNRkJ3Q1hCYVFGbUFVSEFKY0Zvd1drQlFjQUVRV2xCUkFGQndBUkJZMEZwUVVIQUkwRkhRV2xCUWNBalFVZUJSMEZCd0FRQmFZRkR3VUhBQkFGcFFXbUJRY0FwUVVjQmFZRkJ3Q2xCUjBGSEFVSEFBOEZwd1VPQlFjQUR3V21CYWNGQndDbUJSc0Zwd1VIQUtZRkhBVWJCUWNBRGdXb0JRMEZCd0FPQmFjRnFBVUhBS2NGRXdXb0JRY0Fwd1ViQlJNRkJ3QU5CYWtGREFVSEFBMEZxQVdwQlFjQXFBVVVCYWtGQndDb0JSTUZGQVVIQUF3RnFnVUxCUWNBREFXcEJhb0ZCd0NwQlJVRnFnVUhBS2tGRkFVVkJRY0FDd1dyQlFvRkJ3QUxCYW9GcXdVSEFLb0ZGZ1dyQlFjQXFnVVZCUllGQndBS0Jhd0ZFZ1VIQUFvRnF3V3NCUWNBcXdVWEJhd0ZCd0NyQlJZRkZ3VUhBQklGclFYZEJBY0FFZ1dzQmEwRkJ3Q3NCUmdGclFVSEFLd0ZGd1VZQlFjQTNRU3VCZHNFQndEZEJLMEZyZ1VIQUswRkdRV3VCUWNBclFVWUJSa0ZCd0RiQks4RjNBUUhBTnNFcmdXdkJRY0FyZ1VhQmE4RkJ3Q3VCUmtGR2dVSEFMQUZzUVd5QlFjQXNBV3pCYkVGQndDMEJiQUZzZ1VIQUxRRnRRV3dCUWNBdGdXMUJiUUZCd0MyQmJjRnRRVUhBS1FGbVFXWUJRY0FwQVc0QlprRkJ3QzRCWm9GbVFVSEFMZ0Z1UVdhQlFjQXVRV2JCWm9GQndDNUJib0Ztd1VIQUxzRnR3VzJCUWNBdXdXOEJiY0ZCd0M5QmJ3RnV3VUhBTDBGdmdXOEJRY0F2d1diQmJvRkJ3Qy9CWndGbXdVSEFKNEZuQVcvQlFjQW5nV1NCWndGQndDeUJjQUZ3UVVIQUxJRnNRWEFCUWNBd2dXeUJjRUZCd0RDQmJRRnNnVUhBTU1GdEFYQ0JRY0F3d1cyQmJRRkJ3REVCWjBGbmdVSEFNUUZ4UVdkQlFjQW5RWEdCWjhGQndDZEJjVUZ4Z1VIQUo4Rnh3V2dCUWNBbndYR0JjY0ZCd0RJQmJZRnd3VUhBTWdGdXdXMkJRY0F5UVc3QmNnRkJ3REpCYjBGdXdVSEFLQUZ5Z1doQlFjQW9BWEhCY29GQndDaEJjc0ZvZ1VIQUtFRnlnWExCUWNBd1FYTUJjMEZCd0RCQmNBRnpBVUhBTTRGd1FYTkJRY0F6Z1hDQmNFRkJ3RFBCY0lGemdVSEFNOEZ3d1hDQlFjQW9nWFFCYU1GQndDaUJjc0YwQVVIQUtNRjBRV2tCUWNBb3dYUUJkRUZCd0RSQmJnRnBBVUhBTkVGMGdXNEJRY0Ewd1hEQmM4RkJ3RFRCY2dGd3dVSEFOUUZ5QVhUQlFjQTFBWEpCY2dGQndEU0Jia0Z1QVVIQU5JRjFRVzVCUWNBMVFXNkJia0ZCd0RWQmRZRnVnVUhBTTBGMXdYWUJRY0F6UVhNQmRjRkJ3RFpCYzBGMkFVSEFOa0Z6Z1hOQlFjQTJnWE9CZGtGQndEYUJjOEZ6Z1VIQU5ZRnZ3VzZCUWNBMWdYYkJiOEZCd0RiQlo0RnZ3VUhBTnNGeEFXZUJRY0EzQVhGQmNRRkJ3RGNCZDBGeFFVSEFONEZ6d1hhQlFjQTNnWFRCYzhGQndEZkJkTUYzZ1VIQU44RjFBWFRCUWNBeFFYZ0JjWUZCd0RGQmQwRjRBVUhBTVlGNFFYSEJRY0F4Z1hnQmVFRkJ3REhCZUlGeWdVSEFNY0Y0UVhpQlFjQXl3WGlCZU1GQndETEJjb0Y0Z1VIQU5BRjR3WGtCUWNBMEFYTEJlTUZCd0RSQmVRRjVRVUhBTkVGMEFYa0JRY0FqUVhtQll3RkJ3Q05CZWNGNWdVSEFCRUY1d1dOQlFjQUVRWG9CZWNGQndEOEJPZ0ZFUVVIQVB3RTZRWG9CUWNBL1FUcEJmd0VCd0Q5Qk9vRjZRVUhBUDRFNmdYOUJBY0EvZ1RyQmVvRkJ3RHNCZEVGNVFVSEFPd0YwZ1hSQlFjQTdRWFNCZXdGQndEdEJkVUYwZ1VIQU80RjFRWHRCUWNBN2dYV0JkVUZCd0R1QmRzRjFnVUhBTzRGN3dYYkJRY0E3d1hFQmRzRkJ3RHZCZHdGeEFVSEFQQUYzUVhjQlFjQThBWHhCZDBGQndEZEJmSUY0QVVIQU4wRjhRWHlCUWNBNEFYekJlRUZCd0RnQmZJRjh3VUhBT0lGOHdYMEJRY0E0Z1hoQmZNRkJ3RG5CZlVGNWdVSEFPY0Y5Z1gxQlFjQTlnVytCZlVGQndEMkJid0Z2Z1VIQU9nRjlnWG5CUWNBNkFYM0JmWUZCd0QzQmJ3RjlnVUhBUGNGdHdXOEJRY0E2UVgzQmVnRkJ3RHBCZmdGOXdVSEFQZ0Z0d1gzQlFjQStBVzFCYmNGQndEcUJmZ0Y2UVVIQU9vRitRWDRCUWNBK1FXMUJmZ0ZCd0Q1QmJBRnRRVUhBT3NGK1FYcUJRY0E2d1g2QmZrRkJ3RDZCYkFGK1FVSEFQb0Zzd1d3QlFjQTR3WDBCZnNGQndEakJlSUY5QVVIQU9RRit3WDhCUWNBNUFYakJmc0ZCd0Q5QmY0Ri93VUhBUDBGQUFiK0JRY0Evd1VCQmdJR0J3RC9CZjRGQVFZSEFBSUdBd1lFQmdjQUFnWUJCZ01HQndBRUJnVUdCZ1lIQUFRR0F3WUZCZ2NBQmdZSEJnZ0dCd0FHQmdVR0J3WUhBQWdHQ1FZS0JnY0FDQVlIQmdrR0J3QUtCZ3NHREFZSEFBb0dDUVlMQmdjQURBWU5CZzRHQndBTUJnc0dEUVlIQUE0R0R3WVFCZ2NBRGdZTkJnOEdCd0FRQmhFR0VnWUhBQkFHRHdZUkJnY0FFZ1lUQmhRR0J3QVNCaEVHRXdZSEFCUUdGUVlXQmdjQUZBWVRCaFVHQndBVkJoY0dGZ1lIQUJVR0dBWVhCZ2NBR0FZWkJoY0dCd0FZQmhvR0dRWUhBQm9HR3dZWkJnY0FHZ1ljQmhzR0J3QWNCaDBHR3dZSEFCd0dIZ1lkQmdjQUhnWWZCaDBHQndBZUJpQUdId1lIQUNFR0lnWWpCZ2NBSVFZa0JpSUdCd0FrQmlVR0lnWUhBQ1FHSmdZbEJnY0FKZ1luQmlVR0J3QW1CaWdHSndZSEFDZ0dLUVluQmdjQUtBWXFCaWtHQndBcUJ2MEZLUVlIQUNvR0FBYjlCUWNBQUFZckJ2NEZCd0FBQml3R0t3WUhBQzBHQUFZcUJnY0FMUVlzQmdBR0J3QXVCaW9HS0FZSEFDNEdMUVlxQmdjQUx3WW9CaVlHQndBdkJpNEdLQVlIQURBR0pnWWtCZ2NBTUFZdkJpWUdCd0F4QmlRR0lRWUhBREVHTUFZa0JnY0FNZ1loQmpNR0J3QXlCakVHSVFZSEFEUUdNd1lnQmdjQU5BWXlCak1HQndBMUJpQUdIZ1lIQURVR05BWWdCZ2NBTmdZZUJod0dCd0EyQmpVR0hnWUhBRGNHSEFZYUJnY0FOd1kyQmh3R0J3QTRCaG9HR0FZSEFEZ0dOd1lhQmdjQU9RWVlCaFVHQndBNUJqZ0dHQVlIQUJNR09RWVZCZ2NBRXdZNkJqa0dCd0FSQmpvR0V3WUhBQkVHT3dZNkJnY0FEd1k3QmhFR0J3QVBCandHT3dZSEFBMEdQQVlQQmdjQURRWTlCandHQndBTEJqMEdEUVlIQUFzR1BnWTlCZ2NBQ1FZK0Jnc0dCd0FKQmo4R1BnWUhBQWNHUHdZSkJnY0FCd1pBQmo4R0J3QUZCa0FHQndZSEFBVUdRUVpBQmdjQUF3WkJCZ1VHQndBREJrSUdRUVlIQUFFR1FnWURCZ2NBQVFaREJrSUdCd0QrQlVNR0FRWUhBUDRGS3daREJnY0FLd1pFQmtVR0J3QXJCaXdHUkFZSEFFUUdMUVpHQmdjQVJBWXNCaTBHQndCR0JpNEdSd1lIQUVZR0xRWXVCZ2NBUndZdkJrZ0dCd0JIQmk0R0x3WUhBRWdHTUFaSkJnY0FTQVl2QmpBR0J3QkpCakVHU2dZSEFFa0dNQVl4QmdjQVN3WXhCaklHQndCTEJrb0dNUVlIQUV3R01nWTBCZ2NBVEFaTEJqSUdCd0JOQmpRR05RWUhBRTBHVEFZMEJnY0FUZ1kxQmpZR0J3Qk9CazBHTlFZSEFFOEdOZ1kzQmdjQVR3Wk9CallHQndCUUJqY0dPQVlIQUZBR1R3WTNCZ2NBVVFZNEJqa0dCd0JSQmxBR09BWUhBRG9HVVFZNUJnY0FPZ1pTQmxFR0J3QTdCbElHT2dZSEFEc0dVd1pTQmdjQVBBWlRCanNHQndBOEJsUUdVd1lIQUQwR1ZBWThCZ2NBUFFaVkJsUUdCd0ErQmxVR1BRWUhBRDRHVmdaVkJnY0FQd1pXQmo0R0J3QS9CbGNHVmdZSEFFQUdWd1kvQmdjQVFBWllCbGNHQndCQUJsa0dXQVlIQUVBR1FRWlpCZ2NBUVFaYUJsa0dCd0JCQmtJR1dnWUhBRUlHV3daYUJnY0FRZ1pEQmxzR0J3QkRCa1VHV3dZSEFFTUdLd1pGQmdjQVJRWmNCbDBHQndCRkJrUUdYQVlIQUZ3R1JnWmVCZ2NBWEFaRUJrWUdCd0JlQmtjR1h3WUhBRjRHUmdaSEJnY0FYd1pJQm1BR0J3QmZCa2NHU0FZSEFHQUdTUVpoQmdjQVlBWklCa2tHQndCaEJrb0dZZ1lIQUdFR1NRWktCZ2NBWWdaTEJtTUdCd0JpQmtvR1N3WUhBR1FHU3daTUJnY0FaQVpqQmtzR0J3QmxCa3dHVFFZSEFHVUdaQVpNQmdjQVpnWk5CazRHQndCbUJtVUdUUVlIQUdjR1RnWlBCZ2NBWndabUJrNEdCd0JvQms4R1VBWUhBR2dHWndaUEJnY0FhUVpRQmxFR0J3QnBCbWdHVUFZSEFGSUdhUVpSQmdjQVVnWnFCbWtHQndCVEJtb0dVZ1lIQUZNR2F3WnFCZ2NBVkFackJsTUdCd0JVQm13R2F3WUhBRlVHYkFaVUJnY0FWUVp0Qm13R0J3QldCbTBHVlFZSEFGWUdiZ1p0QmdjQVZ3WnVCbFlHQndCWEJtOEdiZ1lIQUZjR2NBWnZCZ2NBVndaWUJuQUdCd0JZQm5FR2NBWUhBRmdHV1FaeEJnY0FXUVp5Qm5FR0J3QlpCbG9HY2dZSEFGb0djd1p5QmdjQVdnWmJCbk1HQndCYkJsMEdjd1lIQUZzR1JRWmRCZ2NBWFFaMEJuVUdCd0JkQmx3R2RBWUhBSFFHWGdaMkJnY0FkQVpjQmw0R0J3QjJCbDhHZHdZSEFIWUdYZ1pmQmdjQWR3WmdCbmdHQndCM0JsOEdZQVlIQUhnR1lRWjVCZ2NBZUFaZ0JtRUdCd0I1Qm1JR2VnWUhBSGtHWVFaaUJnY0FlZ1pqQm5zR0J3QjZCbUlHWXdZSEFId0dZd1prQmdjQWZBWjdCbU1HQndCOUJtUUdaUVlIQUgwR2ZBWmtCZ2NBZmdabEJtWUdCd0IrQm4wR1pRWUhBSDhHWmdabkJnY0Fmd1orQm1ZR0J3Q0FCbWNHYUFZSEFJQUdmd1puQmdjQWdRWm9CbWtHQndDQkJvQUdhQVlIQUdvR2dRWnBCZ2NBYWdhQ0JvRUdCd0JyQm9JR2FnWUhBR3NHZ3dhQ0JnY0FiQWFEQm1zR0J3QnNCb1FHZ3dZSEFHMEdoQVpzQmdjQWJRYUZCb1FHQndCdUJvVUdiUVlIQUc0R2hnYUZCZ2NBYndhR0JtNEdCd0J2Qm9jR2hnWUhBRzhHaUFhSEJnY0Fid1p3Qm9nR0J3QndCb2tHaUFZSEFIQUdjUWFKQmdjQWNRYUtCb2tHQndCeEJuSUdpZ1lIQUhJR2l3YUtCZ2NBY2daekJvc0dCd0J6Qm5VR2l3WUhBSE1HWFFaMUJnY0FLUWFNQm8wR0J3QXBCdjBGakFZSEFJd0cvd1dPQmdjQWpBYjlCZjhGQndDT0JnSUdqd1lIQUk0Ry93VUNCZ2NBandZRUJwQUdCd0NQQmdJR0JBWUhBSkFHQmdhUkJnY0FrQVlFQmdZR0J3Q1JCZ2dHa2dZSEFKRUdCZ1lJQmdjQWtnWUtCcE1HQndDU0JnZ0dDZ1lIQUpNR0RBYVVCZ2NBa3dZS0Jnd0dCd0NVQmc0R2xRWUhBSlFHREFZT0JnY0FsUVlRQnBZR0J3Q1ZCZzRHRUFZSEFKWUdFZ2FYQmdjQWxnWVFCaElHQndDWEJoUUdtQVlIQUpjR0VnWVVCZ2NBbUFZV0Jwa0dCd0NZQmhRR0ZnWUhBQllHbWdhWkJnY0FGZ1lYQnBvR0J3QVhCcHNHbWdZSEFCY0dHUWFiQmdjQUdRYWNCcHNHQndBWkJoc0duQVlIQUJzR25RYWNCZ2NBR3dZZEJwMEdCd0FkQnA0R25RWUhBQjBHSHdhZUJnY0FId2FmQnA0R0J3QWZCcUFHbndZSEFLQUdvUWFmQmdjQW9BWWpCcUVHQndBakJxSUdvUVlIQUNNR0lnYWlCZ2NBSWdhakJxSUdCd0FpQmlVR293WUhBQ1VHcEFhakJnY0FKUVluQnFRR0J3QW5CbzBHcEFZSEFDY0dLUWFOQmdjQWpRYWxCcVlHQndDTkJvd0dwUVlIQUtVR2pnYW5CZ2NBcFFhTUJvNEdCd0NuQm84R3FBWUhBS2NHamdhUEJnY0FxQWFRQnFrR0J3Q29CbzhHa0FZSEFLa0drUWFxQmdjQXFRYVFCcEVHQndDcUJwSUdxd1lIQUtvR2tRYVNCZ2NBcXdhVEJxd0dCd0NyQnBJR2t3WUhBSzBHa3dhVUJnY0FyUWFzQnBNR0J3Q3VCcFFHbFFZSEFLNEdyUWFVQmdjQXJ3YVZCcFlHQndDdkJxNEdsUVlIQUxBR2xnYVhCZ2NBc0FhdkJwWUdCd0N4QnBjR21BWUhBTEVHc0FhWEJnY0FzZ2FZQnBrR0J3Q3lCckVHbUFZSEFKb0dzZ2FaQmdjQW1nYXpCcklHQndDYkJyTUdtZ1lIQUpzR3RBYXpCZ2NBbkFhMEJwc0dCd0NjQnJVR3RBWUhBSjBHdFFhY0JnY0FuUWEyQnJVR0J3Q2VCcllHblFZSEFKNEd0d2EyQmdjQW53YTNCcDRHQndDZkJyZ0d0d1lIQUo4R3VRYTRCZ2NBbndhaEJya0dCd0NoQnJvR3VRWUhBS0VHb2dhNkJnY0FvZ2E3QnJvR0J3Q2lCcU1HdXdZSEFLTUd2QWE3QmdjQW93YWtCcndHQndDa0JxWUd2QVlIQUtRR2pRYW1CZ2NBcFFhOUJxWUdCd0NsQnI0R3ZRWUhBTDhHcFFhbkJnY0F2d2ErQnFVR0J3REFCcWNHcUFZSEFNQUd2d2FuQmdjQXdRYW9CcWtHQndEQkJzQUdxQVlIQU1JR3FRYXFCZ2NBd2diQkJxa0dCd0REQnFvR3F3WUhBTU1Hd2dhcUJnY0F4QWFyQnF3R0J3REVCc01HcXdZSEFNVUdyQWF0QmdjQXhRYkVCcXdHQndER0JxMEdyZ1lIQU1ZR3hRYXRCZ2NBeHdhdUJxOEdCd0RIQnNZR3JnWUhBTWdHcndhd0JnY0F5QWJIQnE4R0J3REpCckFHc1FZSEFNa0d5QWF3QmdjQXlnYXhCcklHQndES0Jza0dzUVlIQUxNR3lnYXlCZ2NBc3diTEJzb0dCd0MwQnNzR3N3WUhBTFFHekFiTEJnY0F0UWJNQnJRR0J3QzFCczBHekFZSEFMWUd6UWExQmdjQXRnYk9CczBHQndDM0JzNEd0Z1lIQUxjR3p3Yk9CZ2NBdUFiUEJyY0dCd0M0QnRBR3p3WUhBTGtHMEFhNEJnY0F1UWJSQnRBR0J3QzZCdEVHdVFZSEFMb0cwZ2JSQmdjQXV3YlNCcm9HQndDN0J0TUcwZ1lIQUx3RzB3YTdCZ2NBdkFiVUJ0TUdCd0NtQnRRR3ZBWUhBS1lHdlFiVUJnY0F2Z2JWQnIwR0J3QytCdFlHMVFZSEFOY0d2Z2EvQmdjQTF3YldCcjRHQndEWUJyOEd3QVlIQU5nRzF3YS9CZ2NBMlFiQUJzRUdCd0RaQnRnR3dBWUhBTm9Hd1FiQ0JnY0EyZ2JaQnNFR0J3RGJCc0lHd3dZSEFOc0cyZ2JDQmdjQTNBYkRCc1FHQndEY0J0c0d3d1lIQU4wR3hBYkZCZ2NBM1FiY0JzUUdCd0RlQnNVR3hnWUhBTjRHM1FiRkJnY0Ezd2JHQnNjR0J3RGZCdDRHeGdZSEFPQUd4d2JJQmdjQTRBYmZCc2NHQndEaEJzZ0d5UVlIQU9FRzRBYklCZ2NBNGdiSkJzb0dCd0RpQnVFR3lRWUhBTXNHNGdiS0JnY0F5d2JqQnVJR0J3RE1CdU1HeXdZSEFNd0c1QWJqQmdjQXpRYmtCc3dHQndETkJ1VUc1QVlIQU00RzVRYk5CZ2NBemdibUJ1VUdCd0RQQnVZR3pnWUhBTThHNXdibUJnY0EwQWJuQnM4R0J3RFFCdWdHNXdZSEFORUc2QWJRQmdjQTBRYnBCdWdHQndEU0J1a0cwUVlIQU5JRzZnYnBCZ2NBMHdicUJ0SUdCd0RUQnVzRzZnWUhBTlFHNndiVEJnY0ExQWJzQnVzR0J3QzlCdXdHMUFZSEFMMEcxUWJzQmdjQTdRYUtCdTRHQndEdEJva0dpZ1lIQUlrRzd3YUlCZ2NBaVFidEJ1OEdCd0NJQnZBR2h3WUhBSWdHN3did0JnY0Fod2J4Qm9ZR0J3Q0hCdkFHOFFZSEFJWUc4Z2FGQmdjQWhnYnhCdklHQndDRkJ2TUdoQVlIQUlVRzhnYnpCZ2NBaEFiMEJvTUdCd0NFQnZNRzlBWUhBSU1HOVFhQ0JnY0Fnd2IwQnZVR0J3Q0NCdllHZ1FZSEFJSUc5UWIyQmdjQWdRYjNCb0FHQndDQkJ2WUc5d1lIQUlBRytBWi9CZ2NBZ0FiM0J2Z0dCd0IvQnZrR2ZnWUhBSDhHK0FiNUJnY0FmZ2I2Qm4wR0J3QitCdmtHK2dZSEFIMEcrd1o4QmdjQWZRYjZCdnNHQndEOEJ2MEcvZ1lIQVB3Ry93YjlCZ2NBQUFmL0J2d0dCd0FBQndFSC93WUhBUDRHQWdmdUJnY0EvZ2I5QmdJSEJ3QURCd0VIQUFjSEFBTUhCQWNCQndjQTdnWUZCKzBHQndEdUJnSUhCUWNIQU8wR0JnZnZCZ2NBN1FZRkJ3WUhCd0R2QmdjSDhBWUhBTzhHQmdjSEJ3Y0E4QVlJQi9FR0J3RHdCZ2NIQ0FjSEFQRUdDUWZ5QmdjQThRWUlCd2tIQndEeUJnb0g4d1lIQVBJR0NRY0tCd2NBOHdZTEIvUUdCd0R6QmdvSEN3Y0hBUFFHREFmMUJnY0E5QVlMQnd3SEJ3RDFCZzBIOWdZSEFQVUdEQWNOQndjQTlnWU9CL2NHQndEMkJnMEhEZ2NIQVBjR0R3ZjRCZ2NBOXdZT0J3OEhCd0Q0QmhBSCtRWUhBUGdHRHdjUUJ3Y0ErUVlSQi9vR0J3RDVCaEFIRVFjSEFQb0dFZ2Y3QmdjQStnWVJCeElIQndEN0JoTUhGQWNIQVBzR0VnY1RCd2NBRkFjVkJ4WUhCd0FVQnhNSEZRY0hBQllIRndjWUJ3Y0FGZ2NWQnhjSEJ3QVlCeGtIR2djSEFCZ0hGd2NaQndjQUdnY2JCeHdIQndBYUJ4a0hHd2NIQUJ3SEJBY0RCd2NBSEFjYkJ3UUhCd0NMQmgwSGlnWUhBSXNHSGdjZEJ3Y0FIZ2QxQmg4SEJ3QWVCNHNHZFFZSEFCOEhJQWNoQndjQUh3Y2lCeUFIQndBaUIzWUdJd2NIQUNJSGRBWjJCZ2NBSXdja0J5VUhCd0FqQnlZSEpBY0hBQ1lIZUFZbkJ3Y0FKZ2QzQm5nR0J3QW5CeWdIS1FjSEFDY0hLZ2NvQndjQUtnZDZCaXNIQndBcUIza0dlZ1lIQUN3SGZBWXRCd2NBTEFkN0Jud0dCd0FyQnkwSExnY0hBQ3NITEFjdEJ3Y0EvZ2FLQmk4SEJ3RCtCdTRHaWdZSEFQd0dMd2N3QndjQS9BYitCaThIQndBQUJ6QUhNUWNIQUFBSC9BWXdCd2NBQXdjeEJ6SUhCd0FEQndBSE1RY0hBQndITWdjekJ3Y0FIQWNEQnpJSEJ3QWFCek1ITkFjSEFCb0hIQWN6QndjQUdBYzBCelVIQndBWUJ4b0hOQWNIQUJZSE5RYzJCd2NBRmdjWUJ6VUhCd0Q3QmpjSGZBWUhBUHNHRkFjM0J3Y0FGQWMyQnpjSEJ3QVVCeFlITmdjSEFJb0dPQWM1QndjQWlnWWRCemdIQndBNkIzd0dPd2NIQURvSExRZDhCZ2NBTUFjOEJ6MEhCd0F3Qnk4SFBBY0hBRGtIUFFjOEJ3Y0FPUWMrQnowSEJ3QXhCejBIUHdjSEFERUhNQWM5QndjQVBnYy9CejBIQndBK0IwQUhQd2NIQURJSFB3ZEJCd2NBTWdjeEJ6OEhCd0JBQjBFSFB3Y0hBRUFIUWdkQkJ3Y0FRd2N5QjBFSEJ3QkRCek1ITWdjSEFFSUhRd2RCQndjQVFnZEVCME1IQndCRkJ6TUhRd2NIQUVVSE5BY3pCd2NBUkFkRkIwTUhCd0JFQjBZSFJRY0hBRWNITkFkRkJ3Y0FSd2MxQnpRSEJ3QkdCMGNIUlFjSEFFWUhTQWRIQndjQVNRYzFCMGNIQndCSkJ6WUhOUWNIQUVnSFNRZEhCd2NBU0FkS0Iwa0hCd0JMQnpZSFNRY0hBRXNITndjMkJ3Y0FTZ2RMQjBrSEJ3QktCenNIU3djSEFEd0hpZ1k1QndjQVBBY3ZCNG9HQndBM0J6c0hmQVlIQURjSFN3YzdCd2NBVEFkQUJ6NEhCd0JNQjAwSFFBY0hBQ0VIVFFkTUJ3Y0FJUWNnQjAwSEJ3Qk5CMElIUUFjSEFFMEhUZ2RDQndjQUlBZE9CMDBIQndBZ0J5VUhUZ2NIQUU0SFJBZENCd2NBVGdkUEIwUUhCd0FsQjA4SFRnY0hBQ1VISkFkUEJ3Y0FUd2RHQjBRSEJ3QlBCMUFIUmdjSEFDUUhVQWRQQndjQUpBY3BCMUFIQndCUUIwZ0hSZ2NIQUZBSFVRZElCd2NBS1FkUkIxQUhCd0FwQnlnSFVRY0hBRkVIU2dkSUJ3Y0FVUWRTQjBvSEJ3QW9CMUlIVVFjSEFDZ0hMZ2RTQndjQVVnYzdCMG9IQndCU0J6b0hPd2NIQUM0SE9nZFNCd2NBTGdjdEJ6b0hCd0E0Qno0SE9RY0hBRGdIVEFjK0J3Y0FIUWRNQnpnSEJ3QWRCeUVIVEFjSEFQOEdCQWRUQndjQS93WUJCd1FIQndEbEJmd0ZWQWNIQU9VRjVBWDhCUWNBQkFjWkIxTUhCd0FFQnhzSEdRY0hBQmtIRlFkVEJ3Y0FHUWNYQnhVSEJ3QVZCeElIVXdjSEFCVUhFd2NTQndjQUVnY1FCMU1IQndBU0J4RUhFQWNIQUJBSERnZFRCd2NBRUFjUEJ3NEhCd0FPQnd3SFV3Y0hBQTRIRFFjTUJ3Y0FEQWNLQjFNSEJ3QU1Cd3NIQ2djSEFBa0hVd2NLQndjQUNRY0lCMU1IQndBSUJ3WUhVd2NIQUFnSEJ3Y0dCd2NBQlFkVEJ3WUhCd0FGQndJSFV3Y0hBUDBHVXdjQ0J3Y0EvUWIvQmxNSEJ3QWhCcUFHTXdZSEFDRUdJd2FnQmdjQUh3WXpCcUFHQndBZkJpQUdNd1lIQUZVSFZnZFhCd2NBVlFkWUIxWUhCd0JaQjFvSFd3Y0hBRmtIWEFkYUJ3Y0FXQWRjQjFrSEJ3QllCMVVIWEFjSEFGMEhYZ2RmQndjQVhRZGdCMTRIQndCaEIySUhZd2NIQUdFSFpBZGlCd2NBWWdkZEIxOEhCd0JpQjJRSFhRY0hBRlVIWlFkbUJ3Y0FWUWRYQjJVSEJ3QmNCMllIWndjSEFGd0hWUWRtQndjQVdnZG5CMmdIQndCYUIxd0had2NIQUdrSGFnZHJCd2NBYVFkc0Iyb0hCd0JzQjIwSGFnY0hBR3dIYmdkdEJ3Y0FiZ2R2QjIwSEJ3QnVCM0FIYndjSEFGOEhXUWRpQndjQVh3ZFlCMWtIQndCV0IxOEhYZ2NIQUZZSFdBZGZCd2NBV1FkakIySUhCd0JaQjFzSFl3Y0hBSEVIV2dkb0J3Y0FjUWR5QjFvSEJ3QnlCMXNIV2djSEFISUhjd2RiQndjQWN3ZGpCMXNIQndCekIzUUhZd2NIQUhRSFlRZGpCd2NBZEFkMUIyRUhCd0IyQjI4SGNBY0hBSFlIZHdkdkJ3Y0FlQWR5QjNFSEJ3QjRCM2tIY2djSEFIa0hjd2R5QndjQWVRZDZCM01IQndCNkIzUUhjd2NIQUhvSGV3ZDBCd2NBZXdkMUIzUUhCd0I3QjN3SGRRY0hBSDBIZHdkMkJ3Y0FmUWQrQjNjSEJ3Qi9CNEFIZ1FjSEFIOEhnZ2VBQndjQWd3ZUJCNFFIQndDREIzOEhnUWNIQUlVSGd3ZUVCd2NBaFFlR0I0TUhCd0NHQjRjSGlBY0hBSVlIaFFlSEJ3Y0FpQWVKQjRvSEJ3Q0lCNGNIaVFjSEFJc0hnQWVDQndjQWl3ZU1CNEFIQndDTkI0d0hpd2NIQUkwSGpnZU1Cd2NBandlT0I0MEhCd0NQQjVBSGpnY0hBSkVIa0FlUEJ3Y0FrUWVTQjVBSEJ3Q1RCNUlIa1FjSEFKTUhsQWVTQndjQWxRZVdCNWNIQndDVkI1Z0hsZ2NIQUprSGx3ZWFCd2NBbVFlVkI1Y0hCd0NiQjVvSG5BY0hBSnNIbVFlYUJ3Y0FuUWVjQjU0SEJ3Q2RCNXNIbkFjSEFKNEhWd2VkQndjQW5nZGxCMWNIQndDTEI1OEhqUWNIQUlzSG9BZWZCd2NBb0FlY0I1OEhCd0NnQjU0SG5BY0hBSUlIb0FlTEJ3Y0FnZ2VoQjZBSEJ3Q2hCNTRIb0FjSEFLRUhaUWVlQndjQWZ3ZWhCNElIQndCL0I2SUhvUWNIQUtJSFpRZWhCd2NBb2dkbUIyVUhCd0NEQjZJSGZ3Y0hBSU1Ib3dlaUJ3Y0Fvd2RtQjZJSEJ3Q2pCMmNIWmdjSEFJWUhvd2VEQndjQWhnZWtCNk1IQndDa0IyY0hvd2NIQUtRSGFBZG5Cd2NBaUFla0I0WUhCd0NJQjZVSHBBY0hBS1VIYUFla0J3Y0FwUWR4QjJnSEJ3Q0tCNlVIaUFjSEFJb0hwZ2VsQndjQXBnZHhCNlVIQndDbUIzZ0hjUWNIQUkwSHB3ZVBCd2NBalFlZkI2Y0hCd0NmQjVvSHB3Y0hBSjhIbkFlYUJ3Y0Fqd2VvQjVFSEJ3Q1BCNmNIcUFjSEFLY0hsd2VvQndjQXB3ZWFCNWNIQndDUkI2a0hrd2NIQUpFSHFBZXBCd2NBcUFlV0I2a0hCd0NvQjVjSGxnY0hBS29IbXdlZEJ3Y0FxZ2VyQjVzSEJ3Q3NCNnNIcWdjSEFLd0hyUWVyQndjQXJRZXVCNnNIQndDdEI2OEhyZ2NIQUs4SHNBZXVCd2NBcndleEI3QUhCd0N4QjdJSHNBY0hBTEVIc3dleUJ3Y0FuUWRXQjZvSEJ3Q2RCMWNIVmdjSEFGNEhxZ2RXQndjQVhnZXNCNm9IQndDMEI3TUhzUWNIQUxRSHRRZXpCd2NBdGdleEI2OEhCd0MyQjdRSHNRY0hBTGNIcndldEJ3Y0F0d2UyQjY4SEJ3QzRCN2tIdWdjSEFMZ0h1d2U1QndjQXZBZTdCN2dIQndDOEI3MEh1d2NIQUw0SHZ3ZkFCd2NBdmdmQkI3OEhCd0NzQjJBSHdnY0hBS3dIWGdkZ0J3Y0F0d2VzQjhJSEJ3QzNCNjBIckFjSEFNTUh4QWZGQndjQXd3ZkdCOFFIQndESEI4Z0h5UWNIQU1jSHlnZklCd2NBeXdmSkI4d0hCd0RMQjhjSHlRY0hBTVlIekFmRUJ3Y0F4Z2ZMQjh3SEJ3RE5CODRIendjSEFNMEgwQWZPQndjQTBRZlNCOU1IQndEUkI5UUgwZ2NIQU1VSGF3ZkRCd2NBeFFkcEIyc0hCd0RWQjlZSDF3Y0hBTlVIMkFmV0J3Y0EyQWZaQjlZSEJ3RFlCOW9IMlFjSEFOc0gyQWZWQndjQTJ3ZmNCOWdIQndEY0I5b0gyQWNIQU53SDNRZmFCd2NBM2dmY0I5c0hCd0RlQjk4SDNBY0hBTjhIM1FmY0J3Y0Ezd2ZnQjkwSEJ3RGhCOThIM2djSEFPRUg0Z2ZmQndjQTRnZmdCOThIQndEaUIrTUg0QWNIQUxrSDRnZmhCd2NBdVFma0IrSUhCd0RrQitNSDRnY0hBT1FINVFmakJ3Y0F1d2ZrQjdrSEJ3QzdCK1lINUFjSEFPWUg1UWZrQndjQTVnZm5CK1VIQndDOUIrWUh1d2NIQUwwSDZBZm1Cd2NBNkFmbkIrWUhCd0RvQitrSDV3Y0hBTUVINmdlL0J3Y0F3UWZyQitvSEJ3RHJCK3dINmdjSEFPc0g3UWZzQndjQTF3ZnVCKzhIQndEWEI5WUg3Z2NIQU5ZSDhBZnVCd2NBMWdmWkIvQUhCd0RYQi9FSDFRY0hBTmNIOGdmeEJ3Y0E3d2Z5QjljSEJ3RHZCL01IOGdjSEFOVUg5QWZiQndjQTFRZnhCL1FIQndEYkIvVUgzZ2NIQU5zSDlBZjFCd2NBM2dmMkIrRUhCd0RlQi9VSDlnY0hBT0VIOXdlNUJ3Y0E0UWYyQi9jSEJ3QzVCL2dIdWdjSEFMa0g5d2Y0QndjQXp3ZjVCODBIQndEUEIvb0grUWNIQUpnSCt3ZVdCd2NBbUFmOEIvc0hCd0Q4Qi9RSCt3Y0hBUHdIOVFmMEJ3Y0EvUWYxQi93SEJ3RDlCL1lIOVFjSEFMTUgvUWV5QndjQXN3ZitCLzBIQndEK0IvWUgvUWNIQVA0SDl3ZjJCd2NBdFFmK0I3TUhCd0MxQi84SC9nY0hBUDhIOXdmK0J3Y0Evd2Y0Qi9jSEJ3REtCd0FJeUFjSEFNb0hBUWdBQ0FjQUFRajZCd0FJQndBQkNQa0grZ2NIQUpZSEFnaXBCd2NBbGdmN0J3SUlCd0Q3Qi9FSEFnZ0hBUHNIOUFmeEJ3Y0FxUWNEQ0pNSEJ3Q3BCd0lJQXdnSEFBSUk4Z2NEQ0FjQUFnanhCL0lIQndDVEJ3UUlsQWNIQUpNSEF3Z0VDQWNBQXdqekJ3UUlCd0FEQ1BJSDh3Y0hBQVVJcXdldUJ3Y0FCUWliQjZzSEJ3QUdDQWNJQ0FnSEFBWUlDUWdIQ0FjQUNnZ0xDQXdJQndBS0NBMElDd2dIQUE0SUNRZ0dDQWNBRGdnUENBa0lCd0FMQ0JBSURBZ0hBQXNJRVFnUUNBY0FFZ2dQQ0E0SUJ3QVNDQk1JRHdnSEFCRUlGQWdRQ0FjQUVRZ1ZDQlFJQndBV0NCTUlFZ2dIQUJZSUZ3Z1RDQWNBR0FnV0NCa0lCd0FZQ0JjSUZnZ0hBQlVJR1FnVUNBY0FGUWdZQ0JrSUJ3QVlDQm9JRndnSEFCZ0lHd2dhQ0FjQUZRZ2JDQmdJQndBVkNCd0lHd2dIQUJFSUhBZ1ZDQWNBRVFnZENCd0lCd0FMQ0IwSUVRZ0hBQXNJSGdnZENBY0FEUWdmQ0NBSUJ3QU5DQWNJSHdnSEFBa0lId2dIQ0FjQUNRZ2hDQjhJQndBUENDRUlDUWdIQUE4SUlnZ2hDQWNBRXdnaUNBOElCd0FUQ0NNSUlnZ0hBQmNJSXdnVENBY0FGd2dhQ0NNSUJ3RDlCeVFJc2djSEFQMEhKUWdrQ0FjQUpRZ2NDQ1FJQndBbENCc0lIQWdIQVB3SEpRajlCd2NBL0FjbUNDVUlCd0FtQ0JzSUpRZ0hBQ1lJR2dnYkNBY0FtQWNtQ1B3SEJ3Q1lCeWNJSmdnSEFDY0lHZ2dtQ0FjQUp3Z2pDQm9JQndDVkJ5Y0ltQWNIQUpVSEtBZ25DQWNBS0FnakNDY0lCd0FvQ0NJSUl3Z0hBSmtIS0FpVkJ3Y0FtUWNwQ0NnSUJ3QXBDQ0lJS0FnSEFDa0lJUWdpQ0FjQW13Y3BDSmtIQndDYkJ5b0lLUWdIQUNvSUlRZ3BDQWNBS2dnZkNDRUlCd0FGQ0NzSUxBZ0hBQVVJcmdjckNBY0FMQWdmQ0NvSUJ3QXNDQ0FJSHdnSEFMQUhLd2l1QndjQXNBY3RDQ3NJQndBdENCNElLd2dIQUMwSUhRZ2VDQWNBc2djdENMQUhCd0N5QnlRSUxRZ0hBQ1FJSFFndENBY0FKQWdjQ0IwSUJ3QXVDSVFIZ1FjSEFDNElMd2lFQndjQU1BaUJCNEFIQndBd0NDNElnUWNIQURFSWdBZU1Cd2NBTVFnd0NJQUhCd0F5Q0l3SGpnY0hBRElJTVFpTUJ3Y0FNd2lPQjVBSEJ3QXpDRElJamdjSEFEUUlMd2d1Q0FjQU5BZzFDQzhJQndBMkNDNElNQWdIQURZSU5BZ3VDQWNBTndnd0NERUlCd0EzQ0RZSU1BZ0hBRGdJTVFneUNBY0FPQWczQ0RFSUJ3QTVDRElJTXdnSEFEa0lPQWd5Q0FjQWh3ZUVCeThJQndDSEI0VUhoQWNIQURVSWh3Y3ZDQWNBTlFpSkI0Y0hCd0E2Q0pJSGxBY0hBRG9JT3dpU0J3Y0FQQWlVQndRSUJ3QThDRG9JbEFjSEFEMElCQWp6QndjQVBRZzhDQVFJQndBK0NPOEg3Z2NIQUQ0SVB3anZCd2NBUHdqekIrOEhCd0EvQ0QwSTh3Y0hBRUFJN2dmd0J3Y0FRQWcrQ080SEJ3QkJDRHNJT2dnSEFFRUlRZ2c3Q0FjQVF3ZzZDRHdJQndCRENFRUlPZ2dIQUVRSVBBZzlDQWNBUkFoRENEd0lCd0JGQ0QwSVB3Z0hBRVVJUkFnOUNBY0FSZ2cvQ0Q0SUJ3QkdDRVVJUHdnSEFFY0lQZ2hBQ0FjQVJ3aEdDRDRJQndBekNKSUhPd2dIQURNSWtBZVNCd2NBT1FnN0NFSUlCd0E1Q0RNSU93Z0hBRWdJd0FkSkNBY0FTQWkrQjhBSEJ3QktDRXNJVEFnSEFFb0lUUWhMQ0FjQVRnaEpDRThJQndCT0NFZ0lTUWdIQUZBSVRBaFJDQWNBVUFoS0NFd0lCd0JTQ01BSHZ3Y0hBRklJVXdqQUJ3Y0FWQWhTQ0ZVSUJ3QlVDRk1JVWdnSEFGWUl2d2ZxQndjQVZnaFNDTDhIQndCU0NGY0lWUWdIQUZJSVZnaFhDQWNBNmdkWUNGWUlCd0RxQit3SFdBZ0hBRllJV1FoWENBY0FWZ2hZQ0ZrSUJ3QlRDRWtJd0FjSEFGTUlXZ2hKQ0FjQVd3aFRDRlFJQndCYkNGb0lVd2dIQUZvSVR3aEpDQWNBV2doY0NFOElCd0JkQ0ZvSVd3Z0hBRjBJWEFoYUNBY0FYZ2hmQ0dBSUJ3QmVDR0VJWHdnSEFHRUkwZ2RmQ0FjQVlRalRCOUlIQndDNkIySUl1QWNIQUxvSFl3aGlDQWNBWXdqT0IySUlCd0JqQ004SHpnY0hBUGdIWXdpNkJ3Y0ErQWRrQ0dNSUJ3QmtDTThIWXdnSEFHUUkrZ2ZQQndjQS93ZGtDUGdIQndEL0IyVUlaQWdIQUdVSStnZGtDQWNBWlFnQUNQb0hCd0MxQjJVSS93Y0hBTFVIWmdobENBY0FaZ2dBQ0dVSUJ3Qm1DTWdIQUFnSEFMUUhaZ2kxQndjQXRBZG5DR1lJQndCbkNNZ0haZ2dIQUdjSXlRZklCd2NBdGdkbkNMUUhCd0MyQjJnSVp3Z0hBR2dJeVFkbkNBY0FhQWpNQjhrSEJ3QzNCMmdJdGdjSEFMY0hhUWhvQ0FjQWFRak1CMmdJQndCcENNUUh6QWNIQU1JSGFRaTNCd2NBd2dkcUNHa0lCd0JxQ01RSGFRZ0hBR29JeFFmRUJ3Y0FZQWRxQ01JSEJ3QmdCMnNJYWdnSEFHc0l4UWRxQ0FjQWF3aHBCOFVIQndCZEIyc0lZQWNIQUYwSGJBaHJDQWNBYkFocEIyc0lCd0JzQ0d3SGFRY0hBR1FIYkFoZEJ3Y0FaQWR0Q0d3SUJ3QnRDR3dIYkFnSEFHMEliZ2RzQndjQVlRZHRDR1FIQndCaEIyNEliUWdIQUc0SWJnZHRDQWNBYmdod0IyNEhCd0IxQjI0SVlRY0hBSFVIYndodUNBY0Fid2h3QjI0SUJ3QnZDSFlIY0FjSEFId0hid2gxQndjQWZBZHdDRzhJQndCd0NIWUhid2dIQUhBSWZRZDJCd2NBVkFoeENGc0lCd0JVQ0hJSWNRZ0hBSElJU2doeENBY0FjZ2hOQ0VvSUJ3QmJDSE1JWFFnSEFGc0ljUWh6Q0FjQWNRaFFDSE1JQndCeENFb0lVQWdIQUZVSWRBaFVDQWNBVlFoMUNIUUlCd0JOQ0hZSVN3Z0hBRTBJZHdoMkNBY0FkUWhYQ0hnSUJ3QjFDRlVJVndnSEFIZ0lXUWg1Q0FjQWVBaFhDRmtJQndCVUNIb0ljZ2dIQUZRSWRBaDZDQWNBY2doM0NFMElCd0J5Q0hvSWR3Z0hBSFVJZXdoMENBY0FkUWg4Q0hzSUJ3QjlDSHdJZmdnSEFIMElld2g4Q0FjQWZ3aUFDSUVJQndCL0NJSUlnQWdIQUlNSWhBaUZDQWNBZ3dpR0NJUUlCd0IxQ0ljSWZBZ0hBSFVJZUFpSENBY0FmQWlJQ0g0SUJ3QjhDSWNJaUFnSEFIZ0lpUWlIQ0FjQWVBaDVDSWtJQndDSENJb0lpQWdIQUljSWlRaUtDQWNBaXdpTUNJMElCd0NMQ0k0SWpBZ0hBSThJZXdoOUNBY0Fqd2lRQ0hzSUJ3Q05DSVlJZ3dnSEFJMElqQWlHQ0FjQWZ3aVFDSThJQndCL0NJRUlrQWdIQUg0SWtRaDlDQWNBZmdpU0NKRUlCd0IvQ0pNSWdnZ0hBSDhJbEFpVENBY0FrZ2lJQ0pVSUJ3Q1NDSDRJaUFnSEFKVUlpZ2lXQ0FjQWxRaUlDSW9JQndCOUNKY0lqd2dIQUgwSWtRaVhDQWNBandpVUNIOElCd0NQQ0pjSWxBZ0hBSklJbUFpUkNBY0FrZ2laQ0pnSUJ3QzhCNWtJdlFjSEFMd0htQWlaQ0FjQW1naWJDSndJQndDYUNKMEltd2dIQUpRSW13aVRDQWNBbEFpY0NKc0lCd0NTQ0o0SW1RZ0hBSklJbFFpZUNBY0FtUWpvQjcwSEJ3Q1pDSjRJNkFjSEFKVUlud2llQ0FjQWxRaVdDSjhJQndDZUNPa0g2QWNIQUo0SW53anBCd2NBa1FpZ0NKY0lCd0NSQ0pnSW9BZ0hBS0VJbUFpOEJ3Y0FvUWlnQ0pnSUJ3Q1hDSndJbEFnSEFKY0lvQWljQ0FjQW1naWdDS0VJQndDYUNKd0lvQWdIQUowSTBnZlVCd2NBblFpYUNOSUhCd0RRQjlRSDBRY0hBTkFIblFqVUJ3Y0Ewd2ZRQjlFSEJ3RFRCODRIMEFjSEFLRUlZQWhmQ0FjQW9RaThCMkFJQndCZUNHSUlZUWdIQUY0SXVBZGlDQWNBWUFpNEIxNElCd0JnQ0x3SHVBY0hBSm9JWHdqU0J3Y0FtZ2loQ0Y4SUJ3QmhDTTRIMHdjSEFHRUlZZ2pPQndjQWdBaUZDSVFJQndDQUNIWUloUWdIQUlZSWdBaUVDQWNBaGdpQkNJQUlCd0IyQ0lNSWhRZ0hBSFlJZHdpRENBY0FqZ2lRQ0l3SUJ3Q09DSHNJa0FnSEFJc0lld2lPQ0FjQWl3aDBDSHNJQndCNkNJc0lqUWdIQUhvSWRBaUxDQWNBakFpQkNJWUlCd0NNQ0pBSWdRZ0hBSGNJalFpRENBY0Fkd2g2Q0kwSUJ3Q2lDT1VGVkFjSEFLSUk3QVhsQlFjQW93anNCYUlJQndDakNPMEY3QVVIQUtRSTdRV2pDQWNBcEFqdUJlMEZCd0NsQ080RnBBZ0hBS1VJN3dYdUJRY0FwUWpjQmU4RkJ3Q2xDUEFGM0FVSEFLWUk4UVh3QlFjQXBnaW5DUEVGQndEeEJhZ0k4Z1VIQVBFRnB3aW9DQWNBOGdXcENQTUZCd0R5QmFnSXFRZ0hBUE1GcWdqMEJRY0E4d1dwQ0tvSUJ3RDdCYW9JcXdnSEFQc0Y5QVdxQ0FjQS9BV3JDS3dJQndEOEJmc0Zxd2dIQUZRSHJBaXRDQWNBVkFmOEJhd0lCd0N1Q0ZRSHJRZ0hBSzRJb2doVUJ3Y0Fyd2lpQ0s0SUJ3Q3ZDS01Jb2dnSEFMQUlvd2l2Q0FjQXNBaWtDS01JQndDd0NLVUlwQWdIQUxBSXNRaWxDQWNBc1Fqd0JhVUlCd0N4Q0tZSThBVUhBTElJcHdpbUNBY0FzZ2l6Q0tjSUJ3Q25DTFFJcUFnSEFLY0lzd2kwQ0FjQXFBaTFDS2tJQndDb0NMUUl0UWdIQUtrSXRnaXFDQWNBcVFpMUNMWUlCd0NxQ0xjSXF3Z0hBS29JdGdpM0NBY0Fxd2k0Q0t3SUJ3Q3JDTGNJdUFnSEFLd0l1UWl0Q0FjQXJBaTRDTGtJQndDNUNLNElyUWdIQUxrSXVnaXVDQWNBdWdpdkNLNElCd0M2Q0xzSXJ3Z0hBTHNJc0FpdkNBY0F1d2k4Q0xBSUJ3QzhDTEVJc0FnSEFMd0l2UWl4Q0FjQXZRaW1DTEVJQndDOUNMSUlwZ2dIQUw0SXZ3akFDQWNBdmdqQkNMOElCd0MvQ01JSXd3Z0hBTDhJd1FqQ0NBY0F3d2pFQ01VSUJ3RERDTUlJeEFnSEFNVUl4Z2pIQ0FjQXhRakVDTVlJQndESENNZ0l5UWdIQU1jSXhnaklDQWNBeVFqS0NNc0lCd0RKQ01nSXlnZ0hBTXNJekFqTkNBY0F5d2pLQ013SUJ3RE1DTTRJelFnSEFNd0l6d2pPQ0FjQXp3alFDTTRJQndEUENORUkwQWdIQU5FSTBnalFDQWNBMFFqVENOSUlCd0RUQ05RSTBnZ0hBTk1JMVFqVUNBY0ExUWpBQ05RSUJ3RFZDTDRJd0FnSEFOWUl2Z2pYQ0FjQTFnakJDTDRJQndEQ0NOWUkyQWdIQU1JSXdRaldDQWNBeEFqWUNOa0lCd0RFQ01JSTJBZ0hBTVFJMmdqR0NBY0F4QWpaQ05vSUJ3REdDTnNJeUFnSEFNWUkyZ2piQ0FjQXlBamNDTW9JQndESUNOc0kzQWdIQU1vSTNRak1DQWNBeWdqY0NOMElCd0RkQ004SXpBZ0hBTjBJM2dqUENBY0EzZ2pSQ004SUJ3RGVDTjhJMFFnSEFOOEkwd2pSQ0FjQTN3amdDTk1JQndEZ0NOVUkwd2dIQU9BSTRRalZDQWNBMXdqVkNPRUlCd0RYQ0w0STFRZ0hBTmtJMWdqWENBY0EyUWpZQ05ZSUJ3RGFDTmNJNFFnSEFOb0kyUWpYQ0FjQTJ3amhDT0FJQndEYkNOb0k0UWdIQU5zSTNRamNDQWNBMndqZ0NOMElCd0RnQ040STNRZ0hBT0FJM3dqZUNBY0E0Z2pqQ09RSUJ3RGlDT1VJNHdnSEFMa0k1Z2k2Q0FjQXVRam5DT1lJQndDNENPY0l1UWdIQUxnSTZBam5DQWNBdHdqb0NMZ0lCd0MzQ09rSTZBZ0hBTFlJNlFpM0NBY0F0Z2pxQ09rSUJ3QzFDT29JdGdnSEFMVUk2d2pxQ0FjQXRBanJDTFVJQndDMENPd0k2d2dIQUxNSTdBaTBDQWNBc3dqdENPd0lCd0N5Q08wSXN3Z0hBTElJN2dqdENBY0E3d2p3Q1BFSUJ3RHZDUElJOEFnSEFQTUk4Z2p2Q0FjQTh3ajBDUElJQndEa0NQUUk4d2dIQU9RSTR3ajBDQWNBNVFqMUNPTUlCd0RsQ1BZSTlRZ0hBUFlJOXdqMUNBY0E5Z2o0Q1BjSUJ3RG5DUGtJNWdnSEFPY0krZ2o1Q0FjQStnak9DUGtJQndENkNNMEl6Z2dIQU9nSStnam5DQWNBNkFqN0NQb0lCd0Q3Q00wSStnZ0hBUHNJeXdqTkNBY0E2UWo3Q09nSUJ3RHBDUHdJK3dnSEFQd0l5d2o3Q0FjQS9BakpDTXNJQndEcUNQd0k2UWdIQU9vSS9RajhDQWNBL1FqSkNQd0lCd0Q5Q01jSXlRZ0hBT3NJL1FqcUNBY0E2d2orQ1AwSUJ3RCtDTWNJL1FnSEFQNEl4UWpIQ0FjQTdBaitDT3NJQndEc0NQOEkvZ2dIQVA4SXhRaitDQWNBL3dqRENNVUlCd0R0Q1A4STdBZ0hBTzBJQUFuL0NBY0FBQW5EQ1A4SUJ3QUFDYjhJd3dnSEFPNElBQW50Q0FjQTdnZ0JDUUFKQndBQkNiOElBQWtIQUFFSndBaS9DQWNBOGdnQ0NmQUlCd0R5Q0FNSkFna0hBQU1KQkFrQ0NRY0FBd2tGQ1FRSkJ3RDBDQU1KOGdnSEFQUUlCZ2tEQ1FjQUJna0ZDUU1KQndBR0NRY0pCUWtIQU9NSUJnbjBDQWNBNHdqMUNBWUpCd0QxQ0FjSkJna0hBUFVJOXdnSENRY0E0Z2dJQ1FrSkJ3RGlDT1FJQ0FrSEFQY0lDZ2tMQ1FjQTl3ajRDQW9KQndEa0NBd0pDQWtIQU9RSTh3Z01DUWNBQndrTENRMEpCd0FIQ2ZjSUN3a0hBUE1JRGdrTUNRY0E4d2p2Q0E0SkJ3QUZDUTBKRHdrSEFBVUpCd2tOQ1FjQTd3Z1FDUTRKQndEdkNQRUlFQWtIQUFRSkR3a1JDUWNBQkFrRkNROEpCd0RpQ0JJSjVRZ0hBT0lJQ1FrU0NRY0FFd254Q1BBSUJ3QVRDUkFKOFFnSEFPVUlGQW4yQ0FjQTVRZ1NDUlFKQndEMkNBb0orQWdIQVBZSUZBa0tDUWNBRlFud0NBSUpCd0FWQ1JNSjhBZ0hBQkVKQWdrRUNRY0FFUWtWQ1FJSkJ3QVdDYnNJdWdnSEFCWUpGd203Q0FjQTBBZ1lDYzRJQndEUUNCa0pHQWtIQUJjSnZBaTdDQWNBRndrYUNid0lCd0RTQ0JrSjBBZ0hBTklJR3drWkNRY0F2QWdjQ2IwSUJ3QzhDQm9KSEFrSEFCMEowZ2pVQ0FjQUhRa2JDZElJQndDOUNCNEpzZ2dIQUwwSUhBa2VDUWNBSHduVUNNQUlCd0FmQ1IwSjFBZ0hBT1lJRmdtNkNBY0E1Z2dnQ1JZSkJ3Q3lDQ0VKN2dnSEFMSUlIZ2toQ1FjQStRZ2dDZVlJQndENUNDSUpJQWtIQU00SUlnbjVDQWNBemdnWUNTSUpCd0R1Q0NNSkFRa0hBTzRJSVFrakNRY0FBUWtmQ2NBSUJ3QUJDU01KSHdrSEFBa0pKQWtsQ1FjQUNRa0lDU1FKQndBV0NTUUpGd2tIQUJZSkpRa2tDUWNBSmdrS0NTY0pCd0FtQ1FzSkNna0hBQmtKSndrWUNRY0FHUWttQ1NjSkJ3QUlDU2dKSkFrSEFBZ0pEQWtvQ1FjQUZ3a29DUm9KQndBWENTUUpLQWtIQUEwSkpna3BDUWNBRFFrTENTWUpCd0FiQ1NZSkdRa0hBQnNKS1FrbUNRY0FEQWtxQ1NnSkJ3QU1DUTRKS2drSEFCb0pLZ2tjQ1FjQUdna29DU29KQndBUENTa0pLd2tIQUE4SkRRa3BDUWNBSFFrcENSc0pCd0FkQ1NzSktRa0hBQ29KRUFrc0NRY0FLZ2tPQ1JBSkJ3QWNDU3dKSGdrSEFCd0pLZ2tzQ1FjQUVRa3JDUzBKQndBUkNROEpLd2tIQUI4Skt3a2RDUWNBSHdrdENTc0pCd0F1Q1JZSklBa0hBQzRKSlFrV0NRY0FDUWt1Q1JJSkJ3QUpDU1VKTGdrSEFCNEpMd2toQ1FjQUhna3NDUzhKQndBVENTd0pFQWtIQUJNSkx3a3NDUWNBTUFrZ0NTSUpCd0F3Q1M0SklBa0hBQklKTUFrVUNRY0FFZ2t1Q1RBSkJ3QW5DU0lKR0FrSEFDY0pNQWtpQ1FjQUZBa25DUW9KQndBVUNUQUpKd2tIQUNFSk1Ra2pDUWNBSVFrdkNURUpCd0FWQ1M4SkV3a0hBQlVKTVFrdkNRY0FJd2t0Q1I4SkJ3QWpDVEVKTFFrSEFCRUpNUWtWQ1FjQUVRa3RDVEVKQndBeUNUTUpOQWtIQURJSk5Ra3pDUWNBTmdrM0NUZ0pCd0EyQ1RrSk53a0hBRG9KTkFrN0NRY0FPZ2t5Q1RRSkJ3QThDVG9KT3drSEFEd0pQUWs2Q1FjQU9BaytDVDhKQndBNENUY0pQZ2tIQUQ0SlFBay9DUWNBUGdsQkNVQUpCd0F5Q1VJSk5Ra0hBRElKUXdsQ0NRY0FPUWxFQ1RjSkJ3QTVDVVVKUkFrSEFEb0pRd2t5Q1FjQU9nbEdDVU1KQndCSENUb0pQUWtIQUVjSlJnazZDUWNBUkFrK0NUY0pCd0JFQ1VnSlBna0hBRDRKU1FsQkNRY0FQZ2xJQ1VrSkJ3QkRDVW9KUWdrSEFFTUpTd2xLQ1FjQVJRbE1DVVFKQndCRkNVMEpUQWtIQUVZSlN3bERDUWNBUmdsT0NVc0pCd0JIQ1U0SlJna0hBRWNKVHdsT0NRY0FSQWxRQ1VnSkJ3QkVDVXdKVUFrSEFFZ0pVUWxKQ1FjQVNBbFFDVkVKQndCTENWSUpTZ2tIQUVzSlV3bFNDUWNBVFFsVUNVd0pCd0JOQ1ZVSlZBa0hBRTRKVXdsTENRY0FUZ2xXQ1ZNSkJ3QlBDVllKVGdrSEFFOEpWd2xXQ1FjQVRBbFlDVkFKQndCTUNWUUpXQWtIQUZBSldRbFJDUWNBVUFsWUNWa0pCd0JUQ1ZvSlVna0hBRk1KV3dsYUNRY0FWUWxjQ1ZRSkJ3QlZDVjBKWEFrSEFGWUpXd2xUQ1FjQVZnbGVDVnNKQndCWENWNEpWZ2tIQUZjSlh3bGVDUWNBVkFsZ0NWZ0pCd0JVQ1Z3SllBa0hBRmdKWVFsWkNRY0FXQWxnQ1dFSkJ3QmlDV01KWkFrSEFHSUpaUWxqQ1FjQVpnbG5DV2dKQndCbUNXa0pad2tIQUdRSmFnbHJDUWNBWkFsakNXb0pCd0JyQ1d3SmJRa0hBR3NKYWdsc0NRY0FiZ2xwQ1dZSkJ3QnVDVzhKYVFrSEFIQUpid2x1Q1FjQWNBbHhDVzhKQndCeUNUZ0pjd2tIQUhJSk5nazRDUWNBZEFrMkNYSUpCd0IwQ1RrSk5na0hBSFVKT1FsMENRY0FkUWxGQ1RrSkJ3QjJDVVVKZFFrSEFIWUpUUWxGQ1FjQWR3bE5DWFlKQndCM0NWVUpUUWtIQUhnSlZRbDNDUWNBZUFsZENWVUpCd0I1Q1djSmVna0hBSGtKYUFsbkNRY0Fld2xvQ1hrSkJ3QjdDV1lKYUFrSEFId0paZ2w3Q1FjQWZBbHVDV1lKQndCOUNXNEpmQWtIQUgwSmNBbHVDUWNBZmdsd0NYMEpCd0IrQ1hFSmNBa0hBSDhKWVFtQUNRY0Fmd2xaQ1dFSkJ3Q0JDVmtKZndrSEFJRUpVUWxaQ1FjQWdnbFJDWUVKQndDQ0NVa0pVUWtIQUlNSlNRbUNDUWNBZ3dsQkNVa0pCd0NFQ1VFSmd3a0hBSVFKUUFsQkNRY0FoUWxBQ1lRSkJ3Q0ZDVDhKUUFrSEFITUpQd21GQ1FjQWN3azRDVDhKQndBekNZWUpOQWtIQURNSmh3bUdDUWNBaHdsekNZWUpCd0NIQ1hJSmN3a0hBRFVKaHdrekNRY0FOUW1JQ1ljSkJ3Q0lDWElKaHdrSEFJZ0pkQWx5Q1FjQVFnbUlDVFVKQndCQ0NZa0ppQWtIQUlrSmRBbUlDUWNBaVFsMUNYUUpCd0JLQ1lrSlFna0hBRW9KaWdtSkNRY0FpZ2wxQ1lrSkJ3Q0tDWFlKZFFrSEFGSUppZ2xLQ1FjQVVnbUxDWW9KQndDTENYWUppZ2tIQUlzSmR3bDJDUWNBV2dtTENWSUpCd0JhQ1l3Sml3a0hBSXdKZHdtTENRY0FqQWw0Q1hjSkJ3QmlDWTBKWlFrSEFHSUpqZ21OQ1FjQWpnbDZDWTBKQndDT0NYa0plZ2tIQUdRSmpnbGlDUWNBWkFtUENZNEpCd0NQQ1hrSmpna0hBSThKZXdsNUNRY0Fhd21QQ1dRSkJ3QnJDWkFKandrSEFKQUpld21QQ1FjQWtBbDhDWHNKQndCdENaQUphd2tIQUcwSmtRbVFDUWNBa1FsOENaQUpCd0NSQ1gwSmZBa0hBR3dKa1FsdENRY0FiQW1TQ1pFSkJ3Q1NDWDBKa1FrSEFKSUpmZ2w5Q1FjQVZ3bVRDVjhKQndCWENaUUprd2tIQUpRSmdBbVRDUWNBbEFsL0NZQUpCd0JQQ1pRSlZ3a0hBRThKbFFtVUNRY0FsUWwvQ1pRSkJ3Q1ZDWUVKZndrSEFFY0psUWxQQ1FjQVJ3bVdDWlVKQndDV0NZRUpsUWtIQUpZSmdnbUJDUWNBUFFtV0NVY0pCd0E5Q1pjSmxna0hBSmNKZ2dtV0NRY0Fsd21EQ1lJSkJ3QThDWmNKUFFrSEFEd0ptQW1YQ1FjQW1BbURDWmNKQndDWUNZUUpnd2tIQURzSm1BazhDUWNBT3dtWkNaZ0pCd0NaQ1lRSm1Ba0hBSmtKaFFtRUNRY0FOQW1aQ1RzSkJ3QTBDWVlKbVFrSEFJWUpoUW1aQ1FjQWhnbHpDWVVKQndDYUNWb0pXd2tIQUpvSm13bGFDUWNBWEFtY0NaMEpCd0JjQ1YwSm5Ba0hBSm9KWGdtZUNRY0FtZ2xiQ1Y0SkJ3Q2VDVjhKbndrSEFKNEpYZ2xmQ1FjQVlBbWRDYUFKQndCZ0NWd0puUWtIQUdFSm9BbWhDUWNBWVFsZ0NhQUpCd0JkQ2FJSm5Ba0hBRjBKZUFtaUNRY0Fvd2xoQ2FFSkJ3Q2pDWUFKWVFrSEFJd0ptd21rQ1FjQWpBbGFDWnNKQndDTUNhSUplQWtIQUl3SnBBbWlDUWNBbndtVENhVUpCd0NmQ1Y4Smt3a0hBS01Ka3dtQUNRY0Fvd21sQ1pNSkJ3Q21DWnNKbWdrSEFLWUpwd21iQ1FjQXB3bGpDV1VKQndDbkNhWUpZd2tIQUdjSnFBbXBDUWNBWndscENhZ0pCd0NjQ2FnSm5Ra0hBSndKcVFtb0NRY0FxZ2xqQ2FZSkJ3Q3FDV29KWXdrSEFKNEpwZ21hQ1FjQW5nbXFDYVlKQndDcUNaOEpxd2tIQUtvSm5nbWZDUWNBcXdscUNhb0pCd0NyQ1d3SmFna0hBR2tKckFtb0NRY0FhUWx2Q2F3SkJ3Q2RDYXdKb0FrSEFKMEpxQW1zQ1FjQXJRbWdDYXdKQndDdENhRUpvQWtIQUhFSnJBbHZDUWNBY1FtdENhd0pCd0JuQ2E0SmVna0hBR2NKcVFtdUNRY0FvZ21wQ1p3SkJ3Q2lDYTRKcVFrSEFLMEpmZ212Q1FjQXJRbHhDWDRKQndDdENhTUpvUWtIQUswSnJ3bWpDUWNBWlFtd0NhY0pCd0JsQ1kwSnNBa0hBSnNKc0Fta0NRY0Ftd21uQ2JBSkJ3Q3VDYVFKc0FrSEFLNEpvZ21rQ1FjQWpRbXVDYkFKQndDTkNYb0pyZ2tIQUxFSmJBbXJDUWNBc1FtU0NXd0pCd0NsQ2FzSm53a0hBS1VKc1FtckNRY0FwUW12Q2JFSkJ3Q2xDYU1KcndrSEFMRUpmZ21TQ1FjQXNRbXZDWDRKQndDeUNiTUp0QWtIQUxJSnRRbXpDUWNBdGdtM0NiZ0pCd0MyQ2JrSnR3a0hBTFFKdWdtN0NRY0F0QW16Q2JvSkJ3QzhDYm9KdlFrSEFMd0p1d202Q1FjQXVBbStDYjhKQndDNENiY0p2Z2tIQU1BSnZnbkJDUWNBd0FtL0NiNEpCd0MyQ2NJSnVRa0hBTFlKd3duQ0NRY0F3UW5FQ2NBSkJ3REJDY1VKeEFrSEFNWUp0Z200Q1FjQXhnbkRDYllKQndDNUNjY0p0d2tIQUxrSndnbkhDUWNBeUFuSkNjb0pCd0RJQ2NzSnlRa0hBTXdKelFuT0NRY0F6QW5QQ2MwSkJ3RFFDZEVKMGdrSEFOQUowd25SQ1FjQTFBblZDZFlKQndEVUNkY0oxUWtIQU5nSnlnblpDUWNBMkFuSUNjb0pCd0RPQ2RvSjJ3a0hBTTRKelFuYUNRY0EwZ25jQ2QwSkJ3RFNDZEVKM0FrSEFONEoxZ25mQ1FjQTNnblVDZFlKQndETENlQUp5UWtIQU1zSjRRbmdDUWNBNGduakNlUUpCd0RpQ2VVSjR3a0hBT0VKNWduZ0NRY0E0UW5uQ2VZSkJ3RFFDZWNKMHdrSEFOQUo1Z25uQ1FjQTZBbmpDZVVKQndEb0Nla0o0d2tIQU9vSjZBbnJDUWNBNmducENlZ0pCd0RrQ2V3SjRna0hBT1FKN1Fuc0NRY0E3Z250Q2U4SkJ3RHVDZXdKN1FrSEFQQUp5Z25KQ1FjQThBbnhDY29KQndET0NmQUp6QWtIQU00SjhRbndDUWNBeUFueUNjc0pCd0RJQ2ZNSjhna0hBTThKOHduTkNRY0F6d255Q2ZNSkJ3RHhDZGtKeWdrSEFQRUo5QW5aQ1FjQTJ3bnhDYzRKQndEYkNmUUo4UWtIQU5nSjh3bklDUWNBMkFuMUNmTUpCd0ROQ2ZVSjJna0hBTTBKOHduMUNRY0E2d24yQ2VvSkJ3RHJDZmNKOWdrSEFOTUorQW5SQ1FjQTB3bjVDZmdKQndEU0Nmb0owQWtIQU5JSit3bjZDUWNBMFFuOENkd0pCd0RSQ2ZnSi9Ba0hBTjBKK3duU0NRY0EzUW45Q2ZzSkJ3RCtDZjhKQUFvSEFQNEpBUXIvQ1FjQUFRclhDZjhKQndBQkN0VUoxd2tIQU9zSkFncjNDUWNBNndrRENnSUtCd0FEQ3ZvSkFnb0hBQU1LMEFuNkNRY0E2QWtEQ3VzSkJ3RG9DUVFLQXdvSEFBUUswQWtEQ2djQUJBcm1DZEFKQndEbENRUUs2QWtIQU9VSkJRb0VDZ2NBQlFybUNRUUtCd0FGQ3VBSjVna0hBT0lKQlFybENRY0E0Z2tHQ2dVS0J3QUdDdUFKQlFvSEFBWUt5UW5nQ1FjQTdBa0dDdUlKQndEc0NRY0tCZ29IQUFjS3lRa0dDZ2NBQndyd0Nja0pCd0R1Q1FjSzdBa0hBTzRKQ0FvSENnY0FDQXJ3Q1FjS0J3QUlDc3dKOEFrSEFPOEpDQXJ1Q1FjQTd3a0pDZ2dLQndBSkNzd0pDQW9IQUFrS3p3bk1DUWNBN1FrSkN1OEpCd0R0Q1FvS0NRb0hBQW9LendrSkNnY0FDZ3J5Q2M4SkJ3RGtDUW9LN1FrSEFPUUpDd29LQ2djQUN3cnlDUW9LQndBTENzc0o4Z2tIQU9NSkN3cmtDUWNBNHdrTUNnc0tCd0FNQ3NzSkN3b0hBQXdLNFFuTENRY0E2UWtNQ3VNSkJ3RHBDUTBLREFvSEFBMEs0UWtNQ2djQURRcm5DZUVKQndEcUNRMEs2UWtIQU9vSkRnb05DZ2NBRGdybkNRMEtCd0FPQ3RNSjV3a0hBUFlKRGdycUNRY0E5Z2tQQ2c0S0J3QVBDdE1KRGdvSEFBOEsrUW5UQ1FjQUVBb1JDaElLQndBUUNoTUtFUW9IQUJRS0ZRb1dDZ2NBRkFvWENoVUtCd0FZQ2hrS0dnb0hBQmdLR3dvWkNnY0FGUW9jQ2gwS0J3QVZDaGNLSEFvSEFCNEtHd29ZQ2djQUhnb2ZDaHNLQndBZ0NoTUtFQW9IQUNBS0lRb1RDZ2NBR2dvaENpQUtCd0FhQ2hrS0lRb0hBQklLSWdvakNnY0FFZ29SQ2lJS0J3QVdDaUlLRkFvSEFCWUtJd29pQ2djQUpBb1JDaE1LQndBa0NpVUtFUW9IQUJJS0pnb1FDZ2NBRWdvbkNpWUtCd0FvQ2hZS0ZRb0hBQ2dLS1FvV0NnY0FGQW9xQ2hjS0J3QVVDaXNLS2dvSEFDd0tHUW9iQ2djQUxBb3RDaGtLQndBYUNpNEtHQW9IQUJvS0x3b3VDZ2NBSEFvd0NoMEtCd0FjQ2pFS01Bb0hBQmNLTVFvY0NnY0FGd29xQ2pFS0J3QXdDaFVLSFFvSEFEQUtLQW9WQ2djQU1nb2JDaDhLQndBeUNpd0tHd29IQURNS0h3b2VDZ2NBTXdveUNoOEtCd0FZQ2pNS0hnb0hBQmdLTGdvekNnY0FOQW9UQ2lFS0J3QTBDaVFLRXdvSEFCQUtOUW9nQ2djQUVBb21DalVLQndBdENpRUtHUW9IQUMwS05Bb2hDZ2NBSUFvdkNob0tCd0FnQ2pVS0x3b0hBQkVLTmdvaUNnY0FFUW9sQ2pZS0J3QTNDaElLSXdvSEFEY0tKd29TQ2djQUlnb3JDaFFLQndBaUNqWUtLd29IQUNrS0l3b1dDZ2NBS1FvM0NpTUtCd0QyQ1RnS09Rb0hBUFlKOXdrNENnY0FKZ281Q2pnS0J3QW1DaWNLT1FvSEFEb0tLUW9vQ2djQU9nbzdDaWtLQndBN0N2Z0orUWtIQURzS09ncjRDUWNBTHdvOENpNEtCd0F2Q2owS1BBb0hBUHNKUFFyNkNRY0Erd2s4Q2owS0J3QStDdmdKT2dvSEFENEsvQW40Q1FjQU1BbzZDaWdLQndBd0NqNEtPZ29IQUM0S1B3b3pDZ2NBTGdvOENqOEtCd0Q5Q1R3Syt3a0hBUDBKUHdvOENnY0E5d2xBQ2pnS0J3RDNDUUlLUUFvSEFDWUtRQW8xQ2djQUpnbzRDa0FLQndBQ0NqMEtRQW9IQUFJSytnazlDZ2NBTlFvOUNpOEtCd0ExQ2tBS1BRb0hBRUVLOWdrNUNnY0FRUW9QQ3ZZSkJ3QTNDamtLSndvSEFEY0tRUW81Q2djQU93bzNDaWtLQndBN0NrRUtOd29IQUVFSytRa1BDZ2NBUVFvN0N2a0pCd0JDQ2tNS1JBb0hBRUlLUlFwRENnY0FKQXBEQ2lVS0J3QWtDa1FLUXdvSEFFWUtLZ29yQ2djQVJncEhDaW9LQndCSENrZ0tTUW9IQUVjS1JncElDZ2NBTEFwS0NpMEtCd0FzQ2tzS1Nnb0hBRXdLU3dwTkNnY0FUQXBLQ2tzS0J3QkhDazRLVHdvSEFFY0tTUXBPQ2djQUtncFBDakVLQndBcUNrY0tUd29IQURJS1N3b3NDZ2NBTWdwUUNrc0tCd0JOQ2xBS1VRb0hBRTBLU3dwUUNnY0FVZ3BFQ2xNS0J3QlNDa0lLUkFvSEFEUUtSQW9rQ2djQU5BcFRDa1FLQndCTUNsTUtTZ29IQUV3S1VncFRDZ2NBTFFwVENqUUtCd0F0Q2tvS1V3b0hBRU1LTmdvbENnY0FRd3BVQ2pZS0J3QlVDa1VLVlFvSEFGUUtRd3BGQ2djQVZBcElDa1lLQndCVUNsVUtTQW9IQURZS1Jnb3JDZ2NBTmdwVUNrWUtCd0JXQ2xjS1dBb0hBRllLV1FwWENnY0FBQXBhQ3Y0SkJ3QUFDbHNLV2dvSEFGd0tTUXBJQ2djQVhBcGRDa2tLQndCZEN0Y0oxQWtIQUYwS1hBclhDUWNBVEFwZUNsOEtCd0JNQ2swS1hnb0hBTllKWHdwZUNnY0ExZ25WQ1Y4S0J3QmRDazRLU1FvSEFGMEtZQXBPQ2djQVlBclVDZDRKQndCZ0NsMEsxQWtIQUZFS1hncE5DZ2NBVVFwaENsNEtCd0RXQ1dFSzN3a0hBTllKWGdwaENnY0FZZ29BQ3Y4SkJ3QmlDbHNLQUFvSEFGc0tWUXBGQ2djQVd3cGlDbFVLQndCaUN0Y0pYQW9IQUdJSy93blhDUWNBWEFwVkNtSUtCd0JjQ2tnS1ZRb0hBRUlLWXdwYUNnY0FRZ3BTQ21NS0J3QUJDbG9LWXdvSEFBRUsvZ2xhQ2djQVRBcGpDbElLQndCTUNsOEtZd29IQUFFS1h3clZDUWNBQVFwakNsOEtCd0JrQ2tVS1Fnb0hBR1FLWlFwRkNnY0FaZ3BGQ21VS0J3Qm1DbHNLUlFvSEFGc0tad3BhQ2djQVd3cG1DbWNLQndCYUNtUUtRZ29IQUZvS1p3cGtDZ2NBYUFwa0Nta0tCd0JvQ21VS1pBb0hBR29LWlFwb0NnY0FhZ3BtQ21VS0J3Qm5DbW9LYXdvSEFHY0taZ3BxQ2djQVpBcHJDbWtLQndCa0NtY0thd29IQUd3S2FBcHBDZ2NBYkFwdENtZ0tCd0J1Q21nS2JRb0hBRzRLYWdwb0NnY0FhZ3B2Q21zS0J3QnFDbTRLYndvSEFHc0tiQXBwQ2djQWF3cHZDbXdLQndCd0NtMEtiQW9IQUhBS2NRcHRDZ2NBY1FwdUNtMEtCd0J4Q25JS2Jnb0hBRzRLY3dwdkNnY0FiZ3B5Q25NS0J3QnZDbkFLYkFvSEFHOEtjd3B3Q2djQVZncHhDbkFLQndCV0NsZ0tjUW9IQUZnS2NncHhDZ2NBV0FwWENuSUtCd0J5Q2xrS2N3b0hBSElLVndwWkNnY0Fjd3BXQ25BS0J3QnpDbGtLVmdvSEFIUUtLd0F0QUFjQWRBb3RBRlVBQndCMUNuUUtWUUFIQUhVS1ZRQlhBQWNBZGdwMUNsY0FCd0IyQ2xjQVdRQUhBSGNLZGdwWkFBY0Fkd3BaQUZzQUJ3QjRDbmNLV3dBSEFIZ0tXd0JkQUFjQWVRcDRDbDBBQndCNUNsMEFYd0FIQUhvS0x3QXJBQWNBZWdvckFIUUtCd0I3Q25vS2RBb0hBSHNLZEFwMUNnY0FmQXA3Q25VS0J3QjhDblVLZGdvSEFIMEtmQXAyQ2djQWZRcDJDbmNLQndCK0NuMEtkd29IQUg0S2R3cDRDZ2NBZndwK0NuZ0tCd0IvQ25nS2VRb0hBSUFLTVFBdkFBY0FnQW92QUhvS0J3Q0JDb0FLZWdvSEFJRUtlZ3A3Q2djQWdncUJDbnNLQndDQ0Nuc0tmQW9IQUlNS2dncDhDZ2NBZ3dwOENuMEtCd0NFQ29NS2ZRb0hBSVFLZlFwK0NnY0FoUXFFQ240S0J3Q0ZDbjRLZndvSEFJQUtoUUNHQUFjQWdBcUdBREVBQndDQkNvY0FoUUFIQUlFS2hRQ0FDZ2NBZ2dxSUFJY0FCd0NDQ29jQWdRb0hBSU1LaVFDSUFBY0Fnd3FJQUlJS0J3Q0VDb29BaVFBSEFJUUtpUUNEQ2djQWhRcUxBSW9BQndDRkNvb0FoQW9IQUpFQWtBQ0dDZ2NBa1FDR0NyWUFCd0MyQUlZS2h3b0hBTFlBaHdxNEFBY0F1QUNIQ29nS0J3QzRBSWdLdWdBSEFMb0FpQXFKQ2djQXVnQ0pDcndBQndDOEFJa0tpZ29IQUx3QWlncStBQWNBdmdDS0Nua0tCd0MrQUhrS1h3QUhBSkFBa3dDTENnY0FrQUNMQ29ZS0J3Q0dDb3NLakFvSEFJWUtqQXFIQ2djQWh3cU1DbzBLQndDSENvMEtpQW9IQUlnS2pRcU9DZ2NBaUFxT0Nva0tCd0NKQ280S2p3b0hBSWtLandxS0NnY0FpZ3FQQ244S0J3Q0tDbjhLZVFvSEFKTUFsUUNRQ2djQWt3Q1FDb3NLQndDTENwQUtrUW9IQUlzS2tRcU1DZ2NBakFxUkNwSUtCd0NNQ3BJS2pRb0hBSTBLa2dxVENnY0FqUXFUQ280S0J3Q09DcE1LbEFvSEFJNEtsQXFQQ2djQWp3cVVDb1VLQndDUENvVUtmd29IQU9FQTRBQ1FDZ2NBNFFDUUNwVUFCd0RnQU9JQWtRb0hBT0FBa1FxUUNnY0E0Z0RqQUpJS0J3RGlBSklLa1FvSEFPTUE1QUNUQ2djQTR3Q1RDcElLQndEa0FPVUFsQW9IQU9RQWxBcVRDZ2NBNVFDTEFJVUtCd0RsQUlVS2xBb0hBSlVLbGdxWENnY0FsUXFZQ3BZS0J3Q1hDcGtLbWdvSEFKY0tsZ3FaQ2djQW1ncWJDcHdLQndDYUNwa0ttd29IQUp3S25RcWVDZ2NBbkFxYkNwMEtCd0NkQ3A4S25nb0hBSjBLb0FxZkNnY0FvUXFpQ3FNS0J3Q2hDcVFLb2dvSEFLVUtwQXFoQ2djQXBRcW1DcVFLQndDbkNxWUtwUW9IQUtjS3FBcW1DZ2NBcVFxb0NxY0tCd0NwQ3FvS3FBb0hBS3NLcWdxcENnY0Fxd3FzQ3FvS0J3Q2tDcTBLb2dvSEFLUUtyZ3F0Q2djQXJ3cWtDcVlLQndDdkNxNEtwQW9IQUxBS3BncW9DZ2NBc0FxdkNxWUtCd0N4Q3FnS3Fnb0hBTEVLc0Fxb0NnY0FyQXF4Q3FvS0J3Q3NDcklLc1FvSEFLNEtzd3F0Q2djQXJncTBDck1LQndDWUNyUUtsZ29IQUpnS3N3cTBDZ2NBcndxMENxNEtCd0N2Q3JVS3RBb0hBSllLdFFxWkNnY0FsZ3EwQ3JVS0J3Q3dDclVLcndvSEFMQUt0Z3ExQ2djQW1RcTJDcHNLQndDWkNyVUt0Z29IQUxFS3RncXdDZ2NBc1FxM0NyWUtCd0NiQ3JjS25Rb0hBSnNLdGdxM0NnY0FzZ3EzQ3JFS0J3Q3lDcmdLdHdvSEFKMEt1QXFnQ2djQW5RcTNDcmdLQndDNUNwZ0tsUW9IQUxrS3VncVlDZ2NBdXdxVkNwY0tCd0M3Q3JrS2xRb0hBTHdLbHdxYUNnY0F2QXE3Q3BjS0J3QzlDcG9LbkFvSEFMMEt2QXFhQ2djQXZncWNDcDRLQndDK0NyMEtuQW9IQUw4S25ncWZDZ2NBdndxK0NwNEtCd0RBQ3FNS29nb0hBTUFLd1FxakNnY0Fvd3JDQ3FFS0J3Q2pDc0VLd2dvSEFLRUt3d3FsQ2djQW9RckNDc01LQndDbENzUUtwd29IQUtVS3d3ckVDZ2NBcHdyRkNxa0tCd0NuQ3NRS3hRb0hBS2tLeGdxckNnY0FxUXJGQ3NZS0J3REhDcUlLclFvSEFNY0t3QXFpQ2djQXlBcXRDck1LQndESUNzY0tyUW9IQUxvS3N3cVlDZ2NBdWdySUNyTUtCd0RKQ3NvS3l3b0hBTWtLekFyS0NnY0F6UXJMQ3M0S0J3RE5Dc2tLeXdvSEFNOEt6Z3JRQ2djQXp3ck5DczRLQndEUkN0QUswZ29IQU5FS3p3clFDZ2NBbndyUkN0SUtCd0NmQ3FBSzBRb0hBTk1LMUFyVkNnY0Ewd3JXQ3RRS0J3RFdDdGNLMUFvSEFOWUsyQXJYQ2djQTJBclpDdGNLQndEWUN0b0syUW9IQU5vSzJ3clpDZ2NBMmdyY0N0c0tCd0RjQ3FzSzJ3b0hBTndLckFxckNnY0EzUXJXQ3RNS0J3RGRDdDRLMWdvSEFOWUszd3JZQ2djQTFncmVDdDhLQndEWUN1QUsyZ29IQU5nSzN3cmdDZ2NBMmdyaEN0d0tCd0RhQ3VBSzRRb0hBT0VLckFyY0NnY0E0UXF5Q3F3S0J3RGlDdDRLM1FvSEFPSUs0d3JlQ2djQTR3ck1Dc2tLQndEakN1SUt6QW9IQU9NSzN3cmVDZ2NBNHdya0N0OEtCd0RrQ3NrS3pRb0hBT1FLNHdySkNnY0E1QXJnQ3Q4S0J3RGtDdVVLNEFvSEFPVUt6UXJQQ2djQTVRcmtDczBLQndEbEN1RUs0QW9IQU9VSzVncmhDZ2NBNWdyUEN0RUtCd0RtQ3VVS3p3b0hBT1lLc2dyaENnY0E1Z3E0Q3JJS0J3QzRDdEVLb0FvSEFMZ0s1Z3JSQ2djQXpBcm5Dc29LQndETUN1Z0s1d29IQU1vSzZRckxDZ2NBeWdybkN1a0tCd0RMQ3VvS3pnb0hBTXNLNlFycUNnY0F6Z3JyQ3RBS0J3RE9DdW9LNndvSEFOQUs3QXJTQ2djQTBBcnJDdXdLQndEU0NyOEtud29IQU5JSzdBcS9DZ2NBMVFydEN0TUtCd0RWQ3U0SzdRb0hBTzhLMVFyVUNnY0E3d3J1Q3RVS0J3RHdDdFFLMXdvSEFQQUs3d3JVQ2djQThRclhDdGtLQndEeEN2QUsxd29IQVBJSzJRcmJDZ2NBOGdyeEN0a0tCd0RHQ3RzS3F3b0hBTVlLOGdyYkNnY0Ewd3J6Q3QwS0J3RFRDdTBLOHdvSEFOMEs5QXJpQ2djQTNRcnpDdlFLQndEaUN1Z0t6QW9IQU9JSzlBcm9DZ2NBOVFyMkN2Y0tCd0QxQ3ZnSzlnb0hBUGdLK1FyMkNnY0ErQXI2Q3ZrS0J3RDdDdmNLL0FvSEFQc0s5UXIzQ2djQS9RcjhDdjRLQndEOUN2c0svQW9IQVA4Sy9nb0FDd2NBL3dyOUN2NEtCd0FCQ3dBTEFnc0hBQUVML3dvQUN3Y0FBd3NDQ3dRTEJ3QURDd0VMQWdzSEFBVUxCQXNHQ3djQUJRc0RDd1FMQndBSEN3WUxDQXNIQUFjTEJRc0dDd2NBQ1FzSUN3b0xCd0FKQ3djTENBc0hBQXNMQ2dzTUN3Y0FDd3NKQ3dvTEJ3QU5Dd3dMRGdzSEFBMExDd3NNQ3djQUR3c09DeEFMQndBUEN3MExEZ3NIQUJFTEVBc1NDd2NBRVFzUEN4QUxCd0FUQ3hJTEZBc0hBQk1MRVFzU0N3Y0FGUXNVQ3hZTEJ3QVZDeE1MRkFzSEFCY0xGZ3NZQ3djQUZ3c1ZDeFlMQndBWkN4Z0xHZ3NIQUJrTEZ3c1lDd2NBR3dzYUN4d0xCd0FiQ3hrTEdnc0hBQjBMSEFzZUN3Y0FIUXNiQ3h3TEJ3QWZDeDRMSUFzSEFCOExIUXNlQ3djQUlRc2dDeUlMQndBaEN4OExJQXNIQUNNTElnc2tDd2NBSXdzaEN5SUxCd0FsQ3lRTEpnc0hBQ1VMSXdza0N3Y0FKd3NtQ3lnTEJ3QW5DeVVMSmdzSEFQb0tLQXY1Q2djQStnb25DeWdMQndBbUN5a0xLQXNIQUNZTEtnc3BDd2NBS2dzckN5a0xCd0FxQ3l3TEt3c0hBQ1FMS2dzbUN3Y0FKQXN0Q3lvTEJ3QXRDeXdMS2dzSEFDMExMZ3NzQ3djQUlnc3RDeVFMQndBaUN5OExMUXNIQUM4TExnc3RDd2NBTHdzd0N5NExCd0FnQ3k4TElnc0hBQ0FMTVFzdkN3Y0FNUXN3Q3k4TEJ3QXhDeklMTUFzSEFCNExNUXNnQ3djQUhnc3pDekVMQndBekN6SUxNUXNIQURNTE5Bc3lDd2NBSEFzekN4NExCd0FjQ3pVTE13c0hBRFVMTkFzekN3Y0FOUXMyQ3pRTEJ3QWFDelVMSEFzSEFCb0xOd3MxQ3djQU53czJDelVMQndBM0N6Z0xOZ3NIQUJnTE53c2FDd2NBR0FzNUN6Y0xCd0E1Q3pnTE53c0hBRGtMT2dzNEN3Y0FGZ3M1Q3hnTEJ3QVdDenNMT1FzSEFEc0xPZ3M1Q3djQU93czhDem9MQndBVUN6c0xGZ3NIQUJRTFBRczdDd2NBUFFzOEN6c0xCd0E5Q3o0TFBBc0hBQklMUFFzVUN3Y0FFZ3MvQ3owTEJ3QS9DejRMUFFzSEFEOExRQXMrQ3djQUVBcy9DeElMQndBUUMwRUxQd3NIQUVFTFFBcy9Dd2NBUVF0Q0MwQUxCd0FPQzBFTEVBc0hBQTRMUXd0QkN3Y0FRd3RDQzBFTEJ3QkRDMFFMUWdzSEFBd0xRd3NPQ3djQURBdEZDME1MQndCRkMwUUxRd3NIQUVVTFJndEVDd2NBQ2d0RkN3d0xCd0FLQzBjTFJRc0hBRWNMUmd0RkN3Y0FSd3RJQzBZTEJ3QUlDMGNMQ2dzSEFBZ0xTUXRIQ3djQVNRdElDMGNMQndCSkMwb0xTQXNIQUFZTFNRc0lDd2NBQmd0TEMwa0xCd0JMQzBvTFNRc0hBRXNMVEF0S0N3Y0FCQXRMQ3dZTEJ3QUVDMDBMU3dzSEFFMExUQXRMQ3djQVRRdE9DMHdMQndBQ0MwMExCQXNIQUFJTFR3dE5Dd2NBVHd0T0MwMExCd0JQQzFBTFRnc0hBQUFMVHdzQ0N3Y0FBQXRSQzA4TEJ3QlJDMUFMVHdzSEFGRUxVZ3RRQ3djQS9ncFJDd0FMQndEK0NsTUxVUXNIQUZNTFVndFJDd2NBVXd0VUMxSUxCd0Q4Q2xNTC9nb0hBUHdLVlF0VEN3Y0FWUXRVQzFNTEJ3QlZDMVlMVkFzSEFQY0tWUXY4Q2djQTl3cFhDMVVMQndCWEMxWUxWUXNIQUZjTFdBdFdDd2NBOWdwWEMvY0tCd0QyQ2xrTFZ3c0hBRmtMV0F0WEN3Y0FXUXRhQzFnTEJ3RDVDbGtMOWdvSEFQa0tXd3RaQ3djQVd3dGFDMWtMQndCYkMxd0xXZ3NIQUNnTFd3djVDZ2NBS0FzcEMxc0xCd0FwQzF3TFd3c0hBQ2tMS3d0Y0N3Y0FYUXNWQ3hjTEJ3QmRDMTRMRlFzSEFGNExFd3NWQ3djQVhndGZDeE1MQndCZkN4RUxFd3NIQUY4TFlBc1JDd2NBWUFzUEN4RUxCd0JnQzJFTER3c0hBR0lMWGd0ZEN3Y0FZZ3RqQzE0TEJ3QmpDMThMWGdzSEFHTUxaQXRmQ3djQVpBdGdDMThMQndCa0MyVUxZQXNIQUdVTFlRdGdDd2NBWlF0bUMyRUxCd0JuQzJNTFlnc0hBR2NMYUF0akN3Y0FhQXRrQzJNTEJ3Qm9DMmtMWkFzSEFHa0xaUXRrQ3djQWFRdHFDMlVMQndCcUMyWUxaUXNIQUdvTGF3dG1Dd2NBOVFwcEMyZ0xCd0QxQ3ZzS2FRc0hBUDBLYVF2N0NnY0EvUXBxQzJrTEJ3RC9DbW9ML1FvSEFQOEthd3RxQ3djQWJBc0JDd01MQndCc0MyMExBUXNIQUc0TEF3c0ZDd2NBYmd0c0N3TUxCd0QvQ20wTGF3c0hBUDhLQVF0dEN3Y0Fid3NGQ3djTEJ3QnZDMjRMQlFzSEFBY0xDd3NOQ3djQUJ3c0pDd3NMQndBUEN3Y0xEUXNIQUE4TGJ3c0hDd2NBK0Fwb0MyY0xCd0Q0Q3ZVS2FBc0hBSEFMSnd2NkNnY0FjQXR4Q3ljTEJ3QWxDM0VMSXdzSEFDVUxKd3R4Q3djQStncG5DM0FMQndENkN2Z0tad3NIQUhJTEd3c2RDd2NBY2d0ekN4c0xCd0J6Q3hrTEd3c0hBSE1MZEFzWkN3Y0FId3R5Q3gwTEJ3QWZDeUVMY2dzSEFGMExHUXQwQ3djQVhRc1hDeGtMQndBakMzSUxJUXNIQUNNTGNRdHlDd2NBY0F0MEMzTUxCd0J3QzJjTGRBc0hBSEVMY3d0eUN3Y0FjUXR3QzNNTEJ3Qm5DMTBMZEFzSEFHY0xZZ3RkQ3djQXZ3bkdDYmdKQndDL0NYVUx4Z2tIQU1BSmRRdS9DUWNBd0FuRUNYVUxCd0MzQ1hZTHZna0hBTGNKeHdsMkN3Y0FkZ3ZCQ2I0SkJ3QjJDOFVKd1FrSEFMSUpkd3UxQ1FjQXNnbDRDM2NMQndDOUNYa0x2QWtIQUwwSmVndDVDd2NBdFFsN0M3TUpCd0MxQ1hjTGV3c0hBTFFKZUF1eUNRY0F0QWw4QzNnTEJ3Q3pDWDBMdWdrSEFMTUpld3Q5Q3djQXVnbDZDNzBKQndDNkNYMExlZ3NIQUxzSmZBdTBDUWNBdXdsK0Mzd0xCd0M4Q1g0THV3a0hBTHdKZVF0K0N3Y0F3d2wvQzhJSkJ3RERDWUFMZndzSEFNVUpnUXZFQ1FjQXhRbUNDNEVMQndER0NZQUx3d2tIQU1ZSmd3dUFDd2NBd2dtRUM4Y0pCd0RDQ1g4TGhBc0hBSFVMZ3d2R0NRY0FkUXVGQzRNTEJ3REVDWVVMZFFzSEFNUUpnUXVGQ3djQXh3bUdDM1lMQndESENZUUxoZ3NIQUhZTGdndkZDUWNBZGd1R0M0SUxCd0NIQzM4TGdBc0hBSWNMaUF0L0N3Y0Fod3VKQzRnTEJ3Q0hDNG9MaVFzSEFJRUxpd3VNQ3djQWdRdUNDNHNMQndDTkM0d0xpd3NIQUkwTGpndU1Dd2NBaHd1REM0OExCd0NIQzRBTGd3c0hBSThMaWd1SEN3Y0Fqd3VRQzRvTEJ3Q0lDNFFMZndzSEFJZ0xrUXVFQ3djQWtRdUpDNUlMQndDUkM0Z0xpUXNIQUpNTGd3dUZDd2NBa3d1UEM0TUxCd0NQQzVRTGtBc0hBSThMa3d1VUN3Y0FqQXVGQzRFTEJ3Q01DNU1MaFFzSEFJd0xsQXVUQ3djQWpBdU9DNVFMQndDVkM0UUxrUXNIQUpVTGhndUVDd2NBa1F1V0M1VUxCd0NSQzVJTGxnc0hBSlVMZ2d1R0N3Y0FsUXVMQzRJTEJ3Q0xDNVlMalFzSEFJc0xsUXVXQ3djQWx3dUtDNWdMQndDWEM0a0xpZ3NIQUpnTGVBdVhDd2NBbUF0M0MzZ0xCd0NPQzVrTG1nc0hBSTRMalF1WkN3Y0FlUXVhQzVrTEJ3QjVDM29MbWdzSEFKc0xpZ3VRQ3djQW13dVlDNG9MQndDWUMzc0xkd3NIQUpnTG13dDdDd2NBbHd1U0M0a0xCd0NYQzV3TGtnc0hBSndMZUF0OEN3Y0FuQXVYQzNnTEJ3Q2RDNUFMbEFzSEFKMExtd3VRQ3djQW13dDlDM3NMQndDYkM1MExmUXNIQUowTGpndWFDd2NBblF1VUM0NExCd0NkQzNvTGZRc0hBSjBMbWd0NkN3Y0FuQXVXQzVJTEJ3Q2NDNTRMbGdzSEFKNExmQXQrQ3djQW5ndWNDM3dMQndDZUM0MExsZ3NIQUo0TG1RdU5Dd2NBbVF0K0Mza0xCd0NaQzU0TGZnc0hBSjhMb0F1aEN3Y0Fud3VpQzZBTEJ3Q2pDNlFMcFFzSEFLTUxwZ3VrQ3djQXB3dWhDNmdMQndDbkM1OExvUXNIQUtZTHFRdWtDd2NBcGd1cUM2a0xCd0NyQzZnTHJBc0hBS3NMcHd1b0N3Y0FxZ3V0QzZrTEJ3Q3FDNjRMclFzSEFLNExyd3V0Q3djQXJndXdDNjhMQndDd0M3RUxyd3NIQUxBTHNndXhDd2NBc2d1c0M3RUxCd0N5QzZzTHJBc0hBTEFMcXd1eUN3Y0FzQXV1QzZzTEJ3Q25DNjRMcWdzSEFLY0xxd3V1Q3djQW53dXFDNllMQndDZkM2Y0xxZ3NIQUtZTG9ndWZDd2NBcGd1akM2SUxCd0NwQzdNTHBBc0hBS2tMdEF1ekN3Y0F0QXUxQzdNTEJ3QzBDN1lMdFFzSEFLMEx0QXVwQ3djQXJRdTNDN1FMQndDM0M3WUx0QXNIQUxjTHVBdTJDd2NBcnd1M0M2MExCd0N2QzdrTHR3c0hBTGtMdUF1M0N3Y0F1UXU2QzdnTEJ3Q3hDN2tMcndzSEFMRUx1d3U1Q3djQXV3dTZDN2tMQndDN0M3d0x1Z3NIQUt3THV3dXhDd2NBckF1OUM3c0xCd0M5Qzd3THV3c0hBTDBMdmd1OEN3Y0FxQXU5QzZ3TEJ3Q29DNzhMdlFzSEFMOEx2Z3U5Q3djQXZ3dkFDNzRMQndDaEM3OExxQXNIQUtFTHdRdS9Dd2NBd1F2QUM3OExCd0RCQzhJTHdBc0hBS0FMd3d2RUN3Y0FvQXVsQzhNTEJ3REVDOElMd1FzSEFNUUx4UXZDQ3djQXBBdkRDNlVMQndDa0M3TUx3d3NIQUxNTHhndkRDd2NBc3d1MUM4WUxCd0FmQngwSEhnY0hBQjhISVFjZEJ3Y0FId2QwQmlJSEJ3QWZCM1VHZEFZSEFDTUhJQWNpQndjQUl3Y2xCeUFIQndBakIzY0dKZ2NIQUNNSGRnWjNCZ2NBSndja0J5WUhCd0FuQnlrSEpBY0hBQ2NIZVFZcUJ3Y0FKd2Q0Qm5rR0J3QXJCeWdIS2djSEFDc0hMZ2NvQndjQUt3ZDdCaXdIQndBckIzb0dld1lIQU1nQ2VRSEhBZ2NBeUFLOUFua0JCd0RLQXIwQ3lBSUhBTW9DckFHOUFnY0F6QUtzQWNvQ0J3RE1BcXNCckFFSEFNNENxd0hNQWdjQXpnS3BBYXNCQndEUUFxa0J6Z0lIQU5BQ3FnR3BBUWNBMWdQU0E5UURCd0RXQTlNRDBnTUhBTllEcWdIUUFnY0ExZ1BWQTZvQkJ3RGpBZVlCNFFFSEFPTUIzUUxtQVFjQTZBSGRBdU1CQndEb0FkOEMzUUlIQUNZRDN3TG9BUWNBSmdNakE5OENCd0FtQXlrREp3TUhBQ1lESlFNcEF3Y0FRQVFrQXljREJ3QkFCRUVFSkFNSEFFWUJTZ0ZGQVFjQVJnRklBVW9CQndCTEFVZ0JSZ0VIQUVzQlRBRklBUWNBVGdGTUFVc0JCd0JPQVU4QlRBRUhBRkVCVHdGT0FRY0FVUUZTQVU4QkJ3QlVBVklCVVFFSEFGUUJWUUZTQVFjQUhnSlZBVlFCQndBZUFoOENWUUVIQUVBREdBRkZBUWNBUUFNOUF4Z0JCd0JBQTBNRFFRTUhBRUFEUHdOREF3Y0F4d3ZJQzhrTEJ3REhDOG9MeUFzSEFNc0x6QXZOQ3djQXl3dk9DOHdMQndES0M4OEx5QXNIQU1vTDBBdlBDd2NBMFF2T0M4c0xCd0RSQzlJTHpnc0hBTkFMMHd2UEN3Y0EwQXZVQzlNTEJ3RFZDOUVMMWdzSEFOVUwwZ3ZSQ3djQTFBdlhDOU1MQndEVUM5Z0wxd3NIQU5rTDFRdldDd2NBMlF2YUM5VUxCd0RZQzlzTDF3c0hBTmdMM0F2YkN3Y0EzUXZhQzlrTEJ3RGRDOTRMMmdzSEFOOEw0QXZoQ3djQTN3dmlDK0FMQndEY0MrTUwyd3NIQU53TDVBdmpDd2NBelF2bEM4c0xCd0ROQytZTDVRc0hBTWdMNWd2SkN3Y0F5QXZsQytZTEJ3RG5DOHdMemdzSEFPY0w2QXZNQ3djQXh3dm5DOG9MQndESEMrZ0w1d3NIQU1zTDZRdlJDd2NBeXd2bEMra0xCd0RQQytVTHlBc0hBTThMNlF2bEN3Y0E2Z3ZPQzlJTEJ3RHFDK2NMemdzSEFNb0w2Z3ZRQ3djQXlndm5DK29MQndEckM5RUw2UXNIQU9zTDFndlJDd2NBMHd2cEM4OExCd0RUQytzTDZRc0hBTlVMNmd2U0N3Y0ExUXZzQytvTEJ3RHNDOUFMNmdzSEFPd0wxQXZRQ3djQTFndnRDOWtMQndEV0Mrc0w3UXNIQU5jTDZ3dlRDd2NBMXd2dEMrc0xCd0R1QzlVTDJnc0hBTzRMN0F2VkN3Y0ExQXZ1QzlnTEJ3RFVDK3dMN2dzSEFPTUwyUXZ0Q3djQTR3dmRDOWtMQndEYkMrMEwxd3NIQU5zTDR3dnRDd2NBM2d2dUM5b0xCd0RlQytRTDdnc0hBT1FMMkF2dUN3Y0E1QXZjQzlnTEJ3RGtDKzhMOEFzSEFPUUwzZ3Z2Q3djQTR3dndDL0VMQndEakMrUUw4QXNIQVBJTDR3dnhDd2NBOGd2ZEMrTUxCd0R2QzkwTDhnc0hBTzhMM2d2ZEN3Y0E4QXZ6Qy9RTEJ3RHdDKzhMOHdzSEFQRUw5QXYxQ3djQThRdndDL1FMQndEMkMvRUw5UXNIQVBZTDhndnhDd2NBOHd2eUMvWUxCd0R6Qys4TDhnc0hBUGNMOHd2MkN3Y0E5d3Y0Qy9NTEJ3RHpDL2tMOUFzSEFQTUwrQXY1Q3djQTlBdjZDL1VMQndEMEMva0wrZ3NIQVBvTDlndjFDd2NBK2d2M0MvWUxCd0Q3Qy9nTDl3c0hBUHNML0F2NEN3Y0ErQXY5Qy9rTEJ3RDRDL3dML1FzSEFQa0wvZ3Y2Q3djQStRdjlDLzRMQndEK0MvY0wrZ3NIQVA0TCt3djNDd2NBL1F2L0N3QU1Cd0Q5Qy93TC93c0hBUDRMQVF3Q0RBY0EvZ3Y5Q3dFTUJ3QUREUDRMQkF3SEFBTU0rd3YrQ3djQS93djdDd01NQndEL0Mvd0wrd3NIQUFVTS93c0REQWNBQlF3R0RQOExCd0QvQ3djTUNBd0hBUDhMQmd3SERBY0FDUXdLREFzTUJ3QUpEQXdNQ2d3SEFBME1Bd3dPREFjQURRd0ZEQU1NQndBUERBWU1CUXdIQUE4TUVBd0dEQWNBQmd3UkRCSU1Cd0FHREJBTUVRd0hBQXdNRXd3S0RBY0FEQXdVREJNTUJ3QVZEQVVNRmd3SEFCVU1Ed3dGREFjQUZ3d1FEQThNQndBWERCZ01FQXdIQUJBTUdRd2FEQWNBRUF3WURCa01Cd0FVREJzTUV3d0hBQlFNSEF3YkRBY0FIUXdQREI0TUJ3QWREQmNNRHd3SEFCOE1HQXdYREFjQUh3d2dEQmdNQndBWURDRU1JZ3dIQUJnTUlBd2hEQWNBSEF6aUN4c01Cd0FjRE9BTDRnc0hBQ01NRnd3ZERBY0FJd3drREJjTUJ3QWxEQ1lNSnd3SEFDVU1LQXdtREFjQUtRd29EQ1VNQndBcERDb01LQXdIQUNzTUtRd3NEQWNBS3d3cURDa01Cd0F0RENzTUxBd0hBQzBNTGd3ckRBY0FMd3d3RERFTUJ3QXZERElNTUF3SEFDY01NZ3dsREFjQUp3d3dERElNQndBekREUU1OUXdIQURNTU5ndzBEQWNBTnd3MkREZ01Cd0EzRERRTU5nd0hBRGtNTHd3NkRBY0FPUXd5REM4TUJ3QWxERGtNS1F3SEFDVU1NZ3c1REFjQU5RdzdERHdNQndBMUREUU1Pd3dIQUQwTU5BdzNEQWNBUFF3N0REUU1Cd0ErRERrTU9nd0hBRDRNUHd3NURBY0FLUXcvREN3TUJ3QXBERGtNUHd3SEFFQU1QZ3hCREFjQVFBdy9ERDRNQndBc0RFQU1MUXdIQUN3TVB3eEFEQWNBT3d4Q0REd01Cd0E3REVNTVFnd0hBRVFNT3d3OURBY0FSQXhERERzTUJ3QkNERVVNUmd3SEFFSU1Rd3hGREFjQVJ3eERERVFNQndCSERFVU1Rd3dIQUVnTVFReEpEQWNBU0F4QURFRU1Cd0F0REVnTUxnd0hBQzBNUUF4SURBY0FTZ3duRENZTUJ3QktEREFNSnd3SEFERU1TZ3hMREFjQU1Rd3dERW9NQndBOURFd01SQXdIQUQwTVRReE1EQWNBVFF3ckRFd01Cd0JORENvTUt3d0hBRGNNVFF3OURBY0FOd3hPREUwTUJ3Qk9EQ29NVFF3SEFFNE1LQXdxREFjQU9BeE9ERGNNQndBNERFOE1UZ3dIQUU4TUtBeE9EQWNBVHd3bURDZ01Cd0EyREU4TU9Bd0hBRFlNVUF4UERBY0FVQXdtREU4TUJ3QlFERW9NSmd3SEFETU1VQXcyREFjQU13eFJERkFNQndCUkRFb01VQXdIQUZFTVN3eEtEQWNBUkF4U0RFY01Cd0JFREV3TVVnd0hBRXdNTGd4U0RBY0FUQXdyREM0TUJ3QkhERk1NUlF3SEFFY01VZ3hUREFjQVVneElERk1NQndCU0RDNE1TQXdIQUVVTVZBeEdEQWNBUlF4VERGUU1Cd0JUREVrTVZBd0hBRk1NU0F4SkRBY0FWUXhXREZjTUJ3QlZERmdNVmd3SEFGZ01XUXhXREFjQVdBeGFERmtNQndCWkRGc01YQXdIQUZrTVdneGJEQWNBV3d4ZERGd01Cd0JiREY0TVhRd0hBRjhNTHd3eERBY0FYd3hnREM4TUJ3QmdERmNNVmd3SEFHQU1Yd3hYREFjQVlRd3pERFVNQndCaERHSU1Nd3dIQUdJTVl3eGtEQWNBWWd4aERHTU1Cd0F2REdVTU9nd0hBQzhNWUF4bERBY0FaUXhXREZrTUJ3QmxER0FNVmd3SEFHWU1OUXc4REFjQVpneGhERFVNQndCaERHY01Zd3dIQUdFTVpneG5EQWNBWlF3K0REb01Cd0JsREdnTVBnd0hBR2dNV1F4Y0RBY0FhQXhsREZrTUJ3QStER2tNUVF3SEFENE1hQXhwREFjQWFReGNERjBNQndCcERHZ01YQXdIQUVJTVpndzhEQWNBUWd4cURHWU1Cd0JtREdzTVp3d0hBR1lNYWd4ckRBY0FiQXhDREVZTUJ3QnNER29NUWd3SEFHb01iUXhyREFjQWFneHNERzBNQndCQkRHNE1TUXdIQUVFTWFReHVEQWNBYmd4ZERGNE1Cd0J1REdrTVhRd0hBRmNNYnd4VkRBY0FWd3hmREc4TUJ3QnZEREVNU3d3SEFHOE1Yd3d4REFjQWNBeG5ER3NNQndCd0RIRU1ad3dIQUZzTWNReHdEQWNBV3d4YURIRU1Cd0J4REdNTVp3d0hBSEVNY2d4akRBY0FXZ3h5REhFTUJ3QmFERmdNY2d3SEFISU1aQXhqREFjQWNneHpER1FNQndCWURITU1jZ3dIQUZnTVZReHpEQWNBY3d4aURHUU1Cd0J6REhRTVlnd0hBRlVNZEF4ekRBY0FWUXh2REhRTUJ3QjBERE1NWWd3SEFIUU1VUXd6REFjQWJ3eFJESFFNQndCdkRFc01VUXdIQUhVTWF3eHREQWNBZFF4d0RHc01Cd0JlREhBTWRRd0hBRjRNV3d4d0RBY0FkZ3h0REd3TUJ3QjJESFVNYlF3SEFHNE1kUXgyREFjQWJneGVESFVNQndCVURHd01SZ3dIQUZRTWRneHNEQWNBU1F4MkRGUU1Cd0JKREc0TWRnd0hBSGNNZUF4NURBY0Fkd3g2REhnTUJ3QjdESHdNZlF3SEFIc01mZ3g4REFjQWR3eC9ESG9NQndCM0RJQU1md3dIQUg0TWdReDhEQWNBZmd5Q0RJRU1Cd0NBRElNTWZ3d0hBSUFNaEF5RERBY0FnZ3lGRElFTUJ3Q0NESVlNaFF3SEFJUU1od3lEREFjQWhBeUlESWNNQndDSkRJZ01pZ3dIQUlrTWh3eUlEQWNBaGd5TERJVU1Cd0NHREl3TWl3d0hBSTBNakF5T0RBY0FqUXlMREl3TUJ3QjlESThNZXd3SEFIME1rQXlQREFjQWtReDlESHdNQndDUkRKQU1mUXdIQUpJTWZBeUJEQWNBa2d5UkRId01Cd0NURElFTWhRd0hBSk1Na2d5QkRBY0FsQXlGRElzTUJ3Q1VESk1NaFF3SEFJME1sQXlMREFjQWpReVZESlFNQndCNERKWU1lUXdIQUhnTWx3eVdEQWNBZVF5WURIY01Cd0I1REpZTW1Bd0hBSGNNbVF5QURBY0Fkd3lZREprTUJ3Q0FESm9NaEF3SEFJQU1tUXlhREFjQWhBeWJESWdNQndDRURKb01td3dIQUlnTW5BeUtEQWNBaUF5YkRKd01Cd0NYREowTWxnd0hBSmNNbmd5ZERBY0FsZ3lmREpnTUJ3Q1dESjBNbnd3SEFKZ01vQXlaREFjQW1BeWZES0FNQndDWkRLRU1tZ3dIQUprTW9BeWhEQWNBbWd5aURKc01Cd0NhREtFTW9nd0hBS0lNbkF5YkRBY0FvZ3lqREp3TUJ3Q2VES1FNblF3SEFKNE1wUXlrREFjQWtBeWxESThNQndDUURLUU1wUXdIQUowTXBneWZEQWNBblF5a0RLWU1Cd0NSREtRTWtBd0hBSkVNcGd5a0RBY0Fud3luREtBTUJ3Q2ZES1lNcHd3SEFKSU1wZ3lSREFjQWtneW5ES1lNQndDZ0RLZ01vUXdIQUtBTXB3eW9EQWNBa3d5bkRKSU1Cd0NUREtnTXB3d0hBS0VNcVF5aURBY0FvUXlvREtrTUJ3Q1VES2dNa3d3SEFKUU1xUXlvREFjQW9neXFES01NQndDaURLa01xZ3dIQUpVTXFReVVEQWNBbFF5cURLa01Cd0I3REtzTXJBd0hBSHNNand5ckRBY0FmZ3lzREswTUJ3QitESHNNckF3SEFJSU1yUXl1REFjQWdneCtESzBNQndDR0RLNE1yd3dIQUlZTWdneXVEQWNBakF5dkRMQU1Cd0NNRElZTXJ3d0hBSTRNc0F5eERBY0FqZ3lNRExBTUJ3Q1hETElNc3d3SEFKY01lQXl5REFjQXNneDZETFFNQndDeURIZ01lZ3dIQUxRTWZ3eTFEQWNBdEF4NkRIOE1Cd0MxRElNTXRnd0hBTFVNZnd5RERBY0F0Z3lIRExjTUJ3QzJESU1NaHd3SEFMY01pUXk0REFjQXR3eUhESWtNQndDZURMTU11UXdIQUo0TWx3eXpEQWNBcFF5NURMb01Cd0NsREo0TXVRd0hBSThNdWd5ckRBY0Fqd3lsRExvTUJ3Q3NETHNNdkF3SEFLd01xd3k3REFjQXJReThETDBNQndDdERLd012QXdIQUs0TXZReStEQWNBcmd5dERMME1Cd0N2REw0TXZ3d0hBSzhNcmd5K0RBY0FzQXkvRE1BTUJ3Q3dESzhNdnd3SEFMRU13QXpCREFjQXNReXdETUFNQndDekRNSU13d3dIQUxNTXNnekNEQWNBd2d5MERNUU1Cd0RDRExJTXRBd0hBTVFNdFF6RkRBY0F4QXkwRExVTUJ3REZETFlNeGd3SEFNVU10UXkyREFjQXhneTNETWNNQndER0RMWU10d3dIQU1jTXVBeklEQWNBeHd5M0RMZ01Cd0M1RE1NTXlRd0hBTGtNc3d6RERBY0F1Z3pKRE1vTUJ3QzZETGtNeVF3SEFLc015Z3k3REFjQXF3eTZETW9NQndDOERNc016QXdIQUx3TXV3ekxEQWNBdlF6TURNME1Cd0M5REx3TXpBd0hBTDRNelF6T0RBY0F2Z3k5RE0wTUJ3Qy9ETTRNend3SEFMOE12Z3pPREFjQXdBelBETkFNQndEQURMOE16d3dIQU1FTTBBelJEQWNBd1F6QUROQU1Cd0RERE5JTTB3d0hBTU1Nd2d6U0RBY0EwZ3pFRE5RTUJ3RFNETUlNeEF3SEFOUU14UXpWREFjQTFBekVETVVNQndEVkRNWU0xZ3dIQU5VTXhRekdEQWNBMWd6SEROY01Cd0RXRE1ZTXh3d0hBTmNNeUF6WURBY0Exd3pIRE1nTUJ3REpETk1NMlF3SEFNa013d3pUREFjQXlnelpETm9NQndES0RNa00yUXdIQUxzTTJnekxEQWNBdXd6S0ROb01Cd0RNRE5zTTNBd0hBTXdNeXd6YkRBY0F6UXpjRE4wTUJ3RE5ETXdNM0F3SEFNNE0zUXplREFjQXpnek5ETjBNQndEUERONE0zd3dIQU04TXpnemVEQWNBMEF6ZkRPQU1Cd0RRRE04TTN3d0hBTkVNNEF6aERBY0EwUXpRRE9BTUJ3RFRET0lNNHd3SEFOTU0wZ3ppREFjQTRnelVET1FNQndEaUROSU0xQXdIQU9RTTFRemxEQWNBNUF6VUROVU1Cd0RsRE5ZTTVnd0hBT1VNMVF6V0RBY0E1Z3pYRE9jTUJ3RG1ETllNMXd3SEFPY00yQXpvREFjQTV3elhETmdNQndEWkRPTU02UXdIQU5rTTB3empEQWNBMmd6cERPb01Cd0RhRE5rTTZRd0hBTXNNNmd6YkRBY0F5d3phRE9vTUJ3RGNET3NNN0F3SEFOd00yd3pyREFjQTNRenNETzBNQndEZEROd003QXdIQU40TTdRenVEQWNBM2d6ZERPME1Cd0RmRE80TTd3d0hBTjhNM2d6dURBY0E0QXp2RFBBTUJ3RGdETjhNN3d3SEFPRU04QXp4REFjQTRRemdEUEFNQndEakRQSU04d3dIQU9NTTRnenlEQWNBOGd6a0RQUU1Cd0R5RE9JTTVBd0hBUFFNNVF6MURBY0E5QXprRE9VTUJ3RDFET1lNOWd3SEFQVU01UXptREFjQTlnem5EUGNNQndEMkRPWU01d3dIQVBjTTZBejREQWNBOXd6bkRPZ01Cd0RwRFBNTStRd0hBT2tNNHd6ekRBY0E2Z3o1RFBvTUJ3RHFET2tNK1F3SEFOc00rZ3pyREFjQTJ3enFEUG9NQndEN0RQd00vUXdIQVBzTS9nejhEQWNBL3d3QURRRU5Cd0QvREFJTkFBMEhBQU1OL0F6K0RBY0FBdzBFRGZ3TUJ3QUZEUUlOL3d3SEFBVU5CZzBDRFFjQUJ3MEVEUU1OQndBSERRZ05CQTBIQUFrTkJnMEZEUWNBQ1EwS0RRWU5Cd0FMRFFnTkJ3MEhBQXNOREEwSURRY0FEQTJKRElvTUJ3QU1EUXNOaVF3SEFBME5DZzBKRFFjQURRME9EUW9OQndBT0RZME1qZ3dIQUE0TkRRMk5EQWNBRHcwQkRRQU5Cd0FQRFJBTkFRMEhBQUVORVEzL0RBY0FBUTBRRFJFTkJ3RC9EQklOQlEwSEFQOE1FUTBTRFFjQUJRMFREUWtOQndBRkRSSU5FdzBIQUFrTkZBME5EUWNBQ1EwVERSUU5Cd0FVRFkwTURRMEhBQlFObFF5TkRBY0FGUTM3RFAwTUJ3QVZEUllOK3d3SEFCY04vUXo4REFjQUZ3MFZEZjBNQndBWURmd01CQTBIQUJnTkZ3MzhEQWNBR1EwRURRZ05Cd0FaRFJnTkJBMEhBQm9OQ0EwTURRY0FHZzBaRFFnTkJ3Q2NEQXdOaWd3SEFKd01HZzBNRFFjQUd3MFdEUlVOQndBYkRSd05GZzBIQUIwTkZRMFhEUWNBSFEwYkRSVU5Cd0FlRFJjTkdBMEhBQjROSFEwWERRY0FIdzBZRFJrTkJ3QWZEUjROR0EwSEFDQU5HUTBhRFFjQUlBMGZEUmtOQndDY0RDQU5HZzBIQUp3TW93d2dEUWNBSVEwY0RSc05Cd0FoRFNJTkhBMEhBQ0lORUEwUERRY0FJZzBoRFJBTkJ3QWpEUnNOSFEwSEFDTU5JUTBiRFFjQUlRMFJEUkFOQndBaERTTU5FUTBIQUNRTkhRMGVEUWNBSkEwakRSME5Cd0FqRFJJTkVRMEhBQ01OSkEwU0RRY0FKUTBlRFI4TkJ3QWxEU1FOSGcwSEFDUU5FdzBTRFFjQUpBMGxEUk1OQndBbURSOE5JQTBIQUNZTkpRMGZEUWNBSlEwVURSTU5Cd0FsRFNZTkZBMEhBS29NSUEyakRBY0FxZ3dtRFNBTkJ3QW1EWlVNRkEwSEFDWU5xZ3lWREFjQUp3MEFEU2dOQndBbkRROE5BQTBIQUNnTkFnMHBEUWNBS0EwQURRSU5Cd0FwRFFZTktnMEhBQ2tOQWcwR0RRY0FLZzBLRFNzTkJ3QXFEUVlOQ2cwSEFDc05EZzBzRFFjQUt3MEtEUTROQndBc0RZNE1zUXdIQUN3TkRnMk9EQWNBTFEwV0RTNE5Cd0F0RGZzTUZnMEhBUDRNTFEwdkRRY0EvZ3o3REMwTkJ3QUREUzhOTUEwSEFBTU4vZ3d2RFFjQUJ3MHdEVEVOQndBSERRTU5NQTBIQUFzTk1RMHlEUWNBQ3cwSERURU5Cd0NKRERJTnVBd0hBSWtNQ3cweURRY0FMZzBjRFRNTkJ3QXVEUllOSEEwSEFETU5JZzAwRFFjQU13MGNEU0lOQndBMERROE5KdzBIQURRTklnMFBEUWNBTlEwb0RUWU5Cd0ExRFNjTktBMEhBRFlOS1EwM0RRY0FOZzBvRFNrTkJ3QTNEU29OT0EwSEFEY05LUTBxRFFjQU9BMHJEVGtOQndBNERTb05LdzBIQURrTkxBMDZEUWNBT1EwckRTd05Cd0E2RGJFTXdRd0hBRG9OTEEyeERBY0FPdzB1RFR3TkJ3QTdEUzBOTGcwSEFDOE5PdzA5RFFjQUx3MHREVHNOQndBd0RUME5QZzBIQURBTkx3MDlEUWNBTVEwK0RUOE5Cd0F4RFRBTlBnMEhBRElOUHcxQURRY0FNZzB4RFQ4TkJ3QzRERUFOeUF3SEFMZ01NZzFBRFFjQVBBMHpEVUVOQndBOERTNE5NdzBIQUVFTk5BMUNEUWNBUVEwekRUUU5Cd0JDRFNjTk5RMEhBRUlOTkEwbkRRY0FRdzAyRFVRTkJ3QkREVFVOTmcwSEFFUU5OdzFGRFFjQVJBMDJEVGNOQndCRkRUZ05SZzBIQUVVTk53MDREUWNBUmcwNURVY05Cd0JHRFRnTk9RMEhBRWNOT2cxSURRY0FSdzA1RFRvTkJ3QklEY0VNMFF3SEFFZ05PZzNCREFjQVNRMDhEVW9OQndCSkRUc05QQTBIQUQwTlNRMUxEUWNBUFEwN0RVa05Cd0ErRFVzTlRBMEhBRDROUFExTERRY0FQdzFNRFUwTkJ3QS9EVDROVEEwSEFFQU5UUTFPRFFjQVFBMC9EVTBOQndESURFNE4yQXdIQU1nTVFBMU9EUWNBU2cxQkRVOE5Cd0JLRFR3TlFRMEhBRThOUWcxUURRY0FUdzFCRFVJTkJ3QlFEVFVOUXcwSEFGQU5RZzAxRFFjQVVRMUVEVklOQndCUkRVTU5SQTBIQUZJTlJRMVREUWNBVWcxRURVVU5Cd0JURFVZTlZBMEhBRk1OUlExR0RRY0FWQTFIRFZVTkJ3QlVEVVlOUncwSEFGVU5TQTFXRFFjQVZRMUhEVWdOQndCV0RkRU00UXdIQUZZTlNBM1JEQWNBVncxS0RWZ05Cd0JYRFVrTlNnMEhBRXNOVncxWkRRY0FTdzFKRFZjTkJ3Qk1EVmtOV2cwSEFFd05TdzFaRFFjQVRRMWFEVnNOQndCTkRVd05XZzBIQUU0Tld3MWNEUWNBVGcxTkRWc05Cd0RZREZ3TjZBd0hBTmdNVGcxY0RRY0FXQTFQRFYwTkJ3QllEVW9OVHcwSEFGME5VQTFlRFFjQVhRMVBEVkFOQndCZURVTU5VUTBIQUY0TlVBMUREUWNBWHcxU0RXQU5Cd0JmRFZFTlVnMEhBR0FOVXcxaERRY0FZQTFTRFZNTkJ3QmhEVlFOWWcwSEFHRU5VdzFVRFFjQVlnMVZEV01OQndCaURWUU5WUTBIQUdNTlZnMWtEUWNBWXcxVkRWWU5Cd0JrRGVFTThRd0hBR1FOVmczaERBY0FaUTFZRFdZTkJ3QmxEVmNOV0EwSEFGa05aUTFuRFFjQVdRMVhEV1VOQndCYURXY05hQTBIQUZvTldRMW5EUWNBV3cxb0RXa05Cd0JiRFZvTmFBMEhBRndOYVExcURRY0FYQTFiRFdrTkJ3RG9ER29OK0F3SEFPZ01YQTFxRFFjQVpnMWREV3NOQndCbURWZ05YUTBIQUdzTlhnMXNEUWNBYXcxZERWNE5Cd0JzRFZFTlh3MEhBR3dOWGcxUkRRY0FiUTF1RFc4TkJ3QnREWEFOYmcwSEFHNE5jUTF5RFFjQWJnMXdEWEVOQndCeURYTU5kQTBIQUhJTmNRMXpEUWNBZEExMURYWU5Cd0IwRFhNTmRRMEhBSFlOZHcxNERRY0FkZzExRFhjTkJ3QjREWGtOZWcwSEFIZ05kdzE1RFFjQWVnMTdEWHdOQndCNkRYa05ldzBIQUgwTmV3MStEUWNBZlExOERYc05Cd0IvRFg0TmdBMEhBSDhOZlExK0RRY0FnUTJBRFlJTkJ3Q0JEWDhOZ0EwSEFJTU5nZzJFRFFjQWd3MkJEWUlOQndDRkRZUU5oZzBIQUlVTmd3MkVEUWNBaHcyR0RZZ05Cd0NIRFlVTmhnMEhBSWtOaHcySURRY0FpUTJLRFljTkJ3Q0xEWW9OaVEwSEFJc05qQTJLRFFjQWpRMk1EWXNOQndDTkRZNE5qQTBIQUk4TmpnMk5EUWNBancyUURZNE5Cd0NSRFpBTmp3MEhBSkVOa2cyUURRY0FrdzJTRFpFTkJ3Q1REWlFOa2cwSEFKTU5sUTJVRFFjQWt3MldEWlVOQndDV0RaY05sUTBIQUpZTm1BMlhEUWNBbUEyWkRaY05Cd0NZRFpvTm1RMEhBSm9ObXcyWkRRY0FtZzJjRFpzTkJ3Q2NEVzhObXcwSEFKd05iUTF2RFFjQWJ3MmREWjROQndCdkRXNE5uUTBIQUowTmNnMmZEUWNBblExdURYSU5Cd0NmRFhRTm9BMEhBSjhOY2cxMERRY0FvQTEyRGFFTkJ3Q2dEWFFOZGcwSEFLRU5lQTJpRFFjQW9RMTJEWGdOQndDaURYb05vdzBIQUtJTmVBMTZEUWNBb3cxOERhUU5Cd0NqRFhvTmZBMEhBS1VOZkExOURRY0FwUTJrRFh3TkJ3Q21EWDBOZncwSEFLWU5wUTE5RFFjQXB3MS9EWUVOQndDbkRhWU5mdzBIQUtnTmdRMkREUWNBcUEybkRZRU5Cd0NwRFlNTmhRMEhBS2tOcUEyRERRY0FxZzJGRFljTkJ3Q3FEYWtOaFEwSEFJb05xZzJIRFFjQWlnMnJEYW9OQndDTURhc05pZzBIQUl3TnJBMnJEUWNBamcyc0RZd05Cd0NPRGEwTnJBMEhBSkFOclEyT0RRY0FrQTJ1RGEwTkJ3Q1NEYTROa0EwSEFKSU5ydzJ1RFFjQWxBMnZEWklOQndDVURiQU5ydzBIQUpRTnNRMndEUWNBbEEyVkRiRU5Cd0NWRGJJTnNRMEhBSlVObHcyeURRY0FsdzJ6RGJJTkJ3Q1hEWmtOc3cwSEFKa050QTJ6RFFjQW1RMmJEYlFOQndDYkRaNE50QTBIQUpzTmJ3MmVEUWNBbmcyMURiWU5Cd0NlRFowTnRRMEhBTFVObncyM0RRY0F0UTJkRFo4TkJ3QzNEYUFOdUEwSEFMY05udzJnRFFjQXVBMmhEYmtOQndDNERhQU5vUTBIQUxrTm9nMjZEUWNBdVEyaERhSU5Cd0M2RGFNTnV3MEhBTG9Ob2cyakRRY0F1dzJrRGJ3TkJ3QzdEYU1OcEEwSEFMd05wUTI5RFFjQXZBMmtEYVVOQndDOURhWU52ZzBIQUwwTnBRMm1EUWNBdmcybkRiOE5Cd0MrRGFZTnB3MEhBTDhOcUEzQURRY0F2dzJuRGFnTkJ3REFEYWtOd1EwSEFNQU5xQTJwRFFjQXdRMnFEY0lOQndEQkRha05xZzBIQUtvTnd3M0NEUWNBcWcyckRjTU5Cd0NyRGNRTnd3MEhBS3NOckEzRURRY0FyQTNGRGNRTkJ3Q3NEYTBOeFEwSEFLME54ZzNGRFFjQXJRMnVEY1lOQndDdURjY054ZzBIQUs0TnJ3M0hEUWNBcnczSURjY05Cd0N2RGJBTnlBMEhBTEFOeVEzSURRY0FzQTJ4RGNrTkJ3Q3hEY29OeVEwSEFMRU5zZzNLRFFjQXNnM0xEY29OQndDeURiTU55dzBIQUxNTnpBM0xEUWNBc3cyMERjd05Cd0MwRGJZTnpBMEhBTFFObmcyMkRRY0F0ZzNORGM0TkJ3QzJEYlVOelEwSEFNME50dzNQRFFjQXpRMjFEYmNOQndEUERiZ04wQTBIQU04TnR3MjREUWNBMEEyNURkRU5Cd0RRRGJnTnVRMEhBTkVOdWczU0RRY0EwUTI1RGJvTkJ3RFNEYnNOMHcwSEFOSU51ZzI3RFFjQTB3MjhEZFFOQndEVERic052QTBIQU5VTnZBMjlEUWNBMVEzVURid05Cd0RXRGIwTnZnMEhBTllOMVEyOURRY0ExdzIrRGI4TkJ3RFhEZFlOdmcwSEFOZ052dzNBRFFjQTJBM1hEYjhOQndEWkRjQU53UTBIQU5rTjJBM0FEUWNBMmczQkRjSU5Cd0RhRGRrTndRMEhBTU1OMmczQ0RRY0F3dzNiRGRvTkJ3REVEZHNOd3cwSEFNUU4zQTNiRFFjQXhRM2NEY1FOQndERkRkME4zQTBIQU1ZTjNRM0ZEUWNBeGczZURkME5Cd0RIRGQ0TnhnMEhBTWNOM3czZURRY0F5QTNmRGNjTkJ3RElEZUFOM3cwSEFNZ040UTNnRFFjQXlBM0pEZUVOQndESkRlSU40UTBIQU1rTnlnM2lEUWNBeWczakRlSU5Cd0RLRGNzTjR3MEhBTXNONUEzakRRY0F5dzNNRGVRTkJ3RE1EYzRONUEwSEFNd050ZzNPRFFjQXpnM2xEZVlOQndET0RjME41UTBIQU9VTnp3M25EUWNBNVEzTkRjOE5Cd0RuRGRBTjZBMEhBT2NOenczUURRY0E2QTNSRGVrTkJ3RG9EZEFOMFEwSEFPa04wZzNxRFFjQTZRM1JEZElOQndEcURkTU42dzBIQU9vTjBnM1REUWNBNnczVURld05Cd0RyRGRNTjFBMEhBTzBOMUEzVkRRY0E3UTNzRGRRTkJ3RHVEZFVOMWcwSEFPNE43UTNWRFFjQTd3M1dEZGNOQndEdkRlNE4xZzBIQVBBTjF3M1lEUWNBOEEzdkRkY05Cd0R4RGRnTjJRMEhBUEVOOEEzWURRY0E4ZzNaRGRvTkJ3RHlEZkVOMlEwSEFOc044ZzNhRFFjQTJ3M3pEZklOQndEY0RmTU4ydzBIQU53TjlBM3pEUWNBM1EzMERkd05Cd0RkRGZVTjlBMEhBTjROOVEzZERRY0EzZzMyRGZVTkJ3RGZEZllOM2cwSEFOOE45dzMyRFFjQTRBMzNEZDhOQndEZ0RmZ045dzBIQU9BTitRMzREUWNBNEEzaERma05Cd0RoRGZvTitRMEhBT0VONGczNkRRY0E0ZzM3RGZvTkJ3RGlEZU1OK3cwSEFPTU4vQTM3RFFjQTR3M2tEZndOQndEa0RlWU4vQTBIQU9RTnpnM21EUWNBSkFYOURmNE5Cd0FrQlNZRi9RMEhBRElGL2czL0RRY0FNZ1VrQmY0TkJ3QXdCZjhOQUE0SEFEQUZNZ1gvRFFjQUxRVUFEZ0VPQndBdEJUQUZBQTRIQUFJT0xRVUJEZ2NBQWc0ckJTMEZCd0FERGlzRkFnNEhBQU1PS1FVckJRY0FCQTRwQlFNT0J3QUVEaWNGS1FVSEFQME5Kd1VFRGdjQS9RMG1CU2NGQndBRkR2ME5CQTRIQUFVT0JnNzlEUWNBL1EwSER2NE5Cd0Q5RFFZT0J3NEhBUDROQ0E3L0RRY0EvZzBIRGdnT0J3RC9EUWtPQUE0SEFQOE5DQTRKRGdjQUFBNEtEZ0VPQndBQURna09DZzRIQUFvT0FnNEJEZ2NBQ2c0TERnSU9Cd0FMRGdNT0FnNEhBQXNPREE0RERnY0FEQTRFRGdNT0J3QU1EZ1VPQkE0SEFBY09EUTRPRGdjQUJ3NEdEZzBPQndBSURnNE9EdzRIQUFnT0J3NE9EZ2NBQ1E0UERoQU9Cd0FKRGdnT0R3NEhBQW9PRUE0UkRnY0FDZzRKRGhBT0J3QVNEZ29PRVE0SEFCSU9DdzRLRGdjQUV3NExEaElPQndBVERnd09DdzRIQUJRT0RBNFREZ2NBRkE0RkRnd09Cd0FORGdVT0ZBNEhBQTBPQmc0RkRnY0FEZzRWRGhZT0J3QU9EZzBPRlE0SEFBOE9GZzRYRGdjQUR3NE9EaFlPQndBUURoY09HQTRIQUJBT0R3NFhEZ2NBRVE0WURoa09Cd0FSRGhBT0dBNEhBQm9PRVE0WkRnY0FHZzRTRGhFT0J3QWJEaElPR2c0SEFCc09FdzRTRGdjQUhBNFREaHNPQndBY0RoUU9FdzRIQUJVT0ZBNGNEZ2NBRlE0TkRoUU9Cd0FkRGhVT0hBNEhBQjBPSGc0VkRnY0FGUTRmRGhZT0J3QVZEaDRPSHc0SEFCWU9JQTRYRGdjQUZnNGZEaUFPQndBWURpQU9JUTRIQUJnT0Z3NGdEZ2NBR1E0aERpSU9Cd0FaRGhnT0lRNEhBQ01PR1E0aURnY0FJdzRhRGhrT0J3QWtEaG9PSXc0SEFDUU9HdzRhRGdjQUpBNGNEaHNPQndBa0RoME9IQTRIQUNVT0hRNG1EZ2NBSlE0ZURoME9Cd0FmRGlVT0p3NEhBQjhPSGc0bERnY0FJQTRuRGlnT0J3QWdEaDhPSnc0SEFDRU9LQTRwRGdjQUlRNGdEaWdPQndBaURpa09LZzRIQUNJT0lRNHBEZ2NBS3c0aURpb09Cd0FyRGlNT0lnNEhBQ3dPSXc0ckRnY0FMQTRrRGlNT0J3QW1EaVFPTEE0SEFDWU9IUTRrRGdjQUJ3QWxEaVlPQndBSEFDME9KUTRIQUNVT0xnNG5EZ2NBSlE0dERpNE9Cd0FuRGk4T0tBNEhBQ2NPTGc0dkRnY0FLUTR2RGpBT0J3QXBEaWdPTHc0SEFDb09NQTR4RGdjQUtnNHBEakFPQndBeURpb09NUTRIQURJT0t3NHFEZ2NBQ0FBckRqSU9Cd0FJQUN3T0t3NEhBQWNBTEE0SUFBY0FCd0FtRGl3T0J3QUpBQzBPQndBSEFBa0FEUUF0RGdjQUxRNEtBQzRPQndBdERnMEFDZ0FIQUM0T0VBQXZEZ2NBTGc0S0FCQUFCd0F2RGhvQU1BNEhBQzhPRUFBYUFBY0FNQTRjQURFT0J3QXdEaG9BSEFBSEFCd0FNZzR4RGdjQUhBQWZBRElPQndBZkFBZ0FNZzRIQUI4QUJnQUlBQWNBYkF0ckMyMExCd0JzQzJZTGF3c0hBRzRMWmd0c0N3Y0FiZ3RoQzJZTEJ3QnZDMkVMYmdzSEFHOExEd3RoQ3djQU13NDBEalVPQndBekRqWU9OQTRIQURjT05nNHpEZ2NBTnc0NERqWU9Cd0ExRGprT09nNEhBRFVPTkE0NURnY0FPZzQ3RGp3T0J3QTZEamtPT3c0SEFEd09QUTQrRGdjQVBBNDdEajBPQndBK0RqOE9RQTRIQUQ0T1BRNC9EZ2NBUUE1QkRrSU9Cd0JBRGo4T1FRNEhBRUlPUXc1RURnY0FRZzVCRGtNT0J3QkVEa1VPUmc0SEFFUU9RdzVGRGdjQVJnNUhEa2dPQndCR0RrVU9SdzRIQUVnT1NRNUtEZ2NBU0E1SERra09Cd0JLRGtzT1RBNEhBRW9PU1E1TERnY0FUQTVORGs0T0J3Qk1Ea3NPVFE0SEFFNE9UdzVRRGdjQVRnNU5EazhPQndCUURsRU9VZzRIQUZBT1R3NVJEZ2NBVWc1VERsUU9Cd0JTRGxFT1V3NEhBRlFPVlE1V0RnY0FWQTVURGxVT0J3QldEbGNPV0E0SEFGWU9WUTVYRGdjQVdBNVpEbG9PQndCWURsY09XUTRIQUZvT1d3NWNEZ2NBV2c1WkRsc09Cd0JjRGwwT1hnNEhBRndPV3c1ZERnY0FYZzVmRG1BT0J3QmVEbDBPWHc0SEFHQU9ZUTVpRGdjQVlBNWZEbUVPQndCaURtTU9aQTRIQUdJT1lRNWpEZ2NBWkE1bERtWU9Cd0JrRG1NT1pRNEhBR1lPT0E0M0RnY0FaZzVsRGpnT0J3Qm5EbVFPWmc0SEFHY09hQTVrRGdjQWFRNW9EbWNPQndCcERtb09hQTRIQUdnT1lnNWtEZ2NBYUE1ckRtSU9Cd0JxRG1zT2FBNEhBR29PYkE1ckRnY0FhdzVnRG1JT0J3QnJEbTBPWUE0SEFHd09iUTVyRGdjQWJBNXVEbTBPQndCdERsNE9ZQTRIQUcwT2J3NWVEZ2NBYmc1dkRtME9Cd0J1RG5BT2J3NEhBRzhPWEE1ZURnY0FidzV4RGx3T0J3QndEbkVPYnc0SEFIQU9jZzV4RGdjQWNRNWFEbHdPQndCeERuTU9XZzRIQUhJT2N3NXhEZ2NBY2c1MERuTU9Cd0J6RGxnT1dnNEhBSE1PZFE1WURnY0FkQTUxRG5NT0J3QjBEbllPZFE0SEFIVU9WZzVZRGdjQWRRNTNEbFlPQndCMkRuY09kUTRIQUhZT2VBNTNEZ2NBZHc1VURsWU9Cd0IzRG5rT1ZBNEhBSGdPZVE1M0RnY0FlQTU2RG5rT0J3QjVEbElPVkE0SEFIa09ldzVTRGdjQWVnNTdEbmtPQndCNkRud09ldzRIQUhzT1VBNVNEZ2NBZXc1OURsQU9Cd0I4RG4wT2V3NEhBSHdPZmc1OURnY0FmUTVPRGxBT0J3QjlEbjhPVGc0SEFINE9mdzU5RGdjQWZnNkFEbjhPQndCL0Rrd09UZzRIQUg4T2dRNU1EZ2NBZ0E2QkRuOE9Cd0NBRG9JT2dRNEhBSUVPU2c1TURnY0FnUTZERGtvT0J3Q0NEb01PZ1E0SEFJSU9oQTZERGdjQWd3NUlEa29PQndDRERvVU9TQTRIQUlRT2hRNkREZ2NBaEE2R0RvVU9Cd0NGRGtZT1NBNEhBSVVPaHc1R0RnY0FoZzZIRG9VT0J3Q0dEb2dPaHc0SEFJY09SQTVHRGdjQWh3NkpEa1FPQndDSURva09odzRIQUlnT2lnNkpEZ2NBaVE1Q0RrUU9Cd0NKRG9zT1FnNEhBSW9PaXc2SkRnY0FpZzZNRG9zT0J3Q0xEa0FPUWc0SEFJc09qUTVBRGdjQWpBNk5Eb3NPQndDTURvNE9qUTRIQUkwT1BnNUFEZ2NBalE2UERqNE9Cd0NPRG84T2pRNEhBSTRPa0E2UERnY0FqdzQ4RGo0T0J3Q1BEcEVPUEE0SEFKQU9rUTZQRGdjQWtBNlNEcEVPQndDUkRqb09QQTRIQUpFT2t3NDZEZ2NBa2c2VERwRU9Cd0NTRHBRT2t3NEhBSk1PTlE0NkRnY0FrdzZWRGpVT0J3Q1VEcFVPa3c0SEFKUU9sZzZWRGdjQWxRNHpEalVPQndDVkRwY09NdzRIQUpZT2x3NlZEZ2NBbGc2WURwY09Cd0NYRGpjT013NEhBSmNPbVE0M0RnY0FtQTZaRHBjT0J3Q1lEcG9PbVE0SEFKa09aZzQzRGdjQW1RNW5EbVlPQndDYURtY09tUTRIQUpvT2FRNW5EZ2NBVXc2YkRsVU9Cd0JURHB3T213NEhBRkVPbkE1VERnY0FVUTZkRHB3T0J3QlBEcDBPVVE0SEFFOE9uZzZkRGdjQVRRNmVEazhPQndCTkRwOE9uZzRIQUp3T29BNmJEZ2NBbkE2aERxQU9Cd0NkRHFFT25BNEhBSjBPb2c2aERnY0FuZzZpRHAwT0J3Q2VEcU1Pb2c0SEFKOE9vdzZlRGdjQW53NmtEcU1PQndDaERxVU9vQTRIQUtFT3BnNmxEZ2NBb2c2bURxRU9Cd0NpRHFjT3BnNEhBS01PcHc2aURnY0FvdzZvRHFjT0J3Q2tEcWdPb3c0SEFLUU9xUTZvRGdjQXB3NDBEcVlPQndDbkRqa09OQTRIQUtjT093NDVEZ2NBcHc2b0Rqc09Cd0NvRGowT093NEhBS2dPcVE0OURnY0FQdzZxRGtFT0J3QS9EcXNPcWc0SEFFRU9yQTVERGdjQVFRNnFEcXdPQndDckRqME9xUTRIQUtzT1B3NDlEZ2NBUXc2dERrVU9Cd0JERHF3T3JRNEhBRWtPUlE1TERnY0FTUTVIRGtVT0J3QkZEazBPU3c0SEFFVU9yUTVORGdjQXBnNDJEcVVPQndDbURqUU9OZzRIQUdVT3JnNDREZ2NBWlE2dkRxNE9Cd0N2RG1NT1lRNEhBSzhPWlE1akRnY0FwUTQ0RHE0T0J3Q2xEallPT0E0SEFGa09zQTViRGdjQVdRNnhEckFPQndCWERyRU9XUTRIQUZjT3NnNnhEZ2NBc0E1ZERsc09Cd0N3RGw4T1hRNEhBRmNPbXc2eURnY0FWdzVWRHBzT0J3Q3dEbUVPWHc0SEFMQU9ydzVoRGdjQXNnNnVEckVPQndDeURxVU9yZzRIQUxFT3J3NndEZ2NBc1E2dURxOE9Cd0NiRHFVT3NnNEhBSnNPb0E2bERnY0FxUTZxRHFzT0J3Q3BEcVFPcWc0SEFLUU9yQTZxRGdjQXBBNmZEcXdPQndDZkRxME9yQTRIQUo4T1RRNnREZ2NBb2d1bEM2QUxCd0NpQzZNTHBRc0hBTVFMb1F1Z0N3Y0F4QXZCQzZFTEJ3REVDOFlMeFFzSEFNUUx3d3ZHQ3djQXN3NjBEclVPQndDekRyWU90QTRIQUxjT3VBNjVEZ2NBdHc2NkRyZ09Cd0MxRHJzT3ZBNEhBTFVPdEE2N0RnY0F2UTY2RHJjT0J3QzlEcjRPdWc0SEFMd092dzdBRGdjQXZBNjdEcjhPQndEQkRyNE92UTRIQU1FT3dnNitEZ2NBd3c3Q0RzRU9Cd0RERHNRT3dnNEhBTVVPeEE3RERnY0F4UTdHRHNRT0J3REFEc1lPeFE0SEFNQU92dzdHRGdjQXZ3N0VEc1lPQndDL0RzSU94QTRIQU1JT3V3NitEZ2NBd2c2L0Ryc09Cd0MrRHJRT3VnNEhBTDRPdXc2MERnY0F0ZzY2RHJRT0J3QzJEcmdPdWc0SEFNY092UTYzRGdjQXh3N0lEcjBPQndESkRzZ094dzRIQU1rT3lnN0lEZ2NBeUE3QkRyME9Cd0RJRHNzT3dRNEhBTW9PeXc3SURnY0F5ZzdNRHNzT0J3RExEc01Pd1E0SEFNc096UTdERGdjQXpBN05Ec3NPQndETURzNE96UTRIQU0wT3hRN0REZ2NBelE3UERzVU9Cd0RPRHM4T3pRNEhBTTRPMEE3UERnY0F6dzdBRHNVT0J3RFBEdEVPd0E0SEFOQU8wUTdQRGdjQTBBN1NEdEVPQndEUkRyd093QTRIQU5FTzB3NjhEZ2NBMGc3VER0RU9Cd0RTRHRRTzB3NEhBTk1PdFE2OERnY0EwdzdWRHJVT0J3RFVEdFVPMHc0SEFOUU8xZzdWRGdjQTF3NnpEdGdPQndEWERya09zdzRIQU5ZTzJBN1ZEZ2NBMWc3WkR0Z09Cd0RYRHJjT3VRNEhBTmNPeHc2M0RnY0EyZzdIRHRjT0J3RGFEc2tPeHc0SEFMa090ZzZ6RGdjQXVRNjREcllPQndDMUR0Z09zdzRIQUxVTzFRN1lEZ2NBMmc3WUR0a09Cd0RhRHRjTzJBNEhBQW9JQndnTkNBY0FDZ2dJQ0FjSUJ3QWdDQXNJRFFnSEFDQUlIZ2dMQ0FjQUxBaWJCd1VJQndBc0NDb0ltd2NIQUN3SUhnZ2dDQWNBTEFnckNCNElCd0RiRHR3TzNRNEhBTnNPM2c3Y0RnY0EzdzdnRHVFT0J3RGZEdUlPNEE0SEFPSU8zZzdnRGdjQTRnN2NEdDRPQndEakR1UU81UTRIQU9NTzVnN2tEZ2NBNXc3b0R1a09Cd0RuRHVvTzZBNEhBT1FPNXc3bERnY0E1QTdxRHVjT0J3RHJEdHdPN0E0SEFPc08zUTdjRGdjQTdBN2lEdTBPQndEc0R0d080ZzRIQU8wTzN3N3VEZ2NBN1E3aUR0OE9Cd0R2RHZBTzhRNEhBTzhPOGc3d0RnY0E4dzd5RHU4T0J3RHpEdlFPOGc0SEFQVU85QTd6RGdjQTlRNzJEdlFPQndEZ0R1VU81dzRIQU9BTzNnN2xEZ2NBNVE3YkR1TU9Cd0RsRHQ0TzJ3NEhBT2tPNEE3bkRnY0E2UTdoRHVBT0J3RGZEdmNPN2c0SEFOOE8rQTczRGdjQTRRNzREdDhPQndEaER2a08rQTRIQU9rTytRN2hEZ2NBNlE3NkR2a09Cd0RvRHZvTzZRNEhBT2dPK3c3NkRnY0E5UTc4RHZZT0J3RDFEdjBPL0E0SEFQZ08vZzczRGdjQStBNy9EdjRPQndENUR2OE8rQTRIQVBrT0FBLy9EZ2NBK2c0QUQva09Cd0Q2RGdFUEFBOEhBUHNPQVEvNkRnY0ErdzRDRHdFUEJ3RDlEZ01QL0E0SEFQME9CQThERHdjQUJROEdEd2NQQndBRkR3Z1BCZzhIQUFjUENROEtEd2NBQnc4R0R3a1BCd0FKRHdzUENnOEhBQWtQREE4TER3Y0FEUThNRHc0UEJ3QU5Ed3NQREE4SEFBOFBEZzhRRHdjQUR3OE5EdzRQQndBRkR4RVBDQThIQUFVUEVnOFJEd2NBRWc4VER4RVBCd0FTRHhRUEV3OEhBQlFQRlE4VER3Y0FGQThXRHhVUEJ3QVdEeGNQRlE4SEFCWVBHQThYRHdjQUdBOFpEeGNQQndBWUR4b1BHUThIQUJzUEhBOGREd2NBR3c4ZUR4d1BCd0FkRHg4UElBOEhBQjBQSEE4ZkR3Y0FJQThoRHlJUEJ3QWdEeDhQSVE4SEFDSVBJdzhrRHdjQUlnOGhEeU1QQndEZERpUVBJdzhIQU4wTzZ3NGtEd2NBSlE4UkR4TVBCd0FsRHlZUEVROEhBQ0lQSmc4bER3Y0FJZzhrRHlZUEJ3QW1Ed2dQRVE4SEFDWVBKdzhJRHdjQUpBOG5EeVlQQndBa0Qrc09KdzhIQUNjUEJnOElEd2NBSnc4b0R3WVBCd0RyRGlnUEp3OEhBT3NPN0E0b0R3Y0FLQThKRHdZUEJ3QW9EeWtQQ1E4SEFPd09LUThvRHdjQTdBN3REaWtQQndBcER3d1BDUThIQUNrUEtnOE1Ed2NBN1E0cUR5a1BCd0R0RHU0T0tnOEhBQ29QRGc4TUR3Y0FLZzhyRHc0UEJ3RHVEaXNQS2c4SEFPNE85dzRyRHdjQUt3OFFEdzRQQndBckR5d1BFQThIQVBjT0xBOHJEd2NBOXc3K0Rpd1BCd0F0RHhNUEZROEhBQzBQSlE4VER3Y0FJQThsRHkwUEJ3QWdEeUlQSlE4SEFDNFBGUThYRHdjQUxnOHREeFVQQndBZER5MFBMZzhIQUIwUElBOHREd2NBTHc4WER4a1BCd0F2RHk0UEZ3OEhBQnNQTGc4dkR3Y0FHdzhkRHk0UEJ3QWhEekFQSXc4SEFDRVBNUTh3RHdjQU1ROHlEekFQQndBeER6TVBNZzhIQURRUE13OHhEd2NBTkE4MUR6TVBCd0EyRHpVUE5BOEhBRFlQTnc4MUR3Y0FPQTgzRHpZUEJ3QTREemtQTnc4SEFOc09Jdzh3RHdjQTJ3N2REaU1QQndBd0QrTU8ydzRIQURBUE1nL2pEZ2NBT1E4NkR6Y1BCd0E1RHpzUE9nOEhBRGNQUEE4MUR3Y0FOdzg2RHp3UEJ3QTFEejBQTXc4SEFEVVBQQTg5RHdjQVBnOC9EMEFQQndBK0QwRVBQdzhIQUVFUFFnOC9Ed2NBUVE5REQwSVBCd0JFRDc0SFJROEhBRVFQd1FlK0J3Y0E1ZzR5RDBZUEJ3RG1EdU1PTWc4SEFESVBQUTlHRHdjQU1nOHpEejBQQndCSEQwZ1BTUThIQUVjUFNnOUlEd2NBU3c5TUQwMFBCd0JMRDA0UFRBOEhBRTBQVHc5UUR3Y0FUUTlNRDA4UEJ3QlFEMG9QUnc4SEFGQVBUdzlLRHdjQVVROVNEMU1QQndCUkQxUVBVZzhIQUZVUFZnOVhEd2NBVlE5WUQxWVBCd0R4RGtrUFNBOEhBUEVPOEE1SkR3Y0FXUTlhRDFzUEJ3QlpEMXdQV2c4SEFGMFBYQTlaRHdjQVhROWVEMXdQQndCY0QxOFBXZzhIQUZ3UFlBOWZEd2NBWGc5Z0Qxd1BCd0JlRDJFUFlBOEhBR0FQWWc5ZkR3Y0FZQTlqRDJJUEJ3QmhEMk1QWUE4SEFHRVBaQTlqRHdjQVl3OWxEMklQQndCakQyWVBaUThIQUdRUFpnOWpEd2NBWkE5bkQyWVBCd0JtRHo0UFpROEhBR1lQYUE4K0R3Y0FadzlvRDJZUEJ3Qm5EMmtQYUE4SEFHZ1BRUTgrRHdjQWFBOXFEMEVQQndCcEQyb1BhQThIQUdrUGF3OXFEd2NBYWc5REQwRVBCd0JxRDJ3UFF3OEhBR3NQYkE5cUR3Y0Fhdzl0RDJ3UEJ3QnVEOEVIUkE4SEFHNFA2d2ZCQndjQWJ3L3JCMjRQQndCdkQrMEg2d2NIQUhBUFd3OXhEd2NBY0E5WkQxc1BCd0J5RDFrUGNBOEhBSElQWFE5WkR3Y0FjdzliRDFvUEJ3QnpEM1FQV3c4SEFIUVBjUTliRHdjQWRBOTFEM0VQQndCMkQxb1BYdzhIQUhZUGN3OWFEd2NBZHc5ZkQySVBCd0IzRDNZUFh3OEhBSGdQWWc5bER3Y0FlQTkzRDJJUEJ3QjVEMlVQUGc4SEFIa1BlQTlsRHdjQWVnOCtEMEFQQndCNkQza1BQZzhIQUhzUFV3OVNEd2NBZXc5OEQxTVBCd0I5RHg0UEd3OEhBSDBQZmc4ZUR3Y0FkZzkrRDMwUEJ3QjJEM2NQZmc4SEFIY1BmdzkrRHdjQWR3OTREMzhQQndCL0R6a1BPQThIQUg4UGdBODVEd2NBZUErQUQzOFBCd0I0RDNrUGdBOEhBSUFQT3c4NUR3Y0FnQStCRHpzUEJ3QjVENEVQZ0E4SEFIa1BlZytCRHdjQWdnOU9EMHNQQndDQ0Q0TVBUZzhIQUh3UGd3K0NEd2NBZkE5N0Q0TVBCd0NFRHhzUEx3OEhBSVFQZlE4YkR3Y0Fjdzk5RDRRUEJ3QnpEM1lQZlE4SEFJVVBMdzhaRHdjQWhRK0VEeThQQndCMEQ0UVBoUThIQUhRUGN3K0VEd2NBaGc4WkR4b1BCd0NHRDRVUEdROEhBSFVQaFErR0R3Y0FkUTkwRDRVUEJ3QXhENGNQTkE4SEFERVBJUStIRHdjQWlBK0pENG9QQndDSUQ0c1BpUThIQUl3UGpRK09Ed2NBakErUEQ0MFBCd0NMRDVBUGlROEhBSXNQa1ErUUR3Y0FrZytNRDQ0UEJ3Q1NENU1QakE4SEFKRVBsQStRRHdjQWtRK1ZENVFQQndDV0Q1TVBrZzhIQUpZUGx3K1REd2NBbFErWUQ1UVBCd0NWRDVrUG1BOEhBSmdQbWcrYkR3Y0FtQStaRDVvUEJ3Q2JENWNQbGc4SEFKc1BtZytYRHdjQW5BK2FENWtQQndDY0Q1MFBtZzhIQUowUGx3K2FEd2NBblErZUQ1Y1BCd0NlRDVNUGx3OEhBSjRQbncrVER3Y0FudytNRDVNUEJ3Q2ZENkFQakE4SEFLRVBqdytpRHdjQW9RK0lENDhQQndDaEQ0c1BpQThIQUtFUG93K0xEd2NBb3crUkQ0c1BCd0NqRDZRUGtROEhBS1FQbFErUkR3Y0FwQStsRDVVUEJ3Q2xENWtQbFE4SEFLVVBuQStaRHdjQXBnOS9EemdQQndDbUQ2Y1BmdzhIQUo0UHB3K21Ed2NBbmcrZEQ2Y1BCd0NuRDM0UGZ3OEhBS2NQcUE5K0R3Y0FuUStvRDZjUEJ3Q2RENXdQcUE4SEFLZ1BIZzkrRHdjQXFBK3BEeDRQQndDY0Q2a1BxQThIQUp3UHBRK3BEd2NBcVE4Y0R4NFBCd0NwRDZvUEhBOEhBS1VQcWcrcER3Y0FwUStrRDZvUEJ3Q3FEeDhQSEE4SEFLb1BxdzhmRHdjQXBBK3JENm9QQndDa0Q2TVBxdzhIQUtzUElROGZEd2NBcXcrc0R5RVBCd0NqRDZ3UHF3OEhBS01Qb1Erc0R3Y0FyUStIRDY0UEJ3Q3REelFQaHc4SEFLRVByZytzRHdjQW9RK2lENjRQQndDdER6WVBOQThIQUswUHJ3ODJEd2NBb0ErdkQ2MFBCd0NnRDU4UHJ3OEhBSzhQT0E4MkR3Y0FydyttRHpnUEJ3Q2ZENllQcnc4SEFKOFBuZyttRHdjQUNnK3dEd2NQQndBS0Q3RVBzQThIQUFjUHNnOEZEd2NBQncrd0Q3SVBCd0FGRDdNUEVnOEhBQVVQc2crekR3Y0FFZyswRHhRUEJ3QVNEN01QdEE4SEFCUVB0UThXRHdjQUZBKzBEN1VQQndDeEQ3WVBzQThIQUxFUHR3KzJEd2NBc0ErNEQ3SVBCd0N3RDdZUHVBOEhBTElQdVErekR3Y0FzZys0RDdrUEJ3Q3pEN29QdEE4SEFMTVB1USs2RHdjQXRBKzdEN1VQQndDMEQ3b1B1dzhIQUFvUERRK3hEd2NBQ2c4TER3MFBCd0FORDdjUHNROEhBQTBQRHcrM0R3Y0FHQSs4RHhvUEJ3QVlENzBQdkE4SEFCb1B2ZytHRHdjQUdnKzhENzRQQndDR0Q3OFBkUThIQUlZUHZnKy9Ed2NBY1EvQUQzQVBCd0J4RDhFUHdBOEhBSFVQd1E5eER3Y0FkUSsvRDhFUEJ3QndEOElQY2c4SEFIQVB3QS9DRHdjQXZRL0REN3dQQndDOUQ4UVB3dzhIQUx3UHhRKytEd2NBdkEvREQ4VVBCd0MrRDhZUHZ3OEhBTDRQeFEvR0R3Y0F2dy9IRDhFUEJ3Qy9EOFlQeHc4SEFNRVB5QS9BRHdjQXdRL0hEOGdQQndEQUQ4a1B3ZzhIQU1BUHlBL0pEd2NBR0ErMUQ3MFBCd0FZRHhZUHRROEhBTDBQdXcvRUR3Y0F2USsxRDdzUEJ3QkZEMGdJeWc4SEFFVVB2Z2RJQ0FjQXl3L01EODBQQndETEQ4NFB6QThIQU1vUFRnalBEd2NBeWc5SUNFNElCd0RORDlBUDBROEhBTTBQekEvUUR3Y0FSUS9TRDBRUEJ3QkZEOU1QMGc4SEFOSVAxQS9WRHdjQTBnL1REOVFQQndCRUQ5WVBiZzhIQUVRUDBnL1dEd2NBMXcvU0Q5VVBCd0RYRDlZUDBnOEhBTmdQYmcvV0R3Y0EyQTl2RDI0UEJ3RFpEOVlQMXc4SEFOa1AyQS9XRHdjQXlnL1REMFVQQndES0Q5b1AwdzhIQU5NUDJ3L1VEd2NBMHcvYUQ5c1BCd0RQRDlvUHlnOEhBTThQM0EvYUR3Y0EyZy9kRDlzUEJ3RGFEOXdQM1E4SEFONFAzdy9nRHdjQTNnL2hEOThQQndCVkQrRVAzZzhIQUZVUFZ3L2hEd2NBNGc5QUR6OFBCd0RpRCtNUFFBOEhBRkVQNHcvaUR3Y0FVUTlURCtNUEJ3RGpEM29QUUE4SEFPTVA1QTk2RHdjQVV3L2tEK01QQndCVEQzd1A1QThIQU9RUGdROTZEd2NBNUEvbEQ0RVBCd0I4RCtVUDVBOEhBSHdQZ2cvbER3Y0E1UTg3RDRFUEJ3RGxEK1lQT3c4SEFJSVA1Zy9sRHdjQWdnOUxEK1lQQndEbUR6b1BPdzhIQU9ZUDV3ODZEd2NBU3cvbkQrWVBCd0JMRDAwUDV3OEhBT2NQUEE4NkR3Y0E1dy9vRHp3UEJ3Qk5EK2dQNXc4SEFFMFBVQS9vRHdjQTZBODlEendQQndEb0Qra1BQUThIQUZBUDZRL29Ed2NBVUE5SEQra1BCd0RwRDBZUFBROEhBT2tQNmc5R0R3Y0FSdy9xRCtrUEJ3QkhEMGtQNmc4SEFPb1A1ZzVHRHdjQTZnL3JEK1lPQndCSkQrc1A2ZzhIQUVrUDhBN3JEd2NBNncva0R1WU9Cd0RyRCt3UDVBNEhBUEFPN0EvckR3Y0E4QTd5RHV3UEJ3RHNEK29PNUE0SEFPd1A3US9xRGdjQThnN3REK3dQQndEeUR2UU83UThIQU8wUDZBN3FEZ2NBN1EvdUQrZ09Cd0QwRHU0UDdROEhBUFFPOWc3dUR3Y0E3Zy83RHVnT0J3RHVEKzhQK3c0SEFQWU83dy91RHdjQTlnNzhEdThQQndEdkR3SVArdzRIQU84UDhBOENEd2NBL0E3d0QrOFBCd0Q4RGdNUDhBOEhBUEVQMUEvYkR3Y0E4US95RDlRUEJ3RE1EL0lQOFE4SEFNd1B6Zy95RHdjQTh3L2JEOTBQQndEekQvRVAydzhIQU5BUDhRL3pEd2NBMEEvTUQvRVBCd0QwRDlVUDFBOEhBUFFQOVEvVkR3Y0E5Zy9PRDhzUEJ3RDJEL2NQemc4SEFOY1A5US80RHdjQTF3L1ZEL1VQQndEWkQvZ1ArUThIQU5rUDF3LzREd2NBK2cvVUQvSVBCd0Q2RC9RUDFBOEhBUGNQOGcvT0R3Y0E5dy82RC9JUEJ3RDdEL1VQOUE4SEFQc1AvQS8xRHdjQS9BLzlELzRQQndEOEQvc1AvUThIQVA4UEFCQUJFQWNBL3c4Q0VBQVFCd0FERUFRUUJSQUhBQU1RQmhBRUVBY0FCeEQxRC93UEJ3QUhFUGdQOVE4SEFBZ1EvQS8rRHdjQUNCQUhFUHdQQndBSkVQZ1BCeEFIQUFrUStRLzREd2NBQ2hBSEVBZ1FCd0FLRUFrUUJ4QUhBQXNRREJBTkVBY0FDeEFPRUF3UUJ3RDdEdzhRL1E4SEFQc1BFQkFQRUFjQUJoQU5FQVFRQndBR0VBc1FEUkFIQUJBUUFCQVBFQWNBRUJBQkVBQVFCd0FSRVA0UC9ROEhBQkVRRWhEK0R3Y0FFeEFBRUFJUUJ3QVRFQlFRQUJBSEFBZ1FFaEFWRUFjQUNCRCtEeElRQndBS0VCVVFGaEFIQUFvUUNCQVZFQWNBRnhEOUR3OFFCd0FYRUJFUS9ROEhBQlFRRHhBQUVBY0FGQkFYRUE4UUJ3QVlFQklRRVJBSEFCZ1FHUkFTRUFjQUdSQkNEME1QQndBWkVCZ1FRZzhIQUJvUUd4QWNFQWNBR2hBZEVCc1FCd0FhRUJRUUV4QUhBQm9RSEJBVUVBY0FIaEFTRUJrUUJ3QWVFQlVRRWhBSEFHd1BHUkJERHdjQWJBOGVFQmtRQndBZkVCVVFIaEFIQUI4UUZoQVZFQWNBYlE4ZUVHd1BCd0J0RHg4UUhoQUhBQ0FRRVJBWEVBY0FJQkFZRUJFUUJ3QVlFQ0VRUWc4SEFCZ1FJQkFoRUFjQUhCQVhFQlFRQndBY0VDQVFGeEFIQUNBUUd4QWhFQWNBSUJBY0VCc1FCd0JWRHgwUVdBOEhBRlVQR3hBZEVBY0FXQTlVRDFZUEJ3QllEeDBRVkE4SEFGUVBWdzlXRHdjQVZBOVJEMWNQQndEZ0R5RVEzZzhIQU9BUFFnOGhFQWNBNGcvZkQrRVBCd0RpRHo4UDN3OEhBRDhQNEEvZkR3Y0FQdzlDRCtBUEJ3RGVEeHNRVlE4SEFONFBJUkFiRUFjQVVRL2hEMWNQQndCUkQrSVA0UThIQUFVUS93OERFQWNBQlJEMkQvOFBCd0QvRHdZUUF4QUhBUDhQQVJBR0VBY0FCQkQyRHdVUUJ3QUVFUGNQOWc4SEFCQVFEaEFMRUFjQUVCRDdEdzRRQndEN0R3d1FEaEFIQVBzUDlBOE1FQWNBREJENkR3MFFCd0FNRVBRUCtnOEhBQUVRQ3hBR0VBY0FBUkFRRUFzUUJ3QU5FUGNQQkJBSEFBMFErZy8zRHdjQWlBK05ENDhQQndDSUQ0b1BqUThIQUl3UG9nK1BEd2NBakErZ0Q2SVBCd0FoRDY0UGh3OEhBQ0VQckErdUR3Y0FvQSt1RDZJUEJ3Q2dENjBQcmc4SEFBUUZCUVVEQlFjQUJBVUdCUVVGQndBSUJRWUZCQVVIQUFnRkJ3VUdCUWNBQ1FYTUJBTUZCd0FKQmY4RXpBUUhBQUVBSWhBakVBY0FBUUFEQUNJUUJ3QWtFQUVBSXhBSEFDUVFCUUFCQUFjQUpSQUZBQ1FRQndBbEVBOEFCUUFIQUJNQUpoQW5FQWNBRXdBVkFDWVFCd0FtRUNnUUp4QUhBQ1lRS1JBb0VBY0FLUkFxRUNnUUJ3QXBFQ3NRS2hBSEFDc1FMQkFxRUFjQUt4QXRFQ3dRQndBdEVDSUFMQkFIQUMwUUl3QWlBQWNBQXdBbkVDSVFCd0FEQUJNQUp4QUhBQ2NRSXhBaUVBY0FKeEFvRUNNUUJ3QW9FQ1FRSXhBSEFDZ1FLaEFrRUFjQUtoQWxFQ1FRQndBcUVDd1FKUkFIQUN3UUR3QWxFQWNBTEJBaUFBOEFCd0F1RUM4UU1CQUhBQzRRTVJBdkVBY0FNaEF3RURNUUJ3QXlFQzRRTUJBSEFEUVFNeEExRUFjQU5CQXlFRE1RQndDd0JEVVFzUVFIQUxBRU5CQTFFQWNBTmhBeEVEY1FCd0EyRUM4UU1SQUhBRGdRTmhBNUVBY0FPQkF2RURZUUJ3QTZFQzhRT0JBSEFEb1FNQkF2RUFjQU94QXdFRG9RQndBN0VETVFNQkFIQUR3UU14QTdFQWNBUEJBMUVETVFCd0M1QkRVUVBCQUhBTGtFc1FRMUVBY0FQUkErRUQ4UUJ3QTlFRUFRUGhBSEFFRVFQeEJDRUFjQVFSQTlFRDhRQndCREVFSVFSQkFIQUVNUVFSQkNFQWNBUlJCRUVFWVFCd0JGRUVNUVJCQUhBTVFFUmhERkJBY0F4QVJGRUVZUUJ3QkhFRUFRUFJBSEFFY1FTQkJBRUFjQVNSQTlFRUVRQndCSkVFY1FQUkFIQUVvUVFSQkRFQWNBU2hCSkVFRVFCd0JMRUVNUVJSQUhBRXNRU2hCREVBY0F5d1JGRU1RRUJ3RExCRXNRUlJBSEFFd1FUUkJPRUFjQVRCQlBFRTBRQndCT0VGQVFUQkFIQUU0UVVSQlFFQWNBVWhCVEVGUVFCd0JTRUZVUVV4QUhBRllRVlJCU0VBY0FWaEJYRUZVUUJ3QlZFRmdRVXhBSEFGVVFXUkJZRUFjQVZ4QlpFRlVRQndCWEVGb1FXUkFIQUZzUVVCQmNFQWNBV3hCTUVGQVFCd0JkRUV3UVd4QUhBRjBRVHhCTUVBY0FVaEEzRUZZUUJ3QlNFRFlRTnhBSEFGUVFOaEJTRUFjQVZCQTVFRFlRQndDd0JGNFFOQkFIQUxBRTN3UmVFQWNBTkJCZkVESVFCd0EwRUY0UVh4QUhBRElRWUJBdUVBY0FNaEJmRUdBUUJ3QXVFR0VRTVJBSEFDNFFZQkJoRUFjQU1SQmlFRGNRQndBeEVHRVFZaEFIQURjUVl4QldFQWNBTnhCaUVHTVFCd0JXRUdRUVZ4QUhBRllRWXhCa0VBY0FWeEJsRUZvUUJ3QlhFR1FRWlJBSEFOOEVaaEJlRUFjQTN3VG9CR1lRQndCZUVHY1FYeEFIQUY0UVpoQm5FQWNBWHhCb0VHQVFCd0JmRUdjUWFCQUhBR0FRYVJCaEVBY0FZQkJvRUdrUUJ3QmhFR29RWWhBSEFHRVFhUkJxRUFjQVloQnJFR01RQndCaUVHb1FheEFIQUdNUWJCQmtFQWNBWXhCckVHd1FCd0JrRUcwUVpSQUhBR1FRYkJCdEVBY0FiaEJ2RUhBUUJ3QnVFSEVRYnhBSEFISVFjUkJ1RUFjQWNoQnpFSEVRQndCMEVITVFjaEFIQUhRUWRSQnpFQWNBZGhCMUVIUVFCd0IyRUhjUWRSQUhBSGdRZHhCMkVBY0FlQkI1RUhjUUJ3QjZFSGtRZUJBSEFIb1FleEI1RUFjQXhRUjdFUDRFQndERkJFWVFleEFIQUVZUWVSQjdFQWNBUmhCRUVIa1FCd0JFRUhjUWVSQUhBRVFRUWhCM0VBY0FQeEIzRUVJUUJ3QS9FSFVRZHhBSEFITVFQeEErRUFjQWN4QjFFRDhRQndCZEVFMFFUeEFIQUYwUWZCQk5FQWNBUGhCOUVINFFCd0ErRUVBUWZSQUhBRWdRZlJCQUVBY0FTQkIvRUgwUUJ3Qk9FSUFRZ1JBSEFFNFFUUkNBRUFjQWdoQjlFSU1RQndDQ0VINFFmUkFIQUlRUWZSQi9FQWNBaEJDREVIMFFCd0NCRUZFUVRoQUhBSUVRaFJCUkVBY0FnaEJ4RUg0UUJ3Q0NFRzhRY1JBSEFIRVFQaEIrRUFjQWNSQnpFRDRRQndDQ0VJWVFieEFIQUlJUWdCQ0dFQWNBY0JDR0VId1FCd0J3RUc4UWhoQUhBSWNRY0JCOEVBY0FoeENJRUhBUUJ3Q0lFRzRRY0JBSEFJZ1FpUkJ1RUFjQWlSQnlFRzRRQndDSkVJb1FjaEFIQUlvUWRCQnlFQWNBaWhDTEVIUVFCd0NMRUhZUWRCQUhBSXNRakJCMkVBY0FqQkI0RUhZUUJ3Q01FSTBRZUJBSEFJMFFlaEI0RUFjQWpSQ09FSG9RQndDUEVId1FYUkFIQUk4UWh4QjhFQWNBa0JCckVHb1FCd0NRRUpFUWF4QUhBSkVRYkJCckVBY0FrUkNTRUd3UUJ3Q1NFRzBRYkJBSEFKSVFreEJ0RUFjQWt4QmxFRzBRQndDVEVKUVFaUkFIQUpRUVdoQmxFQWNBbEJDVkVGb1FCd0NWRUZrUVdoQUhBSlVRbGhCWkVBY0FsaEJZRUZrUUJ3Q1dFSmNRV0JBSEFKZ1FhaEJwRUFjQW1CQ1FFR29RQndDWkVHa1FhQkFIQUprUW1CQnBFQWNBbWhCb0VHY1FCd0NhRUprUWFCQUhBSnNRWnhCbUVBY0FteENhRUdjUUJ3QWZCV1lRNkFRSEFCOEZteEJtRUFjQW14Q01CWndRQndDYkVCOEZqQVVIQUowUWpoQ05FQWNBblJDY0VJNFFCd0NhRUp3UW5SQUhBSm9RbXhDY0VBY0FuaENORUl3UUJ3Q2VFSjBRalJBSEFKa1FuUkNlRUFjQW1SQ2FFSjBRQndDZkVJd1FpeEFIQUo4UW5oQ01FQWNBbUJDZUVKOFFCd0NZRUprUW5oQUhBS0FRaXhDS0VBY0FvQkNmRUlzUUJ3Q1FFSjhRb0JBSEFKQVFtQkNmRUFjQW9SQ0tFSWtRQndDaEVLQVFpaEFIQUpFUW9CQ2hFQWNBa1JDUUVLQVFCd0NpRUlrUWlCQUhBS0lRb1JDSkVBY0FraENoRUtJUUJ3Q1NFSkVRb1JBSEFLTVFvaENJRUFjQW94Q0lFSWNRQndDVEVKSVFvaEFIQUpNUW9oQ2pFQWNBcEJDakVJY1FCd0NrRUljUWp4QUhBSlFRa3hDakVBY0FsQkNqRUtRUUJ3Q2xFS1FRanhBSEFLVVFqeEJkRUFjQWxSQ1VFS1FRQndDVkVLUVFwUkFIQUtZUXBSQmRFQWNBcGhCZEVGc1FCd0NXRUpVUXBSQUhBSllRcFJDbUVBY0FweENtRUZzUUJ3Q25FRnNRWEJBSEFKY1FsaENtRUFjQWx4Q21FS2NRQndDeEJiTUZxQkFIQUxFRnFCQ3BFQWNBcUJDcUVLc1FCd0NvRUtzUXFSQUhBS29RckJDdEVBY0FxaEN0RUtzUUJ3Q3NFSzRRcnhBSEFLd1FyeEN0RUFjQXJoQytCYjBGQndDdUVMMEZyeEFIQU1BRnNRV3BFQWNBd0FXcEVMQVFCd0NwRUtzUXNSQUhBS2tRc1JDd0VBY0FxeEN0RUxJUUJ3Q3JFTElRc1JBSEFLMFFyeEN6RUFjQXJSQ3pFTElRQndDdkVMMEZ5UVVIQUs4UXlRV3pFQWNBekFYQUJiQVFCd0RNQmJBUXRCQUhBTEFRc1JDMUVBY0FzQkMxRUxRUUJ3Q3hFTElRdGhBSEFMRVF0aEMxRUFjQXNoQ3pFTGNRQndDeUVMY1F0aEFIQUxNUXlRWFVCUWNBc3hEVUJiY1FCd0RYQmN3RnRCQUhBTmNGdEJDNEVBY0F0QkMxRUxrUUJ3QzBFTGtRdUJBSEFMVVF0aEM2RUFjQXRSQzZFTGtRQndDMkVMY1F1eEFIQUxZUXV4QzZFQWNBdHhEVUJkOEZCd0MzRU44RnV4QUhBT1lGdkJDY0VBY0E1Z1djRUl3RkJ3QzhFTDBRamhBSEFMd1FqaENjRUFjQXZSQytFSG9RQndDOUVIb1FqaEFIQUw0UXZ4QjdFQWNBdmhCN0VIb1FCd0MvRU9zRi9nUUhBTDhRL2dSN0VBY0E5UVhBRUx3UUJ3RDFCYndRNWdVSEFMNEZyaERBRUFjQXZnWEFFUFVGQndEQUVNRVF2UkFIQU1BUXZSQzhFQWNBcmhDc0VNRVFCd0N1RU1FUXdCQUhBTUVRd2hDK0VBY0F3UkMrRUwwUUJ3Q3NFS29Rd2hBSEFLd1F3aERCRUFjQXdoRERFTDhRQndEQ0VMOFF2aEFIQUtvUXFCRERFQWNBcWhEREVNSVFCd0RERVBvRjZ3VUhBTU1RNndXL0VBY0FxQkN6QmZvRkJ3Q29FUG9Gd3hBSEFJSVFneENCRUFjQWdoQ0JFSUFRQndDREVJUVFoUkFIQUlNUWhSQ0JFQWNBVFJCOEVJWVFCd0JORUlZUWdCQUhBREJCZXdBQUFISmhkalF0TTNOMGIzQUFOQUFBQUFFQUFnQURBQWdBQ1FBTUFBMEFEZ0FQQUJBQUVRQVlBQmtBR2dBYkFDQUFJUUFpQUNNQUpBQWxBQ3dBTFFBdUFDOEFpQjJKSFlvZGl4Mk1IWTBkamgyUEhaQWRrUjJTSFpNZGxCMlZIWllkbHgyWUhaa2RtaDJiSFp3ZG5SMmVIWjhkb0IyaEhUQkJvUkFBQUhKaGRqUXRjMmhwWld4a2N3QkdDQVFBQlFBR0FBY0FDZ0FMQUJJQUV3QVVBQlVBRmdBWEFCd0FIUUFlQUI4QUpnQW5BQ2dBS1FBcUFDc0FNQUF4QURJQU13QU9DUThKRUFrUkNSSUpFd2tVQ1JVSkZna1hDUmdKR1FrYUNSc0pIQWtkQ1I0Skh3a2dDU0VKSWdrakNTUUpKUWttQ1NjSktBa3BDU29KS3drc0NTMEpMZ2t2Q1RBSk1Ra3lDVE1KTkFrMUNUWUpOd2s0Q1RrSk9nazdDVHdKUFFrK0NUOEpRQWxCQ1VJSlF3bEVDVVVKUmdsSENVZ0pTUWxLQ1VzSlRBbE5DVTRKVHdsUUNWRUpVZ2xUQ1ZRSlZRbFdDVmNKV0FsWkNWb0pXd2xjQ1YwSlhnbGZDV0FKWVFsaUNXTUpaQWxsQ1dZSlp3bG9DV2tKYWdsckNXd0piUWx1Q1c4SmNBbHhDWElKY3dsMENYVUpkZ2wzQ1hnSmVRbDZDWHNKZkFsOUNYNEpmd21BQ1lFSmdnbURDWVFKaFFtR0NZY0ppQW1KQ1lvSml3bU1DWTBKamdtUENaQUprUW1TQ1pNSmxBbVZDWllKbHdtWUNaa0ptZ21iQ1p3Sm5RbWVDWjhKb0FtaENhSUpvd21rQ2FVSnBnbW5DYWdKcVFtcUNhc0pyQW10Q2E0SnJ3bXdDYkVKc2dtekNiUUp0UW0yQ2JjSnVBbTVDYm9KdXdtOENiMEp3QW5CQ2NJSnd3bkVDY1VKeGduSENjZ0p5UW5LQ2NzSnpBbk5DYzRKenduUUNkRUowZ25UQ2RRSjFRbldDZGNKMkFuWkNkb0oyd25jQ2QwSjNnbmZDZUFKNFFuaUNlTUo1QW5sQ2VZSjV3bm9DZWtKNmduckNld0o3UWtnQ2lFS0lnb2pDaVFLSlFvcUNpc0tMQW90Q2pRS05RbzJDamNLT0FvNUNqNEtQd3BBQ2tFS1NBcEpDa29LU3dwTUNrMEtVZ3BUQ2xRS1ZRcGNDbDBLWGdwZkNtQUtZUXBtQ21jS2FBcHBDbW9LYXdwc0NtMEtiZ3B2Q25BS2NRcDhDbjBLZmdwL0NvQUtnUXFDQ29NS2hBcUZDb1lLaHdxSUNva0tpZ3FMQ293S2pRcWlDcU1LcEFxbENoQU5FUTFvRDJrUGFnOXJEMndQYlE5dUQyOFBjQTl4RDNJUGN3OTBEM1VQZGc5M0QzZ1BlUTk2RDNzUGZBOTlEMzRQZncrQUQ0RVBnZytERDRRUGhRK0dENGNQaUErSkQ0b1BpdytNRDQwUGpnK1BENUFQa1ErU0Q1TVBsQStWRDVZUGx3K1lENWtQbWcrYkQ1d1BuUStlRDU4UG9BK2hENklQb3cra0Q2VVBwZytuRDZnUHFRK3FENnNQckErdEQ2NFBydyt3RDdFUHNnK3pEN1FQdFErMkQ3Y1B1QSs1RDdvUHV3KzhENzBQdmcrL0Q4QVB3US9DRDhNUHhBL0ZEOFlQeHcvSUQ4a1B5Zy9MRDh3UHpRL09EODhQMEEvUkQ5SVAwdy9VRDlVUDFnL1hEOWdQMlEvYUQ5c1AzQS9kRDk0UDN3L2dEK0VQNGcvakQrUVA1US9tRCtjUDZBL3BEK29QNncvc0QrMFA3Zy92RC9BUDhRL3lEL01QOUEvMUQvWVA5dy80RC9rUCtnLzdEL3dQL1EvK0QvOFBBQkFCRUFJUUF4QUVFQVVRQmhBSEVBZ1FDUkFLRUFzUURCQU5FQTRRRHhBUUVCRVFFaEFURUJRUUZSQVdFQmNRR0JBWkVCb1FHeEFjRUIwUUhoQWZFQ0FRSVJBaUVDTVFKQkFsRUNZUUp4QW9FQ2tRS2hBckVDd1FMUkF1RUM4UU1CQXhFRElRTXhBMEVEVVFOaEEzRURnUU9SQTZFRHNRUEJBOUVENFFQeEJBRUVFUVFoQkRFRVFRUlJCR0VFY1FTQkJKRUVvUVN4Qk1FRTBRVGhCUEVGQVFVUkJTRUZNUVZCQlZFRllRVnhCWUVGa1FXaEJiRUZ3UVhSQmVFRjhRWUJCaEVHSVFZeEJrRUdVUVpoQm5FR2dRYVJCcUVHc1FiQkJ0RUc0UWJ4QndFSEVRY2hCekVIUVFkUkIyRUhjUWVCQjVFSG9RZXhCOEVIMFFmaEIvRUlBUWdSQ0NFSU1RaEJDRkVJWVFoeENJRUlrUWloQ0xFSXdRalJDT0VJOFFrQkNSRUpJUWt4Q1VFSlVRbGhDWEVKZ1FtUkNhRUpzUW5CQ2RFSjRRbnhDZ0VLRVFvaENqRUtRUXBSQ21FS2NRcUJDcEVLb1FxeENzRUswUXJoQ3ZFTEFRc1JDeUVMTVF0QkMxRUxZUXR4QzRFTGtRdWhDN0VMd1F2UkMrRUw4UXdCREJFTUlRd3hERUVNVVF4aERIRU1nUXlSREtFTXNRekJETkVNNFF6eERRRU5FUTBoRFRFTlFRMVJEV0VOY1EyQkRaRU5vUTJ4RGNFTjBRM2hEZkVPQVE0UkRpRU9NUTVCRGxFT1lRNXhEb0VPa1E2aERyRU93UTdSRHVFTzhROEJEeEVQSVE4eEQwRVBVUTloRDNFUGdRK1JENkVQc1EvQkQ5RVA0US94QUFFUUVSQWhFREVRUVJCUkVHRVFjUkNCRUpFUW9SQ3hFTUVRMFJEaEVQRVJBUkVSRVNFUk1SRkJFVkVSWVJGeEVZRVJrUkdoRWJFUndSSFJFZUVSOFJJQkVoRVNJUkl4RWtFU1VSSmhFbkVTZ1JLUkVxRVNzUkxCRXRFUzRSTHhFd0VURVJNaEV6RVRRUk5SRTJFVGNST0JFNUVUb1JPeEU4RVQwUlBoRS9FVUFSUVJGQ0VVTVJSQkZGRVVZUlJ4RklFVWtSU2hGTEVVd1JUUkZPRVU4UlVCRlJFVklSVXhGVUVWVVJWaEZYRVZnUldSRmFFVnNSWEJGZEVWNFJYeEZnRVdFUlloRmpFV1FSWlJGbUVXY1JhQkZwRVdvUmF4RnNFVzBSYmhGdkVYQVJjUkZ5RVhNUmRCRjFFWFlSZHhGNEVYa1JlaEY3RVh3UmZSRitFWDhSZ0JHQkVZSVJneEdFRVlVUmhoR0hFWWdSaVJHS0VZc1JqQkdORVk0Ump4R1FFWkVSa2hHVEVaUVJsUkdXRVpjUm1CR1pFWm9SbXhHY0VaMFJuaEdmRWFBUm9SR2lFYU1Sd2hUREZNUVV4UlRHRk1jVXlCVEpGTW9VeXhUTUZNMFV6aFRQRk5BVTBSVFNGTk1VMUJUVkZOWVUxeFRZRk5rVTJoVGJGTndVM1JUZUZOOFU0QlRoRk9JVTR4VGtGT1VVNWhUbkZPZ1U2UlRxRk9zVTdCVHRGTzRVN3hUd0ZQRVU4aFR6RlBRVTlSVDJGUGNVK0JUNUZQb1UreFQ4RlAwVS9oVC9GQUFWQVJVQ0ZRTVZCQlVGRlFZVkJ4VUlGUWtWQ2hVTEZRd1ZEUlVPRlE4VkVCVVJGUklWRXhVVUZSVVZGaFVYRlJnVkdSVWFGUnNWSEJVZEZSNFZIeFVnRlNFVkloVWpGU1FWSlJVbUZTY1ZLQlVwRmFBVm9SV2lGYU1WcEJXbEZhWVZweFdvRmFrVnFoV3JGYXdWclJXdUZhOFZzQld4RmJJVnN4VzBGYlVWdGhXM0ZiZ1Z1Ulc2RmJzVnZCVzlGYjRWdnhYQUZjRVZ3aFhERmNRVnhSWEdGY2NWeUJYSkZjb1Z5eFhNRmMwVnpoWFBGZEFWMFJYU0ZkTVYxQlhWRmRZVjF4WFlGZGtWMmhYYkZkd1YzUlhlRmQ4VjRCWGhGZUlWNHhYa0ZlVVY1aFhuRmVnVjZSWHFGZXNWN0JYdEZlNFY3eFh3RmZFVjhoWHpGZlFWOVJYMkZmY1YrQlg1RmZvVit4WDhGZjBWL2hYL0ZRQVdBUllDRmdNV0JCWUZGZ1lXQnhZSUZna1dDaFlMRmd3V0RSWU9GZzhXRUJZUkZoSVdFeFlVRmhVV0ZoWVhGaGdXR1JZYUZoc1dIQllkRmg0V0h4WWdGaUVXSWhZakZpUVdKUlltRmljV0tCWXBGaW9XS3hZc0ZpMFdMaFl2RmpBV01SWXlGak1XTkJZMUZqWVdOeFk0RmprV09oWTdGandXUFJZK0ZqOFdRQlpCRmtJV1F4WkVGa1VXUmhaSEZrZ1dTUlpLRmtzV1RCWk5GazRXVHhaUUZsRVdVaFpURmxRV1ZSWldGbGNXV0JaWkZsb1dXeFpjRmwwV1hoWmZGbUFXWVJaaUZtTVdaQlpsRm1ZV1p4Wm9GbWtXYWhackZtd1diUlp1Rm04V2NCWnhGbklXY3haMEZuVVdkaFozRm5nV2VSWjZGbnNXZkJaOUZuNFdmeGFBRm9FV2doYURGb1FXaFJhR0ZvY1dpQmFKRm9vV2l4YU1GbzBXamhhUEZwQVdrUmFTRnBNV2xCYVZGcFlXbHhhWUZwa1dtaGFiRnB3V25SYWVGcDhXb0JhaEZxSVdveGFrRnFVV3BoYW5GcWdXcVJhcUZxc1dyQmF0RnE0V3J4YXdGckVXc2hhekZyUVd0UmEyRnJjV3VCYTVGcm9XdXhhOEZyMFd2aGEvRnNBV3dSYkNGc01XeEJiRkZzWVd4eGJJRnNrV3loYkxGc3dXelJiT0ZzOFcwQmJSRnRJVzB4YlVGdFVXMWhiWEZ0Z1cyUmJhRnRzVzNCYmRGdDRXM3hiZ0Z1RVc0aGJqRnVRVzVSYm1GdWNXNkJicEZ1b1c2eGJzRnUwVzdoYnZGdkFXOFJieUZ2TVc5QmIxRnZZVzl4YjRGdmtXK2hiN0Z2d1cvUmIrRnY4V0FCY0JGd0lYQXhjRUZ3VVhCaGNIRndnWENSY0tGd3NYREJjTkZ3NFhEeGNRRnhFWEVoY1RGeFFYRlJjV0Z4Y1hHQmNaRnhvWEd4Y2NGeDBYSGhjZkZ5QVhJUmNpRnlNWEpCY2xGeVlYSnhjb0Z5a1hLaGNyRnl3WExSY3VGeThYTUJjeEZ6SVhNeGMwRnpVWE5oYzNGemdYT1JjNkZ6c1hQQmM5Rno0WFB4ZEFGMEVYUWhkREYwUVhSUmRHRjBjWFNCZEpGMG9YU3hkTUYwMFhUaGRQRjFBWFVSZFNGMU1YVkJkVkYxWVhWeGRZRjFrWFdoZGJGMXdYWFJkZUYxOFhZQmRoRjJJWFl4ZGtGMlVYWmhkbkYyZ1hhUmRxRjJzWGJCZHRGMjRYYnhkd0YzRVhjaGR6RjNRWGRSZDJGM2NYZUJkNUYzb1hleGQ4RjMwWGZoZC9GNEFYZ1JlQ0Y0TVhoQmVGRjRZWGh4ZUlGNGtYaWhlTEY0d1hqUmVPRjQ4WGtCZVJGNUlYa3hlVUY1VVhsaGVYRjVnWG1SZWFGNXNYbkJlZEY1NFhueGVnRjZFWG9oZWpGNlFYcFJlbUY2Y1hxQmVwRjZvWHF4ZXNGNjBYcmhldkY3QVhzUmV5RjdNWHRCZTFGN1lYdHhlNEY3a1h1aGU3Rjd3WHZSZStGNzhYd0JmQkY4SVh3eGZFRjhVWHhoZkhGOGdYeVJmS0Y4c1h6QmZORjg0WHp4ZlFGOUVYMGhmVEY5UVgxUmZXRjljWDJCZlpGOW9YMnhmY0Y5MFgzaGZmRitBWDRSZmlGK01YNUJmbEYrWVg1eGZvRitrWDZoZnJGK3dYN1JmdUYrOFg4QmZ4Ri9JWDh4ZjBGL1VYOWhmM0YvZ1grUmY2Ri9zWC9CZjlGLzRYL3hjQUdBRVlBaGdER0FRWUJSZ0dHQWNZQ0JnSkdBb1lDeGdNR0EwWURoZ1BHQkFZRVJnU0dCTVlGQmdWR0JZWUZ4Z1lHQmtZR2hnYkdCd1lIUmdlR0I4WUlCZ2hHQ0lZSXhna0dDVVlKaGduR0NnWUtSZ3FHQ3NZTEJndEdDNFlMeGd3R0RFWU1oZ3pHRFFZTlJnMkdEY1lPQmc1R0RvWU94ZzhHRDBZUGhnL0dFQVlRUmhDR0VNWVJCaEZHRVlZUnhoSUdFa1lTaGhMR0V3WVRSaE9HRThZVUJoUkdGSVlVeGhVR0ZVWVZoaFhHRmdZV1JoYUdGc1lYQmhkR0Y0WVh4aGdHR0VZWWhoakdHUVlaUmhtR0djWWFCaHBHR29ZYXhoc0dHMFliaGh2R0hBWWNSaHlHSE1ZZEJoMUdIWVlkeGg0R0hrWWVoaDdHSHdZZlJoK0dIOFlnQmlCR0lJWWd4aUVHSVVZaGhpSEdJZ1lpUmlLR0lzWWpCaU5HSTRZanhpUUdKRVlraGlUR0pRWWxSaVdHSmNZbUJpWkdKb1lteGljR0owWW5oaWZHS0FZb1JpaUdLTVlwQmlsR0tZWXB4aW9HS2tZcWhpckdLd1lyUml1R0s4WXNCaXhHTElZc3hpMEdMVVl0aGkzR0xnWXVSaTZHTHNZdkJpOUdMNFl2eGpBR01FWXdoakRHTVFZeFJqR0dNY1l5QmpKR01vWXl4ak1HTTBZemhqUEdOQVkwUmpTR05NWTFCalZHTllZMXhqWUdOa1kyaGpiR053WTNSamVHTjhZNEJqaEdPSVk0eGprR09VWTVoam5HT2dZNlJqcUdPc1k3Qmp0R080WTd4andHUEVZOGhqekdQUVk5UmoyR1BjWStCajVHUG9ZK3hqOEdQMFkvaGovR0FBWkFSa0NHUU1aQkJrRkdRWVpCeGtJR1FrWkNoa0xHUXdaRFJrT0dROFpFQmtSR1JJWkV4a1VHUlVaRmhrWEdSZ1pHUmthR1JzWkhCa2RHUjRaSHhrZ0dTRVpJaGtqR1NRWkpSa21HU2NaS0JrcEdTb1pLeGtzR1MwWkxoa3ZHVEFaTVJreUdUTVpOQmsxR1RZWk54azRHVGtaT2hrN0dUd1pQUmsrR1Q4WlFCbEJHVUlaUXhsRUdVVVpSaGxIR1VnWlNSbEtHVXNaVEJsTkdVNFpUeGxRR1ZFWlVobFRHVlFaVlJsV0dWY1pXQmxaR1ZvWld4bGNHVjBaWGhsZkdXQVpZUmxpR1dNWlpCbGxHV1laWnhsb0dXa1phaGxyR1d3WmJSbHVHVzhaY0JseEdYSVpjeGwwR1hVWmRobDNHWGdaZVJsNkdYc1pmQmw5R1g0WmZ4bUFHWUVaZ2htREdZUVpoUm1HR1ljWmlCbUpHWW9aaXhtTUdZMFpqaG1QR1pBWmtSbVNHWk1abEJtVkdaWVpseG1ZR1prWm1obWJHWndablJtZUdaOFpvQm1oR2FJWm94bWtHYVVacGhtbkdhZ1pxUm1xR2FzWnJCbXRHYTRacnhtd0diRVpzaG16R2JRWnRSbTJHYmNadUJtNUdib1p1eG04R2IwWnZobS9HY0Fad1JuQ0djTVp4Qm5GR2NZWnh4bklHY2taeWhuTEdjd1p6Um5PR2M4WjBCblJHZElaMHhuVUdkVVoxaG5YR2RnWjJSbmFHZHNaM0JuZEdkNFozeG5nR2VFWjRobmpHZVFaNVJubUdlY1o2Qm5wR2VvWjZ4bnNHZTBaN2hudkdmQVo4Um55R2ZNWjlCbjFHZllaOXhuNEdma1oraG43R2Z3Wi9SbitHZjhaQUJvQkdqQkJlUUlBQUhKaGRqUXRZbXhoWTJ0ZloyeGhjM01BTUFFMEFEVUFOZ0EzQURnQU9RQTZBRHNBUEFBOUFENEFQd0JBQUVFQVFnQkRBRVFBUlFCR0FFY0FTQUJKQUVvQVN3Qk1BRTBBVGdCUEFGQUFVUUJTQUZNQVZBQlZBRllBVndCWUFGa0FXZ0JiQUZ3QVhRQmVBRjhBWUFCaEFHSUFZd0JrQUdVQVpnQm5BR2dBYVFCcUFHc0FiQUJ0QUc0QWJ3QndBSEVBY2dCekFIUUFkUUIyQUhjQWVBQjVBSG9BZXdCOEFIMEFmZ0IvQUlBQWdRQ0NBSU1BaEFDRkFJWUFod0NJQUlrQWlnQ0xBSXdBalFDT0FJOEFrQUNSQUpJQWt3Q1VBSlVBbGdDWEFKZ0FtUUNhQUpzQW5BQ2RBSjRBbndDZ0FLRUFvZ0NqQUtRQXBRQ21BS2NBcUFDcEFLb0Fxd0NzQUswQXJnQ3ZBTEFBc1FDeUFMTUF0QUMxQUxZQXR3QzRBTGtBdWdDN0FMd0F2UUMrQUw4QXdBREJBTUlBd3dERUFNVUF4Z0RIQU1nQXlRREtBTXNBekFETkFNNEF6d0RRQU5FQTBnRFRBTlFBMVFEV0FOY0EyQURaQU5vQTJ3RGNBTjBBM2dEZkFPQUE0UURpQU9NQTVBRGxBT1lBNXdEb0FPa0E2Z0RyQU93QTdRRHVBTzhBOEFEeEFQSUE4d0QwQVBVQTlnRDNBUGdBK1FENkFQc0EvQUQ5QVA0QS93QUFBUUVCQWdFREFRUUJCUUVHQVFjQkNBRUpBUW9CQ3dFTUFRMEJEZ0VQQVJBQkVRRVNBUk1CRkFFVkFSWUJGd0VZQVJrQkdnRWJBUndCSFFFZUFSOEJJQUVoQVNJQkl3RWtBU1VCSmdFbkFTZ0JLUUVxQVNzQkxBRXRBUzRCTHdFd0FURUJNZ0V6QVRRQk5RRTJBVGNCT0FFNUFUb0JPd0U4QVQwQlBnRS9BVUFCUVFGQ0FVTUJSQUZGQVVZQlJ3RklBVWtCU2dGTEFVd0JUUUZPQVU4QlVBRlJBVklCVXdGVUFWVUJWZ0ZYQVZnQldRRmFBVnNCWEFGZEFWNEJYd0ZnQVdFQllnRmpBVEJCdGlNQUFISmhkalF0WW05a2VRRFNFV1FCWlFGbUFXY0JhQUZwQVdvQmF3RnNBVzBCYmdGdkFYQUJjUUZ5QVhNQmRBRjFBWFlCZHdGNEFYa0JlZ0Y3QVh3QmZRRitBWDhCZ0FHQkFZSUJnd0dFQVlVQmhnR0hBWWdCaVFHS0FZc0JqQUdOQVk0Qmp3R1FBWkVCa2dHVEFaUUJsUUdXQVpjQm1BR1pBWm9CbXdHY0FaMEJuZ0dmQWFBQm9RR2lBYU1CcEFHbEFhWUJwd0dvQWFrQnFnR3JBYXdCclFHdUFhOEJzQUd4QWJJQnN3RzBBYlVCdGdHM0FiZ0J1UUc2QWJzQnZBRzlBYjRCdndIQUFjRUJ3Z0hEQWNRQnhRSEdBY2NCeUFISkFjb0J5d0hNQWMwQnpnSFBBZEFCMFFIU0FkTUIxQUhWQWRZQjF3SFlBZGtCMmdIYkFkd0IzUUhlQWQ4QjRBSGhBZUlCNHdIa0FlVUI1Z0huQWVnQjZRSHFBZXNCN0FIdEFlNEI3d0h3QWZFQjhnSHpBZlFCOVFIMkFmY0IrQUg1QWZvQit3SDhBZjBCL2dIL0FRQUNBUUlDQWdNQ0JBSUZBZ1lDQndJSUFna0NDZ0lMQWd3Q0RRSU9BZzhDRUFJUkFoSUNFd0lVQWhVQ0ZnSVhBaGdDR1FJYUFoc0NIQUlkQWg0Q0h3SWdBaUVDSWdJakFpUUNKUUltQWljQ0tBSXBBaW9DS3dJc0FpMENMZ0l2QWpBQ01RSXlBak1DTkFJMUFqWUNOd0k0QWprQ09nSTdBandDUFFJK0FqOENRQUpCQWtJQ1F3SkVBa1VDUmdKSEFrZ0NTUUpLQWtzQ1RBSk5BazRDVHdKUUFsRUNVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0pjQWwwQ1hnSmZBbUFDWVFKaUFtTUNaQUpsQW1ZQ1p3Sm9BbWtDYWdKckFtd0NiUUp1QW04Q2NBSnhBbklDY3dKMEFuVUNkZ0ozQW5nQ2VRSjZBbnNDZkFKOUFuNENmd0tBQW9FQ2dnS0RBb1FDaFFLR0FvY0NpQUtKQW9vQ2l3S01BbzBDamdLUEFwQUNrUUtTQXBNQ2xBS1ZBcFlDbHdLWUFwa0NtZ0tiQXB3Q25RS2VBcDhDb0FLaEFxSUNvd0trQXFVQ3BnS25BcWdDcVFLcUFxc0NyQUt0QXE0Q3J3S3dBckVDc2dLekFyUUN0UUsyQXJjQ3VBSzVBcm9DdXdLOEFyMEN2Z0svQXNBQ3dRTENBc01DeEFMRkFzWUN4d0xJQXNrQ3lnTExBc3dDelFMT0FzOEMwQUxSQXRJQzB3TFVBdFVDMWdMWEF0Z0MyUUxhQXRzQzNBTGRBdDRDM3dMZ0F1RUM0Z0xqQXVRQzVRTG1BdWNDNkFMcEF1b0M2d0xzQXUwQzdnTHZBdkFDOFFMeUF2TUM5QUwxQXZZQzl3TDRBdmtDK2dMN0F2d0MvUUwrQXY4Q0FBTUJBd0lEQXdNRUF3VURCZ01IQXdnRENRTUtBd3NEREFNTkF3NEREd01RQXhFREVnTVRBeFFERlFNV0F4Y0RHQU1aQXhvREd3TWNBeDBESGdNZkF5QURJUU1pQXlNREpBTWxBeVlESndNb0F5a0RLZ01yQXl3RExRTXVBeThETUFNeEF6SURNd00wQXpVRE5nTTNBemdET1FNNkF6c0RQQU05QXo0RFB3TkFBMEVEUWdOREEwUURSUU5HQTBjRFNBTkpBMG9EU3dOTUEwMERUZ05QQTFBRFVRTlNBMU1EVkFOVkExWURWd05ZQTFrRFdnTmJBMXdEWFFOZUExOERZQU5oQTJJRFl3TmtBMlVEWmdObkEyZ0RhUU5xQTJzRGJBTnRBMjREYndOd0EzRURjZ056QTNRRGRRTjJBM2NEZUFONUEzb0Rld044QTMwRGZnTi9BNEFEZ1FPQ0E0TURoQU9GQTRZRGh3T0lBNGtEaWdPTEE0d0RqUU9PQTQ4RGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud09nQTZFRG9nT2pBNlFEcFFPbUE2Y0RxQU9wQTZvRHF3T3NBNjBEcmdPdkE3QURzUU95QTdNRHRBTzFBN1lEdHdPNEE3a0R1Z083QTd3RHZRTytBNzhEd0FQQkE4SUR3d1BFQThVRHhnUEhBOGdEeVFQS0E4c0R6QVBOQTg0RHp3UFFBOUVEMGdQVEE5UUQxUVBXQTljRDJBUFpBOW9EMndQY0E5MEQzZ1BmQStBRDRRUGlBK01ENUFQbEErWUQ1d1BvQStrRDZnUHJBK3dEN1FQdUErOEQ4QVB4QS9JRDh3UDBBL1VEOWdQM0EvZ0QrUVA2QS9zRC9BUDlBLzREL3dNQUJBRUVBZ1FEQkFRRUJRUUdCQWNFQ0FRSkJBb0VDd1FNQkEwRURnUVBCQkFFRVFRU0JCTUVGQVFWQkJZRUZ3UVlCQmtFR2dRYkJCd0VIUVFlQkI4RUlBUWhCQ0lFSXdRa0JDVUVKZ1FuQkNnRUtRUXFCQ3NFTEFRdEJDNEVMd1F3QkRFRU1nUXpCRFFFTlFRMkJEY0VPQVE1QkRvRU93UThCRDBFUGdRL0JFQUVRUVJDQkVNRVJBUkZCRVlFUndSSUJFa0VTZ1JMQkV3RVRRUk9CRThFVUFSUkJGSUVVd1JVQkZVRVZnUlhCRmdFV1FSYUJGc0VYQVJkQkY0RVh3UmdCR0VFWWdSakJHUUVaUVJtQkdjRWFBUnBCR29FYXdSc0JHMEViZ1J2QkhBRWNRUnlCSE1FZEFSMUJIWUVkd1I0QkhrRWVnUjdCSHdFZlFSK0JIOEVnQVNCQklJRWd3U0VCSVVFaGdTSEJJZ0VpUVNLQklzRWpBU05CSTRFandTUUJKRUVrZ1NUQkpRRWxRU1dCSmNFbUFTWkJKb0Vtd1NjQkowRW5nU2ZCS0FFb1FTaUJLTUVwQVNsQktZRXB3U29CS2tFcWdTckJLd0VyUVN1Qks4RXNBU3hCTElFc3dTMEJMVUV0Z1MzQkxnRXVRUzZCTHNFdkFTOUJMNEV2d1RBQk1FRXdnVERCTVFFeFFUR0JNY0V5QVRKQk1vRXl3VE1CTTBFemdUUEJOQUUwUVRTQk5NRTFBVFZCTllFMXdUWUJOa0UyZ1RiQk53RTNRVGVCTjhFNEFUaEJPSUU0d1RrQk9VRTVnVG5CT2dFNlFUcUJPc0U3QVR0Qk80RTd3VHdCUEVFOGdUekJQUUU5UVQyQlBjRStBVDVCUG9FK3dUOEJQMEUvZ1QvQkFBRkFRVUNCUU1GQkFVRkJRWUZCd1VJQlFrRkNnVUxCUXdGRFFVT0JROEZFQVVSQlJJRkV3VVVCUlVGRmdVWEJSZ0ZHUVVhQlJzRkhBVWRCUjRGSHdVZ0JTRUZJZ1VqQlNRRkpRVW1CU2NGS0FVcEJTb0ZLd1VzQlMwRkxnVXZCVEFGTVFVeUJUTUZOQVUxQlRZRk53VTRCVGtGT2dVN0JUd0ZQUVUrQlQ4RlFBVkJCVUlGUXdWRUJVVUZSZ1ZIQlVnRlNRVktCVXNGVEFWTkJVNEZUd1ZRQlZFRlVnVlRCVlFGVlFWV0JWY0ZXQVZaQlZvRld3VmNCVjBGWGdWZkJXQUZZUVZpQldNRlpBVmxCV1lGWndWb0JXa0ZhZ1ZyQld3RmJRVnVCVzhGY0FWeEJYSUZjd1YwQlhVRmRnVjNCWGdGZVFWNkJYc0ZmQVY5Qlg0RmZ3V0FCWUVGZ2dXREJZUUZoUVdHQlljRmlBV0pCWW9GaXdXTUJZMEZqZ1dQQlpBRmtRV1NCWk1GbEFXVkJaWUZsd1dZQlprRm1nV2JCWndGblFXZUJaOEZvQVdoQmFJRm93V2tCYVVGcGdXbkJhZ0ZxUVdxQmFzRnJBV3RCYTRGcndXd0JiRUZzZ1d6QmJRRnRRVzJCYmNGdUFXNUJib0Z1d1c4QmIwRnZnVy9CY0FGd1FYQ0JjTUZ4QVhGQmNZRnh3WElCY2tGeWdYTEJjd0Z6UVhPQmM4RjBBWFJCZElGMHdYVUJkVUYxZ1hYQmRnRjJRWGFCZHNGM0FYZEJkNEYzd1hnQmVFRjRnWGpCZVFGNVFYbUJlY0Y2QVhwQmVvRjZ3WHNCZTBGN2dYdkJmQUY4UVh5QmZNRjlBWDFCZllGOXdYNEJma0YrZ1g3QmZ3Ri9RWCtCZjhGQUFZQkJnSUdBd1lFQmdVR0JnWUhCZ2dHQ1FZS0Jnc0dEQVlOQmc0R0R3WVFCaEVHRWdZVEJoUUdGUVlXQmhjR0dBWVpCaG9HR3dZY0JoMEdIZ1lmQmlBR0lRWWlCaU1HSkFZbEJpWUdKd1lvQmlrR0tnWXJCaXdHTFFZdUJpOEdNQVl4QmpJR013WTBCalVHTmdZM0JqZ0dPUVk2QmpzR1BBWTlCajRHUHdaQUJrRUdRZ1pEQmtRR1JRWkdCa2NHU0FaSkJrb0dTd1pNQmswR1RnWlBCbEFHVVFaU0JsTUdWQVpWQmxZR1Z3WllCbGtHV2daYkJsd0dYUVplQmw4R1lBWmhCbUlHWXdaa0JtVUdaZ1puQm1nR2FRWnFCbXNHYkFadEJtNEdid1p3Qm5FR2NnWnpCblFHZFFaMkJuY0dlQVo1Qm5vR2V3WjhCbjBHZmdaL0JvQUdnUWFDQm9NR2hBYUZCb1lHaHdhSUJva0dpZ2FMQm93R2pRYU9CbzhHa0FhUkJwSUdrd2FVQnBVR2xnYVhCcGdHbVFhYUJwc0duQWFkQnA0R253YWdCcUVHb2dhakJxUUdwUWFtQnFjR3FBYXBCcW9HcXdhc0JxMEdyZ2F2QnJBR3NRYXlCck1HdEFhMUJyWUd0d2E0QnJrR3VnYTdCcndHdlFhK0JyOEd3QWJCQnNJR3d3YkVCc1VHeGdiSEJzZ0d5UWJLQnNzR3pBYk5CczRHendiUUJ0RUcwZ2JUQnRRRzFRYldCdGNHMkFiWkJ0b0cyd2JjQnQwRzNnYmZCdUFHNFFiaUJ1TUc1QWJsQnVZRzV3Ym9CdWtHNmdickJ1d0c3UWJ1QnU4RzhBYnhCdklHOHdiMEJ2VUc5Z2IzQnZnRytRYjZCdnNHL0FiOUJ2NEcvd1lBQndFSEFnY0RCd1FIQlFjR0J3Y0hDQWNKQndvSEN3Y01CdzBIRGdjUEJ4QUhFUWNTQnhNSEZBY1ZCeFlIRndjWUJ4a0hHZ2NiQnh3SEhRY2VCeDhISUFjaEJ5SUhJd2NrQnlVSEpnY25CeWdIS1FjcUJ5c0hMQWN0Qnk0SEx3Y3dCekVITWdjekJ6UUhOUWMyQnpjSE9BYzVCem9IT3djOEJ6MEhQZ2MvQjBBSFFRZENCME1IUkFkRkIwWUhSd2RJQjBrSFNnZExCMHdIVFFkT0IwOEhVQWRSQjFJSFV3ZFVCMVVIVmdkWEIxZ0hXUWRhQjFzSFhBZGRCMTRIWHdkZ0IyRUhZZ2RqQjJRSFpRZG1CMmNIYUFkcEIyb0hhd2RzQjIwSGJnZHZCM0FIY1FkeUIzTUhkQWQxQjNZSGR3ZDRCM2tIZWdkN0Izd0hmUWQrQjM4SGdBZUJCNElIZ3dlRUI0VUhoZ2VIQjRnSGlRZUtCNHNIakFlTkI0NEhqd2VRQjVFSGtnZVRCNVFIbFFlV0I1Y0htQWVaQjVvSG13ZWNCNTBIbmdlZkI2QUhvUWVpQjZNSHBBZWxCNllIcHdlb0I2a0hxZ2VyQjZ3SHJRZXVCNjhIc0FleEI3SUhzd2UwQjdVSHRnZTNCN2dIdVFlNkI3c0h2QWU5Qjc0SHZ3ZkFCOEVId2dmREI4UUh4UWZHQjhjSHlBZkpCOG9IeXdmTUI4MEh6Z2ZQQjlBSDBRZlNCOU1IMUFmVkI5WUgxd2ZZQjlrSDJnZmJCOXdIM1FmZUI5OEg0QWZoQitJSDR3ZmtCK1VINWdmbkIrZ0g2UWZxQitzSDdBZnRCKzRIN3dmd0IvRUg4Z2Z6Qi9RSDlRZjJCL2NIK0FmNUIvb0grd2Y4Qi8wSC9nZi9Cd0FJQVFnQ0NBTUlCQWdGQ0FZSUJ3Z0lDQWtJQ2dnTENBd0lEUWdPQ0E4SUVBZ1JDQklJRXdnVUNCVUlGZ2dYQ0JnSUdRZ2FDQnNJSEFnZENCNElId2dnQ0NFSUlnZ2pDQ1FJSlFnbUNDY0lLQWdwQ0NvSUt3Z3NDQzBJTGdndkNEQUlNUWd5Q0RNSU5BZzFDRFlJTndnNENEa0lPZ2c3Q0R3SVBRZytDRDhJUUFoQkNFSUlRd2hFQ0VVSVJnaEhDRWdJU1FoS0NFc0lUQWhOQ0U0SVR3aFFDRkVJVWdoVENGUUlWUWhXQ0ZjSVdBaFpDRm9JV3doY0NGMElYZ2hmQ0dBSVlRaGlDR01JWkFobENHWUlad2hvQ0drSWFnaHJDR3dJYlFodUNHOEljQWh4Q0hJSWN3aDBDSFVJZGdoM0NIZ0llUWg2Q0hzSWZBaDlDSDRJZndpQUNJRUlnZ2lEQ0lRSWhRaUdDSWNJaUFpSkNJb0lpd2lNQ0kwSWpnaVBDSkFJa1FpU0NKTUlsQWlWQ0pZSWx3aVlDSmtJbWdpYkNKd0luUWllQ0o4SW9BaWhDS0lJb3dpa0NLVUlwZ2luQ0tnSXFRaXFDS3NJckFpdENLNElyd2l3Q0xFSXNnaXpDTFFJdFFpMkNMY0l1QWk1Q0xvSXV3aThDTDBJdmdpL0NNQUl3UWpDQ01NSXhBakZDTVlJeHdqSUNNa0l5Z2pMQ013SXpRak9DTThJMEFqUkNOSUkwd2pVQ05VSTFnalhDTmdJMlFqYUNOc0kzQWpkQ040STN3amdDT0VJNGdqakNPUUk1UWptQ09jSTZBanBDT29JNndqc0NPMEk3Z2p2Q1BBSThRanlDUE1JOUFqMUNQWUk5d2o0Q1BrSStnajdDUHdJL1FqK0NQOElBQWtCQ1FJSkF3a0VDUVVKQmdrSENRZ0pDUWtLQ1FzSkRBa05DYjRKdndudUNlOEo4QW54Q2ZJSjh3bjBDZlVKOWduM0NmZ0orUW42Q2ZzSi9BbjlDZjRKL3drQUNnRUtBZ29EQ2dRS0JRb0dDZ2NLQ0FvSkNnb0tDd29NQ2cwS0Rnb1BDaEFLRVFvU0NoTUtGQW9WQ2hZS0Z3b1lDaGtLR2dvYkNod0tIUW9lQ2g4S0pnb25DaWdLS1FvdUNpOEtNQW94Q2pJS013bzZDanNLUEFvOUNrSUtRd3BFQ2tVS1JncEhDazRLVHdwUUNsRUtWZ3BYQ2xnS1dRcGFDbHNLWWdwakNtUUtaUXB5Q25NS2RBcDFDbllLZHdwNENua0tlZ3A3Q280S2p3cVFDcEVLa2dxVENwUUtsUXFXQ3BjS21BcVpDcG9LbXdxY0NwMEtuZ3FmQ3FBS29RcW1DcWNLcUFxcENxb0txd3FzQ3EwS3JncXZDckFLc1FxeUNyTUt0QXExQ3JZS3R3cTRDcmtLdWdxN0Nyd0t2UXErQ3I4S3dBckJDc0lLd3dyRUNzVUt4Z3JIQ3NnS3lRcktDc3NLekFyTkNzNEt6d3JRQ3RFSzBnclRDdFFLMVFyV0N0Y0syQXJaQ3RvSzJ3cmNDdDBLM2dyZkN1QUs0UXJpQ3VNSzVBcmxDdVlLNXdyb0N1a0s2Z3JyQ3V3SzdRcnVDdThLOEFyeEN2SUs4d3IwQ3ZVSzlncjNDdmdLK1FyNkN2c0svQXI5Q3Y0Sy93b0FDd0VMQWdzREN3UUxCUXNHQ3djTENBc0pDd29MQ3dzTUN3MExEZ3NQQ3hBTEVRc1NDeE1MRkFzVkN4WUxGd3NZQ3hrTEdnc2JDeHdMSFFzZUN4OExJQXNoQ3lJTEl3c2tDeVVMSmdzbkN5Z0xLUXNxQ3lzTExBc3RDeTRMTHdzd0N6RUxNZ3N6Q3pRTE5RczJDemNMT0FzNUN6b0xPd3M4Q3owTFBncy9DMEFMUVF0Q0MwTUxSQXRGQzBZTFJ3dElDMGtMU2d0TEMwd0xUUXRPQzA4TFVBdFJDMUlMVXd0VUMxVUxWZ3RYQzFnTFdRdGFDMXNMWEF0ZEMxNExYd3RnQzJFTFlndGpDMlFMWlF0bUMyY0xhQXRwQzJvTGF3dHNDMjBMYmd0dkMzQUxjUXR5QzNNTGRBdDFDM1lMZHd0NEMza0xlZ3Q3QzN3TGZRdCtDMzhMZ0F1QkM0SUxnd3VFQzRVTGhndUhDNGdMaVF1S0M0c0xqQXVOQzQ0TGp3dVFDNUVMa2d1VEM1UUxsUXVXQzVjTG1BdVpDNW9MbXd1Y0M1MExuZ3VmQzZBTG9RdWlDNk1McEF1bEM2WUxwd3VvQzZrTHFndXJDNndMclF1dUM2OExzQXV4QzdJTHN3dTBDN1VMdGd1M0M3Z0x1UXU2QzdzTHZBdTlDNzRMdnd2QUM4RUx3Z3ZEQzhRTHhRdkdDOGNMeUF2SkM4b0x5d3ZNQzgwTHpndlBDOUFMMFF2U0M5TUwxQXZWQzlZTDF3dllDOWtMMmd2YkM5d0wzUXZlQzk4TDRBdmhDK0lMNHd2a0MrVUw1Z3ZuQytnTDZRdnFDK3NMN0F2dEMrNEw3d3Z3Qy9FTDhndnpDL1FMOVF2MkMvY0wrQXY1Qy9vTCt3djhDLzBML2d2L0N3QU1BUXdDREFNTUJBd0ZEQVlNQnd3SURBa01DZ3dMREF3TURRd09EQThNRUF3UkRCSU1Fd3dVREJVTUZnd1hEQmdNR1F3YURCc01IQXdkREI0TUh3d2dEQ0VNSWd3akRDUU1KUXdtRENjTUtBd3BEQ29NS3d3c0RDME1MZ3d2RERBTU1Rd3lERE1NTkF3MUREWU1Od3c0RERrTU9ndzdERHdNUFF3K0REOE1RQXhCREVJTVF3eEVERVVNUmd4SERFZ01TUXhLREVzTVRBeE5ERTRNVHd4UURGRU1VZ3hUREZRTVZReFdERmNNV0F4WkRGb01Xd3hjREYwTVhneGZER0FNWVF4aURHTU1aQXhsREdZTVp3eG9ER2tNYWd4ckRHd01iUXh1REc4TWNBeHhESElNY3d4MERIVU1kZ3gzREhnTWVReDZESHNNZkF4OURINE1md3lBRElFTWdneURESVFNaFF5R0RJY01pQXlKRElvTWl3eU1ESTBNamd5UERKQU1rUXlTREpNTWxBeVZESllNbHd5WURKa01tZ3liREp3TW5ReWVESjhNb0F5aERLSU1vd3lrREtVTXBneW5ES2dNcVF5cURLc01yQXl0REs0TXJ3eXdETEVNc2d5ekRMUU10UXkyRExjTXVBeTVETG9NdXd5OERMME12Z3kvRE1BTXdRekNETU1NeEF6RkRNWU14d3pJRE1rTXlnekxETXdNelF6T0RNOE0wQXpSRE5JTTB3elVETlVNMWd6WEROZ00yUXphRE5zTTNBemRETjRNM3d6Z0RPRU00Z3pqRE9RTTVRem1ET2NNNkF6cERPb002d3pzRE8wTTdnenZEUEFNOFF6eURQTU05QXoxRFBZTTl3ejREUGtNK2d6N0RQd00vUXorRFA4TUFBMEJEUUlOQXcwRURRVU5CZzBIRFFnTkNRMEtEUXNOREEwTkRRNE5EdzBTRFJNTkZBMFZEUllORncwWURSa05HZzBiRFJ3TkhRMGVEUjhOSUEwaERTSU5JdzBrRFNVTkpnMG5EU2dOS1EwcURTc05MQTB0RFM0Tkx3MHdEVEVOTWcwekRUUU5OUTAyRFRjTk9BMDVEVG9OT3cwOERUME5QZzAvRFVBTlFRMUNEVU1OUkExRkRVWU5SdzFJRFVrTlNnMUxEVXdOVFExT0RVOE5VQTFSRFZJTlV3MVVEVlVOVmcxWERWZ05XUTFhRFZzTlhBMWREVjROWHcxZ0RXRU5ZZzFqRFdRTlpRMW1EV2NOYUExcERXb05hdzFzRFcwTmJnMXZEWEFOY1ExeURYTU5kQTExRFhZTmR3MTREWGtOZWcxN0RYd05mUTErRFg4TmdBMkJEWUlOZ3cyRURZVU5oZzJIRFlnTmlRMktEWXNOakEyTkRZNE5qdzJRRFpFTmtnMlREWlFObFEyV0RaY05tQTJaRFpvTm13MmNEWjBObmcyZkRhQU5vUTJpRGFNTnBBMmxEYVlOcHcyb0Rha05xZzJyRGF3TnJRMnVEYThOc0EyeERiSU5zdzIwRGJVTnRnMjNEYmdOdVEyNkRic052QTI5RGI0TnZ3M0FEY0VOd2czRERjUU54UTNHRGNjTnlBM0pEY29OeXczTURjME56ZzNQRGRBTjBRM1NEZE1OMUEzVkRkWU4xdzNZRGRrTjJnM2JEZHdOM1EzZURkOE40QTNoRGVJTjR3M2tEZVVONWczbkRlZ042UTNxRGVzTjdBM3REZTRON3czd0RmRU44ZzN6RGZRTjlRMzJEZmNOK0EzNURmb04rdzM4RGYwTi9nMy9EUUFPQVE0Q0RnTU9CQTRGRGdZT0J3NElEZ2tPQ2c0TERnd09EUTRPRGc4T0VBNFJEaElPRXc0VURoVU9GZzRYRGhnT0dRNGFEaHNPSEE0ZERoNE9IdzRnRGlFT0lnNGpEaVFPSlE0bURpY09LQTRwRGlvT0t3NHNEaTBPTGc0dkRqQU9NUTR5RGpNT05BNDFEallPTnc0NERqa09PZzQ3RGp3T1BRNCtEajhPUUE1QkRrSU9RdzVFRGtVT1JnNUhEa2dPU1E1S0Rrc09UQTVORGs0T1R3NVFEbEVPVWc1VERsUU9WUTVXRGxjT1dBNVpEbG9PV3c1Y0RsME9YZzVmRG1BT1lRNWlEbU1PWkE1bERtWU9adzVvRG1rT2FnNXJEbXdPYlE1dURtOE9jQTV4RG5JT2N3NTBEblVPZGc1M0RuZ09lUTU2RG5zT2ZBNTlEbjRPZnc2QURvRU9nZzZERG9RT2hRNkdEb2NPaUE2SkRvb09pdzZNRG8wT2pnNlBEcEFPa1E2U0RwTU9sQTZWRHBZT2x3NllEcGtPbWc2YkRwd09uUTZlRHA4T29BNmhEcUlPb3c2a0RxVU9wZzZuRHFnT3FRNnFEcXNPckE2dERxNE9ydzZ3RHJFT3NnNnpEclFPdFE2MkRyY091QTY1RHJvT3V3NjhEcjBPdmc2L0RzQU93UTdDRHNNT3hBN0ZEc1lPeHc3SURza095ZzdMRHN3T3pRN09EczhPMEE3UkR0SU8wdzdVRHRVTzFnN1hEdGdPMlE3YUR0c08zQTdkRHQ0TzN3N2dEdUVPNGc3akR1UU81UTdtRHVjTzZBN3BEdW9PNnc3c0R1ME83Zzd2RHZBTzhRN3lEdk1POUE3MUR2WU85dzc0RHZrTytnNzdEdndPL1E3K0R2OE9BQThCRHdJUEF3OEVEd1VQQmc4SER3Z1BDUThLRHdzUERBOE5EdzRQRHc4UUR4RVBFZzhURHhRUEZROFdEeGNQR0E4WkR4b1BHdzhjRHgwUEhnOGZEeUFQSVE4aUR5TVBKQThsRHlZUEp3OG9EeWtQS2c4ckR5d1BMUTh1RHk4UE1BOHhEeklQTXc4MER6VVBOZzgzRHpnUE9RODZEenNQUEE4OUR6NFBQdzlBRDBFUFFnOUREMFFQUlE5R0QwY1BTQTlKRDBvUFN3OU1EMDBQVGc5UEQxQVBVUTlTRDFNUFZBOVZEMVlQVnc5WUQxa1BXZzliRDF3UFhROWVEMThQWUE5aEQySVBZdzlrRDJVUFpnOW5ENlFScFJHbUVhY1JxQkdwRWFvUnF4R3NFYTBScmhHdkViQVJzUkd5RWJNUnRCRzFFYllSdHhHNEVia1J1aEc3RWJ3UnZSRytFYjhSd0JIQkVjSVJ3eEhFRWNVUnhoSEhFY2dSeVJIS0Vjc1J6QkhORWM0Unp4SFFFZEVSMGhIVEVkUVIxUkhXRWRjUjJCSFpFZG9SMnhIY0VkMFIzaEhmRWVBUjRSSGlFZU1SNUJIbEVlWVI1eEhvRWVrUjZoSHJFZXdSN1JIdUVlOFI4Qkh4RWZJUjh4SDBFZlVSOWhIM0VmZ1IrUkg2RWZzUi9CSDlFZjRSL3hFQUVnRVNBaElERWdRU0JSSUdFZ2NTQ0JJSkVnb1NDeElNRWcwU0RoSVBFaEFTRVJJU0VoTVNGQklWRWhZU0Z4SVlFaGtTR2hJYkVod1NIUkllRWg4U0lCSWhFaUlTSXhJa0VpVVNKaEluRWlnU0tSSXFFaXNTTEJJdEVpNFNMeEl3RWpFU01oSXpFalFTTlJJMkVqY1NPQkk1RWpvU094SThFajBTUGhJL0VrQVNRUkpDRWtNU1JCSkZFa1lTUnhKSUVra1NTaEpMRWt3U1RSSk9FazhTVUJKUkVsSVNVeEpVRWxVU1ZoSlhFbGdTV1JKYUVsc1NYQkpkRWw0U1h4SmdFbUVTWWhKakVtUVNaUkptRW1jU2FCSnBFbW9TYXhKc0VtMFNiaEp2RW5BU2NSSnlFbk1TZEJKMUVuWVNkeEo0RW5rU2VoSjdFbndTZlJKK0VuOFNnQktCRW9JU2d4S0VFb1VTaGhLSEVvZ1NpUktLRW9zU2pCS05FbzRTanhLUUVwRVNraEtURXBRU2xSS1dFcGNTbUJLWkVwb1NteEtjRXAwU25oS2ZFcUFTb1JLaUVxTVNwQktsRXFZU3B4S29FcWtTcWhLckVxd1NyUkt1RXE4U3NCS3hFcklTc3hLMEVyVVN0aEszRXJnU3VSSzZFcnNTdkJLOUVyNFN2eExBRXNFU3doTERFc1FTeFJMR0VzY1N5QkxKRXNvU3l4TE1FczBTemhMUEV0QVMwUkxTRXRNUzFCTFZFdFlTMXhMWUV0a1MyaExiRXR3UzNSTGVFdDhTNEJMaEV1SVM0eEpvRldrVmFoVnJGV3dWYlJWdUZXOFZjQlZ4RlhJVmN4VjBGWFVWZGhWM0ZYZ1ZlUlY2RlhzVmZCVjlGWDRWZnhXQUZZRVZnaFdERllRVmhSV0dGWWNWaUJXSkZZb1ZpeFdNRlkwVmpoV1BGWkFWa1JXU0ZaTVZsQldWRlpZVmx4V1lGWmtWbWhXYkZad1ZuUldlRlo4Vk5oczNHemdiT1JzNkd6c2JQQnM5R3o0YlB4dEFHMEViUWh0REcwUWJSUnRHRzBjYlNCdEpHMG9iU3h0TUcwMGJUaHRQRzFBYlVSdFNHMU1iVkJ0VkcxWWJWeHRZRzFrYldodGJHMXdiWFJ0ZUcxOGJZQnRoRzJJYll4dGtHMlViWmh0bkcyZ2JhUnRxRzJzYmJCdHRHMjRiYnh0d0czRWJjaHR6RzNRYmRSdDJHM2NiZUJ0NUczb2JleHQ4RzMwYmZodC9HNEFiZ1J1Q0c0TWJoQnVGRzRZYmh4dUlHNGtiaWh1TEc0d2JqUnVPRzQ4YmtCdVJHNUlia3h1VUc1VWJsaHVYRzVnYm1SdWFHNXNibkJ1ZEc1NGJueHVnRzZFYm9odWpHNlFicFJ1bUc2Y2JxQnVwRzZvYnF4dXNHNjBicmh1dkc3QWJzUnV5RzdNYnRCdTFHN1lidHh1NEc3a2J1aHU3Rzd3YnZSdStHNzhid0J2Qkc4SWJ3eHZFRzhVYnhodkhHOGdieVJ2S0c4c2J6QnZORzg0Ynp4dlFHOUViMGh2VEc5UWIxUnZXRzljYjJCdlpHOW9iMnh2Y0c5MGIzaHZmRytBYjRSdmlHK01iNUJ2bEcrWWI1eHZvRytrYjZodnJHK3diN1J2dUcrOGI4QnZ4Ry9JYjh4djBHL1ViOWh2M0cvZ2IrUnY2Ry9zYi9CdjlHLzRiL3hzQUhBRWNBaHdESEFRY0JSd0dIQWNjQ0J3SkhBb2NDeHdNSEEwY0Rod1BIQkFjRVJ3U0hCTWNGQndWSEJZY0Z4d1lIQmtjR2h3YkhCd2NIUndlSEI4Y0lCd2hIQ0ljSXh3a0hDVWNKaHduSENnY0tSd3FIQ3NjTEJ3dEhDNGNMeHd3SERFY01od3pIRFFjTlJ3MkhEY2NPQnc1SERvY094dzhIRDBjUGh3L0hFQWNRUnhDSEVNY1JCeEZIRVljUnh4SUhFa2NTaHhMSEV3Y1RSeE9IRThjVUJ4UkhGSWNVeHhVSEZVY1ZoeFhIRmdjV1J4YUhGc2NYQnhkSEY0Y1h4eGdIR0VjWWh4akhHUWNaUnhtSEdjY2FCeHBIR29jYXh4c0hHMGNiaHh2SEhBY2NSeHlISE1jZEJ4MUhIWWNkeHg0SEhrY2VoeDdISHdjZlJ4K0hIOGNnQnlCSElJY2d4eUVISVVjaGh5SEhJZ2NpUnlLSElzY2pCeU5ISTRjanh5UUhKRWNraHlUSEpRY2xSeVdISmNjbUJ5WkhKb2NteHljSEowY25oeWZIS0Fjb1J5aUhLTWNwQnlsSEtZY3B4eW9IS2tjcWh5ckhLd2NyUnl1SEs4Y3NCeXhITEljc3h5MEhMVWN0aHkzSExnY3VSeTZITHNjdkJ5OUhMNGN2eHpBSE1FY3doekRITVFjeFJ6R0hNY2N5QnpKSE1vY3l4ek1ITTBjemh6UEhOQWMwUnpTSE5NYzFCelZITlljMXh6WUhOa2MyaHpiSE53YzNSemVITjhjNEJ6aEhPSWM0eHprSE9VYzVoem5IT2djNlJ6cUhPc2M3Qnp0SE80Yzd4endIUEVjOGh6ekhQUWM5UnoySFBjYytCejVIUG9jK3h6OEhQMGMvaHovSEFBZEFSMENIUU1kQkIwRkhRWWRCeDBJSFFrZENoMExIUXdkRFIwT0hROGRFQjBSSFJJZEV4MFVIUlVkRmgwWEhSZ2RHUjBhSFJzZEhCMGRIUjRkSHgwZ0hTRWRJaDBqSFNRZEpSMG1IU2NkS0IwcEhTb2RLeDBzSFMwZExoMHZIVEFkTVIweUhUTWROQjAxSFRZZE54MDRIVGtkT2gwN0hUd2RQUjArSFQ4ZFFCMUJIVUlkUXgxRUhVVWRSaDFISFVnZFNSMUtIVXNkVEIxTkhVNGRUeDFRSFZFZFVoMVRIVlFkVlIxV0hWY2RXQjFaSFZvZFd4MWNIVjBkWGgxZkhXQWRZUjFpSFdNZFpCMWxIV1lkWngxb0hXa2RhaDFySFd3ZGJSMXVIVzhkY0IxeEhYSWRjeDEwSFhVZGRoMTNIWGdkZVIxNkhYc2RmQjE5SFg0ZGZ4MkFIWUVkZ2gyREhZUWRoUjJHSFljZG9oMmpIYVFkcFIybUhhY2RxQjJwSGFvZHF4MnNIYTBkcmgydkhiQWRzUjJ5SGJNZHRCMjFIYllkdHgyNEhia2R1aDI3SGJ3ZHZSMitIYjhkd0IzQkhjSWR3eDNFSGNVZHhoM0hIY2dkeVIzS0hjc2R6QjNOSGM0ZHp4M1FIZEVkMGgzVEhkUWQxUjNXSGRjZDJCM1pIZG9kMngzY0hkMGQzaDNmSGVBZDRSM2lIZU1kNUIzbEhlWWQ1eDNvSGVrZDZoM3JIZXdkN1IzdUhlOGQ4QjN4SGZJZDh4MzBIZlVkOWgzM0hmZ2QrUjM2SGZzZC9CMzlIZjRkL3gwQUhnRWVBaDRESGdRZUJSNEdIZ2NlQ0I0Skhnb2VDeDRNSGcwZURoNFBIaEFlRVI0U0hoTWVGQjRWSGhZZUZ4NFlIaGtlR2g0Ykhod2VIUjRlSGg4ZUlCNGhIaUllSXg0a0hpVWVKaDRuSGlnZUtSNHFIaXNlTEI0dEhpNGVMeDR3SGpFZU1oNHpIalFlTlI0MkhqY2VPQjQ1SGpvZU94NDhIajBlUGg0L0hrQWVRUjVDSGtNZVJCNUZIa1llUng1SUhra2VTaDVMSGt3ZVRSNU9IazhlVUI1UkhsSWVVeDVVSGxVZVZoNVhIbGdlV1I1YUhsc2VYQjVkSGw0ZVh4NWdIbUVlWWg1akhtUWVaUjVtSG1jZWFCNXBIbW9lYXg1c0htMGViaDV2SG5BZWNSNXlIbk1lZEI1MUhuWWVkeDU0SG5rZWVoNTdIbndlZlI1K0huOGVnQjZCSG9JZWd4NkVIb1VlaGg2SEhvZ2VpUjZLSG9zZWpCNk5IbzRlang2UUhwRWVraDZUSHBRZWxSNldIcGNlbUI2Wkhwb2VteDZjSHAwZW5oNmZIcUFlb1I2aUhxTWVwQjZsSHFZZXB4Nm9IcWtlcWg2ckhxd2VyUjZ1SHE4ZXNCNnhIckllc3g2MEhyVWV0aDYzSHJnZXVSNjZIcnNldkI2OUhyNGV2eDdBSHNFZXdoN0RIc1FleFI3R0hzY2V5QjdKSHNvZXl4NHdRZGtBQUFCeVlYWTBMV1JoY210bGNsOW5iR0Z6QUdBQTVCTGxFdVlTNXhMb0V1a1M2aExyRXV3UzdSTHVFdThTOEJMeEV2SVM4eEwwRXZVUzloTDNFdmdTK1JMNkV2c1MvQkw5RXY0Uy94SUFFd0VUQWhNREV3UVRCUk1HRXdjVENCTUpFd29UQ3hNTUV3MFREaE1QRXhBVEVSTVNFeE1URkJNVkV4WVRGeE1ZRXhrVEdoTWJFeHdUSFJNZUV4OFRJQk1oRXlJVEl4TWtFeVVUSmhNbkV5Z1RLUk1xRXlzVExCTXRFeTRUTHhNd0V6RVRNaE16RXpRVE5STTJFemNUT0JNNUV6b1RPeE04RXowVFBoTS9FMEFUUVJOQ0UwTVRNRUZUQVFBQWNtRjJOQzF3YkdGMFpRQ2dBRVFUUlJOR0UwY1RTQk5KRTBvVFN4Tk1FMDBUVGhOUEUxQVRVUk5TRTFNVFZCTlZFMVlUVnhOWUUxa1RXaE5iRTF3VFhSTmVFMThUWUJOaEUySVRZeE5rRTJVVFpoTm5FMmdUYVJOcUUyc1RiQk50RTI0VGJ4TndFM0VUY2hOekUzUVRkUk4yRTNjVGVCTjVFM29UZXhOOEUzMFRmaE4vRTRBVGdST0NFNE1UaEJPRkU0WVRoeE9JRTRrVGloT0xFNHdUalJPT0U0OFRrQk9SRTVJVGt4T1VFNVVUbGhPWEU1Z1RtUk9hRTVzVG5CT2RFNTRUbnhPZ0U2RVRvaE9qRTZRVHBST21FNmNUcUJPcEU2b1RxeE9zRTYwVHJoT3ZFN0FUc1JPeUU3TVR0Qk8xRTdZVHR4TzRFN2tUdWhPN0U3d1R2Uk8rRTc4VHdCUEJFOElUd3hQRUU4VVR4aFBIRThnVHlSUEtFOHNUekJQTkU4NFR6eFBRRTlFVDBoUFRFOVFUMVJQV0U5Y1QyQlBaRTlvVDJ4UGNFOTBUM2hQZkUrQVQ0UlBpRStNVE1FR2hBd0FBY21GMk5DMXlaV1FBeUFIa0UrVVQ1aFBuRStnVDZSUHFFK3NUN0JQdEUrNFQ3eFB3RS9FVDhoUHpFL1FUOVJQMkUvY1QrQlA1RS9vVCt4UDhFLzBUL2hQL0V3QVVBUlFDRkFNVUJCUUZGQVlVQnhRSUZBa1VDaFFMRkF3VURSUU9GQThVRUJRUkZCSVVFeFFVRkJVVUZoUVhGQmdVR1JRYUZCc1VIQlFkRkI0VUh4UWdGQ0VVSWhRakZDUVVKUlFtRkNjVUtCUXBGQ29VS3hRc0ZDMFVMaFF2RkRBVU1SUXlGRE1VTkJRMUZEWVVOeFE0RkRrVU9oUTdGRHdVUFJRK0ZEOFVRQlJCRkVJVVF4UkVGRVVVUmhSSEZFZ1VTUlJLRkVzVVRCUk5GRTRVVHhSUUZGRVVVaFJURkZRVVZSUldGRmNVV0JSWkZGb1VXeFJjRkYwVVhoUmZGR0FVWVJSaUZHTVVaQlJsRkdZVVp4Um9GR2tVYWhSckZHd1ViUlJ1Rkc4VWNCUnhGSElVY3hSMEZIVVVkaFIzRkhnVWVSUjZGSHNVZkJSOUZINFVmeFNBRklFVWdoU0RGSVFVaFJTR0ZJY1VpQlNKRklvVWl4U01GSTBVamhTUEZKQVVrUlNTRkpNVWxCU1ZGSllVbHhTWUZKa1VtaFNiRkp3VW5SU2VGSjhVb0JTaEZLSVVveFNrRktVVXBoU25GS2dVcVJTcUZLc1VyQlN0Rks0VXJ4U3dGTEVVc2hTekZMUVV0UlMyRkxjVXVCUzVGTG9VdXhTOEZMMFV2aFMvRk1BVXdSUUNHZ01hQkJvRkdnWWFCeG9JR2drYUNob0xHZ3dhRFJvT0dnOGFFQm9SR2hJYUV4b1VHaFVhRmhvWEdoZ2FHUm9hR2hzYUhCb2RHaDRhSHhvZ0dpRWFJaG9qR2lRYUpSb21HaWNhS0JvcEdpb2FLeG9zR2kwYUxob3ZHakFhTVJveUdqTWFOQm8xR2pZYU54bzRHamthT2hvN0dqd2FQUm8rR2o4YVFCcEJHa0lhUXhwRUdrVWFSaHBIR2tnYVNScEtHa3NhVEJwTkdrNGFUeHBRR2xFYVVocFRHbFFhVlJwV0dsY2FXQnBaR2xvYVd4cGNHbDBhWGhwZkdtQWFZUnBpR21NYVpCcGxHbVlhWnhwb0dta2FhaHByR213YWJScHVHbThhY0JweEduSWFjeHAwR25VYWRocDNHbmdhZVJwNkduc2FmQnA5R240YWZ4cUFHb0VhZ2hxREdvUWFoUnFHR29jYWlCcUpHb29haXhxTUdvMGFqaHFQR3BBYWtScVNHcE1hbEJxVkdwWWFseHFZR3BrYW1ocWJHcHdhblJxZUdwOGFvQnFoR3FJYW94cWtHcVVhcGhxbkdxZ2FxUnFxR3FzYXJCcXRHcTRhcnhxd0dyRWFzaHF6R3JRYXRScTJHcmNhdUJxNUdyb2F1eHE4R3IwYXZocS9Hc0Fhd1JyQ0dzTWF4QnJGR3NZYXh4cklHc2theWhyTEdzd2F6UnJPR3M4YTBCclJHdElhMHhyVUd0VWExaHJYR3RnYTJScmFHdHNhM0JyZEd0NGEzeHJnR3VFYTRocmpHdVFhNVJybUd1Y2E2QnJwR3VvYTZ4b3dRU2NCQUFCeVlYWTBMWE50WVd4c1gzSmxaQUNJQUNvVkt4VXNGUzBWTGhVdkZUQVZNUlV5RlRNVk5CVTFGVFlWTnhVNEZUa1ZPaFU3RlR3VlBSVStGVDhWUUJWQkZVSVZReFZFRlVVVlJoVkhGVWdWU1JWS0ZVc1ZUQlZORlU0VlR4VlFGVkVWVWhWVEZWUVZWUlZXRlZjVldCVlpGVm9WV3hWY0ZWMFZYaFZmRldBVllSVmlGV01WWkJWbEZXWVZaeFhzR3UwYTdocnZHdkFhOFJyeUd2TWE5QnIxR3ZZYTl4cjRHdmthK2hyN0d2d2EvUnIrR3Y4YUFCc0JHd0liQXhzRUd3VWJCaHNIR3dnYkNSc0tHd3NiREJzTkd3NGJEeHNRR3hFYkVoc1RHeFFiRlJzV0d4Y2JHQnNaR3hvYkd4c2NHeDBiSGhzZkd5QWJJUnNpR3lNYkpCc2xHeVliSnhzb0d5a2JLaHNyR3l3YkxSc3VHeThiTUJzeEd6SWJNeHMwR3pVYlVFRTJld0FBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQUVDUmRRRUFWRzk1YjNSaFgxSkJOZ0FBUVlCMUFRQVFRYmgyQUFEa0NTY2d3RUZodUJ0Q01vbUh3TXR1QjBKNFJSSkNzOEJCd1NjZ3dFRjRSUkpDczhCQndUMG9ERUpodUJ0Q01vbUh3Q2Nnd0VGWU1UQkNMM2syUUQwb0RFSllNVEJDTDNrMlFDY2d3RUhjOEQ5Q3BEcWFRRDBvREVMYzhEOUNwRHFhUUNjZ3dFRWhrRmRDRUcyelFEMG9ERUloa0ZkQ0VHMnpRQ2Nnd0VIcjduNUNEMjJ6UUQwb0RFTHI3bjVDRDIyelFDY2d3RUdyRUl4Q1VoUUVRRDBvREVLckVJeENVaFFFUUNjZ3dFR3prNUZDLzk5MXdEMG9ERUt6azVGQy85OTF3Q2Nnd0VHVGc1VkNlYWdWd2N0dUIwS1RnNVZDZWFnVndTY2d3RUVtVFpaQzZsbE93WUJJQkVJbVRaWkM2bGxPd1NjZ3dFRzZGcGRDalNWMHdaeGU3MEc2RnBkQ2pTVjB3ZHI1dkVHNkZwZENqU1Ywd2RyNXZFRW1UWlpDNmxsT3dkcjV2RUdUZzVWQ2VhZ1Z3ZHI1dkVHems1RkMvOTkxd05yNXZFR0ZmWXBDT3ZSaFA5cjV2RUhyN241Q0QyMnpRTnI1dkVFaGtGZENFRzJ6UU5yNXZFSGM4RDlDcERxYVFOcjV2RUZZTVRCQ0wzazJRTnI1dkVGaHVCdENNb21Id05yNXZFRjRSUkpDczhCQndkcjV2RUZaYUd0Q1N1K0h3ZHI1dkVFYWIydENYZW1Fd2RyNXZFRytDMnRDR3JOOXdkcjV2RUZZQVdwQ3RvTnZ3ZHI1dkVIMkVtaENoMGhqd2RyNXZFRjV6V1JDbS8xYXdkcjV2RUdjRlY5Q081Rlh3ZHI1dkVIYk5seEMvRjlZd2RyNXZFSG4vRmxDZVVKZHdkcjV2RUVEQzFkQzF6SnZ3ZHI1dkVIb29WVkNZcUdCd1VHdHRrRlphR3RDU3UrSHdVR3R0a0VhYjJ0Q1hlbUV3VUd0dGtHK0MydENHck45d1VHdHRrRllBV3BDdG9OdndVR3R0a0gyRW1oQ2gwaGp3VUd0dGtGNXpXUkNtLzFhd1VHdHRrR2NGVjlDTzVGWHdVR3R0a0hiTmx4Qy9GOVl3VUd0dGtIbi9GbENlVUpkd1VHdHRrRURDMWRDMXpKdndVR3R0a0hvb1ZWQ1lxR0J3VWt1bDBGWmFHdENTdStId1VrdWwwRWFiMnRDWGVtRXdVa3VsMEcrQzJ0Q0dyTjl3VWt1bDBGWUFXcEN0b052d1VrdWwwSDJFbWhDaDBoandVa3VsMEY1eldSQ20vMWF3VWt1bDBHY0ZWOUNPNUZYd1VrdWwwSGJObHhDL0Y5WXdVa3VsMEhuL0ZsQ2VVSmR3VWt1bDBFREMxZEMxekp2d1VrdWwwSG9vVlZDWXFHQndmSnIvVUVPNlExQy9LdUd3U2Nnd0VFTzZRMUMvS3VHd2MvMyswRUVqQTFDU3RLSndTY2d3RUVFakExQ1N0S0p3ZHI1dkVFTzZRMUMvS3VHd2RyNXZFRUVqQTFDU3RLSndkcjV2RUg1NlZSQ1V5aUl3ZHI1dkVIV0UxVkMvS3VHd1VHdHRrSFdFMVZDL0t1R3dVR3R0a0g1NlZSQ1V5aUl3VWt1bDBIV0UxVkMvS3VHd1VrdWwwSDU2VlJDVXlpSXdjdHVCOEo0UlJKQ3M4QkJ3U2Nnd01GaHVCdENNb21Id0NjZ3dNRjRSUkpDczhCQndUMG9ETUpodUJ0Q01vbUh3Q2Nnd01GWU1UQkNMM2syUUQwb0RNSllNVEJDTDNrMlFDY2d3TUhjOEQ5Q3BEcWFRRDBvRE1MYzhEOUNwRHFhUUNjZ3dNRWhrRmRDRUcyelFEMG9ETUloa0ZkQ0VHMnpRQ2Nnd01IcjduNUNEMjJ6UUQwb0RNTHI3bjVDRDIyelFDY2d3TUdyRUl4Q1VoUUVRRDBvRE1LckVJeENVaFFFUUNjZ3dNR3prNUZDLzk5MXdEMG9ETUt6azVGQy85OTF3Q2Nnd01HVGc1VkNlYWdWd2N0dUI4S1RnNVZDZWFnVndTY2d3TUVtVFpaQzZsbE93WUJJQk1JbVRaWkM2bGxPd1NjZ3dNRzZGcGRDalNWMHdaeGU3OEc2RnBkQ2pTVjB3ZHI1dk1HNkZwZENqU1Ywd2RyNXZNRW1UWlpDNmxsT3dkcjV2TUdUZzVWQ2VhZ1Z3ZHI1dk1Hems1RkMvOTkxd05yNXZNR0ZmWXBDT3ZSaFA5cjV2TUhyN241Q0QyMnpRTnI1dk1FaGtGZENFRzJ6UU5yNXZNSGM4RDlDcERxYVFOcjV2TUZZTVRCQ0wzazJRTnI1dk1GaHVCdENNb21Id05yNXZNRjRSUkpDczhCQndkcjV2TUZaYUd0Q1N1K0h3ZHI1dk1FYWIydENYZW1Fd2RyNXZNRytDMnRDR3JOOXdkcjV2TUZZQVdwQ3RvTnZ3ZHI1dk1IMkVtaENoMGhqd2RyNXZNRjV6V1JDbS8xYXdkcjV2TUdjRlY5Q081Rlh3ZHI1dk1IYk5seEMvRjlZd2RyNXZNSG4vRmxDZVVKZHdkcjV2TUVEQzFkQzF6SnZ3ZHI1dk1Ib29WVkNZcUdCd1VHdHRzRlphR3RDU3UrSHdVR3R0c0VhYjJ0Q1hlbUV3VUd0dHNHK0MydENHck45d1VHdHRzRllBV3BDdG9OdndVR3R0c0gyRW1oQ2gwaGp3VUd0dHNGNXpXUkNtLzFhd1VHdHRzR2NGVjlDTzVGWHdVR3R0c0hiTmx4Qy9GOVl3VUd0dHNIbi9GbENlVUpkd1VHdHRzRURDMWRDMXpKdndVR3R0c0hvb1ZWQ1lxR0J3VWt1bDhGWmFHdENTdStId1VrdWw4RWFiMnRDWGVtRXdVa3VsOEcrQzJ0Q0dyTjl3VWt1bDhGWUFXcEN0b052d1VrdWw4SDJFbWhDaDBoandVa3VsOEY1eldSQ20vMWF3VWt1bDhHY0ZWOUNPNUZYd1VrdWw4SGJObHhDL0Y5WXdVa3VsOEhuL0ZsQ2VVSmR3VWt1bDhFREMxZEMxekp2d1VrdWw4SG9vVlZDWXFHQndmSnIvY0VPNlExQy9LdUd3U2Nnd01FTzZRMUMvS3VHd2MvMys4RUVqQTFDU3RLSndTY2d3TUVFakExQ1N0S0p3ZHI1dk1FTzZRMUMvS3VHd2RyNXZNRUVqQTFDU3RLSndkcjV2TUg1NlZSQ1V5aUl3ZHI1dk1IV0UxVkMvS3VHd1VHdHRzSFdFMVZDL0t1R3dVR3R0c0g1NlZSQ1V5aUl3VWt1bDhIV0UxVkMvS3VHd1VrdWw4SDU2VlJDVXlpSXdXV0ZCMEs4RGUvQkJlTnl3UU5WQ1VLbDdmbkJDMnBhd1R4eEIwSUlOUExCQmVOeXdRTlZDVUpZeC9iQkRHcGF3WG9RQzBJaDl2N0JNd2Nad1hvUUMwS3lHQVhDWlZhUndIb1FDMEkzRGdIQ013Y1p3WG9RQzBLTWhRUENaVmFSd0hvUUMwSUdLQWZDUktTVHZYb1FDMExmbEFYQ1I2U1R2VlI5Q1VMcm1nZkNCZ1dCUUZSOUNVTEVCd2JDQmdXQlFIQlVDRUx6QndmQ3ZDVzNRSEJVQ0VMTWRBWEN2Q1czUU9MREJFSkQrd0RDV2NnUlFZUm4vVUZZNFByQlpVc3JRZUxEQkVKcGpnTENXY2dSUVlSbi9VRU11dmZCcWV3clFaeGU3MEhLR3ZUQlVqODlRWnhlNzBGKzlQREJsT0E5UWJhdEIwSWFrT1BCeXQ5eXdWUjlDVUlha09QQkVHZFd3UWhYQmtJYWtPUEJwM2dod1ZSOUNVSWFrT1BCYk9pTndIb1FDMElaa09QQnJHT2pQZmJOQ1VJWmtPUEJ3Mk9nUUhCVUNFSVprT1BCQ3cvWFFJTVVCVUlaa09QQmthNFZRWVJuL1VFWmtPUEJaekF1UVp4ZTcwRVprT1BCdHU1QVFac2dCMElrdytYQmdTRjZ3WnNnQjBJYWtPUEJTaDU2d1V2NEJrSWt3K1hCQldSN3dVdjRCa0lha09QQnoyQjd3WnhlNzBGTjNRWEI2VkZlUVlSbi9VRk4zUVhCejNoSlFZTVVCVUpOM1FYQnpzY3ZRZmJOQ1VKTjNRWEJJTi9OUUhCVUNFSk4zUVhCVlpjRFFYb1FDMEpPM1FYQnpxR2hQMVI5Q1VKTzNRWEJEaEZld0FoWEJrSk8zUVhCYkdnV3diYXRCMEpQM1FYQkRBRnR3VlI5Q1VKTzNRWEI1Z3RSd1pzZ0IwSlAzUVhCSnBsMHdVdjRCa0pQM1FYQlFldDF3VmgvQmtKTzNRWEJzQzRad1ZoL0JrSWFrT1BCTFI0a3dWTDhDa0tNb2Y3Qnd4c2N3Vkw4Q2tMdTR3REN3eHNjd1FoWENVSk8zUVhCSjJsT3dRaFhDVUlha09QQmJPTlR3WHFRQ1VMYXF2akJrdEZSd1hxUUNVSW0wZnZCa3RGUndWaC9Ca0pqSnk5QksrUU93UWhYQ1VJMVBROUJyanBJd1FoWENVSzd2aWhCRjdSSHdWaC9Ca0kxUFE5Qis3OFB3VlI5Q1VJMVBROUJRUGhLd1ZSOUNVS0w0Q2xCeG0xS3dRaFhCa0xqblM1Qnl3SU13UWhYQmtJMVBROUJmTjBNd1pzZ0IwTFZQRFpCREdGdndVdjRCa0kxUFE5QklHSnh3VXY0QmtLcUh6bEJSclp3d1pzZ0IwSTFQUTlCbGdKd3diYXRCMEwxK2pCQjA0bG53YmF0QjBJMVBROUJMeDFvd1ZSOUNVSThMUjVCZjRVbXdGUjlDVUkyUFE5QkRzNG93SG9RQzBKMnJocEJNMFVVUUhvUUMwSTJQUTlCcFI0U1FQYk5DVUl0T3g5QlN1bjJRUGJOQ1VJMlBROUJGeHIxUUhCVUNFSTl6U0pCWm9RWlFYQlVDRUkzUFE5QmVGZ1lRWHFsL1VIUVhTMUJpQTFqUVlNVUJVSTNQUTlCdGtwR1FZTVVCVUppVHlsQmx2eEhRYW1LL1VFM1BROUJNZ0ZoUVJPWjhFR295eTlCSEZoMlFUSjc4RUUzUFE5QnpnOTBRY25jQmtJM1BROUJtRkV2UWNuY0JrS0ZYU1pCVU1Nd1FjbmNCa0pOM1FYQms2OFpRY25jQmtJWmtPUEJDNXNBUWRoakJrSUhPQVBDTjF2dFFOaGpCa0l1eXdUQ04xdnRRSG9RQzBKVnR4eEJHYWNVUUZSOUNVSzlSaUJCVlRNbXdQYk5DVUtpWlNGQkJpajNRSEJVQ0VLdkhpVkI4S2NaUWNuY0JrS3k0aWhCbXVzd1FZTVVCVUl4MEN0QlB5WklRVzZuL1VGdmtpOUI2ak5qUWQyYThFSFB2ekZCTEh0MlFRaFhCa0k4ZlRCQnZ2VUx3VmgvQmtKcVBURkJ6dFVPd1FoWENVSkwxU3BCRXFsSHdWUjlDVUpYK0N0QjQySkt3YmF0QjBMTkVUTkJ0WUJud1pzZ0IwSXFHVGhCVjFsdndVdjRCa0tMTnp0QnNLMXd3WGJMN1VGTjNRWEI2VkZlUVhiTDdVRVprT1BCdHU1QVFlNEY3MEdveXk5QkhGaDJRUTNvN2tFM1BROUJ6ZzkwUWJnSDcwSFB2ekZCTEh0MlFVZ1UvRUZ2a2k5QjZqTmpRZTlLQkVJeDBDdEJQeVpJUVRZVEJrS3k0aWhCbXVzd1FkMktCMEt2SGlWQjhLY1pRV01FQ1VLaVpTRkJCaWozUU9kR0NrSlZ0eHhCR2FjVVFNR3pDRUs5UmlCQlZUTW13SFdOQlVJOGZUQkJ2dlVMd2NhMUJVSnFQVEZCenRVT3dYV05DRUpMMVNwQkVxbEh3Y0d6Q0VKWCtDdEI0MkpLd1NMa0JrTE5FVE5CdFlCbndRaFhCa0lxR1RoQlYxbHZ3Ymd1QmtLTE56dEJzSzF3d2JndUJrS3FIemxCUnJad3diZ3VCa0kxUFE5QklHSnh3Ymd1QmtJYWtPUEJ6MkI3d2JndUJrSlAzUVhCUWV0MXdiZ3VCa0lrdytYQkJXUjd3YW1uQmtJSU5QTEJCZU55d1hDTENFS2w3Zm5CQzJwYXdlakdDRUltMGZ2Qmt0RlJ3YjR5Q2tMdTR3REN3eHNjd2VkR0NrSTNEZ0hDTXdjWndlZEdDa0t5R0FYQ1pWYVJ3T2RHQ2tJR0tBZkNSS1NUdmNHekNFTHJtZ2ZDQmdXQlFOMktCMEx6QndmQ3ZDVzNRRVdhQlVJdXl3VENOMXZ0UUUvNkEwSnBqZ0xDV2NnUlFWN1UrMEZZNFByQlpVc3JRWGJMN1VIS0d2VEJVajg5UVhiTDdVRis5UERCbE9BOVFaSlk1RUZOM1FYQjZWRmVRWkpZNUVFWmtPUEJ0dTVBUVFxVDVVR295eTlCSEZoMlFTZDE1VUUzUFE5QnpnOTBRWkpZNUVGKzlQREJsT0E5UWRTVTVVSFB2ekZCTEh0MlFXU2g4a0Z2a2k5QjZqTmpRZndpLzBFeDBDdEJQeVpJUWNWWkFVS3k0aWhCbXVzd1FXdlJBa0t2SGlWQjhLY1pRZkJLQkVLaVpTRkJCaWozUUhXTkJVSlZ0eHhCR2FjVVFFLzZBMEs5UmlCQlZUTW13QVRVQUVJOGZUQkJ2dlVMd1ZQOEFFSnFQVEZCenRVT3dRTFVBMEpMMVNwQkVxbEh3VS82QTBKWCtDdEI0MkpLd2JBcUFrTE5FVE5CdFlCbndaYWRBVUlxR1RoQlYxbHZ3VVoxQVVLTE56dEJzSzF3d1VaMUFVS3FIemxCUnJad3dVWjFBVUkxUFE5QklHSnh3VVoxQVVJYWtPUEJ6MkI3d1VaMUFVSlAzUVhCUWV0MXdVWjFBVUlrdytYQkJXUjd3VGp1QVVJSU5QTEJCZU55d2YvUkEwS2w3Zm5CQzJwYXdYVU5CRUltMGZ2Qmt0RlJ3VTE1QlVMdTR3REN3eHNjd1hXTkJVSTNEZ0hDTXdjWndYV05CVUt5R0FYQ1pWYVJ3SFdOQlVJR0tBZkNSS1NUdlUvNkEwTHJtZ2ZDQmdXQlFHdlJBa0x6QndmQ3ZDVzNRTlBnQUVJdXl3VENOMXZ0UUxpQi9rRnBqZ0xDV2NnUlFYcGg4a0ZZNFByQlpVc3JRWkpZNUVIS0d2VEJVajg5UVRSdERVSWJ5RXBDaFZhd1FEUnREVUxrQTBGQ1haZWdRRFJ0RFVKYmNrcEMvOXlxUURSdERVS0gxVUJDVXBHbFFEUnREVUlkSkNKQ3JiOTN2elJ0RFVMZ2hDeEMvbVFzUURSdERVTFNmaUZDVUpkanZ6UnREVUxIOXl4Q1doUWtRRFJ0RFVLNDh4aENESE9Nd0RSdERVS0tYQmhDUUE2S3dLR2pERUtDMlJCQ2NTVVF3YUdqREVKNFZCQkMzMXNQd1ZSOUNVSnowd3BDOFZ0THdWUjlDVUorV0FwQ29ETkx3VFJ0RFVKaVpFZENmLzJFUURSdERVSTIwRU5DME5oS1FEUnREVUpmampSQ1lIYVBQelJ0RFVKbHdpaENSQy9qdnpSdERVS2t6aUJDVjRPbXdLR2pERUpvZWhwQzdqa1R3VlI5Q1VKZk5oUkNHczVRd1RSdERVSS9QelpDNHcrQlFEUnREVUtvZGpWQ2VzYURRRFJ0RFVKUXlqdENsdG9HUUJkdi8wRmd4enRDc3dHRFFTVVg4a0VzcXlsQ3hnYUxRWjhjLzBFc3F5bENLdXVBUVpwcDhrRmd4enRDaytxTVFYbGlCVUpneHp0Q1lUdHFRVDQ1QlVJc3F5bENFb0JsUVpWbEJVSjdvVFZDc3lZaVFVYWhCRUxiQXk1Q3BFVXhRWlZsQlVMckpEQkNneTRnUVVhaEJFS3ZiamRDdlRvMFFlbUY4a0ZqR1VwQ2JQK05RY2FSLzBIbStFeEM5RlNFUVRoM0JVSkJDRkJDMG1adFFYQlVDRUtPZEZCQ2VMQTlRZmJOQ1VKeFVEaENqNjRYUVpjZUNrSTZIazlDMjNrZVFYQlVDRUpneHp0Q3BuSTZRY25jQmtKTHZUWkNmaFJSUWNuY0JrSnEwMUJDN3FSVlFjbmNCa0wrRXk1Q2FhWlBRZS9kQTBMWVRqQkNMa0UvUWUvZEEwTFh6elJDaS84L1FWUjlDVUo3VmcxQ1BvVkl3QWhYQmtKVGJQWkIveFlEd1FoWEJrTFZoQVJDcDhJQ3djR3pDRUxzRlFOQ0ZvSTl3SG9RQzBMRWVCWkNJMVg2UG5vUUMwTDZHdzVDZndGSlFQYk5DVUpjd3kxQysrUVRRZWRHQ2tMNEVTTkNLWDJiUU9kR0NrS2c4eTlDdzl6dVFOWStERUlIR0Q5Q3lUN3VRTlkrREVLbUgwMUNScW4zUUU5N0RFS1I2ekZDb0ZHNVFFOTdERUpzeXlkQ0MyTnJRQnJnREVMTCt4dENmdGxNdm9jV0RFS0QyUkpDNEZCdXdKY2VDa0tuYkFwQ1FnOEp3VlI5Q1VKZnp3ZENmeFEzd1FoWENVSlRiUFpCRXRSQXdWUjlDVUpUYlBaQnRxMUR3UWhYQ1VJNVBBWkMzRG8wd1lDWENFTGoxd0pDYVg5V3dYNjhCMEx0eHdoQ3hOTm13UUs0QjBLZU5naEM1Zzlud2JhdEIwSlRiUFpCRS8xaHdmUnNCMEtleEFGQ0xwNW93VmgvQmtKVGJQWkJCeGNHd2ZpWUIwSjluZ2hDdGE5b3dSU1hCMEwzRGdoQ1VNVm93YkwwQjBJMVZ3NUNjV3Rpd1YxSUIwS2ZzQUZDQURCcXdiTDBCMEwrdXc1Q3NReGp3VlI5Q1VJcG14UkNHczVRd2FHakRFSUp5eHBDN2prVHdUUnREVUpGSHlGQ215U253RFJ0RFVMZi9paENUN1RsdnpSdERVS3h0alJDTjJLRlB6UnREVUxKQmp4Q0JoTURRRFJ0RFVKZjVFTkN1YzVGUURSdERVSmNwa2RDKythRFFEUnREVUpONjBwQ1FuNnJRRFJ0RFVJT1FVdEN5UGV3UU5ZK0RFSndoRTFDUnFuM1FKY2VDa0lGZzA5QzIza2VRWEJVQ0VKWTJWQkNlTEE5UWNuY0JrSTBPRkZDN3FSVlFUaDNCVUxqV0ZCQzBtWnRRY2FSLzBHd1hVMUM5RlNFUWVtRjhrRXVma3BDYlArTlFXekY0c0NvWUdKQ2pDVjB3VHNzMXNDMlptMUNqQ1Ywd1d6RjRzQzJabTFDakNWMHdUc3Mxc0NvWUdKQ2pDVjB3WEJVQ0VJc3F5bENyY0kwUWZiTkNVS09COTVCcnJvSlFYQlVDRUtPQjk1Qnh6b29RZmJOQ1VLMGNWRkJxcGY4UUhCVUNFSzBjVkZCZzA4Y1FjbmNCa0pqQnQ1QlJHMUFRY25jQmtLMGNWRkJBblF6UVlNVUJVSmpCdDVCVUtaWVFZTVVCVUswY1ZGQmdaaEtRZmlOL2tGakJ0NUJ6TkIwUVpQRi9VRzBjVkZCYllGbFFSV004VUZqQnQ1QlpIU0VRZlMzOEVHMGNWRkJBN1I0UVhvUUMwSm5lTUpCenNnelFIb1FDMEt6Y1ZGQkhaQWVRSW9ZQ1VKWmNyZEJveGd1d0ZSOUNVS3pjVkZCTmE4ZXdBaFhCa0tYa3E5Qmh4TUh3UWhYQmtLeWNWRkJEeEFMd1ZoL0JrS1hrcTlCZ3djS3dWaC9Ca0t5Y1ZGQkFmZ053UWhYQ1VLWGtxOUJ0ZGhEd1FoWENVS3ljVkZCVjkxR3dWUjlDVUtYa3E5QjVxWkd3VlI5Q1VLeWNWRkJGYUJKd2JhdEIwS1hrcTlCajN4a3diYXRCMEt5Y1ZGQkMveG13WnNnQjBLWGtxOUIxNUZzd1pzZ0IwSlRiUFpCVmpOcXdac2dCMEt5Y1ZGQlhQQnV3VXY0QmtLWGtxOUJ0L2x0d1V2NEJrSlRiUFpCOGFCcndVdjRCa0t5Y1ZGQmZsSnd3V3FxL1VGazdESkJQMjVqUVppZDhFSFB0elJCZExCMlFZTVVCVUxxblM5QmpXVklRY25jQmtJUHR5eEIwaWd4UVhCVUNFSnhwQ2hCOHQwWlFmYk5DVUlsc0NSQlY0ZjNRQWhYQmtLZFZUTkI2T0VMd1ZoL0JrTGlhRFJCK2I4T3dRaFhDVUtTQVM1QlZaaEh3VlI5Q1VKL0ppOUJXbEpLd2JhdEIwS0VQalpCMTNKbndac2dCMEw0N0RwQm9VMXZ3VXY0QmtMVFpUNUJvcUJ3d1hvUUMwTFJ6aDlCMnpzVlFGUjlDVUovZHlOQmVyWWx3RlI5Q1VJRE15MUJmMXhLd1FoWENVSTlEeXhCbTZKSHdWaC9Ca0lOZHpKQlhzME93UWhYQmtMQ2xqRkJFKzRMd1ZSOUNVSnJnaUZCRXdNbXdIb1FDMEkvNlIxQmwrQVVRUGJOQ1VKRXF5SkIzVXozUUhCVUNFSTNleVpCMGJ3WlFjbmNCa0tjWFNwQlF3TXhRWU1VQlVLS1NDMUJ0ajVJUVphby9VRUszakJCZGtwalFleWI4RUdONVRKQnhZOTJRYmF0QjBMclN6UkJXSHRud1pzZ0IwTHFNRGxCMEZSdndVdjRCa0pFY2p4QnBhaHd3Y1lJNzBHTjVUSkJ4WTkyUVhBVi9FRUszakJCZGtwalFlOUtCRUtLU0MxQnRqNUlRWElLNzBIUHR6UkJkTEIyUWM0azcwRzBjVkZCQTdSNFFlLzQ3MEZqQnQ1QlpIU0VRUUdFOEVFc3F5bEN4Z2FMUVhUVzhFRmd4enRDaytxTVFjUHk4RUZqR1VwQ2JQK05RY1B5OEVFdWZrcENiUCtOUWFIKy9VR3dYVTFDOUZTRVFhU3RCRUxqV0ZCQzBtWnRRVFlUQmtJME9GRkM3cVJWUWQyS0IwSlkyVkJDZUxBOVFRTlZDVUlGZzA5QzIza2VRVVIxQzBKd2hFMUNScW4zUUtHakRFSU9RVXRDeVBld1FLR2pERUpONjBwQ1FuNnJRS0dqREVKZjVFTkN1YzVGUUtHakRFSmNwa2RDL09hRFFLR2pERUxKQmp4Q0JoTURRS0dqREVLeHRqUkNOMktGUDZHakRFTGYvaWhDVDdUbHY2R2pERUpGSHlGQ215U253QTdhQzBJSnl4cEM3amtUd2NHekNFSXBteFJDR3M1UXdSOHJCMEwrdXc1Q3NReGp3V1hQQmtKOW5naEN0YTlvd1lMTkJrTDNEZ2hDVU1Wb3diZ3VCa0pUYlBaQjhhQnJ3Y3QrQmtLZnNBRkNBREJxd2JndUJrS1hrcTlCdC9sdHdiZ3VCa0t5Y1ZGQmZsSnd3Ymd1QmtMVFpUNUJvcUJ3d2JndUJrSkVjanhCcGFod3dRaFhCa0xxTURsQjBGUnZ3U0xrQmtMclN6UkJXSHRud2NHekNFSURNeTFCZjF4S3dYV05DRUk5RHl4Qm02Skh3Y2ExQlVJTmR6SkJYczBPd1hXTkJVTENsakZCRSs0THdjR3pDRUpyZ2lGQkV3TW13T2RHQ2tJLzZSMUJsK0FVUUdNRUNVSkVxeUpCM1V6M1FOMktCMEkzZXlaQjBid1pRVFlUQmtLY1hTcEJRd014UWVHVjVVR041VEpCeFk5MlFZeWk4a0VLM2pCQmRrcGpRZndpLzBHS1NDMUJ0ajVJUVkyWDVVSFB0elJCZExCMlFjVlpBVUtjWFNwQlF3TXhRZW14NVVHMGNWRkJBN1I0UVF5RzVrRmpCdDVCWkhTRVFSd1I1MEVzcXlsQ3hnYUxRWTlqNTBGZ3h6dENrK3FNUWVCLzUwRmpHVXBDYlArTlFlQi81MEV1ZmtwQ2JQK05RYjJMOUVHd1hVMUM5RlNFUVdiby8wSGpXRkJDMG1adFFjVlpBVUkwT0ZGQzdxUlZRV3ZSQWtKWTJWQkNlTEE5UVpPYkJFSUZnMDlDMjNrZVFkSzdCa0p3aEUxQ1JxbjNRQzdxQjBJT1FVdEN5UGV3UUM3cUIwSk42MHBDUW42clFDN3FCMEpmNUVOQ3VjNUZRQzdxQjBKY3BrZEMvT2FEUUM3cUIwTEpCanhDQmhNRFFDN3FCMEt4dGpSQ04yS0ZQeTdxQjBMZi9paENUN1Rsdnk3cUIwSkZIeUZDbXlTbndKc2dCMElKeXhwQzdqa1R3VS82QTBJcG14UkNHczVRd2ExeEFrTCt1dzVDc1F4andmTVZBa0o5bmdoQ3RhOW93UkFVQWtMM0RnaENVTVZvd1VaMUFVSlRiUFpCOGFCcndWbkZBVUtmc0FGQ0FEQnF3VVoxQVVLWGtxOUJ0L2x0d1VaMUFVS3ljVkZCZmxKd3dVWjFBVUxUWlQ1Qm9xQnd3VVoxQVVKRWNqeEJwYWh3d1phZEFVTHFNRGxCMEZSdndiQXFBa0xyU3pSQldIdG53VS82QTBJRE15MUJmMXhLd1FMVUEwSTlEeXhCbTZKSHdWUDhBRUlOZHpKQlhzME93UVRVQUVMQ2xqRkJFKzRMd1UvNkEwSnJnaUZCRXdNbXdIV05CVUkvNlIxQmwrQVVRUEJLQkVKRXF5SkIzVXozUUd2UkFrSTNleVpCMGJ3WlFmYk5DVUtsZURGQXl1amhRSG9RQzBMQndzcy9OTHZzUDFSOUNVSy93c3MvNzNBL3dBaFhCa0s4d3NzL3ZPc1F3VmgvQmtLOHdzcy9Pc0lUd1FoWENVSzZ3c3MvT2R0S3dWUjlDVUs2d3NzL1o0MU53YmF0QjBLNXdzcy9PREZxd1pzZ0IwSzV3c3MveC9WeHdVdjRCa0s1d3NzL21rOXp3Ymd1QmtLNXdzcy9tazl6d1VaMUFVSzV3c3MvbWs5endYQlVDRUxGd3NzL1pJWVBRY25jQmtKUlVCMUFCU29yUVlNVUJVTEd3c3MvZXJrOFFiaDcvVUhId3NzLzFRQlhRVDRDOEVISXdzcy9UTkpxUVJwdjdrSEl3c3MvVE5KcVFUWDg1RUhJd3NzL1ROSnFRVXZPQkVKK0lrbEF0MTMyUUszY0EwSXQwNlpBbVNJU1FhM2NBMEt3d1JoQWZiOE9RVXZPQkVLN1Q1aEF1Y1Q4UVBiTkNVTHpsYWxBdituclFIQlVDRUpWUThCQVBkRVVRWG9RQzBKVVE4QkFvUVFIUUZSOUNVSlRROEJBQXR3eHdBaFhCa0pUUThCQXlId093VmgvQmtKVFE4QkFlbG9Sd1FoWENVSlNROEJBczBkSndWUjlDVUpTUThCQXRnQk13YmF0QjBKU1E4QkEvL0Zvd1pzZ0IwSlNROEJBUk1wd3dVdjRCa0pTUThCQWhDZHl3Ymd1QmtKU1E4QkFoQ2R5d1VaMUFVSlNROEJBaENkeXdVUHNBa0p0M0pGQVNDa2pRVVBzQWtMak96eEE1RzhnUWNuY0JrTEpnWjlBc1dzdlFZTVVCVUpWUThCQUJIZENRYkNFL1VGVlE4QkFEQUZkUWRCSzhFRldROEJBbWwxd1FhdTM3a0ZXUThCQW1sMXdRY2RFNVVGV1E4QkFtbDF3UVZ5cUJrSWUwNTVBeHM0dVFVQWJDRUs1L2I1QTU2NFVRZnFOQ1VMWHVLaEFnTUhzUVBxTkNVS0twekpBbys3aVFFQWJDRUl1MmRBL2NYd1BRVnlxQmtJWTNCNUF0YUFxUVlxVkNVSVpMamhDa1RRWVFSVWxDRUsranp0Q0RDTTZRWEcyQmtLZXBEWkMyRGxRUVhHMkJrS0pNQzVDamRST1FSVWxDRUxONGlsQ0I1WTBRWXFWQ1VMWDRTMUNRb0lVUVFOVkNjS2w3Zm5CQzJwYXdXV0ZCOEs4RGUvQkJlTnl3VHh4QjhJSU5QTEJCZU55d1FOVkNjSll4L2JCREdwYXdYb1FDOEt5R0FYQ1pWYVJ3SG9RQzhJaDl2N0JNd2Nad1hvUUM4STNEZ0hDTXdjWndYb1FDOEtNaFFQQ1pWYVJ3SG9RQzhJR0tBZkNSS1NUdlhvUUM4TGZsQVhDUjZTVHZWUjlDY0xybWdmQ0JnV0JRRlI5Q2NMRUJ3YkNCZ1dCUUhCVUNNTHpCd2ZDdkNXM1FIQlVDTUxNZEFYQ3ZDVzNRSVJuL2NGWTRQckJaVXNyUWVMREJNSkQrd0RDV2NnUlFlTERCTUpwamdMQ1djZ1JRWVJuL2NFTXV2ZkJxZXdyUVp4ZTc4SEtHdlRCVWo4OVFaeGU3OEYrOVBEQmxPQTlRYmF0QjhJYWtPUEJ5dDl5d1ZSOUNjSWFrT1BCRUdkV3dRaFhCc0lha09QQnAzZ2h3VlI5Q2NJYWtPUEJiT2lOd0hvUUM4SVprT1BCckdPalBmYk5DY0laa09QQncyT2dRSEJVQ01JWmtPUEJDdy9YUUlNVUJjSVprT1BCa2E0VlFZUm4vY0Vaa09QQlp6QXVRWnhlNzhFWmtPUEJ0dTVBUVpzZ0I4SWt3K1hCZ1NGNndac2dCOElha09QQlNoNTZ3VXY0QnNJa3crWEJCV1I3d1V2NEJzSWFrT1BCejJCN3daeGU3OEZOM1FYQjZWRmVRWVJuL2NGTjNRWEJ6M2hKUVlNVUJjSk4zUVhCenNjdlFmYk5DY0pOM1FYQklOL05RSEJVQ01KTjNRWEJWWmNEUVhvUUM4Sk8zUVhCenFHaFAxUjlDY0pPM1FYQkRoRmV3QWhYQnNKTzNRWEJiR2dXd2JhdEI4SlAzUVhCREFGdHdWUjlDY0pPM1FYQjVndFJ3WnNnQjhKUDNRWEJKcGwwd1V2NEJzSlAzUVhCUWV0MXdWaC9Cc0pPM1FYQnNDNFp3VmgvQnNJYWtPUEJMUjRrd1ZMOENzS01vZjdCd3hzY3dWTDhDc0x1NHdEQ3d4c2N3UWhYQ2NKTzNRWEJKMmxPd1FoWENjSWFrT1BCYk9OVHdYcVFDY0xhcXZqQmt0RlJ3WHFRQ2NJbTBmdkJrdEZSd1FoWENjSTFQUTlCcmpwSXdWaC9Cc0pqSnk5QksrUU93UWhYQ2NLN3ZpaEJGN1JId1ZoL0JzSTFQUTlCKzc4UHdWUjlDY0kxUFE5QlFQaEt3VlI5Q2NLTDRDbEJ4bTFLd1FoWEJzTGpuUzVCeXdJTXdRaFhCc0kxUFE5QmZOME13VXY0QnNJMVBROUJJR0p4d1pzZ0I4TFZQRFpCREdGdndVdjRCc0txSHpsQlJyWnd3WnNnQjhJMVBROUJsZ0p3d2JhdEI4TDErakJCMDRsbndiYXRCOEkxUFE5Qkx4MW93VlI5Q2NJOExSNUJmNFVtd0ZSOUNjSTJQUTlCRHM0b3dIb1FDOEoycmhwQk0wVVVRSG9RQzhJMlBROUJwUjRTUVBiTkNjSXRPeDlCU3VuMlFQYk5DY0kyUFE5QkZ4cjFRSEJVQ01JOXpTSkJab1FaUVhCVUNNSTNQUTlCZUZnWVFZTVVCY0kzUFE5QnRrcEdRWHFsL2NIUVhTMUJpQTFqUVlNVUJjSmlUeWxCbHZ4SFFhbUsvY0UzUFE5Qk1nRmhRUk9aOE1Hb3l5OUJIRmgyUVRKNzhNRTNQUTlCemc5MFFjbmNCc0kzUFE5Qm1GRXZRY25jQnNLRlhTWkJVTU13UWNuY0JzSk4zUVhCazY4WlFjbmNCc0laa09QQkM1c0FRZGhqQnNJSE9BUENOMXZ0UU5oakJzSXV5d1RDTjF2dFFIb1FDOEpWdHh4QkdhY1VRRlI5Q2NLOVJpQkJWVE1td1BiTkNjS2laU0ZCQmlqM1FIQlVDTUt2SGlWQjhLY1pRY25jQnNLeTRpaEJtdXN3UVlNVUJjSXgwQ3RCUHlaSVFXNm4vY0Z2a2k5QjZqTmpRZDJhOE1IUHZ6RkJMSHQyUVFoWEJzSThmVEJCdnZVTHdWaC9Cc0pxUFRGQnp0VU93UWhYQ2NKTDFTcEJFcWxId1ZSOUNjSlgrQ3RCNDJKS3diYXRCOExORVROQnRZQm53WnNnQjhJcUdUaEJWMWx2d1V2NEJzS0xOenRCc0sxd3dYYkw3Y0ZOM1FYQjZWRmVRWGJMN2NFWmtPUEJ0dTVBUWU0Rjc4R295eTlCSEZoMlFRM283c0UzUFE5QnpnOTBRYmdINzhIUHZ6RkJMSHQyUVVnVS9NRnZraTlCNmpOalFlOUtCTUl4MEN0QlB5WklRVFlUQnNLeTRpaEJtdXN3UWQyS0I4S3ZIaVZCOEtjWlFXTUVDY0tpWlNGQkJpajNRT2RHQ3NKVnR4eEJHYWNVUU1HekNNSzlSaUJCVlRNbXdIV05CY0k4ZlRCQnZ2VUx3Y2ExQmNKcVBURkJ6dFVPd1hXTkNNSkwxU3BCRXFsSHdjR3pDTUpYK0N0QjQySkt3U0xrQnNMTkVUTkJ0WUJud1FoWEJzSXFHVGhCVjFsdndiZ3VCc0tMTnp0QnNLMXd3Ymd1QnNLcUh6bEJSclp3d2JndUJzSTFQUTlCSUdKeHdiZ3VCc0lha09QQnoyQjd3Ymd1QnNKUDNRWEJRZXQxd2JndUJzSWt3K1hCQldSN3dhbW5Cc0lJTlBMQkJlTnl3WENMQ01LbDdmbkJDMnBhd2VqR0NNSW0wZnZCa3RGUndiNHlDc0x1NHdEQ3d4c2N3ZWRHQ3NJM0RnSENNd2Nad2VkR0NzS3lHQVhDWlZhUndPZEdDc0lHS0FmQ1JLU1R2Y0d6Q01Mcm1nZkNCZ1dCUU4yS0I4THpCd2ZDdkNXM1FFV2FCY0l1eXdUQ04xdnRRRS82QThKcGpnTENXY2dSUVY3VSs4Rlk0UHJCWlVzclFYYkw3Y0hLR3ZUQlVqODlRWGJMN2NGKzlQREJsT0E5UVpKWTVNRk4zUVhCNlZGZVFaSlk1TUVaa09QQnR1NUFRUXFUNWNHb3l5OUJIRmgyUVNkMTVjRTNQUTlCemc5MFFaSlk1TUYrOVBEQmxPQTlRZFNVNWNIUHZ6RkJMSHQyUVdTaDhzRnZraTlCNmpOalFmd2kvOEV4MEN0QlB5WklRY1ZaQWNLeTRpaEJtdXN3UVd2UkFzS3ZIaVZCOEtjWlFmQktCTUtpWlNGQkJpajNRSFdOQmNKVnR4eEJHYWNVUUUvNkE4SzlSaUJCVlRNbXdBVFVBTUk4ZlRCQnZ2VUx3VlA4QU1KcVBURkJ6dFVPd1FMVUE4SkwxU3BCRXFsSHdVLzZBOEpYK0N0QjQySkt3YkFxQXNMTkVUTkJ0WUJud1phZEFjSXFHVGhCVjFsdndVWjFBY0tMTnp0QnNLMXd3VVoxQWNLcUh6bEJSclp3d1VaMUFjSTFQUTlCSUdKeHdVWjFBY0lha09QQnoyQjd3VVoxQWNKUDNRWEJRZXQxd1VaMUFjSWt3K1hCQldSN3dUanVBY0lJTlBMQkJlTnl3Zi9SQThLbDdmbkJDMnBhd1hVTkJNSW0wZnZCa3RGUndVMTVCY0x1NHdEQ3d4c2N3WFdOQmNJM0RnSENNd2Nad1hXTkJjS3lHQVhDWlZhUndIV05CY0lHS0FmQ1JLU1R2VS82QThMcm1nZkNCZ1dCUUd2UkFzTHpCd2ZDdkNXM1FOUGdBTUl1eXdUQ04xdnRRTGlCL3NGcGpnTENXY2dSUVhwaDhzRlk0UHJCWlVzclFaSlk1TUhLR3ZUQlVqODlRV3pGNHNDMlptMUM1UjZRd1RzczFzQzJabTFDNVI2UXdXekY0c0NvWUdKQzVSNlF3VHNzMXNDb1lHSkM1UjZRd1d6RllzR29ZR0pDVVZHcHdaeGU3OENvWUdKQ1JQSjJ3V3pGWXNHb1lHSkNNMFdUd1p4ZTc4Q29ZR0pDUVlXUndaeGU3OEMyWm0xQ1JQSjJ3V3pGWXNHMlptMUNNMFdUd1d6RllzRzJabTFDVVZHcHdaeGU3OEMyWm0xQ1FZV1J3YzMzZThHb1lHSkNNMFdUd1FRU2FjR29ZR0pDVVZHcHdRUVNhY0dvWUdKQ00wV1R3YzMzZThHb1lHSkNVVkdwd2MzM2U4RzJabTFDTTBXVHdRUVNhY0cyWm0xQ00wV1R3YzMzZThHMlptMUNVVkdwd1FRU2FjRzJabTFDVVZHcHdhL2hrTUZCcldoQ1VWR3B3YS9oa01GQ3JXaENNMFdUd1kzVHVjRkJyV2hDVVZHcHdZM1R1Y0ZDcldoQ00wV1R3YS9oa01FVGszdENNMFdUd1kzVHVjRVRrM3RDTTBXVHdhL2hrTUVUazN0Q1VWR3B3WTNUdWNFVGszdENVVkdwd1kzVHVjRUxGa1ZDZmVpa3dZM1R1Y0VIazFOQ0JxNlh3WTNUdWNFSGsxTkNmdWlrd1kzVHVjRUxGa1ZDQnE2WHdZM1R1Y0Z5eDFWQ00wV1R3WTNUdWNGeXgxVkNVVkdwd1kzVHVjR2c0VUpDVUZHcHdZM1R1Y0dnNFVKQ01rV1R3UVFTYWNFTkZGeENVVkdwd1d6RllzRU5GRnhDTTBXVHdXekZZc0VORkZ4Q1VWR3B3UVFTYWNFTkZGeENNMFdUd1d6RllzSDlEVkZDTTBXVHdRUVNhY0g5RFZGQ00wV1R3UVFTYWNIOURWRkNVVkdwd1d6RllzSDlEVkZDVVZHcHdUc3Mxc0FORkZ4Q2pDVjB3V3pGNHNBTkZGeEM1UjZRd1d6RjRzQU5GRnhDakNWMHdUc3Mxc0FORkZ4QzVSNlF3VHNzMXNEOURWRkNqQ1Ywd1d6RjRzRDlEVkZDakNWMHdXekY0c0Q5RFZGQzVSNlF3VHNzMXNEOURWRkM1UjZRd1p4ZTc4QU5GRnhDUlBKMndaeGU3OEFORkZ4Q1FZV1J3WnhlNzhEOURWRkNSUEoyd1p4ZTc4RDlEVkZDUVlXUndjMzNlOEVORkZ4Q00wV1R3YzMzZThFTkZGeENVVkdwd2MzM2U4SDlEVkZDTTBXVHdjMzNlOEg5RFZGQ1VWR3B3YS9oa01GeXgxVkNVVkdwd2EvaGtNRnl4MVZDTTBXVHdhL2hrTUdnNFVKQ01rV1R3YS9oa01HZzRVSkNVRkdwd2EvaGtNRkNyV2hDNVI2UXdjMzNlOEdvWUdKQzVSNlF3YS9oa01FVGszdEM1UjZRd2MzM2U4RzJabTFDNVI2UXdjMzNlOEVORkZ4QzVSNlF3YzMzZThIOURWRkM1UjZRd2EvaGtNR2c0VUpDNVI2UXdhL2hrTUZ5eDFWQzVSNlF3WGpIbzhGQ3JXaEMxY3hYd2EvaGtNR29ZR0pDMWN4WHdYakhvOEVUazN0QzFjeFh3YS9oa01HMlptMUMxY3hYd2EvaGtNRU5GRnhDMWN4WHdhL2hrTUg5RFZGQzFjeFh3WGpIbzhHZzRVSkMxTXhYd1hqSG84Rnl4MVZDMWN4WHdlQjZuY0NvWUdKQ2pDVjB3ZUI2bmNDb1lHSkM1UjZRd2VCNm5jQzJabTFDakNWMHdlQjZuY0MyWm0xQzVSNlF3ZUI2bmNBTkZGeEM1UjZRd2VCNm5jQU5GRnhDakNWMHdlQjZuY0Q5RFZGQ2pDVjB3ZUI2bmNEOURWRkM1UjZRd1d6RjRyK29ZR0pDakNWMHdXekY0citvWUdKQzVSNlF3UUFBQUFDb1lHSkNqQ1Ywd1FBQUFBQ29ZR0pDNVI2UXdRQUFBQUMyWm0xQ2pDVjB3V3pGNHIrMlptMUNqQ1Ywd1d6RjRyKzJabTFDNVI2UXdRQUFBQUMyWm0xQzVSNlF3V3pGNHI4TkZGeENqQ1Ywd1d6RjRyOE5GRnhDNVI2UXdRQUFBQUFORkZ4QzVSNlF3UUFBQUFBTkZGeENqQ1Ywd1d6RjRyLzlEVkZDakNWMHdRQUFBQUQ5RFZGQ2pDVjB3V3pGNHIvOURWRkM1UjZRd1FBQUFBRDlEVkZDNVI2UXdlQjZuY0MyWm0xQ1FQOXd3V3pGNHIrMlptMUNRUDl3d1d6RjRyK29ZR0pDUVA5d3dlQjZuY0NvWUdKQ1FQOXd3ZUI2bmNBTkZGeENRUDl3d2VCNm5jRDlEVkZDUVA5d3dXekY0cjhORkZ4Q1FQOXd3V3pGNHIvOURWRkNRUDl3d2VCNm5jQzJabTFDVVExSXdXekY0cisyWm0xQ1VRMUl3V3pGNHIrb1lHSkNVUTFJd2VCNm5jQ29ZR0pDVVExSXdlQjZuY0FORkZ4Q1VRMUl3ZUI2bmNEOURWRkNVUTFJd1d6RjRyOE5GRnhDVVExSXdXekY0ci85RFZGQ1VRMUl3WTNUdVVHb1hubENmdWlrd1kzVHVVR3M0V3BDQnE2WHdZM1R1VUdzNFdwQ2Z1aWt3WTNUdVVHb1hubENCNjZYd1kzVHVVRkNyV2hDTTBXVHdZM1R1VUZCcldoQ1VWR3B3WTNUdVVFVGszdENVVkdwd1kzVHVVRVRrM3RDTTBXVHdRUVNhVUdvWUdKQ1VWR3B3V3pGWWtHb1lHSkNNMFdUd1d6RllrR29ZR0pDVVZHcHdRUVNhVUdvWUdKQ00wV1R3V3pGWWtHMlptMUNNMFdUd1FRU2FVRzJabTFDTTBXVHdRUVNhVUcyWm0xQ1VWR3B3V3pGWWtHMlptMUNVVkdwd1RzczFrQ29ZR0pDakNWMHdXekY0a0NvWUdKQzVSNlF3V3pGNGtDb1lHSkNqQ1Ywd1RzczFrQ29ZR0pDNVI2UXdUc3Mxa0MyWm0xQ2pDVjB3V3pGNGtDMlptMUNqQ1Ywd1d6RjRrQzJabTFDNVI2UXdUc3Mxa0MyWm0xQzVSNlF3WnhlNzBDb1lHSkNSUEoyd1p4ZTcwQ29ZR0pDUVlXUndaeGU3MEMyWm0xQ1JQSjJ3WnhlNzBDMlptMUNRWVdSd2MzM2UwR29ZR0pDTTBXVHdjMzNlMEdvWUdKQ1VWR3B3YzMzZTBHMlptMUNNMFdUd2MzM2UwRzJabTFDVVZHcHdhL2hrRUZCcldoQ1VWR3B3YS9oa0VGQ3JXaENNMFdUd2EvaGtFRVRrM3RDTTBXVHdhL2hrRUVUazN0Q1VWR3B3WTNUdVVFSGsxTkNCcTZYd1kzVHVVRUxGa1ZDZmVpa3dZM1R1VUVIazFOQ2Z1aWt3WTNUdVVFTEZrVkNCcTZYd1kzVHVVRnl4MVZDTTBXVHdZM1R1VUZ5eDFWQ1VWR3B3WTNUdVVHZzRVSkNVRkdwd1kzVHVVR2c0VUpDTWtXVHdXekZZa0VORkZ4Q00wV1R3UVFTYVVFTkZGeENVVkdwd1d6RllrRU5GRnhDVVZHcHdRUVNhVUVORkZ4Q00wV1R3V3pGWWtIOURWRkNNMFdUd1FRU2FVSDlEVkZDTTBXVHdRUVNhVUg5RFZGQ1VWR3B3V3pGWWtIOURWRkNVVkdwd1d6RjRrQU5GRnhDNVI2UXdUc3Mxa0FORkZ4Q2pDVjB3V3pGNGtBTkZGeENqQ1Ywd1RzczFrQU5GRnhDNVI2UXdUc3Mxa0Q5RFZGQ2pDVjB3V3pGNGtEOURWRkNqQ1Ywd1d6RjRrRDlEVkZDNVI2UXdUc3Mxa0Q5RFZGQzVSNlF3WnhlNzBBTkZGeENSUEoyd1p4ZTcwQU5GRnhDUVlXUndaeGU3MEQ5RFZGQ1JQSjJ3WnhlNzBEOURWRkNRWVdSd2MzM2UwRU5GRnhDTTBXVHdjMzNlMEVORkZ4Q1VWR3B3YzMzZTBIOURWRkNNMFdUd2MzM2UwSDlEVkZDVVZHcHdhL2hrRUZ5eDFWQ1VWR3B3YS9oa0VGeXgxVkNNMFdUd2EvaGtFR2c0VUpDTWtXVHdhL2hrRUdnNFVKQ1VGR3B3YS9oa0VGQ3JXaEM1UjZRd2MzM2UwR29ZR0pDNVI2UXdhL2hrRUVUazN0QzVSNlF3YzMzZTBHMlptMUM1UjZRd2MzM2UwRU5GRnhDNVI2UXdjMzNlMEg5RFZGQzVSNlF3YS9oa0VHZzRVSkM1UjZRd2EvaGtFRnl4MVZDNVI2UXdYakhvMEZDcldoQzFjeFh3YS9oa0VHb1lHSkMxY3hYd1hqSG8wRVRrM3RDMWN4WHdhL2hrRUcyWm0xQzFjeFh3YS9oa0VFTkZGeEMxY3hYd2EvaGtFSDlEVkZDMWN4WHdYakhvMEdnNFVKQzFNeFh3WGpIbzBGeXgxVkMxY3hYd2VCNm5VQ29ZR0pDakNWMHdlQjZuVUNvWUdKQzVSNlF3ZUI2blVDMlptMUNqQ1Ywd2VCNm5VQzJabTFDNVI2UXdlQjZuVUFORkZ4QzVSNlF3ZUI2blVBTkZGeENqQ1Ywd2VCNm5VRDlEVkZDakNWMHdlQjZuVUQ5RFZGQzVSNlF3V3pGNGorb1lHSkNqQ1Ywd1d6RjRqK29ZR0pDNVI2UXdXekY0aisyWm0xQ2pDVjB3V3pGNGorMlptMUM1UjZRd1d6RjRqOE5GRnhDakNWMHdXekY0ajhORkZ4QzVSNlF3V3pGNGovOURWRkNqQ1Ywd1d6RjRqLzlEVkZDNVI2UXdlQjZuVUMyWm0xQ1FQOXd3V3pGNGorMlptMUNRUDl3d1d6RjRqK29ZR0pDUVA5d3dlQjZuVUNvWUdKQ1FQOXd3ZmJOQ2NLbGVERkF5dWpoUUhvUUM4TEJ3c3MvTkx2c1AxUjlDY0svd3NzLzczQS93QWhYQnNLOHdzcy92T3NRd1ZoL0JzSzh3c3MvT3NJVHdRaFhDY0s2d3NzL09kdEt3VlI5Q2NLNndzcy9aNDFOd2JhdEI4SzV3c3MvT0RGcXdac2dCOEs1d3NzL3gvVnh3VXY0QnNLNXdzcy9tazl6d2JndUJzSzV3c3MvbWs5endVWjFBY0s1d3NzL21rOXp3WEJVQ01MRndzcy9aSVlQUWNuY0JzSlJVQjFBQlNvclFZTVVCY0xHd3NzL2VyazhRYmg3L2NISHdzcy8xUUJYUVQ0QzhNSEl3c3MvVE5KcVFScHY3c0hJd3NzL1ROSnFRVFg4NU1ISXdzcy9UTkpxUWEzY0E4SXQwNlpBbVNJU1FVdk9CTUorSWtsQXQxMzJRSzNjQThLd3dSaEFmYjhPUVV2T0JNSzdUNWhBdWNUOFFQYk5DY0x6bGFsQXYrbnJRSEJVQ01KVlE4QkFQZEVVUVhvUUM4SlVROEJBb1FRSFFGUjlDY0pUUThCQUF0d3h3QWhYQnNKVFE4QkF5SHdPd1ZoL0JzSlRROEJBZWxvUndRaFhDY0pTUThCQXMwZEp3VlI5Q2NKU1E4QkF0Z0JNd2JhdEI4SlNROEJBLy9Gb3dac2dCOEpTUThCQVJNcHd3VXY0QnNKU1E4QkFoQ2R5d2JndUJzSlNROEJBaENkeXdVWjFBY0pTUThCQWhDZHl3VVBzQXNKdDNKRkFTQ2tqUVVQc0FzTGpPenhBNUc4Z1FjbmNCc0xKZ1o5QXNXc3ZRWU1VQmNKVlE4QkFCSGRDUWJDRS9jRlZROEJBREFGZFFkQks4TUZXUThCQW1sMXdRYXUzN3NGV1E4QkFtbDF3UWNkRTVjRldROEJBbWwxd1FWeXFCc0llMDU1QXhzNHVRVUFiQ01LNS9iNUE1NjRVUWZxTkNjTFh1S2hBZ01Ic1FQcU5DY0tLcHpKQW8rN2lRRUFiQ01JdTJkQS9jWHdQUVZ5cUJzSVkzQjVBdGFBcVFlQjZuVUFORkZ4Q1FQOXd3ZUI2blVEOURWRkNRUDl3d1d6RjRqOE5GRnhDUVA5d3dXekY0ai85RFZGQ1FQOXd3ZUI2blVDMlptMUNVUTFJd1d6RjRqKzJabTFDVVExSXdXekY0aitvWUdKQ1VRMUl3ZUI2blVDb1lHSkNVUTFJd2VCNm5VQU5GRnhDVVExSXdlQjZuVUQ5RFZGQ1VRMUl3V3pGNGo4TkZGeENVUTFJd1d6RjRqLzlEVkZDVVExSXdTUGhCMElVQkNwQzdzOCtRVVgvQ0VJcFBTcENzZllxUWZHdkNFSnBQaXBDQzVFcVFYZ3dDRUxTQWlwQ2tUVS9RUy82Q0VKcVF5SkNjZ0lwUVE3Y0IwSlVDaUpDcnRzOFFkdXFDRUtxUkNKQ3pKd29RV01yQ0VJU0NTSkNVa0U5UVFFS0NVS0RFenRDd3hZdlFkL3JCMEp1MmpwQ0F2QkNRYXU2Q0VMREZEdENIckV1UVRNN0NFSXIyVHBDcEZWRFFkYnlCMEpneUVWQ2hwMUZRZmdRQ1VKMkFVWkNTY1F4UWFUQkNFSzNBa1pDcEY0eFFTdENDRUlmeDBWQ0tnTkdRZGJyQWtMd0VpcENSZm82UWFhNkEwSkdUU3BDWTdzbVFjTG1Ba0l3R1NKQ0JRWTVRWSsxQTBLR1V5SkNJOGNrUVpMMkFrSko2VHBDV0JvL1FXSEZBMEtoSXp0Q2R0c3FRWXY5QWtJODEwVkMzY2RCUVZqTUEwS1NFVVpDL0lndFFXWUFDVUxoQWl4QzJtVXJRWmd4Q0VLTHlDdEN2S1EvUVl6eENrSkZOU3BDRzNVdFFkOGpDa0tud0N0Q0p5TkNRYjRpQ2tMditpbEMvYk5CUWEzeUNrTDkraXRDUnVRdFFlQUlDVUxKVFRsQ21hY3VRUkU2Q0VKeUV6bENldVpDUVNmN0NrTGxSVGxDQkNZeFFWY3NDa0tRQ3psQzZHUkZRWG90Q2tKSTBUcENFTlJGUVVqOENrS2ZDenRDTHBVeFFjdndDa0xLQmlsQ0FTc3RRZjBoQ2tKenpDaEM0bWxCUVhic0NrS0dPeUpDM29BclFhZ2RDa0l2QVNKQ3dMOC9RWVgrQ0VLc0RpbENrcXdxUVRDdkNFTHVEeWxDNzBZcVFiY3ZDRUpYMUNoQ2RlcytRV0xnQjBLWTFTaEMwWVUrUWVXNUEwTE1IaWxDUm5FbVFSYnJBa0owNUNoQ0tMQTZRWm91Q2tJQmx6eENQRU5HUVdqOUNrSlkwVHhDV1FReVFRRHRCMElub0R4Q0tsOURRVk04Q0VMa25qeEN6OFJEUVNFTENVSTcyVHhDN1lVdlFjMjdDRUo4Mmp4Q1NTQXZRYlAzQWtJRHJ6eENnNGsvUVlMR0EwSlk2VHhDb1VvclFUNERDMEtTK1VWQ3RFSTBRZEtsQ0VLTXhVVkMyWUpHUVhFMENrSTd2MFZDbG9GSVFaOTBDVUxpLzBWQzkwTXlRY2x1Q1VLbTF6eENuQVV3UWFsdENVTHVFVHRDY1pZdlFZaHNDVUkxVERsQ1NTY3ZRUTVrQ1VKT0FTeENpZVVyUWUxaUNVS1VPeXBDWDNZclFTeGlDVUlaRFNsQ1JDd3JRZGRkQ1VMV1FTSkNJWUlwUVFtUENFSitCeUpDQXNFOVFWNlRDRUxEMGloQ0pHcy9RU0NVQ0VJK0FTcENRYlUvUVVDVkNFTDJ4aXRDYkNSQVFibWRDRUxmRVRsQ0tXWkRRZHVlQ0VLWTF6cENWZFZEUWZ1ZkNFSlFuVHhDZjBSRVFjTkpDVUtpWWoxQzZva3pRUnl4Q0VLYStEMUNuNTlBUWRXd0NFS2lZajFDSEloQVFRaEtDVUthK0QxQ2JxRXpRVjlBQjBLYStEMUN5d1UvUVdRRkIwS2lZajFDQ0swK1FSbEFCMEtpWWoxQ1IrNCtRYW9GQjBLYStEMUNqTVErUVZDZUIwS2lZajFDMTY0eFFVelpCMEthK0QxQ213Y3lRUVhaQjBLaVlqMUNGL0F4UVplZUIwS2ErRDFDVzhZeFFWdGFBMEthK0QxQzlrMDhRUlZhQTBLaVlqMUNjRFk4UVFQekEwS2lZajFDUURndlFVcnpBMEthK0QxQ3cwOHZRY1FpQ0VLaVlqMUNEa0l5UVFzakNFS2ErRDFDa2xreVFSNktCMEthK0QxQ3cxYy9RZGVKQjBLaVlqMUNRRUEvUVNUK0NrS2ErRDFDc0V3eVFYc3ZDa0thK0QxQzNwbEdRY2I5Q2tLaVlqMUM4aWN5UVJ3dkNrS2lZajFDSUhWR1FYenRCMEtpWWoxQzBZNURRZEU4Q0VLaVlqMUN4UFJEUWRydEIwS2ErRDFDa0xORFFUQTlDRUthK0QxQ2dobEVRWU84Q0VLYStEMUNZMll2UWRrTENVS2ErRDFDVjh3dlFTUzhDRUtpWWoxQ3BFRXZRWGdMQ1VLaVlqMUNsNmN2UVNiNEFrS2lZajFDaExVL1FZWDRBa0thK0QxQ1E5by9RUzdIQTBLYStEMUNGNDByUWRER0EwS2lZajFDVjJnclFZRnZDVUthK0QxQ2FFd3dRU0p2Q1VLaVlqMUNxU2N3UWRxZ0NFS2ErRDFDbEpsRVFYbWdDRUtpWWoxQzEzUkVRYnI5Q2tMZ1R6MUNXaU15UVJBdkNrTGdUejFDaDNCR1FYSHRCMExnVHoxQ09vcERRY1k4Q0VMZ1R6MUNLL0JEUVJpOENFTGdUejFDREQwdlFXMExDVUxnVHoxQ0FLTXZRUnI0QWtMZ1R6MUM3YkEvUWNUR0EwTGdUejFDd0dNclFSWnZDVUxnVHoxQ0VpTXdRVzJnQ0VMZ1R6MUNQM0JFUVh2L0NrSXFFVUJDS05BeVFaUXZDa0laSGo1Q0RhTkdRVHorQ2tJWUhqNUM0VlV5UWEwd0NrTFUxajlDQ1E5SFFVZzlDRUlaSGo1Q3N5SkVRZlR0QjBJWkhqNUN3THhEUVdZK0NFSzQzajlDbkpCRVFSTHZCMEw0M3o5QytTcEVRZkFMQ1VJWUhqNUNodFV2UVp5OENFSVlIajVDazI4dlFUUU5DVUlOR1VCQ3UxRXdRZUM5Q0VKUEdrQkNHT3d2UWNYNUFrTFY3ajlDVDFWQVFaMzRBa0laSGo1Q2N1TS9RVWZIQTBJWUhqNUNScFlyUVpUSUEwSXJLVUJDYmhZc1FkeHdDVUo2RjBCQ2E5RXdRWmx2Q1VJWUhqNUNtRlV3UWZLZ0NFSVpIajVDeGFKRVFRNmlDRUlqM1Q5Q1RCQkZRZUVCQzBKUzFFTkNJN3d6UVRjekNrSlMxRU5DVUFsSVFlMUFDRUpTMUVOQzlvaEZRWmp4QjBKUzFFTkNBU05GUVQvQUNFSlMxRU5DMWRVd1FaVVBDVUpTMUVOQ3lEc3hRVUg4QWtKUzFFTkN0RWxCUWV2S0EwSlMxRU5DaVB3c1FaV2tDRUpTMUVOQ0J3bEdRVDF6Q1VKUzFFTkMycnN4UVNQaEIwTEtsTEUvVHdRWlFVWC9DRUxpUUxrL0Vpc0ZRZkd2Q0VJWWJMay9iTVVFUVhnd0NFS1ZhYkUvODJrWlFTLzZDRUo5V1RLLzB6WURRUTdjQjBLZ3NVRy9FQkFYUWR1cUNFSVNBeksvTGRFQ1FXTXJDRUlMQ0VLL3NuVVhRUUVLQ1VLRkpyOUFKRXNKUWQvckIwS0JPNzFBWWlRZFFhdTZDRUpUTWI5QWYrVUlRVE03Q0VLeU1MMUFCb29kUWRieUIwTHZudzFCNTlFZlFmZ1FDVUp5bFE1QnF2Z0xRYVRCQ0VMWW1nNUJCWk1MUVN0Q0NFS0ltZzFCakRjZ1FkYnJBa0ljbExNL3BTNFZRYWE2QTBKamE3cy94TzhBUWNMbUFrSVhzejIvWmpvVFFZKzFBMEp3QkM2L0NmZjlRSkwyQWtKVXU3MUF1RTRaUVdIRkEwSW1zYjlBMXc4RlFZdjlBa0xaM3cxQlBmd2JRVmpNQTBMQzJnNUJYTDBIUVdZQUNVTFFQUFkvTzVvRlFaZ3hDRUtEWmU0L0hka1pRWXp4Q2tKNk1iZy9mS2tIUWQ4akNrSWJWdTAvaVZjY1FiNGlDa0l0V3JBL1grZ2JRYTN5Q2tKaExmVS9xQmdJUWVBSUNVS0o1NjlBK3RzSVFSRTZDRUszOGExQTJ4b2RRU2Y3Q2tLdm82OUFabG9MUVZjc0NrTGVyYTFBU0prZlFYb3RDa0xYN0x4QWNnZ2dRVWo4Q2tLcjRyNUFqOGtMUWN2d0NrS05pWTgvWWw4SFFmMGhDa0kvc29jL1FwNGJRWGJzQ2tKTmVEUy9QN1VGUWFnZENrTG9Ka1MvSVBRWlFZWCtDRUx1bUpBLzlPQUVRVEN2Q0VJa3hKQS9VSHNFUWJjdkNFS293WWcvMWg4WlFXTGdCMExkN0lnL01yb1lRZVc1QTBKdnc1SS9xS1VBUVJickFrSW83SW8vaWVRVVFab3VDa0xUSzh4QW5YY2dRV2o5Q2tLbEljNUF1amdNUVFEdEIwSjZlc3hBaTVNZFFWTThDRUt0Yjh4QU1Qa2RRU0VMQ1VLQVpjNUFUcm9KUWMyN0NFSk9jTTVBcWxRSlFiUDNBa0pPK3N4QTQ3MFpRWUxHQTBJaDhNNUFBWDhGUVQ0REMwS0ZjdzVCRm5jT1FkS2xDRUsva3cxQk83Y2dRWEUwQ2tLYmVBMUI5N1VpUVo5MENVS3BqZzVCV0hnTVFjbHVDVUx0Vjg1QS9Ua0tRYWx0Q1VMMUdMOUEwc29KUVloc0NVTDQyYTlBcVZzSlFRNWtDVUtGQnZZLzZoa0dRZTFpQ1VLYUNyay92Nm9GUVN4aUNVS21ZcEEvcFdBRlFkZGRDVUlCeGpLL2diWURRUW1QQ0VLb2RFSy9ZL1VYUVY2VENFSmdpNGcvaHA4WlFTQ1VDRUpOTTdFL29la1pRVUNWQ0VJN0wrNC96VmdhUWJtZENFSW01SzFBaTVvZFFkdWVDRUloSTcxQXRBa2VRZnVmQ0VJY1lzeEE0SGdlUWNOSkNVSnNBOU5BUzc0TlFSeXhDRUtDRGRoQUFOUWFRZFd3Q0VKc0E5TkFmTHdhUVFoS0NVS0NEZGhBejlVTlFWOUFCMEtDRGRoQUxEb1pRV1FGQjBKc0E5TkFhZUVZUVJsQUIwSnNBOU5BcVNJWlFhb0ZCMEtDRGRoQTdmZ1lRVkNlQjBKc0E5TkFPT01MUVV6WkIwS0NEZGhBL1RzTVFRWFpCMEpzQTlOQWVDUU1RWmVlQjBLQ0RkaEF2UG9MUVZ0YUEwS0NEZGhBVllJV1FSVmFBMEpzQTlOQTBtb1dRUVB6QTBKc0E5TkFvR3dKUVVyekEwS0NEZGhBSllRSlFjUWlDRUpzQTlOQWJuWU1RUXNqQ0VLQ0RkaEE4NDBNUVI2S0IwS0NEZGhBSll3WlFkZUpCMEpzQTlOQW9IUVpRU1QrQ2tLQ0RkaEFFb0VNUVhzdkNrS0NEZGhBUHM0Z1FjYjlDa0pzQTlOQVVsd01RUnd2Q2tKc0E5TkFnS2tnUVh6dEIwSnNBOU5BTXNNZFFkRThDRUpzQTlOQUpDa2VRZHJ0QjBLQ0RkaEE4T2NkUVRBOUNFS0NEZGhBNDAwZVFZTzhDRUtDRGRoQXc1b0pRZGtMQ1VLQ0RkaEF0d0FLUVNTOENFSnNBOU5BQm5ZSlFYZ0xDVUpzQTlOQStOc0pRU2I0QWtKc0E5TkE1ZWtaUVlYNEFrS0NEZGhBb3c0YVFTN0hBMEtCRGRoQWQ4RUZRZERHQTBKc0E5TkF1SndGUVlGdkNVS0NEZGhBeUlBS1FTSnZDVUpzQTlOQUNsd0tRZHFnQ0VLQ0RkaEE5czBlUVhtZ0NFSnNBOU5BTjZrZVFicjlDa0lwWXRKQXUxY01RUkF2Q2tJcFl0SkE2S1FnUVhIdEIwSXBZdEpBbWI0ZFFjWThDRUlwWXRKQWpTUWVRUmk4Q0VJcFl0SkFiWEVKUVcwTENVSXBZdEpBWWRjSlFScjRBa0lwWXRKQVR1VVpRY1RHQTBJcFl0SkFJSmdGUVJadkNVSXBZdEpBYzFjS1FXMmdDRUlwWXRKQW9LUWVRWHYvQ2tJYkZlcEFpUVFOUVpRdkNrSUhVTmxBYnRjZ1FUeitDa0lIVU5sQVFZb01RYTB3Q2tKSkgraEFha01oUVVnOUNFSUhVTmxBRWxjZVFmVHRCMElIVU5sQUlQRWRRV1krQ0VJa1kraEEvY1FlUVJMdkIwTHdiZWhBV1Y4ZVFmQUxDVUlIVU5sQTVna0tRWnk4Q0VJSFVObEE5S01KUVRRTkNVTDJXT3BBSElZS1FlQzlDRUxEWStwQWR5QUtRY1g1QWtMRDdlaEFzSWthUVozNEFrSUhVTmxBMHhjYVFVZkhBMElIVU5sQXA4b0ZRWlRJQTBLVzQrcEF6MG9HUWR4d0NVSmtTK3BBeWdVTFFabHZDVUlIVU5sQStJa0tRZktnQ0VJSFVObEFKdGNlUVE2aUNFS1JWZWhBckVRZlFXL1BDa0tMWCs5QTFOb1JRVzQ3Q2tJc2NnSkJDdDhjUWNBNUNrSzA4TzFBdkdjY1FRUFJDa0lzY2dKQnJrb1NRZUVCQzBJdE9RVkJnL0FOUVRjekNrSXRPUVZCc0QwaVFlMUFDRUl0T1FWQlZiMGZRWmp4QjBJdE9RVkJZMWNmUVQvQUNFSXRPUVZCTndvTFFaVVBDVUl0T1FWQktYQUxRVUg4QWtJdE9RVkJGWDRiUWV2S0EwSXRPUVZCNlRBSFFaV2tDRUl0T1FWQmFEMGdRVDF6Q1VJdE9RVkJPL0FMUVhmbUNrTGd3dTVBWWFjUlFXOUtDa0o3Uk8xQTA2WWNRVGRNQ2tLd3dnSkI0aVFkUVNMb0NrS3d3Z0pCcngwU1FWSzhDRUlVYWUxQWMvQWJRVmhZQ1VKNjUrNUFBdkVRUVJtK0NFTDkxQUpCaEc0Y1FRUmFDVUw5MUFKQlQyY1JRVGhWQ1VKUWd1OUFreTBSUVltL0NFSjVFKzVBZmJvYlFUbkJDRUtPZ3dKQnlURWNRY3hXQ1VLT2d3SkJiWjBSUVllN0NrSmdZZTlBdHRFUlFkZ2xDa0tKOHUxQW4xNGNRWWNuQ2tJV2N3SkI2OVVjUVJxOUNrSVdjd0pCa0VFU1FVWC9DTUlwUFNwQ3NmWXFRU1BoQjhJVUJDcEM3czgrUWZHdkNNSnBQaXBDQzVFcVFYZ3dDTUxTQWlwQ2tUVS9RUTdjQjhKVUNpSkNydHM4UVMvNkNNSnFReUpDY2dJcFFkdXFDTUtxUkNKQ3pKd29RV01yQ01JU0NTSkNVa0U5UWQvckI4SnUyanBDQXZCQ1FRRUtDY0tERXp0Q3d4WXZRYXU2Q01MREZEdENIckV1UVRNN0NNSXIyVHBDcEZWRFFmZ1FDY0oyQVVaQ1NjUXhRZGJ5QjhKZ3lFVkNocDFGUWFUQkNNSzNBa1pDcEY0eFFTdENDTUlmeDBWQ0tnTkdRZGJyQXNMd0VpcENSZm82UWFhNkE4SkdUU3BDWTdzbVFjTG1Bc0l3R1NKQ0JRWTVRWSsxQThLR1V5SkNJOGNrUVpMMkFzSko2VHBDV0JvL1FXSEZBOEtoSXp0Q2R0c3FRWXY5QXNJODEwVkMzY2RCUVZqTUE4S1NFVVpDL0lndFFXWUFDY0xoQWl4QzJtVXJRWmd4Q01LTHlDdEN2S1EvUWQ4akNzS253Q3RDSnlOQ1FZenhDc0pGTlNwQ0czVXRRYjRpQ3NMditpbEMvYk5CUWEzeUNzTDkraXRDUnVRdFFlQUlDY0xKVFRsQ21hY3VRUkU2Q01KeUV6bENldVpDUVNmN0NzTGxSVGxDQkNZeFFWY3NDc0tRQ3psQzZHUkZRWG90Q3NKSTBUcENFTlJGUVVqOENzS2ZDenRDTHBVeFFjdndDc0xLQmlsQ0FTc3RRZjBoQ3NKenpDaEM0bWxCUVhic0NzS0dPeUpDM29BclFhZ2RDc0l2QVNKQ3dMOC9RWVgrQ01Lc0RpbENrcXdxUVRDdkNNTHVEeWxDNzBZcVFiY3ZDTUpYMUNoQ2RlcytRV0xnQjhLWTFTaEMwWVUrUWVXNUE4TE1IaWxDUm5FbVFSYnJBc0owNUNoQ0tMQTZRWm91Q3NJQmx6eENQRU5HUVdqOUNzSlkwVHhDV1FReVFRRHRCOElub0R4Q0tsOURRVk04Q01Ma25qeEN6OFJEUVNFTENjSTcyVHhDN1lVdlFjMjdDTUo4Mmp4Q1NTQXZRYlAzQXNJRHJ6eENnNGsvUVlMR0E4Slk2VHhDb1VvclFkS2xDTUtNeFVWQzJZSkdRVDREQzhLUytVVkN0RUkwUVhFMENzSTd2MFZDbG9GSVFaOTBDY0xpLzBWQzkwTXlRY2x1Q2NLbTF6eENuQVV3UWFsdENjTHVFVHRDY1pZdlFZaHNDY0kxVERsQ1NTY3ZRUTVrQ2NKT0FTeENpZVVyUWUxaUNjS1VPeXBDWDNZclFTeGlDY0laRFNsQ1JDd3JRZGRkQ2NMV1FTSkNJWUlwUVFtUENNSitCeUpDQXNFOVFWNlRDTUxEMGloQ0pHcy9RU0NVQ01JK0FTcENRYlUvUVVDVkNNTDJ4aXRDYkNSQVFibWRDTUxmRVRsQ0tXWkRRZHVlQ01LWTF6cENWZFZEUWZ1ZkNNSlFuVHhDZjBSRVFSeXhDTUthK0QxQ241OUFRY05KQ2NLaVlqMUM2b2t6UWRXd0NNS2lZajFDSEloQVFRaEtDY0thK0QxQ2JxRXpRV1FGQjhLaVlqMUNDSzArUVY5QUI4S2ErRDFDeXdVL1FSbEFCOEtpWWoxQ1IrNCtRYW9GQjhLYStEMUNqTVErUVV6WkI4S2ErRDFDbXdjeVFWQ2VCOEtpWWoxQzE2NHhRUVhaQjhLaVlqMUNGL0F4UVplZUI4S2ErRDFDVzhZeFFWdGFBOEthK0QxQzlrMDhRUlZhQThLaVlqMUNjRFk4UVFQekE4S2lZajFDUURndlFVcnpBOEthK0QxQ3cwOHZRY1FpQ01LaVlqMUNEa0l5UVFzakNNS2ErRDFDa2xreVFSNktCOEthK0QxQ3cxYy9RZGVKQjhLaVlqMUNRRUEvUVNUK0NzS2ErRDFDc0V3eVFYc3ZDc0thK0QxQzNwbEdRY2I5Q3NLaVlqMUM4aWN5UVJ3dkNzS2lZajFDSUhWR1FYenRCOEtpWWoxQzBZNURRZEU4Q01LaVlqMUN4UFJEUWRydEI4S2ErRDFDa0xORFFUQTlDTUthK0QxQ2dobEVRWU84Q01LYStEMUNZMll2UWRrTENjS2ErRDFDVjh3dlFTUzhDTUtpWWoxQ3BFRXZRWGdMQ2NLaVlqMUNsNmN2UVNiNEFzS2lZajFDaExVL1FZWDRBc0thK0QxQ1E5by9RUzdIQThLYStEMUNGNDByUWRER0E4S2lZajFDVjJnclFZRnZDY0thK0QxQ2FFd3dRU0p2Q2NLaVlqMUNxU2N3UWRxZ0NNS2ErRDFDbEpsRVFYbWdDTUtpWWoxQzEzUkVRYnI5Q3NMZ1R6MUNXaU15UVJBdkNzTGdUejFDaDNCR1FYSHRCOExnVHoxQ09vcERRY1k4Q01MZ1R6MUNLL0JEUVJpOENNTGdUejFDREQwdlFXMExDY0xnVHoxQ0FLTXZRUnI0QXNMZ1R6MUM3YkEvUWNUR0E4TGdUejFDd0dNclFSWnZDY0xnVHoxQ0VpTXdRVzJnQ01MZ1R6MUNQM0JFUVpRdkNzSVpIajVDRGFOR1FYdi9Dc0lxRVVCQ0tOQXlRVHorQ3NJWUhqNUM0VlV5UWEwd0NzTFUxajlDQ1E5SFFVZzlDTUlaSGo1Q3N5SkVRZlR0QjhJWkhqNUN3THhEUVdZK0NNSzQzajlDbkpCRVFSTHZCOEw0M3o5QytTcEVRZkFMQ2NJWUhqNUNodFV2UVp5OENNSVlIajVDazI4dlFUUU5DY0lOR1VCQ3UxRXdRZUM5Q01KUEdrQkNHT3d2UWNYNUFzTFY3ajlDVDFWQVFaMzRBc0laSGo1Q2N1TS9RVWZIQThJWUhqNUNScFlyUVpUSUE4SXJLVUJDYmhZc1FkeHdDY0o2RjBCQ2E5RXdRWmx2Q2NJWUhqNUNtRlV3UWZLZ0NNSVpIajVDeGFKRVFRNmlDTUlqM1Q5Q1RCQkZRZUVCQzhKUzFFTkNJN3d6UVRjekNzSlMxRU5DVUFsSVFlMUFDTUpTMUVOQzlvaEZRWmp4QjhKUzFFTkNBU05GUVQvQUNNSlMxRU5DMWRVd1FaVVBDY0pTMUVOQ3lEc3hRVUg4QXNKUzFFTkN0RWxCUWV2S0E4SlMxRU5DaVB3c1FaV2tDTUpTMUVOQ0J3bEdRVDF6Q2NKUzFFTkMycnN4UVVYL0NNTGlRTGsvRWlzRlFTUGhCOExLbExFL1R3UVpRZkd2Q01JWWJMay9iTVVFUVhnd0NNS1ZhYkUvODJrWlFRN2NCOEtnc1VHL0VCQVhRUy82Q01KOVdUSy8wellEUWR1cUNNSVNBeksvTGRFQ1FXTXJDTUlMQ0VLL3NuVVhRZC9yQjhLQk83MUFZaVFkUVFFS0NjS0ZKcjlBSkVzSlFhdTZDTUpUTWI5QWYrVUlRVE03Q01LeU1MMUFCb29kUWZnUUNjSnlsUTVCcXZnTFFkYnlCOEx2bncxQjU5RWZRYVRCQ01MWW1nNUJCWk1MUVN0Q0NNS0ltZzFCakRjZ1FkYnJBc0ljbExNL3BTNFZRYWE2QThKamE3cy94TzhBUWNMbUFzSVhzejIvWmpvVFFZKzFBOEp3QkM2L0NmZjlRSkwyQXNKVXU3MUF1RTRaUVdIRkE4SW1zYjlBMXc4RlFZdjlBc0xaM3cxQlBmd2JRVmpNQThMQzJnNUJYTDBIUVdZQUNjTFFQUFkvTzVvRlFaZ3hDTUtEWmU0L0hka1pRZDhqQ3NJYlZ1MC9pVmNjUVl6eENzSjZNYmcvZktrSFFiNGlDc0l0V3JBL1grZ2JRYTN5Q3NKaExmVS9xQmdJUWVBSUNjS0o1NjlBK3RzSVFSRTZDTUszOGExQTJ4b2RRU2Y3Q3NLdm82OUFabG9MUVZjc0NzTGVyYTFBU0prZlFYb3RDc0xYN0x4QWNnZ2dRVWo4Q3NLcjRyNUFqOGtMUWN2d0NzS05pWTgvWWw4SFFmMGhDc0kvc29jL1FwNGJRWGJzQ3NKTmVEUy9QN1VGUWFnZENzTG9Ka1MvSVBRWlFZWCtDTUx1bUpBLzlPQUVRVEN2Q01Ja3hKQS9VSHNFUWJjdkNNS293WWcvMWg4WlFXTGdCOExkN0lnL01yb1lRZVc1QThKdnc1SS9xS1VBUVJickFzSW83SW8vaWVRVVFab3VDc0xUSzh4QW5YY2dRV2o5Q3NLbEljNUF1amdNUVFEdEI4SjZlc3hBaTVNZFFWTThDTUt0Yjh4QU1Qa2RRU0VMQ2NLQVpjNUFUcm9KUWMyN0NNSk9jTTVBcWxRSlFiUDNBc0pPK3N4QTQ3MFpRWUxHQThJaDhNNUFBWDhGUWRLbENNSy9rdzFCTzdjZ1FUNERDOEtGY3c1QkZuY09RWEUwQ3NLYmVBMUI5N1VpUVo5MENjS3BqZzVCV0hnTVFjbHVDY0x0Vjg1QS9Ua0tRYWx0Q2NMMUdMOUEwc29KUVloc0NjTDQyYTlBcVZzSlFRNWtDY0tGQnZZLzZoa0dRZTFpQ2NLYUNyay92Nm9GUVN4aUNjS21ZcEEvcFdBRlFkZGRDY0lCeGpLL2diWURRUW1QQ01Lb2RFSy9ZL1VYUVY2VENNSmdpNGcvaHA4WlFTQ1VDTUpOTTdFL29la1pRVUNWQ01JN0wrNC96VmdhUWJtZENNSW01SzFBaTVvZFFkdWVDTUloSTcxQXRBa2VRZnVmQ01JY1lzeEE0SGdlUVJ5eENNS0NEZGhBQU5RYVFjTkpDY0pzQTlOQVM3NE5RZFd3Q01Kc0E5TkFmTHdhUVFoS0NjS0NEZGhBejlVTlFXUUZCOEpzQTlOQWFlRVlRVjlBQjhLQ0RkaEFMRG9aUVJsQUI4SnNBOU5BcVNJWlFhb0ZCOEtDRGRoQTdmZ1lRVXpaQjhLQ0RkaEEvVHNNUVZDZUI4SnNBOU5BT09NTFFRWFpCOEpzQTlOQWVDUU1RWmVlQjhLQ0RkaEF2UG9MUVZ0YUE4S0NEZGhBVllJV1FSVmFBOEpzQTlOQTBtb1dRUVB6QThKc0E5TkFvR3dKUVVyekE4S0NEZGhBSllRSlFjUWlDTUpzQTlOQWJuWU1RUXNqQ01LQ0RkaEE4NDBNUVI2S0I4S0NEZGhBSll3WlFkZUpCOEpzQTlOQW9IUVpRU1QrQ3NLQ0RkaEFFb0VNUVhzdkNzS0NEZGhBUHM0Z1FjYjlDc0pzQTlOQVVsd01RUnd2Q3NKc0E5TkFnS2tnUVh6dEI4SnNBOU5BTXNNZFFkRThDTUpzQTlOQUpDa2VRZHJ0QjhLQ0RkaEE4T2NkUVRBOUNNS0NEZGhBNDAwZVFZTzhDTUtDRGRoQXc1b0pRZGtMQ2NLQ0RkaEF0d0FLUVNTOENNSnNBOU5BQm5ZSlFYZ0xDY0pzQTlOQStOc0pRU2I0QXNKc0E5TkE1ZWtaUVlYNEFzS0NEZGhBb3c0YVFTN0hBOEtCRGRoQWQ4RUZRZERHQThKc0E5TkF1SndGUVlGdkNjS0NEZGhBeUlBS1FTSnZDY0pzQTlOQUNsd0tRZHFnQ01LQ0RkaEE5czBlUVhtZ0NNSnNBOU5BTjZrZVFicjlDc0lwWXRKQXUxY01RUkF2Q3NJcFl0SkE2S1FnUVhIdEI4SXBZdEpBbWI0ZFFjWThDTUlwWXRKQWpTUWVRUmk4Q01JcFl0SkFiWEVKUVcwTENjSXBZdEpBWWRjSlFScjRBc0lwWXRKQVR1VVpRY1RHQThJcFl0SkFJSmdGUVJadkNjSXBZdEpBYzFjS1FXMmdDTUlwWXRKQW9LUWVRWlF2Q3NJSFVObEFidGNnUVh2L0NzSWJGZXBBaVFRTlFUeitDc0lIVU5sQVFZb01RYTB3Q3NKSkgraEFha01oUVVnOUNNSUhVTmxBRWxjZVFmVHRCOElIVU5sQUlQRWRRV1krQ01Ja1kraEEvY1FlUVJMdkI4THdiZWhBV1Y4ZVFmQUxDY0lIVU5sQTVna0tRWnk4Q01JSFVObEE5S01KUVRRTkNjTDJXT3BBSElZS1FlQzlDTUxEWStwQWR5QUtRY1g1QXNMRDdlaEFzSWthUVozNEFzSUhVTmxBMHhjYVFVZkhBOElIVU5sQXA4b0ZRWlRJQThLVzQrcEF6MG9HUWR4d0NjSmtTK3BBeWdVTFFabHZDY0lIVU5sQStJa0tRZktnQ01JSFVObEFKdGNlUVE2aUNNS1JWZWhBckVRZlFXNDdDc0lzY2dKQkN0OGNRVy9QQ3NLTFgrOUExTm9SUWNBNUNzSzA4TzFBdkdjY1FRUFJDc0lzY2dKQnJrb1NRZUVCQzhJdE9RVkJnL0FOUVRjekNzSXRPUVZCc0QwaVFlMUFDTUl0T1FWQlZiMGZRWmp4QjhJdE9RVkJZMWNmUVQvQUNNSXRPUVZCTndvTFFaVVBDY0l0T1FWQktYQUxRVUg4QXNJdE9RVkJGWDRiUWV2S0E4SXRPUVZCNlRBSFFaV2tDTUl0T1FWQmFEMGdRVDF6Q2NJdE9RVkJPL0FMUVhmbUNzTGd3dTVBWWFjUlFXOUtDc0o3Uk8xQTA2WWNRVGRNQ3NLd3dnSkI0aVFkUVNMb0NzS3d3Z0pCcngwU1FWSzhDTUlVYWUxQWMvQWJRVmhZQ2NKNjUrNUFBdkVRUVJtK0NNTDkxQUpCaEc0Y1FRUmFDY0w5MUFKQlQyY1JRVGhWQ2NKUWd1OUFreTBSUVltL0NNSjVFKzVBZmJvYlFUbkJDTUtPZ3dKQnlURWNRY3hXQ2NLT2d3SkJiWjBSUVllN0NzSmdZZTlBdHRFUlFkZ2xDc0tKOHUxQW4xNGNRWWNuQ3NJV2N3SkI2OVVjUVJxOUNzSVdjd0pCa0VFU1FZVnEvVUZjb3QzQlhYS1hRVWc2R0VLZGpjZkJSQUtTUVpheUZFSStkY2ZCUGMyWFFYbmYra0hVTE9IQnZqU1JRYnJuRzBJZHk3REJKRWFZUVRFWEZrTG5qYnpCUFBHZVFaNFFHMEtsZjduQkd2NldRYlZrRmtMa0xiVEJLaFdoUVJrZS8wSFJOTUxCeTdhZ1FUREEvRUZRSDh2Qk80K2VRWUhSK0VFZUpNVEJpWXVaUWRLQjkwR2R1OHpCaEplWVFRci85VUZvTXMzQnJmQjlRVnMrOTBIem44VEJ2SzE5UVRCWDkwRzB5TXpCcS9GOFFZSFIrRUVlSk1UQnBPaHJRWE5FSGtLalY2L0JteTJCUVhhZ0hFSUhpcmpCSlVCMlFlQjZIVUo0MDYvQk54aDBRYTVMSFVMWklMakJ0QzZCUVQ0UStrRSszZUxCVzRWOVFkT3ora0YzbHVMQnluRjRRWDdwR1VLQkdNYkI3M0I5UVRFM0drS0lkc2JCQVRPQlFlQjZIVUkxTXEvQk54aDBRWE5FSGtKaHRxN0JteTJCUWJybkcwTGJLYkRCSkVhWVFiVmtGa0toakxQQktoV2hRUmtlLzBHUGs4SEJ5N2FnUVlIUitFSGVnc1BCaVl1WlFWcys5MEd2L3NQQnZLMTlRWUhSK0VIZWdzUEJwT2hyUVhhZ0hFSmh1Sy9CSlVCMlFhNUxIVUl6VDYvQnRDNkJRWjRRRzBMK3JiREJHdjZXUVRFWEZrSS92TFBCUFBHZVFYN20vMEVDVnNIQnZaV2VRUjZvK2tGUDhzTEJCcDZZUVZZbCtVRWFhY1BCcy8xOVFYeDkra0ZvLzhMQlV0SnVRYTVMSFVKMjhLL0J0QzZCUVhhZ0hFS2lXYkRCSlVCMlFaNFFHMEpCVDdIQkd2NldRVEVYRmtLQlhiVEJQUEdlUVg3bS8wRkY5OEhCdlpXZVFSNm8ra0dSazhQQkJwNllRVllsK1VGZkNzVEJzLzE5UVh4OStrR3NvTVBCVXRKdVFkb09IRUp2WHJiQkZyQjNRZGFsSEVLdUFiYkJieStCUVRpQkdrS3lVcmZCYVNPV1FZUGpGVUthS0xyQjlZT2RRUW8yQUVLWGVjZkJYaXFkUWQzaCswR00zc2pCci8rWFFmeHAra0VBVXNuQkFUTitRYythKzBGZzlNakJjY053UVc0MEcwS2E1TGJCQXRoNVFSS3RHMEorbXJiQmh6Q0JRUjJxR1VMVDFyZkJZTnVVUWYrVkZVSTNXTHJCQjJDYlFUeWFBRUlLUE1mQlVBbWJRWHk0L1VFQlRzakJLUktYUWZoUS9FRnR2TWpCOUlKK1FjbEcvVUh0Y01qQklxMXpRVzQwRzBLT1g3VEJBdGg1UVJLdEcwSjBGYlRCaHpDQlFSMnFHVUxKVWJYQllOdVVRZitWRlVJcjA3ZkJCMkNiUVR5YUFFTCt0c1RCVUFtYlFYeTQvVUgzeU1YQktSS1hRZmhRL0VGaU44YkI5SUorUWNsRy9VSGg2OFhCSXExelFVZzZHTUtkamNmQlJBS1NRWVZxL2NGY290M0JYWEtYUVpheUZNSStkY2ZCUGMyWFFYbmYrc0hVTE9IQnZqU1JRVEVYRnNMbmpiekJQUEdlUWJybkc4SWR5N0RCSkVhWVFaNFFHOEtsZjduQkd2NldRYlZrRnNMa0xiVEJLaFdoUVJrZS84SFJOTUxCeTdhZ1FUREEvTUZRSDh2Qk80K2VRWUhSK01FZUpNVEJpWXVaUWRLQjk4R2R1OHpCaEplWVFRci85Y0ZvTXMzQnJmQjlRVnMrOThIem44VEJ2SzE5UVRCWDk4RzB5TXpCcS9GOFFZSFIrTUVlSk1UQnBPaHJRWGFnSE1JSGlyakJKVUIyUVhORUhzS2pWNi9CbXkyQlFlQjZIY0o0MDYvQk54aDBRYTVMSGNMWklMakJ0QzZCUVQ0UStzRSszZUxCVzRWOVFkT3orc0YzbHVMQnluRjRRWDdwR2NLQkdNYkI3M0I5UVRFM0dzS0lkc2JCQVRPQlFlQjZIY0kxTXEvQk54aDBRWE5FSHNKaHRxN0JteTJCUWJybkc4TGJLYkRCSkVhWVFiVmtGc0toakxQQktoV2hRUmtlLzhHUGs4SEJ5N2FnUVlIUitNSGVnc1BCaVl1WlFWcys5OEd2L3NQQnZLMTlRWUhSK01IZWdzUEJwT2hyUVhhZ0hNSmh1Sy9CSlVCMlFhNUxIY0l6VDYvQnRDNkJRWjRRRzhMK3JiREJHdjZXUVRFWEZzSS92TFBCUFBHZVFYN20vOEVDVnNIQnZaV2VRUjZvK3NGUDhzTEJCcDZZUVZZbCtjRWFhY1BCcy8xOVFYeDkrc0ZvLzhMQlV0SnVRYTVMSGNKMjhLL0J0QzZCUVhhZ0hNS2lXYkRCSlVCMlFaNFFHOEpCVDdIQkd2NldRVEVYRnNLQlhiVEJQUEdlUVg3bS84RkY5OEhCdlpXZVFSNm8rc0dSazhQQkJwNllRVllsK2NGZkNzVEJzLzE5UVh4OStzR3NvTVBCVXRKdVFkb09ITUp2WHJiQkZyQjNRZGFsSE1LdUFiYkJieStCUVRpQkdzS3lVcmZCYVNPV1FZUGpGY0thS0xyQjlZT2RRUW8yQU1LWGVjZkJYaXFkUWQzaCs4R00zc2pCci8rWFFmeHArc0VBVXNuQkFUTitRYythKzhGZzlNakJjY053UVc0MEc4S2E1TGJCQXRoNVFSS3RHOEorbXJiQmh6Q0JRUjJxR2NMVDFyZkJZTnVVUWYrVkZjSTNXTHJCQjJDYlFUeWFBTUlLUE1mQlVBbWJRWHk0L2NFQlRzakJLUktYUWZoUS9NRnR2TWpCOUlKK1FjbEcvY0h0Y01qQklxMXpRVzQwRzhLT1g3VEJBdGg1UVJLdEc4SjBGYlRCaHpDQlFSMnFHY0xKVWJYQllOdVVRZitWRmNJcjA3ZkJCMkNiUVR5YUFNTCt0c1RCVUFtYlFYeTQvY0gzeU1YQktSS1hRZmhRL01GaU44YkI5SUorUWNsRy9jSGg2OFhCSXExelFTNmxHRUxRVUxYQjRTZUFRWDNOQTBKNkhzTEJEMzkyUVY0bEFVSkV3TVBCTUdwOFFZYjNGMEordTdYQk5qbDlRVGZHR1VLR1FMWEJQRWRyUVM0NUEwTFdHc1BCUW5acFFVVDNBa0pVUThQQlBhdGpRZG8zR1VMNWw3WEJ4TXh3UWFoWEhFS3ByTFBCSGZoMlFjVDRIRUt5U2JQQkVTK0JRZXZJR2tLYW9iVEJ3cENXUVZ2OUZVS3VrN2ZCbURxZVFhUVVBRUlQQ2NYQkR1Q2RRZjFFKzBHeGljYkIyVTZZUWFqSCtVSFIvc2JCV1JoK1FTWU0rMEVsbThiQjRzcHZRVVQzQWtJU29zTEJQYXRqUVRmR0dVSkNuN1RCUEVkclFhaFhIRUpuQzdQQkhmaDJRY1Q0SEVKeHFMTEJFUytCUWV2SUdrSllBTFRCd3BDV1FWdjlGVUpzOHJiQm1EcWVRYVFVQUVMTVo4VEJEdUNkUWYxRSswRnY2TVhCMlU2WVFhakgrVUdPWGNiQldSaCtRU1lNKzBIaitjWEI0c3B2UWNUQ0dFS2tQclhCMERPQlFjd2tGMEx2UExiQlFnT1JRWE90RkVMRndMZkJRZlNVUWRER0FVSVlYY1BCSmFhVVFTcWVBVUlRZHNQQm5rbVVRZk1DQVVKbzFjUEIxSEovUVgzTkE4SjZIc0xCRDM5MlFTNmxHTUxRVUxYQjRTZUFRVjRsQWNKRXdNUEJNR3A4UVliM0Y4Sit1N1hCTmpsOVFTNDVBOExXR3NQQlFuWnBRVGZHR2NLR1FMWEJQRWRyUVVUM0FzSlVROFBCUGF0alFkbzNHY0w1bDdYQnhNeHdRYWhYSE1LcHJMUEJIZmgyUWNUNEhNS3lTYlBCRVMrQlFldklHc0thb2JUQndwQ1dRVnY5RmNLdWs3ZkJtRHFlUWFRVUFNSVBDY1hCRHVDZFFmMUUrOEd4aWNiQjJVNllRYWpIK2NIUi9zYkJXUmgrUVNZTSs4RWxtOGJCNHNwdlFVVDNBc0lTb3NMQlBhdGpRVGZHR2NKQ243VEJQRWRyUWFoWEhNSm5DN1BCSGZoMlFjVDRITUp4cUxMQkVTK0JRZXZJR3NKWUFMVEJ3cENXUVZ2OUZjSnM4cmJCbURxZVFhUVVBTUxNWjhUQkR1Q2RRZjFFKzhGdjZNWEIyVTZZUWFqSCtjR09YY2JCV1JoK1FTWU0rOEhqK2NYQjRzcHZRY1RDR01La1ByWEIwRE9CUWN3a0Y4THZQTGJCUWdPUlFYT3RGTUxGd0xmQlFmU1VRZERHQWNJWVhjUEJKYWFVUVNxZUFjSVFkc1BCbmttVVFmTUNBY0pvMWNQQjFISi9RWlpVR2tMRHdySEJzY0ZsUWFOVEFVSXdUOG5CZGl0aVFWbTFBa0tHUmNEQk4rQmRRYzdwR1VLK05MckIxK1ZwUVpRL0FVS3FiOXZCRHFGd1FjeURHRUt5SjhUQm5iTjNRVm0xQWtKQnBML0JOK0JkUVpaVUdrS0JJYkhCc2NGbFFjbm1Ba0xraGIvQmV6aGlRYzdwR1VJWlk3SEIxK1ZwUWM3cEdVSmJCTExCMStWcFFjbm1Ba0ltSjhEQmV6aGlRYjRIQTBJL3ZzWEIveDFsUVoraUdVSnQyN2ZCbmFoc1FTNDVBMExpbjhYQlFuWnBRZG8zR1VJREhiakJ4TXh3UVRXcjlVSHNyc2JCbnR0clFUTWlBVUpSME1MQk05TmRRZVl3OUVHQ1U4L0JxZVI4UWZtQS8wSCsyY3ZCY2g1aVFZYU45MEZFSWVYQnhtUjRRZDFZLzBGMit0M0JDcFJ3UVpKWTVFRXYxOGpCQ0pSclFaSlk1RUZTbE12QmpGZGRRWkpZNUVGV3RkREJMYU44UVpKWTVFSHJLdFBCT0s1aFFaSlk1RUdHUnVqQmFCVjRRWkpZNUVGWk51WEJjeVJ3UWFOVEFjSXdUOG5CZGl0aVFaWlVHc0xEd3JIQnNjRmxRVm0xQXNLR1JjREJOK0JkUWM3cEdjSytOTHJCMStWcFFaUS9BY0txYjl2QkRxRndRY3lER01LeUo4VEJuYk4zUVZtMUFzSkJwTC9CTitCZFFaWlVHc0tCSWJIQnNjRmxRY25tQXNMa2hiL0JlemhpUWM3cEdjSVpZN0hCMStWcFFjN3BHY0piQkxMQjErVnBRY25tQXNJbUo4REJlemhpUWI0SEE4SS92c1hCL3gxbFFaK2lHY0p0MjdmQm5haHNRUzQ1QThMaW44WEJRblpwUWRvM0djSURIYmpCeE14d1FUV3I5Y0hzcnNiQm50dHJRVE1pQWNKUjBNTEJNOU5kUWVZdzlNR0NVOC9CcWVSOFFmbUEvOEgrMmN2QmNoNWlRWWFOOThGRUllWEJ4bVI0UWQxWS84RjIrdDNCQ3BSd1FaSlk1TUV2MThqQkNKUnJRWkpZNU1GU2xNdkJqRmRkUVpKWTVNRld0ZERCTGFOOFFaSlk1TUhyS3RQQk9LNWhRWkpZNU1HR1J1akJhQlY0UVpKWTVNRlpOdVhCY3lSd1FZM1R1Y0hRblVUQ0E2Nlh3WTNUdWNIVUlEYkNlK2lrd1kzVHVjSFFuVVRDZXVpa3dZM1R1Y0hVSURiQ0E2Nlh3WTNUdWNFNjBrYkNMMFdUd1kzVHVjRTYwa2JDVFZHcHdZM1R1Y0ZwN0RQQ1RsR3B3WTNUdWNGcDdEUENMMFdUd1d6RllzSFZIazNDTDBXVHdRUVNhY0hWSGszQ1RWR3B3V3pGWXNIVkhrM0NUVkdwd1FRU2FjSFZIazNDTDBXVHdXekZZc0hFR0VMQ0wwV1R3UVFTYWNIRUdFTENMMFdUd1FRU2FjSEVHRUxDVFZHcHdXekZZc0hFR0VMQ1RWR3B3V3pGNHNEVkhrM0M0aDZRd1RzczFzRFZIazNDaFNWMHdXekY0c0RWSGszQ2hTVjB3VHNzMXNEVkhrM0M0aDZRd1RzczFzREVHRUxDaGlWMHdXekY0c0RFR0VMQ2hpVjB3V3pGNHNERUdFTEM0aDZRd1RzczFzREVHRUxDNGg2UXdaeGU3OERWSGszQ1BmSjJ3WnhlNzhEVkhrM0NQWVdSd1p4ZTc4REVHRUxDUGZKMndaeGU3OERFR0VMQ1BvV1J3YzMzZThIVkhrM0NMMFdUd2MzM2U4SFZIazNDVFZHcHdjMzNlOEhFR0VMQ0wwV1R3YzMzZThIRUdFTENUVkdwd2EvaGtNRTYwa2JDVFZHcHdhL2hrTUU2MGtiQ0wwV1R3YS9oa01GcDdEUENMMFdUd2EvaGtNRnA3RFBDVGxHcHdZM1R1Y0Z2YVdyQ2V1aWt3WTNUdWNGejdGdkNBNjZYd1kzVHVjRno3RnZDZXVpa3dZM1R1Y0Z2YVdyQ0E2Nlh3WTNUdWNFTHVGbkNMMFdUd1kzVHVjRUx1Rm5DVFZHcHdZM1R1Y0hjbld6Q1RWR3B3WTNUdWNIY25XekNMMFdUd1FRU2FjRnZhMVBDVFZHcHdXekZZc0Z2YTFQQ0wwV1R3V3pGWXNGdmExUENUVkdwd1FRU2FjRnZhMVBDTDBXVHdXekZZc0dBY1Y3Q0wwV1R3UVFTYWNHQWNWN0NMMFdUd1FRU2FjR0FjVjdDVFZHcHdXekZZc0dBY1Y3Q1RWR3B3VHNzMXNCdmExUENoU1Ywd1d6RjRzQnZhMVBDNFI2UXdXekY0c0J2YTFQQ2hTVjB3VHNzMXNCdmExUEM0UjZRd1RzczFzQ0FjVjdDaFNWMHdXekY0c0NBY1Y3Q2hTVjB3V3pGNHNDQWNWN0M0UjZRd1RzczFzQ0FjVjdDNFI2UXdaeGU3OEJ2YTFQQ1BmSjJ3WnhlNzhCdmExUENQWVdSd1p4ZTc4Q0FjVjdDUGZKMndaeGU3OENBY1Y3Q1BZV1J3YzMzZThGdmExUENMMFdUd2MzM2U4RnZhMVBDVFZHcHdjMzNlOEdBY1Y3Q0wwV1R3YzMzZThHQWNWN0NUVkdwd2EvaGtNRUx1Rm5DVFZHcHdhL2hrTUVMdUZuQ0wwV1R3YS9oa01IY25XekNMMFdUd2EvaGtNSGNuV3pDVFZHcHdhL2hrTUU2MGtiQzRoNlF3YzMzZThIVkhrM0M0aDZRd2EvaGtNRnA3RFBDNGg2UXdjMzNlOEhFR0VMQzRoNlF3YzMzZThGdmExUEM0UjZRd2MzM2U4R0FjVjdDNFI2UXdhL2hrTUhjbld6QzRSNlF3YS9oa01FTHVGbkM0UjZRd1hqSG84RTYwa2JDenN4WHdhL2hrTUhWSGszQ3pzeFh3WGpIbzhGcDdEUEN6OHhYd2EvaGtNSEVHRUxDenN4WHdhL2hrTUZ2YTFQQ3pzeFh3YS9oa01HQWNWN0N6c3hYd1hqSG84SGNuV3pDenN4WHdYakhvOEVMdUZuQ3pzeFh3ZUI2bmNEVkhrM0NoU1Ywd2VCNm5jRFZIazNDNGg2UXdlQjZuY0RFR0VMQ2hpVjB3ZUI2bmNERUdFTEM0aDZRd2VCNm5jQnZhMVBDNFI2UXdlQjZuY0J2YTFQQ2hTVjB3ZUI2bmNDQWNWN0NoU1Ywd2VCNm5jQ0FjVjdDNFI2UXdXekY0ci9WSGszQ2hTVjB3V3pGNHIvVkhrM0M0aDZRd1FBQUFBRFZIazNDaFNWMHdRQUFBQURWSGszQzRoNlF3UUFBQUFERUdFTENoaVYwd1d6RjRyL0VHRUxDaGlWMHdXekY0ci9FR0VMQzRoNlF3UUFBQUFERUdFTEM0aDZRd1d6RjRyOXZhMVBDaFNWMHdXekY0cjl2YTFQQzRSNlF3UUFBQUFCdmExUEM0UjZRd1FBQUFBQnZhMVBDaFNWMHdXekY0citBY1Y3Q2hTVjB3UUFBQUFDQWNWN0NoU1Ywd1d6RjRyK0FjVjdDNFI2UXdRQUFBQUNBY1Y3QzRSNlF3ZUI2bmNERUdFTENPZjl3d1d6RjRyL0VHRUxDT2Y5d3dXekY0ci9WSGszQ09mOXd3ZUI2bmNEVkhrM0NPZjl3d2VCNm5jQnZhMVBDT2Y5d3dlQjZuY0NBY1Y3Q09mOXd3V3pGNHI5dmExUENPZjl3d1d6RjRyK0FjVjdDT2Y5d3dlQjZuY0RFR0VMQ1NnMUl3V3pGNHIvRUdFTENTZzFJd1d6RjRyL1ZIazNDU2cxSXdlQjZuY0RWSGszQ1NnMUl3ZUI2bmNCdmExUENTZzFJd2VCNm5jQ0FjVjdDU2cxSXdXekY0cjl2YTFQQ1NnMUl3V3pGNHIrQWNWN0NTZzFJd1kzVHVVSFVJRGJDZStpa3dZM1R1VUhRblVUQ0E2Nlh3WTNUdVVIUW5VVENldWlrd1kzVHVVSFVJRGJDQTY2WHdZM1R1VUU2MGtiQ0wwV1R3WTNUdVVFNjBrYkNUVkdwd1kzVHVVRnA3RFBDVGxHcHdZM1R1VUZwN0RQQ0wwV1R3UVFTYVVIVkhrM0NUVkdwd1d6RllrSFZIazNDTDBXVHdXekZZa0hWSGszQ1RWR3B3UVFTYVVIVkhrM0NMMFdUd1d6RllrSEVHRUxDTDBXVHdRUVNhVUhFR0VMQ0wwV1R3UVFTYVVIRUdFTENUVkdwd1d6RllrSEVHRUxDVFZHcHdUc3Mxa0RWSGszQ2hTVjB3V3pGNGtEVkhrM0M0aDZRd1d6RjRrRFZIazNDaFNWMHdUc3Mxa0RWSGszQzRoNlF3VHNzMWtERUdFTENoaVYwd1d6RjRrREVHRUxDaGlWMHdXekY0a0RFR0VMQzRoNlF3VHNzMWtERUdFTEM0aDZRd1p4ZTcwRFZIazNDUGZKMndaeGU3MERWSGszQ1BZV1J3WnhlNzBERUdFTENQZkoyd1p4ZTcwREVHRUxDUG9XUndjMzNlMEhWSGszQ0wwV1R3YzMzZTBIVkhrM0NUVkdwd2MzM2UwSEVHRUxDTDBXVHdjMzNlMEhFR0VMQ1RWR3B3YS9oa0VFNjBrYkNUVkdwd2EvaGtFRTYwa2JDTDBXVHdhL2hrRUZwN0RQQ0wwV1R3YS9oa0VGcDdEUENUbEdwd1kzVHVVRno3RnZDQTY2WHdZM1R1VUZ2YVdyQ2V1aWt3WTNUdVVGejdGdkNldWlrd1kzVHVVRnZhV3JDQTY2WHdZM1R1VUVMdUZuQ0wwV1R3WTNUdVVFTHVGbkNUVkdwd1kzVHVVSGNuV3pDVFZHcHdZM1R1VUhjbld6Q0wwV1R3V3pGWWtGdmExUENMMFdUd1FRU2FVRnZhMVBDVFZHcHdXekZZa0Z2YTFQQ1RWR3B3UVFTYVVGdmExUENMMFdUd1d6RllrR0FjVjdDTDBXVHdRUVNhVUdBY1Y3Q0wwV1R3UVFTYVVHQWNWN0NUVkdwd1d6RllrR0FjVjdDVFZHcHdXekY0a0J2YTFQQzRSNlF3VHNzMWtCdmExUENoU1Ywd1d6RjRrQnZhMVBDaFNWMHdUc3Mxa0J2YTFQQzRSNlF3VHNzMWtDQWNWN0NoU1Ywd1d6RjRrQ0FjVjdDaFNWMHdXekY0a0NBY1Y3QzRSNlF3VHNzMWtDQWNWN0M0UjZRd1p4ZTcwQnZhMVBDUGZKMndaeGU3MEJ2YTFQQ1BZV1J3WnhlNzBDQWNWN0NQZkoyd1p4ZTcwQ0FjVjdDUFlXUndjMzNlMEZ2YTFQQ0wwV1R3YzMzZTBGdmExUENUVkdwd2MzM2UwR0FjVjdDTDBXVHdjMzNlMEdBY1Y3Q1RWR3B3YS9oa0VFTHVGbkNUVkdwd2EvaGtFRUx1Rm5DTDBXVHdhL2hrRUhjbld6Q0wwV1R3YS9oa0VIY25XekNUVkdwd2EvaGtFRTYwa2JDNGg2UXdjMzNlMEhWSGszQzRoNlF3YS9oa0VGcDdEUEM0aDZRd2MzM2UwSEVHRUxDNGg2UXdjMzNlMEZ2YTFQQzRSNlF3YzMzZTBHQWNWN0M0UjZRd2EvaGtFSGNuV3pDNFI2UXdhL2hrRUVMdUZuQzRSNlF3WGpIbzBFNjBrYkN6c3hYd2EvaGtFSFZIazNDenN4WHdYakhvMEZwN0RQQ3o4eFh3YS9oa0VIRUdFTEN6c3hYd2EvaGtFRnZhMVBDenN4WHdhL2hrRUdBY1Y3Q3pzeFh3WGpIbzBIY25XekN6c3hYd1hqSG8wRUx1Rm5DenN4WHdlQjZuVURWSGszQ2hTVjB3ZUI2blVEVkhrM0M0aDZRd2VCNm5VREVHRUxDaGlWMHdlQjZuVURFR0VMQzRoNlF3ZUI2blVCdmExUEM0UjZRd2VCNm5VQnZhMVBDaFNWMHdlQjZuVUNBY1Y3Q2hTVjB3ZUI2blVDQWNWN0M0UjZRd1d6RjRqL1ZIazNDaFNWMHdXekY0ai9WSGszQzRoNlF3V3pGNGovRUdFTENoaVYwd1d6RjRqL0VHRUxDNGg2UXdXekY0ajl2YTFQQ2hTVjB3V3pGNGo5dmExUEM0UjZRd1d6RjRqK0FjVjdDaFNWMHdXekY0aitBY1Y3QzRSNlF3ZUI2blVERUdFTENPZjl3d1d6RjRqL0VHRUxDT2Y5d3dXekY0ai9WSGszQ09mOXd3ZUI2blVEVkhrM0NPZjl3d2VCNm5VQnZhMVBDT2Y5d3dlQjZuVUNBY1Y3Q09mOXd3V3pGNGo5dmExUENPZjl3d1d6RjRqK0FjVjdDT2Y5d3dlQjZuVURFR0VMQ1NnMUl3V3pGNGovRUdFTENTZzFJd1d6RjRqL1ZIazNDU2cxSXdlQjZuVURWSGszQ1NnMUl3ZUI2blVCdmExUENTZzFJd2VCNm5VQ0FjVjdDU2cxSXdXekY0ajl2YTFQQ1NnMUl3V3pGNGorQWNWN0NTZzFJd1kzVHVjR3M0V3BDQnE2WHdZM1R1Y0dvWG5sQ2Z1aWt3WTNUdWNHczRXcENmdWlrd1kzVHVjR29YbmxDQjY2WHdUUnREY0xrQTBGQ1haZWdRRFJ0RGNJYnlFcENoVmF3UURSdERjSmJja3BDLzl5cVFEUnREY0tIMVVCQ1VwR2xRRFJ0RGNMZ2hDeEMvbVFzUURSdERjSWRKQ0pDcmI5M3Z6UnREY0xTZmlGQ1VKZGp2elJ0RGNMSDl5eENXaFFrUURSdERjSzQ4eGhDREhPTXdEUnREY0tLWEJoQ1FBNkt3S0dqRE1LQzJSQkNjU1VRd2FHakRNSjRWQkJDMzFzUHdWUjlDY0p6MHdwQzhWdEx3VlI5Q2NKK1dBcENvRE5Md1RSdERjSmlaRWRDZi8yRVFEUnREY0kyMEVOQzBOaEtRRFJ0RGNKZmpqUkNZSGFQUHpSdERjSmx3aWhDUkMvanZ6UnREY0tremlCQ1Y0T213S0dqRE1Kb2VocEM3amtUd1ZSOUNjSmZOaFJDR3M1UXdUUnREY0kvUHpaQzR3K0JRRFJ0RGNLb2RqVkNlc2FEUURSdERjSlF5anRDbHRvR1FDVVg4c0VzcXlsQ3hnYUxRUmR2LzhGZ3h6dENzd0dEUVo4Yy84RXNxeWxDS3V1QVFacHA4c0ZneHp0Q2srcU1RWGxpQmNKZ3h6dENZVHRxUVQ0NUJjSXNxeWxDRW9CbFFVYWhCTUxiQXk1Q3BFVXhRWlZsQmNKN29UVkNzeVlpUVpWbEJjTHJKREJDZ3k0Z1FVYWhCTUt2YmpkQ3ZUbzBRZW1GOHNGakdVcENiUCtOUWNhUi84SG0rRXhDOUZTRVFUaDNCY0pCQ0ZCQzBtWnRRZmJOQ2NKeFVEaENqNjRYUVhCVUNNS09kRkJDZUxBOVFaY2VDc0k2SGs5QzIza2VRWEJVQ01KZ3h6dENwbkk2UWNuY0JzSkx2VFpDZmhSUlFjbmNCc0pxMDFCQzdxUlZRY25jQnNMK0V5NUNhYVpQUWUvZEE4TFlUakJDTGtFL1FlL2RBOExYenpSQ2kvOC9RUWhYQnNKVGJQWkIveFlEd1ZSOUNjSjdWZzFDUG9WSXdBaFhCc0xWaEFSQ3A4SUN3Y0d6Q01Mc0ZRTkNGb0k5d0hvUUM4TEVlQlpDSTFYNlBub1FDOEw2R3c1Q2Z3RkpRUGJOQ2NKY3d5MUMrK1FUUWVkR0NzTDRFU05DS1gyYlFPZEdDc0tnOHk5Q3c5enVRTlkrRE1JSEdEOUN5VDd1UU5ZK0RNS21IMDFDUnFuM1FFOTdETUtSNnpGQ29GRzVRRTk3RE1Kc3l5ZENDMk5yUUJyZ0RNTEwreHRDZnRsTXZvY1dETUtEMlJKQzRGQnV3SmNlQ3NLbmJBcENRZzhKd1FoWENjSlRiUFpCRXRSQXdWUjlDY0pmendkQ2Z4UTN3VlI5Q2NKVGJQWkJ0cTFEd1FoWENjSTVQQVpDM0RvMHdZQ1hDTUxqMXdKQ2FYOVd3WDY4QjhMdHh3aEN4Tk5td1FLNEI4S2VOZ2hDNWc5bndiYXRCOEpUYlBaQkUvMWh3ZlJzQjhLZXhBRkNMcDVvd1ZoL0JzSlRiUFpCQnhjR3dmaVlCOEo5bmdoQ3RhOW93UlNYQjhMM0RnaENVTVZvd2JMMEI4STFWdzVDY1d0aXdWMUlCOEtmc0FGQ0FEQnF3YkwwQjhMK3V3NUNzUXhqd1ZSOUNjSXBteFJDR3M1UXdhR2pETUlKeXhwQzdqa1R3VFJ0RGNKRkh5RkNteVNud0RSdERjTGYvaWhDVDdUbHZ6UnREY0t4dGpSQ04yS0ZQelJ0RGNMSkJqeENCaE1EUURSdERjSmY1RU5DdWM1RlFEUnREY0pjcGtkQysrYURRRFJ0RGNKTjYwcENRbjZyUURSdERjSU9RVXRDeVBld1FOWStETUp3aEUxQ1JxbjNRSmNlQ3NJRmcwOUMyM2tlUVhCVUNNSlkyVkJDZUxBOVFjbmNCc0kwT0ZGQzdxUlZRVGgzQmNMaldGQkMwbVp0UWNhUi84R3dYVTFDOUZTRVFlbUY4c0V1ZmtwQ2JQK05RZmJOQ2NLT0I5NUJycm9KUVhCVUNNSXNxeWxDcmNJMFFYQlVDTUtPQjk1Qnh6b29RZmJOQ2NLMGNWRkJxcGY4UUhCVUNNSzBjVkZCZzA4Y1FjbmNCc0pqQnQ1QlJHMUFRY25jQnNLMGNWRkJBblF6UVlNVUJjSmpCdDVCVUtaWVFZTVVCY0swY1ZGQmdaaEtRZmlOL3NGakJ0NUJ6TkIwUVpQRi9jRzBjVkZCYllGbFFSV004Y0ZqQnQ1QlpIU0VRZlMzOE1HMGNWRkJBN1I0UVhvUUM4Sm5lTUpCenNnelFIb1FDOEt6Y1ZGQkhaQWVRSW9ZQ2NKWmNyZEJveGd1d0ZSOUNjS3pjVkZCTmE4ZXdBaFhCc0tYa3E5Qmh4TUh3UWhYQnNLeWNWRkJEeEFMd1ZoL0JzS1hrcTlCZ3djS3dWaC9Cc0t5Y1ZGQkFmZ053UWhYQ2NLWGtxOUJ0ZGhEd1FoWENjS3ljVkZCVjkxR3dWUjlDY0tYa3E5QjVxWkd3VlI5Q2NLeWNWRkJGYUJKd2JhdEI4S1hrcTlCajN4a3diYXRCOEt5Y1ZGQkMveG13WnNnQjhLWGtxOUIxNUZzd1pzZ0I4SlRiUFpCVmpOcXdac2dCOEt5Y1ZGQlhQQnV3VXY0QnNLWGtxOUJ0L2x0d1V2NEJzSlRiUFpCOGFCcndVdjRCc0t5Y1ZGQmZsSnd3V3FxL2NGazdESkJQMjVqUVppZDhNSFB0elJCZExCMlFZTVVCY0xxblM5QmpXVklRY25jQnNJUHR5eEIwaWd4UVhCVUNNSnhwQ2hCOHQwWlFmYk5DY0lsc0NSQlY0ZjNRQWhYQnNLZFZUTkI2T0VMd1ZoL0JzTGlhRFJCK2I4T3dRaFhDY0tTQVM1QlZaaEh3VlI5Q2NKL0ppOUJXbEpLd2JhdEI4S0VQalpCMTNKbndac2dCOEw0N0RwQm9VMXZ3VXY0QnNMVFpUNUJvcUJ3d1hvUUM4TFJ6aDlCMnpzVlFGUjlDY0ovZHlOQmVyWWx3RlI5Q2NJRE15MUJmMXhLd1FoWENjSTlEeXhCbTZKSHdWaC9Cc0lOZHpKQlhzME93UWhYQnNMQ2xqRkJFKzRMd1ZSOUNjSnJnaUZCRXdNbXdIb1FDOEkvNlIxQmwrQVVRUGJOQ2NKRXF5SkIzVXozUUhCVUNNSTNleVpCMGJ3WlFjbmNCc0tjWFNwQlF3TXhRWU1VQmNLS1NDMUJ0ajVJUVphby9jRUszakJCZGtwalFleWI4TUdONVRKQnhZOTJRYmF0QjhMclN6UkJXSHRud1pzZ0I4THFNRGxCMEZSdndVdjRCc0pFY2p4QnBhaHd3Y1lJNzhHTjVUSkJ4WTkyUVhBVi9NRUszakJCZGtwalFlOUtCTUtLU0MxQnRqNUlRWElLNzhIUHR6UkJkTEIyUWM0azc4RzBjVkZCQTdSNFFlLzQ3OEZqQnQ1QlpIU0VRUUdFOE1Fc3F5bEN4Z2FMUVhUVzhNRmd4enRDaytxTVFjUHk4TUZqR1VwQ2JQK05RY1B5OE1FdWZrcENiUCtOUWFIKy9jR3dYVTFDOUZTRVFhU3RCTUxqV0ZCQzBtWnRRVFlUQnNJME9GRkM3cVJWUWQyS0I4SlkyVkJDZUxBOVFRTlZDY0lGZzA5QzIza2VRVVIxQzhKd2hFMUNScW4zUUtHakRNSU9RVXRDeVBld1FLR2pETUpONjBwQ1FuNnJRS0dqRE1KZjVFTkN1YzVGUUtHakRNSmNwa2RDL09hRFFLR2pETUxKQmp4Q0JoTURRS0dqRE1LeHRqUkNOMktGUDZHakRNTGYvaWhDVDdUbHY2R2pETUpGSHlGQ215U253QTdhQzhJSnl4cEM3amtUd2NHekNNSXBteFJDR3M1UXdSOHJCOEwrdXc1Q3NReGp3V1hQQnNKOW5naEN0YTlvd1lMTkJzTDNEZ2hDVU1Wb3diZ3VCc0pUYlBaQjhhQnJ3Y3QrQnNLZnNBRkNBREJxd2JndUJzS1hrcTlCdC9sdHdiZ3VCc0t5Y1ZGQmZsSnd3Ymd1QnNMVFpUNUJvcUJ3d2JndUJzSkVjanhCcGFod3dRaFhCc0xxTURsQjBGUnZ3U0xrQnNMclN6UkJXSHRud2NHekNNSURNeTFCZjF4S3dYV05DTUk5RHl4Qm02Skh3Y2ExQmNJTmR6SkJYczBPd1hXTkJjTENsakZCRSs0THdjR3pDTUpyZ2lGQkV3TW13T2RHQ3NJLzZSMUJsK0FVUUdNRUNjSkVxeUpCM1V6M1FOMktCOEkzZXlaQjBid1pRVFlUQnNLY1hTcEJRd014UWVHVjVjR041VEpCeFk5MlFZeWk4c0VLM2pCQmRrcGpRZndpLzhHS1NDMUJ0ajVJUVkyWDVjSFB0elJCZExCMlFjVlpBY0tjWFNwQlF3TXhRZW14NWNHMGNWRkJBN1I0UVF5RzVzRmpCdDVCWkhTRVFSd1I1OEVzcXlsQ3hnYUxRWTlqNThGZ3h6dENrK3FNUWVCLzU4RmpHVXBDYlArTlFlQi81OEV1ZmtwQ2JQK05RYjJMOU1Hd1hVMUM5RlNFUVdiby84SGpXRkJDMG1adFFjVlpBY0kwT0ZGQzdxUlZRV3ZSQXNKWTJWQkNlTEE5UVpPYkJNSUZnMDlDMjNrZVFkSzdCc0p3aEUxQ1JxbjNRQzdxQjhJT1FVdEN5UGV3UUM3cUI4Sk42MHBDUW42clFDN3FCOEpmNUVOQ3VjNUZRQzdxQjhKY3BrZEMvT2FEUUM3cUI4TEpCanhDQmhNRFFDN3FCOEt4dGpSQ04yS0ZQeTdxQjhMZi9paENUN1Rsdnk3cUI4SkZIeUZDbXlTbndKc2dCOElKeXhwQzdqa1R3VS82QThJcG14UkNHczVRd2ExeEFzTCt1dzVDc1F4andmTVZBc0o5bmdoQ3RhOW93UkFVQXNMM0RnaENVTVZvd1VaMUFjSlRiUFpCOGFCcndWbkZBY0tmc0FGQ0FEQnF3VVoxQWNLWGtxOUJ0L2x0d1VaMUFjS3ljVkZCZmxKd3dVWjFBY0xUWlQ1Qm9xQnd3VVoxQWNKRWNqeEJwYWh3d1phZEFjTHFNRGxCMEZSdndiQXFBc0xyU3pSQldIdG53VS82QThJRE15MUJmMXhLd1FMVUE4STlEeXhCbTZKSHdWUDhBTUlOZHpKQlhzME93UVRVQU1MQ2xqRkJFKzRMd1UvNkE4SnJnaUZCRXdNbXdIV05CY0kvNlIxQmwrQVVRUEJLQk1KRXF5SkIzVXozUUd2UkFzSTNleVpCMGJ3WlFZcVZDY0laTGpoQ2tUUVlRUlVsQ01LK2p6dENEQ002UVhHMkJzS2VwRFpDMkRsUVFYRzJCc0tKTUM1Q2pkUk9RUlVsQ01MTjRpbENCNVkwUVlxVkNjTFg0UzFDUW9JVVFXQkJOZ0FBQUFxVHlUNEFBQUFBQUFBQUFBQUFBQUFOazhreURaUEpQZ0FBQUFBTms4bStEWlBKTWdBQUFBQXlId05CWThJRHZ5QkJqUDRBQUNnU0FBQUJBQUlBQndBQUFBTUFBUUFIQUFRQUF3QUFBQWNBQkFBRkFBTUFCd0FHQUFVQUJBQUhBQVlBQndBRkFBY0FDQUFIQUFZQUJ3QUlBQWtBQndBSEFBb0FDUUFJQUFjQUNnQUxBQWtBQndBTUFBc0FDZ0FIQUF3QURRQUxBQWNBRGdBTkFBd0FCd0FPQUE4QURRQUhBQkFBRHdBT0FBY0FFQUFSQUE4QUJ3QVNBQkVBRUFBSEFCSUFFd0FSQUFjQUZBQVRBQklBQndBVUFCVUFFd0FIQUJJQUZnQVVBQWNBRWdBWEFCWUFCd0FRQUJjQUVnQUhBQkFBR0FBWEFBY0FEZ0FZQUJBQUJ3QU9BQmtBR0FBSEFBd0FHUUFPQUFjQURBQWFBQmtBQndBS0FCb0FEQUFIQUFvQUd3QWFBQWNBQ0FBYkFBb0FCd0FJQUJ3QUd3QUhBQVlBSEFBSUFBY0FCZ0FkQUJ3QUJ3QUVBQjBBQmdBSEFBUUFIZ0FkQUFjQUFBQWVBQVFBQndBQUFCOEFIZ0FIQUFJQUh3QUFBQWNBQWdBZ0FCOEFCd0FYQUNFQUZnQUhBQmNBSWdBaEFBY0FHQUFpQUJjQUJ3QVlBQ01BSWdBSEFCa0FJd0FZQUFjQUdRQWtBQ01BQndBYUFDUUFHUUFIQUJvQUpRQWtBQWNBR3dBbEFCb0FCd0FiQUNZQUpRQUhBQndBSmdBYkFBY0FIQUFuQUNZQUJ3QWRBQ2NBSEFBSEFCMEFLQUFuQUFjQUhnQW9BQjBBQndBZUFDa0FLQUFIQUI4QUtRQWVBQWNBSHdBcUFDa0FCd0FnQUNvQUh3QUhBQ0FBS3dBcUFBY0FJZ0FzQUNFQUJ3QWlBQzBBTEFBSEFDTUFMUUFpQUFjQUl3QXVBQzBBQndBa0FDNEFJd0FIQUNRQUx3QXVBQWNBSlFBdkFDUUFCd0FsQURBQUx3QUhBQ1lBTUFBbEFBY0FKZ0F4QURBQUJ3QW5BREVBSmdBSEFDY0FNZ0F4QUFjQUtBQXlBQ2NBQndBb0FETUFNZ0FIQUNrQU13QW9BQWNBS1FBMEFETUFCd0FxQURRQUtRQUhBQ29BTlFBMEFBY0FLd0ExQUNvQUJ3QXJBRFlBTlFBSEFDMEFOd0FzQUFjQUxRQTRBRGNBQndBdUFEZ0FMUUFIQUM0QU9RQTRBQWNBTHdBNUFDNEFCd0F2QURvQU9RQUhBREFBT2dBdkFBY0FNQUE3QURvQUJ3QXhBRHNBTUFBSEFERUFQQUE3QUFjQU1nQThBREVBQndBeUFEMEFQQUFIQURNQVBRQXlBQWNBTXdBK0FEMEFCd0EwQUQ0QU13QUhBRFFBUHdBK0FBY0FOUUEvQURRQUJ3QTFBRUFBUHdBSEFEWUFRQUExQUFjQU5nQkJBRUFBQndCQ0FBSUFBUUFIQUVJQVF3QUNBQWNBUkFCREFFSUFCd0JFQUVVQVF3QUhBRVlBUlFCSEFBY0FSZ0JEQUVVQUJ3QUNBRVlBSUFBSEFBSUFRd0JHQUFjQVNBQkdBRWNBQndCSUFFa0FSZ0FIQUVrQUlBQkdBQWNBU1FBckFDQUFCd0JLQUVnQVN3QUhBRW9BU1FCSUFBY0FLd0JLQURZQUJ3QXJBRWtBU2dBSEFFd0FTd0JOQUFjQVRBQktBRXNBQndBMkFFd0FRUUFIQURZQVNnQk1BQWNBVGdCUEFGQUFCd0JPQUZFQVR3QUhBRkVBVWdCUEFBY0FVUUJUQUZJQUJ3QlRBRlFBVWdBSEFGTUFWUUJVQUFjQVZRQldBRlFBQndCVkFGY0FWZ0FIQUZjQVdBQldBQWNBVndCWkFGZ0FCd0JaQUZvQVdBQUhBRmtBV3dCYUFBY0FXd0JjQUZvQUJ3QmJBRjBBWEFBSEFGMEFYZ0JjQUFjQVhRQmZBRjRBQndCZkFHQUFYZ0FIQUY4QVlRQmdBQWNBWVFCaUFHQUFCd0JoQUdNQVlnQUhBR1FBWUFCaUFBY0FaQUJsQUdBQUJ3QmxBRjRBWUFBSEFHVUFaZ0JlQUFjQVpnQmNBRjRBQndCbUFHY0FYQUFIQUdjQVdnQmNBQWNBWndCb0FGb0FCd0JvQUZnQVdnQUhBR2dBYVFCWUFBY0FhUUJXQUZnQUJ3QnBBR29BVmdBSEFHb0FWQUJXQUFjQWFnQnJBRlFBQndCckFGSUFWQUFIQUdzQWJBQlNBQWNBYkFCUEFGSUFCd0JzQUcwQVR3QUhBRzBBVUFCUEFBY0FiUUJ1QUZBQUJ3QnZBR1VBWkFBSEFHOEFjQUJsQUFjQWNBQm1BR1VBQndCd0FIRUFaZ0FIQUhFQVp3Qm1BQWNBY1FCeUFHY0FCd0J5QUdnQVp3QUhBSElBY3dCb0FBY0Fjd0JwQUdnQUJ3QnpBSFFBYVFBSEFIUUFhZ0JwQUFjQWRBQjFBR29BQndCMUFHc0FhZ0FIQUhVQWRnQnJBQWNBZGdCc0FHc0FCd0IyQUhjQWJBQUhBSGNBYlFCc0FBY0Fkd0I0QUcwQUJ3QjRBRzRBYlFBSEFIZ0FlUUJ1QUFjQWVnQndBRzhBQndCNkFIc0FjQUFIQUhzQWNRQndBQWNBZXdCOEFIRUFCd0I4QUhJQWNRQUhBSHdBZlFCeUFBY0FmUUJ6QUhJQUJ3QjlBSDRBY3dBSEFINEFkQUJ6QUFjQWZnQi9BSFFBQndCL0FIVUFkQUFIQUg4QWdBQjFBQWNBZ0FCMkFIVUFCd0NBQUlFQWRnQUhBSUVBZHdCMkFBY0FnUUNDQUhjQUJ3Q0NBSGdBZHdBSEFJSUFnd0I0QUFjQWd3QjVBSGdBQndDREFJUUFlUUFIQUlVQWV3QjZBQWNBaFFDR0FIc0FCd0NHQUh3QWV3QUhBSVlBaHdCOEFBY0Fod0I5QUh3QUJ3Q0hBSWdBZlFBSEFJZ0FmZ0I5QUFjQWlBQ0pBSDRBQndDSkFIOEFmZ0FIQUlrQWlnQi9BQWNBaWdDQUFIOEFCd0NLQUlzQWdBQUhBSXNBZ1FDQUFBY0Fpd0NNQUlFQUJ3Q01BSUlBZ1FBSEFJd0FqUUNDQUFjQWpRQ0RBSUlBQndDTkFJNEFnd0FIQUk0QWhBQ0RBQWNBamdDUEFJUUFCd0JRQUpBQVRnQUhBRkFBa1FDUUFBY0FrUUNTQUpBQUJ3Q1JBSk1Ba2dBSEFKTUFsQUNWQUFjQWt3Q1JBSlFBQndDVUFGQUFiZ0FIQUpRQWtRQlFBQWNBbEFDV0FKVUFCd0NVQUpjQWxnQUhBRzRBbHdDVUFBY0FiZ0I1QUpjQUJ3Q1dBSmdBbVFBSEFKWUFsd0NZQUFjQW1BQjVBSVFBQndDWUFKY0FlUUFIQUprQW1nQ2JBQWNBbVFDWUFKb0FCd0NhQUlRQWp3QUhBSm9BbUFDRUFBY0FuQUNkQUo0QUJ3Q2NBSjhBblFBSEFLQUFvUUNpQUFjQW9BQ2pBS0VBQndDakFLUUFvUUFIQUtNQXBRQ2tBQWNBcFFDbUFLUUFCd0NsQUtjQXBnQUhBS2NBcUFDbUFBY0Fwd0NwQUtnQUJ3Q3FBS3NBckFBSEFLb0FyUUNyQUFjQXJRQ3VBS3NBQndDdEFLOEFyZ0FIQUxBQW53Q2NBQWNBc0FDeEFKOEFCd0N5QUtNQW9BQUhBTElBc3dDakFBY0Fzd0NsQUtNQUJ3Q3pBTFFBcFFBSEFMUUFwd0NsQUFjQXRBQzFBS2NBQndDMUFLa0Fwd0FIQUxVQXRnQ3BBQWNBdHdDdEFLb0FCd0MzQUxnQXJRQUhBTGdBcndDdEFBY0F1QUM1QUs4QUJ3QzZBTEFBbkFBSEFMb0F1d0N3QUFjQXZBQzdBTG9BQndDOEFMMEF1d0FIQUp3QXZBQzZBQWNBbkFDZUFMd0FCd0M0QUw0QXVRQUhBTGdBdndDK0FBY0F0d0MvQUxnQUJ3QzNBTUFBdndBSEFMWUF3UURDQUFjQXRnQzFBTUVBQndDMUFNTUF3UUFIQUxVQXRBRERBQWNBdEFERUFNTUFCd0MwQUxNQXhBQUhBTE1BeFFERUFBY0Fzd0N5QU1VQUJ3Q3hBTVlBeHdBSEFMRUFzQURHQUFjQXNBRElBTVlBQndDd0FMc0F5QUFIQUxzQXlRRElBQWNBdXdDOUFNa0FCd0RLQUxJQXl3QUhBTW9BeFFDeUFBY0F5d0NnQU13QUJ3RExBTElBb0FBSEFNd0FvZ0ROQUFjQXpBQ2dBS0lBQndETEFNNEF5Z0FIQU1zQXp3RE9BQWNBendESEFNNEFCd0RQQUxFQXh3QUhBTXdBendETEFBY0F6QURRQU04QUJ3RFFBTEVBendBSEFOQUFud0N4QUFjQXpRRFFBTXdBQndETkFORUEwQUFIQU5FQW53RFFBQWNBMFFDZEFKOEFCd0RTQU5NQTFBQUhBTklBMVFEVEFBY0ExQURXQU5jQUJ3RFVBTk1BMWdBSEFOZ0ExUURTQUFjQTJBRFpBTlVBQndEYUFOc0EzQUFIQU5vQTNRRGJBQWNBM2dEZEFOb0FCd0RlQU44QTNRQUhBTmNBM3dEZUFBY0Exd0RXQU44QUJ3RGdBTmtBMkFBSEFPQUE0UURaQUFjQTRnRGhBT0FBQndEaUFPTUE0UUFIQU9RQTR3RGlBQWNBNUFEbEFPTUFCd0RtQU9VQTVBQUhBT1lBNXdEbEFBY0E2QURwQU9vQUJ3RG9BT3NBNlFBSEFPc0E3QUR0QUFjQTZ3RG9BT3dBQndEcUFPNEE3d0FIQU9vQTZRRHVBQWNBN3dEbkFPWUFCd0R2QU80QTV3QUhBTGNBOEFEQUFBY0F0d0R4QVBBQUJ3RHhBTUlBOEFBSEFQRUF0Z0RDQUFjQXFnRHhBTGNBQndDcUFQSUE4UUFIQVBJQXRnRHhBQWNBOGdDcEFMWUFCd0NzQVBJQXFnQUhBS3dBOHdEeUFBY0E4d0NwQVBJQUJ3RHpBS2dBcVFBSEFQUUE0QUQxQUFjQTlBRGlBT0FBQndEMkFPSUE5QUFIQVBZQTVBRGlBQWNBOXdEa0FQWUFCd0QzQU9ZQTVBQUhBUGdBNWdEM0FBY0ErQUR2QU9ZQUJ3RDVBTzhBK0FBSEFQa0E2Z0R2QUFjQStnRHFBUGtBQndENkFPZ0E2Z0FIQVBzQTZBRDZBQWNBK3dEc0FPZ0FCd0QxQU5nQS9BQUhBUFVBNEFEWUFBY0EvQURTQVAwQUJ3RDhBTmdBMGdBSEFQMEExQUQrQUFjQS9RRFNBTlFBQndEK0FOY0Evd0FIQVA0QTFBRFhBQWNBL3dEZUFBQUJCd0QvQU5jQTNnQUhBQUFCMmdBQkFRY0FBQUhlQU5vQUJ3QUJBZHdBQWdFSEFBRUIyZ0RjQUFjQUF3RzVBTDRBQndBREFRUUJ1UUFIQUFVQjdRRHNBQWNBQlFFR0FlMEFCd0FIQWV3QSt3QUhBQWNCQlFIc0FBY0FDQUg3QVBvQUJ3QUlBUWNCK3dBSEFBa0IrZ0Q1QUFjQUNRRUlBZm9BQndBS0Fma0ErQUFIQUFvQkNRSDVBQWNBQ3dINEFQY0FCd0FMQVFvQitBQUhBQXdCOXdEMkFBY0FEQUVMQWZjQUJ3QU5BZllBOUFBSEFBMEJEQUgyQUFjQURnSDBBUFVBQndBT0FRMEI5QUFIQUE4QjlRRDhBQWNBRHdFT0FmVUFCd0FRQWZ3QS9RQUhBQkFCRHdIOEFBY0FFUUg5QVA0QUJ3QVJBUkFCL1FBSEFCSUIvZ0QvQUFjQUVnRVJBZjRBQndBVEFmOEFBQUVIQUJNQkVnSC9BQWNBRkFFQUFRRUJCd0FVQVJNQkFBRUhBQlVCQVFFQ0FRY0FGUUVVQVFFQkJ3QVdBUUlCM0FBSEFCWUJGUUVDQVFjQUZ3SGNBTnNBQndBWEFSWUIzQUFIQUJnQnlRQzlBQWNBR0FFWkFja0FCd0FhQWIwQXZBQUhBQm9CR0FHOUFBY0FHd0c4QUo0QUJ3QWJBUm9CdkFBSEFCd0JuZ0NkQUFjQUhBRWJBWjRBQndBZEFaMEEwUUFIQUIwQkhBR2RBQWNBSGdIUkFNMEFCd0FlQVIwQjBRQUhBQjhCelFDaUFBY0FId0VlQWMwQUJ3QWdBYUlBb1FBSEFDQUJId0dpQUFjQUlRR2hBS1FBQndBaEFTQUJvUUFIQUNJQnBBQ21BQWNBSWdFaEFhUUFCd0FqQWFZQXFBQUhBQ01CSWdHbUFBY0FKQUdvQVBNQUJ3QWtBU01CcUFBSEFDVUI4d0NzQUFjQUpRRWtBZk1BQndBbUFhd0Fxd0FIQUNZQkpRR3NBQWNBSndHckFLNEFCd0FuQVNZQnF3QUhBQ2dCcmdDdkFBY0FLQUVuQWE0QUJ3QUVBYThBdVFBSEFBUUJLQUd2QUFjQUtRRUVBUU1CQndBcEFTb0JCQUVIQUNzQkJnRUZBUWNBS3dFc0FRWUJCd0FxQVNnQkJBRUhBQ29CTFFFb0FRY0FMZ0VGQVFjQkJ3QXVBU3NCQlFFSEFDOEJCd0VJQVFjQUx3RXVBUWNCQndBd0FRZ0JDUUVIQURBQkx3RUlBUWNBTVFFSkFRb0JCd0F4QVRBQkNRRUhBRElCQ2dFTEFRY0FNZ0V4QVFvQkJ3QXpBUXNCREFFSEFETUJNZ0VMQVFjQU5BRU1BUTBCQndBMEFUTUJEQUVIQURVQkRRRU9BUWNBTlFFMEFRMEJCd0EyQVE0QkR3RUhBRFlCTlFFT0FRY0FOd0VQQVJBQkJ3QTNBVFlCRHdFSEFEZ0JFQUVSQVFjQU9BRTNBUkFCQndBNUFSRUJFZ0VIQURrQk9BRVJBUWNBT2dFU0FSTUJCd0E2QVRrQkVnRUhBRHNCRXdFVUFRY0FPd0U2QVJNQkJ3QThBUlFCRlFFSEFEd0JPd0VVQVFjQVBRRVZBUllCQndBOUFUd0JGUUVIQUQ0QkZnRVhBUWNBUGdFOUFSWUJCd0EvQVJrQkdBRUhBRDhCUUFFWkFRY0FRUUVZQVJvQkJ3QkJBVDhCR0FFSEFFSUJHZ0ViQVFjQVFnRkJBUm9CQndCREFSc0JIQUVIQUVNQlFnRWJBUWNBUkFFY0FSMEJCd0JFQVVNQkhBRUhBRVVCSFFFZUFRY0FSUUZFQVIwQkJ3QkdBUjRCSHdFSEFFWUJSUUVlQVFjQVJ3RWZBU0FCQndCSEFVWUJId0VIQUVnQklBRWhBUWNBU0FGSEFTQUJCd0JKQVNFQklnRUhBRWtCU0FFaEFRY0FTZ0VpQVNNQkJ3QktBVWtCSWdFSEFFc0JJd0VrQVFjQVN3RktBU01CQndCTUFTUUJKUUVIQUV3QlN3RWtBUWNBVFFFbEFTWUJCd0JOQVV3QkpRRUhBRTRCSmdFbkFRY0FUZ0ZOQVNZQkJ3QXRBU2NCS0FFSEFDMEJUZ0VuQVFjQVR3RlFBVkVCQndCUEFWSUJVQUVIQUZNQlZBRlZBUWNBVXdGV0FWUUJCd0JYQVZVQldBRUhBRmNCVXdGVkFRY0FXUUZZQVZvQkJ3QlpBVmNCV0FFSEFGc0JXZ0ZjQVFjQVd3RlpBVm9CQndCZEFWQUJYZ0VIQUYwQlVRRlFBUWNBWHdGVEFXQUJCd0JmQVZZQlV3RUhBR0FCVndGaEFRY0FZQUZUQVZjQkJ3QmhBVmtCWWdFSEFHRUJWd0ZaQVFjQVlnRmJBV01CQndCaUFWa0JXd0VIQUdRQlVnRmxBUWNBWkFGUUFWSUJCd0JrQVZRQlZnRUhBR1FCWlFGVUFRY0FaZ0ZXQVY4QkJ3Qm1BV1FCVmdFSEFGNEJaQUZtQVFjQVhnRlFBV1FCQndCbkFXZ0JhUUVIQUdjQmFnRm9BUWNBYXdGcEFXd0JCd0JyQVdjQmFRRUhBRzBCYmdGdkFRY0FiUUZ3QVc0QkJ3QnhBV2NCY2dFSEFIRUJhZ0ZuQVFjQWNnRnJBWE1CQndCeUFXY0Jhd0VIQUhRQmRRRjJBUWNBZEFGM0FYVUJCd0J6QVhnQmVRRUhBSE1CYXdGNEFRY0FlUUYzQVhRQkJ3QjVBWGdCZHdFSEFHd0JlQUZyQVFjQWJBRjZBWGdCQndCN0FYQUJmQUVIQUhzQmJnRndBUWNBZlFGK0FYOEJCd0I5QVlBQmZnRUhBSUVCZ0FGOUFRY0FnUUdDQVlBQkJ3Q0RBWUVCaEFFSEFJTUJnZ0dCQVFjQWRRR0VBWVVCQndCMUFZTUJoQUVIQUhZQmhnR0hBUWNBZGdGMUFZWUJCd0NIQVZJQlR3RUhBSWNCaGdGU0FRY0FoUUdHQVhVQkJ3Q0ZBWWdCaGdFSEFJZ0JVZ0dHQVFjQWlBRmxBVklCQndDRUFZZ0JoUUVIQUlRQmlRR0lBUWNBaVFGbEFZZ0JCd0NKQVZRQlpRRUhBSUVCaVFHRUFRY0FnUUdLQVlrQkJ3Q0tBVlFCaVFFSEFJb0JWUUZVQVFjQWZRR0tBWUVCQndCOUFZc0JpZ0VIQUlzQlZRR0tBUWNBaXdGWUFWVUJCd0IvQVlzQmZRRUhBSDhCakFHTEFRY0FqQUZZQVlzQkJ3Q01BVm9CV0FFSEFJMEJqZ0dQQVFjQWpRR1FBWTRCQndCYUFaQUJqUUVIQUZvQmpBR1FBUWNBV2dHUkFWd0JCd0JhQVkwQmtRRUhBSklCWEFHVEFRY0FrZ0ZiQVZ3QkJ3Q1JBWThCbEFFSEFKRUJqUUdQQVFjQWtRR1RBVndCQndDUkFaVUJrd0VIQUl3QmpnR1FBUWNBakFHV0FZNEJCd0IrQVl3QmZ3RUhBSDRCbGdHTUFRY0Fsd0dUQVpnQkJ3Q1hBWklCa3dFSEFKSUJZd0ZiQVFjQWtnR1pBV01CQndDYUFaTUJsUUVIQUpvQm1BR1RBUWNBbXdGakFaa0JCd0NiQVp3Qll3RUhBSndCWWdGakFRY0FuQUdkQVdJQkJ3Q2RBV0VCWWdFSEFKMEJuZ0ZoQVFjQW5nRmdBV0VCQndDZUFaOEJZQUVIQUo4Qlh3RmdBUWNBbndHZ0FWOEJCd0NnQVdZQlh3RUhBS0FCb1FGbUFRY0FvUUZlQVdZQkJ3Q2hBYUlCWGdFSEFLSUJYUUZlQVFjQW9nR2pBVjBCQndDa0FVOEJVUUVIQUtRQnBRRlBBUWNBcFFHSEFVOEJCd0NsQWFZQmh3RUhBS1lCZGdHSEFRY0FwZ0duQVhZQkJ3Q25BWFFCZGdFSEFLY0JxQUYwQVFjQXFBRjVBWFFCQndDb0Fha0JlUUVIQUtrQmN3RjVBUWNBcVFHcUFYTUJCd0NxQVhJQmN3RUhBS29CcXdGeUFRY0Fxd0Z4QVhJQkJ3Q3JBYXdCY1FFSEFKSUJtd0daQVFjQWtnR1hBWnNCQndDdEFhNEJyd0VIQUswQnNBR3VBUWNBc1FHeUFZTUJCd0N4QWJNQnNnRUhBTE1CdEFHeUFRY0Fzd0cxQWJRQkJ3QjZBYk1Cc1FFSEFIb0J0Z0d6QVFjQXRnRzFBYk1CQndDMkFiY0J0UUVIQUd3QnRnRjZBUWNBYkFHNEFiWUJCd0M0QWJjQnRnRUhBTGdCdVFHM0FRY0FhUUc0QVd3QkJ3QnBBYm9CdUFFSEFMb0J1UUc0QVFjQXVnRzdBYmtCQndCb0Fib0JhUUVIQUdnQnZBRzZBUWNBdkFHN0Fib0JCd0M4QWIwQnV3RUhBSU1CdmdHQ0FRY0Fnd0d5QWI0QkJ3Q3lBYjhCdmdFSEFMSUJ0QUcvQVFjQWdnSEFBWUFCQndDQ0FiNEJ3QUVIQUw0QndRSEFBUWNBdmdHL0FjRUJCd0NBQWNJQmZnRUhBSUFCd0FIQ0FRY0F3QUhEQWNJQkJ3REFBY0VCd3dFSEFINEJ4QUdXQVFjQWZnSENBY1FCQndEQ0FjVUJ4QUVIQU1JQnd3SEZBUWNBbGdIR0FZNEJCd0NXQWNRQnhnRUhBTVFCeHdIR0FRY0F4QUhGQWNjQkJ3Q09BY2dCandFSEFJNEJ4Z0hJQVFjQXhnSEpBY2dCQndER0FjY0J5UUVIQUk4QnlnR1VBUWNBandISUFjb0JCd0RJQWNzQnlnRUhBTWdCeVFITEFRY0FsQUhNQWMwQkJ3Q1VBY29CekFFSEFNb0J6Z0hNQVFjQXlnSExBYzRCQndETkFjOEIwQUVIQU0wQnpBSFBBUWNBekFIUkFjOEJCd0RNQWM0QjBRRUhBTklCdlFIVEFRY0EwZ0c3QWIwQkJ3RFNBYmtCdXdFSEFOSUIxQUc1QVFjQTFBRzNBYmtCQndEVUFkVUJ0d0VIQU5VQnRRRzNBUWNBMVFIV0FiVUJCd0RXQWJRQnRRRUhBTllCMXdHMEFRY0EyQUhGQWNNQkJ3RFlBZGtCeFFFSEFOa0J4d0hGQVFjQTJRSGFBY2NCQndEYUFja0J4d0VIQU5vQjJ3SEpBUWNBMndITEFja0JCd0RiQWR3Qnl3RUhBTndCemdITEFRY0EzQUhkQWM0QkJ3RGRBZEVCemdFSEFOMEIzZ0hSQVFjQTF3Ry9BYlFCQndEWEFkOEJ2d0VIQU44QndRRy9BUWNBM3dIZ0FjRUJCd0RnQWNNQndRRUhBT0FCMkFIREFRY0EyZ0hoQWRzQkJ3RGFBZUlCNFFFSEFOa0I0Z0hhQVFjQTJRSGpBZUlCQndEWUFlTUIyUUVIQU5nQjVBSGpBUWNBNEFIa0FkZ0JCd0RnQWVVQjVBRUhBTjhCNVFIZ0FRY0Ezd0htQWVVQkJ3RFhBZVlCM3dFSEFOY0I1d0htQVFjQTFnSG5BZGNCQndEV0FlZ0I1d0VIQU5VQjZBSFdBUWNBMVFIcEFlZ0JCd0RVQWVrQjFRRUhBTlFCNmdIcEFRY0EwZ0hxQWRRQkJ3RFNBZXNCNmdFSEFOTUI2d0hTQVFjQTB3SHNBZXNCQndEYkFlMEIzQUVIQU5zQjRRSHRBUWNBM0FIdUFkMEJCd0RjQWUwQjdnRUhBTjBCN3dIZUFRY0EzUUh1QWU4QkJ3RHdBZXNCN0FFSEFQQUI4UUhyQVFjQThRSHFBZXNCQndEeEFmSUI2Z0VIQVBNQjdBSFRBUWNBOHdId0Fld0JCd0QwQWRNQnZRRUhBUFFCOHdIVEFRY0E5UUc5QWJ3QkJ3RDFBZlFCdlFFSEFQWUJ2QUZvQVFjQTlnSDFBYndCQndEM0FXZ0JhZ0VIQVBjQjlnRm9BUWNBK0FGcUFYRUJCd0Q0QWZjQmFnRUhBUGtCY1FHc0FRY0ErUUg0QVhFQkJ3RDZBYXdCcXdFSEFQb0IrUUdzQVFjQSt3R3JBYW9CQndEN0Fmb0Jxd0VIQVB3QnFnR3BBUWNBL0FIN0Fhb0JCd0Q5QWFrQnFBRUhBUDBCL0FHcEFRY0EvZ0dvQWFjQkJ3RCtBZjBCcUFFSEFQOEJwd0dtQVFjQS93SCtBYWNCQndBQUFxWUJwUUVIQUFBQy93R21BUWNBQVFLbEFhUUJCd0FCQWdBQ3BRRUhBQUlDb3dHaUFRY0FBZ0lEQXFNQkJ3QUVBcUlCb1FFSEFBUUNBZ0tpQVFjQUJRS2hBYUFCQndBRkFnUUNvUUVIQUFZQ29BR2ZBUWNBQmdJRkFxQUJCd0FIQXA4Qm5nRUhBQWNDQmdLZkFRY0FDQUtlQVowQkJ3QUlBZ2NDbmdFSEFBa0NuUUdjQVFjQUNRSUlBcDBCQndBS0Fwd0Jtd0VIQUFvQ0NRS2NBUWNBQ3dLYkFaY0JCd0FMQWdvQ213RUhBQXdDbHdHWUFRY0FEQUlMQXBjQkJ3QU5BcG9CMEFFSEFBMENEZ0thQVFjQUR3TFFBYzhCQndBUEFnMEMwQUVIQUJBQ3p3SFJBUWNBRUFJUEFzOEJCd0FSQXRFQjNnRUhBQkVDRUFMUkFRY0FFZ0xlQWU4QkJ3QVNBaEVDM2dFSEFCTUM3d0h1QVFjQUV3SVNBdThCQndBVUF1NEI3UUVIQUJRQ0V3THVBUWNBRlFMdEFlRUJCd0FWQWhRQzdRRUhBQllDNFFIaUFRY0FGZ0lWQXVFQkJ3QVhBdUlCNHdFSEFCY0NGZ0xpQVFjQUdBTGpBZVFCQndBWUFoY0M0d0VIQUJrQzVBSGxBUWNBR1FJWUF1UUJCd0FhQXVVQjVnRUhBQm9DR1FMbEFRY0FHd0xtQWVjQkJ3QWJBaG9DNWdFSEFCd0M1d0hvQVFjQUhBSWJBdWNCQndBZEF1Z0I2UUVIQUIwQ0hBTG9BUWNBOGdIcEFlb0JCd0R5QVIwQzZRRUhBQjRDOFFId0FRY0FIZ0lmQXZFQkJ3QWZBdklCOFFFSEFCOENJQUx5QVFjQUlRTHdBZk1CQndBaEFoNEM4QUVIQUNBQ0hRTHlBUWNBSUFJaUFoMENCd0FqQXZNQjlBRUhBQ01DSVFMekFRY0FKQUwwQWZVQkJ3QWtBaU1DOUFFSEFDVUM5UUgyQVFjQUpRSWtBdlVCQndBbUF2WUI5d0VIQUNZQ0pRTDJBUWNBSndMM0FmZ0JCd0FuQWlZQzl3RUhBQ2dDK0FINUFRY0FLQUluQXZnQkJ3QXBBdmtCK2dFSEFDa0NLQUw1QVFjQUtnTDZBZnNCQndBcUFpa0MrZ0VIQUNzQyt3SDhBUWNBS3dJcUF2c0JCd0FzQXZ3Qi9RRUhBQ3dDS3dMOEFRY0FMUUw5QWY0QkJ3QXRBaXdDL1FFSEFDNEMvZ0gvQVFjQUxnSXRBdjRCQndBdkF2OEJBQUlIQUM4Q0xnTC9BUWNBTUFJQUFnRUNCd0F3QWk4Q0FBSUhBREVDQXdJQ0FnY0FNUUl5QWdNQ0J3QXpBZ0lDQkFJSEFETUNNUUlDQWdjQU5BSUVBZ1VDQndBMEFqTUNCQUlIQURVQ0JRSUdBZ2NBTlFJMEFnVUNCd0EyQWdZQ0J3SUhBRFlDTlFJR0FnY0FOd0lIQWdnQ0J3QTNBallDQndJSEFEZ0NDQUlKQWdjQU9BSTNBZ2dDQndBNUFna0NDZ0lIQURrQ09BSUpBZ2NBT2dJS0Fnc0NCd0E2QWprQ0NnSUhBRHNDQ3dJTUFnY0FPd0k2QWdzQ0J3QThBZzRDRFFJSEFEd0NQUUlPQWdjQVBnSU5BZzhDQndBK0Fqd0NEUUlIQUQ4Q0R3SVFBZ2NBUHdJK0FnOENCd0JBQWhBQ0VRSUhBRUFDUHdJUUFnY0FRUUlSQWhJQ0J3QkJBa0FDRVFJSEFFSUNFZ0lUQWdjQVFnSkJBaElDQndCREFoTUNGQUlIQUVNQ1FnSVRBZ2NBUkFJVUFoVUNCd0JFQWtNQ0ZBSUhBRVVDRlFJV0FnY0FSUUpFQWhVQ0J3QkdBaFlDRndJSEFFWUNSUUlXQWdjQVJ3SVhBaGdDQndCSEFrWUNGd0lIQUVnQ0dBSVpBZ2NBU0FKSEFoZ0NCd0JKQWhrQ0dnSUhBRWtDU0FJWkFnY0FTZ0lhQWhzQ0J3QktBa2tDR2dJSEFFc0NHd0ljQWdjQVN3SktBaHNDQndBaUFod0NIUUlIQUNJQ1N3SWNBZ2NBd3dCTUFzRUFCd0REQUUwQ1RBSUhBTVFBVFFMREFBY0F4QUJPQWswQ0J3REZBRTRDeEFBSEFNVUFUd0pPQWdjQXlnQlBBc1VBQndES0FGQUNUd0lIQU00QVVBTEtBQWNBemdCUkFsQUNCd0RIQUZFQ3pnQUhBTWNBVWdKUkFnY0F4Z0JTQXNjQUJ3REdBRk1DVWdJSEFNZ0FVd0xHQUFjQXlBQlVBbE1DQndESkFGUUN5QUFIQU1rQVZRSlVBZ2NBR1FGVkFza0FCd0FaQVZZQ1ZRSUhBRUFCVmdJWkFRY0FRQUZYQWxZQ0J3REJBRmdDd2dBSEFNRUFUQUpZQWdjQXdnQlpBdkFBQndEQ0FGZ0NXUUlIQVBBQVdnTEFBQWNBOEFCWkFsb0NCd0RBQUZzQ3Z3QUhBTUFBV2dKYkFnY0F2d0JjQXI0QUJ3Qy9BRnNDWEFJSEFMNEFYUUlEQVFjQXZnQmNBbDBDQndBREFWNENLUUVIQUFNQlhRSmVBZ2NBWHdKZ0FtRUNCd0JmQW1JQ1lBSUhBR01DNXdCa0FnY0FZd0xsQU9jQUJ3Qk5BbU1DVEFJSEFFMENaUUpqQWdjQVpRTGxBR01DQndCbEF1TUE1UUFIQUU0Q1pRSk5BZ2NBVGdKbUFtVUNCd0JtQXVNQVpRSUhBR1lDNFFEakFBY0FUd0ptQWs0Q0J3QlBBbWNDWmdJSEFHY0M0UUJtQWdjQVp3TFpBT0VBQndCUUFtY0NUd0lIQUZBQ2FBSm5BZ2NBYUFMWkFHY0NCd0JvQXRVQTJRQUhBRkVDYUFKUUFnY0FVUUpwQW1nQ0J3QnBBdFVBYUFJSEFHa0Mwd0RWQUFjQVVnSnBBbEVDQndCU0Ftb0NhUUlIQUdvQzB3QnBBZ2NBYWdMV0FOTUFCd0JUQW1vQ1VnSUhBRk1DYXdKcUFnY0Fhd0xXQUdvQ0J3QnJBdDhBMWdBSEFGUUNhd0pUQWdjQVZBSnNBbXNDQndCc0F0OEFhd0lIQUd3QzNRRGZBQWNBVlFKc0FsUUNCd0JWQW0wQ2JBSUhBRzBDM1FCc0FnY0FiUUxiQU4wQUJ3QldBbTBDVlFJSEFGWUNiZ0p0QWdjQWJnTGJBRzBDQndCdUFoY0Iyd0FIQUZjQ2JnSldBZ2NBVndKdkFtNENCd0J2QWhjQmJnSUhBRzhDUGdFWEFRY0FZUUp3QW5FQ0J3QmhBbUFDY0FJSEFHUUM3Z0J5QWdjQVpBTG5BTzRBQndCWkFuTUNXZ0lIQUZrQ2NnSnpBZ2NBY2dMcEFITUNCd0J5QXU0QTZRQUhBRm9DZEFKYkFnY0FXZ0p6QW5RQ0J3QnpBdXNBZEFJSEFITUM2UURyQUFjQVd3SjFBbHdDQndCYkFuUUNkUUlIQUhRQzdRQjFBZ2NBZEFMckFPMEFCd0JjQW5ZQ1hRSUhBRndDZFFKMkFnY0FkUUlHQVhZQ0J3QjFBdTBBQmdFSEFGMENkd0plQWdjQVhRSjJBbmNDQndCMkFpd0Jkd0lIQUhZQ0JnRXNBUWNBWUFKNEFuQUNCd0JnQW5rQ2VBSUhBSGtDY2dKNEFnY0FlUUprQW5JQ0J3QmlBbmtDWUFJSEFHSUNlZ0o1QWdjQWVnSmtBbmtDQndCNkFtTUNaQUlIQUY4Q2VnSmlBZ2NBWHdKN0Fub0NCd0I3QW1NQ2VnSUhBSHNDVEFKakFnY0FZUUo3QWw4Q0J3QmhBbndDZXdJSEFId0NUQUo3QWdjQWZBSllBa3dDQndCeEFud0NZUUlIQUhFQ2ZRSjhBZ2NBZlFKWUFud0NCd0I5QWxrQ1dBSUhBSEFDZlFKeEFnY0FjQUo0QW4wQ0J3QjRBbGtDZlFJSEFIZ0NjZ0paQWdjQWR3RitBblVCQndCM0FYOENmZ0lIQUg4Q2JRRitBZ2NBZndKd0FXMEJCd0I0QVg4Q2R3RUhBSGdCZ0FKL0FnY0FnQUp3QVg4Q0J3Q0FBbndCY0FFSEFIb0JnQUo0QVFjQWVnR0JBb0FDQndDQkFud0JnQUlIQUlFQ2V3RjhBUWNBc1FHQkFub0JCd0N4QVlJQ2dRSUhBSUlDZXdHQkFnY0FnZ0p1QVhzQkJ3Q0RBWUlDc1FFSEFJTUJnd0tDQWdjQWd3SnVBWUlDQndDREFtOEJiZ0VIQUhVQmd3S0RBUWNBZFFGK0FvTUNCd0IrQW04Qmd3SUhBSDRDYlFGdkFRY0FoQUtGQW9ZQ0J3Q0VBb2NDaFFJSEFJZ0NpUUtLQWdjQWlBS0xBb2tDQndDTUFvc0NpQUlIQUl3Q2pRS0xBZ2NBamdLTkFvd0NCd0NPQW84Q2pRSUhBSkFDandLT0FnY0FrQUtSQW84Q0J3Q1NBcE1DbEFJSEFKSUNsUUtUQWdjQWxnS1ZBcElDQndDV0FwY0NsUUlIQUljQ21BS0ZBZ2NBaHdLWkFwZ0NCd0NMQXBvQ2lRSUhBSXNDbXdLYUFnY0FqUUtiQW9zQ0J3Q05BcHdDbXdJSEFJOENuQUtOQWdjQWp3S2RBcHdDQndDUkFwMENqd0lIQUpFQ25nS2RBZ2NBbFFLZkFwTUNCd0NWQXFBQ253SUhBSmNDb0FLVkFnY0Fsd0toQXFBQ0J3Q1lBcUlDaFFJSEFKZ0Nvd0tpQWdjQW93S2tBcUlDQndDakFxVUNwQUlIQUtRQ2hRS2lBZ2NBcEFLR0FvVUNCd0NtQXFBQ29RSUhBS1lDcHdLZ0FnY0Fwd0tmQXFBQ0J3Q25BcWdDbndJSEFLa0NuZ0txQWdjQXFRS2RBcDRDQndDckFwMENxUUlIQUtzQ25BS2RBZ2NBckFLY0Fxc0NCd0NzQXBzQ25BSUhBSzBDbXdLc0FnY0FyUUthQXBzQ0J3Q3VBcGtDcndJSEFLNENtQUtaQWdjQXNBS1lBcTRDQndDd0FxTUNtQUlIQUxFQ293S3dBZ2NBc1FLbEFxTUNCd0NhQXJJQ3N3SUhBSm9DclFLeUFnY0FpUUt6QXJRQ0J3Q0pBcG9Dc3dJSEFJb0N0QUsxQWdjQWlnS0pBclFDQndDMkFyTUNzZ0lIQUxZQ3R3S3pBZ2NBcndLM0FyWUNCd0N2QXBrQ3R3SUhBTGNDdEFLekFnY0F0d0s0QXJRQ0J3Q1pBcmdDdHdJSEFKa0Nod0s0QWdjQXVBSzFBclFDQndDNEFya0N0UUlIQUljQ3VRSzRBZ2NBaHdLRUFya0NCd0M2QXJzQ3ZBSUhBTG9DdlFLN0FnY0F2Z0s4QXI4Q0J3QytBcm9DdkFJSEFMMEN3QUs3QWdjQXZRTEJBc0FDQndEQ0FzTUN4QUlIQU1JQ3hRTERBZ2NBeFFMR0FzTUNCd0RGQXNjQ3hnSUhBTWNDdndMR0FnY0F4d0srQXI4Q0J3REJBc2dDd0FJSEFNRUN5UUxJQWdjQXlRTEtBc2dDQndESkFzc0N5Z0lIQU1zQ3pBTEtBZ2NBeXdMTkFzd0NCd0ROQXM0Q3pBSUhBTTBDendMT0FnY0EwQUxSQXRJQ0J3RFFBdE1DMFFJSEFOUUMwd0xWQWdjQTFBTFJBdE1DQndEV0F0SUMxd0lIQU5ZQzBBTFNBZ2NBendMWEFzNENCd0RQQXRZQzF3SUhBTmdDbndLb0FnY0EyQUxaQXA4Q0J3Q3FBdGtDMkFJSEFLb0NuZ0xaQWdjQTJRS1RBcDhDQndEWkF0b0Nrd0lIQUo0QzJnTFpBZ2NBbmdLUkF0b0NCd0RhQXBRQ2t3SUhBTm9DMndLVUFnY0FrUUxiQXRvQ0J3Q1JBcEFDMndJSEFNZ0MzQUxkQWdjQXlBTEtBdHdDQndES0F0NEMzQUlIQU1vQ3pBTGVBZ2NBekFMZkF0NENCd0RNQXM0QzN3SUhBTTRDNEFMZkFnY0F6Z0xYQXVBQ0J3RFhBdUVDNEFJSEFOY0MwZ0xoQWdjQTBnTGlBdUVDQndEU0F0RUM0Z0lIQU5FQzR3TGlBZ2NBMFFMVUF1TUNCd0RBQXQwQzVBSUhBTUFDeUFMZEFnY0F1d0xrQXVVQ0J3QzdBc0FDNUFJSEFMd0M1UUxtQWdjQXZBSzdBdVVDQndDL0F1WUM1d0lIQUw4Q3ZBTG1BZ2NBeGdMbkF1Z0NCd0RHQXI4QzV3SUhBTU1DNkFMcEFnY0F3d0xHQXVnQ0J3REVBdWtDNmdJSEFNUUN3d0xwQWdjQW9RTHJBcVlDQndDaEF1d0M2d0lIQU5VQzdRTFVBZ2NBMVFMdUF1MENCd0RVQXU4QzR3SUhBTlFDN1FMdkFnY0E0d0x3QXVJQ0J3RGpBdThDOEFJSEFPSUM4UUxoQWdjQTRnTHdBdkVDQndEaEF2SUM0QUlIQU9FQzhRTHlBZ2NBNEFMekF0OENCd0RnQXZJQzh3SUhBTjhDOUFMZUFnY0Ezd0x6QXZRQ0J3RGVBdlVDM0FJSEFONEM5QUwxQWdjQTNBTDJBdDBDQndEY0F2VUM5Z0lIQU4wQzl3TGtBZ2NBM1FMMkF2Y0NCd0RrQXZnQzVRSUhBT1FDOXdMNEFnY0E1UUw1QXVZQ0J3RGxBdmdDK1FJSEFPWUMrZ0xuQWdjQTVnTDVBdm9DQndEbkF2c0M2QUlIQU9jQytnTDdBZ2NBNkFMOEF1a0NCd0RvQXZzQy9BSUhBT2tDL1FMcUFnY0E2UUw4QXYwQ0J3RHFBdjRDeEFJSEFPb0MvUUwrQWdjQXhBTC9Bc0lDQndERUF2NEMvd0lIQUxFQ0FBT2xBZ2NBc1FJQkF3QURCd0NsQWdJRHBBSUhBS1VDQUFNQ0F3Y0FwQUlEQTRZQ0J3Q2tBZ0lEQXdNSEFJWUNCQU9FQWdjQWhnSURBd1FEQndDRUFnVUR1UUlIQUlRQ0JBTUZBd2NBdVFJR0E3VUNCd0M1QWdVREJnTUhBTFVDQndPS0FnY0F0UUlHQXdjREJ3Q0tBZ2dEaUFJSEFJb0NCd01JQXdjQWlBSUpBNHdDQndDSUFnZ0RDUU1IQUl3Q0NnT09BZ2NBakFJSkF3b0RCd0NPQWdzRGtBSUhBSTRDQ2dNTEF3Y0FrQUlNQTlzQ0J3Q1FBZ3NEREFNSEFOc0NEUU9VQWdjQTJ3SU1BdzBEQndDVUFnNERrZ0lIQUpRQ0RRTU9Bd2NBa2dJUEE1WUNCd0NTQWc0RER3TUhBSllDRUFPWEFnY0FsZ0lQQXhBREJ3Q1hBdXdDb1FJSEFKY0NFQVBzQWdjQTdBSVJBK3NDQndEc0FoSURFUU1IQU80Q0V3UHRBZ2NBN2dJVUF4TURCd0FRQXhJRDdBSUhBQkFERlFNU0F3Y0E3UUlXQSs4Q0J3RHRBaE1ERmdNSEFPOENGd1B3QWdjQTd3SVdBeGNEQndEd0FoZ0Q4UUlIQVBBQ0Z3TVlBd2NBOFFJWkEvSUNCd0R4QWhnREdRTUhBUElDR2dQekFnY0E4Z0laQXhvREJ3RHpBaHNEOUFJSEFQTUNHZ01iQXdjQTlBSWNBL1VDQndEMEFoc0RIQU1IQVBVQ0hRUDJBZ2NBOVFJY0F4MERCd0QyQWg0RDl3SUhBUFlDSFFNZUF3Y0E5d0lmQS9nQ0J3RDNBaDRESHdNSEFQZ0NJQVA1QWdjQStBSWZBeUFEQndENUFpRUQrZ0lIQVBrQ0lBTWhBd2NBK2dJaUEvc0NCd0Q2QWlFRElnTUhBUHNDSXdQOEFnY0Erd0lpQXlNREJ3RDhBaVFEL1FJSEFQd0NJd01rQXdjQS9RSWxBLzRDQndEOUFpUURKUU1IQVA0Q0pnUC9BZ2NBL2dJbEF5WURCd0FCQXljREFBTUhBQUVES0FNbkF3Y0FBQU1wQXdJREJ3QUFBeWNES1FNSEFBSURLZ01EQXdjQUFnTXBBeW9EQndBREF5c0RCQU1IQUFNREtnTXJBd2NBQkFNc0F3VURCd0FFQXlzRExBTUhBQVVETFFNR0F3Y0FCUU1zQXkwREJ3QUdBeTREQndNSEFBWURMUU11QXdjQUJ3TXZBd2dEQndBSEF5NERMd01IQUFnRE1BTUpBd2NBQ0FNdkF6QURCd0FKQXpFRENnTUhBQWtETUFNeEF3Y0FDZ015QXdzREJ3QUtBekVETWdNSEFBc0RNd01NQXdjQUN3TXlBek1EQndBTUF6UUREUU1IQUF3RE13TTBBd2NBRFFNMUF3NERCd0FOQXpRRE5RTUhBQTRETmdNUEF3Y0FEZ00xQXpZREJ3QVBBeFVERUFNSEFBOEROZ01WQXdjQXJnRTNBNjhCQndDdUFUZ0ROd01IQURnRE9RTTNBd2NBT0FNNkF6a0RCd0E3QXp3RFBRTUhBRHNEUGdNOEF3Y0FyUUUrQXprREJ3Q3RBVHdEUGdNSEFEMERQd05BQXdjQVBRTThBejhEQndDdkFUd0RyUUVIQUs4QlB3TThBd2NBUHdOQkEwQURCd0EvQTBJRFFRTUhBRGNEUHdPdkFRY0FOd05DQXo4REJ3QkNBenNEUVFNSEFFSURQZ003QXdjQU9RTkNBemNEQndBNUF6NERRZ01IQUVNRFJBTkZBd2NBUXdOR0EwUURCd0JIQTBVRFNBTUhBRWNEUXdORkF3Y0FSQU5KQTBvREJ3QkVBMFlEU1FNSEFFb0RSd05JQXdjQVNnTkpBMGNEQndCREEwc0RSZ01IQUVNRFRBTkxBd2NBVFFOTUEwNERCd0JOQTBzRFRBTUhBRTREVHdOUUF3Y0FUZ05NQTA4REJ3QkdBMUVEU1FNSEFFWURTd05SQXdjQVVnTkxBMDBEQndCU0ExRURTd01IQUVrRFR3TkhBd2NBU1FOUkEwOERCd0JRQTFFRFVnTUhBRkFEVHdOUkF3Y0FVd05VQTFVREJ3QlRBMVlEVkFNSEFGVURWd05ZQXdjQVZRTlVBMWNEQndCWkExVURXQU1IQUZrRFV3TlZBd2NBV2dOVEExa0RCd0JhQTFZRFV3TUhBRllEVndOVUF3Y0FWZ05hQTFjREJ3QmJBMXdEWFFNSEFGc0RYZ05jQXdjQVhnTmZBMXdEQndCZUEyQURYd01IQUY4RFlRTmlBd2NBWHdOZ0EyRURCd0JpQTFzRFhRTUhBR0lEWVFOYkF3Y0FZd05rQTJVREJ3QmpBMllEWkFNSEFHY0RaUU5vQXdjQVp3TmpBMlVEQndCcEEyY0RhQU1IQUdrRGFnTm5Bd2NBWkFOcUEya0RCd0JrQTJZRGFnTUhBR3NEWFFOY0F3Y0Fhd05zQTEwREJ3QnNBMlVEWkFNSEFHd0Rhd05sQXdjQWJRTmNBMThEQndCdEEyc0RYQU1IQUdzRGFBTmxBd2NBYXdOdEEyZ0RCd0JpQTIwRFh3TUhBR0lEYmdOdEF3Y0FiUU5wQTJnREJ3QnRBMjREYVFNSEFGMERiZ05pQXdjQVhRTnNBMjREQndCdUEyUURhUU1IQUc0RGJBTmtBd2NBV3dOdkExNERCd0JiQTNBRGJ3TUhBRjREY1FOZ0F3Y0FYZ052QTNFREJ3QnlBMXNEWVFNSEFISURjQU5iQXdjQWNRTmhBMkFEQndCeEEzSURZUU1IQUhNRGJ3TndBd2NBY3dOMEEyOERCd0IwQTFnRFZ3TUhBSFFEY3dOWUF3Y0FkUU5YQTFvREJ3QjFBM1FEVndNSEFIWURjQU55QXdjQWRnTnpBM0FEQndCekExa0RXQU1IQUhNRGRnTlpBd2NBZFFOeUEzRURCd0IxQTNZRGNnTUhBSFlEV2dOWkF3Y0FkZ04xQTFvREJ3QjNBME1EZUFNSEFIY0RUQU5EQXdjQWVRTk1BM2NEQndCNUEwOERUQU1IQUVjRGVRTjZBd2NBUndOUEEza0RCd0JEQTNvRGVBTUhBRU1EUndONkF3Y0FjUU43QTN3REJ3QnhBMjhEZXdNSEFIVURmQU45QXdjQWRRTnhBM3dEQndCK0EzVURmUU1IQUg0RGRBTjFBd2NBZXdOMEEzNERCd0I3QTI4RGRBTUhBSDhEZUFPQUF3Y0Fmd04zQTNnREJ3Q0JBM2NEZndNSEFJRURlUU4zQXdjQWVnT0JBNElEQndCNkEza0RnUU1IQUhnRGdnT0FBd2NBZUFONkE0SURCd0I4QTRNRGhBTUhBSHdEZXdPREF3Y0FmUU9FQTRVREJ3QjlBM3dEaEFNSEFJWURmUU9GQXdjQWhnTitBMzBEQndDREEzNERoZ01IQUlNRGV3TitBd2NBT2dPSEE3QUJCd0E2QTRnRGh3TUhBTEFCaVFPdUFRY0FzQUdIQTRrREJ3Q3VBWW9ET0FNSEFLNEJpUU9LQXdjQU9BT0lBem9EQndBNEE0b0RpQU1IQUdNRGl3Tm1Bd2NBWXdPTUE0c0RCd0JuQTR3RFl3TUhBR2NEalFPTUF3Y0FhZ09OQTJjREJ3QnFBNDREalFNSEFHWURqZ05xQXdjQVpnT0xBNDREQndDSUE0OERod01IQUlnRGtBT1BBd2NBa1FPUUE1SURCd0NSQTQ4RGtBTUhBSk1EandPUkF3Y0Frd09VQTQ4REJ3Q0pBNVVEaWdNSEFJa0RsQU9WQXdjQWxnT1VBNU1EQndDV0E1VURsQU1IQUlvRGtBT0lBd2NBaWdPVkE1QURCd0NTQTVVRGxnTUhBSklEa0FPVkF3Y0Fsd09MQTR3REJ3Q1hBNWdEaXdNSEFKa0Rsd09hQXdjQW1RT1lBNWNEQndDYUE1c0RuQU1IQUpvRGx3T2JBd2NBblFPTkE0NERCd0NkQTVzRGpRTUhBSndEblFPZUF3Y0FuQU9iQTUwREJ3Q1lBNDREaXdNSEFKZ0RuUU9PQXdjQW5nT1lBNWtEQndDZUE1MERtQU1IQUpRRG53T2dBd2NBbEFPSkE1OERCd0NQQTZBRG9RTUhBSThEbEFPZ0F3Y0FvZ09QQTZFREJ3Q2lBNGNEandNSEFKOERod09pQXdjQW53T0pBNGNEQndDakE0MERwQU1IQUtNRGpBT05Bd2NBbHdPakE2VURCd0NYQTR3RG93TUhBSnNEcFFPbUF3Y0Ftd09YQTZVREJ3Q2tBNXNEcGdNSEFLUURqUU9iQXdjQW9BT25BNmdEQndDZ0E1OERwd01IQUtFRHFBT3BBd2NBb1FPZ0E2Z0RCd0NxQTZFRHFRTUhBS29Eb2dPaEF3Y0Fwd09pQTZvREJ3Q25BNThEb2dNSEFLc0RwQU9zQXdjQXF3T2pBNlFEQndDbEE2c0RyUU1IQUtVRG93T3JBd2NBcGdPdEE2NERCd0NtQTZVRHJRTUhBS3dEcGdPdUF3Y0FyQU9rQTZZREJ3Q3ZBN0FEc1FNSEFLOERzZ093QXdjQXNRT3pBN1FEQndDeEE3QURzd01IQUxVRHNRTzBBd2NBdFFPdkE3RURCd0MyQTY4RHRRTUhBTFlEc2dPdkF3Y0FzZ096QTdBREJ3Q3lBN1lEc3dNSEFMY0R1QU81QXdjQXR3TzZBN2dEQndDNkE3c0R1QU1IQUxvRHZBTzdBd2NBdXdPOUE3NERCd0M3QTd3RHZRTUhBTDREdHdPNUF3Y0F2Z085QTdjREJ3Qy9BOEFEd1FNSEFMOER3Z1BBQXdjQXd3UEJBOFFEQndEREE3OER3UU1IQU1VRHd3UEVBd2NBeFFQR0E4TURCd0RBQThZRHhRTUhBTUFEd2dQR0F3Y0F4d081QTdnREJ3REhBOGdEdVFNSEFNZ0R3UVBBQXdjQXlBUEhBOEVEQndESkE3Z0R1d01IQU1rRHh3TzRBd2NBeHdQRUE4RURCd0RIQThrRHhBTUhBTDREeVFPN0F3Y0F2Z1BLQThrREJ3REpBOFVEeEFNSEFNa0R5Z1BGQXdjQXVRUEtBNzREQndDNUE4Z0R5Z01IQU1vRHdBUEZBd2NBeWdQSUE4QURCd0MzQThzRHVnTUhBTGNEekFQTEF3Y0F1Z1BOQTd3REJ3QzZBOHNEelFNSEFNNER0d085QXdjQXpnUE1BN2NEQndETkE3MER2QU1IQU0wRHpnTzlBd2NBendQTEE4d0RCd0RQQTlBRHl3TUhBTkFEdEFPekF3Y0EwQVBQQTdRREJ3RFJBN01EdGdNSEFORUQwQU96QXdjQTBnUE1BODREQndEU0E4OER6QU1IQU04RHRRTzBBd2NBendQU0E3VURCd0RSQTg0RHpRTUhBTkVEMGdQT0F3Y0EwZ08yQTdVREJ3RFNBOUVEdGdNSEFOTUQxQVBWQXdjQTB3UFdBOVFEQndEWEE5VUQyQU1IQU5jRDB3UFZBd2NBMVFQWkE5Z0RCd0RWQTlRRDJRTUhBTlFEMmdQWkF3Y0ExQVBXQTlvREJ3RFhBOVlEMHdNSEFOY0QyZ1BXQXdjQTJ3UGNBOTBEQndEYkE5NEQzQU1IQU44RDNnUGJBd2NBM3dQZ0E5NERCd0RoQTk4RDRnTUhBT0VENEFQZkF3Y0EzQVBpQTkwREJ3RGNBK0VENGdNSEFPTUQ1QVBsQXdjQTR3UG1BK1FEQndEbEErY0Q2QU1IQU9VRDVBUG5Bd2NBNXdQcEErZ0RCd0RuQStvRDZRTUhBT29ENHdQcEF3Y0E2Z1BtQStNREJ3RGRBK3NEMndNSEFOMEQ3QVByQXdjQTVRUHNBK01EQndEbEErc0Q3QU1IQU5zRDdRUGZBd2NBMndQckErMERCd0RvQStzRDVRTUhBT2dEN1FQckF3Y0E3UVBpQTk4REJ3RHRBKzRENGdNSEFPa0Q3UVBvQXdjQTZRUHVBKzBEQndEdUE5MEQ0Z01IQU80RDdBUGRBd2NBNHdQdUEra0RCd0RqQSt3RDdnTUhBTzhEM0FQZUF3Y0E3d1B3QTl3REJ3RHhBOTRENEFNSEFQRUQ3d1BlQXdjQTNBUHlBK0VEQndEY0EvQUQ4Z01IQU9FRDhRUGdBd2NBNFFQeUEvRURCd0R2QS9NRDhBTUhBTzhEOUFQekF3Y0EyQVAwQTljREJ3RFlBL01EOUFNSEFOY0Q5UVBhQXdjQTF3UDBBL1VEQndEd0EvWUQ4Z01IQVBBRDh3UDJBd2NBMlFQekE5Z0RCd0RaQS9ZRDh3TUhBUElEOVFQeEF3Y0E4Z1AyQS9VREJ3RGFBL1lEMlFNSEFOb0Q5UVAyQXdjQXl3UDNBL2dEQndETEE5QUQ5d01IQU5BRCtRUDNBd2NBMEFQUkEva0RCd0Q1QTgwRCtnTUhBUGtEMFFQTkF3Y0ErZ1BMQS9nREJ3RDZBODBEeXdNSEFQc0Q4UVA4QXdjQSt3UHZBL0VEQndEOEEvVUQvUU1IQVB3RDhRUDFBd2NBOVFQK0EvMERCd0QxQS9RRC9nTUhBUFFEK3dQK0F3Y0E5QVB2QS9zREJ3RDRBLzhEQUFRSEFQZ0Q5d1AvQXdjQTl3TUJCUDhEQndEM0Eva0RBUVFIQUFFRStnTUNCQWNBQVFUNUEvb0RCd0FDQlBnREFBUUhBQUlFK2dQNEF3Y0FBd1Q4QXdRRUJ3QURCUHNEL0FNSEFBUUUvUU1GQkFjQUJBVDhBLzBEQndEOUF3WUVCUVFIQVAwRC9nTUdCQWNBL2dNREJBWUVCd0QrQS9zREF3UUhBQWNFd2dPL0F3Y0FCd1FJQk1JREJ3QUpCTDhEd3dNSEFBa0VCd1MvQXdjQUNnVERBOFlEQndBS0JBa0V3d01IQUFnRXhnUENBd2NBQ0FRS0JNWURCd0FMQk9RRDVnTUhBQXNFREFUa0F3Y0FEQVRuQStRREJ3QU1CQTBFNXdNSEFBMEU2Z1BuQXdjQURRUU9CT29EQndBT0JPWUQ2Z01IQUE0RUN3VG1Bd2NBRHdRSUJBY0VCd0FQQkJBRUNBUUhBQkFFa1FPU0F3Y0FFQVFQQkpFREJ3QVBCSk1Ea1FNSEFBOEVFUVNUQXdjQUVnUUpCQW9FQndBU0JCRUVDUVFIQUJFRWxnT1RBd2NBRVFRU0JKWURCd0FRQkFvRUNBUUhBQkFFRWdRS0JBY0FFZ1NTQTVZREJ3QVNCQkFFa2dNSEFBc0VFd1FNQkFjQUN3UVVCQk1FQndBVEJKa0RtZ01IQUJNRUZBU1pBd2NBRlFTYUE1d0RCd0FWQkJNRW1nTUhBQTBFRmdRT0JBY0FEUVFWQkJZRUJ3QVdCSndEbmdNSEFCWUVGUVNjQXdjQURnUVVCQXNFQndBT0JCWUVGQVFIQUJRRW5nT1pBd2NBRkFRV0JKNERCd0FYQkJFRUdBUUhBQmNFQ1FRUkJBY0FHQVFQQkJrRUJ3QVlCQkVFRHdRSEFBOEVHZ1FaQkFjQUR3UUhCQm9FQndBSEJCY0VHZ1FIQUFjRUNRUVhCQWNBR3dTckFxa0NCd0FiQkJ3RXF3SUhBQndFckFLckFnY0FIQVFkQkt3Q0J3QWRCSzBDckFJSEFCMEVIZ1N0QWdjQUhnU3lBcTBDQndBZUJCOEVzZ0lIQUI4RXRnS3lBZ2NBSHdRZ0JMWUNCd0FnQks4Q3RnSUhBQ0FFSVFTdkFnY0FJUVN1QXE4Q0J3QWhCQ0lFcmdJSEFDSUVzQUt1QWdjQUlnUWpCTEFDQndBakJMRUNzQUlIQUNNRUpBU3hBZ2NBSkFRQkE3RUNCd0FrQkNVRUFRTUhBQ1VFS0FNQkF3Y0FKUVFtQkNnREJ3QW5CS2tDcWdJSEFDY0VHd1NwQWdjQUtBU3FBdGdDQndBb0JDY0VxZ0lIQUNrRTJBS29BZ2NBS1FRb0JOZ0NCd0FxQktnQ3B3SUhBQ29FS1FTb0FnY0FLd1NuQXFZQ0J3QXJCQ29FcHdJSEFDd0VwZ0xyQWdjQUxBUXJCS1lDQndBdEJPc0NFUU1IQUMwRUxBVHJBZ2NBTGdRdkJEQUVCd0F1QkRFRUx3UUhBTThDTWdRekJBY0F6d0xOQWpJRUJ3QXlCQndFR3dRSEFESUVOQVFjQkFjQXpRSTBCRElFQndETkFzc0NOQVFIQURRRUhRUWNCQWNBTkFRMUJCMEVCd0RMQWpVRU5BUUhBTXNDeVFJMUJBY0FOUVFlQkIwRUJ3QTFCRFlFSGdRSEFNa0NOZ1ExQkFjQXlRTEJBallFQndBMkJCOEVIZ1FIQURZRU53UWZCQWNBd1FJM0JEWUVCd0RCQXIwQ053UUhBRGNFSUFRZkJBY0FOd1E0QkNBRUJ3QzlBamdFTndRSEFMMEN1Z0k0QkFjQU9BUWhCQ0FFQndBNEJEa0VJUVFIQUxvQ09RUTRCQWNBdWdLK0Fqa0VCd0E1QkNJRUlRUUhBRGtFT2dRaUJBY0F2Z0k2QkRrRUJ3QytBc2NDT2dRSEFEb0VJd1FpQkFjQU9nUTdCQ01FQndESEFqc0VPZ1FIQU1jQ3hRSTdCQWNBT3dRa0JDTUVCd0E3QkR3RUpBUUhBTVVDUEFRN0JBY0F4UUxDQWp3RUJ3QThCQ1VFSkFRSEFEd0VQUVFsQkFjQXdnSTlCRHdFQndEQ0F2OENQUVFIQUQwRUpnUWxCQWNBUFFRK0JDWUVCd0QvQWo0RVBRUUhBUDhDSmdNK0JBY0FQd1F3QkVBRUJ3QS9CQzRFTUFRSEFOWUNNd1JCQkFjQTFnTFBBak1FQndCQ0JDZ0VLUVFIQUVJRVFRUW9CQWNBMEFKQkJFSUVCd0RRQXRZQ1FRUUhBRU1FS1FRcUJBY0FRd1JDQkNrRUJ3RFRBa0lFUXdRSEFOTUMwQUpDQkFjQVJBUXFCQ3NFQndCRUJFTUVLZ1FIQU5VQ1F3UkVCQWNBMVFMVEFrTUVCd0JGQkNzRUxBUUhBRVVFUkFRckJBY0E3Z0pFQkVVRUJ3RHVBdFVDUkFRSEFFWUVMQVF0QkFjQVJnUkZCQ3dFQndBVUEwVUVSZ1FIQUJRRDdnSkZCQWNBUndRdUJEOEVCd0JIQkVnRUxnUUhBRUVFU0FSSEJBY0FRUVF6QkVnRUJ3QklCREVFTGdRSEFFZ0VTUVF4QkFjQU13UkpCRWdFQndBekJESUVTUVFIQUVrRUx3UXhCQWNBU1FSS0JDOEVCd0F5QkVvRVNRUUhBRElFR3dSS0JBY0FTZ1F3QkM4RUJ3QktCRXNFTUFRSEFCc0VTd1JLQkFjQUd3UW5CRXNFQndCTEJFQUVNQVFIQUVzRVRBUkFCQWNBSndSTUJFc0VCd0FuQkNnRVRBUUhBRXdFUHdSQUJBY0FUQVJIQkQ4RUJ3QW9CRWNFVEFRSEFDZ0VRUVJIQkFjQURRUk5CRTRFQndBTkJBd0VUUVFIQUUwRUV3UlBCQWNBVFFRTUJCTUVCd0JQQkJVRVVBUUhBRThFRXdRVkJBY0FGUVJPQkZBRUJ3QVZCQTBFVGdRSEFGRUVHQVJTQkFjQVVRUVhCQmdFQndCU0JCa0VVd1FIQUZJRUdBUVpCQWNBR1FSVUJGTUVCd0FaQkJvRVZBUUhBQm9FVVFSVUJBY0FHZ1FYQkZFRUJ3Qk9CRlVFVmdRSEFFNEVUUVJWQkFjQVZRUlBCRmNFQndCVkJFMEVUd1FIQUZjRVVBUllCQWNBVndSUEJGQUVCd0JRQkZZRVdBUUhBRkFFVGdSV0JBY0FXUVJhQkZzRUJ3QlpCRndFV2dRSEFGMEVYZ1JmQkFjQVhRUmdCRjRFQndCaEJHSUVZd1FIQUdFRVpBUmlCQWNBWlFSbUJHY0VCd0JsQkdnRVpnUUhBR2tFV3dScUJBY0FhUVJaQkZzRUJ3QmZCR3NFYkFRSEFGOEVYZ1JyQkFjQVl3UnRCRzRFQndCakJHSUViUVFIQUc4RVp3UndCQWNBYndSbEJHY0VCd0JjQkhFRVdnUUhBRndFY2dSeEJBY0Fjd1IwQkhVRUJ3QnpCSFlFZEFRSEFISUVkd1J4QkFjQWNnUjRCSGNFQndCaEJIZ0VaQVFIQUdFRWR3UjRCQWNBZVFSMEJIWUVCd0I1QkhvRWRBUUhBSHNFZVFSOEJBY0Fld1I2QkhrRUJ3QjFCSDBFY3dRSEFIVUVmZ1I5QkFjQWZ3UitCSUFFQndCL0JIMEVmZ1FIQUlFRVd3UmFCQWNBZ1FTQ0JGc0VCd0JmQklFRVhRUUhBRjhFZ2dTQkJBY0FXUVNEQkZ3RUJ3QlpCSVFFZ3dRSEFHQUVoQVJlQkFjQVlBU0RCSVFFQndDQ0JHb0VXd1FIQUlJRWhRUnFCQWNBYkFTQ0JGOEVCd0JzQklVRWdnUUhBR2tFaEFSWkJBY0FhUVNHQklRRUJ3QmVCSVlFYXdRSEFGNEVoQVNHQkFjQWZBU0hCSHNFQndCOEJJZ0Vod1FIQUdRRWlRUmlCQWNBWkFTS0JJa0VCd0JqQklzRVlRUUhBR01FakFTTEJBY0FZZ1NOQkcwRUJ3QmlCSWtFalFRSEFHNEVqQVJqQkFjQWJnU09CSXdFQndDUEJKQUVrUVFIQUk4RWtnU1FCQWNBa2dSb0JKQUVCd0NTQkdZRWFBUUhBSHdFa3dTSUJBY0FmQVNVQkpNRUJ3Q1VCSXNFa3dRSEFKUUVZUVNMQkFjQWVRU1VCSHdFQndCNUJKVUVsQVFIQUpVRVlRU1VCQWNBbFFSM0JHRUVCd0IyQkpVRWVRUUhBSFlFbGdTVkJBY0FsZ1IzQkpVRUJ3Q1dCSEVFZHdRSEFITUVsZ1IyQkFjQWN3U1hCSllFQndDWEJIRUVsZ1FIQUpjRVdnUnhCQWNBZlFTWEJITUVCd0I5QkpnRWx3UUhBSmdFV2dTWEJBY0FtQVNCQkZvRUJ3Qi9CSmdFZlFRSEFIOEVtUVNZQkFjQW1RU0JCSmdFQndDWkJGMEVnUVFIQUlBRW1RUi9CQWNBZ0FTYUJKa0VCd0NhQkYwRW1RUUhBSm9FWUFSZEJBY0FmZ1NhQklBRUJ3QitCSnNFbWdRSEFKc0VZQVNhQkFjQW13U0RCR0FFQndCMUJKc0VmZ1FIQUhVRW5BU2JCQWNBbkFTREJKc0VCd0NjQkZ3RWd3UUhBSFFFbkFSMUJBY0FkQVNkQkp3RUJ3Q2RCRndFbkFRSEFKMEVjZ1JjQkFjQWVnU2RCSFFFQndCNkJKNEVuUVFIQUo0RWNnU2RCQWNBbmdSNEJISUVCd0I3Qko0RWVnUUhBSHNFbndTZUJBY0Fud1I0Qko0RUJ3Q2ZCR1FFZUFRSEFJY0Vud1I3QkFjQWh3U2dCSjhFQndDZ0JHUUVud1FIQUtBRWlnUmtCQWNBb1FTaUJLTUVCd0NoQktRRW9nUUhBS1VFcGdTbkJBY0FwUVNvQktZRUJ3Q3BCS29FcXdRSEFLa0VyQVNxQkFjQXBnU3RCSzRFQndDbUJLZ0VyUVFIQUs4RXJBU3BCQWNBcndTd0JLd0VCd0N4QktRRW9RUUhBTEVFc2dTa0JBY0Fxd1N5QkxFRUJ3Q3JCS29Fc2dRSEFLTUVzd1MwQkFjQW93U2lCTE1FQndDbkJMTUVwUVFIQUtjRXRBU3pCQWNBdFFTaUJLUUVCd0MxQkxZRW9nUUhBS01FdHdTaEJBY0Fvd1M0QkxjRUJ3QzVCS2NFcGdRSEFMa0V1Z1NuQkFjQXBRUzdCS2dFQndDbEJMd0V1d1FIQUwwRXFnU3NCQWNBdlFTK0JLb0VCd0NyQkw4RXFRUUhBS3NFd0FTL0JBY0FyUVRCQks0RUJ3Q3RCTUlFd1FRSEFLZ0V3Z1N0QkFjQXFBUzdCTUlFQndEQkJLWUVyZ1FIQU1FRXVRU21CQWNBd3dTc0JMQUVCd0REQkwwRXJBUUhBTVFFc0FTdkJBY0F4QVREQkxBRUJ3Q3BCTVFFcndRSEFLa0V2d1RFQkFjQXhRU2tCTElFQndERkJMVUVwQVFIQUtFRXhnU3hCQWNBb1FTM0JNWUVCd0MrQkxJRXFnUUhBTDRFeFFTeUJBY0FzUVRBQktzRUJ3Q3hCTVlFd0FRSEFLSUV4d1N6QkFjQW9nUzJCTWNFQndESUJLTUV0QVFIQU1nRXVBU2pCQWNBc3dTOEJLVUVCd0N6Qk1jRXZBUUhBTG9FdEFTbkJBY0F1Z1RJQkxRRUJ3Q0hCTWtFeWdRSEFJY0VpQVRKQkFjQXR3VEtCTWtFQndDM0JMZ0V5Z1FIQU1zRXVnUzVCQWNBeXdUTUJMb0VCd0RNQklrRWlnUUhBTXdFeXdTSkJBY0F3QVROQkw4RUJ3REFCTTRFelFRSEFJd0V6Z1NMQkFjQWpBVE5CTTRFQndEUEJJa0V5d1FIQU04RWpRU0pCQWNBd1FUTEJMa0VCd0RCQk04RXl3UUhBTDhFMEFURUJBY0F2d1ROQk5BRUJ3Q09CTTBFakFRSEFJNEUwQVROQkFjQWlBVFJCTWtFQndDSUJKTUUwUVFIQUxjRTBRVEdCQWNBdHdUSkJORUVCd0NUQk00RTBRUUhBSk1FaXdUT0JBY0F4Z1RPQk1BRUJ3REdCTkVFemdRSEFOSUVod1RLQkFjQTBnU2dCSWNFQndESUJNb0V1QVFIQU1nRTBnVEtCQWNBekFUSUJMb0VCd0RNQk5JRXlBUUhBTklFaWdTZ0JBY0EwZ1RNQklvRUJ3RFRCTlFFMVFRSEFOTUUxZ1RVQkFjQXRRVFVCTFlFQndDMUJOVUUxQVFIQU5jRXV3UzhCQWNBMXdUWUJMc0VCd0RZQk5rRTJnUUhBTmdFMXdUWkJBY0F2UVRiQkw0RUJ3QzlCTndFMndRSEFOMEUzQVRlQkFjQTNRVGJCTndFQndEWUJOOEU0QVFIQU5nRTJnVGZCQWNBdXdUZ0JNSUVCd0M3Qk5nRTRBUUhBTU1FM0FTOUJBY0F3d1RoQk53RUJ3RGVCT0VFNGdRSEFONEUzQVRoQkFjQTR3VFZCT1FFQndEakJOTUUxUVFIQU1VRTFRUzFCQWNBeFFUa0JOVUVCd0RkQk9RRTJ3UUhBTjBFNHdUa0JBY0F2Z1RrQk1VRUJ3QytCTnNFNUFRSEFOUUV4d1MyQkFjQTFBVGxCTWNFQndEbEJOWUU1Z1FIQU9VRTFBVFdCQWNBNVFUWkJOY0VCd0RsQk9ZRTJRUUhBTWNFMXdTOEJBY0F4d1RsQk5jRUJ3Q1JCT2NFandRSEFKRUU2QVRuQkFjQTZRVGFCTmtFQndEcEJPb0UyZ1FIQU9vRWFBUmxCQWNBNmdUcEJHZ0VCd0RkQk9zRTdBUUhBTjBFM2dUckJBY0Fad1RzQk9zRUJ3Qm5CR1lFN0FRSEFPb0Uzd1RhQkFjQTZnVHRCTjhFQndEdEJHVUVid1FIQU8wRTZnUmxCQWNBNGdUckJONEVCd0RpQk80RTZ3UUhBR2NFN2dSd0JBY0Fad1RyQk80RUJ3RHZCSkVFa0FRSEFPOEU2QVNSQkFjQTZBVG1CTllFQndEb0JPOEU1Z1FIQU84RWFBVHBCQWNBN3dTUUJHZ0VCd0RwQk9ZRTd3UUhBT2tFMlFUbUJBY0Ewd1R3Qk9jRUJ3RFRCT01FOEFRSEFKSUU1d1R3QkFjQWtnU1BCT2NFQndEZEJQQUU0d1FIQU4wRTdBVHdCQWNBa2dUc0JHWUVCd0NTQlBBRTdBUUhBTk1FNkFUV0JBY0Ewd1RuQk9nRUJ3RHhCUElFOHdRSEFQRUU5QVR5QkFjQTlRVDJCUGNFQndEMUJQZ0U5Z1FIQVBrRStnVDdCQWNBK1FUOEJQb0VCd0Q5QlA0RS93UUhBUDBFQUFYK0JBY0FBUVh6QkFJRkJ3QUJCZkVFOHdRSEFQY0VBd1VFQlFjQTl3VDJCQU1GQndEN0JBVUZCZ1VIQVBzRStnUUZCUWNBQndYL0JBZ0ZCd0FIQmYwRS93UUhBUFFFQ1FYeUJBY0E5QVFLQlFrRkJ3QUxCUXdGRFFVSEFBc0ZEZ1VNQlFjQUNnVVBCUWtGQndBS0JSQUZEd1VIQVBrRUVBWDhCQWNBK1FRUEJSQUZCd0FSQlF3RkRnVUhBQkVGRWdVTUJRY0FFd1VSQlJRRkJ3QVRCUklGRVFVSEFBMEZGUVVMQlFjQURRVVdCUlVGQndBWEJSWUZHQVVIQUJjRkZRVVdCUWNBR1FYekJQSUVCd0FaQlJvRjh3UUhBUGNFR1FYMUJBY0E5d1FhQlJrRkJ3RHhCQnNGOUFRSEFQRUVIQVViQlFjQStBUWNCZllFQndENEJCc0ZIQVVIQUJvRkFnWHpCQWNBR2dVZEJRSUZCd0FFQlJvRjl3UUhBQVFGSFFVYUJRY0FBUVVjQmZFRUJ3QUJCUjRGSEFVSEFQWUVIZ1VEQlFjQTlnUWNCUjRGQndBVUJSOEZFd1VIQUJRRklBVWZCUWNBL0FRaEJmb0VCd0Q4QkNJRklRVUhBUHNFSXdYNUJBY0Erd1FrQlNNRkJ3RDZCQ1VGQlFVSEFQb0VJUVVsQlFjQUJnVWtCZnNFQndBR0JTWUZKQVVIQUNjRktBVXBCUWNBSndVcUJTZ0ZCd0FxQlFBRktBVUhBQ29GL2dRQUJRY0FGQVVyQlNBRkJ3QVVCU3dGS3dVSEFDd0ZJd1VyQlFjQUxBWDVCQ01GQndBUkJTd0ZGQVVIQUJFRkxRVXNCUWNBTFFYNUJDd0ZCd0F0QlE4RitRUUhBQTRGTFFVUkJRY0FEZ1V1QlMwRkJ3QXVCUThGTFFVSEFDNEZDUVVQQlFjQUN3VXVCUTRGQndBTEJTOEZMZ1VIQUM4RkNRVXVCUWNBTHdYeUJBa0ZCd0FWQlM4RkN3VUhBQlVGTUFVdkJRY0FNQVh5QkM4RkJ3QXdCUmtGOGdRSEFCY0ZNQVVWQlFjQUZ3VXhCVEFGQndBeEJSa0ZNQVVIQURFRjlRUVpCUWNBR0FVeEJSY0ZCd0FZQlRJRk1RVUhBRElGOVFReEJRY0FNZ1g0QlBVRUJ3QVdCVElGR0FVSEFCWUZNd1V5QlFjQU13WDRCRElGQndBekJSc0YrQVFIQUEwRk13VVdCUWNBRFFVMEJUTUZCd0EwQlJzRk13VUhBRFFGOUFRYkJRY0FEQVUwQlEwRkJ3QU1CVFVGTkFVSEFEVUY5QVEwQlFjQU5RVUtCZlFFQndBU0JUVUZEQVVIQUJJRk5nVTFCUWNBTmdVS0JUVUZCd0EyQlJBRkNnVUhBQk1GTmdVU0JRY0FFd1UzQlRZRkJ3QTNCUkFGTmdVSEFEY0YvQVFRQlFjQUh3VTNCUk1GQndBZkJUZ0ZOd1VIQURnRi9BUTNCUWNBT0FVaUJmd0VCd0E1QlRvRk93VUhBRGtGUEFVNkJRY0FQUVUrQlQ4RkJ3QTlCVUFGUGdVSEFFRUZRZ1ZEQlFjQVFRVkVCVUlGQndBK0JVVUZSZ1VIQUQ0RlFBVkZCUWNBUndWRUJVRUZCd0JIQlVnRlJBVUhBRWtGUEFVNUJRY0FTUVZLQlR3RkJ3QkRCVW9GU1FVSEFFTUZRZ1ZLQlFjQU93VkxCVXdGQndBN0JUb0ZTd1VIQUQ4RlN3VTlCUWNBUHdWTUJVc0ZCd0JOQlRvRlBBVUhBRTBGVGdVNkJRY0FPd1ZQQlRrRkJ3QTdCVkFGVHdVSEFGRUZQd1UrQlFjQVVRVlNCVDhGQndBOUJWTUZRQVVIQUQwRlZBVlRCUWNBVlFWQ0JVUUZCd0JWQlZZRlFnVUhBRU1GVndWQkJRY0FRd1ZZQlZjRkJ3QkZCVmtGUmdVSEFFVUZXZ1ZaQlFjQVFBVmFCVVVGQndCQUJWTUZXZ1VIQUZrRlBnVkdCUWNBV1FWUkJUNEZCd0JiQlVRRlNBVUhBRnNGVlFWRUJRY0FYQVZJQlVjRkJ3QmNCVnNGU0FVSEFFRUZYQVZIQlFjQVFRVlhCVndGQndCZEJUd0ZTZ1VIQUYwRlRRVThCUWNBT1FWZUJVa0ZCd0E1QlU4RlhnVUhBRllGU2dWQ0JRY0FWZ1ZkQlVvRkJ3QkpCVmdGUXdVSEFFa0ZYZ1ZZQlFjQU9nVmZCVXNGQndBNkJVNEZYd1VIQUdBRk93Vk1CUWNBWUFWUUJUc0ZCd0JMQlZRRlBRVUhBRXNGWHdWVUJRY0FVZ1ZNQlQ4RkJ3QlNCV0FGVEFVSEFCOEZZUVZpQlFjQUh3VWdCV0VGQndCUEJXSUZZUVVIQUU4RlVBVmlCUWNBWXdWU0JWRUZCd0JqQldRRlVnVUhBR1FGSVFVaUJRY0FaQVZqQlNFRkJ3QllCV1VGVndVSEFGZ0ZaZ1ZsQlFjQUpBVm1CU01GQndBa0JXVUZaZ1VIQUdjRklRVmpCUWNBWndVbEJTRUZCd0JaQldNRlVRVUhBRmtGWndWakJRY0FWd1ZvQlZ3RkJ3QlhCV1VGYUFVSEFDWUZaUVVrQlFjQUpnVm9CV1VGQndBZ0JXa0ZZUVVIQUNBRkt3VnBCUWNBVHdWcEJWNEZCd0JQQldFRmFRVUhBQ3NGWmdWcEJRY0FLd1VqQldZRkJ3QmVCV1lGV0FVSEFGNEZhUVZtQlFjQWFnVWZCV0lGQndCcUJUZ0ZId1VIQUdBRllnVlFCUWNBWUFWcUJXSUZCd0JrQldBRlVnVUhBR1FGYWdWZ0JRY0FhZ1VpQlRnRkJ3QnFCV1FGSWdVSEFHc0ZiQVZ0QlFjQWF3VnVCV3dGQndCTkJXd0ZUZ1VIQUUwRmJRVnNCUWNBYndWVEJWUUZCd0J2QlhBRlV3VUhBSEFGY1FWeUJRY0FjQVZ2QlhFRkJ3QlZCWE1GVmdVSEFGVUZkQVZ6QlFjQWRRVjBCWFlGQndCMUJYTUZkQVVIQUhBRmR3VjRCUWNBY0FWeUJYY0ZCd0JUQlhnRldnVUhBRk1GY0FWNEJRY0FXd1YwQlZVRkJ3QmJCWGtGZEFVSEFIWUZlUVY2QlFjQWRnVjBCWGtGQndCN0JXMEZmQVVIQUhzRmF3VnRCUWNBWFFWdEJVMEZCd0JkQlh3RmJRVUhBSFVGZkFWekJRY0FkUVY3Qlh3RkJ3QldCWHdGWFFVSEFGWUZjd1Y4QlFjQWJBVmZCVTRGQndCc0JYMEZYd1VIQUgwRmJnVitCUWNBZlFWc0JXNEZCd0I5QlhFRmJ3VUhBSDBGZmdWeEJRY0FYd1Z2QlZRRkJ3QmZCWDBGYndVSEFIOEZnQVdCQlFjQWZ3V0NCWUFGQndBcEJZTUZKd1VIQUNrRmhBV0RCUWNBaFFWeUJYRUZCd0NGQllZRmNnVUhBSVlGQUFYOUJBY0FoZ1dGQlFBRkJ3QjFCWWNGaUFVSEFIVUZkZ1dIQlFjQS93U0lCWWNGQndEL0JQNEVpQVVIQUlZRmR3VnlCUWNBaGdXSkJYY0ZCd0NKQmYwRUJ3VUhBSWtGaGdYOUJBY0FlZ1dIQlhZRkJ3QjZCWW9GaHdVSEFQOEVpZ1VJQlFjQS93U0hCWW9GQndDTEJTa0ZLQVVIQUlzRmhBVXBCUWNBaEFWK0JXNEZCd0NFQllzRmZnVUhBSXNGQUFXRkJRY0Fpd1VvQlFBRkJ3Q0ZCWDRGaXdVSEFJVUZjUVYrQlFjQWF3V01CWU1GQndCckJYc0ZqQVVIQUNvRmd3V01CUWNBS2dVbkJZTUZCd0IxQll3RmV3VUhBSFVGaUFXTUJRY0FLZ1dJQmY0RUJ3QXFCWXdGaUFVSEFJMEZiZ1ZyQlFjQWpRV09CVzRGQndDUEJXNEZqZ1VIQUk4RmhBVnVCUWNBaEFXUUJZTUZCd0NFQlk4RmtBVUhBSU1GalFWckJRY0Fnd1dRQlkwRkJ3Q1JCWTBGa2dVSEFKRUZqZ1dOQlFjQWt3V09CWkVGQndDVEJZOEZqZ1VIQUpBRmt3V1VCUWNBa0FXUEJaTUZCd0NOQlpRRmtnVUhBSTBGa0FXVUJRY0FsUVdSQlpJRkJ3Q1ZCWllGa1FVSEFKY0ZrUVdXQlFjQWx3V1RCWkVGQndDVEJaZ0ZsQVVIQUpNRmx3V1lCUWNBbEFXVkJaSUZCd0NVQlpnRmxRVUhBSmtGbGdXVkJRY0FtUVdhQlpZRkJ3Q2FCWmNGbGdVSEFKb0Ztd1dYQlFjQWx3V2NCWmdGQndDWEJac0ZuQVVIQUpnRm1RV1ZCUWNBbUFXY0Jaa0ZCd0IvQlpvRm1RVUhBSDhGZ1FXYUJRY0FnUVdiQlpvRkJ3Q0JCWUFGbXdVSEFKc0ZnZ1djQlFjQW13V0FCWUlGQndDY0JYOEZtUVVIQUp3RmdnVi9CUWNBblFXZUJaOEZCd0NkQmFBRm5nVUhBS0VGb2dXakJRY0FvUVdrQmFJRkJ3Q2xCYVlGcHdVSEFLVUZxQVdtQlFjQXFRV3FCYXNGQndDcEJhd0ZxZ1VIQUo4RnJRV3VCUWNBbndXZUJhMEZCd0N2QmFNRnNBVUhBSzhGb1FXakJRY0FzUVduQmJJRkJ3Q3hCYVVGcHdVSEFLc0Zzd1cwQlFjQXF3V3FCYk1GQndDMUJhQUZuUVVIQUxVRnRnV2dCUWNBdHdXNEJia0ZCd0MzQmJvRnVBVUhBTHNGdGdXMUJRY0F1d1c4QmJZRkJ3QzhCYVlGcUFVSEFMd0Z1d1dtQlFjQXR3VzlCYm9GQndDM0JiNEZ2UVVIQUwwRnZ3WEFCUWNBdlFXK0JiOEZCd0RCQmJrRnVBVUhBTUVGd2dXNUJRY0F3Z1hEQmNRRkJ3RENCY0VGd3dVSEFKOEZ4UVdkQlFjQW53WEdCY1VGQndERkJhTUZvZ1VIQU1VRnhnV2pCUWNBeHdXZUJhQUZCd0RIQmNnRm5nVUhBTWdGcEFXaEJRY0F5QVhIQmFRRkJ3Q3VCY1lGbndVSEFLNEZ5UVhHQlFjQXhnV3dCYU1GQndER0Jja0ZzQVVIQU1nRnJRV2VCUWNBeUFYS0JhMEZCd0RLQmFFRnJ3VUhBTW9GeUFXaEJRY0F5d1hBQmI4RkJ3RExCY3dGd0FVSEFNMEZxQVdsQlFjQXpRWE9CYWdGQndEUEJhY0ZwZ1VIQU04RjBBV25CUWNBMFFXbEJiRUZCd0RSQmMwRnBRVUhBTkFGc2dXbkJRY0EwQVhTQmJJRkJ3RFRCZFFGMVFVSEFOTUYxZ1hVQlFjQXJBWFdCZE1GQndDc0Jha0YxZ1VIQU5jRndBWE1CUWNBMXdYWUJjQUZCd0RQQmRnRjF3VUhBTThGcGdYWUJRY0EyQVc5QmNBRkJ3RFlCZGtGdlFVSEFLWUYyUVhZQlFjQXBnVzdCZGtGQndEWkJib0Z2UVVIQU5rRjJnVzZCUWNBdXdYYUJka0ZCd0M3QmJVRjJnVUhBTm9GdUFXNkJRY0EyZ1hiQmJnRkJ3QzFCZHNGMmdVSEFMVUZuUVhiQlFjQTJ3WEJCYmdGQndEYkJkd0Z3UVVIQUowRjNBWGJCUWNBblFYRkJkd0ZCd0RjQmNNRndRVUhBTndGM1FYREJRY0F4UVhkQmR3RkJ3REZCYUlGM1FVSEFOMEZ4QVhEQlFjQTNRWGVCY1FGQndDaUJkNEYzUVVIQUtJRnBBWGVCUWNBM2dYQ0JjUUZCd0RlQmQ4RndnVUhBS1FGM3dYZUJRY0FwQVhIQmQ4RkJ3RGZCYmtGd2dVSEFOOEY0QVc1QlFjQXh3WGdCZDhGQndESEJhQUY0QVVIQU9BRnR3VzVCUWNBNEFYaEJiY0ZCd0NnQmVFRjRBVUhBS0FGdGdYaEJRY0E0UVcrQmJjRkJ3RGhCZUlGdmdVSEFMWUY0Z1hoQlFjQXRnVzhCZUlGQndEaUJiOEZ2Z1VIQU9JRjR3Vy9CUWNBdkFYakJlSUZCd0M4QmFnRjR3VUhBT01GeXdXL0JRY0E0d1hrQmNzRkJ3Q29CZVFGNHdVSEFLZ0Z6Z1hrQlFjQTVRWG1CZWNGQndEbEJlZ0Y1Z1VIQU9rRjZnWHJCUWNBNlFYc0Jlb0ZCd0R0QmU0Rjd3VUhBTzBGOEFYdUJRY0E4UVhwQmZJRkJ3RHhCZXdGNlFVSEFQQUY4d1h1QlFjQThBWDBCZk1GQndEb0JmVUY1Z1VIQU9nRjlnWDFCUWNBOWdYdkJmVUZCd0QyQmUwRjd3VUhBUGNGNXdYNEJRY0E5d1hsQmVjRkJ3RDNCZXNGNmdVSEFQY0YrQVhyQlFjQTVRWDVCZWdGQndEbEJmb0YrUVVIQVBzRjV3WG1CUWNBK3dYOEJlY0ZCd0RyQmYwRjZRVUhBT3NGL2dYOUJRY0Evd1hxQmV3RkJ3RC9CUUFHNmdVSEFPMEZBUWJ3QlFjQTdRVUNCZ0VHQndBREJ1OEY3Z1VIQUFNR0JBYnZCUWNBQlFieEJmSUZCd0FGQmdZRzhRVUhBQVlHN0FYeEJRY0FCZ2IvQmV3RkJ3RHBCUVVHOGdVSEFPa0YvUVVGQmdjQThBVUhCdlFGQndEd0JRRUdCd1lIQVBRRkNBYnpCUWNBOUFVSEJnZ0dCd0FJQnU0Rjh3VUhBQWdHQXdidUJRY0E2QVVKQnZZRkJ3RG9CZmtGQ1FZSEFBb0c1Z1gxQlFjQUNnYjdCZVlGQndEMkJRSUc3UVVIQVBZRkNRWUNCZ2NBQkFiMUJlOEZCd0FFQmdvRzlRVUhBQXNHNVFYM0JRY0FDd2I2QmVVRkJ3RG5CUXdHK0FVSEFPY0YvQVVNQmdjQUFBYjNCZW9GQndBQUJnc0c5d1VIQVBnRi9nWHJCUWNBK0FVTUJ2NEZCd0FOQnNzRkRnWUhBQTBHekFYTEJRY0FEZ2I3QlEwR0J3QU9CdndGK3dVSEFQNEZEd2I5QlFjQS9nVVFCZzhHQndETkJSQUd6Z1VIQU0wRkR3WVFCZ2NBRVFZRUJnTUdCd0FSQmhJR0JBWUhBQklHMEFYUEJRY0FFZ1lSQnRBRkJ3RE5CUk1HRHdZSEFNMEYwUVVUQmdjQUR3WUZCdjBGQndBUEJoTUdCUVlIQUJRR0F3WUlCZ2NBRkFZUkJnTUdCd0FSQnRJRjBBVUhBQkVHRkFiU0JRY0FGUWJNQlEwR0J3QVZCdGNGekFVSEFCVUcrd1VLQmdjQUZRWU5CdnNGQndBU0J0Y0ZGUVlIQUJJR3p3WFhCUWNBRWdZS0JnUUdCd0FTQmhVR0NnWUhBTXNGRmdZT0JnY0F5d1hrQlJZR0J3QU9CZ3dHL0FVSEFBNEdGZ1lNQmdjQURBWVFCdjRGQndBTUJoWUdFQVlIQU00RkZnYmtCUWNBemdVUUJoWUdCd0FYQmhnR0dRWUhBQmNHR2dZWUJnY0FGd2I1QmZvRkJ3QVhCaGtHK1FVSEFQOEZHd1lBQmdjQS93VWNCaHNHQndBZEJod0dIZ1lIQUIwR0d3WWNCZ2NBSHdZQkJnSUdCd0FmQmlBR0FRWUhBQ0FHSVFZaUJnY0FJQVlmQmlFR0J3QWpCaHdHSkFZSEFDTUdIZ1ljQmdjQUpBYi9CUVlHQndBa0Jod0cvd1VIQUNBR0J3WUJCZ2NBSUFZbEJnY0dCd0FsQmlJR0pnWUhBQ1VHSUFZaUJnY0FHUVluQmlnR0J3QVpCaGdHSndZSEFCa0dDUWI1QlFjQUdRWW9CZ2tHQndBb0JpRUdId1lIQUNnR0p3WWhCZ2NBS0FZQ0Jna0dCd0FvQmg4R0FnWUhBQXNHRndiNkJRY0FDd1lwQmhjR0J3QWFCaWtHS2dZSEFCb0dGd1lwQmdjQUhRWXBCaHNHQndBZEJpb0dLUVlIQUJzR0N3WUFCZ2NBR3dZcEJnc0dCd0FyQnRVRjFBVUhBQ3NHTEFiVkJRY0FIZ1l0QmgwR0J3QWVCaTRHTFFZSEFLd0ZMZ2FxQlFjQXJBVXRCaTRHQndBdkJpRUdNQVlIQUM4R0lnWWhCZ2NBTUFhckJTOEdCd0F3QnFrRnF3VUhBQ01HTGdZZUJnY0FJd1l4Qmk0R0J3Q3FCVEVHc3dVSEFLb0ZMZ1l4QmdjQUx3WW1CaUlHQndBdkJqSUdKZ1lIQURJR3F3VzBCUWNBTWdZdkJxc0ZCd0RWQlRNRzB3VUhBTlVGTEFZekJnY0FLZ1lzQmhvR0J3QXFCak1HTEFZSEFLd0ZNd1l0QmdjQXJBWFRCVE1HQndBcUJpMEdNd1lIQUNvR0hRWXRCZ2NBTkFZWUJpc0dCd0EwQmljR0dBWUhBQ3NHMWdVMEJnY0FLd2JVQmRZRkJ3QTBCaUVHSndZSEFEUUdNQVloQmdjQU1BYldCYWtGQndBd0JqUUcxZ1VIQUN3R0dBWWFCZ2NBTEFZckJoZ0dCd0ExQmpZR053WUhBRFVHT0FZMkJnY0FPUVk2QmpzR0J3QTVCandHT2dZSEFEMEdQZ1kvQmdjQVBRWkFCajRHQndCQkJrSUdRd1lIQUVFR1JBWkNCZ2NBTndaRkJrWUdCd0EzQmpZR1JRWUhBRWNHT3daSUJnY0FSd1k1QmpzR0J3QkpCajhHU2dZSEFFa0dQUVkvQmdjQVF3WkxCa3dHQndCREJrSUdTd1lIQUUwR09BWTFCZ2NBVFFaT0JqZ0dCd0JQQmxBR1VRWUhBRThHVWdaUUJnY0FVd1pPQmswR0J3QlRCbFFHVGdZSEFGUUdQZ1pBQmdjQVZBWlRCajRHQndCUEJsVUdVZ1lIQUU4R1ZnWlZCZ2NBVlFaWEJsZ0dCd0JWQmxZR1Z3WUhBRmtHVVFaUUJnY0FXUVphQmxFR0J3QmFCbHNHWEFZSEFGb0dXUVpiQmdjQU53WmRCalVHQndBM0JsNEdYUVlIQUYwR093WTZCZ2NBWFFaZUJqc0dCd0JmQmpZR09BWUhBRjhHWUFZMkJnY0FZQVk4QmprR0J3QmdCbDhHUEFZSEFFWUdYZ1kzQmdjQVJnWmhCbDRHQndCZUJrZ0dPd1lIQUY0R1lRWklCZ2NBWUFaRkJqWUdCd0JnQm1JR1JRWUhBR0lHT1FaSEJnY0FZZ1pnQmprR0J3QmpCbGdHVndZSEFHTUdaQVpZQmdjQVpRWkFCajBHQndCbEJtWUdRQVlIQUdjR1B3WStCZ2NBWndab0JqOEdCd0JwQmowR1NRWUhBR2tHWlFZOUJnY0FhQVpLQmo4R0J3Qm9CbW9HU2dZSEFHc0diQVp0QmdjQWF3WnVCbXdHQndCRUJtNEdhd1lIQUVRR1FRWnVCZ2NBYndaWUJtUUdCd0J2Qm5BR1dBWUhBR2NHY0FadkJnY0Fad1krQm5BR0J3QndCbFVHV0FZSEFIQUdjUVpWQmdjQVBnWnhCbkFHQndBK0JsTUdjUVlIQUhFR1VnWlZCZ2NBY1FaeUJsSUdCd0JUQm5JR2NRWUhBRk1HVFFaeUJnY0FjZ1pRQmxJR0J3QnlCbk1HVUFZSEFFMEdjd1p5QmdjQVRRWTFCbk1HQndCekJsa0dVQVlIQUhNR2RBWlpCZ2NBTlFaMEJuTUdCd0ExQmwwR2RBWUhBSFFHV3daWkJnY0FkQVoxQmxzR0J3QmRCblVHZEFZSEFGMEdPZ1oxQmdjQWRRWmNCbHNHQndCMUJuWUdYQVlIQURvR2RnWjFCZ2NBT2dZOEJuWUdCd0IyQmxvR1hBWUhBSFlHZHdaYUJnY0FQQVozQm5ZR0J3QThCbDhHZHdZSEFIY0dVUVphQmdjQWR3WjRCbEVHQndCZkJuZ0dkd1lIQUY4R09BWjRCZ2NBZUFaUEJsRUdCd0I0Qm5rR1R3WUhBRGdHZVFaNEJnY0FPQVpPQm5rR0J3QjVCbFlHVHdZSEFIa0dlZ1pXQmdjQVRnWjZCbmtHQndCT0JsUUdlZ1lIQUhvR1Z3WldCZ2NBZWdaN0JsY0dCd0JVQm5zR2VnWUhBRlFHUUFaN0JnY0Fld1pqQmxjR0J3QjdCbndHWXdZSEFFQUdmQVo3QmdjQVFBWm1CbndHQndCOUJuNEdmd1lIQUgwR2dBWitCZ2NBZ1FhQ0JvTUdCd0NCQm9RR2dnWUhBSVVHaGdhSEJnY0FoUWFJQm9ZR0J3Q0pCb0VHaWdZSEFJa0doQWFCQmdjQWlBYUxCb1lHQndDSUJvd0dpd1lIQUlBR2pRWitCZ2NBZ0FhT0JvMEdCd0NPQm9jR2pRWUhBSTRHaFFhSEJnY0Fqd1ovQnBBR0J3Q1BCbjBHZndZSEFJOEdnd2FDQmdjQWp3YVFCb01HQndCOUJwRUdnQVlIQUgwR2tnYVJCZ2NBa3daL0JuNEdCd0NUQnBRR2Z3WUhBSU1HbFFhQkJnY0Fnd2FXQnBVR0J3Q1hCb0lHaEFZSEFKY0dtQWFDQmdjQWhRYVpCb2dHQndDRkJwb0dtUVlIQUpzR2h3YUdCZ2NBbXdhY0JvY0dCd0NkQm9rR2lnWUhBSjBHbmdhSkJnY0FuZ2FFQm9rR0J3Q2VCcGNHaEFZSEFJRUduUWFLQmdjQWdRYVZCcDBHQndDSUJwOEdqQVlIQUlnR21RYWZCZ2NBakFhZ0Jvc0dCd0NNQnA4R29BWUhBS0FHaGdhTEJnY0FvQWFiQm9ZR0J3Q0FCcUVHamdZSEFJQUdrUWFoQmdjQW9nWitCbzBHQndDaUJwTUdmZ1lIQUk0R21nYUZCZ2NBamdhaEJwb0dCd0NjQm8wR2h3WUhBSndHb2dhTkJnY0Fvd1o5Qm84R0J3Q2pCcElHZlFZSEFIOEdwQWFRQmdjQWZ3YVVCcVFHQndDWUJvOEdnZ1lIQUpnR293YVBCZ2NBa0FhV0JvTUdCd0NRQnFRR2xnWUhBS1VHWXdhbUJnY0FwUVprQm1NR0J3Q21CcE1HcFFZSEFLWUdsQWFUQmdjQWxnYW5CcFVHQndDV0JxZ0dwd1lIQUdVR3FBWm1CZ2NBWlFhbkJxZ0dCd0NwQnB3R213WUhBS2tHcWdhY0JnY0FxZ1pvQm1jR0J3Q3FCcWtHYUFZSEFHVUdxd2FuQmdjQVpRWnBCcXNHQndDbkJwMEdsUVlIQUtjR3F3YWRCZ2NBckFhYkJxQUdCd0NzQnFrR213WUhBS2tHYWdab0JnY0FxUWFzQm1vR0J3Q3RCbVFHcFFZSEFLMEdid1prQmdjQXJRYVRCcUlHQndDdEJxVUdrd1lIQUtvR2J3YXRCZ2NBcWdabkJtOEdCd0NxQnFJR25BWUhBS29HclFhaUJnY0FZd2F1QnFZR0J3QmpCbndHcmdZSEFLWUdwQWFVQmdjQXBnYXVCcVFHQndDa0JxZ0dsZ1lIQUtRR3JnYW9CZ2NBWmdhdUJud0dCd0JtQnFnR3JnWUhBSzhHc0FheEJnY0Fyd2F5QnJBR0J3Q3ZCcEVHa2dZSEFLOEdzUWFSQmdjQWx3YXpCcGdHQndDWEJyUUdzd1lIQUxVR3RBYTJCZ2NBdFFhekJyUUdCd0MzQnBrR21nWUhBTGNHdUFhWkJnY0F1QWE1QnJvR0J3QzRCcmNHdVFZSEFMc0d0QWE4QmdjQXV3YTJCclFHQndDOEJwY0duZ1lIQUx3R3RBYVhCZ2NBdUFhZkJwa0dCd0M0QnIwR253WUhBTDBHdWdhK0JnY0F2UWE0QnJvR0J3Q3hCcjhHd0FZSEFMRUdzQWEvQmdjQXNRYWhCcEVHQndDeEJzQUdvUVlIQU1BR3VRYTNCZ2NBd0FhL0Jya0dCd0RBQnBvR29RWUhBTUFHdHdhYUJnY0Fvd2F2QnBJR0J3Q2pCc0VHcndZSEFMSUd3UWJDQmdjQXNnYXZCc0VHQndDMUJzRUdzd1lIQUxVR3dnYkJCZ2NBc3dhakJwZ0dCd0N6QnNFR293WUhBTU1HeEFiRkJnY0F3d2JHQnNRR0J3REhCbTBHYkFZSEFNY0d5QVp0QmdjQXRnYkpCclVHQndDMkJzb0d5UVlIQUVRR3lnWkNCZ2NBUkFiSkJzb0dCd0RMQnJrR3pBWUhBTXNHdWdhNUJnY0F6QVpEQnNzR0J3RE1Ca0VHUXdZSEFMc0d5Z2EyQmdjQXV3Yk5Cc29HQndCQ0JzMEdTd1lIQUVJR3lnYk5CZ2NBeXdhK0Jyb0dCd0RMQnM0R3ZnWUhBTTRHUXdaTUJnY0F6Z2JMQmtNR0J3QnRCczhHYXdZSEFHMEd5QWJQQmdjQXdnYklCcklHQndEQ0JzOEd5QVlIQUVRR3p3YkpCZ2NBUkFackJzOEdCd0RDQnNrR3p3WUhBTUlHdFFiSkJnY0EwQWF3QnNjR0J3RFFCcjhHc0FZSEFNY0diZ2JRQmdjQXh3WnNCbTRHQndEUUJya0d2d1lIQU5BR3pBYTVCZ2NBekFadUJrRUdCd0RNQnRBR2JnWUhBTElHMFFhd0JnY0FzZ2JTQnRFR0J3Q3lCdE1HMGdZSEFMSUd5QWJUQmdjQTFBYklCc2NHQndEVUJ0TUd5QVlIQU5FR3h3YXdCZ2NBMFFiVUJzY0dCd0RSQnRVRzFnWUhBTkVHMGdiVkJnY0EwZ2JYQnRVR0J3RFNCdE1HMXdZSEFOY0cxQWJZQmdjQTF3YlRCdFFHQndEWUJ0RUcxZ1lIQU5nRzFBYlJCZ2NBMVFiWkJ0WUdCd0RWQnRvRzJRWUhBTlVHMndiYUJnY0ExUWJYQnRzR0J3RGNCdGNHMkFZSEFOd0cyd2JYQmdjQTJRYllCdFlHQndEWkJ0d0cyQVlIQU5vRzNRYlpCZ2NBMmdiZUJ0MEdCd0RiQnQ0RzJnWUhBTnNHM3diZUJnY0E0QWJiQnR3R0J3RGdCdDhHMndZSEFOMEczQWJaQmdjQTNRYmdCdHdHQndEZUJzUUczUVlIQU40R3hRYkVCZ2NBM3diRkJ0NEdCd0RmQnNNR3hRWUhBTVlHM3diZ0JnY0F4Z2JEQnQ4R0J3REVCdUFHM1FZSEFNUUd4Z2JnQmdjQTRRYmlCdU1HQndEaEJ1UUc0Z1lIQU9VRzVnYm5CZ2NBNVFib0J1WUdCd0RtQnVrRzZnWUhBT1lHNkFicEJnY0E2Z2JyQnV3R0J3RHFCdWtHNndZSEFPMEc2d2J1QmdjQTdRYnNCdXNHQndEdkJ1NEc4QVlIQU84RzdRYnVCZ2NBOFFieUJ2TUdCd0R4QnZRRzhnWUhBT1VHOUFieEJnY0E1UWJuQnZRR0J3RG5CdU1HNGdZSEFPY0c1Z2JqQmdjQTR3YnFCdUVHQndEakJ1WUc2Z1lIQU9FRzdBYmtCZ2NBNFFicUJ1d0dCd0QxQnV3RzdRWUhBUFVHNUFic0JnY0E5Z2J0QnU4R0J3RDJCdlVHN1FZSEFQUUc5d2J5QmdjQTlBYjRCdmNHQndEbkJ2Z0c5QVlIQU9jRzRnYjRCZ2NBK1FieEJ2TUdCd0Q1QnZvRzhRWUhBUG9HNVFieEJnY0ErZ2I3QnVVR0J3RDdCdWdHNVFZSEFQc0cvQWJvQmdjQTZBYjlCdWtHQndEb0J2d0cvUVlIQU9rRy9nYnJCZ2NBNlFiOUJ2NEdCd0RyQnY4RzdnWUhBT3NHL2diL0JnY0E3Z1lBQi9BR0J3RHVCdjhHQUFjSEFBRUgrZ2I1QmdjQUFRY0NCL29HQndBQ0Ivc0crZ1lIQUFJSEF3ZjdCZ2NBQkFmN0JnTUhCd0FFQi93Ryt3WUhBUDBHQkFjRkJ3Y0EvUWI4QmdRSEJ3RCtCZ1VIQmdjSEFQNEcvUVlGQndjQS9nWUhCLzhHQndEK0JnWUhCd2NIQVA4R0NBY0FCd2NBL3dZSEJ3Z0hCd0FKQndFSENnY0hBQWtIQWdjQkJ3Y0FDd2NDQndrSEJ3QUxCd01IQWdjSEFBd0hBd2NMQndjQURBY0VCd01IQndBRkJ3d0hEUWNIQUFVSEJBY01Cd2NBQmdjTkJ3NEhCd0FHQndVSERRY0hBQWNIRGdjUEJ3Y0FCd2NHQnc0SEJ3QUlCdzhIRUFjSEFBZ0hCd2NQQndjQUVRY0pCd29IQndBUkJ4SUhDUWNIQUJJSEN3Y0pCd2NBRWdjVEJ3c0hCd0FVQndzSEV3Y0hBQlFIREFjTEJ3Y0FEUWNVQnhVSEJ3QU5Cd3dIRkFjSEFBNEhGUWNXQndjQURnY05CeFVIQndBT0J4Y0hEd2NIQUE0SEZnY1hCd2NBRHdjWUJ4QUhCd0FQQnhjSEdBY0hBQmtIRWdjUkJ3Y0FHUWNhQnhJSEJ3QWFCeE1IRWdjSEFCb0hHd2NUQndjQUhBY1RCeHNIQndBY0J4UUhFd2NIQUJVSEhBY2RCd2NBRlFjVUJ4d0hCd0FXQngwSEhnY0hBQllIRlFjZEJ3Y0FGZ2NmQnhjSEJ3QVdCeDRISHdjSEFCY0hJQWNZQndjQUZ3Y2ZCeUFIQndBaEJ4b0hHUWNIQUNFSElnY2FCd2NBSWdjYkJ4b0hCd0FpQnlNSEd3Y0hBQ01ISEFjYkJ3Y0FJd2NrQnh3SEJ3QWNCeVVISFFjSEFCd0hKQWNsQndjQUhRY21CeDRIQndBZEJ5VUhKZ2NIQUI0SEp3Y2ZCd2NBSGdjbUJ5Y0hCd0FmQnlnSElBY0hBQjhISndjb0J3Y0E1QWI0QnVJR0J3RGtCdlVHK0FZSEFQVUc5d2I0QmdjQTlRYjJCdmNHQndBcEJ5b0hLd2NIQUNrSExBY3FCd2NBTFFjdUJ5OEhCd0F0QnpBSExnY0hBREVITFFjeUJ3Y0FNUWN3QnkwSEJ3QXpCeklITkFjSEFETUhNUWN5QndjQU13YzFCellIQndBekJ6UUhOUWNIQURZSE53YzRCd2NBTmdjMUJ6Y0hCd0E1QnpvSE93Y0hBRGtIUEFjNkJ3Y0FQQWN1QnpvSEJ3QThCeThITGdjSEFDc0hMd2NwQndjQUt3Y3RCeThIQndBeUJ5c0hLZ2NIQURJSExRY3JCd2NBTkFjcUJ5d0hCd0EwQnpJSEtnY0hBRFFIUFFjMUJ3Y0FOQWNzQnowSEJ3QTFCejRITndjSEFEVUhQUWMrQndjQVB3YzhCemtIQndBL0IwQUhQQWNIQUVBSEx3YzhCd2NBUUFjcEJ5OEhCd0E2QjBFSE93Y0hBRG9IUWdkQkJ3Y0FMZ2RDQnpvSEJ3QXVCME1IUWdjSEFEQUhRd2N1QndjQU1BZEVCME1IQndCRkJ6QUhNUWNIQUVVSFJBY3dCd2NBUmdjeEJ6TUhCd0JHQjBVSE1RY0hBRWNITXdjMkJ3Y0FSd2RHQnpNSEJ3QklCellIT0FjSEFFZ0hSd2MyQndjQVFnZEpCMEVIQndCQ0Iwb0hTUWNIQUVNSFNnZENCd2NBUXdkTEIwb0hCd0JEQjB3SFN3Y0hBRU1IUkFkTUJ3Y0FUQWRGQjAwSEJ3Qk1CMFFIUlFjSEFFMEhSZ2RPQndjQVRRZEZCMFlIQndCUEIwWUhSd2NIQUU4SFRnZEdCd2NBVUFkSEIwZ0hCd0JRQjA4SFJ3Y0hBRWtIVVFkU0J3Y0FTUWRLQjFFSEJ3QktCMU1IVVFjSEFFb0hTd2RUQndjQVN3ZFVCMU1IQndCTEIwd0hWQWNIQUZRSFRRZFZCd2NBVkFkTUIwMEhCd0JWQjA0SFZnY0hBRlVIVFFkT0J3Y0FWZ2RQQjFjSEJ3QldCMDRIVHdjSEFGY0hVQWRZQndjQVZ3ZFBCMUFIQndCUkIxa0hVZ2NIQUZFSFdnZFpCd2NBVXdkYUIxRUhCd0JUQjFzSFdnY0hBRk1IWEFkYkJ3Y0FVd2RVQjF3SEJ3QmNCMVVIWFFjSEFGd0hWQWRWQndjQVhRZFdCMTRIQndCZEIxVUhWZ2NIQUY4SFZnZFhCd2NBWHdkZUIxWUhCd0JnQjFjSFdBY0hBR0FIWHdkWEJ3Y0FXZ2RoQjFrSEJ3QmFCMklIWVFjSEFGc0hZZ2RhQndjQVd3ZGpCMklIQndCYkIyUUhZd2NIQUZzSFhBZGtCd2NBWkFkZEIyVUhCd0JrQjF3SFhRY0hBR1VIWGdkbUJ3Y0FaUWRkQjE0SEJ3Qm5CMTRIWHdjSEFHY0haZ2RlQndjQWFBZGZCMkFIQndCb0IyY0hYd2NIQUdJSGFRZGhCd2NBWWdkcUIya0hCd0JqQjJvSFlnY0hBR01IYXdkcUJ3Y0FaQWRyQjJNSEJ3QmtCMndIYXdjSEFHMEhaQWRsQndjQWJRZHNCMlFIQndCdUIyVUhaZ2NIQUc0SGJRZGxCd2NBYndkbUIyY0hCd0J2QjI0SFpnY0hBSEFIWndkb0J3Y0FjQWR2QjJjSEJ3QkFCeXdIS1FjSEFFQUhQUWNzQndjQVB3YzlCMEFIQndBL0J6NEhQUWNIQUhFSGNnZHpCd2NBY1FkMEIzSUhCd0IxQjNZSGR3Y0hBSFVIZUFkMkJ3Y0FlUWQ0QjNVSEJ3QjVCeUVIZUFjSEFIb0hJUWQ1QndjQWVnY2lCeUVIQndCN0J5SUhlZ2NIQUhzSEl3Y2lCd2NBZXdja0J5TUhCd0I3QjN3SEpBY0hBQ1FIZlFjbEJ3Y0FKQWQ4QjMwSEJ3QWxCMzRISmdjSEFDVUhmUWQrQndjQUp3ZCtCMzhIQndBbkJ5WUhmZ2NIQUNnSGZ3ZUFCd2NBS0FjbkIzOEhCd0IyQjRBSGR3Y0hBSFlIS0FlQUJ3Y0FnUWQxQjNjSEJ3Q0JCNElIZFFjSEFJSUhlUWQxQndjQWdnZURCM2tIQndDREIzb0hlUWNIQUlNSGhBZDZCd2NBaEFkN0Izb0hCd0NFQjRVSGV3Y0hBSVVIZkFkN0J3Y0FoUWVHQjN3SEJ3QjhCNGNIZlFjSEFId0hoZ2VIQndjQWZRZUlCMzRIQndCOUI0Y0hpQWNIQUg0SGlRZC9Cd2NBZmdlSUI0a0hCd0IvQjRvSGdBY0hBSDhIaVFlS0J3Y0FnQWVCQjNjSEJ3Q0FCNG9IZ1FjSEFISUhnZ2VCQndjQWNnZDBCNElIQndCMEI0TUhnZ2NIQUhRSGNRZURCd2NBY1FlRUI0TUhCd0J4QjRzSGhBY0hBSXNIaFFlRUJ3Y0Fpd2VNQjRVSEJ3Q05CNFVIakFjSEFJMEhoZ2VGQndjQWh3ZU5CNDRIQndDSEI0WUhqUWNIQUlnSGpnZVBCd2NBaUFlSEI0NEhCd0NJQjVBSGlRY0hBSWdIandlUUJ3Y0FpUWR6QjRvSEJ3Q0pCNUFIY3djSEFJb0hjZ2VCQndjQWlnZHpCM0lIQndDTEIzTUhrQWNIQUlzSGNRZHpCd2NBandlTkI0d0hCd0NQQjQ0SGpRY0hBSXdIa0FlUEJ3Y0FqQWVMQjVBSEJ3Q1JCNUlIa3djSEFKRUhsQWVTQndjQWxRZVdCNWNIQndDVkI1Z0hsZ2NIQUpnSG1RZVdCd2NBbUFkcEI1a0hCd0JwQjVvSG1RY0hBR2tIYWdlYUJ3Y0FhZ2ViQjVvSEJ3QnFCMnNIbXdjSEFHd0htd2RyQndjQWJBZWNCNXNIQndDZEIyd0hiUWNIQUowSG5BZHNCd2NBbmdkdEIyNEhCd0NlQjUwSGJRY0hBSjRIYndlZkJ3Y0FuZ2R1QjI4SEJ3Q2ZCM0FIb0FjSEFKOEhid2R3QndjQW9BZVZCNWNIQndDZ0IzQUhsUWNIQUpZSG9RZVhCd2NBbGdlaUI2RUhCd0NaQjZJSGxnY0hBSmtIb3dlaUJ3Y0FtZ2VqQjVrSEJ3Q2FCNlFIb3djSEFKc0hwQWVhQndjQW13ZWxCNlFIQndDY0I2VUhtd2NIQUp3SHBnZWxCd2NBcHdlY0I1MEhCd0NuQjZZSG5BY0hBS2dIblFlZUJ3Y0FxQWVuQjUwSEJ3Q3BCNTRIbndjSEFLa0hxQWVlQndjQXFnZWZCNkFIQndDcUI2a0hud2NIQUtFSG9BZVhCd2NBb1FlcUI2QUhCd0NpQjVFSG9RY0hBS0lIbEFlUkJ3Y0Fvd2VVQjZJSEJ3Q2pCNUlIbEFjSEFLUUhrZ2VqQndjQXBBZXJCNUlIQndDbEI2c0hwQWNIQUtVSHJBZXJCd2NBcFFldEI2d0hCd0NsQjZZSHJRY0hBSzBIcHdldUJ3Y0FyUWVtQjZjSEJ3Q3VCNmdIcndjSEFLNEhwd2VvQndjQXNBZW9CNmtIQndDd0I2OEhxQWNIQUpNSHFRZXFCd2NBa3dld0I2a0hCd0NSQjZvSG9RY0hBSkVIa3dlcUJ3Y0Frd2VyQjdBSEJ3Q1RCNUlIcXdjSEFLMEhyd2VzQndjQXJRZXVCNjhIQndDd0I2d0hyd2NIQUxBSHF3ZXNCd2NBc1FleUI3TUhCd0N4QjdRSHNnY0hBUE1HdEFleEJ3Y0E4d2J5QnJRSEJ3QzBCN1VIc2djSEFMUUh0Z2UxQndjQThnYTJCN1FIQndEeUJ2Y0d0Z2NIQUxjSHNRZXpCd2NBdHdlNEI3RUhCd0M0Qi9NR3NRY0hBTGdIK1FiekJnY0E4QWEzQjdNSEJ3RHdCZ0FIdHdjSEFMa0h1QWUzQndjQXVRZTZCN2dIQndDNkIva0d1QWNIQUxvSEFRZjVCZ2NBQUFlNUI3Y0hCd0FBQndnSHVRY0hBTHNIdVFlOEJ3Y0F1d2U2QjdrSEJ3QUtCN29IdXdjSEFBb0hBUWU2QndjQXVRY1FCN3dIQndDNUJ3Z0hFQWNIQUwwSHV3ZThCd2NBdlFlK0I3c0hCd0MrQndvSHV3Y0hBTDRIRVFjS0J3Y0FFQWU5Qjd3SEJ3QVFCeGdIdlFjSEFMOEh2Z2U5QndjQXZ3ZkFCNzRIQndEQUJ4RUh2Z2NIQU1BSEdRY1JCd2NBR0FlL0I3MEhCd0FZQnlBSHZ3Y0hBSFlId0FlL0J3Y0FkZ2Q0QjhBSEJ3QjRCeGtId0FjSEFIZ0hJUWNaQndjQUlBZDJCNzhIQndBZ0J5Z0hkZ2NIQVBZR3RnZjNCZ2NBOWdhMUI3WUhCd0RCQjdNSHdnY0hBTUVIOEFhekJ3Y0F3d2Z3QnNFSEJ3RERCKzhHOEFZSEFMTUh4QWZDQndjQXN3ZXlCOFFIQndERkIrOEd3d2NIQU1VSDlnYnZCZ2NBdFFmRkI4WUhCd0MxQi9ZR3hRY0hBTElIeGdmRUJ3Y0FzZ2UxQjhZSEJ3REhCOElIeUFjSEFNY0h3UWZDQndjQXh3ZkRCOEVIQndESEI4a0h3d2NIQU1RSHlBZkNCd2NBeEFmS0I4Z0hCd0RGQjhrSHl3Y0hBTVVId3dmSkJ3Y0F4UWZNQjhZSEJ3REZCOHNIekFjSEFNWUh5Z2ZFQndjQXhnZk1COG9IQndETkI4NEh6d2NIQU0wSDBBZk9Cd2NBMEFjN0I4NEhCd0RRQnprSE93Y0hBTkVIMEFmTkJ3Y0EwUWZTQjlBSEJ3RFNCemtIMEFjSEFOSUhQd2M1QndjQXpnZlRCODhIQndET0I5UUgwd2NIQURzSDFBZk9Cd2NBT3dkQkI5UUhCd0RUQnpnSHp3Y0hBTk1IU0FjNEJ3Y0ExQWZWQjlNSEJ3RFVCOVlIMVFjSEFFRUgxZ2ZVQndjQVFRZEpCOVlIQndEVkIwZ0gwd2NIQU5VSFVBZElCd2NBMVFmWEI5Z0hCd0RWQjlZSDF3Y0hBTllIVWdmWEJ3Y0ExZ2RKQjFJSEJ3QllCOVVIMkFjSEFGZ0hVQWZWQndjQTF3ZlpCOWdIQndEWEI5b0gyUWNIQUZJSDJnZlhCd2NBVWdkWkI5b0hCd0RaQjFnSDJBY0hBTmtIWUFkWUJ3Y0EyZ2ZiQjlrSEJ3RGFCOXdIMndjSEFGa0gzQWZhQndjQVdRZGhCOXdIQndEYkIyQUgyUWNIQU5zSGFBZGdCd2NBM0FlVkI5c0hCd0RjQjVnSGxRY0hBR0VIbUFmY0J3Y0FZUWRwQjVnSEJ3Q1ZCMmdIMndjSEFKVUhjQWRvQndjQTBnYytCejhIQndEU0I5RUhQZ2NIQU04SDNRZmVCd2NBendjNEI5MEhCd0E0Qjk4SDNRY0hBRGdITndmZkJ3Y0E0QWZQQjk0SEJ3RGdCODBIendjSEFEY0g0UWZmQndjQU53YytCK0VIQndEaEI5RUg0Z2NIQU9FSFBnZlJCd2NBNGdmTkIrQUhCd0RpQjlFSHpRY0hBTjRINHdma0J3Y0EzZ2ZkQitNSEJ3RGZCK01IM1FjSEFOOEg1UWZqQndjQTVBZmdCOTRIQndEa0IrWUg0QWNIQU9VSDRRZm5Cd2NBNVFmZkIrRUhCd0RvQitFSDRnY0hBT2dINXdmaEJ3Y0E1Z2ZpQitBSEJ3RG1CK2dINGdjSEFPa0g2Z2ZyQndjQTZRZnNCK29IQndEdEIrc0g3Z2NIQU8wSDZRZnJCd2NBNndmdkIrNEhCd0RyQitvSDd3Y0hBT29IOEFmdkJ3Y0E2Z2ZzQi9BSEJ3RHRCK3dINlFjSEFPMEg4QWZzQndjQThRZnlCL01IQndEeEIvUUg4Z2NIQVBVSDlBZnhCd2NBOVFmMkIvUUhCd0QzQi9VSCtBY0hBUGNIOWdmMUJ3Y0E4Z2Y0Qi9NSEJ3RHlCL2NIK0FjSEFQa0grZ2Y3QndjQStRZjhCL29IQndEN0IvMEgvZ2NIQVBzSCtnZjlCd2NBL1FmL0IvNEhCd0Q5QndBSS93Y0hBQUFJK1FmL0J3Y0FBQWo4Qi9rSEJ3RHpCd0VJOFFjSEFQTUhBZ2dCQ0FjQSt3Y0NDUGtIQndEN0J3RUlBZ2dIQVBFSEF3ajFCd2NBOFFjQkNBTUlCd0QrQndFSSt3Y0hBUDRIQXdnQkNBY0FBd2o0Qi9VSEJ3QURDQVFJK0FjSEFQOEhBd2orQndjQS93Y0VDQU1JQndBRUNQTUgrQWNIQUFRSUFnanpCd2NBK1FjRUNQOEhCd0Q1QndJSUJBZ0hBQVVJOGdmMEJ3Y0FCUWdHQ1BJSEJ3QUhDUFFIOWdjSEFBY0lCUWowQndjQThnY0lDUGNIQndEeUJ3WUlDQWdIQVBjSEJ3ajJCd2NBOXdjSUNBY0lCd0FGQ0FrSUJnZ0hBQVVJQ2dnSkNBY0E3Z2NLQ08wSEJ3RHVCd2tJQ2dnSEFPMEhDd2p3QndjQTdRY0tDQXNJQndBR0NBd0lDQWdIQUFZSUNRZ01DQWNBN3djSkNPNEhCd0R2Qnd3SUNRZ0hBQWdJQ3dnSENBY0FDQWdNQ0FzSUJ3RHdCd3dJN3djSEFQQUhDd2dNQ0FjQURRZ09DQThJQndBTkNCQUlEZ2dIQUE4SUVRZ1NDQWNBRHdnT0NCRUlCd0FUQ0E4SUVnZ0hBQk1JRFFnUENBY0FGQWdOQ0JNSUJ3QVVDQkFJRFFnSEFCQUlFUWdPQ0FjQUVBZ1VDQkVJQndBVkNCWUlGd2dIQUJVSUdBZ1dDQWNBR0FnWkNCWUlCd0FZQ0JvSUdRZ0hBQmtJR3dnY0NBY0FHUWdhQ0JzSUJ3QWNDQlVJRndnSEFCd0lHd2dWQ0FjQUhRZ2VDQjhJQndBZENDQUlIZ2dIQUNFSUh3Z2lDQWNBSVFnZENCOElCd0FqQ0NFSUlnZ0hBQ01JSkFnaENBY0FIZ2drQ0NNSUJ3QWVDQ0FJSkFnSEFDVUlGd2dXQ0FjQUpRZ21DQmNJQndBbUNCOElIZ2dIQUNZSUpRZ2ZDQWNBSndnV0NCa0lCd0FuQ0NVSUZnZ0hBQ1VJSWdnZkNBY0FKUWduQ0NJSUJ3QWNDQ2NJR1FnSEFCd0lLQWduQ0FjQUp3Z2pDQ0lJQndBbkNDZ0lJd2dIQUJjSUtBZ2NDQWNBRndnbUNDZ0lCd0FvQ0I0SUl3Z0hBQ2dJSmdnZUNBY0FGUWdwQ0JnSUJ3QVZDQ29JS1FnSEFCZ0lLd2dhQ0FjQUdBZ3BDQ3NJQndBc0NCVUlHd2dIQUN3SUtnZ1ZDQWNBS3dnYkNCb0lCd0FyQ0N3SUd3Z0hBQzBJS1FncUNBY0FMUWd1Q0NrSUJ3QXVDQklJRVFnSEFDNElMUWdTQ0FjQUx3Z1JDQlFJQndBdkNDNElFUWdIQURBSUtnZ3NDQWNBTUFndENDb0lCd0F0Q0JNSUVnZ0hBQzBJTUFnVENBY0FMd2dzQ0NzSUJ3QXZDREFJTEFnSEFEQUlGQWdUQ0FjQU1BZ3ZDQlFJQndBeENBVUlNZ2dIQURFSUNnZ0ZDQWNBTXdnS0NERUlCd0F6Q0FzSUNnZ0hBQWNJTXdnMENBY0FCd2dMQ0RNSUJ3QUZDRFFJTWdnSEFBVUlCd2cwQ0FjQUt3ZzFDRFlJQndBckNDa0lOUWdIQUM4SU5nZzNDQWNBTHdnckNEWUlCd0E0Q0M4SU53Z0hBRGdJTGdndkNBY0FOUWd1Q0RnSUJ3QTFDQ2tJTGdnSEFEa0lNZ2c2Q0FjQU9RZ3hDRElJQndBN0NERUlPUWdIQURzSU13Z3hDQWNBTkFnN0NEd0lCd0EwQ0RNSU93Z0hBRElJUEFnNkNBY0FNZ2cwQ0R3SUJ3QTJDRDBJUGdnSEFEWUlOUWc5Q0FjQU53ZytDRDhJQndBM0NEWUlQZ2dIQUVBSU53Zy9DQWNBUUFnNENEY0lCd0E5Q0RnSVFBZ0hBRDBJTlFnNENBY0EvQWRCQ1BvSEJ3RDhCMElJUVFnSEFQb0hRd2o5QndjQStnZEJDRU1JQndEOUIwUUlBQWdIQVAwSFF3aEVDQWNBQUFoQ0NQd0hCd0FBQ0VRSVFnZ0hBQjBJUlFnZ0NBY0FIUWhHQ0VVSUJ3QWhDRVlJSFFnSEFDRUlSd2hHQ0FjQUpBaEhDQ0VJQndBa0NFZ0lSd2dIQUNBSVNBZ2tDQWNBSUFoRkNFZ0lCd0JDQ0VrSVFRZ0hBRUlJU2doSkNBY0FTd2hLQ0V3SUJ3QkxDRWtJU2dnSEFFMElTUWhMQ0FjQVRRaE9DRWtJQndCRENFOElSQWdIQUVNSVRnaFBDQWNBVUFoT0NFMElCd0JRQ0U4SVRnZ0hBRVFJU2doQ0NBY0FSQWhQQ0VvSUJ3Qk1DRThJVUFnSEFFd0lTZ2hQQ0FjQVVRaEZDRVlJQndCUkNGSUlSUWdIQUZNSVVRaFVDQWNBVXdoU0NGRUlCd0JVQ0ZVSVZnZ0hBRlFJVVFoVkNBY0FWd2hIQ0VnSUJ3QlhDRlVJUndnSEFGWUlWd2hZQ0FjQVZnaFZDRmNJQndCU0NFZ0lSUWdIQUZJSVZ3aElDQWNBV0FoU0NGTUlCd0JZQ0ZjSVVnZ0hBRTRJV1FoYUNBY0FUZ2hEQ0ZrSUJ3QkpDRm9JV3dnSEFFa0lUZ2hhQ0FjQVhBaEpDRnNJQndCY0NFRUlTUWdIQUZrSVFRaGNDQWNBV1FoRENFRUlCd0JkQ0VjSVhnZ0hBRjBJUmdoSENBY0FVUWhkQ0Y4SUJ3QlJDRVlJWFFnSEFGVUlYd2hnQ0FjQVZRaFJDRjhJQndCZUNGVUlZQWdIQUY0SVJ3aFZDQWNBV2doaENHSUlCd0JhQ0ZrSVlRZ0hBRnNJWWdoakNBY0FXd2hhQ0dJSUJ3QmtDRnNJWXdnSEFHUUlYQWhiQ0FjQVlRaGNDR1FJQndCaENGa0lYQWdIQUdVSVhnaG1DQWNBWlFoZENGNElCd0JmQ0dVSVp3Z0hBRjhJWFFobENBY0FZQWhuQ0dnSUJ3QmdDRjhJWndnSEFHWUlZQWhvQ0FjQVpnaGVDR0FJQndCcENHb0lhd2dIQUdrSWJBaHFDQWNBYXdodENHNElCd0JyQ0dvSWJRZ0hBRzhJYXdodUNBY0Fid2hwQ0dzSUJ3QndDR2tJYndnSEFIQUliQWhwQ0FjQWJBaHRDR29JQndCc0NIQUliUWdIQUhFSWNnaHpDQWNBY1FoMENISUlCd0IwQ0hVSWNnZ0hBSFFJZGdoMUNBY0FkUWgzQ0hnSUJ3QjFDSFlJZHdnSEFIZ0ljUWh6Q0FjQWVBaDNDSEVJQndCNUNIb0lld2dIQUhrSWZBaDZDQWNBZlFoN0NINElCd0I5Q0hrSWV3Z0hBSDhJZlFoK0NBY0Fmd2lBQ0gwSUJ3QjZDSUFJZndnSEFIb0lmQWlBQ0FjQWdRaHpDSElJQndDQkNJSUljd2dIQUlJSWV3aDZDQWNBZ2dpQkNIc0lCd0NEQ0hJSWRRZ0hBSU1JZ1FoeUNBY0FnUWgrQ0hzSUJ3Q0JDSU1JZmdnSEFIZ0lnd2gxQ0FjQWVBaUVDSU1JQndDRENIOElmZ2dIQUlNSWhBaC9DQWNBY3dpRUNIZ0lCd0J6Q0lJSWhBZ0hBSVFJZWdoL0NBY0FoQWlDQ0hvSUJ3QnhDSVVJZEFnSEFIRUloZ2lGQ0FjQWRBaUhDSFlJQndCMENJVUlod2dIQUlnSWNRaDNDQWNBaUFpR0NIRUlCd0NIQ0hjSWRnZ0hBSWNJaUFoM0NBY0FpUWlGQ0lZSUJ3Q0pDSW9JaFFnSEFJb0liZ2h0Q0FjQWlnaUpDRzRJQndDTENHMEljQWdIQUlzSWlnaHRDQWNBakFpR0NJZ0lCd0NNQ0lrSWhnZ0hBSWtJYndodUNBY0FpUWlNQ0c4SUJ3Q0xDSWdJaHdnSEFJc0lqQWlJQ0FjQWpBaHdDRzhJQndDTUNJc0ljQWdIQUkwSWpnaVBDQWNBalFpUUNJNElCd0NSQ0k4SWtnZ0hBSkVJalFpUENBY0Fqd2lUQ0pJSUJ3Q1BDSTRJa3dnSEFJNElsQWlUQ0FjQWpnaVFDSlFJQndDUkNKQUlqUWdIQUpFSWxBaVFDQWNBbFFpV0NKY0lCd0NWQ0pnSWxnZ0hBSmtJbUFpVkNBY0FtUWlhQ0pnSUJ3Q2JDSmtJbkFnSEFKc0ltZ2laQ0FjQWxnaWNDSmNJQndDV0NKc0luQWdIQUowSW5naWZDQWNBblFpZ0NKNElCd0NmQ0tFSW9nZ0hBSjhJbmdpaENBY0FvUWlqQ0tJSUJ3Q2hDS1FJb3dnSEFLUUluUWlqQ0FjQXBBaWdDSjBJQndDWENLVUlsUWdIQUpjSXBnaWxDQWNBbndpbUNKMElCd0NmQ0tVSXBnZ0hBSlVJcHdpWkNBY0FsUWlsQ0tjSUJ3Q2lDS1VJbndnSEFLSUlwd2lsQ0FjQXB3aWNDSmtJQndDbkNLZ0luQWdIQUtNSXB3aWlDQWNBb3dpb0NLY0lCd0NvQ0pjSW5BZ0hBS2dJcGdpWENBY0FuUWlvQ0tNSUJ3Q2RDS1lJcUFnSEFLa0lsZ2lZQ0FjQXFRaXFDSllJQndDckNKZ0ltZ2dIQUtzSXFRaVlDQWNBbGdpc0NKc0lCd0NXQ0tvSXJBZ0hBSnNJcXdpYUNBY0Ftd2lzQ0tzSUJ3Q3BDSzBJcWdnSEFLa0lyZ2l0Q0FjQWtnaXVDSkVJQndDU0NLMElyZ2dIQUpFSXJ3aVVDQWNBa1FpdUNLOElCd0NxQ0xBSXJBZ0hBS29JclFpd0NBY0Frd2l0Q0pJSUJ3Q1RDTEFJclFnSEFLd0lyd2lyQ0FjQXJBaXdDSzhJQndDVUNMQUlrd2dIQUpRSXJ3aXdDQWNBaFFpeENMSUlCd0NGQ0lvSXNRZ0hBSW9Jc3dpeENBY0FpZ2lMQ0xNSUJ3Q3pDSWNJdEFnSEFMTUlpd2lIQ0FjQXRBaUZDTElJQndDMENJY0loUWdIQUxVSXF3aTJDQWNBdFFpcENLc0lCd0MyQ0s4SXR3Z0hBTFlJcXdpdkNBY0Fyd2k0Q0xjSUJ3Q3ZDSzRJdUFnSEFLNEl0UWk0Q0FjQXJnaXBDTFVJQndDeUNMa0l1Z2dIQUxJSXNRaTVDQWNBc1FpN0NMa0lCd0N4Q0xNSXV3Z0hBTHNJdEFpOENBY0F1d2l6Q0xRSUJ3QzhDTElJdWdnSEFMd0l0QWl5Q0FjQXZRaTJDTDRJQndDOUNMVUl0Z2dIQUw0SXR3aS9DQWNBdmdpMkNMY0lCd0MzQ01BSXZ3Z0hBTGNJdUFqQUNBY0F1QWk5Q01BSUJ3QzRDTFVJdlFnSEFNRUlmQWg1Q0FjQXdRakNDSHdJQndERENIa0lmUWdIQU1NSXdRaDVDQWNBeEFoOUNJQUlCd0RFQ01NSWZRZ0hBTUlJZ0FoOENBY0F3Z2pFQ0lBSUJ3REZDSjRJb0FnSEFNVUl4Z2llQ0FjQXhnaWhDSjRJQndER0NNY0lvUWdIQU1jSXBBaWhDQWNBeHdqSUNLUUlCd0RJQ0tBSXBBZ0hBTWdJeFFpZ0NBY0F5UWpDQ01FSUJ3REpDTW9Jd2dnSEFNb0lTd2hNQ0FjQXlnakpDRXNJQndESkNFMElTd2dIQU1rSXl3aE5DQWNBekFqRENNUUlCd0RNQ01zSXd3Z0hBTXNJVUFoTkNBY0F5d2pNQ0ZBSUJ3REtDTVFJd2dnSEFNb0l6QWpFQ0FjQXpBaE1DRkFJQndETUNNb0lUQWdIQU1VSXpRakdDQWNBeFFqT0NNMElCd0ROQ0ZNSVZBZ0hBTTBJemdoVENBY0F6d2hVQ0ZZSUJ3RFBDTTBJVkFnSEFNY0kwQWpJQ0FjQXh3alBDTkFJQndEUUNGWUlXQWdIQU5BSXp3aFdDQWNBeUFqT0NNVUlCd0RJQ05BSXpnZ0hBTTRJV0FoVENBY0F6Z2pRQ0ZnSUJ3RFJDTXNJMGdnSEFORUl3d2pMQ0FjQTBnakpDTk1JQndEU0NNc0l5UWdIQU1rSTFBalRDQWNBeVFqQkNOUUlCd0RCQ05FSTFBZ0hBTUVJd3dqUkNBY0F4d2pWQ05ZSUJ3REhDTVlJMVFnSEFOVUl6UWpYQ0FjQTFRakdDTTBJQndEWENNOEkyQWdIQU5jSXpRalBDQWNBendqV0NOZ0lCd0RQQ01jSTFnZ0hBTmtJMGdqYUNBY0EyUWpSQ05JSUJ3RGFDTk1JMndnSEFOb0kwZ2pUQ0FjQTB3amNDTnNJQndEVENOUUkzQWdIQU5RSTJRamNDQWNBMUFqUkNOa0lCd0RXQ04wSTNnZ0hBTllJMVFqZENBY0EzUWpYQ044SUJ3RGRDTlVJMXdnSEFOOEkyQWpnQ0FjQTN3alhDTmdJQndEWUNONEk0QWdIQU5nSTFnamVDQWNBNFFqaUNPTUlCd0RoQ09RSTRnZ0hBRTRENHdoTkF3Y0FUZ1BoQ09NSUJ3RGpDRklEVFFNSEFPTUk0Z2hTQXdjQTRnaFFBMUlEQndEaUNPUUlVQU1IQUU0RDVBamhDQWNBVGdOUUErUUlCd0E5QTBRRE93TUhBRDBEUlFORUF3Y0FRQU5GQXowREJ3QkFBMGdEUlFNSEFFb0RRQU5CQXdjQVNnTklBMEFEQndCRUEwRURPd01IQUVRRFNnTkJBd2NBT1FPd0FhMEJCd0E1QXpvRHNBRUhBS01CVVFGZEFRY0Fvd0drQVZFQkJ3QURBcVFCb3dFSEFBTUNBUUtrQVFjQU1nSUJBZ01DQndBeUFqQUNBUUlIQUQwQ0RBSU9BZ2NBUFFJN0Fnd0NCd0NSQWMwQmxRRUhBSkVCbEFITkFRY0FsUUhRQVpvQkJ3Q1ZBYzBCMEFFSEFBNENtQUdhQVFjQURnSU1BcGdCQndEbENPWUk1d2dIQU9VSTZBam1DQWNBNlFqcUNPc0lCd0RwQ093STZnZ0hBT3NJN1FqdUNBY0E2d2pxQ08wSUJ3RHVDTzhJOEFnSEFPNEk3UWp2Q0FjQThBanhDUElJQndEd0NPOEk4UWdIQU9VSTh3ajBDQWNBNVFqbkNQTUlCd0RxQ1BVSTlnZ0hBT29JN0FqMUNBY0E3UWoyQ1BjSUJ3RHRDT29JOWdnSEFPOEk5d2o0Q0FjQTd3anRDUGNJQndEeENQZ0krUWdIQVBFSTd3ajRDQWNBNkFqNkNQc0lCd0RvQ09VSStnZ0hBT2tJK2dqc0NBY0E2UWo3Q1BvSUJ3RHNDUHdJOVFnSEFPd0krZ2o4Q0FjQStnajBDUHdJQndENkNPVUk5QWdIQVAwSS9nai9DQWNBL1FnQUNmNElCd0QvQ0FFSkFna0hBUDhJL2dnQkNRY0FBd2tFQ1FVSkJ3QURDUVlKQkFrSEFQNElCd2tJQ1FjQS9nZ0FDUWNKQndBQkNRZ0pDUWtIQUFFSi9nZ0lDUWNBQ2drTENRd0pCd0FLQ1EwSkN3a0hBQTRKQ1FrUENRY0FEZ2tCQ1FrSkJ3QU5DUThKQ3drSEFBMEpEZ2tQQ1FjQURna0NDUUVKQndBT0NSQUpBZ2tIQUFZSkVRa1NDUWNBQmdrRENSRUpCd0FUQ1JRSkZRa0hBQk1KRmdrVUNRY0FGZ2tYQ1JRSkJ3QVdDUmdKRndrSEFCY0pHUWthQ1FjQUZ3a1lDUmtKQndBYUNRb0pHd2tIQUJvSkdRa0tDUWNBSEFrTUNSMEpCd0FjQ1FvSkRBa0hBT2dJSFFubUNBY0E2QWdjQ1IwSkJ3QWNDUnNKQ2drSEFCd0pIZ2tiQ1FjQTZBZ2VDUndKQndEb0NQc0lIZ2tIQUI0Skdna2JDUWNBSGdrZkNSb0pCd0Q3Q0I4Skhna0hBUHNJNlFnZkNRY0FId2tYQ1JvSkJ3QWZDU0FKRndrSEFPa0lJQWtmQ1FjQTZRanJDQ0FKQndBZ0NSUUpGd2tIQUNBSklRa1VDUWNBNndnaENTQUpCd0RyQ080SUlRa0hBQ0VKRlFrVUNRY0FJUWtpQ1JVSkJ3RHVDQ0lKSVFrSEFPNEk4QWdpQ1FjQUl3a2tDU1VKQndBakNTWUpKQWtIQUNZSjhBZ2tDUWNBSmdraUNmQUlCd0FuQ2ZBSThnZ0hBQ2NKSkFud0NBY0E4Z2dvQ1NrSkJ3RHlDUEVJS0FrSEFDVUpKd2txQ1FjQUpRa2tDU2NKQndBcENTY0o4Z2dIQUNrSkt3a25DUWNBSXdraUNTWUpCd0FqQ1N3Sklna0hBQ0lKRXdrVkNRY0FJZ2tzQ1JNSkJ3QXBDUzBKTGdrSEFDa0pLQWt0Q1FjQStRZ29DZkVJQndENUNDOEpLQWtIQUNrSk1Ba3JDUWNBS1FrdUNUQUpCd0Q1Q0RFSkx3a0hBUGtJTWdreENRY0ErQWd5Q2ZrSUJ3RDRDRE1KTWdrSEFQY0lNd240Q0FjQTl3ZzBDVE1KQndEMkNEUUo5d2dIQVBZSU5RazBDUWNBOVFnMUNmWUlCd0QxQ0RZSk5Ra0hBUHdJTmduMUNBY0EvQWczQ1RZSkJ3RDBDRGNKL0FnSEFQUUlPQWszQ1FjQTh3ZzRDZlFJQndEekNEa0pPQWtIQU9ZSU9nbm5DQWNBNWdnN0NUb0pCd0FkQ1RzSjVnZ0hBQjBKUEFrN0NRY0FEQWs4Q1IwSkJ3QU1DVDBKUEFrSEFBc0pQUWtNQ1FjQUN3aytDVDBKQndBUENUNEpDd2tIQUE4SlB3aytDUWNBQ1FrL0NROEpCd0FKQ1VBSlB3a0hBQWdKUUFrSkNRY0FDQWxCQ1VBSkJ3QUhDVUVKQ0FrSEFBY0pRZ2xCQ1FjQU1Ra29DUzhKQndBeENTMEpLQWtIQUVNSlJBa1pDUWNBUXdsRkNVUUpCd0JHQ1VVSlF3a0hBRVlKUndsRkNRY0FSUWtRQ1VRSkJ3QkZDVWdKRUFrSEFFY0pTQWxGQ1FjQVJ3bEpDVWdKQndCSUNRSUpFQWtIQUVnSlNna0NDUWNBU1FsS0NVZ0pCd0JKQ1VzSlNna0hBRW9KL3dnQ0NRY0FTZ2xNQ2Y4SUJ3QkxDVXdKU2drSEFFc0pUUWxNQ1FjQVRBbjlDUDhJQndCTUNVNEovUWdIQUUwSlRnbE1DUWNBVFFsUENVNEpCd0JRQ1JrSkdBa0hBRkFKUXdrWkNRY0FVUWxEQ1ZBSkJ3QlJDVVlKUXdrSEFGSUpHQWtXQ1FjQVVnbFFDUmdKQndCVENWQUpVZ2tIQUZNSlVRbFFDUWNBVkFrV0NSTUpCd0JVQ1ZJSkZna0hBRlVKVWdsVUNRY0FWUWxUQ1ZJSkJ3QldDUk1KTEFrSEFGWUpWQWtUQ1FjQVZ3bFVDVllKQndCWENWVUpWQWtIQUZnSkxBa2pDUWNBV0FsV0NTd0pCd0JaQ1ZZSldBa0hBRmtKVndsV0NRY0FXZ2tqQ1NVSkJ3QmFDVmdKSXdrSEFGc0pXQWxhQ1FjQVd3bFpDVmdKQndCY0NTVUpLZ2tIQUZ3Sldna2xDUWNBWFFsYUNWd0pCd0JkQ1ZzSldna0hBRjRKS2dsZkNRY0FYZ2xjQ1NvSkJ3QmdDVndKWGdrSEFHQUpYUWxjQ1FjQVlRbGZDV0lKQndCaENWNEpYd2tIQUdNSlhnbGhDUWNBWXdsZ0NWNEpCd0JQQ1dRSlpRa0hBRThKVFFsa0NRY0FTd2xrQ1UwSkJ3QkxDV1lKWkFrSEFFa0paZ2xMQ1FjQVNRbG5DV1lKQndCSENXY0pTUWtIQUVjSmFBbG5DUWNBUmdsb0NVY0pCd0JHQ1drSmFBa0hBRmNKYWdsVkNRY0FWd2xyQ1dvSkJ3QlpDV3NKVndrSEFGa0piQWxyQ1FjQVd3bHNDVmtKQndCYkNXMEpiQWtIQUYwSmJRbGJDUWNBWFFsdUNXMEpCd0JnQ1c0SlhRa0hBR0FKYndsdUNRY0FZd2x2Q1dBSkJ3QmpDWEFKYndrSEFGRUphUWxHQ1FjQVVRbHhDV2tKQndCVENYRUpVUWtIQUZNSmNnbHhDUWNBVlFseUNWTUpCd0JWQ1dvSmNna0hBSE1KYkFsdENRY0Fjd2wwQ1d3SkJ3QjBDV3NKYkFrSEFIUUpkUWxyQ1FjQWRRbHFDV3NKQndCMUNYWUphZ2tIQUhZSmNnbHFDUWNBZGdsM0NYSUpCd0IzQ1hFSmNna0hBSGNKZUFseENRY0FlQWxwQ1hFSkJ3QjRDWGtKYVFrSEFIa0phQWxwQ1FjQWVRbDZDV2dKQndCNkNXY0phQWtIQUhvSmV3bG5DUWNBZXdsbUNXY0pCd0I3Q1h3Slpna0hBSHdKWkFsbUNRY0FmQWw5Q1dRSkJ3QjlDV1VKWkFrSEFIMEpmZ2xsQ1FjQWZ3bHRDVzRKQndCL0NYTUpiUWtIQUlBSmJnbHZDUWNBZ0FsL0NXNEpCd0NCQ1c4SmNBa0hBSUVKZ0FsdkNRY0FmUW1DQ1g0SkJ3QjlDWU1KZ2drSEFId0pnd2w5Q1FjQWZBbUVDWU1KQndCK0NZVUpaUWtIQUg0SmdnbUZDUWNBWlFtR0NVOEpCd0JsQ1lVSmhna0hBRThKaHdsT0NRY0FUd21HQ1ljSkJ3Qk9DWWdKL1FnSEFFNEpod21JQ1FjQS9RaUpDUUFKQndEOUNJZ0ppUWtIQUFBSmlna0hDUWNBQUFtSkNZb0pCd0FIQ1lzSlFna0hBQWNKaWdtTENRY0FRZ21NQ1VFSkJ3QkNDWXNKakFrSEFFRUpqUWxBQ1FjQVFRbU1DWTBKQndCQUNZNEpQd2tIQUVBSmpRbU9DUWNBUHdtUENUNEpCd0EvQ1k0Smp3a0hBRDRKa0FrOUNRY0FQZ21QQ1pBSkJ3QTlDWkVKUEFrSEFEMEprQW1SQ1FjQVBBbVNDVHNKQndBOENaRUprZ2tIQURzSmt3azZDUWNBT3dtU0NaTUpCd0E1Q1pRSk9Ba0hBRGtKbFFtVUNRY0FPQW1XQ1RjSkJ3QTRDWlFKbGdrSEFEY0psd2syQ1FjQU53bVdDWmNKQndBMkNaZ0pOUWtIQURZSmx3bVlDUWNBTlFtWkNUUUpCd0ExQ1pnSm1Ra0hBRFFKbWdrekNRY0FOQW1aQ1pvSkJ3QXpDWnNKTWdrSEFETUptZ21iQ1FjQU1nbWNDVEVKQndBeUNac0puQWtIQURFSm5Ra3RDUWNBTVFtY0NaMEpCd0F0Q1o0Skxna0hBQzBKblFtZUNRY0FNQW1mQ1dJSkJ3QXdDYUFKbndrSEFHSUpvUWxoQ1FjQVlnbWZDYUVKQndCaENhSUpZd2tIQUdFSm9RbWlDUWNBWXdtakNYQUpCd0JqQ2FJSm93a0hBSEFKcEFtQkNRY0FjQW1qQ2FRSkJ3Q0JDYVVKZ0FrSEFJRUpwQW1sQ1FjQWdBbW1DWDhKQndDQUNhVUpwZ2tIQUg4SnB3bHpDUWNBZndtbUNhY0pCd0J6Q2FnSmRBa0hBSE1KcHdtb0NRY0FkQW1wQ1hVSkJ3QjBDYWdKcVFrSEFIVUpxZ2wyQ1FjQWRRbXBDYW9KQndCMkNhc0pkd2tIQUhZSnFnbXJDUWNBZHdtc0NYZ0pCd0IzQ2FzSnJBa0hBSGdKclFsNUNRY0FlQW1zQ2EwSkJ3QjVDYTRKZWdrSEFIa0pyUW11Q1FjQWVnbXZDWHNKQndCNkNhNEpyd2tIQUhzSmhBbDhDUWNBZXdtdkNZUUpCd0NEQ2JBSmdna0hBSU1Kc1Ftd0NRY0FoQW14Q1lNSkJ3Q0VDYklKc1FrSEFJSUpzd21GQ1FjQWdnbXdDYk1KQndDdkNiSUpoQWtIQUs4SnRBbXlDUWNBaFFtMUNZWUpCd0NGQ2JNSnRRa0hBSVlKdGdtSENRY0FoZ20xQ2JZSkJ3Q0hDYmNKaUFrSEFJY0p0Z20zQ1FjQWlBbTRDWWtKQndDSUNiY0p1QWtIQUlrSnVRbUtDUWNBaVFtNENia0pCd0NLQ2JvSml3a0hBSW9KdVFtNkNRY0Fpd203Q1l3SkJ3Q0xDYm9KdXdrSEFJd0p2QW1OQ1FjQWpBbTdDYndKQndDTkNiMEpqZ2tIQUkwSnZBbTlDUWNBamdtK0NZOEpCd0NPQ2IwSnZna0hBSThKdndtUUNRY0Fqd20rQ2I4SkJ3Q1FDY0FKa1FrSEFKQUp2d25BQ1FjQWtRbkJDWklKQndDUkNjQUp3UWtIQUpJSndnbVRDUWNBa2duQkNjSUpCd0NWQ2NNSmxBa0hBSlVKeEFuRENRY0FsQW5GQ1pZSkJ3Q1VDY01KeFFrSEFKWUp4Z21YQ1FjQWxnbkZDY1lKQndDWENjY0ptQWtIQUpjSnhnbkhDUWNBbUFuSUNaa0pCd0NZQ2NjSnlBa0hBSmtKeVFtYUNRY0FtUW5JQ2NrSkJ3Q2FDY29KbXdrSEFKb0p5UW5LQ1FjQW13bkxDWndKQndDYkNjb0p5d2tIQUp3SnpBbWRDUWNBbkFuTENjd0pCd0NkQ2MwSm5na0hBSjBKekFuTkNRY0FvQW5PQ1o4SkJ3Q2dDYzhKemdrSEFKOEowQW1oQ1FjQW53bk9DZEFKQndDaENkRUpvZ2tIQUtFSjBBblJDUWNBb2duU0NhTUpCd0NpQ2RFSjBna0hBS01KMHdta0NRY0Fvd25TQ2RNSkJ3Q2tDZFFKcFFrSEFLUUowd25VQ1FjQXBRblZDYVlKQndDbENkUUoxUWtIQUtZSjFnbW5DUWNBcGduVkNkWUpCd0NuQ2RjSnFBa0hBS2NKMWduWENRY0FxQW5ZQ2FrSkJ3Q29DZGNKMkFrSEFLa0oyUW1xQ1FjQXFRbllDZGtKQndDcUNkb0pxd2tIQUtvSjJRbmFDUWNBcXduYkNhd0pCd0NyQ2RvSjJ3a0hBS3dKM0FtdENRY0FyQW5iQ2R3SkJ3Q3RDZDBKcmdrSEFLMEozQW5kQ1FjQXJnbTBDYThKQndDdUNkMEp0QWtIQU40SkRRa0tDUWNBM2duZkNRMEpCd0FFQ2Q4SjNna0hBQVFKQmduZkNRY0Ezd2tPQ1EwSkJ3RGZDZUFKRGdrSEFBWUo0QW5mQ1FjQUJna1NDZUFKQndEZ0NSQUpEZ2tIQU9BSjRRa1FDUWNBRWduaENlQUpCd0FTQ1JFSjRRa0hBT0VKUkFrUUNRY0E0UW5pQ1VRSkJ3QVJDZUlKNFFrSEFCRUpBd25pQ1FjQTRna1pDVVFKQndEaUNlTUpHUWtIQUFNSjR3bmlDUWNBQXdrRkNlTUpCd0RqQ1FvSkdRa0hBT01KM2drS0NRY0FCUW5lQ2VNSkJ3QUZDUVFKM2drSEFPY0lPUW56Q0FjQTV3ZzZDVGtKQndBNkNaVUpPUWtIQURvSmt3bVZDUWNBa3duRUNaVUpCd0NUQ2NJSnhBa0hBSjRKendtZ0NRY0FuZ25OQ2M4SkJ3QmZDU2NKS3drSEFGOEpLZ2tuQ1FjQVlna3JDVEFKQndCaUNWOEpLd2tIQUM0Sm9Ba3dDUWNBTGdtZUNhQUpCd0F3UWZNQkFBQnlZWFkwTFdKc1lXTnJBUEFBQUFBQkFBSUFBd0FFQUFVQUJnQUhBQWdBQ1FBS0FBc0FEQUFOQUE0QUR3QVFBQkVBRWdBVEFCUUFGUUFXQUJjQUdBQVpBQm9BR3dBY0FCMEFIZ0FmQUNBQUlRQWlBQ01BSkFBbEFDWUFKd0FvQUNrQUtnQXJBQ3dBTFFBdUFDOEFNQUF4QURJQU13QTBBRFVBTmdBM0FEZ0FPUUE2QURzQVBBQTlBRDRBUHdCQUFFRUFRZ0JEQUVRQVJRQkdBRWNBU0FCSkFFb0FTd0JNQUUwQVRnQlBBRkFBVVFCU0FGTUFWQUJWQUZZQVZ3QllBRmtBV2dCYkFGd0FYUUJlQUY4QVlBQmhBR0lBWXdCa0FHVUFaZ0JuQUdnQWFRQnFBR3NBYkFCdEFHNEFid0J3QUhFQWNnQnpBSFFBZFFCMkFIY0FlQUI1QUhvQWV3QjhBSDBBZmdCL0FJQUFnUUNDQUlNQWhBQ0ZBSVlBaHdDSUFJa0FpZ0NMQUl3QWpRQ09BSThBa0FDUkFKSUFrd0NVQUpVQWxnQ1hBSmdBbVFDYUFKc0FuQUNkQUo0QW53Q2dBS0VBb2dDakFLUUFwUUNtQUtjQXFBQ3BBS29BcXdDc0FLMEFyZ0N2QUxBQXNRQ3lBTE1BdEFDMUFMWUF0d0M0QUxrQXVnQzdBTHdBdlFDK0FMOEF3QURCQU1JQXd3REVBTVVBeGdESEFNZ0F5UURLQU1zQXpBRE5BTTRBendEUUFORUEwZ0RUQU5RQTFRRFdBTmNBMkFEWkFOb0Eyd0RjQU4wQTNnRGZBT0FBNFFEaUFPTUE1QURsQU9ZQTV3RG9BT2tBNmdEckFPd0E3UUR1QU84QU1FSDZHQUFBY21GMk5DMWliMlI1QUhRTThBRHhBUElBOHdEMEFQVUE5Z0QzQVBnQStRRDZBUHNBL0FEOUFQNEEvd0FBQVFFQkFnRURBUVFCQlFFR0FRY0JDQUVKQVFvQkN3RU1BUTBCRGdFUEFSQUJFUUVTQVJNQkZBRVZBUllCRndFWUFSa0JHZ0ViQVJ3QkhRRWVBUjhCSUFFaEFTSUJJd0VrQVNVQkpnRW5BU2dCS1FFcUFTc0JMQUV0QVM0Qkx3RXdBVEVCTWdFekFUUUJOUUUyQVRjQk9BRTVBVG9CT3dFOEFUMEJQZ0UvQVVBQlFRRkNBVU1CUkFGRkFVWUJSd0ZJQVVrQlNnRkxBVXdCVFFGT0FVOEJVQUZSQVZJQlV3RlVBVlVCVmdGWEFWZ0JXUUZhQVZzQlhBRmRBVjRCWHdGZ0FXRUJZZ0ZqQVdRQlpRRm1BV2NCYUFGcEFXb0Jhd0ZzQVcwQmJnRnZBWEFCY1FGeUFYTUJkQUYxQVhZQmR3RjRBWGtCZWdGN0FYd0JmUUYrQVg4QmdBR0JBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFHTkFZNEJqd0dRQVpFQmtnR1RBWlFCbFFHV0FaY0JtQUdaQVpvQm13R2NBWjBCbmdHZkFhQUJvUUdpQWFNQnBBR2xBYVlCcHdHb0Fha0JxZ0dyQWF3QnJRR3VBYThCc0FHeEFiSUJzd0cwQWJVQnRnRzNBYmdCdVFHNkFic0J2QUc5QWI0QnZ3SEFBY0VCd2dIREFjUUJ4UUhHQWNjQnlBSEpBY29CeXdITUFjMEJ6Z0hQQWRBQjBRSFNBZE1CMUFIVkFkWUIxd0hZQWRrQjJnSGJBZHdCM1FIZUFkOEI0QUhoQWVJQjR3SGtBZVVCNWdIbkFlZ0I2UUhxQWVzQjdBSHRBZTRCN3dId0FmRUI4Z0h6QWZRQjlRSDJBZmNCK0FINUFmb0Ird0g4QWYwQi9nSC9BUUFDQVFJQ0FnTUNCQUlGQWdZQ0J3SUlBZ2tDQ2dJTEFnd0NEUUlPQWc4Q0VBSVJBaElDRXdJVUFoVUNGZ0lYQWhnQ0dRSWFBaHNDSEFJZEFoNENId0lnQWlFQ0lnSWpBaVFDSlFJbUFpY0NLQUlwQWlvQ0t3SXNBaTBDTGdJdkFqQUNNUUl5QWpNQ05BSTFBallDTndJNEFqa0NPZ0k3QWp3Q1BRSStBajhDUUFKQkFrSUNRd0pFQWtVQ1JnSkhBa2dDU1FKS0Frc0NUQUpOQWs0Q1R3SlFBbEVDVWdKVEFsUUNWUUpXQWxjQ1dBSlpBbG9DV3dKY0FsMENYZ0pmQW1BQ1lRSmlBbU1DWkFKbEFtWUNad0pvQW1rQ2FnSnJBbXdDYlFKdUFtOENjQUp4QW5JQ2N3SjBBblVDZGdKM0FuZ0NlUUo2QW5zQ2ZBSjlBbjRDZndLQUFvRUNnZ0tEQW9RQ2hRS0dBb2NDaUFLSkFvb0Npd0tNQW8wQ2pnS1BBcEFDa1FLVUFwVUNsZ0tYQXBnQ21RS2FBcHNDbkFLZEFwNENud0tnQXFFQ29nS2pBcVFDcFFLbUFxY0NxQUtwQXFvQ3F3S3NBcTBDcmdLdkFyQUNzUUt5QXJNQ3RBSzFBcllDdHdLNEFya0N1Z0s3QXJ3Q3ZRSytBcjhDd0FMQkFzSUN3d0xFQXNVQ3hnTEhBc2dDeVFMS0Fzc0N6QUxOQXM0Q3p3TFFBdEVDMGdMVEF0UUMxUUxXQXRjQzJBTFpBdG9DMndMY0F0MEMzZ0xmQXVBQzRRTGlBdU1DNUFMbEF1WUM1d0xvQXVrQzZnTHJBdXdDN1FMdUF1OEM4QUx4QXZJQzh3TDBBdlVDOWdMM0F2Z0MrUUw2QXZzQy9BTDlBdjRDL3dJQUF3RURBZ01EQXdRREJRTUdBd2NEQ0FNSkF3b0RDd01NQXcwRERnTVBBeEFERVFNU0F4TURGQU1WQXhZREZ3TVlBeGtER2dNYkF4d0RIUU1lQXg4RElBTWhBeUlESXdNa0F5VURKZ01uQXlnREtRTXFBeXNETEFNdEF5NERMd013QXpFRE1nTXpBelFETlFNMkF6Y0RPQU01QXpvRE93TThBejBEUGdNL0EwQURRUU5DQTBNRFJBTkZBMFlEUndOSUEwa0RTZ05MQTB3RFRRTk9BMDhEVUFOUkExSURVd05VQTFVRFZnTlhBMWdEV1FOYUExc0RYQU5kQTE0RFh3TmdBMkVEWWdOakEyUURaUU5tQTJjRGFBTnBBMm9EYXdOc0EyMERiZ052QTNBRGNRTnlBM01EZEFOMUEzWURkd040QTNrRGVnTjdBM3dEZlFOK0EzOERnQU9CQTRJRGd3T0VBNFVEaGdPSEE0Z0RpUU9LQTRzRGpBT05BNDREandPUUE1RURrZ09UQTVRRGxRT1dBNWNEbUFPWkE1b0Rtd09jQTUwRG5nT2ZBNkFEb1FPaUE2TURwQU9sQTZZRHB3T29BNmtEcWdPckE2d0RyUU91QTY4RHNBT3hBN0lEc3dPMEE3VUR0Z08zQTdnRHVRTzZBN3NEdkFPOUE3NER2d1BBQThFRHdnUERBOFFEeFFQR0E4Y0R5QVBKQThvRHl3UE1BODBEemdQUEE5QUQwUVBTQTlNRDFBUFZBOVlEMXdQWUE5a0QyZ1BiQTl3RDNRUGVBOThENEFQaEErSUQ0d1BrQStVRDVnUG5BK2dENlFQcUErc0Q3QVB0QSs0RDd3UHdBL0VEOGdQekEvUUQ5UVAyQS9jRCtBUDVBL29EK3dQOEEvMEQvZ1AvQXdBRUFRUUNCQU1FQkFRRkJBWUVCd1FJQkFrRUNnUUxCQXdFRFFRT0JBOEVFQVFSQkJJRUV3UVVCQlVFRmdRWEJCZ0VHUVFhQkJzRUhBUWRCQjRFSHdRZ0JDRUVJZ1FqQkNRRUpRUW1CQ2NFS0FRcEJDb0VLd1FzQkMwRUxnUXZCREFFTVFReUJETUVOQVExQkRZRU53UTRCRGtFT2dRN0JEd0VQUVErQkQ4RVFBUkJCRUlFUXdSRUJFVUVSZ1JIQkVnRVNRUktCRXNFVEFSTkJFNEVUd1JRQkZFRVVnUlRCRlFFVlFSV0JGY0VXQVJaQkZvRVd3UmNCRjBFWGdSZkJHQUVZUVJpQkdNRVpBUmxCR1lFWndSb0JHa0VhZ1JyQkd3RWJRUnVCRzhFY0FSeEJISUVjd1IwQkhVRWRnUjNCSGdFZVFSNkJIc0VmQVI5Qkg0RWZ3U0FCSUVFZ2dTREJJUUVoUVNHQkljRWlBU0pCSW9FaXdTTUJJMEVqZ1NQQkpBRWtRU1NCSk1FbEFTVkJKWUVsd1NZQkprRW1nU2JCSndFblFTZUJKOEVvQVNoQktJRW93U2tCS1VFcGdTbkJLZ0VxUVNxQktzRXJBU3RCSzRFcndTd0JMRUVzZ1N6QkxRRXRRUzJCTGNFdUFTNUJMb0V1d1M4QkwwRXZnUy9CTUFFd1FUQ0JNTUV4QVRGQk1ZRXh3VElCTWtFeWdUTEJNd0V6UVRPQk04RTBBVFJCTklFMHdUVUJOVUUxZ1RYQk5nRTJRVGFCTnNFM0FUZEJONEUzd1RnQk9FRTRnVGpCT1FFNVFUbUJPY0U2QVRwQk9vRTZ3VHNCTzBFN2dUdkJQQUU4UVR5QlBNRTlBVDFCUFlFOXdUNEJQa0UrZ1Q3QlB3RS9RVCtCUDhFQUFVQkJRSUZBd1VFQlFVRkJnVUhCUWdGQ1FVS0JRc0ZEQVVOQlE0RkR3VVFCUkVGRWdVVEJSUUZGUVVXQlJjRkdBVVpCUm9GR3dVY0JSMEZIZ1VmQlNBRklRVWlCU01GSkFVbEJTWUZKd1VvQlNrRktnVXJCU3dGTFFVdUJTOEZNQVV4QlRJRk13VTBCVFVGTmdVM0JUZ0ZPUVU2QlRzRlBBVTlCVDRGUHdWQUJVRUZRZ1ZEQlVRRlJRVkdCVWNGU0FWSkJVb0ZTd1ZNQlUwRlRnVlBCVkFGVVFWU0JWTUZWQVZWQlZZRlZ3VllCVmtGV2dWYkJWd0ZYUVZlQlY4RllBVmhCV0lGWXdWa0JXVUZaZ1ZuQldnRmFRVVVCeFVIRmdjWEJ4Z0hHUWNhQnhzSEhBY2RCeDRISHdjZ0J5RUhJZ2NqQnlRSEpRY21CeWNIS0FjcEJ5b0hLd2NzQnkwSExnY3ZCekFITVFjeUJ6TUhOQWMxQnpZSE53YzRCemtIT2djN0J6d0hQUWMrQno4SFFBZEJCMElIUXdkRUIwVUhSZ2RIQjBnSFNRZEtCMHNIVEFkTkIwNEhUd2RRQjFFSFVnZFRCMVFIVlFkV0IxY0hXQWRaQjFvSFd3ZGNCMTBIWGdkZkIyQUhZUWRpQjJNSFpBZGxCMllIWndkb0Iya0hhZ2RyQjJ3SGJRZHVCMjhIY0FkeEIzSUhjd2QwQjNVSGRnZDNCM2dIZVFkNkIzc0hmQWQ5QjM0SGZ3ZUFCNEVIZ2dlREI0UUhoUWVHQjRjSGlBZUpCNG9IaXdlTUI0MEhqZ2VQQjVBSGtRZVNCNU1IbEFlVkI1WUhsd2V3QjdFSHNnZXpCN1FIdFFlMkI3Y0h1QWU1QjdvSHV3ZThCNzBIdmdlL0I4QUh3UWZDQjhNSHhBZkZCOFlIeHdmSUI4a0h5Z2ZMQjh3SHpRZk9CODhIMEFmUkI5SUgwd2ZVQjlVSDFnZlhCOWdIMlFmYUI5c0gzQWZkQjk0SDN3ZmdCK0VINGdmakIrUUg1UWZtQitjSDZBZnBCK29INndmc0IrMEg3Z2Z2Qi9BSDhRZnlCL01IOUFmMUIvWUg5d2Y0Qi9rSCtnZjdCL3dIL1FmK0IvOEhBQWdCQ0FJSUF3Z0VDQVVJQmdnSENBZ0lDUWdLQ0FzSURBZ05DQTRJRHdnUUNCRUlFZ2dUQ0JRSUZRZ1dDQmNJR0FnWkNCb0lHd2djQ0IwSUhnZ2ZDQ0FJSVFnaUNDTUlKQWdsQ0NZSUp3Z29DQ2tJS2dnckNDd0lMUWd1Q0M4SU1BZ3hDRElJTXdnMENEVUlOZ2czQ0RnSU9RZzZDRHNJUEFnOUNENElQd2hBQ0VFSVFnaERDRVFJUlFoR0NFY0lTQWhKQ0VvSVN3aE1DRTBJVGdoUENGQUlVUWhTQ0ZNSVZBaFZDRllJVndoWUNGa0lXZ2hiQ0Z3SVhRaGVDRjhJWUFoaENHSUlZd2hrQ0dVSVpnaG5DR2dJYVFocUNHc0liQWh0Q0c0SWJ3aHdDSEVJY2doekNIUUlkUWgyQ0hjSWVBaDVDSG9JZXdoOENIMElmZ2gvQ0lBSWdRaUNDSU1JaEFpRkNJWUlod2lJQ0lrSWlnaUxDSXdJalFpT0NJOElrQWlSQ0pJSWt3aVVDSlVJbGdpWENKZ0ltUWlhQ0pzSW5BaWRDSjRJbndpZ0NLRUlvZ2lqQ0tRSXBRaW1DS2NJcUFpcENLb0lxd2lzQ0swSXJnaXZDTEFJc1FpeUNMTUl0QWkxQ0xZSXR3aTRDTGtJdWdpN0NMd0l2UWkrQ0w4SXdBakJDTUlJd3dqRUNNVUl4Z2pIQ01nSXlRaktDTXNJekFqTkNNNEl6d2pRQ05FSTBnalRDTlFJMVFqV0NOY0kyQWpaQ05vSTJ3amNDTjBJM2dqZkNPQUk0UWppQ09NSTVBamxDT1lJNXdqb0NPa0k2Z2pyQ093STdRanVDTzhJOEFqeENQSUk4d2owQ1BVSTlnajNDUGdJK1FqNkNQc0kvQWo5Q1A0SS93Z0FDUUVKQWdrRENRUUpCUWtHQ1FjSkNBa0pDUW9KQ3drTUNRMEpEZ2tQQ1JBSkVRa1NDUk1KRkFrVkNSWUpGd2tZQ1JrSkdna2JDUndKSFFrZUNSOEpJQWtoQ1NJSkl3a2tDU1VKSmdrbkNTZ0pLUWtxQ1NzSkxBa3RDUzRKTHdrd0NURUpNZ2t6Q1RRSk5RazJDVGNKT0FrNUNUb0pPd2s4Q1QwSlBnay9DVUFKUVFsQ0NVTUpSQWxGQ1VZSlJ3bElDVWtKU2dsTENVd0pUUWxPQ1U4SlVBbFJDVklKVXdsVUNWVUpWZ2xYQ1ZnSldRbGFDVnNKWEFsZENWNEpYd2xnQ1dFSllnbGpDV1FKWlFsbUNXY0phQWxwQ1dvSmF3bHNDVzBKYmdsdkNYQUpjUWx5Q1hNSmRBbDFDWFlKZHdsNENYa0plZ2w3Q1h3SmZRbCtDWDhKZ0FtQkNZSUpnd21FQ1lVSmhnbUhDWWdKaVFtS0NZc0pqQW1OQ1k0Smp3bVFDWkVKa2dtVENaUUpsUW1XQ1pjSm1BbVpDWm9KbXdtY0NaMEpuZ21mQ2FBSm9RbWlDYU1KcEFtbENhWUpwd21vQ2FrSnFnbXJDYXdKclFtdUNhOEpzQW14Q2JJSnN3bTBDYlVKdGdtM0NiZ0p1UW02Q2JzSnZBbTlDYjRKdnduQUNjRUp3Z25EQ2NRSnhRbkdDY2NKeUFuSkNjb0p5d25NQ2MwSnpnblBDZEFKMFFuU0NkTUoxQW5WQ2RZSjF3bllDZGtKMmduYkNkd0ozUW5lQ2Q4SjRBbmhDZUlKNHdua0NlVUo1Z25uQ2VnSjZRbnFDZXNKN0FudENlNEo3d253Q2ZFSjhnbnpDZlFKOVFuMkNmY0orQW41Q2ZvSit3bjhDZjBKL2duL0NRQUtBUW9DQ2dNS0JBb0ZDZ1lLQndvSUNna0tDZ29MQ2d3S0RRb09DZzhLRUFvUkNoSUtFd29VQ2hVS0Znb1hDaGdLR1FvYUNoc0tIQW9kQ2g0S0h3b2dDaUVLSWdvakNpUUtKUW9tQ2ljS0tBb3BDaW9LS3dvc0NpMEtMZ292Q2pBS01Rb3lDak1LTkFvMUNqWUtOd280Q2prS09nbzdDandLUFFvK0NqOEtRQXBCQ2tJS1F3cEVDa1VLUmdwSENrZ0tTUXBLQ2tzS1RBcE5DazRLVHdwUUNsRUtVZ3BUQ2xRS1ZRcFdDbGNLV0FwWkNsb0tXd3BjQ2wwS1hncGZDbUFLWVFwaUNtTUtaQXBsQ21ZS1p3cG9DbWtLYWdwckNtd0tiUXB1Q204S2NBcHhDbklLY3dwMENuVUtkZ3AzQ25nS2VRcDZDbnNLZkFwOUNuNEtmd3FBQ29FS2dncURDb1FLaFFxR0NvY0tpQXFKQ29vS2l3cU1DbzBLamdxUENwQUtrUXFTQ3BNS2xBcVZDcFlLbHdxWUNwa0ttZ3FiQ3B3S25RcWVDcDhLb0FxaENxSUtvd3FrQ3FVS3BncW5DcWdLcVFxcUNxc0tyQXF0Q3E0S3J3cXdDckVLc2dxekNyUUt0UXEyQ3JjS3VBcTVDcm9LdXdxOENyMEt2Z3EvQ3NBS3dRckNDc01LeEFyRkNzWUt4d3JJQ3NrS3lnckxDc3dLelFyT0NzOEswQXJSQ3RJSzB3clVDdFVLMWdyWEN0Z0syUXJhQ3RzSzNBcmRDdDRLM3dyZ0N1RUs0Z3JqQ3VRSzVRcm1DdWNLNkFycEN1b0s2d3JzQ3UwSzdncnZDdkFLOFFyeUN2TUs5QXIxQ3ZZSzl3cjRDdmtLK2dyN0N2d0svUXIrQ3Y4S0FBc0JDd0lMQXdzRUN3VUxCZ3NIQ3dnTENRc0tDd3NMREFzTkN3NExEd3NRQ3hFTEVnc1RDeFFMRlFzV0N4Y0xHQXNaQ3hvTEd3c2NDeDBMSGdzZkN5QUxJUXNpQ3lNTEpBc2xDeVlMSndzb0N5a0xLZ3NyQ3l3TExRc3VDeThMTUFzeEN6SUxNd3MwQ3pVTE5nczNDemdMT1FzNkN6c0xQQXM5Q3o0TFB3dEFDMEVMUWd0REMwUUxSUXRHQzBjTFNBdEpDMG9MU3d0TUMwMExUZ3RQQzFBTFVRdFNDMU1MVkF0VkMxWUxWd3RZQzFrTFdndGJDMXdMWFF0ZUMxOExZQXRoQzJJTFl3dGtDMlVMWmd0bkMyZ0xhUXRxQzJzTGJBdHRDMjRMYnd0d0MzRUxjZ3R6QzNRTGRRdDJDM2NMZUF0NUMzb0xld3Q4QzMwTGZndC9DNEFMZ1F1Q0M0TUxoQXVGQzRZTGh3dUlDNGtMaWd1TEM0d0xqUXVPQzQ4TGtBdVJDNUlMa3d1VUM1VUxsZ3VYQzVnTG1RdWFDNXNMbkF1ZEM1NExud3VnQzZFTG9ndWpDNlFMcFF1bUM2Y0xxQXVwQzZvTHF3dXNDNjBMcmd1dkM3QUxzUXV5QzdNTHRBdTFDN1lMdHd1NEM3a0x1Z3U3Qzd3THZRdStDNzhMd0F2QkM4SUx3d3ZFQzhVTHhndkhDOGdMeVF2S0M4c0x6QXZOQzg0THp3dlFDOUVMMGd2VEM5UUwxUXZXQzljTDJBdlpDOW9MMnd2Y0M5MEwzZ3ZmQytBTDRRdmlDK01MNUF2bEMrWUw1d3ZvQytrTDZndnJDK3dMN1F2dUMrOEw4QXZ4Qy9JTDh3djBDL1VMOWd2M0MvZ0wrUXY2Qy9zTC9BdjlDLzRML3dzQURBRU1BZ3dEREFRTUJRd0dEQWNNQ0F3SkRBb01Dd3dNREEwTURnd1BEQkFNRVF3U0RCTU1GQXdWREJZTUZ3d1lEQmtNR2d3YkRCd01IUXdlREI4TUlBd2hEQ0lNSXd3a0RDVU1KZ3duRENnTUtRd3FEQ3NNTEF3dERDNE1Md3d3RERFTU1nd3pERFFNTlF3MkREY01PQXc1RERvTU93dzhERDBNUGd3L0RFQU1RUXhDREVNTVJBeEZERVlNUnd4SURFa01TZ3hMREV3TVRReE9ERThNVUF4UkRGSU1Vd3hVREZVTVZneFhERmdNV1F4YURGc01YQXhkREY0TVh3eGdER0VNWWd4akRHUU1aUXhtREdjTWFBeHBER29NYXd4c0RHME1iZ3h2REhBTWNReHlESE1NZEF4MURIWU1kd3g0REhrTWVneDdESHdNZlF4K0RIOE1nQXlCRElJTWd3eUVESVVNaGd5SERJZ01pUXlLRElzTWpBeU5ESTRNand5UURKRU1rZ3lUREpRTWxReVdESmNNbUF5WkRKb01td3ljREowTW5neWZES0FNb1F5aURLTU1wQXlsREtZTXB3eW9ES2tNcWd5ckRLd01yUXl1REs4TXNBeXhETElNc3d5MERMVU10Z3kzRExnTXVReTZETHNNdkF5OURMNE12d3pBRE1FTXdnekRETVFNeFF6R0RNY015QXpKRE1vTXl3ek1ETTBNemd6UEROQU0wUXpTRE5NTTFBelZETllNMXd6WUROa00yZ3piRE53TTNRemVETjhNNEF6aERPSU00d3prRE9VTTVnem5ET2dNNlF6cURPc003QXp0RE80TTd3endEUEVNOGd6ekRQUU05UXoyRFBjTStBejVEUG9NK3d6OERQME0vZ3ovREFBTkFRMENEUU1OQkEwRkRRWU5CdzBJRFFrTkNnMExEUXdORFEwT0RROE5FQTBSRFJJTkV3MFVEUlVORmcwWERSZ05HUTBhRFJzTkhBMGREUjROSHcwZ0RTRU5JZzBqRFNRTkpRMG1EU2NOS0EwcERTb05LdzBzRFMwTkxnMHZEVEFOTVEweURUTU5OQTAxRFRZTk53MDREVGtOT2cwN0RUd05QUTArRFQ4TlFBMUJEVUlOUXcxRURVVU5SZzFIRFVnTlNRMUtEVXNOVEJCTkVFNFFUeEJRRUZFUVVoQlRFRlFRVlJCV0VGY1FXQkJaRUZvUVd4QmNFRjBRWGhCZkVHQVFZUkJpRUdNUVpCQmxFR1lRWnhCb0VHa1FhaEJyRUd3UWJSQnVFRzhRY0JCeEVISVFjeEIwRUhVUWRoQjNFSGdRZVJCNkVIc1FmQkI5RUg0UWZ4Q0FFSUVRZ2hDREVJUVFoUkNHRUljUWlCQ0pFSW9RaXhDTUVJMFFqaENQRUpBUWtSQ1NFSk1RbEJDVkVKWVFseENZRUprUW1oQ2JFSndRblJDZUVKOFFvQkNoRUtJUW94Q2tFS1VRcGhDbkVLZ1FxUkNxRUtzUXJCQ3RFSzRRcnhDd0VMRVFzaEN6RUxRUXRSQzJFTGNRdUJDNUVMb1F1eEM4RUwwUXZoQy9FTUFRd1JEQ0VNTVF4QkRGRU1ZUXh4RElFTWtReWhETEVNd1F6UkRPRU04UTBCRFJFTklRMHhEVUVOVVExaERYRU5nUTJSRGFFTnNRM0JEZEVONFEzeERnRU9FUTRoRGpFT1FRNVJEbUVPY1E2QkRwRU9vUTZ4RHNFTzBRN2hEdkVQQVE4UkR5RVBNUTlCRDFFUFlROXhENEVQa1EraEQ3RVB3US9SRCtFUDhRQUJFQkVRSVJBeEVFRVFVUkJoRUhFUWdSQ1JFS0VRc1JEQkVORVE0UkR4RVFFUkVSRWhFVEVSUVJGUkVXRVJjUkdCRVpFUm9SR3hFY0VSMFJIaEVmRVNBUklSRWlFU01SSkJFbEVTWVJKeEVvRVNrUktoRXJFU3dSTFJFdUVTOFJNQkV4RVRJUk14RTBFVFVSTmhFM0VUZ1JPUkU2RVRzUlBCRTlFVDRSUHhGQUVVRVJRaEZERVVRUlJSRkdFVWNSU0JGSkVVb1JTeEZNRVUwUlRoRlBFVkFSVVJGU0VWTVJWQkZWRVZZUlZ4RllFVmtSV2hGYkVWd1JYUkZlRVY4UllCRmhFV0lSWXhGa0VXVVJaaEZuRVdnUmFSRnFFV3NSYkJGdEVXNFJieEZ3RVhFUmNoRnpFWFFSZFJGMkVYY1JlQkY1RVhvUmV4RjhFWDBSZmhGL0VZQVJnUkdDRVlNUmhCR0ZFWVlSaHhHSUVZa1JpaEdMRVl3UmpSR09FWThSa0JHUkVaSVJreEdVRVpVUmxoR1hFWmdSbVJHYUVac1JuQkdkRVo0Um54R2dFYUVSb2hHakVhUVJwUkdtRWFjUnFCR3BFYW9ScXhHc0VhMFJyaEd2RWJBUnNSR3lFYk1SdEJHMUViWVJ0eEc0RWJrUnVoRzdFYndSdlJHK0ViOFJ3QkhCRWNJUnd4SEVFY1VSeGhISEVjZ1J5UkhLRWNzUnpCSE5FYzRSenhIUUVkRVIwaEhURWRRUjFSSFdFZGNSMkJIWkVkb1IyeEhjRWQwUjNoSGZFZUFSNFJIaUVlTVI1QkhsRWVZUjV4SG9FZWtSNmhIckVld1I3Ukh1RWU4UjhCSHhFZklSOHhIMEVmVVI5aEgzRWZnUitSSDZFZnNSL0JIOUVmNFIveEVBRWdFU0FoSURFZ1FTQlJJR0VnY1NDQklKRWdvU0N4SU1FZzBTRGhJUEVoQVNFUklTRWhNU0ZCSVZFaFlTRnhJWUVoa1NHaEliRWh3U0hSSWVFaDhTSUJJaEVpSVNJeElrRWlVU0poSW5FakJCalFnQUFISmhkalF0YzJocFpXeGtjd0E4QkpJQ2t3SnFCV3NGYkFWdEJXNEZid1Z3QlhFRmNnVnpCWFFGZFFWMkJYY0ZlQVY1QlhvRmV3VjhCWDBGZmdWL0JZQUZnUVdDQllNRmhBV0ZCWVlGaHdXSUJZa0ZpZ1dMQll3RmpRV09CWThGa0FXUkJaSUZrd1dVQlpVRmxnV1hCWmdGbVFXYUJac0ZuQVdkQlo0Rm53V2dCYUVGb2dXakJhUUZwUVdtQmFjRnFBV3BCYW9GcXdXc0JhMEZyZ1d2QmJBRnNRV3lCYk1GdEFXMUJiWUZ0d1c0QmJrRnVnVzdCYndGdlFXK0JiOEZ3QVhCQmNJRnd3WEVCY1VGeGdYSEJjZ0Z5UVhLQmNzRnpBWE5CYzRGendYUUJkRUYwZ1hUQmRRRjFRWFdCZGNGMkFYWkJkb0Yyd1hjQmQwRjNnWGZCZUFGNFFYaUJlTUY1QVhsQmVZRjV3WG9CZWtGNmdYckJld0Y3UVh1QmU4RjhBWHhCZklGOHdYMEJmVUY5Z1gzQmZnRitRWDZCZnNGL0FYOUJmNEYvd1VBQmdFR0FnWURCZ1FHQlFZR0JnY0dDQVlKQmdvR0N3WU1CZzBHRGdZUEJoQUdFUVlTQmhNR0ZBWVZCaFlHRndZWUJoa0dHZ1liQmh3R0hRWWVCaDhHSUFZaEJpSUdJd1lrQmlVR0pnWW5CaWdHS1FZcUJpc0dMQVl0Qmk0R0x3WXdCakVHTWdZekJqUUdOUVkyQmpjR09BWTVCam9HT3dZOEJqMEdQZ1kvQmtBR1FRWkNCa01HUkFaRkJrWUdSd1pJQmtrR1NnWkxCa3dHVFFaT0JrOEdVQVpSQmxJR1V3WlVCbFVHVmdaWEJsZ0dXUVphQmxzR1hBWmRCbDRHWHdaZ0JtRUdZZ1pqQm1RR1pRWm1CbWNHYUFacEJtb0dhd1pzQm0wR2JnWnZCbkFHY1FaeUJuTUdkQVoxQm5ZR2R3WjRCbmtHZWdaN0Jud0dmUVorQm44R2dBYUJCb0lHZ3dhRUJvVUdoZ2FIQm9nR2lRYUtCb3NHakFhTkJvNEdqd2FRQnBFR2tnYVRCcFFHbFFhV0JwY0dtQWFaQnBvR213YWNCcDBHbmdhZkJxQUdvUWFpQnFNR3BBYWxCcVlHcHdhb0Jxa0dxZ2FyQnF3R3JRYXVCcThHc0FheEJySUdzd2EwQnJVR3RnYTNCcmdHdVFhNkJyc0d2QWE5QnI0R3Z3YkFCc0VHd2diREJzUUd4UWJHQnNjR3lBYkpCc29HeXdiTUJzMEd6Z2JQQnRBRzBRYlNCdE1HMUFiVkJ0WUcxd2JZQnRrRzJnYmJCdHdHM1FiZUJ0OEc0QWJoQnVJRzR3YmtCdVVHNWdibkJ1Z0c2UWJxQnVzRzdBYnRCdTRHN3did0J2RUc4Z2J6QnZRRzlRYjJCdmNHK0FiNUJ2b0crd2I4QnYwRy9nYi9CZ0FIQVFjQ0J3TUhCQWNGQndZSEJ3Y0lCd2tIQ2djTEJ3d0hEUWNPQnc4SEVBY1JCeElIRXdlWUI1a0htZ2ViQjV3SG5RZWVCNThIb0FlaEI2SUhvd2VrQjZVSHBnZW5CNmdIcVFlcUI2c0hyQWV0QjY0SHJ3ZlVEZFVOMWczWERkZ04yUTNhRGRzTjNBM2REZDROM3czZ0RlRU40ZzNqRGVRTjVRM21EZWNONkEzcERlb042dzNzRGUwTjdnM3ZEZkFOOFEzeURmTU45QTMxRGZZTjl3MzREZmtOK2czN0Rmd04vUTMrRGY4TkFBNEJEZ0lPQXc0RURnVU9CZzRIRGdnT0NRNEtEZ3NPREE0TkRnNE9EdzRRRGhFT0VnNFREaFFPRlE0V0RoY09HQTRaRGhvT0d3NGNEaDBPSGc0ZkRpQU9JUTRpRGlNT0pBNGxEaVlPSnc0b0Rpa09LZzRyRGl3T0xRNHVEaThPTUE0eERqSU9NdzQwRGpVT05nNDNEamdPT1E0NkRqc09QQTQ5RGo0T1B3NUFEa0VPUWc1RERrUU9SUTVHRGtjT1NBNUpEa29PU3c1TURrME9UZzVQRGxBT1VRNVNEbE1PVkE1VkRsWU9WdzVZRGxrT1dnNWJEbHdPWFE1ZURsOE9ZQTVoRG1JT1l3NWtEbVVPWmc1bkRtZ09hUTVxRG1zT2JBNXREbTRPYnc1d0RuRU9jZzV6RG5RT2RRNTJEbmNPZUE1NURub09ldzU4RG4wT2ZnNS9Eb0FPZ1E2Q0RvTU9oQTZGRG9ZT2h3NklEb2tPaWc2TERvd09qUTZPRG84T2tBNlJEcElPa3c2VURwVU9sZzZYRHBnT21RNmFEcHNPbkE2ZERwNE9udzZnRHFFT29nNmpEcVFPcFE2bURxY09xQTZwRHFvT3F3NnNEcTBPcmc2dkRyQU9zUTZ5RHJNT3RBNjFEcllPdHc2NERya091ZzY3RHJ3T3ZRNitEcjhPd0E3QkRzSU93dzdFRHNVT3hnN0hEc2dPeVE3S0Rzc096QTdORHM0T3p3N1FEdEVPMGc3VER0UU8xUTdXRHRjTzJBN1pEdG9PMnc3Y0R0ME8zZzdmRHVBTzRRN2lEdU1PNUE3bER1WU81dzdvRHVrTzZnN3JEdXdPN1E3dUR1OE84QTd4RHZJTzh3NzBEdlVPOWc3M0R2Z08rUTc2RHZzTy9BNzlEdjRPL3c0QUR3RVBBZzhERHdRUEJROEdEd2NQQ0E4SkR3b1BDdzhNRHcwUERnOFBEeEFQRVE4U0R4TVBGQThWRHhZUEZ3OFlEeGtQR2c4YkR4d1BIUThlRHg4UElBOGhEeUlQSXc4a0R5VVBKZzhuRHlnUEtROHFEeXNQTEE4dER5NFBMdzh3RHpFUE1nOHpEelFQTlE4MkR6Y1BPQTg1RHpvUE93ODhEejBQUGc4L0QwQVBRUTlDRDBNUFJBOUZEMFlQUnc5SUQwa1BTZzlMRDB3UFRROU9EMDhQVUE5UkQxSVBVdzlVRDFVUFZnOVhEMWdQV1E5YUQxc1BYQTlkRDE0UFh3OWdEMkVQWWc5akQyUVBaUTltRDJjUGFBOXBEMm9QYXc5c0QyMFBiZzl2RDNBUGNROXlEM01QZEE5MUQzWVBkdzk0RDNrUGVnOTdEM3dQZlE5K0QzOFBnQStCRDRJUGd3K0VENFVQaGcrSEQ0Z1BpUStLRDRzUGpBK05ENDRQancrUUQ1RVBrZytURDVRUGxRK1dENWNQbUErWkQ1b1BtdytjRDUwUG5nK2ZENkFQb1EraUQ2TVBwQStsRDZZUHB3K29ENmtQcWcrckQ2d1ByUSt1RDY4UHNBK3hEN0lQc3crMEQ3VVB0ZyszRDdnUHVRKzZEN3NQdkErOUQ3NFB2dy9BRDhFUHdnL0REOFFQeFEvR0Q4Y1B5QS9KRDhvUHl3L01EODBQemcvUEQ5QVAwUS9TRDlNUDFBL1ZEOVlQMXcvWUQ5a1AyZy9iRDl3UDNRL2VEOThQNEEvaEQrSVA0dy9rRCtVUDVnL25EK2dQNlEvcUQrc1A3QS90RCs0UDd3L3dEL0VQOGcvekQvUVA5US8yRC9jUCtBLzVEL29QK3cvOEQvMFAvZy8vRHdBUUFSQUNFQU1RQkJBRkVBWVFCeEFJRUFrUUNoQUxFQXdRRFJBT0VBOFFFQkFSRUJJUUV4QVVFQlVRRmhBWEVCZ1FHUkFhRUJzUUhCQWRFQjRRSHhBZ0VDRVFJaEFqRUNRUUpSQW1FQ2NRS0JBcEVDb1FLeEFzRUMwUUxoQXZFREFRTVJBeUVETVFOQkExRURZUU54QTRFRGtRT2hBN0VEd1FQUkErRUQ4UVFCQkJFRUlRUXhCRUVFVVFSaEJIRUVnUVNSQktFRXNRTUVFa0FRQUFjbUYyTkMxdGFYSnliM0lBaUFCTURVME5UZzFQRFZBTlVRMVNEVk1OVkExVkRWWU5WdzFZRFZrTldnMWJEVndOWFExZURWOE5ZQTFoRFdJTll3MWtEV1VOWmcxbkRXZ05hUTFxRFdzTmJBMXREVzROYncxd0RYRU5jZzF6RFhRTmRRMTJEWGNOZUExNURYb05ldzE4RFgwTmZnMS9EWUFOZ1EyQ0RZTU5oQTJGRFlZTmh3MklEWWtOaWcyTERZd05qUTJPRFk4TmtBMlJEWklOa3cyVURaVU5sZzJYRFpnTm1RMmFEWnNObkEyZERaNE5udzJnRGFFTm9nMmpEYVFOcFEybURhY05xQTJwRGFvTnF3MnNEYTBOcmcydkRiQU5zUTJ5RGJNTnRBMjFEYllOdHcyNERia051ZzI3RGJ3TnZRMitEYjhOd0EzQkRjSU53dzNFRGNVTnhnM0hEY2dOeVEzS0Rjc056QTNORGM0Tnp3M1FEZEVOMGczVERWQkJwa2dBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQU1BQUFBREFBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQXdBQUFBTUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVlBQUFBR0FBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFZQUFBQUdBQUFBQmdBQUFBWUFBQUFHQUFBQUJnQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFBUU9hZkFRQlViM2x2ZEdGZlVrRTNBQUJCMVo4QkFCQkJyR29BQU9NSTVERDlRU1dQWDhLNzk4ZkJ2SEVKUWozRlk4Smt5Y1BCNUREOVFUM0ZZOEpreWNQQnZIRUpRaVdQWDhLNzk4ZkJ2SEVKUXIydlo4STlsYjdCNUREOVFiMnZaOEk5bGI3QnZIRUpRdUErYThKVmNMakI1REQ5UWVBK2E4SlZjTGpCdkhFSlFqdGtic0p2YzdIQjVERDlRVHRrYnNKdmM3SEJ2SEVKUWlvVGNjSzh1cW5CNUREOVFTb1RjY0s4dXFuQnZIRUpRc2xBYzhKM1phSEI1REQ5UWNsQWM4SjNaYUhCdkhFSlFsVGtkTUk0bFpqQjVERDlRVlRrZE1JNGxaakJ2SEVKUWl2M2RjS1piWS9CNUREOVFTdjNkY0taYlkvQnZIRUpRdngwZHNLVkU0YkI1REQ5UWZ4MGRzS1ZFNGJCdkhFSlFzZGJkc0xHV1huQjVERDlRY2RiZHNMR1dYbkJ2SEVKUXZPcmRjTDF2bWJCNUREOVFmT3JkY0wxdm1iQnZIRUpRa1pvZE1MZm9WVEI1REQ5UVVab2RNTGZvVlRCdkhFSlF0cVZjc0tyUzBQQjVERDlRZHFWY3NLclMwUEJ2SEVKUWc0OGNNSThBalBCNUREOVFRNDhjTUk4QWpQQjVERDlRVnhrYmNKdEJ5VEJ2SEVKUWx4a2JjSnRCeVRCNUREOVFUc2Fhc0tXbHhiQnZIRUpRanNhYXNLV2x4YkI1REQ5UWZscVpzSXE2UXJCdkhFSlF2bHFac0lxNlFyQjVERDlRWE5sWXNJa0t3SEJ2SEVKUW5ObFlzSWtLd0hCNUREOVFlY1pYc0xrQ2ZQQXZIRUpRdWNaWHNMa0NmUEE1REQ5UWFtWldjTFpLdWpBdkhFSlFxbVpXY0xaS3VqQTVERDlRZXIyVk1JYjVlSEF2SEVKUXVyMlZNSWI1ZUhBNUREOVFWdEVVTUxaVWVEQXZIRUpRbHRFVU1MWlVlREE1REQ5UWZtVVM4S1RkK1BBdkhFSlF2bVVTOEtUZCtQQTVERDlRYXI3UnNKK1NldkF2SEVKUXFyN1JzSitTZXZBNUREOVFRR0xRc0lpcVBmQXZIRUpRZ0dMUXNJaXFQZkE1REQ5UWV0VVBzSzJNQVRCdkhFSlF1dFVQc0syTUFUQjVERDlRV3BxT3NMK21BN0J2SEVKUW1wcU9zTCttQTdCNUREOVFVcmJOc0xZNGhyQnZIRUpRa3JiTnNMWTRockI1REQ5UWVxMU04S2ozQ2pCdkhFSlF1cTFNOEtqM0NqQjVERDlRUUFITWNJQ1RqakJ2SEVKUWdBSE1jSUNUampCNUREOVFWL1pMc0tYK0VqQnZIRUpRbC9aTHNLWCtFakI1REQ5UWRVMUxjSVRtVnJCdkhFSlF0VTFMY0lUbVZyQjVERDlRZm9pTE1KVjZHekJ2SEVKUXZvaUxNSlY2R3pCNUREOVFTdWxLOEpTbkgvQnZIRUpRaXVsSzhKU25IL0I1REQ5UVdDK0s4TGNOSW5CdkhFSlFtQytLOExjTkluQjVERDlRVE51TE1KQ2dwTEJ2SEVKUWpOdUxNSkNncExCNUREOVFlT3hMY0xNa0p2QnZIRUpRdU94TGNMTWtKdkI1REQ5UVV5RUw4THRPNlRCdkhFSlFreUVMOEx0TzZUQjVERDlRUnJlTWNLZllLekJ2SEVKUWhyZU1jS2ZZS3pCdkhFSlFzMjFOTUlOM3JQQjVERDlRYzIxTk1JTjNyUEJ2SEVKUXUzL044THdsYnJCNUREOVFlMy9OOEx3bGJyQnZIRUpRaTZ2TzhJd2JjREI1REQ5UVM2dk84SXdiY0RCdkhFSlFyUzBQOEl0VE1YQjVERDlRYlMwUDhJdFRNWEJ2SEVKUWtFQVJNSkhIOG5CNUREOVFVRUFSTUpISDhuQnZIRUpRbjZBU01JUTE4dkI1REQ5UVg2QVNNSVExOHZCdkhFSlFqOGpUY0ovYU0zQjVERDlRVDhqVGNKL2FNM0J2SEVKUXN6VlVjSkt6YzNCNUREOVFjelZVY0pLemMzQnZIRUpRaStGVnNMZkE4M0I1REQ5UVMrRlZzTGZBODNCdkhFSlFuNGVXOEpqRDh2QjVERDlRWDRlVzhKakQ4dkJYMGNLUWozRlk4Smt5Y1BCWDBjS1FpV1BYOEs3OThmQlgwY0tRcjJ2WjhJOWxiN0JYMGNLUXVBK2E4SlZjTGpCWDBjS1FqdGtic0p2YzdIQlgwY0tRaW9UY2NLOHVxbkJYMGNLUXNsQWM4SjNaYUhCWDBjS1FsVGtkTUk0bFpqQlgwY0tRaXYzZGNLWmJZL0JYMGNLUXZ4MGRzS1ZFNGJCWDBjS1FzZGJkc0xHV1huQlgwY0tRdk9yZGNMMXZtYkJYMGNLUWtab2RNTGZvVlRCWDBjS1F0cVZjc0tyUzBQQlgwY0tRZzQ4Y01JOEFqUEJYMGNLUWx4a2JjSnRCeVRCWDBjS1Fqc2Fhc0tXbHhiQlgwY0tRdmxxWnNJcTZRckJYMGNLUW5ObFlzSWtLd0hCWDBjS1F1Y1pYc0xrQ2ZQQVgwY0tRcW1aV2NMWkt1akFYMGNLUXVyMlZNSWI1ZUhBWDBjS1FsdEVVTUxaVWVEQVgwY0tRdm1VUzhLVGQrUEFYMGNLUXFyN1JzSitTZXZBWDBjS1FnR0xRc0lpcVBmQVgwY0tRdXRVUHNLMk1BVEJYMGNLUW1wcU9zTCttQTdCWDBjS1FrcmJOc0xZNGhyQlgwY0tRdXExTThLajNDakJYMGNLUWdBSE1jSUNUampCWDBjS1FsL1pMc0tYK0VqQlgwY0tRdFUxTGNJVG1WckJYMGNLUXZvaUxNSlY2R3pCWDBjS1FpdWxLOEpTbkgvQlgwY0tRbUMrSzhMY05JbkJYMGNLUWpOdUxNSkNncExCWDBjS1F1T3hMY0xNa0p2QlgwY0tRa3lFTDhMdE82VEJYMGNLUWhyZU1jS2ZZS3pCWDBjS1FzMjFOTUlOM3JQQlgwY0tRdTMvTjhMd2xickJYMGNLUWk2dk84SXdiY0RCWDBjS1FyUzBQOEl0VE1YQlgwY0tRa0VBUk1KSEg4bkJYMGNLUW42QVNNSVExOHZCWDBjS1FqOGpUY0ovYU0zQlgwY0tRc3pWVWNKS3pjM0JYMGNLUWkrRlZzTGZBODNCWDBjS1FuNGVXOEpqRDh2QlgwY0tRak5EWDhKZWpzYkJYMGNLUWo5alk4THZkY0xCWDBjS1FqODVaOElIWGIzQlgwY0tRcjYxYXNKSldMZkJYMGNLUXFUS2JjTDFmN0RCWDBjS1FvUnJjTUt4NzZqQlgwY0tRcjZOY3NJR3hxREJYMGNLUXJVb2RNTHRJNWpCWDBjS1F2QTFkY0k4TEkvQlgwY0tRaXF4ZGNJcEE0YkJYMGNLUW5tWWRjSm5tM25CWDBjS1FqN3NkTUx6WVdmQlgwY0tRakN2YzhLN28xWEJYMGNLUWxIbWNjSThxRVRCWDBjS1F0T1liOElMdERUQlgwY0tRdjdQYk1La0J5YkJYMGNLUWhxWGFjSTIzaGpCWDBjS1FoNzdaY0xpYkEzQlgwY0tRcWdLWXNMazRRUEJYMGNLUXBQVlhjSnV4L2pBWDBjS1F1aHNXY0pQSWU3QVgwY0tRbXppVk1KbC9PZkFYMGNLUW5oSVVNSnFjZWJBWDBjS1FwbXhTOEtlaHVuQVgwY0tRbUF3UjhLUEwvSEFYMGNLUXZUV1FzSnlUZjNBWDBjS1F1bTJQc0toMXdiQlgwY0tRdWpnT3NKc0NSSEJYMGNLUW1sa044THlFaDNCWDBjS1FvRlBOTUtid3lyQlgwY0tRcU91TWNJaDVEbkJYMGNLUW1tTUw4SjdOMHJCWDBjS1FuTHhMY0t0ZTF2QlgwY0tRam5rTE1JTmEyM0JYMGNLUXZ4b0xNSXN2WC9CWDBjS1FxNkJMTUlSRkluQlgwY0tRdWt0TGNMQ01KTEJYMGNLUXZWcUxzTGpENXZCWDBjS1F0WXpNTUtpamFQQlgwY0tRbGVCTXNLM2g2dkJYMGNLUWloS05jTHYzYkxCWDBjS1FnK0RPTUtuY3JuQlgwY0tRZ2NmUE1KUks3L0JYMGNLUW9FUFFNTFI4TVBCWDBjS1FwSkVSTUxpcjhmQlgwY0tRajZ0U01KdldjckJYMGNLUXJzM1RjS3I0c3ZCWDBjS1FySFJVY0pyUmN6QlgwY0tRbzVvVnNJVWdNdkJYMGNLUXNmcFdzTGJsY25CekgwSlFnREZVY0xXaWNmQnpIMEpRaEYzVGNKMkxjZkJ6SDBKUWdvUVZzSTgwY2JCekgwSlF0VkdXc0tuQnNYQnpIMEpRa2cwWXNKeVhMN0J6SDBKUXVmS1pjTENsN25CekgwSlFzd05hY0owOXJQQnpIMEpRc2p2YThJNGo2M0J6SDBKUWpSa2NNSWYyWjdCekgwSlFxYmtjY0tweFpiQnpIMEpRb0hnY3NJbFlvN0J6SDBKUXNkVGM4SnIwSVhCekgwSlF2bHljY0xOd0ZqQnpIMEpRbytiY3NMZVdXbkJ6SDBKUXBQSGI4TGgzVWpCekgwSlFpU2diY0pNOFRuQnpIMEpRbENoWk1JWU14WEJ6SDBKUXFvQmFNSmU1eC9CekgwSlF1L3hZTUxHUlF6QnpIMEpRbDhDWGNKbVF3WEJ6SDBKUWloVlVNSzlYL25BekgwSlFoV2pWTUk2MGZyQXpIMEpRaHdLVE1JQ1F2ekF6SDBKUWxMVFI4SXh0Z0hCekgwSlF0L2xQOEthQ2cvQnpIMEpRajVQUE1MM2t4akJ6SDBKUWxvTU9jS2IxaVBCekgwSlFsc3FOc0lVcFREQnpIMEpRdk8xTWNKSUVVN0J6SDBKUW9NMU1NSXlPRjdCekgwSlFxazVMOEpDLzI3QnpIMEpRbC9HTHNKVkVZREJ6SDBKUWkybk1NSmFnWm5CekgwSlFwZCtMOExQTkpIQnpIMEpRcEpTTXNMTWNxSEJ6SDBKUWdkNk5NSVg2YWpCekgwSlF0WjRQY0kxU0x2QnpIMEpRb0FZT3NJVTdyWEJ6SDBKUWprb1FjTGZ2ci9CekgwSlFzY1hSY0lMUU1QQnh2b0RRaFMwVWNKbU9zSEJ4dm9EUW9YTFRjS0U1c0RCeHZvRFFnV2FWY0xHa3NEQnh2b0RRcE50V2NKaDhyN0J4dm9EUWxlZ1lNSWk1YmpCeHZvRFFuTGlZOEs4a0xUQnh2b0RRb3ZZWnNJQ2RLL0J4dm9EUXFWMmFjS1NvNm5CeHZvRFFpYUNiY0xzUjV6Qnh2b0RRanZmYnNLajhwVEJ4dm9EUXV2RGI4S3RWSTNCeHZvRFFwZ3NjTUxFaklYQnh2b0RRZ040YnNLUTUxekJ4dm9EUWxPRmI4Sy8rV3ZCeHZvRFF1L3piTUs5ZWs3Qnh2b0RRam4vYXNLaDdVREJ4dm9EUWp6VVlzSzJrQi9CeHZvRFFoUGxaY0xvU0NuQnh2b0RRcVI3WDhLZmRSZkJ4dm9EUXNQb1c4SlBHQkhCeHZvRFFoSm1VTUsrVGduQnh2b0RRcVJPVk1KLzlnbkJ4dm9EUWlDQVRNTHRuUXJCeHZvRFFwU3NTTUs4M2czQnh2b0RRdE41UWNJOCtSbkJ4dm9EUXJRM1BzSUVvaUxCeHZvRFFweEJPOEovMnl6Qnh2b0RRb0dqT01KZmZEakJ4dm9EUWdDWU5NS3dNMVBCeHZvRFF1MDZNOEk1M21IQnh2b0RRajlXTXNJekduSEJ4dm9EUW8vdE1jTDlWSURCeHZvRFFpU2lNOEw2YlpmQnh2b0RRdGFVTXNMZjVJL0J4dm9EUWpZbU5jSmJwSjdCeHZvRFF2QWFOOExyYXFYQnh2b0RRdXBGUDhKbUdiYkJ4dm9EUWhnMVBNSlFQYkhCeHZvRFFvT2VRc0x6SnJyQnh2b0RRbU14UnNLWVZiM0J4dm9EUWhqd1NjS0FtTC9CNktMMlFiNzFUY0lNdzczQjZLTDJRVlpNU3NMMGhiekI2S0wyUVoyclVjS3RFcjdCNktMMlFRTmZWY0tNYzczQjZLTDJRZklBV2NJOTZMdkJ4dm9EUWxNZlhjS3RYN3pCNktMMlFjcUNYTUxuZHJuQjZLTDJRVjNXWDhKNUtiYkI2S0wyUVRmdVlzSTVEYkxCNktMMlFlcTlaY0xLTXEzQjZLTDJRUkU2YU1LL3JhZkJ4dm9EUWpDeWE4TG1OcVBCNktMMlFhbFlhc0pobEtIQjZLTDJRU0VSYk1KUy81ckI2S0wyUVlaY2JjSWdDWlRCNktMMlFhQTFic0x6ell6QjZLTDJRZitZYnNMdmFvWEJ4dm9EUXB3WGNNS2hkSHZCNktMMlFSU0Zic0xWKzN2QjZLTDJRVFA2YmNLdlNXM0I2S0wyUVlqNmJNTHcrbDdCNktMMlFSeUthOElzU1ZIQjZLTDJRY091YWNMTGEwVEI2S0wyUWZSdlo4SzVsampCeHZvRFFyNmhhTUx0ZGpUQjZLTDJRY2ZXWk1LdCtTM0I2S0wyUWJQdFljS0Z2eVRCNktMMlFYM0FYc0tMRFIzQjZLTDJRZlZiVzhMREFoZkI2S0wyUWRQTlY4S2Z0eExCeHZvRFFoQXFXTUtEa2d6QjZLTDJRV29rVk1Kd1BSREI2S0wyUVlodVVNSXZuZy9CNktMMlFTRzdUTUppM0JEQjZLTDJRVFFaU2NJRDh4UEJ4dm9EUXRYNlJNSWRCQlBCNktMMlFWK1hSY0tuMVJqQjZLTDJRY3hEUXNLTmNCL0I2S0wyUWU0clA4SUtxU2ZCNktMMlFUeGNQTUx4WFRIQjZLTDJRUlBnT2NJRWFEekJ4dm9EUXZsbk5zSzJWVVhCNktMMlFYN0JOOEs3bWtqQjZLTDJRUVlKTnNMa3hGWEI2S0wyUWFPOU5NSTlzV1BCNktMMlFZcmtNOEtxSjNMQjZLTDJRU2lCTThMU2RvREI2S0wyUVJLVk04TFk0NGZCeHZvRFFvb0NNc0p6SjRqQjZLTDJRZlVmTk1MblBJL0I2S0wyUVo0Zk5jSktaSmJCNktMMlFRZVFOc0lpUFozQjZLTDJRV1pyT01MV3E2UEI2S0wyUVRTcU9zSm5scW5CeHZvRFFtdDRPY0pOcHF2QjZLTDJRV05EUGNMdDVLN0I2S0wyUVhRc1FNTC9nYlBCNktMMlFhbFpROEw4V3JmQjZLTDJRVEcrUnNKZFlMckIraW5pUVRjZVNzSTZENzdCK2luaVFhTGdUY0xIVkwvQitpbmlRZGV2VWNLTHByL0IraW5pUVlSOFZjSXBBNy9CK2luaVFVUTNXY0pQYmIzQitpbmlRUTdSWE1KSzY3ckIraW5pUVZrN1lNSk9oN2ZCK2luaVFWVm9ZOEw2VHJQQitpbmlRVHRMWnNKbVU2N0IraW5pUVZ2WWFNS29xS2pCK2luaVFXd0ZhOEtqWmFMQitpbmlRYVRKYk1LZm81dkIraW5pUWVFZGJzTGlmWlRCK2luaVFjVDhic0pRRVkzQitpbmlRY3hpYjhMWmU0WEIraW5pUVZwT2I4STh1SHZCK2luaVFjUy9ic0szb1d6QitpbmlRVVc1YmNKQThWM0IraW5pUVFZL2JNTDA0VS9CK2luaVFmNVdhc0syckVMQitpbmlRZGdJYU1MVGhqYkIraW5pUWUxZFpjSk1vU3ZCK2luaVFmaGdZc0lkS0NMQitpbmlRUkFlWDhLVlFSckIraW5pUVZ1aVc4S0pEUlRCK2luaVFmTDdWOElRcFEvQitpbmlRWWM1Vk1MM0dRM0IraW5pUVUxcVVNSjJkZ3pCK2luaVFhR2RUTUludlEzQitpbmlRZVRpU01MZjZCREIraW5pUVJsSlJjTGk3QlhCK2luaVFjL2VRY0xrdEJ6QitpbmlRZEd4UHNLSEpTWEIraW5pUWV6T084SzRIQy9CK2luaVFjcEJPY0l4Y2pyQitpbmlRYnNVTjhJNStFYkIraW5pUVlKUU5jSktmRlRCK2luaVFVajhNOEs3eDJMQitpbmlRV1VkTThMd29ISEIraW5pUVZ5M01zTG5aWURCK2luaVFjM0xNc0tuQllqQitpbmlRV1phTThMamtJL0IraW5pUWVKZ05NSWg2WmJCK2luaVFSN2JOY0svOEozQitpbmlRU3ZETjhKaWk2VEIraW5pUVZBUk9zSmFucXJCK2luaVFUMjhQTUlmRWJEQitpbmlRUys1UDhLenpiVEIraW5pUVJmOFFzTDN3TGpCK2luaVFjcDNSc0w2MnJ2Qm8vM1RRVDJ0U01KdldjckJvLzNUUWJzM1RjS3I0c3ZCby8zVFFiRFJVY0pyUmN6Qm8vM1RRWTVvVnNJVWdNdkJvLzNUUWNmcFdzTGJsY25Cby8zVFFUUkRYOEplanNiQm8vM1RRVUJqWThMdmRjTEJvLzNUUVQ4NVo4SUhYYjNCby8zVFFiNjFhc0pKV0xmQm8vM1RRYVRLYmNMMWY3REJvLzNUUVlKcmNNS3o3NmpCby8zVFFiNk5jc0lIeHFEQm8vM1RRYlVvZE1McUk1akJvLzNUUWZBMWRjSTlMSS9Cby8zVFFTeXhkY0lxQTRiQm8vM1RRWHVZZGNKcG0zbkJvLzNUUVVEc2RNTHZZV2ZCby8zVFFUQ3ZjOEs1bzFYQm8vM1RRVkhtY2NJNnFFVEJvLzNUUWRHWWI4SUh0RFRCby8zVFFmN1BiTUtsQnliQm8vM1RRUnlYYWNJODNoakJvLzNUUVIvN1pjTGZiQTNCby8zVFFhY0tZc0xrNFFQQm8vM1RRWlhWWGNKdXgvakFvLzNUUWVoc1djSk1JZTdBby8zVFFXemlWTUpsL09mQW8vM1RRWGhJVU1KcWNlYkFvLzNUUVpteFM4S2VodW5Bby8zVFFXQXdSOEtQTC9IQW8vM1RRZlRXUXNKeVRmM0FvLzNUUWVlMlBzS2kxd2JCby8zVFFlamdPc0p2Q1JIQm8vM1RRV2xrTjhMeUVoM0JvLzNUUVlKUE5NS1l3eXJCby8zVFFhT3VNY0lnNURuQm8vM1RRV2lNTDhKL04wckJvLzNUUVhMeExjS3hlMXZCby8zVFFUdmtMTUlQYTIzQm8vM1RRZnhvTE1JaXZYL0JvLzNUUWEyQkxNSVNGSW5Cby8zVFFla3RMY0xITUpMQm8vM1RRZlpxTHNMZ0Q1dkJvLzNUUWRVek1NS2hqYVBCby8zVFFWaUJNc0s0aDZ2Qm8vM1RRU2xLTmNMdjNiTEJvLzNUUVJDRE9NS25jcm5Cby8zVFFRY2ZQTUpQSzcvQm8vM1RRWUVQUU1MUjhNUEJvLzNUUVpGRVJNTGlyOGZCby8zVFFRQlJTTUw4YTgzQm8vM1RRWUVOVGNJaUJzL0JvLzNUUVNYYVVjSWpiYy9Cby8zVFFaR2pWc0pPbjg3Qm8vM1RRV2xXVzhMK244ekJvLzNUUWIzZlg4SWtkOG5Cby8zVFFUb3RaTUtYTWNYQm8vM1RRWGt0YU1LSjRML0JvLzNUUVYvUWE4S0JtYm5Cby8zVFFUVUhiOExIZGJMQm8vM1RRUW5GY2NJM2txckJvLzNUUWNUK2M4S2hEcUxCby8zVFFXbXJkY0p0RFpuQm8vM1RRVHZFZHNMNXNvL0JvLzNUUWNORWQ4TCtKSWJCby8zVFFRSXJkOEkwRkhuQm8vM1RRVjUzZHNML0VXYkJvLzNUUWFvc2RjSlhrRlBCby8zVFFTTlFjOExNMlVIQm8vM1RRVWZwY01MY05USEJvLzNUUWNnQmJzTGI1eUhCby8zVFFXZWxhc0ozTFJUQm8vM1RRYW5oWnNJUlBnakJvLzNUUWN6RllzTHRrL3pBby8zVFFXSmlYc0tHOHV6QW8vM1RRU1hKV2NJWTErSEFvLzNUUWFZTVZjS0NidHZBby8zVFFRSkFVTUtLMHRuQW8vM1RRWmQyUzhLekNkM0FvLzNUUWIvRFJzSUNCK1hBby8zVFFXbzZRc0plcXZIQW8vM1RRZTdzUGNKU1lBSEJvLzNUUWEzc09jSnBBZ3pCby8zVFFjbEpOc0tBa0JqQm8vM1RRZkFTTThMeTF5YkJvLzNUUVI1Vk1NSWFuemJCby8zVFFXRWJMc0pPcGtmQm8vM1RRYjF1TE1LdnFGbkJvLzNUUWZCVks4S1hYV3pCby8zVFFXUFZLc0ozZVgvQm8vM1RRU1h2S3NLdFY0bkJvLzNUUWNxaUs4TEEySkxCby8zVFFYdnRMTUtRR1p6Qm8vM1RRUVRLTHNMWjlLVEJvLzNUUWVNd01jTE9ScTNCby8zVFFXQVlOTUxUN2JUQm8vM1RRY1IwTjhJSnk3dkJvLzNUUVgwNE84SzN3c0hCby8zVFFWdFVQOExHdk1iQm8vM1RRY08zUThJZHBjckJGYmZZUVlFTlRjSWlCcy9CRmJmWVFRQlJTTUw4YTgzQkZiZllRU1hhVWNJamJjL0JGYmZZUVpHalZzSk9uODdCRmJmWVFXbFdXOEwrbjh6QkZiZllRYjNmWDhJa2Q4bkJGYmZZUVRvdFpNS1hNY1hCRmJmWVFYa3RhTUtKNEwvQkZiZllRVi9RYThLQm1ibkJGYmZZUVRVSGI4TEhkYkxCRmJmWVFRbkZjY0kza3FyQkZiZllRY1QrYzhLaERxTEJGYmZZUVdtcmRjSnREWm5CRmJmWVFUdkVkc0w1c28vQkZiZllRY05FZDhMK0pJYkJGYmZZUVFJcmQ4STBGSG5CRmJmWVFWNTNkc0wvRVdiQkZiZllRYW9zZGNKWGtGUEJGYmZZUVNOUWM4TE0yVUhCRmJmWVFVZnBjTUxjTlRIQkZiZllRY2dCYnNMYjV5SEJGYmZZUVdlbGFzSjNMUlRCRmJmWVFhbmhac0lSUGdqQkZiZllRY3pGWXNMdGsvekFGYmZZUVdKaVhzS0c4dXpBRmJmWVFTWEpXY0lZMStIQUZiZllRYVlNVmNLQ2J0dkFGYmZZUVFKQVVNS0swdG5BRmJmWVFaZDJTOEt6Q2QzQUZiZllRYi9EUnNJQ0IrWEFGYmZZUVdvNlFzSmVxdkhBRmJmWVFlN3NQY0pTWUFIQkZiZllRYTNzT2NKcEFnekJGYmZZUWNsSk5zS0FrQmpCRmJmWVFmQVNNOEx5MXliQkZiZllRUjVWTU1JYW56YkJGYmZZUVdFYkxzSk9wa2ZCRmJmWVFiMXVMTUt2cUZuQkZiZllRZkJWSzhLWFhXekJGYmZZUVdQVktzSjNlWC9CRmJmWVFTWHZLc0t0VjRuQkZiZllRY3FpSzhMQTJKTEJGYmZZUVh2dExNS1FHWnpCRmJmWVFRVEtMc0xaOUtUQkZiZllRZU13TWNMT1JxM0JGYmZZUVdBWU5NTFQ3YlRCRmJmWVFjUjBOOElKeTd2QkZiZllRWDA0TzhLM3dzSEJGYmZZUVZ0VVA4TEd2TWJCRmJmWVFjTzNROElkcGNyQmQxTUpRbFdwVGNKTWpjTEI3ZzRLUW0xdVRjSWo3c2JCN2c0S1FsRTFTY0p1Z01YQjdnNEtRb2cyWHNKWCtjSEI3ZzRLUWc0cldzS015c1RCZDFNSlFvT1RXY0lMamNEQjdnNEtRcWtNWXNKTktyN0JkMU1KUXVqeVlNSkdXcnJCN2c0S1FtTXJic0p6YmFiQjdnNEtRcDY1YThJdGRxM0JkMU1KUWdBQWFzSWl1cXJCN2c0S1FtRW5jTUlQMXA3QmQxTUpRcGNrYnNLcEM1M0I3ZzRLUXByN2NzS2t4SHJCN2c0S1FwQVNjOExCOG9YQmQxTUpRbzNmY01LUnc0WEI3ZzRLUW01YmNzTEYwV25CZDFNSlFqczBjTUpxcG12QjdnNEtRbkpuYmNJS3NEckJkMU1KUWhhU2E4Sm5qei9CN2c0S1FvVFFhc0tWQ2kzQjdnNEtRbHpSWjhJQ3pTREJkMU1KUWs1WVpzSVdXQ2ZCN2c0S1FvSGlYTUxhVUFiQmQxTUpRaFVlWE1LRGtRN0I3ZzRLUXRqSVdNSTBYUUhCN2c0S1FyeVBWTUtZQS8zQWQxTUpRdFZVVk1KN1F3ZkI3ZzRLUWh2VFI4THl5QUxCZDFNSlFxWnFTTUwwUXd2QjdnNEtRcURIUThKU2F3akI3ZzRLUW9MeFA4SnpDUkRCZDFNSlFrSUxRY0ovcVJmQjdnNEtRb2xFTnNLMmNUSEJkMU1KUWlqK044TEs2VGJCN2c0S1FzYlNNOElvZ3ovQjdnNEtRc2pXTWNMMHNVN0JkMU1KUXBMWk04SytSbExCN2c0S1FwanJMc0pEUElEQmQxTUpRcHNlTWNKMWE0REI3ZzRLUW84Q0w4SzN6SWpCZDFNSlF1N0pNY0xQVzVEQjdnNEtRcnlpTDhJZlJwSEJkMU1KUWhac05zSlBaNmJCN2c0S1FycVdOTUw5MXFqQjdnNEtRcVV0TjhLOHFhL0JkMU1KUXQ2bE84TDlnckxCN2c0S1FzMHNPc0tHeUxYQmQxTUpRaFBnUmNKQzVyN0I3ZzRLUXFZYlJjS1dCc1BCTnpNRVF0LzNUY0xYdHJ6Qk56TUVRcEpoU3NJMWdMdkJOek1FUWdJNVhNSWVnYmpCTnpNRVFuZkpXTUsxNWJyQk56TUVRanQ3WDhMb1JMWEJOek1FUXJmR2FjSXhHNkhCTnpNRVFpMnpaOEs4RktmQk56TUVRakoyYThKMnFKckJOek1FUWx2ZGJjSytmSHpCTnpNRVF0L3diY0ttaElYQk56TUVRazVWYmNKQkYyN0JOek1FUWtZZ2FjS05Ea2JCTnpNRVFpN3Rac0l6ZHpyQk56TUVRbzVoWk1LRkVUREJOek1FUWpBWVc4Sm5raG5CTnpNRVFwcWNWOEtuWFJYQk56TUVRa3NHVk1KbThCTEJOek1FUXJFMFNjS2ZraGJCTnpNRVFpZkZSY0xJV3h2Qk56TUVRdTZDUXNJNTFDSEJOek1FUXZ0S09zS1dORDdCTnpNRVFuTTNPTUtwSjByQk56TUVRdmFITnNJa0RWZkJOek1FUWtzTk5NSmdxb0RCTnpNRVFzNGdOTUtzOElmQk56TUVRdHlvTk1Ka0k0L0JOek1FUXViZE9NSzdKNlBCTnpNRVF2MFFPOEp2ODZqQk56TUVRcDZjUGNKSEpxN0JOek1FUXZubFJzTFNaYm5CMDVVS1F0S0ZQOEpWUlgzQkY1VUtRaEZZUWNMT3JJWEIwNVVLUWxsMVA4SktBb2JCRjVVS1FzZG1RY0xiTG43QjN2Y0RRaEZZUWNMT3JJWEJGOWdEUXRLRlA4SlZSWDNCRjlnRFFsbDFQOEpLQW9iQjN2Y0RRc2RtUWNMYkxuN0IwNVVLUWhucFFjSTdpR0hCRjVVS1FsMGtRc0wrV1hIQjA1VUtRaXBhUU1KSzVtN0JGNVVLUW8rSVE4S1ZhbVhCM3ZjRFFsMGtRc0wrV1hIQkY5Z0RRaG5wUWNJN2lHSEJGOWdEUWlwYVFNSks1bTdCM3ZjRFFvK0lROEtWYW1YQjA1VUtRaThoUk1LOXdGWEJGNVVLUXNlRFJjSXM1bHJCRjlnRFFpOGhSTUs5d0ZYQjN2Y0RRc2VEUmNJczVsckIwNVVLUWpFalNzSUo3VVRCRjVVS1F0di9SOEp0UWxMQjA1VUtRcGpwUnNLVkUwekJGNVVLUXYvZ1NzSUM0RXZCM3ZjRFF0di9SOEp0UWxMQkY5Z0RRakVqU3NJSjdVVEJGOWdEUXBqcFJzS1ZFMHpCM3ZjRFF2L2dTc0lDNEV2QjA1VUtRdWVwVGNJWG5VREJGNVVLUXYwR1RzSllCa2pCRjlnRFF1ZXBUY0lYblVEQjN2Y0RRdjBHVHNKWUJrakJGOWdEUWtSV1VjSUJWRC9CM3ZjRFFpR1RWTUpmZTBqQkY5Z0RRaTcvVk1Jb0lFSEIzdmNEUXBsT1VjS0Y0RWJCRjVVS1FpR1RWTUpmZTBqQjA1VUtRa1JXVWNJQlZEL0IwNVVLUWk3L1ZNSW9JRUhCRjVVS1FwbE9VY0tGNEViQjN2Y0RRZ2l3VjhMeXhFekJGOWdEUXJWN1dNSng3VVhCRjVVS1FnaXdWOEx5eEV6QjA1VUtRclY3V01KeDdVWEJGOWdEUXRXa1c4SWpoazNCM3ZjRFF0enFYTUo1aUZ6QkY5Z0RRakpYWHNJOGxWZkIzdmNEUW5hQ1dzSklqVlBCRjVVS1F0enFYTUo1aUZ6QjA1VUtRdFdrVzhJamhrM0IwNVVLUWpKWFhzSThsVmZCRjVVS1FuYUNXc0pJalZQQjN2Y0RRa2pPWHNJTlVtZkJGOWdEUXFCMFlNSXpxbVBCRjVVS1Frak9Yc0lOVW1mQjA1VUtRcUIwWU1JenFtUEJGOWdEUW5YbFljTGJQWEhCM3ZjRFFtcTRZTUpUTDREQkY5Z0RRcFNaWXNKUHVIL0IzdmNEUXBjWFlNSlBjWFBCRjVVS1FtcTRZTUpUTDREQjA1VUtRblhsWWNMYlBYSEIwNVVLUXBTWllzSlB1SC9CRjVVS1FwY1hZTUpQY1hQQjN2Y0RRcktwWU1LMHhJYkJGOWdEUWhpSllzTEhPNGZCRjVVS1FyS3BZTUsweEliQjA1VUtRaGlKWXNMSE80ZkJGOWdEUXNHMFljSk1hNDdCM3ZjRFF1dUhYc0xUSnBQQkY5Z0RRdEVsWU1KUkdwWEIzdmNEUWh2c1g4SWhMNDNCRjVVS1F1dUhYc0xUSnBQQjA1VUtRc0cwWWNKTWE0N0IwNVVLUXRFbFlNSlJHcFhCRjVVS1FodnNYOEloTDQzQjN2Y0RRclNNWE1JSWFaakJGOWdEUXI3dFhjSVIvcHJCRjVVS1FyU01YTUlJYVpqQjA1VUtRcjd0WGNJUi9wckJGOWdEUWxNbFc4S2sxSi9CM3ZjRFFub3ZWOElkN0ovQkY5Z0RRcnZyVjhMclo2UEIzdmNEUXA0UVdzTG51cHpCRjVVS1Fub3ZWOElkN0ovQjA1VUtRbE1sVzhLazFKL0IwNVVLUXJ2clY4THJaNlBCRjVVS1FwNFFXc0xudXB6QjN2Y0RRbjBKVk1MejJLSEJGOWdEUWdabFZNTGxqNlhCRjVVS1FuMEpWTUx6MktIQjA1VUtRZ1psVk1MbGo2WEIwNVVLUXI0UFRjSmJUcVhCRjVVS1F1TEJVTUxjYTZMQjA1VUtRcWk0VU1Kdk5LYkJGNVVLUWxoOVRjSnVucUhCM3ZjRFF1TEJVTUxjYTZMQkY5Z0RRcjRQVGNKYlRxWEJGOWdEUXFpNFVNSnZOS2JCM3ZjRFFsaDlUY0p1bnFIQjA1VUtRamVUU2NLMjU2TEJGNVVLUW5KZ1NzS2tlWi9CRjlnRFFqZVRTY0syNTZMQjN2Y0RRbkpnU3NLa2VaL0IwNVVLUXJtM1E4TFNFNXJCRjVVS1FnS09SOEo4Rlp6QjA1VUtRaFZxUnNKZ0c1L0JGNVVLUXAwbFJjTGlsNWZCM3ZjRFFnS09SOEo4Rlp6QkY5Z0RRcm0zUThMU0U1ckJGOWdEUWhWcVJzSmdHNS9CM3ZjRFFwMGxSY0xpbDVmQjA1VUtRa3FhUWNKV0NaVEJGNVVLUWpKQ1E4SVlNNUxCRjlnRFFrcWFRY0pXQ1pUQjN2Y0RRakpDUThJWU01TEJGNVVLUXVINFFjSjJJNHpCMDVVS1FuVXBRTUtDUDQzQjN2Y0RRdUg0UWNKMkk0ekJGOWdEUW5VcFFNS0NQNDNCU3k0RFFoRllRY0xPcklYQlN5NERRdUg0UWNKMkk0ekJTeTREUXNkbVFjTGJMbjdCU3k0RFFsMGtRc0wrV1hIQlN5NERRbytJUThLVmFtWEJTeTREUXNlRFJjSXM1bHJCU3k0RFF0di9SOEp0UWxMQlN5NERRdi9nU3NJQzRFdkJTeTREUXYwR1RzSllCa2pCU3k0RFFwbE9VY0tGNEViQlN5NERRaUdUVk1KZmUwakJTeTREUWdpd1Y4THl4RXpCU3k0RFFuYUNXc0pJalZQQlN5NERRdHpxWE1KNWlGekJTeTREUWtqT1hzSU5VbWZCU3k0RFFwY1hZTUpQY1hQQlN5NERRbXE0WU1KVEw0REJTeTREUXJLcFlNSzB4SWJCU3k0RFFodnNYOEloTDQzQlN5NERRdXVIWHNMVEpwUEJTeTREUXJTTVhNSUlhWmpCU3k0RFFwNFFXc0xudXB6QlN5NERRbm92VjhJZDdKL0JTeTREUW4wSlZNTHoyS0hCU3k0RFF1TEJVTUxjYTZMQlN5NERRbGg5VGNKdW5xSEJTeTREUW5KZ1NzS2tlWi9CU3k0RFFnS09SOEo4Rlp6QlN5NERRcDBsUmNMaWw1ZkJTeTREUWpKQ1E4SVlNNUxCc3VuOFFRZkNSY0xlMG9uQnN1bjhRYU5KUmNJbS9JVEJzdW44UWFoVVJjSndEb0RCc3VuOFFaWGlSY0xBZ1hiQnN1bjhRVDN0UnNKb2ttM0JzdW44UWZSb1NNTE9zbVhCc3VuOFFTUkZTc0lLTzEvQnN1bjhRZnBzVE1KNmMxckJzdW44UVZ6SVRzS1drVmZCc3VuOFFlbzhVY0tndFZiQnN1bjhRU212VThJeDZWZkJzdW44UWJ3RFZzTGVIbHZCc3VuOFFaRWdXTUs1TW1EQnN1bjhRUVB1V2NMejYyYkJzdW44UWVwWFc4SlYvMjdCc3VuOFFYSk9YTUtFRW5qQnN1bjhRZGZHWE1MNTM0REJzdW44UWRPN1hNS3Z6WVhCc3VuOFFlUXRYTUkrbTRyQnN1bjhRVDBqVzhMckVvL0JzdW44UVllbldjSzNBcFBCc3VuOFFWZkxWOEtZUHBiQnN1bjhRWCtqVmNKaW9wakJzdW44UVIxSVU4SlVFNXJCc3VuOFFaSFRVTUpQZ1pyQnN1bjhRVkpoVHNLRjU1bkJzdW44UWJ3TVRNS3ZUSmpCc3VuOFFlanZTY0xCd3BYQnN1bjhRWFlpU01Ja1pwTEJzdW44UVkrNFJzSjBYSTdCWmNQNVFhTkpSY0ltL0lUQlpjUDVRUWZDUmNMZTBvbkJaY1A1UWFoVVJjSndEb0RCWmNQNVFaWGlSY0xBZ1hiQlpjUDVRVDN0UnNKb2ttM0JaY1A1UWZSb1NNTE9zbVhCWmNQNVFTUkZTc0lLTzEvQlpjUDVRZnBzVE1KNmMxckJaY1A1UVZ6SVRzS1drVmZCWmNQNVFlbzhVY0tndFZiQlpjUDVRU212VThJeDZWZkJaY1A1UWJ3RFZzTGVIbHZCWmNQNVFaRWdXTUs1TW1EQlpjUDVRUVB1V2NMejYyYkJaY1A1UWVwWFc4SlYvMjdCWmNQNVFYSk9YTUtFRW5qQlpjUDVRZGZHWE1MNTM0REJaY1A1UWRPN1hNS3Z6WVhCWmNQNVFlUXRYTUkrbTRyQlpjUDVRVDBqVzhMckVvL0JaY1A1UVllbldjSzNBcFBCWmNQNVFWZkxWOEtZUHBiQlpjUDVRWCtqVmNKaW9wakJaY1A1UVIxSVU4SlVFNXJCWmNQNVFaSFRVTUpQZ1pyQlpjUDVRVkpoVHNLRjU1bkJaY1A1UWJ3TVRNS3ZUSmpCWmNQNVFlanZTY0xCd3BYQlpjUDVRWFlpU01Ja1pwTEJaY1A1UVkrNFJzSjBYSTdCcU9QeFFhTkpSY0ltL0lUQnFPUHhRUWZDUmNMZTBvbkJxT1B4UWFoVVJjSndEb0RCcU9QeFFaWGlSY0xBZ1hiQnFPUHhRVDN0UnNKb2ttM0JxT1B4UWZSb1NNTE9zbVhCcU9QeFFTUkZTc0lLTzEvQnFPUHhRZnBzVE1KNmMxckJxT1B4UVZ6SVRzS1drVmZCcU9QeFFlbzhVY0tndFZiQnFPUHhRU212VThJeDZWZkJxT1B4UWJ3RFZzTGVIbHZCcU9QeFFaRWdXTUs1TW1EQnFPUHhRUVB1V2NMejYyYkJxT1B4UWVwWFc4SlYvMjdCcU9QeFFYSk9YTUtFRW5qQnFPUHhRZGZHWE1MNTM0REJxT1B4UWRPN1hNS3Z6WVhCcU9QeFFlUXRYTUkrbTRyQnFPUHhRVDBqVzhMckVvL0JxT1B4UVllbldjSzNBcFBCcU9QeFFWZkxWOEtZUHBiQnFPUHhRWCtqVmNKaW9wakJxT1B4UVIxSVU4SlVFNXJCcU9QeFFaSFRVTUpQZ1pyQnFPUHhRVkpoVHNLRjU1bkJxT1B4UWJ3TVRNS3ZUSmpCcU9QeFFlanZTY0xCd3BYQnFPUHhRWFlpU01Ja1pwTEJxT1B4UVkrNFJzSjBYSTdCWTdzTlF1SjhSY0pSR0lEQlk3c05RbzRUUnNMUzJJVEJZN3NOUWdaeVJjSVc5WVRCWTdzTlF0TWRSc0xYUDREQlk3c05RdHlEUnNKWlhJbkJZN3NOUXN6b1JjSXF1NG5CWTdzTlF0WnBSOEx0bDQzQlk3c05RZ1RjUnNJbU5ZN0JZN3NOUW0yN1NNSXlYSkhCWTdzTlFnMUJTTUwwTUpMQlk3c05RdU5wU3NJRGY1VEJZN3NOUWswSVNzSUNncFhCWTdzTlFtWmlUTUpLM1piQlk3c05RdDhkVE1JMUE1akJZN3NOUXVxT1RzS0pYSmpCWTdzTlFtOXFUc0tHbUpuQlk3c05RaHpYVU1MLzY1akJZN3NOUWtmVVVNSS9NSnJCWTdzTlFtRkFVOEsrdzVuQlk3c05RbkFoVThKbmhaakJZN3NOUXFlVFZjTEFWNWpCWTdzTlFrMVVWY0k4TFpmQlk3c05RaGEwVjhJdS9KWEJZN3NOUWhWWFY4S0o4cFRCWTdzTlF1Q0pXY0p0eTVMQlk3c05Ra29UV2NKQTdwSEJZN3NOUW4wQVc4SXA2WTdCWTdzTlFvQjFXc0lpUW83Qlk3c05RcEFIWE1MYWdJckJZN3NOUWtCdVc4SkZGNHJCWTdzTlFwZVRYTUxOdzRYQlk3c05RcWJ5VzhKSG5JWEJZN3NOUW5TZVhNSUw1NERCWTdzTlF1MzhXOEpPQTRIQlk3c05RcCtNVzhLTi8zakJZN3NOUXE4blhNTHNRWGpCWTdzTlFxT21Xc0ppaUhEQlk3c05RblUwVzhMeFRXL0JZN3NOUWd4VldjTFovMmpCWTdzTlFtelBXY0pUVm1mQlk3c05RcGFtVjhJMHVtTEJZN3NOUWl3SVdNSTN0R0RCWTdzTlFoU3VWY0tsL1YzQlk3c05RcHp5VmNMU3NWdkJZN3NOUXBDQlU4SW8vMXJCWTdzTlFncW1VOEl3aDFqQlk3c05RbUE1VWNJOTRGbkJZN3NOUWpVOFVjSytWMWZCWTdzTlFoalFUc0xDTUZqQlk3c05RZ252VHNKeHJWckJZN3NOUXM5OFRNSzlDRnZCWTdzTlFpdThUTUxHWFYzQlk3c05RbVJjU3NMY3YxL0JZN3NOUW1XNVNzSW0wMkhCWTdzTlFwcUdTTUpsSVdiQlk3c05RakQ5U01LNzIyZkJZN3NOUXZzUFI4THM1VzNCWTdzTlF2aWFSOEw0TTIvQlk3c05RdWtJUnNLSnRuYkJZN3NOUWpxaVJzS3ppWGZCMzNnTVFnclBTc0xXQklUQjMzZ01RdURVU3NJL2FJSEIzM2dNUXRjT1M4SThsWWJCMzNnTVFubVJTOExFL0lqQjMzZ01RbHBrVHNMd1FJN0IzM2dNUXNSRlRjS0w2SXpCMzNnTVFudWdUOEtrR28vQjMzZ01RbFhzVU1JamJJL0IzM2dNUW1RNVVzTGNNWS9CMzNnTVFveWRWTUlxS28zQjMzZ01RdUdaVmNKNWM0dkIzM2dNUWhkalZzSnlYWW5CMzNnTVFtUHdWc0pxLzRiQjMzZ01RcGs3VjhMZGM0VEIzM2dNUWdCL1ZzSzV2bm5CMzNnTVFxTUJWOExLalg3QjMzZ01RanUvVmNJNWQzWEIzM2dNUXJiS1ZNSWs1M0hCMzNnTVFpR3NVOEphTm0vQjMzZ01RaWNrVWNMMjMyekIzM2dNUWhYWFQ4S0hWRzNCMzNnTVFsZVhUc0tLMjI3QjMzZ01RdkJ5VGNMaFkzSEIzM2dNUXBsMlRNSkswWFRCMzNnTVFoVWdTOEpydVgzQjMzZ01RcE53UzhLUzZJUEIzM2dNUXRGMVM4TEVqNEhCMzNnTVF1ZXBTOEpyTm9iQjMzZ01Ra3NmVE1LS1g0akIzM2dNUXA3TFRNTEFTNHJCMzNnTVFqNVJUTUtESUl2QjMzZ01RbG1uVGNLTTVZdkIzM2dNUXVDb1RzSUdHNDNCMzNnTVF2WEVUOEtvM28zQjMzZ01RaW52VU1Mako0N0IzM2dNUW5RYVVzS0Y4NDNCMzNnTVFpRjVVOEpiYm83QjMzZ01Rc1U1VThMV1E0M0IzM2dNUW90QVZNS0VJSXpCMzNnTVFrd2pWY0pPbG9yQjMzZ01RaHJZVmNKcXRvakIzM2dNUWhOWFZzTFdsWWJCMzNnTVFxaWFWc0pZVElUQjMzZ01RbTlCVjhKSTE0SEIzM2dNUXVhZlZzS0w4NEhCMzNnTVFwTm1Wc0p0UzMvQjMzZ01RaTd4VmNJcitYckIzM2dNUXR4RVZjSzhJSGZCMzNnTVFpQnBWTUlpN1hQQjMzZ01RcGxuVThJdGduSEIzM2dNUW9aTFVzTHQrbS9CMzNnTVF2OXZVc0x6Z20zQjMzZ01RbE1oVWNKMWFHL0IzM2dNUWdYMlQ4STIwVy9CMzNnTVFyUFdUc0tUTUhIQjMzZ01RdkhQVGNJdWQzUEIzM2dNUWkvdFRNS2hpM2JCMzNnTVFtS3RTOEpkL1hqQjMzZ01RbDg0VE1KclMzckIzM2dNUW1hNVM4S1ZqSDdCUFNnTVFsYkJTOEp3Mm9QQlBTZ01Ra3JHUzhLSG80SEJQU2dNUW0vM1M4SURCNGJCUFNnTVFqUm1UTUx1RUlqQlBTZ01RczRJVGNKZjRZbkJQU2dNUWlQWVRjSU1aSXZCUFNnTVFpVExUc0lTaUl6QlBTZ01RalBYVDhLcFFJM0JQU2dNUXBQd1VNTEVoWTNCUFNnTVF2c0tVc0phVkkzQlBTZ01RaGNhVThLVXJvekJQU2dNUWdvU1ZNS3dtNHZCUFNnTVF2L25WTUs0SjRyQlBTZ01RcHlTVmNMbllvakJQU2dNUW1vS1ZzSU1ZWWJCUFNnTVFqQktWc0tWT0lUQlBTZ01RaU5QVnNLdEFZTEJQU2dNUWdvWlZzSTlxbi9CUFNnTVFrV3FWY0psbG52QlBTZ01RcXNIVmNKLzlYZkJQU2dNUWxZNFZNSWc4SFRCUFNnTVFsZEZVOElYcUhMQlBTZ01Ra2c1VXNMck5uSEJQU2dNUXVnZlVjSzFySERCUFNnTVFuNEZVTUtNRDNIQlBTZ01RbUQyVHNJWFczTEJQU2dNUW5EK1RjTFVnSFRCUFNnTVFuc29UY0xOYUhmQlBTZ01RdDE5VE1KejhuckJQU2dNUWc4R1RNSW85bjdCN2Y4TFFrckdTOEtIbzRIQjdmOExRbGJCUzhKdzJvUEI3ZjhMUW0vM1M4SURCNGJCN2Y4TFFqUm1UTUx1RUlqQjdmOExRczRJVGNKZjRZbkI3ZjhMUWlQWVRjSU1aSXZCN2Y4TFFpVExUc0lTaUl6QjdmOExRalBYVDhLcFFJM0I3ZjhMUXBQd1VNTEVoWTNCN2Y4TFF2c0tVc0phVkkzQjdmOExRaGNhVThLVXJvekI3ZjhMUWdvU1ZNS3dtNHZCN2Y4TFF2L25WTUs0SjRyQjdmOExRcHlTVmNMbllvakI3ZjhMUW1vS1ZzSU1ZWWJCN2Y4TFFqQktWc0tWT0lUQjdmOExRaU5QVnNLdEFZTEI3ZjhMUWdvWlZzSTlxbi9CN2Y4TFFrV3FWY0psbG52QjdmOExRcXNIVmNKLzlYZkI3ZjhMUWxZNFZNSWc4SFRCN2Y4TFFsZEZVOElYcUhMQjdmOExRa2c1VXNMck5uSEI3ZjhMUXVnZlVjSzFySERCN2Y4TFFuNEZVTUtNRDNIQjdmOExRbUQyVHNJWFczTEI3ZjhMUW5EK1RjTFVnSFRCN2Y4TFFuc29UY0xOYUhmQjdmOExRdDE5VE1KejhuckI3ZjhMUWc4R1RNSW85bjdCV2pZTFFrckdTOEtIbzRIQldqWUxRbGJCUzhKdzJvUEJXallMUW0vM1M4SURCNGJCV2pZTFFqUm1UTUx1RUlqQldqWUxRczRJVGNKZjRZbkJXallMUWlQWVRjSU1aSXZCV2pZTFFpVExUc0lTaUl6QldqWUxRalBYVDhLcFFJM0JXallMUXBQd1VNTEVoWTNCV2pZTFF2c0tVc0phVkkzQldqWUxRaGNhVThLVXJvekJXallMUWdvU1ZNS3dtNHZCV2pZTFF2L25WTUs0SjRyQldqWUxRcHlTVmNMbllvakJXallMUW1vS1ZzSU1ZWWJCV2pZTFFqQktWc0tWT0lUQldqWUxRaU5QVnNLdEFZTEJXallMUWdvWlZzSTlxbi9CV2pZTFFrV3FWY0psbG52QldqWUxRcXNIVmNKLzlYZkJXallMUWxZNFZNSWc4SFRCV2pZTFFsZEZVOElYcUhMQldqWUxRa2c1VXNMck5uSEJXallMUXVnZlVjSzFySERCV2pZTFFuNEZVTUtNRDNIQldqWUxRbUQyVHNJWFczTEJXallMUW5EK1RjTFVnSFRCV2pZTFFuc29UY0xOYUhmQldqWUxRdDE5VE1KejhuckJXallMUWc4R1RNSW85bjdCV2pZTFFtRVJUOElOUm9QQldqWUxRamtUVDhJRWM0TEJXallMUW9RbFQ4STZGWVRCV2pZTFFzQk9UOEtEMTRUQldqWUxRa2VMVDhKamhJWEJXallMUW5QWVQ4SlJGSWJCV2pZTFF1Y3lVTUlGZ1liQldqWUxRckdXVU1LOXhZYkJXallMUW0vL1VNSjMzNGJCV2pZTFFvMW9VY0lTelliQldqWUxRbmZOVWNKZGo0YkJXallMUXNVcFVzSUlLWWJCV2pZTFFtcDVVc0tSbm9YQldqWUxRdXU0VXNJRzlvVEJXallMUW9QbFVzTEJOb1RCV2pZTFFrRDlVc0laYVlQQldqWUxRaGovVXNJU2xvTEJXallMUXZYcVVzTHB4b0hCV2pZTFFyakJVc0tjQklIQldqWUxRakdGVXNLNlY0REJXallMUWdRNFVzS1NqMy9CV2pZTFFwUGRVY0l5dG43QldqWUxRc3A1VWNMRkxIN0JXallMUWd3UlVjSlUrWDNCV2pZTFF1eW5VTUliSG43QldqWUxRdjlDVU1LR21YN0JXallMUXJqbVQ4SWlabi9CV2pZTFFoR1hUOEtPUFlEQldqWUxRbzVYVDhJZDVvREJXallMUXZZcVQ4SmdwWUhCd21vTlF0VmFXOEs1VlkvQndtb05RamhyWE1KN3hZckJ3bW9OUWpQOFhNSjkzWVhCd21vTlFuTUhYY0tyMUlEQndtb05Rbm1NWE1LcHhuZkJ3bW9OUXFTUVc4S09nVzdCd21vTlF2WWVXc0srUVdiQndtb05RcHBIV01LR1kxL0J3bW9OUWlZZlZzSzlNMXJCd21vTlFyKzlVOEpvN0ZiQndtb05RZ3crVWNJNHNsWEJ3bW9OUXZ1N1RzTHNrbGJCd21vTlFxRlRUTUtvaEZuQndtb05RdkFmU3NLQ1psN0J3bW9OUW9RNVNNTGVBV1hCd21vTlFxUzFSc0xKREczQndtb05Ra0dsUmNKSExYYkJ3bW9OUWtVVVJjSkQvWC9Cd21vTlFnZ0pSY0oxQjRYQndtb05RZ0tFUmNMTStJbkJ3bW9OUXRWL1JzSlltNDdCd21vTlFvUHhSOEkvdTVMQndtb05RdC9JU2NKYktwYkJ3bW9OUWxYeFM4SkF3cGpCd21vTlFycFNUc0xxWlpyQndtb05RbkRTVU1JQ0E1dkJ3bW9OUW41VVU4S3FrcHJCd21vTlF0ZThWY0xKR1puQndtb05Rb3Z3VjhMYnFKYkJ3bW9OUXZiV1djSXZXNVBCcU4wS1FvMUxZTUtVclliQnFOMEtRbXlTWDhKZDhZekJxTjBLUXB3MlhzSWV4WkxCcU4wS1FsUkhYTUtsNTVmQnFOMEtRalhhV2NLQUg1ekJxTjBLUW1vS1Y4SjdQWi9CcU4wS1FtVDNVOEszSHFIQnFOMEtRb3JEVU1JdHJxSEJxTjBLUXErU1RjS1U1YURCcU4wS1FvaUlTc0swelo3QnFOMEtRaGpIUjhMNGZadkJxTjBLUWpOdFJjSnJHNWZCcU4wS1FpaVZROEllMTVIQnFOMEtRcGhUUXNMLzY0dkJxTjBLUW8rMlFjSkduSVhCcU4wS1F1ekVRY0laWFg3QnFOMEtRZzErUXNLRzFYSEJxTjBLUXQzWlE4SUJMbWJCcU4wS1FpZkpSY0x6NkZ2QnFOMEtRa00yU01JOWVWUEJxTjBLUWc4R1M4SkdQVTNCcU4wS1FoY1pUc0xOZWtuQnFOMEtRdkpNVWNMa1cwakJxTjBLUXNwOVZNSVQ3VW5CcU4wS1F2S0hWOExTSEU3QnFOMEtRbUZKV3NKTnZGVEJxTjBLUWtXalhNSm1nVjNCcU4wS1FsRjdYc0lDQ21qQnFOMEtRdUs4WDhJLzRIUEJxTjBLUXV0WllNTGJQNERCa2xJSlFsMGtRc0wrV1hIQmtsSUpRc2RtUWNMYkxuN0JrbElKUXR2L1I4SnRRbExCa2xJSlFzZURSY0lzNWxyQmtsSUpRdjBHVHNKWUJrakJrbElKUXBsT1VjS0Y0RWJCa2xJSlFnaXdWOEx5eEV6QmtsSUpRbmFDV3NKSWpWUEJrbElKUWtqT1hzSU5VbWZCa2xJSlFwY1hZTUpQY1hQQmtsSUpRcktwWU1LMHhJYkJrbElKUWh2c1g4SWhMNDNCa2xJSlFyU01YTUlJYVpqQmtsSUpRcDRRV3NMbnVwekJrbElKUXVMQlVNTGNhNkxCa2xJSlFuMEpWTUx6MktIQmtsSUpRZ0tPUjhKOEZaekJrbElKUW5KZ1NzS2tlWi9Ca2xJSlF1SDRRY0oySTR6QmtsSUpRakpDUThJWU01TEJrbElKUXRLRlA4SlZSWDNCa2xJSlFpcGFRTUpLNW03QmtsSUpRaThoUk1LOXdGWEJrbElKUXBqcFJzS1ZFMHpCa2xJSlF1ZXBUY0lYblVEQmtsSUpRa1JXVWNJQlZEL0JrbElKUXJWN1dNSng3VVhCa2xJSlF0V2tXOElqaGszQmtsSUpRcUIwWU1JenFtUEJrbElKUW5YbFljTGJQWEhCa2xJSlFoaUpZc0xITzRmQmtsSUpRc0cwWWNKTWE0N0JrbElKUXI3dFhjSVIvcHJCa2xJSlFsTWxXOEtrMUovQmtsSUpRZ1psVk1MbGo2WEJrbElKUXFpNFVNSnZOS2JCa2xJSlFqZVRTY0syNTZMQmtsSUpRaFZxUnNKZ0c1L0JrbElKUWtxYVFjSldDWlRCa2xJSlFuVXBRTUtDUDQzQnBEd01RdXFvV2NJVWJvSEJwRHdNUW05UldzSVVnb0RCcER3TVFvK1ZXc0t0UklIQnBEd01RaHpiV2NMSWxvREJwRHdNUXYrYVVzSVZIR1BCcER3TVFrMG5VOEk2d21EQnBEd01RaXQrVThJL0JtTEJwRHdNUXJlMVVzSWpUV0hCcER3TVFuamxTTUk2MzNQQnBEd01RbjVTU2NKWkpYSEJwRHdNUWptM1NjSWNJWExCcER3TVFwM3BTTUptQkhMQnBEd01RdGJEU2NMRGNJL0JwRHdNUWpNS1NzSWQ3bzNCcER3TVF0RjVTc0pkUDQ3QnBEd01RamF2U2NMUWhvN0JwRHdNUXBsOFZNS3g2WkxCcER3TVF1WWdWY0pRNFpQQnBEd01RbXpaVk1JSW41VEJwRHdNUW4zeVZNS2tCcFBCOGpBTlFsVWVXY0luOTN6QjhqQU5RcGJTV3NJN3NIekI4akFOUXRBcldjSXZSSDNCOGpBTlFvamNXc0lFVzN6QjhqQU5Rblo0V01KYW80SEI4akFOUWdwaFdNSnpwNEhCOGpBTlF1SnJXY0toV29UQjhqQU5Rdk5oV2NJL2hZVEI4akFOUWlNZ1c4SXRONFRCOGpBTlFxY1NXOEtvRUlUQjhqQU5RbkRkVzhKTkM0SEI4akFOUWdQR1c4Sm1ENEhCOGpBTlFnTEZVY0pMeTEzQjhqQU5RcjEyVWNKOGdXVEI4akFOUWtGZ1VjTDVuR1RCOGpBTlFqVFdVY0p0QzE3QjhqQU5RaDJ0VXNJNUIybkI4akFOUXRTblVzTGFZbW5COGpBTlFpaFVWTUlKVjJmQjhqQU5RdmRDVk1MbkZtZkI4akFOUXVxNFZNSlpoV0RCOGpBTlFtNmlWTUxXb0dEQjhqQU5RZzVzVThJYkcxekI4akFOUWxkeFU4SjZ2MXZCOGpBTlF1RENSOEpIU1hiQjhqQU5Rb2cvU2NLMm9IbkI4akFOUXJnK1NjS3Yvbm5COGpBTlFxSFhSOElqSFhiQjhqQU5RakRLU3NLVnRYYkI4akFOUWtHMlNzSy9nM2JCOGpBTlF0TFpTc0lQdDIvQjhqQU5RaERGU3NJMDQyL0I4akFOUWloZFNjS2tYMnpCOGpBTlF2dGRTY0twQVd6QjhqQU5Rb0hTUjhMRlNtL0I4akFOUW5EbVI4S1pmRy9COGpBTlFvVm9Tc0x6RzVMQjhqQU5RcmJEUzhKekNwREI4akFOUXB0c1NzSkJTcExCOGpBTlFxQ3RTOEpkK28vQjhqQU5RdkIxUzhKQW1JekI4akFOUXU1alM4SjR0b3pCOGpBTlFpTFZTY0l0bEl2QjhqQU5RZ3pSU2NMZ1pZdkI4akFOUXZCNVNNS3VwWTNCOGpBTlFnaVFTTUxDdFkzQjhqQU5Rcm5aU01LbStaREI4akFOUXJqSFNNTGdGNUhCOGpBTlFqeFFWc0xPSzVUQjhqQU5RcEM0VmNMeitKREI4akFOUXBKblZzS0lNWlRCOGpBTlFtbXFWY0ovSHBIQjhqQU5RaThGVk1JTnQ1REI4akFOUWdIOFU4TEdpNURCOGpBTlFuTHVVc0l4VjVQQjhqQU5Rc2NGVThMc1hKUEI4akFOUXBxclU4STVhcGJCOGpBTlFuU2RVOExIajViQjhqQU5RdFZRVmNLczBaYkI4akFOUWdSYVZjTDEvSmJCdUhrTVFwYlNXc0k3c0h6QnVIa01RdEFyV2NJdlJIM0J1SGtNUW5aNFdNSmFvNEhCdUhrTVF1SnJXY0toV29UQnVIa01RcWNTVzhLb0VJVEJ1SGtNUWdQR1c4Sm1ENEhCdUhrTVFqVFdVY0p0QzE3QnVIa01RcjEyVWNKOGdXVEJ1SGtNUWgydFVzSTVCMm5CdUhrTVF2ZENWTUxuRm1mQnVIa01RbTZpVk1MV29HREJ1SGtNUWc1c1U4SWJHMXpCdUhrTVFxSFhSOElqSFhiQnVIa01Rb2cvU2NLMm9IbkJ1SGtNUWtHMlNzSy9nM2JCdUhrTVFoREZTc0kwNDIvQnVIa01RaWhkU2NLa1gyekJ1SGtNUW5EbVI4S1pmRy9CdUhrTVFxQ3RTOEpkK28vQnVIa01Rb1ZvU3NMekc1TEJ1SGtNUXU1alM4SjR0b3pCdUhrTVFpTFZTY0l0bEl2QnVIa01RZ2lRU01MQ3RZM0J1SGtNUXJuWlNNS20rWkRCdUhrTVFtbXFWY0ovSHBIQnVIa01RanhRVnNMT0s1VEJ1SGtNUWk4RlZNSU50NURCdUhrTVFzY0ZVOExzWEpQQnVIa01RcHFyVThJNWFwYkJ1SGtNUXRWUVZjS3MwWmJCcER3TVFwYlNXc0k3c0h6QnBEd01RdEFyV2NJdlJIM0JwRHdNUW5aNFdNSmFvNEhCcER3TVF1SnJXY0toV29UQnBEd01RcWNTVzhLb0VJVEJwRHdNUWdQR1c4Sm1ENEhCcER3TVFqVFdVY0p0QzE3QnBEd01RcjEyVWNKOGdXVEJwRHdNUWgydFVzSTVCMm5CcER3TVF2ZENWTUxuRm1mQnBEd01RbTZpVk1MV29HREJwRHdNUWc1c1U4SWJHMXpCcER3TVFxSFhSOElqSFhiQnBEd01Rb2cvU2NLMm9IbkJwRHdNUWtHMlNzSy9nM2JCcER3TVFoREZTc0kwNDIvQnBEd01RaWhkU2NLa1gyekJwRHdNUW5EbVI4S1pmRy9CcER3TVFxQ3RTOEpkK28vQnBEd01Rb1ZvU3NMekc1TEJwRHdNUXU1alM4SjR0b3pCcER3TVFpTFZTY0l0bEl2QnBEd01RZ2lRU01MQ3RZM0JwRHdNUXJuWlNNS20rWkRCcER3TVFtbXFWY0ovSHBIQnBEd01RanhRVnNMT0s1VEJwRHdNUWk4RlZNSU50NURCcER3TVFzY0ZVOExzWEpQQnBEd01RcHFyVThJNWFwYkJwRHdNUXRWUVZjS3MwWmJCcER3TVFncnRXY0t0TUlMQnBEd01RbHhqV3NMNEc0TEJwRHdNUXR6eFVzSWFZR1RCcER3TVFuTmpVOEl4MVdQQnBEd01Rak5LU2NJRDIzVEJwRHdNUWhTelNjTHkrM1BCcER3TVFuUXpTc0lDd28vQnBEd01RbkdPU3NKUUtZL0JwRHdNUWg0MVZNSnBwNVBCcER3TVFvZGpWTUlWZ3BUQklSb05Ra3JHUzhLSG80SEJJUm9OUW1FUlQ4SU5Sb1BCSVJvTlFsYkJTOEp3Mm9QQklSb05RamtUVDhJRWM0TEJJUm9OUW9RbFQ4STZGWVRCSVJvTlFtLzNTOElEQjRiQklSb05Rc0JPVDhLRDE0VEJJUm9OUWpSbVRNTHVFSWpCSVJvTlFrZUxUOEpqaElYQklSb05RczRJVGNKZjRZbkJJUm9OUW5QWVQ4SlJGSWJCSVJvTlFpUFlUY0lNWkl2QklSb05RdWN5VU1JRmdZYkJJUm9OUWlUTFRzSVNpSXpCSVJvTlFyR1dVTUs5eFliQklSb05RalBYVDhLcFFJM0JJUm9OUW0vL1VNSjMzNGJCSVJvTlFwUHdVTUxFaFkzQklSb05RdnNLVXNKYVZJM0JJUm9OUW8xb1VjSVN6WWJCSVJvTlFoY2FVOEtVcm96QklSb05RbmZOVWNKZGo0YkJJUm9OUWdvU1ZNS3dtNHZCSVJvTlFzVXBVc0lJS1liQklSb05Rdi9uVk1LNEo0ckJJUm9OUW1wNVVzS1Jub1hCSVJvTlFweVNWY0xuWW9qQklSb05RdXU0VXNJRzlvVEJJUm9OUW1vS1ZzSU1ZWWJCSVJvTlFvUGxVc0xCTm9UQklSb05RakJLVnNLVk9JVEJJUm9OUWtEOVVzSVphWVBCSVJvTlFpTlBWc0t0QVlMQklSb05RaGovVXNJU2xvTEJJUm9OUXZYcVVzTHB4b0hCSVJvTlFnb1pWc0k5cW4vQklSb05RcmpCVXNLY0JJSEJJUm9OUWtXcVZjSmxsbnZCSVJvTlFqR0ZVc0s2VjREQklSb05RcXNIVmNKLzlYZkJJUm9OUWdRNFVzS1NqMy9CSVJvTlFsWTRWTUlnOEhUQklSb05RcFBkVWNJeXRuN0JJUm9OUWxkRlU4SVhxSExCSVJvTlFzcDVVY0xGTEg3QklSb05Ra2c1VXNMck5uSEJJUm9OUWd3UlVjSlUrWDNCSVJvTlF1Z2ZVY0sxckhEQklSb05RbjRGVU1LTUQzSEJJUm9OUXV5blVNSWJIbjdCSVJvTlFtRDJUc0lYVzNMQklSb05RdjlDVU1LR21YN0JJUm9OUW5EK1RjTFVnSFRCSVJvTlFyam1UOElpWm4vQklSb05RbnNvVGNMTmFIZkJJUm9OUWhHWFQ4S09QWURCSVJvTlF0MTlUTUp6OG5yQklSb05RbzVYVDhJZDVvREJJUm9OUWc4R1RNSW85bjdCSVJvTlF2WXFUOEpncFlIQkNSME5RcmdPVWNLSjlJTEJxTjBNUWtyR1M4S0hvNEhCcU4wTVFnOEdUTUlvOW43QnFOME1RbGJCUzhKdzJvUEJxTjBNUXQxOVRNSno4bnJCcU4wTVFuc29UY0xOYUhmQnFOME1RbkQrVGNMVWdIVEJxTjBNUW1EMlRzSVhXM0xCcU4wTVFuNEZVTUtNRDNIQnFOME1RdWdmVWNLMXJIREJxTjBNUXZzS1VzSmFWSTNCcU4wTVFwUHdVTUxFaFkzQnFOME1RaGNhVThLVXJvekJxTjBNUWpQWFQ4S3BRSTNCcU4wTVFpVExUc0lTaUl6QnFOME1RaVBZVGNJTVpJdkJxTjBNUXM0SVRjSmY0WW5CcU4wTVFqUm1UTUx1RUlqQnFOME1RbS8zUzhJREI0YkJxTjBNUWtnNVVzTHJObkhCcU4wTVFsZEZVOElYcUhMQnFOME1RbFk0Vk1JZzhIVEJxTjBNUXFzSFZjSi85WGZCcU4wTVFrV3FWY0psbG52QnFOME1RZ29aVnNJOXFuL0JxTjBNUWlOUFZzS3RBWUxCcU4wTVFqQktWc0tWT0lUQnFOME1RbW9LVnNJTVlZYkJxTjBNUXB5U1ZjTG5Zb2pCcU4wTVF2L25WTUs0SjRyQnFOME1RZ29TVk1Ld200dkJjOE1MUWtyR1M4S0hvNEhCYzhNTFFnOEdUTUlvOW43QmM4TUxRbGJCUzhKdzJvUEJjOE1MUXQxOVRNSno4bnJCYzhNTFFtLzNTOElEQjRiQmM4TUxRbnNvVGNMTmFIZkJjOE1MUW5EK1RjTFVnSFRCYzhNTFFtRDJUc0lYVzNMQmM4TUxRbjRGVU1LTUQzSEJjOE1MUXVnZlVjSzFySERCYzhNTFFrZzVVc0xyTm5IQmM4TUxRdnNLVXNKYVZJM0JjOE1MUXBQd1VNTEVoWTNCYzhNTFFoY2FVOEtVcm96QmM4TUxRalBYVDhLcFFJM0JjOE1MUWdvU1ZNS3dtNHZCYzhNTFFpVExUc0lTaUl6QmM4TUxRaVBZVGNJTVpJdkJjOE1MUXM0SVRjSmY0WW5CYzhNTFFqUm1UTUx1RUlqQmM4TUxRbGRGVThJWHFITEJjOE1MUWxZNFZNSWc4SFRCYzhNTFFxc0hWY0ovOVhmQmM4TUxRa1dxVmNKbGxudkJjOE1MUWdvWlZzSTlxbi9CYzhNTFFpTlBWc0t0QVlMQmM4TUxRakJLVnNLVk9JVEJjOE1MUW1vS1ZzSU1ZWWJCYzhNTFFweVNWY0xuWW9qQmM4TUxRdi9uVk1LNEo0ckI3Mkx4UVI3Q1BzSVdFNFBCNzJMeFFaaVFRY0t5UG92QjcyTHhRWlpmUDhKV2E0ekI3Mkx4UWVnR1FjSVhFNFBCNzJMeFFaaVFRY0xxem5YQjcyTHhRWmRmUDhLa2RYUEI3Mkx4UVVFa1E4TEdsR2JCNzJMeFFVY3RRY0kxQzJMQjcyTHhRV1dtUmNKYWdWbkI3Mkx4UWJRTFJNS2VGbFBCNzJMeFFVSHJTTUxFZUUvQjcyTHhRZG5JUjhMYW5FZkI3Mkx4UWNtNVRNSWZLa25CNzJMeFFYVWpUTUlhWmtEQjcyTHhRWmpQVU1KaEEwZkI3Mkx4UVpqUFVNSTI4RDNCNzJMeFFiWjdWY0lhWmtEQjcyTHhRV2psVk1JYktrbkI3Mkx4UVZUV1djTFluRWZCNzJMeFFmQ3pXTUxIZUUvQjcyTHhRWHFUWGNLZ0ZsUEI3Mkx4UWNyNFc4SlZnVm5CNzJMeFFlcHhZTUl2QzJMQjcyTHhRZTk2WHNMQ2xHYkI3Mkx4UVpvL1lzS25kWFBCNzJMeFFac09ZTUxsem5YQjcyTHhRVWFZWU1JV0U0UEI3Mkx4UVJIZFlzSVRFNFBCNzJMeFFac09ZTUt5UG92QjcyTHhRWm8vWXNKVmE0ekI3Mkx4UWZKNlhzTEcyNUxCNzJMeFFlbHhZTUtOSUpYQjcyTHhRYzM0VzhKMlpabkI3Mkx4UVhhVFhjTFZtcHpCNzJMeFFmQ3pXTUxEYVo3QjcyTHhRVlRXV2NLNFY2TEI3Mkx4UVdmbFZNSVRrYUhCNzJMeFFiZDdWY0lXODZYQjcyTHhRWm5QVU1KdnBLTEI3Mkx4UVpiUFVNSUpMcWZCNzJMeFFYVWpUTUlhODZYQjcyTHhRY201VE1JVmthSEI3Mkx4UWR6SVI4SzNWNkxCNzJMeFFVSHJTTUxFYVo3QjcyTHhRYmNMUk1MVm1wekI3Mkx4UVdXbVJjSjRaWm5CNzJMeFFVY3RRY0tMSUpYQjcyTHhRVUFrUThMQzI1TEJQK2p2UVI3Q1BzSVdFNFBCUCtqdlFaWmZQOEpXYTR6QlAranZRWmRmUDhLa2RYUEJQK2p2UVVjdFFjSTFDMkxCUCtqdlFiUUxSTUtlRmxQQlAranZRZG5JUjhMYW5FZkJQK2p2UVhValRNSWFaa0RCUCtqdlFaalBVTUkyOEQzQlAranZRYlo3VmNJYVprREJQK2p2UVZUV1djTFluRWZCUCtqdlFYcVRYY0tnRmxQQlAranZRZXB4WU1JdkMyTEJQK2p2UVpvL1lzS25kWFBCUCtqdlFSSGRZc0lURTRQQlAranZRWm8vWXNKVmE0ekJQK2p2UWVseFlNS05JSlhCUCtqdlFYYVRYY0xWbXB6QlAranZRVlRXV2NLNFY2TEJQK2p2UWJkN1ZjSVc4NlhCUCtqdlFaYlBVTUlKTHFmQlAranZRWFVqVE1JYTg2WEJQK2p2UWR6SVI4SzNWNkxCUCtqdlFiY0xSTUxWbXB6QlAranZRVWN0UWNLTElKWEJQK2p2UVlVQVBzSVVFNFBCUCtqdlFaV2tQc0tRejR6QlAranZRWmVrUHNJM3JYTEJQK2p2UVoyRlFNSUVpR0RCUCtqdlFjMkNROElQODFEQlAranZRUkJvUjhJMy9rVEJQK2p2UVZyeFM4SVplajNCUCtqdlFaZlBVTUxRNlRyQlAranZRZFN0VmNJYmVqM0JQK2p2UVNFM1dzSTIva1RCUCtqdlFWNGNYc0lLODFEQlAranZRWk1aWWNMK2gyREJQK2p2UVpqNllzSTRyWExCUCtqdlFhMmVZOElURTRQQlAranZRWnY2WXNLSXo0ekJQK2p2UVpJWlljSW40cFhCUCtqdlFWNGNYc0tmckozQlAranZRU0UzV3NJSXA2UEJQK2p2UWRPdFZjSVhhYWZCUCtqdlFaWFBVTUk4c2FqQlAranZRVnp4UzhJWmFhZkJQK2p2UVJCb1I4SUlwNlBCUCtqdlFkR0NROEtlckozQlAranZRWnVGUU1JbjRwWEI3Mkx4UVpXa1BzS1F6NHpCNzJMeFFZVUFQc0lVRTRQQjcyTHhRWmVrUHNJM3JYTEI3Mkx4UVoyRlFNSUVpR0RCNzJMeFFjMkNROElQODFEQjcyTHhRUkJvUjhJMy9rVEI3Mkx4UVZyeFM4SVplajNCNzJMeFFaZlBVTUxRNlRyQjcyTHhRZFN0VmNJYmVqM0I3Mkx4UVNFM1dzSTIva1RCNzJMeFFWNGNYc0lLODFEQjcyTHhRWk1aWWNMK2gyREI3Mkx4UVpqNllzSTRyWExCNzJMeFFhMmVZOElURTRQQjcyTHhRWnY2WXNLSXo0ekI3Mkx4UVpJWlljSW40cFhCNzJMeFFWNGNYc0tmckozQjcyTHhRU0UzV3NJSXA2UEI3Mkx4UWRPdFZjSVhhYWZCNzJMeFFaWFBVTUk4c2FqQjcyTHhRVnp4UzhJWmFhZkI3Mkx4UVJCb1I4SUlwNlBCNzJMeFFkR0NROEtlckozQjcyTHhRWnVGUU1JbjRwWEJQK2p2UVNNeU44SVdFNFBCNzJMeFFaZ1JPTUozVlpEQlAranZRWmdST01KM1ZaREI3Mkx4UVNNeU44SVdFNFBCUCtqdlFaWVJPTUpkb1d2QjcyTHhRWllST01KZG9XdkJQK2p2UWE2Z09zSks2MUxCNzJMeFFhNmdPc0pLNjFMQlAranZRY095UHNMZHNqM0I3Mkx4UWNPeVBzTGRzajNCUCtqdlFlSUFSTUp4YWkzQjcyTHhRZUlBUk1KeGFpM0JQK2p2UVdjdVNzSVdMaVBCNzJMeFFXY3VTc0lXTGlQQlAranZRWmpQVU1KV3NCL0I3Mkx4UVpqUFVNSldzQi9CNzJMeFFjaHdWOElhTGlQQlAranZRY2h3VjhJYUxpUEI3Mkx4UVUyZVhjSjBhaTNCUCtqdlFVMmVYY0owYWkzQjcyTHhRV2ZzWXNMWnNqM0JQK2p2UVdmc1lzTFpzajNCNzJMeFFZUCtac0kvNjFMQlAranZRWVArWnNJLzYxTEI3Mkx4UVp1TmFjSmRvV3ZCUCtqdlFadU5hY0pkb1d2QjcyTHhRUTV0YXNJV0U0UEJQK2p2UVE1dGFzSVdFNFBCNzJMeFFabU5hY0owVlpEQlAranZRWm1OYWNKMFZaREI3Mkx4UVlQK1pzS0hzSnpCUCtqdlFZUCtac0tIc0p6QjcyTHhRV2pzWXNLM1RLZkJQK2p2UVdqc1lzSzNUS2ZCNzJMeFFWQ2VYY0xxY0svQlAranZRVkNlWGNMcWNLL0I3Mkx4UWNsd1Y4SWJqN1RCUCtqdlFjbHdWOEliajdUQjcyTHhRWm5QVU1MNFRiYkJQK2p2UVpuUFVNTDRUYmJCUCtqdlFXZ3VTc0lYajdUQjcyTHhRV2d1U3NJWGo3VEJQK2p2UWQ4QVJNTHFjSy9CNzJMeFFkOEFSTUxxY0svQlAranZRY2F5UHNLM1RLZkI3Mkx4UWNheVBzSzNUS2ZCUCtqdlFheWdPc0tEc0p6QjcyTHhRYXlnT3NLRHNKekJQK2p2UVpaQ09zTFZLSS9CUCtqdlFlNTJPY0lXRTRQQlAranZRWlJDT3NLcCttM0JQK2p2UWFhWFBNTGVkRmZCUCtqdlFYVk5RTUtVSFVUQlAranZRVWNqUmNKZFJqWEJQK2p2UWJmRVNzSVk4aXZCUCtqdlFablBVTUo3d3lqQlAranZRWGphVnNJYzhpdkJQK2p2UWU1N1hNSmhSalhCUCtqdlFieFJZY0tVSFVUQlAranZRWWtIWmNMWGRGZkJQK2p2UVpwY1o4S24rbTNCUCtqdlFVUW9hTUlURTRQQlAranZRWnhjWjhMVEtJL0JQK2p2UVlzSFpjSythNXJCUCtqdlFibFJZY0piRjZUQlAranZRZTU3WE1MMmdxdkJQK2p2UVhmYVZzSVlMYkRCUCtqdlFaZlBVTUpteExIQlAranZRYmpFU3NJWUxiREJQK2p2UVVjalJjTHpncXZCUCtqdlFYSk5RTUpaRjZUQlAranZRYWVYUE1LNGE1ckJrMjN1UWU1Mk9jSVdFNFBCazIzdVFaWkNPc0xWS0kvQmsyM3VRWlJDT3NLcCttM0JrMjN1UWFhWFBNTGVkRmZCazIzdVFYVk5RTUtVSFVUQmsyM3VRVWNqUmNKZFJqWEJrMjN1UWJmRVNzSVk4aXZCazIzdVFablBVTUo3d3lqQmsyM3VRWGphVnNJYzhpdkJrMjN1UWU1N1hNSmhSalhCazIzdVFieFJZY0tVSFVUQmsyM3VRWWtIWmNMWGRGZkJrMjN1UVpwY1o4S24rbTNCazIzdVFVUW9hTUlURTRQQmsyM3VRWnhjWjhMVEtJL0JrMjN1UVlzSFpjSythNXJCazIzdVFibFJZY0piRjZUQmsyM3VRZTU3WE1MMmdxdkJrMjN1UVhmYVZzSVlMYkRCazIzdVFaZlBVTUpteExIQmsyM3VRYmpFU3NJWUxiREJrMjN1UVVjalJjTHpncXZCazIzdVFYSk5RTUpaRjZUQmsyM3VRYWVYUE1LNGE1ckJrMjN1UVNNeU44SVdFNFBCazIzdVFaZ1JPTUozVlpEQmsyM3VRWllST01KZG9XdkJrMjN1UWE2Z09zSks2MUxCazIzdVFjT3lQc0xkc2ozQmsyM3VRZUlBUk1KeGFpM0JrMjN1UVdjdVNzSVdMaVBCazIzdVFaalBVTUpXc0IvQmsyM3VRY2h3VjhJYUxpUEJrMjN1UVUyZVhjSjBhaTNCazIzdVFXZnNZc0xac2ozQmsyM3VRWVArWnNJLzYxTEJrMjN1UVp1TmFjSmRvV3ZCazIzdVFRNXRhc0lXRTRQQmsyM3VRWm1OYWNKMFZaREJrMjN1UVlQK1pzS0hzSnpCazIzdVFXanNZc0szVEtmQmsyM3VRVkNlWGNMcWNLL0JrMjN1UWNsd1Y4SWJqN1RCazIzdVFablBVTUw0VGJiQmsyM3VRV2d1U3NJWGo3VEJrMjN1UWQ4QVJNTHFjSy9CazIzdVFjYXlQc0szVEtmQmsyM3VRYXlnT3NLRHNKekI1UExzUVNNeU44SVdFNFBCNVBMc1FaZ1JPTUozVlpEQjVQTHNRWllST01KZG9XdkI1UExzUWE2Z09zSks2MUxCNVBMc1FjT3lQc0xkc2ozQjVQTHNRZUlBUk1KeGFpM0I1UExzUVdjdVNzSVdMaVBCNVBMc1FaalBVTUpXc0IvQjVQTHNRY2h3VjhJYUxpUEI1UExzUVUyZVhjSjBhaTNCNVBMc1FXZnNZc0xac2ozQjVQTHNRWVArWnNJLzYxTEI1UExzUVp1TmFjSmRvV3ZCNVBMc1FRNXRhc0lXRTRQQjVQTHNRWm1OYWNKMFZaREI1UExzUVlQK1pzS0hzSnpCNVBMc1FXanNZc0szVEtmQjVQTHNRVkNlWGNMcWNLL0I1UExzUWNsd1Y4SWJqN1RCNVBMc1FablBVTUw0VGJiQjVQTHNRV2d1U3NJWGo3VEI1UExzUWQ4QVJNTHFjSy9CNVBMc1FjYXlQc0szVEtmQjVQTHNRYXlnT3NLRHNKekI1UExzUVpmVlFNTG5vb3ZCNVBMc1FVNUZRTUlXRTRQQjVQTHNRWlhWUU1LQkJuWEI1UExzUVpaOFFzS1VFV1hCNVBMc1FYOGRSY0xFWFZmQjVQTHNRWE9LU01JYzJrekI1UExzUWErSFRNSVlQa2JCNVBMc1FaalBVTUlBL1VQQjVQTHNRWUlYVmNJYVBrYkI1UExzUWIwVVdjSWkya3pCNVBMc1FhK0JYTUxHWFZmQjVQTHNRWmdpWDhLUkVXWEI1UExzUVpqSllNS0dCblhCNVBMc1FlUlpZY0lURTRQQjVQTHNRWjNKWU1Ma29vdkI1UExzUVpraVg4SmNuWlBCNVBMc1FhK0JYTUpHZDVyQjVQTHNRYjhVV2NJVHVaL0I1UExzUVlFWFZjSVhCNlBCNVBMc1FaYlBVTUttSjZUQjVQTHNRYStIVE1JYkI2UEI1UExzUVhLS1NNSVR1Wi9CNVBMc1FYMGRSY0pDZDVyQjVQTHNRWmQ4UXNKYW5aUEI3Mkx4UWN6MVk4SVhFNFBCNzJMeFFjSk9ZOElDVTNMQjcyTHhRUWRsWWNLOTJWL0I3Mkx4UWZkWlhzS2YvRS9CNzJMeFFiSmlXc0pzMEVQQjcyTHhRV0RFVmNLQUtUekI3Mkx4UVpuUFVNSlVqVG5CNzJMeFFkTGFTOEtDS1R6QjcyTHhRWDQ4UjhKdTBFUEI3Mkx4UVRWRlE4S2svRS9CNzJMeFFTazZRTUxJMlYvQjcyTHhRWEJRUHNJQ1UzTEI3Mkx4UVdlcFBjSVVFNFBCNzJMeFFXNVFQc0ttL0l6QjcyTHhRU2s2UU1KRU9aYkI3Mkx4UVRoRlE4TFVKNTdCNzJMeFFZQThSOEx4UGFUQjcyTHhRZEhhUzhKbkVhakI3Mkx4UVpmUFVNSjdYNm5CNzJMeFFXREVWY0pqRWFqQjcyTHhRYk5pV3NMdlBhVEI3Mkx4UWZaWlhzTFZKNTdCNzJMeFFRZGxZY0pJT1piQjcyTHhRY0JPWThLai9JekI3Mkx4UWFvOWFjSU05MnZCNzJMeFFVb2Fhc0lXRTRQQjcyTHhRYW85YWNLZEtwREI3Mkx4UWRlMlpzTEdYWnpCNzJMeFFlT3hZc0t0MTZiQjcyTHhRZTkwWGNLUTRhN0I3Mkx4UVZ4YlY4SXo3N1BCNzJMeFFablBVTUp4cUxYQjcyTHhRZE5EU3NJMDc3UEI3Mkx4UVVJcVJNS1Q0YTdCNzJMeFFVdnRQc0tyMTZiQjcyTHhRVnJvT3NMQVhaekI3Mkx4UVlaaE9NS2ZLcERCNzJMeFFlbUVOOElURTRQQjcyTHhRWWRoT01JTDkydkI3Mkx4UVZub09zTFNrRlBCNzJMeFFVWHRQc0wybkQ3QjcyTHhRVVFxUk1JbWlTN0I3Mkx4UWRCRFNzTGZiU1RCNzJMeFFablBVTUplK3lEQjcyTHhRVjFiVjhMZGJTVEI3Mkx4UWU1MFhjSW1pUzdCNzJMeFFlS3hZc0x3bkQ3QjcyTHhRZGUyWnNMRWtGUEJXTWo0UVh1UVJjSVVFNFBCNFJZQVFwUHlSY0ovZ1hyQjRSWUFRbnVRUmNJVUU0UEJXTWo0UVpQeVJjSi9nWHJCNFJZQVFqY1NSOEx0cDIvQldNajRRVGNTUjhMdHAyL0I0UllBUXNIYlNNTE1WbWJCV01qNFFjSGJTTUxNVm1iQjRSWUFRZ293UzhLWE1GL0JXTWo0UVFvd1M4S1hNRi9CNFJZQVFtem1UY0lic2xyQldNajRRV3ptVGNJYnNsckI0UllBUXBmUFVNSzBLVm5CV01qNFFaZlBVTUswS1ZuQldNajRRY0M0VThJaHNsckI0UllBUXNDNFU4SWhzbHJCV01qNFFTZHZWc0tjTUYvQjRSWUFRaWR2VnNLY01GL0JXTWo0UVc3RFdNTEtWbWJCNFJZQVFtN0RXTUxLVm1iQldNajRRZm1NV3NMdnAyL0I0UllBUXZtTVdzTHZwMi9CV01qNFFacXNXOEovZ1hyQjRSWUFRcHFzVzhKL2dYckJXTWo0UWJNT1hNSVdFNFBCNFJZQVFyTU9YTUlXRTRQQldNajRRWnFzVzhKcDVZakI0UllBUXBxc1c4SnA1WWpCV01qNFFmaU1Xc0l3VW83QjRSWUFRdmlNV3NJd1VvN0JXTWo0UVd6RFdNTEMrcExCNFJZQVFtekRXTUxDK3BMQldNajRRU1J2VnNMWmpaYkI0UllBUWlSdlZzTFpqWmJCV01qNFFjSzRVOElaelpqQjRSWUFRc0s0VThJWnpaakJXTWo0UVpmUFVNSk9rWm5CNFJZQVFwZlBVTUpPa1puQjRSWUFRbS9tVGNJWXpaakJXTWo0UVcvbVRjSVl6WmpCNFJZQVFnc3dTOExaalpiQldNajRRUXN3UzhMWmpaYkI0UllBUXI3YlNNSy8rcExCV01qNFFiN2JTTUsvK3BMQjRSWUFRallTUjhJeFVvN0JXTWo0UVRZU1I4SXhVbzdCNFJZQVFwYnlSY0pwNVlqQldNajRRWmJ5UmNKcDVZakIrOUwxUWE5TFE4SVdFNFBCKzlMMVFackJROElORW9yQis5TDFRWmpCUThJMktIakIrOUwxUVQwYlJjSllIbXZCKzlMMVFSRkJSOElUN0YvQis5TDFRYVlOU3NLdlZGZkIrOUwxUVJ0UVRjSWc3bEhCKzlMMVFaWFBVTUtORmxEQis5TDFRUmRQVk1JWTdsSEIrOUwxUVltUlY4S3ZWRmZCKzlMMVFSMWVXc0lSN0YvQis5TDFRZmlEWE1KVkhtdkIrOUwxUVp6ZFhjSXhLSGpCKzlMMVFZRlRYc0lURTRQQis5TDFRWnpkWGNJTUVvckIrOUwxUWZTRFhNTDlscERCKzlMMVFSNWVXc0ljTUpiQis5TDFRWXFSVjhMTWU1ckIrOUwxUVJSUFZNSVhMNTNCKzlMMVFablBVTUxoR3A3Qis5TDFRUjFRVGNJV0w1M0IrOUwxUWFjTlNzTExlNXJCKzlMMVFSUkJSOEllTUpiQis5TDFRVG9iUmNMNmxwREJTMWowUWE5TFE4SVdFNFBCUzFqMFFackJROElORW9yQlMxajBRWmpCUThJMktIakJTMWowUVQwYlJjSllIbXZCUzFqMFFSRkJSOElUN0YvQlMxajBRYVlOU3NLdlZGZkJTMWowUVJ0UVRjSWc3bEhCUzFqMFFaWFBVTUtORmxEQlMxajBRUmRQVk1JWTdsSEJTMWowUVltUlY4S3ZWRmZCUzFqMFFSMWVXc0lSN0YvQlMxajBRZmlEWE1KVkhtdkJTMWowUVp6ZFhjSXhLSGpCUzFqMFFZRlRYc0lURTRQQlMxajBRWnpkWGNJTUVvckJTMWowUWZTRFhNTDlscERCUzFqMFFSNWVXc0ljTUpiQlMxajBRWXFSVjhMTWU1ckJTMWowUVJSUFZNSVhMNTNCUzFqMFFablBVTUxoR3A3QlMxajBRUjFRVGNJV0w1M0JTMWowUWFjTlNzTExlNXJCUzFqMFFSUkJSOEllTUpiQlMxajBRVG9iUmNMNmxwREJTMWowUVU1RlFNSVdFNFBCUzFqMFFaZlZRTUxub292QlMxajBRWlhWUU1LQkJuWEJTMWowUVpaOFFzS2NFV1hCUzFqMFFYOGRSY0xHWFZmQlMxajBRWE9LU01JYzJrekJTMWowUWErSFRNSVlQa2JCUzFqMFFaalBVTUlBL1VQQlMxajBRWUlYVmNJYVBrYkJTMWowUWIwVVdjSWkya3pCUzFqMFFhK0JYTUxHWFZmQlMxajBRWmtpWDhLT0VXWEJTMWowUVpqSllNS0dCblhCUzFqMFFlUlpZY0lURTRQQlMxajBRWjNKWU1Ma29vdkJTMWowUVpraVg4SmNuWlBCUzFqMFFhK0JYTUpHZDVyQlMxajBRYjhVV2NJVHVaL0JTMWowUVlFWFZjSVhCNlBCUzFqMFFaalBVTUtuSjZUQlMxajBRYStIVE1JWUI2UEJTMWowUVhLS1NNSVR1Wi9CUzFqMFFYMGRSY0pDZDVyQlMxajBRWmQ4UXNKYW5aUEJuOTN5UVU1RlFNSVdFNFBCbjkzeVFaZlZRTUxub292Qm45M3lRWlhWUU1LQkJuWEJuOTN5UVpaOFFzS2NFV1hCbjkzeVFYOGRSY0xHWFZmQm45M3lRWE9LU01JYzJrekJuOTN5UWErSFRNSVlQa2JCbjkzeVFaalBVTUlBL1VQQm45M3lRWUlYVmNJYVBrYkJuOTN5UWIwVVdjSWkya3pCbjkzeVFhK0JYTUxHWFZmQm45M3lRWmtpWDhLT0VXWEJuOTN5UVpqSllNS0dCblhCbjkzeVFlUlpZY0lURTRQQm45M3lRWjNKWU1Ma29vdkJuOTN5UVpraVg4SmNuWlBCbjkzeVFhK0JYTUpHZDVyQm45M3lRYjhVV2NJVHVaL0JuOTN5UVlFWFZjSVhCNlBCbjkzeVFaalBVTUtuSjZUQm45M3lRYStIVE1JWUI2UEJuOTN5UVhLS1NNSVR1Wi9CbjkzeVFYMGRSY0pDZDVyQm45M3lRWmQ4UXNKYW5aUEJuOTN5UVppUVFjS3lQb3ZCbjkzeVFlZ0dRY0lYRTRQQm45M3lRWmlRUWNMcXpuWEJuOTN5UVVFa1E4TEdsR2JCbjkzeVFXV21SY0phZ1ZuQm45M3lRVUhyU01MRWVFL0JuOTN5UWNtNVRNSWZLa25CbjkzeVFaalBVTUpoQTBmQm45M3lRV2psVk1JYktrbkJuOTN5UWZDeldNTEhlRS9CbjkzeVFjcjRXOEpWZ1ZuQm45M3lRZTk2WHNMQ2xHYkJuOTN5UVpzT1lNTGx6blhCbjkzeVFVYVlZTUlXRTRQQm45M3lRWnNPWU1LeVBvdkJuOTN5UWZKNlhzTEcyNUxCbjkzeVFjMzRXOEoyWlpuQm45M3lRZkN6V01MRGFaN0JuOTN5UVdmbFZNSVRrYUhCbjkzeVFablBVTUp2cEtMQm45M3lRY201VE1JVmthSEJuOTN5UVVIclNNTEVhWjdCbjkzeVFXV21SY0o0WlpuQm45M3lRVUFrUThMQzI1TEJLd2puUVU1RlFNSVdFNFBCS3dqblFaZlZRTUxub292Qkt3am5RWlhWUU1LQkJuWEJLd2puUVpaOFFzS1VFV1hCS3dqblFYOGRSY0xFWFZmQkt3am5RWE9LU01JYzJrekJLd2puUWErSFRNSVlQa2JCS3dqblFaalBVTUlBL1VQQkt3am5RWUlYVmNJYVBrYkJLd2puUWIwVVdjSWkya3pCS3dqblFhK0JYTUxHWFZmQkt3am5RWmdpWDhLUkVXWEJLd2puUVpqSllNS0dCblhCS3dqblFlUlpZY0lURTRQQkt3am5RWjNKWU1Ma29vdkJLd2puUVpraVg4SmNuWlBCS3dqblFhK0JYTUpHZDVyQkt3am5RYjhVV2NJVHVaL0JLd2puUVlFWFZjSVhCNlBCS3dqblFaYlBVTUttSjZUQkt3am5RYStIVE1JYkI2UEJLd2puUVhLS1NNSVR1Wi9CS3dqblFYMGRSY0pDZDVyQkt3am5RWmQ4UXNKYW5aUEJ2NlBFUVpnalNNTEh1SWZCdjZQRVFVZlZSOElVRTRQQnY2UEVRWmNqU01MQjJuekJ2NlBFUVRNSlNjSjlNWFRCdjZQRVFXNTJTc0tGd1d6QnY2UEVRVzlTVE1LTURHZkJ2NlBFUWIxOFRzSWxkbVBCdjZQRVFaalBVTUxkUEdMQnY2UEVRWE1pVThJaWRtUEJ2NlBFUWNKTVZjS0tER2ZCdjZQRVFiMG9WOEtEd1d6QnY2UEVRUUNXV01LQ01YVEJ2NlBFUVpsN1djTEgybnpCdjZQRVFlckpXY0lTRTRQQnY2UEVRWmw3V2NMRXVJZkJ2NlBFUVFDV1dNSmpEWXpCdjZQRVFjQW9WOEpreFkvQnY2UEVRY0ZNVmNMam41TEJ2NlBFUVhJaVU4SVdhNVRCdjZQRVFaYlBVTUszQjVYQnY2UEVRYjk4VHNJWWE1VEJ2NlBFUVc1U1RNTGZuNUxCdjZQRVFXNTJTc0pqeFkvQnY2UEVRVE1KU2NKb0RZekJsSG1uUVVmVlI4SVVFNFBCbEhtblFaZ2pTTUxIdUlmQmxIbW5RWmNqU01MQjJuekJsSG1uUVRNSlNjSjlNWFRCbEhtblFXNTJTc0tGd1d6QmxIbW5RVzlTVE1LTURHZkJsSG1uUWIxOFRzSWxkbVBCbEhtblFaalBVTUxkUEdMQmxIbW5RWE1pVThJaWRtUEJsSG1uUWNKTVZjS0tER2ZCbEhtblFiMG9WOEtEd1d6QmxIbW5RUUNXV01LQ01YVEJsSG1uUVpsN1djTEgybnpCbEhtblFlckpXY0lTRTRQQmxIbW5RWmw3V2NMRXVJZkJsSG1uUVFDV1dNSmpEWXpCbEhtblFjQW9WOEpreFkvQmxIbW5RY0ZNVmNMam41TEJsSG1uUVhJaVU4SVdhNVRCbEhtblFaYlBVTUszQjVYQmxIbW5RYjk4VHNJWWE1VEJsSG1uUVc1U1RNTGZuNUxCbEhtblFXNTJTc0pqeFkvQmxIbW5RVE1KU2NKb0RZekIwczNOUVJYM1VNSnBOZDNBaitZSlF2TnhRc0tCVVBUQWorWUpRaFgzVU1KcE5kM0EwczNOUWZOeFFzS0JVUFRBcUV6TVFSajNVTUpnL3REQXFFek1RVjdjUWNLQkIrbkFRRU1LUXRUbFFjSUlJdXJBUUVNS1FvOEFVY0xtR05MQUtJWUtRcHJ6VU1KenFycS8wczNOUVJNU09zSllKeWJBMHMzTlFacnpVTUp6cXJxL0tJWUtRaE1TT3NKWUp5YkFLSVlLUXB6elVNS21GUkhBS0lZS1F2Sk9POEpPOTFYQTBzM05RZkpPTzhKTzkxWEEwczNOUVp6elVNS21GUkhBaWxvTFFwM3pVTUxUOVNyQWlsb0xRbVB0TzhKRzMyM0FxRXpNUVdQdE84SkczMjNBcUV6TVFaM3pVTUxUOVNyQUVBb01RcHJ6VU1JRC8xSEFFQW9NUW1YY1BNTGc5NGpBVmdQTFFXWGNQTUxnOTRqQVZnUExRWnJ6VU1JRC8xSEFFQW9NUXJMN1VNSXAzOEhBRUFvTVF1c21RY0pURU52QVZnUExRZXNtUWNKVEVOdkFWZ1BMUWJMN1VNSXAzOEhBMHMzTlFiY2lOc0taRGh2QmorWUpRcmNpTnNLWkRodkJxRXpNUVZFT05jSUx2UmJCUUVNS1Fza1hOY0pLU2hmQjBzM05RVXVzSnNMZHc3ckFLSVlLUWt1c0pzTGR3N3JBS0lZS1FzNzFLTUxoRDgzQTBzM05RYzcxS01MaEQ4M0FpbG9MUW8wYUtzTHNOZGJBcUV6TVFZMGFLc0xzTmRiQUVBb01RaTdVSzhJTUErVEFWZ1BMUVM3VUs4SU1BK1RBRUFvTVFpSzdNOElKWnhIQlZnUExRU0s3TThJSlp4SEJqK1lKUWlEcExjS0lTMHpCMHMzTlFTRHBMY0tJUzB6QnFFek1RZjkvTE1JMjlVbkJRRU1LUW5hSkxNSjRna3JCMHMzTlFVVzJHY0lQK1NyQktJWUtRa1cyR2NJUCtTckJLSVlLUWtTekhNS0s3Qy9CMHMzTlFVU3pITUtLN0MvQmlsb0xRc1V4SHNKSFpqTEJxRXpNUWNVeEhzSkhaakxCRUFvTVFzeHlJTUpXSWpiQlZnUExRY3h5SU1KV0lqYkJFQW9NUW1uREtzSXVGa2ZCVmdQTFFXbkRLc0l1RmtmQmorWUpRcndGSzhJUE1JUEIwczNOUWJ3Rks4SVBNSVBCcUV6TVFkdCtLY0lQTUlQQlFFTUtRbEdJS2NLeGRvUEIwczNOUVNJcEZjS1pQNFBCS0lZS1FpSXBGY0taUDRQQktJWUtRaWxsR01LYVA0UEIwczNOUVNsbEdNS2FQNFBCaWxvTFFpd0RHc0taUDRQQnFFek1RU3dER3NLWlA0UEJFQW9NUXJ0ekhNS2FQNFBCVmdQTFFidHpITUthUDRQQkVBb01Ra0dkSjhLdE5JUEJWZ1BMUVVHZEo4S3ROSVBCaitZSlFoM3BMY0pXT3FEQjBzM05RUjNwTGNKV09xREJxRXpNUVFDQUxNSitaYUhCUUVNS1FubUpMTUlmcktIQjBzM05RVU8yR2NLc0FySEJLSVlLUWtPMkdjS3NBckhCS0lZS1FrT3pITUx2aUs3QjBzM05RVU96SE1MdmlLN0JpbG9MUXNNeEhzSU9USzNCcUV6TVFjTXhIc0lPVEszQkVBb01RczF5SU1JSWJxdkJWZ1BMUWMxeUlNSUlicXZCRUFvTVFtakRLc0k3M3FMQlZnUExRV2pES3NJNzNxTEJqK1lKUXJjaU5zTFAyTGpCMHMzTlFiY2lOc0xQMkxqQnFFek1RVkVPTmNLWkFidkJRRU1LUXNnWE5jSTdTTHZCMHMzTlFVaXNKc0k5enRmQktJWUtRa2lzSnNJOXp0ZkJLSVlLUXN6MUtNSTNPOVBCMHMzTlFjejFLTUkzTzlQQmlsb0xRb3dhS3NLODhkREJxRXpNUVl3YUtzSzg4ZERCRUFvTVFqTFVLOEp4ZnMzQlZnUExRVExVSzhKeGZzM0JFQW9NUWgrN004TEx0YjNCVmdQTFFSKzdNOExMdGIzQmorWUpRdk54UXNJQVRNbkIwczNOUWZOeFFzSUFUTW5CcUV6TVFWL2NRY0k4SHN6QlFFTUtRdFhsUWNMZ1pNekIwczNOUVJJU09zSkp1dkhCS0lZS1FoSVNPc0pKdXZIQktJWUtRdk5PTzhKTndPdkIwczNOUWZOT084Sk53T3ZCaWxvTFFtUHRPOEpOdytqQnFFek1RV1B0TzhKTncrakJFQW9NUW1iY1BNSStRZVRCVmdQTFFXYmNQTUkrUWVUQkVBb01RdWNtUWNJK3BjL0JWZ1BMUWVjbVFjSStwYy9CaitZSlFoYjNVTUxGRXMvQjBzM05RUmIzVU1MRkVzL0JxRXpNUVJuM1VNS0RJTkxCUUVNS1FvMEFVY0lvWjlMQjBzM05RWnJ6VU1LVDFQckJLSVlLUXByelVNS1QxUHJCS0lZS1FwbnpVTUtFWFBUQjBzM05RWm56VU1LRVhQVEJpbG9MUXAzelVNSjdJUEhCcUV6TVFaM3pVTUo3SVBIQkVBb01RcDN6VU1KV1ArekJWZ1BMUVozelVNSldQK3pCRUFvTVFyTDdVTUtIOGRYQlZnUExRYkw3VU1LSDhkWEJqK1lKUWpwOFg4TCtTOG5CMHMzTlFUcDhYOEwrUzhuQnFFek1RYzRSWU1JOEhzekJRRU1LUWtVYllNTGVaTXpCMHMzTlFTVFZaOEpMdXZIQktJWUtRaVRWWjhKTHV2SEJLSVlLUWthWVpzSk13T3ZCMHMzTlFVYVlac0pNd092Qmlsb0xRdFg1WmNKT3crakJxRXpNUWRYNVpjSk93K2pCRUFvTVF0VUtaY0pBUWVUQlZnUExRZFVLWmNKQVFlVEJFQW9NUW56UVlNSTZwYy9CVmdQTFFYelFZTUk2cGMvQmorWUpRblhMYThMUjJMakIwczNOUVhYTGE4TFIyTGpCcUV6TVFkM2ZiTUtYQWJ2QlFFTUtRbFRwYk1JNlNMdkIwczNOUWVvNmU4SkN6dGZCS0lZS1F1bzZlOEpDenRmQktJWUtRbXJ4ZU1JOU85UEIwczNOUVdyeGVNSTlPOVBCaWxvTFFxdk1kOEs3OGREQnFFek1RYXZNZDhLNzhkREJFQW9NUWdjVGRzSnpmczNCVmdQTFFRY1Rkc0p6ZnMzQkVBb01Ra0k4YnNMUHRiM0JWZ1BMUVVJOGJzTFB0YjNCaitZSlFnMEZkTUpXT3FEQjBzM05RUTBGZE1KV09xREJxRXpNUVM1dWRjS0RaYUhCUUVNS1FxVjNkY0lqcktIQjBzM05RWG9ZaE1LdUFySEJLSVlLUW5vWWhNS3VBckhCS0lZS1F2dVpnc0x1aUs3QjBzM05RZnVaZ3NMdWlLN0JpbG9MUXJ2YWdjSVFUSzNCcUV6TVFidmFnY0lRVEszQkVBb01RamU2Z01JSWJxdkJWZ1BMUVRlNmdNSUlicXZCRUFvTVF2b3pkOEk4M3FMQlZnUExRZm96ZDhJODNxTEJqK1lKUW5Qb2RzSVJNSVBCMHMzTlFYUG9kc0lSTUlQQnFFek1RVkp2ZU1JVE1JUEJRRU1LUXNoNGVNS3lkb1BCMHMzTlFReGZoc0tmUDRQQktJWUtRZ3hmaHNLZlA0UEJLSVlLUWdmQmhNS2NQNFBCMHMzTlFRZkJoTUtjUDRQQmlsb0xRZ1h5ZzhLZFA0UEJxRXpNUVFYeWc4S2RQNFBCRUFvTVFyeTVnc0tkUDRQQlZnUExRYnk1Z3NLZFA0UEJFQW9NUWg5YWVzS3ROSVBCVmdQTFFSOWFlc0t0TklQQmorWUpRZzhGZE1LVFMwekIwczNOUVE4RmRNS1RTMHpCcUV6TVFTNXVkY0pCOVVuQlFFTUtRcU4zZGNLRmdrckIwczNOUVhrWWhNSWIrU3JCS0lZS1Fua1loTUliK1NyQktJWUtRdnFaZ3NLUzdDL0IwczNOUWZxWmdzS1M3Qy9CaWxvTFFybmFnY0pWWmpMQnFFek1RYm5hZ2NKVlpqTEJFQW9NUWphNmdNSmdJamJCVmdQTFFUYTZnTUpnSWpiQkVBb01RdjR6ZDhJekZrZkJWZ1BMUWY0emQ4SXpGa2ZCaitZSlFuZkxhOEtZRGh2QjBzM05RWGZMYThLWURodkJxRXpNUWQzZmJNSUl2UmJCUUVNS1FsTHBiTUpQU2hmQjBzM05RZXc2ZThMcHc3ckFLSVlLUXV3NmU4THB3N3JBS0lZS1FuRHhlTUx0RDgzQTBzM05RWER4ZU1MdEQ4M0FpbG9MUXFyTWQ4TDJOZGJBcUV6TVFhck1kOEwyTmRiQUVBb01RZ1VUZHNJTEErVEFWZ1BMUVFVVGRzSUxBK1RBRUFvTVFrUThic0lPWnhIQlZnUExRVVE4YnNJT1p4SEJqK1lKUWpwOFg4SjdVUFRBMHMzTlFUcDhYOEo3VVBUQXFFek1RZEFSWU1LRUIrbkFRRU1LUWtVYllNSVBJdXJBMHMzTlFTVFZaOEoxSnliQUtJWUtRaVRWWjhKMUp5YkEwczNOUVpyelVNSnpxcnEvS0lZS1FwcnpVTUp6cXJxL0tJWUtRa2VZWnNKWTkxWEFLSVlLUXB6elVNS21GUkhBMHMzTlFVZVlac0pZOTFYQTBzM05RWnp6VU1LbUZSSEFpbG9MUXRiNVpjSmozMjNBcUV6TVFkYjVaY0pqMzIzQUVBb01RdFVLWmNMaTk0akFWZ1BMUWRVS1pjTGk5NGpBRUFvTVFuelFZTUphRU52QVZnUExRWHpRWU1KYUVOdkFZRUUyQUFBQUNwUEpQZ0FBQUFBQUFBQUFBQUFBQUEyVHlUSU5rOGsrQUFBQUFBMlR5YjROazhreUxuamhRWnp6VU1LY1A0UEJRRUVnUndBQTR3Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQS9BQUFBQUFBQUFBQUFBSUE5QUFBQUFBQUFBQUFBQUlBL0FBQ0FQUUFBZ0Q4QUFBQUFBQUNBUHdBQWdEMEFBQUFBQUFDQVBRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBnQUFnRDhBQUFBK0FBQ0FQd0FBQUQ0QUFBQUFBQUFBUGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDRBQUlBL0FBQkFQZ0FBZ0Q4QUFFQStBQUFBQUFBQVFENEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBK0FBQ0FQd0FBZ0Q0QUFJQS9BQUNBUGdBQUFBQUFBSUErQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dQZ0FBZ0Q4QUFLQStBQUNBUHdBQW9ENEFBQUFBQUFDZ1BnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0Q0QUFJQS9BQURBUGdBQWdEOEFBTUErQUFBQUFBQUF3RDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQStBQUNBUHdBQTRENEFBSUEvQUFEZ1BnQUFBQUFBQU9BK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHdBQWdEOEFBQUEvQUFDQVB3QUFBRDhBQUFBQUFBQUFQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvL0R6OEFBSUEvLy84UFB3QUFnRC8vL3c4L0FBQUFBUC8vRHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0EvQUFDQVB3QUFJRDhBQUlBL0FBQWdQd0FBQUFBQUFDQS9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd1B3QUFnRDhBQURBL0FBQ0FQd0FBTUQ4QUFBQUFBQUF3UHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDhBQUlBL0FBQkFQd0FBZ0Q4QUFFQS9BQUFBQUFBQVFEOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLzA4L0FBQ0FQLy8vVHo4QUFJQS8vLzlQUHdBQUFBRC8vMDgvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vOWZQd0FBZ0QvLy8xOC9BQUNBUC8vL1h6OEFBQUFBLy85ZlB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0Q4QUFJQS9BQUJ3UHdBQUFBQUFBSUEvQUFDQVB3QUFnRDhBQUlBL0FBQndQd0FBZ0Q4QUFJQS9BQUFBQUFBQWNEOEFBQUFBQUFDQVB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JCemUwQUFQWVFBQUFCQUFJQUJ3QUFBQU1BQVFBSEFBSUFCQUFGQUFjQUFnQUJBQVFBQndBRkFBWUFCd0FIQUFVQUJBQUdBQWNBQndBSUFBa0FCd0FIQUFZQUNBQUhBQWtBQ2dBTEFBY0FDUUFJQUFvQUJ3QUxBQXdBRFFBSEFBc0FDZ0FNQUFjQURRQU9BQThBQndBTkFBd0FEZ0FIQUE4QUVBQVJBQWNBRHdBT0FCQUFCd0FSQUJJQUV3QUhBQkVBRUFBU0FBY0FFd0FVQUJVQUJ3QVRBQklBRkFBSEFCVUFGZ0FYQUFjQUZRQVVBQllBQndBWEFCZ0FHUUFIQUJjQUZnQVlBQWNBR1FBYUFCc0FCd0FaQUJnQUdnQUhBQnNBSEFBZEFBY0FHd0FhQUJ3QUJ3QWNBQjRBSFFBSEFCd0FId0FlQUFjQUh3QWdBQjRBQndBZkFDRUFJQUFIQUNFQUlnQWdBQWNBSVFBakFDSUFCd0FqQUNRQUlnQUhBQ01BSlFBa0FBY0FKUUFtQUNRQUJ3QWxBQ2NBSmdBSEFDY0FLQUFtQUFjQUp3QXBBQ2dBQndBcEFDb0FLQUFIQUNrQUt3QXFBQWNBS3dBc0FDb0FCd0FyQUMwQUxBQUhBQzBBTGdBc0FBY0FMUUF2QUM0QUJ3QXZBREFBTGdBSEFDOEFNUUF3QUFjQU1RQXlBREFBQndBeEFETUFNZ0FIQURNQU5BQXlBQWNBTXdBMUFEUUFCd0ExQURZQU5BQUhBRFVBTndBMkFBY0FOd0E0QURZQUJ3QTNBRGtBT0FBSEFEa0FPZ0E0QUFjQU9RQTdBRG9BQndBN0FEd0FPZ0FIQURzQVBRQThBQWNBUFFBK0FEd0FCd0E5QUQ4QVBnQUhBRDhBUUFBK0FBY0FQd0JCQUVBQUJ3QkJBRUlBUUFBSEFFRUFRd0JDQUFjQVF3QkVBRUlBQndCREFFVUFSQUFIQUVVQVJnQkVBQWNBUlFCSEFFWUFCd0JIQUVnQVJnQUhBRWNBU1FCSUFBY0FTUUJLQUVnQUJ3QkpBRXNBU2dBSEFFc0FUQUJLQUFjQVN3Qk5BRXdBQndCTkFFNEFUQUFIQUUwQVR3Qk9BQWNBVGdCUUFGRUFCd0JPQUU4QVVBQUhBRkVBVWdCVEFBY0FVUUJRQUZJQUJ3QlRBRlFBVlFBSEFGTUFVZ0JVQUFjQVZRQldBRmNBQndCVkFGUUFWZ0FIQUZjQVdBQlpBQWNBVndCV0FGZ0FCd0JaQUZvQVd3QUhBRmtBV0FCYUFBY0FXd0JjQUYwQUJ3QmJBRm9BWEFBSEFGMEFYZ0JmQUFjQVhRQmNBRjRBQndCZkFHQUFZUUFIQUY4QVhnQmdBQWNBWVFCaUFHTUFCd0JoQUdBQVlnQUhBR01BQXdBQUFBY0FZd0JpQUFNQUJ3QURBR1FBQVFBSEFBTUFaUUJrQUFjQUFRQm1BQVFBQndBQkFHUUFaZ0FIQUFRQVp3QUdBQWNBQkFCbUFHY0FCd0FHQUdnQUNBQUhBQVlBWndCb0FBY0FDQUJwQUFvQUJ3QUlBR2dBYVFBSEFBb0FhZ0FNQUFjQUNnQnBBR29BQndBTUFHc0FEZ0FIQUF3QWFnQnJBQWNBRGdCc0FCQUFCd0FPQUdzQWJBQUhBQkFBYlFBU0FBY0FFQUJzQUcwQUJ3QVNBRzRBRkFBSEFCSUFiUUJ1QUFjQUZBQnZBQllBQndBVUFHNEFid0FIQUJZQWNBQVlBQWNBRmdCdkFIQUFCd0FZQUhFQUdnQUhBQmdBY0FCeEFBY0FHZ0J5QUJ3QUJ3QWFBSEVBY2dBSEFISUFId0FjQUFjQWNnQnpBQjhBQndCekFDRUFId0FIQUhNQWRBQWhBQWNBZEFBakFDRUFCd0IwQUhVQUl3QUhBSFVBSlFBakFBY0FkUUIyQUNVQUJ3QjJBQ2NBSlFBSEFIWUFkd0FuQUFjQWR3QXBBQ2NBQndCM0FIZ0FLUUFIQUhnQUt3QXBBQWNBZUFCNUFDc0FCd0I1QUMwQUt3QUhBSGtBZWdBdEFBY0FlZ0F2QUMwQUJ3QjZBSHNBTHdBSEFIc0FNUUF2QUFjQWV3QjhBREVBQndCOEFETUFNUUFIQUh3QWZRQXpBQWNBZlFBMUFETUFCd0I5QUg0QU5RQUhBSDRBTndBMUFBY0FmZ0IvQURjQUJ3Qi9BRGtBTndBSEFIOEFnQUE1QUFjQWdBQTdBRGtBQndDQUFJRUFPd0FIQUlFQVBRQTdBQWNBZ1FDQ0FEMEFCd0NDQUQ4QVBRQUhBSUlBZ3dBL0FBY0Fnd0JCQUQ4QUJ3Q0RBSVFBUVFBSEFJUUFRd0JCQUFjQWhBQ0ZBRU1BQndDRkFFVUFRd0FIQUlVQWhnQkZBQWNBaGdCSEFFVUFCd0NHQUljQVJ3QUhBSWNBU1FCSEFBY0Fod0NJQUVrQUJ3Q0lBRXNBU1FBSEFJZ0FpUUJMQUFjQWlRQk5BRXNBQndDSkFJb0FUUUFIQUlvQVR3Qk5BQWNBaWdDTEFFOEFCd0JQQUl3QVVBQUhBRThBaXdDTUFBY0FVQUNOQUZJQUJ3QlFBSXdBalFBSEFGSUFqZ0JVQUFjQVVnQ05BSTRBQndCVUFJOEFWZ0FIQUZRQWpnQ1BBQWNBVmdDUUFGZ0FCd0JXQUk4QWtBQUhBRmdBa1FCYUFBY0FXQUNRQUpFQUJ3QmFBSklBWEFBSEFGb0FrUUNTQUFjQVhBQ1RBRjRBQndCY0FKSUFrd0FIQUY0QWxBQmdBQWNBWGdDVEFKUUFCd0JnQUpVQVlnQUhBR0FBbEFDVkFBY0FZZ0JsQUFNQUJ3QmlBSlVBWlFBSEFHUUFsZ0NYQUFjQVpBQmxBSllBQndCa0FKZ0FaZ0FIQUdRQWx3Q1lBQWNBWmdDWkFHY0FCd0JtQUpnQW1RQUhBR2NBbWdCb0FBY0Fad0NaQUpvQUJ3Qm9BSnNBYVFBSEFHZ0FtZ0NiQUFjQWFRQ2NBR29BQndCcEFKc0FuQUFIQUdvQW5RQnJBQWNBYWdDY0FKMEFCd0JyQUo0QWJBQUhBR3NBblFDZUFBY0FiQUNmQUcwQUJ3QnNBSjRBbndBSEFHMEFvQUJ1QUFjQWJRQ2ZBS0FBQndCdUFLRUFid0FIQUc0QW9BQ2hBQWNBYndDaUFIQUFCd0J2QUtFQW9nQUhBSEFBb3dCeEFBY0FjQUNpQUtNQUJ3QnhBS1FBY2dBSEFIRUFvd0NrQUFjQXBBQnpBSElBQndDa0FLVUFjd0FIQUtVQWRBQnpBQWNBcFFDbUFIUUFCd0NtQUhVQWRBQUhBS1lBcHdCMUFBY0Fwd0IyQUhVQUJ3Q25BS2dBZGdBSEFLZ0Fkd0IyQUFjQXFBQ3BBSGNBQndDcEFIZ0Fkd0FIQUtrQXFnQjRBQWNBcWdCNUFIZ0FCd0NxQUtzQWVRQUhBS3NBZWdCNUFBY0Fxd0NzQUhvQUJ3Q3NBSHNBZWdBSEFLd0FyUUI3QUFjQXJRQjhBSHNBQndDdEFLNEFmQUFIQUs0QWZRQjhBQWNBcmdDdkFIMEFCd0N2QUg0QWZRQUhBSzhBc0FCK0FBY0FzQUIvQUg0QUJ3Q3dBTEVBZndBSEFMSUFmd0N4QUFjQXNnQ0FBSDhBQndDekFJQUFzZ0FIQUxNQWdRQ0FBQWNBdEFDQkFMTUFCd0MwQUlJQWdRQUhBTFVBZ2dDMEFBY0F0UUNEQUlJQUJ3QzJBSU1BdFFBSEFMWUFoQUNEQUFjQXR3Q0VBTFlBQndDM0FJVUFoQUFIQUxnQWhRQzNBQWNBdUFDR0FJVUFCd0M1QUlZQXVBQUhBTGtBaHdDR0FBY0F1Z0NIQUxrQUJ3QzZBSWdBaHdBSEFMc0FpQUM2QUFjQXV3Q0pBSWdBQndDOEFJa0F1d0FIQUx3QWlnQ0pBQWNBdlFDS0FMd0FCd0M5QUlzQWlnQUhBSXdBdlFDK0FBY0FqQUNMQUwwQUJ3Q05BTDRBdndBSEFJMEFqQUMrQUFjQWpnQy9BTUFBQndDT0FJMEF2d0FIQUk4QXdBREJBQWNBandDT0FNQUFCd0NRQU1FQXdnQUhBSkFBandEQkFBY0FrUURDQU1NQUJ3Q1JBSkFBd2dBSEFKSUF3d0RFQUFjQWtnQ1JBTU1BQndDVEFNUUF4UUFIQUpNQWtnREVBQWNBbEFERkFNWUFCd0NVQUpNQXhRQUhBSlVBeGdESEFBY0FsUUNVQU1ZQUJ3QmxBTWNBbGdBSEFHVUFsUURIQUFjQXhBRElBTVVBQndERUFNa0F5QUFIQU1nQXhnREZBQWNBeUFES0FNWUFCd0RLQU1jQXhnQUhBTW9BeXdESEFBY0F6QUNZQUpjQUJ3RE1BTTBBbUFBSEFNMEFtUUNZQUFjQXpRRE9BSmtBQndET0FKb0FtUUFIQU00QXp3Q2FBQWNBMEFDZEFKd0FCd0RRQU5FQW5RQUhBTkVBbmdDZEFBY0EwUURTQUo0QUJ3RFNBSjhBbmdBSEFOSUEwd0NmQUFjQTFBQ2hBTlVBQndEVUFLSUFvUUFIQU5ZQW9nRFVBQWNBMWdDakFLSUFCd0RYQUtNQTFnQUhBTmNBcEFDakFBY0EyQUNtQU5rQUJ3RFlBS2NBcGdBSEFOb0Fwd0RZQUFjQTJnQ29BS2NBQndEYkFLZ0EyZ0FIQU5zQXFRQ29BQWNBM0FDckFOMEFCd0RjQUt3QXF3QUhBSzBBM0FEZUFBY0FyUUNzQU53QUJ3Q3VBTjRBM3dBSEFLNEFyUURlQUFjQXNRRGdBT0VBQndDeEFMQUE0QUFIQUxJQTRRRGlBQWNBc2dDeEFPRUFCd0N6QU9JQTR3QUhBTE1Bc2dEaUFBY0F0Z0RrQU9VQUJ3QzJBTFVBNUFBSEFMY0E1UURtQUFjQXR3QzJBT1VBQndDNEFPWUE1d0FIQUxnQXR3RG1BQWNBdWdEb0FMc0FCd0M2QU9rQTZBQUhBTHNBNmdDOEFBY0F1d0RvQU9vQUJ3QzhBT3NBdlFBSEFMd0E2Z0RyQUFjQXZ3RHNBTUFBQndDL0FPMEE3QUFIQU1BQTdnREJBQWNBd0FEc0FPNEFCd0RCQU84QXdnQUhBTUVBN2dEdkFBY0F5UUR3QU1nQUJ3REpBUEVBOEFBSEFQQUF5Z0RJQUFjQThBRHlBTW9BQndEeUFNc0F5Z0FIQVBJQTh3RExBQWNBOUFETkFNd0FCd0QwQVBVQXpRQUhBUFVBemdETkFBY0E5UUQyQU00QUJ3RDJBTThBemdBSEFQWUE5d0RQQUFjQStBRFJBTkFBQndENEFQa0EwUUFIQVBrQTBnRFJBQWNBK1FENkFOSUFCd0Q2QU5NQTBnQUhBUG9BK3dEVEFBY0EvQURWQVAwQUJ3RDhBTlFBMVFBSEFQNEExQUQ4QUFjQS9nRFdBTlFBQndEL0FOWUEvZ0FIQVA4QTF3RFdBQWNBQUFIWkFBRUJCd0FBQWRnQTJRQUhBQUlCMkFBQUFRY0FBZ0hhQU5nQUJ3QURBZG9BQWdFSEFBTUIyd0RhQUFjQUJBSGRBQVVCQndBRUFkd0EzUUFIQU40QUJBRUdBUWNBM2dEY0FBUUJCd0RmQUFZQkJ3RUhBTjhBM2dBR0FRY0E0UUFJQVFrQkJ3RGhBT0FBQ0FFSEFPSUFDUUVLQVFjQTRnRGhBQWtCQndEakFBb0JDd0VIQU9NQTRnQUtBUWNBNVFBTUFRMEJCd0RsQU9RQURBRUhBT1lBRFFFT0FRY0E1Z0RsQUEwQkJ3RG5BQTRCRHdFSEFPY0E1Z0FPQVFjQTZRQVFBZWdBQndEcEFCRUJFQUVIQU9nQUVnSHFBQWNBNkFBUUFSSUJCd0RxQUJNQjZ3QUhBT29BRWdFVEFRY0E3UUFVQWV3QUJ3RHRBQlVCRkFFSEFPd0FGZ0h1QUFjQTdBQVVBUllCQndEdUFCY0I3d0FIQU80QUZnRVhBUWNBR0FFWkFmRUFCd0FZQVJvQkdRRUhBUEVBR3dId0FBY0E4UUFaQVJzQkJ3QWJBZklBOEFBSEFCc0JIQUh5QUFjQUhBSHpBUElBQndBY0FSMEI4d0FIQUIwQkhnSHpBQWNBSFFFZkFSNEJCd0FmQWZRQUhnRUhBQjhCSUFIMEFBY0FJQUgxQVBRQUJ3QWdBU0VCOVFBSEFDRUI5Z0QxQUFjQUlRRWlBZllBQndBaUFmY0E5Z0FIQUNJQkl3SDNBQWNBSXdFa0FmY0FCd0FqQVNVQkpBRUhBQ1VCK0FBa0FRY0FKUUVtQWZnQUJ3QW1BZmtBK0FBSEFDWUJKd0g1QUFjQUp3SDZBUGtBQndBbkFTZ0IrZ0FIQUNnQit3RDZBQWNBS0FFcEFmc0FCd0FwQVNvQit3QUhBQ2tCS3dFcUFRY0FMQUVxQVNzQkJ3QXNBZjBBS2dFSEFDMEIvUUFzQVFjQUxRSDhBUDBBQndBdUFmd0FMUUVIQUM0Qi9nRDhBQWNBTHdIK0FDNEJCd0F2QWY4QS9nQUhBREFCL3dBdkFRY0FNQUV4QWY4QUJ3QXlBVEVCTUFFSEFESUJBUUV4QVFjQU13RUJBVElCQndBekFRQUJBUUVIQURRQkFBRXpBUWNBTkFFQ0FRQUJCd0ExQVFJQk5BRUhBRFVCQXdFQ0FRY0FOZ0VEQVRVQkJ3QTJBVGNCQXdFSEFEZ0JOd0UyQVFjQU9BRUZBVGNCQndBNUFRVUJPQUVIQURrQkJBRUZBUWNBQmdFNUFUb0JCd0FHQVFRQk9RRUhBQWNCT2dFN0FRY0FCd0VHQVRvQkJ3QThBVHNCUFFFSEFEd0JCd0U3QVFjQUNBRTlBVDRCQndBSUFUd0JQUUVIQUFrQlBnRS9BUWNBQ1FFSUFUNEJCd0FLQVQ4QlFBRUhBQW9CQ1FFL0FRY0FDd0ZBQVVFQkJ3QUxBUW9CUUFFSEFFSUJRUUZEQVFjQVFnRUxBVUVCQndBTUFVTUJSQUVIQUF3QlFnRkRBUWNBRFFGRUFVVUJCd0FOQVF3QlJBRUhBQTRCUlFGR0FRY0FEZ0VOQVVVQkJ3QVBBVVlCUndFSEFBOEJEZ0ZHQVFjQUR3RklBVWtCQndBUEFVY0JTQUVIQUVrQlNnRVJBUWNBU1FGSUFVb0JCd0FSQVVzQkVBRUhBQkVCU2dGTEFRY0FFQUZNQVJJQkJ3QVFBVXNCVEFFSEFCSUJUUUVUQVFjQUVnRk1BVTBCQndBVEFVNEJUd0VIQUJNQlRRRk9BUWNBVHdGUUFSVUJCd0JQQVU0QlVBRUhBQlVCVVFFVUFRY0FGUUZRQVZFQkJ3QVVBVklCRmdFSEFCUUJVUUZTQVFjQUZnRlRBUmNCQndBV0FWSUJVd0VIQUJjQkdnRVlBUWNBRndGVEFSb0JCd0FaQVZRQlZRRUhBQmtCR2dGVUFRY0FHd0ZWQVZZQkJ3QWJBUmtCVlFFSEFGY0JHd0ZXQVFjQVZ3RWNBUnNCQndCWUFSd0JWd0VIQUZnQkhRRWNBUWNBV1FFZEFWZ0JCd0JaQVI4QkhRRUhBRm9CSHdGWkFRY0FXZ0VnQVI4QkJ3QmJBU0FCV2dFSEFGc0JJUUVnQVFjQVhBRWhBVnNCQndCY0FTSUJJUUVIQUYwQklnRmNBUWNBWFFFakFTSUJCd0JlQVNNQlhRRUhBRjRCSlFFakFRY0FYd0VsQVY0QkJ3QmZBU1lCSlFFSEFHQUJKZ0ZmQVFjQVlBRW5BU1lCQndCaEFTY0JZQUVIQUdFQktBRW5BUWNBWWdFb0FXRUJCd0JpQVNrQktBRUhBR01CS1FGaUFRY0FZd0VyQVNrQkJ3QmpBU3dCS3dFSEFHTUJaQUVzQVFjQVpBRXRBU3dCQndCa0FXVUJMUUVIQUdVQkxnRXRBUWNBWlFGbUFTNEJCd0JtQVM4QkxnRUhBR1lCWndFdkFRY0Fad0V3QVM4QkJ3Qm5BV2dCTUFFSEFHZ0JNZ0V3QVFjQWFBRnBBVElCQndCcEFUTUJNZ0VIQUdrQmFnRXpBUWNBYWdFMEFUTUJCd0JxQVdzQk5BRUhBR3NCTlFFMEFRY0Fhd0ZzQVRVQkJ3QnNBVFlCTlFFSEFHd0JiUUUyQVFjQWJRRTRBVFlCQndCdEFXNEJPQUVIQUc0Qk9RRTRBUWNBYmdGdkFUa0JCd0E1QVhBQk9nRUhBRGtCYndGd0FRY0FPZ0Z4QVRzQkJ3QTZBWEFCY1FFSEFEc0JjZ0U5QVFjQU93RnhBWElCQndBOUFYTUJQZ0VIQUQwQmNnRnpBUWNBUGdGMEFUOEJCd0ErQVhNQmRBRUhBRDhCZFFGQUFRY0FQd0YwQVhVQkJ3QkFBWFlCUVFFSEFFQUJkUUYyQVFjQVFRRjNBVU1CQndCQkFYWUJkd0VIQUVNQmVBRkVBUWNBUXdGM0FYZ0JCd0JFQVhrQlJRRUhBRVFCZUFGNUFRY0FSUUY2QVVZQkJ3QkZBWGtCZWdFSEFFWUJld0ZIQVFjQVJnRjZBWHNCQndCSUFYc0JmQUVIQUVnQlJ3RjdBUWNBU2dGOEFYMEJCd0JLQVVnQmZBRUhBRXNCZlFGK0FRY0FTd0ZLQVgwQkJ3Qk1BWDRCZndFSEFFd0JTd0YrQVFjQVRRRi9BWUFCQndCTkFVd0Jmd0VIQUU0QmdBR0JBUWNBVGdGTkFZQUJCd0JRQVlFQmdnRUhBRkFCVGdHQkFRY0FVUUdDQVlNQkJ3QlJBVkFCZ2dFSEFGSUJnd0dFQVFjQVVnRlJBWU1CQndCVEFZUUJoUUVIQUZNQlVnR0VBUWNBR2dHRkFWUUJCd0FhQVZNQmhRRUhBRlVCaGdHSEFRY0FWUUZVQVlZQkJ3QldBWWNCaUFFSEFGWUJWUUdIQVFjQWlRRldBWWdCQndDSkFWY0JWZ0VIQUlvQlZ3R0pBUWNBaWdGWUFWY0JCd0NMQVZnQmlnRUhBSXNCV1FGWUFRY0FqQUZaQVlzQkJ3Q01BVm9CV1FFSEFJMEJXZ0dNQVFjQWpRRmJBVm9CQndDT0FWc0JqUUVIQUk0QlhBRmJBUWNBandGY0FZNEJCd0NQQVYwQlhBRUhBSkFCWFFHUEFRY0FrQUZlQVYwQkJ3Q1JBVjRCa0FFSEFKRUJYd0ZlQVFjQWtnRmZBWkVCQndDU0FXQUJYd0VIQUpNQllBR1NBUWNBa3dGaEFXQUJCd0NVQVdFQmt3RUhBSlFCWWdGaEFRY0FsUUZpQVpRQkJ3Q1ZBV01CWWdFSEFKVUJaQUZqQVFjQWxRR1dBV1FCQndDV0FXVUJaQUVIQUpZQmx3RmxBUWNBbHdGbUFXVUJCd0NYQVpnQlpnRUhBSmdCWndGbUFRY0FtQUdaQVdjQkJ3Q1pBV2dCWndFSEFKa0JtZ0ZvQVFjQW1nRnBBV2dCQndDYUFac0JhUUVIQUpzQmFnRnBBUWNBbXdHY0FXb0JCd0NjQVdzQmFnRUhBSndCblFGckFRY0FuUUZzQVdzQkJ3Q2RBWjRCYkFFSEFKNEJiUUZzQVFjQW5nR2ZBVzBCQndDZkFXNEJiUUVIQUo4Qm9BRnVBUWNBb0FGdkFXNEJCd0NnQWFFQmJ3RUhBRzhCb2dGd0FRY0Fid0doQWFJQkJ3QndBYU1CY1FFSEFIQUJvZ0dqQVFjQWNRR2tBWElCQndCeEFhTUJwQUVIQUhJQnBRRnpBUWNBY2dHa0FhVUJCd0J6QWFZQmRBRUhBSE1CcFFHbUFRY0FkQUduQVhVQkJ3QjBBYVlCcHdFSEFIVUJxQUYyQVFjQWRRR25BYWdCQndCMkFha0Jkd0VIQUhZQnFBR3BBUWNBZHdHcUFYZ0JCd0IzQWFrQnFnRUhBSGdCcXdGNUFRY0FlQUdxQWFzQkJ3QjVBYXdCZWdFSEFIa0Jxd0dzQVFjQWVnR3RBWHNCQndCNkFhd0JyUUVIQUh3QnJRR3VBUWNBZkFGN0FhMEJCd0I5QWE0QnJ3RUhBSDBCZkFHdUFRY0FmZ0d2QWJBQkJ3QitBWDBCcndFSEFIOEJzQUd4QVFjQWZ3RitBYkFCQndDQUFiRUJzZ0VIQUlBQmZ3R3hBUWNBZ1FHeUFiTUJCd0NCQVlBQnNnRUhBSUlCc3dHMEFRY0FnZ0dCQWJNQkJ3Q0RBYlFCdFFFSEFJTUJnZ0cwQVFjQWhBRzFBYllCQndDRUFZTUJ0UUVIQUlVQnRnRzNBUWNBaFFHRUFiWUJCd0JVQWJjQmhnRUhBRlFCaFFHM0FRY0Fod0c0QWJrQkJ3Q0hBWVlCdUFFSEFJZ0J1UUc2QVFjQWlBR0hBYmtCQndDN0FZZ0J1Z0VIQUxzQmlRR0lBUWNBdkFHSkFic0JCd0M4QVlvQmlRRUhBTDBCaWdHOEFRY0F2UUdMQVlvQkJ3QytBWXNCdlFFSEFMNEJqQUdMQVFjQXZ3R01BYjRCQndDL0FZMEJqQUVIQU1BQmpRRy9BUWNBd0FHT0FZMEJCd0RCQVk0QndBRUhBTUVCandHT0FRY0F3Z0dQQWNFQkJ3RENBWkFCandFSEFNTUJrQUhDQVFjQXd3R1JBWkFCQndERUFaRUJ3d0VIQU1RQmtnR1JBUWNBeFFHU0FjUUJCd0RGQVpNQmtnRUhBTVlCa3dIRkFRY0F4Z0dVQVpNQkJ3REhBWlFCeGdFSEFNY0JsUUdVQVFjQXh3R1dBWlVCQndESEFjZ0JsZ0VIQU1nQmx3R1dBUWNBeUFISkFaY0JCd0RKQVpnQmx3RUhBTWtCeWdHWUFRY0F5Z0daQVpnQkJ3REtBY3NCbVFFSEFNc0JtZ0daQVFjQXl3SE1BWm9CQndETUFac0JtZ0VIQU13QnpRR2JBUWNBelFHY0Fac0JCd0ROQWM0Qm5BRUhBTTRCblFHY0FRY0F6Z0hQQVowQkJ3RFBBWjRCblFFSEFNOEIwQUdlQVFjQTBBR2ZBWjRCQndEUUFkRUJud0VIQU5FQm9BR2ZBUWNBMFFIU0FhQUJCd0RTQWFFQm9BRUhBTklCMHdHaEFRY0FvUUhVQWFJQkJ3Q2hBZE1CMUFFSEFLSUIxUUdqQVFjQW9nSFVBZFVCQndDakFkWUJwQUVIQUtNQjFRSFdBUWNBcEFIWEFhVUJCd0NrQWRZQjF3RUhBS1VCMkFHbUFRY0FwUUhYQWRnQkJ3Q21BZGtCcHdFSEFLWUIyQUhaQVFjQXB3SGFBYWdCQndDbkFka0IyZ0VIQUtnQjJ3R3BBUWNBcUFIYUFkc0JCd0NwQWR3QnFnRUhBS2tCMndIY0FRY0FxZ0hkQWFzQkJ3Q3FBZHdCM1FFSEFLc0IzZ0dzQVFjQXF3SGRBZDRCQndDc0FkOEJyUUVIQUt3QjNnSGZBUWNBcmdIZkFlQUJCd0N1QWEwQjN3RUhBSzhCNEFIaEFRY0Fyd0d1QWVBQkJ3Q3dBZUVCNGdFSEFMQUJyd0hoQVFjQXNRSGlBZU1CQndDeEFiQUI0Z0VIQUxJQjR3SGtBUWNBc2dHeEFlTUJCd0N6QWVRQjVRRUhBTE1Cc2dIa0FRY0F0QUhsQWVZQkJ3QzBBYk1CNVFFSEFMVUI1Z0huQVFjQXRRRzBBZVlCQndDMkFlY0I2QUVIQUxZQnRRSG5BUWNBdHdIb0Fla0JCd0MzQWJZQjZBRUhBSVlCNlFHNEFRY0FoZ0czQWVrQkJ3QzRBZW9CdVFFSEFMZ0I2d0hxQVFjQXVRSHNBYm9CQndDNUFlb0I3QUVIQU93QnV3RzZBUWNBN0FIdEFic0JCd0R0QWJ3QnV3RUhBTzBCN2dHOEFRY0E3Z0c5QWJ3QkJ3RHVBZThCdlFFSEFPOEJ2Z0c5QVFjQTd3SHdBYjRCQndEd0FiOEJ2Z0VIQVBBQjhRRy9BUWNBOFFIQUFiOEJCd0R4QWZJQndBRUhBUElCd1FIQUFRY0E4Z0h6QWNFQkJ3RHpBY0lCd1FFSEFQTUI5QUhDQVFjQTlBSERBY0lCQndEMEFmVUJ3d0VIQVBVQnhBSERBUWNBOVFIMkFjUUJCd0QyQWNVQnhBRUhBUFlCOXdIRkFRY0E5d0hHQWNVQkJ3RDNBZmdCeGdFSEFQZ0J4d0hHQVFjQStBSDVBY2NCQndENUFjZ0J4d0VIQVBrQitnSElBUWNBK2dISkFjZ0JCd0Q2QWZzQnlRRUhBUHNCeWdISkFRY0Erd0g4QWNvQkJ3RDhBY3NCeWdFSEFQd0IvUUhMQVFjQS9RSE1BY3NCQndEOUFmNEJ6QUVIQVA0QnpRSE1BUWNBL2dIL0FjMEJCd0QvQWM0QnpRRUhBUDhCQUFMT0FRY0FBQUxQQWM0QkJ3QUFBZ0VDendFSEFBRUMwQUhQQVFjQUFRSUNBdEFCQndBQ0F0RUIwQUVIQUFJQ0F3TFJBUWNBQXdMU0FkRUJCd0FEQWdRQzBnRUhBQVFDMHdIU0FRY0FCQUlGQXRNQkJ3RFRBUVlDMUFFSEFOTUJCUUlHQWdjQTFBRUhBdFVCQndEVUFRWUNCd0lIQU5VQkNBTFdBUWNBMVFFSEFnZ0NCd0RXQVFrQzF3RUhBTllCQ0FJSkFnY0Exd0VLQXRnQkJ3RFhBUWtDQ2dJSEFOZ0JDd0xaQVFjQTJBRUtBZ3NDQndEWkFRd0MyZ0VIQU5rQkN3SU1BZ2NBMmdFTkF0c0JCd0RhQVF3Q0RRSUhBTnNCRGdMY0FRY0Eyd0VOQWc0Q0J3RGNBUThDM1FFSEFOd0JEZ0lQQWdjQTNRRVFBdDRCQndEZEFROENFQUlIQU40QkVRTGZBUWNBM2dFUUFoRUNCd0RmQVJJQzRBRUhBTjhCRVFJU0FnY0E0QUVUQXVFQkJ3RGdBUklDRXdJSEFPRUJGQUxpQVFjQTRRRVRBaFFDQndEaUFSVUM0d0VIQU9JQkZBSVZBZ2NBNHdFV0F1UUJCd0RqQVJVQ0ZnSUhBT1FCRndMbEFRY0E1QUVXQWhjQ0J3RGxBUmdDNWdFSEFPVUJGd0lZQWdjQTVnRVpBdWNCQndEbUFSZ0NHUUlIQU9jQkdnTG9BUWNBNXdFWkFob0NCd0RvQVJzQzZRRUhBT2dCR2dJYkFnY0E2UUhyQWJnQkJ3RHBBUnNDNndFSEFCd0N4QUFkQWdjQUhBTEpBTVFBQndERUFCNENIUUlIQU1RQXd3QWVBZ2NBSHdMSEFDQUNCd0FmQXBZQXh3QUhBTWNBSVFJZ0FnY0F4d0RMQUNFQ0J3QWlBcFlBSHdJSEFDSUNsd0NXQUFjQUl3S1hBQ0lDQndBakFzd0Fsd0FIQUNRQ21nQWxBZ2NBSkFLYkFKb0FCd0NhQUNZQ0pRSUhBSm9BendBbUFnY0FKd0tiQUNRQ0J3QW5BcHdBbXdBSEFDZ0NuQUFuQWdjQUtBTFFBSndBQndBcEFwOEFLZ0lIQUNrQ29BQ2ZBQWNBbndBckFpb0NCd0NmQU5NQUt3SUhBQ3dDb0FBcEFnY0FMQUtoQUtBQUJ3RFZBQ3dDTFFJSEFOVUFvUUFzQWdjQUxnTFhBQzhDQndBdUFxUUExd0FIQURBQ3BBQXVBZ2NBTUFLbEFLUUFCd0F4QXFVQU1BSUhBREVDcGdDbEFBY0EyUUF4QWpJQ0J3RFpBS1lBTVFJSEFETUMyd0EwQWdjQU13S3BBTnNBQndBMUFxa0FNd0lIQURVQ3FnQ3BBQWNBTmdLcUFEVUNCd0EyQXFzQXFnQUhBTjBBTmdJM0FnY0EzUUNyQURZQ0J3QTRBdDhBT1FJSEFEZ0NyZ0RmQUFjQXJ3QTRBam9DQndDdkFLNEFPQUlIQUxBQU9nSTdBZ2NBc0FDdkFEb0NCd0RnQURzQ1BBSUhBT0FBc0FBN0FnY0FQUUxqQUQ0Q0J3QTlBck1BNHdBSEFMUUFQUUkvQWdjQXRBQ3pBRDBDQndDMUFEOENRQUlIQUxVQXRBQS9BZ2NBNUFCQUFrRUNCd0RrQUxVQVFBSUhBRUlDNXdCREFnY0FRZ0s0QU9jQUJ3QzVBRUlDUkFJSEFMa0F1QUJDQWdjQVJRSzZBRVlDQndCRkF1a0F1Z0FIQUxvQVJBSkdBZ2NBdWdDNUFFUUNCd0M5QUVjQ1NBSUhBTDBBNndCSEFnY0F2Z0JJQWtrQ0J3QytBTDBBU0FJSEFFb0N2d0JMQWdjQVNnTHRBTDhBQndDL0FFa0NTd0lIQUw4QXZnQkpBZ2NBd2dCTUFrMENCd0RDQU84QVRBSUhBTU1BVFFJZUFnY0F3d0RDQUUwQ0J3Qk9Bc2tBSEFJSEFFNEM4UURKQUFjQVR3THhBRTRDQndCUEFoZ0I4UUFIQVBNQVVBSlJBZ2NBOHdBZUFWQUNCd0RMQUZFQ0lRSUhBTXNBOHdCUkFnY0FVZ0xNQUNNQ0J3QlNBdlFBekFBSEFCNEJVZ0pRQWdjQUhnSDBBRklDQndEM0FGTUNWQUlIQVBjQUpBRlRBZ2NBendCVUFpWUNCd0RQQVBjQVZBSUhBRlVDMEFBb0FnY0FWUUw0QU5BQUJ3QWtBVlVDVXdJSEFDUUIrQUJWQWdjQSt3QldBbGNDQndEN0FDb0JWZ0lIQU5NQVZ3SXJBZ2NBMHdEN0FGY0NCd0Q5QUMwQ1dBSUhBUDBBMVFBdEFnY0FLZ0ZZQWxZQ0J3QXFBZjBBV0FJSEFDOEMvd0JaQWdjQUx3TFhBUDhBQndEL0FGb0NXUUlIQVA4QU1RRmFBZ2NBQVFFeUFsc0NCd0FCQWRrQU1nSUhBREVCV3dKYUFnY0FNUUVCQVZzQ0J3QTBBZ01CWEFJSEFEUUMyd0FEQVFjQUF3RmRBbHdDQndBREFUY0JYUUlIQUFVQk53SmVBZ2NBQlFIZEFEY0NCd0EzQVY0Q1hRSUhBRGNCQlFGZUFnY0FYd0k4QVdBQ0J3QmZBZ2NCUEFFSEFEa0NCd0ZmQWdjQU9RTGZBQWNCQndCZ0FnZ0JZUUlIQUdBQ1BBRUlBUWNBQ0FFOEFtRUNCd0FJQWVBQVBBSUhBR0lDUWdGakFnY0FZZ0lMQVVJQkJ3QStBZ3NCWWdJSEFENEM0d0FMQVFjQVl3SU1BV1FDQndCakFrSUJEQUVIQUF3QlFRSmtBZ2NBREFIa0FFRUNCd0JsQWtrQlpnSUhBR1VDRHdGSkFRY0FRd0lQQVdVQ0J3QkRBdWNBRHdFSEFHY0M2UUJGQWdjQVp3SVJBZWtBQndCbUFoRUJad0lIQUdZQ1NRRVJBUWNBYUFKUEFXa0NCd0JvQWhNQlR3RUhBT3NBYUFKSEFnY0E2d0FUQVdnQ0J3QnFBdTBBU2dJSEFHb0NGUUh0QUFjQWFRSVZBV29DQndCcEFrOEJGUUVIQUdzQ0dBRlBBZ2NBYXdJWEFSZ0JCd0R2QUdzQ1RBSUhBTzhBRndGckFnY0FiQUp0QW00Q0J3QnNBbThDYlFJSEFIQUNjUUp5QWdjQWNBSnpBbkVDQndCMEFuVUNkZ0lIQUhRQ2R3SjFBZ2NBZUFKNUFub0NCd0I0QW5zQ2VRSUhBSHdDZHdKMEFnY0FmQUo5QW5jQ0J3QjdBbjRDZVFJSEFIc0Nmd0orQWdjQWdBS0JBb0lDQndDQUFvTUNnUUlIQUlRQ2hRS0dBZ2NBaEFLSEFvVUNCd0NJQW9NQ2dBSUhBSWdDaVFLREFnY0Fod0tLQW9VQ0J3Q0hBb3NDaWdJSEFJd0NqUUtPQWdjQWpBS1BBbzBDQndDUUFwRUNrZ0lIQUpBQ2t3S1JBZ2NBamdLVUFwVUNCd0NPQW8wQ2xBSUhBSllDa2dLWEFnY0FsZ0tRQXBJQ0J3Q1lBcGtDbWdJSEFKZ0Ntd0taQWdjQW5BS2RBcDRDQndDY0FwOENuUUlIQUpvQ29BS2hBZ2NBbWdLWkFxQUNCd0NpQXA0Q293SUhBS0lDbkFLZUFnY0FwQUtsQXFZQ0J3Q2tBcWNDcFFJSEFLZ0NxUUtxQWdjQXFBS3JBcWtDQndDbUFxd0NyUUlIQUtZQ3BRS3NBZ2NBcmdLcUFxOENCd0N1QXFnQ3FnSUhBTEFDc1FLeUFnY0FzQUt6QXJFQ0J3QzBBclVDdGdJSEFMUUN0d0sxQWdjQXNnSzRBcmtDQndDeUFyRUN1QUlIQUxvQ3RnSzdBZ2NBdWdLMEFyWUNCd0M4QXIwQ3ZnSUhBTHdDdndLOUFnY0F3QUxCQXNJQ0J3REFBc01Dd1FJSEFMNEN4QUxGQWdjQXZnSzlBc1FDQndER0FzSUN4d0lIQU1ZQ3dBTENBZ2NBeUFMSkFzb0NCd0RJQXNzQ3lRSUhBTXdDelFMT0FnY0F6QUxQQXMwQ0J3RFFBc3NDeUFJSEFOQUMwUUxMQWdjQXp3TFNBczBDQndEUEF0TUMwZ0lIQU5RQzFRTFdBZ2NBMUFMWEF0VUNCd0RZQXRrQzJnSUhBTmdDMndMWkFnY0EzQUxYQXRRQ0J3RGNBdDBDMXdJSEFOc0MzZ0xaQWdjQTJ3TGZBdDRDQndCdUF1QUM0UUlIQUc0Q2JRTGdBZ2NBNGdKeUF1TUNCd0RpQW5BQ2NnSUhBT1FDNGdMbEFnY0E1QUp3QXVJQ0J3RG1BbkFDNUFJSEFPWUNjd0p3QWdjQTV3SnpBdVlDQndEbkFuZ0Njd0lIQU9nQ2VBTG5BZ2NBNkFKN0FuZ0NCd0RwQW5zQzZBSUhBT2tDZndKN0FnY0E2Z0ovQXVrQ0J3RHFBb1FDZndJSEFPc0NoQUxxQWdjQTZ3S0hBb1FDQndEc0FvY0M2d0lIQU93Q2l3S0hBZ2NBN1FLTEF1d0NCd0R0QW84Q2l3SUhBSTBDN1FMdUFnY0FqUUtQQXUwQ0J3Q1VBdTRDN3dJSEFKUUNqUUx1QWdjQW13THZBdkFDQndDYkFwUUM3d0lIQUprQzhBTHhBZ2NBbVFLYkF2QUNCd0NnQXZFQzhnSUhBS0FDbVFMeEFnY0Fwd0x5QXZNQ0J3Q25BcUFDOGdJSEFLVUM4d0wwQWdjQXBRS25Bdk1DQndDc0F2UUM5UUlIQUt3Q3BRTDBBZ2NBc3dMMUF2WUNCd0N6QXF3QzlRSUhBTEVDOWdMM0FnY0FzUUt6QXZZQ0J3QzRBdmNDK0FJSEFMZ0NzUUwzQWdjQXZ3TDRBdmtDQndDL0FyZ0MrQUlIQUwwQytRTDZBZ2NBdlFLL0F2a0NCd0RFQXZvQyt3SUhBTVFDdlFMNkFnY0F6QUw3QXZ3Q0J3RE1Bc1FDK3dJSEFQMEN6QUw4QWdjQS9RTFBBc3dDQndEK0FzOEMvUUlIQVA0QzB3TFBBZ2NBL3dMVEF2NENCd0QvQXRnQzB3SUhBQUFEMkFML0FnY0FBQVBiQXRnQ0J3QUJBOXNDQUFNSEFBRUQzd0xiQWdjQTVRTGZBZ0VEQndEbEF1SUMzd0lIQUFJRDVBTGxBZ2NBQWdNREErUUNCd0FEQStZQzVBSUhBQU1EQkFQbUFnY0FCUVBtQWdRREJ3QUZBK2NDNWdJSEFBWUQ1d0lGQXdjQUJnUG9BdWNDQndBSEErZ0NCZ01IQUFjRDZRTG9BZ2NBQ0FQcEFnY0RCd0FJQStvQzZRSUhBQWtENmdJSUF3Y0FDUVByQXVvQ0J3QUtBK3NDQ1FNSEFBb0Q3QUxyQWdjQUN3UHNBZ29EQndBTEErMEM3QUlIQU80Q0N3TU1Bd2NBN2dMdEFnc0RCd0R2QWd3RERRTUhBTzhDN2dJTUF3Y0E4QUlOQXc0REJ3RHdBdThDRFFNSEFQRUNEZ01QQXdjQThRTHdBZzREQndEeUFnOERFQU1IQVBJQzhRSVBBd2NBOHdJUUF4RURCd0R6QXZJQ0VBTUhBUFFDRVFNU0F3Y0E5QUx6QWhFREJ3RDBBaE1EOVFJSEFQUUNFZ01UQXdjQTlRSVVBL1lDQndEMUFoTURGQU1IQVBZQ0ZRUDNBZ2NBOWdJVUF4VURCd0QzQWhZRCtBSUhBUGNDRlFNV0F3Y0ErQUlYQS9rQ0J3RDRBaFlERndNSEFQa0NHQVA2QWdjQStRSVhBeGdEQndENkFoa0Qrd0lIQVBvQ0dBTVpBd2NBK3dJYUEvd0NCd0Q3QWhrREdnTUhBQm9EL1FMOEFnY0FHZ01iQS8wQ0J3QWJBLzRDL1FJSEFCc0RIQVArQWdjQUhBUC9BdjRDQndBY0F4MEQvd0lIQUIwREFBUC9BZ2NBSFFNZUF3QURCd0FlQXdFREFBTUhBQjRESHdNQkF3Y0FId1BsQWdFREJ3QWZBd0lENVFJSEFDQURBZ01oQXdjQUlBTURBd0lEQndBaUF3TURJQU1IQUNJREJBTURBd2NBSXdNRUF5SURCd0FqQXdVREJBTUhBQ1FEQlFNakF3Y0FKQU1HQXdVREJ3QWxBd1lESkFNSEFDVURCd01HQXdjQUpnTUhBeVVEQndBbUF3Z0RCd01IQUNjRENBTW1Bd2NBSndNSkF3Z0RCd0FvQXdrREp3TUhBQ2dEQ2dNSkF3Y0FLUU1LQXlnREJ3QXBBd3NEQ2dNSEFBd0RLUU1xQXdjQURBTUxBeWtEQndBTkF5b0RLd01IQUEwRERBTXFBd2NBRGdNckF5d0RCd0FPQXcwREt3TUhBQThETEFNdEF3Y0FEd01PQXl3REJ3QVFBeTBETGdNSEFCQUREd010QXdjQUVRTXVBeThEQndBUkF4QURMZ01IQUJJREx3TXdBd2NBRWdNUkF5OERCd0FUQXpBRE1RTUhBQk1ERWdNd0F3Y0FGQU14QXpJREJ3QVVBeE1ETVFNSEFCVURNZ016QXdjQUZRTVVBeklEQndBV0F6TUROQU1IQUJZREZRTXpBd2NBRndNMEF6VURCd0FYQXhZRE5BTUhBQmdETlFNMkF3Y0FHQU1YQXpVREJ3QVpBellETndNSEFCa0RHQU0yQXdjQUdnTTNBemdEQndBYUF4a0ROd01IQURrREdnTTRBd2NBT1FNYkF4b0RCd0E2QXhzRE9RTUhBRG9ESEFNYkF3Y0FPd01jQXpvREJ3QTdBeDBESEFNSEFEd0RIUU03QXdjQVBBTWVBeDBEQndBOUF4NERQQU1IQUQwREh3TWVBd2NBSVFNZkF6MERCd0FoQXdJREh3TUhBRDRESVFNL0F3Y0FQZ01nQXlFREJ3QkFBeUFEUGdNSEFFQURJZ01nQXdjQVFRTWlBMEFEQndCQkF5TURJZ01IQUVJREl3TkJBd2NBUWdNa0F5TURCd0JEQXlRRFFnTUhBRU1ESlFNa0F3Y0FSQU1sQTBNREJ3QkVBeVlESlFNSEFFVURKZ05FQXdjQVJRTW5BeVlEQndCR0F5Y0RSUU1IQUVZREtBTW5Bd2NBUndNb0EwWURCd0JIQXlrREtBTUhBQ29EUndOSUF3Y0FLZ01wQTBjREJ3QXJBMGdEU1FNSEFDc0RLZ05JQXdjQUxBTkpBMG9EQndBc0F5c0RTUU1IQUMwRFNnTkxBd2NBTFFNc0Ewb0RCd0F1QTBzRFRBTUhBQzRETFFOTEF3Y0FMd05NQTAwREJ3QXZBeTREVEFNSEFEQURUUU5PQXdjQU1BTXZBMDBEQndBeEEwNERUd01IQURFRE1BTk9Bd2NBTWdOUEExQURCd0F5QXpFRFR3TUhBRE1EVUFOUkF3Y0FNd015QTFBREJ3QTBBMUVEVWdNSEFEUURNd05SQXdjQU5RTlNBMU1EQndBMUF6UURVZ01IQURZRFV3TlVBd2NBTmdNMUExTURCd0EzQTFRRFZRTUhBRGNETmdOVUF3Y0FPQU5WQTFZREJ3QTRBemNEVlFNSEFGY0RPQU5XQXdjQVZ3TTVBemdEQndCWUF6a0RWd01IQUZnRE9nTTVBd2NBV1FNNkExZ0RCd0JaQXpzRE9nTUhBRm9ET3dOWkF3Y0FXZ004QXpzREJ3QmJBendEV2dNSEFGc0RQUU04QXdjQVB3TTlBMXNEQndBL0F5RURQUU1IQUZ3RFhRTmVBd2NBWEFOZkExMERCd0JlQTJBRFlRTUhBRjREWFFOZ0F3Y0FZUU5pQTJNREJ3QmhBMkFEWWdNSEFHTURaQU5sQXdjQVl3TmlBMlFEQndCbEEyWURad01IQUdVRFpBTm1Bd2NBWndOb0Eya0RCd0JuQTJZRGFBTUhBR2tEYWdOckF3Y0FhUU5vQTJvREJ3QnJBMndEYlFNSEFHc0RhZ05zQXdjQWJBTnVBMjBEQndCc0EyOERiZ01IQUc4RGNBTnVBd2NBYndOeEEzQURCd0J4QTNJRGNBTUhBSEVEY3dOeUF3Y0Fjd04wQTNJREJ3QnpBM1VEZEFNSEFIVURkZ04wQXdjQWRRTjNBM1lEQndCM0EzZ0RkZ01IQUhjRGVRTjRBd2NBZVFONkEzZ0RCd0I1QTNzRGVnTUhBSHNEZkFONkF3Y0Fld045QTN3REJ3QitBM3dEZlFNSEFINERmd044QXdjQWdBTi9BMzREQndDQUE0RURmd01IQUlJRGdRT0FBd2NBZ2dPREE0RURCd0NFQTRNRGdnTUhBSVFEaFFPREF3Y0FoZ09GQTRRREJ3Q0dBNGNEaFFNSEFJZ0Rod09HQXdjQWlBT0pBNGNEQndDS0E0a0RpQU1IQUlvRGl3T0pBd2NBakFPS0E0MERCd0NNQTRzRGlnTUhBSTREalFPUEF3Y0FqZ09NQTQwREJ3Q1FBNDhEa1FNSEFKQURqZ09QQXdjQWtnT1JBNU1EQndDU0E1QURrUU1IQUpRRGt3T1ZBd2NBbEFPU0E1TURCd0NXQTVVRGx3TUhBSllEbEFPVkF3Y0FYQU9YQTE4REJ3QmNBNVlEbHdNSEFGOERtQU5kQXdjQVh3T1pBNWdEQndCZEE1b0RZQU1IQUYwRG1BT2FBd2NBWUFPYkEySURCd0JnQTVvRG13TUhBR1lEbkFOb0F3Y0FaZ09kQTV3REJ3Qm9BNTREYWdNSEFHZ0RuQU9lQXdjQWFnT2ZBMndEQndCcUE1NERud01IQUo4RGJ3TnNBd2NBbndPZ0EyOERCd0NoQTNVRGN3TUhBS0VEb2dOMUF3Y0FvZ04zQTNVREJ3Q2lBNk1EZHdNSEFLTURlUU4zQXdjQW93T2tBM2tEQndDa0Ezc0RlUU1IQUtRRHBRTjdBd2NBcGdOK0E2Y0RCd0NtQTRBRGZnTUhBS2dEZ0FPbUF3Y0FxQU9DQTRBREJ3Q3BBNElEcUFNSEFLa0RoQU9DQXdjQXFnT0VBNmtEQndDcUE0WURoQU1IQUkwRHF3T3NBd2NBalFPS0E2c0RCd0NQQTZ3RHJRTUhBSThEalFPc0F3Y0FrUU90QTY0REJ3Q1JBNDhEclFNSEFKTURyZ092QXdjQWt3T1JBNjREQndCZkE3QURtUU1IQUY4RGx3T3dBd2NBbVFPeEE1Z0RCd0NaQTdJRHNRTUhBSmdEc3dPYUF3Y0FtQU94QTdNREJ3Q2FBN1FEbXdNSEFKb0Rzd08wQXdjQW13TzFBN1lEQndDYkE3UUR0UU1IQUxZRHR3T2RBd2NBdGdPMUE3Y0RCd0NkQTdnRG5BTUhBSjBEdHdPNEF3Y0FuQU81QTU0REJ3Q2NBN2dEdVFNSEFKNER1Z09mQXdjQW5nTzVBN29EQndDNkE2QURud01IQUxvRHV3T2dBd2NBdXdPOEE2QURCd0M3QTcwRHZBTUhBTDBEb1FPOEF3Y0F2UU8rQTZFREJ3QytBNklEb1FNSEFMNER2d09pQXdjQXZ3T2pBNklEQndDL0E4QURvd01IQU1BRHBBT2pBd2NBd0FQQkE2UURCd0RCQTZVRHBBTUhBTUVEd2dPbEF3Y0F3Z1BEQTZVREJ3RENBOFFEd3dNSEFNVUR3d1BFQXdjQXhRT25BOE1EQndER0E2Y0R4UU1IQU1ZRHBnT25Bd2NBeHdPbUE4WURCd0RIQTZnRHBnTUhBTWdEcUFQSEF3Y0F5QU9wQTZnREJ3REpBNmtEeUFNSEFNa0RxZ09wQXdjQXlnT3FBOGtEQndES0E4c0RxZ01IQU13RHl3UEtBd2NBekFPckE4c0RCd0NzQTh3RHpRTUhBS3dEcXdQTUF3Y0FyUVBOQTg0REJ3Q3RBNndEelFNSEFLNER6Z1BQQXdjQXJnT3RBODREQndDdkE4OEQwQU1IQUs4RHJnUFBBd2NBMFFQUUE5SURCd0RSQTY4RDBBTUhBTEFEMGdQVEF3Y0FzQVBSQTlJREJ3Q1pBOU1Ec2dNSEFKa0RzQVBUQXdjQXNnUFVBN0VEQndDeUE5VUQxQU1IQUxFRDFnT3pBd2NBc1FQVUE5WURCd0N6QTljRHRBTUhBTE1EMWdQWEF3Y0F0QVBZQTdVREJ3QzBBOWNEMkFNSEFMVUQyUU8zQXdjQXRRUFlBOWtEQndDM0E5b0R1QU1IQUxjRDJRUGFBd2NBdUFQYkE3a0RCd0M0QTlvRDJ3TUhBTGtEM0FPNkF3Y0F1UVBiQTl3REJ3RGNBN3NEdWdNSEFOd0QzUU83QXdjQTNRTzlBN3NEQndEZEE5NER2UU1IQU40RHZnTzlBd2NBM2dQZkE3NERCd0RmQTc4RHZnTUhBTjhENEFPL0F3Y0E0QVBBQTc4REJ3RGdBK0VEd0FNSEFPRUR3UVBBQXdjQTRRUGlBOEVEQndEaUE4SUR3UU1IQU9JRDR3UENBd2NBNHdQRUE4SURCd0RqQStRRHhBTUhBT1VEeEFQa0F3Y0E1UVBGQThRREJ3RG1BOFVENVFNSEFPWUR4Z1BGQXdjQTV3UEdBK1lEQndEbkE4Y0R4Z01IQU9nRHh3UG5Bd2NBNkFQSUE4Y0RCd0RwQThnRDZBTUhBT2tEeVFQSUF3Y0E2Z1BKQStrREJ3RHFBOG9EeVFNSEFPc0R5Z1BxQXdjQTZ3UE1BOG9EQndETkErc0Q3QU1IQU0wRHpBUHJBd2NBemdQc0ErMERCd0RPQTgwRDdBTUhBTThEN1FQdUF3Y0F6d1BPQSswREJ3RFFBKzREN3dNSEFOQUR6d1B1QXdjQTBnUHZBL0FEQndEU0E5QUQ3d01IQU5NRDhBUHhBd2NBMHdQU0EvQURCd0N5QS9FRDFRTUhBTElEMHdQeEF3Y0ExQVB5QS9NREJ3RFVBOVVEOGdNSEFOWUQ4d1AwQXdjQTFnUFVBL01EQndEWEEvUUQ5UU1IQU5jRDFnUDBBd2NBMkFQMUEvWURCd0RZQTljRDlRTUhBTmtEOWdQM0F3Y0EyUVBZQS9ZREJ3RGFBL2NEK0FNSEFOb0QyUVAzQXdjQTJ3UDRBL2tEQndEYkE5b0QrQU1IQU53RCtRUDZBd2NBM0FQYkEva0RCd0Q3QTl3RCtnTUhBUHNEM1FQY0F3Y0EvQVBkQS9zREJ3RDhBOTREM1FNSEFQMEQzZ1A4QXdjQS9RUGZBOTREQndEK0E5OEQvUU1IQVA0RDRBUGZBd2NBL3dQZ0EvNERCd0QvQStFRDRBTUhBQUFFNFFQL0F3Y0FBQVRpQStFREJ3QUJCT0lEQUFRSEFBRUU0d1BpQXdjQUFnVGpBd0VFQndBQ0JPUUQ0d01IQUFNRTVBTUNCQWNBQXdUbEErUURCd0FFQk9VREF3UUhBQVFFNWdQbEF3Y0FCUVRtQXdRRUJ3QUZCT2NENWdNSEFBWUU1d01GQkFjQUJnVG9BK2NEQndBSEJPZ0RCZ1FIQUFjRTZRUG9Bd2NBQ0FUcEF3Y0VCd0FJQk9vRDZRTUhBQWtFNmdNSUJBY0FDUVRyQStvREJ3RHNBd2tFQ2dRSEFPd0Q2d01KQkFjQTdRTUtCQXNFQndEdEErd0RDZ1FIQU80REN3UU1CQWNBN2dQdEF3c0VCd0R2QXd3RURRUUhBTzhEN2dNTUJBY0E4QU1OQkE0RUJ3RHdBKzhERFFRSEFQRUREZ1FQQkFjQThRUHdBdzRFQndEVkF3OEU4Z01IQU5VRDhRTVBCQWNBOHdNUUJCRUVCd0R6QS9JREVBUUhBUFFERVFRU0JBY0E5QVB6QXhFRUJ3RDFBeElFRXdRSEFQVUQ5QU1TQkFjQTlnTVRCQlFFQndEMkEvVURFd1FIQVBjREZBUVZCQWNBOXdQMkF4UUVCd0Q0QXhVRUZnUUhBUGdEOXdNVkJBY0ErUU1XQkJjRUJ3RDVBL2dERmdRSEFQb0RGd1FZQkFjQStnUDVBeGNFQndBWkJQb0RHQVFIQUJrRSt3UDZBd2NBR2dUN0F4a0VCd0FhQlB3RCt3TUhBQnNFL0FNYUJBY0FHd1Q5QS93REJ3QWNCUDBER3dRSEFCd0UvZ1A5QXdjQUhRVCtBeHdFQndBZEJQOEQvZ01IQUI0RS93TWRCQWNBSGdRQUJQOERCd0FmQkFBRUhnUUhBQjhFQVFRQUJBY0FJQVFCQkI4RUJ3QWdCQUlFQVFRSEFDRUVBZ1FnQkFjQUlRUURCQUlFQndBaUJBTUVJUVFIQUNJRUJBUURCQWNBSXdRRUJDSUVCd0FqQkFVRUJBUUhBQ1FFQlFRakJBY0FKQVFHQkFVRUJ3QWxCQVlFSkFRSEFDVUVCd1FHQkFjQUpnUUhCQ1VFQndBbUJBZ0VCd1FIQUNjRUNBUW1CQWNBSndRSkJBZ0VCd0FLQkNjRUtBUUhBQW9FQ1FRbkJBY0FDd1FvQkNrRUJ3QUxCQW9FS0FRSEFBd0VLUVFxQkFjQURBUUxCQ2tFQndBTkJDb0VLd1FIQUEwRURBUXFCQWNBRGdRckJDd0VCd0FPQkEwRUt3UUhBQThFTEFRdEJBY0FEd1FPQkN3RUJ3RHlBeTBFRUFRSEFQSUREd1F0QkFjQUVBUXVCQkVFQndBUUJDOEVMZ1FIQUJFRU1BUVNCQWNBRVFRdUJEQUVCd0FTQkRFRUV3UUhBQklFTUFReEJBY0FFd1F5QkJRRUJ3QVRCREVFTWdRSEFCUUVNd1FWQkFjQUZBUXlCRE1FQndBVkJEUUVGZ1FIQUJVRU13UTBCQWNBRmdRMUJCY0VCd0FXQkRRRU5RUUhBQmNFTmdRWUJBY0FGd1ExQkRZRUJ3QTJCQmtFR0FRSEFEWUVOd1FaQkFjQU53UWFCQmtFQndBM0JEZ0VHZ1FIQURnRUd3UWFCQWNBT0FRNUJCc0VCd0E1QkJ3RUd3UUhBRGtFT2dRY0JBY0FPZ1FkQkJ3RUJ3QTZCRHNFSFFRSEFEc0VIZ1FkQkFjQU93UThCQjRFQndBOEJCOEVIZ1FIQUR3RVBRUWZCQWNBUFFRZ0JCOEVCd0E5QkQ0RUlBUUhBRDhFSUFRK0JBY0FQd1FoQkNBRUJ3QkFCQ0VFUHdRSEFFQUVJZ1FoQkFjQVFRUWlCRUFFQndCQkJDTUVJZ1FIQUVJRUl3UkJCQWNBUWdRa0JDTUVCd0JEQkNRRVFnUUhBRU1FSlFRa0JBY0FSQVFsQkVNRUJ3QkVCQ1lFSlFRSEFFVUVKZ1JFQkFjQVJRUW5CQ1lFQndBb0JFVUVSZ1FIQUNnRUp3UkZCQWNBS1FSR0JFY0VCd0FwQkNnRVJnUUhBQ29FUndSSUJBY0FLZ1FwQkVjRUJ3QXJCRWdFU1FRSEFDc0VLZ1JJQkFjQUxBUkpCRW9FQndBc0JDc0VTUVFIQUMwRVNnUkxCQWNBTFFRc0JFb0VCd0FRQkVzRUx3UUhBQkFFTFFSTEJBY0FlQU5NQkhZREJ3QjRBMDBFVEFRSEFIb0RUUVI0QXdjQWVnTk9CRTBFQndCOEEwNEVlZ01IQUh3RFR3Uk9CQWNBZndOUEJId0RCd0IvQTFBRVR3UUhBSUVEVUFSL0F3Y0FnUU5SQkZBRUJ3Q0RBMUVFZ1FNSEFJTURVZ1JSQkFjQWhRTlNCSU1EQndDRkExTUVVZ1FIQUljRFV3U0ZBd2NBaHdOVUJGTUVCd0NKQTFRRWh3TUhBSWtEVlFSVUJBY0Fpd05WQklrREJ3Q0xBMVlFVlFRSEFJd0RWZ1NMQXdjQWpBTlhCRllFQndDT0ExY0VqQU1IQUk0RFdBUlhCQWNBa0FOWUJJNERCd0NRQTFrRVdBUUhBSklEV1FTUUF3Y0FrZ05hQkZrRUJ3Q1VBMW9Fa2dNSEFKUURXd1JhQkFjQWxnTmJCSlFEQndDV0Exd0VXd1FIQUZ3RFhBU1dBd2NBWEFOZEJGd0VCd0JlQTEwRVhBTUhBRjREWGdSZEJBY0FZUU5lQkY0REJ3QmhBMThFWGdRSEFHTURYd1JoQXdjQVl3TmdCRjhFQndCbEEyQUVZd01IQUdVRFlRUmdCQWNBWndOaEJHVURCd0JuQTJJRVlRUUhBR2tEWWdSbkF3Y0FhUU5qQkdJRUJ3QnJBMk1FYVFNSEFHc0RaQVJqQkFjQWJRTmtCR3NEQndCdEEyVUVaQVFIQUc0RFpRUnRBd2NBYmdObUJHVUVCd0J3QTJZRWJnTUhBSEFEWndSbUJBY0FjZ05uQkhBREJ3QnlBMmdFWndRSEFIUURhQVJ5QXdjQWRBTnBCR2dFQndCMkEya0VkQU1IQUhZRFRBUnBCQWNBdHdKcUJLNENCd0MzQW1zRWFnUUhBR3NFVGdScUJBY0Fhd1JOQkU0RUJ3QzBBbXNFdHdJSEFMUUNiQVJyQkFjQWJBUk5CR3NFQndCc0JFd0VUUVFIQUxvQ2JBUzBBZ2NBdWdKdEJHd0VCd0J0QkV3RWJBUUhBRzBFYVFSTUJBY0F3d0p0QkxvQ0J3RERBbTRFYlFRSEFHNEVhUVJ0QkFjQWJnUm9CR2tFQndEQUFtNEV3d0lIQU1BQ2J3UnVCQWNBYndSb0JHNEVCd0J2QkdjRWFBUUhBTVlDYndUQUFnY0F4Z0p3Qkc4RUJ3QndCR2NFYndRSEFIQUVaZ1JuQkFjQXlRSndCTVlDQndESkFuRUVjQVFIQUhFRVpnUndCQWNBY1FSbEJHWUVCd0RMQW5FRXlRSUhBTXNDY2dSeEJBY0FjZ1JsQkhFRUJ3QnlCR1FFWlFRSEFORUNjZ1RMQWdjQTBRSnpCSElFQndCekJHUUVjZ1FIQUhNRVl3UmtCQWNBMVFKekJORUNCd0RWQW5RRWN3UUhBSFFFWXdSekJBY0FkQVJpQkdNRUJ3RFhBblFFMVFJSEFOY0NkUVIwQkFjQWRRUmlCSFFFQndCMUJHRUVZZ1FIQU4wQ2RRVFhBZ2NBM1FKMkJIVUVCd0IyQkdFRWRRUUhBSFlFWUFSaEJBY0E0QUoyQk4wQ0J3RGdBbmNFZGdRSEFIY0VZQVIyQkFjQWR3UmZCR0FFQndCdEFuY0U0QUlIQUcwQ2VBUjNCQWNBZUFSZkJIY0VCd0I0QkY0RVh3UUhBRzhDZUFSdEFnY0Fid0o1QkhnRUJ3QjVCRjRFZUFRSEFIa0VYUVJlQkFjQWRRSjVCRzhDQndCMUFub0VlUVFIQUhvRVhRUjVCQWNBZWdSY0JGMEVCd0IzQW5vRWRRSUhBSGNDZXdSNkJBY0Fld1JjQkhvRUJ3QjdCRnNFWEFRSEFIMENld1IzQWdjQWZRSjhCSHNFQndCOEJGc0Vld1FIQUh3RVdnUmJCQWNBZ1FKOEJIMENCd0NCQW4wRWZBUUhBSDBFV2dSOEJBY0FmUVJaQkZvRUJ3Q0RBbjBFZ1FJSEFJTUNmZ1I5QkFjQWZnUlpCSDBFQndCK0JGZ0VXUVFIQUlrQ2ZnU0RBZ2NBaVFKL0JINEVCd0IvQkZnRWZnUUhBSDhFVndSWUJBY0Frd0ovQklrQ0J3Q1RBb0FFZndRSEFJQUVWd1IvQkFjQWdBUldCRmNFQndDUUFvQUVrd0lIQUpBQ2dRU0FCQWNBZ1FSV0JJQUVCd0NCQkZVRVZnUUhBSllDZ1FTUUFnY0FsZ0tDQklFRUJ3Q0NCRlVFZ1FRSEFJSUVWQVJWQkFjQW53S0NCSllDQndDZkFvTUVnZ1FIQUlNRVZBU0NCQWNBZ3dSVEJGUUVCd0NjQW9NRW53SUhBSndDaEFTREJBY0FoQVJUQklNRUJ3Q0VCRklFVXdRSEFLSUNoQVNjQWdjQW9nS0ZCSVFFQndDRkJGSUVoQVFIQUlVRVVRUlNCQWNBcXdLRkJLSUNCd0NyQW9ZRWhRUUhBSVlFVVFTRkJBY0FoZ1JRQkZFRUJ3Q29Bb1lFcXdJSEFLZ0Nod1NHQkFjQWh3UlFCSVlFQndDSEJFOEVVQVFIQUs0Q2h3U29BZ2NBcmdKcUJJY0VCd0JxQkU4RWh3UUhBR29FVGdSUEJBY0FpQVJ6QW5nQ0J3Q0lCSWtFY3dJSEFHOENpQVIxQWdjQWJ3S0pCSWdFQndDS0JIOENoQUlIQUlvRWl3Ui9BZ2NBZlFLS0JJRUNCd0I5QW9zRWlnUUhBSThDakFTTEFnY0Fqd0tOQkl3RUJ3Q0pBbzBFa3dJSEFJa0NqQVNOQkFjQW13S09CSlFDQndDYkFvOEVqZ1FIQUpZQ2p3U2ZBZ2NBbGdLT0JJOEVCd0NuQXBBRW9BSUhBS2NDa1FTUUJBY0FvZ0tSQktzQ0J3Q2lBcEFFa1FRSEFMTUNrZ1NzQWdjQXN3S1RCSklFQndDdUFwTUV0d0lIQUs0Q2tnU1RCQWNBdndLVUJMZ0NCd0MvQXBVRWxBUUhBTG9DbFFUREFnY0F1Z0tVQkpVRUJ3Q1dCTVFDekFJSEFKWUVsd1RFQWdjQXhnS1dCTWtDQndER0FwY0VsZ1FIQUpnRTB3TFlBZ2NBbUFTWkJOTUNCd0RSQXBnRTFRSUhBTkVDbVFTWUJBY0FtZ1RmQXVJQ0J3Q2FCSnNFM3dJSEFOMENtZ1RnQWdjQTNRS2JCSm9FQndDSkJHd0NuQVFIQUlrRWJ3SnNBZ2NBY3dLY0JIRUNCd0J6QW9rRW5BUUhBSFVDblFSMkFnY0FkUUtJQkowRUJ3Q0lCSG9DblFRSEFJZ0VlQUo2QWdjQWl3UjhBcDRFQndDTEJIMENmQUlIQUg4Q25nUitBZ2NBZndLTEJKNEVCd0NCQXA4RWdnSUhBSUVDaWdTZkJBY0FpZ1NHQXA4RUJ3Q0tCSVFDaGdJSEFJd0VpQUtnQkFjQWpBU0pBb2dDQndDTEFxQUVpZ0lIQUlzQ2pBU2dCQWNBa3dLaEJKRUNCd0NUQW8wRW9RUUhBSTBFakFLaEJBY0FqUVNQQW93Q0J3Q09CSmNDb2dRSEFJNEVsZ0tYQWdjQWxBS2lCSlVDQndDVUFvNEVvZ1FIQUo4Q293U2RBZ2NBbndLUEJLTUVCd0NQQkpnQ293UUhBSThFbXdLWUFnY0FrQVNqQXFRRUJ3Q1FCS0lDb3dJSEFLQUNwQVNoQWdjQW9BS1FCS1FFQndDckFxVUVxUUlIQUtzQ2tRU2xCQWNBa1FTa0FxVUVCd0NSQktjQ3BBSUhBSklFcndLbUJBY0FrZ1N1QXE4Q0J3Q3NBcVlFclFJSEFLd0NrZ1NtQkFjQXR3S25CTFVDQndDM0FwTUVwd1FIQUpNRXNBS25CQWNBa3dTekFyQUNCd0NVQkxzQ3FBUUhBSlFFdWdLN0FnY0F1QUtvQkxrQ0J3QzRBcFFFcUFRSEFNTUNxUVRCQWdjQXd3S1ZCS2tFQndDVkJMd0NxUVFIQUpVRXZ3SzhBZ2NBbHdUSEFxb0VCd0NYQk1ZQ3h3SUhBTVFDcWdURkFnY0F4QUtYQktvRUJ3REpBcXNFeWdJSEFNa0NsZ1NyQkFjQWxnVE9BcXNFQndDV0JNd0N6Z0lIQUprRTBBS3NCQWNBbVFUUkF0QUNCd0RUQXF3RTBnSUhBTk1DbVFTc0JBY0ExUUt0Qk5ZQ0J3RFZBcGdFclFRSEFKZ0UyZ0t0QkFjQW1BVFlBdG9DQndDYkJOd0NyZ1FIQUpzRTNRTGNBZ2NBM3dLdUJONENCd0RmQXBzRXJnUUhBT0FDcndUaEFnY0E0QUthQks4RUJ3Q2FCT01DcndRSEFKb0U0Z0xqQWdjQXFnUWdBaUVDQndDcUJNY0NJQUlIQU1jQ0h3SWdBZ2NBeHdMQ0FoOENCd0FpQXNJQ3dRSUhBQ0lDSHdMQ0FnY0FJUUxGQXFvRUJ3QWhBbEVDeFFJSEFDTUN3UUtwQkFjQUl3SWlBc0VDQndCU0Fxa0V2QUlIQUZJQ0l3S3BCQWNBVVFLK0FzVUNCd0JSQWxBQ3ZnSUhBTHdDVUFKU0FnY0F2QUsrQWxBQ0J3QWRBc2dDeWdJSEFCMENIZ0xJQWdjQUhnTFFBc2dDQndBZUFrMEMwQUlIQUUwQ3JBVFFBZ2NBVFFKTUFxd0VCd0JyQXF3RVRBSUhBR3NDMGdLc0JBY0FIQUxLQXFzRUJ3QWNBaDBDeWdJSEFLc0VUZ0ljQWdjQXF3VE9BazRDQndCUEFzNEN6UUlIQUU4Q1RnTE9BZ2NBYXdMTkF0SUNCd0JyQWs4Q3pRSUhBTm9DYVFKcUFnY0EyZ0xaQW1rQ0J3RGVBbWtDMlFJSEFONENhQUpwQWdjQXJRUnFBa29DQndDdEJOb0NhZ0lIQU5ZQ1NnSkxBZ2NBMWdLdEJFb0NCd0RVQWtzQ1NRSUhBTlFDMWdKTEFnY0EzQUpKQWtnQ0J3RGNBdFFDU1FJSEFLNEVTQUpIQWdjQXJnVGNBa2dDQndEZUFrY0NhQUlIQU40Q3JnUkhBZ2NBYkFKRUFrSUNCd0JzQW00Q1JBSUhBRzRDUmdKRUFnY0FiZ0xoQWtZQ0J3RGhBa1VDUmdJSEFPRUNyd1JGQWdjQXJ3Um5Ba1VDQndDdkJPTUNad0lIQUp3RVFnSkRBZ2NBbkFSc0FrSUNCd0J4QWtNQ1pRSUhBSEVDbkFSREFnY0FaUUp5QW5FQ0J3QmxBbVlDY2dJSEFHWUM0d0p5QWdjQVpnSm5BdU1DQndCakFub0NlUUlIQUdNQ1pBSjZBZ2NBWWdKNUFuNENCd0JpQW1NQ2VRSUhBRDRDZmdLZUJBY0FQZ0ppQW40Q0J3QTlBcDRFZkFJSEFEMENQZ0tlQkFjQWZBSS9BajBDQndCOEFuUUNQd0lIQUhRQ1FBSS9BZ2NBZEFKMkFrQUNCd0IyQWtFQ1FBSUhBSFlDblFSQkFnY0FuUVJrQWtFQ0J3Q2RCSG9DWkFJSEFHRUNud1NHQWdjQVlRSThBcDhFQndDQ0Fqd0NPd0lIQUlJQ253UThBZ2NBZ0FJN0Fqb0NCd0NBQW9JQ093SUhBSWdDT2dJNEFnY0FpQUtBQWpvQ0J3Q2dCRGdDT1FJSEFLQUVpQUk0QWdjQWlnSTVBbDhDQndDS0FxQUVPUUlIQUY4Q2hRS0tBZ2NBWHdKZ0FvVUNCd0NHQW1BQ1lRSUhBSVlDaFFKZ0FnY0FYUUtNQW80Q0J3QmRBbDRDakFJSEFJNENYQUpkQWdjQWpnS1ZBbHdDQndDaUJETUNOQUlIQUtJRWx3SXpBZ2NBbHdJMUFqTUNCd0NYQXBJQ05RSUhBSklDTmdJMUFnY0FrZ0tSQWpZQ0J3Q1JBamNDTmdJSEFKRUNvUVEzQWdjQVhnS2hCSXdDQndCZUFqY0NvUVFIQUpVQ05BSmNBZ2NBbFFLaUJEUUNCd0F1QXFRRW93SUhBQzRDTHdLa0JBY0FNQUtqQXA0Q0J3QXdBaTRDb3dJSEFERUNuZ0tkQWdjQU1RSXdBcDRDQndBdkFxRUNwQVFIQUM4Q1dRS2hBZ2NBTWdLZEFxTUVCd0F5QWpFQ25RSUhBRnNDb3dTWUFnY0FXd0l5QXFNRUJ3Q1lBbG9DV3dJSEFKZ0NtZ0phQWdjQW1nSlpBbG9DQndDYUFxRUNXUUlIQUMwQ3FRS2xCQWNBTFFJc0Fxa0NCd0JZQXFVRXBBSUhBRmdDTFFLbEJBY0FMQUtxQXFrQ0J3QXNBaWtDcWdJSEFDa0Nyd0txQWdjQUtRSXFBcThDQndBcUFxWUVyd0lIQUNvQ0t3S21CQWNBS3dLdEFxWUVCd0FyQWxjQ3JRSUhBS1FDVmdKWUFnY0FwQUttQWxZQ0J3Q21BbGNDVmdJSEFLWUNyUUpYQWdjQUp3SzJBclVDQndBbkFpUUN0Z0lIQUNRQ3V3SzJBZ2NBSkFJbEFyc0NCd0FvQXJVQ3B3UUhBQ2dDSndLMUFnY0FWUUtuQkxBQ0J3QlZBaWdDcHdRSEFDVUNxQVM3QWdjQUpRSW1BcWdFQndBbUFya0NxQVFIQUNZQ1ZBSzVBZ2NBc0FKVEFsVUNCd0N3QXJJQ1V3SUhBTElDVkFKVEFnY0FzZ0s1QWxRQ0J3Q3dCTEVFc2dRSEFMQUVzd1N4QkFjQXRBUzFCTFlFQndDMEJMY0V0UVFIQUxnRXVRUzZCQWNBdUFTN0JMa0VCd0M4QkwwRXZnUUhBTHdFdndTOUJBY0F3QVRCQk1JRUJ3REFCTU1Fd1FRSEFNUUV4UVRHQkFjQXhBVEhCTVVFQndERUJNZ0V5UVFIQU1RRXhnVElCQWNBeVFUS0JNc0VCd0RKQk1nRXlnUUhBTW9FekFUTEJBY0F5Z1ROQk13RUJ3RE5CTTRFekFRSEFNMEV6d1RPQkFjQXhRVE9CTThFQndERkJNY0V6Z1FIQU5BRTBRVFNCQWNBMEFUVEJORUVCd0RTQk5RRTFRUUhBTklFMFFUVUJBY0ExQVRXQk5VRUJ3RFVCTmNFMWdRSEFOY0UyQVRXQkFjQTF3VFpCTmdFQndEYUJOZ0UyUVFIQU5vRTJ3VFlCQWNBMEFUYUJOTUVCd0RRQk5zRTJnUUhBTndFM1FUZUJBY0EzQVRmQk4wRUJ3RGRCT0FFM2dRSEFOMEU0UVRnQkFjQTRRVGlCT0FFQndEaEJPTUU0Z1FIQU9RRTRnVGpCQWNBNUFUbEJPSUVCd0RtQk9RRTV3UUhBT1lFNVFUa0JBY0E1Z1RmQk53RUJ3RG1CT2NFM3dRSEFPZ0U2UVRxQkFjQTZBVHJCT2tFQndEckJPd0U2UVFIQU9zRTdRVHNCQWNBN2dUc0JPMEVCd0R1Qk84RTdBUUhBUEFFN2dUeEJBY0E4QVR2Qk80RUJ3RHdCUElFOHdRSEFQQUU4UVR5QkFjQTh3VG9CT29FQndEekJQSUU2QVFIQVBRRTlRVDJCQWNBOUFUM0JQVUVCd0Q0QlBVRTl3UUhBUGdFK1FUMUJBY0ErZ1Q0QlBzRUJ3RDZCUGtFK0FRSEFQb0UvQVQ5QkFjQStnVDdCUHdFQndEOUJQNEUvd1FIQVAwRS9BVCtCQWNBL2dUMkJQOEVCd0QrQlBRRTlnUUhBTVlFQUFVQkJRY0F4Z1RGQkFBRkJ3RElCQUVGQWdVSEFNZ0V4Z1FCQlFjQXlnUUNCUU1GQndES0JNZ0VBZ1VIQUFRRnlnUURCUWNBQkFYTkJNb0VCd0FGQmMwRUJBVUhBQVVGendUTkJBY0FBQVhQQkFVRkJ3QUFCY1VFendRSEFORUVCZ1VIQlFjQTBRVFRCQVlGQndEVUJBY0ZDQVVIQU5RRTBRUUhCUWNBQ1FYVUJBZ0ZCd0FKQmRjRTFBUUhBQW9GMXdRSkJRY0FDZ1haQk5jRUJ3QUxCZGtFQ2dVSEFBc0YyZ1RaQkFjQTB3UUxCUVlGQndEVEJOb0VDd1VIQU4wRURBVU5CUWNBM1FUZkJBd0ZCd0FPQmQwRURRVUhBQTRGNFFUZEJBY0FEd1hoQkE0RkJ3QVBCZU1FNFFRSEFCQUY0d1FQQlFjQUVBWGtCT01FQndEbkJCQUZFUVVIQU9jRTVBUVFCUWNBM3dRUkJRd0ZCd0RmQk9jRUVRVUhBQklGNkFRVEJRY0FFZ1hyQk9nRUJ3QVVCZXNFRWdVSEFCUUY3UVRyQkFjQUZRWHRCQlFGQndBVkJlNEU3UVFIQVBFRUZRVVdCUWNBOFFUdUJCVUZCd0R5QkJZRkZ3VUhBUElFOFFRV0JRY0E2QVFYQlJNRkJ3RG9CUElFRndVSEFCZ0Y5QVFaQlFjQUdBWDNCUFFFQndBYUJmY0VHQVVIQUJvRitBVDNCQWNBK3dRYUJSc0ZCd0Q3QlBnRUdnVUhBUHdFR3dVY0JRY0EvQVQ3QkJzRkJ3RCtCQndGSFFVSEFQNEUvQVFjQlFjQUdRWCtCQjBGQndBWkJmUUUvZ1FIQUFFRkhnVWZCUWNBQVFVQUJSNEZCd0FDQlI4RklBVUhBQUlGQVFVZkJRY0FBd1VnQlNFRkJ3QURCUUlGSUFVSEFDSUZBd1VoQlFjQUlnVUVCUU1GQndBakJRUUZJZ1VIQUNNRkJRVUVCUWNBSGdVRkJTTUZCd0FlQlFBRkJRVUhBQWNGSkFVbEJRY0FCd1VHQlNRRkJ3QUlCU1VGSmdVSEFBZ0ZCd1VsQlFjQUp3VUlCU1lGQndBbkJRa0ZDQVVIQUNnRkNRVW5CUWNBS0FVS0JRa0ZCd0FwQlFvRktBVUhBQ2tGQ3dVS0JRY0FCZ1VwQlNRRkJ3QUdCUXNGS1FVSEFBMEZLZ1VyQlFjQURRVU1CU29GQndBc0JRMEZLd1VIQUN3RkRnVU5CUWNBTFFVT0JTd0ZCd0F0QlE4RkRnVUhBQzRGRHdVdEJRY0FMZ1VRQlE4RkJ3QVJCUzRGTHdVSEFCRUZFQVV1QlFjQURBVXZCU29GQndBTUJSRUZMd1VIQURBRkV3VXhCUWNBTUFVU0JSTUZCd0F5QlJJRk1BVUhBRElGRkFVU0JRY0FNd1VVQlRJRkJ3QXpCUlVGRkFVSEFCWUZNd1UwQlFjQUZnVVZCVE1GQndBWEJUUUZOUVVIQUJjRkZnVTBCUWNBRXdVMUJURUZCd0FUQlJjRk5RVUhBRFlGR1FVM0JRY0FOZ1VZQlJrRkJ3QTRCUmdGTmdVSEFEZ0ZHZ1VZQlFjQUd3VTRCVGtGQndBYkJSb0ZPQVVIQUJ3Rk9RVTZCUWNBSEFVYkJUa0ZCd0FkQlRvRk93VUhBQjBGSEFVNkJRY0FOd1VkQlRzRkJ3QTNCUmtGSFFVSEFCOEZzUVN6QkFjQUh3VWVCYkVFQndBZkJiQUVJQVVIQUI4RnN3U3dCQWNBSUFVOEJTRUZCd0FnQmJBRVBBVUhBRHdGSWdVaEJRY0FQQVU5QlNJRkJ3QTlCU01GSWdVSEFEMEZzZ1FqQlFjQXNRUWpCYklFQndDeEJCNEZJd1VIQUNRRnRBUWxCUWNBSkFXM0JMUUVCd0FsQlQ0RkpnVUhBQ1VGdEFRK0JRY0FQZ1VuQlNZRkJ3QStCVDhGSndVSEFEOEZLQVVuQlFjQVB3VzJCQ2dGQndDMUJDZ0Z0Z1FIQUxVRUtRVW9CUWNBSkFXMUJMY0VCd0FrQlNrRnRRUUhBQ29GUUFVckJRY0FLZ1c0QkVBRkJ3QkFCU3dGS3dVSEFFQUZRUVVzQlFjQVFRVXRCU3dGQndCQkJib0VMUVVIQUxrRUxRVzZCQWNBdVFRdUJTMEZCd0F2QmJrRXV3UUhBQzhGTGdXNUJBY0FMd1c0QkNvRkJ3QXZCYnNFdUFRSEFFSUZNQVV4QlFjQVFnVkRCVEFGQndCREJUSUZNQVVIQUVNRnZnUXlCUWNBdlFReUJiNEVCd0M5QkRNRk1nVUhBRFFGdlFTL0JBY0FOQVV6QmIwRUJ3QTBCYndFTlFVSEFEUUZ2d1M4QkFjQU5RVkNCVEVGQndBMUJid0VRZ1VIQU1FRU5nVTNCUWNBd1FUREJEWUZCd0RBQkRZRnd3UUhBTUFFT0FVMkJRY0FPUVhBQkVRRkJ3QTVCVGdGd0FRSEFEa0ZSUVU2QlFjQU9RVkVCVVVGQndBNkJjSUVPd1VIQURvRlJRWENCQWNBd2dRM0JUc0ZCd0RDQk1FRU53VUhBTElFUEFXd0JBY0FzZ1E5QlR3RkJ3QzJCRDRGdEFRSEFMWUVQd1UrQlFjQXVnUkFCYmdFQndDNkJFRUZRQVVIQU1JRVJBWEFCQWNBd2dSRkJVUUZCd0MrQkVJRnZBUUhBTDRFUXdWQ0JRY0E2Z1JrQS9NRUJ3RHFCR1lEWkFNSEFHSUQ4d1JrQXdjQVlnUHdCUE1FQndDZEErd0V0Z01IQUowRDZRVHNCQWNBWmdQcEJKMERCd0JtQStvRTZRUUhBSnNEOEFSaUF3Y0Ftd1B2QlBBRUJ3Q2JBK3dFN3dRSEFKc0R0Z1BzQkFjQTNnVFJBN0FEQndEZUJPQUUwUU1IQUpjRDNnU3dBd2NBbHdQY0JONEVCd0NWQTl3RWx3TUhBSlVENWdUY0JBY0Frd1BtQkpVREJ3Q1RBK1VFNWdRSEFLOEQ1UVNUQXdjQXJ3UGlCT1VFQndDdkErQUU0Z1FIQUs4RDBRUGdCQWNBMWdUTEE5VUVCd0RXQktvRHl3TUhBS3NEMVFUTEF3Y0Fxd1BTQk5VRUJ3Q0tBOUlFcXdNSEFJb0QwQVRTQkFjQWlBUFFCSW9EQndDSUE5c0UwQVFIQUlZRDJ3U0lBd2NBaGdQWUJOc0VCd0NxQTlnRWhnTUhBS29EMWdUWUJBY0FwUVBNQkhzREJ3Q2xBOHNFekFRSEFNTUR5d1NsQXdjQXd3UEpCTXNFQndDbkE4a0V3d01IQUtjRHhBVEpCQWNBemdSN0E4d0VCd0RPQkgwRGV3TUhBTWNFZlFQT0JBY0F4d1IrQTMwREJ3REVCSDREeHdRSEFNUUVwd04rQXdjQWJ3UC9CSEVEQndCdkEvMEUvd1FIQUtBRC9RUnZBd2NBb0FQNkJQMEVCd0NnQS9rRStnUUhBS0FEdkFQNUJBY0FvUVA1Qkx3REJ3Q2hBL1VFK1FRSEFITUQ5UVNoQXdjQWN3UDJCUFVFQndCeEEvWUVjd01IQUhFRC93VDJCQWNBUmdWSEJVZ0ZCd0JHQlVrRlJ3VUhBRWdGU2dWTEJRY0FTQVZIQlVvRkJ3QkxCVXdGVFFVSEFFc0ZTZ1ZNQlFjQVRRVk9CVThGQndCTkJVd0ZUZ1VIQUU4RlVBVlJCUWNBVHdWT0JWQUZCd0JSQlZJRlV3VUhBRkVGVUFWU0JRY0FVd1ZVQlZVRkJ3QlRCVklGVkFVSEFGVUZWZ1ZYQlFjQVZRVlVCVllGQndCV0JWZ0ZWd1VIQUZZRldRVllCUWNBV1FWYUJWZ0ZCd0JaQlZzRldnVUhBRnNGWEFWYUJRY0FXd1ZkQlZ3RkJ3QmRCVjRGWEFVSEFGMEZYd1ZlQlFjQVh3VmdCVjRGQndCZkJXRUZZQVVIQUdFRllnVmdCUWNBWVFWakJXSUZCd0JqQldRRllnVUhBR01GWlFWa0JRY0FaUVZtQldRRkJ3QmxCV2NGWmdVSEFHZ0ZaZ1ZuQlFjQWFBVnBCV1lGQndCcUJXa0ZhQVVIQUdvRmF3VnBCUWNBYkFWckJXb0ZCd0JzQlcwRmF3VUhBRzRGYlFWc0JRY0FiZ1Z2QlcwRkJ3QndCVzhGYmdVSEFIQUZjUVZ2QlFjQWNnVnhCWEFGQndCeUJYTUZjUVVIQUhRRmN3VnlCUWNBZEFWMUJYTUZCd0IyQlhRRmR3VUhBSFlGZFFWMEJRY0FlQVYzQlhrRkJ3QjRCWFlGZHdVSEFIb0ZlUVY3QlFjQWVnVjRCWGtGQndCOEJYc0ZmUVVIQUh3RmVnVjdCUWNBZmdWOUJYOEZCd0IrQlh3RmZRVUhBSUFGZndXQkJRY0FnQVYrQlg4RkJ3QkdCWUVGU1FVSEFFWUZnQVdCQlFjQWR3VnlCWUlGQndCM0JYUUZjZ1VIQUhzRmR3V0NCUWNBZXdWNUJYY0ZCd0IvQlhzRmdnVUhBSDhGZlFWN0JRY0FTUVYvQllJRkJ3QkpCWUVGZndVSEFFb0ZTUVdDQlFjQVNnVkhCVWtGQndCT0JVb0ZnZ1VIQUU0RlRBVktCUWNBVWdWT0JZSUZCd0JTQlZBRlRnVUhBRllGVWdXQ0JRY0FWZ1ZVQlZJRkJ3QmJCVllGZ2dVSEFGc0ZXUVZXQlFjQVh3VmJCWUlGQndCZkJWMEZXd1VIQUdNRlh3V0NCUWNBWXdWaEJWOEZCd0JuQldNRmdnVUhBR2NGWlFWakJRY0FhZ1ZuQllJRkJ3QnFCV2dGWndVSEFHNEZhZ1dDQlFjQWJnVnNCV29GQndCeUJXNEZnZ1VIQUhJRmNBVnVCUWNBZ3dXQUJVWUZCd0NEQllRRmdBVUhBSVVGUmdWSUJRY0FoUVdEQlVZRkJ3Q0VCWDRGZ0FVSEFJUUZoZ1YrQlFjQWhnVjhCWDRGQndDR0JZY0ZmQVVIQUljRmVnVjhCUWNBaHdXSUJYb0ZCd0NJQlhnRmVnVUhBSWdGaVFWNEJRY0FpUVYyQlhnRkJ3Q0pCWW9GZGdVSEFJb0ZkUVYyQlFjQWlnV0xCWFVGQndDTUJWY0ZXQVVIQUl3RmpRVlhCUWNBamdWWUJWb0ZCd0NPQll3RldBVUhBSTBGVlFWWEJRY0FqUVdQQlZVRkJ3Q1BCVk1GVlFVSEFJOEZrQVZUQlFjQWtBVlJCVk1GQndDUUJaRUZVUVVIQUpFRlR3VlJCUWNBa1FXU0JVOEZCd0NTQlUwRlR3VUhBSklGa3dWTkJRY0Frd1ZMQlUwRkJ3Q1RCWlFGU3dVSEFKUUZTQVZMQlFjQWxBV0ZCVWdGQndDTEJYTUZkUVVIQUlzRmxRVnpCUWNBbFFWeEJYTUZCd0NWQlpZRmNRVUhBSllGYndWeEJRY0FsZ1dYQlc4RkJ3Q1hCVzBGYndVSEFKY0ZtQVZ0QlFjQW1BVnJCVzBGQndDWUJaa0Zhd1VIQUprRmFRVnJCUWNBbVFXYUJXa0ZCd0NhQldZRmFRVUhBSm9GbXdWbUJRY0Ftd1ZrQldZRkJ3Q2JCWndGWkFVSEFKd0ZZZ1ZrQlFjQW5BV2RCV0lGQndDZEJXQUZZZ1VIQUowRm5nVmdCUWNBbmdWZUJXQUZCd0NlQlo4RlhnVUhBSjhGWEFWZUJRY0Fud1dnQlZ3RkJ3Q2dCVm9GWEFVSEFLQUZqZ1ZhQlFjQW9RV0VCWU1GQndDaEJhSUZoQVVIQUtNRmd3V0ZCUWNBb3dXaEJZTUZCd0NpQllZRmhBVUhBS0lGcEFXR0JRY0FwUVdGQlpRRkJ3Q2xCYU1GaFFVSEFLUUZod1dHQlFjQXBBV21CWWNGQndDbUJZZ0Zod1VIQUtZRnB3V0lCUWNBcHdXSkJZZ0ZCd0NuQmFnRmlRVUhBS2dGaWdXSkJRY0FxQVdwQllvRkJ3Q3BCWXNGaWdVSEFLa0ZxZ1dMQlFjQXFnV1ZCWXNGQndDcUJhc0ZsUVVIQUt3RmpRV01CUWNBckFXdEJZMEZCd0N1Qll3RmpnVUhBSzRGckFXTUJRY0FyUVdQQlkwRkJ3Q3RCYThGandVSEFMQUZqZ1dnQlFjQXNBV3VCWTRGQndDdkJaQUZqd1VIQUs4RnNRV1FCUWNBc1FXUkJaQUZCd0N4QmJJRmtRVUhBTElGa2dXUkJRY0FzZ1d6QlpJRkJ3Q3pCWk1Ga2dVSEFMTUZ0QVdUQlFjQXRBV1VCWk1GQndDMEJhVUZsQVVIQUtzRmxnV1ZCUWNBcXdXMUJaWUZCd0MxQlpjRmxnVUhBTFVGdGdXWEJRY0F0Z1dZQlpjRkJ3QzJCYmNGbUFVSEFMY0ZtUVdZQlFjQXR3VzRCWmtGQndDNEJab0ZtUVVIQUxnRnVRV2FCUWNBdVFXYkJab0ZCd0M1QmJvRm13VUhBTG9GbkFXYkJRY0F1Z1c3Qlp3RkJ3QzdCWjBGbkFVSEFMc0Z2QVdkQlFjQXZBV2VCWjBGQndDOEJiMEZuZ1VIQUwwRm53V2VCUWNBdlFXK0JaOEZCd0MrQmFBRm53VUhBTDRGc0FXZ0JRY0F2d1hBQmNFRkJ3Qy9CY0lGd0FVSEFMOEZ3d1hDQlFjQXZ3WEVCY01GQndERUJjVUZ3d1VIQU1RRnhnWEZCUWNBeGdYSEJjVUZCd0RHQmNnRnh3VUhBTWdGeVFYSEJRY0F5QVhLQmNrRkJ3REtCY3NGeVFVSEFNb0Z6QVhMQlFjQXpBWE5CY3NGQndETUJjNEZ6UVVIQU0wRnp3WFFCUWNBelFYT0JjOEZCd0RRQmRFRjBnVUhBTkFGendYUkJRY0EwZ1hUQmRRRkJ3RFNCZEVGMHdVSEFOUUYxUVhXQlFjQTFBWFRCZFVGQndEV0JkY0YyQVVIQU5ZRjFRWFhCUWNBMlFYWEJkb0ZCd0RaQmRnRjF3VUhBTnNGMmdYY0JRY0Eyd1haQmRvRkJ3RGRCZHdGM2dVSEFOMEYyd1hjQlFjQTN3WGVCZUFGQndEZkJkMEYzZ1VIQU9FRjRBWGlCUWNBNFFYZkJlQUZCd0RqQmVJRjVBVUhBT01GNFFYaUJRY0E1UVhrQmVZRkJ3RGxCZU1GNUFVSEFPY0Y1UVhtQlFjQTV3WG9CZVVGQndEcEJlZ0Y1d1VIQU9rRjZnWG9CUWNBNndYcUJla0ZCd0RyQmV3RjZnVUhBTzBGN0FYckJRY0E3UVh1QmV3RkJ3REJCZTRGN1FVSEFNRUZ3QVh1QlFjQTd3WEJCZkFGQndEdkJiOEZ3UVVIQVBFRnZ3WHZCUWNBOFFYRUJiOEZCd0R5QmNRRjhRVUhBUElGeGdYRUJRY0E4d1hHQmZJRkJ3RHpCY2dGeGdVSEFQUUZ5QVh6QlFjQTlBWEtCY2dGQndEMUJjb0Y5QVVIQVBVRnpBWEtCUWNBOWdYTUJmVUZCd0QyQmM0RnpBVUhBTThGOWdYM0JRY0F6d1hPQmZZRkJ3RFJCZmNGK0FVSEFORUZ6d1gzQlFjQTB3WDRCZmtGQndEVEJkRUYrQVVIQU5VRitRWDZCUWNBMVFYVEJma0ZCd0RYQmZvRit3VUhBTmNGMVFYNkJRY0EyZ1g3QmZ3RkJ3RGFCZGNGK3dVSEFOd0YvQVg5QlFjQTNBWGFCZndGQndEZUJmMEYvZ1VIQU40RjNBWDlCUWNBNEFYK0JmOEZCd0RnQmQ0Ri9nVUhBT0lGL3dVQUJnY0E0Z1hnQmY4RkJ3RGtCUUFHQVFZSEFPUUY0Z1VBQmdjQTVnVUJCZ0lHQndEbUJlUUZBUVlIQUFNRzVnVUNCZ2NBQXdibkJlWUZCd0FFQnVjRkF3WUhBQVFHNlFYbkJRY0FCUWJwQlFRR0J3QUZCdXNGNlFVSEFBWUc2d1VGQmdjQUJnYnRCZXNGQndEd0JlMEZCZ1lIQVBBRndRWHRCUWNBQndid0JRZ0dCd0FIQnU4RjhBVUhBQWNHOFFYdkJRY0FCd1lKQnZFRkJ3QUpCdklGOFFVSEFBa0dDZ2J5QlFjQUNnYnpCZklGQndBS0Jnc0c4d1VIQUFzRzlBWHpCUWNBQ3dZTUJ2UUZCd0FNQnZVRjlBVUhBQXdHRFFiMUJRY0FEUWIyQmZVRkJ3QU5CZzRHOWdVSEFQWUZEd2IzQlFjQTlnVU9CZzhHQndEM0JSQUcrQVVIQVBjRkR3WVFCZ2NBK0FVUkJ2a0ZCd0Q0QlJBR0VRWUhBUGtGRWdiNkJRY0ErUVVSQmhJR0J3RDZCUk1HK3dVSEFQb0ZFZ1lUQmdjQS9BVVRCaFFHQndEOEJmc0ZFd1lIQVAwRkZBWVZCZ2NBL1FYOEJSUUdCd0QrQlJVR0ZnWUhBUDRGL1FVVkJnY0Evd1VXQmhjR0J3RC9CZjRGRmdZSEFBQUdGd1lZQmdjQUFBYi9CUmNHQndBQkJoZ0dHUVlIQUFFR0FBWVlCZ2NBQWdZWkJob0dCd0FDQmdFR0dRWUhBQnNHQWdZYUJnY0FHd1lEQmdJR0J3QWNCZ01HR3dZSEFCd0dCQVlEQmdjQUhRWUVCaHdHQndBZEJnVUdCQVlIQUI0R0JRWWRCZ2NBSGdZR0JnVUdCd0FJQmdZR0hnWUhBQWdHOEFVR0JnY0FId1lIQmdnR0J3QWZCaUFHQndZSEFDQUdDUVlIQmdjQUlBWWhCZ2tHQndBaEJnb0dDUVlIQUNFR0lnWUtCZ2NBSWdZTEJnb0dCd0FpQmlNR0N3WUhBQ01HREFZTEJnY0FJd1lrQmd3R0J3QWtCZzBHREFZSEFDUUdKUVlOQmdjQUpRWU9CZzBHQndBbEJpWUdEZ1lIQUE0R0p3WVBCZ2NBRGdZbUJpY0dCd0FQQmlnR0VBWUhBQThHSndZb0JnY0FFQVlwQmhFR0J3QVFCaWdHS1FZSEFCRUdLZ1lTQmdjQUVRWXBCaW9HQndBU0Jpc0dFd1lIQUJJR0tnWXJCZ2NBRXdZc0JoUUdCd0FUQmlzR0xBWUhBQlFHTFFZVkJnY0FGQVlzQmkwR0J3QVZCaTRHRmdZSEFCVUdMUVl1QmdjQUZnWXZCaGNHQndBV0JpNEdMd1lIQUJjR01BWVlCZ2NBRndZdkJqQUdCd0FZQmpFR0dRWUhBQmdHTUFZeEJnY0FHUVl5QmhvR0J3QVpCakVHTWdZSEFESUdHd1lhQmdjQU1nWXpCaHNHQndBekJod0dHd1lIQURNR05BWWNCZ2NBTkFZZEJod0dCd0EwQmpVR0hRWUhBRFVHSGdZZEJnY0FOUVkyQmg0R0J3QTJCZ2dHSGdZSEFEWUdId1lJQmdjQU53WTRCamtHQndBM0Jqb0dPQVlIQURzR09nWTNCZ2NBT3dZOEJqb0dCd0E5Qmp3R093WUhBRDBHUGdZOEJnY0FQd1krQmowR0J3QS9Ca0FHUGdZSEFFRUdRQVkvQmdjQVFRWkNCa0FHQndCREJrSUdRUVlIQUVNR1JBWkNCZ2NBUlFaRUJrTUdCd0JGQmtZR1JBWUhBRWNHUlFaSUJnY0FSd1pHQmtVR0J3QkpCa2dHU2dZSEFFa0dSd1pJQmdjQVN3WktCa3dHQndCTEJra0dTZ1lIQUUwR1RBWk9CZ2NBVFFaTEJrd0dCd0JQQms0R1VBWUhBRThHVFFaT0JnY0FVUVpRQmxJR0J3QlJCazhHVUFZSEFGTUdVZ1pVQmdjQVV3WlJCbElHQndCVkJsUUdWZ1lIQUZVR1V3WlVCZ2NBVndaV0JsZ0dCd0JYQmxVR1ZnWUhBRmtHV0FaYUJnY0FXUVpYQmxnR0J3QmJCbG9HWEFZSEFGc0dXUVphQmdjQVhRWmNCbDRHQndCZEJsc0dYQVlIQUY4R1hRWmVCZ2NBWHdaZ0JsMEdCd0JoQm1BR1h3WUhBR0VHWWdaZ0JnY0FZd1ppQm1FR0J3QmpCbVFHWWdZSEFHVUdaQVpqQmdjQVpRWm1CbVFHQndBNUJtWUdaUVlIQURrR09BWm1CZ2NBWndZM0Jqa0dCd0JuQm1nR053WUhBR2tHTndab0JnY0FhUVk3QmpjR0J3QnFCanNHYVFZSEFHb0dQUVk3QmdjQWF3WTlCbW9HQndCckJqOEdQUVlIQUd3R1B3WnJCZ2NBYkFaQkJqOEdCd0J0QmtFR2JBWUhBRzBHUXdaQkJnY0FiZ1pEQm0wR0J3QnVCa1VHUXdZSEFFZ0diZ1p2QmdjQVNBWkZCbTRHQndCS0JtOEdjQVlIQUVvR1NBWnZCZ2NBVEFad0JuRUdCd0JNQmtvR2NBWUhBRTRHY1FaeUJnY0FUZ1pNQm5FR0J3QlFCbklHY3dZSEFGQUdUZ1p5QmdjQVVBWjBCbElHQndCUUJuTUdkQVlIQUZJR2RRWlVCZ2NBVWdaMEJuVUdCd0JVQm5ZR1ZnWUhBRlFHZFFaMkJnY0FWZ1ozQmxnR0J3QldCbllHZHdZSEFGZ0dlQVphQmdjQVdBWjNCbmdHQndCYUJua0dYQVlIQUZvR2VBWjVCZ2NBWEFaNkJsNEdCd0JjQm5rR2VnWUhBSG9HWHdaZUJnY0FlZ1o3Qmw4R0J3QjdCbUVHWHdZSEFIc0dmQVpoQmdjQWZBWmpCbUVHQndCOEJuMEdZd1lIQUgwR1pRWmpCZ2NBZlFaK0JtVUdCd0IrQmprR1pRWUhBSDRHWndZNUJnY0Fmd1puQm9BR0J3Qi9CbWdHWndZSEFJRUdhQVovQmdjQWdRWnBCbWdHQndDQ0Jta0dnUVlIQUlJR2FnWnBCZ2NBZ3dacUJvSUdCd0NEQm1zR2FnWUhBSVFHYXdhREJnY0FoQVpzQm1zR0J3Q0ZCbXdHaEFZSEFJVUdiUVpzQmdjQWhnWnRCb1VHQndDR0JtNEdiUVlIQUc4R2hnYUhCZ2NBYndadUJvWUdCd0J3Qm9jR2lBWUhBSEFHYndhSEJnY0FjUWFJQm9rR0J3QnhCbkFHaUFZSEFISUdpUWFLQmdjQWNnWnhCb2tHQndCekJvb0dpd1lIQUhNR2NnYUtCZ2NBZEFhTEJvd0dCd0IwQm5NR2l3WUhBSFVHakFhTkJnY0FkUVowQm93R0J3QjJCbzBHamdZSEFIWUdkUWFOQmdjQWR3YU9CbzhHQndCM0JuWUdqZ1lIQUhnR2p3YVFCZ2NBZUFaM0JvOEdCd0I1QnBBR2tRWUhBSGtHZUFhUUJnY0FlZ2FSQnBJR0J3QjZCbmtHa1FZSEFKTUdlZ2FTQmdjQWt3WjdCbm9HQndDVUJuc0drd1lIQUpRR2ZBWjdCZ2NBbFFaOEJwUUdCd0NWQm4wR2ZBWUhBSllHZlFhVkJnY0FsZ1orQm4wR0J3Q0FCbjRHbGdZSEFJQUdad1orQmdjQWx3YUFCcGdHQndDWEJuOEdnQVlIQUpjR2dRWi9CZ2NBbHdhWkJvRUdCd0NaQm9JR2dRWUhBSmtHbWdhQ0JnY0FtZ2FEQm9JR0J3Q2FCcHNHZ3dZSEFKc0doQWFEQmdjQW13YWNCb1FHQndDY0JvVUdoQVlIQUp3R25RYUZCZ2NBblFhR0JvVUdCd0NkQnA0R2hnWUhBSVlHbndhSEJnY0FoZ2FlQnA4R0J3Q0hCcUFHaUFZSEFJY0dud2FnQmdjQWlBYWhCb2tHQndDSUJxQUdvUVlIQUlrR29nYUtCZ2NBaVFhaEJxSUdCd0NLQnFNR2l3WUhBSW9Hb2dhakJnY0FqQWFqQnFRR0J3Q01Cb3NHb3dZSEFJMEdwQWFsQmdjQWpRYU1CcVFHQndDT0JxVUdwZ1lIQUk0R2pRYWxCZ2NBandhbUJxY0dCd0NQQm80R3BnWUhBSkFHcHdhb0JnY0FrQWFQQnFjR0J3Q1JCcWdHcVFZSEFKRUdrQWFvQmdjQWtnYXBCcW9HQndDU0JwRUdxUVlIQUtzR2tnYXFCZ2NBcXdhVEJwSUdCd0NzQnBNR3F3WUhBS3dHbEFhVEJnY0FyUWFVQnF3R0J3Q3RCcFVHbEFZSEFLNEdsUWF0QmdjQXJnYVdCcFVHQndDWUJwWUdyZ1lIQUpnR2dBYVdCZ2NBcndhWUJyQUdCd0N2QnBjR21BWUhBTEVHbHdhdkJnY0FzUWFaQnBjR0J3Q3lCcGtHc1FZSEFMSUdtZ2FaQmdjQXN3YWFCcklHQndDekJwc0dtZ1lIQUxRR213YXpCZ2NBdEFhY0Jwc0dCd0MxQnB3R3RBWUhBTFVHblFhY0JnY0F0Z2FkQnJVR0J3QzJCcDRHblFZSEFKOEd0Z2EzQmdjQW53YWVCcllHQndDZ0JyY0d1QVlIQUtBR253YTNCZ2NBb1FhNEJya0dCd0NoQnFBR3VBWUhBS0lHdVFhNkJnY0FvZ2FoQnJrR0J3Q2pCcm9HdXdZSEFLTUdvZ2E2QmdjQXBBYTdCcndHQndDa0JxTUd1d1lIQUtVR3ZBYTlCZ2NBcFFha0Jyd0dCd0NtQnIwR3ZnWUhBS1lHcFFhOUJnY0Fwd2ErQnI4R0J3Q25CcVlHdmdZSEFLZ0d2d2JBQmdjQXFBYW5CcjhHQndDcEJzQUd3UVlIQUtrR3FBYkFCZ2NBcWdiQkJzSUdCd0NxQnFrR3dRWUhBTU1HcWdiQ0JnY0F3d2FyQnFvR0J3REVCcXNHd3dZSEFNUUdyQWFyQmdjQXhRYXNCc1FHQndERkJxMEdyQVlIQU1ZR3JRYkZCZ2NBeGdhdUJxMEdCd0N3QnE0R3hnWUhBTEFHbUFhdUJnY0F4d2F2QnJBR0J3REhCc2dHcndZSEFNa0dyd2JJQmdjQXlRYXhCcThHQndES0JyRUd5UVlIQU1vR3NnYXhCZ2NBeXdheUJzb0dCd0RMQnJNR3NnWUhBTXdHc3diTEJnY0F6QWEwQnJNR0J3RE5CclFHekFZSEFNMEd0UWEwQmdjQXpnYTFCczBHQndET0JyWUd0UVlIQUxjR3pnYlBCZ2NBdHdhMkJzNEdCd0M0QnM4RzBBWUhBTGdHdHdiUEJnY0F1UWJRQnRFR0J3QzVCcmdHMEFZSEFMb0cwUWJTQmdjQXVnYTVCdEVHQndDN0J0SUcwd1lIQUxzR3VnYlNCZ2NBdXdiVUJyd0dCd0M3QnRNRzFBWUhBTHdHMVFhOUJnY0F2QWJVQnRVR0J3QzlCdFlHdmdZSEFMMEcxUWJXQmdjQXZnYlhCcjhHQndDK0J0WUcxd1lIQUw4RzJBYkFCZ2NBdndiWEJ0Z0dCd0RBQnRrR3dRWUhBTUFHMkFiWkJnY0F3UWJhQnNJR0J3REJCdGtHMmdZSEFOb0d3d2JDQmdjQTJnYmJCc01HQndEYkJzUUd3d1lIQU5zRzNBYkVCZ2NBM0FiRkJzUUdCd0RjQnQwR3hRWUhBTjBHeGdiRkJnY0EzUWJlQnNZR0J3RGVCckFHeGdZSEFONEd4d2F3QmdjQUt3YmZCaXdHQndBckJ1QUczd1lIQUNvRzRBWXJCZ2NBS2diaEJ1QUdCd0FwQnVFR0tnWUhBQ2tHNGdiaEJnY0FLQWJpQmlrR0J3QW9CdU1HNGdZSEFDY0c0d1lvQmdjQUp3YmtCdU1HQndBbUJ1UUdKd1lIQUNZRzVRYmtCZ2NBSlFibEJpWUdCd0FsQnVZRzVRWUhBQ1FHNWdZbEJnY0FKQWJuQnVZR0J3QWpCdWNHSkFZSEFDTUc2QWJuQmdjQUlnYm9CaU1HQndBaUJ1a0c2QVlIQUNFRzZRWWlCZ2NBSVFicUJ1a0dCd0FnQnVvR0lRWUhBQ0FHNndicUJnY0FId2JyQmlBR0J3QWZCdXdHNndZSEFEWUc3QVlmQmdjQU5nYnRCdXdHQndBMUJ1MEdOZ1lIQURVRzdnYnRCZ2NBTkFidUJqVUdCd0EwQnU4RzdnWUhBRE1HN3dZMEJnY0FNd2J3QnU4R0J3QXlCdkFHTXdZSEFESUc4UWJ3QmdjQU1RYnhCaklHQndBeEJ2SUc4UVlIQURBRzhnWXhCZ2NBTUFiekJ2SUdCd0F2QnZNR01BWUhBQzhHOUFiekJnY0FMZ2IwQmk4R0J3QXVCdlVHOUFZSEFDMEc5UVl1QmdjQUxRYjJCdlVHQndBc0J2WUdMUVlIQUN3RzN3YjJCZ2NBVVFiM0JrOEdCd0JSQnZnRzl3WUhBUGdHNEFiM0JnY0ErQWJmQnVBR0J3QlRCdmdHVVFZSEFGTUcrUWI0QmdjQStRYmZCdmdHQndENUJ2WUczd1lIQUZVRytRWlRCZ2NBVlFiNkJ2a0dCd0Q2QnZZRytRWUhBUG9HOVFiMkJnY0FWd2I2QmxVR0J3QlhCdnNHK2dZSEFQc0c5UWI2QmdjQSt3YjBCdlVHQndCWkJ2c0dWd1lIQUZrRy9BYjdCZ2NBL0FiMEJ2c0dCd0Q4QnZNRzlBWUhBRnNHL0FaWkJnY0FXd2I5QnZ3R0J3RDlCdk1HL0FZSEFQMEc4Z2J6QmdjQVhRYjlCbHNHQndCZEJ2NEcvUVlIQVA0RzhnYjlCZ2NBL2dieEJ2SUdCd0JnQnY0R1hRWUhBR0FHL3diK0JnY0Evd2J4QnY0R0J3RC9CdkFHOFFZSEFHSUcvd1pnQmdjQVlnWUFCLzhHQndBQUIvQUcvd1lIQUFBSDd3YndCZ2NBWkFZQUIySUdCd0JrQmdFSEFBY0hBQUVIN3dZQUJ3Y0FBUWZ1QnU4R0J3Qm1CZ0VIWkFZSEFHWUdBZ2NCQndjQUFnZnVCZ0VIQndBQ0IrMEc3Z1lIQURnR0FnZG1CZ2NBT0FZREJ3SUhCd0FEQiswR0FnY0hBQU1IN0FidEJnY0FPZ1lEQnpnR0J3QTZCZ1FIQXdjSEFBUUg3QVlEQndjQUJBZnJCdXdHQndBOEJnUUhPZ1lIQUR3R0JRY0VCd2NBQlFmckJnUUhCd0FGQitvRzZ3WUhBRDRHQlFjOEJnY0FQZ1lHQndVSEJ3QUdCK29HQlFjSEFBWUg2UWJxQmdjQVFBWUdCejRHQndCQUJnY0hCZ2NIQUFjSDZRWUdCd2NBQndmb0J1a0dCd0JDQmdjSFFBWUhBRUlHQ0FjSEJ3Y0FDQWZvQmdjSEJ3QUlCK2NHNkFZSEFFUUdDQWRDQmdjQVJBWUpCd2dIQndBSkIrY0dDQWNIQUFrSDVnYm5CZ2NBUmdZSkIwUUdCd0JHQmdvSENRY0hBQW9INWdZSkJ3Y0FDZ2ZsQnVZR0J3QkhCZ29IUmdZSEFFY0dDd2NLQndjQUN3ZmxCZ29IQndBTEIrUUc1UVlIQUVrR0N3ZEhCZ2NBU1FZTUJ3c0hCd0FNQitRR0N3Y0hBQXdINHdia0JnY0FTd1lNQjBrR0J3QkxCZzBIREFjSEFBMEg0d1lNQndjQURRZmlCdU1HQndCTkJnMEhTd1lIQUUwR0RnY05Cd2NBRGdmaUJnMEhCd0FPQitFRzRnWUhBRThHRGdkTkJnY0FUd2IzQmc0SEJ3RDNCdUVHRGdjSEFQY0c0QWJoQmdjQUR3Y1FCeEVIQndBUEJ4SUhFQWNIQUJJSEV3Y1FCd2NBRWdjVUJ4TUhCd0FVQnhVSEV3Y0hBQlFIRmdjVkJ3Y0FGZ2NYQnhVSEJ3QVdCeGdIRndjSEFCZ0hHUWNYQndjQUdBY2FCeGtIQndBYUJ4c0hHUWNIQUJvSEhBY2JCd2NBR3djZEJ4NEhCd0FiQnh3SEhRY0hBQjRISHdjZ0J3Y0FIZ2NkQng4SEJ3QWdCeUVISWdjSEFDQUhId2NoQndjQUlnY2pCeVFIQndBaUJ5RUhJd2NIQUNRSEpRY21Cd2NBSkFjakJ5VUhCd0FtQnljSEtBY0hBQ1lISlFjbkJ3Y0FLQWNwQnlvSEJ3QW9CeWNIS1FjSEFDb0hLd2NzQndjQUtnY3BCeXNIQndBc0J5MEhMZ2NIQUN3SEt3Y3RCd2NBTGdjdkJ6QUhCd0F1QnkwSEx3Y0hBREFITVFjeUJ3Y0FNQWN2QnpFSEJ3QXlCek1ITkFjSEFESUhNUWN6QndjQU13YzFCelFIQndBekJ6WUhOUWNIQURZSE53YzFCd2NBTmdjNEJ6Y0hCd0E0QnprSE53Y0hBRGdIT2djNUJ3Y0FPZ2M3QnprSEJ3QTZCendIT3djSEFEd0hQUWM3QndjQVBBYytCejBIQndBK0J4RUhQUWNIQUQ0SER3Y1JCd2NBUHdjK0IwQUhCd0EvQnc4SFBnY0hBRDhIRWdjUEJ3Y0FQd2RCQnhJSEJ3QkJCeFFIRWdjSEFFRUhRZ2NVQndjQVFnY1dCeFFIQndCQ0IwTUhGZ2NIQUVNSEdBY1dCd2NBUXdkRUJ4Z0hCd0JFQnhvSEdBY0hBRVFIUlFjYUJ3Y0FSUWNjQnhvSEJ3QkZCMFlISEFjSEFCd0hSd2NkQndjQUhBZEdCMGNIQndBZEIwZ0hId2NIQUIwSFJ3ZElCd2NBSHdkSkJ5RUhCd0FmQjBnSFNRY0hBQ0VIU2djakJ3Y0FJUWRKQjBvSEJ3QWpCMHNISlFjSEFDTUhTZ2RMQndjQUp3ZExCMHdIQndBbkJ5VUhTd2NIQUNrSFRBZE5Cd2NBS1FjbkIwd0hCd0FyQjAwSFRnY0hBQ3NIS1FkTkJ3Y0FMUWRPQjA4SEJ3QXRCeXNIVGdjSEFDOEhUd2RRQndjQUx3Y3RCMDhIQndBeEIxQUhVUWNIQURFSEx3ZFFCd2NBTXdkUkIxSUhCd0F6QnpFSFVRY0hBRk1ITXdkU0J3Y0FVd2MyQnpNSEJ3QlVCellIVXdjSEFGUUhPQWMyQndjQVZRYzRCMVFIQndCVkJ6b0hPQWNIQUZZSE9nZFZCd2NBVmdjOEJ6b0hCd0JBQnp3SFZnY0hBRUFIUGdjOEJ3Y0FWd2RBQjFnSEJ3QlhCejhIUUFjSEFGa0hQd2RYQndjQVdRZEJCejhIQndCYUIwRUhXUWNIQUZvSFFnZEJCd2NBV3dkQ0Ixb0hCd0JiQjBNSFFnY0hBRndIUXdkYkJ3Y0FYQWRFQjBNSEJ3QmRCMFFIWEFjSEFGMEhSUWRFQndjQVhnZEZCMTBIQndCZUIwWUhSUWNIQUVjSFhnZGZCd2NBUndkR0IxNEhCd0JJQjE4SFlBY0hBRWdIUndkZkJ3Y0FTUWRnQjJFSEJ3QkpCMGdIWUFjSEFFb0hZUWRpQndjQVNnZEpCMkVIQndCTEIySUhZd2NIQUVzSFNnZGlCd2NBVEFkakIyUUhCd0JNQjBzSFl3Y0hBRTBIWkFkbEJ3Y0FUUWRNQjJRSEJ3Qk9CMlVIWmdjSEFFNEhUUWRsQndjQVR3ZG1CMmNIQndCUEIwNEhaZ2NIQUZBSFp3ZG9Cd2NBVUFkUEIyY0hCd0JSQjJnSGFRY0hBRkVIVUFkb0J3Y0FVZ2RwQjJvSEJ3QlNCMUVIYVFjSEFHc0hVZ2RxQndjQWF3ZFRCMUlIQndCc0IxTUhhd2NIQUd3SFZBZFRCd2NBYlFkVUIyd0hCd0J0QjFVSFZBY0hBRzRIVlFkdEJ3Y0FiZ2RXQjFVSEJ3QllCMVlIYmdjSEFGZ0hRQWRXQndjQWJ3ZFlCM0FIQndCdkIxY0hXQWNIQUc4SFdRZFhCd2NBYndkeEIxa0hCd0J4QjFvSFdRY0hBSEVIY2dkYUJ3Y0FjZ2RiQjFvSEJ3QnlCM01IV3djSEFITUhYQWRiQndjQWN3ZDBCMXdIQndCMEIxMEhYQWNIQUhRSGRRZGRCd2NBZFFkZUIxMEhCd0IxQjNZSFhnY0hBRjRIZHdkZkJ3Y0FYZ2QyQjNjSEJ3QmZCM2dIWUFjSEFGOEhkd2Q0QndjQVlBZDVCMkVIQndCZ0IzZ0hlUWNIQUdFSGVnZGlCd2NBWVFkNUIzb0hCd0JpQjNzSFl3Y0hBR0lIZWdkN0J3Y0FaQWQ3QjN3SEJ3QmtCMk1IZXdjSEFHVUhmQWQ5QndjQVpRZGtCM3dIQndCbUIzMEhmZ2NIQUdZSFpRZDlCd2NBWndkK0IzOEhCd0JuQjJZSGZnY0hBR2dIZndlQUJ3Y0FhQWRuQjM4SEJ3QnBCNEFIZ1FjSEFHa0hhQWVBQndjQWFnZUJCNElIQndCcUIya0hnUWNIQUlNSGFnZUNCd2NBZ3dkckIyb0hCd0NFQjJzSGd3Y0hBSVFIYkFkckJ3Y0FoUWRzQjRRSEJ3Q0ZCMjBIYkFjSEFJWUhiUWVGQndjQWhnZHVCMjBIQndCd0IyNEhoZ2NIQUhBSFdBZHVCd2NBaHdkd0I0Z0hCd0NIQjI4SGNBY0hBSWtIYndlSEJ3Y0FpUWR4QjI4SEJ3Q0tCM0VIaVFjSEFJb0hjZ2R4QndjQWl3ZHlCNG9IQndDTEIzTUhjZ2NIQUl3SGN3ZUxCd2NBakFkMEIzTUhCd0NOQjNRSGpBY0hBSTBIZFFkMEJ3Y0FqZ2QxQjQwSEJ3Q09CM1lIZFFjSEFIY0hqZ2VQQndjQWR3ZDJCNDRIQndCNEI0OEhrQWNIQUhnSGR3ZVBCd2NBZVFlUUI1RUhCd0I1QjNnSGtBY0hBSG9Ia1FlU0J3Y0FlZ2Q1QjVFSEJ3QjdCNUlIa3djSEFIc0hlZ2VTQndjQWZBZVRCNVFIQndCOEIzc0hrd2NIQUgwSGxBZVZCd2NBZlFkOEI1UUhCd0IrQjVVSGxnY0hBSDRIZlFlVkJ3Y0Fmd2VXQjVjSEJ3Qi9CMzRIbGdjSEFJQUhsd2VZQndjQWdBZC9CNWNIQndDQkI1Z0htUWNIQUlFSGdBZVlCd2NBZ2dlWkI1b0hCd0NDQjRFSG1RY0hBSnNIZ2dlYUJ3Y0Ftd2VEQjRJSEJ3Q2NCNE1IbXdjSEFKd0hoQWVEQndjQW5RZUVCNXdIQndDZEI0VUhoQWNIQUo0SGhRZWRCd2NBbmdlR0I0VUhCd0NJQjRZSG5nY0hBSWdIY0FlR0J3Y0Fud2VIQjRnSEJ3Q2ZCNkFIaHdjSEFLRUhod2VnQndjQW9RZUpCNGNIQndDaUI0a0hvUWNIQUtJSGlnZUpCd2NBb3dlS0I2SUhCd0NqQjRzSGlnY0hBS1FIaXdlakJ3Y0FwQWVNQjRzSEJ3Q2xCNHdIcEFjSEFLVUhqUWVNQndjQXBnZU5CNlVIQndDbUI0NEhqUWNIQUk4SHBnZW5Cd2NBandlT0I2WUhCd0NRQjZjSHFBY0hBSkFIandlbkJ3Y0FrUWVvQjZrSEJ3Q1JCNUFIcUFjSEFKSUhxUWVxQndjQWtnZVJCNmtIQndDVEI2b0hxd2NIQUpNSGtnZXFCd2NBa3dlc0I1UUhCd0NUQjZzSHJBY0hBSlFIclFlVkJ3Y0FsQWVzQjYwSEJ3Q1ZCNjRIbGdjSEFKVUhyUWV1QndjQWxnZXZCNWNIQndDV0I2NEhyd2NIQUpjSHNBZVlCd2NBbHdldkI3QUhCd0NZQjdFSG1RY0hBSmdIc0FleEJ3Y0FtUWV5QjVvSEJ3Q1pCN0VIc2djSEFMSUhtd2VhQndjQXNnZXpCNXNIQndDekI1d0htd2NIQUxNSHRBZWNCd2NBdEFlZEI1d0hCd0MwQjdVSG5RY0hBTFVIbmdlZEJ3Y0F0UWUyQjU0SEJ3QzJCNGdIbmdjSEFMWUhud2VJQndjQXdnV2ZCOEFGQndEQ0JhQUhud2NIQU1NRm9BZkNCUWNBd3dXaEI2QUhCd0RGQmFFSHd3VUhBTVVGb2dlaEJ3Y0F4d1dpQjhVRkJ3REhCYU1Ib2djSEFNa0Zvd2ZIQlFjQXlRV2tCNk1IQndETEJhUUh5UVVIQU1zRnBRZWtCd2NBelFXbEI4c0ZCd0ROQmFZSHBRY0hBS2NIelFYUUJRY0Fwd2VtQjgwRkJ3Q29COUFGMGdVSEFLZ0hwd2ZRQlFjQXFRZlNCZFFGQndDcEI2Z0gwZ1VIQUtvSDFBWFdCUWNBcWdlcEI5UUZCd0NyQjlZRjJBVUhBS3NIcWdmV0JRY0FyQWZZQmRrRkJ3Q3NCNnNIMkFVSEFLMEgyUVhiQlFjQXJRZXNCOWtGQndDdUI5c0YzUVVIQUs0SHJRZmJCUWNBcndmZEJkOEZCd0N2QjY0SDNRVUhBTEFIM3dYaEJRY0FzQWV2Qjk4RkJ3Q3hCK0VGNHdVSEFMRUhzQWZoQlFjQXNnZmpCZVVGQndDeUI3RUg0d1VIQU9nRnNnZmxCUWNBNkFXekI3SUhCd0RxQmJNSDZBVUhBT29GdEFlekJ3Y0E3QVcwQitvRkJ3RHNCYlVIdEFjSEFPNEZ0UWZzQlFjQTdnVzJCN1VIQndEQUJiWUg3Z1VIQU1BRm53ZTJCd2NBdHdmSEJyZ0hCd0MzQjhnR3h3WUhBTGtIeUFhM0J3Y0F1UWZKQnNnR0J3QzZCOGtHdVFjSEFMb0h5Z2JKQmdjQXV3ZktCcm9IQndDN0I4c0d5Z1lIQUx3SHl3YTdCd2NBdkFmTUJzc0dCd0M5Qjh3R3ZBY0hBTDBIelFiTUJnY0F2Z2ZOQnIwSEJ3QytCODRHelFZSEFNOEd2Z2UvQndjQXp3Yk9CcjRIQndEUUJyOEh3QWNIQU5BR3p3YS9Cd2NBMFFiQUI4RUhCd0RSQnRBR3dBY0hBTklHd1FmQ0J3Y0EwZ2JSQnNFSEJ3RFRCc0lId3djSEFOTUcwZ2JDQndjQTFBYkRCOFFIQndEVUJ0TUd3d2NIQU5VR3hBZkZCd2NBMVFiVUJzUUhCd0RXQnNVSHhnY0hBTllHMVFiRkJ3Y0Exd2JHQjhjSEJ3RFhCdFlHeGdjSEFOZ0d4d2ZJQndjQTJBYlhCc2NIQndEWkJzZ0h5UWNIQU5rRzJBYklCd2NBMmdiSkI4b0hCd0RhQnRrR3lRY0hBTXNIMmdiS0J3Y0F5d2ZiQnRvR0J3RE1COXNHeXdjSEFNd0gzQWJiQmdjQXpRZmNCc3dIQndETkI5MEczQVlIQU00SDNRYk5Cd2NBemdmZUJ0MEdCd0M0Qjk0R3pnY0hBTGdIeHdiZUJnY0F6d2UzQjdnSEJ3RFBCOUFIdHdjSEFORUh0d2ZRQndjQTBRZTVCN2NIQndEU0I3a0gwUWNIQU5JSHVnZTVCd2NBMHdlNkI5SUhCd0RUQjdzSHVnY0hBTlFIdXdmVEJ3Y0ExQWU4QjdzSEJ3RFZCN3dIMUFjSEFOVUh2UWU4QndjQTFnZTlCOVVIQndEV0I3NEh2UWNIQUw4SDFnZlhCd2NBdndlK0I5WUhCd0RBQjljSDJBY0hBTUFIdndmWEJ3Y0F3UWZZQjlrSEJ3REJCOEFIMkFjSEFNSUgyUWZhQndjQXdnZkJCOWtIQndEREI5b0gyd2NIQU1NSHdnZmFCd2NBd3dmY0I4UUhCd0REQjlzSDNBY0hBTVFIM1FmRkJ3Y0F4QWZjQjkwSEJ3REZCOTRIeGdjSEFNVUgzUWZlQndjQXhnZmZCOGNIQndER0I5NEgzd2NIQU1jSDRBZklCd2NBeHdmZkIrQUhCd0RJQitFSHlRY0hBTWdINEFmaEJ3Y0F5UWZpQjhvSEJ3REpCK0VINGdjSEFPSUh5d2ZLQndjQTRnZmpCOHNIQndEakI4d0h5d2NIQU9NSDVBZk1Cd2NBNUFmTkI4d0hCd0RrQitVSHpRY0hBT1VIemdmTkJ3Y0E1UWZtQjg0SEJ3RG1CN2dIemdjSEFPWUh6d2U0QndjQTV3ZlBCK2dIQndEbkI5QUh6d2NIQU9rSDBBZm5Cd2NBNlFmUkI5QUhCd0RxQjlFSDZRY0hBT29IMGdmUkJ3Y0E2d2ZTQitvSEJ3RHJCOU1IMGdjSEFPd0gwd2ZyQndjQTdBZlVCOU1IQndEdEI5UUg3QWNIQU8wSDFRZlVCd2NBN2dmVkIrMEhCd0R1QjlZSDFRY0hBTmNIN2dmdkJ3Y0Exd2ZXQis0SEJ3RFlCKzhIOEFjSEFOZ0gxd2Z2QndjQTJRZndCL0VIQndEWkI5Z0g4QWNIQU5vSDhRZnlCd2NBMmdmWkIvRUhCd0RiQi9JSDh3Y0hBTnNIMmdmeUJ3Y0EzQWZ6Qi9RSEJ3RGNCOXNIOHdjSEFOMEg5QWYxQndjQTNRZmNCL1FIQndEZUIvVUg5Z2NIQU40SDNRZjFCd2NBM3dmMkIvY0hCd0RmQjk0SDlnY0hBT0FIOXdmNEJ3Y0E0QWZmQi9jSEJ3RGhCL2dIK1FjSEFPRUg0QWY0QndjQTRnZjVCL29IQndEaUIrRUgrUWNIQVBzSDRnZjZCd2NBK3dmakIrSUhCd0Q4QitNSCt3Y0hBUHdINUFmakJ3Y0EvUWZrQi93SEJ3RDlCK1VINUFjSEFQNEg1UWY5QndjQS9nZm1CK1VIQndEb0IrWUgvZ2NIQU9nSHp3Zm1Cd2NBL3djQUNBRUlCd0QvQndJSUFBZ0hBQU1JQWdqL0J3Y0FBd2dFQ0FJSUJ3QUJDQVVJQmdnSEFBRUlBQWdGQ0FjQUJ3Z0lDQWtJQndBSENBb0lDQWdIQUFzSUNnZ0hDQWNBQ3dnTUNBb0lCd0FKQ0EwSURnZ0hBQWtJQ0FnTkNBY0FEd2dNQ0FzSUJ3QVBDQkFJREFnSEFBNElFUWdTQ0FjQURnZ05DQkVJQndBVENCQUlEd2dIQUJNSUZBZ1FDQWNBRWdnVkNCWUlCd0FTQ0JFSUZRZ0hBQmNJRkFnVENBY0FGd2dZQ0JRSUJ3QVdDQmtJR2dnSEFCWUlGUWdaQ0FjQUdnZ0VDQU1JQndBYUNCa0lCQWdIQUFZSUdBZ1hDQWNBQmdnRkNCZ0lCd0FiQ0FBSUFnZ0hBQnNJSEFnQUNBY0FCQWdiQ0FJSUJ3QUVDQjBJR3dnSEFCd0lCUWdBQ0FjQUhBZ2VDQVVJQndBS0NCOElDQWdIQUFvSUlBZ2ZDQWNBSVFnS0NBd0lCd0FoQ0NBSUNnZ0hBQWdJSWdnTkNBY0FDQWdmQ0NJSUJ3QWpDQXdJRUFnSEFDTUlJUWdNQ0FjQURRZ2tDQkVJQndBTkNDSUlKQWdIQUNVSUVBZ1VDQWNBSlFnakNCQUlCd0FSQ0NZSUZRZ0hBQkVJSkFnbUNBY0FKd2dVQ0JnSUJ3QW5DQ1VJRkFnSEFCVUlLQWdaQ0FjQUZRZ21DQ2dJQndBWkNCMElCQWdIQUJrSUtBZ2RDQWNBSGdnWUNBVUlCd0FlQ0NjSUdBZ0hBQnNJS1FnY0NBY0FHd2dxQ0NrSUJ3QWRDQ29JR3dnSEFCMElLd2dxQ0FjQUhBZ3NDQjRJQndBY0NDa0lMQWdIQUNBSUxRZ2ZDQWNBSUFndUNDMElCd0FoQ0M0SUlBZ0hBQ0VJTHdndUNBY0FId2d3Q0NJSUJ3QWZDQzBJTUFnSEFDTUlMd2doQ0FjQUl3Z3hDQzhJQndBaUNESUlKQWdIQUNJSU1BZ3lDQWNBSlFneENDTUlCd0FsQ0RNSU1RZ0hBQ1FJTkFnbUNBY0FKQWd5Q0RRSUJ3QW5DRE1JSlFnSEFDY0lOUWd6Q0FjQUpnZzJDQ2dJQndBbUNEUUlOZ2dIQUNnSUt3Z2RDQWNBS0FnMkNDc0lCd0FlQ0RVSUp3Z0hBQjRJTEFnMUNBY0FLZ2czQ0NrSUJ3QXFDRGdJTndnSEFDc0lPQWdxQ0FjQUt3ZzVDRGdJQndBcENEb0lMQWdIQUNrSU53ZzZDQWNBTGdnN0NDMElCd0F1Q0R3SU93Z0hBQzhJUEFndUNBY0FMd2c5Q0R3SUJ3QXRDRDRJTUFnSEFDMElPd2crQ0FjQU1RZzlDQzhJQndBeENEOElQUWdIQURBSVFBZ3lDQWNBTUFnK0NFQUlCd0F6Q0Q4SU1RZ0hBRE1JUVFnL0NBY0FNZ2hDQ0RRSUJ3QXlDRUFJUWdnSEFEVUlRUWd6Q0FjQU5RaERDRUVJQndBMENFUUlOZ2dIQURRSVFnaEVDQWNBTmdnNUNDc0lCd0EyQ0VRSU9RZ0hBQ3dJUXdnMUNBY0FMQWc2Q0VNSUJ3QTRDRVVJTndnSEFEZ0lSZ2hGQ0FjQU9RaEdDRGdJQndBNUNFY0lSZ2dIQURjSVNBZzZDQWNBTndoRkNFZ0lCd0E4Q0VrSU93Z0hBRHdJU2doSkNBY0FQUWhLQ0R3SUJ3QTlDRXNJU2dnSEFEc0lUQWcrQ0FjQU93aEpDRXdJQndBL0NFc0lQUWdIQUQ4SVRRaExDQWNBUGdoT0NFQUlCd0ErQ0V3SVRnZ0hBRUVJVFFnL0NBY0FRUWhQQ0UwSUJ3QkFDRkFJUWdnSEFFQUlUZ2hRQ0FjQVF3aFBDRUVJQndCRENGRUlUd2dIQUVJSVVnaEVDQWNBUWdoUUNGSUlCd0JFQ0VjSU9RZ0hBRVFJVWdoSENBY0FPZ2hSQ0VNSUJ3QTZDRWdJVVFnSEFFWUlVd2hGQ0FjQVJnaFVDRk1JQndCSENGUUlSZ2dIQUVjSVZRaFVDQWNBUlFoV0NFZ0lCd0JGQ0ZNSVZnZ0hBRW9JVndoSkNBY0FTZ2hZQ0ZjSUJ3QkxDRmdJU2dnSEFFc0lXUWhZQ0FjQVNRaGFDRXdJQndCSkNGY0lXZ2dIQUUwSVdRaExDQWNBVFFoYkNGa0lCd0JNQ0Z3SVRnZ0hBRXdJV2doY0NBY0FUd2hiQ0UwSUJ3QlBDRjBJV3dnSEFFNElYZ2hRQ0FjQVRnaGNDRjRJQndCUkNGMElUd2dIQUZFSVh3aGRDQWNBVUFoZ0NGSUlCd0JRQ0Y0SVlBZ0hBRklJVlFoSENBY0FVZ2hnQ0ZVSUJ3QklDRjhJVVFnSEFFZ0lWZ2hmQ0FjQVZBaGhDRk1JQndCVUNHSUlZUWdIQUZVSVlnaFVDQWNBVlFoakNHSUlCd0JUQ0dRSVZnZ0hBRk1JWVFoa0NBY0FXQWhsQ0ZjSUJ3QllDR1lJWlFnSEFGa0laZ2hZQ0FjQVdRaG5DR1lJQndCWENHZ0lXZ2dIQUZjSVpRaG9DQWNBV3dobkNGa0lCd0JiQ0drSVp3Z0hBRm9JYWdoY0NBY0FXZ2hvQ0dvSUJ3QmRDR2tJV3dnSEFGMElhd2hwQ0FjQVhBaHNDRjRJQndCY0NHb0liQWdIQUY4SWF3aGRDQWNBWHdodENHc0lCd0JlQ0c0SVlBZ0hBRjRJYkFodUNBY0FZQWhqQ0ZVSUJ3QmdDRzRJWXdnSEFGWUliUWhmQ0FjQVZnaGtDRzBJQndCaUNHOElZUWdIQUdJSWNBaHZDQWNBWXdod0NHSUlCd0JqQ0hFSWNBZ0hBR0VJY2doa0NBY0FZUWh2Q0hJSUJ3Qm1DSE1JWlFnSEFHWUlkQWh6Q0FjQVp3aDBDR1lJQndCbkNIVUlkQWdIQUdVSWRnaG9DQWNBWlFoekNIWUlCd0JwQ0hVSVp3Z0hBR2tJZHdoMUNBY0FhQWg0Q0dvSUJ3Qm9DSFlJZUFnSEFHc0lkd2hwQ0FjQWF3aDVDSGNJQndCcUNIb0liQWdIQUdvSWVBaDZDQWNBYlFoNUNHc0lCd0J0Q0hzSWVRZ0hBR3dJZkFodUNBY0FiQWg2Q0h3SUJ3QnVDSEVJWXdnSEFHNElmQWh4Q0FjQVpBaDdDRzBJQndCa0NISUlld2dIQUhBSWZRaHZDQWNBY0FoK0NIMElCd0J4Q0g0SWNBZ0hBSEVJZndoK0NBY0Fid2lBQ0hJSUJ3QnZDSDBJZ0FnSEFIUUlnUWh6Q0FjQWRBaUNDSUVJQndCMUNJSUlkQWdIQUhVSWd3aUNDQWNBY3dpRUNIWUlCd0J6Q0lFSWhBZ0hBSGNJZ3doMUNBY0Fkd2lGQ0lNSUJ3QjJDSVlJZUFnSEFIWUloQWlHQ0FjQWVRaUZDSGNJQndCNUNJY0loUWdIQUhnSWlBaDZDQWNBZUFpR0NJZ0lCd0I3Q0ljSWVRZ0hBSHNJaVFpSENBY0FlZ2lLQ0h3SUJ3QjZDSWdJaWdnSEFId0lmd2h4Q0FjQWZBaUtDSDhJQndCeUNJa0lld2dIQUhJSWdBaUpDQWNBZmdpTENIMElCd0IrQ0l3SWl3Z0hBSDhJakFoK0NBY0Fmd2lOQ0l3SUJ3QjlDSTRJZ0FnSEFIMElpd2lPQ0FjQWdnaVBDSUVJQndDQ0NKQUlqd2dIQUlNSWtBaUNDQWNBZ3dpUkNKQUlCd0NCQ0pJSWhBZ0hBSUVJandpU0NBY0FoUWlSQ0lNSUJ3Q0ZDSk1Ja1FnSEFJUUlsQWlHQ0FjQWhBaVNDSlFJQndDSENKTUloUWdIQUljSWxRaVRDQWNBaGdpV0NJZ0lCd0NHQ0pRSWxnZ0hBSWtJbFFpSENBY0FpUWlYQ0pVSUJ3Q0lDSmdJaWdnSEFJZ0lsZ2lZQ0FjQWlnaU5DSDhJQndDS0NKZ0lqUWdIQUlBSWx3aUpDQWNBZ0FpT0NKY0lCd0NNQ0prSWl3Z0hBSXdJbWdpWkNBY0FqUWlhQ0l3SUJ3Q05DSnNJbWdnSEFJc0luQWlPQ0FjQWl3aVpDSndJQndDUUNKMElqd2dIQUpBSW5naWRDQWNBa1FpZUNKQUlCd0NSQ0o4SW5nZ0hBSThJb0FpU0NBY0Fqd2lkQ0tBSUJ3Q1RDSjhJa1FnSEFKTUlvUWlmQ0FjQWtnaWlDSlFJQndDU0NLQUlvZ2dIQUpVSW9RaVRDQWNBbFFpakNLRUlCd0NVQ0tRSWxnZ0hBSlFJb2dpa0NBY0Fsd2lqQ0pVSUJ3Q1hDS1VJb3dnSEFKWUlwZ2lZQ0FjQWxnaWtDS1lJQndDWUNKc0lqUWdIQUpnSXBnaWJDQWNBamdpbENKY0lCd0NPQ0p3SXBRZ0hBSm9JcHdpWkNBY0FtZ2lvQ0tjSUJ3Q2JDS2dJbWdnSEFKc0lxUWlvQ0FjQW1RaXFDSndJQndDWkNLY0lxZ2dIQUo0SXF3aWRDQWNBbmdpc0NLc0lCd0NmQ0t3SW5nZ0hBSjhJclFpc0NBY0FuUWl1Q0tBSUJ3Q2RDS3NJcmdnSEFLRUlyUWlmQ0FjQW9RaXZDSzBJQndDZ0NMQUlvZ2dIQUtBSXJnaXdDQWNBb3dpdkNLRUlCd0NqQ0xFSXJ3Z0hBS0lJc2dpa0NBY0FvZ2l3Q0xJSUJ3Q2xDTEVJb3dnSEFLVUlzd2l4Q0FjQXBBaTBDS1lJQndDa0NMSUl0QWdIQUtZSXFRaWJDQWNBcGdpMENLa0lCd0NjQ0xNSXBRZ0hBSndJcWdpekNBY0FxQWkxQ0tjSUJ3Q29DTFlJdFFnSEFLa0l0Z2lvQ0FjQXFRaTNDTFlJQndDbkNMZ0lxZ2dIQUtjSXRRaTRDQWNBckFpNUNLc0lCd0NzQ0xvSXVRZ0hBSzBJdWdpc0NBY0FyUWk3Q0xvSUJ3Q3JDTHdJcmdnSEFLc0l1UWk4Q0FjQXJ3aTdDSzBJQndDdkNMMEl1d2dIQUs0SXZnaXdDQWNBcmdpOENMNElCd0N4Q0wwSXJ3Z0hBTEVJdndpOUNBY0FzQWpBQ0xJSUJ3Q3dDTDRJd0FnSEFMTUl2d2l4Q0FjQXN3akJDTDhJQndDeUNNSUl0QWdIQUxJSXdBakNDQWNBdEFpM0NLa0lCd0MwQ01JSXR3Z0hBS29Jd1FpekNBY0FxZ2k0Q01FSUJ3QzJDTU1JdFFnSEFMWUl4QWpEQ0FjQXR3akVDTFlJQndDM0NNVUl4QWdIQUxVSXhnaTRDQWNBdFFqRENNWUlCd0M2Q01jSXVRZ0hBTG9JeUFqSENBY0F1d2pJQ0xvSUJ3QzdDTWtJeUFnSEFMa0l5Z2k4Q0FjQXVRakhDTW9JQndDOUNNa0l1d2dIQUwwSXl3akpDQWNBdkFqTUNMNElCd0M4Q01vSXpBZ0hBTDhJeXdpOUNBY0F2d2pOQ01zSUJ3QytDTTRJd0FnSEFMNEl6QWpPQ0FjQXdRak5DTDhJQndEQkNNOEl6UWdIQU1BSTBBakNDQWNBd0FqT0NOQUlCd0RDQ01VSXR3Z0hBTUlJMEFqRkNBY0F1QWpQQ01FSUJ3QzRDTVlJendnSEFNUUkwUWpEQ0FjQXhBalNDTkVJQndBQkNOSUkvd2NIQUFFSTBRalNDQWNBeFFqU0NNUUlCd0RGQ05NSTBnZ0hBUDhIMHdnRENBY0Evd2ZTQ05NSUJ3RERDTlFJeGdnSEFNTUkwUWpVQ0FjQUJnalJDQUVJQndBR0NOUUkwUWdIQU1nSTFRakhDQWNBeUFqV0NOVUlCd0RYQ05ZSTJBZ0hBTmNJMVFqV0NBY0F5UWpXQ01nSUJ3REpDTmtJMWdnSEFOZ0kyUWphQ0FjQTJBaldDTmtJQndESENOc0l5Z2dIQU1jSTFRamJDQWNBM0FqVkNOY0lCd0RjQ05zSTFRZ0hBTXNJMlFqSkNBY0F5d2pkQ05rSUJ3RGFDTjBJRHdnSEFOb0kyUWpkQ0FjQXlnamVDTXdJQndES0NOc0kzZ2dIQUJJSTJ3amNDQWNBRWdqZUNOc0lCd0ROQ04wSXl3Z0hBTTBJM3dqZENBY0FEd2pmQ0JNSUJ3QVBDTjBJM3dnSEFNd0k0QWpPQ0FjQXpBamVDT0FJQndBV0NONElFZ2dIQUJZSTRBamVDQWNBendqZkNNMElCd0RQQ09FSTN3Z0hBQk1JNFFnWENBY0FFd2pmQ09FSUJ3RE9DT0lJMEFnSEFNNEk0QWppQ0FjQUdnamdDQllJQndBYUNPSUk0QWdIQU5BSTB3akZDQWNBMEFqaUNOTUlCd0FEQ09JSUdnZ0hBQU1JMHdqaUNBY0F4Z2poQ004SUJ3REdDTlFJNFFnSEFCY0kxQWdHQ0FjQUZ3amhDTlFJQndBd1FkMFZBQUJ5WVhZMExXRnNkUURtQ2dBQUFRQUNBQU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFFbEFTWUJKd0VvQVNrQktnRXJBU3dCTFFFdUFTOEJNQUV4QVRJQk13RTBBVFVCTmdFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBVkFCVVFGU0FWTUJWQUZWQVZZQlZ3RllBVmtCV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUJaZ0ZuQVdnQmFRRnFBV3NCYkFGdEFXNEJid0Z3QVhFQmNnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFac0JuQUdkQVo0Qm53R2dBYUVCb2dHakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0c0QWJrQnVnRzdBYndCdlFHK0FiOEJ3QUhCQWNJQnd3SEVBY1VCeGdISEFjZ0J5UUhLQWNzQnpBSE5BYzRCendIUUFkRUIwZ0hUQWRRQjFRSFdBZGNCMkFIWkFkb0Iyd0hjQWQwQjNnSGZBZUFCNFFIaUFlTUI1QUhsQWVZQjV3SG9BZWtCNmdIckFld0I3UUh1QWU4QjhBSHhBZklCOHdIMEFmVUI5Z0gzQWZnQitRSDZBZnNCL0FIOUFmNEIvd0VBQWdFQ0FnSURBZ1FDQlFJR0FnY0NDQUlKQWdvQ0N3SU1BZzBDRGdJUEFoQUNFUUlTQWhNQ0ZBSVZBaFlDRndJWUFoa0NHZ0liQWh3Q0hRSWVBaDhDSUFJaEFpSUNJd0lrQWlVQ0pnSW5BaWdDS1FJcUFpc0NMQUl0QWk0Q0x3SXdBakVDTWdJekFqUUNOUUkyQWpjQ09BSTVBam9DT3dJOEFqMENQZ0kvQWtBQ1FRSkNBa01DUkFKRkFrWUNSd0pJQWtrQ1NnSkxBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1BbWNDYUFKcEFtb0Nhd0pzQW0wQ2JnSnZBbkFDY1FKeUFuTUNkQUoxQW5ZQ2R3SjRBbmtDZWdKN0Fud0NmUUorQW44Q2dBS0JBb0lDZ3dLRUFvVUNoZ0tIQW9nQ2lRS0tBb3NDakFLTkFvNENqd0tRQXBFQ2tnS1RBcFFDbFFLV0FwY0NtQUtaQXBvQ213S2NBcDBDbmdLZkFxQUNvUUtpQXFNQ3BBS2xBcVlDcHdLb0Fxa0NxZ0tyQXF3Q3JRS3VBcThDc0FLeEFySUNzd0swQXJVQ3RnSzNBcmdDdVFLNkFyc0N2QUs5QXI0Q3Z3TEFBc0VDd2dMREFzUUN4UUxHQXNjQ3lBTEpBc29DeXdMTUFzMEN6Z0xQQXRBQzBRTFNBdE1DMUFMVkF0WUMxd0xZQXRrQzJnTGJBdHdDM1FMZUF0OEM0QUxoQXVJQzR3TGtBdVVDNWdMbkF1Z0M2UUxxQXVzQzdBTHRBdTRDN3dMd0F2RUM4Z0x6QXZRQzlRTDJBdmNDK0FMNUF2b0Mrd0w4QXYwQy9nTC9BZ0FEQVFNQ0F3TURCQU1GQXdZREJ3TUlBd2tEQ2dNTEF3d0REUU1PQXc4REVBTVJBeElERXdNVUF4VURGZ01YQXhnREdRTWFBeHNESEFNZEF4NERId01nQXlFRElnTWpBeVFESlFNbUF5Y0RLQU1wQXlvREt3TXNBeTBETGdNdkF6QURNUU15QXpNRE5BTTFBellETndNNEF6a0RPZ003QXp3RFBRTStBejhEUUFOQkEwSURRd05FQTBVRFJnTkhBMGdEU1FOS0Ewc0RUQU5OQTA0RFR3TlFBMUVEVWdOVEExUURWUU5XQTFjRFdBTlpBMW9EV3dOY0ExMERYZ05mQTJBRFlRTmlBMk1EWkFObEEyWURad05vQTJrRGFnTnJBMndEYlFOdUEyOERjQU54QTNJRGN3TjBBM1VEZGdOM0EzZ0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnT1BBNUFEa1FPU0E1TURsQU9WQTVZRGx3T1lBNWtEbWdPYkE1d0RuUU9lQTU4RG9BT2hBNklEb3dPa0E2VURwZ09uQTZnRHFRT3FBNnNEckFPdEE2NERyd093QTdFRHNnT3pBN1FEdFFPMkE3Y0R1QU81QTdvRHV3TzhBNzBEdmdPL0E4QUR3UVBDQThNRHhBUEZBOFlEeHdQSUE4a0R5Z1BMQTh3RHpRUE9BODhEMEFQUkE5SUQwd1BVQTlVRDFnUFhBOWdEMlFQYUE5c0QzQVBkQTk0RDN3UGdBK0VENGdQakErUUQ1UVBtQStjRDZBUHBBK29ENndQc0ErMEQ3Z1B2QS9BRDhRUHlBL01EOUFQMUEvWUQ5d1A0QS9rRCtnUDdBL3dEL1FQK0EvOERBQVFCQkFJRUF3UUVCQVVFQmdRSEJBZ0VDUVFLQkFzRURBUU5CQTRFRHdRUUJCRUVFZ1FUQkJRRUZRUVdCQmNFR0FRWkJCb0VHd1FjQkIwRUhnUWZCQ0FFSVFRaUJDTUVKQVFsQkNZRUp3UW9CQ2tFS2dRckJDd0VMUVF1QkM4RU1BUXhCRElFTXdRMEJEVUVOZ1EzQkRnRU9RUTZCRHNFUEFROUJENEVQd1JBQkVFRVFnUkRCRVFFUlFSR0JFY0VTQVJKQkVvRVN3Uk1CRTBFVGdSUEJGQUVVUVJTQkZNRVZBUlZCRllFVndSWUJGa0VXZ1JiQkZ3RVhRUmVCRjhFWUFSaEJHSUVZd1JrQkdVRVpnUm5CR2dFYVFScUJHc0ViQVJ0Qkc0RWJ3UndCSEVFY2dSekJIUUVkUVIyQkhjRWVBUjVCSG9FZXdSOEJIMEVmZ1IvQklBRWdRU0NCSU1FaEFTRkJJWUVod1NJQklrRWlnU0xCSXdFalFTT0JJOEVrQVNSQkpJRWt3U1VCSlVFbGdTWEJKZ0VtUVNhQkpzRW5BU2RCSjRFbndTZ0JLRUVvZ1NqQktRRXBRU21CS2NFcUFTcEJLb0Vxd1NzQkswRXJnU3ZCTEFFc1FTeUJMTUV0QVMxQkxZRXR3UzRCTGtFdWdTN0JMd0V2UVMrQkw4RXdBVEJCTUlFd3dURUJNVUV4Z1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOY0UyQVRaQk5vRTJ3VGNCTjBFM2dUZkJPQUU0UVRpQk9NRTVBVGxCT1lFNXdUb0JPa0U2Z1RyQk93RTdRVHVCTzhFOEFUeEJQSUU4d1QwQlBVRTlnVDNCUGdFK1FUNkJQc0UvQVQ5QlA0RS93UUFCUUVGQWdVREJRUUZCUVVHQlFjRkNBVUpCUW9GQ3dVTUJRMEZEZ1VQQlJBRkVRVVNCUk1GRkFVVkJSWUZGd1VZQlJrRkdnVWJCUndGSFFVZUJSOEZJQVVoQlNJRkl3VWtCU1VGSmdVbkJTZ0ZLUVVxQlNzRkxBVXRCUzRGTHdVd0JURUZNZ1V6QlRRRk5RVTJCVGNGT0FVNUJUb0ZPd1U4QlQwRlBnVS9CVUFGUVFWQ0JVTUZSQVZGQlVZRlJ3VklCVWtGU2dWTEJVd0ZUUVZPQlU4RlVBVlJCVklGVXdWVUJWVUZWZ1ZYQlZnRldRVmFCVnNGWEFWZEJWNEZYd1ZnQldFRllnVmpCV1FGWlFWbUJXY0ZhQVZwQldvRmF3VnNCVzBGYmdWdkJYQUZjUVZ5QlhNRmRBVjFCWFlGZHdWNEJYa0ZlZ1Y3Qlh3RmZRVitCWDhGZ0FXQkJZSUZnd1dFQllVRmhnV0hCWWdGaVFXS0JZc0ZqQVdOQlk0Rmp3V1FCWkVGa2dXVEJaUUZsUVdXQlpjRm1BV1pCWm9GbXdXY0JaMEZuZ1dmQmFBRm9RV2lCYU1GcEFXbEJhWUZwd1dvQmFrRnFnV3JCYXdGclFXdUJhOEZzQVd4QmJJRnN3VzBCYlVGdGdXM0JiZ0Z1UVc2QmJzRnZBVzlCYjRGdndYQUJjRUZ3Z1hEQmNRRnhRWEdCY2NGeUFYSkJjb0Z5d1hNQmMwRnpnWFBCZEFGMFFYU0JkTUYxQVhWQmRZRjF3WFlCZGtGMmdYYkJkd0YzUVhlQmQ4RjRBWGhCZUlGNHdYa0JlVUY1Z1huQmVnRjZRWHFCZXNGN0FYdEJlNEY3d1h3QmZFRjhnWHpCZlFGOVFYMkJmY0YrQVg1QmZvRit3WDhCZjBGL2dYL0JRQUdBUVlDQmdNR0JBWUZCZ1lHQndZSUJna0dDZ1lMQmd3R0RRWU9CZzhHRUFZUkJoSUdFd1lVQmhVR0ZnWVhCaGdHR1FZYUJoc0dIQVlkQmg0R0h3WWdCaUVHSWdZakJpUUdKUVltQmljR0tBWXBCaW9HS3dZc0JpMEdMZ1l2QmpBR01RWXlCak1HTkFZMUJqWUdOd1k0QmprR09nWTdCandHUFFZK0JqOEdRQVpCQmtJR1F3WkVCa1VHUmdaSEJrZ0dTUVpLQmtzR1RBWk5CazRHVHdaUUJsRUdVZ1pUQmxRR1ZRWldCbGNHV0FaWkJsb0dXd1pjQmwwR1hnWmZCbUFHWVFaaUJtTUdaQVpsQm1ZR1p3Wm9CbWtHYWdackJtd0diUVp1Qm04R2NBWnhCbklHY3daMEJuVUdkZ1ozQm5nR2VRWjZCbnNHZkFaOUJuNEdmd2FBQm9FR2dnYURCb1FHaFFhR0JvY0dpQWFKQm9vR2l3YU1CbzBHamdhUEJwQUdrUWFTQnBNR2xBYVZCcFlHbHdhWUJwa0dtZ2FiQnB3R25RYWVCcDhHb0FhaEJxSUdvd2FrQnFVR3BnYW5CcWdHcVFhcUJxc0dyQWF0QnE0R3J3YXdCckVHc2dhekJyUUd0UWEyQnJjR3VBYTVCcm9HdXdhOEJyMEd2Z2EvQnNBR3dRYkNCc01HeEFiRkJzWUd4d2JJQnNrR3lnYkxCc3dHelFiT0JzOEcwQWJSQnRJRzB3YlVCdFVHMWdiWEJ0Z0cyUWJhQnRzRzNBYmRCdDRHM3diZ0J1RUc0Z2JqQnVRRzVRYm1CdWNHNkFicEJ1b0c2d2JzQnUwRzdnYnZCdkFHOFFieUJ2TUc5QWIxQnZZRzl3YjRCdmtHK2diN0J2d0cvUWIrQnY4R0FBY0JCd0lIQXdjRUJ3VUhCZ2NIQndnSENRY0tCd3NIREFjTkJ3NEhEd2NRQnhFSEVnY1RCeFFIRlFjV0J4Y0hHQWNaQnhvSEd3Y2NCeDBISGdjZkJ5QUhJUWNpQnlNSEpBY2xCeVlISndjb0J5a0hLZ2NyQnl3SExRY3VCeThITUFjeEJ6SUhNd2MwQnpVSE5nYzNCemdIT1FjNkJ6c0hQQWM5Qno0SFB3ZEFCMEVIUWdkREIwUUhSUWRHQjBjSFNBZEpCMG9IU3dkTUIwMEhUZ2RQQjFBSFVRZFNCMU1IVkFkVkIxWUhWd2RZQjFrSFdnZGJCMXdIWFFkZUIxOEhZQWRoQjJJSFl3ZGtCMlVIWmdkbkIyZ0hhUWRxQjJzSGJBZHRCMjRIYndkd0IzRUhjZ2R6QjNRSGRRZDJCM2NIZUFkNUIzb0hld2Q4QjMwSGZnZC9CNEFIZ1FlQ0I0TUhoQWVGQjRZSGh3ZUlCNGtIaWdlTEI0d0hqUWVPQjQ4SGtBZVJCNUlIa3dlVUI1VUhsZ2VYQjVnSG1RZWFCNXNIbkFlZEI1NEhud2VnQjZFSG9nZWpCNlFIcFFlbUI2Y0hxQWVwQjZvSHF3ZXNCNjBIcmdldkI3QUhzUWV5QjdNSHRBZTFCN1lIdHdlNEI3a0h1Z2U3Qjd3SHZRZStCNzhId0FmQkI4SUh3d2ZFQjhVSHhnZkhCOGdIeVFmS0I4c0h6QWZOQjg0SHp3ZlFCOUVIMGdmVEI5UUgxUWZXQjljSDJBZlpCOW9IMndmY0I5MEgzZ2ZmQitBSDRRZmlCK01INUFmbEIrWUg1d2ZvQitrSDZnZnJCK3dIN1FmdUIrOEg4QWZ4Qi9JSDh3ZjBCL1VIOWdmM0IvZ0grUWY2Qi9zSC9BZjlCLzRIL3djQUNBRUlBZ2dEQ0FRSUJRZ0dDQWNJQ0FnSkNBb0lDd2dNQ0EwSURnZ1BDQkFJRVFnU0NCTUlGQWdWQ0JZSUZ3Z1lDQmtJR2dnYkNCd0lIUWdlQ0I4SUlBZ2hDQ0lJSXdna0NDVUlKZ2duQ0NnSUtRZ3FDQ3NJTEFndENDNElMd2d3Q0RFSU1nZ3pDRFFJTlFnMkNEY0lPQWc1Q0RvSU93ZzhDRDBJUGdnL0NFQUlRUWhDQ0VNSVJBaEZDRVlJUndoSUNFa0lTZ2hMQ0V3SVRRaE9DRThJVUFoUkNGSUlVd2hVQ0ZVSVZnaFhDRmdJV1FoYUNGc0lYQWhkQ0Y0SVh3aGdDR0VJWWdoakNHUUlaUWhtQ0djSWFBaHBDR29JYXdoc0NHMEliZ2h2Q0hBSWNRaHlDSE1JZEFoMUNIWUlkd2g0Q0hrSWVnaDdDSHdJZlFoK0NIOElnQWlCQ0lJSWd3aUVDSVVJaGdpSENJZ0lpUWlLQ0lzSWpBaU5DSTRJandpUUNKRUlrZ2lUQ0pRSWxRaVdDSmNJbUFpWkNKb0ltd2ljQ0owSW5naWZDS0FJb1FpaUNLTUlwQWlsQ0tZSXB3aW9DS2tJcWdpckNLd0lyUWl1Q0s4SXNBaXhDTElJc3dpMENMVUl0Z2kzQ0xnSXVRaTZDTHNJdkFpOUNMNEl2d2pBQ01FSXdnakRDTVFJeFFqR0NNY0l5QWpKQ01vSXl3ak1DTTBJemdqUENOQUkwUWpTQ05NSTFBalZDTllJMXdqWUNOa0kyZ2piQ053STNRamVDTjhJNEFqaENPSUk0d2prQ09VSTVnam5DT2dJNlFqcUNPc0k3QWp0Q080STd3andDUEVJOGdqekNQUUk5UWoyQ1BjSStBajVDUG9JK3dqOENQMEkvZ2ovQ0FBSkFRa0NDUU1KQkFrRkNRWUpCd2tJQ1FrSkNna0xDUXdKRFFrT0NROEpFQWtSQ1JJSkV3a1VDUlVKRmdrWENSZ0pHUWthQ1JzSkhBa2RDUjRKSHdrZ0NTRUpJZ2tqQ1NRSkpRa21DU2NKS0FrcENTb0pLd2tzQ1MwSkxna3ZDVEFKTVFreUNUTUpOQWsxQ1RZSk53azRDVGtKT2drN0NUd0pQUWsrQ1Q4SlFBbEJDVUlKUXdsRUNVVUpSZ2xIQ1VnSlNRbEtDVXNKVEFsTkNVNEpUd2xRQ1ZFSlVnbFRDVlFKVlFsV0NWY0pXQWxaQ1ZvSld3bGNDVjBKWGdsZkNXQUpZUWxpQ1dNSlpBbGxDV1lKWndsb0NXa0phZ2xyQ1d3SmJRbHVDVzhKY0FseENYSUpjd2wwQ1hVSmRnbDNDWGdKZVFsNkNYc0pmQWw5Q1g0SmZ3bUFDWUVKZ2dtRENZUUpoUW1HQ1ljSmlBbUpDWW9KaXdtTUNZMEpqZ21QQ1pBSmtRbVNDWk1KbEFtVkNaWUpsd21ZQ1prSm1nbWJDWndKblFtZUNaOEpvQW1oQ2FJSm93bWtDYVVKcGdtbkNhZ0pxUW1xQ2FzSnJBbXRDYTRKcndtd0NiRUpzZ216Q2JRSnRRbTJDYmNKdUFtNUNib0p1d204Q2IwSnZnbS9DY0FKd1FuQ0NjTUp4QW5GQ2NZSnh3bklDY2tKeWduTENjd0p6UW5PQ2M4SjBBblJDZElKMHduVUNkVUoxZ25YQ2RnSjJRbmFDZHNKM0FuZENkNEozd25nQ2VFSjRnbmpDZVFKNVFubUNlY0o2QW5wQ2VvSjZ3bnNDZTBKN2dudkNmQUo4UW55Q2ZNSjlBbjFDZllKOXduNENma0orZ243Q2Z3Si9RbitDZjhKQUFvQkNnSUtBd29FQ2dVS0Jnb0hDZ2dLQ1FvS0Nnc0tEQW9OQ2c0S0R3b1FDaEVLRWdvVENoUUtGUW9XQ2hjS0dBb1pDaG9LR3dvY0NoMEtIZ29mQ2lBS0lRb2lDaU1LSkFvbENpWUtKd29vQ2lrS0tnb3JDaXdLTFFvdUNpOEtNQW94Q2pJS013bzBDalVLTmdvM0NqZ0tPUW82Q2pzS1BBbzlDajRLUHdwQUNrRUtRZ3BEQ2tRS1JRcEdDa2NLU0FwSkNrb0tTd3BNQ2swS1RncFBDbEFLVVFwU0NsTUtWQXBWQ2xZS1Z3cFlDbGtLV2dwYkNsd0tYUXBlQ2w4S1lBcGhDbUlLWXdwa0NtVUtaZ3BuQ21nS2FRcHFDbXNLYkFwdENtNEtid3B3Q25FS2NncHpDblFLZFFwMkNuY0tlQXA1Q25vS2V3cDhDbjBLZmdwL0NvQUtnUXFDQ29NS2hBcUZDb1lLaHdxSUNva0tpZ3FMQ293S2pRcU9DbzhLa0FxUkNwSUtrd3FVQ3BVS2xncVhDcGdLbVFxYUNwc0tuQXFkQ3A0S253cWdDcUVLb2dxakNxUUtwUXFtQ3FjS3FBcXBDcW9LcXdxc0NxMEtyZ3F2Q3JBS3NRcXlDck1LdEFxMUNyWUt0d3E0Q3JrS3VncTdDcndLdlFxK0NyOEt3QXJCQ3NJS3d3ckVDc1VLeGdySENzZ0t5UXJLQ3NzS3pBck5DczRLendyUUN0RUswZ3JUQ3RRSzFRcldDdGNLMkFyWkN0b0syd3JjQ3QwSzNncmZDdUFLNFFyaUN1TUs1QXJsQ2pCQjh3UUFBSEpoZGpRdFpHbHpZM01BY0FMbUN1Y0s2QXJwQ3VvSzZ3cnNDdTBLN2dydkN2QUs4UXJ5Q3ZNSzlBcjFDdllLOXdyNEN2a0srZ3I3Q3Z3Sy9RcitDdjhLQUFzQkN3SUxBd3NFQ3dVTEJnc0hDd2dMQ1FzS0N3c0xEQXNOQ3c0TER3c1FDeEVMRWdzVEN4UUxGUXNXQ3hjTEdBc1pDeG9MR3dzY0N4MExIZ3NmQ3lBTElRc2lDeU1MSkFzbEN5WUxKd3NvQ3lrTEtnc3JDeXdMTFFzdUN5OExNQXN4Q3pJTE13czBDelVMTmdzM0N6Z0xPUXM2Q3pzTFBBczlDejRMUHd0QUMwRUxRZ3REQzBRTFJRdEdDMGNMU0F0SkMwb0xTd3RNQzAwTFRndFBDMUFMVVF0U0MxTUxWQXRWQzFZTFZ3dFlDMWtMV2d0YkMxd0xYUXRlQzE4TFlBdGhDMklMWXd0a0MyVUxaZ3RuQzJnTGFRdHFDMnNMYkF0dEMyNExid3R3QzNFTGNndHpDM1FMZFF0MkMzY0xlQXQ1QzNvTGV3dDhDMzBMZmd0L0M0QUxnUXVDQzRNTGhBdUZDNFlMaHd1SUM0a0xpZ3VMQzR3TGpRdU9DNDhMa0F1UkM1SUxrd3VVQzVVTGxndVhDNWdMbVF1YUM1c0xuQXVkQzU0TG53dWdDNkVMb2d1akM2UUxwUXVtQzZjTHFBdXBDNm9McXd1c0M2MExyZ3V2QzdBTHNRdXlDN01MdEF1MUM3WUx0d3U0QzdrTHVndTdDN3dMdlF1K0M3OEx3QXZCQzhJTHd3dkVDOFVMeGd2SEM4Z0x5UXZLQzhzTHpBdk5DODRMend2UUM5RUwwZ3ZUQzlRTDFRdldDOWNMMkF2WkM5b0wyd3ZjQzkwTDNndmZDK0FMNFF2aUMrTUw1QXZsQytZTDV3dm9DK2tMNmd2ckMrd0w3UXZ1Qys4TDhBdnhDL0lMOHd2MEMvVUw5Z3YzQy9nTCtRdjZDL3NML0F2OUMvNEwvd3NBREFFTUFnd0REQVFNQlF3R0RBY01DQXdKREFvTUN3d01EQTBNRGd3UERCQU1FUXdTREJNTUZBd1ZEQllNRnd3WURCa01HZ3diREJ3TUhRd2VEQjhNSUF3aERDSU1Jd3drRENVTUpnd25EQ2dNS1F3cURDc01MQXd0REM0TUx3d3dEREVNTWd3ekREUU1OUXcyRERjTU9BdzVERG9NT3d3OEREME1QZ3cvREVBTVFReENERU1NUkF4RkRFWU1Sd3hJREVrTVNneExERXdNVFF4T0RFOE1VQXhSREZJTVV3eFVERlVNVmd4WERGZ01XUXhhREZzTVhBeGRERjRNWHd4Z0RHRU1ZZ3hqREdRTVpReG1ER2NNYUF4cERHb01hd3hzREcwTWJneHZESEFNY1F4eURITU1kQXgxREhZTWR3eDRESGtNZWd4N0RId01mUXgrREg4TWdBeUJESUlNZ3d5RURJVU1oZ3lIRElnTWlReUtESXNNakF5TkRJNE1qd3lRREpFTWtneVRESlFNbFF5V0RKY01tQXlaREpvTW13eWNESjBNbmd5ZkRLQU1vUXlpREtNTXBBeWxES1lNcHd5b0RLa01xZ3lyREt3TXJReXVESzhNc0F5eERMSU1zd3kwRExVTXRneTNETGdNdVF5NkRMc012QXk5REw0TXZ3ekFETUVNd2d6RERNUU14UXpHRE1jTXlBekpETW9NeXd6TURNME16Z3pQRE5BTTBRelNETk1NMUF6VkROWU0xd3pZRE5rTTJnemJETndNM1F6ZUROOE00QXpoRE9JTTR3emtET1VNNWd6bkRPZ002UXpxRE9zTTdBenRETzRNN3d6d0RQRU04Z3p6RFBRTTlRejJEUGNNK0F6NURQb00rd3o4RFAwTS9nei9EQUFOQVEwQ0RRTU5CQTBGRFFZTkJ3MElEUWtOQ2cwTERRd05EUTBPRFE4TkVBMFJEUklORXcwVURSVU5GZzBYRFJnTkdRMGFEUnNOSEEwZERSNE5IdzBnRFNFTklnMGpEU1FOSlEwbURTY05LQTBwRFNvTkt3MHNEUzBOTGcwdkRUQU5NUTB5RFRNTk5BMDFEVFlOTncwNERUa05PZzA3RFR3TlBRMCtEVDhOUUExQkRVSU5RdzFFRFVVTlJnMUhEVWdOU1ExS0RVc05UQTFORFU0TlR3MVFEVkVOVWcxVERWUU5WUTB3UWRVREFBQnlZWFkwTFhOb2FXVnNaSE1BNEFGV0RWY05XQTFaRFZvTld3MWNEVjBOWGcxZkRXQU5ZUTFpRFdNTlpBMWxEV1lOWncxb0RXa05hZzFyRFd3TmJRMXVEVzhOY0ExeERYSU5jdzEwRFhVTmRnMTNEWGdOZVExNkRYc05mQTE5RFg0TmZ3MkFEWUVOZ2cyRERZUU5oUTJHRFljTmlBMkpEWW9OaXcyTURZME5qZzJQRFpBTmtRMlNEWk1ObEEyVkRaWU5sdzJZRFprTm1nMmJEWndOblEyZURaOE5vQTJoRGFJTm93MmtEYVVOcGcybkRhZ05xUTJxRGFzTnJBMnREYTROcncyd0RiRU5zZzJ6RGJRTnRRMjJEYmNOdUEyNURib051dzI4RGIwTnZnMi9EY0FOd1EzQ0RjTU54QTNGRGNZTnh3M0lEY2tOeWczTERjd056UTNPRGM4TjBBM1JEZElOMHczVURkVU4xZzNYRGRnTjJRM2FEZHNOM0EzZERkNE4zdzNnRGVFTjRnM2pEZVFONVEzbURlY042QTNwRGVvTjZ3M3NEZTBON2czdkRmQU44UTN5RGZNTjlBMzFEZllOOXczNERma04rZzM3RGZ3Ti9RMytEZjhOQUE0QkRnSU9BdzRFRGdVT0JnNEhEZ2dPQ1E0S0Rnc09EQTRORGc0T0R3NFFEaEVPRWc0VERoUU9GUTRXRGhjT0dBNFpEaG9PR3c0Y0RoME9IZzRmRGlBT0lRNGlEaU1PSkE0bERpWU9KdzRvRGlrT0tnNHJEaXdPTFE0dURpOE9NQTR4RGpJT013NDBEalVPTmc0M0RqZ09PUTQ2RGpzT1BBNDlEajRPUHc1QURrRU9RZzVERGtRT1JRNUdEa2NPU0E1SkRrb09TdzVNRGswT1RnNVBEbEFPVVE1U0RsTU9WQTVWRGxZT1Z3NVlEbGtPV2c1YkRsd09YUTVlRGw4T1lBNWhEbUlPWXc1a0RtVU9aZzVuRG1nT2FRNXFEbXNPYkE1dERtNE9idzV3RG5FT2NnNXpEblFPZFE1MkRuY09lQTU1RG5vT2V3NThEbjBPZmc1L0RvQU9nUTZDRG9NT2hBNkZEb1lPaHc2SURva09pZzZMRG93T2pRNk9EbzhPa0E2UkRwSU9rdzZVRHBVT2xnNlhEcGdPbVE2YURwc09uQTZkRHA0T253NmdEcUVPb2c2akRxUU9wUTZtRHFjT3FBNnBEcW9PcXc2c0RxME9yZzZ2RHJBT3NRNnlEck1PdEE2MURyWU90dzY0RHJrT3VnNjdEcndPdlE2K0RyOE93QTdCRHNJT3d3N0VEc1VPeGc3SERzZ095UTdLRHNzT3pBN05EczRPenc3UUR0RU8wZzdURHRRTzFRN1dEdGNPMkE3WkR0b08ydzdjRHQwTzNnN2ZEdUFPNFE3aUR1TU81QTdsRHVZTzV3N29EdWtPNmc3ckR1d083UTd1RHU4TzhBN3hEdklPOHc3MER2VU85ZzczRHZnTytRNzZEdnNPL0E3OUR2NE8vdzRBRHdFUEFnOEREd1FQQlE4R0R3Y1BDQThKRHdvUEN3OE1EdzBQRGc4UER4QVBFUThTRHhNUEZBOFZEeFlQRnc4WUR4a1BHZzhiRHh3UEhROGVEeDhQSUE4aER5SVBJdzhrRHlVUEpnOG5EeWdQS1E4cUR5c1BMQTh0RHk0UEx3OHdEekVQTWc4ekR6UVBOUTh3UVpJREFBQnlZWFkwTFhScGNtVUF3QUUyRHpjUE9BODVEem9QT3c4OER6MFBQZzgvRDBBUFFROUNEME1QUkE5RkQwWVBSdzlJRDBrUFNnOUxEMHdQVFE5T0QwOFBVQTlSRDFJUFV3OVVEMVVQVmc5WEQxZ1BXUTlhRDFzUFhBOWREMTRQWHc5Z0QyRVBZZzlqRDJRUFpROW1EMmNQYUE5cEQyb1BhdzlzRDIwUGJnOXZEM0FQY1E5eUQzTVBkQTkxRDNZUGR3OTREM2tQZWc5N0Qzd1BmUTkrRDM4UGdBK0JENElQZ3crRUQ0VVBoZytIRDRnUGlRK0tENHNQakErTkQ0NFBqdytRRDVFUGtnK1RENVFQbFErV0Q1Y1BtQStaRDVvUG13K2NENTBQbmcrZkQ2QVBvUStpRDZNUHBBK2xENllQcHcrb0Q2a1BxZytyRDZ3UHJRK3VENjhQc0EreEQ3SVBzdyswRDdVUHRnKzNEN2dQdVErNkQ3c1B2QSs5RDc0UHZ3L0FEOEVQd2cvREQ4UVB4US9HRDhjUHlBL0pEOG9QeXcvTUQ4MFB6Zy9QRDlBUDBRL1NEOU1QMUEvVkQ5WVAxdy9ZRDlrUDJnL2JEOXdQM1EvZUQ5OFA0QS9oRCtJUDR3L2tEK1VQNWcvbkQrZ1A2US9xRCtzUDdBL3REKzRQN3cvd0QvRVA4Zy96RC9RUDlRLzJEL2NQK0EvNUQvb1Ardy84RC8wUC9nLy9Ed0FRQVJBQ0VBTVFCQkFGRUFZUUJ4QUlFQWtRQ2hBTEVBd1FEUkFPRUE4UUVCQVJFQklRRXhBVUVCVVFGaEFYRUJnUUdSQWFFQnNRSEJBZEVCNFFIeEFnRUNFUUloQWpFQ1FRSlJBbUVDY1FLQkFwRUNvUUt4QXNFQzBRTGhBdkVEQVFNUkF5RURNUU5CQTFFRFlRTnhBNEVEa1FPaEE3RUR3UVBSQStFRDhRUUJCQkVFSVFReEJFRUVVUVJoQkhFRWdRU1JCS0VFc1FUQkJORUU0UVR4QlFFRkVRVWhCVEVGUVFWUkJXRUZjUVdCQlpFRm9RV3hCY0VGMFFYaEJmRUdBUVlSQmlFR01RWkJCbEVHWVFaeEJvRUdrUWFoQnJFR3dRYlJCdUVHOFFjQkJ4RUhJUWN4QjBFSFVRZGhCM0VIZ1FlUkI2RUhzUWZCQjlFSDRRZnhDQUVJRVFnaENERUlRUWhSQ0dFSWNRaUJDSkVJb1FpeENNRUkwUWpoQ1BFSkFRa1JDU0VKTVFsQkNWRUpZUWx4Q1lFSmtRbWhDYkVKd1FuUkNlRUo4UW9CQ2hFS0lRb3hDa0VLVVFwaENuRUtnUXFSQ3FFS3NRckJDdEVLNFFyeEN3RUxFUXNoQ3pFTFFRdFJDMkVMY1F1QkM1RUxvUXV4QzhFTDBRdmhDL0VNQVF3UkRDRU1NUXhCREZFTVlReHhESUVNa1F5aERMRU13UXpSRE9FTThRMEJEUkVOSVEweERVRU5VUTFoRFhFTmdRMlJEYUVOc1EzQkRkRU40UTN4RGdFT0VRNGhEakVPUVE1UkRtRU9jUTZCRHBFT29RNnhEc0VPMFE3aER2RVBBUThSRHlFUE1ROUJEMUVGQkIza01BQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFBUU9hZkFRQlViM2x2ZEdGZlVrRTRBQUJCMVo4QkFCQkJyR29BQU9NSXZIRUp3ajNGWThKa3ljUEI1REQ5d1NXUFg4Szc5OGZCNUREOXdUM0ZZOEpreWNQQnZIRUp3aVdQWDhLNzk4ZkJ2SEVKd3Iydlo4STlsYjdCNUREOXdiMnZaOEk5bGI3QnZIRUp3dUErYThKVmNMakI1REQ5d2VBK2E4SlZjTGpCdkhFSndqdGtic0p2YzdIQjVERDl3VHRrYnNKdmM3SEJ2SEVKd2lvVGNjSzh1cW5CNUREOXdTb1RjY0s4dXFuQnZIRUp3c2xBYzhKM1phSEI1REQ5d2NsQWM4SjNaYUhCdkhFSndsVGtkTUk0bFpqQjVERDl3VlRrZE1JNGxaakJ2SEVKd2l2M2RjS1piWS9CNUREOXdTdjNkY0taYlkvQnZIRUp3dngwZHNLVkU0YkI1REQ5d2Z4MGRzS1ZFNGJCdkhFSndzZGJkc0xHV1huQjVERDl3Y2RiZHNMR1dYbkJ2SEVKd3ZPcmRjTDF2bWJCNUREOXdmT3JkY0wxdm1iQnZIRUp3a1pvZE1MZm9WVEI1REQ5d1Vab2RNTGZvVlRCdkhFSnd0cVZjc0tyUzBQQjVERDl3ZHFWY3NLclMwUEJ2SEVKd2c0OGNNSThBalBCNUREOXdRNDhjTUk4QWpQQjVERDl3VnhrYmNKdEJ5VEJ2SEVKd2x4a2JjSnRCeVRCNUREOXdUc2Fhc0tXbHhiQnZIRUp3anNhYXNLV2x4YkI1REQ5d2ZscVpzSXE2UXJCdkhFSnd2bHFac0lxNlFyQjVERDl3WE5sWXNJa0t3SEJ2SEVKd25ObFlzSWtLd0hCNUREOXdlY1pYc0xrQ2ZQQXZIRUp3dWNaWHNMa0NmUEE1REQ5d2FtWldjTFpLdWpBdkhFSndxbVpXY0xaS3VqQTVERDl3ZXIyVk1JYjVlSEF2SEVKd3VyMlZNSWI1ZUhBNUREOXdWdEVVTUxaVWVEQXZIRUp3bHRFVU1MWlVlREE1REQ5d2ZtVVM4S1RkK1BBdkhFSnd2bVVTOEtUZCtQQTVERDl3YXI3UnNKK1NldkF2SEVKd3FyN1JzSitTZXZBNUREOXdRR0xRc0lpcVBmQXZIRUp3Z0dMUXNJaXFQZkE1REQ5d2V0VVBzSzJNQVRCdkhFSnd1dFVQc0syTUFUQjVERDl3V3BxT3NMK21BN0J2SEVKd21wcU9zTCttQTdCNUREOXdVcmJOc0xZNGhyQnZIRUp3a3JiTnNMWTRockI1REQ5d2VxMU04S2ozQ2pCdkhFSnd1cTFNOEtqM0NqQjVERDl3UUFITWNJQ1RqakJ2SEVKd2dBSE1jSUNUampCNUREOXdWL1pMc0tYK0VqQnZIRUp3bC9aTHNLWCtFakI1REQ5d2RVMUxjSVRtVnJCdkhFSnd0VTFMY0lUbVZyQjVERDl3Zm9pTE1KVjZHekJ2SEVKd3ZvaUxNSlY2R3pCNUREOXdTdWxLOEpTbkgvQnZIRUp3aXVsSzhKU25IL0I1REQ5d1dDK0s4TGNOSW5CdkhFSndtQytLOExjTkluQjVERDl3VE51TE1KQ2dwTEJ2SEVKd2pOdUxNSkNncExCNUREOXdlT3hMY0xNa0p2QnZIRUp3dU94TGNMTWtKdkI1REQ5d1V5RUw4THRPNlRCdkhFSndreUVMOEx0TzZUQjVERDl3UnJlTWNLZllLekJ2SEVKd2hyZU1jS2ZZS3pCdkhFSndzMjFOTUlOM3JQQjVERDl3YzIxTk1JTjNyUEJ2SEVKd3UzL044THdsYnJCNUREOXdlMy9OOEx3bGJyQnZIRUp3aTZ2TzhJd2JjREI1REQ5d1M2dk84SXdiY0RCdkhFSndyUzBQOEl0VE1YQjVERDl3YlMwUDhJdFRNWEJ2SEVKd2tFQVJNSkhIOG5CNUREOXdVRUFSTUpISDhuQnZIRUp3bjZBU01JUTE4dkI1REQ5d1g2QVNNSVExOHZCdkhFSndqOGpUY0ovYU0zQjVERDl3VDhqVGNKL2FNM0J2SEVKd3N6VlVjSkt6YzNCNUREOXdjelZVY0pLemMzQnZIRUp3aStGVnNMZkE4M0I1REQ5d1MrRlZzTGZBODNCdkhFSnduNGVXOEpqRDh2QjVERDl3WDRlVzhKakQ4dkJYMGNLd2ozRlk4Smt5Y1BCWDBjS3dpV1BYOEs3OThmQlgwY0t3cjJ2WjhJOWxiN0JYMGNLd3VBK2E4SlZjTGpCWDBjS3dqdGtic0p2YzdIQlgwY0t3aW9UY2NLOHVxbkJYMGNLd3NsQWM4SjNaYUhCWDBjS3dsVGtkTUk0bFpqQlgwY0t3aXYzZGNLWmJZL0JYMGNLd3Z4MGRzS1ZFNGJCWDBjS3dzZGJkc0xHV1huQlgwY0t3dk9yZGNMMXZtYkJYMGNLd2tab2RNTGZvVlRCWDBjS3d0cVZjc0tyUzBQQlgwY0t3ZzQ4Y01JOEFqUEJYMGNLd2x4a2JjSnRCeVRCWDBjS3dqc2Fhc0tXbHhiQlgwY0t3dmxxWnNJcTZRckJYMGNLd25ObFlzSWtLd0hCWDBjS3d1Y1pYc0xrQ2ZQQVgwY0t3cW1aV2NMWkt1akFYMGNLd3VyMlZNSWI1ZUhBWDBjS3dsdEVVTUxaVWVEQVgwY0t3dm1VUzhLVGQrUEFYMGNLd3FyN1JzSitTZXZBWDBjS3dnR0xRc0lpcVBmQVgwY0t3dXRVUHNLMk1BVEJYMGNLd21wcU9zTCttQTdCWDBjS3drcmJOc0xZNGhyQlgwY0t3dXExTThLajNDakJYMGNLd2dBSE1jSUNUampCWDBjS3dsL1pMc0tYK0VqQlgwY0t3dFUxTGNJVG1WckJYMGNLd3ZvaUxNSlY2R3pCWDBjS3dpdWxLOEpTbkgvQlgwY0t3bUMrSzhMY05JbkJYMGNLd2pOdUxNSkNncExCWDBjS3d1T3hMY0xNa0p2QlgwY0t3a3lFTDhMdE82VEJYMGNLd2hyZU1jS2ZZS3pCWDBjS3dzMjFOTUlOM3JQQlgwY0t3dTMvTjhMd2xickJYMGNLd2k2dk84SXdiY0RCWDBjS3dyUzBQOEl0VE1YQlgwY0t3a0VBUk1KSEg4bkJYMGNLd242QVNNSVExOHZCWDBjS3dqOGpUY0ovYU0zQlgwY0t3c3pWVWNKS3pjM0JYMGNLd2krRlZzTGZBODNCWDBjS3duNGVXOEpqRDh2QlgwY0t3ak5EWDhKZWpzYkJYMGNLd2o5alk4THZkY0xCWDBjS3dqODVaOElIWGIzQlgwY0t3cjYxYXNKSldMZkJYMGNLd3FUS2JjTDFmN0RCWDBjS3dvUnJjTUt4NzZqQlgwY0t3cjZOY3NJR3hxREJYMGNLd3JVb2RNTHRJNWpCWDBjS3d2QTFkY0k4TEkvQlgwY0t3aXF4ZGNJcEE0YkJYMGNLd25tWWRjSm5tM25CWDBjS3dqN3NkTUx6WVdmQlgwY0t3akN2YzhLN28xWEJYMGNLd2xIbWNjSThxRVRCWDBjS3d0T1liOElMdERUQlgwY0t3djdQYk1La0J5YkJYMGNLd2hxWGFjSTIzaGpCWDBjS3doNzdaY0xpYkEzQlgwY0t3cWdLWXNMazRRUEJYMGNLd3BQVlhjSnV4L2pBWDBjS3d1aHNXY0pQSWU3QVgwY0t3bXppVk1KbC9PZkFYMGNLd25oSVVNSnFjZWJBWDBjS3dwbXhTOEtlaHVuQVgwY0t3bUF3UjhLUEwvSEFYMGNLd3ZUV1FzSnlUZjNBWDBjS3d1bTJQc0toMXdiQlgwY0t3dWpnT3NKc0NSSEJYMGNLd21sa044THlFaDNCWDBjS3dvRlBOTUtid3lyQlgwY0t3cU91TWNJaDVEbkJYMGNLd21tTUw4SjdOMHJCWDBjS3duTHhMY0t0ZTF2QlgwY0t3am5rTE1JTmEyM0JYMGNLd3Z4b0xNSXN2WC9CWDBjS3dxNkJMTUlSRkluQlgwY0t3dWt0TGNMQ01KTEJYMGNLd3ZWcUxzTGpENXZCWDBjS3d0WXpNTUtpamFQQlgwY0t3bGVCTXNLM2g2dkJYMGNLd2loS05jTHYzYkxCWDBjS3dnK0RPTUtuY3JuQlgwY0t3Z2NmUE1KUks3L0JYMGNLd29FUFFNTFI4TVBCWDBjS3dwSkVSTUxpcjhmQlgwY0t3ajZ0U01KdldjckJYMGNLd3JzM1RjS3I0c3ZCWDBjS3dySFJVY0pyUmN6QlgwY0t3bzVvVnNJVWdNdkJYMGNLd3NmcFdzTGJsY25CekgwSndnREZVY0xXaWNmQnpIMEp3aEYzVGNKMkxjZkJ6SDBKd2dvUVZzSTgwY2JCekgwSnd0VkdXc0tuQnNYQnpIMEp3a2cwWXNKeVhMN0J6SDBKd3VmS1pjTENsN25CekgwSndzd05hY0owOXJQQnpIMEp3c2p2YThJNGo2M0J6SDBKd2pSa2NNSWYyWjdCekgwSndxYmtjY0tweFpiQnpIMEp3b0hnY3NJbFlvN0J6SDBKd3NkVGM4SnIwSVhCekgwSnd2bHljY0xOd0ZqQnpIMEp3bytiY3NMZVdXbkJ6SDBKd3BQSGI4TGgzVWpCekgwSndpU2diY0pNOFRuQnpIMEp3bENoWk1JWU14WEJ6SDBKd3FvQmFNSmU1eC9CekgwSnd1L3hZTUxHUlF6QnpIMEp3bDhDWGNKbVF3WEJ6SDBKd2loVlVNSzlYL25BekgwSndoV2pWTUk2MGZyQXpIMEp3aHdLVE1JQ1F2ekF6SDBKd2xMVFI4SXh0Z0hCekgwSnd0L2xQOEthQ2cvQnpIMEp3ajVQUE1MM2t4akJ6SDBKd2xvTU9jS2IxaVBCekgwSndsc3FOc0lVcFREQnpIMEp3dk8xTWNKSUVVN0J6SDBKd29NMU1NSXlPRjdCekgwSndxazVMOEpDLzI3QnpIMEp3bC9HTHNKVkVZREJ6SDBKd2kybk1NSmFnWm5CekgwSndwZCtMOExQTkpIQnpIMEp3cEpTTXNMTWNxSEJ6SDBKd2dkNk5NSVg2YWpCekgwSnd0WjRQY0kxU0x2QnpIMEp3b0FZT3NJVTdyWEJ6SDBKd2prb1FjTGZ2ci9CekgwSndzY1hSY0lMUU1QQnh2b0R3aFMwVWNKbU9zSEJ4dm9Ed29YTFRjS0U1c0RCeHZvRHdnV2FWY0xHa3NEQnh2b0R3cE50V2NKaDhyN0J4dm9Ed2xlZ1lNSWk1YmpCeHZvRHduTGlZOEs4a0xUQnh2b0R3b3ZZWnNJQ2RLL0J4dm9Ed3FWMmFjS1NvNm5CeHZvRHdpYUNiY0xzUjV6Qnh2b0R3anZmYnNLajhwVEJ4dm9Ed3V2RGI4S3RWSTNCeHZvRHdwZ3NjTUxFaklYQnh2b0R3Z040YnNLUTUxekJ4dm9Ed2xPRmI4Sy8rV3ZCeHZvRHd1L3piTUs5ZWs3Qnh2b0R3am4vYXNLaDdVREJ4dm9Ed2p6VVlzSzJrQi9CeHZvRHdoUGxaY0xvU0NuQnh2b0R3cVI3WDhLZmRSZkJ4dm9Ed3NQb1c4SlBHQkhCeHZvRHdoSm1VTUsrVGduQnh2b0R3cVJPVk1KLzlnbkJ4dm9Ed2lDQVRNTHRuUXJCeHZvRHdwU3NTTUs4M2czQnh2b0R3dE41UWNJOCtSbkJ4dm9Ed3JRM1BzSUVvaUxCeHZvRHdweEJPOEovMnl6Qnh2b0R3b0dqT01KZmZEakJ4dm9Ed2dDWU5NS3dNMVBCeHZvRHd1MDZNOEk1M21IQnh2b0R3ajlXTXNJekduSEJ4dm9Ed28vdE1jTDlWSURCeHZvRHdpU2lNOEw2YlpmQnh2b0R3dGFVTXNMZjVJL0J4dm9Ed2pZbU5jSmJwSjdCeHZvRHd2QWFOOExyYXFYQnh2b0R3dXBGUDhKbUdiYkJ4dm9Ed2hnMVBNSlFQYkhCeHZvRHdvT2VRc0x6SnJyQnh2b0R3bU14UnNLWVZiM0I2S0wyd2I3MVRjSU13NzNCeHZvRHdoandTY0tBbUwvQjZLTDJ3VlpNU3NMMGhiekI2S0wyd1oyclVjS3RFcjdCNktMMndRTmZWY0tNYzczQjZLTDJ3ZklBV2NJOTZMdkJ4dm9Ed2xNZlhjS3RYN3pCNktMMndjcUNYTUxuZHJuQjZLTDJ3VjNXWDhKNUtiYkI2S0wyd1RmdVlzSTVEYkxCNktMMndlcTlaY0xLTXEzQjZLTDJ3UkU2YU1LL3JhZkJ4dm9Ed2pDeWE4TG1OcVBCNktMMndhbFlhc0pobEtIQjZLTDJ3U0VSYk1KUy81ckI2S0wyd1laY2JjSWdDWlRCNktMMndhQTFic0x6ell6QjZLTDJ3ZitZYnNMdmFvWEJ4dm9Ed3B3WGNNS2hkSHZCNktMMndSU0Zic0xWKzN2QjZLTDJ3VFA2YmNLdlNXM0I2S0wyd1lqNmJNTHcrbDdCNktMMndSeUthOElzU1ZIQjZLTDJ3Y091YWNMTGEwVEI2S0wyd2ZSdlo4SzVsampCeHZvRHdyNmhhTUx0ZGpUQjZLTDJ3Y2ZXWk1LdCtTM0I2S0wyd2JQdFljS0Z2eVRCNktMMndYM0FYc0tMRFIzQjZLTDJ3ZlZiVzhMREFoZkI2S0wyd2RQTlY4S2Z0eExCeHZvRHdoQXFXTUtEa2d6QjZLTDJ3V29rVk1Kd1BSREI2S0wyd1lodVVNSXZuZy9CNktMMndTRzdUTUppM0JEQjZLTDJ3VFFaU2NJRDh4UEJ4dm9Ed3RYNlJNSWRCQlBCNktMMndWK1hSY0tuMVJqQjZLTDJ3Y3hEUXNLTmNCL0I2S0wyd2U0clA4SUtxU2ZCNktMMndUeGNQTUx4WFRIQjZLTDJ3UlBnT2NJRWFEekJ4dm9Ed3Zsbk5zSzJWVVhCNktMMndYN0JOOEs3bWtqQjZLTDJ3UVlKTnNMa3hGWEI2S0wyd2FPOU5NSTlzV1BCNktMMndZcmtNOEtxSjNMQjZLTDJ3U2lCTThMU2RvREI2S0wyd1JLVk04TFk0NGZCeHZvRHdvb0NNc0p6SjRqQjZLTDJ3ZlVmTk1MblBJL0I2S0wyd1o0Zk5jSktaSmJCNktMMndRZVFOc0lpUFozQjZLTDJ3V1pyT01MV3E2UEI2S0wyd1RTcU9zSm5scW5CeHZvRHdtdDRPY0pOcHF2QjZLTDJ3V05EUGNMdDVLN0I2S0wyd1hRc1FNTC9nYlBCNktMMndhbFpROEw4V3JmQjZLTDJ3VEcrUnNKZFlMckIraW5pd1RjZVNzSTZENzdCK2luaXdhTGdUY0xIVkwvQitpbml3ZGV2VWNLTHByL0IraW5pd1lSOFZjSXBBNy9CK2luaXdVUTNXY0pQYmIzQitpbml3UTdSWE1KSzY3ckIraW5pd1ZrN1lNSk9oN2ZCK2luaXdWVm9ZOEw2VHJQQitpbml3VHRMWnNKbVU2N0IraW5pd1Z2WWFNS29xS2pCK2luaXdXd0ZhOEtqWmFMQitpbml3YVRKYk1LZm81dkIraW5pd2VFZGJzTGlmWlRCK2luaXdjVDhic0pRRVkzQitpbml3Y3hpYjhMWmU0WEIraW5pd1ZwT2I4STh1SHZCK2luaXdjUy9ic0szb1d6Qitpbml3VVc1YmNKQThWM0IraW5pd1FZL2JNTDA0VS9CK2luaXdmNVdhc0syckVMQitpbml3ZGdJYU1MVGhqYkIraW5pd2UxZFpjSk1vU3ZCK2luaXdmaGdZc0lkS0NMQitpbml3UkFlWDhLVlFSckIraW5pd1Z1aVc4S0pEUlRCK2luaXdmTDdWOElRcFEvQitpbml3WWM1Vk1MM0dRM0IraW5pd1UxcVVNSjJkZ3pCK2luaXdhR2RUTUludlEzQitpbml3ZVRpU01MZjZCREIraW5pd1JsSlJjTGk3QlhCK2luaXdjL2VRY0xrdEJ6Qitpbml3ZEd4UHNLSEpTWEIraW5pd2V6T084SzRIQy9CK2luaXdjcEJPY0l4Y2pyQitpbml3YnNVTjhJNStFYkIraW5pd1lKUU5jSktmRlRCK2luaXdVajhNOEs3eDJMQitpbml3V1VkTThMd29ISEIraW5pd1Z5M01zTG5aWURCK2luaXdjM0xNc0tuQllqQitpbml3V1phTThMamtJL0IraW5pd2VKZ05NSWg2WmJCK2luaXdSN2JOY0svOEozQitpbml3U3ZETjhKaWk2VEIraW5pd1ZBUk9zSmFucXJCK2luaXdUMjhQTUlmRWJEQitpbml3Uys1UDhLenpiVEIraW5pd1JmOFFzTDN3TGpCK2luaXdjcDNSc0w2MnJ2Qm8vM1R3VDJ0U01KdldjckJvLzNUd2JzM1RjS3I0c3ZCby8zVHdiRFJVY0pyUmN6Qm8vM1R3WTVvVnNJVWdNdkJvLzNUd2NmcFdzTGJsY25Cby8zVHdUUkRYOEplanNiQm8vM1R3VUJqWThMdmRjTEJvLzNUd1Q4NVo4SUhYYjNCby8zVHdiNjFhc0pKV0xmQm8vM1R3YVRLYmNMMWY3REJvLzNUd1lKcmNNS3o3NmpCby8zVHdiNk5jc0lIeHFEQm8vM1R3YlVvZE1McUk1akJvLzNUd2ZBMWRjSTlMSS9Cby8zVHdTeXhkY0lxQTRiQm8vM1R3WHVZZGNKcG0zbkJvLzNUd1VEc2RNTHZZV2ZCby8zVHdUQ3ZjOEs1bzFYQm8vM1R3VkhtY2NJNnFFVEJvLzNUd2RHWWI4SUh0RFRCby8zVHdmN1BiTUtsQnliQm8vM1R3UnlYYWNJODNoakJvLzNUd1IvN1pjTGZiQTNCby8zVHdhY0tZc0xrNFFQQm8vM1R3WlhWWGNKdXgvakFvLzNUd2Voc1djSk1JZTdBby8zVHdXemlWTUpsL09mQW8vM1R3WGhJVU1KcWNlYkFvLzNUd1pteFM4S2VodW5Bby8zVHdXQXdSOEtQTC9IQW8vM1R3ZlRXUXNKeVRmM0FvLzNUd2VlMlBzS2kxd2JCby8zVHdlamdPc0p2Q1JIQm8vM1R3V2xrTjhMeUVoM0JvLzNUd1lKUE5NS1l3eXJCby8zVHdhT3VNY0lnNURuQm8vM1R3V2lNTDhKL04wckJvLzNUd1hMeExjS3hlMXZCby8zVHdUdmtMTUlQYTIzQm8vM1R3ZnhvTE1JaXZYL0JvLzNUd2EyQkxNSVNGSW5Cby8zVHdla3RMY0xITUpMQm8vM1R3ZlpxTHNMZ0Q1dkJvLzNUd2RVek1NS2hqYVBCby8zVHdWaUJNc0s0aDZ2Qm8vM1R3U2xLTmNMdjNiTEJvLzNUd1JDRE9NS25jcm5Cby8zVHdRY2ZQTUpQSzcvQm8vM1R3WUVQUU1MUjhNUEJvLzNUd1pGRVJNTGlyOGZCby8zVHdRQlJTTUw4YTgzQm8vM1R3WUVOVGNJaUJzL0JvLzNUd1NYYVVjSWpiYy9Cby8zVHdaR2pWc0pPbjg3Qm8vM1R3V2xXVzhMK244ekJvLzNUd2IzZlg4SWtkOG5Cby8zVHdUb3RaTUtYTWNYQm8vM1R3WGt0YU1LSjRML0JvLzNUd1YvUWE4S0JtYm5Cby8zVHdUVUhiOExIZGJMQm8vM1R3UW5GY2NJM2txckJvLzNUd2NUK2M4S2hEcUxCby8zVHdXbXJkY0p0RFpuQm8vM1R3VHZFZHNMNXNvL0JvLzNUd2NORWQ4TCtKSWJCby8zVHdRSXJkOEkwRkhuQm8vM1R3VjUzZHNML0VXYkJvLzNUd2Fvc2RjSlhrRlBCby8zVHdTTlFjOExNMlVIQm8vM1R3VWZwY01MY05USEJvLzNUd2NnQmJzTGI1eUhCby8zVHdXZWxhc0ozTFJUQm8vM1R3YW5oWnNJUlBnakJvLzNUd2N6RllzTHRrL3pBby8zVHdXSmlYc0tHOHV6QW8vM1R3U1hKV2NJWTErSEFvLzNUd2FZTVZjS0NidHZBby8zVHdRSkFVTUtLMHRuQW8vM1R3WmQyUzhLekNkM0FvLzNUd2IvRFJzSUNCK1hBby8zVHdXbzZRc0plcXZIQW8vM1R3ZTdzUGNKU1lBSEJvLzNUd2Ezc09jSnBBZ3pCby8zVHdjbEpOc0tBa0JqQm8vM1R3ZkFTTThMeTF5YkJvLzNUd1I1Vk1NSWFuemJCby8zVHdXRWJMc0pPcGtmQm8vM1R3YjF1TE1LdnFGbkJvLzNUd2ZCVks4S1hYV3pCby8zVHdXUFZLc0ozZVgvQm8vM1R3U1h2S3NLdFY0bkJvLzNUd2NxaUs4TEEySkxCby8zVHdYdnRMTUtRR1p6Qm8vM1R3UVRLTHNMWjlLVEJvLzNUd2VNd01jTE9ScTNCby8zVHdXQVlOTUxUN2JUQm8vM1R3Y1IwTjhJSnk3dkJvLzNUd1gwNE84SzN3c0hCby8zVHdWdFVQOExHdk1iQm8vM1R3Y08zUThJZHBjckJGYmZZd1lFTlRjSWlCcy9CRmJmWXdRQlJTTUw4YTgzQkZiZll3U1hhVWNJamJjL0JGYmZZd1pHalZzSk9uODdCRmJmWXdXbFdXOEwrbjh6QkZiZll3YjNmWDhJa2Q4bkJGYmZZd1RvdFpNS1hNY1hCRmJmWXdYa3RhTUtKNEwvQkZiZll3Vi9RYThLQm1ibkJGYmZZd1RVSGI4TEhkYkxCRmJmWXdRbkZjY0kza3FyQkZiZll3Y1QrYzhLaERxTEJGYmZZd1dtcmRjSnREWm5CRmJmWXdUdkVkc0w1c28vQkZiZll3Y05FZDhMK0pJYkJGYmZZd1FJcmQ4STBGSG5CRmJmWXdWNTNkc0wvRVdiQkZiZll3YW9zZGNKWGtGUEJGYmZZd1NOUWM4TE0yVUhCRmJmWXdVZnBjTUxjTlRIQkZiZll3Y2dCYnNMYjV5SEJGYmZZd1dlbGFzSjNMUlRCRmJmWXdhbmhac0lSUGdqQkZiZll3Y3pGWXNMdGsvekFGYmZZd1dKaVhzS0c4dXpBRmJmWXdTWEpXY0lZMStIQUZiZll3YVlNVmNLQ2J0dkFGYmZZd1FKQVVNS0swdG5BRmJmWXdaZDJTOEt6Q2QzQUZiZll3Yi9EUnNJQ0IrWEFGYmZZd1dvNlFzSmVxdkhBRmJmWXdlN3NQY0pTWUFIQkZiZll3YTNzT2NKcEFnekJGYmZZd2NsSk5zS0FrQmpCRmJmWXdmQVNNOEx5MXliQkZiZll3UjVWTU1JYW56YkJGYmZZd1dFYkxzSk9wa2ZCRmJmWXdiMXVMTUt2cUZuQkZiZll3ZkJWSzhLWFhXekJGYmZZd1dQVktzSjNlWC9CRmJmWXdTWHZLc0t0VjRuQkZiZll3Y3FpSzhMQTJKTEJGYmZZd1h2dExNS1FHWnpCRmJmWXdRVEtMc0xaOUtUQkZiZll3ZU13TWNMT1JxM0JGYmZZd1dBWU5NTFQ3YlRCRmJmWXdjUjBOOElKeTd2QkZiZll3WDA0TzhLM3dzSEJGYmZZd1Z0VVA4TEd2TWJCRmJmWXdjTzNROElkcGNyQmQxTUp3bFdwVGNKTWpjTEI3ZzRLd20xdVRjSWo3c2JCN2c0S3dsRTFTY0p1Z01YQjdnNEt3b2cyWHNKWCtjSEI3ZzRLd2c0cldzS015c1RCZDFNSndvT1RXY0lMamNEQjdnNEt3cWtNWXNKTktyN0JkMU1Kd3VqeVlNSkdXcnJCN2c0S3dtTXJic0p6YmFiQjdnNEt3cDY1YThJdGRxM0JkMU1Kd2dBQWFzSWl1cXJCN2c0S3dtRW5jTUlQMXA3QmQxTUp3cGNrYnNLcEM1M0I3ZzRLd3ByN2NzS2t4SHJCN2c0S3dwQVNjOExCOG9YQmQxTUp3bzNmY01LUnc0WEI3ZzRLd201YmNzTEYwV25CZDFNSndqczBjTUpxcG12QjdnNEt3bkpuYmNJS3NEckJkMU1Kd2hhU2E4Sm5qei9CN2c0S3dvVFFhc0tWQ2kzQjdnNEt3bHpSWjhJQ3pTREJkMU1Kd2s1WVpzSVdXQ2ZCN2c0S3dvSGlYTUxhVUFiQmQxTUp3aFVlWE1LRGtRN0I3ZzRLd3RqSVdNSTBYUUhCN2c0S3dyeVBWTUtZQS8zQWQxTUp3dFZVVk1KN1F3ZkI3ZzRLd2h2VFI4THl5QUxCZDFNSndxWnFTTUwwUXd2QjdnNEt3cURIUThKU2F3akI3ZzRLd29MeFA4SnpDUkRCZDFNSndrSUxRY0ovcVJmQjdnNEt3b2xFTnNLMmNUSEJkMU1Kd2lqK044TEs2VGJCN2c0S3dzYlNNOElvZ3ovQjdnNEt3c2pXTWNMMHNVN0JkMU1Kd3BMWk04SytSbExCN2c0S3dwanJMc0pEUElEQmQxTUp3cHNlTWNKMWE0REI3ZzRLd284Q0w4SzN6SWpCZDFNSnd1N0pNY0xQVzVEQjdnNEt3cnlpTDhJZlJwSEJkMU1Kd2hac05zSlBaNmJCN2c0S3dycVdOTUw5MXFqQjdnNEt3cVV0TjhLOHFhL0JkMU1Kd3Q2bE84TDlnckxCN2c0S3dzMHNPc0tHeUxYQmQxTUp3aFBnUmNKQzVyN0I3ZzRLd3FZYlJjS1dCc1BCTnpNRXd0LzNUY0xYdHJ6Qk56TUV3cEpoU3NJMWdMdkJOek1Fd2dJNVhNSWVnYmpCTnpNRXduZkpXTUsxNWJyQk56TUV3anQ3WDhMb1JMWEJOek1Fd3JmR2FjSXhHNkhCTnpNRXdpMnpaOEs4RktmQk56TUV3akoyYThKMnFKckJOek1Fd2x2ZGJjSytmSHpCTnpNRXd0L3diY0ttaElYQk56TUV3azVWYmNKQkYyN0JOek1Fd2tZZ2FjS05Ea2JCTnpNRXdpN3Rac0l6ZHpyQk56TUV3bzVoWk1LRkVUREJOek1Fd2pBWVc4Sm5raG5CTnpNRXdwcWNWOEtuWFJYQk56TUV3a3NHVk1KbThCTEJOek1Fd3JFMFNjS2ZraGJCTnpNRXdpZkZSY0xJV3h2Qk56TUV3dTZDUXNJNTFDSEJOek1Fd3Z0S09zS1dORDdCTnpNRXduTTNPTUtwSjByQk56TUV3dmFITnNJa0RWZkJOek1Fd2tzTk5NSmdxb0RCTnpNRXdzNGdOTUtzOElmQk56TUV3dHlvTk1Ka0k0L0JOek1Fd3ViZE9NSzdKNlBCTnpNRXd2MFFPOEp2ODZqQk56TUV3cDZjUGNKSEpxN0JOek1Fd3ZubFJzTFNaYm5CRjVVS3doRllRY0xPcklYQjA1VUt3dEtGUDhKVlJYM0IwNVVLd2xsMVA4SktBb2JCRjVVS3dzZG1RY0xiTG43QkY5Z0R3dEtGUDhKVlJYM0IzdmNEd2hGWVFjTE9ySVhCRjlnRHdsbDFQOEpLQW9iQjN2Y0R3c2RtUWNMYkxuN0JGNVVLd2wwa1FzTCtXWEhCMDVVS3dobnBRY0k3aUdIQjA1VUt3aXBhUU1KSzVtN0JGNVVLd28rSVE4S1ZhbVhCRjlnRHdobnBRY0k3aUdIQjN2Y0R3bDBrUXNMK1dYSEJGOWdEd2lwYVFNSks1bTdCM3ZjRHdvK0lROEtWYW1YQjA1VUt3aThoUk1LOXdGWEJGNVVLd3NlRFJjSXM1bHJCRjlnRHdpOGhSTUs5d0ZYQjN2Y0R3c2VEUmNJczVsckJGNVVLd3R2L1I4SnRRbExCMDVVS3dqRWpTc0lKN1VUQjA1VUt3cGpwUnNLVkUwekJGNVVLd3YvZ1NzSUM0RXZCRjlnRHdqRWpTc0lKN1VUQjN2Y0R3dHYvUjhKdFFsTEJGOWdEd3BqcFJzS1ZFMHpCM3ZjRHd2L2dTc0lDNEV2QjA1VUt3dWVwVGNJWG5VREJGNVVLd3YwR1RzSllCa2pCRjlnRHd1ZXBUY0lYblVEQjN2Y0R3djBHVHNKWUJrakIzdmNEd2lHVFZNSmZlMGpCRjlnRHdrUldVY0lCVkQvQkY5Z0R3aTcvVk1Jb0lFSEIzdmNEd3BsT1VjS0Y0RWJCMDVVS3drUldVY0lCVkQvQkY1VUt3aUdUVk1KZmUwakIwNVVLd2k3L1ZNSW9JRUhCRjVVS3dwbE9VY0tGNEViQjN2Y0R3Z2l3VjhMeXhFekJGOWdEd3JWN1dNSng3VVhCRjVVS3dnaXdWOEx5eEV6QjA1VUt3clY3V01KeDdVWEIzdmNEd3R6cVhNSjVpRnpCRjlnRHd0V2tXOElqaGszQkY5Z0R3akpYWHNJOGxWZkIzdmNEd25hQ1dzSklqVlBCMDVVS3d0V2tXOElqaGszQkY1VUt3dHpxWE1KNWlGekIwNVVLd2pKWFhzSThsVmZCRjVVS3duYUNXc0pJalZQQjN2Y0R3a2pPWHNJTlVtZkJGOWdEd3FCMFlNSXpxbVBCRjVVS3drak9Yc0lOVW1mQjA1VUt3cUIwWU1JenFtUEIzdmNEd21xNFlNSlRMNERCRjlnRHduWGxZY0xiUFhIQkY5Z0R3cFNaWXNKUHVIL0IzdmNEd3BjWFlNSlBjWFBCMDVVS3duWGxZY0xiUFhIQkY1VUt3bXE0WU1KVEw0REIwNVVLd3BTWllzSlB1SC9CRjVVS3dwY1hZTUpQY1hQQjN2Y0R3cktwWU1LMHhJYkJGOWdEd2hpSllzTEhPNGZCRjVVS3dyS3BZTUsweEliQjA1VUt3aGlKWXNMSE80ZkIzdmNEd3V1SFhzTFRKcFBCRjlnRHdzRzBZY0pNYTQ3QkY5Z0R3dEVsWU1KUkdwWEIzdmNEd2h2c1g4SWhMNDNCMDVVS3dzRzBZY0pNYTQ3QkY1VUt3dXVIWHNMVEpwUEIwNVVLd3RFbFlNSlJHcFhCRjVVS3dodnNYOEloTDQzQjN2Y0R3clNNWE1JSWFaakJGOWdEd3I3dFhjSVIvcHJCRjVVS3dyU01YTUlJYVpqQjA1VUt3cjd0WGNJUi9wckIzdmNEd25vdlY4SWQ3Si9CRjlnRHdsTWxXOEtrMUovQkY5Z0R3cnZyVjhMclo2UEIzdmNEd3A0UVdzTG51cHpCMDVVS3dsTWxXOEtrMUovQkY1VUt3bm92VjhJZDdKL0IwNVVLd3J2clY4THJaNlBCRjVVS3dwNFFXc0xudXB6QjN2Y0R3bjBKVk1MejJLSEJGOWdEd2dabFZNTGxqNlhCRjVVS3duMEpWTUx6MktIQjA1VUt3Z1psVk1MbGo2WEJGNVVLd3VMQlVNTGNhNkxCMDVVS3dyNFBUY0piVHFYQjA1VUt3cWk0VU1Kdk5LYkJGNVVLd2xoOVRjSnVucUhCRjlnRHdyNFBUY0piVHFYQjN2Y0R3dUxCVU1MY2E2TEJGOWdEd3FpNFVNSnZOS2JCM3ZjRHdsaDlUY0p1bnFIQjA1VUt3amVUU2NLMjU2TEJGNVVLd25KZ1NzS2tlWi9CRjlnRHdqZVRTY0syNTZMQjN2Y0R3bkpnU3NLa2VaL0JGNVVLd2dLT1I4SjhGWnpCMDVVS3dybTNROExTRTVyQjA1VUt3aFZxUnNKZ0c1L0JGNVVLd3AwbFJjTGlsNWZCRjlnRHdybTNROExTRTVyQjN2Y0R3Z0tPUjhKOEZaekJGOWdEd2hWcVJzSmdHNS9CM3ZjRHdwMGxSY0xpbDVmQjA1VUt3a3FhUWNKV0NaVEJGNVVLd2pKQ1E4SVlNNUxCRjlnRHdrcWFRY0pXQ1pUQjN2Y0R3akpDUThJWU01TEJGNVVLd3VINFFjSjJJNHpCMDVVS3duVXBRTUtDUDQzQjN2Y0R3dUg0UWNKMkk0ekJGOWdEd25VcFFNS0NQNDNCU3k0RHdoRllRY0xPcklYQlN5NER3dUg0UWNKMkk0ekJTeTREd3NkbVFjTGJMbjdCU3k0RHdsMGtRc0wrV1hIQlN5NER3bytJUThLVmFtWEJTeTREd3NlRFJjSXM1bHJCU3k0RHd0di9SOEp0UWxMQlN5NER3di9nU3NJQzRFdkJTeTREd3YwR1RzSllCa2pCU3k0RHdwbE9VY0tGNEViQlN5NER3aUdUVk1KZmUwakJTeTREd2dpd1Y4THl4RXpCU3k0RHduYUNXc0pJalZQQlN5NER3dHpxWE1KNWlGekJTeTREd2tqT1hzSU5VbWZCU3k0RHdwY1hZTUpQY1hQQlN5NER3bXE0WU1KVEw0REJTeTREd3JLcFlNSzB4SWJCU3k0RHdodnNYOEloTDQzQlN5NER3dXVIWHNMVEpwUEJTeTREd3JTTVhNSUlhWmpCU3k0RHdwNFFXc0xudXB6QlN5NER3bm92VjhJZDdKL0JTeTREd24wSlZNTHoyS0hCU3k0RHd1TEJVTUxjYTZMQlN5NER3bGg5VGNKdW5xSEJTeTREd25KZ1NzS2tlWi9CU3k0RHdnS09SOEo4Rlp6QlN5NER3cDBsUmNMaWw1ZkJTeTREd2pKQ1E4SVlNNUxCc3VuOHdRZkNSY0xlMG9uQnN1bjh3YU5KUmNJbS9JVEJzdW44d2FoVVJjSndEb0RCc3VuOHdaWGlSY0xBZ1hiQnN1bjh3VDN0UnNKb2ttM0JzdW44d2ZSb1NNTE9zbVhCc3VuOHdTUkZTc0lLTzEvQnN1bjh3ZnBzVE1KNmMxckJzdW44d1Z6SVRzS1drVmZCc3VuOHdlbzhVY0tndFZiQnN1bjh3U212VThJeDZWZkJzdW44d2J3RFZzTGVIbHZCc3VuOHdaRWdXTUs1TW1EQnN1bjh3UVB1V2NMejYyYkJzdW44d2VwWFc4SlYvMjdCc3VuOHdYSk9YTUtFRW5qQnN1bjh3ZGZHWE1MNTM0REJzdW44d2RPN1hNS3Z6WVhCc3VuOHdlUXRYTUkrbTRyQnN1bjh3VDBqVzhMckVvL0JzdW44d1llbldjSzNBcFBCc3VuOHdWZkxWOEtZUHBiQnN1bjh3WCtqVmNKaW9wakJzdW44d1IxSVU4SlVFNXJCc3VuOHdaSFRVTUpQZ1pyQnN1bjh3VkpoVHNLRjU1bkJzdW44d2J3TVRNS3ZUSmpCc3VuOHdlanZTY0xCd3BYQnN1bjh3WFlpU01Ja1pwTEJzdW44d1krNFJzSjBYSTdCWmNQNXdhTkpSY0ltL0lUQlpjUDV3UWZDUmNMZTBvbkJaY1A1d2FoVVJjSndEb0RCWmNQNXdaWGlSY0xBZ1hiQlpjUDV3VDN0UnNKb2ttM0JaY1A1d2ZSb1NNTE9zbVhCWmNQNXdTUkZTc0lLTzEvQlpjUDV3ZnBzVE1KNmMxckJaY1A1d1Z6SVRzS1drVmZCWmNQNXdlbzhVY0tndFZiQlpjUDV3U212VThJeDZWZkJaY1A1d2J3RFZzTGVIbHZCWmNQNXdaRWdXTUs1TW1EQlpjUDV3UVB1V2NMejYyYkJaY1A1d2VwWFc4SlYvMjdCWmNQNXdYSk9YTUtFRW5qQlpjUDV3ZGZHWE1MNTM0REJaY1A1d2RPN1hNS3Z6WVhCWmNQNXdlUXRYTUkrbTRyQlpjUDV3VDBqVzhMckVvL0JaY1A1d1llbldjSzNBcFBCWmNQNXdWZkxWOEtZUHBiQlpjUDV3WCtqVmNKaW9wakJaY1A1d1IxSVU4SlVFNXJCWmNQNXdaSFRVTUpQZ1pyQlpjUDV3VkpoVHNLRjU1bkJaY1A1d2J3TVRNS3ZUSmpCWmNQNXdlanZTY0xCd3BYQlpjUDV3WFlpU01Ja1pwTEJaY1A1d1krNFJzSjBYSTdCcU9QeHdhTkpSY0ltL0lUQnFPUHh3UWZDUmNMZTBvbkJxT1B4d2FoVVJjSndEb0RCcU9QeHdaWGlSY0xBZ1hiQnFPUHh3VDN0UnNKb2ttM0JxT1B4d2ZSb1NNTE9zbVhCcU9QeHdTUkZTc0lLTzEvQnFPUHh3ZnBzVE1KNmMxckJxT1B4d1Z6SVRzS1drVmZCcU9QeHdlbzhVY0tndFZiQnFPUHh3U212VThJeDZWZkJxT1B4d2J3RFZzTGVIbHZCcU9QeHdaRWdXTUs1TW1EQnFPUHh3UVB1V2NMejYyYkJxT1B4d2VwWFc4SlYvMjdCcU9QeHdYSk9YTUtFRW5qQnFPUHh3ZGZHWE1MNTM0REJxT1B4d2RPN1hNS3Z6WVhCcU9QeHdlUXRYTUkrbTRyQnFPUHh3VDBqVzhMckVvL0JxT1B4d1llbldjSzNBcFBCcU9QeHdWZkxWOEtZUHBiQnFPUHh3WCtqVmNKaW9wakJxT1B4d1IxSVU4SlVFNXJCcU9QeHdaSFRVTUpQZ1pyQnFPUHh3VkpoVHNLRjU1bkJxT1B4d2J3TVRNS3ZUSmpCcU9QeHdlanZTY0xCd3BYQnFPUHh3WFlpU01Ja1pwTEJxT1B4d1krNFJzSjBYSTdCWTdzTndvNFRSc0xTMklUQlk3c053dUo4UmNKUkdJREJZN3NOd2daeVJjSVc5WVRCWTdzTnd0TWRSc0xYUDREQlk3c053dHlEUnNKWlhJbkJZN3NOd3N6b1JjSXF1NG5CWTdzTnd0WnBSOEx0bDQzQlk3c053Z1RjUnNJbU5ZN0JZN3NOd20yN1NNSXlYSkhCWTdzTndnMUJTTUwwTUpMQlk3c053dU5wU3NJRGY1VEJZN3NOd2swSVNzSUNncFhCWTdzTndtWmlUTUpLM1piQlk3c053dDhkVE1JMUE1akJZN3NOd3VxT1RzS0pYSmpCWTdzTndtOXFUc0tHbUpuQlk3c053aHpYVU1MLzY1akJZN3NOd2tmVVVNSS9NSnJCWTdzTndtRkFVOEsrdzVuQlk3c053bkFoVThKbmhaakJZN3NOd3FlVFZjTEFWNWpCWTdzTndrMVVWY0k4TFpmQlk3c053aGEwVjhJdS9KWEJZN3NOd2hWWFY4S0o4cFRCWTdzTnd1Q0pXY0p0eTVMQlk3c053a29UV2NKQTdwSEJZN3NOd24wQVc4SXA2WTdCWTdzTndvQjFXc0lpUW83Qlk3c053cEFIWE1MYWdJckJZN3NOd2tCdVc4SkZGNHJCWTdzTndwZVRYTUxOdzRYQlk3c053cWJ5VzhKSG5JWEJZN3NOd25TZVhNSUw1NERCWTdzTnd1MzhXOEpPQTRIQlk3c053cCtNVzhLTi8zakJZN3NOd3E4blhNTHNRWGpCWTdzTndxT21Xc0ppaUhEQlk3c053blUwVzhMeFRXL0JZN3NOd2d4VldjTFovMmpCWTdzTndtelBXY0pUVm1mQlk3c053cGFtVjhJMHVtTEJZN3NOd2l3SVdNSTN0R0RCWTdzTndoU3VWY0tsL1YzQlk3c053cHp5VmNMU3NWdkJZN3NOd3BDQlU4SW8vMXJCWTdzTndncW1VOEl3aDFqQlk3c053bUE1VWNJOTRGbkJZN3NOd2pVOFVjSytWMWZCWTdzTndoalFUc0xDTUZqQlk3c053Z252VHNKeHJWckJZN3NOd3M5OFRNSzlDRnZCWTdzTndpdThUTUxHWFYzQlk3c053bVJjU3NMY3YxL0JZN3NOd21XNVNzSW0wMkhCWTdzTndwcUdTTUpsSVdiQlk3c053akQ5U01LNzIyZkJZN3NOd3ZzUFI4THM1VzNCWTdzTnd2aWFSOEw0TTIvQlk3c053dWtJUnNLSnRuYkJZN3NOd2pxaVJzS3ppWGZCMzNnTXdnclBTc0xXQklUQjMzZ013dURVU3NJL2FJSEIzM2dNd3RjT1M4SThsWWJCMzNnTXdubVJTOExFL0lqQjMzZ013bHBrVHNMd1FJN0IzM2dNd3NSRlRjS0w2SXpCMzNnTXdudWdUOEtrR28vQjMzZ013bFhzVU1JamJJL0IzM2dNd21RNVVzTGNNWS9CMzNnTXdveWRWTUlxS28zQjMzZ013dUdaVmNKNWM0dkIzM2dNd2hkalZzSnlYWW5CMzNnTXdtUHdWc0pxLzRiQjMzZ013cGs3VjhMZGM0VEIzM2dNd2dCL1ZzSzV2bm5CMzNnTXdxTUJWOExLalg3QjMzZ013anUvVmNJNWQzWEIzM2dNd3JiS1ZNSWs1M0hCMzNnTXdpR3NVOEphTm0vQjMzZ013aWNrVWNMMjMyekIzM2dNd2hYWFQ4S0hWRzNCMzNnTXdsZVhUc0tLMjI3QjMzZ013dkJ5VGNMaFkzSEIzM2dNd3BsMlRNSkswWFRCMzNnTXdoVWdTOEpydVgzQjMzZ013cE53UzhLUzZJUEIzM2dNd3RGMVM4TEVqNEhCMzNnTXd1ZXBTOEpyTm9iQjMzZ013a3NmVE1LS1g0akIzM2dNd3A3TFRNTEFTNHJCMzNnTXdqNVJUTUtESUl2QjMzZ013bG1uVGNLTTVZdkIzM2dNd3VDb1RzSUdHNDNCMzNnTXd2WEVUOEtvM28zQjMzZ013aW52VU1Mako0N0IzM2dNd25RYVVzS0Y4NDNCMzNnTXdpRjVVOEpiYm83QjMzZ013c1U1VThMV1E0M0IzM2dNd290QVZNS0VJSXpCMzNnTXdrd2pWY0pPbG9yQjMzZ013aHJZVmNKcXRvakIzM2dNd2hOWFZzTFdsWWJCMzNnTXdxaWFWc0pZVElUQjMzZ013bTlCVjhKSTE0SEIzM2dNd3VhZlZzS0w4NEhCMzNnTXdwTm1Wc0p0UzMvQjMzZ013aTd4VmNJcitYckIzM2dNd3R4RVZjSzhJSGZCMzNnTXdpQnBWTUlpN1hQQjMzZ013cGxuVThJdGduSEIzM2dNd29aTFVzTHQrbS9CMzNnTXd2OXZVc0x6Z20zQjMzZ013bE1oVWNKMWFHL0IzM2dNd2dYMlQ4STIwVy9CMzNnTXdyUFdUc0tUTUhIQjMzZ013dkhQVGNJdWQzUEIzM2dNd2kvdFRNS2hpM2JCMzNnTXdtS3RTOEpkL1hqQjMzZ013bDg0VE1KclMzckIzM2dNd21hNVM4S1ZqSDdCUFNnTXdsYkJTOEp3Mm9QQlBTZ013a3JHUzhLSG80SEJQU2dNd20vM1M4SURCNGJCUFNnTXdqUm1UTUx1RUlqQlBTZ013czRJVGNKZjRZbkJQU2dNd2lQWVRjSU1aSXZCUFNnTXdpVExUc0lTaUl6QlBTZ013alBYVDhLcFFJM0JQU2dNd3BQd1VNTEVoWTNCUFNnTXd2c0tVc0phVkkzQlBTZ013aGNhVThLVXJvekJQU2dNd2dvU1ZNS3dtNHZCUFNnTXd2L25WTUs0SjRyQlBTZ013cHlTVmNMbllvakJQU2dNd21vS1ZzSU1ZWWJCUFNnTXdqQktWc0tWT0lUQlBTZ013aU5QVnNLdEFZTEJQU2dNd2dvWlZzSTlxbi9CUFNnTXdrV3FWY0psbG52QlBTZ013cXNIVmNKLzlYZkJQU2dNd2xZNFZNSWc4SFRCUFNnTXdsZEZVOElYcUhMQlBTZ013a2c1VXNMck5uSEJQU2dNd3VnZlVjSzFySERCUFNnTXduNEZVTUtNRDNIQlBTZ013bUQyVHNJWFczTEJQU2dNd25EK1RjTFVnSFRCUFNnTXduc29UY0xOYUhmQlBTZ013dDE5VE1KejhuckJQU2dNd2c4R1RNSW85bjdCN2Y4THdrckdTOEtIbzRIQjdmOEx3bGJCUzhKdzJvUEI3ZjhMd20vM1M4SURCNGJCN2Y4THdqUm1UTUx1RUlqQjdmOEx3czRJVGNKZjRZbkI3ZjhMd2lQWVRjSU1aSXZCN2Y4THdpVExUc0lTaUl6QjdmOEx3alBYVDhLcFFJM0I3ZjhMd3BQd1VNTEVoWTNCN2Y4THd2c0tVc0phVkkzQjdmOEx3aGNhVThLVXJvekI3ZjhMd2dvU1ZNS3dtNHZCN2Y4THd2L25WTUs0SjRyQjdmOEx3cHlTVmNMbllvakI3ZjhMd21vS1ZzSU1ZWWJCN2Y4THdqQktWc0tWT0lUQjdmOEx3aU5QVnNLdEFZTEI3ZjhMd2dvWlZzSTlxbi9CN2Y4THdrV3FWY0psbG52QjdmOEx3cXNIVmNKLzlYZkI3ZjhMd2xZNFZNSWc4SFRCN2Y4THdsZEZVOElYcUhMQjdmOEx3a2c1VXNMck5uSEI3ZjhMd3VnZlVjSzFySERCN2Y4THduNEZVTUtNRDNIQjdmOEx3bUQyVHNJWFczTEI3ZjhMd25EK1RjTFVnSFRCN2Y4THduc29UY0xOYUhmQjdmOEx3dDE5VE1KejhuckI3ZjhMd2c4R1RNSW85bjdCV2pZTHdrckdTOEtIbzRIQldqWUx3bGJCUzhKdzJvUEJXallMd20vM1M4SURCNGJCV2pZTHdqUm1UTUx1RUlqQldqWUx3czRJVGNKZjRZbkJXallMd2lQWVRjSU1aSXZCV2pZTHdpVExUc0lTaUl6QldqWUx3alBYVDhLcFFJM0JXallMd3BQd1VNTEVoWTNCV2pZTHd2c0tVc0phVkkzQldqWUx3aGNhVThLVXJvekJXallMd2dvU1ZNS3dtNHZCV2pZTHd2L25WTUs0SjRyQldqWUx3cHlTVmNMbllvakJXallMd21vS1ZzSU1ZWWJCV2pZTHdqQktWc0tWT0lUQldqWUx3aU5QVnNLdEFZTEJXallMd2dvWlZzSTlxbi9CV2pZTHdrV3FWY0psbG52QldqWUx3cXNIVmNKLzlYZkJXallMd2xZNFZNSWc4SFRCV2pZTHdsZEZVOElYcUhMQldqWUx3a2c1VXNMck5uSEJXallMd3VnZlVjSzFySERCV2pZTHduNEZVTUtNRDNIQldqWUx3bUQyVHNJWFczTEJXallMd25EK1RjTFVnSFRCV2pZTHduc29UY0xOYUhmQldqWUx3dDE5VE1KejhuckJXallMd2c4R1RNSW85bjdCV2pZTHdtRVJUOElOUm9QQldqWUx3amtUVDhJRWM0TEJXallMd29RbFQ4STZGWVRCV2pZTHdzQk9UOEtEMTRUQldqWUx3a2VMVDhKamhJWEJXallMd25QWVQ4SlJGSWJCV2pZTHd1Y3lVTUlGZ1liQldqWUx3ckdXVU1LOXhZYkJXallMd20vL1VNSjMzNGJCV2pZTHdvMW9VY0lTelliQldqWUx3bmZOVWNKZGo0YkJXallMd3NVcFVzSUlLWWJCV2pZTHdtcDVVc0tSbm9YQldqWUx3dXU0VXNJRzlvVEJXallMd29QbFVzTEJOb1RCV2pZTHdrRDlVc0laYVlQQldqWUx3aGovVXNJU2xvTEJXallMd3ZYcVVzTHB4b0hCV2pZTHdyakJVc0tjQklIQldqWUx3akdGVXNLNlY0REJXallMd2dRNFVzS1NqMy9CV2pZTHdwUGRVY0l5dG43QldqWUx3c3A1VWNMRkxIN0JXallMd2d3UlVjSlUrWDNCV2pZTHd1eW5VTUliSG43QldqWUx3djlDVU1LR21YN0JXallMd3JqbVQ4SWlabi9CV2pZTHdoR1hUOEtPUFlEQldqWUx3bzVYVDhJZDVvREJXallMd3ZZcVQ4SmdwWUhCd21vTnd0VmFXOEs1VlkvQndtb053amhyWE1KN3hZckJ3bW9Od2pQOFhNSjkzWVhCd21vTnduTUhYY0tyMUlEQndtb053bm1NWE1LcHhuZkJ3bW9Od3FTUVc4S09nVzdCd21vTnd2WWVXc0srUVdiQndtb053cHBIV01LR1kxL0J3bW9Od2lZZlZzSzlNMXJCd21vTndyKzlVOEpvN0ZiQndtb053Z3crVWNJNHNsWEJ3bW9Od3Z1N1RzTHNrbGJCd21vTndxRlRUTUtvaEZuQndtb053dkFmU3NLQ1psN0J3bW9Od29RNVNNTGVBV1hCd21vTndxUzFSc0xKREczQndtb053a0dsUmNKSExYYkJ3bW9Od2tVVVJjSkQvWC9Cd21vTndnZ0pSY0oxQjRYQndtb053Z0tFUmNMTStJbkJ3bW9Od3RWL1JzSlltNDdCd21vTndvUHhSOEkvdTVMQndtb053dC9JU2NKYktwYkJ3bW9Od2xYeFM4SkF3cGpCd21vTndycFNUc0xxWlpyQndtb053bkRTVU1JQ0E1dkJ3bW9Od241VVU4S3FrcHJCd21vTnd0ZThWY0xKR1puQndtb053b3Z3VjhMYnFKYkJ3bW9Od3ZiV1djSXZXNVBCcU4wS3dvMUxZTUtVclliQnFOMEt3bXlTWDhKZDhZekJxTjBLd3B3MlhzSWV4WkxCcU4wS3dsUkhYTUtsNTVmQnFOMEt3alhhV2NLQUg1ekJxTjBLd21vS1Y4SjdQWi9CcU4wS3dtVDNVOEszSHFIQnFOMEt3b3JEVU1JdHJxSEJxTjBLd3ErU1RjS1U1YURCcU4wS3dvaUlTc0swelo3QnFOMEt3aGpIUjhMNGZadkJxTjBLd2pOdFJjSnJHNWZCcU4wS3dpaVZROEllMTVIQnFOMEt3cGhUUXNMLzY0dkJxTjBLd28rMlFjSkduSVhCcU4wS3d1ekVRY0laWFg3QnFOMEt3ZzErUXNLRzFYSEJxTjBLd3QzWlE4SUJMbWJCcU4wS3dpZkpSY0x6NkZ2QnFOMEt3a00yU01JOWVWUEJxTjBLd2c4R1M4SkdQVTNCcU4wS3doY1pUc0xOZWtuQnFOMEt3dkpNVWNMa1cwakJxTjBLd3NwOVZNSVQ3VW5CcU4wS3d2S0hWOExTSEU3QnFOMEt3bUZKV3NKTnZGVEJxTjBLd2tXalhNSm1nVjNCcU4wS3dsRjdYc0lDQ21qQnFOMEt3dUs4WDhJLzRIUEJxTjBLd3V0WllNTGJQNERCa2xJSndsMGtRc0wrV1hIQmtsSUp3c2RtUWNMYkxuN0JrbElKd3R2L1I4SnRRbExCa2xJSndzZURSY0lzNWxyQmtsSUp3djBHVHNKWUJrakJrbElKd3BsT1VjS0Y0RWJCa2xJSndnaXdWOEx5eEV6QmtsSUp3bmFDV3NKSWpWUEJrbElKd2tqT1hzSU5VbWZCa2xJSndwY1hZTUpQY1hQQmtsSUp3cktwWU1LMHhJYkJrbElKd2h2c1g4SWhMNDNCa2xJSndyU01YTUlJYVpqQmtsSUp3cDRRV3NMbnVwekJrbElKd3VMQlVNTGNhNkxCa2xJSnduMEpWTUx6MktIQmtsSUp3Z0tPUjhKOEZaekJrbElKd25KZ1NzS2tlWi9Ca2xJSnd1SDRRY0oySTR6QmtsSUp3akpDUThJWU01TEJrbElKd3RLRlA4SlZSWDNCa2xJSndpcGFRTUpLNW03QmtsSUp3aThoUk1LOXdGWEJrbElKd3BqcFJzS1ZFMHpCa2xJSnd1ZXBUY0lYblVEQmtsSUp3a1JXVWNJQlZEL0JrbElKd3JWN1dNSng3VVhCa2xJSnd0V2tXOElqaGszQmtsSUp3cUIwWU1JenFtUEJrbElKd25YbFljTGJQWEhCa2xJSndoaUpZc0xITzRmQmtsSUp3c0cwWWNKTWE0N0JrbElKd3I3dFhjSVIvcHJCa2xJSndsTWxXOEtrMUovQmtsSUp3Z1psVk1MbGo2WEJrbElKd3FpNFVNSnZOS2JCa2xJSndqZVRTY0syNTZMQmtsSUp3aFZxUnNKZ0c1L0JrbElKd2txYVFjSldDWlRCa2xJSnduVXBRTUtDUDQzQnBEd013bTlSV3NJVWdvREJwRHdNd3Vxb1djSVVib0hCcER3TXdvK1ZXc0t0UklIQnBEd013aHpiV2NMSWxvREJwRHdNd2swblU4STZ3bURCcER3TXd2K2FVc0lWSEdQQnBEd013aXQrVThJL0JtTEJwRHdNd3JlMVVzSWpUV0hCcER3TXduNVNTY0paSlhIQnBEd013bmpsU01JNjMzUEJwRHdNd2ptM1NjSWNJWExCcER3TXdwM3BTTUptQkhMQnBEd013ak1LU3NJZDdvM0JwRHdNd3RiRFNjTERjSS9CcER3TXd0RjVTc0pkUDQ3QnBEd013amF2U2NMUWhvN0JwRHdNd3VZZ1ZjSlE0WlBCcER3TXdwbDhWTUt4NlpMQnBEd013bXpaVk1JSW41VEJwRHdNd24zeVZNS2tCcFBCOGpBTndwYlNXc0k3c0h6QjhqQU53bFVlV2NJbjkzekI4akFOd3RBcldjSXZSSDNCOGpBTndvamNXc0lFVzN6QjhqQU53blo0V01KYW80SEI4akFOd2dwaFdNSnpwNEhCOGpBTnd1SnJXY0toV29UQjhqQU53dk5oV2NJL2hZVEI4akFOd2lNZ1c4SXRONFRCOGpBTndxY1NXOEtvRUlUQjhqQU53bkRkVzhKTkM0SEI4akFOd2dQR1c4Sm1ENEhCOGpBTndyMTJVY0o4Z1dUQjhqQU53Z0xGVWNKTHkxM0I4akFOd2tGZ1VjTDVuR1RCOGpBTndqVFdVY0p0QzE3QjhqQU53aDJ0VXNJNUIybkI4akFOd3RTblVzTGFZbW5COGpBTndpaFVWTUlKVjJmQjhqQU53dmRDVk1MbkZtZkI4akFOd3VxNFZNSlpoV0RCOGpBTndtNmlWTUxXb0dEQjhqQU53ZzVzVThJYkcxekI4akFOd2xkeFU4SjZ2MXZCOGpBTndvZy9TY0syb0huQjhqQU53dURDUjhKSFNYYkI4akFOd3JnK1NjS3Yvbm5COGpBTndxSFhSOElqSFhiQjhqQU53akRLU3NLVnRYYkI4akFOd2tHMlNzSy9nM2JCOGpBTnd0TFpTc0lQdDIvQjhqQU53aERGU3NJMDQyL0I4akFOd2loZFNjS2tYMnpCOGpBTnd2dGRTY0twQVd6QjhqQU53b0hTUjhMRlNtL0I4akFOd25EbVI4S1pmRy9COGpBTndyYkRTOEp6Q3BEQjhqQU53b1ZvU3NMekc1TEI4akFOd3B0c1NzSkJTcExCOGpBTndxQ3RTOEpkK28vQjhqQU53dkIxUzhKQW1JekI4akFOd3U1alM4SjR0b3pCOGpBTndpTFZTY0l0bEl2QjhqQU53Z3pSU2NMZ1pZdkI4akFOd3ZCNVNNS3VwWTNCOGpBTndnaVFTTUxDdFkzQjhqQU53cm5aU01LbStaREI4akFOd3JqSFNNTGdGNUhCOGpBTndwQzRWY0x6K0pEQjhqQU53anhRVnNMT0s1VEI4akFOd3BKblZzS0lNWlRCOGpBTndtbXFWY0ovSHBIQjhqQU53aThGVk1JTnQ1REI4akFOd2dIOFU4TEdpNURCOGpBTnduTHVVc0l4VjVQQjhqQU53c2NGVThMc1hKUEI4akFOd3BxclU4STVhcGJCOGpBTnduU2RVOExIajViQjhqQU53dFZRVmNLczBaYkI4akFOd2dSYVZjTDEvSmJCdUhrTXdwYlNXc0k3c0h6QnVIa013dEFyV2NJdlJIM0J1SGtNd25aNFdNSmFvNEhCdUhrTXd1SnJXY0toV29UQnVIa013cWNTVzhLb0VJVEJ1SGtNd2dQR1c4Sm1ENEhCdUhrTXdqVFdVY0p0QzE3QnVIa013cjEyVWNKOGdXVEJ1SGtNd2gydFVzSTVCMm5CdUhrTXd2ZENWTUxuRm1mQnVIa013bTZpVk1MV29HREJ1SGtNd2c1c1U4SWJHMXpCdUhrTXdxSFhSOElqSFhiQnVIa013b2cvU2NLMm9IbkJ1SGtNd2tHMlNzSy9nM2JCdUhrTXdoREZTc0kwNDIvQnVIa013aWhkU2NLa1gyekJ1SGtNd25EbVI4S1pmRy9CdUhrTXdxQ3RTOEpkK28vQnVIa013b1ZvU3NMekc1TEJ1SGtNd3U1alM4SjR0b3pCdUhrTXdpTFZTY0l0bEl2QnVIa013Z2lRU01MQ3RZM0J1SGtNd3JuWlNNS20rWkRCdUhrTXdtbXFWY0ovSHBIQnVIa013anhRVnNMT0s1VEJ1SGtNd2k4RlZNSU50NURCdUhrTXdzY0ZVOExzWEpQQnVIa013cHFyVThJNWFwYkJ1SGtNd3RWUVZjS3MwWmJCcER3TXdwYlNXc0k3c0h6QnBEd013dEFyV2NJdlJIM0JwRHdNd25aNFdNSmFvNEhCcER3TXd1SnJXY0toV29UQnBEd013cWNTVzhLb0VJVEJwRHdNd2dQR1c4Sm1ENEhCcER3TXdqVFdVY0p0QzE3QnBEd013cjEyVWNKOGdXVEJwRHdNd2gydFVzSTVCMm5CcER3TXd2ZENWTUxuRm1mQnBEd013bTZpVk1MV29HREJwRHdNd2c1c1U4SWJHMXpCcER3TXdxSFhSOElqSFhiQnBEd013b2cvU2NLMm9IbkJwRHdNd2tHMlNzSy9nM2JCcER3TXdoREZTc0kwNDIvQnBEd013aWhkU2NLa1gyekJwRHdNd25EbVI4S1pmRy9CcER3TXdxQ3RTOEpkK28vQnBEd013b1ZvU3NMekc1TEJwRHdNd3U1alM4SjR0b3pCcER3TXdpTFZTY0l0bEl2QnBEd013Z2lRU01MQ3RZM0JwRHdNd3JuWlNNS20rWkRCcER3TXdtbXFWY0ovSHBIQnBEd013anhRVnNMT0s1VEJwRHdNd2k4RlZNSU50NURCcER3TXdzY0ZVOExzWEpQQnBEd013cHFyVThJNWFwYkJwRHdNd3RWUVZjS3MwWmJCcER3TXdncnRXY0t0TUlMQnBEd013bHhqV3NMNEc0TEJwRHdNd3R6eFVzSWFZR1RCcER3TXduTmpVOEl4MVdQQnBEd013ak5LU2NJRDIzVEJwRHdNd2hTelNjTHkrM1BCcER3TXduUXpTc0lDd28vQnBEd013bkdPU3NKUUtZL0JwRHdNd2g0MVZNSnBwNVBCcER3TXdvZGpWTUlWZ3BUQklSb053bUVSVDhJTlJvUEJJUm9Od2tyR1M4S0hvNEhCSVJvTndsYkJTOEp3Mm9QQklSb053amtUVDhJRWM0TEJJUm9Od29RbFQ4STZGWVRCSVJvTndtLzNTOElEQjRiQklSb053c0JPVDhLRDE0VEJJUm9Od2pSbVRNTHVFSWpCSVJvTndrZUxUOEpqaElYQklSb053czRJVGNKZjRZbkJJUm9Od25QWVQ4SlJGSWJCSVJvTndpUFlUY0lNWkl2QklSb053dWN5VU1JRmdZYkJJUm9Od2lUTFRzSVNpSXpCSVJvTndyR1dVTUs5eFliQklSb053alBYVDhLcFFJM0JJUm9Od20vL1VNSjMzNGJCSVJvTndwUHdVTUxFaFkzQklSb053dnNLVXNKYVZJM0JJUm9Od28xb1VjSVN6WWJCSVJvTndoY2FVOEtVcm96QklSb053bmZOVWNKZGo0YkJJUm9Od2dvU1ZNS3dtNHZCSVJvTndzVXBVc0lJS1liQklSb053di9uVk1LNEo0ckJJUm9Od21wNVVzS1Jub1hCSVJvTndweVNWY0xuWW9qQklSb053dXU0VXNJRzlvVEJJUm9Od21vS1ZzSU1ZWWJCSVJvTndvUGxVc0xCTm9UQklSb053akJLVnNLVk9JVEJJUm9Od2tEOVVzSVphWVBCSVJvTndpTlBWc0t0QVlMQklSb053aGovVXNJU2xvTEJJUm9Od3ZYcVVzTHB4b0hCSVJvTndnb1pWc0k5cW4vQklSb053cmpCVXNLY0JJSEJJUm9Od2tXcVZjSmxsbnZCSVJvTndqR0ZVc0s2VjREQklSb053cXNIVmNKLzlYZkJJUm9Od2dRNFVzS1NqMy9CSVJvTndsWTRWTUlnOEhUQklSb053cFBkVWNJeXRuN0JJUm9Od2xkRlU4SVhxSExCSVJvTndzcDVVY0xGTEg3QklSb053a2c1VXNMck5uSEJJUm9Od2d3UlVjSlUrWDNCSVJvTnd1Z2ZVY0sxckhEQklSb053bjRGVU1LTUQzSEJJUm9Od3V5blVNSWJIbjdCSVJvTndtRDJUc0lYVzNMQklSb053djlDVU1LR21YN0JJUm9Od25EK1RjTFVnSFRCSVJvTndyam1UOElpWm4vQklSb053bnNvVGNMTmFIZkJJUm9Od2hHWFQ4S09QWURCSVJvTnd0MTlUTUp6OG5yQklSb053bzVYVDhJZDVvREJJUm9Od2c4R1RNSW85bjdCSVJvTnd2WXFUOEpncFlIQkNSME53cmdPVWNLSjlJTEJxTjBNd2tyR1M4S0hvNEhCcU4wTXdnOEdUTUlvOW43QnFOME13bGJCUzhKdzJvUEJxTjBNd3QxOVRNSno4bnJCcU4wTXduc29UY0xOYUhmQnFOME13bkQrVGNMVWdIVEJxTjBNd21EMlRzSVhXM0xCcU4wTXduNEZVTUtNRDNIQnFOME13dWdmVWNLMXJIREJxTjBNd3ZzS1VzSmFWSTNCcU4wTXdwUHdVTUxFaFkzQnFOME13aGNhVThLVXJvekJxTjBNd2pQWFQ4S3BRSTNCcU4wTXdpVExUc0lTaUl6QnFOME13aVBZVGNJTVpJdkJxTjBNd3M0SVRjSmY0WW5CcU4wTXdqUm1UTUx1RUlqQnFOME13bS8zUzhJREI0YkJxTjBNd2tnNVVzTHJObkhCcU4wTXdsZEZVOElYcUhMQnFOME13bFk0Vk1JZzhIVEJxTjBNd3FzSFZjSi85WGZCcU4wTXdrV3FWY0psbG52QnFOME13Z29aVnNJOXFuL0JxTjBNd2lOUFZzS3RBWUxCcU4wTXdqQktWc0tWT0lUQnFOME13bW9LVnNJTVlZYkJxTjBNd3B5U1ZjTG5Zb2pCcU4wTXd2L25WTUs0SjRyQnFOME13Z29TVk1Ld200dkJjOE1Md2tyR1M4S0hvNEhCYzhNTHdnOEdUTUlvOW43QmM4TUx3bGJCUzhKdzJvUEJjOE1Md3QxOVRNSno4bnJCYzhNTHdtLzNTOElEQjRiQmM4TUx3bnNvVGNMTmFIZkJjOE1Md25EK1RjTFVnSFRCYzhNTHdtRDJUc0lYVzNMQmM4TUx3bjRGVU1LTUQzSEJjOE1Md3VnZlVjSzFySERCYzhNTHdrZzVVc0xyTm5IQmM4TUx3dnNLVXNKYVZJM0JjOE1Md3BQd1VNTEVoWTNCYzhNTHdoY2FVOEtVcm96QmM4TUx3alBYVDhLcFFJM0JjOE1Md2dvU1ZNS3dtNHZCYzhNTHdpVExUc0lTaUl6QmM4TUx3aVBZVGNJTVpJdkJjOE1Md3M0SVRjSmY0WW5CYzhNTHdqUm1UTUx1RUlqQmM4TUx3bGRGVThJWHFITEJjOE1Md2xZNFZNSWc4SFRCYzhNTHdxc0hWY0ovOVhmQmM4TUx3a1dxVmNKbGxudkJjOE1Md2dvWlZzSTlxbi9CYzhNTHdpTlBWc0t0QVlMQmM4TUx3akJLVnNLVk9JVEJjOE1Md21vS1ZzSU1ZWWJCYzhNTHdweVNWY0xuWW9qQmM4TUx3di9uVk1LNEo0ckI3Mkx4d1ppUVFjS3lQb3ZCNzJMeHdSN0NQc0lXRTRQQjcyTHh3WlpmUDhKV2E0ekI3Mkx4d2VnR1FjSVhFNFBCNzJMeHdaaVFRY0xxem5YQjcyTHh3WmRmUDhLa2RYUEI3Mkx4d1VFa1E4TEdsR2JCNzJMeHdVY3RRY0kxQzJMQjcyTHh3V1dtUmNKYWdWbkI3Mkx4d2JRTFJNS2VGbFBCNzJMeHdVSHJTTUxFZUUvQjcyTHh3ZG5JUjhMYW5FZkI3Mkx4d2NtNVRNSWZLa25CNzJMeHdYVWpUTUlhWmtEQjcyTHh3WmpQVU1KaEEwZkI3Mkx4d1pqUFVNSTI4RDNCNzJMeHdiWjdWY0lhWmtEQjcyTHh3V2psVk1JYktrbkI3Mkx4d1ZUV1djTFluRWZCNzJMeHdmQ3pXTUxIZUUvQjcyTHh3WHFUWGNLZ0ZsUEI3Mkx4d2NyNFc4SlZnVm5CNzJMeHdlcHhZTUl2QzJMQjcyTHh3ZTk2WHNMQ2xHYkI3Mkx4d1pvL1lzS25kWFBCNzJMeHdac09ZTUxsem5YQjcyTHh3VWFZWU1JV0U0UEI3Mkx4d1JIZFlzSVRFNFBCNzJMeHdac09ZTUt5UG92QjcyTHh3Wm8vWXNKVmE0ekI3Mkx4d2ZKNlhzTEcyNUxCNzJMeHdlbHhZTUtOSUpYQjcyTHh3YzM0VzhKMlpabkI3Mkx4d1hhVFhjTFZtcHpCNzJMeHdmQ3pXTUxEYVo3QjcyTHh3VlRXV2NLNFY2TEI3Mkx4d1dmbFZNSVRrYUhCNzJMeHdiZDdWY0lXODZYQjcyTHh3Wm5QVU1KdnBLTEI3Mkx4d1piUFVNSUpMcWZCNzJMeHdYVWpUTUlhODZYQjcyTHh3Y201VE1JVmthSEI3Mkx4d2R6SVI4SzNWNkxCNzJMeHdVSHJTTUxFYVo3QjcyTHh3YmNMUk1MVm1wekI3Mkx4d1dXbVJjSjRaWm5CNzJMeHdVY3RRY0tMSUpYQjcyTHh3VUFrUThMQzI1TEJQK2p2d1I3Q1BzSVdFNFBCUCtqdndaWmZQOEpXYTR6QlAranZ3WmRmUDhLa2RYUEJQK2p2d1VjdFFjSTFDMkxCUCtqdndiUUxSTUtlRmxQQlAranZ3ZG5JUjhMYW5FZkJQK2p2d1hValRNSWFaa0RCUCtqdndaalBVTUkyOEQzQlAranZ3Ylo3VmNJYVprREJQK2p2d1ZUV1djTFluRWZCUCtqdndYcVRYY0tnRmxQQlAranZ3ZXB4WU1JdkMyTEJQK2p2d1pvL1lzS25kWFBCUCtqdndSSGRZc0lURTRQQlAranZ3Wm8vWXNKVmE0ekJQK2p2d2VseFlNS05JSlhCUCtqdndYYVRYY0xWbXB6QlAranZ3VlRXV2NLNFY2TEJQK2p2d2JkN1ZjSVc4NlhCUCtqdndaYlBVTUlKTHFmQlAranZ3WFVqVE1JYTg2WEJQK2p2d2R6SVI4SzNWNkxCUCtqdndiY0xSTUxWbXB6QlAranZ3VWN0UWNLTElKWEJQK2p2d1lVQVBzSVVFNFBCUCtqdndaV2tQc0tRejR6QlAranZ3WmVrUHNJM3JYTEJQK2p2d1oyRlFNSUVpR0RCUCtqdndjMkNROElQODFEQlAranZ3UkJvUjhJMy9rVEJQK2p2d1ZyeFM4SVplajNCUCtqdndaZlBVTUxRNlRyQlAranZ3ZFN0VmNJYmVqM0JQK2p2d1NFM1dzSTIva1RCUCtqdndWNGNYc0lLODFEQlAranZ3Wk1aWWNMK2gyREJQK2p2d1pqNllzSTRyWExCUCtqdndhMmVZOElURTRQQlAranZ3WnY2WXNLSXo0ekJQK2p2d1pJWlljSW40cFhCUCtqdndWNGNYc0tmckozQlAranZ3U0UzV3NJSXA2UEJQK2p2d2RPdFZjSVhhYWZCUCtqdndaWFBVTUk4c2FqQlAranZ3Vnp4UzhJWmFhZkJQK2p2d1JCb1I4SUlwNlBCUCtqdndkR0NROEtlckozQlAranZ3WnVGUU1JbjRwWEI3Mkx4d1pXa1BzS1F6NHpCNzJMeHdZVUFQc0lVRTRQQjcyTHh3WmVrUHNJM3JYTEI3Mkx4d1oyRlFNSUVpR0RCNzJMeHdjMkNROElQODFEQjcyTHh3UkJvUjhJMy9rVEI3Mkx4d1ZyeFM4SVplajNCNzJMeHdaZlBVTUxRNlRyQjcyTHh3ZFN0VmNJYmVqM0I3Mkx4d1NFM1dzSTIva1RCNzJMeHdWNGNYc0lLODFEQjcyTHh3Wk1aWWNMK2gyREI3Mkx4d1pqNllzSTRyWExCNzJMeHdhMmVZOElURTRQQjcyTHh3WnY2WXNLSXo0ekI3Mkx4d1pJWlljSW40cFhCNzJMeHdWNGNYc0tmckozQjcyTHh3U0UzV3NJSXA2UEI3Mkx4d2RPdFZjSVhhYWZCNzJMeHdaWFBVTUk4c2FqQjcyTHh3Vnp4UzhJWmFhZkI3Mkx4d1JCb1I4SUlwNlBCNzJMeHdkR0NROEtlckozQjcyTHh3WnVGUU1JbjRwWEI3Mkx4d1pnUk9NSjNWWkRCUCtqdndTTXlOOElXRTRQQlAranZ3WmdST01KM1ZaREI3Mkx4d1NNeU44SVdFNFBCUCtqdndaWVJPTUpkb1d2QjcyTHh3WllST01KZG9XdkJQK2p2d2E2Z09zSks2MUxCNzJMeHdhNmdPc0pLNjFMQlAranZ3Y095UHNMZHNqM0I3Mkx4d2NPeVBzTGRzajNCUCtqdndlSUFSTUp4YWkzQjcyTHh3ZUlBUk1KeGFpM0JQK2p2d1djdVNzSVdMaVBCNzJMeHdXY3VTc0lXTGlQQlAranZ3WmpQVU1KV3NCL0I3Mkx4d1pqUFVNSldzQi9CNzJMeHdjaHdWOElhTGlQQlAranZ3Y2h3VjhJYUxpUEI3Mkx4d1UyZVhjSjBhaTNCUCtqdndVMmVYY0owYWkzQjcyTHh3V2ZzWXNMWnNqM0JQK2p2d1dmc1lzTFpzajNCNzJMeHdZUCtac0kvNjFMQlAranZ3WVArWnNJLzYxTEI3Mkx4d1p1TmFjSmRvV3ZCUCtqdndadU5hY0pkb1d2QjcyTHh3UTV0YXNJV0U0UEJQK2p2d1E1dGFzSVdFNFBCNzJMeHdabU5hY0owVlpEQlAranZ3Wm1OYWNKMFZaREI3Mkx4d1lQK1pzS0hzSnpCUCtqdndZUCtac0tIc0p6QjcyTHh3V2pzWXNLM1RLZkJQK2p2d1dqc1lzSzNUS2ZCNzJMeHdWQ2VYY0xxY0svQlAranZ3VkNlWGNMcWNLL0I3Mkx4d2Nsd1Y4SWJqN1RCUCtqdndjbHdWOEliajdUQjcyTHh3Wm5QVU1MNFRiYkJQK2p2d1puUFVNTDRUYmJCUCtqdndXZ3VTc0lYajdUQjcyTHh3V2d1U3NJWGo3VEJQK2p2d2Q4QVJNTHFjSy9CNzJMeHdkOEFSTUxxY0svQlAranZ3Y2F5UHNLM1RLZkI3Mkx4d2NheVBzSzNUS2ZCUCtqdndheWdPc0tEc0p6QjcyTHh3YXlnT3NLRHNKekJQK2p2d1paQ09zTFZLSS9CUCtqdndlNTJPY0lXRTRQQlAranZ3WlJDT3NLcCttM0JQK2p2d2FhWFBNTGVkRmZCUCtqdndYVk5RTUtVSFVUQlAranZ3VWNqUmNKZFJqWEJQK2p2d2JmRVNzSVk4aXZCUCtqdndablBVTUo3d3lqQlAranZ3WGphVnNJYzhpdkJQK2p2d2U1N1hNSmhSalhCUCtqdndieFJZY0tVSFVUQlAranZ3WWtIWmNMWGRGZkJQK2p2d1pwY1o4S24rbTNCUCtqdndVUW9hTUlURTRQQlAranZ3WnhjWjhMVEtJL0JQK2p2d1lzSFpjSythNXJCUCtqdndibFJZY0piRjZUQlAranZ3ZTU3WE1MMmdxdkJQK2p2d1hmYVZzSVlMYkRCUCtqdndaZlBVTUpteExIQlAranZ3YmpFU3NJWUxiREJQK2p2d1VjalJjTHpncXZCUCtqdndYSk5RTUpaRjZUQlAranZ3YWVYUE1LNGE1ckJrMjN1d2U1Mk9jSVdFNFBCazIzdXdaWkNPc0xWS0kvQmsyM3V3WlJDT3NLcCttM0JrMjN1d2FhWFBNTGVkRmZCazIzdXdYVk5RTUtVSFVUQmsyM3V3VWNqUmNKZFJqWEJrMjN1d2JmRVNzSVk4aXZCazIzdXdablBVTUo3d3lqQmsyM3V3WGphVnNJYzhpdkJrMjN1d2U1N1hNSmhSalhCazIzdXdieFJZY0tVSFVUQmsyM3V3WWtIWmNMWGRGZkJrMjN1d1pwY1o4S24rbTNCazIzdXdVUW9hTUlURTRQQmsyM3V3WnhjWjhMVEtJL0JrMjN1d1lzSFpjSythNXJCazIzdXdibFJZY0piRjZUQmsyM3V3ZTU3WE1MMmdxdkJrMjN1d1hmYVZzSVlMYkRCazIzdXdaZlBVTUpteExIQmsyM3V3YmpFU3NJWUxiREJrMjN1d1VjalJjTHpncXZCazIzdXdYSk5RTUpaRjZUQmsyM3V3YWVYUE1LNGE1ckJrMjN1d1NNeU44SVdFNFBCazIzdXdaZ1JPTUozVlpEQmsyM3V3WllST01KZG9XdkJrMjN1d2E2Z09zSks2MUxCazIzdXdjT3lQc0xkc2ozQmsyM3V3ZUlBUk1KeGFpM0JrMjN1d1djdVNzSVdMaVBCazIzdXdaalBVTUpXc0IvQmsyM3V3Y2h3VjhJYUxpUEJrMjN1d1UyZVhjSjBhaTNCazIzdXdXZnNZc0xac2ozQmsyM3V3WVArWnNJLzYxTEJrMjN1d1p1TmFjSmRvV3ZCazIzdXdRNXRhc0lXRTRQQmsyM3V3Wm1OYWNKMFZaREJrMjN1d1lQK1pzS0hzSnpCazIzdXdXanNZc0szVEtmQmsyM3V3VkNlWGNMcWNLL0JrMjN1d2Nsd1Y4SWJqN1RCazIzdXdablBVTUw0VGJiQmsyM3V3V2d1U3NJWGo3VEJrMjN1d2Q4QVJNTHFjSy9CazIzdXdjYXlQc0szVEtmQmsyM3V3YXlnT3NLRHNKekI1UExzd1NNeU44SVdFNFBCNVBMc3daZ1JPTUozVlpEQjVQTHN3WllST01KZG9XdkI1UExzd2E2Z09zSks2MUxCNVBMc3djT3lQc0xkc2ozQjVQTHN3ZUlBUk1KeGFpM0I1UExzd1djdVNzSVdMaVBCNVBMc3daalBVTUpXc0IvQjVQTHN3Y2h3VjhJYUxpUEI1UExzd1UyZVhjSjBhaTNCNVBMc3dXZnNZc0xac2ozQjVQTHN3WVArWnNJLzYxTEI1UExzd1p1TmFjSmRvV3ZCNVBMc3dRNXRhc0lXRTRQQjVQTHN3Wm1OYWNKMFZaREI1UExzd1lQK1pzS0hzSnpCNVBMc3dXanNZc0szVEtmQjVQTHN3VkNlWGNMcWNLL0I1UExzd2Nsd1Y4SWJqN1RCNVBMc3dablBVTUw0VGJiQjVQTHN3V2d1U3NJWGo3VEI1UExzd2Q4QVJNTHFjSy9CNVBMc3djYXlQc0szVEtmQjVQTHN3YXlnT3NLRHNKekI1UExzd1pmVlFNTG5vb3ZCNVBMc3dVNUZRTUlXRTRQQjVQTHN3WlhWUU1LQkJuWEI1UExzd1paOFFzS1VFV1hCNVBMc3dYOGRSY0xFWFZmQjVQTHN3WE9LU01JYzJrekI1UExzd2ErSFRNSVlQa2JCNVBMc3daalBVTUlBL1VQQjVQTHN3WUlYVmNJYVBrYkI1UExzd2IwVVdjSWkya3pCNVBMc3dhK0JYTUxHWFZmQjVQTHN3WmdpWDhLUkVXWEI1UExzd1pqSllNS0dCblhCNVBMc3dlUlpZY0lURTRQQjVQTHN3WjNKWU1Ma29vdkI1UExzd1praVg4SmNuWlBCNVBMc3dhK0JYTUpHZDVyQjVQTHN3YjhVV2NJVHVaL0I1UExzd1lFWFZjSVhCNlBCNVBMc3daYlBVTUttSjZUQjVQTHN3YStIVE1JYkI2UEI1UExzd1hLS1NNSVR1Wi9CNVBMc3dYMGRSY0pDZDVyQjVQTHN3WmQ4UXNKYW5aUEI3Mkx4d2N6MVk4SVhFNFBCNzJMeHdjSk9ZOElDVTNMQjcyTHh3UWRsWWNLOTJWL0I3Mkx4d2ZkWlhzS2YvRS9CNzJMeHdiSmlXc0pzMEVQQjcyTHh3V0RFVmNLQUtUekI3Mkx4d1puUFVNSlVqVG5CNzJMeHdkTGFTOEtDS1R6QjcyTHh3WDQ4UjhKdTBFUEI3Mkx4d1RWRlE4S2svRS9CNzJMeHdTazZRTUxJMlYvQjcyTHh3WEJRUHNJQ1UzTEI3Mkx4d1dlcFBjSVVFNFBCNzJMeHdXNVFQc0ttL0l6QjcyTHh3U2s2UU1KRU9aYkI3Mkx4d1RoRlE4TFVKNTdCNzJMeHdZQThSOEx4UGFUQjcyTHh3ZEhhUzhKbkVhakI3Mkx4d1pmUFVNSjdYNm5CNzJMeHdXREVWY0pqRWFqQjcyTHh3Yk5pV3NMdlBhVEI3Mkx4d2ZaWlhzTFZKNTdCNzJMeHdRZGxZY0pJT1piQjcyTHh3Y0JPWThLai9JekI3Mkx4d2FvOWFjSU05MnZCNzJMeHdVb2Fhc0lXRTRQQjcyTHh3YW85YWNLZEtwREI3Mkx4d2RlMlpzTEdYWnpCNzJMeHdlT3hZc0t0MTZiQjcyTHh3ZTkwWGNLUTRhN0I3Mkx4d1Z4YlY4SXo3N1BCNzJMeHdablBVTUp4cUxYQjcyTHh3ZE5EU3NJMDc3UEI3Mkx4d1VJcVJNS1Q0YTdCNzJMeHdVdnRQc0tyMTZiQjcyTHh3VnJvT3NMQVhaekI3Mkx4d1laaE9NS2ZLcERCNzJMeHdlbUVOOElURTRQQjcyTHh3WWRoT01JTDkydkI3Mkx4d1Zub09zTFNrRlBCNzJMeHdVWHRQc0wybkQ3QjcyTHh3VVFxUk1JbWlTN0I3Mkx4d2RCRFNzTGZiU1RCNzJMeHdablBVTUplK3lEQjcyTHh3VjFiVjhMZGJTVEI3Mkx4d2U1MFhjSW1pUzdCNzJMeHdlS3hZc0x3bkQ3QjcyTHh3ZGUyWnNMRWtGUEI0UllBd3BQeVJjSi9nWHJCV01qNHdYdVFSY0lVRTRQQjRSWUF3bnVRUmNJVUU0UEJXTWo0d1pQeVJjSi9nWHJCNFJZQXdqY1NSOEx0cDIvQldNajR3VGNTUjhMdHAyL0I0UllBd3NIYlNNTE1WbWJCV01qNHdjSGJTTUxNVm1iQjRSWUF3Z293UzhLWE1GL0JXTWo0d1Fvd1M4S1hNRi9CNFJZQXdtem1UY0lic2xyQldNajR3V3ptVGNJYnNsckI0UllBd3BmUFVNSzBLVm5CV01qNHdaZlBVTUswS1ZuQldNajR3Y0M0VThJaHNsckI0UllBd3NDNFU4SWhzbHJCV01qNHdTZHZWc0tjTUYvQjRSWUF3aWR2VnNLY01GL0JXTWo0d1c3RFdNTEtWbWJCNFJZQXdtN0RXTUxLVm1iQldNajR3Zm1NV3NMdnAyL0I0UllBd3ZtTVdzTHZwMi9CV01qNHdacXNXOEovZ1hyQjRSWUF3cHFzVzhKL2dYckJXTWo0d2JNT1hNSVdFNFBCNFJZQXdyTU9YTUlXRTRQQldNajR3WnFzVzhKcDVZakI0UllBd3Bxc1c4SnA1WWpCV01qNHdmaU1Xc0l3VW83QjRSWUF3dmlNV3NJd1VvN0JXTWo0d1d6RFdNTEMrcExCNFJZQXdtekRXTUxDK3BMQldNajR3U1J2VnNMWmpaYkI0UllBd2lSdlZzTFpqWmJCV01qNHdjSzRVOElaelpqQjRSWUF3c0s0VThJWnpaakJXTWo0d1pmUFVNSk9rWm5CNFJZQXdwZlBVTUpPa1puQjRSWUF3bS9tVGNJWXpaakJXTWo0d1cvbVRjSVl6WmpCNFJZQXdnc3dTOExaalpiQldNajR3UXN3UzhMWmpaYkI0UllBd3I3YlNNSy8rcExCV01qNHdiN2JTTUsvK3BMQjRSWUF3allTUjhJeFVvN0JXTWo0d1RZU1I4SXhVbzdCNFJZQXdwYnlSY0pwNVlqQldNajR3WmJ5UmNKcDVZakIrOUwxd2E5TFE4SVdFNFBCKzlMMXdackJROElORW9yQis5TDF3WmpCUThJMktIakIrOUwxd1QwYlJjSllIbXZCKzlMMXdSRkJSOElUN0YvQis5TDF3YVlOU3NLdlZGZkIrOUwxd1J0UVRjSWc3bEhCKzlMMXdaWFBVTUtORmxEQis5TDF3UmRQVk1JWTdsSEIrOUwxd1ltUlY4S3ZWRmZCKzlMMXdSMWVXc0lSN0YvQis5TDF3ZmlEWE1KVkhtdkIrOUwxd1p6ZFhjSXhLSGpCKzlMMXdZRlRYc0lURTRQQis5TDF3WnpkWGNJTUVvckIrOUwxd2ZTRFhNTDlscERCKzlMMXdSNWVXc0ljTUpiQis5TDF3WXFSVjhMTWU1ckIrOUwxd1JSUFZNSVhMNTNCKzlMMXdablBVTUxoR3A3Qis5TDF3UjFRVGNJV0w1M0IrOUwxd2FjTlNzTExlNXJCKzlMMXdSUkJSOEllTUpiQis5TDF3VG9iUmNMNmxwREJTMWowd2E5TFE4SVdFNFBCUzFqMHdackJROElORW9yQlMxajB3WmpCUThJMktIakJTMWowd1QwYlJjSllIbXZCUzFqMHdSRkJSOElUN0YvQlMxajB3YVlOU3NLdlZGZkJTMWowd1J0UVRjSWc3bEhCUzFqMHdaWFBVTUtORmxEQlMxajB3UmRQVk1JWTdsSEJTMWowd1ltUlY4S3ZWRmZCUzFqMHdSMWVXc0lSN0YvQlMxajB3ZmlEWE1KVkhtdkJTMWowd1p6ZFhjSXhLSGpCUzFqMHdZRlRYc0lURTRQQlMxajB3WnpkWGNJTUVvckJTMWowd2ZTRFhNTDlscERCUzFqMHdSNWVXc0ljTUpiQlMxajB3WXFSVjhMTWU1ckJTMWowd1JSUFZNSVhMNTNCUzFqMHdablBVTUxoR3A3QlMxajB3UjFRVGNJV0w1M0JTMWowd2FjTlNzTExlNXJCUzFqMHdSUkJSOEllTUpiQlMxajB3VG9iUmNMNmxwREJTMWowd1U1RlFNSVdFNFBCUzFqMHdaZlZRTUxub292QlMxajB3WlhWUU1LQkJuWEJTMWowd1paOFFzS2NFV1hCUzFqMHdYOGRSY0xHWFZmQlMxajB3WE9LU01JYzJrekJTMWowd2ErSFRNSVlQa2JCUzFqMHdaalBVTUlBL1VQQlMxajB3WUlYVmNJYVBrYkJTMWowd2IwVVdjSWkya3pCUzFqMHdhK0JYTUxHWFZmQlMxajB3WmtpWDhLT0VXWEJTMWowd1pqSllNS0dCblhCUzFqMHdlUlpZY0lURTRQQlMxajB3WjNKWU1Ma29vdkJTMWowd1praVg4SmNuWlBCUzFqMHdhK0JYTUpHZDVyQlMxajB3YjhVV2NJVHVaL0JTMWowd1lFWFZjSVhCNlBCUzFqMHdaalBVTUtuSjZUQlMxajB3YStIVE1JWUI2UEJTMWowd1hLS1NNSVR1Wi9CUzFqMHdYMGRSY0pDZDVyQlMxajB3WmQ4UXNKYW5aUEJuOTN5d1U1RlFNSVdFNFBCbjkzeXdaZlZRTUxub292Qm45M3l3WlhWUU1LQkJuWEJuOTN5d1paOFFzS2NFV1hCbjkzeXdYOGRSY0xHWFZmQm45M3l3WE9LU01JYzJrekJuOTN5d2ErSFRNSVlQa2JCbjkzeXdaalBVTUlBL1VQQm45M3l3WUlYVmNJYVBrYkJuOTN5d2IwVVdjSWkya3pCbjkzeXdhK0JYTUxHWFZmQm45M3l3WmtpWDhLT0VXWEJuOTN5d1pqSllNS0dCblhCbjkzeXdlUlpZY0lURTRQQm45M3l3WjNKWU1Ma29vdkJuOTN5d1praVg4SmNuWlBCbjkzeXdhK0JYTUpHZDVyQm45M3l3YjhVV2NJVHVaL0JuOTN5d1lFWFZjSVhCNlBCbjkzeXdaalBVTUtuSjZUQm45M3l3YStIVE1JWUI2UEJuOTN5d1hLS1NNSVR1Wi9CbjkzeXdYMGRSY0pDZDVyQm45M3l3WmQ4UXNKYW5aUEJuOTN5d1ppUVFjS3lQb3ZCbjkzeXdlZ0dRY0lYRTRQQm45M3l3WmlRUWNMcXpuWEJuOTN5d1VFa1E4TEdsR2JCbjkzeXdXV21SY0phZ1ZuQm45M3l3VUhyU01MRWVFL0JuOTN5d2NtNVRNSWZLa25CbjkzeXdaalBVTUpoQTBmQm45M3l3V2psVk1JYktrbkJuOTN5d2ZDeldNTEhlRS9CbjkzeXdjcjRXOEpWZ1ZuQm45M3l3ZTk2WHNMQ2xHYkJuOTN5d1pzT1lNTGx6blhCbjkzeXdVYVlZTUlXRTRQQm45M3l3WnNPWU1LeVBvdkJuOTN5d2ZKNlhzTEcyNUxCbjkzeXdjMzRXOEoyWlpuQm45M3l3ZkN6V01MRGFaN0JuOTN5d1dmbFZNSVRrYUhCbjkzeXdablBVTUp2cEtMQm45M3l3Y201VE1JVmthSEJuOTN5d1VIclNNTEVhWjdCbjkzeXdXV21SY0o0WlpuQm45M3l3VUFrUThMQzI1TEJLd2pud1U1RlFNSVdFNFBCS3dqbndaZlZRTUxub292Qkt3am53WlhWUU1LQkJuWEJLd2pud1paOFFzS1VFV1hCS3dqbndYOGRSY0xFWFZmQkt3am53WE9LU01JYzJrekJLd2pud2ErSFRNSVlQa2JCS3dqbndaalBVTUlBL1VQQkt3am53WUlYVmNJYVBrYkJLd2pud2IwVVdjSWkya3pCS3dqbndhK0JYTUxHWFZmQkt3am53WmdpWDhLUkVXWEJLd2pud1pqSllNS0dCblhCS3dqbndlUlpZY0lURTRQQkt3am53WjNKWU1Ma29vdkJLd2pud1praVg4SmNuWlBCS3dqbndhK0JYTUpHZDVyQkt3am53YjhVV2NJVHVaL0JLd2pud1lFWFZjSVhCNlBCS3dqbndaYlBVTUttSjZUQkt3am53YStIVE1JYkI2UEJLd2pud1hLS1NNSVR1Wi9CS3dqbndYMGRSY0pDZDVyQkt3am53WmQ4UXNKYW5aUEJ2NlBFd1pnalNNTEh1SWZCdjZQRXdVZlZSOElVRTRQQnY2UEV3WmNqU01MQjJuekJ2NlBFd1RNSlNjSjlNWFRCdjZQRXdXNTJTc0tGd1d6QnY2UEV3VzlTVE1LTURHZkJ2NlBFd2IxOFRzSWxkbVBCdjZQRXdaalBVTUxkUEdMQnY2UEV3WE1pVThJaWRtUEJ2NlBFd2NKTVZjS0tER2ZCdjZQRXdiMG9WOEtEd1d6QnY2UEV3UUNXV01LQ01YVEJ2NlBFd1psN1djTEgybnpCdjZQRXdlckpXY0lTRTRQQnY2UEV3Wmw3V2NMRXVJZkJ2NlBFd1FDV1dNSmpEWXpCdjZQRXdjQW9WOEpreFkvQnY2UEV3Y0ZNVmNMam41TEJ2NlBFd1hJaVU4SVdhNVRCdjZQRXdaYlBVTUszQjVYQnY2UEV3Yjk4VHNJWWE1VEJ2NlBFd1c1U1RNTGZuNUxCdjZQRXdXNTJTc0pqeFkvQnY2UEV3VE1KU2NKb0RZekJsSG1ud1VmVlI4SVVFNFBCbEhtbndaZ2pTTUxIdUlmQmxIbW53WmNqU01MQjJuekJsSG1ud1RNSlNjSjlNWFRCbEhtbndXNTJTc0tGd1d6QmxIbW53VzlTVE1LTURHZkJsSG1ud2IxOFRzSWxkbVBCbEhtbndaalBVTUxkUEdMQmxIbW53WE1pVThJaWRtUEJsSG1ud2NKTVZjS0tER2ZCbEhtbndiMG9WOEtEd1d6QmxIbW53UUNXV01LQ01YVEJsSG1ud1psN1djTEgybnpCbEhtbndlckpXY0lTRTRQQmxIbW53Wmw3V2NMRXVJZkJsSG1ud1FDV1dNSmpEWXpCbEhtbndjQW9WOEpreFkvQmxIbW53Y0ZNVmNMam41TEJsSG1ud1hJaVU4SVdhNVRCbEhtbndaYlBVTUszQjVYQmxIbW53Yjk4VHNJWWE1VEJsSG1ud1c1U1RNTGZuNUxCbEhtbndXNTJTc0pqeFkvQmxIbW53VE1KU2NKb0RZekJqK1lKd3ZOeFFzS0JVUFRBMHMzTndSWDNVTUpwTmQzQWorWUp3aFgzVU1KcE5kM0EwczNOd2ZOeFFzS0JVUFRBcUV6TXdSajNVTUpnL3REQXFFek13VjdjUWNLQkIrbkFRRU1Ld3RUbFFjSUlJdXJBUUVNS3dvOEFVY0xtR05MQTBzM053Uk1TT3NKWUp5YkFLSVlLd3ByelVNSnpxcnEvMHMzTndacnpVTUp6cXJxL0tJWUt3aE1TT3NKWUp5YkFLSVlLd3B6elVNS21GUkhBS0lZS3d2Sk9POEpPOTFYQTBzM053ZkpPTzhKTzkxWEEwczNOd1p6elVNS21GUkhBaWxvTHdwM3pVTUxUOVNyQWlsb0x3bVB0TzhKRzMyM0FxRXpNd1dQdE84SkczMjNBcUV6TXdaM3pVTUxUOVNyQUVBb013cHJ6VU1JRC8xSEFFQW9Nd21YY1BNTGc5NGpBVmdQTHdXWGNQTUxnOTRqQVZnUEx3WnJ6VU1JRC8xSEFFQW9Nd3JMN1VNSXAzOEhBRUFvTXd1c21RY0pURU52QVZnUEx3ZXNtUWNKVEVOdkFWZ1BMd2JMN1VNSXAzOEhBMHMzTndiY2lOc0taRGh2QmorWUp3cmNpTnNLWkRodkJxRXpNd1ZFT05jSUx2UmJCUUVNS3dza1hOY0pLU2hmQjBzM053VXVzSnNMZHc3ckFLSVlLd2t1c0pzTGR3N3JBS0lZS3dzNzFLTUxoRDgzQTBzM053YzcxS01MaEQ4M0FpbG9Md28wYUtzTHNOZGJBcUV6TXdZMGFLc0xzTmRiQUVBb013aTdVSzhJTUErVEFWZ1BMd1M3VUs4SU1BK1RBRUFvTXdpSzdNOElKWnhIQlZnUEx3U0s3TThJSlp4SEJqK1lKd2lEcExjS0lTMHpCMHMzTndTRHBMY0tJUzB6QnFFek13ZjkvTE1JMjlVbkJRRU1Ld25hSkxNSjRna3JCMHMzTndVVzJHY0lQK1NyQktJWUt3a1cyR2NJUCtTckJLSVlLd2tTekhNS0s3Qy9CMHMzTndVU3pITUtLN0MvQmlsb0x3c1V4SHNKSFpqTEJxRXpNd2NVeEhzSkhaakxCRUFvTXdzeHlJTUpXSWpiQlZnUEx3Y3h5SU1KV0lqYkJFQW9Nd21uREtzSXVGa2ZCVmdQTHdXbkRLc0l1RmtmQmorWUp3cndGSzhJUE1JUEIwczNOd2J3Rks4SVBNSVBCcUV6TXdkdCtLY0lQTUlQQlFFTUt3bEdJS2NLeGRvUEIwczNOd1NJcEZjS1pQNFBCS0lZS3dpSXBGY0taUDRQQktJWUt3aWxsR01LYVA0UEIwczNOd1NsbEdNS2FQNFBCaWxvTHdpd0RHc0taUDRQQnFFek13U3dER3NLWlA0UEJFQW9Nd3J0ekhNS2FQNFBCVmdQTHdidHpITUthUDRQQkVBb013a0dkSjhLdE5JUEJWZ1BMd1VHZEo4S3ROSVBCaitZSndoM3BMY0pXT3FEQjBzM053UjNwTGNKV09xREJxRXpNd1FDQUxNSitaYUhCUUVNS3dubUpMTUlmcktIQjBzM053VU8yR2NLc0FySEJLSVlLd2tPMkdjS3NBckhCS0lZS3drT3pITUx2aUs3QjBzM053VU96SE1MdmlLN0JpbG9Md3NNeEhzSU9USzNCcUV6TXdjTXhIc0lPVEszQkVBb013czF5SU1JSWJxdkJWZ1BMd2MxeUlNSUlicXZCRUFvTXdtakRLc0k3M3FMQlZnUEx3V2pES3NJNzNxTEJqK1lKd3JjaU5zTFAyTGpCMHMzTndiY2lOc0xQMkxqQnFFek13VkVPTmNLWkFidkJRRU1Ld3NnWE5jSTdTTHZCMHMzTndVaXNKc0k5enRmQktJWUt3a2lzSnNJOXp0ZkJLSVlLd3N6MUtNSTNPOVBCMHMzTndjejFLTUkzTzlQQmlsb0x3b3dhS3NLODhkREJxRXpNd1l3YUtzSzg4ZERCRUFvTXdqTFVLOEp4ZnMzQlZnUEx3VExVSzhKeGZzM0JFQW9Nd2grN004TEx0YjNCVmdQTHdSKzdNOExMdGIzQmorWUp3dk54UXNJQVRNbkIwczNOd2ZOeFFzSUFUTW5CcUV6TXdWL2NRY0k4SHN6QlFFTUt3dFhsUWNMZ1pNekIwczNOd1JJU09zSkp1dkhCS0lZS3doSVNPc0pKdXZIQktJWUt3dk5PTzhKTndPdkIwczNOd2ZOT084Sk53T3ZCaWxvTHdtUHRPOEpOdytqQnFFek13V1B0TzhKTncrakJFQW9Nd21iY1BNSStRZVRCVmdQTHdXYmNQTUkrUWVUQkVBb013dWNtUWNJK3BjL0JWZ1BMd2VjbVFjSStwYy9CaitZSndoYjNVTUxGRXMvQjBzM053UmIzVU1MRkVzL0JxRXpNd1JuM1VNS0RJTkxCUUVNS3dvMEFVY0lvWjlMQjBzM053WnJ6VU1LVDFQckJLSVlLd3ByelVNS1QxUHJCS0lZS3dwbnpVTUtFWFBUQjBzM053Wm56VU1LRVhQVEJpbG9Md3AzelVNSjdJUEhCcUV6TXdaM3pVTUo3SVBIQkVBb013cDN6VU1KV1ArekJWZ1BMd1ozelVNSldQK3pCRUFvTXdyTDdVTUtIOGRYQlZnUEx3Ykw3VU1LSDhkWEJqK1lKd2pwOFg4TCtTOG5CMHMzTndUcDhYOEwrUzhuQnFFek13YzRSWU1JOEhzekJRRU1Ld2tVYllNTGVaTXpCMHMzTndTVFZaOEpMdXZIQktJWUt3aVRWWjhKTHV2SEJLSVlLd2thWVpzSk13T3ZCMHMzTndVYVlac0pNd092Qmlsb0x3dFg1WmNKT3crakJxRXpNd2RYNVpjSk93K2pCRUFvTXd0VUtaY0pBUWVUQlZnUEx3ZFVLWmNKQVFlVEJFQW9Nd256UVlNSTZwYy9CVmdQTHdYelFZTUk2cGMvQmorWUp3blhMYThMUjJMakIwczNOd1hYTGE4TFIyTGpCcUV6TXdkM2ZiTUtYQWJ2QlFFTUt3bFRwYk1JNlNMdkIwczNOd2VvNmU4SkN6dGZCS0lZS3d1bzZlOEpDenRmQktJWUt3bXJ4ZU1JOU85UEIwczNOd1dyeGVNSTlPOVBCaWxvTHdxdk1kOEs3OGREQnFFek13YXZNZDhLNzhkREJFQW9Nd2djVGRzSnpmczNCVmdQTHdRY1Rkc0p6ZnMzQkVBb013a0k4YnNMUHRiM0JWZ1BMd1VJOGJzTFB0YjNCaitZSndnMEZkTUpXT3FEQjBzM053UTBGZE1KV09xREJxRXpNd1M1dWRjS0RaYUhCUUVNS3dxVjNkY0lqcktIQjBzM053WG9ZaE1LdUFySEJLSVlLd25vWWhNS3VBckhCS0lZS3d2dVpnc0x1aUs3QjBzM053ZnVaZ3NMdWlLN0JpbG9Md3J2YWdjSVFUSzNCcUV6TXdidmFnY0lRVEszQkVBb013amU2Z01JSWJxdkJWZ1BMd1RlNmdNSUlicXZCRUFvTXd2b3pkOEk4M3FMQlZnUEx3Zm96ZDhJODNxTEJqK1lKd25Qb2RzSVJNSVBCMHMzTndYUG9kc0lSTUlQQnFFek13Vkp2ZU1JVE1JUEJRRU1Ld3NoNGVNS3lkb1BCMHMzTndReGZoc0tmUDRQQktJWUt3Z3hmaHNLZlA0UEJLSVlLd2dmQmhNS2NQNFBCMHMzTndRZkJoTUtjUDRQQmlsb0x3Z1h5ZzhLZFA0UEJxRXpNd1FYeWc4S2RQNFBCRUFvTXdyeTVnc0tkUDRQQlZnUEx3Ynk1Z3NLZFA0UEJFQW9Nd2g5YWVzS3ROSVBCVmdQTHdSOWFlc0t0TklQQmorWUp3ZzhGZE1LVFMwekIwczNOd1E4RmRNS1RTMHpCcUV6TXdTNXVkY0pCOVVuQlFFTUt3cU4zZGNLRmdrckIwczNOd1hrWWhNSWIrU3JCS0lZS3dua1loTUliK1NyQktJWUt3dnFaZ3NLUzdDL0IwczNOd2ZxWmdzS1M3Qy9CaWxvTHdybmFnY0pWWmpMQnFFek13Ym5hZ2NKVlpqTEJFQW9Nd2phNmdNSmdJamJCVmdQTHdUYTZnTUpnSWpiQkVBb013djR6ZDhJekZrZkJWZ1BMd2Y0emQ4SXpGa2ZCaitZSnduZkxhOEtZRGh2QjBzM053WGZMYThLWURodkJxRXpNd2QzZmJNSUl2UmJCUUVNS3dsTHBiTUpQU2hmQjBzM053ZXc2ZThMcHc3ckFLSVlLd3V3NmU4THB3N3JBS0lZS3duRHhlTUx0RDgzQTBzM053WER4ZU1MdEQ4M0FpbG9Md3FyTWQ4TDJOZGJBcUV6TXdhck1kOEwyTmRiQUVBb013Z1VUZHNJTEErVEFWZ1BMd1FVVGRzSUxBK1RBRUFvTXdrUThic0lPWnhIQlZnUEx3VVE4YnNJT1p4SEJqK1lKd2pwOFg4SjdVUFRBMHMzTndUcDhYOEo3VVBUQXFFek13ZEFSWU1LRUIrbkFRRU1Ld2tVYllNSVBJdXJBMHMzTndTVFZaOEoxSnliQUtJWUt3aVRWWjhKMUp5YkEwczNOd1pyelVNSnpxcnEvS0lZS3dwcnpVTUp6cXJxL0tJWUt3a2VZWnNKWTkxWEFLSVlLd3B6elVNS21GUkhBMHMzTndVZVlac0pZOTFYQTBzM053Wnp6VU1LbUZSSEFpbG9Md3RiNVpjSmozMjNBcUV6TXdkYjVaY0pqMzIzQUVBb013dFVLWmNMaTk0akFWZ1BMd2RVS1pjTGk5NGpBRUFvTXduelFZTUphRU52QVZnUEx3WHpRWU1KYUVOdkFZRUUyQUFBQUNwUEpQZ0FBQUFBQUFBQUFBQUFBQUEyVHlUSU5rOGsrQUFBQUFBMlR5YjROazhreUxuamh3Wnp6VU1LY1A0UEJRRUVnUndBQTR3Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBUFFBQWdEOEFBQUFBQUFBQUFBQUFBQUFBQUlBL0FBQ0FQUUFBZ0Q4QUFBQUFBQUNBUHdBQWdEMEFBQUFBQUFDQVBRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBnQUFnRDhBQUFBK0FBQ0FQd0FBQUQ0QUFBQUFBQUFBUGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDRBQUlBL0FBQkFQZ0FBZ0Q4QUFFQStBQUFBQUFBQVFENEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBK0FBQ0FQd0FBZ0Q0QUFJQS9BQUNBUGdBQUFBQUFBSUErQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dQZ0FBZ0Q4QUFLQStBQUNBUHdBQW9ENEFBQUFBQUFDZ1BnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0Q0QUFJQS9BQURBUGdBQWdEOEFBTUErQUFBQUFBQUF3RDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQStBQUNBUHdBQTRENEFBSUEvQUFEZ1BnQUFBQUFBQU9BK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHdBQWdEOEFBQUEvQUFDQVB3QUFBRDhBQUFBQUFBQUFQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvL0R6OEFBSUEvLy84UFB3QUFnRC8vL3c4L0FBQUFBUC8vRHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0EvQUFDQVB3QUFJRDhBQUlBL0FBQWdQd0FBQUFBQUFDQS9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd1B3QUFnRDhBQURBL0FBQ0FQd0FBTUQ4QUFBQUFBQUF3UHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDhBQUlBL0FBQkFQd0FBZ0Q4QUFFQS9BQUFBQUFBQVFEOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLzA4L0FBQ0FQLy8vVHo4QUFJQS8vLzlQUHdBQUFBRC8vMDgvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vOWZQd0FBZ0QvLy8xOC9BQUNBUC8vL1h6OEFBQUFBLy85ZlB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0Q4QUFJQS9BQUJ3UHdBQUFBQUFBSUEvQUFDQVB3QUFnRDhBQUlBL0FBQndQd0FBZ0Q4QUFJQS9BQUFBQUFBQWNEOEFBQUFBQUFDQVB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JCemUwQUFQWVFBQUFCQUFJQUJ3QUFBQU1BQVFBSEFBUUFBZ0FGQUFjQUJBQUFBQUlBQndBR0FBVUFCd0FIQUFZQUJBQUZBQWNBQ0FBSEFBa0FCd0FJQUFZQUJ3QUhBQW9BQ1FBTEFBY0FDZ0FJQUFrQUJ3QU1BQXNBRFFBSEFBd0FDZ0FMQUFjQURnQU5BQThBQndBT0FBd0FEUUFIQUJBQUR3QVJBQWNBRUFBT0FBOEFCd0FTQUJFQUV3QUhBQklBRUFBUkFBY0FGQUFUQUJVQUJ3QVVBQklBRXdBSEFCWUFGUUFYQUFjQUZnQVVBQlVBQndBWUFCY0FHUUFIQUJnQUZnQVhBQWNBR2dBWkFCc0FCd0FhQUJnQUdRQUhBQndBR3dBZEFBY0FIQUFhQUJzQUJ3QWVBQndBSFFBSEFCNEFId0FjQUFjQUlBQWZBQjRBQndBZ0FDRUFId0FIQUNJQUlRQWdBQWNBSWdBakFDRUFCd0FrQUNNQUlnQUhBQ1FBSlFBakFBY0FKZ0FsQUNRQUJ3QW1BQ2NBSlFBSEFDZ0FKd0FtQUFjQUtBQXBBQ2NBQndBcUFDa0FLQUFIQUNvQUt3QXBBQWNBTEFBckFDb0FCd0FzQUMwQUt3QUhBQzRBTFFBc0FBY0FMZ0F2QUMwQUJ3QXdBQzhBTGdBSEFEQUFNUUF2QUFjQU1nQXhBREFBQndBeUFETUFNUUFIQURRQU13QXlBQWNBTkFBMUFETUFCd0EyQURVQU5BQUhBRFlBTndBMUFBY0FPQUEzQURZQUJ3QTRBRGtBTndBSEFEb0FPUUE0QUFjQU9nQTdBRGtBQndBOEFEc0FPZ0FIQUR3QVBRQTdBQWNBUGdBOUFEd0FCd0ErQUQ4QVBRQUhBRUFBUHdBK0FBY0FRQUJCQUQ4QUJ3QkNBRUVBUUFBSEFFSUFRd0JCQUFjQVJBQkRBRUlBQndCRUFFVUFRd0FIQUVZQVJRQkVBQWNBUmdCSEFFVUFCd0JJQUVjQVJnQUhBRWdBU1FCSEFBY0FTZ0JKQUVnQUJ3QktBRXNBU1FBSEFFd0FTd0JLQUFjQVRBQk5BRXNBQndCT0FFMEFUQUFIQUU0QVR3Qk5BQWNBVUFCT0FGRUFCd0JRQUU4QVRnQUhBRklBVVFCVEFBY0FVZ0JRQUZFQUJ3QlVBRk1BVlFBSEFGUUFVZ0JUQUFjQVZnQlZBRmNBQndCV0FGUUFWUUFIQUZnQVZ3QlpBQWNBV0FCV0FGY0FCd0JhQUZrQVd3QUhBRm9BV0FCWkFBY0FYQUJiQUYwQUJ3QmNBRm9BV3dBSEFGNEFYUUJmQUFjQVhnQmNBRjBBQndCZ0FGOEFZUUFIQUdBQVhnQmZBQWNBWWdCaEFHTUFCd0JpQUdBQVlRQUhBQU1BWXdBQkFBY0FBd0JpQUdNQUJ3QmtBQU1BQUFBSEFHUUFaUUFEQUFjQVpnQUFBQVFBQndCbUFHUUFBQUFIQUdjQUJBQUdBQWNBWndCbUFBUUFCd0JvQUFZQUNBQUhBR2dBWndBR0FBY0FhUUFJQUFvQUJ3QnBBR2dBQ0FBSEFHb0FDZ0FNQUFjQWFnQnBBQW9BQndCckFBd0FEZ0FIQUdzQWFnQU1BQWNBYkFBT0FCQUFCd0JzQUdzQURnQUhBRzBBRUFBU0FBY0FiUUJzQUJBQUJ3QnVBQklBRkFBSEFHNEFiUUFTQUFjQWJ3QVVBQllBQndCdkFHNEFGQUFIQUhBQUZnQVlBQWNBY0FCdkFCWUFCd0J4QUJnQUdnQUhBSEVBY0FBWUFBY0FjZ0FhQUJ3QUJ3QnlBSEVBR2dBSEFCOEFjZ0FjQUFjQUh3QnpBSElBQndBaEFITUFId0FIQUNFQWRBQnpBQWNBSXdCMEFDRUFCd0FqQUhVQWRBQUhBQ1VBZFFBakFBY0FKUUIyQUhVQUJ3QW5BSFlBSlFBSEFDY0Fkd0IyQUFjQUtRQjNBQ2NBQndBcEFIZ0Fkd0FIQUNzQWVBQXBBQWNBS3dCNUFIZ0FCd0F0QUhrQUt3QUhBQzBBZWdCNUFBY0FMd0I2QUMwQUJ3QXZBSHNBZWdBSEFERUFld0F2QUFjQU1RQjhBSHNBQndBekFId0FNUUFIQURNQWZRQjhBQWNBTlFCOUFETUFCd0ExQUg0QWZRQUhBRGNBZmdBMUFBY0FOd0IvQUg0QUJ3QTVBSDhBTndBSEFEa0FnQUIvQUFjQU93Q0FBRGtBQndBN0FJRUFnQUFIQUQwQWdRQTdBQWNBUFFDQ0FJRUFCd0EvQUlJQVBRQUhBRDhBZ3dDQ0FBY0FRUUNEQUQ4QUJ3QkJBSVFBZ3dBSEFFTUFoQUJCQUFjQVF3Q0ZBSVFBQndCRkFJVUFRd0FIQUVVQWhnQ0ZBQWNBUndDR0FFVUFCd0JIQUljQWhnQUhBRWtBaHdCSEFBY0FTUUNJQUljQUJ3QkxBSWdBU1FBSEFFc0FpUUNJQUFjQVRRQ0pBRXNBQndCTkFJb0FpUUFIQUU4QWlnQk5BQWNBVHdDTEFJb0FCd0NNQUU4QVVBQUhBSXdBaXdCUEFBY0FqUUJRQUZJQUJ3Q05BSXdBVUFBSEFJNEFVZ0JVQUFjQWpnQ05BRklBQndDUEFGUUFWZ0FIQUk4QWpnQlVBQWNBa0FCV0FGZ0FCd0NRQUk4QVZnQUhBSkVBV0FCYUFBY0FrUUNRQUZnQUJ3Q1NBRm9BWEFBSEFKSUFrUUJhQUFjQWt3QmNBRjRBQndDVEFKSUFYQUFIQUpRQVhnQmdBQWNBbEFDVEFGNEFCd0NWQUdBQVlnQUhBSlVBbEFCZ0FBY0FaUUJpQUFNQUJ3QmxBSlVBWWdBSEFKWUFaQUNYQUFjQWxnQmxBR1FBQndDWUFHUUFaZ0FIQUpnQWx3QmtBQWNBbVFCbUFHY0FCd0NaQUpnQVpnQUhBSm9BWndCb0FBY0FtZ0NaQUdjQUJ3Q2JBR2dBYVFBSEFKc0FtZ0JvQUFjQW5BQnBBR29BQndDY0FKc0FhUUFIQUowQWFnQnJBQWNBblFDY0FHb0FCd0NlQUdzQWJBQUhBSjRBblFCckFBY0Fud0JzQUcwQUJ3Q2ZBSjRBYkFBSEFLQUFiUUJ1QUFjQW9BQ2ZBRzBBQndDaEFHNEFid0FIQUtFQW9BQnVBQWNBb2dCdkFIQUFCd0NpQUtFQWJ3QUhBS01BY0FCeEFBY0Fvd0NpQUhBQUJ3Q2tBSEVBY2dBSEFLUUFvd0J4QUFjQWN3Q2tBSElBQndCekFLVUFwQUFIQUhRQXBRQnpBQWNBZEFDbUFLVUFCd0IxQUtZQWRBQUhBSFVBcHdDbUFBY0FkZ0NuQUhVQUJ3QjJBS2dBcHdBSEFIY0FxQUIyQUFjQWR3Q3BBS2dBQndCNEFLa0Fkd0FIQUhnQXFnQ3BBQWNBZVFDcUFIZ0FCd0I1QUtzQXFnQUhBSG9BcXdCNUFBY0FlZ0NzQUtzQUJ3QjdBS3dBZWdBSEFIc0FyUUNzQUFjQWZBQ3RBSHNBQndCOEFLNEFyUUFIQUgwQXJnQjhBQWNBZlFDdkFLNEFCd0IrQUs4QWZRQUhBSDRBc0FDdkFBY0Fmd0N3QUg0QUJ3Qi9BTEVBc0FBSEFIOEFzZ0N4QUFjQWZ3Q0FBTElBQndDQUFMTUFzZ0FIQUlBQWdRQ3pBQWNBZ1FDMEFMTUFCd0NCQUlJQXRBQUhBSUlBdFFDMEFBY0FnZ0NEQUxVQUJ3Q0RBTFlBdFFBSEFJTUFoQUMyQUFjQWhBQzNBTFlBQndDRUFJVUF0d0FIQUlVQXVBQzNBQWNBaFFDR0FMZ0FCd0NHQUxrQXVBQUhBSVlBaHdDNUFBY0Fod0M2QUxrQUJ3Q0hBSWdBdWdBSEFJZ0F1d0M2QUFjQWlBQ0pBTHNBQndDSkFMd0F1d0FIQUlrQWlnQzhBQWNBaWdDOUFMd0FCd0NLQUlzQXZRQUhBTDBBakFDK0FBY0F2UUNMQUl3QUJ3QytBSTBBdndBSEFMNEFqQUNOQUFjQXZ3Q09BTUFBQndDL0FJMEFqZ0FIQU1BQWp3REJBQWNBd0FDT0FJOEFCd0RCQUpBQXdnQUhBTUVBandDUUFBY0F3Z0NSQU1NQUJ3RENBSkFBa1FBSEFNTUFrZ0RFQUFjQXd3Q1JBSklBQndERUFKTUF4UUFIQU1RQWtnQ1RBQWNBeFFDVUFNWUFCd0RGQUpNQWxBQUhBTVlBbFFESEFBY0F4Z0NVQUpVQUJ3REhBR1VBbGdBSEFNY0FsUUJsQUFjQXlBREVBTVVBQndESUFNa0F4QUFIQU1ZQXlBREZBQWNBeGdES0FNZ0FCd0RIQU1vQXhnQUhBTWNBeXdES0FBY0FtQURNQUpjQUJ3Q1lBTTBBekFBSEFKa0F6UUNZQUFjQW1RRE9BTTBBQndDYUFNNEFtUUFIQUpvQXp3RE9BQWNBblFEUUFKd0FCd0NkQU5FQTBBQUhBSjRBMFFDZEFBY0FuZ0RTQU5FQUJ3Q2ZBTklBbmdBSEFKOEEwd0RTQUFjQW9RRFVBTlVBQndDaEFLSUExQUFIQUtJQTFnRFVBQWNBb2dDakFOWUFCd0NqQU5jQTFnQUhBS01BcEFEWEFBY0FwZ0RZQU5rQUJ3Q21BS2NBMkFBSEFLY0EyZ0RZQUFjQXB3Q29BTm9BQndDb0FOc0EyZ0FIQUtnQXFRRGJBQWNBcXdEY0FOMEFCd0NyQUt3QTNBQUhBTndBclFEZUFBY0EzQUNzQUswQUJ3RGVBSzRBM3dBSEFONEFyUUN1QUFjQTRBQ3hBT0VBQndEZ0FMQUFzUUFIQU9FQXNnRGlBQWNBNFFDeEFMSUFCd0RpQUxNQTR3QUhBT0lBc2dDekFBY0E1QUMyQU9VQUJ3RGtBTFVBdGdBSEFPVUF0d0RtQUFjQTVRQzJBTGNBQndEbUFMZ0E1d0FIQU9ZQXR3QzRBQWNBNkFDNkFMc0FCd0RvQU9rQXVnQUhBT29BdXdDOEFBY0E2Z0RvQUxzQUJ3RHJBTHdBdlFBSEFPc0E2Z0M4QUFjQTdBQy9BTUFBQndEc0FPMEF2d0FIQU80QXdBREJBQWNBN2dEc0FNQUFCd0R2QU1FQXdnQUhBTzhBN2dEQkFBY0E4QURKQU1nQUJ3RHdBUEVBeVFBSEFNb0E4QURJQUFjQXlnRHlBUEFBQndETEFQSUF5Z0FIQU1zQTh3RHlBQWNBelFEMEFNd0FCd0ROQVBVQTlBQUhBTTRBOVFETkFBY0F6Z0QyQVBVQUJ3RFBBUFlBemdBSEFNOEE5d0QyQUFjQTBRRDRBTkFBQndEUkFQa0ErQUFIQU5JQStRRFJBQWNBMGdENkFQa0FCd0RUQVBvQTBnQUhBTk1BK3dENkFBY0ExUUQ4QVAwQUJ3RFZBTlFBL0FBSEFOUUEvZ0Q4QUFjQTFBRFdBUDRBQndEV0FQOEEvZ0FIQU5ZQTF3RC9BQWNBMlFBQUFRRUJCd0RaQU5nQUFBRUhBTmdBQWdFQUFRY0EyQURhQUFJQkJ3RGFBQU1CQWdFSEFOb0Eyd0FEQVFjQTNRQUVBUVVCQndEZEFOd0FCQUVIQUFRQjNnQUdBUWNBQkFIY0FONEFCd0FHQWQ4QUJ3RUhBQVlCM2dEZkFBY0FDQUhoQUFrQkJ3QUlBZUFBNFFBSEFBa0I0Z0FLQVFjQUNRSGhBT0lBQndBS0FlTUFDd0VIQUFvQjRnRGpBQWNBREFIbEFBMEJCd0FNQWVRQTVRQUhBQTBCNWdBT0FRY0FEUUhsQU9ZQUJ3QU9BZWNBRHdFSEFBNEI1Z0RuQUFjQUVBSHBBT2dBQndBUUFSRUI2UUFIQUJJQjZBRHFBQWNBRWdFUUFlZ0FCd0FUQWVvQTZ3QUhBQk1CRWdIcUFBY0FGQUh0QU93QUJ3QVVBUlVCN1FBSEFCWUI3QUR1QUFjQUZnRVVBZXdBQndBWEFlNEE3d0FIQUJjQkZnSHVBQWNBR0FFWkFmRUFCd0FZQVJvQkdRRUhBQnNCOFFEd0FBY0FHd0VZQWZFQUJ3RHlBQnNCOEFBSEFQSUFIQUViQVFjQTh3QWNBZklBQndEekFCMEJIQUVIQUI0QkhRSHpBQWNBSGdFZkFSMEJCd0QwQUI4QkhnRUhBUFFBSUFFZkFRY0E5UUFnQWZRQUJ3RDFBQ0VCSUFFSEFQWUFJUUgxQUFjQTlnQWlBU0VCQndEM0FDSUI5Z0FIQVBjQUl3RWlBUWNBSkFFakFmY0FCd0FrQVNVQkl3RUhBUGdBSlFFa0FRY0ErQUFtQVNVQkJ3RDVBQ1lCK0FBSEFQa0FKd0VtQVFjQStnQW5BZmtBQndENkFDZ0JKd0VIQVBzQUtBSDZBQWNBK3dBcEFTZ0JCd0FxQVNrQit3QUhBQ29CS3dFcEFRY0FLZ0VzQVNzQkJ3QXFBZjBBTEFFSEFQMEFMUUVzQVFjQS9RRDhBQzBCQndEOEFDNEJMUUVIQVB3QS9nQXVBUWNBL2dBdkFTNEJCd0QrQVA4QUx3RUhBUDhBTUFFdkFRY0Evd0F4QVRBQkJ3QXhBVElCTUFFSEFERUJBUUV5QVFjQUFRRXpBVElCQndBQkFRQUJNd0VIQUFBQk5BRXpBUWNBQUFFQ0FUUUJCd0FDQVRVQk5BRUhBQUlCQXdFMUFRY0FBd0UyQVRVQkJ3QURBVGNCTmdFSEFEY0JPQUUyQVFjQU53RUZBVGdCQndBRkFUa0JPQUVIQUFVQkJBRTVBUWNBT1FFR0FUb0JCd0E1QVFRQkJnRUhBRG9CQndFN0FRY0FPZ0VHQVFjQkJ3QTdBVHdCUFFFSEFEc0JCd0U4QVFjQVBRRUlBVDRCQndBOUFUd0JDQUVIQUQ0QkNRRS9BUWNBUGdFSUFRa0JCd0EvQVFvQlFBRUhBRDhCQ1FFS0FRY0FRQUVMQVVFQkJ3QkFBUW9CQ3dFSEFFRUJRZ0ZEQVFjQVFRRUxBVUlCQndCREFRd0JSQUVIQUVNQlFnRU1BUWNBUkFFTkFVVUJCd0JFQVF3QkRRRUhBRVVCRGdGR0FRY0FSUUVOQVE0QkJ3QkdBUThCUndFSEFFWUJEZ0VQQVFjQVNBRVBBVWtCQndCSUFVY0JEd0VIQUVvQlNRRVJBUWNBU2dGSUFVa0JCd0JMQVJFQkVBRUhBRXNCU2dFUkFRY0FUQUVRQVJJQkJ3Qk1BVXNCRUFFSEFFMEJFZ0VUQVFjQVRRRk1BUklCQndCT0FSTUJUd0VIQUU0QlRRRVRBUWNBVUFGUEFSVUJCd0JRQVU0QlR3RUhBRkVCRlFFVUFRY0FVUUZRQVJVQkJ3QlNBUlFCRmdFSEFGSUJVUUVVQVFjQVV3RVdBUmNCQndCVEFWSUJGZ0VIQUJvQkZ3RVpBUWNBR2dGVEFSY0JCd0JVQVJnQlZRRUhBRlFCR2dFWUFRY0FWUUViQVZZQkJ3QlZBUmdCR3dFSEFCc0JWd0ZXQVFjQUd3RWNBVmNCQndBY0FWZ0JWd0VIQUJ3QkhRRllBUWNBSFFGWkFWZ0JCd0FkQVI4QldRRUhBQjhCV2dGWkFRY0FId0VnQVZvQkJ3QWdBVnNCV2dFSEFDQUJJUUZiQVFjQUlRRmNBVnNCQndBaEFTSUJYQUVIQUNJQlhRRmNBUWNBSWdFakFWMEJCd0FqQVY0QlhRRUhBQ01CSlFGZUFRY0FKUUZmQVY0QkJ3QWxBU1lCWHdFSEFDWUJZQUZmQVFjQUpnRW5BV0FCQndBbkFXRUJZQUVIQUNjQktBRmhBUWNBS0FGaUFXRUJCd0FvQVNrQllnRUhBQ2tCWXdGaUFRY0FLUUVyQVdNQkJ3QXNBV01CS3dFSEFDd0JaQUZqQVFjQUxRRmtBU3dCQndBdEFXVUJaQUVIQUM0QlpRRXRBUWNBTGdGbUFXVUJCd0F2QVdZQkxnRUhBQzhCWndGbUFRY0FNQUZuQVM4QkJ3QXdBV2dCWndFSEFESUJhQUV3QVFjQU1nRnBBV2dCQndBekFXa0JNZ0VIQURNQmFnRnBBUWNBTkFGcUFUTUJCd0EwQVdzQmFnRUhBRFVCYXdFMEFRY0FOUUZzQVdzQkJ3QTJBV3dCTlFFSEFEWUJiUUZzQVFjQU9BRnRBVFlCQndBNEFXNEJiUUVIQURrQmJnRTRBUWNBT1FGdkFXNEJCd0J3QVRrQk9nRUhBSEFCYndFNUFRY0FjUUU2QVRzQkJ3QnhBWEFCT2dFSEFISUJPd0U5QVFjQWNnRnhBVHNCQndCekFUMEJQZ0VIQUhNQmNnRTlBUWNBZEFFK0FUOEJCd0IwQVhNQlBnRUhBSFVCUHdGQUFRY0FkUUYwQVQ4QkJ3QjJBVUFCUVFFSEFIWUJkUUZBQVFjQWR3RkJBVU1CQndCM0FYWUJRUUVIQUhnQlF3RkVBUWNBZUFGM0FVTUJCd0I1QVVRQlJRRUhBSGtCZUFGRUFRY0FlZ0ZGQVVZQkJ3QjZBWGtCUlFFSEFIc0JSZ0ZIQVFjQWV3RjZBVVlCQndCN0FVZ0JmQUVIQUhzQlJ3RklBUWNBZkFGS0FYMEJCd0I4QVVnQlNnRUhBSDBCU3dGK0FRY0FmUUZLQVVzQkJ3QitBVXdCZndFSEFINEJTd0ZNQVFjQWZ3Rk5BWUFCQndCL0FVd0JUUUVIQUlBQlRnR0JBUWNBZ0FGTkFVNEJCd0NCQVZBQmdnRUhBSUVCVGdGUUFRY0FnZ0ZSQVlNQkJ3Q0NBVkFCVVFFSEFJTUJVZ0dFQVFjQWd3RlJBVklCQndDRUFWTUJoUUVIQUlRQlVnRlRBUWNBaFFFYUFWUUJCd0NGQVZNQkdnRUhBSVlCVlFHSEFRY0FoZ0ZVQVZVQkJ3Q0hBVllCaUFFSEFJY0JWUUZXQVFjQVZnR0pBWWdCQndCV0FWY0JpUUVIQUZjQmlnR0pBUWNBVndGWUFZb0JCd0JZQVlzQmlnRUhBRmdCV1FHTEFRY0FXUUdNQVlzQkJ3QlpBVm9CakFFSEFGb0JqUUdNQVFjQVdnRmJBWTBCQndCYkFZNEJqUUVIQUZzQlhBR09BUWNBWEFHUEFZNEJCd0JjQVYwQmp3RUhBRjBCa0FHUEFRY0FYUUZlQVpBQkJ3QmVBWkVCa0FFSEFGNEJYd0dSQVFjQVh3R1NBWkVCQndCZkFXQUJrZ0VIQUdBQmt3R1NBUWNBWUFGaEFaTUJCd0JoQVpRQmt3RUhBR0VCWWdHVUFRY0FZZ0dWQVpRQkJ3QmlBV01CbFFFSEFHUUJsUUZqQVFjQVpBR1dBWlVCQndCbEFaWUJaQUVIQUdVQmx3R1dBUWNBWmdHWEFXVUJCd0JtQVpnQmx3RUhBR2NCbUFGbUFRY0Fad0daQVpnQkJ3Qm9BWmtCWndFSEFHZ0JtZ0daQVFjQWFRR2FBV2dCQndCcEFac0JtZ0VIQUdvQm13RnBBUWNBYWdHY0Fac0JCd0JyQVp3QmFnRUhBR3NCblFHY0FRY0FiQUdkQVdzQkJ3QnNBWjRCblFFSEFHMEJuZ0ZzQVFjQWJRR2ZBWjRCQndCdUFaOEJiUUVIQUc0Qm9BR2ZBUWNBYndHZ0FXNEJCd0J2QWFFQm9BRUhBS0lCYndGd0FRY0FvZ0doQVc4QkJ3Q2pBWEFCY1FFSEFLTUJvZ0Z3QVFjQXBBRnhBWElCQndDa0FhTUJjUUVIQUtVQmNnRnpBUWNBcFFHa0FYSUJCd0NtQVhNQmRBRUhBS1lCcFFGekFRY0Fwd0YwQVhVQkJ3Q25BYVlCZEFFSEFLZ0JkUUYyQVFjQXFBR25BWFVCQndDcEFYWUJkd0VIQUtrQnFBRjJBUWNBcWdGM0FYZ0JCd0NxQWFrQmR3RUhBS3NCZUFGNUFRY0Fxd0dxQVhnQkJ3Q3NBWGtCZWdFSEFLd0Jxd0Y1QVFjQXJRRjZBWHNCQndDdEFhd0JlZ0VIQUswQmZBR3VBUWNBclFGN0FYd0JCd0N1QVgwQnJ3RUhBSzRCZkFGOUFRY0Fyd0YrQWJBQkJ3Q3ZBWDBCZmdFSEFMQUJmd0d4QVFjQXNBRitBWDhCQndDeEFZQUJzZ0VIQUxFQmZ3R0FBUWNBc2dHQkFiTUJCd0N5QVlBQmdRRUhBTE1CZ2dHMEFRY0Fzd0dCQVlJQkJ3QzBBWU1CdFFFSEFMUUJnZ0dEQVFjQXRRR0VBYllCQndDMUFZTUJoQUVIQUxZQmhRRzNBUWNBdGdHRUFZVUJCd0MzQVZRQmhnRUhBTGNCaFFGVUFRY0F1QUdIQWJrQkJ3QzRBWVlCaHdFSEFMa0JpQUc2QVFjQXVRR0hBWWdCQndDSUFic0J1Z0VIQUlnQmlRRzdBUWNBaVFHOEFic0JCd0NKQVlvQnZBRUhBSW9CdlFHOEFRY0FpZ0dMQWIwQkJ3Q0xBYjRCdlFFSEFJc0JqQUcrQVFjQWpBRy9BYjRCQndDTUFZMEJ2d0VIQUkwQndBRy9BUWNBalFHT0FjQUJCd0NPQWNFQndBRUhBSTRCandIQkFRY0Fqd0hDQWNFQkJ3Q1BBWkFCd2dFSEFKQUJ3d0hDQVFjQWtBR1JBY01CQndDUkFjUUJ3d0VIQUpFQmtnSEVBUWNBa2dIRkFjUUJCd0NTQVpNQnhRRUhBSk1CeGdIRkFRY0Frd0dVQWNZQkJ3Q1VBY2NCeGdFSEFKUUJsUUhIQVFjQWxnSEhBWlVCQndDV0FjZ0J4d0VIQUpjQnlBR1dBUWNBbHdISkFjZ0JCd0NZQWNrQmx3RUhBSmdCeWdISkFRY0FtUUhLQVpnQkJ3Q1pBY3NCeWdFSEFKb0J5d0daQVFjQW1nSE1BY3NCQndDYkFjd0JtZ0VIQUpzQnpRSE1BUWNBbkFITkFac0JCd0NjQWM0QnpRRUhBSjBCemdHY0FRY0FuUUhQQWM0QkJ3Q2VBYzhCblFFSEFKNEIwQUhQQVFjQW53SFFBWjRCQndDZkFkRUIwQUVIQUtBQjBRR2ZBUWNBb0FIU0FkRUJCd0NoQWRJQm9BRUhBS0VCMHdIU0FRY0ExQUdoQWFJQkJ3RFVBZE1Cb1FFSEFOVUJvZ0dqQVFjQTFRSFVBYUlCQndEV0FhTUJwQUVIQU5ZQjFRR2pBUWNBMXdHa0FhVUJCd0RYQWRZQnBBRUhBTmdCcFFHbUFRY0EyQUhYQWFVQkJ3RFpBYVlCcHdFSEFOa0IyQUdtQVFjQTJnR25BYWdCQndEYUFka0Jwd0VIQU5zQnFBR3BBUWNBMndIYUFhZ0JCd0RjQWFrQnFnRUhBTndCMndHcEFRY0EzUUdxQWFzQkJ3RGRBZHdCcWdFSEFONEJxd0dzQVFjQTNnSGRBYXNCQndEZkFhd0JyUUVIQU44QjNnR3NBUWNBM3dHdUFlQUJCd0RmQWEwQnJnRUhBT0FCcndIaEFRY0E0QUd1QWE4QkJ3RGhBYkFCNGdFSEFPRUJyd0d3QVFjQTRnR3hBZU1CQndEaUFiQUJzUUVIQU9NQnNnSGtBUWNBNHdHeEFiSUJCd0RrQWJNQjVRRUhBT1FCc2dHekFRY0E1UUcwQWVZQkJ3RGxBYk1CdEFFSEFPWUJ0UUhuQVFjQTVnRzBBYlVCQndEbkFiWUI2QUVIQU9jQnRRRzJBUWNBNkFHM0Fla0JCd0RvQWJZQnR3RUhBT2tCaGdHNEFRY0E2UUczQVlZQkJ3RHFBYmdCdVFFSEFPb0I2d0c0QVFjQTdBRzVBYm9CQndEc0Flb0J1UUVIQUxzQjdBRzZBUWNBdXdIdEFld0JCd0M4QWUwQnV3RUhBTHdCN2dIdEFRY0F2UUh1QWJ3QkJ3QzlBZThCN2dFSEFMNEI3d0c5QVFjQXZnSHdBZThCQndDL0FmQUJ2Z0VIQUw4QjhRSHdBUWNBd0FIeEFiOEJCd0RBQWZJQjhRRUhBTUVCOGdIQUFRY0F3UUh6QWZJQkJ3RENBZk1Cd1FFSEFNSUI5QUh6QVFjQXd3SDBBY0lCQndEREFmVUI5QUVIQU1RQjlRSERBUWNBeEFIMkFmVUJCd0RGQWZZQnhBRUhBTVVCOXdIMkFRY0F4Z0gzQWNVQkJ3REdBZmdCOXdFSEFNY0IrQUhHQVFjQXh3SDVBZmdCQndESUFma0J4d0VIQU1nQitnSDVBUWNBeVFINkFjZ0JCd0RKQWZzQitnRUhBTW9CK3dISkFRY0F5Z0g4QWZzQkJ3RExBZndCeWdFSEFNc0IvUUg4QVFjQXpBSDlBY3NCQndETUFmNEIvUUVIQU0wQi9nSE1BUWNBelFIL0FmNEJCd0RPQWY4QnpRRUhBTTRCQUFML0FRY0F6d0VBQXM0QkJ3RFBBUUVDQUFJSEFOQUJBUUxQQVFjQTBBRUNBZ0VDQndEUkFRSUMwQUVIQU5FQkF3SUNBZ2NBMGdFREF0RUJCd0RTQVFRQ0F3SUhBTk1CQkFMU0FRY0Ewd0VGQWdRQ0J3QUdBdE1CMUFFSEFBWUNCUUxUQVFjQUJ3TFVBZFVCQndBSEFnWUMxQUVIQUFnQzFRSFdBUWNBQ0FJSEF0VUJCd0FKQXRZQjF3RUhBQWtDQ0FMV0FRY0FDZ0xYQWRnQkJ3QUtBZ2tDMXdFSEFBc0MyQUhaQVFjQUN3SUtBdGdCQndBTUF0a0IyZ0VIQUF3Q0N3TFpBUWNBRFFMYUFkc0JCd0FOQWd3QzJnRUhBQTRDMndIY0FRY0FEZ0lOQXRzQkJ3QVBBdHdCM1FFSEFBOENEZ0xjQVFjQUVBTGRBZDRCQndBUUFnOEMzUUVIQUJFQzNnSGZBUWNBRVFJUUF0NEJCd0FTQXQ4QjRBRUhBQklDRVFMZkFRY0FFd0xnQWVFQkJ3QVRBaElDNEFFSEFCUUM0UUhpQVFjQUZBSVRBdUVCQndBVkF1SUI0d0VIQUJVQ0ZBTGlBUWNBRmdMakFlUUJCd0FXQWhVQzR3RUhBQmNDNUFIbEFRY0FGd0lXQXVRQkJ3QVlBdVVCNWdFSEFCZ0NGd0xsQVFjQUdRTG1BZWNCQndBWkFoZ0M1Z0VIQUJvQzV3SG9BUWNBR2dJWkF1Y0JCd0FiQXVnQjZRRUhBQnNDR2dMb0FRY0E2d0hwQWJnQkJ3RHJBUnNDNlFFSEFNUUFIQUlkQWdjQXhBREpBQndDQndBZUFzUUFIUUlIQUI0Q3d3REVBQWNBeHdBZkFpQUNCd0RIQUpZQUh3SUhBQ0VDeHdBZ0FnY0FJUUxMQU1jQUJ3Q1dBQ0lDSHdJSEFKWUFsd0FpQWdjQWx3QWpBaUlDQndDWEFNd0FJd0lIQUpvQUpBSWxBZ2NBbWdDYkFDUUNCd0FtQXBvQUpRSUhBQ1lDendDYUFBY0Ftd0FuQWlRQ0J3Q2JBSndBSndJSEFKd0FLQUluQWdjQW5BRFFBQ2dDQndDZkFDa0NLZ0lIQUo4QW9BQXBBZ2NBS3dLZkFDb0NCd0FyQXRNQW53QUhBS0FBTEFJcEFnY0FvQUNoQUN3Q0J3QXNBdFVBTFFJSEFDd0NvUURWQUFjQTF3QXVBaThDQndEWEFLUUFMZ0lIQUtRQU1BSXVBZ2NBcEFDbEFEQUNCd0NsQURFQ01BSUhBS1VBcGdBeEFnY0FNUUxaQURJQ0J3QXhBcVlBMlFBSEFOc0FNd0kwQWdjQTJ3Q3BBRE1DQndDcEFEVUNNd0lIQUtrQXFnQTFBZ2NBcWdBMkFqVUNCd0NxQUtzQU5nSUhBRFlDM1FBM0FnY0FOZ0tyQU4wQUJ3RGZBRGdDT1FJSEFOOEFyZ0E0QWdjQU9BS3ZBRG9DQndBNEFxNEFyd0FIQURvQ3NBQTdBZ2NBT2dLdkFMQUFCd0E3QXVBQVBBSUhBRHNDc0FEZ0FBY0E0d0E5QWo0Q0J3RGpBTE1BUFFJSEFEMEN0QUEvQWdjQVBRS3pBTFFBQndBL0FyVUFRQUlIQUQ4Q3RBQzFBQWNBUUFMa0FFRUNCd0JBQXJVQTVBQUhBT2NBUWdKREFnY0E1d0M0QUVJQ0J3QkNBcmtBUkFJSEFFSUN1QUM1QUFjQXVnQkZBa1lDQndDNkFPa0FSUUlIQUVRQ3VnQkdBZ2NBUkFLNUFMb0FCd0JIQXIwQVNBSUhBRWNDNndDOUFBY0FTQUsrQUVrQ0J3QklBcjBBdmdBSEFMOEFTZ0pMQWdjQXZ3RHRBRW9DQndCSkFyOEFTd0lIQUVrQ3ZnQy9BQWNBVEFMQ0FFMENCd0JNQXU4QXdnQUhBRTBDd3dBZUFnY0FUUUxDQU1NQUJ3REpBRTRDSEFJSEFNa0E4UUJPQWdjQThRQlBBazRDQndEeEFCa0JUd0lIQUZBQzh3QlJBZ2NBVUFJZUFmTUFCd0JSQXNzQUlRSUhBRkVDOHdETEFBY0F6QUJTQWlNQ0J3RE1BUFFBVWdJSEFGSUNIZ0ZRQWdjQVVnTDBBQjRCQndCVEF2Y0FWQUlIQUZNQ0pBSDNBQWNBVkFMUEFDWUNCd0JVQXZjQXp3QUhBTkFBVlFJb0FnY0EwQUQ0QUZVQ0J3QlZBaVFCVXdJSEFGVUMrQUFrQVFjQVZnTDdBRmNDQndCV0Fpb0Ird0FIQUZjQzB3QXJBZ2NBVndMN0FOTUFCd0F0QXYwQVdBSUhBQzBDMVFEOUFBY0FXQUlxQVZZQ0J3QllBdjBBS2dFSEFQOEFMd0paQWdjQS93RFhBQzhDQndCYUF2OEFXUUlIQUZvQ01RSC9BQWNBTWdJQkFWc0NCd0F5QXRrQUFRRUhBRnNDTVFGYUFnY0FXd0lCQVRFQkJ3QURBVFFDWEFJSEFBTUIyd0EwQWdjQVhRSURBVndDQndCZEFqY0JBd0VIQURjQ0JRRmVBZ2NBTndMZEFBVUJCd0JlQWpjQlhRSUhBRjRDQlFFM0FRY0FQQUZmQW1BQ0J3QThBUWNCWHdJSEFBY0JPUUpmQWdjQUJ3SGZBRGtDQndBSUFXQUNZUUlIQUFnQlBBRmdBZ2NBUEFJSUFXRUNCd0E4QXVBQUNBRUhBRUlCWWdKakFnY0FRZ0VMQVdJQ0J3QUxBVDRDWWdJSEFBc0I0d0ErQWdjQURBRmpBbVFDQndBTUFVSUJZd0lIQUVFQ0RBRmtBZ2NBUVFMa0FBd0JCd0JKQVdVQ1pnSUhBRWtCRHdGbEFnY0FEd0ZEQW1VQ0J3QVBBZWNBUXdJSEFPa0Fad0pGQWdjQTZRQVJBV2NDQndBUkFXWUNad0lIQUJFQlNRRm1BZ2NBVHdGb0Fta0NCd0JQQVJNQmFBSUhBR2dDNndCSEFnY0FhQUlUQWVzQUJ3RHRBR29DU2dJSEFPMEFGUUZxQWdjQUZRRnBBbW9DQndBVkFVOEJhUUlIQUJrQmF3SlBBZ2NBR1FFWEFXc0NCd0JyQXU4QVRBSUhBR3NDRndIdkFBY0FiQUp0QW00Q0J3QnNBbThDYlFJSEFIQUNjUUp5QWdjQWNBSnpBbkVDQndCMEFuVUNkZ0lIQUhRQ2R3SjFBZ2NBZUFKNUFub0NCd0I0QW5zQ2VRSUhBSGNDZkFKMUFnY0Fkd0o5QW53Q0J3QitBbnNDZUFJSEFINENmd0o3QWdjQWdBS0JBb0lDQndDQUFvTUNnUUlIQUlRQ2hRS0dBZ2NBaEFLSEFvVUNCd0NEQW9nQ2dRSUhBSU1DaVFLSUFnY0FpZ0tIQW9RQ0J3Q0tBb3NDaHdJSEFJd0NqUUtPQWdjQWpBS1BBbzBDQndDUUFwRUNrZ0lIQUpBQ2t3S1JBZ2NBbEFLT0FwVUNCd0NVQW93Q2pnSUhBSklDbGdLWEFnY0FrZ0tSQXBZQ0J3Q1lBcGtDbWdJSEFKZ0Ntd0taQWdjQW5BS2RBcDRDQndDY0FwOENuUUlIQUtBQ21nS2hBZ2NBb0FLWUFwb0NCd0NlQXFJQ293SUhBSjRDblFLaUFnY0FwQUtsQXFZQ0J3Q2tBcWNDcFFJSEFLZ0NxUUtxQWdjQXFBS3JBcWtDQndDc0FxWUNyUUlIQUt3Q3BBS21BZ2NBcWdLdUFxOENCd0NxQXFrQ3JnSUhBTEFDc1FLeUFnY0FzQUt6QXJFQ0J3QzBBclVDdGdJSEFMUUN0d0sxQWdjQXVBS3lBcmtDQndDNEFyQUNzZ0lIQUxZQ3VnSzdBZ2NBdGdLMUFyb0NCd0M4QXIwQ3ZnSUhBTHdDdndLOUFnY0F3QUxCQXNJQ0J3REFBc01Dd1FJSEFNUUN2Z0xGQWdjQXhBSzhBcjRDQndEQ0FzWUN4d0lIQU1JQ3dRTEdBZ2NBeUFMSkFzb0NCd0RJQXNzQ3lRSUhBTXdDelFMT0FnY0F6QUxQQXMwQ0J3RExBdEFDeVFJSEFNc0MwUUxRQWdjQTBnTFBBc3dDQndEU0F0TUN6d0lIQU5RQzFRTFdBZ2NBMUFMWEF0VUNCd0RZQXRrQzJnSUhBTmdDMndMWkFnY0Exd0xjQXRVQ0J3RFhBdDBDM0FJSEFONEMyd0xZQWdjQTNnTGZBdHNDQndEZ0FtNEM0UUlIQU9BQ2JBSnVBZ2NBY2dMaUF1TUNCd0J5QW5FQzRnSUhBT0lDNUFMbEFnY0E0Z0p4QXVRQ0J3QnhBdVlDNUFJSEFIRUNjd0xtQWdjQWN3TG5BdVlDQndCekFua0M1d0lIQUhrQzZBTG5BZ2NBZVFKN0F1Z0NCd0I3QXVrQzZBSUhBSHNDZndMcEFnY0Fmd0xxQXVrQ0J3Qi9Bb1VDNmdJSEFJVUM2d0xxQWdjQWhRS0hBdXNDQndDSEF1d0M2d0lIQUljQ2l3THNBZ2NBaXdMdEF1d0NCd0NMQW84QzdRSUhBTzBDakFMdUFnY0E3UUtQQW93Q0J3RHVBcFFDN3dJSEFPNENqQUtVQWdjQTd3S2JBdkFDQndEdkFwUUNtd0lIQVBBQ21BTHhBZ2NBOEFLYkFwZ0NCd0R4QXFBQzhnSUhBUEVDbUFLZ0FnY0E4Z0tuQXZNQ0J3RHlBcUFDcHdJSEFQTUNwQUwwQWdjQTh3S25BcVFDQndEMEFxd0M5UUlIQVBRQ3BBS3NBZ2NBOVFLekF2WUNCd0QxQXF3Q3N3SUhBUFlDc0FMM0FnY0E5Z0t6QXJBQ0J3RDNBcmdDK0FJSEFQY0NzQUs0QWdjQStBSy9BdmtDQndENEFyZ0N2d0lIQVBrQ3ZBTDZBZ2NBK1FLL0Fyd0NCd0Q2QXNRQyt3SUhBUG9DdkFMRUFnY0Erd0xOQXZ3Q0J3RDdBc1FDelFJSEFNMEMvUUw4QWdjQXpRTFBBdjBDQndEUEF2NEMvUUlIQU04QzB3TCtBZ2NBMHdML0F2NENCd0RUQXRrQy93SUhBTmtDQUFQL0FnY0EyUUxiQWdBREJ3RGJBZ0VEQUFNSEFOc0Mzd0lCQXdjQTN3TGxBZ0VEQndEZkF1SUM1UUlIQU9RQ0FnUGxBZ2NBNUFJREF3SURCd0RtQWdNRDVBSUhBT1lDQkFNREF3Y0E1Z0lGQXdRREJ3RG1BdWNDQlFNSEFPY0NCZ01GQXdjQTV3TG9BZ1lEQndEb0FnY0RCZ01IQU9nQzZRSUhBd2NBNlFJSUF3Y0RCd0RwQXVvQ0NBTUhBT29DQ1FNSUF3Y0E2Z0xyQWdrREJ3RHJBZ29EQ1FNSEFPc0M3QUlLQXdjQTdBSUxBd29EQndEc0F1MENDd01IQUFzRDdnSU1Bd2NBQ3dQdEF1NENCd0FNQSs4Q0RRTUhBQXdEN2dMdkFnY0FEUVB3QWc0REJ3QU5BKzhDOEFJSEFBNEQ4UUlQQXdjQURnUHdBdkVDQndBUEEvSUNFQU1IQUE4RDhRTHlBZ2NBRUFQekFoRURCd0FRQS9JQzh3SUhBQkVEOUFJU0F3Y0FFUVB6QXZRQ0J3QVRBL1FDOVFJSEFCTURFZ1AwQWdjQUZBUDFBdllDQndBVUF4TUQ5UUlIQUJVRDlnTDNBZ2NBRlFNVUEvWUNCd0FXQS9jQytBSUhBQllERlFQM0FnY0FGd1A0QXZrQ0J3QVhBeFlEK0FJSEFCZ0QrUUw2QWdjQUdBTVhBL2tDQndBWkEvb0Mrd0lIQUJrREdBUDZBZ2NBR2dQN0F2d0NCd0FhQXhrRCt3SUhBUDBDR2dQOEFnY0EvUUliQXhvREJ3RCtBaHNEL1FJSEFQNENIQU1iQXdjQS93SWNBLzRDQndEL0FoMERIQU1IQUFBREhRUC9BZ2NBQUFNZUF4MERCd0FCQXg0REFBTUhBQUVESHdNZUF3Y0E1UUlmQXdFREJ3RGxBZ0lESHdNSEFBSURJQU1oQXdjQUFnTURBeUFEQndBREF5SURJQU1IQUFNREJBTWlBd2NBQkFNakF5SURCd0FFQXdVREl3TUhBQVVESkFNakF3Y0FCUU1HQXlRREJ3QUdBeVVESkFNSEFBWURCd01sQXdjQUJ3TW1BeVVEQndBSEF3Z0RKZ01IQUFnREp3TW1Bd2NBQ0FNSkF5Y0RCd0FKQXlnREp3TUhBQWtEQ2dNb0F3Y0FDZ01wQXlnREJ3QUtBd3NES1FNSEFDa0REQU1xQXdjQUtRTUxBd3dEQndBcUF3MERLd01IQUNvRERBTU5Bd2NBS3dNT0F5d0RCd0FyQXcwRERnTUhBQ3dERHdNdEF3Y0FMQU1PQXc4REJ3QXRBeEFETGdNSEFDMEREd01RQXdjQUxnTVJBeThEQndBdUF4QURFUU1IQUM4REVnTXdBd2NBTHdNUkF4SURCd0F3QXhNRE1RTUhBREFERWdNVEF3Y0FNUU1VQXpJREJ3QXhBeE1ERkFNSEFESURGUU16QXdjQU1nTVVBeFVEQndBekF4WUROQU1IQURNREZRTVdBd2NBTkFNWEF6VURCd0EwQXhZREZ3TUhBRFVER0FNMkF3Y0FOUU1YQXhnREJ3QTJBeGtETndNSEFEWURHQU1aQXdjQU53TWFBemdEQndBM0F4a0RHZ01IQUJvRE9RTTRBd2NBR2dNYkF6a0RCd0FiQXpvRE9RTUhBQnNESEFNNkF3Y0FIQU03QXpvREJ3QWNBeDBET3dNSEFCMERQQU03QXdjQUhRTWVBendEQndBZUF6MERQQU1IQUI0REh3TTlBd2NBSHdNaEF6MERCd0FmQXdJRElRTUhBQ0VEUGdNL0F3Y0FJUU1nQXo0REJ3QWdBMEFEUGdNSEFDQURJZ05BQXdjQUlnTkJBMEFEQndBaUF5TURRUU1IQUNNRFFnTkJBd2NBSXdNa0EwSURCd0FrQTBNRFFnTUhBQ1FESlFOREF3Y0FKUU5FQTBNREJ3QWxBeVlEUkFNSEFDWURSUU5FQXdjQUpnTW5BMFVEQndBbkEwWURSUU1IQUNjREtBTkdBd2NBS0FOSEEwWURCd0FvQXlrRFJ3TUhBRWNES2dOSUF3Y0FSd01wQXlvREJ3QklBeXNEU1FNSEFFZ0RLZ01yQXdjQVNRTXNBMG9EQndCSkF5c0RMQU1IQUVvRExRTkxBd2NBU2dNc0F5MERCd0JMQXk0RFRBTUhBRXNETFFNdUF3Y0FUQU12QTAwREJ3Qk1BeTRETHdNSEFFMERNQU5PQXdjQVRRTXZBekFEQndCT0F6RURUd01IQUU0RE1BTXhBd2NBVHdNeUExQURCd0JQQXpFRE1nTUhBRkFETXdOUkF3Y0FVQU15QXpNREJ3QlJBelFEVWdNSEFGRURNd00wQXdjQVVnTTFBMU1EQndCU0F6UUROUU1IQUZNRE5nTlVBd2NBVXdNMUF6WURCd0JVQXpjRFZRTUhBRlFETmdNM0F3Y0FWUU00QTFZREJ3QlZBemNET0FNSEFEZ0RWd05XQXdjQU9BTTVBMWNEQndBNUExZ0RWd01IQURrRE9nTllBd2NBT2dOWkExZ0RCd0E2QXpzRFdRTUhBRHNEV2dOWkF3Y0FPd004QTFvREJ3QThBMXNEV2dNSEFEd0RQUU5iQXdjQVBRTS9BMXNEQndBOUF5RURQd01IQUZ3RFhRTmVBd2NBWEFOZkExMERCd0JnQTE0RFlRTUhBR0FEWEFOZUF3Y0FZZ05oQTJNREJ3QmlBMkFEWVFNSEFHUURZd05sQXdjQVpBTmlBMk1EQndCbUEyVURad01IQUdZRFpBTmxBd2NBYUFObkEya0RCd0JvQTJZRFp3TUhBR29EYVFOckF3Y0FhZ05vQTJrREJ3QnNBMnNEYlFNSEFHd0RhZ05yQXdjQWJnTnNBMjBEQndCdUEyOERiQU1IQUhBRGJ3TnVBd2NBY0FOeEEyOERCd0J5QTNFRGNBTUhBSElEY3dOeEF3Y0FkQU56QTNJREJ3QjBBM1VEY3dNSEFIWURkUU4wQXdjQWRnTjNBM1VEQndCNEEzY0RkZ01IQUhnRGVRTjNBd2NBZWdONUEzZ0RCd0I2QTNzRGVRTUhBSHdEZXdONkF3Y0FmQU45QTNzREJ3QjhBMzREZlFNSEFId0Rmd04rQXdjQWZ3T0FBMzREQndCL0E0RURnQU1IQUlFRGdnT0FBd2NBZ1FPREE0SURCd0NEQTRRRGdnTUhBSU1EaFFPRUF3Y0FoUU9HQTRRREJ3Q0ZBNGNEaGdNSEFJY0RpQU9HQXdjQWh3T0pBNGdEQndDSkE0b0RpQU1IQUlrRGl3T0tBd2NBaWdPTUE0MERCd0NLQTRzRGpBTUhBSTBEamdPUEF3Y0FqUU9NQTQ0REJ3Q1BBNUFEa1FNSEFJOERqZ09RQXdjQWtRT1NBNU1EQndDUkE1QURrZ01IQUpNRGxBT1ZBd2NBa3dPU0E1UURCd0NWQTVZRGx3TUhBSlVEbEFPV0F3Y0Fsd05kQTE4REJ3Q1hBNVlEWFFNSEFKZ0RYd05jQXdjQW1BT1pBMThEQndDYUExd0RZQU1IQUpvRG1BTmNBd2NBbXdOZ0EySURCd0NiQTVvRFlBTUhBSndEWmdOb0F3Y0FuQU9kQTJZREJ3Q2VBMmdEYWdNSEFKNERuQU5vQXdjQW53TnFBMndEQndDZkE1NERhZ01IQUc4RG53TnNBd2NBYndPZ0E1OERCd0IxQTZFRGN3TUhBSFVEb2dPaEF3Y0Fkd09pQTNVREJ3QjNBNk1Eb2dNSEFIa0Rvd04zQXdjQWVRT2tBNk1EQndCN0E2UURlUU1IQUhzRHBRT2tBd2NBZmdPbUE2Y0RCd0IrQTRBRHBnTUhBSUFEcUFPbUF3Y0FnQU9DQTZnREJ3Q0NBNmtEcUFNSEFJSURoQU9wQXdjQWhBT3FBNmtEQndDRUE0WURxZ01IQUtzRGpRT3NBd2NBcXdPS0E0MERCd0NzQTQ4RHJRTUhBS3dEalFPUEF3Y0FyUU9SQTY0REJ3Q3RBNDhEa1FNSEFLNERrd092QXdjQXJnT1JBNU1EQndDd0ExOERtUU1IQUxBRGx3TmZBd2NBc1FPWkE1Z0RCd0N4QTdJRG1RTUhBTE1EbUFPYUF3Y0Fzd094QTVnREJ3QzBBNW9EbXdNSEFMUURzd09hQXdjQXRRT2JBN1lEQndDMUE3UURtd01IQUxjRHRnT2RBd2NBdHdPMUE3WURCd0M0QTUwRG5BTUhBTGdEdHdPZEF3Y0F1UU9jQTU0REJ3QzVBN2dEbkFNSEFMb0RuZ09mQXdjQXVnTzVBNTREQndDZ0E3b0Rud01IQUtBRHV3TzZBd2NBdkFPN0E2QURCd0M4QTcwRHV3TUhBS0VEdlFPOEF3Y0FvUU8rQTcwREJ3Q2lBNzREb1FNSEFLSUR2d08rQXdjQW93Ty9BNklEQndDakE4QUR2d01IQUtRRHdBT2pBd2NBcEFQQkE4QURCd0NsQThFRHBBTUhBS1VEd2dQQkF3Y0F3d1BDQTZVREJ3RERBOFFEd2dNSEFNTUR4UVBFQXdjQXd3T25BOFVEQndDbkE4WUR4UU1IQUtjRHBnUEdBd2NBcGdQSEE4WURCd0NtQTZnRHh3TUhBS2dEeUFQSEF3Y0FxQU9wQThnREJ3Q3BBOGtEeUFNSEFLa0RxZ1BKQXdjQXFnUEtBOGtEQndDcUE4c0R5Z01IQU1zRHpBUEtBd2NBeXdPckE4d0RCd0RNQTZ3RHpRTUhBTXdEcXdPc0F3Y0F6UU90QTg0REJ3RE5BNndEclFNSEFNNERyZ1BQQXdjQXpnT3RBNjREQndEUEE2OEQwQU1IQU04RHJnT3ZBd2NBMEFQUkE5SURCd0RRQTY4RDBRTUhBTklEc0FQVEF3Y0EwZ1BSQTdBREJ3RFRBNWtEc2dNSEFOTURzQU9aQXdjQTFBT3lBN0VEQndEVUE5VURzZ01IQU5ZRHNRT3pBd2NBMWdQVUE3RURCd0RYQTdNRHRBTUhBTmNEMWdPekF3Y0EyQU8wQTdVREJ3RFlBOWNEdEFNSEFOa0R0UU8zQXdjQTJRUFlBN1VEQndEYUE3Y0R1QU1IQU5vRDJRTzNBd2NBMndPNEE3a0RCd0RiQTlvRHVBTUhBTndEdVFPNkF3Y0EzQVBiQTdrREJ3QzdBOXdEdWdNSEFMc0QzUVBjQXdjQXZRUGRBN3NEQndDOUE5NEQzUU1IQUw0RDNnTzlBd2NBdmdQZkE5NERCd0MvQTk4RHZnTUhBTDhENEFQZkF3Y0F3QVBnQTc4REJ3REFBK0VENEFNSEFNRUQ0UVBBQXdjQXdRUGlBK0VEQndEQ0ErSUR3UU1IQU1JRDR3UGlBd2NBeEFQakE4SURCd0RFQStRRDR3TUhBTVFENVFQa0F3Y0F4QVBGQStVREJ3REZBK1lENVFNSEFNVUR4Z1BtQXdjQXhnUG5BK1lEQndER0E4Y0Q1d01IQU1jRDZBUG5Bd2NBeHdQSUErZ0RCd0RJQStrRDZBTUhBTWdEeVFQcEF3Y0F5UVBxQStrREJ3REpBOG9ENmdNSEFNb0Q2d1BxQXdjQXlnUE1BK3NEQndEckE4MEQ3QU1IQU9zRHpBUE5Bd2NBN0FQT0ErMERCd0RzQTgwRHpnTUhBTzBEendQdUF3Y0E3UVBPQTg4REJ3RHVBOUFEN3dNSEFPNER6d1BRQXdjQTd3UFNBL0FEQndEdkE5QUQwZ01IQVBBRDB3UHhBd2NBOEFQU0E5TURCd0R4QTdJRDFRTUhBUEVEMHdPeUF3Y0E4Z1BVQS9NREJ3RHlBOVVEMUFNSEFQTUQxZ1AwQXdjQTh3UFVBOVlEQndEMEE5Y0Q5UU1IQVBRRDFnUFhBd2NBOVFQWUEvWURCd0QxQTljRDJBTUhBUFlEMlFQM0F3Y0E5Z1BZQTlrREJ3RDNBOW9EK0FNSEFQY0QyUVBhQXdjQStBUGJBL2tEQndENEE5b0Qyd01IQVBrRDNBUDZBd2NBK1FQYkE5d0RCd0RjQS9zRCtnTUhBTndEM1FQN0F3Y0EzUVA4QS9zREJ3RGRBOTREL0FNSEFONEQvUVA4QXdjQTNnUGZBLzBEQndEZkEvNEQvUU1IQU44RDRBUCtBd2NBNEFQL0EvNERCd0RnQStFRC93TUhBT0VEQUFUL0F3Y0E0UVBpQXdBRUJ3RGlBd0VFQUFRSEFPSUQ0d01CQkFjQTR3TUNCQUVFQndEakErUURBZ1FIQU9RREF3UUNCQWNBNUFQbEF3TUVCd0RsQXdRRUF3UUhBT1VENWdNRUJBY0E1Z01GQkFRRUJ3RG1BK2NEQlFRSEFPY0RCZ1FGQkFjQTV3UG9Bd1lFQndEb0F3Y0VCZ1FIQU9nRDZRTUhCQWNBNlFNSUJBY0VCd0RwQStvRENBUUhBT29EQ1FRSUJBY0E2Z1ByQXdrRUJ3QUpCT3dEQ2dRSEFBa0U2d1BzQXdjQUNnVHRBd3NFQndBS0JPd0Q3UU1IQUFzRTdnTU1CQWNBQ3dUdEErNERCd0FNQk84RERRUUhBQXdFN2dQdkF3Y0FEUVR3QXc0RUJ3QU5CTzhEOEFNSEFBNEU4UU1QQkFjQURnVHdBL0VEQndBUEJOVUQ4Z01IQUE4RThRUFZBd2NBRUFUekF4RUVCd0FRQlBJRDh3TUhBQkVFOUFNU0JBY0FFUVR6QS9RREJ3QVNCUFVERXdRSEFCSUU5QVAxQXdjQUV3VDJBeFFFQndBVEJQVUQ5Z01IQUJRRTl3TVZCQWNBRkFUMkEvY0RCd0FWQlBnREZnUUhBQlVFOXdQNEF3Y0FGZ1Q1QXhjRUJ3QVdCUGdEK1FNSEFCY0UrZ01ZQkFjQUZ3VDVBL29EQndENkF4a0VHQVFIQVBvRCt3TVpCQWNBK3dNYUJCa0VCd0Q3QS93REdnUUhBUHdER3dRYUJBY0EvQVA5QXhzRUJ3RDlBeHdFR3dRSEFQMEQvZ01jQkFjQS9nTWRCQndFQndEK0EvOERIUVFIQVA4REhnUWRCQWNBL3dNQUJCNEVCd0FBQkI4RUhnUUhBQUFFQVFRZkJBY0FBUVFnQkI4RUJ3QUJCQUlFSUFRSEFBSUVJUVFnQkFjQUFnUURCQ0VFQndBREJDSUVJUVFIQUFNRUJBUWlCQWNBQkFRakJDSUVCd0FFQkFVRUl3UUhBQVVFSkFRakJBY0FCUVFHQkNRRUJ3QUdCQ1VFSkFRSEFBWUVCd1FsQkFjQUJ3UW1CQ1VFQndBSEJBZ0VKZ1FIQUFnRUp3UW1CQWNBQ0FRSkJDY0VCd0FuQkFvRUtBUUhBQ2NFQ1FRS0JBY0FLQVFMQkNrRUJ3QW9CQW9FQ3dRSEFDa0VEQVFxQkFjQUtRUUxCQXdFQndBcUJBMEVLd1FIQUNvRURBUU5CQWNBS3dRT0JDd0VCd0FyQkEwRURnUUhBQ3dFRHdRdEJBY0FMQVFPQkE4RUJ3QXRCUElERUFRSEFDMEVEd1R5QXdjQUxnUVFCQkVFQndBdUJDOEVFQVFIQURBRUVRUVNCQWNBTUFRdUJCRUVCd0F4QkJJRUV3UUhBREVFTUFRU0JBY0FNZ1FUQkJRRUJ3QXlCREVFRXdRSEFETUVGQVFWQkFjQU13UXlCQlFFQndBMEJCVUVGZ1FIQURRRU13UVZCQWNBTlFRV0JCY0VCd0ExQkRRRUZnUUhBRFlFRndRWUJBY0FOZ1ExQkJjRUJ3QVpCRFlFR0FRSEFCa0VOd1EyQkFjQUdnUTNCQmtFQndBYUJEZ0VOd1FIQUJzRU9BUWFCQWNBR3dRNUJEZ0VCd0FjQkRrRUd3UUhBQndFT2dRNUJBY0FIUVE2QkJ3RUJ3QWRCRHNFT2dRSEFCNEVPd1FkQkFjQUhnUThCRHNFQndBZkJEd0VIZ1FIQUI4RVBRUThCQWNBSUFROUJCOEVCd0FnQkQ0RVBRUUhBQ0FFUHdRK0JBY0FJQVFoQkQ4RUJ3QWhCRUFFUHdRSEFDRUVJZ1JBQkFjQUlnUkJCRUFFQndBaUJDTUVRUVFIQUNNRVFnUkJCQWNBSXdRa0JFSUVCd0FrQkVNRVFnUUhBQ1FFSlFSREJBY0FKUVJFQkVNRUJ3QWxCQ1lFUkFRSEFDWUVSUVJFQkFjQUpnUW5CRVVFQndCRkJDZ0VSZ1FIQUVVRUp3UW9CQWNBUmdRcEJFY0VCd0JHQkNnRUtRUUhBRWNFS2dSSUJBY0FSd1FwQkNvRUJ3QklCQ3NFU1FRSEFFZ0VLZ1FyQkFjQVNRUXNCRW9FQndCSkJDc0VMQVFIQUVvRUxRUkxCQWNBU2dRc0JDMEVCd0JMQkJBRUx3UUhBRXNFTFFRUUJBY0FUQVI0QTNZREJ3Qk1CRTBFZUFNSEFFMEVlZ040QXdjQVRRUk9CSG9EQndCT0JId0RlZ01IQUU0RVR3UjhBd2NBVHdSL0Ezd0RCd0JQQkZBRWZ3TUhBRkFFZ1FOL0F3Y0FVQVJSQklFREJ3QlJCSU1EZ1FNSEFGRUVVZ1NEQXdjQVVnU0ZBNE1EQndCU0JGTUVoUU1IQUZNRWh3T0ZBd2NBVXdSVUJJY0RCd0JVQklrRGh3TUhBRlFFVlFTSkF3Y0FWUVNMQTRrREJ3QlZCRllFaXdNSEFGWUVqQU9MQXdjQVZnUlhCSXdEQndCWEJJNERqQU1IQUZjRVdBU09Bd2NBV0FTUUE0NERCd0JZQkZrRWtBTUhBRmtFa2dPUUF3Y0FXUVJhQkpJREJ3QmFCSlFEa2dNSEFGb0VXd1NVQXdjQVd3U1dBNVFEQndCYkJGd0VsZ01IQUZ3RVhRT1dBd2NBWEFSZEJGMERCd0JkQkY0RFhRTUhBRjBFWGdSZUF3Y0FYZ1JoQTE0REJ3QmVCRjhFWVFNSEFGOEVZd05oQXdjQVh3UmdCR01EQndCZ0JHVURZd01IQUdBRVlRUmxBd2NBWVFSbkEyVURCd0JoQkdJRVp3TUhBR0lFYVFObkF3Y0FZZ1JqQkdrREJ3QmpCR3NEYVFNSEFHTUVaQVJyQXdjQVpBUnRBMnNEQndCa0JHVUViUU1IQUdVRWJnTnRBd2NBWlFSbUJHNERCd0JtQkhBRGJnTUhBR1lFWndSd0F3Y0Fad1J5QTNBREJ3Qm5CR2dFY2dNSEFHZ0VkQU55QXdjQWFBUnBCSFFEQndCcEJIWURkQU1IQUdrRVRBUjJBd2NBYWdTM0FxNENCd0JxQkdzRXR3SUhBRTRFYXdScUJBY0FUZ1JOQkdzRUJ3QnJCTFVDdHdJSEFHc0ViQVMxQWdjQVRRUnNCR3NFQndCTkJFd0ViQVFIQUd3RXVnSzFBZ2NBYkFSdEJMb0NCd0JNQkcwRWJBUUhBRXdFYVFSdEJBY0FiUVREQXJvQ0J3QnRCRzRFd3dJSEFHa0ViZ1J0QkFjQWFRUm9CRzRFQndCdUJNRUN3d0lIQUc0RWJ3VEJBZ2NBYUFSdkJHNEVCd0JvQkdjRWJ3UUhBRzhFeGdMQkFnY0Fid1J3Qk1ZQ0J3Qm5CSEFFYndRSEFHY0VaZ1J3QkFjQWNBVElBc1lDQndCd0JIRUV5QUlIQUdZRWNRUndCQWNBWmdSbEJIRUVCd0J4Qk1zQ3lBSUhBSEVFY2dUTEFnY0FaUVJ5QkhFRUJ3QmxCR1FFY2dRSEFISUUwUUxMQWdjQWNnUnpCTkVDQndCa0JITUVjZ1FIQUdRRVl3UnpCQWNBY3dUVUF0RUNCd0J6QkhRRTFBSUhBR01FZEFSekJBY0FZd1JpQkhRRUJ3QjBCTmNDMUFJSEFIUUVkUVRYQWdjQVlnUjFCSFFFQndCaUJHRUVkUVFIQUhVRTNRTFhBZ2NBZFFSMkJOMENCd0JoQkhZRWRRUUhBR0VFWUFSMkJBY0FkZ1RnQXQwQ0J3QjJCSGNFNEFJSEFHQUVkd1IyQkFjQVlBUmZCSGNFQndCM0JHd0M0QUlIQUhjRWVBUnNBZ2NBWHdSNEJIY0VCd0JmQkY0RWVBUUhBSGdFYndKc0FnY0FlQVI1Qkc4Q0J3QmVCSGtFZUFRSEFGNEVYUVI1QkFjQWVRUjBBbThDQndCNUJIb0VkQUlIQUYwRWVnUjVCQWNBWFFSY0JIb0VCd0I2QkhjQ2RBSUhBSG9FZXdSM0FnY0FYQVI3QkhvRUJ3QmNCRnNFZXdRSEFIc0VmUUozQWdjQWV3UjhCSDBDQndCYkJId0Vld1FIQUZzRVdnUjhCQWNBZkFTQUFuMENCd0I4QkgwRWdBSUhBRm9FZlFSOEJBY0FXZ1JaQkgwRUJ3QjlCSU1DZ0FJSEFIMEVmZ1NEQWdjQVdRUitCSDBFQndCWkJGZ0VmZ1FIQUg0RWlRS0RBZ2NBZmdSL0JJa0NCd0JZQkg4RWZnUUhBRmdFVndSL0JBY0Fmd1NUQW9rQ0J3Qi9CSUFFa3dJSEFGY0VnQVIvQkFjQVZ3UldCSUFFQndDQUJKRUNrd0lIQUlBRWdRU1JBZ2NBVmdTQkJJQUVCd0JXQkZVRWdRUUhBSUVFbGdLUkFnY0FnUVNDQkpZQ0J3QlZCSUlFZ1FRSEFGVUVWQVNDQkFjQWdnU2ZBcFlDQndDQ0JJTUVud0lIQUZRRWd3U0NCQWNBVkFSVEJJTUVCd0NEQkowQ253SUhBSU1FaEFTZEFnY0FVd1NFQklNRUJ3QlRCRklFaEFRSEFJUUVvZ0tkQWdjQWhBU0ZCS0lDQndCU0JJVUVoQVFIQUZJRVVRU0ZCQWNBaFFTckFxSUNCd0NGQklZRXF3SUhBRkVFaGdTRkJBY0FVUVJRQklZRUJ3Q0dCS2tDcXdJSEFJWUVod1NwQWdjQVVBU0hCSVlFQndCUUJFOEVod1FIQUljRXJnS3BBZ2NBaHdScUJLNENCd0JQQkdvRWh3UUhBRThFVGdScUJBY0Fjd0tJQkhrQ0J3QnpBb2tFaUFRSEFJZ0Vid0owQWdjQWlBU0pCRzhDQndCL0Fvb0VoUUlIQUg4Q2l3U0tCQWNBaWdSOUFvQUNCd0NLQklzRWZRSUhBSXdFandLTEFnY0FqQVNOQkk4Q0J3Q05CSWtDa3dJSEFJMEVqQVNKQWdjQWpnU2JBcFFDQndDT0JJOEVtd0lIQUk4RWxnS2ZBZ2NBandTT0JKWUNCd0NRQktjQ29BSUhBSkFFa1FTbkFnY0FrUVNpQXFzQ0J3Q1JCSkFFb2dJSEFKSUVzd0tzQWdjQWtnU1RCTE1DQndDVEJLNEN0d0lIQUpNRWtnU3VBZ2NBbEFTL0FyZ0NCd0NVQkpVRXZ3SUhBSlVFdWdMREFnY0FsUVNVQkxvQ0J3REVBcFlFelFJSEFNUUNsd1NXQkFjQWxnVEdBc2dDQndDV0JKY0V4Z0lIQU5NQ21BVFpBZ2NBMHdLWkJKZ0VCd0NZQk5FQzFBSUhBSmdFbVFUUkFnY0Ezd0thQk9JQ0J3RGZBcHNFbWdRSEFKb0UzUUxnQWdjQW1nU2JCTjBDQndCdEFva0VuQVFIQUcwQ2J3S0pCQWNBbkFSekFuQUNCd0NjQklrRWN3SUhBSjBFZEFKMkFnY0FuUVNJQkhRQ0J3QjZBb2dFblFRSEFIb0NlUUtJQkFjQWZBS0xCSjRFQndCOEFuMENpd1FIQUo0RWZ3SitBZ2NBbmdTTEJIOENCd0NmQklBQ2dnSUhBSjhFaWdTQUFnY0FoZ0tLQko4RUJ3Q0dBb1VDaWdRSEFJZ0NqQVNnQkFjQWlBS0pBb3dFQndDZ0JJc0NpZ0lIQUtBRWpBU0xBZ2NBb1FTVEFwQUNCd0NoQkkwRWt3SUhBSTBDalFTaEJBY0FqUUtQQW8wRUJ3Q1hBbzRFb2dRSEFKY0NsZ0tPQkFjQW9nU1VBcFVDQndDaUJJNEVsQUlIQUtNRW53S2NBZ2NBb3dTUEJKOENCd0NaQW84RW93UUhBSmtDbXdLUEJBY0Fvd0tRQktRRUJ3Q2pBcUlDa0FRSEFLUUVvQUtoQWdjQXBBU1FCS0FDQndDbEJLc0NxQUlIQUtVRWtRU3JBZ2NBcFFLUkJLVUVCd0NsQXFjQ2tRUUhBSzhDa2dTbUJBY0Fyd0t1QXBJRUJ3Q21CS3dDclFJSEFLWUVrZ1NzQWdjQXB3UzNBclFDQndDbkJKTUV0d0lIQUxFQ2t3U25CQWNBc1FLekFwTUVCd0M3QXBRRXFBUUhBTHNDdWdLVUJBY0FxQVM0QXJrQ0J3Q29CSlFFdUFJSEFLa0V3d0xBQWdjQXFRU1ZCTU1DQndDOUFwVUVxUVFIQUwwQ3Z3S1ZCQWNBeHdLWEJLb0VCd0RIQXNZQ2x3UUhBS29FeEFMRkFnY0FxZ1NYQk1RQ0J3Q3JCTWdDeWdJSEFLc0VsZ1RJQWdjQXpnS1dCS3NFQndET0FzMENsZ1FIQU5BQ21RU3NCQWNBMEFMUkFwa0VCd0NzQk5NQzBnSUhBS3dFbVFUVEFnY0FyUVRVQXRZQ0J3Q3RCSmdFMUFJSEFOb0NtQVN0QkFjQTJnTFpBcGdFQndEY0Fwc0VyZ1FIQU53QzNRS2JCQWNBcmdUZkF0NENCd0N1QkpzRTN3SUhBSzhFNEFMaEFnY0Fyd1NhQk9BQ0J3RGpBcG9FcndRSEFPTUM0Z0thQkFjQUlBS3FCQ0VDQndBZ0FzY0NxZ1FIQUI4Q3h3SWdBZ2NBSHdMQ0FzY0NCd0RDQWlJQ3dBSUhBTUlDSHdJaUFnY0F4UUloQXFvRUJ3REZBbEVDSVFJSEFNQUNJd0twQkFjQXdBSWlBaU1DQndDcEJGSUN2UUlIQUtrRUl3SlNBZ2NBdmdKUkFzVUNCd0MrQWxBQ1VRSUhBRkFDdlFKU0FnY0FVQUsrQXIwQ0J3REpBaDBDeWdJSEFNa0NIZ0lkQWdjQTBBSWVBc2tDQndEUUFrMENIZ0lIQUt3RVRRTFFBZ2NBckFSTUFrMENCd0NzQkdzQ1RBSUhBS3dFMGdKckFnY0F5Z0ljQXFzRUJ3REtBaDBDSEFJSEFFNENxd1FjQWdjQVRnTE9BcXNFQndET0FrOEN6QUlIQU00Q1RnSlBBZ2NBekFKckF0SUNCd0RNQWs4Q2F3SUhBR2tDMmdKcUFnY0FhUUxZQXRvQ0J3QnBBdDRDMkFJSEFHa0NhQUxlQWdjQWFnS3RCRW9DQndCcUF0b0NyUVFIQUVvQzFnSkxBZ2NBU2dLdEJOWUNCd0JMQXRVQ1NRSUhBRXNDMWdMVkFnY0FTUUxjQWtnQ0J3QkpBdFVDM0FJSEFFZ0NyZ1JIQWdjQVNBTGNBcTRFQndCSEF0NENhQUlIQUVjQ3JnVGVBZ2NBUkFKdEFrSUNCd0JFQW00Q2JRSUhBRVlDYmdKRUFnY0FSZ0xoQW00Q0J3QkZBdUVDUmdJSEFFVUNyd1RoQWdjQVp3S3ZCRVVDQndCbkF1TUNyd1FIQUVJQ25BUkRBZ2NBUWdKdEFwd0VCd0JEQW5BQ1pRSUhBRU1DbkFSd0FnY0FjZ0psQW5BQ0J3QnlBbVlDWlFJSEFPTUNaZ0p5QWdjQTR3Sm5BbVlDQndCNkFtTUNlQUlIQUhvQ1pBSmpBZ2NBZUFKaUFuNENCd0I0QW1NQ1lnSUhBSDRDUGdLZUJBY0FmZ0ppQWo0Q0J3Q2VCRDBDZkFJSEFKNEVQZ0k5QWdjQVB3SjhBajBDQndBL0FuVUNmQUlIQUVBQ2RRSS9BZ2NBUUFKMkFuVUNCd0JCQW5ZQ1FBSUhBRUVDblFSMkFnY0FaQUtkQkVFQ0J3QmtBbm9DblFRSEFKOEVZUUtHQWdjQW53UThBbUVDQndBOEFvSUNPd0lIQUR3Q253U0NBZ2NBT3dLQkFqb0NCd0E3QW9JQ2dRSUhBRG9DaUFJNEFnY0FPZ0tCQW9nQ0J3QTRBcUFFT1FJSEFEZ0NpQUtnQkFjQU9RS0tBbDhDQndBNUFxQUVpZ0lIQUlRQ1h3S0tBZ2NBaEFKZ0FsOENCd0JnQW9ZQ1lRSUhBR0FDaEFLR0FnY0FqUUpkQW80Q0J3Q05BbDRDWFFJSEFGd0NqZ0pkQWdjQVhBS1ZBbzRDQndBekFxSUVOQUlIQURNQ2x3S2lCQWNBTlFLWEFqTUNCd0ExQXBJQ2x3SUhBRFlDa2dJMUFnY0FOZ0tRQXBJQ0J3QTNBcEFDTmdJSEFEY0NvUVNRQWdjQW9RUmVBbzBDQndDaEJEY0NYZ0lIQURRQ2xRSmNBZ2NBTkFLaUJKVUNCd0NrQkM0Q293SUhBS1FFTHdJdUFnY0Fvd0l3QXA0Q0J3Q2pBaTRDTUFJSEFKNENNUUtjQWdjQW5nSXdBakVDQndDaEFpOENwQVFIQUtFQ1dRSXZBZ2NBbkFJeUFxTUVCd0NjQWpFQ01nSUhBS01FV3dLWkFnY0Fvd1F5QWxzQ0J3QmFBcGtDV3dJSEFGb0NtZ0taQWdjQVdRS2FBbG9DQndCWkFxRUNtZ0lIQUtnQ0xRS2xCQWNBcUFJc0FpMENCd0NsQkZnQ3BRSUhBS1VFTFFKWUFnY0FxZ0lzQXFnQ0J3Q3FBaWtDTEFJSEFLOENLUUtxQWdjQXJ3SXFBaWtDQndDbUJDb0Nyd0lIQUtZRUt3SXFBZ2NBclFJckFxWUVCd0N0QWxjQ0t3SUhBRllDcFFKWUFnY0FWZ0ttQXFVQ0J3QlhBcVlDVmdJSEFGY0NyUUttQWdjQXRnSW5BclFDQndDMkFpUUNKd0lIQUxzQ0pBSzJBZ2NBdXdJbEFpUUNCd0MwQWlnQ3B3UUhBTFFDSndJb0FnY0Fwd1JWQXJFQ0J3Q25CQ2dDVlFJSEFLZ0VKUUs3QWdjQXFBUW1BaVVDQndDNUFpWUNxQVFIQUxrQ1ZBSW1BZ2NBVXdLeEFsVUNCd0JUQXJJQ3NRSUhBRlFDc2dKVEFnY0FWQUs1QXJJQ0J3Q3dCTEVFc2dRSEFMQUVzd1N4QkFjQXRBUzFCTFlFQndDMEJMY0V0UVFIQUxnRXVRUzZCQWNBdUFTN0JMa0VCd0M4QkwwRXZnUUhBTHdFdndTOUJBY0F3QVRCQk1JRUJ3REFCTU1Fd1FRSEFNUUV4UVRHQkFjQXhBVEhCTVVFQndESUJNVUV5UVFIQU1nRXhnVEZCQWNBeWdUSkJNc0VCd0RLQk1nRXlRUUhBTXdFeWdUTEJBY0F6QVROQk1vRUJ3RE9CTTBFekFRSEFNNEV6d1ROQkFjQXpnVEVCTThFQndET0JNY0V4QVFIQU5BRTBRVFNCQWNBMEFUVEJORUVCd0RVQk5JRTFRUUhBTlFFMEFUU0JBY0ExZ1RVQk5VRUJ3RFdCTmNFMUFRSEFOZ0Uxd1RXQkFjQTJBVFpCTmNFQndEWUJOb0UyUVFIQU5nRTJ3VGFCQWNBMmdUUkJOTUVCd0RhQk5zRTBRUUhBTndFM1FUZUJBY0EzQVRmQk4wRUJ3RGdCTndFM2dRSEFPQUU0UVRjQkFjQTRnVGhCT0FFQndEaUJPTUU0UVFIQU9JRTVBVGpCQWNBNGdUbEJPUUVCd0RrQk9ZRTV3UUhBT1FFNVFUbUJBY0Ezd1RtQk4wRUJ3RGZCT2NFNWdRSEFPZ0U2UVRxQkFjQTZBVHJCT2tFQndEc0JPc0U2QVFIQU93RTdRVHJCQWNBN0FUdUJPMEVCd0RzQk84RTdnUUhBTzRFOEFUeEJBY0E3Z1R2QlBBRUJ3RHlCUEFFOHdRSEFQSUU4UVR3QkFjQTZRVHpCT29FQndEcEJQSUU4d1FIQVBRRTlRVDJCQWNBOUFUM0JQVUVCd0QwQlBnRTl3UUhBUFFFK1FUNEJBY0ErQVQ2QlBzRUJ3RDRCUGtFK2dRSEFQd0UrZ1Q5QkFjQS9BVDdCUG9FQndEK0JQMEUvd1FIQVA0RS9BVDlCQWNBOWdUK0JQOEVCd0QyQlBVRS9nUUhBQUFGeGdRQkJRY0FBQVhFQk1ZRUJ3QUJCY2dFQWdVSEFBRUZ4Z1RJQkFjQUFnWEtCQU1GQndBQ0JjZ0V5Z1FIQU1vRUJBVURCUWNBeWdUTkJBUUZCd0ROQkFVRkJBVUhBTTBFendRRkJRY0F6d1FBQlFVRkJ3RFBCTVFFQUFVSEFBWUYwQVFIQlFjQUJnWFRCTkFFQndBSEJkUUVDQVVIQUFjRjBBVFVCQWNBMUFRSkJRZ0ZCd0RVQk5jRUNRVUhBTmNFQ2dVSkJRY0Exd1RaQkFvRkJ3RFpCQXNGQ2dVSEFOa0UyZ1FMQlFjQUN3WFRCQVlGQndBTEJkb0Uwd1FIQUF3RjNBUU5CUWNBREFYZkJOd0VCd0RjQkE0RkRRVUhBTndFNFFRT0JRY0E0UVFQQlE0RkJ3RGhCT01FRHdVSEFPTUVFQVVQQlFjQTR3VGtCQkFGQndBUUJlY0VFUVVIQUJBRjVBVG5CQWNBRVFYZkJBd0ZCd0FSQmVjRTN3UUhBT2tFRWdVVEJRY0E2UVRyQkJJRkJ3RHJCQlFGRWdVSEFPc0U3UVFVQlFjQTdRUVZCUlFGQndEdEJPNEVGUVVIQUJVRjhRUVdCUWNBRlFYdUJQRUVCd0FXQmZJRUZ3VUhBQllGOFFUeUJBY0FGd1hwQkJNRkJ3QVhCZklFNlFRSEFQVUVHQVVaQlFjQTlRVDNCQmdGQndEM0JCb0ZHQVVIQVBjRStBUWFCUWNBR2dYN0JCc0ZCd0FhQmZnRSt3UUhBQnNGL0FRY0JRY0FHd1g3QlB3RUJ3QWNCZjRFSFFVSEFCd0YvQVQrQkFjQS9nUVpCUjBGQndEK0JQVUVHUVVIQUI0RkFRVWZCUWNBSGdVQUJRRUZCd0FmQlFJRklBVUhBQjhGQVFVQ0JRY0FJQVVEQlNFRkJ3QWdCUUlGQXdVSEFBTUZJZ1VoQlFjQUF3VUVCU0lGQndBRUJTTUZJZ1VIQUFRRkJRVWpCUWNBQlFVZUJTTUZCd0FGQlFBRkhnVUhBQ1FGQndVbEJRY0FKQVVHQlFjRkJ3QWxCUWdGSmdVSEFDVUZCd1VJQlFjQUNBVW5CU1lGQndBSUJRa0ZKd1VIQUFrRktBVW5CUWNBQ1FVS0JTZ0ZCd0FLQlNrRktBVUhBQW9GQ3dVcEJRY0FLUVVHQlNRRkJ3QXBCUXNGQmdVSEFDb0ZEUVVyQlFjQUtnVU1CUTBGQndBTkJTd0ZLd1VIQUEwRkRnVXNCUWNBRGdVdEJTd0ZCd0FPQlE4RkxRVUhBQThGTGdVdEJRY0FEd1VRQlM0RkJ3QXVCUkVGTHdVSEFDNEZFQVVSQlFjQUx3VU1CU29GQndBdkJSRUZEQVVIQUJNRk1BVXhCUWNBRXdVU0JUQUZCd0FTQlRJRk1BVUhBQklGRkFVeUJRY0FGQVV6QlRJRkJ3QVVCUlVGTXdVSEFETUZGZ1UwQlFjQU13VVZCUllGQndBMEJSY0ZOUVVIQURRRkZnVVhCUWNBTlFVVEJURUZCd0ExQlJjRkV3VUhBQmtGTmdVM0JRY0FHUVVZQlRZRkJ3QVlCVGdGTmdVSEFCZ0ZHZ1U0QlFjQU9BVWJCVGtGQndBNEJSb0ZHd1VIQURrRkhBVTZCUWNBT1FVYkJSd0ZCd0E2QlIwRk93VUhBRG9GSEFVZEJRY0FIUVUzQlRzRkJ3QWRCUmtGTndVSEFMQUVId1d6QkFjQXNBUWVCUjhGQndDeEJCOEZJQVVIQUxFRXN3UWZCUWNBUEFVZ0JTRUZCd0E4QmJFRUlBVUhBQ0lGUEFVaEJRY0FJZ1U5QlR3RkJ3QWpCVDBGSWdVSEFDTUZzZ1E5QlFjQUl3V3dCTElFQndBakJSNEZzQVFIQUxVRUpBVWxCUWNBdFFTM0JDUUZCd0ErQlNVRkpnVUhBRDRGdFFRbEJRY0FKd1UrQlNZRkJ3QW5CVDhGUGdVSEFDZ0ZQd1VuQlFjQUtBVzJCRDhGQndBb0JiUUV0Z1FIQUNnRktRVzBCQWNBdEFRa0JiY0VCd0MwQkNrRkpBVUhBRUFGS2dVckJRY0FRQVc1QkNvRkJ3QXNCVUFGS3dVSEFDd0ZRUVZBQlFjQUxRVkJCU3dGQndBdEJib0VRUVVIQUMwRnVBUzZCQWNBTFFVdUJiZ0VCd0M0QkM4RnV3UUhBTGdFTGdVdkJRY0F1UVF2QlNvRkJ3QzVCTHNFTHdVSEFEQUZRZ1V4QlFjQU1BVkRCVUlGQndBeUJVTUZNQVVIQURJRnZnUkRCUWNBTWdXOEJMNEVCd0F5QlRNRnZBUUhBTHdFTkFXL0JBY0F2QVF6QlRRRkJ3QzlCRFFGTlFVSEFMMEV2d1EwQlFjQVFnVTFCVEVGQndCQ0JiMEVOUVVIQURZRndBUTNCUWNBTmdYREJNQUVCd0EyQmNFRXd3UUhBRFlGT0FYQkJBY0F3UVE1QlVRRkJ3REJCRGdGT1FVSEFFVUZPUVU2QlFjQVJRVkVCVGtGQndEQ0JEb0ZPd1VIQU1JRVJRVTZCUWNBTndYQ0JEc0ZCd0EzQmNBRXdnUUhBRHdGc2dTeEJBY0FQQVU5QmJJRUJ3QStCYllFdFFRSEFENEZQd1cyQkFjQVFBVzZCTGtFQndCQUJVRUZ1Z1FIQUVRRndnVEJCQWNBUkFWRkJjSUVCd0JDQmI0RXZRUUhBRUlGUXdXK0JBY0FaQVBxQlBNRUJ3QmtBMllENmdRSEFQTUVZZ05rQXdjQTh3VHdCR0lEQndEc0JKMER0Z01IQU93RTZBU2RBd2NBNkFSbUE1MERCd0RvQk9vRVpnTUhBUEFFbXdOaUF3Y0E4QVR2QkpzREJ3RHNCSnNEN3dRSEFPd0V0Z09iQXdjQTBRUGVCTEFEQndEUkErQUUzZ1FIQU40RWx3T3dBd2NBM2dUZEJKY0RCd0RkQkpVRGx3TUhBTjBFNWdTVkF3Y0E1Z1NUQTVVREJ3RG1CT1VFa3dNSEFPVUVyd09UQXdjQTVRVGlCSzhEQndEZ0JLOEQ0Z1FIQU9BRTBRT3ZBd2NBeXdQV0JOVUVCd0RMQTZvRDFnUUhBTlVFcXdQTEF3Y0ExUVRTQktzREJ3RFNCSW9EcXdNSEFOSUUwUVNLQXdjQTBRU0lBNG9EQndEUkJOc0VpQU1IQU5zRWhnT0lBd2NBMndUWUJJWURCd0RZQktvRGhnTUhBTmdFMWdTcUF3Y0F6QVNsQTNzREJ3RE1CTXNFcFFNSEFNc0V3d09sQXdjQXl3VEpCTU1EQndESkJLY0R3d01IQU1rRXhRU25Bd2NBZXdQT0JNd0VCd0I3QTMwRHpnUUhBSDBEeHdUT0JBY0FmUU4rQThjRUJ3QitBOFVFeHdRSEFINERwd1BGQkFjQS93UnZBM0VEQndEL0JQMEVid01IQVAwRW9BTnZBd2NBL1FUNkJLQURCd0Q1QktBRCtnUUhBUGtFdkFPZ0F3Y0ErUVNoQTd3REJ3RDVCUFFFb1FNSEFQUUVjd09oQXdjQTlBVDJCSE1EQndEMkJIRURjd01IQVBZRS93UnhBd2NBUmdWSEJVZ0ZCd0JHQlVrRlJ3VUhBRW9GU0FWTEJRY0FTZ1ZHQlVnRkJ3Qk1CVXNGVFFVSEFFd0ZTZ1ZMQlFjQVRnVk5CVThGQndCT0JVd0ZUUVVIQUZBRlR3VlJCUWNBVUFWT0JVOEZCd0JTQlZFRlV3VUhBRklGVUFWUkJRY0FWQVZUQlZVRkJ3QlVCVklGVXdVSEFGWUZWUVZYQlFjQVZnVlVCVlVGQndCWUJWWUZWd1VIQUZnRldRVldCUWNBV2dWWkJWZ0ZCd0JhQlZzRldRVUhBRndGV3dWYUJRY0FYQVZkQlZzRkJ3QmVCVjBGWEFVSEFGNEZYd1ZkQlFjQVlBVmZCVjRGQndCZ0JXRUZYd1VIQUdJRllRVmdCUWNBWWdWakJXRUZCd0JrQldNRllnVUhBR1FGWlFWakJRY0FaZ1ZsQldRRkJ3Qm1CV2NGWlFVSEFHWUZhQVZuQlFjQVpnVnBCV2dGQndCcEJXb0ZhQVVIQUdrRmF3VnFCUWNBYXdWc0JXb0ZCd0JyQlcwRmJBVUhBRzBGYmdWc0JRY0FiUVZ2Qlc0RkJ3QnZCWEFGYmdVSEFHOEZjUVZ3QlFjQWNRVnlCWEFGQndCeEJYTUZjZ1VIQUhNRmRBVnlCUWNBY3dWMUJYUUZCd0IwQlhZRmR3VUhBSFFGZFFWMkJRY0Fkd1Y0QlhrRkJ3QjNCWFlGZUFVSEFIa0ZlZ1Y3QlFjQWVRVjRCWG9GQndCN0JYd0ZmUVVIQUhzRmVnVjhCUWNBZlFWK0JYOEZCd0I5Qlh3RmZnVUhBSDhGZ0FXQkJRY0Fmd1YrQllBRkJ3Q0JCVWNGU1FVSEFJRUZnQVZIQlFjQWNnVjNCWUlGQndCeUJYUUZkd1VIQUhjRmV3V0NCUWNBZHdWNUJYc0ZCd0I3Qlg4RmdnVUhBSHNGZlFWL0JRY0Fmd1ZKQllJRkJ3Qi9CWUVGU1FVSEFFa0ZTZ1dDQlFjQVNRVkdCVW9GQndCS0JVNEZnZ1VIQUVvRlRBVk9CUWNBVGdWU0JZSUZCd0JPQlZBRlVnVUhBRklGVmdXQ0JRY0FVZ1ZVQlZZRkJ3QldCVnNGZ2dVSEFGWUZXUVZiQlFjQVd3VmZCWUlGQndCYkJWMEZYd1VIQUY4Rll3V0NCUWNBWHdWaEJXTUZCd0JqQldjRmdnVUhBR01GWlFWbkJRY0Fad1ZxQllJRkJ3Qm5CV2dGYWdVSEFHb0ZiZ1dDQlFjQWFnVnNCVzRGQndCdUJYSUZnZ1VIQUc0RmNBVnlCUWNBZ0FXREJVY0ZCd0NBQllRRmd3VUhBRWNGaFFWSUJRY0FSd1dEQllVRkJ3QitCWVFGZ0FVSEFINEZoZ1dFQlFjQWZBV0dCWDRGQndCOEJZY0ZoZ1VIQUhvRmh3VjhCUWNBZWdXSUJZY0ZCd0I0QllnRmVnVUhBSGdGaVFXSUJRY0FkZ1dKQlhnRkJ3QjJCWW9GaVFVSEFIVUZpZ1YyQlFjQWRRV0xCWW9GQndCWEJZd0ZXQVVIQUZjRmpRV01CUWNBV0FXT0JWb0ZCd0JZQll3RmpnVUhBRlVGalFWWEJRY0FWUVdQQlkwRkJ3QlRCWThGVlFVSEFGTUZrQVdQQlFjQVVRV1FCVk1GQndCUkJaRUZrQVVIQUU4RmtRVlJCUWNBVHdXU0JaRUZCd0JOQlpJRlR3VUhBRTBGa3dXU0JRY0FTd1dUQlUwRkJ3QkxCWlFGa3dVSEFFZ0ZsQVZMQlFjQVNBV0ZCWlFGQndCekJZc0ZkUVVIQUhNRmxRV0xCUWNBY1FXVkJYTUZCd0J4QlpZRmxRVUhBRzhGbGdWeEJRY0Fid1dYQlpZRkJ3QnRCWmNGYndVSEFHMEZtQVdYQlFjQWF3V1lCVzBGQndCckJaa0ZtQVVIQUdrRm1RVnJCUWNBYVFXYUJaa0ZCd0JtQlpvRmFRVUhBR1lGbXdXYUJRY0FaQVdiQldZRkJ3QmtCWndGbXdVSEFHSUZuQVZrQlFjQVlnV2RCWndGQndCZ0JaMEZZZ1VIQUdBRm5nV2RCUWNBWGdXZUJXQUZCd0JlQlo4Rm5nVUhBRndGbndWZUJRY0FYQVdnQlo4RkJ3QmFCYUFGWEFVSEFGb0ZqZ1dnQlFjQWhBV2hCWU1GQndDRUJhSUZvUVVIQUlNRm93V0ZCUWNBZ3dXaEJhTUZCd0NHQmFJRmhBVUhBSVlGcEFXaUJRY0FoUVdsQlpRRkJ3Q0ZCYU1GcFFVSEFJY0ZwQVdHQlFjQWh3V21CYVFGQndDSUJhWUZod1VIQUlnRnB3V21CUWNBaVFXbkJZZ0ZCd0NKQmFnRnB3VUhBSW9GcUFXSkJRY0FpZ1dwQmFnRkJ3Q0xCYWtGaWdVSEFJc0ZxZ1dwQlFjQWxRV3FCWXNGQndDVkJhc0ZxZ1VIQUkwRnJBV01CUWNBalFXdEJhd0ZCd0NNQmE0RmpnVUhBSXdGckFXdUJRY0Fqd1d0QlkwRkJ3Q1BCYThGclFVSEFJNEZzQVdnQlFjQWpnV3VCYkFGQndDUUJhOEZqd1VIQUpBRnNRV3ZCUWNBa1FXeEJaQUZCd0NSQmJJRnNRVUhBSklGc2dXUkJRY0FrZ1d6QmJJRkJ3Q1RCYk1Ga2dVSEFKTUZ0QVd6QlFjQWxBVzBCWk1GQndDVUJhVUZ0QVVIQUpZRnF3V1ZCUWNBbGdXMUJhc0ZCd0NYQmJVRmxnVUhBSmNGdGdXMUJRY0FtQVcyQlpjRkJ3Q1lCYmNGdGdVSEFKa0Z0d1dZQlFjQW1RVzRCYmNGQndDYUJiZ0ZtUVVIQUpvRnVRVzRCUWNBbXdXNUJab0ZCd0NiQmJvRnVRVUhBSndGdWdXYkJRY0FuQVc3QmJvRkJ3Q2RCYnNGbkFVSEFKMEZ2QVc3QlFjQW5nVzhCWjBGQndDZUJiMEZ2QVVIQUo4RnZRV2VCUWNBbndXK0JiMEZCd0NnQmI0Rm53VUhBS0FGc0FXK0JRY0F2d1hBQmNFRkJ3Qy9CY0lGd0FVSEFNTUZ3QVhDQlFjQXd3WEVCY0FGQndERkJjUUZ3d1VIQU1VRnhnWEVCUWNBeHdYR0JjVUZCd0RIQmNnRnhnVUhBTWtGeUFYSEJRY0F5UVhLQmNnRkJ3RExCY29GeVFVSEFNc0Z6QVhLQlFjQXpRWE1CY3NGQndETkJjNEZ6QVVIQU04RnpRWFFCUWNBendYT0JjMEZCd0RSQmRBRjBnVUhBTkVGendYUUJRY0Ewd1hTQmRRRkJ3RFRCZEVGMGdVSEFOVUYxQVhXQlFjQTFRWFRCZFFGQndEWEJkWUYyQVVIQU5jRjFRWFdCUWNBMXdYWkJkb0ZCd0RYQmRnRjJRVUhBTm9GMndYY0JRY0EyZ1haQmRzRkJ3RGNCZDBGM2dVSEFOd0Yyd1hkQlFjQTNnWGZCZUFGQndEZUJkMEYzd1VIQU9BRjRRWGlCUWNBNEFYZkJlRUZCd0RpQmVNRjVBVUhBT0lGNFFYakJRY0E1QVhsQmVZRkJ3RGtCZU1GNVFVSEFPVUY1d1htQlFjQTVRWG9CZWNGQndEb0Jla0Y1d1VIQU9nRjZnWHBCUWNBNmdYckJla0ZCd0RxQmV3RjZ3VUhBT3dGN1FYckJRY0E3QVh1QmUwRkJ3RHVCY0VGN1FVSEFPNEZ2d1hCQlFjQXdRWHZCZkFGQndEQkJjQUY3d1VIQU1BRjhRWHZCUWNBd0FYRUJmRUZCd0RFQmZJRjhRVUhBTVFGeGdYeUJRY0F4Z1h6QmZJRkJ3REdCY2dGOHdVSEFNZ0Y5QVh6QlFjQXlBWEtCZlFGQndES0JmVUY5QVVIQU1vRnpBWDFCUWNBekFYMkJmVUZCd0RNQmM0RjlnVUhBUFlGendYM0JRY0E5Z1hPQmM4RkJ3RDNCZEVGK0FVSEFQY0Z6d1hSQlFjQStBWFRCZmtGQndENEJkRUYwd1VIQVBrRjFRWDZCUWNBK1FYVEJkVUZCd0Q2QmRjRit3VUhBUG9GMVFYWEJRY0Erd1hhQmZ3RkJ3RDdCZGNGMmdVSEFQd0YzQVg5QlFjQS9BWGFCZHdGQndEOUJkNEYvZ1VIQVAwRjNBWGVCUWNBL2dYZ0JmOEZCd0QrQmQ0RjRBVUhBUDhGNGdVQUJnY0Evd1hnQmVJRkJ3QUFCdVFGQVFZSEFBQUc0Z1hrQlFjQUFRYm1CUUlHQndBQkJ1UUY1Z1VIQU9ZRkF3WUNCZ2NBNWdYbkJRTUdCd0RuQlFRR0F3WUhBT2NGNlFVRUJnY0E2UVVGQmdRR0J3RHBCZXNGQlFZSEFPc0ZCZ1lGQmdjQTZ3WHRCUVlHQndEdEJmQUZCZ1lIQU8wRndRWHdCUWNBOEFVSEJnZ0dCd0R3QmU4RkJ3WUhBUEVGQndidkJRY0E4UVVKQmdjR0J3RHlCUWtHOFFVSEFQSUZDZ1lKQmdjQTh3VUtCdklGQndEekJRc0dDZ1lIQVBRRkN3YnpCUWNBOUFVTUJnc0dCd0QxQlF3RzlBVUhBUFVGRFFZTUJnY0E5Z1VOQnZVRkJ3RDJCUTRHRFFZSEFBOEc5Z1gzQlFjQUR3WU9CdllGQndBUUJ2Y0YrQVVIQUJBR0R3YjNCUWNBRVFiNEJma0ZCd0FSQmhBRytBVUhBQklHK1FYNkJRY0FFZ1lSQnZrRkJ3QVRCdm9GK3dVSEFCTUdFZ2I2QlFjQUV3YjhCUlFHQndBVEJ2c0YvQVVIQUJRRy9RVVZCZ2NBRkFiOEJmMEZCd0FWQnY0RkZnWUhBQlVHL1FYK0JRY0FGZ2IvQlJjR0J3QVdCdjRGL3dVSEFCY0dBQVlZQmdjQUZ3Yi9CUUFHQndBWUJnRUdHUVlIQUJnR0FBWUJCZ2NBR1FZQ0Job0dCd0FaQmdFR0FnWUhBQUlHR3dZYUJnY0FBZ1lEQmhzR0J3QURCaHdHR3dZSEFBTUdCQVljQmdjQUJBWWRCaHdHQndBRUJnVUdIUVlIQUFVR0hnWWRCZ2NBQlFZR0JoNEdCd0FHQmdnR0hnWUhBQVlHOEFVSUJnY0FCd1lmQmdnR0J3QUhCaUFHSHdZSEFBa0dJQVlIQmdjQUNRWWhCaUFHQndBS0JpRUdDUVlIQUFvR0lnWWhCZ2NBQ3dZaUJnb0dCd0FMQmlNR0lnWUhBQXdHSXdZTEJnY0FEQVlrQmlNR0J3QU5CaVFHREFZSEFBMEdKUVlrQmdjQURnWWxCZzBHQndBT0JpWUdKUVlIQUNjR0RnWVBCZ2NBSndZbUJnNEdCd0FvQmc4R0VBWUhBQ2dHSndZUEJnY0FLUVlRQmhFR0J3QXBCaWdHRUFZSEFDb0dFUVlTQmdjQUtnWXBCaEVHQndBckJoSUdFd1lIQUNzR0tnWVNCZ2NBTEFZVEJoUUdCd0FzQmlzR0V3WUhBQzBHRkFZVkJnY0FMUVlzQmhRR0J3QXVCaFVHRmdZSEFDNEdMUVlWQmdjQUx3WVdCaGNHQndBdkJpNEdGZ1lIQURBR0Z3WVlCZ2NBTUFZdkJoY0dCd0F4QmhnR0dRWUhBREVHTUFZWUJnY0FNZ1laQmhvR0J3QXlCakVHR1FZSEFCc0dNZ1lhQmdjQUd3WXpCaklHQndBY0JqTUdHd1lIQUJ3R05BWXpCZ2NBSFFZMEJod0dCd0FkQmpVR05BWUhBQjRHTlFZZEJnY0FIZ1kyQmpVR0J3QUlCallHSGdZSEFBZ0dId1kyQmdjQU53WTRCamtHQndBM0Jqb0dPQVlIQURvR093WTRCZ2NBT2dZOEJqc0dCd0E4QmowR093WUhBRHdHUGdZOUJnY0FQZ1kvQmowR0J3QStCa0FHUHdZSEFFQUdRUVkvQmdjQVFBWkNCa0VHQndCQ0JrTUdRUVlIQUVJR1JBWkRCZ2NBUkFaRkJrTUdCd0JFQmtZR1JRWUhBRVVHUndaSUJnY0FSUVpHQmtjR0J3QklCa2tHU2dZSEFFZ0dSd1pKQmdjQVNnWkxCa3dHQndCS0Jra0dTd1lIQUV3R1RRWk9CZ2NBVEFaTEJrMEdCd0JPQms4R1VBWUhBRTRHVFFaUEJnY0FVQVpSQmxJR0J3QlFCazhHVVFZSEFGSUdVd1pVQmdjQVVnWlJCbE1HQndCVUJsVUdWZ1lIQUZRR1V3WlZCZ2NBVmdaWEJsZ0dCd0JXQmxVR1Z3WUhBRmdHV1FaYUJnY0FXQVpYQmxrR0J3QmFCbHNHWEFZSEFGb0dXUVpiQmdjQVhBWmRCbDRHQndCY0Jsc0dYUVlIQUYwR1h3WmVCZ2NBWFFaZ0JsOEdCd0JnQm1FR1h3WUhBR0FHWWdaaEJnY0FZZ1pqQm1FR0J3QmlCbVFHWXdZSEFHUUdaUVpqQmdjQVpBWm1CbVVHQndCbUJqa0daUVlIQUdZR053WTVCZ2NBT0FabkJqa0dCd0E0Qm1nR1p3WUhBRGdHYVFab0JnY0FPQVk3Qm1rR0J3QTdCbW9HYVFZSEFEc0dQUVpxQmdjQVBRWnJCbW9HQndBOUJqOEdhd1lIQUQ4R2JBWnJCZ2NBUHdaQkJtd0dCd0JCQm0wR2JBWUhBRUVHUXdadEJnY0FRd1p1Qm0wR0J3QkRCa1VHYmdZSEFHNEdTQVp2QmdjQWJnWkZCa2dHQndCdkJrb0djQVlIQUc4R1NBWktCZ2NBY0FaTUJuRUdCd0J3QmtvR1RBWUhBSEVHVGdaeUJnY0FjUVpNQms0R0J3QnlCbEFHY3dZSEFISUdUZ1pRQmdjQWRBWlFCbElHQndCMEJuTUdVQVlIQUhVR1VnWlVCZ2NBZFFaMEJsSUdCd0IyQmxRR1ZnWUhBSFlHZFFaVUJnY0Fkd1pXQmxnR0J3QjNCbllHVmdZSEFIZ0dXQVphQmdjQWVBWjNCbGdHQndCNUJsb0dYQVlIQUhrR2VBWmFCZ2NBZWdaY0JsNEdCd0I2Qm5rR1hBWUhBRjhHZWdaZUJnY0FYd1o3Qm5vR0J3QmhCbnNHWHdZSEFHRUdmQVo3QmdjQVl3WjhCbUVHQndCakJuMEdmQVlIQUdVR2ZRWmpCZ2NBWlFaK0JuMEdCd0E1Qm40R1pRWUhBRGtHWndaK0JnY0Fad1ovQm9BR0J3Qm5CbWdHZndZSEFHZ0dnUVovQmdjQWFBWnBCb0VHQndCcEJvSUdnUVlIQUdrR2FnYUNCZ2NBYWdhREJvSUdCd0JxQm1zR2d3WUhBR3NHaEFhREJnY0Fhd1pzQm9RR0J3QnNCb1VHaEFZSEFHd0diUWFGQmdjQWJRYUdCb1VHQndCdEJtNEdoZ1lIQUlZR2J3YUhCZ2NBaGdadUJtOEdCd0NIQm5BR2lBWUhBSWNHYndad0JnY0FpQVp4Qm9rR0J3Q0lCbkFHY1FZSEFJa0djZ2FLQmdjQWlRWnhCbklHQndDS0JuTUdpd1lIQUlvR2NnWnpCZ2NBaXdaMEJvd0dCd0NMQm5NR2RBWUhBSXdHZFFhTkJnY0FqQVowQm5VR0J3Q05CbllHamdZSEFJMEdkUVoyQmdjQWpnWjNCbzhHQndDT0JuWUdkd1lIQUk4R2VBYVFCZ2NBandaM0JuZ0dCd0NRQm5rR2tRWUhBSkFHZUFaNUJnY0FrUVo2QnBJR0J3Q1JCbmtHZWdZSEFIb0drd2FTQmdjQWVnWjdCcE1HQndCN0JwUUdrd1lIQUhzR2ZBYVVCZ2NBZkFhVkJwUUdCd0I4Qm4wR2xRWUhBSDBHbGdhVkJnY0FmUVorQnBZR0J3QitCb0FHbGdZSEFINEdad2FBQmdjQWdBYVhCcGdHQndDQUJuOEdsd1lIQUlFR2x3Wi9CZ2NBZ1FhWkJwY0dCd0NDQnBrR2dRWUhBSUlHbWdhWkJnY0Fnd2FhQm9JR0J3Q0RCcHNHbWdZSEFJUUdtd2FEQmdjQWhBYWNCcHNHQndDRkJwd0doQVlIQUlVR25RYWNCZ2NBaGdhZEJvVUdCd0NHQnA0R25RWUhBSjhHaGdhSEJnY0Fud2FlQm9ZR0J3Q2dCb2NHaUFZSEFLQUdud2FIQmdjQW9RYUlCb2tHQndDaEJxQUdpQVlIQUtJR2lRYUtCZ2NBb2dhaEJva0dCd0NqQm9vR2l3WUhBS01Hb2dhS0JnY0Fvd2FNQnFRR0J3Q2pCb3NHakFZSEFLUUdqUWFsQmdjQXBBYU1CbzBHQndDbEJvNEdwZ1lIQUtVR2pRYU9CZ2NBcGdhUEJxY0dCd0NtQm80R2p3WUhBS2NHa0Fhb0JnY0Fwd2FQQnBBR0J3Q29CcEVHcVFZSEFLZ0drQWFSQmdjQXFRYVNCcW9HQndDcEJwRUdrZ1lIQUpJR3F3YXFCZ2NBa2dhVEJxc0dCd0NUQnF3R3F3WUhBSk1HbEFhc0JnY0FsQWF0QnF3R0J3Q1VCcFVHclFZSEFKVUdyZ2F0QmdjQWxRYVdCcTRHQndDV0JwZ0dyZ1lIQUpZR2dBYVlCZ2NBbUFhdkJyQUdCd0NZQnBjR3J3WUhBSmNHc1FhdkJnY0Fsd2FaQnJFR0J3Q1pCcklHc1FZSEFKa0dtZ2F5QmdjQW1nYXpCcklHQndDYUJwc0dzd1lIQUpzR3RBYXpCZ2NBbXdhY0JyUUdCd0NjQnJVR3RBWUhBSndHblFhMUJnY0FuUWEyQnJVR0J3Q2RCcDRHdGdZSEFMWUdud2EzQmdjQXRnYWVCcDhHQndDM0JxQUd1QVlIQUxjR253YWdCZ2NBdUFhaEJya0dCd0M0QnFBR29RWUhBTGtHb2dhNkJnY0F1UWFoQnFJR0J3QzZCcU1HdXdZSEFMb0dvZ2FqQmdjQXV3YWtCcndHQndDN0JxTUdwQVlIQUx3R3BRYTlCZ2NBdkFha0JxVUdCd0M5QnFZR3ZnWUhBTDBHcFFhbUJnY0F2Z2FuQnI4R0J3QytCcVlHcHdZSEFMOEdxQWJBQmdjQXZ3YW5CcWdHQndEQUJxa0d3UVlIQU1BR3FBYXBCZ2NBd1FhcUJzSUdCd0RCQnFrR3FnWUhBS29Hd3diQ0JnY0FxZ2FyQnNNR0J3Q3JCc1FHd3dZSEFLc0dyQWJFQmdjQXJBYkZCc1FHQndDc0JxMEd4UVlIQUswR3hnYkZCZ2NBclFhdUJzWUdCd0N1QnJBR3hnWUhBSzRHbUFhd0JnY0Fyd2JIQnJBR0J3Q3ZCc2dHeHdZSEFLOEd5UWJJQmdjQXJ3YXhCc2tHQndDeEJzb0d5UVlIQUxFR3NnYktCZ2NBc2diTEJzb0dCd0N5QnJNR3l3WUhBTE1HekFiTEJnY0Fzd2EwQnN3R0J3QzBCczBHekFZSEFMUUd0UWJOQmdjQXRRYk9CczBHQndDMUJyWUd6Z1lIQU00R3R3YlBCZ2NBemdhMkJyY0dCd0RQQnJnRzBBWUhBTThHdHdhNEJnY0EwQWE1QnRFR0J3RFFCcmdHdVFZSEFORUd1Z2JTQmdjQTBRYTVCcm9HQndEU0Jyc0cwd1lIQU5JR3VnYTdCZ2NBMUFhN0Jyd0dCd0RVQnRNR3V3WUhBTlVHdkFhOUJnY0ExUWJVQnJ3R0J3RFdCcjBHdmdZSEFOWUcxUWE5QmdjQTF3YStCcjhHQndEWEJ0WUd2Z1lIQU5nR3Z3YkFCZ2NBMkFiWEJyOEdCd0RaQnNBR3dRWUhBTmtHMkFiQUJnY0EyZ2JCQnNJR0J3RGFCdGtHd1FZSEFNTUcyZ2JDQmdjQXd3YmJCdG9HQndERUJ0c0d3d1lIQU1RRzNBYmJCZ2NBeFFiY0JzUUdCd0RGQnQwRzNBWUhBTVlHM1FiRkJnY0F4Z2JlQnQwR0J3Q3dCdDRHeGdZSEFMQUd4d2JlQmdjQTN3WXJCaXdHQndEZkJ1QUdLd1lIQU9BR0tnWXJCZ2NBNEFiaEJpb0dCd0RoQmlrR0tnWUhBT0VHNGdZcEJnY0E0Z1lvQmlrR0J3RGlCdU1HS0FZSEFPTUdKd1lvQmdjQTR3YmtCaWNHQndEa0JpWUdKd1lIQU9RRzVRWW1CZ2NBNVFZbEJpWUdCd0RsQnVZR0pRWUhBT1lHSkFZbEJnY0E1Z2JuQmlRR0J3RG5CaU1HSkFZSEFPY0c2QVlqQmdjQTZBWWlCaU1HQndEb0J1a0dJZ1lIQU9rR0lRWWlCZ2NBNlFicUJpRUdCd0RxQmlBR0lRWUhBT29HNndZZ0JnY0E2d1lmQmlBR0J3RHJCdXdHSHdZSEFPd0dOZ1lmQmdjQTdBYnRCallHQndEdEJqVUdOZ1lIQU8wRzdnWTFCZ2NBN2dZMEJqVUdCd0R1QnU4R05BWUhBTzhHTXdZMEJnY0E3d2J3QmpNR0J3RHdCaklHTXdZSEFQQUc4UVl5QmdjQThRWXhCaklHQndEeEJ2SUdNUVlIQVBJR01BWXhCZ2NBOGdiekJqQUdCd0R6Qmk4R01BWUhBUE1HOUFZdkJnY0E5QVl1Qmk4R0J3RDBCdlVHTGdZSEFQVUdMUVl1QmdjQTlRYjJCaTBHQndEMkJpd0dMUVlIQVBZRzN3WXNCZ2NBOXdaUkJrOEdCd0QzQnZnR1VRWUhBT0FHK0FiM0JnY0E0QWJmQnZnR0J3RDRCbE1HVVFZSEFQZ0crUVpUQmdjQTN3YjVCdmdHQndEZkJ2WUcrUVlIQVBrR1ZRWlRCZ2NBK1FiNkJsVUdCd0QyQnZvRytRWUhBUFlHOVFiNkJnY0ErZ1pYQmxVR0J3RDZCdnNHVndZSEFQVUcrd2I2QmdjQTlRYjBCdnNHQndEN0Jsa0dWd1lIQVBzRy9BWlpCZ2NBOUFiOEJ2c0dCd0QwQnZNRy9BWUhBUHdHV3daWkJnY0EvQWI5QmxzR0J3RHpCdjBHL0FZSEFQTUc4Z2I5QmdjQS9RWmRCbHNHQndEOUJ2NEdYUVlIQVBJRy9nYjlCZ2NBOGdieEJ2NEdCd0QrQm1BR1hRWUhBUDRHL3daZ0JnY0E4UWIvQnY0R0J3RHhCdkFHL3dZSEFQOEdZZ1pnQmdjQS93WUFCMklHQndEd0JnQUgvd1lIQVBBRzd3WUFCd2NBQUFka0JtSUdCd0FBQndFSFpBWUhBTzhHQVFjQUJ3Y0E3d2J1QmdFSEJ3QUJCMllHWkFZSEFBRUhBZ2RtQmdjQTdnWUNCd0VIQndEdUJ1MEdBZ2NIQUFJSE53Wm1CZ2NBQWdjREJ6Y0dCd0R0QmdNSEFnY0hBTzBHN0FZREJ3Y0FBd2M2QmpjR0J3QURCd1FIT2dZSEFPd0dCQWNEQndjQTdBYnJCZ1FIQndBRUJ6d0dPZ1lIQUFRSEJRYzhCZ2NBNndZRkJ3UUhCd0RyQnVvR0JRY0hBQVVIUGdZOEJnY0FCUWNHQno0R0J3RHFCZ1lIQlFjSEFPb0c2UVlHQndjQUJnZEFCajRHQndBR0J3Y0hRQVlIQU9rR0J3Y0dCd2NBNlFib0JnY0hCd0FIQjBJR1FBWUhBQWNIQ0FkQ0JnY0E2QVlJQndjSEJ3RG9CdWNHQ0FjSEFBZ0hSQVpDQmdjQUNBY0pCMFFHQndEbkJna0hDQWNIQU9jRzVnWUpCd2NBQ1FkR0JrUUdCd0FKQndvSFJnWUhBT1lHQ2djSkJ3Y0E1Z2JsQmdvSEJ3QUtCMGNHUmdZSEFBb0hDd2RIQmdjQTVRWUxCd29IQndEbEJ1UUdDd2NIQUFzSFNRWkhCZ2NBQ3djTUIwa0dCd0RrQmd3SEN3Y0hBT1FHNHdZTUJ3Y0FEQWRMQmtrR0J3QU1CdzBIU3dZSEFPTUdEUWNNQndjQTR3YmlCZzBIQndBTkIwMEdTd1lIQUEwSERnZE5CZ2NBNGdZT0J3MEhCd0RpQnVFR0RnY0hBQTRIVHdaTkJnY0FEZ2YzQms4R0J3RGhCdmNHRGdjSEFPRUc0QWIzQmdjQUR3Y1FCeEVIQndBUEJ4SUhFQWNIQUJNSEVnY1BCd2NBRXdjVUJ4SUhCd0FWQnhRSEV3Y0hBQlVIRmdjVUJ3Y0FGd2NXQnhVSEJ3QVhCeGdIRmdjSEFCa0hHQWNYQndjQUdRY2FCeGdIQndBYkJ4b0hHUWNIQUJzSEhBY2FCd2NBSFFjYkJ4NEhCd0FkQnh3SEd3Y0hBQjhISGdjZ0J3Y0FId2NkQng0SEJ3QWhCeUFISWdjSEFDRUhId2NnQndjQUl3Y2lCeVFIQndBakJ5RUhJZ2NIQUNVSEpBY21Cd2NBSlFjakJ5UUhCd0FuQnlZSEtBY0hBQ2NISlFjbUJ3Y0FLUWNvQnlvSEJ3QXBCeWNIS0FjSEFDc0hLZ2NzQndjQUt3Y3BCeW9IQndBdEJ5d0hMZ2NIQUMwSEt3Y3NCd2NBTHdjdUJ6QUhCd0F2QnkwSExnY0hBREVITUFjeUJ3Y0FNUWN2QnpBSEJ3QXpCeklITkFjSEFETUhNUWN5QndjQU5RY3pCelFIQndBMUJ6WUhNd2NIQURjSE5nYzFCd2NBTndjNEJ6WUhCd0E1QnpnSE53Y0hBRGtIT2djNEJ3Y0FPd2M2QnprSEJ3QTdCendIT2djSEFEMEhQQWM3QndjQVBRYytCendIQndBUkJ6NEhQUWNIQUJFSEVBYytCd2NBUGdjL0IwQUhCd0ErQnhBSFB3Y0hBQklIUHdjUUJ3Y0FFZ2RCQno4SEJ3QVVCMEVIRWdjSEFCUUhRZ2RCQndjQUZnZENCeFFIQndBV0IwTUhRZ2NIQUJnSFF3Y1dCd2NBR0FkRUIwTUhCd0FhQjBRSEdBY0hBQm9IUlFkRUJ3Y0FIQWRGQnhvSEJ3QWNCMFlIUlFjSEFFY0hIQWNkQndjQVJ3ZEdCeHdIQndCSUJ4MEhId2NIQUVnSFJ3Y2RCd2NBU1FjZkJ5RUhCd0JKQjBnSEh3Y0hBRW9ISVFjakJ3Y0FTZ2RKQnlFSEJ3QkxCeU1ISlFjSEFFc0hTZ2NqQndjQVN3Y25CMHdIQndCTEJ5VUhKd2NIQUV3SEtRZE5Cd2NBVEFjbkJ5a0hCd0JOQnlzSFRnY0hBRTBIS1FjckJ3Y0FUZ2N0QjA4SEJ3Qk9CeXNITFFjSEFFOEhMd2RRQndjQVR3Y3RCeThIQndCUUJ6RUhVUWNIQUZBSEx3Y3hCd2NBVVFjekIxSUhCd0JSQnpFSE13Y0hBRE1IVXdkU0J3Y0FNd2MyQjFNSEJ3QTJCMVFIVXdjSEFEWUhPQWRVQndjQU9BZFZCMVFIQndBNEJ6b0hWUWNIQURvSFZnZFZCd2NBT2djOEIxWUhCd0E4QjBBSFZnY0hBRHdIUGdkQUJ3Y0FRQWRYQjFnSEJ3QkFCejhIVndjSEFEOEhXUWRYQndjQVB3ZEJCMWtIQndCQkIxb0hXUWNIQUVFSFFnZGFCd2NBUWdkYkIxb0hCd0JDQjBNSFd3Y0hBRU1IWEFkYkJ3Y0FRd2RFQjF3SEJ3QkVCMTBIWEFjSEFFUUhSUWRkQndjQVJRZGVCMTBIQndCRkIwWUhYZ2NIQUY0SFJ3ZGZCd2NBWGdkR0IwY0hCd0JmQjBnSFlBY0hBRjhIUndkSUJ3Y0FZQWRKQjJFSEJ3QmdCMGdIU1FjSEFHRUhTZ2RpQndjQVlRZEpCMG9IQndCaUIwc0hZd2NIQUdJSFNnZExCd2NBWXdkTUIyUUhCd0JqQjBzSFRBY0hBR1FIVFFkbEJ3Y0FaQWRNQjAwSEJ3QmxCMDRIWmdjSEFHVUhUUWRPQndjQVpnZFBCMmNIQndCbUIwNEhUd2NIQUdjSFVBZG9Cd2NBWndkUEIxQUhCd0JvQjFFSGFRY0hBR2dIVUFkUkJ3Y0FhUWRTQjJvSEJ3QnBCMUVIVWdjSEFGSUhhd2RxQndjQVVnZFRCMnNIQndCVEIyd0hhd2NIQUZNSFZBZHNCd2NBVkFkdEIyd0hCd0JVQjFVSGJRY0hBRlVIYmdkdEJ3Y0FWUWRXQjI0SEJ3QldCMWdIYmdjSEFGWUhRQWRZQndjQVdBZHZCM0FIQndCWUIxY0hid2NIQUZrSGJ3ZFhCd2NBV1FkeEIyOEhCd0JhQjNFSFdRY0hBRm9IY2dkeEJ3Y0FXd2R5QjFvSEJ3QmJCM01IY2djSEFGd0hjd2RiQndjQVhBZDBCM01IQndCZEIzUUhYQWNIQUYwSGRRZDBCd2NBWGdkMUIxMEhCd0JlQjNZSGRRY0hBSGNIWGdkZkJ3Y0Fkd2QyQjE0SEJ3QjRCMThIWUFjSEFIZ0hkd2RmQndjQWVRZGdCMkVIQndCNUIzZ0hZQWNIQUhvSFlRZGlCd2NBZWdkNUIyRUhCd0I3QjJJSFl3Y0hBSHNIZWdkaUJ3Y0Fld2RrQjN3SEJ3QjdCMk1IWkFjSEFId0haUWQ5QndjQWZBZGtCMlVIQndCOUIyWUhmZ2NIQUgwSFpRZG1Cd2NBZmdkbkIzOEhCd0IrQjJZSFp3Y0hBSDhIYUFlQUJ3Y0Fmd2RuQjJnSEJ3Q0FCMmtIZ1FjSEFJQUhhQWRwQndjQWdRZHFCNElIQndDQkIya0hhZ2NIQUdvSGd3ZUNCd2NBYWdkckI0TUhCd0JyQjRRSGd3Y0hBR3NIYkFlRUJ3Y0FiQWVGQjRRSEJ3QnNCMjBIaFFjSEFHMEhoZ2VGQndjQWJRZHVCNFlIQndCdUIzQUhoZ2NIQUc0SFdBZHdCd2NBY0FlSEI0Z0hCd0J3QjI4SGh3Y0hBRzhIaVFlSEJ3Y0Fid2R4QjRrSEJ3QnhCNG9IaVFjSEFIRUhjZ2VLQndjQWNnZUxCNG9IQndCeUIzTUhpd2NIQUhNSGpBZUxCd2NBY3dkMEI0d0hCd0IwQjQwSGpBY0hBSFFIZFFlTkJ3Y0FkUWVPQjQwSEJ3QjFCM1lIamdjSEFJNEhkd2VQQndjQWpnZDJCM2NIQndDUEIzZ0hrQWNIQUk4SGR3ZDRCd2NBa0FkNUI1RUhCd0NRQjNnSGVRY0hBSkVIZWdlU0J3Y0FrUWQ1QjNvSEJ3Q1NCM3NIa3djSEFKSUhlZ2Q3QndjQWt3ZDhCNVFIQndDVEIzc0hmQWNIQUpRSGZRZVZCd2NBbEFkOEIzMEhCd0NWQjM0SGxnY0hBSlVIZlFkK0J3Y0FsZ2QvQjVjSEJ3Q1dCMzRIZndjSEFKY0hnQWVZQndjQWx3ZC9CNEFIQndDWUI0RUhtUWNIQUpnSGdBZUJCd2NBbVFlQ0I1b0hCd0NaQjRFSGdnY0hBSUlIbXdlYUJ3Y0FnZ2VEQjVzSEJ3Q0RCNXdIbXdjSEFJTUhoQWVjQndjQWhBZWRCNXdIQndDRUI0VUhuUWNIQUlVSG5nZWRCd2NBaFFlR0I1NEhCd0NHQjRnSG5nY0hBSVlIY0FlSUJ3Y0Fod2VmQjRnSEJ3Q0hCNkFIbndjSEFJY0hvUWVnQndjQWh3ZUpCNkVIQndDSkI2SUhvUWNIQUlrSGlnZWlCd2NBaWdlakI2SUhCd0NLQjRzSG93Y0hBSXNIcEFlakJ3Y0Fpd2VNQjZRSEJ3Q01CNlVIcEFjSEFJd0hqUWVsQndjQWpRZW1CNlVIQndDTkI0NEhwZ2NIQUtZSGp3ZW5Cd2NBcGdlT0I0OEhCd0NuQjVBSHFBY0hBS2NIandlUUJ3Y0FxQWVSQjZrSEJ3Q29CNUFIa1FjSEFLa0hrZ2VxQndjQXFRZVJCNUlIQndDcUI1TUhxd2NIQUtvSGtnZVRCd2NBckFlVEI1UUhCd0NzQjZzSGt3Y0hBSzBIbEFlVkJ3Y0FyUWVzQjVRSEJ3Q3VCNVVIbGdjSEFLNEhyUWVWQndjQXJ3ZVdCNWNIQndDdkI2NEhsZ2NIQUxBSGx3ZVlCd2NBc0FldkI1Y0hCd0N4QjVnSG1RY0hBTEVIc0FlWUJ3Y0FzZ2VaQjVvSEJ3Q3lCN0VIbVFjSEFKc0hzZ2VhQndjQW13ZXpCN0lIQndDY0I3TUhtd2NIQUp3SHRBZXpCd2NBblFlMEI1d0hCd0NkQjdVSHRBY0hBSjRIdFFlZEJ3Y0FuZ2UyQjdVSEJ3Q0lCN1lIbmdjSEFJZ0hud2UyQndjQW53ZkNCYjhGQndDZkI2QUh3Z1VIQUtBSHd3WENCUWNBb0FlaEI4TUZCd0NoQjhVRnd3VUhBS0VIb2dmRkJRY0FvZ2ZIQmNVRkJ3Q2lCNk1IeHdVSEFLTUh5UVhIQlFjQW93ZWtCOGtGQndDa0I4c0Z5UVVIQUtRSHBRZkxCUWNBcFFmTkJjc0ZCd0NsQjZZSHpRVUhBTTBGcHdmUUJRY0F6UVdtQjZjSEJ3RFFCYWdIMGdVSEFOQUZwd2VvQndjQTBnV3BCOVFGQndEU0JhZ0hxUWNIQU5RRnFnZldCUWNBMUFXcEI2b0hCd0RXQmFzSDJBVUhBTllGcWdlckJ3Y0EyQVdzQjlrRkJ3RFlCYXNIckFjSEFOa0ZyUWZiQlFjQTJRV3NCNjBIQndEYkJhNEgzUVVIQU5zRnJRZXVCd2NBM1FXdkI5OEZCd0RkQmE0SHJ3Y0hBTjhGc0FmaEJRY0Ezd1d2QjdBSEJ3RGhCYkVINHdVSEFPRUZzQWV4QndjQTR3V3lCK1VGQndEakJiRUhzZ2NIQUxJSDZBWGxCUWNBc2dlekIrZ0ZCd0N6QitvRjZBVUhBTE1IdEFmcUJRY0F0QWZzQmVvRkJ3QzBCN1VIN0FVSEFMVUg3Z1hzQlFjQXRRZTJCKzRGQndDMkI3OEY3Z1VIQUxZSG53ZS9CUWNBeHdhM0I3Z0hCd0RIQnNnR3R3Y0hBTWdHdVFlM0J3Y0F5QWJKQnJrSEJ3REpCcm9IdVFjSEFNa0d5Z2E2QndjQXlnYTdCN29IQndES0Jzc0d1d2NIQU1zR3ZBZTdCd2NBeXdiTUJyd0hCd0RNQnIwSHZBY0hBTXdHelFhOUJ3Y0F6UWErQjcwSEJ3RE5CczRHdmdjSEFMNEh6d2EvQndjQXZnZk9CczhHQndDL0I5QUd3QWNIQUw4SHp3YlFCZ2NBd0FmUkJzRUhCd0RBQjlBRzBRWUhBTUVIMGdiQ0J3Y0F3UWZSQnRJR0J3RENCOU1Hd3djSEFNSUgwZ2JUQmdjQXd3ZlVCc1FIQndEREI5TUcxQVlIQU1RSDFRYkZCd2NBeEFmVUJ0VUdCd0RGQjlZR3hnY0hBTVVIMVFiV0JnY0F4Z2ZYQnNjSEJ3REdCOVlHMXdZSEFNY0gyQWJJQndjQXh3ZlhCdGdHQndESUI5a0d5UWNIQU1nSDJBYlpCZ2NBeVFmYUJzb0hCd0RKQjlrRzJnWUhBTm9HeXdmS0J3Y0EyZ2JiQnNzSEJ3RGJCc3dIeXdjSEFOc0czQWJNQndjQTNBYk5COHdIQndEY0J0MEd6UWNIQU4wR3pnZk5Cd2NBM1FiZUJzNEhCd0RlQnJnSHpnY0hBTjRHeHdhNEJ3Y0F0d2ZQQjdnSEJ3QzNCOUFIendjSEFMY0gwUWZRQndjQXR3ZTVCOUVIQndDNUI5SUgwUWNIQUxrSHVnZlNCd2NBdWdmVEI5SUhCd0M2QjdzSDB3Y0hBTHNIMUFmVEJ3Y0F1d2U4QjlRSEJ3QzhCOVVIMUFjSEFMd0h2UWZWQndjQXZRZldCOVVIQndDOUI3NEgxZ2NIQU5ZSHZ3ZlhCd2NBMWdlK0I3OEhCd0RYQjhBSDJBY0hBTmNIdndmQUJ3Y0EyQWZCQjlrSEJ3RFlCOEFId1FjSEFOa0h3Z2ZhQndjQTJRZkJCOElIQndEYUI4TUgyd2NIQU5vSHdnZkRCd2NBM0FmREI4UUhCd0RjQjlzSHd3Y0hBTjBIeEFmRkJ3Y0EzUWZjQjhRSEJ3RGVCOFVIeGdjSEFONEgzUWZGQndjQTN3ZkdCOGNIQndEZkI5NEh4Z2NIQU9BSHh3ZklCd2NBNEFmZkI4Y0hCd0RoQjhnSHlRY0hBT0VINEFmSUJ3Y0E0Z2ZKQjhvSEJ3RGlCK0VIeVFjSEFNc0g0Z2ZLQndjQXl3ZmpCK0lIQndETUIrTUh5d2NIQU13SDVBZmpCd2NBelFma0I4d0hCd0ROQitVSDVBY0hBTTRINVFmTkJ3Y0F6Z2ZtQitVSEJ3QzRCK1lIemdjSEFMZ0h6d2ZtQndjQXp3Zm5CK2dIQndEUEI5QUg1d2NIQU5BSDZRZm5Cd2NBMEFmUkIra0hCd0RSQitvSDZRY0hBTkVIMGdmcUJ3Y0EwZ2ZyQitvSEJ3RFNCOU1INndjSEFOTUg3QWZyQndjQTB3ZlVCK3dIQndEVUIrMEg3QWNIQU5RSDFRZnRCd2NBMVFmdUIrMEhCd0RWQjlZSDdnY0hBTzRIMXdmdkJ3Y0E3Z2ZXQjljSEJ3RHZCOWdIOEFjSEFPOEgxd2ZZQndjQThBZlpCL0VIQndEd0I5Z0gyUWNIQVBFSDJnZnlCd2NBOFFmWkI5b0hCd0R5QjlzSDh3Y0hBUElIMmdmYkJ3Y0E4d2ZjQi9RSEJ3RHpCOXNIM0FjSEFQUUgzUWYxQndjQTlBZmNCOTBIQndEMUI5NEg5Z2NIQVBVSDNRZmVCd2NBOWdmZkIvY0hCd0QyQjk0SDN3Y0hBUGNINEFmNEJ3Y0E5d2ZmQitBSEJ3RDRCK0VIK1FjSEFQZ0g0QWZoQndjQStRZmlCL29IQndENUIrRUg0Z2NIQU9JSCt3ZjZCd2NBNGdmakIvc0hCd0RqQi93SCt3Y0hBT01INUFmOEJ3Y0E1QWY5Qi93SEJ3RGtCK1VIL1FjSEFPVUgvZ2Y5QndjQTVRZm1CLzRIQndEbUIrZ0gvZ2NIQU9ZSHp3Zm9Cd2NBL3djQUNBRUlCd0QvQndJSUFBZ0hBQUlJQXdnQUNBY0FBZ2dFQ0FNSUJ3QUZDQUVJQmdnSEFBVUkvd2NCQ0FjQUJ3Z0lDQWtJQndBSENBb0lDQWdIQUFvSUN3Z0lDQWNBQ2dnTUNBc0lCd0FOQ0FrSURnZ0hBQTBJQndnSkNBY0FEQWdQQ0FzSUJ3QU1DQkFJRHdnSEFCRUlEZ2dTQ0FjQUVRZ05DQTRJQndBUUNCTUlEd2dIQUJBSUZBZ1RDQWNBRlFnU0NCWUlCd0FWQ0JFSUVnZ0hBQlFJRndnVENBY0FGQWdZQ0JjSUJ3QVpDQllJR2dnSEFCa0lGUWdXQ0FjQUJBZ2FDQU1JQndBRUNCa0lHZ2dIQUJnSUJnZ1hDQWNBR0FnRkNBWUlCd0QvQnhzSUFnZ0hBUDhISEFnYkNBY0FHd2dFQ0FJSUJ3QWJDQjBJQkFnSEFBVUlIQWovQndjQUJRZ2VDQndJQndBZkNBb0lCd2dIQUI4SUlBZ0tDQWNBQ2dnaENBd0lCd0FLQ0NBSUlRZ0hBQ0lJQndnTkNBY0FJZ2dmQ0FjSUJ3QU1DQ01JRUFnSEFBd0lJUWdqQ0FjQUpBZ05DQkVJQndBa0NDSUlEUWdIQUJBSUpRZ1VDQWNBRUFnakNDVUlCd0FtQ0JFSUZRZ0hBQ1lJSkFnUkNBY0FGQWduQ0JnSUJ3QVVDQ1VJSndnSEFDZ0lGUWdaQ0FjQUtBZ21DQlVJQndBZENCa0lCQWdIQUIwSUtBZ1pDQWNBR0FnZUNBVUlCd0FZQ0NjSUhnZ0hBQ2tJR3dnY0NBY0FLUWdxQ0JzSUJ3QXFDQjBJR3dnSEFDb0lLd2dkQ0FjQUxBZ2NDQjRJQndBc0NDa0lIQWdIQUMwSUlBZ2ZDQWNBTFFndUNDQUlCd0F1Q0NFSUlBZ0hBQzRJTHdnaENBY0FNQWdmQ0NJSUJ3QXdDQzBJSHdnSEFDOElJd2doQ0FjQUx3Z3hDQ01JQndBeUNDSUlKQWdIQURJSU1BZ2lDQWNBTVFnbENDTUlCd0F4Q0RNSUpRZ0hBRFFJSkFnbUNBY0FOQWd5Q0NRSUJ3QXpDQ2NJSlFnSEFETUlOUWduQ0FjQU5nZ21DQ2dJQndBMkNEUUlKZ2dIQUNzSUtBZ2RDQWNBS3dnMkNDZ0lCd0ExQ0I0SUp3Z0hBRFVJTEFnZUNBY0FOd2dxQ0NrSUJ3QTNDRGdJS2dnSEFEZ0lLd2dxQ0FjQU9BZzVDQ3NJQndBNkNDa0lMQWdIQURvSU53Z3BDQWNBT3dndUNDMElCd0E3Q0R3SUxnZ0hBRHdJTHdndUNBY0FQQWc5Q0M4SUJ3QStDQzBJTUFnSEFENElPd2d0Q0FjQVBRZ3hDQzhJQndBOUNEOElNUWdIQUVBSU1BZ3lDQWNBUUFnK0NEQUlCd0EvQ0RNSU1RZ0hBRDhJUVFnekNBY0FRZ2d5Q0RRSUJ3QkNDRUFJTWdnSEFFRUlOUWd6Q0FjQVFRaERDRFVJQndCRUNEUUlOZ2dIQUVRSVFnZzBDQWNBT1FnMkNDc0lCd0E1Q0VRSU5nZ0hBRU1JTEFnMUNBY0FRd2c2Q0N3SUJ3QkZDRGdJTndnSEFFVUlSZ2c0Q0FjQVJnZzVDRGdJQndCR0NFY0lPUWdIQUVnSU53ZzZDQWNBU0FoRkNEY0lCd0JKQ0R3SU93Z0hBRWtJU2dnOENBY0FTZ2c5Q0R3SUJ3QktDRXNJUFFnSEFFd0lPd2crQ0FjQVRBaEpDRHNJQndCTENEOElQUWdIQUVzSVRRZy9DQWNBVGdnK0NFQUlCd0JPQ0V3SVBnZ0hBRTBJUVFnL0NBY0FUUWhQQ0VFSUJ3QlFDRUFJUWdnSEFGQUlUZ2hBQ0FjQVR3aERDRUVJQndCUENGRUlRd2dIQUZJSVFnaEVDQWNBVWdoUUNFSUlCd0JIQ0VRSU9RZ0hBRWNJVWdoRUNBY0FVUWc2Q0VNSUJ3QlJDRWdJT2dnSEFGTUlSZ2hGQ0FjQVV3aFVDRVlJQndCVUNFY0lSZ2dIQUZRSVZRaEhDQWNBVmdoRkNFZ0lCd0JXQ0ZNSVJRZ0hBRmNJU2doSkNBY0FWd2hZQ0VvSUJ3QllDRXNJU2dnSEFGZ0lXUWhMQ0FjQVdnaEpDRXdJQndCYUNGY0lTUWdIQUZrSVRRaExDQWNBV1FoYkNFMElCd0JjQ0V3SVRnZ0hBRndJV2doTUNBY0FXd2hQQ0UwSUJ3QmJDRjBJVHdnSEFGNElUZ2hRQ0FjQVhnaGNDRTRJQndCZENGRUlUd2dIQUYwSVh3aFJDQWNBWUFoUUNGSUlCd0JnQ0Y0SVVBZ0hBRlVJVWdoSENBY0FWUWhnQ0ZJSUJ3QmZDRWdJVVFnSEFGOElWZ2hJQ0FjQVlRaFVDRk1JQndCaENHSUlWQWdIQUdJSVZRaFVDQWNBWWdoakNGVUlCd0JrQ0ZNSVZnZ0hBR1FJWVFoVENBY0FaUWhZQ0ZjSUJ3QmxDR1lJV0FnSEFHWUlXUWhZQ0FjQVpnaG5DRmtJQndCb0NGY0lXZ2dIQUdnSVpRaFhDQWNBWndoYkNGa0lCd0JuQ0drSVd3Z0hBR29JV2doY0NBY0FhZ2hvQ0ZvSUJ3QnBDRjBJV3dnSEFHa0lhd2hkQ0FjQWJBaGNDRjRJQndCc0NHb0lYQWdIQUdzSVh3aGRDQWNBYXdodENGOElCd0J1Q0Y0SVlBZ0hBRzRJYkFoZUNBY0FZd2hnQ0ZVSUJ3QmpDRzRJWUFnSEFHMElWZ2hmQ0FjQWJRaGtDRllJQndCdkNHSUlZUWdIQUc4SWNBaGlDQWNBY0FoakNHSUlCd0J3Q0hFSVl3Z0hBSElJWVFoa0NBY0FjZ2h2Q0dFSUJ3QnpDR1lJWlFnSEFITUlkQWhtQ0FjQWRBaG5DR1lJQndCMENIVUlad2dIQUhZSVpRaG9DQWNBZGdoekNHVUlCd0IxQ0drSVp3Z0hBSFVJZHdocENBY0FlQWhvQ0dvSUJ3QjRDSFlJYUFnSEFIY0lhd2hwQ0FjQWR3aDVDR3NJQndCNkNHb0liQWdIQUhvSWVBaHFDQWNBZVFodENHc0lCd0I1Q0hzSWJRZ0hBSHdJYkFodUNBY0FmQWg2Q0d3SUJ3QnhDRzRJWXdnSEFIRUlmQWh1Q0FjQWV3aGtDRzBJQndCN0NISUlaQWdIQUgwSWNBaHZDQWNBZlFoK0NIQUlCd0IrQ0hFSWNBZ0hBSDRJZndoeENBY0FnQWh2Q0hJSUJ3Q0FDSDBJYndnSEFJRUlkQWh6Q0FjQWdRaUNDSFFJQndDQ0NIVUlkQWdIQUlJSWd3aDFDQWNBaEFoekNIWUlCd0NFQ0lFSWN3Z0hBSU1JZHdoMUNBY0Fnd2lGQ0hjSUJ3Q0dDSFlJZUFnSEFJWUloQWgyQ0FjQWhRaDVDSGNJQndDRkNJY0llUWdIQUlnSWVBaDZDQWNBaUFpR0NIZ0lCd0NIQ0hzSWVRZ0hBSWNJaVFoN0NBY0FpZ2g2Q0h3SUJ3Q0tDSWdJZWdnSEFIOElmQWh4Q0FjQWZ3aUtDSHdJQndDSkNISUlld2dIQUlrSWdBaHlDQWNBaXdoK0NIMElCd0NMQ0l3SWZnZ0hBSXdJZndoK0NBY0FqQWlOQ0g4SUJ3Q09DSDBJZ0FnSEFJNElpd2g5Q0FjQWp3aUNDSUVJQndDUENKQUlnZ2dIQUpBSWd3aUNDQWNBa0FpUkNJTUlCd0NTQ0lFSWhBZ0hBSklJandpQkNBY0FrUWlGQ0lNSUJ3Q1JDSk1JaFFnSEFKUUloQWlHQ0FjQWxBaVNDSVFJQndDVENJY0loUWdIQUpNSWxRaUhDQWNBbGdpR0NJZ0lCd0NXQ0pRSWhnZ0hBSlVJaVFpSENBY0FsUWlYQ0lrSUJ3Q1lDSWdJaWdnSEFKZ0lsZ2lJQ0FjQWpRaUtDSDhJQndDTkNKZ0lpZ2dIQUpjSWdBaUpDQWNBbHdpT0NJQUlCd0NaQ0l3SWl3Z0hBSmtJbWdpTUNBY0FtZ2lOQ0l3SUJ3Q2FDSnNJalFnSEFKd0lpd2lPQ0FjQW5BaVpDSXNJQndDZENKQUlqd2dIQUowSW5naVFDQWNBbmdpUkNKQUlCd0NlQ0o4SWtRZ0hBS0FJandpU0NBY0FvQWlkQ0k4SUJ3Q2ZDSk1Ja1FnSEFKOElvUWlUQ0FjQW9naVNDSlFJQndDaUNLQUlrZ2dIQUtFSWxRaVRDQWNBb1FpakNKVUlCd0NrQ0pRSWxnZ0hBS1FJb2dpVUNBY0Fvd2lYQ0pVSUJ3Q2pDS1VJbHdnSEFLWUlsZ2lZQ0FjQXBnaWtDSllJQndDYkNKZ0lqUWdIQUpzSXBnaVlDQWNBcFFpT0NKY0lCd0NsQ0p3SWpnZ0hBS2NJbWdpWkNBY0Fwd2lvQ0pvSUJ3Q29DSnNJbWdnSEFLZ0lxUWliQ0FjQXFnaVpDSndJQndDcUNLY0ltUWdIQUtzSW5naWRDQWNBcXdpc0NKNElCd0NzQ0o4SW5nZ0hBS3dJclFpZkNBY0FyZ2lkQ0tBSUJ3Q3VDS3NJblFnSEFLMElvUWlmQ0FjQXJRaXZDS0VJQndDd0NLQUlvZ2dIQUxBSXJnaWdDQWNBcndpakNLRUlCd0N2Q0xFSW93Z0hBTElJb2dpa0NBY0FzZ2l3Q0tJSUJ3Q3hDS1VJb3dnSEFMRUlzd2lsQ0FjQXRBaWtDS1lJQndDMENMSUlwQWdIQUtrSXBnaWJDQWNBcVFpMENLWUlCd0N6Q0p3SXBRZ0hBTE1JcWdpY0NBY0F0UWlvQ0tjSUJ3QzFDTFlJcUFnSEFMWUlxUWlvQ0FjQXRnaTNDS2tJQndDNENLY0lxZ2dIQUxnSXRRaW5DQWNBdVFpc0NLc0lCd0M1Q0xvSXJBZ0hBTG9JclFpc0NBY0F1Z2k3Q0swSUJ3QzhDS3NJcmdnSEFMd0l1UWlyQ0FjQXV3aXZDSzBJQndDN0NMMElyd2dIQUw0SXJnaXdDQWNBdmdpOENLNElCd0M5Q0xFSXJ3Z0hBTDBJdndpeENBY0F3QWl3Q0xJSUJ3REFDTDRJc0FnSEFMOElzd2l4Q0FjQXZ3akJDTE1JQndEQ0NMSUl0QWdIQU1JSXdBaXlDQWNBdHdpMENLa0lCd0MzQ01JSXRBZ0hBTUVJcWdpekNBY0F3UWk0Q0tvSUJ3RERDTFlJdFFnSEFNTUl4QWkyQ0FjQXhBaTNDTFlJQndERUNNVUl0d2dIQU1ZSXRRaTRDQWNBeGdqRENMVUlCd0RIQ0xvSXVRZ0hBTWNJeUFpNkNBY0F5QWk3Q0xvSUJ3RElDTWtJdXdnSEFNb0l1UWk4Q0FjQXlnakhDTGtJQndESkNMMEl1d2dIQU1rSXl3aTlDQWNBekFpOENMNElCd0RNQ01vSXZBZ0hBTXNJdndpOUNBY0F5d2pOQ0w4SUJ3RE9DTDRJd0FnSEFNNEl6QWkrQ0FjQXpRakJDTDhJQndETkNNOEl3UWdIQU5BSXdBakNDQWNBMEFqT0NNQUlCd0RGQ01JSXR3Z0hBTVVJMEFqQ0NBY0F6d2k0Q01FSUJ3RFBDTVlJdUFnSEFORUl4QWpEQ0FjQTBRalNDTVFJQndEU0NBRUlBQWdIQU5JSTBRZ0JDQWNBMGdqRkNNUUlCd0RTQ05NSXhRZ0hBTk1JQUFnRENBY0Ewd2pTQ0FBSUJ3RFVDTU1JeGdnSEFOUUkwUWpEQ0FjQTBRZ0dDQUVJQndEUkNOUUlCZ2dIQU5VSXlBakhDQWNBMVFqV0NNZ0lCd0RXQ05jSTJBZ0hBTllJMVFqWENBY0ExZ2pKQ01nSUJ3RFdDTmtJeVFnSEFOa0kyQWphQ0FjQTJRaldDTmdJQndEYkNNY0l5Z2dIQU5zSTFRakhDQWNBMVFqY0NOY0lCd0RWQ05zSTNBZ0hBTmtJeXdqSkNBY0EyUWpkQ01zSUJ3RGRDTm9JRHdnSEFOMEkyUWphQ0FjQTNnaktDTXdJQndEZUNOc0l5Z2dIQU5zSUVnamNDQWNBMndqZUNCSUlCd0RkQ00wSXl3Z0hBTjBJM3dqTkNBY0Ezd2dQQ0JNSUJ3RGZDTjBJRHdnSEFPQUl6QWpPQ0FjQTRBamVDTXdJQndEZUNCWUlFZ2dIQU40STRBZ1dDQWNBM3dqUENNMElCd0RmQ09FSXp3Z0hBT0VJRXdnWENBY0E0UWpmQ0JNSUJ3RGlDTTRJMEFnSEFPSUk0QWpPQ0FjQTRBZ2FDQllJQndEZ0NPSUlHZ2dIQU5NSTBBakZDQWNBMHdqaUNOQUlCd0RpQ0FNSUdnZ0hBT0lJMHdnRENBY0E0UWpHQ004SUJ3RGhDTlFJeGdnSEFOUUlGd2dHQ0FjQTFBamhDQmNJQndBd1FkMFZBQUJ5WVhZMExXRnNkUURtQ2dBQUFRQUNBQU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFFbEFTWUJKd0VvQVNrQktnRXJBU3dCTFFFdUFTOEJNQUV4QVRJQk13RTBBVFVCTmdFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBVkFCVVFGU0FWTUJWQUZWQVZZQlZ3RllBVmtCV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUJaZ0ZuQVdnQmFRRnFBV3NCYkFGdEFXNEJid0Z3QVhFQmNnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFac0JuQUdkQVo0Qm53R2dBYUVCb2dHakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0c0QWJrQnVnRzdBYndCdlFHK0FiOEJ3QUhCQWNJQnd3SEVBY1VCeGdISEFjZ0J5UUhLQWNzQnpBSE5BYzRCendIUUFkRUIwZ0hUQWRRQjFRSFdBZGNCMkFIWkFkb0Iyd0hjQWQwQjNnSGZBZUFCNFFIaUFlTUI1QUhsQWVZQjV3SG9BZWtCNmdIckFld0I3UUh1QWU4QjhBSHhBZklCOHdIMEFmVUI5Z0gzQWZnQitRSDZBZnNCL0FIOUFmNEIvd0VBQWdFQ0FnSURBZ1FDQlFJR0FnY0NDQUlKQWdvQ0N3SU1BZzBDRGdJUEFoQUNFUUlTQWhNQ0ZBSVZBaFlDRndJWUFoa0NHZ0liQWh3Q0hRSWVBaDhDSUFJaEFpSUNJd0lrQWlVQ0pnSW5BaWdDS1FJcUFpc0NMQUl0QWk0Q0x3SXdBakVDTWdJekFqUUNOUUkyQWpjQ09BSTVBam9DT3dJOEFqMENQZ0kvQWtBQ1FRSkNBa01DUkFKRkFrWUNSd0pJQWtrQ1NnSkxBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1BbWNDYUFKcEFtb0Nhd0pzQW0wQ2JnSnZBbkFDY1FKeUFuTUNkQUoxQW5ZQ2R3SjRBbmtDZWdKN0Fud0NmUUorQW44Q2dBS0JBb0lDZ3dLRUFvVUNoZ0tIQW9nQ2lRS0tBb3NDakFLTkFvNENqd0tRQXBFQ2tnS1RBcFFDbFFLV0FwY0NtQUtaQXBvQ213S2NBcDBDbmdLZkFxQUNvUUtpQXFNQ3BBS2xBcVlDcHdLb0Fxa0NxZ0tyQXF3Q3JRS3VBcThDc0FLeEFySUNzd0swQXJVQ3RnSzNBcmdDdVFLNkFyc0N2QUs5QXI0Q3Z3TEFBc0VDd2dMREFzUUN4UUxHQXNjQ3lBTEpBc29DeXdMTUFzMEN6Z0xQQXRBQzBRTFNBdE1DMUFMVkF0WUMxd0xZQXRrQzJnTGJBdHdDM1FMZUF0OEM0QUxoQXVJQzR3TGtBdVVDNWdMbkF1Z0M2UUxxQXVzQzdBTHRBdTRDN3dMd0F2RUM4Z0x6QXZRQzlRTDJBdmNDK0FMNUF2b0Mrd0w4QXYwQy9nTC9BZ0FEQVFNQ0F3TURCQU1GQXdZREJ3TUlBd2tEQ2dNTEF3d0REUU1PQXc4REVBTVJBeElERXdNVUF4VURGZ01YQXhnREdRTWFBeHNESEFNZEF4NERId01nQXlFRElnTWpBeVFESlFNbUF5Y0RLQU1wQXlvREt3TXNBeTBETGdNdkF6QURNUU15QXpNRE5BTTFBellETndNNEF6a0RPZ003QXp3RFBRTStBejhEUUFOQkEwSURRd05FQTBVRFJnTkhBMGdEU1FOS0Ewc0RUQU5OQTA0RFR3TlFBMUVEVWdOVEExUURWUU5XQTFjRFdBTlpBMW9EV3dOY0ExMERYZ05mQTJBRFlRTmlBMk1EWkFObEEyWURad05vQTJrRGFnTnJBMndEYlFOdUEyOERjQU54QTNJRGN3TjBBM1VEZGdOM0EzZ0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnT1BBNUFEa1FPU0E1TURsQU9WQTVZRGx3T1lBNWtEbWdPYkE1d0RuUU9lQTU4RG9BT2hBNklEb3dPa0E2VURwZ09uQTZnRHFRT3FBNnNEckFPdEE2NERyd093QTdFRHNnT3pBN1FEdFFPMkE3Y0R1QU81QTdvRHV3TzhBNzBEdmdPL0E4QUR3UVBDQThNRHhBUEZBOFlEeHdQSUE4a0R5Z1BMQTh3RHpRUE9BODhEMEFQUkE5SUQwd1BVQTlVRDFnUFhBOWdEMlFQYUE5c0QzQVBkQTk0RDN3UGdBK0VENGdQakErUUQ1UVBtQStjRDZBUHBBK29ENndQc0ErMEQ3Z1B2QS9BRDhRUHlBL01EOUFQMUEvWUQ5d1A0QS9rRCtnUDdBL3dEL1FQK0EvOERBQVFCQkFJRUF3UUVCQVVFQmdRSEJBZ0VDUVFLQkFzRURBUU5CQTRFRHdRUUJCRUVFZ1FUQkJRRUZRUVdCQmNFR0FRWkJCb0VHd1FjQkIwRUhnUWZCQ0FFSVFRaUJDTUVKQVFsQkNZRUp3UW9CQ2tFS2dRckJDd0VMUVF1QkM4RU1BUXhCRElFTXdRMEJEVUVOZ1EzQkRnRU9RUTZCRHNFUEFROUJENEVQd1JBQkVFRVFnUkRCRVFFUlFSR0JFY0VTQVJKQkVvRVN3Uk1CRTBFVGdSUEJGQUVVUVJTQkZNRVZBUlZCRllFVndSWUJGa0VXZ1JiQkZ3RVhRUmVCRjhFWUFSaEJHSUVZd1JrQkdVRVpnUm5CR2dFYVFScUJHc0ViQVJ0Qkc0RWJ3UndCSEVFY2dSekJIUUVkUVIyQkhjRWVBUjVCSG9FZXdSOEJIMEVmZ1IvQklBRWdRU0NCSU1FaEFTRkJJWUVod1NJQklrRWlnU0xCSXdFalFTT0JJOEVrQVNSQkpJRWt3U1VCSlVFbGdTWEJKZ0VtUVNhQkpzRW5BU2RCSjRFbndTZ0JLRUVvZ1NqQktRRXBRU21CS2NFcUFTcEJLb0Vxd1NzQkswRXJnU3ZCTEFFc1FTeUJMTUV0QVMxQkxZRXR3UzRCTGtFdWdTN0JMd0V2UVMrQkw4RXdBVEJCTUlFd3dURUJNVUV4Z1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOY0UyQVRaQk5vRTJ3VGNCTjBFM2dUZkJPQUU0UVRpQk9NRTVBVGxCT1lFNXdUb0JPa0U2Z1RyQk93RTdRVHVCTzhFOEFUeEJQSUU4d1QwQlBVRTlnVDNCUGdFK1FUNkJQc0UvQVQ5QlA0RS93UUFCUUVGQWdVREJRUUZCUVVHQlFjRkNBVUpCUW9GQ3dVTUJRMEZEZ1VQQlJBRkVRVVNCUk1GRkFVVkJSWUZGd1VZQlJrRkdnVWJCUndGSFFVZUJSOEZJQVVoQlNJRkl3VWtCU1VGSmdVbkJTZ0ZLUVVxQlNzRkxBVXRCUzRGTHdVd0JURUZNZ1V6QlRRRk5RVTJCVGNGT0FVNUJUb0ZPd1U4QlQwRlBnVS9CVUFGUVFWQ0JVTUZSQVZGQlVZRlJ3VklCVWtGU2dWTEJVd0ZUUVZPQlU4RlVBVlJCVklGVXdWVUJWVUZWZ1ZYQlZnRldRVmFCVnNGWEFWZEJWNEZYd1ZnQldFRllnVmpCV1FGWlFWbUJXY0ZhQVZwQldvRmF3VnNCVzBGYmdWdkJYQUZjUVZ5QlhNRmRBVjFCWFlGZHdWNEJYa0ZlZ1Y3Qlh3RmZRVitCWDhGZ0FXQkJZSUZnd1dFQllVRmhnV0hCWWdGaVFXS0JZc0ZqQVdOQlk0Rmp3V1FCWkVGa2dXVEJaUUZsUVdXQlpjRm1BV1pCWm9GbXdXY0JaMEZuZ1dmQmFBRm9RV2lCYU1GcEFXbEJhWUZwd1dvQmFrRnFnV3JCYXdGclFXdUJhOEZzQVd4QmJJRnN3VzBCYlVGdGdXM0JiZ0Z1UVc2QmJzRnZBVzlCYjRGdndYQUJjRUZ3Z1hEQmNRRnhRWEdCY2NGeUFYSkJjb0Z5d1hNQmMwRnpnWFBCZEFGMFFYU0JkTUYxQVhWQmRZRjF3WFlCZGtGMmdYYkJkd0YzUVhlQmQ4RjRBWGhCZUlGNHdYa0JlVUY1Z1huQmVnRjZRWHFCZXNGN0FYdEJlNEY3d1h3QmZFRjhnWHpCZlFGOVFYMkJmY0YrQVg1QmZvRit3WDhCZjBGL2dYL0JRQUdBUVlDQmdNR0JBWUZCZ1lHQndZSUJna0dDZ1lMQmd3R0RRWU9CZzhHRUFZUkJoSUdFd1lVQmhVR0ZnWVhCaGdHR1FZYUJoc0dIQVlkQmg0R0h3WWdCaUVHSWdZakJpUUdKUVltQmljR0tBWXBCaW9HS3dZc0JpMEdMZ1l2QmpBR01RWXlCak1HTkFZMUJqWUdOd1k0QmprR09nWTdCandHUFFZK0JqOEdRQVpCQmtJR1F3WkVCa1VHUmdaSEJrZ0dTUVpLQmtzR1RBWk5CazRHVHdaUUJsRUdVZ1pUQmxRR1ZRWldCbGNHV0FaWkJsb0dXd1pjQmwwR1hnWmZCbUFHWVFaaUJtTUdaQVpsQm1ZR1p3Wm9CbWtHYWdackJtd0diUVp1Qm04R2NBWnhCbklHY3daMEJuVUdkZ1ozQm5nR2VRWjZCbnNHZkFaOUJuNEdmd2FBQm9FR2dnYURCb1FHaFFhR0JvY0dpQWFKQm9vR2l3YU1CbzBHamdhUEJwQUdrUWFTQnBNR2xBYVZCcFlHbHdhWUJwa0dtZ2FiQnB3R25RYWVCcDhHb0FhaEJxSUdvd2FrQnFVR3BnYW5CcWdHcVFhcUJxc0dyQWF0QnE0R3J3YXdCckVHc2dhekJyUUd0UWEyQnJjR3VBYTVCcm9HdXdhOEJyMEd2Z2EvQnNBR3dRYkNCc01HeEFiRkJzWUd4d2JJQnNrR3lnYkxCc3dHelFiT0JzOEcwQWJSQnRJRzB3YlVCdFVHMWdiWEJ0Z0cyUWJhQnRzRzNBYmRCdDRHM3diZ0J1RUc0Z2JqQnVRRzVRYm1CdWNHNkFicEJ1b0c2d2JzQnUwRzdnYnZCdkFHOFFieUJ2TUc5QWIxQnZZRzl3YjRCdmtHK2diN0J2d0cvUWIrQnY4R0FBY0JCd0lIQXdjRUJ3VUhCZ2NIQndnSENRY0tCd3NIREFjTkJ3NEhEd2NRQnhFSEVnY1RCeFFIRlFjV0J4Y0hHQWNaQnhvSEd3Y2NCeDBISGdjZkJ5QUhJUWNpQnlNSEpBY2xCeVlISndjb0J5a0hLZ2NyQnl3SExRY3VCeThITUFjeEJ6SUhNd2MwQnpVSE5nYzNCemdIT1FjNkJ6c0hQQWM5Qno0SFB3ZEFCMEVIUWdkREIwUUhSUWRHQjBjSFNBZEpCMG9IU3dkTUIwMEhUZ2RQQjFBSFVRZFNCMU1IVkFkVkIxWUhWd2RZQjFrSFdnZGJCMXdIWFFkZUIxOEhZQWRoQjJJSFl3ZGtCMlVIWmdkbkIyZ0hhUWRxQjJzSGJBZHRCMjRIYndkd0IzRUhjZ2R6QjNRSGRRZDJCM2NIZUFkNUIzb0hld2Q4QjMwSGZnZC9CNEFIZ1FlQ0I0TUhoQWVGQjRZSGh3ZUlCNGtIaWdlTEI0d0hqUWVPQjQ4SGtBZVJCNUlIa3dlVUI1VUhsZ2VYQjVnSG1RZWFCNXNIbkFlZEI1NEhud2VnQjZFSG9nZWpCNlFIcFFlbUI2Y0hxQWVwQjZvSHF3ZXNCNjBIcmdldkI3QUhzUWV5QjdNSHRBZTFCN1lIdHdlNEI3a0h1Z2U3Qjd3SHZRZStCNzhId0FmQkI4SUh3d2ZFQjhVSHhnZkhCOGdIeVFmS0I4c0h6QWZOQjg0SHp3ZlFCOUVIMGdmVEI5UUgxUWZXQjljSDJBZlpCOW9IMndmY0I5MEgzZ2ZmQitBSDRRZmlCK01INUFmbEIrWUg1d2ZvQitrSDZnZnJCK3dIN1FmdUIrOEg4QWZ4Qi9JSDh3ZjBCL1VIOWdmM0IvZ0grUWY2Qi9zSC9BZjlCLzRIL3djQUNBRUlBZ2dEQ0FRSUJRZ0dDQWNJQ0FnSkNBb0lDd2dNQ0EwSURnZ1BDQkFJRVFnU0NCTUlGQWdWQ0JZSUZ3Z1lDQmtJR2dnYkNCd0lIUWdlQ0I4SUlBZ2hDQ0lJSXdna0NDVUlKZ2duQ0NnSUtRZ3FDQ3NJTEFndENDNElMd2d3Q0RFSU1nZ3pDRFFJTlFnMkNEY0lPQWc1Q0RvSU93ZzhDRDBJUGdnL0NFQUlRUWhDQ0VNSVJBaEZDRVlJUndoSUNFa0lTZ2hMQ0V3SVRRaE9DRThJVUFoUkNGSUlVd2hVQ0ZVSVZnaFhDRmdJV1FoYUNGc0lYQWhkQ0Y0SVh3aGdDR0VJWWdoakNHUUlaUWhtQ0djSWFBaHBDR29JYXdoc0NHMEliZ2h2Q0hBSWNRaHlDSE1JZEFoMUNIWUlkd2g0Q0hrSWVnaDdDSHdJZlFoK0NIOElnQWlCQ0lJSWd3aUVDSVVJaGdpSENJZ0lpUWlLQ0lzSWpBaU5DSTRJandpUUNKRUlrZ2lUQ0pRSWxRaVdDSmNJbUFpWkNKb0ltd2ljQ0owSW5naWZDS0FJb1FpaUNLTUlwQWlsQ0tZSXB3aW9DS2tJcWdpckNLd0lyUWl1Q0s4SXNBaXhDTElJc3dpMENMVUl0Z2kzQ0xnSXVRaTZDTHNJdkFpOUNMNEl2d2pBQ01FSXdnakRDTVFJeFFqR0NNY0l5QWpKQ01vSXl3ak1DTTBJemdqUENOQUkwUWpTQ05NSTFBalZDTllJMXdqWUNOa0kyZ2piQ053STNRamVDTjhJNEFqaENPSUk0d2prQ09VSTVnam5DT2dJNlFqcUNPc0k3QWp0Q080STd3andDUEVJOGdqekNQUUk5UWoyQ1BjSStBajVDUG9JK3dqOENQMEkvZ2ovQ0FBSkFRa0NDUU1KQkFrRkNRWUpCd2tJQ1FrSkNna0xDUXdKRFFrT0NROEpFQWtSQ1JJSkV3a1VDUlVKRmdrWENSZ0pHUWthQ1JzSkhBa2RDUjRKSHdrZ0NTRUpJZ2tqQ1NRSkpRa21DU2NKS0FrcENTb0pLd2tzQ1MwSkxna3ZDVEFKTVFreUNUTUpOQWsxQ1RZSk53azRDVGtKT2drN0NUd0pQUWsrQ1Q4SlFBbEJDVUlKUXdsRUNVVUpSZ2xIQ1VnSlNRbEtDVXNKVEFsTkNVNEpUd2xRQ1ZFSlVnbFRDVlFKVlFsV0NWY0pXQWxaQ1ZvSld3bGNDVjBKWGdsZkNXQUpZUWxpQ1dNSlpBbGxDV1lKWndsb0NXa0phZ2xyQ1d3SmJRbHVDVzhKY0FseENYSUpjd2wwQ1hVSmRnbDNDWGdKZVFsNkNYc0pmQWw5Q1g0SmZ3bUFDWUVKZ2dtRENZUUpoUW1HQ1ljSmlBbUpDWW9KaXdtTUNZMEpqZ21QQ1pBSmtRbVNDWk1KbEFtVkNaWUpsd21ZQ1prSm1nbWJDWndKblFtZUNaOEpvQW1oQ2FJSm93bWtDYVVKcGdtbkNhZ0pxUW1xQ2FzSnJBbXRDYTRKcndtd0NiRUpzZ216Q2JRSnRRbTJDYmNKdUFtNUNib0p1d204Q2IwSnZnbS9DY0FKd1FuQ0NjTUp4QW5GQ2NZSnh3bklDY2tKeWduTENjd0p6UW5PQ2M4SjBBblJDZElKMHduVUNkVUoxZ25YQ2RnSjJRbmFDZHNKM0FuZENkNEozd25nQ2VFSjRnbmpDZVFKNVFubUNlY0o2QW5wQ2VvSjZ3bnNDZTBKN2dudkNmQUo4UW55Q2ZNSjlBbjFDZllKOXduNENma0orZ243Q2Z3Si9RbitDZjhKQUFvQkNnSUtBd29FQ2dVS0Jnb0hDZ2dLQ1FvS0Nnc0tEQW9OQ2c0S0R3b1FDaEVLRWdvVENoUUtGUW9XQ2hjS0dBb1pDaG9LR3dvY0NoMEtIZ29mQ2lBS0lRb2lDaU1LSkFvbENpWUtKd29vQ2lrS0tnb3JDaXdLTFFvdUNpOEtNQW94Q2pJS013bzBDalVLTmdvM0NqZ0tPUW82Q2pzS1BBbzlDajRLUHdwQUNrRUtRZ3BEQ2tRS1JRcEdDa2NLU0FwSkNrb0tTd3BNQ2swS1RncFBDbEFLVVFwU0NsTUtWQXBWQ2xZS1Z3cFlDbGtLV2dwYkNsd0tYUXBlQ2w4S1lBcGhDbUlLWXdwa0NtVUtaZ3BuQ21nS2FRcHFDbXNLYkFwdENtNEtid3B3Q25FS2NncHpDblFLZFFwMkNuY0tlQXA1Q25vS2V3cDhDbjBLZmdwL0NvQUtnUXFDQ29NS2hBcUZDb1lLaHdxSUNva0tpZ3FMQ293S2pRcU9DbzhLa0FxUkNwSUtrd3FVQ3BVS2xncVhDcGdLbVFxYUNwc0tuQXFkQ3A0S253cWdDcUVLb2dxakNxUUtwUXFtQ3FjS3FBcXBDcW9LcXdxc0NxMEtyZ3F2Q3JBS3NRcXlDck1LdEFxMUNyWUt0d3E0Q3JrS3VncTdDcndLdlFxK0NyOEt3QXJCQ3NJS3d3ckVDc1VLeGdySENzZ0t5UXJLQ3NzS3pBck5DczRLendyUUN0RUswZ3JUQ3RRSzFRcldDdGNLMkFyWkN0b0syd3JjQ3QwSzNncmZDdUFLNFFyaUN1TUs1QXJsQ2pCQjh3UUFBSEpoZGpRdFpHbHpZM01BY0FMbUN1Y0s2QXJwQ3VvSzZ3cnNDdTBLN2dydkN2QUs4UXJ5Q3ZNSzlBcjFDdllLOXdyNEN2a0srZ3I3Q3Z3Sy9RcitDdjhLQUFzQkN3SUxBd3NFQ3dVTEJnc0hDd2dMQ1FzS0N3c0xEQXNOQ3c0TER3c1FDeEVMRWdzVEN4UUxGUXNXQ3hjTEdBc1pDeG9MR3dzY0N4MExIZ3NmQ3lBTElRc2lDeU1MSkFzbEN5WUxKd3NvQ3lrTEtnc3JDeXdMTFFzdUN5OExNQXN4Q3pJTE13czBDelVMTmdzM0N6Z0xPUXM2Q3pzTFBBczlDejRMUHd0QUMwRUxRZ3REQzBRTFJRdEdDMGNMU0F0SkMwb0xTd3RNQzAwTFRndFBDMUFMVVF0U0MxTUxWQXRWQzFZTFZ3dFlDMWtMV2d0YkMxd0xYUXRlQzE4TFlBdGhDMklMWXd0a0MyVUxaZ3RuQzJnTGFRdHFDMnNMYkF0dEMyNExid3R3QzNFTGNndHpDM1FMZFF0MkMzY0xlQXQ1QzNvTGV3dDhDMzBMZmd0L0M0QUxnUXVDQzRNTGhBdUZDNFlMaHd1SUM0a0xpZ3VMQzR3TGpRdU9DNDhMa0F1UkM1SUxrd3VVQzVVTGxndVhDNWdMbVF1YUM1c0xuQXVkQzU0TG53dWdDNkVMb2d1akM2UUxwUXVtQzZjTHFBdXBDNm9McXd1c0M2MExyZ3V2QzdBTHNRdXlDN01MdEF1MUM3WUx0d3U0QzdrTHVndTdDN3dMdlF1K0M3OEx3QXZCQzhJTHd3dkVDOFVMeGd2SEM4Z0x5UXZLQzhzTHpBdk5DODRMend2UUM5RUwwZ3ZUQzlRTDFRdldDOWNMMkF2WkM5b0wyd3ZjQzkwTDNndmZDK0FMNFF2aUMrTUw1QXZsQytZTDV3dm9DK2tMNmd2ckMrd0w3UXZ1Qys4TDhBdnhDL0lMOHd2MEMvVUw5Z3YzQy9nTCtRdjZDL3NML0F2OUMvNEwvd3NBREFFTUFnd0REQVFNQlF3R0RBY01DQXdKREFvTUN3d01EQTBNRGd3UERCQU1FUXdTREJNTUZBd1ZEQllNRnd3WURCa01HZ3diREJ3TUhRd2VEQjhNSUF3aERDSU1Jd3drRENVTUpnd25EQ2dNS1F3cURDc01MQXd0REM0TUx3d3dEREVNTWd3ekREUU1OUXcyRERjTU9BdzVERG9NT3d3OEREME1QZ3cvREVBTVFReENERU1NUkF4RkRFWU1Sd3hJREVrTVNneExERXdNVFF4T0RFOE1VQXhSREZJTVV3eFVERlVNVmd4WERGZ01XUXhhREZzTVhBeGRERjRNWHd4Z0RHRU1ZZ3hqREdRTVpReG1ER2NNYUF4cERHb01hd3hzREcwTWJneHZESEFNY1F4eURITU1kQXgxREhZTWR3eDRESGtNZWd4N0RId01mUXgrREg4TWdBeUJESUlNZ3d5RURJVU1oZ3lIRElnTWlReUtESXNNakF5TkRJNE1qd3lRREpFTWtneVRESlFNbFF5V0RKY01tQXlaREpvTW13eWNESjBNbmd5ZkRLQU1vUXlpREtNTXBBeWxES1lNcHd5b0RLa01xZ3lyREt3TXJReXVESzhNc0F5eERMSU1zd3kwRExVTXRneTNETGdNdVF5NkRMc012QXk5REw0TXZ3ekFETUVNd2d6RERNUU14UXpHRE1jTXlBekpETW9NeXd6TURNME16Z3pQRE5BTTBRelNETk1NMUF6VkROWU0xd3pZRE5rTTJnemJETndNM1F6ZUROOE00QXpoRE9JTTR3emtET1VNNWd6bkRPZ002UXpxRE9zTTdBenRETzRNN3d6d0RQRU04Z3p6RFBRTTlRejJEUGNNK0F6NURQb00rd3o4RFAwTS9nei9EQUFOQVEwQ0RRTU5CQTBGRFFZTkJ3MElEUWtOQ2cwTERRd05EUTBPRFE4TkVBMFJEUklORXcwVURSVU5GZzBYRFJnTkdRMGFEUnNOSEEwZERSNE5IdzBnRFNFTklnMGpEU1FOSlEwbURTY05LQTBwRFNvTkt3MHNEUzBOTGcwdkRUQU5NUTB5RFRNTk5BMDFEVFlOTncwNERUa05PZzA3RFR3TlBRMCtEVDhOUUExQkRVSU5RdzFFRFVVTlJnMUhEVWdOU1ExS0RVc05UQTFORFU0TlR3MVFEVkVOVWcxVERWUU5WUTB3UWRVREFBQnlZWFkwTFhOb2FXVnNaSE1BNEFGV0RWY05XQTFaRFZvTld3MWNEVjBOWGcxZkRXQU5ZUTFpRFdNTlpBMWxEV1lOWncxb0RXa05hZzFyRFd3TmJRMXVEVzhOY0ExeERYSU5jdzEwRFhVTmRnMTNEWGdOZVExNkRYc05mQTE5RFg0TmZ3MkFEWUVOZ2cyRERZUU5oUTJHRFljTmlBMkpEWW9OaXcyTURZME5qZzJQRFpBTmtRMlNEWk1ObEEyVkRaWU5sdzJZRFprTm1nMmJEWndOblEyZURaOE5vQTJoRGFJTm93MmtEYVVOcGcybkRhZ05xUTJxRGFzTnJBMnREYTROcncyd0RiRU5zZzJ6RGJRTnRRMjJEYmNOdUEyNURib051dzI4RGIwTnZnMi9EY0FOd1EzQ0RjTU54QTNGRGNZTnh3M0lEY2tOeWczTERjd056UTNPRGM4TjBBM1JEZElOMHczVURkVU4xZzNYRGRnTjJRM2FEZHNOM0EzZERkNE4zdzNnRGVFTjRnM2pEZVFONVEzbURlY042QTNwRGVvTjZ3M3NEZTBON2czdkRmQU44UTN5RGZNTjlBMzFEZllOOXczNERma04rZzM3RGZ3Ti9RMytEZjhOQUE0QkRnSU9BdzRFRGdVT0JnNEhEZ2dPQ1E0S0Rnc09EQTRORGc0T0R3NFFEaEVPRWc0VERoUU9GUTRXRGhjT0dBNFpEaG9PR3c0Y0RoME9IZzRmRGlBT0lRNGlEaU1PSkE0bERpWU9KdzRvRGlrT0tnNHJEaXdPTFE0dURpOE9NQTR4RGpJT013NDBEalVPTmc0M0RqZ09PUTQ2RGpzT1BBNDlEajRPUHc1QURrRU9RZzVERGtRT1JRNUdEa2NPU0E1SkRrb09TdzVNRGswT1RnNVBEbEFPVVE1U0RsTU9WQTVWRGxZT1Z3NVlEbGtPV2c1YkRsd09YUTVlRGw4T1lBNWhEbUlPWXc1a0RtVU9aZzVuRG1nT2FRNXFEbXNPYkE1dERtNE9idzV3RG5FT2NnNXpEblFPZFE1MkRuY09lQTU1RG5vT2V3NThEbjBPZmc1L0RvQU9nUTZDRG9NT2hBNkZEb1lPaHc2SURva09pZzZMRG93T2pRNk9EbzhPa0E2UkRwSU9rdzZVRHBVT2xnNlhEcGdPbVE2YURwc09uQTZkRHA0T253NmdEcUVPb2c2akRxUU9wUTZtRHFjT3FBNnBEcW9PcXc2c0RxME9yZzZ2RHJBT3NRNnlEck1PdEE2MURyWU90dzY0RHJrT3VnNjdEcndPdlE2K0RyOE93QTdCRHNJT3d3N0VEc1VPeGc3SERzZ095UTdLRHNzT3pBN05EczRPenc3UUR0RU8wZzdURHRRTzFRN1dEdGNPMkE3WkR0b08ydzdjRHQwTzNnN2ZEdUFPNFE3aUR1TU81QTdsRHVZTzV3N29EdWtPNmc3ckR1d083UTd1RHU4TzhBN3hEdklPOHc3MER2VU85ZzczRHZnTytRNzZEdnNPL0E3OUR2NE8vdzRBRHdFUEFnOEREd1FQQlE4R0R3Y1BDQThKRHdvUEN3OE1EdzBQRGc4UER4QVBFUThTRHhNUEZBOFZEeFlQRnc4WUR4a1BHZzhiRHh3UEhROGVEeDhQSUE4aER5SVBJdzhrRHlVUEpnOG5EeWdQS1E4cUR5c1BMQTh0RHk0UEx3OHdEekVQTWc4ekR6UVBOUTh3UVpJREFBQnlZWFkwTFhScGNtVUF3QUUyRHpjUE9BODVEem9QT3c4OER6MFBQZzgvRDBBUFFROUNEME1QUkE5RkQwWVBSdzlJRDBrUFNnOUxEMHdQVFE5T0QwOFBVQTlSRDFJUFV3OVVEMVVQVmc5WEQxZ1BXUTlhRDFzUFhBOWREMTRQWHc5Z0QyRVBZZzlqRDJRUFpROW1EMmNQYUE5cEQyb1BhdzlzRDIwUGJnOXZEM0FQY1E5eUQzTVBkQTkxRDNZUGR3OTREM2tQZWc5N0Qzd1BmUTkrRDM4UGdBK0JENElQZ3crRUQ0VVBoZytIRDRnUGlRK0tENHNQakErTkQ0NFBqdytRRDVFUGtnK1RENVFQbFErV0Q1Y1BtQStaRDVvUG13K2NENTBQbmcrZkQ2QVBvUStpRDZNUHBBK2xENllQcHcrb0Q2a1BxZytyRDZ3UHJRK3VENjhQc0EreEQ3SVBzdyswRDdVUHRnKzNEN2dQdVErNkQ3c1B2QSs5RDc0UHZ3L0FEOEVQd2cvREQ4UVB4US9HRDhjUHlBL0pEOG9QeXcvTUQ4MFB6Zy9QRDlBUDBRL1NEOU1QMUEvVkQ5WVAxdy9ZRDlrUDJnL2JEOXdQM1EvZUQ5OFA0QS9oRCtJUDR3L2tEK1VQNWcvbkQrZ1A2US9xRCtzUDdBL3REKzRQN3cvd0QvRVA4Zy96RC9RUDlRLzJEL2NQK0EvNUQvb1Ardy84RC8wUC9nLy9Ed0FRQVJBQ0VBTVFCQkFGRUFZUUJ4QUlFQWtRQ2hBTEVBd1FEUkFPRUE4UUVCQVJFQklRRXhBVUVCVVFGaEFYRUJnUUdSQWFFQnNRSEJBZEVCNFFIeEFnRUNFUUloQWpFQ1FRSlJBbUVDY1FLQkFwRUNvUUt4QXNFQzBRTGhBdkVEQVFNUkF5RURNUU5CQTFFRFlRTnhBNEVEa1FPaEE3RUR3UVBSQStFRDhRUUJCQkVFSVFReEJFRUVVUVJoQkhFRWdRU1JCS0VFc1FUQkJORUU0UVR4QlFFRkVRVWhCVEVGUVFWUkJXRUZjUVdCQlpFRm9RV3hCY0VGMFFYaEJmRUdBUVlSQmlFR01RWkJCbEVHWVFaeEJvRUdrUWFoQnJFR3dRYlJCdUVHOFFjQkJ4RUhJUWN4QjBFSFVRZGhCM0VIZ1FlUkI2RUhzUWZCQjlFSDRRZnhDQUVJRVFnaENERUlRUWhSQ0dFSWNRaUJDSkVJb1FpeENNRUkwUWpoQ1BFSkFRa1JDU0VKTVFsQkNWRUpZUWx4Q1lFSmtRbWhDYkVKd1FuUkNlRUo4UW9CQ2hFS0lRb3hDa0VLVVFwaENuRUtnUXFSQ3FFS3NRckJDdEVLNFFyeEN3RUxFUXNoQ3pFTFFRdFJDMkVMY1F1QkM1RUxvUXV4QzhFTDBRdmhDL0VNQVF3UkRDRU1NUXhCREZFTVlReHhESUVNa1F5aERMRU13UXpSRE9FTThRMEJEUkVOSVEweERVRU5VUTFoRFhFTmdRMlJEYUVOc1EzQkRkRU40UTN4RGdFT0VRNGhEakVPUVE1UkRtRU9jUTZCRHBFT29RNnhEc0VPMFE3aER2RVBBUThSRHlFUE1ROUJEMUVGQkIza01BQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFBUU9hZkFRQlViM2x2ZEdGZlVrRTVBQUJCMVo4QkFCQkJyR29BQU9NSTVERDlRWDJEVVVMQTk4ZkJ2SEVKUW1aTlRVSnB5Y1BCNUREOVFXWk5UVUpweWNQQnZIRUpRbjJEVVVMQTk4ZkJ2SEVKUXVWaVNVSkJsYjdCNUREOVFlVmlTVUpCbGI3QnZIRUpRc1BUUlVKYWNMakI1REQ5UWNQVFJVSmFjTGpCdkhFSlFtZXVRa0p6YzdIQjVERDlRV2V1UWtKemM3SEJ2SEVKUW5yL1AwTEF1cW5CNUREOVFYci9QMExBdXFuQnZIRUpRdHJSUFVKOFphSEI1REQ5UWRyUlBVSjhaYUhCdkhFSlFrNHVQRUk5bFpqQjVERDlRVTR1UEVJOWxaakJ2SEVKUW5nYk8wS2ViWS9CNUREOVFYZ2JPMEtlYlkvQnZIRUpRcWlkT2tLWkU0YkI1REQ5UWFpZE9rS1pFNGJCdkhFSlF0eTJPa0xPV1huQjVERDlRZHkyT2tMT1dYbkJ2SEVKUXE5bU8wTDl2bWJCNUREOVFhOW1PMEw5dm1iQnZIRUpRbDJxUEVMb29WVEI1REQ5UVYycVBFTG9vVlRCdkhFSlFzZDhQa0t6UzBQQjVERDlRY2Q4UGtLelMwUEJ2SEVKUXBUV1FFSkZBalBCNUREOVFaVFdRRUpGQWpQQjVERDlRVWF1UTBKMUJ5VEJ2SEVKUWthdVEwSjFCeVRCNUREOVFXajRSa0tmbHhiQnZIRUpRbWo0UmtLZmx4YkI1REQ5UWFpblNrSXo2UXJCdkhFSlFxaW5Ta0l6NlFyQjVERDlRVEN0VGtJc0t3SEJ2SEVKUWpDdFRrSXNLd0hCNUREOVFidjRVa0wwQ2ZQQXZIRUpRcnY0VWtMMENmUEE1REQ5UWZwNFYwTHFLdWpBdkhFSlF2cDRWMExxS3VqQTVERDlRYmtiWEVJczVlSEF2SEVKUXJrYlhFSXM1ZUhBNUREOVFVZk9ZRUxxVWVEQXZIRUpRa2ZPWUVMcVVlREE1REQ5UWFwOVpVS2tkK1BBdkhFSlFxcDlaVUtrZCtQQTVERDlRZmtXYWtLT1NldkF2SEVKUXZrV2FrS09TZXZBNUREOVFhS0hia0l5cVBmQXZIRUpRcUtIYmtJeXFQZkE1REQ5UWJpOWNrSytNQVRCdkhFSlFyaTlja0srTUFUQjVERDlRVG1vZGtJSG1RN0J2SEVKUWptb2RrSUhtUTdCNUREOVFWazNla0xnNGhyQnZIRUpRbGszZWtMZzRockI1REQ5UWJoY2ZVS3IzQ2pCdkhFSlFyaGNmVUtyM0NqQjVERDlRZEVGZ0VJS1RqakJ2SEVKUXRFRmdFSUtUampCNUREOVFhSWNnVUtmK0VqQnZIRUpRcUljZ1VLZitFakI1REQ5UVdmdWdVSWJtVnJCdkhFSlFtZnVnVUlibVZyQjVERDlRZFIzZ2tKZDZHekJ2SEVKUXRSM2drSmQ2R3pCNUREOVFieTJna0pibkgvQnZIRUpRcnkyZ2tKYm5IL0I1REQ5UVNHcWdrTGdOSW5CdkhFSlFpR3Fna0xnTkluQjVERDlRVGhTZ2tKSGdwTEJ2SEVKUWpoU2drSkhncExCNUREOVFXQ3dnVUxRa0p2QnZIRUpRbUN3Z1VMUWtKdkI1REQ5UVN2SGdFTHhPNlRCdkhFSlFpdkhnRUx4TzZUQjVERDlRWWswZjBLa1lLekJ2SEVKUW9rMGYwS2tZS3pCdkhFSlF0WmNmRUlSM3JQQjVERDlRZFpjZkVJUjNyUEJ2SEVKUXJZU2VVTDBsYnJCNUREOVFiWVNlVUwwbGJyQnZIRUpRblZqZFVJMGJjREI1REQ5UVhWamRVSTBiY0RCdkhFSlF1NWRjVUl4VE1YQjVERDlRZTVkY1VJeFRNWEJ2SEVKUW1JU2JVSk1IOG5CNUREOVFXSVNiVUpNSDhuQnZIRUpRaVdTYUVJVTE4dkI1REQ5UVNXU2FFSVUxOHZCdkhFSlFtVHZZMEtEYU0zQjVERDlRV1R2WTBLRGFNM0J2SEVKUXRjOFgwSk96YzNCNUREOVFkYzhYMEpPemMzQnZIRUpRblNOV2tMa0E4M0I1REQ5UVhTTldrTGtBODNCdkhFSlFpWDBWVUpuRDh2QjVERDlRU1gwVlVKbkQ4dkJYMGNLUW1aTlRVSnB5Y1BCWDBjS1FuMkRVVUxBOThmQlgwY0tRdVZpU1VKQmxiN0JYMGNLUXNQVFJVSmFjTGpCWDBjS1FtZXVRa0p6YzdIQlgwY0tRbnIvUDBMQXVxbkJYMGNLUXRyUlBVSjhaYUhCWDBjS1FrNHVQRUk5bFpqQlgwY0tRbmdiTzBLZWJZL0JYMGNLUXFpZE9rS1pFNGJCWDBjS1F0eTJPa0xPV1huQlgwY0tRcTltTzBMOXZtYkJYMGNLUWwycVBFTG9vVlRCWDBjS1FzZDhQa0t6UzBQQlgwY0tRcFRXUUVKRkFqUEJYMGNLUWthdVEwSjFCeVRCWDBjS1FtajRSa0tmbHhiQlgwY0tRcWluU2tJejZRckJYMGNLUWpDdFRrSXNLd0hCWDBjS1FydjRVa0wwQ2ZQQVgwY0tRdnA0VjBMcUt1akFYMGNLUXJrYlhFSXM1ZUhBWDBjS1FrZk9ZRUxxVWVEQVgwY0tRcXA5WlVLa2QrUEFYMGNLUXZrV2FrS09TZXZBWDBjS1FxS0hia0l5cVBmQVgwY0tRcmk5Y2tLK01BVEJYMGNLUWptb2RrSUhtUTdCWDBjS1FsazNla0xnNGhyQlgwY0tRcmhjZlVLcjNDakJYMGNLUXRFRmdFSUtUampCWDBjS1FxSWNnVUtmK0VqQlgwY0tRbWZ1Z1VJYm1WckJYMGNLUXRSM2drSmQ2R3pCWDBjS1FyeTJna0pibkgvQlgwY0tRaUdxZ2tMZ05JbkJYMGNLUWpoU2drSkhncExCWDBjS1FtQ3dnVUxRa0p2QlgwY0tRaXZIZ0VMeE82VEJYMGNLUW9rMGYwS2tZS3pCWDBjS1F0WmNmRUlSM3JQQlgwY0tRcllTZVVMMGxickJYMGNLUW5WamRVSTBiY0RCWDBjS1F1NWRjVUl4VE1YQlgwY0tRbUlTYlVKTUg4bkJYMGNLUWlXU2FFSVUxOHZCWDBjS1FtVHZZMEtEYU0zQlgwY0tRdGM4WDBKT3pjM0JYMGNLUW5TTldrTGtBODNCWDBjS1FpWDBWVUpuRDh2QlgwY0tRbS9QVVVKaWpzYkJYMGNLUW1TdlRVTDBkY0xCWDBjS1FtVFpTVUlMWGIzQlgwY0tRdVZjUmtKTldMZkJYMGNLUXY5SFEwTDVmN0RCWDBjS1FoNm5RRUsxNzZqQlgwY0tRdVNFUGtJS3hxREJYMGNLUXUzcFBFTHlJNWpCWDBjS1FyTGNPMEpBTEkvQlgwY0tRbmhoTzBJdEE0YkJYMGNLUWlwNk8wSnZtM25CWDBjS1FtVW1QRUw4WVdmQlgwY0tRbkpqUFVMRW8xWEJYMGNLUWxNc1AwSkVxRVRCWDBjS1F0QjVRVUlVdERUQlgwY0tRcVJDUkVLdEJ5YkJYMGNLUW9sN1IwSSszaGpCWDBjS1FvUVhTMExyYkEzQlgwY0tRdnNIVDBMdDRRUEJYMGNLUWhBOVUwSi94L2pBWDBjS1FydWxWMEpnSWU3QVgwY0tRamN3WEVKMS9PZkFYMGNLUWl2S1lFSjdjZWJBWDBjS1FnbGhaVUt2aHVuQVgwY0tRa1BpYVVLZkwvSEFYMGNLUXE4N2JrS0RUZjNBWDBjS1FybGJja0twMXdiQlgwY0tRcnN4ZGtKMUNSSEJYMGNLUWptdWVVTDdFaDNCWDBjS1FpTERmRUtrd3lyQlgwY0tRZ0JrZjBJcDVEbkJYMGNLUWgzRGdFS0ROMHJCWDBjS1FwaVFnVUsxZTF2QlgwY0tRalVYZ2tJV2EyM0JYMGNLUXROVWdrSTB2WC9CWDBjS1FudElna0lXRkluQlgwY0tRbDN5Z1VMR01KTEJYMGNLUXRkVGdVTG5ENXZCWDBjS1FtWnZnRUttamFQQlgwY0tRa3VSZmtLN2g2dkJYMGNLUW5ySWUwTHozYkxCWDBjS1FwU1BlRUtyY3JuQlgwY0tRcHZ6ZEVKVks3L0JYMGNLUWlJRGNVTFY4TVBCWDBjS1FoRE9iRUxtcjhmQlgwY0tRbVJsYUVKeldjckJYMGNLUXVmYVkwS3Y0c3ZCWDBjS1F2SkFYMEp2UmN6QlgwY0tRaFdxV2tJWmdNdkJYMGNLUXRzb1ZrTGZsY25CekgwSlFxTk5YMExhaWNmQnpIMEpRcEtiWTBKNkxjZkJ6SDBKUXBnQ1cwSkEwY2JCekgwSlFzN0xWa0tyQnNYQnpIMEpRbHJlVGtKMlhMN0J6SDBKUXJ4SFMwTEhsN25CekgwSlF0Y0VTRUo0OXJQQnpIMEpRdGtpUlVJOGo2M0J6SDBKUW02dVFFSWoyWjdCekgwSlF2MHRQMEt0eFpiQnpIMEpRaUl5UGtJcFlvN0J6SDBKUXR5K1BVSnYwSVhCekgwSlFxcWZQMExXd0ZqQnpIMEpRaFIzUGtMbVdXbkJ6SDBKUWc1TFFVTHAzVWpCekgwSlFvQnlRMEpVOFRuQnpIMEpRbEp4VEVJZ014WEJ6SDBKUXZvUVNVSm01eC9CekgwSlFyTWdVRUxPUlF6QnpIMEpRa1FRVkVKdVF3WEJ6SDBKUW51OVlFTE9YL25BekgwSlFvMXZYRUpLMGZyQXpIMEpRb2NJWlVJU1F2ekF6SDBKUWxFL2FVSTZ0Z0hCekgwSlFzUXNjVUtqQ2cvQnpIMEpRbVREZEVML2t4akJ6SDBKUWtnR2VFS2sxaVBCekgwSlFrZm9la0ljcFREQnpIMEpRckJjZjBKUUVVN0J6SDBKUXBCdWdFSTZPRjdCekgwSlFuM3NnRUpMLzI3QnpIMEpRaUltZ1VKWkVZREJ6SDBKUXJzMWdFSmVnWm5CekgwSlFnYktnRUxUTkpIQnpIMEpRaEhBZmtMUmNxSEJ6SDBKUXB5WWZFSWI2YWpCekgwSlFzMlpjMEk1U0x2QnpIMEpRaUw2ZGtJWTdyWEJ6SDBKUW1ycWIwTGp2ci9CekgwSlF0djZhMElQUU1QQnh2b0RRbzllWDBKcU9zSEJ4dm9EUWg1SFkwS0k1c0RCeHZvRFFwMTRXMExLa3NEQnh2b0RRZytsVjBKbDhyN0J4dm9EUWt4eVVFSW01YmpCeHZvRFFqRXdUVUxBa0xUQnh2b0RRaGc2U2tJR2RLL0J4dm9EUXYrYlIwS1dvNm5CeHZvRFFueVFRMEx3UjV6Qnh2b0RRbWd6UWtLbjhwVEJ4dm9EUXJoT1FVS3hWSTNCeHZvRFFnem1RRUxJaklYQnh2b0RRcCthUWtLWTUxekJ4dm9EUWxHTlFVTEgrV3ZCeHZvRFFyUWVSRUxHZWs3Qnh2b0RRbW9UUmtLcDdVREJ4dm9EUW1ZK1RrSytrQi9CeHZvRFFvOHRTMEx4U0NuQnh2b0RRditXVVVLbmRSZkJ4dm9EUXVBcFZVSlhHQkhCeHZvRFFwQ3NZRUxIVGduQnh2b0RRdjdEWEVLSDlnbkJ4dm9EUW9PU1pFTDFuUXJCeHZvRFFnOW1hRUxGM2czQnh2b0RRdENZYjBKRStSbkJ4dm9EUXU3YWNrSU1vaUxCeHZvRFFnZlJkVUtIMnl6Qnh2b0RRaUp2ZUVKbmZEakJ4dm9EUXFONmZFSzRNMVBCeHZvRFFyWFhmVUpDM21IQnh2b0RRbVM4ZmtJOEduSEJ4dm9EUWhNbGYwSUJWWURCeHZvRFFuOXdmVUwrYlpmQnh2b0RRc3g5ZmtMazVJL0J4dm9EUW0zc2UwSmZwSjdCeHZvRFFyTDNlVUx3YXFYQnh2b0RRcm5NY1VKcUdiYkJ4dm9EUW92ZGRFSlVQYkhCeHZvRFFoOTBia0wzSnJyQnh2b0RRai9oYWtLY1ZiM0J4dm9EUW9vaVowS0VtTC9CNktMMlFlUWNZMElSdzczQjZLTDJRVTNHWmtMNGhiekI2S0wyUVFablgwS3hFcjdCNktMMlFaK3pXMEtRYzczQjZLTDJRYkFSV0VKQzZMdkJ4dm9EUWxEelUwS3hYN3pCNktMMlFkbVBWRUxyZHJuQjZLTDJRVVk4VVVKOUtiYkI2S0wyUVd3a1RrSTlEYkxCNktMMlFibFVTMExPTXEzQjZLTDJRWkxZU0VMRHJhZkJ4dm9EUW5KZ1JVTHFOcVBCNktMMlFmbTVSa0ptbEtIQjZLTDJRWUlCUlVKVy81ckI2S0wyUVJ5MlEwSWxDWlRCNktMMlFRUGRRa0wzell6QjZLTDJRYU41UWtMemFvWEJ4dm9EUWdiN1FFS3BkSHZCNktMMlFZNk5Ra0xlKzN2QjZLTDJRWEFZUTBLM1NXM0I2S0wyUVJvWVJFTDQrbDdCNktMMlFZV0lSVUkwU1ZIQjZLTDJRZDlqUjBMVWEwVEI2S0wyUWE2aVNVTENsampCeHZvRFF1UndTRUwyZGpUQjZLTDJRZHM3VEVLMitTM0I2S0wyUWU4a1QwS052eVRCNktMMlFTVlNVa0tVRFIzQjZLTDJRYTYyVlVMTEFoZkI2S0wyUWRCRVdVS250eExCeHZvRFFwUG9XRUtNa2d6QjZLTDJRVG51WEVKNFBSREI2S0wyUVJ1a1lFSTNuZy9CNktMMlFZRlhaRUpxM0JEQjZLTDJRVy81WjBJTDh4UEJ4dm9EUXM0WGJFSW1CQlBCNktMMlFVUjdhMEt2MVJqQjZLTDJRZGZPYmtLV2NCL0I2S0wyUWJUbWNVSVNxU2ZCNktMMlFXYTJkRUw1WFRIQjZLTDJRWTh5ZDBJTWFEekJ4dm9EUXFxcWVrSy9WVVhCNktMMlFTVlJlVUxEbWtqQjZLTDJRWjBKZTBMdHhGWEI2S0wyUVFCVmZFSkZzV1BCNktMMlFSa3VmVUt5SjNMQjZLTDJRWHVSZlVMV2RvREI2S0wyUVpCOWZVTGM0NGZCeHZvRFFoZ1FmMEozSjRqQjZLTDJRYTN5ZkVMclBJL0I2S0wyUVFUemUwSk9aSmJCNktMMlFaeUNla0ltUFozQjZLTDJRVHluZUVMYXE2UEI2S0wyUVc5b2RrSnJscW5CeHZvRFFqaWFkMEpScHF2QjZLTDJRVURQYzBMeDVLN0I2S0wyUVMvbWNFSURnclBCNktMMlFmcTRiVUlBVzdmQjZLTDJRWEpVYWtKaFlMckIraW5pUVd6MFprSS9ENzdCK2luaVFRRXlZMExMVkwvQitpbmlRY3RpWDBLUHByL0IraW5pUVI2V1cwSXVBNy9CK2luaVFWL2JWMEpUYmIzQitpbmlRWlJCVkVKUDY3ckIraW5pUVVyWFVFSlNoN2ZCK2luaVFVNnFUVUwvVHJQQitpbmlRV2ZIU2tKcVU2N0IraW5pUVVrNlNFS3RxS2pCK2luaVFUY05Sa0tuWmFMQitpbmlRZjlJUkVLam81dkIraW5pUWNMMFFrTG1mWlRCK2luaVFkNFZRa0pVRVkzQitpbmlRZGV2UVVMZGU0WEIraW5pUVVuRVFVSkZ1SHZCK2luaVFlQlNRa0svb1d6QitpbmlRVjFaUTBKSThWM0IraW5pUVp6VFJFTDk0VS9CK2luaVFhVzdSa0srckVMQitpbmlRY29KU1VMYmhqYkIraW5pUWJhMFMwSlVvU3ZCK2luaVFhcXhUa0lsS0NMQitpbmlRWlAwVVVLZFFSckIraW5pUVVkd1ZVS1JEUlRCK2luaVFiRVdXVUlacFEvQitpbmlRUnpaWEVML0dRM0IraW5pUVZhb1lFSi9kZ3pCK2luaVFRSjFaRUl2dlEzQitpbmlRYjh2YUVMbjZCREIraW5pUVlySmEwTHE3QlhCK2luaVFkTXpiMEx0dEJ6QitpbmlRZEZnY2tLUEpTWEIraW5pUWJkRGRVTEFIQy9CK2luaVFkalFkMEk1Y2pyQitpbmlRZWo5ZVVKQitFYkIraW5pUVNEQ2UwSlNmRlRCK2luaVFWb1dmVUxEeDJMQitpbmlRVDMxZlVMNG9ISEIraW5pUVVkYmZrTHJaWURCK2luaVFkVkdma0tyQllqQitpbmlRVDI0ZlVMb2tJL0IraW5pUWNHeGZFSWw2WmJCK2luaVFZVTNlMExEOEozQitpbmlRWGRQZVVKbWk2VEIraW5pUVZNQmQwSmZucXJCK2luaVFXVldkRUlqRWJEQitpbmlRWFJaY1VLM3piVEIraW5pUVlzV2JrTDh3TGpCK2luaVFkbWFha0wrMnJ2Qm8vM1RRV1ZsYUVKeldjckJvLzNUUWVmYVkwS3Y0c3ZCby8zVFFmTkFYMEp2UmN6Qm8vM1RRUldxV2tJWmdNdkJvLzNUUWRzb1ZrTGZsY25Cby8zVFFXN1BVVUppanNiQm8vM1RRV092VFVMMGRjTEJvLzNUUVdUWlNVSUxYYjNCby8zVFFlVmNSa0pOV0xmQm8vM1RRUUJJUTBMNWY3REJvLzNUUVNDblFFSzM3NmpCby8zVFFlU0VQa0lMeHFEQm8vM1RRZTNwUEVMdkk1akJvLzNUUWJMY08wSkJMSS9Cby8zVFFYZGhPMEl1QTRiQm8vM1RRU2g2TzBKeG0zbkJvLzNUUVdNbVBFTDRZV2ZCby8zVFFYTmpQVUxDbzFYQm8vM1RRVk1zUDBKQ3FFVEJvLzNUUWRKNVFVSVF0RFRCby8zVFFhVkNSRUt0QnliQm8vM1RRWWQ3UjBKRTNoakJvLzNUUVlNWFMwTG5iQTNCby8zVFFmd0hUMEx0NFFQQm8vM1RRUTQ5VTBKL3gvakFvLzNUUWJ1bFYwSmRJZTdBby8zVFFUY3dYRUoxL09mQW8vM1RRU3ZLWUVKN2NlYkFvLzNUUVFsaFpVS3ZodW5Bby8zVFFVUGlhVUtmTC9IQW8vM1RRYTg3YmtLRFRmM0FvLzNUUWJ0YmNrS3Ixd2JCby8zVFFic3hka0ozQ1JIQm8vM1RRVG11ZVVMN0VoM0JvLzNUUVNIRGZFS2h3eXJCby8zVFFRQmtmMElvNURuQm8vM1RRUjNEZ0VLSE4wckJvLzNUUVppUWdVSzVlMXZCby8zVFFUUVhna0lZYTIzQm8vM1RRZE5VZ2tJcXZYL0JvLzNUUVh0SWdrSVdGSW5Cby8zVFFWM3lnVUxMTUpMQm8vM1RRZFpUZ1VMa0Q1dkJvLzNUUVdkdmdFS2xqYVBCby8zVFFVcVJma0s4aDZ2Qm8vM1RRWG5JZTBMejNiTEJvLzNUUVpPUGVFS3Jjcm5Cby8zVFFadnpkRUpUSzcvQm8vM1RRU0lEY1VMVjhNUEJvLzNUUVJIT2JFTG1yOGZCby8zVFFhTEJhRUlBYk0zQm8vM1RRU0VGWkVJbkJzL0JvLzNUUVg0NFgwSW5iYy9Cby8zVFFSRnZXa0pUbjg3Qm8vM1RRVHE4VlVJQ29NekJvLzNUUWVVeVVVSW9kOG5Cby8zVFFXbmxURUtiTWNYQm8vM1RRU3JsU0VLTjRML0JvLzNUUVVSQ1JVS0ZtYm5Cby8zVFFXMExRa0xMZGJMQm8vM1RRWnBOUDBJN2txckJvLzNUUWQ0VFBVS2xEcUxCby8zVFFUaG5PMEp4RFpuQm8vM1RRV2RPT2tMOXNvL0JvLzNUUWQvTk9VSUNKWWJCby8zVFFhRG5PVUk5RkhuQm8vM1RRVVdiT2tJSEVtYkJvLzNUUWZubE8wSmdrRlBCby8zVFFYL0NQVUxVMlVIQm8vM1RRVndwUUVMa05USEJvLzNUUWRzUVEwTGo1eUhCby8zVFFUdHRSa0tBTFJUQm8vM1RRZmt3U2tJWlBnakJvLzNUUWRaTVRrTDlrL3pBby8zVFFVQ3dVa0tYOHV6QW8vM1RRWDVKVjBJcDErSEFvLzNUUWYwRlhFS1RidHZBby8zVFFhRFNZRUtiMHRuQW8vM1RRUXljWlVMRUNkM0FvLzNUUWVST2FrSVRCK1hBby8zVFFUbllia0p2cXZIQW8vM1RRYlFsYzBKYVlBSEJvLzNUUWZZbGQwSnhBZ3pCby8zVFFkcklla0tKa0JqQm8vM1RRYlAvZlVMNzF5YkJvLzNUUWNKZWdFSWluemJCby8zVFFhRjdnVUpXcGtmQm8vM1RRZk5SZ2tLM3FGbkJvLzNUUVZuZWdrS2ZYV3pCby8zVFFhQWVnMEtBZVgvQm8vM1RRYjhSZzBLeVY0bkJvLzNUUWV5M2drTEUySkxCby8zVFFaUVNna0tVR1p6Qm8vM1RRVThrZ1VMZDlLVEJvLzNUUWNEaGYwTFNScTNCby8zVFFVUDZmRUxYN2JUQm8vM1RRZDZkZVVJTnk3dkJvLzNUUVNYYWRVSzd3c0hCby8zVFFVaStjVUxLdk1iQm8vM1RRZUJhYlVJaHBjckJGYmZZUVNFRlpFSW5Ccy9CRmJmWVFhTEJhRUlBYk0zQkZiZllRWDQ0WDBJbmJjL0JGYmZZUVJGdldrSlRuODdCRmJmWVFUcThWVUlDb016QkZiZllRZVV5VVVJb2Q4bkJGYmZZUVdubFRFS2JNY1hCRmJmWVFTcmxTRUtONEwvQkZiZllRVVJDUlVLRm1ibkJGYmZZUVcwTFFrTExkYkxCRmJmWVFacE5QMEk3a3FyQkZiZllRZDRUUFVLbERxTEJGYmZZUVRobk8wSnhEWm5CRmJmWVFXZE9Pa0w5c28vQkZiZllRZC9OT1VJQ0pZYkJGYmZZUWFEbk9VSTlGSG5CRmJmWVFVV2JPa0lIRW1iQkZiZllRZm5sTzBKZ2tGUEJGYmZZUVgvQ1BVTFUyVUhCRmJmWVFWd3BRRUxrTlRIQkZiZllRZHNRUTBMajV5SEJGYmZZUVR0dFJrS0FMUlRCRmJmWVFma3dTa0laUGdqQkZiZllRZFpNVGtMOWsvekFGYmZZUVVDd1VrS1g4dXpBRmJmWVFYNUpWMElwMStIQUZiZllRZjBGWEVLVGJ0dkFGYmZZUWFEU1lFS2IwdG5BRmJmWVFReWNaVUxFQ2QzQUZiZllRZVJPYWtJVEIrWEFGYmZZUVRuWWJrSnZxdkhBRmJmWVFiUWxjMEphWUFIQkZiZllRZllsZDBKeEFnekJGYmZZUWRySWVrS0prQmpCRmJmWVFiUC9mVUw3MXliQkZiZllRY0plZ0VJaW56YkJGYmZZUWFGN2dVSldwa2ZCRmJmWVFmTlJna0szcUZuQkZiZllRVm5lZ2tLZlhXekJGYmZZUWFBZWcwS0FlWC9CRmJmWVFiOFJnMEt5VjRuQkZiZllRZXkzZ2tMRTJKTEJGYmZZUVpRU2drS1VHWnpCRmJmWVFVOGtnVUxkOUtUQkZiZllRY0RoZjBMU1JxM0JGYmZZUVVQNmZFTFg3YlRCRmJmWVFkNmRlVUlOeTd2QkZiZllRU1hhZFVLN3dzSEJGYmZZUVVpK2NVTEt2TWJCRmJmWVFlQmFiVUlocGNyQmQxTUpRazVwWTBKUWpjTEI3ZzRLUWpXa1kwSW43c2JCN2c0S1FsSGRaMEp5Z01YQjdnNEtRaHJjVWtKYitjSEI3ZzRLUXBUblZrS1F5c1RCZDFNSlFpQi9WMElRamNEQjdnNEtRdm9GVDBKUktyN0JkMU1KUXJvZlVFSktXcnJCN2c0S1FqL25Ra0ozYmFiQjdnNEtRZ1ZaUlVJeGRxM0JkMU1KUXFJU1IwSW11cXJCN2c0S1FrSHJRRUlUMXA3QmQxTUpRZ3Z1UWtLdUM1M0I3ZzRLUWdrWFBrS3N4SHJCN2c0S1FoSUFQa0xGOG9YQmQxTUpRaFV6UUVLVnc0WEI3ZzRLUWphM1BrTE4wV25CZDFNSlFtZmVRRUp5cG12QjdnNEtRakdyUTBJU3NEckJkMU1KUW95QVJVSnZqei9CN2c0S1FoOUNSa0tlQ2kzQjdnNEtRa1pCU1VJTHpTREJkMU1KUWxTNlNrSWVXQ2ZCN2c0S1FpRXdWRUxpVUFiQmQxTUpRbzcwVkVLTGtRN0I3ZzRLUXN0SldFSThYUUhCN2c0S1F1ZUNYRUtwQS8zQWQxTUpRczY5WEVLRVF3ZkI3ZzRLUW9jL2FVTDZ5QUxCZDFNSlF2Mm5hRUw4UXd2QjdnNEtRZ05MYlVKYmF3akI3ZzRLUWlBaGNVSjhDUkRCZDFNSlFtQUhjRUtIcVJmQjdnNEtRaHJPZWtLK2NUSEJkMU1KUW5zVWVVTFQ2VGJCN2c0S1F0dy9mVUl3Z3ovQjdnNEtRdG83ZjBMOXNVN0JkMU1KUWhFNWZVTEdSbExCN2c0S1FvVVRnVUpJUElEQmQxTUpRZ2owZjBKNWE0REI3ZzRLUWdvSWdVSzh6SWpCZDFNSlFyUklmMExVVzVEQjdnNEtRdk8zZ0VJalJwSEJkMU1KUW95bWVrSlRaNmJCN2c0S1F1aDdmRUlCMTZqQjdnNEtRdjdrZVVMQXFhL0JkMU1KUXNSc2RVSUJnN0xCN2c0S1F0WGxka0tLeUxYQmQxTUpRcEF5YTBKRzVyN0I3ZzRLUXZ6MmEwS2JCc1BCTnpNRVFzTWFZMExidHJ6Qk56TUVRaEd4WmtJNWdMdkJOek1FUXFIWlZFSWlnYmpCTnpNRVFpdEpXRUs1NWJyQk56TUVRbWlYVVVMc1JMWEJOek1FUXV4TFIwSTFHNkhCTnpNRVFuVmZTVUxBRktmQk56TUVRbkNjUlVKNnFKckJOek1FUWtjMVEwTEdmSHpCTnpNRVFzUWhRMEtxaElYQk56TUVRbFM5UTBKS0YyN0JOek1FUWx2eVIwS1ZEa2JCTnpNRVFuVWxTa0k3ZHpyQk56TUVRaFN4VEVLTkVUREJOek1FUW5MNlZVSnZraG5CTnpNRVFnaDJXVUt2WFJYQk56TUVRbGNNWFVKdThCTEJOek1FUXZIZFowS25raGJCTnpNRVFueE5hMExRV3h2Qk56TUVRclNQYmtKQjFDSEJOek1FUXFqSGRrS2VORDdCTnpNRVFqRGJlRUt5SjByQk56TUVRcTJLZWtJdERWZkJOek1FUWxnRmZVSmxxb0RCTnpNRVF0WHhmRUt3OElmQk56TUVRc2RwZkVKb0k0L0JOek1FUXIwMGVFSy9KNlBCTnpNRVFxWUJka0owODZqQk56TUVRZ1YyYzBKTEpxN0JOek1FUXFvc2FrTFhaYm5CMDVVS1F0Q01jVUpkUlgzQkY1VUtRcEs2YjBMU3JJWEIwNVVLUWtxZGNVSk9Bb2JCRjVVS1F0eXJiMExqTG43QjN2Y0RRcEs2YjBMU3JJWEJGOWdEUXRDTWNVSmRSWDNCRjlnRFFrcWRjVUpPQW9iQjN2Y0RRdHlyYjBMakxuN0IwNVVLUW9rcGIwSkVpR0hCRjVVS1FrWHVia0lHV25IQjA1VUtRbm00Y0VKVDVtN0JGNVVLUWhTS2JVS2VhbVhCM3ZjRFFrWHVia0lHV25IQkY5Z0RRb2twYjBKRWlHSEJGOWdEUW5tNGNFSlQ1bTdCM3ZjRFFoU0tiVUtlYW1YQjA1VUtRblR4YkVMR3dGWEJGNVVLUXR5T2EwSTE1bHJCRjlnRFFuVHhiRUxHd0ZYQjN2Y0RRdHlPYTBJMTVsckIwNVVLUW5MdlprSVI3VVRCRjVVS1FzY1NhVUoyUWxMQjA1VUtRZ3NwYWtLZEUwekJGNVVLUXFReFprSUs0RXZCM3ZjRFFzY1NhVUoyUWxMQkY5Z0RRbkx2WmtJUjdVVEJGOWdEUWdzcGFrS2RFMHpCM3ZjRFFxUXhaa0lLNEV2QjA1VUtRcnRvWTBJZm5VREJGNVVLUXFVTFkwSmhCa2pCRjlnRFFydG9ZMElmblVEQjN2Y0RRcVVMWTBKaEJrakJGOWdEUWwrOFgwSUpWRC9CM3ZjRFFvSi9YRUpuZTBqQkY5Z0RRblFUWEVJeElFSEIzdmNEUWduRVgwS080RWJCRjVVS1FvSi9YRUpuZTBqQjA1VUtRbCs4WDBJSlZEL0IwNVVLUW5RVFhFSXhJRUhCRjVVS1FnbkVYMEtPNEViQjN2Y0RRcHRpV1VMN3hFekJGOWdEUXU2V1dFSjU3VVhCRjVVS1FwdGlXVUw3eEV6QjA1VUtRdTZXV0VKNTdVWEJGOWdEUXMxdFZVSXNoazNCM3ZjRFFzWW5WRUtCaUZ6QkY5Z0RRbkM3VWtKRmxWZkIzdmNEUWl5UVZrSlJqVlBCRjVVS1FzWW5WRUtCaUZ6QjA1VUtRczF0VlVJc2hrM0IwNVVLUW5DN1VrSkZsVmZCRjVVS1FpeVFWa0pSalZQQjN2Y0RRbHRFVWtJVlVtZkJGOWdEUWdLZVVFSTdxbVBCRjVVS1FsdEVVa0lWVW1mQjA1VUtRZ0tlVUVJN3FtUEJGOWdEUWk0dFQwTGpQWEhCM3ZjRFFqbGFVRUpYTDREQkY5Z0RRZzU1VGtKWHVIL0IzdmNEUWd2N1VFSlljWFBCRjVVS1FqbGFVRUpYTDREQjA1VUtRaTR0VDBMalBYSEIwNVVLUWc1NVRrSlh1SC9CRjVVS1FndjdVRUpZY1hQQjN2Y0RRdkZvVUVLNHhJYkJGOWdEUW91SlRrTExPNGZCRjVVS1F2Rm9VRUs0eEliQjA1VUtRb3VKVGtMTE80ZkJGOWdEUXVKZFQwSlFhNDdCM3ZjRFFyaUtVa0xYSnBQQkY5Z0RRdEhzVUVKVkdwWEIzdmNEUW9jbVVVSWxMNDNCRjVVS1FyaUtVa0xYSnBQQjA1VUtRdUpkVDBKUWE0N0IwNVVLUXRIc1VFSlZHcFhCRjVVS1FvY21VVUlsTDQzQjN2Y0RRdStGVkVJTWFaakJGOWdEUXVRa1UwSVYvcHJCRjVVS1F1K0ZWRUlNYVpqQjA1VUtRdVFrVTBJVi9wckJGOWdEUWxEdFZVS28xSi9CM3ZjRFFpampXVUloN0ovQkY5Z0RRdWNtV1VMdlo2UEIzdmNEUWdVQ1YwTHJ1cHpCRjVVS1FpampXVUloN0ovQjA1VUtRbER0VlVLbzFKL0IwNVVLUXVjbVdVTHZaNlBCRjVVS1FnVUNWMExydXB6QjN2Y0RRaVlKWFVMMzJLSEJGOWdEUXAydFhFTHBqNlhCRjVVS1FpWUpYVUwzMktIQjA1VUtRcDJ0WEVMcGo2WEIwNVVLUXVVQ1pFSmZUcVhCRjVVS1FzRlFZRUxnYTZMQjA1VUtRdnBaWUVKek5LYkJGNVVLUWt1VlkwSnpucUhCM3ZjRFFzRlFZRUxnYTZMQkY5Z0RRdVVDWkVKZlRxWEJGOWdEUXZwWllFSnpOS2JCM3ZjRFFrdVZZMEp6bnFIQjA1VUtRbXgvWjBLNjU2TEJGNVVLUWpDeVprS29lWi9CRjlnRFFteC9aMEs2NTZMQjN2Y0RRakN5WmtLb2VaL0IwNVVLUXVwYWJVTFdFNXJCRjVVS1FxQ0VhVUtBRlp6QjA1VUtRbzZvYWtKa0c1L0JGNVVLUWdidGEwTG1sNWZCM3ZjRFFxQ0VhVUtBRlp6QkY5Z0RRdXBhYlVMV0U1ckJGOWdEUW82b2FrSmtHNS9CM3ZjRFFnYnRhMExtbDVmQjA1VUtRbGw0YjBKYUNaVEJGNVVLUW5IUWJVSWRNNUxCRjlnRFFsbDRiMEphQ1pUQjN2Y0RRbkhRYlVJZE01TEJGNVVLUXNFWmIwSjZJNHpCMDVVS1FpM3BjRUtHUDQzQjN2Y0RRc0VaYjBKNkk0ekJGOWdEUWkzcGNFS0dQNDNCU3k0RFFwSzZiMExTcklYQlN5NERRc0VaYjBKNkk0ekJTeTREUXR5cmIwTGpMbjdCU3k0RFFrWHVia0lHV25IQlN5NERRaFNLYlVLZWFtWEJTeTREUXR5T2EwSTE1bHJCU3k0RFFzY1NhVUoyUWxMQlN5NERRcVF4WmtJSzRFdkJTeTREUXFVTFkwSmhCa2pCU3k0RFFnbkVYMEtPNEViQlN5NERRb0ovWEVKbmUwakJTeTREUXB0aVdVTDd4RXpCU3k0RFFpeVFWa0pSalZQQlN5NERRc1luVkVLQmlGekJTeTREUWx0RVVrSVZVbWZCU3k0RFFndjdVRUpZY1hQQlN5NERRamxhVUVKWEw0REJTeTREUXZGb1VFSzR4SWJCU3k0RFFvY21VVUlsTDQzQlN5NERRcmlLVWtMWEpwUEJTeTREUXUrRlZFSU1hWmpCU3k0RFFnVUNWMExydXB6QlN5NERRaWpqV1VJaDdKL0JTeTREUWlZSlhVTDMyS0hCU3k0RFFzRlFZRUxnYTZMQlN5NERRa3VWWTBKem5xSEJTeTREUWpDeVprS29lWi9CU3k0RFFxQ0VhVUtBRlp6QlN5NERRZ2J0YTBMbWw1ZkJTeTREUW5IUWJVSWRNNUxCc3VuOFFaeFFhMExpMG9uQnN1bjhRUURKYTBJcS9JVEJzdW44UWZ1OWEwSjBEb0RCc3VuOFFRNHdhMExJZ1hiQnN1bjhRV1lsYWtKd2ttM0JzdW44UWErcGFFTFdzbVhCc3VuOFFYL05aa0lTTzEvQnN1bjhRYWlsWkVLQ2MxckJzdW44UVVaS1lrS2VrVmZCc3VuOFFiblZYMEtwdFZiQnN1bjhRWGxqWFVJNTZWZkJzdW44UWVZT1cwTG1IbHZCc3VuOFFSTHlXRUxDTW1EQnN1bjhRWjhrVjBMNzYyYkJzdW44UWJpNlZVSmUvMjdCc3VuOFFUSEVWRUtNRW5qQnN1bjhRY3hMVkVMOTM0REJzdW44UWRCV1ZFS3p6WVhCc3VuOFFiN2tWRUpDbTRyQnN1bjhRV2J2VlVMdkVvL0JzdW44UVJ4clYwSzdBcFBCc3VuOFFVeEhXVUtjUHBiQnN1bjhRU1J2VzBKbW9wakJzdW44UVlYS1hVSllFNXJCc3VuOFFSRS9ZRUpUZ1pyQnN1bjhRVkd4WWtLSzU1bkJzdW44UWVZRlpVS3pUSmpCc3VuOFFic2laMExGd3BYQnN1bjhRUzN3YUVJcFpwTEJzdW44UVJSYWFrSjRYSTdCWmNQNVFRREphMElxL0lUQlpjUDVRWnhRYTBMaTBvbkJaY1A1UWZ1OWEwSjBEb0RCWmNQNVFRNHdhMExJZ1hiQlpjUDVRV1lsYWtKd2ttM0JaY1A1UWErcGFFTFdzbVhCWmNQNVFYL05aa0lTTzEvQlpjUDVRYWlsWkVLQ2MxckJaY1A1UVVaS1lrS2VrVmZCWmNQNVFiblZYMEtwdFZiQlpjUDVRWGxqWFVJNTZWZkJaY1A1UWVZT1cwTG1IbHZCWmNQNVFSTHlXRUxDTW1EQlpjUDVRWjhrVjBMNzYyYkJaY1A1UWJpNlZVSmUvMjdCWmNQNVFUSEVWRUtNRW5qQlpjUDVRY3hMVkVMOTM0REJaY1A1UWRCV1ZFS3p6WVhCWmNQNVFiN2tWRUpDbTRyQlpjUDVRV2J2VlVMdkVvL0JaY1A1UVJ4clYwSzdBcFBCWmNQNVFVeEhXVUtjUHBiQlpjUDVRU1J2VzBKbW9wakJaY1A1UVlYS1hVSllFNXJCWmNQNVFSRS9ZRUpUZ1pyQlpjUDVRVkd4WWtLSzU1bkJaY1A1UWVZRlpVS3pUSmpCWmNQNVFic2laMExGd3BYQlpjUDVRUzN3YUVJcFpwTEJaY1A1UVJSYWFrSjRYSTdCcU9QeFFRREphMElxL0lUQnFPUHhRWnhRYTBMaTBvbkJxT1B4UWZ1OWEwSjBEb0RCcU9QeFFRNHdhMExJZ1hiQnFPUHhRV1lsYWtKd2ttM0JxT1B4UWErcGFFTFdzbVhCcU9QeFFYL05aa0lTTzEvQnFPUHhRYWlsWkVLQ2MxckJxT1B4UVVaS1lrS2VrVmZCcU9QeFFiblZYMEtwdFZiQnFPUHhRWGxqWFVJNTZWZkJxT1B4UWVZT1cwTG1IbHZCcU9QeFFSTHlXRUxDTW1EQnFPUHhRWjhrVjBMNzYyYkJxT1B4UWJpNlZVSmUvMjdCcU9QeFFUSEVWRUtNRW5qQnFPUHhRY3hMVkVMOTM0REJxT1B4UWRCV1ZFS3p6WVhCcU9QeFFiN2tWRUpDbTRyQnFPUHhRV2J2VlVMdkVvL0JxT1B4UVJ4clYwSzdBcFBCcU9QeFFVeEhXVUtjUHBiQnFPUHhRU1J2VzBKbW9wakJxT1B4UVlYS1hVSllFNXJCcU9QeFFSRS9ZRUpUZ1pyQnFPUHhRVkd4WWtLSzU1bkJxT1B4UWVZRlpVS3pUSmpCcU9QeFFic2laMExGd3BYQnFPUHhRUzN3YUVJcFpwTEJxT1B4UVJSYWFrSjRYSTdCWTdzTlFzQ1ZhMEpXR0lEQlk3c05RaFQvYWtMVzJJVEJZN3NOUXAyZ2EwSWE5WVRCWTdzTlFzLzBha0xiUDREQlk3c05Rc2FPYWtKZFhJbkJZN3NOUXRZcGEwSXV1NG5CWTdzTlFzMm9hVUx4bDQzQlk3c05RcDQyYWtJcU5ZN0JZN3NOUWpWWGFFSTNYSkhCWTdzTlFwWFJhRUw0TUpMQlk3c05Rc0NvWmtJSGY1VEJZN3NOUWxVS1owSUhncFhCWTdzTlFqMndaRUpPM1piQlk3c05Rc1AwWkVJNUE1akJZN3NOUXJtRFlrS05YSmpCWTdzTlFqT29Za0tLbUpuQlk3c05Rb2M3WUVJRTdKakJZN3NOUWxzK1lFSkRNSnJCWTdzTlFrTFNYVUxDdzVuQlk3c05RalB4WFVKcmhaakJZN3NOUXZ0K1cwTEZWNWpCWTdzTlFsYStXMEpBTFpmQlk3c05Rb3hlV1VJeS9KWEJZN3NOUW82N1dVS044cFRCWTdzTlFzS0lWMEp4eTVMQlk3c05RbG4vVjBKRTdwSEJZN3NOUWlVU1ZrSXQ2WTdCWTdzTlFpS2RWa0ltUW83Qlk3c05RaE1MVlVMZWdJckJZN3NOUW1Pa1ZVSkpGNHJCWTdzTlFneC9WRUxTdzRYQlk3c05RdjBmVlVKTW5JWEJZN3NOUWk1MFZFSVA1NERCWTdzTlFyWVZWVUpTQTRIQlk3c05RZ1NHVlVLVy8zakJZN3NOUXZUcVZFTDBRWGpCWTdzTlF2OXJWa0pxaUhEQlk3c05RaTNlVlVMNlRXL0JZN3NOUXBlOVYwTGgvMmpCWTdzTlFqZERWMEpjVm1mQlk3c05RZ3hzV1VJOHVtTEJZN3NOUW5jS1dVSS90R0RCWTdzTlFvNWtXMEt1L1YzQlk3c05RZ2NnVzBMYnNWdkJZN3NOUWhPUlhVSXcvMXJCWTdzTlFwbHNYVUk0aDFqQlk3c05Ra0xaWDBKRjRGbkJZN3NOUW03V1gwTEhWMWZCWTdzTlFvdENZa0xLTUZqQlk3c05RcGtqWWtKNXJWckJZN3NOUXRPVlpFTEZDRnZCWTdzTlFuaFdaRUxPWFYzQlk3c05RaisyWmtMa3YxL0JZN3NOUWo1WlprSXYwMkhCWTdzTlFnbU1hRUp0SVdiQlk3c05Rbk1WYUVMRTIyZkJZN3NOUXFjQ2FrTDA1VzNCWTdzTlFxcDNhVUlBTkcvQlk3c05Rcm9KYTBLU3RuYkJZN3NOUW1sd2FrSzdpWGZCMzNnTVFwaERaa0xhQklUQjMzZ01Rc0k5WmtKRGFJSEIzM2dNUXN3RFprSkFsWWJCMzNnTVFpbUJaVUxJL0lqQjMzZ01Ra211WWtMMFFJN0IzM2dNUXQvTVkwS1A2SXpCMzNnTVFpaHlZVUtwR28vQjMzZ01RazRtWUVJbmJJL0IzM2dNUWovWlhrTGdNWS9CMzNnTVFoWjFYRUl2S28zQjMzZ01Rc0o0VzBKOWM0dkIzM2dNUW95dldrSjJYWW5CMzNnTVFqOGlXa0p1LzRiQjMzZ01RZ25YV1VMaGM0VEIzM2dNUXFPVFdrTEJ2bm5CMzNnTVFnQVJXa0xTalg3QjMzZ01RbWhUVzBKQmQzWEIzM2dNUXV4SFhFSXM1M0hCMzNnTVFvSm1YVUppTm0vQjMzZ01Rbnp1WDBMLzMyekIzM2dNUW80N1lVS1FWRzNCMzNnTVFrdDdZa0tTMjI3QjMzZ01Rck9mWTBMcVkzSEIzM2dNUWdxY1pFSlQwWFRCMzNnTVFvM3laVUowdVgzQjMzZ01RaENpWlVLVzZJUEIzM2dNUXRHY1pVTElqNEhCMzNnTVFydG9aVUp2Tm9iQjMzZ01RbGZ6WkVLT1g0akIzM2dNUWdWSFpFTEVTNHJCMzNnTVFtWEJaRUtISUl2QjMzZ01Ra3ByWTBLUTVZdkIzM2dNUXNKcFlrSUxHNDNCMzNnTVFxMU5ZVUtzM28zQjMzZ01RbmtqWUVMb0o0N0IzM2dNUWkvNFhrS0o4NDNCMzNnTVFvS1pYVUpmYm83QjMzZ01RdDdZWFVMYVE0M0IzM2dNUWhqU1hFS0lJSXpCMzNnTVFsZnZXMEpUbG9yQjMzZ01Rb2c2VzBKdnRvakIzM2dNUW8rN1drTGFsWWJCMzNnTVF2cDNXa0pjVElUQjMzZ01RalRSV1VKTTE0SEIzM2dNUXIxeVdrS1A4NEhCMzNnTVFoQ3NXa0oxUzMvQjMzZ01RblFoVzBJeitYckIzM2dNUXNmTlcwTEZJSGZCMzNnTVFvT3BYRUlyN1hQQjMzZ01RZ21yWFVJMWduSEIzM2dNUWgzSFhrTDErbS9CMzNnTVFxT2lYa0w3Z20zQjMzZ01RbER4WDBKOWFHL0IzM2dNUXAwY1lVSSswVy9CMzNnTVF2QTdZa0tjTUhIQjMzZ01RckpDWTBJMmQzUEIzM2dNUW5NbFpFS3BpM2JCMzNnTVFrRmxaVUpsL1hqQjMzZ01Ra1RhWkVKelMzckIzM2dNUWoxWlpVS2RqSDdCUFNnTVFreFJaVUowMm9QQlBTZ01RbGxNWlVLTG80SEJQU2dNUWpRYlpVSUlCNGJCUFNnTVFtK3NaRUx5RUlqQlBTZ01RdFFKWkVKazRZbkJQU2dNUW44NlkwSVFaSXZCUFNnTVFuNUhZa0lXaUl6QlBTZ01RbkE3WVVLdFFJM0JQU2dNUWc4aVlFTEloWTNCUFNnTVFxZ0hYMEplVkkzQlBTZ01Rb3o0WFVLWnJvekJQU2dNUXBnQVhVSzBtNHZCUFNnTVFxTXFYRUs4SjRyQlBTZ01RZ2VBVzBMc1lvakJQU2dNUWpnSVcwSVFZWWJCUFNnTVFuUElXa0taT0lUQlBTZ01Rb0REV2tLeUFZTEJQU2dNUXBqNVdrSkZxbi9CUFNnTVFsNW9XMEp1bG52QlBTZ01RdmdLWEVLSDlYZkJQU2dNUWszYVhFSW84SFRCUFNnTVFrek5YVUlncUhMQlBTZ01RbHJaWGtMME5uSEJQU2dNUXJyeVgwSytySERCUFNnTVFpVU5ZVUtWRDNIQlBTZ01Ra0ljWWtJZlczTEJQU2dNUWpJVVkwTGNnSFRCUFNnTVFpanFZMExXYUhmQlBTZ01Rc1dVWkVKNzhuckJQU2dNUXBRTVpVSXg5bjdCN2Y4TFFsbE1aVUtMbzRIQjdmOExRa3hSWlVKMDJvUEI3ZjhMUWpRYlpVSUlCNGJCN2Y4TFFtK3NaRUx5RUlqQjdmOExRdFFKWkVKazRZbkI3ZjhMUW44NlkwSVFaSXZCN2Y4TFFuNUhZa0lXaUl6QjdmOExRbkE3WVVLdFFJM0I3ZjhMUWc4aVlFTEloWTNCN2Y4TFFxZ0hYMEplVkkzQjdmOExRb3o0WFVLWnJvekI3ZjhMUXBnQVhVSzBtNHZCN2Y4TFFxTXFYRUs4SjRyQjdmOExRZ2VBVzBMc1lvakI3ZjhMUWpnSVcwSVFZWWJCN2Y4TFFuUElXa0taT0lUQjdmOExRb0REV2tLeUFZTEI3ZjhMUXBqNVdrSkZxbi9CN2Y4TFFsNW9XMEp1bG52QjdmOExRdmdLWEVLSDlYZkI3ZjhMUWszYVhFSW84SFRCN2Y4TFFrek5YVUlncUhMQjdmOExRbHJaWGtMME5uSEI3ZjhMUXJyeVgwSytySERCN2Y4TFFpVU5ZVUtWRDNIQjdmOExRa0ljWWtJZlczTEI3ZjhMUWpJVVkwTGNnSFRCN2Y4TFFpanFZMExXYUhmQjdmOExRc1dVWkVKNzhuckI3ZjhMUXBRTVpVSXg5bjdCV2pZTFFsbE1aVUtMbzRIQldqWUxRa3hSWlVKMDJvUEJXallMUWpRYlpVSUlCNGJCV2pZTFFtK3NaRUx5RUlqQldqWUxRdFFKWkVKazRZbkJXallMUW44NlkwSVFaSXZCV2pZTFFuNUhZa0lXaUl6QldqWUxRbkE3WVVLdFFJM0JXallMUWc4aVlFTEloWTNCV2pZTFFxZ0hYMEplVkkzQldqWUxRb3o0WFVLWnJvekJXallMUXBnQVhVSzBtNHZCV2pZTFFxTXFYRUs4SjRyQldqWUxRZ2VBVzBMc1lvakJXallMUWpnSVcwSVFZWWJCV2pZTFFuUElXa0taT0lUQldqWUxRb0REV2tLeUFZTEJXallMUXBqNVdrSkZxbi9CV2pZTFFsNW9XMEp1bG52QldqWUxRdmdLWEVLSDlYZkJXallMUWszYVhFSW84SFRCV2pZTFFrek5YVUlncUhMQldqWUxRbHJaWGtMME5uSEJXallMUXJyeVgwSytySERCV2pZTFFpVU5ZVUtWRDNIQldqWUxRa0ljWWtJZlczTEJXallMUWpJVVkwTGNnSFRCV2pZTFFpanFZMExXYUhmQldqWUxRc1dVWkVKNzhuckJXallMUXBRTVpVSXg5bjdCV2pZTFFrSUJZa0lSUm9QQldqWUxRbXIvWVVJSWM0TEJXallMUWgvdFlVSStGWVRCV2pZTFF1TERZVUtIMTRUQldqWUxRbHVIWVVKbmhJWEJXallMUWk4NllVSlZGSWJCV2pZTFFyemZZRUlKZ1liQldqWUxRdkY3WUVMQ3hZYkJXallMUWpNVFlFSjczNGJCV2pZTFFoYXFYMElYelliQldqWUxRaXhGWDBKaGo0YkJXallMUXQ3b1hrSU1LWWJCV2pZTFFqbVpYa0tWbm9YQldqWUxRcmhaWGtJSzlvVEJXallMUWlBdFhrTEdOb1RCV2pZTFFtTVZYa0lkYVlQQldqWUxRb29UWGtJV2xvTEJXallMUXE0blhrTHR4b0hCV2pZTFF1dFFYa0tnQklIQldqWUxRbkdOWGtLK1Y0REJXallMUXA3YVhrS2FqMy9CV2pZTFFoQTFYMEk3dG43QldqWUxRdGlZWDBMTkxIN0JXallMUXBZQllFSmMrWDNCV2pZTFFyZHFZRUlqSG43QldqWUxRcVRQWUVLT21YN0JXallMUXVzcllVSXFabi9CV2pZTFFwRjdZVUtTUFlEQldqWUxRaFM3WVVJaDVvREJXallMUXEzbllVSmxwWUhCd21vTlFzMjNWVUsrVlkvQndtb05RbXVuVkVKL3hZckJ3bW9OUW04V1ZFS0IzWVhCd21vTlFpOExWRUt2MUlEQndtb05RaXFHVkVLeHhuZkJ3bW9OUXYrQlZVS1hnVzdCd21vTlFxM3pWa0xHUVdiQndtb05RZ25MV0VLT1kxL0J3bW9OUW56eldrTEZNMXJCd21vTlF1UlVYVUp3N0ZiQndtb05RcGZVWDBKQnNsWEJ3bW9OUXFkV1lrTDFrbGJCd21vTlFnSy9aRUt3aEZuQndtb05Rckx5WmtLS1psN0J3bW9OUWg3WmFFTG1BV1hCd21vTlF2NWNha0xSREczQndtb05RbUp0YTBKUUxYYkJ3bW9OUWwzK2EwSkwvWC9Cd21vTlFwc0piRUo1QjRYQndtb05RcUdPYTBMUStJbkJ3bW9OUXM2U2FrSmNtNDdCd21vTlFpQWhhVUpEdTVMQndtb05Rc1JKWjBKZktwYkJ3bW9OUWs0aFpVSkZ3cGpCd21vTlF1aS9Za0x1WlpyQndtb05Rak5BWUVJR0E1dkJ3bW9OUWlXK1hVS3VrcHJCd21vTlFzeFZXMExOR1puQndtb05RaGdpV1VMZnFKYkJ3bW9OUXEwN1YwSXpXNVBCcU4wS1FoYkhVRUtZclliQnFOMEtRamVBVVVKaDhZekJxTjBLUWdmY1VrSWl4WkxCcU4wS1FrL0xWRUtxNTVmQnFOMEtRbTA0VjBLRUg1ekJxTjBLUWprSVdrSi9QWi9CcU4wS1FqOGJYVUs4SHFIQnFOMEtRaGxQWUVJeHJxSEJxTjBLUXZSL1kwS1o1YURCcU4wS1FocUtaa0s0elo3QnFOMEtRb3RMYVVMOGZadkJxTjBLUW0rbGEwSnZHNWZCcU4wS1FucDliVUlpMTVIQnFOMEtRZ3UvYmtJRTdJdkJxTjBLUWhOY2IwSktuSVhCcU4wS1FyWk5iMElpWFg3QnFOMEtRcFdVYmtLTzFYSEJxTjBLUXNZNGJVSUpMbWJCcU4wS1FueEphMEw3NkZ2QnFOMEtRbC9jYUVKRmVWUEJxTjBLUXBRTVprSk9QVTNCcU4wS1FvdjVZa0xWZWtuQnFOMEtRckhGWDBMc1cwakJxTjBLUXRpVVhFSWI3VW5CcU4wS1FyR0tXVUxhSEU3QnFOMEtRa0hKVmtKV3ZGVEJxTjBLUWwxdlZFSnVnVjNCcU4wS1FsS1hVa0lLQ21qQnFOMEtRc0ZWVVVKSDRIUEJxTjBLUXJpNFVFTGZQNERCa2xJSlFrWHVia0lHV25IQmtsSUpRdHlyYjBMakxuN0JrbElKUXNjU2FVSjJRbExCa2xJSlF0eU9hMEkxNWxyQmtsSUpRcVVMWTBKaEJrakJrbElKUWduRVgwS080RWJCa2xJSlFwdGlXVUw3eEV6QmtsSUpRaXlRVmtKUmpWUEJrbElKUWx0RVVrSVZVbWZCa2xJSlFndjdVRUpZY1hQQmtsSUpRdkZvVUVLNHhJYkJrbElKUW9jbVVVSWxMNDNCa2xJSlF1K0ZWRUlNYVpqQmtsSUpRZ1VDVjBMcnVwekJrbElKUXNGUVlFTGdhNkxCa2xJSlFpWUpYVUwzMktIQmtsSUpRcUNFYVVLQUZaekJrbElKUWpDeVprS29lWi9Ca2xJSlFzRVpiMEo2STR6QmtsSUpRbkhRYlVJZE01TEJrbElKUXRDTWNVSmRSWDNCa2xJSlFubTRjRUpUNW03QmtsSUpRblR4YkVMR3dGWEJrbElKUWdzcGFrS2RFMHpCa2xJSlFydG9ZMElmblVEQmtsSUpRbCs4WDBJSlZEL0JrbElKUXU2V1dFSjU3VVhCa2xJSlFzMXRWVUlzaGszQmtsSUpRZ0tlVUVJN3FtUEJrbElKUWk0dFQwTGpQWEhCa2xJSlFvdUpUa0xMTzRmQmtsSUpRdUpkVDBKUWE0N0JrbElKUXVRa1UwSVYvcHJCa2xJSlFsRHRWVUtvMUovQmtsSUpRcDJ0WEVMcGo2WEJrbElKUXZwWllFSnpOS2JCa2xJSlFteC9aMEs2NTZMQmtsSUpRbzZvYWtKa0c1L0JrbElKUWxsNGIwSmFDWlRCa2xJSlFpM3BjRUtHUDQzQnBEd01RcmhwVjBJWWJvSEJwRHdNUWpQQlZrSVlnb0RCcER3TVFoTjlWa0t4UklIQnBEd01Rb2MzVjBMTmxvREJwRHdNUXFOM1hrSWVIR1BCcER3TVFsYnJYVUpDd21EQnBEd01RbmlVWFVKSEJtTEJwRHdNUXV4Y1hrSXJUV0hCcER3TVFpc3RhRUpDMzNQQnBEd01RaVhBWjBKaUpYSEJwRHdNUW1sYlowSWxJWExCcER3TVFnWXBhRUp1QkhMQnBEd01RczFPWjBMSGNJL0JwRHdNUW04SVowSWg3bzNCcER3TVF0R1laa0ppUDQ3QnBEd01RbTFqWjBMVWhvN0JwRHdNUWdtV1hFSzE2WkxCcER3TVFyenhXMEpVNFpQQnBEd01RamM1WEVJTW41VEJwRHdNUWlVZ1hFS29CcFBCOGpBTlFrNzBWMEl2OTN6QjhqQU5RZ3hBVmtKRHNIekI4akFOUXRMbVYwSTRSSDNCOGpBTlFoczJWa0lNVzN6QjhqQU5RaTJhV0VKZW80SEI4akFOUXBteFdFSjNwNEhCOGpBTlFzQ21WMEttV29UQjhqQU5RckN3VjBKRGhZVEI4akFOUW9EeVZVSXhONFRCOGpBTlF2ei9WVUt0RUlUQjhqQU5Rak0xVlVKUkM0SEI4akFOUXA5TVZVSnJENEhCOGpBTlFxQk5YMEpVeTEzQjhqQU5RdWFiWDBLRWdXVEI4akFOUW1LeVgwSUJuV1RCOGpBTlFtODhYMEoxQzE3QjhqQU5Rb1psWGtKQkIybkI4akFOUXM5cVhrTGlZbW5COGpBTlFudStYRUlSVjJmQjhqQU5RcXpQWEVMd0ZtZkI4akFOUXJsWlhFSmhoV0RCOGpBTlFqUndYRUxmb0dEQjhqQU5RcFdtWFVJakcxekI4akFOUWt1aFhVS0R2MXZCOGpBTlFzTlBhVUpQU1hiQjhqQU5RaHJUWjBLK29IbkI4akFOUXV2VFowSzMvbm5COGpBTlFnSTdhVUlzSFhiQjhqQU5RbkpJWmtLZXRYYkI4akFOUW1KY1prTElnM2JCOGpBTlF0QTRaa0lZdDIvQjhqQU5RcEpOWmtJOTQyL0I4akFOUW51MVowS3NYMnpCOGpBTlFxaTBaMEt4QVd6QjhqQU5RaUpBYVVMTlNtL0I4akFOUWpJc2FVS2hmRy9COGpBTlFoMnFaa0wzRzVMQjhqQU5RdXhPWlVKNENwREI4akFOUWdlbVprSkZTcExCOGpBTlFnTmxaVUpoK28vQjhqQU5Rck9jWlVKRW1JekI4akFOUXJXdVpVSjh0b3pCOGpBTlFvRTlaMEl4bEl2QjhqQU5RcFpCWjBMa1pZdkI4akFOUXJLWWFFS3lwWTNCOGpBTlFwdUNhRUxHdFkzQjhqQU5RdWs0YUVLcStaREI4akFOUXV0S2FFTGtGNUhCOGpBTlFtYkNXa0xTSzVUQjhqQU5RaEphVzBMMytKREI4akFOUWhHcldrS01NWlRCOGpBTlFqbG9XMEtESHBIQjhqQU5Rbk1OWFVJUnQ1REI4akFOUXFJV1hVTEtpNURCOGpBTlFqQWtYa0kxVjVQQjhqQU5RdHdNWGtMd1hKUEI4akFOUWdsblhVSSthcGJCOGpBTlFpOTFYVUxMajViQjhqQU5RczdCVzBLdzBaYkI4akFOUXA2NFcwTDUvSmJCdUhrTVFneEFWa0pEc0h6QnVIa01RdExtVjBJNFJIM0J1SGtNUWkyYVdFSmVvNEhCdUhrTVFzQ21WMEttV29UQnVIa01RdnovVlVLdEVJVEJ1SGtNUXA5TVZVSnJENEhCdUhrTVFtODhYMEoxQzE3QnVIa01RdWFiWDBLRWdXVEJ1SGtNUW9abFhrSkJCMm5CdUhrTVFxelBYRUx3Rm1mQnVIa01RalJ3WEVMZm9HREJ1SGtNUXBXbVhVSWpHMXpCdUhrTVFnSTdhVUlzSFhiQnVIa01RaHJUWjBLK29IbkJ1SGtNUW1KY1prTElnM2JCdUhrTVFwSk5aa0k5NDIvQnVIa01RbnUxWjBLc1gyekJ1SGtNUWpJc2FVS2hmRy9CdUhrTVFnTmxaVUpoK28vQnVIa01RaDJxWmtMM0c1TEJ1SGtNUXJXdVpVSjh0b3pCdUhrTVFvRTlaMEl4bEl2QnVIa01RcHVDYUVMR3RZM0J1SGtNUXVrNGFFS3ErWkRCdUhrTVFqbG9XMEtESHBIQnVIa01RbWJDV2tMU0s1VEJ1SGtNUW5NTlhVSVJ0NURCdUhrTVF0d01Ya0x3WEpQQnVIa01RZ2xuWFVJK2FwYkJ1SGtNUXM3QlcwS3cwWmJCcER3TVFneEFWa0pEc0h6QnBEd01RdExtVjBJNFJIM0JwRHdNUWkyYVdFSmVvNEhCcER3TVFzQ21WMEttV29UQnBEd01RdnovVlVLdEVJVEJwRHdNUXA5TVZVSnJENEhCcER3TVFtODhYMEoxQzE3QnBEd01RdWFiWDBLRWdXVEJwRHdNUW9abFhrSkJCMm5CcER3TVFxelBYRUx3Rm1mQnBEd01RalJ3WEVMZm9HREJwRHdNUXBXbVhVSWpHMXpCcER3TVFnSTdhVUlzSFhiQnBEd01RaHJUWjBLK29IbkJwRHdNUW1KY1prTElnM2JCcER3TVFwSk5aa0k5NDIvQnBEd01RbnUxWjBLc1gyekJwRHdNUWpJc2FVS2hmRy9CcER3TVFnTmxaVUpoK28vQnBEd01RaDJxWmtMM0c1TEJwRHdNUXJXdVpVSjh0b3pCcER3TVFvRTlaMEl4bEl2QnBEd01RcHVDYUVMR3RZM0JwRHdNUXVrNGFFS3ErWkRCcER3TVFqbG9XMEtESHBIQnBEd01RbWJDV2tMU0s1VEJwRHdNUW5NTlhVSVJ0NURCcER3TVF0d01Ya0x3WEpQQnBEd01RZ2xuWFVJK2FwYkJwRHdNUXM3QlcwS3cwWmJCcER3TVFwZ2xWMEt4TUlMQnBEd01Ra2V2VmtMOEc0TEJwRHdNUXNZZ1hrSWpZR1RCcER3TVFpK3ZYVUk1MVdQQnBEd01RbkRJWjBJTDIzVEJwRHdNUW85ZlowTDYrM1BCcER3TVFpN2Zaa0lHd28vQnBEd01RaktFWmtKVUtZL0JwRHdNUW9YZFhFSnRwNVBCcER3TVFoeXZYRUlaZ3BUQklSb05RbGxNWlVLTG80SEJJUm9OUWtJQllrSVJSb1BCSVJvTlFreFJaVUowMm9QQklSb05RbXIvWVVJSWM0TEJJUm9OUWgvdFlVSStGWVRCSVJvTlFqUWJaVUlJQjRiQklSb05RdUxEWVVLSDE0VEJJUm9OUW0rc1pFTHlFSWpCSVJvTlFsdUhZVUpuaElYQklSb05RdFFKWkVKazRZbkJJUm9OUWk4NllVSlZGSWJCSVJvTlFuODZZMElRWkl2QklSb05RcnpmWUVJSmdZYkJJUm9OUW41SFlrSVdpSXpCSVJvTlF2RjdZRUxDeFliQklSb05RbkE3WVVLdFFJM0JJUm9OUWpNVFlFSjczNGJCSVJvTlFnOGlZRUxJaFkzQklSb05RcWdIWDBKZVZJM0JJUm9OUWhhcVgwSVh6WWJCSVJvTlFvejRYVUtacm96QklSb05RaXhGWDBKaGo0YkJJUm9OUXBnQVhVSzBtNHZCSVJvTlF0N29Ya0lNS1liQklSb05RcU1xWEVLOEo0ckJJUm9OUWptWlhrS1Zub1hCSVJvTlFnZUFXMExzWW9qQklSb05RcmhaWGtJSzlvVEJJUm9OUWpnSVcwSVFZWWJCSVJvTlFpQXRYa0xHTm9UQklSb05RblBJV2tLWk9JVEJJUm9OUW1NVlhrSWRhWVBCSVJvTlFvRERXa0t5QVlMQklSb05Rb29UWGtJV2xvTEJJUm9OUXE0blhrTHR4b0hCSVJvTlFwajVXa0pGcW4vQklSb05RdXRRWGtLZ0JJSEJJUm9OUWw1b1cwSnVsbnZCSVJvTlFuR05Ya0srVjREQklSb05RdmdLWEVLSDlYZkJJUm9OUXA3YVhrS2FqMy9CSVJvTlFrM2FYRUlvOEhUQklSb05RaEExWDBJN3RuN0JJUm9OUWt6TlhVSWdxSExCSVJvTlF0aVlYMExOTEg3QklSb05RbHJaWGtMME5uSEJJUm9OUXBZQllFSmMrWDNCSVJvTlFycnlYMEsrckhEQklSb05RaVVOWVVLVkQzSEJJUm9OUXJkcVlFSWpIbjdCSVJvTlFrSWNZa0lmVzNMQklSb05RcVRQWUVLT21YN0JJUm9OUWpJVVkwTGNnSFRCSVJvTlF1c3JZVUlxWm4vQklSb05RaWpxWTBMV2FIZkJJUm9OUXBGN1lVS1NQWURCSVJvTlFzV1VaRUo3OG5yQklSb05RaFM3WVVJaDVvREJJUm9OUXBRTVpVSXg5bjdCSVJvTlFxM25ZVUpscFlIQkNSME5RdXNEWUVLTjlJTEJxTjBNUWxsTVpVS0xvNEhCcU4wTVFwUU1aVUl4OW43QnFOME1Ra3hSWlVKMDJvUEJxTjBNUXNXVVpFSjc4bnJCcU4wTVFpanFZMExXYUhmQnFOME1RaklVWTBMY2dIVEJxTjBNUWtJY1lrSWZXM0xCcU4wTVFpVU5ZVUtWRDNIQnFOME1RcnJ5WDBLK3JIREJxTjBNUXFnSFgwSmVWSTNCcU4wTVFnOGlZRUxJaFkzQnFOME1Rb3o0WFVLWnJvekJxTjBNUW5BN1lVS3RRSTNCcU4wTVFuNUhZa0lXaUl6QnFOME1Rbjg2WTBJUVpJdkJxTjBNUXRRSlpFSms0WW5CcU4wTVFtK3NaRUx5RUlqQnFOME1RalFiWlVJSUI0YkJxTjBNUWxyWlhrTDBObkhCcU4wTVFrek5YVUlncUhMQnFOME1RazNhWEVJbzhIVEJxTjBNUXZnS1hFS0g5WGZCcU4wTVFsNW9XMEp1bG52QnFOME1RcGo1V2tKRnFuL0JxTjBNUW9ERFdrS3lBWUxCcU4wTVFuUElXa0taT0lUQnFOME1RamdJVzBJUVlZYkJxTjBNUWdlQVcwTHNZb2pCcU4wTVFxTXFYRUs4SjRyQnFOME1RcGdBWFVLMG00dkJjOE1MUWxsTVpVS0xvNEhCYzhNTFFwUU1aVUl4OW43QmM4TUxRa3hSWlVKMDJvUEJjOE1MUXNXVVpFSjc4bnJCYzhNTFFqUWJaVUlJQjRiQmM4TUxRaWpxWTBMV2FIZkJjOE1MUWpJVVkwTGNnSFRCYzhNTFFrSWNZa0lmVzNMQmM4TUxRaVVOWVVLVkQzSEJjOE1MUXJyeVgwSytySERCYzhNTFFsclpYa0wwTm5IQmM4TUxRcWdIWDBKZVZJM0JjOE1MUWc4aVlFTEloWTNCYzhNTFFvejRYVUtacm96QmM4TUxRbkE3WVVLdFFJM0JjOE1MUXBnQVhVSzBtNHZCYzhNTFFuNUhZa0lXaUl6QmM4TUxRbjg2WTBJUVpJdkJjOE1MUXRRSlpFSms0WW5CYzhNTFFtK3NaRUx5RUlqQmM4TUxRa3pOWFVJZ3FITEJjOE1MUWszYVhFSW84SFRCYzhNTFF2Z0tYRUtIOVhmQmM4TUxRbDVvVzBKdWxudkJjOE1MUXBqNVdrSkZxbi9CYzhNTFFvRERXa0t5QVlMQmM4TUxRblBJV2tLWk9JVEJjOE1MUWpnSVcwSVFZWWJCYzhNTFFnZUFXMExzWW9qQmM4TUxRcU1xWEVLOEo0ckI3Mkx4UVlWUWNrSWFFNFBCNzJMeFFRdUNiMEsyUG92QjcyTHhRUTJ6Y1VKYWE0ekI3Mkx4UWJvTGNFSWJFNFBCNzJMeFFRdUNiMEx5em5YQjcyTHhRUXl6Y1VLc2RYUEI3Mkx4UVdMdWJVTFBsR2JCNzJMeFFWdmxiMEk5QzJMQjcyTHhRVDFzYTBKaWdWbkI3Mkx4UWU4R2JVS25GbFBCNzJMeFFXRW5hRUxNZUUvQjcyTHhRY2xKYVVMam5FZkI3Mkx4UWRwWVpFSW9La25CNzJMeFFTM3ZaRUlqWmtEQjcyTHhRUXBEWUVKcEEwZkI3Mkx4UVFwRFlFSSs4RDNCNzJMeFFleVdXMElqWmtEQjcyTHhRVHN0WEVJa0trbkI3Mkx4UVU0OFYwTGhuRWZCNzJMeFFiSmVXRUxRZUUvQjcyTHhRU2wvVTBLb0ZsUEI3Mkx4UWRrWlZVSmVnVm5CNzJMeFFiaWdVRUkzQzJMQjcyTHhRYlNYVWtMS2xHYkI3Mkx4UVFuVFRrS3dkWFBCNzJMeFFRY0VVVUx1em5YQjcyTHhRVng2VUVJYUU0UEI3Mkx4UVpFMVRrSVhFNFBCNzJMeFFRY0VVVUsyUG92QjcyTHhRUW5UVGtKWmE0ekI3Mkx4UWJHWFVrTEwyNUxCNzJMeFFicWdVRUtSSUpYQjcyTHhRZFlaVlVKNlpabkI3Mkx4UVMxL1UwTFptcHpCNzJMeFFiSmVXRUxIYVo3QjcyTHhRVTQ4VjBLOFY2TEI3Mkx4UVR3dFhFSVhrYUhCNzJMeFFleVdXMElhODZYQjcyTHhRUWxEWUVKMHBLTEI3Mkx4UVF4RFlFSU5McWZCNzJMeFFTM3ZaRUllODZYQjcyTHhRZHBZWkVJWmthSEI3Mkx4UWNkSmFVSzdWNkxCNzJMeFFXRW5hRUxJYVo3QjcyTHhRZXdHYlVMWm1wekI3Mkx4UVQxc2EwSjhaWm5CNzJMeFFWdmxiMEtQSUpYQjcyTHhRV1B1YlVMRzI1TEJQK2p2UVlWUWNrSWFFNFBCUCtqdlFRMnpjVUphYTR6QlAranZRUXl6Y1VLc2RYUEJQK2p2UVZ2bGIwSTlDMkxCUCtqdlFlOEdiVUtuRmxQQlAranZRY2xKYVVMam5FZkJQK2p2UVMzdlpFSWpaa0RCUCtqdlFRcERZRUkrOEQzQlAranZRZXlXVzBJalprREJQK2p2UVU0OFYwTGhuRWZCUCtqdlFTbC9VMEtvRmxQQlAranZRYmlnVUVJM0MyTEJQK2p2UVFuVFRrS3dkWFBCUCtqdlFaRTFUa0lYRTRQQlAranZRUW5UVGtKWmE0ekJQK2p2UWJxZ1VFS1JJSlhCUCtqdlFTMS9VMExabXB6QlAranZRVTQ4VjBLOFY2TEJQK2p2UWV5V1cwSWE4NlhCUCtqdlFReERZRUlOTHFmQlAranZRUzN2WkVJZTg2WEJQK2p2UWNkSmFVSzdWNkxCUCtqdlFld0diVUxabXB6QlAranZRVnZsYjBLUElKWEJQK2p2UVIwU2MwSVlFNFBCUCtqdlFRNXVja0tVejR6QlAranZRUXR1Y2tJL3JYTEJQK2p2UVFhTmNFSU5pR0RCUCtqdlFkV1BiVUlYODFEQlAranZRWk9xYVVJLy9rVEJQK2p2UVVnaFpVSWllajNCUCtqdlFRdERZRUxZNlRyQlAranZRYzVrVzBJa2VqM0JQK2p2UVlMYlZrSS8va1RCUCtqdlFVVDJVa0lUODFEQlAranZRUkQ1VDBJR2lHREJQK2p2UVFvWVRrSkJyWExCUCtqdlFmVnpUVUlYRTRQQlAranZRUWNZVGtLTno0ekJQK2p2UVJINVQwSXI0cFhCUCtqdlFVVDJVa0trckozQlAranZRWUxiVmtJTnA2UEJQK2p2UWM5a1cwSWJhYWZCUCtqdlFRMURZRUpCc2FqQlAranZRVWNoWlVJZGFhZkJQK2p2UVpPcWFVSU1wNlBCUCtqdlFkR1BiVUtpckozQlAranZRUWlOY0VJcjRwWEI3Mkx4UVE1dWNrS1V6NHpCNzJMeFFSMFNjMElZRTRQQjcyTHhRUXR1Y2tJL3JYTEI3Mkx4UVFhTmNFSU5pR0RCNzJMeFFkV1BiVUlYODFEQjcyTHhRWk9xYVVJLy9rVEI3Mkx4UVVnaFpVSWllajNCNzJMeFFRdERZRUxZNlRyQjcyTHhRYzVrVzBJa2VqM0I3Mkx4UVlMYlZrSS8va1RCNzJMeFFVVDJVa0lUODFEQjcyTHhRUkQ1VDBJR2lHREI3Mkx4UVFvWVRrSkJyWExCNzJMeFFmVnpUVUlYRTRQQjcyTHhRUWNZVGtLTno0ekI3Mkx4UVJINVQwSXI0cFhCNzJMeFFVVDJVa0trckozQjcyTHhRWUxiVmtJTnA2UEI3Mkx4UWM5a1cwSWJhYWZCNzJMeFFRMURZRUpCc2FqQjcyTHhRVWNoWlVJZGFhZkI3Mkx4UVpPcWFVSU1wNlBCNzJMeFFkR1BiVUtpckozQjcyTHhRUWlOY0VJcjRwWEJQK2p2UVgvZ2VVSWFFNFBCNzJMeFFRb0JlVUo4VlpEQlAranZRUW9CZVVKOFZaREI3Mkx4UVgvZ2VVSWFFNFBCUCtqdlFRd0JlVUptb1d2QjcyTHhRUXdCZVVKbW9XdkJQK2p2UWZWeGRrSlM2MUxCNzJMeFFmVnhka0pTNjFMQlAranZRZDlmY2tMbHNqM0I3Mkx4UWQ5ZmNrTGxzajNCUCtqdlFjQVJiVUo2YWkzQjcyTHhRY0FSYlVKNmFpM0JQK2p2UVR6a1prSWZMaVBCNzJMeFFUemtaa0lmTGlQQlAranZRUXBEWUVKZnNCL0I3Mkx4UVFwRFlFSmZzQi9CNzJMeFFkdWhXVUlpTGlQQlAranZRZHVoV1VJaUxpUEI3Mkx4UVZWMFUwSjhhaTNCUCtqdlFWVjBVMEo4YWkzQjcyTHhRVHNtVGtMaHNqM0JQK2p2UVRzbVRrTGhzajNCNzJMeFFTQVVTa0pJNjFMQlAranZRU0FVU2tKSTYxTEI3Mkx4UVFpRlIwSmxvV3ZCUCtqdlFRaUZSMEpsb1d2QjcyTHhRWldsUmtJYUU0UEJQK2p2UVpXbFJrSWFFNFBCNzJMeFFRcUZSMEo0VlpEQlAranZRUXFGUjBKNFZaREI3Mkx4UVNBVVNrS0xzSnpCUCtqdlFTQVVTa0tMc0p6QjcyTHhRVG9tVGtLN1RLZkJQK2p2UVRvbVRrSzdUS2ZCNzJMeFFWTjBVMEx1Y0svQlAranZRVk4wVTBMdWNLL0I3Mkx4UWRxaFdVSWZqN1RCUCtqdlFkcWhXVUlmajdUQjcyTHhRUWxEWUVMOFRiYkJQK2p2UVFsRFlFTDhUYmJCUCtqdlFUcmtaa0liajdUQjcyTHhRVHJrWmtJYmo3VEJQK2p2UWNNUmJVTHVjSy9CNzJMeFFjTVJiVUx1Y0svQlAranZRZHhmY2tLOFRLZkI3Mkx4UWR4ZmNrSzhUS2ZCUCtqdlFmZHhka0tIc0p6QjcyTHhRZmR4ZGtLSHNKekJQK2p2UVEzUWRrTGFLSS9CUCtqdlFiV2JkMElhRTRQQlAranZRUS9RZGtLeSttM0JQK2p2UWYxNmRFTG1kRmZCUCtqdlFTN0ZjRUtkSFVUQlAranZRVnp2YTBKbFJqWEJQK2p2UWV0TlprSWc4aXZCUCtqdlFRbERZRUtEd3lqQlAranZRU3M0V2tJazhpdkJQK2p2UWJTV1ZFSnFSalhCUCtqdlFlZkFUMEtjSFVUQlAranZRUm9MVEVMZmRGZkJQK2p2UVFtMlNVS3YrbTNCUCtqdlFXRHFTRUlYRTRQQlAranZRUWkyU1VMWEtJL0JQK2p2UVJnTFRFTENhNXJCUCtqdlFlckFUMEpnRjZUQlAranZRYldXVkVMNmdxdkJQK2p2UVNzNFdrSWNMYkRCUCtqdlFRdERZRUpxeExIQlAranZRZXROWmtJY0xiREJQK2p2UVZ2dmEwTDNncXZCUCtqdlFUSEZjRUpkRjZUQlAranZRZng2ZEVLOWE1ckJrMjN1UWJXYmQwSWFFNFBCazIzdVFRM1Fka0xhS0kvQmsyM3VRUS9RZGtLeSttM0JrMjN1UWYxNmRFTG1kRmZCazIzdVFTN0ZjRUtkSFVUQmsyM3VRVnp2YTBKbFJqWEJrMjN1UWV0TlprSWc4aXZCazIzdVFRbERZRUtEd3lqQmsyM3VRU3M0V2tJazhpdkJrMjN1UWJTV1ZFSnFSalhCazIzdVFlZkFUMEtjSFVUQmsyM3VRUm9MVEVMZmRGZkJrMjN1UVFtMlNVS3YrbTNCazIzdVFXRHFTRUlYRTRQQmsyM3VRUWkyU1VMWEtJL0JrMjN1UVJnTFRFTENhNXJCazIzdVFlckFUMEpnRjZUQmsyM3VRYldXVkVMNmdxdkJrMjN1UVNzNFdrSWNMYkRCazIzdVFRdERZRUpxeExIQmsyM3VRZXROWmtJY0xiREJrMjN1UVZ2dmEwTDNncXZCazIzdVFUSEZjRUpkRjZUQmsyM3VRZng2ZEVLOWE1ckJrMjN1UVgvZ2VVSWFFNFBCazIzdVFRb0JlVUo4VlpEQmsyM3VRUXdCZVVKbW9XdkJrMjN1UWZWeGRrSlM2MUxCazIzdVFkOWZja0xsc2ozQmsyM3VRY0FSYlVKNmFpM0JrMjN1UVR6a1prSWZMaVBCazIzdVFRcERZRUpmc0IvQmsyM3VRZHVoV1VJaUxpUEJrMjN1UVZWMFUwSjhhaTNCazIzdVFUc21Ua0xoc2ozQmsyM3VRU0FVU2tKSTYxTEJrMjN1UVFpRlIwSmxvV3ZCazIzdVFaV2xSa0lhRTRQQmsyM3VRUXFGUjBKNFZaREJrMjN1UVNBVVNrS0xzSnpCazIzdVFUb21Ua0s3VEtmQmsyM3VRVk4wVTBMdWNLL0JrMjN1UWRxaFdVSWZqN1RCazIzdVFRbERZRUw4VGJiQmsyM3VRVHJrWmtJYmo3VEJrMjN1UWNNUmJVTHVjSy9CazIzdVFkeGZja0s4VEtmQmsyM3VRZmR4ZGtLSHNKekI1UExzUVgvZ2VVSWFFNFBCNVBMc1FRb0JlVUo4VlpEQjVQTHNRUXdCZVVKbW9XdkI1UExzUWZWeGRrSlM2MUxCNVBMc1FkOWZja0xsc2ozQjVQTHNRY0FSYlVKNmFpM0I1UExzUVR6a1prSWZMaVBCNVBMc1FRcERZRUpmc0IvQjVQTHNRZHVoV1VJaUxpUEI1UExzUVZWMFUwSjhhaTNCNVBMc1FUc21Ua0xoc2ozQjVQTHNRU0FVU2tKSTYxTEI1UExzUVFpRlIwSmxvV3ZCNVBMc1FaV2xSa0lhRTRQQjVQTHNRUXFGUjBKNFZaREI1UExzUVNBVVNrS0xzSnpCNVBMc1FUb21Ua0s3VEtmQjVQTHNRVk4wVTBMdWNLL0I1UExzUWRxaFdVSWZqN1RCNVBMc1FRbERZRUw4VGJiQjVQTHNRVHJrWmtJYmo3VEI1UExzUWNNUmJVTHVjSy9CNVBMc1FkeGZja0s4VEtmQjVQTHNRZmR4ZGtLSHNKekI1UExzUVFzOWNFTHJvb3ZCNVBMc1FWVE5jRUlhRTRQQjVQTHNRUTA5Y0VLSkJuWEI1UExzUVF5V2JrS2NFV1hCNVBMc1FTVDFhMExNWFZmQjVQTHNRVENJYUVJazJrekI1UExzUWZTS1pFSWhQa2JCNVBMc1FRcERZRUlJL1VQQjVQTHNRU0g3VzBJalBrYkI1UExzUWViOVYwSXEya3pCNVBMc1FmU1FWRUxPWFZmQjVQTHNRUXJ3VVVLYUVXWEI1UExzUVFwSlVFS09CblhCNVBMc1FiKzRUMElYRTRQQjVQTHNRUVZKVUVMcG9vdkI1UExzUVFyd1VVSmduWlBCNVBMc1FmT1FWRUpLZDVyQjVQTHNRZVQ5VjBJWHVaL0I1UExzUVNMN1cwSWJCNlBCNVBMc1FReERZRUtxSjZUQjVQTHNRZlNLWkVJZkI2UEI1UExzUVRHSWFFSVh1Wi9CNVBMc1FTYjFhMEpHZDVyQjVQTHNRUXVXYmtKZW5aUEI3Mkx4UWRjY1RVSWJFNFBCNzJMeFFlSERUVUlLVTNMQjcyTHhRWnl0VDBMRzJWL0I3Mkx4UWF1NFVrS28vRS9CNzJMeFFmQ3ZWa0owMEVQQjcyTHhRVU5PVzBLSUtUekI3Mkx4UVFsRFlFSmNqVG5CNzJMeFFkRTNaVUtLS1R6QjcyTHhRU1RXYVVKMzBFUEI3Mkx4UVc3TmJVS3MvRS9CNzJMeFFYclljRUxRMlYvQjcyTHhRVFBDY2tJS1UzTEI3Mkx4UVR0cGMwSVlFNFBCNzJMeFFUVENja0txL0l6QjcyTHhRWHJZY0VKSU9aYkI3Mkx4UVd2TmJVTFlKNTdCNzJMeFFTTFdhVUwxUGFUQjcyTHhRZEkzWlVKckVhakI3Mkx4UVF0RFlFSi9YNm5CNzJMeFFVTk9XMEpuRWFqQjcyTHhRZkN2VmtMelBhVEI3Mkx4UWF5NFVrTFpKNTdCNzJMeFFaeXRUMEpNT1piQjcyTHhRZVBEVFVLbi9JekI3Mkx4UWZyVVIwSVU5MnZCNzJMeFFWbjRSa0lhRTRQQjcyTHhRZnJVUjBLaUtwREI3Mkx4UWN4YlNrTEtYWnpCNzJMeFFjQmdUa0t5MTZiQjcyTHhRYlNkVTBLVTRhN0I3Mkx4UVVhM1dVSTQ3N1BCNzJMeFFRbERZRUoycUxYQjcyTHhRYy9PWmtJNTc3UEI3Mkx4UVdIb2JFS1g0YTdCNzJMeFFWZ2xja0t2MTZiQjcyTHhRVWdxZGtMRVhaekI3Mkx4UVIyeGVFS2pLcERCNzJMeFFibU5lVUlYRTRQQjcyTHhRUnl4ZUVJVDkydkI3Mkx4UVVrcWRrTGJrRlBCNzJMeFFWNGxja0wvbkQ3QjcyTHhRVi9vYkVJdmlTN0I3Mkx4UWRMT1prTG5iU1RCNzJMeFFRbERZRUpuK3lEQjcyTHhRVVczV1VMbGJTVEI3Mkx4UWJXZFUwSXVpUzdCNzJMeFFjRmdUa0w0bkQ3QjcyTHhRYzFiU2tMTWtGUEJXTWo0UVNpQ2EwSVlFNFBCNFJZQVFnOGdhMEtJZ1hyQjRSWUFRaWlDYTBJWUU0UEJXTWo0UVE4Z2EwS0lnWHJCNFJZQVFtc0Fha0wxcDIvQldNajRRV3NBYWtMMXAyL0I0UllBUXVJMmFFTFVWbWJCV01qNFFlSTJhRUxVVm1iQjRSWUFRcG5pWlVLZk1GL0JXTWo0UVpuaVpVS2ZNRi9CNFJZQVFqY3NZMElrc2xyQldNajRRVGNzWTBJa3NsckI0UllBUWd0RFlFSzlLVm5CV01qNFFRdERZRUs5S1ZuQldNajRRZU5aWFVJcXNsckI0UllBUXVOWlhVSXFzbHJCV01qNFFYeWpXa0tsTUYvQjRSWUFRbnlqV2tLbE1GL0JXTWo0UVRWUFdFTFNWbWJCNFJZQVFqVlBXRUxTVm1iQldNajRRYW1GVmtMM3AyL0I0UllBUXFtRlZrTDNwMi9CV01qNFFRbG1WVUtIZ1hyQjRSWUFRZ2xtVlVLSGdYckJXTWo0UWZBRFZVSWFFNFBCNFJZQVF2QURWVUlhRTRQQldNajRRUWxtVlVKdDVZakI0UllBUWdsbVZVSnQ1WWpCV01qNFFhcUZWa0kwVW83QjRSWUFRcXFGVmtJMFVvN0JXTWo0UVRkUFdFTEcrcExCNFJZQVFqZFBXRUxHK3BMQldNajRRWCtqV2tMZGpaYkI0UllBUW4raldrTGRqWmJCV01qNFFlRlpYVUlkelpqQjRSWUFRdUZaWFVJZHpaakJXTWo0UVF0RFlFSlNrWm5CNFJZQVFndERZRUpTa1puQjRSWUFRalFzWTBJY3paakJXTWo0UVRRc1kwSWN6WmpCNFJZQVFwZmlaVUxkalpiQldNajRRWmZpWlVMZGpaYkI0UllBUXVVMmFFTEQrcExCV01qNFFlVTJhRUxEK3BMQjRSWUFRbXdBYWtJMVVvN0JXTWo0UVd3QWFrSTFVbzdCNFJZQVFnd2dhMEp0NVlqQldNajRRUXdnYTBKdDVZakIrOUwxUWZQR2JVSWFFNFBCKzlMMVFRaFJiVUlSRW9yQis5TDFRUXBSYlVJK0tIakIrOUwxUVdiM2EwSmdIbXZCKzlMMVFaSFJhVUliN0YvQis5TDFRZndFWjBLM1ZGZkIrOUwxUVlmQ1kwSXA3bEhCKzlMMVFRMURZRUtXRmxEQis5TDFRWXZEWEVJaDdsSEIrOUwxUVJxQldVSzNWRmZCKzlMMVFZVzBWa0laN0YvQis5TDFRYXVPVkVKZUhtdkIrOUwxUVFZMVUwSTZLSGpCKzlMMVFTSy9Va0lYRTRQQis5TDFRUVkxVTBJUUVvckIrOUwxUWErT1ZFSUJsNURCKzlMMVFZUzBWa0lnTUpiQis5TDFRUm1CV1VMUWU1ckIrOUwxUVkvRFhFSWNMNTNCKzlMMVFRbERZRUxsR3A3Qis5TDFRWVhDWTBJYUw1M0IrOUwxUWZzRVowTFFlNXJCKzlMMVFZL1JhVUlqTUpiQis5TDFRV24zYTBMK2xwREJTMWowUWZQR2JVSWFFNFBCUzFqMFFRaFJiVUlSRW9yQlMxajBRUXBSYlVJK0tIakJTMWowUVdiM2EwSmdIbXZCUzFqMFFaSFJhVUliN0YvQlMxajBRZndFWjBLM1ZGZkJTMWowUVlmQ1kwSXA3bEhCUzFqMFFRMURZRUtXRmxEQlMxajBRWXZEWEVJaDdsSEJTMWowUVJxQldVSzNWRmZCUzFqMFFZVzBWa0laN0YvQlMxajBRYXVPVkVKZUhtdkJTMWowUVFZMVUwSTZLSGpCUzFqMFFTSy9Va0lYRTRQQlMxajBRUVkxVTBJUUVvckJTMWowUWErT1ZFSUJsNURCUzFqMFFZUzBWa0lnTUpiQlMxajBRUm1CV1VMUWU1ckJTMWowUVkvRFhFSWNMNTNCUzFqMFFRbERZRUxsR3A3QlMxajBRWVhDWTBJYUw1M0JTMWowUWZzRVowTFFlNXJCUzFqMFFZL1JhVUlqTUpiQlMxajBRV24zYTBMK2xwREJTMWowUVZUTmNFSWFFNFBCUzFqMFFRczljRUxyb292QlMxajBRUTA5Y0VLSkJuWEJTMWowUVF5V2JrS2tFV1hCUzFqMFFTVDFhMExPWFZmQlMxajBRVENJYUVJazJrekJTMWowUWZTS1pFSWhQa2JCUzFqMFFRcERZRUlJL1VQQlMxajBRU0g3VzBJalBrYkJTMWowUWViOVYwSXEya3pCUzFqMFFmU1FWRUxPWFZmQlMxajBRUW53VVVLV0VXWEJTMWowUVFwSlVFS09CblhCUzFqMFFiKzRUMElYRTRQQlMxajBRUVZKVUVMcG9vdkJTMWowUVFyd1VVSmduWlBCUzFqMFFmT1FWRUpLZDVyQlMxajBRZVQ5VjBJWHVaL0JTMWowUVNMN1cwSWJCNlBCUzFqMFFRcERZRUtySjZUQlMxajBRZlNLWkVJY0I2UEJTMWowUVRHSWFFSVh1Wi9CUzFqMFFTYjFhMEpHZDVyQlMxajBRUXVXYmtKZW5aUEJuOTN5UVZUTmNFSWFFNFBCbjkzeVFRczljRUxyb292Qm45M3lRUTA5Y0VLSkJuWEJuOTN5UVF5V2JrS2tFV1hCbjkzeVFTVDFhMExPWFZmQm45M3lRVENJYUVJazJrekJuOTN5UWZTS1pFSWhQa2JCbjkzeVFRcERZRUlJL1VQQm45M3lRU0g3VzBJalBrYkJuOTN5UWViOVYwSXEya3pCbjkzeVFmU1FWRUxPWFZmQm45M3lRUW53VVVLV0VXWEJuOTN5UVFwSlVFS09CblhCbjkzeVFiKzRUMElYRTRQQm45M3lRUVZKVUVMcG9vdkJuOTN5UVFyd1VVSmduWlBCbjkzeVFmT1FWRUpLZDVyQm45M3lRZVQ5VjBJWHVaL0JuOTN5UVNMN1cwSWJCNlBCbjkzeVFRcERZRUtySjZUQm45M3lRZlNLWkVJY0I2UEJuOTN5UVRHSWFFSVh1Wi9CbjkzeVFTYjFhMEpHZDVyQm45M3lRUXVXYmtKZW5aUEJuOTN5UVF1Q2IwSzJQb3ZCbjkzeVFib0xjRUliRTRQQm45M3lRUXVDYjBMeXpuWEJuOTN5UVdMdWJVTFBsR2JCbjkzeVFUMXNhMEppZ1ZuQm45M3lRV0VuYUVMTWVFL0JuOTN5UWRwWVpFSW9La25CbjkzeVFRcERZRUpwQTBmQm45M3lRVHN0WEVJa0trbkJuOTN5UWJKZVdFTFFlRS9CbjkzeVFka1pWVUplZ1ZuQm45M3lRYlNYVWtMS2xHYkJuOTN5UVFjRVVVTHV6blhCbjkzeVFWeDZVRUlhRTRQQm45M3lRUWNFVVVLMlBvdkJuOTN5UWJHWFVrTEwyNUxCbjkzeVFkWVpWVUo2WlpuQm45M3lRYkplV0VMSGFaN0JuOTN5UVR3dFhFSVhrYUhCbjkzeVFRbERZRUowcEtMQm45M3lRZHBZWkVJWmthSEJuOTN5UVdFbmFFTElhWjdCbjkzeVFUMXNhMEo4WlpuQm45M3lRV1B1YlVMRzI1TEJLd2puUVZUTmNFSWFFNFBCS3dqblFRczljRUxyb292Qkt3am5RUTA5Y0VLSkJuWEJLd2puUVF5V2JrS2NFV1hCS3dqblFTVDFhMExNWFZmQkt3am5RVENJYUVJazJrekJLd2puUWZTS1pFSWhQa2JCS3dqblFRcERZRUlJL1VQQkt3am5RU0g3VzBJalBrYkJLd2puUWViOVYwSXEya3pCS3dqblFmU1FWRUxPWFZmQkt3am5RUXJ3VVVLYUVXWEJLd2puUVFwSlVFS09CblhCS3dqblFiKzRUMElYRTRQQkt3am5RUVZKVUVMcG9vdkJLd2puUVFyd1VVSmduWlBCS3dqblFmT1FWRUpLZDVyQkt3am5RZVQ5VjBJWHVaL0JLd2puUVNMN1cwSWJCNlBCS3dqblFReERZRUtxSjZUQkt3am5RZlNLWkVJZkI2UEJLd2puUVRHSWFFSVh1Wi9CS3dqblFTYjFhMEpHZDVyQkt3am5RUXVXYmtKZW5aUEJ2NlBFUVF2dmFFTEx1SWZCdjZQRVFWdzlhVUlZRTRQQnY2UEVRUXp2YUVMSzJuekJ2NlBFUVhBSmFFS0ZNWFRCdjZQRVFUU2Naa0tPd1d6QnY2UEVRVFRBWkVLVURHZkJ2NlBFUWVXVllrSXRkbVBCdjZQRVFRcERZRUxtUEdMQnY2UEVRVER3WFVJcmRtUEJ2NlBFUWVIRlcwS1NER2ZCdjZQRVFlYnBXVUtMd1d6QnY2UEVRYU44V0VLTE1YVEJ2NlBFUVFxWFYwTFAybnpCdjZQRVFibElWMElXRTRQQnY2UEVRUXFYVjBMSXVJZkJ2NlBFUWFOOFdFSm9EWXpCdjZQRVFlUHBXVUpveFkvQnY2UEVRZUxGVzBMbm41TEJ2NlBFUVRId1hVSWFhNVRCdjZQRVFReERZRUs3QjVYQnY2UEVRZU9WWWtJZGE1VEJ2NlBFUVRYQVpFTGpuNUxCdjZQRVFUU2Naa0pueFkvQnY2UEVRWEFKYUVKdERZekJsSG1uUVZ3OWFVSVlFNFBCbEhtblFRdnZhRUxMdUlmQmxIbW5RUXp2YUVMSzJuekJsSG1uUVhBSmFFS0ZNWFRCbEhtblFUU2Naa0tPd1d6QmxIbW5RVFRBWkVLVURHZkJsSG1uUWVXVllrSXRkbVBCbEhtblFRcERZRUxtUEdMQmxIbW5RVER3WFVJcmRtUEJsSG1uUWVIRlcwS1NER2ZCbEhtblFlYnBXVUtMd1d6QmxIbW5RYU44V0VLTE1YVEJsSG1uUVFxWFYwTFAybnpCbEhtblFibElWMElXRTRQQmxIbW5RUXFYVjBMSXVJZkJsSG1uUWFOOFdFSm9EWXpCbEhtblFlUHBXVUpveFkvQmxIbW5RZUxGVzBMbm41TEJsSG1uUVRId1hVSWFhNVRCbEhtblFReERZRUs3QjVYQmxIbW5RZU9WWWtJZGE1VEJsSG1uUVRYQVpFTGpuNUxCbEhtblFUU2Naa0pueFkvQmxIbW5RWEFKYUVKdERZekIwczNOUVk0YllFSjZOZDNBaitZSlFyQ2dia0tTVVBUQWorWUpRbzRiWUVKNk5kM0EwczNOUWJDZ2JrS1NVUFRBcUV6TVFZb2JZRUp4L3REQXFFek1RVVUyYjBLUkIrbkFRRU1LUXM0c2IwSVpJdXJBUUVNS1FoUVNZRUwzR05MQUtJWUtRZ2tmWUVLMnFycS8wczNOUVk4QWQwSjZKeWJBMHMzTlFRa2ZZRUsycXJxL0tJWUtRbzhBZDBKNkp5YkFLSVlLUWdjZllFTEhGUkhBS0lZS1FySERkVUp3OTFYQTBzM05RYkhEZFVKdzkxWEEwczNOUVFjZllFTEhGUkhBaWxvTFFnWWZZRUwwOVNyQWlsb0xRa0FsZFVKbjMyM0FxRXpNUVVBbGRVSm4zMjNBcUV6TVFRWWZZRUwwOVNyQUVBb01RZ2tmWUVJbC8xSEFFQW9NUWowMmRFTHc5NGpBVmdQTFFUMDJkRUx3OTRqQVZnUExRUWtmWUVJbC8xSEFFQW9NUXZFV1lFSTYzOEhBRUFvTVFyanJiMEprRU52QVZnUExRYmpyYjBKa0VOdkFWZ1BMUWZFV1lFSTYzOEhBMHMzTlFlenZla0toRGh2QmorWUpRdXp2ZWtLaERodkJxRXpNUVZFRWZFSVV2UmJCUUVNS1F0bjZlMEpUU2hmQjBzM05RU3d6aFVMdXc3ckFLSVlLUWl3emhVTHV3N3JBS0lZS1Ftb09oRUx5RDgzQTBzM05RV29PaEVMeUQ4M0FpbG9MUWd0OGcwTDlOZGJBcUV6TVFRdDhnMEw5TmRiQUVBb01RanFmZ2tJZEErVEFWZ1BMUVRxZmdrSWRBK1RBRUFvTVFvQlhmVUlSWnhIQlZnUExRWUJYZlVJUlp4SEJqK1lKUXNHVWdVS1FTMHpCMHMzTlFjR1VnVUtRUzB6QnFFek1RVkpKZ2tJLzlVbkJRRU1LUXBaRWdrS0Fna3JCMHMzTlFTK3VpMElYK1NyQktJWUtRaSt1aTBJWCtTckJLSVlLUXE4dmlrS1M3Qy9CMHMzTlFhOHZpa0tTN0MvQmlsb0xRbTV3aVVKUVpqTEJxRXpNUVc1d2lVSlFaakxCRUFvTVF1dFBpRUplSWpiQlZnUExRZXRQaUVKZUlqYkJFQW9NUXAwbmcwSTNGa2ZCVmdQTFFaMG5nMEkzRmtmQmorWUpRbk1HZzBJVU1JUEIwczNOUVhNR2cwSVVNSVBCcUV6TVFlVEpnMElVTUlQQlFFTUtRaW5GZzBLMWRvUEIwczNOUWNIMGpVS2RQNFBCS0lZS1FzSDBqVUtkUDRQQktJWUtRcjFXakVLZVA0UEIwczNOUWIxV2pFS2VQNFBCaWxvTFFydUhpMEtkUDRQQnFFek1RYnVIaTBLZFA0UEJFQW9NUW5SUGlrS2VQNFBCVmdQTFFYUlBpa0tlUDRQQkVBb01Rckc2aEVLeE5JUEJWZ1BMUWJHNmhFS3hOSVBCaitZSlFzT1VnVUphT3FEQjBzM05RY09VZ1VKYU9xREJxRXpNUVZGSmdrS0NaYUhCUUVNS1FwVkVna0lqcktIQjBzM05RVEN1aTBLd0FySEJLSVlLUWpDdWkwS3dBckhCS0lZS1FyQXZpa0x6aUs3QjBzM05RYkF2aWtMemlLN0JpbG9MUW05d2lVSVNUSzNCcUV6TVFXOXdpVUlTVEszQkVBb01RdXRQaUVJTWJxdkJWZ1BMUWV0UGlFSU1icXZCRUFvTVFwMG5nMEkvM3FMQlZnUExRWjBuZzBJLzNxTEJqK1lKUXV6dmVrTFQyTGpCMHMzTlFlenZla0xUMkxqQnFFek1RVkVFZkVLZUFidkJRRU1LUXR2NmUwSS9TTHZCMHMzTlFTMHpoVUpCenRmQktJWUtRaTB6aFVKQnp0ZkJLSVlLUW1zT2hFSTdPOVBCMHMzTlFXc09oRUk3TzlQQmlsb0xRZ3Q4ZzBMQThkREJxRXpNUVF0OGcwTEE4ZERCRUFvTVFqaWZna0oxZnMzQlZnUExRVGlmZ2tKMWZzM0JFQW9NUW9OWGZVTFB0YjNCVmdQTFFZTlhmVUxQdGIzQmorWUpRckNnYmtJRVRNbkIwczNOUWJDZ2JrSUVUTW5CcUV6TVFVTTJiMEpBSHN6QlFFTUtRczRzYjBMa1pNekIwczNOUVpFQWQwSk51dkhCS0lZS1FwRUFkMEpOdXZIQktJWUtRcS9EZFVKUndPdkIwczNOUWEvRGRVSlJ3T3ZCaWxvTFFrQWxkVUpSdytqQnFFek1RVUFsZFVKUncrakJFQW9NUWowMmRFSkRRZVRCVmdQTFFUMDJkRUpEUWVUQkVBb01RcnZyYjBKRHBjL0JWZ1BMUWJ2cmIwSkRwYy9CaitZSlFvMGJZRUxKRXMvQjBzM05RWTBiWUVMSkVzL0JxRXpNUVlvYllFS0hJTkxCUUVNS1FoWVNZRUl0WjlMQjBzM05RUWdmWUVLWDFQckJLSVlLUWdnZllFS1gxUHJCS0lZS1Fna2ZZRUtJWFBUQjBzM05RUWtmWUVLSVhQVEJpbG9MUWdZZllFSi9JUEhCcUV6TVFRWWZZRUovSVBIQkVBb01RZ1lmWUVKYVArekJWZ1BMUVFZZllFSmFQK3pCRUFvTVF2RVdZRUtMOGRYQlZnUExRZkVXWUVLTDhkWEJqK1lKUW1tV1VVSUNUTW5CMHMzTlFXbVdVVUlDVE1uQnFFek1RZFFBVVVKQUhzekJRRU1LUWwzM1VFTGlaTXpCMHMzTlFYNDlTVUpQdXZIQktJWUtRbjQ5U1VKUHV2SEJLSVlLUWwxNlNrSlF3T3ZCMHMzTlFWMTZTa0pRd092Qmlsb0xRczRZUzBKU3crakJxRXpNUWM0WVMwSlN3K2pCRUFvTVFzMEhURUpFUWVUQlZnUExRYzBIVEVKRVFlVEJFQW9NUWlaQ1VFSStwYy9CVmdQTFFTWkNVRUkrcGMvQmorWUpRaTVIUlVMVzJMakIwczNOUVM1SFJVTFcyTGpCcUV6TVFjWXlSRUtiQWJ2QlFFTUtRazRwUkVJK1NMdkIwczNOUWJqWE5VSkd6dGZCS0lZS1FyalhOVUpHenRmQktJWUtRamdoT0VKQk85UEIwczNOUVRnaE9FSkJPOVBCaWxvTFF2aEZPVUsvOGREQnFFek1RZmhGT1VLLzhkREJFQW9NUXB6L09rSjNmczNCVmdQTFFaei9Pa0ozZnMzQkVBb01RbC9XUWtMVHRiM0JWZ1BMUVYvV1FrTFR0YjNCaitZSlFwWU5QVUphT3FEQjBzM05RWllOUFVKYU9xREJxRXpNUVhha08wS0haYUhCUUVNS1F2MmFPMElucktIQjBzM05RYTdoS0VLeUFySEJLSVlLUXE3aEtFS3lBckhCS0lZS1FxemVLMEx5aUs3QjBzM05RYXplSzBMeWlLN0JpbG9MUWkxZExVSVVUSzNCcUV6TVFTMWRMVUlVVEszQkVBb01RaldlTDBJTWJxdkJWZ1BMUVRXZUwwSU1icXZCRUFvTVFxcmVPVUpBM3FMQlZnUExRYXJlT1VKQTNxTEJqK1lKUWpBcU9rSVZNSVBCMHMzTlFUQXFPa0lWTUlQQnFFek1RVkdqT0VJWE1JUEJRRU1LUXR1Wk9FSzJkb1BCMHMzTlFZcFVKRUtqUDRQQktJWUtRb3BVSkVLalA0UEJLSVlLUXBPUUowS2dQNFBCMHMzTlFaT1FKMEtnUDRQQmlsb0xRcGd1S1VLaFA0UEJxRXpNUVpndUtVS2hQNFBCRUFvTVFpdWZLMEtoUDRQQlZnUExRU3VmSzBLaFA0UEJFQW9NUW9TNE5rS3hOSVBCVmdQTFFZUzROa0t4TklQQmorWUpRcFVOUFVLYlMwekIwczNOUVpVTlBVS2JTMHpCcUV6TVFYYWtPMEpKOVVuQlFFTUtRdithTzBLTmdrckIwczNOUWJMaEtFSWorU3JCS0lZS1FyTGhLRUlqK1NyQktJWUtRcS9lSzBLYTdDL0IwczNOUWEvZUswS2E3Qy9CaWxvTFFqQmRMVUpkWmpMQnFFek1RVEJkTFVKZFpqTEJFQW9NUWpXZUwwSm9JamJCVmdQTFFUV2VMMEpvSWpiQkVBb01RcVhlT1VJN0ZrZkJWZ1BMUWFYZU9VSTdGa2ZCaitZSlFpeEhSVUtnRGh2QjBzM05RU3hIUlVLZ0RodkJxRXpNUWNjeVJFSVJ2UmJCUUVNS1FsRXBSRUpYU2hmQjBzM05RYmpYTlVMNnc3ckFLSVlLUXJqWE5VTDZ3N3JBS0lZS1FqTWhPRUwrRDgzQTBzM05RVE1oT0VMK0Q4M0FpbG9MUXZoRk9VSUhOdGJBcUV6TVFmaEZPVUlITnRiQUVBb01RcC8vT2tJY0ErVEFWZ1BMUVovL09rSWNBK1RBRUFvTVFsN1dRa0lXWnhIQlZnUExRVjdXUWtJV1p4SEJqK1lKUW1pV1VVS01VUFRBMHMzTlFXaVdVVUtNVVBUQXFFek1RZE1BVVVLVkIrbkFRRU1LUWwzM1VFSWdJdXJBMHMzTlFZQTlTVUtXSnliQUtJWUtRb0E5U1VLV0p5YkEwczNOUVFrZllFSzJxcnEvS0lZS1Fna2ZZRUsycXJxL0tJWUtRbHQ2U2tKNTkxWEFLSVlLUWdjZllFTEhGUkhBMHMzTlFWdDZTa0o1OTFYQTBzM05RUWNmWUVMSEZSSEFpbG9MUXN3WVMwS0UzMjNBcUV6TVFjd1lTMEtFMzIzQUVBb01RczRIVEVMeTk0akFWZ1BMUWM0SFRFTHk5NGpBRUFvTVFpZENVRUpyRU52QVZnUExRU2RDVUVKckVOdkFZRUUyQUFBQUNwUEpQZ0FBQUFBQUFBQUFBQUFBQUEyVHlUSU5rOGsrQUFBQUFBMlR5YjROazhreUxuamhRUVlmWUVLZ1A0UEJRRUVnUndBQTR3Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQS9BQUFBQUFBQUFBQUFBSUE5QUFBQUFBQUFBQUFBQUlBL0FBQ0FQUUFBZ0Q4QUFBQUFBQUNBUHdBQWdEMEFBQUFBQUFDQVBRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBnQUFnRDhBQUFBK0FBQ0FQd0FBQUQ0QUFBQUFBQUFBUGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDRBQUlBL0FBQkFQZ0FBZ0Q4QUFFQStBQUFBQUFBQVFENEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBK0FBQ0FQd0FBZ0Q0QUFJQS9BQUNBUGdBQUFBQUFBSUErQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dQZ0FBZ0Q4QUFLQStBQUNBUHdBQW9ENEFBQUFBQUFDZ1BnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0Q0QUFJQS9BQURBUGdBQWdEOEFBTUErQUFBQUFBQUF3RDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQStBQUNBUHdBQTRENEFBSUEvQUFEZ1BnQUFBQUFBQU9BK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHdBQWdEOEFBQUEvQUFDQVB3QUFBRDhBQUFBQUFBQUFQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvL0R6OEFBSUEvLy84UFB3QUFnRC8vL3c4L0FBQUFBUC8vRHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0EvQUFDQVB3QUFJRDhBQUlBL0FBQWdQd0FBQUFBQUFDQS9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd1B3QUFnRDhBQURBL0FBQ0FQd0FBTUQ4QUFBQUFBQUF3UHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDhBQUlBL0FBQkFQd0FBZ0Q4QUFFQS9BQUFBQUFBQVFEOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLzA4L0FBQ0FQLy8vVHo4QUFJQS8vLzlQUHdBQUFBRC8vMDgvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vOWZQd0FBZ0QvLy8xOC9BQUNBUC8vL1h6OEFBQUFBLy85ZlB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0Q4QUFJQS9BQUJ3UHdBQUFBQUFBSUEvQUFDQVB3QUFnRDhBQUlBL0FBQndQd0FBZ0Q4QUFJQS9BQUFBQUFBQWNEOEFBQUFBQUFDQVB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JCemUwQUFQWVFBQUFCQUFJQUJ3QUFBQU1BQVFBSEFBSUFCQUFGQUFjQUFnQUJBQVFBQndBRkFBWUFCd0FIQUFVQUJBQUdBQWNBQndBSUFBa0FCd0FIQUFZQUNBQUhBQWtBQ2dBTEFBY0FDUUFJQUFvQUJ3QUxBQXdBRFFBSEFBc0FDZ0FNQUFjQURRQU9BQThBQndBTkFBd0FEZ0FIQUE4QUVBQVJBQWNBRHdBT0FCQUFCd0FSQUJJQUV3QUhBQkVBRUFBU0FBY0FFd0FVQUJVQUJ3QVRBQklBRkFBSEFCVUFGZ0FYQUFjQUZRQVVBQllBQndBWEFCZ0FHUUFIQUJjQUZnQVlBQWNBR1FBYUFCc0FCd0FaQUJnQUdnQUhBQnNBSEFBZEFBY0FHd0FhQUJ3QUJ3QWNBQjRBSFFBSEFCd0FId0FlQUFjQUh3QWdBQjRBQndBZkFDRUFJQUFIQUNFQUlnQWdBQWNBSVFBakFDSUFCd0FqQUNRQUlnQUhBQ01BSlFBa0FBY0FKUUFtQUNRQUJ3QWxBQ2NBSmdBSEFDY0FLQUFtQUFjQUp3QXBBQ2dBQndBcEFDb0FLQUFIQUNrQUt3QXFBQWNBS3dBc0FDb0FCd0FyQUMwQUxBQUhBQzBBTGdBc0FBY0FMUUF2QUM0QUJ3QXZBREFBTGdBSEFDOEFNUUF3QUFjQU1RQXlBREFBQndBeEFETUFNZ0FIQURNQU5BQXlBQWNBTXdBMUFEUUFCd0ExQURZQU5BQUhBRFVBTndBMkFBY0FOd0E0QURZQUJ3QTNBRGtBT0FBSEFEa0FPZ0E0QUFjQU9RQTdBRG9BQndBN0FEd0FPZ0FIQURzQVBRQThBQWNBUFFBK0FEd0FCd0E5QUQ4QVBnQUhBRDhBUUFBK0FBY0FQd0JCQUVBQUJ3QkJBRUlBUUFBSEFFRUFRd0JDQUFjQVF3QkVBRUlBQndCREFFVUFSQUFIQUVVQVJnQkVBQWNBUlFCSEFFWUFCd0JIQUVnQVJnQUhBRWNBU1FCSUFBY0FTUUJLQUVnQUJ3QkpBRXNBU2dBSEFFc0FUQUJLQUFjQVN3Qk5BRXdBQndCTkFFNEFUQUFIQUUwQVR3Qk9BQWNBVGdCUUFGRUFCd0JPQUU4QVVBQUhBRkVBVWdCVEFBY0FVUUJRQUZJQUJ3QlRBRlFBVlFBSEFGTUFVZ0JVQUFjQVZRQldBRmNBQndCVkFGUUFWZ0FIQUZjQVdBQlpBQWNBVndCV0FGZ0FCd0JaQUZvQVd3QUhBRmtBV0FCYUFBY0FXd0JjQUYwQUJ3QmJBRm9BWEFBSEFGMEFYZ0JmQUFjQVhRQmNBRjRBQndCZkFHQUFZUUFIQUY4QVhnQmdBQWNBWVFCaUFHTUFCd0JoQUdBQVlnQUhBR01BQXdBQUFBY0FZd0JpQUFNQUJ3QURBR1FBQVFBSEFBTUFaUUJrQUFjQUFRQm1BQVFBQndBQkFHUUFaZ0FIQUFRQVp3QUdBQWNBQkFCbUFHY0FCd0FHQUdnQUNBQUhBQVlBWndCb0FBY0FDQUJwQUFvQUJ3QUlBR2dBYVFBSEFBb0FhZ0FNQUFjQUNnQnBBR29BQndBTUFHc0FEZ0FIQUF3QWFnQnJBQWNBRGdCc0FCQUFCd0FPQUdzQWJBQUhBQkFBYlFBU0FBY0FFQUJzQUcwQUJ3QVNBRzRBRkFBSEFCSUFiUUJ1QUFjQUZBQnZBQllBQndBVUFHNEFid0FIQUJZQWNBQVlBQWNBRmdCdkFIQUFCd0FZQUhFQUdnQUhBQmdBY0FCeEFBY0FHZ0J5QUJ3QUJ3QWFBSEVBY2dBSEFISUFId0FjQUFjQWNnQnpBQjhBQndCekFDRUFId0FIQUhNQWRBQWhBQWNBZEFBakFDRUFCd0IwQUhVQUl3QUhBSFVBSlFBakFBY0FkUUIyQUNVQUJ3QjJBQ2NBSlFBSEFIWUFkd0FuQUFjQWR3QXBBQ2NBQndCM0FIZ0FLUUFIQUhnQUt3QXBBQWNBZUFCNUFDc0FCd0I1QUMwQUt3QUhBSGtBZWdBdEFBY0FlZ0F2QUMwQUJ3QjZBSHNBTHdBSEFIc0FNUUF2QUFjQWV3QjhBREVBQndCOEFETUFNUUFIQUh3QWZRQXpBQWNBZlFBMUFETUFCd0I5QUg0QU5RQUhBSDRBTndBMUFBY0FmZ0IvQURjQUJ3Qi9BRGtBTndBSEFIOEFnQUE1QUFjQWdBQTdBRGtBQndDQUFJRUFPd0FIQUlFQVBRQTdBQWNBZ1FDQ0FEMEFCd0NDQUQ4QVBRQUhBSUlBZ3dBL0FBY0Fnd0JCQUQ4QUJ3Q0RBSVFBUVFBSEFJUUFRd0JCQUFjQWhBQ0ZBRU1BQndDRkFFVUFRd0FIQUlVQWhnQkZBQWNBaGdCSEFFVUFCd0NHQUljQVJ3QUhBSWNBU1FCSEFBY0Fod0NJQUVrQUJ3Q0lBRXNBU1FBSEFJZ0FpUUJMQUFjQWlRQk5BRXNBQndDSkFJb0FUUUFIQUlvQVR3Qk5BQWNBaWdDTEFFOEFCd0JQQUl3QVVBQUhBRThBaXdDTUFBY0FVQUNOQUZJQUJ3QlFBSXdBalFBSEFGSUFqZ0JVQUFjQVVnQ05BSTRBQndCVUFJOEFWZ0FIQUZRQWpnQ1BBQWNBVmdDUUFGZ0FCd0JXQUk4QWtBQUhBRmdBa1FCYUFBY0FXQUNRQUpFQUJ3QmFBSklBWEFBSEFGb0FrUUNTQUFjQVhBQ1RBRjRBQndCY0FKSUFrd0FIQUY0QWxBQmdBQWNBWGdDVEFKUUFCd0JnQUpVQVlnQUhBR0FBbEFDVkFBY0FZZ0JsQUFNQUJ3QmlBSlVBWlFBSEFHUUFsZ0NYQUFjQVpBQmxBSllBQndCa0FKZ0FaZ0FIQUdRQWx3Q1lBQWNBWmdDWkFHY0FCd0JtQUpnQW1RQUhBR2NBbWdCb0FBY0Fad0NaQUpvQUJ3Qm9BSnNBYVFBSEFHZ0FtZ0NiQUFjQWFRQ2NBR29BQndCcEFKc0FuQUFIQUdvQW5RQnJBQWNBYWdDY0FKMEFCd0JyQUo0QWJBQUhBR3NBblFDZUFBY0FiQUNmQUcwQUJ3QnNBSjRBbndBSEFHMEFvQUJ1QUFjQWJRQ2ZBS0FBQndCdUFLRUFid0FIQUc0QW9BQ2hBQWNBYndDaUFIQUFCd0J2QUtFQW9nQUhBSEFBb3dCeEFBY0FjQUNpQUtNQUJ3QnhBS1FBY2dBSEFIRUFvd0NrQUFjQXBBQnpBSElBQndDa0FLVUFjd0FIQUtVQWRBQnpBQWNBcFFDbUFIUUFCd0NtQUhVQWRBQUhBS1lBcHdCMUFBY0Fwd0IyQUhVQUJ3Q25BS2dBZGdBSEFLZ0Fkd0IyQUFjQXFBQ3BBSGNBQndDcEFIZ0Fkd0FIQUtrQXFnQjRBQWNBcWdCNUFIZ0FCd0NxQUtzQWVRQUhBS3NBZWdCNUFBY0Fxd0NzQUhvQUJ3Q3NBSHNBZWdBSEFLd0FyUUI3QUFjQXJRQjhBSHNBQndDdEFLNEFmQUFIQUs0QWZRQjhBQWNBcmdDdkFIMEFCd0N2QUg0QWZRQUhBSzhBc0FCK0FBY0FzQUIvQUg0QUJ3Q3dBTEVBZndBSEFMSUFmd0N4QUFjQXNnQ0FBSDhBQndDekFJQUFzZ0FIQUxNQWdRQ0FBQWNBdEFDQkFMTUFCd0MwQUlJQWdRQUhBTFVBZ2dDMEFBY0F0UUNEQUlJQUJ3QzJBSU1BdFFBSEFMWUFoQUNEQUFjQXR3Q0VBTFlBQndDM0FJVUFoQUFIQUxnQWhRQzNBQWNBdUFDR0FJVUFCd0M1QUlZQXVBQUhBTGtBaHdDR0FBY0F1Z0NIQUxrQUJ3QzZBSWdBaHdBSEFMc0FpQUM2QUFjQXV3Q0pBSWdBQndDOEFJa0F1d0FIQUx3QWlnQ0pBQWNBdlFDS0FMd0FCd0M5QUlzQWlnQUhBSXdBdlFDK0FBY0FqQUNMQUwwQUJ3Q05BTDRBdndBSEFJMEFqQUMrQUFjQWpnQy9BTUFBQndDT0FJMEF2d0FIQUk4QXdBREJBQWNBandDT0FNQUFCd0NRQU1FQXdnQUhBSkFBandEQkFBY0FrUURDQU1NQUJ3Q1JBSkFBd2dBSEFKSUF3d0RFQUFjQWtnQ1JBTU1BQndDVEFNUUF4UUFIQUpNQWtnREVBQWNBbEFERkFNWUFCd0NVQUpNQXhRQUhBSlVBeGdESEFBY0FsUUNVQU1ZQUJ3QmxBTWNBbGdBSEFHVUFsUURIQUFjQXhBRElBTVVBQndERUFNa0F5QUFIQU1nQXhnREZBQWNBeUFES0FNWUFCd0RLQU1jQXhnQUhBTW9BeXdESEFBY0F6QUNZQUpjQUJ3RE1BTTBBbUFBSEFNMEFtUUNZQUFjQXpRRE9BSmtBQndET0FKb0FtUUFIQU00QXp3Q2FBQWNBMEFDZEFKd0FCd0RRQU5FQW5RQUhBTkVBbmdDZEFBY0EwUURTQUo0QUJ3RFNBSjhBbmdBSEFOSUEwd0NmQUFjQTFBQ2hBTlVBQndEVUFLSUFvUUFIQU5ZQW9nRFVBQWNBMWdDakFLSUFCd0RYQUtNQTFnQUhBTmNBcEFDakFBY0EyQUNtQU5rQUJ3RFlBS2NBcGdBSEFOb0Fwd0RZQUFjQTJnQ29BS2NBQndEYkFLZ0EyZ0FIQU5zQXFRQ29BQWNBM0FDckFOMEFCd0RjQUt3QXF3QUhBSzBBM0FEZUFBY0FyUUNzQU53QUJ3Q3VBTjRBM3dBSEFLNEFyUURlQUFjQXNRRGdBT0VBQndDeEFMQUE0QUFIQUxJQTRRRGlBQWNBc2dDeEFPRUFCd0N6QU9JQTR3QUhBTE1Bc2dEaUFBY0F0Z0RrQU9VQUJ3QzJBTFVBNUFBSEFMY0E1UURtQUFjQXR3QzJBT1VBQndDNEFPWUE1d0FIQUxnQXR3RG1BQWNBdWdEb0FMc0FCd0M2QU9rQTZBQUhBTHNBNmdDOEFBY0F1d0RvQU9vQUJ3QzhBT3NBdlFBSEFMd0E2Z0RyQUFjQXZ3RHNBTUFBQndDL0FPMEE3QUFIQU1BQTdnREJBQWNBd0FEc0FPNEFCd0RCQU84QXdnQUhBTUVBN2dEdkFBY0F5UUR3QU1nQUJ3REpBUEVBOEFBSEFQQUF5Z0RJQUFjQThBRHlBTW9BQndEeUFNc0F5Z0FIQVBJQTh3RExBQWNBOUFETkFNd0FCd0QwQVBVQXpRQUhBUFVBemdETkFBY0E5UUQyQU00QUJ3RDJBTThBemdBSEFQWUE5d0RQQUFjQStBRFJBTkFBQndENEFQa0EwUUFIQVBrQTBnRFJBQWNBK1FENkFOSUFCd0Q2QU5NQTBnQUhBUG9BK3dEVEFBY0EvQURWQVAwQUJ3RDhBTlFBMVFBSEFQNEExQUQ4QUFjQS9nRFdBTlFBQndEL0FOWUEvZ0FIQVA4QTF3RFdBQWNBQUFIWkFBRUJCd0FBQWRnQTJRQUhBQUlCMkFBQUFRY0FBZ0hhQU5nQUJ3QURBZG9BQWdFSEFBTUIyd0RhQUFjQUJBSGRBQVVCQndBRUFkd0EzUUFIQU40QUJBRUdBUWNBM2dEY0FBUUJCd0RmQUFZQkJ3RUhBTjhBM2dBR0FRY0E0UUFJQVFrQkJ3RGhBT0FBQ0FFSEFPSUFDUUVLQVFjQTRnRGhBQWtCQndEakFBb0JDd0VIQU9NQTRnQUtBUWNBNVFBTUFRMEJCd0RsQU9RQURBRUhBT1lBRFFFT0FRY0E1Z0RsQUEwQkJ3RG5BQTRCRHdFSEFPY0E1Z0FPQVFjQTZRQVFBZWdBQndEcEFCRUJFQUVIQU9nQUVnSHFBQWNBNkFBUUFSSUJCd0RxQUJNQjZ3QUhBT29BRWdFVEFRY0E3UUFVQWV3QUJ3RHRBQlVCRkFFSEFPd0FGZ0h1QUFjQTdBQVVBUllCQndEdUFCY0I3d0FIQU80QUZnRVhBUWNBR0FFWkFmRUFCd0FZQVJvQkdRRUhBUEVBR3dId0FBY0E4UUFaQVJzQkJ3QWJBZklBOEFBSEFCc0JIQUh5QUFjQUhBSHpBUElBQndBY0FSMEI4d0FIQUIwQkhnSHpBQWNBSFFFZkFSNEJCd0FmQWZRQUhnRUhBQjhCSUFIMEFBY0FJQUgxQVBRQUJ3QWdBU0VCOVFBSEFDRUI5Z0QxQUFjQUlRRWlBZllBQndBaUFmY0E5Z0FIQUNJQkl3SDNBQWNBSXdFa0FmY0FCd0FqQVNVQkpBRUhBQ1VCK0FBa0FRY0FKUUVtQWZnQUJ3QW1BZmtBK0FBSEFDWUJKd0g1QUFjQUp3SDZBUGtBQndBbkFTZ0IrZ0FIQUNnQit3RDZBQWNBS0FFcEFmc0FCd0FwQVNvQit3QUhBQ2tCS3dFcUFRY0FMQUVxQVNzQkJ3QXNBZjBBS2dFSEFDMEIvUUFzQVFjQUxRSDhBUDBBQndBdUFmd0FMUUVIQUM0Qi9nRDhBQWNBTHdIK0FDNEJCd0F2QWY4QS9nQUhBREFCL3dBdkFRY0FNQUV4QWY4QUJ3QXlBVEVCTUFFSEFESUJBUUV4QVFjQU13RUJBVElCQndBekFRQUJBUUVIQURRQkFBRXpBUWNBTkFFQ0FRQUJCd0ExQVFJQk5BRUhBRFVCQXdFQ0FRY0FOZ0VEQVRVQkJ3QTJBVGNCQXdFSEFEZ0JOd0UyQVFjQU9BRUZBVGNCQndBNUFRVUJPQUVIQURrQkJBRUZBUWNBQmdFNUFUb0JCd0FHQVFRQk9RRUhBQWNCT2dFN0FRY0FCd0VHQVRvQkJ3QThBVHNCUFFFSEFEd0JCd0U3QVFjQUNBRTlBVDRCQndBSUFUd0JQUUVIQUFrQlBnRS9BUWNBQ1FFSUFUNEJCd0FLQVQ4QlFBRUhBQW9CQ1FFL0FRY0FDd0ZBQVVFQkJ3QUxBUW9CUUFFSEFFSUJRUUZEQVFjQVFnRUxBVUVCQndBTUFVTUJSQUVIQUF3QlFnRkRBUWNBRFFGRUFVVUJCd0FOQVF3QlJBRUhBQTRCUlFGR0FRY0FEZ0VOQVVVQkJ3QVBBVVlCUndFSEFBOEJEZ0ZHQVFjQUR3RklBVWtCQndBUEFVY0JTQUVIQUVrQlNnRVJBUWNBU1FGSUFVb0JCd0FSQVVzQkVBRUhBQkVCU2dGTEFRY0FFQUZNQVJJQkJ3QVFBVXNCVEFFSEFCSUJUUUVUQVFjQUVnRk1BVTBCQndBVEFVNEJUd0VIQUJNQlRRRk9BUWNBVHdGUUFSVUJCd0JQQVU0QlVBRUhBQlVCVVFFVUFRY0FGUUZRQVZFQkJ3QVVBVklCRmdFSEFCUUJVUUZTQVFjQUZnRlRBUmNCQndBV0FWSUJVd0VIQUJjQkdnRVlBUWNBRndGVEFSb0JCd0FaQVZRQlZRRUhBQmtCR2dGVUFRY0FHd0ZWQVZZQkJ3QWJBUmtCVlFFSEFGY0JHd0ZXQVFjQVZ3RWNBUnNCQndCWUFSd0JWd0VIQUZnQkhRRWNBUWNBV1FFZEFWZ0JCd0JaQVI4QkhRRUhBRm9CSHdGWkFRY0FXZ0VnQVI4QkJ3QmJBU0FCV2dFSEFGc0JJUUVnQVFjQVhBRWhBVnNCQndCY0FTSUJJUUVIQUYwQklnRmNBUWNBWFFFakFTSUJCd0JlQVNNQlhRRUhBRjRCSlFFakFRY0FYd0VsQVY0QkJ3QmZBU1lCSlFFSEFHQUJKZ0ZmQVFjQVlBRW5BU1lCQndCaEFTY0JZQUVIQUdFQktBRW5BUWNBWWdFb0FXRUJCd0JpQVNrQktBRUhBR01CS1FGaUFRY0FZd0VyQVNrQkJ3QmpBU3dCS3dFSEFHTUJaQUVzQVFjQVpBRXRBU3dCQndCa0FXVUJMUUVIQUdVQkxnRXRBUWNBWlFGbUFTNEJCd0JtQVM4QkxnRUhBR1lCWndFdkFRY0Fad0V3QVM4QkJ3Qm5BV2dCTUFFSEFHZ0JNZ0V3QVFjQWFBRnBBVElCQndCcEFUTUJNZ0VIQUdrQmFnRXpBUWNBYWdFMEFUTUJCd0JxQVdzQk5BRUhBR3NCTlFFMEFRY0Fhd0ZzQVRVQkJ3QnNBVFlCTlFFSEFHd0JiUUUyQVFjQWJRRTRBVFlCQndCdEFXNEJPQUVIQUc0Qk9RRTRBUWNBYmdGdkFUa0JCd0E1QVhBQk9nRUhBRGtCYndGd0FRY0FPZ0Z4QVRzQkJ3QTZBWEFCY1FFSEFEc0JjZ0U5QVFjQU93RnhBWElCQndBOUFYTUJQZ0VIQUQwQmNnRnpBUWNBUGdGMEFUOEJCd0ErQVhNQmRBRUhBRDhCZFFGQUFRY0FQd0YwQVhVQkJ3QkFBWFlCUVFFSEFFQUJkUUYyQVFjQVFRRjNBVU1CQndCQkFYWUJkd0VIQUVNQmVBRkVBUWNBUXdGM0FYZ0JCd0JFQVhrQlJRRUhBRVFCZUFGNUFRY0FSUUY2QVVZQkJ3QkZBWGtCZWdFSEFFWUJld0ZIQVFjQVJnRjZBWHNCQndCSUFYc0JmQUVIQUVnQlJ3RjdBUWNBU2dGOEFYMEJCd0JLQVVnQmZBRUhBRXNCZlFGK0FRY0FTd0ZLQVgwQkJ3Qk1BWDRCZndFSEFFd0JTd0YrQVFjQVRRRi9BWUFCQndCTkFVd0Jmd0VIQUU0QmdBR0JBUWNBVGdGTkFZQUJCd0JRQVlFQmdnRUhBRkFCVGdHQkFRY0FVUUdDQVlNQkJ3QlJBVkFCZ2dFSEFGSUJnd0dFQVFjQVVnRlJBWU1CQndCVEFZUUJoUUVIQUZNQlVnR0VBUWNBR2dHRkFWUUJCd0FhQVZNQmhRRUhBRlVCaGdHSEFRY0FWUUZVQVlZQkJ3QldBWWNCaUFFSEFGWUJWUUdIQVFjQWlRRldBWWdCQndDSkFWY0JWZ0VIQUlvQlZ3R0pBUWNBaWdGWUFWY0JCd0NMQVZnQmlnRUhBSXNCV1FGWUFRY0FqQUZaQVlzQkJ3Q01BVm9CV1FFSEFJMEJXZ0dNQVFjQWpRRmJBVm9CQndDT0FWc0JqUUVIQUk0QlhBRmJBUWNBandGY0FZNEJCd0NQQVYwQlhBRUhBSkFCWFFHUEFRY0FrQUZlQVYwQkJ3Q1JBVjRCa0FFSEFKRUJYd0ZlQVFjQWtnRmZBWkVCQndDU0FXQUJYd0VIQUpNQllBR1NBUWNBa3dGaEFXQUJCd0NVQVdFQmt3RUhBSlFCWWdGaEFRY0FsUUZpQVpRQkJ3Q1ZBV01CWWdFSEFKVUJaQUZqQVFjQWxRR1dBV1FCQndDV0FXVUJaQUVIQUpZQmx3RmxBUWNBbHdGbUFXVUJCd0NYQVpnQlpnRUhBSmdCWndGbUFRY0FtQUdaQVdjQkJ3Q1pBV2dCWndFSEFKa0JtZ0ZvQVFjQW1nRnBBV2dCQndDYUFac0JhUUVIQUpzQmFnRnBBUWNBbXdHY0FXb0JCd0NjQVdzQmFnRUhBSndCblFGckFRY0FuUUZzQVdzQkJ3Q2RBWjRCYkFFSEFKNEJiUUZzQVFjQW5nR2ZBVzBCQndDZkFXNEJiUUVIQUo4Qm9BRnVBUWNBb0FGdkFXNEJCd0NnQWFFQmJ3RUhBRzhCb2dGd0FRY0Fid0doQWFJQkJ3QndBYU1CY1FFSEFIQUJvZ0dqQVFjQWNRR2tBWElCQndCeEFhTUJwQUVIQUhJQnBRRnpBUWNBY2dHa0FhVUJCd0J6QWFZQmRBRUhBSE1CcFFHbUFRY0FkQUduQVhVQkJ3QjBBYVlCcHdFSEFIVUJxQUYyQVFjQWRRR25BYWdCQndCMkFha0Jkd0VIQUhZQnFBR3BBUWNBZHdHcUFYZ0JCd0IzQWFrQnFnRUhBSGdCcXdGNUFRY0FlQUdxQWFzQkJ3QjVBYXdCZWdFSEFIa0Jxd0dzQVFjQWVnR3RBWHNCQndCNkFhd0JyUUVIQUh3QnJRR3VBUWNBZkFGN0FhMEJCd0I5QWE0QnJ3RUhBSDBCZkFHdUFRY0FmZ0d2QWJBQkJ3QitBWDBCcndFSEFIOEJzQUd4QVFjQWZ3RitBYkFCQndDQUFiRUJzZ0VIQUlBQmZ3R3hBUWNBZ1FHeUFiTUJCd0NCQVlBQnNnRUhBSUlCc3dHMEFRY0FnZ0dCQWJNQkJ3Q0RBYlFCdFFFSEFJTUJnZ0cwQVFjQWhBRzFBYllCQndDRUFZTUJ0UUVIQUlVQnRnRzNBUWNBaFFHRUFiWUJCd0JVQWJjQmhnRUhBRlFCaFFHM0FRY0Fod0c0QWJrQkJ3Q0hBWVlCdUFFSEFJZ0J1UUc2QVFjQWlBR0hBYmtCQndDN0FZZ0J1Z0VIQUxzQmlRR0lBUWNBdkFHSkFic0JCd0M4QVlvQmlRRUhBTDBCaWdHOEFRY0F2UUdMQVlvQkJ3QytBWXNCdlFFSEFMNEJqQUdMQVFjQXZ3R01BYjRCQndDL0FZMEJqQUVIQU1BQmpRRy9BUWNBd0FHT0FZMEJCd0RCQVk0QndBRUhBTUVCandHT0FRY0F3Z0dQQWNFQkJ3RENBWkFCandFSEFNTUJrQUhDQVFjQXd3R1JBWkFCQndERUFaRUJ3d0VIQU1RQmtnR1JBUWNBeFFHU0FjUUJCd0RGQVpNQmtnRUhBTVlCa3dIRkFRY0F4Z0dVQVpNQkJ3REhBWlFCeGdFSEFNY0JsUUdVQVFjQXh3R1dBWlVCQndESEFjZ0JsZ0VIQU1nQmx3R1dBUWNBeUFISkFaY0JCd0RKQVpnQmx3RUhBTWtCeWdHWUFRY0F5Z0daQVpnQkJ3REtBY3NCbVFFSEFNc0JtZ0daQVFjQXl3SE1BWm9CQndETUFac0JtZ0VIQU13QnpRR2JBUWNBelFHY0Fac0JCd0ROQWM0Qm5BRUhBTTRCblFHY0FRY0F6Z0hQQVowQkJ3RFBBWjRCblFFSEFNOEIwQUdlQVFjQTBBR2ZBWjRCQndEUUFkRUJud0VIQU5FQm9BR2ZBUWNBMFFIU0FhQUJCd0RTQWFFQm9BRUhBTklCMHdHaEFRY0FvUUhVQWFJQkJ3Q2hBZE1CMUFFSEFLSUIxUUdqQVFjQW9nSFVBZFVCQndDakFkWUJwQUVIQUtNQjFRSFdBUWNBcEFIWEFhVUJCd0NrQWRZQjF3RUhBS1VCMkFHbUFRY0FwUUhYQWRnQkJ3Q21BZGtCcHdFSEFLWUIyQUhaQVFjQXB3SGFBYWdCQndDbkFka0IyZ0VIQUtnQjJ3R3BBUWNBcUFIYUFkc0JCd0NwQWR3QnFnRUhBS2tCMndIY0FRY0FxZ0hkQWFzQkJ3Q3FBZHdCM1FFSEFLc0IzZ0dzQVFjQXF3SGRBZDRCQndDc0FkOEJyUUVIQUt3QjNnSGZBUWNBcmdIZkFlQUJCd0N1QWEwQjN3RUhBSzhCNEFIaEFRY0Fyd0d1QWVBQkJ3Q3dBZUVCNGdFSEFMQUJyd0hoQVFjQXNRSGlBZU1CQndDeEFiQUI0Z0VIQUxJQjR3SGtBUWNBc2dHeEFlTUJCd0N6QWVRQjVRRUhBTE1Cc2dIa0FRY0F0QUhsQWVZQkJ3QzBBYk1CNVFFSEFMVUI1Z0huQVFjQXRRRzBBZVlCQndDMkFlY0I2QUVIQUxZQnRRSG5BUWNBdHdIb0Fla0JCd0MzQWJZQjZBRUhBSVlCNlFHNEFRY0FoZ0czQWVrQkJ3QzRBZW9CdVFFSEFMZ0I2d0hxQVFjQXVRSHNBYm9CQndDNUFlb0I3QUVIQU93QnV3RzZBUWNBN0FIdEFic0JCd0R0QWJ3QnV3RUhBTzBCN2dHOEFRY0E3Z0c5QWJ3QkJ3RHVBZThCdlFFSEFPOEJ2Z0c5QVFjQTd3SHdBYjRCQndEd0FiOEJ2Z0VIQVBBQjhRRy9BUWNBOFFIQUFiOEJCd0R4QWZJQndBRUhBUElCd1FIQUFRY0E4Z0h6QWNFQkJ3RHpBY0lCd1FFSEFQTUI5QUhDQVFjQTlBSERBY0lCQndEMEFmVUJ3d0VIQVBVQnhBSERBUWNBOVFIMkFjUUJCd0QyQWNVQnhBRUhBUFlCOXdIRkFRY0E5d0hHQWNVQkJ3RDNBZmdCeGdFSEFQZ0J4d0hHQVFjQStBSDVBY2NCQndENUFjZ0J4d0VIQVBrQitnSElBUWNBK2dISkFjZ0JCd0Q2QWZzQnlRRUhBUHNCeWdISkFRY0Erd0g4QWNvQkJ3RDhBY3NCeWdFSEFQd0IvUUhMQVFjQS9RSE1BY3NCQndEOUFmNEJ6QUVIQVA0QnpRSE1BUWNBL2dIL0FjMEJCd0QvQWM0QnpRRUhBUDhCQUFMT0FRY0FBQUxQQWM0QkJ3QUFBZ0VDendFSEFBRUMwQUhQQVFjQUFRSUNBdEFCQndBQ0F0RUIwQUVIQUFJQ0F3TFJBUWNBQXdMU0FkRUJCd0FEQWdRQzBnRUhBQVFDMHdIU0FRY0FCQUlGQXRNQkJ3RFRBUVlDMUFFSEFOTUJCUUlHQWdjQTFBRUhBdFVCQndEVUFRWUNCd0lIQU5VQkNBTFdBUWNBMVFFSEFnZ0NCd0RXQVFrQzF3RUhBTllCQ0FJSkFnY0Exd0VLQXRnQkJ3RFhBUWtDQ2dJSEFOZ0JDd0xaQVFjQTJBRUtBZ3NDQndEWkFRd0MyZ0VIQU5rQkN3SU1BZ2NBMmdFTkF0c0JCd0RhQVF3Q0RRSUhBTnNCRGdMY0FRY0Eyd0VOQWc0Q0J3RGNBUThDM1FFSEFOd0JEZ0lQQWdjQTNRRVFBdDRCQndEZEFROENFQUlIQU40QkVRTGZBUWNBM2dFUUFoRUNCd0RmQVJJQzRBRUhBTjhCRVFJU0FnY0E0QUVUQXVFQkJ3RGdBUklDRXdJSEFPRUJGQUxpQVFjQTRRRVRBaFFDQndEaUFSVUM0d0VIQU9JQkZBSVZBZ2NBNHdFV0F1UUJCd0RqQVJVQ0ZnSUhBT1FCRndMbEFRY0E1QUVXQWhjQ0J3RGxBUmdDNWdFSEFPVUJGd0lZQWdjQTVnRVpBdWNCQndEbUFSZ0NHUUlIQU9jQkdnTG9BUWNBNXdFWkFob0NCd0RvQVJzQzZRRUhBT2dCR2dJYkFnY0E2UUhyQWJnQkJ3RHBBUnNDNndFSEFCd0N4QUFkQWdjQUhBTEpBTVFBQndERUFCNENIUUlIQU1RQXd3QWVBZ2NBSHdMSEFDQUNCd0FmQXBZQXh3QUhBTWNBSVFJZ0FnY0F4d0RMQUNFQ0J3QWlBcFlBSHdJSEFDSUNsd0NXQUFjQUl3S1hBQ0lDQndBakFzd0Fsd0FIQUNRQ21nQWxBZ2NBSkFLYkFKb0FCd0NhQUNZQ0pRSUhBSm9BendBbUFnY0FKd0tiQUNRQ0J3QW5BcHdBbXdBSEFDZ0NuQUFuQWdjQUtBTFFBSndBQndBcEFwOEFLZ0lIQUNrQ29BQ2ZBQWNBbndBckFpb0NCd0NmQU5NQUt3SUhBQ3dDb0FBcEFnY0FMQUtoQUtBQUJ3RFZBQ3dDTFFJSEFOVUFvUUFzQWdjQUxnTFhBQzhDQndBdUFxUUExd0FIQURBQ3BBQXVBZ2NBTUFLbEFLUUFCd0F4QXFVQU1BSUhBREVDcGdDbEFBY0EyUUF4QWpJQ0J3RFpBS1lBTVFJSEFETUMyd0EwQWdjQU13S3BBTnNBQndBMUFxa0FNd0lIQURVQ3FnQ3BBQWNBTmdLcUFEVUNCd0EyQXFzQXFnQUhBTjBBTmdJM0FnY0EzUUNyQURZQ0J3QTRBdDhBT1FJSEFEZ0NyZ0RmQUFjQXJ3QTRBam9DQndDdkFLNEFPQUlIQUxBQU9nSTdBZ2NBc0FDdkFEb0NCd0RnQURzQ1BBSUhBT0FBc0FBN0FnY0FQUUxqQUQ0Q0J3QTlBck1BNHdBSEFMUUFQUUkvQWdjQXRBQ3pBRDBDQndDMUFEOENRQUlIQUxVQXRBQS9BZ2NBNUFCQUFrRUNCd0RrQUxVQVFBSUhBRUlDNXdCREFnY0FRZ0s0QU9jQUJ3QzVBRUlDUkFJSEFMa0F1QUJDQWdjQVJRSzZBRVlDQndCRkF1a0F1Z0FIQUxvQVJBSkdBZ2NBdWdDNUFFUUNCd0M5QUVjQ1NBSUhBTDBBNndCSEFnY0F2Z0JJQWtrQ0J3QytBTDBBU0FJSEFFb0N2d0JMQWdjQVNnTHRBTDhBQndDL0FFa0NTd0lIQUw4QXZnQkpBZ2NBd2dCTUFrMENCd0RDQU84QVRBSUhBTU1BVFFJZUFnY0F3d0RDQUUwQ0J3Qk9Bc2tBSEFJSEFFNEM4UURKQUFjQVR3THhBRTRDQndCUEFoZ0I4UUFIQVBNQVVBSlJBZ2NBOHdBZUFWQUNCd0RMQUZFQ0lRSUhBTXNBOHdCUkFnY0FVZ0xNQUNNQ0J3QlNBdlFBekFBSEFCNEJVZ0pRQWdjQUhnSDBBRklDQndEM0FGTUNWQUlIQVBjQUpBRlRBZ2NBendCVUFpWUNCd0RQQVBjQVZBSUhBRlVDMEFBb0FnY0FWUUw0QU5BQUJ3QWtBVlVDVXdJSEFDUUIrQUJWQWdjQSt3QldBbGNDQndEN0FDb0JWZ0lIQU5NQVZ3SXJBZ2NBMHdEN0FGY0NCd0Q5QUMwQ1dBSUhBUDBBMVFBdEFnY0FLZ0ZZQWxZQ0J3QXFBZjBBV0FJSEFDOEMvd0JaQWdjQUx3TFhBUDhBQndEL0FGb0NXUUlIQVA4QU1RRmFBZ2NBQVFFeUFsc0NCd0FCQWRrQU1nSUhBREVCV3dKYUFnY0FNUUVCQVZzQ0J3QTBBZ01CWEFJSEFEUUMyd0FEQVFjQUF3RmRBbHdDQndBREFUY0JYUUlIQUFVQk53SmVBZ2NBQlFIZEFEY0NCd0EzQVY0Q1hRSUhBRGNCQlFGZUFnY0FYd0k4QVdBQ0J3QmZBZ2NCUEFFSEFEa0NCd0ZmQWdjQU9RTGZBQWNCQndCZ0FnZ0JZUUlIQUdBQ1BBRUlBUWNBQ0FFOEFtRUNCd0FJQWVBQVBBSUhBR0lDUWdGakFnY0FZZ0lMQVVJQkJ3QStBZ3NCWWdJSEFENEM0d0FMQVFjQVl3SU1BV1FDQndCakFrSUJEQUVIQUF3QlFRSmtBZ2NBREFIa0FFRUNCd0JsQWtrQlpnSUhBR1VDRHdGSkFRY0FRd0lQQVdVQ0J3QkRBdWNBRHdFSEFHY0M2UUJGQWdjQVp3SVJBZWtBQndCbUFoRUJad0lIQUdZQ1NRRVJBUWNBYUFKUEFXa0NCd0JvQWhNQlR3RUhBT3NBYUFKSEFnY0E2d0FUQVdnQ0J3QnFBdTBBU2dJSEFHb0NGUUh0QUFjQWFRSVZBV29DQndCcEFrOEJGUUVIQUdzQ0dBRlBBZ2NBYXdJWEFSZ0JCd0R2QUdzQ1RBSUhBTzhBRndGckFnY0FiQUp0QW00Q0J3QnNBbThDYlFJSEFIQUNjUUp5QWdjQWNBSnpBbkVDQndCMEFuVUNkZ0lIQUhRQ2R3SjFBZ2NBZUFKNUFub0NCd0I0QW5zQ2VRSUhBSHdDZHdKMEFnY0FmQUo5QW5jQ0J3QjdBbjRDZVFJSEFIc0Nmd0orQWdjQWdBS0JBb0lDQndDQUFvTUNnUUlIQUlRQ2hRS0dBZ2NBaEFLSEFvVUNCd0NJQW9NQ2dBSUhBSWdDaVFLREFnY0Fod0tLQW9VQ0J3Q0hBb3NDaWdJSEFJd0NqUUtPQWdjQWpBS1BBbzBDQndDUUFwRUNrZ0lIQUpBQ2t3S1JBZ2NBamdLVUFwVUNCd0NPQW8wQ2xBSUhBSllDa2dLWEFnY0FsZ0tRQXBJQ0J3Q1lBcGtDbWdJSEFKZ0Ntd0taQWdjQW5BS2RBcDRDQndDY0FwOENuUUlIQUpvQ29BS2hBZ2NBbWdLWkFxQUNCd0NpQXA0Q293SUhBS0lDbkFLZUFnY0FwQUtsQXFZQ0J3Q2tBcWNDcFFJSEFLZ0NxUUtxQWdjQXFBS3JBcWtDQndDbUFxd0NyUUlIQUtZQ3BRS3NBZ2NBcmdLcUFxOENCd0N1QXFnQ3FnSUhBTEFDc1FLeUFnY0FzQUt6QXJFQ0J3QzBBclVDdGdJSEFMUUN0d0sxQWdjQXNnSzRBcmtDQndDeUFyRUN1QUlIQUxvQ3RnSzdBZ2NBdWdLMEFyWUNCd0M4QXIwQ3ZnSUhBTHdDdndLOUFnY0F3QUxCQXNJQ0J3REFBc01Dd1FJSEFMNEN4QUxGQWdjQXZnSzlBc1FDQndER0FzSUN4d0lIQU1ZQ3dBTENBZ2NBeUFMSkFzb0NCd0RJQXNzQ3lRSUhBTXdDelFMT0FnY0F6QUxQQXMwQ0J3RFFBc3NDeUFJSEFOQUMwUUxMQWdjQXp3TFNBczBDQndEUEF0TUMwZ0lIQU5RQzFRTFdBZ2NBMUFMWEF0VUNCd0RZQXRrQzJnSUhBTmdDMndMWkFnY0EzQUxYQXRRQ0J3RGNBdDBDMXdJSEFOc0MzZ0xaQWdjQTJ3TGZBdDRDQndCdUF1QUM0UUlIQUc0Q2JRTGdBZ2NBNGdKeUF1TUNCd0RpQW5BQ2NnSUhBT1FDNGdMbEFnY0E1QUp3QXVJQ0J3RG1BbkFDNUFJSEFPWUNjd0p3QWdjQTV3SnpBdVlDQndEbkFuZ0Njd0lIQU9nQ2VBTG5BZ2NBNkFKN0FuZ0NCd0RwQW5zQzZBSUhBT2tDZndKN0FnY0E2Z0ovQXVrQ0J3RHFBb1FDZndJSEFPc0NoQUxxQWdjQTZ3S0hBb1FDQndEc0FvY0M2d0lIQU93Q2l3S0hBZ2NBN1FLTEF1d0NCd0R0QW84Q2l3SUhBSTBDN1FMdUFnY0FqUUtQQXUwQ0J3Q1VBdTRDN3dJSEFKUUNqUUx1QWdjQW13THZBdkFDQndDYkFwUUM3d0lIQUprQzhBTHhBZ2NBbVFLYkF2QUNCd0NnQXZFQzhnSUhBS0FDbVFMeEFnY0Fwd0x5QXZNQ0J3Q25BcUFDOGdJSEFLVUM4d0wwQWdjQXBRS25Bdk1DQndDc0F2UUM5UUlIQUt3Q3BRTDBBZ2NBc3dMMUF2WUNCd0N6QXF3QzlRSUhBTEVDOWdMM0FnY0FzUUt6QXZZQ0J3QzRBdmNDK0FJSEFMZ0NzUUwzQWdjQXZ3TDRBdmtDQndDL0FyZ0MrQUlIQUwwQytRTDZBZ2NBdlFLL0F2a0NCd0RFQXZvQyt3SUhBTVFDdlFMNkFnY0F6QUw3QXZ3Q0J3RE1Bc1FDK3dJSEFQMEN6QUw4QWdjQS9RTFBBc3dDQndEK0FzOEMvUUlIQVA0QzB3TFBBZ2NBL3dMVEF2NENCd0QvQXRnQzB3SUhBQUFEMkFML0FnY0FBQVBiQXRnQ0J3QUJBOXNDQUFNSEFBRUQzd0xiQWdjQTVRTGZBZ0VEQndEbEF1SUMzd0lIQUFJRDVBTGxBZ2NBQWdNREErUUNCd0FEQStZQzVBSUhBQU1EQkFQbUFnY0FCUVBtQWdRREJ3QUZBK2NDNWdJSEFBWUQ1d0lGQXdjQUJnUG9BdWNDQndBSEErZ0NCZ01IQUFjRDZRTG9BZ2NBQ0FQcEFnY0RCd0FJQStvQzZRSUhBQWtENmdJSUF3Y0FDUVByQXVvQ0J3QUtBK3NDQ1FNSEFBb0Q3QUxyQWdjQUN3UHNBZ29EQndBTEErMEM3QUlIQU80Q0N3TU1Bd2NBN2dMdEFnc0RCd0R2QWd3RERRTUhBTzhDN2dJTUF3Y0E4QUlOQXc0REJ3RHdBdThDRFFNSEFQRUNEZ01QQXdjQThRTHdBZzREQndEeUFnOERFQU1IQVBJQzhRSVBBd2NBOHdJUUF4RURCd0R6QXZJQ0VBTUhBUFFDRVFNU0F3Y0E5QUx6QWhFREJ3RDBBaE1EOVFJSEFQUUNFZ01UQXdjQTlRSVVBL1lDQndEMUFoTURGQU1IQVBZQ0ZRUDNBZ2NBOWdJVUF4VURCd0QzQWhZRCtBSUhBUGNDRlFNV0F3Y0ErQUlYQS9rQ0J3RDRBaFlERndNSEFQa0NHQVA2QWdjQStRSVhBeGdEQndENkFoa0Qrd0lIQVBvQ0dBTVpBd2NBK3dJYUEvd0NCd0Q3QWhrREdnTUhBQm9EL1FMOEFnY0FHZ01iQS8wQ0J3QWJBLzRDL1FJSEFCc0RIQVArQWdjQUhBUC9BdjRDQndBY0F4MEQvd0lIQUIwREFBUC9BZ2NBSFFNZUF3QURCd0FlQXdFREFBTUhBQjRESHdNQkF3Y0FId1BsQWdFREJ3QWZBd0lENVFJSEFDQURBZ01oQXdjQUlBTURBd0lEQndBaUF3TURJQU1IQUNJREJBTURBd2NBSXdNRUF5SURCd0FqQXdVREJBTUhBQ1FEQlFNakF3Y0FKQU1HQXdVREJ3QWxBd1lESkFNSEFDVURCd01HQXdjQUpnTUhBeVVEQndBbUF3Z0RCd01IQUNjRENBTW1Bd2NBSndNSkF3Z0RCd0FvQXdrREp3TUhBQ2dEQ2dNSkF3Y0FLUU1LQXlnREJ3QXBBd3NEQ2dNSEFBd0RLUU1xQXdjQURBTUxBeWtEQndBTkF5b0RLd01IQUEwRERBTXFBd2NBRGdNckF5d0RCd0FPQXcwREt3TUhBQThETEFNdEF3Y0FEd01PQXl3REJ3QVFBeTBETGdNSEFCQUREd010QXdjQUVRTXVBeThEQndBUkF4QURMZ01IQUJJREx3TXdBd2NBRWdNUkF5OERCd0FUQXpBRE1RTUhBQk1ERWdNd0F3Y0FGQU14QXpJREJ3QVVBeE1ETVFNSEFCVURNZ016QXdjQUZRTVVBeklEQndBV0F6TUROQU1IQUJZREZRTXpBd2NBRndNMEF6VURCd0FYQXhZRE5BTUhBQmdETlFNMkF3Y0FHQU1YQXpVREJ3QVpBellETndNSEFCa0RHQU0yQXdjQUdnTTNBemdEQndBYUF4a0ROd01IQURrREdnTTRBd2NBT1FNYkF4b0RCd0E2QXhzRE9RTUhBRG9ESEFNYkF3Y0FPd01jQXpvREJ3QTdBeDBESEFNSEFEd0RIUU03QXdjQVBBTWVBeDBEQndBOUF4NERQQU1IQUQwREh3TWVBd2NBSVFNZkF6MERCd0FoQXdJREh3TUhBRDRESVFNL0F3Y0FQZ01nQXlFREJ3QkFBeUFEUGdNSEFFQURJZ01nQXdjQVFRTWlBMEFEQndCQkF5TURJZ01IQUVJREl3TkJBd2NBUWdNa0F5TURCd0JEQXlRRFFnTUhBRU1ESlFNa0F3Y0FSQU1sQTBNREJ3QkVBeVlESlFNSEFFVURKZ05FQXdjQVJRTW5BeVlEQndCR0F5Y0RSUU1IQUVZREtBTW5Bd2NBUndNb0EwWURCd0JIQXlrREtBTUhBQ29EUndOSUF3Y0FLZ01wQTBjREJ3QXJBMGdEU1FNSEFDc0RLZ05JQXdjQUxBTkpBMG9EQndBc0F5c0RTUU1IQUMwRFNnTkxBd2NBTFFNc0Ewb0RCd0F1QTBzRFRBTUhBQzRETFFOTEF3Y0FMd05NQTAwREJ3QXZBeTREVEFNSEFEQURUUU5PQXdjQU1BTXZBMDBEQndBeEEwNERUd01IQURFRE1BTk9Bd2NBTWdOUEExQURCd0F5QXpFRFR3TUhBRE1EVUFOUkF3Y0FNd015QTFBREJ3QTBBMUVEVWdNSEFEUURNd05SQXdjQU5RTlNBMU1EQndBMUF6UURVZ01IQURZRFV3TlVBd2NBTmdNMUExTURCd0EzQTFRRFZRTUhBRGNETmdOVUF3Y0FPQU5WQTFZREJ3QTRBemNEVlFNSEFGY0RPQU5XQXdjQVZ3TTVBemdEQndCWUF6a0RWd01IQUZnRE9nTTVBd2NBV1FNNkExZ0RCd0JaQXpzRE9nTUhBRm9ET3dOWkF3Y0FXZ004QXpzREJ3QmJBendEV2dNSEFGc0RQUU04QXdjQVB3TTlBMXNEQndBL0F5RURQUU1IQUZ3RFhRTmVBd2NBWEFOZkExMERCd0JlQTJBRFlRTUhBRjREWFFOZ0F3Y0FZUU5pQTJNREJ3QmhBMkFEWWdNSEFHTURaQU5sQXdjQVl3TmlBMlFEQndCbEEyWURad01IQUdVRFpBTm1Bd2NBWndOb0Eya0RCd0JuQTJZRGFBTUhBR2tEYWdOckF3Y0FhUU5vQTJvREJ3QnJBMndEYlFNSEFHc0RhZ05zQXdjQWJBTnVBMjBEQndCc0EyOERiZ01IQUc4RGNBTnVBd2NBYndOeEEzQURCd0J4QTNJRGNBTUhBSEVEY3dOeUF3Y0Fjd04wQTNJREJ3QnpBM1VEZEFNSEFIVURkZ04wQXdjQWRRTjNBM1lEQndCM0EzZ0RkZ01IQUhjRGVRTjRBd2NBZVFONkEzZ0RCd0I1QTNzRGVnTUhBSHNEZkFONkF3Y0Fld045QTN3REJ3QitBM3dEZlFNSEFINERmd044QXdjQWdBTi9BMzREQndDQUE0RURmd01IQUlJRGdRT0FBd2NBZ2dPREE0RURCd0NFQTRNRGdnTUhBSVFEaFFPREF3Y0FoZ09GQTRRREJ3Q0dBNGNEaFFNSEFJZ0Rod09HQXdjQWlBT0pBNGNEQndDS0E0a0RpQU1IQUlvRGl3T0pBd2NBakFPS0E0MERCd0NNQTRzRGlnTUhBSTREalFPUEF3Y0FqZ09NQTQwREJ3Q1FBNDhEa1FNSEFKQURqZ09QQXdjQWtnT1JBNU1EQndDU0E1QURrUU1IQUpRRGt3T1ZBd2NBbEFPU0E1TURCd0NXQTVVRGx3TUhBSllEbEFPVkF3Y0FYQU9YQTE4REJ3QmNBNVlEbHdNSEFGOERtQU5kQXdjQVh3T1pBNWdEQndCZEE1b0RZQU1IQUYwRG1BT2FBd2NBWUFPYkEySURCd0JnQTVvRG13TUhBR1lEbkFOb0F3Y0FaZ09kQTV3REJ3Qm9BNTREYWdNSEFHZ0RuQU9lQXdjQWFnT2ZBMndEQndCcUE1NERud01IQUo4RGJ3TnNBd2NBbndPZ0EyOERCd0NoQTNVRGN3TUhBS0VEb2dOMUF3Y0FvZ04zQTNVREJ3Q2lBNk1EZHdNSEFLTURlUU4zQXdjQW93T2tBM2tEQndDa0Ezc0RlUU1IQUtRRHBRTjdBd2NBcGdOK0E2Y0RCd0NtQTRBRGZnTUhBS2dEZ0FPbUF3Y0FxQU9DQTRBREJ3Q3BBNElEcUFNSEFLa0RoQU9DQXdjQXFnT0VBNmtEQndDcUE0WURoQU1IQUkwRHF3T3NBd2NBalFPS0E2c0RCd0NQQTZ3RHJRTUhBSThEalFPc0F3Y0FrUU90QTY0REJ3Q1JBNDhEclFNSEFKTURyZ092QXdjQWt3T1JBNjREQndCZkE3QURtUU1IQUY4RGx3T3dBd2NBbVFPeEE1Z0RCd0NaQTdJRHNRTUhBSmdEc3dPYUF3Y0FtQU94QTdNREJ3Q2FBN1FEbXdNSEFKb0Rzd08wQXdjQW13TzFBN1lEQndDYkE3UUR0UU1IQUxZRHR3T2RBd2NBdGdPMUE3Y0RCd0NkQTdnRG5BTUhBSjBEdHdPNEF3Y0FuQU81QTU0REJ3Q2NBN2dEdVFNSEFKNER1Z09mQXdjQW5nTzVBN29EQndDNkE2QURud01IQUxvRHV3T2dBd2NBdXdPOEE2QURCd0M3QTcwRHZBTUhBTDBEb1FPOEF3Y0F2UU8rQTZFREJ3QytBNklEb1FNSEFMNER2d09pQXdjQXZ3T2pBNklEQndDL0E4QURvd01IQU1BRHBBT2pBd2NBd0FQQkE2UURCd0RCQTZVRHBBTUhBTUVEd2dPbEF3Y0F3Z1BEQTZVREJ3RENBOFFEd3dNSEFNVUR3d1BFQXdjQXhRT25BOE1EQndER0E2Y0R4UU1IQU1ZRHBnT25Bd2NBeHdPbUE4WURCd0RIQTZnRHBnTUhBTWdEcUFQSEF3Y0F5QU9wQTZnREJ3REpBNmtEeUFNSEFNa0RxZ09wQXdjQXlnT3FBOGtEQndES0E4c0RxZ01IQU13RHl3UEtBd2NBekFPckE4c0RCd0NzQTh3RHpRTUhBS3dEcXdQTUF3Y0FyUVBOQTg0REJ3Q3RBNndEelFNSEFLNER6Z1BQQXdjQXJnT3RBODREQndDdkE4OEQwQU1IQUs4RHJnUFBBd2NBMFFQUUE5SURCd0RSQTY4RDBBTUhBTEFEMGdQVEF3Y0FzQVBSQTlJREJ3Q1pBOU1Ec2dNSEFKa0RzQVBUQXdjQXNnUFVBN0VEQndDeUE5VUQxQU1IQUxFRDFnT3pBd2NBc1FQVUE5WURCd0N6QTljRHRBTUhBTE1EMWdQWEF3Y0F0QVBZQTdVREJ3QzBBOWNEMkFNSEFMVUQyUU8zQXdjQXRRUFlBOWtEQndDM0E5b0R1QU1IQUxjRDJRUGFBd2NBdUFQYkE3a0RCd0M0QTlvRDJ3TUhBTGtEM0FPNkF3Y0F1UVBiQTl3REJ3RGNBN3NEdWdNSEFOd0QzUU83QXdjQTNRTzlBN3NEQndEZEE5NER2UU1IQU40RHZnTzlBd2NBM2dQZkE3NERCd0RmQTc4RHZnTUhBTjhENEFPL0F3Y0E0QVBBQTc4REJ3RGdBK0VEd0FNSEFPRUR3UVBBQXdjQTRRUGlBOEVEQndEaUE4SUR3UU1IQU9JRDR3UENBd2NBNHdQRUE4SURCd0RqQStRRHhBTUhBT1VEeEFQa0F3Y0E1UVBGQThRREJ3RG1BOFVENVFNSEFPWUR4Z1BGQXdjQTV3UEdBK1lEQndEbkE4Y0R4Z01IQU9nRHh3UG5Bd2NBNkFQSUE4Y0RCd0RwQThnRDZBTUhBT2tEeVFQSUF3Y0E2Z1BKQStrREJ3RHFBOG9EeVFNSEFPc0R5Z1BxQXdjQTZ3UE1BOG9EQndETkErc0Q3QU1IQU0wRHpBUHJBd2NBemdQc0ErMERCd0RPQTgwRDdBTUhBTThEN1FQdUF3Y0F6d1BPQSswREJ3RFFBKzREN3dNSEFOQUR6d1B1QXdjQTBnUHZBL0FEQndEU0E5QUQ3d01IQU5NRDhBUHhBd2NBMHdQU0EvQURCd0N5QS9FRDFRTUhBTElEMHdQeEF3Y0ExQVB5QS9NREJ3RFVBOVVEOGdNSEFOWUQ4d1AwQXdjQTFnUFVBL01EQndEWEEvUUQ5UU1IQU5jRDFnUDBBd2NBMkFQMUEvWURCd0RZQTljRDlRTUhBTmtEOWdQM0F3Y0EyUVBZQS9ZREJ3RGFBL2NEK0FNSEFOb0QyUVAzQXdjQTJ3UDRBL2tEQndEYkE5b0QrQU1IQU53RCtRUDZBd2NBM0FQYkEva0RCd0Q3QTl3RCtnTUhBUHNEM1FQY0F3Y0EvQVBkQS9zREJ3RDhBOTREM1FNSEFQMEQzZ1A4QXdjQS9RUGZBOTREQndEK0E5OEQvUU1IQVA0RDRBUGZBd2NBL3dQZ0EvNERCd0QvQStFRDRBTUhBQUFFNFFQL0F3Y0FBQVRpQStFREJ3QUJCT0lEQUFRSEFBRUU0d1BpQXdjQUFnVGpBd0VFQndBQ0JPUUQ0d01IQUFNRTVBTUNCQWNBQXdUbEErUURCd0FFQk9VREF3UUhBQVFFNWdQbEF3Y0FCUVRtQXdRRUJ3QUZCT2NENWdNSEFBWUU1d01GQkFjQUJnVG9BK2NEQndBSEJPZ0RCZ1FIQUFjRTZRUG9Bd2NBQ0FUcEF3Y0VCd0FJQk9vRDZRTUhBQWtFNmdNSUJBY0FDUVRyQStvREJ3RHNBd2tFQ2dRSEFPd0Q2d01KQkFjQTdRTUtCQXNFQndEdEErd0RDZ1FIQU80REN3UU1CQWNBN2dQdEF3c0VCd0R2QXd3RURRUUhBTzhEN2dNTUJBY0E4QU1OQkE0RUJ3RHdBKzhERFFRSEFQRUREZ1FQQkFjQThRUHdBdzRFQndEVkF3OEU4Z01IQU5VRDhRTVBCQWNBOHdNUUJCRUVCd0R6QS9JREVBUUhBUFFERVFRU0JBY0E5QVB6QXhFRUJ3RDFBeElFRXdRSEFQVUQ5QU1TQkFjQTlnTVRCQlFFQndEMkEvVURFd1FIQVBjREZBUVZCQWNBOXdQMkF4UUVCd0Q0QXhVRUZnUUhBUGdEOXdNVkJBY0ErUU1XQkJjRUJ3RDVBL2dERmdRSEFQb0RGd1FZQkFjQStnUDVBeGNFQndBWkJQb0RHQVFIQUJrRSt3UDZBd2NBR2dUN0F4a0VCd0FhQlB3RCt3TUhBQnNFL0FNYUJBY0FHd1Q5QS93REJ3QWNCUDBER3dRSEFCd0UvZ1A5QXdjQUhRVCtBeHdFQndBZEJQOEQvZ01IQUI0RS93TWRCQWNBSGdRQUJQOERCd0FmQkFBRUhnUUhBQjhFQVFRQUJBY0FJQVFCQkI4RUJ3QWdCQUlFQVFRSEFDRUVBZ1FnQkFjQUlRUURCQUlFQndBaUJBTUVJUVFIQUNJRUJBUURCQWNBSXdRRUJDSUVCd0FqQkFVRUJBUUhBQ1FFQlFRakJBY0FKQVFHQkFVRUJ3QWxCQVlFSkFRSEFDVUVCd1FHQkFjQUpnUUhCQ1VFQndBbUJBZ0VCd1FIQUNjRUNBUW1CQWNBSndRSkJBZ0VCd0FLQkNjRUtBUUhBQW9FQ1FRbkJBY0FDd1FvQkNrRUJ3QUxCQW9FS0FRSEFBd0VLUVFxQkFjQURBUUxCQ2tFQndBTkJDb0VLd1FIQUEwRURBUXFCQWNBRGdRckJDd0VCd0FPQkEwRUt3UUhBQThFTEFRdEJBY0FEd1FPQkN3RUJ3RHlBeTBFRUFRSEFQSUREd1F0QkFjQUVBUXVCQkVFQndBUUJDOEVMZ1FIQUJFRU1BUVNCQWNBRVFRdUJEQUVCd0FTQkRFRUV3UUhBQklFTUFReEJBY0FFd1F5QkJRRUJ3QVRCREVFTWdRSEFCUUVNd1FWQkFjQUZBUXlCRE1FQndBVkJEUUVGZ1FIQUJVRU13UTBCQWNBRmdRMUJCY0VCd0FXQkRRRU5RUUhBQmNFTmdRWUJBY0FGd1ExQkRZRUJ3QTJCQmtFR0FRSEFEWUVOd1FaQkFjQU53UWFCQmtFQndBM0JEZ0VHZ1FIQURnRUd3UWFCQWNBT0FRNUJCc0VCd0E1QkJ3RUd3UUhBRGtFT2dRY0JBY0FPZ1FkQkJ3RUJ3QTZCRHNFSFFRSEFEc0VIZ1FkQkFjQU93UThCQjRFQndBOEJCOEVIZ1FIQUR3RVBRUWZCQWNBUFFRZ0JCOEVCd0E5QkQ0RUlBUUhBRDhFSUFRK0JBY0FQd1FoQkNBRUJ3QkFCQ0VFUHdRSEFFQUVJZ1FoQkFjQVFRUWlCRUFFQndCQkJDTUVJZ1FIQUVJRUl3UkJCQWNBUWdRa0JDTUVCd0JEQkNRRVFnUUhBRU1FSlFRa0JBY0FSQVFsQkVNRUJ3QkVCQ1lFSlFRSEFFVUVKZ1JFQkFjQVJRUW5CQ1lFQndBb0JFVUVSZ1FIQUNnRUp3UkZCQWNBS1FSR0JFY0VCd0FwQkNnRVJnUUhBQ29FUndSSUJBY0FLZ1FwQkVjRUJ3QXJCRWdFU1FRSEFDc0VLZ1JJQkFjQUxBUkpCRW9FQndBc0JDc0VTUVFIQUMwRVNnUkxCQWNBTFFRc0JFb0VCd0FRQkVzRUx3UUhBQkFFTFFSTEJBY0FlQU5NQkhZREJ3QjRBMDBFVEFRSEFIb0RUUVI0QXdjQWVnTk9CRTBFQndCOEEwNEVlZ01IQUh3RFR3Uk9CQWNBZndOUEJId0RCd0IvQTFBRVR3UUhBSUVEVUFSL0F3Y0FnUU5SQkZBRUJ3Q0RBMUVFZ1FNSEFJTURVZ1JSQkFjQWhRTlNCSU1EQndDRkExTUVVZ1FIQUljRFV3U0ZBd2NBaHdOVUJGTUVCd0NKQTFRRWh3TUhBSWtEVlFSVUJBY0Fpd05WQklrREJ3Q0xBMVlFVlFRSEFJd0RWZ1NMQXdjQWpBTlhCRllFQndDT0ExY0VqQU1IQUk0RFdBUlhCQWNBa0FOWUJJNERCd0NRQTFrRVdBUUhBSklEV1FTUUF3Y0FrZ05hQkZrRUJ3Q1VBMW9Fa2dNSEFKUURXd1JhQkFjQWxnTmJCSlFEQndDV0Exd0VXd1FIQUZ3RFhBU1dBd2NBWEFOZEJGd0VCd0JlQTEwRVhBTUhBRjREWGdSZEJBY0FZUU5lQkY0REJ3QmhBMThFWGdRSEFHTURYd1JoQXdjQVl3TmdCRjhFQndCbEEyQUVZd01IQUdVRFlRUmdCQWNBWndOaEJHVURCd0JuQTJJRVlRUUhBR2tEWWdSbkF3Y0FhUU5qQkdJRUJ3QnJBMk1FYVFNSEFHc0RaQVJqQkFjQWJRTmtCR3NEQndCdEEyVUVaQVFIQUc0RFpRUnRBd2NBYmdObUJHVUVCd0J3QTJZRWJnTUhBSEFEWndSbUJBY0FjZ05uQkhBREJ3QnlBMmdFWndRSEFIUURhQVJ5QXdjQWRBTnBCR2dFQndCMkEya0VkQU1IQUhZRFRBUnBCQWNBdHdKcUJLNENCd0MzQW1zRWFnUUhBR3NFVGdScUJBY0Fhd1JOQkU0RUJ3QzBBbXNFdHdJSEFMUUNiQVJyQkFjQWJBUk5CR3NFQndCc0JFd0VUUVFIQUxvQ2JBUzBBZ2NBdWdKdEJHd0VCd0J0QkV3RWJBUUhBRzBFYVFSTUJBY0F3d0p0QkxvQ0J3RERBbTRFYlFRSEFHNEVhUVJ0QkFjQWJnUm9CR2tFQndEQUFtNEV3d0lIQU1BQ2J3UnVCQWNBYndSb0JHNEVCd0J2QkdjRWFBUUhBTVlDYndUQUFnY0F4Z0p3Qkc4RUJ3QndCR2NFYndRSEFIQUVaZ1JuQkFjQXlRSndCTVlDQndESkFuRUVjQVFIQUhFRVpnUndCQWNBY1FSbEJHWUVCd0RMQW5FRXlRSUhBTXNDY2dSeEJBY0FjZ1JsQkhFRUJ3QnlCR1FFWlFRSEFORUNjZ1RMQWdjQTBRSnpCSElFQndCekJHUUVjZ1FIQUhNRVl3UmtCQWNBMVFKekJORUNCd0RWQW5RRWN3UUhBSFFFWXdSekJBY0FkQVJpQkdNRUJ3RFhBblFFMVFJSEFOY0NkUVIwQkFjQWRRUmlCSFFFQndCMUJHRUVZZ1FIQU4wQ2RRVFhBZ2NBM1FKMkJIVUVCd0IyQkdFRWRRUUhBSFlFWUFSaEJBY0E0QUoyQk4wQ0J3RGdBbmNFZGdRSEFIY0VZQVIyQkFjQWR3UmZCR0FFQndCdEFuY0U0QUlIQUcwQ2VBUjNCQWNBZUFSZkJIY0VCd0I0QkY0RVh3UUhBRzhDZUFSdEFnY0Fid0o1QkhnRUJ3QjVCRjRFZUFRSEFIa0VYUVJlQkFjQWRRSjVCRzhDQndCMUFub0VlUVFIQUhvRVhRUjVCQWNBZWdSY0JGMEVCd0IzQW5vRWRRSUhBSGNDZXdSNkJBY0Fld1JjQkhvRUJ3QjdCRnNFWEFRSEFIMENld1IzQWdjQWZRSjhCSHNFQndCOEJGc0Vld1FIQUh3RVdnUmJCQWNBZ1FKOEJIMENCd0NCQW4wRWZBUUhBSDBFV2dSOEJBY0FmUVJaQkZvRUJ3Q0RBbjBFZ1FJSEFJTUNmZ1I5QkFjQWZnUlpCSDBFQndCK0JGZ0VXUVFIQUlrQ2ZnU0RBZ2NBaVFKL0JINEVCd0IvQkZnRWZnUUhBSDhFVndSWUJBY0Frd0ovQklrQ0J3Q1RBb0FFZndRSEFJQUVWd1IvQkFjQWdBUldCRmNFQndDUUFvQUVrd0lIQUpBQ2dRU0FCQWNBZ1FSV0JJQUVCd0NCQkZVRVZnUUhBSllDZ1FTUUFnY0FsZ0tDQklFRUJ3Q0NCRlVFZ1FRSEFJSUVWQVJWQkFjQW53S0NCSllDQndDZkFvTUVnZ1FIQUlNRVZBU0NCQWNBZ3dSVEJGUUVCd0NjQW9NRW53SUhBSndDaEFTREJBY0FoQVJUQklNRUJ3Q0VCRklFVXdRSEFLSUNoQVNjQWdjQW9nS0ZCSVFFQndDRkJGSUVoQVFIQUlVRVVRUlNCQWNBcXdLRkJLSUNCd0NyQW9ZRWhRUUhBSVlFVVFTRkJBY0FoZ1JRQkZFRUJ3Q29Bb1lFcXdJSEFLZ0Nod1NHQkFjQWh3UlFCSVlFQndDSEJFOEVVQVFIQUs0Q2h3U29BZ2NBcmdKcUJJY0VCd0JxQkU4RWh3UUhBR29FVGdSUEJBY0FpQVJ6QW5nQ0J3Q0lCSWtFY3dJSEFHOENpQVIxQWdjQWJ3S0pCSWdFQndDS0JIOENoQUlIQUlvRWl3Ui9BZ2NBZlFLS0JJRUNCd0I5QW9zRWlnUUhBSThDakFTTEFnY0Fqd0tOQkl3RUJ3Q0pBbzBFa3dJSEFJa0NqQVNOQkFjQW13S09CSlFDQndDYkFvOEVqZ1FIQUpZQ2p3U2ZBZ2NBbGdLT0JJOEVCd0NuQXBBRW9BSUhBS2NDa1FTUUJBY0FvZ0tSQktzQ0J3Q2lBcEFFa1FRSEFMTUNrZ1NzQWdjQXN3S1RCSklFQndDdUFwTUV0d0lIQUs0Q2tnU1RCQWNBdndLVUJMZ0NCd0MvQXBVRWxBUUhBTG9DbFFUREFnY0F1Z0tVQkpVRUJ3Q1dCTVFDekFJSEFKWUVsd1RFQWdjQXhnS1dCTWtDQndER0FwY0VsZ1FIQUpnRTB3TFlBZ2NBbUFTWkJOTUNCd0RSQXBnRTFRSUhBTkVDbVFTWUJBY0FtZ1RmQXVJQ0J3Q2FCSnNFM3dJSEFOMENtZ1RnQWdjQTNRS2JCSm9FQndDSkJHd0NuQVFIQUlrRWJ3SnNBZ2NBY3dLY0JIRUNCd0J6QW9rRW5BUUhBSFVDblFSMkFnY0FkUUtJQkowRUJ3Q0lCSG9DblFRSEFJZ0VlQUo2QWdjQWl3UjhBcDRFQndDTEJIMENmQUlIQUg4Q25nUitBZ2NBZndLTEJKNEVCd0NCQXA4RWdnSUhBSUVDaWdTZkJBY0FpZ1NHQXA4RUJ3Q0tCSVFDaGdJSEFJd0VpQUtnQkFjQWpBU0pBb2dDQndDTEFxQUVpZ0lIQUlzQ2pBU2dCQWNBa3dLaEJKRUNCd0NUQW8wRW9RUUhBSTBFakFLaEJBY0FqUVNQQW93Q0J3Q09CSmNDb2dRSEFJNEVsZ0tYQWdjQWxBS2lCSlVDQndDVUFvNEVvZ1FIQUo4Q293U2RBZ2NBbndLUEJLTUVCd0NQQkpnQ293UUhBSThFbXdLWUFnY0FrQVNqQXFRRUJ3Q1FCS0lDb3dJSEFLQUNwQVNoQWdjQW9BS1FCS1FFQndDckFxVUVxUUlIQUtzQ2tRU2xCQWNBa1FTa0FxVUVCd0NSQktjQ3BBSUhBSklFcndLbUJBY0FrZ1N1QXE4Q0J3Q3NBcVlFclFJSEFLd0NrZ1NtQkFjQXR3S25CTFVDQndDM0FwTUVwd1FIQUpNRXNBS25CQWNBa3dTekFyQUNCd0NVQkxzQ3FBUUhBSlFFdWdLN0FnY0F1QUtvQkxrQ0J3QzRBcFFFcUFRSEFNTUNxUVRCQWdjQXd3S1ZCS2tFQndDVkJMd0NxUVFIQUpVRXZ3SzhBZ2NBbHdUSEFxb0VCd0NYQk1ZQ3h3SUhBTVFDcWdURkFnY0F4QUtYQktvRUJ3REpBcXNFeWdJSEFNa0NsZ1NyQkFjQWxnVE9BcXNFQndDV0JNd0N6Z0lIQUprRTBBS3NCQWNBbVFUUkF0QUNCd0RUQXF3RTBnSUhBTk1DbVFTc0JBY0ExUUt0Qk5ZQ0J3RFZBcGdFclFRSEFKZ0UyZ0t0QkFjQW1BVFlBdG9DQndDYkJOd0NyZ1FIQUpzRTNRTGNBZ2NBM3dLdUJONENCd0RmQXBzRXJnUUhBT0FDcndUaEFnY0E0QUthQks4RUJ3Q2FCT01DcndRSEFKb0U0Z0xqQWdjQXFnUWdBaUVDQndDcUJNY0NJQUlIQU1jQ0h3SWdBZ2NBeHdMQ0FoOENCd0FpQXNJQ3dRSUhBQ0lDSHdMQ0FnY0FJUUxGQXFvRUJ3QWhBbEVDeFFJSEFDTUN3UUtwQkFjQUl3SWlBc0VDQndCU0Fxa0V2QUlIQUZJQ0l3S3BCQWNBVVFLK0FzVUNCd0JSQWxBQ3ZnSUhBTHdDVUFKU0FnY0F2QUsrQWxBQ0J3QWRBc2dDeWdJSEFCMENIZ0xJQWdjQUhnTFFBc2dDQndBZUFrMEMwQUlIQUUwQ3JBVFFBZ2NBVFFKTUFxd0VCd0JyQXF3RVRBSUhBR3NDMGdLc0JBY0FIQUxLQXFzRUJ3QWNBaDBDeWdJSEFLc0VUZ0ljQWdjQXF3VE9BazRDQndCUEFzNEN6UUlIQUU4Q1RnTE9BZ2NBYXdMTkF0SUNCd0JyQWs4Q3pRSUhBTm9DYVFKcUFnY0EyZ0xaQW1rQ0J3RGVBbWtDMlFJSEFONENhQUpwQWdjQXJRUnFBa29DQndDdEJOb0NhZ0lIQU5ZQ1NnSkxBZ2NBMWdLdEJFb0NCd0RVQWtzQ1NRSUhBTlFDMWdKTEFnY0EzQUpKQWtnQ0J3RGNBdFFDU1FJSEFLNEVTQUpIQWdjQXJnVGNBa2dDQndEZUFrY0NhQUlIQU40Q3JnUkhBZ2NBYkFKRUFrSUNCd0JzQW00Q1JBSUhBRzRDUmdKRUFnY0FiZ0xoQWtZQ0J3RGhBa1VDUmdJSEFPRUNyd1JGQWdjQXJ3Um5Ba1VDQndDdkJPTUNad0lIQUp3RVFnSkRBZ2NBbkFSc0FrSUNCd0J4QWtNQ1pRSUhBSEVDbkFSREFnY0FaUUp5QW5FQ0J3QmxBbVlDY2dJSEFHWUM0d0p5QWdjQVpnSm5BdU1DQndCakFub0NlUUlIQUdNQ1pBSjZBZ2NBWWdKNUFuNENCd0JpQW1NQ2VRSUhBRDRDZmdLZUJBY0FQZ0ppQW40Q0J3QTlBcDRFZkFJSEFEMENQZ0tlQkFjQWZBSS9BajBDQndCOEFuUUNQd0lIQUhRQ1FBSS9BZ2NBZEFKMkFrQUNCd0IyQWtFQ1FBSUhBSFlDblFSQkFnY0FuUVJrQWtFQ0J3Q2RCSG9DWkFJSEFHRUNud1NHQWdjQVlRSThBcDhFQndDQ0Fqd0NPd0lIQUlJQ253UThBZ2NBZ0FJN0Fqb0NCd0NBQW9JQ093SUhBSWdDT2dJNEFnY0FpQUtBQWpvQ0J3Q2dCRGdDT1FJSEFLQUVpQUk0QWdjQWlnSTVBbDhDQndDS0FxQUVPUUlIQUY4Q2hRS0tBZ2NBWHdKZ0FvVUNCd0NHQW1BQ1lRSUhBSVlDaFFKZ0FnY0FYUUtNQW80Q0J3QmRBbDRDakFJSEFJNENYQUpkQWdjQWpnS1ZBbHdDQndDaUJETUNOQUlIQUtJRWx3SXpBZ2NBbHdJMUFqTUNCd0NYQXBJQ05RSUhBSklDTmdJMUFnY0FrZ0tSQWpZQ0J3Q1JBamNDTmdJSEFKRUNvUVEzQWdjQVhnS2hCSXdDQndCZUFqY0NvUVFIQUpVQ05BSmNBZ2NBbFFLaUJEUUNCd0F1QXFRRW93SUhBQzRDTHdLa0JBY0FNQUtqQXA0Q0J3QXdBaTRDb3dJSEFERUNuZ0tkQWdjQU1RSXdBcDRDQndBdkFxRUNwQVFIQUM4Q1dRS2hBZ2NBTWdLZEFxTUVCd0F5QWpFQ25RSUhBRnNDb3dTWUFnY0FXd0l5QXFNRUJ3Q1lBbG9DV3dJSEFKZ0NtZ0phQWdjQW1nSlpBbG9DQndDYUFxRUNXUUlIQUMwQ3FRS2xCQWNBTFFJc0Fxa0NCd0JZQXFVRXBBSUhBRmdDTFFLbEJBY0FMQUtxQXFrQ0J3QXNBaWtDcWdJSEFDa0Nyd0txQWdjQUtRSXFBcThDQndBcUFxWUVyd0lIQUNvQ0t3S21CQWNBS3dLdEFxWUVCd0FyQWxjQ3JRSUhBS1FDVmdKWUFnY0FwQUttQWxZQ0J3Q21BbGNDVmdJSEFLWUNyUUpYQWdjQUp3SzJBclVDQndBbkFpUUN0Z0lIQUNRQ3V3SzJBZ2NBSkFJbEFyc0NCd0FvQXJVQ3B3UUhBQ2dDSndLMUFnY0FWUUtuQkxBQ0J3QlZBaWdDcHdRSEFDVUNxQVM3QWdjQUpRSW1BcWdFQndBbUFya0NxQVFIQUNZQ1ZBSzVBZ2NBc0FKVEFsVUNCd0N3QXJJQ1V3SUhBTElDVkFKVEFnY0FzZ0s1QWxRQ0J3Q3dCTEVFc2dRSEFMQUVzd1N4QkFjQXRBUzFCTFlFQndDMEJMY0V0UVFIQUxnRXVRUzZCQWNBdUFTN0JMa0VCd0M4QkwwRXZnUUhBTHdFdndTOUJBY0F3QVRCQk1JRUJ3REFCTU1Fd1FRSEFNUUV4UVRHQkFjQXhBVEhCTVVFQndERUJNZ0V5UVFIQU1RRXhnVElCQWNBeVFUS0JNc0VCd0RKQk1nRXlnUUhBTW9FekFUTEJBY0F5Z1ROQk13RUJ3RE5CTTRFekFRSEFNMEV6d1RPQkFjQXhRVE9CTThFQndERkJNY0V6Z1FIQU5BRTBRVFNCQWNBMEFUVEJORUVCd0RTQk5RRTFRUUhBTklFMFFUVUJBY0ExQVRXQk5VRUJ3RFVCTmNFMWdRSEFOY0UyQVRXQkFjQTF3VFpCTmdFQndEYUJOZ0UyUVFIQU5vRTJ3VFlCQWNBMEFUYUJOTUVCd0RRQk5zRTJnUUhBTndFM1FUZUJBY0EzQVRmQk4wRUJ3RGRCT0FFM2dRSEFOMEU0UVRnQkFjQTRRVGlCT0FFQndEaEJPTUU0Z1FIQU9RRTRnVGpCQWNBNUFUbEJPSUVCd0RtQk9RRTV3UUhBT1lFNVFUa0JBY0E1Z1RmQk53RUJ3RG1CT2NFM3dRSEFPZ0U2UVRxQkFjQTZBVHJCT2tFQndEckJPd0U2UVFIQU9zRTdRVHNCQWNBN2dUc0JPMEVCd0R1Qk84RTdBUUhBUEFFN2dUeEJBY0E4QVR2Qk80RUJ3RHdCUElFOHdRSEFQQUU4UVR5QkFjQTh3VG9CT29FQndEekJQSUU2QVFIQVBRRTlRVDJCQWNBOUFUM0JQVUVCd0Q0QlBVRTl3UUhBUGdFK1FUMUJBY0ErZ1Q0QlBzRUJ3RDZCUGtFK0FRSEFQb0UvQVQ5QkFjQStnVDdCUHdFQndEOUJQNEUvd1FIQVAwRS9BVCtCQWNBL2dUMkJQOEVCd0QrQlBRRTlnUUhBTVlFQUFVQkJRY0F4Z1RGQkFBRkJ3RElCQUVGQWdVSEFNZ0V4Z1FCQlFjQXlnUUNCUU1GQndES0JNZ0VBZ1VIQUFRRnlnUURCUWNBQkFYTkJNb0VCd0FGQmMwRUJBVUhBQVVGendUTkJBY0FBQVhQQkFVRkJ3QUFCY1VFendRSEFORUVCZ1VIQlFjQTBRVFRCQVlGQndEVUJBY0ZDQVVIQU5RRTBRUUhCUWNBQ1FYVUJBZ0ZCd0FKQmRjRTFBUUhBQW9GMXdRSkJRY0FDZ1haQk5jRUJ3QUxCZGtFQ2dVSEFBc0YyZ1RaQkFjQTB3UUxCUVlGQndEVEJOb0VDd1VIQU4wRURBVU5CUWNBM1FUZkJBd0ZCd0FPQmQwRURRVUhBQTRGNFFUZEJBY0FEd1hoQkE0RkJ3QVBCZU1FNFFRSEFCQUY0d1FQQlFjQUVBWGtCT01FQndEbkJCQUZFUVVIQU9jRTVBUVFCUWNBM3dRUkJRd0ZCd0RmQk9jRUVRVUhBQklGNkFRVEJRY0FFZ1hyQk9nRUJ3QVVCZXNFRWdVSEFCUUY3UVRyQkFjQUZRWHRCQlFGQndBVkJlNEU3UVFIQVBFRUZRVVdCUWNBOFFUdUJCVUZCd0R5QkJZRkZ3VUhBUElFOFFRV0JRY0E2QVFYQlJNRkJ3RG9CUElFRndVSEFCZ0Y5QVFaQlFjQUdBWDNCUFFFQndBYUJmY0VHQVVIQUJvRitBVDNCQWNBK3dRYUJSc0ZCd0Q3QlBnRUdnVUhBUHdFR3dVY0JRY0EvQVQ3QkJzRkJ3RCtCQndGSFFVSEFQNEUvQVFjQlFjQUdRWCtCQjBGQndBWkJmUUUvZ1FIQUFFRkhnVWZCUWNBQVFVQUJSNEZCd0FDQlI4RklBVUhBQUlGQVFVZkJRY0FBd1VnQlNFRkJ3QURCUUlGSUFVSEFDSUZBd1VoQlFjQUlnVUVCUU1GQndBakJRUUZJZ1VIQUNNRkJRVUVCUWNBSGdVRkJTTUZCd0FlQlFBRkJRVUhBQWNGSkFVbEJRY0FCd1VHQlNRRkJ3QUlCU1VGSmdVSEFBZ0ZCd1VsQlFjQUp3VUlCU1lGQndBbkJRa0ZDQVVIQUNnRkNRVW5CUWNBS0FVS0JRa0ZCd0FwQlFvRktBVUhBQ2tGQ3dVS0JRY0FCZ1VwQlNRRkJ3QUdCUXNGS1FVSEFBMEZLZ1VyQlFjQURRVU1CU29GQndBc0JRMEZLd1VIQUN3RkRnVU5CUWNBTFFVT0JTd0ZCd0F0QlE4RkRnVUhBQzRGRHdVdEJRY0FMZ1VRQlE4RkJ3QVJCUzRGTHdVSEFCRUZFQVV1QlFjQURBVXZCU29GQndBTUJSRUZMd1VIQURBRkV3VXhCUWNBTUFVU0JSTUZCd0F5QlJJRk1BVUhBRElGRkFVU0JRY0FNd1VVQlRJRkJ3QXpCUlVGRkFVSEFCWUZNd1UwQlFjQUZnVVZCVE1GQndBWEJUUUZOUVVIQUJjRkZnVTBCUWNBRXdVMUJURUZCd0FUQlJjRk5RVUhBRFlGR1FVM0JRY0FOZ1VZQlJrRkJ3QTRCUmdGTmdVSEFEZ0ZHZ1VZQlFjQUd3VTRCVGtGQndBYkJSb0ZPQVVIQUJ3Rk9RVTZCUWNBSEFVYkJUa0ZCd0FkQlRvRk93VUhBQjBGSEFVNkJRY0FOd1VkQlRzRkJ3QTNCUmtGSFFVSEFCOEZzUVN6QkFjQUh3VWVCYkVFQndBZkJiQUVJQVVIQUI4RnN3U3dCQWNBSUFVOEJTRUZCd0FnQmJBRVBBVUhBRHdGSWdVaEJRY0FQQVU5QlNJRkJ3QTlCU01GSWdVSEFEMEZzZ1FqQlFjQXNRUWpCYklFQndDeEJCNEZJd1VIQUNRRnRBUWxCUWNBSkFXM0JMUUVCd0FsQlQ0RkpnVUhBQ1VGdEFRK0JRY0FQZ1VuQlNZRkJ3QStCVDhGSndVSEFEOEZLQVVuQlFjQVB3VzJCQ2dGQndDMUJDZ0Z0Z1FIQUxVRUtRVW9CUWNBSkFXMUJMY0VCd0FrQlNrRnRRUUhBQ29GUUFVckJRY0FLZ1c0QkVBRkJ3QkFCU3dGS3dVSEFFQUZRUVVzQlFjQVFRVXRCU3dGQndCQkJib0VMUVVIQUxrRUxRVzZCQWNBdVFRdUJTMEZCd0F2QmJrRXV3UUhBQzhGTGdXNUJBY0FMd1c0QkNvRkJ3QXZCYnNFdUFRSEFFSUZNQVV4QlFjQVFnVkRCVEFGQndCREJUSUZNQVVIQUVNRnZnUXlCUWNBdlFReUJiNEVCd0M5QkRNRk1nVUhBRFFGdlFTL0JBY0FOQVV6QmIwRUJ3QTBCYndFTlFVSEFEUUZ2d1M4QkFjQU5RVkNCVEVGQndBMUJid0VRZ1VIQU1FRU5nVTNCUWNBd1FUREJEWUZCd0RBQkRZRnd3UUhBTUFFT0FVMkJRY0FPUVhBQkVRRkJ3QTVCVGdGd0FRSEFEa0ZSUVU2QlFjQU9RVkVCVVVGQndBNkJjSUVPd1VIQURvRlJRWENCQWNBd2dRM0JUc0ZCd0RDQk1FRU53VUhBTElFUEFXd0JBY0FzZ1E5QlR3RkJ3QzJCRDRGdEFRSEFMWUVQd1UrQlFjQXVnUkFCYmdFQndDNkJFRUZRQVVIQU1JRVJBWEFCQWNBd2dSRkJVUUZCd0MrQkVJRnZBUUhBTDRFUXdWQ0JRY0E2Z1JrQS9NRUJ3RHFCR1lEWkFNSEFHSUQ4d1JrQXdjQVlnUHdCUE1FQndDZEErd0V0Z01IQUowRDZRVHNCQWNBWmdQcEJKMERCd0JtQStvRTZRUUhBSnNEOEFSaUF3Y0Ftd1B2QlBBRUJ3Q2JBK3dFN3dRSEFKc0R0Z1BzQkFjQTNnVFJBN0FEQndEZUJPQUUwUU1IQUpjRDNnU3dBd2NBbHdQY0JONEVCd0NWQTl3RWx3TUhBSlVENWdUY0JBY0Frd1BtQkpVREJ3Q1RBK1VFNWdRSEFLOEQ1UVNUQXdjQXJ3UGlCT1VFQndDdkErQUU0Z1FIQUs4RDBRUGdCQWNBMWdUTEE5VUVCd0RXQktvRHl3TUhBS3NEMVFUTEF3Y0Fxd1BTQk5VRUJ3Q0tBOUlFcXdNSEFJb0QwQVRTQkFjQWlBUFFCSW9EQndDSUE5c0UwQVFIQUlZRDJ3U0lBd2NBaGdQWUJOc0VCd0NxQTlnRWhnTUhBS29EMWdUWUJBY0FwUVBNQkhzREJ3Q2xBOHNFekFRSEFNTUR5d1NsQXdjQXd3UEpCTXNFQndDbkE4a0V3d01IQUtjRHhBVEpCQWNBemdSN0E4d0VCd0RPQkgwRGV3TUhBTWNFZlFQT0JBY0F4d1IrQTMwREJ3REVCSDREeHdRSEFNUUVwd04rQXdjQWJ3UC9CSEVEQndCdkEvMEUvd1FIQUtBRC9RUnZBd2NBb0FQNkJQMEVCd0NnQS9rRStnUUhBS0FEdkFQNUJBY0FvUVA1Qkx3REJ3Q2hBL1VFK1FRSEFITUQ5UVNoQXdjQWN3UDJCUFVFQndCeEEvWUVjd01IQUhFRC93VDJCQWNBUmdWSEJVZ0ZCd0JHQlVrRlJ3VUhBRWdGU2dWTEJRY0FTQVZIQlVvRkJ3QkxCVXdGVFFVSEFFc0ZTZ1ZNQlFjQVRRVk9CVThGQndCTkJVd0ZUZ1VIQUU4RlVBVlJCUWNBVHdWT0JWQUZCd0JSQlZJRlV3VUhBRkVGVUFWU0JRY0FVd1ZVQlZVRkJ3QlRCVklGVkFVSEFGVUZWZ1ZYQlFjQVZRVlVCVllGQndCV0JWZ0ZWd1VIQUZZRldRVllCUWNBV1FWYUJWZ0ZCd0JaQlZzRldnVUhBRnNGWEFWYUJRY0FXd1ZkQlZ3RkJ3QmRCVjRGWEFVSEFGMEZYd1ZlQlFjQVh3VmdCVjRGQndCZkJXRUZZQVVIQUdFRllnVmdCUWNBWVFWakJXSUZCd0JqQldRRllnVUhBR01GWlFWa0JRY0FaUVZtQldRRkJ3QmxCV2NGWmdVSEFHZ0ZaZ1ZuQlFjQWFBVnBCV1lGQndCcUJXa0ZhQVVIQUdvRmF3VnBCUWNBYkFWckJXb0ZCd0JzQlcwRmF3VUhBRzRGYlFWc0JRY0FiZ1Z2QlcwRkJ3QndCVzhGYmdVSEFIQUZjUVZ2QlFjQWNnVnhCWEFGQndCeUJYTUZjUVVIQUhRRmN3VnlCUWNBZEFWMUJYTUZCd0IyQlhRRmR3VUhBSFlGZFFWMEJRY0FlQVYzQlhrRkJ3QjRCWFlGZHdVSEFIb0ZlUVY3QlFjQWVnVjRCWGtGQndCOEJYc0ZmUVVIQUh3RmVnVjdCUWNBZmdWOUJYOEZCd0IrQlh3RmZRVUhBSUFGZndXQkJRY0FnQVYrQlg4RkJ3QkdCWUVGU1FVSEFFWUZnQVdCQlFjQWR3VnlCWUlGQndCM0JYUUZjZ1VIQUhzRmR3V0NCUWNBZXdWNUJYY0ZCd0IvQlhzRmdnVUhBSDhGZlFWN0JRY0FTUVYvQllJRkJ3QkpCWUVGZndVSEFFb0ZTUVdDQlFjQVNnVkhCVWtGQndCT0JVb0ZnZ1VIQUU0RlRBVktCUWNBVWdWT0JZSUZCd0JTQlZBRlRnVUhBRllGVWdXQ0JRY0FWZ1ZVQlZJRkJ3QmJCVllGZ2dVSEFGc0ZXUVZXQlFjQVh3VmJCWUlGQndCZkJWMEZXd1VIQUdNRlh3V0NCUWNBWXdWaEJWOEZCd0JuQldNRmdnVUhBR2NGWlFWakJRY0FhZ1ZuQllJRkJ3QnFCV2dGWndVSEFHNEZhZ1dDQlFjQWJnVnNCV29GQndCeUJXNEZnZ1VIQUhJRmNBVnVCUWNBZ3dXQUJVWUZCd0NEQllRRmdBVUhBSVVGUmdWSUJRY0FoUVdEQlVZRkJ3Q0VCWDRGZ0FVSEFJUUZoZ1YrQlFjQWhnVjhCWDRGQndDR0JZY0ZmQVVIQUljRmVnVjhCUWNBaHdXSUJYb0ZCd0NJQlhnRmVnVUhBSWdGaVFWNEJRY0FpUVYyQlhnRkJ3Q0pCWW9GZGdVSEFJb0ZkUVYyQlFjQWlnV0xCWFVGQndDTUJWY0ZXQVVIQUl3RmpRVlhCUWNBamdWWUJWb0ZCd0NPQll3RldBVUhBSTBGVlFWWEJRY0FqUVdQQlZVRkJ3Q1BCVk1GVlFVSEFJOEZrQVZUQlFjQWtBVlJCVk1GQndDUUJaRUZVUVVIQUpFRlR3VlJCUWNBa1FXU0JVOEZCd0NTQlUwRlR3VUhBSklGa3dWTkJRY0Frd1ZMQlUwRkJ3Q1RCWlFGU3dVSEFKUUZTQVZMQlFjQWxBV0ZCVWdGQndDTEJYTUZkUVVIQUlzRmxRVnpCUWNBbFFWeEJYTUZCd0NWQlpZRmNRVUhBSllGYndWeEJRY0FsZ1dYQlc4RkJ3Q1hCVzBGYndVSEFKY0ZtQVZ0QlFjQW1BVnJCVzBGQndDWUJaa0Zhd1VIQUprRmFRVnJCUWNBbVFXYUJXa0ZCd0NhQldZRmFRVUhBSm9GbXdWbUJRY0Ftd1ZrQldZRkJ3Q2JCWndGWkFVSEFKd0ZZZ1ZrQlFjQW5BV2RCV0lGQndDZEJXQUZZZ1VIQUowRm5nVmdCUWNBbmdWZUJXQUZCd0NlQlo4RlhnVUhBSjhGWEFWZUJRY0Fud1dnQlZ3RkJ3Q2dCVm9GWEFVSEFLQUZqZ1ZhQlFjQW9RV0VCWU1GQndDaEJhSUZoQVVIQUtNRmd3V0ZCUWNBb3dXaEJZTUZCd0NpQllZRmhBVUhBS0lGcEFXR0JRY0FwUVdGQlpRRkJ3Q2xCYU1GaFFVSEFLUUZod1dHQlFjQXBBV21CWWNGQndDbUJZZ0Zod1VIQUtZRnB3V0lCUWNBcHdXSkJZZ0ZCd0NuQmFnRmlRVUhBS2dGaWdXSkJRY0FxQVdwQllvRkJ3Q3BCWXNGaWdVSEFLa0ZxZ1dMQlFjQXFnV1ZCWXNGQndDcUJhc0ZsUVVIQUt3RmpRV01CUWNBckFXdEJZMEZCd0N1Qll3RmpnVUhBSzRGckFXTUJRY0FyUVdQQlkwRkJ3Q3RCYThGandVSEFMQUZqZ1dnQlFjQXNBV3VCWTRGQndDdkJaQUZqd1VIQUs4RnNRV1FCUWNBc1FXUkJaQUZCd0N4QmJJRmtRVUhBTElGa2dXUkJRY0FzZ1d6QlpJRkJ3Q3pCWk1Ga2dVSEFMTUZ0QVdUQlFjQXRBV1VCWk1GQndDMEJhVUZsQVVIQUtzRmxnV1ZCUWNBcXdXMUJaWUZCd0MxQlpjRmxnVUhBTFVGdGdXWEJRY0F0Z1dZQlpjRkJ3QzJCYmNGbUFVSEFMY0ZtUVdZQlFjQXR3VzRCWmtGQndDNEJab0ZtUVVIQUxnRnVRV2FCUWNBdVFXYkJab0ZCd0M1QmJvRm13VUhBTG9GbkFXYkJRY0F1Z1c3Qlp3RkJ3QzdCWjBGbkFVSEFMc0Z2QVdkQlFjQXZBV2VCWjBGQndDOEJiMEZuZ1VIQUwwRm53V2VCUWNBdlFXK0JaOEZCd0MrQmFBRm53VUhBTDRGc0FXZ0JRY0F2d1hBQmNFRkJ3Qy9CY0lGd0FVSEFMOEZ3d1hDQlFjQXZ3WEVCY01GQndERUJjVUZ3d1VIQU1RRnhnWEZCUWNBeGdYSEJjVUZCd0RHQmNnRnh3VUhBTWdGeVFYSEJRY0F5QVhLQmNrRkJ3REtCY3NGeVFVSEFNb0Z6QVhMQlFjQXpBWE5CY3NGQndETUJjNEZ6UVVIQU0wRnp3WFFCUWNBelFYT0JjOEZCd0RRQmRFRjBnVUhBTkFGendYUkJRY0EwZ1hUQmRRRkJ3RFNCZEVGMHdVSEFOUUYxUVhXQlFjQTFBWFRCZFVGQndEV0JkY0YyQVVIQU5ZRjFRWFhCUWNBMlFYWEJkb0ZCd0RaQmRnRjF3VUhBTnNGMmdYY0JRY0Eyd1haQmRvRkJ3RGRCZHdGM2dVSEFOMEYyd1hjQlFjQTN3WGVCZUFGQndEZkJkMEYzZ1VIQU9FRjRBWGlCUWNBNFFYZkJlQUZCd0RqQmVJRjVBVUhBT01GNFFYaUJRY0E1UVhrQmVZRkJ3RGxCZU1GNUFVSEFPY0Y1UVhtQlFjQTV3WG9CZVVGQndEcEJlZ0Y1d1VIQU9rRjZnWG9CUWNBNndYcUJla0ZCd0RyQmV3RjZnVUhBTzBGN0FYckJRY0E3UVh1QmV3RkJ3REJCZTRGN1FVSEFNRUZ3QVh1QlFjQTd3WEJCZkFGQndEdkJiOEZ3UVVIQVBFRnZ3WHZCUWNBOFFYRUJiOEZCd0R5QmNRRjhRVUhBUElGeGdYRUJRY0E4d1hHQmZJRkJ3RHpCY2dGeGdVSEFQUUZ5QVh6QlFjQTlBWEtCY2dGQndEMUJjb0Y5QVVIQVBVRnpBWEtCUWNBOWdYTUJmVUZCd0QyQmM0RnpBVUhBTThGOWdYM0JRY0F6d1hPQmZZRkJ3RFJCZmNGK0FVSEFORUZ6d1gzQlFjQTB3WDRCZmtGQndEVEJkRUYrQVVIQU5VRitRWDZCUWNBMVFYVEJma0ZCd0RYQmZvRit3VUhBTmNGMVFYNkJRY0EyZ1g3QmZ3RkJ3RGFCZGNGK3dVSEFOd0YvQVg5QlFjQTNBWGFCZndGQndEZUJmMEYvZ1VIQU40RjNBWDlCUWNBNEFYK0JmOEZCd0RnQmQ0Ri9nVUhBT0lGL3dVQUJnY0E0Z1hnQmY4RkJ3RGtCUUFHQVFZSEFPUUY0Z1VBQmdjQTVnVUJCZ0lHQndEbUJlUUZBUVlIQUFNRzVnVUNCZ2NBQXdibkJlWUZCd0FFQnVjRkF3WUhBQVFHNlFYbkJRY0FCUWJwQlFRR0J3QUZCdXNGNlFVSEFBWUc2d1VGQmdjQUJnYnRCZXNGQndEd0JlMEZCZ1lIQVBBRndRWHRCUWNBQndid0JRZ0dCd0FIQnU4RjhBVUhBQWNHOFFYdkJRY0FCd1lKQnZFRkJ3QUpCdklGOFFVSEFBa0dDZ2J5QlFjQUNnYnpCZklGQndBS0Jnc0c4d1VIQUFzRzlBWHpCUWNBQ3dZTUJ2UUZCd0FNQnZVRjlBVUhBQXdHRFFiMUJRY0FEUWIyQmZVRkJ3QU5CZzRHOWdVSEFQWUZEd2IzQlFjQTlnVU9CZzhHQndEM0JSQUcrQVVIQVBjRkR3WVFCZ2NBK0FVUkJ2a0ZCd0Q0QlJBR0VRWUhBUGtGRWdiNkJRY0ErUVVSQmhJR0J3RDZCUk1HK3dVSEFQb0ZFZ1lUQmdjQS9BVVRCaFFHQndEOEJmc0ZFd1lIQVAwRkZBWVZCZ2NBL1FYOEJSUUdCd0QrQlJVR0ZnWUhBUDRGL1FVVkJnY0Evd1VXQmhjR0J3RC9CZjRGRmdZSEFBQUdGd1lZQmdjQUFBYi9CUmNHQndBQkJoZ0dHUVlIQUFFR0FBWVlCZ2NBQWdZWkJob0dCd0FDQmdFR0dRWUhBQnNHQWdZYUJnY0FHd1lEQmdJR0J3QWNCZ01HR3dZSEFCd0dCQVlEQmdjQUhRWUVCaHdHQndBZEJnVUdCQVlIQUI0R0JRWWRCZ2NBSGdZR0JnVUdCd0FJQmdZR0hnWUhBQWdHOEFVR0JnY0FId1lIQmdnR0J3QWZCaUFHQndZSEFDQUdDUVlIQmdjQUlBWWhCZ2tHQndBaEJnb0dDUVlIQUNFR0lnWUtCZ2NBSWdZTEJnb0dCd0FpQmlNR0N3WUhBQ01HREFZTEJnY0FJd1lrQmd3R0J3QWtCZzBHREFZSEFDUUdKUVlOQmdjQUpRWU9CZzBHQndBbEJpWUdEZ1lIQUE0R0p3WVBCZ2NBRGdZbUJpY0dCd0FQQmlnR0VBWUhBQThHSndZb0JnY0FFQVlwQmhFR0J3QVFCaWdHS1FZSEFCRUdLZ1lTQmdjQUVRWXBCaW9HQndBU0Jpc0dFd1lIQUJJR0tnWXJCZ2NBRXdZc0JoUUdCd0FUQmlzR0xBWUhBQlFHTFFZVkJnY0FGQVlzQmkwR0J3QVZCaTRHRmdZSEFCVUdMUVl1QmdjQUZnWXZCaGNHQndBV0JpNEdMd1lIQUJjR01BWVlCZ2NBRndZdkJqQUdCd0FZQmpFR0dRWUhBQmdHTUFZeEJnY0FHUVl5QmhvR0J3QVpCakVHTWdZSEFESUdHd1lhQmdjQU1nWXpCaHNHQndBekJod0dHd1lIQURNR05BWWNCZ2NBTkFZZEJod0dCd0EwQmpVR0hRWUhBRFVHSGdZZEJnY0FOUVkyQmg0R0J3QTJCZ2dHSGdZSEFEWUdId1lJQmdjQU53WTRCamtHQndBM0Jqb0dPQVlIQURzR09nWTNCZ2NBT3dZOEJqb0dCd0E5Qmp3R093WUhBRDBHUGdZOEJnY0FQd1krQmowR0J3QS9Ca0FHUGdZSEFFRUdRQVkvQmdjQVFRWkNCa0FHQndCREJrSUdRUVlIQUVNR1JBWkNCZ2NBUlFaRUJrTUdCd0JGQmtZR1JBWUhBRWNHUlFaSUJnY0FSd1pHQmtVR0J3QkpCa2dHU2dZSEFFa0dSd1pJQmdjQVN3WktCa3dHQndCTEJra0dTZ1lIQUUwR1RBWk9CZ2NBVFFaTEJrd0dCd0JQQms0R1VBWUhBRThHVFFaT0JnY0FVUVpRQmxJR0J3QlJCazhHVUFZSEFGTUdVZ1pVQmdjQVV3WlJCbElHQndCVkJsUUdWZ1lIQUZVR1V3WlVCZ2NBVndaV0JsZ0dCd0JYQmxVR1ZnWUhBRmtHV0FaYUJnY0FXUVpYQmxnR0J3QmJCbG9HWEFZSEFGc0dXUVphQmdjQVhRWmNCbDRHQndCZEJsc0dYQVlIQUY4R1hRWmVCZ2NBWHdaZ0JsMEdCd0JoQm1BR1h3WUhBR0VHWWdaZ0JnY0FZd1ppQm1FR0J3QmpCbVFHWWdZSEFHVUdaQVpqQmdjQVpRWm1CbVFHQndBNUJtWUdaUVlIQURrR09BWm1CZ2NBWndZM0Jqa0dCd0JuQm1nR053WUhBR2tHTndab0JnY0FhUVk3QmpjR0J3QnFCanNHYVFZSEFHb0dQUVk3QmdjQWF3WTlCbW9HQndCckJqOEdQUVlIQUd3R1B3WnJCZ2NBYkFaQkJqOEdCd0J0QmtFR2JBWUhBRzBHUXdaQkJnY0FiZ1pEQm0wR0J3QnVCa1VHUXdZSEFFZ0diZ1p2QmdjQVNBWkZCbTRHQndCS0JtOEdjQVlIQUVvR1NBWnZCZ2NBVEFad0JuRUdCd0JNQmtvR2NBWUhBRTRHY1FaeUJnY0FUZ1pNQm5FR0J3QlFCbklHY3dZSEFGQUdUZ1p5QmdjQVVBWjBCbElHQndCUUJuTUdkQVlIQUZJR2RRWlVCZ2NBVWdaMEJuVUdCd0JVQm5ZR1ZnWUhBRlFHZFFaMkJnY0FWZ1ozQmxnR0J3QldCbllHZHdZSEFGZ0dlQVphQmdjQVdBWjNCbmdHQndCYUJua0dYQVlIQUZvR2VBWjVCZ2NBWEFaNkJsNEdCd0JjQm5rR2VnWUhBSG9HWHdaZUJnY0FlZ1o3Qmw4R0J3QjdCbUVHWHdZSEFIc0dmQVpoQmdjQWZBWmpCbUVHQndCOEJuMEdZd1lIQUgwR1pRWmpCZ2NBZlFaK0JtVUdCd0IrQmprR1pRWUhBSDRHWndZNUJnY0Fmd1puQm9BR0J3Qi9CbWdHWndZSEFJRUdhQVovQmdjQWdRWnBCbWdHQndDQ0Jta0dnUVlIQUlJR2FnWnBCZ2NBZ3dacUJvSUdCd0NEQm1zR2FnWUhBSVFHYXdhREJnY0FoQVpzQm1zR0J3Q0ZCbXdHaEFZSEFJVUdiUVpzQmdjQWhnWnRCb1VHQndDR0JtNEdiUVlIQUc4R2hnYUhCZ2NBYndadUJvWUdCd0J3Qm9jR2lBWUhBSEFHYndhSEJnY0FjUWFJQm9rR0J3QnhCbkFHaUFZSEFISUdpUWFLQmdjQWNnWnhCb2tHQndCekJvb0dpd1lIQUhNR2NnYUtCZ2NBZEFhTEJvd0dCd0IwQm5NR2l3WUhBSFVHakFhTkJnY0FkUVowQm93R0J3QjJCbzBHamdZSEFIWUdkUWFOQmdjQWR3YU9CbzhHQndCM0JuWUdqZ1lIQUhnR2p3YVFCZ2NBZUFaM0JvOEdCd0I1QnBBR2tRWUhBSGtHZUFhUUJnY0FlZ2FSQnBJR0J3QjZCbmtHa1FZSEFKTUdlZ2FTQmdjQWt3WjdCbm9HQndDVUJuc0drd1lIQUpRR2ZBWjdCZ2NBbFFaOEJwUUdCd0NWQm4wR2ZBWUhBSllHZlFhVkJnY0FsZ1orQm4wR0J3Q0FCbjRHbGdZSEFJQUdad1orQmdjQWx3YUFCcGdHQndDWEJuOEdnQVlIQUpjR2dRWi9CZ2NBbHdhWkJvRUdCd0NaQm9JR2dRWUhBSmtHbWdhQ0JnY0FtZ2FEQm9JR0J3Q2FCcHNHZ3dZSEFKc0doQWFEQmdjQW13YWNCb1FHQndDY0JvVUdoQVlIQUp3R25RYUZCZ2NBblFhR0JvVUdCd0NkQnA0R2hnWUhBSVlHbndhSEJnY0FoZ2FlQnA4R0J3Q0hCcUFHaUFZSEFJY0dud2FnQmdjQWlBYWhCb2tHQndDSUJxQUdvUVlIQUlrR29nYUtCZ2NBaVFhaEJxSUdCd0NLQnFNR2l3WUhBSW9Hb2dhakJnY0FqQWFqQnFRR0J3Q01Cb3NHb3dZSEFJMEdwQWFsQmdjQWpRYU1CcVFHQndDT0JxVUdwZ1lIQUk0R2pRYWxCZ2NBandhbUJxY0dCd0NQQm80R3BnWUhBSkFHcHdhb0JnY0FrQWFQQnFjR0J3Q1JCcWdHcVFZSEFKRUdrQWFvQmdjQWtnYXBCcW9HQndDU0JwRUdxUVlIQUtzR2tnYXFCZ2NBcXdhVEJwSUdCd0NzQnBNR3F3WUhBS3dHbEFhVEJnY0FyUWFVQnF3R0J3Q3RCcFVHbEFZSEFLNEdsUWF0QmdjQXJnYVdCcFVHQndDWUJwWUdyZ1lIQUpnR2dBYVdCZ2NBcndhWUJyQUdCd0N2QnBjR21BWUhBTEVHbHdhdkJnY0FzUWFaQnBjR0J3Q3lCcGtHc1FZSEFMSUdtZ2FaQmdjQXN3YWFCcklHQndDekJwc0dtZ1lIQUxRR213YXpCZ2NBdEFhY0Jwc0dCd0MxQnB3R3RBWUhBTFVHblFhY0JnY0F0Z2FkQnJVR0J3QzJCcDRHblFZSEFKOEd0Z2EzQmdjQW53YWVCcllHQndDZ0JyY0d1QVlIQUtBR253YTNCZ2NBb1FhNEJya0dCd0NoQnFBR3VBWUhBS0lHdVFhNkJnY0FvZ2FoQnJrR0J3Q2pCcm9HdXdZSEFLTUdvZ2E2QmdjQXBBYTdCcndHQndDa0JxTUd1d1lIQUtVR3ZBYTlCZ2NBcFFha0Jyd0dCd0NtQnIwR3ZnWUhBS1lHcFFhOUJnY0Fwd2ErQnI4R0J3Q25CcVlHdmdZSEFLZ0d2d2JBQmdjQXFBYW5CcjhHQndDcEJzQUd3UVlIQUtrR3FBYkFCZ2NBcWdiQkJzSUdCd0NxQnFrR3dRWUhBTU1HcWdiQ0JnY0F3d2FyQnFvR0J3REVCcXNHd3dZSEFNUUdyQWFyQmdjQXhRYXNCc1FHQndERkJxMEdyQVlIQU1ZR3JRYkZCZ2NBeGdhdUJxMEdCd0N3QnE0R3hnWUhBTEFHbUFhdUJnY0F4d2F2QnJBR0J3REhCc2dHcndZSEFNa0dyd2JJQmdjQXlRYXhCcThHQndES0JyRUd5UVlIQU1vR3NnYXhCZ2NBeXdheUJzb0dCd0RMQnJNR3NnWUhBTXdHc3diTEJnY0F6QWEwQnJNR0J3RE5CclFHekFZSEFNMEd0UWEwQmdjQXpnYTFCczBHQndET0JyWUd0UVlIQUxjR3pnYlBCZ2NBdHdhMkJzNEdCd0M0QnM4RzBBWUhBTGdHdHdiUEJnY0F1UWJRQnRFR0J3QzVCcmdHMEFZSEFMb0cwUWJTQmdjQXVnYTVCdEVHQndDN0J0SUcwd1lIQUxzR3VnYlNCZ2NBdXdiVUJyd0dCd0M3QnRNRzFBWUhBTHdHMVFhOUJnY0F2QWJVQnRVR0J3QzlCdFlHdmdZSEFMMEcxUWJXQmdjQXZnYlhCcjhHQndDK0J0WUcxd1lIQUw4RzJBYkFCZ2NBdndiWEJ0Z0dCd0RBQnRrR3dRWUhBTUFHMkFiWkJnY0F3UWJhQnNJR0J3REJCdGtHMmdZSEFOb0d3d2JDQmdjQTJnYmJCc01HQndEYkJzUUd3d1lIQU5zRzNBYkVCZ2NBM0FiRkJzUUdCd0RjQnQwR3hRWUhBTjBHeGdiRkJnY0EzUWJlQnNZR0J3RGVCckFHeGdZSEFONEd4d2F3QmdjQUt3YmZCaXdHQndBckJ1QUczd1lIQUNvRzRBWXJCZ2NBS2diaEJ1QUdCd0FwQnVFR0tnWUhBQ2tHNGdiaEJnY0FLQWJpQmlrR0J3QW9CdU1HNGdZSEFDY0c0d1lvQmdjQUp3YmtCdU1HQndBbUJ1UUdKd1lIQUNZRzVRYmtCZ2NBSlFibEJpWUdCd0FsQnVZRzVRWUhBQ1FHNWdZbEJnY0FKQWJuQnVZR0J3QWpCdWNHSkFZSEFDTUc2QWJuQmdjQUlnYm9CaU1HQndBaUJ1a0c2QVlIQUNFRzZRWWlCZ2NBSVFicUJ1a0dCd0FnQnVvR0lRWUhBQ0FHNndicUJnY0FId2JyQmlBR0J3QWZCdXdHNndZSEFEWUc3QVlmQmdjQU5nYnRCdXdHQndBMUJ1MEdOZ1lIQURVRzdnYnRCZ2NBTkFidUJqVUdCd0EwQnU4RzdnWUhBRE1HN3dZMEJnY0FNd2J3QnU4R0J3QXlCdkFHTXdZSEFESUc4UWJ3QmdjQU1RYnhCaklHQndBeEJ2SUc4UVlIQURBRzhnWXhCZ2NBTUFiekJ2SUdCd0F2QnZNR01BWUhBQzhHOUFiekJnY0FMZ2IwQmk4R0J3QXVCdlVHOUFZSEFDMEc5UVl1QmdjQUxRYjJCdlVHQndBc0J2WUdMUVlIQUN3RzN3YjJCZ2NBVVFiM0JrOEdCd0JSQnZnRzl3WUhBUGdHNEFiM0JnY0ErQWJmQnVBR0J3QlRCdmdHVVFZSEFGTUcrUWI0QmdjQStRYmZCdmdHQndENUJ2WUczd1lIQUZVRytRWlRCZ2NBVlFiNkJ2a0dCd0Q2QnZZRytRWUhBUG9HOVFiMkJnY0FWd2I2QmxVR0J3QlhCdnNHK2dZSEFQc0c5UWI2QmdjQSt3YjBCdlVHQndCWkJ2c0dWd1lIQUZrRy9BYjdCZ2NBL0FiMEJ2c0dCd0Q4QnZNRzlBWUhBRnNHL0FaWkJnY0FXd2I5QnZ3R0J3RDlCdk1HL0FZSEFQMEc4Z2J6QmdjQVhRYjlCbHNHQndCZEJ2NEcvUVlIQVA0RzhnYjlCZ2NBL2dieEJ2SUdCd0JnQnY0R1hRWUhBR0FHL3diK0JnY0Evd2J4QnY0R0J3RC9CdkFHOFFZSEFHSUcvd1pnQmdjQVlnWUFCLzhHQndBQUIvQUcvd1lIQUFBSDd3YndCZ2NBWkFZQUIySUdCd0JrQmdFSEFBY0hBQUVIN3dZQUJ3Y0FBUWZ1QnU4R0J3Qm1CZ0VIWkFZSEFHWUdBZ2NCQndjQUFnZnVCZ0VIQndBQ0IrMEc3Z1lIQURnR0FnZG1CZ2NBT0FZREJ3SUhCd0FEQiswR0FnY0hBQU1IN0FidEJnY0FPZ1lEQnpnR0J3QTZCZ1FIQXdjSEFBUUg3QVlEQndjQUJBZnJCdXdHQndBOEJnUUhPZ1lIQUR3R0JRY0VCd2NBQlFmckJnUUhCd0FGQitvRzZ3WUhBRDRHQlFjOEJnY0FQZ1lHQndVSEJ3QUdCK29HQlFjSEFBWUg2UWJxQmdjQVFBWUdCejRHQndCQUJnY0hCZ2NIQUFjSDZRWUdCd2NBQndmb0J1a0dCd0JDQmdjSFFBWUhBRUlHQ0FjSEJ3Y0FDQWZvQmdjSEJ3QUlCK2NHNkFZSEFFUUdDQWRDQmdjQVJBWUpCd2dIQndBSkIrY0dDQWNIQUFrSDVnYm5CZ2NBUmdZSkIwUUdCd0JHQmdvSENRY0hBQW9INWdZSkJ3Y0FDZ2ZsQnVZR0J3QkhCZ29IUmdZSEFFY0dDd2NLQndjQUN3ZmxCZ29IQndBTEIrUUc1UVlIQUVrR0N3ZEhCZ2NBU1FZTUJ3c0hCd0FNQitRR0N3Y0hBQXdINHdia0JnY0FTd1lNQjBrR0J3QkxCZzBIREFjSEFBMEg0d1lNQndjQURRZmlCdU1HQndCTkJnMEhTd1lIQUUwR0RnY05Cd2NBRGdmaUJnMEhCd0FPQitFRzRnWUhBRThHRGdkTkJnY0FUd2IzQmc0SEJ3RDNCdUVHRGdjSEFQY0c0QWJoQmdjQUR3Y1FCeEVIQndBUEJ4SUhFQWNIQUJJSEV3Y1FCd2NBRWdjVUJ4TUhCd0FVQnhVSEV3Y0hBQlFIRmdjVkJ3Y0FGZ2NYQnhVSEJ3QVdCeGdIRndjSEFCZ0hHUWNYQndjQUdBY2FCeGtIQndBYUJ4c0hHUWNIQUJvSEhBY2JCd2NBR3djZEJ4NEhCd0FiQnh3SEhRY0hBQjRISHdjZ0J3Y0FIZ2NkQng4SEJ3QWdCeUVISWdjSEFDQUhId2NoQndjQUlnY2pCeVFIQndBaUJ5RUhJd2NIQUNRSEpRY21Cd2NBSkFjakJ5VUhCd0FtQnljSEtBY0hBQ1lISlFjbkJ3Y0FLQWNwQnlvSEJ3QW9CeWNIS1FjSEFDb0hLd2NzQndjQUtnY3BCeXNIQndBc0J5MEhMZ2NIQUN3SEt3Y3RCd2NBTGdjdkJ6QUhCd0F1QnkwSEx3Y0hBREFITVFjeUJ3Y0FNQWN2QnpFSEJ3QXlCek1ITkFjSEFESUhNUWN6QndjQU13YzFCelFIQndBekJ6WUhOUWNIQURZSE53YzFCd2NBTmdjNEJ6Y0hCd0E0QnprSE53Y0hBRGdIT2djNUJ3Y0FPZ2M3QnprSEJ3QTZCendIT3djSEFEd0hQUWM3QndjQVBBYytCejBIQndBK0J4RUhQUWNIQUQ0SER3Y1JCd2NBUHdjK0IwQUhCd0EvQnc4SFBnY0hBRDhIRWdjUEJ3Y0FQd2RCQnhJSEJ3QkJCeFFIRWdjSEFFRUhRZ2NVQndjQVFnY1dCeFFIQndCQ0IwTUhGZ2NIQUVNSEdBY1dCd2NBUXdkRUJ4Z0hCd0JFQnhvSEdBY0hBRVFIUlFjYUJ3Y0FSUWNjQnhvSEJ3QkZCMFlISEFjSEFCd0hSd2NkQndjQUhBZEdCMGNIQndBZEIwZ0hId2NIQUIwSFJ3ZElCd2NBSHdkSkJ5RUhCd0FmQjBnSFNRY0hBQ0VIU2djakJ3Y0FJUWRKQjBvSEJ3QWpCMHNISlFjSEFDTUhTZ2RMQndjQUp3ZExCMHdIQndBbkJ5VUhTd2NIQUNrSFRBZE5Cd2NBS1FjbkIwd0hCd0FyQjAwSFRnY0hBQ3NIS1FkTkJ3Y0FMUWRPQjA4SEJ3QXRCeXNIVGdjSEFDOEhUd2RRQndjQUx3Y3RCMDhIQndBeEIxQUhVUWNIQURFSEx3ZFFCd2NBTXdkUkIxSUhCd0F6QnpFSFVRY0hBRk1ITXdkU0J3Y0FVd2MyQnpNSEJ3QlVCellIVXdjSEFGUUhPQWMyQndjQVZRYzRCMVFIQndCVkJ6b0hPQWNIQUZZSE9nZFZCd2NBVmdjOEJ6b0hCd0JBQnp3SFZnY0hBRUFIUGdjOEJ3Y0FWd2RBQjFnSEJ3QlhCejhIUUFjSEFGa0hQd2RYQndjQVdRZEJCejhIQndCYUIwRUhXUWNIQUZvSFFnZEJCd2NBV3dkQ0Ixb0hCd0JiQjBNSFFnY0hBRndIUXdkYkJ3Y0FYQWRFQjBNSEJ3QmRCMFFIWEFjSEFGMEhSUWRFQndjQVhnZEZCMTBIQndCZUIwWUhSUWNIQUVjSFhnZGZCd2NBUndkR0IxNEhCd0JJQjE4SFlBY0hBRWdIUndkZkJ3Y0FTUWRnQjJFSEJ3QkpCMGdIWUFjSEFFb0hZUWRpQndjQVNnZEpCMkVIQndCTEIySUhZd2NIQUVzSFNnZGlCd2NBVEFkakIyUUhCd0JNQjBzSFl3Y0hBRTBIWkFkbEJ3Y0FUUWRNQjJRSEJ3Qk9CMlVIWmdjSEFFNEhUUWRsQndjQVR3ZG1CMmNIQndCUEIwNEhaZ2NIQUZBSFp3ZG9Cd2NBVUFkUEIyY0hCd0JSQjJnSGFRY0hBRkVIVUFkb0J3Y0FVZ2RwQjJvSEJ3QlNCMUVIYVFjSEFHc0hVZ2RxQndjQWF3ZFRCMUlIQndCc0IxTUhhd2NIQUd3SFZBZFRCd2NBYlFkVUIyd0hCd0J0QjFVSFZBY0hBRzRIVlFkdEJ3Y0FiZ2RXQjFVSEJ3QllCMVlIYmdjSEFGZ0hRQWRXQndjQWJ3ZFlCM0FIQndCdkIxY0hXQWNIQUc4SFdRZFhCd2NBYndkeEIxa0hCd0J4QjFvSFdRY0hBSEVIY2dkYUJ3Y0FjZ2RiQjFvSEJ3QnlCM01IV3djSEFITUhYQWRiQndjQWN3ZDBCMXdIQndCMEIxMEhYQWNIQUhRSGRRZGRCd2NBZFFkZUIxMEhCd0IxQjNZSFhnY0hBRjRIZHdkZkJ3Y0FYZ2QyQjNjSEJ3QmZCM2dIWUFjSEFGOEhkd2Q0QndjQVlBZDVCMkVIQndCZ0IzZ0hlUWNIQUdFSGVnZGlCd2NBWVFkNUIzb0hCd0JpQjNzSFl3Y0hBR0lIZWdkN0J3Y0FaQWQ3QjN3SEJ3QmtCMk1IZXdjSEFHVUhmQWQ5QndjQVpRZGtCM3dIQndCbUIzMEhmZ2NIQUdZSFpRZDlCd2NBWndkK0IzOEhCd0JuQjJZSGZnY0hBR2dIZndlQUJ3Y0FhQWRuQjM4SEJ3QnBCNEFIZ1FjSEFHa0hhQWVBQndjQWFnZUJCNElIQndCcUIya0hnUWNIQUlNSGFnZUNCd2NBZ3dkckIyb0hCd0NFQjJzSGd3Y0hBSVFIYkFkckJ3Y0FoUWRzQjRRSEJ3Q0ZCMjBIYkFjSEFJWUhiUWVGQndjQWhnZHVCMjBIQndCd0IyNEhoZ2NIQUhBSFdBZHVCd2NBaHdkd0I0Z0hCd0NIQjI4SGNBY0hBSWtIYndlSEJ3Y0FpUWR4QjI4SEJ3Q0tCM0VIaVFjSEFJb0hjZ2R4QndjQWl3ZHlCNG9IQndDTEIzTUhjZ2NIQUl3SGN3ZUxCd2NBakFkMEIzTUhCd0NOQjNRSGpBY0hBSTBIZFFkMEJ3Y0FqZ2QxQjQwSEJ3Q09CM1lIZFFjSEFIY0hqZ2VQQndjQWR3ZDJCNDRIQndCNEI0OEhrQWNIQUhnSGR3ZVBCd2NBZVFlUUI1RUhCd0I1QjNnSGtBY0hBSG9Ia1FlU0J3Y0FlZ2Q1QjVFSEJ3QjdCNUlIa3djSEFIc0hlZ2VTQndjQWZBZVRCNVFIQndCOEIzc0hrd2NIQUgwSGxBZVZCd2NBZlFkOEI1UUhCd0IrQjVVSGxnY0hBSDRIZlFlVkJ3Y0Fmd2VXQjVjSEJ3Qi9CMzRIbGdjSEFJQUhsd2VZQndjQWdBZC9CNWNIQndDQkI1Z0htUWNIQUlFSGdBZVlCd2NBZ2dlWkI1b0hCd0NDQjRFSG1RY0hBSnNIZ2dlYUJ3Y0Ftd2VEQjRJSEJ3Q2NCNE1IbXdjSEFKd0hoQWVEQndjQW5RZUVCNXdIQndDZEI0VUhoQWNIQUo0SGhRZWRCd2NBbmdlR0I0VUhCd0NJQjRZSG5nY0hBSWdIY0FlR0J3Y0Fud2VIQjRnSEJ3Q2ZCNkFIaHdjSEFLRUhod2VnQndjQW9RZUpCNGNIQndDaUI0a0hvUWNIQUtJSGlnZUpCd2NBb3dlS0I2SUhCd0NqQjRzSGlnY0hBS1FIaXdlakJ3Y0FwQWVNQjRzSEJ3Q2xCNHdIcEFjSEFLVUhqUWVNQndjQXBnZU5CNlVIQndDbUI0NEhqUWNIQUk4SHBnZW5Cd2NBandlT0I2WUhCd0NRQjZjSHFBY0hBSkFIandlbkJ3Y0FrUWVvQjZrSEJ3Q1JCNUFIcUFjSEFKSUhxUWVxQndjQWtnZVJCNmtIQndDVEI2b0hxd2NIQUpNSGtnZXFCd2NBa3dlc0I1UUhCd0NUQjZzSHJBY0hBSlFIclFlVkJ3Y0FsQWVzQjYwSEJ3Q1ZCNjRIbGdjSEFKVUhyUWV1QndjQWxnZXZCNWNIQndDV0I2NEhyd2NIQUpjSHNBZVlCd2NBbHdldkI3QUhCd0NZQjdFSG1RY0hBSmdIc0FleEJ3Y0FtUWV5QjVvSEJ3Q1pCN0VIc2djSEFMSUhtd2VhQndjQXNnZXpCNXNIQndDekI1d0htd2NIQUxNSHRBZWNCd2NBdEFlZEI1d0hCd0MwQjdVSG5RY0hBTFVIbmdlZEJ3Y0F0UWUyQjU0SEJ3QzJCNGdIbmdjSEFMWUhud2VJQndjQXdnV2ZCOEFGQndEQ0JhQUhud2NIQU1NRm9BZkNCUWNBd3dXaEI2QUhCd0RGQmFFSHd3VUhBTVVGb2dlaEJ3Y0F4d1dpQjhVRkJ3REhCYU1Ib2djSEFNa0Zvd2ZIQlFjQXlRV2tCNk1IQndETEJhUUh5UVVIQU1zRnBRZWtCd2NBelFXbEI4c0ZCd0ROQmFZSHBRY0hBS2NIelFYUUJRY0Fwd2VtQjgwRkJ3Q29COUFGMGdVSEFLZ0hwd2ZRQlFjQXFRZlNCZFFGQndDcEI2Z0gwZ1VIQUtvSDFBWFdCUWNBcWdlcEI5UUZCd0NyQjlZRjJBVUhBS3NIcWdmV0JRY0FyQWZZQmRrRkJ3Q3NCNnNIMkFVSEFLMEgyUVhiQlFjQXJRZXNCOWtGQndDdUI5c0YzUVVIQUs0SHJRZmJCUWNBcndmZEJkOEZCd0N2QjY0SDNRVUhBTEFIM3dYaEJRY0FzQWV2Qjk4RkJ3Q3hCK0VGNHdVSEFMRUhzQWZoQlFjQXNnZmpCZVVGQndDeUI3RUg0d1VIQU9nRnNnZmxCUWNBNkFXekI3SUhCd0RxQmJNSDZBVUhBT29GdEFlekJ3Y0E3QVcwQitvRkJ3RHNCYlVIdEFjSEFPNEZ0UWZzQlFjQTdnVzJCN1VIQndEQUJiWUg3Z1VIQU1BRm53ZTJCd2NBdHdmSEJyZ0hCd0MzQjhnR3h3WUhBTGtIeUFhM0J3Y0F1UWZKQnNnR0J3QzZCOGtHdVFjSEFMb0h5Z2JKQmdjQXV3ZktCcm9IQndDN0I4c0d5Z1lIQUx3SHl3YTdCd2NBdkFmTUJzc0dCd0M5Qjh3R3ZBY0hBTDBIelFiTUJnY0F2Z2ZOQnIwSEJ3QytCODRHelFZSEFNOEd2Z2UvQndjQXp3Yk9CcjRIQndEUUJyOEh3QWNIQU5BR3p3YS9Cd2NBMFFiQUI4RUhCd0RSQnRBR3dBY0hBTklHd1FmQ0J3Y0EwZ2JSQnNFSEJ3RFRCc0lId3djSEFOTUcwZ2JDQndjQTFBYkRCOFFIQndEVUJ0TUd3d2NIQU5VR3hBZkZCd2NBMVFiVUJzUUhCd0RXQnNVSHhnY0hBTllHMVFiRkJ3Y0Exd2JHQjhjSEJ3RFhCdFlHeGdjSEFOZ0d4d2ZJQndjQTJBYlhCc2NIQndEWkJzZ0h5UWNIQU5rRzJBYklCd2NBMmdiSkI4b0hCd0RhQnRrR3lRY0hBTXNIMmdiS0J3Y0F5d2ZiQnRvR0J3RE1COXNHeXdjSEFNd0gzQWJiQmdjQXpRZmNCc3dIQndETkI5MEczQVlIQU00SDNRYk5Cd2NBemdmZUJ0MEdCd0M0Qjk0R3pnY0hBTGdIeHdiZUJnY0F6d2UzQjdnSEJ3RFBCOUFIdHdjSEFORUh0d2ZRQndjQTBRZTVCN2NIQndEU0I3a0gwUWNIQU5JSHVnZTVCd2NBMHdlNkI5SUhCd0RUQjdzSHVnY0hBTlFIdXdmVEJ3Y0ExQWU4QjdzSEJ3RFZCN3dIMUFjSEFOVUh2UWU4QndjQTFnZTlCOVVIQndEV0I3NEh2UWNIQUw4SDFnZlhCd2NBdndlK0I5WUhCd0RBQjljSDJBY0hBTUFIdndmWEJ3Y0F3UWZZQjlrSEJ3REJCOEFIMkFjSEFNSUgyUWZhQndjQXdnZkJCOWtIQndEREI5b0gyd2NIQU1NSHdnZmFCd2NBd3dmY0I4UUhCd0REQjlzSDNBY0hBTVFIM1FmRkJ3Y0F4QWZjQjkwSEJ3REZCOTRIeGdjSEFNVUgzUWZlQndjQXhnZmZCOGNIQndER0I5NEgzd2NIQU1jSDRBZklCd2NBeHdmZkIrQUhCd0RJQitFSHlRY0hBTWdINEFmaEJ3Y0F5UWZpQjhvSEJ3REpCK0VINGdjSEFPSUh5d2ZLQndjQTRnZmpCOHNIQndEakI4d0h5d2NIQU9NSDVBZk1Cd2NBNUFmTkI4d0hCd0RrQitVSHpRY0hBT1VIemdmTkJ3Y0E1UWZtQjg0SEJ3RG1CN2dIemdjSEFPWUh6d2U0QndjQTV3ZlBCK2dIQndEbkI5QUh6d2NIQU9rSDBBZm5Cd2NBNlFmUkI5QUhCd0RxQjlFSDZRY0hBT29IMGdmUkJ3Y0E2d2ZTQitvSEJ3RHJCOU1IMGdjSEFPd0gwd2ZyQndjQTdBZlVCOU1IQndEdEI5UUg3QWNIQU8wSDFRZlVCd2NBN2dmVkIrMEhCd0R1QjlZSDFRY0hBTmNIN2dmdkJ3Y0Exd2ZXQis0SEJ3RFlCKzhIOEFjSEFOZ0gxd2Z2QndjQTJRZndCL0VIQndEWkI5Z0g4QWNIQU5vSDhRZnlCd2NBMmdmWkIvRUhCd0RiQi9JSDh3Y0hBTnNIMmdmeUJ3Y0EzQWZ6Qi9RSEJ3RGNCOXNIOHdjSEFOMEg5QWYxQndjQTNRZmNCL1FIQndEZUIvVUg5Z2NIQU40SDNRZjFCd2NBM3dmMkIvY0hCd0RmQjk0SDlnY0hBT0FIOXdmNEJ3Y0E0QWZmQi9jSEJ3RGhCL2dIK1FjSEFPRUg0QWY0QndjQTRnZjVCL29IQndEaUIrRUgrUWNIQVBzSDRnZjZCd2NBK3dmakIrSUhCd0Q4QitNSCt3Y0hBUHdINUFmakJ3Y0EvUWZrQi93SEJ3RDlCK1VINUFjSEFQNEg1UWY5QndjQS9nZm1CK1VIQndEb0IrWUgvZ2NIQU9nSHp3Zm1Cd2NBL3djQUNBRUlCd0QvQndJSUFBZ0hBQU1JQWdqL0J3Y0FBd2dFQ0FJSUJ3QUJDQVVJQmdnSEFBRUlBQWdGQ0FjQUJ3Z0lDQWtJQndBSENBb0lDQWdIQUFzSUNnZ0hDQWNBQ3dnTUNBb0lCd0FKQ0EwSURnZ0hBQWtJQ0FnTkNBY0FEd2dNQ0FzSUJ3QVBDQkFJREFnSEFBNElFUWdTQ0FjQURnZ05DQkVJQndBVENCQUlEd2dIQUJNSUZBZ1FDQWNBRWdnVkNCWUlCd0FTQ0JFSUZRZ0hBQmNJRkFnVENBY0FGd2dZQ0JRSUJ3QVdDQmtJR2dnSEFCWUlGUWdaQ0FjQUdnZ0VDQU1JQndBYUNCa0lCQWdIQUFZSUdBZ1hDQWNBQmdnRkNCZ0lCd0FiQ0FBSUFnZ0hBQnNJSEFnQUNBY0FCQWdiQ0FJSUJ3QUVDQjBJR3dnSEFCd0lCUWdBQ0FjQUhBZ2VDQVVJQndBS0NCOElDQWdIQUFvSUlBZ2ZDQWNBSVFnS0NBd0lCd0FoQ0NBSUNnZ0hBQWdJSWdnTkNBY0FDQWdmQ0NJSUJ3QWpDQXdJRUFnSEFDTUlJUWdNQ0FjQURRZ2tDQkVJQndBTkNDSUlKQWdIQUNVSUVBZ1VDQWNBSlFnakNCQUlCd0FSQ0NZSUZRZ0hBQkVJSkFnbUNBY0FKd2dVQ0JnSUJ3QW5DQ1VJRkFnSEFCVUlLQWdaQ0FjQUZRZ21DQ2dJQndBWkNCMElCQWdIQUJrSUtBZ2RDQWNBSGdnWUNBVUlCd0FlQ0NjSUdBZ0hBQnNJS1FnY0NBY0FHd2dxQ0NrSUJ3QWRDQ29JR3dnSEFCMElLd2dxQ0FjQUhBZ3NDQjRJQndBY0NDa0lMQWdIQUNBSUxRZ2ZDQWNBSUFndUNDMElCd0FoQ0M0SUlBZ0hBQ0VJTHdndUNBY0FId2d3Q0NJSUJ3QWZDQzBJTUFnSEFDTUlMd2doQ0FjQUl3Z3hDQzhJQndBaUNESUlKQWdIQUNJSU1BZ3lDQWNBSlFneENDTUlCd0FsQ0RNSU1RZ0hBQ1FJTkFnbUNBY0FKQWd5Q0RRSUJ3QW5DRE1JSlFnSEFDY0lOUWd6Q0FjQUpnZzJDQ2dJQndBbUNEUUlOZ2dIQUNnSUt3Z2RDQWNBS0FnMkNDc0lCd0FlQ0RVSUp3Z0hBQjRJTEFnMUNBY0FLZ2czQ0NrSUJ3QXFDRGdJTndnSEFDc0lPQWdxQ0FjQUt3ZzVDRGdJQndBcENEb0lMQWdIQUNrSU53ZzZDQWNBTGdnN0NDMElCd0F1Q0R3SU93Z0hBQzhJUEFndUNBY0FMd2c5Q0R3SUJ3QXRDRDRJTUFnSEFDMElPd2crQ0FjQU1RZzlDQzhJQndBeENEOElQUWdIQURBSVFBZ3lDQWNBTUFnK0NFQUlCd0F6Q0Q4SU1RZ0hBRE1JUVFnL0NBY0FNZ2hDQ0RRSUJ3QXlDRUFJUWdnSEFEVUlRUWd6Q0FjQU5RaERDRUVJQndBMENFUUlOZ2dIQURRSVFnaEVDQWNBTmdnNUNDc0lCd0EyQ0VRSU9RZ0hBQ3dJUXdnMUNBY0FMQWc2Q0VNSUJ3QTRDRVVJTndnSEFEZ0lSZ2hGQ0FjQU9RaEdDRGdJQndBNUNFY0lSZ2dIQURjSVNBZzZDQWNBTndoRkNFZ0lCd0E4Q0VrSU93Z0hBRHdJU2doSkNBY0FQUWhLQ0R3SUJ3QTlDRXNJU2dnSEFEc0lUQWcrQ0FjQU93aEpDRXdJQndBL0NFc0lQUWdIQUQ4SVRRaExDQWNBUGdoT0NFQUlCd0ErQ0V3SVRnZ0hBRUVJVFFnL0NBY0FRUWhQQ0UwSUJ3QkFDRkFJUWdnSEFFQUlUZ2hRQ0FjQVF3aFBDRUVJQndCRENGRUlUd2dIQUVJSVVnaEVDQWNBUWdoUUNGSUlCd0JFQ0VjSU9RZ0hBRVFJVWdoSENBY0FPZ2hSQ0VNSUJ3QTZDRWdJVVFnSEFFWUlVd2hGQ0FjQVJnaFVDRk1JQndCSENGUUlSZ2dIQUVjSVZRaFVDQWNBUlFoV0NFZ0lCd0JGQ0ZNSVZnZ0hBRW9JVndoSkNBY0FTZ2hZQ0ZjSUJ3QkxDRmdJU2dnSEFFc0lXUWhZQ0FjQVNRaGFDRXdJQndCSkNGY0lXZ2dIQUUwSVdRaExDQWNBVFFoYkNGa0lCd0JNQ0Z3SVRnZ0hBRXdJV2doY0NBY0FUd2hiQ0UwSUJ3QlBDRjBJV3dnSEFFNElYZ2hRQ0FjQVRnaGNDRjRJQndCUkNGMElUd2dIQUZFSVh3aGRDQWNBVUFoZ0NGSUlCd0JRQ0Y0SVlBZ0hBRklJVlFoSENBY0FVZ2hnQ0ZVSUJ3QklDRjhJVVFnSEFFZ0lWZ2hmQ0FjQVZBaGhDRk1JQndCVUNHSUlZUWdIQUZVSVlnaFVDQWNBVlFoakNHSUlCd0JUQ0dRSVZnZ0hBRk1JWVFoa0NBY0FXQWhsQ0ZjSUJ3QllDR1lJWlFnSEFGa0laZ2hZQ0FjQVdRaG5DR1lJQndCWENHZ0lXZ2dIQUZjSVpRaG9DQWNBV3dobkNGa0lCd0JiQ0drSVp3Z0hBRm9JYWdoY0NBY0FXZ2hvQ0dvSUJ3QmRDR2tJV3dnSEFGMElhd2hwQ0FjQVhBaHNDRjRJQndCY0NHb0liQWdIQUY4SWF3aGRDQWNBWHdodENHc0lCd0JlQ0c0SVlBZ0hBRjRJYkFodUNBY0FZQWhqQ0ZVSUJ3QmdDRzRJWXdnSEFGWUliUWhmQ0FjQVZnaGtDRzBJQndCaUNHOElZUWdIQUdJSWNBaHZDQWNBWXdod0NHSUlCd0JqQ0hFSWNBZ0hBR0VJY2doa0NBY0FZUWh2Q0hJSUJ3Qm1DSE1JWlFnSEFHWUlkQWh6Q0FjQVp3aDBDR1lJQndCbkNIVUlkQWdIQUdVSWRnaG9DQWNBWlFoekNIWUlCd0JwQ0hVSVp3Z0hBR2tJZHdoMUNBY0FhQWg0Q0dvSUJ3Qm9DSFlJZUFnSEFHc0lkd2hwQ0FjQWF3aDVDSGNJQndCcUNIb0liQWdIQUdvSWVBaDZDQWNBYlFoNUNHc0lCd0J0Q0hzSWVRZ0hBR3dJZkFodUNBY0FiQWg2Q0h3SUJ3QnVDSEVJWXdnSEFHNElmQWh4Q0FjQVpBaDdDRzBJQndCa0NISUlld2dIQUhBSWZRaHZDQWNBY0FoK0NIMElCd0J4Q0g0SWNBZ0hBSEVJZndoK0NBY0Fid2lBQ0hJSUJ3QnZDSDBJZ0FnSEFIUUlnUWh6Q0FjQWRBaUNDSUVJQndCMUNJSUlkQWdIQUhVSWd3aUNDQWNBY3dpRUNIWUlCd0J6Q0lFSWhBZ0hBSGNJZ3doMUNBY0Fkd2lGQ0lNSUJ3QjJDSVlJZUFnSEFIWUloQWlHQ0FjQWVRaUZDSGNJQndCNUNJY0loUWdIQUhnSWlBaDZDQWNBZUFpR0NJZ0lCd0I3Q0ljSWVRZ0hBSHNJaVFpSENBY0FlZ2lLQ0h3SUJ3QjZDSWdJaWdnSEFId0lmd2h4Q0FjQWZBaUtDSDhJQndCeUNJa0lld2dIQUhJSWdBaUpDQWNBZmdpTENIMElCd0IrQ0l3SWl3Z0hBSDhJakFoK0NBY0Fmd2lOQ0l3SUJ3QjlDSTRJZ0FnSEFIMElpd2lPQ0FjQWdnaVBDSUVJQndDQ0NKQUlqd2dIQUlNSWtBaUNDQWNBZ3dpUkNKQUlCd0NCQ0pJSWhBZ0hBSUVJandpU0NBY0FoUWlSQ0lNSUJ3Q0ZDSk1Ja1FnSEFJUUlsQWlHQ0FjQWhBaVNDSlFJQndDSENKTUloUWdIQUljSWxRaVRDQWNBaGdpV0NJZ0lCd0NHQ0pRSWxnZ0hBSWtJbFFpSENBY0FpUWlYQ0pVSUJ3Q0lDSmdJaWdnSEFJZ0lsZ2lZQ0FjQWlnaU5DSDhJQndDS0NKZ0lqUWdIQUlBSWx3aUpDQWNBZ0FpT0NKY0lCd0NNQ0prSWl3Z0hBSXdJbWdpWkNBY0FqUWlhQ0l3SUJ3Q05DSnNJbWdnSEFJc0luQWlPQ0FjQWl3aVpDSndJQndDUUNKMElqd2dIQUpBSW5naWRDQWNBa1FpZUNKQUlCd0NSQ0o4SW5nZ0hBSThJb0FpU0NBY0Fqd2lkQ0tBSUJ3Q1RDSjhJa1FnSEFKTUlvUWlmQ0FjQWtnaWlDSlFJQndDU0NLQUlvZ2dIQUpVSW9RaVRDQWNBbFFpakNLRUlCd0NVQ0tRSWxnZ0hBSlFJb2dpa0NBY0Fsd2lqQ0pVSUJ3Q1hDS1VJb3dnSEFKWUlwZ2lZQ0FjQWxnaWtDS1lJQndDWUNKc0lqUWdIQUpnSXBnaWJDQWNBamdpbENKY0lCd0NPQ0p3SXBRZ0hBSm9JcHdpWkNBY0FtZ2lvQ0tjSUJ3Q2JDS2dJbWdnSEFKc0lxUWlvQ0FjQW1RaXFDSndJQndDWkNLY0lxZ2dIQUo0SXF3aWRDQWNBbmdpc0NLc0lCd0NmQ0t3SW5nZ0hBSjhJclFpc0NBY0FuUWl1Q0tBSUJ3Q2RDS3NJcmdnSEFLRUlyUWlmQ0FjQW9RaXZDSzBJQndDZ0NMQUlvZ2dIQUtBSXJnaXdDQWNBb3dpdkNLRUlCd0NqQ0xFSXJ3Z0hBS0lJc2dpa0NBY0FvZ2l3Q0xJSUJ3Q2xDTEVJb3dnSEFLVUlzd2l4Q0FjQXBBaTBDS1lJQndDa0NMSUl0QWdIQUtZSXFRaWJDQWNBcGdpMENLa0lCd0NjQ0xNSXBRZ0hBSndJcWdpekNBY0FxQWkxQ0tjSUJ3Q29DTFlJdFFnSEFLa0l0Z2lvQ0FjQXFRaTNDTFlJQndDbkNMZ0lxZ2dIQUtjSXRRaTRDQWNBckFpNUNLc0lCd0NzQ0xvSXVRZ0hBSzBJdWdpc0NBY0FyUWk3Q0xvSUJ3Q3JDTHdJcmdnSEFLc0l1UWk4Q0FjQXJ3aTdDSzBJQndDdkNMMEl1d2dIQUs0SXZnaXdDQWNBcmdpOENMNElCd0N4Q0wwSXJ3Z0hBTEVJdndpOUNBY0FzQWpBQ0xJSUJ3Q3dDTDRJd0FnSEFMTUl2d2l4Q0FjQXN3akJDTDhJQndDeUNNSUl0QWdIQUxJSXdBakNDQWNBdEFpM0NLa0lCd0MwQ01JSXR3Z0hBS29Jd1FpekNBY0FxZ2k0Q01FSUJ3QzJDTU1JdFFnSEFMWUl4QWpEQ0FjQXR3akVDTFlJQndDM0NNVUl4QWdIQUxVSXhnaTRDQWNBdFFqRENNWUlCd0M2Q01jSXVRZ0hBTG9JeUFqSENBY0F1d2pJQ0xvSUJ3QzdDTWtJeUFnSEFMa0l5Z2k4Q0FjQXVRakhDTW9JQndDOUNNa0l1d2dIQUwwSXl3akpDQWNBdkFqTUNMNElCd0M4Q01vSXpBZ0hBTDhJeXdpOUNBY0F2d2pOQ01zSUJ3QytDTTRJd0FnSEFMNEl6QWpPQ0FjQXdRak5DTDhJQndEQkNNOEl6UWdIQU1BSTBBakNDQWNBd0FqT0NOQUlCd0RDQ01VSXR3Z0hBTUlJMEFqRkNBY0F1QWpQQ01FSUJ3QzRDTVlJendnSEFNUUkwUWpEQ0FjQXhBalNDTkVJQndBQkNOSUkvd2NIQUFFSTBRalNDQWNBeFFqU0NNUUlCd0RGQ05NSTBnZ0hBUDhIMHdnRENBY0Evd2ZTQ05NSUJ3RERDTlFJeGdnSEFNTUkwUWpVQ0FjQUJnalJDQUVJQndBR0NOUUkwUWdIQU1nSTFRakhDQWNBeUFqV0NOVUlCd0RYQ05ZSTJBZ0hBTmNJMVFqV0NBY0F5UWpXQ01nSUJ3REpDTmtJMWdnSEFOZ0kyUWphQ0FjQTJBaldDTmtJQndESENOc0l5Z2dIQU1jSTFRamJDQWNBM0FqVkNOY0lCd0RjQ05zSTFRZ0hBTXNJMlFqSkNBY0F5d2pkQ05rSUJ3RGFDTjBJRHdnSEFOb0kyUWpkQ0FjQXlnamVDTXdJQndES0NOc0kzZ2dIQUJJSTJ3amNDQWNBRWdqZUNOc0lCd0ROQ04wSXl3Z0hBTTBJM3dqZENBY0FEd2pmQ0JNSUJ3QVBDTjBJM3dnSEFNd0k0QWpPQ0FjQXpBamVDT0FJQndBV0NONElFZ2dIQUJZSTRBamVDQWNBendqZkNNMElCd0RQQ09FSTN3Z0hBQk1JNFFnWENBY0FFd2pmQ09FSUJ3RE9DT0lJMEFnSEFNNEk0QWppQ0FjQUdnamdDQllJQndBYUNPSUk0QWdIQU5BSTB3akZDQWNBMEFqaUNOTUlCd0FEQ09JSUdnZ0hBQU1JMHdqaUNBY0F4Z2poQ004SUJ3REdDTlFJNFFnSEFCY0kxQWdHQ0FjQUZ3amhDTlFJQndBd1FkMFZBQUJ5WVhZMExXRnNkUURtQ2dBQUFRQUNBQU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFFbEFTWUJKd0VvQVNrQktnRXJBU3dCTFFFdUFTOEJNQUV4QVRJQk13RTBBVFVCTmdFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBVkFCVVFGU0FWTUJWQUZWQVZZQlZ3RllBVmtCV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUJaZ0ZuQVdnQmFRRnFBV3NCYkFGdEFXNEJid0Z3QVhFQmNnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFac0JuQUdkQVo0Qm53R2dBYUVCb2dHakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0c0QWJrQnVnRzdBYndCdlFHK0FiOEJ3QUhCQWNJQnd3SEVBY1VCeGdISEFjZ0J5UUhLQWNzQnpBSE5BYzRCendIUUFkRUIwZ0hUQWRRQjFRSFdBZGNCMkFIWkFkb0Iyd0hjQWQwQjNnSGZBZUFCNFFIaUFlTUI1QUhsQWVZQjV3SG9BZWtCNmdIckFld0I3UUh1QWU4QjhBSHhBZklCOHdIMEFmVUI5Z0gzQWZnQitRSDZBZnNCL0FIOUFmNEIvd0VBQWdFQ0FnSURBZ1FDQlFJR0FnY0NDQUlKQWdvQ0N3SU1BZzBDRGdJUEFoQUNFUUlTQWhNQ0ZBSVZBaFlDRndJWUFoa0NHZ0liQWh3Q0hRSWVBaDhDSUFJaEFpSUNJd0lrQWlVQ0pnSW5BaWdDS1FJcUFpc0NMQUl0QWk0Q0x3SXdBakVDTWdJekFqUUNOUUkyQWpjQ09BSTVBam9DT3dJOEFqMENQZ0kvQWtBQ1FRSkNBa01DUkFKRkFrWUNSd0pJQWtrQ1NnSkxBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1BbWNDYUFKcEFtb0Nhd0pzQW0wQ2JnSnZBbkFDY1FKeUFuTUNkQUoxQW5ZQ2R3SjRBbmtDZWdKN0Fud0NmUUorQW44Q2dBS0JBb0lDZ3dLRUFvVUNoZ0tIQW9nQ2lRS0tBb3NDakFLTkFvNENqd0tRQXBFQ2tnS1RBcFFDbFFLV0FwY0NtQUtaQXBvQ213S2NBcDBDbmdLZkFxQUNvUUtpQXFNQ3BBS2xBcVlDcHdLb0Fxa0NxZ0tyQXF3Q3JRS3VBcThDc0FLeEFySUNzd0swQXJVQ3RnSzNBcmdDdVFLNkFyc0N2QUs5QXI0Q3Z3TEFBc0VDd2dMREFzUUN4UUxHQXNjQ3lBTEpBc29DeXdMTUFzMEN6Z0xQQXRBQzBRTFNBdE1DMUFMVkF0WUMxd0xZQXRrQzJnTGJBdHdDM1FMZUF0OEM0QUxoQXVJQzR3TGtBdVVDNWdMbkF1Z0M2UUxxQXVzQzdBTHRBdTRDN3dMd0F2RUM4Z0x6QXZRQzlRTDJBdmNDK0FMNUF2b0Mrd0w4QXYwQy9nTC9BZ0FEQVFNQ0F3TURCQU1GQXdZREJ3TUlBd2tEQ2dNTEF3d0REUU1PQXc4REVBTVJBeElERXdNVUF4VURGZ01YQXhnREdRTWFBeHNESEFNZEF4NERId01nQXlFRElnTWpBeVFESlFNbUF5Y0RLQU1wQXlvREt3TXNBeTBETGdNdkF6QURNUU15QXpNRE5BTTFBellETndNNEF6a0RPZ003QXp3RFBRTStBejhEUUFOQkEwSURRd05FQTBVRFJnTkhBMGdEU1FOS0Ewc0RUQU5OQTA0RFR3TlFBMUVEVWdOVEExUURWUU5XQTFjRFdBTlpBMW9EV3dOY0ExMERYZ05mQTJBRFlRTmlBMk1EWkFObEEyWURad05vQTJrRGFnTnJBMndEYlFOdUEyOERjQU54QTNJRGN3TjBBM1VEZGdOM0EzZ0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnT1BBNUFEa1FPU0E1TURsQU9WQTVZRGx3T1lBNWtEbWdPYkE1d0RuUU9lQTU4RG9BT2hBNklEb3dPa0E2VURwZ09uQTZnRHFRT3FBNnNEckFPdEE2NERyd093QTdFRHNnT3pBN1FEdFFPMkE3Y0R1QU81QTdvRHV3TzhBNzBEdmdPL0E4QUR3UVBDQThNRHhBUEZBOFlEeHdQSUE4a0R5Z1BMQTh3RHpRUE9BODhEMEFQUkE5SUQwd1BVQTlVRDFnUFhBOWdEMlFQYUE5c0QzQVBkQTk0RDN3UGdBK0VENGdQakErUUQ1UVBtQStjRDZBUHBBK29ENndQc0ErMEQ3Z1B2QS9BRDhRUHlBL01EOUFQMUEvWUQ5d1A0QS9rRCtnUDdBL3dEL1FQK0EvOERBQVFCQkFJRUF3UUVCQVVFQmdRSEJBZ0VDUVFLQkFzRURBUU5CQTRFRHdRUUJCRUVFZ1FUQkJRRUZRUVdCQmNFR0FRWkJCb0VHd1FjQkIwRUhnUWZCQ0FFSVFRaUJDTUVKQVFsQkNZRUp3UW9CQ2tFS2dRckJDd0VMUVF1QkM4RU1BUXhCRElFTXdRMEJEVUVOZ1EzQkRnRU9RUTZCRHNFUEFROUJENEVQd1JBQkVFRVFnUkRCRVFFUlFSR0JFY0VTQVJKQkVvRVN3Uk1CRTBFVGdSUEJGQUVVUVJTQkZNRVZBUlZCRllFVndSWUJGa0VXZ1JiQkZ3RVhRUmVCRjhFWUFSaEJHSUVZd1JrQkdVRVpnUm5CR2dFYVFScUJHc0ViQVJ0Qkc0RWJ3UndCSEVFY2dSekJIUUVkUVIyQkhjRWVBUjVCSG9FZXdSOEJIMEVmZ1IvQklBRWdRU0NCSU1FaEFTRkJJWUVod1NJQklrRWlnU0xCSXdFalFTT0JJOEVrQVNSQkpJRWt3U1VCSlVFbGdTWEJKZ0VtUVNhQkpzRW5BU2RCSjRFbndTZ0JLRUVvZ1NqQktRRXBRU21CS2NFcUFTcEJLb0Vxd1NzQkswRXJnU3ZCTEFFc1FTeUJMTUV0QVMxQkxZRXR3UzRCTGtFdWdTN0JMd0V2UVMrQkw4RXdBVEJCTUlFd3dURUJNVUV4Z1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOY0UyQVRaQk5vRTJ3VGNCTjBFM2dUZkJPQUU0UVRpQk9NRTVBVGxCT1lFNXdUb0JPa0U2Z1RyQk93RTdRVHVCTzhFOEFUeEJQSUU4d1QwQlBVRTlnVDNCUGdFK1FUNkJQc0UvQVQ5QlA0RS93UUFCUUVGQWdVREJRUUZCUVVHQlFjRkNBVUpCUW9GQ3dVTUJRMEZEZ1VQQlJBRkVRVVNCUk1GRkFVVkJSWUZGd1VZQlJrRkdnVWJCUndGSFFVZUJSOEZJQVVoQlNJRkl3VWtCU1VGSmdVbkJTZ0ZLUVVxQlNzRkxBVXRCUzRGTHdVd0JURUZNZ1V6QlRRRk5RVTJCVGNGT0FVNUJUb0ZPd1U4QlQwRlBnVS9CVUFGUVFWQ0JVTUZSQVZGQlVZRlJ3VklCVWtGU2dWTEJVd0ZUUVZPQlU4RlVBVlJCVklGVXdWVUJWVUZWZ1ZYQlZnRldRVmFCVnNGWEFWZEJWNEZYd1ZnQldFRllnVmpCV1FGWlFWbUJXY0ZhQVZwQldvRmF3VnNCVzBGYmdWdkJYQUZjUVZ5QlhNRmRBVjFCWFlGZHdWNEJYa0ZlZ1Y3Qlh3RmZRVitCWDhGZ0FXQkJZSUZnd1dFQllVRmhnV0hCWWdGaVFXS0JZc0ZqQVdOQlk0Rmp3V1FCWkVGa2dXVEJaUUZsUVdXQlpjRm1BV1pCWm9GbXdXY0JaMEZuZ1dmQmFBRm9RV2lCYU1GcEFXbEJhWUZwd1dvQmFrRnFnV3JCYXdGclFXdUJhOEZzQVd4QmJJRnN3VzBCYlVGdGdXM0JiZ0Z1UVc2QmJzRnZBVzlCYjRGdndYQUJjRUZ3Z1hEQmNRRnhRWEdCY2NGeUFYSkJjb0Z5d1hNQmMwRnpnWFBCZEFGMFFYU0JkTUYxQVhWQmRZRjF3WFlCZGtGMmdYYkJkd0YzUVhlQmQ4RjRBWGhCZUlGNHdYa0JlVUY1Z1huQmVnRjZRWHFCZXNGN0FYdEJlNEY3d1h3QmZFRjhnWHpCZlFGOVFYMkJmY0YrQVg1QmZvRit3WDhCZjBGL2dYL0JRQUdBUVlDQmdNR0JBWUZCZ1lHQndZSUJna0dDZ1lMQmd3R0RRWU9CZzhHRUFZUkJoSUdFd1lVQmhVR0ZnWVhCaGdHR1FZYUJoc0dIQVlkQmg0R0h3WWdCaUVHSWdZakJpUUdKUVltQmljR0tBWXBCaW9HS3dZc0JpMEdMZ1l2QmpBR01RWXlCak1HTkFZMUJqWUdOd1k0QmprR09nWTdCandHUFFZK0JqOEdRQVpCQmtJR1F3WkVCa1VHUmdaSEJrZ0dTUVpLQmtzR1RBWk5CazRHVHdaUUJsRUdVZ1pUQmxRR1ZRWldCbGNHV0FaWkJsb0dXd1pjQmwwR1hnWmZCbUFHWVFaaUJtTUdaQVpsQm1ZR1p3Wm9CbWtHYWdackJtd0diUVp1Qm04R2NBWnhCbklHY3daMEJuVUdkZ1ozQm5nR2VRWjZCbnNHZkFaOUJuNEdmd2FBQm9FR2dnYURCb1FHaFFhR0JvY0dpQWFKQm9vR2l3YU1CbzBHamdhUEJwQUdrUWFTQnBNR2xBYVZCcFlHbHdhWUJwa0dtZ2FiQnB3R25RYWVCcDhHb0FhaEJxSUdvd2FrQnFVR3BnYW5CcWdHcVFhcUJxc0dyQWF0QnE0R3J3YXdCckVHc2dhekJyUUd0UWEyQnJjR3VBYTVCcm9HdXdhOEJyMEd2Z2EvQnNBR3dRYkNCc01HeEFiRkJzWUd4d2JJQnNrR3lnYkxCc3dHelFiT0JzOEcwQWJSQnRJRzB3YlVCdFVHMWdiWEJ0Z0cyUWJhQnRzRzNBYmRCdDRHM3diZ0J1RUc0Z2JqQnVRRzVRYm1CdWNHNkFicEJ1b0c2d2JzQnUwRzdnYnZCdkFHOFFieUJ2TUc5QWIxQnZZRzl3YjRCdmtHK2diN0J2d0cvUWIrQnY4R0FBY0JCd0lIQXdjRUJ3VUhCZ2NIQndnSENRY0tCd3NIREFjTkJ3NEhEd2NRQnhFSEVnY1RCeFFIRlFjV0J4Y0hHQWNaQnhvSEd3Y2NCeDBISGdjZkJ5QUhJUWNpQnlNSEpBY2xCeVlISndjb0J5a0hLZ2NyQnl3SExRY3VCeThITUFjeEJ6SUhNd2MwQnpVSE5nYzNCemdIT1FjNkJ6c0hQQWM5Qno0SFB3ZEFCMEVIUWdkREIwUUhSUWRHQjBjSFNBZEpCMG9IU3dkTUIwMEhUZ2RQQjFBSFVRZFNCMU1IVkFkVkIxWUhWd2RZQjFrSFdnZGJCMXdIWFFkZUIxOEhZQWRoQjJJSFl3ZGtCMlVIWmdkbkIyZ0hhUWRxQjJzSGJBZHRCMjRIYndkd0IzRUhjZ2R6QjNRSGRRZDJCM2NIZUFkNUIzb0hld2Q4QjMwSGZnZC9CNEFIZ1FlQ0I0TUhoQWVGQjRZSGh3ZUlCNGtIaWdlTEI0d0hqUWVPQjQ4SGtBZVJCNUlIa3dlVUI1VUhsZ2VYQjVnSG1RZWFCNXNIbkFlZEI1NEhud2VnQjZFSG9nZWpCNlFIcFFlbUI2Y0hxQWVwQjZvSHF3ZXNCNjBIcmdldkI3QUhzUWV5QjdNSHRBZTFCN1lIdHdlNEI3a0h1Z2U3Qjd3SHZRZStCNzhId0FmQkI4SUh3d2ZFQjhVSHhnZkhCOGdIeVFmS0I4c0h6QWZOQjg0SHp3ZlFCOUVIMGdmVEI5UUgxUWZXQjljSDJBZlpCOW9IMndmY0I5MEgzZ2ZmQitBSDRRZmlCK01INUFmbEIrWUg1d2ZvQitrSDZnZnJCK3dIN1FmdUIrOEg4QWZ4Qi9JSDh3ZjBCL1VIOWdmM0IvZ0grUWY2Qi9zSC9BZjlCLzRIL3djQUNBRUlBZ2dEQ0FRSUJRZ0dDQWNJQ0FnSkNBb0lDd2dNQ0EwSURnZ1BDQkFJRVFnU0NCTUlGQWdWQ0JZSUZ3Z1lDQmtJR2dnYkNCd0lIUWdlQ0I4SUlBZ2hDQ0lJSXdna0NDVUlKZ2duQ0NnSUtRZ3FDQ3NJTEFndENDNElMd2d3Q0RFSU1nZ3pDRFFJTlFnMkNEY0lPQWc1Q0RvSU93ZzhDRDBJUGdnL0NFQUlRUWhDQ0VNSVJBaEZDRVlJUndoSUNFa0lTZ2hMQ0V3SVRRaE9DRThJVUFoUkNGSUlVd2hVQ0ZVSVZnaFhDRmdJV1FoYUNGc0lYQWhkQ0Y0SVh3aGdDR0VJWWdoakNHUUlaUWhtQ0djSWFBaHBDR29JYXdoc0NHMEliZ2h2Q0hBSWNRaHlDSE1JZEFoMUNIWUlkd2g0Q0hrSWVnaDdDSHdJZlFoK0NIOElnQWlCQ0lJSWd3aUVDSVVJaGdpSENJZ0lpUWlLQ0lzSWpBaU5DSTRJandpUUNKRUlrZ2lUQ0pRSWxRaVdDSmNJbUFpWkNKb0ltd2ljQ0owSW5naWZDS0FJb1FpaUNLTUlwQWlsQ0tZSXB3aW9DS2tJcWdpckNLd0lyUWl1Q0s4SXNBaXhDTElJc3dpMENMVUl0Z2kzQ0xnSXVRaTZDTHNJdkFpOUNMNEl2d2pBQ01FSXdnakRDTVFJeFFqR0NNY0l5QWpKQ01vSXl3ak1DTTBJemdqUENOQUkwUWpTQ05NSTFBalZDTllJMXdqWUNOa0kyZ2piQ053STNRamVDTjhJNEFqaENPSUk0d2prQ09VSTVnam5DT2dJNlFqcUNPc0k3QWp0Q080STd3andDUEVJOGdqekNQUUk5UWoyQ1BjSStBajVDUG9JK3dqOENQMEkvZ2ovQ0FBSkFRa0NDUU1KQkFrRkNRWUpCd2tJQ1FrSkNna0xDUXdKRFFrT0NROEpFQWtSQ1JJSkV3a1VDUlVKRmdrWENSZ0pHUWthQ1JzSkhBa2RDUjRKSHdrZ0NTRUpJZ2tqQ1NRSkpRa21DU2NKS0FrcENTb0pLd2tzQ1MwSkxna3ZDVEFKTVFreUNUTUpOQWsxQ1RZSk53azRDVGtKT2drN0NUd0pQUWsrQ1Q4SlFBbEJDVUlKUXdsRUNVVUpSZ2xIQ1VnSlNRbEtDVXNKVEFsTkNVNEpUd2xRQ1ZFSlVnbFRDVlFKVlFsV0NWY0pXQWxaQ1ZvSld3bGNDVjBKWGdsZkNXQUpZUWxpQ1dNSlpBbGxDV1lKWndsb0NXa0phZ2xyQ1d3SmJRbHVDVzhKY0FseENYSUpjd2wwQ1hVSmRnbDNDWGdKZVFsNkNYc0pmQWw5Q1g0SmZ3bUFDWUVKZ2dtRENZUUpoUW1HQ1ljSmlBbUpDWW9KaXdtTUNZMEpqZ21QQ1pBSmtRbVNDWk1KbEFtVkNaWUpsd21ZQ1prSm1nbWJDWndKblFtZUNaOEpvQW1oQ2FJSm93bWtDYVVKcGdtbkNhZ0pxUW1xQ2FzSnJBbXRDYTRKcndtd0NiRUpzZ216Q2JRSnRRbTJDYmNKdUFtNUNib0p1d204Q2IwSnZnbS9DY0FKd1FuQ0NjTUp4QW5GQ2NZSnh3bklDY2tKeWduTENjd0p6UW5PQ2M4SjBBblJDZElKMHduVUNkVUoxZ25YQ2RnSjJRbmFDZHNKM0FuZENkNEozd25nQ2VFSjRnbmpDZVFKNVFubUNlY0o2QW5wQ2VvSjZ3bnNDZTBKN2dudkNmQUo4UW55Q2ZNSjlBbjFDZllKOXduNENma0orZ243Q2Z3Si9RbitDZjhKQUFvQkNnSUtBd29FQ2dVS0Jnb0hDZ2dLQ1FvS0Nnc0tEQW9OQ2c0S0R3b1FDaEVLRWdvVENoUUtGUW9XQ2hjS0dBb1pDaG9LR3dvY0NoMEtIZ29mQ2lBS0lRb2lDaU1LSkFvbENpWUtKd29vQ2lrS0tnb3JDaXdLTFFvdUNpOEtNQW94Q2pJS013bzBDalVLTmdvM0NqZ0tPUW82Q2pzS1BBbzlDajRLUHdwQUNrRUtRZ3BEQ2tRS1JRcEdDa2NLU0FwSkNrb0tTd3BNQ2swS1RncFBDbEFLVVFwU0NsTUtWQXBWQ2xZS1Z3cFlDbGtLV2dwYkNsd0tYUXBlQ2w4S1lBcGhDbUlLWXdwa0NtVUtaZ3BuQ21nS2FRcHFDbXNLYkFwdENtNEtid3B3Q25FS2NncHpDblFLZFFwMkNuY0tlQXA1Q25vS2V3cDhDbjBLZmdwL0NvQUtnUXFDQ29NS2hBcUZDb1lLaHdxSUNva0tpZ3FMQ293S2pRcU9DbzhLa0FxUkNwSUtrd3FVQ3BVS2xncVhDcGdLbVFxYUNwc0tuQXFkQ3A0S253cWdDcUVLb2dxakNxUUtwUXFtQ3FjS3FBcXBDcW9LcXdxc0NxMEtyZ3F2Q3JBS3NRcXlDck1LdEFxMUNyWUt0d3E0Q3JrS3VncTdDcndLdlFxK0NyOEt3QXJCQ3NJS3d3ckVDc1VLeGdySENzZ0t5UXJLQ3NzS3pBck5DczRLendyUUN0RUswZ3JUQ3RRSzFRcldDdGNLMkFyWkN0b0syd3JjQ3QwSzNncmZDdUFLNFFyaUN1TUs1QXJsQ2pCQjh3UUFBSEpoZGpRdFpHbHpZM01BY0FMbUN1Y0s2QXJwQ3VvSzZ3cnNDdTBLN2dydkN2QUs4UXJ5Q3ZNSzlBcjFDdllLOXdyNEN2a0srZ3I3Q3Z3Sy9RcitDdjhLQUFzQkN3SUxBd3NFQ3dVTEJnc0hDd2dMQ1FzS0N3c0xEQXNOQ3c0TER3c1FDeEVMRWdzVEN4UUxGUXNXQ3hjTEdBc1pDeG9MR3dzY0N4MExIZ3NmQ3lBTElRc2lDeU1MSkFzbEN5WUxKd3NvQ3lrTEtnc3JDeXdMTFFzdUN5OExNQXN4Q3pJTE13czBDelVMTmdzM0N6Z0xPUXM2Q3pzTFBBczlDejRMUHd0QUMwRUxRZ3REQzBRTFJRdEdDMGNMU0F0SkMwb0xTd3RNQzAwTFRndFBDMUFMVVF0U0MxTUxWQXRWQzFZTFZ3dFlDMWtMV2d0YkMxd0xYUXRlQzE4TFlBdGhDMklMWXd0a0MyVUxaZ3RuQzJnTGFRdHFDMnNMYkF0dEMyNExid3R3QzNFTGNndHpDM1FMZFF0MkMzY0xlQXQ1QzNvTGV3dDhDMzBMZmd0L0M0QUxnUXVDQzRNTGhBdUZDNFlMaHd1SUM0a0xpZ3VMQzR3TGpRdU9DNDhMa0F1UkM1SUxrd3VVQzVVTGxndVhDNWdMbVF1YUM1c0xuQXVkQzU0TG53dWdDNkVMb2d1akM2UUxwUXVtQzZjTHFBdXBDNm9McXd1c0M2MExyZ3V2QzdBTHNRdXlDN01MdEF1MUM3WUx0d3U0QzdrTHVndTdDN3dMdlF1K0M3OEx3QXZCQzhJTHd3dkVDOFVMeGd2SEM4Z0x5UXZLQzhzTHpBdk5DODRMend2UUM5RUwwZ3ZUQzlRTDFRdldDOWNMMkF2WkM5b0wyd3ZjQzkwTDNndmZDK0FMNFF2aUMrTUw1QXZsQytZTDV3dm9DK2tMNmd2ckMrd0w3UXZ1Qys4TDhBdnhDL0lMOHd2MEMvVUw5Z3YzQy9nTCtRdjZDL3NML0F2OUMvNEwvd3NBREFFTUFnd0REQVFNQlF3R0RBY01DQXdKREFvTUN3d01EQTBNRGd3UERCQU1FUXdTREJNTUZBd1ZEQllNRnd3WURCa01HZ3diREJ3TUhRd2VEQjhNSUF3aERDSU1Jd3drRENVTUpnd25EQ2dNS1F3cURDc01MQXd0REM0TUx3d3dEREVNTWd3ekREUU1OUXcyRERjTU9BdzVERG9NT3d3OEREME1QZ3cvREVBTVFReENERU1NUkF4RkRFWU1Sd3hJREVrTVNneExERXdNVFF4T0RFOE1VQXhSREZJTVV3eFVERlVNVmd4WERGZ01XUXhhREZzTVhBeGRERjRNWHd4Z0RHRU1ZZ3hqREdRTVpReG1ER2NNYUF4cERHb01hd3hzREcwTWJneHZESEFNY1F4eURITU1kQXgxREhZTWR3eDRESGtNZWd4N0RId01mUXgrREg4TWdBeUJESUlNZ3d5RURJVU1oZ3lIRElnTWlReUtESXNNakF5TkRJNE1qd3lRREpFTWtneVRESlFNbFF5V0RKY01tQXlaREpvTW13eWNESjBNbmd5ZkRLQU1vUXlpREtNTXBBeWxES1lNcHd5b0RLa01xZ3lyREt3TXJReXVESzhNc0F5eERMSU1zd3kwRExVTXRneTNETGdNdVF5NkRMc012QXk5REw0TXZ3ekFETUVNd2d6RERNUU14UXpHRE1jTXlBekpETW9NeXd6TURNME16Z3pQRE5BTTBRelNETk1NMUF6VkROWU0xd3pZRE5rTTJnemJETndNM1F6ZUROOE00QXpoRE9JTTR3emtET1VNNWd6bkRPZ002UXpxRE9zTTdBenRETzRNN3d6d0RQRU04Z3p6RFBRTTlRejJEUGNNK0F6NURQb00rd3o4RFAwTS9nei9EQUFOQVEwQ0RRTU5CQTBGRFFZTkJ3MElEUWtOQ2cwTERRd05EUTBPRFE4TkVBMFJEUklORXcwVURSVU5GZzBYRFJnTkdRMGFEUnNOSEEwZERSNE5IdzBnRFNFTklnMGpEU1FOSlEwbURTY05LQTBwRFNvTkt3MHNEUzBOTGcwdkRUQU5NUTB5RFRNTk5BMDFEVFlOTncwNERUa05PZzA3RFR3TlBRMCtEVDhOUUExQkRVSU5RdzFFRFVVTlJnMUhEVWdOU1ExS0RVc05UQTFORFU0TlR3MVFEVkVOVWcxVERWUU5WUTB3UWRVREFBQnlZWFkwTFhOb2FXVnNaSE1BNEFGV0RWY05XQTFaRFZvTld3MWNEVjBOWGcxZkRXQU5ZUTFpRFdNTlpBMWxEV1lOWncxb0RXa05hZzFyRFd3TmJRMXVEVzhOY0ExeERYSU5jdzEwRFhVTmRnMTNEWGdOZVExNkRYc05mQTE5RFg0TmZ3MkFEWUVOZ2cyRERZUU5oUTJHRFljTmlBMkpEWW9OaXcyTURZME5qZzJQRFpBTmtRMlNEWk1ObEEyVkRaWU5sdzJZRFprTm1nMmJEWndOblEyZURaOE5vQTJoRGFJTm93MmtEYVVOcGcybkRhZ05xUTJxRGFzTnJBMnREYTROcncyd0RiRU5zZzJ6RGJRTnRRMjJEYmNOdUEyNURib051dzI4RGIwTnZnMi9EY0FOd1EzQ0RjTU54QTNGRGNZTnh3M0lEY2tOeWczTERjd056UTNPRGM4TjBBM1JEZElOMHczVURkVU4xZzNYRGRnTjJRM2FEZHNOM0EzZERkNE4zdzNnRGVFTjRnM2pEZVFONVEzbURlY042QTNwRGVvTjZ3M3NEZTBON2czdkRmQU44UTN5RGZNTjlBMzFEZllOOXczNERma04rZzM3RGZ3Ti9RMytEZjhOQUE0QkRnSU9BdzRFRGdVT0JnNEhEZ2dPQ1E0S0Rnc09EQTRORGc0T0R3NFFEaEVPRWc0VERoUU9GUTRXRGhjT0dBNFpEaG9PR3c0Y0RoME9IZzRmRGlBT0lRNGlEaU1PSkE0bERpWU9KdzRvRGlrT0tnNHJEaXdPTFE0dURpOE9NQTR4RGpJT013NDBEalVPTmc0M0RqZ09PUTQ2RGpzT1BBNDlEajRPUHc1QURrRU9RZzVERGtRT1JRNUdEa2NPU0E1SkRrb09TdzVNRGswT1RnNVBEbEFPVVE1U0RsTU9WQTVWRGxZT1Z3NVlEbGtPV2c1YkRsd09YUTVlRGw4T1lBNWhEbUlPWXc1a0RtVU9aZzVuRG1nT2FRNXFEbXNPYkE1dERtNE9idzV3RG5FT2NnNXpEblFPZFE1MkRuY09lQTU1RG5vT2V3NThEbjBPZmc1L0RvQU9nUTZDRG9NT2hBNkZEb1lPaHc2SURva09pZzZMRG93T2pRNk9EbzhPa0E2UkRwSU9rdzZVRHBVT2xnNlhEcGdPbVE2YURwc09uQTZkRHA0T253NmdEcUVPb2c2akRxUU9wUTZtRHFjT3FBNnBEcW9PcXc2c0RxME9yZzZ2RHJBT3NRNnlEck1PdEE2MURyWU90dzY0RHJrT3VnNjdEcndPdlE2K0RyOE93QTdCRHNJT3d3N0VEc1VPeGc3SERzZ095UTdLRHNzT3pBN05EczRPenc3UUR0RU8wZzdURHRRTzFRN1dEdGNPMkE3WkR0b08ydzdjRHQwTzNnN2ZEdUFPNFE3aUR1TU81QTdsRHVZTzV3N29EdWtPNmc3ckR1d083UTd1RHU4TzhBN3hEdklPOHc3MER2VU85ZzczRHZnTytRNzZEdnNPL0E3OUR2NE8vdzRBRHdFUEFnOEREd1FQQlE4R0R3Y1BDQThKRHdvUEN3OE1EdzBQRGc4UER4QVBFUThTRHhNUEZBOFZEeFlQRnc4WUR4a1BHZzhiRHh3UEhROGVEeDhQSUE4aER5SVBJdzhrRHlVUEpnOG5EeWdQS1E4cUR5c1BMQTh0RHk0UEx3OHdEekVQTWc4ekR6UVBOUTh3UVpJREFBQnlZWFkwTFhScGNtVUF3QUUyRHpjUE9BODVEem9QT3c4OER6MFBQZzgvRDBBUFFROUNEME1QUkE5RkQwWVBSdzlJRDBrUFNnOUxEMHdQVFE5T0QwOFBVQTlSRDFJUFV3OVVEMVVQVmc5WEQxZ1BXUTlhRDFzUFhBOWREMTRQWHc5Z0QyRVBZZzlqRDJRUFpROW1EMmNQYUE5cEQyb1BhdzlzRDIwUGJnOXZEM0FQY1E5eUQzTVBkQTkxRDNZUGR3OTREM2tQZWc5N0Qzd1BmUTkrRDM4UGdBK0JENElQZ3crRUQ0VVBoZytIRDRnUGlRK0tENHNQakErTkQ0NFBqdytRRDVFUGtnK1RENVFQbFErV0Q1Y1BtQStaRDVvUG13K2NENTBQbmcrZkQ2QVBvUStpRDZNUHBBK2xENllQcHcrb0Q2a1BxZytyRDZ3UHJRK3VENjhQc0EreEQ3SVBzdyswRDdVUHRnKzNEN2dQdVErNkQ3c1B2QSs5RDc0UHZ3L0FEOEVQd2cvREQ4UVB4US9HRDhjUHlBL0pEOG9QeXcvTUQ4MFB6Zy9QRDlBUDBRL1NEOU1QMUEvVkQ5WVAxdy9ZRDlrUDJnL2JEOXdQM1EvZUQ5OFA0QS9oRCtJUDR3L2tEK1VQNWcvbkQrZ1A2US9xRCtzUDdBL3REKzRQN3cvd0QvRVA4Zy96RC9RUDlRLzJEL2NQK0EvNUQvb1Ardy84RC8wUC9nLy9Ed0FRQVJBQ0VBTVFCQkFGRUFZUUJ4QUlFQWtRQ2hBTEVBd1FEUkFPRUE4UUVCQVJFQklRRXhBVUVCVVFGaEFYRUJnUUdSQWFFQnNRSEJBZEVCNFFIeEFnRUNFUUloQWpFQ1FRSlJBbUVDY1FLQkFwRUNvUUt4QXNFQzBRTGhBdkVEQVFNUkF5RURNUU5CQTFFRFlRTnhBNEVEa1FPaEE3RUR3UVBSQStFRDhRUUJCQkVFSVFReEJFRUVVUVJoQkhFRWdRU1JCS0VFc1FUQkJORUU0UVR4QlFFRkVRVWhCVEVGUVFWUkJXRUZjUVdCQlpFRm9RV3hCY0VGMFFYaEJmRUdBUVlSQmlFR01RWkJCbEVHWVFaeEJvRUdrUWFoQnJFR3dRYlJCdUVHOFFjQkJ4RUhJUWN4QjBFSFVRZGhCM0VIZ1FlUkI2RUhzUWZCQjlFSDRRZnhDQUVJRVFnaENERUlRUWhSQ0dFSWNRaUJDSkVJb1FpeENNRUkwUWpoQ1BFSkFRa1JDU0VKTVFsQkNWRUpZUWx4Q1lFSmtRbWhDYkVKd1FuUkNlRUo4UW9CQ2hFS0lRb3hDa0VLVVFwaENuRUtnUXFSQ3FFS3NRckJDdEVLNFFyeEN3RUxFUXNoQ3pFTFFRdFJDMkVMY1F1QkM1RUxvUXV4QzhFTDBRdmhDL0VNQVF3UkRDRU1NUXhCREZFTVlReHhESUVNa1F5aERMRU13UXpSRE9FTThRMEJEUkVOSVEweERVRU5VUTFoRFhFTmdRMlJEYUVOc1EzQkRkRU40UTN4RGdFT0VRNGhEakVPUVE1UkRtRU9jUTZCRHBFT29RNnhEc0VPMFE3aER2RVBBUThSRHlFUE1ROUJEMUVGQkIza01BQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFBUU9hZkFRQlViM2x2ZEdGZlVqRXdBQUJCMVo4QkFCQkJyR29BQU9NSXZIRUp3bVpOVFVKcHljUEI1REQ5d1gyRFVVTEE5OGZCNUREOXdXWk5UVUpweWNQQnZIRUp3bjJEVVVMQTk4ZkJ2SEVKd3VWaVNVSkJsYjdCNUREOXdlVmlTVUpCbGI3QnZIRUp3c1BUUlVKYWNMakI1REQ5d2NQVFJVSmFjTGpCdkhFSndtZXVRa0p6YzdIQjVERDl3V2V1UWtKemM3SEJ2SEVKd25yL1AwTEF1cW5CNUREOXdYci9QMExBdXFuQnZIRUp3dHJSUFVKOFphSEI1REQ5d2RyUlBVSjhaYUhCdkhFSndrNHVQRUk5bFpqQjVERDl3VTR1UEVJOWxaakJ2SEVKd25nYk8wS2ViWS9CNUREOXdYZ2JPMEtlYlkvQnZIRUp3cWlkT2tLWkU0YkI1REQ5d2FpZE9rS1pFNGJCdkhFSnd0eTJPa0xPV1huQjVERDl3ZHkyT2tMT1dYbkJ2SEVKd3E5bU8wTDl2bWJCNUREOXdhOW1PMEw5dm1iQnZIRUp3bDJxUEVMb29WVEI1REQ5d1YycVBFTG9vVlRCdkhFSndzZDhQa0t6UzBQQjVERDl3Y2Q4UGtLelMwUEJ2SEVKd3BUV1FFSkZBalBCNUREOXdaVFdRRUpGQWpQQjVERDl3VWF1UTBKMUJ5VEJ2SEVKd2thdVEwSjFCeVRCNUREOXdXajRSa0tmbHhiQnZIRUp3bWo0UmtLZmx4YkI1REQ5d2FpblNrSXo2UXJCdkhFSndxaW5Ta0l6NlFyQjVERDl3VEN0VGtJc0t3SEJ2SEVKd2pDdFRrSXNLd0hCNUREOXdidjRVa0wwQ2ZQQXZIRUp3cnY0VWtMMENmUEE1REQ5d2ZwNFYwTHFLdWpBdkhFSnd2cDRWMExxS3VqQTVERDl3YmtiWEVJczVlSEF2SEVKd3JrYlhFSXM1ZUhBNUREOXdVZk9ZRUxxVWVEQXZIRUp3a2ZPWUVMcVVlREE1REQ5d2FwOVpVS2tkK1BBdkhFSndxcDlaVUtrZCtQQTVERDl3ZmtXYWtLT1NldkF2SEVKd3ZrV2FrS09TZXZBNUREOXdhS0hia0l5cVBmQXZIRUp3cUtIYmtJeXFQZkE1REQ5d2JpOWNrSytNQVRCdkhFSndyaTlja0srTUFUQjVERDl3VG1vZGtJSG1RN0J2SEVKd2ptb2RrSUhtUTdCNUREOXdWazNla0xnNGhyQnZIRUp3bGszZWtMZzRockI1REQ5d2JoY2ZVS3IzQ2pCdkhFSndyaGNmVUtyM0NqQjVERDl3ZEVGZ0VJS1RqakJ2SEVKd3RFRmdFSUtUampCNUREOXdhSWNnVUtmK0VqQnZIRUp3cUljZ1VLZitFakI1REQ5d1dmdWdVSWJtVnJCdkhFSndtZnVnVUlibVZyQjVERDl3ZFIzZ2tKZDZHekJ2SEVKd3RSM2drSmQ2R3pCNUREOXdieTJna0pibkgvQnZIRUp3cnkyZ2tKYm5IL0I1REQ5d1NHcWdrTGdOSW5CdkhFSndpR3Fna0xnTkluQjVERDl3VGhTZ2tKSGdwTEJ2SEVKd2poU2drSkhncExCNUREOXdXQ3dnVUxRa0p2QnZIRUp3bUN3Z1VMUWtKdkI1REQ5d1N2SGdFTHhPNlRCdkhFSndpdkhnRUx4TzZUQjVERDl3WWswZjBLa1lLekJ2SEVKd29rMGYwS2tZS3pCdkhFSnd0WmNmRUlSM3JQQjVERDl3ZFpjZkVJUjNyUEJ2SEVKd3JZU2VVTDBsYnJCNUREOXdiWVNlVUwwbGJyQnZIRUp3blZqZFVJMGJjREI1REQ5d1hWamRVSTBiY0RCdkhFSnd1NWRjVUl4VE1YQjVERDl3ZTVkY1VJeFRNWEJ2SEVKd21JU2JVSk1IOG5CNUREOXdXSVNiVUpNSDhuQnZIRUp3aVdTYUVJVTE4dkI1REQ5d1NXU2FFSVUxOHZCdkhFSndtVHZZMEtEYU0zQjVERDl3V1R2WTBLRGFNM0J2SEVKd3RjOFgwSk96YzNCNUREOXdkYzhYMEpPemMzQnZIRUp3blNOV2tMa0E4M0I1REQ5d1hTTldrTGtBODNCdkhFSndpWDBWVUpuRDh2QjVERDl3U1gwVlVKbkQ4dkJYMGNLd21aTlRVSnB5Y1BCWDBjS3duMkRVVUxBOThmQlgwY0t3dVZpU1VKQmxiN0JYMGNLd3NQVFJVSmFjTGpCWDBjS3dtZXVRa0p6YzdIQlgwY0t3bnIvUDBMQXVxbkJYMGNLd3RyUlBVSjhaYUhCWDBjS3drNHVQRUk5bFpqQlgwY0t3bmdiTzBLZWJZL0JYMGNLd3FpZE9rS1pFNGJCWDBjS3d0eTJPa0xPV1huQlgwY0t3cTltTzBMOXZtYkJYMGNLd2wycVBFTG9vVlRCWDBjS3dzZDhQa0t6UzBQQlgwY0t3cFRXUUVKRkFqUEJYMGNLd2thdVEwSjFCeVRCWDBjS3dtajRSa0tmbHhiQlgwY0t3cWluU2tJejZRckJYMGNLd2pDdFRrSXNLd0hCWDBjS3dydjRVa0wwQ2ZQQVgwY0t3dnA0VjBMcUt1akFYMGNLd3JrYlhFSXM1ZUhBWDBjS3drZk9ZRUxxVWVEQVgwY0t3cXA5WlVLa2QrUEFYMGNLd3ZrV2FrS09TZXZBWDBjS3dxS0hia0l5cVBmQVgwY0t3cmk5Y2tLK01BVEJYMGNLd2ptb2RrSUhtUTdCWDBjS3dsazNla0xnNGhyQlgwY0t3cmhjZlVLcjNDakJYMGNLd3RFRmdFSUtUampCWDBjS3dxSWNnVUtmK0VqQlgwY0t3bWZ1Z1VJYm1WckJYMGNLd3RSM2drSmQ2R3pCWDBjS3dyeTJna0pibkgvQlgwY0t3aUdxZ2tMZ05JbkJYMGNLd2poU2drSkhncExCWDBjS3dtQ3dnVUxRa0p2QlgwY0t3aXZIZ0VMeE82VEJYMGNLd29rMGYwS2tZS3pCWDBjS3d0WmNmRUlSM3JQQlgwY0t3cllTZVVMMGxickJYMGNLd25WamRVSTBiY0RCWDBjS3d1NWRjVUl4VE1YQlgwY0t3bUlTYlVKTUg4bkJYMGNLd2lXU2FFSVUxOHZCWDBjS3dtVHZZMEtEYU0zQlgwY0t3dGM4WDBKT3pjM0JYMGNLd25TTldrTGtBODNCWDBjS3dpWDBWVUpuRDh2QlgwY0t3bS9QVVVKaWpzYkJYMGNLd21TdlRVTDBkY0xCWDBjS3dtVFpTVUlMWGIzQlgwY0t3dVZjUmtKTldMZkJYMGNLd3Y5SFEwTDVmN0RCWDBjS3doNm5RRUsxNzZqQlgwY0t3dVNFUGtJS3hxREJYMGNLd3UzcFBFTHlJNWpCWDBjS3dyTGNPMEpBTEkvQlgwY0t3bmhoTzBJdEE0YkJYMGNLd2lwNk8wSnZtM25CWDBjS3dtVW1QRUw4WVdmQlgwY0t3bkpqUFVMRW8xWEJYMGNLd2xNc1AwSkVxRVRCWDBjS3d0QjVRVUlVdERUQlgwY0t3cVJDUkVLdEJ5YkJYMGNLd29sN1IwSSszaGpCWDBjS3dvUVhTMExyYkEzQlgwY0t3dnNIVDBMdDRRUEJYMGNLd2hBOVUwSi94L2pBWDBjS3dydWxWMEpnSWU3QVgwY0t3amN3WEVKMS9PZkFYMGNLd2l2S1lFSjdjZWJBWDBjS3dnbGhaVUt2aHVuQVgwY0t3a1BpYVVLZkwvSEFYMGNLd3E4N2JrS0RUZjNBWDBjS3dybGJja0twMXdiQlgwY0t3cnN4ZGtKMUNSSEJYMGNLd2ptdWVVTDdFaDNCWDBjS3dpTERmRUtrd3lyQlgwY0t3Z0JrZjBJcDVEbkJYMGNLd2gzRGdFS0ROMHJCWDBjS3dwaVFnVUsxZTF2QlgwY0t3alVYZ2tJV2EyM0JYMGNLd3ROVWdrSTB2WC9CWDBjS3dudElna0lXRkluQlgwY0t3bDN5Z1VMR01KTEJYMGNLd3RkVGdVTG5ENXZCWDBjS3dtWnZnRUttamFQQlgwY0t3a3VSZmtLN2g2dkJYMGNLd25ySWUwTHozYkxCWDBjS3dwU1BlRUtyY3JuQlgwY0t3cHZ6ZEVKVks3L0JYMGNLd2lJRGNVTFY4TVBCWDBjS3doRE9iRUxtcjhmQlgwY0t3bVJsYUVKeldjckJYMGNLd3VmYVkwS3Y0c3ZCWDBjS3d2SkFYMEp2UmN6QlgwY0t3aFdxV2tJWmdNdkJYMGNLd3Rzb1ZrTGZsY25CekgwSndxTk5YMExhaWNmQnpIMEp3cEtiWTBKNkxjZkJ6SDBKd3BnQ1cwSkEwY2JCekgwSndzN0xWa0tyQnNYQnpIMEp3bHJlVGtKMlhMN0J6SDBKd3J4SFMwTEhsN25CekgwSnd0Y0VTRUo0OXJQQnpIMEp3dGtpUlVJOGo2M0J6SDBKd202dVFFSWoyWjdCekgwSnd2MHRQMEt0eFpiQnpIMEp3aUl5UGtJcFlvN0J6SDBKd3R5K1BVSnYwSVhCekgwSndxcWZQMExXd0ZqQnpIMEp3aFIzUGtMbVdXbkJ6SDBKd2c1TFFVTHAzVWpCekgwSndvQnlRMEpVOFRuQnpIMEp3bEp4VEVJZ014WEJ6SDBKd3ZvUVNVSm01eC9CekgwSndyTWdVRUxPUlF6QnpIMEp3a1FRVkVKdVF3WEJ6SDBKd251OVlFTE9YL25BekgwSndvMXZYRUpLMGZyQXpIMEp3b2NJWlVJU1F2ekF6SDBKd2xFL2FVSTZ0Z0hCekgwSndzUXNjVUtqQ2cvQnpIMEp3bVREZEVML2t4akJ6SDBKd2tnR2VFS2sxaVBCekgwSndrZm9la0ljcFREQnpIMEp3ckJjZjBKUUVVN0J6SDBKd3BCdWdFSTZPRjdCekgwSnduM3NnRUpMLzI3QnpIMEp3aUltZ1VKWkVZREJ6SDBKd3JzMWdFSmVnWm5CekgwSndnYktnRUxUTkpIQnpIMEp3aEhBZmtMUmNxSEJ6SDBKd3B5WWZFSWI2YWpCekgwSndzMlpjMEk1U0x2QnpIMEp3aUw2ZGtJWTdyWEJ6SDBKd21ycWIwTGp2ci9CekgwSnd0djZhMElQUU1QQnh2b0R3bzllWDBKcU9zSEJ4dm9Ed2g1SFkwS0k1c0RCeHZvRHdwMTRXMExLa3NEQnh2b0R3ZytsVjBKbDhyN0J4dm9Ed2t4eVVFSW01YmpCeHZvRHdqRXdUVUxBa0xUQnh2b0R3aGc2U2tJR2RLL0J4dm9Ed3YrYlIwS1dvNm5CeHZvRHdueVFRMEx3UjV6Qnh2b0R3bWd6UWtLbjhwVEJ4dm9Ed3JoT1FVS3hWSTNCeHZvRHdnem1RRUxJaklYQnh2b0R3cCthUWtLWTUxekJ4dm9Ed2xHTlFVTEgrV3ZCeHZvRHdyUWVSRUxHZWs3Qnh2b0R3bW9UUmtLcDdVREJ4dm9Ed21ZK1RrSytrQi9CeHZvRHdvOHRTMEx4U0NuQnh2b0R3ditXVVVLbmRSZkJ4dm9Ed3VBcFZVSlhHQkhCeHZvRHdwQ3NZRUxIVGduQnh2b0R3djdEWEVLSDlnbkJ4dm9Ed29PU1pFTDFuUXJCeHZvRHdnOW1hRUxGM2czQnh2b0R3dENZYjBKRStSbkJ4dm9Ed3U3YWNrSU1vaUxCeHZvRHdnZlJkVUtIMnl6Qnh2b0R3aUp2ZUVKbmZEakJ4dm9Ed3FONmZFSzRNMVBCeHZvRHdyWFhmVUpDM21IQnh2b0R3bVM4ZmtJOEduSEJ4dm9Ed2hNbGYwSUJWWURCeHZvRHduOXdmVUwrYlpmQnh2b0R3c3g5ZmtMazVJL0J4dm9Ed20zc2UwSmZwSjdCeHZvRHdyTDNlVUx3YXFYQnh2b0R3cm5NY1VKcUdiYkJ4dm9Ed292ZGRFSlVQYkhCeHZvRHdoOTBia0wzSnJyQnh2b0R3ai9oYWtLY1ZiM0I2S0wyd2VRY1kwSVJ3NzNCeHZvRHdvb2laMEtFbUwvQjZLTDJ3VTNHWmtMNGhiekI2S0wyd1FablgwS3hFcjdCNktMMndaK3pXMEtRYzczQjZLTDJ3YkFSV0VKQzZMdkJ4dm9Ed2xEelUwS3hYN3pCNktMMndkbVBWRUxyZHJuQjZLTDJ3VVk4VVVKOUtiYkI2S0wyd1d3a1RrSTlEYkxCNktMMndibFVTMExPTXEzQjZLTDJ3WkxZU0VMRHJhZkJ4dm9Ed25KZ1JVTHFOcVBCNktMMndmbTVSa0ptbEtIQjZLTDJ3WUlCUlVKVy81ckI2S0wyd1J5MlEwSWxDWlRCNktMMndRUGRRa0wzell6QjZLTDJ3YU41UWtMemFvWEJ4dm9Ed2diN1FFS3BkSHZCNktMMndZNk5Ra0xlKzN2QjZLTDJ3WEFZUTBLM1NXM0I2S0wyd1JvWVJFTDQrbDdCNktMMndZV0lSVUkwU1ZIQjZLTDJ3ZDlqUjBMVWEwVEI2S0wyd2E2aVNVTENsampCeHZvRHd1UndTRUwyZGpUQjZLTDJ3ZHM3VEVLMitTM0I2S0wyd2U4a1QwS052eVRCNktMMndTVlNVa0tVRFIzQjZLTDJ3YTYyVlVMTEFoZkI2S0wyd2RCRVdVS250eExCeHZvRHdwUG9XRUtNa2d6QjZLTDJ3VG51WEVKNFBSREI2S0wyd1J1a1lFSTNuZy9CNktMMndZRlhaRUpxM0JEQjZLTDJ3Vy81WjBJTDh4UEJ4dm9Ed3M0WGJFSW1CQlBCNktMMndVUjdhMEt2MVJqQjZLTDJ3ZGZPYmtLV2NCL0I2S0wyd2JUbWNVSVNxU2ZCNktMMndXYTJkRUw1WFRIQjZLTDJ3WTh5ZDBJTWFEekJ4dm9Ed3FxcWVrSy9WVVhCNktMMndTVlJlVUxEbWtqQjZLTDJ3WjBKZTBMdHhGWEI2S0wyd1FCVmZFSkZzV1BCNktMMndSa3VmVUt5SjNMQjZLTDJ3WHVSZlVMV2RvREI2S0wyd1pCOWZVTGM0NGZCeHZvRHdoZ1FmMEozSjRqQjZLTDJ3YTN5ZkVMclBJL0I2S0wyd1FUemUwSk9aSmJCNktMMndaeUNla0ltUFozQjZLTDJ3VHluZUVMYXE2UEI2S0wyd1c5b2RrSnJscW5CeHZvRHdqaWFkMEpScHF2QjZLTDJ3VURQYzBMeDVLN0I2S0wyd1MvbWNFSURnclBCNktMMndmcTRiVUlBVzdmQjZLTDJ3WEpVYWtKaFlMckIraW5pd1d6MFprSS9ENzdCK2luaXdRRXlZMExMVkwvQitpbml3Y3RpWDBLUHByL0IraW5pd1I2V1cwSXVBNy9CK2luaXdWL2JWMEpUYmIzQitpbml3WlJCVkVKUDY3ckIraW5pd1VyWFVFSlNoN2ZCK2luaXdVNnFUVUwvVHJQQitpbml3V2ZIU2tKcVU2N0IraW5pd1VrNlNFS3RxS2pCK2luaXdUY05Sa0tuWmFMQitpbml3ZjlJUkVLam81dkIraW5pd2NMMFFrTG1mWlRCK2luaXdkNFZRa0pVRVkzQitpbml3ZGV2UVVMZGU0WEIraW5pd1VuRVFVSkZ1SHZCK2luaXdlQlNRa0svb1d6Qitpbml3VjFaUTBKSThWM0IraW5pd1p6VFJFTDk0VS9CK2luaXdhVzdSa0srckVMQitpbml3Y29KU1VMYmhqYkIraW5pd2JhMFMwSlVvU3ZCK2luaXdhcXhUa0lsS0NMQitpbml3WlAwVVVLZFFSckIraW5pd1Vkd1ZVS1JEUlRCK2luaXdiRVdXVUlacFEvQitpbml3UnpaWEVML0dRM0IraW5pd1Zhb1lFSi9kZ3pCK2luaXdRSjFaRUl2dlEzQitpbml3Yjh2YUVMbjZCREIraW5pd1lySmEwTHE3QlhCK2luaXdkTXpiMEx0dEJ6Qitpbml3ZEZnY2tLUEpTWEIraW5pd2JkRGRVTEFIQy9CK2luaXdkalFkMEk1Y2pyQitpbml3ZWo5ZVVKQitFYkIraW5pd1NEQ2UwSlNmRlRCK2luaXdWb1dmVUxEeDJMQitpbml3VDMxZlVMNG9ISEIraW5pd1VkYmZrTHJaWURCK2luaXdkVkdma0tyQllqQitpbml3VDI0ZlVMb2tJL0IraW5pd2NHeGZFSWw2WmJCK2luaXdZVTNlMExEOEozQitpbml3WGRQZVVKbWk2VEIraW5pd1ZNQmQwSmZucXJCK2luaXdXVldkRUlqRWJEQitpbml3WFJaY1VLM3piVEIraW5pd1lzV2JrTDh3TGpCK2luaXdkbWFha0wrMnJ2Qm8vM1R3V1ZsYUVKeldjckJvLzNUd2VmYVkwS3Y0c3ZCby8zVHdmTkFYMEp2UmN6Qm8vM1R3UldxV2tJWmdNdkJvLzNUd2Rzb1ZrTGZsY25Cby8zVHdXN1BVVUppanNiQm8vM1R3V092VFVMMGRjTEJvLzNUd1dUWlNVSUxYYjNCby8zVHdlVmNSa0pOV0xmQm8vM1R3UUJJUTBMNWY3REJvLzNUd1NDblFFSzM3NmpCby8zVHdlU0VQa0lMeHFEQm8vM1R3ZTNwUEVMdkk1akJvLzNUd2JMY08wSkJMSS9Cby8zVHdYZGhPMEl1QTRiQm8vM1R3U2g2TzBKeG0zbkJvLzNUd1dNbVBFTDRZV2ZCby8zVHdYTmpQVUxDbzFYQm8vM1R3Vk1zUDBKQ3FFVEJvLzNUd2RKNVFVSVF0RFRCby8zVHdhVkNSRUt0QnliQm8vM1R3WWQ3UjBKRTNoakJvLzNUd1lNWFMwTG5iQTNCby8zVHdmd0hUMEx0NFFQQm8vM1R3UTQ5VTBKL3gvakFvLzNUd2J1bFYwSmRJZTdBby8zVHdUY3dYRUoxL09mQW8vM1R3U3ZLWUVKN2NlYkFvLzNUd1FsaFpVS3ZodW5Bby8zVHdVUGlhVUtmTC9IQW8vM1R3YTg3YmtLRFRmM0FvLzNUd2J0YmNrS3Ixd2JCby8zVHdic3hka0ozQ1JIQm8vM1R3VG11ZVVMN0VoM0JvLzNUd1NIRGZFS2h3eXJCby8zVHdRQmtmMElvNURuQm8vM1R3UjNEZ0VLSE4wckJvLzNUd1ppUWdVSzVlMXZCby8zVHdUUVhna0lZYTIzQm8vM1R3ZE5VZ2tJcXZYL0JvLzNUd1h0SWdrSVdGSW5Cby8zVHdWM3lnVUxMTUpMQm8vM1R3ZFpUZ1VMa0Q1dkJvLzNUd1dkdmdFS2xqYVBCby8zVHdVcVJma0s4aDZ2Qm8vM1R3WG5JZTBMejNiTEJvLzNUd1pPUGVFS3Jjcm5Cby8zVHdadnpkRUpUSzcvQm8vM1R3U0lEY1VMVjhNUEJvLzNUd1JIT2JFTG1yOGZCby8zVHdhTEJhRUlBYk0zQm8vM1R3U0VGWkVJbkJzL0JvLzNUd1g0NFgwSW5iYy9Cby8zVHdSRnZXa0pUbjg3Qm8vM1R3VHE4VlVJQ29NekJvLzNUd2VVeVVVSW9kOG5Cby8zVHdXbmxURUtiTWNYQm8vM1R3U3JsU0VLTjRML0JvLzNUd1VSQ1JVS0ZtYm5Cby8zVHdXMExRa0xMZGJMQm8vM1R3WnBOUDBJN2txckJvLzNUd2Q0VFBVS2xEcUxCby8zVHdUaG5PMEp4RFpuQm8vM1R3V2RPT2tMOXNvL0JvLzNUd2QvTk9VSUNKWWJCby8zVHdhRG5PVUk5RkhuQm8vM1R3VVdiT2tJSEVtYkJvLzNUd2ZubE8wSmdrRlBCby8zVHdYL0NQVUxVMlVIQm8vM1R3VndwUUVMa05USEJvLzNUd2RzUVEwTGo1eUhCby8zVHdUdHRSa0tBTFJUQm8vM1R3Zmt3U2tJWlBnakJvLzNUd2RaTVRrTDlrL3pBby8zVHdVQ3dVa0tYOHV6QW8vM1R3WDVKVjBJcDErSEFvLzNUd2YwRlhFS1RidHZBby8zVHdhRFNZRUtiMHRuQW8vM1R3UXljWlVMRUNkM0FvLzNUd2VST2FrSVRCK1hBby8zVHdUbllia0p2cXZIQW8vM1R3YlFsYzBKYVlBSEJvLzNUd2ZZbGQwSnhBZ3pCby8zVHdkcklla0tKa0JqQm8vM1R3YlAvZlVMNzF5YkJvLzNUd2NKZWdFSWluemJCby8zVHdhRjdnVUpXcGtmQm8vM1R3Zk5SZ2tLM3FGbkJvLzNUd1ZuZWdrS2ZYV3pCby8zVHdhQWVnMEtBZVgvQm8vM1R3YjhSZzBLeVY0bkJvLzNUd2V5M2drTEUySkxCby8zVHdaUVNna0tVR1p6Qm8vM1R3VThrZ1VMZDlLVEJvLzNUd2NEaGYwTFNScTNCby8zVHdVUDZmRUxYN2JUQm8vM1R3ZDZkZVVJTnk3dkJvLzNUd1NYYWRVSzd3c0hCby8zVHdVaStjVUxLdk1iQm8vM1R3ZUJhYlVJaHBjckJGYmZZd1NFRlpFSW5Ccy9CRmJmWXdhTEJhRUlBYk0zQkZiZll3WDQ0WDBJbmJjL0JGYmZZd1JGdldrSlRuODdCRmJmWXdUcThWVUlDb016QkZiZll3ZVV5VVVJb2Q4bkJGYmZZd1dubFRFS2JNY1hCRmJmWXdTcmxTRUtONEwvQkZiZll3VVJDUlVLRm1ibkJGYmZZd1cwTFFrTExkYkxCRmJmWXdacE5QMEk3a3FyQkZiZll3ZDRUUFVLbERxTEJGYmZZd1Robk8wSnhEWm5CRmJmWXdXZE9Pa0w5c28vQkZiZll3ZC9OT1VJQ0pZYkJGYmZZd2FEbk9VSTlGSG5CRmJmWXdVV2JPa0lIRW1iQkZiZll3Zm5sTzBKZ2tGUEJGYmZZd1gvQ1BVTFUyVUhCRmJmWXdWd3BRRUxrTlRIQkZiZll3ZHNRUTBMajV5SEJGYmZZd1R0dFJrS0FMUlRCRmJmWXdma3dTa0laUGdqQkZiZll3ZFpNVGtMOWsvekFGYmZZd1VDd1VrS1g4dXpBRmJmWXdYNUpWMElwMStIQUZiZll3ZjBGWEVLVGJ0dkFGYmZZd2FEU1lFS2IwdG5BRmJmWXdReWNaVUxFQ2QzQUZiZll3ZVJPYWtJVEIrWEFGYmZZd1RuWWJrSnZxdkhBRmJmWXdiUWxjMEphWUFIQkZiZll3ZllsZDBKeEFnekJGYmZZd2RySWVrS0prQmpCRmJmWXdiUC9mVUw3MXliQkZiZll3Y0plZ0VJaW56YkJGYmZZd2FGN2dVSldwa2ZCRmJmWXdmTlJna0szcUZuQkZiZll3Vm5lZ2tLZlhXekJGYmZZd2FBZWcwS0FlWC9CRmJmWXdiOFJnMEt5VjRuQkZiZll3ZXkzZ2tMRTJKTEJGYmZZd1pRU2drS1VHWnpCRmJmWXdVOGtnVUxkOUtUQkZiZll3Y0RoZjBMU1JxM0JGYmZZd1VQNmZFTFg3YlRCRmJmWXdkNmRlVUlOeTd2QkZiZll3U1hhZFVLN3dzSEJGYmZZd1VpK2NVTEt2TWJCRmJmWXdlQmFiVUlocGNyQmQxTUp3azVwWTBKUWpjTEI3ZzRLd2pXa1kwSW43c2JCN2c0S3dsSGRaMEp5Z01YQjdnNEt3aHJjVWtKYitjSEI3ZzRLd3BUblZrS1F5c1RCZDFNSndpQi9WMElRamNEQjdnNEt3dm9GVDBKUktyN0JkMU1Kd3JvZlVFSktXcnJCN2c0S3dqL25Ra0ozYmFiQjdnNEt3Z1ZaUlVJeGRxM0JkMU1Kd3FJU1IwSW11cXJCN2c0S3drSHJRRUlUMXA3QmQxTUp3Z3Z1UWtLdUM1M0I3ZzRLd2drWFBrS3N4SHJCN2c0S3doSUFQa0xGOG9YQmQxTUp3aFV6UUVLVnc0WEI3ZzRLd2phM1BrTE4wV25CZDFNSndtZmVRRUp5cG12QjdnNEt3akdyUTBJU3NEckJkMU1Kd295QVJVSnZqei9CN2c0S3doOUNSa0tlQ2kzQjdnNEt3a1pCU1VJTHpTREJkMU1Kd2xTNlNrSWVXQ2ZCN2c0S3dpRXdWRUxpVUFiQmQxTUp3bzcwVkVLTGtRN0I3ZzRLd3N0SldFSThYUUhCN2c0S3d1ZUNYRUtwQS8zQWQxTUp3czY5WEVLRVF3ZkI3ZzRLd29jL2FVTDZ5QUxCZDFNSnd2Mm5hRUw4UXd2QjdnNEt3Z05MYlVKYmF3akI3ZzRLd2lBaGNVSjhDUkRCZDFNSndtQUhjRUtIcVJmQjdnNEt3aHJPZWtLK2NUSEJkMU1Kd25zVWVVTFQ2VGJCN2c0S3d0dy9mVUl3Z3ovQjdnNEt3dG83ZjBMOXNVN0JkMU1Kd2hFNWZVTEdSbExCN2c0S3dvVVRnVUpJUElEQmQxTUp3Z2owZjBKNWE0REI3ZzRLd2dvSWdVSzh6SWpCZDFNSndyUklmMExVVzVEQjdnNEt3dk8zZ0VJalJwSEJkMU1Kd295bWVrSlRaNmJCN2c0S3d1aDdmRUlCMTZqQjdnNEt3djdrZVVMQXFhL0JkMU1Kd3NSc2RVSUJnN0xCN2c0S3d0WGxka0tLeUxYQmQxTUp3cEF5YTBKRzVyN0I3ZzRLd3Z6MmEwS2JCc1BCTnpNRXdzTWFZMExidHJ6Qk56TUV3aEd4WmtJNWdMdkJOek1Fd3FIWlZFSWlnYmpCTnpNRXdpdEpXRUs1NWJyQk56TUV3bWlYVVVMc1JMWEJOek1Fd3V4TFIwSTFHNkhCTnpNRXduVmZTVUxBRktmQk56TUV3bkNjUlVKNnFKckJOek1Fd2tjMVEwTEdmSHpCTnpNRXdzUWhRMEtxaElYQk56TUV3bFM5UTBKS0YyN0JOek1Fd2x2eVIwS1ZEa2JCTnpNRXduVWxTa0k3ZHpyQk56TUV3aFN4VEVLTkVUREJOek1Fd25MNlZVSnZraG5CTnpNRXdnaDJXVUt2WFJYQk56TUV3bGNNWFVKdThCTEJOek1Fd3ZIZFowS25raGJCTnpNRXdueE5hMExRV3h2Qk56TUV3clNQYmtKQjFDSEJOek1Fd3FqSGRrS2VORDdCTnpNRXdqRGJlRUt5SjByQk56TUV3cTJLZWtJdERWZkJOek1Fd2xnRmZVSmxxb0RCTnpNRXd0WHhmRUt3OElmQk56TUV3c2RwZkVKb0k0L0JOek1Fd3IwMGVFSy9KNlBCTnpNRXdxWUJka0owODZqQk56TUV3Z1YyYzBKTEpxN0JOek1Fd3Fvc2FrTFhaYm5CRjVVS3dwSzZiMExTcklYQjA1VUt3dENNY1VKZFJYM0IwNVVLd2txZGNVSk9Bb2JCRjVVS3d0eXJiMExqTG43QkY5Z0R3dENNY1VKZFJYM0IzdmNEd3BLNmIwTFNySVhCRjlnRHdrcWRjVUpPQW9iQjN2Y0R3dHlyYjBMakxuN0JGNVVLd2tYdWJrSUdXbkhCMDVVS3dva3BiMEpFaUdIQjA1VUt3bm00Y0VKVDVtN0JGNVVLd2hTS2JVS2VhbVhCRjlnRHdva3BiMEpFaUdIQjN2Y0R3a1h1YmtJR1duSEJGOWdEd25tNGNFSlQ1bTdCM3ZjRHdoU0tiVUtlYW1YQjA1VUt3blR4YkVMR3dGWEJGNVVLd3R5T2EwSTE1bHJCRjlnRHduVHhiRUxHd0ZYQjN2Y0R3dHlPYTBJMTVsckJGNVVLd3NjU2FVSjJRbExCMDVVS3duTHZaa0lSN1VUQjA1VUt3Z3NwYWtLZEUwekJGNVVLd3FReFprSUs0RXZCRjlnRHduTHZaa0lSN1VUQjN2Y0R3c2NTYVVKMlFsTEJGOWdEd2dzcGFrS2RFMHpCM3ZjRHdxUXhaa0lLNEV2QjA1VUt3cnRvWTBJZm5VREJGNVVLd3FVTFkwSmhCa2pCRjlnRHdydG9ZMElmblVEQjN2Y0R3cVVMWTBKaEJrakIzdmNEd29KL1hFSm5lMGpCRjlnRHdsKzhYMElKVkQvQkY5Z0R3blFUWEVJeElFSEIzdmNEd2duRVgwS080RWJCMDVVS3dsKzhYMElKVkQvQkY1VUt3b0ovWEVKbmUwakIwNVVLd25RVFhFSXhJRUhCRjVVS3dnbkVYMEtPNEViQjN2Y0R3cHRpV1VMN3hFekJGOWdEd3U2V1dFSjU3VVhCRjVVS3dwdGlXVUw3eEV6QjA1VUt3dTZXV0VKNTdVWEIzdmNEd3NZblZFS0JpRnpCRjlnRHdzMXRWVUlzaGszQkY5Z0R3bkM3VWtKRmxWZkIzdmNEd2l5UVZrSlJqVlBCMDVVS3dzMXRWVUlzaGszQkY1VUt3c1luVkVLQmlGekIwNVVLd25DN1VrSkZsVmZCRjVVS3dpeVFWa0pSalZQQjN2Y0R3bHRFVWtJVlVtZkJGOWdEd2dLZVVFSTdxbVBCRjVVS3dsdEVVa0lWVW1mQjA1VUt3Z0tlVUVJN3FtUEIzdmNEd2psYVVFSlhMNERCRjlnRHdpNHRUMExqUFhIQkY5Z0R3ZzU1VGtKWHVIL0IzdmNEd2d2N1VFSlljWFBCMDVVS3dpNHRUMExqUFhIQkY1VUt3amxhVUVKWEw0REIwNVVLd2c1NVRrSlh1SC9CRjVVS3dndjdVRUpZY1hQQjN2Y0R3dkZvVUVLNHhJYkJGOWdEd291SlRrTExPNGZCRjVVS3d2Rm9VRUs0eEliQjA1VUt3b3VKVGtMTE80ZkIzdmNEd3JpS1VrTFhKcFBCRjlnRHd1SmRUMEpRYTQ3QkY5Z0R3dEhzVUVKVkdwWEIzdmNEd29jbVVVSWxMNDNCMDVVS3d1SmRUMEpRYTQ3QkY1VUt3cmlLVWtMWEpwUEIwNVVLd3RIc1VFSlZHcFhCRjVVS3dvY21VVUlsTDQzQjN2Y0R3dStGVkVJTWFaakJGOWdEd3VRa1UwSVYvcHJCRjVVS3d1K0ZWRUlNYVpqQjA1VUt3dVFrVTBJVi9wckIzdmNEd2lqaldVSWg3Si9CRjlnRHdsRHRWVUtvMUovQkY5Z0R3dWNtV1VMdlo2UEIzdmNEd2dVQ1YwTHJ1cHpCMDVVS3dsRHRWVUtvMUovQkY1VUt3aWpqV1VJaDdKL0IwNVVLd3VjbVdVTHZaNlBCRjVVS3dnVUNWMExydXB6QjN2Y0R3aVlKWFVMMzJLSEJGOWdEd3AydFhFTHBqNlhCRjVVS3dpWUpYVUwzMktIQjA1VUt3cDJ0WEVMcGo2WEJGNVVLd3NGUVlFTGdhNkxCMDVVS3d1VUNaRUpmVHFYQjA1VUt3dnBaWUVKek5LYkJGNVVLd2t1VlkwSnpucUhCRjlnRHd1VUNaRUpmVHFYQjN2Y0R3c0ZRWUVMZ2E2TEJGOWdEd3ZwWllFSnpOS2JCM3ZjRHdrdVZZMEp6bnFIQjA1VUt3bXgvWjBLNjU2TEJGNVVLd2pDeVprS29lWi9CRjlnRHdteC9aMEs2NTZMQjN2Y0R3akN5WmtLb2VaL0JGNVVLd3FDRWFVS0FGWnpCMDVVS3d1cGFiVUxXRTVyQjA1VUt3bzZvYWtKa0c1L0JGNVVLd2didGEwTG1sNWZCRjlnRHd1cGFiVUxXRTVyQjN2Y0R3cUNFYVVLQUZaekJGOWdEd282b2FrSmtHNS9CM3ZjRHdnYnRhMExtbDVmQjA1VUt3bGw0YjBKYUNaVEJGNVVLd25IUWJVSWRNNUxCRjlnRHdsbDRiMEphQ1pUQjN2Y0R3bkhRYlVJZE01TEJGNVVLd3NFWmIwSjZJNHpCMDVVS3dpM3BjRUtHUDQzQjN2Y0R3c0VaYjBKNkk0ekJGOWdEd2kzcGNFS0dQNDNCU3k0RHdwSzZiMExTcklYQlN5NER3c0VaYjBKNkk0ekJTeTREd3R5cmIwTGpMbjdCU3k0RHdrWHVia0lHV25IQlN5NER3aFNLYlVLZWFtWEJTeTREd3R5T2EwSTE1bHJCU3k0RHdzY1NhVUoyUWxMQlN5NER3cVF4WmtJSzRFdkJTeTREd3FVTFkwSmhCa2pCU3k0RHdnbkVYMEtPNEViQlN5NER3b0ovWEVKbmUwakJTeTREd3B0aVdVTDd4RXpCU3k0RHdpeVFWa0pSalZQQlN5NER3c1luVkVLQmlGekJTeTREd2x0RVVrSVZVbWZCU3k0RHdndjdVRUpZY1hQQlN5NER3amxhVUVKWEw0REJTeTREd3ZGb1VFSzR4SWJCU3k0RHdvY21VVUlsTDQzQlN5NER3cmlLVWtMWEpwUEJTeTREd3UrRlZFSU1hWmpCU3k0RHdnVUNWMExydXB6QlN5NER3aWpqV1VJaDdKL0JTeTREd2lZSlhVTDMyS0hCU3k0RHdzRlFZRUxnYTZMQlN5NER3a3VWWTBKem5xSEJTeTREd2pDeVprS29lWi9CU3k0RHdxQ0VhVUtBRlp6QlN5NER3Z2J0YTBMbWw1ZkJTeTREd25IUWJVSWRNNUxCc3VuOHdaeFFhMExpMG9uQnN1bjh3UURKYTBJcS9JVEJzdW44d2Z1OWEwSjBEb0RCc3VuOHdRNHdhMExJZ1hiQnN1bjh3V1lsYWtKd2ttM0JzdW44d2ErcGFFTFdzbVhCc3VuOHdYL05aa0lTTzEvQnN1bjh3YWlsWkVLQ2MxckJzdW44d1VaS1lrS2VrVmZCc3VuOHdiblZYMEtwdFZiQnN1bjh3WGxqWFVJNTZWZkJzdW44d2VZT1cwTG1IbHZCc3VuOHdSTHlXRUxDTW1EQnN1bjh3WjhrVjBMNzYyYkJzdW44d2JpNlZVSmUvMjdCc3VuOHdUSEVWRUtNRW5qQnN1bjh3Y3hMVkVMOTM0REJzdW44d2RCV1ZFS3p6WVhCc3VuOHdiN2tWRUpDbTRyQnN1bjh3V2J2VlVMdkVvL0JzdW44d1J4clYwSzdBcFBCc3VuOHdVeEhXVUtjUHBiQnN1bjh3U1J2VzBKbW9wakJzdW44d1lYS1hVSllFNXJCc3VuOHdSRS9ZRUpUZ1pyQnN1bjh3Vkd4WWtLSzU1bkJzdW44d2VZRlpVS3pUSmpCc3VuOHdic2laMExGd3BYQnN1bjh3UzN3YUVJcFpwTEJzdW44d1JSYWFrSjRYSTdCWmNQNXdRREphMElxL0lUQlpjUDV3WnhRYTBMaTBvbkJaY1A1d2Z1OWEwSjBEb0RCWmNQNXdRNHdhMExJZ1hiQlpjUDV3V1lsYWtKd2ttM0JaY1A1d2ErcGFFTFdzbVhCWmNQNXdYL05aa0lTTzEvQlpjUDV3YWlsWkVLQ2MxckJaY1A1d1VaS1lrS2VrVmZCWmNQNXdiblZYMEtwdFZiQlpjUDV3WGxqWFVJNTZWZkJaY1A1d2VZT1cwTG1IbHZCWmNQNXdSTHlXRUxDTW1EQlpjUDV3WjhrVjBMNzYyYkJaY1A1d2JpNlZVSmUvMjdCWmNQNXdUSEVWRUtNRW5qQlpjUDV3Y3hMVkVMOTM0REJaY1A1d2RCV1ZFS3p6WVhCWmNQNXdiN2tWRUpDbTRyQlpjUDV3V2J2VlVMdkVvL0JaY1A1d1J4clYwSzdBcFBCWmNQNXdVeEhXVUtjUHBiQlpjUDV3U1J2VzBKbW9wakJaY1A1d1lYS1hVSllFNXJCWmNQNXdSRS9ZRUpUZ1pyQlpjUDV3Vkd4WWtLSzU1bkJaY1A1d2VZRlpVS3pUSmpCWmNQNXdic2laMExGd3BYQlpjUDV3UzN3YUVJcFpwTEJaY1A1d1JSYWFrSjRYSTdCcU9QeHdRREphMElxL0lUQnFPUHh3WnhRYTBMaTBvbkJxT1B4d2Z1OWEwSjBEb0RCcU9QeHdRNHdhMExJZ1hiQnFPUHh3V1lsYWtKd2ttM0JxT1B4d2ErcGFFTFdzbVhCcU9QeHdYL05aa0lTTzEvQnFPUHh3YWlsWkVLQ2MxckJxT1B4d1VaS1lrS2VrVmZCcU9QeHdiblZYMEtwdFZiQnFPUHh3WGxqWFVJNTZWZkJxT1B4d2VZT1cwTG1IbHZCcU9QeHdSTHlXRUxDTW1EQnFPUHh3WjhrVjBMNzYyYkJxT1B4d2JpNlZVSmUvMjdCcU9QeHdUSEVWRUtNRW5qQnFPUHh3Y3hMVkVMOTM0REJxT1B4d2RCV1ZFS3p6WVhCcU9QeHdiN2tWRUpDbTRyQnFPUHh3V2J2VlVMdkVvL0JxT1B4d1J4clYwSzdBcFBCcU9QeHdVeEhXVUtjUHBiQnFPUHh3U1J2VzBKbW9wakJxT1B4d1lYS1hVSllFNXJCcU9QeHdSRS9ZRUpUZ1pyQnFPUHh3Vkd4WWtLSzU1bkJxT1B4d2VZRlpVS3pUSmpCcU9QeHdic2laMExGd3BYQnFPUHh3UzN3YUVJcFpwTEJxT1B4d1JSYWFrSjRYSTdCWTdzTndoVC9ha0xXMklUQlk3c053c0NWYTBKV0dJREJZN3NOd3AyZ2EwSWE5WVRCWTdzTndzLzBha0xiUDREQlk3c053c2FPYWtKZFhJbkJZN3NOd3RZcGEwSXV1NG5CWTdzTndzMm9hVUx4bDQzQlk3c053cDQyYWtJcU5ZN0JZN3NOd2pWWGFFSTNYSkhCWTdzTndwWFJhRUw0TUpMQlk3c053c0NvWmtJSGY1VEJZN3NOd2xVS1owSUhncFhCWTdzTndqMndaRUpPM1piQlk3c053c1AwWkVJNUE1akJZN3NOd3JtRFlrS05YSmpCWTdzTndqT29Za0tLbUpuQlk3c053b2M3WUVJRTdKakJZN3NOd2xzK1lFSkRNSnJCWTdzTndrTFNYVUxDdzVuQlk3c053alB4WFVKcmhaakJZN3NOd3Z0K1cwTEZWNWpCWTdzTndsYStXMEpBTFpmQlk3c053b3hlV1VJeS9KWEJZN3NOd282N1dVS044cFRCWTdzTndzS0lWMEp4eTVMQlk3c053bG4vVjBKRTdwSEJZN3NOd2lVU1ZrSXQ2WTdCWTdzTndpS2RWa0ltUW83Qlk3c053aE1MVlVMZWdJckJZN3NOd21Pa1ZVSkpGNHJCWTdzTndneC9WRUxTdzRYQlk3c053djBmVlVKTW5JWEJZN3NOd2k1MFZFSVA1NERCWTdzTndyWVZWVUpTQTRIQlk3c053Z1NHVlVLVy8zakJZN3NOd3ZUcVZFTDBRWGpCWTdzTnd2OXJWa0pxaUhEQlk3c053aTNlVlVMNlRXL0JZN3NOd3BlOVYwTGgvMmpCWTdzTndqZERWMEpjVm1mQlk3c053Z3hzV1VJOHVtTEJZN3NOd25jS1dVSS90R0RCWTdzTndvNWtXMEt1L1YzQlk3c053Z2NnVzBMYnNWdkJZN3NOd2hPUlhVSXcvMXJCWTdzTndwbHNYVUk0aDFqQlk3c053a0xaWDBKRjRGbkJZN3NOd203V1gwTEhWMWZCWTdzTndvdENZa0xLTUZqQlk3c053cGtqWWtKNXJWckJZN3NOd3RPVlpFTEZDRnZCWTdzTnduaFdaRUxPWFYzQlk3c053aisyWmtMa3YxL0JZN3NOd2o1WlprSXYwMkhCWTdzTndnbU1hRUp0SVdiQlk3c053bk1WYUVMRTIyZkJZN3NOd3FjQ2FrTDA1VzNCWTdzTndxcDNhVUlBTkcvQlk3c053cm9KYTBLU3RuYkJZN3NOd21sd2FrSzdpWGZCMzNnTXdwaERaa0xhQklUQjMzZ013c0k5WmtKRGFJSEIzM2dNd3N3RFprSkFsWWJCMzNnTXdpbUJaVUxJL0lqQjMzZ013a211WWtMMFFJN0IzM2dNd3QvTVkwS1A2SXpCMzNnTXdpaHlZVUtwR28vQjMzZ013azRtWUVJbmJJL0IzM2dNd2ovWlhrTGdNWS9CMzNnTXdoWjFYRUl2S28zQjMzZ013c0o0VzBKOWM0dkIzM2dNd295dldrSjJYWW5CMzNnTXdqOGlXa0p1LzRiQjMzZ013Z25YV1VMaGM0VEIzM2dNd3FPVFdrTEJ2bm5CMzNnTXdnQVJXa0xTalg3QjMzZ013bWhUVzBKQmQzWEIzM2dNd3V4SFhFSXM1M0hCMzNnTXdvSm1YVUppTm0vQjMzZ013bnp1WDBMLzMyekIzM2dNd280N1lVS1FWRzNCMzNnTXdrdDdZa0tTMjI3QjMzZ013ck9mWTBMcVkzSEIzM2dNd2dxY1pFSlQwWFRCMzNnTXdvM3laVUowdVgzQjMzZ013aENpWlVLVzZJUEIzM2dNd3RHY1pVTElqNEhCMzNnTXdydG9aVUp2Tm9iQjMzZ013bGZ6WkVLT1g0akIzM2dNd2dWSFpFTEVTNHJCMzNnTXdtWEJaRUtISUl2QjMzZ013a3ByWTBLUTVZdkIzM2dNd3NKcFlrSUxHNDNCMzNnTXdxMU5ZVUtzM28zQjMzZ013bmtqWUVMb0o0N0IzM2dNd2kvNFhrS0o4NDNCMzNnTXdvS1pYVUpmYm83QjMzZ013dDdZWFVMYVE0M0IzM2dNd2hqU1hFS0lJSXpCMzNnTXdsZnZXMEpUbG9yQjMzZ013b2c2VzBKdnRvakIzM2dNd28rN1drTGFsWWJCMzNnTXd2cDNXa0pjVElUQjMzZ013alRSV1VKTTE0SEIzM2dNd3IxeVdrS1A4NEhCMzNnTXdoQ3NXa0oxUzMvQjMzZ013blFoVzBJeitYckIzM2dNd3NmTlcwTEZJSGZCMzNnTXdvT3BYRUlyN1hQQjMzZ013Z21yWFVJMWduSEIzM2dNd2gzSFhrTDErbS9CMzNnTXdxT2lYa0w3Z20zQjMzZ013bER4WDBKOWFHL0IzM2dNd3AwY1lVSSswVy9CMzNnTXd2QTdZa0tjTUhIQjMzZ013ckpDWTBJMmQzUEIzM2dNd25NbFpFS3BpM2JCMzNnTXdrRmxaVUpsL1hqQjMzZ013a1RhWkVKelMzckIzM2dNd2oxWlpVS2RqSDdCUFNnTXdreFJaVUowMm9QQlBTZ013bGxNWlVLTG80SEJQU2dNd2pRYlpVSUlCNGJCUFNnTXdtK3NaRUx5RUlqQlBTZ013dFFKWkVKazRZbkJQU2dNd244NlkwSVFaSXZCUFNnTXduNUhZa0lXaUl6QlBTZ013bkE3WVVLdFFJM0JQU2dNd2c4aVlFTEloWTNCUFNnTXdxZ0hYMEplVkkzQlBTZ013b3o0WFVLWnJvekJQU2dNd3BnQVhVSzBtNHZCUFNnTXdxTXFYRUs4SjRyQlBTZ013Z2VBVzBMc1lvakJQU2dNd2pnSVcwSVFZWWJCUFNnTXduUElXa0taT0lUQlBTZ013b0REV2tLeUFZTEJQU2dNd3BqNVdrSkZxbi9CUFNnTXdsNW9XMEp1bG52QlBTZ013dmdLWEVLSDlYZkJQU2dNd2szYVhFSW84SFRCUFNnTXdrek5YVUlncUhMQlBTZ013bHJaWGtMME5uSEJQU2dNd3JyeVgwSytySERCUFNnTXdpVU5ZVUtWRDNIQlBTZ013a0ljWWtJZlczTEJQU2dNd2pJVVkwTGNnSFRCUFNnTXdpanFZMExXYUhmQlBTZ013c1dVWkVKNzhuckJQU2dNd3BRTVpVSXg5bjdCN2Y4THdsbE1aVUtMbzRIQjdmOEx3a3hSWlVKMDJvUEI3ZjhMd2pRYlpVSUlCNGJCN2Y4THdtK3NaRUx5RUlqQjdmOEx3dFFKWkVKazRZbkI3ZjhMd244NlkwSVFaSXZCN2Y4THduNUhZa0lXaUl6QjdmOEx3bkE3WVVLdFFJM0I3ZjhMd2c4aVlFTEloWTNCN2Y4THdxZ0hYMEplVkkzQjdmOEx3b3o0WFVLWnJvekI3ZjhMd3BnQVhVSzBtNHZCN2Y4THdxTXFYRUs4SjRyQjdmOEx3Z2VBVzBMc1lvakI3ZjhMd2pnSVcwSVFZWWJCN2Y4THduUElXa0taT0lUQjdmOEx3b0REV2tLeUFZTEI3ZjhMd3BqNVdrSkZxbi9CN2Y4THdsNW9XMEp1bG52QjdmOEx3dmdLWEVLSDlYZkI3ZjhMd2szYVhFSW84SFRCN2Y4THdrek5YVUlncUhMQjdmOEx3bHJaWGtMME5uSEI3ZjhMd3JyeVgwSytySERCN2Y4THdpVU5ZVUtWRDNIQjdmOEx3a0ljWWtJZlczTEI3ZjhMd2pJVVkwTGNnSFRCN2Y4THdpanFZMExXYUhmQjdmOEx3c1dVWkVKNzhuckI3ZjhMd3BRTVpVSXg5bjdCV2pZTHdsbE1aVUtMbzRIQldqWUx3a3hSWlVKMDJvUEJXallMd2pRYlpVSUlCNGJCV2pZTHdtK3NaRUx5RUlqQldqWUx3dFFKWkVKazRZbkJXallMd244NlkwSVFaSXZCV2pZTHduNUhZa0lXaUl6QldqWUx3bkE3WVVLdFFJM0JXallMd2c4aVlFTEloWTNCV2pZTHdxZ0hYMEplVkkzQldqWUx3b3o0WFVLWnJvekJXallMd3BnQVhVSzBtNHZCV2pZTHdxTXFYRUs4SjRyQldqWUx3Z2VBVzBMc1lvakJXallMd2pnSVcwSVFZWWJCV2pZTHduUElXa0taT0lUQldqWUx3b0REV2tLeUFZTEJXallMd3BqNVdrSkZxbi9CV2pZTHdsNW9XMEp1bG52QldqWUx3dmdLWEVLSDlYZkJXallMd2szYVhFSW84SFRCV2pZTHdrek5YVUlncUhMQldqWUx3bHJaWGtMME5uSEJXallMd3JyeVgwSytySERCV2pZTHdpVU5ZVUtWRDNIQldqWUx3a0ljWWtJZlczTEJXallMd2pJVVkwTGNnSFRCV2pZTHdpanFZMExXYUhmQldqWUx3c1dVWkVKNzhuckJXallMd3BRTVpVSXg5bjdCV2pZTHdrSUJZa0lSUm9QQldqWUx3bXIvWVVJSWM0TEJXallMd2gvdFlVSStGWVRCV2pZTHd1TERZVUtIMTRUQldqWUx3bHVIWVVKbmhJWEJXallMd2k4NllVSlZGSWJCV2pZTHdyemZZRUlKZ1liQldqWUx3dkY3WUVMQ3hZYkJXallMd2pNVFlFSjczNGJCV2pZTHdoYXFYMElYelliQldqWUx3aXhGWDBKaGo0YkJXallMd3Q3b1hrSU1LWWJCV2pZTHdqbVpYa0tWbm9YQldqWUx3cmhaWGtJSzlvVEJXallMd2lBdFhrTEdOb1RCV2pZTHdtTVZYa0lkYVlQQldqWUx3b29UWGtJV2xvTEJXallMd3E0blhrTHR4b0hCV2pZTHd1dFFYa0tnQklIQldqWUx3bkdOWGtLK1Y0REJXallMd3A3YVhrS2FqMy9CV2pZTHdoQTFYMEk3dG43QldqWUx3dGlZWDBMTkxIN0JXallMd3BZQllFSmMrWDNCV2pZTHdyZHFZRUlqSG43QldqWUx3cVRQWUVLT21YN0JXallMd3VzcllVSXFabi9CV2pZTHdwRjdZVUtTUFlEQldqWUx3aFM3WVVJaDVvREJXallMd3EzbllVSmxwWUhCd21vTndzMjNWVUsrVlkvQndtb053bXVuVkVKL3hZckJ3bW9Od204V1ZFS0IzWVhCd21vTndpOExWRUt2MUlEQndtb053aXFHVkVLeHhuZkJ3bW9Od3YrQlZVS1hnVzdCd21vTndxM3pWa0xHUVdiQndtb053Z25MV0VLT1kxL0J3bW9Od256eldrTEZNMXJCd21vTnd1UlVYVUp3N0ZiQndtb053cGZVWDBKQnNsWEJ3bW9Od3FkV1lrTDFrbGJCd21vTndnSy9aRUt3aEZuQndtb053ckx5WmtLS1psN0J3bW9Od2g3WmFFTG1BV1hCd21vTnd2NWNha0xSREczQndtb053bUp0YTBKUUxYYkJ3bW9Od2wzK2EwSkwvWC9Cd21vTndwc0piRUo1QjRYQndtb053cUdPYTBMUStJbkJ3bW9Od3M2U2FrSmNtNDdCd21vTndpQWhhVUpEdTVMQndtb053c1JKWjBKZktwYkJ3bW9Od2s0aFpVSkZ3cGpCd21vTnd1aS9Za0x1WlpyQndtb053ak5BWUVJR0E1dkJ3bW9Od2lXK1hVS3VrcHJCd21vTndzeFZXMExOR1puQndtb053aGdpV1VMZnFKYkJ3bW9Od3EwN1YwSXpXNVBCcU4wS3doYkhVRUtZclliQnFOMEt3amVBVVVKaDhZekJxTjBLd2dmY1VrSWl4WkxCcU4wS3drL0xWRUtxNTVmQnFOMEt3bTA0VjBLRUg1ekJxTjBLd2prSVdrSi9QWi9CcU4wS3dqOGJYVUs4SHFIQnFOMEt3aGxQWUVJeHJxSEJxTjBLd3ZSL1kwS1o1YURCcU4wS3docUtaa0s0elo3QnFOMEt3b3RMYVVMOGZadkJxTjBLd20rbGEwSnZHNWZCcU4wS3ducDliVUlpMTVIQnFOMEt3Z3UvYmtJRTdJdkJxTjBLd2hOY2IwSktuSVhCcU4wS3dyWk5iMElpWFg3QnFOMEt3cFdVYmtLTzFYSEJxTjBLd3NZNGJVSUpMbWJCcU4wS3dueEphMEw3NkZ2QnFOMEt3bC9jYUVKRmVWUEJxTjBLd3BRTVprSk9QVTNCcU4wS3dvdjVZa0xWZWtuQnFOMEt3ckhGWDBMc1cwakJxTjBLd3RpVVhFSWI3VW5CcU4wS3dyR0tXVUxhSEU3QnFOMEt3a0hKVmtKV3ZGVEJxTjBLd2wxdlZFSnVnVjNCcU4wS3dsS1hVa0lLQ21qQnFOMEt3c0ZWVVVKSDRIUEJxTjBLd3JpNFVFTGZQNERCa2xJSndrWHVia0lHV25IQmtsSUp3dHlyYjBMakxuN0JrbElKd3NjU2FVSjJRbExCa2xJSnd0eU9hMEkxNWxyQmtsSUp3cVVMWTBKaEJrakJrbElKd2duRVgwS080RWJCa2xJSndwdGlXVUw3eEV6QmtsSUp3aXlRVmtKUmpWUEJrbElKd2x0RVVrSVZVbWZCa2xJSndndjdVRUpZY1hQQmtsSUp3dkZvVUVLNHhJYkJrbElKd29jbVVVSWxMNDNCa2xJSnd1K0ZWRUlNYVpqQmtsSUp3Z1VDVjBMcnVwekJrbElKd3NGUVlFTGdhNkxCa2xJSndpWUpYVUwzMktIQmtsSUp3cUNFYVVLQUZaekJrbElKd2pDeVprS29lWi9Ca2xJSndzRVpiMEo2STR6QmtsSUp3bkhRYlVJZE01TEJrbElKd3RDTWNVSmRSWDNCa2xJSndubTRjRUpUNW03QmtsSUp3blR4YkVMR3dGWEJrbElKd2dzcGFrS2RFMHpCa2xJSndydG9ZMElmblVEQmtsSUp3bCs4WDBJSlZEL0JrbElKd3U2V1dFSjU3VVhCa2xJSndzMXRWVUlzaGszQmtsSUp3Z0tlVUVJN3FtUEJrbElKd2k0dFQwTGpQWEhCa2xJSndvdUpUa0xMTzRmQmtsSUp3dUpkVDBKUWE0N0JrbElKd3VRa1UwSVYvcHJCa2xJSndsRHRWVUtvMUovQmtsSUp3cDJ0WEVMcGo2WEJrbElKd3ZwWllFSnpOS2JCa2xJSndteC9aMEs2NTZMQmtsSUp3bzZvYWtKa0c1L0JrbElKd2xsNGIwSmFDWlRCa2xJSndpM3BjRUtHUDQzQnBEd013alBCVmtJWWdvREJwRHdNd3JocFYwSVlib0hCcER3TXdoTjlWa0t4UklIQnBEd013b2MzVjBMTmxvREJwRHdNd2xiclhVSkN3bURCcER3TXdxTjNYa0llSEdQQnBEd013bmlVWFVKSEJtTEJwRHdNd3V4Y1hrSXJUV0hCcER3TXdpWEFaMEppSlhIQnBEd013aXN0YUVKQzMzUEJwRHdNd21sYlowSWxJWExCcER3TXdnWXBhRUp1QkhMQnBEd013bThJWjBJaDdvM0JwRHdNd3MxT1owTEhjSS9CcER3TXd0R1laa0ppUDQ3QnBEd013bTFqWjBMVWhvN0JwRHdNd3J6eFcwSlU0WlBCcER3TXdnbVdYRUsxNlpMQnBEd013amM1WEVJTW41VEJwRHdNd2lVZ1hFS29CcFBCOGpBTndneEFWa0pEc0h6QjhqQU53azcwVjBJdjkzekI4akFOd3RMbVYwSTRSSDNCOGpBTndoczJWa0lNVzN6QjhqQU53aTJhV0VKZW80SEI4akFOd3BteFdFSjNwNEhCOGpBTndzQ21WMEttV29UQjhqQU53ckN3VjBKRGhZVEI4akFOd29EeVZVSXhONFRCOGpBTnd2ei9WVUt0RUlUQjhqQU53ak0xVlVKUkM0SEI4akFOd3A5TVZVSnJENEhCOGpBTnd1YWJYMEtFZ1dUQjhqQU53cUJOWDBKVXkxM0I4akFOd21LeVgwSUJuV1RCOGpBTndtODhYMEoxQzE3QjhqQU53b1psWGtKQkIybkI4akFOd3M5cVhrTGlZbW5COGpBTndudStYRUlSVjJmQjhqQU53cXpQWEVMd0ZtZkI4akFOd3JsWlhFSmhoV0RCOGpBTndqUndYRUxmb0dEQjhqQU53cFdtWFVJakcxekI4akFOd2t1aFhVS0R2MXZCOGpBTndoclRaMEsrb0huQjhqQU53c05QYVVKUFNYYkI4akFOd3V2VFowSzMvbm5COGpBTndnSTdhVUlzSFhiQjhqQU53bkpJWmtLZXRYYkI4akFOd21KY1prTElnM2JCOGpBTnd0QTRaa0lZdDIvQjhqQU53cEpOWmtJOTQyL0I4akFOd251MVowS3NYMnpCOGpBTndxaTBaMEt4QVd6QjhqQU53aUpBYVVMTlNtL0I4akFOd2pJc2FVS2hmRy9COGpBTnd1eE9aVUo0Q3BEQjhqQU53aDJxWmtMM0c1TEI4akFOd2dlbVprSkZTcExCOGpBTndnTmxaVUpoK28vQjhqQU53ck9jWlVKRW1JekI4akFOd3JXdVpVSjh0b3pCOGpBTndvRTlaMEl4bEl2QjhqQU53cFpCWjBMa1pZdkI4akFOd3JLWWFFS3lwWTNCOGpBTndwdUNhRUxHdFkzQjhqQU53dWs0YUVLcStaREI4akFOd3V0S2FFTGtGNUhCOGpBTndoSmFXMEwzK0pEQjhqQU53bWJDV2tMU0s1VEI4akFOd2hHcldrS01NWlRCOGpBTndqbG9XMEtESHBIQjhqQU53bk1OWFVJUnQ1REI4akFOd3FJV1hVTEtpNURCOGpBTndqQWtYa0kxVjVQQjhqQU53dHdNWGtMd1hKUEI4akFOd2dsblhVSSthcGJCOGpBTndpOTFYVUxMajViQjhqQU53czdCVzBLdzBaYkI4akFOd3A2NFcwTDUvSmJCdUhrTXdneEFWa0pEc0h6QnVIa013dExtVjBJNFJIM0J1SGtNd2kyYVdFSmVvNEhCdUhrTXdzQ21WMEttV29UQnVIa013dnovVlVLdEVJVEJ1SGtNd3A5TVZVSnJENEhCdUhrTXdtODhYMEoxQzE3QnVIa013dWFiWDBLRWdXVEJ1SGtNd29abFhrSkJCMm5CdUhrTXdxelBYRUx3Rm1mQnVIa013alJ3WEVMZm9HREJ1SGtNd3BXbVhVSWpHMXpCdUhrTXdnSTdhVUlzSFhiQnVIa013aHJUWjBLK29IbkJ1SGtNd21KY1prTElnM2JCdUhrTXdwSk5aa0k5NDIvQnVIa013bnUxWjBLc1gyekJ1SGtNd2pJc2FVS2hmRy9CdUhrTXdnTmxaVUpoK28vQnVIa013aDJxWmtMM0c1TEJ1SGtNd3JXdVpVSjh0b3pCdUhrTXdvRTlaMEl4bEl2QnVIa013cHVDYUVMR3RZM0J1SGtNd3VrNGFFS3ErWkRCdUhrTXdqbG9XMEtESHBIQnVIa013bWJDV2tMU0s1VEJ1SGtNd25NTlhVSVJ0NURCdUhrTXd0d01Ya0x3WEpQQnVIa013Z2xuWFVJK2FwYkJ1SGtNd3M3QlcwS3cwWmJCcER3TXdneEFWa0pEc0h6QnBEd013dExtVjBJNFJIM0JwRHdNd2kyYVdFSmVvNEhCcER3TXdzQ21WMEttV29UQnBEd013dnovVlVLdEVJVEJwRHdNd3A5TVZVSnJENEhCcER3TXdtODhYMEoxQzE3QnBEd013dWFiWDBLRWdXVEJwRHdNd29abFhrSkJCMm5CcER3TXdxelBYRUx3Rm1mQnBEd013alJ3WEVMZm9HREJwRHdNd3BXbVhVSWpHMXpCcER3TXdnSTdhVUlzSFhiQnBEd013aHJUWjBLK29IbkJwRHdNd21KY1prTElnM2JCcER3TXdwSk5aa0k5NDIvQnBEd013bnUxWjBLc1gyekJwRHdNd2pJc2FVS2hmRy9CcER3TXdnTmxaVUpoK28vQnBEd013aDJxWmtMM0c1TEJwRHdNd3JXdVpVSjh0b3pCcER3TXdvRTlaMEl4bEl2QnBEd013cHVDYUVMR3RZM0JwRHdNd3VrNGFFS3ErWkRCcER3TXdqbG9XMEtESHBIQnBEd013bWJDV2tMU0s1VEJwRHdNd25NTlhVSVJ0NURCcER3TXd0d01Ya0x3WEpQQnBEd013Z2xuWFVJK2FwYkJwRHdNd3M3QlcwS3cwWmJCcER3TXdwZ2xWMEt4TUlMQnBEd013a2V2VmtMOEc0TEJwRHdNd3NZZ1hrSWpZR1RCcER3TXdpK3ZYVUk1MVdQQnBEd013bkRJWjBJTDIzVEJwRHdNd285ZlowTDYrM1BCcER3TXdpN2Zaa0lHd28vQnBEd013aktFWmtKVUtZL0JwRHdNd29YZFhFSnRwNVBCcER3TXdoeXZYRUlaZ3BUQklSb053a0lCWWtJUlJvUEJJUm9Od2xsTVpVS0xvNEhCSVJvTndreFJaVUowMm9QQklSb053bXIvWVVJSWM0TEJJUm9Od2gvdFlVSStGWVRCSVJvTndqUWJaVUlJQjRiQklSb053dUxEWVVLSDE0VEJJUm9Od20rc1pFTHlFSWpCSVJvTndsdUhZVUpuaElYQklSb053dFFKWkVKazRZbkJJUm9Od2k4NllVSlZGSWJCSVJvTnduODZZMElRWkl2QklSb053cnpmWUVJSmdZYkJJUm9Od241SFlrSVdpSXpCSVJvTnd2RjdZRUxDeFliQklSb053bkE3WVVLdFFJM0JJUm9Od2pNVFlFSjczNGJCSVJvTndnOGlZRUxJaFkzQklSb053cWdIWDBKZVZJM0JJUm9Od2hhcVgwSVh6WWJCSVJvTndvejRYVUtacm96QklSb053aXhGWDBKaGo0YkJJUm9Od3BnQVhVSzBtNHZCSVJvTnd0N29Ya0lNS1liQklSb053cU1xWEVLOEo0ckJJUm9Od2ptWlhrS1Zub1hCSVJvTndnZUFXMExzWW9qQklSb053cmhaWGtJSzlvVEJJUm9Od2pnSVcwSVFZWWJCSVJvTndpQXRYa0xHTm9UQklSb053blBJV2tLWk9JVEJJUm9Od21NVlhrSWRhWVBCSVJvTndvRERXa0t5QVlMQklSb053b29UWGtJV2xvTEJJUm9Od3E0blhrTHR4b0hCSVJvTndwajVXa0pGcW4vQklSb053dXRRWGtLZ0JJSEJJUm9Od2w1b1cwSnVsbnZCSVJvTnduR05Ya0srVjREQklSb053dmdLWEVLSDlYZkJJUm9Od3A3YVhrS2FqMy9CSVJvTndrM2FYRUlvOEhUQklSb053aEExWDBJN3RuN0JJUm9Od2t6TlhVSWdxSExCSVJvTnd0aVlYMExOTEg3QklSb053bHJaWGtMME5uSEJJUm9Od3BZQllFSmMrWDNCSVJvTndycnlYMEsrckhEQklSb053aVVOWVVLVkQzSEJJUm9Od3JkcVlFSWpIbjdCSVJvTndrSWNZa0lmVzNMQklSb053cVRQWUVLT21YN0JJUm9Od2pJVVkwTGNnSFRCSVJvTnd1c3JZVUlxWm4vQklSb053aWpxWTBMV2FIZkJJUm9Od3BGN1lVS1NQWURCSVJvTndzV1VaRUo3OG5yQklSb053aFM3WVVJaDVvREJJUm9Od3BRTVpVSXg5bjdCSVJvTndxM25ZVUpscFlIQkNSME53dXNEWUVLTjlJTEJxTjBNd2xsTVpVS0xvNEhCcU4wTXdwUU1aVUl4OW43QnFOME13a3hSWlVKMDJvUEJxTjBNd3NXVVpFSjc4bnJCcU4wTXdpanFZMExXYUhmQnFOME13aklVWTBMY2dIVEJxTjBNd2tJY1lrSWZXM0xCcU4wTXdpVU5ZVUtWRDNIQnFOME13cnJ5WDBLK3JIREJxTjBNd3FnSFgwSmVWSTNCcU4wTXdnOGlZRUxJaFkzQnFOME13b3o0WFVLWnJvekJxTjBNd25BN1lVS3RRSTNCcU4wTXduNUhZa0lXaUl6QnFOME13bjg2WTBJUVpJdkJxTjBNd3RRSlpFSms0WW5CcU4wTXdtK3NaRUx5RUlqQnFOME13alFiWlVJSUI0YkJxTjBNd2xyWlhrTDBObkhCcU4wTXdrek5YVUlncUhMQnFOME13azNhWEVJbzhIVEJxTjBNd3ZnS1hFS0g5WGZCcU4wTXdsNW9XMEp1bG52QnFOME13cGo1V2tKRnFuL0JxTjBNd29ERFdrS3lBWUxCcU4wTXduUElXa0taT0lUQnFOME13amdJVzBJUVlZYkJxTjBNd2dlQVcwTHNZb2pCcU4wTXdxTXFYRUs4SjRyQnFOME13cGdBWFVLMG00dkJjOE1Md2xsTVpVS0xvNEhCYzhNTHdwUU1aVUl4OW43QmM4TUx3a3hSWlVKMDJvUEJjOE1Md3NXVVpFSjc4bnJCYzhNTHdqUWJaVUlJQjRiQmM4TUx3aWpxWTBMV2FIZkJjOE1Md2pJVVkwTGNnSFRCYzhNTHdrSWNZa0lmVzNMQmM4TUx3aVVOWVVLVkQzSEJjOE1Md3JyeVgwSytySERCYzhNTHdsclpYa0wwTm5IQmM4TUx3cWdIWDBKZVZJM0JjOE1Md2c4aVlFTEloWTNCYzhNTHdvejRYVUtacm96QmM4TUx3bkE3WVVLdFFJM0JjOE1Md3BnQVhVSzBtNHZCYzhNTHduNUhZa0lXaUl6QmM4TUx3bjg2WTBJUVpJdkJjOE1Md3RRSlpFSms0WW5CYzhNTHdtK3NaRUx5RUlqQmM4TUx3a3pOWFVJZ3FITEJjOE1Md2szYVhFSW84SFRCYzhNTHd2Z0tYRUtIOVhmQmM4TUx3bDVvVzBKdWxudkJjOE1Md3BqNVdrSkZxbi9CYzhNTHdvRERXa0t5QVlMQmM4TUx3blBJV2tLWk9JVEJjOE1Md2pnSVcwSVFZWWJCYzhNTHdnZUFXMExzWW9qQmM4TUx3cU1xWEVLOEo0ckI3Mkx4d1F1Q2IwSzJQb3ZCNzJMeHdZVlFja0lhRTRQQjcyTHh3UTJ6Y1VKYWE0ekI3Mkx4d2JvTGNFSWJFNFBCNzJMeHdRdUNiMEx5em5YQjcyTHh3UXl6Y1VLc2RYUEI3Mkx4d1dMdWJVTFBsR2JCNzJMeHdWdmxiMEk5QzJMQjcyTHh3VDFzYTBKaWdWbkI3Mkx4d2U4R2JVS25GbFBCNzJMeHdXRW5hRUxNZUUvQjcyTHh3Y2xKYVVMam5FZkI3Mkx4d2RwWVpFSW9La25CNzJMeHdTM3ZaRUlqWmtEQjcyTHh3UXBEWUVKcEEwZkI3Mkx4d1FwRFlFSSs4RDNCNzJMeHdleVdXMElqWmtEQjcyTHh3VHN0WEVJa0trbkI3Mkx4d1U0OFYwTGhuRWZCNzJMeHdiSmVXRUxRZUUvQjcyTHh3U2wvVTBLb0ZsUEI3Mkx4d2RrWlZVSmVnVm5CNzJMeHdiaWdVRUkzQzJMQjcyTHh3YlNYVWtMS2xHYkI3Mkx4d1FuVFRrS3dkWFBCNzJMeHdRY0VVVUx1em5YQjcyTHh3Vng2VUVJYUU0UEI3Mkx4d1pFMVRrSVhFNFBCNzJMeHdRY0VVVUsyUG92QjcyTHh3UW5UVGtKWmE0ekI3Mkx4d2JHWFVrTEwyNUxCNzJMeHdicWdVRUtSSUpYQjcyTHh3ZFlaVlVKNlpabkI3Mkx4d1MxL1UwTFptcHpCNzJMeHdiSmVXRUxIYVo3QjcyTHh3VTQ4VjBLOFY2TEI3Mkx4d1R3dFhFSVhrYUhCNzJMeHdleVdXMElhODZYQjcyTHh3UWxEWUVKMHBLTEI3Mkx4d1F4RFlFSU5McWZCNzJMeHdTM3ZaRUllODZYQjcyTHh3ZHBZWkVJWmthSEI3Mkx4d2NkSmFVSzdWNkxCNzJMeHdXRW5hRUxJYVo3QjcyTHh3ZXdHYlVMWm1wekI3Mkx4d1Qxc2EwSjhaWm5CNzJMeHdWdmxiMEtQSUpYQjcyTHh3V1B1YlVMRzI1TEJQK2p2d1lWUWNrSWFFNFBCUCtqdndRMnpjVUphYTR6QlAranZ3UXl6Y1VLc2RYUEJQK2p2d1Z2bGIwSTlDMkxCUCtqdndlOEdiVUtuRmxQQlAranZ3Y2xKYVVMam5FZkJQK2p2d1MzdlpFSWpaa0RCUCtqdndRcERZRUkrOEQzQlAranZ3ZXlXVzBJalprREJQK2p2d1U0OFYwTGhuRWZCUCtqdndTbC9VMEtvRmxQQlAranZ3YmlnVUVJM0MyTEJQK2p2d1FuVFRrS3dkWFBCUCtqdndaRTFUa0lYRTRQQlAranZ3UW5UVGtKWmE0ekJQK2p2d2JxZ1VFS1JJSlhCUCtqdndTMS9VMExabXB6QlAranZ3VTQ4VjBLOFY2TEJQK2p2d2V5V1cwSWE4NlhCUCtqdndReERZRUlOTHFmQlAranZ3UzN2WkVJZTg2WEJQK2p2d2NkSmFVSzdWNkxCUCtqdndld0diVUxabXB6QlAranZ3VnZsYjBLUElKWEJQK2p2d1IwU2MwSVlFNFBCUCtqdndRNXVja0tVejR6QlAranZ3UXR1Y2tJL3JYTEJQK2p2d1FhTmNFSU5pR0RCUCtqdndkV1BiVUlYODFEQlAranZ3Wk9xYVVJLy9rVEJQK2p2d1VnaFpVSWllajNCUCtqdndRdERZRUxZNlRyQlAranZ3YzVrVzBJa2VqM0JQK2p2d1lMYlZrSS8va1RCUCtqdndVVDJVa0lUODFEQlAranZ3UkQ1VDBJR2lHREJQK2p2d1FvWVRrSkJyWExCUCtqdndmVnpUVUlYRTRQQlAranZ3UWNZVGtLTno0ekJQK2p2d1JINVQwSXI0cFhCUCtqdndVVDJVa0trckozQlAranZ3WUxiVmtJTnA2UEJQK2p2d2M5a1cwSWJhYWZCUCtqdndRMURZRUpCc2FqQlAranZ3VWNoWlVJZGFhZkJQK2p2d1pPcWFVSU1wNlBCUCtqdndkR1BiVUtpckozQlAranZ3UWlOY0VJcjRwWEI3Mkx4d1E1dWNrS1V6NHpCNzJMeHdSMFNjMElZRTRQQjcyTHh3UXR1Y2tJL3JYTEI3Mkx4d1FhTmNFSU5pR0RCNzJMeHdkV1BiVUlYODFEQjcyTHh3Wk9xYVVJLy9rVEI3Mkx4d1VnaFpVSWllajNCNzJMeHdRdERZRUxZNlRyQjcyTHh3YzVrVzBJa2VqM0I3Mkx4d1lMYlZrSS8va1RCNzJMeHdVVDJVa0lUODFEQjcyTHh3UkQ1VDBJR2lHREI3Mkx4d1FvWVRrSkJyWExCNzJMeHdmVnpUVUlYRTRQQjcyTHh3UWNZVGtLTno0ekI3Mkx4d1JINVQwSXI0cFhCNzJMeHdVVDJVa0trckozQjcyTHh3WUxiVmtJTnA2UEI3Mkx4d2M5a1cwSWJhYWZCNzJMeHdRMURZRUpCc2FqQjcyTHh3VWNoWlVJZGFhZkI3Mkx4d1pPcWFVSU1wNlBCNzJMeHdkR1BiVUtpckozQjcyTHh3UWlOY0VJcjRwWEI3Mkx4d1FvQmVVSjhWWkRCUCtqdndYL2dlVUlhRTRQQlAranZ3UW9CZVVKOFZaREI3Mkx4d1gvZ2VVSWFFNFBCUCtqdndRd0JlVUptb1d2QjcyTHh3UXdCZVVKbW9XdkJQK2p2d2ZWeGRrSlM2MUxCNzJMeHdmVnhka0pTNjFMQlAranZ3ZDlmY2tMbHNqM0I3Mkx4d2Q5ZmNrTGxzajNCUCtqdndjQVJiVUo2YWkzQjcyTHh3Y0FSYlVKNmFpM0JQK2p2d1R6a1prSWZMaVBCNzJMeHdUemtaa0lmTGlQQlAranZ3UXBEWUVKZnNCL0I3Mkx4d1FwRFlFSmZzQi9CNzJMeHdkdWhXVUlpTGlQQlAranZ3ZHVoV1VJaUxpUEI3Mkx4d1ZWMFUwSjhhaTNCUCtqdndWVjBVMEo4YWkzQjcyTHh3VHNtVGtMaHNqM0JQK2p2d1RzbVRrTGhzajNCNzJMeHdTQVVTa0pJNjFMQlAranZ3U0FVU2tKSTYxTEI3Mkx4d1FpRlIwSmxvV3ZCUCtqdndRaUZSMEpsb1d2QjcyTHh3WldsUmtJYUU0UEJQK2p2d1pXbFJrSWFFNFBCNzJMeHdRcUZSMEo0VlpEQlAranZ3UXFGUjBKNFZaREI3Mkx4d1NBVVNrS0xzSnpCUCtqdndTQVVTa0tMc0p6QjcyTHh3VG9tVGtLN1RLZkJQK2p2d1RvbVRrSzdUS2ZCNzJMeHdWTjBVMEx1Y0svQlAranZ3Vk4wVTBMdWNLL0I3Mkx4d2RxaFdVSWZqN1RCUCtqdndkcWhXVUlmajdUQjcyTHh3UWxEWUVMOFRiYkJQK2p2d1FsRFlFTDhUYmJCUCtqdndUcmtaa0liajdUQjcyTHh3VHJrWmtJYmo3VEJQK2p2d2NNUmJVTHVjSy9CNzJMeHdjTVJiVUx1Y0svQlAranZ3ZHhmY2tLOFRLZkI3Mkx4d2R4ZmNrSzhUS2ZCUCtqdndmZHhka0tIc0p6QjcyTHh3ZmR4ZGtLSHNKekJQK2p2d1EzUWRrTGFLSS9CUCtqdndiV2JkMElhRTRQQlAranZ3US9RZGtLeSttM0JQK2p2d2YxNmRFTG1kRmZCUCtqdndTN0ZjRUtkSFVUQlAranZ3Vnp2YTBKbFJqWEJQK2p2d2V0TlprSWc4aXZCUCtqdndRbERZRUtEd3lqQlAranZ3U3M0V2tJazhpdkJQK2p2d2JTV1ZFSnFSalhCUCtqdndlZkFUMEtjSFVUQlAranZ3Um9MVEVMZmRGZkJQK2p2d1FtMlNVS3YrbTNCUCtqdndXRHFTRUlYRTRQQlAranZ3UWkyU1VMWEtJL0JQK2p2d1JnTFRFTENhNXJCUCtqdndlckFUMEpnRjZUQlAranZ3YldXVkVMNmdxdkJQK2p2d1NzNFdrSWNMYkRCUCtqdndRdERZRUpxeExIQlAranZ3ZXROWmtJY0xiREJQK2p2d1Z2dmEwTDNncXZCUCtqdndUSEZjRUpkRjZUQlAranZ3Zng2ZEVLOWE1ckJrMjN1d2JXYmQwSWFFNFBCazIzdXdRM1Fka0xhS0kvQmsyM3V3US9RZGtLeSttM0JrMjN1d2YxNmRFTG1kRmZCazIzdXdTN0ZjRUtkSFVUQmsyM3V3Vnp2YTBKbFJqWEJrMjN1d2V0TlprSWc4aXZCazIzdXdRbERZRUtEd3lqQmsyM3V3U3M0V2tJazhpdkJrMjN1d2JTV1ZFSnFSalhCazIzdXdlZkFUMEtjSFVUQmsyM3V3Um9MVEVMZmRGZkJrMjN1d1FtMlNVS3YrbTNCazIzdXdXRHFTRUlYRTRQQmsyM3V3UWkyU1VMWEtJL0JrMjN1d1JnTFRFTENhNXJCazIzdXdlckFUMEpnRjZUQmsyM3V3YldXVkVMNmdxdkJrMjN1d1NzNFdrSWNMYkRCazIzdXdRdERZRUpxeExIQmsyM3V3ZXROWmtJY0xiREJrMjN1d1Z2dmEwTDNncXZCazIzdXdUSEZjRUpkRjZUQmsyM3V3Zng2ZEVLOWE1ckJrMjN1d1gvZ2VVSWFFNFBCazIzdXdRb0JlVUo4VlpEQmsyM3V3UXdCZVVKbW9XdkJrMjN1d2ZWeGRrSlM2MUxCazIzdXdkOWZja0xsc2ozQmsyM3V3Y0FSYlVKNmFpM0JrMjN1d1R6a1prSWZMaVBCazIzdXdRcERZRUpmc0IvQmsyM3V3ZHVoV1VJaUxpUEJrMjN1d1ZWMFUwSjhhaTNCazIzdXdUc21Ua0xoc2ozQmsyM3V3U0FVU2tKSTYxTEJrMjN1d1FpRlIwSmxvV3ZCazIzdXdaV2xSa0lhRTRQQmsyM3V3UXFGUjBKNFZaREJrMjN1d1NBVVNrS0xzSnpCazIzdXdUb21Ua0s3VEtmQmsyM3V3Vk4wVTBMdWNLL0JrMjN1d2RxaFdVSWZqN1RCazIzdXdRbERZRUw4VGJiQmsyM3V3VHJrWmtJYmo3VEJrMjN1d2NNUmJVTHVjSy9CazIzdXdkeGZja0s4VEtmQmsyM3V3ZmR4ZGtLSHNKekI1UExzd1gvZ2VVSWFFNFBCNVBMc3dRb0JlVUo4VlpEQjVQTHN3UXdCZVVKbW9XdkI1UExzd2ZWeGRrSlM2MUxCNVBMc3dkOWZja0xsc2ozQjVQTHN3Y0FSYlVKNmFpM0I1UExzd1R6a1prSWZMaVBCNVBMc3dRcERZRUpmc0IvQjVQTHN3ZHVoV1VJaUxpUEI1UExzd1ZWMFUwSjhhaTNCNVBMc3dUc21Ua0xoc2ozQjVQTHN3U0FVU2tKSTYxTEI1UExzd1FpRlIwSmxvV3ZCNVBMc3daV2xSa0lhRTRQQjVQTHN3UXFGUjBKNFZaREI1UExzd1NBVVNrS0xzSnpCNVBMc3dUb21Ua0s3VEtmQjVQTHN3Vk4wVTBMdWNLL0I1UExzd2RxaFdVSWZqN1RCNVBMc3dRbERZRUw4VGJiQjVQTHN3VHJrWmtJYmo3VEI1UExzd2NNUmJVTHVjSy9CNVBMc3dkeGZja0s4VEtmQjVQTHN3ZmR4ZGtLSHNKekI1UExzd1FzOWNFTHJvb3ZCNVBMc3dWVE5jRUlhRTRQQjVQTHN3UTA5Y0VLSkJuWEI1UExzd1F5V2JrS2NFV1hCNVBMc3dTVDFhMExNWFZmQjVQTHN3VENJYUVJazJrekI1UExzd2ZTS1pFSWhQa2JCNVBMc3dRcERZRUlJL1VQQjVQTHN3U0g3VzBJalBrYkI1UExzd2ViOVYwSXEya3pCNVBMc3dmU1FWRUxPWFZmQjVQTHN3UXJ3VVVLYUVXWEI1UExzd1FwSlVFS09CblhCNVBMc3diKzRUMElYRTRQQjVQTHN3UVZKVUVMcG9vdkI1UExzd1Fyd1VVSmduWlBCNVBMc3dmT1FWRUpLZDVyQjVQTHN3ZVQ5VjBJWHVaL0I1UExzd1NMN1cwSWJCNlBCNVBMc3dReERZRUtxSjZUQjVQTHN3ZlNLWkVJZkI2UEI1UExzd1RHSWFFSVh1Wi9CNVBMc3dTYjFhMEpHZDVyQjVQTHN3UXVXYmtKZW5aUEI3Mkx4d2RjY1RVSWJFNFBCNzJMeHdlSERUVUlLVTNMQjcyTHh3Wnl0VDBMRzJWL0I3Mkx4d2F1NFVrS28vRS9CNzJMeHdmQ3ZWa0owMEVQQjcyTHh3VU5PVzBLSUtUekI3Mkx4d1FsRFlFSmNqVG5CNzJMeHdkRTNaVUtLS1R6QjcyTHh3U1RXYVVKMzBFUEI3Mkx4d1c3TmJVS3MvRS9CNzJMeHdYclljRUxRMlYvQjcyTHh3VFBDY2tJS1UzTEI3Mkx4d1R0cGMwSVlFNFBCNzJMeHdUVENja0txL0l6QjcyTHh3WHJZY0VKSU9aYkI3Mkx4d1d2TmJVTFlKNTdCNzJMeHdTTFdhVUwxUGFUQjcyTHh3ZEkzWlVKckVhakI3Mkx4d1F0RFlFSi9YNm5CNzJMeHdVTk9XMEpuRWFqQjcyTHh3ZkN2VmtMelBhVEI3Mkx4d2F5NFVrTFpKNTdCNzJMeHdaeXRUMEpNT1piQjcyTHh3ZVBEVFVLbi9JekI3Mkx4d2ZyVVIwSVU5MnZCNzJMeHdWbjRSa0lhRTRQQjcyTHh3ZnJVUjBLaUtwREI3Mkx4d2N4YlNrTEtYWnpCNzJMeHdjQmdUa0t5MTZiQjcyTHh3YlNkVTBLVTRhN0I3Mkx4d1VhM1dVSTQ3N1BCNzJMeHdRbERZRUoycUxYQjcyTHh3Yy9PWmtJNTc3UEI3Mkx4d1dIb2JFS1g0YTdCNzJMeHdWZ2xja0t2MTZiQjcyTHh3VWdxZGtMRVhaekI3Mkx4d1IyeGVFS2pLcERCNzJMeHdibU5lVUlYRTRQQjcyTHh3Unl4ZUVJVDkydkI3Mkx4d1VrcWRrTGJrRlBCNzJMeHdWNGxja0wvbkQ3QjcyTHh3Vi9vYkVJdmlTN0I3Mkx4d2RMT1prTG5iU1RCNzJMeHdRbERZRUpuK3lEQjcyTHh3VVczV1VMbGJTVEI3Mkx4d2JXZFUwSXVpUzdCNzJMeHdjRmdUa0w0bkQ3QjcyTHh3YzFiU2tMTWtGUEI0UllBd2c4Z2EwS0lnWHJCV01qNHdTaUNhMElZRTRQQjRSWUF3aWlDYTBJWUU0UEJXTWo0d1E4Z2EwS0lnWHJCNFJZQXdtc0Fha0wxcDIvQldNajR3V3NBYWtMMXAyL0I0UllBd3VJMmFFTFVWbWJCV01qNHdlSTJhRUxVVm1iQjRSWUF3cG5pWlVLZk1GL0JXTWo0d1puaVpVS2ZNRi9CNFJZQXdqY3NZMElrc2xyQldNajR3VGNzWTBJa3NsckI0UllBd2d0RFlFSzlLVm5CV01qNHdRdERZRUs5S1ZuQldNajR3ZU5aWFVJcXNsckI0UllBd3VOWlhVSXFzbHJCV01qNHdYeWpXa0tsTUYvQjRSWUF3bnlqV2tLbE1GL0JXTWo0d1RWUFdFTFNWbWJCNFJZQXdqVlBXRUxTVm1iQldNajR3YW1GVmtMM3AyL0I0UllBd3FtRlZrTDNwMi9CV01qNHdRbG1WVUtIZ1hyQjRSWUF3Z2xtVlVLSGdYckJXTWo0d2ZBRFZVSWFFNFBCNFJZQXd2QURWVUlhRTRQQldNajR3UWxtVlVKdDVZakI0UllBd2dsbVZVSnQ1WWpCV01qNHdhcUZWa0kwVW83QjRSWUF3cXFGVmtJMFVvN0JXTWo0d1RkUFdFTEcrcExCNFJZQXdqZFBXRUxHK3BMQldNajR3WCtqV2tMZGpaYkI0UllBd24raldrTGRqWmJCV01qNHdlRlpYVUlkelpqQjRSWUF3dUZaWFVJZHpaakJXTWo0d1F0RFlFSlNrWm5CNFJZQXdndERZRUpTa1puQjRSWUF3alFzWTBJY3paakJXTWo0d1RRc1kwSWN6WmpCNFJZQXdwZmlaVUxkalpiQldNajR3WmZpWlVMZGpaYkI0UllBd3VVMmFFTEQrcExCV01qNHdlVTJhRUxEK3BMQjRSWUF3bXdBYWtJMVVvN0JXTWo0d1d3QWFrSTFVbzdCNFJZQXdnd2dhMEp0NVlqQldNajR3UXdnYTBKdDVZakIrOUwxd2ZQR2JVSWFFNFBCKzlMMXdRaFJiVUlSRW9yQis5TDF3UXBSYlVJK0tIakIrOUwxd1diM2EwSmdIbXZCKzlMMXdaSFJhVUliN0YvQis5TDF3ZndFWjBLM1ZGZkIrOUwxd1lmQ1kwSXA3bEhCKzlMMXdRMURZRUtXRmxEQis5TDF3WXZEWEVJaDdsSEIrOUwxd1JxQldVSzNWRmZCKzlMMXdZVzBWa0laN0YvQis5TDF3YXVPVkVKZUhtdkIrOUwxd1FZMVUwSTZLSGpCKzlMMXdTSy9Va0lYRTRQQis5TDF3UVkxVTBJUUVvckIrOUwxd2ErT1ZFSUJsNURCKzlMMXdZUzBWa0lnTUpiQis5TDF3Um1CV1VMUWU1ckIrOUwxd1kvRFhFSWNMNTNCKzlMMXdRbERZRUxsR3A3Qis5TDF3WVhDWTBJYUw1M0IrOUwxd2ZzRVowTFFlNXJCKzlMMXdZL1JhVUlqTUpiQis5TDF3V24zYTBMK2xwREJTMWowd2ZQR2JVSWFFNFBCUzFqMHdRaFJiVUlSRW9yQlMxajB3UXBSYlVJK0tIakJTMWowd1diM2EwSmdIbXZCUzFqMHdaSFJhVUliN0YvQlMxajB3ZndFWjBLM1ZGZkJTMWowd1lmQ1kwSXA3bEhCUzFqMHdRMURZRUtXRmxEQlMxajB3WXZEWEVJaDdsSEJTMWowd1JxQldVSzNWRmZCUzFqMHdZVzBWa0laN0YvQlMxajB3YXVPVkVKZUhtdkJTMWowd1FZMVUwSTZLSGpCUzFqMHdTSy9Va0lYRTRQQlMxajB3UVkxVTBJUUVvckJTMWowd2ErT1ZFSUJsNURCUzFqMHdZUzBWa0lnTUpiQlMxajB3Um1CV1VMUWU1ckJTMWowd1kvRFhFSWNMNTNCUzFqMHdRbERZRUxsR3A3QlMxajB3WVhDWTBJYUw1M0JTMWowd2ZzRVowTFFlNXJCUzFqMHdZL1JhVUlqTUpiQlMxajB3V24zYTBMK2xwREJTMWowd1ZUTmNFSWFFNFBCUzFqMHdRczljRUxyb292QlMxajB3UTA5Y0VLSkJuWEJTMWowd1F5V2JrS2tFV1hCUzFqMHdTVDFhMExPWFZmQlMxajB3VENJYUVJazJrekJTMWowd2ZTS1pFSWhQa2JCUzFqMHdRcERZRUlJL1VQQlMxajB3U0g3VzBJalBrYkJTMWowd2ViOVYwSXEya3pCUzFqMHdmU1FWRUxPWFZmQlMxajB3UW53VVVLV0VXWEJTMWowd1FwSlVFS09CblhCUzFqMHdiKzRUMElYRTRQQlMxajB3UVZKVUVMcG9vdkJTMWowd1Fyd1VVSmduWlBCUzFqMHdmT1FWRUpLZDVyQlMxajB3ZVQ5VjBJWHVaL0JTMWowd1NMN1cwSWJCNlBCUzFqMHdRcERZRUtySjZUQlMxajB3ZlNLWkVJY0I2UEJTMWowd1RHSWFFSVh1Wi9CUzFqMHdTYjFhMEpHZDVyQlMxajB3UXVXYmtKZW5aUEJuOTN5d1ZUTmNFSWFFNFBCbjkzeXdRczljRUxyb292Qm45M3l3UTA5Y0VLSkJuWEJuOTN5d1F5V2JrS2tFV1hCbjkzeXdTVDFhMExPWFZmQm45M3l3VENJYUVJazJrekJuOTN5d2ZTS1pFSWhQa2JCbjkzeXdRcERZRUlJL1VQQm45M3l3U0g3VzBJalBrYkJuOTN5d2ViOVYwSXEya3pCbjkzeXdmU1FWRUxPWFZmQm45M3l3UW53VVVLV0VXWEJuOTN5d1FwSlVFS09CblhCbjkzeXdiKzRUMElYRTRQQm45M3l3UVZKVUVMcG9vdkJuOTN5d1Fyd1VVSmduWlBCbjkzeXdmT1FWRUpLZDVyQm45M3l3ZVQ5VjBJWHVaL0JuOTN5d1NMN1cwSWJCNlBCbjkzeXdRcERZRUtySjZUQm45M3l3ZlNLWkVJY0I2UEJuOTN5d1RHSWFFSVh1Wi9CbjkzeXdTYjFhMEpHZDVyQm45M3l3UXVXYmtKZW5aUEJuOTN5d1F1Q2IwSzJQb3ZCbjkzeXdib0xjRUliRTRQQm45M3l3UXVDYjBMeXpuWEJuOTN5d1dMdWJVTFBsR2JCbjkzeXdUMXNhMEppZ1ZuQm45M3l3V0VuYUVMTWVFL0JuOTN5d2RwWVpFSW9La25CbjkzeXdRcERZRUpwQTBmQm45M3l3VHN0WEVJa0trbkJuOTN5d2JKZVdFTFFlRS9CbjkzeXdka1pWVUplZ1ZuQm45M3l3YlNYVWtMS2xHYkJuOTN5d1FjRVVVTHV6blhCbjkzeXdWeDZVRUlhRTRQQm45M3l3UWNFVVVLMlBvdkJuOTN5d2JHWFVrTEwyNUxCbjkzeXdkWVpWVUo2WlpuQm45M3l3YkplV0VMSGFaN0JuOTN5d1R3dFhFSVhrYUhCbjkzeXdRbERZRUowcEtMQm45M3l3ZHBZWkVJWmthSEJuOTN5d1dFbmFFTElhWjdCbjkzeXdUMXNhMEo4WlpuQm45M3l3V1B1YlVMRzI1TEJLd2pud1ZUTmNFSWFFNFBCS3dqbndRczljRUxyb292Qkt3am53UTA5Y0VLSkJuWEJLd2pud1F5V2JrS2NFV1hCS3dqbndTVDFhMExNWFZmQkt3am53VENJYUVJazJrekJLd2pud2ZTS1pFSWhQa2JCS3dqbndRcERZRUlJL1VQQkt3am53U0g3VzBJalBrYkJLd2pud2ViOVYwSXEya3pCS3dqbndmU1FWRUxPWFZmQkt3am53UXJ3VVVLYUVXWEJLd2pud1FwSlVFS09CblhCS3dqbndiKzRUMElYRTRQQkt3am53UVZKVUVMcG9vdkJLd2pud1Fyd1VVSmduWlBCS3dqbndmT1FWRUpLZDVyQkt3am53ZVQ5VjBJWHVaL0JLd2pud1NMN1cwSWJCNlBCS3dqbndReERZRUtxSjZUQkt3am53ZlNLWkVJZkI2UEJLd2pud1RHSWFFSVh1Wi9CS3dqbndTYjFhMEpHZDVyQkt3am53UXVXYmtKZW5aUEJ2NlBFd1F2dmFFTEx1SWZCdjZQRXdWdzlhVUlZRTRQQnY2UEV3UXp2YUVMSzJuekJ2NlBFd1hBSmFFS0ZNWFRCdjZQRXdUU2Naa0tPd1d6QnY2UEV3VFRBWkVLVURHZkJ2NlBFd2VXVllrSXRkbVBCdjZQRXdRcERZRUxtUEdMQnY2UEV3VER3WFVJcmRtUEJ2NlBFd2VIRlcwS1NER2ZCdjZQRXdlYnBXVUtMd1d6QnY2UEV3YU44V0VLTE1YVEJ2NlBFd1FxWFYwTFAybnpCdjZQRXdibElWMElXRTRQQnY2UEV3UXFYVjBMSXVJZkJ2NlBFd2FOOFdFSm9EWXpCdjZQRXdlUHBXVUpveFkvQnY2UEV3ZUxGVzBMbm41TEJ2NlBFd1RId1hVSWFhNVRCdjZQRXdReERZRUs3QjVYQnY2UEV3ZU9WWWtJZGE1VEJ2NlBFd1RYQVpFTGpuNUxCdjZQRXdUU2Naa0pueFkvQnY2UEV3WEFKYUVKdERZekJsSG1ud1Z3OWFVSVlFNFBCbEhtbndRdnZhRUxMdUlmQmxIbW53UXp2YUVMSzJuekJsSG1ud1hBSmFFS0ZNWFRCbEhtbndUU2Naa0tPd1d6QmxIbW53VFRBWkVLVURHZkJsSG1ud2VXVllrSXRkbVBCbEhtbndRcERZRUxtUEdMQmxIbW53VER3WFVJcmRtUEJsSG1ud2VIRlcwS1NER2ZCbEhtbndlYnBXVUtMd1d6QmxIbW53YU44V0VLTE1YVEJsSG1ud1FxWFYwTFAybnpCbEhtbndibElWMElXRTRQQmxIbW53UXFYVjBMSXVJZkJsSG1ud2FOOFdFSm9EWXpCbEhtbndlUHBXVUpveFkvQmxIbW53ZUxGVzBMbm41TEJsSG1ud1RId1hVSWFhNVRCbEhtbndReERZRUs3QjVYQmxIbW53ZU9WWWtJZGE1VEJsSG1ud1RYQVpFTGpuNUxCbEhtbndUU2Naa0pueFkvQmxIbW53WEFKYUVKdERZekJqK1lKd3JDZ2JrS1NVUFRBMHMzTndZNGJZRUo2TmQzQWorWUp3bzRiWUVKNk5kM0EwczNOd2JDZ2JrS1NVUFRBcUV6TXdZb2JZRUp4L3REQXFFek13VVUyYjBLUkIrbkFRRU1Ld3M0c2IwSVpJdXJBUUVNS3doUVNZRUwzR05MQTBzM053WThBZDBKNkp5YkFLSVlLd2drZllFSzJxcnEvMHMzTndRa2ZZRUsycXJxL0tJWUt3bzhBZDBKNkp5YkFLSVlLd2djZllFTEhGUkhBS0lZS3dySERkVUp3OTFYQTBzM053YkhEZFVKdzkxWEEwczNOd1FjZllFTEhGUkhBaWxvTHdnWWZZRUwwOVNyQWlsb0x3a0FsZFVKbjMyM0FxRXpNd1VBbGRVSm4zMjNBcUV6TXdRWWZZRUwwOVNyQUVBb013Z2tmWUVJbC8xSEFFQW9Nd2owMmRFTHc5NGpBVmdQTHdUMDJkRUx3OTRqQVZnUEx3UWtmWUVJbC8xSEFFQW9Nd3ZFV1lFSTYzOEhBRUFvTXdyanJiMEprRU52QVZnUEx3YmpyYjBKa0VOdkFWZ1BMd2ZFV1lFSTYzOEhBMHMzTndlenZla0toRGh2QmorWUp3dXp2ZWtLaERodkJxRXpNd1ZFRWZFSVV2UmJCUUVNS3d0bjZlMEpUU2hmQjBzM053U3d6aFVMdXc3ckFLSVlLd2l3emhVTHV3N3JBS0lZS3dtb09oRUx5RDgzQTBzM053V29PaEVMeUQ4M0FpbG9Md2d0OGcwTDlOZGJBcUV6TXdRdDhnMEw5TmRiQUVBb013anFmZ2tJZEErVEFWZ1BMd1RxZmdrSWRBK1RBRUFvTXdvQlhmVUlSWnhIQlZnUEx3WUJYZlVJUlp4SEJqK1lKd3NHVWdVS1FTMHpCMHMzTndjR1VnVUtRUzB6QnFFek13VkpKZ2tJLzlVbkJRRU1Ld3BaRWdrS0Fna3JCMHMzTndTK3VpMElYK1NyQktJWUt3aSt1aTBJWCtTckJLSVlLd3E4dmlrS1M3Qy9CMHMzTndhOHZpa0tTN0MvQmlsb0x3bTV3aVVKUVpqTEJxRXpNd1c1d2lVSlFaakxCRUFvTXd1dFBpRUplSWpiQlZnUEx3ZXRQaUVKZUlqYkJFQW9Nd3AwbmcwSTNGa2ZCVmdQTHdaMG5nMEkzRmtmQmorWUp3bk1HZzBJVU1JUEIwczNOd1hNR2cwSVVNSVBCcUV6TXdlVEpnMElVTUlQQlFFTUt3aW5GZzBLMWRvUEIwczNOd2NIMGpVS2RQNFBCS0lZS3dzSDBqVUtkUDRQQktJWUt3cjFXakVLZVA0UEIwczNOd2IxV2pFS2VQNFBCaWxvTHdydUhpMEtkUDRQQnFFek13YnVIaTBLZFA0UEJFQW9Nd25SUGlrS2VQNFBCVmdQTHdYUlBpa0tlUDRQQkVBb013ckc2aEVLeE5JUEJWZ1BMd2JHNmhFS3hOSVBCaitZSndzT1VnVUphT3FEQjBzM053Y09VZ1VKYU9xREJxRXpNd1ZGSmdrS0NaYUhCUUVNS3dwVkVna0lqcktIQjBzM053VEN1aTBLd0FySEJLSVlLd2pDdWkwS3dBckhCS0lZS3dyQXZpa0x6aUs3QjBzM053YkF2aWtMemlLN0JpbG9Md205d2lVSVNUSzNCcUV6TXdXOXdpVUlTVEszQkVBb013dXRQaUVJTWJxdkJWZ1BMd2V0UGlFSU1icXZCRUFvTXdwMG5nMEkvM3FMQlZnUEx3WjBuZzBJLzNxTEJqK1lKd3V6dmVrTFQyTGpCMHMzTndlenZla0xUMkxqQnFFek13VkVFZkVLZUFidkJRRU1Ld3R2NmUwSS9TTHZCMHMzTndTMHpoVUpCenRmQktJWUt3aTB6aFVKQnp0ZkJLSVlLd21zT2hFSTdPOVBCMHMzTndXc09oRUk3TzlQQmlsb0x3Z3Q4ZzBMQThkREJxRXpNd1F0OGcwTEE4ZERCRUFvTXdqaWZna0oxZnMzQlZnUEx3VGlmZ2tKMWZzM0JFQW9Nd29OWGZVTFB0YjNCVmdQTHdZTlhmVUxQdGIzQmorWUp3ckNnYmtJRVRNbkIwczNOd2JDZ2JrSUVUTW5CcUV6TXdVTTJiMEpBSHN6QlFFTUt3czRzYjBMa1pNekIwczNOd1pFQWQwSk51dkhCS0lZS3dwRUFkMEpOdXZIQktJWUt3cS9EZFVKUndPdkIwczNOd2EvRGRVSlJ3T3ZCaWxvTHdrQWxkVUpSdytqQnFFek13VUFsZFVKUncrakJFQW9Nd2owMmRFSkRRZVRCVmdQTHdUMDJkRUpEUWVUQkVBb013cnZyYjBKRHBjL0JWZ1BMd2J2cmIwSkRwYy9CaitZSndvMGJZRUxKRXMvQjBzM053WTBiWUVMSkVzL0JxRXpNd1lvYllFS0hJTkxCUUVNS3doWVNZRUl0WjlMQjBzM053UWdmWUVLWDFQckJLSVlLd2dnZllFS1gxUHJCS0lZS3dna2ZZRUtJWFBUQjBzM053UWtmWUVLSVhQVEJpbG9Md2dZZllFSi9JUEhCcUV6TXdRWWZZRUovSVBIQkVBb013Z1lmWUVKYVArekJWZ1BMd1FZZllFSmFQK3pCRUFvTXd2RVdZRUtMOGRYQlZnUEx3ZkVXWUVLTDhkWEJqK1lKd21tV1VVSUNUTW5CMHMzTndXbVdVVUlDVE1uQnFFek13ZFFBVVVKQUhzekJRRU1Ld2wzM1VFTGlaTXpCMHMzTndYNDlTVUpQdXZIQktJWUt3bjQ5U1VKUHV2SEJLSVlLd2wxNlNrSlF3T3ZCMHMzTndWMTZTa0pRd092Qmlsb0x3czRZUzBKU3crakJxRXpNd2M0WVMwSlN3K2pCRUFvTXdzMEhURUpFUWVUQlZnUEx3YzBIVEVKRVFlVEJFQW9Nd2laQ1VFSStwYy9CVmdQTHdTWkNVRUkrcGMvQmorWUp3aTVIUlVMVzJMakIwczNOd1M1SFJVTFcyTGpCcUV6TXdjWXlSRUtiQWJ2QlFFTUt3azRwUkVJK1NMdkIwczNOd2JqWE5VSkd6dGZCS0lZS3dyalhOVUpHenRmQktJWUt3amdoT0VKQk85UEIwczNOd1RnaE9FSkJPOVBCaWxvTHd2aEZPVUsvOGREQnFFek13ZmhGT1VLLzhkREJFQW9Nd3B6L09rSjNmczNCVmdQTHdaei9Pa0ozZnMzQkVBb013bC9XUWtMVHRiM0JWZ1BMd1YvV1FrTFR0YjNCaitZSndwWU5QVUphT3FEQjBzM053WllOUFVKYU9xREJxRXpNd1hha08wS0haYUhCUUVNS3d2MmFPMElucktIQjBzM053YTdoS0VLeUFySEJLSVlLd3E3aEtFS3lBckhCS0lZS3dxemVLMEx5aUs3QjBzM053YXplSzBMeWlLN0JpbG9Md2kxZExVSVVUSzNCcUV6TXdTMWRMVUlVVEszQkVBb013aldlTDBJTWJxdkJWZ1BMd1RXZUwwSU1icXZCRUFvTXdxcmVPVUpBM3FMQlZnUEx3YXJlT1VKQTNxTEJqK1lKd2pBcU9rSVZNSVBCMHMzTndUQXFPa0lWTUlQQnFFek13VkdqT0VJWE1JUEJRRU1Ld3R1Wk9FSzJkb1BCMHMzTndZcFVKRUtqUDRQQktJWUt3b3BVSkVLalA0UEJLSVlLd3BPUUowS2dQNFBCMHMzTndaT1FKMEtnUDRQQmlsb0x3cGd1S1VLaFA0UEJxRXpNd1pndUtVS2hQNFBCRUFvTXdpdWZLMEtoUDRQQlZnUEx3U3VmSzBLaFA0UEJFQW9Nd29TNE5rS3hOSVBCVmdQTHdZUzROa0t4TklQQmorWUp3cFVOUFVLYlMwekIwczNOd1pVTlBVS2JTMHpCcUV6TXdYYWtPMEpKOVVuQlFFTUt3dithTzBLTmdrckIwczNOd2JMaEtFSWorU3JCS0lZS3dyTGhLRUlqK1NyQktJWUt3cS9lSzBLYTdDL0IwczNOd2EvZUswS2E3Qy9CaWxvTHdqQmRMVUpkWmpMQnFFek13VEJkTFVKZFpqTEJFQW9Nd2pXZUwwSm9JamJCVmdQTHdUV2VMMEpvSWpiQkVBb013cVhlT1VJN0ZrZkJWZ1BMd2FYZU9VSTdGa2ZCaitZSndpeEhSVUtnRGh2QjBzM053U3hIUlVLZ0RodkJxRXpNd2NjeVJFSVJ2UmJCUUVNS3dsRXBSRUpYU2hmQjBzM053YmpYTlVMNnc3ckFLSVlLd3JqWE5VTDZ3N3JBS0lZS3dqTWhPRUwrRDgzQTBzM053VE1oT0VMK0Q4M0FpbG9Md3ZoRk9VSUhOdGJBcUV6TXdmaEZPVUlITnRiQUVBb013cC8vT2tJY0ErVEFWZ1BMd1ovL09rSWNBK1RBRUFvTXdsN1dRa0lXWnhIQlZnUEx3VjdXUWtJV1p4SEJqK1lKd21pV1VVS01VUFRBMHMzTndXaVdVVUtNVVBUQXFFek13ZE1BVVVLVkIrbkFRRU1Ld2wzM1VFSWdJdXJBMHMzTndZQTlTVUtXSnliQUtJWUt3b0E5U1VLV0p5YkEwczNOd1FrZllFSzJxcnEvS0lZS3dna2ZZRUsycXJxL0tJWUt3bHQ2U2tKNTkxWEFLSVlLd2djZllFTEhGUkhBMHMzTndWdDZTa0o1OTFYQTBzM053UWNmWUVMSEZSSEFpbG9Md3N3WVMwS0UzMjNBcUV6TXdjd1lTMEtFMzIzQUVBb013czRIVEVMeTk0akFWZ1BMd2M0SFRFTHk5NGpBRUFvTXdpZENVRUpyRU52QVZnUEx3U2RDVUVKckVOdkFZRUUyQUFBQUNwUEpQZ0FBQUFBQUFBQUFBQUFBQUEyVHlUSU5rOGsrQUFBQUFBMlR5YjROazhreUxuamh3UVlmWUVLZ1A0UEJRRUVnUndBQTR3Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBUFFBQWdEOEFBQUFBQUFBQUFBQUFBQUFBQUlBL0FBQ0FQUUFBZ0Q4QUFBQUFBQUNBUHdBQWdEMEFBQUFBQUFDQVBRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVBnQUFnRDhBQUFBK0FBQ0FQd0FBQUQ0QUFBQUFBQUFBUGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDRBQUlBL0FBQkFQZ0FBZ0Q4QUFFQStBQUFBQUFBQVFENEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBK0FBQ0FQd0FBZ0Q0QUFJQS9BQUNBUGdBQUFBQUFBSUErQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dQZ0FBZ0Q4QUFLQStBQUNBUHdBQW9ENEFBQUFBQUFDZ1BnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0Q0QUFJQS9BQURBUGdBQWdEOEFBTUErQUFBQUFBQUF3RDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFPQStBQUNBUHdBQTRENEFBSUEvQUFEZ1BnQUFBQUFBQU9BK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUHdBQWdEOEFBQUEvQUFDQVB3QUFBRDhBQUFBQUFBQUFQd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvL0R6OEFBSUEvLy84UFB3QUFnRC8vL3c4L0FBQUFBUC8vRHo4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0EvQUFDQVB3QUFJRDhBQUlBL0FBQWdQd0FBQUFBQUFDQS9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd1B3QUFnRDhBQURBL0FBQ0FQd0FBTUQ4QUFBQUFBQUF3UHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRRDhBQUlBL0FBQkFQd0FBZ0Q4QUFFQS9BQUFBQUFBQVFEOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvLzA4L0FBQ0FQLy8vVHo4QUFJQS8vLzlQUHdBQUFBRC8vMDgvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vOWZQd0FBZ0QvLy8xOC9BQUNBUC8vL1h6OEFBQUFBLy85ZlB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY0Q4QUFJQS9BQUJ3UHdBQUFBQUFBSUEvQUFDQVB3QUFnRDhBQUlBL0FBQndQd0FBZ0Q4QUFJQS9BQUFBQUFBQWNEOEFBQUFBQUFDQVB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0JCemUwQUFQWVFBQUFCQUFJQUJ3QUFBQU1BQVFBSEFBUUFBZ0FGQUFjQUJBQUFBQUlBQndBR0FBVUFCd0FIQUFZQUJBQUZBQWNBQ0FBSEFBa0FCd0FJQUFZQUJ3QUhBQW9BQ1FBTEFBY0FDZ0FJQUFrQUJ3QU1BQXNBRFFBSEFBd0FDZ0FMQUFjQURnQU5BQThBQndBT0FBd0FEUUFIQUJBQUR3QVJBQWNBRUFBT0FBOEFCd0FTQUJFQUV3QUhBQklBRUFBUkFBY0FGQUFUQUJVQUJ3QVVBQklBRXdBSEFCWUFGUUFYQUFjQUZnQVVBQlVBQndBWUFCY0FHUUFIQUJnQUZnQVhBQWNBR2dBWkFCc0FCd0FhQUJnQUdRQUhBQndBR3dBZEFBY0FIQUFhQUJzQUJ3QWVBQndBSFFBSEFCNEFId0FjQUFjQUlBQWZBQjRBQndBZ0FDRUFId0FIQUNJQUlRQWdBQWNBSWdBakFDRUFCd0FrQUNNQUlnQUhBQ1FBSlFBakFBY0FKZ0FsQUNRQUJ3QW1BQ2NBSlFBSEFDZ0FKd0FtQUFjQUtBQXBBQ2NBQndBcUFDa0FLQUFIQUNvQUt3QXBBQWNBTEFBckFDb0FCd0FzQUMwQUt3QUhBQzRBTFFBc0FBY0FMZ0F2QUMwQUJ3QXdBQzhBTGdBSEFEQUFNUUF2QUFjQU1nQXhBREFBQndBeUFETUFNUUFIQURRQU13QXlBQWNBTkFBMUFETUFCd0EyQURVQU5BQUhBRFlBTndBMUFBY0FPQUEzQURZQUJ3QTRBRGtBTndBSEFEb0FPUUE0QUFjQU9nQTdBRGtBQndBOEFEc0FPZ0FIQUR3QVBRQTdBQWNBUGdBOUFEd0FCd0ErQUQ4QVBRQUhBRUFBUHdBK0FBY0FRQUJCQUQ4QUJ3QkNBRUVBUUFBSEFFSUFRd0JCQUFjQVJBQkRBRUlBQndCRUFFVUFRd0FIQUVZQVJRQkVBQWNBUmdCSEFFVUFCd0JJQUVjQVJnQUhBRWdBU1FCSEFBY0FTZ0JKQUVnQUJ3QktBRXNBU1FBSEFFd0FTd0JLQUFjQVRBQk5BRXNBQndCT0FFMEFUQUFIQUU0QVR3Qk5BQWNBVUFCT0FGRUFCd0JRQUU4QVRnQUhBRklBVVFCVEFBY0FVZ0JRQUZFQUJ3QlVBRk1BVlFBSEFGUUFVZ0JUQUFjQVZnQlZBRmNBQndCV0FGUUFWUUFIQUZnQVZ3QlpBQWNBV0FCV0FGY0FCd0JhQUZrQVd3QUhBRm9BV0FCWkFBY0FYQUJiQUYwQUJ3QmNBRm9BV3dBSEFGNEFYUUJmQUFjQVhnQmNBRjBBQndCZ0FGOEFZUUFIQUdBQVhnQmZBQWNBWWdCaEFHTUFCd0JpQUdBQVlRQUhBQU1BWXdBQkFBY0FBd0JpQUdNQUJ3QmtBQU1BQUFBSEFHUUFaUUFEQUFjQVpnQUFBQVFBQndCbUFHUUFBQUFIQUdjQUJBQUdBQWNBWndCbUFBUUFCd0JvQUFZQUNBQUhBR2dBWndBR0FBY0FhUUFJQUFvQUJ3QnBBR2dBQ0FBSEFHb0FDZ0FNQUFjQWFnQnBBQW9BQndCckFBd0FEZ0FIQUdzQWFnQU1BQWNBYkFBT0FCQUFCd0JzQUdzQURnQUhBRzBBRUFBU0FBY0FiUUJzQUJBQUJ3QnVBQklBRkFBSEFHNEFiUUFTQUFjQWJ3QVVBQllBQndCdkFHNEFGQUFIQUhBQUZnQVlBQWNBY0FCdkFCWUFCd0J4QUJnQUdnQUhBSEVBY0FBWUFBY0FjZ0FhQUJ3QUJ3QnlBSEVBR2dBSEFCOEFjZ0FjQUFjQUh3QnpBSElBQndBaEFITUFId0FIQUNFQWRBQnpBQWNBSXdCMEFDRUFCd0FqQUhVQWRBQUhBQ1VBZFFBakFBY0FKUUIyQUhVQUJ3QW5BSFlBSlFBSEFDY0Fkd0IyQUFjQUtRQjNBQ2NBQndBcEFIZ0Fkd0FIQUNzQWVBQXBBQWNBS3dCNUFIZ0FCd0F0QUhrQUt3QUhBQzBBZWdCNUFBY0FMd0I2QUMwQUJ3QXZBSHNBZWdBSEFERUFld0F2QUFjQU1RQjhBSHNBQndBekFId0FNUUFIQURNQWZRQjhBQWNBTlFCOUFETUFCd0ExQUg0QWZRQUhBRGNBZmdBMUFBY0FOd0IvQUg0QUJ3QTVBSDhBTndBSEFEa0FnQUIvQUFjQU93Q0FBRGtBQndBN0FJRUFnQUFIQUQwQWdRQTdBQWNBUFFDQ0FJRUFCd0EvQUlJQVBRQUhBRDhBZ3dDQ0FBY0FRUUNEQUQ4QUJ3QkJBSVFBZ3dBSEFFTUFoQUJCQUFjQVF3Q0ZBSVFBQndCRkFJVUFRd0FIQUVVQWhnQ0ZBQWNBUndDR0FFVUFCd0JIQUljQWhnQUhBRWtBaHdCSEFBY0FTUUNJQUljQUJ3QkxBSWdBU1FBSEFFc0FpUUNJQUFjQVRRQ0pBRXNBQndCTkFJb0FpUUFIQUU4QWlnQk5BQWNBVHdDTEFJb0FCd0NNQUU4QVVBQUhBSXdBaXdCUEFBY0FqUUJRQUZJQUJ3Q05BSXdBVUFBSEFJNEFVZ0JVQUFjQWpnQ05BRklBQndDUEFGUUFWZ0FIQUk4QWpnQlVBQWNBa0FCV0FGZ0FCd0NRQUk4QVZnQUhBSkVBV0FCYUFBY0FrUUNRQUZnQUJ3Q1NBRm9BWEFBSEFKSUFrUUJhQUFjQWt3QmNBRjRBQndDVEFKSUFYQUFIQUpRQVhnQmdBQWNBbEFDVEFGNEFCd0NWQUdBQVlnQUhBSlVBbEFCZ0FBY0FaUUJpQUFNQUJ3QmxBSlVBWWdBSEFKWUFaQUNYQUFjQWxnQmxBR1FBQndDWUFHUUFaZ0FIQUpnQWx3QmtBQWNBbVFCbUFHY0FCd0NaQUpnQVpnQUhBSm9BWndCb0FBY0FtZ0NaQUdjQUJ3Q2JBR2dBYVFBSEFKc0FtZ0JvQUFjQW5BQnBBR29BQndDY0FKc0FhUUFIQUowQWFnQnJBQWNBblFDY0FHb0FCd0NlQUdzQWJBQUhBSjRBblFCckFBY0Fud0JzQUcwQUJ3Q2ZBSjRBYkFBSEFLQUFiUUJ1QUFjQW9BQ2ZBRzBBQndDaEFHNEFid0FIQUtFQW9BQnVBQWNBb2dCdkFIQUFCd0NpQUtFQWJ3QUhBS01BY0FCeEFBY0Fvd0NpQUhBQUJ3Q2tBSEVBY2dBSEFLUUFvd0J4QUFjQWN3Q2tBSElBQndCekFLVUFwQUFIQUhRQXBRQnpBQWNBZEFDbUFLVUFCd0IxQUtZQWRBQUhBSFVBcHdDbUFBY0FkZ0NuQUhVQUJ3QjJBS2dBcHdBSEFIY0FxQUIyQUFjQWR3Q3BBS2dBQndCNEFLa0Fkd0FIQUhnQXFnQ3BBQWNBZVFDcUFIZ0FCd0I1QUtzQXFnQUhBSG9BcXdCNUFBY0FlZ0NzQUtzQUJ3QjdBS3dBZWdBSEFIc0FyUUNzQUFjQWZBQ3RBSHNBQndCOEFLNEFyUUFIQUgwQXJnQjhBQWNBZlFDdkFLNEFCd0IrQUs4QWZRQUhBSDRBc0FDdkFBY0Fmd0N3QUg0QUJ3Qi9BTEVBc0FBSEFIOEFzZ0N4QUFjQWZ3Q0FBTElBQndDQUFMTUFzZ0FIQUlBQWdRQ3pBQWNBZ1FDMEFMTUFCd0NCQUlJQXRBQUhBSUlBdFFDMEFBY0FnZ0NEQUxVQUJ3Q0RBTFlBdFFBSEFJTUFoQUMyQUFjQWhBQzNBTFlBQndDRUFJVUF0d0FIQUlVQXVBQzNBQWNBaFFDR0FMZ0FCd0NHQUxrQXVBQUhBSVlBaHdDNUFBY0Fod0M2QUxrQUJ3Q0hBSWdBdWdBSEFJZ0F1d0M2QUFjQWlBQ0pBTHNBQndDSkFMd0F1d0FIQUlrQWlnQzhBQWNBaWdDOUFMd0FCd0NLQUlzQXZRQUhBTDBBakFDK0FBY0F2UUNMQUl3QUJ3QytBSTBBdndBSEFMNEFqQUNOQUFjQXZ3Q09BTUFBQndDL0FJMEFqZ0FIQU1BQWp3REJBQWNBd0FDT0FJOEFCd0RCQUpBQXdnQUhBTUVBandDUUFBY0F3Z0NSQU1NQUJ3RENBSkFBa1FBSEFNTUFrZ0RFQUFjQXd3Q1JBSklBQndERUFKTUF4UUFIQU1RQWtnQ1RBQWNBeFFDVUFNWUFCd0RGQUpNQWxBQUhBTVlBbFFESEFBY0F4Z0NVQUpVQUJ3REhBR1VBbGdBSEFNY0FsUUJsQUFjQXlBREVBTVVBQndESUFNa0F4QUFIQU1ZQXlBREZBQWNBeGdES0FNZ0FCd0RIQU1vQXhnQUhBTWNBeXdES0FBY0FtQURNQUpjQUJ3Q1lBTTBBekFBSEFKa0F6UUNZQUFjQW1RRE9BTTBBQndDYUFNNEFtUUFIQUpvQXp3RE9BQWNBblFEUUFKd0FCd0NkQU5FQTBBQUhBSjRBMFFDZEFBY0FuZ0RTQU5FQUJ3Q2ZBTklBbmdBSEFKOEEwd0RTQUFjQW9RRFVBTlVBQndDaEFLSUExQUFIQUtJQTFnRFVBQWNBb2dDakFOWUFCd0NqQU5jQTFnQUhBS01BcEFEWEFBY0FwZ0RZQU5rQUJ3Q21BS2NBMkFBSEFLY0EyZ0RZQUFjQXB3Q29BTm9BQndDb0FOc0EyZ0FIQUtnQXFRRGJBQWNBcXdEY0FOMEFCd0NyQUt3QTNBQUhBTndBclFEZUFBY0EzQUNzQUswQUJ3RGVBSzRBM3dBSEFONEFyUUN1QUFjQTRBQ3hBT0VBQndEZ0FMQUFzUUFIQU9FQXNnRGlBQWNBNFFDeEFMSUFCd0RpQUxNQTR3QUhBT0lBc2dDekFBY0E1QUMyQU9VQUJ3RGtBTFVBdGdBSEFPVUF0d0RtQUFjQTVRQzJBTGNBQndEbUFMZ0E1d0FIQU9ZQXR3QzRBQWNBNkFDNkFMc0FCd0RvQU9rQXVnQUhBT29BdXdDOEFBY0E2Z0RvQUxzQUJ3RHJBTHdBdlFBSEFPc0E2Z0M4QUFjQTdBQy9BTUFBQndEc0FPMEF2d0FIQU80QXdBREJBQWNBN2dEc0FNQUFCd0R2QU1FQXdnQUhBTzhBN2dEQkFBY0E4QURKQU1nQUJ3RHdBUEVBeVFBSEFNb0E4QURJQUFjQXlnRHlBUEFBQndETEFQSUF5Z0FIQU1zQTh3RHlBQWNBelFEMEFNd0FCd0ROQVBVQTlBQUhBTTRBOVFETkFBY0F6Z0QyQVBVQUJ3RFBBUFlBemdBSEFNOEE5d0QyQUFjQTBRRDRBTkFBQndEUkFQa0ErQUFIQU5JQStRRFJBQWNBMGdENkFQa0FCd0RUQVBvQTBnQUhBTk1BK3dENkFBY0ExUUQ4QVAwQUJ3RFZBTlFBL0FBSEFOUUEvZ0Q4QUFjQTFBRFdBUDRBQndEV0FQOEEvZ0FIQU5ZQTF3RC9BQWNBMlFBQUFRRUJCd0RaQU5nQUFBRUhBTmdBQWdFQUFRY0EyQURhQUFJQkJ3RGFBQU1CQWdFSEFOb0Eyd0FEQVFjQTNRQUVBUVVCQndEZEFOd0FCQUVIQUFRQjNnQUdBUWNBQkFIY0FONEFCd0FHQWQ4QUJ3RUhBQVlCM2dEZkFBY0FDQUhoQUFrQkJ3QUlBZUFBNFFBSEFBa0I0Z0FLQVFjQUNRSGhBT0lBQndBS0FlTUFDd0VIQUFvQjRnRGpBQWNBREFIbEFBMEJCd0FNQWVRQTVRQUhBQTBCNWdBT0FRY0FEUUhsQU9ZQUJ3QU9BZWNBRHdFSEFBNEI1Z0RuQUFjQUVBSHBBT2dBQndBUUFSRUI2UUFIQUJJQjZBRHFBQWNBRWdFUUFlZ0FCd0FUQWVvQTZ3QUhBQk1CRWdIcUFBY0FGQUh0QU93QUJ3QVVBUlVCN1FBSEFCWUI3QUR1QUFjQUZnRVVBZXdBQndBWEFlNEE3d0FIQUJjQkZnSHVBQWNBR0FFWkFmRUFCd0FZQVJvQkdRRUhBQnNCOFFEd0FBY0FHd0VZQWZFQUJ3RHlBQnNCOEFBSEFQSUFIQUViQVFjQTh3QWNBZklBQndEekFCMEJIQUVIQUI0QkhRSHpBQWNBSGdFZkFSMEJCd0QwQUI4QkhnRUhBUFFBSUFFZkFRY0E5UUFnQWZRQUJ3RDFBQ0VCSUFFSEFQWUFJUUgxQUFjQTlnQWlBU0VCQndEM0FDSUI5Z0FIQVBjQUl3RWlBUWNBSkFFakFmY0FCd0FrQVNVQkl3RUhBUGdBSlFFa0FRY0ErQUFtQVNVQkJ3RDVBQ1lCK0FBSEFQa0FKd0VtQVFjQStnQW5BZmtBQndENkFDZ0JKd0VIQVBzQUtBSDZBQWNBK3dBcEFTZ0JCd0FxQVNrQit3QUhBQ29CS3dFcEFRY0FLZ0VzQVNzQkJ3QXFBZjBBTEFFSEFQMEFMUUVzQVFjQS9RRDhBQzBCQndEOEFDNEJMUUVIQVB3QS9nQXVBUWNBL2dBdkFTNEJCd0QrQVA4QUx3RUhBUDhBTUFFdkFRY0Evd0F4QVRBQkJ3QXhBVElCTUFFSEFERUJBUUV5QVFjQUFRRXpBVElCQndBQkFRQUJNd0VIQUFBQk5BRXpBUWNBQUFFQ0FUUUJCd0FDQVRVQk5BRUhBQUlCQXdFMUFRY0FBd0UyQVRVQkJ3QURBVGNCTmdFSEFEY0JPQUUyQVFjQU53RUZBVGdCQndBRkFUa0JPQUVIQUFVQkJBRTVBUWNBT1FFR0FUb0JCd0E1QVFRQkJnRUhBRG9CQndFN0FRY0FPZ0VHQVFjQkJ3QTdBVHdCUFFFSEFEc0JCd0U4QVFjQVBRRUlBVDRCQndBOUFUd0JDQUVIQUQ0QkNRRS9BUWNBUGdFSUFRa0JCd0EvQVFvQlFBRUhBRDhCQ1FFS0FRY0FRQUVMQVVFQkJ3QkFBUW9CQ3dFSEFFRUJRZ0ZEQVFjQVFRRUxBVUlCQndCREFRd0JSQUVIQUVNQlFnRU1BUWNBUkFFTkFVVUJCd0JFQVF3QkRRRUhBRVVCRGdGR0FRY0FSUUVOQVE0QkJ3QkdBUThCUndFSEFFWUJEZ0VQQVFjQVNBRVBBVWtCQndCSUFVY0JEd0VIQUVvQlNRRVJBUWNBU2dGSUFVa0JCd0JMQVJFQkVBRUhBRXNCU2dFUkFRY0FUQUVRQVJJQkJ3Qk1BVXNCRUFFSEFFMEJFZ0VUQVFjQVRRRk1BUklCQndCT0FSTUJUd0VIQUU0QlRRRVRBUWNBVUFGUEFSVUJCd0JRQVU0QlR3RUhBRkVCRlFFVUFRY0FVUUZRQVJVQkJ3QlNBUlFCRmdFSEFGSUJVUUVVQVFjQVV3RVdBUmNCQndCVEFWSUJGZ0VIQUJvQkZ3RVpBUWNBR2dGVEFSY0JCd0JVQVJnQlZRRUhBRlFCR2dFWUFRY0FWUUViQVZZQkJ3QlZBUmdCR3dFSEFCc0JWd0ZXQVFjQUd3RWNBVmNCQndBY0FWZ0JWd0VIQUJ3QkhRRllBUWNBSFFGWkFWZ0JCd0FkQVI4QldRRUhBQjhCV2dGWkFRY0FId0VnQVZvQkJ3QWdBVnNCV2dFSEFDQUJJUUZiQVFjQUlRRmNBVnNCQndBaEFTSUJYQUVIQUNJQlhRRmNBUWNBSWdFakFWMEJCd0FqQVY0QlhRRUhBQ01CSlFGZUFRY0FKUUZmQVY0QkJ3QWxBU1lCWHdFSEFDWUJZQUZmQVFjQUpnRW5BV0FCQndBbkFXRUJZQUVIQUNjQktBRmhBUWNBS0FGaUFXRUJCd0FvQVNrQllnRUhBQ2tCWXdGaUFRY0FLUUVyQVdNQkJ3QXNBV01CS3dFSEFDd0JaQUZqQVFjQUxRRmtBU3dCQndBdEFXVUJaQUVIQUM0QlpRRXRBUWNBTGdGbUFXVUJCd0F2QVdZQkxnRUhBQzhCWndGbUFRY0FNQUZuQVM4QkJ3QXdBV2dCWndFSEFESUJhQUV3QVFjQU1nRnBBV2dCQndBekFXa0JNZ0VIQURNQmFnRnBBUWNBTkFGcUFUTUJCd0EwQVdzQmFnRUhBRFVCYXdFMEFRY0FOUUZzQVdzQkJ3QTJBV3dCTlFFSEFEWUJiUUZzQVFjQU9BRnRBVFlCQndBNEFXNEJiUUVIQURrQmJnRTRBUWNBT1FGdkFXNEJCd0J3QVRrQk9nRUhBSEFCYndFNUFRY0FjUUU2QVRzQkJ3QnhBWEFCT2dFSEFISUJPd0U5QVFjQWNnRnhBVHNCQndCekFUMEJQZ0VIQUhNQmNnRTlBUWNBZEFFK0FUOEJCd0IwQVhNQlBnRUhBSFVCUHdGQUFRY0FkUUYwQVQ4QkJ3QjJBVUFCUVFFSEFIWUJkUUZBQVFjQWR3RkJBVU1CQndCM0FYWUJRUUVIQUhnQlF3RkVBUWNBZUFGM0FVTUJCd0I1QVVRQlJRRUhBSGtCZUFGRUFRY0FlZ0ZGQVVZQkJ3QjZBWGtCUlFFSEFIc0JSZ0ZIQVFjQWV3RjZBVVlCQndCN0FVZ0JmQUVIQUhzQlJ3RklBUWNBZkFGS0FYMEJCd0I4QVVnQlNnRUhBSDBCU3dGK0FRY0FmUUZLQVVzQkJ3QitBVXdCZndFSEFINEJTd0ZNQVFjQWZ3Rk5BWUFCQndCL0FVd0JUUUVIQUlBQlRnR0JBUWNBZ0FGTkFVNEJCd0NCQVZBQmdnRUhBSUVCVGdGUUFRY0FnZ0ZSQVlNQkJ3Q0NBVkFCVVFFSEFJTUJVZ0dFQVFjQWd3RlJBVklCQndDRUFWTUJoUUVIQUlRQlVnRlRBUWNBaFFFYUFWUUJCd0NGQVZNQkdnRUhBSVlCVlFHSEFRY0FoZ0ZVQVZVQkJ3Q0hBVllCaUFFSEFJY0JWUUZXQVFjQVZnR0pBWWdCQndCV0FWY0JpUUVIQUZjQmlnR0pBUWNBVndGWUFZb0JCd0JZQVlzQmlnRUhBRmdCV1FHTEFRY0FXUUdNQVlzQkJ3QlpBVm9CakFFSEFGb0JqUUdNQVFjQVdnRmJBWTBCQndCYkFZNEJqUUVIQUZzQlhBR09BUWNBWEFHUEFZNEJCd0JjQVYwQmp3RUhBRjBCa0FHUEFRY0FYUUZlQVpBQkJ3QmVBWkVCa0FFSEFGNEJYd0dSQVFjQVh3R1NBWkVCQndCZkFXQUJrZ0VIQUdBQmt3R1NBUWNBWUFGaEFaTUJCd0JoQVpRQmt3RUhBR0VCWWdHVUFRY0FZZ0dWQVpRQkJ3QmlBV01CbFFFSEFHUUJsUUZqQVFjQVpBR1dBWlVCQndCbEFaWUJaQUVIQUdVQmx3R1dBUWNBWmdHWEFXVUJCd0JtQVpnQmx3RUhBR2NCbUFGbUFRY0Fad0daQVpnQkJ3Qm9BWmtCWndFSEFHZ0JtZ0daQVFjQWFRR2FBV2dCQndCcEFac0JtZ0VIQUdvQm13RnBBUWNBYWdHY0Fac0JCd0JyQVp3QmFnRUhBR3NCblFHY0FRY0FiQUdkQVdzQkJ3QnNBWjRCblFFSEFHMEJuZ0ZzQVFjQWJRR2ZBWjRCQndCdUFaOEJiUUVIQUc0Qm9BR2ZBUWNBYndHZ0FXNEJCd0J2QWFFQm9BRUhBS0lCYndGd0FRY0FvZ0doQVc4QkJ3Q2pBWEFCY1FFSEFLTUJvZ0Z3QVFjQXBBRnhBWElCQndDa0FhTUJjUUVIQUtVQmNnRnpBUWNBcFFHa0FYSUJCd0NtQVhNQmRBRUhBS1lCcFFGekFRY0Fwd0YwQVhVQkJ3Q25BYVlCZEFFSEFLZ0JkUUYyQVFjQXFBR25BWFVCQndDcEFYWUJkd0VIQUtrQnFBRjJBUWNBcWdGM0FYZ0JCd0NxQWFrQmR3RUhBS3NCZUFGNUFRY0Fxd0dxQVhnQkJ3Q3NBWGtCZWdFSEFLd0Jxd0Y1QVFjQXJRRjZBWHNCQndDdEFhd0JlZ0VIQUswQmZBR3VBUWNBclFGN0FYd0JCd0N1QVgwQnJ3RUhBSzRCZkFGOUFRY0Fyd0YrQWJBQkJ3Q3ZBWDBCZmdFSEFMQUJmd0d4QVFjQXNBRitBWDhCQndDeEFZQUJzZ0VIQUxFQmZ3R0FBUWNBc2dHQkFiTUJCd0N5QVlBQmdRRUhBTE1CZ2dHMEFRY0Fzd0dCQVlJQkJ3QzBBWU1CdFFFSEFMUUJnZ0dEQVFjQXRRR0VBYllCQndDMUFZTUJoQUVIQUxZQmhRRzNBUWNBdGdHRUFZVUJCd0MzQVZRQmhnRUhBTGNCaFFGVUFRY0F1QUdIQWJrQkJ3QzRBWVlCaHdFSEFMa0JpQUc2QVFjQXVRR0hBWWdCQndDSUFic0J1Z0VIQUlnQmlRRzdBUWNBaVFHOEFic0JCd0NKQVlvQnZBRUhBSW9CdlFHOEFRY0FpZ0dMQWIwQkJ3Q0xBYjRCdlFFSEFJc0JqQUcrQVFjQWpBRy9BYjRCQndDTUFZMEJ2d0VIQUkwQndBRy9BUWNBalFHT0FjQUJCd0NPQWNFQndBRUhBSTRCandIQkFRY0Fqd0hDQWNFQkJ3Q1BBWkFCd2dFSEFKQUJ3d0hDQVFjQWtBR1JBY01CQndDUkFjUUJ3d0VIQUpFQmtnSEVBUWNBa2dIRkFjUUJCd0NTQVpNQnhRRUhBSk1CeGdIRkFRY0Frd0dVQWNZQkJ3Q1VBY2NCeGdFSEFKUUJsUUhIQVFjQWxnSEhBWlVCQndDV0FjZ0J4d0VIQUpjQnlBR1dBUWNBbHdISkFjZ0JCd0NZQWNrQmx3RUhBSmdCeWdISkFRY0FtUUhLQVpnQkJ3Q1pBY3NCeWdFSEFKb0J5d0daQVFjQW1nSE1BY3NCQndDYkFjd0JtZ0VIQUpzQnpRSE1BUWNBbkFITkFac0JCd0NjQWM0QnpRRUhBSjBCemdHY0FRY0FuUUhQQWM0QkJ3Q2VBYzhCblFFSEFKNEIwQUhQQVFjQW53SFFBWjRCQndDZkFkRUIwQUVIQUtBQjBRR2ZBUWNBb0FIU0FkRUJCd0NoQWRJQm9BRUhBS0VCMHdIU0FRY0ExQUdoQWFJQkJ3RFVBZE1Cb1FFSEFOVUJvZ0dqQVFjQTFRSFVBYUlCQndEV0FhTUJwQUVIQU5ZQjFRR2pBUWNBMXdHa0FhVUJCd0RYQWRZQnBBRUhBTmdCcFFHbUFRY0EyQUhYQWFVQkJ3RFpBYVlCcHdFSEFOa0IyQUdtQVFjQTJnR25BYWdCQndEYUFka0Jwd0VIQU5zQnFBR3BBUWNBMndIYUFhZ0JCd0RjQWFrQnFnRUhBTndCMndHcEFRY0EzUUdxQWFzQkJ3RGRBZHdCcWdFSEFONEJxd0dzQVFjQTNnSGRBYXNCQndEZkFhd0JyUUVIQU44QjNnR3NBUWNBM3dHdUFlQUJCd0RmQWEwQnJnRUhBT0FCcndIaEFRY0E0QUd1QWE4QkJ3RGhBYkFCNGdFSEFPRUJyd0d3QVFjQTRnR3hBZU1CQndEaUFiQUJzUUVIQU9NQnNnSGtBUWNBNHdHeEFiSUJCd0RrQWJNQjVRRUhBT1FCc2dHekFRY0E1UUcwQWVZQkJ3RGxBYk1CdEFFSEFPWUJ0UUhuQVFjQTVnRzBBYlVCQndEbkFiWUI2QUVIQU9jQnRRRzJBUWNBNkFHM0Fla0JCd0RvQWJZQnR3RUhBT2tCaGdHNEFRY0E2UUczQVlZQkJ3RHFBYmdCdVFFSEFPb0I2d0c0QVFjQTdBRzVBYm9CQndEc0Flb0J1UUVIQUxzQjdBRzZBUWNBdXdIdEFld0JCd0M4QWUwQnV3RUhBTHdCN2dIdEFRY0F2UUh1QWJ3QkJ3QzlBZThCN2dFSEFMNEI3d0c5QVFjQXZnSHdBZThCQndDL0FmQUJ2Z0VIQUw4QjhRSHdBUWNBd0FIeEFiOEJCd0RBQWZJQjhRRUhBTUVCOGdIQUFRY0F3UUh6QWZJQkJ3RENBZk1Cd1FFSEFNSUI5QUh6QVFjQXd3SDBBY0lCQndEREFmVUI5QUVIQU1RQjlRSERBUWNBeEFIMkFmVUJCd0RGQWZZQnhBRUhBTVVCOXdIMkFRY0F4Z0gzQWNVQkJ3REdBZmdCOXdFSEFNY0IrQUhHQVFjQXh3SDVBZmdCQndESUFma0J4d0VIQU1nQitnSDVBUWNBeVFINkFjZ0JCd0RKQWZzQitnRUhBTW9CK3dISkFRY0F5Z0g4QWZzQkJ3RExBZndCeWdFSEFNc0IvUUg4QVFjQXpBSDlBY3NCQndETUFmNEIvUUVIQU0wQi9nSE1BUWNBelFIL0FmNEJCd0RPQWY4QnpRRUhBTTRCQUFML0FRY0F6d0VBQXM0QkJ3RFBBUUVDQUFJSEFOQUJBUUxQQVFjQTBBRUNBZ0VDQndEUkFRSUMwQUVIQU5FQkF3SUNBZ2NBMGdFREF0RUJCd0RTQVFRQ0F3SUhBTk1CQkFMU0FRY0Ewd0VGQWdRQ0J3QUdBdE1CMUFFSEFBWUNCUUxUQVFjQUJ3TFVBZFVCQndBSEFnWUMxQUVIQUFnQzFRSFdBUWNBQ0FJSEF0VUJCd0FKQXRZQjF3RUhBQWtDQ0FMV0FRY0FDZ0xYQWRnQkJ3QUtBZ2tDMXdFSEFBc0MyQUhaQVFjQUN3SUtBdGdCQndBTUF0a0IyZ0VIQUF3Q0N3TFpBUWNBRFFMYUFkc0JCd0FOQWd3QzJnRUhBQTRDMndIY0FRY0FEZ0lOQXRzQkJ3QVBBdHdCM1FFSEFBOENEZ0xjQVFjQUVBTGRBZDRCQndBUUFnOEMzUUVIQUJFQzNnSGZBUWNBRVFJUUF0NEJCd0FTQXQ4QjRBRUhBQklDRVFMZkFRY0FFd0xnQWVFQkJ3QVRBaElDNEFFSEFCUUM0UUhpQVFjQUZBSVRBdUVCQndBVkF1SUI0d0VIQUJVQ0ZBTGlBUWNBRmdMakFlUUJCd0FXQWhVQzR3RUhBQmNDNUFIbEFRY0FGd0lXQXVRQkJ3QVlBdVVCNWdFSEFCZ0NGd0xsQVFjQUdRTG1BZWNCQndBWkFoZ0M1Z0VIQUJvQzV3SG9BUWNBR2dJWkF1Y0JCd0FiQXVnQjZRRUhBQnNDR2dMb0FRY0E2d0hwQWJnQkJ3RHJBUnNDNlFFSEFNUUFIQUlkQWdjQXhBREpBQndDQndBZUFzUUFIUUlIQUI0Q3d3REVBQWNBeHdBZkFpQUNCd0RIQUpZQUh3SUhBQ0VDeHdBZ0FnY0FJUUxMQU1jQUJ3Q1dBQ0lDSHdJSEFKWUFsd0FpQWdjQWx3QWpBaUlDQndDWEFNd0FJd0lIQUpvQUpBSWxBZ2NBbWdDYkFDUUNCd0FtQXBvQUpRSUhBQ1lDendDYUFBY0Ftd0FuQWlRQ0J3Q2JBSndBSndJSEFKd0FLQUluQWdjQW5BRFFBQ2dDQndDZkFDa0NLZ0lIQUo4QW9BQXBBZ2NBS3dLZkFDb0NCd0FyQXRNQW53QUhBS0FBTEFJcEFnY0FvQUNoQUN3Q0J3QXNBdFVBTFFJSEFDd0NvUURWQUFjQTF3QXVBaThDQndEWEFLUUFMZ0lIQUtRQU1BSXVBZ2NBcEFDbEFEQUNCd0NsQURFQ01BSUhBS1VBcGdBeEFnY0FNUUxaQURJQ0J3QXhBcVlBMlFBSEFOc0FNd0kwQWdjQTJ3Q3BBRE1DQndDcEFEVUNNd0lIQUtrQXFnQTFBZ2NBcWdBMkFqVUNCd0NxQUtzQU5nSUhBRFlDM1FBM0FnY0FOZ0tyQU4wQUJ3RGZBRGdDT1FJSEFOOEFyZ0E0QWdjQU9BS3ZBRG9DQndBNEFxNEFyd0FIQURvQ3NBQTdBZ2NBT2dLdkFMQUFCd0E3QXVBQVBBSUhBRHNDc0FEZ0FBY0E0d0E5QWo0Q0J3RGpBTE1BUFFJSEFEMEN0QUEvQWdjQVBRS3pBTFFBQndBL0FyVUFRQUlIQUQ4Q3RBQzFBQWNBUUFMa0FFRUNCd0JBQXJVQTVBQUhBT2NBUWdKREFnY0E1d0M0QUVJQ0J3QkNBcmtBUkFJSEFFSUN1QUM1QUFjQXVnQkZBa1lDQndDNkFPa0FSUUlIQUVRQ3VnQkdBZ2NBUkFLNUFMb0FCd0JIQXIwQVNBSUhBRWNDNndDOUFBY0FTQUsrQUVrQ0J3QklBcjBBdmdBSEFMOEFTZ0pMQWdjQXZ3RHRBRW9DQndCSkFyOEFTd0lIQUVrQ3ZnQy9BQWNBVEFMQ0FFMENCd0JNQXU4QXdnQUhBRTBDd3dBZUFnY0FUUUxDQU1NQUJ3REpBRTRDSEFJSEFNa0E4UUJPQWdjQThRQlBBazRDQndEeEFCa0JUd0lIQUZBQzh3QlJBZ2NBVUFJZUFmTUFCd0JSQXNzQUlRSUhBRkVDOHdETEFBY0F6QUJTQWlNQ0J3RE1BUFFBVWdJSEFGSUNIZ0ZRQWdjQVVnTDBBQjRCQndCVEF2Y0FWQUlIQUZNQ0pBSDNBQWNBVkFMUEFDWUNCd0JVQXZjQXp3QUhBTkFBVlFJb0FnY0EwQUQ0QUZVQ0J3QlZBaVFCVXdJSEFGVUMrQUFrQVFjQVZnTDdBRmNDQndCV0Fpb0Ird0FIQUZjQzB3QXJBZ2NBVndMN0FOTUFCd0F0QXYwQVdBSUhBQzBDMVFEOUFBY0FXQUlxQVZZQ0J3QllBdjBBS2dFSEFQOEFMd0paQWdjQS93RFhBQzhDQndCYUF2OEFXUUlIQUZvQ01RSC9BQWNBTWdJQkFWc0NCd0F5QXRrQUFRRUhBRnNDTVFGYUFnY0FXd0lCQVRFQkJ3QURBVFFDWEFJSEFBTUIyd0EwQWdjQVhRSURBVndDQndCZEFqY0JBd0VIQURjQ0JRRmVBZ2NBTndMZEFBVUJCd0JlQWpjQlhRSUhBRjRDQlFFM0FRY0FQQUZmQW1BQ0J3QThBUWNCWHdJSEFBY0JPUUpmQWdjQUJ3SGZBRGtDQndBSUFXQUNZUUlIQUFnQlBBRmdBZ2NBUEFJSUFXRUNCd0E4QXVBQUNBRUhBRUlCWWdKakFnY0FRZ0VMQVdJQ0J3QUxBVDRDWWdJSEFBc0I0d0ErQWdjQURBRmpBbVFDQndBTUFVSUJZd0lIQUVFQ0RBRmtBZ2NBUVFMa0FBd0JCd0JKQVdVQ1pnSUhBRWtCRHdGbEFnY0FEd0ZEQW1VQ0J3QVBBZWNBUXdJSEFPa0Fad0pGQWdjQTZRQVJBV2NDQndBUkFXWUNad0lIQUJFQlNRRm1BZ2NBVHdGb0Fta0NCd0JQQVJNQmFBSUhBR2dDNndCSEFnY0FhQUlUQWVzQUJ3RHRBR29DU2dJSEFPMEFGUUZxQWdjQUZRRnBBbW9DQndBVkFVOEJhUUlIQUJrQmF3SlBBZ2NBR1FFWEFXc0NCd0JyQXU4QVRBSUhBR3NDRndIdkFBY0FiQUp0QW00Q0J3QnNBbThDYlFJSEFIQUNjUUp5QWdjQWNBSnpBbkVDQndCMEFuVUNkZ0lIQUhRQ2R3SjFBZ2NBZUFKNUFub0NCd0I0QW5zQ2VRSUhBSGNDZkFKMUFnY0Fkd0o5QW53Q0J3QitBbnNDZUFJSEFINENmd0o3QWdjQWdBS0JBb0lDQndDQUFvTUNnUUlIQUlRQ2hRS0dBZ2NBaEFLSEFvVUNCd0NEQW9nQ2dRSUhBSU1DaVFLSUFnY0FpZ0tIQW9RQ0J3Q0tBb3NDaHdJSEFJd0NqUUtPQWdjQWpBS1BBbzBDQndDUUFwRUNrZ0lIQUpBQ2t3S1JBZ2NBbEFLT0FwVUNCd0NVQW93Q2pnSUhBSklDbGdLWEFnY0FrZ0tSQXBZQ0J3Q1lBcGtDbWdJSEFKZ0Ntd0taQWdjQW5BS2RBcDRDQndDY0FwOENuUUlIQUtBQ21nS2hBZ2NBb0FLWUFwb0NCd0NlQXFJQ293SUhBSjRDblFLaUFnY0FwQUtsQXFZQ0J3Q2tBcWNDcFFJSEFLZ0NxUUtxQWdjQXFBS3JBcWtDQndDc0FxWUNyUUlIQUt3Q3BBS21BZ2NBcWdLdUFxOENCd0NxQXFrQ3JnSUhBTEFDc1FLeUFnY0FzQUt6QXJFQ0J3QzBBclVDdGdJSEFMUUN0d0sxQWdjQXVBS3lBcmtDQndDNEFyQUNzZ0lIQUxZQ3VnSzdBZ2NBdGdLMUFyb0NCd0M4QXIwQ3ZnSUhBTHdDdndLOUFnY0F3QUxCQXNJQ0J3REFBc01Dd1FJSEFNUUN2Z0xGQWdjQXhBSzhBcjRDQndEQ0FzWUN4d0lIQU1JQ3dRTEdBZ2NBeUFMSkFzb0NCd0RJQXNzQ3lRSUhBTXdDelFMT0FnY0F6QUxQQXMwQ0J3RExBdEFDeVFJSEFNc0MwUUxRQWdjQTBnTFBBc3dDQndEU0F0TUN6d0lIQU5RQzFRTFdBZ2NBMUFMWEF0VUNCd0RZQXRrQzJnSUhBTmdDMndMWkFnY0Exd0xjQXRVQ0J3RFhBdDBDM0FJSEFONEMyd0xZQWdjQTNnTGZBdHNDQndEZ0FtNEM0UUlIQU9BQ2JBSnVBZ2NBY2dMaUF1TUNCd0J5QW5FQzRnSUhBT0lDNUFMbEFnY0E0Z0p4QXVRQ0J3QnhBdVlDNUFJSEFIRUNjd0xtQWdjQWN3TG5BdVlDQndCekFua0M1d0lIQUhrQzZBTG5BZ2NBZVFKN0F1Z0NCd0I3QXVrQzZBSUhBSHNDZndMcEFnY0Fmd0xxQXVrQ0J3Qi9Bb1VDNmdJSEFJVUM2d0xxQWdjQWhRS0hBdXNDQndDSEF1d0M2d0lIQUljQ2l3THNBZ2NBaXdMdEF1d0NCd0NMQW84QzdRSUhBTzBDakFMdUFnY0E3UUtQQW93Q0J3RHVBcFFDN3dJSEFPNENqQUtVQWdjQTd3S2JBdkFDQndEdkFwUUNtd0lIQVBBQ21BTHhBZ2NBOEFLYkFwZ0NCd0R4QXFBQzhnSUhBUEVDbUFLZ0FnY0E4Z0tuQXZNQ0J3RHlBcUFDcHdJSEFQTUNwQUwwQWdjQTh3S25BcVFDQndEMEFxd0M5UUlIQVBRQ3BBS3NBZ2NBOVFLekF2WUNCd0QxQXF3Q3N3SUhBUFlDc0FMM0FnY0E5Z0t6QXJBQ0J3RDNBcmdDK0FJSEFQY0NzQUs0QWdjQStBSy9BdmtDQndENEFyZ0N2d0lIQVBrQ3ZBTDZBZ2NBK1FLL0Fyd0NCd0Q2QXNRQyt3SUhBUG9DdkFMRUFnY0Erd0xOQXZ3Q0J3RDdBc1FDelFJSEFNMEMvUUw4QWdjQXpRTFBBdjBDQndEUEF2NEMvUUlIQU04QzB3TCtBZ2NBMHdML0F2NENCd0RUQXRrQy93SUhBTmtDQUFQL0FnY0EyUUxiQWdBREJ3RGJBZ0VEQUFNSEFOc0Mzd0lCQXdjQTN3TGxBZ0VEQndEZkF1SUM1UUlIQU9RQ0FnUGxBZ2NBNUFJREF3SURCd0RtQWdNRDVBSUhBT1lDQkFNREF3Y0E1Z0lGQXdRREJ3RG1BdWNDQlFNSEFPY0NCZ01GQXdjQTV3TG9BZ1lEQndEb0FnY0RCZ01IQU9nQzZRSUhBd2NBNlFJSUF3Y0RCd0RwQXVvQ0NBTUhBT29DQ1FNSUF3Y0E2Z0xyQWdrREJ3RHJBZ29EQ1FNSEFPc0M3QUlLQXdjQTdBSUxBd29EQndEc0F1MENDd01IQUFzRDdnSU1Bd2NBQ3dQdEF1NENCd0FNQSs4Q0RRTUhBQXdEN2dMdkFnY0FEUVB3QWc0REJ3QU5BKzhDOEFJSEFBNEQ4UUlQQXdjQURnUHdBdkVDQndBUEEvSUNFQU1IQUE4RDhRTHlBZ2NBRUFQekFoRURCd0FRQS9JQzh3SUhBQkVEOUFJU0F3Y0FFUVB6QXZRQ0J3QVRBL1FDOVFJSEFCTURFZ1AwQWdjQUZBUDFBdllDQndBVUF4TUQ5UUlIQUJVRDlnTDNBZ2NBRlFNVUEvWUNCd0FXQS9jQytBSUhBQllERlFQM0FnY0FGd1A0QXZrQ0J3QVhBeFlEK0FJSEFCZ0QrUUw2QWdjQUdBTVhBL2tDQndBWkEvb0Mrd0lIQUJrREdBUDZBZ2NBR2dQN0F2d0NCd0FhQXhrRCt3SUhBUDBDR2dQOEFnY0EvUUliQXhvREJ3RCtBaHNEL1FJSEFQNENIQU1iQXdjQS93SWNBLzRDQndEL0FoMERIQU1IQUFBREhRUC9BZ2NBQUFNZUF4MERCd0FCQXg0REFBTUhBQUVESHdNZUF3Y0E1UUlmQXdFREJ3RGxBZ0lESHdNSEFBSURJQU1oQXdjQUFnTURBeUFEQndBREF5SURJQU1IQUFNREJBTWlBd2NBQkFNakF5SURCd0FFQXdVREl3TUhBQVVESkFNakF3Y0FCUU1HQXlRREJ3QUdBeVVESkFNSEFBWURCd01sQXdjQUJ3TW1BeVVEQndBSEF3Z0RKZ01IQUFnREp3TW1Bd2NBQ0FNSkF5Y0RCd0FKQXlnREp3TUhBQWtEQ2dNb0F3Y0FDZ01wQXlnREJ3QUtBd3NES1FNSEFDa0REQU1xQXdjQUtRTUxBd3dEQndBcUF3MERLd01IQUNvRERBTU5Bd2NBS3dNT0F5d0RCd0FyQXcwRERnTUhBQ3dERHdNdEF3Y0FMQU1PQXc4REJ3QXRBeEFETGdNSEFDMEREd01RQXdjQUxnTVJBeThEQndBdUF4QURFUU1IQUM4REVnTXdBd2NBTHdNUkF4SURCd0F3QXhNRE1RTUhBREFERWdNVEF3Y0FNUU1VQXpJREJ3QXhBeE1ERkFNSEFESURGUU16QXdjQU1nTVVBeFVEQndBekF4WUROQU1IQURNREZRTVdBd2NBTkFNWEF6VURCd0EwQXhZREZ3TUhBRFVER0FNMkF3Y0FOUU1YQXhnREJ3QTJBeGtETndNSEFEWURHQU1aQXdjQU53TWFBemdEQndBM0F4a0RHZ01IQUJvRE9RTTRBd2NBR2dNYkF6a0RCd0FiQXpvRE9RTUhBQnNESEFNNkF3Y0FIQU03QXpvREJ3QWNBeDBET3dNSEFCMERQQU03QXdjQUhRTWVBendEQndBZUF6MERQQU1IQUI0REh3TTlBd2NBSHdNaEF6MERCd0FmQXdJRElRTUhBQ0VEUGdNL0F3Y0FJUU1nQXo0REJ3QWdBMEFEUGdNSEFDQURJZ05BQXdjQUlnTkJBMEFEQndBaUF5TURRUU1IQUNNRFFnTkJBd2NBSXdNa0EwSURCd0FrQTBNRFFnTUhBQ1FESlFOREF3Y0FKUU5FQTBNREJ3QWxBeVlEUkFNSEFDWURSUU5FQXdjQUpnTW5BMFVEQndBbkEwWURSUU1IQUNjREtBTkdBd2NBS0FOSEEwWURCd0FvQXlrRFJ3TUhBRWNES2dOSUF3Y0FSd01wQXlvREJ3QklBeXNEU1FNSEFFZ0RLZ01yQXdjQVNRTXNBMG9EQndCSkF5c0RMQU1IQUVvRExRTkxBd2NBU2dNc0F5MERCd0JMQXk0RFRBTUhBRXNETFFNdUF3Y0FUQU12QTAwREJ3Qk1BeTRETHdNSEFFMERNQU5PQXdjQVRRTXZBekFEQndCT0F6RURUd01IQUU0RE1BTXhBd2NBVHdNeUExQURCd0JQQXpFRE1nTUhBRkFETXdOUkF3Y0FVQU15QXpNREJ3QlJBelFEVWdNSEFGRURNd00wQXdjQVVnTTFBMU1EQndCU0F6UUROUU1IQUZNRE5nTlVBd2NBVXdNMUF6WURCd0JVQXpjRFZRTUhBRlFETmdNM0F3Y0FWUU00QTFZREJ3QlZBemNET0FNSEFEZ0RWd05XQXdjQU9BTTVBMWNEQndBNUExZ0RWd01IQURrRE9nTllBd2NBT2dOWkExZ0RCd0E2QXpzRFdRTUhBRHNEV2dOWkF3Y0FPd004QTFvREJ3QThBMXNEV2dNSEFEd0RQUU5iQXdjQVBRTS9BMXNEQndBOUF5RURQd01IQUZ3RFhRTmVBd2NBWEFOZkExMERCd0JnQTE0RFlRTUhBR0FEWEFOZUF3Y0FZZ05oQTJNREJ3QmlBMkFEWVFNSEFHUURZd05sQXdjQVpBTmlBMk1EQndCbUEyVURad01IQUdZRFpBTmxBd2NBYUFObkEya0RCd0JvQTJZRFp3TUhBR29EYVFOckF3Y0FhZ05vQTJrREJ3QnNBMnNEYlFNSEFHd0RhZ05yQXdjQWJnTnNBMjBEQndCdUEyOERiQU1IQUhBRGJ3TnVBd2NBY0FOeEEyOERCd0J5QTNFRGNBTUhBSElEY3dOeEF3Y0FkQU56QTNJREJ3QjBBM1VEY3dNSEFIWURkUU4wQXdjQWRnTjNBM1VEQndCNEEzY0RkZ01IQUhnRGVRTjNBd2NBZWdONUEzZ0RCd0I2QTNzRGVRTUhBSHdEZXdONkF3Y0FmQU45QTNzREJ3QjhBMzREZlFNSEFId0Rmd04rQXdjQWZ3T0FBMzREQndCL0E0RURnQU1IQUlFRGdnT0FBd2NBZ1FPREE0SURCd0NEQTRRRGdnTUhBSU1EaFFPRUF3Y0FoUU9HQTRRREJ3Q0ZBNGNEaGdNSEFJY0RpQU9HQXdjQWh3T0pBNGdEQndDSkE0b0RpQU1IQUlrRGl3T0tBd2NBaWdPTUE0MERCd0NLQTRzRGpBTUhBSTBEamdPUEF3Y0FqUU9NQTQ0REJ3Q1BBNUFEa1FNSEFJOERqZ09RQXdjQWtRT1NBNU1EQndDUkE1QURrZ01IQUpNRGxBT1ZBd2NBa3dPU0E1UURCd0NWQTVZRGx3TUhBSlVEbEFPV0F3Y0Fsd05kQTE4REJ3Q1hBNVlEWFFNSEFKZ0RYd05jQXdjQW1BT1pBMThEQndDYUExd0RZQU1IQUpvRG1BTmNBd2NBbXdOZ0EySURCd0NiQTVvRFlBTUhBSndEWmdOb0F3Y0FuQU9kQTJZREJ3Q2VBMmdEYWdNSEFKNERuQU5vQXdjQW53TnFBMndEQndDZkE1NERhZ01IQUc4RG53TnNBd2NBYndPZ0E1OERCd0IxQTZFRGN3TUhBSFVEb2dPaEF3Y0Fkd09pQTNVREJ3QjNBNk1Eb2dNSEFIa0Rvd04zQXdjQWVRT2tBNk1EQndCN0E2UURlUU1IQUhzRHBRT2tBd2NBZmdPbUE2Y0RCd0IrQTRBRHBnTUhBSUFEcUFPbUF3Y0FnQU9DQTZnREJ3Q0NBNmtEcUFNSEFJSURoQU9wQXdjQWhBT3FBNmtEQndDRUE0WURxZ01IQUtzRGpRT3NBd2NBcXdPS0E0MERCd0NzQTQ4RHJRTUhBS3dEalFPUEF3Y0FyUU9SQTY0REJ3Q3RBNDhEa1FNSEFLNERrd092QXdjQXJnT1JBNU1EQndDd0ExOERtUU1IQUxBRGx3TmZBd2NBc1FPWkE1Z0RCd0N4QTdJRG1RTUhBTE1EbUFPYUF3Y0Fzd094QTVnREJ3QzBBNW9EbXdNSEFMUURzd09hQXdjQXRRT2JBN1lEQndDMUE3UURtd01IQUxjRHRnT2RBd2NBdHdPMUE3WURCd0M0QTUwRG5BTUhBTGdEdHdPZEF3Y0F1UU9jQTU0REJ3QzVBN2dEbkFNSEFMb0RuZ09mQXdjQXVnTzVBNTREQndDZ0E3b0Rud01IQUtBRHV3TzZBd2NBdkFPN0E2QURCd0M4QTcwRHV3TUhBS0VEdlFPOEF3Y0FvUU8rQTcwREJ3Q2lBNzREb1FNSEFLSUR2d08rQXdjQW93Ty9BNklEQndDakE4QUR2d01IQUtRRHdBT2pBd2NBcEFQQkE4QURCd0NsQThFRHBBTUhBS1VEd2dQQkF3Y0F3d1BDQTZVREJ3RERBOFFEd2dNSEFNTUR4UVBFQXdjQXd3T25BOFVEQndDbkE4WUR4UU1IQUtjRHBnUEdBd2NBcGdQSEE4WURCd0NtQTZnRHh3TUhBS2dEeUFQSEF3Y0FxQU9wQThnREJ3Q3BBOGtEeUFNSEFLa0RxZ1BKQXdjQXFnUEtBOGtEQndDcUE4c0R5Z01IQU1zRHpBUEtBd2NBeXdPckE4d0RCd0RNQTZ3RHpRTUhBTXdEcXdPc0F3Y0F6UU90QTg0REJ3RE5BNndEclFNSEFNNERyZ1BQQXdjQXpnT3RBNjREQndEUEE2OEQwQU1IQU04RHJnT3ZBd2NBMEFQUkE5SURCd0RRQTY4RDBRTUhBTklEc0FQVEF3Y0EwZ1BSQTdBREJ3RFRBNWtEc2dNSEFOTURzQU9aQXdjQTFBT3lBN0VEQndEVUE5VURzZ01IQU5ZRHNRT3pBd2NBMWdQVUE3RURCd0RYQTdNRHRBTUhBTmNEMWdPekF3Y0EyQU8wQTdVREJ3RFlBOWNEdEFNSEFOa0R0UU8zQXdjQTJRUFlBN1VEQndEYUE3Y0R1QU1IQU5vRDJRTzNBd2NBMndPNEE3a0RCd0RiQTlvRHVBTUhBTndEdVFPNkF3Y0EzQVBiQTdrREJ3QzdBOXdEdWdNSEFMc0QzUVBjQXdjQXZRUGRBN3NEQndDOUE5NEQzUU1IQUw0RDNnTzlBd2NBdmdQZkE5NERCd0MvQTk4RHZnTUhBTDhENEFQZkF3Y0F3QVBnQTc4REJ3REFBK0VENEFNSEFNRUQ0UVBBQXdjQXdRUGlBK0VEQndEQ0ErSUR3UU1IQU1JRDR3UGlBd2NBeEFQakE4SURCd0RFQStRRDR3TUhBTVFENVFQa0F3Y0F4QVBGQStVREJ3REZBK1lENVFNSEFNVUR4Z1BtQXdjQXhnUG5BK1lEQndER0E4Y0Q1d01IQU1jRDZBUG5Bd2NBeHdQSUErZ0RCd0RJQStrRDZBTUhBTWdEeVFQcEF3Y0F5UVBxQStrREJ3REpBOG9ENmdNSEFNb0Q2d1BxQXdjQXlnUE1BK3NEQndEckE4MEQ3QU1IQU9zRHpBUE5Bd2NBN0FQT0ErMERCd0RzQTgwRHpnTUhBTzBEendQdUF3Y0E3UVBPQTg4REJ3RHVBOUFEN3dNSEFPNER6d1BRQXdjQTd3UFNBL0FEQndEdkE5QUQwZ01IQVBBRDB3UHhBd2NBOEFQU0E5TURCd0R4QTdJRDFRTUhBUEVEMHdPeUF3Y0E4Z1BVQS9NREJ3RHlBOVVEMUFNSEFQTUQxZ1AwQXdjQTh3UFVBOVlEQndEMEE5Y0Q5UU1IQVBRRDFnUFhBd2NBOVFQWUEvWURCd0QxQTljRDJBTUhBUFlEMlFQM0F3Y0E5Z1BZQTlrREJ3RDNBOW9EK0FNSEFQY0QyUVBhQXdjQStBUGJBL2tEQndENEE5b0Qyd01IQVBrRDNBUDZBd2NBK1FQYkE5d0RCd0RjQS9zRCtnTUhBTndEM1FQN0F3Y0EzUVA4QS9zREJ3RGRBOTREL0FNSEFONEQvUVA4QXdjQTNnUGZBLzBEQndEZkEvNEQvUU1IQU44RDRBUCtBd2NBNEFQL0EvNERCd0RnQStFRC93TUhBT0VEQUFUL0F3Y0E0UVBpQXdBRUJ3RGlBd0VFQUFRSEFPSUQ0d01CQkFjQTR3TUNCQUVFQndEakErUURBZ1FIQU9RREF3UUNCQWNBNUFQbEF3TUVCd0RsQXdRRUF3UUhBT1VENWdNRUJBY0E1Z01GQkFRRUJ3RG1BK2NEQlFRSEFPY0RCZ1FGQkFjQTV3UG9Bd1lFQndEb0F3Y0VCZ1FIQU9nRDZRTUhCQWNBNlFNSUJBY0VCd0RwQStvRENBUUhBT29EQ1FRSUJBY0E2Z1ByQXdrRUJ3QUpCT3dEQ2dRSEFBa0U2d1BzQXdjQUNnVHRBd3NFQndBS0JPd0Q3UU1IQUFzRTdnTU1CQWNBQ3dUdEErNERCd0FNQk84RERRUUhBQXdFN2dQdkF3Y0FEUVR3QXc0RUJ3QU5CTzhEOEFNSEFBNEU4UU1QQkFjQURnVHdBL0VEQndBUEJOVUQ4Z01IQUE4RThRUFZBd2NBRUFUekF4RUVCd0FRQlBJRDh3TUhBQkVFOUFNU0JBY0FFUVR6QS9RREJ3QVNCUFVERXdRSEFCSUU5QVAxQXdjQUV3VDJBeFFFQndBVEJQVUQ5Z01IQUJRRTl3TVZCQWNBRkFUMkEvY0RCd0FWQlBnREZnUUhBQlVFOXdQNEF3Y0FGZ1Q1QXhjRUJ3QVdCUGdEK1FNSEFCY0UrZ01ZQkFjQUZ3VDVBL29EQndENkF4a0VHQVFIQVBvRCt3TVpCQWNBK3dNYUJCa0VCd0Q3QS93REdnUUhBUHdER3dRYUJBY0EvQVA5QXhzRUJ3RDlBeHdFR3dRSEFQMEQvZ01jQkFjQS9nTWRCQndFQndEK0EvOERIUVFIQVA4REhnUWRCQWNBL3dNQUJCNEVCd0FBQkI4RUhnUUhBQUFFQVFRZkJBY0FBUVFnQkI4RUJ3QUJCQUlFSUFRSEFBSUVJUVFnQkFjQUFnUURCQ0VFQndBREJDSUVJUVFIQUFNRUJBUWlCQWNBQkFRakJDSUVCd0FFQkFVRUl3UUhBQVVFSkFRakJBY0FCUVFHQkNRRUJ3QUdCQ1VFSkFRSEFBWUVCd1FsQkFjQUJ3UW1CQ1VFQndBSEJBZ0VKZ1FIQUFnRUp3UW1CQWNBQ0FRSkJDY0VCd0FuQkFvRUtBUUhBQ2NFQ1FRS0JBY0FLQVFMQkNrRUJ3QW9CQW9FQ3dRSEFDa0VEQVFxQkFjQUtRUUxCQXdFQndBcUJBMEVLd1FIQUNvRURBUU5CQWNBS3dRT0JDd0VCd0FyQkEwRURnUUhBQ3dFRHdRdEJBY0FMQVFPQkE4RUJ3QXRCUElERUFRSEFDMEVEd1R5QXdjQUxnUVFCQkVFQndBdUJDOEVFQVFIQURBRUVRUVNCQWNBTUFRdUJCRUVCd0F4QkJJRUV3UUhBREVFTUFRU0JBY0FNZ1FUQkJRRUJ3QXlCREVFRXdRSEFETUVGQVFWQkFjQU13UXlCQlFFQndBMEJCVUVGZ1FIQURRRU13UVZCQWNBTlFRV0JCY0VCd0ExQkRRRUZnUUhBRFlFRndRWUJBY0FOZ1ExQkJjRUJ3QVpCRFlFR0FRSEFCa0VOd1EyQkFjQUdnUTNCQmtFQndBYUJEZ0VOd1FIQUJzRU9BUWFCQWNBR3dRNUJEZ0VCd0FjQkRrRUd3UUhBQndFT2dRNUJBY0FIUVE2QkJ3RUJ3QWRCRHNFT2dRSEFCNEVPd1FkQkFjQUhnUThCRHNFQndBZkJEd0VIZ1FIQUI4RVBRUThCQWNBSUFROUJCOEVCd0FnQkQ0RVBRUUhBQ0FFUHdRK0JBY0FJQVFoQkQ4RUJ3QWhCRUFFUHdRSEFDRUVJZ1JBQkFjQUlnUkJCRUFFQndBaUJDTUVRUVFIQUNNRVFnUkJCQWNBSXdRa0JFSUVCd0FrQkVNRVFnUUhBQ1FFSlFSREJBY0FKUVJFQkVNRUJ3QWxCQ1lFUkFRSEFDWUVSUVJFQkFjQUpnUW5CRVVFQndCRkJDZ0VSZ1FIQUVVRUp3UW9CQWNBUmdRcEJFY0VCd0JHQkNnRUtRUUhBRWNFS2dSSUJBY0FSd1FwQkNvRUJ3QklCQ3NFU1FRSEFFZ0VLZ1FyQkFjQVNRUXNCRW9FQndCSkJDc0VMQVFIQUVvRUxRUkxCQWNBU2dRc0JDMEVCd0JMQkJBRUx3UUhBRXNFTFFRUUJBY0FUQVI0QTNZREJ3Qk1CRTBFZUFNSEFFMEVlZ040QXdjQVRRUk9CSG9EQndCT0JId0RlZ01IQUU0RVR3UjhBd2NBVHdSL0Ezd0RCd0JQQkZBRWZ3TUhBRkFFZ1FOL0F3Y0FVQVJSQklFREJ3QlJCSU1EZ1FNSEFGRUVVZ1NEQXdjQVVnU0ZBNE1EQndCU0JGTUVoUU1IQUZNRWh3T0ZBd2NBVXdSVUJJY0RCd0JVQklrRGh3TUhBRlFFVlFTSkF3Y0FWUVNMQTRrREJ3QlZCRllFaXdNSEFGWUVqQU9MQXdjQVZnUlhCSXdEQndCWEJJNERqQU1IQUZjRVdBU09Bd2NBV0FTUUE0NERCd0JZQkZrRWtBTUhBRmtFa2dPUUF3Y0FXUVJhQkpJREJ3QmFCSlFEa2dNSEFGb0VXd1NVQXdjQVd3U1dBNVFEQndCYkJGd0VsZ01IQUZ3RVhRT1dBd2NBWEFSZEJGMERCd0JkQkY0RFhRTUhBRjBFWGdSZUF3Y0FYZ1JoQTE0REJ3QmVCRjhFWVFNSEFGOEVZd05oQXdjQVh3UmdCR01EQndCZ0JHVURZd01IQUdBRVlRUmxBd2NBWVFSbkEyVURCd0JoQkdJRVp3TUhBR0lFYVFObkF3Y0FZZ1JqQkdrREJ3QmpCR3NEYVFNSEFHTUVaQVJyQXdjQVpBUnRBMnNEQndCa0JHVUViUU1IQUdVRWJnTnRBd2NBWlFSbUJHNERCd0JtQkhBRGJnTUhBR1lFWndSd0F3Y0Fad1J5QTNBREJ3Qm5CR2dFY2dNSEFHZ0VkQU55QXdjQWFBUnBCSFFEQndCcEJIWURkQU1IQUdrRVRBUjJBd2NBYWdTM0FxNENCd0JxQkdzRXR3SUhBRTRFYXdScUJBY0FUZ1JOQkdzRUJ3QnJCTFVDdHdJSEFHc0ViQVMxQWdjQVRRUnNCR3NFQndCTkJFd0ViQVFIQUd3RXVnSzFBZ2NBYkFSdEJMb0NCd0JNQkcwRWJBUUhBRXdFYVFSdEJBY0FiUVREQXJvQ0J3QnRCRzRFd3dJSEFHa0ViZ1J0QkFjQWFRUm9CRzRFQndCdUJNRUN3d0lIQUc0RWJ3VEJBZ2NBYUFSdkJHNEVCd0JvQkdjRWJ3UUhBRzhFeGdMQkFnY0Fid1J3Qk1ZQ0J3Qm5CSEFFYndRSEFHY0VaZ1J3QkFjQWNBVElBc1lDQndCd0JIRUV5QUlIQUdZRWNRUndCQWNBWmdSbEJIRUVCd0J4Qk1zQ3lBSUhBSEVFY2dUTEFnY0FaUVJ5QkhFRUJ3QmxCR1FFY2dRSEFISUUwUUxMQWdjQWNnUnpCTkVDQndCa0JITUVjZ1FIQUdRRVl3UnpCQWNBY3dUVUF0RUNCd0J6QkhRRTFBSUhBR01FZEFSekJBY0FZd1JpQkhRRUJ3QjBCTmNDMUFJSEFIUUVkUVRYQWdjQVlnUjFCSFFFQndCaUJHRUVkUVFIQUhVRTNRTFhBZ2NBZFFSMkJOMENCd0JoQkhZRWRRUUhBR0VFWUFSMkJBY0FkZ1RnQXQwQ0J3QjJCSGNFNEFJSEFHQUVkd1IyQkFjQVlBUmZCSGNFQndCM0JHd0M0QUlIQUhjRWVBUnNBZ2NBWHdSNEJIY0VCd0JmQkY0RWVBUUhBSGdFYndKc0FnY0FlQVI1Qkc4Q0J3QmVCSGtFZUFRSEFGNEVYUVI1QkFjQWVRUjBBbThDQndCNUJIb0VkQUlIQUYwRWVnUjVCQWNBWFFSY0JIb0VCd0I2QkhjQ2RBSUhBSG9FZXdSM0FnY0FYQVI3QkhvRUJ3QmNCRnNFZXdRSEFIc0VmUUozQWdjQWV3UjhCSDBDQndCYkJId0Vld1FIQUZzRVdnUjhCQWNBZkFTQUFuMENCd0I4QkgwRWdBSUhBRm9FZlFSOEJBY0FXZ1JaQkgwRUJ3QjlCSU1DZ0FJSEFIMEVmZ1NEQWdjQVdRUitCSDBFQndCWkJGZ0VmZ1FIQUg0RWlRS0RBZ2NBZmdSL0JJa0NCd0JZQkg4RWZnUUhBRmdFVndSL0JBY0Fmd1NUQW9rQ0J3Qi9CSUFFa3dJSEFGY0VnQVIvQkFjQVZ3UldCSUFFQndDQUJKRUNrd0lIQUlBRWdRU1JBZ2NBVmdTQkJJQUVCd0JXQkZVRWdRUUhBSUVFbGdLUkFnY0FnUVNDQkpZQ0J3QlZCSUlFZ1FRSEFGVUVWQVNDQkFjQWdnU2ZBcFlDQndDQ0JJTUVud0lIQUZRRWd3U0NCQWNBVkFSVEJJTUVCd0NEQkowQ253SUhBSU1FaEFTZEFnY0FVd1NFQklNRUJ3QlRCRklFaEFRSEFJUUVvZ0tkQWdjQWhBU0ZCS0lDQndCU0JJVUVoQVFIQUZJRVVRU0ZCQWNBaFFTckFxSUNCd0NGQklZRXF3SUhBRkVFaGdTRkJBY0FVUVJRQklZRUJ3Q0dCS2tDcXdJSEFJWUVod1NwQWdjQVVBU0hCSVlFQndCUUJFOEVod1FIQUljRXJnS3BBZ2NBaHdScUJLNENCd0JQQkdvRWh3UUhBRThFVGdScUJBY0Fjd0tJQkhrQ0J3QnpBb2tFaUFRSEFJZ0Vid0owQWdjQWlBU0pCRzhDQndCL0Fvb0VoUUlIQUg4Q2l3U0tCQWNBaWdSOUFvQUNCd0NLQklzRWZRSUhBSXdFandLTEFnY0FqQVNOQkk4Q0J3Q05CSWtDa3dJSEFJMEVqQVNKQWdjQWpnU2JBcFFDQndDT0JJOEVtd0lIQUk4RWxnS2ZBZ2NBandTT0JKWUNCd0NRQktjQ29BSUhBSkFFa1FTbkFnY0FrUVNpQXFzQ0J3Q1JCSkFFb2dJSEFKSUVzd0tzQWdjQWtnU1RCTE1DQndDVEJLNEN0d0lIQUpNRWtnU3VBZ2NBbEFTL0FyZ0NCd0NVQkpVRXZ3SUhBSlVFdWdMREFnY0FsUVNVQkxvQ0J3REVBcFlFelFJSEFNUUNsd1NXQkFjQWxnVEdBc2dDQndDV0JKY0V4Z0lIQU5NQ21BVFpBZ2NBMHdLWkJKZ0VCd0NZQk5FQzFBSUhBSmdFbVFUUkFnY0Ezd0thQk9JQ0J3RGZBcHNFbWdRSEFKb0UzUUxnQWdjQW1nU2JCTjBDQndCdEFva0VuQVFIQUcwQ2J3S0pCQWNBbkFSekFuQUNCd0NjQklrRWN3SUhBSjBFZEFKMkFnY0FuUVNJQkhRQ0J3QjZBb2dFblFRSEFIb0NlUUtJQkFjQWZBS0xCSjRFQndCOEFuMENpd1FIQUo0RWZ3SitBZ2NBbmdTTEJIOENCd0NmQklBQ2dnSUhBSjhFaWdTQUFnY0FoZ0tLQko4RUJ3Q0dBb1VDaWdRSEFJZ0NqQVNnQkFjQWlBS0pBb3dFQndDZ0JJc0NpZ0lIQUtBRWpBU0xBZ2NBb1FTVEFwQUNCd0NoQkkwRWt3SUhBSTBDalFTaEJBY0FqUUtQQW8wRUJ3Q1hBbzRFb2dRSEFKY0NsZ0tPQkFjQW9nU1VBcFVDQndDaUJJNEVsQUlIQUtNRW53S2NBZ2NBb3dTUEJKOENCd0NaQW84RW93UUhBSmtDbXdLUEJBY0Fvd0tRQktRRUJ3Q2pBcUlDa0FRSEFLUUVvQUtoQWdjQXBBU1FCS0FDQndDbEJLc0NxQUlIQUtVRWtRU3JBZ2NBcFFLUkJLVUVCd0NsQXFjQ2tRUUhBSzhDa2dTbUJBY0Fyd0t1QXBJRUJ3Q21CS3dDclFJSEFLWUVrZ1NzQWdjQXB3UzNBclFDQndDbkJKTUV0d0lIQUxFQ2t3U25CQWNBc1FLekFwTUVCd0M3QXBRRXFBUUhBTHNDdWdLVUJBY0FxQVM0QXJrQ0J3Q29CSlFFdUFJSEFLa0V3d0xBQWdjQXFRU1ZCTU1DQndDOUFwVUVxUVFIQUwwQ3Z3S1ZCQWNBeHdLWEJLb0VCd0RIQXNZQ2x3UUhBS29FeEFMRkFnY0FxZ1NYQk1RQ0J3Q3JCTWdDeWdJSEFLc0VsZ1RJQWdjQXpnS1dCS3NFQndET0FzMENsZ1FIQU5BQ21RU3NCQWNBMEFMUkFwa0VCd0NzQk5NQzBnSUhBS3dFbVFUVEFnY0FyUVRVQXRZQ0J3Q3RCSmdFMUFJSEFOb0NtQVN0QkFjQTJnTFpBcGdFQndEY0Fwc0VyZ1FIQU53QzNRS2JCQWNBcmdUZkF0NENCd0N1QkpzRTN3SUhBSzhFNEFMaEFnY0Fyd1NhQk9BQ0J3RGpBcG9FcndRSEFPTUM0Z0thQkFjQUlBS3FCQ0VDQndBZ0FzY0NxZ1FIQUI4Q3h3SWdBZ2NBSHdMQ0FzY0NCd0RDQWlJQ3dBSUhBTUlDSHdJaUFnY0F4UUloQXFvRUJ3REZBbEVDSVFJSEFNQUNJd0twQkFjQXdBSWlBaU1DQndDcEJGSUN2UUlIQUtrRUl3SlNBZ2NBdmdKUkFzVUNCd0MrQWxBQ1VRSUhBRkFDdlFKU0FnY0FVQUsrQXIwQ0J3REpBaDBDeWdJSEFNa0NIZ0lkQWdjQTBBSWVBc2tDQndEUUFrMENIZ0lIQUt3RVRRTFFBZ2NBckFSTUFrMENCd0NzQkdzQ1RBSUhBS3dFMGdKckFnY0F5Z0ljQXFzRUJ3REtBaDBDSEFJSEFFNENxd1FjQWdjQVRnTE9BcXNFQndET0FrOEN6QUlIQU00Q1RnSlBBZ2NBekFKckF0SUNCd0RNQWs4Q2F3SUhBR2tDMmdKcUFnY0FhUUxZQXRvQ0J3QnBBdDRDMkFJSEFHa0NhQUxlQWdjQWFnS3RCRW9DQndCcUF0b0NyUVFIQUVvQzFnSkxBZ2NBU2dLdEJOWUNCd0JMQXRVQ1NRSUhBRXNDMWdMVkFnY0FTUUxjQWtnQ0J3QkpBdFVDM0FJSEFFZ0NyZ1JIQWdjQVNBTGNBcTRFQndCSEF0NENhQUlIQUVjQ3JnVGVBZ2NBUkFKdEFrSUNCd0JFQW00Q2JRSUhBRVlDYmdKRUFnY0FSZ0xoQW00Q0J3QkZBdUVDUmdJSEFFVUNyd1RoQWdjQVp3S3ZCRVVDQndCbkF1TUNyd1FIQUVJQ25BUkRBZ2NBUWdKdEFwd0VCd0JEQW5BQ1pRSUhBRU1DbkFSd0FnY0FjZ0psQW5BQ0J3QnlBbVlDWlFJSEFPTUNaZ0p5QWdjQTR3Sm5BbVlDQndCNkFtTUNlQUlIQUhvQ1pBSmpBZ2NBZUFKaUFuNENCd0I0QW1NQ1lnSUhBSDRDUGdLZUJBY0FmZ0ppQWo0Q0J3Q2VCRDBDZkFJSEFKNEVQZ0k5QWdjQVB3SjhBajBDQndBL0FuVUNmQUlIQUVBQ2RRSS9BZ2NBUUFKMkFuVUNCd0JCQW5ZQ1FBSUhBRUVDblFSMkFnY0FaQUtkQkVFQ0J3QmtBbm9DblFRSEFKOEVZUUtHQWdjQW53UThBbUVDQndBOEFvSUNPd0lIQUR3Q253U0NBZ2NBT3dLQkFqb0NCd0E3QW9JQ2dRSUhBRG9DaUFJNEFnY0FPZ0tCQW9nQ0J3QTRBcUFFT1FJSEFEZ0NpQUtnQkFjQU9RS0tBbDhDQndBNUFxQUVpZ0lIQUlRQ1h3S0tBZ2NBaEFKZ0FsOENCd0JnQW9ZQ1lRSUhBR0FDaEFLR0FnY0FqUUpkQW80Q0J3Q05BbDRDWFFJSEFGd0NqZ0pkQWdjQVhBS1ZBbzRDQndBekFxSUVOQUlIQURNQ2x3S2lCQWNBTlFLWEFqTUNCd0ExQXBJQ2x3SUhBRFlDa2dJMUFnY0FOZ0tRQXBJQ0J3QTNBcEFDTmdJSEFEY0NvUVNRQWdjQW9RUmVBbzBDQndDaEJEY0NYZ0lIQURRQ2xRSmNBZ2NBTkFLaUJKVUNCd0NrQkM0Q293SUhBS1FFTHdJdUFnY0Fvd0l3QXA0Q0J3Q2pBaTRDTUFJSEFKNENNUUtjQWdjQW5nSXdBakVDQndDaEFpOENwQVFIQUtFQ1dRSXZBZ2NBbkFJeUFxTUVCd0NjQWpFQ01nSUhBS01FV3dLWkFnY0Fvd1F5QWxzQ0J3QmFBcGtDV3dJSEFGb0NtZ0taQWdjQVdRS2FBbG9DQndCWkFxRUNtZ0lIQUtnQ0xRS2xCQWNBcUFJc0FpMENCd0NsQkZnQ3BRSUhBS1VFTFFKWUFnY0FxZ0lzQXFnQ0J3Q3FBaWtDTEFJSEFLOENLUUtxQWdjQXJ3SXFBaWtDQndDbUJDb0Nyd0lIQUtZRUt3SXFBZ2NBclFJckFxWUVCd0N0QWxjQ0t3SUhBRllDcFFKWUFnY0FWZ0ttQXFVQ0J3QlhBcVlDVmdJSEFGY0NyUUttQWdjQXRnSW5BclFDQndDMkFpUUNKd0lIQUxzQ0pBSzJBZ2NBdXdJbEFpUUNCd0MwQWlnQ3B3UUhBTFFDSndJb0FnY0Fwd1JWQXJFQ0J3Q25CQ2dDVlFJSEFLZ0VKUUs3QWdjQXFBUW1BaVVDQndDNUFpWUNxQVFIQUxrQ1ZBSW1BZ2NBVXdLeEFsVUNCd0JUQXJJQ3NRSUhBRlFDc2dKVEFnY0FWQUs1QXJJQ0J3Q3dCTEVFc2dRSEFMQUVzd1N4QkFjQXRBUzFCTFlFQndDMEJMY0V0UVFIQUxnRXVRUzZCQWNBdUFTN0JMa0VCd0M4QkwwRXZnUUhBTHdFdndTOUJBY0F3QVRCQk1JRUJ3REFCTU1Fd1FRSEFNUUV4UVRHQkFjQXhBVEhCTVVFQndESUJNVUV5UVFIQU1nRXhnVEZCQWNBeWdUSkJNc0VCd0RLQk1nRXlRUUhBTXdFeWdUTEJBY0F6QVROQk1vRUJ3RE9CTTBFekFRSEFNNEV6d1ROQkFjQXpnVEVCTThFQndET0JNY0V4QVFIQU5BRTBRVFNCQWNBMEFUVEJORUVCd0RVQk5JRTFRUUhBTlFFMEFUU0JBY0ExZ1RVQk5VRUJ3RFdCTmNFMUFRSEFOZ0Uxd1RXQkFjQTJBVFpCTmNFQndEWUJOb0UyUVFIQU5nRTJ3VGFCQWNBMmdUUkJOTUVCd0RhQk5zRTBRUUhBTndFM1FUZUJBY0EzQVRmQk4wRUJ3RGdCTndFM2dRSEFPQUU0UVRjQkFjQTRnVGhCT0FFQndEaUJPTUU0UVFIQU9JRTVBVGpCQWNBNGdUbEJPUUVCd0RrQk9ZRTV3UUhBT1FFNVFUbUJBY0Ezd1RtQk4wRUJ3RGZCT2NFNWdRSEFPZ0U2UVRxQkFjQTZBVHJCT2tFQndEc0JPc0U2QVFIQU93RTdRVHJCQWNBN0FUdUJPMEVCd0RzQk84RTdnUUhBTzRFOEFUeEJBY0E3Z1R2QlBBRUJ3RHlCUEFFOHdRSEFQSUU4UVR3QkFjQTZRVHpCT29FQndEcEJQSUU4d1FIQVBRRTlRVDJCQWNBOUFUM0JQVUVCd0QwQlBnRTl3UUhBUFFFK1FUNEJBY0ErQVQ2QlBzRUJ3RDRCUGtFK2dRSEFQd0UrZ1Q5QkFjQS9BVDdCUG9FQndEK0JQMEUvd1FIQVA0RS9BVDlCQWNBOWdUK0JQOEVCd0QyQlBVRS9nUUhBQUFGeGdRQkJRY0FBQVhFQk1ZRUJ3QUJCY2dFQWdVSEFBRUZ4Z1RJQkFjQUFnWEtCQU1GQndBQ0JjZ0V5Z1FIQU1vRUJBVURCUWNBeWdUTkJBUUZCd0ROQkFVRkJBVUhBTTBFendRRkJRY0F6d1FBQlFVRkJ3RFBCTVFFQUFVSEFBWUYwQVFIQlFjQUJnWFRCTkFFQndBSEJkUUVDQVVIQUFjRjBBVFVCQWNBMUFRSkJRZ0ZCd0RVQk5jRUNRVUhBTmNFQ2dVSkJRY0Exd1RaQkFvRkJ3RFpCQXNGQ2dVSEFOa0UyZ1FMQlFjQUN3WFRCQVlGQndBTEJkb0Uwd1FIQUF3RjNBUU5CUWNBREFYZkJOd0VCd0RjQkE0RkRRVUhBTndFNFFRT0JRY0E0UVFQQlE0RkJ3RGhCT01FRHdVSEFPTUVFQVVQQlFjQTR3VGtCQkFGQndBUUJlY0VFUVVIQUJBRjVBVG5CQWNBRVFYZkJBd0ZCd0FSQmVjRTN3UUhBT2tFRWdVVEJRY0E2UVRyQkJJRkJ3RHJCQlFGRWdVSEFPc0U3UVFVQlFjQTdRUVZCUlFGQndEdEJPNEVGUVVIQUJVRjhRUVdCUWNBRlFYdUJQRUVCd0FXQmZJRUZ3VUhBQllGOFFUeUJBY0FGd1hwQkJNRkJ3QVhCZklFNlFRSEFQVUVHQVVaQlFjQTlRVDNCQmdGQndEM0JCb0ZHQVVIQVBjRStBUWFCUWNBR2dYN0JCc0ZCd0FhQmZnRSt3UUhBQnNGL0FRY0JRY0FHd1g3QlB3RUJ3QWNCZjRFSFFVSEFCd0YvQVQrQkFjQS9nUVpCUjBGQndEK0JQVUVHUVVIQUI0RkFRVWZCUWNBSGdVQUJRRUZCd0FmQlFJRklBVUhBQjhGQVFVQ0JRY0FJQVVEQlNFRkJ3QWdCUUlGQXdVSEFBTUZJZ1VoQlFjQUF3VUVCU0lGQndBRUJTTUZJZ1VIQUFRRkJRVWpCUWNBQlFVZUJTTUZCd0FGQlFBRkhnVUhBQ1FGQndVbEJRY0FKQVVHQlFjRkJ3QWxCUWdGSmdVSEFDVUZCd1VJQlFjQUNBVW5CU1lGQndBSUJRa0ZKd1VIQUFrRktBVW5CUWNBQ1FVS0JTZ0ZCd0FLQlNrRktBVUhBQW9GQ3dVcEJRY0FLUVVHQlNRRkJ3QXBCUXNGQmdVSEFDb0ZEUVVyQlFjQUtnVU1CUTBGQndBTkJTd0ZLd1VIQUEwRkRnVXNCUWNBRGdVdEJTd0ZCd0FPQlE4RkxRVUhBQThGTGdVdEJRY0FEd1VRQlM0RkJ3QXVCUkVGTHdVSEFDNEZFQVVSQlFjQUx3VU1CU29GQndBdkJSRUZEQVVIQUJNRk1BVXhCUWNBRXdVU0JUQUZCd0FTQlRJRk1BVUhBQklGRkFVeUJRY0FGQVV6QlRJRkJ3QVVCUlVGTXdVSEFETUZGZ1UwQlFjQU13VVZCUllGQndBMEJSY0ZOUVVIQURRRkZnVVhCUWNBTlFVVEJURUZCd0ExQlJjRkV3VUhBQmtGTmdVM0JRY0FHUVVZQlRZRkJ3QVlCVGdGTmdVSEFCZ0ZHZ1U0QlFjQU9BVWJCVGtGQndBNEJSb0ZHd1VIQURrRkhBVTZCUWNBT1FVYkJSd0ZCd0E2QlIwRk93VUhBRG9GSEFVZEJRY0FIUVUzQlRzRkJ3QWRCUmtGTndVSEFMQUVId1d6QkFjQXNBUWVCUjhGQndDeEJCOEZJQVVIQUxFRXN3UWZCUWNBUEFVZ0JTRUZCd0E4QmJFRUlBVUhBQ0lGUEFVaEJRY0FJZ1U5QlR3RkJ3QWpCVDBGSWdVSEFDTUZzZ1E5QlFjQUl3V3dCTElFQndBakJSNEZzQVFIQUxVRUpBVWxCUWNBdFFTM0JDUUZCd0ErQlNVRkpnVUhBRDRGdFFRbEJRY0FKd1UrQlNZRkJ3QW5CVDhGUGdVSEFDZ0ZQd1VuQlFjQUtBVzJCRDhGQndBb0JiUUV0Z1FIQUNnRktRVzBCQWNBdEFRa0JiY0VCd0MwQkNrRkpBVUhBRUFGS2dVckJRY0FRQVc1QkNvRkJ3QXNCVUFGS3dVSEFDd0ZRUVZBQlFjQUxRVkJCU3dGQndBdEJib0VRUVVIQUMwRnVBUzZCQWNBTFFVdUJiZ0VCd0M0QkM4RnV3UUhBTGdFTGdVdkJRY0F1UVF2QlNvRkJ3QzVCTHNFTHdVSEFEQUZRZ1V4QlFjQU1BVkRCVUlGQndBeUJVTUZNQVVIQURJRnZnUkRCUWNBTWdXOEJMNEVCd0F5QlRNRnZBUUhBTHdFTkFXL0JBY0F2QVF6QlRRRkJ3QzlCRFFGTlFVSEFMMEV2d1EwQlFjQVFnVTFCVEVGQndCQ0JiMEVOUVVIQURZRndBUTNCUWNBTmdYREJNQUVCd0EyQmNFRXd3UUhBRFlGT0FYQkJBY0F3UVE1QlVRRkJ3REJCRGdGT1FVSEFFVUZPUVU2QlFjQVJRVkVCVGtGQndEQ0JEb0ZPd1VIQU1JRVJRVTZCUWNBTndYQ0JEc0ZCd0EzQmNBRXdnUUhBRHdGc2dTeEJBY0FQQVU5QmJJRUJ3QStCYllFdFFRSEFENEZQd1cyQkFjQVFBVzZCTGtFQndCQUJVRUZ1Z1FIQUVRRndnVEJCQWNBUkFWRkJjSUVCd0JDQmI0RXZRUUhBRUlGUXdXK0JBY0FaQVBxQlBNRUJ3QmtBMllENmdRSEFQTUVZZ05rQXdjQTh3VHdCR0lEQndEc0JKMER0Z01IQU93RTZBU2RBd2NBNkFSbUE1MERCd0RvQk9vRVpnTUhBUEFFbXdOaUF3Y0E4QVR2QkpzREJ3RHNCSnNEN3dRSEFPd0V0Z09iQXdjQTBRUGVCTEFEQndEUkErQUUzZ1FIQU40RWx3T3dBd2NBM2dUZEJKY0RCd0RkQkpVRGx3TUhBTjBFNWdTVkF3Y0E1Z1NUQTVVREJ3RG1CT1VFa3dNSEFPVUVyd09UQXdjQTVRVGlCSzhEQndEZ0JLOEQ0Z1FIQU9BRTBRT3ZBd2NBeXdQV0JOVUVCd0RMQTZvRDFnUUhBTlVFcXdQTEF3Y0ExUVRTQktzREJ3RFNCSW9EcXdNSEFOSUUwUVNLQXdjQTBRU0lBNG9EQndEUkJOc0VpQU1IQU5zRWhnT0lBd2NBMndUWUJJWURCd0RZQktvRGhnTUhBTmdFMWdTcUF3Y0F6QVNsQTNzREJ3RE1CTXNFcFFNSEFNc0V3d09sQXdjQXl3VEpCTU1EQndESkJLY0R3d01IQU1rRXhRU25Bd2NBZXdQT0JNd0VCd0I3QTMwRHpnUUhBSDBEeHdUT0JBY0FmUU4rQThjRUJ3QitBOFVFeHdRSEFINERwd1BGQkFjQS93UnZBM0VEQndEL0JQMEVid01IQVAwRW9BTnZBd2NBL1FUNkJLQURCd0Q1QktBRCtnUUhBUGtFdkFPZ0F3Y0ErUVNoQTd3REJ3RDVCUFFFb1FNSEFQUUVjd09oQXdjQTlBVDJCSE1EQndEMkJIRURjd01IQVBZRS93UnhBd2NBUmdWSEJVZ0ZCd0JHQlVrRlJ3VUhBRW9GU0FWTEJRY0FTZ1ZHQlVnRkJ3Qk1CVXNGVFFVSEFFd0ZTZ1ZMQlFjQVRnVk5CVThGQndCT0JVd0ZUUVVIQUZBRlR3VlJCUWNBVUFWT0JVOEZCd0JTQlZFRlV3VUhBRklGVUFWUkJRY0FWQVZUQlZVRkJ3QlVCVklGVXdVSEFGWUZWUVZYQlFjQVZnVlVCVlVGQndCWUJWWUZWd1VIQUZnRldRVldCUWNBV2dWWkJWZ0ZCd0JhQlZzRldRVUhBRndGV3dWYUJRY0FYQVZkQlZzRkJ3QmVCVjBGWEFVSEFGNEZYd1ZkQlFjQVlBVmZCVjRGQndCZ0JXRUZYd1VIQUdJRllRVmdCUWNBWWdWakJXRUZCd0JrQldNRllnVUhBR1FGWlFWakJRY0FaZ1ZsQldRRkJ3Qm1CV2NGWlFVSEFHWUZhQVZuQlFjQVpnVnBCV2dGQndCcEJXb0ZhQVVIQUdrRmF3VnFCUWNBYXdWc0JXb0ZCd0JyQlcwRmJBVUhBRzBGYmdWc0JRY0FiUVZ2Qlc0RkJ3QnZCWEFGYmdVSEFHOEZjUVZ3QlFjQWNRVnlCWEFGQndCeEJYTUZjZ1VIQUhNRmRBVnlCUWNBY3dWMUJYUUZCd0IwQlhZRmR3VUhBSFFGZFFWMkJRY0Fkd1Y0QlhrRkJ3QjNCWFlGZUFVSEFIa0ZlZ1Y3QlFjQWVRVjRCWG9GQndCN0JYd0ZmUVVIQUhzRmVnVjhCUWNBZlFWK0JYOEZCd0I5Qlh3RmZnVUhBSDhGZ0FXQkJRY0Fmd1YrQllBRkJ3Q0JCVWNGU1FVSEFJRUZnQVZIQlFjQWNnVjNCWUlGQndCeUJYUUZkd1VIQUhjRmV3V0NCUWNBZHdWNUJYc0ZCd0I3Qlg4RmdnVUhBSHNGZlFWL0JRY0Fmd1ZKQllJRkJ3Qi9CWUVGU1FVSEFFa0ZTZ1dDQlFjQVNRVkdCVW9GQndCS0JVNEZnZ1VIQUVvRlRBVk9CUWNBVGdWU0JZSUZCd0JPQlZBRlVnVUhBRklGVmdXQ0JRY0FVZ1ZVQlZZRkJ3QldCVnNGZ2dVSEFGWUZXUVZiQlFjQVd3VmZCWUlGQndCYkJWMEZYd1VIQUY4Rll3V0NCUWNBWHdWaEJXTUZCd0JqQldjRmdnVUhBR01GWlFWbkJRY0Fad1ZxQllJRkJ3Qm5CV2dGYWdVSEFHb0ZiZ1dDQlFjQWFnVnNCVzRGQndCdUJYSUZnZ1VIQUc0RmNBVnlCUWNBZ0FXREJVY0ZCd0NBQllRRmd3VUhBRWNGaFFWSUJRY0FSd1dEQllVRkJ3QitCWVFGZ0FVSEFINEZoZ1dFQlFjQWZBV0dCWDRGQndCOEJZY0ZoZ1VIQUhvRmh3VjhCUWNBZWdXSUJZY0ZCd0I0QllnRmVnVUhBSGdGaVFXSUJRY0FkZ1dKQlhnRkJ3QjJCWW9GaVFVSEFIVUZpZ1YyQlFjQWRRV0xCWW9GQndCWEJZd0ZXQVVIQUZjRmpRV01CUWNBV0FXT0JWb0ZCd0JZQll3RmpnVUhBRlVGalFWWEJRY0FWUVdQQlkwRkJ3QlRCWThGVlFVSEFGTUZrQVdQQlFjQVVRV1FCVk1GQndCUkJaRUZrQVVIQUU4RmtRVlJCUWNBVHdXU0JaRUZCd0JOQlpJRlR3VUhBRTBGa3dXU0JRY0FTd1dUQlUwRkJ3QkxCWlFGa3dVSEFFZ0ZsQVZMQlFjQVNBV0ZCWlFGQndCekJZc0ZkUVVIQUhNRmxRV0xCUWNBY1FXVkJYTUZCd0J4QlpZRmxRVUhBRzhGbGdWeEJRY0Fid1dYQlpZRkJ3QnRCWmNGYndVSEFHMEZtQVdYQlFjQWF3V1lCVzBGQndCckJaa0ZtQVVIQUdrRm1RVnJCUWNBYVFXYUJaa0ZCd0JtQlpvRmFRVUhBR1lGbXdXYUJRY0FaQVdiQldZRkJ3QmtCWndGbXdVSEFHSUZuQVZrQlFjQVlnV2RCWndGQndCZ0JaMEZZZ1VIQUdBRm5nV2RCUWNBWGdXZUJXQUZCd0JlQlo4Rm5nVUhBRndGbndWZUJRY0FYQVdnQlo4RkJ3QmFCYUFGWEFVSEFGb0ZqZ1dnQlFjQWhBV2hCWU1GQndDRUJhSUZvUVVIQUlNRm93V0ZCUWNBZ3dXaEJhTUZCd0NHQmFJRmhBVUhBSVlGcEFXaUJRY0FoUVdsQlpRRkJ3Q0ZCYU1GcFFVSEFJY0ZwQVdHQlFjQWh3V21CYVFGQndDSUJhWUZod1VIQUlnRnB3V21CUWNBaVFXbkJZZ0ZCd0NKQmFnRnB3VUhBSW9GcUFXSkJRY0FpZ1dwQmFnRkJ3Q0xCYWtGaWdVSEFJc0ZxZ1dwQlFjQWxRV3FCWXNGQndDVkJhc0ZxZ1VIQUkwRnJBV01CUWNBalFXdEJhd0ZCd0NNQmE0RmpnVUhBSXdGckFXdUJRY0Fqd1d0QlkwRkJ3Q1BCYThGclFVSEFJNEZzQVdnQlFjQWpnV3VCYkFGQndDUUJhOEZqd1VIQUpBRnNRV3ZCUWNBa1FXeEJaQUZCd0NSQmJJRnNRVUhBSklGc2dXUkJRY0FrZ1d6QmJJRkJ3Q1RCYk1Ga2dVSEFKTUZ0QVd6QlFjQWxBVzBCWk1GQndDVUJhVUZ0QVVIQUpZRnF3V1ZCUWNBbGdXMUJhc0ZCd0NYQmJVRmxnVUhBSmNGdGdXMUJRY0FtQVcyQlpjRkJ3Q1lCYmNGdGdVSEFKa0Z0d1dZQlFjQW1RVzRCYmNGQndDYUJiZ0ZtUVVIQUpvRnVRVzRCUWNBbXdXNUJab0ZCd0NiQmJvRnVRVUhBSndGdWdXYkJRY0FuQVc3QmJvRkJ3Q2RCYnNGbkFVSEFKMEZ2QVc3QlFjQW5nVzhCWjBGQndDZUJiMEZ2QVVIQUo4RnZRV2VCUWNBbndXK0JiMEZCd0NnQmI0Rm53VUhBS0FGc0FXK0JRY0F2d1hBQmNFRkJ3Qy9CY0lGd0FVSEFNTUZ3QVhDQlFjQXd3WEVCY0FGQndERkJjUUZ3d1VIQU1VRnhnWEVCUWNBeHdYR0JjVUZCd0RIQmNnRnhnVUhBTWtGeUFYSEJRY0F5UVhLQmNnRkJ3RExCY29GeVFVSEFNc0Z6QVhLQlFjQXpRWE1CY3NGQndETkJjNEZ6QVVIQU04RnpRWFFCUWNBendYT0JjMEZCd0RSQmRBRjBnVUhBTkVGendYUUJRY0Ewd1hTQmRRRkJ3RFRCZEVGMGdVSEFOVUYxQVhXQlFjQTFRWFRCZFFGQndEWEJkWUYyQVVIQU5jRjFRWFdCUWNBMXdYWkJkb0ZCd0RYQmRnRjJRVUhBTm9GMndYY0JRY0EyZ1haQmRzRkJ3RGNCZDBGM2dVSEFOd0Yyd1hkQlFjQTNnWGZCZUFGQndEZUJkMEYzd1VIQU9BRjRRWGlCUWNBNEFYZkJlRUZCd0RpQmVNRjVBVUhBT0lGNFFYakJRY0E1QVhsQmVZRkJ3RGtCZU1GNVFVSEFPVUY1d1htQlFjQTVRWG9CZWNGQndEb0Jla0Y1d1VIQU9nRjZnWHBCUWNBNmdYckJla0ZCd0RxQmV3RjZ3VUhBT3dGN1FYckJRY0E3QVh1QmUwRkJ3RHVCY0VGN1FVSEFPNEZ2d1hCQlFjQXdRWHZCZkFGQndEQkJjQUY3d1VIQU1BRjhRWHZCUWNBd0FYRUJmRUZCd0RFQmZJRjhRVUhBTVFGeGdYeUJRY0F4Z1h6QmZJRkJ3REdCY2dGOHdVSEFNZ0Y5QVh6QlFjQXlBWEtCZlFGQndES0JmVUY5QVVIQU1vRnpBWDFCUWNBekFYMkJmVUZCd0RNQmM0RjlnVUhBUFlGendYM0JRY0E5Z1hPQmM4RkJ3RDNCZEVGK0FVSEFQY0Z6d1hSQlFjQStBWFRCZmtGQndENEJkRUYwd1VIQVBrRjFRWDZCUWNBK1FYVEJkVUZCd0Q2QmRjRit3VUhBUG9GMVFYWEJRY0Erd1hhQmZ3RkJ3RDdCZGNGMmdVSEFQd0YzQVg5QlFjQS9BWGFCZHdGQndEOUJkNEYvZ1VIQVAwRjNBWGVCUWNBL2dYZ0JmOEZCd0QrQmQ0RjRBVUhBUDhGNGdVQUJnY0Evd1hnQmVJRkJ3QUFCdVFGQVFZSEFBQUc0Z1hrQlFjQUFRYm1CUUlHQndBQkJ1UUY1Z1VIQU9ZRkF3WUNCZ2NBNWdYbkJRTUdCd0RuQlFRR0F3WUhBT2NGNlFVRUJnY0E2UVVGQmdRR0J3RHBCZXNGQlFZSEFPc0ZCZ1lGQmdjQTZ3WHRCUVlHQndEdEJmQUZCZ1lIQU8wRndRWHdCUWNBOEFVSEJnZ0dCd0R3QmU4RkJ3WUhBUEVGQndidkJRY0E4UVVKQmdjR0J3RHlCUWtHOFFVSEFQSUZDZ1lKQmdjQTh3VUtCdklGQndEekJRc0dDZ1lIQVBRRkN3YnpCUWNBOUFVTUJnc0dCd0QxQlF3RzlBVUhBUFVGRFFZTUJnY0E5Z1VOQnZVRkJ3RDJCUTRHRFFZSEFBOEc5Z1gzQlFjQUR3WU9CdllGQndBUUJ2Y0YrQVVIQUJBR0R3YjNCUWNBRVFiNEJma0ZCd0FSQmhBRytBVUhBQklHK1FYNkJRY0FFZ1lSQnZrRkJ3QVRCdm9GK3dVSEFCTUdFZ2I2QlFjQUV3YjhCUlFHQndBVEJ2c0YvQVVIQUJRRy9RVVZCZ2NBRkFiOEJmMEZCd0FWQnY0RkZnWUhBQlVHL1FYK0JRY0FGZ2IvQlJjR0J3QVdCdjRGL3dVSEFCY0dBQVlZQmdjQUZ3Yi9CUUFHQndBWUJnRUdHUVlIQUJnR0FBWUJCZ2NBR1FZQ0Job0dCd0FaQmdFR0FnWUhBQUlHR3dZYUJnY0FBZ1lEQmhzR0J3QURCaHdHR3dZSEFBTUdCQVljQmdjQUJBWWRCaHdHQndBRUJnVUdIUVlIQUFVR0hnWWRCZ2NBQlFZR0JoNEdCd0FHQmdnR0hnWUhBQVlHOEFVSUJnY0FCd1lmQmdnR0J3QUhCaUFHSHdZSEFBa0dJQVlIQmdjQUNRWWhCaUFHQndBS0JpRUdDUVlIQUFvR0lnWWhCZ2NBQ3dZaUJnb0dCd0FMQmlNR0lnWUhBQXdHSXdZTEJnY0FEQVlrQmlNR0J3QU5CaVFHREFZSEFBMEdKUVlrQmdjQURnWWxCZzBHQndBT0JpWUdKUVlIQUNjR0RnWVBCZ2NBSndZbUJnNEdCd0FvQmc4R0VBWUhBQ2dHSndZUEJnY0FLUVlRQmhFR0J3QXBCaWdHRUFZSEFDb0dFUVlTQmdjQUtnWXBCaEVHQndBckJoSUdFd1lIQUNzR0tnWVNCZ2NBTEFZVEJoUUdCd0FzQmlzR0V3WUhBQzBHRkFZVkJnY0FMUVlzQmhRR0J3QXVCaFVHRmdZSEFDNEdMUVlWQmdjQUx3WVdCaGNHQndBdkJpNEdGZ1lIQURBR0Z3WVlCZ2NBTUFZdkJoY0dCd0F4QmhnR0dRWUhBREVHTUFZWUJnY0FNZ1laQmhvR0J3QXlCakVHR1FZSEFCc0dNZ1lhQmdjQUd3WXpCaklHQndBY0JqTUdHd1lIQUJ3R05BWXpCZ2NBSFFZMEJod0dCd0FkQmpVR05BWUhBQjRHTlFZZEJnY0FIZ1kyQmpVR0J3QUlCallHSGdZSEFBZ0dId1kyQmdjQU53WTRCamtHQndBM0Jqb0dPQVlIQURvR093WTRCZ2NBT2dZOEJqc0dCd0E4QmowR093WUhBRHdHUGdZOUJnY0FQZ1kvQmowR0J3QStCa0FHUHdZSEFFQUdRUVkvQmdjQVFBWkNCa0VHQndCQ0JrTUdRUVlIQUVJR1JBWkRCZ2NBUkFaRkJrTUdCd0JFQmtZR1JRWUhBRVVHUndaSUJnY0FSUVpHQmtjR0J3QklCa2tHU2dZSEFFZ0dSd1pKQmdjQVNnWkxCa3dHQndCS0Jra0dTd1lIQUV3R1RRWk9CZ2NBVEFaTEJrMEdCd0JPQms4R1VBWUhBRTRHVFFaUEJnY0FVQVpSQmxJR0J3QlFCazhHVVFZSEFGSUdVd1pVQmdjQVVnWlJCbE1HQndCVUJsVUdWZ1lIQUZRR1V3WlZCZ2NBVmdaWEJsZ0dCd0JXQmxVR1Z3WUhBRmdHV1FaYUJnY0FXQVpYQmxrR0J3QmFCbHNHWEFZSEFGb0dXUVpiQmdjQVhBWmRCbDRHQndCY0Jsc0dYUVlIQUYwR1h3WmVCZ2NBWFFaZ0JsOEdCd0JnQm1FR1h3WUhBR0FHWWdaaEJnY0FZZ1pqQm1FR0J3QmlCbVFHWXdZSEFHUUdaUVpqQmdjQVpBWm1CbVVHQndCbUJqa0daUVlIQUdZR053WTVCZ2NBT0FabkJqa0dCd0E0Qm1nR1p3WUhBRGdHYVFab0JnY0FPQVk3Qm1rR0J3QTdCbW9HYVFZSEFEc0dQUVpxQmdjQVBRWnJCbW9HQndBOUJqOEdhd1lIQUQ4R2JBWnJCZ2NBUHdaQkJtd0dCd0JCQm0wR2JBWUhBRUVHUXdadEJnY0FRd1p1Qm0wR0J3QkRCa1VHYmdZSEFHNEdTQVp2QmdjQWJnWkZCa2dHQndCdkJrb0djQVlIQUc4R1NBWktCZ2NBY0FaTUJuRUdCd0J3QmtvR1RBWUhBSEVHVGdaeUJnY0FjUVpNQms0R0J3QnlCbEFHY3dZSEFISUdUZ1pRQmdjQWRBWlFCbElHQndCMEJuTUdVQVlIQUhVR1VnWlVCZ2NBZFFaMEJsSUdCd0IyQmxRR1ZnWUhBSFlHZFFaVUJnY0Fkd1pXQmxnR0J3QjNCbllHVmdZSEFIZ0dXQVphQmdjQWVBWjNCbGdHQndCNUJsb0dYQVlIQUhrR2VBWmFCZ2NBZWdaY0JsNEdCd0I2Qm5rR1hBWUhBRjhHZWdaZUJnY0FYd1o3Qm5vR0J3QmhCbnNHWHdZSEFHRUdmQVo3QmdjQVl3WjhCbUVHQndCakJuMEdmQVlIQUdVR2ZRWmpCZ2NBWlFaK0JuMEdCd0E1Qm40R1pRWUhBRGtHWndaK0JnY0Fad1ovQm9BR0J3Qm5CbWdHZndZSEFHZ0dnUVovQmdjQWFBWnBCb0VHQndCcEJvSUdnUVlIQUdrR2FnYUNCZ2NBYWdhREJvSUdCd0JxQm1zR2d3WUhBR3NHaEFhREJnY0Fhd1pzQm9RR0J3QnNCb1VHaEFZSEFHd0diUWFGQmdjQWJRYUdCb1VHQndCdEJtNEdoZ1lIQUlZR2J3YUhCZ2NBaGdadUJtOEdCd0NIQm5BR2lBWUhBSWNHYndad0JnY0FpQVp4Qm9rR0J3Q0lCbkFHY1FZSEFJa0djZ2FLQmdjQWlRWnhCbklHQndDS0JuTUdpd1lIQUlvR2NnWnpCZ2NBaXdaMEJvd0dCd0NMQm5NR2RBWUhBSXdHZFFhTkJnY0FqQVowQm5VR0J3Q05CbllHamdZSEFJMEdkUVoyQmdjQWpnWjNCbzhHQndDT0JuWUdkd1lIQUk4R2VBYVFCZ2NBandaM0JuZ0dCd0NRQm5rR2tRWUhBSkFHZUFaNUJnY0FrUVo2QnBJR0J3Q1JCbmtHZWdZSEFIb0drd2FTQmdjQWVnWjdCcE1HQndCN0JwUUdrd1lIQUhzR2ZBYVVCZ2NBZkFhVkJwUUdCd0I4Qm4wR2xRWUhBSDBHbGdhVkJnY0FmUVorQnBZR0J3QitCb0FHbGdZSEFINEdad2FBQmdjQWdBYVhCcGdHQndDQUJuOEdsd1lIQUlFR2x3Wi9CZ2NBZ1FhWkJwY0dCd0NDQnBrR2dRWUhBSUlHbWdhWkJnY0Fnd2FhQm9JR0J3Q0RCcHNHbWdZSEFJUUdtd2FEQmdjQWhBYWNCcHNHQndDRkJwd0doQVlIQUlVR25RYWNCZ2NBaGdhZEJvVUdCd0NHQnA0R25RWUhBSjhHaGdhSEJnY0Fud2FlQm9ZR0J3Q2dCb2NHaUFZSEFLQUdud2FIQmdjQW9RYUlCb2tHQndDaEJxQUdpQVlIQUtJR2lRYUtCZ2NBb2dhaEJva0dCd0NqQm9vR2l3WUhBS01Hb2dhS0JnY0Fvd2FNQnFRR0J3Q2pCb3NHakFZSEFLUUdqUWFsQmdjQXBBYU1CbzBHQndDbEJvNEdwZ1lIQUtVR2pRYU9CZ2NBcGdhUEJxY0dCd0NtQm80R2p3WUhBS2NHa0Fhb0JnY0Fwd2FQQnBBR0J3Q29CcEVHcVFZSEFLZ0drQWFSQmdjQXFRYVNCcW9HQndDcEJwRUdrZ1lIQUpJR3F3YXFCZ2NBa2dhVEJxc0dCd0NUQnF3R3F3WUhBSk1HbEFhc0JnY0FsQWF0QnF3R0J3Q1VCcFVHclFZSEFKVUdyZ2F0QmdjQWxRYVdCcTRHQndDV0JwZ0dyZ1lIQUpZR2dBYVlCZ2NBbUFhdkJyQUdCd0NZQnBjR3J3WUhBSmNHc1FhdkJnY0Fsd2FaQnJFR0J3Q1pCcklHc1FZSEFKa0dtZ2F5QmdjQW1nYXpCcklHQndDYUJwc0dzd1lIQUpzR3RBYXpCZ2NBbXdhY0JyUUdCd0NjQnJVR3RBWUhBSndHblFhMUJnY0FuUWEyQnJVR0J3Q2RCcDRHdGdZSEFMWUdud2EzQmdjQXRnYWVCcDhHQndDM0JxQUd1QVlIQUxjR253YWdCZ2NBdUFhaEJya0dCd0M0QnFBR29RWUhBTGtHb2dhNkJnY0F1UWFoQnFJR0J3QzZCcU1HdXdZSEFMb0dvZ2FqQmdjQXV3YWtCcndHQndDN0JxTUdwQVlIQUx3R3BRYTlCZ2NBdkFha0JxVUdCd0M5QnFZR3ZnWUhBTDBHcFFhbUJnY0F2Z2FuQnI4R0J3QytCcVlHcHdZSEFMOEdxQWJBQmdjQXZ3YW5CcWdHQndEQUJxa0d3UVlIQU1BR3FBYXBCZ2NBd1FhcUJzSUdCd0RCQnFrR3FnWUhBS29Hd3diQ0JnY0FxZ2FyQnNNR0J3Q3JCc1FHd3dZSEFLc0dyQWJFQmdjQXJBYkZCc1FHQndDc0JxMEd4UVlIQUswR3hnYkZCZ2NBclFhdUJzWUdCd0N1QnJBR3hnWUhBSzRHbUFhd0JnY0Fyd2JIQnJBR0J3Q3ZCc2dHeHdZSEFLOEd5UWJJQmdjQXJ3YXhCc2tHQndDeEJzb0d5UVlIQUxFR3NnYktCZ2NBc2diTEJzb0dCd0N5QnJNR3l3WUhBTE1HekFiTEJnY0Fzd2EwQnN3R0J3QzBCczBHekFZSEFMUUd0UWJOQmdjQXRRYk9CczBHQndDMUJyWUd6Z1lIQU00R3R3YlBCZ2NBemdhMkJyY0dCd0RQQnJnRzBBWUhBTThHdHdhNEJnY0EwQWE1QnRFR0J3RFFCcmdHdVFZSEFORUd1Z2JTQmdjQTBRYTVCcm9HQndEU0Jyc0cwd1lIQU5JR3VnYTdCZ2NBMUFhN0Jyd0dCd0RVQnRNR3V3WUhBTlVHdkFhOUJnY0ExUWJVQnJ3R0J3RFdCcjBHdmdZSEFOWUcxUWE5QmdjQTF3YStCcjhHQndEWEJ0WUd2Z1lIQU5nR3Z3YkFCZ2NBMkFiWEJyOEdCd0RaQnNBR3dRWUhBTmtHMkFiQUJnY0EyZ2JCQnNJR0J3RGFCdGtHd1FZSEFNTUcyZ2JDQmdjQXd3YmJCdG9HQndERUJ0c0d3d1lIQU1RRzNBYmJCZ2NBeFFiY0JzUUdCd0RGQnQwRzNBWUhBTVlHM1FiRkJnY0F4Z2JlQnQwR0J3Q3dCdDRHeGdZSEFMQUd4d2JlQmdjQTN3WXJCaXdHQndEZkJ1QUdLd1lIQU9BR0tnWXJCZ2NBNEFiaEJpb0dCd0RoQmlrR0tnWUhBT0VHNGdZcEJnY0E0Z1lvQmlrR0J3RGlCdU1HS0FZSEFPTUdKd1lvQmdjQTR3YmtCaWNHQndEa0JpWUdKd1lIQU9RRzVRWW1CZ2NBNVFZbEJpWUdCd0RsQnVZR0pRWUhBT1lHSkFZbEJnY0E1Z2JuQmlRR0J3RG5CaU1HSkFZSEFPY0c2QVlqQmdjQTZBWWlCaU1HQndEb0J1a0dJZ1lIQU9rR0lRWWlCZ2NBNlFicUJpRUdCd0RxQmlBR0lRWUhBT29HNndZZ0JnY0E2d1lmQmlBR0J3RHJCdXdHSHdZSEFPd0dOZ1lmQmdjQTdBYnRCallHQndEdEJqVUdOZ1lIQU8wRzdnWTFCZ2NBN2dZMEJqVUdCd0R1QnU4R05BWUhBTzhHTXdZMEJnY0E3d2J3QmpNR0J3RHdCaklHTXdZSEFQQUc4UVl5QmdjQThRWXhCaklHQndEeEJ2SUdNUVlIQVBJR01BWXhCZ2NBOGdiekJqQUdCd0R6Qmk4R01BWUhBUE1HOUFZdkJnY0E5QVl1Qmk4R0J3RDBCdlVHTGdZSEFQVUdMUVl1QmdjQTlRYjJCaTBHQndEMkJpd0dMUVlIQVBZRzN3WXNCZ2NBOXdaUkJrOEdCd0QzQnZnR1VRWUhBT0FHK0FiM0JnY0E0QWJmQnZnR0J3RDRCbE1HVVFZSEFQZ0crUVpUQmdjQTN3YjVCdmdHQndEZkJ2WUcrUVlIQVBrR1ZRWlRCZ2NBK1FiNkJsVUdCd0QyQnZvRytRWUhBUFlHOVFiNkJnY0ErZ1pYQmxVR0J3RDZCdnNHVndZSEFQVUcrd2I2QmdjQTlRYjBCdnNHQndEN0Jsa0dWd1lIQVBzRy9BWlpCZ2NBOUFiOEJ2c0dCd0QwQnZNRy9BWUhBUHdHV3daWkJnY0EvQWI5QmxzR0J3RHpCdjBHL0FZSEFQTUc4Z2I5QmdjQS9RWmRCbHNHQndEOUJ2NEdYUVlIQVBJRy9nYjlCZ2NBOGdieEJ2NEdCd0QrQm1BR1hRWUhBUDRHL3daZ0JnY0E4UWIvQnY0R0J3RHhCdkFHL3dZSEFQOEdZZ1pnQmdjQS93WUFCMklHQndEd0JnQUgvd1lIQVBBRzd3WUFCd2NBQUFka0JtSUdCd0FBQndFSFpBWUhBTzhHQVFjQUJ3Y0E3d2J1QmdFSEJ3QUJCMllHWkFZSEFBRUhBZ2RtQmdjQTdnWUNCd0VIQndEdUJ1MEdBZ2NIQUFJSE53Wm1CZ2NBQWdjREJ6Y0dCd0R0QmdNSEFnY0hBTzBHN0FZREJ3Y0FBd2M2QmpjR0J3QURCd1FIT2dZSEFPd0dCQWNEQndjQTdBYnJCZ1FIQndBRUJ6d0dPZ1lIQUFRSEJRYzhCZ2NBNndZRkJ3UUhCd0RyQnVvR0JRY0hBQVVIUGdZOEJnY0FCUWNHQno0R0J3RHFCZ1lIQlFjSEFPb0c2UVlHQndjQUJnZEFCajRHQndBR0J3Y0hRQVlIQU9rR0J3Y0dCd2NBNlFib0JnY0hCd0FIQjBJR1FBWUhBQWNIQ0FkQ0JnY0E2QVlJQndjSEJ3RG9CdWNHQ0FjSEFBZ0hSQVpDQmdjQUNBY0pCMFFHQndEbkJna0hDQWNIQU9jRzVnWUpCd2NBQ1FkR0JrUUdCd0FKQndvSFJnWUhBT1lHQ2djSkJ3Y0E1Z2JsQmdvSEJ3QUtCMGNHUmdZSEFBb0hDd2RIQmdjQTVRWUxCd29IQndEbEJ1UUdDd2NIQUFzSFNRWkhCZ2NBQ3djTUIwa0dCd0RrQmd3SEN3Y0hBT1FHNHdZTUJ3Y0FEQWRMQmtrR0J3QU1CdzBIU3dZSEFPTUdEUWNNQndjQTR3YmlCZzBIQndBTkIwMEdTd1lIQUEwSERnZE5CZ2NBNGdZT0J3MEhCd0RpQnVFR0RnY0hBQTRIVHdaTkJnY0FEZ2YzQms4R0J3RGhCdmNHRGdjSEFPRUc0QWIzQmdjQUR3Y1FCeEVIQndBUEJ4SUhFQWNIQUJNSEVnY1BCd2NBRXdjVUJ4SUhCd0FWQnhRSEV3Y0hBQlVIRmdjVUJ3Y0FGd2NXQnhVSEJ3QVhCeGdIRmdjSEFCa0hHQWNYQndjQUdRY2FCeGdIQndBYkJ4b0hHUWNIQUJzSEhBY2FCd2NBSFFjYkJ4NEhCd0FkQnh3SEd3Y0hBQjhISGdjZ0J3Y0FId2NkQng0SEJ3QWhCeUFISWdjSEFDRUhId2NnQndjQUl3Y2lCeVFIQndBakJ5RUhJZ2NIQUNVSEpBY21Cd2NBSlFjakJ5UUhCd0FuQnlZSEtBY0hBQ2NISlFjbUJ3Y0FLUWNvQnlvSEJ3QXBCeWNIS0FjSEFDc0hLZ2NzQndjQUt3Y3BCeW9IQndBdEJ5d0hMZ2NIQUMwSEt3Y3NCd2NBTHdjdUJ6QUhCd0F2QnkwSExnY0hBREVITUFjeUJ3Y0FNUWN2QnpBSEJ3QXpCeklITkFjSEFETUhNUWN5QndjQU5RY3pCelFIQndBMUJ6WUhNd2NIQURjSE5nYzFCd2NBTndjNEJ6WUhCd0E1QnpnSE53Y0hBRGtIT2djNEJ3Y0FPd2M2QnprSEJ3QTdCendIT2djSEFEMEhQQWM3QndjQVBRYytCendIQndBUkJ6NEhQUWNIQUJFSEVBYytCd2NBUGdjL0IwQUhCd0ErQnhBSFB3Y0hBQklIUHdjUUJ3Y0FFZ2RCQno4SEJ3QVVCMEVIRWdjSEFCUUhRZ2RCQndjQUZnZENCeFFIQndBV0IwTUhRZ2NIQUJnSFF3Y1dCd2NBR0FkRUIwTUhCd0FhQjBRSEdBY0hBQm9IUlFkRUJ3Y0FIQWRGQnhvSEJ3QWNCMFlIUlFjSEFFY0hIQWNkQndjQVJ3ZEdCeHdIQndCSUJ4MEhId2NIQUVnSFJ3Y2RCd2NBU1FjZkJ5RUhCd0JKQjBnSEh3Y0hBRW9ISVFjakJ3Y0FTZ2RKQnlFSEJ3QkxCeU1ISlFjSEFFc0hTZ2NqQndjQVN3Y25CMHdIQndCTEJ5VUhKd2NIQUV3SEtRZE5Cd2NBVEFjbkJ5a0hCd0JOQnlzSFRnY0hBRTBIS1FjckJ3Y0FUZ2N0QjA4SEJ3Qk9CeXNITFFjSEFFOEhMd2RRQndjQVR3Y3RCeThIQndCUUJ6RUhVUWNIQUZBSEx3Y3hCd2NBVVFjekIxSUhCd0JSQnpFSE13Y0hBRE1IVXdkU0J3Y0FNd2MyQjFNSEJ3QTJCMVFIVXdjSEFEWUhPQWRVQndjQU9BZFZCMVFIQndBNEJ6b0hWUWNIQURvSFZnZFZCd2NBT2djOEIxWUhCd0E4QjBBSFZnY0hBRHdIUGdkQUJ3Y0FRQWRYQjFnSEJ3QkFCejhIVndjSEFEOEhXUWRYQndjQVB3ZEJCMWtIQndCQkIxb0hXUWNIQUVFSFFnZGFCd2NBUWdkYkIxb0hCd0JDQjBNSFd3Y0hBRU1IWEFkYkJ3Y0FRd2RFQjF3SEJ3QkVCMTBIWEFjSEFFUUhSUWRkQndjQVJRZGVCMTBIQndCRkIwWUhYZ2NIQUY0SFJ3ZGZCd2NBWGdkR0IwY0hCd0JmQjBnSFlBY0hBRjhIUndkSUJ3Y0FZQWRKQjJFSEJ3QmdCMGdIU1FjSEFHRUhTZ2RpQndjQVlRZEpCMG9IQndCaUIwc0hZd2NIQUdJSFNnZExCd2NBWXdkTUIyUUhCd0JqQjBzSFRBY0hBR1FIVFFkbEJ3Y0FaQWRNQjAwSEJ3QmxCMDRIWmdjSEFHVUhUUWRPQndjQVpnZFBCMmNIQndCbUIwNEhUd2NIQUdjSFVBZG9Cd2NBWndkUEIxQUhCd0JvQjFFSGFRY0hBR2dIVUFkUkJ3Y0FhUWRTQjJvSEJ3QnBCMUVIVWdjSEFGSUhhd2RxQndjQVVnZFRCMnNIQndCVEIyd0hhd2NIQUZNSFZBZHNCd2NBVkFkdEIyd0hCd0JVQjFVSGJRY0hBRlVIYmdkdEJ3Y0FWUWRXQjI0SEJ3QldCMWdIYmdjSEFGWUhRQWRZQndjQVdBZHZCM0FIQndCWUIxY0hid2NIQUZrSGJ3ZFhCd2NBV1FkeEIyOEhCd0JhQjNFSFdRY0hBRm9IY2dkeEJ3Y0FXd2R5QjFvSEJ3QmJCM01IY2djSEFGd0hjd2RiQndjQVhBZDBCM01IQndCZEIzUUhYQWNIQUYwSGRRZDBCd2NBWGdkMUIxMEhCd0JlQjNZSGRRY0hBSGNIWGdkZkJ3Y0Fkd2QyQjE0SEJ3QjRCMThIWUFjSEFIZ0hkd2RmQndjQWVRZGdCMkVIQndCNUIzZ0hZQWNIQUhvSFlRZGlCd2NBZWdkNUIyRUhCd0I3QjJJSFl3Y0hBSHNIZWdkaUJ3Y0Fld2RrQjN3SEJ3QjdCMk1IWkFjSEFId0haUWQ5QndjQWZBZGtCMlVIQndCOUIyWUhmZ2NIQUgwSFpRZG1Cd2NBZmdkbkIzOEhCd0IrQjJZSFp3Y0hBSDhIYUFlQUJ3Y0Fmd2RuQjJnSEJ3Q0FCMmtIZ1FjSEFJQUhhQWRwQndjQWdRZHFCNElIQndDQkIya0hhZ2NIQUdvSGd3ZUNCd2NBYWdkckI0TUhCd0JyQjRRSGd3Y0hBR3NIYkFlRUJ3Y0FiQWVGQjRRSEJ3QnNCMjBIaFFjSEFHMEhoZ2VGQndjQWJRZHVCNFlIQndCdUIzQUhoZ2NIQUc0SFdBZHdCd2NBY0FlSEI0Z0hCd0J3QjI4SGh3Y0hBRzhIaVFlSEJ3Y0Fid2R4QjRrSEJ3QnhCNG9IaVFjSEFIRUhjZ2VLQndjQWNnZUxCNG9IQndCeUIzTUhpd2NIQUhNSGpBZUxCd2NBY3dkMEI0d0hCd0IwQjQwSGpBY0hBSFFIZFFlTkJ3Y0FkUWVPQjQwSEJ3QjFCM1lIamdjSEFJNEhkd2VQQndjQWpnZDJCM2NIQndDUEIzZ0hrQWNIQUk4SGR3ZDRCd2NBa0FkNUI1RUhCd0NRQjNnSGVRY0hBSkVIZWdlU0J3Y0FrUWQ1QjNvSEJ3Q1NCM3NIa3djSEFKSUhlZ2Q3QndjQWt3ZDhCNVFIQndDVEIzc0hmQWNIQUpRSGZRZVZCd2NBbEFkOEIzMEhCd0NWQjM0SGxnY0hBSlVIZlFkK0J3Y0FsZ2QvQjVjSEJ3Q1dCMzRIZndjSEFKY0hnQWVZQndjQWx3ZC9CNEFIQndDWUI0RUhtUWNIQUpnSGdBZUJCd2NBbVFlQ0I1b0hCd0NaQjRFSGdnY0hBSUlIbXdlYUJ3Y0FnZ2VEQjVzSEJ3Q0RCNXdIbXdjSEFJTUhoQWVjQndjQWhBZWRCNXdIQndDRUI0VUhuUWNIQUlVSG5nZWRCd2NBaFFlR0I1NEhCd0NHQjRnSG5nY0hBSVlIY0FlSUJ3Y0Fod2VmQjRnSEJ3Q0hCNkFIbndjSEFJY0hvUWVnQndjQWh3ZUpCNkVIQndDSkI2SUhvUWNIQUlrSGlnZWlCd2NBaWdlakI2SUhCd0NLQjRzSG93Y0hBSXNIcEFlakJ3Y0Fpd2VNQjZRSEJ3Q01CNlVIcEFjSEFJd0hqUWVsQndjQWpRZW1CNlVIQndDTkI0NEhwZ2NIQUtZSGp3ZW5Cd2NBcGdlT0I0OEhCd0NuQjVBSHFBY0hBS2NIandlUUJ3Y0FxQWVSQjZrSEJ3Q29CNUFIa1FjSEFLa0hrZ2VxQndjQXFRZVJCNUlIQndDcUI1TUhxd2NIQUtvSGtnZVRCd2NBckFlVEI1UUhCd0NzQjZzSGt3Y0hBSzBIbEFlVkJ3Y0FyUWVzQjVRSEJ3Q3VCNVVIbGdjSEFLNEhyUWVWQndjQXJ3ZVdCNWNIQndDdkI2NEhsZ2NIQUxBSGx3ZVlCd2NBc0FldkI1Y0hCd0N4QjVnSG1RY0hBTEVIc0FlWUJ3Y0FzZ2VaQjVvSEJ3Q3lCN0VIbVFjSEFKc0hzZ2VhQndjQW13ZXpCN0lIQndDY0I3TUhtd2NIQUp3SHRBZXpCd2NBblFlMEI1d0hCd0NkQjdVSHRBY0hBSjRIdFFlZEJ3Y0FuZ2UyQjdVSEJ3Q0lCN1lIbmdjSEFJZ0hud2UyQndjQW53ZkNCYjhGQndDZkI2QUh3Z1VIQUtBSHd3WENCUWNBb0FlaEI4TUZCd0NoQjhVRnd3VUhBS0VIb2dmRkJRY0FvZ2ZIQmNVRkJ3Q2lCNk1IeHdVSEFLTUh5UVhIQlFjQW93ZWtCOGtGQndDa0I4c0Z5UVVIQUtRSHBRZkxCUWNBcFFmTkJjc0ZCd0NsQjZZSHpRVUhBTTBGcHdmUUJRY0F6UVdtQjZjSEJ3RFFCYWdIMGdVSEFOQUZwd2VvQndjQTBnV3BCOVFGQndEU0JhZ0hxUWNIQU5RRnFnZldCUWNBMUFXcEI2b0hCd0RXQmFzSDJBVUhBTllGcWdlckJ3Y0EyQVdzQjlrRkJ3RFlCYXNIckFjSEFOa0ZyUWZiQlFjQTJRV3NCNjBIQndEYkJhNEgzUVVIQU5zRnJRZXVCd2NBM1FXdkI5OEZCd0RkQmE0SHJ3Y0hBTjhGc0FmaEJRY0Ezd1d2QjdBSEJ3RGhCYkVINHdVSEFPRUZzQWV4QndjQTR3V3lCK1VGQndEakJiRUhzZ2NIQUxJSDZBWGxCUWNBc2dlekIrZ0ZCd0N6QitvRjZBVUhBTE1IdEFmcUJRY0F0QWZzQmVvRkJ3QzBCN1VIN0FVSEFMVUg3Z1hzQlFjQXRRZTJCKzRGQndDMkI3OEY3Z1VIQUxZSG53ZS9CUWNBeHdhM0I3Z0hCd0RIQnNnR3R3Y0hBTWdHdVFlM0J3Y0F5QWJKQnJrSEJ3REpCcm9IdVFjSEFNa0d5Z2E2QndjQXlnYTdCN29IQndES0Jzc0d1d2NIQU1zR3ZBZTdCd2NBeXdiTUJyd0hCd0RNQnIwSHZBY0hBTXdHelFhOUJ3Y0F6UWErQjcwSEJ3RE5CczRHdmdjSEFMNEh6d2EvQndjQXZnZk9CczhHQndDL0I5QUd3QWNIQUw4SHp3YlFCZ2NBd0FmUkJzRUhCd0RBQjlBRzBRWUhBTUVIMGdiQ0J3Y0F3UWZSQnRJR0J3RENCOU1Hd3djSEFNSUgwZ2JUQmdjQXd3ZlVCc1FIQndEREI5TUcxQVlIQU1RSDFRYkZCd2NBeEFmVUJ0VUdCd0RGQjlZR3hnY0hBTVVIMVFiV0JnY0F4Z2ZYQnNjSEJ3REdCOVlHMXdZSEFNY0gyQWJJQndjQXh3ZlhCdGdHQndESUI5a0d5UWNIQU1nSDJBYlpCZ2NBeVFmYUJzb0hCd0RKQjlrRzJnWUhBTm9HeXdmS0J3Y0EyZ2JiQnNzSEJ3RGJCc3dIeXdjSEFOc0czQWJNQndjQTNBYk5COHdIQndEY0J0MEd6UWNIQU4wR3pnZk5Cd2NBM1FiZUJzNEhCd0RlQnJnSHpnY0hBTjRHeHdhNEJ3Y0F0d2ZQQjdnSEJ3QzNCOUFIendjSEFMY0gwUWZRQndjQXR3ZTVCOUVIQndDNUI5SUgwUWNIQUxrSHVnZlNCd2NBdWdmVEI5SUhCd0M2QjdzSDB3Y0hBTHNIMUFmVEJ3Y0F1d2U4QjlRSEJ3QzhCOVVIMUFjSEFMd0h2UWZWQndjQXZRZldCOVVIQndDOUI3NEgxZ2NIQU5ZSHZ3ZlhCd2NBMWdlK0I3OEhCd0RYQjhBSDJBY0hBTmNIdndmQUJ3Y0EyQWZCQjlrSEJ3RFlCOEFId1FjSEFOa0h3Z2ZhQndjQTJRZkJCOElIQndEYUI4TUgyd2NIQU5vSHdnZkRCd2NBM0FmREI4UUhCd0RjQjlzSHd3Y0hBTjBIeEFmRkJ3Y0EzUWZjQjhRSEJ3RGVCOFVIeGdjSEFONEgzUWZGQndjQTN3ZkdCOGNIQndEZkI5NEh4Z2NIQU9BSHh3ZklCd2NBNEFmZkI4Y0hCd0RoQjhnSHlRY0hBT0VINEFmSUJ3Y0E0Z2ZKQjhvSEJ3RGlCK0VIeVFjSEFNc0g0Z2ZLQndjQXl3ZmpCK0lIQndETUIrTUh5d2NIQU13SDVBZmpCd2NBelFma0I4d0hCd0ROQitVSDVBY0hBTTRINVFmTkJ3Y0F6Z2ZtQitVSEJ3QzRCK1lIemdjSEFMZ0h6d2ZtQndjQXp3Zm5CK2dIQndEUEI5QUg1d2NIQU5BSDZRZm5Cd2NBMEFmUkIra0hCd0RSQitvSDZRY0hBTkVIMGdmcUJ3Y0EwZ2ZyQitvSEJ3RFNCOU1INndjSEFOTUg3QWZyQndjQTB3ZlVCK3dIQndEVUIrMEg3QWNIQU5RSDFRZnRCd2NBMVFmdUIrMEhCd0RWQjlZSDdnY0hBTzRIMXdmdkJ3Y0E3Z2ZXQjljSEJ3RHZCOWdIOEFjSEFPOEgxd2ZZQndjQThBZlpCL0VIQndEd0I5Z0gyUWNIQVBFSDJnZnlCd2NBOFFmWkI5b0hCd0R5QjlzSDh3Y0hBUElIMmdmYkJ3Y0E4d2ZjQi9RSEJ3RHpCOXNIM0FjSEFQUUgzUWYxQndjQTlBZmNCOTBIQndEMUI5NEg5Z2NIQVBVSDNRZmVCd2NBOWdmZkIvY0hCd0QyQjk0SDN3Y0hBUGNINEFmNEJ3Y0E5d2ZmQitBSEJ3RDRCK0VIK1FjSEFQZ0g0QWZoQndjQStRZmlCL29IQndENUIrRUg0Z2NIQU9JSCt3ZjZCd2NBNGdmakIvc0hCd0RqQi93SCt3Y0hBT01INUFmOEJ3Y0E1QWY5Qi93SEJ3RGtCK1VIL1FjSEFPVUgvZ2Y5QndjQTVRZm1CLzRIQndEbUIrZ0gvZ2NIQU9ZSHp3Zm9Cd2NBL3djQUNBRUlCd0QvQndJSUFBZ0hBQUlJQXdnQUNBY0FBZ2dFQ0FNSUJ3QUZDQUVJQmdnSEFBVUkvd2NCQ0FjQUJ3Z0lDQWtJQndBSENBb0lDQWdIQUFvSUN3Z0lDQWNBQ2dnTUNBc0lCd0FOQ0FrSURnZ0hBQTBJQndnSkNBY0FEQWdQQ0FzSUJ3QU1DQkFJRHdnSEFCRUlEZ2dTQ0FjQUVRZ05DQTRJQndBUUNCTUlEd2dIQUJBSUZBZ1RDQWNBRlFnU0NCWUlCd0FWQ0JFSUVnZ0hBQlFJRndnVENBY0FGQWdZQ0JjSUJ3QVpDQllJR2dnSEFCa0lGUWdXQ0FjQUJBZ2FDQU1JQndBRUNCa0lHZ2dIQUJnSUJnZ1hDQWNBR0FnRkNBWUlCd0QvQnhzSUFnZ0hBUDhISEFnYkNBY0FHd2dFQ0FJSUJ3QWJDQjBJQkFnSEFBVUlIQWovQndjQUJRZ2VDQndJQndBZkNBb0lCd2dIQUI4SUlBZ0tDQWNBQ2dnaENBd0lCd0FLQ0NBSUlRZ0hBQ0lJQndnTkNBY0FJZ2dmQ0FjSUJ3QU1DQ01JRUFnSEFBd0lJUWdqQ0FjQUpBZ05DQkVJQndBa0NDSUlEUWdIQUJBSUpRZ1VDQWNBRUFnakNDVUlCd0FtQ0JFSUZRZ0hBQ1lJSkFnUkNBY0FGQWduQ0JnSUJ3QVVDQ1VJSndnSEFDZ0lGUWdaQ0FjQUtBZ21DQlVJQndBZENCa0lCQWdIQUIwSUtBZ1pDQWNBR0FnZUNBVUlCd0FZQ0NjSUhnZ0hBQ2tJR3dnY0NBY0FLUWdxQ0JzSUJ3QXFDQjBJR3dnSEFDb0lLd2dkQ0FjQUxBZ2NDQjRJQndBc0NDa0lIQWdIQUMwSUlBZ2ZDQWNBTFFndUNDQUlCd0F1Q0NFSUlBZ0hBQzRJTHdnaENBY0FNQWdmQ0NJSUJ3QXdDQzBJSHdnSEFDOElJd2doQ0FjQUx3Z3hDQ01JQndBeUNDSUlKQWdIQURJSU1BZ2lDQWNBTVFnbENDTUlCd0F4Q0RNSUpRZ0hBRFFJSkFnbUNBY0FOQWd5Q0NRSUJ3QXpDQ2NJSlFnSEFETUlOUWduQ0FjQU5nZ21DQ2dJQndBMkNEUUlKZ2dIQUNzSUtBZ2RDQWNBS3dnMkNDZ0lCd0ExQ0I0SUp3Z0hBRFVJTEFnZUNBY0FOd2dxQ0NrSUJ3QTNDRGdJS2dnSEFEZ0lLd2dxQ0FjQU9BZzVDQ3NJQndBNkNDa0lMQWdIQURvSU53Z3BDQWNBT3dndUNDMElCd0E3Q0R3SUxnZ0hBRHdJTHdndUNBY0FQQWc5Q0M4SUJ3QStDQzBJTUFnSEFENElPd2d0Q0FjQVBRZ3hDQzhJQndBOUNEOElNUWdIQUVBSU1BZ3lDQWNBUUFnK0NEQUlCd0EvQ0RNSU1RZ0hBRDhJUVFnekNBY0FRZ2d5Q0RRSUJ3QkNDRUFJTWdnSEFFRUlOUWd6Q0FjQVFRaERDRFVJQndCRUNEUUlOZ2dIQUVRSVFnZzBDQWNBT1FnMkNDc0lCd0E1Q0VRSU5nZ0hBRU1JTEFnMUNBY0FRd2c2Q0N3SUJ3QkZDRGdJTndnSEFFVUlSZ2c0Q0FjQVJnZzVDRGdJQndCR0NFY0lPUWdIQUVnSU53ZzZDQWNBU0FoRkNEY0lCd0JKQ0R3SU93Z0hBRWtJU2dnOENBY0FTZ2c5Q0R3SUJ3QktDRXNJUFFnSEFFd0lPd2crQ0FjQVRBaEpDRHNJQndCTENEOElQUWdIQUVzSVRRZy9DQWNBVGdnK0NFQUlCd0JPQ0V3SVBnZ0hBRTBJUVFnL0NBY0FUUWhQQ0VFSUJ3QlFDRUFJUWdnSEFGQUlUZ2hBQ0FjQVR3aERDRUVJQndCUENGRUlRd2dIQUZJSVFnaEVDQWNBVWdoUUNFSUlCd0JIQ0VRSU9RZ0hBRWNJVWdoRUNBY0FVUWc2Q0VNSUJ3QlJDRWdJT2dnSEFGTUlSZ2hGQ0FjQVV3aFVDRVlJQndCVUNFY0lSZ2dIQUZRSVZRaEhDQWNBVmdoRkNFZ0lCd0JXQ0ZNSVJRZ0hBRmNJU2doSkNBY0FWd2hZQ0VvSUJ3QllDRXNJU2dnSEFGZ0lXUWhMQ0FjQVdnaEpDRXdJQndCYUNGY0lTUWdIQUZrSVRRaExDQWNBV1FoYkNFMElCd0JjQ0V3SVRnZ0hBRndJV2doTUNBY0FXd2hQQ0UwSUJ3QmJDRjBJVHdnSEFGNElUZ2hRQ0FjQVhnaGNDRTRJQndCZENGRUlUd2dIQUYwSVh3aFJDQWNBWUFoUUNGSUlCd0JnQ0Y0SVVBZ0hBRlVJVWdoSENBY0FWUWhnQ0ZJSUJ3QmZDRWdJVVFnSEFGOElWZ2hJQ0FjQVlRaFVDRk1JQndCaENHSUlWQWdIQUdJSVZRaFVDQWNBWWdoakNGVUlCd0JrQ0ZNSVZnZ0hBR1FJWVFoVENBY0FaUWhZQ0ZjSUJ3QmxDR1lJV0FnSEFHWUlXUWhZQ0FjQVpnaG5DRmtJQndCb0NGY0lXZ2dIQUdnSVpRaFhDQWNBWndoYkNGa0lCd0JuQ0drSVd3Z0hBR29JV2doY0NBY0FhZ2hvQ0ZvSUJ3QnBDRjBJV3dnSEFHa0lhd2hkQ0FjQWJBaGNDRjRJQndCc0NHb0lYQWdIQUdzSVh3aGRDQWNBYXdodENGOElCd0J1Q0Y0SVlBZ0hBRzRJYkFoZUNBY0FZd2hnQ0ZVSUJ3QmpDRzRJWUFnSEFHMElWZ2hmQ0FjQWJRaGtDRllJQndCdkNHSUlZUWdIQUc4SWNBaGlDQWNBY0FoakNHSUlCd0J3Q0hFSVl3Z0hBSElJWVFoa0NBY0FjZ2h2Q0dFSUJ3QnpDR1lJWlFnSEFITUlkQWhtQ0FjQWRBaG5DR1lJQndCMENIVUlad2dIQUhZSVpRaG9DQWNBZGdoekNHVUlCd0IxQ0drSVp3Z0hBSFVJZHdocENBY0FlQWhvQ0dvSUJ3QjRDSFlJYUFnSEFIY0lhd2hwQ0FjQWR3aDVDR3NJQndCNkNHb0liQWdIQUhvSWVBaHFDQWNBZVFodENHc0lCd0I1Q0hzSWJRZ0hBSHdJYkFodUNBY0FmQWg2Q0d3SUJ3QnhDRzRJWXdnSEFIRUlmQWh1Q0FjQWV3aGtDRzBJQndCN0NISUlaQWdIQUgwSWNBaHZDQWNBZlFoK0NIQUlCd0IrQ0hFSWNBZ0hBSDRJZndoeENBY0FnQWh2Q0hJSUJ3Q0FDSDBJYndnSEFJRUlkQWh6Q0FjQWdRaUNDSFFJQndDQ0NIVUlkQWdIQUlJSWd3aDFDQWNBaEFoekNIWUlCd0NFQ0lFSWN3Z0hBSU1JZHdoMUNBY0Fnd2lGQ0hjSUJ3Q0dDSFlJZUFnSEFJWUloQWgyQ0FjQWhRaDVDSGNJQndDRkNJY0llUWdIQUlnSWVBaDZDQWNBaUFpR0NIZ0lCd0NIQ0hzSWVRZ0hBSWNJaVFoN0NBY0FpZ2g2Q0h3SUJ3Q0tDSWdJZWdnSEFIOElmQWh4Q0FjQWZ3aUtDSHdJQndDSkNISUlld2dIQUlrSWdBaHlDQWNBaXdoK0NIMElCd0NMQ0l3SWZnZ0hBSXdJZndoK0NBY0FqQWlOQ0g4SUJ3Q09DSDBJZ0FnSEFJNElpd2g5Q0FjQWp3aUNDSUVJQndDUENKQUlnZ2dIQUpBSWd3aUNDQWNBa0FpUkNJTUlCd0NTQ0lFSWhBZ0hBSklJandpQkNBY0FrUWlGQ0lNSUJ3Q1JDSk1JaFFnSEFKUUloQWlHQ0FjQWxBaVNDSVFJQndDVENJY0loUWdIQUpNSWxRaUhDQWNBbGdpR0NJZ0lCd0NXQ0pRSWhnZ0hBSlVJaVFpSENBY0FsUWlYQ0lrSUJ3Q1lDSWdJaWdnSEFKZ0lsZ2lJQ0FjQWpRaUtDSDhJQndDTkNKZ0lpZ2dIQUpjSWdBaUpDQWNBbHdpT0NJQUlCd0NaQ0l3SWl3Z0hBSmtJbWdpTUNBY0FtZ2lOQ0l3SUJ3Q2FDSnNJalFnSEFKd0lpd2lPQ0FjQW5BaVpDSXNJQndDZENKQUlqd2dIQUowSW5naVFDQWNBbmdpUkNKQUlCd0NlQ0o4SWtRZ0hBS0FJandpU0NBY0FvQWlkQ0k4SUJ3Q2ZDSk1Ja1FnSEFKOElvUWlUQ0FjQW9naVNDSlFJQndDaUNLQUlrZ2dIQUtFSWxRaVRDQWNBb1FpakNKVUlCd0NrQ0pRSWxnZ0hBS1FJb2dpVUNBY0Fvd2lYQ0pVSUJ3Q2pDS1VJbHdnSEFLWUlsZ2lZQ0FjQXBnaWtDSllJQndDYkNKZ0lqUWdIQUpzSXBnaVlDQWNBcFFpT0NKY0lCd0NsQ0p3SWpnZ0hBS2NJbWdpWkNBY0Fwd2lvQ0pvSUJ3Q29DSnNJbWdnSEFLZ0lxUWliQ0FjQXFnaVpDSndJQndDcUNLY0ltUWdIQUtzSW5naWRDQWNBcXdpc0NKNElCd0NzQ0o4SW5nZ0hBS3dJclFpZkNBY0FyZ2lkQ0tBSUJ3Q3VDS3NJblFnSEFLMElvUWlmQ0FjQXJRaXZDS0VJQndDd0NLQUlvZ2dIQUxBSXJnaWdDQWNBcndpakNLRUlCd0N2Q0xFSW93Z0hBTElJb2dpa0NBY0FzZ2l3Q0tJSUJ3Q3hDS1VJb3dnSEFMRUlzd2lsQ0FjQXRBaWtDS1lJQndDMENMSUlwQWdIQUtrSXBnaWJDQWNBcVFpMENLWUlCd0N6Q0p3SXBRZ0hBTE1JcWdpY0NBY0F0UWlvQ0tjSUJ3QzFDTFlJcUFnSEFMWUlxUWlvQ0FjQXRnaTNDS2tJQndDNENLY0lxZ2dIQUxnSXRRaW5DQWNBdVFpc0NLc0lCd0M1Q0xvSXJBZ0hBTG9JclFpc0NBY0F1Z2k3Q0swSUJ3QzhDS3NJcmdnSEFMd0l1UWlyQ0FjQXV3aXZDSzBJQndDN0NMMElyd2dIQUw0SXJnaXdDQWNBdmdpOENLNElCd0M5Q0xFSXJ3Z0hBTDBJdndpeENBY0F3QWl3Q0xJSUJ3REFDTDRJc0FnSEFMOElzd2l4Q0FjQXZ3akJDTE1JQndEQ0NMSUl0QWdIQU1JSXdBaXlDQWNBdHdpMENLa0lCd0MzQ01JSXRBZ0hBTUVJcWdpekNBY0F3UWk0Q0tvSUJ3RERDTFlJdFFnSEFNTUl4QWkyQ0FjQXhBaTNDTFlJQndERUNNVUl0d2dIQU1ZSXRRaTRDQWNBeGdqRENMVUlCd0RIQ0xvSXVRZ0hBTWNJeUFpNkNBY0F5QWk3Q0xvSUJ3RElDTWtJdXdnSEFNb0l1UWk4Q0FjQXlnakhDTGtJQndESkNMMEl1d2dIQU1rSXl3aTlDQWNBekFpOENMNElCd0RNQ01vSXZBZ0hBTXNJdndpOUNBY0F5d2pOQ0w4SUJ3RE9DTDRJd0FnSEFNNEl6QWkrQ0FjQXpRakJDTDhJQndETkNNOEl3UWdIQU5BSXdBakNDQWNBMEFqT0NNQUlCd0RGQ01JSXR3Z0hBTVVJMEFqQ0NBY0F6d2k0Q01FSUJ3RFBDTVlJdUFnSEFORUl4QWpEQ0FjQTBRalNDTVFJQndEU0NBRUlBQWdIQU5JSTBRZ0JDQWNBMGdqRkNNUUlCd0RTQ05NSXhRZ0hBTk1JQUFnRENBY0Ewd2pTQ0FBSUJ3RFVDTU1JeGdnSEFOUUkwUWpEQ0FjQTBRZ0dDQUVJQndEUkNOUUlCZ2dIQU5VSXlBakhDQWNBMVFqV0NNZ0lCd0RXQ05jSTJBZ0hBTllJMVFqWENBY0ExZ2pKQ01nSUJ3RFdDTmtJeVFnSEFOa0kyQWphQ0FjQTJRaldDTmdJQndEYkNNY0l5Z2dIQU5zSTFRakhDQWNBMVFqY0NOY0lCd0RWQ05zSTNBZ0hBTmtJeXdqSkNBY0EyUWpkQ01zSUJ3RGRDTm9JRHdnSEFOMEkyUWphQ0FjQTNnaktDTXdJQndEZUNOc0l5Z2dIQU5zSUVnamNDQWNBMndqZUNCSUlCd0RkQ00wSXl3Z0hBTjBJM3dqTkNBY0Ezd2dQQ0JNSUJ3RGZDTjBJRHdnSEFPQUl6QWpPQ0FjQTRBamVDTXdJQndEZUNCWUlFZ2dIQU40STRBZ1dDQWNBM3dqUENNMElCd0RmQ09FSXp3Z0hBT0VJRXdnWENBY0E0UWpmQ0JNSUJ3RGlDTTRJMEFnSEFPSUk0QWpPQ0FjQTRBZ2FDQllJQndEZ0NPSUlHZ2dIQU5NSTBBakZDQWNBMHdqaUNOQUlCd0RpQ0FNSUdnZ0hBT0lJMHdnRENBY0E0UWpHQ004SUJ3RGhDTlFJeGdnSEFOUUlGd2dHQ0FjQTFBamhDQmNJQndBd1FkMFZBQUJ5WVhZMExXRnNkUURtQ2dBQUFRQUNBQU1BQkFBRkFBWUFCd0FJQUFrQUNnQUxBQXdBRFFBT0FBOEFFQUFSQUJJQUV3QVVBQlVBRmdBWEFCZ0FHUUFhQUJzQUhBQWRBQjRBSHdBZ0FDRUFJZ0FqQUNRQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJBRUlBUXdCRUFFVUFSZ0JIQUVnQVNRQktBRXNBVEFCTkFFNEFUd0JRQUZFQVVnQlRBRlFBVlFCV0FGY0FXQUJaQUZvQVd3QmNBRjBBWGdCZkFHQUFZUUJpQUdNQVpBQmxBR1lBWndCb0FHa0FhZ0JyQUd3QWJRQnVBRzhBY0FCeEFISUFjd0IwQUhVQWRnQjNBSGdBZVFCNkFIc0FmQUI5QUg0QWZ3Q0FBSUVBZ2dDREFJUUFoUUNHQUljQWlBQ0pBSW9BaXdDTUFJMEFqZ0NQQUpBQWtRQ1NBSk1BbEFDVkFKWUFsd0NZQUprQW1nQ2JBSndBblFDZUFKOEFvQUNoQUtJQW93Q2tBS1VBcGdDbkFLZ0FxUUNxQUtzQXJBQ3RBSzRBcndDd0FMRUFzZ0N6QUxRQXRRQzJBTGNBdUFDNUFMb0F1d0M4QUwwQXZnQy9BTUFBd1FEQ0FNTUF4QURGQU1ZQXh3RElBTWtBeWdETEFNd0F6UURPQU04QTBBRFJBTklBMHdEVUFOVUExZ0RYQU5nQTJRRGFBTnNBM0FEZEFONEEzd0RnQU9FQTRnRGpBT1FBNVFEbUFPY0E2QURwQU9vQTZ3RHNBTzBBN2dEdkFQQUE4UUR5QVBNQTlBRDFBUFlBOXdENEFQa0ErZ0Q3QVB3QS9RRCtBUDhBQUFFQkFRSUJBd0VFQVFVQkJnRUhBUWdCQ1FFS0FRc0JEQUVOQVE0QkR3RVFBUkVCRWdFVEFSUUJGUUVXQVJjQkdBRVpBUm9CR3dFY0FSMEJIZ0VmQVNBQklRRWlBU01CSkFFbEFTWUJKd0VvQVNrQktnRXJBU3dCTFFFdUFTOEJNQUV4QVRJQk13RTBBVFVCTmdFM0FUZ0JPUUU2QVRzQlBBRTlBVDRCUHdGQUFVRUJRZ0ZEQVVRQlJRRkdBVWNCU0FGSkFVb0JTd0ZNQVUwQlRnRlBBVkFCVVFGU0FWTUJWQUZWQVZZQlZ3RllBVmtCV2dGYkFWd0JYUUZlQVY4QllBRmhBV0lCWXdGa0FXVUJaZ0ZuQVdnQmFRRnFBV3NCYkFGdEFXNEJid0Z3QVhFQmNnRnpBWFFCZFFGMkFYY0JlQUY1QVhvQmV3RjhBWDBCZmdGL0FZQUJnUUdDQVlNQmhBR0ZBWVlCaHdHSUFZa0JpZ0dMQVl3QmpRR09BWThCa0FHUkFaSUJrd0dVQVpVQmxnR1hBWmdCbVFHYUFac0JuQUdkQVo0Qm53R2dBYUVCb2dHakFhUUJwUUdtQWFjQnFBR3BBYW9CcXdHc0FhMEJyZ0d2QWJBQnNRR3lBYk1CdEFHMUFiWUJ0d0c0QWJrQnVnRzdBYndCdlFHK0FiOEJ3QUhCQWNJQnd3SEVBY1VCeGdISEFjZ0J5UUhLQWNzQnpBSE5BYzRCendIUUFkRUIwZ0hUQWRRQjFRSFdBZGNCMkFIWkFkb0Iyd0hjQWQwQjNnSGZBZUFCNFFIaUFlTUI1QUhsQWVZQjV3SG9BZWtCNmdIckFld0I3UUh1QWU4QjhBSHhBZklCOHdIMEFmVUI5Z0gzQWZnQitRSDZBZnNCL0FIOUFmNEIvd0VBQWdFQ0FnSURBZ1FDQlFJR0FnY0NDQUlKQWdvQ0N3SU1BZzBDRGdJUEFoQUNFUUlTQWhNQ0ZBSVZBaFlDRndJWUFoa0NHZ0liQWh3Q0hRSWVBaDhDSUFJaEFpSUNJd0lrQWlVQ0pnSW5BaWdDS1FJcUFpc0NMQUl0QWk0Q0x3SXdBakVDTWdJekFqUUNOUUkyQWpjQ09BSTVBam9DT3dJOEFqMENQZ0kvQWtBQ1FRSkNBa01DUkFKRkFrWUNSd0pJQWtrQ1NnSkxBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1BbWNDYUFKcEFtb0Nhd0pzQW0wQ2JnSnZBbkFDY1FKeUFuTUNkQUoxQW5ZQ2R3SjRBbmtDZWdKN0Fud0NmUUorQW44Q2dBS0JBb0lDZ3dLRUFvVUNoZ0tIQW9nQ2lRS0tBb3NDakFLTkFvNENqd0tRQXBFQ2tnS1RBcFFDbFFLV0FwY0NtQUtaQXBvQ213S2NBcDBDbmdLZkFxQUNvUUtpQXFNQ3BBS2xBcVlDcHdLb0Fxa0NxZ0tyQXF3Q3JRS3VBcThDc0FLeEFySUNzd0swQXJVQ3RnSzNBcmdDdVFLNkFyc0N2QUs5QXI0Q3Z3TEFBc0VDd2dMREFzUUN4UUxHQXNjQ3lBTEpBc29DeXdMTUFzMEN6Z0xQQXRBQzBRTFNBdE1DMUFMVkF0WUMxd0xZQXRrQzJnTGJBdHdDM1FMZUF0OEM0QUxoQXVJQzR3TGtBdVVDNWdMbkF1Z0M2UUxxQXVzQzdBTHRBdTRDN3dMd0F2RUM4Z0x6QXZRQzlRTDJBdmNDK0FMNUF2b0Mrd0w4QXYwQy9nTC9BZ0FEQVFNQ0F3TURCQU1GQXdZREJ3TUlBd2tEQ2dNTEF3d0REUU1PQXc4REVBTVJBeElERXdNVUF4VURGZ01YQXhnREdRTWFBeHNESEFNZEF4NERId01nQXlFRElnTWpBeVFESlFNbUF5Y0RLQU1wQXlvREt3TXNBeTBETGdNdkF6QURNUU15QXpNRE5BTTFBellETndNNEF6a0RPZ003QXp3RFBRTStBejhEUUFOQkEwSURRd05FQTBVRFJnTkhBMGdEU1FOS0Ewc0RUQU5OQTA0RFR3TlFBMUVEVWdOVEExUURWUU5XQTFjRFdBTlpBMW9EV3dOY0ExMERYZ05mQTJBRFlRTmlBMk1EWkFObEEyWURad05vQTJrRGFnTnJBMndEYlFOdUEyOERjQU54QTNJRGN3TjBBM1VEZGdOM0EzZ0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnT1BBNUFEa1FPU0E1TURsQU9WQTVZRGx3T1lBNWtEbWdPYkE1d0RuUU9lQTU4RG9BT2hBNklEb3dPa0E2VURwZ09uQTZnRHFRT3FBNnNEckFPdEE2NERyd093QTdFRHNnT3pBN1FEdFFPMkE3Y0R1QU81QTdvRHV3TzhBNzBEdmdPL0E4QUR3UVBDQThNRHhBUEZBOFlEeHdQSUE4a0R5Z1BMQTh3RHpRUE9BODhEMEFQUkE5SUQwd1BVQTlVRDFnUFhBOWdEMlFQYUE5c0QzQVBkQTk0RDN3UGdBK0VENGdQakErUUQ1UVBtQStjRDZBUHBBK29ENndQc0ErMEQ3Z1B2QS9BRDhRUHlBL01EOUFQMUEvWUQ5d1A0QS9rRCtnUDdBL3dEL1FQK0EvOERBQVFCQkFJRUF3UUVCQVVFQmdRSEJBZ0VDUVFLQkFzRURBUU5CQTRFRHdRUUJCRUVFZ1FUQkJRRUZRUVdCQmNFR0FRWkJCb0VHd1FjQkIwRUhnUWZCQ0FFSVFRaUJDTUVKQVFsQkNZRUp3UW9CQ2tFS2dRckJDd0VMUVF1QkM4RU1BUXhCRElFTXdRMEJEVUVOZ1EzQkRnRU9RUTZCRHNFUEFROUJENEVQd1JBQkVFRVFnUkRCRVFFUlFSR0JFY0VTQVJKQkVvRVN3Uk1CRTBFVGdSUEJGQUVVUVJTQkZNRVZBUlZCRllFVndSWUJGa0VXZ1JiQkZ3RVhRUmVCRjhFWUFSaEJHSUVZd1JrQkdVRVpnUm5CR2dFYVFScUJHc0ViQVJ0Qkc0RWJ3UndCSEVFY2dSekJIUUVkUVIyQkhjRWVBUjVCSG9FZXdSOEJIMEVmZ1IvQklBRWdRU0NCSU1FaEFTRkJJWUVod1NJQklrRWlnU0xCSXdFalFTT0JJOEVrQVNSQkpJRWt3U1VCSlVFbGdTWEJKZ0VtUVNhQkpzRW5BU2RCSjRFbndTZ0JLRUVvZ1NqQktRRXBRU21CS2NFcUFTcEJLb0Vxd1NzQkswRXJnU3ZCTEFFc1FTeUJMTUV0QVMxQkxZRXR3UzRCTGtFdWdTN0JMd0V2UVMrQkw4RXdBVEJCTUlFd3dURUJNVUV4Z1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOY0UyQVRaQk5vRTJ3VGNCTjBFM2dUZkJPQUU0UVRpQk9NRTVBVGxCT1lFNXdUb0JPa0U2Z1RyQk93RTdRVHVCTzhFOEFUeEJQSUU4d1QwQlBVRTlnVDNCUGdFK1FUNkJQc0UvQVQ5QlA0RS93UUFCUUVGQWdVREJRUUZCUVVHQlFjRkNBVUpCUW9GQ3dVTUJRMEZEZ1VQQlJBRkVRVVNCUk1GRkFVVkJSWUZGd1VZQlJrRkdnVWJCUndGSFFVZUJSOEZJQVVoQlNJRkl3VWtCU1VGSmdVbkJTZ0ZLUVVxQlNzRkxBVXRCUzRGTHdVd0JURUZNZ1V6QlRRRk5RVTJCVGNGT0FVNUJUb0ZPd1U4QlQwRlBnVS9CVUFGUVFWQ0JVTUZSQVZGQlVZRlJ3VklCVWtGU2dWTEJVd0ZUUVZPQlU4RlVBVlJCVklGVXdWVUJWVUZWZ1ZYQlZnRldRVmFCVnNGWEFWZEJWNEZYd1ZnQldFRllnVmpCV1FGWlFWbUJXY0ZhQVZwQldvRmF3VnNCVzBGYmdWdkJYQUZjUVZ5QlhNRmRBVjFCWFlGZHdWNEJYa0ZlZ1Y3Qlh3RmZRVitCWDhGZ0FXQkJZSUZnd1dFQllVRmhnV0hCWWdGaVFXS0JZc0ZqQVdOQlk0Rmp3V1FCWkVGa2dXVEJaUUZsUVdXQlpjRm1BV1pCWm9GbXdXY0JaMEZuZ1dmQmFBRm9RV2lCYU1GcEFXbEJhWUZwd1dvQmFrRnFnV3JCYXdGclFXdUJhOEZzQVd4QmJJRnN3VzBCYlVGdGdXM0JiZ0Z1UVc2QmJzRnZBVzlCYjRGdndYQUJjRUZ3Z1hEQmNRRnhRWEdCY2NGeUFYSkJjb0Z5d1hNQmMwRnpnWFBCZEFGMFFYU0JkTUYxQVhWQmRZRjF3WFlCZGtGMmdYYkJkd0YzUVhlQmQ4RjRBWGhCZUlGNHdYa0JlVUY1Z1huQmVnRjZRWHFCZXNGN0FYdEJlNEY3d1h3QmZFRjhnWHpCZlFGOVFYMkJmY0YrQVg1QmZvRit3WDhCZjBGL2dYL0JRQUdBUVlDQmdNR0JBWUZCZ1lHQndZSUJna0dDZ1lMQmd3R0RRWU9CZzhHRUFZUkJoSUdFd1lVQmhVR0ZnWVhCaGdHR1FZYUJoc0dIQVlkQmg0R0h3WWdCaUVHSWdZakJpUUdKUVltQmljR0tBWXBCaW9HS3dZc0JpMEdMZ1l2QmpBR01RWXlCak1HTkFZMUJqWUdOd1k0QmprR09nWTdCandHUFFZK0JqOEdRQVpCQmtJR1F3WkVCa1VHUmdaSEJrZ0dTUVpLQmtzR1RBWk5CazRHVHdaUUJsRUdVZ1pUQmxRR1ZRWldCbGNHV0FaWkJsb0dXd1pjQmwwR1hnWmZCbUFHWVFaaUJtTUdaQVpsQm1ZR1p3Wm9CbWtHYWdackJtd0diUVp1Qm04R2NBWnhCbklHY3daMEJuVUdkZ1ozQm5nR2VRWjZCbnNHZkFaOUJuNEdmd2FBQm9FR2dnYURCb1FHaFFhR0JvY0dpQWFKQm9vR2l3YU1CbzBHamdhUEJwQUdrUWFTQnBNR2xBYVZCcFlHbHdhWUJwa0dtZ2FiQnB3R25RYWVCcDhHb0FhaEJxSUdvd2FrQnFVR3BnYW5CcWdHcVFhcUJxc0dyQWF0QnE0R3J3YXdCckVHc2dhekJyUUd0UWEyQnJjR3VBYTVCcm9HdXdhOEJyMEd2Z2EvQnNBR3dRYkNCc01HeEFiRkJzWUd4d2JJQnNrR3lnYkxCc3dHelFiT0JzOEcwQWJSQnRJRzB3YlVCdFVHMWdiWEJ0Z0cyUWJhQnRzRzNBYmRCdDRHM3diZ0J1RUc0Z2JqQnVRRzVRYm1CdWNHNkFicEJ1b0c2d2JzQnUwRzdnYnZCdkFHOFFieUJ2TUc5QWIxQnZZRzl3YjRCdmtHK2diN0J2d0cvUWIrQnY4R0FBY0JCd0lIQXdjRUJ3VUhCZ2NIQndnSENRY0tCd3NIREFjTkJ3NEhEd2NRQnhFSEVnY1RCeFFIRlFjV0J4Y0hHQWNaQnhvSEd3Y2NCeDBISGdjZkJ5QUhJUWNpQnlNSEpBY2xCeVlISndjb0J5a0hLZ2NyQnl3SExRY3VCeThITUFjeEJ6SUhNd2MwQnpVSE5nYzNCemdIT1FjNkJ6c0hQQWM5Qno0SFB3ZEFCMEVIUWdkREIwUUhSUWRHQjBjSFNBZEpCMG9IU3dkTUIwMEhUZ2RQQjFBSFVRZFNCMU1IVkFkVkIxWUhWd2RZQjFrSFdnZGJCMXdIWFFkZUIxOEhZQWRoQjJJSFl3ZGtCMlVIWmdkbkIyZ0hhUWRxQjJzSGJBZHRCMjRIYndkd0IzRUhjZ2R6QjNRSGRRZDJCM2NIZUFkNUIzb0hld2Q4QjMwSGZnZC9CNEFIZ1FlQ0I0TUhoQWVGQjRZSGh3ZUlCNGtIaWdlTEI0d0hqUWVPQjQ4SGtBZVJCNUlIa3dlVUI1VUhsZ2VYQjVnSG1RZWFCNXNIbkFlZEI1NEhud2VnQjZFSG9nZWpCNlFIcFFlbUI2Y0hxQWVwQjZvSHF3ZXNCNjBIcmdldkI3QUhzUWV5QjdNSHRBZTFCN1lIdHdlNEI3a0h1Z2U3Qjd3SHZRZStCNzhId0FmQkI4SUh3d2ZFQjhVSHhnZkhCOGdIeVFmS0I4c0h6QWZOQjg0SHp3ZlFCOUVIMGdmVEI5UUgxUWZXQjljSDJBZlpCOW9IMndmY0I5MEgzZ2ZmQitBSDRRZmlCK01INUFmbEIrWUg1d2ZvQitrSDZnZnJCK3dIN1FmdUIrOEg4QWZ4Qi9JSDh3ZjBCL1VIOWdmM0IvZ0grUWY2Qi9zSC9BZjlCLzRIL3djQUNBRUlBZ2dEQ0FRSUJRZ0dDQWNJQ0FnSkNBb0lDd2dNQ0EwSURnZ1BDQkFJRVFnU0NCTUlGQWdWQ0JZSUZ3Z1lDQmtJR2dnYkNCd0lIUWdlQ0I4SUlBZ2hDQ0lJSXdna0NDVUlKZ2duQ0NnSUtRZ3FDQ3NJTEFndENDNElMd2d3Q0RFSU1nZ3pDRFFJTlFnMkNEY0lPQWc1Q0RvSU93ZzhDRDBJUGdnL0NFQUlRUWhDQ0VNSVJBaEZDRVlJUndoSUNFa0lTZ2hMQ0V3SVRRaE9DRThJVUFoUkNGSUlVd2hVQ0ZVSVZnaFhDRmdJV1FoYUNGc0lYQWhkQ0Y0SVh3aGdDR0VJWWdoakNHUUlaUWhtQ0djSWFBaHBDR29JYXdoc0NHMEliZ2h2Q0hBSWNRaHlDSE1JZEFoMUNIWUlkd2g0Q0hrSWVnaDdDSHdJZlFoK0NIOElnQWlCQ0lJSWd3aUVDSVVJaGdpSENJZ0lpUWlLQ0lzSWpBaU5DSTRJandpUUNKRUlrZ2lUQ0pRSWxRaVdDSmNJbUFpWkNKb0ltd2ljQ0owSW5naWZDS0FJb1FpaUNLTUlwQWlsQ0tZSXB3aW9DS2tJcWdpckNLd0lyUWl1Q0s4SXNBaXhDTElJc3dpMENMVUl0Z2kzQ0xnSXVRaTZDTHNJdkFpOUNMNEl2d2pBQ01FSXdnakRDTVFJeFFqR0NNY0l5QWpKQ01vSXl3ak1DTTBJemdqUENOQUkwUWpTQ05NSTFBalZDTllJMXdqWUNOa0kyZ2piQ053STNRamVDTjhJNEFqaENPSUk0d2prQ09VSTVnam5DT2dJNlFqcUNPc0k3QWp0Q080STd3andDUEVJOGdqekNQUUk5UWoyQ1BjSStBajVDUG9JK3dqOENQMEkvZ2ovQ0FBSkFRa0NDUU1KQkFrRkNRWUpCd2tJQ1FrSkNna0xDUXdKRFFrT0NROEpFQWtSQ1JJSkV3a1VDUlVKRmdrWENSZ0pHUWthQ1JzSkhBa2RDUjRKSHdrZ0NTRUpJZ2tqQ1NRSkpRa21DU2NKS0FrcENTb0pLd2tzQ1MwSkxna3ZDVEFKTVFreUNUTUpOQWsxQ1RZSk53azRDVGtKT2drN0NUd0pQUWsrQ1Q4SlFBbEJDVUlKUXdsRUNVVUpSZ2xIQ1VnSlNRbEtDVXNKVEFsTkNVNEpUd2xRQ1ZFSlVnbFRDVlFKVlFsV0NWY0pXQWxaQ1ZvSld3bGNDVjBKWGdsZkNXQUpZUWxpQ1dNSlpBbGxDV1lKWndsb0NXa0phZ2xyQ1d3SmJRbHVDVzhKY0FseENYSUpjd2wwQ1hVSmRnbDNDWGdKZVFsNkNYc0pmQWw5Q1g0SmZ3bUFDWUVKZ2dtRENZUUpoUW1HQ1ljSmlBbUpDWW9KaXdtTUNZMEpqZ21QQ1pBSmtRbVNDWk1KbEFtVkNaWUpsd21ZQ1prSm1nbWJDWndKblFtZUNaOEpvQW1oQ2FJSm93bWtDYVVKcGdtbkNhZ0pxUW1xQ2FzSnJBbXRDYTRKcndtd0NiRUpzZ216Q2JRSnRRbTJDYmNKdUFtNUNib0p1d204Q2IwSnZnbS9DY0FKd1FuQ0NjTUp4QW5GQ2NZSnh3bklDY2tKeWduTENjd0p6UW5PQ2M4SjBBblJDZElKMHduVUNkVUoxZ25YQ2RnSjJRbmFDZHNKM0FuZENkNEozd25nQ2VFSjRnbmpDZVFKNVFubUNlY0o2QW5wQ2VvSjZ3bnNDZTBKN2dudkNmQUo4UW55Q2ZNSjlBbjFDZllKOXduNENma0orZ243Q2Z3Si9RbitDZjhKQUFvQkNnSUtBd29FQ2dVS0Jnb0hDZ2dLQ1FvS0Nnc0tEQW9OQ2c0S0R3b1FDaEVLRWdvVENoUUtGUW9XQ2hjS0dBb1pDaG9LR3dvY0NoMEtIZ29mQ2lBS0lRb2lDaU1LSkFvbENpWUtKd29vQ2lrS0tnb3JDaXdLTFFvdUNpOEtNQW94Q2pJS013bzBDalVLTmdvM0NqZ0tPUW82Q2pzS1BBbzlDajRLUHdwQUNrRUtRZ3BEQ2tRS1JRcEdDa2NLU0FwSkNrb0tTd3BNQ2swS1RncFBDbEFLVVFwU0NsTUtWQXBWQ2xZS1Z3cFlDbGtLV2dwYkNsd0tYUXBlQ2w4S1lBcGhDbUlLWXdwa0NtVUtaZ3BuQ21nS2FRcHFDbXNLYkFwdENtNEtid3B3Q25FS2NncHpDblFLZFFwMkNuY0tlQXA1Q25vS2V3cDhDbjBLZmdwL0NvQUtnUXFDQ29NS2hBcUZDb1lLaHdxSUNva0tpZ3FMQ293S2pRcU9DbzhLa0FxUkNwSUtrd3FVQ3BVS2xncVhDcGdLbVFxYUNwc0tuQXFkQ3A0S253cWdDcUVLb2dxakNxUUtwUXFtQ3FjS3FBcXBDcW9LcXdxc0NxMEtyZ3F2Q3JBS3NRcXlDck1LdEFxMUNyWUt0d3E0Q3JrS3VncTdDcndLdlFxK0NyOEt3QXJCQ3NJS3d3ckVDc1VLeGdySENzZ0t5UXJLQ3NzS3pBck5DczRLendyUUN0RUswZ3JUQ3RRSzFRcldDdGNLMkFyWkN0b0syd3JjQ3QwSzNncmZDdUFLNFFyaUN1TUs1QXJsQ2pCQjh3UUFBSEpoZGpRdFpHbHpZM01BY0FMbUN1Y0s2QXJwQ3VvSzZ3cnNDdTBLN2dydkN2QUs4UXJ5Q3ZNSzlBcjFDdllLOXdyNEN2a0srZ3I3Q3Z3Sy9RcitDdjhLQUFzQkN3SUxBd3NFQ3dVTEJnc0hDd2dMQ1FzS0N3c0xEQXNOQ3c0TER3c1FDeEVMRWdzVEN4UUxGUXNXQ3hjTEdBc1pDeG9MR3dzY0N4MExIZ3NmQ3lBTElRc2lDeU1MSkFzbEN5WUxKd3NvQ3lrTEtnc3JDeXdMTFFzdUN5OExNQXN4Q3pJTE13czBDelVMTmdzM0N6Z0xPUXM2Q3pzTFBBczlDejRMUHd0QUMwRUxRZ3REQzBRTFJRdEdDMGNMU0F0SkMwb0xTd3RNQzAwTFRndFBDMUFMVVF0U0MxTUxWQXRWQzFZTFZ3dFlDMWtMV2d0YkMxd0xYUXRlQzE4TFlBdGhDMklMWXd0a0MyVUxaZ3RuQzJnTGFRdHFDMnNMYkF0dEMyNExid3R3QzNFTGNndHpDM1FMZFF0MkMzY0xlQXQ1QzNvTGV3dDhDMzBMZmd0L0M0QUxnUXVDQzRNTGhBdUZDNFlMaHd1SUM0a0xpZ3VMQzR3TGpRdU9DNDhMa0F1UkM1SUxrd3VVQzVVTGxndVhDNWdMbVF1YUM1c0xuQXVkQzU0TG53dWdDNkVMb2d1akM2UUxwUXVtQzZjTHFBdXBDNm9McXd1c0M2MExyZ3V2QzdBTHNRdXlDN01MdEF1MUM3WUx0d3U0QzdrTHVndTdDN3dMdlF1K0M3OEx3QXZCQzhJTHd3dkVDOFVMeGd2SEM4Z0x5UXZLQzhzTHpBdk5DODRMend2UUM5RUwwZ3ZUQzlRTDFRdldDOWNMMkF2WkM5b0wyd3ZjQzkwTDNndmZDK0FMNFF2aUMrTUw1QXZsQytZTDV3dm9DK2tMNmd2ckMrd0w3UXZ1Qys4TDhBdnhDL0lMOHd2MEMvVUw5Z3YzQy9nTCtRdjZDL3NML0F2OUMvNEwvd3NBREFFTUFnd0REQVFNQlF3R0RBY01DQXdKREFvTUN3d01EQTBNRGd3UERCQU1FUXdTREJNTUZBd1ZEQllNRnd3WURCa01HZ3diREJ3TUhRd2VEQjhNSUF3aERDSU1Jd3drRENVTUpnd25EQ2dNS1F3cURDc01MQXd0REM0TUx3d3dEREVNTWd3ekREUU1OUXcyRERjTU9BdzVERG9NT3d3OEREME1QZ3cvREVBTVFReENERU1NUkF4RkRFWU1Sd3hJREVrTVNneExERXdNVFF4T0RFOE1VQXhSREZJTVV3eFVERlVNVmd4WERGZ01XUXhhREZzTVhBeGRERjRNWHd4Z0RHRU1ZZ3hqREdRTVpReG1ER2NNYUF4cERHb01hd3hzREcwTWJneHZESEFNY1F4eURITU1kQXgxREhZTWR3eDRESGtNZWd4N0RId01mUXgrREg4TWdBeUJESUlNZ3d5RURJVU1oZ3lIRElnTWlReUtESXNNakF5TkRJNE1qd3lRREpFTWtneVRESlFNbFF5V0RKY01tQXlaREpvTW13eWNESjBNbmd5ZkRLQU1vUXlpREtNTXBBeWxES1lNcHd5b0RLa01xZ3lyREt3TXJReXVESzhNc0F5eERMSU1zd3kwRExVTXRneTNETGdNdVF5NkRMc012QXk5REw0TXZ3ekFETUVNd2d6RERNUU14UXpHRE1jTXlBekpETW9NeXd6TURNME16Z3pQRE5BTTBRelNETk1NMUF6VkROWU0xd3pZRE5rTTJnemJETndNM1F6ZUROOE00QXpoRE9JTTR3emtET1VNNWd6bkRPZ002UXpxRE9zTTdBenRETzRNN3d6d0RQRU04Z3p6RFBRTTlRejJEUGNNK0F6NURQb00rd3o4RFAwTS9nei9EQUFOQVEwQ0RRTU5CQTBGRFFZTkJ3MElEUWtOQ2cwTERRd05EUTBPRFE4TkVBMFJEUklORXcwVURSVU5GZzBYRFJnTkdRMGFEUnNOSEEwZERSNE5IdzBnRFNFTklnMGpEU1FOSlEwbURTY05LQTBwRFNvTkt3MHNEUzBOTGcwdkRUQU5NUTB5RFRNTk5BMDFEVFlOTncwNERUa05PZzA3RFR3TlBRMCtEVDhOUUExQkRVSU5RdzFFRFVVTlJnMUhEVWdOU1ExS0RVc05UQTFORFU0TlR3MVFEVkVOVWcxVERWUU5WUTB3UWRVREFBQnlZWFkwTFhOb2FXVnNaSE1BNEFGV0RWY05XQTFaRFZvTld3MWNEVjBOWGcxZkRXQU5ZUTFpRFdNTlpBMWxEV1lOWncxb0RXa05hZzFyRFd3TmJRMXVEVzhOY0ExeERYSU5jdzEwRFhVTmRnMTNEWGdOZVExNkRYc05mQTE5RFg0TmZ3MkFEWUVOZ2cyRERZUU5oUTJHRFljTmlBMkpEWW9OaXcyTURZME5qZzJQRFpBTmtRMlNEWk1ObEEyVkRaWU5sdzJZRFprTm1nMmJEWndOblEyZURaOE5vQTJoRGFJTm93MmtEYVVOcGcybkRhZ05xUTJxRGFzTnJBMnREYTROcncyd0RiRU5zZzJ6RGJRTnRRMjJEYmNOdUEyNURib051dzI4RGIwTnZnMi9EY0FOd1EzQ0RjTU54QTNGRGNZTnh3M0lEY2tOeWczTERjd056UTNPRGM4TjBBM1JEZElOMHczVURkVU4xZzNYRGRnTjJRM2FEZHNOM0EzZERkNE4zdzNnRGVFTjRnM2pEZVFONVEzbURlY042QTNwRGVvTjZ3M3NEZTBON2czdkRmQU44UTN5RGZNTjlBMzFEZllOOXczNERma04rZzM3RGZ3Ti9RMytEZjhOQUE0QkRnSU9BdzRFRGdVT0JnNEhEZ2dPQ1E0S0Rnc09EQTRORGc0T0R3NFFEaEVPRWc0VERoUU9GUTRXRGhjT0dBNFpEaG9PR3c0Y0RoME9IZzRmRGlBT0lRNGlEaU1PSkE0bERpWU9KdzRvRGlrT0tnNHJEaXdPTFE0dURpOE9NQTR4RGpJT013NDBEalVPTmc0M0RqZ09PUTQ2RGpzT1BBNDlEajRPUHc1QURrRU9RZzVERGtRT1JRNUdEa2NPU0E1SkRrb09TdzVNRGswT1RnNVBEbEFPVVE1U0RsTU9WQTVWRGxZT1Z3NVlEbGtPV2c1YkRsd09YUTVlRGw4T1lBNWhEbUlPWXc1a0RtVU9aZzVuRG1nT2FRNXFEbXNPYkE1dERtNE9idzV3RG5FT2NnNXpEblFPZFE1MkRuY09lQTU1RG5vT2V3NThEbjBPZmc1L0RvQU9nUTZDRG9NT2hBNkZEb1lPaHc2SURva09pZzZMRG93T2pRNk9EbzhPa0E2UkRwSU9rdzZVRHBVT2xnNlhEcGdPbVE2YURwc09uQTZkRHA0T253NmdEcUVPb2c2akRxUU9wUTZtRHFjT3FBNnBEcW9PcXc2c0RxME9yZzZ2RHJBT3NRNnlEck1PdEE2MURyWU90dzY0RHJrT3VnNjdEcndPdlE2K0RyOE93QTdCRHNJT3d3N0VEc1VPeGc3SERzZ095UTdLRHNzT3pBN05EczRPenc3UUR0RU8wZzdURHRRTzFRN1dEdGNPMkE3WkR0b08ydzdjRHQwTzNnN2ZEdUFPNFE3aUR1TU81QTdsRHVZTzV3N29EdWtPNmc3ckR1d083UTd1RHU4TzhBN3hEdklPOHc3MER2VU85ZzczRHZnTytRNzZEdnNPL0E3OUR2NE8vdzRBRHdFUEFnOEREd1FQQlE4R0R3Y1BDQThKRHdvUEN3OE1EdzBQRGc4UER4QVBFUThTRHhNUEZBOFZEeFlQRnc4WUR4a1BHZzhiRHh3UEhROGVEeDhQSUE4aER5SVBJdzhrRHlVUEpnOG5EeWdQS1E4cUR5c1BMQTh0RHk0UEx3OHdEekVQTWc4ekR6UVBOUTh3UVpJREFBQnlZWFkwTFhScGNtVUF3QUUyRHpjUE9BODVEem9QT3c4OER6MFBQZzgvRDBBUFFROUNEME1QUkE5RkQwWVBSdzlJRDBrUFNnOUxEMHdQVFE5T0QwOFBVQTlSRDFJUFV3OVVEMVVQVmc5WEQxZ1BXUTlhRDFzUFhBOWREMTRQWHc5Z0QyRVBZZzlqRDJRUFpROW1EMmNQYUE5cEQyb1BhdzlzRDIwUGJnOXZEM0FQY1E5eUQzTVBkQTkxRDNZUGR3OTREM2tQZWc5N0Qzd1BmUTkrRDM4UGdBK0JENElQZ3crRUQ0VVBoZytIRDRnUGlRK0tENHNQakErTkQ0NFBqdytRRDVFUGtnK1RENVFQbFErV0Q1Y1BtQStaRDVvUG13K2NENTBQbmcrZkQ2QVBvUStpRDZNUHBBK2xENllQcHcrb0Q2a1BxZytyRDZ3UHJRK3VENjhQc0EreEQ3SVBzdyswRDdVUHRnKzNEN2dQdVErNkQ3c1B2QSs5RDc0UHZ3L0FEOEVQd2cvREQ4UVB4US9HRDhjUHlBL0pEOG9QeXcvTUQ4MFB6Zy9QRDlBUDBRL1NEOU1QMUEvVkQ5WVAxdy9ZRDlrUDJnL2JEOXdQM1EvZUQ5OFA0QS9oRCtJUDR3L2tEK1VQNWcvbkQrZ1A2US9xRCtzUDdBL3REKzRQN3cvd0QvRVA4Zy96RC9RUDlRLzJEL2NQK0EvNUQvb1Ardy84RC8wUC9nLy9Ed0FRQVJBQ0VBTVFCQkFGRUFZUUJ4QUlFQWtRQ2hBTEVBd1FEUkFPRUE4UUVCQVJFQklRRXhBVUVCVVFGaEFYRUJnUUdSQWFFQnNRSEJBZEVCNFFIeEFnRUNFUUloQWpFQ1FRSlJBbUVDY1FLQkFwRUNvUUt4QXNFQzBRTGhBdkVEQVFNUkF5RURNUU5CQTFFRFlRTnhBNEVEa1FPaEE3RUR3UVBSQStFRDhRUUJCQkVFSVFReEJFRUVVUVJoQkhFRWdRU1JCS0VFc1FUQkJORUU0UVR4QlFFRkVRVWhCVEVGUVFWUkJXRUZjUVdCQlpFRm9RV3hCY0VGMFFYaEJmRUdBUVlSQmlFR01RWkJCbEVHWVFaeEJvRUdrUWFoQnJFR3dRYlJCdUVHOFFjQkJ4RUhJUWN4QjBFSFVRZGhCM0VIZ1FlUkI2RUhzUWZCQjlFSDRRZnhDQUVJRVFnaENERUlRUWhSQ0dFSWNRaUJDSkVJb1FpeENNRUkwUWpoQ1BFSkFRa1JDU0VKTVFsQkNWRUpZUWx4Q1lFSmtRbWhDYkVKd1FuUkNlRUo4UW9CQ2hFS0lRb3hDa0VLVVFwaENuRUtnUXFSQ3FFS3NRckJDdEVLNFFyeEN3RUxFUXNoQ3pFTFFRdFJDMkVMY1F1QkM1RUxvUXV4QzhFTDBRdmhDL0VNQVF3UkRDRU1NUXhCREZFTVlReHhESUVNa1F5aERMRU13UXpSRE9FTThRMEJEUkVOSVEweERVRU5VUTFoRFhFTmdRMlJEYUVOc1EzQkRkRU40UTN4RGdFT0VRNGhEakVPUVE1UkRtRU9jUTZCRHBFT29RNnhEc0VPMFE3aER2RVBBUThSRHlFUE1ROUJEMUVGQkIza01BQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFNQUFBQURBQUFBQXdBQUFBTUFBQUFEQUFBQUF3QUFBQU1BQUFBREFBQUFBd0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUFJQUFBQUNBQUFBQWdBQUFBSUFBQUFDQUFBQUFnQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFBc0UwS0FBQUtzQlFBQUFBQkFGaEVJRk52Wm5RQUhnQUFBQWl3RGdBQUFBQUFBQUFBQUFBQUNiQUtBQUFBQUFBQUFBS3cwZ0FBQURDd0NBQUFBQUFBRUxBVkFBQUFKQ1FrUkZWTlRWa0FBQUFBQVAvL0ViQVBBQUFBUm1KNFgxSnZiM1FBRkxBZUFBQUEvdi9Jd2hOSG44Smg4MjdEL3YvSVFtQjIrMExiUDFaRElMQXFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFJQy9BQUFBQUFBQUFBQUFBQUFBSXJBcUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUlDL0RKUEpQZ3VUeVQ0TGs4aytJYkF1QUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBSUMvMncvSlB3QUFnTDhBQUFDQUFBQUFnQUt3MUFBQUFEQ3dDQUFBQUFFQUVMQVZBQUFBSkNRa1JGVk5UVmtBQUFBQUFBQUFFYkFSQUFBQVZHOTViM1JoWDFKQlZnQVVzQjRBQUFBQUFNbkNhZ0Nkd25ONmNNTUFBTWxDQXIzOVFzSzRWRU1nc0NvQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBZ0w4QUFBQUFqS21Sdi9LS3d6OGlzQ29BQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFnTC8rLzM4L0FnQ0FQd0lBZ0Q4aHNDNEFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQWdMOEFBQUFBQUFDQVB3QUFBSUFBQUFDQUFyREZBQUFBTUxBSUFBQUFBZ0FRc0JjQUFBQlViM2x2ZEdGZlVrRXhBQUFBQUFBQkFCU3dIZ0FBQU0zbGw4TDVnV1BDM1lvbHc4M2xsMEw2Z1dOQzNZb2xReUN3S2dBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUNBdndBQUFBREpaSWRCYVVOT3dpS3dLZ0FBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQ0F2d0FBZ0QvKy8zOC8vdjkvUHlHd0xnQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFDQXZ3QUFBQUFBQUlDL0FBQUFnQUFBQUlBQ3NNVUFBQUF3c0FnQUFBQURBQkN3RndBQUFGUnZlVzkwWVY5U1FUSUFBQUFBQUFFQUZMQWVBQUFBRE5kTHdudnd5Y0Z5a1B2QUROZExRbnZ3eVVGOWtQdEFJTEFxQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBSUMvQUFBQUFLck1KY0hHNEVaRElyQXFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFJQy9BQUNBUC83L2Z6LysvMzgvSWJBdUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUlDL0FBQUFBQUFBZ0w4QUFBQ0FBQUFBZ0FLd3d3QUFBREN3Q0FBQUFBUUFFTEFWQUFBQVYybHdaWEpmYm5NQUFBQUFBQUVBRkxBZUFBQUFFVHAvd2lHRWg4QkVQdnpBRVRwL1FoNkVoMEFkUHZ4QUlMQXFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFJQy9jZWszd0FBUUdrS2ZPTUZDSXJBcUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUlDL0FBQ0FQLzcvZnovKy8zOC9JYkF1QUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBSUMvQUFBQUFBQUFnTDhBQUFDQUFBQUFnQUt3eFFBQUFEQ3dDQUFBQUFVQUVMQVhBQUFBVkc5NWIzUmhYMUpCTXdBQUFBQUFBUUFVc0I0QUFBQzBuTFBDbXhDVHdsU1JTc08wbkxOQ21oQ1RRbFdSU2tNZ3NDb0FBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQWdMOEFBQUFBN0N2WFFTR3ZyY0Vpc0NvQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBZ0w4QUFJQS8vdjkvUC83L2Z6OGhzQzRBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFnTDhBQUFBQUFBQ0F2d0FBQUlBQUFBQ0FBckRGQUFBQU1MQUlBQUFBQmdBUXNCY0FBQUJVYjNsdmRHRmZVa0UwQUFBQUFBQUJBQlN3SGdBQUFMU2NzOEpJNlRqQ2cxeDF3clNjczBKSDZUaENnbHgxUWlDd0tnQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFDQXZ3QUFBQUFrQ3MzQW9tRVhReUt3S2dBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUNBdndBQWdELysvMzgvL3Y5L1B5R3dMZ0FBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQ0F2d0FBQUFBQUFJQy9BQUFBZ0FBQUFJQUNzTVVBQUFBd3NBZ0FBQUFIQUJDd0Z3QUFBRlJ2ZVc5MFlWOVNRVFVBQUFBQUFBRUFGTEFlQUFBQXRKeXp3dDZyck1LdFppYkN0Snl6UXQ2cnJFS3RaaVpDSUxBcUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUlDL0FBQUFBRXdpSWtMSTRFYkRJckFxQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBSUMvQUFDQVAvNy9mei8rLzM4L0liQXVBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFJQy9BQUFBQUFBQWdMOEFBQUNBQUFBQWdBS3d4UUFBQURDd0NBQUFBQWdBRUxBWEFBQUFWRzk1YjNSaFgxSkJOZ0FBQUFBQUFRQVVzQjRBQUFBQUFNbkMrczFSd2tjUks4TUFBTWxDK2MxUlFrY1JLME1nc0NvQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBZ0w4QUFBQUF1V0F0dmhxL3NzRWlzQ29BQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFnTDhBQUlBLy92OS9QLzcvZno4aHNDNEFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQWdMOEFBQUFBQUFDQXZ3QUFBSUFBQUFDQUFyREZBQUFBTUxBSUFBQUFDUUFRc0JjQUFBQlViM2x2ZEdGZlVrRTNBQUFBQUFBQkFCU3dIZ0FBQUhKT2s4R0szaGZDaDk0WHdtNU9rMEdJM2hkQ2k5NFhRaUN3S2dBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUNBdjJRc2owSkxJaUxDSmlnRFF5S3dLZ0FBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQ0F2d0FBZ0QvKy8zOC8vdjkvUHlHd0xnQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFDQXZ3QUFBQUFBQUlDL0FBQUFnQUFBQUlBQ3NNVUFBQUF3c0FnQUFBQUtBQkN3RndBQUFGUnZlVzkwWVY5U1FUZ0FBQUFBQUFFQUZMQWVBQUFBYms2VHdZcmVGOEtIM2hmQ2NrNlRRWWplRjBLTDNoZENJTEFxQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBSUMvWkN5UHdrc2lJc0ltS0FORElyQXFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFJQy9BQUNBUC83L2Z6LysvMzgvSWJBdUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUlDL0FBQUFBQUFBZ0w4QUFBQ0FBQUFBZ0FLd3hRQUFBREN3Q0FBQUFBc0FFTEFYQUFBQVZHOTViM1JoWDFKQk9RQUFBQUFBQVFBVXNCNEFBQUJ5VHBQQml0NFh3b3ZlRjhKdVRwTkJpTjRYUW96ZUYwSWdzQ29BQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFnTDlrTEk5Q1RDSWl3a3ZZRDhNaXNDb0FBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQWdMOEFBSUEvL3Y5L1AvNy9mejhoc0M0QUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBZ0w4QUFBQUFBQUNBdndBQUFJQUFBQUNBQXJERkFBQUFNTEFJQUFBQURBQVFzQmNBQUFCVWIzbHZkR0ZmVWpFd0FBQUFBQUFCQUJTd0hnQUFBRzVPazhHSzNoZkNpOTRYd25KT2swR0kzaGRDak40WFFpQ3dLZ0FBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQ0F2MlFzajhKTUlpTENTOWdQd3lLd0tnQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFDQXZ3QUFnRC8rLzM4Ly92OS9QeUd3TGdBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUNBdndBQUFBQUFBSUMvQUFBQWdBQUFBSUE9JztcbiIsImltcG9ydCBDYXIgZnJvbSBcIi4uL3BoeXNpY3MvQ2FyLmpzXCI7XG5pbXBvcnQgVERTTG9hZGVyIGZyb20gXCIuL1REU0xvYWRlci5qc1wiO1xuaW1wb3J0IHN1dk1vZGVsIGZyb20gXCIuLi8uLi9tb2RlbHMvc3V2LmpzXCI7XG5cbmNvbnN0IENBUl9DT0xPUiA9IDB4MDA4OGZmO1xuY29uc3QgV0hFRUxfQ09MT1IgPSAweGZmODgwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FyT2JqZWN0IGV4dGVuZHMgVEhSRUUuT2JqZWN0M0Qge1xuICBjb25zdHJ1Y3RvcihjYXIpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5jYXIgPSBjYXI7XG5cbiAgICB0aGlzLmJ1aWxkQ2FyMkQoKTtcbiAgICB0aGlzLmJ1aWxkQ2FyM0QoKTtcbiAgfVxuXG4gIGJ1aWxkQ2FyMkQoKSB7XG4gICAgY29uc3QgY2FyTWVzaCA9IG5ldyBUSFJFRS5NZXNoKFxuICAgICAgbmV3IFRIUkVFLlBsYW5lR2VvbWV0cnkoQ2FyLkhBTEZfQ0FSX0xFTkdUSCAqIDIsIENhci5IQUxGX0NBUl9XSURUSCAqIDIpLFxuICAgICAgbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHsgY29sb3I6IENBUl9DT0xPUiwgZGVwdGhUZXN0OiBmYWxzZSwgdHJhbnNwYXJlbnQ6IHRydWUsIG9wYWNpdHk6IDAuNyB9KVxuICAgICk7XG4gICAgY2FyTWVzaC5yb3RhdGlvbi54ID0gLU1hdGguUEkgLyAyO1xuICAgIGNhck1lc2gubGF5ZXJzLnNldCgyKTtcbiAgICB0aGlzLmFkZChjYXJNZXNoKTtcblxuICAgIGNvbnN0IHdoZWVsR2VvbWV0cnkgPSBuZXcgVEhSRUUuUGxhbmVHZW9tZXRyeShDYXIuSEFMRl9XSEVFTF9MRU5HVEggKiAyLCBDYXIuSEFMRl9XSEVFTF9XSURUSCAqIDIpO1xuICAgIGNvbnN0IHdoZWVsTWF0ZXJpYWwgPSBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoeyBjb2xvcjogV0hFRUxfQ09MT1IsIGRlcHRoVGVzdDogZmFsc2UsIHRyYW5zcGFyZW50OiB0cnVlLCBvcGFjaXR5OiAwLjcgfSlcblxuICAgIHRoaXMubGZXaGVlbDJEID0gbmV3IFRIUkVFLk1lc2god2hlZWxHZW9tZXRyeSwgd2hlZWxNYXRlcmlhbCk7XG4gICAgdGhpcy5sZldoZWVsMkQucmVuZGVyT3JkZXIgPSAxO1xuICAgIHRoaXMubGZXaGVlbDJELnBvc2l0aW9uLnNldChDYXIuRlJPTlRfQVhMRV9QT1MsIDAsIENhci5XSEVFTF9MQVRFUkFMX1BPUyk7XG4gICAgdGhpcy5sZldoZWVsMkQucm90YXRpb24ueCA9IC1NYXRoLlBJIC8gMjtcbiAgICB0aGlzLmxmV2hlZWwyRC5sYXllcnMuc2V0KDIpO1xuICAgIHRoaXMuYWRkKHRoaXMubGZXaGVlbDJEKTtcblxuICAgIHRoaXMucmZXaGVlbDJEID0gbmV3IFRIUkVFLk1lc2god2hlZWxHZW9tZXRyeSwgd2hlZWxNYXRlcmlhbCk7XG4gICAgdGhpcy5yZldoZWVsMkQucmVuZGVyT3JkZXIgPSAxO1xuICAgIHRoaXMucmZXaGVlbDJELnBvc2l0aW9uLnNldChDYXIuRlJPTlRfQVhMRV9QT1MsIDAsIC1DYXIuV0hFRUxfTEFURVJBTF9QT1MpO1xuICAgIHRoaXMucmZXaGVlbDJELnJvdGF0aW9uLnggPSAtTWF0aC5QSSAvIDI7XG4gICAgdGhpcy5yZldoZWVsMkQubGF5ZXJzLnNldCgyKTtcbiAgICB0aGlzLmFkZCh0aGlzLnJmV2hlZWwyRCk7XG5cbiAgICBjb25zdCBscldoZWVsID0gbmV3IFRIUkVFLk1lc2god2hlZWxHZW9tZXRyeSwgd2hlZWxNYXRlcmlhbCk7XG4gICAgbHJXaGVlbC5yZW5kZXJPcmRlciA9IDE7XG4gICAgbHJXaGVlbC5wb3NpdGlvbi5zZXQoQ2FyLlJFQVJfQVhMRV9QT1MsIDAsIENhci5XSEVFTF9MQVRFUkFMX1BPUyk7XG4gICAgbHJXaGVlbC5yb3RhdGlvbi54ID0gLU1hdGguUEkgLyAyO1xuICAgIGxyV2hlZWwubGF5ZXJzLnNldCgyKTtcbiAgICB0aGlzLmFkZChscldoZWVsKTtcblxuICAgIGNvbnN0IHJyV2hlZWwgPSBuZXcgVEhSRUUuTWVzaCh3aGVlbEdlb21ldHJ5LCB3aGVlbE1hdGVyaWFsKTtcbiAgICBycldoZWVsLnJlbmRlck9yZGVyID0gMTtcbiAgICBycldoZWVsLnBvc2l0aW9uLnNldChDYXIuUkVBUl9BWExFX1BPUywgMCwgLUNhci5XSEVFTF9MQVRFUkFMX1BPUyk7XG4gICAgcnJXaGVlbC5yb3RhdGlvbi54ID0gLU1hdGguUEkgLyAyO1xuICAgIHJyV2hlZWwubGF5ZXJzLnNldCgyKTtcbiAgICB0aGlzLmFkZChycldoZWVsKTtcbiAgfVxuXG4gIGJ1aWxkQ2FyM0QoKSB7XG4gICAgY29uc3QgbG9hZGVyID0gbmV3IFREU0xvYWRlcigpO1xuICAgIGxvYWRlci5za2lwTWFwcyA9IHRydWU7XG5cbiAgICBsb2FkZXIubG9hZChzdXZNb2RlbCwgb2JqZWN0ID0+IHtcbiAgICAgIG9iamVjdC5sYXllcnMuc2V0KDMpO1xuICAgICAgb2JqZWN0LnJvdGF0aW9uLnogPSBNYXRoLlBJIC8gMjtcbiAgICAgIG9iamVjdC5yb3RhdGlvbi54ID0gLU1hdGguUEkgLyAyO1xuXG4gICAgICBjb25zdCBib3ggPSAobmV3IFRIUkVFLkJveDMoKSkuc2V0RnJvbU9iamVjdChvYmplY3QpO1xuICAgICAgY29uc3Qgc2NhbGVMZW5ndGggPSBDYXIuSEFMRl9DQVJfTEVOR1RIICogMiAvIChib3gubWF4LnggLSBib3gubWluLngpO1xuICAgICAgY29uc3Qgc2NhbGVXaWR0aCA9IENhci5IQUxGX0NBUl9XSURUSCAqIDIgLyAoYm94Lm1heC56IC0gYm94Lm1pbi56KTtcbiAgICAgIG9iamVjdC5zY2FsZS5zZXQoc2NhbGVXaWR0aCwgc2NhbGVMZW5ndGgsIChzY2FsZVdpZHRoICsgc2NhbGVMZW5ndGgpIC8gMik7XG5cbiAgICAgIGJveC5zZXRGcm9tT2JqZWN0KG9iamVjdCk7XG4gICAgICBvYmplY3QucG9zaXRpb24uc2V0WCgtKGJveC5tYXgueCArIGJveC5taW4ueCkgLyAyKTtcbiAgICAgIG9iamVjdC5wb3NpdGlvbi5zZXRZKC1ib3gubWluLnkpO1xuXG4gICAgICB0aGlzLmFkZChvYmplY3QpO1xuXG4gICAgICBjb25zdCBjYXJNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoVG9vbk1hdGVyaWFsKHsgY29sb3I6IDB4MDA4OGZmIH0pO1xuICAgICAgY29uc3Qgd2hlZWxNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoVG9vbk1hdGVyaWFsKHsgY29sb3I6IDB4ZmY4ODAwIH0pO1xuXG4gICAgICBvYmplY3QudHJhdmVyc2UoY2hpbGQgPT4ge1xuICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBUSFJFRS5NZXNoKSB7XG4gICAgICAgICAgY2hpbGQubGF5ZXJzLnNldCgzKTtcbiAgICAgICAgICBjaGlsZC5tYXRlcmlhbCA9IFsnVG95b3RhX1JBNycsICdUb3lvdGFfUkE4JywgJ1RveW90YV9SQTknLCAnVG95b3RhX1IxMCddLmluY2x1ZGVzKGNoaWxkLm5hbWUpID8gd2hlZWxNYXRlcmlhbCA6IGNhck1hdGVyaWFsO1xuXG4gICAgICAgICAgaWYgKGNoaWxkLm5hbWUgPT0gJ1RveW90YV9SQTcnKVxuICAgICAgICAgICAgdGhpcy5sZldoZWVsM0QgPSBjaGlsZDtcbiAgICAgICAgICBlbHNlIGlmIChjaGlsZC5uYW1lID09ICdUb3lvdGFfUkE4JylcbiAgICAgICAgICAgIHRoaXMucmZXaGVlbDNEID0gY2hpbGQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBbdGhpcy5sZldoZWVsM0QsIHRoaXMucmZXaGVlbDNEXS5mb3JFYWNoKHdoZWVsID0+IHtcbiAgICAgICAgd2hlZWwuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk7XG4gICAgICAgIHdoZWVsLmdlb21ldHJ5LmNlbnRlcigpO1xuICAgICAgICB3aGVlbC5wb3NpdGlvbi5zZXRZKHdoZWVsLnBvc2l0aW9uLnkgLSAzNik7XG4gICAgICAgIHdoZWVsLnBvc2l0aW9uLnNldFood2hlZWwucG9zaXRpb24ueiArIDM2KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTWF0cml4KCkge1xuICAgIHRoaXMudXBkYXRlQ2FyKCk7XG4gICAgc3VwZXIudXBkYXRlTWF0cml4KCk7XG4gIH1cblxuICB1cGRhdGVDYXIoKSB7XG4gICAgY29uc3QgY2FyUG9zaXRpb24gPSB0aGlzLmNhci5wb3NpdGlvbjtcbiAgICB0aGlzLnBvc2l0aW9uLnNldChjYXJQb3NpdGlvbi54LCAwLCBjYXJQb3NpdGlvbi55KTtcbiAgICB0aGlzLnJvdGF0aW9uLnkgPSAtdGhpcy5jYXIucm90YXRpb247XG5cbiAgICBjb25zdCB3aGVlbEFuZ2xlID0gdGhpcy5jYXIud2hlZWxBbmdsZTtcblxuICAgIC8vIEFkZGluZyB0aGUgd2hlZWxzIHRvIHRoZSBjYXIgb2JqZWN0IGNhbiB0cmlnZ2VyIHRoaXMgZnVuY3Rpb24gaW4gc29tZSBicm93c2Vyc1xuICAgIC8vIGJlZm9yZSB0aGUgb3RoZXIgd2hlZWxzIGFyZSBhZGRlZCwgc28gY2hlY2sgdGhlbSBmaXJzdC5cbiAgICBpZiAodGhpcy5sZldoZWVsMkQpIHRoaXMubGZXaGVlbDJELnJvdGF0aW9uLnogPSAtd2hlZWxBbmdsZTtcbiAgICBpZiAodGhpcy5yZldoZWVsMkQpIHRoaXMucmZXaGVlbDJELnJvdGF0aW9uLnogPSAtd2hlZWxBbmdsZTtcbiAgICBpZiAodGhpcy5sZldoZWVsM0QpIHRoaXMubGZXaGVlbDNELnJvdGF0aW9uLnkgPSB3aGVlbEFuZ2xlO1xuICAgIGlmICh0aGlzLnJmV2hlZWwzRCkgdGhpcy5yZldoZWVsM0Qucm90YXRpb24ueSA9IHdoZWVsQW5nbGU7XG4gIH1cbn1cbiIsImNvbnN0IENPTE9SID0gMHhkZDAwMDA7XG5jb25zdCBIRUlHSFQgPSA1O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0aWNPYnN0YWNsZU9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEIHtcbiAgY29uc3RydWN0b3Ioc3RhdGljT2JzdGFjbGUpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgbWVzaDJEID0gbmV3IFRIUkVFLk1lc2goXG4gICAgICBuZXcgVEhSRUUuUGxhbmVHZW9tZXRyeShzdGF0aWNPYnN0YWNsZS53aWR0aCwgc3RhdGljT2JzdGFjbGUuaGVpZ2h0KSxcbiAgICAgIG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7IGNvbG9yOiBDT0xPUiwgZGVwdGhUZXN0OiBmYWxzZSwgdHJhbnNwYXJlbnQ6IHRydWUsIG9wYWNpdHk6IDAuNSB9KVxuICAgICk7XG4gICAgbWVzaDJELnJvdGF0aW9uLnggPSAtTWF0aC5QSSAvIDI7XG4gICAgbWVzaDJELmxheWVycy5zZXQoMik7XG4gICAgdGhpcy5hZGQobWVzaDJEKTtcblxuICAgIGNvbnN0IHN0b25lVGV4dHVyZSA9IG5ldyBUSFJFRS5UZXh0dXJlTG9hZGVyKCkubG9hZCgnaHR0cDovLzEyNy4wLjAuMTo4MDA4L2ltYWdlcy9zdG9uZS5qcGcnKTtcbiAgICBzdG9uZVRleHR1cmUud3JhcFMgPSBUSFJFRS5SZXBlYXRXcmFwcGluZ1xuICAgIHN0b25lVGV4dHVyZS53cmFwVCA9IFRIUkVFLlJlcGVhdFdyYXBwaW5nXG4gICAgc3RvbmVUZXh0dXJlLm1hZ0ZpbHRlciA9IFRIUkVFLk5lYXJlc3RGaWx0ZXJcblxuICAgIGNvbnN0IG1lc2gzRCA9IG5ldyBUSFJFRS5NZXNoKFxuICAgICAgbmV3IFRIUkVFLkJveEJ1ZmZlckdlb21ldHJ5KHN0YXRpY09ic3RhY2xlLndpZHRoLCBIRUlHSFQsIHN0YXRpY09ic3RhY2xlLmhlaWdodCksXG4gICAgICBuZXcgVEhSRUUuTWVzaFRvb25NYXRlcmlhbCh7IG1hcDogc3RvbmVUZXh0dXJlLCB0cmFuc3BhcmVudDogdHJ1ZSwgb3BhY2l0eTogMC45IH0pXG4gICAgKTtcbiAgICBtZXNoM0QucG9zaXRpb24uc2V0WShIRUlHSFQgLyAyKTtcbiAgICBtZXNoM0QubGF5ZXJzLnNldCgzKTtcbiAgICB0aGlzLmFkZChtZXNoM0QpO1xuXG4gICAgdGhpcy5yb3RhdGlvbi55ID0gLXN0YXRpY09ic3RhY2xlLnJvdDtcbiAgICB0aGlzLnBvc2l0aW9uLnNldChzdGF0aWNPYnN0YWNsZS5wb3MueCwgMCwgc3RhdGljT2JzdGFjbGUucG9zLnkpO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBEeW5hbWljT2JzdGFjbGVPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCB7XG4gIGNvbnN0cnVjdG9yKGR5bmFtaWNPYnN0YWNsZSwgbGFuZVBhdGgpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5keW5hbWljT2JzdGFjbGUgPSBkeW5hbWljT2JzdGFjbGU7XG4gICAgdGhpcy5sYW5lUGF0aCA9IGxhbmVQYXRoO1xuICAgIHRoaXMuc2l6ZSA9IGR5bmFtaWNPYnN0YWNsZS5zaXplO1xuXG4gICAgY29uc3QgY29sb3JzID0ge1xuICAgICAgdmVoaWNsZTogMHhmZjg4MDAsXG4gICAgICBjeWNsaXN0OiAweDAwY2NmZixcbiAgICAgIHBlZGVzdHJpYW46IDB4ZmZkZDAwXG4gICAgfTtcblxuICAgIGNvbnN0IGhlaWdodHMgPSB7XG4gICAgICB2ZWhpY2xlOiAyLjAsXG4gICAgICBjeWNsaXN0OiAxLjgsXG4gICAgICBwZWRlc3RyaWFuOiAxLjhcbiAgICB9O1xuXG4gICAgY29uc3QgbWVzaDJEID0gbmV3IFRIUkVFLk1lc2goXG4gICAgICBuZXcgVEhSRUUuUGxhbmVHZW9tZXRyeShkeW5hbWljT2JzdGFjbGUuc2l6ZS53ICogMiwgZHluYW1pY09ic3RhY2xlLnNpemUuaCAqIDIpLFxuICAgICAgbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHsgY29sb3I6IGNvbG9yc1tkeW5hbWljT2JzdGFjbGUudHlwZV0gfHwgMHhmZjg4MDAsIGRlcHRoVGVzdDogZmFsc2UsIHRyYW5zcGFyZW50OiB0cnVlLCBvcGFjaXR5OiAwLjcgfSlcbiAgICApO1xuICAgIG1lc2gyRC5yb3RhdGlvbi54ID0gLU1hdGguUEkgLyAyO1xuICAgIG1lc2gyRC5sYXllcnMuc2V0KDIpO1xuICAgIHRoaXMuYWRkKG1lc2gyRCk7XG5cbiAgICBjb25zdCBtZXNoM0QgPSBuZXcgVEhSRUUuTWVzaChcbiAgICAgIG5ldyBUSFJFRS5Cb3hCdWZmZXJHZW9tZXRyeShkeW5hbWljT2JzdGFjbGUuc2l6ZS53ICogMiwgaGVpZ2h0c1tkeW5hbWljT2JzdGFjbGUudHlwZV0gfHwgMS41LCBkeW5hbWljT2JzdGFjbGUuc2l6ZS5oICogMiksXG4gICAgICBuZXcgVEhSRUUuTWVzaFRvb25NYXRlcmlhbCh7IGNvbG9yOiBjb2xvcnNbZHluYW1pY09ic3RhY2xlLnR5cGVdIHx8IDB4ZmY4ODAwLCB0cmFuc3BhcmVudDogdHJ1ZSwgb3BhY2l0eTogMC43IH0pXG4gICAgKTtcbiAgICBtZXNoM0QucG9zaXRpb24uc2V0WSgoaGVpZ2h0c1tkeW5hbWljT2JzdGFjbGUudHlwZV0gfHwgMS41KSAvIDIpO1xuICAgIG1lc2gzRC5sYXllcnMuc2V0KDMpO1xuICAgIHRoaXMuYWRkKG1lc2gzRCk7XG4gIH1cblxuICB1cGRhdGUodGltZSkge1xuICAgIGNvbnN0IHNsUG9zID0gdGhpcy5keW5hbWljT2JzdGFjbGUucG9zaXRpb25BdFRpbWUodGltZSk7XG5cbiAgICAvLyBTYW1wbGUganVzdCB0aGUgc3RhdGlvbiB0aGlzIGR5bmFtaWMgb2JzdGFjbGUgaXMgYXRcbiAgICBjb25zdCBbc2FtcGxlXSA9IHRoaXMubGFuZVBhdGguc2FtcGxlU3RhdGlvbnMoc2xQb3MueCwgMSwgMCk7XG5cbiAgICBpZiAoc2FtcGxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdCA9IHNhbXBsZS5yb3Q7XG4gICAgY29uc3QgcG9zID0gVEhSRUUuVmVjdG9yMi5mcm9tQW5nbGUocm90ICsgTWF0aC5QSSAvIDIpLm11bHRpcGx5U2NhbGFyKHNsUG9zLnkpLmFkZChzYW1wbGUucG9zKTtcblxuICAgIHRoaXMucG9zaXRpb24uc2V0KHBvcy54LCAwLCBwb3MueSk7XG4gICAgdGhpcy5yb3RhdGlvbi55ID0gLXJvdDtcblxuICAgIHN1cGVyLnVwZGF0ZU1hdHJpeCgpO1xuXG4gICAgdGhpcy52aXNpYmxlID0gc2xQb3MueCA+PSAwO1xuICB9XG59XG4iLCJjb25zdCBoYWxmTGFuZVdpZHRoID0gMy43O1xuXG5jb25zdCBjZW50ZXJsaW5lR2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnkoKTtcbmNvbnN0IGxlZnRCb3VuZGFyeUdlb21ldHJ5ID0gbmV3IFRIUkVFLkdlb21ldHJ5KCk7XG5jb25zdCByaWdodEJvdW5kYXJ5R2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnkoKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGFuZVBhdGgge1xuICBzdGF0aWMgaHlkcmF0ZShvYmopIHtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBMYW5lUGF0aC5wcm90b3R5cGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hbmNob3JzID0gW107XG4gICAgdGhpcy5jZW50ZXJsaW5lcyA9IFtdO1xuICAgIHRoaXMuc2FtcGxlTGVuZ3RocyA9IFtdO1xuICAgIHRoaXMuYXJjTGVuZ3RocyA9IFtdO1xuICAgIHRoaXMubGVmdEJvdW5kYXJpZXMgPSBbXTtcbiAgICB0aGlzLnJpZ2h0Qm91bmRhcmllcyA9IFtdO1xuICB9XG5cbiAgZ2V0IGNlbnRlcmxpbmUoKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi50aGlzLmNlbnRlcmxpbmVzKTtcbiAgfVxuXG4gIGdldCBsZWZ0Qm91bmRhcnkoKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi50aGlzLmxlZnRCb3VuZGFyaWVzKTtcbiAgfVxuXG4gIGdldCByaWdodEJvdW5kYXJ5KCkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4udGhpcy5yaWdodEJvdW5kYXJpZXMpO1xuICB9XG5cbiAgZ2V0IGFyY0xlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcmNMZW5ndGhzLnJlZHVjZSgoc3VtLCBsKSA9PiBzdW0gKyBsLCAwKTtcbiAgfVxuXG4gIHNhbXBsZVN0YXRpb25zKHN0YXJ0U3RhdGlvbiwgbnVtLCBpbnRlcnZhbCkge1xuICAgIGNvbnN0IHNhbXBsZXMgPSBbXTtcbiAgICBsZXQgYW5jaG9ySW5kZXggPSAwO1xuICAgIGxldCBzYW1wbGVJbmRleCA9IDA7XG4gICAgbGV0IHRvdGFsTGVuZ3RoID0gMDtcbiAgICBsZXQgbmV4dFN0YXRpb24gPSBzdGFydFN0YXRpb247XG5cbiAgICB3aGlsZSAodG90YWxMZW5ndGggKyB0aGlzLmFyY0xlbmd0aHNbYW5jaG9ySW5kZXhdIDwgbmV4dFN0YXRpb24pIHtcbiAgICAgIHRvdGFsTGVuZ3RoICs9IHRoaXMuYXJjTGVuZ3Roc1thbmNob3JJbmRleF07XG5cbiAgICAgIGlmICgrK2FuY2hvckluZGV4ID49IHRoaXMuYXJjTGVuZ3Rocy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBzYW1wbGVzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtOyBpKyspIHtcbiAgICAgIGxldCBsZW5ndGggPSB0aGlzLnNhbXBsZUxlbmd0aHNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4XTtcbiAgICAgIHdoaWxlICh0b3RhbExlbmd0aCArIGxlbmd0aCA8IG5leHRTdGF0aW9uKSB7XG4gICAgICAgIHRvdGFsTGVuZ3RoICs9IGxlbmd0aDtcblxuICAgICAgICBpZiAoKytzYW1wbGVJbmRleCA+PSB0aGlzLnNhbXBsZUxlbmd0aHNbYW5jaG9ySW5kZXhdLmxlbmd0aCkge1xuICAgICAgICAgIHNhbXBsZUluZGV4ID0gMDtcblxuICAgICAgICAgIGlmICgrK2FuY2hvckluZGV4ID49IHRoaXMuc2FtcGxlTGVuZ3Rocy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gc2FtcGxlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGxlbmd0aCA9IHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBbcDAsIHAxLCBwMiwgcDNdID0gdGhpcy5hbmNob3JzRm9yU3BsaW5lSW5kZXgoYW5jaG9ySW5kZXgpO1xuICAgICAgY29uc3Qgd2VpZ2h0ID0gKHNhbXBsZUluZGV4ICsgKG5leHRTdGF0aW9uIC0gdG90YWxMZW5ndGgpIC8gbGVuZ3RoKSAvIHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF0ubGVuZ3RoO1xuICAgICAgY29uc3QgcG9zID0gY2F0bXVsbFJvbVZlYyh3ZWlnaHQsIHAwLCBwMSwgcDIsIHAzKTtcbiAgICAgIGNvbnN0IHRhbmdlbnQgPSB0YW5nZW50QXQod2VpZ2h0LCBwMCwgcDEsIHAyLCBwMyk7XG4gICAgICBjb25zdCByb3QgPSBNYXRoLmF0YW4yKHRhbmdlbnQueSwgdGFuZ2VudC54KTtcbiAgICAgIGNvbnN0IGN1cnYgPSBjdXJ2YXR1cmVBdCh3ZWlnaHQsIHAwLCBwMSwgcDIsIHAzKTtcblxuICAgICAgc2FtcGxlcy5wdXNoKHsgcG9zLCByb3QsIGN1cnYgfSk7XG4gICAgICBuZXh0U3RhdGlvbiArPSBpbnRlcnZhbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2FtcGxlcztcbiAgfVxuXG4gIHN0YXRpb25MYXRpdHVkZUZyb21Qb3NpdGlvbihwb3NpdGlvbiwgYXJvdW5kQW5jaG9ySW5kZXggPSBudWxsKSB7XG4gICAgY29uc3QgW2FuY2hvckluZGV4LCBzYW1wbGVJbmRleCwgc2FtcGxlU3RhdGlvbiwgcHJldlNhbXBsZVN0YXRpb25dID0gdGhpcy5fZmluZENsb3Nlc3RTYW1wbGUocG9zaXRpb24sIGFyb3VuZEFuY2hvckluZGV4KTtcblxuICAgIGlmIChhbmNob3JJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gWzAsIDAsIDBdO1xuXG4gICAgbGV0IHByZXZQb2ludDtcbiAgICBsZXQgbmV4dFBvaW50O1xuICAgIGxldCBwcmV2U3RhdGlvbjtcbiAgICBsZXQgbmV4dFN0YXRpb247XG5cbiAgICBpZiAoYW5jaG9ySW5kZXggPT0gMCAmJiBzYW1wbGVJbmRleCA9PSAwKSB7XG4gICAgICBwcmV2UG9pbnQgPSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleF07XG4gICAgICBuZXh0UG9pbnQgPSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleCArIDFdO1xuICAgICAgcHJldlN0YXRpb24gPSAwO1xuICAgICAgbmV4dFN0YXRpb24gPSB0aGlzLnNhbXBsZUxlbmd0aHNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4XTtcbiAgICB9IGVsc2UgaWYgKGFuY2hvckluZGV4ID09IHRoaXMuY2VudGVybGluZXMubGVuZ3RoIC0gMSAmJiBzYW1wbGVJbmRleCA9PSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XS5sZW5ndGggLSAxKSB7XG4gICAgICBwcmV2UG9pbnQgPSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleCAtIDFdO1xuICAgICAgbmV4dFBvaW50ID0gdGhpcy5jZW50ZXJsaW5lc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgcHJldlN0YXRpb24gPSBwcmV2U2FtcGxlU3RhdGlvbjtcbiAgICAgIG5leHRTdGF0aW9uID0gc2FtcGxlU3RhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldlBvaW50ID0gc2FtcGxlSW5kZXggPT0gMCA/IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXggLSAxXVt0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4IC0gMV0ubGVuZ3RoIC0gMV0gOiB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleCAtIDFdO1xuICAgICAgbmV4dFBvaW50ID0gc2FtcGxlSW5kZXggPT0gdGhpcy5jZW50ZXJsaW5lc1thbmNob3JJbmRleF0ubGVuZ3RoIC0gMSA/IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXggKyAxXVswXSA6IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4ICsgMV07XG5cbiAgICAgIGNvbnN0IHBvc3NpYmxlTmV4dCA9IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4XTtcbiAgICAgIGNvbnN0IHBvc3NpYmxlUHJvZ3Jlc3MgPSBwb3NpdGlvbi5jbG9uZSgpLnN1YihwcmV2UG9pbnQpLmRvdChwb3NzaWJsZU5leHQuY2xvbmUoKS5zdWIocHJldlBvaW50KSkgLyBwcmV2UG9pbnQuZGlzdGFuY2VUb1NxdWFyZWQocG9zc2libGVOZXh0KTtcblxuICAgICAgaWYgKHBvc3NpYmxlUHJvZ3Jlc3MgPCAxKSB7XG4gICAgICAgIG5leHRQb2ludCA9IHBvc3NpYmxlTmV4dDtcbiAgICAgICAgcHJldlN0YXRpb24gPSBwcmV2U2FtcGxlU3RhdGlvbjtcbiAgICAgICAgbmV4dFN0YXRpb24gPSBzYW1wbGVTdGF0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldlBvaW50ID0gcG9zc2libGVOZXh0O1xuICAgICAgICBwcmV2U3RhdGlvbiA9IHNhbXBsZVN0YXRpb247XG4gICAgICAgIG5leHRTdGF0aW9uID0gc2FtcGxlU3RhdGlvbiArIHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5jbGFtcChwb3NpdGlvbi5jbG9uZSgpLnN1YihwcmV2UG9pbnQpLmRvdChuZXh0UG9pbnQuY2xvbmUoKS5zdWIocHJldlBvaW50KSkgLyBwcmV2UG9pbnQuZGlzdGFuY2VUb1NxdWFyZWQobmV4dFBvaW50KSwgMCwgMSk7XG4gICAgY29uc3QgcHJvamVjdGVkUG9zaXRpb24gPSBuZXh0UG9pbnQuY2xvbmUoKS5zdWIocHJldlBvaW50KS5tdWx0aXBseVNjYWxhcihwcm9ncmVzcykuYWRkKHByZXZQb2ludCk7XG5cbiAgICBjb25zdCBzdGF0aW9uID0gcHJldlN0YXRpb24gKyAobmV4dFN0YXRpb24gLSBwcmV2U3RhdGlvbikgKiBwcm9ncmVzcztcbiAgICBjb25zdCBsYXRpdHVkZSA9IE1hdGguc2lnbigobmV4dFBvaW50LnggLSBwcmV2UG9pbnQueCkgKiAocG9zaXRpb24ueSAtIHByZXZQb2ludC55KSAtIChuZXh0UG9pbnQueSAtIHByZXZQb2ludC55KSAqIChwb3NpdGlvbi54IC0gcHJldlBvaW50LngpKSAqIHBvc2l0aW9uLmRpc3RhbmNlVG8ocHJvamVjdGVkUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIFtzdGF0aW9uLCBsYXRpdHVkZSwgYW5jaG9ySW5kZXhdO1xuICB9XG5cbiAgX2ZpbmRDbG9zZXN0U2FtcGxlKHBvc2l0aW9uLCBhcm91bmRBbmNob3JJbmRleCA9IG51bGwpIHtcbiAgICBsZXQgY2xvc2VzdCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICBsZXQgYmVzdEFuY2hvckluZGV4O1xuICAgIGxldCBiZXN0U2FtcGxlSW5kZXg7XG4gICAgbGV0IGJlc3RTdGF0aW9uO1xuICAgIGxldCBiZXN0UHJldlN0YXRpb247XG5cbiAgICBsZXQgY3VyclN0YXRpb24gPSAwO1xuICAgIGxldCBwcmV2U3RhdGlvbiA9IDA7XG5cbiAgICBsZXQgc3RhcnRBbmNob3JJbmRleCA9IDA7XG4gICAgbGV0IGVuZEFuY2hvckluZGV4ID0gdGhpcy5jZW50ZXJsaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgaWYgKGFyb3VuZEFuY2hvckluZGV4ICE9PSBudWxsKSB7XG4gICAgICBzdGFydEFuY2hvckluZGV4ID0gTWF0aC5tYXgoMCwgYXJvdW5kQW5jaG9ySW5kZXggLSAyKTtcbiAgICAgIGVuZEFuY2hvckluZGV4ID0gTWF0aC5taW4odGhpcy5jZW50ZXJsaW5lcy5sZW5ndGggLSAxLCBhcm91bmRBbmNob3JJbmRleCArIDIpO1xuICAgIH1cblxuICAgIGlmIChzdGFydEFuY2hvckluZGV4ID4gMCkge1xuICAgICAgZm9yIChsZXQgYW5jaG9ySW5kZXggPSAwOyBhbmNob3JJbmRleCA8IHN0YXJ0QW5jaG9ySW5kZXg7IGFuY2hvckluZGV4KyspIHtcbiAgICAgICAgY3VyclN0YXRpb24gKz0gdGhpcy5hcmNMZW5ndGhzW2FuY2hvckluZGV4XTtcbiAgICAgIH1cblxuICAgICAgcHJldlN0YXRpb24gPSBjdXJyU3RhdGlvbiAtIHRoaXMuc2FtcGxlTGVuZ3Roc1tzdGFydEFuY2hvckluZGV4IC0gMV1bdGhpcy5zYW1wbGVMZW5ndGhzW3N0YXJ0QW5jaG9ySW5kZXggLSAxXS5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBhbmNob3JJbmRleCA9IHN0YXJ0QW5jaG9ySW5kZXg7IGFuY2hvckluZGV4IDw9IGVuZEFuY2hvckluZGV4OyBhbmNob3JJbmRleCsrKSB7XG4gICAgICBjb25zdCBjZW50ZXJsaW5lID0gdGhpcy5jZW50ZXJsaW5lc1thbmNob3JJbmRleF07XG4gICAgICBmb3IgKGxldCBzYW1wbGVJbmRleCA9IDA7IHNhbXBsZUluZGV4IDwgY2VudGVybGluZS5sZW5ndGg7IHNhbXBsZUluZGV4KyspIHtcbiAgICAgICAgY29uc3QgZGlzdFNxID0gcG9zaXRpb24uZGlzdGFuY2VUb1NxdWFyZWQoY2VudGVybGluZVtzYW1wbGVJbmRleF0pO1xuICAgICAgICBpZiAoZGlzdFNxIDwgY2xvc2VzdCkge1xuICAgICAgICAgIGNsb3Nlc3QgPSBkaXN0U3E7XG4gICAgICAgICAgYmVzdEFuY2hvckluZGV4ID0gYW5jaG9ySW5kZXg7XG4gICAgICAgICAgYmVzdFNhbXBsZUluZGV4ID0gc2FtcGxlSW5kZXg7XG4gICAgICAgICAgYmVzdFN0YXRpb24gPSBjdXJyU3RhdGlvbjtcbiAgICAgICAgICBiZXN0UHJldlN0YXRpb24gPSBwcmV2U3RhdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZTdGF0aW9uID0gY3VyclN0YXRpb247XG4gICAgICAgIGN1cnJTdGF0aW9uICs9IHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbYmVzdEFuY2hvckluZGV4LCBiZXN0U2FtcGxlSW5kZXgsIGJlc3RTdGF0aW9uLCBiZXN0UHJldlN0YXRpb25dO1xuICB9XG5cbiAgYWRkQW5jaG9yKHBvc2l0aW9uLCByZXNhbXBsZSA9IHRydWUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYW5jaG9ycy5wdXNoKHBvc2l0aW9uKSAtIDE7XG5cbiAgICBpZiAocmVzYW1wbGUpIHtcbiAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDI7IGkgPCBpbmRleDsgaSsrKVxuICAgICAgICB0aGlzLnJlc2FtcGxlKGkpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUFuY2hvcihpbmRleCwgcG9zaXRpb24pIHtcbiAgICB0aGlzLmFuY2hvcnNbaW5kZXhdID0gcG9zaXRpb247XG5cbiAgICBmb3IgKGxldCBpID0gaW5kZXggLSAyOyBpIDw9IGluZGV4ICsgMTsgaSsrKVxuICAgICAgdGhpcy5yZXNhbXBsZShpKTtcbiAgfVxuXG4gIHJlbW92ZUFuY2hvcihpbmRleCkge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5hbmNob3JzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgdGhpcy5hbmNob3JzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICBjb25zdCBzZWdtZW50SW5kZXggPSBpbmRleCA8IHRoaXMuYW5jaG9ycy5sZW5ndGggPyBpbmRleCA6IGluZGV4IC0gMTtcbiAgICB0aGlzLmNlbnRlcmxpbmVzLnNwbGljZShzZWdtZW50SW5kZXgsIDEpO1xuICAgIHRoaXMuc2FtcGxlTGVuZ3Rocy5zcGxpY2Uoc2VnbWVudEluZGV4LCAxKTtcbiAgICB0aGlzLmxlZnRCb3VuZGFyaWVzLnNwbGljZShzZWdtZW50SW5kZXgsIDEpO1xuICAgIHRoaXMucmlnaHRCb3VuZGFyaWVzLnNwbGljZShzZWdtZW50SW5kZXgsIDEpO1xuICAgIHRoaXMuYXJjTGVuZ3Rocy5zcGxpY2Uoc2VnbWVudEluZGV4LCAxKTtcblxuICAgIGZvciAobGV0IGkgPSBzZWdtZW50SW5kZXggLSAyOyBpIDw9IHNlZ21lbnRJbmRleDsgaSsrKVxuICAgICAgdGhpcy5yZXNhbXBsZShpKTtcbiAgfVxuXG4gIHJlc2FtcGxlKGluZGV4KSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuYW5jaG9ycy5sZW5ndGggLSAyKSByZXR1cm47XG5cbiAgICBjb25zdCBbcDAsIHAxLCBwMiwgcDNdID0gdGhpcy5hbmNob3JzRm9yU3BsaW5lSW5kZXgoaW5kZXgpO1xuICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgIGNvbnN0IGxlbmd0aHMgPSBbXTtcbiAgICBjb25zdCBsZWZ0Qm91bmRhcnkgPSBbXTtcbiAgICBjb25zdCByaWdodEJvdW5kYXJ5ID0gW107XG4gICAgbGV0IHByZXZQb2ludCA9IG51bGw7XG5cbiAgICBjb25zdCBwb2ludHNQZXJTZWdtZW50ID0gTWF0aC5tYXgoMTAsIE1hdGguY2VpbChwMS5kaXN0YW5jZVRvKHAyKSAvIDEpKTtcbiAgICBjb25zdCBudW1Qb2ludHMgPSBpbmRleCA9PSB0aGlzLmFuY2hvcnMubGVuZ3RoIC0gMiA/IHBvaW50c1BlclNlZ21lbnQgKyAxIDogcG9pbnRzUGVyU2VnbWVudDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUG9pbnRzOyBpKyspIHtcbiAgICAgIGNvbnN0IHQgPSBpIC8gcG9pbnRzUGVyU2VnbWVudDtcbiAgICAgIGNvbnN0IHBvaW50ID0gY2F0bXVsbFJvbVZlYyh0LCBwMCwgcDEsIHAyLCBwMyk7XG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XG5cbiAgICAgIGlmIChwcmV2UG9pbnQgIT0gbnVsbClcbiAgICAgICAgbGVuZ3Rocy5wdXNoKHByZXZQb2ludC5kaXN0YW5jZVRvKHBvaW50KSk7XG4gICAgICBwcmV2UG9pbnQgPSBwb2ludDtcblxuICAgICAgY29uc3QgdGFuZ2VudCA9IHRhbmdlbnRBdCh0LCBwMCwgcDEsIHAyLCBwMyk7XG4gICAgICBjb25zdCBub3JtYWwgPSBuZXcgVEhSRUUuVmVjdG9yMigtdGFuZ2VudC55LCB0YW5nZW50LngpO1xuXG4gICAgICBsZWZ0Qm91bmRhcnkucHVzaChub3JtYWwuY2xvbmUoKS5tdWx0aXBseVNjYWxhcigtaGFsZkxhbmVXaWR0aCkuYWRkKHBvaW50KSk7XG4gICAgICByaWdodEJvdW5kYXJ5LnB1c2gobm9ybWFsLmNsb25lKCkubXVsdGlwbHlTY2FsYXIoaGFsZkxhbmVXaWR0aCkuYWRkKHBvaW50KSk7XG4gICAgfVxuXG4gICAgbGVuZ3Rocy5wdXNoKHByZXZQb2ludC5kaXN0YW5jZVRvKHAyKSk7XG5cbiAgICB0aGlzLmNlbnRlcmxpbmVzW2luZGV4XSA9IHBvaW50cztcbiAgICB0aGlzLnNhbXBsZUxlbmd0aHNbaW5kZXhdID0gbGVuZ3RocztcbiAgICB0aGlzLmxlZnRCb3VuZGFyaWVzW2luZGV4XSA9IGxlZnRCb3VuZGFyeTtcbiAgICB0aGlzLnJpZ2h0Qm91bmRhcmllc1tpbmRleF0gPSByaWdodEJvdW5kYXJ5O1xuICAgIHRoaXMuYXJjTGVuZ3Roc1tpbmRleF0gPSBsZW5ndGhzLnJlZHVjZSgoc3VtLCBsKSA9PiBzdW0gKyBsLCAwKTtcbiAgfVxuXG4gIHJlc2FtcGxlQWxsKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hbmNob3JzLmxlbmd0aDsgaSsrKVxuICAgICAgdGhpcy5yZXNhbXBsZShpKTtcbiAgfVxuXG4gIGFuY2hvcnNGb3JTcGxpbmVJbmRleChpbmRleCkge1xuICAgIGxldCBwO1xuICAgIGlmIChpbmRleCA9PSAwKVxuICAgICAgcCA9IFt0aGlzLmFuY2hvcnNbMF1dLmNvbmNhdCh0aGlzLmFuY2hvcnMuc2xpY2UoMCwgMykpO1xuICAgIGVsc2VcbiAgICAgIHAgPSB0aGlzLmFuY2hvcnMuc2xpY2UoaW5kZXggLSAxLCBpbmRleCArIDMpO1xuXG4gICAgaWYgKHBbM10gPT09IHVuZGVmaW5lZClcbiAgICAgIHBbM10gPSBwWzJdO1xuXG4gICAgcmV0dXJuIHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2F0bXVsbFJvbSh0LCBwMCwgcDEsIHAyLCBwMykge1xuICBjb25zdCB2MCA9IChwMiAtIHAwKSAqIDAuNTtcbiAgY29uc3QgdjEgPSAocDMgLSBwMSkgKiAwLjU7XG4gIGNvbnN0IHQyID0gdCAqIHQ7XG4gIGNvbnN0IHQzID0gdCAqIHQyO1xuICByZXR1cm4gKDIgKiBwMSAtIDIgKiBwMiArIHYwICsgdjEpICogdDMgKyAoLTMgKiBwMSArIDMgKiBwMiAtIDIgKiB2MCAtIHYxKSAqIHQyICsgdjAgKiB0ICsgcDE7XG59XG5cbmZ1bmN0aW9uIGNhdG11bGxSb21WZWModCwgcDAsIHAxLCBwMiwgcDMpIHtcbiAgcmV0dXJuIG5ldyBUSFJFRS5WZWN0b3IyKGNhdG11bGxSb20odCwgcDAueCwgcDEueCwgcDIueCwgcDMueCksIGNhdG11bGxSb20odCwgcDAueSwgcDEueSwgcDIueSwgcDMueSkpO1xufVxuXG5mdW5jdGlvbiB0YW5nZW50QXQodCwgcDAsIHAxLCBwMiwgcDMpIHtcbiAgY29uc3QgZGVsdGEgPSAwLjAwMDE7XG4gIGxldCB0MSA9IHQgLSBkZWx0YTtcbiAgbGV0IHQyID0gdCArIGRlbHRhO1xuXG4gIGlmICh0MSA8IDApIHQxID0gMDtcbiAgaWYgKHQyID4gMSkgdDIgPSAxO1xuXG4gIGNvbnN0IHByZXYgPSBjYXRtdWxsUm9tVmVjKHQxLCBwMCwgcDEsIHAyLCBwMyk7XG4gIGNvbnN0IG5leHQgPSBjYXRtdWxsUm9tVmVjKHQyLCBwMCwgcDEsIHAyLCBwMyk7XG5cbiAgcmV0dXJuIG5leHQuc3ViKHByZXYpLm5vcm1hbGl6ZSgpO1xufVxuXG5mdW5jdGlvbiBjdXJ2YXR1cmVBdCh0MiwgcDAsIHAxLCBwMiwgcDMpIHtcbiAgY29uc3QgZGVsdGEgPSAwLjAwMDE7XG5cbiAgLy8gSWYgd2UncmUgZXN0aW1hdGluZyBjdXJ2YXR1cmUgYXQgb25lIG9mIHRoZSBlbmRwb2ludHMgb2YgdGhlIHNwbGluZSxcbiAgLy8gc2xpZ2h0bHkgc2hpZnQgaXQgaW53YXJkcyB0byBhdm9pZCBpbmZpbml0ZSBjdXJ2YXR1cmUuXG4gIGlmICh0MiA9PSAwKSB0MiA9IGRlbHRhO1xuICBpZiAodDIgPT0gMSkgdDIgPSAxIC0gZGVsdGE7XG5cbiAgbGV0IHQxID0gdDIgLSBkZWx0YTtcbiAgbGV0IHQzID0gdDIgKyBkZWx0YTtcblxuICBpZiAodDEgPCAwKSB0MSA9IDA7XG4gIGlmICh0MyA+IDEpIHQzID0gMTtcblxuICBjb25zdCBwdDEgPSBjYXRtdWxsUm9tVmVjKHQxLCBwMCwgcDEsIHAyLCBwMyk7XG4gIGNvbnN0IHB0MiA9IGNhdG11bGxSb21WZWModDIsIHAwLCBwMSwgcDIsIHAzKTtcbiAgY29uc3QgcHQzID0gY2F0bXVsbFJvbVZlYyh0MywgcDAsIHAxLCBwMiwgcDMpO1xuXG4gIHJldHVybiAoTWF0aC5hdGFuMihwdDMueSAtIHB0Mi55LCBwdDMueCAtIHB0Mi54KSAtIE1hdGguYXRhbjIocHQyLnkgLSBwdDEueSwgcHQyLnggLSBwdDEueCkpIC8gcHQyLmRpc3RhbmNlVG8ocHQxKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRpY09ic3RhY2xlIHtcbiAgc3RhdGljIGh5ZHJhdGUob2JqKSB7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iaiwgU3RhdGljT2JzdGFjbGUucHJvdG90eXBlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLnBvcywgVEhSRUUuVmVjdG9yMi5wcm90b3R5cGUpO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICByZXR1cm4gbmV3IFN0YXRpY09ic3RhY2xlKG5ldyBUSFJFRS5WZWN0b3IyKGpzb24ucFswXSwganNvbi5wWzFdKSwganNvbi5yLCBqc29uLncsIGpzb24uaCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwb3MsIHJvdCwgd2lkdGgsIGhlaWdodCkge1xuICAgIHRoaXMucG9zID0gcG9zO1xuICAgIHRoaXMucm90ID0gcm90O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcblxuICAgIHRoaXMudXBkYXRlVmVydGljZXMoKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0cnVuYyA9IG4gPT4gK24udG9GaXhlZCg1KTtcblxuICAgIHJldHVybiB7XG4gICAgICBwOiBbdHJ1bmModGhpcy5wb3MueCksIHRydW5jKHRoaXMucG9zLnkpXSxcbiAgICAgIHI6IHRydW5jKHRoaXMucm90KSxcbiAgICAgIHc6IHRydW5jKHRoaXMud2lkdGgpLFxuICAgICAgaDogdHJ1bmModGhpcy5oZWlnaHQpXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVZlcnRpY2VzKCkge1xuICAgIHRoaXMudmVydGljZXMgPSBbXTtcblxuICAgIGNvbnN0IGNvc1JvdCA9IE1hdGguY29zKHRoaXMucm90KTtcbiAgICBjb25zdCBzaW5Sb3QgPSBNYXRoLnNpbih0aGlzLnJvdCk7XG4gICAgY29uc3QgaGFsZldpZHRoID0gdGhpcy53aWR0aCAvIDI7XG4gICAgY29uc3QgaGFsZkhlaWdodCA9IHRoaXMuaGVpZ2h0IC8gMjtcblxuICAgIGNvbnN0IGhXY1IgPSBoYWxmV2lkdGggKiBjb3NSb3Q7XG4gICAgY29uc3QgaFdzUiA9IGhhbGZXaWR0aCAqIHNpblJvdDtcbiAgICBjb25zdCBoSGNSID0gaGFsZkhlaWdodCAqIGNvc1JvdDtcbiAgICBjb25zdCBoSHNSID0gaGFsZkhlaWdodCAqIHNpblJvdDtcblxuICAgIGNvbnN0IHYxID0gWy1oV2NSIC0gaEhzUiArIHRoaXMucG9zLngsIC1oV3NSICsgaEhjUiArIHRoaXMucG9zLnldO1xuICAgIGNvbnN0IHYyID0gWy1oV2NSICsgaEhzUiArIHRoaXMucG9zLngsIC1oV3NSIC0gaEhjUiArIHRoaXMucG9zLnldO1xuICAgIGNvbnN0IHYzID0gW2hXY1IgKyBoSHNSICsgdGhpcy5wb3MueCwgaFdzUiAtIGhIY1IgKyB0aGlzLnBvcy55XTtcbiAgICBjb25zdCB2NCA9IFtoV2NSIC0gaEhzUiArIHRoaXMucG9zLngsIGhXc1IgKyBoSGNSICsgdGhpcy5wb3MueV07XG5cbiAgICB0aGlzLnZlcnRpY2VzID0gW1xuICAgICAgdjFbMF0sIHYxWzFdLFxuICAgICAgdjJbMF0sIHYyWzFdLFxuICAgICAgdjNbMF0sIHYzWzFdLFxuICAgICAgdjNbMF0sIHYzWzFdLFxuICAgICAgdjRbMF0sIHY0WzFdLFxuICAgICAgdjFbMF0sIHYxWzFdXG4gICAgXTtcbiAgfVxufVxuIiwiLy8gSGFsZiB3aWR0aCBhbmQgaGFsZiBoZWlnaHRcbmNvbnN0IFZFSElDTEVfU0laRSA9IHsgdzogMi41LCBoOiAxIH07XG5jb25zdCBDWUNMSVNUX1NJWkUgPSB7IHc6IDEuMiwgaDogMC42IH07XG5jb25zdCBQRURFU1RSSUFOX1NJWkUgPSB7IHc6IDAuNiwgaDogMC42IH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER5bmFtaWNPYnN0YWNsZSB7XG4gIHN0YXRpYyBoeWRyYXRlKG9iaikge1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmosIER5bmFtaWNPYnN0YWNsZS5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmouc3RhcnRQb3MsIFRIUkVFLlZlY3RvcjIucHJvdG90eXBlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLnZlbG9jaXR5LCBUSFJFRS5WZWN0b3IyLnByb3RvdHlwZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0eXBlLCBzdGFydFBvcywgdmVsb2NpdHksIHBhcmFsbGVsKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnN0YXJ0UG9zID0gc3RhcnRQb3M7XG4gICAgdGhpcy52ZWxvY2l0eSA9IHZlbG9jaXR5O1xuICAgIHRoaXMucGFyYWxsZWwgPSBwYXJhbGxlbDtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdjeWNsaXN0JzpcbiAgICAgICAgICB0aGlzLnNpemUgPSBPYmplY3QuYXNzaWduKHt9LCBDWUNMSVNUX1NJWkUpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3BlZGVzdHJpYW4nOlxuICAgICAgICAgIHRoaXMuc2l6ZSA9IE9iamVjdC5hc3NpZ24oe30sIFBFREVTVFJJQU5fU0laRSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLnNpemUgPSBPYmplY3QuYXNzaWduKHt9LCBWRUhJQ0xFX1NJWkUpO1xuICAgIH1cblxuICAgIGlmICghcGFyYWxsZWwpXG4gICAgICBbdGhpcy5zaXplLncsIHRoaXMuc2l6ZS5oXSA9IFt0aGlzLnNpemUuaCwgdGhpcy5zaXplLnddO1xuICB9XG5cbiAgcG9zaXRpb25BdFRpbWUodGltZSkge1xuICAgIHJldHVybiB0aGlzLnZlbG9jaXR5LmNsb25lKCkubXVsdGlwbHlTY2FsYXIodGltZSkuYWRkKHRoaXMuc3RhcnRQb3MpO1xuICB9XG5cbiAgcG9zaXRpb25zSW5UaW1lUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1lLCBudW1GcmFtZXMpIHtcbiAgICBjb25zdCBkdCA9IChlbmRUaW1lIC0gc3RhcnRUaW1lKSAvIG51bUZyYW1lcztcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBbXTtcbiAgICBsZXQgdGltZSA9IHN0YXJ0VGltZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG51bUZyYW1lczsgaSsrKSB7XG4gICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLnBvc2l0aW9uQXRUaW1lKHRpbWUpKTtcbiAgICAgIHRpbWUgKz0gZHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9ucztcbiAgfVxuXG4gIHZlcnRpY2VzSW5UaW1lUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1lLCBjb25maWcpIHtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uc0luVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSwgY29uZmlnLm51bUR5bmFtaWNTdWJmcmFtZXMpO1xuICAgIGNvbnN0IHZlcnRpY2VzID0gW107XG5cbiAgICAvLyBIYXphcmQgZGlsYXRpb24gKGRyYXduIGJlaGluZCwgeiA9IDAuNzUpXG4gICAgY29uc3QgaGF6YXJkSGFsZldpZHRoID0gdGhpcy5zaXplLncgKyBjb25maWcuZHluYW1pY0hhemFyZERpbGF0aW9uUyArIGNvbmZpZy5jb2xsaXNpb25EaWxhdGlvblM7XG4gICAgY29uc3QgaGF6YXJkSGFsZkhlaWdodCA9IHRoaXMuc2l6ZS5oICsgY29uZmlnLmR5bmFtaWNIYXphcmREaWxhdGlvbkwgKyBjb25maWcuY29sbGlzaW9uRGlsYXRpb25MO1xuXG4gICAgcG9zaXRpb25zLmZvckVhY2gocCA9PiB7XG4gICAgICBjb25zdCB2MSA9IFstaGF6YXJkSGFsZldpZHRoICsgcC54LCBoYXphcmRIYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHYyID0gW2hhemFyZEhhbGZXaWR0aCArIHAueCwgaGF6YXJkSGFsZkhlaWdodCArIHAueV07XG4gICAgICBjb25zdCB2MyA9IFtoYXphcmRIYWxmV2lkdGggKyBwLngsIC1oYXphcmRIYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHY0ID0gWy1oYXphcmRIYWxmV2lkdGggKyBwLngsIC1oYXphcmRIYWxmSGVpZ2h0ICsgcC55XTtcblxuICAgICAgdmVydGljZXMucHVzaChcbiAgICAgICAgdjFbMF0sIHYxWzFdLCAwLjc1LFxuICAgICAgICB2MlswXSwgdjJbMV0sIDAuNzUsXG4gICAgICAgIHYzWzBdLCB2M1sxXSwgMC43NSxcbiAgICAgICAgdjNbMF0sIHYzWzFdLCAwLjc1LFxuICAgICAgICB2NFswXSwgdjRbMV0sIDAuNzUsXG4gICAgICAgIHYxWzBdLCB2MVsxXSwgMC43NVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIENvbGxpc2lvbiBkaWxhdGlvbiAoZHJhd24gaW4gZnJvbnQsIHogPSAwLjI1KVxuICAgIGNvbnN0IGNvbGxpc2lvbkhhbGZXaWR0aCA9IHRoaXMuc2l6ZS53ICsgY29uZmlnLmNvbGxpc2lvbkRpbGF0aW9uUztcbiAgICBjb25zdCBjb2xsaXNpb25IYWxmSGVpZ2h0ID0gdGhpcy5zaXplLmggKyBjb25maWcuY29sbGlzaW9uRGlsYXRpb25MO1xuXG4gICAgcG9zaXRpb25zLmZvckVhY2gocCA9PiB7XG4gICAgICBjb25zdCB2MSA9IFstY29sbGlzaW9uSGFsZldpZHRoICsgcC54LCBjb2xsaXNpb25IYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHYyID0gW2NvbGxpc2lvbkhhbGZXaWR0aCArIHAueCwgY29sbGlzaW9uSGFsZkhlaWdodCArIHAueV07XG4gICAgICBjb25zdCB2MyA9IFtjb2xsaXNpb25IYWxmV2lkdGggKyBwLngsIC1jb2xsaXNpb25IYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHY0ID0gWy1jb2xsaXNpb25IYWxmV2lkdGggKyBwLngsIC1jb2xsaXNpb25IYWxmSGVpZ2h0ICsgcC55XTtcblxuICAgICAgdmVydGljZXMucHVzaChcbiAgICAgICAgdjFbMF0sIHYxWzFdLCAwLjI1LFxuICAgICAgICB2MlswXSwgdjJbMV0sIDAuMjUsXG4gICAgICAgIHYzWzBdLCB2M1sxXSwgMC4yNSxcbiAgICAgICAgdjNbMF0sIHYzWzFdLCAwLjI1LFxuICAgICAgICB2NFswXSwgdjRbMV0sIDAuMjUsXG4gICAgICAgIHYxWzBdLCB2MVsxXSwgMC4yNVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2ZXJ0aWNlcztcbiAgfVxufVxuIiwiaW1wb3J0IENhciBmcm9tIFwiLi4vcGh5c2ljcy9DYXIuanNcIjtcblxuY29uc3QgTE9DQUxfU1RPUkFHRV9LRVkgPSAnZGFzaF9QYXRoUGxhbm5lckNvbmZpZyc7XG5cbmNvbnN0IGludGVybmFsQ29uZmlnID0ge1xuICBsYXR0aWNlOiB7XG4gICAgbnVtU3RhdGlvbnM6IDgsXG4gICAgbnVtTGF0aXR1ZGVzOiAxNyxcbiAgICBzdGF0aW9uQ29ubmVjdGl2aXR5OiAzLFxuICAgIGxhdGl0dWRlQ29ubmVjdGl2aXR5OiA3XG4gIH0sXG5cbiAgcm9hZFdpZHRoOiAzLjcgKiAyLCAvLyBtZXRlcnNcblxuICBudW1EeW5hbWljRnJhbWVzOiAyMCxcbiAgbnVtRHluYW1pY1N1YmZyYW1lczogNCxcblxuICBkQ3VydmF0dXJlTWF4OiBDYXIuTUFYX1NURUVSX1NQRUVEIC8gQ2FyLldIRUVMX0JBU0UsXG4gIHJlYXJBeGxlVG9DZW50ZXI6IC1DYXIuUkVBUl9BWExFX1BPU1xufTtcblxuY29uc3QgZGVmYXVsdENvbmZpZyA9IHtcbiAgc3BhdGlhbEhvcml6b246IDEyMCwgLy8gbWV0ZXJzXG4gIGNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWw6IDAuNSwgLy8gbWV0ZXJzXG5cbiAgeHlHcmlkQ2VsbFNpemU6IDAuMywgLy8gbWV0ZXJzXG4gIHNsR3JpZENlbGxTaXplOiAwLjE1LCAvLyBtZXRlcnNcbiAgZ3JpZE1hcmdpbjogMjAsIC8vIG1ldGVyc1xuICBwYXRoU2FtcGxpbmdTdGVwOiAxLCAvLyBtZXRlcnNcblxuICBjdWJpY1BhdGhQZW5hbHR5OiAwLFxuXG4gIGNvbGxpc2lvbkRpbGF0aW9uUzogQ2FyLkhBTEZfQ0FSX0xFTkdUSCArIDIsIC8vIG1ldGVyc1xuICBoYXphcmREaWxhdGlvblM6IDgsIC8vIG1ldGVyc1xuICBjb2xsaXNpb25EaWxhdGlvbkw6IENhci5IQUxGX0NBUl9XSURUSCArIDAuNSwgLy9tZXRlcnNcbiAgaGF6YXJkRGlsYXRpb25MOiAwLjUsIC8vIG1ldGVyc1xuXG4gIGR5bmFtaWNIYXphcmREaWxhdGlvblM6IDE2LFxuICBkeW5hbWljSGF6YXJkRGlsYXRpb25MOiAwLjUsXG5cbiAgb2JzdGFjbGVIYXphcmRDb3N0OiAyMDAsXG5cbiAgbGFuZUNlbnRlckxhdGl0dWRlOiBpbnRlcm5hbENvbmZpZy5yb2FkV2lkdGggLyA0LFxuICBsYW5lU2hvdWxkZXJMYXRpdHVkZTogaW50ZXJuYWxDb25maWcucm9hZFdpZHRoIC8gMiAqIDEuMSAtIENhci5IQUxGX0NBUl9XSURUSCxcbiAgbGFuZUNvc3RTbG9wZTogMjAsIC8vIGNvc3QgLyBtZXRlclxuICBsYW5lUHJlZmVyZW5jZURpc2NvdW50OiA1NSxcblxuICBzdGF0aW9uUmVhY2hEaXNjb3VudDogNDAwLFxuICBleHRyYVRpbWVQZW5hbHR5OiAxMDAwLFxuXG4gIGh5c3RlcmVzaXNEaXNjb3VudDogNTAsXG5cbiAgc3BlZWRMaW1pdFBlbmFsdHk6IDIwMCxcblxuICBoYXJkQWNjZWxlcmF0aW9uUGVuYWx0eTogNzAsXG4gIGhhcmREZWNlbGVyYXRpb25QZW5hbHR5OiA1MCxcblxuICBzb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvbkxpbWl0OiA0LCAvLyBtL3NeMlxuICBzb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHk6IDEwMCxcbiAgbGluZWFyTGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHk6IDEwLFxuXG4gIGFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHk6IDEwXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXRoUGxhbm5lckNvbmZpZ0VkaXRvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWcpO1xuXG4gICAgdGhpcy5zaG93Q29uZmlnQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3ctY29uZmlnLWJveCcpO1xuICAgIHRoaXMuY29uZmlnQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbmZpZy1ib3gtY29udGVudCcpO1xuICAgIHRoaXMuY29uZmlnRm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25maWctZm9ybScpO1xuXG4gICAgdGhpcy5fc2V0VXBCdXR0b25zKCk7XG5cbiAgICBsZXQgc3RvcmVkQ29uZmlnID0ge307XG4gICAgdHJ5IHtcbiAgICAgIHN0b3JlZENvbmZpZyA9IEpTT04ucGFyc2Uod2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKExPQ0FMX1NUT1JBR0VfS0VZKSkgfHwge307XG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuX2NvbmZpZykuc29ydCgpKSB7XG4gICAgICBpZiAoc3RvcmVkQ29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCkgdGhpcy5fY29uZmlnW2tleV0gPSBzdG9yZWRDb25maWdba2V5XTtcbiAgICAgIHRoaXMuY29uZmlnRm9ybS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDb25maWdGaWVsZChrZXksIHRoaXMuX2NvbmZpZ1trZXldKSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbmZpZygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fY29uZmlnLCBpbnRlcm5hbENvbmZpZyk7XG4gIH1cblxuICBfc2V0VXBCdXR0b25zKCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG93LWNvbmZpZy1idXR0b24nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xuICAgICAgdGhpcy5zaG93Q29uZmlnQm94LmNsYXNzTGlzdC5hZGQoJ2lzLWhpZGRlbicpO1xuICAgICAgdGhpcy5jb25maWdCb3guY2xhc3NMaXN0LnJlbW92ZSgnaXMtaGlkZGVuJyk7XG4gICAgfSk7XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZS1jb25maWctYnV0dG9uJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcbiAgICAgIHRoaXMuc2hvd0NvbmZpZ0JveC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1oaWRkZW4nKTtcbiAgICAgIHRoaXMuY29uZmlnQm94LmNsYXNzTGlzdC5hZGQoJ2lzLWhpZGRlbicpO1xuICAgIH0pO1xuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhdmUtY29uZmlnLWJ1dHRvbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fc2F2ZUNvbmZpZ0ZpZWxkcy5iaW5kKHRoaXMpKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdG9yZS1kZWZhdWx0cy1jb25maWctYnV0dG9uJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9yZXN0b3JlRGVmYXVsdHMuYmluZCh0aGlzKSk7XG4gIH1cblxuICBfY3JlYXRlQ29uZmlnRmllbGQoa2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IGh0bWwgPVxuICAgICAgYDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1ob3Jpem9udGFsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWxhYmVsIGlzLXNtYWxsXCIgc3R5bGU9XCJmbGV4LWdyb3c6IDEwMDtcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgaGFzLXRleHQtZ3JleS1saWdodFwiIGZvcj1cImNvbmZpZy1maWVsZC0ke2tleX1cIj4ke2tleX08L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1ib2R5XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTZweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJjb25maWctZmllbGQtJHtrZXl9XCIgbmFtZT1cIiR7a2V5fVwiIGNsYXNzPVwiaW5wdXQgaXMtc21hbGwgJHt2YWx1ZSAhPT0gZGVmYXVsdENvbmZpZ1trZXldID8gJ2lzLWRhbmdlcicgOiAnJ31cIiB0eXBlPVwidGV4dFwiIHN0eWxlPVwid2lkdGg6IDYwcHg7IGJvcmRlci13aWR0aDogMnB4O1wiIHZhbHVlPVwiJHt2YWx1ZX1cIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+YDtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTtcbiAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSBodG1sO1xuICAgIHJldHVybiB0ZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQ7XG4gIH1cblxuICBfc2F2ZUNvbmZpZ0ZpZWxkcygpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSh0aGlzLmNvbmZpZ0Zvcm0pO1xuXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgZm9ybURhdGEuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IE51bWJlci5wYXJzZUZsb2F0KHYpO1xuICAgICAgdGhpcy5fY29uZmlnW2tdID0gcGFyc2VkVmFsdWVcblxuICAgICAgY29uc3QgZmllbGREb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgY29uZmlnLWZpZWxkLSR7a31gKTtcbiAgICAgIGlmIChwYXJzZWRWYWx1ZSA9PT0gZGVmYXVsdENvbmZpZ1trXSlcbiAgICAgICAgZmllbGREb20uY2xhc3NMaXN0LnJlbW92ZSgnaXMtZGFuZ2VyJyk7XG4gICAgICBlbHNlXG4gICAgICAgIGZpZWxkRG9tLmNsYXNzTGlzdC5hZGQoJ2lzLWRhbmdlcicpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oTE9DQUxfU1RPUkFHRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMuX2NvbmZpZykpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cblxuICBfcmVzdG9yZURlZmF1bHRzKCkge1xuICAgIHRoaXMuX2NvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDb25maWcpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShMT0NBTF9TVE9SQUdFX0tFWSk7XG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIHdoaWxlICh0aGlzLmNvbmZpZ0Zvcm0uZmlyc3RDaGlsZClcbiAgICAgIHRoaXMuY29uZmlnRm9ybS5yZW1vdmVDaGlsZCh0aGlzLmNvbmZpZ0Zvcm0uZmlyc3RDaGlsZCk7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLl9jb25maWcpLnNvcnQoKSlcbiAgICAgIHRoaXMuY29uZmlnRm9ybS5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDb25maWdGaWVsZChrZXksIHRoaXMuX2NvbmZpZ1trZXldKSk7XG4gIH1cbn1cblxuUGF0aFBsYW5uZXJDb25maWdFZGl0b3IuaW50ZXJuYWxDb25maWcgPSBpbnRlcm5hbENvbmZpZztcbiIsImltcG9ydCBEeW5hbWljT2JzdGFjbGUgZnJvbSBcIi4uL2F1dG9ub215L0R5bmFtaWNPYnN0YWNsZS5qc1wiO1xuaW1wb3J0IFBhdGhQbGFubmVyQ29uZmlnRWRpdG9yIGZyb20gXCIuL1BhdGhQbGFubmVyQ29uZmlnRWRpdG9yLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER5bmFtaWNPYnN0YWNsZUVkaXRvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZWRpdG9yRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1keW5hbWljLW9ic3RhY2xlcy1ib3gnKTtcbiAgICB0aGlzLmZvcm1zQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1keW5hbWljLW9ic3RhY2xlLWZvcm1zJyk7XG4gICAgdGhpcy5zdGF0c0R5bmFtaWNPYnN0YWNsZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLXN0YXRzLWR5bmFtaWMtb2JzdGFjbGVzJyk7XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWFkZC1keW5hbWljLW9ic3RhY2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmFkZER5bmFtaWNPYnN0YWNsZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGVuYWJsZSgpIHtcbiAgICB0aGlzLmVkaXRvckRvbS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1oaWRkZW4nKTtcbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5lZGl0b3JEb20uY2xhc3NMaXN0LmFkZCgnaXMtaGlkZGVuJyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgZm9ybXMgPSB0aGlzLmZvcm1zQ29udGFpbmVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJyk7XG4gICAgY29uc3Qgb2JzdGFjbGVzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3Jtc1tpXSk7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IHBhcmFsbGVsOiBmYWxzZSB9O1xuXG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAgICAgIHBhcmFtc1trXSA9IHY7XG5cbiAgICAgIGxldCB0eXBlID0gMDtcbiAgICAgIGlmIChwYXJhbXMudHlwZSA9PSAnY3ljbGlzdCcpXG4gICAgICAgIHR5cGUgPSAxO1xuICAgICAgZWxzZSBpZiAocGFyYW1zLnR5cGUgPT0gJ3BlZGVzdHJpYW4nKVxuICAgICAgICB0eXBlID0gMjtcblxuICAgICAgb2JzdGFjbGVzLnB1c2goe1xuICAgICAgICBwOiBbcGFyYW1zLnNQb3MsIHBhcmFtcy5sUG9zXSxcbiAgICAgICAgdjogW3BhcmFtcy5zVmVsLCBwYXJhbXMubFZlbF0sXG4gICAgICAgIGw6ICEhcGFyYW1zLnBhcmFsbGVsID8gMSA6IDAsXG4gICAgICAgIHQ6IHR5cGVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBvYnN0YWNsZXM7XG4gIH1cblxuICBsb2FkSlNPTihqc29uKSB7XG4gICAgdGhpcy5jbGVhckR5bmFtaWNPYnN0YWNsZXMoKTtcblxuICAgIGpzb24uZm9yRWFjaChvID0+IHtcbiAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmFkZER5bmFtaWNPYnN0YWNsZSgpO1xuXG4gICAgICBmb3JtWydzUG9zJ10udmFsdWUgPSBvLnBbMF07XG4gICAgICBmb3JtWydsUG9zJ10udmFsdWUgPSBvLnBbMV07XG4gICAgICBmb3JtWydzVmVsJ10udmFsdWUgPSBvLnZbMF07XG4gICAgICBmb3JtWydsVmVsJ10udmFsdWUgPSBvLnZbMV07XG4gICAgICBmb3JtWydwYXJhbGxlbCddLmNoZWNrZWQgPSAhIW8ubDtcbiAgICAgIGZvcm1bJ3R5cGUnXS5zZWxlY3RlZEluZGV4ID0gby50O1xuICAgIH0pO1xuICB9XG5cbiAgY29sbGVjdER5bmFtaWNPYnN0YWNsZXMoKSB7XG4gICAgY29uc3QgZm9ybXMgPSB0aGlzLmZvcm1zQ29udGFpbmVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJyk7XG4gICAgY29uc3Qgb2JzdGFjbGVzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3Jtc1tpXSk7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7IHBhcmFsbGVsOiBmYWxzZSB9O1xuXG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBmb3JtRGF0YS5lbnRyaWVzKCkpXG4gICAgICAgIHBhcmFtc1trXSA9IHY7XG5cbiAgICAgIGNvbnN0IHBvcyA9IG5ldyBUSFJFRS5WZWN0b3IyKE51bWJlcihwYXJhbXMuc1BvcykgfHwgMCwgKE51bWJlcihwYXJhbXMubFBvcykgfHwgMCkgKiBQYXRoUGxhbm5lckNvbmZpZ0VkaXRvci5pbnRlcm5hbENvbmZpZy5yb2FkV2lkdGggLyAyKTtcbiAgICAgIGNvbnN0IHZlbCA9IG5ldyBUSFJFRS5WZWN0b3IyKE51bWJlcihwYXJhbXMuc1ZlbCkgfHwgMCwgTnVtYmVyKHBhcmFtcy5sVmVsKSB8fCAwKTtcbiAgICAgIGNvbnN0IHBhcmFsbGVsID0gISFwYXJhbXMucGFyYWxsZWw7XG5cbiAgICAgIG9ic3RhY2xlcy5wdXNoKG5ldyBEeW5hbWljT2JzdGFjbGUocGFyYW1zLnR5cGUsIHBvcywgdmVsLCBwYXJhbGxlbCkpO1xuICAgIH1cblxuICAgIHJldHVybiBvYnN0YWNsZXM7XG4gIH1cblxuICBhZGREeW5hbWljT2JzdGFjbGUoKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZvcm1zQ29udGFpbmVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJykubGVuZ3RoICsgMTtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5idWlsZEZvcm0oaW5kZXgpO1xuXG4gICAgdGhpcy5mb3Jtc0NvbnRhaW5lci5hcHBlbmRDaGlsZChmb3JtKTtcbiAgICB0aGlzLnN0YXRzRHluYW1pY09ic3RhY2xlcy50ZXh0Q29udGVudCA9IHRoaXMuZm9ybXNDb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKS5sZW5ndGg7XG5cbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIHJlbW92ZUR5bmFtaWNPYnN0YWNsZShmb3JtKSB7XG4gICAgdGhpcy5mb3Jtc0NvbnRhaW5lci5yZW1vdmVDaGlsZChmb3JtKTtcbiAgICB0aGlzLnJlaW5kZXhGb3JtcygpO1xuICAgIHRoaXMuc3RhdHNEeW5hbWljT2JzdGFjbGVzLnRleHRDb250ZW50ID0gdGhpcy5mb3Jtc0NvbnRhaW5lci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpLmxlbmd0aDtcbiAgfVxuXG4gIGNsZWFyRHluYW1pY09ic3RhY2xlcygpIHtcbiAgICB0aGlzLmZvcm1zQ29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuICAgIHRoaXMuc3RhdHNEeW5hbWljT2JzdGFjbGVzLnRleHRDb250ZW50ID0gMDtcbiAgfVxuXG4gIHJlaW5kZXhGb3JtcygpIHtcbiAgICBjb25zdCBmb3JtcyA9IHRoaXMuZm9ybXNDb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvcm1zW2ldLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2R5bmFtaWMtb2JzdGFjbGUtaW5kZXgnKVswXS50ZXh0Q29udGVudCA9IGkgKyAxO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkRm9ybShpbmRleCkge1xuICAgIGNvbnN0IGh0bWwgPVxuICAgICAgYDxmb3JtIGNsYXNzPVwiZWRpdG9yLWR5bmFtaWMtb2JzdGFjbGUtZm9ybVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLWdhcGxlc3NcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy0xXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtbGFiZWwgaXMtbm9ybWFsIGlzLXNpemUtNyBoYXMtdGV4dC1ncmV5LWxpZ2h0ZXIgaGFzLXRleHQtd2VpZ2h0LWJvbGQgZHluYW1pYy1vYnN0YWNsZS1pbmRleFwiPiR7aW5kZXh9PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwidHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ2ZWhpY2xlXCI+VmVoaWNsZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjeWNsaXN0XCI+Q3ljbGlzdDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJwZWRlc3RyaWFuXCI+UGVkZXN0cmlhbjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGhhcy10ZXh0LWNlbnRlcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInBhcmFsbGVsXCIgY2hlY2tlZCAvPiZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIGVkaXRvci1maWVsZC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpcy1zbWFsbFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNQb3NcIiBzdHlsZT1cIndpZHRoOiA1MHB4O1wiIHZhbHVlPVwiMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaXMtc21hbGxcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJsUG9zXCIgc3R5bGU9XCJ3aWR0aDogNTBweDtcIiB2YWx1ZT1cIjBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIGVkaXRvci1maWVsZC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpcy1zbWFsbFwiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNWZWxcIiBzdHlsZT1cIndpZHRoOiA1MHB4O1wiIHZhbHVlPVwiMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaXMtc21hbGxcIiB0eXBlPVwidGV4dFwiIG5hbWU9XCJsVmVsXCIgc3R5bGU9XCJ3aWR0aDogNTBweDtcIiB2YWx1ZT1cIjBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLTFcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtZGFuZ2VyIGVkaXRvci1yZW1vdmUtZHluYW1pYy1vYnN0YWNsZVwiIHRpdGxlPVwiUmVtb3ZlIER5bmFtaWMgT2JzdGFjbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1sZyBmYS10cmFzaC1hbHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5gO1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgY29uc3QgZm9ybSA9IHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDtcblxuICAgIGZvcm0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZWRpdG9yLXJlbW92ZS1keW5hbWljLW9ic3RhY2xlJylbMF0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHRoaXMucmVtb3ZlRHluYW1pY09ic3RhY2xlKGZvcm0pKTtcblxuICAgIHJldHVybiBmb3JtO1xuICB9XG59XG4iLCJmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUgJiYgZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodW5kZWZpbmVkLCB7bW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnLCB5ZWFyOiAnbnVtZXJpYycsIGhvdXI6ICdudW1lcmljJywgbWludXRlOiAnbnVtZXJpYycsIGhvdXIxMjogdHJ1ZX0pO1xufVxuXG5leHBvcnQgeyBmb3JtYXREYXRlIH07XG4iLCJleHBvcnQgZGVmYXVsdCBbXG4gIHsgbmFtZTogXCJPbmUtY2FyIG92ZXJ0YWtlXCIsIGRhdGE6IHtcInBcIjpbLTI5OC4xMjk3OSwzNTcuNTEwNTcsNy41NTQ5NywxMzYuODkyNTUsMjU1LjQ1NDQ2LC0xODYuNjUwNjMsNTg2LjY2Mjg4LC00OTQuNTgwOF0sXCJzXCI6W10sXCJkXCI6W3tcInBcIjpbXCIxNTBcIixcIjAuNVwiXSxcInZcIjpbXCIxNVwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9XSxcImxcIjoxMjM4LjEyOSxcImNcIjp7XCJzXCI6XCIyNVwiLFwic2xcIjpcIjI1XCIsXCJscFwiOjF9LFwidlwiOjF9IH0sXG5cbiAgeyBuYW1lOiBcIlR3by1jYXIgb3ZlcnRha2VcIiwgZGF0YToge1wicFwiOlstMjc2LjQ2NzQsMzAzLjAwODY1LDQ0Ljg4NTkzLDEyMC44NjcxMiwzMDUuMTA3MjksLTQzNS45OTcyOF0sXCJzXCI6W10sXCJkXCI6W3tcInBcIjpbXCIxMDBcIixcIjAuNVwiXSxcInZcIjpbXCI1XCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH0se1wicFwiOltcIjEwMFwiLFwiLTAuNVwiXSxcInZcIjpbXCI2XCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH1dLFwibFwiOjk5MC41NzYsXCJjXCI6e1wic1wiOlwiMjBcIixcInNsXCI6XCIyMFwiLFwibHBcIjoxfSxcInZcIjoxfSB9LFxuXG4gIHsgbmFtZTogXCJSb3VnaCByb2FkXCIsIGRhdGE6IHtcInBcIjpbLTEwMi40NjA3OCwyNi4zODUxMywtNjguNjk4MjEsMjUuNzk3NzYsLTU1Ljk0OTEzLDE5LjUwNDI3LC0yNS4zMjI4NCwxMi42MTgzLC0xNi42MDI0LDEwLjc3MzksLTYuNzA4LDExLjc4MDEzLDMxLjM2MDU0LDEyLjExNTU0LDQ3LjA0MDU3LDE0Ljc5ODgsNTYuODUwNDgsMjMuMjY3NzYsNTYuODQ5NzksMzUuMjU4MjgsNDYuOTU1MTEsNDMuODk0NjMsMjUuNDg5NzksNDMuNTU5MjQsOC4xMzMyNiw1Mi4yNzk5LC0xNS4zNDQzNyw2NC4xMDI0Ml0sXCJzXCI6W3tcInBcIjpbLTU0Ljk2NDI5LDIxLjI1NTNdLFwiclwiOi0wLjI3NjEyLFwid1wiOjIuNzY3MSxcImhcIjoxLjY3NzAzfSx7XCJwXCI6Wy0zNi4wOTI1NCwxMi4zNjk2M10sXCJyXCI6MC4xNDcyNixcIndcIjozLjQzNzkxLFwiaFwiOjEuODQ0NzV9LHtcInBcIjpbLTEzLjQxNjI1LDE0LjI1MzddLFwiclwiOjAuMTE2NTgsXCJ3XCI6NC42OTU2OCxcImhcIjoxLjQyNTQ5fSx7XCJwXCI6WzQ0LjAwOTMxLDE4LjM4MTY2XSxcInJcIjowLjI1NzcxLFwid1wiOjQuOTQ3MTMsXCJoXCI6NC4yNzY0Mn0se1wicFwiOls2Mi43NDY2OSwyOS40MTMzMV0sXCJyXCI6MCxcIndcIjo0LjEwODU1LFwiaFwiOjUuODY5NTJ9LHtcInBcIjpbNDYuNzExMTksMzguNzQ0NjldLFwiclwiOjEuMTQ3NDIsXCJ3XCI6NC41Mjc3NSxcImhcIjo2LjcwNzk0fSx7XCJwXCI6Wy0xNC4yNjI3NSw2My42MDAwNl0sXCJyXCI6Mi42NzUyNixcIndcIjoxMC4xNDU4NCxcImhcIjoxMi4yNDE3M30se1wicFwiOlsxOS43MzUxLDkuNDA2MjFdLFwiclwiOjAuNjUwNDEsXCJ3XCI6MS45NzE3NyxcImhcIjoxLjA3NTUzfSx7XCJwXCI6WzI4Ljk5Njc5LDkuNzE3MjddLFwiclwiOjAuMjA4NjIsXCJ3XCI6MS45NzE3NSxcImhcIjoxLjAzMDcyfSx7XCJwXCI6WzI0LjE1MjA1LDkuOTM4NzJdLFwiclwiOi0wLjMxOTA3LFwid1wiOjEuMjU0NzYsXCJoXCI6MC45ODU5fV0sXCJkXCI6W10sXCJsXCI6MjU5LjA4OCxcImNcIjp7XCJzXCI6XCIxMFwiLFwic2xcIjpcIjEwXCIsXCJscFwiOjF9LFwidlwiOjF9IH0sXG5cbiAgeyBuYW1lOiBcIkRvZGdpbmcgYSBzcGVlZGVyXCIsIGRhdGE6IHtcInBcIjpbLTIyNi4xNDA2NiwyNzUuMzQ5NDEsMjEuMzIxOTQsLTYuMjY1NCwyNjYuOTk5NTgsLTE3NC4zOTU1OSw0NjYuNDI0NDksLTQyNy45NTEyNF0sXCJzXCI6W10sXCJkXCI6W3tcInBcIjpbXCItMjUwXCIsXCItMC41XCJdLFwidlwiOltcIjQwXCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH1dLFwibFwiOjk5Ni41NzIsXCJjXCI6e1wic1wiOlwiMjVcIixcInNsXCI6XCIyNVwiLFwibHBcIjotMX0sXCJ2XCI6MX0gfSxcblxuICB7IG5hbWU6IFwiTGFuZSBibG9ja2FnZSB3aXRoIG9uY29taW5nIHRyYWZmaWNcIiwgZGF0YToge1wicFwiOlstODQuOTYzMTgsLTE0Ljk0OTczLDM3NC45MTA0NCwtMTQuNzE2OF0sXCJzXCI6W3tcInBcIjpbLTM0LjkxMDI0LC0xMi41MTM1OV0sXCJyXCI6MCxcIndcIjoyLjc2NzExLFwiaFwiOjIuNjgzMjR9XSxcImRcIjpbe1wicFwiOltcIjQwXCIsXCItMC41XCJdLFwidlwiOltcIi0xMFwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCIxNTBcIixcIi0wLjVcIl0sXCJ2XCI6W1wiLTEwXCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH1dLFwibFwiOjQ1OS44NzQsXCJjXCI6e1wic1wiOlwiMjBcIixcInNsXCI6XCIyMFwiLFwibHBcIjoxfSxcInZcIjoxfSB9LFxuXG4gIHsgbmFtZTogXCJNZXJnaW5nIGludG8gc2xvd2VyIHRyYWZmaWNcIiwgZGF0YToge1wicFwiOlstNjI5LjA5NDY0LDE2LjMxNTg5LDI4MS45NzE2MiwxNC44MTU2NV0sXCJzXCI6W3tcInBcIjpbLTQ0MC4wMDE1MiwxMS42MjYwMl0sXCJyXCI6MCxcIndcIjozLjEzNzksXCJoXCI6My4xMzgwMX0se1wicFwiOlstMjU5Ljc0MDM2LDExLjk4MDEzXSxcInJcIjowLFwid1wiOjIuNTE1NTYsXCJoXCI6NC40NDQxfSx7XCJwXCI6WzkzLjcxMDEzLDExLjI3MDMyXSxcInJcIjowLFwid1wiOjQuMDc5NDcsXCJoXCI6Ny44NDUwMX0se1wicFwiOlstOTQuNzIyMDgsMTEuMjgxNzJdLFwiclwiOjAsXCJ3XCI6My43NjYwOSxcImhcIjo3LjUzMTIyfV0sXCJkXCI6W3tcInBcIjpbXCIzMjBcIixcIjAuNVwiXSxcInZcIjpbXCIxMlwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCIyODBcIixcIjAuNVwiXSxcInZcIjpbXCIxMlwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCIyNDBcIixcIjAuNVwiXSxcInZcIjpbXCIxMlwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCIyMDBcIixcIjAuNVwiXSxcInZcIjpbXCIxMlwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCIxNjBcIixcIjAuNVwiXSxcInZcIjpbXCIxMlwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCIxMjBcIixcIjAuNVwiXSxcInZcIjpbXCIxMlwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCI4MFwiLFwiMC41XCJdLFwidlwiOltcIjEyXCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH0se1wicFwiOltcIjQwXCIsXCIwLjVcIl0sXCJ2XCI6W1wiMTJcIixcIjBcIl0sXCJsXCI6MSxcInRcIjowfSx7XCJwXCI6W1wiMFwiLFwiMC41XCJdLFwidlwiOltcIjEyXCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH0se1wicFwiOltcIi00MFwiLFwiMC41XCJdLFwidlwiOltcIjEyXCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH0se1wicFwiOltcIi04MFwiLFwiMC41XCJdLFwidlwiOltcIjEyXCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH0se1wicFwiOltcIi0xMjBcIixcIjAuNVwiXSxcInZcIjpbXCIxMlwiLFwiMFwiXSxcImxcIjoxLFwidFwiOjB9LHtcInBcIjpbXCItMTYwXCIsXCIwLjVcIl0sXCJ2XCI6W1wiMTJcIixcIjBcIl0sXCJsXCI6MSxcInRcIjowfSx7XCJwXCI6W1wiLTIwMFwiLFwiMC41XCJdLFwidlwiOltcIjEyXCIsXCIwXCJdLFwibFwiOjEsXCJ0XCI6MH1dLFwibFwiOjkxMS4wNjcsXCJjXCI6e1wic1wiOlwiMjVcIixcInNsXCI6XCIyNVwiLFwibHBcIjotMX0sXCJ2XCI6MX0gfSxcblxuICB7IG5hbWU6IFwiTmVnb3RpYXRpbmcgY3Jvc3N3YWxrc1wiLCBkYXRhOiB7XCJwXCI6Wy0xNDQuNzM1NzQsNTUuNDQ5NSwtMTA0Ljg5NDQxLDMxLjYyNzU1LC0zMy44NzQ3OSw2MS41NzgxMSw1NC42MDYzMSw0Ni4zNDg1OCwxNTIuMzcyOCwtNDEuNDMzNSwyMTkuOTAyNTgsLTExMy45NTIyNV0sXCJzXCI6W10sXCJkXCI6W3tcInBcIjpbXCI1MVwiLFwiLTJcIl0sXCJ2XCI6W1wiMFwiLFwiMS41XCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjUyXCIsXCIrMlwiXSxcInZcIjpbXCIwXCIsXCItMS42XCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjUzXCIsXCItMlwiXSxcInZcIjpbXCIwXCIsXCIxLjVcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNTRcIixcIisyXCJdLFwidlwiOltcIjBcIixcIi0xLjRcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNTVcIixcIi0yXCJdLFwidlwiOltcIjBcIixcIjEuNVwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MFwiLFwiKzNcIl0sXCJ2XCI6W1wiMFwiLFwiLTEuNVwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MVwiLFwiLTNcIl0sXCJ2XCI6W1wiMFwiLFwiMS43XCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjUyXCIsXCIrM1wiXSxcInZcIjpbXCIwXCIsXCItMS41XCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjUzXCIsXCItM1wiXSxcInZcIjpbXCIwXCIsXCIxLjNcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNTBcIixcIi00XCJdLFwidlwiOltcIjBcIixcIjEuNlwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MVwiLFwiLTRcIl0sXCJ2XCI6W1wiMFwiLFwiMS4yXCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjUyXCIsXCItNVwiXSxcInZcIjpbXCIwXCIsXCIxLjVcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNTNcIixcIi01XCJdLFwidlwiOltcIjBcIixcIjEuNFwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MFwiLFwiNC41XCJdLFwidlwiOltcIjBcIixcIi0xLjZcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNTFcIixcIjVcIl0sXCJ2XCI6W1wiMFwiLFwiLTEuNFwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MlwiLFwiNFwiXSxcInZcIjpbXCIwXCIsXCItMS41XCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjUzXCIsXCI0LjVcIl0sXCJ2XCI6W1wiMFwiLFwiLTEuNFwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI0OVwiLFwiNS41XCJdLFwidlwiOltcIjBcIixcIi0xLjJcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNTBcIixcIjZcIl0sXCJ2XCI6W1wiMFwiLFwiLTEuNlwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MVwiLFwiNS43NVwiXSxcInZcIjpbXCIwXCIsXCItMS41XCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjUyXCIsXCI1XCJdLFwidlwiOltcIjBcIixcIi0xLjVcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNDlcIixcIi02XCJdLFwidlwiOltcIjBcIixcIjEuNVwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MFwiLFwiLTUuNVwiXSxcInZcIjpbXCIwXCIsXCIxLjdcIl0sXCJsXCI6MSxcInRcIjoyfSx7XCJwXCI6W1wiNTFcIixcIi01XCJdLFwidlwiOltcIjBcIixcIjAuOVwiXSxcImxcIjoxLFwidFwiOjJ9LHtcInBcIjpbXCI1MlwiLFwiLTUuNzVcIl0sXCJ2XCI6W1wiMFwiLFwiMS4yXCJdLFwibFwiOjEsXCJ0XCI6Mn0se1wicFwiOltcIjE1MFwiLFwiLTc1XCJdLFwidlwiOltcIjBcIixcIjlcIl0sXCJsXCI6MCxcInRcIjoxfSx7XCJwXCI6W1wiMTUyXCIsXCItODBcIl0sXCJ2XCI6W1wiMFwiLFwiMTBcIl0sXCJsXCI6MCxcInRcIjoxfSx7XCJwXCI6W1wiMTU0XCIsXCItODVcIl0sXCJ2XCI6W1wiMFwiLFwiOS41XCJdLFwibFwiOjAsXCJ0XCI6MX0se1wicFwiOltcIjE1MFwiLFwiNzVcIl0sXCJ2XCI6W1wiMFwiLFwiLTEwXCJdLFwibFwiOjAsXCJ0XCI6MX0se1wicFwiOltcIjE1MlwiLFwiODBcIl0sXCJ2XCI6W1wiMFwiLFwiLTlcIl0sXCJsXCI6MCxcInRcIjoxfSx7XCJwXCI6W1wiMTU0XCIsXCI4NVwiXSxcInZcIjpbXCIwXCIsXCItOS41XCJdLFwibFwiOjAsXCJ0XCI6MX1dLFwibFwiOjQ0Ny41MzUsXCJjXCI6e1wic1wiOlwiNVwiLFwic2xcIjpcIjIwXCIsXCJscFwiOjF9LFwidlwiOjF9IH0sXG5cbiAgeyBuYW1lOiBcIkNoYXNpbmcgdGhlIHBlbG90b25cIiwgZGF0YToge1wicFwiOlstNzA4LjEwOTMsNTYxLjY3MjIyLC02NTcuNzM2NDksNzAxLjQ2NzcyLC01MzEuMzAyMTIsNzM2LjQxNjEzLC0zMzIuOTE1MTcsNzA4LjY2MywtMjAxLjM0MTc2LDYxMS4wMTIxNSwtODAuMDQ1MjMsNDc3LjM4MjMyLDIyLjc1MDgyLDM0MS42OTM4NSwxNDcuNjYxNzQsMTc2LjczNjIyLDI1My4wMjM3MSwtMTUuMDE1NzQsNDQ4LjMxODI4LC0zMzUuNzE4MzYsNDk1LjYwOTMyLC01NDQuNDAwNDhdLFwic1wiOltdLFwiZFwiOlt7XCJwXCI6W1wiNTBcIixcIjAuNFwiXSxcInZcIjpbXCIxNS41XCIsXCItMC4xXCJdLFwibFwiOjEsXCJ0XCI6MX0se1wicFwiOltcIjUyXCIsXCIwLjZcIl0sXCJ2XCI6W1wiMTUuN1wiLFwiLTAuMTVcIl0sXCJsXCI6MSxcInRcIjoxfSx7XCJwXCI6W1wiNTRcIixcIjAuM1wiXSxcInZcIjpbXCIxNS4zXCIsXCItMC4xM1wiXSxcImxcIjoxLFwidFwiOjF9LHtcInBcIjpbXCI1NlwiLFwiMC43XCJdLFwidlwiOltcIjE1LjJcIixcIi0wLjFcIl0sXCJsXCI6MSxcInRcIjoxfSx7XCJwXCI6W1wiNThcIixcIjAuM1wiXSxcInZcIjpbXCIxNS44XCIsXCItMC4xMlwiXSxcImxcIjoxLFwidFwiOjF9LHtcInBcIjpbXCI2MFwiLFwiMC43XCJdLFwidlwiOltcIjE1LjZcIixcIi0wLjE3XCJdLFwibFwiOjEsXCJ0XCI6MX0se1wicFwiOltcIjYyXCIsXCIwLjFcIl0sXCJ2XCI6W1wiMTUuNFwiLFwiLTAuMTRcIl0sXCJsXCI6MSxcInRcIjoxfSx7XCJwXCI6W1wiNjRcIixcIi0wLjFcIl0sXCJ2XCI6W1wiMTUuNVwiLFwiMC4xM1wiXSxcImxcIjoxLFwidFwiOjF9LHtcInBcIjpbXCI2NlwiLFwiMC4zXCJdLFwidlwiOltcIjE1LjNcIixcIi0wLjEzXCJdLFwibFwiOjEsXCJ0XCI6MX0se1wicFwiOltcIjY4XCIsXCIwXCJdLFwidlwiOltcIjE1LjZcIixcIjAuMTVcIl0sXCJsXCI6MSxcInRcIjoxfSx7XCJwXCI6W1wiNzBcIixcIi0wLjNcIl0sXCJ2XCI6W1wiMTUuOFwiLFwiMC4xN1wiXSxcImxcIjoxLFwidFwiOjF9LHtcInBcIjpbXCI3MlwiLFwiLTAuN1wiXSxcInZcIjpbXCIxNS43XCIsXCIwLjEyXCJdLFwibFwiOjEsXCJ0XCI6MX0se1wicFwiOltcIjc0XCIsXCItMC41XCJdLFwidlwiOltcIjE1LjFcIixcIjAuMTVcIl0sXCJsXCI6MSxcInRcIjoxfSx7XCJwXCI6W1wiNzZcIixcIi0wLjdcIl0sXCJ2XCI6W1wiMTUuOVwiLFwiMC4xMVwiXSxcImxcIjoxLFwidFwiOjF9LHtcInBcIjpbXCI3OFwiLFwiLTAuM1wiXSxcInZcIjpbXCIxNS41XCIsXCIwLjE2XCJdLFwibFwiOjEsXCJ0XCI6MX0se1wicFwiOltcIjgwXCIsXCItMC41XCJdLFwidlwiOltcIjE1LjZcIixcIjAuMTNcIl0sXCJsXCI6MSxcInRcIjoxfV0sXCJsXCI6MjAxOC4yMTMsXCJjXCI6e1wic1wiOlwiMTVcIixcInNsXCI6XCIyNVwiLFwibHBcIjoxfSxcInZcIjoxfSB9XG5dO1xuIiwiaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gXCIuLi9IZWxwZXJzLmpzXCI7XG5pbXBvcnQgRVhBTVBMRVMgZnJvbSBcIi4vZXhhbXBsZXMuanNcIjtcblxuY29uc3QgTE9DQUxfU1RPUkFHRV9LRVkgPSAnZGFzaF9TY2VuYXJpb3MnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2VuYXJpb01hbmFnZXIge1xuICBjb25zdHJ1Y3RvcihlZGl0b3IpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB0aGlzLm1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvcy1tb2RhbCcpO1xuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvcy1tb2RhbC1iYWNrZ3JvdW5kJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9jbG9zZU1vZGFsLmJpbmQodGhpcykpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpb3MtbW9kYWwtY2xvc2UnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2Nsb3NlTW9kYWwuYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLmV4YW1wbGVzVGFiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvcy1tb2RhbC1leGFtcGxlcy10YWInKTtcbiAgICB0aGlzLnNhdmVkVGFiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvcy1tb2RhbC1zYXZlZC10YWInKTtcbiAgICB0aGlzLmltcG9ydFRhYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpb3MtbW9kYWwtaW1wb3J0LXRhYicpO1xuXG4gICAgdGhpcy5leGFtcGxlc1RhYkJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpb3MtbW9kYWwtZXhhbXBsZXMtdGFiLWJ1dHRvbicpO1xuICAgIHRoaXMuc2F2ZWRUYWJCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmFyaW9zLW1vZGFsLXNhdmVkLXRhYi1idXR0b24nKTtcbiAgICB0aGlzLmltcG9ydFRhYkJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpb3MtbW9kYWwtaW1wb3J0LXRhYi1idXR0b24nKTtcbiAgICB0aGlzLmV4YW1wbGVzVGFiQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB0aGlzLnN3aXRjaFRhYih0aGlzLmV4YW1wbGVzVGFiKSk7XG4gICAgdGhpcy5zYXZlZFRhYkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gdGhpcy5zd2l0Y2hUYWIodGhpcy5zYXZlZFRhYikpO1xuICAgIHRoaXMuaW1wb3J0VGFiQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB0aGlzLnN3aXRjaFRhYih0aGlzLmltcG9ydFRhYikpO1xuXG4gICAgdGhpcy5pdGVtc0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpb3MtbW9kYWwtaXRlbXMnKTtcblxuICAgIHRoaXMuc29ydE5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmFyaW9zLXNvcnQtbmFtZScpO1xuICAgIHRoaXMuc29ydE5hbWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHRoaXMuX2J1aWxkU2NlbmFyaW9JdGVtcygnbmFtZScpKTtcbiAgICB0aGlzLnNvcnRTYXZlZEF0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvcy1zb3J0LXNhdmVkLWF0Jyk7XG4gICAgdGhpcy5zb3J0U2F2ZWRBdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gdGhpcy5fYnVpbGRTY2VuYXJpb0l0ZW1zKCdzYXZlZEF0JykpO1xuXG4gICAgdGhpcy5pbXBvcnRCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmFyaW8taW1wb3J0LWJveCcpO1xuICAgIHRoaXMuaW1wb3J0SW5mbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpby1pbXBvcnQtaW5mbycpO1xuXG4gICAgdGhpcy5pbXBvcnRCb3guYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCB0aGlzLl9pbXBvcnRCb3hDaGFuZ2VkLmJpbmQodGhpcykpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBFWEFNUExFUy5sZW5ndGg7IGkrKylcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBleGFtcGxlLSR7aX1gKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gdGhpcy5fbG9hZFNjZW5hcmlvKEVYQU1QTEVTW2ldKSk7XG4gIH1cblxuICBzd2l0Y2hUYWIodGFiKSB7XG4gICAgdGhpcy5leGFtcGxlc1RhYi5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKVxuICAgIHRoaXMuc2F2ZWRUYWIuY2xhc3NMaXN0LmFkZCgnaXMtaGlkZGVuJylcbiAgICB0aGlzLmltcG9ydFRhYi5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKVxuICAgIHRoaXMuZXhhbXBsZXNUYWJCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gICAgdGhpcy5zYXZlZFRhYkJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcbiAgICB0aGlzLmltcG9ydFRhYkJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcblxuICAgIGxldCBidXR0b24gPSB0aGlzLnNhdmVkVGFiQnV0dG9uO1xuICAgIGlmICh0YWIgPT0gdGhpcy5leGFtcGxlc1RhYilcbiAgICAgIGJ1dHRvbiA9IHRoaXMuZXhhbXBsZXNUYWJCdXR0b247XG4gICAgZWxzZSBpZiAodGFiID09IHRoaXMuaW1wb3J0VGFiKVxuICAgICAgYnV0dG9uID0gdGhpcy5pbXBvcnRUYWJCdXR0b247XG5cbiAgICB0YWIuY2xhc3NMaXN0LnJlbW92ZSgnaXMtaGlkZGVuJyk7XG4gICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuXG4gICAgaWYgKHRhYiA9PSB0aGlzLmltcG9ydFRhYilcbiAgICAgIHRoaXMuaW1wb3J0Qm94LmZvY3VzKCk7XG4gIH1cblxuICBzYXZlU2NlbmFyaW8obmFtZSwgZGF0YSwgZm9yY2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNjZW5hcmlvcyA9IHRoaXMuZmV0Y2hTY2VuYXJpb3MoKTtcbiAgICBsZXQgc2NlbmFyaW8gPSBzY2VuYXJpb3NbbmFtZV07XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgIGlmIChzY2VuYXJpbykge1xuICAgICAgaWYgKCFmb3JjZSkgcmV0dXJuIFtmYWxzZSwgc2NlbmFyaW8uc2F2ZWRBdF07XG5cbiAgICAgIHNjZW5hcmlvLmRhdGEgPSBkYXRhO1xuICAgICAgc2NlbmFyaW8uc2F2ZWRBdCA9IG5vdztcbiAgICB9IGVsc2Uge1xuICAgICAgIHNjZW5hcmlvID0ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBzYXZlZEF0OiBub3dcbiAgICAgIH07XG4gICAgICBcbiAgICAgIHNjZW5hcmlvc1tuYW1lXSA9IHNjZW5hcmlvO1xuICAgIH1cblxuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzY2VuYXJpb3MpO1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShMT0NBTF9TVE9SQUdFX0tFWSwganNvbik7XG5cbiAgICByZXR1cm4gW3RydWUsIHNjZW5hcmlvLnNhdmVkQXRdO1xuICB9XG5cbiAgZmV0Y2hTY2VuYXJpb3MoKSB7XG4gICAgY29uc3Qgc2NlbmFyaW9zID0gSlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oTE9DQUxfU1RPUkFHRV9LRVkpKSB8fCB7fTtcblxuICAgIGZvciAoY29uc3QgayBpbiBzY2VuYXJpb3MpXG4gICAgICBzY2VuYXJpb3Nba10uc2F2ZWRBdCA9IG5ldyBEYXRlKHNjZW5hcmlvc1trXS5zYXZlZEF0KTtcblxuICAgIHJldHVybiBzY2VuYXJpb3M7XG4gIH1cblxuICBzaG93TW9kYWwob25Mb2FkU2NlbmFyaW8gPSBudWxsKSB7XG4gICAgdGhpcy5vbkxvYWRTY2VuYXJpbyA9IG9uTG9hZFNjZW5hcmlvO1xuXG4gICAgdGhpcy5tb2RhbC5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKTtcbiAgICB0aGlzLnN3aXRjaFRhYih0aGlzLnNhdmVkVGFiKTtcblxuICAgIHRoaXMuX2J1aWxkU2NlbmFyaW9JdGVtcygpO1xuICAgIHRoaXMuaXRlbXNDb250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICBcbiAgICB0aGlzLmltcG9ydEJveC52YWx1ZSA9ICcnO1xuICAgIHRoaXMuaW1wb3J0Qm94LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTtcbiAgfVxuXG4gIF9jbG9zZU1vZGFsKCkge1xuICAgIHRoaXMub25Mb2FkU2NlbmFyaW8gPSBudWxsO1xuICAgIHRoaXMubW9kYWwuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gIH1cblxuICBfYnVpbGRTY2VuYXJpb0l0ZW1zKHNvcnQgPSAnc2F2ZWRBdCcpIHtcbiAgICB0aGlzLml0ZW1zQ29udGFpbmVyLmlubmVySFRNTCA9ICcnO1xuXG4gICAgdGhpcy5zb3J0TmFtZS5jbGFzc0xpc3QucmVtb3ZlKCdpcy11bmRlcmxpbmVkJyk7XG4gICAgdGhpcy5zb3J0U2F2ZWRBdC5jbGFzc0xpc3QucmVtb3ZlKCdpcy11bmRlcmxpbmVkJyk7XG4gICAgaWYgKHNvcnQgPT0gJ25hbWUnKVxuICAgICAgdGhpcy5zb3J0TmFtZS5jbGFzc0xpc3QuYWRkKCdpcy11bmRlcmxpbmVkJyk7XG4gICAgZWxzZSBpZiAoc29ydCA9PSAnc2F2ZWRBdCcpXG4gICAgICB0aGlzLnNvcnRTYXZlZEF0LmNsYXNzTGlzdC5hZGQoJ2lzLXVuZGVybGluZWQnKTtcblxuICAgIGNvbnN0IHNjZW5hcmlvcyA9IE9iamVjdC52YWx1ZXModGhpcy5mZXRjaFNjZW5hcmlvcygpKTtcblxuICAgIGlmIChzY2VuYXJpb3MubGVuZ3RoID09IDApIHtcbiAgICAgIHRoaXMuX3Nob3dFbXB0eU1lc3NhZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NlbmFyaW9zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKHNvcnQgPT0gJ3NhdmVkQXQnKSB7XG4gICAgICAgICAgaWYgKGEuc2F2ZWRBdCA8IGIuc2F2ZWRBdCkgcmV0dXJuICsxO1xuICAgICAgICAgIGVsc2UgaWYgKGIuc2F2ZWRBdCA8IGEuc2F2ZWRBdCkgcmV0dXJuIC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmFtZUEgPSBhLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgbmFtZUIgPSBiLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBpZiAobmFtZUEgPCBuYW1lQikgcmV0dXJuIC0xO1xuICAgICAgICBpZiAobmFtZUIgPCBuYW1lQSkgcmV0dXJuICsxO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0pO1xuXG4gICAgICBzY2VuYXJpb3MuZm9yRWFjaChzID0+IHRoaXMuX2FkZFNjZW5hcmlvSXRlbShzKSk7XG4gICAgfVxuICB9XG5cbiAgX3Nob3dFbXB0eU1lc3NhZ2UoKSB7XG4gICAgdGhpcy5pdGVtc0NvbnRhaW5lci5pbm5lckhUTUwgPSBcIjxpPllvdSBkb24ndCBoYXZlIGFueSBzYXZlZCBzY2VuYXJpb3MuPC9pPlwiO1xuICB9XG5cbiAgX2FkZFNjZW5hcmlvSXRlbShzY2VuYXJpbykge1xuICAgIGNvbnN0IGh0bWwgPVxuICAgICAgYDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy03IHNjZW5hcmlvLWl0ZW0tbmFtZSBzY2VuYXJpby1pdGVtLWxvYWRcIiB0aXRsZT1cIlwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtNCBzY2VuYXJpby1pdGVtLXNhdmVkLWF0XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy0xXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBpcy1ncm91cGVkIGlzLXB1bGxlZC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjb250cm9sXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1kYW5nZXIgc2NlbmFyaW8taXRlbS1kZWxldGVcIiB0aXRsZT1cIkRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWxnIGZhLXRyYXNoLWFsdFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5gO1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgY29uc3QgaXRlbSA9IHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDtcblxuICAgIGNvbnN0IG5hbWVEb20gPSBpdGVtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NjZW5hcmlvLWl0ZW0tbmFtZScpWzBdO1xuICAgIG5hbWVEb20udGV4dENvbnRlbnQgPSBzY2VuYXJpby5uYW1lO1xuICAgIG5hbWVEb20udGl0bGUgPSBzY2VuYXJpby5uYW1lO1xuXG4gICAgaXRlbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzY2VuYXJpby1pdGVtLXNhdmVkLWF0JylbMF0udGV4dENvbnRlbnQgPSBmb3JtYXREYXRlKHNjZW5hcmlvLnNhdmVkQXQpO1xuXG4gICAgaXRlbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzY2VuYXJpby1pdGVtLWxvYWQnKVswXS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gdGhpcy5fbG9hZFNjZW5hcmlvKHNjZW5hcmlvKSk7XG5cbiAgICBpdGVtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NjZW5hcmlvLWl0ZW0tZGVsZXRlJylbMF0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcbiAgICAgIGlmICh3aW5kb3cuY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgc2NlbmFyaW8gXCIke3NjZW5hcmlvLm5hbWV9XCI/YCkpIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlU2NlbmFyaW8oc2NlbmFyaW8pO1xuICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLnJlbW92ZUNoaWxkKGl0ZW0pO1xuXG4gICAgICAgIGlmICh0aGlzLml0ZW1zQ29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCA9PSAwKVxuICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eU1lc3NhZ2UoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuaXRlbXNDb250YWluZXIuYXBwZW5kQ2hpbGQoaXRlbSk7XG4gIH1cblxuICBfbG9hZFNjZW5hcmlvKHNjZW5hcmlvKSB7XG4gICAgdGhpcy5lZGl0b3IubG9hZEpTT04oc2NlbmFyaW8uZGF0YSk7XG4gICAgdGhpcy5lZGl0b3IudXBkYXRlU2F2ZWRJbmZvKHNjZW5hcmlvLm5hbWUsIGZvcm1hdERhdGUoc2NlbmFyaW8uc2F2ZWRBdCkpO1xuXG4gICAgaWYgKHRoaXMub25Mb2FkU2NlbmFyaW8pIHRoaXMub25Mb2FkU2NlbmFyaW8oKTtcblxuICAgIHRoaXMuX2Nsb3NlTW9kYWwoKTtcbiAgfVxuXG4gIF9kZWxldGVTY2VuYXJpbyhzY2VuYXJpbykge1xuICAgIGNvbnN0IHNjZW5hcmlvcyA9IHRoaXMuZmV0Y2hTY2VuYXJpb3MoKTtcbiAgICBkZWxldGUgc2NlbmFyaW9zW3NjZW5hcmlvLm5hbWVdO1xuXG4gICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHNjZW5hcmlvcyk7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKExPQ0FMX1NUT1JBR0VfS0VZLCBqc29uKTtcbiAgfVxuXG4gIF9pbXBvcnRCb3hDaGFuZ2VkKCkge1xuICAgIHRoaXMuaW1wb3J0Qm94LmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWRhbmdlcicpO1xuICAgIHRoaXMuaW1wb3J0SW5mby5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcblxuICAgIGNvbnN0IGVuY29kZWQgPSB0aGlzLmltcG9ydEJveC52YWx1ZTtcblxuICAgIGlmIChlbmNvZGVkICE9ICcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBqc29uID0gSlNPTi5wYXJzZShhdG9iKHRoaXMuaW1wb3J0Qm94LnZhbHVlKSk7XG5cbiAgICAgICAgaWYgKGpzb24ucyA9PT0gdW5kZWZpbmVkIHx8IGpzb24uZCA9PT0gdW5kZWZpbmVkIHx8IGpzb24ucCA9PT0gdW5kZWZpbmVkIHx8IGpzb24ucC5sZW5ndGggJSAyICE9IDApXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG5cbiAgICAgICAgdGhpcy5pbXBvcnRJbmZvLmlubmVySFRNTCA9IGBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBoYXMtdGV4dC1ncmV5LWxpZ2h0IGlzLXBhZGRpbmdsZXNzXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lO1wiPlxuICAgICAgICAgICAgICBSb2FkIExlbmd0aDombmJzcDs8Yj4ke2pzb24ubC50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAxLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDEgfSl9PC9iPm1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBoYXMtdGV4dC1ncmV5LWxpZ2h0IGlzLXBhZGRpbmdsZXNzXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lO1wiPlxuICAgICAgICAgICAgICBTdGF0aWMgT2JzdGFjbGVzOiZuYnNwOzxiPiR7anNvbi5zLmxlbmd0aH08L2I+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaGFzLXRleHQtZ3JleS1saWdodCBpcy1wYWRkaW5nbGVzc1wiIHN0eWxlPVwiYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJvcmRlcjogbm9uZTtcIj5cbiAgICAgICAgICAgICAgRHluYW1pYyBPYnN0YWNsZXM6Jm5ic3A7PGI+JHtqc29uLmQubGVuZ3RofTwvYj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN1Y2Nlc3MgaXMtcHVsbGVkLXJpZ2h0IHNjZW5hcmlvLWltcG9ydC1idXR0b25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvblwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPkltcG9ydDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgYDtcblxuICAgICAgICB0aGlzLmltcG9ydEluZm8uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2NlbmFyaW8taW1wb3J0LWJ1dHRvbicpWzBdLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB0aGlzLl9sb2FkU2NlbmFyaW8oeyBkYXRhOiBqc29uIH0pKTtcbiAgICAgICAgdGhpcy5pbXBvcnRJbmZvLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWhpZGRlbicpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmltcG9ydEJveC5jbGFzc0xpc3QuYWRkKCdpcy1kYW5nZXInKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFNoYXJlTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmFyaW8tc2hhcmUtbW9kYWwnKTtcbiAgICB0aGlzLmxpbmtEb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmFyaW8tc2hhcmUtbGluaycpO1xuICAgIHRoaXMuYm94RG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvLXNoYXJlLWJveCcpO1xuICAgIHRoaXMuY2xpcGJvYXJkQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvLXNoYXJlLWNsaXBib2FyZCcpO1xuICAgIHRoaXMuY2xpcGJvYXJkSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpby1zaGFyZS1jbGlwYm9hcmQtaWNvbicpO1xuICAgIHRoaXMuY2xpcGJvYXJkU3VjY2Vzc0ljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmFyaW8tc2hhcmUtY2xpcGJvYXJkLXN1Y2Nlc3MtaWNvbicpO1xuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvLXNoYXJlLW1vZGFsLWJhY2tncm91bmQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2Nsb3NlTW9kYWwuYmluZCh0aGlzKSk7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvLXNoYXJlLW1vZGFsLWNsb3NlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9jbG9zZU1vZGFsLmJpbmQodGhpcykpO1xuICAgIHRoaXMuY2xpcGJvYXJkQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fY29weUxpbmtUb0NsaXBib2FyZC5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMubGlua0RvbS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGUgPT4gdGhpcy5saW5rRG9tLnNlbGVjdCgpKTtcbiAgICB0aGlzLmJveERvbS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGUgPT4gdGhpcy5ib3hEb20uc2VsZWN0KCkpO1xuICB9XG5cbiAgc2hvd01vZGFsKHNjZW5hcmlvKSB7XG4gICAgdGhpcy5tb2RhbC5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKTtcblxuICAgIHRoaXMuY2xpcGJvYXJkSWNvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1oaWRkZW4nKTtcbiAgICB0aGlzLmNsaXBib2FyZFN1Y2Nlc3NJY29uLmNsYXNzTGlzdC5hZGQoJ2lzLWhpZGRlbicpO1xuICAgIHRoaXMuY2xpcGJvYXJkQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXN1Y2Nlc3MnKTtcblxuICAgIGNvbnN0IGNvZGUgPSBidG9hKEpTT04uc3RyaW5naWZ5KHNjZW5hcmlvKSk7XG5cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbik7XG4gICAgdXJsLnNlYXJjaCA9ICcnO1xuICAgIHVybC5oYXNoID0gJy9zLycgKyBlbmNvZGVVUklDb21wb25lbnQoY29kZSk7XG5cbiAgICB0aGlzLmxpbmtEb20udmFsdWUgPSB1cmwuaHJlZjtcbiAgICB0aGlzLmJveERvbS52YWx1ZSA9IGNvZGU7XG4gIH1cblxuICBfY2xvc2VNb2RhbCgpIHtcbiAgICB0aGlzLm1vZGFsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpO1xuICB9XG5cbiAgX2NvcHlMaW5rVG9DbGlwYm9hcmQoKSB7XG4gICAgdGhpcy5saW5rRG9tLmZvY3VzKCk7XG4gICAgdGhpcy5saW5rRG9tLnNlbGVjdCgpO1xuXG4gICAgaWYgKGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5JywgZmFsc2UsIG51bGwpKSB7XG4gICAgICB0aGlzLmNsaXBib2FyZEljb24uY2xhc3NMaXN0LmFkZCgnaXMtaGlkZGVuJyk7XG4gICAgICB0aGlzLmNsaXBib2FyZFN1Y2Nlc3NJY29uLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWhpZGRlbicpO1xuICAgICAgdGhpcy5jbGlwYm9hcmRCdXR0b24uY2xhc3NMaXN0LmFkZCgnaXMtc3VjY2VzcycpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IExhbmVQYXRoIGZyb20gXCIuLi9hdXRvbm9teS9MYW5lUGF0aC5qc1wiO1xuaW1wb3J0IFN0YXRpY09ic3RhY2xlIGZyb20gXCIuLi9hdXRvbm9teS9TdGF0aWNPYnN0YWNsZS5qc1wiO1xuaW1wb3J0IER5bmFtaWNPYnN0YWNsZUVkaXRvciBmcm9tIFwiLi9EeW5hbWljT2JzdGFjbGVFZGl0b3IuanNcIjtcbmltcG9ydCBTY2VuYXJpb01hbmFnZXIgZnJvbSBcIi4vU2NlbmFyaW9NYW5hZ2VyLmpzXCI7XG5pbXBvcnQgU2hhcmVNYW5hZ2VyIGZyb20gXCIuL1NoYXJlTWFuYWdlci5qc1wiO1xuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gXCIuLi9IZWxwZXJzLmpzXCI7XG5cbmNvbnN0IEdST1VORF9QTEFORSA9IG5ldyBUSFJFRS5QbGFuZShuZXcgVEhSRUUuVmVjdG9yMygwLCAxLCAwKSk7XG5cbmNvbnN0IE5PUk1BTF9PUEFDSVRZID0gMC43O1xuY29uc3QgSE9WRVJfT1BBQ0lUWSA9IDE7XG5jb25zdCBOT1JNQUxfUE9JTlRfQ09MT1IgPSAweDAwODhmZjtcbmNvbnN0IEhPVkVSX1BPSU5UX0NPTE9SID0gMHgzM2NjZmY7XG5jb25zdCBOT1JNQUxfU1RBVElDX09CU1RBQ0xFX0NPTE9SID0gMHhkZDAwMDA7XG5jb25zdCBIT1ZFUl9TVEFUSUNfT0JTVEFDTEVfQ09MT1IgPSAweGRkMzMzMztcbmNvbnN0IE5PUk1BTF9EWU5BTUlDX09CU1RBQ0xFX0NPTE9SID0gMHhmZjg4MDA7XG5jb25zdCBIT1ZFUl9EWU5BTUlDX09CU1RBQ0xFX0NPTE9SID0gMHhmZmNjMzM7XG5cbmNvbnN0IElOSVRJQUxfU1BFRURfRkFMTEJBQ0sgPSAyMDtcbmNvbnN0IFNQRUVEX0xJTUlUX0ZBTExCQUNLID0gMjA7XG5jb25zdCBMQU5FX1BSRUZFUkVOQ0VfRkFMTEJBQ0sgPSArMTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRpdG9yIHtcbiAgY29uc3RydWN0b3IoY2FudmFzLCBjYW1lcmEsIHNjZW5lKSB7XG4gICAgdGhpcy5jYW52YXMgPSBjYW52YXM7XG4gICAgdGhpcy5jYW1lcmEgPSBjYW1lcmE7XG5cbiAgICB0aGlzLmlzRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMucmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcigpO1xuICAgIHRoaXMubW91c2UgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuICAgIHRoaXMuZHJhZ09mZnNldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG4gICAgdGhpcy5kcmFnZ2luZ1BvaW50ID0gbnVsbDtcbiAgICB0aGlzLnBvaW50SW5kZXggPSAwO1xuICAgIHRoaXMub2JzdGFjbGVJbmRleCA9IDA7XG4gICAgdGhpcy5wcmV2aW91c1NhdmVkTmFtZSA9IG51bGw7XG4gICAgdGhpcy5zY2VuYXJpb01hbmFnZXIgPSBuZXcgU2NlbmFyaW9NYW5hZ2VyKHRoaXMpO1xuICAgIHRoaXMuc2hhcmVNYW5hZ2VyID0gbmV3IFNoYXJlTWFuYWdlcigpO1xuXG4gICAgdGhpcy5jZW50ZXJsaW5lR2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnkoKTtcbiAgICB0aGlzLmxlZnRCb3VuZGFyeUdlb21ldHJ5ID0gbmV3IFRIUkVFLkdlb21ldHJ5KCk7XG4gICAgdGhpcy5yaWdodEJvdW5kYXJ5R2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnkoKTtcbiAgICB0aGlzLmRyYWdnaW5nT2JzdGFjbGVQcmV2aWV3ID0gbnVsbDtcblxuICAgIHRoaXMuZ3JvdXAgPSBuZXcgVEhSRUUuR3JvdXAoKTtcbiAgICB0aGlzLmdyb3VwLnJlbmRlck9yZGVyID0gMTtcbiAgICB0aGlzLnBvaW50R3JvdXAgPSBuZXcgVEhSRUUuR3JvdXAoKTtcbiAgICB0aGlzLnBvaW50R3JvdXAucmVuZGVyT3JkZXIgPSAyO1xuICAgIHRoaXMub2JzdGFjbGVHcm91cCA9IG5ldyBUSFJFRS5Hcm91cCgpO1xuICAgIHRoaXMub2JzdGFjbGVHcm91cC5yZW5kZXJPcmRlciA9IDE7XG4gICAgdGhpcy5ncm91cC5hZGQodGhpcy5vYnN0YWNsZUdyb3VwKTtcbiAgICB0aGlzLmdyb3VwLmFkZCh0aGlzLnBvaW50R3JvdXApO1xuICAgIHNjZW5lLmFkZCh0aGlzLmdyb3VwKTtcblxuICAgIHRoaXMubGFuZVBhdGggPSBuZXcgTGFuZVBhdGgoKTtcbiAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZUVkaXRvciA9IG5ldyBEeW5hbWljT2JzdGFjbGVFZGl0b3IoKTtcblxuICAgIHRoaXMuZWRpdG9yUGF0aEJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3ItcGF0aCcpO1xuICAgIHRoaXMuZWRpdG9yUGF0aEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gdGhpcy5jaGFuZ2VFZGl0TW9kZSgncGF0aCcpKTtcbiAgICB0aGlzLmVkaXRvck9ic3RhY2xlc0J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3Itb2JzdGFjbGVzJyk7XG4gICAgdGhpcy5lZGl0b3JPYnN0YWNsZXNCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHRoaXMuY2hhbmdlRWRpdE1vZGUoJ3N0YXRpY09ic3RhY2xlcycpKTtcbiAgICB0aGlzLmVkaXRvckR5bmFtaWNPYnN0YWNsZXNCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWR5bmFtaWMtb2JzdGFjbGVzJyk7XG4gICAgdGhpcy5lZGl0b3JEeW5hbWljT2JzdGFjbGVzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB0aGlzLmNoYW5nZUVkaXRNb2RlKCdkeW5hbWljT2JzdGFjbGVzJykpO1xuXG4gICAgdGhpcy5lZGl0b3JSb2FkQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1yb2FkLWJveCcpO1xuICAgIHRoaXMuaW5pdGlhbFNwZWVkRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1pbml0aWFsLXNwZWVkJyk7XG4gICAgdGhpcy5zcGVlZExpbWl0RG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1zcGVlZC1saW1pdCcpO1xuICAgIHRoaXMubGFuZUxlZnREb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWxhbmUtbGVmdCcpO1xuICAgIHRoaXMubGFuZVJpZ2h0RG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1sYW5lLXJpZ2h0Jyk7XG5cbiAgICB0aGlzLmxhbmVMZWZ0RG9tLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB0aGlzLl9jaGFuZ2VMYW5lUHJlZmVyZW5jZSgtMSkpO1xuICAgIHRoaXMubGFuZVJpZ2h0RG9tLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZSA9PiB0aGlzLl9jaGFuZ2VMYW5lUHJlZmVyZW5jZSgrMSkpO1xuXG4gICAgdGhpcy5pbml0aWFsU3BlZWREb20udmFsdWUgPSBJTklUSUFMX1NQRUVEX0ZBTExCQUNLO1xuICAgIHRoaXMuc3BlZWRMaW1pdERvbS52YWx1ZSA9IFNQRUVEX0xJTUlUX0ZBTExCQUNLO1xuICAgIHRoaXMuX2NoYW5nZUxhbmVQcmVmZXJlbmNlKExBTkVfUFJFRkVSRU5DRV9GQUxMQkFDSyk7XG5cbiAgICB0aGlzLnN0YXRzUm9hZExlbmd0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3Itc3RhdHMtcm9hZC1sZW5ndGgnKTtcbiAgICB0aGlzLnN0YXRzU3RhdGljT2JzdGFjbGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1zdGF0cy1zdGF0aWMtb2JzdGFjbGVzJyk7XG4gICAgdGhpcy5zdGF0c1N0YXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLXN0YXRzLXN0YXRpb24nKTtcbiAgICB0aGlzLnN0YXRzTGF0aXR1ZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLXN0YXRzLWxhdGl0dWRlJyk7XG4gICAgdGhpcy5zY2VuYXJpb05hbWVEb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLXNjZW5hcmlvLW5hbWUnKTtcbiAgICB0aGlzLnNjZW5hcmlvU2F2ZWRBdERvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3Itc2NlbmFyaW8tc2F2ZWQtYXQnKTtcblxuICAgIHRoaXMuaGVscFBhdGggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWhlbHAtcGF0aCcpO1xuICAgIHRoaXMuaGVscFN0YXRpY09ic3RhY2xlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3ItaGVscC1zdGF0aWMtb2JzdGFjbGVzJyk7XG4gICAgdGhpcy5oZWxwRHluYW1pY09ic3RhY2xlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3ItaGVscC1keW5hbWljLW9ic3RhY2xlcycpO1xuXG4gICAgdGhpcy5jaGFuZ2VFZGl0TW9kZSgncGF0aCcpO1xuICAgIHRoaXMucmVtb3ZlTW9kZSA9IGZhbHNlO1xuXG4gICAgY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duLmJpbmQodGhpcykpO1xuICAgIGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlTW92ZS5iaW5kKHRoaXMpKTtcbiAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMubW91c2VVcC5iaW5kKHRoaXMpKTtcbiAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCBlID0+IHRoaXMuaXNFbmFibGVkICYmIGUucHJldmVudERlZmF1bHQoKSk7XG5cbiAgICBjb25zdCBlZGl0b3JDbGVhck9wdGlvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWNsZWFyLW9wdGlvbnMnKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWNsZWFyJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudCA9PiB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGVkaXRvckNsZWFyT3B0aW9ucy5jbGFzc0xpc3QudG9nZ2xlKCdpcy1oaWRkZW4nKTtcbiAgICB9KTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IGVkaXRvckNsZWFyT3B0aW9ucy5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKSk7XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWNsZWFyLW9ic3RhY2xlcycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGVhclN0YXRpY09ic3RhY2xlcy5iaW5kKHRoaXMpKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLWNsZWFyLWR5bmFtaWMtb2JzdGFjbGVzJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmR5bmFtaWNPYnN0YWNsZUVkaXRvci5jbGVhckR5bmFtaWNPYnN0YWNsZXMuYmluZCh0aGlzLmR5bmFtaWNPYnN0YWNsZUVkaXRvcikpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3ItY2xlYXItcGF0aCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbGVhclBhdGguYmluZCh0aGlzKSk7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1jbGVhci1hbGwnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xlYXJBbGwuYmluZCh0aGlzKSk7XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yLXNhdmUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuc2F2ZUNsaWNrZWQuYmluZCh0aGlzKSk7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1sb2FkJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmxvYWRDbGlja2VkLmJpbmQodGhpcykpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3Itc2hhcmUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuc2hhcmVDbGlja2VkLmJpbmQodGhpcykpO1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMua2V5RG93bi5iaW5kKHRoaXMpKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMua2V5VXAuYmluZCh0aGlzKSk7XG5cbiAgICBjb25zdCByZXNvbHV0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjIodGhpcy5jYW52YXMuY2xpZW50V2lkdGgsIHRoaXMuY2FudmFzLmNsaWVudEhlaWdodCk7XG4gICAgdGhpcy5jZW50ZXJsaW5lT2JqZWN0ID0gbmV3IFRIUkVFLk1lc2goXG4gICAgICBuZXcgVEhSRUUuR2VvbWV0cnkoKSxcbiAgICAgIG5ldyBNZXNoTGluZU1hdGVyaWFsKHtcbiAgICAgICAgY29sb3I6IG5ldyBUSFJFRS5Db2xvcigweDAwNDQ4OCksXG4gICAgICAgIGxpbmVXaWR0aDogOCxcbiAgICAgICAgcmVzb2x1dGlvbjogcmVzb2x1dGlvbixcbiAgICAgICAgc2l6ZUF0dGVudWF0aW9uOiBmYWxzZSxcbiAgICAgICAgbmVhcjogY2FtZXJhLm5lYXIsXG4gICAgICAgIGZhcjogY2FtZXJhLmZhcixcbiAgICAgICAgZGVwdGhXcml0ZTogZmFsc2VcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmNlbnRlcmxpbmVPYmplY3Qucm90YXRpb24ueCA9IE1hdGguUEkgLyAyO1xuICAgIHRoaXMuY2VudGVybGluZU9iamVjdC5yZW5kZXJPcmRlciA9IDE7XG4gICAgdGhpcy5ncm91cC5hZGQodGhpcy5jZW50ZXJsaW5lT2JqZWN0KTtcblxuICAgIHRoaXMubGVmdEJvdW5kYXJ5T2JqZWN0ID0gbmV3IFRIUkVFLk1lc2goXG4gICAgICBuZXcgVEhSRUUuR2VvbWV0cnkoKSxcbiAgICAgIG5ldyBNZXNoTGluZU1hdGVyaWFsKHtcbiAgICAgICAgY29sb3I6IG5ldyBUSFJFRS5Db2xvcigweGZmNDBmZiksXG4gICAgICAgIGxpbmVXaWR0aDogMC4xNSxcbiAgICAgICAgcmVzb2x1dGlvbjogcmVzb2x1dGlvbixcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICAgIG9wYWNpdHk6IDAuN1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMubGVmdEJvdW5kYXJ5T2JqZWN0LnJvdGF0aW9uLnggPSBNYXRoLlBJIC8gMjtcbiAgICB0aGlzLmxlZnRCb3VuZGFyeU9iamVjdC5yZW5kZXJPcmRlciA9IDE7XG4gICAgdGhpcy5ncm91cC5hZGQodGhpcy5sZWZ0Qm91bmRhcnlPYmplY3QpO1xuXG4gICAgdGhpcy5yaWdodEJvdW5kYXJ5T2JqZWN0ID0gbmV3IFRIUkVFLk1lc2goXG4gICAgICBuZXcgVEhSRUUuR2VvbWV0cnkoKSxcbiAgICAgIG5ldyBNZXNoTGluZU1hdGVyaWFsKHtcbiAgICAgICAgY29sb3I6IG5ldyBUSFJFRS5Db2xvcigweGZmNDBmZiksXG4gICAgICAgIGxpbmVXaWR0aDogMC4xNSxcbiAgICAgICAgcmVzb2x1dGlvbjogcmVzb2x1dGlvbixcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICAgIG9wYWNpdHk6IDAuN1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMucmlnaHRCb3VuZGFyeU9iamVjdC5yb3RhdGlvbi54ID0gTWF0aC5QSSAvIDI7XG4gICAgdGhpcy5yaWdodEJvdW5kYXJ5T2JqZWN0LnJlbmRlck9yZGVyID0gMTtcbiAgICB0aGlzLmdyb3VwLmFkZCh0aGlzLnJpZ2h0Qm91bmRhcnlPYmplY3QpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIHF1ZXVlIHRoZSByZXNvbHV0aW9uIHVwZGF0ZSBhZnRlciB0aGUgY2FudmFzIGlzIHJlZmxvd2VkLlxuICAgICAgLy8gVGhpcyBnZXRzIGFyb3VuZCBzb21lIHdlaXJkbmVzcyBub3RpY2VkIHdoZW4gb3BlbmluZyBhbmQgY2xvc2luZyBDaHJvbWUgRGV2ZWxvcGVyIFRvb2xzLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc29sdXRpb24gPSBuZXcgVEhSRUUuVmVjdG9yMih0aGlzLmNhbnZhcy5jbGllbnRXaWR0aCwgdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0KTtcbiAgICAgICAgdGhpcy5jZW50ZXJsaW5lT2JqZWN0Lm1hdGVyaWFsLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWUgPSByZXNvbHV0aW9uO1xuICAgICAgICB0aGlzLmxlZnRCb3VuZGFyeU9iamVjdC5tYXRlcmlhbC51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlID0gcmVzb2x1dGlvbjtcbiAgICAgICAgdGhpcy5yaWdodEJvdW5kYXJ5T2JqZWN0Lm1hdGVyaWFsLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWUgPSByZXNvbHV0aW9uO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0VuYWJsZWQ7XG4gIH1cblxuICBzZXQgZW5hYmxlZChlKSB7XG4gICAgdGhpcy5pc0VuYWJsZWQgPSBlO1xuICAgIHRoaXMucG9pbnRHcm91cC52aXNpYmxlID0gdGhpcy5vYnN0YWNsZUdyb3VwLnZpc2libGUgPSAhIXRoaXMuaXNFbmFibGVkXG4gIH1cblxuICBnZXQgc3RhdGljT2JzdGFjbGVzKCkge1xuICAgIHJldHVybiB0aGlzLm9ic3RhY2xlR3JvdXAuY2hpbGRyZW4ubWFwKG8gPT4gbmV3IFN0YXRpY09ic3RhY2xlKG5ldyBUSFJFRS5WZWN0b3IyKG8ucG9zaXRpb24ueCwgby5wb3NpdGlvbi56KSwgLW8ucm90YXRpb24ueiwgby51c2VyRGF0YS53aWR0aCwgby51c2VyRGF0YS5oZWlnaHQpKTtcbiAgfVxuXG4gIGdldCBkeW5hbWljT2JzdGFjbGVzKCkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNPYnN0YWNsZUVkaXRvci5jb2xsZWN0RHluYW1pY09ic3RhY2xlcygpO1xuICB9XG5cbiAgZ2V0IGluaXRpYWxTcGVlZCgpIHtcbiAgICBsZXQgc3BlZWQgPSBwYXJzZUZsb2F0KHRoaXMuaW5pdGlhbFNwZWVkRG9tLnZhbHVlKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNwZWVkKSB8fCBzcGVlZCA8IDApXG4gICAgICBzcGVlZCA9IDA7XG5cbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKHNwZWVkKSB8fCBzcGVlZCA8IDAgPyBJTklUSUFMX1NQRUVEX0ZBTExCQUNLIDogc3BlZWQ7XG4gIH1cblxuICBnZXQgc3BlZWRMaW1pdCgpIHtcbiAgICBsZXQgbGltaXQgPSBwYXJzZUZsb2F0KHRoaXMuc3BlZWRMaW1pdERvbS52YWx1ZSk7XG4gICAgaWYgKE51bWJlci5pc05hTihsaW1pdCkgfHwgbGltaXQgPCAwKVxuICAgICAgbGltaXQgPSAwO1xuXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihsaW1pdCkgfHwgbGltaXQgPCAwID8gU1BFRURfTElNSVRfRkFMTEJBQ0sgOiBsaW1pdDtcbiAgfVxuXG4gIHNjZW5hcmlvVG9KU09OKCkge1xuICAgIGNvbnN0IHRydW5jID0gbiA9PiArbi50b0ZpeGVkKDUpO1xuXG4gICAgY29uc3QganNvbiA9IHtcbiAgICAgIHA6IEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIHRoaXMubGFuZVBhdGguYW5jaG9ycy5tYXAoYSA9PiBbdHJ1bmMoYS54KSwgdHJ1bmMoYS55KV0pKSxcbiAgICAgIHM6IHRoaXMuc3RhdGljT2JzdGFjbGVzLm1hcChvID0+IG8udG9KU09OKCkpLFxuICAgICAgZDogdGhpcy5keW5hbWljT2JzdGFjbGVFZGl0b3IudG9KU09OKCksXG4gICAgICBsOiBOdW1iZXIodGhpcy5sYW5lUGF0aC5hcmNMZW5ndGgudG9GaXhlZCgzKSksXG4gICAgICBjOiB7XG4gICAgICAgIHM6IHRoaXMuaW5pdGlhbFNwZWVkRG9tLnZhbHVlLFxuICAgICAgICBzbDogdGhpcy5zcGVlZExpbWl0RG9tLnZhbHVlLFxuICAgICAgICBscDogdGhpcy5sYW5lUHJlZmVyZW5jZVxuICAgICAgfSxcbiAgICAgIHY6IDFcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBsb2FkSlNPTihqc29uKSB7XG4gICAgaWYgKGpzb24ucCA9PT0gdW5kZWZpbmVkIHx8IGpzb24ucC5sZW5ndGggJSAyICE9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb21wbGV0ZSBsYW5lIHBhdGguJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckFsbCgpO1xuXG4gICAgdGhpcy5sYW5lUGF0aCA9IG5ldyBMYW5lUGF0aCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwganNvbi5wLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICB0aGlzLmFkZFBvaW50KG5ldyBUSFJFRS5WZWN0b3IyKGpzb24ucFtpXSwganNvbi5wW2kgKyAxXSksIGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5sYW5lUGF0aC5yZXNhbXBsZUFsbCgpO1xuICAgIHRoaXMucmVidWlsZFBhdGhHZW9tZXRyeSgpO1xuXG4gICAganNvbi5zLmZvckVhY2gobyA9PiB7XG4gICAgICBjb25zdCBzdGF0aWNPYnN0YWNsZSA9IFN0YXRpY09ic3RhY2xlLmZyb21KU09OKG8pO1xuICAgICAgdGhpcy5hZGRTdGF0aWNPYnN0YWNsZShuZXcgVEhSRUUuVmVjdG9yMyhzdGF0aWNPYnN0YWNsZS5wb3MueCwgMCwgc3RhdGljT2JzdGFjbGUucG9zLnkpLCBzdGF0aWNPYnN0YWNsZS53aWR0aCwgc3RhdGljT2JzdGFjbGUuaGVpZ2h0LCBzdGF0aWNPYnN0YWNsZS5yb3QpXG4gICAgfSk7XG5cbiAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZUVkaXRvci5sb2FkSlNPTihqc29uLmQpO1xuXG4gICAgbGV0IGluaXRpYWxTcGVlZCA9IElOSVRJQUxfU1BFRURfRkFMTEJBQ0s7XG4gICAgbGV0IHNwZWVkTGltaXQgPSBTUEVFRF9MSU1JVF9GQUxMQkFDSztcbiAgICB0cnkgeyBpbml0aWFsU3BlZWQgPSBqc29uLmMuczsgfSBjYXRjaCAoZSkgeyB9XG4gICAgdHJ5IHsgc3BlZWRMaW1pdCA9IGpzb24uYy5zbDsgfSBjYXRjaCAoZSkgeyB9XG5cbiAgICB0aGlzLmluaXRpYWxTcGVlZERvbS52YWx1ZSA9IGluaXRpYWxTcGVlZDtcbiAgICB0aGlzLnNwZWVkTGltaXREb20udmFsdWUgPSBzcGVlZExpbWl0O1xuXG4gICAgbGV0IGxhbmVQcmVmZXJlbmNlID0gTEFORV9QUkVGRVJFTkNFX0ZBTExCQUNLO1xuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mKGpzb24uYy5scCkgPT09ICdudW1iZXInKVxuICAgICAgICBsYW5lUHJlZmVyZW5jZSA9IE1hdGguc2lnbihqc29uLmMubHApIHx8IExBTkVfUFJFRkVSRU5DRV9GQUxMQkFDSztcbiAgICB9IGNhdGNoIChlKSB7IH1cblxuICAgIHRoaXMuX2NoYW5nZUxhbmVQcmVmZXJlbmNlKGxhbmVQcmVmZXJlbmNlKTtcbiAgfVxuXG4gIHVwZGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLnJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKHRoaXMubW91c2UsIHRoaXMuY2FtZXJhKTtcbiAgICBjb25zdCBpbnRlcnNlY3Rpb24gPSB0aGlzLnJheWNhc3Rlci5yYXkuaW50ZXJzZWN0UGxhbmUoR1JPVU5EX1BMQU5FKTtcblxuICAgIGNvbnN0IFtzdGF0aW9uLCBsYXRpdHVkZSwgX2Fyb3VuZF0gPSB0aGlzLmxhbmVQYXRoLnN0YXRpb25MYXRpdHVkZUZyb21Qb3NpdGlvbihuZXcgVEhSRUUuVmVjdG9yMihpbnRlcnNlY3Rpb24ueCwgaW50ZXJzZWN0aW9uLnopKTtcbiAgICB0aGlzLnN0YXRzU3RhdGlvbi50ZXh0Q29udGVudCA9IChzdGF0aW9uIHx8IDApLnRvRml4ZWQoMSk7XG4gICAgdGhpcy5zdGF0c0xhdGl0dWRlLnRleHRDb250ZW50ID0gKGxhdGl0dWRlIHx8IDApLnRvRml4ZWQoMSk7XG5cbiAgICBpZiAodGhpcy5kcmFnZ2luZ1BvaW50KSB7XG4gICAgICBpZiAoaW50ZXJzZWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVQb2ludCh0aGlzLmRyYWdnaW5nUG9pbnQsIGludGVyc2VjdGlvbi5jbG9uZSgpLmFkZCh0aGlzLmRyYWdPZmZzZXQpKTtcbiAgICAgICAgdGhpcy5yZWJ1aWxkUGF0aEdlb21ldHJ5KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmRyYWdnaW5nT2JzdGFjbGUpIHtcbiAgICAgIGlmIChpbnRlcnNlY3Rpb24gIT09IG51bGwpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdPYnN0YWNsZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGlmICh0aGlzLmRyYWdnaW5nT2JzdGFjbGVQcmV2aWV3KSB0aGlzLmdyb3VwLnJlbW92ZSh0aGlzLmRyYWdnaW5nT2JzdGFjbGVQcmV2aWV3KTtcblxuICAgICAgICAgIGNvbnN0IFtjZW50ZXIsIHdpZHRoLCBoZWlnaHRdID0gdGhpcy5fZGltZW5zaW9uc0Zyb21SZWN0KHRoaXMuZHJhZ09mZnNldCwgaW50ZXJzZWN0aW9uKTtcblxuICAgICAgICAgIHRoaXMuZHJhZ2dpbmdPYnN0YWNsZVByZXZpZXcgPSBuZXcgVEhSRUUuTWVzaChcbiAgICAgICAgICAgIG5ldyBUSFJFRS5QbGFuZUdlb21ldHJ5KHdpZHRoLCBoZWlnaHQpLFxuICAgICAgICAgICAgbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHsgY29sb3I6IE5PUk1BTF9TVEFUSUNfT0JTVEFDTEVfQ09MT1IsIGRlcHRoVGVzdDogZmFsc2UsIHRyYW5zcGFyZW50OiB0cnVlLCBvcGFjaXR5OiAwLjQgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZHJhZ2dpbmdPYnN0YWNsZVByZXZpZXcucm90YXRpb24ueCA9IC1NYXRoLlBJIC8gMjtcbiAgICAgICAgICB0aGlzLmRyYWdnaW5nT2JzdGFjbGVQcmV2aWV3LnBvc2l0aW9uLmNvcHkoY2VudGVyKTtcbiAgICAgICAgICB0aGlzLmdyb3VwLmFkZCh0aGlzLmRyYWdnaW5nT2JzdGFjbGVQcmV2aWV3KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRyYWdnaW5nT2JzdGFjbGUucG9zaXRpb24uY29weShpbnRlcnNlY3Rpb24uY2xvbmUoKS5hZGQodGhpcy5kcmFnT2Zmc2V0KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucm90YXRpbmdPYnN0YWNsZSkge1xuICAgICAgY29uc3Qgcm90YXRpb24gPSAodGhpcy5kcmFnT2Zmc2V0LnggLSB0aGlzLm1vdXNlLngpICogMiAqICBNYXRoLlBJO1xuICAgICAgdGhpcy5yb3RhdGluZ09ic3RhY2xlLnJvdGF0aW9uLnogPSBNYXRoLndyYXBBbmdsZShyb3RhdGlvbiArIHRoaXMuaW5pdGlhbE9ic3RhY2xlUm90YXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvaW50R3JvdXAuY2hpbGRyZW4uZm9yRWFjaChwID0+IHtcbiAgICAgICAgcC5tYXRlcmlhbC5jb2xvci5zZXQoTk9STUFMX1BPSU5UX0NPTE9SKVxuICAgICAgICBwLm1hdGVyaWFsLm9wYWNpdHkgPSBOT1JNQUxfT1BBQ0lUWTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9ic3RhY2xlR3JvdXAuY2hpbGRyZW4uZm9yRWFjaChvID0+IHtcbiAgICAgICAgby5tYXRlcmlhbC5jb2xvci5zZXQoTk9STUFMX1NUQVRJQ19PQlNUQUNMRV9DT0xPUilcbiAgICAgICAgby5tYXRlcmlhbC5vcGFjaXR5ID0gTk9STUFMX09QQUNJVFk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jYW52YXMuY2xhc3NMaXN0LnJlbW92ZSgnZWRpdG9yLWdyYWInLCAnZWRpdG9yLWdyYWJiaW5nJywgJ2VkaXRvci1yZW1vdmluZycpO1xuXG4gICAgICBpZiAodGhpcy5lZGl0TW9kZSA9PSAncGF0aCcgJiYgdGhpcy5wb2ludEdyb3VwLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IHBpY2tlZCA9IG51bGw7XG4gICAgICAgIHRoaXMucmF5Y2FzdGVyLmludGVyc2VjdE9iamVjdHModGhpcy5wb2ludEdyb3VwLmNoaWxkcmVuKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgICAgIGlmIChwaWNrZWQgPT09IG51bGwgfHwgcC5vYmplY3QudXNlckRhdGEuaW5kZXggPiBwaWNrZWQub2JqZWN0LnVzZXJEYXRhLmluZGV4KSBwaWNrZWQgPSBwO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocGlja2VkKSB7XG4gICAgICAgICAgcGlja2VkLm9iamVjdC5tYXRlcmlhbC5jb2xvci5zZXQoSE9WRVJfUE9JTlRfQ09MT1IpO1xuICAgICAgICAgIHBpY2tlZC5vYmplY3QubWF0ZXJpYWwub3BhY2l0eSA9IEhPVkVSX09QQUNJVFk7XG5cbiAgICAgICAgICBpZiAodGhpcy5yZW1vdmVNb2RlKVxuICAgICAgICAgICAgdGhpcy5jYW52YXMuY2xhc3NMaXN0LmFkZCgnZWRpdG9yLXJlbW92aW5nJyk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5jYW52YXMuY2xhc3NMaXN0LmFkZCgnZWRpdG9yLWdyYWInKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmVkaXRNb2RlID09ICdzdGF0aWNPYnN0YWNsZXMnICYmIHRoaXMub2JzdGFjbGVHcm91cC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBwaWNrZWQgPSBudWxsO1xuICAgICAgICB0aGlzLnJheWNhc3Rlci5pbnRlcnNlY3RPYmplY3RzKHRoaXMub2JzdGFjbGVHcm91cC5jaGlsZHJlbikuZm9yRWFjaChvID0+IHtcbiAgICAgICAgICBpZiAocGlja2VkID09PSBudWxsIHx8IG8ub2JqZWN0LnVzZXJEYXRhLmluZGV4ID4gcGlja2VkLm9iamVjdC51c2VyRGF0YS5pbmRleCkgcGlja2VkID0gbztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHBpY2tlZCkge1xuICAgICAgICAgIHBpY2tlZC5vYmplY3QubWF0ZXJpYWwuY29sb3Iuc2V0KEhPVkVSX1NUQVRJQ19PQlNUQUNMRV9DT0xPUik7XG4gICAgICAgICAgcGlja2VkLm9iamVjdC5tYXRlcmlhbC5vcGFjaXR5ID0gSE9WRVJfT1BBQ0lUWTtcblxuICAgICAgICAgIGlmICh0aGlzLnJlbW92ZU1vZGUpXG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5jbGFzc0xpc3QuYWRkKCdlZGl0b3ItcmVtb3ZpbmcnKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5jbGFzc0xpc3QuYWRkKCdlZGl0b3ItZ3JhYicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlRWRpdE1vZGUobW9kZSkge1xuICAgIHRoaXMuZWRpdG9yUGF0aEJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1vdXRsaW5lZCcpO1xuICAgIHRoaXMuZWRpdG9yT2JzdGFjbGVzQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLW91dGxpbmVkJyk7XG4gICAgdGhpcy5lZGl0b3JEeW5hbWljT2JzdGFjbGVzQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLW91dGxpbmVkJyk7XG4gICAgdGhpcy5lZGl0b3JQYXRoQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXNlbGVjdGVkJyk7XG4gICAgdGhpcy5lZGl0b3JPYnN0YWNsZXNCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2VsZWN0ZWQnKTtcbiAgICB0aGlzLmVkaXRvckR5bmFtaWNPYnN0YWNsZXNCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2VsZWN0ZWQnKTtcbiAgICB0aGlzLmVkaXRvclJvYWRCb3guY2xhc3NMaXN0LmFkZCgnaXMtaGlkZGVuJyk7XG4gICAgdGhpcy5oZWxwUGF0aC5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcbiAgICB0aGlzLmhlbHBTdGF0aWNPYnN0YWNsZXMuY2xhc3NMaXN0LmFkZCgnaXMtaGlkZGVuJyk7XG4gICAgdGhpcy5oZWxwRHluYW1pY09ic3RhY2xlcy5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcblxuICAgIGlmIChtb2RlID09ICdwYXRoJykge1xuICAgICAgdGhpcy5lZGl0TW9kZSA9ICdwYXRoJztcbiAgICAgIHRoaXMuZWRpdG9yUGF0aEJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1vdXRsaW5lZCcpO1xuICAgICAgdGhpcy5lZGl0b3JQYXRoQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLXNlbGVjdGVkJyk7XG4gICAgICB0aGlzLmVkaXRvclJvYWRCb3guY2xhc3NMaXN0LnJlbW92ZSgnaXMtaGlkZGVuJyk7XG4gICAgICB0aGlzLmhlbHBQYXRoLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWhpZGRlbicpO1xuICAgICAgdGhpcy5keW5hbWljT2JzdGFjbGVFZGl0b3IuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSBpZiAobW9kZSA9PSAnc3RhdGljT2JzdGFjbGVzJykge1xuICAgICAgdGhpcy5lZGl0TW9kZSA9ICdzdGF0aWNPYnN0YWNsZXMnO1xuICAgICAgdGhpcy5lZGl0b3JPYnN0YWNsZXNCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtb3V0bGluZWQnKTtcbiAgICAgIHRoaXMuZWRpdG9yT2JzdGFjbGVzQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLXNlbGVjdGVkJyk7XG4gICAgICB0aGlzLmhlbHBTdGF0aWNPYnN0YWNsZXMuY2xhc3NMaXN0LnJlbW92ZSgnaXMtaGlkZGVuJyk7XG4gICAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZUVkaXRvci5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdE1vZGUgPSAnZHluYW1pY09ic3RhY2xlcyc7XG4gICAgICB0aGlzLmVkaXRvckR5bmFtaWNPYnN0YWNsZXNCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtb3V0bGluZWQnKTtcbiAgICAgIHRoaXMuZWRpdG9yRHluYW1pY09ic3RhY2xlc0J1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgdGhpcy5oZWxwRHluYW1pY09ic3RhY2xlcy5jbGFzc0xpc3QucmVtb3ZlKCdpcy1oaWRkZW4nKTtcbiAgICAgIHRoaXMuZHluYW1pY09ic3RhY2xlRWRpdG9yLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY09ic3RhY2xlKGNlbnRlciwgd2lkdGgsIGhlaWdodCwgcm90YXRpb24gPSAwKSB7XG4gICAgY29uc3Qgb2JzdGFjbGUgPSBuZXcgVEhSRUUuTWVzaChcbiAgICAgIG5ldyBUSFJFRS5QbGFuZUdlb21ldHJ5KHdpZHRoLCBoZWlnaHQpLFxuICAgICAgbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHsgY29sb3I6IE5PUk1BTF9TVEFUSUNfT0JTVEFDTEVfQ09MT1IsIGRlcHRoVGVzdDogZmFsc2UsIHRyYW5zcGFyZW50OiB0cnVlLCBvcGFjaXR5OiBOT1JNQUxfT1BBQ0lUWSB9KVxuICAgICk7XG4gICAgb2JzdGFjbGUucm90YXRpb24ueCA9IC1NYXRoLlBJIC8gMjtcbiAgICBvYnN0YWNsZS5yb3RhdGlvbi56ID0gLU1hdGgud3JhcEFuZ2xlKHJvdGF0aW9uKTtcbiAgICBvYnN0YWNsZS5wb3NpdGlvbi5jb3B5KGNlbnRlcik7XG4gICAgb2JzdGFjbGUudXNlckRhdGEgPSB7IGluZGV4OiB0aGlzLm9ic3RhY2xlSW5kZXgrKywgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCB9O1xuXG4gICAgdGhpcy5vYnN0YWNsZUdyb3VwLmFkZChvYnN0YWNsZSk7XG4gICAgdGhpcy5zdGF0c1N0YXRpY09ic3RhY2xlcy50ZXh0Q29udGVudCA9IHRoaXMub2JzdGFjbGVHcm91cC5jaGlsZHJlbi5sZW5ndGg7XG4gIH1cblxuICByZW1vdmVTdGF0aWNPYnN0YWNsZShvYnN0YWNsZSkge1xuICAgIHRoaXMub2JzdGFjbGVHcm91cC5yZW1vdmUob2JzdGFjbGUpO1xuICAgIHRoaXMuc3RhdHNTdGF0aWNPYnN0YWNsZXMudGV4dENvbnRlbnQgPSB0aGlzLm9ic3RhY2xlR3JvdXAuY2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgY2xlYXJTdGF0aWNPYnN0YWNsZXMoKSB7XG4gICAgdGhpcy5ncm91cC5yZW1vdmUodGhpcy5vYnN0YWNsZUdyb3VwKTtcbiAgICB0aGlzLm9ic3RhY2xlR3JvdXAgPSBuZXcgVEhSRUUuR3JvdXAoKTtcbiAgICB0aGlzLm9ic3RhY2xlR3JvdXAucmVuZGVyT3JkZXIgPSAxO1xuICAgIHRoaXMuZ3JvdXAuYWRkKHRoaXMub2JzdGFjbGVHcm91cCk7XG4gICAgdGhpcy5vYnN0YWNsZUluZGV4ID0gMDtcbiAgICB0aGlzLnN0YXRzU3RhdGljT2JzdGFjbGVzLnRleHRDb250ZW50ID0gMDtcbiAgfVxuXG4gIGNsZWFyQWxsKCkge1xuICAgIHRoaXMuY2xlYXJQYXRoKCk7XG4gICAgdGhpcy5jbGVhclN0YXRpY09ic3RhY2xlcygpO1xuICAgIHRoaXMuZHluYW1pY09ic3RhY2xlRWRpdG9yLmNsZWFyRHluYW1pY09ic3RhY2xlcygpO1xuICB9XG5cbiAgcmVidWlsZFBhdGhHZW9tZXRyeSgpIHtcbiAgICBpZiAodGhpcy5sYW5lUGF0aC5hbmNob3JzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuY2VudGVybGluZUdlb21ldHJ5LnNldEZyb21Qb2ludHModGhpcy5sYW5lUGF0aC5jZW50ZXJsaW5lKTtcbiAgICAgIGNvbnN0IGNlbnRlcmxpbmUgPSBuZXcgTWVzaExpbmUoKTtcbiAgICAgIGNlbnRlcmxpbmUuc2V0R2VvbWV0cnkodGhpcy5jZW50ZXJsaW5lR2VvbWV0cnkpO1xuICAgICAgdGhpcy5jZW50ZXJsaW5lT2JqZWN0Lmdlb21ldHJ5ID0gY2VudGVybGluZS5nZW9tZXRyeTtcblxuICAgICAgdGhpcy5sZWZ0Qm91bmRhcnlHZW9tZXRyeS5zZXRGcm9tUG9pbnRzKHRoaXMubGFuZVBhdGgubGVmdEJvdW5kYXJ5KTtcbiAgICAgIGNvbnN0IGxlZnRCb3VuZGFyeSA9IG5ldyBNZXNoTGluZSgpO1xuICAgICAgbGVmdEJvdW5kYXJ5LnNldEdlb21ldHJ5KHRoaXMubGVmdEJvdW5kYXJ5R2VvbWV0cnkpO1xuICAgICAgdGhpcy5sZWZ0Qm91bmRhcnlPYmplY3QuZ2VvbWV0cnkgPSBsZWZ0Qm91bmRhcnkuZ2VvbWV0cnk7XG5cbiAgICAgIHRoaXMucmlnaHRCb3VuZGFyeUdlb21ldHJ5LnNldEZyb21Qb2ludHModGhpcy5sYW5lUGF0aC5yaWdodEJvdW5kYXJ5KTtcbiAgICAgIGNvbnN0IHJpZ2h0Qm91bmRhcnkgPSBuZXcgTWVzaExpbmUoKTtcbiAgICAgIHJpZ2h0Qm91bmRhcnkuc2V0R2VvbWV0cnkodGhpcy5yaWdodEJvdW5kYXJ5R2VvbWV0cnkpO1xuICAgICAgdGhpcy5yaWdodEJvdW5kYXJ5T2JqZWN0Lmdlb21ldHJ5ID0gcmlnaHRCb3VuZGFyeS5nZW9tZXRyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jZW50ZXJsaW5lT2JqZWN0Lmdlb21ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuY2VudGVybGluZU9iamVjdC5nZW9tZXRyeSA9IG5ldyBUSFJFRS5HZW9tZXRyeSgpO1xuXG4gICAgICB0aGlzLmxlZnRCb3VuZGFyeU9iamVjdC5nZW9tZXRyeS5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmxlZnRCb3VuZGFyeU9iamVjdC5nZW9tZXRyeSA9IG5ldyBUSFJFRS5HZW9tZXRyeSgpO1xuXG4gICAgICB0aGlzLnJpZ2h0Qm91bmRhcnlPYmplY3QuZ2VvbWV0cnkuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5yaWdodEJvdW5kYXJ5T2JqZWN0Lmdlb21ldHJ5ID0gbmV3IFRIUkVFLkdlb21ldHJ5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0c1JvYWRMZW5ndGgudGV4dENvbnRlbnQgPSB0aGlzLmxhbmVQYXRoLmFyY0xlbmd0aC50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAxLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDEgfSk7XG4gIH1cblxuICBhZGRQb2ludChwb3MsIHJlc2FtcGxlID0gdHJ1ZSkge1xuICAgIGNvbnN0IHBvaW50ID0gbmV3IFRIUkVFLk1lc2goXG4gICAgICBuZXcgVEhSRUUuQ2lyY2xlR2VvbWV0cnkoMSwgMzIpLFxuICAgICAgbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHtcbiAgICAgICAgY29sb3I6IE5PUk1BTF9QT0lOVF9DT0xPUixcbiAgICAgICAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXG4gICAgICAgIG9wYWNpdHk6IE5PUk1BTF9PUEFDSVRZXG4gICAgICB9KVxuICAgICk7XG4gICAgcG9pbnQucm90YXRpb24ueCA9IC1NYXRoLlBJIC8gMjtcbiAgICBwb2ludC5wb3NpdGlvbi5zZXQocG9zLngsIDAsIHBvcy55KTtcbiAgICBwb2ludC51c2VyRGF0YSA9IHsgaW5kZXg6IHRoaXMucG9pbnRJbmRleCsrIH07XG5cbiAgICB0aGlzLmxhbmVQYXRoLmFkZEFuY2hvcihwb3MsIHJlc2FtcGxlKTtcbiAgICB0aGlzLnBvaW50R3JvdXAuYWRkKHBvaW50KTtcblxuICAgIHJldHVybiBwb2ludDtcbiAgfVxuXG4gIHVwZGF0ZVBvaW50KG9iamVjdCwgcG9zKSB7XG4gICAgb2JqZWN0LnBvc2l0aW9uLmNvcHkocG9zKTtcbiAgICB0aGlzLmxhbmVQYXRoLnVwZGF0ZUFuY2hvcihvYmplY3QudXNlckRhdGEuaW5kZXgsIG5ldyBUSFJFRS5WZWN0b3IyKHBvcy54LCBwb3MueikpO1xuICB9XG5cbiAgcmVtb3ZlUG9pbnQob2JqZWN0KSB7XG4gICAgY29uc3QgaW5kZXggPSBvYmplY3QudXNlckRhdGEuaW5kZXg7XG5cbiAgICB0aGlzLnBvaW50R3JvdXAucmVtb3ZlKG9iamVjdCk7XG4gICAgdGhpcy5wb2ludEdyb3VwLmNoaWxkcmVuLmZvckVhY2gocCA9PiB7XG4gICAgICBpZiAocC51c2VyRGF0YS5pbmRleCA+IGluZGV4KSBwLnVzZXJEYXRhLmluZGV4LS07XG4gICAgfSk7XG4gICAgdGhpcy5wb2ludEluZGV4LS07XG5cbiAgICB0aGlzLmxhbmVQYXRoLnJlbW92ZUFuY2hvcihpbmRleCk7XG4gIH1cblxuICBjbGVhclBhdGgoKSB7XG4gICAgdGhpcy5ncm91cC5yZW1vdmUodGhpcy5wb2ludEdyb3VwKTtcbiAgICB0aGlzLnBvaW50R3JvdXAgPSBuZXcgVEhSRUUuR3JvdXAoKTtcbiAgICB0aGlzLnBvaW50R3JvdXAucmVuZGVyT3JkZXIgPSAyO1xuICAgIHRoaXMuZ3JvdXAuYWRkKHRoaXMucG9pbnRHcm91cCk7XG4gICAgdGhpcy5wb2ludEluZGV4ID0gMDtcblxuICAgIHRoaXMubGFuZVBhdGggPSBuZXcgTGFuZVBhdGgoKTtcbiAgICB0aGlzLnJlYnVpbGRQYXRoR2VvbWV0cnkoKTtcblxuICAgIHRoaXMuaW5pdGlhbFNwZWVkRG9tLnZhbHVlID0gSU5JVElBTF9TUEVFRF9GQUxMQkFDSztcbiAgICB0aGlzLnNwZWVkTGltaXREb20udmFsdWUgPSBTUEVFRF9MSU1JVF9GQUxMQkFDSztcbiAgfVxuXG4gIGtleURvd24oZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQucmVwZWF0IHx8IHRoaXMuZWRpdE1vZGUgIT0gJ3BhdGgnICYmIHRoaXMuZWRpdE1vZGUgIT0gJ3N0YXRpY09ic3RhY2xlcycpIHJldHVybjtcblxuICAgIGlmIChldmVudC5rZXkgPT0gJ1NoaWZ0Jykge1xuICAgICAgdGhpcy5yZW1vdmVNb2RlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FudmFzLmNsYXNzTGlzdC5hZGQoJ2VkaXRvci1wb2ludGluZycpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PSAnQ29udHJvbCcgJiYgdGhpcy5lZGl0TW9kZSA9PSAnc3RhdGljT2JzdGFjbGVzJykge1xuICAgICAgdGhpcy5yb3RhdGVNb2RlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FudmFzLmNsYXNzTGlzdC5hZGQoJ2VkaXRvci1wb2ludGluZycpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBrZXlVcChldmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT0gJ1NoaWZ0Jykge1xuICAgICAgdGhpcy5yZW1vdmVNb2RlID0gZmFsc2U7XG4gICAgICB0aGlzLmNhbnZhcy5jbGFzc0xpc3QucmVtb3ZlKCdlZGl0b3ItcG9pbnRpbmcnLCAnZWRpdG9yLXJlbW92aW5nJyk7XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT0gJ0NvbnRyb2wnKSB7XG4gICAgICB0aGlzLnJvdGF0ZU1vZGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2FudmFzLmNsYXNzTGlzdC5yZW1vdmUoJ2VkaXRvci1wb2ludGluZycsICdlZGl0b3ItZ3JhYmJpbmcnKTtcbiAgICB9XG4gIH1cblxuICBtb3VzZURvd24oZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkIHx8IGV2ZW50LmJ1dHRvbiAhPSAwKSByZXR1cm47XG5cbiAgICB0aGlzLm1vdXNlLnggPSAoZXZlbnQub2Zmc2V0WCAvIHRoaXMuY2FudmFzLmNsaWVudFdpZHRoKSAqIDIgLSAxO1xuICAgIHRoaXMubW91c2UueSA9IC0oZXZlbnQub2Zmc2V0WSAvIHRoaXMuY2FudmFzLmNsaWVudEhlaWdodCkgKiAyICsgMTtcblxuICAgIHRoaXMucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEodGhpcy5tb3VzZSwgdGhpcy5jYW1lcmEpO1xuXG4gICAgaWYgKHRoaXMuZWRpdE1vZGUgPT0gJ3BhdGgnKSB7XG4gICAgICBsZXQgcGlja2VkID0gbnVsbDtcbiAgICAgIHRoaXMucmF5Y2FzdGVyLmludGVyc2VjdE9iamVjdHModGhpcy5wb2ludEdyb3VwLmNoaWxkcmVuKS5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBpZiAocGlja2VkID09PSBudWxsIHx8IHAub2JqZWN0LnVzZXJEYXRhLmluZGV4ID4gcGlja2VkLm9iamVjdC51c2VyRGF0YS5pbmRleCkgcGlja2VkID0gcDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocGlja2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnJlbW92ZU1vZGUpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZVBvaW50KHBpY2tlZC5vYmplY3QpO1xuICAgICAgICAgIHRoaXMucmVidWlsZFBhdGhHZW9tZXRyeSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2FudmFzLmNsYXNzTGlzdC5yZW1vdmUoJ2VkaXRvci1ncmFiJyk7XG4gICAgICAgICAgdGhpcy5jYW52YXMuY2xhc3NMaXN0LmFkZCgnZWRpdG9yLWdyYWJiaW5nJyk7XG5cbiAgICAgICAgICB0aGlzLmRyYWdnaW5nUG9pbnQgPSBwaWNrZWQub2JqZWN0O1xuICAgICAgICAgIHRoaXMuZHJhZ09mZnNldC5jb3B5KHBpY2tlZC5vYmplY3QucG9zaXRpb24pLnN1YihwaWNrZWQucG9pbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnJlbW92ZU1vZGUpIHtcbiAgICAgICAgY29uc3QgaW50ZXJzZWN0aW9uID0gdGhpcy5yYXljYXN0ZXIucmF5LmludGVyc2VjdFBsYW5lKEdST1VORF9QTEFORSk7XG4gICAgICAgIGlmIChpbnRlcnNlY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuYWRkUG9pbnQobmV3IFRIUkVFLlZlY3RvcjIoaW50ZXJzZWN0aW9uLngsIGludGVyc2VjdGlvbi56KSk7XG4gICAgICAgICAgdGhpcy5yZWJ1aWxkUGF0aEdlb21ldHJ5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZWRpdE1vZGUgPT0gJ3N0YXRpY09ic3RhY2xlcycpIHtcbiAgICAgIGxldCBwaWNrZWQgPSBudWxsO1xuICAgICAgdGhpcy5yYXljYXN0ZXIuaW50ZXJzZWN0T2JqZWN0cyh0aGlzLm9ic3RhY2xlR3JvdXAuY2hpbGRyZW4pLmZvckVhY2gobyA9PiB7XG4gICAgICAgIGlmIChwaWNrZWQgPT09IG51bGwgfHwgby5vYmplY3QudXNlckRhdGEuaW5kZXggPiBwaWNrZWQub2JqZWN0LnVzZXJEYXRhLmluZGV4KSBwaWNrZWQgPSBvO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChwaWNrZWQpIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlTW9kZSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlU3RhdGljT2JzdGFjbGUocGlja2VkLm9iamVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jYW52YXMuY2xhc3NMaXN0LnJlbW92ZSgnZWRpdG9yLWdyYWInKTtcbiAgICAgICAgICB0aGlzLmNhbnZhcy5jbGFzc0xpc3QuYWRkKCdlZGl0b3ItZ3JhYmJpbmcnKTtcblxuICAgICAgICAgIGlmICh0aGlzLnJvdGF0ZU1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMucm90YXRpbmdPYnN0YWNsZSA9IHBpY2tlZC5vYmplY3Q7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxPYnN0YWNsZVJvdGF0aW9uID0gcGlja2VkLm9iamVjdC5yb3RhdGlvbi56O1xuICAgICAgICAgICAgdGhpcy5kcmFnT2Zmc2V0LnNldCh0aGlzLm1vdXNlLngsIHRoaXMubW91c2UueSwgMCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmdPYnN0YWNsZSA9IHBpY2tlZC5vYmplY3Q7XG4gICAgICAgICAgICB0aGlzLmRyYWdPZmZzZXQuY29weShwaWNrZWQub2JqZWN0LnBvc2l0aW9uKS5zdWIocGlja2VkLnBvaW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMucmVtb3ZlTW9kZSAmJiAhdGhpcy5yb3RhdGVNb2RlKSB7XG4gICAgICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IHRoaXMucmF5Y2FzdGVyLnJheS5pbnRlcnNlY3RQbGFuZShHUk9VTkRfUExBTkUpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmRyYWdnaW5nT2JzdGFjbGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZHJhZ09mZnNldC5jb3B5KGludGVyc2VjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb3VzZU1vdmUoZXZlbnQpIHtcbiAgICB0aGlzLm1vdXNlLnggPSAoZXZlbnQub2Zmc2V0WCAvIHRoaXMuY2FudmFzLmNsaWVudFdpZHRoKSAqIDIgLSAxO1xuICAgIHRoaXMubW91c2UueSA9IC0oZXZlbnQub2Zmc2V0WSAvIHRoaXMuY2FudmFzLmNsaWVudEhlaWdodCkgKiAyICsgMTtcbiAgfVxuXG4gIG1vdXNlVXAoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNFbmFibGVkIHx8IGV2ZW50LmJ1dHRvbiAhPSAwKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5kcmFnZ2luZ09ic3RhY2xlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmdyb3VwLnJlbW92ZSh0aGlzLmRyYWdnaW5nT2JzdGFjbGVQcmV2aWV3KTtcbiAgICAgIHRoaXMuZHJhZ2dpbmdPYnN0YWNsZVByZXZpZXcgPSBudWxsO1xuXG4gICAgICB0aGlzLm1vdXNlLnggPSAoZXZlbnQub2Zmc2V0WCAvIHRoaXMuY2FudmFzLmNsaWVudFdpZHRoKSAqIDIgLSAxO1xuICAgICAgdGhpcy5tb3VzZS55ID0gLShldmVudC5vZmZzZXRZIC8gdGhpcy5jYW52YXMuY2xpZW50SGVpZ2h0KSAqIDIgKyAxO1xuXG4gICAgICB0aGlzLnJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKHRoaXMubW91c2UsIHRoaXMuY2FtZXJhKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0aW9uID0gdGhpcy5yYXljYXN0ZXIucmF5LmludGVyc2VjdFBsYW5lKEdST1VORF9QTEFORSk7XG4gICAgICBpZiAoaW50ZXJzZWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgW2NlbnRlciwgd2lkdGgsIGhlaWdodF0gPSB0aGlzLl9kaW1lbnNpb25zRnJvbVJlY3QodGhpcy5kcmFnT2Zmc2V0LCBpbnRlcnNlY3Rpb24pO1xuICAgICAgICB0aGlzLmFkZFN0YXRpY09ic3RhY2xlKGNlbnRlciwgd2lkdGgsIGhlaWdodCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmFnZ2luZ1BvaW50ID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnaW5nT2JzdGFjbGUgPSBudWxsO1xuICAgIHRoaXMucm90YXRpbmdPYnN0YWNsZSA9IG51bGw7XG4gICAgdGhpcy5jYW52YXMuY2xhc3NMaXN0LnJlbW92ZSgnZWRpdG9yLWdyYWInLCAnZWRpdG9yLWdyYWJiaW5nJyk7XG4gIH1cblxuICB1cGRhdGVTYXZlZEluZm8obmFtZSwgc2F2ZWRBdCkge1xuICAgIHRoaXMucHJldmlvdXNTYXZlZE5hbWUgPSBuYW1lIHx8IG51bGw7XG5cbiAgICBuYW1lID0gbmFtZSB8fCAnVW50aXRsZWQnO1xuICAgIHNhdmVkQXQgPSBzYXZlZEF0IHx8ICdVbnNhdmVkJztcblxuICAgIHRoaXMuc2NlbmFyaW9OYW1lRG9tLnRleHRDb250ZW50ID0gbmFtZTtcbiAgICB0aGlzLnNjZW5hcmlvTmFtZURvbS50aXRsZSA9IG5hbWU7XG4gICAgdGhpcy5zY2VuYXJpb1NhdmVkQXREb20udGV4dENvbnRlbnQgPSBzYXZlZEF0O1xuICB9XG5cbiAgX2NoYW5nZUxhbmVQcmVmZXJlbmNlKHByZWYpIHtcbiAgICB0aGlzLmxhbmVQcmVmZXJlbmNlID0gcHJlZjtcblxuICAgIGlmIChwcmVmID4gMCkge1xuICAgICAgdGhpcy5sYW5lTGVmdERvbS5jbGFzc0xpc3QuYWRkKCdpcy1vdXRsaW5lZCcpO1xuICAgICAgdGhpcy5sYW5lTGVmdERvbS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgdGhpcy5sYW5lUmlnaHREb20uY2xhc3NMaXN0LnJlbW92ZSgnaXMtb3V0bGluZWQnKTtcbiAgICAgIHRoaXMubGFuZVJpZ2h0RG9tLmNsYXNzTGlzdC5hZGQoJ2lzLXNlbGVjdGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGFuZVJpZ2h0RG9tLmNsYXNzTGlzdC5hZGQoJ2lzLW91dGxpbmVkJyk7XG4gICAgICB0aGlzLmxhbmVSaWdodERvbS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgdGhpcy5sYW5lTGVmdERvbS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1vdXRsaW5lZCcpO1xuICAgICAgdGhpcy5sYW5lTGVmdERvbS5jbGFzc0xpc3QuYWRkKCdpcy1zZWxlY3RlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVDbGlja2VkKCkge1xuICAgIGNvbnN0IG5hbWUgPSB3aW5kb3cucHJvbXB0KCdOYW1lIHlvdXIgc2NlbmFyaW86JywgdGhpcy5wcmV2aW91c1NhdmVkTmFtZSB8fCAnJyk7XG4gICAgaWYgKG5hbWUgPT09IG51bGwpIHJldHVybjtcbiAgICBpZiAobmFtZSA9PT0gJycpIHtcbiAgICAgIHdpbmRvdy5hbGVydCgnVGhlIHNjZW5hcmlvIG5hbWUgY2Fubm90IGJlIGJsYW5rLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBbc3VjY2Vzcywgc2F2ZWRBdF0gPSB0aGlzLnNjZW5hcmlvTWFuYWdlci5zYXZlU2NlbmFyaW8obmFtZSwgdGhpcy5zY2VuYXJpb1RvSlNPTigpLCBuYW1lID09PSB0aGlzLnByZXZpb3VzU2F2ZWROYW1lKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRTYXZlZEF0ID0gZm9ybWF0RGF0ZShzYXZlZEF0KTtcblxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNhdmVkSW5mbyhuYW1lLCBmb3JtYXR0ZWRTYXZlZEF0KTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpcm0oYEEgc2NlbmFyaW8gbmFtZWQgXCIke25hbWV9XCIgYWxyZWFkeSBleGlzdHMsIGxhc3Qgc2F2ZWQgJHtmb3JtYXR0ZWRTYXZlZEF0fS4gRG8geW91IHdhbnQgdG8gb3ZlcndyaXRlIGl0P2ApKSB7XG4gICAgICBbc3VjY2Vzcywgc2F2ZWRBdF0gPSB0aGlzLnNjZW5hcmlvTWFuYWdlci5zYXZlU2NlbmFyaW8obmFtZSwgdGhpcy5zY2VuYXJpb1RvSlNPTigpLCB0cnVlKTtcbiAgICAgIHRoaXMudXBkYXRlU2F2ZWRJbmZvKG5hbWUsIGZvcm1hdERhdGUoc2F2ZWRBdCkpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRDbGlja2VkKCkge1xuICAgIHRoaXMuc2NlbmFyaW9NYW5hZ2VyLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgc2hhcmVDbGlja2VkKCkge1xuICAgIHRoaXMuc2hhcmVNYW5hZ2VyLnNob3dNb2RhbCh0aGlzLnNjZW5hcmlvVG9KU09OKCkpO1xuICB9XG5cbiAgX2RpbWVuc2lvbnNGcm9tUmVjdChmcm9tLCB0bykge1xuICAgIGNvbnN0IGNlbnRlciA9IGZyb20uY2xvbmUoKS5hZGQodG8pLmRpdmlkZVNjYWxhcigyKTtcbiAgICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KDAuNSwgTWF0aC5hYnMoZnJvbS54IC0gdG8ueCkpO1xuICAgIGNvbnN0IGhlaWdodCA9IE1hdGgubWF4KDAuNSwgTWF0aC5hYnMoZnJvbS56IC0gdG8ueikpO1xuICAgIHJldHVybiBbY2VudGVyLCB3aWR0aCwgaGVpZ2h0XTtcbiAgfVxufVxuIiwiLyoqXG4gKiBAYXV0aG9yIHFpYW8gLyBodHRwczovL2dpdGh1Yi5jb20vcWlhb1xuICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbVxuICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cbiAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxuICogQGF1dGhvciBlcmljaDY2NiAvIGh0dHA6Ly9lcmljaGFpbmVzLmNvbVxuICovXG5cbi8vIFRoaXMgc2V0IG9mIGNvbnRyb2xzIHBlcmZvcm1zIG9yYml0aW5nLCBkb2xseWluZyAoem9vbWluZyksIGFuZCBwYW5uaW5nLlxuLy8gVW5saWtlIFRyYWNrYmFsbENvbnRyb2xzLCBpdCBtYWludGFpbnMgdGhlIFwidXBcIiBkaXJlY3Rpb24gb2JqZWN0LnVwICgrWSBieSBkZWZhdWx0KS5cbi8vXG4vLyAgICBPcmJpdCAtIGxlZnQgbW91c2UgLyB0b3VjaDogb25lIGZpbmdlciBtb3ZlXG4vLyAgICBab29tIC0gbWlkZGxlIG1vdXNlLCBvciBtb3VzZXdoZWVsIC8gdG91Y2g6IHR3byBmaW5nZXIgc3ByZWFkIG9yIHNxdWlzaFxuLy8gICAgUGFuIC0gcmlnaHQgbW91c2UsIG9yIGFycm93IGtleXMgLyB0b3VjaDogdGhyZWUgZmluZ2VyIHN3aXBlXG5cbmNvbnN0IE9yYml0Q29udHJvbHMgPSBmdW5jdGlvbiAoIG9iamVjdCwgZG9tRWxlbWVudCApIHtcblxuXHR0aGlzLm9iamVjdCA9IG9iamVjdDtcblxuXHR0aGlzLmRvbUVsZW1lbnQgPSAoIGRvbUVsZW1lbnQgIT09IHVuZGVmaW5lZCApID8gZG9tRWxlbWVudCA6IGRvY3VtZW50O1xuXG5cdC8vIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIHRoaXMgY29udHJvbFxuXHR0aGlzLmVuYWJsZWQgPSB0cnVlO1xuXG5cdC8vIFwidGFyZ2V0XCIgc2V0cyB0aGUgbG9jYXRpb24gb2YgZm9jdXMsIHdoZXJlIHRoZSBvYmplY3Qgb3JiaXRzIGFyb3VuZFxuXHR0aGlzLnRhcmdldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0Ly8gSG93IGZhciB5b3UgY2FuIGRvbGx5IGluIGFuZCBvdXQgKCBQZXJzcGVjdGl2ZUNhbWVyYSBvbmx5IClcblx0dGhpcy5taW5EaXN0YW5jZSA9IDA7XG5cdHRoaXMubWF4RGlzdGFuY2UgPSBJbmZpbml0eTtcblxuXHQvLyBIb3cgZmFyIHlvdSBjYW4gem9vbSBpbiBhbmQgb3V0ICggT3J0aG9ncmFwaGljQ2FtZXJhIG9ubHkgKVxuXHR0aGlzLm1pblpvb20gPSAwO1xuXHR0aGlzLm1heFpvb20gPSBJbmZpbml0eTtcblxuXHQvLyBIb3cgZmFyIHlvdSBjYW4gb3JiaXQgdmVydGljYWxseSwgdXBwZXIgYW5kIGxvd2VyIGxpbWl0cy5cblx0Ly8gUmFuZ2UgaXMgMCB0byBNYXRoLlBJIHJhZGlhbnMuXG5cdHRoaXMubWluUG9sYXJBbmdsZSA9IDA7IC8vIHJhZGlhbnNcblx0dGhpcy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSTsgLy8gcmFkaWFuc1xuXG5cdC8vIEhvdyBmYXIgeW91IGNhbiBvcmJpdCBob3Jpem9udGFsbHksIHVwcGVyIGFuZCBsb3dlciBsaW1pdHMuXG5cdC8vIElmIHNldCwgbXVzdCBiZSBhIHN1Yi1pbnRlcnZhbCBvZiB0aGUgaW50ZXJ2YWwgWyAtIE1hdGguUEksIE1hdGguUEkgXS5cblx0dGhpcy5taW5BemltdXRoQW5nbGUgPSAtIEluZmluaXR5OyAvLyByYWRpYW5zXG5cdHRoaXMubWF4QXppbXV0aEFuZ2xlID0gSW5maW5pdHk7IC8vIHJhZGlhbnNcblxuXHQvLyBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgZGFtcGluZyAoaW5lcnRpYSlcblx0Ly8gSWYgZGFtcGluZyBpcyBlbmFibGVkLCB5b3UgbXVzdCBjYWxsIGNvbnRyb2xzLnVwZGF0ZSgpIGluIHlvdXIgYW5pbWF0aW9uIGxvb3Bcblx0dGhpcy5lbmFibGVEYW1waW5nID0gZmFsc2U7XG5cdHRoaXMuZGFtcGluZ0ZhY3RvciA9IDAuMjU7XG5cblx0Ly8gVGhpcyBvcHRpb24gYWN0dWFsbHkgZW5hYmxlcyBkb2xseWluZyBpbiBhbmQgb3V0OyBsZWZ0IGFzIFwiem9vbVwiIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblx0Ly8gU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgem9vbWluZ1xuXHR0aGlzLmVuYWJsZVpvb20gPSB0cnVlO1xuXHR0aGlzLnpvb21TcGVlZCA9IDEuMDtcblxuXHQvLyBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSByb3RhdGluZ1xuXHR0aGlzLmVuYWJsZVJvdGF0ZSA9IHRydWU7XG5cdHRoaXMucm90YXRlU3BlZWQgPSAxLjA7XG5cblx0Ly8gU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgcGFubmluZ1xuXHR0aGlzLmVuYWJsZVBhbiA9IHRydWU7XG5cdHRoaXMua2V5UGFuU3BlZWQgPSA3LjA7XHQvLyBwaXhlbHMgbW92ZWQgcGVyIGFycm93IGtleSBwdXNoXG5cblx0Ly8gU2V0IHRvIHRydWUgdG8gYXV0b21hdGljYWxseSByb3RhdGUgYXJvdW5kIHRoZSB0YXJnZXRcblx0Ly8gSWYgYXV0by1yb3RhdGUgaXMgZW5hYmxlZCwgeW91IG11c3QgY2FsbCBjb250cm9scy51cGRhdGUoKSBpbiB5b3VyIGFuaW1hdGlvbiBsb29wXG5cdHRoaXMuYXV0b1JvdGF0ZSA9IGZhbHNlO1xuXHR0aGlzLmF1dG9Sb3RhdGVTcGVlZCA9IDIuMDsgLy8gMzAgc2Vjb25kcyBwZXIgcm91bmQgd2hlbiBmcHMgaXMgNjBcblxuXHQvLyBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSB1c2Ugb2YgdGhlIGtleXNcblx0dGhpcy5lbmFibGVLZXlzID0gdHJ1ZTtcblxuXHQvLyBUaGUgZm91ciBhcnJvdyBrZXlzXG5cdHRoaXMua2V5cyA9IHsgTEVGVDogMzcsIFVQOiAzOCwgUklHSFQ6IDM5LCBCT1RUT006IDQwIH07XG5cblx0Ly8gTW91c2UgYnV0dG9uc1xuXHR0aGlzLm1vdXNlQnV0dG9ucyA9IHsgT1JCSVQ6IFRIUkVFLk1PVVNFLkxFRlQsIFpPT006IFRIUkVFLk1PVVNFLk1JRERMRSwgUEFOOiBUSFJFRS5NT1VTRS5SSUdIVCB9O1xuXG5cdC8vIGZvciByZXNldFxuXHR0aGlzLnRhcmdldDAgPSB0aGlzLnRhcmdldC5jbG9uZSgpO1xuXHR0aGlzLnBvc2l0aW9uMCA9IHRoaXMub2JqZWN0LnBvc2l0aW9uLmNsb25lKCk7XG5cdHRoaXMuem9vbTAgPSB0aGlzLm9iamVjdC56b29tO1xuXG5cdC8vXG5cdC8vIHB1YmxpYyBtZXRob2RzXG5cdC8vXG5cblx0dGhpcy5nZXRQb2xhckFuZ2xlID0gZnVuY3Rpb24gKCkge1xuXG5cdFx0cmV0dXJuIHNwaGVyaWNhbC5waGk7XG5cblx0fTtcblxuXHR0aGlzLmdldEF6aW11dGhhbEFuZ2xlID0gZnVuY3Rpb24gKCkge1xuXG5cdFx0cmV0dXJuIHNwaGVyaWNhbC50aGV0YTtcblxuXHR9O1xuXG5cdHRoaXMuc2F2ZVN0YXRlID0gZnVuY3Rpb24gKCkge1xuXG5cdFx0c2NvcGUudGFyZ2V0MC5jb3B5KCBzY29wZS50YXJnZXQgKTtcblx0XHRzY29wZS5wb3NpdGlvbjAuY29weSggc2NvcGUub2JqZWN0LnBvc2l0aW9uICk7XG5cdFx0c2NvcGUuem9vbTAgPSBzY29wZS5vYmplY3Quem9vbTtcblxuXHR9O1xuXG5cdHRoaXMucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG5cblx0XHRzY29wZS50YXJnZXQuY29weSggc2NvcGUudGFyZ2V0MCApO1xuXHRcdHNjb3BlLm9iamVjdC5wb3NpdGlvbi5jb3B5KCBzY29wZS5wb3NpdGlvbjAgKTtcblx0XHRzY29wZS5vYmplY3Quem9vbSA9IHNjb3BlLnpvb20wO1xuXG5cdFx0c2NvcGUub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHRzY29wZS5kaXNwYXRjaEV2ZW50KCBjaGFuZ2VFdmVudCApO1xuXG5cdFx0c2NvcGUudXBkYXRlKCk7XG5cblx0XHRzdGF0ZSA9IFNUQVRFLk5PTkU7XG5cblx0fTtcblxuICB0aGlzLnJvdGF0ZUxlZnQgPSBmdW5jdGlvbihhbmdsZSkge1xuICAgIHJvdGF0ZUxlZnQoYW5nbGUpO1xuICB9XG5cblx0Ly8gdGhpcyBtZXRob2QgaXMgZXhwb3NlZCwgYnV0IHBlcmhhcHMgaXQgd291bGQgYmUgYmV0dGVyIGlmIHdlIGNhbiBtYWtlIGl0IHByaXZhdGUuLi5cblx0dGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG5cblx0XHR2YXIgb2Zmc2V0ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblxuXHRcdC8vIHNvIGNhbWVyYS51cCBpcyB0aGUgb3JiaXQgYXhpc1xuXHRcdHZhciBxdWF0ID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKS5zZXRGcm9tVW5pdFZlY3RvcnMoIG9iamVjdC51cCwgbmV3IFRIUkVFLlZlY3RvcjMoIDAsIDEsIDAgKSApO1xuXHRcdHZhciBxdWF0SW52ZXJzZSA9IHF1YXQuY2xvbmUoKS5pbnZlcnNlKCk7XG5cblx0XHR2YXIgbGFzdFBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcblx0XHR2YXIgbGFzdFF1YXRlcm5pb24gPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuXG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcblxuXHRcdFx0dmFyIHBvc2l0aW9uID0gc2NvcGUub2JqZWN0LnBvc2l0aW9uO1xuXG5cdFx0XHRvZmZzZXQuY29weSggcG9zaXRpb24gKS5zdWIoIHNjb3BlLnRhcmdldCApO1xuXG5cdFx0XHQvLyByb3RhdGUgb2Zmc2V0IHRvIFwieS1heGlzLWlzLXVwXCIgc3BhY2Vcblx0XHRcdG9mZnNldC5hcHBseVF1YXRlcm5pb24oIHF1YXQgKTtcblxuXHRcdFx0Ly8gYW5nbGUgZnJvbSB6LWF4aXMgYXJvdW5kIHktYXhpc1xuXHRcdFx0c3BoZXJpY2FsLnNldEZyb21WZWN0b3IzKCBvZmZzZXQgKTtcblxuXHRcdFx0aWYgKCBzY29wZS5hdXRvUm90YXRlICYmIHN0YXRlID09PSBTVEFURS5OT05FICkge1xuXG5cdFx0XHRcdHJvdGF0ZUxlZnQoIGdldEF1dG9Sb3RhdGlvbkFuZ2xlKCkgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRzcGhlcmljYWwudGhldGEgKz0gc3BoZXJpY2FsRGVsdGEudGhldGE7XG5cdFx0XHRzcGhlcmljYWwucGhpICs9IHNwaGVyaWNhbERlbHRhLnBoaTtcblxuXHRcdFx0Ly8gcmVzdHJpY3QgdGhldGEgdG8gYmUgYmV0d2VlbiBkZXNpcmVkIGxpbWl0c1xuXHRcdFx0c3BoZXJpY2FsLnRoZXRhID0gTWF0aC5tYXgoIHNjb3BlLm1pbkF6aW11dGhBbmdsZSwgTWF0aC5taW4oIHNjb3BlLm1heEF6aW11dGhBbmdsZSwgc3BoZXJpY2FsLnRoZXRhICkgKTtcblxuXHRcdFx0Ly8gcmVzdHJpY3QgcGhpIHRvIGJlIGJldHdlZW4gZGVzaXJlZCBsaW1pdHNcblx0XHRcdHNwaGVyaWNhbC5waGkgPSBNYXRoLm1heCggc2NvcGUubWluUG9sYXJBbmdsZSwgTWF0aC5taW4oIHNjb3BlLm1heFBvbGFyQW5nbGUsIHNwaGVyaWNhbC5waGkgKSApO1xuXG5cdFx0XHRzcGhlcmljYWwubWFrZVNhZmUoKTtcblxuXG5cdFx0XHRzcGhlcmljYWwucmFkaXVzICo9IHNjYWxlO1xuXG5cdFx0XHQvLyByZXN0cmljdCByYWRpdXMgdG8gYmUgYmV0d2VlbiBkZXNpcmVkIGxpbWl0c1xuXHRcdFx0c3BoZXJpY2FsLnJhZGl1cyA9IE1hdGgubWF4KCBzY29wZS5taW5EaXN0YW5jZSwgTWF0aC5taW4oIHNjb3BlLm1heERpc3RhbmNlLCBzcGhlcmljYWwucmFkaXVzICkgKTtcblxuXHRcdFx0Ly8gbW92ZSB0YXJnZXQgdG8gcGFubmVkIGxvY2F0aW9uXG5cdFx0XHRzY29wZS50YXJnZXQuYWRkKCBwYW5PZmZzZXQgKTtcblxuXHRcdFx0b2Zmc2V0LnNldEZyb21TcGhlcmljYWwoIHNwaGVyaWNhbCApO1xuXG5cdFx0XHQvLyByb3RhdGUgb2Zmc2V0IGJhY2sgdG8gXCJjYW1lcmEtdXAtdmVjdG9yLWlzLXVwXCIgc3BhY2Vcblx0XHRcdG9mZnNldC5hcHBseVF1YXRlcm5pb24oIHF1YXRJbnZlcnNlICk7XG5cblx0XHRcdHBvc2l0aW9uLmNvcHkoIHNjb3BlLnRhcmdldCApLmFkZCggb2Zmc2V0ICk7XG5cblx0XHRcdHNjb3BlLm9iamVjdC5sb29rQXQoIHNjb3BlLnRhcmdldCApO1xuXG5cdFx0XHRpZiAoIHNjb3BlLmVuYWJsZURhbXBpbmcgPT09IHRydWUgKSB7XG5cblx0XHRcdFx0c3BoZXJpY2FsRGVsdGEudGhldGEgKj0gKCAxIC0gc2NvcGUuZGFtcGluZ0ZhY3RvciApO1xuXHRcdFx0XHRzcGhlcmljYWxEZWx0YS5waGkgKj0gKCAxIC0gc2NvcGUuZGFtcGluZ0ZhY3RvciApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHNwaGVyaWNhbERlbHRhLnNldCggMCwgMCwgMCApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHNjYWxlID0gMTtcblx0XHRcdHBhbk9mZnNldC5zZXQoIDAsIDAsIDAgKTtcblxuXHRcdFx0Ly8gdXBkYXRlIGNvbmRpdGlvbiBpczpcblx0XHRcdC8vIG1pbihjYW1lcmEgZGlzcGxhY2VtZW50LCBjYW1lcmEgcm90YXRpb24gaW4gcmFkaWFucyleMiA+IEVQU1xuXHRcdFx0Ly8gdXNpbmcgc21hbGwtYW5nbGUgYXBwcm94aW1hdGlvbiBjb3MoeC8yKSA9IDEgLSB4XjIgLyA4XG5cblx0XHRcdGlmICggem9vbUNoYW5nZWQgfHxcblx0XHRcdFx0bGFzdFBvc2l0aW9uLmRpc3RhbmNlVG9TcXVhcmVkKCBzY29wZS5vYmplY3QucG9zaXRpb24gKSA+IEVQUyB8fFxuXHRcdFx0XHQ4ICogKCAxIC0gbGFzdFF1YXRlcm5pb24uZG90KCBzY29wZS5vYmplY3QucXVhdGVybmlvbiApICkgPiBFUFMgKSB7XG5cblx0XHRcdFx0c2NvcGUuZGlzcGF0Y2hFdmVudCggY2hhbmdlRXZlbnQgKTtcblxuXHRcdFx0XHRsYXN0UG9zaXRpb24uY29weSggc2NvcGUub2JqZWN0LnBvc2l0aW9uICk7XG5cdFx0XHRcdGxhc3RRdWF0ZXJuaW9uLmNvcHkoIHNjb3BlLm9iamVjdC5xdWF0ZXJuaW9uICk7XG5cdFx0XHRcdHpvb21DaGFuZ2VkID0gZmFsc2U7XG5cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXG5cdFx0fTtcblxuXHR9KCk7XG5cblx0dGhpcy5kaXNwb3NlID0gZnVuY3Rpb24gKCkge1xuXG5cdFx0c2NvcGUuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAnY29udGV4dG1lbnUnLCBvbkNvbnRleHRNZW51LCBmYWxzZSApO1xuXHRcdHNjb3BlLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ21vdXNlZG93bicsIG9uTW91c2VEb3duLCBmYWxzZSApO1xuXHRcdHNjb3BlLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ3doZWVsJywgb25Nb3VzZVdoZWVsLCBmYWxzZSApO1xuXG5cdFx0c2NvcGUuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCwgZmFsc2UgKTtcblx0XHRzY29wZS5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICd0b3VjaGVuZCcsIG9uVG91Y2hFbmQsIGZhbHNlICk7XG5cdFx0c2NvcGUuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUsIGZhbHNlICk7XG5cblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCAnbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUsIGZhbHNlICk7XG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ21vdXNldXAnLCBvbk1vdXNlVXAsIGZhbHNlICk7XG5cblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2tleWRvd24nLCBvbktleURvd24sIGZhbHNlICk7XG5cblx0XHQvL3Njb3BlLmRpc3BhdGNoRXZlbnQoIHsgdHlwZTogJ2Rpc3Bvc2UnIH0gKTsgLy8gc2hvdWxkIHRoaXMgYmUgYWRkZWQgaGVyZT9cblxuXHR9O1xuXG5cdC8vXG5cdC8vIGludGVybmFsc1xuXHQvL1xuXG5cdHZhciBzY29wZSA9IHRoaXM7XG5cblx0dmFyIGNoYW5nZUV2ZW50ID0geyB0eXBlOiAnY2hhbmdlJyB9O1xuXHR2YXIgc3RhcnRFdmVudCA9IHsgdHlwZTogJ3N0YXJ0JyB9O1xuXHR2YXIgZW5kRXZlbnQgPSB7IHR5cGU6ICdlbmQnIH07XG5cblx0dmFyIFNUQVRFID0geyBOT05FOiAtIDEsIFJPVEFURTogMCwgRE9MTFk6IDEsIFBBTjogMiwgVE9VQ0hfUk9UQVRFOiAzLCBUT1VDSF9ET0xMWTogNCwgVE9VQ0hfUEFOOiA1IH07XG5cblx0dmFyIHN0YXRlID0gU1RBVEUuTk9ORTtcblxuXHR2YXIgRVBTID0gMC4wMDAwMDE7XG5cblx0Ly8gY3VycmVudCBwb3NpdGlvbiBpbiBzcGhlcmljYWwgY29vcmRpbmF0ZXNcblx0dmFyIHNwaGVyaWNhbCA9IG5ldyBUSFJFRS5TcGhlcmljYWwoKTtcblx0dmFyIHNwaGVyaWNhbERlbHRhID0gbmV3IFRIUkVFLlNwaGVyaWNhbCgpO1xuXG5cdHZhciBzY2FsZSA9IDE7XG5cdHZhciBwYW5PZmZzZXQgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuXHR2YXIgem9vbUNoYW5nZWQgPSBmYWxzZTtcblxuXHR2YXIgcm90YXRlU3RhcnQgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXHR2YXIgcm90YXRlRW5kID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblx0dmFyIHJvdGF0ZURlbHRhID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuXHR2YXIgcGFuU3RhcnQgPSBuZXcgVEhSRUUuVmVjdG9yMigpO1xuXHR2YXIgcGFuRW5kID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblx0dmFyIHBhbkRlbHRhID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuXHR2YXIgZG9sbHlTdGFydCA9IG5ldyBUSFJFRS5WZWN0b3IyKCk7XG5cdHZhciBkb2xseUVuZCA9IG5ldyBUSFJFRS5WZWN0b3IyKCk7XG5cdHZhciBkb2xseURlbHRhID0gbmV3IFRIUkVFLlZlY3RvcjIoKTtcblxuXHRmdW5jdGlvbiBnZXRBdXRvUm90YXRpb25BbmdsZSgpIHtcblxuXHRcdHJldHVybiAyICogTWF0aC5QSSAvIDYwIC8gNjAgKiBzY29wZS5hdXRvUm90YXRlU3BlZWQ7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIGdldFpvb21TY2FsZSgpIHtcblxuXHRcdHJldHVybiBNYXRoLnBvdyggMC45NSwgc2NvcGUuem9vbVNwZWVkICk7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIHJvdGF0ZUxlZnQoIGFuZ2xlICkge1xuXG5cdFx0c3BoZXJpY2FsRGVsdGEudGhldGEgLT0gYW5nbGU7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIHJvdGF0ZVVwKCBhbmdsZSApIHtcblxuXHRcdHNwaGVyaWNhbERlbHRhLnBoaSAtPSBhbmdsZTtcblxuXHR9XG5cblx0dmFyIHBhbkxlZnQgPSBmdW5jdGlvbiAoKSB7XG5cblx0XHR2YXIgdiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0XHRyZXR1cm4gZnVuY3Rpb24gcGFuTGVmdCggZGlzdGFuY2UsIG9iamVjdE1hdHJpeCApIHtcblxuXHRcdFx0di5zZXRGcm9tTWF0cml4Q29sdW1uKCBvYmplY3RNYXRyaXgsIDAgKTsgLy8gZ2V0IFggY29sdW1uIG9mIG9iamVjdE1hdHJpeFxuXHRcdFx0di5tdWx0aXBseVNjYWxhciggLSBkaXN0YW5jZSApO1xuXG5cdFx0XHRwYW5PZmZzZXQuYWRkKCB2ICk7XG5cblx0XHR9O1xuXG5cdH0oKTtcblxuXHR2YXIgcGFuVXAgPSBmdW5jdGlvbiAoKSB7XG5cblx0XHR2YXIgdiA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0XHRyZXR1cm4gZnVuY3Rpb24gcGFuVXAoIGRpc3RhbmNlLCBvYmplY3RNYXRyaXggKSB7XG5cblx0XHRcdHYuc2V0RnJvbU1hdHJpeENvbHVtbiggb2JqZWN0TWF0cml4LCAxICk7IC8vIGdldCBZIGNvbHVtbiBvZiBvYmplY3RNYXRyaXhcblx0XHRcdHYubXVsdGlwbHlTY2FsYXIoIGRpc3RhbmNlICk7XG5cblx0XHRcdHBhbk9mZnNldC5hZGQoIHYgKTtcblxuXHRcdH07XG5cblx0fSgpO1xuXG5cdC8vIGRlbHRhWCBhbmQgZGVsdGFZIGFyZSBpbiBwaXhlbHM7IHJpZ2h0IGFuZCBkb3duIGFyZSBwb3NpdGl2ZVxuXHR2YXIgcGFuID0gZnVuY3Rpb24gKCkge1xuXG5cdFx0dmFyIG9mZnNldCA9IG5ldyBUSFJFRS5WZWN0b3IzKCk7XG5cblx0XHRyZXR1cm4gZnVuY3Rpb24gcGFuKCBkZWx0YVgsIGRlbHRhWSApIHtcblxuXHRcdFx0dmFyIGVsZW1lbnQgPSBzY29wZS5kb21FbGVtZW50ID09PSBkb2N1bWVudCA/IHNjb3BlLmRvbUVsZW1lbnQuYm9keSA6IHNjb3BlLmRvbUVsZW1lbnQ7XG5cblx0XHRcdGlmICggc2NvcGUub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmEgKSB7XG5cblx0XHRcdFx0Ly8gcGVyc3BlY3RpdmVcblx0XHRcdFx0dmFyIHBvc2l0aW9uID0gc2NvcGUub2JqZWN0LnBvc2l0aW9uO1xuXHRcdFx0XHRvZmZzZXQuY29weSggcG9zaXRpb24gKS5zdWIoIHNjb3BlLnRhcmdldCApO1xuXHRcdFx0XHR2YXIgdGFyZ2V0RGlzdGFuY2UgPSBvZmZzZXQubGVuZ3RoKCk7XG5cblx0XHRcdFx0Ly8gaGFsZiBvZiB0aGUgZm92IGlzIGNlbnRlciB0byB0b3Agb2Ygc2NyZWVuXG5cdFx0XHRcdHRhcmdldERpc3RhbmNlICo9IE1hdGgudGFuKCAoIHNjb3BlLm9iamVjdC5mb3YgLyAyICkgKiBNYXRoLlBJIC8gMTgwLjAgKTtcblxuXHRcdFx0XHQvLyB3ZSBhY3R1YWxseSBkb24ndCB1c2Ugc2NyZWVuV2lkdGgsIHNpbmNlIHBlcnNwZWN0aXZlIGNhbWVyYSBpcyBmaXhlZCB0byBzY3JlZW4gaGVpZ2h0XG5cdFx0XHRcdHBhbkxlZnQoIDIgKiBkZWx0YVggKiB0YXJnZXREaXN0YW5jZSAvIGVsZW1lbnQuY2xpZW50SGVpZ2h0LCBzY29wZS5vYmplY3QubWF0cml4ICk7XG5cdFx0XHRcdHBhblVwKCAyICogZGVsdGFZICogdGFyZ2V0RGlzdGFuY2UgLyBlbGVtZW50LmNsaWVudEhlaWdodCwgc2NvcGUub2JqZWN0Lm1hdHJpeCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBzY29wZS5vYmplY3QuaXNPcnRob2dyYXBoaWNDYW1lcmEgKSB7XG5cblx0XHRcdFx0Ly8gb3J0aG9ncmFwaGljXG5cdFx0XHRcdHBhbkxlZnQoIGRlbHRhWCAqICggc2NvcGUub2JqZWN0LnJpZ2h0IC0gc2NvcGUub2JqZWN0LmxlZnQgKSAvIHNjb3BlLm9iamVjdC56b29tIC8gZWxlbWVudC5jbGllbnRXaWR0aCwgc2NvcGUub2JqZWN0Lm1hdHJpeCApO1xuXHRcdFx0XHRwYW5VcCggZGVsdGFZICogKCBzY29wZS5vYmplY3QudG9wIC0gc2NvcGUub2JqZWN0LmJvdHRvbSApIC8gc2NvcGUub2JqZWN0Lnpvb20gLyBlbGVtZW50LmNsaWVudEhlaWdodCwgc2NvcGUub2JqZWN0Lm1hdHJpeCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdC8vIGNhbWVyYSBuZWl0aGVyIG9ydGhvZ3JhcGhpYyBub3IgcGVyc3BlY3RpdmVcblx0XHRcdFx0Y29uc29sZS53YXJuKCAnV0FSTklORzogT3JiaXRDb250cm9scy5qcyBlbmNvdW50ZXJlZCBhbiB1bmtub3duIGNhbWVyYSB0eXBlIC0gcGFuIGRpc2FibGVkLicgKTtcblx0XHRcdFx0c2NvcGUuZW5hYmxlUGFuID0gZmFsc2U7XG5cblx0XHRcdH1cblxuXHRcdH07XG5cblx0fSgpO1xuXG5cdGZ1bmN0aW9uIGRvbGx5SW4oIGRvbGx5U2NhbGUgKSB7XG5cblx0XHRpZiAoIHNjb3BlLm9iamVjdC5pc1BlcnNwZWN0aXZlQ2FtZXJhICkge1xuXG5cdFx0XHRzY2FsZSAvPSBkb2xseVNjYWxlO1xuXG5cdFx0fSBlbHNlIGlmICggc2NvcGUub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhICkge1xuXG5cdFx0XHRzY29wZS5vYmplY3Quem9vbSA9IE1hdGgubWF4KCBzY29wZS5taW5ab29tLCBNYXRoLm1pbiggc2NvcGUubWF4Wm9vbSwgc2NvcGUub2JqZWN0Lnpvb20gKiBkb2xseVNjYWxlICkgKTtcblx0XHRcdHNjb3BlLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0XHR6b29tQ2hhbmdlZCA9IHRydWU7XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBkb2xseS96b29tIGRpc2FibGVkLicgKTtcblx0XHRcdHNjb3BlLmVuYWJsZVpvb20gPSBmYWxzZTtcblxuXHRcdH1cblxuXHR9XG5cblx0ZnVuY3Rpb24gZG9sbHlPdXQoIGRvbGx5U2NhbGUgKSB7XG5cblx0XHRpZiAoIHNjb3BlLm9iamVjdC5pc1BlcnNwZWN0aXZlQ2FtZXJhICkge1xuXG5cdFx0XHRzY2FsZSAqPSBkb2xseVNjYWxlO1xuXG5cdFx0fSBlbHNlIGlmICggc2NvcGUub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhICkge1xuXG5cdFx0XHRzY29wZS5vYmplY3Quem9vbSA9IE1hdGgubWF4KCBzY29wZS5taW5ab29tLCBNYXRoLm1pbiggc2NvcGUubWF4Wm9vbSwgc2NvcGUub2JqZWN0Lnpvb20gLyBkb2xseVNjYWxlICkgKTtcblx0XHRcdHNjb3BlLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0XHR6b29tQ2hhbmdlZCA9IHRydWU7XG5cblx0XHR9IGVsc2Uge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBkb2xseS96b29tIGRpc2FibGVkLicgKTtcblx0XHRcdHNjb3BlLmVuYWJsZVpvb20gPSBmYWxzZTtcblxuXHRcdH1cblxuXHR9XG5cblx0Ly9cblx0Ly8gZXZlbnQgY2FsbGJhY2tzIC0gdXBkYXRlIHRoZSBvYmplY3Qgc3RhdGVcblx0Ly9cblxuXHRmdW5jdGlvbiBoYW5kbGVNb3VzZURvd25Sb3RhdGUoIGV2ZW50ICkge1xuXG5cdFx0Ly9jb25zb2xlLmxvZyggJ2hhbmRsZU1vdXNlRG93blJvdGF0ZScgKTtcblxuXHRcdHJvdGF0ZVN0YXJ0LnNldCggZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSApO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVNb3VzZURvd25Eb2xseSggZXZlbnQgKSB7XG5cblx0XHQvL2NvbnNvbGUubG9nKCAnaGFuZGxlTW91c2VEb3duRG9sbHknICk7XG5cblx0XHRkb2xseVN0YXJ0LnNldCggZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSApO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVNb3VzZURvd25QYW4oIGV2ZW50ICkge1xuXG5cdFx0Ly9jb25zb2xlLmxvZyggJ2hhbmRsZU1vdXNlRG93blBhbicgKTtcblxuXHRcdHBhblN0YXJ0LnNldCggZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSApO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVNb3VzZU1vdmVSb3RhdGUoIGV2ZW50ICkge1xuXG5cdFx0Ly9jb25zb2xlLmxvZyggJ2hhbmRsZU1vdXNlTW92ZVJvdGF0ZScgKTtcblxuXHRcdHJvdGF0ZUVuZC5zZXQoIGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkgKTtcblx0XHRyb3RhdGVEZWx0YS5zdWJWZWN0b3JzKCByb3RhdGVFbmQsIHJvdGF0ZVN0YXJ0ICk7XG5cblx0XHR2YXIgZWxlbWVudCA9IHNjb3BlLmRvbUVsZW1lbnQgPT09IGRvY3VtZW50ID8gc2NvcGUuZG9tRWxlbWVudC5ib2R5IDogc2NvcGUuZG9tRWxlbWVudDtcblxuXHRcdC8vIHJvdGF0aW5nIGFjcm9zcyB3aG9sZSBzY3JlZW4gZ29lcyAzNjAgZGVncmVlcyBhcm91bmRcblx0XHRyb3RhdGVMZWZ0KCAyICogTWF0aC5QSSAqIHJvdGF0ZURlbHRhLnggLyBlbGVtZW50LmNsaWVudFdpZHRoICogc2NvcGUucm90YXRlU3BlZWQgKTtcblxuXHRcdC8vIHJvdGF0aW5nIHVwIGFuZCBkb3duIGFsb25nIHdob2xlIHNjcmVlbiBhdHRlbXB0cyB0byBnbyAzNjAsIGJ1dCBsaW1pdGVkIHRvIDE4MFxuXHRcdHJvdGF0ZVVwKCAyICogTWF0aC5QSSAqIHJvdGF0ZURlbHRhLnkgLyBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjb3BlLnJvdGF0ZVNwZWVkICk7XG5cblx0XHRyb3RhdGVTdGFydC5jb3B5KCByb3RhdGVFbmQgKTtcblxuXHRcdHNjb3BlLnVwZGF0ZSgpO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVNb3VzZU1vdmVEb2xseSggZXZlbnQgKSB7XG5cblx0XHQvL2NvbnNvbGUubG9nKCAnaGFuZGxlTW91c2VNb3ZlRG9sbHknICk7XG5cblx0XHRkb2xseUVuZC5zZXQoIGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkgKTtcblxuXHRcdGRvbGx5RGVsdGEuc3ViVmVjdG9ycyggZG9sbHlFbmQsIGRvbGx5U3RhcnQgKTtcblxuXHRcdGlmICggZG9sbHlEZWx0YS55ID4gMCApIHtcblxuXHRcdFx0ZG9sbHlJbiggZ2V0Wm9vbVNjYWxlKCkgKTtcblxuXHRcdH0gZWxzZSBpZiAoIGRvbGx5RGVsdGEueSA8IDAgKSB7XG5cblx0XHRcdGRvbGx5T3V0KCBnZXRab29tU2NhbGUoKSApO1xuXG5cdFx0fVxuXG5cdFx0ZG9sbHlTdGFydC5jb3B5KCBkb2xseUVuZCApO1xuXG5cdFx0c2NvcGUudXBkYXRlKCk7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZVBhbiggZXZlbnQgKSB7XG5cblx0XHQvL2NvbnNvbGUubG9nKCAnaGFuZGxlTW91c2VNb3ZlUGFuJyApO1xuXG5cdFx0cGFuRW5kLnNldCggZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSApO1xuXG5cdFx0cGFuRGVsdGEuc3ViVmVjdG9ycyggcGFuRW5kLCBwYW5TdGFydCApO1xuXG5cdFx0cGFuKCBwYW5EZWx0YS54LCBwYW5EZWx0YS55ICk7XG5cblx0XHRwYW5TdGFydC5jb3B5KCBwYW5FbmQgKTtcblxuXHRcdHNjb3BlLnVwZGF0ZSgpO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKCBldmVudCApIHtcblxuXHRcdC8vIGNvbnNvbGUubG9nKCAnaGFuZGxlTW91c2VVcCcgKTtcblxuXHR9XG5cblx0ZnVuY3Rpb24gaGFuZGxlTW91c2VXaGVlbCggZXZlbnQgKSB7XG5cblx0XHQvLyBjb25zb2xlLmxvZyggJ2hhbmRsZU1vdXNlV2hlZWwnICk7XG5cblx0XHRpZiAoIGV2ZW50LmRlbHRhWSA8IDAgKSB7XG5cblx0XHRcdGRvbGx5T3V0KCBnZXRab29tU2NhbGUoKSApO1xuXG5cdFx0fSBlbHNlIGlmICggZXZlbnQuZGVsdGFZID4gMCApIHtcblxuXHRcdFx0ZG9sbHlJbiggZ2V0Wm9vbVNjYWxlKCkgKTtcblxuXHRcdH1cblxuXHRcdHNjb3BlLnVwZGF0ZSgpO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVLZXlEb3duKCBldmVudCApIHtcblxuXHRcdC8vY29uc29sZS5sb2coICdoYW5kbGVLZXlEb3duJyApO1xuXG5cdFx0c3dpdGNoICggZXZlbnQua2V5Q29kZSApIHtcblxuXHRcdFx0Y2FzZSBzY29wZS5rZXlzLlVQOlxuXHRcdFx0XHRwYW4oIDAsIHNjb3BlLmtleVBhblNwZWVkICk7XG5cdFx0XHRcdHNjb3BlLnVwZGF0ZSgpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBzY29wZS5rZXlzLkJPVFRPTTpcblx0XHRcdFx0cGFuKCAwLCAtIHNjb3BlLmtleVBhblNwZWVkICk7XG5cdFx0XHRcdHNjb3BlLnVwZGF0ZSgpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBzY29wZS5rZXlzLkxFRlQ6XG5cdFx0XHRcdHBhbiggc2NvcGUua2V5UGFuU3BlZWQsIDAgKTtcblx0XHRcdFx0c2NvcGUudXBkYXRlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIHNjb3BlLmtleXMuUklHSFQ6XG5cdFx0XHRcdHBhbiggLSBzY29wZS5rZXlQYW5TcGVlZCwgMCApO1xuXHRcdFx0XHRzY29wZS51cGRhdGUoKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHR9XG5cblx0fVxuXG5cdGZ1bmN0aW9uIGhhbmRsZVRvdWNoU3RhcnRSb3RhdGUoIGV2ZW50ICkge1xuXG5cdFx0Ly9jb25zb2xlLmxvZyggJ2hhbmRsZVRvdWNoU3RhcnRSb3RhdGUnICk7XG5cblx0XHRyb3RhdGVTdGFydC5zZXQoIGV2ZW50LnRvdWNoZXNbIDAgXS5wYWdlWCwgZXZlbnQudG91Y2hlc1sgMCBdLnBhZ2VZICk7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIGhhbmRsZVRvdWNoU3RhcnREb2xseSggZXZlbnQgKSB7XG5cblx0XHQvL2NvbnNvbGUubG9nKCAnaGFuZGxlVG91Y2hTdGFydERvbGx5JyApO1xuXG5cdFx0dmFyIGR4ID0gZXZlbnQudG91Y2hlc1sgMCBdLnBhZ2VYIC0gZXZlbnQudG91Y2hlc1sgMSBdLnBhZ2VYO1xuXHRcdHZhciBkeSA9IGV2ZW50LnRvdWNoZXNbIDAgXS5wYWdlWSAtIGV2ZW50LnRvdWNoZXNbIDEgXS5wYWdlWTtcblxuXHRcdHZhciBkaXN0YW5jZSA9IE1hdGguc3FydCggZHggKiBkeCArIGR5ICogZHkgKTtcblxuXHRcdGRvbGx5U3RhcnQuc2V0KCAwLCBkaXN0YW5jZSApO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVUb3VjaFN0YXJ0UGFuKCBldmVudCApIHtcblxuXHRcdC8vY29uc29sZS5sb2coICdoYW5kbGVUb3VjaFN0YXJ0UGFuJyApO1xuXG5cdFx0cGFuU3RhcnQuc2V0KCBldmVudC50b3VjaGVzWyAwIF0ucGFnZVgsIGV2ZW50LnRvdWNoZXNbIDAgXS5wYWdlWSApO1xuXG5cdH1cblxuXHRmdW5jdGlvbiBoYW5kbGVUb3VjaE1vdmVSb3RhdGUoIGV2ZW50ICkge1xuXG5cdFx0Ly9jb25zb2xlLmxvZyggJ2hhbmRsZVRvdWNoTW92ZVJvdGF0ZScgKTtcblxuXHRcdHJvdGF0ZUVuZC5zZXQoIGV2ZW50LnRvdWNoZXNbIDAgXS5wYWdlWCwgZXZlbnQudG91Y2hlc1sgMCBdLnBhZ2VZICk7XG5cdFx0cm90YXRlRGVsdGEuc3ViVmVjdG9ycyggcm90YXRlRW5kLCByb3RhdGVTdGFydCApO1xuXG5cdFx0dmFyIGVsZW1lbnQgPSBzY29wZS5kb21FbGVtZW50ID09PSBkb2N1bWVudCA/IHNjb3BlLmRvbUVsZW1lbnQuYm9keSA6IHNjb3BlLmRvbUVsZW1lbnQ7XG5cblx0XHQvLyByb3RhdGluZyBhY3Jvc3Mgd2hvbGUgc2NyZWVuIGdvZXMgMzYwIGRlZ3JlZXMgYXJvdW5kXG5cdFx0cm90YXRlTGVmdCggMiAqIE1hdGguUEkgKiByb3RhdGVEZWx0YS54IC8gZWxlbWVudC5jbGllbnRXaWR0aCAqIHNjb3BlLnJvdGF0ZVNwZWVkICk7XG5cblx0XHQvLyByb3RhdGluZyB1cCBhbmQgZG93biBhbG9uZyB3aG9sZSBzY3JlZW4gYXR0ZW1wdHMgdG8gZ28gMzYwLCBidXQgbGltaXRlZCB0byAxODBcblx0XHRyb3RhdGVVcCggMiAqIE1hdGguUEkgKiByb3RhdGVEZWx0YS55IC8gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY29wZS5yb3RhdGVTcGVlZCApO1xuXG5cdFx0cm90YXRlU3RhcnQuY29weSggcm90YXRlRW5kICk7XG5cblx0XHRzY29wZS51cGRhdGUoKTtcblxuXHR9XG5cblx0ZnVuY3Rpb24gaGFuZGxlVG91Y2hNb3ZlRG9sbHkoIGV2ZW50ICkge1xuXG5cdFx0Ly9jb25zb2xlLmxvZyggJ2hhbmRsZVRvdWNoTW92ZURvbGx5JyApO1xuXG5cdFx0dmFyIGR4ID0gZXZlbnQudG91Y2hlc1sgMCBdLnBhZ2VYIC0gZXZlbnQudG91Y2hlc1sgMSBdLnBhZ2VYO1xuXHRcdHZhciBkeSA9IGV2ZW50LnRvdWNoZXNbIDAgXS5wYWdlWSAtIGV2ZW50LnRvdWNoZXNbIDEgXS5wYWdlWTtcblxuXHRcdHZhciBkaXN0YW5jZSA9IE1hdGguc3FydCggZHggKiBkeCArIGR5ICogZHkgKTtcblxuXHRcdGRvbGx5RW5kLnNldCggMCwgZGlzdGFuY2UgKTtcblxuXHRcdGRvbGx5RGVsdGEuc3ViVmVjdG9ycyggZG9sbHlFbmQsIGRvbGx5U3RhcnQgKTtcblxuXHRcdGlmICggZG9sbHlEZWx0YS55ID4gMCApIHtcblxuXHRcdFx0ZG9sbHlPdXQoIGdldFpvb21TY2FsZSgpICk7XG5cblx0XHR9IGVsc2UgaWYgKCBkb2xseURlbHRhLnkgPCAwICkge1xuXG5cdFx0XHRkb2xseUluKCBnZXRab29tU2NhbGUoKSApO1xuXG5cdFx0fVxuXG5cdFx0ZG9sbHlTdGFydC5jb3B5KCBkb2xseUVuZCApO1xuXG5cdFx0c2NvcGUudXBkYXRlKCk7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIGhhbmRsZVRvdWNoTW92ZVBhbiggZXZlbnQgKSB7XG5cblx0XHQvL2NvbnNvbGUubG9nKCAnaGFuZGxlVG91Y2hNb3ZlUGFuJyApO1xuXG5cdFx0cGFuRW5kLnNldCggZXZlbnQudG91Y2hlc1sgMCBdLnBhZ2VYLCBldmVudC50b3VjaGVzWyAwIF0ucGFnZVkgKTtcblxuXHRcdHBhbkRlbHRhLnN1YlZlY3RvcnMoIHBhbkVuZCwgcGFuU3RhcnQgKTtcblxuXHRcdHBhbiggcGFuRGVsdGEueCwgcGFuRGVsdGEueSApO1xuXG5cdFx0cGFuU3RhcnQuY29weSggcGFuRW5kICk7XG5cblx0XHRzY29wZS51cGRhdGUoKTtcblxuXHR9XG5cblx0ZnVuY3Rpb24gaGFuZGxlVG91Y2hFbmQoIGV2ZW50ICkge1xuXG5cdFx0Ly9jb25zb2xlLmxvZyggJ2hhbmRsZVRvdWNoRW5kJyApO1xuXG5cdH1cblxuXHQvL1xuXHQvLyBldmVudCBoYW5kbGVycyAtIEZTTTogbGlzdGVuIGZvciBldmVudHMgYW5kIHJlc2V0IHN0YXRlXG5cdC8vXG5cblx0ZnVuY3Rpb24gb25Nb3VzZURvd24oIGV2ZW50ICkge1xuXG5cdFx0aWYgKCBzY29wZS5lbmFibGVkID09PSBmYWxzZSApIHJldHVybjtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRzd2l0Y2ggKCBldmVudC5idXR0b24gKSB7XG5cblx0XHRcdGNhc2Ugc2NvcGUubW91c2VCdXR0b25zLk9SQklUOlxuXG5cdFx0XHRcdGlmICggc2NvcGUuZW5hYmxlUm90YXRlID09PSBmYWxzZSApIHJldHVybjtcblxuXHRcdFx0XHRoYW5kbGVNb3VzZURvd25Sb3RhdGUoIGV2ZW50ICk7XG5cblx0XHRcdFx0c3RhdGUgPSBTVEFURS5ST1RBVEU7XG5cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2Ugc2NvcGUubW91c2VCdXR0b25zLlpPT006XG5cblx0XHRcdFx0aWYgKCBzY29wZS5lbmFibGVab29tID09PSBmYWxzZSApIHJldHVybjtcblxuXHRcdFx0XHRoYW5kbGVNb3VzZURvd25Eb2xseSggZXZlbnQgKTtcblxuXHRcdFx0XHRzdGF0ZSA9IFNUQVRFLkRPTExZO1xuXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIHNjb3BlLm1vdXNlQnV0dG9ucy5QQU46XG5cblx0XHRcdFx0aWYgKCBzY29wZS5lbmFibGVQYW4gPT09IGZhbHNlICkgcmV0dXJuO1xuXG5cdFx0XHRcdGhhbmRsZU1vdXNlRG93blBhbiggZXZlbnQgKTtcblxuXHRcdFx0XHRzdGF0ZSA9IFNUQVRFLlBBTjtcblxuXHRcdFx0XHRicmVhaztcblxuXHRcdH1cblxuXHRcdGlmICggc3RhdGUgIT09IFNUQVRFLk5PTkUgKSB7XG5cblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSwgZmFsc2UgKTtcblx0XHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICdtb3VzZXVwJywgb25Nb3VzZVVwLCBmYWxzZSApO1xuXG5cdFx0XHRzY29wZS5kaXNwYXRjaEV2ZW50KCBzdGFydEV2ZW50ICk7XG5cblx0XHR9XG5cblx0fVxuXG5cdGZ1bmN0aW9uIG9uTW91c2VNb3ZlKCBldmVudCApIHtcblxuXHRcdGlmICggc2NvcGUuZW5hYmxlZCA9PT0gZmFsc2UgKSByZXR1cm47XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0c3dpdGNoICggc3RhdGUgKSB7XG5cblx0XHRcdGNhc2UgU1RBVEUuUk9UQVRFOlxuXG5cdFx0XHRcdGlmICggc2NvcGUuZW5hYmxlUm90YXRlID09PSBmYWxzZSApIHJldHVybjtcblxuXHRcdFx0XHRoYW5kbGVNb3VzZU1vdmVSb3RhdGUoIGV2ZW50ICk7XG5cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgU1RBVEUuRE9MTFk6XG5cblx0XHRcdFx0aWYgKCBzY29wZS5lbmFibGVab29tID09PSBmYWxzZSApIHJldHVybjtcblxuXHRcdFx0XHRoYW5kbGVNb3VzZU1vdmVEb2xseSggZXZlbnQgKTtcblxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBTVEFURS5QQU46XG5cblx0XHRcdFx0aWYgKCBzY29wZS5lbmFibGVQYW4gPT09IGZhbHNlICkgcmV0dXJuO1xuXG5cdFx0XHRcdGhhbmRsZU1vdXNlTW92ZVBhbiggZXZlbnQgKTtcblxuXHRcdFx0XHRicmVhaztcblxuXHRcdH1cblxuXHR9XG5cblx0ZnVuY3Rpb24gb25Nb3VzZVVwKCBldmVudCApIHtcblxuXHRcdGlmICggc2NvcGUuZW5hYmxlZCA9PT0gZmFsc2UgKSByZXR1cm47XG5cblx0XHRoYW5kbGVNb3VzZVVwKCBldmVudCApO1xuXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlLCBmYWxzZSApO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoICdtb3VzZXVwJywgb25Nb3VzZVVwLCBmYWxzZSApO1xuXG5cdFx0c2NvcGUuZGlzcGF0Y2hFdmVudCggZW5kRXZlbnQgKTtcblxuXHRcdHN0YXRlID0gU1RBVEUuTk9ORTtcblxuXHR9XG5cblx0ZnVuY3Rpb24gb25Nb3VzZVdoZWVsKCBldmVudCApIHtcblxuXHRcdGlmICggc2NvcGUuZW5hYmxlZCA9PT0gZmFsc2UgfHwgc2NvcGUuZW5hYmxlWm9vbSA9PT0gZmFsc2UgfHwgKCBzdGF0ZSAhPT0gU1RBVEUuTk9ORSAmJiBzdGF0ZSAhPT0gU1RBVEUuUk9UQVRFICkgKSByZXR1cm47XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0aGFuZGxlTW91c2VXaGVlbCggZXZlbnQgKTtcblxuXHRcdHNjb3BlLmRpc3BhdGNoRXZlbnQoIHN0YXJ0RXZlbnQgKTsgLy8gbm90IHN1cmUgd2h5IHRoZXNlIGFyZSBoZXJlLi4uXG5cdFx0c2NvcGUuZGlzcGF0Y2hFdmVudCggZW5kRXZlbnQgKTtcblxuXHR9XG5cblx0ZnVuY3Rpb24gb25LZXlEb3duKCBldmVudCApIHtcblxuXHRcdGlmICggc2NvcGUuZW5hYmxlZCA9PT0gZmFsc2UgfHwgc2NvcGUuZW5hYmxlS2V5cyA9PT0gZmFsc2UgfHwgc2NvcGUuZW5hYmxlUGFuID09PSBmYWxzZSApIHJldHVybjtcblxuXHRcdGhhbmRsZUtleURvd24oIGV2ZW50ICk7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIG9uVG91Y2hTdGFydCggZXZlbnQgKSB7XG5cblx0XHRpZiAoIHNjb3BlLmVuYWJsZWQgPT09IGZhbHNlICkgcmV0dXJuO1xuXG5cdFx0c3dpdGNoICggZXZlbnQudG91Y2hlcy5sZW5ndGggKSB7XG5cblx0XHRcdGNhc2UgMTpcdC8vIG9uZS1maW5nZXJlZCB0b3VjaDogcm90YXRlXG5cblx0XHRcdFx0aWYgKCBzY29wZS5lbmFibGVSb3RhdGUgPT09IGZhbHNlICkgcmV0dXJuO1xuXG5cdFx0XHRcdGhhbmRsZVRvdWNoU3RhcnRSb3RhdGUoIGV2ZW50ICk7XG5cblx0XHRcdFx0c3RhdGUgPSBTVEFURS5UT1VDSF9ST1RBVEU7XG5cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMjpcdC8vIHR3by1maW5nZXJlZCB0b3VjaDogZG9sbHlcblxuXHRcdFx0XHRpZiAoIHNjb3BlLmVuYWJsZVpvb20gPT09IGZhbHNlICkgcmV0dXJuO1xuXG5cdFx0XHRcdGhhbmRsZVRvdWNoU3RhcnREb2xseSggZXZlbnQgKTtcblxuXHRcdFx0XHRzdGF0ZSA9IFNUQVRFLlRPVUNIX0RPTExZO1xuXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDM6IC8vIHRocmVlLWZpbmdlcmVkIHRvdWNoOiBwYW5cblxuXHRcdFx0XHRpZiAoIHNjb3BlLmVuYWJsZVBhbiA9PT0gZmFsc2UgKSByZXR1cm47XG5cblx0XHRcdFx0aGFuZGxlVG91Y2hTdGFydFBhbiggZXZlbnQgKTtcblxuXHRcdFx0XHRzdGF0ZSA9IFNUQVRFLlRPVUNIX1BBTjtcblxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblxuXHRcdFx0XHRzdGF0ZSA9IFNUQVRFLk5PTkU7XG5cblx0XHR9XG5cblx0XHRpZiAoIHN0YXRlICE9PSBTVEFURS5OT05FICkge1xuXG5cdFx0XHRzY29wZS5kaXNwYXRjaEV2ZW50KCBzdGFydEV2ZW50ICk7XG5cblx0XHR9XG5cblx0fVxuXG5cdGZ1bmN0aW9uIG9uVG91Y2hNb3ZlKCBldmVudCApIHtcblxuXHRcdGlmICggc2NvcGUuZW5hYmxlZCA9PT0gZmFsc2UgKSByZXR1cm47XG5cblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0c3dpdGNoICggZXZlbnQudG91Y2hlcy5sZW5ndGggKSB7XG5cblx0XHRcdGNhc2UgMTogLy8gb25lLWZpbmdlcmVkIHRvdWNoOiByb3RhdGVcblxuXHRcdFx0XHRpZiAoIHNjb3BlLmVuYWJsZVJvdGF0ZSA9PT0gZmFsc2UgKSByZXR1cm47XG5cdFx0XHRcdGlmICggc3RhdGUgIT09IFNUQVRFLlRPVUNIX1JPVEFURSApIHJldHVybjsgLy8gaXMgdGhpcyBuZWVkZWQ/Li4uXG5cblx0XHRcdFx0aGFuZGxlVG91Y2hNb3ZlUm90YXRlKCBldmVudCApO1xuXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDI6IC8vIHR3by1maW5nZXJlZCB0b3VjaDogZG9sbHlcblxuXHRcdFx0XHRpZiAoIHNjb3BlLmVuYWJsZVpvb20gPT09IGZhbHNlICkgcmV0dXJuO1xuXHRcdFx0XHRpZiAoIHN0YXRlICE9PSBTVEFURS5UT1VDSF9ET0xMWSApIHJldHVybjsgLy8gaXMgdGhpcyBuZWVkZWQ/Li4uXG5cblx0XHRcdFx0aGFuZGxlVG91Y2hNb3ZlRG9sbHkoIGV2ZW50ICk7XG5cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMzogLy8gdGhyZWUtZmluZ2VyZWQgdG91Y2g6IHBhblxuXG5cdFx0XHRcdGlmICggc2NvcGUuZW5hYmxlUGFuID09PSBmYWxzZSApIHJldHVybjtcblx0XHRcdFx0aWYgKCBzdGF0ZSAhPT0gU1RBVEUuVE9VQ0hfUEFOICkgcmV0dXJuOyAvLyBpcyB0aGlzIG5lZWRlZD8uLi5cblxuXHRcdFx0XHRoYW5kbGVUb3VjaE1vdmVQYW4oIGV2ZW50ICk7XG5cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cblx0XHRcdFx0c3RhdGUgPSBTVEFURS5OT05FO1xuXG5cdFx0fVxuXG5cdH1cblxuXHRmdW5jdGlvbiBvblRvdWNoRW5kKCBldmVudCApIHtcblxuXHRcdGlmICggc2NvcGUuZW5hYmxlZCA9PT0gZmFsc2UgKSByZXR1cm47XG5cblx0XHRoYW5kbGVUb3VjaEVuZCggZXZlbnQgKTtcblxuXHRcdHNjb3BlLmRpc3BhdGNoRXZlbnQoIGVuZEV2ZW50ICk7XG5cblx0XHRzdGF0ZSA9IFNUQVRFLk5PTkU7XG5cblx0fVxuXG5cdGZ1bmN0aW9uIG9uQ29udGV4dE1lbnUoIGV2ZW50ICkge1xuXG5cdFx0aWYgKCBzY29wZS5lbmFibGVkID09PSBmYWxzZSApIHJldHVybjtcblxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0fVxuXG5cdC8vXG5cblx0c2NvcGUuZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCAnY29udGV4dG1lbnUnLCBvbkNvbnRleHRNZW51LCBmYWxzZSApO1xuXG5cdHNjb3BlLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ21vdXNlZG93bicsIG9uTW91c2VEb3duLCBmYWxzZSApO1xuXHRzY29wZS5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoICd3aGVlbCcsIG9uTW91c2VXaGVlbCwgZmFsc2UgKTtcblxuXHRzY29wZS5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoICd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0LCBmYWxzZSApO1xuXHRzY29wZS5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoICd0b3VjaGVuZCcsIG9uVG91Y2hFbmQsIGZhbHNlICk7XG5cdHNjb3BlLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlLCBmYWxzZSApO1xuXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAna2V5ZG93bicsIG9uS2V5RG93biwgZmFsc2UgKTtcblxuXHQvLyBmb3JjZSBhbiB1cGRhdGUgYXQgc3RhcnRcblxuXHR0aGlzLnVwZGF0ZSgpO1xuXG59O1xuXG5PcmJpdENvbnRyb2xzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFRIUkVFLkV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUgKTtcbk9yYml0Q29udHJvbHMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gT3JiaXRDb250cm9scztcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIE9yYml0Q29udHJvbHMucHJvdG90eXBlLCB7XG5cblx0Y2VudGVyOiB7XG5cblx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnT3JiaXRDb250cm9sczogLmNlbnRlciBoYXMgYmVlbiByZW5hbWVkIHRvIC50YXJnZXQnICk7XG5cdFx0XHRyZXR1cm4gdGhpcy50YXJnZXQ7XG5cblx0XHR9XG5cblx0fSxcblxuXHQvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5cblx0bm9ab29tOiB7XG5cblx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnT3JiaXRDb250cm9sczogLm5vWm9vbSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmVuYWJsZVpvb20gaW5zdGVhZC4nICk7XG5cdFx0XHRyZXR1cm4gISB0aGlzLmVuYWJsZVpvb207XG5cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdPcmJpdENvbnRyb2xzOiAubm9ab29tIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuZW5hYmxlWm9vbSBpbnN0ZWFkLicgKTtcblx0XHRcdHRoaXMuZW5hYmxlWm9vbSA9ICEgdmFsdWU7XG5cblx0XHR9XG5cblx0fSxcblxuXHRub1JvdGF0ZToge1xuXG5cdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ09yYml0Q29udHJvbHM6IC5ub1JvdGF0ZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmVuYWJsZVJvdGF0ZSBpbnN0ZWFkLicgKTtcblx0XHRcdHJldHVybiAhIHRoaXMuZW5hYmxlUm90YXRlO1xuXG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnT3JiaXRDb250cm9sczogLm5vUm90YXRlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuZW5hYmxlUm90YXRlIGluc3RlYWQuJyApO1xuXHRcdFx0dGhpcy5lbmFibGVSb3RhdGUgPSAhIHZhbHVlO1xuXG5cdFx0fVxuXG5cdH0sXG5cblx0bm9QYW46IHtcblxuXHRcdGdldDogZnVuY3Rpb24gKCkge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdPcmJpdENvbnRyb2xzOiAubm9QYW4gaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5lbmFibGVQYW4gaW5zdGVhZC4nICk7XG5cdFx0XHRyZXR1cm4gISB0aGlzLmVuYWJsZVBhbjtcblxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ09yYml0Q29udHJvbHM6IC5ub1BhbiBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmVuYWJsZVBhbiBpbnN0ZWFkLicgKTtcblx0XHRcdHRoaXMuZW5hYmxlUGFuID0gISB2YWx1ZTtcblxuXHRcdH1cblxuXHR9LFxuXG5cdG5vS2V5czoge1xuXG5cdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ09yYml0Q29udHJvbHM6IC5ub0tleXMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5lbmFibGVLZXlzIGluc3RlYWQuJyApO1xuXHRcdFx0cmV0dXJuICEgdGhpcy5lbmFibGVLZXlzO1xuXG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnT3JiaXRDb250cm9sczogLm5vS2V5cyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmVuYWJsZUtleXMgaW5zdGVhZC4nICk7XG5cdFx0XHR0aGlzLmVuYWJsZUtleXMgPSAhIHZhbHVlO1xuXG5cdFx0fVxuXG5cdH0sXG5cblx0c3RhdGljTW92aW5nOiB7XG5cblx0XHRnZXQ6IGZ1bmN0aW9uICgpIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnT3JiaXRDb250cm9sczogLnN0YXRpY01vdmluZyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmVuYWJsZURhbXBpbmcgaW5zdGVhZC4nICk7XG5cdFx0XHRyZXR1cm4gISB0aGlzLmVuYWJsZURhbXBpbmc7XG5cblx0XHR9LFxuXG5cdFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xuXG5cdFx0XHRjb25zb2xlLndhcm4oICdPcmJpdENvbnRyb2xzOiAuc3RhdGljTW92aW5nIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuZW5hYmxlRGFtcGluZyBpbnN0ZWFkLicgKTtcblx0XHRcdHRoaXMuZW5hYmxlRGFtcGluZyA9ICEgdmFsdWU7XG5cblx0XHR9XG5cblx0fSxcblxuXHRkeW5hbWljRGFtcGluZ0ZhY3Rvcjoge1xuXG5cdFx0Z2V0OiBmdW5jdGlvbiAoKSB7XG5cblx0XHRcdGNvbnNvbGUud2FybiggJ09yYml0Q29udHJvbHM6IC5keW5hbWljRGFtcGluZ0ZhY3RvciBoYXMgYmVlbiByZW5hbWVkLiBVc2UgLmRhbXBpbmdGYWN0b3IgaW5zdGVhZC4nICk7XG5cdFx0XHRyZXR1cm4gdGhpcy5kYW1waW5nRmFjdG9yO1xuXG5cdFx0fSxcblxuXHRcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcblxuXHRcdFx0Y29uc29sZS53YXJuKCAnT3JiaXRDb250cm9sczogLmR5bmFtaWNEYW1waW5nRmFjdG9yIGhhcyBiZWVuIHJlbmFtZWQuIFVzZSAuZGFtcGluZ0ZhY3RvciBpbnN0ZWFkLicgKTtcblx0XHRcdHRoaXMuZGFtcGluZ0ZhY3RvciA9IHZhbHVlO1xuXG5cdFx0fVxuXG5cdH1cblxufSApO1xuXG5leHBvcnQgZGVmYXVsdCBPcmJpdENvbnRyb2xzO1xuIiwiY29uc3QgZ3JvdW5kUGxhbmUgPSBuZXcgVEhSRUUuUGxhbmUobmV3IFRIUkVFLlZlY3RvcjMoMCwgMSwgMCkpO1xubGV0IHBhbm5pbmcgPSBmYWxzZTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9wRG93bkNhbWVyYUNvbnRyb2xzIHtcbiAgY29uc3RydWN0b3IoZG9tRWxlbWVudCwgY2FtZXJhKSB7XG4gICAgdGhpcy5kb21FbGVtZW50ID0gZG9tRWxlbWVudDtcbiAgICB0aGlzLmNhbWVyYSA9IGNhbWVyYTtcbiAgICB0aGlzLmVuYWJsZVBhbm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5taW5BbHRpdHVkZSA9IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcbiAgICB0aGlzLm1heEFsdGl0dWRlID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuXG4gICAgdGhpcy5tb3VzZURvd24gPSB0aGlzLm1vdXNlRG93bi5iaW5kKHRoaXMpO1xuICAgIHRoaXMubW91c2VNb3ZlID0gdGhpcy5tb3VzZU1vdmUuYmluZCh0aGlzKTtcbiAgICB0aGlzLm1vdXNlVXAgPSB0aGlzLm1vdXNlVXAuYmluZCh0aGlzKTtcbiAgICB0aGlzLndoZWVsID0gdGhpcy53aGVlbC5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMubW91c2VEb3duKTtcbiAgICB0aGlzLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmUpO1xuICAgIHRoaXMuZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5tb3VzZVVwKTtcbiAgICB0aGlzLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLndoZWVsKTtcbiAgfVxuXG4gIHJlc2V0KHByZXZDYW1lcmEpIHtcbiAgICBjb25zdCBsb29rQXQgPSBuZXcgVEhSRUUuVmVjdG9yMygwLCAwLCAtMSk7XG4gICAgbG9va0F0LmFwcGx5UXVhdGVybmlvbihwcmV2Q2FtZXJhLnF1YXRlcm5pb24pO1xuXG4gICAgY29uc3QgcmF5ID0gbmV3IFRIUkVFLlJheShwcmV2Q2FtZXJhLnBvc2l0aW9uLCBsb29rQXQpO1xuICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IHJheS5pbnRlcnNlY3RQbGFuZShncm91bmRQbGFuZSk7XG5cbiAgICBpZiAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICB0aGlzLmNhbWVyYS5wb3NpdGlvbi5zZXQoaW50ZXJzZWN0aW9uLngsIDUwLCBpbnRlcnNlY3Rpb24ueik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnkgPSA1MDtcbiAgICB9XG5cbiAgICB0aGlzLmNhbWVyYS5yb3RhdGlvbi5zZXQoLU1hdGguUEkgLyAyLCAwLCAwKTtcbiAgfVxuXG4gIG1vdXNlRG93bihldmVudCkge1xuICAgIGlmICghdGhpcy5lbmFibGVkIHx8ICF0aGlzLmVuYWJsZVBhbm5pbmcgfHwgZXZlbnQuYnV0dG9uICE9IDIpIHJldHVybjtcbiAgICBwYW5uaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIG1vdXNlTW92ZShldmVudCkge1xuICAgIGlmIChwYW5uaW5nKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZSA9IDIgKiB0aGlzLmNhbWVyYS5wb3NpdGlvbi55ICogTWF0aC50YW4oKHRoaXMuY2FtZXJhLmZvdiAvIDIpICogTWF0aC5QSSAvIDE4MCkgLyB0aGlzLmRvbUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgdGhpcy5jYW1lcmEucG9zaXRpb24ueCAtPSBkaXN0YW5jZSAqIGV2ZW50Lm1vdmVtZW50WDtcbiAgICAgIHRoaXMuY2FtZXJhLnBvc2l0aW9uLnogLT0gZGlzdGFuY2UgKiBldmVudC5tb3ZlbWVudFk7XG4gICAgfVxuICB9XG5cbiAgbW91c2VVcChldmVudCkge1xuICAgIGlmIChldmVudC5idXR0b24gIT0gMikgcmV0dXJuO1xuICAgIHBhbm5pbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHdoZWVsKGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQpIHJldHVybjtcblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLmNhbWVyYS5wb3NpdGlvbi55ID0gTWF0aC5tYXgodGhpcy5taW5BbHRpdHVkZSwgTWF0aC5taW4odGhpcy5tYXhBbHRpdHVkZSwgdGhpcy5jYW1lcmEucG9zaXRpb24ueSAqIE1hdGgucG93KDAuOTk1LCAtZXZlbnQuZGVsdGFZKSkpO1xuICB9XG59XG4iLCJpbXBvcnQgQ2FyIGZyb20gXCIuLi9waHlzaWNzL0Nhci5qc1wiO1xuXG5jb25zdCBNUFNfVE9fTVBIID0gMi4yMzY5NDtcbmNvbnN0IE1FVEVSU19UT19GRUVUID0gMy4yODA4NDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGFzaGJvYXJkIHtcbiAgY29uc3RydWN0b3IoY2FyKSB7XG4gICAgdGhpcy5jYXIgPSBjYXI7XG4gICAgdGhpcy51bml0cyA9ICdtZXRyaWMnO1xuXG4gICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykge1xuICAgICAgdGhpcy5mZXRjaERvbUVsZW1lbnRzLmNhbGwodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKVxuICAgICAgICAgIHRoaXMuZmV0Y2hEb21FbGVtZW50cy5jYWxsKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hEb21FbGVtZW50cygpIHtcbiAgICB0aGlzLndoZWVsRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3doZWVsJyk7XG4gICAgdGhpcy53aGVlbFBpZURvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aGVlbC1waWUnKTtcbiAgICB0aGlzLndoZWVsUGllTGVmdERvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aGVlbC1waWUtbGVmdCcpO1xuICAgIHRoaXMud2hlZWxQaWVSaWdodERvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3aGVlbC1waWUtcmlnaHQnKTtcbiAgICB0aGlzLmdlYXJEb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VhcicpO1xuICAgIHRoaXMuZ2FzRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhcycpO1xuICAgIHRoaXMuYnJha2VEb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnJha2UnKTtcbiAgICB0aGlzLnNwZWVkRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVkJyk7XG4gICAgdGhpcy5zdGF0aW9uRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0YXRpb24nKTtcbiAgICB0aGlzLmxhdGl0dWRlRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xhdGl0dWRlJyk7XG4gICAgdGhpcy5wbGFuVGltZURvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbGFuLXRpbWUnKTtcbiAgICB0aGlzLmVsYXBzZWRUaW1lRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VsYXBzZWQtdGltZScpO1xuXG4gICAgdGhpcy5zcGVlZFVuaXRzRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwZWVkLXVuaXRzJyk7XG4gICAgdGhpcy5zdGF0aW9uVW5pdHNEb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGlvbi11bml0cycpO1xuICAgIHRoaXMubGF0aXR1ZGVVbml0c0RvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXRpdHVkZS11bml0cycpO1xuXG4gICAgW3RoaXMuc3BlZWRVbml0c0RvbSwgdGhpcy5zdGF0aW9uVW5pdHNEb20sIHRoaXMubGF0aXR1ZGVVbml0c0RvbV0uZm9yRWFjaChlbCA9PiB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50ID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVVbml0cygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVVbml0cygpIHtcbiAgICBsZXQgc3BlZWRVbml0cztcbiAgICBsZXQgZGlzdGFuY2VVbml0cztcblxuICAgIGlmICh0aGlzLnVuaXRzID09ICdtZXRyaWMnKSB7XG4gICAgICB0aGlzLnVuaXRzID0gJ2ltcGVyaWFsJztcbiAgICAgIHNwZWVkVW5pdHMgPSAnbXBoJztcbiAgICAgIGRpc3RhbmNlVW5pdHMgPSAnZmVldCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudW5pdHMgPSAnbWV0cmljJztcbiAgICAgIHNwZWVkVW5pdHMgPSAnbS9zJztcbiAgICAgIGRpc3RhbmNlVW5pdHMgPSAnbWV0ZXJzJztcbiAgICB9XG5cbiAgICB0aGlzLnNwZWVkVW5pdHNEb20udGV4dENvbnRlbnQgPSBzcGVlZFVuaXRzO1xuICAgIHRoaXMuc3RhdGlvblVuaXRzRG9tLnRleHRDb250ZW50ID0gZGlzdGFuY2VVbml0cztcbiAgICB0aGlzLmxhdGl0dWRlVW5pdHNEb20udGV4dENvbnRlbnQgPSBkaXN0YW5jZVVuaXRzO1xuICB9XG5cbiAgdXBkYXRlUGxhblRpbWUocGxhblRpbWUpIHtcbiAgICBpZiAoIXRoaXMud2hlZWxEb20pIHJldHVybjtcblxuICAgIHRoaXMucGxhblRpbWVEb20udGV4dENvbnRlbnQgPSBwbGFuVGltZSAhPT0gbnVsbCA/IChwbGFuVGltZSkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogMyB9KSA6ICfigJQnO1xuICB9XG5cbiAgdXBkYXRlKGNvbnRyb2xzLCBzcGVlZCwgc3RhdGlvbiwgbGF0aXR1ZGUsIGVsYXBzZWRUaW1lLCBwbGFuVGltZSkge1xuICAgIGlmICghdGhpcy53aGVlbERvbSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgd2hlZWxUdXJuID0gTWF0aC5jbGFtcCh0aGlzLmNhci53aGVlbEFuZ2xlIC8gQ2FyLk1BWF9XSEVFTF9BTkdMRSAqIDAuOTUsIC0xLCArMSk7XG5cbiAgICB0aGlzLndoZWVsRG9tLnN0eWxlLnRyYW5zZm9ybSA9IGByb3RhdGUoJHt3aGVlbFR1cm59dHVybilgO1xuXG4gICAgaWYgKHdoZWVsVHVybiA+PSAwKSB7XG4gICAgICB0aGlzLndoZWVsUGllUmlnaHREb20uc3R5bGUudHJhbnNmb3JtID0gYHJvdGF0ZSgke3doZWVsVHVybn10dXJuKWA7XG5cbiAgICAgIGlmICh3aGVlbFR1cm4gPD0gMC41KSB7XG4gICAgICAgIHRoaXMud2hlZWxQaWVEb20uc3R5bGUuY2xpcFBhdGggPSBcImluc2V0KDAgMCAwIDUwJSlcIjtcbiAgICAgICAgdGhpcy53aGVlbFBpZUxlZnREb20uc3R5bGUudHJhbnNmb3JtID0gXCJyb3RhdGUoMClcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud2hlZWxQaWVEb20uc3R5bGUuY2xpcFBhdGggPSBcImluc2V0KDAgMCAwIDApXCI7XG4gICAgICAgIHRoaXMud2hlZWxQaWVMZWZ0RG9tLnN0eWxlLnRyYW5zZm9ybSA9IFwicm90YXRlKDAuNXR1cm4pXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2hlZWxQaWVSaWdodERvbS5zdHlsZS50cmFuc2Zvcm0gPSBgcm90YXRlKCR7MC41ICsgd2hlZWxUdXJufXR1cm4pYDtcblxuICAgICAgaWYgKHdoZWVsVHVybiA+PSAtMC41KSB7XG4gICAgICAgIHRoaXMud2hlZWxQaWVEb20uc3R5bGUuY2xpcFBhdGggPSBcImluc2V0KDAgNTAlIDAgMClcIjtcbiAgICAgICAgdGhpcy53aGVlbFBpZUxlZnREb20uc3R5bGUudHJhbnNmb3JtID0gXCJyb3RhdGUoMC41dHVybilcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud2hlZWxQaWVEb20uc3R5bGUuY2xpcFBhdGggPSBcImluc2V0KDAgMCAwIDApXCI7XG4gICAgICAgIHRoaXMud2hlZWxQaWVMZWZ0RG9tLnN0eWxlLnRyYW5zZm9ybSA9IFwicm90YXRlKDApXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5nZWFyRG9tLmlubmVyVGV4dCA9IGNvbnRyb2xzLmdhcyA8IDAgPyAnUicgOiAnRCc7XG4gICAgdGhpcy5icmFrZURvbS5zdHlsZS5jbGlwUGF0aCA9IGBpbnNldCg1MCUgNTAlIDAgJHs1MCAtIGNvbnRyb2xzLmJyYWtlICogMjV9JSlgO1xuICAgIHRoaXMuZ2FzRG9tLnN0eWxlLmNsaXBQYXRoID0gYGluc2V0KDUwJSAkezUwIC0gTWF0aC5hYnMoY29udHJvbHMuZ2FzKSAqIDI1fSUgMCA1MCUpYDtcblxuICAgIGlmICh0aGlzLnVuaXRzID09ICdpbXBlcmlhbCcpIHtcbiAgICAgIHNwZWVkICo9IE1QU19UT19NUEg7XG4gICAgICBzdGF0aW9uID0gc3RhdGlvbiAhPT0gbnVsbCA/IHN0YXRpb24gKiBNRVRFUlNfVE9fRkVFVCA6IG51bGw7XG4gICAgICBsYXRpdHVkZSA9IGxhdGl0dWRlICE9PSBudWxsID8gbGF0aXR1ZGUgKiBNRVRFUlNfVE9fRkVFVCA6IG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGxhdGl0dWRlVGV4dCA9IGxhdGl0dWRlICE9PSBudWxsID8gbGF0aXR1ZGUudG9GaXhlZCgyKSA6ICfigJQnO1xuICAgIGlmIChsYXRpdHVkZVRleHQgPT0gJy0wLjAwJykgbGF0aXR1ZGVUZXh0ID0gJzAuMDAnO1xuXG4gICAgdGhpcy5zcGVlZERvbS50ZXh0Q29udGVudCA9IHNwZWVkLnRvRml4ZWQoMSk7XG4gICAgdGhpcy5zdGF0aW9uRG9tLnRleHRDb250ZW50ID0gc3RhdGlvbiAhPT0gbnVsbCA/IHN0YXRpb24udG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMSwgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAxIH0pIDogJ+KAlCc7XG4gICAgdGhpcy5sYXRpdHVkZURvbS50ZXh0Q29udGVudCA9IGxhdGl0dWRlVGV4dDtcbiAgICB0aGlzLnVwZGF0ZVBsYW5UaW1lKHBsYW5UaW1lKTtcblxuICAgIGxldCBtaW5zID0gTWF0aC5mbG9vcihlbGFwc2VkVGltZSAvIDYwKTtcbiAgICBsZXQgc2Vjb25kcyA9IGVsYXBzZWRUaW1lICUgNjA7XG5cbiAgICBpZiAobWlucyA9PSAwKSB7XG4gICAgICB0aGlzLmVsYXBzZWRUaW1lRG9tLnRleHRDb250ZW50ID0gc2Vjb25kcy50b0ZpeGVkKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2Vjb25kcyA8IDEwKVxuICAgICAgICBzZWNvbmRzID0gJzAnICsgc2Vjb25kcy50b0ZpeGVkKDEpO1xuICAgICAgZWxzZVxuICAgICAgICBzZWNvbmRzID0gc2Vjb25kcy50b0ZpeGVkKDEpO1xuXG4gICAgICB0aGlzLmVsYXBzZWRUaW1lRG9tLnRleHRDb250ZW50ID0gYCR7bWluc306JHtzZWNvbmRzfWA7XG4gICAgfVxuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBSb2FkTGF0dGljZSB7XG4gIGNvbnN0cnVjdG9yKGxhbmVQYXRoLCBsYXR0aWNlU3RhcnRTdGF0aW9uLCBjb25maWcpIHtcbiAgICBjb25zdCBzdGF0aW9uSW50ZXJ2YWwgPSBjb25maWcuc3BhdGlhbEhvcml6b24gLyBjb25maWcubGF0dGljZS5udW1TdGF0aW9ucztcbiAgICBjb25zdCBjZW50ZXJsaW5lID0gbGFuZVBhdGguc2FtcGxlU3RhdGlvbnMobGF0dGljZVN0YXJ0U3RhdGlvbiwgY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMsIHN0YXRpb25JbnRlcnZhbCk7XG4gICAgY29uc3QgbGF0dGljZSA9IG5ldyBBcnJheShjZW50ZXJsaW5lLmxlbmd0aCk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5mbG9vcihjb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgLyAyKTtcblxuICAgIGZvciAobGV0IHMgPSAwOyBzIDwgY2VudGVybGluZS5sZW5ndGg7IHMrKykge1xuICAgICAgY29uc3Qgc2FtcGxlID0gY2VudGVybGluZVtzXTtcbiAgICAgIGNvbnN0IGxhdGl0dWRlcyA9IGxhdHRpY2Vbc10gPSBuZXcgQXJyYXkoY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzKTtcblxuICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBjb25maWcubGF0dGljZS5udW1MYXRpdHVkZXM7IGwrKykge1xuICAgICAgICBjb25zdCBsYXRpdHVkZSA9IChsIC0gb2Zmc2V0KSAvIG9mZnNldCAqIGNvbmZpZy5yb2FkV2lkdGggLyAyO1xuICAgICAgICBjb25zdCByb3QgPSBzYW1wbGUucm90O1xuICAgICAgICBjb25zdCBwb3MgPSBUSFJFRS5WZWN0b3IyLmZyb21BbmdsZShyb3QgKyBNYXRoLlBJIC8gMikubXVsdGlwbHlTY2FsYXIobGF0aXR1ZGUpLmFkZChzYW1wbGUucG9zKTtcbiAgICAgICAgY29uc3QgY3VydiA9IHNhbXBsZS5jdXJ2ID09IDAgPyAwIDogMSAvICgxIC8gc2FtcGxlLmN1cnYgLSBsYXRpdHVkZSk7XG5cbiAgICAgICAgbGF0aXR1ZGVzW2xdID0geyBwb3MsIHJvdCwgY3VydiB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGF0dGljZSA9IGxhdHRpY2U7XG4gIH1cbn1cbiIsImNvbnN0IE9CU1RBQ0xFX1ZFUlRFWF9TSEFERVIgPSBgI3ZlcnNpb24gMzAwIGVzXG51bmlmb3JtIG1hdDMgeGZvcm07XG5pbiB2ZWMyIHBvc2l0aW9uO1xuXG52b2lkIG1haW4odm9pZCkge1xuICBnbF9Qb3NpdGlvbiA9IHZlYzQoKHhmb3JtICogdmVjMyhwb3NpdGlvbiwgMSkpLnh5LCAwLCAxKTtcbn1cbmA7XG5cbmNvbnN0IE9CU1RBQ0xFX0tFUk5FTCA9IGBcbiAgdmVjNCBrZXJuZWwoKSB7XG4gICAgcmV0dXJuIHZlYzQoMSwgMCwgMCwgMSk7XG4gIH1cbmA7XG5cbmxldCBvYnN0YWNsZVZlcnRpY2VzO1xubGV0IG9ic3RhY2xlWGZvcm07XG5cbi8vIERyYXcgb2JzdGFjbGUgdHJpYW5nbGVzIHRvIFhZLXNwYWNlIG9ic3RhY2xlIGdyaWRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtlcm5lbDogT0JTVEFDTEVfS0VSTkVMLFxuICAgICAgdmVydGV4U2hhZGVyOiBPQlNUQUNMRV9WRVJURVhfU0hBREVSLFxuICAgICAgb3V0cHV0OiB7IG5hbWU6ICd4eU9ic3RhY2xlR3JpZCcgfSxcbiAgICAgIGRyYXc6IChncGdwdSwgcHJvZ3JhbSkgPT4ge1xuICAgICAgICBjb25zdCBnbCA9IGdwZ3B1LmdsO1xuXG4gICAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7XG4gICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpO1xuXG4gICAgICAgIGlmIChvYnN0YWNsZVZlcnRpY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTtcblxuICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWYpO1xuICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBvYnN0YWNsZVZlcnRpY2VzLCBnbC5TVEFUSUNfRFJBVyk7XG4gICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKTtcbiAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTtcblxuICAgICAgICAgIGNvbnN0IHhmb3JtTG9jYXRpb24gPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nbFByb2dyYW0sICd4Zm9ybScpO1xuICAgICAgICAgIGdsLnVuaWZvcm1NYXRyaXgzZnYoeGZvcm1Mb2NhdGlvbiwgZmFsc2UsIG9ic3RhY2xlWGZvcm0uZWxlbWVudHMpO1xuXG4gICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIG9ic3RhY2xlVmVydGljZXMubGVuZ3RoIC8gMik7XG5cbiAgICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0sXG5cbiAgdXBkYXRlKGNvbmZpZywgeHlXaWR0aCwgeHlIZWlnaHQsIHh5Q2VudGVyUG9pbnQsIHZlaGljbGVYZm9ybSwgb2JzdGFjbGVzKSB7XG4gICAgb2JzdGFjbGVWZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgb2JzdGFjbGVzLm1hcChvID0+IG8udmVydGljZXMpKSk7XG5cbiAgICBjb25zdCB0cmFuc2xhdGUgPSBuZXcgVEhSRUUuTWF0cml4MygpO1xuICAgIHRyYW5zbGF0ZS5zZXQoXG4gICAgICAxLCAwLCAteHlDZW50ZXJQb2ludC54LFxuICAgICAgMCwgMSwgLXh5Q2VudGVyUG9pbnQueSxcbiAgICAgIDAsIDAsIDFcbiAgICApO1xuXG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgVEhSRUUuTWF0cml4MygpO1xuICAgIHNjYWxlLnNldChcbiAgICAgIDIgLyAoeHlXaWR0aCAqIGNvbmZpZy54eUdyaWRDZWxsU2l6ZSksIDAsIDAsXG4gICAgICAwLCAyIC8gKHh5SGVpZ2h0ICogY29uZmlnLnh5R3JpZENlbGxTaXplKSwgMCxcbiAgICAgIDAsIDAsIDFcbiAgICApO1xuXG4gICAgb2JzdGFjbGVYZm9ybSA9IHNjYWxlLm11bHRpcGx5KHRyYW5zbGF0ZSkubXVsdGlwbHkodmVoaWNsZVhmb3JtKTtcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogeHlXaWR0aCxcbiAgICAgIGhlaWdodDogeHlIZWlnaHRcbiAgICB9XG4gIH1cbn1cbiIsImNvbnN0IFNMX09CU1RBQ0xFX0tFUk5FTCA9IGBcblxudmVjNCBrZXJuZWwoKSB7XG4gIGZsb2F0IGNlbnRlcmxpbmVXaWR0aCA9IGZsb2F0KHRleHR1cmVTaXplKGNlbnRlcmxpbmUsIDApLngpO1xuXG4gIHZlYzIgc2wgPSAoa2VybmVsUG9zaXRpb24gLSAwLjUpICogdmVjMihrZXJuZWxTaXplKSAqIHZlYzIoc2xHcmlkQ2VsbFNpemUpICsgc2xDZW50ZXJQb2ludDtcbiAgZmxvYXQgY2VudGVybGluZUNvb3JkID0gc2wueCAvIGNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWwgLyBjZW50ZXJsaW5lV2lkdGggKiAoY2VudGVybGluZVdpZHRoIC0gMS4wKSAvIGNlbnRlcmxpbmVXaWR0aCArICgwLjUgLyBjZW50ZXJsaW5lV2lkdGgpO1xuICBpZiAoY2VudGVybGluZUNvb3JkIDwgMC4wIHx8IGNlbnRlcmxpbmVDb29yZCA+IDEuMCkgcmV0dXJuIHZlYzQoMCk7XG5cbiAgdmVjMyBjZW50ZXJsaW5lU2FtcGxlID0gdGV4dHVyZShjZW50ZXJsaW5lLCB2ZWMyKGNlbnRlcmxpbmVDb29yZCwgMCkpLnh5ejtcbiAgZmxvYXQgcGVycGluZGljdWxhciA9IGNlbnRlcmxpbmVTYW1wbGUueiArIHJhZGlhbnMoOTAuMCk7XG4gIHZlYzIgeHkgPSBjZW50ZXJsaW5lU2FtcGxlLnh5ICsgc2wueXkgKiB2ZWMyKGNvcyhwZXJwaW5kaWN1bGFyKSwgc2luKHBlcnBpbmRpY3VsYXIpKTtcblxuICB2ZWMyIHh5VGV4Q29vcmRzID0gKHh5IC0geHlDZW50ZXJQb2ludCkgLyB2ZWMyKHRleHR1cmVTaXplKHh5T2JzdGFjbGVHcmlkLCAwKSkgLyB2ZWMyKHh5R3JpZENlbGxTaXplKSArIDAuNTtcbiAgcmV0dXJuIHRleHR1cmUoeHlPYnN0YWNsZUdyaWQsIHh5VGV4Q29vcmRzKTtcbn1cblxuYDtcblxuLy8gQ29udmVydCBYWS1zcGFjZSBvYnN0YWNsZSBncmlkIHRvIFNMLXNwYWNlIG9ic3RhY2xlIGdyaWRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtlcm5lbDogU0xfT0JTVEFDTEVfS0VSTkVMLFxuICAgICAgb3V0cHV0OiB7IG5hbWU6ICdzbE9ic3RhY2xlR3JpZCcgfSxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIHh5T2JzdGFjbGVHcmlkOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJyB9LFxuICAgICAgICBzbEdyaWRDZWxsU2l6ZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgIHh5R3JpZENlbGxTaXplOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgc2xDZW50ZXJQb2ludDogeyB0eXBlOiAndmVjMicgfSxcbiAgICAgICAgeHlDZW50ZXJQb2ludDogeyB0eXBlOiAndmVjMicgfSxcbiAgICAgICAgY2VudGVybGluZVN0YXRpb25JbnRlcnZhbDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgIGNlbnRlcmxpbmU6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgdXBkYXRlKGNvbmZpZywgc2xXaWR0aCwgc2xIZWlnaHQsIHNsQ2VudGVyUG9pbnQsIHh5Q2VudGVyUG9pbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHNsV2lkdGgsXG4gICAgICBoZWlnaHQ6IHNsSGVpZ2h0LFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgc2xHcmlkQ2VsbFNpemU6IGNvbmZpZy5zbEdyaWRDZWxsU2l6ZSxcbiAgICAgICAgeHlHcmlkQ2VsbFNpemU6IGNvbmZpZy54eUdyaWRDZWxsU2l6ZSxcbiAgICAgICAgc2xDZW50ZXJQb2ludDogW3NsQ2VudGVyUG9pbnQueCwgc2xDZW50ZXJQb2ludC55XSxcbiAgICAgICAgeHlDZW50ZXJQb2ludDogW3h5Q2VudGVyUG9pbnQueCwgeHlDZW50ZXJQb2ludC55XSxcbiAgICAgICAgY2VudGVybGluZVN0YXRpb25JbnRlcnZhbDogY29uZmlnLmNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImNvbnN0IFNMX09CU1RBQ0xFX0RJTEFUSU9OX0tFUk5FTCA9IGBcblxuLy8gVE9ETzogdGVzdCBwZXJmb3JtYW5jZSBvZiByZXR1cm5pbmcgZWFybHkgaWYgbm9uLXplcm8gcGl4ZWwgZm91bmRcbnZlYzQga2VybmVsKCkge1xuICBmbG9hdCB2YWwgPSAwLjA7XG5cbiAgZm9yIChpbnQgZCA9IDA7IGQgPD0gY29sbGlzaW9uRGlsYXRpb247IGQrKykge1xuICAgIHZhbCA9IG1heCh2YWwsIHRleHR1cmUoc2xPYnN0YWNsZUdyaWQsIGtlcm5lbFBvc2l0aW9uICsgZGVsdGEgKiB2ZWMyKGQpKS5yKTtcbiAgICB2YWwgPSBtYXgodmFsLCB0ZXh0dXJlKHNsT2JzdGFjbGVHcmlkLCBrZXJuZWxQb3NpdGlvbiArIGRlbHRhICogdmVjMigtZCkpLnIpO1xuICB9XG5cbiAgZm9yIChpbnQgZCA9IGNvbGxpc2lvbkRpbGF0aW9uICsgMTsgZCA8PSBjb2xsaXNpb25EaWxhdGlvbiArIGhhemFyZERpbGF0aW9uOyBkKyspIHtcbiAgICB2YWwgPSBtYXgodmFsLCB0ZXh0dXJlKHNsT2JzdGFjbGVHcmlkLCBrZXJuZWxQb3NpdGlvbiArIGRlbHRhICogdmVjMihkKSkuciAqIDAuNSk7XG4gICAgdmFsID0gbWF4KHZhbCwgdGV4dHVyZShzbE9ic3RhY2xlR3JpZCwga2VybmVsUG9zaXRpb24gKyBkZWx0YSAqIHZlYzIoLWQpKS5yICogMC41KTtcbiAgfVxuXG4gIHZhbCA9IG1heCh2YWwsIHN0ZXAoMC4xLCB2YWwpICogMC41KTtcblxuICByZXR1cm4gdmVjNCh2YWwsIDAsIDAsIDEpO1xufVxuXG5gO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldFVwKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IC8vIFNMLXNwYWNlIG9ic3RhY2xlIGdyaWQgUyBkaWxhdGlvblxuICAgICAgICBrZXJuZWw6IFNMX09CU1RBQ0xFX0RJTEFUSU9OX0tFUk5FTCxcbiAgICAgICAgb3V0cHV0OiB7IG5hbWU6ICdzbE9ic3RhY2xlR3JpZFN0YXRpb25EaWxhdGVkJyB9LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIHNsT2JzdGFjbGVHcmlkOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJyB9LFxuICAgICAgICAgIGRlbHRhOiB7IHR5cGU6ICd2ZWMyJyB9LFxuICAgICAgICAgIGNvbGxpc2lvbkRpbGF0aW9uOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgaGF6YXJkRGlsYXRpb246IHsgdHlwZTogJ2ludCcgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyAvLyBTTC1zcGFjZSBvYnN0YWNsZSBncmlkIEwgZGlsYXRpb25cbiAgICAgICAga2VybmVsOiBTTF9PQlNUQUNMRV9ESUxBVElPTl9LRVJORUwsXG4gICAgICAgIG91dHB1dDogeyBuYW1lOiAnc2xPYnN0YWNsZUdyaWREaWxhdGVkJyB9LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIHNsT2JzdGFjbGVHcmlkOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJywgbmFtZTogJ3NsT2JzdGFjbGVHcmlkU3RhdGlvbkRpbGF0ZWQnIH0sXG4gICAgICAgICAgZGVsdGE6IHsgdHlwZTogJ3ZlYzInIH0sXG4gICAgICAgICAgY29sbGlzaW9uRGlsYXRpb246IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICBoYXphcmREaWxhdGlvbjogeyB0eXBlOiAnaW50JyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHNsV2lkdGgsIHNsSGVpZ2h0KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHsgLy8gU0wtc3BhY2Ugb2JzdGFjbGUgZ3JpZCBTIGRpbGF0aW9uXG4gICAgICAgIHdpZHRoOiBzbFdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHNsSGVpZ2h0LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIGRlbHRhOiBbMSAvIHNsV2lkdGgsIDBdLFxuICAgICAgICAgIGNvbGxpc2lvbkRpbGF0aW9uOiBNYXRoLmNlaWwoY29uZmlnLmNvbGxpc2lvbkRpbGF0aW9uUyAvIGNvbmZpZy5zbEdyaWRDZWxsU2l6ZSksXG4gICAgICAgICAgaGF6YXJkRGlsYXRpb246IE1hdGguY2VpbChjb25maWcuaGF6YXJkRGlsYXRpb25TIC8gY29uZmlnLnNsR3JpZENlbGxTaXplKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyAvLyBTTC1zcGFjZSBvYnN0YWNsZSBncmlkIEwgZGlsYXRpb25cbiAgICAgICAgd2lkdGg6IHNsV2lkdGgsXG4gICAgICAgIGhlaWdodDogc2xIZWlnaHQsXG4gICAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgICAgZGVsdGE6IFswLCAxIC8gc2xIZWlnaHRdLFxuICAgICAgICAgIGNvbGxpc2lvbkRpbGF0aW9uOiBNYXRoLmNlaWwoY29uZmlnLmNvbGxpc2lvbkRpbGF0aW9uTCAvIGNvbmZpZy5zbEdyaWRDZWxsU2l6ZSksXG4gICAgICAgICAgaGF6YXJkRGlsYXRpb246IE1hdGguY2VpbChjb25maWcuaGF6YXJkRGlsYXRpb25MIC8gY29uZmlnLnNsR3JpZENlbGxTaXplKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcbiAgfVxufVxuIiwiY29uc3QgRFlOQU1JQ19PQlNUQUNMRV9WRVJURVhfU0hBREVSID0gYCN2ZXJzaW9uIDMwMCBlc1xudW5pZm9ybSBtYXQzIHhmb3JtO1xuaW4gdmVjMyBwb3NpdGlvbjtcbm91dCBmbG9hdCBjb2xvcjtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KCh4Zm9ybSAqIHZlYzMocG9zaXRpb24ueHksIDEpKS54eSwgcG9zaXRpb24ueiwgMSk7XG5cbiAgLy8gVGhlIHogY29vcmRpbmF0ZSBpcyAwLjI1IGZvciBjb2xsaXNpb24gem9uZSBhbmQgMC43NSBmb3IgaGF6YXJkIHpvbmUsXG4gIC8vIHNvIHRoYXQgdGhlIGNvbGxpc2lvbiB6b25lIGlzIGRyYXduIG9uIHRvcC5cbiAgLy8gQ29udmVydCB0aGlzIHRvIDEuMCBmb3IgY29sbGlzaW9uIHpvbmUsIDAuNSBmb3IgaGF6YXJkIHpvbmVcbiAgY29sb3IgPSAoMS4wIC0gc3RlcCgwLjUsIHBvc2l0aW9uLnopKSAqIDAuNSArIDAuNTtcbn1cbmA7XG5cbmNvbnN0IERZTkFNSUNfT0JTVEFDTEVfS0VSTkVMID0gYFxuICBpbiBmbG9hdCBjb2xvcjtcblxuICB2ZWM0IGtlcm5lbCgpIHtcbiAgICByZXR1cm4gdmVjNChjb2xvciwgMCwgMCwgMSk7XG4gIH1cbmA7XG5cbmxldCBvYnN0YWNsZVZlcnRpY2VzO1xubGV0IG9ic3RhY2xlWGZvcm07XG5jb25zdCBudW1EeW5hbWljRnJhbWVzID0gMjA7XG5cbi8vIERyYXcgZHluYW1pYyBvYnN0YWNsZSB0cmlhbmdsZXMgdG8gU0wtc3BhY2Ugb2JzdGFjbGUgZ3JpZFxuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRVcCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2VybmVsOiBEWU5BTUlDX09CU1RBQ0xFX0tFUk5FTCxcbiAgICAgIHZlcnRleFNoYWRlcjogRFlOQU1JQ19PQlNUQUNMRV9WRVJURVhfU0hBREVSLFxuICAgICAgb3V0cHV0OiB7IG5hbWU6ICdzbER5bmFtaWNPYnN0YWNsZUdyaWQnLCB0ZXh0dXJlVHlwZTogJzJEQXJyYXknLCBkZXB0aDogbnVtRHluYW1pY0ZyYW1lcyB9LFxuICAgICAgZHJhdzogKGdwZ3B1LCBwcm9ncmFtKSA9PiB7XG4gICAgICAgIGNvbnN0IGdsID0gZ3BncHUuZ2w7XG5cbiAgICAgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpO1xuXG4gICAgICAgIGNvbnN0IHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpO1xuICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTtcbiAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCBwcm9ncmFtLmlucHV0V2lkdGgsIHByb2dyYW0uaW5wdXRIZWlnaHQpO1xuICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpO1xuXG4gICAgICAgIGZvciAobGV0IGZyYW1lID0gMDsgZnJhbWUgPCBudW1EeW5hbWljRnJhbWVzOyBmcmFtZSsrKSB7XG4gICAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBwcm9ncmFtLm91dHB1dFRleHR1cmUsIDAsIGZyYW1lKTtcbiAgICAgICAgICBjb25zdCBmcmFtZUJ1ZmZlclN0YXR1cyA9IChnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSk7XG4gICAgICAgICAgaWYgKCFmcmFtZUJ1ZmZlclN0YXR1cylcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgYXR0YWNoaW5nIGZsb2F0IHRleHR1cmUgdG8gZnJhbWVidWZmZXIuIFlvdXIgZGV2aWNlIGlzIHByb2JhYmx5IGluY29tcGF0aWJsZS4nKTtcblxuICAgICAgICAgIGdsLmNsZWFyQ29sb3IoMCwgMCwgMCwgMCk7XG4gICAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpO1xuXG4gICAgICAgICAgaWYgKG9ic3RhY2xlVmVydGljZXNbZnJhbWVdLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZiA9IGdsLmNyZWF0ZUJ1ZmZlcigpO1xuXG4gICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmKTtcbiAgICAgICAgICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBvYnN0YWNsZVZlcnRpY2VzW2ZyYW1lXSwgZ2wuU1RBVElDX0RSQVcpO1xuICAgICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKTtcbiAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApO1xuXG4gICAgICAgICAgICBjb25zdCB4Zm9ybUxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2xQcm9ncmFtLCAneGZvcm0nKTtcbiAgICAgICAgICAgIGdsLnVuaWZvcm1NYXRyaXgzZnYoeGZvcm1Mb2NhdGlvbiwgZmFsc2UsIG9ic3RhY2xlWGZvcm0uZWxlbWVudHMpO1xuXG4gICAgICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgb2JzdGFjbGVWZXJ0aWNlc1tmcmFtZV0ubGVuZ3RoIC8gMyk7XG5cbiAgICAgICAgICAgIGlmIChmcmFtZSA9PSAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9ic3RhY2xlR3JpZCA9IG5ldyBGbG9hdDMyQXJyYXkocHJvZ3JhbS5pbnB1dFdpZHRoICogcHJvZ3JhbS5pbnB1dEhlaWdodCAqIDQpO1xuICAgICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIHByb2dyYW0uaW5wdXRXaWR0aCwgcHJvZ3JhbS5pbnB1dEhlaWdodCwgZ2wuUkdCQSwgZ2wuRkxPQVQsIG9ic3RhY2xlR3JpZCk7XG4gICAgICAgICAgICAgIGdwZ3B1Ll9keW5hbWljT2JzdGFjbGVHcmlkID0gb2JzdGFjbGVHcmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnbC5kZWxldGVCdWZmZXIoYnVmKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7XG4gICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpO1xuICAgICAgICBnbC5kaXNhYmxlKGdsLkRFUFRIX1RFU1QpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG5cbiAgdXBkYXRlKGNvbmZpZywgc2xXaWR0aCwgc2xIZWlnaHQsIHNsQ2VudGVyUG9pbnQsIHZlaGljbGVTdGF0aW9uLCBzdGFydFRpbWUsIGR5bmFtaWNGcmFtZVRpbWUsIGR5bmFtaWNPYnN0YWNsZXMpIHtcbiAgICBvYnN0YWNsZVZlcnRpY2VzID0gW107XG5cbiAgICBsZXQgdGltZSA9IHN0YXJ0VGltZTtcbiAgICBmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgbnVtRHluYW1pY0ZyYW1lczsgZnJhbWUrKykge1xuICAgICAgY29uc3QgdmVydGljZXMgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBkeW5hbWljT2JzdGFjbGVzLm1hcChvID0+IG8udmVydGljZXNJblRpbWVSYW5nZSh0aW1lLCB0aW1lICsgZHluYW1pY0ZyYW1lVGltZSwgY29uZmlnKSkpO1xuICAgICAgb2JzdGFjbGVWZXJ0aWNlcy5wdXNoKG5ldyBGbG9hdDMyQXJyYXkodmVydGljZXMpKTtcbiAgICAgIHRpbWUgKz0gZHluYW1pY0ZyYW1lVGltZTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGUgPSBuZXcgVEhSRUUuTWF0cml4MygpO1xuICAgIHRyYW5zbGF0ZS5zZXQoXG4gICAgICAxLCAwLCAtc2xDZW50ZXJQb2ludC54IC0gdmVoaWNsZVN0YXRpb24sXG4gICAgICAwLCAxLCAtc2xDZW50ZXJQb2ludC55LFxuICAgICAgMCwgMCwgMVxuICAgICk7XG5cbiAgICBjb25zdCBzY2FsZSA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG4gICAgc2NhbGUuc2V0KFxuICAgICAgMiAvIChzbFdpZHRoICogY29uZmlnLnNsR3JpZENlbGxTaXplKSwgMCwgMCxcbiAgICAgIDAsIDIgLyAoc2xIZWlnaHQgKiBjb25maWcuc2xHcmlkQ2VsbFNpemUpLCAwLFxuICAgICAgMCwgMCwgMVxuICAgICk7XG5cbiAgICBvYnN0YWNsZVhmb3JtID0gc2NhbGUubXVsdGlwbHkodHJhbnNsYXRlKTtcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogc2xXaWR0aCxcbiAgICAgIGhlaWdodDogc2xIZWlnaHRcbiAgICB9XG4gIH1cbn1cbiIsImNvbnN0IFhZU0xfTUFQX0tFUk5FTCA9IGBcblxudmVjNCBrZXJuZWwoKSB7XG4gIHZlYzIgeHkgPSAoa2VybmVsUG9zaXRpb24gLSAwLjUpICogdmVjMihrZXJuZWxTaXplKSAqIHZlYzIoeHlHcmlkQ2VsbFNpemUpICsgeHlDZW50ZXJQb2ludDtcblxuICBpbnQgbnVtU2FtcGxlcyA9IHRleHR1cmVTaXplKGNlbnRlcmxpbmUsIDApLng7XG4gIGludCBjbG9zZXN0ID0gMDtcbiAgZmxvYXQgY2xvc2VzdERpc3QgPSBkaXN0YW5jZSh4eSwgdGV4ZWxGZXRjaChjZW50ZXJsaW5lLCBpdmVjMigwLCAwKSwgMCkueHkpO1xuICBmb3IgKGludCBpID0gMTsgaSA8IG51bVNhbXBsZXM7IGkrKykge1xuICAgIGZsb2F0IGRpc3QgPSBkaXN0YW5jZSh4eSwgdGV4ZWxGZXRjaChjZW50ZXJsaW5lLCBpdmVjMihpLCAwKSwgMCkueHkpO1xuICAgIGlmIChkaXN0IDwgY2xvc2VzdERpc3QpIHtcbiAgICAgIGNsb3Nlc3REaXN0ID0gZGlzdDtcbiAgICAgIGNsb3Nlc3QgPSBpO1xuICAgIH1cbiAgfVxuXG4gIHZlYzIgY2xvc2VzdFBvcyA9IHRleGVsRmV0Y2goY2VudGVybGluZSwgaXZlYzIoY2xvc2VzdCwgMCksIDApLnh5O1xuICB2ZWMyIHByZXYsIG5leHQ7XG4gIGludCBwcmV2SW5kZXgsIG5leHRJbmRleDtcblxuICBpZiAoY2xvc2VzdCA9PSAwKSB7XG4gICAgcHJldkluZGV4ID0gMDtcbiAgICBuZXh0SW5kZXggPSAxO1xuICAgIHByZXYgPSBjbG9zZXN0UG9zO1xuICAgIG5leHQgPSB0ZXhlbEZldGNoKGNlbnRlcmxpbmUsIGl2ZWMyKDEsIDApLCAwKS54eTtcbiAgfSBlbHNlIGlmIChjbG9zZXN0ID09IG51bVNhbXBsZXMgLSAxKSB7XG4gICAgcHJldkluZGV4ID0gY2xvc2VzdCAtIDE7XG4gICAgbmV4dEluZGV4ID0gY2xvc2VzdDtcbiAgICBwcmV2ID0gdGV4ZWxGZXRjaChjZW50ZXJsaW5lLCBpdmVjMihwcmV2SW5kZXgsIDApLCAwKS54eTtcbiAgICBuZXh0ID0gY2xvc2VzdFBvcztcbiAgfSBlbHNlIHtcbiAgICB2ZWMyIGJlZm9yZSA9IHRleGVsRmV0Y2goY2VudGVybGluZSwgaXZlYzIoY2xvc2VzdCAtIDEsIDApLCAwKS54eTtcbiAgICB2ZWMyIGFmdGVyID0gdGV4ZWxGZXRjaChjZW50ZXJsaW5lLCBpdmVjMihjbG9zZXN0ICsgMSwgMCksIDApLnh5O1xuXG4gICAgaWYgKGRpc3RhbmNlKGJlZm9yZSwgeHkpIDwgZGlzdGFuY2UoYWZ0ZXIsIHh5KSkge1xuICAgICAgcHJldkluZGV4ID0gY2xvc2VzdCAtIDE7XG4gICAgICBuZXh0SW5kZXggPSBjbG9zZXN0O1xuICAgICAgcHJldiA9IGJlZm9yZTtcbiAgICAgIG5leHQgPSBjbG9zZXN0UG9zO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2SW5kZXggPSBjbG9zZXN0O1xuICAgICAgbmV4dEluZGV4ID0gY2xvc2VzdCArIDE7XG4gICAgICBwcmV2ID0gY2xvc2VzdFBvcztcbiAgICAgIG5leHQgPSBhZnRlcjtcbiAgICB9XG4gIH1cblxuICBmbG9hdCBkaXN0ID0gZGlzdGFuY2UocHJldiwgbmV4dCk7XG4gIGZsb2F0IHByb2dyZXNzID0gY2xhbXAoZG90KHh5IC0gcHJldiwgbmV4dCAtIHByZXYpIC8gZGlzdCAvIGRpc3QsIDAuMCwgMS4wKTtcbiAgdmVjMiBwcm9qZWN0ZWRQb3MgPSAobmV4dCAtIHByZXYpICogdmVjMihwcm9ncmVzcykgKyBwcmV2O1xuXG4gIHJldHVybiB2ZWM0KFxuICAgIChmbG9hdChwcmV2SW5kZXgpICsgcHJvZ3Jlc3MpICogY2VudGVybGluZVN0YXRpb25JbnRlcnZhbCxcbiAgICBzaWduKGRldGVybWluYW50KG1hdDIobmV4dCAtIHByZXYsIHh5IC0gcHJldikpKSAqIGRpc3RhbmNlKHh5LCBwcm9qZWN0ZWRQb3MpLFxuICAgIDAsXG4gICAgMFxuICApO1xufVxuXG5gO1xuXG4vLyBCdWlsZCBYWS1TTCBtYXBcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtlcm5lbDogWFlTTF9NQVBfS0VSTkVMLFxuICAgICAgb3V0cHV0OiB7IG5hbWU6ICd4eXNsTWFwJywgZmlsdGVyOiAnbGluZWFyJyB9LFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgY2VudGVybGluZTogeyB0eXBlOiAnc2hhcmVkVGV4dHVyZScgfSxcbiAgICAgICAgeHlDZW50ZXJQb2ludDogeyB0eXBlOiAndmVjMicgfSxcbiAgICAgICAgeHlHcmlkQ2VsbFNpemU6IHsgdHlwZTogJ2Zsb2F0J30sXG4gICAgICAgIGNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWw6IHsgdHlwZTogJ2Zsb2F0J31cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHh5V2lkdGgsIHh5SGVpZ2h0LCB4eUNlbnRlclBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB4eVdpZHRoLFxuICAgICAgaGVpZ2h0OiB4eUhlaWdodCxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIHh5Q2VudGVyUG9pbnQ6IFt4eUNlbnRlclBvaW50LngsIHh5Q2VudGVyUG9pbnQueV0sXG4gICAgICAgIHh5R3JpZENlbGxTaXplOiBjb25maWcueHlHcmlkQ2VsbFNpemUsXG4gICAgICAgIGNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWw6IGNvbmZpZy5jZW50ZXJsaW5lU3RhdGlvbkludGVydmFsXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIiwiLy8gQ29uZmlnOlxuLy8gbnVtIHN0YXRpb25zXG4vLyBudW0gbGF0aXR1ZGVzXG4vLyBzdGF0aW9uIGNvbm5lY3Rpdml0eVxuLy8gbGF0aXR1ZGUgY29ubmVjdGl2aXR5XG4vL1xuLy8gU2hhcmVkOlxuLy8gbGF0dGljZVxuXG5jb25zdCBPUFRJTUlaRV9DVUJJQ19TSEFSRUQgPSBgXG5cbmNvbnN0IGludCBORVdUT05fSVRFUkFUSU9OUyA9IDE2O1xuY29uc3QgaW50IFJFTEFYQVRJT05fSVRFUkFUSU9OUyA9IDE2O1xuY29uc3QgZmxvYXQgQ09OVkVSR0VOQ0VfRVJST1IgPSAwLjAxO1xuXG4vLyBUaGVzZSB0d28gY29uc3RzIG11c3Qgc3RheSBpbiBzeW5jLlxuY29uc3QgaW50IFNJTVBTT05TX0lOVEVSVkFMUyA9IDg7XG4vL2NvbnN0IGZsb2F0IFNJTVBTT05TX0NPRUZGU1tTSU1QU09OU19JTlRFUlZBTFMgKyAxXSA9IGZsb2F0W10oMS4wLCA0LjAsIDIuMCwgNC4wLCAyLjAsIDQuMCwgMi4wLCA0LjAsIDIuMCwgNC4wLCAyLjAsIDQuMCwgMi4wLCA0LjAsIDIuMCwgNC4wLCAxLjApO1xuY29uc3QgZmxvYXQgU0lNUFNPTlNfQ09FRkZTW1NJTVBTT05TX0lOVEVSVkFMUyArIDFdID0gZmxvYXRbXSgxLjAsIDQuMCwgMi4wLCA0LjAsIDIuMCwgNC4wLCAyLjAsIDQuMCwgMS4wKTtcblxuY29uc3QgZmxvYXQgUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU7XG5jb25zdCBmbG9hdCBUV09fUEkgPSBQSSArIFBJO1xuXG5jb25zdCBmbG9hdCBSRUxBWEFUSU9OX0lURVJBVElPTlNfRiA9IGZsb2F0KFJFTEFYQVRJT05fSVRFUkFUSU9OUyk7XG5jb25zdCBmbG9hdCBTSU1QU09OU19JTlRFUlZBTFNfRiA9IGZsb2F0KFNJTVBTT05TX0lOVEVSVkFMUyk7XG5cbmZsb2F0IHdyYXBBbmdsZShmbG9hdCBhbmdsZSkge1xuICBhbmdsZSA9IG1vZChhbmdsZSwgVFdPX1BJKTtcbiAgaWYgKGFuZ2xlIDw9IC1QSSkgcmV0dXJuIGFuZ2xlICsgVFdPX1BJO1xuICBlbHNlIGlmIChhbmdsZSA+IFBJKSByZXR1cm4gYW5nbGUgLSBUV09fUEk7XG4gIHJldHVybiBhbmdsZTtcbn1cblxudmVjNCBpdGVyYXRlKHZlYzQgZ29hbCwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgcDMsIGZsb2F0IHNHKSB7XG4gIGZsb2F0IGRzID0gc0cgLyBTSU1QU09OU19JTlRFUlZBTFNfRjtcbiAgZmxvYXQgc0dfMiA9IHNHICogc0c7XG4gIGZsb2F0IHNHXzMgPSBzR18yICogc0c7XG5cbiAgdmVjMyBkWF9wID0gdmVjMygwLjApO1xuICB2ZWMzIGRZX3AgPSB2ZWMzKDAuMCk7XG4gIHZlYzIgZ3Vlc3MgPSB2ZWMyKDAuMCk7XG4gIGZsb2F0IHMgPSAwLjA7XG5cbiAgZmxvYXQgdGhldGEsIGNvc1RoZXRhLCBzaW5UaGV0YTtcbiAgdmVjMyBkVF9wO1xuXG4gIGZvciAoaW50IGkgPSAwOyBpIDw9IFNJTVBTT05TX0lOVEVSVkFMUzsgaSsrKSB7XG4gICAgZmxvYXQgY29lZmYgPSBTSU1QU09OU19DT0VGRlNbaV07XG5cbiAgICBmbG9hdCBhID0gcDA7XG4gICAgZmxvYXQgYiA9ICgtNS41ICogcDAgKyA5LjAgKiBwMSAtIDQuNSAqIHAyICsgcDMpIC8gc0c7XG4gICAgZmxvYXQgYyA9ICg5LjAgKiBwMCAtIDIyLjUgKiBwMSArIDE4LjAgKiBwMiAtIDQuNSAqIHAzKSAvIHNHXzI7XG4gICAgZmxvYXQgZCA9ICgtNC41ICogKHAwIC0gMy4wICogcDEgKyAzLjAgKiBwMiAtIHAzKSkgLyBzR18zO1xuXG4gICAgdGhldGEgPSAoKChkICogcyAvIDQuMCArIGMgLyAzLjApICogcyArIGIgLyAyLjApICogcyArIGEpICogcztcbiAgICBjb3NUaGV0YSA9IGNvcyh0aGV0YSk7XG4gICAgc2luVGhldGEgPSBzaW4odGhldGEpO1xuXG4gICAgZmxvYXQgc19zRyA9IHMgLyBzRztcblxuICAgIGRUX3AgPSB2ZWMzKFxuICAgICAgLy8gcDFcbiAgICAgICgoMy4zNzUgKiBzX3NHIC0gNy41KSAqIHNfc0cgKyA0LjUpICogc19zRyAqIHMsXG5cbiAgICAgIC8vIHAyXG4gICAgICAoKC0zLjM3NSAqIHNfc0cgKyA2LjApICogc19zRyAtIDIuMjUpICogc19zRyAqIHMsXG5cbiAgICAgIC8vIHNHXG4gICAgICAoKDMuMzc1ICogKHAwIC0gMy4wICogcDEgKyAzLjAgKiBwMiAtIHAzKSAqIHNfc0cgLSAzLjAgKiAoMi4wICogcDAgLSA1LjAgKiBwMSArIDQuMCAqIHAyIC0gcDMpKSAqIHNfc0cgKyAwLjI1ICogKDExLjAgKiBwMCAtIDE4LjAgKiBwMSArIDkuMCAqIHAyIC0gMi4wICogcDMpKSAqIHNfc0cgKiBzX3NHXG4gICAgKTtcblxuICAgIGRYX3AgLT0gY29lZmYgKiBzaW5UaGV0YSAqIGRUX3A7XG4gICAgZFlfcCArPSBjb2VmZiAqIGNvc1RoZXRhICogZFRfcDtcblxuICAgIGd1ZXNzICs9IGNvZWZmICogdmVjMihjb3NUaGV0YSwgc2luVGhldGEpO1xuXG4gICAgcyArPSBkcztcbiAgfVxuXG4gIGZsb2F0IGhPdmVyMyA9IHNHIC8gU0lNUFNPTlNfSU5URVJWQUxTX0YgLyAzLjA7XG5cbiAgdmVjMyBkZWx0YTtcbiAgZGVsdGEueHkgPSBnb2FsLnh5IC0gZ3Vlc3MgKiBoT3ZlcjM7XG4gIGRlbHRhLnogPSB3cmFwQW5nbGUoZ29hbC56IC0gdGhldGEpO1xuXG4gIGlmIChhYnMoZGVsdGEueCkgKyBhYnMoZGVsdGEueSkgKyBhYnMoZGVsdGEueikgPCBDT05WRVJHRU5DRV9FUlJPUilcbiAgICByZXR1cm4gdmVjNChwMSwgcDIsIHNHLCAxLjApO1xuXG4gIGRYX3AueHl6ICo9IGhPdmVyMztcbiAgZFlfcC54eXogKj0gaE92ZXIzO1xuICBkWF9wLnogKz0gY29zVGhldGE7XG4gIGRZX3AueiArPSBzaW5UaGV0YTtcblxuICBtYXQzIGludkphY29iaWFuID0gaW52ZXJzZSh0cmFuc3Bvc2UobWF0MyhkWF9wLCBkWV9wLCBkVF9wKSkpO1xuXG4gIHZlYzMgZGVsdGFQID0gaW52SmFjb2JpYW4gKiBkZWx0YTtcbiAgdmVjNCBwYXJhbXMgPSB2ZWM0KHAxLCBwMiwgc0csIDAuMCk7XG4gIHBhcmFtcy54eXogKz0gZGVsdGFQO1xuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbi8qIElucHV0OlxuICogICBzdGFydDogKHZlYzQpXG4gKiAgICAgeDogeCBwb3NpdGlvbixcbiAqICAgICB5OiB5IHBvc2l0aW9uLFxuICogICAgIHo6IHRoZXRhIHJvdGF0aW9uLFxuICogICAgIHc6IGsgY3VydmF0dXJlXG4gKiAgIGVuZDogKHZlYzQpXG4gKiAgICAgeDogeCBwb3NpdGlvbixcbiAqICAgICB5OiB5IHBvc2l0aW9uLFxuICogICAgIHo6IHRoZXRhIHJvdGF0aW9uLFxuICogICAgIHc6IGsgY3VydmF0dXJlXG4gKlxuICogT3V0cHV0OiAodmVjNClcbiAqICAgeDogcDEsXG4gKiAgIHk6IHAyLFxuICogICB6OiBzRyxcbiAqICAgdzogMSBpZiBjb252ZXJnZWQsIDAgaWYgbm90XG4gKi9cblxudmVjNCBvcHRpbWl6ZSh2ZWM0IHN0YXJ0LCB2ZWM0IGVuZCkge1xuICAvLyBUcmFuc2xhdGUgYW5kIHJvdGF0ZSBzdGFydCBhbmQgZW5kIHNvIHRoYXQgc3RhcnQgaXMgYXQgdGhlIG9yaWdpblxuICBmbG9hdCBzaW5Sb3QgPSBzaW4oc3RhcnQueik7XG4gIGZsb2F0IGNvc1JvdCA9IGNvcyhzdGFydC56KTtcblxuICB2ZWM0IGRpZmYgPSBlbmQgLSBzdGFydDtcbiAgdmVjNCBnb2FsO1xuICBnb2FsLnh5ID0gbWF0Mihjb3NSb3QsIC1zaW5Sb3QsIHNpblJvdCwgY29zUm90KSAqIGRpZmYueHk7XG4gIGdvYWwueiA9IHdyYXBBbmdsZShkaWZmLnopO1xuICBnb2FsLncgPSBlbmQudztcblxuICB2ZWM0IG9yaWdpbmFsR29hbCA9IGdvYWw7XG4gIHZlYzQgZEdvYWw7XG4gIGRHb2FsLnggPSAwLjA7XG4gIGRHb2FsLnl6dyA9IGdvYWwueXp3IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TX0Y7XG4gIGZsb2F0IGRLMCA9IHN0YXJ0LncgLyBSRUxBWEFUSU9OX0lURVJBVElPTlNfRjtcblxuICAvLyBSZWxheCB0aGUgZ29hbCB0byAoeCwgMCwgMCwgMClcbiAgZ29hbC55encgPSB2ZWMzKDAsIDAsIDApO1xuXG4gIC8vIFJlbGF4IHRoZSBwYXJhbXMgdG8gKDAsIDAsIDAsIDAsIGdvYWwueClcbiAgZmxvYXQgcDAgPSAwLjA7XG4gIGZsb2F0IHAxID0gMC4wO1xuICBmbG9hdCBwMiA9IDAuMDtcbiAgZmxvYXQgcDMgPSAwLjA7XG4gIGZsb2F0IHNHID0gZ29hbC54O1xuXG4gIGlmIChzRyA8IDAuMSkgcmV0dXJuIHZlYzQoMC4wKTtcblxuICBmb3IgKGludCBpID0gMDsgaSA8IFJFTEFYQVRJT05fSVRFUkFUSU9OUzsgaSsrKSB7XG4gICAgcDAgKz0gZEswO1xuICAgIHAzICs9IGRHb2FsLnc7XG4gICAgZ29hbCArPSBkR29hbDtcbiAgICBcbiAgICB2ZWM0IHJlc3VsdCA9IGl0ZXJhdGUoZ29hbCwgcDAsIHAxLCBwMiwgcDMsIHNHKTtcbiAgICBwMSA9IHJlc3VsdC54O1xuICAgIHAyID0gcmVzdWx0Lnk7XG4gICAgc0cgPSByZXN1bHQuejtcbiAgfVxuXG4gIGdvYWwgPSBvcmlnaW5hbEdvYWw7XG5cbiAgZm9yIChpbnQgaSA9IDA7IGkgPCBORVdUT05fSVRFUkFUSU9OUzsgaSsrKSB7XG4gICAgdmVjNCByZXN1bHQgPSBpdGVyYXRlKGdvYWwsIHAwLCBwMSwgcDIsIHAzLCBzRyk7XG4gICAgaWYgKHJlc3VsdC53ID09IDEuMCkge1xuICAgICAgcmVzdWx0LncgPSBzdGVwKDAuMCwgcmVzdWx0LnopO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwMSA9IHJlc3VsdC54O1xuICAgIHAyID0gcmVzdWx0Lnk7XG4gICAgc0cgPSByZXN1bHQuejtcbiAgfVxuXG4gIHJldHVybiB2ZWM0KHAxLCBwMiwgc0csIDAuMCk7XG59XG5cbmA7XG5cbmNvbnN0IE9QVElNSVpFX0NVQklDX0tFUk5FTCA9IE9QVElNSVpFX0NVQklDX1NIQVJFRCArIGBcblxuLy8gd2lkdGg6IHN0YXRpb24gKiBsYXRpdHVkZSBpbmRleFxuLy8gaGVpZ2h0OiBzdGF0aW9uX2Nvbm4gKiBsYXR0aWNlX2Nvbm5cbi8vXG4vLyBsYXR0aWNlOlxuLy8gd2lkdGg6IGxhdGl0dWRlc1xuLy8gaGVpZ2h0OiBzdGF0aW9uc1xuXG52ZWM0IGtlcm5lbCgpIHtcbiAgaXZlYzIgaW5kZXhlcyA9IGl2ZWMyKGtlcm5lbFBvc2l0aW9uICogdmVjMihrZXJuZWxTaXplKSk7XG5cbiAgaW50IGVuZFN0YXRpb24gPSBpbmRleGVzLnggLyBudW1MYXRpdHVkZXM7XG4gIGludCBlbmRMYXRpdHVkZSA9IGludChtb2QoZmxvYXQoaW5kZXhlcy54KSwgZmxvYXQobnVtTGF0aXR1ZGVzKSkpO1xuXG4gIGludCBzdGFydFN0YXRpb24gPSBlbmRTdGF0aW9uIC0gc3RhdGlvbkNvbm5lY3Rpdml0eSArIGluZGV4ZXMueSAvIGxhdGl0dWRlQ29ubmVjdGl2aXR5O1xuICBpbnQgc3RhcnRMYXRpdHVkZSA9IGVuZExhdGl0dWRlIC0gbGF0aXR1ZGVDb25uZWN0aXZpdHkgLyAyICsgaW50KG1vZChmbG9hdChpbmRleGVzLnkpLCBmbG9hdChsYXRpdHVkZUNvbm5lY3Rpdml0eSkpKTtcblxuICBpZiAoc3RhcnRTdGF0aW9uIDwgMCB8fCBzdGFydFN0YXRpb24gPj0gbnVtU3RhdGlvbnMgfHwgc3RhcnRMYXRpdHVkZSA8IDAgfHwgc3RhcnRMYXRpdHVkZSA+PSBudW1MYXRpdHVkZXMpXG4gICAgcmV0dXJuIHZlYzQoMC4wKTtcblxuICB2ZWM0IHN0YXJ0ID0gdGV4ZWxGZXRjaChsYXR0aWNlLCBpdmVjMihzdGFydExhdGl0dWRlLCBzdGFydFN0YXRpb24pLCAwKTtcbiAgdmVjNCBlbmQgPSB0ZXhlbEZldGNoKGxhdHRpY2UsIGl2ZWMyKGVuZExhdGl0dWRlLCBlbmRTdGF0aW9uKSwgMCk7XG5cbiAgcmV0dXJuIG9wdGltaXplKHN0YXJ0LCBlbmQpO1xufVxuXG5gO1xuXG5jb25zdCBPUFRJTUlaRV9DVUJJQ19GUk9NX1ZFSElDTEVfS0VSTkVMID0gT1BUSU1JWkVfQ1VCSUNfU0hBUkVEICsgYFxuXG52ZWM0IGtlcm5lbCgpIHtcbiAgaXZlYzIgaW5kZXhlcyA9IGl2ZWMyKGtlcm5lbFBvc2l0aW9uICogdmVjMihrZXJuZWxTaXplKSk7XG5cbiAgdmVjNCBzdGFydCA9IHZlYzQoMCwgMCwgMCwgY3VydlZlaGljbGUpO1xuICB2ZWM0IGVuZCA9IHRleGVsRmV0Y2gobGF0dGljZSwgaW5kZXhlcywgMCk7XG5cbiAgcmV0dXJuIG9wdGltaXplKHN0YXJ0LCBlbmQpO1xufVxuXG5gO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldFVwKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IC8vIEN1YmljIHBhdGhzIGJldHdlZW4gbGF0dGljZSBub2Rlc1xuICAgICAgICBrZXJuZWw6IE9QVElNSVpFX0NVQklDX0tFUk5FTCxcbiAgICAgICAgb3V0cHV0OiB7IG5hbWU6ICdjdWJpY1BhdGhzJywgcmVhZDogdHJ1ZSB9LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIGxhdHRpY2U6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH0sXG4gICAgICAgICAgbnVtU3RhdGlvbnM6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICBudW1MYXRpdHVkZXM6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICBzdGF0aW9uQ29ubmVjdGl2aXR5OiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgbGF0aXR1ZGVDb25uZWN0aXZpdHk6IHsgdHlwZTogJ2ludCcgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyAvLyBDdWJpYyBwYXRocyBmcm9tIHZlaGljbGUgdG8gbGF0dGljZSBub2Rlc1xuICAgICAgICBrZXJuZWw6IE9QVElNSVpFX0NVQklDX0ZST01fVkVISUNMRV9LRVJORUwsXG4gICAgICAgIG91dHB1dDogeyBuYW1lOiAnY3ViaWNQYXRoc0Zyb21WZWhpY2xlJywgcmVhZDogdHJ1ZSB9LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIGxhdHRpY2U6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH0sXG4gICAgICAgICAgY3VydlZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG4gIH0sXG5cbiAgdXBkYXRlKGNvbmZpZywgcG9zZSkge1xuICAgIHJldHVybiBbXG4gICAgICB7IC8vIEN1YmljIHBhdGhzIGJldHdlZW4gbGF0dGljZSBub2Rlc1xuICAgICAgICB3aWR0aDogY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMgKiBjb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMsXG4gICAgICAgIGhlaWdodDogY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSAqIGNvbmZpZy5sYXR0aWNlLmxhdGl0dWRlQ29ubmVjdGl2aXR5LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIG51bVN0YXRpb25zOiBjb25maWcubGF0dGljZS5udW1TdGF0aW9ucyxcbiAgICAgICAgICBudW1MYXRpdHVkZXM6IGNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyxcbiAgICAgICAgICBzdGF0aW9uQ29ubmVjdGl2aXR5OiBjb25maWcubGF0dGljZS5zdGF0aW9uQ29ubmVjdGl2aXR5LFxuICAgICAgICAgIGxhdGl0dWRlQ29ubmVjdGl2aXR5OiBjb25maWcubGF0dGljZS5sYXRpdHVkZUNvbm5lY3Rpdml0eSxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgLy8gQ3ViaWMgcGF0aHMgZnJvbSB2ZWhpY2xlIHRvIGxhdHRpY2Ugbm9kZXNcbiAgICAgICAgd2lkdGg6IGNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyxcbiAgICAgICAgaGVpZ2h0OiBjb25maWcubGF0dGljZS5zdGF0aW9uQ29ubmVjdGl2aXR5LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIGN1cnZWZWhpY2xlOiBwb3NlLmN1cnZcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG4gIH1cbn1cbiIsImNvbnN0IE9QVElNSVpFX0tFUk5FTCA9IGBcblxuY29uc3QgaW50IE5FV1RPTl9JVEVSQVRJT05TID0gMzI7XG5jb25zdCBpbnQgUkVMQVhBVElPTl9JVEVSQVRJT05TID0gMzI7XG5jb25zdCBmbG9hdCBDT05WRVJHRU5DRV9FUlJPUiA9IDAuMDE7XG5cbi8vIFRoZXNlIHR3byBjb25zdHMgbXVzdCBzdGF5IGluIHN5bmMuXG5jb25zdCBpbnQgU0lNUFNPTlNfSU5URVJWQUxTID0gODtcbmNvbnN0IGZsb2F0IFNJTVBTT05TX0NPRUZGU1tTSU1QU09OU19JTlRFUlZBTFMgKyAxXSA9IGZsb2F0W10oMS4wLCA0LjAsIDIuMCwgNC4wLCAyLjAsIDQuMCwgMi4wLCA0LjAsIDEuMCk7XG5cbmNvbnN0IGZsb2F0IFBJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1O1xuY29uc3QgZmxvYXQgVFdPX1BJID0gUEkgKyBQSTtcblxuY29uc3QgZmxvYXQgUkVMQVhBVElPTl9JVEVSQVRJT05TX0YgPSBmbG9hdChSRUxBWEFUSU9OX0lURVJBVElPTlMpO1xuY29uc3QgZmxvYXQgU0lNUFNPTlNfSU5URVJWQUxTX0YgPSBmbG9hdChTSU1QU09OU19JTlRFUlZBTFMpO1xuXG5mbG9hdCB3cmFwQW5nbGUoZmxvYXQgYW5nbGUpIHtcbiAgYW5nbGUgPSBtb2QoYW5nbGUsIFRXT19QSSk7XG4gIGlmIChhbmdsZSA8PSAtUEkpIHJldHVybiBhbmdsZSArIFRXT19QSTtcbiAgZWxzZSBpZiAoYW5nbGUgPiBQSSkgcmV0dXJuIGFuZ2xlIC0gVFdPX1BJO1xuICByZXR1cm4gYW5nbGU7XG59XG5cbnZlYzQgaXRlcmF0ZSh2ZWM0IGdvYWwsIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IHAzLCBmbG9hdCBwNCwgZmxvYXQgcDUsIGZsb2F0IHNHKSB7XG4gIGZsb2F0IGRzID0gc0cgLyBTSU1QU09OU19JTlRFUlZBTFNfRjtcbiAgZmxvYXQgc0dfMiA9IHNHICogc0c7XG4gIGZsb2F0IHNHXzMgPSBzR18yICogc0c7XG5cbiAgdmVjMyBkWF9wID0gdmVjMygwLjApO1xuICB2ZWMzIGRZX3AgPSB2ZWMzKDAuMCk7XG4gIHZlYzIgZ3Vlc3MgPSB2ZWMyKDAuMCk7XG4gIGZsb2F0IHMgPSAwLjA7XG5cbiAgZmxvYXQgdGhldGEsIGNvc1RoZXRhLCBzaW5UaGV0YTtcbiAgdmVjMyBkVF9wO1xuXG4gIGZvciAoaW50IGkgPSAwOyBpIDw9IFNJTVBTT05TX0lOVEVSVkFMUzsgaSsrKSB7XG4gICAgZmxvYXQgY29lZmYgPSBTSU1QU09OU19DT0VGRlNbaV07XG5cbiAgICBmbG9hdCBhID0gcDA7XG4gICAgZmxvYXQgYiA9IHAxO1xuICAgIGZsb2F0IGMgPSBwMiAvIDIuMDtcbiAgICBmbG9hdCBkID0gKC03MS44NzUgKiBwMCArIDgxLjAgKiBwMyAtIDEwLjEyNSAqIHA0ICsgcDUgLSAyMS4yNSAqIHAxICogc0cgLSAyLjc1ICogcDIgKiBzR18yKSAvIHNHXzM7XG4gICAgZmxvYXQgZSA9ICgxNjYuNSAqIHAwIC0gMjAyLjUgKiBwMyArIDQwLjUgKiBwNCAtIDQuNSAqIHA1ICsgNDUuMCAqIHAxICogc0cgKyA0LjUgKiBwMiAqIHNHXzIpIC8gKHNHXzIgKiBzR18yKTtcbiAgICBmbG9hdCBmID0gKC05NS42MjUgKiBwMCArIDEyMS41ICogcDMgLSAzMC4zNzUgKiBwNCArIDQuNSAqIHA1IC0gMjQuNzUgKiBwMSAqIHNHIC0gMi4yNSAqIHAyICogc0dfMikgLyAoc0dfMiAqIHNHXzMpO1xuXG4gICAgdGhldGEgPSAoKCgoKGYgKiBzIC8gNi4wICsgZSAvIDUuMCkgKiBzICsgZCAvIDQuMCkgKiBzICsgYyAvIDMuMCkgKiBzICsgYiAvIDIuMCkgKiBzICsgYSkgKiBzO1xuICAgIGNvc1RoZXRhID0gY29zKHRoZXRhKTtcbiAgICBzaW5UaGV0YSA9IHNpbih0aGV0YSk7XG5cbiAgICBmbG9hdCBzXzIgPSBzICogcztcbiAgICBmbG9hdCBzX3NHID0gcyAvIHNHO1xuICAgIGZsb2F0IHNfc0dfMiA9IHNfc0cgKiBzX3NHO1xuICAgIGZsb2F0IHNfc0dfMyA9IHNfc0dfMiAqIHNfc0c7XG4gICAgZmxvYXQgc19zR180ID0gc19zR18zICogc19zRztcbiAgICBmbG9hdCBzX3NHXzUgPSBzX3NHXzQgKiBzX3NHO1xuXG4gICAgZFRfcCA9IHZlYzMoXG4gICAgICAvLyBwM1xuICAgICAgKCgyMC4yNSAqIHNfc0cgLSA0MC41KSAqIHNfc0cgKyAyMC4yNSkgKiBzX3NHXzMgKiBzLFxuXG4gICAgICAvLyBwNFxuICAgICAgKCgtNS4wNjI1ICogc19zRyArIDguMSkgKiBzX3NHIC0gMi41MzEyNSkgKiBzX3NHXzMgKiBzLFxuXG4gICAgICAvLyBzR1xuICAgICAgKDUzLjkwNjI1ICogcDAgLSA2MC43NSAqIHAzICsgNy41OTM3NSAqIHA0IC0gMC43NSAqIHA1KSAqIHNfc0dfNCArIDEwLjYyNSAqIHAxICogcyAqIHNfc0dfMyArIDAuNjg3NSAqIHAyICogc18yICogc19zR18yICsgKC0xMzMuMiAqIHAwICsgMTYyLjAgKiBwMyAtIDMyLjQgKiBwNCArIDMuNiAqIHA1KSAqIHNfc0dfNSArICgtMjcuMCkgKiBwMSAqIHMgKiBzX3NHXzQgLSAxLjggKiBwMiAqIHNfMiAqIHNfc0dfMyArICg3OS42ODc1ICogcDAgLSAxMDEuMjUgKiBwMyArIDI1LjMxMjUgKiBwNCAtIDMuNzUgKiBwNSkgKiBzX3NHXzUgKiBzX3NHICsgMTYuNSAqIHAxICogcyAqIHNfc0dfNSArIDEuMTI1ICogcDIgKiBzXzIgKiBzX3NHXzRcbiAgICApO1xuXG4gICAgZFhfcCAtPSBjb2VmZiAqIHNpblRoZXRhICogZFRfcDtcbiAgICBkWV9wICs9IGNvZWZmICogY29zVGhldGEgKiBkVF9wO1xuXG4gICAgZ3Vlc3MgKz0gY29lZmYgKiB2ZWMyKGNvc1RoZXRhLCBzaW5UaGV0YSk7XG5cbiAgICBzICs9IGRzO1xuICB9XG5cbiAgZmxvYXQgaE92ZXIzID0gc0cgLyBTSU1QU09OU19JTlRFUlZBTFNfRiAvIDMuMDtcblxuICB2ZWMzIGRlbHRhO1xuICBkZWx0YS54eSA9IGdvYWwueHkgLSBndWVzcyAqIGhPdmVyMztcbiAgZGVsdGEueiA9IHdyYXBBbmdsZShnb2FsLnogLSB0aGV0YSk7XG5cbiAgaWYgKGFicyhkZWx0YS54KSArIGFicyhkZWx0YS55KSArIGFicyhkZWx0YS56KSA8IENPTlZFUkdFTkNFX0VSUk9SKVxuICAgIHJldHVybiB2ZWM0KHAzLCBwNCwgc0csIDEuMCk7XG5cbiAgZFhfcC54eXogKj0gaE92ZXIzO1xuICBkWV9wLnh5eiAqPSBoT3ZlcjM7XG4gIGRYX3AueiArPSBjb3NUaGV0YTtcbiAgZFlfcC56ICs9IHNpblRoZXRhO1xuXG4gIG1hdDMgaW52SmFjb2JpYW4gPSBpbnZlcnNlKHRyYW5zcG9zZShtYXQzKGRYX3AsIGRZX3AsIGRUX3ApKSk7XG5cbiAgdmVjMyBkZWx0YVAgPSBpbnZKYWNvYmlhbiAqIGRlbHRhO1xuICB2ZWM0IHBhcmFtcyA9IHZlYzQocDMsIHA0LCBzRywgMC4wKTtcbiAgcGFyYW1zLnh5eiArPSBkZWx0YVA7XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxudmVjNCBvcHRpbWl6ZSh2ZWM0IHN0YXJ0LCB2ZWM0IGVuZCkge1xuICAvLyBUcmFuc2xhdGUgYW5kIHJvdGF0ZSBzdGFydCBhbmQgZW5kIHNvIHRoYXQgc3RhcnQgaXMgYXQgdGhlIG9yaWdpblxuICBmbG9hdCBzaW5Sb3QgPSBzaW4oc3RhcnQueik7XG4gIGZsb2F0IGNvc1JvdCA9IGNvcyhzdGFydC56KTtcblxuICB2ZWM0IGRpZmYgPSBlbmQgLSBzdGFydDtcbiAgdmVjNCBnb2FsO1xuICBnb2FsLnh5ID0gbWF0Mihjb3NSb3QsIC1zaW5Sb3QsIHNpblJvdCwgY29zUm90KSAqIGRpZmYueHk7XG4gIGdvYWwueiA9IHdyYXBBbmdsZShkaWZmLnopO1xuICBnb2FsLncgPSBlbmQudztcblxuICB2ZWM0IG9yaWdpbmFsR29hbCA9IGdvYWw7XG4gIHZlYzQgZEdvYWw7XG4gIGRHb2FsLnggPSAwLjA7XG4gIGRHb2FsLnl6dyA9IGdvYWwueXp3IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TX0Y7XG4gIGZsb2F0IGRfSzAgPSBzdGFydC53IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TX0Y7XG4gIGZsb2F0IGRfZEswID0gZEN1cnZWZWhpY2xlIC8gUkVMQVhBVElPTl9JVEVSQVRJT05TX0Y7XG4gIGZsb2F0IGRfZGRLMCA9IGRkQ3VydlZlaGljbGUgLyBSRUxBWEFUSU9OX0lURVJBVElPTlNfRjtcblxuICAvLyBSZWxheCB0aGUgZ29hbCB0byAoeCwgMCwgMCwgMClcbiAgZ29hbC55encgPSB2ZWMzKDAsIDAsIDApO1xuXG4gIC8vIFJlbGF4IHRoZSBwYXJhbXMgdG8gKDAsIDAsIDAsIDAsIGdvYWwueClcbiAgZmxvYXQgcDAgPSAwLjA7XG4gIGZsb2F0IHAxID0gMC4wO1xuICBmbG9hdCBwMiA9IDAuMDtcbiAgZmxvYXQgcDMgPSAwLjA7XG4gIGZsb2F0IHA0ID0gMC4wO1xuICBmbG9hdCBwNSA9IDAuMDtcbiAgZmxvYXQgc0cgPSBnb2FsLng7XG5cbiAgaWYgKHNHIDwgMC4xKSByZXR1cm4gdmVjNCgwLjApO1xuXG4gIGZvciAoaW50IGkgPSAwOyBpIDwgUkVMQVhBVElPTl9JVEVSQVRJT05TOyBpKyspIHtcbiAgICBwMCArPSBkX0swO1xuICAgIHAxICs9IGRfZEswO1xuICAgIHAyICs9IGRfZGRLMDtcbiAgICBwNSArPSBkR29hbC53O1xuICAgIGdvYWwgKz0gZEdvYWw7XG4gICAgXG4gICAgdmVjNCByZXN1bHQgPSBpdGVyYXRlKGdvYWwsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHNHKTtcbiAgICBwMyA9IHJlc3VsdC54O1xuICAgIHA0ID0gcmVzdWx0Lnk7XG4gICAgc0cgPSByZXN1bHQuejtcbiAgfVxuXG4gIGdvYWwgPSBvcmlnaW5hbEdvYWw7XG5cbiAgZm9yIChpbnQgaSA9IDA7IGkgPCBORVdUT05fSVRFUkFUSU9OUzsgaSsrKSB7XG4gICAgdmVjNCByZXN1bHQgPSBpdGVyYXRlKGdvYWwsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHNHKTtcbiAgICBpZiAocmVzdWx0LncgPT0gMS4wKSB7XG4gICAgICByZXN1bHQudyA9IHN0ZXAoMC4wLCByZXN1bHQueik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHAzID0gcmVzdWx0Lng7XG4gICAgcDQgPSByZXN1bHQueTtcbiAgICBzRyA9IHJlc3VsdC56O1xuICB9XG5cbiAgcmV0dXJuIHZlYzQocDMsIHA0LCBzRywgMC4wKTtcbn1cblxudmVjNCBrZXJuZWwoKSB7XG4gIGl2ZWMyIGxhdHRpY2VJbmRleGVzID0gaXZlYzIoa2VybmVsUG9zaXRpb24gKiB2ZWMyKGtlcm5lbFNpemUpKTtcblxuICB2ZWM0IHN0YXJ0ID0gdmVjNCgwLCAwLCAwLCBjdXJ2VmVoaWNsZSk7XG4gIHZlYzQgZW5kID0gdGV4ZWxGZXRjaChsYXR0aWNlLCBsYXR0aWNlSW5kZXhlcywgMCk7XG5cbiAgcmV0dXJuIG9wdGltaXplKHN0YXJ0LCBlbmQpO1xufVxuXG5gO1xuXG4vLyBRdWludGljIHNwaXJhbCBwYXRoIG9wdGltaXplclxuLy8gICAqIFN0YXJ0IG9mIHBhdGhzIGlzIHRoZSB2ZWhpY2xlIHBvc2Vcbi8vICAgICAqIHgtcG9zLCB5LXBvcywgYW5kIHJvdGF0aW9uIGFyZW4ndCBuZWVkZWQsIHNpbmNlIHRoZSBsYXR0aWNlIG9yaWdpbiBpcyB0aGUgdmVoaWNsZSBwb3NlXG4vLyAgICAgKiBTbyBhc3N1bWUgcG9zaXRpb24gYW5kIHJvdGF0aW9uIGFyZSAwXG4vLyAgICogRW5kcyBvZiBwYXRocyBhcmUgYWxsIGxhdGl0dWRlcyB3aXRoaW4gdGhlIGZpcnN0IChzdGF0aW9uQ29ubmVjdGl2aXR5KSBzdGF0aW9uc1xuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRVcCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2VybmVsOiBPUFRJTUlaRV9LRVJORUwsXG4gICAgICBvdXRwdXQ6IHsgbmFtZTogJ3F1aW50aWNQYXRoc0Zyb21WZWhpY2xlJywgcmVhZDogdHJ1ZSB9LFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgbGF0dGljZTogeyB0eXBlOiAnc2hhcmVkVGV4dHVyZScgfSxcbiAgICAgICAgY3VydlZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBkQ3VydlZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBkZEN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfVxuICAgICAgfVxuICAgIH07XG4gIH0sXG5cbiAgdXBkYXRlKGNvbmZpZywgcG9zZSkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzLFxuICAgICAgaGVpZ2h0OiBjb25maWcubGF0dGljZS5zdGF0aW9uQ29ubmVjdGl2aXR5LFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgY3VydlZlaGljbGU6IHBvc2UuY3VydixcbiAgICAgICAgZEN1cnZWZWhpY2xlOiBwb3NlLmRDdXJ2LFxuICAgICAgICBkZEN1cnZWZWhpY2xlOiBwb3NlLmRkQ3VydlxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbiIsImNvbnN0IFNIQVJFRF9TSEFERVIgPSBgXG5cbmNvbnN0IGZsb2F0IHNtYWxsViA9IDAuMDE7XG52ZWM0IHBhdGhTYW1wbGVzWzEyOF07XG5mbG9hdCBwYXRoU2FtcGxlQ3VydlJhdGVzWzEyOF07XG5cbmZsb2F0IGNhbGN1bGF0ZUFjY2VsZXJhdGlvbihpbnQgaW5kZXgsIGZsb2F0IGluaXRpYWxWZWxvY2l0eVNxLCBmbG9hdCBkaXN0YW5jZSkge1xuICBpZiAoaW5kZXggPD0gNCkge1xuICAgIC8vIFthTWF4SGFyZCwgYU1pbkhhcmQsIGFNYXhTb2Z0LCBhTWluU29mdCwgMF1cbiAgICByZXR1cm4gYWNjZWxlcmF0aW9uUHJvZmlsZXNbaW5kZXhdO1xuICB9IGVsc2Uge1xuICAgIGZsb2F0IGZpbmFsVmVsb2NpdHkgPSBmaW5hbFZlbG9jaXR5UHJvZmlsZXNbaW5kZXggLSA1XTtcbiAgICBpZiAoZGlzdGFuY2UgPCAwLjAwMSkgcmV0dXJuIDAuMDtcbiAgICByZXR1cm4gY2xhbXAoKGZpbmFsVmVsb2NpdHkgKiBmaW5hbFZlbG9jaXR5IC0gaW5pdGlhbFZlbG9jaXR5U3EpIC8gKDIuMCAqIGRpc3RhbmNlKSwgYWNjZWxlcmF0aW9uUHJvZmlsZXNbMV0sIGFjY2VsZXJhdGlvblByb2ZpbGVzWzBdKTtcbiAgfVxufVxuXG52ZWMyIHh5MnNsKHZlYzQgeHl0aykge1xuICB2ZWMyIHh5ID0geHl0ay54eSArIHJlYXJBeGxlVG9DZW50ZXIgKiB2ZWMyKGNvcyh4eXRrLnopLCBzaW4oeHl0ay56KSk7XG4gIHZlYzIgeHlUZXhDb29yZHMgPSAoeHkgLSB4eUNlbnRlclBvaW50KSAvIHZlYzIodGV4dHVyZVNpemUoeHlzbE1hcCwgMCkpIC8gdmVjMih4eUdyaWRDZWxsU2l6ZSkgKyAwLjU7XG4gIHJldHVybiB0ZXh0dXJlKHh5c2xNYXAsIHh5VGV4Q29vcmRzKS54eTtcbn1cblxuZmxvYXQgc2FtcGxlU3RhdGljQ29zdCh2ZWM0IHh5dGspIHtcbiAgdmVjMiBzbCA9IHh5MnNsKHh5dGspO1xuICB2ZWMyIHNsVGV4Q29vcmRzID0gKHNsIC0gc2xDZW50ZXJQb2ludCkgLyB2ZWMyKHRleHR1cmVTaXplKHNsT2JzdGFjbGVHcmlkLCAwKSkgLyB2ZWMyKHNsR3JpZENlbGxTaXplKSArIDAuNTtcbiAgZmxvYXQgb2JzdGFjbGVDb3N0ID0gdGV4dHVyZShzbE9ic3RhY2xlR3JpZCwgc2xUZXhDb29yZHMpLnI7XG5cbiAgaWYgKG9ic3RhY2xlQ29zdCA+PSAwLjc1KSByZXR1cm4gLTEuMDsgLy8gSW5maW5pdGUgY29zdFxuXG4gIG9ic3RhY2xlQ29zdCA9IHN0ZXAoMC4yNSwgb2JzdGFjbGVDb3N0KSAqIG9ic3RhY2xlSGF6YXJkQ29zdDtcblxuICBmbG9hdCBhYnNMYXRpdHVkZSA9IGFicyhzbC55KTtcbiAgaWYgKGFic0xhdGl0dWRlID49IGxhbmVTaG91bGRlckxhdGl0dWRlKSByZXR1cm4gLTEuMDtcblxuICBmbG9hdCBsYW5lQ29zdCA9IGFicyhhYnNMYXRpdHVkZSAtIGxhbmVDZW50ZXJMYXRpdHVkZSkgKiBsYW5lQ29zdFNsb3BlICsgc3RlcCgwLjAsIC1zbC55ICogc2lnbihsYW5lUHJlZmVyZW5jZSkpICogbGFuZVByZWZlcmVuY2VEaXNjb3VudDtcblxuICByZXR1cm4gb2JzdGFjbGVDb3N0ICsgbGFuZUNvc3Q7XG59XG5cbmZsb2F0IHNhbXBsZUR5bmFtaWNDb3N0KHZlYzQgeHl0aywgZmxvYXQgdGltZSwgZmxvYXQgdmVsb2NpdHksIGZsb2F0IGFjY2VsZXJhdGlvbikge1xuICB2ZWMyIHNsID0geHkyc2woeHl0ayk7XG4gIHZlYzIgc2xUZXhDb29yZHMgPSAoc2wgLSBzbENlbnRlclBvaW50KSAvIHZlYzIodGV4dHVyZVNpemUoc2xEeW5hbWljT2JzdGFjbGVHcmlkLCAwKS54eSkgLyB2ZWMyKHNsR3JpZENlbGxTaXplKSArIDAuNTtcbiAgZmxvYXQgZHluYW1pY0ZyYW1lID0gZmxvb3IodGltZSAvIGR5bmFtaWNGcmFtZVRpbWUpO1xuXG4gIGZsb2F0IG9ic3RhY2xlQ29zdCA9IHRleHR1cmUoc2xEeW5hbWljT2JzdGFjbGVHcmlkLCB2ZWMzKHNsVGV4Q29vcmRzLCBkeW5hbWljRnJhbWUpKS5yO1xuXG4gIGlmIChvYnN0YWNsZUNvc3QgPiAwLjc1KSByZXR1cm4gLTEuMDsgLy8gSW5maW5pdGUgY29zdFxuXG4gIHJldHVybiBzdGVwKDAuMjUsIG9ic3RhY2xlQ29zdCkgKiBvYnN0YWNsZUhhemFyZENvc3Q7XG59XG5cbmZsb2F0IGNhbGN1bGF0ZUF2ZXJhZ2VTdGF0aWNDb3N0KGludCBudW1TYW1wbGVzKSB7XG4gIGZsb2F0IGF2ZXJhZ2VTdGF0aWNDb3N0ID0gMC4wO1xuXG4gIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtU2FtcGxlczsgaSsrKSB7XG4gICAgZmxvYXQgY29zdCA9IHNhbXBsZVN0YXRpY0Nvc3QocGF0aFNhbXBsZXNbaV0pO1xuXG4gICAgaWYgKGNvc3QgPCAwLjApIHJldHVybiBjb3N0O1xuXG4gICAgYXZlcmFnZVN0YXRpY0Nvc3QgKz0gY29zdDtcbiAgfVxuXG4gIGF2ZXJhZ2VTdGF0aWNDb3N0IC89IGZsb2F0KG51bVNhbXBsZXMpO1xuXG4gIHJldHVybiBhdmVyYWdlU3RhdGljQ29zdDtcbn1cblxuZmxvYXQgY2FsY3VsYXRlQXZlcmFnZUR5bmFtaWNDb3N0KGludCBudW1TYW1wbGVzLCBmbG9hdCBwYXRoTGVuZ3RoLCBmbG9hdCBpbml0aWFsVGltZSwgZmxvYXQgaW5pdGlhbFZlbG9jaXR5LCBmbG9hdCBhY2NlbGVyYXRpb24sIGZsb2F0IGFiYW5kb25UaHJlc2hvbGQpIHtcbiAgZmxvYXQgcyA9IDAuMDtcbiAgZmxvYXQgZHMgPSBwYXRoTGVuZ3RoIC8gZmxvYXQobnVtU2FtcGxlcyAtIDEpO1xuICBmbG9hdCBhdmVyYWdlRHluYW1pY0Nvc3QgPSAwLjA7XG4gIGZsb2F0IG1heFZlbG9jaXR5ID0gMC4wO1xuICBmbG9hdCBtYXhMYXRlcmFsQWNjZWxlcmF0aW9uID0gMC4wO1xuICBmbG9hdCBudW1TYW1wbGVzX2YgPSBmbG9hdChudW1TYW1wbGVzKTtcblxuICBmb3IgKGludCBpID0gMDsgaSA8IG51bVNhbXBsZXM7IGkrKykge1xuICAgIHZlYzQgcGF0aFNhbXBsZSA9IHBhdGhTYW1wbGVzW2ldOyAvLyB2ZWM0KHgtcG9zLCB5LXBvcywgdGhldGEgKHJvdGF0aW9uKSwga2FwcGEgKGN1cnZhdHVyZSkpXG5cbiAgICBmbG9hdCB2ZWxvY2l0eVNxID0gMi4wICogYWNjZWxlcmF0aW9uICogcyArIGluaXRpYWxWZWxvY2l0eSAqIGluaXRpYWxWZWxvY2l0eTtcbiAgICBmbG9hdCB2ZWxvY2l0eSA9IG1heChzbWFsbFYsIHNxcnQobWF4KDAuMCwgdmVsb2NpdHlTcSkpKTtcbiAgICBtYXhWZWxvY2l0eSA9IG1heChtYXhWZWxvY2l0eSwgdmVsb2NpdHkpO1xuICAgIG1heExhdGVyYWxBY2NlbGVyYXRpb24gPSBtYXgobWF4TGF0ZXJhbEFjY2VsZXJhdGlvbiwgYWJzKHBhdGhTYW1wbGUudyAqIHZlbG9jaXR5ICogdmVsb2NpdHkpKTtcblxuICAgIGZsb2F0IHRpbWUgPSAyLjAgKiBzIC8gKGluaXRpYWxWZWxvY2l0eSArIHZlbG9jaXR5KSArIGluaXRpYWxUaW1lO1xuXG4gICAgZmxvYXQgZEN1cnYgPSBwYXRoU2FtcGxlQ3VydlJhdGVzW2ldICogdmVsb2NpdHk7XG4gICAgaWYgKGRDdXJ2ID4gZEN1cnZhdHVyZU1heCkgcmV0dXJuIC0xLjA7XG5cbiAgICBmbG9hdCBjb3N0ID0gc2FtcGxlRHluYW1pY0Nvc3QocGF0aFNhbXBsZSwgdGltZSwgdmVsb2NpdHksIGFjY2VsZXJhdGlvbik7XG4gICAgaWYgKGNvc3QgPCAwLjApIHJldHVybiBjb3N0O1xuXG4gICAgYXZlcmFnZUR5bmFtaWNDb3N0ICs9IGNvc3Q7XG4gICAgaWYgKGF2ZXJhZ2VEeW5hbWljQ29zdCAvIG51bVNhbXBsZXNfZiA+PSBhYmFuZG9uVGhyZXNob2xkKSByZXR1cm4gLTEuMDtcblxuICAgIHMgKz0gZHM7XG4gIH1cblxuICBhdmVyYWdlRHluYW1pY0Nvc3QgLz0gbnVtU2FtcGxlc19mO1xuXG4gIC8vIEFwcGx5IHNwZWVkaW5nIHBlbmFsaXR5IGlmIGFueSB2ZWxvY2l0eSBhbG9uZyB0aGUgdHJhamVjdG9yeSBpcyBvdmVyIHRoZSBzcGVlZCBsaW1pdFxuICBhdmVyYWdlRHluYW1pY0Nvc3QgKz0gc3RlcChzcGVlZExpbWl0LCBtYXhWZWxvY2l0eSkgKiBzcGVlZExpbWl0UGVuYWx0eTtcblxuICAvLyBBcHBseSBoYXJkIGFjY2VsZXJhdGlvbi9kZWNlbGVyYXRpb24gcGVuYWx0aWVzIGlmIHRoZSBhY2NlbGVyYXRpb24vZGVjZWxlcmF0aW9uIGV4Y2VlZHMgdGhlIHNvZnQgbGltaXRzXG4gIGF2ZXJhZ2VEeW5hbWljQ29zdCArPSBzdGVwKGFjY2VsZXJhdGlvblByb2ZpbGVzWzJdICsgMC4wMDAxLCBhY2NlbGVyYXRpb24pICogaGFyZEFjY2VsZXJhdGlvblBlbmFsdHk7XG4gIGF2ZXJhZ2VEeW5hbWljQ29zdCArPSAoMS4wIC0gc3RlcChhY2NlbGVyYXRpb25Qcm9maWxlc1szXSwgYWNjZWxlcmF0aW9uKSkgKiBoYXJkRGVjZWxlcmF0aW9uUGVuYWx0eTtcblxuICAvLyBQZW5hbGl6ZSBsYXRlcmFsIGFjY2VsZXJhdGlvblxuICBhdmVyYWdlRHluYW1pY0Nvc3QgKz0gc3RlcChzb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvbkxpbWl0LCBtYXhMYXRlcmFsQWNjZWxlcmF0aW9uKSAqIHNvZnRMYXRlcmFsQWNjZWxlcmF0aW9uUGVuYWx0eTtcbiAgYXZlcmFnZUR5bmFtaWNDb3N0ICs9IGxpbmVhckxhdGVyYWxBY2NlbGVyYXRpb25QZW5hbHR5ICogbWF4TGF0ZXJhbEFjY2VsZXJhdGlvbjtcblxuICByZXR1cm4gYXZlcmFnZUR5bmFtaWNDb3N0O1xufVxuXG52ZWMzIGNhbGN1bGF0ZUFWVChpbnQgYWNjZWxlcmF0aW9uSW5kZXgsIGZsb2F0IGluaXRpYWxWZWxvY2l0eSwgZmxvYXQgaW5pdGlhbFRpbWUsIGZsb2F0IHBhdGhMZW5ndGgpIHtcbiAgZmxvYXQgaW5pdGlhbFZlbG9jaXR5U3EgPSBpbml0aWFsVmVsb2NpdHkgKiBpbml0aWFsVmVsb2NpdHk7XG4gIGZsb2F0IGFjY2VsZXJhdGlvbiA9IGNhbGN1bGF0ZUFjY2VsZXJhdGlvbihhY2NlbGVyYXRpb25JbmRleCwgaW5pdGlhbFZlbG9jaXR5U3EsIHBhdGhMZW5ndGgpO1xuXG4gIGZsb2F0IGZpbmFsVmVsb2NpdHlTcSA9IDIuMCAqIGFjY2VsZXJhdGlvbiAqIHBhdGhMZW5ndGggKyBpbml0aWFsVmVsb2NpdHlTcTtcbiAgZmxvYXQgZmluYWxWZWxvY2l0eSA9IG1heChzbWFsbFYsIHNxcnQobWF4KDAuMCwgZmluYWxWZWxvY2l0eVNxKSkpO1xuXG4gIGZsb2F0IGZpbmFsVGltZSA9IGluaXRpYWxUaW1lO1xuXG4gIGlmIChhY2NlbGVyYXRpb24gPT0gMC4wKSB7XG4gICAgZmluYWxUaW1lICs9IHBhdGhMZW5ndGggLyBmaW5hbFZlbG9jaXR5O1xuICB9IGVsc2UgaWYgKGZpbmFsVmVsb2NpdHlTcSA8PSAwLjApIHsgLy8gQ2FsY3VsYXRlIGZpbmFsIHRpbWUgaWYgdGhlIHZlaGljbGUgc3RvcHMgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHRyYWplY3RvcnlcbiAgICBmbG9hdCBkaXN0YW5jZUxlZnQgPSBwYXRoTGVuZ3RoIC0gKHNtYWxsViAqIHNtYWxsViAtIGluaXRpYWxWZWxvY2l0eVNxKSAvICgyLjAgKiBhY2NlbGVyYXRpb24pO1xuICAgIGZpbmFsVGltZSArPSAoZmluYWxWZWxvY2l0eSAtIGluaXRpYWxWZWxvY2l0eSkgLyBhY2NlbGVyYXRpb24gKyBkaXN0YW5jZUxlZnQgLyBzbWFsbFY7XG4gIH0gZWxzZSB7XG4gICAgZmluYWxUaW1lICs9IDIuMCAqIHBhdGhMZW5ndGggLyAoZmluYWxWZWxvY2l0eSArIGluaXRpYWxWZWxvY2l0eSk7XG4gIH1cblxuICByZXR1cm4gdmVjMyhhY2NlbGVyYXRpb24sIGZpbmFsVmVsb2NpdHksIGZpbmFsVGltZSk7XG59XG5cbmA7XG5cbmNvbnN0IFNBTVBMRV9DVUJJQ19QQVRIX0ZOID0gYFxuXG5pbnQgc2FtcGxlQ3ViaWNQYXRoKHZlYzQgc3RhcnQsIHZlYzQgZW5kLCB2ZWM0IGN1YmljUGF0aFBhcmFtcykge1xuICBmbG9hdCBwMCA9IHN0YXJ0Lnc7XG4gIGZsb2F0IHAxID0gY3ViaWNQYXRoUGFyYW1zLng7XG4gIGZsb2F0IHAyID0gY3ViaWNQYXRoUGFyYW1zLnk7XG4gIGZsb2F0IHAzID0gZW5kLnc7XG4gIGZsb2F0IHNHID0gY3ViaWNQYXRoUGFyYW1zLno7XG5cbiAgaWYgKHNHIDw9IDAuMCkgcmV0dXJuIDA7XG5cbiAgaW50IG51bVNhbXBsZXMgPSBpbnQoY2VpbChzRyAvIHBhdGhTYW1wbGluZ1N0ZXApKSArIDE7XG5cbiAgZmxvYXQgc0dfMiA9IHNHICogc0c7XG4gIGZsb2F0IHNHXzMgPSBzR18yICogc0c7XG5cbiAgZmxvYXQgYSA9IHAwO1xuICBmbG9hdCBiID0gKC01LjUgKiBwMCArIDkuMCAqIHAxIC0gNC41ICogcDIgKyBwMykgLyBzRztcbiAgZmxvYXQgYyA9ICg5LjAgKiBwMCAtIDIyLjUgKiBwMSArIDE4LjAgKiBwMiAtIDQuNSAqIHAzKSAvIHNHXzI7XG4gIGZsb2F0IGQgPSAoLTQuNSAqIChwMCAtIDMuMCAqIHAxICsgMy4wICogcDIgLSBwMykpIC8gc0dfMztcblxuICBwYXRoU2FtcGxlc1swXSA9IHN0YXJ0O1xuXG4gIGZsb2F0IGRzID0gc0cgLyBmbG9hdChudW1TYW1wbGVzIC0gMSk7XG4gIGZsb2F0IHMgPSBkcztcbiAgdmVjMiBkeHkgPSB2ZWMyKDApO1xuICB2ZWMyIHByZXZDb3NTaW4gPSB2ZWMyKGNvcyhzdGFydC56KSwgc2luKHN0YXJ0LnopKTtcblxuICBmb3IgKGludCBpID0gMTsgaSA8IG51bVNhbXBsZXM7IGkrKykge1xuICAgIGZsb2F0IHJvdCA9ICgoKGQgKiBzIC8gNC4wICsgYyAvIDMuMCkgKiBzICsgYiAvIDIuMCkgKiBzICsgYSkgKiBzICsgc3RhcnQuejtcbiAgICBmbG9hdCBjdXJ2ID0gKChkICogcyArIGMpICogcyArIGIpICogcyArIGE7XG5cbiAgICB2ZWMyIGNvc1NpbiA9IHZlYzIoY29zKHJvdCksIHNpbihyb3QpKTtcbiAgICBkeHkgPSBkeHkgKiB2ZWMyKGZsb2F0KGkgLSAxKSAvIGZsb2F0KGkpKSArIChjb3NTaW4gKyBwcmV2Q29zU2luKSAvIHZlYzIoMiAqIGkpO1xuXG4gICAgcGF0aFNhbXBsZXNbaV0gPSB2ZWM0KGR4eSAqIHZlYzIocykgKyBzdGFydC54eSwgcm90LCBjdXJ2KTtcbiAgICBwYXRoU2FtcGxlQ3VydlJhdGVzW2ldID0gYiArIHMgKiAoMi4wICogYyArIDMuMCAqIGQgKiBzKTtcblxuICAgIHMgKz0gZHM7XG4gICAgcHJldkNvc1NpbiA9IGNvc1NpbjtcbiAgfVxuXG4gIHJldHVybiBudW1TYW1wbGVzO1xufVxuXG5gO1xuXG5jb25zdCBTQU1QTEVfUVVJTlRJQ19QQVRIX0ZOID0gYFxuXG5pbnQgc2FtcGxlUXVpbnRpY1BhdGgodmVjNCBzdGFydCwgdmVjNCBlbmQsIHZlYzQgcXVpbnRpY1BhdGhQYXJhbXMpIHtcbiAgZmxvYXQgcDAgPSBzdGFydC53O1xuICBmbG9hdCBwMSA9IGRDdXJ2VmVoaWNsZTtcbiAgZmxvYXQgcDIgPSBkZEN1cnZWZWhpY2xlO1xuICBmbG9hdCBwMyA9IHF1aW50aWNQYXRoUGFyYW1zLng7XG4gIGZsb2F0IHA0ID0gcXVpbnRpY1BhdGhQYXJhbXMueTtcbiAgZmxvYXQgcDUgPSBlbmQudztcbiAgZmxvYXQgc0cgPSBxdWludGljUGF0aFBhcmFtcy56O1xuXG4gIGlmIChzRyA8PSAwLjApIHJldHVybiAwO1xuXG4gIGludCBudW1TYW1wbGVzID0gaW50KGNlaWwoc0cgLyBwYXRoU2FtcGxpbmdTdGVwKSkgKyAxO1xuXG4gIGZsb2F0IHNHXzIgPSBzRyAqIHNHO1xuICBmbG9hdCBzR18zID0gc0dfMiAqIHNHO1xuXG4gIGZsb2F0IGEgPSBwMDtcbiAgZmxvYXQgYiA9IHAxO1xuICBmbG9hdCBjID0gcDIgLyAyLjA7XG4gIGZsb2F0IGQgPSAoLTcxLjg3NSAqIHAwICsgODEuMCAqIHAzIC0gMTAuMTI1ICogcDQgKyBwNSAtIDIxLjI1ICogcDEgKiBzRyAtIDIuNzUgKiBwMiAqIHNHXzIpIC8gc0dfMztcbiAgZmxvYXQgZSA9ICgxNjYuNSAqIHAwIC0gMjAyLjUgKiBwMyArIDQwLjUgKiBwNCAtIDQuNSAqIHA1ICsgNDUuMCAqIHAxICogc0cgKyA0LjUgKiBwMiAqIHNHXzIpIC8gKHNHXzIgKiBzR18yKTtcbiAgZmxvYXQgZiA9ICgtOTUuNjI1ICogcDAgKyAxMjEuNSAqIHAzIC0gMzAuMzc1ICogcDQgKyA0LjUgKiBwNSAtIDI0Ljc1ICogcDEgKiBzRyAtIDIuMjUgKiBwMiAqIHNHXzIpIC8gKHNHXzIgKiBzR18zKTtcblxuICBwYXRoU2FtcGxlc1swXSA9IHN0YXJ0O1xuXG4gIGZsb2F0IGRzID0gc0cgLyBmbG9hdChudW1TYW1wbGVzIC0gMSk7XG4gIGZsb2F0IHMgPSBkcztcbiAgdmVjMiBkeHkgPSB2ZWMyKDApO1xuICB2ZWMyIHByZXZDb3NTaW4gPSB2ZWMyKGNvcyhzdGFydC56KSwgc2luKHN0YXJ0LnopKTtcblxuICBmb3IgKGludCBpID0gMTsgaSA8IG51bVNhbXBsZXM7IGkrKykge1xuICAgIGZsb2F0IHJvdCA9ICgoKCgoZiAqIHMgLyA2LjAgKyBlIC8gNS4wKSAqIHMgKyBkIC8gNC4wKSAqIHMgKyBjIC8gMy4wKSAqIHMgKyBiIC8gMi4wKSAqIHMgKyBhKSAqIHMgKyBzdGFydC56O1xuICAgIGZsb2F0IGN1cnYgPSAoKCgoZiAqIHMgKyBlKSAqIHMgKyBkKSAqIHMgKyBjKSAqIHMgKyBiKSAqIHMgKyBhO1xuXG4gICAgdmVjMiBjb3NTaW4gPSB2ZWMyKGNvcyhyb3QpLCBzaW4ocm90KSk7XG4gICAgZHh5ID0gZHh5ICogdmVjMihmbG9hdChpIC0gMSkgLyBmbG9hdChpKSkgKyAoY29zU2luICsgcHJldkNvc1NpbikgLyB2ZWMyKDIgKiBpKTtcblxuICAgIHBhdGhTYW1wbGVzW2ldID0gdmVjNChkeHkgKiB2ZWMyKHMpICsgc3RhcnQueHksIHJvdCwgY3Vydik7XG4gICAgcGF0aFNhbXBsZUN1cnZSYXRlc1tpXSA9IGIgKyBzICogKDIuMCAqIGMgKyBzICogKDMuMCAqIGQgKyBzICogKDQuMCAqIGUgKyA1LjAgKiBmICogcykpKTtcblxuICAgIHMgKz0gZHM7XG4gICAgcHJldkNvc1NpbiA9IGNvc1NpbjtcbiAgfVxuXG4gIHJldHVybiBudW1TYW1wbGVzO1xufVxuXG5gO1xuXG5jb25zdCBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTID0gODtcbmNvbnN0IE5VTV9WRUxPQ0lUWV9SQU5HRVMgPSA0O1xuY29uc3QgTlVNX1RJTUVfUkFOR0VTID0gMjtcblxuY29uc3QgU0hBUkVEX1VOSUZPUk1TID0ge1xuICB4eXNsTWFwOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJyB9LFxuICBzbE9ic3RhY2xlR3JpZDogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScsIG5hbWU6ICdzbE9ic3RhY2xlR3JpZERpbGF0ZWQnIH0sXG4gIHNsRHluYW1pY09ic3RhY2xlR3JpZDogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScsIG5hbWU6ICdzbER5bmFtaWNPYnN0YWNsZUdyaWQnLCB0ZXh0dXJlVHlwZTogJzJEQXJyYXknIH0sXG4gIGFjY2VsZXJhdGlvblByb2ZpbGVzOiB7IHR5cGU6ICdmbG9hdCcsIGxlbmd0aDogNSB9LFxuICBmaW5hbFZlbG9jaXR5UHJvZmlsZXM6IHsgdHlwZTogJ2Zsb2F0JywgbGVuZ3RoOiAzIH0sXG4gIHh5Q2VudGVyUG9pbnQ6IHsgdHlwZTogJ3ZlYzInIH0sXG4gIHh5R3JpZENlbGxTaXplOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgc2xDZW50ZXJQb2ludDogeyB0eXBlOiAndmVjMicgfSxcbiAgc2xHcmlkQ2VsbFNpemU6IHsgdHlwZTogJ2Zsb2F0J30sXG4gIGxhbmVDZW50ZXJMYXRpdHVkZTogeyB0eXBlOiAnZmxvYXQnfSxcbiAgbGFuZVNob3VsZGVyTGF0aXR1ZGU6IHsgdHlwZTogJ2Zsb2F0J30sXG4gIGxhbmVDb3N0U2xvcGU6IHsgdHlwZTogJ2Zsb2F0J30sXG4gIGxhbmVQcmVmZXJlbmNlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgbGFuZVByZWZlcmVuY2VEaXNjb3VudDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIG9ic3RhY2xlSGF6YXJkQ29zdDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIHNwZWVkTGltaXQ6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICBzcGVlZExpbWl0UGVuYWx0eTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIGhhcmRBY2NlbGVyYXRpb25QZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgaGFyZERlY2VsZXJhdGlvblBlbmFsdHk6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICBzb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvbkxpbWl0OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgc29mdExhdGVyYWxBY2NlbGVyYXRpb25QZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgbGluZWFyTGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHk6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICBkQ3VydmF0dXJlTWF4OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgcGF0aFNhbXBsaW5nU3RlcDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIHJlYXJBeGxlVG9DZW50ZXI6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICBkeW5hbWljRnJhbWVUaW1lOiB7IHR5cGU6ICdmbG9hdCcgfVxufTtcblxuZnVuY3Rpb24gYnVpbGRVbmlmb3JtVmFsdWVzKGNvbmZpZywgeHlDZW50ZXJQb2ludCwgc2xDZW50ZXJQb2ludCwgZHluYW1pY0ZyYW1lVGltZSkge1xuICByZXR1cm4ge1xuICAgIGFjY2VsZXJhdGlvblByb2ZpbGVzOiBbMy41LCAtNi41LCAyLjAsIC0zLjAsIDBdLFxuICAgIGZpbmFsVmVsb2NpdHlQcm9maWxlczogWzAuOTk5ICogY29uZmlnLnNwZWVkTGltaXQsIDEuMCwgMC4wMV0sXG4gICAgeHlDZW50ZXJQb2ludDogW3h5Q2VudGVyUG9pbnQueCwgeHlDZW50ZXJQb2ludC55XSxcbiAgICB4eUdyaWRDZWxsU2l6ZTogY29uZmlnLnh5R3JpZENlbGxTaXplLFxuICAgIHNsQ2VudGVyUG9pbnQ6IFtzbENlbnRlclBvaW50LngsIHNsQ2VudGVyUG9pbnQueV0sXG4gICAgc2xHcmlkQ2VsbFNpemU6IGNvbmZpZy5zbEdyaWRDZWxsU2l6ZSxcbiAgICBsYW5lQ2VudGVyTGF0aXR1ZGU6IGNvbmZpZy5sYW5lQ2VudGVyTGF0aXR1ZGUsXG4gICAgbGFuZVNob3VsZGVyTGF0aXR1ZGU6IGNvbmZpZy5sYW5lU2hvdWxkZXJMYXRpdHVkZSxcbiAgICBsYW5lQ29zdFNsb3BlOiBjb25maWcubGFuZUNvc3RTbG9wZSxcbiAgICBsYW5lUHJlZmVyZW5jZTogY29uZmlnLmxhbmVQcmVmZXJlbmNlLFxuICAgIGxhbmVQcmVmZXJlbmNlRGlzY291bnQ6IGNvbmZpZy5sYW5lUHJlZmVyZW5jZURpc2NvdW50LFxuICAgIG9ic3RhY2xlSGF6YXJkQ29zdDogY29uZmlnLm9ic3RhY2xlSGF6YXJkQ29zdCxcbiAgICBzcGVlZExpbWl0OiBjb25maWcuc3BlZWRMaW1pdCxcbiAgICBzcGVlZExpbWl0UGVuYWx0eTogY29uZmlnLnNwZWVkTGltaXRQZW5hbHR5LFxuICAgIGhhcmRBY2NlbGVyYXRpb25QZW5hbHR5OiBjb25maWcuaGFyZEFjY2VsZXJhdGlvblBlbmFsdHksXG4gICAgaGFyZERlY2VsZXJhdGlvblBlbmFsdHk6IGNvbmZpZy5oYXJkRGVjZWxlcmF0aW9uUGVuYWx0eSxcbiAgICBzb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvbkxpbWl0OiBjb25maWcuc29mdExhdGVyYWxBY2NlbGVyYXRpb25MaW1pdCxcbiAgICBzb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHk6IGNvbmZpZy5zb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHksXG4gICAgbGluZWFyTGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHk6IGNvbmZpZy5saW5lYXJMYXRlcmFsQWNjZWxlcmF0aW9uUGVuYWx0eSxcbiAgICBkQ3VydmF0dXJlTWF4OiBjb25maWcuZEN1cnZhdHVyZU1heCxcbiAgICBwYXRoU2FtcGxpbmdTdGVwOiBjb25maWcucGF0aFNhbXBsaW5nU3RlcCxcbiAgICByZWFyQXhsZVRvQ2VudGVyOiBjb25maWcucmVhckF4bGVUb0NlbnRlcixcbiAgICBkeW5hbWljRnJhbWVUaW1lOiBkeW5hbWljRnJhbWVUaW1lXG4gIH07XG59XG5cbmV4cG9ydCB7XG4gIFNIQVJFRF9TSEFERVIsXG4gIFNBTVBMRV9DVUJJQ19QQVRIX0ZOLFxuICBTQU1QTEVfUVVJTlRJQ19QQVRIX0ZOLFxuXG4gIE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMsXG4gIE5VTV9WRUxPQ0lUWV9SQU5HRVMsXG4gIE5VTV9USU1FX1JBTkdFUyxcblxuICBTSEFSRURfVU5JRk9STVMsXG4gIGJ1aWxkVW5pZm9ybVZhbHVlc1xufVxuIiwiaW1wb3J0IHsgU0hBUkVEX1NIQURFUiwgU0FNUExFX0NVQklDX1BBVEhfRk4sIFNBTVBMRV9RVUlOVElDX1BBVEhfRk4sIE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMsIFNIQVJFRF9VTklGT1JNUywgYnVpbGRVbmlmb3JtVmFsdWVzIH0gZnJvbSBcIi4vZ3JhcGhTZWFyY2hTaGFyZWQuanNcIjtcblxuZnVuY3Rpb24gZnJvbVZlaGljbGVQYXRoQ29zdHNLZXJuZWwocGF0aFR5cGUpIHtcbiAgcmV0dXJuIFNIQVJFRF9TSEFERVIgKyAocGF0aFR5cGUgPT0gJ2N1YmljJyA/IFNBTVBMRV9DVUJJQ19QQVRIX0ZOIDogU0FNUExFX1FVSU5USUNfUEFUSF9GTikgK1xuXG5gXG5cbi8qIENhbGN1bGF0ZSBjb3N0IG9mIGEge2N1YmljfHF1aW50aWN9IHBhdGggZnJvbSB2ZWhpY2xlIHRvIChzdGF0aW9uQ29ubmVjdGl2aXR5ICogbnVtTGF0aXR1ZGVzICogbnVtQWNjZWxlcmF0aW9ucykgbm9kZXNcbiAqICAgd2lkdGg6IG51bUxhdGl0dWRlc1xuICogICBoZWlnaHQ6IHN0YXRpb24gKiBudW1BY2NlbGVyYXRpb25zXG4gKi9cbnZlYzQga2VybmVsKCkge1xuICBpdmVjMiBpbmRleGVzID0gaXZlYzIoa2VybmVsUG9zaXRpb24gKiB2ZWMyKGtlcm5lbFNpemUpKTtcblxuICBpbnQgbGF0aXR1ZGUgPSBpbmRleGVzLng7XG4gIGludCBzdGF0aW9uID0gaW5kZXhlcy55IC8gbnVtQWNjZWxlcmF0aW9ucztcbiAgaW50IGFjY2VsZXJhdGlvbkluZGV4ID0gaW50KG1vZChmbG9hdChpbmRleGVzLnkpLCBmbG9hdChudW1BY2NlbGVyYXRpb25zKSkpO1xuXG4gIHZlYzQgcGF0aFN0YXJ0ID0gdmVjNCgwLCAwLCAwLCBjdXJ2VmVoaWNsZSk7XG4gIHZlYzQgcGF0aEVuZCA9IHRleGVsRmV0Y2gobGF0dGljZSwgaXZlYzIobGF0aXR1ZGUsIHN0YXRpb24pLCAwKTtcblxuICB2ZWM0IHBhdGhQYXJhbXMgPSB0ZXhlbEZldGNoKHBhdGhzRnJvbVZlaGljbGUsIGl2ZWMyKGxhdGl0dWRlLCBzdGF0aW9uKSwgMCk7XG5cbiAgLy8gSWYgdGhlIHBhdGggZGlkbid0IGNvbnZlcmdlXG4gIGlmIChwYXRoUGFyYW1zLncgPT0gMC4wKSByZXR1cm4gdmVjNCgtMSk7XG5cbiAgaW50IG51bVNhbXBsZXMgPSAke3BhdGhUeXBlID09ICdjdWJpYycgPyAnc2FtcGxlQ3ViaWNQYXRoJyA6ICdzYW1wbGVRdWludGljUGF0aCd9KHBhdGhTdGFydCwgcGF0aEVuZCwgcGF0aFBhcmFtcyk7XG4gIGZsb2F0IHBhdGhMZW5ndGggPSBwYXRoUGFyYW1zLno7XG5cbiAgaWYgKG51bVNhbXBsZXMgPCAyKSByZXR1cm4gdmVjNCgtMSk7XG5cbiAgZmxvYXQgYXZlcmFnZVN0YXRpY0Nvc3QgPSBjYWxjdWxhdGVBdmVyYWdlU3RhdGljQ29zdChudW1TYW1wbGVzKTtcbiAgaWYgKGF2ZXJhZ2VTdGF0aWNDb3N0IDwgMC4wKSByZXR1cm4gdmVjNCgtMSk7XG5cbiAgaW50IHNsSW5kZXggPSBzdGF0aW9uICoga2VybmVsU2l6ZS54ICsgbGF0aXR1ZGU7XG4gIGZsb2F0IGh5c3RlcmVzaXNBZGp1c3RtZW50ID0gKHNsSW5kZXggPT0gZmlyc3RMYXR0aWNlUG9pbnQgfHwgc2xJbmRleCA9PSBzZWNvbmRMYXR0aWNlUG9pbnQpID8gIDAuMCA6IGh5c3RlcmVzaXNEaXNjb3VudDtcbiAgYXZlcmFnZVN0YXRpY0Nvc3QgKz0gaHlzdGVyZXNpc0FkanVzdG1lbnQ7XG5cbiAgdmVjMyBhdnQgPSBjYWxjdWxhdGVBVlQoYWNjZWxlcmF0aW9uSW5kZXgsIHZlbG9jaXR5VmVoaWNsZSwgMC4wLCBwYXRoTGVuZ3RoKTtcbiAgZmxvYXQgYWNjZWxlcmF0aW9uID0gYXZ0Lng7XG4gIGZsb2F0IGZpbmFsVmVsb2NpdHkgPSBhdnQueTtcbiAgZmxvYXQgZmluYWxUaW1lID0gYXZ0Lno7XG5cbiAgZmxvYXQgYXZlcmFnZUR5bmFtaWNDb3N0ID0gY2FsY3VsYXRlQXZlcmFnZUR5bmFtaWNDb3N0KG51bVNhbXBsZXMsIHBhdGhMZW5ndGgsIDAuMCwgdmVsb2NpdHlWZWhpY2xlLCBhY2NlbGVyYXRpb24sIDEuMCAvIDAuMCk7XG4gIGlmIChhdmVyYWdlRHluYW1pY0Nvc3QgPCAwLjApIHJldHVybiB2ZWM0KC0xKTtcblxuICBhdmVyYWdlRHluYW1pY0Nvc3QgKz0gYWNjZWxlcmF0aW9uQ2hhbmdlUGVuYWx0eTtcblxuICAvLyBUaGUgY29zdCBvZiBhIHRyYWplY3RvcnkgaXMgdGhlIGF2ZXJhZ2Ugc2FtcGxlIGNvc3Qgc2NhbGVkIGJ5IHRoZSBwYXRoIGxlbmd0aFxuICBmbG9hdCB0b3RhbENvc3QgPSAoYXZlcmFnZVN0YXRpY0Nvc3QgKyBhdmVyYWdlRHluYW1pY0Nvc3QgKyAke3BhdGhUeXBlID09ICdjdWJpYycgPyAnKGN1YmljUGF0aFBlbmFsdHkgKiB2ZWxvY2l0eVZlaGljbGUgKiB2ZWxvY2l0eVZlaGljbGUpJyA6ICcwLjAnfSkgKiBwYXRoTGVuZ3RoO1xuICAke3BhdGhUeXBlICE9ICdjdWJpYycgPyAndG90YWxDb3N0ID0gLTEuMDsnIDogJyd9XG5cbiAgcmV0dXJuIHZlYzQodG90YWxDb3N0LCBmaW5hbFZlbG9jaXR5LCBmaW5hbFRpbWUsICR7cGF0aFR5cGUgPT0gJ2N1YmljJyA/ICctMicgOiAnLTEnfSk7XG59XG5cbmA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAga2VybmVsOiBmcm9tVmVoaWNsZVBhdGhDb3N0c0tlcm5lbCgnY3ViaWMnKSxcbiAgICAgICAgb3V0cHV0OiB7IG5hbWU6ICdjdWJpY1BhdGhGcm9tVmVoaWNsZUNvc3RzJyB9LFxuICAgICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgU0hBUkVEX1VOSUZPUk1TLCB7XG4gICAgICAgICAgbGF0dGljZTogeyB0eXBlOiAnc2hhcmVkVGV4dHVyZScgfSxcbiAgICAgICAgICBwYXRoc0Zyb21WZWhpY2xlOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJywgbmFtZTogJ2N1YmljUGF0aHNGcm9tVmVoaWNsZScgfSxcbiAgICAgICAgICBmaXJzdExhdHRpY2VQb2ludDogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgIHNlY29uZExhdHRpY2VQb2ludDogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgIHZlbG9jaXR5VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgICAgY3VydlZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICAgIG51bUFjY2VsZXJhdGlvbnM6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICBjdWJpY1BhdGhQZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgICBoeXN0ZXJlc2lzRGlzY291bnQ6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICAgIGFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHk6IHsgdHlwZTogJ2Zsb2F0JyB9XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXJuZWw6IGZyb21WZWhpY2xlUGF0aENvc3RzS2VybmVsKCdxdWludGljJyksXG4gICAgICAgIG91dHB1dDogeyBuYW1lOiAncXVpbnRpY1BhdGhGcm9tVmVoaWNsZUNvc3RzJyB9LFxuICAgICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgU0hBUkVEX1VOSUZPUk1TLCB7XG4gICAgICAgICAgbGF0dGljZTogeyB0eXBlOiAnc2hhcmVkVGV4dHVyZScgfSxcbiAgICAgICAgICBwYXRoc0Zyb21WZWhpY2xlOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJywgbmFtZTogJ3F1aW50aWNQYXRoc0Zyb21WZWhpY2xlJyB9LFxuICAgICAgICAgIGZpcnN0TGF0dGljZVBvaW50OiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgc2Vjb25kTGF0dGljZVBvaW50OiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgdmVsb2NpdHlWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgICBjdXJ2VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgICAgZEN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgICBkZEN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgICBudW1BY2NlbGVyYXRpb25zOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgaHlzdGVyZXNpc0Rpc2NvdW50OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgICBhY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIF07XG4gIH0sXG5cbiAgdXBkYXRlKGNvbmZpZywgcG9zZSwgeHlDZW50ZXJQb2ludCwgc2xDZW50ZXJQb2ludCwgZmlyc3RMYXR0aWNlUG9pbnQsIHNlY29uZExhdHRpY2VQb2ludCwgZHluYW1pY0ZyYW1lVGltZSkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHdpZHRoOiBjb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMsXG4gICAgICAgIGhlaWdodDogY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSAqIE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMsXG4gICAgICAgIHVuaWZvcm1zOiBPYmplY3QuYXNzaWduKHt9LCBidWlsZFVuaWZvcm1WYWx1ZXMoY29uZmlnLCB4eUNlbnRlclBvaW50LCBzbENlbnRlclBvaW50LCBkeW5hbWljRnJhbWVUaW1lKSwge1xuICAgICAgICAgIGZpcnN0TGF0dGljZVBvaW50OiBmaXJzdExhdHRpY2VQb2ludCxcbiAgICAgICAgICBzZWNvbmRMYXR0aWNlUG9pbnQ6IHNlY29uZExhdHRpY2VQb2ludCxcbiAgICAgICAgICB2ZWxvY2l0eVZlaGljbGU6IHBvc2UudmVsb2NpdHksXG4gICAgICAgICAgY3VydlZlaGljbGU6IHBvc2UuY3VydixcbiAgICAgICAgICBudW1BY2NlbGVyYXRpb25zOiBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTLFxuICAgICAgICAgIGN1YmljUGF0aFBlbmFsdHk6IGNvbmZpZy5jdWJpY1BhdGhQZW5hbHR5LFxuICAgICAgICAgIGh5c3RlcmVzaXNEaXNjb3VudDogY29uZmlnLmh5c3RlcmVzaXNEaXNjb3VudCxcbiAgICAgICAgICBhY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5OiBjb25maWcuYWNjZWxlcmF0aW9uQ2hhbmdlUGVuYWx0eVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgd2lkdGg6IGNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyxcbiAgICAgICAgaGVpZ2h0OiBjb25maWcubGF0dGljZS5zdGF0aW9uQ29ubmVjdGl2aXR5ICogTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyxcbiAgICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIGJ1aWxkVW5pZm9ybVZhbHVlcyhjb25maWcsIHh5Q2VudGVyUG9pbnQsIHNsQ2VudGVyUG9pbnQsIGR5bmFtaWNGcmFtZVRpbWUpLCB7XG4gICAgICAgICAgZmlyc3RMYXR0aWNlUG9pbnQ6IGZpcnN0TGF0dGljZVBvaW50LFxuICAgICAgICAgIHNlY29uZExhdHRpY2VQb2ludDogc2Vjb25kTGF0dGljZVBvaW50LFxuICAgICAgICAgIHZlbG9jaXR5VmVoaWNsZTogcG9zZS52ZWxvY2l0eSxcbiAgICAgICAgICBjdXJ2VmVoaWNsZTogcG9zZS5jdXJ2LFxuICAgICAgICAgIGRDdXJ2VmVoaWNsZTogcG9zZS5kQ3VydixcbiAgICAgICAgICBkZEN1cnZWZWhpY2xlOiBwb3NlLmRkQ3VydixcbiAgICAgICAgICBudW1BY2NlbGVyYXRpb25zOiBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTLFxuICAgICAgICAgIGh5c3RlcmVzaXNEaXNjb3VudDogY29uZmlnLmh5c3RlcmVzaXNEaXNjb3VudCxcbiAgICAgICAgICBhY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5OiBjb25maWcuYWNjZWxlcmF0aW9uQ2hhbmdlUGVuYWx0eVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIF07XG4gIH1cbn1cbiIsIi8qIFN0YXRlIExhdHRpY2UgQ29zdCBNYXBcbiAqIFxuICogNS1kaW1lbnNpb25hbCBub2RlOiBzdGF0aW9uLCBsYXRpdHVkZSwgYWNjZWxlcmF0aW9uIHByb2ZpbGUsIHZlbG9jaXR5LCB0aW1lXG4gKlxuICogQSBkcmF3IGNhbGwgcGVyIHN0YXRpb24gc1xuICogICAqIElucHV0IHRvIGtlcm5lbDogbGF0aXR1ZGUgbCwgYWNjZWxlcmF0aW9uIHByb2ZpbGUgYSwgdmVsb2NpdHkgcmFuZ2UgdiwgdGltZSByYW5nZSB0XG4gKiAgICogRmluZCBhbGwgU0wgdmVydGljZXMgdGhhdCBjYW4gY29ubmVjdCB0byB0aGlzIG5vZGVcbiAqICAgKiBGb3IgZWFjaCBvZiB0aG9zZSB2ZXJ0aWNlcywgY2hlY2sgaWYgYW55IHRlcm1pbmF0ZSBpbiB0aGlzIHNwZWNpZmljIHZlbG9jaXR5IGFuZCB0aW1lIHJhbmdlXG4gKiAgICAgKiBCYXNlZCBvbiBpbml0aWFsIHZlbG9jaXR5LCBpbml0aWFsIHRpbWUsIGFuZCBhY2NlbGVyYXRpb25cbiAqICAgICAqIEVhY2ggY29ubmVjdGVkIFNMIHZlcnRleCBzaG91bGQgaGF2ZSBhICogdiAqIHQgbm9kZXMgdGhhdCBjb3VsZCBwb3NzaWJseSB0ZXJtaW5hdGUgYXQgdGhpcyBub2RlXG4gKiAgICogRm9yIGFsbCB2YWxpZCBlZGdlcywgZmluZCB0aGUgb25lIHdpdGggdGhlIGxvd2VzdCBjb3N0XG4gKlxuICogSW5wdXQ6XG4gKiAgICogMkQgdGV4dHVyZSBhcnJheSBjb3N0IG1hcFxuICogICAgICogSGVpZ2h0OiBudW0gb2YgbGF0aXR1ZGVzICh+MjApXG4gKiAgICAgKiBXaWR0aDogbnVtIG9mIGFjY2VsZXJhdGlvbiBwcm9maWxlcyAqIG51bSBvZiB0aW1lIHJhbmdlcyAqIG51bSBvZiB2ZWxvY2l0eSByYW5nZXMgKDggKiAyICogNCA9IH42NClcbiAqICAgICAgICogQSBmbGF0dGVuZWQgM0QgYXJyYXk6XG4gKiAgICAgICAgIGQxOiBhY2NlbGVyYXRpb25cbiAqICAgICAgICAgZDI6IHZlbG9jaXR5XG4gKiAgICAgICAgIGQzOiB0aW1lXG4gKiAgICAgKiBMYXllcjogbnVtIG9mIHN0YXRpb25zICh+MTApXG4gKiAgIFxuICogT3V0cHV0OlxuICogICAqIDJEIHRleHR1cmUgc2xpY2Ugb2YgdGhlIG5leHQgc3RhdGlvbiBpbiB0aGUgaW5wdXQgMkQgdGV4dHVyZSBhcnJheSBjb3N0IG1hcFxuICpcbiAqIENvc3QgTWFwIEVsZW1lbnRzOlxuICogICAqIFRyYXZlcnNhbCBjb3N0IHNvIGZhclxuICogICAqIEVuZGluZyB2ZWxvY2l0eVxuICogICAqIEVuZGluZyB0aW1lXG4gKiAgICogSW5kZXggb2YgcGFyZW50IG5vZGVcbiAqXG4gKiBTaW5jZSBvbmUgY3ViaWMgcGF0aCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gbXVsdGlwbGUgdHJhamVjdG9yaWVzLCB0aGV5IG5lZWQgdG8gYmUgcHJlLW9wdGltaXplZC5cbiAqXG4gKiBRdWludGljIFBhdGhzOlxuICogICBTdGF0aW9ucyAwIHRocm91Z2ggKG51bVN0YXRpb25zIC0gMSkgY29ycmVzcG9uZCB0byB0aGUgc3RhdGlvbnMgb24gdGhlIGxhdHRpY2U7IGhvd2V2ZXIsXG4gKiAgIGEgbmV3IHN0YXRpb24gKHN0YXRpb24gLTEpIHdpbGwgYmUgdXNlZCB0byBzaWduaWZpeSB0aGUgc2luZ2xlIHZlaGljbGUgcG9zZSBub2RlLiBFaXRoZXJcbiAqICAgYSBjdWJpYyBwYXRoIG9yIHF1aW50aWMgcGF0aCBjYW4gYmUgdXNlZCB0byBjb25uZWN0IHRoaXMgc2luZ2xlIG5vZGUgdG8gdGhlIGxhdHRpY2VcbiAqICAgKGRlcGVuZGluZyBvbiB2ZWhpY2xlIHZlbG9jaXR5KS4gQXQgc3RhdGlvbiAtMSwgbGF0aXR1ZGUgMCB3aWxsIGNvcnJlc3BvbmQgdG8gYSBjdWJpYyBwYXRoLFxuICogICBhbmQgbGF0aXR1ZGUgMSB3aWxsIGNvcnJlc3BvbmQgdG8gYSBxdWludGljIHBhdGguIEFsbCBvdGhlciBsYXRpdHVkZXMgd2lsbCBiZSBza2lwcGVkLlxuICovXG5cbmltcG9ydCB7IFNIQVJFRF9TSEFERVIsIFNBTVBMRV9DVUJJQ19QQVRIX0ZOLCBTQU1QTEVfUVVJTlRJQ19QQVRIX0ZOLCBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTLCBOVU1fVkVMT0NJVFlfUkFOR0VTLCBOVU1fVElNRV9SQU5HRVMsIFNIQVJFRF9VTklGT1JNUywgYnVpbGRVbmlmb3JtVmFsdWVzIH0gZnJvbSBcIi4vZ3JhcGhTZWFyY2hTaGFyZWQuanNcIjtcblxuY29uc3QgU09MVkVfU1RBVElPTl9LRVJORUwgPVxuICBTSEFSRURfU0hBREVSICtcbiAgU0FNUExFX0NVQklDX1BBVEhfRk4gK1xuICBTQU1QTEVfUVVJTlRJQ19QQVRIX0ZOICtcblxuYFxuXG52ZWM0IGtlcm5lbCgpIHtcbiAgaXZlYzIgaW5kZXhlcyA9IGl2ZWMyKGtlcm5lbFBvc2l0aW9uICogdmVjMihrZXJuZWxTaXplKSk7XG5cbiAgaW50IGxhdGl0dWRlID0gaW5kZXhlcy55O1xuXG4gIGludCBudW1QZXJUaW1lID0gbnVtQWNjZWxlcmF0aW9ucyAqIG51bVZlbG9jaXRpZXM7XG4gIGludCB0aW1lSW5kZXggPSBpbmRleGVzLnggLyBudW1QZXJUaW1lO1xuICBpbmRleGVzLnggLT0gdGltZUluZGV4ICogbnVtUGVyVGltZTtcbiAgaW50IHZlbG9jaXR5SW5kZXggPSBpbmRleGVzLnggLyBudW1BY2NlbGVyYXRpb25zO1xuICBpbnQgYWNjZWxlcmF0aW9uSW5kZXggPSBpbnQobW9kKGZsb2F0KGluZGV4ZXMueCksIGZsb2F0KG51bUFjY2VsZXJhdGlvbnMpKSk7XG5cbiAgaW50IG1pbkxhdGl0dWRlID0gbWF4KGxhdGl0dWRlIC0gbGF0aXR1ZGVDb25uZWN0aXZpdHkgLyAyLCAwKTtcbiAgaW50IG1heExhdGl0dWRlID0gbWluKGxhdGl0dWRlICsgbGF0aXR1ZGVDb25uZWN0aXZpdHkgLyAyLCBudW1MYXRpdHVkZXMgLSAxKTtcblxuICBpbnQgc2xJbmRleCA9IHN0YXRpb24gKiBudW1MYXRpdHVkZXMgKyBsYXRpdHVkZTtcblxuICB2ZWM0IHBhdGhFbmQgPSB0ZXhlbEZldGNoKGxhdHRpY2UsIGl2ZWMyKGxhdGl0dWRlLCBzdGF0aW9uKSwgMCk7XG5cbiAgZmxvYXQgbWluVmVsb2NpdHkgPSB2ZWxvY2l0eVJhbmdlc1t2ZWxvY2l0eUluZGV4XTtcbiAgZmxvYXQgbWF4VmVsb2NpdHkgPSB2ZWxvY2l0eVJhbmdlc1t2ZWxvY2l0eUluZGV4ICsgMV07XG5cbiAgZmxvYXQgbWluVGltZSA9IHRpbWVSYW5nZXNbdGltZUluZGV4XTtcbiAgZmxvYXQgbWF4VGltZSA9IHRpbWVSYW5nZXNbdGltZUluZGV4ICsgMV07XG5cbiAgdmVjNCBiZXN0VHJhamVjdG9yeSA9IHZlYzQoLTEpOyAvLyAtMSBtZWFucyBpbmZpbml0ZSBjb3N0XG4gIGZsb2F0IGJlc3RUZXJtaW5hbENvc3QgPSAxLjAgLyAwLjA7XG5cbiAgZmxvYXQgaHlzdGVyZXNpc0FkanVzdG1lbnQgPSAoc2xJbmRleCA9PSBmaXJzdExhdHRpY2VQb2ludCB8fCBzbEluZGV4ID09IHNlY29uZExhdHRpY2VQb2ludCkgPyAgMC4wIDogaHlzdGVyZXNpc0Rpc2NvdW50O1xuXG4gIGZvciAoaW50IHByZXZTdGF0aW9uID0gbWF4KHN0YXRpb24gLSBzdGF0aW9uQ29ubmVjdGl2aXR5LCAwKTsgcHJldlN0YXRpb24gPCBzdGF0aW9uOyBwcmV2U3RhdGlvbisrKSB7XG4gICAgaW50IHN0YXRpb25Db25uZWN0aXZpdHlJbmRleCA9IHByZXZTdGF0aW9uIC0gc3RhdGlvbiArIHN0YXRpb25Db25uZWN0aXZpdHk7XG5cbiAgICBmb3IgKGludCBwcmV2TGF0aXR1ZGUgPSBtaW5MYXRpdHVkZTsgcHJldkxhdGl0dWRlIDw9IG1heExhdGl0dWRlOyBwcmV2TGF0aXR1ZGUrKykge1xuICAgICAgaW50IGxhdGl0dWRlQ29ubmVjdGl2aXR5SW5kZXggPSBwcmV2TGF0aXR1ZGUgLSBsYXRpdHVkZSArIGxhdGl0dWRlQ29ubmVjdGl2aXR5IC8gMjtcbiAgICAgIGludCBjb25uZWN0aXZpdHlJbmRleCA9IHN0YXRpb25Db25uZWN0aXZpdHlJbmRleCAqIGxhdGl0dWRlQ29ubmVjdGl2aXR5ICsgbGF0aXR1ZGVDb25uZWN0aXZpdHlJbmRleDtcblxuICAgICAgdmVjNCBwYXRoU3RhcnQgPSB0ZXhlbEZldGNoKGxhdHRpY2UsIGl2ZWMyKHByZXZMYXRpdHVkZSwgcHJldlN0YXRpb24pLCAwKTtcbiAgICAgIHZlYzQgY3ViaWNQYXRoUGFyYW1zID0gdGV4ZWxGZXRjaChjdWJpY1BhdGhzLCBpdmVjMihzbEluZGV4LCBjb25uZWN0aXZpdHlJbmRleCksIDApO1xuXG4gICAgICAvLyBJZiB0aGUgcGF0aCBkaWRuJ3QgY29udmVyZ2VcbiAgICAgIGlmIChjdWJpY1BhdGhQYXJhbXMudyA9PSAwLjApIGNvbnRpbnVlO1xuXG4gICAgICBpbnQgbnVtU2FtcGxlcyA9IHNhbXBsZUN1YmljUGF0aChwYXRoU3RhcnQsIHBhdGhFbmQsIGN1YmljUGF0aFBhcmFtcyk7XG4gICAgICBmbG9hdCBwYXRoTGVuZ3RoID0gY3ViaWNQYXRoUGFyYW1zLno7XG5cbiAgICAgIGlmIChudW1TYW1wbGVzIDwgMikgY29udGludWU7XG5cbiAgICAgIGZsb2F0IGF2ZXJhZ2VTdGF0aWNDb3N0ID0gY2FsY3VsYXRlQXZlcmFnZVN0YXRpY0Nvc3QobnVtU2FtcGxlcyk7XG4gICAgICBpZiAoYXZlcmFnZVN0YXRpY0Nvc3QgPCAwLjApIGNvbnRpbnVlO1xuXG4gICAgICBhdmVyYWdlU3RhdGljQ29zdCArPSBoeXN0ZXJlc2lzQWRqdXN0bWVudDtcblxuICAgICAgaWYgKGF2ZXJhZ2VTdGF0aWNDb3N0ICogcGF0aExlbmd0aCA+PSBiZXN0VGVybWluYWxDb3N0KSBjb250aW51ZTtcblxuICAgICAgZm9yIChpbnQgcHJldlZlbG9jaXR5ID0gMDsgcHJldlZlbG9jaXR5IDwgbnVtVmVsb2NpdGllczsgcHJldlZlbG9jaXR5KyspIHtcbiAgICAgICAgZm9yIChpbnQgcHJldlRpbWUgPSAwOyBwcmV2VGltZSA8IG51bVRpbWVzOyBwcmV2VGltZSsrKSB7XG4gICAgICAgICAgZm9yIChpbnQgcHJldkFjY2VsID0gMDsgcHJldkFjY2VsIDwgbnVtQWNjZWxlcmF0aW9uczsgcHJldkFjY2VsKyspIHtcbiAgICAgICAgICAgIGludCBhdnRJbmRleCA9IHByZXZUaW1lICogbnVtUGVyVGltZSArIHByZXZWZWxvY2l0eSAqIG51bUFjY2VsZXJhdGlvbnMgKyBwcmV2QWNjZWw7XG5cbiAgICAgICAgICAgIC8vIENvc3QgdGFibGUgZW50cnk6XG4gICAgICAgICAgICAvLyAgIHg6IGNvc3Qgc28gZmFyXG4gICAgICAgICAgICAvLyAgIHk6IGVuZCB2ZWxvY2l0eVxuICAgICAgICAgICAgLy8gICB6OiBlbmQgdGltZVxuICAgICAgICAgICAgLy8gICB3OiBwYXJlbnQgaW5kZXhcbiAgICAgICAgICAgIHZlYzQgY29zdFRhYmxlRW50cnkgPSB0ZXhlbEZldGNoKGNvc3RUYWJsZSwgaXZlYzMoYXZ0SW5kZXgsIHByZXZMYXRpdHVkZSwgcHJldlN0YXRpb24pLCAwKTtcblxuICAgICAgICAgICAgLy8gSWYgY29zdCBlbnRyeSBpcyBpbmZpbml0eVxuICAgICAgICAgICAgaWYgKGNvc3RUYWJsZUVudHJ5LnggPCAwLjAgfHwgYXZlcmFnZVN0YXRpY0Nvc3QgKiBwYXRoTGVuZ3RoICsgY29zdFRhYmxlRW50cnkueCA+PSBiZXN0VGVybWluYWxDb3N0KSBjb250aW51ZTtcblxuICAgICAgICAgICAgdmVjMyBhdnQgPSBjYWxjdWxhdGVBVlQoYWNjZWxlcmF0aW9uSW5kZXgsIGNvc3RUYWJsZUVudHJ5LnksIGNvc3RUYWJsZUVudHJ5LnosIHBhdGhMZW5ndGgpO1xuICAgICAgICAgICAgZmxvYXQgYWNjZWxlcmF0aW9uID0gYXZ0Lng7XG4gICAgICAgICAgICBmbG9hdCBmaW5hbFZlbG9jaXR5ID0gYXZ0Lnk7XG4gICAgICAgICAgICBmbG9hdCBmaW5hbFRpbWUgPSBhdnQuejtcblxuICAgICAgICAgICAgaWYgKGF2ZXJhZ2VTdGF0aWNDb3N0ICogcGF0aExlbmd0aCArIGNvc3RUYWJsZUVudHJ5LnggKyBleHRyYVRpbWVQZW5hbHR5ICogZmluYWxUaW1lID49IGJlc3RUZXJtaW5hbENvc3QpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgY2FsY3VsYXRlZCBmaW5hbCB2ZWxvY2l0eSBkb2VzIG5vdCBtYXRjaCB0aGlzIGZyYWdtZW50J3MgdmVsb2NpdHkgcmFuZ2UsIHRoZW4gc2tpcCB0aGlzIHRyYWplY3RvcnlcbiAgICAgICAgICAgIGlmIChmaW5hbFZlbG9jaXR5IDwgbWluVmVsb2NpdHkgfHwgZmluYWxWZWxvY2l0eSA+PSBtYXhWZWxvY2l0eSkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIElmIHRoZSBjYWxjdWxhdGVkIGZpbmFsIHRpbWUgZG9lcyBub3QgbWF0Y2ggdGhpcyBmcmFnbWVudCdzIHRpbWUgcmFuZ2UsIHRoZW4gc2tpcCB0aGlzIHRyYWplY3RvcnlcbiAgICAgICAgICAgIGlmIChmaW5hbFRpbWUgPCBtaW5UaW1lIHx8IGZpbmFsVGltZSA+PSBtYXhUaW1lKSBjb250aW51ZTtcblxuICAgICAgICAgICAgZmxvYXQgYWJhbmRvblRocmVzaG9sZCA9IChiZXN0VGVybWluYWxDb3N0IC0gZXh0cmFUaW1lUGVuYWx0eSAqIGZpbmFsVGltZSAtIGNvc3RUYWJsZUVudHJ5LngpIC8gcGF0aExlbmd0aCAtIGF2ZXJhZ2VTdGF0aWNDb3N0O1xuICAgICAgICAgICAgZmxvYXQgYXZlcmFnZUR5bmFtaWNDb3N0ID0gY2FsY3VsYXRlQXZlcmFnZUR5bmFtaWNDb3N0KG51bVNhbXBsZXMsIHBhdGhMZW5ndGgsIGNvc3RUYWJsZUVudHJ5LnosIGNvc3RUYWJsZUVudHJ5LnksIGFjY2VsZXJhdGlvbiwgYWJhbmRvblRocmVzaG9sZCk7XG4gICAgICAgICAgICBpZiAoYXZlcmFnZUR5bmFtaWNDb3N0IDwgMC4wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgaWYgKGFjY2VsZXJhdGlvbkluZGV4ICE9IHByZXZBY2NlbClcbiAgICAgICAgICAgICAgYXZlcmFnZUR5bmFtaWNDb3N0ICs9IGFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHk7XG5cbiAgICAgICAgICAgIC8vIFRoZSBjb3N0IG9mIGEgdHJhamVjdG9yeSBpcyB0aGUgYXZlcmFnZSBzYW1wbGUgY29zdCBzY2FsZWQgYnkgdGhlIHBhdGggbGVuZ3RoXG4gICAgICAgICAgICBmbG9hdCB0b3RhbENvc3QgPSAoYXZlcmFnZVN0YXRpY0Nvc3QgKyBhdmVyYWdlRHluYW1pY0Nvc3QpICogcGF0aExlbmd0aCArIGNvc3RUYWJsZUVudHJ5Lng7XG5cbiAgICAgICAgICAgIGZsb2F0IHRlcm1pbmFsQ29zdCA9IHRvdGFsQ29zdCArIGV4dHJhVGltZVBlbmFsdHkgKiBmaW5hbFRpbWU7XG4gICAgICAgICAgICBpZiAodGVybWluYWxDb3N0ID49IGJlc3RUZXJtaW5hbENvc3QpIGNvbnRpbnVlO1xuICAgICAgICAgICAgYmVzdFRlcm1pbmFsQ29zdCA9IHRlcm1pbmFsQ29zdDtcblxuICAgICAgICAgICAgaW50IGluY29taW5nSW5kZXggPSBhdnRJbmRleCArIG51bVBlclRpbWUgKiBudW1UaW1lcyAqIChwcmV2TGF0aXR1ZGUgKyBudW1MYXRpdHVkZXMgKiBwcmV2U3RhdGlvbik7XG4gICAgICAgICAgICBiZXN0VHJhamVjdG9yeSA9IHZlYzQodG90YWxDb3N0LCBmaW5hbFZlbG9jaXR5LCBmaW5hbFRpbWUsIGluY29taW5nSW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0aW9uIDwgc3RhdGlvbkNvbm5lY3Rpdml0eSkge1xuICAgIGl2ZWMyIHNsYUluZGV4ID0gaXZlYzIobGF0aXR1ZGUsIHN0YXRpb24gKiBudW1BY2NlbGVyYXRpb25zICsgYWNjZWxlcmF0aW9uSW5kZXgpO1xuXG4gICAgdmVjNCBjb3N0VGFibGVFbnRyeSA9IHRleGVsRmV0Y2goY3ViaWNQYXRoRnJvbVZlaGljbGVDb3N0cywgc2xhSW5kZXgsIDApO1xuICAgIGZsb2F0IHRlcm1pbmFsQ29zdDtcblxuICAgIGlmIChjb3N0VGFibGVFbnRyeS54ID49IDAuMCkge1xuICAgICAgdGVybWluYWxDb3N0ID0gY29zdFRhYmxlRW50cnkueCArIGV4dHJhVGltZVBlbmFsdHkgKiBjb3N0VGFibGVFbnRyeS56O1xuXG4gICAgICBpZiAodGVybWluYWxDb3N0IDwgYmVzdFRlcm1pbmFsQ29zdCkge1xuICAgICAgICBiZXN0VGVybWluYWxDb3N0ID0gdGVybWluYWxDb3N0O1xuICAgICAgICBiZXN0VHJhamVjdG9yeSA9IGNvc3RUYWJsZUVudHJ5O1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvc3RUYWJsZUVudHJ5ID0gdGV4ZWxGZXRjaChxdWludGljUGF0aEZyb21WZWhpY2xlQ29zdHMsIHNsYUluZGV4LCAwKTtcblxuICAgIGlmIChjb3N0VGFibGVFbnRyeS54ID49IDAuMCkge1xuICAgICAgdGVybWluYWxDb3N0ID0gY29zdFRhYmxlRW50cnkueCArIGV4dHJhVGltZVBlbmFsdHkgKiBjb3N0VGFibGVFbnRyeS56O1xuXG4gICAgICBpZiAodGVybWluYWxDb3N0IDwgYmVzdFRlcm1pbmFsQ29zdCkge1xuICAgICAgICBiZXN0VGVybWluYWxDb3N0ID0gdGVybWluYWxDb3N0O1xuICAgICAgICBiZXN0VHJhamVjdG9yeSA9IGNvc3RUYWJsZUVudHJ5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBiZXN0VHJhamVjdG9yeTtcbn1cblxuYDtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRVcCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2VybmVsOiBTT0xWRV9TVEFUSU9OX0tFUk5FTCxcbiAgICAgIG91dHB1dDogeyBuYW1lOiAnZ3JhcGhTZWFyY2gnIH0sXG4gICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgU0hBUkVEX1VOSUZPUk1TLCB7XG4gICAgICAgIGxhdHRpY2U6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH0sXG4gICAgICAgIGNvc3RUYWJsZTogeyB0eXBlOiAnc2hhcmVkVGV4dHVyZScsIHRleHR1cmVUeXBlOiAnMkRBcnJheScgfSxcbiAgICAgICAgY3ViaWNQYXRoczogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScgfSxcbiAgICAgICAgY3ViaWNQYXRoRnJvbVZlaGljbGVDb3N0czogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScgfSxcbiAgICAgICAgcXVpbnRpY1BhdGhGcm9tVmVoaWNsZUNvc3RzOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJyB9LFxuICAgICAgICBmaXJzdExhdHRpY2VQb2ludDogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICBzZWNvbmRMYXR0aWNlUG9pbnQ6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgdmVsb2NpdHlWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgY3VydlZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBkQ3VydlZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBkZEN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgZXh0cmFUaW1lUGVuYWx0eTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgIGh5c3RlcmVzaXNEaXNjb3VudDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgIGFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHk6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBudW1TdGF0aW9uczogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICBudW1MYXRpdHVkZXM6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgbnVtQWNjZWxlcmF0aW9uczogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICBudW1WZWxvY2l0aWVzOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgIG51bVRpbWVzOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgIHN0YXRpb25Db25uZWN0aXZpdHk6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgbGF0aXR1ZGVDb25uZWN0aXZpdHk6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgdmVsb2NpdHlSYW5nZXM6IHsgdHlwZTogJ2Zsb2F0JywgbGVuZ3RoOiBOVU1fVkVMT0NJVFlfUkFOR0VTICsgMSB9LFxuICAgICAgICB0aW1lUmFuZ2VzOiB7IHR5cGU6ICdmbG9hdCcsIGxlbmd0aDogTlVNX1RJTUVfUkFOR0VTICsgMSB9LFxuICAgICAgICBzdGF0aW9uOiB7IHR5cGU6ICdpbnQnIH0gLy8gVXBkYXRlZCBpbiBgZHJhd1Byb3h5YFxuICAgICAgfSksXG4gICAgICBkcmF3UHJveHk6IChncGdwdSwgcHJvZ3JhbSwgZHJhdykgPT4ge1xuICAgICAgICBjb25zdCB3aWR0aCA9IE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMgKiBOVU1fVkVMT0NJVFlfUkFOR0VTICogTlVNX1RJTUVfUkFOR0VTO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBwcm9ncmFtLm1ldGEubGF0dGljZS5udW1MYXRpdHVkZXM7XG4gICAgICAgIGNvbnN0IGNvc3RUYWJsZSA9IG5ldyBGbG9hdDMyQXJyYXkod2lkdGggKiBoZWlnaHQgKiBwcm9ncmFtLm1ldGEubGF0dGljZS5udW1TdGF0aW9ucyAqIDQpO1xuXG4gICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgcHJvZ3JhbS5tZXRhLmxhdHRpY2UubnVtU3RhdGlvbnM7IHMrKykge1xuICAgICAgICAgIGdwZ3B1LnVwZGF0ZVByb2dyYW1Vbmlmb3Jtcyhwcm9ncmFtLCB7IHN0YXRpb246IHMgfSk7XG4gICAgICAgICAgZHJhdygpO1xuXG4gICAgICAgICAgZ3BncHUuZ2wucmVhZFBpeGVscygwLCAwLCB3aWR0aCwgaGVpZ2h0LCBncGdwdS5nbC5SR0JBLCBncGdwdS5nbC5GTE9BVCwgY29zdFRhYmxlLCBzICogd2lkdGggKiBoZWlnaHQgKiA0KTtcblxuICAgICAgICAgIGdwZ3B1LmdsLmJpbmRUZXh0dXJlKGdwZ3B1LmdsLlRFWFRVUkVfMkRfQVJSQVksIGdwZ3B1LnNoYXJlZFRleHR1cmVzLmNvc3RUYWJsZSk7XG4gICAgICAgICAgZ3BncHUuZ2wuY29weVRleFN1YkltYWdlM0QoZ3BncHUuZ2wuVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwgMCwgcywgMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBncGdwdS5fZ3JhcGhTZWFyY2hDb3N0VGFibGUgPSBjb3N0VGFibGU7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcblxuICB1cGRhdGUoY29uZmlnLCBwb3NlLCB4eUNlbnRlclBvaW50LCBzbENlbnRlclBvaW50LCBmaXJzdExhdHRpY2VQb2ludCwgc2Vjb25kTGF0dGljZVBvaW50LCBkeW5hbWljRnJhbWVUaW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTICogTlVNX1ZFTE9DSVRZX1JBTkdFUyAqIE5VTV9USU1FX1JBTkdFUyxcbiAgICAgIGhlaWdodDogY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzLFxuICAgICAgbWV0YToge1xuICAgICAgICBsYXR0aWNlOiBjb25maWcubGF0dGljZVxuICAgICAgfSxcbiAgICAgIHVuaWZvcm1zOiBPYmplY3QuYXNzaWduKHt9LCBidWlsZFVuaWZvcm1WYWx1ZXMoY29uZmlnLCB4eUNlbnRlclBvaW50LCBzbENlbnRlclBvaW50LCBkeW5hbWljRnJhbWVUaW1lKSwge1xuICAgICAgICBmaXJzdExhdHRpY2VQb2ludDogZmlyc3RMYXR0aWNlUG9pbnQsXG4gICAgICAgIHNlY29uZExhdHRpY2VQb2ludDogc2Vjb25kTGF0dGljZVBvaW50LFxuICAgICAgICB2ZWxvY2l0eVZlaGljbGU6IHBvc2UudmVsb2NpdHksXG4gICAgICAgIGN1cnZWZWhpY2xlOiBwb3NlLmN1cnYsXG4gICAgICAgIGRDdXJ2VmVoaWNsZTogcG9zZS5kQ3VydixcbiAgICAgICAgZGRDdXJ2VmVoaWNsZTogcG9zZS5kZEN1cnYsXG4gICAgICAgIGV4dHJhVGltZVBlbmFsdHk6IGNvbmZpZy5leHRyYVRpbWVQZW5hbHR5LFxuICAgICAgICBoeXN0ZXJlc2lzRGlzY291bnQ6IGNvbmZpZy5oeXN0ZXJlc2lzRGlzY291bnQsXG4gICAgICAgIGFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHk6IGNvbmZpZy5hY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5LFxuICAgICAgICBudW1TdGF0aW9uczogY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMsXG4gICAgICAgIG51bUxhdGl0dWRlczogY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzLFxuICAgICAgICBudW1BY2NlbGVyYXRpb25zOiBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTLFxuICAgICAgICBudW1WZWxvY2l0aWVzOiBOVU1fVkVMT0NJVFlfUkFOR0VTLFxuICAgICAgICBudW1UaW1lczogTlVNX1RJTUVfUkFOR0VTLFxuICAgICAgICBzdGF0aW9uQ29ubmVjdGl2aXR5OiBjb25maWcubGF0dGljZS5zdGF0aW9uQ29ubmVjdGl2aXR5LFxuICAgICAgICBsYXRpdHVkZUNvbm5lY3Rpdml0eTogY29uZmlnLmxhdHRpY2UubGF0aXR1ZGVDb25uZWN0aXZpdHksXG4gICAgICAgIHZlbG9jaXR5UmFuZ2VzOiBbMCwgY29uZmlnLnNwZWVkTGltaXQgLyAzLCBjb25maWcuc3BlZWRMaW1pdCAqIDIgLyAzLCBjb25maWcuc3BlZWRMaW1pdCwgMTAwMDAwMF0sXG4gICAgICAgIHRpbWVSYW5nZXM6IFswLCAxMCwgMTAwMDAwMF1cbiAgICAgIH0pXG4gICAgfTtcbiAgfVxufVxuIiwiY29uc3QgWFlfT0JTVEFDTEVfQ09TVF9LRVJORUwgPSBgXG5cbnZlYzQga2VybmVsKCkge1xuICB2ZWMyIHh5ID0gKGtlcm5lbFBvc2l0aW9uIC0gMC41KSAqIHZlYzIoa2VybmVsU2l6ZSkgKiB2ZWMyKHh5R3JpZENlbGxTaXplKSArIHh5Q2VudGVyUG9pbnQ7XG5cbiAgdmVjMiB4eVRleENvb3JkcyA9ICh4eSAtIHh5Q2VudGVyUG9pbnQpIC8gdmVjMih0ZXh0dXJlU2l6ZSh4eXNsTWFwLCAwKSkgLyB2ZWMyKHh5R3JpZENlbGxTaXplKSArIDAuNTtcbiAgdmVjMiBzbCA9IHRleHR1cmUoeHlzbE1hcCwgeHlUZXhDb29yZHMpLnh5O1xuXG4gIHZlYzIgc2xUZXhDb29yZHMgPSAoc2wgLSBzbENlbnRlclBvaW50KSAvIHZlYzIodGV4dHVyZVNpemUoc2xPYnN0YWNsZUdyaWQsIDApKSAvIHZlYzIoc2xHcmlkQ2VsbFNpemUpICsgMC41O1xuICByZXR1cm4gdGV4dHVyZShzbE9ic3RhY2xlR3JpZCwgc2xUZXhDb29yZHMpO1xufVxuXG5gO1xuXG4vLyBCdWlsZCBYWSBvYnN0YWNsZSBjb3N0cyB1c2luZyBYWVNMIG1hcFxuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRVcCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2VybmVsOiBYWV9PQlNUQUNMRV9DT1NUX0tFUk5FTCxcbiAgICAgIG91dHB1dDogeyBuYW1lOiAneHlPYnN0YWNsZUNvc3RHcmlkJywgcmVhZDogdHJ1ZSB9LFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgeHlzbE1hcDogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScgfSxcbiAgICAgICAgc2xPYnN0YWNsZUdyaWQ6IHsgdHlwZTogJ291dHB1dFRleHR1cmUnLCBuYW1lOiAnc2xPYnN0YWNsZUdyaWREaWxhdGVkJyB9LFxuICAgICAgICB4eUNlbnRlclBvaW50OiB7IHR5cGU6ICd2ZWMyJyB9LFxuICAgICAgICB4eUdyaWRDZWxsU2l6ZTogeyB0eXBlOiAnZmxvYXQnfSxcbiAgICAgICAgc2xDZW50ZXJQb2ludDogeyB0eXBlOiAndmVjMicgfSxcbiAgICAgICAgc2xHcmlkQ2VsbFNpemU6IHsgdHlwZTogJ2Zsb2F0J31cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHh5V2lkdGgsIHh5SGVpZ2h0LCB4eUNlbnRlclBvaW50LCBzbENlbnRlclBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB4eVdpZHRoLFxuICAgICAgaGVpZ2h0OiB4eUhlaWdodCxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIHh5Q2VudGVyUG9pbnQ6IFt4eUNlbnRlclBvaW50LngsIHh5Q2VudGVyUG9pbnQueV0sXG4gICAgICAgIHh5R3JpZENlbGxTaXplOiBjb25maWcueHlHcmlkQ2VsbFNpemUsXG4gICAgICAgIHNsQ2VudGVyUG9pbnQ6IFtzbENlbnRlclBvaW50LngsIHNsQ2VudGVyUG9pbnQueV0sXG4gICAgICAgIHNsR3JpZENlbGxTaXplOiBjb25maWcuc2xHcmlkQ2VsbFNpemVcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iLCJpbXBvcnQgR1BHUFUgZnJvbSBcIi4uLy4uL0dQR1BVLmpzXCI7XG5pbXBvcnQgQ2FyIGZyb20gXCIuLi8uLi9waHlzaWNzL0Nhci5qc1wiO1xuaW1wb3J0IEN1YmljUGF0aCBmcm9tIFwiLi9DdWJpY1BhdGguanNcIjtcbmltcG9ydCBRdWludGljUGF0aCBmcm9tIFwiLi9RdWludGljUGF0aC5qc1wiO1xuaW1wb3J0IHh5T2JzdGFjbGVHcmlkIGZyb20gXCIuL2dwZ3B1LXByb2dyYW1zL3h5T2JzdGFjbGVHcmlkLmpzXCI7XG5pbXBvcnQgc2xPYnN0YWNsZUdyaWQgZnJvbSBcIi4vZ3BncHUtcHJvZ3JhbXMvc2xPYnN0YWNsZUdyaWQuanNcIjtcbmltcG9ydCBzbE9ic3RhY2xlR3JpZERpbGF0aW9uIGZyb20gXCIuL2dwZ3B1LXByb2dyYW1zL3NsT2JzdGFjbGVHcmlkRGlsYXRpb24uanNcIjtcbmltcG9ydCBzbER5bmFtaWNPYnN0YWNsZUdyaWQgZnJvbSBcIi4vZ3BncHUtcHJvZ3JhbXMvc2xEeW5hbWljT2JzdGFjbGVHcmlkLmpzXCI7XG5pbXBvcnQgeHlzbE1hcCBmcm9tIFwiLi9ncGdwdS1wcm9ncmFtcy94eXNsTWFwLmpzXCI7XG5pbXBvcnQgb3B0aW1pemVDdWJpY1BhdGhzIGZyb20gXCIuL2dwZ3B1LXByb2dyYW1zL29wdGltaXplQ3ViaWNQYXRocy5qc1wiO1xuaW1wb3J0IG9wdGltaXplUXVpbnRpY1BhdGhzIGZyb20gXCIuL2dwZ3B1LXByb2dyYW1zL29wdGltaXplUXVpbnRpY1BhdGhzLmpzXCI7XG5pbXBvcnQgcGF0aEZyb21WZWhpY2xlQ29zdHMgZnJvbSBcIi4vZ3BncHUtcHJvZ3JhbXMvcGF0aEZyb21WZWhpY2xlQ29zdHMuanNcIjtcbmltcG9ydCBncmFwaFNlYXJjaCBmcm9tIFwiLi9ncGdwdS1wcm9ncmFtcy9ncmFwaFNlYXJjaC5qc1wiO1xuaW1wb3J0IHh5T2JzdGFjbGVDb3N0R3JpZCBmcm9tIFwiLi9ncGdwdS1wcm9ncmFtcy94eU9ic3RhY2xlQ29zdEdyaWQuanNcIjtcblxuY29uc3QgTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyA9IDg7XG5jb25zdCBOVU1fVkVMT0NJVFlfUkFOR0VTID0gNDtcbmNvbnN0IE5VTV9USU1FX1JBTkdFUyA9IDI7XG5cbi8qIE9ic3RhY2xlIGNvc3QgbWFwOlxuICpcbiAqIDEuIFJhc3Rlcml6ZSB0cmlhbmdsZXMgZnJvbSBwb2x5Z29uYWwgb2JzdGFjbGVzIGludG8gWFktc3BhY2Ugb2NjdXBhbmN5IGdyaWRcbiAqIDIuIENvbnZlcnQgb2NjdXBhbmN5IGdyaWQgdG8gU0wtc3BhY2VcbiAqICAgICogV2lkdGggaXMgc3BhdGlhbCBob3Jpem9uIG9mIHRoZSBzdGF0ZSBsYXR0aWNlXG4gKiAgICAqIEhlaWdodCBpcyBsYW5lIHdpZHRoXG4gKiAgICAqIFJlc29sdXRpb24gc2hvdWxkIGJlIGhpZ2hlciB0aGFuIFhZLWdyaWRcbiAqICAgICogR2V0IFhZIHBvc2l0aW9uIGZyb20gY2VudGVybGluZSB0ZXh0dXJlXG4gKiAgICAqIExvb2t1cCBYWSBpbiBYWSBvY2N1cGFuY3kgZ3JpZCAobmVhcmVzdClcbiAqIDMuIERpbGF0ZSBTTC1zcGFjZSBncmlkIHVzaW5nIHR3byBwYXNzZXMgKGFsb25nIHN0YXRpb24sIHRoZW4gYWxvbmcgbGF0aXR1ZGUpXG4gKiAgICAqIGNvbGxpc2lvbiBhcmVhOiBoYWxmIGNhciBzaXplICsgMC4zbVxuICogICAgKiBoaWdoIGNvc3QgYXJlYTogMSBtZXRlclxuICogNC4gQ29udmVydCBiYWNrIHRvIFhZLXNwYWNlIHVzaW5nIFhZU0wgbWFwXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGF0aFBsYW5uZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnByZXZpb3VzU3RhcnRTdGF0aW9uID0gbnVsbDtcbiAgICB0aGlzLnByZXZpb3VzRmlyc3RMYXR0aWNlUG9pbnQgPSAtMTtcbiAgICB0aGlzLnByZXZpb3VzU2Vjb25kTGF0dGljZVBvaW50ID0gLTE7XG4gICAgdGhpcy5wcmV2aW91c0ZpcnN0QWNjZWxlcmF0aW9uID0gLTE7XG4gICAgdGhpcy5wcmV2aW91c1NlY29uZExhdHRpY2VQb2ludCA9IC0xO1xuXG4gICAgbGV0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgcHJvZ3JhbXMgPSBbXG4gICAgICB4eU9ic3RhY2xlR3JpZC5zZXRVcCgpLFxuICAgICAgc2xPYnN0YWNsZUdyaWQuc2V0VXAoKSxcbiAgICAgIC4uLnNsT2JzdGFjbGVHcmlkRGlsYXRpb24uc2V0VXAoKSxcbiAgICAgIHNsRHluYW1pY09ic3RhY2xlR3JpZC5zZXRVcCgpLFxuICAgICAgeHlzbE1hcC5zZXRVcCgpLFxuICAgICAgLi4ub3B0aW1pemVDdWJpY1BhdGhzLnNldFVwKCksXG4gICAgICBvcHRpbWl6ZVF1aW50aWNQYXRocy5zZXRVcCgpLFxuICAgICAgLi4ucGF0aEZyb21WZWhpY2xlQ29zdHMuc2V0VXAoKSxcbiAgICAgIGdyYXBoU2VhcmNoLnNldFVwKCksXG4gICAgXS5tYXAocCA9PiBPYmplY3QuYXNzaWduKHt9LCBwLCB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEgfSkpO1xuXG4gICAgdGhpcy5ncGdwdSA9IG5ldyBHUEdQVShwcm9ncmFtcyk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnByZXZpb3VzU3RhcnRTdGF0aW9uID0gbnVsbDtcbiAgICB0aGlzLnByZXZpb3VzRmlyc3RMYXR0aWNlUG9pbnQgPSAtMTtcbiAgICB0aGlzLnByZXZpb3VzU2Vjb25kTGF0dGljZVBvaW50ID0gLTE7XG4gICAgdGhpcy5wcmV2aW91c0ZpcnN0QWNjZWxlcmF0aW9uID0gLTE7XG4gICAgdGhpcy5wcmV2aW91c1NlY29uZExhdHRpY2VQb2ludCA9IC0xO1xuICB9XG5cbiAgcGxhbih2ZWhpY2xlUG9zZSwgdmVoaWNsZVN0YXRpb24sIGxhbmVQYXRoLCBzdGFydFRpbWUsIHN0YXRpY09ic3RhY2xlcywgZHluYW1pY09ic3RhY2xlcykge1xuICAgIGNvbnN0IGxhdHRpY2VTdGF0aW9uSW50ZXJ2YWwgPSB0aGlzLl9sYXR0aWNlU3RhdGlvbkludGVydmFsKCk7XG5cbiAgICBjb25zdCBjZW50ZXJsaW5lUmF3ID0gbGFuZVBhdGguc2FtcGxlU3RhdGlvbnModmVoaWNsZVN0YXRpb24sIE1hdGguY2VpbCgodGhpcy5jb25maWcuc3BhdGlhbEhvcml6b24gKyBsYXR0aWNlU3RhdGlvbkludGVydmFsKSAvIHRoaXMuY29uZmlnLmNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWwpICsgMSwgdGhpcy5jb25maWcuY2VudGVybGluZVN0YXRpb25JbnRlcnZhbCk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gYWxsIGNlbnRlcmxpbmUgcG9pbnRzIGludG8gdmVoaWNsZSBmcmFtZVxuICAgIGNvbnN0IHZlaGljbGVYZm9ybSA9IHZlaGljbGVUcmFuc2Zvcm0odmVoaWNsZVBvc2UpO1xuICAgIGNvbnN0IGNlbnRlcmxpbmUgPSBjZW50ZXJsaW5lUmF3Lm1hcChjID0+IHsgcmV0dXJuIHsgcG9zOiBjLnBvcy5jbG9uZSgpLmFwcGx5TWF0cml4Myh2ZWhpY2xlWGZvcm0pLCByb3Q6IGMucm90IC0gdmVoaWNsZVBvc2Uucm90LCBjdXJ2OiBjLmN1cnYgfSB9KTtcblxuICAgIGNvbnN0IGNlbnRlcmxpbmVEYXRhID0gbmV3IEZsb2F0MzJBcnJheShjZW50ZXJsaW5lLmxlbmd0aCAqIDMpO1xuICAgIGNvbnN0IG1heFBvaW50ID0gbmV3IFRIUkVFLlZlY3RvcjIoMCwgMCk7XG4gICAgY29uc3QgbWluUG9pbnQgPSBuZXcgVEhSRUUuVmVjdG9yMigwLCAwKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2VudGVybGluZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgc2FtcGxlID0gY2VudGVybGluZVtpXTtcbiAgICAgIGNvbnN0IHBvcyA9IHNhbXBsZS5wb3M7XG4gICAgICBjZW50ZXJsaW5lRGF0YVtpICogMyArIDBdID0gcG9zLng7XG4gICAgICBjZW50ZXJsaW5lRGF0YVtpICogMyArIDFdID0gcG9zLnk7XG4gICAgICBjZW50ZXJsaW5lRGF0YVtpICogMyArIDJdID0gc2FtcGxlLnJvdDtcblxuICAgICAgbWF4UG9pbnQubWF4KHBvcyk7XG4gICAgICBtaW5Qb2ludC5taW4ocG9zKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaWZmID0gbWF4UG9pbnQuY2xvbmUoKS5zdWIobWluUG9pbnQpO1xuICAgIGNvbnN0IHh5Q2VudGVyUG9pbnQgPSBtaW5Qb2ludC5jbG9uZSgpLmFkZChtYXhQb2ludCkuZGl2aWRlU2NhbGFyKDIpO1xuXG4gICAgLy8gU2l6ZXMgb2YgdGhlIHh5IGdyaWRzIChpbiBwaXhlbHMsIG5vdCBtZXRlcnMpXG4gICAgY29uc3QgeHlXaWR0aCA9IE1hdGguY2VpbCgoZGlmZi54ICsgdGhpcy5jb25maWcuZ3JpZE1hcmdpbiAqIDIpIC8gdGhpcy5jb25maWcueHlHcmlkQ2VsbFNpemUpO1xuICAgIGNvbnN0IHh5SGVpZ2h0ID0gTWF0aC5jZWlsKChkaWZmLnkgKyB0aGlzLmNvbmZpZy5ncmlkTWFyZ2luICogMikgLyB0aGlzLmNvbmZpZy54eUdyaWRDZWxsU2l6ZSk7XG5cbiAgICBjb25zdCBzdGF0aW9uV2lkdGggPSB0aGlzLmNvbmZpZy5zcGF0aWFsSG9yaXpvbiArIGxhdHRpY2VTdGF0aW9uSW50ZXJ2YWwgKiAyO1xuICAgIGNvbnN0IHNsQ2VudGVyUG9pbnQgPSBuZXcgVEhSRUUuVmVjdG9yMih0aGlzLmNvbmZpZy5zcGF0aWFsSG9yaXpvbiAvIDIsIDApO1xuXG4gICAgLy8gU2l6ZXMgb2YgdGhlIHNsIGdyaWRzIChpbiBwaXhlbHMsIG5vdCBtZXRlcnMpXG4gICAgY29uc3Qgc2xXaWR0aCA9IE1hdGguY2VpbChzdGF0aW9uV2lkdGggLyB0aGlzLmNvbmZpZy5zbEdyaWRDZWxsU2l6ZSk7XG4gICAgY29uc3Qgc2xIZWlnaHQgPSBNYXRoLmNlaWwoKHRoaXMuY29uZmlnLnJvYWRXaWR0aCArIHRoaXMuY29uZmlnLmdyaWRNYXJnaW4gKiAyKSAvIHRoaXMuY29uZmlnLnNsR3JpZENlbGxTaXplKTtcblxuICAgIGxldCBzdGFydFN0YXRpb247XG5cbiAgICBpZiAodGhpcy5wcmV2aW91c1N0YXJ0U3RhdGlvbiA9PT0gbnVsbCB8fCB2ZWhpY2xlU3RhdGlvbiArIGxhdHRpY2VTdGF0aW9uSW50ZXJ2YWwgLyAyID4gdGhpcy5wcmV2aW91c1N0YXJ0U3RhdGlvbikge1xuICAgICAgc3RhcnRTdGF0aW9uID0gKHRoaXMucHJldmlvdXNTdGFydFN0YXRpb24gPT09IG51bGwgPyB2ZWhpY2xlU3RhdGlvbiA6IHRoaXMucHJldmlvdXNTdGFydFN0YXRpb24pICsgbGF0dGljZVN0YXRpb25JbnRlcnZhbDtcbiAgICAgIHRoaXMucHJldmlvdXNTdGFydFN0YXRpb24gPSBzdGFydFN0YXRpb247XG4gICAgICB0aGlzLnByZXZpb3VzRmlyc3RMYXR0aWNlUG9pbnQgLT0gdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXM7XG4gICAgICB0aGlzLnByZXZpb3VzU2Vjb25kTGF0dGljZVBvaW50IC09IHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydFN0YXRpb24gPSB0aGlzLnByZXZpb3VzU3RhcnRTdGF0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IGxhdHRpY2UgPSB0aGlzLl9idWlsZExhdHRpY2UobGFuZVBhdGgsIHN0YXJ0U3RhdGlvbiwgdmVoaWNsZVBvc2Uucm90LCB2ZWhpY2xlWGZvcm0pO1xuXG4gICAgY29uc3QgdGVtcG9yYWxIb3Jpem9uID0gdGhpcy5jb25maWcuc3BhdGlhbEhvcml6b24gLyB0aGlzLmNvbmZpZy5zcGVlZExpbWl0O1xuICAgIGNvbnN0IGR5bmFtaWNGcmFtZVRpbWUgPSB0ZW1wb3JhbEhvcml6b24gLyB0aGlzLmNvbmZpZy5udW1EeW5hbWljRnJhbWVzO1xuXG4gICAgZm9yIChjb25zdCBbaSwgcF0gb2YgW1xuICAgICAgeHlPYnN0YWNsZUdyaWQudXBkYXRlKHRoaXMuY29uZmlnLCB4eVdpZHRoLCB4eUhlaWdodCwgeHlDZW50ZXJQb2ludCwgdmVoaWNsZVhmb3JtLCBzdGF0aWNPYnN0YWNsZXMpLFxuICAgICAgc2xPYnN0YWNsZUdyaWQudXBkYXRlKHRoaXMuY29uZmlnLCBzbFdpZHRoLCBzbEhlaWdodCwgc2xDZW50ZXJQb2ludCwgeHlDZW50ZXJQb2ludCksXG4gICAgICAuLi5zbE9ic3RhY2xlR3JpZERpbGF0aW9uLnVwZGF0ZSh0aGlzLmNvbmZpZywgc2xXaWR0aCwgc2xIZWlnaHQpLFxuICAgICAgc2xEeW5hbWljT2JzdGFjbGVHcmlkLnVwZGF0ZSh0aGlzLmNvbmZpZywgc2xXaWR0aCwgc2xIZWlnaHQsIHNsQ2VudGVyUG9pbnQsIHZlaGljbGVTdGF0aW9uLCBzdGFydFRpbWUsIGR5bmFtaWNGcmFtZVRpbWUsIGR5bmFtaWNPYnN0YWNsZXMpLFxuICAgICAgeHlzbE1hcC51cGRhdGUodGhpcy5jb25maWcsIHh5V2lkdGgsIHh5SGVpZ2h0LCB4eUNlbnRlclBvaW50KSxcbiAgICAgIC4uLm9wdGltaXplQ3ViaWNQYXRocy51cGRhdGUodGhpcy5jb25maWcsIHZlaGljbGVQb3NlKSxcbiAgICAgIG9wdGltaXplUXVpbnRpY1BhdGhzLnVwZGF0ZSh0aGlzLmNvbmZpZywgdmVoaWNsZVBvc2UpLFxuICAgICAgLi4ucGF0aEZyb21WZWhpY2xlQ29zdHMudXBkYXRlKHRoaXMuY29uZmlnLCB2ZWhpY2xlUG9zZSwgeHlDZW50ZXJQb2ludCwgc2xDZW50ZXJQb2ludCwgdGhpcy5wcmV2aW91c0ZpcnN0TGF0dGljZVBvaW50LCB0aGlzLnByZXZpb3VzU2Vjb25kTGF0dGljZVBvaW50LCBkeW5hbWljRnJhbWVUaW1lKSxcbiAgICAgIGdyYXBoU2VhcmNoLnVwZGF0ZSh0aGlzLmNvbmZpZywgdmVoaWNsZVBvc2UsIHh5Q2VudGVyUG9pbnQsIHNsQ2VudGVyUG9pbnQsIHRoaXMucHJldmlvdXNGaXJzdExhdHRpY2VQb2ludCwgdGhpcy5wcmV2aW91c1NlY29uZExhdHRpY2VQb2ludCwgZHluYW1pY0ZyYW1lVGltZSlcbiAgICBdLmVudHJpZXMoKSkge1xuICAgICAgdGhpcy5ncGdwdS51cGRhdGVQcm9ncmFtKGksIHApO1xuICAgIH1cblxuICAgIHRoaXMuZ3BncHUudXBkYXRlU2hhcmVkVGV4dHVyZXMoe1xuICAgICAgY2VudGVybGluZToge1xuICAgICAgICB3aWR0aDogY2VudGVybGluZS5sZW5ndGgsXG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgY2hhbm5lbHM6IDMsXG4gICAgICAgIGZpbHRlcjogJ2xpbmVhcicsXG4gICAgICAgIGRhdGE6IGNlbnRlcmxpbmVEYXRhXG4gICAgICB9LFxuICAgICAgY29zdFRhYmxlOiB7XG4gICAgICAgIHdpZHRoOiBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTICogTlVNX1ZFTE9DSVRZX1JBTkdFUyAqIE5VTV9USU1FX1JBTkdFUyxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyxcbiAgICAgICAgZGVwdGg6IHRoaXMuY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMsXG4gICAgICAgIGNoYW5uZWxzOiA0LFxuICAgICAgICB0ZXh0dXJlVHlwZTogJzJEQXJyYXknXG4gICAgICB9LFxuICAgICAgbGF0dGljZToge1xuICAgICAgICB3aWR0aDogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMsXG4gICAgICAgIGhlaWdodDogdGhpcy5jb25maWcubGF0dGljZS5udW1TdGF0aW9ucyxcbiAgICAgICAgY2hhbm5lbHM6IDQsXG4gICAgICAgIGRhdGE6IGxhdHRpY2VcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZ3BncHUuX2dyYXBoU2VhcmNoQ29zdFRhYmxlID0gbnVsbDtcbiAgICB0aGlzLmdwZ3B1Ll9keW5hbWljT2JzdGFjbGVHcmlkID0gbnVsbDtcblxuICAgIGxldCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IG91dHB1dHMgPSB0aGlzLmdwZ3B1LnJ1bigpO1xuICAgIGNvbnN0IGNvc3RUYWJsZSA9IHRoaXMuZ3BncHUuX2dyYXBoU2VhcmNoQ29zdFRhYmxlO1xuICAgIGNvbnN0IGN1YmljUGF0aFBhcmFtcyA9IG91dHB1dHNbNl07XG4gICAgY29uc3QgY3ViaWNQYXRoRnJvbVZlaGljbGVQYXJhbXMgPSBvdXRwdXRzWzddO1xuICAgIGNvbnN0IHF1aW50aWNQYXRoRnJvbVZlaGljbGVQYXJhbXMgPSBvdXRwdXRzWzhdO1xuXG4gICAgbGV0IGJlc3RFbnRyeSA9IFtOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFldO1xuICAgIGxldCBiZXN0RW50cnlJbmRleDtcbiAgICBjb25zdCBudW1FbnRyaWVzID0gY29zdFRhYmxlLmxlbmd0aCAvIDQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUVudHJpZXM7IGkrKykge1xuICAgICAgY29uc3QgZW50cnlVbnBhY2tlZCA9IHRoaXMuX3VucGFja0Nvc3RUYWJsZUluZGV4KGkpO1xuICAgICAgY29uc3QgZW50cnkgPSBbXG4gICAgICAgIGNvc3RUYWJsZVtpICogNF0sXG4gICAgICAgIGNvc3RUYWJsZVtpICogNCArIDFdLFxuICAgICAgICBjb3N0VGFibGVbaSAqIDQgKyAyXSxcbiAgICAgICAgY29zdFRhYmxlW2kgKiA0ICsgM11cbiAgICAgIF07XG5cbiAgICAgIGlmIChlbnRyeVswXSA8IDApIGNvbnRpbnVlO1xuXG4gICAgICBlbnRyeVswXSArPSB0aGlzLl90ZXJtaW5hbENvc3QoZW50cnlVbnBhY2tlZCwgZW50cnkpO1xuXG4gICAgICBpZiAoZW50cnlbMF0gPCBiZXN0RW50cnlbMF0pIHtcbiAgICAgICAgYmVzdEVudHJ5SW5kZXggPSBpO1xuICAgICAgICBiZXN0RW50cnkgPSBlbnRyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpbnZlcnNlVmVoaWNsZVhmb3JtID0gKG5ldyBUSFJFRS5NYXRyaXgzKCkpLmdldEludmVyc2UodmVoaWNsZVhmb3JtKTtcbiAgICBsZXQgYmVzdFRyYWplY3RvcnkgPSBudWxsO1xuICAgIGxldCBmcm9tVmVoaWNsZVNlZ21lbnQgPSBudWxsO1xuICAgIGxldCBmcm9tVmVoaWNsZVBhcmFtcyA9IG51bGw7XG4gICAgbGV0IGZpcnN0TGF0dGljZVBvaW50ID0gLTE7XG4gICAgbGV0IGZpcnN0QWNjZWxlcmF0aW9uID0gLTE7XG4gICAgbGV0IHNlY29uZExhdHRpY2VQb2ludCA9IC0xO1xuICAgIGxldCBzZWNvbmRBY2NlbGVyYXRpb24gPSAtMTtcblxuICAgIGlmIChpc0Zpbml0ZShiZXN0RW50cnlbMF0pKSB7XG4gICAgICBbYmVzdFRyYWplY3RvcnksIGZyb21WZWhpY2xlU2VnbWVudCwgZnJvbVZlaGljbGVQYXJhbXMsIGZpcnN0TGF0dGljZVBvaW50LCBmaXJzdEFjY2VsZXJhdGlvbiwgc2Vjb25kTGF0dGljZVBvaW50LCBzZWNvbmRBY2NlbGVyYXRpb25dID0gdGhpcy5fcmVjb25zdHJ1Y3RUcmFqZWN0b3J5KFxuICAgICAgICBiZXN0RW50cnlJbmRleCxcbiAgICAgICAgY29zdFRhYmxlLFxuICAgICAgICBjdWJpY1BhdGhQYXJhbXMsXG4gICAgICAgIGN1YmljUGF0aEZyb21WZWhpY2xlUGFyYW1zLFxuICAgICAgICBxdWludGljUGF0aEZyb21WZWhpY2xlUGFyYW1zLFxuICAgICAgICB2ZWhpY2xlUG9zZSxcbiAgICAgICAgbGF0dGljZVxuICAgICAgKTtcblxuICAgICAgZnJvbVZlaGljbGVTZWdtZW50LmZvckVhY2gocCA9PiB7XG4gICAgICAgIHAucG9zID0gcC5wb3MuYXBwbHlNYXRyaXgzKGludmVyc2VWZWhpY2xlWGZvcm0pO1xuICAgICAgICBwLnJvdCArPSB2ZWhpY2xlUG9zZS5yb3Q7XG4gICAgICB9KTtcblxuICAgICAgYmVzdFRyYWplY3RvcnkuZm9yRWFjaChwID0+IHtcbiAgICAgICAgcC5wb3MgPSBwLnBvcy5hcHBseU1hdHJpeDMoaW52ZXJzZVZlaGljbGVYZm9ybSk7XG4gICAgICAgIHAucm90ICs9IHZlaGljbGVQb3NlLnJvdDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucHJldmlvdXNGaXJzdExhdHRpY2VQb2ludCA9IGZpcnN0TGF0dGljZVBvaW50O1xuICAgIHRoaXMucHJldmlvdXNGaXJzdEFjY2VsZXJhdGlvbiA9IGZpcnN0QWNjZWxlcmF0aW9uO1xuICAgIHRoaXMucHJldmlvdXNTZWNvbmRMYXR0aWNlUG9pbnQgPSBzZWNvbmRMYXR0aWNlUG9pbnQ7XG4gICAgdGhpcy5wcmV2aW91c1NlY29uZEFjY2VsZXJhdGlvbiA9IHNlY29uZEFjY2VsZXJhdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXRoOiBiZXN0VHJhamVjdG9yeSxcbiAgICAgIGZyb21WZWhpY2xlU2VnbWVudDogZnJvbVZlaGljbGVTZWdtZW50LFxuICAgICAgZnJvbVZlaGljbGVQYXJhbXM6IGZyb21WZWhpY2xlUGFyYW1zLFxuICAgICAgbGF0dGljZVN0YXJ0U3RhdGlvbjogdGhpcy5wcmV2aW91c1N0YXJ0U3RhdGlvbixcbiAgICAgIGR5bmFtaWNPYnN0YWNsZUdyaWQ6IHsgZGF0YTogdGhpcy5ncGdwdS5fZHluYW1pY09ic3RhY2xlR3JpZCwgd2lkdGg6IHNsV2lkdGgsIGhlaWdodDogc2xIZWlnaHQgfVxuICAgIH07XG4gIH1cblxuICBfYnVpbGRMYXR0aWNlKGxhbmVQYXRoLCBzdGFydFN0YXRpb24sIHZlaGljbGVSb3QsIHZlaGljbGVYZm9ybSkge1xuICAgIGNvbnN0IGNlbnRlcmxpbmUgPSBsYW5lUGF0aC5zYW1wbGVTdGF0aW9ucyhzdGFydFN0YXRpb24sIHRoaXMuY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMsIHRoaXMuX2xhdHRpY2VTdGF0aW9uSW50ZXJ2YWwoKSk7XG4gICAgY29uc3Qgb2Zmc2V0ID0gTWF0aC5mbG9vcih0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyAvIDIpO1xuICAgIGNvbnN0IGxhdHRpY2UgPSBuZXcgRmxvYXQzMkFycmF5KHRoaXMuY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMgKiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyAqIDQpO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNlbnRlcmxpbmUubGVuZ3RoOyBzKyspIHtcbiAgICAgIGNvbnN0IHNhbXBsZSA9IGNlbnRlcmxpbmVbc107XG5cbiAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXM7IGwrKykge1xuICAgICAgICBjb25zdCBsYXRpdHVkZSA9IChsIC0gb2Zmc2V0KSAvIG9mZnNldCAqIHRoaXMuY29uZmlnLnJvYWRXaWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IHJvdCA9IHNhbXBsZS5yb3QgLSB2ZWhpY2xlUm90O1xuICAgICAgICBjb25zdCBwb3MgPSBUSFJFRS5WZWN0b3IyLmZyb21BbmdsZShyb3QgKyBNYXRoLlBJIC8gMikubXVsdGlwbHlTY2FsYXIobGF0aXR1ZGUpLmFkZChzYW1wbGUucG9zLmNsb25lKCkuYXBwbHlNYXRyaXgzKHZlaGljbGVYZm9ybSkpO1xuICAgICAgICBjb25zdCBjdXJ2ID0gc2FtcGxlLmN1cnYgPT0gMCA/IDAgOiAxIC8gKDEgLyBzYW1wbGUuY3VydiAtIGxhdGl0dWRlKTtcblxuICAgICAgICBsYXR0aWNlW2luZGV4KytdID0gcG9zLng7XG4gICAgICAgIGxhdHRpY2VbaW5kZXgrK10gPSBwb3MueTtcbiAgICAgICAgbGF0dGljZVtpbmRleCsrXSA9IHJvdDtcbiAgICAgICAgbGF0dGljZVtpbmRleCsrXSA9IGN1cnY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhdHRpY2U7XG4gIH1cblxuICBfbGF0dGljZVN0YXRpb25JbnRlcnZhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc3BhdGlhbEhvcml6b24gLyB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zO1xuICB9XG5cbiAgX3Rlcm1pbmFsQ29zdChbc3RhdGlvbkluZGV4LCBsYXRpdHVkZUluZGV4LCB0aW1lSW5kZXgsIHZlbG9jaXR5SW5kZXgsIGFjY2VsZXJhdGlvbkluZGV4XSwgW2Nvc3QsIGZpbmFsVmVsb2NpdHksIGZpbmFsVGltZSwgaW5jb21pbmdJbmRleF0pIHtcbiAgICAvLyBPbmx5IGNvbnNpZGVyIHZlcnRpY2VzIHRoYXQgcmVhY2ggdGhlIGVuZCBvZiB0aGUgc3BhdGlhbCBvciB0ZW1wb3JhbCBob3Jpem9uXG4gICAgaWYgKHN0YXRpb25JbmRleCAhPSB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zIC0gMSAmJiBmaW5hbFZlbG9jaXR5ID4gMC4wNSlcbiAgICAgIHJldHVybiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cbiAgICBjb25zdCBzdGF0aW9uID0gKHRoaXMuY29uZmlnLnNwYXRpYWxIb3Jpem9uIC8gdGhpcy5jb25maWcubGF0dGljZS5udW1TdGF0aW9ucykgKiAoc3RhdGlvbkluZGV4ICsgMSk7XG5cbiAgICByZXR1cm4gc3RhdGlvbiAqIC10aGlzLmNvbmZpZy5zdGF0aW9uUmVhY2hEaXNjb3VudCArIGZpbmFsVGltZSAqIHRoaXMuY29uZmlnLmV4dHJhVGltZVBlbmFsdHk7XG4gIH1cblxuICBfdW5wYWNrQ29zdFRhYmxlSW5kZXgoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gWy0xLCBpbmRleCArIDIsIG51bGwsIG51bGwsIG51bGxdO1xuXG4gICAgY29uc3QgbnVtUGVyVGltZSA9IE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMgKiBOVU1fVkVMT0NJVFlfUkFOR0VTO1xuICAgIGNvbnN0IG51bVBlckxhdGl0dWRlID0gbnVtUGVyVGltZSAqIE5VTV9USU1FX1JBTkdFUztcbiAgICBjb25zdCBudW1QZXJTdGF0aW9uID0gdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKiBudW1QZXJMYXRpdHVkZTtcblxuICAgIGNvbnN0IHN0YXRpb25JbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyBudW1QZXJTdGF0aW9uKTtcbiAgICBpbmRleCAtPSBzdGF0aW9uSW5kZXggKiBudW1QZXJTdGF0aW9uO1xuXG4gICAgY29uc3QgbGF0aXR1ZGVJbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyBudW1QZXJMYXRpdHVkZSk7XG4gICAgaW5kZXggLT0gbGF0aXR1ZGVJbmRleCAqIG51bVBlckxhdGl0dWRlO1xuXG4gICAgY29uc3QgdGltZUluZGV4ID0gTWF0aC5mbG9vcihpbmRleCAvIG51bVBlclRpbWUpO1xuICAgIGluZGV4IC09IHRpbWVJbmRleCAqIG51bVBlclRpbWU7XG5cbiAgICBjb25zdCB2ZWxvY2l0eUluZGV4ID0gTWF0aC5mbG9vcihpbmRleCAvIE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMpO1xuICAgIGNvbnN0IGFjY2VsZXJhdGlvbkluZGV4ID0gaW5kZXggJSBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTO1xuXG4gICAgcmV0dXJuIFtzdGF0aW9uSW5kZXgsIGxhdGl0dWRlSW5kZXgsIHRpbWVJbmRleCwgdmVsb2NpdHlJbmRleCwgYWNjZWxlcmF0aW9uSW5kZXhdO1xuICB9XG5cbiAgX3JlY29uc3RydWN0VHJhamVjdG9yeShpbmRleCwgY29zdFRhYmxlLCBjdWJpY1BhdGhQYXJhbXMsIGN1YmljUGF0aEZyb21WZWhpY2xlUGFyYW1zLCBxdWludGljUGF0aEZyb21WZWhpY2xlUGFyYW1zLCB2ZWhpY2xlUG9zZSwgbGF0dGljZSkge1xuICAgIGxldCB1bnBhY2tlZCA9IHRoaXMuX3VucGFja0Nvc3RUYWJsZUluZGV4KGluZGV4KTtcbiAgICB1bnBhY2tlZC5wdXNoKGNvc3RUYWJsZVtpbmRleCAqIDQgKyAxXSk7XG4gICAgY29uc3Qgbm9kZXMgPSBbdW5wYWNrZWRdO1xuXG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICB3aGlsZSAodW5wYWNrZWRbMF0gPj0gMCAmJiBjb3VudCsrIDwgMTAwKSB7XG4gICAgICBpbmRleCA9IGNvc3RUYWJsZVtpbmRleCAqIDQgKyAzXTtcbiAgICAgIHVucGFja2VkID0gdGhpcy5fdW5wYWNrQ29zdFRhYmxlSW5kZXgoaW5kZXgpO1xuXG4gICAgICBjb25zdCBmaW5hbFZlbG9jaXR5ID0gdW5wYWNrZWRbMF0gPj0gMCA/IGNvc3RUYWJsZVtpbmRleCAqIDQgKyAxXSA6IHZlaGljbGVQb3NlLnZlbG9jaXR5O1xuICAgICAgdW5wYWNrZWQucHVzaChmaW5hbFZlbG9jaXR5KTtcblxuICAgICAgbm9kZXMudW5zaGlmdCh1bnBhY2tlZCk7XG4gICAgfVxuICAgIGlmIChjb3VudCA+PSAxMDApIHRocm93IG5ldyBFcnJvcignSW5maW5pdGUgbG9vcCBlbmNvdW50ZXJlZCB3aGlsZSByZWNvbnN0cnVjdGluZyB0cmFqZWN0b3J5LicpO1xuXG4gICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgbGV0IGZyb21WZWhpY2xlU2VnbWVudCA9IFtdO1xuICAgIGxldCBmcm9tVmVoaWNsZVBhcmFtcyA9IG51bGw7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgW3ByZXZTdGF0aW9uLCBwcmV2TGF0aXR1ZGUsIF9wdCwgX3B2LCBfcGEsIHByZXZWZWxvY2l0eV0gPSBub2Rlc1tpXTtcbiAgICAgIGNvbnN0IFtzdGF0aW9uLCBsYXRpdHVkZSwgX3QsIF92LCBfYSwgdmVsb2NpdHldID0gbm9kZXNbaSArIDFdO1xuXG4gICAgICBsZXQgbGVuZ3RoO1xuICAgICAgbGV0IHBhdGhCdWlsZGVyO1xuXG4gICAgICBpZiAocHJldlN0YXRpb24gPCAwKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0ge1xuICAgICAgICAgIHBvczogbmV3IFRIUkVFLlZlY3RvcjIoMCwgMCksXG4gICAgICAgICAgcm90OiAwLFxuICAgICAgICAgIGN1cnY6IHZlaGljbGVQb3NlLmN1cnZcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBlbmRJbmRleCA9IChzdGF0aW9uICogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKyBsYXRpdHVkZSkgKiA0O1xuICAgICAgICBjb25zdCBlbmQgPSB7XG4gICAgICAgICAgcG9zOiBuZXcgVEhSRUUuVmVjdG9yMihsYXR0aWNlW2VuZEluZGV4XSwgbGF0dGljZVtlbmRJbmRleCArIDFdKSxcbiAgICAgICAgICByb3Q6IGxhdHRpY2VbZW5kSW5kZXggKyAyXSxcbiAgICAgICAgICBjdXJ2OiBsYXR0aWNlW2VuZEluZGV4ICsgM11cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocHJldkxhdGl0dWRlID09IDApIHsgLy8gQ3ViaWMgcGF0aCBmcm9tIHZlaGljbGUgdG8gbGF0dGljZSBub2RlXG4gICAgICAgICAgbGVuZ3RoID0gY3ViaWNQYXRoRnJvbVZlaGljbGVQYXJhbXNbZW5kSW5kZXggKyAyXTtcblxuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIHAxOiBjdWJpY1BhdGhGcm9tVmVoaWNsZVBhcmFtc1tlbmRJbmRleF0sXG4gICAgICAgICAgICBwMjogY3ViaWNQYXRoRnJvbVZlaGljbGVQYXJhbXNbZW5kSW5kZXggKyAxXSxcbiAgICAgICAgICAgIHNHOiBsZW5ndGhcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcGF0aEJ1aWxkZXIgPSBuZXcgQ3ViaWNQYXRoKHN0YXJ0LCBlbmQsIHBhcmFtcyk7XG5cbiAgICAgICAgICBmcm9tVmVoaWNsZVBhcmFtcyA9IHsgdHlwZTogJ2N1YmljJywgcGFyYW1zOiBwYXJhbXMgfTtcbiAgICAgICAgfSBlbHNlIHsgLy8gUXVpbnRpYyBwYXRoIGZyb20gdmVoaWNsZSB0byBsYXR0aWNlIG5vZGVcbiAgICAgICAgICBsZW5ndGggPSBxdWludGljUGF0aEZyb21WZWhpY2xlUGFyYW1zW2VuZEluZGV4ICsgMl07XG5cbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBwMzogcXVpbnRpY1BhdGhGcm9tVmVoaWNsZVBhcmFtc1tlbmRJbmRleF0sXG4gICAgICAgICAgICBwNDogcXVpbnRpY1BhdGhGcm9tVmVoaWNsZVBhcmFtc1tlbmRJbmRleCArIDFdLFxuICAgICAgICAgICAgc0c6IGxlbmd0aFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBwYXRoQnVpbGRlciA9IG5ldyBRdWludGljUGF0aChzdGFydCwgZW5kLCBwYXJhbXMpO1xuXG4gICAgICAgICAgZnJvbVZlaGljbGVQYXJhbXMgPSB7IHR5cGU6ICdxdWludGljJywgcGFyYW1zOiBwYXJhbXMgfTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IChwcmV2U3RhdGlvbiAqIHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzICsgcHJldkxhdGl0dWRlKSAqIDQ7XG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gKHN0YXRpb24gKiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyArIGxhdGl0dWRlKSAqIDQ7XG5cbiAgICAgICAgY29uc3Qgc3RhcnQgPSB7XG4gICAgICAgICAgcG9zOiBuZXcgVEhSRUUuVmVjdG9yMihsYXR0aWNlW3N0YXJ0SW5kZXhdLCBsYXR0aWNlW3N0YXJ0SW5kZXggKyAxXSksXG4gICAgICAgICAgcm90OiBsYXR0aWNlW3N0YXJ0SW5kZXggKyAyXSxcbiAgICAgICAgICBjdXJ2OiBsYXR0aWNlW3N0YXJ0SW5kZXggKyAzXVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGVuZCA9IHtcbiAgICAgICAgICBwb3M6IG5ldyBUSFJFRS5WZWN0b3IyKGxhdHRpY2VbZW5kSW5kZXhdLCBsYXR0aWNlW2VuZEluZGV4ICsgMV0pLFxuICAgICAgICAgIHJvdDogbGF0dGljZVtlbmRJbmRleCArIDJdLFxuICAgICAgICAgIGN1cnY6IGxhdHRpY2VbZW5kSW5kZXggKyAzXVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHNsSW5kZXggPSBzdGF0aW9uICogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKyBsYXRpdHVkZTtcbiAgICAgICAgY29uc3QgY29ubmVjdGl2aXR5SW5kZXggPSAocHJldlN0YXRpb24gLSBzdGF0aW9uICsgdGhpcy5jb25maWcubGF0dGljZS5zdGF0aW9uQ29ubmVjdGl2aXR5KSAqIHRoaXMuY29uZmlnLmxhdHRpY2UubGF0aXR1ZGVDb25uZWN0aXZpdHkgKyBwcmV2TGF0aXR1ZGUgLSBsYXRpdHVkZSArIE1hdGguZmxvb3IodGhpcy5jb25maWcubGF0dGljZS5sYXRpdHVkZUNvbm5lY3Rpdml0eSAvIDIpO1xuICAgICAgICBjb25zdCBjdWJpY1BhdGhJbmRleCA9IChjb25uZWN0aXZpdHlJbmRleCAqIHRoaXMuY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMgKiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyArIHNsSW5kZXgpICogNDtcblxuICAgICAgICBsZW5ndGggPSBjdWJpY1BhdGhQYXJhbXNbY3ViaWNQYXRoSW5kZXggKyAyXTtcblxuICAgICAgICBwYXRoQnVpbGRlciA9IG5ldyBDdWJpY1BhdGgoc3RhcnQsIGVuZCwge1xuICAgICAgICAgIHAxOiBjdWJpY1BhdGhQYXJhbXNbY3ViaWNQYXRoSW5kZXhdLFxuICAgICAgICAgIHAyOiBjdWJpY1BhdGhQYXJhbXNbY3ViaWNQYXRoSW5kZXggKyAxXSxcbiAgICAgICAgICBzRzogbGVuZ3RoXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXRoID0gcGF0aEJ1aWxkZXIuYnVpbGRQYXRoKE1hdGguY2VpbChsZW5ndGggLyAwLjI1KSk7XG5cbiAgICAgIGNvbnN0IHByZXZWZWxvY2l0eVNxID0gcHJldlZlbG9jaXR5ICogcHJldlZlbG9jaXR5O1xuICAgICAgY29uc3QgYWNjZWwgPSAodmVsb2NpdHkgKiB2ZWxvY2l0eSAtIHByZXZWZWxvY2l0eVNxKSAvIDIgLyBsZW5ndGg7XG4gICAgICBjb25zdCBkcyA9IGxlbmd0aCAvIChwYXRoLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IHMgPSAwO1xuXG4gICAgICBmb3IgKGxldCBwID0gMDsgcCA8IHBhdGgubGVuZ3RoOyBwKyspIHtcbiAgICAgICAgcGF0aFtwXS52ZWxvY2l0eSA9IE1hdGguc3FydCgyICogYWNjZWwgKiBzICsgcHJldlZlbG9jaXR5U3EpO1xuICAgICAgICBwYXRoW3BdLmFjY2VsZXJhdGlvbiA9IGFjY2VsO1xuICAgICAgICBzICs9IGRzO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldlN0YXRpb24gPCAwKSB7XG4gICAgICAgIGZyb21WZWhpY2xlU2VnbWVudCA9IHBhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHBhdGguc2hpZnQoKTtcbiAgICAgICAgcG9pbnRzLnB1c2goLi4ucGF0aCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0TGF0dGljZVBvaW50ID0gbnVsbFxuICAgIGxldCBmaXJzdEFjY2VsZXJhdGlvbiA9IG51bGw7XG4gICAgbGV0IHNlY29uZExhdHRpY2VQb2ludCA9IG51bGw7XG4gICAgbGV0IHNlY29uZEFjY2VsZXJhdGlvbiA9IG51bGw7XG5cbiAgICBpZiAobm9kZXMubGVuZ3RoID49IDIpIHtcbiAgICAgIGZpcnN0TGF0dGljZVBvaW50ID0gbm9kZXNbMV1bMF0gKiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyArIG5vZGVzWzFdWzFdO1xuICAgICAgZmlyc3RBY2NlbGVyYXRpb24gPSBub2Rlc1sxXVs0XTtcbiAgICB9XG5cbiAgICBpZiAobm9kZXMubGVuZ3RoID49IDMpIHtcbiAgICAgIHNlY29uZExhdHRpY2VQb2ludCA9IG5vZGVzWzJdWzBdICogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKyBub2Rlc1syXVsxXTtcbiAgICAgIHNlY29uZEFjY2VsZXJhdGlvbiA9IG5vZGVzWzJdWzRdO1xuICAgIH1cblxuICAgIHJldHVybiBbcG9pbnRzLCBmcm9tVmVoaWNsZVNlZ21lbnQsIGZyb21WZWhpY2xlUGFyYW1zLCBmaXJzdExhdHRpY2VQb2ludCwgZmlyc3RBY2NlbGVyYXRpb24sIHNlY29uZExhdHRpY2VQb2ludCwgc2Vjb25kQWNjZWxlcmF0aW9uXTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2ZWhpY2xlVHJhbnNmb3JtKHsgcG9zLCByb3QgfSkge1xuICBjb25zdCB0cmFuc2xhdGUgPSBuZXcgVEhSRUUuTWF0cml4MygpO1xuICB0cmFuc2xhdGUuc2V0KFxuICAgIDEsIDAsIC1wb3MueCxcbiAgICAwLCAxLCAtcG9zLnksXG4gICAgMCwgMCwgMVxuICApO1xuXG4gIGNvbnN0IGNvc1JvdCA9IE1hdGguY29zKHJvdCk7XG4gIGNvbnN0IHNpblJvdCA9IE1hdGguc2luKHJvdCk7XG5cbiAgY29uc3Qgcm90YXRlID0gbmV3IFRIUkVFLk1hdHJpeDMoKTtcbiAgcm90YXRlLnNldChcbiAgICBjb3NSb3QsIHNpblJvdCwgMCxcbiAgICAtc2luUm90LCBjb3NSb3QsIDAsXG4gICAgMCwgMCwgMVxuICApO1xuXG4gIHJldHVybiByb3RhdGUubXVsdGlwbHkodHJhbnNsYXRlKTtcbn1cblxuZnVuY3Rpb24gb2JzdGFjbGVUcmFuc2Zvcm0odmVoaWNsZVhmb3JtLCB4eUNlbnRlclBvaW50LCB3aWR0aCwgaGVpZ2h0KSB7XG4gIGNvbnN0IHRyYW5zbGF0ZSA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG4gIHRyYW5zbGF0ZS5zZXQoXG4gICAgMSwgMCwgLXh5Q2VudGVyUG9pbnQueCxcbiAgICAwLCAxLCAteHlDZW50ZXJQb2ludC55LFxuICAgIDAsIDAsIDFcbiAgKTtcblxuICBjb25zdCBzY2FsZSA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG4gIHNjYWxlLnNldChcbiAgICAyIC8gd2lkdGgsIDAsIDAsXG4gICAgMCwgMiAvIGhlaWdodCwgMCxcbiAgICAwLCAwLCAxXG4gICk7XG5cbiAgcmV0dXJuIHNjYWxlLm11bHRpcGx5KHRyYW5zbGF0ZSkubXVsdGlwbHkodmVoaWNsZVhmb3JtKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vdmluZ0F2ZXJhZ2Uge1xuICBjb25zdHJ1Y3RvcihtYXhTYW1wbGVzKSB7XG4gICAgdGhpcy5zYW1wbGVzID0gbmV3IEFycmF5KG1heFNhbXBsZXMpO1xuICAgIHRoaXMubnVtU2FtcGxlcyA9IDA7XG4gICAgdGhpcy5uZXh0SW5kZXggPSAwO1xuICAgIHRoaXMuYXZlcmFnZSA9IG51bGw7XG4gIH1cblxuICBhZGRTYW1wbGUoc2FtcGxlKSB7XG4gICAgdGhpcy5zYW1wbGVzW3RoaXMubmV4dEluZGV4KytdID0gc2FtcGxlO1xuICAgIHRoaXMubmV4dEluZGV4ID0gdGhpcy5uZXh0SW5kZXggJSB0aGlzLnNhbXBsZXMubGVuZ3RoO1xuICAgIHRoaXMubnVtU2FtcGxlcyA9IE1hdGgubWluKHRoaXMubnVtU2FtcGxlcyArIDEsIHRoaXMuc2FtcGxlcy5sZW5ndGgpO1xuXG4gICAgY29uc3QgayA9IDIgLyAodGhpcy5udW1TYW1wbGVzICsgMSk7XG4gICAgbGV0IGN1cnIgPSB0aGlzLm5leHRJbmRleCAlIHRoaXMubnVtU2FtcGxlcztcbiAgICBsZXQgbmV3QXZlcmFnZSA9IHRoaXMuc2FtcGxlc1tjdXJyXTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5udW1TYW1wbGVzOyBpKyspIHtcbiAgICAgIGN1cnIgPSAoY3VyciArIDEpICUgdGhpcy5udW1TYW1wbGVzO1xuICAgICAgbmV3QXZlcmFnZSA9IHRoaXMuc2FtcGxlc1tjdXJyXSAqIGsgKyBuZXdBdmVyYWdlICogKDEgLSBrKTtcbiAgICB9XG5cbiAgICB0aGlzLmF2ZXJhZ2UgPSBuZXdBdmVyYWdlO1xuICB9XG59XG4iLCJpbXBvcnQgUGh5c2ljcyBmcm9tIFwiLi9waHlzaWNzL1BoeXNpY3MuanNcIjtcbmltcG9ydCBQYXRoIGZyb20gXCIuL2F1dG9ub215L1BhdGguanNcIjtcbmltcG9ydCBDdWJpY1BhdGggZnJvbSBcIi4vYXV0b25vbXkvcGF0aC1wbGFubmluZy9DdWJpY1BhdGguanNcIjtcbmltcG9ydCBBdXRvbm9tb3VzQ29udHJvbGxlciBmcm9tIFwiLi9hdXRvbm9teS9jb250cm9sL0F1dG9ub21vdXNDb250cm9sbGVyLmpzXCI7XG5pbXBvcnQgRm9sbG93Q29udHJvbGxlciBmcm9tIFwiLi9hdXRvbm9teS9jb250cm9sL0ZvbGxvd0NvbnRyb2xsZXIuanNcIjtcbmltcG9ydCBNYW51YWxDb250cm9sbGVyIGZyb20gXCIuL2F1dG9ub215L2NvbnRyb2wvTWFudWFsQ29udHJvbGxlci5qc1wiO1xuaW1wb3J0IE1hcE9iamVjdCBmcm9tIFwiLi9vYmplY3RzL01hcE9iamVjdC5qc1wiO1xuaW1wb3J0IENhck9iamVjdCBmcm9tIFwiLi9vYmplY3RzL0Nhck9iamVjdC5qc1wiO1xuaW1wb3J0IFN0YXRpY09ic3RhY2xlT2JqZWN0IGZyb20gXCIuL29iamVjdHMvU3RhdGljT2JzdGFjbGVPYmplY3QuanNcIjtcbmltcG9ydCBEeW5hbWljT2JzdGFjbGVPYmplY3QgZnJvbSBcIi4vb2JqZWN0cy9EeW5hbWljT2JzdGFjbGVPYmplY3QuanNcIjtcbmltcG9ydCBFZGl0b3IgZnJvbSBcIi4vc2ltdWxhdG9yL0VkaXRvci5qc1wiO1xuaW1wb3J0IE9yYml0Q29udHJvbHMgZnJvbSBcIi4vc2ltdWxhdG9yL09yYml0Q29udHJvbHMuanNcIjtcbmltcG9ydCBUb3BEb3duQ2FtZXJhQ29udHJvbHMgZnJvbSBcIi4vc2ltdWxhdG9yL1RvcERvd25DYW1lcmFDb250cm9scy5qc1wiO1xuaW1wb3J0IERhc2hib2FyZCBmcm9tIFwiLi9zaW11bGF0b3IvRGFzaGJvYXJkLmpzXCI7XG5pbXBvcnQgR1BHUFUgZnJvbSBcIi4vR1BHUFUuanNcIjtcbmltcG9ydCBSb2FkTGF0dGljZSBmcm9tIFwiLi9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL1JvYWRMYXR0aWNlLmpzXCI7XG5pbXBvcnQgUGF0aFBsYW5uZXIgZnJvbSBcIi4vYXV0b25vbXkvcGF0aC1wbGFubmluZy9QYXRoUGxhbm5lci5qc1wiO1xuaW1wb3J0IFN0YXRpY09ic3RhY2xlIGZyb20gXCIuL2F1dG9ub215L1N0YXRpY09ic3RhY2xlLmpzXCI7XG5pbXBvcnQgRHluYW1pY09ic3RhY2xlIGZyb20gXCIuL2F1dG9ub215L0R5bmFtaWNPYnN0YWNsZS5qc1wiO1xuaW1wb3J0IE1vdmluZ0F2ZXJhZ2UgZnJvbSBcIi4vYXV0b25vbXkvTW92aW5nQXZlcmFnZS5qc1wiO1xuaW1wb3J0IFBhdGhQbGFubmVyQ29uZmlnRWRpdG9yIGZyb20gXCIuL3NpbXVsYXRvci9QYXRoUGxhbm5lckNvbmZpZ0VkaXRvci5qc1wiO1xuaW1wb3J0IENhciBmcm9tIFwiLi9waHlzaWNzL0Nhci5qc1wiO1xuXG5pbXBvcnQgVXRpbHMgZnJvbSBcInNjcmlwdC1sb2FkZXIhLi9VdGlscy5qc1wiO1xuXG5jb25zdCBXRUxDT01FX01PREFMX0tFWSA9ICdkYXNoX1dlbGNvbWVNb2RhbCc7XG5cbmltcG9ydCBFWEFNUExFUyBmcm9tIFwiLi9zaW11bGF0b3IvZXhhbXBsZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2ltdWxhdG9yIHtcbiAgY29uc3RydWN0b3IoZG9tRWxlbWVudCkge1xuICAgIHRoaXMucGF0aFBsYW5uZXJXb3JrZXIgPSBuZXcgV29ya2VyKFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2AoJHtkYXNoX2luaXRQYXRoUGxhbm5lcldvcmtlci50b1N0cmluZygpfSkoKWBdLCB7IHR5cGU6ICd0ZXh0L2phdmFzY3JpcHQnIH0pKSk7XG4gICAgdGhpcy5wYXRoUGxhbm5lcldvcmtlci5vbm1lc3NhZ2UgPSB0aGlzLnJlY2VpdmVQbGFubmVkUGF0aC5iaW5kKHRoaXMpO1xuICAgIHRoaXMucGF0aFBsYW5uZXJDb25maWdFZGl0b3IgPSBuZXcgUGF0aFBsYW5uZXJDb25maWdFZGl0b3IoKTtcblxuICAgIHRoaXMucGh5c2ljcyA9IG5ldyBQaHlzaWNzKCk7XG4gICAgdGhpcy5jYXIgPSB0aGlzLnBoeXNpY3MuY3JlYXRlQ2FyKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IFRIUkVFLldlYkdMUmVuZGVyZXIoeyBhbnRpYWxpYXM6IHRydWUgfSk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRQaXhlbFJhdGlvKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFNpemUoZG9tRWxlbWVudC5jbGllbnRXaWR0aCwgZG9tRWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2hhZG93TWFwLmVuYWJsZWQgPSB0cnVlO1xuICAgIGRvbUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5yZW5kZXJlci5kb21FbGVtZW50KTtcblxuICAgIHRoaXMubGFzdFBsYW5QYXJhbXMgPSBudWxsO1xuICAgIHRoaXMucmVuZGVyZXIuY29udGV4dC5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignd2ViZ2xjb250ZXh0bG9zdCcsIGV2ZW50ID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdTaW11bGF0b3I6IHdlYmdsIGNvbnRleHQgbG9zdCcpO1xuICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgICAgY29uc29sZS5sb2codGhpcy5sYXN0UGxhblBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZXRVcENhbWVyYXModGhpcy5yZW5kZXJlci5kb21FbGVtZW50KTtcblxuICAgIHRoaXMuc2NlbmUgPSBuZXcgVEhSRUUuU2NlbmUoKTtcbiAgICB0aGlzLnNjZW5lRm9nID0gbnVsbDsvL25ldyBUSFJFRS5Gb2dFeHAyKDB4MTExMTExLCAwLjAwMjUpO1xuICAgIHRoaXMuc2NlbmUuZm9nID0gdGhpcy5zY2VuZUZvZztcbiAgICB0aGlzLnNjZW5lLmJhY2tncm91bmQgPSBuZXcgVEhSRUUuQ29sb3IoMHgxMTExMTEpO1xuXG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgRWRpdG9yKHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudCwgdGhpcy5lZGl0b3JDYW1lcmEsIHRoaXMuc2NlbmUpO1xuXG4gICAgY29uc3QgZ2VvbG9jYXRpb24gPSBudWxsOy8vWzMzLjUyMzkwMCwgLTExMS45MDg3NTZdO1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXBPYmplY3QoZ2VvbG9jYXRpb24pO1xuICAgIHRoaXMuc2NlbmUuYWRkKG1hcCk7XG5cbiAgICB0aGlzLmNhck9iamVjdCA9IG5ldyBDYXJPYmplY3QodGhpcy5jYXIpO1xuICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuY2FyT2JqZWN0KTtcblxuICAgIHRoaXMuc2NlbmUuYWRkKG5ldyBUSFJFRS5BbWJpZW50TGlnaHQoMHg2NjY2NjYpKTtcbiAgICBjb25zdCBsaWdodCA9IG5ldyBUSFJFRS5EaXJlY3Rpb25hbExpZ2h0KDB4ZmZmZmZmLCAwLjc1KTtcbiAgICBsaWdodC5wb3NpdGlvbi5zZXQoMSwgMSwgMSkubm9ybWFsaXplKCk7XG4gICAgdGhpcy5zY2VuZS5hZGQobGlnaHQpO1xuXG4gICAgdGhpcy5tYW51YWxDYXJDb250cm9sbGVyID0gbmV3IE1hbnVhbENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLmF1dG9ub21vdXNDYXJDb250cm9sbGVyID0gbnVsbDtcblxuICAgIHRoaXMuZGFzaGJvYXJkID0gbmV3IERhc2hib2FyZCh0aGlzLmNhcik7XG5cbiAgICB0aGlzLnBsYW5uZXJSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMucGxhbm5lclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLnBsYW5uZXJSZXNldCA9IGZhbHNlO1xuICAgIHRoaXMuY2FyU3RhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5wbGFubmVkUGF0aEdyb3VwID0gbmV3IFRIUkVFLkdyb3VwKCk7XG4gICAgdGhpcy5zY2VuZS5hZGQodGhpcy5wbGFubmVkUGF0aEdyb3VwKTtcblxuICAgIHRoaXMuc3RhdGljT2JzdGFjbGVzR3JvdXAgPSBuZXcgVEhSRUUuR3JvdXAoKTtcbiAgICB0aGlzLnNjZW5lLmFkZCh0aGlzLnN0YXRpY09ic3RhY2xlc0dyb3VwKTtcbiAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZXNHcm91cCA9IG5ldyBUSFJFRS5Hcm91cCgpO1xuICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuZHluYW1pY09ic3RhY2xlc0dyb3VwKTtcblxuICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2VGltZXN0YW1wID0gbnVsbDtcbiAgICB0aGlzLmZyYW1lQ291bnRlciA9IDA7XG4gICAgdGhpcy5mcHNUaW1lID0gMDtcbiAgICB0aGlzLmZwcyA9IDA7XG4gICAgdGhpcy5zaW11bGF0ZWRUaW1lID0gMDtcbiAgICB0aGlzLmxhc3RQbGFuUmVxdWVzdFRpbWUgPSBudWxsO1xuICAgIHRoaXMubGF0ZXN0UGxhblRpbWVzdGFtcCA9IG51bGw7XG4gICAgdGhpcy5hdmVyYWdlUGxhblRpbWUgPSBuZXcgTW92aW5nQXZlcmFnZSgyMCk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVDYW1lcmFBc3BlY3RzKGRvbUVsZW1lbnQuY2xpZW50V2lkdGggLyBkb21FbGVtZW50LmNsaWVudEhlaWdodCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFNpemUoZG9tRWxlbWVudC5jbGllbnRXaWR0aCwgZG9tRWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2hhc2hjaGFuZ2UnLCBlID0+IHtcbiAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaC5zdGFydHNXaXRoKCcjL3MvJykpXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMubWFudWFsTW9kZUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RlLW1hbnVhbCcpO1xuICAgIHRoaXMubWFudWFsTW9kZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZW5hYmxlTWFudWFsTW9kZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmF1dG9ub21vdXNNb2RlQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGUtYXV0b25vbW91cycpO1xuICAgIHRoaXMuYXV0b25vbW91c01vZGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmVuYWJsZUF1dG9ub21vdXNNb2RlLmJpbmQodGhpcykpO1xuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1lbmFibGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZW5hYmxlRWRpdG9yLmJpbmQodGhpcykpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3ItZmluYWxpemUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZmluYWxpemVFZGl0b3IuYmluZCh0aGlzKSk7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NpbXVsYXRvci1sb2FkJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmxvYWRTY2VuYXJpby5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuc2NlbmFyaW9QbGF5QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjZW5hcmlvLXBsYXknKTtcbiAgICB0aGlzLnNjZW5hcmlvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMucGxheVNjZW5hcmlvLmJpbmQodGhpcykpO1xuICAgIHRoaXMuc2NlbmFyaW9QYXVzZUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuYXJpby1wYXVzZScpO1xuICAgIHRoaXMuc2NlbmFyaW9QYXVzZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMucGF1c2VTY2VuYXJpby5iaW5kKHRoaXMpKTtcbiAgICBmb3IgKGNvbnN0IGJ0biBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQ9c2NlbmFyaW8tcmVzdGFydF0nKSkge1xuICAgICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5yZXN0YXJ0U2NlbmFyaW8uYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdGhpcy53ZWxjb21lTW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2VsY29tZS1tb2RhbCcpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG93LXdlbGNvbWUtbW9kYWwnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4gdGhpcy53ZWxjb21lTW9kYWwuY2xhc3NMaXN0LmFkZCgnaXMtYWN0aXZlJykpO1xuXG4gICAgLy8gaWYgKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShXRUxDT01FX01PREFMX0tFWSkgIT09ICdoaWRlJykge1xuICAgIC8vICB0aGlzLndlbGNvbWVNb2RhbC5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKTtcbiAgICAvLyB9XG5cbiAgICB0aGlzLmNvbGxpc2lvbk1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGlzaW9uLW1lc3NhZ2UnKTtcbiAgICB0aGlzLnN1Y2Nlc3NNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1Y2Nlc3MtbWVzc2FnZScpO1xuICAgIC8vIElmIHRoZSBjbGljayB3YXMgb3V0c2lkZSB0aGUgZGl2LCBoaWRlIGl0XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuc2V0SGlkZUNvbGxpc2lvbk1lc3NhZ2VPbkNsaWNrT3V0c2lkZS5iaW5kKHRoaXMpKTtcblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3ZWxjb21lLW1vZGFsLWJhY2tncm91bmQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGlkZVdlbGNvbWVNb2RhbC5iaW5kKHRoaXMpKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2VsY29tZS1tb2RhbC1jbG9zZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oaWRlV2VsY29tZU1vZGFsLmJpbmQodGhpcykpO1xuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dlbGNvbWUtbW9kYWwtZXhhbXBsZXMnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGUgPT4ge1xuICAgICAgdGhpcy53ZWxjb21lTW9kYWwuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gICAgICB0aGlzLmxvYWRTY2VuYXJpbygpO1xuICAgICAgdGhpcy5lZGl0b3Iuc2NlbmFyaW9NYW5hZ2VyLnN3aXRjaFRhYih0aGlzLmVkaXRvci5zY2VuYXJpb01hbmFnZXIuZXhhbXBsZXNUYWIpO1xuICAgIH0pO1xuXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dlbGNvbWUtbW9kYWwtY3JlYXRlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBlID0+IHtcbiAgICAgIHRoaXMud2VsY29tZU1vZGFsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpO1xuICAgICAgdGhpcy5lbmFibGVFZGl0b3IoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2ltTW9kZUJveGVzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2ltLW1vZGUtYm94JyksIDApO1xuICAgIHRoaXMuZWRpdE1vZGVCb3hlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2VkaXQtbW9kZS1ib3gnKSwgMCk7XG5cbiAgICB0aGlzLmZwc0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmcHMnKTtcblxuICAgIHRoaXMuZW5hYmxlTWFudWFsTW9kZSgpO1xuICAgIHRoaXMuY2hhbmdlQ2FtZXJhKCdjaGFzZScpO1xuXG4gICAgdGhpcy5hcm91bmRBbmNob3JJbmRleCA9IG51bGw7XG4gICAgdGhpcy5zdGF0aWNPYnN0YWNsZXMgPSBbXTtcbiAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZXMgPSBbXTtcblxuICAgIHRoaXMuX2NoZWNrSGFzaFNjZW5hcmlvKCk7XG5cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5zdGVwLmJpbmQodGhpcykpO1xuXG4gICAgdGhpcy5lZGl0b3Iuc2NlbmFyaW9NYW5hZ2VyLl9sb2FkU2NlbmFyaW8oRVhBTVBMRVNbMl0pO1xuICAgIHRoaXMuZmluYWxpemVFZGl0b3IoKTtcbiAgfVxuXG4gIHRvc3MoKSB7XG4gICAgY29uc3QgcG9zZSA9IHRoaXMuY2FyLnBvc2U7XG4gICAgY29uc3Qgcm90VmVjID0gVEhSRUUuVmVjdG9yMi5mcm9tQW5nbGUocG9zZS5yb3QpO1xuICAgIGNvbnN0IHBvcyA9IHJvdFZlYy5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKDUwKS5hZGQobmV3IFRIUkVFLlZlY3RvcjIocm90VmVjLnksIHJvdFZlYy54KSkuYWRkKHBvc2UucG9zKTtcbiAgICBjb25zdCBvYnN0YWNsZSA9IG5ldyBTdGF0aWNPYnN0YWNsZShwb3MsIDAsIDEuMCwgMS4wKTtcblxuICAgIGNvbnN0IG9ic0dlb20gPSBuZXcgVEhSRUUuUGxhbmVHZW9tZXRyeShvYnN0YWNsZS53aWR0aCwgb2JzdGFjbGUuaGVpZ2h0KTtcbiAgICBjb25zdCBvYnNNYXQgPSBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoeyBjb2xvcjogMHgwMDAwZmYsIGRlcHRoVGVzdDogZmFsc2UsIHRyYW5zcGFyZW50OiB0cnVlLCBvcGFjaXR5OiAwLjUgfSk7XG4gICAgY29uc3Qgb2JzT2JqID0gbmV3IFRIUkVFLk1lc2gob2JzR2VvbSwgb2JzTWF0KTtcbiAgICBvYnNPYmoucm90YXRpb24ueCA9IC1NYXRoLlBJIC8gMjtcbiAgICBvYnNPYmoucm90YXRpb24ueiA9IC1vYnN0YWNsZS5yb3Q7XG4gICAgb2JzT2JqLnBvc2l0aW9uLnNldChvYnN0YWNsZS5wb3MueCwgMCwgb2JzdGFjbGUucG9zLnkpO1xuICAgIHRoaXMuc2NlbmUuYWRkKG9ic09iaik7XG5cbiAgICB0aGlzLnN0YXRpY09ic3RhY2xlcy5wdXNoKG9ic3RhY2xlKTtcbiAgfVxuXG4gIF9jaGVja0hhc2hTY2VuYXJpbygpIHtcbiAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5oYXNoLnN0YXJ0c1dpdGgoJyMvcy8nKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgW19oYXNoLCBfcywgY29kZV0gPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zcGxpdCgnLycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKGF0b2IoZGVjb2RlVVJJQ29tcG9uZW50KGNvZGUpKSk7XG4gICAgICB0aGlzLmVkaXRvci5sb2FkSlNPTihqc29uKTtcbiAgICAgIHRoaXMuZmluYWxpemVFZGl0b3IoKTtcbiAgICAgIHRoaXMud2VsY29tZU1vZGFsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpO1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW1wb3J0aW5nIHNjZW5hcmlvIGNvZGU6Jyk7XG4gICAgICBjb25zb2xlLmxvZyhjb2RlKTtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH1cbiAgfVxuXG4gIF9zZXRVcENhbWVyYXMoZG9tRWxlbWVudCkge1xuICAgIHRoaXMuY2hhc2VDYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoNTUsIGRvbUVsZW1lbnQuY2xpZW50V2lkdGggLyBkb21FbGVtZW50LmNsaWVudEhlaWdodCwgMSwgMTAwMDApO1xuICAgIHRoaXMuY2hhc2VDYW1lcmFDb250cm9scyA9IG5ldyBPcmJpdENvbnRyb2xzKHRoaXMuY2hhc2VDYW1lcmEsIGRvbUVsZW1lbnQpO1xuICAgIHRoaXMuY2hhc2VDYW1lcmFDb250cm9scy5taW5EaXN0YW5jZSA9IDQ7XG4gICAgdGhpcy5jaGFzZUNhbWVyYUNvbnRyb2xzLm1heERpc3RhbmNlID0gNTAwMDtcbiAgICB0aGlzLmNoYXNlQ2FtZXJhQ29udHJvbHMubWF4UG9sYXJBbmdsZSA9IE1hdGguUEkgLyAyLjAyO1xuICAgIHRoaXMuY2hhc2VDYW1lcmFDb250cm9scy5lbmFibGVQYW4gPSBmYWxzZTtcbiAgICB0aGlzLmNoYXNlQ2FtZXJhQ29udHJvbHMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3Jlc2V0Q2hhc2VDYW1lcmEoKTtcblxuICAgIHRoaXMuZnJlZUNhbWVyYSA9IG5ldyBUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYSg1NSwgZG9tRWxlbWVudC5jbGllbnRXaWR0aCAvIGRvbUVsZW1lbnQuY2xpZW50SGVpZ2h0LCAxLCAxMDAwMCk7XG4gICAgdGhpcy5mcmVlQ2FtZXJhQ29udHJvbHMgPSBuZXcgT3JiaXRDb250cm9scyh0aGlzLmZyZWVDYW1lcmEsIGRvbUVsZW1lbnQpO1xuICAgIHRoaXMuZnJlZUNhbWVyYUNvbnRyb2xzLm1pbkRpc3RhbmNlID0gNTtcbiAgICB0aGlzLmZyZWVDYW1lcmFDb250cm9scy5tYXhEaXN0YW5jZSA9IDUwMDA7XG4gICAgdGhpcy5mcmVlQ2FtZXJhQ29udHJvbHMubWF4UG9sYXJBbmdsZSA9IE1hdGguUEkgLyAyLjAyO1xuICAgIHRoaXMuZnJlZUNhbWVyYUNvbnRyb2xzLmVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuX3Jlc2V0RnJlZUNhbWVyYSgpO1xuXG4gICAgdGhpcy50b3BEb3duQ2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDU1LCBkb21FbGVtZW50LmNsaWVudFdpZHRoIC8gZG9tRWxlbWVudC5jbGllbnRIZWlnaHQsIDEsIDEwMDAwKTtcbiAgICB0aGlzLnRvcERvd25DYW1lcmEucG9zaXRpb24uc2V0KDAsIDUwLCAwKTtcbiAgICB0aGlzLnRvcERvd25DYW1lcmEubG9va0F0KDAsIDAsIDApO1xuICAgIHRoaXMudG9wRG93bkNvbnRyb2xzID0gbmV3IFRvcERvd25DYW1lcmFDb250cm9scyhkb21FbGVtZW50LCB0aGlzLnRvcERvd25DYW1lcmEpO1xuICAgIHRoaXMudG9wRG93bkNvbnRyb2xzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRvcERvd25Db250cm9scy5taW5BbHRpdHVkZSA9IDU7XG4gICAgdGhpcy50b3BEb3duQ29udHJvbHMubWF4QWx0aXR1ZGUgPSAxMDAwMDtcblxuICAgIHRoaXMuZWRpdG9yQ2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDQ1LCBkb21FbGVtZW50LmNsaWVudFdpZHRoIC8gZG9tRWxlbWVudC5jbGllbnRIZWlnaHQsIDEsIDEwMDAwKTtcbiAgICB0aGlzLmVkaXRvckNhbWVyYS5sYXllcnMuZW5hYmxlKDIpO1xuICAgIHRoaXMuZWRpdG9yQ2FtZXJhLnBvc2l0aW9uLnNldCgwLCAyMDAsIDApO1xuICAgIHRoaXMuZWRpdG9yQ2FtZXJhLmxvb2tBdCgwLCAwLCAwKTtcbiAgICB0aGlzLmVkaXRvckNhbWVyYUNvbnRyb2xzID0gbmV3IFRvcERvd25DYW1lcmFDb250cm9scyhkb21FbGVtZW50LCB0aGlzLmVkaXRvckNhbWVyYSk7XG4gICAgdGhpcy5lZGl0b3JDYW1lcmFDb250cm9scy5lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5lZGl0b3JDYW1lcmFDb250cm9scy5lbmFibGVQYW5uaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmVkaXRvckNhbWVyYUNvbnRyb2xzLm1pbkFsdGl0dWRlID0gMTA7XG4gICAgdGhpcy5lZGl0b3JDYW1lcmFDb250cm9scy5tYXhBbHRpdHVkZSA9IDEwMDAwO1xuXG4gICAgdGhpcy5jYW1lcmFCdXR0b25zID0ge307XG5cbiAgICBbJ2ZyZWUnLCAnY2hhc2UnLCAndG9wRG93biddLmZvckVhY2goYyA9PiB7XG4gICAgICBjb25zdCBjYW1lcmFCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgY2FtZXJhLSR7Y31gKTtcbiAgICAgIGNhbWVyYUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMuY2hhbmdlQ2FtZXJhKGMpKTtcbiAgICAgIHRoaXMuY2FtZXJhQnV0dG9uc1tjXSA9IGNhbWVyYUJ1dHRvbjtcbiAgICB9KTtcblxuICAgIHRoaXMuc3dpdGNoVG8yREJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW1lcmEtMkQnKTtcbiAgICB0aGlzLnN3aXRjaFRvMkRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnN3aXRjaFRvMkQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5zd2l0Y2hUbzNEQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbWVyYS0zRCcpO1xuICAgIHRoaXMuc3dpdGNoVG8zREJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuc3dpdGNoVG8zRC5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuc3dpdGNoVG8zRCgpO1xuICB9XG5cbiAgX3Jlc2V0RnJlZUNhbWVyYSgpIHtcbiAgICB0aGlzLmZyZWVDYW1lcmFDb250cm9scy5wb3NpdGlvbjAuY29weSh0aGlzLmNoYXNlQ2FtZXJhLnBvc2l0aW9uKTtcbiAgICBjb25zdCBjYXJQb3NpdGlvbiA9IHRoaXMuY2FyLnBvc2l0aW9uO1xuICAgIHRoaXMuZnJlZUNhbWVyYUNvbnRyb2xzLnRhcmdldDAuc2V0KGNhclBvc2l0aW9uLngsIDAsIGNhclBvc2l0aW9uLnkpO1xuICAgIHRoaXMuZnJlZUNhbWVyYUNvbnRyb2xzLnJlc2V0KCk7XG4gIH1cblxuICBfcmVzZXRDaGFzZUNhbWVyYSgpIHtcbiAgICBjb25zdCBwb3MgPSB0aGlzLmNhci5wb3NpdGlvbjtcbiAgICBjb25zdCBkaXJWZWN0b3IgPSBUSFJFRS5WZWN0b3IyLmZyb21BbmdsZSh0aGlzLmNhci5yb3RhdGlvbikubXVsdGlwbHlTY2FsYXIoLTIwKTtcbiAgICB0aGlzLmNoYXNlQ2FtZXJhLnBvc2l0aW9uLnNldChwb3MueCArIGRpclZlY3Rvci54LCA4LCBwb3MueSArIGRpclZlY3Rvci55KTtcbiAgICB0aGlzLmNoYXNlQ2FtZXJhLmxvb2tBdChwb3MueCwgMCwgcG9zLnkpO1xuICB9XG5cbiAgX3Jlc2V0VG9wRG93bkNhbWVyYSgpIHtcbiAgICBjb25zdCBjYXJQb3NpdGlvbiA9IHRoaXMuY2FyLnBvc2l0aW9uO1xuICAgIHRoaXMudG9wRG93bkNhbWVyYS5wb3NpdGlvbi5zZXQoY2FyUG9zaXRpb24ueCwgNTAsIGNhclBvc2l0aW9uLnkpO1xuICAgIHRoaXMudG9wRG93bkNhbWVyYS5yb3RhdGlvbi56ID0gLXRoaXMuY2FyLnJvdGF0aW9uIC0gTWF0aC5QSSAvIDJcbiAgfVxuXG4gIF91cGRhdGVDYW1lcmFBc3BlY3RzKGFzcGVjdCkge1xuICAgIHRoaXMuZnJlZUNhbWVyYS5hc3BlY3QgPSBhc3BlY3Q7XG4gICAgdGhpcy5mcmVlQ2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICB0aGlzLmNoYXNlQ2FtZXJhLmFzcGVjdCA9IGFzcGVjdDtcbiAgICB0aGlzLmNoYXNlQ2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgICB0aGlzLnRvcERvd25DYW1lcmEuYXNwZWN0ID0gYXNwZWN0O1xuICAgIHRoaXMudG9wRG93bkNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG4gICAgdGhpcy5lZGl0b3JDYW1lcmEuYXNwZWN0ID0gYXNwZWN0O1xuICAgIHRoaXMuZWRpdG9yQ2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcbiAgfVxuXG4gIGVuYWJsZUVkaXRvcigpIHtcbiAgICB0aGlzLmVkaXRvci5lbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLnBsYW5uZXJSdW5uaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLnByZXZpb3VzQ2FtZXJhID0gdGhpcy5jYW1lcmE7XG4gICAgdGhpcy5jYW1lcmEgPSB0aGlzLmVkaXRvckNhbWVyYTtcbiAgICB0aGlzLmVkaXRvckNhbWVyYUNvbnRyb2xzLmVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuY2hhc2VDYW1lcmFDb250cm9scy5lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy50b3BEb3duQ29udHJvbHMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuZnJlZUNhbWVyYUNvbnRyb2xzLmVuYWJsZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuc2NlbmUuZm9nID0gbnVsbDtcbiAgICB0aGlzLmNhck9iamVjdC52aXNpYmxlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMucGxhbm5lZFBhdGhHcm91cCkgdGhpcy5wbGFubmVkUGF0aEdyb3VwLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXRpY09ic3RhY2xlc0dyb3VwLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZXNHcm91cC52aXNpYmxlID0gZmFsc2U7XG5cbiAgICB0aGlzLnNpbU1vZGVCb3hlcy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5hZGQoJ2lzLWhpZGRlbicpKTtcbiAgICB0aGlzLmVkaXRNb2RlQm94ZXMuZm9yRWFjaChlbCA9PiBlbC5jbGFzc0xpc3QucmVtb3ZlKCdpcy1oaWRkZW4nKSk7XG5cbiAgICB0aGlzLnNob3dQbGFubmVyVW5hdmFpbGFibGUoZmFsc2UpO1xuICB9XG5cbiAgZmluYWxpemVFZGl0b3IocmVwbGFjZUNhbWVyYSA9IHRydWUpIHtcbiAgICB0aGlzLmVkaXRvci5lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5lZGl0b3JDYW1lcmFDb250cm9scy5lbmFibGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLmxhdGVzdFBsYW5UaW1lc3RhbXAgPSBudWxsO1xuICAgIHRoaXMucHJldlRpbWVzdGFtcCA9IG51bGw7XG5cbiAgICB0aGlzLnNjZW5lLmZvZyA9IHRoaXMuc2NlbmVGb2c7XG4gICAgdGhpcy5jYXJPYmplY3QudmlzaWJsZSA9IHRydWU7XG5cbiAgICB0aGlzLnNpbU1vZGVCb3hlcy5mb3JFYWNoKGVsID0+IGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWhpZGRlbicpKTtcbiAgICB0aGlzLmVkaXRNb2RlQm94ZXMuZm9yRWFjaChlbCA9PiBlbC5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKSk7XG5cbiAgICBpZiAodGhpcy5lZGl0b3IubGFuZVBhdGguYW5jaG9ycy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBjZW50ZXJsaW5lID0gdGhpcy5lZGl0b3IubGFuZVBhdGguY2VudGVybGluZTtcbiAgICAgIGNvbnN0IHBvcyA9IGNlbnRlcmxpbmVbMF0uY2xvbmUoKTtcbiAgICAgIGNvbnN0IGRpciA9IGNlbnRlcmxpbmVbMV0uY2xvbmUoKS5zdWIoY2VudGVybGluZVswXSk7XG4gICAgICBjb25zdCByb3QgPSBNYXRoLmF0YW4yKGRpci55LCBkaXIueCk7XG4gICAgICBjb25zdCBwZXJwaW5kaWN1bGFyID0gcm90ICsgTWF0aC5QSSAvIDIgKiAoTWF0aC5zaWduKHRoaXMuZWRpdG9yLmxhbmVQcmVmZXJlbmNlKSB8fCAwKTtcbiAgICAgIGNvbnN0IGxhdGl0dWRlID0gdGhpcy5wYXRoUGxhbm5lckNvbmZpZ0VkaXRvci5jb25maWcucm9hZFdpZHRoIC8gNDtcblxuICAgICAgdGhpcy5jYXIuc2V0UG9zZShwb3MueCArIE1hdGguY29zKHBlcnBpbmRpY3VsYXIpICogbGF0aXR1ZGUsIHBvcy55ICsgTWF0aC5zaW4ocGVycGluZGljdWxhcikgKiBsYXRpdHVkZSwgcm90KTtcbiAgICAgIHRoaXMuY2FyLnZlbG9jaXR5ID0gdGhpcy5lZGl0b3IuaW5pdGlhbFNwZWVkO1xuXG4gICAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZXMgPSB0aGlzLmVkaXRvci5keW5hbWljT2JzdGFjbGVzO1xuXG4gICAgICAvLyBUaGUgYGZhbHNlYCB2YWx1ZSBtZWFucyB0aGUgY29udHJvbGxlciBpcyB3YWl0aW5nIHRvIGJlIGNyZWF0ZWQgYWZ0ZXIgdGhlIGZpcnN0IHBsYW5uaW5nIGN5Y2xlLlxuICAgICAgLy8gVGhpcyBzaWduYWxzIHRoZSBzaW11bGF0b3IgdG8gdXNlIG5ldXRyYWwgY29udHJvbHMgaW5zdGVhZCBvZiB0aGUgaGFyZCBicmFrZSB1c2VkIGZvciB0aGUgYG51bGxgIHZhbHVlLlxuICAgICAgdGhpcy5hdXRvbm9tb3VzQ2FyQ29udHJvbGxlciA9IGZhbHNlO1xuICAgICAgdGhpcy5lbmFibGVBdXRvbm9tb3VzTW9kZSgpO1xuXG4gICAgICBpZiAoIXRoaXMucGxhbm5lclJ1bm5pbmcpIHtcbiAgICAgICAgdGhpcy5wbGFubmVyUmVhZHkgPSB0cnVlO1xuICAgICAgICB0aGlzLnBsYW5uZXJSdW5uaW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGxhbm5lclJlc2V0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2ltdWxhdGVkVGltZSA9IDA7XG4gICAgICB0aGlzLmNhclN0YXRpb24gPSAwO1xuICAgICAgdGhpcy5hcm91bmRBbmNob3JJbmRleCA9IG51bGw7XG5cbiAgICAgIHRoaXMucGF1c2VTY2VuYXJpbygpO1xuICAgICAgdGhpcy5hdXRvbm9tb3VzTW9kZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1sb2FkaW5nJyk7XG4gICAgICB0aGlzLndhaXRpbmdGb3JGaXJzdFBsYW4gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZXMgPSBbXTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRpY09ic3RhY2xlcyA9IHRoaXMuZWRpdG9yLnN0YXRpY09ic3RhY2xlcztcbiAgICB0aGlzLnJlY3JlYXRlU3RhdGljT2JzdGFjbGVPYmplY3RzKCk7XG4gICAgdGhpcy5yZWNyZWF0ZUR5bmFtaWNPYnN0YWNsZU9iamVjdHMoKTtcblxuICAgIHRoaXMuZGFzaGJvYXJkLnVwZGF0ZSh7IHN0ZWVyOiAwLCBicmFrZTogMCwgZ2FzOiAwIH0sIHRoaXMuY2FyLnZlbG9jaXR5LCBudWxsLCBudWxsLCAwLCB0aGlzLmF2ZXJhZ2VQbGFuVGltZS5hdmVyYWdlKTtcblxuICAgIGlmIChyZXBsYWNlQ2FtZXJhKSB7XG4gICAgICB0aGlzLmNhbWVyYSA9IHRoaXMucHJldmlvdXNDYW1lcmE7XG5cbiAgICAgIGlmICh0aGlzLnByZXZpb3VzQ2FtZXJhID09IHRoaXMuY2hhc2VDYW1lcmEpXG4gICAgICAgIHRoaXMuY2hhc2VDYW1lcmFDb250cm9scy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgIGVsc2UgaWYgKHRoaXMucHJldmlvdXNDYW1lcmEgPT0gdGhpcy50b3BEb3duQ2FtZXJhKVxuICAgICAgICB0aGlzLnRvcERvd25Db250cm9scy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgIGVsc2UgaWYgKHRoaXMucHJldmlvdXNDYW1lcmEgPT0gdGhpcy5mcmVlQ2FtZXJhKVxuICAgICAgICB0aGlzLmZyZWVDYW1lcmFDb250cm9scy5lbmFibGVkID0gdHJ1ZTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5jaGFuZ2VDYW1lcmEoJ2NoYXNlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVzZXRGcmVlQ2FtZXJhKCk7XG4gICAgdGhpcy5fcmVzZXRDaGFzZUNhbWVyYSgpO1xuICAgIHRoaXMuX3Jlc2V0VG9wRG93bkNhbWVyYSgpO1xuICB9XG5cbiAgcmVjcmVhdGVTdGF0aWNPYnN0YWNsZU9iamVjdHMoKSB7XG4gICAgdGhpcy5zY2VuZS5yZW1vdmUodGhpcy5zdGF0aWNPYnN0YWNsZXNHcm91cCk7XG4gICAgdGhpcy5zdGF0aWNPYnN0YWNsZXNHcm91cCA9IG5ldyBUSFJFRS5Hcm91cCgpO1xuICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuc3RhdGljT2JzdGFjbGVzR3JvdXApO1xuXG4gICAgdGhpcy5zdGF0aWNPYnN0YWNsZXMuZm9yRWFjaChvID0+IHtcbiAgICAgIGNvbnN0IG9ic3RhY2xlT2JqZWN0ID0gbmV3IFN0YXRpY09ic3RhY2xlT2JqZWN0KG8pO1xuICAgICAgdGhpcy5zdGF0aWNPYnN0YWNsZXNHcm91cC5hZGQob2JzdGFjbGVPYmplY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVjcmVhdGVEeW5hbWljT2JzdGFjbGVPYmplY3RzKCkge1xuICAgIHRoaXMuc2NlbmUucmVtb3ZlKHRoaXMuZHluYW1pY09ic3RhY2xlc0dyb3VwKTtcbiAgICB0aGlzLmR5bmFtaWNPYnN0YWNsZXNHcm91cCA9IG5ldyBUSFJFRS5Hcm91cCgpO1xuICAgIHRoaXMuc2NlbmUuYWRkKHRoaXMuZHluYW1pY09ic3RhY2xlc0dyb3VwKTtcblxuICAgIHRoaXMuZHluYW1pY09ic3RhY2xlcy5mb3JFYWNoKG8gPT4ge1xuICAgICAgY29uc3Qgb2JzdGFjbGVPYmplY3QgPSBuZXcgRHluYW1pY09ic3RhY2xlT2JqZWN0KG8sIHRoaXMuZWRpdG9yLmxhbmVQYXRoKTtcbiAgICAgIHRoaXMuZHluYW1pY09ic3RhY2xlc0dyb3VwLmFkZChvYnN0YWNsZU9iamVjdCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwZGF0ZUR5bmFtaWNPYmplY3RzKHRoaXMuc2ltdWxhdGVkVGltZSk7XG4gIH1cblxuICB1cGRhdGVEeW5hbWljT2JqZWN0cyh0aW1lKSB7XG4gICAgdGhpcy5keW5hbWljT2JzdGFjbGVzR3JvdXAuY2hpbGRyZW4uZm9yRWFjaChvID0+IG8udXBkYXRlKHRpbWUpKTtcbiAgfVxuXG4gIHBsYXlTY2VuYXJpbygpIHtcbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NlbmFyaW9QbGF5QnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLWhpZGRlbicpO1xuICAgIHRoaXMuc2NlbmFyaW9QYXVzZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1oaWRkZW4nKTtcbiAgICB0aGlzLnNob3dQbGFubmVyVW5hdmFpbGFibGUoZmFsc2UpO1xuICB9XG5cbiAgcGF1c2VTY2VuYXJpbygpIHtcbiAgICB0aGlzLnBhdXNlZCA9IHRydWU7XG4gICAgdGhpcy5zY2VuYXJpb1BsYXlCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtaGlkZGVuJyk7XG4gICAgdGhpcy5zY2VuYXJpb1BhdXNlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLWhpZGRlbicpO1xuXG4gICAgdGhpcy5zaG93UGxhbm5lclVuYXZhaWxhYmxlKGZhbHNlKTtcbiAgICB0aGlzLndhaXRpbmdGb3JGaXJzdFBsYW4gPSBmYWxzZTtcbiAgfVxuXG4gIHJlc3RhcnRTY2VuYXJpbygpIHtcbiAgICBpZiAodGhpcy5lZGl0b3IuZW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMucGxhbm5lZFBhdGhHcm91cClcbiAgICAgIHRoaXMuc2NlbmUucmVtb3ZlKHRoaXMucGxhbm5lZFBhdGhHcm91cCk7XG5cbiAgICB0aGlzLmZpbmFsaXplRWRpdG9yKGZhbHNlKTtcblxuICAgIHRoaXMuc3VjY2Vzc01lc3NhZ2UuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gICAgdGhpcy5jb2xsaXNpb25NZXNzYWdlLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpO1xuXG4gICAgdGhpcy5sYXRlc3RQbGFuVGltZXN0YW1wID0gbnVsbDtcbiAgICB0aGlzLnNob3dQbGFubmVyVW5hdmFpbGFibGUoZmFsc2UpO1xuICB9XG5cbiAgbG9hZFNjZW5hcmlvKCkge1xuICAgIGlmICh0aGlzLmVkaXRvci5lbmFibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmVkaXRvci5zY2VuYXJpb01hbmFnZXIuc2hvd01vZGFsKHRoaXMuZmluYWxpemVFZGl0b3IuYmluZCh0aGlzKSk7XG4gIH1cblxuICBlbmFibGVNYW51YWxNb2RlKCkge1xuICAgIHRoaXMubWFudWFsTW9kZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1vdXRsaW5lZCcpO1xuICAgIHRoaXMubWFudWFsTW9kZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1zZWxlY3RlZCcpO1xuICAgIHRoaXMuYXV0b25vbW91c01vZGVCdXR0b24uY2xhc3NMaXN0LmFkZCgnaXMtb3V0bGluZWQnLCAnaXMtaW52ZXJ0ZWQnKTtcbiAgICB0aGlzLmF1dG9ub21vdXNNb2RlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXNlbGVjdGVkJywgJ2lzLWxpbmsnKTtcblxuICAgIHRoaXMuY2FyQ29udHJvbGxlck1vZGUgPSAnbWFudWFsJztcblxuICAgIHRoaXMuc2hvd1BsYW5uZXJVbmF2YWlsYWJsZShmYWxzZSk7XG4gIH1cblxuICBlbmFibGVBdXRvbm9tb3VzTW9kZSgpIHtcbiAgICB0aGlzLmF1dG9ub21vdXNNb2RlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLW91dGxpbmVkJywgJ2lzLWludmVydGVkJyk7XG4gICAgdGhpcy5hdXRvbm9tb3VzTW9kZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1zZWxlY3RlZCcsICdpcy1saW5rJyk7XG4gICAgdGhpcy5tYW51YWxNb2RlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLW91dGxpbmVkJyk7XG4gICAgdGhpcy5tYW51YWxNb2RlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLXNlbGVjdGVkJyk7XG5cbiAgICB0aGlzLmNhckNvbnRyb2xsZXJNb2RlID0gJ2F1dG9ub21vdXMnO1xuICB9XG5cbiAgY2hhbmdlQ2FtZXJhKG1vZGUpIHtcbiAgICBpZiAodGhpcy5lZGl0b3IuZW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICBjYXNlIFwiZnJlZVwiOlxuICAgICAgICB0aGlzLmNoYXNlQ2FtZXJhQ29udHJvbHMuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvcERvd25Db250cm9scy5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZnJlZUNhbWVyYUNvbnRyb2xzLmVuYWJsZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmNhbWVyYSA9PSB0aGlzLmZyZWVDYW1lcmEpXG4gICAgICAgICAgdGhpcy5fcmVzZXRGcmVlQ2FtZXJhKCk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLmNhbWVyYSA9IHRoaXMuZnJlZUNhbWVyYTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjaGFzZVwiOlxuICAgICAgICB0aGlzLmZyZWVDYW1lcmFDb250cm9scy5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9wRG93bkNvbnRyb2xzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGFzZUNhbWVyYUNvbnRyb2xzLmVuYWJsZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmNhbWVyYSA9PSB0aGlzLmNoYXNlQ2FtZXJhKVxuICAgICAgICAgIHRoaXMuX3Jlc2V0Q2hhc2VDYW1lcmEoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuY2FtZXJhID0gdGhpcy5jaGFzZUNhbWVyYTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b3BEb3duXCI6XG4gICAgICAgIHRoaXMuZnJlZUNhbWVyYUNvbnRyb2xzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGFzZUNhbWVyYUNvbnRyb2xzLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b3BEb3duQ29udHJvbHMuZW5hYmxlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FtZXJhID09IHRoaXMudG9wRG93bkNhbWVyYSlcbiAgICAgICAgICB0aGlzLl9yZXNldFRvcERvd25DYW1lcmEoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuY2FtZXJhID0gdGhpcy50b3BEb3duQ2FtZXJhO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5sb2coYFVua25vd24gY2FtZXJhIG1vZGU6ICR7bW9kZX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYyBpbiB0aGlzLmNhbWVyYUJ1dHRvbnMpIHtcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSB0aGlzLmNhbWVyYUJ1dHRvbnNbY10uY2xhc3NMaXN0O1xuICAgICAgaWYgKGMgPT0gbW9kZSkge1xuICAgICAgICBjbGFzc2VzLnJlbW92ZSgnaXMtb3V0bGluZWQnKTtcbiAgICAgICAgY2xhc3Nlcy5hZGQoJ2lzLXNlbGVjdGVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc2VzLmFkZCgnaXMtb3V0bGluZWQnKTtcbiAgICAgICAgY2xhc3Nlcy5yZW1vdmUoJ2lzLXNlbGVjdGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoVG8yRCgpIHtcbiAgICB0aGlzLnN3aXRjaFRvMkRCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtb3V0bGluZWQnKTtcbiAgICB0aGlzLnN3aXRjaFRvMkRCdXR0b24uY2xhc3NMaXN0LmFkZCgnaXMtc2VsZWN0ZWQnKTtcbiAgICB0aGlzLnN3aXRjaFRvM0RCdXR0b24uY2xhc3NMaXN0LmFkZCgnaXMtb3V0bGluZWQnKTtcbiAgICB0aGlzLnN3aXRjaFRvM0RCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtc2VsZWN0ZWQnKTtcblxuICAgIHRoaXMuY2hhc2VDYW1lcmEubGF5ZXJzLmVuYWJsZSgyKTtcbiAgICB0aGlzLnRvcERvd25DYW1lcmEubGF5ZXJzLmVuYWJsZSgyKTtcbiAgICB0aGlzLmZyZWVDYW1lcmEubGF5ZXJzLmVuYWJsZSgyKTtcbiAgICB0aGlzLmNoYXNlQ2FtZXJhLmxheWVycy5kaXNhYmxlKDMpO1xuICAgIHRoaXMudG9wRG93bkNhbWVyYS5sYXllcnMuZGlzYWJsZSgzKTtcbiAgICB0aGlzLmZyZWVDYW1lcmEubGF5ZXJzLmRpc2FibGUoMyk7XG4gIH1cblxuICBzd2l0Y2hUbzNEKCkge1xuICAgIHRoaXMuc3dpdGNoVG8zREJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1vdXRsaW5lZCcpO1xuICAgIHRoaXMuc3dpdGNoVG8zREJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1zZWxlY3RlZCcpO1xuICAgIHRoaXMuc3dpdGNoVG8yREJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1vdXRsaW5lZCcpO1xuICAgIHRoaXMuc3dpdGNoVG8yREJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdpcy1zZWxlY3RlZCcpO1xuXG4gICAgdGhpcy5jaGFzZUNhbWVyYS5sYXllcnMuZW5hYmxlKDMpO1xuICAgIHRoaXMudG9wRG93bkNhbWVyYS5sYXllcnMuZW5hYmxlKDMpO1xuICAgIHRoaXMuZnJlZUNhbWVyYS5sYXllcnMuZW5hYmxlKDMpO1xuICAgIHRoaXMuY2hhc2VDYW1lcmEubGF5ZXJzLmRpc2FibGUoMik7XG4gICAgdGhpcy50b3BEb3duQ2FtZXJhLmxheWVycy5kaXNhYmxlKDIpO1xuICAgIHRoaXMuZnJlZUNhbWVyYS5sYXllcnMuZGlzYWJsZSgyKTtcbiAgfVxuXG4gIGhpZGVXZWxjb21lTW9kYWwoKSB7XG4gICAgdGhpcy53ZWxjb21lTW9kYWwuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKFdFTENPTUVfTU9EQUxfS0VZLCAnaGlkZScpO1xuICB9XG5cbiAgc2hvd1BsYW5uZXJVbmF2YWlsYWJsZShzaG93KSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGxhbm5lci11bmF2YWlsYWJsZS1tZXNzYWdlXCIpO1xuICAgIGlmIChzaG93KSB7XG4gICAgICBtZXNzYWdlLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICAgICAgdGhpcy5hdXRvbm9tb3VzTW9kZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdpcy1sb2FkaW5nJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lc3NhZ2UuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gICAgICB0aGlzLmF1dG9ub21vdXNNb2RlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWxvYWRpbmcnKTtcbiAgICB9XG4gIH1cblxuICBzZXRIaWRlQ29sbGlzaW9uTWVzc2FnZU9uQ2xpY2tPdXRzaWRlKCkge1xuICAgIGlmICghdGhpcy5jb2xsaXNpb25NZXNzYWdlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY29sbGlzaW9uTWVzc2FnZS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN1Y2Nlc3NNZXNzYWdlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuc3VjY2Vzc01lc3NhZ2UuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRQbGFubmVyKHBvc2UsIHN0YXRpb24pIHtcbiAgICB0aGlzLnBsYW5uZXJSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMubGFzdFBsYW5SZXF1ZXN0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgLy8gSW4gb3JkZXIgdG8gY3JlYXRlIGEgc3RhYmxlIHRyYWplY3RvcnkgYmV0d2VlbiBzdWNjZXNzaXZlIHBsYW5uaW5nXG4gICAgLy8gY3ljbGVzLCB3ZSBtdXN0IGNvbXBlbnNhdGUgZm9yIHRoZSBsYXRlbmN5IGJldHdlZW4gd2hlbiBhIHBsYW5uaW5nIGN5Y2xlXG4gICAgLy8gc3RhcnRzIGFuZCB3aGVuIGl0IGVuZHMuIFRoZSBhdmVyYWdlIHBsYW5uaW5nIHRpbWUgaXMgdXNlZCB0byBmb3J3YXJkXG4gICAgLy8gc2ltdWxhdGUgdGhlIHZlaGljbGUgdG8gdGhlIHBvc2UgaXQgaXMgZXhwZWN0ZWQgdG8gaGF2ZSB3aGVuIHRoZVxuICAgIC8vIHBsYW5uaW5nIGFjdHVhbGx5IGZpbmlzaGVzLlxuXG4gICAgbGV0IHByZWRpY3RlZFBvc2UgPSBwb3NlO1xuICAgIGxldCBwcmVkaWN0ZWRTdGF0aW9uID0gc3RhdGlvbjtcbiAgICBsZXQgc3RhcnRUaW1lID0gdGhpcy5zaW11bGF0ZWRUaW1lO1xuXG4gICAgaWYgKCF0aGlzLnBsYW5uZXJSZXNldCAmJiAhdGhpcy5wYXVzZWQgJiYgdGhpcy5hdXRvbm9tb3VzQ2FyQ29udHJvbGxlciAmJiB0aGlzLmNhckNvbnRyb2xsZXJNb2RlID09ICdhdXRvbm9tb3VzJykge1xuICAgICAgY29uc3QgbGF0ZW5jeSA9IHRoaXMuYXZlcmFnZVBsYW5UaW1lLmF2ZXJhZ2U7XG4gICAgICBwcmVkaWN0ZWRQb3NlID0gdGhpcy5hdXRvbm9tb3VzQ2FyQ29udHJvbGxlci5wcmVkaWN0UG9zZUFmdGVyVGltZShwb3NlLCBsYXRlbmN5KTtcbiAgICAgIHByZWRpY3RlZFN0YXRpb24gPSB0aGlzLmVkaXRvci5sYW5lUGF0aC5zdGF0aW9uTGF0aXR1ZGVGcm9tUG9zaXRpb24ocHJlZGljdGVkUG9zZS5wb3MsIHRoaXMuYXJvdW5kQW5jaG9ySW5kZXgpWzBdO1xuICAgICAgc3RhcnRUaW1lICs9IGxhdGVuY3k7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzZXQgPSB0aGlzLnBsYW5uZXJSZXNldDtcbiAgICB0aGlzLnBsYW5uZXJSZXNldCA9IGZhbHNlO1xuXG4gICAgdGhpcy5sYXN0UGxhblBhcmFtcyA9ICB7XG4gICAgICB0eXBlOiAncGxhbicsXG4gICAgICBjb25maWc6IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucGF0aFBsYW5uZXJDb25maWdFZGl0b3IuY29uZmlnLCB7IHNwZWVkTGltaXQ6IHRoaXMuZWRpdG9yLnNwZWVkTGltaXQsIGxhbmVQcmVmZXJlbmNlOiB0aGlzLmVkaXRvci5sYW5lUHJlZmVyZW5jZSB9KSxcbiAgICAgIHZlaGljbGVQb3NlOiBwcmVkaWN0ZWRQb3NlLFxuICAgICAgdmVoaWNsZVN0YXRpb246IHByZWRpY3RlZFN0YXRpb24sXG4gICAgICBsYW5lUGF0aDogdGhpcy5lZGl0b3IubGFuZVBhdGgsXG4gICAgICBzdGFydFRpbWU6IHN0YXJ0VGltZSxcbiAgICAgIHN0YXRpY09ic3RhY2xlczogdGhpcy5zdGF0aWNPYnN0YWNsZXMsXG4gICAgICBkeW5hbWljT2JzdGFjbGVzOiB0aGlzLmR5bmFtaWNPYnN0YWNsZXMuZmlsdGVyKG8gPT4gby5wb3NpdGlvbkF0VGltZShzdGFydFRpbWUpLnggPj0gMCksXG4gICAgICByZXNldDogcmVzZXRcbiAgICB9O1xuXG4gICAgdGhpcy5wYXRoUGxhbm5lcldvcmtlci5wb3N0TWVzc2FnZSh0aGlzLmxhc3RQbGFuUGFyYW1zKTtcbiAgfVxuXG4gIHJlY2VpdmVQbGFubmVkUGF0aChldmVudCkge1xuICAgIGlmIChldmVudC5kYXRhLmVycm9yKSB7XG4gICAgICBpZiAoZXZlbnQuZGF0YS5lcnJvciA9PT0gXCJwbGFubmVyX3VuYXZhaWxhYmxlXCIgJiYgIXRoaXMucGF1c2VkKSB7XG4gICAgICAgIHRoaXMuc2hvd1BsYW5uZXJVbmF2YWlsYWJsZSh0cnVlKTtcbiAgICAgIH1cbiAgICAgIC8vZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsYW5uZXItZXJyb3InKS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1oaWRkZW4nKVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1BsYW5uZXJVbmF2YWlsYWJsZShmYWxzZSk7XG5cbiAgICB0aGlzLmxhdGVzdFBsYW5UaW1lc3RhbXAgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAgIGlmICh0aGlzLndhaXRpbmdGb3JGaXJzdFBsYW4gJiYgIXRoaXMucGxhbm5lclJlc2V0KSB7XG4gICAgICB0aGlzLndhaXRpbmdGb3JGaXJzdFBsYW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuYXV0b25vbW91c01vZGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnaXMtbG9hZGluZycpO1xuICAgICAgdGhpcy5wbGF5U2NlbmFyaW8oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGl0b3IuZW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgY29uc3QgeyBmcm9tVmVoaWNsZVBhcmFtcywgdmVoaWNsZVBvc2UsIHZlaGljbGVTdGF0aW9uLCBsYXR0aWNlU3RhcnRTdGF0aW9uLCBjb25maWcsIGR5bmFtaWNPYnN0YWNsZUdyaWQgfSA9IGV2ZW50LmRhdGE7XG4gICAgbGV0IHsgcGF0aCwgZnJvbVZlaGljbGVTZWdtZW50IH0gPSBldmVudC5kYXRhO1xuXG4gICAgY29uc3QgcGxhbm5pbmdEdXJhdGlvbiA9IE1hdGgubWluKCh0aGlzLmxhdGVzdFBsYW5UaW1lc3RhbXAgLSB0aGlzLmxhc3RQbGFuUmVxdWVzdFRpbWUpIC8gMTAwMCwgMC4zKTtcbiAgICB0aGlzLmF2ZXJhZ2VQbGFuVGltZS5hZGRTYW1wbGUocGxhbm5pbmdEdXJhdGlvbik7XG4gICAgdGhpcy5wbGFubmVyUmVhZHkgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucGxhbm5lclJlc2V0KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5wbGFubmVkUGF0aEdyb3VwKVxuICAgICAgdGhpcy5zY2VuZS5yZW1vdmUodGhpcy5wbGFubmVkUGF0aEdyb3VwKTtcbiAgICB0aGlzLnBsYW5uZWRQYXRoR3JvdXAgPSBuZXcgVEhSRUUuR3JvdXAoKTtcbiAgICB0aGlzLnNjZW5lLmFkZCh0aGlzLnBsYW5uZWRQYXRoR3JvdXApO1xuXG4gICAgY29uc3QgY2lyY2xlR2VvbSA9IG5ldyBUSFJFRS5DaXJjbGVHZW9tZXRyeSgwLjEsIDMyKTtcbiAgICBjb25zdCBjaXJjbGVNYXQgPSBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoeyBjb2xvcjogMHgwMGZmODAsIHRyYW5zcGFyZW50OiB0cnVlLCBvcGFjaXR5OiAwLjcgfSk7XG5cbiAgICBpZiAobGF0dGljZVN0YXJ0U3RhdGlvbikge1xuICAgICAgY29uc3QgbGF0dGljZSA9IG5ldyBSb2FkTGF0dGljZSh0aGlzLmVkaXRvci5sYW5lUGF0aCwgbGF0dGljZVN0YXJ0U3RhdGlvbiwgY29uZmlnKTtcbiAgICAgIGxhdHRpY2UubGF0dGljZS5mb3JFYWNoKGNlbGxzID0+IHtcbiAgICAgICAgY2VsbHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICBjb25zdCBjaXJjbGUgPSBuZXcgVEhSRUUuTWVzaChjaXJjbGVHZW9tLCBjaXJjbGVNYXQpO1xuICAgICAgICAgIGNpcmNsZS5wb3NpdGlvbi5zZXQoYy5wb3MueCwgMCwgYy5wb3MueSk7XG4gICAgICAgICAgY2lyY2xlLnJvdGF0aW9uLnggPSAtTWF0aC5QSSAvIDI7XG4gICAgICAgICAgdGhpcy5wbGFubmVkUGF0aEdyb3VwLmFkZChjaXJjbGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGNsZWFyIHRoaXMgdXAgb3IganVzdCByZW1vdmUgaXRcbiAgICBpZiAoZmFsc2UgJiYgZHluYW1pY09ic3RhY2xlR3JpZCkge1xuICAgICAgY29uc3QgZHluYW1pY0dyaWRUZXggPSBuZXcgVEhSRUUuRGF0YVRleHR1cmUoZHluYW1pY09ic3RhY2xlR3JpZC5kYXRhLCBkeW5hbWljT2JzdGFjbGVHcmlkLndpZHRoLCBkeW5hbWljT2JzdGFjbGVHcmlkLmhlaWdodCwgVEhSRUUuUkdCQUZvcm1hdCwgVEhSRUUuRmxvYXRUeXBlKTtcbiAgICAgIGR5bmFtaWNHcmlkVGV4LmZsaXBZID0gdHJ1ZTtcbiAgICAgIGR5bmFtaWNHcmlkVGV4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblxuICAgICAgY29uc3QgW2dyaWRTdGFydF0gPSB0aGlzLmVkaXRvci5sYW5lUGF0aC5zYW1wbGVTdGF0aW9ucyh2ZWhpY2xlU3RhdGlvbiwgMSwgMCk7XG4gICAgICBpZiAoZ3JpZFN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNHcmlkR2VvbSA9IG5ldyBUSFJFRS5QbGFuZUdlb21ldHJ5KGR5bmFtaWNPYnN0YWNsZUdyaWQud2lkdGggKiBjb25maWcuc2xHcmlkQ2VsbFNpemUsIGR5bmFtaWNPYnN0YWNsZUdyaWQuaGVpZ2h0ICogY29uZmlnLnNsR3JpZENlbGxTaXplKTtcbiAgICAgICAgY29uc3QgZHluYW1pY0dyaWRNYXQgPSBuZXcgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoeyBtYXA6IGR5bmFtaWNHcmlkVGV4LCBkZXB0aFRlc3Q6IGZhbHNlLCB0cmFuc3BhcmVudDogdHJ1ZSwgb3BhY2l0eTogMC41IH0pO1xuICAgICAgICBjb25zdCBkeW5hbWljR3JpZE9iaiA9IG5ldyBUSFJFRS5NZXNoKGR5bmFtaWNHcmlkR2VvbSwgZHluYW1pY0dyaWRNYXQpO1xuICAgICAgICBkeW5hbWljR3JpZE9iai5yb3RhdGlvbi54ID0gLU1hdGguUEkgLyAyO1xuICAgICAgICBkeW5hbWljR3JpZE9iai5yb3RhdGlvbi56ID0gLWdyaWRTdGFydC5yb3Q7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IFRIUkVFLlZlY3RvcjIuZnJvbUFuZ2xlKGdyaWRTdGFydC5yb3QpLm11bHRpcGx5U2NhbGFyKGR5bmFtaWNPYnN0YWNsZUdyaWQud2lkdGggKiBjb25maWcuc2xHcmlkQ2VsbFNpemUgLyAyIC0gY29uZmlnLnNwYXRpYWxIb3Jpem9uIC8gY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMpO1xuICAgICAgICBkeW5hbWljR3JpZE9iai5wb3NpdGlvbi5zZXQoZ3JpZFN0YXJ0LnBvcy54ICsgb2Zmc2V0LngsIDAsIGdyaWRTdGFydC5wb3MueSArIG9mZnNldC55KTtcblxuICAgICAgICB0aGlzLnBsYW5uZWRQYXRoR3JvdXAuYWRkKGR5bmFtaWNHcmlkT2JqKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGF0aCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5hdXRvbm9tb3VzQ2FyQ29udHJvbGxlciA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGZyb21WZWhpY2xlUGFyYW1zLnR5cGUgPT0gJ2N1YmljJykge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmNhci5wb3NlO1xuICAgICAgY29uc3QgZW5kID0gZnJvbVZlaGljbGVTZWdtZW50W2Zyb21WZWhpY2xlU2VnbWVudC5sZW5ndGggLSAxXTtcblxuICAgICAgY29uc3QgcGF0aEJ1aWxkZXIgPSBuZXcgQ3ViaWNQYXRoKHN0YXJ0LCBlbmQsIGZyb21WZWhpY2xlUGFyYW1zLnBhcmFtcyk7XG5cbiAgICAgIGlmIChwYXRoQnVpbGRlci5vcHRpbWl6ZSgpKSB7XG4gICAgICAgIGZyb21WZWhpY2xlU2VnbWVudCA9IHBhdGhCdWlsZGVyLmJ1aWxkUGF0aChNYXRoLmNlaWwocGF0aEJ1aWxkZXIucGFyYW1zLnNHIC8gMC4yNSkpO1xuXG4gICAgICAgIGNvbnN0IHByZXZWZWxvY2l0eVNxID0gdGhpcy5jYXIudmVsb2NpdHkgKiB0aGlzLmNhci52ZWxvY2l0eTtcbiAgICAgICAgY29uc3QgYWNjZWwgPSAoZW5kLnZlbG9jaXR5ICogZW5kLnZlbG9jaXR5IC0gcHJldlZlbG9jaXR5U3EpIC8gMiAvIHBhdGhCdWlsZGVyLnBhcmFtcy5zRztcbiAgICAgICAgY29uc3QgZHMgPSBwYXRoQnVpbGRlci5wYXJhbXMuc0cgLyAoZnJvbVZlaGljbGVTZWdtZW50Lmxlbmd0aCAtIDEpO1xuICAgICAgICBsZXQgcyA9IDA7XG5cbiAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCBmcm9tVmVoaWNsZVNlZ21lbnQubGVuZ3RoOyBwKyspIHtcbiAgICAgICAgICBmcm9tVmVoaWNsZVNlZ21lbnRbcF0udmVsb2NpdHkgPSBNYXRoLnNxcnQoMiAqIGFjY2VsICogcyArIHByZXZWZWxvY2l0eVNxKTtcbiAgICAgICAgICBmcm9tVmVoaWNsZVNlZ21lbnRbcF0uYWNjZWxlcmF0aW9uID0gYWNjZWw7XG4gICAgICAgICAgcyArPSBkcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcm9tVmVoaWNsZVNlZ21lbnQubGVuZ3RoID4gMCkge1xuICAgICAgcGF0aCA9IGZyb21WZWhpY2xlU2VnbWVudC5jb25jYXQocGF0aCk7XG4gICAgfVxuXG4gICAgcGF0aC5mb3JFYWNoKHAgPT4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHAucG9zLCBUSFJFRS5WZWN0b3IyLnByb3RvdHlwZSkpO1xuICAgIGNvbnN0IGZvbGxvd1BhdGggPSBuZXcgUGF0aChwYXRoKTtcblxuICAgIGlmICh0aGlzLmF1dG9ub21vdXNDYXJDb250cm9sbGVyKVxuICAgICAgdGhpcy5hdXRvbm9tb3VzQ2FyQ29udHJvbGxlci5yZXBsYWNlUGF0aChmb2xsb3dQYXRoKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmF1dG9ub21vdXNDYXJDb250cm9sbGVyID0gbmV3IEZvbGxvd0NvbnRyb2xsZXIoZm9sbG93UGF0aCwgdGhpcy5jYXIpO1xuXG4gICAgY29uc3QgcGF0aEdlb21ldHJ5ID0gbmV3IFRIUkVFLkdlb21ldHJ5KCk7XG4gICAgcGF0aEdlb21ldHJ5LnNldEZyb21Qb2ludHMocGF0aC5tYXAocCA9PiBuZXcgVEhSRUUuVmVjdG9yMyhwLnBvcy54LCAwLCBwLnBvcy55KSkpO1xuICAgIGNvbnN0IHBhdGhMaW5lID0gbmV3IE1lc2hMaW5lKCk7XG4gICAgcGF0aExpbmUuc2V0R2VvbWV0cnkocGF0aEdlb21ldHJ5KTtcblxuICAgIGNvbnN0IGNvbG9yID0gZnJvbVZlaGljbGVQYXJhbXMudHlwZSA9PSAnY3ViaWMnID8gbmV3IFRIUkVFLkNvbG9yKDB4ZmY4ODAwKSA6IG5ldyBUSFJFRS5Db2xvcigweGZmZmY0MCk7XG4gICAgY29uc3QgcGF0aE9iamVjdCA9IG5ldyBUSFJFRS5NZXNoKFxuICAgICAgcGF0aExpbmUuZ2VvbWV0cnksXG4gICAgICBuZXcgTWVzaExpbmVNYXRlcmlhbCh7XG4gICAgICAgIGNvbG9yOiBjb2xvcixcbiAgICAgICAgbGluZVdpZHRoOiAwLjE1LFxuICAgICAgICByZXNvbHV0aW9uOiBuZXcgVEhSRUUuVmVjdG9yMih0aGlzLnJlbmRlcmVyLmRvbUVsZW1lbnQuY2xpZW50V2lkdGgsIHRoaXMucmVuZGVyZXIuZG9tRWxlbWVudC5jbGllbnRIZWlnaHQpXG4gICAgICB9KVxuICAgICk7XG4gICAgcGF0aE9iamVjdC5yZW5kZXJPcmRlciA9IDE7XG4gICAgdGhpcy5wbGFubmVkUGF0aEdyb3VwLmFkZChwYXRoT2JqZWN0KTtcbiAgfVxuXG4gIF9oYXNDYXJTdGF0aWNPYnN0YWNsZUNvbGxpc2lvbihjYXJSZWN0YW5nbGUpIHtcbiAgICBmb3IgKGNvbnN0IG9ic3RhY2xlIG9mIHRoaXMuc3RhdGljT2JzdGFjbGVzKSB7XG4gICAgICBjb25zdCBvYnN0YWNsZVJlY3RhbmdsZSA9IHtcbiAgICAgICAgeDogb2JzdGFjbGUucG9zLngsXG4gICAgICAgIHk6IG9ic3RhY2xlLnBvcy55LFxuICAgICAgICB3aWR0aDogb2JzdGFjbGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogb2JzdGFjbGUuaGVpZ2h0LFxuICAgICAgICBhbmdsZTogb2JzdGFjbGUucm90LFxuICAgICAgfTtcbiAgICAgIGlmIChhcmVSZWN0YW5nbGVzQ29sbGlkaW5nKGNhclJlY3RhbmdsZSwgb2JzdGFjbGVSZWN0YW5nbGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9oYXNDYXJEeW5hbWljT2JzdGFjbGVDb2xsaXNpb24oY2FyUmVjdGFuZ2xlKSB7XG4gICAgZm9yIChjb25zdCBvYnN0YWNsZSBvZiB0aGlzLmR5bmFtaWNPYnN0YWNsZXNHcm91cC5jaGlsZHJlbikge1xuICAgICAgY29uc3QgcG9zaXRvaW5fYXRfdGltZSA9IG9ic3RhY2xlLnBvc2l0aW9uXG4gICAgICBjb25zdCBvYnN0YWNsZVJlY3RhbmdsZSA9IHtcbiAgICAgICAgeDogcG9zaXRvaW5fYXRfdGltZS54LFxuICAgICAgICB5OiBwb3NpdG9pbl9hdF90aW1lLnosXG4gICAgICAgIHdpZHRoOiBvYnN0YWNsZS5zaXplLncgKyAwLjQsICAvLyAzMCBjbSBpcyBjb2xsaXNpb24gYnVmZmVyXG4gICAgICAgIGhlaWdodDogb2JzdGFjbGUuc2l6ZS5oICsgMC40LFxuICAgICAgICBhbmdsZTogb2JzdGFjbGUucm90YXRpb24ueSxcbiAgICAgIH07XG4gICAgICBpZiAoYXJlUmVjdGFuZ2xlc0NvbGxpZGluZyhjYXJSZWN0YW5nbGUsIG9ic3RhY2xlUmVjdGFuZ2xlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfaGFzQ2FyT3V0T2ZSb2FkQ29sbGlzaW9uKGNhclJlY3RhbmdsZSkge1xuICAgIGZvciAoY29uc3QgbGVmdF9ib3VuZGFyeSBvZiB0aGlzLmVkaXRvci5sYW5lUGF0aC5sZWZ0Qm91bmRhcmllcykge1xuICAgICAgaWYgKGNoZWNrUmVjdGFuZ2xlUG9seWxpbmVJbnRlcnNlY3Rpb24oY2FyUmVjdGFuZ2xlLCBsZWZ0X2JvdW5kYXJ5KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJpZ2h0X2JvdW5kYXJ5IG9mIHRoaXMuZWRpdG9yLmxhbmVQYXRoLnJpZ2h0Qm91bmRhcmllcykge1xuICAgICAgaWYgKGNoZWNrUmVjdGFuZ2xlUG9seWxpbmVJbnRlcnNlY3Rpb24oY2FyUmVjdGFuZ2xlLCByaWdodF9ib3VuZGFyeSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaGFzQW55Q29sbGlzaW9ucygpIHtcbiAgICBjb25zdCBjYXJSZWN0YW5nbGUgPSB7XG4gICAgICB4OiB0aGlzLmNhci5wb3NpdGlvbi54LFxuICAgICAgeTogdGhpcy5jYXIucG9zaXRpb24ueSxcbiAgICAgIGhlaWdodDogQ2FyLkhBTEZfQ0FSX1dJRFRIICogMixcbiAgICAgIHdpZHRoOiBDYXIuSEFMRl9DQVJfTEVOR1RIICogMixcbiAgICAgIGFuZ2xlOiB0aGlzLmNhci5wb3NlLnJvdCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuX2hhc0NhclN0YXRpY09ic3RhY2xlQ29sbGlzaW9uKGNhclJlY3RhbmdsZSkpIHtcbiAgICAgIHJldHVybiBcIkNvbGxpc2lvbiB3aXRoIHN0YXRpYyBvYmplY3RcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc0NhckR5bmFtaWNPYnN0YWNsZUNvbGxpc2lvbihjYXJSZWN0YW5nbGUpKSB7XG4gICAgICByZXR1cm4gXCJDb2xsaXNpb24gd2l0aCBib3RcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2hhc0Nhck91dE9mUm9hZENvbGxpc2lvbihjYXJSZWN0YW5nbGUpKSB7XG4gICAgICByZXR1cm4gXCJPdXQgb2Ygcm9hZFwiO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2hlY2tTY2VuYXJpb0NvbXBsZXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FyU3RhdGlvbiA+PSB0aGlzLmVkaXRvci5sYW5lUGF0aC5hcmNMZW5ndGggLSA1LjA7XG4gIH1cblxuICBzdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICh0aGlzLnByZXZUaW1lc3RhbXAgPT0gbnVsbCkge1xuICAgICAgdGhpcy5wcmV2VGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuc3RlcC5iaW5kKHRoaXMpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBwbGFuIGlzIG91dGRhdGVkLCBzaG91bGQgcGF1c2Ugc2ltdWxhdGlvblxuICAgIGNvbnN0IHBsYW5XYWl0aW5nVGhyZXNob2xkID0gMC4zOyAgLy8gcGF0aCBleHBlY3RlZCB0byBiZSB1cGRhdGVkIG9uY2UgaW4gMzAwbXNcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0UGxhblVwZGF0ZSA9XG4gICAgICB0aGlzLmxhdGVzdFBsYW5UaW1lc3RhbXAgIT0gbnVsbCA/IChwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubGF0ZXN0UGxhblRpbWVzdGFtcCkgLyAxMDAwLjAgOiAwOyAgLy8gaW4gbXNcbiAgICBpZiAoIXRoaXMuZWRpdG9yLmVuYWJsZWQgJiZcbiAgICAgICAgKHRoaXMud2FpdGluZ0ZvckZpcnN0UGxhbiB8fCAoIXRoaXMucGF1c2VkICYmIHRpbWVTaW5jZUxhc3RQbGFuVXBkYXRlID4gcGxhbldhaXRpbmdUaHJlc2hvbGQpKSkge1xuICAgICAgdGhpcy5zaG93UGxhbm5lclVuYXZhaWxhYmxlKHRydWUpO1xuICAgICAgdGhpcy5wcmV2VGltZXN0YW1wID0gdGltZXN0YW1wO1xuICAgIH1cbiAgICBjb25zdCBkdCA9ICh0aW1lc3RhbXAgLSB0aGlzLnByZXZUaW1lc3RhbXApIC8gMTAwMDtcblxuICAgIHRoaXMuZWRpdG9yLnVwZGF0ZSgpO1xuXG4gICAgLy8gc2tpcCBzaW11bGF0aW9uIHdoZW4gZHQgaXMgbm90IGluIHZhbGlkIGV4cGVjdGVkIHJhbmdlXG4gICAgaWYgKCF0aGlzLmVkaXRvci5lbmFibGVkICYmICF0aGlzLnBhdXNlZCAmJiBkdCA+IDFlLTYgJiYgZHQgPCAwLjUpIHtcbiAgICAgIHRoaXMuc2hvd1BsYW5uZXJVbmF2YWlsYWJsZShmYWxzZSk7XG5cbiAgICAgIHRoaXMuc2ltdWxhdGVkVGltZSArPSBkdDtcblxuICAgICAgY29uc3QgcHJldkNhclBvc2l0aW9uID0gdGhpcy5jYXIucG9zaXRpb247XG4gICAgICBjb25zdCBwcmV2Q2FyUm90YXRpb24gPSB0aGlzLmNhci5yb3RhdGlvbjtcblxuICAgICAgY29uc3QgbWFudWFsQ29udHJvbHMgPSB0aGlzLm1hbnVhbENhckNvbnRyb2xsZXIuY29udHJvbCh0aGlzLmNhci5wb3NlLCB0aGlzLmNhci53aGVlbEFuZ2xlLCB0aGlzLmNhci52ZWxvY2l0eSwgZHQpO1xuICAgICAgaWYgKG1hbnVhbENvbnRyb2xzLnN0ZWVyICE9IDAgfHwgbWFudWFsQ29udHJvbHMuYnJha2UgIT0gMCB8fCBtYW51YWxDb250cm9scy5nYXMgIT0gMClcbiAgICAgICAgdGhpcy5lbmFibGVNYW51YWxNb2RlKCk7XG5cbiAgICAgIGxldCBhdXRvbm9tb3VzQ29udHJvbHMgPSB7IHN0ZWVyOiAwLCBicmFrZTogMCwgZ2FzOiAwfTtcbiAgICAgIGlmICh0aGlzLmF1dG9ub21vdXNDYXJDb250cm9sbGVyKVxuICAgICAgICBhdXRvbm9tb3VzQ29udHJvbHMgPSB0aGlzLmF1dG9ub21vdXNDYXJDb250cm9sbGVyLmNvbnRyb2wodGhpcy5jYXIucG9zZSwgdGhpcy5jYXIud2hlZWxBbmdsZSwgdGhpcy5jYXIudmVsb2NpdHksIGR0LCB0aGlzLmNhckNvbnRyb2xsZXJNb2RlID09ICdhdXRvbm9tb3VzJykgO1xuICAgICAgZWxzZSBpZiAodGhpcy5hdXRvbm9tb3VzQ2FyQ29udHJvbGxlciA9PT0gbnVsbClcbiAgICAgICAgYXV0b25vbW91c0NvbnRyb2xzID0geyBzdGVlcjogMCwgYnJha2U6IDEsIGdhczogMCB9O1xuXG4gICAgICBjb25zdCBjb250cm9scyA9IHRoaXMuY2FyQ29udHJvbGxlck1vZGUgPT0gJ2F1dG9ub21vdXMnID8gYXV0b25vbW91c0NvbnRyb2xzIDogbWFudWFsQ29udHJvbHM7XG5cbiAgICAgIHRoaXMuY2FyLnVwZGF0ZShjb250cm9scywgZHQpO1xuICAgICAgdGhpcy5waHlzaWNzLnN0ZXAoZHQpO1xuXG4gICAgICB0aGlzLnVwZGF0ZUR5bmFtaWNPYmplY3RzKHRoaXMuc2ltdWxhdGVkVGltZSk7XG5cbiAgICAgIGNvbnN0IGNhclBvc2l0aW9uID0gdGhpcy5jYXIucG9zaXRpb247XG4gICAgICBjb25zdCBjYXJSb3RhdGlvbiA9IHRoaXMuY2FyLnJvdGF0aW9uO1xuICAgICAgY29uc3QgY2FyUmVhckF4bGUgPSB0aGlzLmNhci5yZWFyQXhsZVBvc2l0aW9uO1xuICAgICAgY29uc3QgY2FyVmVsb2NpdHkgPSB0aGlzLmNhci52ZWxvY2l0eTtcblxuICAgICAgY29uc3QgcG9zaXRpb25PZmZzZXQgPSB7IHg6IGNhclBvc2l0aW9uLnggLSBwcmV2Q2FyUG9zaXRpb24ueCwgeTogMCwgejogY2FyUG9zaXRpb24ueSAtIHByZXZDYXJQb3NpdGlvbi55IH07XG4gICAgICB0aGlzLmNoYXNlQ2FtZXJhLnBvc2l0aW9uLmFkZChwb3NpdGlvbk9mZnNldCk7XG4gICAgICB0aGlzLmNoYXNlQ2FtZXJhQ29udHJvbHMudGFyZ2V0LnNldChjYXJQb3NpdGlvbi54LCAwLCBjYXJQb3NpdGlvbi55KTtcbiAgICAgIHRoaXMuY2hhc2VDYW1lcmFDb250cm9scy5yb3RhdGVMZWZ0KGNhclJvdGF0aW9uIC0gcHJldkNhclJvdGF0aW9uKTtcbiAgICAgIHRoaXMuY2hhc2VDYW1lcmFDb250cm9scy51cGRhdGUoKTtcblxuICAgICAgdGhpcy50b3BEb3duQ2FtZXJhLnBvc2l0aW9uLnNldFgoY2FyUG9zaXRpb24ueCk7XG4gICAgICB0aGlzLnRvcERvd25DYW1lcmEucG9zaXRpb24uc2V0WihjYXJQb3NpdGlvbi55KTtcbiAgICAgIHRoaXMudG9wRG93bkNhbWVyYS5yb3RhdGlvbi56ID0gLWNhclJvdGF0aW9uIC0gTWF0aC5QSSAvIDJcblxuICAgICAgbGV0IGxhdGl0dWRlID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMuZWRpdG9yLmxhbmVQYXRoLmFuY2hvcnMubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBbcywgbCwgYXJvdW5kQW5jaG9ySW5kZXhdID0gdGhpcy5lZGl0b3IubGFuZVBhdGguc3RhdGlvbkxhdGl0dWRlRnJvbVBvc2l0aW9uKGNhclJlYXJBeGxlLCB0aGlzLmFyb3VuZEFuY2hvckluZGV4KTtcbiAgICAgICAgdGhpcy5hcm91bmRBbmNob3JJbmRleCA9IGFyb3VuZEFuY2hvckluZGV4O1xuXG4gICAgICAgIHRoaXMuY2FyU3RhdGlvbiA9IHM7XG4gICAgICAgIGxhdGl0dWRlID0gbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYW55X2NvbGxpc2lvbiA9IHRoaXMuaGFzQW55Q29sbGlzaW9ucygpO1xuICAgICAgaWYgKGFueV9jb2xsaXNpb24gIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnBhdXNlU2NlbmFyaW8oKTtcbiAgICAgICAgdGhpcy5jb2xsaXNpb25NZXNzYWdlLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29sbGlzaW9uLW1lc3NhZ2UtdGV4dCcpLmlubmVyVGV4dCA9IFwiQ2FzZSBmYWlsZWQ6IFwiICsgYW55X2NvbGxpc2lvbjtcblxuICAgICAgICB0aGlzLnBhdGhQbGFubmVyV29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiAnbm90aWZ5X2Nhc2Vfc3RhdHVzJyxcbiAgICAgICAgICBzdGF0dXM6IHtzdGF0dXM6IFwiZmFpbGVkXCIsIHJlYXNvbjogYW55X2NvbGxpc2lvbn1cbiAgICAgICAgfSk7XG5cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja1NjZW5hcmlvQ29tcGxldGlvbigpKSB7XG4gICAgICAgIHRoaXMucGF1c2VTY2VuYXJpbygpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3NNZXNzYWdlLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuXG4gICAgICAgIHRoaXMucGF0aFBsYW5uZXJXb3JrZXIucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHR5cGU6ICdub3RpZnlfY2FzZV9zdGF0dXMnLFxuICAgICAgICAgIHN0YXR1czoge3N0YXR1czogXCJjb21wbGV0ZWRcIn1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGFzaGJvYXJkLnVwZGF0ZShcbiAgICAgICAgY29udHJvbHMsXG4gICAgICAgIGNhclZlbG9jaXR5LFxuICAgICAgICB0aGlzLmNhclN0YXRpb24sXG4gICAgICAgIGxhdGl0dWRlLFxuICAgICAgICB0aGlzLnNpbXVsYXRlZFRpbWUsXG4gICAgICAgIHRoaXMuYXZlcmFnZVBsYW5UaW1lLmF2ZXJhZ2UpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5lZGl0b3IuZW5hYmxlZCAmJiB0aGlzLnBsYW5uZXJSZWFkeSkge1xuICAgICAgdGhpcy5zdGFydFBsYW5uZXIodGhpcy5jYXIucG9zZSwgdGhpcy5jYXJTdGF0aW9uIHx8IDApO1xuICAgICAgdGhpcy5kYXNoYm9hcmQudXBkYXRlUGxhblRpbWUodGhpcy5hdmVyYWdlUGxhblRpbWUuYXZlcmFnZSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5wbGFubmVyUmVhZHkpIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkLnVwZGF0ZVBsYW5UaW1lKHRpbWVTaW5jZUxhc3RQbGFuVXBkYXRlKTtcbiAgICB9XG5cbiAgICB0aGlzLmZyYW1lQ291bnRlcisrO1xuICAgIHRoaXMuZnBzVGltZSArPSBkdDtcbiAgICBpZiAodGhpcy5mcHNUaW1lID49IDEpIHtcbiAgICAgIHRoaXMuZnBzID0gdGhpcy5mcmFtZUNvdW50ZXIgLyB0aGlzLmZwc1RpbWU7XG4gICAgICB0aGlzLmZyYW1lQ291bnRlciA9IDA7XG4gICAgICB0aGlzLmZwc1RpbWUgPSAwO1xuICAgICAgdGhpcy5mcHNCb3gudGV4dENvbnRlbnQgPSB0aGlzLmZwcy50b0ZpeGVkKDEpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuc2NlbmUsIHRoaXMuY2FtZXJhKTtcblxuICAgIHRoaXMucHJldlRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnN0ZXAuYmluZCh0aGlzKSk7XG4gIH1cbn1cbiIsImltcG9ydCBTaW11bGF0b3IgZnJvbSBcIi4vU2ltdWxhdG9yLmpzXCI7XG5pbXBvcnQgU3RhdGljT2JzdGFjbGUgZnJvbSBcIi4vYXV0b25vbXkvU3RhdGljT2JzdGFjbGUuanNcIjtcblxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGUgPT4ge1xuICB3aW5kb3cuc2ltdWxhdG9yID0gbmV3IFNpbXVsYXRvcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykpO1xufSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///236\n')},585:module=>{eval('module.exports = "Math.clamp = (number, min, max) => Math.max(min, Math.min(number, max));\\n\\nMath.wrapAngle = (angle) => {\\n angle = angle % (Math.PI * 2);\\n if (angle <= -Math.PI) return angle + Math.PI * 2;\\n else if (angle > Math.PI) return angle - Math.PI * 2;\\n else return angle;\\n}\\n\\nTHREE.Vector2.fromAngle = (angle) => new THREE.Vector2(Math.cos(angle), Math.sin(angle));\\n\\nTHREE.Curve.prototype.getCurvatureAt = function(u) {\\n let t2 = this.getUtoTmapping(u);\\n\\n const delta = 0.0001;\\n let t1 = t2 - delta;\\n let t3 = t2 + delta;\\n\\n if (t1 < 0) {\\n t1 = 0;\\n t2 = delta;\\n t3 = 2 * delta;\\n }\\n\\n if (t3 > 1) {\\n t3 = 1;\\n t2 = 1 - delta;\\n t1 = 1 - 2 * delta;\\n }\\n\\n const p1 = this.getPoint(t1);\\n const p2 = this.getPoint(t2);\\n const p3 = this.getPoint(t3);\\n\\n return (Math.atan2(p3.y - p2.y, p3.x - p2.x) - Math.atan2(p2.y - p1.y, p2.x - p1.x)) / p2.distanceTo(p1);\\n};\\n\\n\\nfunction getOBBVertices(cx, cy, width, height, angle) {\\n const hw = width / 2; // half width\\n const hh = height / 2; // half height\\n const cos = Math.cos(angle);\\n const sin = Math.sin(angle);\\n\\n return [\\n // Top-left\\n { x: cx - hw * cos + hh * sin, y: cy - hw * sin - hh * cos },\\n // Top-right\\n { x: cx + hw * cos + hh * sin, y: cy + hw * sin - hh * cos },\\n // Bottom-right\\n { x: cx + hw * cos - hh * sin, y: cy + hw * sin + hh * cos },\\n // Bottom-left\\n { x: cx - hw * cos - hh * sin, y: cy - hw * sin + hh * cos }\\n ];\\n}\\n\\nfunction getOOBBAxes(vertices) {\\n const axes = [];\\n for (let i = 0; i < vertices.length; i++) {\\n const p1 = vertices[i];\\n const p2 = vertices[(i + 1) % vertices.length]; // Next vertex\\n const edge = { x: p1.x - p2.x, y: p1.y - p2.y }; // Get edge vector\\n const normal = { x: -edge.y, y: edge.x }; // Get normal (perpendicular) vector\\n const length = Math.sqrt(normal.x * normal.x + normal.y * normal.y);\\n axes.push({ x: normal.x / length, y: normal.y / length }); // Normalize vector\\n }\\n return axes;\\n}\\n\\nfunction projectOnAxis(vertices, axis) {\\n let min = Infinity;\\n let max = -Infinity;\\n for (const vertex of vertices) {\\n let projection = vertex.x * axis.x + vertex.y * axis.y;\\n min = Math.min(min, projection);\\n max = Math.max(max, projection);\\n }\\n return { min, max };\\n}\\n\\nfunction segmentsOverlaps(projection1, projection2) {\\n return projection1.max >= projection2.min && projection2.max >= projection1.min;\\n}\\n\\nfunction areRectanglesColliding(rect1, rect2) {\\n const verticesA = getOBBVertices(rect1.x, rect1.y, rect1.width, rect1.height, rect1.angle);\\n const verticesB = getOBBVertices(rect2.x, rect2.y, rect2.width, rect2.height, rect2.angle);\\n\\n const axesA = getOOBBAxes(verticesA);\\n const axesB = getOOBBAxes(verticesB);\\n const axes = axesA.concat(axesB);\\n\\n for (const axis of axes) {\\n const projectionA = projectOnAxis(verticesA, axis);\\n const projectionB = projectOnAxis(verticesB, axis);\\n if (!segmentsOverlaps(projectionA, projectionB)) {\\n return false; // Found a separating axis, no collision\\n }\\n }\\n\\n return true; // No separating axis found, rectangles intersect\\n}\\n\\nfunction checkRectanglePolylineIntersection(rect, polylinePoints) {\\n const rectanglePoints = getOBBVertices(rect.x, rect.y, rect.width, rect.height, rect.angle)\\n\\n // Transform rectangle points into array of lines\\n const rectangleLines = [];\\n for (let i = 0; i < rectanglePoints.length; i++) {\\n rectangleLines.push([\\n rectanglePoints[i],\\n rectanglePoints[(i + 1) % rectanglePoints.length]\\n ]);\\n }\\n\\n // Check each polyline segment for intersection with each rectangle line\\n for (let i = 0; i < polylinePoints.length - 1; i++) {\\n const polylineSegment = [\\n polylinePoints[i],\\n polylinePoints[i + 1]\\n ];\\n\\n for (const rectLine of rectangleLines) {\\n if (intersectSegment(rectLine[0], rectLine[1], polylineSegment[0], polylineSegment[1])) {\\n return true; // Found an intersection\\n }\\n }\\n }\\n\\n // No intersections found\\n return false;\\n}\\n\\n// Helper function to detect intersection between two line segments\\nfunction intersectSegment(p0, p1, p2, p3) {\\n let s1_x, s1_y, s2_x, s2_y;\\n s1_x = p1.x - p0.x; s1_y = p1.y - p0.y;\\n s2_x = p3.x - p2.x; s2_y = p3.y - p2.y;\\n\\n let s, t;\\n s = (-s1_y * (p0.x - p2.x) + s1_x * (p0.y - p2.y)) / (-s2_x * s1_y + s1_x * s2_y);\\n t = ( s2_x * (p0.y - p2.y) - s2_y * (p0.x - p2.x)) / (-s2_x * s1_y + s1_x * s2_y);\\n\\n // Collision detected\\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\\n // Intersection point is p0 + t * s1\\n return true;\\n }\\n\\n return false; // No collision\\n}\\n"//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTg1LmpzIiwibWFwcGluZ3MiOiJBQUFBLDBGQUEwRixpQ0FBaUMsa0NBQWtDLHNEQUFzRCx5REFBeUQsc0JBQXNCLEdBQUcsNkZBQTZGLHdEQUF3RCxvQ0FBb0MsMkJBQTJCLHdCQUF3Qix3QkFBd0IsbUJBQW1CLGFBQWEsaUJBQWlCLHFCQUFxQixLQUFLLG1CQUFtQixhQUFhLHFCQUFxQix5QkFBeUIsS0FBSyxtQ0FBbUMsaUNBQWlDLGlDQUFpQywrR0FBK0csSUFBSSw2REFBNkQsMEJBQTBCLHdDQUF3Qyw4Q0FBOEMsZ0NBQWdDLHVDQUF1QywwREFBMEQsMkJBQTJCLDBEQUEwRCw4QkFBOEIsMERBQTBELDZCQUE2QiwwREFBMEQsTUFBTSxHQUFHLG9DQUFvQyxvQkFBb0Isb0JBQW9CLHFCQUFxQixNQUFNLDZCQUE2QixzREFBc0QsbUNBQW1DLGtDQUFrQyx5Q0FBeUMseUJBQXlCLDhHQUE4RyxrQkFBa0IsNENBQTRDLEdBQUcsd0JBQXdCLGdCQUFnQixHQUFHLDRDQUE0Qyx1QkFBdUIsd0JBQXdCLG9DQUFvQyw2REFBNkQsc0NBQXNDLHNDQUFzQyxLQUFLLGFBQWEsV0FBVyxHQUFHLHlEQUF5RCxvRkFBb0YsR0FBRyxtREFBbUQsK0ZBQStGLCtGQUErRiwyQ0FBMkMseUNBQXlDLHFDQUFxQyxnQ0FBZ0MseURBQXlELHlEQUF5RCx3REFBd0Qsc0JBQXNCLCtDQUErQyxLQUFLLG1CQUFtQixvREFBb0QsdUVBQXVFLG9MQUFvTCxvQkFBb0IsNEJBQTRCLE1BQU0sd0hBQXdILEtBQUssa0dBQWtHLCtCQUErQixNQUFNLDhGQUE4RixnREFBZ0QsaUdBQWlHLHVCQUF1QixpQ0FBaUMsT0FBTyxLQUFLLGdEQUFnRCxHQUFHLG9IQUFvSCwrQkFBK0Isd0JBQXdCLG1CQUFtQix3QkFBd0IsbUJBQW1CLGVBQWUsc0ZBQXNGLHNGQUFzRiwwRUFBMEUsZ0VBQWdFLEtBQUssb0JBQW9CLGtCQUFrQiIsInNvdXJjZXMiOlsid2VicGFjazovL2Rhc2gvLi9qcy9VdGlscy5qcz8xMjYyIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCJNYXRoLmNsYW1wID0gKG51bWJlciwgbWluLCBtYXgpID0+IE1hdGgubWF4KG1pbiwgTWF0aC5taW4obnVtYmVyLCBtYXgpKTtcXG5cXG5NYXRoLndyYXBBbmdsZSA9IChhbmdsZSkgPT4ge1xcbiAgYW5nbGUgPSBhbmdsZSAlIChNYXRoLlBJICogMik7XFxuICBpZiAoYW5nbGUgPD0gLU1hdGguUEkpIHJldHVybiBhbmdsZSArIE1hdGguUEkgKiAyO1xcbiAgZWxzZSBpZiAoYW5nbGUgPiBNYXRoLlBJKSByZXR1cm4gYW5nbGUgLSBNYXRoLlBJICogMjtcXG4gIGVsc2UgcmV0dXJuIGFuZ2xlO1xcbn1cXG5cXG5USFJFRS5WZWN0b3IyLmZyb21BbmdsZSA9IChhbmdsZSkgPT4gbmV3IFRIUkVFLlZlY3RvcjIoTWF0aC5jb3MoYW5nbGUpLCBNYXRoLnNpbihhbmdsZSkpO1xcblxcblRIUkVFLkN1cnZlLnByb3RvdHlwZS5nZXRDdXJ2YXR1cmVBdCA9IGZ1bmN0aW9uKHUpIHtcXG4gIGxldCB0MiA9IHRoaXMuZ2V0VXRvVG1hcHBpbmcodSk7XFxuXFxuICBjb25zdCBkZWx0YSA9IDAuMDAwMTtcXG4gIGxldCB0MSA9IHQyIC0gZGVsdGE7XFxuICBsZXQgdDMgPSB0MiArIGRlbHRhO1xcblxcbiAgaWYgKHQxIDwgMCkge1xcbiAgICB0MSA9IDA7XFxuICAgIHQyID0gZGVsdGE7XFxuICAgIHQzID0gMiAqIGRlbHRhO1xcbiAgfVxcblxcbiAgaWYgKHQzID4gMSkge1xcbiAgICB0MyA9IDE7XFxuICAgIHQyID0gMSAtIGRlbHRhO1xcbiAgICB0MSA9IDEgLSAyICogZGVsdGE7XFxuICB9XFxuXFxuICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnQodDEpO1xcbiAgY29uc3QgcDIgPSB0aGlzLmdldFBvaW50KHQyKTtcXG4gIGNvbnN0IHAzID0gdGhpcy5nZXRQb2ludCh0Myk7XFxuXFxuICByZXR1cm4gKE1hdGguYXRhbjIocDMueSAtIHAyLnksIHAzLnggLSBwMi54KSAtIE1hdGguYXRhbjIocDIueSAtIHAxLnksIHAyLnggLSBwMS54KSkgLyBwMi5kaXN0YW5jZVRvKHAxKTtcXG59O1xcblxcblxcbmZ1bmN0aW9uIGdldE9CQlZlcnRpY2VzKGN4LCBjeSwgd2lkdGgsIGhlaWdodCwgYW5nbGUpIHtcXG4gIGNvbnN0IGh3ID0gd2lkdGggLyAyOyAvLyBoYWxmIHdpZHRoXFxuICBjb25zdCBoaCA9IGhlaWdodCAvIDI7IC8vIGhhbGYgaGVpZ2h0XFxuICBjb25zdCBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XFxuICBjb25zdCBzaW4gPSBNYXRoLnNpbihhbmdsZSk7XFxuXFxuICByZXR1cm4gW1xcbiAgICAvLyBUb3AtbGVmdFxcbiAgICB7IHg6IGN4IC0gaHcgKiBjb3MgKyBoaCAqIHNpbiwgeTogY3kgLSBodyAqIHNpbiAtIGhoICogY29zIH0sXFxuICAgIC8vIFRvcC1yaWdodFxcbiAgICB7IHg6IGN4ICsgaHcgKiBjb3MgKyBoaCAqIHNpbiwgeTogY3kgKyBodyAqIHNpbiAtIGhoICogY29zIH0sXFxuICAgIC8vIEJvdHRvbS1yaWdodFxcbiAgICB7IHg6IGN4ICsgaHcgKiBjb3MgLSBoaCAqIHNpbiwgeTogY3kgKyBodyAqIHNpbiArIGhoICogY29zIH0sXFxuICAgIC8vIEJvdHRvbS1sZWZ0XFxuICAgIHsgeDogY3ggLSBodyAqIGNvcyAtIGhoICogc2luLCB5OiBjeSAtIGh3ICogc2luICsgaGggKiBjb3MgfVxcbiAgXTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0T09CQkF4ZXModmVydGljZXMpIHtcXG4gIGNvbnN0IGF4ZXMgPSBbXTtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGljZXMubGVuZ3RoOyBpKyspIHtcXG4gICAgY29uc3QgcDEgPSB2ZXJ0aWNlc1tpXTtcXG4gICAgY29uc3QgcDIgPSB2ZXJ0aWNlc1soaSArIDEpICUgdmVydGljZXMubGVuZ3RoXTsgLy8gTmV4dCB2ZXJ0ZXhcXG4gICAgY29uc3QgZWRnZSA9IHsgeDogcDEueCAtIHAyLngsIHk6IHAxLnkgLSBwMi55IH07IC8vIEdldCBlZGdlIHZlY3RvclxcbiAgICBjb25zdCBub3JtYWwgPSB7IHg6IC1lZGdlLnksIHk6IGVkZ2UueCB9OyAvLyBHZXQgbm9ybWFsIChwZXJwZW5kaWN1bGFyKSB2ZWN0b3JcXG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5zcXJ0KG5vcm1hbC54ICogbm9ybWFsLnggKyBub3JtYWwueSAqIG5vcm1hbC55KTtcXG4gICAgYXhlcy5wdXNoKHsgeDogbm9ybWFsLnggLyBsZW5ndGgsIHk6IG5vcm1hbC55IC8gbGVuZ3RoIH0pOyAvLyBOb3JtYWxpemUgdmVjdG9yXFxuICB9XFxuICByZXR1cm4gYXhlcztcXG59XFxuXFxuZnVuY3Rpb24gcHJvamVjdE9uQXhpcyh2ZXJ0aWNlcywgYXhpcykge1xcbiAgbGV0IG1pbiA9IEluZmluaXR5O1xcbiAgbGV0IG1heCA9IC1JbmZpbml0eTtcXG4gIGZvciAoY29uc3QgdmVydGV4IG9mIHZlcnRpY2VzKSB7XFxuICAgIGxldCBwcm9qZWN0aW9uID0gdmVydGV4LnggKiBheGlzLnggKyB2ZXJ0ZXgueSAqIGF4aXMueTtcXG4gICAgbWluID0gTWF0aC5taW4obWluLCBwcm9qZWN0aW9uKTtcXG4gICAgbWF4ID0gTWF0aC5tYXgobWF4LCBwcm9qZWN0aW9uKTtcXG4gIH1cXG4gIHJldHVybiB7IG1pbiwgbWF4IH07XFxufVxcblxcbmZ1bmN0aW9uIHNlZ21lbnRzT3ZlcmxhcHMocHJvamVjdGlvbjEsIHByb2plY3Rpb24yKSB7XFxuICByZXR1cm4gcHJvamVjdGlvbjEubWF4ID49IHByb2plY3Rpb24yLm1pbiAmJiBwcm9qZWN0aW9uMi5tYXggPj0gcHJvamVjdGlvbjEubWluO1xcbn1cXG5cXG5mdW5jdGlvbiBhcmVSZWN0YW5nbGVzQ29sbGlkaW5nKHJlY3QxLCByZWN0Mikge1xcbiAgY29uc3QgdmVydGljZXNBID0gZ2V0T0JCVmVydGljZXMocmVjdDEueCwgcmVjdDEueSwgcmVjdDEud2lkdGgsIHJlY3QxLmhlaWdodCwgcmVjdDEuYW5nbGUpO1xcbiAgY29uc3QgdmVydGljZXNCID0gZ2V0T0JCVmVydGljZXMocmVjdDIueCwgcmVjdDIueSwgcmVjdDIud2lkdGgsIHJlY3QyLmhlaWdodCwgcmVjdDIuYW5nbGUpO1xcblxcbiAgY29uc3QgYXhlc0EgPSBnZXRPT0JCQXhlcyh2ZXJ0aWNlc0EpO1xcbiAgY29uc3QgYXhlc0IgPSBnZXRPT0JCQXhlcyh2ZXJ0aWNlc0IpO1xcbiAgY29uc3QgYXhlcyA9IGF4ZXNBLmNvbmNhdChheGVzQik7XFxuXFxuICBmb3IgKGNvbnN0IGF4aXMgb2YgYXhlcykge1xcbiAgICBjb25zdCBwcm9qZWN0aW9uQSA9IHByb2plY3RPbkF4aXModmVydGljZXNBLCBheGlzKTtcXG4gICAgY29uc3QgcHJvamVjdGlvbkIgPSBwcm9qZWN0T25BeGlzKHZlcnRpY2VzQiwgYXhpcyk7XFxuICAgIGlmICghc2VnbWVudHNPdmVybGFwcyhwcm9qZWN0aW9uQSwgcHJvamVjdGlvbkIpKSB7XFxuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGb3VuZCBhIHNlcGFyYXRpbmcgYXhpcywgbm8gY29sbGlzaW9uXFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiB0cnVlOyAvLyBObyBzZXBhcmF0aW5nIGF4aXMgZm91bmQsIHJlY3RhbmdsZXMgaW50ZXJzZWN0XFxufVxcblxcbmZ1bmN0aW9uIGNoZWNrUmVjdGFuZ2xlUG9seWxpbmVJbnRlcnNlY3Rpb24ocmVjdCwgcG9seWxpbmVQb2ludHMpIHtcXG4gIGNvbnN0IHJlY3RhbmdsZVBvaW50cyA9IGdldE9CQlZlcnRpY2VzKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCwgcmVjdC5hbmdsZSlcXG5cXG4gIC8vIFRyYW5zZm9ybSByZWN0YW5nbGUgcG9pbnRzIGludG8gYXJyYXkgb2YgbGluZXNcXG4gIGNvbnN0IHJlY3RhbmdsZUxpbmVzID0gW107XFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY3RhbmdsZVBvaW50cy5sZW5ndGg7IGkrKykge1xcbiAgICByZWN0YW5nbGVMaW5lcy5wdXNoKFtcXG4gICAgICByZWN0YW5nbGVQb2ludHNbaV0sXFxuICAgICAgcmVjdGFuZ2xlUG9pbnRzWyhpICsgMSkgJSByZWN0YW5nbGVQb2ludHMubGVuZ3RoXVxcbiAgICBdKTtcXG4gIH1cXG5cXG4gIC8vIENoZWNrIGVhY2ggcG9seWxpbmUgc2VnbWVudCBmb3IgaW50ZXJzZWN0aW9uIHdpdGggZWFjaCByZWN0YW5nbGUgbGluZVxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2x5bGluZVBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcXG4gICAgY29uc3QgcG9seWxpbmVTZWdtZW50ID0gW1xcbiAgICAgIHBvbHlsaW5lUG9pbnRzW2ldLFxcbiAgICAgIHBvbHlsaW5lUG9pbnRzW2kgKyAxXVxcbiAgICBdO1xcblxcbiAgICBmb3IgKGNvbnN0IHJlY3RMaW5lIG9mIHJlY3RhbmdsZUxpbmVzKSB7XFxuICAgICAgaWYgKGludGVyc2VjdFNlZ21lbnQocmVjdExpbmVbMF0sIHJlY3RMaW5lWzFdLCBwb2x5bGluZVNlZ21lbnRbMF0sIHBvbHlsaW5lU2VnbWVudFsxXSkpIHtcXG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3VuZCBhbiBpbnRlcnNlY3Rpb25cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIE5vIGludGVyc2VjdGlvbnMgZm91bmRcXG4gIHJldHVybiBmYWxzZTtcXG59XFxuXFxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVjdCBpbnRlcnNlY3Rpb24gYmV0d2VlbiB0d28gbGluZSBzZWdtZW50c1xcbmZ1bmN0aW9uIGludGVyc2VjdFNlZ21lbnQocDAsIHAxLCBwMiwgcDMpIHtcXG4gIGxldCBzMV94LCBzMV95LCBzMl94LCBzMl95O1xcbiAgczFfeCA9IHAxLnggLSBwMC54OyBzMV95ID0gcDEueSAtIHAwLnk7XFxuICBzMl94ID0gcDMueCAtIHAyLng7IHMyX3kgPSBwMy55IC0gcDIueTtcXG5cXG4gIGxldCBzLCB0O1xcbiAgcyA9ICgtczFfeSAqIChwMC54IC0gcDIueCkgKyBzMV94ICogKHAwLnkgLSBwMi55KSkgLyAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xcbiAgdCA9ICggczJfeCAqIChwMC55IC0gcDIueSkgLSBzMl95ICogKHAwLnggLSBwMi54KSkgLyAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xcblxcbiAgLy8gQ29sbGlzaW9uIGRldGVjdGVkXFxuICBpZiAocyA+PSAwICYmIHMgPD0gMSAmJiB0ID49IDAgJiYgdCA8PSAxKSB7XFxuICAgICAgLy8gSW50ZXJzZWN0aW9uIHBvaW50IGlzIHAwICsgdCAqIHMxXFxuICAgICAgcmV0dXJuIHRydWU7XFxuICB9XFxuXFxuICByZXR1cm4gZmFsc2U7IC8vIE5vIGNvbGxpc2lvblxcbn1cXG5cIiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///585\n')},642:module=>{eval('/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== "undefined")\n\t\t&& (console.error || console.log)("[Script Loader]", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== "undefined" && typeof addEventListener === "undefined";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== "undefined" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== "undefined") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog("EvalError: No eval function available");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoLy4vbm9kZV9tb2R1bGVzL3NjcmlwdC1sb2FkZXIvYWRkU2NyaXB0LmpzP2YyYjUiXSwic291cmNlc0NvbnRlbnQiOlsiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oc3JjKSB7XG5cdGZ1bmN0aW9uIGxvZyhlcnJvcikge1xuXHRcdCh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIilcblx0XHQmJiAoY29uc29sZS5lcnJvciB8fCBjb25zb2xlLmxvZykoXCJbU2NyaXB0IExvYWRlcl1cIiwgZXJyb3IpO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIElFID08IDhcblx0ZnVuY3Rpb24gaXNJRSgpIHtcblx0XHRyZXR1cm4gdHlwZW9mIGF0dGFjaEV2ZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBhZGRFdmVudExpc3RlbmVyID09PSBcInVuZGVmaW5lZFwiO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRpZiAodHlwZW9mIGV4ZWNTY3JpcHQgIT09IFwidW5kZWZpbmVkXCIgJiYgaXNJRSgpKSB7XG5cdFx0XHRleGVjU2NyaXB0KHNyYyk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZXZhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdFx0ZXZhbC5jYWxsKG51bGwsIHNyYyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZyhcIkV2YWxFcnJvcjogTm8gZXZhbCBmdW5jdGlvbiBhdmFpbGFibGVcIik7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGxvZyhlcnJvcik7XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///642\n')},172:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("__webpack_require__(642)(__webpack_require__(585))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsR0FBNkUsRUFBRSxtQkFBTyxDQUFDLEdBQW9IIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZGFzaC8uL2pzL1V0aWxzLmpzPzdiNWYiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZShcIiEhL1VzZXJzL2xuZHN0b2wvRGV2L2Rhc2gvc2ltdWxhdG9yL25vZGVfbW9kdWxlcy9zY3JpcHQtbG9hZGVyL2FkZFNjcmlwdC5qc1wiKShyZXF1aXJlKFwiISEvVXNlcnMvbG5kc3RvbC9EZXYvZGFzaC9zaW11bGF0b3Ivbm9kZV9tb2R1bGVzL3Jhdy1sb2FkZXIvaW5kZXguanMhL1VzZXJzL2xuZHN0b2wvRGV2L2Rhc2gvc2ltdWxhdG9yL2pzL1V0aWxzLmpzXCIpKSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///172\n")}},__webpack_module_cache__={};function __webpack_require__(A){var Q=__webpack_module_cache__[A];if(void 0!==Q)return Q.exports;var B=__webpack_module_cache__[A]={exports:{}};return __webpack_modules__[A](B,B.exports,__webpack_require__),B.exports}var __webpack_exports__=__webpack_require__(236)})(); \ No newline at end of file diff --git a/seminar06-planning/simulator/dist/PathPlannerWorker.js b/seminar06-planning/simulator/dist/PathPlannerWorker.js new file mode 100644 index 0000000..df46c54 --- /dev/null +++ b/seminar06-planning/simulator/dist/PathPlannerWorker.js @@ -0,0 +1 @@ +function dash_initPathPlannerWorker(){(()=>{var __webpack_modules__={585:module=>{eval('module.exports = "Math.clamp = (number, min, max) => Math.max(min, Math.min(number, max));\\n\\nMath.wrapAngle = (angle) => {\\n angle = angle % (Math.PI * 2);\\n if (angle <= -Math.PI) return angle + Math.PI * 2;\\n else if (angle > Math.PI) return angle - Math.PI * 2;\\n else return angle;\\n}\\n\\nTHREE.Vector2.fromAngle = (angle) => new THREE.Vector2(Math.cos(angle), Math.sin(angle));\\n\\nTHREE.Curve.prototype.getCurvatureAt = function(u) {\\n let t2 = this.getUtoTmapping(u);\\n\\n const delta = 0.0001;\\n let t1 = t2 - delta;\\n let t3 = t2 + delta;\\n\\n if (t1 < 0) {\\n t1 = 0;\\n t2 = delta;\\n t3 = 2 * delta;\\n }\\n\\n if (t3 > 1) {\\n t3 = 1;\\n t2 = 1 - delta;\\n t1 = 1 - 2 * delta;\\n }\\n\\n const p1 = this.getPoint(t1);\\n const p2 = this.getPoint(t2);\\n const p3 = this.getPoint(t3);\\n\\n return (Math.atan2(p3.y - p2.y, p3.x - p2.x) - Math.atan2(p2.y - p1.y, p2.x - p1.x)) / p2.distanceTo(p1);\\n};\\n\\n\\nfunction getOBBVertices(cx, cy, width, height, angle) {\\n const hw = width / 2; // half width\\n const hh = height / 2; // half height\\n const cos = Math.cos(angle);\\n const sin = Math.sin(angle);\\n\\n return [\\n // Top-left\\n { x: cx - hw * cos + hh * sin, y: cy - hw * sin - hh * cos },\\n // Top-right\\n { x: cx + hw * cos + hh * sin, y: cy + hw * sin - hh * cos },\\n // Bottom-right\\n { x: cx + hw * cos - hh * sin, y: cy + hw * sin + hh * cos },\\n // Bottom-left\\n { x: cx - hw * cos - hh * sin, y: cy - hw * sin + hh * cos }\\n ];\\n}\\n\\nfunction getOOBBAxes(vertices) {\\n const axes = [];\\n for (let i = 0; i < vertices.length; i++) {\\n const p1 = vertices[i];\\n const p2 = vertices[(i + 1) % vertices.length]; // Next vertex\\n const edge = { x: p1.x - p2.x, y: p1.y - p2.y }; // Get edge vector\\n const normal = { x: -edge.y, y: edge.x }; // Get normal (perpendicular) vector\\n const length = Math.sqrt(normal.x * normal.x + normal.y * normal.y);\\n axes.push({ x: normal.x / length, y: normal.y / length }); // Normalize vector\\n }\\n return axes;\\n}\\n\\nfunction projectOnAxis(vertices, axis) {\\n let min = Infinity;\\n let max = -Infinity;\\n for (const vertex of vertices) {\\n let projection = vertex.x * axis.x + vertex.y * axis.y;\\n min = Math.min(min, projection);\\n max = Math.max(max, projection);\\n }\\n return { min, max };\\n}\\n\\nfunction segmentsOverlaps(projection1, projection2) {\\n return projection1.max >= projection2.min && projection2.max >= projection1.min;\\n}\\n\\nfunction areRectanglesColliding(rect1, rect2) {\\n const verticesA = getOBBVertices(rect1.x, rect1.y, rect1.width, rect1.height, rect1.angle);\\n const verticesB = getOBBVertices(rect2.x, rect2.y, rect2.width, rect2.height, rect2.angle);\\n\\n const axesA = getOOBBAxes(verticesA);\\n const axesB = getOOBBAxes(verticesB);\\n const axes = axesA.concat(axesB);\\n\\n for (const axis of axes) {\\n const projectionA = projectOnAxis(verticesA, axis);\\n const projectionB = projectOnAxis(verticesB, axis);\\n if (!segmentsOverlaps(projectionA, projectionB)) {\\n return false; // Found a separating axis, no collision\\n }\\n }\\n\\n return true; // No separating axis found, rectangles intersect\\n}\\n\\nfunction checkRectanglePolylineIntersection(rect, polylinePoints) {\\n const rectanglePoints = getOBBVertices(rect.x, rect.y, rect.width, rect.height, rect.angle)\\n\\n // Transform rectangle points into array of lines\\n const rectangleLines = [];\\n for (let i = 0; i < rectanglePoints.length; i++) {\\n rectangleLines.push([\\n rectanglePoints[i],\\n rectanglePoints[(i + 1) % rectanglePoints.length]\\n ]);\\n }\\n\\n // Check each polyline segment for intersection with each rectangle line\\n for (let i = 0; i < polylinePoints.length - 1; i++) {\\n const polylineSegment = [\\n polylinePoints[i],\\n polylinePoints[i + 1]\\n ];\\n\\n for (const rectLine of rectangleLines) {\\n if (intersectSegment(rectLine[0], rectLine[1], polylineSegment[0], polylineSegment[1])) {\\n return true; // Found an intersection\\n }\\n }\\n }\\n\\n // No intersections found\\n return false;\\n}\\n\\n// Helper function to detect intersection between two line segments\\nfunction intersectSegment(p0, p1, p2, p3) {\\n let s1_x, s1_y, s2_x, s2_y;\\n s1_x = p1.x - p0.x; s1_y = p1.y - p0.y;\\n s2_x = p3.x - p2.x; s2_y = p3.y - p2.y;\\n\\n let s, t;\\n s = (-s1_y * (p0.x - p2.x) + s1_x * (p0.y - p2.y)) / (-s2_x * s1_y + s1_x * s2_y);\\n t = ( s2_x * (p0.y - p2.y) - s2_y * (p0.x - p2.x)) / (-s2_x * s1_y + s1_x * s2_y);\\n\\n // Collision detected\\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\\n // Intersection point is p0 + t * s1\\n return true;\\n }\\n\\n return false; // No collision\\n}\\n"//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTg1LmpzIiwibWFwcGluZ3MiOiJBQUFBLDBGQUEwRixpQ0FBaUMsa0NBQWtDLHNEQUFzRCx5REFBeUQsc0JBQXNCLEdBQUcsNkZBQTZGLHdEQUF3RCxvQ0FBb0MsMkJBQTJCLHdCQUF3Qix3QkFBd0IsbUJBQW1CLGFBQWEsaUJBQWlCLHFCQUFxQixLQUFLLG1CQUFtQixhQUFhLHFCQUFxQix5QkFBeUIsS0FBSyxtQ0FBbUMsaUNBQWlDLGlDQUFpQywrR0FBK0csSUFBSSw2REFBNkQsMEJBQTBCLHdDQUF3Qyw4Q0FBOEMsZ0NBQWdDLHVDQUF1QywwREFBMEQsMkJBQTJCLDBEQUEwRCw4QkFBOEIsMERBQTBELDZCQUE2QiwwREFBMEQsTUFBTSxHQUFHLG9DQUFvQyxvQkFBb0Isb0JBQW9CLHFCQUFxQixNQUFNLDZCQUE2QixzREFBc0QsbUNBQW1DLGtDQUFrQyx5Q0FBeUMseUJBQXlCLDhHQUE4RyxrQkFBa0IsNENBQTRDLEdBQUcsd0JBQXdCLGdCQUFnQixHQUFHLDRDQUE0Qyx1QkFBdUIsd0JBQXdCLG9DQUFvQyw2REFBNkQsc0NBQXNDLHNDQUFzQyxLQUFLLGFBQWEsV0FBVyxHQUFHLHlEQUF5RCxvRkFBb0YsR0FBRyxtREFBbUQsK0ZBQStGLCtGQUErRiwyQ0FBMkMseUNBQXlDLHFDQUFxQyxnQ0FBZ0MseURBQXlELHlEQUF5RCx3REFBd0Qsc0JBQXNCLCtDQUErQyxLQUFLLG1CQUFtQixvREFBb0QsdUVBQXVFLG9MQUFvTCxvQkFBb0IsNEJBQTRCLE1BQU0sd0hBQXdILEtBQUssa0dBQWtHLCtCQUErQixNQUFNLDhGQUE4RixnREFBZ0QsaUdBQWlHLHVCQUF1QixpQ0FBaUMsT0FBTyxLQUFLLGdEQUFnRCxHQUFHLG9IQUFvSCwrQkFBK0Isd0JBQXdCLG1CQUFtQix3QkFBd0IsbUJBQW1CLGVBQWUsc0ZBQXNGLHNGQUFzRiwwRUFBMEUsZ0VBQWdFLEtBQUssb0JBQW9CLGtCQUFrQiIsInNvdXJjZXMiOlsid2VicGFjazovL2Rhc2gvLi9qcy9VdGlscy5qcz8xMjYyIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCJNYXRoLmNsYW1wID0gKG51bWJlciwgbWluLCBtYXgpID0+IE1hdGgubWF4KG1pbiwgTWF0aC5taW4obnVtYmVyLCBtYXgpKTtcXG5cXG5NYXRoLndyYXBBbmdsZSA9IChhbmdsZSkgPT4ge1xcbiAgYW5nbGUgPSBhbmdsZSAlIChNYXRoLlBJICogMik7XFxuICBpZiAoYW5nbGUgPD0gLU1hdGguUEkpIHJldHVybiBhbmdsZSArIE1hdGguUEkgKiAyO1xcbiAgZWxzZSBpZiAoYW5nbGUgPiBNYXRoLlBJKSByZXR1cm4gYW5nbGUgLSBNYXRoLlBJICogMjtcXG4gIGVsc2UgcmV0dXJuIGFuZ2xlO1xcbn1cXG5cXG5USFJFRS5WZWN0b3IyLmZyb21BbmdsZSA9IChhbmdsZSkgPT4gbmV3IFRIUkVFLlZlY3RvcjIoTWF0aC5jb3MoYW5nbGUpLCBNYXRoLnNpbihhbmdsZSkpO1xcblxcblRIUkVFLkN1cnZlLnByb3RvdHlwZS5nZXRDdXJ2YXR1cmVBdCA9IGZ1bmN0aW9uKHUpIHtcXG4gIGxldCB0MiA9IHRoaXMuZ2V0VXRvVG1hcHBpbmcodSk7XFxuXFxuICBjb25zdCBkZWx0YSA9IDAuMDAwMTtcXG4gIGxldCB0MSA9IHQyIC0gZGVsdGE7XFxuICBsZXQgdDMgPSB0MiArIGRlbHRhO1xcblxcbiAgaWYgKHQxIDwgMCkge1xcbiAgICB0MSA9IDA7XFxuICAgIHQyID0gZGVsdGE7XFxuICAgIHQzID0gMiAqIGRlbHRhO1xcbiAgfVxcblxcbiAgaWYgKHQzID4gMSkge1xcbiAgICB0MyA9IDE7XFxuICAgIHQyID0gMSAtIGRlbHRhO1xcbiAgICB0MSA9IDEgLSAyICogZGVsdGE7XFxuICB9XFxuXFxuICBjb25zdCBwMSA9IHRoaXMuZ2V0UG9pbnQodDEpO1xcbiAgY29uc3QgcDIgPSB0aGlzLmdldFBvaW50KHQyKTtcXG4gIGNvbnN0IHAzID0gdGhpcy5nZXRQb2ludCh0Myk7XFxuXFxuICByZXR1cm4gKE1hdGguYXRhbjIocDMueSAtIHAyLnksIHAzLnggLSBwMi54KSAtIE1hdGguYXRhbjIocDIueSAtIHAxLnksIHAyLnggLSBwMS54KSkgLyBwMi5kaXN0YW5jZVRvKHAxKTtcXG59O1xcblxcblxcbmZ1bmN0aW9uIGdldE9CQlZlcnRpY2VzKGN4LCBjeSwgd2lkdGgsIGhlaWdodCwgYW5nbGUpIHtcXG4gIGNvbnN0IGh3ID0gd2lkdGggLyAyOyAvLyBoYWxmIHdpZHRoXFxuICBjb25zdCBoaCA9IGhlaWdodCAvIDI7IC8vIGhhbGYgaGVpZ2h0XFxuICBjb25zdCBjb3MgPSBNYXRoLmNvcyhhbmdsZSk7XFxuICBjb25zdCBzaW4gPSBNYXRoLnNpbihhbmdsZSk7XFxuXFxuICByZXR1cm4gW1xcbiAgICAvLyBUb3AtbGVmdFxcbiAgICB7IHg6IGN4IC0gaHcgKiBjb3MgKyBoaCAqIHNpbiwgeTogY3kgLSBodyAqIHNpbiAtIGhoICogY29zIH0sXFxuICAgIC8vIFRvcC1yaWdodFxcbiAgICB7IHg6IGN4ICsgaHcgKiBjb3MgKyBoaCAqIHNpbiwgeTogY3kgKyBodyAqIHNpbiAtIGhoICogY29zIH0sXFxuICAgIC8vIEJvdHRvbS1yaWdodFxcbiAgICB7IHg6IGN4ICsgaHcgKiBjb3MgLSBoaCAqIHNpbiwgeTogY3kgKyBodyAqIHNpbiArIGhoICogY29zIH0sXFxuICAgIC8vIEJvdHRvbS1sZWZ0XFxuICAgIHsgeDogY3ggLSBodyAqIGNvcyAtIGhoICogc2luLCB5OiBjeSAtIGh3ICogc2luICsgaGggKiBjb3MgfVxcbiAgXTtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0T09CQkF4ZXModmVydGljZXMpIHtcXG4gIGNvbnN0IGF4ZXMgPSBbXTtcXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGljZXMubGVuZ3RoOyBpKyspIHtcXG4gICAgY29uc3QgcDEgPSB2ZXJ0aWNlc1tpXTtcXG4gICAgY29uc3QgcDIgPSB2ZXJ0aWNlc1soaSArIDEpICUgdmVydGljZXMubGVuZ3RoXTsgLy8gTmV4dCB2ZXJ0ZXhcXG4gICAgY29uc3QgZWRnZSA9IHsgeDogcDEueCAtIHAyLngsIHk6IHAxLnkgLSBwMi55IH07IC8vIEdldCBlZGdlIHZlY3RvclxcbiAgICBjb25zdCBub3JtYWwgPSB7IHg6IC1lZGdlLnksIHk6IGVkZ2UueCB9OyAvLyBHZXQgbm9ybWFsIChwZXJwZW5kaWN1bGFyKSB2ZWN0b3JcXG4gICAgY29uc3QgbGVuZ3RoID0gTWF0aC5zcXJ0KG5vcm1hbC54ICogbm9ybWFsLnggKyBub3JtYWwueSAqIG5vcm1hbC55KTtcXG4gICAgYXhlcy5wdXNoKHsgeDogbm9ybWFsLnggLyBsZW5ndGgsIHk6IG5vcm1hbC55IC8gbGVuZ3RoIH0pOyAvLyBOb3JtYWxpemUgdmVjdG9yXFxuICB9XFxuICByZXR1cm4gYXhlcztcXG59XFxuXFxuZnVuY3Rpb24gcHJvamVjdE9uQXhpcyh2ZXJ0aWNlcywgYXhpcykge1xcbiAgbGV0IG1pbiA9IEluZmluaXR5O1xcbiAgbGV0IG1heCA9IC1JbmZpbml0eTtcXG4gIGZvciAoY29uc3QgdmVydGV4IG9mIHZlcnRpY2VzKSB7XFxuICAgIGxldCBwcm9qZWN0aW9uID0gdmVydGV4LnggKiBheGlzLnggKyB2ZXJ0ZXgueSAqIGF4aXMueTtcXG4gICAgbWluID0gTWF0aC5taW4obWluLCBwcm9qZWN0aW9uKTtcXG4gICAgbWF4ID0gTWF0aC5tYXgobWF4LCBwcm9qZWN0aW9uKTtcXG4gIH1cXG4gIHJldHVybiB7IG1pbiwgbWF4IH07XFxufVxcblxcbmZ1bmN0aW9uIHNlZ21lbnRzT3ZlcmxhcHMocHJvamVjdGlvbjEsIHByb2plY3Rpb24yKSB7XFxuICByZXR1cm4gcHJvamVjdGlvbjEubWF4ID49IHByb2plY3Rpb24yLm1pbiAmJiBwcm9qZWN0aW9uMi5tYXggPj0gcHJvamVjdGlvbjEubWluO1xcbn1cXG5cXG5mdW5jdGlvbiBhcmVSZWN0YW5nbGVzQ29sbGlkaW5nKHJlY3QxLCByZWN0Mikge1xcbiAgY29uc3QgdmVydGljZXNBID0gZ2V0T0JCVmVydGljZXMocmVjdDEueCwgcmVjdDEueSwgcmVjdDEud2lkdGgsIHJlY3QxLmhlaWdodCwgcmVjdDEuYW5nbGUpO1xcbiAgY29uc3QgdmVydGljZXNCID0gZ2V0T0JCVmVydGljZXMocmVjdDIueCwgcmVjdDIueSwgcmVjdDIud2lkdGgsIHJlY3QyLmhlaWdodCwgcmVjdDIuYW5nbGUpO1xcblxcbiAgY29uc3QgYXhlc0EgPSBnZXRPT0JCQXhlcyh2ZXJ0aWNlc0EpO1xcbiAgY29uc3QgYXhlc0IgPSBnZXRPT0JCQXhlcyh2ZXJ0aWNlc0IpO1xcbiAgY29uc3QgYXhlcyA9IGF4ZXNBLmNvbmNhdChheGVzQik7XFxuXFxuICBmb3IgKGNvbnN0IGF4aXMgb2YgYXhlcykge1xcbiAgICBjb25zdCBwcm9qZWN0aW9uQSA9IHByb2plY3RPbkF4aXModmVydGljZXNBLCBheGlzKTtcXG4gICAgY29uc3QgcHJvamVjdGlvbkIgPSBwcm9qZWN0T25BeGlzKHZlcnRpY2VzQiwgYXhpcyk7XFxuICAgIGlmICghc2VnbWVudHNPdmVybGFwcyhwcm9qZWN0aW9uQSwgcHJvamVjdGlvbkIpKSB7XFxuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGb3VuZCBhIHNlcGFyYXRpbmcgYXhpcywgbm8gY29sbGlzaW9uXFxuICAgIH1cXG4gIH1cXG5cXG4gIHJldHVybiB0cnVlOyAvLyBObyBzZXBhcmF0aW5nIGF4aXMgZm91bmQsIHJlY3RhbmdsZXMgaW50ZXJzZWN0XFxufVxcblxcbmZ1bmN0aW9uIGNoZWNrUmVjdGFuZ2xlUG9seWxpbmVJbnRlcnNlY3Rpb24ocmVjdCwgcG9seWxpbmVQb2ludHMpIHtcXG4gIGNvbnN0IHJlY3RhbmdsZVBvaW50cyA9IGdldE9CQlZlcnRpY2VzKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCwgcmVjdC5hbmdsZSlcXG5cXG4gIC8vIFRyYW5zZm9ybSByZWN0YW5nbGUgcG9pbnRzIGludG8gYXJyYXkgb2YgbGluZXNcXG4gIGNvbnN0IHJlY3RhbmdsZUxpbmVzID0gW107XFxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY3RhbmdsZVBvaW50cy5sZW5ndGg7IGkrKykge1xcbiAgICByZWN0YW5nbGVMaW5lcy5wdXNoKFtcXG4gICAgICByZWN0YW5nbGVQb2ludHNbaV0sXFxuICAgICAgcmVjdGFuZ2xlUG9pbnRzWyhpICsgMSkgJSByZWN0YW5nbGVQb2ludHMubGVuZ3RoXVxcbiAgICBdKTtcXG4gIH1cXG5cXG4gIC8vIENoZWNrIGVhY2ggcG9seWxpbmUgc2VnbWVudCBmb3IgaW50ZXJzZWN0aW9uIHdpdGggZWFjaCByZWN0YW5nbGUgbGluZVxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2x5bGluZVBvaW50cy5sZW5ndGggLSAxOyBpKyspIHtcXG4gICAgY29uc3QgcG9seWxpbmVTZWdtZW50ID0gW1xcbiAgICAgIHBvbHlsaW5lUG9pbnRzW2ldLFxcbiAgICAgIHBvbHlsaW5lUG9pbnRzW2kgKyAxXVxcbiAgICBdO1xcblxcbiAgICBmb3IgKGNvbnN0IHJlY3RMaW5lIG9mIHJlY3RhbmdsZUxpbmVzKSB7XFxuICAgICAgaWYgKGludGVyc2VjdFNlZ21lbnQocmVjdExpbmVbMF0sIHJlY3RMaW5lWzFdLCBwb2x5bGluZVNlZ21lbnRbMF0sIHBvbHlsaW5lU2VnbWVudFsxXSkpIHtcXG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3VuZCBhbiBpbnRlcnNlY3Rpb25cXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC8vIE5vIGludGVyc2VjdGlvbnMgZm91bmRcXG4gIHJldHVybiBmYWxzZTtcXG59XFxuXFxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGRldGVjdCBpbnRlcnNlY3Rpb24gYmV0d2VlbiB0d28gbGluZSBzZWdtZW50c1xcbmZ1bmN0aW9uIGludGVyc2VjdFNlZ21lbnQocDAsIHAxLCBwMiwgcDMpIHtcXG4gIGxldCBzMV94LCBzMV95LCBzMl94LCBzMl95O1xcbiAgczFfeCA9IHAxLnggLSBwMC54OyBzMV95ID0gcDEueSAtIHAwLnk7XFxuICBzMl94ID0gcDMueCAtIHAyLng7IHMyX3kgPSBwMy55IC0gcDIueTtcXG5cXG4gIGxldCBzLCB0O1xcbiAgcyA9ICgtczFfeSAqIChwMC54IC0gcDIueCkgKyBzMV94ICogKHAwLnkgLSBwMi55KSkgLyAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xcbiAgdCA9ICggczJfeCAqIChwMC55IC0gcDIueSkgLSBzMl95ICogKHAwLnggLSBwMi54KSkgLyAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xcblxcbiAgLy8gQ29sbGlzaW9uIGRldGVjdGVkXFxuICBpZiAocyA+PSAwICYmIHMgPD0gMSAmJiB0ID49IDAgJiYgdCA8PSAxKSB7XFxuICAgICAgLy8gSW50ZXJzZWN0aW9uIHBvaW50IGlzIHAwICsgdCAqIHMxXFxuICAgICAgcmV0dXJuIHRydWU7XFxuICB9XFxuXFxuICByZXR1cm4gZmFsc2U7IC8vIE5vIGNvbGxpc2lvblxcbn1cXG5cIiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///585\n')},621:module=>{eval("module.exports = \"(function (global, factory) {\\n\\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\\n\\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\\n\\t(factory((global.THREE = {})));\\n}(this, (function (exports) { 'use strict';\\n\\n\\t// Polyfills\\n\\n\\tif ( Number.EPSILON === undefined ) {\\n\\n\\t\\tNumber.EPSILON = Math.pow( 2, - 52 );\\n\\n\\t}\\n\\n\\tif ( Number.isInteger === undefined ) {\\n\\n\\t\\t// Missing in IE\\n\\t\\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\\n\\n\\t\\tNumber.isInteger = function ( value ) {\\n\\n\\t\\t\\treturn typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value;\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t//\\n\\n\\tif ( Math.sign === undefined ) {\\n\\n\\t\\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign\\n\\n\\t\\tMath.sign = function ( x ) {\\n\\n\\t\\t\\treturn ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x;\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\tif ( 'name' in Function.prototype === false ) {\\n\\n\\t\\t// Missing in IE\\n\\t\\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name\\n\\n\\t\\tObject.defineProperty( Function.prototype, 'name', {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.toString().match( /^\\\\s*function\\\\s*([^\\\\(\\\\s]*)/ )[ 1 ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t} );\\n\\n\\t}\\n\\n\\tif ( Object.assign === undefined ) {\\n\\n\\t\\t// Missing in IE\\n\\t\\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\\n\\n\\t\\t( function () {\\n\\n\\t\\t\\tObject.assign = function ( target ) {\\n\\n\\t\\t\\t\\tif ( target === undefined || target === null ) {\\n\\n\\t\\t\\t\\t\\tthrow new TypeError( 'Cannot convert undefined or null to object' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar output = Object( target );\\n\\n\\t\\t\\t\\tfor ( var index = 1; index < arguments.length; index ++ ) {\\n\\n\\t\\t\\t\\t\\tvar source = arguments[ index ];\\n\\n\\t\\t\\t\\t\\tif ( source !== undefined && source !== null ) {\\n\\n\\t\\t\\t\\t\\t\\tfor ( var nextKey in source ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\toutput[ nextKey ] = source[ nextKey ];\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn output;\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )();\\n\\n\\t}\\n\\n\\t/**\\n\\t * https://github.com/mrdoob/eventdispatcher.js/\\n\\t */\\n\\n\\tfunction EventDispatcher() {}\\n\\n\\tObject.assign( EventDispatcher.prototype, {\\n\\n\\t\\taddEventListener: function ( type, listener ) {\\n\\n\\t\\t\\tif ( this._listeners === undefined ) this._listeners = {};\\n\\n\\t\\t\\tvar listeners = this._listeners;\\n\\n\\t\\t\\tif ( listeners[ type ] === undefined ) {\\n\\n\\t\\t\\t\\tlisteners[ type ] = [];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\\n\\n\\t\\t\\t\\tlisteners[ type ].push( listener );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\thasEventListener: function ( type, listener ) {\\n\\n\\t\\t\\tif ( this._listeners === undefined ) return false;\\n\\n\\t\\t\\tvar listeners = this._listeners;\\n\\n\\t\\t\\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\\n\\n\\t\\t},\\n\\n\\t\\tremoveEventListener: function ( type, listener ) {\\n\\n\\t\\t\\tif ( this._listeners === undefined ) return;\\n\\n\\t\\t\\tvar listeners = this._listeners;\\n\\t\\t\\tvar listenerArray = listeners[ type ];\\n\\n\\t\\t\\tif ( listenerArray !== undefined ) {\\n\\n\\t\\t\\t\\tvar index = listenerArray.indexOf( listener );\\n\\n\\t\\t\\t\\tif ( index !== - 1 ) {\\n\\n\\t\\t\\t\\t\\tlistenerArray.splice( index, 1 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tdispatchEvent: function ( event ) {\\n\\n\\t\\t\\tif ( this._listeners === undefined ) return;\\n\\n\\t\\t\\tvar listeners = this._listeners;\\n\\t\\t\\tvar listenerArray = listeners[ event.type ];\\n\\n\\t\\t\\tif ( listenerArray !== undefined ) {\\n\\n\\t\\t\\t\\tevent.target = this;\\n\\n\\t\\t\\t\\tvar array = listenerArray.slice( 0 );\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tarray[ i ].call( this, event );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tvar REVISION = '89';\\n\\tvar MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };\\n\\tvar CullFaceNone = 0;\\n\\tvar CullFaceBack = 1;\\n\\tvar CullFaceFront = 2;\\n\\tvar CullFaceFrontBack = 3;\\n\\tvar FrontFaceDirectionCW = 0;\\n\\tvar FrontFaceDirectionCCW = 1;\\n\\tvar BasicShadowMap = 0;\\n\\tvar PCFShadowMap = 1;\\n\\tvar PCFSoftShadowMap = 2;\\n\\tvar FrontSide = 0;\\n\\tvar BackSide = 1;\\n\\tvar DoubleSide = 2;\\n\\tvar FlatShading = 1;\\n\\tvar SmoothShading = 2;\\n\\tvar NoColors = 0;\\n\\tvar FaceColors = 1;\\n\\tvar VertexColors = 2;\\n\\tvar NoBlending = 0;\\n\\tvar NormalBlending = 1;\\n\\tvar AdditiveBlending = 2;\\n\\tvar SubtractiveBlending = 3;\\n\\tvar MultiplyBlending = 4;\\n\\tvar CustomBlending = 5;\\n\\tvar AddEquation = 100;\\n\\tvar SubtractEquation = 101;\\n\\tvar ReverseSubtractEquation = 102;\\n\\tvar MinEquation = 103;\\n\\tvar MaxEquation = 104;\\n\\tvar ZeroFactor = 200;\\n\\tvar OneFactor = 201;\\n\\tvar SrcColorFactor = 202;\\n\\tvar OneMinusSrcColorFactor = 203;\\n\\tvar SrcAlphaFactor = 204;\\n\\tvar OneMinusSrcAlphaFactor = 205;\\n\\tvar DstAlphaFactor = 206;\\n\\tvar OneMinusDstAlphaFactor = 207;\\n\\tvar DstColorFactor = 208;\\n\\tvar OneMinusDstColorFactor = 209;\\n\\tvar SrcAlphaSaturateFactor = 210;\\n\\tvar NeverDepth = 0;\\n\\tvar AlwaysDepth = 1;\\n\\tvar LessDepth = 2;\\n\\tvar LessEqualDepth = 3;\\n\\tvar EqualDepth = 4;\\n\\tvar GreaterEqualDepth = 5;\\n\\tvar GreaterDepth = 6;\\n\\tvar NotEqualDepth = 7;\\n\\tvar MultiplyOperation = 0;\\n\\tvar MixOperation = 1;\\n\\tvar AddOperation = 2;\\n\\tvar NoToneMapping = 0;\\n\\tvar LinearToneMapping = 1;\\n\\tvar ReinhardToneMapping = 2;\\n\\tvar Uncharted2ToneMapping = 3;\\n\\tvar CineonToneMapping = 4;\\n\\tvar UVMapping = 300;\\n\\tvar CubeReflectionMapping = 301;\\n\\tvar CubeRefractionMapping = 302;\\n\\tvar EquirectangularReflectionMapping = 303;\\n\\tvar EquirectangularRefractionMapping = 304;\\n\\tvar SphericalReflectionMapping = 305;\\n\\tvar CubeUVReflectionMapping = 306;\\n\\tvar CubeUVRefractionMapping = 307;\\n\\tvar RepeatWrapping = 1000;\\n\\tvar ClampToEdgeWrapping = 1001;\\n\\tvar MirroredRepeatWrapping = 1002;\\n\\tvar NearestFilter = 1003;\\n\\tvar NearestMipMapNearestFilter = 1004;\\n\\tvar NearestMipMapLinearFilter = 1005;\\n\\tvar LinearFilter = 1006;\\n\\tvar LinearMipMapNearestFilter = 1007;\\n\\tvar LinearMipMapLinearFilter = 1008;\\n\\tvar UnsignedByteType = 1009;\\n\\tvar ByteType = 1010;\\n\\tvar ShortType = 1011;\\n\\tvar UnsignedShortType = 1012;\\n\\tvar IntType = 1013;\\n\\tvar UnsignedIntType = 1014;\\n\\tvar FloatType = 1015;\\n\\tvar HalfFloatType = 1016;\\n\\tvar UnsignedShort4444Type = 1017;\\n\\tvar UnsignedShort5551Type = 1018;\\n\\tvar UnsignedShort565Type = 1019;\\n\\tvar UnsignedInt248Type = 1020;\\n\\tvar AlphaFormat = 1021;\\n\\tvar RGBFormat = 1022;\\n\\tvar RGBAFormat = 1023;\\n\\tvar LuminanceFormat = 1024;\\n\\tvar LuminanceAlphaFormat = 1025;\\n\\tvar RGBEFormat = RGBAFormat;\\n\\tvar DepthFormat = 1026;\\n\\tvar DepthStencilFormat = 1027;\\n\\tvar RGB_S3TC_DXT1_Format = 2001;\\n\\tvar RGBA_S3TC_DXT1_Format = 2002;\\n\\tvar RGBA_S3TC_DXT3_Format = 2003;\\n\\tvar RGBA_S3TC_DXT5_Format = 2004;\\n\\tvar RGB_PVRTC_4BPPV1_Format = 2100;\\n\\tvar RGB_PVRTC_2BPPV1_Format = 2101;\\n\\tvar RGBA_PVRTC_4BPPV1_Format = 2102;\\n\\tvar RGBA_PVRTC_2BPPV1_Format = 2103;\\n\\tvar RGB_ETC1_Format = 2151;\\n\\tvar LoopOnce = 2200;\\n\\tvar LoopRepeat = 2201;\\n\\tvar LoopPingPong = 2202;\\n\\tvar InterpolateDiscrete = 2300;\\n\\tvar InterpolateLinear = 2301;\\n\\tvar InterpolateSmooth = 2302;\\n\\tvar ZeroCurvatureEnding = 2400;\\n\\tvar ZeroSlopeEnding = 2401;\\n\\tvar WrapAroundEnding = 2402;\\n\\tvar TrianglesDrawMode = 0;\\n\\tvar TriangleStripDrawMode = 1;\\n\\tvar TriangleFanDrawMode = 2;\\n\\tvar LinearEncoding = 3000;\\n\\tvar sRGBEncoding = 3001;\\n\\tvar GammaEncoding = 3007;\\n\\tvar RGBEEncoding = 3002;\\n\\tvar LogLuvEncoding = 3003;\\n\\tvar RGBM7Encoding = 3004;\\n\\tvar RGBM16Encoding = 3005;\\n\\tvar RGBDEncoding = 3006;\\n\\tvar BasicDepthPacking = 3200;\\n\\tvar RGBADepthPacking = 3201;\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tvar _Math = {\\n\\n\\t\\tDEG2RAD: Math.PI / 180,\\n\\t\\tRAD2DEG: 180 / Math.PI,\\n\\n\\t\\tgenerateUUID: ( function () {\\n\\n\\t\\t\\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\\n\\n\\t\\t\\tvar lut = [];\\n\\n\\t\\t\\tfor ( var i = 0; i < 256; i ++ ) {\\n\\n\\t\\t\\t\\tlut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ).toUpperCase();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn function () {\\n\\n\\t\\t\\t\\tvar d0 = Math.random() * 0xffffffff | 0;\\n\\t\\t\\t\\tvar d1 = Math.random() * 0xffffffff | 0;\\n\\t\\t\\t\\tvar d2 = Math.random() * 0xffffffff | 0;\\n\\t\\t\\t\\tvar d3 = Math.random() * 0xffffffff | 0;\\n\\t\\t\\t\\treturn lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' +\\n\\t\\t\\t\\t\\tlut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' +\\n\\t\\t\\t\\t\\tlut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] +\\n\\t\\t\\t\\t\\tlut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ];\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )(),\\n\\n\\t\\tclamp: function ( value, min, max ) {\\n\\n\\t\\t\\treturn Math.max( min, Math.min( max, value ) );\\n\\n\\t\\t},\\n\\n\\t\\t// compute euclidian modulo of m % n\\n\\t\\t// https://en.wikipedia.org/wiki/Modulo_operation\\n\\n\\t\\teuclideanModulo: function ( n, m ) {\\n\\n\\t\\t\\treturn ( ( n % m ) + m ) % m;\\n\\n\\t\\t},\\n\\n\\t\\t// Linear mapping from range to range \\n\\n\\t\\tmapLinear: function ( x, a1, a2, b1, b2 ) {\\n\\n\\t\\t\\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\\n\\n\\t\\t},\\n\\n\\t\\t// https://en.wikipedia.org/wiki/Linear_interpolation\\n\\n\\t\\tlerp: function ( x, y, t ) {\\n\\n\\t\\t\\treturn ( 1 - t ) * x + t * y;\\n\\n\\t\\t},\\n\\n\\t\\t// http://en.wikipedia.org/wiki/Smoothstep\\n\\n\\t\\tsmoothstep: function ( x, min, max ) {\\n\\n\\t\\t\\tif ( x <= min ) return 0;\\n\\t\\t\\tif ( x >= max ) return 1;\\n\\n\\t\\t\\tx = ( x - min ) / ( max - min );\\n\\n\\t\\t\\treturn x * x * ( 3 - 2 * x );\\n\\n\\t\\t},\\n\\n\\t\\tsmootherstep: function ( x, min, max ) {\\n\\n\\t\\t\\tif ( x <= min ) return 0;\\n\\t\\t\\tif ( x >= max ) return 1;\\n\\n\\t\\t\\tx = ( x - min ) / ( max - min );\\n\\n\\t\\t\\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\\n\\n\\t\\t},\\n\\n\\t\\t// Random integer from interval\\n\\n\\t\\trandInt: function ( low, high ) {\\n\\n\\t\\t\\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\\n\\n\\t\\t},\\n\\n\\t\\t// Random float from interval\\n\\n\\t\\trandFloat: function ( low, high ) {\\n\\n\\t\\t\\treturn low + Math.random() * ( high - low );\\n\\n\\t\\t},\\n\\n\\t\\t// Random float from <-range/2, range/2> interval\\n\\n\\t\\trandFloatSpread: function ( range ) {\\n\\n\\t\\t\\treturn range * ( 0.5 - Math.random() );\\n\\n\\t\\t},\\n\\n\\t\\tdegToRad: function ( degrees ) {\\n\\n\\t\\t\\treturn degrees * _Math.DEG2RAD;\\n\\n\\t\\t},\\n\\n\\t\\tradToDeg: function ( radians ) {\\n\\n\\t\\t\\treturn radians * _Math.RAD2DEG;\\n\\n\\t\\t},\\n\\n\\t\\tisPowerOfTwo: function ( value ) {\\n\\n\\t\\t\\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\\n\\n\\t\\t},\\n\\n\\t\\tceilPowerOfTwo: function ( value ) {\\n\\n\\t\\t\\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\\n\\n\\t\\t},\\n\\n\\t\\tfloorPowerOfTwo: function ( value ) {\\n\\n\\t\\t\\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author philogb / http://blog.thejit.org/\\n\\t * @author egraether / http://egraether.com/\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t */\\n\\n\\tfunction Vector2( x, y ) {\\n\\n\\t\\tthis.x = x || 0;\\n\\t\\tthis.y = y || 0;\\n\\n\\t}\\n\\n\\tObject.defineProperties( Vector2.prototype, {\\n\\n\\t\\t\\\"width\\\": {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.x;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis.x = value;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t\\\"height\\\": {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.y;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis.y = value;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Vector2.prototype, {\\n\\n\\t\\tisVector2: true,\\n\\n\\t\\tset: function ( x, y ) {\\n\\n\\t\\t\\tthis.x = x;\\n\\t\\t\\tthis.y = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.x = scalar;\\n\\t\\t\\tthis.y = scalar;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetX: function ( x ) {\\n\\n\\t\\t\\tthis.x = x;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetY: function ( y ) {\\n\\n\\t\\t\\tthis.y = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetComponent: function ( index, value ) {\\n\\n\\t\\t\\tswitch ( index ) {\\n\\n\\t\\t\\t\\tcase 0: this.x = value; break;\\n\\t\\t\\t\\tcase 1: this.y = value; break;\\n\\t\\t\\t\\tdefault: throw new Error( 'index is out of range: ' + index );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetComponent: function ( index ) {\\n\\n\\t\\t\\tswitch ( index ) {\\n\\n\\t\\t\\t\\tcase 0: return this.x;\\n\\t\\t\\t\\tcase 1: return this.y;\\n\\t\\t\\t\\tdefault: throw new Error( 'index is out of range: ' + index );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.x, this.y );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( v ) {\\n\\n\\t\\t\\tthis.x = v.x;\\n\\t\\t\\tthis.y = v.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tadd: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.addVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x += v.x;\\n\\t\\t\\tthis.y += v.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddScalar: function ( s ) {\\n\\n\\t\\t\\tthis.x += s;\\n\\t\\t\\tthis.y += s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddVectors: function ( a, b ) {\\n\\n\\t\\t\\tthis.x = a.x + b.x;\\n\\t\\t\\tthis.y = a.y + b.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddScaledVector: function ( v, s ) {\\n\\n\\t\\t\\tthis.x += v.x * s;\\n\\t\\t\\tthis.y += v.y * s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsub: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.subVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x -= v.x;\\n\\t\\t\\tthis.y -= v.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsubScalar: function ( s ) {\\n\\n\\t\\t\\tthis.x -= s;\\n\\t\\t\\tthis.y -= s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsubVectors: function ( a, b ) {\\n\\n\\t\\t\\tthis.x = a.x - b.x;\\n\\t\\t\\tthis.y = a.y - b.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiply: function ( v ) {\\n\\n\\t\\t\\tthis.x *= v.x;\\n\\t\\t\\tthis.y *= v.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.x *= scalar;\\n\\t\\t\\tthis.y *= scalar;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdivide: function ( v ) {\\n\\n\\t\\t\\tthis.x /= v.x;\\n\\t\\t\\tthis.y /= v.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdivideScalar: function ( scalar ) {\\n\\n\\t\\t\\treturn this.multiplyScalar( 1 / scalar );\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix3: function ( m ) {\\n\\n\\t\\t\\tvar x = this.x, y = this.y;\\n\\t\\t\\tvar e = m.elements;\\n\\n\\t\\t\\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\\n\\t\\t\\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmin: function ( v ) {\\n\\n\\t\\t\\tthis.x = Math.min( this.x, v.x );\\n\\t\\t\\tthis.y = Math.min( this.y, v.y );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmax: function ( v ) {\\n\\n\\t\\t\\tthis.x = Math.max( this.x, v.x );\\n\\t\\t\\tthis.y = Math.max( this.y, v.y );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclamp: function ( min, max ) {\\n\\n\\t\\t\\t// assumes min < max, componentwise\\n\\n\\t\\t\\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\\n\\t\\t\\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclampScalar: function () {\\n\\n\\t\\t\\tvar min = new Vector2();\\n\\t\\t\\tvar max = new Vector2();\\n\\n\\t\\t\\treturn function clampScalar( minVal, maxVal ) {\\n\\n\\t\\t\\t\\tmin.set( minVal, minVal );\\n\\t\\t\\t\\tmax.set( maxVal, maxVal );\\n\\n\\t\\t\\t\\treturn this.clamp( min, max );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclampLength: function ( min, max ) {\\n\\n\\t\\t\\tvar length = this.length();\\n\\n\\t\\t\\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\\n\\n\\t\\t},\\n\\n\\t\\tfloor: function () {\\n\\n\\t\\t\\tthis.x = Math.floor( this.x );\\n\\t\\t\\tthis.y = Math.floor( this.y );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tceil: function () {\\n\\n\\t\\t\\tthis.x = Math.ceil( this.x );\\n\\t\\t\\tthis.y = Math.ceil( this.y );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tround: function () {\\n\\n\\t\\t\\tthis.x = Math.round( this.x );\\n\\t\\t\\tthis.y = Math.round( this.y );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\troundToZero: function () {\\n\\n\\t\\t\\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\\n\\t\\t\\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tnegate: function () {\\n\\n\\t\\t\\tthis.x = - this.x;\\n\\t\\t\\tthis.y = - this.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdot: function ( v ) {\\n\\n\\t\\t\\treturn this.x * v.x + this.y * v.y;\\n\\n\\t\\t},\\n\\n\\t\\tlengthSq: function () {\\n\\n\\t\\t\\treturn this.x * this.x + this.y * this.y;\\n\\n\\t\\t},\\n\\n\\t\\tlength: function () {\\n\\n\\t\\t\\treturn Math.sqrt( this.x * this.x + this.y * this.y );\\n\\n\\t\\t},\\n\\n\\t\\tmanhattanLength: function () {\\n\\n\\t\\t\\treturn Math.abs( this.x ) + Math.abs( this.y );\\n\\n\\t\\t},\\n\\n\\t\\tnormalize: function () {\\n\\n\\t\\t\\treturn this.divideScalar( this.length() || 1 );\\n\\n\\t\\t},\\n\\n\\t\\tangle: function () {\\n\\n\\t\\t\\t// computes the angle in radians with respect to the positive x-axis\\n\\n\\t\\t\\tvar angle = Math.atan2( this.y, this.x );\\n\\n\\t\\t\\tif ( angle < 0 ) angle += 2 * Math.PI;\\n\\n\\t\\t\\treturn angle;\\n\\n\\t\\t},\\n\\n\\t\\tdistanceTo: function ( v ) {\\n\\n\\t\\t\\treturn Math.sqrt( this.distanceToSquared( v ) );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToSquared: function ( v ) {\\n\\n\\t\\t\\tvar dx = this.x - v.x, dy = this.y - v.y;\\n\\t\\t\\treturn dx * dx + dy * dy;\\n\\n\\t\\t},\\n\\n\\t\\tmanhattanDistanceTo: function ( v ) {\\n\\n\\t\\t\\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\\n\\n\\t\\t},\\n\\n\\t\\tsetLength: function ( length ) {\\n\\n\\t\\t\\treturn this.normalize().multiplyScalar( length );\\n\\n\\t\\t},\\n\\n\\t\\tlerp: function ( v, alpha ) {\\n\\n\\t\\t\\tthis.x += ( v.x - this.x ) * alpha;\\n\\t\\t\\tthis.y += ( v.y - this.y ) * alpha;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tlerpVectors: function ( v1, v2, alpha ) {\\n\\n\\t\\t\\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( v ) {\\n\\n\\t\\t\\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tthis.x = array[ offset ];\\n\\t\\t\\tthis.y = array[ offset + 1 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tarray[ offset ] = this.x;\\n\\t\\t\\tarray[ offset + 1 ] = this.y;\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t},\\n\\n\\t\\tfromBufferAttribute: function ( attribute, index, offset ) {\\n\\n\\t\\t\\tif ( offset !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x = attribute.getX( index );\\n\\t\\t\\tthis.y = attribute.getY( index );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\trotateAround: function ( center, angle ) {\\n\\n\\t\\t\\tvar c = Math.cos( angle ), s = Math.sin( angle );\\n\\n\\t\\t\\tvar x = this.x - center.x;\\n\\t\\t\\tvar y = this.y - center.y;\\n\\n\\t\\t\\tthis.x = x * c - y * s + center.x;\\n\\t\\t\\tthis.y = x * s + y * c + center.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author supereggbert / http://www.paulbrunt.co.uk/\\n\\t * @author philogb / http://blog.thejit.org/\\n\\t * @author jordi_ros / http://plattsoft.com\\n\\t * @author D1plo1d / http://github.com/D1plo1d\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author timknip / http://www.floorplanner.com/\\n\\t * @author bhouston / http://clara.io\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction Matrix4() {\\n\\n\\t\\tthis.elements = [\\n\\n\\t\\t\\t1, 0, 0, 0,\\n\\t\\t\\t0, 1, 0, 0,\\n\\t\\t\\t0, 0, 1, 0,\\n\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t];\\n\\n\\t\\tif ( arguments.length > 0 ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tObject.assign( Matrix4.prototype, {\\n\\n\\t\\tisMatrix4: true,\\n\\n\\t\\tset: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\\n\\t\\t\\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\\n\\t\\t\\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\\n\\t\\t\\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tidentity: function () {\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\t1, 0, 0, 0,\\n\\t\\t\\t\\t0, 1, 0, 0,\\n\\t\\t\\t\\t0, 0, 1, 0,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new Matrix4().fromArray( this.elements );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( m ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar me = m.elements;\\n\\n\\t\\t\\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\\n\\t\\t\\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\\n\\t\\t\\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\\n\\t\\t\\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyPosition: function ( m ) {\\n\\n\\t\\t\\tvar te = this.elements, me = m.elements;\\n\\n\\t\\t\\tte[ 12 ] = me[ 12 ];\\n\\t\\t\\tte[ 13 ] = me[ 13 ];\\n\\t\\t\\tte[ 14 ] = me[ 14 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\textractBasis: function ( xAxis, yAxis, zAxis ) {\\n\\n\\t\\t\\txAxis.setFromMatrixColumn( this, 0 );\\n\\t\\t\\tyAxis.setFromMatrixColumn( this, 1 );\\n\\t\\t\\tzAxis.setFromMatrixColumn( this, 2 );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeBasis: function ( xAxis, yAxis, zAxis ) {\\n\\n\\t\\t\\tthis.set(\\n\\t\\t\\t\\txAxis.x, yAxis.x, zAxis.x, 0,\\n\\t\\t\\t\\txAxis.y, yAxis.y, zAxis.y, 0,\\n\\t\\t\\t\\txAxis.z, yAxis.z, zAxis.z, 0,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\textractRotation: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function extractRotation( m ) {\\n\\n\\t\\t\\t\\tvar te = this.elements;\\n\\t\\t\\t\\tvar me = m.elements;\\n\\n\\t\\t\\t\\tvar scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length();\\n\\t\\t\\t\\tvar scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length();\\n\\t\\t\\t\\tvar scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length();\\n\\n\\t\\t\\t\\tte[ 0 ] = me[ 0 ] * scaleX;\\n\\t\\t\\t\\tte[ 1 ] = me[ 1 ] * scaleX;\\n\\t\\t\\t\\tte[ 2 ] = me[ 2 ] * scaleX;\\n\\n\\t\\t\\t\\tte[ 4 ] = me[ 4 ] * scaleY;\\n\\t\\t\\t\\tte[ 5 ] = me[ 5 ] * scaleY;\\n\\t\\t\\t\\tte[ 6 ] = me[ 6 ] * scaleY;\\n\\n\\t\\t\\t\\tte[ 8 ] = me[ 8 ] * scaleZ;\\n\\t\\t\\t\\tte[ 9 ] = me[ 9 ] * scaleZ;\\n\\t\\t\\t\\tte[ 10 ] = me[ 10 ] * scaleZ;\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tmakeRotationFromEuler: function ( euler ) {\\n\\n\\t\\t\\tif ( ! ( euler && euler.isEuler ) ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar x = euler.x, y = euler.y, z = euler.z;\\n\\t\\t\\tvar a = Math.cos( x ), b = Math.sin( x );\\n\\t\\t\\tvar c = Math.cos( y ), d = Math.sin( y );\\n\\t\\t\\tvar e = Math.cos( z ), f = Math.sin( z );\\n\\n\\t\\t\\tif ( euler.order === 'XYZ' ) {\\n\\n\\t\\t\\t\\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\\n\\n\\t\\t\\t\\tte[ 0 ] = c * e;\\n\\t\\t\\t\\tte[ 4 ] = - c * f;\\n\\t\\t\\t\\tte[ 8 ] = d;\\n\\n\\t\\t\\t\\tte[ 1 ] = af + be * d;\\n\\t\\t\\t\\tte[ 5 ] = ae - bf * d;\\n\\t\\t\\t\\tte[ 9 ] = - b * c;\\n\\n\\t\\t\\t\\tte[ 2 ] = bf - ae * d;\\n\\t\\t\\t\\tte[ 6 ] = be + af * d;\\n\\t\\t\\t\\tte[ 10 ] = a * c;\\n\\n\\t\\t\\t} else if ( euler.order === 'YXZ' ) {\\n\\n\\t\\t\\t\\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\\n\\n\\t\\t\\t\\tte[ 0 ] = ce + df * b;\\n\\t\\t\\t\\tte[ 4 ] = de * b - cf;\\n\\t\\t\\t\\tte[ 8 ] = a * d;\\n\\n\\t\\t\\t\\tte[ 1 ] = a * f;\\n\\t\\t\\t\\tte[ 5 ] = a * e;\\n\\t\\t\\t\\tte[ 9 ] = - b;\\n\\n\\t\\t\\t\\tte[ 2 ] = cf * b - de;\\n\\t\\t\\t\\tte[ 6 ] = df + ce * b;\\n\\t\\t\\t\\tte[ 10 ] = a * c;\\n\\n\\t\\t\\t} else if ( euler.order === 'ZXY' ) {\\n\\n\\t\\t\\t\\tvar ce = c * e, cf = c * f, de = d * e, df = d * f;\\n\\n\\t\\t\\t\\tte[ 0 ] = ce - df * b;\\n\\t\\t\\t\\tte[ 4 ] = - a * f;\\n\\t\\t\\t\\tte[ 8 ] = de + cf * b;\\n\\n\\t\\t\\t\\tte[ 1 ] = cf + de * b;\\n\\t\\t\\t\\tte[ 5 ] = a * e;\\n\\t\\t\\t\\tte[ 9 ] = df - ce * b;\\n\\n\\t\\t\\t\\tte[ 2 ] = - a * d;\\n\\t\\t\\t\\tte[ 6 ] = b;\\n\\t\\t\\t\\tte[ 10 ] = a * c;\\n\\n\\t\\t\\t} else if ( euler.order === 'ZYX' ) {\\n\\n\\t\\t\\t\\tvar ae = a * e, af = a * f, be = b * e, bf = b * f;\\n\\n\\t\\t\\t\\tte[ 0 ] = c * e;\\n\\t\\t\\t\\tte[ 4 ] = be * d - af;\\n\\t\\t\\t\\tte[ 8 ] = ae * d + bf;\\n\\n\\t\\t\\t\\tte[ 1 ] = c * f;\\n\\t\\t\\t\\tte[ 5 ] = bf * d + ae;\\n\\t\\t\\t\\tte[ 9 ] = af * d - be;\\n\\n\\t\\t\\t\\tte[ 2 ] = - d;\\n\\t\\t\\t\\tte[ 6 ] = b * c;\\n\\t\\t\\t\\tte[ 10 ] = a * c;\\n\\n\\t\\t\\t} else if ( euler.order === 'YZX' ) {\\n\\n\\t\\t\\t\\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\\n\\n\\t\\t\\t\\tte[ 0 ] = c * e;\\n\\t\\t\\t\\tte[ 4 ] = bd - ac * f;\\n\\t\\t\\t\\tte[ 8 ] = bc * f + ad;\\n\\n\\t\\t\\t\\tte[ 1 ] = f;\\n\\t\\t\\t\\tte[ 5 ] = a * e;\\n\\t\\t\\t\\tte[ 9 ] = - b * e;\\n\\n\\t\\t\\t\\tte[ 2 ] = - d * e;\\n\\t\\t\\t\\tte[ 6 ] = ad * f + bc;\\n\\t\\t\\t\\tte[ 10 ] = ac - bd * f;\\n\\n\\t\\t\\t} else if ( euler.order === 'XZY' ) {\\n\\n\\t\\t\\t\\tvar ac = a * c, ad = a * d, bc = b * c, bd = b * d;\\n\\n\\t\\t\\t\\tte[ 0 ] = c * e;\\n\\t\\t\\t\\tte[ 4 ] = - f;\\n\\t\\t\\t\\tte[ 8 ] = d * e;\\n\\n\\t\\t\\t\\tte[ 1 ] = ac * f + bd;\\n\\t\\t\\t\\tte[ 5 ] = a * e;\\n\\t\\t\\t\\tte[ 9 ] = ad * f - bc;\\n\\n\\t\\t\\t\\tte[ 2 ] = bc * f - ad;\\n\\t\\t\\t\\tte[ 6 ] = b * e;\\n\\t\\t\\t\\tte[ 10 ] = bd * f + ac;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// last column\\n\\t\\t\\tte[ 3 ] = 0;\\n\\t\\t\\tte[ 7 ] = 0;\\n\\t\\t\\tte[ 11 ] = 0;\\n\\n\\t\\t\\t// bottom row\\n\\t\\t\\tte[ 12 ] = 0;\\n\\t\\t\\tte[ 13 ] = 0;\\n\\t\\t\\tte[ 14 ] = 0;\\n\\t\\t\\tte[ 15 ] = 1;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeRotationFromQuaternion: function ( q ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar x = q._x, y = q._y, z = q._z, w = q._w;\\n\\t\\t\\tvar x2 = x + x, y2 = y + y, z2 = z + z;\\n\\t\\t\\tvar xx = x * x2, xy = x * y2, xz = x * z2;\\n\\t\\t\\tvar yy = y * y2, yz = y * z2, zz = z * z2;\\n\\t\\t\\tvar wx = w * x2, wy = w * y2, wz = w * z2;\\n\\n\\t\\t\\tte[ 0 ] = 1 - ( yy + zz );\\n\\t\\t\\tte[ 4 ] = xy - wz;\\n\\t\\t\\tte[ 8 ] = xz + wy;\\n\\n\\t\\t\\tte[ 1 ] = xy + wz;\\n\\t\\t\\tte[ 5 ] = 1 - ( xx + zz );\\n\\t\\t\\tte[ 9 ] = yz - wx;\\n\\n\\t\\t\\tte[ 2 ] = xz - wy;\\n\\t\\t\\tte[ 6 ] = yz + wx;\\n\\t\\t\\tte[ 10 ] = 1 - ( xx + yy );\\n\\n\\t\\t\\t// last column\\n\\t\\t\\tte[ 3 ] = 0;\\n\\t\\t\\tte[ 7 ] = 0;\\n\\t\\t\\tte[ 11 ] = 0;\\n\\n\\t\\t\\t// bottom row\\n\\t\\t\\tte[ 12 ] = 0;\\n\\t\\t\\tte[ 13 ] = 0;\\n\\t\\t\\tte[ 14 ] = 0;\\n\\t\\t\\tte[ 15 ] = 1;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tlookAt: function () {\\n\\n\\t\\t\\tvar x = new Vector3();\\n\\t\\t\\tvar y = new Vector3();\\n\\t\\t\\tvar z = new Vector3();\\n\\n\\t\\t\\treturn function lookAt( eye, target, up ) {\\n\\n\\t\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\t\\tz.subVectors( eye, target );\\n\\n\\t\\t\\t\\tif ( z.lengthSq() === 0 ) {\\n\\n\\t\\t\\t\\t\\t// eye and target are in the same position\\n\\n\\t\\t\\t\\t\\tz.z = 1;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tz.normalize();\\n\\t\\t\\t\\tx.crossVectors( up, z );\\n\\n\\t\\t\\t\\tif ( x.lengthSq() === 0 ) {\\n\\n\\t\\t\\t\\t\\t// up and z are parallel\\n\\n\\t\\t\\t\\t\\tif ( Math.abs( up.z ) === 1 ) {\\n\\n\\t\\t\\t\\t\\t\\tz.x += 0.0001;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tz.z += 0.0001;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tz.normalize();\\n\\t\\t\\t\\t\\tx.crossVectors( up, z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tx.normalize();\\n\\t\\t\\t\\ty.crossVectors( z, x );\\n\\n\\t\\t\\t\\tte[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x;\\n\\t\\t\\t\\tte[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y;\\n\\t\\t\\t\\tte[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z;\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tmultiply: function ( m, n ) {\\n\\n\\t\\t\\tif ( n !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.multiplyMatrices( m, n );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this.multiplyMatrices( this, m );\\n\\n\\t\\t},\\n\\n\\t\\tpremultiply: function ( m ) {\\n\\n\\t\\t\\treturn this.multiplyMatrices( m, this );\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyMatrices: function ( a, b ) {\\n\\n\\t\\t\\tvar ae = a.elements;\\n\\t\\t\\tvar be = b.elements;\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\\n\\t\\t\\tvar a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\\n\\t\\t\\tvar a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\\n\\t\\t\\tvar a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\\n\\n\\t\\t\\tvar b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\\n\\t\\t\\tvar b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\\n\\t\\t\\tvar b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\\n\\t\\t\\tvar b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\\n\\n\\t\\t\\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\\n\\t\\t\\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\\n\\t\\t\\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\\n\\t\\t\\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\\n\\n\\t\\t\\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\\n\\t\\t\\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\\n\\t\\t\\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\\n\\t\\t\\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\\n\\n\\t\\t\\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\\n\\t\\t\\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\\n\\t\\t\\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\\n\\t\\t\\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\\n\\n\\t\\t\\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\\n\\t\\t\\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\\n\\t\\t\\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\\n\\t\\t\\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyScalar: function ( s ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\\n\\t\\t\\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\\n\\t\\t\\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\\n\\t\\t\\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tapplyToBufferAttribute: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function applyToBufferAttribute( attribute ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tv1.x = attribute.getX( i );\\n\\t\\t\\t\\t\\tv1.y = attribute.getY( i );\\n\\t\\t\\t\\t\\tv1.z = attribute.getZ( i );\\n\\n\\t\\t\\t\\t\\tv1.applyMatrix4( this );\\n\\n\\t\\t\\t\\t\\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn attribute;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tdeterminant: function () {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\\n\\t\\t\\tvar n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\\n\\t\\t\\tvar n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\\n\\t\\t\\tvar n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\\n\\n\\t\\t\\t//TODO: make this more efficient\\n\\t\\t\\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\\n\\n\\t\\t\\treturn (\\n\\t\\t\\t\\tn41 * (\\n\\t\\t\\t\\t\\t+ n14 * n23 * n32\\n\\t\\t\\t\\t\\t - n13 * n24 * n32\\n\\t\\t\\t\\t\\t - n14 * n22 * n33\\n\\t\\t\\t\\t\\t + n12 * n24 * n33\\n\\t\\t\\t\\t\\t + n13 * n22 * n34\\n\\t\\t\\t\\t\\t - n12 * n23 * n34\\n\\t\\t\\t\\t) +\\n\\t\\t\\t\\tn42 * (\\n\\t\\t\\t\\t\\t+ n11 * n23 * n34\\n\\t\\t\\t\\t\\t - n11 * n24 * n33\\n\\t\\t\\t\\t\\t + n14 * n21 * n33\\n\\t\\t\\t\\t\\t - n13 * n21 * n34\\n\\t\\t\\t\\t\\t + n13 * n24 * n31\\n\\t\\t\\t\\t\\t - n14 * n23 * n31\\n\\t\\t\\t\\t) +\\n\\t\\t\\t\\tn43 * (\\n\\t\\t\\t\\t\\t+ n11 * n24 * n32\\n\\t\\t\\t\\t\\t - n11 * n22 * n34\\n\\t\\t\\t\\t\\t - n14 * n21 * n32\\n\\t\\t\\t\\t\\t + n12 * n21 * n34\\n\\t\\t\\t\\t\\t + n14 * n22 * n31\\n\\t\\t\\t\\t\\t - n12 * n24 * n31\\n\\t\\t\\t\\t) +\\n\\t\\t\\t\\tn44 * (\\n\\t\\t\\t\\t\\t- n13 * n22 * n31\\n\\t\\t\\t\\t\\t - n11 * n23 * n32\\n\\t\\t\\t\\t\\t + n11 * n22 * n33\\n\\t\\t\\t\\t\\t + n13 * n21 * n32\\n\\t\\t\\t\\t\\t - n12 * n21 * n33\\n\\t\\t\\t\\t\\t + n12 * n23 * n31\\n\\t\\t\\t\\t)\\n\\n\\t\\t\\t);\\n\\n\\t\\t},\\n\\n\\t\\ttranspose: function () {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar tmp;\\n\\n\\t\\t\\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\\n\\t\\t\\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\\n\\t\\t\\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\\n\\n\\t\\t\\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\\n\\t\\t\\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\\n\\t\\t\\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetPosition: function ( v ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tte[ 12 ] = v.x;\\n\\t\\t\\tte[ 13 ] = v.y;\\n\\t\\t\\tte[ 14 ] = v.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetInverse: function ( m, throwOnDegenerate ) {\\n\\n\\t\\t\\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\\n\\t\\t\\tvar te = this.elements,\\n\\t\\t\\t\\tme = m.elements,\\n\\n\\t\\t\\t\\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ],\\n\\t\\t\\t\\tn12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ],\\n\\t\\t\\t\\tn13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ],\\n\\t\\t\\t\\tn14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ],\\n\\n\\t\\t\\t\\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\\n\\t\\t\\t\\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\\n\\t\\t\\t\\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\\n\\t\\t\\t\\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\\n\\n\\t\\t\\tvar det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\\n\\n\\t\\t\\tif ( det === 0 ) {\\n\\n\\t\\t\\t\\tvar msg = \\\"THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0\\\";\\n\\n\\t\\t\\t\\tif ( throwOnDegenerate === true ) {\\n\\n\\t\\t\\t\\t\\tthrow new Error( msg );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tconsole.warn( msg );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn this.identity();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar detInv = 1 / det;\\n\\n\\t\\t\\tte[ 0 ] = t11 * detInv;\\n\\t\\t\\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\\n\\t\\t\\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\\n\\t\\t\\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\\n\\n\\t\\t\\tte[ 4 ] = t12 * detInv;\\n\\t\\t\\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\\n\\t\\t\\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\\n\\t\\t\\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\\n\\n\\t\\t\\tte[ 8 ] = t13 * detInv;\\n\\t\\t\\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\\n\\t\\t\\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\\n\\t\\t\\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\\n\\n\\t\\t\\tte[ 12 ] = t14 * detInv;\\n\\t\\t\\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\\n\\t\\t\\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\\n\\t\\t\\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tscale: function ( v ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar x = v.x, y = v.y, z = v.z;\\n\\n\\t\\t\\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\\n\\t\\t\\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\\n\\t\\t\\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\\n\\t\\t\\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetMaxScaleOnAxis: function () {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\\n\\t\\t\\tvar scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\\n\\t\\t\\tvar scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\\n\\n\\t\\t\\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\\n\\n\\t\\t},\\n\\n\\t\\tmakeTranslation: function ( x, y, z ) {\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\t1, 0, 0, x,\\n\\t\\t\\t\\t0, 1, 0, y,\\n\\t\\t\\t\\t0, 0, 1, z,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeRotationX: function ( theta ) {\\n\\n\\t\\t\\tvar c = Math.cos( theta ), s = Math.sin( theta );\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\t1, 0, 0, 0,\\n\\t\\t\\t\\t0, c, - s, 0,\\n\\t\\t\\t\\t0, s, c, 0,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeRotationY: function ( theta ) {\\n\\n\\t\\t\\tvar c = Math.cos( theta ), s = Math.sin( theta );\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\t c, 0, s, 0,\\n\\t\\t\\t\\t 0, 1, 0, 0,\\n\\t\\t\\t\\t- s, 0, c, 0,\\n\\t\\t\\t\\t 0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeRotationZ: function ( theta ) {\\n\\n\\t\\t\\tvar c = Math.cos( theta ), s = Math.sin( theta );\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\tc, - s, 0, 0,\\n\\t\\t\\t\\ts, c, 0, 0,\\n\\t\\t\\t\\t0, 0, 1, 0,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeRotationAxis: function ( axis, angle ) {\\n\\n\\t\\t\\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\\n\\n\\t\\t\\tvar c = Math.cos( angle );\\n\\t\\t\\tvar s = Math.sin( angle );\\n\\t\\t\\tvar t = 1 - c;\\n\\t\\t\\tvar x = axis.x, y = axis.y, z = axis.z;\\n\\t\\t\\tvar tx = t * x, ty = t * y;\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\\n\\t\\t\\t\\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\\n\\t\\t\\t\\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\t return this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeScale: function ( x, y, z ) {\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\tx, 0, 0, 0,\\n\\t\\t\\t\\t0, y, 0, 0,\\n\\t\\t\\t\\t0, 0, z, 0,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeShear: function ( x, y, z ) {\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\t1, y, z, 0,\\n\\t\\t\\t\\tx, 1, z, 0,\\n\\t\\t\\t\\tx, y, 1, 0,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcompose: function ( position, quaternion, scale ) {\\n\\n\\t\\t\\tthis.makeRotationFromQuaternion( quaternion );\\n\\t\\t\\tthis.scale( scale );\\n\\t\\t\\tthis.setPosition( position );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdecompose: function () {\\n\\n\\t\\t\\tvar vector = new Vector3();\\n\\t\\t\\tvar matrix = new Matrix4();\\n\\n\\t\\t\\treturn function decompose( position, quaternion, scale ) {\\n\\n\\t\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\t\\tvar sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\\n\\t\\t\\t\\tvar sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\\n\\t\\t\\t\\tvar sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\\n\\n\\t\\t\\t\\t// if determine is negative, we need to invert one scale\\n\\t\\t\\t\\tvar det = this.determinant();\\n\\t\\t\\t\\tif ( det < 0 ) sx = - sx;\\n\\n\\t\\t\\t\\tposition.x = te[ 12 ];\\n\\t\\t\\t\\tposition.y = te[ 13 ];\\n\\t\\t\\t\\tposition.z = te[ 14 ];\\n\\n\\t\\t\\t\\t// scale the rotation part\\n\\t\\t\\t\\tmatrix.copy( this );\\n\\n\\t\\t\\t\\tvar invSX = 1 / sx;\\n\\t\\t\\t\\tvar invSY = 1 / sy;\\n\\t\\t\\t\\tvar invSZ = 1 / sz;\\n\\n\\t\\t\\t\\tmatrix.elements[ 0 ] *= invSX;\\n\\t\\t\\t\\tmatrix.elements[ 1 ] *= invSX;\\n\\t\\t\\t\\tmatrix.elements[ 2 ] *= invSX;\\n\\n\\t\\t\\t\\tmatrix.elements[ 4 ] *= invSY;\\n\\t\\t\\t\\tmatrix.elements[ 5 ] *= invSY;\\n\\t\\t\\t\\tmatrix.elements[ 6 ] *= invSY;\\n\\n\\t\\t\\t\\tmatrix.elements[ 8 ] *= invSZ;\\n\\t\\t\\t\\tmatrix.elements[ 9 ] *= invSZ;\\n\\t\\t\\t\\tmatrix.elements[ 10 ] *= invSZ;\\n\\n\\t\\t\\t\\tquaternion.setFromRotationMatrix( matrix );\\n\\n\\t\\t\\t\\tscale.x = sx;\\n\\t\\t\\t\\tscale.y = sy;\\n\\t\\t\\t\\tscale.z = sz;\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tmakePerspective: function ( left, right, top, bottom, near, far ) {\\n\\n\\t\\t\\tif ( far === undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar x = 2 * near / ( right - left );\\n\\t\\t\\tvar y = 2 * near / ( top - bottom );\\n\\n\\t\\t\\tvar a = ( right + left ) / ( right - left );\\n\\t\\t\\tvar b = ( top + bottom ) / ( top - bottom );\\n\\t\\t\\tvar c = - ( far + near ) / ( far - near );\\n\\t\\t\\tvar d = - 2 * far * near / ( far - near );\\n\\n\\t\\t\\tte[ 0 ] = x;\\tte[ 4 ] = 0;\\tte[ 8 ] = a;\\tte[ 12 ] = 0;\\n\\t\\t\\tte[ 1 ] = 0;\\tte[ 5 ] = y;\\tte[ 9 ] = b;\\tte[ 13 ] = 0;\\n\\t\\t\\tte[ 2 ] = 0;\\tte[ 6 ] = 0;\\tte[ 10 ] = c;\\tte[ 14 ] = d;\\n\\t\\t\\tte[ 3 ] = 0;\\tte[ 7 ] = 0;\\tte[ 11 ] = - 1;\\tte[ 15 ] = 0;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeOrthographic: function ( left, right, top, bottom, near, far ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar w = 1.0 / ( right - left );\\n\\t\\t\\tvar h = 1.0 / ( top - bottom );\\n\\t\\t\\tvar p = 1.0 / ( far - near );\\n\\n\\t\\t\\tvar x = ( right + left ) * w;\\n\\t\\t\\tvar y = ( top + bottom ) * h;\\n\\t\\t\\tvar z = ( far + near ) * p;\\n\\n\\t\\t\\tte[ 0 ] = 2 * w;\\tte[ 4 ] = 0;\\tte[ 8 ] = 0;\\tte[ 12 ] = - x;\\n\\t\\t\\tte[ 1 ] = 0;\\tte[ 5 ] = 2 * h;\\tte[ 9 ] = 0;\\tte[ 13 ] = - y;\\n\\t\\t\\tte[ 2 ] = 0;\\tte[ 6 ] = 0;\\tte[ 10 ] = - 2 * p;\\tte[ 14 ] = - z;\\n\\t\\t\\tte[ 3 ] = 0;\\tte[ 7 ] = 0;\\tte[ 11 ] = 0;\\tte[ 15 ] = 1;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( matrix ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar me = matrix.elements;\\n\\n\\t\\t\\tfor ( var i = 0; i < 16; i ++ ) {\\n\\n\\t\\t\\t\\tif ( te[ i ] !== me[ i ] ) return false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn true;\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tfor ( var i = 0; i < 16; i ++ ) {\\n\\n\\t\\t\\t\\tthis.elements[ i ] = array[ i + offset ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tarray[ offset ] = te[ 0 ];\\n\\t\\t\\tarray[ offset + 1 ] = te[ 1 ];\\n\\t\\t\\tarray[ offset + 2 ] = te[ 2 ];\\n\\t\\t\\tarray[ offset + 3 ] = te[ 3 ];\\n\\n\\t\\t\\tarray[ offset + 4 ] = te[ 4 ];\\n\\t\\t\\tarray[ offset + 5 ] = te[ 5 ];\\n\\t\\t\\tarray[ offset + 6 ] = te[ 6 ];\\n\\t\\t\\tarray[ offset + 7 ] = te[ 7 ];\\n\\n\\t\\t\\tarray[ offset + 8 ] = te[ 8 ];\\n\\t\\t\\tarray[ offset + 9 ] = te[ 9 ];\\n\\t\\t\\tarray[ offset + 10 ] = te[ 10 ];\\n\\t\\t\\tarray[ offset + 11 ] = te[ 11 ];\\n\\n\\t\\t\\tarray[ offset + 12 ] = te[ 12 ];\\n\\t\\t\\tarray[ offset + 13 ] = te[ 13 ];\\n\\t\\t\\tarray[ offset + 14 ] = te[ 14 ];\\n\\t\\t\\tarray[ offset + 15 ] = te[ 15 ];\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tfunction Quaternion( x, y, z, w ) {\\n\\n\\t\\tthis._x = x || 0;\\n\\t\\tthis._y = y || 0;\\n\\t\\tthis._z = z || 0;\\n\\t\\tthis._w = ( w !== undefined ) ? w : 1;\\n\\n\\t}\\n\\n\\tObject.assign( Quaternion, {\\n\\n\\t\\tslerp: function ( qa, qb, qm, t ) {\\n\\n\\t\\t\\treturn qm.copy( qa ).slerp( qb, t );\\n\\n\\t\\t},\\n\\n\\t\\tslerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\\n\\n\\t\\t\\t// fuzz-free, array-based Quaternion SLERP operation\\n\\n\\t\\t\\tvar x0 = src0[ srcOffset0 + 0 ],\\n\\t\\t\\t\\ty0 = src0[ srcOffset0 + 1 ],\\n\\t\\t\\t\\tz0 = src0[ srcOffset0 + 2 ],\\n\\t\\t\\t\\tw0 = src0[ srcOffset0 + 3 ],\\n\\n\\t\\t\\t\\tx1 = src1[ srcOffset1 + 0 ],\\n\\t\\t\\t\\ty1 = src1[ srcOffset1 + 1 ],\\n\\t\\t\\t\\tz1 = src1[ srcOffset1 + 2 ],\\n\\t\\t\\t\\tw1 = src1[ srcOffset1 + 3 ];\\n\\n\\t\\t\\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\\n\\n\\t\\t\\t\\tvar s = 1 - t,\\n\\n\\t\\t\\t\\t\\tcos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\\n\\n\\t\\t\\t\\t\\tdir = ( cos >= 0 ? 1 : - 1 ),\\n\\t\\t\\t\\t\\tsqrSin = 1 - cos * cos;\\n\\n\\t\\t\\t\\t// Skip the Slerp for tiny steps to avoid numeric problems:\\n\\t\\t\\t\\tif ( sqrSin > Number.EPSILON ) {\\n\\n\\t\\t\\t\\t\\tvar sin = Math.sqrt( sqrSin ),\\n\\t\\t\\t\\t\\t\\tlen = Math.atan2( sin, cos * dir );\\n\\n\\t\\t\\t\\t\\ts = Math.sin( s * len ) / sin;\\n\\t\\t\\t\\t\\tt = Math.sin( t * len ) / sin;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar tDir = t * dir;\\n\\n\\t\\t\\t\\tx0 = x0 * s + x1 * tDir;\\n\\t\\t\\t\\ty0 = y0 * s + y1 * tDir;\\n\\t\\t\\t\\tz0 = z0 * s + z1 * tDir;\\n\\t\\t\\t\\tw0 = w0 * s + w1 * tDir;\\n\\n\\t\\t\\t\\t// Normalize in case we just did a lerp:\\n\\t\\t\\t\\tif ( s === 1 - t ) {\\n\\n\\t\\t\\t\\t\\tvar f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\\n\\n\\t\\t\\t\\t\\tx0 *= f;\\n\\t\\t\\t\\t\\ty0 *= f;\\n\\t\\t\\t\\t\\tz0 *= f;\\n\\t\\t\\t\\t\\tw0 *= f;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tdst[ dstOffset ] = x0;\\n\\t\\t\\tdst[ dstOffset + 1 ] = y0;\\n\\t\\t\\tdst[ dstOffset + 2 ] = z0;\\n\\t\\t\\tdst[ dstOffset + 3 ] = w0;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( Quaternion.prototype, {\\n\\n\\t\\tx: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._x;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._x = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\ty: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._y;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._y = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tz: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._z;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._z = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tw: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._w;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._w = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Quaternion.prototype, {\\n\\n\\t\\tset: function ( x, y, z, w ) {\\n\\n\\t\\t\\tthis._x = x;\\n\\t\\t\\tthis._y = y;\\n\\t\\t\\tthis._z = z;\\n\\t\\t\\tthis._w = w;\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this._x, this._y, this._z, this._w );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( quaternion ) {\\n\\n\\t\\t\\tthis._x = quaternion.x;\\n\\t\\t\\tthis._y = quaternion.y;\\n\\t\\t\\tthis._z = quaternion.z;\\n\\t\\t\\tthis._w = quaternion.w;\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromEuler: function ( euler, update ) {\\n\\n\\t\\t\\tif ( ! ( euler && euler.isEuler ) ) {\\n\\n\\t\\t\\t\\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar x = euler._x, y = euler._y, z = euler._z, order = euler.order;\\n\\n\\t\\t\\t// http://www.mathworks.com/matlabcentral/fileexchange/\\n\\t\\t\\t// \\t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\\n\\t\\t\\t//\\tcontent/SpinCalc.m\\n\\n\\t\\t\\tvar cos = Math.cos;\\n\\t\\t\\tvar sin = Math.sin;\\n\\n\\t\\t\\tvar c1 = cos( x / 2 );\\n\\t\\t\\tvar c2 = cos( y / 2 );\\n\\t\\t\\tvar c3 = cos( z / 2 );\\n\\n\\t\\t\\tvar s1 = sin( x / 2 );\\n\\t\\t\\tvar s2 = sin( y / 2 );\\n\\t\\t\\tvar s3 = sin( z / 2 );\\n\\n\\t\\t\\tif ( order === 'XYZ' ) {\\n\\n\\t\\t\\t\\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\\n\\t\\t\\t\\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\\n\\t\\t\\t\\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\\n\\t\\t\\t\\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\\n\\n\\t\\t\\t} else if ( order === 'YXZ' ) {\\n\\n\\t\\t\\t\\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\\n\\t\\t\\t\\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\\n\\t\\t\\t\\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\\n\\t\\t\\t\\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\\n\\n\\t\\t\\t} else if ( order === 'ZXY' ) {\\n\\n\\t\\t\\t\\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\\n\\t\\t\\t\\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\\n\\t\\t\\t\\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\\n\\t\\t\\t\\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\\n\\n\\t\\t\\t} else if ( order === 'ZYX' ) {\\n\\n\\t\\t\\t\\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\\n\\t\\t\\t\\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\\n\\t\\t\\t\\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\\n\\t\\t\\t\\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\\n\\n\\t\\t\\t} else if ( order === 'YZX' ) {\\n\\n\\t\\t\\t\\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\\n\\t\\t\\t\\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\\n\\t\\t\\t\\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\\n\\t\\t\\t\\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\\n\\n\\t\\t\\t} else if ( order === 'XZY' ) {\\n\\n\\t\\t\\t\\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\\n\\t\\t\\t\\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\\n\\t\\t\\t\\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\\n\\t\\t\\t\\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( update !== false ) this.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromAxisAngle: function ( axis, angle ) {\\n\\n\\t\\t\\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\\n\\n\\t\\t\\t// assumes axis is normalized\\n\\n\\t\\t\\tvar halfAngle = angle / 2, s = Math.sin( halfAngle );\\n\\n\\t\\t\\tthis._x = axis.x * s;\\n\\t\\t\\tthis._y = axis.y * s;\\n\\t\\t\\tthis._z = axis.z * s;\\n\\t\\t\\tthis._w = Math.cos( halfAngle );\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromRotationMatrix: function ( m ) {\\n\\n\\t\\t\\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\\n\\n\\t\\t\\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\\n\\n\\t\\t\\tvar te = m.elements,\\n\\n\\t\\t\\t\\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\\n\\t\\t\\t\\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\\n\\t\\t\\t\\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\\n\\n\\t\\t\\t\\ttrace = m11 + m22 + m33,\\n\\t\\t\\t\\ts;\\n\\n\\t\\t\\tif ( trace > 0 ) {\\n\\n\\t\\t\\t\\ts = 0.5 / Math.sqrt( trace + 1.0 );\\n\\n\\t\\t\\t\\tthis._w = 0.25 / s;\\n\\t\\t\\t\\tthis._x = ( m32 - m23 ) * s;\\n\\t\\t\\t\\tthis._y = ( m13 - m31 ) * s;\\n\\t\\t\\t\\tthis._z = ( m21 - m12 ) * s;\\n\\n\\t\\t\\t} else if ( m11 > m22 && m11 > m33 ) {\\n\\n\\t\\t\\t\\ts = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\\n\\n\\t\\t\\t\\tthis._w = ( m32 - m23 ) / s;\\n\\t\\t\\t\\tthis._x = 0.25 * s;\\n\\t\\t\\t\\tthis._y = ( m12 + m21 ) / s;\\n\\t\\t\\t\\tthis._z = ( m13 + m31 ) / s;\\n\\n\\t\\t\\t} else if ( m22 > m33 ) {\\n\\n\\t\\t\\t\\ts = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\\n\\n\\t\\t\\t\\tthis._w = ( m13 - m31 ) / s;\\n\\t\\t\\t\\tthis._x = ( m12 + m21 ) / s;\\n\\t\\t\\t\\tthis._y = 0.25 * s;\\n\\t\\t\\t\\tthis._z = ( m23 + m32 ) / s;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\ts = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\\n\\n\\t\\t\\t\\tthis._w = ( m21 - m12 ) / s;\\n\\t\\t\\t\\tthis._x = ( m13 + m31 ) / s;\\n\\t\\t\\t\\tthis._y = ( m23 + m32 ) / s;\\n\\t\\t\\t\\tthis._z = 0.25 * s;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromUnitVectors: function () {\\n\\n\\t\\t\\t// assumes direction vectors vFrom and vTo are normalized\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\t\\t\\tvar r;\\n\\n\\t\\t\\tvar EPS = 0.000001;\\n\\n\\t\\t\\treturn function setFromUnitVectors( vFrom, vTo ) {\\n\\n\\t\\t\\t\\tif ( v1 === undefined ) v1 = new Vector3();\\n\\n\\t\\t\\t\\tr = vFrom.dot( vTo ) + 1;\\n\\n\\t\\t\\t\\tif ( r < EPS ) {\\n\\n\\t\\t\\t\\t\\tr = 0;\\n\\n\\t\\t\\t\\t\\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\\n\\n\\t\\t\\t\\t\\t\\tv1.set( - vFrom.y, vFrom.x, 0 );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tv1.set( 0, - vFrom.z, vFrom.y );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tv1.crossVectors( vFrom, vTo );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis._x = v1.x;\\n\\t\\t\\t\\tthis._y = v1.y;\\n\\t\\t\\t\\tthis._z = v1.z;\\n\\t\\t\\t\\tthis._w = r;\\n\\n\\t\\t\\t\\treturn this.normalize();\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tinverse: function () {\\n\\n\\t\\t\\treturn this.conjugate().normalize();\\n\\n\\t\\t},\\n\\n\\t\\tconjugate: function () {\\n\\n\\t\\t\\tthis._x *= - 1;\\n\\t\\t\\tthis._y *= - 1;\\n\\t\\t\\tthis._z *= - 1;\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdot: function ( v ) {\\n\\n\\t\\t\\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\\n\\n\\t\\t},\\n\\n\\t\\tlengthSq: function () {\\n\\n\\t\\t\\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\\n\\n\\t\\t},\\n\\n\\t\\tlength: function () {\\n\\n\\t\\t\\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\\n\\n\\t\\t},\\n\\n\\t\\tnormalize: function () {\\n\\n\\t\\t\\tvar l = this.length();\\n\\n\\t\\t\\tif ( l === 0 ) {\\n\\n\\t\\t\\t\\tthis._x = 0;\\n\\t\\t\\t\\tthis._y = 0;\\n\\t\\t\\t\\tthis._z = 0;\\n\\t\\t\\t\\tthis._w = 1;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tl = 1 / l;\\n\\n\\t\\t\\t\\tthis._x = this._x * l;\\n\\t\\t\\t\\tthis._y = this._y * l;\\n\\t\\t\\t\\tthis._z = this._z * l;\\n\\t\\t\\t\\tthis._w = this._w * l;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiply: function ( q, p ) {\\n\\n\\t\\t\\tif ( p !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.multiplyQuaternions( q, p );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this.multiplyQuaternions( this, q );\\n\\n\\t\\t},\\n\\n\\t\\tpremultiply: function ( q ) {\\n\\n\\t\\t\\treturn this.multiplyQuaternions( q, this );\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyQuaternions: function ( a, b ) {\\n\\n\\t\\t\\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\\n\\n\\t\\t\\tvar qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\\n\\t\\t\\tvar qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\\n\\n\\t\\t\\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\\n\\t\\t\\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\\n\\t\\t\\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\\n\\t\\t\\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tslerp: function ( qb, t ) {\\n\\n\\t\\t\\tif ( t === 0 ) return this;\\n\\t\\t\\tif ( t === 1 ) return this.copy( qb );\\n\\n\\t\\t\\tvar x = this._x, y = this._y, z = this._z, w = this._w;\\n\\n\\t\\t\\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\\n\\n\\t\\t\\tvar cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\\n\\n\\t\\t\\tif ( cosHalfTheta < 0 ) {\\n\\n\\t\\t\\t\\tthis._w = - qb._w;\\n\\t\\t\\t\\tthis._x = - qb._x;\\n\\t\\t\\t\\tthis._y = - qb._y;\\n\\t\\t\\t\\tthis._z = - qb._z;\\n\\n\\t\\t\\t\\tcosHalfTheta = - cosHalfTheta;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.copy( qb );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( cosHalfTheta >= 1.0 ) {\\n\\n\\t\\t\\t\\tthis._w = w;\\n\\t\\t\\t\\tthis._x = x;\\n\\t\\t\\t\\tthis._y = y;\\n\\t\\t\\t\\tthis._z = z;\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );\\n\\n\\t\\t\\tif ( Math.abs( sinHalfTheta ) < 0.001 ) {\\n\\n\\t\\t\\t\\tthis._w = 0.5 * ( w + this._w );\\n\\t\\t\\t\\tthis._x = 0.5 * ( x + this._x );\\n\\t\\t\\t\\tthis._y = 0.5 * ( y + this._y );\\n\\t\\t\\t\\tthis._z = 0.5 * ( z + this._z );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\\n\\t\\t\\tvar ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\\n\\t\\t\\t\\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\\n\\n\\t\\t\\tthis._w = ( w * ratioA + this._w * ratioB );\\n\\t\\t\\tthis._x = ( x * ratioA + this._x * ratioB );\\n\\t\\t\\tthis._y = ( y * ratioA + this._y * ratioB );\\n\\t\\t\\tthis._z = ( z * ratioA + this._z * ratioB );\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( quaternion ) {\\n\\n\\t\\t\\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tthis._x = array[ offset ];\\n\\t\\t\\tthis._y = array[ offset + 1 ];\\n\\t\\t\\tthis._z = array[ offset + 2 ];\\n\\t\\t\\tthis._w = array[ offset + 3 ];\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tarray[ offset ] = this._x;\\n\\t\\t\\tarray[ offset + 1 ] = this._y;\\n\\t\\t\\tarray[ offset + 2 ] = this._z;\\n\\t\\t\\tarray[ offset + 3 ] = this._w;\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t},\\n\\n\\t\\tonChange: function ( callback ) {\\n\\n\\t\\t\\tthis.onChangeCallback = callback;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tonChangeCallback: function () {}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author kile / http://kile.stravaganza.org/\\n\\t * @author philogb / http://blog.thejit.org/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author egraether / http://egraether.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction Vector3( x, y, z ) {\\n\\n\\t\\tthis.x = x || 0;\\n\\t\\tthis.y = y || 0;\\n\\t\\tthis.z = z || 0;\\n\\n\\t}\\n\\n\\tObject.assign( Vector3.prototype, {\\n\\n\\t\\tisVector3: true,\\n\\n\\t\\tset: function ( x, y, z ) {\\n\\n\\t\\t\\tthis.x = x;\\n\\t\\t\\tthis.y = y;\\n\\t\\t\\tthis.z = z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.x = scalar;\\n\\t\\t\\tthis.y = scalar;\\n\\t\\t\\tthis.z = scalar;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetX: function ( x ) {\\n\\n\\t\\t\\tthis.x = x;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetY: function ( y ) {\\n\\n\\t\\t\\tthis.y = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetZ: function ( z ) {\\n\\n\\t\\t\\tthis.z = z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetComponent: function ( index, value ) {\\n\\n\\t\\t\\tswitch ( index ) {\\n\\n\\t\\t\\t\\tcase 0: this.x = value; break;\\n\\t\\t\\t\\tcase 1: this.y = value; break;\\n\\t\\t\\t\\tcase 2: this.z = value; break;\\n\\t\\t\\t\\tdefault: throw new Error( 'index is out of range: ' + index );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetComponent: function ( index ) {\\n\\n\\t\\t\\tswitch ( index ) {\\n\\n\\t\\t\\t\\tcase 0: return this.x;\\n\\t\\t\\t\\tcase 1: return this.y;\\n\\t\\t\\t\\tcase 2: return this.z;\\n\\t\\t\\t\\tdefault: throw new Error( 'index is out of range: ' + index );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.x, this.y, this.z );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( v ) {\\n\\n\\t\\t\\tthis.x = v.x;\\n\\t\\t\\tthis.y = v.y;\\n\\t\\t\\tthis.z = v.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tadd: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.addVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x += v.x;\\n\\t\\t\\tthis.y += v.y;\\n\\t\\t\\tthis.z += v.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddScalar: function ( s ) {\\n\\n\\t\\t\\tthis.x += s;\\n\\t\\t\\tthis.y += s;\\n\\t\\t\\tthis.z += s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddVectors: function ( a, b ) {\\n\\n\\t\\t\\tthis.x = a.x + b.x;\\n\\t\\t\\tthis.y = a.y + b.y;\\n\\t\\t\\tthis.z = a.z + b.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddScaledVector: function ( v, s ) {\\n\\n\\t\\t\\tthis.x += v.x * s;\\n\\t\\t\\tthis.y += v.y * s;\\n\\t\\t\\tthis.z += v.z * s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsub: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.subVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x -= v.x;\\n\\t\\t\\tthis.y -= v.y;\\n\\t\\t\\tthis.z -= v.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsubScalar: function ( s ) {\\n\\n\\t\\t\\tthis.x -= s;\\n\\t\\t\\tthis.y -= s;\\n\\t\\t\\tthis.z -= s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsubVectors: function ( a, b ) {\\n\\n\\t\\t\\tthis.x = a.x - b.x;\\n\\t\\t\\tthis.y = a.y - b.y;\\n\\t\\t\\tthis.z = a.z - b.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiply: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.multiplyVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x *= v.x;\\n\\t\\t\\tthis.y *= v.y;\\n\\t\\t\\tthis.z *= v.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.x *= scalar;\\n\\t\\t\\tthis.y *= scalar;\\n\\t\\t\\tthis.z *= scalar;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyVectors: function ( a, b ) {\\n\\n\\t\\t\\tthis.x = a.x * b.x;\\n\\t\\t\\tthis.y = a.y * b.y;\\n\\t\\t\\tthis.z = a.z * b.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tapplyEuler: function () {\\n\\n\\t\\t\\tvar quaternion = new Quaternion();\\n\\n\\t\\t\\treturn function applyEuler( euler ) {\\n\\n\\t\\t\\t\\tif ( ! ( euler && euler.isEuler ) ) {\\n\\n\\t\\t\\t\\t\\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn this.applyQuaternion( quaternion.setFromEuler( euler ) );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tapplyAxisAngle: function () {\\n\\n\\t\\t\\tvar quaternion = new Quaternion();\\n\\n\\t\\t\\treturn function applyAxisAngle( axis, angle ) {\\n\\n\\t\\t\\t\\treturn this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tapplyMatrix3: function ( m ) {\\n\\n\\t\\t\\tvar x = this.x, y = this.y, z = this.z;\\n\\t\\t\\tvar e = m.elements;\\n\\n\\t\\t\\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\\n\\t\\t\\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\\n\\t\\t\\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix4: function ( m ) {\\n\\n\\t\\t\\tvar x = this.x, y = this.y, z = this.z;\\n\\t\\t\\tvar e = m.elements;\\n\\n\\t\\t\\tvar w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\\n\\n\\t\\t\\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\\n\\t\\t\\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\\n\\t\\t\\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tapplyQuaternion: function ( q ) {\\n\\n\\t\\t\\tvar x = this.x, y = this.y, z = this.z;\\n\\t\\t\\tvar qx = q.x, qy = q.y, qz = q.z, qw = q.w;\\n\\n\\t\\t\\t// calculate quat * vector\\n\\n\\t\\t\\tvar ix = qw * x + qy * z - qz * y;\\n\\t\\t\\tvar iy = qw * y + qz * x - qx * z;\\n\\t\\t\\tvar iz = qw * z + qx * y - qy * x;\\n\\t\\t\\tvar iw = - qx * x - qy * y - qz * z;\\n\\n\\t\\t\\t// calculate result * inverse quat\\n\\n\\t\\t\\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\\n\\t\\t\\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\\n\\t\\t\\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tproject: function () {\\n\\n\\t\\t\\tvar matrix = new Matrix4();\\n\\n\\t\\t\\treturn function project( camera ) {\\n\\n\\t\\t\\t\\tmatrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) );\\n\\t\\t\\t\\treturn this.applyMatrix4( matrix );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tunproject: function () {\\n\\n\\t\\t\\tvar matrix = new Matrix4();\\n\\n\\t\\t\\treturn function unproject( camera ) {\\n\\n\\t\\t\\t\\tmatrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) );\\n\\t\\t\\t\\treturn this.applyMatrix4( matrix );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttransformDirection: function ( m ) {\\n\\n\\t\\t\\t// input: THREE.Matrix4 affine matrix\\n\\t\\t\\t// vector interpreted as a direction\\n\\n\\t\\t\\tvar x = this.x, y = this.y, z = this.z;\\n\\t\\t\\tvar e = m.elements;\\n\\n\\t\\t\\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\\n\\t\\t\\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\\n\\t\\t\\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\\n\\n\\t\\t\\treturn this.normalize();\\n\\n\\t\\t},\\n\\n\\t\\tdivide: function ( v ) {\\n\\n\\t\\t\\tthis.x /= v.x;\\n\\t\\t\\tthis.y /= v.y;\\n\\t\\t\\tthis.z /= v.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdivideScalar: function ( scalar ) {\\n\\n\\t\\t\\treturn this.multiplyScalar( 1 / scalar );\\n\\n\\t\\t},\\n\\n\\t\\tmin: function ( v ) {\\n\\n\\t\\t\\tthis.x = Math.min( this.x, v.x );\\n\\t\\t\\tthis.y = Math.min( this.y, v.y );\\n\\t\\t\\tthis.z = Math.min( this.z, v.z );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmax: function ( v ) {\\n\\n\\t\\t\\tthis.x = Math.max( this.x, v.x );\\n\\t\\t\\tthis.y = Math.max( this.y, v.y );\\n\\t\\t\\tthis.z = Math.max( this.z, v.z );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclamp: function ( min, max ) {\\n\\n\\t\\t\\t// assumes min < max, componentwise\\n\\n\\t\\t\\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\\n\\t\\t\\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\\n\\t\\t\\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclampScalar: function () {\\n\\n\\t\\t\\tvar min = new Vector3();\\n\\t\\t\\tvar max = new Vector3();\\n\\n\\t\\t\\treturn function clampScalar( minVal, maxVal ) {\\n\\n\\t\\t\\t\\tmin.set( minVal, minVal, minVal );\\n\\t\\t\\t\\tmax.set( maxVal, maxVal, maxVal );\\n\\n\\t\\t\\t\\treturn this.clamp( min, max );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclampLength: function ( min, max ) {\\n\\n\\t\\t\\tvar length = this.length();\\n\\n\\t\\t\\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\\n\\n\\t\\t},\\n\\n\\t\\tfloor: function () {\\n\\n\\t\\t\\tthis.x = Math.floor( this.x );\\n\\t\\t\\tthis.y = Math.floor( this.y );\\n\\t\\t\\tthis.z = Math.floor( this.z );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tceil: function () {\\n\\n\\t\\t\\tthis.x = Math.ceil( this.x );\\n\\t\\t\\tthis.y = Math.ceil( this.y );\\n\\t\\t\\tthis.z = Math.ceil( this.z );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tround: function () {\\n\\n\\t\\t\\tthis.x = Math.round( this.x );\\n\\t\\t\\tthis.y = Math.round( this.y );\\n\\t\\t\\tthis.z = Math.round( this.z );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\troundToZero: function () {\\n\\n\\t\\t\\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\\n\\t\\t\\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\\n\\t\\t\\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tnegate: function () {\\n\\n\\t\\t\\tthis.x = - this.x;\\n\\t\\t\\tthis.y = - this.y;\\n\\t\\t\\tthis.z = - this.z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdot: function ( v ) {\\n\\n\\t\\t\\treturn this.x * v.x + this.y * v.y + this.z * v.z;\\n\\n\\t\\t},\\n\\n\\t\\t// TODO lengthSquared?\\n\\n\\t\\tlengthSq: function () {\\n\\n\\t\\t\\treturn this.x * this.x + this.y * this.y + this.z * this.z;\\n\\n\\t\\t},\\n\\n\\t\\tlength: function () {\\n\\n\\t\\t\\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\\n\\n\\t\\t},\\n\\n\\t\\tmanhattanLength: function () {\\n\\n\\t\\t\\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\\n\\n\\t\\t},\\n\\n\\t\\tnormalize: function () {\\n\\n\\t\\t\\treturn this.divideScalar( this.length() || 1 );\\n\\n\\t\\t},\\n\\n\\t\\tsetLength: function ( length ) {\\n\\n\\t\\t\\treturn this.normalize().multiplyScalar( length );\\n\\n\\t\\t},\\n\\n\\t\\tlerp: function ( v, alpha ) {\\n\\n\\t\\t\\tthis.x += ( v.x - this.x ) * alpha;\\n\\t\\t\\tthis.y += ( v.y - this.y ) * alpha;\\n\\t\\t\\tthis.z += ( v.z - this.z ) * alpha;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tlerpVectors: function ( v1, v2, alpha ) {\\n\\n\\t\\t\\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\\n\\n\\t\\t},\\n\\n\\t\\tcross: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.crossVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this.crossVectors( this, v );\\n\\n\\t\\t},\\n\\n\\t\\tcrossVectors: function ( a, b ) {\\n\\n\\t\\t\\tvar ax = a.x, ay = a.y, az = a.z;\\n\\t\\t\\tvar bx = b.x, by = b.y, bz = b.z;\\n\\n\\t\\t\\tthis.x = ay * bz - az * by;\\n\\t\\t\\tthis.y = az * bx - ax * bz;\\n\\t\\t\\tthis.z = ax * by - ay * bx;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tprojectOnVector: function ( vector ) {\\n\\n\\t\\t\\tvar scalar = vector.dot( this ) / vector.lengthSq();\\n\\n\\t\\t\\treturn this.copy( vector ).multiplyScalar( scalar );\\n\\n\\t\\t},\\n\\n\\t\\tprojectOnPlane: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function projectOnPlane( planeNormal ) {\\n\\n\\t\\t\\t\\tv1.copy( this ).projectOnVector( planeNormal );\\n\\n\\t\\t\\t\\treturn this.sub( v1 );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\treflect: function () {\\n\\n\\t\\t\\t// reflect incident vector off plane orthogonal to normal\\n\\t\\t\\t// normal is assumed to have unit length\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function reflect( normal ) {\\n\\n\\t\\t\\t\\treturn this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tangleTo: function ( v ) {\\n\\n\\t\\t\\tvar theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) );\\n\\n\\t\\t\\t// clamp, to handle numerical problems\\n\\n\\t\\t\\treturn Math.acos( _Math.clamp( theta, - 1, 1 ) );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceTo: function ( v ) {\\n\\n\\t\\t\\treturn Math.sqrt( this.distanceToSquared( v ) );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToSquared: function ( v ) {\\n\\n\\t\\t\\tvar dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\\n\\n\\t\\t\\treturn dx * dx + dy * dy + dz * dz;\\n\\n\\t\\t},\\n\\n\\t\\tmanhattanDistanceTo: function ( v ) {\\n\\n\\t\\t\\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\\n\\n\\t\\t},\\n\\n\\t\\tsetFromSpherical: function ( s ) {\\n\\n\\t\\t\\tvar sinPhiRadius = Math.sin( s.phi ) * s.radius;\\n\\n\\t\\t\\tthis.x = sinPhiRadius * Math.sin( s.theta );\\n\\t\\t\\tthis.y = Math.cos( s.phi ) * s.radius;\\n\\t\\t\\tthis.z = sinPhiRadius * Math.cos( s.theta );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromCylindrical: function ( c ) {\\n\\n\\t\\t\\tthis.x = c.radius * Math.sin( c.theta );\\n\\t\\t\\tthis.y = c.y;\\n\\t\\t\\tthis.z = c.radius * Math.cos( c.theta );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromMatrixPosition: function ( m ) {\\n\\n\\t\\t\\tvar e = m.elements;\\n\\n\\t\\t\\tthis.x = e[ 12 ];\\n\\t\\t\\tthis.y = e[ 13 ];\\n\\t\\t\\tthis.z = e[ 14 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromMatrixScale: function ( m ) {\\n\\n\\t\\t\\tvar sx = this.setFromMatrixColumn( m, 0 ).length();\\n\\t\\t\\tvar sy = this.setFromMatrixColumn( m, 1 ).length();\\n\\t\\t\\tvar sz = this.setFromMatrixColumn( m, 2 ).length();\\n\\n\\t\\t\\tthis.x = sx;\\n\\t\\t\\tthis.y = sy;\\n\\t\\t\\tthis.z = sz;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromMatrixColumn: function ( m, index ) {\\n\\n\\t\\t\\treturn this.fromArray( m.elements, index * 4 );\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( v ) {\\n\\n\\t\\t\\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tthis.x = array[ offset ];\\n\\t\\t\\tthis.y = array[ offset + 1 ];\\n\\t\\t\\tthis.z = array[ offset + 2 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tarray[ offset ] = this.x;\\n\\t\\t\\tarray[ offset + 1 ] = this.y;\\n\\t\\t\\tarray[ offset + 2 ] = this.z;\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t},\\n\\n\\t\\tfromBufferAttribute: function ( attribute, index, offset ) {\\n\\n\\t\\t\\tif ( offset !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x = attribute.getX( index );\\n\\t\\t\\tthis.y = attribute.getY( index );\\n\\t\\t\\tthis.z = attribute.getZ( index );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t * @author bhouston / http://clara.io\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction Matrix3() {\\n\\n\\t\\tthis.elements = [\\n\\n\\t\\t\\t1, 0, 0,\\n\\t\\t\\t0, 1, 0,\\n\\t\\t\\t0, 0, 1\\n\\n\\t\\t];\\n\\n\\t\\tif ( arguments.length > 0 ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tObject.assign( Matrix3.prototype, {\\n\\n\\t\\tisMatrix3: true,\\n\\n\\t\\tset: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\\n\\t\\t\\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\\n\\t\\t\\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tidentity: function () {\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\t1, 0, 0,\\n\\t\\t\\t\\t0, 1, 0,\\n\\t\\t\\t\\t0, 0, 1\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().fromArray( this.elements );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( m ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar me = m.elements;\\n\\n\\t\\t\\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\\n\\t\\t\\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\\n\\t\\t\\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromMatrix4: function ( m ) {\\n\\n\\t\\t\\tvar me = m.elements;\\n\\n\\t\\t\\tthis.set(\\n\\n\\t\\t\\t\\tme[ 0 ], me[ 4 ], me[ 8 ],\\n\\t\\t\\t\\tme[ 1 ], me[ 5 ], me[ 9 ],\\n\\t\\t\\t\\tme[ 2 ], me[ 6 ], me[ 10 ]\\n\\n\\t\\t\\t);\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tapplyToBufferAttribute: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function applyToBufferAttribute( attribute ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tv1.x = attribute.getX( i );\\n\\t\\t\\t\\t\\tv1.y = attribute.getY( i );\\n\\t\\t\\t\\t\\tv1.z = attribute.getZ( i );\\n\\n\\t\\t\\t\\t\\tv1.applyMatrix3( this );\\n\\n\\t\\t\\t\\t\\tattribute.setXYZ( i, v1.x, v1.y, v1.z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn attribute;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tmultiply: function ( m ) {\\n\\n\\t\\t\\treturn this.multiplyMatrices( this, m );\\n\\n\\t\\t},\\n\\n\\t\\tpremultiply: function ( m ) {\\n\\n\\t\\t\\treturn this.multiplyMatrices( m, this );\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyMatrices: function ( a, b ) {\\n\\n\\t\\t\\tvar ae = a.elements;\\n\\t\\t\\tvar be = b.elements;\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\\n\\t\\t\\tvar a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\\n\\t\\t\\tvar a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\\n\\n\\t\\t\\tvar b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\\n\\t\\t\\tvar b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\\n\\t\\t\\tvar b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\\n\\n\\t\\t\\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\\n\\t\\t\\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\\n\\t\\t\\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\\n\\n\\t\\t\\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\\n\\t\\t\\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\\n\\t\\t\\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\\n\\n\\t\\t\\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\\n\\t\\t\\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\\n\\t\\t\\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyScalar: function ( s ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\\n\\t\\t\\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\\n\\t\\t\\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdeterminant: function () {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\\n\\t\\t\\t\\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\\n\\t\\t\\t\\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\\n\\n\\t\\t\\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\\n\\n\\t\\t},\\n\\n\\t\\tgetInverse: function ( matrix, throwOnDegenerate ) {\\n\\n\\t\\t\\tif ( matrix && matrix.isMatrix4 ) {\\n\\n\\t\\t\\t\\tconsole.error( \\\"THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument.\\\" );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar me = matrix.elements,\\n\\t\\t\\t\\tte = this.elements,\\n\\n\\t\\t\\t\\tn11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ],\\n\\t\\t\\t\\tn12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ],\\n\\t\\t\\t\\tn13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ],\\n\\n\\t\\t\\t\\tt11 = n33 * n22 - n32 * n23,\\n\\t\\t\\t\\tt12 = n32 * n13 - n33 * n12,\\n\\t\\t\\t\\tt13 = n23 * n12 - n22 * n13,\\n\\n\\t\\t\\t\\tdet = n11 * t11 + n21 * t12 + n31 * t13;\\n\\n\\t\\t\\tif ( det === 0 ) {\\n\\n\\t\\t\\t\\tvar msg = \\\"THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0\\\";\\n\\n\\t\\t\\t\\tif ( throwOnDegenerate === true ) {\\n\\n\\t\\t\\t\\t\\tthrow new Error( msg );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tconsole.warn( msg );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn this.identity();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar detInv = 1 / det;\\n\\n\\t\\t\\tte[ 0 ] = t11 * detInv;\\n\\t\\t\\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\\n\\t\\t\\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\\n\\n\\t\\t\\tte[ 3 ] = t12 * detInv;\\n\\t\\t\\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\\n\\t\\t\\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\\n\\n\\t\\t\\tte[ 6 ] = t13 * detInv;\\n\\t\\t\\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\\n\\t\\t\\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttranspose: function () {\\n\\n\\t\\t\\tvar tmp, m = this.elements;\\n\\n\\t\\t\\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\\n\\t\\t\\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\\n\\t\\t\\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetNormalMatrix: function ( matrix4 ) {\\n\\n\\t\\t\\treturn this.setFromMatrix4( matrix4 ).getInverse( this ).transpose();\\n\\n\\t\\t},\\n\\n\\t\\ttransposeIntoArray: function ( r ) {\\n\\n\\t\\t\\tvar m = this.elements;\\n\\n\\t\\t\\tr[ 0 ] = m[ 0 ];\\n\\t\\t\\tr[ 1 ] = m[ 3 ];\\n\\t\\t\\tr[ 2 ] = m[ 6 ];\\n\\t\\t\\tr[ 3 ] = m[ 1 ];\\n\\t\\t\\tr[ 4 ] = m[ 4 ];\\n\\t\\t\\tr[ 5 ] = m[ 7 ];\\n\\t\\t\\tr[ 6 ] = m[ 2 ];\\n\\t\\t\\tr[ 7 ] = m[ 5 ];\\n\\t\\t\\tr[ 8 ] = m[ 8 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) {\\n\\n\\t\\t\\tvar c = Math.cos( rotation );\\n\\t\\t\\tvar s = Math.sin( rotation );\\n\\n\\t\\t\\tthis.set(\\n\\t\\t\\t\\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\\n\\t\\t\\t\\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\\n\\t\\t\\t\\t0, 0, 1\\n\\t\\t\\t);\\n\\n\\t\\t},\\n\\n\\t\\tscale: function ( sx, sy ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\\n\\t\\t\\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\trotate: function ( theta ) {\\n\\n\\t\\t\\tvar c = Math.cos( theta );\\n\\t\\t\\tvar s = Math.sin( theta );\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tvar a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\\n\\t\\t\\tvar a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\\n\\n\\t\\t\\tte[ 0 ] = c * a11 + s * a21;\\n\\t\\t\\tte[ 3 ] = c * a12 + s * a22;\\n\\t\\t\\tte[ 6 ] = c * a13 + s * a23;\\n\\n\\t\\t\\tte[ 1 ] = - s * a11 + c * a21;\\n\\t\\t\\tte[ 4 ] = - s * a12 + c * a22;\\n\\t\\t\\tte[ 7 ] = - s * a13 + c * a23;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttranslate: function ( tx, ty ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\\n\\t\\t\\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( matrix ) {\\n\\n\\t\\t\\tvar te = this.elements;\\n\\t\\t\\tvar me = matrix.elements;\\n\\n\\t\\t\\tfor ( var i = 0; i < 9; i ++ ) {\\n\\n\\t\\t\\t\\tif ( te[ i ] !== me[ i ] ) return false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn true;\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tfor ( var i = 0; i < 9; i ++ ) {\\n\\n\\t\\t\\t\\tthis.elements[ i ] = array[ i + offset ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tvar te = this.elements;\\n\\n\\t\\t\\tarray[ offset ] = te[ 0 ];\\n\\t\\t\\tarray[ offset + 1 ] = te[ 1 ];\\n\\t\\t\\tarray[ offset + 2 ] = te[ 2 ];\\n\\n\\t\\t\\tarray[ offset + 3 ] = te[ 3 ];\\n\\t\\t\\tarray[ offset + 4 ] = te[ 4 ];\\n\\t\\t\\tarray[ offset + 5 ] = te[ 5 ];\\n\\n\\t\\t\\tarray[ offset + 6 ] = te[ 6 ];\\n\\t\\t\\tarray[ offset + 7 ] = te[ 7 ];\\n\\t\\t\\tarray[ offset + 8 ] = te[ 8 ];\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author szimek / https://github.com/szimek/\\n\\t */\\n\\n\\tvar textureId = 0;\\n\\n\\tfunction Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\\n\\n\\t\\tObject.defineProperty( this, 'id', { value: textureId ++ } );\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.name = '';\\n\\n\\t\\tthis.image = image !== undefined ? image : Texture.DEFAULT_IMAGE;\\n\\t\\tthis.mipmaps = [];\\n\\n\\t\\tthis.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING;\\n\\n\\t\\tthis.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping;\\n\\t\\tthis.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping;\\n\\n\\t\\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\\n\\t\\tthis.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter;\\n\\n\\t\\tthis.anisotropy = anisotropy !== undefined ? anisotropy : 1;\\n\\n\\t\\tthis.format = format !== undefined ? format : RGBAFormat;\\n\\t\\tthis.type = type !== undefined ? type : UnsignedByteType;\\n\\n\\t\\tthis.offset = new Vector2( 0, 0 );\\n\\t\\tthis.repeat = new Vector2( 1, 1 );\\n\\t\\tthis.center = new Vector2( 0, 0 );\\n\\t\\tthis.rotation = 0;\\n\\n\\t\\tthis.matrixAutoUpdate = true;\\n\\t\\tthis.matrix = new Matrix3();\\n\\n\\t\\tthis.generateMipmaps = true;\\n\\t\\tthis.premultiplyAlpha = false;\\n\\t\\tthis.flipY = true;\\n\\t\\tthis.unpackAlignment = 4;\\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\\n\\n\\t\\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\\n\\t\\t//\\n\\t\\t// Also changing the encoding after already used by a Material will not automatically make the Material\\n\\t\\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\\n\\t\\tthis.encoding = encoding !== undefined ? encoding : LinearEncoding;\\n\\n\\t\\tthis.version = 0;\\n\\t\\tthis.onUpdate = null;\\n\\n\\t}\\n\\n\\tTexture.DEFAULT_IMAGE = undefined;\\n\\tTexture.DEFAULT_MAPPING = UVMapping;\\n\\n\\tTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\\n\\n\\t\\tconstructor: Texture,\\n\\n\\t\\tisTexture: true,\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.name = source.name;\\n\\n\\t\\t\\tthis.image = source.image;\\n\\t\\t\\tthis.mipmaps = source.mipmaps.slice( 0 );\\n\\n\\t\\t\\tthis.mapping = source.mapping;\\n\\n\\t\\t\\tthis.wrapS = source.wrapS;\\n\\t\\t\\tthis.wrapT = source.wrapT;\\n\\n\\t\\t\\tthis.magFilter = source.magFilter;\\n\\t\\t\\tthis.minFilter = source.minFilter;\\n\\n\\t\\t\\tthis.anisotropy = source.anisotropy;\\n\\n\\t\\t\\tthis.format = source.format;\\n\\t\\t\\tthis.type = source.type;\\n\\n\\t\\t\\tthis.offset.copy( source.offset );\\n\\t\\t\\tthis.repeat.copy( source.repeat );\\n\\t\\t\\tthis.center.copy( source.center );\\n\\t\\t\\tthis.rotation = source.rotation;\\n\\n\\t\\t\\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\\n\\t\\t\\tthis.matrix.copy( source.matrix );\\n\\n\\t\\t\\tthis.generateMipmaps = source.generateMipmaps;\\n\\t\\t\\tthis.premultiplyAlpha = source.premultiplyAlpha;\\n\\t\\t\\tthis.flipY = source.flipY;\\n\\t\\t\\tthis.unpackAlignment = source.unpackAlignment;\\n\\t\\t\\tthis.encoding = source.encoding;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\\n\\n\\t\\t\\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\\n\\n\\t\\t\\t\\treturn meta.textures[ this.uuid ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction getDataURL( image ) {\\n\\n\\t\\t\\t\\tvar canvas;\\n\\n\\t\\t\\t\\tif ( image instanceof HTMLCanvasElement ) {\\n\\n\\t\\t\\t\\t\\tcanvas = image;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tcanvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\\n\\t\\t\\t\\t\\tcanvas.width = image.width;\\n\\t\\t\\t\\t\\tcanvas.height = image.height;\\n\\n\\t\\t\\t\\t\\tvar context = canvas.getContext( '2d' );\\n\\n\\t\\t\\t\\t\\tif ( image instanceof ImageData ) {\\n\\n\\t\\t\\t\\t\\t\\tcontext.putImageData( image, 0, 0 );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tcontext.drawImage( image, 0, 0, image.width, image.height );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\\n\\n\\t\\t\\t\\t\\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\treturn canvas.toDataURL( 'image/png' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar output = {\\n\\t\\t\\t\\tmetadata: {\\n\\t\\t\\t\\t\\tversion: 4.5,\\n\\t\\t\\t\\t\\ttype: 'Texture',\\n\\t\\t\\t\\t\\tgenerator: 'Texture.toJSON'\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tuuid: this.uuid,\\n\\t\\t\\t\\tname: this.name,\\n\\n\\t\\t\\t\\tmapping: this.mapping,\\n\\n\\t\\t\\t\\trepeat: [ this.repeat.x, this.repeat.y ],\\n\\t\\t\\t\\toffset: [ this.offset.x, this.offset.y ],\\n\\t\\t\\t\\tcenter: [ this.center.x, this.center.y ],\\n\\t\\t\\t\\trotation: this.rotation,\\n\\n\\t\\t\\t\\twrap: [ this.wrapS, this.wrapT ],\\n\\n\\t\\t\\t\\tminFilter: this.minFilter,\\n\\t\\t\\t\\tmagFilter: this.magFilter,\\n\\t\\t\\t\\tanisotropy: this.anisotropy,\\n\\n\\t\\t\\t\\tflipY: this.flipY\\n\\t\\t\\t};\\n\\n\\t\\t\\tif ( this.image !== undefined ) {\\n\\n\\t\\t\\t\\t// TODO: Move to THREE.Image\\n\\n\\t\\t\\t\\tvar image = this.image;\\n\\n\\t\\t\\t\\tif ( image.uuid === undefined ) {\\n\\n\\t\\t\\t\\t\\timage.uuid = _Math.generateUUID(); // UGH\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\\n\\n\\t\\t\\t\\t\\tmeta.images[ image.uuid ] = {\\n\\t\\t\\t\\t\\t\\tuuid: image.uuid,\\n\\t\\t\\t\\t\\t\\turl: getDataURL( image )\\n\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\toutput.image = image.uuid;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ! isRootObject ) {\\n\\n\\t\\t\\t\\tmeta.textures[ this.uuid ] = output;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn output;\\n\\n\\t\\t},\\n\\n\\t\\tdispose: function () {\\n\\n\\t\\t\\tthis.dispatchEvent( { type: 'dispose' } );\\n\\n\\t\\t},\\n\\n\\t\\ttransformUv: function ( uv ) {\\n\\n\\t\\t\\tif ( this.mapping !== UVMapping ) return;\\n\\n\\t\\t\\tuv.applyMatrix3( this.matrix );\\n\\n\\t\\t\\tif ( uv.x < 0 || uv.x > 1 ) {\\n\\n\\t\\t\\t\\tswitch ( this.wrapS ) {\\n\\n\\t\\t\\t\\t\\tcase RepeatWrapping:\\n\\n\\t\\t\\t\\t\\t\\tuv.x = uv.x - Math.floor( uv.x );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase ClampToEdgeWrapping:\\n\\n\\t\\t\\t\\t\\t\\tuv.x = uv.x < 0 ? 0 : 1;\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase MirroredRepeatWrapping:\\n\\n\\t\\t\\t\\t\\t\\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tuv.x = Math.ceil( uv.x ) - uv.x;\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tuv.x = uv.x - Math.floor( uv.x );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( uv.y < 0 || uv.y > 1 ) {\\n\\n\\t\\t\\t\\tswitch ( this.wrapT ) {\\n\\n\\t\\t\\t\\t\\tcase RepeatWrapping:\\n\\n\\t\\t\\t\\t\\t\\tuv.y = uv.y - Math.floor( uv.y );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase ClampToEdgeWrapping:\\n\\n\\t\\t\\t\\t\\t\\tuv.y = uv.y < 0 ? 0 : 1;\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase MirroredRepeatWrapping:\\n\\n\\t\\t\\t\\t\\t\\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tuv.y = Math.ceil( uv.y ) - uv.y;\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tuv.y = uv.y - Math.floor( uv.y );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.flipY ) {\\n\\n\\t\\t\\t\\tuv.y = 1 - uv.y;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperty( Texture.prototype, \\\"needsUpdate\\\", {\\n\\n\\t\\tset: function ( value ) {\\n\\n\\t\\t\\tif ( value === true ) this.version ++;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author supereggbert / http://www.paulbrunt.co.uk/\\n\\t * @author philogb / http://blog.thejit.org/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author egraether / http://egraether.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction Vector4( x, y, z, w ) {\\n\\n\\t\\tthis.x = x || 0;\\n\\t\\tthis.y = y || 0;\\n\\t\\tthis.z = z || 0;\\n\\t\\tthis.w = ( w !== undefined ) ? w : 1;\\n\\n\\t}\\n\\n\\tObject.assign( Vector4.prototype, {\\n\\n\\t\\tisVector4: true,\\n\\n\\t\\tset: function ( x, y, z, w ) {\\n\\n\\t\\t\\tthis.x = x;\\n\\t\\t\\tthis.y = y;\\n\\t\\t\\tthis.z = z;\\n\\t\\t\\tthis.w = w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.x = scalar;\\n\\t\\t\\tthis.y = scalar;\\n\\t\\t\\tthis.z = scalar;\\n\\t\\t\\tthis.w = scalar;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetX: function ( x ) {\\n\\n\\t\\t\\tthis.x = x;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetY: function ( y ) {\\n\\n\\t\\t\\tthis.y = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetZ: function ( z ) {\\n\\n\\t\\t\\tthis.z = z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetW: function ( w ) {\\n\\n\\t\\t\\tthis.w = w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetComponent: function ( index, value ) {\\n\\n\\t\\t\\tswitch ( index ) {\\n\\n\\t\\t\\t\\tcase 0: this.x = value; break;\\n\\t\\t\\t\\tcase 1: this.y = value; break;\\n\\t\\t\\t\\tcase 2: this.z = value; break;\\n\\t\\t\\t\\tcase 3: this.w = value; break;\\n\\t\\t\\t\\tdefault: throw new Error( 'index is out of range: ' + index );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetComponent: function ( index ) {\\n\\n\\t\\t\\tswitch ( index ) {\\n\\n\\t\\t\\t\\tcase 0: return this.x;\\n\\t\\t\\t\\tcase 1: return this.y;\\n\\t\\t\\t\\tcase 2: return this.z;\\n\\t\\t\\t\\tcase 3: return this.w;\\n\\t\\t\\t\\tdefault: throw new Error( 'index is out of range: ' + index );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.x, this.y, this.z, this.w );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( v ) {\\n\\n\\t\\t\\tthis.x = v.x;\\n\\t\\t\\tthis.y = v.y;\\n\\t\\t\\tthis.z = v.z;\\n\\t\\t\\tthis.w = ( v.w !== undefined ) ? v.w : 1;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tadd: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.addVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x += v.x;\\n\\t\\t\\tthis.y += v.y;\\n\\t\\t\\tthis.z += v.z;\\n\\t\\t\\tthis.w += v.w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddScalar: function ( s ) {\\n\\n\\t\\t\\tthis.x += s;\\n\\t\\t\\tthis.y += s;\\n\\t\\t\\tthis.z += s;\\n\\t\\t\\tthis.w += s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddVectors: function ( a, b ) {\\n\\n\\t\\t\\tthis.x = a.x + b.x;\\n\\t\\t\\tthis.y = a.y + b.y;\\n\\t\\t\\tthis.z = a.z + b.z;\\n\\t\\t\\tthis.w = a.w + b.w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddScaledVector: function ( v, s ) {\\n\\n\\t\\t\\tthis.x += v.x * s;\\n\\t\\t\\tthis.y += v.y * s;\\n\\t\\t\\tthis.z += v.z * s;\\n\\t\\t\\tthis.w += v.w * s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsub: function ( v, w ) {\\n\\n\\t\\t\\tif ( w !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\\n\\t\\t\\t\\treturn this.subVectors( v, w );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x -= v.x;\\n\\t\\t\\tthis.y -= v.y;\\n\\t\\t\\tthis.z -= v.z;\\n\\t\\t\\tthis.w -= v.w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsubScalar: function ( s ) {\\n\\n\\t\\t\\tthis.x -= s;\\n\\t\\t\\tthis.y -= s;\\n\\t\\t\\tthis.z -= s;\\n\\t\\t\\tthis.w -= s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsubVectors: function ( a, b ) {\\n\\n\\t\\t\\tthis.x = a.x - b.x;\\n\\t\\t\\tthis.y = a.y - b.y;\\n\\t\\t\\tthis.z = a.z - b.z;\\n\\t\\t\\tthis.w = a.w - b.w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.x *= scalar;\\n\\t\\t\\tthis.y *= scalar;\\n\\t\\t\\tthis.z *= scalar;\\n\\t\\t\\tthis.w *= scalar;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix4: function ( m ) {\\n\\n\\t\\t\\tvar x = this.x, y = this.y, z = this.z, w = this.w;\\n\\t\\t\\tvar e = m.elements;\\n\\n\\t\\t\\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\\n\\t\\t\\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\\n\\t\\t\\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\\n\\t\\t\\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdivideScalar: function ( scalar ) {\\n\\n\\t\\t\\treturn this.multiplyScalar( 1 / scalar );\\n\\n\\t\\t},\\n\\n\\t\\tsetAxisAngleFromQuaternion: function ( q ) {\\n\\n\\t\\t\\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\\n\\n\\t\\t\\t// q is assumed to be normalized\\n\\n\\t\\t\\tthis.w = 2 * Math.acos( q.w );\\n\\n\\t\\t\\tvar s = Math.sqrt( 1 - q.w * q.w );\\n\\n\\t\\t\\tif ( s < 0.0001 ) {\\n\\n\\t\\t\\t\\tthis.x = 1;\\n\\t\\t\\t\\tthis.y = 0;\\n\\t\\t\\t\\tthis.z = 0;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.x = q.x / s;\\n\\t\\t\\t\\tthis.y = q.y / s;\\n\\t\\t\\t\\tthis.z = q.z / s;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetAxisAngleFromRotationMatrix: function ( m ) {\\n\\n\\t\\t\\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\\n\\n\\t\\t\\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\\n\\n\\t\\t\\tvar angle, x, y, z,\\t\\t// variables for result\\n\\t\\t\\t\\tepsilon = 0.01,\\t\\t// margin to allow for rounding errors\\n\\t\\t\\t\\tepsilon2 = 0.1,\\t\\t// margin to distinguish between 0 and 180 degrees\\n\\n\\t\\t\\t\\tte = m.elements,\\n\\n\\t\\t\\t\\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\\n\\t\\t\\t\\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\\n\\t\\t\\t\\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\\n\\n\\t\\t\\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\\n\\t\\t\\t ( Math.abs( m13 - m31 ) < epsilon ) &&\\n\\t\\t\\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\\n\\n\\t\\t\\t\\t// singularity found\\n\\t\\t\\t\\t// first check for identity matrix which must have +1 for all terms\\n\\t\\t\\t\\t// in leading diagonal and zero in other terms\\n\\n\\t\\t\\t\\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\\n\\t\\t\\t\\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\\n\\t\\t\\t\\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\\n\\t\\t\\t\\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\\n\\n\\t\\t\\t\\t\\t// this singularity is identity matrix so angle = 0\\n\\n\\t\\t\\t\\t\\tthis.set( 1, 0, 0, 0 );\\n\\n\\t\\t\\t\\t\\treturn this; // zero angle, arbitrary axis\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// otherwise this singularity is angle = 180\\n\\n\\t\\t\\t\\tangle = Math.PI;\\n\\n\\t\\t\\t\\tvar xx = ( m11 + 1 ) / 2;\\n\\t\\t\\t\\tvar yy = ( m22 + 1 ) / 2;\\n\\t\\t\\t\\tvar zz = ( m33 + 1 ) / 2;\\n\\t\\t\\t\\tvar xy = ( m12 + m21 ) / 4;\\n\\t\\t\\t\\tvar xz = ( m13 + m31 ) / 4;\\n\\t\\t\\t\\tvar yz = ( m23 + m32 ) / 4;\\n\\n\\t\\t\\t\\tif ( ( xx > yy ) && ( xx > zz ) ) {\\n\\n\\t\\t\\t\\t\\t// m11 is the largest diagonal term\\n\\n\\t\\t\\t\\t\\tif ( xx < epsilon ) {\\n\\n\\t\\t\\t\\t\\t\\tx = 0;\\n\\t\\t\\t\\t\\t\\ty = 0.707106781;\\n\\t\\t\\t\\t\\t\\tz = 0.707106781;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tx = Math.sqrt( xx );\\n\\t\\t\\t\\t\\t\\ty = xy / x;\\n\\t\\t\\t\\t\\t\\tz = xz / x;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( yy > zz ) {\\n\\n\\t\\t\\t\\t\\t// m22 is the largest diagonal term\\n\\n\\t\\t\\t\\t\\tif ( yy < epsilon ) {\\n\\n\\t\\t\\t\\t\\t\\tx = 0.707106781;\\n\\t\\t\\t\\t\\t\\ty = 0;\\n\\t\\t\\t\\t\\t\\tz = 0.707106781;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\ty = Math.sqrt( yy );\\n\\t\\t\\t\\t\\t\\tx = xy / y;\\n\\t\\t\\t\\t\\t\\tz = yz / y;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// m33 is the largest diagonal term so base result on this\\n\\n\\t\\t\\t\\t\\tif ( zz < epsilon ) {\\n\\n\\t\\t\\t\\t\\t\\tx = 0.707106781;\\n\\t\\t\\t\\t\\t\\ty = 0.707106781;\\n\\t\\t\\t\\t\\t\\tz = 0;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tz = Math.sqrt( zz );\\n\\t\\t\\t\\t\\t\\tx = xz / z;\\n\\t\\t\\t\\t\\t\\ty = yz / z;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.set( x, y, z, angle );\\n\\n\\t\\t\\t\\treturn this; // return 180 deg rotation\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// as we have reached here there are no singularities so we can handle normally\\n\\n\\t\\t\\tvar s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\\n\\t\\t\\t ( m13 - m31 ) * ( m13 - m31 ) +\\n\\t\\t\\t ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\\n\\n\\t\\t\\tif ( Math.abs( s ) < 0.001 ) s = 1;\\n\\n\\t\\t\\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\\n\\t\\t\\t// caught by singularity test above, but I've left it in just in case\\n\\n\\t\\t\\tthis.x = ( m32 - m23 ) / s;\\n\\t\\t\\tthis.y = ( m13 - m31 ) / s;\\n\\t\\t\\tthis.z = ( m21 - m12 ) / s;\\n\\t\\t\\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmin: function ( v ) {\\n\\n\\t\\t\\tthis.x = Math.min( this.x, v.x );\\n\\t\\t\\tthis.y = Math.min( this.y, v.y );\\n\\t\\t\\tthis.z = Math.min( this.z, v.z );\\n\\t\\t\\tthis.w = Math.min( this.w, v.w );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmax: function ( v ) {\\n\\n\\t\\t\\tthis.x = Math.max( this.x, v.x );\\n\\t\\t\\tthis.y = Math.max( this.y, v.y );\\n\\t\\t\\tthis.z = Math.max( this.z, v.z );\\n\\t\\t\\tthis.w = Math.max( this.w, v.w );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclamp: function ( min, max ) {\\n\\n\\t\\t\\t// assumes min < max, componentwise\\n\\n\\t\\t\\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\\n\\t\\t\\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\\n\\t\\t\\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\\n\\t\\t\\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclampScalar: function () {\\n\\n\\t\\t\\tvar min, max;\\n\\n\\t\\t\\treturn function clampScalar( minVal, maxVal ) {\\n\\n\\t\\t\\t\\tif ( min === undefined ) {\\n\\n\\t\\t\\t\\t\\tmin = new Vector4();\\n\\t\\t\\t\\t\\tmax = new Vector4();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tmin.set( minVal, minVal, minVal, minVal );\\n\\t\\t\\t\\tmax.set( maxVal, maxVal, maxVal, maxVal );\\n\\n\\t\\t\\t\\treturn this.clamp( min, max );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclampLength: function ( min, max ) {\\n\\n\\t\\t\\tvar length = this.length();\\n\\n\\t\\t\\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\\n\\n\\t\\t},\\n\\n\\t\\tfloor: function () {\\n\\n\\t\\t\\tthis.x = Math.floor( this.x );\\n\\t\\t\\tthis.y = Math.floor( this.y );\\n\\t\\t\\tthis.z = Math.floor( this.z );\\n\\t\\t\\tthis.w = Math.floor( this.w );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tceil: function () {\\n\\n\\t\\t\\tthis.x = Math.ceil( this.x );\\n\\t\\t\\tthis.y = Math.ceil( this.y );\\n\\t\\t\\tthis.z = Math.ceil( this.z );\\n\\t\\t\\tthis.w = Math.ceil( this.w );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tround: function () {\\n\\n\\t\\t\\tthis.x = Math.round( this.x );\\n\\t\\t\\tthis.y = Math.round( this.y );\\n\\t\\t\\tthis.z = Math.round( this.z );\\n\\t\\t\\tthis.w = Math.round( this.w );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\troundToZero: function () {\\n\\n\\t\\t\\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\\n\\t\\t\\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\\n\\t\\t\\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\\n\\t\\t\\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tnegate: function () {\\n\\n\\t\\t\\tthis.x = - this.x;\\n\\t\\t\\tthis.y = - this.y;\\n\\t\\t\\tthis.z = - this.z;\\n\\t\\t\\tthis.w = - this.w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdot: function ( v ) {\\n\\n\\t\\t\\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\\n\\n\\t\\t},\\n\\n\\t\\tlengthSq: function () {\\n\\n\\t\\t\\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\\n\\n\\t\\t},\\n\\n\\t\\tlength: function () {\\n\\n\\t\\t\\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\\n\\n\\t\\t},\\n\\n\\t\\tmanhattanLength: function () {\\n\\n\\t\\t\\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\\n\\n\\t\\t},\\n\\n\\t\\tnormalize: function () {\\n\\n\\t\\t\\treturn this.divideScalar( this.length() || 1 );\\n\\n\\t\\t},\\n\\n\\t\\tsetLength: function ( length ) {\\n\\n\\t\\t\\treturn this.normalize().multiplyScalar( length );\\n\\n\\t\\t},\\n\\n\\t\\tlerp: function ( v, alpha ) {\\n\\n\\t\\t\\tthis.x += ( v.x - this.x ) * alpha;\\n\\t\\t\\tthis.y += ( v.y - this.y ) * alpha;\\n\\t\\t\\tthis.z += ( v.z - this.z ) * alpha;\\n\\t\\t\\tthis.w += ( v.w - this.w ) * alpha;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tlerpVectors: function ( v1, v2, alpha ) {\\n\\n\\t\\t\\treturn this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 );\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( v ) {\\n\\n\\t\\t\\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tthis.x = array[ offset ];\\n\\t\\t\\tthis.y = array[ offset + 1 ];\\n\\t\\t\\tthis.z = array[ offset + 2 ];\\n\\t\\t\\tthis.w = array[ offset + 3 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tarray[ offset ] = this.x;\\n\\t\\t\\tarray[ offset + 1 ] = this.y;\\n\\t\\t\\tarray[ offset + 2 ] = this.z;\\n\\t\\t\\tarray[ offset + 3 ] = this.w;\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t},\\n\\n\\t\\tfromBufferAttribute: function ( attribute, index, offset ) {\\n\\n\\t\\t\\tif ( offset !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.x = attribute.getX( index );\\n\\t\\t\\tthis.y = attribute.getY( index );\\n\\t\\t\\tthis.z = attribute.getZ( index );\\n\\t\\t\\tthis.w = attribute.getW( index );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author szimek / https://github.com/szimek/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author Marius Kintel / https://github.com/kintel\\n\\t */\\n\\n\\t/*\\n\\t In options, we can specify:\\n\\t * Texture parameters for an auto-generated target texture\\n\\t * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\\n\\t*/\\n\\tfunction WebGLRenderTarget( width, height, options ) {\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.width = width;\\n\\t\\tthis.height = height;\\n\\n\\t\\tthis.scissor = new Vector4( 0, 0, width, height );\\n\\t\\tthis.scissorTest = false;\\n\\n\\t\\tthis.viewport = new Vector4( 0, 0, width, height );\\n\\n\\t\\toptions = options || {};\\n\\n\\t\\tif ( options.minFilter === undefined ) options.minFilter = LinearFilter;\\n\\n\\t\\tthis.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\\n\\n\\t\\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\\n\\t\\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true;\\n\\t\\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\\n\\n\\t}\\n\\n\\tWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\\n\\n\\t\\tconstructor: WebGLRenderTarget,\\n\\n\\t\\tisWebGLRenderTarget: true,\\n\\n\\t\\tsetSize: function ( width, height ) {\\n\\n\\t\\t\\tif ( this.width !== width || this.height !== height ) {\\n\\n\\t\\t\\t\\tthis.width = width;\\n\\t\\t\\t\\tthis.height = height;\\n\\n\\t\\t\\t\\tthis.dispose();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.viewport.set( 0, 0, width, height );\\n\\t\\t\\tthis.scissor.set( 0, 0, width, height );\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.width = source.width;\\n\\t\\t\\tthis.height = source.height;\\n\\n\\t\\t\\tthis.viewport.copy( source.viewport );\\n\\n\\t\\t\\tthis.texture = source.texture.clone();\\n\\n\\t\\t\\tthis.depthBuffer = source.depthBuffer;\\n\\t\\t\\tthis.stencilBuffer = source.stencilBuffer;\\n\\t\\t\\tthis.depthTexture = source.depthTexture;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdispose: function () {\\n\\n\\t\\t\\tthis.dispatchEvent( { type: 'dispose' } );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com\\n\\t */\\n\\n\\tfunction WebGLRenderTargetCube( width, height, options ) {\\n\\n\\t\\tWebGLRenderTarget.call( this, width, height, options );\\n\\n\\t\\tthis.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5\\n\\t\\tthis.activeMipMapLevel = 0;\\n\\n\\t}\\n\\n\\tWebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype );\\n\\tWebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube;\\n\\n\\tWebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true;\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\\n\\n\\t\\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\\n\\n\\t\\tthis.image = { data: data, width: width, height: height };\\n\\n\\t\\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\\n\\t\\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\\n\\n\\t\\tthis.generateMipmaps = false;\\n\\t\\tthis.flipY = false;\\n\\t\\tthis.unpackAlignment = 1;\\n\\n\\t}\\n\\n\\tDataTexture.prototype = Object.create( Texture.prototype );\\n\\tDataTexture.prototype.constructor = DataTexture;\\n\\n\\tDataTexture.prototype.isDataTexture = true;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\\n\\n\\t\\timages = images !== undefined ? images : [];\\n\\t\\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\\n\\n\\t\\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\\n\\n\\t\\tthis.flipY = false;\\n\\n\\t}\\n\\n\\tCubeTexture.prototype = Object.create( Texture.prototype );\\n\\tCubeTexture.prototype.constructor = CubeTexture;\\n\\n\\tCubeTexture.prototype.isCubeTexture = true;\\n\\n\\tObject.defineProperty( CubeTexture.prototype, 'images', {\\n\\n\\t\\tget: function () {\\n\\n\\t\\t\\treturn this.image;\\n\\n\\t\\t},\\n\\n\\t\\tset: function ( value ) {\\n\\n\\t\\t\\tthis.image = value;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author tschw\\n\\t *\\n\\t * Uniforms of a program.\\n\\t * Those form a tree structure with a special top-level container for the root,\\n\\t * which you get by calling 'new WebGLUniforms( gl, program, renderer )'.\\n\\t *\\n\\t *\\n\\t * Properties of inner nodes including the top-level container:\\n\\t *\\n\\t * .seq - array of nested uniforms\\n\\t * .map - nested uniforms by name\\n\\t *\\n\\t *\\n\\t * Methods of all nodes except the top-level container:\\n\\t *\\n\\t * .setValue( gl, value, [renderer] )\\n\\t *\\n\\t * \\t\\tuploads a uniform value(s)\\n\\t * \\tthe 'renderer' parameter is needed for sampler uniforms\\n\\t *\\n\\t *\\n\\t * Static methods of the top-level container (renderer factorizations):\\n\\t *\\n\\t * .upload( gl, seq, values, renderer )\\n\\t *\\n\\t * \\t\\tsets uniforms in 'seq' to 'values[id].value'\\n\\t *\\n\\t * .seqWithValue( seq, values ) : filteredSeq\\n\\t *\\n\\t * \\t\\tfilters 'seq' entries with corresponding entry in values\\n\\t *\\n\\t *\\n\\t * Methods of the top-level container (renderer factorizations):\\n\\t *\\n\\t * .setValue( gl, name, value )\\n\\t *\\n\\t * \\t\\tsets uniform with name 'name' to 'value'\\n\\t *\\n\\t * .set( gl, obj, prop )\\n\\t *\\n\\t * \\t\\tsets uniform from object and property with same name than uniform\\n\\t *\\n\\t * .setOptional( gl, obj, prop )\\n\\t *\\n\\t * \\t\\tlike .set for an optional property of the object\\n\\t *\\n\\t */\\n\\n\\tvar emptyTexture = new Texture();\\n\\tvar emptyCubeTexture = new CubeTexture();\\n\\n\\t// --- Base for inner nodes (including the root) ---\\n\\n\\tfunction UniformContainer() {\\n\\n\\t\\tthis.seq = [];\\n\\t\\tthis.map = {};\\n\\n\\t}\\n\\n\\t// --- Utilities ---\\n\\n\\t// Array Caches (provide typed arrays for temporary by size)\\n\\n\\tvar arrayCacheF32 = [];\\n\\tvar arrayCacheI32 = [];\\n\\n\\t// Float32Array caches used for uploading Matrix uniforms\\n\\n\\tvar mat4array = new Float32Array( 16 );\\n\\tvar mat3array = new Float32Array( 9 );\\n\\n\\t// Flattening for arrays of vectors and matrices\\n\\n\\tfunction flatten( array, nBlocks, blockSize ) {\\n\\n\\t\\tvar firstElem = array[ 0 ];\\n\\n\\t\\tif ( firstElem <= 0 || firstElem > 0 ) return array;\\n\\t\\t// unoptimized: ! isNaN( firstElem )\\n\\t\\t// see http://jacksondunstan.com/articles/983\\n\\n\\t\\tvar n = nBlocks * blockSize,\\n\\t\\t\\tr = arrayCacheF32[ n ];\\n\\n\\t\\tif ( r === undefined ) {\\n\\n\\t\\t\\tr = new Float32Array( n );\\n\\t\\t\\tarrayCacheF32[ n ] = r;\\n\\n\\t\\t}\\n\\n\\t\\tif ( nBlocks !== 0 ) {\\n\\n\\t\\t\\tfirstElem.toArray( r, 0 );\\n\\n\\t\\t\\tfor ( var i = 1, offset = 0; i !== nBlocks; ++ i ) {\\n\\n\\t\\t\\t\\toffset += blockSize;\\n\\t\\t\\t\\tarray[ i ].toArray( r, offset );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\treturn r;\\n\\n\\t}\\n\\n\\t// Texture unit allocation\\n\\n\\tfunction allocTexUnits( renderer, n ) {\\n\\n\\t\\tvar r = arrayCacheI32[ n ];\\n\\n\\t\\tif ( r === undefined ) {\\n\\n\\t\\t\\tr = new Int32Array( n );\\n\\t\\t\\tarrayCacheI32[ n ] = r;\\n\\n\\t\\t}\\n\\n\\t\\tfor ( var i = 0; i !== n; ++ i )\\n\\t\\t\\tr[ i ] = renderer.allocTextureUnit();\\n\\n\\t\\treturn r;\\n\\n\\t}\\n\\n\\t// --- Setters ---\\n\\n\\t// Note: Defining these methods externally, because they come in a bunch\\n\\t// and this way their names minify.\\n\\n\\t// Single scalar\\n\\n\\tfunction setValue1f( gl, v ) {\\n\\n\\t\\tgl.uniform1f( this.addr, v );\\n\\n\\t}\\n\\n\\tfunction setValue1i( gl, v ) {\\n\\n\\t\\tgl.uniform1i( this.addr, v );\\n\\n\\t}\\n\\n\\t// Single float vector (from flat array or THREE.VectorN)\\n\\n\\tfunction setValue2fv( gl, v ) {\\n\\n\\t\\tif ( v.x === undefined ) {\\n\\n\\t\\t\\tgl.uniform2fv( this.addr, v );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tgl.uniform2f( this.addr, v.x, v.y );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tfunction setValue3fv( gl, v ) {\\n\\n\\t\\tif ( v.x !== undefined ) {\\n\\n\\t\\t\\tgl.uniform3f( this.addr, v.x, v.y, v.z );\\n\\n\\t\\t} else if ( v.r !== undefined ) {\\n\\n\\t\\t\\tgl.uniform3f( this.addr, v.r, v.g, v.b );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tgl.uniform3fv( this.addr, v );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tfunction setValue4fv( gl, v ) {\\n\\n\\t\\tif ( v.x === undefined ) {\\n\\n\\t\\t\\tgl.uniform4fv( this.addr, v );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\t gl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Single matrix (from flat array or MatrixN)\\n\\n\\tfunction setValue2fm( gl, v ) {\\n\\n\\t\\tgl.uniformMatrix2fv( this.addr, false, v.elements || v );\\n\\n\\t}\\n\\n\\tfunction setValue3fm( gl, v ) {\\n\\n\\t\\tif ( v.elements === undefined ) {\\n\\n\\t\\t\\tgl.uniformMatrix3fv( this.addr, false, v );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tmat3array.set( v.elements );\\n\\t\\t\\tgl.uniformMatrix3fv( this.addr, false, mat3array );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tfunction setValue4fm( gl, v ) {\\n\\n\\t\\tif ( v.elements === undefined ) {\\n\\n\\t\\t\\tgl.uniformMatrix4fv( this.addr, false, v );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tmat4array.set( v.elements );\\n\\t\\t\\tgl.uniformMatrix4fv( this.addr, false, mat4array );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Single texture (2D / Cube)\\n\\n\\tfunction setValueT1( gl, v, renderer ) {\\n\\n\\t\\tvar unit = renderer.allocTextureUnit();\\n\\t\\tgl.uniform1i( this.addr, unit );\\n\\t\\trenderer.setTexture2D( v || emptyTexture, unit );\\n\\n\\t}\\n\\n\\tfunction setValueT6( gl, v, renderer ) {\\n\\n\\t\\tvar unit = renderer.allocTextureUnit();\\n\\t\\tgl.uniform1i( this.addr, unit );\\n\\t\\trenderer.setTextureCube( v || emptyCubeTexture, unit );\\n\\n\\t}\\n\\n\\t// Integer / Boolean vectors or arrays thereof (always flat arrays)\\n\\n\\tfunction setValue2iv( gl, v ) {\\n\\n\\t\\tgl.uniform2iv( this.addr, v );\\n\\n\\t}\\n\\n\\tfunction setValue3iv( gl, v ) {\\n\\n\\t\\tgl.uniform3iv( this.addr, v );\\n\\n\\t}\\n\\n\\tfunction setValue4iv( gl, v ) {\\n\\n\\t\\tgl.uniform4iv( this.addr, v );\\n\\n\\t}\\n\\n\\t// Helper to pick the right setter for the singular case\\n\\n\\tfunction getSingularSetter( type ) {\\n\\n\\t\\tswitch ( type ) {\\n\\n\\t\\t\\tcase 0x1406: return setValue1f; // FLOAT\\n\\t\\t\\tcase 0x8b50: return setValue2fv; // _VEC2\\n\\t\\t\\tcase 0x8b51: return setValue3fv; // _VEC3\\n\\t\\t\\tcase 0x8b52: return setValue4fv; // _VEC4\\n\\n\\t\\t\\tcase 0x8b5a: return setValue2fm; // _MAT2\\n\\t\\t\\tcase 0x8b5b: return setValue3fm; // _MAT3\\n\\t\\t\\tcase 0x8b5c: return setValue4fm; // _MAT4\\n\\n\\t\\t\\tcase 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES\\n\\t\\t\\tcase 0x8b60: return setValueT6; // SAMPLER_CUBE\\n\\n\\t\\t\\tcase 0x1404: case 0x8b56: return setValue1i; // INT, BOOL\\n\\t\\t\\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\\n\\t\\t\\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\\n\\t\\t\\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Array of scalars\\n\\n\\tfunction setValue1fv( gl, v ) {\\n\\n\\t\\tgl.uniform1fv( this.addr, v );\\n\\n\\t}\\n\\tfunction setValue1iv( gl, v ) {\\n\\n\\t\\tgl.uniform1iv( this.addr, v );\\n\\n\\t}\\n\\n\\t// Array of vectors (flat or from THREE classes)\\n\\n\\tfunction setValueV2a( gl, v ) {\\n\\n\\t\\tgl.uniform2fv( this.addr, flatten( v, this.size, 2 ) );\\n\\n\\t}\\n\\n\\tfunction setValueV3a( gl, v ) {\\n\\n\\t\\tgl.uniform3fv( this.addr, flatten( v, this.size, 3 ) );\\n\\n\\t}\\n\\n\\tfunction setValueV4a( gl, v ) {\\n\\n\\t\\tgl.uniform4fv( this.addr, flatten( v, this.size, 4 ) );\\n\\n\\t}\\n\\n\\t// Array of matrices (flat or from THREE clases)\\n\\n\\tfunction setValueM2a( gl, v ) {\\n\\n\\t\\tgl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) );\\n\\n\\t}\\n\\n\\tfunction setValueM3a( gl, v ) {\\n\\n\\t\\tgl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) );\\n\\n\\t}\\n\\n\\tfunction setValueM4a( gl, v ) {\\n\\n\\t\\tgl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) );\\n\\n\\t}\\n\\n\\t// Array of textures (2D / Cube)\\n\\n\\tfunction setValueT1a( gl, v, renderer ) {\\n\\n\\t\\tvar n = v.length,\\n\\t\\t\\tunits = allocTexUnits( renderer, n );\\n\\n\\t\\tgl.uniform1iv( this.addr, units );\\n\\n\\t\\tfor ( var i = 0; i !== n; ++ i ) {\\n\\n\\t\\t\\trenderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tfunction setValueT6a( gl, v, renderer ) {\\n\\n\\t\\tvar n = v.length,\\n\\t\\t\\tunits = allocTexUnits( renderer, n );\\n\\n\\t\\tgl.uniform1iv( this.addr, units );\\n\\n\\t\\tfor ( var i = 0; i !== n; ++ i ) {\\n\\n\\t\\t\\trenderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Helper to pick the right setter for a pure (bottom-level) array\\n\\n\\tfunction getPureArraySetter( type ) {\\n\\n\\t\\tswitch ( type ) {\\n\\n\\t\\t\\tcase 0x1406: return setValue1fv; // FLOAT\\n\\t\\t\\tcase 0x8b50: return setValueV2a; // _VEC2\\n\\t\\t\\tcase 0x8b51: return setValueV3a; // _VEC3\\n\\t\\t\\tcase 0x8b52: return setValueV4a; // _VEC4\\n\\n\\t\\t\\tcase 0x8b5a: return setValueM2a; // _MAT2\\n\\t\\t\\tcase 0x8b5b: return setValueM3a; // _MAT3\\n\\t\\t\\tcase 0x8b5c: return setValueM4a; // _MAT4\\n\\n\\t\\t\\tcase 0x8b5e: return setValueT1a; // SAMPLER_2D\\n\\t\\t\\tcase 0x8b60: return setValueT6a; // SAMPLER_CUBE\\n\\n\\t\\t\\tcase 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL\\n\\t\\t\\tcase 0x8b53: case 0x8b57: return setValue2iv; // _VEC2\\n\\t\\t\\tcase 0x8b54: case 0x8b58: return setValue3iv; // _VEC3\\n\\t\\t\\tcase 0x8b55: case 0x8b59: return setValue4iv; // _VEC4\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// --- Uniform Classes ---\\n\\n\\tfunction SingleUniform( id, activeInfo, addr ) {\\n\\n\\t\\tthis.id = id;\\n\\t\\tthis.addr = addr;\\n\\t\\tthis.setValue = getSingularSetter( activeInfo.type );\\n\\n\\t\\t// this.path = activeInfo.name; // DEBUG\\n\\n\\t}\\n\\n\\tfunction PureArrayUniform( id, activeInfo, addr ) {\\n\\n\\t\\tthis.id = id;\\n\\t\\tthis.addr = addr;\\n\\t\\tthis.size = activeInfo.size;\\n\\t\\tthis.setValue = getPureArraySetter( activeInfo.type );\\n\\n\\t\\t// this.path = activeInfo.name; // DEBUG\\n\\n\\t}\\n\\n\\tfunction StructuredUniform( id ) {\\n\\n\\t\\tthis.id = id;\\n\\n\\t\\tUniformContainer.call( this ); // mix-in\\n\\n\\t}\\n\\n\\tStructuredUniform.prototype.setValue = function ( gl, value ) {\\n\\n\\t\\t// Note: Don't need an extra 'renderer' parameter, since samplers\\n\\t\\t// are not allowed in structured uniforms.\\n\\n\\t\\tvar seq = this.seq;\\n\\n\\t\\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\\n\\n\\t\\t\\tvar u = seq[ i ];\\n\\t\\t\\tu.setValue( gl, value[ u.id ] );\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t// --- Top-level ---\\n\\n\\t// Parser - builds up the property tree from the path strings\\n\\n\\tvar RePathPart = /([\\\\w\\\\d_]+)(\\\\])?(\\\\[|\\\\.)?/g;\\n\\n\\t// extracts\\n\\t// \\t- the identifier (member name or array index)\\n\\t// - followed by an optional right bracket (found when array index)\\n\\t// - followed by an optional left bracket or dot (type of subscript)\\n\\t//\\n\\t// Note: These portions can be read in a non-overlapping fashion and\\n\\t// allow straightforward parsing of the hierarchy that WebGL encodes\\n\\t// in the uniform names.\\n\\n\\tfunction addUniform( container, uniformObject ) {\\n\\n\\t\\tcontainer.seq.push( uniformObject );\\n\\t\\tcontainer.map[ uniformObject.id ] = uniformObject;\\n\\n\\t}\\n\\n\\tfunction parseUniform( activeInfo, addr, container ) {\\n\\n\\t\\tvar path = activeInfo.name,\\n\\t\\t\\tpathLength = path.length;\\n\\n\\t\\t// reset RegExp object, because of the early exit of a previous run\\n\\t\\tRePathPart.lastIndex = 0;\\n\\n\\t\\tfor ( ; ; ) {\\n\\n\\t\\t\\tvar match = RePathPart.exec( path ),\\n\\t\\t\\t\\tmatchEnd = RePathPart.lastIndex,\\n\\n\\t\\t\\t\\tid = match[ 1 ],\\n\\t\\t\\t\\tidIsIndex = match[ 2 ] === ']',\\n\\t\\t\\t\\tsubscript = match[ 3 ];\\n\\n\\t\\t\\tif ( idIsIndex ) id = id | 0; // convert to integer\\n\\n\\t\\t\\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\\n\\n\\t\\t\\t\\t// bare name or \\\"pure\\\" bottom-level array \\\"[0]\\\" suffix\\n\\n\\t\\t\\t\\taddUniform( container, subscript === undefined ?\\n\\t\\t\\t\\t\\tnew SingleUniform( id, activeInfo, addr ) :\\n\\t\\t\\t\\t\\tnew PureArrayUniform( id, activeInfo, addr ) );\\n\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// step into inner node / create it in case it doesn't exist\\n\\n\\t\\t\\t\\tvar map = container.map, next = map[ id ];\\n\\n\\t\\t\\t\\tif ( next === undefined ) {\\n\\n\\t\\t\\t\\t\\tnext = new StructuredUniform( id );\\n\\t\\t\\t\\t\\taddUniform( container, next );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcontainer = next;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Root Container\\n\\n\\tfunction WebGLUniforms( gl, program, renderer ) {\\n\\n\\t\\tUniformContainer.call( this );\\n\\n\\t\\tthis.renderer = renderer;\\n\\n\\t\\tvar n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\\n\\n\\t\\tfor ( var i = 0; i < n; ++ i ) {\\n\\n\\t\\t\\tvar info = gl.getActiveUniform( program, i ),\\n\\t\\t\\t\\tpath = info.name,\\n\\t\\t\\t\\taddr = gl.getUniformLocation( program, path );\\n\\n\\t\\t\\tparseUniform( info, addr, this );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tWebGLUniforms.prototype.setValue = function ( gl, name, value ) {\\n\\n\\t\\tvar u = this.map[ name ];\\n\\n\\t\\tif ( u !== undefined ) u.setValue( gl, value, this.renderer );\\n\\n\\t};\\n\\n\\tWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\\n\\n\\t\\tvar v = object[ name ];\\n\\n\\t\\tif ( v !== undefined ) this.setValue( gl, name, v );\\n\\n\\t};\\n\\n\\n\\t// Static interface\\n\\n\\tWebGLUniforms.upload = function ( gl, seq, values, renderer ) {\\n\\n\\t\\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\\n\\n\\t\\t\\tvar u = seq[ i ],\\n\\t\\t\\t\\tv = values[ u.id ];\\n\\n\\t\\t\\tif ( v.needsUpdate !== false ) {\\n\\n\\t\\t\\t\\t// note: always updating when .needsUpdate is undefined\\n\\t\\t\\t\\tu.setValue( gl, v.value, renderer );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\tWebGLUniforms.seqWithValue = function ( seq, values ) {\\n\\n\\t\\tvar r = [];\\n\\n\\t\\tfor ( var i = 0, n = seq.length; i !== n; ++ i ) {\\n\\n\\t\\t\\tvar u = seq[ i ];\\n\\t\\t\\tif ( u.id in values ) r.push( u );\\n\\n\\t\\t}\\n\\n\\t\\treturn r;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tvar ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\\n\\t\\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\\n\\t\\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\\n\\t\\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\\n\\t\\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\\n\\t\\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\\n\\t\\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\\n\\t\\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\\n\\t\\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\\n\\t\\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\\n\\t\\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\\n\\t\\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\\n\\t\\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\\n\\t\\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\\n\\t\\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\\n\\t\\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\\n\\t\\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\\n\\t\\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\\n\\t\\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\\n\\t\\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\\n\\t\\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\\n\\t\\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\\n\\t\\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\\n\\t\\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\\n\\n\\tfunction Color( r, g, b ) {\\n\\n\\t\\tif ( g === undefined && b === undefined ) {\\n\\n\\t\\t\\t// r is THREE.Color, hex or string\\n\\t\\t\\treturn this.set( r );\\n\\n\\t\\t}\\n\\n\\t\\treturn this.setRGB( r, g, b );\\n\\n\\t}\\n\\n\\tObject.assign( Color.prototype, {\\n\\n\\t\\tisColor: true,\\n\\n\\t\\tr: 1, g: 1, b: 1,\\n\\n\\t\\tset: function ( value ) {\\n\\n\\t\\t\\tif ( value && value.isColor ) {\\n\\n\\t\\t\\t\\tthis.copy( value );\\n\\n\\t\\t\\t} else if ( typeof value === 'number' ) {\\n\\n\\t\\t\\t\\tthis.setHex( value );\\n\\n\\t\\t\\t} else if ( typeof value === 'string' ) {\\n\\n\\t\\t\\t\\tthis.setStyle( value );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.r = scalar;\\n\\t\\t\\tthis.g = scalar;\\n\\t\\t\\tthis.b = scalar;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetHex: function ( hex ) {\\n\\n\\t\\t\\thex = Math.floor( hex );\\n\\n\\t\\t\\tthis.r = ( hex >> 16 & 255 ) / 255;\\n\\t\\t\\tthis.g = ( hex >> 8 & 255 ) / 255;\\n\\t\\t\\tthis.b = ( hex & 255 ) / 255;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetRGB: function ( r, g, b ) {\\n\\n\\t\\t\\tthis.r = r;\\n\\t\\t\\tthis.g = g;\\n\\t\\t\\tthis.b = b;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetHSL: function () {\\n\\n\\t\\t\\tfunction hue2rgb( p, q, t ) {\\n\\n\\t\\t\\t\\tif ( t < 0 ) t += 1;\\n\\t\\t\\t\\tif ( t > 1 ) t -= 1;\\n\\t\\t\\t\\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\\n\\t\\t\\t\\tif ( t < 1 / 2 ) return q;\\n\\t\\t\\t\\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\\n\\t\\t\\t\\treturn p;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn function setHSL( h, s, l ) {\\n\\n\\t\\t\\t\\t// h,s,l ranges are in 0.0 - 1.0\\n\\t\\t\\t\\th = _Math.euclideanModulo( h, 1 );\\n\\t\\t\\t\\ts = _Math.clamp( s, 0, 1 );\\n\\t\\t\\t\\tl = _Math.clamp( l, 0, 1 );\\n\\n\\t\\t\\t\\tif ( s === 0 ) {\\n\\n\\t\\t\\t\\t\\tthis.r = this.g = this.b = l;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvar p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\\n\\t\\t\\t\\t\\tvar q = ( 2 * l ) - p;\\n\\n\\t\\t\\t\\t\\tthis.r = hue2rgb( q, p, h + 1 / 3 );\\n\\t\\t\\t\\t\\tthis.g = hue2rgb( q, p, h );\\n\\t\\t\\t\\t\\tthis.b = hue2rgb( q, p, h - 1 / 3 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tsetStyle: function ( style ) {\\n\\n\\t\\t\\tfunction handleAlpha( string ) {\\n\\n\\t\\t\\t\\tif ( string === undefined ) return;\\n\\n\\t\\t\\t\\tif ( parseFloat( string ) < 1 ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\n\\t\\t\\tvar m;\\n\\n\\t\\t\\tif ( m = /^((?:rgb|hsl)a?)\\\\(\\\\s*([^\\\\)]*)\\\\)/.exec( style ) ) {\\n\\n\\t\\t\\t\\t// rgb / hsl\\n\\n\\t\\t\\t\\tvar color;\\n\\t\\t\\t\\tvar name = m[ 1 ];\\n\\t\\t\\t\\tvar components = m[ 2 ];\\n\\n\\t\\t\\t\\tswitch ( name ) {\\n\\n\\t\\t\\t\\t\\tcase 'rgb':\\n\\t\\t\\t\\t\\tcase 'rgba':\\n\\n\\t\\t\\t\\t\\t\\tif ( color = /^(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*,\\\\s*(\\\\d+)\\\\s*(,\\\\s*([0-9]*\\\\.?[0-9]+)\\\\s*)?$/.exec( components ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// rgb(255,0,0) rgba(255,0,0,0.5)\\n\\t\\t\\t\\t\\t\\t\\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\\n\\t\\t\\t\\t\\t\\t\\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\\n\\t\\t\\t\\t\\t\\t\\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\\n\\n\\t\\t\\t\\t\\t\\t\\thandleAlpha( color[ 5 ] );\\n\\n\\t\\t\\t\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( color = /^(\\\\d+)\\\\%\\\\s*,\\\\s*(\\\\d+)\\\\%\\\\s*,\\\\s*(\\\\d+)\\\\%\\\\s*(,\\\\s*([0-9]*\\\\.?[0-9]+)\\\\s*)?$/.exec( components ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\\n\\t\\t\\t\\t\\t\\t\\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\\n\\t\\t\\t\\t\\t\\t\\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\\n\\t\\t\\t\\t\\t\\t\\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\\n\\n\\t\\t\\t\\t\\t\\t\\thandleAlpha( color[ 5 ] );\\n\\n\\t\\t\\t\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'hsl':\\n\\t\\t\\t\\t\\tcase 'hsla':\\n\\n\\t\\t\\t\\t\\t\\tif ( color = /^([0-9]*\\\\.?[0-9]+)\\\\s*,\\\\s*(\\\\d+)\\\\%\\\\s*,\\\\s*(\\\\d+)\\\\%\\\\s*(,\\\\s*([0-9]*\\\\.?[0-9]+)\\\\s*)?$/.exec( components ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\\n\\t\\t\\t\\t\\t\\t\\tvar h = parseFloat( color[ 1 ] ) / 360;\\n\\t\\t\\t\\t\\t\\t\\tvar s = parseInt( color[ 2 ], 10 ) / 100;\\n\\t\\t\\t\\t\\t\\t\\tvar l = parseInt( color[ 3 ], 10 ) / 100;\\n\\n\\t\\t\\t\\t\\t\\t\\thandleAlpha( color[ 5 ] );\\n\\n\\t\\t\\t\\t\\t\\t\\treturn this.setHSL( h, s, l );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( m = /^\\\\#([A-Fa-f0-9]+)$/.exec( style ) ) {\\n\\n\\t\\t\\t\\t// hex color\\n\\n\\t\\t\\t\\tvar hex = m[ 1 ];\\n\\t\\t\\t\\tvar size = hex.length;\\n\\n\\t\\t\\t\\tif ( size === 3 ) {\\n\\n\\t\\t\\t\\t\\t// #ff0\\n\\t\\t\\t\\t\\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\\n\\t\\t\\t\\t\\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\\n\\t\\t\\t\\t\\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\\n\\n\\t\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t\\t} else if ( size === 6 ) {\\n\\n\\t\\t\\t\\t\\t// #ff0000\\n\\t\\t\\t\\t\\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\\n\\t\\t\\t\\t\\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\\n\\t\\t\\t\\t\\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\\n\\n\\t\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( style && style.length > 0 ) {\\n\\n\\t\\t\\t\\t// color keywords\\n\\t\\t\\t\\tvar hex = ColorKeywords[ style ];\\n\\n\\t\\t\\t\\tif ( hex !== undefined ) {\\n\\n\\t\\t\\t\\t\\t// red\\n\\t\\t\\t\\t\\tthis.setHex( hex );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// unknown color\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.Color: Unknown color ' + style );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.r, this.g, this.b );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( color ) {\\n\\n\\t\\t\\tthis.r = color.r;\\n\\t\\t\\tthis.g = color.g;\\n\\t\\t\\tthis.b = color.b;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyGammaToLinear: function ( color, gammaFactor ) {\\n\\n\\t\\t\\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\\n\\n\\t\\t\\tthis.r = Math.pow( color.r, gammaFactor );\\n\\t\\t\\tthis.g = Math.pow( color.g, gammaFactor );\\n\\t\\t\\tthis.b = Math.pow( color.b, gammaFactor );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyLinearToGamma: function ( color, gammaFactor ) {\\n\\n\\t\\t\\tif ( gammaFactor === undefined ) gammaFactor = 2.0;\\n\\n\\t\\t\\tvar safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\\n\\n\\t\\t\\tthis.r = Math.pow( color.r, safeInverse );\\n\\t\\t\\tthis.g = Math.pow( color.g, safeInverse );\\n\\t\\t\\tthis.b = Math.pow( color.b, safeInverse );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tconvertGammaToLinear: function () {\\n\\n\\t\\t\\tvar r = this.r, g = this.g, b = this.b;\\n\\n\\t\\t\\tthis.r = r * r;\\n\\t\\t\\tthis.g = g * g;\\n\\t\\t\\tthis.b = b * b;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tconvertLinearToGamma: function () {\\n\\n\\t\\t\\tthis.r = Math.sqrt( this.r );\\n\\t\\t\\tthis.g = Math.sqrt( this.g );\\n\\t\\t\\tthis.b = Math.sqrt( this.b );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetHex: function () {\\n\\n\\t\\t\\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\\n\\n\\t\\t},\\n\\n\\t\\tgetHexString: function () {\\n\\n\\t\\t\\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\\n\\n\\t\\t},\\n\\n\\t\\tgetHSL: function ( optionalTarget ) {\\n\\n\\t\\t\\t// h,s,l ranges are in 0.0 - 1.0\\n\\n\\t\\t\\tvar hsl = optionalTarget || { h: 0, s: 0, l: 0 };\\n\\n\\t\\t\\tvar r = this.r, g = this.g, b = this.b;\\n\\n\\t\\t\\tvar max = Math.max( r, g, b );\\n\\t\\t\\tvar min = Math.min( r, g, b );\\n\\n\\t\\t\\tvar hue, saturation;\\n\\t\\t\\tvar lightness = ( min + max ) / 2.0;\\n\\n\\t\\t\\tif ( min === max ) {\\n\\n\\t\\t\\t\\thue = 0;\\n\\t\\t\\t\\tsaturation = 0;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tvar delta = max - min;\\n\\n\\t\\t\\t\\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\\n\\n\\t\\t\\t\\tswitch ( max ) {\\n\\n\\t\\t\\t\\t\\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\\n\\t\\t\\t\\t\\tcase g: hue = ( b - r ) / delta + 2; break;\\n\\t\\t\\t\\t\\tcase b: hue = ( r - g ) / delta + 4; break;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\thue /= 6;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\thsl.h = hue;\\n\\t\\t\\thsl.s = saturation;\\n\\t\\t\\thsl.l = lightness;\\n\\n\\t\\t\\treturn hsl;\\n\\n\\t\\t},\\n\\n\\t\\tgetStyle: function () {\\n\\n\\t\\t\\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\\n\\n\\t\\t},\\n\\n\\t\\toffsetHSL: function ( h, s, l ) {\\n\\n\\t\\t\\tvar hsl = this.getHSL();\\n\\n\\t\\t\\thsl.h += h; hsl.s += s; hsl.l += l;\\n\\n\\t\\t\\tthis.setHSL( hsl.h, hsl.s, hsl.l );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tadd: function ( color ) {\\n\\n\\t\\t\\tthis.r += color.r;\\n\\t\\t\\tthis.g += color.g;\\n\\t\\t\\tthis.b += color.b;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddColors: function ( color1, color2 ) {\\n\\n\\t\\t\\tthis.r = color1.r + color2.r;\\n\\t\\t\\tthis.g = color1.g + color2.g;\\n\\t\\t\\tthis.b = color1.b + color2.b;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddScalar: function ( s ) {\\n\\n\\t\\t\\tthis.r += s;\\n\\t\\t\\tthis.g += s;\\n\\t\\t\\tthis.b += s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsub: function ( color ) {\\n\\n\\t\\t\\tthis.r = Math.max( 0, this.r - color.r );\\n\\t\\t\\tthis.g = Math.max( 0, this.g - color.g );\\n\\t\\t\\tthis.b = Math.max( 0, this.b - color.b );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiply: function ( color ) {\\n\\n\\t\\t\\tthis.r *= color.r;\\n\\t\\t\\tthis.g *= color.g;\\n\\t\\t\\tthis.b *= color.b;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmultiplyScalar: function ( s ) {\\n\\n\\t\\t\\tthis.r *= s;\\n\\t\\t\\tthis.g *= s;\\n\\t\\t\\tthis.b *= s;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tlerp: function ( color, alpha ) {\\n\\n\\t\\t\\tthis.r += ( color.r - this.r ) * alpha;\\n\\t\\t\\tthis.g += ( color.g - this.g ) * alpha;\\n\\t\\t\\tthis.b += ( color.b - this.b ) * alpha;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( c ) {\\n\\n\\t\\t\\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tthis.r = array[ offset ];\\n\\t\\t\\tthis.g = array[ offset + 1 ];\\n\\t\\t\\tthis.b = array[ offset + 2 ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tarray[ offset ] = this.r;\\n\\t\\t\\tarray[ offset + 1 ] = this.g;\\n\\t\\t\\tarray[ offset + 2 ] = this.b;\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\treturn this.getHex();\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * Uniforms library for shared webgl shaders\\n\\t */\\n\\n\\tvar UniformsLib = {\\n\\n\\t\\tcommon: {\\n\\n\\t\\t\\tdiffuse: { value: new Color( 0xeeeeee ) },\\n\\t\\t\\topacity: { value: 1.0 },\\n\\n\\t\\t\\tmap: { value: null },\\n\\t\\t\\tuvTransform: { value: new Matrix3() },\\n\\n\\t\\t\\talphaMap: { value: null },\\n\\n\\t\\t},\\n\\n\\t\\tspecularmap: {\\n\\n\\t\\t\\tspecularMap: { value: null },\\n\\n\\t\\t},\\n\\n\\t\\tenvmap: {\\n\\n\\t\\t\\tenvMap: { value: null },\\n\\t\\t\\tflipEnvMap: { value: - 1 },\\n\\t\\t\\treflectivity: { value: 1.0 },\\n\\t\\t\\trefractionRatio: { value: 0.98 }\\n\\n\\t\\t},\\n\\n\\t\\taomap: {\\n\\n\\t\\t\\taoMap: { value: null },\\n\\t\\t\\taoMapIntensity: { value: 1 }\\n\\n\\t\\t},\\n\\n\\t\\tlightmap: {\\n\\n\\t\\t\\tlightMap: { value: null },\\n\\t\\t\\tlightMapIntensity: { value: 1 }\\n\\n\\t\\t},\\n\\n\\t\\temissivemap: {\\n\\n\\t\\t\\temissiveMap: { value: null }\\n\\n\\t\\t},\\n\\n\\t\\tbumpmap: {\\n\\n\\t\\t\\tbumpMap: { value: null },\\n\\t\\t\\tbumpScale: { value: 1 }\\n\\n\\t\\t},\\n\\n\\t\\tnormalmap: {\\n\\n\\t\\t\\tnormalMap: { value: null },\\n\\t\\t\\tnormalScale: { value: new Vector2( 1, 1 ) }\\n\\n\\t\\t},\\n\\n\\t\\tdisplacementmap: {\\n\\n\\t\\t\\tdisplacementMap: { value: null },\\n\\t\\t\\tdisplacementScale: { value: 1 },\\n\\t\\t\\tdisplacementBias: { value: 0 }\\n\\n\\t\\t},\\n\\n\\t\\troughnessmap: {\\n\\n\\t\\t\\troughnessMap: { value: null }\\n\\n\\t\\t},\\n\\n\\t\\tmetalnessmap: {\\n\\n\\t\\t\\tmetalnessMap: { value: null }\\n\\n\\t\\t},\\n\\n\\t\\tgradientmap: {\\n\\n\\t\\t\\tgradientMap: { value: null }\\n\\n\\t\\t},\\n\\n\\t\\tfog: {\\n\\n\\t\\t\\tfogDensity: { value: 0.00025 },\\n\\t\\t\\tfogNear: { value: 1 },\\n\\t\\t\\tfogFar: { value: 2000 },\\n\\t\\t\\tfogColor: { value: new Color( 0xffffff ) }\\n\\n\\t\\t},\\n\\n\\t\\tlights: {\\n\\n\\t\\t\\tambientLightColor: { value: [] },\\n\\n\\t\\t\\tdirectionalLights: { value: [], properties: {\\n\\t\\t\\t\\tdirection: {},\\n\\t\\t\\t\\tcolor: {},\\n\\n\\t\\t\\t\\tshadow: {},\\n\\t\\t\\t\\tshadowBias: {},\\n\\t\\t\\t\\tshadowRadius: {},\\n\\t\\t\\t\\tshadowMapSize: {}\\n\\t\\t\\t} },\\n\\n\\t\\t\\tdirectionalShadowMap: { value: [] },\\n\\t\\t\\tdirectionalShadowMatrix: { value: [] },\\n\\n\\t\\t\\tspotLights: { value: [], properties: {\\n\\t\\t\\t\\tcolor: {},\\n\\t\\t\\t\\tposition: {},\\n\\t\\t\\t\\tdirection: {},\\n\\t\\t\\t\\tdistance: {},\\n\\t\\t\\t\\tconeCos: {},\\n\\t\\t\\t\\tpenumbraCos: {},\\n\\t\\t\\t\\tdecay: {},\\n\\n\\t\\t\\t\\tshadow: {},\\n\\t\\t\\t\\tshadowBias: {},\\n\\t\\t\\t\\tshadowRadius: {},\\n\\t\\t\\t\\tshadowMapSize: {}\\n\\t\\t\\t} },\\n\\n\\t\\t\\tspotShadowMap: { value: [] },\\n\\t\\t\\tspotShadowMatrix: { value: [] },\\n\\n\\t\\t\\tpointLights: { value: [], properties: {\\n\\t\\t\\t\\tcolor: {},\\n\\t\\t\\t\\tposition: {},\\n\\t\\t\\t\\tdecay: {},\\n\\t\\t\\t\\tdistance: {},\\n\\n\\t\\t\\t\\tshadow: {},\\n\\t\\t\\t\\tshadowBias: {},\\n\\t\\t\\t\\tshadowRadius: {},\\n\\t\\t\\t\\tshadowMapSize: {},\\n\\t\\t\\t\\tshadowCameraNear: {},\\n\\t\\t\\t\\tshadowCameraFar: {}\\n\\t\\t\\t} },\\n\\n\\t\\t\\tpointShadowMap: { value: [] },\\n\\t\\t\\tpointShadowMatrix: { value: [] },\\n\\n\\t\\t\\themisphereLights: { value: [], properties: {\\n\\t\\t\\t\\tdirection: {},\\n\\t\\t\\t\\tskyColor: {},\\n\\t\\t\\t\\tgroundColor: {}\\n\\t\\t\\t} },\\n\\n\\t\\t\\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\\n\\t\\t\\trectAreaLights: { value: [], properties: {\\n\\t\\t\\t\\tcolor: {},\\n\\t\\t\\t\\tposition: {},\\n\\t\\t\\t\\twidth: {},\\n\\t\\t\\t\\theight: {}\\n\\t\\t\\t} }\\n\\n\\t\\t},\\n\\n\\t\\tpoints: {\\n\\n\\t\\t\\tdiffuse: { value: new Color( 0xeeeeee ) },\\n\\t\\t\\topacity: { value: 1.0 },\\n\\t\\t\\tsize: { value: 1.0 },\\n\\t\\t\\tscale: { value: 1.0 },\\n\\t\\t\\tmap: { value: null },\\n\\t\\t\\tuvTransform: { value: new Matrix3() }\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * Uniform Utilities\\n\\t */\\n\\n\\tvar UniformsUtils = {\\n\\n\\t\\tmerge: function ( uniforms ) {\\n\\n\\t\\t\\tvar merged = {};\\n\\n\\t\\t\\tfor ( var u = 0; u < uniforms.length; u ++ ) {\\n\\n\\t\\t\\t\\tvar tmp = this.clone( uniforms[ u ] );\\n\\n\\t\\t\\t\\tfor ( var p in tmp ) {\\n\\n\\t\\t\\t\\t\\tmerged[ p ] = tmp[ p ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn merged;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function ( uniforms_src ) {\\n\\n\\t\\t\\tvar uniforms_dst = {};\\n\\n\\t\\t\\tfor ( var u in uniforms_src ) {\\n\\n\\t\\t\\t\\tuniforms_dst[ u ] = {};\\n\\n\\t\\t\\t\\tfor ( var p in uniforms_src[ u ] ) {\\n\\n\\t\\t\\t\\t\\tvar parameter_src = uniforms_src[ u ][ p ];\\n\\n\\t\\t\\t\\t\\tif ( parameter_src && ( parameter_src.isColor ||\\n\\t\\t\\t\\t\\t\\tparameter_src.isMatrix3 || parameter_src.isMatrix4 ||\\n\\t\\t\\t\\t\\t\\tparameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 ||\\n\\t\\t\\t\\t\\t\\tparameter_src.isTexture ) ) {\\n\\n\\t\\t\\t\\t\\t\\tuniforms_dst[ u ][ p ] = parameter_src.clone();\\n\\n\\t\\t\\t\\t\\t} else if ( Array.isArray( parameter_src ) ) {\\n\\n\\t\\t\\t\\t\\t\\tuniforms_dst[ u ][ p ] = parameter_src.slice();\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tuniforms_dst[ u ][ p ] = parameter_src;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn uniforms_dst;\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\tvar alphamap_fragment = \\\"#ifdef USE_ALPHAMAP\\\\n\\\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\\\n#endif\\\\n\\\";\\n\\n\\tvar alphamap_pars_fragment = \\\"#ifdef USE_ALPHAMAP\\\\n\\\\tuniform sampler2D alphaMap;\\\\n#endif\\\\n\\\";\\n\\n\\tvar alphatest_fragment = \\\"#ifdef ALPHATEST\\\\n\\\\tif ( diffuseColor.a < ALPHATEST ) discard;\\\\n#endif\\\\n\\\";\\n\\n\\tvar aomap_fragment = \\\"#ifdef USE_AOMAP\\\\n\\\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\\\n\\\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\\\n\\\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\\\n\\\\t\\\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\\\n\\\\t\\\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar aomap_pars_fragment = \\\"#ifdef USE_AOMAP\\\\n\\\\tuniform sampler2D aoMap;\\\\n\\\\tuniform float aoMapIntensity;\\\\n#endif\\\";\\n\\n\\tvar begin_vertex = \\\"\\\\nvec3 transformed = vec3( position );\\\\n\\\";\\n\\n\\tvar beginnormal_vertex = \\\"\\\\nvec3 objectNormal = vec3( normal );\\\\n\\\";\\n\\n\\tvar bsdfs = \\\"float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\\\n\\\\tif( decayExponent > 0.0 ) {\\\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\\\n\\\\t\\\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\\\n\\\\t\\\\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\\\n\\\\t\\\\treturn distanceFalloff * maxDistanceCutoffFactor;\\\\n#else\\\\n\\\\t\\\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\\\n#endif\\\\n\\\\t}\\\\n\\\\treturn 1.0;\\\\n}\\\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\\\n\\\\treturn RECIPROCAL_PI * diffuseColor;\\\\n}\\\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\\\n\\\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\\\n\\\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\\\n}\\\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\\\n\\\\tfloat a2 = pow2( alpha );\\\\n\\\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\\\n\\\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\\\n\\\\treturn 1.0 / ( gl * gv );\\\\n}\\\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\\\n\\\\tfloat a2 = pow2( alpha );\\\\n\\\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\\\n\\\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\\\n\\\\treturn 0.5 / max( gv + gl, EPSILON );\\\\n}\\\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\\\n\\\\tfloat a2 = pow2( alpha );\\\\n\\\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\\\n\\\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\\\n}\\\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\\\n\\\\tfloat alpha = pow2( roughness );\\\\n\\\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\\\n\\\\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\\\\n\\\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\\\n\\\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\\\n\\\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\\\n\\\\tvec3 F = F_Schlick( specularColor, dotLH );\\\\n\\\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\\\n\\\\tfloat D = D_GGX( alpha, dotNH );\\\\n\\\\treturn F * ( G * D );\\\\n}\\\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\\\n\\\\tconst float LUT_SIZE = 64.0;\\\\n\\\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\\\n\\\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\\\n\\\\tfloat theta = acos( dot( N, V ) );\\\\n\\\\tvec2 uv = vec2(\\\\n\\\\t\\\\tsqrt( saturate( roughness ) ),\\\\n\\\\t\\\\tsaturate( theta / ( 0.5 * PI ) ) );\\\\n\\\\tuv = uv * LUT_SCALE + LUT_BIAS;\\\\n\\\\treturn uv;\\\\n}\\\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\\\n\\\\tfloat l = length( f );\\\\n\\\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\\\n}\\\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\\\n\\\\tfloat x = dot( v1, v2 );\\\\n\\\\tfloat y = abs( x );\\\\n\\\\tfloat a = 0.86267 + (0.49788 + 0.01436 * y ) * y;\\\\n\\\\tfloat b = 3.45068 + (4.18814 + y) * y;\\\\n\\\\tfloat v = a / b;\\\\n\\\\tfloat theta_sintheta = (x > 0.0) ? v : 0.5 * inversesqrt( 1.0 - x * x ) - v;\\\\n\\\\treturn cross( v1, v2 ) * theta_sintheta;\\\\n}\\\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\\\n\\\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\\\n\\\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\\\n\\\\tvec3 lightNormal = cross( v1, v2 );\\\\n\\\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\\\n\\\\tvec3 T1, T2;\\\\n\\\\tT1 = normalize( V - N * dot( V, N ) );\\\\n\\\\tT2 = - cross( N, T1 );\\\\n\\\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\\\n\\\\tvec3 coords[ 4 ];\\\\n\\\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\\\n\\\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\\\n\\\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\\\n\\\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\\\n\\\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\\\n\\\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\\\n\\\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\\\n\\\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\\\n\\\\tvec3 vectorFormFactor = vec3( 0.0 );\\\\n\\\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\\\n\\\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\\\n\\\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\\\n\\\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\\\n\\\\tvec3 result = vec3( LTC_ClippedSphereFormFactor( vectorFormFactor ) );\\\\n\\\\treturn result;\\\\n}\\\\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\\\\n\\\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\\\n\\\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\\\n\\\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\\\n\\\\tvec4 r = roughness * c0 + c1;\\\\n\\\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\\\n\\\\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\\\\n\\\\treturn specularColor * AB.x + AB.y;\\\\n}\\\\nfloat G_BlinnPhong_Implicit( ) {\\\\n\\\\treturn 0.25;\\\\n}\\\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\\\n\\\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\\\n}\\\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\\\n\\\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\\\n\\\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\\\n\\\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\\\n\\\\tvec3 F = F_Schlick( specularColor, dotLH );\\\\n\\\\tfloat G = G_BlinnPhong_Implicit( );\\\\n\\\\tfloat D = D_BlinnPhong( shininess, dotNH );\\\\n\\\\treturn F * ( G * D );\\\\n}\\\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\\\n\\\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\\\n}\\\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\\\n\\\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\\\n}\\\\n\\\";\\n\\n\\tvar bumpmap_pars_fragment = \\\"#ifdef USE_BUMPMAP\\\\n\\\\tuniform sampler2D bumpMap;\\\\n\\\\tuniform float bumpScale;\\\\n\\\\tvec2 dHdxy_fwd() {\\\\n\\\\t\\\\tvec2 dSTdx = dFdx( vUv );\\\\n\\\\t\\\\tvec2 dSTdy = dFdy( vUv );\\\\n\\\\t\\\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\\\n\\\\t\\\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\\\n\\\\t\\\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\\\n\\\\t\\\\treturn vec2( dBx, dBy );\\\\n\\\\t}\\\\n\\\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\\\n\\\\t\\\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\\\n\\\\t\\\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\\\n\\\\t\\\\tvec3 vN = surf_norm;\\\\n\\\\t\\\\tvec3 R1 = cross( vSigmaY, vN );\\\\n\\\\t\\\\tvec3 R2 = cross( vN, vSigmaX );\\\\n\\\\t\\\\tfloat fDet = dot( vSigmaX, R1 );\\\\n\\\\t\\\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\\\n\\\\t\\\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\\\n\\\\t}\\\\n#endif\\\\n\\\";\\n\\n\\tvar clipping_planes_fragment = \\\"#if NUM_CLIPPING_PLANES > 0\\\\n\\\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; ++ i ) {\\\\n\\\\t\\\\tvec4 plane = clippingPlanes[ i ];\\\\n\\\\t\\\\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\\\\n\\\\t}\\\\n\\\\t\\\\t\\\\n\\\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\\\n\\\\t\\\\tbool clipped = true;\\\\n\\\\t\\\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; ++ i ) {\\\\n\\\\t\\\\t\\\\tvec4 plane = clippingPlanes[ i ];\\\\n\\\\t\\\\t\\\\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\\\\n\\\\t\\\\t}\\\\n\\\\t\\\\tif ( clipped ) discard;\\\\n\\\\t\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar clipping_planes_pars_fragment = \\\"#if NUM_CLIPPING_PLANES > 0\\\\n\\\\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\\\\n\\\\t\\\\tvarying vec3 vViewPosition;\\\\n\\\\t#endif\\\\n\\\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\\\n#endif\\\\n\\\";\\n\\n\\tvar clipping_planes_pars_vertex = \\\"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\\\n\\\\tvarying vec3 vViewPosition;\\\\n#endif\\\\n\\\";\\n\\n\\tvar clipping_planes_vertex = \\\"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\\\\n\\\\tvViewPosition = - mvPosition.xyz;\\\\n#endif\\\\n\\\";\\n\\n\\tvar color_fragment = \\\"#ifdef USE_COLOR\\\\n\\\\tdiffuseColor.rgb *= vColor;\\\\n#endif\\\";\\n\\n\\tvar color_pars_fragment = \\\"#ifdef USE_COLOR\\\\n\\\\tvarying vec3 vColor;\\\\n#endif\\\\n\\\";\\n\\n\\tvar color_pars_vertex = \\\"#ifdef USE_COLOR\\\\n\\\\tvarying vec3 vColor;\\\\n#endif\\\";\\n\\n\\tvar color_vertex = \\\"#ifdef USE_COLOR\\\\n\\\\tvColor.xyz = color.xyz;\\\\n#endif\\\";\\n\\n\\tvar common = \\\"#define PI 3.14159265359\\\\n#define PI2 6.28318530718\\\\n#define PI_HALF 1.5707963267949\\\\n#define RECIPROCAL_PI 0.31830988618\\\\n#define RECIPROCAL_PI2 0.15915494\\\\n#define LOG2 1.442695\\\\n#define EPSILON 1e-6\\\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\\\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\\\\nfloat pow2( const in float x ) { return x*x; }\\\\nfloat pow3( const in float x ) { return x*x*x; }\\\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\\\nhighp float rand( const in vec2 uv ) {\\\\n\\\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\\\n\\\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\\\n\\\\treturn fract(sin(sn) * c);\\\\n}\\\\nstruct IncidentLight {\\\\n\\\\tvec3 color;\\\\n\\\\tvec3 direction;\\\\n\\\\tbool visible;\\\\n};\\\\nstruct ReflectedLight {\\\\n\\\\tvec3 directDiffuse;\\\\n\\\\tvec3 directSpecular;\\\\n\\\\tvec3 indirectDiffuse;\\\\n\\\\tvec3 indirectSpecular;\\\\n};\\\\nstruct GeometricContext {\\\\n\\\\tvec3 position;\\\\n\\\\tvec3 normal;\\\\n\\\\tvec3 viewDir;\\\\n};\\\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\\\n\\\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\\\n}\\\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\\\n\\\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\\\n}\\\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\\\n\\\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\\\n\\\\treturn - distance * planeNormal + point;\\\\n}\\\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\\\n\\\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\\\n}\\\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\\\n\\\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\\\n}\\\\nmat3 transposeMat3( const in mat3 m ) {\\\\n\\\\tmat3 tmp;\\\\n\\\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\\\n\\\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\\\n\\\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\\\n\\\\treturn tmp;\\\\n}\\\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\\\n\\\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\\\n\\\\treturn dot( weights, color.rgb );\\\\n}\\\\n\\\";\\n\\n\\tvar cube_uv_reflection_fragment = \\\"#ifdef ENVMAP_TYPE_CUBE_UV\\\\n#define cubeUV_textureSize (1024.0)\\\\nint getFaceFromDirection(vec3 direction) {\\\\n\\\\tvec3 absDirection = abs(direction);\\\\n\\\\tint face = -1;\\\\n\\\\tif( absDirection.x > absDirection.z ) {\\\\n\\\\t\\\\tif(absDirection.x > absDirection.y )\\\\n\\\\t\\\\t\\\\tface = direction.x > 0.0 ? 0 : 3;\\\\n\\\\t\\\\telse\\\\n\\\\t\\\\t\\\\tface = direction.y > 0.0 ? 1 : 4;\\\\n\\\\t}\\\\n\\\\telse {\\\\n\\\\t\\\\tif(absDirection.z > absDirection.y )\\\\n\\\\t\\\\t\\\\tface = direction.z > 0.0 ? 2 : 5;\\\\n\\\\t\\\\telse\\\\n\\\\t\\\\t\\\\tface = direction.y > 0.0 ? 1 : 4;\\\\n\\\\t}\\\\n\\\\treturn face;\\\\n}\\\\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\\\\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\\\\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\\\\n\\\\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\\\\n\\\\tfloat dxRoughness = dFdx(roughness);\\\\n\\\\tfloat dyRoughness = dFdy(roughness);\\\\n\\\\tvec3 dx = dFdx( vec * scale * dxRoughness );\\\\n\\\\tvec3 dy = dFdy( vec * scale * dyRoughness );\\\\n\\\\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\\\\n\\\\td = clamp(d, 1.0, cubeUV_rangeClamp);\\\\n\\\\tfloat mipLevel = 0.5 * log2(d);\\\\n\\\\treturn vec2(floor(mipLevel), fract(mipLevel));\\\\n}\\\\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\\\\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\\\\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\\\\n\\\\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\\\\n\\\\tfloat a = 16.0 * cubeUV_rcpTextureSize;\\\\n\\\\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\\\\n\\\\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\\\\n\\\\tfloat powScale = exp2_packed.x * exp2_packed.y;\\\\n\\\\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\\\\n\\\\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\\\\n\\\\tbool bRes = mipLevel == 0.0;\\\\n\\\\tscale = bRes && (scale < a) ? a : scale;\\\\n\\\\tvec3 r;\\\\n\\\\tvec2 offset;\\\\n\\\\tint face = getFaceFromDirection(direction);\\\\n\\\\tfloat rcpPowScale = 1.0 / powScale;\\\\n\\\\tif( face == 0) {\\\\n\\\\t\\\\tr = vec3(direction.x, -direction.z, direction.y);\\\\n\\\\t\\\\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\\\\n\\\\t\\\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\\\n\\\\t}\\\\n\\\\telse if( face == 1) {\\\\n\\\\t\\\\tr = vec3(direction.y, direction.x, direction.z);\\\\n\\\\t\\\\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\\\\n\\\\t\\\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\\\n\\\\t}\\\\n\\\\telse if( face == 2) {\\\\n\\\\t\\\\tr = vec3(direction.z, direction.x, direction.y);\\\\n\\\\t\\\\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\\\\n\\\\t\\\\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\\\\n\\\\t}\\\\n\\\\telse if( face == 3) {\\\\n\\\\t\\\\tr = vec3(direction.x, direction.z, direction.y);\\\\n\\\\t\\\\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\\\\n\\\\t\\\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\\\n\\\\t}\\\\n\\\\telse if( face == 4) {\\\\n\\\\t\\\\tr = vec3(direction.y, direction.x, -direction.z);\\\\n\\\\t\\\\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\\\\n\\\\t\\\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\\\n\\\\t}\\\\n\\\\telse {\\\\n\\\\t\\\\tr = vec3(direction.z, -direction.x, direction.y);\\\\n\\\\t\\\\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\\\\n\\\\t\\\\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\\\\n\\\\t}\\\\n\\\\tr = normalize(r);\\\\n\\\\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\\\\n\\\\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\\\\n\\\\tvec2 base = offset + vec2( texelOffset );\\\\n\\\\treturn base + s * ( scale - 2.0 * texelOffset );\\\\n}\\\\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\\\\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\\\\n\\\\tfloat roughnessVal = roughness* cubeUV_maxLods3;\\\\n\\\\tfloat r1 = floor(roughnessVal);\\\\n\\\\tfloat r2 = r1 + 1.0;\\\\n\\\\tfloat t = fract(roughnessVal);\\\\n\\\\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\\\\n\\\\tfloat s = mipInfo.y;\\\\n\\\\tfloat level0 = mipInfo.x;\\\\n\\\\tfloat level1 = level0 + 1.0;\\\\n\\\\tlevel1 = level1 > 5.0 ? 5.0 : level1;\\\\n\\\\tlevel0 += min( floor( s + 0.5 ), 5.0 );\\\\n\\\\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\\\\n\\\\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\\\\n\\\\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\\\\n\\\\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\\\\n\\\\tvec4 result = mix(color10, color20, t);\\\\n\\\\treturn vec4(result.rgb, 1.0);\\\\n}\\\\n#endif\\\\n\\\";\\n\\n\\tvar defaultnormal_vertex = \\\"vec3 transformedNormal = normalMatrix * objectNormal;\\\\n#ifdef FLIP_SIDED\\\\n\\\\ttransformedNormal = - transformedNormal;\\\\n#endif\\\\n\\\";\\n\\n\\tvar displacementmap_pars_vertex = \\\"#ifdef USE_DISPLACEMENTMAP\\\\n\\\\tuniform sampler2D displacementMap;\\\\n\\\\tuniform float displacementScale;\\\\n\\\\tuniform float displacementBias;\\\\n#endif\\\\n\\\";\\n\\n\\tvar displacementmap_vertex = \\\"#ifdef USE_DISPLACEMENTMAP\\\\n\\\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\\\\n#endif\\\\n\\\";\\n\\n\\tvar emissivemap_fragment = \\\"#ifdef USE_EMISSIVEMAP\\\\n\\\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\\\n\\\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\\\n\\\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\\\n#endif\\\\n\\\";\\n\\n\\tvar emissivemap_pars_fragment = \\\"#ifdef USE_EMISSIVEMAP\\\\n\\\\tuniform sampler2D emissiveMap;\\\\n#endif\\\\n\\\";\\n\\n\\tvar encodings_fragment = \\\" gl_FragColor = linearToOutputTexel( gl_FragColor );\\\\n\\\";\\n\\n\\tvar encodings_pars_fragment = \\\"\\\\nvec4 LinearToLinear( in vec4 value ) {\\\\n\\\\treturn value;\\\\n}\\\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\\\n\\\\treturn vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\\\\n}\\\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\\\n\\\\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\\\\n}\\\\nvec4 sRGBToLinear( in vec4 value ) {\\\\n\\\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\\\\n}\\\\nvec4 LinearTosRGB( in vec4 value ) {\\\\n\\\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\\\\n}\\\\nvec4 RGBEToLinear( in vec4 value ) {\\\\n\\\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\\\n}\\\\nvec4 LinearToRGBE( in vec4 value ) {\\\\n\\\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\\\n\\\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\\\n\\\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\\\n}\\\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\\\n\\\\treturn vec4( value.xyz * value.w * maxRange, 1.0 );\\\\n}\\\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\\\n\\\\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\\\\n\\\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\\\n\\\\tM = ceil( M * 255.0 ) / 255.0;\\\\n\\\\treturn vec4( value.rgb / ( M * maxRange ), M );\\\\n}\\\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\\\n\\\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\\\n}\\\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\\\n\\\\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\\\\n\\\\tfloat D = max( maxRange / maxRGB, 1.0 );\\\\n\\\\tD = min( floor( D ) / 255.0, 1.0 );\\\\n\\\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\\\n}\\\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\\\nvec4 LinearToLogLuv( in vec4 value ) {\\\\n\\\\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\\\\n\\\\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\\\\n\\\\tvec4 vResult;\\\\n\\\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\\\n\\\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\\\n\\\\tvResult.w = fract(Le);\\\\n\\\\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\\\\n\\\\treturn vResult;\\\\n}\\\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\\\nvec4 LogLuvToLinear( in vec4 value ) {\\\\n\\\\tfloat Le = value.z * 255.0 + value.w;\\\\n\\\\tvec3 Xp_Y_XYZp;\\\\n\\\\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\\\\n\\\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\\\n\\\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\\\n\\\\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\\\\n\\\\treturn vec4( max(vRGB, 0.0), 1.0 );\\\\n}\\\\n\\\";\\n\\n\\tvar envmap_fragment = \\\"#ifdef USE_ENVMAP\\\\n\\\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\\\n\\\\t\\\\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\\\\n\\\\t\\\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\\\n\\\\t\\\\t#ifdef ENVMAP_MODE_REFLECTION\\\\n\\\\t\\\\t\\\\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\\\\n\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\\\\n\\\\t\\\\t#endif\\\\n\\\\t#else\\\\n\\\\t\\\\tvec3 reflectVec = vReflect;\\\\n\\\\t#endif\\\\n\\\\t#ifdef ENVMAP_TYPE_CUBE\\\\n\\\\t\\\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\\\n\\\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\\\n\\\\t\\\\tvec2 sampleUV;\\\\n\\\\t\\\\treflectVec = normalize( reflectVec );\\\\n\\\\t\\\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\\\n\\\\t\\\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\\\n\\\\t\\\\tvec4 envColor = texture2D( envMap, sampleUV );\\\\n\\\\t#elif defined( ENVMAP_TYPE_SPHERE )\\\\n\\\\t\\\\treflectVec = normalize( reflectVec );\\\\n\\\\t\\\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\\\\n\\\\t\\\\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\\\\n\\\\t#else\\\\n\\\\t\\\\tvec4 envColor = vec4( 0.0 );\\\\n\\\\t#endif\\\\n\\\\tenvColor = envMapTexelToLinear( envColor );\\\\n\\\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\\\n\\\\t\\\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\\\n\\\\t#elif defined( ENVMAP_BLENDING_MIX )\\\\n\\\\t\\\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\\\n\\\\t#elif defined( ENVMAP_BLENDING_ADD )\\\\n\\\\t\\\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar envmap_pars_fragment = \\\"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\\\\n\\\\tuniform float reflectivity;\\\\n\\\\tuniform float envMapIntensity;\\\\n#endif\\\\n#ifdef USE_ENVMAP\\\\n\\\\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\\\\n\\\\t\\\\tvarying vec3 vWorldPosition;\\\\n\\\\t#endif\\\\n\\\\t#ifdef ENVMAP_TYPE_CUBE\\\\n\\\\t\\\\tuniform samplerCube envMap;\\\\n\\\\t#else\\\\n\\\\t\\\\tuniform sampler2D envMap;\\\\n\\\\t#endif\\\\n\\\\tuniform float flipEnvMap;\\\\n\\\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\\\\n\\\\t\\\\tuniform float refractionRatio;\\\\n\\\\t#else\\\\n\\\\t\\\\tvarying vec3 vReflect;\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar envmap_pars_vertex = \\\"#ifdef USE_ENVMAP\\\\n\\\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\\\n\\\\t\\\\tvarying vec3 vWorldPosition;\\\\n\\\\t#else\\\\n\\\\t\\\\tvarying vec3 vReflect;\\\\n\\\\t\\\\tuniform float refractionRatio;\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar envmap_vertex = \\\"#ifdef USE_ENVMAP\\\\n\\\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\\\n\\\\t\\\\tvWorldPosition = worldPosition.xyz;\\\\n\\\\t#else\\\\n\\\\t\\\\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\\\n\\\\t\\\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\\\n\\\\t\\\\t#ifdef ENVMAP_MODE_REFLECTION\\\\n\\\\t\\\\t\\\\tvReflect = reflect( cameraToVertex, worldNormal );\\\\n\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\\\n\\\\t\\\\t#endif\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar fog_vertex = \\\"\\\\n#ifdef USE_FOG\\\\nfogDepth = -mvPosition.z;\\\\n#endif\\\";\\n\\n\\tvar fog_pars_vertex = \\\"#ifdef USE_FOG\\\\n varying float fogDepth;\\\\n#endif\\\\n\\\";\\n\\n\\tvar fog_fragment = \\\"#ifdef USE_FOG\\\\n\\\\t#ifdef FOG_EXP2\\\\n\\\\t\\\\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\\\\n\\\\t#else\\\\n\\\\t\\\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\\\n\\\\t#endif\\\\n\\\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\\\n#endif\\\\n\\\";\\n\\n\\tvar fog_pars_fragment = \\\"#ifdef USE_FOG\\\\n\\\\tuniform vec3 fogColor;\\\\n\\\\tvarying float fogDepth;\\\\n\\\\t#ifdef FOG_EXP2\\\\n\\\\t\\\\tuniform float fogDensity;\\\\n\\\\t#else\\\\n\\\\t\\\\tuniform float fogNear;\\\\n\\\\t\\\\tuniform float fogFar;\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar gradientmap_pars_fragment = \\\"#ifdef TOON\\\\n\\\\tuniform sampler2D gradientMap;\\\\n\\\\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\\\n\\\\t\\\\tfloat dotNL = dot( normal, lightDirection );\\\\n\\\\t\\\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\\\n\\\\t\\\\t#ifdef USE_GRADIENTMAP\\\\n\\\\t\\\\t\\\\treturn texture2D( gradientMap, coord ).rgb;\\\\n\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\\\n\\\\t\\\\t#endif\\\\n\\\\t}\\\\n#endif\\\\n\\\";\\n\\n\\tvar lightmap_fragment = \\\"#ifdef USE_LIGHTMAP\\\\n\\\\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\\\n#endif\\\\n\\\";\\n\\n\\tvar lightmap_pars_fragment = \\\"#ifdef USE_LIGHTMAP\\\\n\\\\tuniform sampler2D lightMap;\\\\n\\\\tuniform float lightMapIntensity;\\\\n#endif\\\";\\n\\n\\tvar lights_lambert_vertex = \\\"vec3 diffuse = vec3( 1.0 );\\\\nGeometricContext geometry;\\\\ngeometry.position = mvPosition.xyz;\\\\ngeometry.normal = normalize( transformedNormal );\\\\ngeometry.viewDir = normalize( -mvPosition.xyz );\\\\nGeometricContext backGeometry;\\\\nbackGeometry.position = geometry.position;\\\\nbackGeometry.normal = -geometry.normal;\\\\nbackGeometry.viewDir = geometry.viewDir;\\\\nvLightFront = vec3( 0.0 );\\\\n#ifdef DOUBLE_SIDED\\\\n\\\\tvLightBack = vec3( 0.0 );\\\\n#endif\\\\nIncidentLight directLight;\\\\nfloat dotNL;\\\\nvec3 directLightColor_Diffuse;\\\\n#if NUM_POINT_LIGHTS > 0\\\\n\\\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\\\n\\\\t\\\\tdotNL = dot( geometry.normal, directLight.direction );\\\\n\\\\t\\\\tdirectLightColor_Diffuse = PI * directLight.color;\\\\n\\\\t\\\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\\\n\\\\t\\\\t#ifdef DOUBLE_SIDED\\\\n\\\\t\\\\t\\\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\\\n\\\\t\\\\t#endif\\\\n\\\\t}\\\\n#endif\\\\n#if NUM_SPOT_LIGHTS > 0\\\\n\\\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\\\n\\\\t\\\\tdotNL = dot( geometry.normal, directLight.direction );\\\\n\\\\t\\\\tdirectLightColor_Diffuse = PI * directLight.color;\\\\n\\\\t\\\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\\\n\\\\t\\\\t#ifdef DOUBLE_SIDED\\\\n\\\\t\\\\t\\\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\\\n\\\\t\\\\t#endif\\\\n\\\\t}\\\\n#endif\\\\n#if NUM_DIR_LIGHTS > 0\\\\n\\\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\\\n\\\\t\\\\tdotNL = dot( geometry.normal, directLight.direction );\\\\n\\\\t\\\\tdirectLightColor_Diffuse = PI * directLight.color;\\\\n\\\\t\\\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\\\n\\\\t\\\\t#ifdef DOUBLE_SIDED\\\\n\\\\t\\\\t\\\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\\\n\\\\t\\\\t#endif\\\\n\\\\t}\\\\n#endif\\\\n#if NUM_HEMI_LIGHTS > 0\\\\n\\\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\\\n\\\\t\\\\t#ifdef DOUBLE_SIDED\\\\n\\\\t\\\\t\\\\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\\\n\\\\t\\\\t#endif\\\\n\\\\t}\\\\n#endif\\\\n\\\";\\n\\n\\tvar lights_pars = \\\"uniform vec3 ambientLightColor;\\\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\\\n\\\\tvec3 irradiance = ambientLightColor;\\\\n\\\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\\\n\\\\t\\\\tirradiance *= PI;\\\\n\\\\t#endif\\\\n\\\\treturn irradiance;\\\\n}\\\\n#if NUM_DIR_LIGHTS > 0\\\\n\\\\tstruct DirectionalLight {\\\\n\\\\t\\\\tvec3 direction;\\\\n\\\\t\\\\tvec3 color;\\\\n\\\\t\\\\tint shadow;\\\\n\\\\t\\\\tfloat shadowBias;\\\\n\\\\t\\\\tfloat shadowRadius;\\\\n\\\\t\\\\tvec2 shadowMapSize;\\\\n\\\\t};\\\\n\\\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\\\n\\\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\\\n\\\\t\\\\tdirectLight.color = directionalLight.color;\\\\n\\\\t\\\\tdirectLight.direction = directionalLight.direction;\\\\n\\\\t\\\\tdirectLight.visible = true;\\\\n\\\\t}\\\\n#endif\\\\n#if NUM_POINT_LIGHTS > 0\\\\n\\\\tstruct PointLight {\\\\n\\\\t\\\\tvec3 position;\\\\n\\\\t\\\\tvec3 color;\\\\n\\\\t\\\\tfloat distance;\\\\n\\\\t\\\\tfloat decay;\\\\n\\\\t\\\\tint shadow;\\\\n\\\\t\\\\tfloat shadowBias;\\\\n\\\\t\\\\tfloat shadowRadius;\\\\n\\\\t\\\\tvec2 shadowMapSize;\\\\n\\\\t\\\\tfloat shadowCameraNear;\\\\n\\\\t\\\\tfloat shadowCameraFar;\\\\n\\\\t};\\\\n\\\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\\\n\\\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\\\n\\\\t\\\\tvec3 lVector = pointLight.position - geometry.position;\\\\n\\\\t\\\\tdirectLight.direction = normalize( lVector );\\\\n\\\\t\\\\tfloat lightDistance = length( lVector );\\\\n\\\\t\\\\tdirectLight.color = pointLight.color;\\\\n\\\\t\\\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\\\n\\\\t\\\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\\\n\\\\t}\\\\n#endif\\\\n#if NUM_SPOT_LIGHTS > 0\\\\n\\\\tstruct SpotLight {\\\\n\\\\t\\\\tvec3 position;\\\\n\\\\t\\\\tvec3 direction;\\\\n\\\\t\\\\tvec3 color;\\\\n\\\\t\\\\tfloat distance;\\\\n\\\\t\\\\tfloat decay;\\\\n\\\\t\\\\tfloat coneCos;\\\\n\\\\t\\\\tfloat penumbraCos;\\\\n\\\\t\\\\tint shadow;\\\\n\\\\t\\\\tfloat shadowBias;\\\\n\\\\t\\\\tfloat shadowRadius;\\\\n\\\\t\\\\tvec2 shadowMapSize;\\\\n\\\\t};\\\\n\\\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\\\n\\\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\\\n\\\\t\\\\tvec3 lVector = spotLight.position - geometry.position;\\\\n\\\\t\\\\tdirectLight.direction = normalize( lVector );\\\\n\\\\t\\\\tfloat lightDistance = length( lVector );\\\\n\\\\t\\\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\\\n\\\\t\\\\tif ( angleCos > spotLight.coneCos ) {\\\\n\\\\t\\\\t\\\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\\\n\\\\t\\\\t\\\\tdirectLight.color = spotLight.color;\\\\n\\\\t\\\\t\\\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\\\n\\\\t\\\\t\\\\tdirectLight.visible = true;\\\\n\\\\t\\\\t} else {\\\\n\\\\t\\\\t\\\\tdirectLight.color = vec3( 0.0 );\\\\n\\\\t\\\\t\\\\tdirectLight.visible = false;\\\\n\\\\t\\\\t}\\\\n\\\\t}\\\\n#endif\\\\n#if NUM_RECT_AREA_LIGHTS > 0\\\\n\\\\tstruct RectAreaLight {\\\\n\\\\t\\\\tvec3 color;\\\\n\\\\t\\\\tvec3 position;\\\\n\\\\t\\\\tvec3 halfWidth;\\\\n\\\\t\\\\tvec3 halfHeight;\\\\n\\\\t};\\\\n\\\\tuniform sampler2D ltcMat;\\\\tuniform sampler2D ltcMag;\\\\n\\\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\\\n#endif\\\\n#if NUM_HEMI_LIGHTS > 0\\\\n\\\\tstruct HemisphereLight {\\\\n\\\\t\\\\tvec3 direction;\\\\n\\\\t\\\\tvec3 skyColor;\\\\n\\\\t\\\\tvec3 groundColor;\\\\n\\\\t};\\\\n\\\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\\\n\\\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\\\n\\\\t\\\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\\\n\\\\t\\\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\\\n\\\\t\\\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\\\n\\\\t\\\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\\\n\\\\t\\\\t\\\\tirradiance *= PI;\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\treturn irradiance;\\\\n\\\\t}\\\\n#endif\\\\n#if defined( USE_ENVMAP ) && defined( PHYSICAL )\\\\n\\\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\\\n\\\\t\\\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\\\n\\\\t\\\\t#ifdef ENVMAP_TYPE_CUBE\\\\n\\\\t\\\\t\\\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\\\n\\\\t\\\\t\\\\t#ifdef TEXTURE_LOD_EXT\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\\\n\\\\t\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\\\n\\\\t\\\\t\\\\t#endif\\\\n\\\\t\\\\t\\\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\\\n\\\\t\\\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\\\n\\\\t\\\\t\\\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\\\n\\\\t\\\\t\\\\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\\\\n\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\tvec4 envMapColor = vec4( 0.0 );\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\treturn PI * envMapColor.rgb * envMapIntensity;\\\\n\\\\t}\\\\n\\\\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\\\\n\\\\t\\\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\\\n\\\\t\\\\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\\\\n\\\\t\\\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\\\n\\\\t}\\\\n\\\\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\\\\n\\\\t\\\\t#ifdef ENVMAP_MODE_REFLECTION\\\\n\\\\t\\\\t\\\\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\\\\n\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\\\n\\\\t\\\\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\\\\n\\\\t\\\\t#ifdef ENVMAP_TYPE_CUBE\\\\n\\\\t\\\\t\\\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\\\n\\\\t\\\\t\\\\t#ifdef TEXTURE_LOD_EXT\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\\\n\\\\t\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\\\n\\\\t\\\\t\\\\t#endif\\\\n\\\\t\\\\t\\\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\\\n\\\\t\\\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\\\n\\\\t\\\\t\\\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\\\n\\\\t\\\\t\\\\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\\\\n\\\\t\\\\t#elif defined( ENVMAP_TYPE_EQUIREC )\\\\n\\\\t\\\\t\\\\tvec2 sampleUV;\\\\n\\\\t\\\\t\\\\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\\\n\\\\t\\\\t\\\\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\\\\n\\\\t\\\\t\\\\t#ifdef TEXTURE_LOD_EXT\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\\\\n\\\\t\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\\\\n\\\\t\\\\t\\\\t#endif\\\\n\\\\t\\\\t\\\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\\\n\\\\t\\\\t#elif defined( ENVMAP_TYPE_SPHERE )\\\\n\\\\t\\\\t\\\\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\\\\n\\\\t\\\\t\\\\t#ifdef TEXTURE_LOD_EXT\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\\\n\\\\t\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\t\\\\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\\\\n\\\\t\\\\t\\\\t#endif\\\\n\\\\t\\\\t\\\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\treturn envMapColor.rgb * envMapIntensity;\\\\n\\\\t}\\\\n#endif\\\\n\\\";\\n\\n\\tvar lights_phong_fragment = \\\"BlinnPhongMaterial material;\\\\nmaterial.diffuseColor = diffuseColor.rgb;\\\\nmaterial.specularColor = specular;\\\\nmaterial.specularShininess = shininess;\\\\nmaterial.specularStrength = specularStrength;\\\\n\\\";\\n\\n\\tvar lights_phong_pars_fragment = \\\"varying vec3 vViewPosition;\\\\n#ifndef FLAT_SHADED\\\\n\\\\tvarying vec3 vNormal;\\\\n#endif\\\\nstruct BlinnPhongMaterial {\\\\n\\\\tvec3\\\\tdiffuseColor;\\\\n\\\\tvec3\\\\tspecularColor;\\\\n\\\\tfloat\\\\tspecularShininess;\\\\n\\\\tfloat\\\\tspecularStrength;\\\\n};\\\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\\\n\\\\t#ifdef TOON\\\\n\\\\t\\\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\\\n\\\\t#else\\\\n\\\\t\\\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\\\n\\\\t\\\\tvec3 irradiance = dotNL * directLight.color;\\\\n\\\\t#endif\\\\n\\\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\\\n\\\\t\\\\tirradiance *= PI;\\\\n\\\\t#endif\\\\n\\\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\\\n\\\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\\\n}\\\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\\\n\\\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\\\n}\\\\n#define RE_Direct\\\\t\\\\t\\\\t\\\\tRE_Direct_BlinnPhong\\\\n#define RE_IndirectDiffuse\\\\t\\\\tRE_IndirectDiffuse_BlinnPhong\\\\n#define Material_LightProbeLOD( material )\\\\t(0)\\\\n\\\";\\n\\n\\tvar lights_physical_fragment = \\\"PhysicalMaterial material;\\\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\\\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\\\\n#ifdef STANDARD\\\\n\\\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\\\n#else\\\\n\\\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\\\n\\\\tmaterial.clearCoat = saturate( clearCoat );\\\\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\\\\n#endif\\\\n\\\";\\n\\n\\tvar lights_physical_pars_fragment = \\\"struct PhysicalMaterial {\\\\n\\\\tvec3\\\\tdiffuseColor;\\\\n\\\\tfloat\\\\tspecularRoughness;\\\\n\\\\tvec3\\\\tspecularColor;\\\\n\\\\t#ifndef STANDARD\\\\n\\\\t\\\\tfloat clearCoat;\\\\n\\\\t\\\\tfloat clearCoatRoughness;\\\\n\\\\t#endif\\\\n};\\\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\\\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\\\\n\\\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\\\n}\\\\n#if NUM_RECT_AREA_LIGHTS > 0\\\\n\\\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\\\n\\\\t\\\\tvec3 normal = geometry.normal;\\\\n\\\\t\\\\tvec3 viewDir = geometry.viewDir;\\\\n\\\\t\\\\tvec3 position = geometry.position;\\\\n\\\\t\\\\tvec3 lightPos = rectAreaLight.position;\\\\n\\\\t\\\\tvec3 halfWidth = rectAreaLight.halfWidth;\\\\n\\\\t\\\\tvec3 halfHeight = rectAreaLight.halfHeight;\\\\n\\\\t\\\\tvec3 lightColor = rectAreaLight.color;\\\\n\\\\t\\\\tfloat roughness = material.specularRoughness;\\\\n\\\\t\\\\tvec3 rectCoords[ 4 ];\\\\n\\\\t\\\\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\\\\t\\\\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\\\\n\\\\t\\\\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\\\\n\\\\t\\\\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\\\\n\\\\t\\\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\\\n\\\\t\\\\tfloat norm = texture2D( ltcMag, uv ).a;\\\\n\\\\t\\\\tvec4 t = texture2D( ltcMat, uv );\\\\n\\\\t\\\\tmat3 mInv = mat3(\\\\n\\\\t\\\\t\\\\tvec3( 1, 0, t.y ),\\\\n\\\\t\\\\t\\\\tvec3( 0, t.z, 0 ),\\\\n\\\\t\\\\t\\\\tvec3( t.w, 0, t.x )\\\\n\\\\t\\\\t);\\\\n\\\\t\\\\treflectedLight.directSpecular += lightColor * material.specularColor * norm * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\\\n\\\\t\\\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1 ), rectCoords );\\\\n\\\\t}\\\\n#endif\\\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\\\n\\\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\\\n\\\\tvec3 irradiance = dotNL * directLight.color;\\\\n\\\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\\\n\\\\t\\\\tirradiance *= PI;\\\\n\\\\t#endif\\\\n\\\\t#ifndef STANDARD\\\\n\\\\t\\\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\\\n\\\\t#else\\\\n\\\\t\\\\tfloat clearCoatDHR = 0.0;\\\\n\\\\t#endif\\\\n\\\\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\\\\n\\\\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\\\n\\\\t#ifndef STANDARD\\\\n\\\\t\\\\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\\\n\\\\t#endif\\\\n}\\\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\\\n\\\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\\\n}\\\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\\\n\\\\t#ifndef STANDARD\\\\n\\\\t\\\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\\\n\\\\t\\\\tfloat dotNL = dotNV;\\\\n\\\\t\\\\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\\\\n\\\\t#else\\\\n\\\\t\\\\tfloat clearCoatDHR = 0.0;\\\\n\\\\t#endif\\\\n\\\\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\\\\n\\\\t#ifndef STANDARD\\\\n\\\\t\\\\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\\\\n\\\\t#endif\\\\n}\\\\n#define RE_Direct\\\\t\\\\t\\\\t\\\\tRE_Direct_Physical\\\\n#define RE_Direct_RectArea\\\\t\\\\tRE_Direct_RectArea_Physical\\\\n#define RE_IndirectDiffuse\\\\t\\\\tRE_IndirectDiffuse_Physical\\\\n#define RE_IndirectSpecular\\\\t\\\\tRE_IndirectSpecular_Physical\\\\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\\\\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\\\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\\\n\\\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\\\n}\\\\n\\\";\\n\\n\\tvar lights_template = \\\"\\\\nGeometricContext geometry;\\\\ngeometry.position = - vViewPosition;\\\\ngeometry.normal = normal;\\\\ngeometry.viewDir = normalize( vViewPosition );\\\\nIncidentLight directLight;\\\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\\\n\\\\tPointLight pointLight;\\\\n\\\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tpointLight = pointLights[ i ];\\\\n\\\\t\\\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\\\n\\\\t\\\\t#ifdef USE_SHADOWMAP\\\\n\\\\t\\\\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\tRE_Direct( directLight, geometry, material, reflectedLight );\\\\n\\\\t}\\\\n#endif\\\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\\\n\\\\tSpotLight spotLight;\\\\n\\\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tspotLight = spotLights[ i ];\\\\n\\\\t\\\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\\\n\\\\t\\\\t#ifdef USE_SHADOWMAP\\\\n\\\\t\\\\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\tRE_Direct( directLight, geometry, material, reflectedLight );\\\\n\\\\t}\\\\n#endif\\\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\\\n\\\\tDirectionalLight directionalLight;\\\\n\\\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tdirectionalLight = directionalLights[ i ];\\\\n\\\\t\\\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\\\n\\\\t\\\\t#ifdef USE_SHADOWMAP\\\\n\\\\t\\\\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\tRE_Direct( directLight, geometry, material, reflectedLight );\\\\n\\\\t}\\\\n#endif\\\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\\\n\\\\tRectAreaLight rectAreaLight;\\\\n\\\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\\\n\\\\t\\\\trectAreaLight = rectAreaLights[ i ];\\\\n\\\\t\\\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\\\n\\\\t}\\\\n#endif\\\\n#if defined( RE_IndirectDiffuse )\\\\n\\\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\\\n\\\\t#ifdef USE_LIGHTMAP\\\\n\\\\t\\\\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\\\n\\\\t\\\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\\\n\\\\t\\\\t\\\\tlightMapIrradiance *= PI;\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\tirradiance += lightMapIrradiance;\\\\n\\\\t#endif\\\\n\\\\t#if ( NUM_HEMI_LIGHTS > 0 )\\\\n\\\\t\\\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\\\n\\\\t\\\\t\\\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\\\n\\\\t\\\\t}\\\\n\\\\t#endif\\\\n\\\\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\\\\n\\\\t\\\\tirradiance += getLightProbeIndirectIrradiance( geometry, 8 );\\\\n\\\\t#endif\\\\n\\\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\\\n#endif\\\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\\\n\\\\tvec3 radiance = getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), 8 );\\\\n\\\\t#ifndef STANDARD\\\\n\\\\t\\\\tvec3 clearCoatRadiance = getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 8 );\\\\n\\\\t#else\\\\n\\\\t\\\\tvec3 clearCoatRadiance = vec3( 0.0 );\\\\n\\\\t#endif\\\\n\\\\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\\\\n#endif\\\\n\\\";\\n\\n\\tvar logdepthbuf_fragment = \\\"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\\\n\\\\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\\\\n#endif\\\";\\n\\n\\tvar logdepthbuf_pars_fragment = \\\"#ifdef USE_LOGDEPTHBUF\\\\n\\\\tuniform float logDepthBufFC;\\\\n\\\\t#ifdef USE_LOGDEPTHBUF_EXT\\\\n\\\\t\\\\tvarying float vFragDepth;\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar logdepthbuf_pars_vertex = \\\"#ifdef USE_LOGDEPTHBUF\\\\n\\\\t#ifdef USE_LOGDEPTHBUF_EXT\\\\n\\\\t\\\\tvarying float vFragDepth;\\\\n\\\\t#endif\\\\n\\\\tuniform float logDepthBufFC;\\\\n#endif\\\";\\n\\n\\tvar logdepthbuf_vertex = \\\"#ifdef USE_LOGDEPTHBUF\\\\n\\\\t#ifdef USE_LOGDEPTHBUF_EXT\\\\n\\\\t\\\\tvFragDepth = 1.0 + gl_Position.w;\\\\n\\\\t#else\\\\n\\\\t\\\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\\\n\\\\t\\\\tgl_Position.z *= gl_Position.w;\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar map_fragment = \\\"#ifdef USE_MAP\\\\n\\\\tvec4 texelColor = texture2D( map, vUv );\\\\n\\\\ttexelColor = mapTexelToLinear( texelColor );\\\\n\\\\tdiffuseColor *= texelColor;\\\\n#endif\\\\n\\\";\\n\\n\\tvar map_pars_fragment = \\\"#ifdef USE_MAP\\\\n\\\\tuniform sampler2D map;\\\\n#endif\\\\n\\\";\\n\\n\\tvar map_particle_fragment = \\\"#ifdef USE_MAP\\\\n\\\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\\\n\\\\tvec4 mapTexel = texture2D( map, uv );\\\\n\\\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\\\n#endif\\\\n\\\";\\n\\n\\tvar map_particle_pars_fragment = \\\"#ifdef USE_MAP\\\\n\\\\tuniform mat3 uvTransform;\\\\n\\\\tuniform sampler2D map;\\\\n#endif\\\\n\\\";\\n\\n\\tvar metalnessmap_fragment = \\\"float metalnessFactor = metalness;\\\\n#ifdef USE_METALNESSMAP\\\\n\\\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\\\n\\\\tmetalnessFactor *= texelMetalness.b;\\\\n#endif\\\\n\\\";\\n\\n\\tvar metalnessmap_pars_fragment = \\\"#ifdef USE_METALNESSMAP\\\\n\\\\tuniform sampler2D metalnessMap;\\\\n#endif\\\";\\n\\n\\tvar morphnormal_vertex = \\\"#ifdef USE_MORPHNORMALS\\\\n\\\\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\\\\n\\\\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\\\\n\\\\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\\\\n\\\\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\\\\n#endif\\\\n\\\";\\n\\n\\tvar morphtarget_pars_vertex = \\\"#ifdef USE_MORPHTARGETS\\\\n\\\\t#ifndef USE_MORPHNORMALS\\\\n\\\\tuniform float morphTargetInfluences[ 8 ];\\\\n\\\\t#else\\\\n\\\\tuniform float morphTargetInfluences[ 4 ];\\\\n\\\\t#endif\\\\n#endif\\\";\\n\\n\\tvar morphtarget_vertex = \\\"#ifdef USE_MORPHTARGETS\\\\n\\\\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\\\\n\\\\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\\\\n\\\\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\\\\n\\\\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\\\\n\\\\t#ifndef USE_MORPHNORMALS\\\\n\\\\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\\\\n\\\\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\\\\n\\\\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\\\\n\\\\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar normal_fragment = \\\"#ifdef FLAT_SHADED\\\\n\\\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\\\n\\\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\\\n\\\\tvec3 normal = normalize( cross( fdx, fdy ) );\\\\n#else\\\\n\\\\tvec3 normal = normalize( vNormal );\\\\n\\\\t#ifdef DOUBLE_SIDED\\\\n\\\\t\\\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\\\n\\\\t#endif\\\\n#endif\\\\n#ifdef USE_NORMALMAP\\\\n\\\\tnormal = perturbNormal2Arb( -vViewPosition, normal );\\\\n#elif defined( USE_BUMPMAP )\\\\n\\\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\\\n#endif\\\\n\\\";\\n\\n\\tvar normalmap_pars_fragment = \\\"#ifdef USE_NORMALMAP\\\\n\\\\tuniform sampler2D normalMap;\\\\n\\\\tuniform vec2 normalScale;\\\\n\\\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\\\\n\\\\t\\\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\\\n\\\\t\\\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\\\n\\\\t\\\\tvec2 st0 = dFdx( vUv.st );\\\\n\\\\t\\\\tvec2 st1 = dFdy( vUv.st );\\\\n\\\\t\\\\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\\\\n\\\\t\\\\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\\\\n\\\\t\\\\tvec3 N = normalize( surf_norm );\\\\n\\\\t\\\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\\\n\\\\t\\\\tmapN.xy = normalScale * mapN.xy;\\\\n\\\\t\\\\tmat3 tsn = mat3( S, T, N );\\\\n\\\\t\\\\treturn normalize( tsn * mapN );\\\\n\\\\t}\\\\n#endif\\\\n\\\";\\n\\n\\tvar packing = \\\"vec3 packNormalToRGB( const in vec3 normal ) {\\\\n\\\\treturn normalize( normal ) * 0.5 + 0.5;\\\\n}\\\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\\\n\\\\treturn 2.0 * rgb.xyz - 1.0;\\\\n}\\\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\\\nconst float ShiftRight8 = 1. / 256.;\\\\nvec4 packDepthToRGBA( const in float v ) {\\\\n\\\\tvec4 r = vec4( fract( v * PackFactors ), v );\\\\n\\\\tr.yzw -= r.xyz * ShiftRight8;\\\\treturn r * PackUpscale;\\\\n}\\\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\\\n\\\\treturn dot( v, UnpackFactors );\\\\n}\\\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\\\n\\\\treturn ( viewZ + near ) / ( near - far );\\\\n}\\\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\\\n\\\\treturn linearClipZ * ( near - far ) - near;\\\\n}\\\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\\\n\\\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\\\n}\\\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\\\n\\\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\\\n}\\\\n\\\";\\n\\n\\tvar premultiplied_alpha_fragment = \\\"#ifdef PREMULTIPLIED_ALPHA\\\\n\\\\tgl_FragColor.rgb *= gl_FragColor.a;\\\\n#endif\\\\n\\\";\\n\\n\\tvar project_vertex = \\\"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\\\\ngl_Position = projectionMatrix * mvPosition;\\\\n\\\";\\n\\n\\tvar dithering_fragment = \\\"#if defined( DITHERING )\\\\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\\\\n#endif\\\\n\\\";\\n\\n\\tvar dithering_pars_fragment = \\\"#if defined( DITHERING )\\\\n\\\\tvec3 dithering( vec3 color ) {\\\\n\\\\t\\\\tfloat grid_position = rand( gl_FragCoord.xy );\\\\n\\\\t\\\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\\\n\\\\t\\\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\\\n\\\\t\\\\treturn color + dither_shift_RGB;\\\\n\\\\t}\\\\n#endif\\\\n\\\";\\n\\n\\tvar roughnessmap_fragment = \\\"float roughnessFactor = roughness;\\\\n#ifdef USE_ROUGHNESSMAP\\\\n\\\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\\\n\\\\troughnessFactor *= texelRoughness.g;\\\\n#endif\\\\n\\\";\\n\\n\\tvar roughnessmap_pars_fragment = \\\"#ifdef USE_ROUGHNESSMAP\\\\n\\\\tuniform sampler2D roughnessMap;\\\\n#endif\\\";\\n\\n\\tvar shadowmap_pars_fragment = \\\"#ifdef USE_SHADOWMAP\\\\n\\\\t#if NUM_DIR_LIGHTS > 0\\\\n\\\\t\\\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\\\\n\\\\t\\\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\\\n\\\\t#endif\\\\n\\\\t#if NUM_SPOT_LIGHTS > 0\\\\n\\\\t\\\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\\\\n\\\\t\\\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\\\n\\\\t#endif\\\\n\\\\t#if NUM_POINT_LIGHTS > 0\\\\n\\\\t\\\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\\\\n\\\\t\\\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\\\n\\\\t#endif\\\\n\\\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\\\n\\\\t\\\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\\\n\\\\t}\\\\n\\\\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\\\\n\\\\t\\\\tconst vec2 offset = vec2( 0.0, 1.0 );\\\\n\\\\t\\\\tvec2 texelSize = vec2( 1.0 ) / size;\\\\n\\\\t\\\\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\\\\n\\\\t\\\\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\\\\n\\\\t\\\\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\\\\n\\\\t\\\\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\\\\n\\\\t\\\\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\\\\n\\\\t\\\\tvec2 f = fract( uv * size + 0.5 );\\\\n\\\\t\\\\tfloat a = mix( lb, lt, f.y );\\\\n\\\\t\\\\tfloat b = mix( rb, rt, f.y );\\\\n\\\\t\\\\tfloat c = mix( a, b, f.x );\\\\n\\\\t\\\\treturn c;\\\\n\\\\t}\\\\n\\\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\\\n\\\\t\\\\tfloat shadow = 1.0;\\\\n\\\\t\\\\tshadowCoord.xyz /= shadowCoord.w;\\\\n\\\\t\\\\tshadowCoord.z += shadowBias;\\\\n\\\\t\\\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\\\n\\\\t\\\\tbool inFrustum = all( inFrustumVec );\\\\n\\\\t\\\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\\\n\\\\t\\\\tbool frustumTest = all( frustumTestVec );\\\\n\\\\t\\\\tif ( frustumTest ) {\\\\n\\\\t\\\\t#if defined( SHADOWMAP_TYPE_PCF )\\\\n\\\\t\\\\t\\\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\\\n\\\\t\\\\t\\\\tfloat dx0 = - texelSize.x * shadowRadius;\\\\n\\\\t\\\\t\\\\tfloat dy0 = - texelSize.y * shadowRadius;\\\\n\\\\t\\\\t\\\\tfloat dx1 = + texelSize.x * shadowRadius;\\\\n\\\\t\\\\t\\\\tfloat dy1 = + texelSize.y * shadowRadius;\\\\n\\\\t\\\\t\\\\tshadow = (\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\\\n\\\\t\\\\t\\\\t) * ( 1.0 / 9.0 );\\\\n\\\\t\\\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\\\n\\\\t\\\\t\\\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\\\n\\\\t\\\\t\\\\tfloat dx0 = - texelSize.x * shadowRadius;\\\\n\\\\t\\\\t\\\\tfloat dy0 = - texelSize.y * shadowRadius;\\\\n\\\\t\\\\t\\\\tfloat dx1 = + texelSize.x * shadowRadius;\\\\n\\\\t\\\\t\\\\tfloat dy1 = + texelSize.y * shadowRadius;\\\\n\\\\t\\\\t\\\\tshadow = (\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\\\n\\\\t\\\\t\\\\t) * ( 1.0 / 9.0 );\\\\n\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\\\n\\\\t\\\\t#endif\\\\n\\\\t\\\\t}\\\\n\\\\t\\\\treturn shadow;\\\\n\\\\t}\\\\n\\\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\\\n\\\\t\\\\tvec3 absV = abs( v );\\\\n\\\\t\\\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\\\n\\\\t\\\\tabsV *= scaleToCube;\\\\n\\\\t\\\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\\\n\\\\t\\\\tvec2 planar = v.xy;\\\\n\\\\t\\\\tfloat almostATexel = 1.5 * texelSizeY;\\\\n\\\\t\\\\tfloat almostOne = 1.0 - almostATexel;\\\\n\\\\t\\\\tif ( absV.z >= almostOne ) {\\\\n\\\\t\\\\t\\\\tif ( v.z > 0.0 )\\\\n\\\\t\\\\t\\\\t\\\\tplanar.x = 4.0 - v.x;\\\\n\\\\t\\\\t} else if ( absV.x >= almostOne ) {\\\\n\\\\t\\\\t\\\\tfloat signX = sign( v.x );\\\\n\\\\t\\\\t\\\\tplanar.x = v.z * signX + 2.0 * signX;\\\\n\\\\t\\\\t} else if ( absV.y >= almostOne ) {\\\\n\\\\t\\\\t\\\\tfloat signY = sign( v.y );\\\\n\\\\t\\\\t\\\\tplanar.x = v.x + 2.0 * signY + 2.0;\\\\n\\\\t\\\\t\\\\tplanar.y = v.z * signY - 2.0;\\\\n\\\\t\\\\t}\\\\n\\\\t\\\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\\\n\\\\t}\\\\n\\\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\\\n\\\\t\\\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\\\n\\\\t\\\\tvec3 lightToPosition = shadowCoord.xyz;\\\\n\\\\t\\\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\\\t\\\\tdp += shadowBias;\\\\n\\\\t\\\\tvec3 bd3D = normalize( lightToPosition );\\\\n\\\\t\\\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\\\\n\\\\t\\\\t\\\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\\\n\\\\t\\\\t\\\\treturn (\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\\\n\\\\t\\\\t\\\\t\\\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\\\n\\\\t\\\\t\\\\t) * ( 1.0 / 9.0 );\\\\n\\\\t\\\\t#else\\\\n\\\\t\\\\t\\\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\\\n\\\\t\\\\t#endif\\\\n\\\\t}\\\\n#endif\\\\n\\\";\\n\\n\\tvar shadowmap_pars_vertex = \\\"#ifdef USE_SHADOWMAP\\\\n\\\\t#if NUM_DIR_LIGHTS > 0\\\\n\\\\t\\\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\\\\n\\\\t\\\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\\\\n\\\\t#endif\\\\n\\\\t#if NUM_SPOT_LIGHTS > 0\\\\n\\\\t\\\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\\\\n\\\\t\\\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\\\\n\\\\t#endif\\\\n\\\\t#if NUM_POINT_LIGHTS > 0\\\\n\\\\t\\\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\\\\n\\\\t\\\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar shadowmap_vertex = \\\"#ifdef USE_SHADOWMAP\\\\n\\\\t#if NUM_DIR_LIGHTS > 0\\\\n\\\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\\\\n\\\\t}\\\\n\\\\t#endif\\\\n\\\\t#if NUM_SPOT_LIGHTS > 0\\\\n\\\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\\\\n\\\\t}\\\\n\\\\t#endif\\\\n\\\\t#if NUM_POINT_LIGHTS > 0\\\\n\\\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\\\\n\\\\t}\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar shadowmask_pars_fragment = \\\"float getShadowMask() {\\\\n\\\\tfloat shadow = 1.0;\\\\n\\\\t#ifdef USE_SHADOWMAP\\\\n\\\\t#if NUM_DIR_LIGHTS > 0\\\\n\\\\tDirectionalLight directionalLight;\\\\n\\\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tdirectionalLight = directionalLights[ i ];\\\\n\\\\t\\\\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\\\n\\\\t}\\\\n\\\\t#endif\\\\n\\\\t#if NUM_SPOT_LIGHTS > 0\\\\n\\\\tSpotLight spotLight;\\\\n\\\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tspotLight = spotLights[ i ];\\\\n\\\\t\\\\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\\\n\\\\t}\\\\n\\\\t#endif\\\\n\\\\t#if NUM_POINT_LIGHTS > 0\\\\n\\\\tPointLight pointLight;\\\\n\\\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\\\n\\\\t\\\\tpointLight = pointLights[ i ];\\\\n\\\\t\\\\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\\\n\\\\t}\\\\n\\\\t#endif\\\\n\\\\t#endif\\\\n\\\\treturn shadow;\\\\n}\\\\n\\\";\\n\\n\\tvar skinbase_vertex = \\\"#ifdef USE_SKINNING\\\\n\\\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\\\n\\\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\\\n\\\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\\\n\\\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\\\n#endif\\\";\\n\\n\\tvar skinning_pars_vertex = \\\"#ifdef USE_SKINNING\\\\n\\\\tuniform mat4 bindMatrix;\\\\n\\\\tuniform mat4 bindMatrixInverse;\\\\n\\\\t#ifdef BONE_TEXTURE\\\\n\\\\t\\\\tuniform sampler2D boneTexture;\\\\n\\\\t\\\\tuniform int boneTextureSize;\\\\n\\\\t\\\\tmat4 getBoneMatrix( const in float i ) {\\\\n\\\\t\\\\t\\\\tfloat j = i * 4.0;\\\\n\\\\t\\\\t\\\\tfloat x = mod( j, float( boneTextureSize ) );\\\\n\\\\t\\\\t\\\\tfloat y = floor( j / float( boneTextureSize ) );\\\\n\\\\t\\\\t\\\\tfloat dx = 1.0 / float( boneTextureSize );\\\\n\\\\t\\\\t\\\\tfloat dy = 1.0 / float( boneTextureSize );\\\\n\\\\t\\\\t\\\\ty = dy * ( y + 0.5 );\\\\n\\\\t\\\\t\\\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\\\n\\\\t\\\\t\\\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\\\n\\\\t\\\\t\\\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\\\n\\\\t\\\\t\\\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\\\n\\\\t\\\\t\\\\tmat4 bone = mat4( v1, v2, v3, v4 );\\\\n\\\\t\\\\t\\\\treturn bone;\\\\n\\\\t\\\\t}\\\\n\\\\t#else\\\\n\\\\t\\\\tuniform mat4 boneMatrices[ MAX_BONES ];\\\\n\\\\t\\\\tmat4 getBoneMatrix( const in float i ) {\\\\n\\\\t\\\\t\\\\tmat4 bone = boneMatrices[ int(i) ];\\\\n\\\\t\\\\t\\\\treturn bone;\\\\n\\\\t\\\\t}\\\\n\\\\t#endif\\\\n#endif\\\\n\\\";\\n\\n\\tvar skinning_vertex = \\\"#ifdef USE_SKINNING\\\\n\\\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\\\n\\\\tvec4 skinned = vec4( 0.0 );\\\\n\\\\tskinned += boneMatX * skinVertex * skinWeight.x;\\\\n\\\\tskinned += boneMatY * skinVertex * skinWeight.y;\\\\n\\\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\\\n\\\\tskinned += boneMatW * skinVertex * skinWeight.w;\\\\n\\\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\\\n#endif\\\\n\\\";\\n\\n\\tvar skinnormal_vertex = \\\"#ifdef USE_SKINNING\\\\n\\\\tmat4 skinMatrix = mat4( 0.0 );\\\\n\\\\tskinMatrix += skinWeight.x * boneMatX;\\\\n\\\\tskinMatrix += skinWeight.y * boneMatY;\\\\n\\\\tskinMatrix += skinWeight.z * boneMatZ;\\\\n\\\\tskinMatrix += skinWeight.w * boneMatW;\\\\n\\\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\\\n\\\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\\\n#endif\\\\n\\\";\\n\\n\\tvar specularmap_fragment = \\\"float specularStrength;\\\\n#ifdef USE_SPECULARMAP\\\\n\\\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\\\n\\\\tspecularStrength = texelSpecular.r;\\\\n#else\\\\n\\\\tspecularStrength = 1.0;\\\\n#endif\\\";\\n\\n\\tvar specularmap_pars_fragment = \\\"#ifdef USE_SPECULARMAP\\\\n\\\\tuniform sampler2D specularMap;\\\\n#endif\\\";\\n\\n\\tvar tonemapping_fragment = \\\"#if defined( TONE_MAPPING )\\\\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\\\n#endif\\\\n\\\";\\n\\n\\tvar tonemapping_pars_fragment = \\\"#ifndef saturate\\\\n\\\\t#define saturate(a) clamp( a, 0.0, 1.0 )\\\\n#endif\\\\nuniform float toneMappingExposure;\\\\nuniform float toneMappingWhitePoint;\\\\nvec3 LinearToneMapping( vec3 color ) {\\\\n\\\\treturn toneMappingExposure * color;\\\\n}\\\\nvec3 ReinhardToneMapping( vec3 color ) {\\\\n\\\\tcolor *= toneMappingExposure;\\\\n\\\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\\\n}\\\\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\\\\nvec3 Uncharted2ToneMapping( vec3 color ) {\\\\n\\\\tcolor *= toneMappingExposure;\\\\n\\\\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\\\\n}\\\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\\\n\\\\tcolor *= toneMappingExposure;\\\\n\\\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\\\n\\\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\\\n}\\\\n\\\";\\n\\n\\tvar uv_pars_fragment = \\\"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\\\n\\\\tvarying vec2 vUv;\\\\n#endif\\\";\\n\\n\\tvar uv_pars_vertex = \\\"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\\\n\\\\tvarying vec2 vUv;\\\\n\\\\tuniform mat3 uvTransform;\\\\n#endif\\\\n\\\";\\n\\n\\tvar uv_vertex = \\\"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\\\\n\\\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\\\n#endif\\\";\\n\\n\\tvar uv2_pars_fragment = \\\"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\\\n\\\\tvarying vec2 vUv2;\\\\n#endif\\\";\\n\\n\\tvar uv2_pars_vertex = \\\"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\\\n\\\\tattribute vec2 uv2;\\\\n\\\\tvarying vec2 vUv2;\\\\n#endif\\\";\\n\\n\\tvar uv2_vertex = \\\"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\\\n\\\\tvUv2 = uv2;\\\\n#endif\\\";\\n\\n\\tvar worldpos_vertex = \\\"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\\\n\\\\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\\\\n#endif\\\\n\\\";\\n\\n\\tvar cube_frag = \\\"uniform samplerCube tCube;\\\\nuniform float tFlip;\\\\nuniform float opacity;\\\\nvarying vec3 vWorldPosition;\\\\nvoid main() {\\\\n\\\\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\\\\n\\\\tgl_FragColor.a *= opacity;\\\\n}\\\\n\\\";\\n\\n\\tvar cube_vert = \\\"varying vec3 vWorldPosition;\\\\n#include \\\\nvoid main() {\\\\n\\\\tvWorldPosition = transformDirection( position, modelMatrix );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tgl_Position.z = gl_Position.w;\\\\n}\\\\n\\\";\\n\\n\\tvar depth_frag = \\\"#if DEPTH_PACKING == 3200\\\\n\\\\tuniform float opacity;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tvec4 diffuseColor = vec4( 1.0 );\\\\n\\\\t#if DEPTH_PACKING == 3200\\\\n\\\\t\\\\tdiffuseColor.a = opacity;\\\\n\\\\t#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#if DEPTH_PACKING == 3200\\\\n\\\\t\\\\tgl_FragColor = vec4( vec3( gl_FragCoord.z ), opacity );\\\\n\\\\t#elif DEPTH_PACKING == 3201\\\\n\\\\t\\\\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\\\\n\\\\t#endif\\\\n}\\\\n\\\";\\n\\n\\tvar depth_vert = \\\"#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#ifdef USE_DISPLACEMENTMAP\\\\n\\\\t\\\\t#include \\\\n\\\\t\\\\t#include \\\\n\\\\t\\\\t#include \\\\n\\\\t#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar distanceRGBA_frag = \\\"#define DISTANCE\\\\nuniform vec3 referencePosition;\\\\nuniform float nearDistance;\\\\nuniform float farDistance;\\\\nvarying vec3 vWorldPosition;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main () {\\\\n\\\\t#include \\\\n\\\\tvec4 diffuseColor = vec4( 1.0 );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tfloat dist = length( vWorldPosition - referencePosition );\\\\n\\\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\\\n\\\\tdist = saturate( dist );\\\\n\\\\tgl_FragColor = packDepthToRGBA( dist );\\\\n}\\\\n\\\";\\n\\n\\tvar distanceRGBA_vert = \\\"#define DISTANCE\\\\nvarying vec3 vWorldPosition;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#ifdef USE_DISPLACEMENTMAP\\\\n\\\\t\\\\t#include \\\\n\\\\t\\\\t#include \\\\n\\\\t\\\\t#include \\\\n\\\\t#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tvWorldPosition = worldPosition.xyz;\\\\n}\\\\n\\\";\\n\\n\\tvar equirect_frag = \\\"uniform sampler2D tEquirect;\\\\nvarying vec3 vWorldPosition;\\\\n#include \\\\nvoid main() {\\\\n\\\\tvec3 direction = normalize( vWorldPosition );\\\\n\\\\tvec2 sampleUV;\\\\n\\\\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\\\n\\\\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\\\\n\\\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\\\n}\\\\n\\\";\\n\\n\\tvar equirect_vert = \\\"varying vec3 vWorldPosition;\\\\n#include \\\\nvoid main() {\\\\n\\\\tvWorldPosition = transformDirection( position, modelMatrix );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar linedashed_frag = \\\"uniform vec3 diffuse;\\\\nuniform float opacity;\\\\nuniform float dashSize;\\\\nuniform float totalSize;\\\\nvarying float vLineDistance;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\\\n\\\\t\\\\tdiscard;\\\\n\\\\t}\\\\n\\\\tvec3 outgoingLight = vec3( 0.0 );\\\\n\\\\tvec4 diffuseColor = vec4( diffuse, opacity );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\toutgoingLight = diffuseColor.rgb;\\\\n\\\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar linedashed_vert = \\\"uniform float scale;\\\\nattribute float lineDistance;\\\\nvarying float vLineDistance;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tvLineDistance = scale * lineDistance;\\\\n\\\\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\\\\n\\\\tgl_Position = projectionMatrix * mvPosition;\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshbasic_frag = \\\"uniform vec3 diffuse;\\\\nuniform float opacity;\\\\n#ifndef FLAT_SHADED\\\\n\\\\tvarying vec3 vNormal;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tvec4 diffuseColor = vec4( diffuse, opacity );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\\\n\\\\t#ifdef USE_LIGHTMAP\\\\n\\\\t\\\\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\\\\n\\\\t#else\\\\n\\\\t\\\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\\\n\\\\t#endif\\\\n\\\\t#include \\\\n\\\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\\\n\\\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\\\n\\\\t#include \\\\n\\\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshbasic_vert = \\\"#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#ifdef USE_ENVMAP\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshlambert_frag = \\\"uniform vec3 diffuse;\\\\nuniform vec3 emissive;\\\\nuniform float opacity;\\\\nvarying vec3 vLightFront;\\\\n#ifdef DOUBLE_SIDED\\\\n\\\\tvarying vec3 vLightBack;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tvec4 diffuseColor = vec4( diffuse, opacity );\\\\n\\\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\\\n\\\\tvec3 totalEmissiveRadiance = emissive;\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\\\\n\\\\t#include \\\\n\\\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\\\n\\\\t#ifdef DOUBLE_SIDED\\\\n\\\\t\\\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\\\n\\\\t#else\\\\n\\\\t\\\\treflectedLight.directDiffuse = vLightFront;\\\\n\\\\t#endif\\\\n\\\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\\\n\\\\t#include \\\\n\\\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\\\n\\\\t#include \\\\n\\\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshlambert_vert = \\\"#define LAMBERT\\\\nvarying vec3 vLightFront;\\\\n#ifdef DOUBLE_SIDED\\\\n\\\\tvarying vec3 vLightBack;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshphong_frag = \\\"#define PHONG\\\\nuniform vec3 diffuse;\\\\nuniform vec3 emissive;\\\\nuniform vec3 specular;\\\\nuniform float shininess;\\\\nuniform float opacity;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tvec4 diffuseColor = vec4( diffuse, opacity );\\\\n\\\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\\\n\\\\tvec3 totalEmissiveRadiance = emissive;\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\\\n\\\\t#include \\\\n\\\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshphong_vert = \\\"#define PHONG\\\\nvarying vec3 vViewPosition;\\\\n#ifndef FLAT_SHADED\\\\n\\\\tvarying vec3 vNormal;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n#ifndef FLAT_SHADED\\\\n\\\\tvNormal = normalize( transformedNormal );\\\\n#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tvViewPosition = - mvPosition.xyz;\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshphysical_frag = \\\"#define PHYSICAL\\\\nuniform vec3 diffuse;\\\\nuniform vec3 emissive;\\\\nuniform float roughness;\\\\nuniform float metalness;\\\\nuniform float opacity;\\\\n#ifndef STANDARD\\\\n\\\\tuniform float clearCoat;\\\\n\\\\tuniform float clearCoatRoughness;\\\\n#endif\\\\nvarying vec3 vViewPosition;\\\\n#ifndef FLAT_SHADED\\\\n\\\\tvarying vec3 vNormal;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tvec4 diffuseColor = vec4( diffuse, opacity );\\\\n\\\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\\\n\\\\tvec3 totalEmissiveRadiance = emissive;\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\\\n\\\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar meshphysical_vert = \\\"#define PHYSICAL\\\\nvarying vec3 vViewPosition;\\\\n#ifndef FLAT_SHADED\\\\n\\\\tvarying vec3 vNormal;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n#ifndef FLAT_SHADED\\\\n\\\\tvNormal = normalize( transformedNormal );\\\\n#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tvViewPosition = - mvPosition.xyz;\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar normal_frag = \\\"#define NORMAL\\\\nuniform float opacity;\\\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\\\\n\\\\tvarying vec3 vViewPosition;\\\\n#endif\\\\n#ifndef FLAT_SHADED\\\\n\\\\tvarying vec3 vNormal;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\\\n}\\\\n\\\";\\n\\n\\tvar normal_vert = \\\"#define NORMAL\\\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\\\\n\\\\tvarying vec3 vViewPosition;\\\\n#endif\\\\n#ifndef FLAT_SHADED\\\\n\\\\tvarying vec3 vNormal;\\\\n#endif\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n#ifndef FLAT_SHADED\\\\n\\\\tvNormal = normalize( transformedNormal );\\\\n#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\\\\n\\\\tvViewPosition = - mvPosition.xyz;\\\\n#endif\\\\n}\\\\n\\\";\\n\\n\\tvar points_frag = \\\"uniform vec3 diffuse;\\\\nuniform float opacity;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\tvec3 outgoingLight = vec3( 0.0 );\\\\n\\\\tvec4 diffuseColor = vec4( diffuse, opacity );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\toutgoingLight = diffuseColor.rgb;\\\\n\\\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar points_vert = \\\"uniform float size;\\\\nuniform float scale;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#ifdef USE_SIZEATTENUATION\\\\n\\\\t\\\\tgl_PointSize = size * ( scale / - mvPosition.z );\\\\n\\\\t#else\\\\n\\\\t\\\\tgl_PointSize = size;\\\\n\\\\t#endif\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar shadow_frag = \\\"uniform vec3 color;\\\\nuniform float opacity;\\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\n#include \\\\nvoid main() {\\\\n\\\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar shadow_vert = \\\"#include \\\\n#include \\\\nvoid main() {\\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n\\\\t#include \\\\n}\\\\n\\\";\\n\\n\\tvar ShaderChunk = {\\n\\t\\talphamap_fragment: alphamap_fragment,\\n\\t\\talphamap_pars_fragment: alphamap_pars_fragment,\\n\\t\\talphatest_fragment: alphatest_fragment,\\n\\t\\taomap_fragment: aomap_fragment,\\n\\t\\taomap_pars_fragment: aomap_pars_fragment,\\n\\t\\tbegin_vertex: begin_vertex,\\n\\t\\tbeginnormal_vertex: beginnormal_vertex,\\n\\t\\tbsdfs: bsdfs,\\n\\t\\tbumpmap_pars_fragment: bumpmap_pars_fragment,\\n\\t\\tclipping_planes_fragment: clipping_planes_fragment,\\n\\t\\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\\n\\t\\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\\n\\t\\tclipping_planes_vertex: clipping_planes_vertex,\\n\\t\\tcolor_fragment: color_fragment,\\n\\t\\tcolor_pars_fragment: color_pars_fragment,\\n\\t\\tcolor_pars_vertex: color_pars_vertex,\\n\\t\\tcolor_vertex: color_vertex,\\n\\t\\tcommon: common,\\n\\t\\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\\n\\t\\tdefaultnormal_vertex: defaultnormal_vertex,\\n\\t\\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\\n\\t\\tdisplacementmap_vertex: displacementmap_vertex,\\n\\t\\temissivemap_fragment: emissivemap_fragment,\\n\\t\\temissivemap_pars_fragment: emissivemap_pars_fragment,\\n\\t\\tencodings_fragment: encodings_fragment,\\n\\t\\tencodings_pars_fragment: encodings_pars_fragment,\\n\\t\\tenvmap_fragment: envmap_fragment,\\n\\t\\tenvmap_pars_fragment: envmap_pars_fragment,\\n\\t\\tenvmap_pars_vertex: envmap_pars_vertex,\\n\\t\\tenvmap_vertex: envmap_vertex,\\n\\t\\tfog_vertex: fog_vertex,\\n\\t\\tfog_pars_vertex: fog_pars_vertex,\\n\\t\\tfog_fragment: fog_fragment,\\n\\t\\tfog_pars_fragment: fog_pars_fragment,\\n\\t\\tgradientmap_pars_fragment: gradientmap_pars_fragment,\\n\\t\\tlightmap_fragment: lightmap_fragment,\\n\\t\\tlightmap_pars_fragment: lightmap_pars_fragment,\\n\\t\\tlights_lambert_vertex: lights_lambert_vertex,\\n\\t\\tlights_pars: lights_pars,\\n\\t\\tlights_phong_fragment: lights_phong_fragment,\\n\\t\\tlights_phong_pars_fragment: lights_phong_pars_fragment,\\n\\t\\tlights_physical_fragment: lights_physical_fragment,\\n\\t\\tlights_physical_pars_fragment: lights_physical_pars_fragment,\\n\\t\\tlights_template: lights_template,\\n\\t\\tlogdepthbuf_fragment: logdepthbuf_fragment,\\n\\t\\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\\n\\t\\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\\n\\t\\tlogdepthbuf_vertex: logdepthbuf_vertex,\\n\\t\\tmap_fragment: map_fragment,\\n\\t\\tmap_pars_fragment: map_pars_fragment,\\n\\t\\tmap_particle_fragment: map_particle_fragment,\\n\\t\\tmap_particle_pars_fragment: map_particle_pars_fragment,\\n\\t\\tmetalnessmap_fragment: metalnessmap_fragment,\\n\\t\\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\\n\\t\\tmorphnormal_vertex: morphnormal_vertex,\\n\\t\\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\\n\\t\\tmorphtarget_vertex: morphtarget_vertex,\\n\\t\\tnormal_fragment: normal_fragment,\\n\\t\\tnormalmap_pars_fragment: normalmap_pars_fragment,\\n\\t\\tpacking: packing,\\n\\t\\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\\n\\t\\tproject_vertex: project_vertex,\\n\\t\\tdithering_fragment: dithering_fragment,\\n\\t\\tdithering_pars_fragment: dithering_pars_fragment,\\n\\t\\troughnessmap_fragment: roughnessmap_fragment,\\n\\t\\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\\n\\t\\tshadowmap_pars_fragment: shadowmap_pars_fragment,\\n\\t\\tshadowmap_pars_vertex: shadowmap_pars_vertex,\\n\\t\\tshadowmap_vertex: shadowmap_vertex,\\n\\t\\tshadowmask_pars_fragment: shadowmask_pars_fragment,\\n\\t\\tskinbase_vertex: skinbase_vertex,\\n\\t\\tskinning_pars_vertex: skinning_pars_vertex,\\n\\t\\tskinning_vertex: skinning_vertex,\\n\\t\\tskinnormal_vertex: skinnormal_vertex,\\n\\t\\tspecularmap_fragment: specularmap_fragment,\\n\\t\\tspecularmap_pars_fragment: specularmap_pars_fragment,\\n\\t\\ttonemapping_fragment: tonemapping_fragment,\\n\\t\\ttonemapping_pars_fragment: tonemapping_pars_fragment,\\n\\t\\tuv_pars_fragment: uv_pars_fragment,\\n\\t\\tuv_pars_vertex: uv_pars_vertex,\\n\\t\\tuv_vertex: uv_vertex,\\n\\t\\tuv2_pars_fragment: uv2_pars_fragment,\\n\\t\\tuv2_pars_vertex: uv2_pars_vertex,\\n\\t\\tuv2_vertex: uv2_vertex,\\n\\t\\tworldpos_vertex: worldpos_vertex,\\n\\n\\t\\tcube_frag: cube_frag,\\n\\t\\tcube_vert: cube_vert,\\n\\t\\tdepth_frag: depth_frag,\\n\\t\\tdepth_vert: depth_vert,\\n\\t\\tdistanceRGBA_frag: distanceRGBA_frag,\\n\\t\\tdistanceRGBA_vert: distanceRGBA_vert,\\n\\t\\tequirect_frag: equirect_frag,\\n\\t\\tequirect_vert: equirect_vert,\\n\\t\\tlinedashed_frag: linedashed_frag,\\n\\t\\tlinedashed_vert: linedashed_vert,\\n\\t\\tmeshbasic_frag: meshbasic_frag,\\n\\t\\tmeshbasic_vert: meshbasic_vert,\\n\\t\\tmeshlambert_frag: meshlambert_frag,\\n\\t\\tmeshlambert_vert: meshlambert_vert,\\n\\t\\tmeshphong_frag: meshphong_frag,\\n\\t\\tmeshphong_vert: meshphong_vert,\\n\\t\\tmeshphysical_frag: meshphysical_frag,\\n\\t\\tmeshphysical_vert: meshphysical_vert,\\n\\t\\tnormal_frag: normal_frag,\\n\\t\\tnormal_vert: normal_vert,\\n\\t\\tpoints_frag: points_frag,\\n\\t\\tpoints_vert: points_vert,\\n\\t\\tshadow_frag: shadow_frag,\\n\\t\\tshadow_vert: shadow_vert\\n\\t};\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t */\\n\\n\\tvar ShaderLib = {\\n\\n\\t\\tbasic: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.specularmap,\\n\\t\\t\\t\\tUniformsLib.envmap,\\n\\t\\t\\t\\tUniformsLib.aomap,\\n\\t\\t\\t\\tUniformsLib.lightmap,\\n\\t\\t\\t\\tUniformsLib.fog\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.meshbasic_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.meshbasic_frag\\n\\n\\t\\t},\\n\\n\\t\\tlambert: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.specularmap,\\n\\t\\t\\t\\tUniformsLib.envmap,\\n\\t\\t\\t\\tUniformsLib.aomap,\\n\\t\\t\\t\\tUniformsLib.lightmap,\\n\\t\\t\\t\\tUniformsLib.emissivemap,\\n\\t\\t\\t\\tUniformsLib.fog,\\n\\t\\t\\t\\tUniformsLib.lights,\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\temissive: { value: new Color( 0x000000 ) }\\n\\t\\t\\t\\t}\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.meshlambert_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.meshlambert_frag\\n\\n\\t\\t},\\n\\n\\t\\tphong: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.specularmap,\\n\\t\\t\\t\\tUniformsLib.envmap,\\n\\t\\t\\t\\tUniformsLib.aomap,\\n\\t\\t\\t\\tUniformsLib.lightmap,\\n\\t\\t\\t\\tUniformsLib.emissivemap,\\n\\t\\t\\t\\tUniformsLib.bumpmap,\\n\\t\\t\\t\\tUniformsLib.normalmap,\\n\\t\\t\\t\\tUniformsLib.displacementmap,\\n\\t\\t\\t\\tUniformsLib.gradientmap,\\n\\t\\t\\t\\tUniformsLib.fog,\\n\\t\\t\\t\\tUniformsLib.lights,\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\temissive: { value: new Color( 0x000000 ) },\\n\\t\\t\\t\\t\\tspecular: { value: new Color( 0x111111 ) },\\n\\t\\t\\t\\t\\tshininess: { value: 30 }\\n\\t\\t\\t\\t}\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.meshphong_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.meshphong_frag\\n\\n\\t\\t},\\n\\n\\t\\tstandard: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.envmap,\\n\\t\\t\\t\\tUniformsLib.aomap,\\n\\t\\t\\t\\tUniformsLib.lightmap,\\n\\t\\t\\t\\tUniformsLib.emissivemap,\\n\\t\\t\\t\\tUniformsLib.bumpmap,\\n\\t\\t\\t\\tUniformsLib.normalmap,\\n\\t\\t\\t\\tUniformsLib.displacementmap,\\n\\t\\t\\t\\tUniformsLib.roughnessmap,\\n\\t\\t\\t\\tUniformsLib.metalnessmap,\\n\\t\\t\\t\\tUniformsLib.fog,\\n\\t\\t\\t\\tUniformsLib.lights,\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\temissive: { value: new Color( 0x000000 ) },\\n\\t\\t\\t\\t\\troughness: { value: 0.5 },\\n\\t\\t\\t\\t\\tmetalness: { value: 0.5 },\\n\\t\\t\\t\\t\\tenvMapIntensity: { value: 1 } // temporary\\n\\t\\t\\t\\t}\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.meshphysical_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.meshphysical_frag\\n\\n\\t\\t},\\n\\n\\t\\tpoints: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.points,\\n\\t\\t\\t\\tUniformsLib.fog\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.points_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.points_frag\\n\\n\\t\\t},\\n\\n\\t\\tdashed: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.fog,\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\tscale: { value: 1 },\\n\\t\\t\\t\\t\\tdashSize: { value: 1 },\\n\\t\\t\\t\\t\\ttotalSize: { value: 2 }\\n\\t\\t\\t\\t}\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.linedashed_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.linedashed_frag\\n\\n\\t\\t},\\n\\n\\t\\tdepth: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.displacementmap\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.depth_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.depth_frag\\n\\n\\t\\t},\\n\\n\\t\\tnormal: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.bumpmap,\\n\\t\\t\\t\\tUniformsLib.normalmap,\\n\\t\\t\\t\\tUniformsLib.displacementmap,\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\topacity: { value: 1.0 }\\n\\t\\t\\t\\t}\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.normal_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.normal_frag\\n\\n\\t\\t},\\n\\n\\t\\t/* -------------------------------------------------------------------------\\n\\t\\t//\\tCube map shader\\n\\t\\t ------------------------------------------------------------------------- */\\n\\n\\t\\tcube: {\\n\\n\\t\\t\\tuniforms: {\\n\\t\\t\\t\\ttCube: { value: null },\\n\\t\\t\\t\\ttFlip: { value: - 1 },\\n\\t\\t\\t\\topacity: { value: 1.0 }\\n\\t\\t\\t},\\n\\n\\t\\t\\tvertexShader: ShaderChunk.cube_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.cube_frag\\n\\n\\t\\t},\\n\\n\\t\\tequirect: {\\n\\n\\t\\t\\tuniforms: {\\n\\t\\t\\t\\ttEquirect: { value: null },\\n\\t\\t\\t},\\n\\n\\t\\t\\tvertexShader: ShaderChunk.equirect_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.equirect_frag\\n\\n\\t\\t},\\n\\n\\t\\tdistanceRGBA: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.common,\\n\\t\\t\\t\\tUniformsLib.displacementmap,\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\treferencePosition: { value: new Vector3() },\\n\\t\\t\\t\\t\\tnearDistance: { value: 1 },\\n\\t\\t\\t\\t\\tfarDistance: { value: 1000 }\\n\\t\\t\\t\\t}\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.distanceRGBA_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.distanceRGBA_frag\\n\\n\\t\\t},\\n\\n\\t\\tshadow: {\\n\\n\\t\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\t\\tUniformsLib.lights,\\n\\t\\t\\t\\tUniformsLib.fog,\\n\\t\\t\\t\\t{\\n\\t\\t\\t\\t\\tcolor: { value: new Color( 0x00000 ) },\\n\\t\\t\\t\\t\\topacity: { value: 1.0 }\\n\\t\\t\\t\\t},\\n\\t\\t\\t] ),\\n\\n\\t\\t\\tvertexShader: ShaderChunk.shadow_vert,\\n\\t\\t\\tfragmentShader: ShaderChunk.shadow_frag\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\tShaderLib.physical = {\\n\\n\\t\\tuniforms: UniformsUtils.merge( [\\n\\t\\t\\tShaderLib.standard.uniforms,\\n\\t\\t\\t{\\n\\t\\t\\t\\tclearCoat: { value: 0 },\\n\\t\\t\\t\\tclearCoatRoughness: { value: 0 }\\n\\t\\t\\t}\\n\\t\\t] ),\\n\\n\\t\\tvertexShader: ShaderChunk.meshphysical_vert,\\n\\t\\tfragmentShader: ShaderChunk.meshphysical_frag\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tfunction Box2( min, max ) {\\n\\n\\t\\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\\n\\t\\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\\n\\n\\t}\\n\\n\\tObject.assign( Box2.prototype, {\\n\\n\\t\\tset: function ( min, max ) {\\n\\n\\t\\t\\tthis.min.copy( min );\\n\\t\\t\\tthis.max.copy( max );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromPoints: function ( points ) {\\n\\n\\t\\t\\tthis.makeEmpty();\\n\\n\\t\\t\\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.expandByPoint( points[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromCenterAndSize: function () {\\n\\n\\t\\t\\tvar v1 = new Vector2();\\n\\n\\t\\t\\treturn function setFromCenterAndSize( center, size ) {\\n\\n\\t\\t\\t\\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\\n\\t\\t\\t\\tthis.min.copy( center ).sub( halfSize );\\n\\t\\t\\t\\tthis.max.copy( center ).add( halfSize );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( box ) {\\n\\n\\t\\t\\tthis.min.copy( box.min );\\n\\t\\t\\tthis.max.copy( box.max );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeEmpty: function () {\\n\\n\\t\\t\\tthis.min.x = this.min.y = + Infinity;\\n\\t\\t\\tthis.max.x = this.max.y = - Infinity;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tisEmpty: function () {\\n\\n\\t\\t\\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\\n\\n\\t\\t\\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\\n\\n\\t\\t},\\n\\n\\t\\tgetCenter: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector2();\\n\\t\\t\\treturn this.isEmpty() ? result.set( 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\\n\\n\\t\\t},\\n\\n\\t\\tgetSize: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector2();\\n\\t\\t\\treturn this.isEmpty() ? result.set( 0, 0 ) : result.subVectors( this.max, this.min );\\n\\n\\t\\t},\\n\\n\\t\\texpandByPoint: function ( point ) {\\n\\n\\t\\t\\tthis.min.min( point );\\n\\t\\t\\tthis.max.max( point );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\texpandByVector: function ( vector ) {\\n\\n\\t\\t\\tthis.min.sub( vector );\\n\\t\\t\\tthis.max.add( vector );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\texpandByScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.min.addScalar( - scalar );\\n\\t\\t\\tthis.max.addScalar( scalar );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcontainsPoint: function ( point ) {\\n\\n\\t\\t\\treturn point.x < this.min.x || point.x > this.max.x ||\\n\\t\\t\\t\\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\\n\\n\\t\\t},\\n\\n\\t\\tcontainsBox: function ( box ) {\\n\\n\\t\\t\\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\\n\\t\\t\\t\\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\\n\\n\\t\\t},\\n\\n\\t\\tgetParameter: function ( point, optionalTarget ) {\\n\\n\\t\\t\\t// This can potentially have a divide by zero if the box\\n\\t\\t\\t// has a size dimension of 0.\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector2();\\n\\n\\t\\t\\treturn result.set(\\n\\t\\t\\t\\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\\n\\t\\t\\t\\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\\n\\t\\t\\t);\\n\\n\\t\\t},\\n\\n\\t\\tintersectsBox: function ( box ) {\\n\\n\\t\\t\\t// using 4 splitting planes to rule out intersections\\n\\n\\t\\t\\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\\n\\t\\t\\t\\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\\n\\n\\t\\t},\\n\\n\\t\\tclampPoint: function ( point, optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector2();\\n\\t\\t\\treturn result.copy( point ).clamp( this.min, this.max );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToPoint: function () {\\n\\n\\t\\t\\tvar v1 = new Vector2();\\n\\n\\t\\t\\treturn function distanceToPoint( point ) {\\n\\n\\t\\t\\t\\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\\n\\t\\t\\t\\treturn clampedPoint.sub( point ).length();\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tintersect: function ( box ) {\\n\\n\\t\\t\\tthis.min.max( box.min );\\n\\t\\t\\tthis.max.min( box.max );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tunion: function ( box ) {\\n\\n\\t\\t\\tthis.min.min( box.min );\\n\\t\\t\\tthis.max.max( box.max );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttranslate: function ( offset ) {\\n\\n\\t\\t\\tthis.min.add( offset );\\n\\t\\t\\tthis.max.add( offset );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( box ) {\\n\\n\\t\\t\\treturn box.min.equals( this.min ) && box.max.equals( this.max );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction WebGLFlareRenderer( renderer, gl, state, textures, capabilities ) {\\n\\n\\t\\tvar vertexBuffer, elementBuffer;\\n\\t\\tvar shader, program, attributes, uniforms;\\n\\n\\t\\tvar tempTexture, occlusionTexture;\\n\\n\\t\\tfunction init() {\\n\\n\\t\\t\\tvar vertices = new Float32Array( [\\n\\t\\t\\t\\t- 1, - 1, 0, 0,\\n\\t\\t\\t\\t 1, - 1, 1, 0,\\n\\t\\t\\t\\t 1, 1, 1, 1,\\n\\t\\t\\t\\t- 1, 1, 0, 1\\n\\t\\t\\t] );\\n\\n\\t\\t\\tvar faces = new Uint16Array( [\\n\\t\\t\\t\\t0, 1, 2,\\n\\t\\t\\t\\t0, 2, 3\\n\\t\\t\\t] );\\n\\n\\t\\t\\t// buffers\\n\\n\\t\\t\\tvertexBuffer = gl.createBuffer();\\n\\t\\t\\telementBuffer = gl.createBuffer();\\n\\n\\t\\t\\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\\n\\t\\t\\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\\n\\n\\t\\t\\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\\n\\t\\t\\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\\n\\n\\t\\t\\t// textures\\n\\n\\t\\t\\ttempTexture = gl.createTexture();\\n\\t\\t\\tocclusionTexture = gl.createTexture();\\n\\n\\t\\t\\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\\n\\t\\t\\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\\n\\n\\t\\t\\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\\n\\t\\t\\tgl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\\n\\t\\t\\tgl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\\n\\n\\t\\t\\tshader = {\\n\\n\\t\\t\\t\\tvertexShader: [\\n\\n\\t\\t\\t\\t\\t'uniform lowp int renderType;',\\n\\n\\t\\t\\t\\t\\t'uniform vec3 screenPosition;',\\n\\t\\t\\t\\t\\t'uniform vec2 scale;',\\n\\t\\t\\t\\t\\t'uniform float rotation;',\\n\\n\\t\\t\\t\\t\\t'uniform sampler2D occlusionMap;',\\n\\n\\t\\t\\t\\t\\t'attribute vec2 position;',\\n\\t\\t\\t\\t\\t'attribute vec2 uv;',\\n\\n\\t\\t\\t\\t\\t'varying vec2 vUV;',\\n\\t\\t\\t\\t\\t'varying float vVisibility;',\\n\\n\\t\\t\\t\\t\\t'void main() {',\\n\\n\\t\\t\\t\\t\\t'\\tvUV = uv;',\\n\\n\\t\\t\\t\\t\\t'\\tvec2 pos = position;',\\n\\n\\t\\t\\t\\t\\t'\\tif ( renderType == 2 ) {',\\n\\n\\t\\t\\t\\t\\t'\\t\\tvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );',\\n\\t\\t\\t\\t\\t'\\t\\tvisibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );',\\n\\n\\t\\t\\t\\t\\t'\\t\\tvVisibility = visibility.r / 9.0;',\\n\\t\\t\\t\\t\\t'\\t\\tvVisibility *= 1.0 - visibility.g / 9.0;',\\n\\t\\t\\t\\t\\t'\\t\\tvVisibility *= visibility.b / 9.0;',\\n\\t\\t\\t\\t\\t'\\t\\tvVisibility *= 1.0 - visibility.a / 9.0;',\\n\\n\\t\\t\\t\\t\\t'\\t\\tpos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;',\\n\\t\\t\\t\\t\\t'\\t\\tpos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;',\\n\\n\\t\\t\\t\\t\\t'\\t}',\\n\\n\\t\\t\\t\\t\\t'\\tgl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );',\\n\\n\\t\\t\\t\\t\\t'}'\\n\\n\\t\\t\\t\\t].join( '\\\\n' ),\\n\\n\\t\\t\\t\\tfragmentShader: [\\n\\n\\t\\t\\t\\t\\t'uniform lowp int renderType;',\\n\\n\\t\\t\\t\\t\\t'uniform sampler2D map;',\\n\\t\\t\\t\\t\\t'uniform float opacity;',\\n\\t\\t\\t\\t\\t'uniform vec3 color;',\\n\\n\\t\\t\\t\\t\\t'varying vec2 vUV;',\\n\\t\\t\\t\\t\\t'varying float vVisibility;',\\n\\n\\t\\t\\t\\t\\t'void main() {',\\n\\n\\t\\t\\t\\t\\t// pink square\\n\\n\\t\\t\\t\\t\\t'\\tif ( renderType == 0 ) {',\\n\\n\\t\\t\\t\\t\\t'\\t\\tgl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );',\\n\\n\\t\\t\\t\\t\\t// restore\\n\\n\\t\\t\\t\\t\\t'\\t} else if ( renderType == 1 ) {',\\n\\n\\t\\t\\t\\t\\t'\\t\\tgl_FragColor = texture2D( map, vUV );',\\n\\n\\t\\t\\t\\t\\t// flare\\n\\n\\t\\t\\t\\t\\t'\\t} else {',\\n\\n\\t\\t\\t\\t\\t'\\t\\tvec4 texture = texture2D( map, vUV );',\\n\\t\\t\\t\\t\\t'\\t\\ttexture.a *= opacity * vVisibility;',\\n\\t\\t\\t\\t\\t'\\t\\tgl_FragColor = texture;',\\n\\t\\t\\t\\t\\t'\\t\\tgl_FragColor.rgb *= color;',\\n\\n\\t\\t\\t\\t\\t'\\t}',\\n\\n\\t\\t\\t\\t\\t'}'\\n\\n\\t\\t\\t\\t].join( '\\\\n' )\\n\\n\\t\\t\\t};\\n\\n\\t\\t\\tprogram = createProgram( shader );\\n\\n\\t\\t\\tattributes = {\\n\\t\\t\\t\\tvertex: gl.getAttribLocation( program, 'position' ),\\n\\t\\t\\t\\tuv: gl.getAttribLocation( program, 'uv' )\\n\\t\\t\\t};\\n\\n\\t\\t\\tuniforms = {\\n\\t\\t\\t\\trenderType: gl.getUniformLocation( program, 'renderType' ),\\n\\t\\t\\t\\tmap: gl.getUniformLocation( program, 'map' ),\\n\\t\\t\\t\\tocclusionMap: gl.getUniformLocation( program, 'occlusionMap' ),\\n\\t\\t\\t\\topacity: gl.getUniformLocation( program, 'opacity' ),\\n\\t\\t\\t\\tcolor: gl.getUniformLocation( program, 'color' ),\\n\\t\\t\\t\\tscale: gl.getUniformLocation( program, 'scale' ),\\n\\t\\t\\t\\trotation: gl.getUniformLocation( program, 'rotation' ),\\n\\t\\t\\t\\tscreenPosition: gl.getUniformLocation( program, 'screenPosition' )\\n\\t\\t\\t};\\n\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * Render lens flares\\n\\t\\t * Method: renders 16x16 0xff00ff-colored points scattered over the light source area,\\n\\t\\t * reads these back and calculates occlusion.\\n\\t\\t */\\n\\n\\t\\tthis.render = function ( flares, scene, camera, viewport ) {\\n\\n\\t\\t\\tif ( flares.length === 0 ) return;\\n\\n\\t\\t\\tvar tempPosition = new Vector3();\\n\\n\\t\\t\\tvar invAspect = viewport.w / viewport.z,\\n\\t\\t\\t\\thalfViewportWidth = viewport.z * 0.5,\\n\\t\\t\\t\\thalfViewportHeight = viewport.w * 0.5;\\n\\n\\t\\t\\tvar size = 16 / viewport.w,\\n\\t\\t\\t\\tscale = new Vector2( size * invAspect, size );\\n\\n\\t\\t\\tvar screenPosition = new Vector3( 1, 1, 0 ),\\n\\t\\t\\t\\tscreenPositionPixels = new Vector2( 1, 1 );\\n\\n\\t\\t\\tvar validArea = new Box2();\\n\\n\\t\\t\\tvalidArea.min.set( viewport.x, viewport.y );\\n\\t\\t\\tvalidArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) );\\n\\n\\t\\t\\tif ( program === undefined ) {\\n\\n\\t\\t\\t\\tinit();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.useProgram( program );\\n\\n\\t\\t\\tstate.initAttributes();\\n\\t\\t\\tstate.enableAttribute( attributes.vertex );\\n\\t\\t\\tstate.enableAttribute( attributes.uv );\\n\\t\\t\\tstate.disableUnusedAttributes();\\n\\n\\t\\t\\t// loop through all lens flares to update their occlusion and positions\\n\\t\\t\\t// setup gl and common used attribs/uniforms\\n\\n\\t\\t\\tgl.uniform1i( uniforms.occlusionMap, 0 );\\n\\t\\t\\tgl.uniform1i( uniforms.map, 1 );\\n\\n\\t\\t\\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\\n\\t\\t\\tgl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 );\\n\\t\\t\\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\\n\\n\\t\\t\\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\\n\\n\\t\\t\\tstate.disable( gl.CULL_FACE );\\n\\t\\t\\tstate.buffers.depth.setMask( false );\\n\\n\\t\\t\\tfor ( var i = 0, l = flares.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tsize = 16 / viewport.w;\\n\\t\\t\\t\\tscale.set( size * invAspect, size );\\n\\n\\t\\t\\t\\t// calc object screen position\\n\\n\\t\\t\\t\\tvar flare = flares[ i ];\\n\\n\\t\\t\\t\\ttempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] );\\n\\n\\t\\t\\t\\ttempPosition.applyMatrix4( camera.matrixWorldInverse );\\n\\t\\t\\t\\ttempPosition.applyMatrix4( camera.projectionMatrix );\\n\\n\\t\\t\\t\\t// setup arrays for gl programs\\n\\n\\t\\t\\t\\tscreenPosition.copy( tempPosition );\\n\\n\\t\\t\\t\\t// horizontal and vertical coordinate of the lower left corner of the pixels to copy\\n\\n\\t\\t\\t\\tscreenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8;\\n\\t\\t\\t\\tscreenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8;\\n\\n\\t\\t\\t\\t// screen cull\\n\\n\\t\\t\\t\\tif ( validArea.containsPoint( screenPositionPixels ) === true ) {\\n\\n\\t\\t\\t\\t\\t// save current RGB to temp texture\\n\\n\\t\\t\\t\\t\\tstate.activeTexture( gl.TEXTURE0 );\\n\\t\\t\\t\\t\\tstate.bindTexture( gl.TEXTURE_2D, null );\\n\\t\\t\\t\\t\\tstate.activeTexture( gl.TEXTURE1 );\\n\\t\\t\\t\\t\\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\\n\\t\\t\\t\\t\\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\\n\\n\\n\\t\\t\\t\\t\\t// render pink quad\\n\\n\\t\\t\\t\\t\\tgl.uniform1i( uniforms.renderType, 0 );\\n\\t\\t\\t\\t\\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\\n\\t\\t\\t\\t\\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\\n\\n\\t\\t\\t\\t\\tstate.disable( gl.BLEND );\\n\\t\\t\\t\\t\\tstate.enable( gl.DEPTH_TEST );\\n\\n\\t\\t\\t\\t\\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\\n\\n\\n\\t\\t\\t\\t\\t// copy result to occlusionMap\\n\\n\\t\\t\\t\\t\\tstate.activeTexture( gl.TEXTURE0 );\\n\\t\\t\\t\\t\\tstate.bindTexture( gl.TEXTURE_2D, occlusionTexture );\\n\\t\\t\\t\\t\\tgl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 );\\n\\n\\n\\t\\t\\t\\t\\t// restore graphics\\n\\n\\t\\t\\t\\t\\tgl.uniform1i( uniforms.renderType, 1 );\\n\\t\\t\\t\\t\\tstate.disable( gl.DEPTH_TEST );\\n\\n\\t\\t\\t\\t\\tstate.activeTexture( gl.TEXTURE1 );\\n\\t\\t\\t\\t\\tstate.bindTexture( gl.TEXTURE_2D, tempTexture );\\n\\t\\t\\t\\t\\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\\n\\n\\n\\t\\t\\t\\t\\t// update object positions\\n\\n\\t\\t\\t\\t\\tflare.positionScreen.copy( screenPosition );\\n\\n\\t\\t\\t\\t\\tif ( flare.customUpdateCallback ) {\\n\\n\\t\\t\\t\\t\\t\\tflare.customUpdateCallback( flare );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tflare.updateLensFlares();\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// render flares\\n\\n\\t\\t\\t\\t\\tgl.uniform1i( uniforms.renderType, 2 );\\n\\t\\t\\t\\t\\tstate.enable( gl.BLEND );\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar sprite = flare.lensFlares[ j ];\\n\\n\\t\\t\\t\\t\\t\\tif ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tscreenPosition.x = sprite.x;\\n\\t\\t\\t\\t\\t\\t\\tscreenPosition.y = sprite.y;\\n\\t\\t\\t\\t\\t\\t\\tscreenPosition.z = sprite.z;\\n\\n\\t\\t\\t\\t\\t\\t\\tsize = sprite.size * sprite.scale / viewport.w;\\n\\n\\t\\t\\t\\t\\t\\t\\tscale.x = size * invAspect;\\n\\t\\t\\t\\t\\t\\t\\tscale.y = size;\\n\\n\\t\\t\\t\\t\\t\\t\\tgl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z );\\n\\t\\t\\t\\t\\t\\t\\tgl.uniform2f( uniforms.scale, scale.x, scale.y );\\n\\t\\t\\t\\t\\t\\t\\tgl.uniform1f( uniforms.rotation, sprite.rotation );\\n\\n\\t\\t\\t\\t\\t\\t\\tgl.uniform1f( uniforms.opacity, sprite.opacity );\\n\\t\\t\\t\\t\\t\\t\\tgl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b );\\n\\n\\t\\t\\t\\t\\t\\t\\tstate.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst );\\n\\n\\t\\t\\t\\t\\t\\t\\ttextures.setTexture2D( sprite.texture, 1 );\\n\\n\\t\\t\\t\\t\\t\\t\\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// restore gl\\n\\n\\t\\t\\tstate.enable( gl.CULL_FACE );\\n\\t\\t\\tstate.enable( gl.DEPTH_TEST );\\n\\t\\t\\tstate.buffers.depth.setMask( true );\\n\\n\\t\\t\\tstate.reset();\\n\\n\\t\\t};\\n\\n\\t\\tfunction createProgram( shader ) {\\n\\n\\t\\t\\tvar program = gl.createProgram();\\n\\n\\t\\t\\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\\n\\t\\t\\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\\n\\n\\t\\t\\tvar prefix = 'precision ' + capabilities.precision + ' float;\\\\n';\\n\\n\\t\\t\\tgl.shaderSource( fragmentShader, prefix + shader.fragmentShader );\\n\\t\\t\\tgl.shaderSource( vertexShader, prefix + shader.vertexShader );\\n\\n\\t\\t\\tgl.compileShader( fragmentShader );\\n\\t\\t\\tgl.compileShader( vertexShader );\\n\\n\\t\\t\\tgl.attachShader( program, fragmentShader );\\n\\t\\t\\tgl.attachShader( program, vertexShader );\\n\\n\\t\\t\\tgl.linkProgram( program );\\n\\n\\t\\t\\treturn program;\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\\n\\n\\t\\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\\n\\n\\t\\tthis.needsUpdate = true;\\n\\n\\t}\\n\\n\\tCanvasTexture.prototype = Object.create( Texture.prototype );\\n\\tCanvasTexture.prototype.constructor = CanvasTexture;\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction WebGLSpriteRenderer( renderer, gl, state, textures, capabilities ) {\\n\\n\\t\\tvar vertexBuffer, elementBuffer;\\n\\t\\tvar program, attributes, uniforms;\\n\\n\\t\\tvar texture;\\n\\n\\t\\t// decompose matrixWorld\\n\\n\\t\\tvar spritePosition = new Vector3();\\n\\t\\tvar spriteRotation = new Quaternion();\\n\\t\\tvar spriteScale = new Vector3();\\n\\n\\t\\tfunction init() {\\n\\n\\t\\t\\tvar vertices = new Float32Array( [\\n\\t\\t\\t\\t- 0.5, - 0.5, 0, 0,\\n\\t\\t\\t\\t 0.5, - 0.5, 1, 0,\\n\\t\\t\\t\\t 0.5, 0.5, 1, 1,\\n\\t\\t\\t\\t- 0.5, 0.5, 0, 1\\n\\t\\t\\t] );\\n\\n\\t\\t\\tvar faces = new Uint16Array( [\\n\\t\\t\\t\\t0, 1, 2,\\n\\t\\t\\t\\t0, 2, 3\\n\\t\\t\\t] );\\n\\n\\t\\t\\tvertexBuffer = gl.createBuffer();\\n\\t\\t\\telementBuffer = gl.createBuffer();\\n\\n\\t\\t\\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\\n\\t\\t\\tgl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW );\\n\\n\\t\\t\\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\\n\\t\\t\\tgl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW );\\n\\n\\t\\t\\tprogram = createProgram();\\n\\n\\t\\t\\tattributes = {\\n\\t\\t\\t\\tposition: gl.getAttribLocation( program, 'position' ),\\n\\t\\t\\t\\tuv: gl.getAttribLocation( program, 'uv' )\\n\\t\\t\\t};\\n\\n\\t\\t\\tuniforms = {\\n\\t\\t\\t\\tuvOffset: gl.getUniformLocation( program, 'uvOffset' ),\\n\\t\\t\\t\\tuvScale: gl.getUniformLocation( program, 'uvScale' ),\\n\\n\\t\\t\\t\\trotation: gl.getUniformLocation( program, 'rotation' ),\\n\\t\\t\\t\\tscale: gl.getUniformLocation( program, 'scale' ),\\n\\n\\t\\t\\t\\tcolor: gl.getUniformLocation( program, 'color' ),\\n\\t\\t\\t\\tmap: gl.getUniformLocation( program, 'map' ),\\n\\t\\t\\t\\topacity: gl.getUniformLocation( program, 'opacity' ),\\n\\n\\t\\t\\t\\tmodelViewMatrix: gl.getUniformLocation( program, 'modelViewMatrix' ),\\n\\t\\t\\t\\tprojectionMatrix: gl.getUniformLocation( program, 'projectionMatrix' ),\\n\\n\\t\\t\\t\\tfogType: gl.getUniformLocation( program, 'fogType' ),\\n\\t\\t\\t\\tfogDensity: gl.getUniformLocation( program, 'fogDensity' ),\\n\\t\\t\\t\\tfogNear: gl.getUniformLocation( program, 'fogNear' ),\\n\\t\\t\\t\\tfogFar: gl.getUniformLocation( program, 'fogFar' ),\\n\\t\\t\\t\\tfogColor: gl.getUniformLocation( program, 'fogColor' ),\\n\\t\\t\\t\\tfogDepth: gl.getUniformLocation( program, 'fogDepth' ),\\n\\n\\t\\t\\t\\talphaTest: gl.getUniformLocation( program, 'alphaTest' )\\n\\t\\t\\t};\\n\\n\\t\\t\\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\\n\\t\\t\\tcanvas.width = 8;\\n\\t\\t\\tcanvas.height = 8;\\n\\n\\t\\t\\tvar context = canvas.getContext( '2d' );\\n\\t\\t\\tcontext.fillStyle = 'white';\\n\\t\\t\\tcontext.fillRect( 0, 0, 8, 8 );\\n\\n\\t\\t\\ttexture = new CanvasTexture( canvas );\\n\\n\\t\\t}\\n\\n\\t\\tthis.render = function ( sprites, scene, camera ) {\\n\\n\\t\\t\\tif ( sprites.length === 0 ) return;\\n\\n\\t\\t\\t// setup gl\\n\\n\\t\\t\\tif ( program === undefined ) {\\n\\n\\t\\t\\t\\tinit();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.useProgram( program );\\n\\n\\t\\t\\tstate.initAttributes();\\n\\t\\t\\tstate.enableAttribute( attributes.position );\\n\\t\\t\\tstate.enableAttribute( attributes.uv );\\n\\t\\t\\tstate.disableUnusedAttributes();\\n\\n\\t\\t\\tstate.disable( gl.CULL_FACE );\\n\\t\\t\\tstate.enable( gl.BLEND );\\n\\n\\t\\t\\tgl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer );\\n\\t\\t\\tgl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 );\\n\\t\\t\\tgl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 );\\n\\n\\t\\t\\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer );\\n\\n\\t\\t\\tgl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements );\\n\\n\\t\\t\\tstate.activeTexture( gl.TEXTURE0 );\\n\\t\\t\\tgl.uniform1i( uniforms.map, 0 );\\n\\n\\t\\t\\tvar oldFogType = 0;\\n\\t\\t\\tvar sceneFogType = 0;\\n\\t\\t\\tvar fog = scene.fog;\\n\\n\\t\\t\\tif ( fog ) {\\n\\n\\t\\t\\t\\tgl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b );\\n\\n\\t\\t\\t\\tif ( fog.isFog ) {\\n\\n\\t\\t\\t\\t\\tgl.uniform1f( uniforms.fogNear, fog.near );\\n\\t\\t\\t\\t\\tgl.uniform1f( uniforms.fogFar, fog.far );\\n\\n\\t\\t\\t\\t\\tgl.uniform1i( uniforms.fogType, 1 );\\n\\t\\t\\t\\t\\toldFogType = 1;\\n\\t\\t\\t\\t\\tsceneFogType = 1;\\n\\n\\t\\t\\t\\t} else if ( fog.isFogExp2 ) {\\n\\n\\t\\t\\t\\t\\tgl.uniform1f( uniforms.fogDensity, fog.density );\\n\\n\\t\\t\\t\\t\\tgl.uniform1i( uniforms.fogType, 2 );\\n\\t\\t\\t\\t\\toldFogType = 2;\\n\\t\\t\\t\\t\\tsceneFogType = 2;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tgl.uniform1i( uniforms.fogType, 0 );\\n\\t\\t\\t\\toldFogType = 0;\\n\\t\\t\\t\\tsceneFogType = 0;\\n\\n\\t\\t\\t}\\n\\n\\n\\t\\t\\t// update positions and sort\\n\\n\\t\\t\\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar sprite = sprites[ i ];\\n\\n\\t\\t\\t\\tsprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld );\\n\\t\\t\\t\\tsprite.z = - sprite.modelViewMatrix.elements[ 14 ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tsprites.sort( painterSortStable );\\n\\n\\t\\t\\t// render all sprites\\n\\n\\t\\t\\tvar scale = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = sprites.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar sprite = sprites[ i ];\\n\\t\\t\\t\\tvar material = sprite.material;\\n\\n\\t\\t\\t\\tif ( material.visible === false ) continue;\\n\\n\\t\\t\\t\\tsprite.onBeforeRender( renderer, scene, camera, undefined, material, undefined );\\n\\n\\t\\t\\t\\tgl.uniform1f( uniforms.alphaTest, material.alphaTest );\\n\\t\\t\\t\\tgl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements );\\n\\n\\t\\t\\t\\tsprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale );\\n\\n\\t\\t\\t\\tscale[ 0 ] = spriteScale.x;\\n\\t\\t\\t\\tscale[ 1 ] = spriteScale.y;\\n\\n\\t\\t\\t\\tvar fogType = 0;\\n\\n\\t\\t\\t\\tif ( scene.fog && material.fog ) {\\n\\n\\t\\t\\t\\t\\tfogType = sceneFogType;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( oldFogType !== fogType ) {\\n\\n\\t\\t\\t\\t\\tgl.uniform1i( uniforms.fogType, fogType );\\n\\t\\t\\t\\t\\toldFogType = fogType;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( material.map !== null ) {\\n\\n\\t\\t\\t\\t\\tgl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y );\\n\\t\\t\\t\\t\\tgl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tgl.uniform2f( uniforms.uvOffset, 0, 0 );\\n\\t\\t\\t\\t\\tgl.uniform2f( uniforms.uvScale, 1, 1 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgl.uniform1f( uniforms.opacity, material.opacity );\\n\\t\\t\\t\\tgl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b );\\n\\n\\t\\t\\t\\tgl.uniform1f( uniforms.rotation, material.rotation );\\n\\t\\t\\t\\tgl.uniform2fv( uniforms.scale, scale );\\n\\n\\t\\t\\t\\tstate.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\\n\\t\\t\\t\\tstate.buffers.depth.setTest( material.depthTest );\\n\\t\\t\\t\\tstate.buffers.depth.setMask( material.depthWrite );\\n\\t\\t\\t\\tstate.buffers.color.setMask( material.colorWrite );\\n\\n\\t\\t\\t\\ttextures.setTexture2D( material.map || texture, 0 );\\n\\n\\t\\t\\t\\tgl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 );\\n\\n\\t\\t\\t\\tsprite.onAfterRender( renderer, scene, camera, undefined, material, undefined );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// restore gl\\n\\n\\t\\t\\tstate.enable( gl.CULL_FACE );\\n\\n\\t\\t\\tstate.reset();\\n\\n\\t\\t};\\n\\n\\t\\tfunction createProgram() {\\n\\n\\t\\t\\tvar program = gl.createProgram();\\n\\n\\t\\t\\tvar vertexShader = gl.createShader( gl.VERTEX_SHADER );\\n\\t\\t\\tvar fragmentShader = gl.createShader( gl.FRAGMENT_SHADER );\\n\\n\\t\\t\\tgl.shaderSource( vertexShader, [\\n\\n\\t\\t\\t\\t'precision ' + capabilities.precision + ' float;',\\n\\n\\t\\t\\t\\t'#define SHADER_NAME ' + 'SpriteMaterial',\\n\\n\\t\\t\\t\\t'uniform mat4 modelViewMatrix;',\\n\\t\\t\\t\\t'uniform mat4 projectionMatrix;',\\n\\t\\t\\t\\t'uniform float rotation;',\\n\\t\\t\\t\\t'uniform vec2 scale;',\\n\\t\\t\\t\\t'uniform vec2 uvOffset;',\\n\\t\\t\\t\\t'uniform vec2 uvScale;',\\n\\n\\t\\t\\t\\t'attribute vec2 position;',\\n\\t\\t\\t\\t'attribute vec2 uv;',\\n\\n\\t\\t\\t\\t'varying vec2 vUV;',\\n\\t\\t\\t\\t'varying float fogDepth;',\\n\\n\\t\\t\\t\\t'void main() {',\\n\\n\\t\\t\\t\\t'\\tvUV = uvOffset + uv * uvScale;',\\n\\n\\t\\t\\t\\t'\\tvec2 alignedPosition = position * scale;',\\n\\n\\t\\t\\t\\t'\\tvec2 rotatedPosition;',\\n\\t\\t\\t\\t'\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;',\\n\\t\\t\\t\\t'\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;',\\n\\n\\t\\t\\t\\t'\\tvec4 mvPosition;',\\n\\n\\t\\t\\t\\t'\\tmvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );',\\n\\t\\t\\t\\t'\\tmvPosition.xy += rotatedPosition;',\\n\\n\\t\\t\\t\\t'\\tgl_Position = projectionMatrix * mvPosition;',\\n\\n\\t\\t\\t\\t'\\tfogDepth = - mvPosition.z;',\\n\\n\\t\\t\\t\\t'}'\\n\\n\\t\\t\\t].join( '\\\\n' ) );\\n\\n\\t\\t\\tgl.shaderSource( fragmentShader, [\\n\\n\\t\\t\\t\\t'precision ' + capabilities.precision + ' float;',\\n\\n\\t\\t\\t\\t'#define SHADER_NAME ' + 'SpriteMaterial',\\n\\n\\t\\t\\t\\t'uniform vec3 color;',\\n\\t\\t\\t\\t'uniform sampler2D map;',\\n\\t\\t\\t\\t'uniform float opacity;',\\n\\n\\t\\t\\t\\t'uniform int fogType;',\\n\\t\\t\\t\\t'uniform vec3 fogColor;',\\n\\t\\t\\t\\t'uniform float fogDensity;',\\n\\t\\t\\t\\t'uniform float fogNear;',\\n\\t\\t\\t\\t'uniform float fogFar;',\\n\\t\\t\\t\\t'uniform float alphaTest;',\\n\\n\\t\\t\\t\\t'varying vec2 vUV;',\\n\\t\\t\\t\\t'varying float fogDepth;',\\n\\n\\t\\t\\t\\t'void main() {',\\n\\n\\t\\t\\t\\t'\\tvec4 texture = texture2D( map, vUV );',\\n\\n\\t\\t\\t\\t'\\tgl_FragColor = vec4( color * texture.xyz, texture.a * opacity );',\\n\\n\\t\\t\\t\\t'\\tif ( gl_FragColor.a < alphaTest ) discard;',\\n\\n\\t\\t\\t\\t'\\tif ( fogType > 0 ) {',\\n\\n\\t\\t\\t\\t'\\t\\tfloat fogFactor = 0.0;',\\n\\n\\t\\t\\t\\t'\\t\\tif ( fogType == 1 ) {',\\n\\n\\t\\t\\t\\t'\\t\\t\\tfogFactor = smoothstep( fogNear, fogFar, fogDepth );',\\n\\n\\t\\t\\t\\t'\\t\\t} else {',\\n\\n\\t\\t\\t\\t'\\t\\t\\tconst float LOG2 = 1.442695;',\\n\\t\\t\\t\\t'\\t\\t\\tfogFactor = exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 );',\\n\\t\\t\\t\\t'\\t\\t\\tfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );',\\n\\n\\t\\t\\t\\t'\\t\\t}',\\n\\n\\t\\t\\t\\t'\\t\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );',\\n\\n\\t\\t\\t\\t'\\t}',\\n\\n\\t\\t\\t\\t'}'\\n\\n\\t\\t\\t].join( '\\\\n' ) );\\n\\n\\t\\t\\tgl.compileShader( vertexShader );\\n\\t\\t\\tgl.compileShader( fragmentShader );\\n\\n\\t\\t\\tgl.attachShader( program, vertexShader );\\n\\t\\t\\tgl.attachShader( program, fragmentShader );\\n\\n\\t\\t\\tgl.linkProgram( program );\\n\\n\\t\\t\\treturn program;\\n\\n\\t\\t}\\n\\n\\t\\tfunction painterSortStable( a, b ) {\\n\\n\\t\\t\\tif ( a.renderOrder !== b.renderOrder ) {\\n\\n\\t\\t\\t\\treturn a.renderOrder - b.renderOrder;\\n\\n\\t\\t\\t} else if ( a.z !== b.z ) {\\n\\n\\t\\t\\t\\treturn b.z - a.z;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\treturn b.id - a.id;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tvar materialId = 0;\\n\\n\\tfunction Material() {\\n\\n\\t\\tObject.defineProperty( this, 'id', { value: materialId ++ } );\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.name = '';\\n\\t\\tthis.type = 'Material';\\n\\n\\t\\tthis.fog = true;\\n\\t\\tthis.lights = true;\\n\\n\\t\\tthis.blending = NormalBlending;\\n\\t\\tthis.side = FrontSide;\\n\\t\\tthis.flatShading = false;\\n\\t\\tthis.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors\\n\\n\\t\\tthis.opacity = 1;\\n\\t\\tthis.transparent = false;\\n\\n\\t\\tthis.blendSrc = SrcAlphaFactor;\\n\\t\\tthis.blendDst = OneMinusSrcAlphaFactor;\\n\\t\\tthis.blendEquation = AddEquation;\\n\\t\\tthis.blendSrcAlpha = null;\\n\\t\\tthis.blendDstAlpha = null;\\n\\t\\tthis.blendEquationAlpha = null;\\n\\n\\t\\tthis.depthFunc = LessEqualDepth;\\n\\t\\tthis.depthTest = true;\\n\\t\\tthis.depthWrite = true;\\n\\n\\t\\tthis.clippingPlanes = null;\\n\\t\\tthis.clipIntersection = false;\\n\\t\\tthis.clipShadows = false;\\n\\n\\t\\tthis.colorWrite = true;\\n\\n\\t\\tthis.precision = null; // override the renderer's default precision for this material\\n\\n\\t\\tthis.polygonOffset = false;\\n\\t\\tthis.polygonOffsetFactor = 0;\\n\\t\\tthis.polygonOffsetUnits = 0;\\n\\n\\t\\tthis.dithering = false;\\n\\n\\t\\tthis.alphaTest = 0;\\n\\t\\tthis.premultipliedAlpha = false;\\n\\n\\t\\tthis.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer\\n\\n\\t\\tthis.visible = true;\\n\\n\\t\\tthis.userData = {};\\n\\n\\t\\tthis.needsUpdate = true;\\n\\n\\t}\\n\\n\\tMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\\n\\n\\t\\tconstructor: Material,\\n\\n\\t\\tisMaterial: true,\\n\\n\\t\\tonBeforeCompile: function () {},\\n\\n\\t\\tsetValues: function ( values ) {\\n\\n\\t\\t\\tif ( values === undefined ) return;\\n\\n\\t\\t\\tfor ( var key in values ) {\\n\\n\\t\\t\\t\\tvar newValue = values[ key ];\\n\\n\\t\\t\\t\\tif ( newValue === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( \\\"THREE.Material: '\\\" + key + \\\"' parameter is undefined.\\\" );\\n\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// for backward compatability if shading is set in the constructor\\n\\t\\t\\t\\tif ( key === 'shading' ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\\n\\t\\t\\t\\t\\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\\n\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar currentValue = this[ key ];\\n\\n\\t\\t\\t\\tif ( currentValue === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( \\\"THREE.\\\" + this.type + \\\": '\\\" + key + \\\"' is not a property of this material.\\\" );\\n\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( currentValue && currentValue.isColor ) {\\n\\n\\t\\t\\t\\t\\tcurrentValue.set( newValue );\\n\\n\\t\\t\\t\\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\\n\\n\\t\\t\\t\\t\\tcurrentValue.copy( newValue );\\n\\n\\t\\t\\t\\t} else if ( key === 'overdraw' ) {\\n\\n\\t\\t\\t\\t\\t// ensure overdraw is backwards-compatible with legacy boolean type\\n\\t\\t\\t\\t\\tthis[ key ] = Number( newValue );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis[ key ] = newValue;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar isRoot = ( meta === undefined || typeof meta === 'string' );\\n\\n\\t\\t\\tif ( isRoot ) {\\n\\n\\t\\t\\t\\tmeta = {\\n\\t\\t\\t\\t\\ttextures: {},\\n\\t\\t\\t\\t\\timages: {}\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar data = {\\n\\t\\t\\t\\tmetadata: {\\n\\t\\t\\t\\t\\tversion: 4.5,\\n\\t\\t\\t\\t\\ttype: 'Material',\\n\\t\\t\\t\\t\\tgenerator: 'Material.toJSON'\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\t\\t// standard Material serialization\\n\\t\\t\\tdata.uuid = this.uuid;\\n\\t\\t\\tdata.type = this.type;\\n\\n\\t\\t\\tif ( this.name !== '' ) data.name = this.name;\\n\\n\\t\\t\\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\\n\\n\\t\\t\\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\\n\\t\\t\\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\\n\\n\\t\\t\\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\\n\\t\\t\\tif ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\\n\\n\\t\\t\\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\\n\\t\\t\\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\\n\\t\\t\\tif ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat;\\n\\t\\t\\tif ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness;\\n\\n\\t\\t\\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\\n\\t\\t\\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\\n\\t\\t\\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\\n\\t\\t\\tif ( this.bumpMap && this.bumpMap.isTexture ) {\\n\\n\\t\\t\\t\\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\\n\\t\\t\\t\\tdata.bumpScale = this.bumpScale;\\n\\n\\t\\t\\t}\\n\\t\\t\\tif ( this.normalMap && this.normalMap.isTexture ) {\\n\\n\\t\\t\\t\\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\\n\\t\\t\\t\\tdata.normalScale = this.normalScale.toArray();\\n\\n\\t\\t\\t}\\n\\t\\t\\tif ( this.displacementMap && this.displacementMap.isTexture ) {\\n\\n\\t\\t\\t\\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\\n\\t\\t\\t\\tdata.displacementScale = this.displacementScale;\\n\\t\\t\\t\\tdata.displacementBias = this.displacementBias;\\n\\n\\t\\t\\t}\\n\\t\\t\\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\\n\\t\\t\\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\\n\\n\\t\\t\\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\\n\\t\\t\\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\\n\\n\\t\\t\\tif ( this.envMap && this.envMap.isTexture ) {\\n\\n\\t\\t\\t\\tdata.envMap = this.envMap.toJSON( meta ).uuid;\\n\\t\\t\\t\\tdata.reflectivity = this.reflectivity; // Scale behind envMap\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.gradientMap && this.gradientMap.isTexture ) {\\n\\n\\t\\t\\t\\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.size !== undefined ) data.size = this.size;\\n\\t\\t\\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\\n\\n\\t\\t\\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\\n\\t\\t\\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\\n\\t\\t\\tif ( this.side !== FrontSide ) data.side = this.side;\\n\\t\\t\\tif ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors;\\n\\n\\t\\t\\tif ( this.opacity < 1 ) data.opacity = this.opacity;\\n\\t\\t\\tif ( this.transparent === true ) data.transparent = this.transparent;\\n\\n\\t\\t\\tdata.depthFunc = this.depthFunc;\\n\\t\\t\\tdata.depthTest = this.depthTest;\\n\\t\\t\\tdata.depthWrite = this.depthWrite;\\n\\n\\t\\t\\t// rotation (SpriteMaterial)\\n\\t\\t\\tif ( this.rotation !== 0 ) data.rotation = this.rotation;\\n\\n\\t\\t\\tif ( this.linewidth !== 1 ) data.linewidth = this.linewidth;\\n\\t\\t\\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\\n\\t\\t\\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\\n\\t\\t\\tif ( this.scale !== undefined ) data.scale = this.scale;\\n\\n\\t\\t\\tif ( this.dithering === true ) data.dithering = true;\\n\\n\\t\\t\\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\\n\\t\\t\\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\\n\\n\\t\\t\\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\\n\\t\\t\\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\\n\\t\\t\\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\\n\\t\\t\\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\\n\\n\\t\\t\\tif ( this.morphTargets === true ) data.morphTargets = true;\\n\\t\\t\\tif ( this.skinning === true ) data.skinning = true;\\n\\n\\t\\t\\tif ( this.visible === false ) data.visible = false;\\n\\t\\t\\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\\n\\n\\t\\t\\t// TODO: Copied from Object3D.toJSON\\n\\n\\t\\t\\tfunction extractFromCache( cache ) {\\n\\n\\t\\t\\t\\tvar values = [];\\n\\n\\t\\t\\t\\tfor ( var key in cache ) {\\n\\n\\t\\t\\t\\t\\tvar data = cache[ key ];\\n\\t\\t\\t\\t\\tdelete data.metadata;\\n\\t\\t\\t\\t\\tvalues.push( data );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn values;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( isRoot ) {\\n\\n\\t\\t\\t\\tvar textures = extractFromCache( meta.textures );\\n\\t\\t\\t\\tvar images = extractFromCache( meta.images );\\n\\n\\t\\t\\t\\tif ( textures.length > 0 ) data.textures = textures;\\n\\t\\t\\t\\tif ( images.length > 0 ) data.images = images;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.name = source.name;\\n\\n\\t\\t\\tthis.fog = source.fog;\\n\\t\\t\\tthis.lights = source.lights;\\n\\n\\t\\t\\tthis.blending = source.blending;\\n\\t\\t\\tthis.side = source.side;\\n\\t\\t\\tthis.flatShading = source.flatShading;\\n\\t\\t\\tthis.vertexColors = source.vertexColors;\\n\\n\\t\\t\\tthis.opacity = source.opacity;\\n\\t\\t\\tthis.transparent = source.transparent;\\n\\n\\t\\t\\tthis.blendSrc = source.blendSrc;\\n\\t\\t\\tthis.blendDst = source.blendDst;\\n\\t\\t\\tthis.blendEquation = source.blendEquation;\\n\\t\\t\\tthis.blendSrcAlpha = source.blendSrcAlpha;\\n\\t\\t\\tthis.blendDstAlpha = source.blendDstAlpha;\\n\\t\\t\\tthis.blendEquationAlpha = source.blendEquationAlpha;\\n\\n\\t\\t\\tthis.depthFunc = source.depthFunc;\\n\\t\\t\\tthis.depthTest = source.depthTest;\\n\\t\\t\\tthis.depthWrite = source.depthWrite;\\n\\n\\t\\t\\tthis.colorWrite = source.colorWrite;\\n\\n\\t\\t\\tthis.precision = source.precision;\\n\\n\\t\\t\\tthis.polygonOffset = source.polygonOffset;\\n\\t\\t\\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\\n\\t\\t\\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\\n\\n\\t\\t\\tthis.dithering = source.dithering;\\n\\n\\t\\t\\tthis.alphaTest = source.alphaTest;\\n\\t\\t\\tthis.premultipliedAlpha = source.premultipliedAlpha;\\n\\n\\t\\t\\tthis.overdraw = source.overdraw;\\n\\n\\t\\t\\tthis.visible = source.visible;\\n\\t\\t\\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\\n\\n\\t\\t\\tthis.clipShadows = source.clipShadows;\\n\\t\\t\\tthis.clipIntersection = source.clipIntersection;\\n\\n\\t\\t\\tvar srcPlanes = source.clippingPlanes,\\n\\t\\t\\t\\tdstPlanes = null;\\n\\n\\t\\t\\tif ( srcPlanes !== null ) {\\n\\n\\t\\t\\t\\tvar n = srcPlanes.length;\\n\\t\\t\\t\\tdstPlanes = new Array( n );\\n\\n\\t\\t\\t\\tfor ( var i = 0; i !== n; ++ i )\\n\\t\\t\\t\\t\\tdstPlanes[ i ] = srcPlanes[ i ].clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.clippingPlanes = dstPlanes;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdispose: function () {\\n\\n\\t\\t\\tthis.dispatchEvent( { type: 'dispose' } );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author bhouston / https://clara.io\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t *\\n\\t * parameters = {\\n\\t *\\n\\t * opacity: ,\\n\\t *\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t * alphaMap: new THREE.Texture( ),\\n\\t *\\n\\t * displacementMap: new THREE.Texture( ),\\n\\t * displacementScale: ,\\n\\t * displacementBias: ,\\n\\t *\\n\\t * wireframe: ,\\n\\t * wireframeLinewidth: \\n\\t * }\\n\\t */\\n\\n\\tfunction MeshDepthMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'MeshDepthMaterial';\\n\\n\\t\\tthis.depthPacking = BasicDepthPacking;\\n\\n\\t\\tthis.skinning = false;\\n\\t\\tthis.morphTargets = false;\\n\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.alphaMap = null;\\n\\n\\t\\tthis.displacementMap = null;\\n\\t\\tthis.displacementScale = 1;\\n\\t\\tthis.displacementBias = 0;\\n\\n\\t\\tthis.wireframe = false;\\n\\t\\tthis.wireframeLinewidth = 1;\\n\\n\\t\\tthis.fog = false;\\n\\t\\tthis.lights = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshDepthMaterial.prototype = Object.create( Material.prototype );\\n\\tMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\\n\\n\\tMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\\n\\n\\tMeshDepthMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.depthPacking = source.depthPacking;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.alphaMap = source.alphaMap;\\n\\n\\t\\tthis.displacementMap = source.displacementMap;\\n\\t\\tthis.displacementScale = source.displacementScale;\\n\\t\\tthis.displacementBias = source.displacementBias;\\n\\n\\t\\tthis.wireframe = source.wireframe;\\n\\t\\tthis.wireframeLinewidth = source.wireframeLinewidth;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t *\\n\\t * parameters = {\\n\\t *\\n\\t * referencePosition: ,\\n\\t * nearDistance: ,\\n\\t * farDistance: ,\\n\\t *\\n\\t * skinning: ,\\n\\t * morphTargets: ,\\n\\t *\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t * alphaMap: new THREE.Texture( ),\\n\\t *\\n\\t * displacementMap: new THREE.Texture( ),\\n\\t * displacementScale: ,\\n\\t * displacementBias: \\n\\t *\\n\\t * }\\n\\t */\\n\\n\\tfunction MeshDistanceMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'MeshDistanceMaterial';\\n\\n\\t\\tthis.referencePosition = new Vector3();\\n\\t\\tthis.nearDistance = 1;\\n\\t\\tthis.farDistance = 1000;\\n\\n\\t\\tthis.skinning = false;\\n\\t\\tthis.morphTargets = false;\\n\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.alphaMap = null;\\n\\n\\t\\tthis.displacementMap = null;\\n\\t\\tthis.displacementScale = 1;\\n\\t\\tthis.displacementBias = 0;\\n\\n\\t\\tthis.fog = false;\\n\\t\\tthis.lights = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshDistanceMaterial.prototype = Object.create( Material.prototype );\\n\\tMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\\n\\n\\tMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\\n\\n\\tMeshDistanceMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.referencePosition.copy( source.referencePosition );\\n\\t\\tthis.nearDistance = source.nearDistance;\\n\\t\\tthis.farDistance = source.farDistance;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.alphaMap = source.alphaMap;\\n\\n\\t\\tthis.displacementMap = source.displacementMap;\\n\\t\\tthis.displacementScale = source.displacementScale;\\n\\t\\tthis.displacementBias = source.displacementBias;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction Box3( min, max ) {\\n\\n\\t\\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\\n\\t\\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\\n\\n\\t}\\n\\n\\tObject.assign( Box3.prototype, {\\n\\n\\t\\tisBox3: true,\\n\\n\\t\\tset: function ( min, max ) {\\n\\n\\t\\t\\tthis.min.copy( min );\\n\\t\\t\\tthis.max.copy( max );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromArray: function ( array ) {\\n\\n\\t\\t\\tvar minX = + Infinity;\\n\\t\\t\\tvar minY = + Infinity;\\n\\t\\t\\tvar minZ = + Infinity;\\n\\n\\t\\t\\tvar maxX = - Infinity;\\n\\t\\t\\tvar maxY = - Infinity;\\n\\t\\t\\tvar maxZ = - Infinity;\\n\\n\\t\\t\\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\\n\\n\\t\\t\\t\\tvar x = array[ i ];\\n\\t\\t\\t\\tvar y = array[ i + 1 ];\\n\\t\\t\\t\\tvar z = array[ i + 2 ];\\n\\n\\t\\t\\t\\tif ( x < minX ) minX = x;\\n\\t\\t\\t\\tif ( y < minY ) minY = y;\\n\\t\\t\\t\\tif ( z < minZ ) minZ = z;\\n\\n\\t\\t\\t\\tif ( x > maxX ) maxX = x;\\n\\t\\t\\t\\tif ( y > maxY ) maxY = y;\\n\\t\\t\\t\\tif ( z > maxZ ) maxZ = z;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.min.set( minX, minY, minZ );\\n\\t\\t\\tthis.max.set( maxX, maxY, maxZ );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromBufferAttribute: function ( attribute ) {\\n\\n\\t\\t\\tvar minX = + Infinity;\\n\\t\\t\\tvar minY = + Infinity;\\n\\t\\t\\tvar minZ = + Infinity;\\n\\n\\t\\t\\tvar maxX = - Infinity;\\n\\t\\t\\tvar maxY = - Infinity;\\n\\t\\t\\tvar maxZ = - Infinity;\\n\\n\\t\\t\\tfor ( var i = 0, l = attribute.count; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar x = attribute.getX( i );\\n\\t\\t\\t\\tvar y = attribute.getY( i );\\n\\t\\t\\t\\tvar z = attribute.getZ( i );\\n\\n\\t\\t\\t\\tif ( x < minX ) minX = x;\\n\\t\\t\\t\\tif ( y < minY ) minY = y;\\n\\t\\t\\t\\tif ( z < minZ ) minZ = z;\\n\\n\\t\\t\\t\\tif ( x > maxX ) maxX = x;\\n\\t\\t\\t\\tif ( y > maxY ) maxY = y;\\n\\t\\t\\t\\tif ( z > maxZ ) maxZ = z;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.min.set( minX, minY, minZ );\\n\\t\\t\\tthis.max.set( maxX, maxY, maxZ );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromPoints: function ( points ) {\\n\\n\\t\\t\\tthis.makeEmpty();\\n\\n\\t\\t\\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.expandByPoint( points[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromCenterAndSize: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function setFromCenterAndSize( center, size ) {\\n\\n\\t\\t\\t\\tvar halfSize = v1.copy( size ).multiplyScalar( 0.5 );\\n\\n\\t\\t\\t\\tthis.min.copy( center ).sub( halfSize );\\n\\t\\t\\t\\tthis.max.copy( center ).add( halfSize );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tsetFromObject: function ( object ) {\\n\\n\\t\\t\\tthis.makeEmpty();\\n\\n\\t\\t\\treturn this.expandByObject( object );\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( box ) {\\n\\n\\t\\t\\tthis.min.copy( box.min );\\n\\t\\t\\tthis.max.copy( box.max );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tmakeEmpty: function () {\\n\\n\\t\\t\\tthis.min.x = this.min.y = this.min.z = + Infinity;\\n\\t\\t\\tthis.max.x = this.max.y = this.max.z = - Infinity;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tisEmpty: function () {\\n\\n\\t\\t\\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\\n\\n\\t\\t\\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\\n\\n\\t\\t},\\n\\n\\t\\tgetCenter: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\\n\\n\\t\\t},\\n\\n\\t\\tgetSize: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\treturn this.isEmpty() ? result.set( 0, 0, 0 ) : result.subVectors( this.max, this.min );\\n\\n\\t\\t},\\n\\n\\t\\texpandByPoint: function ( point ) {\\n\\n\\t\\t\\tthis.min.min( point );\\n\\t\\t\\tthis.max.max( point );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\texpandByVector: function ( vector ) {\\n\\n\\t\\t\\tthis.min.sub( vector );\\n\\t\\t\\tthis.max.add( vector );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\texpandByScalar: function ( scalar ) {\\n\\n\\t\\t\\tthis.min.addScalar( - scalar );\\n\\t\\t\\tthis.max.addScalar( scalar );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\texpandByObject: function () {\\n\\n\\t\\t\\t// Computes the world-axis-aligned bounding box of an object (including its children),\\n\\t\\t\\t// accounting for both the object's, and children's, world transforms\\n\\n\\t\\t\\tvar scope, i, l;\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\tfunction traverse( node ) {\\n\\n\\t\\t\\t\\tvar geometry = node.geometry;\\n\\n\\t\\t\\t\\tif ( geometry !== undefined ) {\\n\\n\\t\\t\\t\\t\\tif ( geometry.isGeometry ) {\\n\\n\\t\\t\\t\\t\\t\\tvar vertices = geometry.vertices;\\n\\n\\t\\t\\t\\t\\t\\tfor ( i = 0, l = vertices.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tv1.copy( vertices[ i ] );\\n\\t\\t\\t\\t\\t\\t\\tv1.applyMatrix4( node.matrixWorld );\\n\\n\\t\\t\\t\\t\\t\\t\\tscope.expandByPoint( v1 );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else if ( geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\t\\t\\tvar attribute = geometry.attributes.position;\\n\\n\\t\\t\\t\\t\\t\\tif ( attribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( i = 0, l = attribute.count; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tv1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tscope.expandByPoint( v1 );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn function expandByObject( object ) {\\n\\n\\t\\t\\t\\tscope = this;\\n\\n\\t\\t\\t\\tobject.updateMatrixWorld( true );\\n\\n\\t\\t\\t\\tobject.traverse( traverse );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tcontainsPoint: function ( point ) {\\n\\n\\t\\t\\treturn point.x < this.min.x || point.x > this.max.x ||\\n\\t\\t\\t\\tpoint.y < this.min.y || point.y > this.max.y ||\\n\\t\\t\\t\\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\\n\\n\\t\\t},\\n\\n\\t\\tcontainsBox: function ( box ) {\\n\\n\\t\\t\\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\\n\\t\\t\\t\\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\\n\\t\\t\\t\\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\\n\\n\\t\\t},\\n\\n\\t\\tgetParameter: function ( point, optionalTarget ) {\\n\\n\\t\\t\\t// This can potentially have a divide by zero if the box\\n\\t\\t\\t// has a size dimension of 0.\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\treturn result.set(\\n\\t\\t\\t\\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\\n\\t\\t\\t\\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\\n\\t\\t\\t\\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\\n\\t\\t\\t);\\n\\n\\t\\t},\\n\\n\\t\\tintersectsBox: function ( box ) {\\n\\n\\t\\t\\t// using 6 splitting planes to rule out intersections.\\n\\t\\t\\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\\n\\t\\t\\t\\tbox.max.y < this.min.y || box.min.y > this.max.y ||\\n\\t\\t\\t\\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\\n\\n\\t\\t},\\n\\n\\t\\tintersectsSphere: ( function () {\\n\\n\\t\\t\\tvar closestPoint = new Vector3();\\n\\n\\t\\t\\treturn function intersectsSphere( sphere ) {\\n\\n\\t\\t\\t\\t// Find the point on the AABB closest to the sphere center.\\n\\t\\t\\t\\tthis.clampPoint( sphere.center, closestPoint );\\n\\n\\t\\t\\t\\t// If that point is inside the sphere, the AABB and sphere intersect.\\n\\t\\t\\t\\treturn closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )(),\\n\\n\\t\\tintersectsPlane: function ( plane ) {\\n\\n\\t\\t\\t// We compute the minimum and maximum dot product values. If those values\\n\\t\\t\\t// are on the same side (back or front) of the plane, then there is no intersection.\\n\\n\\t\\t\\tvar min, max;\\n\\n\\t\\t\\tif ( plane.normal.x > 0 ) {\\n\\n\\t\\t\\t\\tmin = plane.normal.x * this.min.x;\\n\\t\\t\\t\\tmax = plane.normal.x * this.max.x;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tmin = plane.normal.x * this.max.x;\\n\\t\\t\\t\\tmax = plane.normal.x * this.min.x;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( plane.normal.y > 0 ) {\\n\\n\\t\\t\\t\\tmin += plane.normal.y * this.min.y;\\n\\t\\t\\t\\tmax += plane.normal.y * this.max.y;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tmin += plane.normal.y * this.max.y;\\n\\t\\t\\t\\tmax += plane.normal.y * this.min.y;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( plane.normal.z > 0 ) {\\n\\n\\t\\t\\t\\tmin += plane.normal.z * this.min.z;\\n\\t\\t\\t\\tmax += plane.normal.z * this.max.z;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tmin += plane.normal.z * this.max.z;\\n\\t\\t\\t\\tmax += plane.normal.z * this.min.z;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn ( min <= plane.constant && max >= plane.constant );\\n\\n\\t\\t},\\n\\n\\t\\tclampPoint: function ( point, optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\treturn result.copy( point ).clamp( this.min, this.max );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToPoint: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function distanceToPoint( point ) {\\n\\n\\t\\t\\t\\tvar clampedPoint = v1.copy( point ).clamp( this.min, this.max );\\n\\t\\t\\t\\treturn clampedPoint.sub( point ).length();\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tgetBoundingSphere: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function getBoundingSphere( optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Sphere();\\n\\n\\t\\t\\t\\tthis.getCenter( result.center );\\n\\n\\t\\t\\t\\tresult.radius = this.getSize( v1 ).length() * 0.5;\\n\\n\\t\\t\\t\\treturn result;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tintersect: function ( box ) {\\n\\n\\t\\t\\tthis.min.max( box.min );\\n\\t\\t\\tthis.max.min( box.max );\\n\\n\\t\\t\\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\\n\\t\\t\\tif ( this.isEmpty() ) this.makeEmpty();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tunion: function ( box ) {\\n\\n\\t\\t\\tthis.min.min( box.min );\\n\\t\\t\\tthis.max.max( box.max );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix4: function () {\\n\\n\\t\\t\\tvar points = [\\n\\t\\t\\t\\tnew Vector3(),\\n\\t\\t\\t\\tnew Vector3(),\\n\\t\\t\\t\\tnew Vector3(),\\n\\t\\t\\t\\tnew Vector3(),\\n\\t\\t\\t\\tnew Vector3(),\\n\\t\\t\\t\\tnew Vector3(),\\n\\t\\t\\t\\tnew Vector3(),\\n\\t\\t\\t\\tnew Vector3()\\n\\t\\t\\t];\\n\\n\\t\\t\\treturn function applyMatrix4( matrix ) {\\n\\n\\t\\t\\t\\t// transform of empty box is an empty box.\\n\\t\\t\\t\\tif ( this.isEmpty() ) return this;\\n\\n\\t\\t\\t\\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\\n\\t\\t\\t\\tpoints[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\\n\\t\\t\\t\\tpoints[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\\n\\t\\t\\t\\tpoints[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\\n\\t\\t\\t\\tpoints[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\\n\\t\\t\\t\\tpoints[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\\n\\t\\t\\t\\tpoints[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\\n\\t\\t\\t\\tpoints[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\\n\\t\\t\\t\\tpoints[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix );\\t// 111\\n\\n\\t\\t\\t\\tthis.setFromPoints( points );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslate: function ( offset ) {\\n\\n\\t\\t\\tthis.min.add( offset );\\n\\t\\t\\tthis.max.add( offset );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( box ) {\\n\\n\\t\\t\\treturn box.min.equals( this.min ) && box.max.equals( this.max );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Sphere( center, radius ) {\\n\\n\\t\\tthis.center = ( center !== undefined ) ? center : new Vector3();\\n\\t\\tthis.radius = ( radius !== undefined ) ? radius : 0;\\n\\n\\t}\\n\\n\\tObject.assign( Sphere.prototype, {\\n\\n\\t\\tset: function ( center, radius ) {\\n\\n\\t\\t\\tthis.center.copy( center );\\n\\t\\t\\tthis.radius = radius;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromPoints: function () {\\n\\n\\t\\t\\tvar box = new Box3();\\n\\n\\t\\t\\treturn function setFromPoints( points, optionalCenter ) {\\n\\n\\t\\t\\t\\tvar center = this.center;\\n\\n\\t\\t\\t\\tif ( optionalCenter !== undefined ) {\\n\\n\\t\\t\\t\\t\\tcenter.copy( optionalCenter );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tbox.setFromPoints( points ).getCenter( center );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar maxRadiusSq = 0;\\n\\n\\t\\t\\t\\tfor ( var i = 0, il = points.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.radius = Math.sqrt( maxRadiusSq );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( sphere ) {\\n\\n\\t\\t\\tthis.center.copy( sphere.center );\\n\\t\\t\\tthis.radius = sphere.radius;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tempty: function () {\\n\\n\\t\\t\\treturn ( this.radius <= 0 );\\n\\n\\t\\t},\\n\\n\\t\\tcontainsPoint: function ( point ) {\\n\\n\\t\\t\\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToPoint: function ( point ) {\\n\\n\\t\\t\\treturn ( point.distanceTo( this.center ) - this.radius );\\n\\n\\t\\t},\\n\\n\\t\\tintersectsSphere: function ( sphere ) {\\n\\n\\t\\t\\tvar radiusSum = this.radius + sphere.radius;\\n\\n\\t\\t\\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\\n\\n\\t\\t},\\n\\n\\t\\tintersectsBox: function ( box ) {\\n\\n\\t\\t\\treturn box.intersectsSphere( this );\\n\\n\\t\\t},\\n\\n\\t\\tintersectsPlane: function ( plane ) {\\n\\n\\t\\t\\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\\n\\n\\t\\t},\\n\\n\\t\\tclampPoint: function ( point, optionalTarget ) {\\n\\n\\t\\t\\tvar deltaLengthSq = this.center.distanceToSquared( point );\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\tresult.copy( point );\\n\\n\\t\\t\\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\\n\\n\\t\\t\\t\\tresult.sub( this.center ).normalize();\\n\\t\\t\\t\\tresult.multiplyScalar( this.radius ).add( this.center );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t},\\n\\n\\t\\tgetBoundingBox: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar box = optionalTarget || new Box3();\\n\\n\\t\\t\\tbox.set( this.center, this.center );\\n\\t\\t\\tbox.expandByScalar( this.radius );\\n\\n\\t\\t\\treturn box;\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix4: function ( matrix ) {\\n\\n\\t\\t\\tthis.center.applyMatrix4( matrix );\\n\\t\\t\\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttranslate: function ( offset ) {\\n\\n\\t\\t\\tthis.center.add( offset );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( sphere ) {\\n\\n\\t\\t\\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tfunction Plane( normal, constant ) {\\n\\n\\t\\t// normal is assumed to be normalized\\n\\n\\t\\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\\n\\t\\tthis.constant = ( constant !== undefined ) ? constant : 0;\\n\\n\\t}\\n\\n\\tObject.assign( Plane.prototype, {\\n\\n\\t\\tset: function ( normal, constant ) {\\n\\n\\t\\t\\tthis.normal.copy( normal );\\n\\t\\t\\tthis.constant = constant;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetComponents: function ( x, y, z, w ) {\\n\\n\\t\\t\\tthis.normal.set( x, y, z );\\n\\t\\t\\tthis.constant = w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromNormalAndCoplanarPoint: function ( normal, point ) {\\n\\n\\t\\t\\tthis.normal.copy( normal );\\n\\t\\t\\tthis.constant = - point.dot( this.normal );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromCoplanarPoints: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\t\\t\\tvar v2 = new Vector3();\\n\\n\\t\\t\\treturn function setFromCoplanarPoints( a, b, c ) {\\n\\n\\t\\t\\t\\tvar normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize();\\n\\n\\t\\t\\t\\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\\n\\n\\t\\t\\t\\tthis.setFromNormalAndCoplanarPoint( normal, a );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( plane ) {\\n\\n\\t\\t\\tthis.normal.copy( plane.normal );\\n\\t\\t\\tthis.constant = plane.constant;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tnormalize: function () {\\n\\n\\t\\t\\t// Note: will lead to a divide by zero if the plane is invalid.\\n\\n\\t\\t\\tvar inverseNormalLength = 1.0 / this.normal.length();\\n\\t\\t\\tthis.normal.multiplyScalar( inverseNormalLength );\\n\\t\\t\\tthis.constant *= inverseNormalLength;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tnegate: function () {\\n\\n\\t\\t\\tthis.constant *= - 1;\\n\\t\\t\\tthis.normal.negate();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToPoint: function ( point ) {\\n\\n\\t\\t\\treturn this.normal.dot( point ) + this.constant;\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToSphere: function ( sphere ) {\\n\\n\\t\\t\\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\\n\\n\\t\\t},\\n\\n\\t\\tprojectPoint: function ( point, optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\treturn result.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\\n\\n\\t\\t},\\n\\n\\t\\tintersectLine: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function intersectLine( line, optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\t\\tvar direction = line.delta( v1 );\\n\\n\\t\\t\\t\\tvar denominator = this.normal.dot( direction );\\n\\n\\t\\t\\t\\tif ( denominator === 0 ) {\\n\\n\\t\\t\\t\\t\\t// line is coplanar, return origin\\n\\t\\t\\t\\t\\tif ( this.distanceToPoint( line.start ) === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\treturn result.copy( line.start );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Unsure if this is the correct method to handle this case.\\n\\t\\t\\t\\t\\treturn undefined;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\\n\\n\\t\\t\\t\\tif ( t < 0 || t > 1 ) {\\n\\n\\t\\t\\t\\t\\treturn undefined;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn result.copy( direction ).multiplyScalar( t ).add( line.start );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tintersectsLine: function ( line ) {\\n\\n\\t\\t\\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\\n\\n\\t\\t\\tvar startSign = this.distanceToPoint( line.start );\\n\\t\\t\\tvar endSign = this.distanceToPoint( line.end );\\n\\n\\t\\t\\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\\n\\n\\t\\t},\\n\\n\\t\\tintersectsBox: function ( box ) {\\n\\n\\t\\t\\treturn box.intersectsPlane( this );\\n\\n\\t\\t},\\n\\n\\t\\tintersectsSphere: function ( sphere ) {\\n\\n\\t\\t\\treturn sphere.intersectsPlane( this );\\n\\n\\t\\t},\\n\\n\\t\\tcoplanarPoint: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\treturn result.copy( this.normal ).multiplyScalar( - this.constant );\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix4: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\t\\t\\tvar m1 = new Matrix3();\\n\\n\\t\\t\\treturn function applyMatrix4( matrix, optionalNormalMatrix ) {\\n\\n\\t\\t\\t\\tvar normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix );\\n\\n\\t\\t\\t\\tvar referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix );\\n\\n\\t\\t\\t\\tvar normal = this.normal.applyMatrix3( normalMatrix ).normalize();\\n\\n\\t\\t\\t\\tthis.constant = - referencePoint.dot( normal );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslate: function ( offset ) {\\n\\n\\t\\t\\tthis.constant -= offset.dot( this.normal );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( plane ) {\\n\\n\\t\\t\\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tfunction Frustum( p0, p1, p2, p3, p4, p5 ) {\\n\\n\\t\\tthis.planes = [\\n\\n\\t\\t\\t( p0 !== undefined ) ? p0 : new Plane(),\\n\\t\\t\\t( p1 !== undefined ) ? p1 : new Plane(),\\n\\t\\t\\t( p2 !== undefined ) ? p2 : new Plane(),\\n\\t\\t\\t( p3 !== undefined ) ? p3 : new Plane(),\\n\\t\\t\\t( p4 !== undefined ) ? p4 : new Plane(),\\n\\t\\t\\t( p5 !== undefined ) ? p5 : new Plane()\\n\\n\\t\\t];\\n\\n\\t}\\n\\n\\tObject.assign( Frustum.prototype, {\\n\\n\\t\\tset: function ( p0, p1, p2, p3, p4, p5 ) {\\n\\n\\t\\t\\tvar planes = this.planes;\\n\\n\\t\\t\\tplanes[ 0 ].copy( p0 );\\n\\t\\t\\tplanes[ 1 ].copy( p1 );\\n\\t\\t\\tplanes[ 2 ].copy( p2 );\\n\\t\\t\\tplanes[ 3 ].copy( p3 );\\n\\t\\t\\tplanes[ 4 ].copy( p4 );\\n\\t\\t\\tplanes[ 5 ].copy( p5 );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( frustum ) {\\n\\n\\t\\t\\tvar planes = this.planes;\\n\\n\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\tplanes[ i ].copy( frustum.planes[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromMatrix: function ( m ) {\\n\\n\\t\\t\\tvar planes = this.planes;\\n\\t\\t\\tvar me = m.elements;\\n\\t\\t\\tvar me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\\n\\t\\t\\tvar me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\\n\\t\\t\\tvar me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\\n\\t\\t\\tvar me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\\n\\n\\t\\t\\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\\n\\t\\t\\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\\n\\t\\t\\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\\n\\t\\t\\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\\n\\t\\t\\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\\n\\t\\t\\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tintersectsObject: function () {\\n\\n\\t\\t\\tvar sphere = new Sphere();\\n\\n\\t\\t\\treturn function intersectsObject( object ) {\\n\\n\\t\\t\\t\\tvar geometry = object.geometry;\\n\\n\\t\\t\\t\\tif ( geometry.boundingSphere === null )\\n\\t\\t\\t\\t\\tgeometry.computeBoundingSphere();\\n\\n\\t\\t\\t\\tsphere.copy( geometry.boundingSphere )\\n\\t\\t\\t\\t\\t.applyMatrix4( object.matrixWorld );\\n\\n\\t\\t\\t\\treturn this.intersectsSphere( sphere );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tintersectsSprite: function () {\\n\\n\\t\\t\\tvar sphere = new Sphere();\\n\\n\\t\\t\\treturn function intersectsSprite( sprite ) {\\n\\n\\t\\t\\t\\tsphere.center.set( 0, 0, 0 );\\n\\t\\t\\t\\tsphere.radius = 0.7071067811865476;\\n\\t\\t\\t\\tsphere.applyMatrix4( sprite.matrixWorld );\\n\\n\\t\\t\\t\\treturn this.intersectsSphere( sphere );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tintersectsSphere: function ( sphere ) {\\n\\n\\t\\t\\tvar planes = this.planes;\\n\\t\\t\\tvar center = sphere.center;\\n\\t\\t\\tvar negRadius = - sphere.radius;\\n\\n\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\tvar distance = planes[ i ].distanceToPoint( center );\\n\\n\\t\\t\\t\\tif ( distance < negRadius ) {\\n\\n\\t\\t\\t\\t\\treturn false;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn true;\\n\\n\\t\\t},\\n\\n\\t\\tintersectsBox: function () {\\n\\n\\t\\t\\tvar p1 = new Vector3(),\\n\\t\\t\\t\\tp2 = new Vector3();\\n\\n\\t\\t\\treturn function intersectsBox( box ) {\\n\\n\\t\\t\\t\\tvar planes = this.planes;\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar plane = planes[ i ];\\n\\n\\t\\t\\t\\t\\tp1.x = plane.normal.x > 0 ? box.min.x : box.max.x;\\n\\t\\t\\t\\t\\tp2.x = plane.normal.x > 0 ? box.max.x : box.min.x;\\n\\t\\t\\t\\t\\tp1.y = plane.normal.y > 0 ? box.min.y : box.max.y;\\n\\t\\t\\t\\t\\tp2.y = plane.normal.y > 0 ? box.max.y : box.min.y;\\n\\t\\t\\t\\t\\tp1.z = plane.normal.z > 0 ? box.min.z : box.max.z;\\n\\t\\t\\t\\t\\tp2.z = plane.normal.z > 0 ? box.max.z : box.min.z;\\n\\n\\t\\t\\t\\t\\tvar d1 = plane.distanceToPoint( p1 );\\n\\t\\t\\t\\t\\tvar d2 = plane.distanceToPoint( p2 );\\n\\n\\t\\t\\t\\t\\t// if both outside plane, no intersection\\n\\n\\t\\t\\t\\t\\tif ( d1 < 0 && d2 < 0 ) {\\n\\n\\t\\t\\t\\t\\t\\treturn false;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn true;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tcontainsPoint: function ( point ) {\\n\\n\\t\\t\\tvar planes = this.planes;\\n\\n\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\\n\\n\\t\\t\\t\\t\\treturn false;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn true;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\\n\\n\\t\\tvar _frustum = new Frustum(),\\n\\t\\t\\t_projScreenMatrix = new Matrix4(),\\n\\n\\t\\t\\t_shadowMapSize = new Vector2(),\\n\\t\\t\\t_maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ),\\n\\n\\t\\t\\t_lookTarget = new Vector3(),\\n\\t\\t\\t_lightPositionWorld = new Vector3(),\\n\\n\\t\\t\\t_MorphingFlag = 1,\\n\\t\\t\\t_SkinningFlag = 2,\\n\\n\\t\\t\\t_NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1,\\n\\n\\t\\t\\t_depthMaterials = new Array( _NumberOfMaterialVariants ),\\n\\t\\t\\t_distanceMaterials = new Array( _NumberOfMaterialVariants ),\\n\\n\\t\\t\\t_materialCache = {};\\n\\n\\t\\tvar cubeDirections = [\\n\\t\\t\\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\\n\\t\\t\\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\\n\\t\\t];\\n\\n\\t\\tvar cubeUps = [\\n\\t\\t\\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\\n\\t\\t\\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\\tnew Vector3( 0, 0, - 1 )\\n\\t\\t];\\n\\n\\t\\tvar cube2DViewPorts = [\\n\\t\\t\\tnew Vector4(), new Vector4(), new Vector4(),\\n\\t\\t\\tnew Vector4(), new Vector4(), new Vector4()\\n\\t\\t];\\n\\n\\t\\t// init\\n\\n\\t\\tfor ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) {\\n\\n\\t\\t\\tvar useMorphing = ( i & _MorphingFlag ) !== 0;\\n\\t\\t\\tvar useSkinning = ( i & _SkinningFlag ) !== 0;\\n\\n\\t\\t\\tvar depthMaterial = new MeshDepthMaterial( {\\n\\n\\t\\t\\t\\tdepthPacking: RGBADepthPacking,\\n\\n\\t\\t\\t\\tmorphTargets: useMorphing,\\n\\t\\t\\t\\tskinning: useSkinning\\n\\n\\t\\t\\t} );\\n\\n\\t\\t\\t_depthMaterials[ i ] = depthMaterial;\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar distanceMaterial = new MeshDistanceMaterial( {\\n\\n\\t\\t\\t\\tmorphTargets: useMorphing,\\n\\t\\t\\t\\tskinning: useSkinning\\n\\n\\t\\t\\t} );\\n\\n\\t\\t\\t_distanceMaterials[ i ] = distanceMaterial;\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tvar scope = this;\\n\\n\\t\\tthis.enabled = false;\\n\\n\\t\\tthis.autoUpdate = true;\\n\\t\\tthis.needsUpdate = false;\\n\\n\\t\\tthis.type = PCFShadowMap;\\n\\n\\t\\tthis.renderReverseSided = true;\\n\\t\\tthis.renderSingleSided = true;\\n\\n\\t\\tthis.render = function ( lights, scene, camera ) {\\n\\n\\t\\t\\tif ( scope.enabled === false ) return;\\n\\t\\t\\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\\n\\n\\t\\t\\tif ( lights.length === 0 ) return;\\n\\n\\t\\t\\t// TODO Clean up (needed in case of contextlost)\\n\\t\\t\\tvar _gl = _renderer.context;\\n\\t\\t\\tvar _state = _renderer.state;\\n\\n\\t\\t\\t// Set GL state for depth map.\\n\\t\\t\\t_state.disable( _gl.BLEND );\\n\\t\\t\\t_state.buffers.color.setClear( 1, 1, 1, 1 );\\n\\t\\t\\t_state.buffers.depth.setTest( true );\\n\\t\\t\\t_state.setScissorTest( false );\\n\\n\\t\\t\\t// render depth map\\n\\n\\t\\t\\tvar faceCount;\\n\\n\\t\\t\\tfor ( var i = 0, il = lights.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar light = lights[ i ];\\n\\t\\t\\t\\tvar shadow = light.shadow;\\n\\t\\t\\t\\tvar isPointLight = light && light.isPointLight;\\n\\n\\t\\t\\t\\tif ( shadow === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\\n\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar shadowCamera = shadow.camera;\\n\\n\\t\\t\\t\\t_shadowMapSize.copy( shadow.mapSize );\\n\\t\\t\\t\\t_shadowMapSize.min( _maxShadowMapSize );\\n\\n\\t\\t\\t\\tif ( isPointLight ) {\\n\\n\\t\\t\\t\\t\\tvar vpWidth = _shadowMapSize.x;\\n\\t\\t\\t\\t\\tvar vpHeight = _shadowMapSize.y;\\n\\n\\t\\t\\t\\t\\t// These viewports map a cube-map onto a 2D texture with the\\n\\t\\t\\t\\t\\t// following orientation:\\n\\t\\t\\t\\t\\t//\\n\\t\\t\\t\\t\\t// xzXZ\\n\\t\\t\\t\\t\\t// y Y\\n\\t\\t\\t\\t\\t//\\n\\t\\t\\t\\t\\t// X - Positive x direction\\n\\t\\t\\t\\t\\t// x - Negative x direction\\n\\t\\t\\t\\t\\t// Y - Positive y direction\\n\\t\\t\\t\\t\\t// y - Negative y direction\\n\\t\\t\\t\\t\\t// Z - Positive z direction\\n\\t\\t\\t\\t\\t// z - Negative z direction\\n\\n\\t\\t\\t\\t\\t// positive X\\n\\t\\t\\t\\t\\tcube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight );\\n\\t\\t\\t\\t\\t// negative X\\n\\t\\t\\t\\t\\tcube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight );\\n\\t\\t\\t\\t\\t// positive Z\\n\\t\\t\\t\\t\\tcube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight );\\n\\t\\t\\t\\t\\t// negative Z\\n\\t\\t\\t\\t\\tcube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight );\\n\\t\\t\\t\\t\\t// positive Y\\n\\t\\t\\t\\t\\tcube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight );\\n\\t\\t\\t\\t\\t// negative Y\\n\\t\\t\\t\\t\\tcube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );\\n\\n\\t\\t\\t\\t\\t_shadowMapSize.x *= 4.0;\\n\\t\\t\\t\\t\\t_shadowMapSize.y *= 2.0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( shadow.map === null ) {\\n\\n\\t\\t\\t\\t\\tvar pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\\n\\n\\t\\t\\t\\t\\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\\n\\t\\t\\t\\t\\tshadow.map.texture.name = light.name + \\\".shadowMap\\\";\\n\\n\\t\\t\\t\\t\\tshadowCamera.updateProjectionMatrix();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( shadow.isSpotLightShadow ) {\\n\\n\\t\\t\\t\\t\\tshadow.update( light );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar shadowMap = shadow.map;\\n\\t\\t\\t\\tvar shadowMatrix = shadow.matrix;\\n\\n\\t\\t\\t\\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\\n\\t\\t\\t\\tshadowCamera.position.copy( _lightPositionWorld );\\n\\n\\t\\t\\t\\tif ( isPointLight ) {\\n\\n\\t\\t\\t\\t\\tfaceCount = 6;\\n\\n\\t\\t\\t\\t\\t// for point lights we set the shadow matrix to be a translation-only matrix\\n\\t\\t\\t\\t\\t// equal to inverse of the light's position\\n\\n\\t\\t\\t\\t\\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tfaceCount = 1;\\n\\n\\t\\t\\t\\t\\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\\n\\t\\t\\t\\t\\tshadowCamera.lookAt( _lookTarget );\\n\\t\\t\\t\\t\\tshadowCamera.updateMatrixWorld();\\n\\n\\t\\t\\t\\t\\t// compute shadow matrix\\n\\n\\t\\t\\t\\t\\tshadowMatrix.set(\\n\\t\\t\\t\\t\\t\\t0.5, 0.0, 0.0, 0.5,\\n\\t\\t\\t\\t\\t\\t0.0, 0.5, 0.0, 0.5,\\n\\t\\t\\t\\t\\t\\t0.0, 0.0, 0.5, 0.5,\\n\\t\\t\\t\\t\\t\\t0.0, 0.0, 0.0, 1.0\\n\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\\n\\t\\t\\t\\t\\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t_renderer.setRenderTarget( shadowMap );\\n\\t\\t\\t\\t_renderer.clear();\\n\\n\\t\\t\\t\\t// render shadow map for each cube face (if omni-directional) or\\n\\t\\t\\t\\t// run a single pass if not\\n\\n\\t\\t\\t\\tfor ( var face = 0; face < faceCount; face ++ ) {\\n\\n\\t\\t\\t\\t\\tif ( isPointLight ) {\\n\\n\\t\\t\\t\\t\\t\\t_lookTarget.copy( shadowCamera.position );\\n\\t\\t\\t\\t\\t\\t_lookTarget.add( cubeDirections[ face ] );\\n\\t\\t\\t\\t\\t\\tshadowCamera.up.copy( cubeUps[ face ] );\\n\\t\\t\\t\\t\\t\\tshadowCamera.lookAt( _lookTarget );\\n\\t\\t\\t\\t\\t\\tshadowCamera.updateMatrixWorld();\\n\\n\\t\\t\\t\\t\\t\\tvar vpDimensions = cube2DViewPorts[ face ];\\n\\t\\t\\t\\t\\t\\t_state.viewport( vpDimensions );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// update camera matrices and frustum\\n\\n\\t\\t\\t\\t\\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\\n\\t\\t\\t\\t\\t_frustum.setFromMatrix( _projScreenMatrix );\\n\\n\\t\\t\\t\\t\\t// set object matrices & frustum culling\\n\\n\\t\\t\\t\\t\\trenderObject( scene, camera, shadowCamera, isPointLight );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tscope.needsUpdate = false;\\n\\n\\t\\t};\\n\\n\\t\\tfunction getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) {\\n\\n\\t\\t\\tvar geometry = object.geometry;\\n\\n\\t\\t\\tvar result = null;\\n\\n\\t\\t\\tvar materialVariants = _depthMaterials;\\n\\t\\t\\tvar customMaterial = object.customDepthMaterial;\\n\\n\\t\\t\\tif ( isPointLight ) {\\n\\n\\t\\t\\t\\tmaterialVariants = _distanceMaterials;\\n\\t\\t\\t\\tcustomMaterial = object.customDistanceMaterial;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ! customMaterial ) {\\n\\n\\t\\t\\t\\tvar useMorphing = false;\\n\\n\\t\\t\\t\\tif ( material.morphTargets ) {\\n\\n\\t\\t\\t\\t\\tif ( geometry && geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\t\\t\\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\\n\\n\\t\\t\\t\\t\\t} else if ( geometry && geometry.isGeometry ) {\\n\\n\\t\\t\\t\\t\\t\\tuseMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( object.isSkinnedMesh && material.skinning === false ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar useSkinning = object.isSkinnedMesh && material.skinning;\\n\\n\\t\\t\\t\\tvar variantIndex = 0;\\n\\n\\t\\t\\t\\tif ( useMorphing ) variantIndex |= _MorphingFlag;\\n\\t\\t\\t\\tif ( useSkinning ) variantIndex |= _SkinningFlag;\\n\\n\\t\\t\\t\\tresult = materialVariants[ variantIndex ];\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tresult = customMaterial;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( _renderer.localClippingEnabled &&\\n\\t\\t\\t\\t\\tmaterial.clipShadows === true &&\\n\\t\\t\\t\\t\\tmaterial.clippingPlanes.length !== 0 ) {\\n\\n\\t\\t\\t\\t// in this case we need a unique material instance reflecting the\\n\\t\\t\\t\\t// appropriate state\\n\\n\\t\\t\\t\\tvar keyA = result.uuid, keyB = material.uuid;\\n\\n\\t\\t\\t\\tvar materialsForVariant = _materialCache[ keyA ];\\n\\n\\t\\t\\t\\tif ( materialsForVariant === undefined ) {\\n\\n\\t\\t\\t\\t\\tmaterialsForVariant = {};\\n\\t\\t\\t\\t\\t_materialCache[ keyA ] = materialsForVariant;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar cachedMaterial = materialsForVariant[ keyB ];\\n\\n\\t\\t\\t\\tif ( cachedMaterial === undefined ) {\\n\\n\\t\\t\\t\\t\\tcachedMaterial = result.clone();\\n\\t\\t\\t\\t\\tmaterialsForVariant[ keyB ] = cachedMaterial;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tresult = cachedMaterial;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tresult.visible = material.visible;\\n\\t\\t\\tresult.wireframe = material.wireframe;\\n\\n\\t\\t\\tvar side = material.side;\\n\\n\\t\\t\\tif ( scope.renderSingleSided && side == DoubleSide ) {\\n\\n\\t\\t\\t\\tside = FrontSide;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( scope.renderReverseSided ) {\\n\\n\\t\\t\\t\\tif ( side === FrontSide ) side = BackSide;\\n\\t\\t\\t\\telse if ( side === BackSide ) side = FrontSide;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tresult.side = side;\\n\\n\\t\\t\\tresult.clipShadows = material.clipShadows;\\n\\t\\t\\tresult.clippingPlanes = material.clippingPlanes;\\n\\t\\t\\tresult.clipIntersection = material.clipIntersection;\\n\\n\\t\\t\\tresult.wireframeLinewidth = material.wireframeLinewidth;\\n\\t\\t\\tresult.linewidth = material.linewidth;\\n\\n\\t\\t\\tif ( isPointLight && result.isMeshDistanceMaterial ) {\\n\\n\\t\\t\\t\\tresult.referencePosition.copy( lightPositionWorld );\\n\\t\\t\\t\\tresult.nearDistance = shadowCameraNear;\\n\\t\\t\\t\\tresult.farDistance = shadowCameraFar;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t}\\n\\n\\t\\tfunction renderObject( object, camera, shadowCamera, isPointLight ) {\\n\\n\\t\\t\\tif ( object.visible === false ) return;\\n\\n\\t\\t\\tvar visible = object.layers.test( camera.layers );\\n\\n\\t\\t\\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\\n\\n\\t\\t\\t\\tif ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\\n\\n\\t\\t\\t\\t\\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\\n\\n\\t\\t\\t\\t\\tvar geometry = _objects.update( object );\\n\\t\\t\\t\\t\\tvar material = object.material;\\n\\n\\t\\t\\t\\t\\tif ( Array.isArray( material ) ) {\\n\\n\\t\\t\\t\\t\\t\\tvar groups = geometry.groups;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var k = 0, kl = groups.length; k < kl; k ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar group = groups[ k ];\\n\\t\\t\\t\\t\\t\\t\\tvar groupMaterial = material[ group.materialIndex ];\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( groupMaterial && groupMaterial.visible ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\\n\\t\\t\\t\\t\\t\\t\\t\\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else if ( material.visible ) {\\n\\n\\t\\t\\t\\t\\t\\tvar depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far );\\n\\t\\t\\t\\t\\t\\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar children = object.children;\\n\\n\\t\\t\\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\trenderObject( children[ i ], camera, shadowCamera, isPointLight );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLAttributes( gl ) {\\n\\n\\t\\tvar buffers = {};\\n\\n\\t\\tfunction createBuffer( attribute, bufferType ) {\\n\\n\\t\\t\\tvar array = attribute.array;\\n\\t\\t\\tvar usage = attribute.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW;\\n\\n\\t\\t\\tvar buffer = gl.createBuffer();\\n\\n\\t\\t\\tgl.bindBuffer( bufferType, buffer );\\n\\t\\t\\tgl.bufferData( bufferType, array, usage );\\n\\n\\t\\t\\tattribute.onUploadCallback();\\n\\n\\t\\t\\tvar type = gl.FLOAT;\\n\\n\\t\\t\\tif ( array instanceof Float32Array ) {\\n\\n\\t\\t\\t\\ttype = gl.FLOAT;\\n\\n\\t\\t\\t} else if ( array instanceof Float64Array ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\\n\\n\\t\\t\\t} else if ( array instanceof Uint16Array ) {\\n\\n\\t\\t\\t\\ttype = gl.UNSIGNED_SHORT;\\n\\n\\t\\t\\t} else if ( array instanceof Int16Array ) {\\n\\n\\t\\t\\t\\ttype = gl.SHORT;\\n\\n\\t\\t\\t} else if ( array instanceof Uint32Array ) {\\n\\n\\t\\t\\t\\ttype = gl.UNSIGNED_INT;\\n\\n\\t\\t\\t} else if ( array instanceof Int32Array ) {\\n\\n\\t\\t\\t\\ttype = gl.INT;\\n\\n\\t\\t\\t} else if ( array instanceof Int8Array ) {\\n\\n\\t\\t\\t\\ttype = gl.BYTE;\\n\\n\\t\\t\\t} else if ( array instanceof Uint8Array ) {\\n\\n\\t\\t\\t\\ttype = gl.UNSIGNED_BYTE;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn {\\n\\t\\t\\t\\tbuffer: buffer,\\n\\t\\t\\t\\ttype: type,\\n\\t\\t\\t\\tbytesPerElement: array.BYTES_PER_ELEMENT,\\n\\t\\t\\t\\tversion: attribute.version\\n\\t\\t\\t};\\n\\n\\t\\t}\\n\\n\\t\\tfunction updateBuffer( buffer, attribute, bufferType ) {\\n\\n\\t\\t\\tvar array = attribute.array;\\n\\t\\t\\tvar updateRange = attribute.updateRange;\\n\\n\\t\\t\\tgl.bindBuffer( bufferType, buffer );\\n\\n\\t\\t\\tif ( attribute.dynamic === false ) {\\n\\n\\t\\t\\t\\tgl.bufferData( bufferType, array, gl.STATIC_DRAW );\\n\\n\\t\\t\\t} else if ( updateRange.count === - 1 ) {\\n\\n\\t\\t\\t\\t// Not using update ranges\\n\\n\\t\\t\\t\\tgl.bufferSubData( bufferType, 0, array );\\n\\n\\t\\t\\t} else if ( updateRange.count === 0 ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\\n\\t\\t\\t\\t\\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\\n\\n\\t\\t\\t\\tupdateRange.count = - 1; // reset range\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tfunction get( attribute ) {\\n\\n\\t\\t\\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\\n\\n\\t\\t\\treturn buffers[ attribute.uuid ];\\n\\n\\t\\t}\\n\\n\\t\\tfunction remove( attribute ) {\\n\\n\\t\\t\\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\\n\\n\\t\\t\\tvar data = buffers[ attribute.uuid ];\\n\\n\\t\\t\\tif ( data ) {\\n\\n\\t\\t\\t\\tgl.deleteBuffer( data.buffer );\\n\\n\\t\\t\\t\\tdelete buffers[ attribute.uuid ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction update( attribute, bufferType ) {\\n\\n\\t\\t\\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\\n\\n\\t\\t\\tvar data = buffers[ attribute.uuid ];\\n\\n\\t\\t\\tif ( data === undefined ) {\\n\\n\\t\\t\\t\\tbuffers[ attribute.uuid ] = createBuffer( attribute, bufferType );\\n\\n\\t\\t\\t} else if ( data.version < attribute.version ) {\\n\\n\\t\\t\\t\\tupdateBuffer( data.buffer, attribute, bufferType );\\n\\n\\t\\t\\t\\tdata.version = attribute.version;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tget: get,\\n\\t\\t\\tremove: remove,\\n\\t\\t\\tupdate: update\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tfunction Euler( x, y, z, order ) {\\n\\n\\t\\tthis._x = x || 0;\\n\\t\\tthis._y = y || 0;\\n\\t\\tthis._z = z || 0;\\n\\t\\tthis._order = order || Euler.DefaultOrder;\\n\\n\\t}\\n\\n\\tEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\\n\\n\\tEuler.DefaultOrder = 'XYZ';\\n\\n\\tObject.defineProperties( Euler.prototype, {\\n\\n\\t\\tx: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._x;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._x = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\ty: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._y;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._y = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tz: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._z;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._z = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\torder: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this._order;\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tthis._order = value;\\n\\t\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Euler.prototype, {\\n\\n\\t\\tisEuler: true,\\n\\n\\t\\tset: function ( x, y, z, order ) {\\n\\n\\t\\t\\tthis._x = x;\\n\\t\\t\\tthis._y = y;\\n\\t\\t\\tthis._z = z;\\n\\t\\t\\tthis._order = order || this._order;\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this._x, this._y, this._z, this._order );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( euler ) {\\n\\n\\t\\t\\tthis._x = euler._x;\\n\\t\\t\\tthis._y = euler._y;\\n\\t\\t\\tthis._z = euler._z;\\n\\t\\t\\tthis._order = euler._order;\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromRotationMatrix: function ( m, order, update ) {\\n\\n\\t\\t\\tvar clamp = _Math.clamp;\\n\\n\\t\\t\\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\\n\\n\\t\\t\\tvar te = m.elements;\\n\\t\\t\\tvar m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\\n\\t\\t\\tvar m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\\n\\t\\t\\tvar m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\\n\\n\\t\\t\\torder = order || this._order;\\n\\n\\t\\t\\tif ( order === 'XYZ' ) {\\n\\n\\t\\t\\t\\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\\n\\n\\t\\t\\t\\tif ( Math.abs( m13 ) < 0.99999 ) {\\n\\n\\t\\t\\t\\t\\tthis._x = Math.atan2( - m23, m33 );\\n\\t\\t\\t\\t\\tthis._z = Math.atan2( - m12, m11 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis._x = Math.atan2( m32, m22 );\\n\\t\\t\\t\\t\\tthis._z = 0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( order === 'YXZ' ) {\\n\\n\\t\\t\\t\\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\\n\\n\\t\\t\\t\\tif ( Math.abs( m23 ) < 0.99999 ) {\\n\\n\\t\\t\\t\\t\\tthis._y = Math.atan2( m13, m33 );\\n\\t\\t\\t\\t\\tthis._z = Math.atan2( m21, m22 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis._y = Math.atan2( - m31, m11 );\\n\\t\\t\\t\\t\\tthis._z = 0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( order === 'ZXY' ) {\\n\\n\\t\\t\\t\\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\\n\\n\\t\\t\\t\\tif ( Math.abs( m32 ) < 0.99999 ) {\\n\\n\\t\\t\\t\\t\\tthis._y = Math.atan2( - m31, m33 );\\n\\t\\t\\t\\t\\tthis._z = Math.atan2( - m12, m22 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis._y = 0;\\n\\t\\t\\t\\t\\tthis._z = Math.atan2( m21, m11 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( order === 'ZYX' ) {\\n\\n\\t\\t\\t\\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\\n\\n\\t\\t\\t\\tif ( Math.abs( m31 ) < 0.99999 ) {\\n\\n\\t\\t\\t\\t\\tthis._x = Math.atan2( m32, m33 );\\n\\t\\t\\t\\t\\tthis._z = Math.atan2( m21, m11 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis._x = 0;\\n\\t\\t\\t\\t\\tthis._z = Math.atan2( - m12, m22 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( order === 'YZX' ) {\\n\\n\\t\\t\\t\\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\\n\\n\\t\\t\\t\\tif ( Math.abs( m21 ) < 0.99999 ) {\\n\\n\\t\\t\\t\\t\\tthis._x = Math.atan2( - m23, m22 );\\n\\t\\t\\t\\t\\tthis._y = Math.atan2( - m31, m11 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis._x = 0;\\n\\t\\t\\t\\t\\tthis._y = Math.atan2( m13, m33 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( order === 'XZY' ) {\\n\\n\\t\\t\\t\\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\\n\\n\\t\\t\\t\\tif ( Math.abs( m12 ) < 0.99999 ) {\\n\\n\\t\\t\\t\\t\\tthis._x = Math.atan2( m32, m22 );\\n\\t\\t\\t\\t\\tthis._y = Math.atan2( m13, m11 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis._x = Math.atan2( - m23, m33 );\\n\\t\\t\\t\\t\\tthis._y = 0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis._order = order;\\n\\n\\t\\t\\tif ( update !== false ) this.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromQuaternion: function () {\\n\\n\\t\\t\\tvar matrix = new Matrix4();\\n\\n\\t\\t\\treturn function setFromQuaternion( q, order, update ) {\\n\\n\\t\\t\\t\\tmatrix.makeRotationFromQuaternion( q );\\n\\n\\t\\t\\t\\treturn this.setFromRotationMatrix( matrix, order, update );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tsetFromVector3: function ( v, order ) {\\n\\n\\t\\t\\treturn this.set( v.x, v.y, v.z, order || this._order );\\n\\n\\t\\t},\\n\\n\\t\\treorder: function () {\\n\\n\\t\\t\\t// WARNING: this discards revolution information -bhouston\\n\\n\\t\\t\\tvar q = new Quaternion();\\n\\n\\t\\t\\treturn function reorder( newOrder ) {\\n\\n\\t\\t\\t\\tq.setFromEuler( this );\\n\\n\\t\\t\\t\\treturn this.setFromQuaternion( q, newOrder );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tequals: function ( euler ) {\\n\\n\\t\\t\\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\\n\\n\\t\\t},\\n\\n\\t\\tfromArray: function ( array ) {\\n\\n\\t\\t\\tthis._x = array[ 0 ];\\n\\t\\t\\tthis._y = array[ 1 ];\\n\\t\\t\\tthis._z = array[ 2 ];\\n\\t\\t\\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\\n\\n\\t\\t\\tthis.onChangeCallback();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoArray: function ( array, offset ) {\\n\\n\\t\\t\\tif ( array === undefined ) array = [];\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tarray[ offset ] = this._x;\\n\\t\\t\\tarray[ offset + 1 ] = this._y;\\n\\t\\t\\tarray[ offset + 2 ] = this._z;\\n\\t\\t\\tarray[ offset + 3 ] = this._order;\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t},\\n\\n\\t\\ttoVector3: function ( optionalResult ) {\\n\\n\\t\\t\\tif ( optionalResult ) {\\n\\n\\t\\t\\t\\treturn optionalResult.set( this._x, this._y, this._z );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\treturn new Vector3( this._x, this._y, this._z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tonChange: function ( callback ) {\\n\\n\\t\\t\\tthis.onChangeCallback = callback;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tonChangeCallback: function () {}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Layers() {\\n\\n\\t\\tthis.mask = 1 | 0;\\n\\n\\t}\\n\\n\\tObject.assign( Layers.prototype, {\\n\\n\\t\\tset: function ( channel ) {\\n\\n\\t\\t\\tthis.mask = 1 << channel | 0;\\n\\n\\t\\t},\\n\\n\\t\\tenable: function ( channel ) {\\n\\n\\t\\t\\tthis.mask |= 1 << channel | 0;\\n\\n\\t\\t},\\n\\n\\t\\ttoggle: function ( channel ) {\\n\\n\\t\\t\\tthis.mask ^= 1 << channel | 0;\\n\\n\\t\\t},\\n\\n\\t\\tdisable: function ( channel ) {\\n\\n\\t\\t\\tthis.mask &= ~ ( 1 << channel | 0 );\\n\\n\\t\\t},\\n\\n\\t\\ttest: function ( layers ) {\\n\\n\\t\\t\\treturn ( this.mask & layers.mask ) !== 0;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t * @author elephantatwork / www.elephantatwork.ch\\n\\t */\\n\\n\\tvar object3DId = 0;\\n\\n\\tfunction Object3D() {\\n\\n\\t\\tObject.defineProperty( this, 'id', { value: object3DId ++ } );\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.name = '';\\n\\t\\tthis.type = 'Object3D';\\n\\n\\t\\tthis.parent = null;\\n\\t\\tthis.children = [];\\n\\n\\t\\tthis.up = Object3D.DefaultUp.clone();\\n\\n\\t\\tvar position = new Vector3();\\n\\t\\tvar rotation = new Euler();\\n\\t\\tvar quaternion = new Quaternion();\\n\\t\\tvar scale = new Vector3( 1, 1, 1 );\\n\\n\\t\\tfunction onRotationChange() {\\n\\n\\t\\t\\tquaternion.setFromEuler( rotation, false );\\n\\n\\t\\t}\\n\\n\\t\\tfunction onQuaternionChange() {\\n\\n\\t\\t\\trotation.setFromQuaternion( quaternion, undefined, false );\\n\\n\\t\\t}\\n\\n\\t\\trotation.onChange( onRotationChange );\\n\\t\\tquaternion.onChange( onQuaternionChange );\\n\\n\\t\\tObject.defineProperties( this, {\\n\\t\\t\\tposition: {\\n\\t\\t\\t\\tenumerable: true,\\n\\t\\t\\t\\tvalue: position\\n\\t\\t\\t},\\n\\t\\t\\trotation: {\\n\\t\\t\\t\\tenumerable: true,\\n\\t\\t\\t\\tvalue: rotation\\n\\t\\t\\t},\\n\\t\\t\\tquaternion: {\\n\\t\\t\\t\\tenumerable: true,\\n\\t\\t\\t\\tvalue: quaternion\\n\\t\\t\\t},\\n\\t\\t\\tscale: {\\n\\t\\t\\t\\tenumerable: true,\\n\\t\\t\\t\\tvalue: scale\\n\\t\\t\\t},\\n\\t\\t\\tmodelViewMatrix: {\\n\\t\\t\\t\\tvalue: new Matrix4()\\n\\t\\t\\t},\\n\\t\\t\\tnormalMatrix: {\\n\\t\\t\\t\\tvalue: new Matrix3()\\n\\t\\t\\t}\\n\\t\\t} );\\n\\n\\t\\tthis.matrix = new Matrix4();\\n\\t\\tthis.matrixWorld = new Matrix4();\\n\\n\\t\\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\\n\\t\\tthis.matrixWorldNeedsUpdate = false;\\n\\n\\t\\tthis.layers = new Layers();\\n\\t\\tthis.visible = true;\\n\\n\\t\\tthis.castShadow = false;\\n\\t\\tthis.receiveShadow = false;\\n\\n\\t\\tthis.frustumCulled = true;\\n\\t\\tthis.renderOrder = 0;\\n\\n\\t\\tthis.userData = {};\\n\\n\\t}\\n\\n\\tObject3D.DefaultUp = new Vector3( 0, 1, 0 );\\n\\tObject3D.DefaultMatrixAutoUpdate = true;\\n\\n\\tObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\\n\\n\\t\\tconstructor: Object3D,\\n\\n\\t\\tisObject3D: true,\\n\\n\\t\\tonBeforeRender: function () {},\\n\\t\\tonAfterRender: function () {},\\n\\n\\t\\tapplyMatrix: function ( matrix ) {\\n\\n\\t\\t\\tthis.matrix.multiplyMatrices( matrix, this.matrix );\\n\\n\\t\\t\\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\\n\\n\\t\\t},\\n\\n\\t\\tapplyQuaternion: function ( q ) {\\n\\n\\t\\t\\tthis.quaternion.premultiply( q );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetRotationFromAxisAngle: function ( axis, angle ) {\\n\\n\\t\\t\\t// assumes axis is normalized\\n\\n\\t\\t\\tthis.quaternion.setFromAxisAngle( axis, angle );\\n\\n\\t\\t},\\n\\n\\t\\tsetRotationFromEuler: function ( euler ) {\\n\\n\\t\\t\\tthis.quaternion.setFromEuler( euler, true );\\n\\n\\t\\t},\\n\\n\\t\\tsetRotationFromMatrix: function ( m ) {\\n\\n\\t\\t\\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\\n\\n\\t\\t\\tthis.quaternion.setFromRotationMatrix( m );\\n\\n\\t\\t},\\n\\n\\t\\tsetRotationFromQuaternion: function ( q ) {\\n\\n\\t\\t\\t// assumes q is normalized\\n\\n\\t\\t\\tthis.quaternion.copy( q );\\n\\n\\t\\t},\\n\\n\\t\\trotateOnAxis: function () {\\n\\n\\t\\t\\t// rotate object on axis in object space\\n\\t\\t\\t// axis is assumed to be normalized\\n\\n\\t\\t\\tvar q1 = new Quaternion();\\n\\n\\t\\t\\treturn function rotateOnAxis( axis, angle ) {\\n\\n\\t\\t\\t\\tq1.setFromAxisAngle( axis, angle );\\n\\n\\t\\t\\t\\tthis.quaternion.multiply( q1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateOnWorldAxis: function () {\\n\\n\\t\\t\\t// rotate object on axis in world space\\n\\t\\t\\t// axis is assumed to be normalized\\n\\t\\t\\t// method assumes no rotated parent\\n\\n\\t\\t\\tvar q1 = new Quaternion();\\n\\n\\t\\t\\treturn function rotateOnWorldAxis( axis, angle ) {\\n\\n\\t\\t\\t\\tq1.setFromAxisAngle( axis, angle );\\n\\n\\t\\t\\t\\tthis.quaternion.premultiply( q1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateX: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3( 1, 0, 0 );\\n\\n\\t\\t\\treturn function rotateX( angle ) {\\n\\n\\t\\t\\t\\treturn this.rotateOnAxis( v1, angle );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateY: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3( 0, 1, 0 );\\n\\n\\t\\t\\treturn function rotateY( angle ) {\\n\\n\\t\\t\\t\\treturn this.rotateOnAxis( v1, angle );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateZ: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3( 0, 0, 1 );\\n\\n\\t\\t\\treturn function rotateZ( angle ) {\\n\\n\\t\\t\\t\\treturn this.rotateOnAxis( v1, angle );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslateOnAxis: function () {\\n\\n\\t\\t\\t// translate object by distance along axis in object space\\n\\t\\t\\t// axis is assumed to be normalized\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function translateOnAxis( axis, distance ) {\\n\\n\\t\\t\\t\\tv1.copy( axis ).applyQuaternion( this.quaternion );\\n\\n\\t\\t\\t\\tthis.position.add( v1.multiplyScalar( distance ) );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslateX: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3( 1, 0, 0 );\\n\\n\\t\\t\\treturn function translateX( distance ) {\\n\\n\\t\\t\\t\\treturn this.translateOnAxis( v1, distance );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslateY: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3( 0, 1, 0 );\\n\\n\\t\\t\\treturn function translateY( distance ) {\\n\\n\\t\\t\\t\\treturn this.translateOnAxis( v1, distance );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslateZ: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3( 0, 0, 1 );\\n\\n\\t\\t\\treturn function translateZ( distance ) {\\n\\n\\t\\t\\t\\treturn this.translateOnAxis( v1, distance );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tlocalToWorld: function ( vector ) {\\n\\n\\t\\t\\treturn vector.applyMatrix4( this.matrixWorld );\\n\\n\\t\\t},\\n\\n\\t\\tworldToLocal: function () {\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function worldToLocal( vector ) {\\n\\n\\t\\t\\t\\treturn vector.applyMatrix4( m1.getInverse( this.matrixWorld ) );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tlookAt: function () {\\n\\n\\t\\t\\t// This method does not support objects with rotated and/or translated parent(s)\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\t\\t\\tvar vector = new Vector3();\\n\\n\\t\\t\\treturn function lookAt( x, y, z ) {\\n\\n\\t\\t\\t\\tif ( x.isVector3 ) {\\n\\n\\t\\t\\t\\t\\tvector.copy( x );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvector.set( x, y, z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( this.isCamera ) {\\n\\n\\t\\t\\t\\t\\tm1.lookAt( this.position, vector, this.up );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tm1.lookAt( vector, this.position, this.up );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.quaternion.setFromRotationMatrix( m1 );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tadd: function ( object ) {\\n\\n\\t\\t\\tif ( arguments.length > 1 ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < arguments.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tthis.add( arguments[ i ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( object === this ) {\\n\\n\\t\\t\\t\\tconsole.error( \\\"THREE.Object3D.add: object can't be added as a child of itself.\\\", object );\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ( object && object.isObject3D ) ) {\\n\\n\\t\\t\\t\\tif ( object.parent !== null ) {\\n\\n\\t\\t\\t\\t\\tobject.parent.remove( object );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tobject.parent = this;\\n\\t\\t\\t\\tobject.dispatchEvent( { type: 'added' } );\\n\\n\\t\\t\\t\\tthis.children.push( object );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tconsole.error( \\\"THREE.Object3D.add: object not an instance of THREE.Object3D.\\\", object );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tremove: function ( object ) {\\n\\n\\t\\t\\tif ( arguments.length > 1 ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < arguments.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tthis.remove( arguments[ i ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar index = this.children.indexOf( object );\\n\\n\\t\\t\\tif ( index !== - 1 ) {\\n\\n\\t\\t\\t\\tobject.parent = null;\\n\\n\\t\\t\\t\\tobject.dispatchEvent( { type: 'removed' } );\\n\\n\\t\\t\\t\\tthis.children.splice( index, 1 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetObjectById: function ( id ) {\\n\\n\\t\\t\\treturn this.getObjectByProperty( 'id', id );\\n\\n\\t\\t},\\n\\n\\t\\tgetObjectByName: function ( name ) {\\n\\n\\t\\t\\treturn this.getObjectByProperty( 'name', name );\\n\\n\\t\\t},\\n\\n\\t\\tgetObjectByProperty: function ( name, value ) {\\n\\n\\t\\t\\tif ( this[ name ] === value ) return this;\\n\\n\\t\\t\\tfor ( var i = 0, l = this.children.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar child = this.children[ i ];\\n\\t\\t\\t\\tvar object = child.getObjectByProperty( name, value );\\n\\n\\t\\t\\t\\tif ( object !== undefined ) {\\n\\n\\t\\t\\t\\t\\treturn object;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn undefined;\\n\\n\\t\\t},\\n\\n\\t\\tgetWorldPosition: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\tthis.updateMatrixWorld( true );\\n\\n\\t\\t\\treturn result.setFromMatrixPosition( this.matrixWorld );\\n\\n\\t\\t},\\n\\n\\t\\tgetWorldQuaternion: function () {\\n\\n\\t\\t\\tvar position = new Vector3();\\n\\t\\t\\tvar scale = new Vector3();\\n\\n\\t\\t\\treturn function getWorldQuaternion( optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Quaternion();\\n\\n\\t\\t\\t\\tthis.updateMatrixWorld( true );\\n\\n\\t\\t\\t\\tthis.matrixWorld.decompose( position, result, scale );\\n\\n\\t\\t\\t\\treturn result;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tgetWorldRotation: function () {\\n\\n\\t\\t\\tvar quaternion = new Quaternion();\\n\\n\\t\\t\\treturn function getWorldRotation( optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Euler();\\n\\n\\t\\t\\t\\tthis.getWorldQuaternion( quaternion );\\n\\n\\t\\t\\t\\treturn result.setFromQuaternion( quaternion, this.rotation.order, false );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tgetWorldScale: function () {\\n\\n\\t\\t\\tvar position = new Vector3();\\n\\t\\t\\tvar quaternion = new Quaternion();\\n\\n\\t\\t\\treturn function getWorldScale( optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\t\\tthis.updateMatrixWorld( true );\\n\\n\\t\\t\\t\\tthis.matrixWorld.decompose( position, quaternion, result );\\n\\n\\t\\t\\t\\treturn result;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tgetWorldDirection: function () {\\n\\n\\t\\t\\tvar quaternion = new Quaternion();\\n\\n\\t\\t\\treturn function getWorldDirection( optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\t\\tthis.getWorldQuaternion( quaternion );\\n\\n\\t\\t\\t\\treturn result.set( 0, 0, 1 ).applyQuaternion( quaternion );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\traycast: function () {},\\n\\n\\t\\ttraverse: function ( callback ) {\\n\\n\\t\\t\\tcallback( this );\\n\\n\\t\\t\\tvar children = this.children;\\n\\n\\t\\t\\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tchildren[ i ].traverse( callback );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\ttraverseVisible: function ( callback ) {\\n\\n\\t\\t\\tif ( this.visible === false ) return;\\n\\n\\t\\t\\tcallback( this );\\n\\n\\t\\t\\tvar children = this.children;\\n\\n\\t\\t\\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tchildren[ i ].traverseVisible( callback );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\ttraverseAncestors: function ( callback ) {\\n\\n\\t\\t\\tvar parent = this.parent;\\n\\n\\t\\t\\tif ( parent !== null ) {\\n\\n\\t\\t\\t\\tcallback( parent );\\n\\n\\t\\t\\t\\tparent.traverseAncestors( callback );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tupdateMatrix: function () {\\n\\n\\t\\t\\tthis.matrix.compose( this.position, this.quaternion, this.scale );\\n\\n\\t\\t\\tthis.matrixWorldNeedsUpdate = true;\\n\\n\\t\\t},\\n\\n\\t\\tupdateMatrixWorld: function ( force ) {\\n\\n\\t\\t\\tif ( this.matrixAutoUpdate ) this.updateMatrix();\\n\\n\\t\\t\\tif ( this.matrixWorldNeedsUpdate || force ) {\\n\\n\\t\\t\\t\\tif ( this.parent === null ) {\\n\\n\\t\\t\\t\\t\\tthis.matrixWorld.copy( this.matrix );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.matrixWorldNeedsUpdate = false;\\n\\n\\t\\t\\t\\tforce = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// update children\\n\\n\\t\\t\\tvar children = this.children;\\n\\n\\t\\t\\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tchildren[ i ].updateMatrixWorld( force );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\t// meta is a string when called from JSON.stringify\\n\\t\\t\\tvar isRootObject = ( meta === undefined || typeof meta === 'string' );\\n\\n\\t\\t\\tvar output = {};\\n\\n\\t\\t\\t// meta is a hash used to collect geometries, materials.\\n\\t\\t\\t// not providing it implies that this is the root object\\n\\t\\t\\t// being serialized.\\n\\t\\t\\tif ( isRootObject ) {\\n\\n\\t\\t\\t\\t// initialize meta obj\\n\\t\\t\\t\\tmeta = {\\n\\t\\t\\t\\t\\tgeometries: {},\\n\\t\\t\\t\\t\\tmaterials: {},\\n\\t\\t\\t\\t\\ttextures: {},\\n\\t\\t\\t\\t\\timages: {},\\n\\t\\t\\t\\t\\tshapes: {}\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\toutput.metadata = {\\n\\t\\t\\t\\t\\tversion: 4.5,\\n\\t\\t\\t\\t\\ttype: 'Object',\\n\\t\\t\\t\\t\\tgenerator: 'Object3D.toJSON'\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// standard Object3D serialization\\n\\n\\t\\t\\tvar object = {};\\n\\n\\t\\t\\tobject.uuid = this.uuid;\\n\\t\\t\\tobject.type = this.type;\\n\\n\\t\\t\\tif ( this.name !== '' ) object.name = this.name;\\n\\t\\t\\tif ( this.castShadow === true ) object.castShadow = true;\\n\\t\\t\\tif ( this.receiveShadow === true ) object.receiveShadow = true;\\n\\t\\t\\tif ( this.visible === false ) object.visible = false;\\n\\t\\t\\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\\n\\n\\t\\t\\tobject.matrix = this.matrix.toArray();\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tfunction serialize( library, element ) {\\n\\n\\t\\t\\t\\tif ( library[ element.uuid ] === undefined ) {\\n\\n\\t\\t\\t\\t\\tlibrary[ element.uuid ] = element.toJSON( meta );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn element.uuid;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.geometry !== undefined ) {\\n\\n\\t\\t\\t\\tobject.geometry = serialize( meta.geometries, this.geometry );\\n\\n\\t\\t\\t\\tvar parameters = this.geometry.parameters;\\n\\n\\t\\t\\t\\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\\n\\n\\t\\t\\t\\t\\tvar shapes = parameters.shapes;\\n\\n\\t\\t\\t\\t\\tif ( Array.isArray( shapes ) ) {\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar shape = shapes[ i ];\\n\\n\\t\\t\\t\\t\\t\\t\\tserialize( meta.shapes, shape );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tserialize( meta.shapes, shapes );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.material !== undefined ) {\\n\\n\\t\\t\\t\\tif ( Array.isArray( this.material ) ) {\\n\\n\\t\\t\\t\\t\\tvar uuids = [];\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = this.material.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tobject.material = uuids;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tobject.material = serialize( meta.materials, this.material );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tif ( this.children.length > 0 ) {\\n\\n\\t\\t\\t\\tobject.children = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < this.children.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tobject.children.push( this.children[ i ].toJSON( meta ).object );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( isRootObject ) {\\n\\n\\t\\t\\t\\tvar geometries = extractFromCache( meta.geometries );\\n\\t\\t\\t\\tvar materials = extractFromCache( meta.materials );\\n\\t\\t\\t\\tvar textures = extractFromCache( meta.textures );\\n\\t\\t\\t\\tvar images = extractFromCache( meta.images );\\n\\t\\t\\t\\tvar shapes = extractFromCache( meta.shapes );\\n\\n\\t\\t\\t\\tif ( geometries.length > 0 ) output.geometries = geometries;\\n\\t\\t\\t\\tif ( materials.length > 0 ) output.materials = materials;\\n\\t\\t\\t\\tif ( textures.length > 0 ) output.textures = textures;\\n\\t\\t\\t\\tif ( images.length > 0 ) output.images = images;\\n\\t\\t\\t\\tif ( shapes.length > 0 ) output.shapes = shapes;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\toutput.object = object;\\n\\n\\t\\t\\treturn output;\\n\\n\\t\\t\\t// extract data from the cache hash\\n\\t\\t\\t// remove metadata on each item\\n\\t\\t\\t// and return as array\\n\\t\\t\\tfunction extractFromCache( cache ) {\\n\\n\\t\\t\\t\\tvar values = [];\\n\\t\\t\\t\\tfor ( var key in cache ) {\\n\\n\\t\\t\\t\\t\\tvar data = cache[ key ];\\n\\t\\t\\t\\t\\tdelete data.metadata;\\n\\t\\t\\t\\t\\tvalues.push( data );\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn values;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tclone: function ( recursive ) {\\n\\n\\t\\t\\treturn new this.constructor().copy( this, recursive );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source, recursive ) {\\n\\n\\t\\t\\tif ( recursive === undefined ) recursive = true;\\n\\n\\t\\t\\tthis.name = source.name;\\n\\n\\t\\t\\tthis.up.copy( source.up );\\n\\n\\t\\t\\tthis.position.copy( source.position );\\n\\t\\t\\tthis.quaternion.copy( source.quaternion );\\n\\t\\t\\tthis.scale.copy( source.scale );\\n\\n\\t\\t\\tthis.matrix.copy( source.matrix );\\n\\t\\t\\tthis.matrixWorld.copy( source.matrixWorld );\\n\\n\\t\\t\\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\\n\\t\\t\\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\\n\\n\\t\\t\\tthis.layers.mask = source.layers.mask;\\n\\t\\t\\tthis.visible = source.visible;\\n\\n\\t\\t\\tthis.castShadow = source.castShadow;\\n\\t\\t\\tthis.receiveShadow = source.receiveShadow;\\n\\n\\t\\t\\tthis.frustumCulled = source.frustumCulled;\\n\\t\\t\\tthis.renderOrder = source.renderOrder;\\n\\n\\t\\t\\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\\n\\n\\t\\t\\tif ( recursive === true ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < source.children.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar child = source.children[ i ];\\n\\t\\t\\t\\t\\tthis.add( child.clone() );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t*/\\n\\n\\tfunction Camera() {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Camera';\\n\\n\\t\\tthis.matrixWorldInverse = new Matrix4();\\n\\t\\tthis.projectionMatrix = new Matrix4();\\n\\n\\t}\\n\\n\\tCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Camera,\\n\\n\\t\\tisCamera: true,\\n\\n\\t\\tcopy: function ( source, recursive ) {\\n\\n\\t\\t\\tObject3D.prototype.copy.call( this, source, recursive );\\n\\n\\t\\t\\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\\n\\t\\t\\tthis.projectionMatrix.copy( source.projectionMatrix );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetWorldDirection: function () {\\n\\n\\t\\t\\tvar quaternion = new Quaternion();\\n\\n\\t\\t\\treturn function getWorldDirection( optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\t\\tthis.getWorldQuaternion( quaternion );\\n\\n\\t\\t\\t\\treturn result.set( 0, 0, - 1 ).applyQuaternion( quaternion );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tupdateMatrixWorld: function ( force ) {\\n\\n\\t\\t\\tObject3D.prototype.updateMatrixWorld.call( this, force );\\n\\n\\t\\t\\tthis.matrixWorldInverse.getInverse( this.matrixWorld );\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author arose / http://github.com/arose\\n\\t */\\n\\n\\tfunction OrthographicCamera( left, right, top, bottom, near, far ) {\\n\\n\\t\\tCamera.call( this );\\n\\n\\t\\tthis.type = 'OrthographicCamera';\\n\\n\\t\\tthis.zoom = 1;\\n\\t\\tthis.view = null;\\n\\n\\t\\tthis.left = left;\\n\\t\\tthis.right = right;\\n\\t\\tthis.top = top;\\n\\t\\tthis.bottom = bottom;\\n\\n\\t\\tthis.near = ( near !== undefined ) ? near : 0.1;\\n\\t\\tthis.far = ( far !== undefined ) ? far : 2000;\\n\\n\\t\\tthis.updateProjectionMatrix();\\n\\n\\t}\\n\\n\\tOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\\n\\n\\t\\tconstructor: OrthographicCamera,\\n\\n\\t\\tisOrthographicCamera: true,\\n\\n\\t\\tcopy: function ( source, recursive ) {\\n\\n\\t\\t\\tCamera.prototype.copy.call( this, source, recursive );\\n\\n\\t\\t\\tthis.left = source.left;\\n\\t\\t\\tthis.right = source.right;\\n\\t\\t\\tthis.top = source.top;\\n\\t\\t\\tthis.bottom = source.bottom;\\n\\t\\t\\tthis.near = source.near;\\n\\t\\t\\tthis.far = source.far;\\n\\n\\t\\t\\tthis.zoom = source.zoom;\\n\\t\\t\\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\\n\\n\\t\\t\\tif ( this.view === null ) {\\n\\n\\t\\t\\t\\tthis.view = {\\n\\t\\t\\t\\t\\tenabled: true,\\n\\t\\t\\t\\t\\tfullWidth: 1,\\n\\t\\t\\t\\t\\tfullHeight: 1,\\n\\t\\t\\t\\t\\toffsetX: 0,\\n\\t\\t\\t\\t\\toffsetY: 0,\\n\\t\\t\\t\\t\\twidth: 1,\\n\\t\\t\\t\\t\\theight: 1\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.view.enabled = true;\\n\\t\\t\\tthis.view.fullWidth = fullWidth;\\n\\t\\t\\tthis.view.fullHeight = fullHeight;\\n\\t\\t\\tthis.view.offsetX = x;\\n\\t\\t\\tthis.view.offsetY = y;\\n\\t\\t\\tthis.view.width = width;\\n\\t\\t\\tthis.view.height = height;\\n\\n\\t\\t\\tthis.updateProjectionMatrix();\\n\\n\\t\\t},\\n\\n\\t\\tclearViewOffset: function () {\\n\\n\\t\\t\\tif ( this.view !== null ) {\\n\\n\\t\\t\\t\\tthis.view.enabled = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.updateProjectionMatrix();\\n\\n\\t\\t},\\n\\n\\t\\tupdateProjectionMatrix: function () {\\n\\n\\t\\t\\tvar dx = ( this.right - this.left ) / ( 2 * this.zoom );\\n\\t\\t\\tvar dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\\n\\t\\t\\tvar cx = ( this.right + this.left ) / 2;\\n\\t\\t\\tvar cy = ( this.top + this.bottom ) / 2;\\n\\n\\t\\t\\tvar left = cx - dx;\\n\\t\\t\\tvar right = cx + dx;\\n\\t\\t\\tvar top = cy + dy;\\n\\t\\t\\tvar bottom = cy - dy;\\n\\n\\t\\t\\tif ( this.view !== null && this.view.enabled ) {\\n\\n\\t\\t\\t\\tvar zoomW = this.zoom / ( this.view.width / this.view.fullWidth );\\n\\t\\t\\t\\tvar zoomH = this.zoom / ( this.view.height / this.view.fullHeight );\\n\\t\\t\\t\\tvar scaleW = ( this.right - this.left ) / this.view.width;\\n\\t\\t\\t\\tvar scaleH = ( this.top - this.bottom ) / this.view.height;\\n\\n\\t\\t\\t\\tleft += scaleW * ( this.view.offsetX / zoomW );\\n\\t\\t\\t\\tright = left + scaleW * ( this.view.width / zoomW );\\n\\t\\t\\t\\ttop -= scaleH * ( this.view.offsetY / zoomH );\\n\\t\\t\\t\\tbottom = top - scaleH * ( this.view.height / zoomH );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar data = Object3D.prototype.toJSON.call( this, meta );\\n\\n\\t\\t\\tdata.object.zoom = this.zoom;\\n\\t\\t\\tdata.object.left = this.left;\\n\\t\\t\\tdata.object.right = this.right;\\n\\t\\t\\tdata.object.top = this.top;\\n\\t\\t\\tdata.object.bottom = this.bottom;\\n\\t\\t\\tdata.object.near = this.near;\\n\\t\\t\\tdata.object.far = this.far;\\n\\n\\t\\t\\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction Face3( a, b, c, normal, color, materialIndex ) {\\n\\n\\t\\tthis.a = a;\\n\\t\\tthis.b = b;\\n\\t\\tthis.c = c;\\n\\n\\t\\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\\n\\t\\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\\n\\n\\t\\tthis.color = ( color && color.isColor ) ? color : new Color();\\n\\t\\tthis.vertexColors = Array.isArray( color ) ? color : [];\\n\\n\\t\\tthis.materialIndex = materialIndex !== undefined ? materialIndex : 0;\\n\\n\\t}\\n\\n\\tObject.assign( Face3.prototype, {\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.a = source.a;\\n\\t\\t\\tthis.b = source.b;\\n\\t\\t\\tthis.c = source.c;\\n\\n\\t\\t\\tthis.normal.copy( source.normal );\\n\\t\\t\\tthis.color.copy( source.color );\\n\\n\\t\\t\\tthis.materialIndex = source.materialIndex;\\n\\n\\t\\t\\tfor ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author kile / http://kile.stravaganza.org/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tvar geometryId = 0; // Geometry uses even numbers as Id\\n\\n\\tfunction Geometry() {\\n\\n\\t\\tObject.defineProperty( this, 'id', { value: geometryId += 2 } );\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.name = '';\\n\\t\\tthis.type = 'Geometry';\\n\\n\\t\\tthis.vertices = [];\\n\\t\\tthis.colors = [];\\n\\t\\tthis.faces = [];\\n\\t\\tthis.faceVertexUvs = [[]];\\n\\n\\t\\tthis.morphTargets = [];\\n\\t\\tthis.morphNormals = [];\\n\\n\\t\\tthis.skinWeights = [];\\n\\t\\tthis.skinIndices = [];\\n\\n\\t\\tthis.lineDistances = [];\\n\\n\\t\\tthis.boundingBox = null;\\n\\t\\tthis.boundingSphere = null;\\n\\n\\t\\t// update flags\\n\\n\\t\\tthis.elementsNeedUpdate = false;\\n\\t\\tthis.verticesNeedUpdate = false;\\n\\t\\tthis.uvsNeedUpdate = false;\\n\\t\\tthis.normalsNeedUpdate = false;\\n\\t\\tthis.colorsNeedUpdate = false;\\n\\t\\tthis.lineDistancesNeedUpdate = false;\\n\\t\\tthis.groupsNeedUpdate = false;\\n\\n\\t}\\n\\n\\tGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\\n\\n\\t\\tconstructor: Geometry,\\n\\n\\t\\tisGeometry: true,\\n\\n\\t\\tapplyMatrix: function ( matrix ) {\\n\\n\\t\\t\\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\\n\\n\\t\\t\\tfor ( var i = 0, il = this.vertices.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar vertex = this.vertices[ i ];\\n\\t\\t\\t\\tvertex.applyMatrix4( matrix );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0, il = this.faces.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = this.faces[ i ];\\n\\t\\t\\t\\tface.normal.applyMatrix3( normalMatrix ).normalize();\\n\\n\\t\\t\\t\\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.boundingBox !== null ) {\\n\\n\\t\\t\\t\\tthis.computeBoundingBox();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.boundingSphere !== null ) {\\n\\n\\t\\t\\t\\tthis.computeBoundingSphere();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.verticesNeedUpdate = true;\\n\\t\\t\\tthis.normalsNeedUpdate = true;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\trotateX: function () {\\n\\n\\t\\t\\t// rotate geometry around world x-axis\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function rotateX( angle ) {\\n\\n\\t\\t\\t\\tm1.makeRotationX( angle );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateY: function () {\\n\\n\\t\\t\\t// rotate geometry around world y-axis\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function rotateY( angle ) {\\n\\n\\t\\t\\t\\tm1.makeRotationY( angle );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateZ: function () {\\n\\n\\t\\t\\t// rotate geometry around world z-axis\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function rotateZ( angle ) {\\n\\n\\t\\t\\t\\tm1.makeRotationZ( angle );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslate: function () {\\n\\n\\t\\t\\t// translate geometry\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function translate( x, y, z ) {\\n\\n\\t\\t\\t\\tm1.makeTranslation( x, y, z );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tscale: function () {\\n\\n\\t\\t\\t// scale geometry\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function scale( x, y, z ) {\\n\\n\\t\\t\\t\\tm1.makeScale( x, y, z );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tlookAt: function () {\\n\\n\\t\\t\\tvar obj = new Object3D();\\n\\n\\t\\t\\treturn function lookAt( vector ) {\\n\\n\\t\\t\\t\\tobj.lookAt( vector );\\n\\n\\t\\t\\t\\tobj.updateMatrix();\\n\\n\\t\\t\\t\\tthis.applyMatrix( obj.matrix );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tfromBufferGeometry: function ( geometry ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar indices = geometry.index !== null ? geometry.index.array : undefined;\\n\\t\\t\\tvar attributes = geometry.attributes;\\n\\n\\t\\t\\tvar positions = attributes.position.array;\\n\\t\\t\\tvar normals = attributes.normal !== undefined ? attributes.normal.array : undefined;\\n\\t\\t\\tvar colors = attributes.color !== undefined ? attributes.color.array : undefined;\\n\\t\\t\\tvar uvs = attributes.uv !== undefined ? attributes.uv.array : undefined;\\n\\t\\t\\tvar uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined;\\n\\n\\t\\t\\tif ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\\n\\n\\t\\t\\tvar tempNormals = [];\\n\\t\\t\\tvar tempUVs = [];\\n\\t\\t\\tvar tempUVs2 = [];\\n\\n\\t\\t\\tfor ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) {\\n\\n\\t\\t\\t\\tscope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) );\\n\\n\\t\\t\\t\\tif ( normals !== undefined ) {\\n\\n\\t\\t\\t\\t\\ttempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( colors !== undefined ) {\\n\\n\\t\\t\\t\\t\\tscope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( uvs !== undefined ) {\\n\\n\\t\\t\\t\\t\\ttempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( uvs2 !== undefined ) {\\n\\n\\t\\t\\t\\t\\ttempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction addFace( a, b, c, materialIndex ) {\\n\\n\\t\\t\\t\\tvar vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : [];\\n\\t\\t\\t\\tvar vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : [];\\n\\n\\t\\t\\t\\tvar face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\\n\\n\\t\\t\\t\\tscope.faces.push( face );\\n\\n\\t\\t\\t\\tif ( uvs !== undefined ) {\\n\\n\\t\\t\\t\\t\\tscope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( uvs2 !== undefined ) {\\n\\n\\t\\t\\t\\t\\tscope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar groups = geometry.groups;\\n\\n\\t\\t\\tif ( groups.length > 0 ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < groups.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar group = groups[ i ];\\n\\n\\t\\t\\t\\t\\tvar start = group.start;\\n\\t\\t\\t\\t\\tvar count = group.count;\\n\\n\\t\\t\\t\\t\\tfor ( var j = start, jl = start + count; j < jl; j += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( indices !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\taddFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex );\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\taddFace( j, j + 1, j + 2, group.materialIndex );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tif ( indices !== undefined ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < indices.length; i += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\taddFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < positions.length / 3; i += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\taddFace( i, i + 1, i + 2 );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.computeFaceNormals();\\n\\n\\t\\t\\tif ( geometry.boundingBox !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingBox = geometry.boundingBox.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.boundingSphere !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingSphere = geometry.boundingSphere.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcenter: function () {\\n\\n\\t\\t\\tthis.computeBoundingBox();\\n\\n\\t\\t\\tvar offset = this.boundingBox.getCenter().negate();\\n\\n\\t\\t\\tthis.translate( offset.x, offset.y, offset.z );\\n\\n\\t\\t\\treturn offset;\\n\\n\\t\\t},\\n\\n\\t\\tnormalize: function () {\\n\\n\\t\\t\\tthis.computeBoundingSphere();\\n\\n\\t\\t\\tvar center = this.boundingSphere.center;\\n\\t\\t\\tvar radius = this.boundingSphere.radius;\\n\\n\\t\\t\\tvar s = radius === 0 ? 1 : 1.0 / radius;\\n\\n\\t\\t\\tvar matrix = new Matrix4();\\n\\t\\t\\tmatrix.set(\\n\\t\\t\\t\\ts, 0, 0, - s * center.x,\\n\\t\\t\\t\\t0, s, 0, - s * center.y,\\n\\t\\t\\t\\t0, 0, s, - s * center.z,\\n\\t\\t\\t\\t0, 0, 0, 1\\n\\t\\t\\t);\\n\\n\\t\\t\\tthis.applyMatrix( matrix );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcomputeFaceNormals: function () {\\n\\n\\t\\t\\tvar cb = new Vector3(), ab = new Vector3();\\n\\n\\t\\t\\tfor ( var f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\tvar face = this.faces[ f ];\\n\\n\\t\\t\\t\\tvar vA = this.vertices[ face.a ];\\n\\t\\t\\t\\tvar vB = this.vertices[ face.b ];\\n\\t\\t\\t\\tvar vC = this.vertices[ face.c ];\\n\\n\\t\\t\\t\\tcb.subVectors( vC, vB );\\n\\t\\t\\t\\tab.subVectors( vA, vB );\\n\\t\\t\\t\\tcb.cross( ab );\\n\\n\\t\\t\\t\\tcb.normalize();\\n\\n\\t\\t\\t\\tface.normal.copy( cb );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tcomputeVertexNormals: function ( areaWeighted ) {\\n\\n\\t\\t\\tif ( areaWeighted === undefined ) areaWeighted = true;\\n\\n\\t\\t\\tvar v, vl, f, fl, face, vertices;\\n\\n\\t\\t\\tvertices = new Array( this.vertices.length );\\n\\n\\t\\t\\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\\n\\n\\t\\t\\t\\tvertices[ v ] = new Vector3();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( areaWeighted ) {\\n\\n\\t\\t\\t\\t// vertex normals weighted by triangle areas\\n\\t\\t\\t\\t// http://www.iquilezles.org/www/articles/normals/normals.htm\\n\\n\\t\\t\\t\\tvar vA, vB, vC;\\n\\t\\t\\t\\tvar cb = new Vector3(), ab = new Vector3();\\n\\n\\t\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\t\\tface = this.faces[ f ];\\n\\n\\t\\t\\t\\t\\tvA = this.vertices[ face.a ];\\n\\t\\t\\t\\t\\tvB = this.vertices[ face.b ];\\n\\t\\t\\t\\t\\tvC = this.vertices[ face.c ];\\n\\n\\t\\t\\t\\t\\tcb.subVectors( vC, vB );\\n\\t\\t\\t\\t\\tab.subVectors( vA, vB );\\n\\t\\t\\t\\t\\tcb.cross( ab );\\n\\n\\t\\t\\t\\t\\tvertices[ face.a ].add( cb );\\n\\t\\t\\t\\t\\tvertices[ face.b ].add( cb );\\n\\t\\t\\t\\t\\tvertices[ face.c ].add( cb );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.computeFaceNormals();\\n\\n\\t\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\t\\tface = this.faces[ f ];\\n\\n\\t\\t\\t\\t\\tvertices[ face.a ].add( face.normal );\\n\\t\\t\\t\\t\\tvertices[ face.b ].add( face.normal );\\n\\t\\t\\t\\t\\tvertices[ face.c ].add( face.normal );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( v = 0, vl = this.vertices.length; v < vl; v ++ ) {\\n\\n\\t\\t\\t\\tvertices[ v ].normalize();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\tface = this.faces[ f ];\\n\\n\\t\\t\\t\\tvar vertexNormals = face.vertexNormals;\\n\\n\\t\\t\\t\\tif ( vertexNormals.length === 3 ) {\\n\\n\\t\\t\\t\\t\\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\\n\\t\\t\\t\\t\\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\\n\\t\\t\\t\\t\\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\\n\\t\\t\\t\\t\\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\\n\\t\\t\\t\\t\\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.faces.length > 0 ) {\\n\\n\\t\\t\\t\\tthis.normalsNeedUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tcomputeFlatVertexNormals: function () {\\n\\n\\t\\t\\tvar f, fl, face;\\n\\n\\t\\t\\tthis.computeFaceNormals();\\n\\n\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\tface = this.faces[ f ];\\n\\n\\t\\t\\t\\tvar vertexNormals = face.vertexNormals;\\n\\n\\t\\t\\t\\tif ( vertexNormals.length === 3 ) {\\n\\n\\t\\t\\t\\t\\tvertexNormals[ 0 ].copy( face.normal );\\n\\t\\t\\t\\t\\tvertexNormals[ 1 ].copy( face.normal );\\n\\t\\t\\t\\t\\tvertexNormals[ 2 ].copy( face.normal );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvertexNormals[ 0 ] = face.normal.clone();\\n\\t\\t\\t\\t\\tvertexNormals[ 1 ] = face.normal.clone();\\n\\t\\t\\t\\t\\tvertexNormals[ 2 ] = face.normal.clone();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.faces.length > 0 ) {\\n\\n\\t\\t\\t\\tthis.normalsNeedUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tcomputeMorphNormals: function () {\\n\\n\\t\\t\\tvar i, il, f, fl, face;\\n\\n\\t\\t\\t// save original normals\\n\\t\\t\\t// - create temp variables on first access\\n\\t\\t\\t// otherwise just copy (for faster repeated calls)\\n\\n\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\tface = this.faces[ f ];\\n\\n\\t\\t\\t\\tif ( ! face.__originalFaceNormal ) {\\n\\n\\t\\t\\t\\t\\tface.__originalFaceNormal = face.normal.clone();\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tface.__originalFaceNormal.copy( face.normal );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\\n\\n\\t\\t\\t\\tfor ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tif ( ! face.__originalVertexNormals[ i ] ) {\\n\\n\\t\\t\\t\\t\\t\\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// use temp geometry to compute face and vertex normals for each morph\\n\\n\\t\\t\\tvar tmpGeo = new Geometry();\\n\\t\\t\\ttmpGeo.faces = this.faces;\\n\\n\\t\\t\\tfor ( i = 0, il = this.morphTargets.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t// create on first access\\n\\n\\t\\t\\t\\tif ( ! this.morphNormals[ i ] ) {\\n\\n\\t\\t\\t\\t\\tthis.morphNormals[ i ] = {};\\n\\t\\t\\t\\t\\tthis.morphNormals[ i ].faceNormals = [];\\n\\t\\t\\t\\t\\tthis.morphNormals[ i ].vertexNormals = [];\\n\\n\\t\\t\\t\\t\\tvar dstNormalsFace = this.morphNormals[ i ].faceNormals;\\n\\t\\t\\t\\t\\tvar dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\\n\\n\\t\\t\\t\\t\\tvar faceNormal, vertexNormals;\\n\\n\\t\\t\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tfaceNormal = new Vector3();\\n\\t\\t\\t\\t\\t\\tvertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\\n\\n\\t\\t\\t\\t\\t\\tdstNormalsFace.push( faceNormal );\\n\\t\\t\\t\\t\\t\\tdstNormalsVertex.push( vertexNormals );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar morphNormals = this.morphNormals[ i ];\\n\\n\\t\\t\\t\\t// set vertices to morph target\\n\\n\\t\\t\\t\\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\\n\\n\\t\\t\\t\\t// compute morph normals\\n\\n\\t\\t\\t\\ttmpGeo.computeFaceNormals();\\n\\t\\t\\t\\ttmpGeo.computeVertexNormals();\\n\\n\\t\\t\\t\\t// store morph normals\\n\\n\\t\\t\\t\\tvar faceNormal, vertexNormals;\\n\\n\\t\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\t\\tface = this.faces[ f ];\\n\\n\\t\\t\\t\\t\\tfaceNormal = morphNormals.faceNormals[ f ];\\n\\t\\t\\t\\t\\tvertexNormals = morphNormals.vertexNormals[ f ];\\n\\n\\t\\t\\t\\t\\tfaceNormal.copy( face.normal );\\n\\n\\t\\t\\t\\t\\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\\n\\t\\t\\t\\t\\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\\n\\t\\t\\t\\t\\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// restore original normals\\n\\n\\t\\t\\tfor ( f = 0, fl = this.faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\tface = this.faces[ f ];\\n\\n\\t\\t\\t\\tface.normal = face.__originalFaceNormal;\\n\\t\\t\\t\\tface.vertexNormals = face.__originalVertexNormals;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tcomputeLineDistances: function () {\\n\\n\\t\\t\\tvar d = 0;\\n\\t\\t\\tvar vertices = this.vertices;\\n\\n\\t\\t\\tfor ( var i = 0, il = vertices.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tif ( i > 0 ) {\\n\\n\\t\\t\\t\\t\\td += vertices[ i ].distanceTo( vertices[ i - 1 ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.lineDistances[ i ] = d;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tcomputeBoundingBox: function () {\\n\\n\\t\\t\\tif ( this.boundingBox === null ) {\\n\\n\\t\\t\\t\\tthis.boundingBox = new Box3();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.boundingBox.setFromPoints( this.vertices );\\n\\n\\t\\t},\\n\\n\\t\\tcomputeBoundingSphere: function () {\\n\\n\\t\\t\\tif ( this.boundingSphere === null ) {\\n\\n\\t\\t\\t\\tthis.boundingSphere = new Sphere();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.boundingSphere.setFromPoints( this.vertices );\\n\\n\\t\\t},\\n\\n\\t\\tmerge: function ( geometry, matrix, materialIndexOffset ) {\\n\\n\\t\\t\\tif ( ! ( geometry && geometry.isGeometry ) ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar normalMatrix,\\n\\t\\t\\t\\tvertexOffset = this.vertices.length,\\n\\t\\t\\t\\tvertices1 = this.vertices,\\n\\t\\t\\t\\tvertices2 = geometry.vertices,\\n\\t\\t\\t\\tfaces1 = this.faces,\\n\\t\\t\\t\\tfaces2 = geometry.faces,\\n\\t\\t\\t\\tuvs1 = this.faceVertexUvs[ 0 ],\\n\\t\\t\\t\\tuvs2 = geometry.faceVertexUvs[ 0 ],\\n\\t\\t\\t\\tcolors1 = this.colors,\\n\\t\\t\\t\\tcolors2 = geometry.colors;\\n\\n\\t\\t\\tif ( materialIndexOffset === undefined ) materialIndexOffset = 0;\\n\\n\\t\\t\\tif ( matrix !== undefined ) {\\n\\n\\t\\t\\t\\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// vertices\\n\\n\\t\\t\\tfor ( var i = 0, il = vertices2.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar vertex = vertices2[ i ];\\n\\n\\t\\t\\t\\tvar vertexCopy = vertex.clone();\\n\\n\\t\\t\\t\\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\\n\\n\\t\\t\\t\\tvertices1.push( vertexCopy );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// colors\\n\\n\\t\\t\\tfor ( var i = 0, il = colors2.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tcolors1.push( colors2[ i ].clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// faces\\n\\n\\t\\t\\tfor ( i = 0, il = faces2.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = faces2[ i ], faceCopy, normal, color,\\n\\t\\t\\t\\t\\tfaceVertexNormals = face.vertexNormals,\\n\\t\\t\\t\\t\\tfaceVertexColors = face.vertexColors;\\n\\n\\t\\t\\t\\tfaceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\\n\\t\\t\\t\\tfaceCopy.normal.copy( face.normal );\\n\\n\\t\\t\\t\\tif ( normalMatrix !== undefined ) {\\n\\n\\t\\t\\t\\t\\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfor ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\tnormal = faceVertexNormals[ j ].clone();\\n\\n\\t\\t\\t\\t\\tif ( normalMatrix !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tnormal.applyMatrix3( normalMatrix ).normalize();\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tfaceCopy.vertexNormals.push( normal );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfaceCopy.color.copy( face.color );\\n\\n\\t\\t\\t\\tfor ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\tcolor = faceVertexColors[ j ];\\n\\t\\t\\t\\t\\tfaceCopy.vertexColors.push( color.clone() );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\\n\\n\\t\\t\\t\\tfaces1.push( faceCopy );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// uvs\\n\\n\\t\\t\\tfor ( i = 0, il = uvs2.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar uv = uvs2[ i ], uvCopy = [];\\n\\n\\t\\t\\t\\tif ( uv === undefined ) {\\n\\n\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfor ( var j = 0, jl = uv.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\tuvCopy.push( uv[ j ].clone() );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tuvs1.push( uvCopy );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tmergeMesh: function ( mesh ) {\\n\\n\\t\\t\\tif ( ! ( mesh && mesh.isMesh ) ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tmesh.matrixAutoUpdate && mesh.updateMatrix();\\n\\n\\t\\t\\tthis.merge( mesh.geometry, mesh.matrix );\\n\\n\\t\\t},\\n\\n\\t\\t/*\\n\\t\\t * Checks for duplicate vertices with hashmap.\\n\\t\\t * Duplicated vertices are removed\\n\\t\\t * and faces' vertices are updated.\\n\\t\\t */\\n\\n\\t\\tmergeVertices: function () {\\n\\n\\t\\t\\tvar verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\\n\\t\\t\\tvar unique = [], changes = [];\\n\\n\\t\\t\\tvar v, key;\\n\\t\\t\\tvar precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\\n\\t\\t\\tvar precision = Math.pow( 10, precisionPoints );\\n\\t\\t\\tvar i, il, face;\\n\\t\\t\\tvar indices, j, jl;\\n\\n\\t\\t\\tfor ( i = 0, il = this.vertices.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tv = this.vertices[ i ];\\n\\t\\t\\t\\tkey = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\\n\\n\\t\\t\\t\\tif ( verticesMap[ key ] === undefined ) {\\n\\n\\t\\t\\t\\t\\tverticesMap[ key ] = i;\\n\\t\\t\\t\\t\\tunique.push( this.vertices[ i ] );\\n\\t\\t\\t\\t\\tchanges[ i ] = unique.length - 1;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\\n\\t\\t\\t\\t\\tchanges[ i ] = changes[ verticesMap[ key ] ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\n\\t\\t\\t// if faces are completely degenerate after merging vertices, we\\n\\t\\t\\t// have to remove them from the geometry.\\n\\t\\t\\tvar faceIndicesToRemove = [];\\n\\n\\t\\t\\tfor ( i = 0, il = this.faces.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tface = this.faces[ i ];\\n\\n\\t\\t\\t\\tface.a = changes[ face.a ];\\n\\t\\t\\t\\tface.b = changes[ face.b ];\\n\\t\\t\\t\\tface.c = changes[ face.c ];\\n\\n\\t\\t\\t\\tindices = [ face.a, face.b, face.c ];\\n\\n\\t\\t\\t\\t// if any duplicate vertices are found in a Face3\\n\\t\\t\\t\\t// we have to remove the face as nothing can be saved\\n\\t\\t\\t\\tfor ( var n = 0; n < 3; n ++ ) {\\n\\n\\t\\t\\t\\t\\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\\n\\n\\t\\t\\t\\t\\t\\tfaceIndicesToRemove.push( i );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\\n\\n\\t\\t\\t\\tvar idx = faceIndicesToRemove[ i ];\\n\\n\\t\\t\\t\\tthis.faces.splice( idx, 1 );\\n\\n\\t\\t\\t\\tfor ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\tthis.faceVertexUvs[ j ].splice( idx, 1 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Use unique set of vertices\\n\\n\\t\\t\\tvar diff = this.vertices.length - unique.length;\\n\\t\\t\\tthis.vertices = unique;\\n\\t\\t\\treturn diff;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromPoints: function ( points ) {\\n\\n\\t\\t\\tthis.vertices = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar point = points[ i ];\\n\\t\\t\\t\\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsortFacesByMaterialIndex: function () {\\n\\n\\t\\t\\tvar faces = this.faces;\\n\\t\\t\\tvar length = faces.length;\\n\\n\\t\\t\\t// tag faces\\n\\n\\t\\t\\tfor ( var i = 0; i < length; i ++ ) {\\n\\n\\t\\t\\t\\tfaces[ i ]._id = i;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// sort faces\\n\\n\\t\\t\\tfunction materialIndexSort( a, b ) {\\n\\n\\t\\t\\t\\treturn a.materialIndex - b.materialIndex;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfaces.sort( materialIndexSort );\\n\\n\\t\\t\\t// sort uvs\\n\\n\\t\\t\\tvar uvs1 = this.faceVertexUvs[ 0 ];\\n\\t\\t\\tvar uvs2 = this.faceVertexUvs[ 1 ];\\n\\n\\t\\t\\tvar newUvs1, newUvs2;\\n\\n\\t\\t\\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\\n\\t\\t\\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\\n\\n\\t\\t\\tfor ( var i = 0; i < length; i ++ ) {\\n\\n\\t\\t\\t\\tvar id = faces[ i ]._id;\\n\\n\\t\\t\\t\\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\\n\\t\\t\\t\\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\\n\\t\\t\\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\tvar data = {\\n\\t\\t\\t\\tmetadata: {\\n\\t\\t\\t\\t\\tversion: 4.5,\\n\\t\\t\\t\\t\\ttype: 'Geometry',\\n\\t\\t\\t\\t\\tgenerator: 'Geometry.toJSON'\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\t\\t// standard Geometry serialization\\n\\n\\t\\t\\tdata.uuid = this.uuid;\\n\\t\\t\\tdata.type = this.type;\\n\\t\\t\\tif ( this.name !== '' ) data.name = this.name;\\n\\n\\t\\t\\tif ( this.parameters !== undefined ) {\\n\\n\\t\\t\\t\\tvar parameters = this.parameters;\\n\\n\\t\\t\\t\\tfor ( var key in parameters ) {\\n\\n\\t\\t\\t\\t\\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn data;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar vertices = [];\\n\\n\\t\\t\\tfor ( var i = 0; i < this.vertices.length; i ++ ) {\\n\\n\\t\\t\\t\\tvar vertex = this.vertices[ i ];\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar faces = [];\\n\\t\\t\\tvar normals = [];\\n\\t\\t\\tvar normalsHash = {};\\n\\t\\t\\tvar colors = [];\\n\\t\\t\\tvar colorsHash = {};\\n\\t\\t\\tvar uvs = [];\\n\\t\\t\\tvar uvsHash = {};\\n\\n\\t\\t\\tfor ( var i = 0; i < this.faces.length; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = this.faces[ i ];\\n\\n\\t\\t\\t\\tvar hasMaterial = true;\\n\\t\\t\\t\\tvar hasFaceUv = false; // deprecated\\n\\t\\t\\t\\tvar hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\\n\\t\\t\\t\\tvar hasFaceNormal = face.normal.length() > 0;\\n\\t\\t\\t\\tvar hasFaceVertexNormal = face.vertexNormals.length > 0;\\n\\t\\t\\t\\tvar hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\\n\\t\\t\\t\\tvar hasFaceVertexColor = face.vertexColors.length > 0;\\n\\n\\t\\t\\t\\tvar faceType = 0;\\n\\n\\t\\t\\t\\tfaceType = setBit( faceType, 0, 0 ); // isQuad\\n\\t\\t\\t\\tfaceType = setBit( faceType, 1, hasMaterial );\\n\\t\\t\\t\\tfaceType = setBit( faceType, 2, hasFaceUv );\\n\\t\\t\\t\\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\\n\\t\\t\\t\\tfaceType = setBit( faceType, 4, hasFaceNormal );\\n\\t\\t\\t\\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\\n\\t\\t\\t\\tfaceType = setBit( faceType, 6, hasFaceColor );\\n\\t\\t\\t\\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\\n\\n\\t\\t\\t\\tfaces.push( faceType );\\n\\t\\t\\t\\tfaces.push( face.a, face.b, face.c );\\n\\t\\t\\t\\tfaces.push( face.materialIndex );\\n\\n\\t\\t\\t\\tif ( hasFaceVertexUv ) {\\n\\n\\t\\t\\t\\t\\tvar faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\\n\\n\\t\\t\\t\\t\\tfaces.push(\\n\\t\\t\\t\\t\\t\\tgetUvIndex( faceVertexUvs[ 0 ] ),\\n\\t\\t\\t\\t\\t\\tgetUvIndex( faceVertexUvs[ 1 ] ),\\n\\t\\t\\t\\t\\t\\tgetUvIndex( faceVertexUvs[ 2 ] )\\n\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( hasFaceNormal ) {\\n\\n\\t\\t\\t\\t\\tfaces.push( getNormalIndex( face.normal ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( hasFaceVertexNormal ) {\\n\\n\\t\\t\\t\\t\\tvar vertexNormals = face.vertexNormals;\\n\\n\\t\\t\\t\\t\\tfaces.push(\\n\\t\\t\\t\\t\\t\\tgetNormalIndex( vertexNormals[ 0 ] ),\\n\\t\\t\\t\\t\\t\\tgetNormalIndex( vertexNormals[ 1 ] ),\\n\\t\\t\\t\\t\\t\\tgetNormalIndex( vertexNormals[ 2 ] )\\n\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( hasFaceColor ) {\\n\\n\\t\\t\\t\\t\\tfaces.push( getColorIndex( face.color ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( hasFaceVertexColor ) {\\n\\n\\t\\t\\t\\t\\tvar vertexColors = face.vertexColors;\\n\\n\\t\\t\\t\\t\\tfaces.push(\\n\\t\\t\\t\\t\\t\\tgetColorIndex( vertexColors[ 0 ] ),\\n\\t\\t\\t\\t\\t\\tgetColorIndex( vertexColors[ 1 ] ),\\n\\t\\t\\t\\t\\t\\tgetColorIndex( vertexColors[ 2 ] )\\n\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction setBit( value, position, enabled ) {\\n\\n\\t\\t\\t\\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction getNormalIndex( normal ) {\\n\\n\\t\\t\\t\\tvar hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\\n\\n\\t\\t\\t\\tif ( normalsHash[ hash ] !== undefined ) {\\n\\n\\t\\t\\t\\t\\treturn normalsHash[ hash ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tnormalsHash[ hash ] = normals.length / 3;\\n\\t\\t\\t\\tnormals.push( normal.x, normal.y, normal.z );\\n\\n\\t\\t\\t\\treturn normalsHash[ hash ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction getColorIndex( color ) {\\n\\n\\t\\t\\t\\tvar hash = color.r.toString() + color.g.toString() + color.b.toString();\\n\\n\\t\\t\\t\\tif ( colorsHash[ hash ] !== undefined ) {\\n\\n\\t\\t\\t\\t\\treturn colorsHash[ hash ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcolorsHash[ hash ] = colors.length;\\n\\t\\t\\t\\tcolors.push( color.getHex() );\\n\\n\\t\\t\\t\\treturn colorsHash[ hash ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction getUvIndex( uv ) {\\n\\n\\t\\t\\t\\tvar hash = uv.x.toString() + uv.y.toString();\\n\\n\\t\\t\\t\\tif ( uvsHash[ hash ] !== undefined ) {\\n\\n\\t\\t\\t\\t\\treturn uvsHash[ hash ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tuvsHash[ hash ] = uvs.length / 2;\\n\\t\\t\\t\\tuvs.push( uv.x, uv.y );\\n\\n\\t\\t\\t\\treturn uvsHash[ hash ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tdata.data = {};\\n\\n\\t\\t\\tdata.data.vertices = vertices;\\n\\t\\t\\tdata.data.normals = normals;\\n\\t\\t\\tif ( colors.length > 0 ) data.data.colors = colors;\\n\\t\\t\\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\\n\\t\\t\\tdata.data.faces = faces;\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\t/*\\n\\t\\t\\t // Handle primitives\\n\\n\\t\\t\\t var parameters = this.parameters;\\n\\n\\t\\t\\t if ( parameters !== undefined ) {\\n\\n\\t\\t\\t var values = [];\\n\\n\\t\\t\\t for ( var key in parameters ) {\\n\\n\\t\\t\\t values.push( parameters[ key ] );\\n\\n\\t\\t\\t }\\n\\n\\t\\t\\t var geometry = Object.create( this.constructor.prototype );\\n\\t\\t\\t this.constructor.apply( geometry, values );\\n\\t\\t\\t return geometry;\\n\\n\\t\\t\\t }\\n\\n\\t\\t\\t return new this.constructor().copy( this );\\n\\t\\t\\t */\\n\\n\\t\\t\\treturn new Geometry().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tvar i, il, j, jl, k, kl;\\n\\n\\t\\t\\t// reset\\n\\n\\t\\t\\tthis.vertices = [];\\n\\t\\t\\tthis.colors = [];\\n\\t\\t\\tthis.faces = [];\\n\\t\\t\\tthis.faceVertexUvs = [[]];\\n\\t\\t\\tthis.morphTargets = [];\\n\\t\\t\\tthis.morphNormals = [];\\n\\t\\t\\tthis.skinWeights = [];\\n\\t\\t\\tthis.skinIndices = [];\\n\\t\\t\\tthis.lineDistances = [];\\n\\t\\t\\tthis.boundingBox = null;\\n\\t\\t\\tthis.boundingSphere = null;\\n\\n\\t\\t\\t// name\\n\\n\\t\\t\\tthis.name = source.name;\\n\\n\\t\\t\\t// vertices\\n\\n\\t\\t\\tvar vertices = source.vertices;\\n\\n\\t\\t\\tfor ( i = 0, il = vertices.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.vertices.push( vertices[ i ].clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// colors\\n\\n\\t\\t\\tvar colors = source.colors;\\n\\n\\t\\t\\tfor ( i = 0, il = colors.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.colors.push( colors[ i ].clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// faces\\n\\n\\t\\t\\tvar faces = source.faces;\\n\\n\\t\\t\\tfor ( i = 0, il = faces.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.faces.push( faces[ i ].clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// face vertex uvs\\n\\n\\t\\t\\tfor ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar faceVertexUvs = source.faceVertexUvs[ i ];\\n\\n\\t\\t\\t\\tif ( this.faceVertexUvs[ i ] === undefined ) {\\n\\n\\t\\t\\t\\t\\tthis.faceVertexUvs[ i ] = [];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfor ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\tvar uvs = faceVertexUvs[ j ], uvsCopy = [];\\n\\n\\t\\t\\t\\t\\tfor ( k = 0, kl = uvs.length; k < kl; k ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar uv = uvs[ k ];\\n\\n\\t\\t\\t\\t\\t\\tuvsCopy.push( uv.clone() );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.faceVertexUvs[ i ].push( uvsCopy );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// morph targets\\n\\n\\t\\t\\tvar morphTargets = source.morphTargets;\\n\\n\\t\\t\\tfor ( i = 0, il = morphTargets.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar morphTarget = {};\\n\\t\\t\\t\\tmorphTarget.name = morphTargets[ i ].name;\\n\\n\\t\\t\\t\\t// vertices\\n\\n\\t\\t\\t\\tif ( morphTargets[ i ].vertices !== undefined ) {\\n\\n\\t\\t\\t\\t\\tmorphTarget.vertices = [];\\n\\n\\t\\t\\t\\t\\tfor ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// normals\\n\\n\\t\\t\\t\\tif ( morphTargets[ i ].normals !== undefined ) {\\n\\n\\t\\t\\t\\t\\tmorphTarget.normals = [];\\n\\n\\t\\t\\t\\t\\tfor ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.morphTargets.push( morphTarget );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// morph normals\\n\\n\\t\\t\\tvar morphNormals = source.morphNormals;\\n\\n\\t\\t\\tfor ( i = 0, il = morphNormals.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar morphNormal = {};\\n\\n\\t\\t\\t\\t// vertex normals\\n\\n\\t\\t\\t\\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\\n\\n\\t\\t\\t\\t\\tmorphNormal.vertexNormals = [];\\n\\n\\t\\t\\t\\t\\tfor ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\\n\\t\\t\\t\\t\\t\\tvar destVertexNormal = {};\\n\\n\\t\\t\\t\\t\\t\\tdestVertexNormal.a = srcVertexNormal.a.clone();\\n\\t\\t\\t\\t\\t\\tdestVertexNormal.b = srcVertexNormal.b.clone();\\n\\t\\t\\t\\t\\t\\tdestVertexNormal.c = srcVertexNormal.c.clone();\\n\\n\\t\\t\\t\\t\\t\\tmorphNormal.vertexNormals.push( destVertexNormal );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// face normals\\n\\n\\t\\t\\t\\tif ( morphNormals[ i ].faceNormals !== undefined ) {\\n\\n\\t\\t\\t\\t\\tmorphNormal.faceNormals = [];\\n\\n\\t\\t\\t\\t\\tfor ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.morphNormals.push( morphNormal );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// skin weights\\n\\n\\t\\t\\tvar skinWeights = source.skinWeights;\\n\\n\\t\\t\\tfor ( i = 0, il = skinWeights.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.skinWeights.push( skinWeights[ i ].clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// skin indices\\n\\n\\t\\t\\tvar skinIndices = source.skinIndices;\\n\\n\\t\\t\\tfor ( i = 0, il = skinIndices.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.skinIndices.push( skinIndices[ i ].clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// line distances\\n\\n\\t\\t\\tvar lineDistances = source.lineDistances;\\n\\n\\t\\t\\tfor ( i = 0, il = lineDistances.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tthis.lineDistances.push( lineDistances[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// bounding box\\n\\n\\t\\t\\tvar boundingBox = source.boundingBox;\\n\\n\\t\\t\\tif ( boundingBox !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingBox = boundingBox.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// bounding sphere\\n\\n\\t\\t\\tvar boundingSphere = source.boundingSphere;\\n\\n\\t\\t\\tif ( boundingSphere !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingSphere = boundingSphere.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// update flags\\n\\n\\t\\t\\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\\n\\t\\t\\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\\n\\t\\t\\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\\n\\t\\t\\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\\n\\t\\t\\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\\n\\t\\t\\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\\n\\t\\t\\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdispose: function () {\\n\\n\\t\\t\\tthis.dispatchEvent( { type: 'dispose' } );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tif ( Array.isArray( array ) ) {\\n\\n\\t\\t\\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\\n\\n\\t\\t}\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\t\\tthis.name = '';\\n\\n\\t\\tthis.array = array;\\n\\t\\tthis.itemSize = itemSize;\\n\\t\\tthis.count = array !== undefined ? array.length / itemSize : 0;\\n\\t\\tthis.normalized = normalized === true;\\n\\n\\t\\tthis.dynamic = false;\\n\\t\\tthis.updateRange = { offset: 0, count: - 1 };\\n\\n\\t\\tthis.onUploadCallback = function () {};\\n\\n\\t\\tthis.version = 0;\\n\\n\\t}\\n\\n\\tObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\\n\\n\\t\\tset: function ( value ) {\\n\\n\\t\\t\\tif ( value === true ) this.version ++;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( BufferAttribute.prototype, {\\n\\n\\t\\tisBufferAttribute: true,\\n\\n\\t\\tsetArray: function ( array ) {\\n\\n\\t\\t\\tif ( Array.isArray( array ) ) {\\n\\n\\t\\t\\t\\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.count = array !== undefined ? array.length / this.itemSize : 0;\\n\\t\\t\\tthis.array = array;\\n\\n\\t\\t},\\n\\n\\t\\tsetDynamic: function ( value ) {\\n\\n\\t\\t\\tthis.dynamic = value;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.array = new source.array.constructor( source.array );\\n\\t\\t\\tthis.itemSize = source.itemSize;\\n\\t\\t\\tthis.count = source.count;\\n\\t\\t\\tthis.normalized = source.normalized;\\n\\n\\t\\t\\tthis.dynamic = source.dynamic;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyAt: function ( index1, attribute, index2 ) {\\n\\n\\t\\t\\tindex1 *= this.itemSize;\\n\\t\\t\\tindex2 *= attribute.itemSize;\\n\\n\\t\\t\\tfor ( var i = 0, l = this.itemSize; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyArray: function ( array ) {\\n\\n\\t\\t\\tthis.array.set( array );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyColorsArray: function ( colors ) {\\n\\n\\t\\t\\tvar array = this.array, offset = 0;\\n\\n\\t\\t\\tfor ( var i = 0, l = colors.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar color = colors[ i ];\\n\\n\\t\\t\\t\\tif ( color === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\\n\\t\\t\\t\\t\\tcolor = new Color();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tarray[ offset ++ ] = color.r;\\n\\t\\t\\t\\tarray[ offset ++ ] = color.g;\\n\\t\\t\\t\\tarray[ offset ++ ] = color.b;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyIndicesArray: function ( indices ) {\\n\\n\\t\\t\\tvar array = this.array, offset = 0;\\n\\n\\t\\t\\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar index = indices[ i ];\\n\\n\\t\\t\\t\\tarray[ offset ++ ] = index.a;\\n\\t\\t\\t\\tarray[ offset ++ ] = index.b;\\n\\t\\t\\t\\tarray[ offset ++ ] = index.c;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyVector2sArray: function ( vectors ) {\\n\\n\\t\\t\\tvar array = this.array, offset = 0;\\n\\n\\t\\t\\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar vector = vectors[ i ];\\n\\n\\t\\t\\t\\tif ( vector === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\\n\\t\\t\\t\\t\\tvector = new Vector2();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.x;\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.y;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyVector3sArray: function ( vectors ) {\\n\\n\\t\\t\\tvar array = this.array, offset = 0;\\n\\n\\t\\t\\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar vector = vectors[ i ];\\n\\n\\t\\t\\t\\tif ( vector === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\\n\\t\\t\\t\\t\\tvector = new Vector3();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.x;\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.y;\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.z;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyVector4sArray: function ( vectors ) {\\n\\n\\t\\t\\tvar array = this.array, offset = 0;\\n\\n\\t\\t\\tfor ( var i = 0, l = vectors.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar vector = vectors[ i ];\\n\\n\\t\\t\\t\\tif ( vector === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\\n\\t\\t\\t\\t\\tvector = new Vector4();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.x;\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.y;\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.z;\\n\\t\\t\\t\\tarray[ offset ++ ] = vector.w;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tset: function ( value, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tthis.array.set( value, offset );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetX: function ( index ) {\\n\\n\\t\\t\\treturn this.array[ index * this.itemSize ];\\n\\n\\t\\t},\\n\\n\\t\\tsetX: function ( index, x ) {\\n\\n\\t\\t\\tthis.array[ index * this.itemSize ] = x;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetY: function ( index ) {\\n\\n\\t\\t\\treturn this.array[ index * this.itemSize + 1 ];\\n\\n\\t\\t},\\n\\n\\t\\tsetY: function ( index, y ) {\\n\\n\\t\\t\\tthis.array[ index * this.itemSize + 1 ] = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetZ: function ( index ) {\\n\\n\\t\\t\\treturn this.array[ index * this.itemSize + 2 ];\\n\\n\\t\\t},\\n\\n\\t\\tsetZ: function ( index, z ) {\\n\\n\\t\\t\\tthis.array[ index * this.itemSize + 2 ] = z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetW: function ( index ) {\\n\\n\\t\\t\\treturn this.array[ index * this.itemSize + 3 ];\\n\\n\\t\\t},\\n\\n\\t\\tsetW: function ( index, w ) {\\n\\n\\t\\t\\tthis.array[ index * this.itemSize + 3 ] = w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetXY: function ( index, x, y ) {\\n\\n\\t\\t\\tindex *= this.itemSize;\\n\\n\\t\\t\\tthis.array[ index + 0 ] = x;\\n\\t\\t\\tthis.array[ index + 1 ] = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetXYZ: function ( index, x, y, z ) {\\n\\n\\t\\t\\tindex *= this.itemSize;\\n\\n\\t\\t\\tthis.array[ index + 0 ] = x;\\n\\t\\t\\tthis.array[ index + 1 ] = y;\\n\\t\\t\\tthis.array[ index + 2 ] = z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetXYZW: function ( index, x, y, z, w ) {\\n\\n\\t\\t\\tindex *= this.itemSize;\\n\\n\\t\\t\\tthis.array[ index + 0 ] = x;\\n\\t\\t\\tthis.array[ index + 1 ] = y;\\n\\t\\t\\tthis.array[ index + 2 ] = z;\\n\\t\\t\\tthis.array[ index + 3 ] = w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tonUpload: function ( callback ) {\\n\\n\\t\\t\\tthis.onUploadCallback = callback;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.array, this.itemSize ).copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tfunction Int8BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\\n\\n\\n\\tfunction Uint8BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\\n\\n\\n\\tfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\\n\\n\\n\\tfunction Int16BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\\n\\n\\n\\tfunction Uint16BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\\n\\n\\n\\tfunction Int32BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\\n\\n\\n\\tfunction Uint32BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\\n\\n\\n\\tfunction Float32BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\\n\\n\\n\\tfunction Float64BufferAttribute( array, itemSize, normalized ) {\\n\\n\\t\\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\\n\\n\\t}\\n\\n\\tFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\\n\\tFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction DirectGeometry() {\\n\\n\\t\\tthis.indices = [];\\n\\t\\tthis.vertices = [];\\n\\t\\tthis.normals = [];\\n\\t\\tthis.colors = [];\\n\\t\\tthis.uvs = [];\\n\\t\\tthis.uvs2 = [];\\n\\n\\t\\tthis.groups = [];\\n\\n\\t\\tthis.morphTargets = {};\\n\\n\\t\\tthis.skinWeights = [];\\n\\t\\tthis.skinIndices = [];\\n\\n\\t\\t// this.lineDistances = [];\\n\\n\\t\\tthis.boundingBox = null;\\n\\t\\tthis.boundingSphere = null;\\n\\n\\t\\t// update flags\\n\\n\\t\\tthis.verticesNeedUpdate = false;\\n\\t\\tthis.normalsNeedUpdate = false;\\n\\t\\tthis.colorsNeedUpdate = false;\\n\\t\\tthis.uvsNeedUpdate = false;\\n\\t\\tthis.groupsNeedUpdate = false;\\n\\n\\t}\\n\\n\\tObject.assign( DirectGeometry.prototype, {\\n\\n\\t\\tcomputeGroups: function ( geometry ) {\\n\\n\\t\\t\\tvar group;\\n\\t\\t\\tvar groups = [];\\n\\t\\t\\tvar materialIndex = undefined;\\n\\n\\t\\t\\tvar faces = geometry.faces;\\n\\n\\t\\t\\tfor ( var i = 0; i < faces.length; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = faces[ i ];\\n\\n\\t\\t\\t\\t// materials\\n\\n\\t\\t\\t\\tif ( face.materialIndex !== materialIndex ) {\\n\\n\\t\\t\\t\\t\\tmaterialIndex = face.materialIndex;\\n\\n\\t\\t\\t\\t\\tif ( group !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tgroup.count = ( i * 3 ) - group.start;\\n\\t\\t\\t\\t\\t\\tgroups.push( group );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tgroup = {\\n\\t\\t\\t\\t\\t\\tstart: i * 3,\\n\\t\\t\\t\\t\\t\\tmaterialIndex: materialIndex\\n\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( group !== undefined ) {\\n\\n\\t\\t\\t\\tgroup.count = ( i * 3 ) - group.start;\\n\\t\\t\\t\\tgroups.push( group );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.groups = groups;\\n\\n\\t\\t},\\n\\n\\t\\tfromGeometry: function ( geometry ) {\\n\\n\\t\\t\\tvar faces = geometry.faces;\\n\\t\\t\\tvar vertices = geometry.vertices;\\n\\t\\t\\tvar faceVertexUvs = geometry.faceVertexUvs;\\n\\n\\t\\t\\tvar hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\\n\\t\\t\\tvar hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\\n\\n\\t\\t\\t// morphs\\n\\n\\t\\t\\tvar morphTargets = geometry.morphTargets;\\n\\t\\t\\tvar morphTargetsLength = morphTargets.length;\\n\\n\\t\\t\\tvar morphTargetsPosition;\\n\\n\\t\\t\\tif ( morphTargetsLength > 0 ) {\\n\\n\\t\\t\\t\\tmorphTargetsPosition = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < morphTargetsLength; i ++ ) {\\n\\n\\t\\t\\t\\t\\tmorphTargetsPosition[ i ] = [];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.morphTargets.position = morphTargetsPosition;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar morphNormals = geometry.morphNormals;\\n\\t\\t\\tvar morphNormalsLength = morphNormals.length;\\n\\n\\t\\t\\tvar morphTargetsNormal;\\n\\n\\t\\t\\tif ( morphNormalsLength > 0 ) {\\n\\n\\t\\t\\t\\tmorphTargetsNormal = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < morphNormalsLength; i ++ ) {\\n\\n\\t\\t\\t\\t\\tmorphTargetsNormal[ i ] = [];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.morphTargets.normal = morphTargetsNormal;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// skins\\n\\n\\t\\t\\tvar skinIndices = geometry.skinIndices;\\n\\t\\t\\tvar skinWeights = geometry.skinWeights;\\n\\n\\t\\t\\tvar hasSkinIndices = skinIndices.length === vertices.length;\\n\\t\\t\\tvar hasSkinWeights = skinWeights.length === vertices.length;\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tfor ( var i = 0; i < faces.length; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = faces[ i ];\\n\\n\\t\\t\\t\\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\\n\\n\\t\\t\\t\\tvar vertexNormals = face.vertexNormals;\\n\\n\\t\\t\\t\\tif ( vertexNormals.length === 3 ) {\\n\\n\\t\\t\\t\\t\\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvar normal = face.normal;\\n\\n\\t\\t\\t\\t\\tthis.normals.push( normal, normal, normal );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar vertexColors = face.vertexColors;\\n\\n\\t\\t\\t\\tif ( vertexColors.length === 3 ) {\\n\\n\\t\\t\\t\\t\\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvar color = face.color;\\n\\n\\t\\t\\t\\t\\tthis.colors.push( color, color, color );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( hasFaceVertexUv === true ) {\\n\\n\\t\\t\\t\\t\\tvar vertexUvs = faceVertexUvs[ 0 ][ i ];\\n\\n\\t\\t\\t\\t\\tif ( vertexUvs !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\\n\\n\\t\\t\\t\\t\\t\\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( hasFaceVertexUv2 === true ) {\\n\\n\\t\\t\\t\\t\\tvar vertexUvs = faceVertexUvs[ 1 ][ i ];\\n\\n\\t\\t\\t\\t\\tif ( vertexUvs !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\\n\\n\\t\\t\\t\\t\\t\\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// morphs\\n\\n\\t\\t\\t\\tfor ( var j = 0; j < morphTargetsLength; j ++ ) {\\n\\n\\t\\t\\t\\t\\tvar morphTarget = morphTargets[ j ].vertices;\\n\\n\\t\\t\\t\\t\\tmorphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfor ( var j = 0; j < morphNormalsLength; j ++ ) {\\n\\n\\t\\t\\t\\t\\tvar morphNormal = morphNormals[ j ].vertexNormals[ i ];\\n\\n\\t\\t\\t\\t\\tmorphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// skins\\n\\n\\t\\t\\t\\tif ( hasSkinIndices ) {\\n\\n\\t\\t\\t\\t\\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( hasSkinWeights ) {\\n\\n\\t\\t\\t\\t\\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.computeGroups( geometry );\\n\\n\\t\\t\\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\\n\\t\\t\\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\\n\\t\\t\\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\\n\\t\\t\\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\\n\\t\\t\\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction arrayMax( array ) {\\n\\n\\t\\tif ( array.length === 0 ) return - Infinity;\\n\\n\\t\\tvar max = array[ 0 ];\\n\\n\\t\\tfor ( var i = 1, l = array.length; i < l; ++ i ) {\\n\\n\\t\\t\\tif ( array[ i ] > max ) max = array[ i ];\\n\\n\\t\\t}\\n\\n\\t\\treturn max;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tvar bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\\n\\n\\tfunction BufferGeometry() {\\n\\n\\t\\tObject.defineProperty( this, 'id', { value: bufferGeometryId += 2 } );\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.name = '';\\n\\t\\tthis.type = 'BufferGeometry';\\n\\n\\t\\tthis.index = null;\\n\\t\\tthis.attributes = {};\\n\\n\\t\\tthis.morphAttributes = {};\\n\\n\\t\\tthis.groups = [];\\n\\n\\t\\tthis.boundingBox = null;\\n\\t\\tthis.boundingSphere = null;\\n\\n\\t\\tthis.drawRange = { start: 0, count: Infinity };\\n\\n\\t}\\n\\n\\tBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\\n\\n\\t\\tconstructor: BufferGeometry,\\n\\n\\t\\tisBufferGeometry: true,\\n\\n\\t\\tgetIndex: function () {\\n\\n\\t\\t\\treturn this.index;\\n\\n\\t\\t},\\n\\n\\t\\tsetIndex: function ( index ) {\\n\\n\\t\\t\\tif ( Array.isArray( index ) ) {\\n\\n\\t\\t\\t\\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.index = index;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\taddAttribute: function ( name, attribute ) {\\n\\n\\t\\t\\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\\n\\n\\t\\t\\t\\tthis.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\\n\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( name === 'index' ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\\n\\t\\t\\t\\tthis.setIndex( attribute );\\n\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.attributes[ name ] = attribute;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetAttribute: function ( name ) {\\n\\n\\t\\t\\treturn this.attributes[ name ];\\n\\n\\t\\t},\\n\\n\\t\\tremoveAttribute: function ( name ) {\\n\\n\\t\\t\\tdelete this.attributes[ name ];\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddGroup: function ( start, count, materialIndex ) {\\n\\n\\t\\t\\tthis.groups.push( {\\n\\n\\t\\t\\t\\tstart: start,\\n\\t\\t\\t\\tcount: count,\\n\\t\\t\\t\\tmaterialIndex: materialIndex !== undefined ? materialIndex : 0\\n\\n\\t\\t\\t} );\\n\\n\\t\\t},\\n\\n\\t\\tclearGroups: function () {\\n\\n\\t\\t\\tthis.groups = [];\\n\\n\\t\\t},\\n\\n\\t\\tsetDrawRange: function ( start, count ) {\\n\\n\\t\\t\\tthis.drawRange.start = start;\\n\\t\\t\\tthis.drawRange.count = count;\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix: function ( matrix ) {\\n\\n\\t\\t\\tvar position = this.attributes.position;\\n\\n\\t\\t\\tif ( position !== undefined ) {\\n\\n\\t\\t\\t\\tmatrix.applyToBufferAttribute( position );\\n\\t\\t\\t\\tposition.needsUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar normal = this.attributes.normal;\\n\\n\\t\\t\\tif ( normal !== undefined ) {\\n\\n\\t\\t\\t\\tvar normalMatrix = new Matrix3().getNormalMatrix( matrix );\\n\\n\\t\\t\\t\\tnormalMatrix.applyToBufferAttribute( normal );\\n\\t\\t\\t\\tnormal.needsUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.boundingBox !== null ) {\\n\\n\\t\\t\\t\\tthis.computeBoundingBox();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.boundingSphere !== null ) {\\n\\n\\t\\t\\t\\tthis.computeBoundingSphere();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\trotateX: function () {\\n\\n\\t\\t\\t// rotate geometry around world x-axis\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function rotateX( angle ) {\\n\\n\\t\\t\\t\\tm1.makeRotationX( angle );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateY: function () {\\n\\n\\t\\t\\t// rotate geometry around world y-axis\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function rotateY( angle ) {\\n\\n\\t\\t\\t\\tm1.makeRotationY( angle );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\trotateZ: function () {\\n\\n\\t\\t\\t// rotate geometry around world z-axis\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function rotateZ( angle ) {\\n\\n\\t\\t\\t\\tm1.makeRotationZ( angle );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttranslate: function () {\\n\\n\\t\\t\\t// translate geometry\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function translate( x, y, z ) {\\n\\n\\t\\t\\t\\tm1.makeTranslation( x, y, z );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tscale: function () {\\n\\n\\t\\t\\t// scale geometry\\n\\n\\t\\t\\tvar m1 = new Matrix4();\\n\\n\\t\\t\\treturn function scale( x, y, z ) {\\n\\n\\t\\t\\t\\tm1.makeScale( x, y, z );\\n\\n\\t\\t\\t\\tthis.applyMatrix( m1 );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tlookAt: function () {\\n\\n\\t\\t\\tvar obj = new Object3D();\\n\\n\\t\\t\\treturn function lookAt( vector ) {\\n\\n\\t\\t\\t\\tobj.lookAt( vector );\\n\\n\\t\\t\\t\\tobj.updateMatrix();\\n\\n\\t\\t\\t\\tthis.applyMatrix( obj.matrix );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tcenter: function () {\\n\\n\\t\\t\\tthis.computeBoundingBox();\\n\\n\\t\\t\\tvar offset = this.boundingBox.getCenter().negate();\\n\\n\\t\\t\\tthis.translate( offset.x, offset.y, offset.z );\\n\\n\\t\\t\\treturn offset;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromObject: function ( object ) {\\n\\n\\t\\t\\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\\n\\n\\t\\t\\tvar geometry = object.geometry;\\n\\n\\t\\t\\tif ( object.isPoints || object.isLine ) {\\n\\n\\t\\t\\t\\tvar positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\\n\\t\\t\\t\\tvar colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\\n\\n\\t\\t\\t\\tthis.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\\n\\t\\t\\t\\tthis.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\\n\\n\\t\\t\\t\\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\\n\\n\\t\\t\\t\\t\\tvar lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\\n\\n\\t\\t\\t\\t\\tthis.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( geometry.boundingSphere !== null ) {\\n\\n\\t\\t\\t\\t\\tthis.boundingSphere = geometry.boundingSphere.clone();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( geometry.boundingBox !== null ) {\\n\\n\\t\\t\\t\\t\\tthis.boundingBox = geometry.boundingBox.clone();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( object.isMesh ) {\\n\\n\\t\\t\\t\\tif ( geometry && geometry.isGeometry ) {\\n\\n\\t\\t\\t\\t\\tthis.fromGeometry( geometry );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromPoints: function ( points ) {\\n\\n\\t\\t\\tvar position = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar point = points[ i ];\\n\\t\\t\\t\\tposition.push( point.x, point.y, point.z || 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tupdateFromObject: function ( object ) {\\n\\n\\t\\t\\tvar geometry = object.geometry;\\n\\n\\t\\t\\tif ( object.isMesh ) {\\n\\n\\t\\t\\t\\tvar direct = geometry.__directGeometry;\\n\\n\\t\\t\\t\\tif ( geometry.elementsNeedUpdate === true ) {\\n\\n\\t\\t\\t\\t\\tdirect = undefined;\\n\\t\\t\\t\\t\\tgeometry.elementsNeedUpdate = false;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( direct === undefined ) {\\n\\n\\t\\t\\t\\t\\treturn this.fromGeometry( geometry );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\\n\\t\\t\\t\\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\\n\\t\\t\\t\\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\\n\\t\\t\\t\\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\\n\\t\\t\\t\\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\\n\\n\\t\\t\\t\\tgeometry.verticesNeedUpdate = false;\\n\\t\\t\\t\\tgeometry.normalsNeedUpdate = false;\\n\\t\\t\\t\\tgeometry.colorsNeedUpdate = false;\\n\\t\\t\\t\\tgeometry.uvsNeedUpdate = false;\\n\\t\\t\\t\\tgeometry.groupsNeedUpdate = false;\\n\\n\\t\\t\\t\\tgeometry = direct;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar attribute;\\n\\n\\t\\t\\tif ( geometry.verticesNeedUpdate === true ) {\\n\\n\\t\\t\\t\\tattribute = this.attributes.position;\\n\\n\\t\\t\\t\\tif ( attribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\tattribute.copyVector3sArray( geometry.vertices );\\n\\t\\t\\t\\t\\tattribute.needsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry.verticesNeedUpdate = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.normalsNeedUpdate === true ) {\\n\\n\\t\\t\\t\\tattribute = this.attributes.normal;\\n\\n\\t\\t\\t\\tif ( attribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\tattribute.copyVector3sArray( geometry.normals );\\n\\t\\t\\t\\t\\tattribute.needsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry.normalsNeedUpdate = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.colorsNeedUpdate === true ) {\\n\\n\\t\\t\\t\\tattribute = this.attributes.color;\\n\\n\\t\\t\\t\\tif ( attribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\tattribute.copyColorsArray( geometry.colors );\\n\\t\\t\\t\\t\\tattribute.needsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry.colorsNeedUpdate = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.uvsNeedUpdate ) {\\n\\n\\t\\t\\t\\tattribute = this.attributes.uv;\\n\\n\\t\\t\\t\\tif ( attribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\tattribute.copyVector2sArray( geometry.uvs );\\n\\t\\t\\t\\t\\tattribute.needsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry.uvsNeedUpdate = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.lineDistancesNeedUpdate ) {\\n\\n\\t\\t\\t\\tattribute = this.attributes.lineDistance;\\n\\n\\t\\t\\t\\tif ( attribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\tattribute.copyArray( geometry.lineDistances );\\n\\t\\t\\t\\t\\tattribute.needsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry.lineDistancesNeedUpdate = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.groupsNeedUpdate ) {\\n\\n\\t\\t\\t\\tgeometry.computeGroups( object.geometry );\\n\\t\\t\\t\\tthis.groups = geometry.groups;\\n\\n\\t\\t\\t\\tgeometry.groupsNeedUpdate = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tfromGeometry: function ( geometry ) {\\n\\n\\t\\t\\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\\n\\n\\t\\t\\treturn this.fromDirectGeometry( geometry.__directGeometry );\\n\\n\\t\\t},\\n\\n\\t\\tfromDirectGeometry: function ( geometry ) {\\n\\n\\t\\t\\tvar positions = new Float32Array( geometry.vertices.length * 3 );\\n\\t\\t\\tthis.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\\n\\n\\t\\t\\tif ( geometry.normals.length > 0 ) {\\n\\n\\t\\t\\t\\tvar normals = new Float32Array( geometry.normals.length * 3 );\\n\\t\\t\\t\\tthis.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.colors.length > 0 ) {\\n\\n\\t\\t\\t\\tvar colors = new Float32Array( geometry.colors.length * 3 );\\n\\t\\t\\t\\tthis.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.uvs.length > 0 ) {\\n\\n\\t\\t\\t\\tvar uvs = new Float32Array( geometry.uvs.length * 2 );\\n\\t\\t\\t\\tthis.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.uvs2.length > 0 ) {\\n\\n\\t\\t\\t\\tvar uvs2 = new Float32Array( geometry.uvs2.length * 2 );\\n\\t\\t\\t\\tthis.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.indices.length > 0 ) {\\n\\n\\t\\t\\t\\tvar TypeArray = arrayMax( geometry.indices ) > 65535 ? Uint32Array : Uint16Array;\\n\\t\\t\\t\\tvar indices = new TypeArray( geometry.indices.length * 3 );\\n\\t\\t\\t\\tthis.setIndex( new BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// groups\\n\\n\\t\\t\\tthis.groups = geometry.groups;\\n\\n\\t\\t\\t// morphs\\n\\n\\t\\t\\tfor ( var name in geometry.morphTargets ) {\\n\\n\\t\\t\\t\\tvar array = [];\\n\\t\\t\\t\\tvar morphTargets = geometry.morphTargets[ name ];\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = morphTargets.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar morphTarget = morphTargets[ i ];\\n\\n\\t\\t\\t\\t\\tvar attribute = new Float32BufferAttribute( morphTarget.length * 3, 3 );\\n\\n\\t\\t\\t\\t\\tarray.push( attribute.copyVector3sArray( morphTarget ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.morphAttributes[ name ] = array;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// skinning\\n\\n\\t\\t\\tif ( geometry.skinIndices.length > 0 ) {\\n\\n\\t\\t\\t\\tvar skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\\n\\t\\t\\t\\tthis.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.skinWeights.length > 0 ) {\\n\\n\\t\\t\\t\\tvar skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\\n\\t\\t\\t\\tthis.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tif ( geometry.boundingSphere !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingSphere = geometry.boundingSphere.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry.boundingBox !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingBox = geometry.boundingBox.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcomputeBoundingBox: function () {\\n\\n\\t\\t\\tif ( this.boundingBox === null ) {\\n\\n\\t\\t\\t\\tthis.boundingBox = new Box3();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar position = this.attributes.position;\\n\\n\\t\\t\\tif ( position !== undefined ) {\\n\\n\\t\\t\\t\\tthis.boundingBox.setFromBufferAttribute( position );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.boundingBox.makeEmpty();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The \\\"position\\\" attribute is likely to have NaN values.', this );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tcomputeBoundingSphere: function () {\\n\\n\\t\\t\\tvar box = new Box3();\\n\\t\\t\\tvar vector = new Vector3();\\n\\n\\t\\t\\treturn function computeBoundingSphere() {\\n\\n\\t\\t\\t\\tif ( this.boundingSphere === null ) {\\n\\n\\t\\t\\t\\t\\tthis.boundingSphere = new Sphere();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar position = this.attributes.position;\\n\\n\\t\\t\\t\\tif ( position ) {\\n\\n\\t\\t\\t\\t\\tvar center = this.boundingSphere.center;\\n\\n\\t\\t\\t\\t\\tbox.setFromBufferAttribute( position );\\n\\t\\t\\t\\t\\tbox.getCenter( center );\\n\\n\\t\\t\\t\\t\\t// hoping to find a boundingSphere with a radius smaller than the\\n\\t\\t\\t\\t\\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\\n\\n\\t\\t\\t\\t\\tvar maxRadiusSq = 0;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, il = position.count; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvector.x = position.getX( i );\\n\\t\\t\\t\\t\\t\\tvector.y = position.getY( i );\\n\\t\\t\\t\\t\\t\\tvector.z = position.getZ( i );\\n\\t\\t\\t\\t\\t\\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\\n\\n\\t\\t\\t\\t\\tif ( isNaN( this.boundingSphere.radius ) ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \\\"position\\\" attribute is likely to have NaN values.', this );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tcomputeFaceNormals: function () {\\n\\n\\t\\t\\t// backwards compatibility\\n\\n\\t\\t},\\n\\n\\t\\tcomputeVertexNormals: function () {\\n\\n\\t\\t\\tvar index = this.index;\\n\\t\\t\\tvar attributes = this.attributes;\\n\\t\\t\\tvar groups = this.groups;\\n\\n\\t\\t\\tif ( attributes.position ) {\\n\\n\\t\\t\\t\\tvar positions = attributes.position.array;\\n\\n\\t\\t\\t\\tif ( attributes.normal === undefined ) {\\n\\n\\t\\t\\t\\t\\tthis.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// reset existing normals to zero\\n\\n\\t\\t\\t\\t\\tvar array = attributes.normal.array;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tarray[ i ] = 0;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar normals = attributes.normal.array;\\n\\n\\t\\t\\t\\tvar vA, vB, vC;\\n\\t\\t\\t\\tvar pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\\n\\t\\t\\t\\tvar cb = new Vector3(), ab = new Vector3();\\n\\n\\t\\t\\t\\t// indexed elements\\n\\n\\t\\t\\t\\tif ( index ) {\\n\\n\\t\\t\\t\\t\\tvar indices = index.array;\\n\\n\\t\\t\\t\\t\\tif ( groups.length === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.addGroup( 0, indices.length );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0, jl = groups.length; j < jl; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\tvar group = groups[ j ];\\n\\n\\t\\t\\t\\t\\t\\tvar start = group.start;\\n\\t\\t\\t\\t\\t\\tvar count = group.count;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = start, il = start + count; i < il; i += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvA = indices[ i + 0 ] * 3;\\n\\t\\t\\t\\t\\t\\t\\tvB = indices[ i + 1 ] * 3;\\n\\t\\t\\t\\t\\t\\t\\tvC = indices[ i + 2 ] * 3;\\n\\n\\t\\t\\t\\t\\t\\t\\tpA.fromArray( positions, vA );\\n\\t\\t\\t\\t\\t\\t\\tpB.fromArray( positions, vB );\\n\\t\\t\\t\\t\\t\\t\\tpC.fromArray( positions, vC );\\n\\n\\t\\t\\t\\t\\t\\t\\tcb.subVectors( pC, pB );\\n\\t\\t\\t\\t\\t\\t\\tab.subVectors( pA, pB );\\n\\t\\t\\t\\t\\t\\t\\tcb.cross( ab );\\n\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vA ] += cb.x;\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vA + 1 ] += cb.y;\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vA + 2 ] += cb.z;\\n\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vB ] += cb.x;\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vB + 1 ] += cb.y;\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vB + 2 ] += cb.z;\\n\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vC ] += cb.x;\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vC + 1 ] += cb.y;\\n\\t\\t\\t\\t\\t\\t\\tnormals[ vC + 2 ] += cb.z;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// non-indexed elements (unconnected triangle soup)\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, il = positions.length; i < il; i += 9 ) {\\n\\n\\t\\t\\t\\t\\t\\tpA.fromArray( positions, i );\\n\\t\\t\\t\\t\\t\\tpB.fromArray( positions, i + 3 );\\n\\t\\t\\t\\t\\t\\tpC.fromArray( positions, i + 6 );\\n\\n\\t\\t\\t\\t\\t\\tcb.subVectors( pC, pB );\\n\\t\\t\\t\\t\\t\\tab.subVectors( pA, pB );\\n\\t\\t\\t\\t\\t\\tcb.cross( ab );\\n\\n\\t\\t\\t\\t\\t\\tnormals[ i ] = cb.x;\\n\\t\\t\\t\\t\\t\\tnormals[ i + 1 ] = cb.y;\\n\\t\\t\\t\\t\\t\\tnormals[ i + 2 ] = cb.z;\\n\\n\\t\\t\\t\\t\\t\\tnormals[ i + 3 ] = cb.x;\\n\\t\\t\\t\\t\\t\\tnormals[ i + 4 ] = cb.y;\\n\\t\\t\\t\\t\\t\\tnormals[ i + 5 ] = cb.z;\\n\\n\\t\\t\\t\\t\\t\\tnormals[ i + 6 ] = cb.x;\\n\\t\\t\\t\\t\\t\\tnormals[ i + 7 ] = cb.y;\\n\\t\\t\\t\\t\\t\\tnormals[ i + 8 ] = cb.z;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.normalizeNormals();\\n\\n\\t\\t\\t\\tattributes.normal.needsUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tmerge: function ( geometry, offset ) {\\n\\n\\t\\t\\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tvar attributes = this.attributes;\\n\\n\\t\\t\\tfor ( var key in attributes ) {\\n\\n\\t\\t\\t\\tif ( geometry.attributes[ key ] === undefined ) continue;\\n\\n\\t\\t\\t\\tvar attribute1 = attributes[ key ];\\n\\t\\t\\t\\tvar attributeArray1 = attribute1.array;\\n\\n\\t\\t\\t\\tvar attribute2 = geometry.attributes[ key ];\\n\\t\\t\\t\\tvar attributeArray2 = attribute2.array;\\n\\n\\t\\t\\t\\tvar attributeSize = attribute2.itemSize;\\n\\n\\t\\t\\t\\tfor ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) {\\n\\n\\t\\t\\t\\t\\tattributeArray1[ j ] = attributeArray2[ i ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tnormalizeNormals: function () {\\n\\n\\t\\t\\tvar vector = new Vector3();\\n\\n\\t\\t\\treturn function normalizeNormals() {\\n\\n\\t\\t\\t\\tvar normals = this.attributes.normal;\\n\\n\\t\\t\\t\\tfor ( var i = 0, il = normals.count; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvector.x = normals.getX( i );\\n\\t\\t\\t\\t\\tvector.y = normals.getY( i );\\n\\t\\t\\t\\t\\tvector.z = normals.getZ( i );\\n\\n\\t\\t\\t\\t\\tvector.normalize();\\n\\n\\t\\t\\t\\t\\tnormals.setXYZ( i, vector.x, vector.y, vector.z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttoNonIndexed: function () {\\n\\n\\t\\t\\tif ( this.index === null ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar geometry2 = new BufferGeometry();\\n\\n\\t\\t\\tvar indices = this.index.array;\\n\\t\\t\\tvar attributes = this.attributes;\\n\\n\\t\\t\\tfor ( var name in attributes ) {\\n\\n\\t\\t\\t\\tvar attribute = attributes[ name ];\\n\\n\\t\\t\\t\\tvar array = attribute.array;\\n\\t\\t\\t\\tvar itemSize = attribute.itemSize;\\n\\n\\t\\t\\t\\tvar array2 = new array.constructor( indices.length * itemSize );\\n\\n\\t\\t\\t\\tvar index = 0, index2 = 0;\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = indices.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tindex = indices[ i ] * itemSize;\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0; j < itemSize; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tarray2[ index2 ++ ] = array[ index ++ ];\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn geometry2;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\tvar data = {\\n\\t\\t\\t\\tmetadata: {\\n\\t\\t\\t\\t\\tversion: 4.5,\\n\\t\\t\\t\\t\\ttype: 'BufferGeometry',\\n\\t\\t\\t\\t\\tgenerator: 'BufferGeometry.toJSON'\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\t\\t// standard BufferGeometry serialization\\n\\n\\t\\t\\tdata.uuid = this.uuid;\\n\\t\\t\\tdata.type = this.type;\\n\\t\\t\\tif ( this.name !== '' ) data.name = this.name;\\n\\n\\t\\t\\tif ( this.parameters !== undefined ) {\\n\\n\\t\\t\\t\\tvar parameters = this.parameters;\\n\\n\\t\\t\\t\\tfor ( var key in parameters ) {\\n\\n\\t\\t\\t\\t\\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn data;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tdata.data = { attributes: {} };\\n\\n\\t\\t\\tvar index = this.index;\\n\\n\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\tvar array = Array.prototype.slice.call( index.array );\\n\\n\\t\\t\\t\\tdata.data.index = {\\n\\t\\t\\t\\t\\ttype: index.array.constructor.name,\\n\\t\\t\\t\\t\\tarray: array\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar attributes = this.attributes;\\n\\n\\t\\t\\tfor ( var key in attributes ) {\\n\\n\\t\\t\\t\\tvar attribute = attributes[ key ];\\n\\n\\t\\t\\t\\tvar array = Array.prototype.slice.call( attribute.array );\\n\\n\\t\\t\\t\\tdata.data.attributes[ key ] = {\\n\\t\\t\\t\\t\\titemSize: attribute.itemSize,\\n\\t\\t\\t\\t\\ttype: attribute.array.constructor.name,\\n\\t\\t\\t\\t\\tarray: array,\\n\\t\\t\\t\\t\\tnormalized: attribute.normalized\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar groups = this.groups;\\n\\n\\t\\t\\tif ( groups.length > 0 ) {\\n\\n\\t\\t\\t\\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar boundingSphere = this.boundingSphere;\\n\\n\\t\\t\\tif ( boundingSphere !== null ) {\\n\\n\\t\\t\\t\\tdata.data.boundingSphere = {\\n\\t\\t\\t\\t\\tcenter: boundingSphere.center.toArray(),\\n\\t\\t\\t\\t\\tradius: boundingSphere.radius\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\t/*\\n\\t\\t\\t // Handle primitives\\n\\n\\t\\t\\t var parameters = this.parameters;\\n\\n\\t\\t\\t if ( parameters !== undefined ) {\\n\\n\\t\\t\\t var values = [];\\n\\n\\t\\t\\t for ( var key in parameters ) {\\n\\n\\t\\t\\t values.push( parameters[ key ] );\\n\\n\\t\\t\\t }\\n\\n\\t\\t\\t var geometry = Object.create( this.constructor.prototype );\\n\\t\\t\\t this.constructor.apply( geometry, values );\\n\\t\\t\\t return geometry;\\n\\n\\t\\t\\t }\\n\\n\\t\\t\\t return new this.constructor().copy( this );\\n\\t\\t\\t */\\n\\n\\t\\t\\treturn new BufferGeometry().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tvar name, i, l;\\n\\n\\t\\t\\t// reset\\n\\n\\t\\t\\tthis.index = null;\\n\\t\\t\\tthis.attributes = {};\\n\\t\\t\\tthis.morphAttributes = {};\\n\\t\\t\\tthis.groups = [];\\n\\t\\t\\tthis.boundingBox = null;\\n\\t\\t\\tthis.boundingSphere = null;\\n\\n\\t\\t\\t// name\\n\\n\\t\\t\\tthis.name = source.name;\\n\\n\\t\\t\\t// index\\n\\n\\t\\t\\tvar index = source.index;\\n\\n\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\tthis.setIndex( index.clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// attributes\\n\\n\\t\\t\\tvar attributes = source.attributes;\\n\\n\\t\\t\\tfor ( name in attributes ) {\\n\\n\\t\\t\\t\\tvar attribute = attributes[ name ];\\n\\t\\t\\t\\tthis.addAttribute( name, attribute.clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// morph attributes\\n\\n\\t\\t\\tvar morphAttributes = source.morphAttributes;\\n\\n\\t\\t\\tfor ( name in morphAttributes ) {\\n\\n\\t\\t\\t\\tvar array = [];\\n\\t\\t\\t\\tvar morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\\n\\n\\t\\t\\t\\tfor ( i = 0, l = morphAttribute.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tarray.push( morphAttribute[ i ].clone() );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.morphAttributes[ name ] = array;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// groups\\n\\n\\t\\t\\tvar groups = source.groups;\\n\\n\\t\\t\\tfor ( i = 0, l = groups.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar group = groups[ i ];\\n\\t\\t\\t\\tthis.addGroup( group.start, group.count, group.materialIndex );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// bounding box\\n\\n\\t\\t\\tvar boundingBox = source.boundingBox;\\n\\n\\t\\t\\tif ( boundingBox !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingBox = boundingBox.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// bounding sphere\\n\\n\\t\\t\\tvar boundingSphere = source.boundingSphere;\\n\\n\\t\\t\\tif ( boundingSphere !== null ) {\\n\\n\\t\\t\\t\\tthis.boundingSphere = boundingSphere.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// draw range\\n\\n\\t\\t\\tthis.drawRange.start = source.drawRange.start;\\n\\t\\t\\tthis.drawRange.count = source.drawRange.count;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdispose: function () {\\n\\n\\t\\t\\tthis.dispatchEvent( { type: 'dispose' } );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// BoxGeometry\\n\\n\\tfunction BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'BoxGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\twidth: width,\\n\\t\\t\\theight: height,\\n\\t\\t\\tdepth: depth,\\n\\t\\t\\twidthSegments: widthSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\tdepthSegments: depthSegments\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tBoxGeometry.prototype = Object.create( Geometry.prototype );\\n\\tBoxGeometry.prototype.constructor = BoxGeometry;\\n\\n\\t// BoxBufferGeometry\\n\\n\\tfunction BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'BoxBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\twidth: width,\\n\\t\\t\\theight: height,\\n\\t\\t\\tdepth: depth,\\n\\t\\t\\twidthSegments: widthSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\tdepthSegments: depthSegments\\n\\t\\t};\\n\\n\\t\\tvar scope = this;\\n\\n\\t\\twidth = width || 1;\\n\\t\\theight = height || 1;\\n\\t\\tdepth = depth || 1;\\n\\n\\t\\t// segments\\n\\n\\t\\twidthSegments = Math.floor( widthSegments ) || 1;\\n\\t\\theightSegments = Math.floor( heightSegments ) || 1;\\n\\t\\tdepthSegments = Math.floor( depthSegments ) || 1;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar numberOfVertices = 0;\\n\\t\\tvar groupStart = 0;\\n\\n\\t\\t// build each side of the box geometry\\n\\n\\t\\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\\n\\t\\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\\n\\t\\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\\n\\t\\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\\n\\t\\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\\n\\t\\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t\\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\\n\\n\\t\\t\\tvar segmentWidth = width / gridX;\\n\\t\\t\\tvar segmentHeight = height / gridY;\\n\\n\\t\\t\\tvar widthHalf = width / 2;\\n\\t\\t\\tvar heightHalf = height / 2;\\n\\t\\t\\tvar depthHalf = depth / 2;\\n\\n\\t\\t\\tvar gridX1 = gridX + 1;\\n\\t\\t\\tvar gridY1 = gridY + 1;\\n\\n\\t\\t\\tvar vertexCounter = 0;\\n\\t\\t\\tvar groupCount = 0;\\n\\n\\t\\t\\tvar ix, iy;\\n\\n\\t\\t\\tvar vector = new Vector3();\\n\\n\\t\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\t\\tfor ( iy = 0; iy < gridY1; iy ++ ) {\\n\\n\\t\\t\\t\\tvar y = iy * segmentHeight - heightHalf;\\n\\n\\t\\t\\t\\tfor ( ix = 0; ix < gridX1; ix ++ ) {\\n\\n\\t\\t\\t\\t\\tvar x = ix * segmentWidth - widthHalf;\\n\\n\\t\\t\\t\\t\\t// set values to correct vector component\\n\\n\\t\\t\\t\\t\\tvector[ u ] = x * udir;\\n\\t\\t\\t\\t\\tvector[ v ] = y * vdir;\\n\\t\\t\\t\\t\\tvector[ w ] = depthHalf;\\n\\n\\t\\t\\t\\t\\t// now apply vector to vertex buffer\\n\\n\\t\\t\\t\\t\\tvertices.push( vector.x, vector.y, vector.z );\\n\\n\\t\\t\\t\\t\\t// set values to correct vector component\\n\\n\\t\\t\\t\\t\\tvector[ u ] = 0;\\n\\t\\t\\t\\t\\tvector[ v ] = 0;\\n\\t\\t\\t\\t\\tvector[ w ] = depth > 0 ? 1 : - 1;\\n\\n\\t\\t\\t\\t\\t// now apply vector to normal buffer\\n\\n\\t\\t\\t\\t\\tnormals.push( vector.x, vector.y, vector.z );\\n\\n\\t\\t\\t\\t\\t// uvs\\n\\n\\t\\t\\t\\t\\tuvs.push( ix / gridX );\\n\\t\\t\\t\\t\\tuvs.push( 1 - ( iy / gridY ) );\\n\\n\\t\\t\\t\\t\\t// counters\\n\\n\\t\\t\\t\\t\\tvertexCounter += 1;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// indices\\n\\n\\t\\t\\t// 1. you need three indices to draw a single face\\n\\t\\t\\t// 2. a single segment consists of two faces\\n\\t\\t\\t// 3. so we need to generate six (2*3) indices per segment\\n\\n\\t\\t\\tfor ( iy = 0; iy < gridY; iy ++ ) {\\n\\n\\t\\t\\t\\tfor ( ix = 0; ix < gridX; ix ++ ) {\\n\\n\\t\\t\\t\\t\\tvar a = numberOfVertices + ix + gridX1 * iy;\\n\\t\\t\\t\\t\\tvar b = numberOfVertices + ix + gridX1 * ( iy + 1 );\\n\\t\\t\\t\\t\\tvar c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\\n\\t\\t\\t\\t\\tvar d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\\n\\n\\t\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t\\t\\t// increase counter\\n\\n\\t\\t\\t\\t\\tgroupCount += 6;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// add a group to the geometry. this will ensure multi material support\\n\\n\\t\\t\\tscope.addGroup( groupStart, groupCount, materialIndex );\\n\\n\\t\\t\\t// calculate new start value for groups\\n\\n\\t\\t\\tgroupStart += groupCount;\\n\\n\\t\\t\\t// update total number of vertices\\n\\n\\t\\t\\tnumberOfVertices += vertexCounter;\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tBoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tBoxBufferGeometry.prototype.constructor = BoxBufferGeometry;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// PlaneGeometry\\n\\n\\tfunction PlaneGeometry( width, height, widthSegments, heightSegments ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'PlaneGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\twidth: width,\\n\\t\\t\\theight: height,\\n\\t\\t\\twidthSegments: widthSegments,\\n\\t\\t\\theightSegments: heightSegments\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tPlaneGeometry.prototype = Object.create( Geometry.prototype );\\n\\tPlaneGeometry.prototype.constructor = PlaneGeometry;\\n\\n\\t// PlaneBufferGeometry\\n\\n\\tfunction PlaneBufferGeometry( width, height, widthSegments, heightSegments ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'PlaneBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\twidth: width,\\n\\t\\t\\theight: height,\\n\\t\\t\\twidthSegments: widthSegments,\\n\\t\\t\\theightSegments: heightSegments\\n\\t\\t};\\n\\n\\t\\twidth = width || 1;\\n\\t\\theight = height || 1;\\n\\n\\t\\tvar width_half = width / 2;\\n\\t\\tvar height_half = height / 2;\\n\\n\\t\\tvar gridX = Math.floor( widthSegments ) || 1;\\n\\t\\tvar gridY = Math.floor( heightSegments ) || 1;\\n\\n\\t\\tvar gridX1 = gridX + 1;\\n\\t\\tvar gridY1 = gridY + 1;\\n\\n\\t\\tvar segment_width = width / gridX;\\n\\t\\tvar segment_height = height / gridY;\\n\\n\\t\\tvar ix, iy;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\tfor ( iy = 0; iy < gridY1; iy ++ ) {\\n\\n\\t\\t\\tvar y = iy * segment_height - height_half;\\n\\n\\t\\t\\tfor ( ix = 0; ix < gridX1; ix ++ ) {\\n\\n\\t\\t\\t\\tvar x = ix * segment_width - width_half;\\n\\n\\t\\t\\t\\tvertices.push( x, - y, 0 );\\n\\n\\t\\t\\t\\tnormals.push( 0, 0, 1 );\\n\\n\\t\\t\\t\\tuvs.push( ix / gridX );\\n\\t\\t\\t\\tuvs.push( 1 - ( iy / gridY ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// indices\\n\\n\\t\\tfor ( iy = 0; iy < gridY; iy ++ ) {\\n\\n\\t\\t\\tfor ( ix = 0; ix < gridX; ix ++ ) {\\n\\n\\t\\t\\t\\tvar a = ix + gridX1 * iy;\\n\\t\\t\\t\\tvar b = ix + gridX1 * ( iy + 1 );\\n\\t\\t\\t\\tvar c = ( ix + 1 ) + gridX1 * ( iy + 1 );\\n\\t\\t\\t\\tvar d = ( ix + 1 ) + gridX1 * iy;\\n\\n\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t}\\n\\n\\tPlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tPlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * opacity: ,\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t * lightMap: new THREE.Texture( ),\\n\\t * lightMapIntensity: \\n\\t *\\n\\t * aoMap: new THREE.Texture( ),\\n\\t * aoMapIntensity: \\n\\t *\\n\\t * specularMap: new THREE.Texture( ),\\n\\t *\\n\\t * alphaMap: new THREE.Texture( ),\\n\\t *\\n\\t * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\\n\\t * combine: THREE.Multiply,\\n\\t * reflectivity: ,\\n\\t * refractionRatio: ,\\n\\t *\\n\\t * depthTest: ,\\n\\t * depthWrite: ,\\n\\t *\\n\\t * wireframe: ,\\n\\t * wireframeLinewidth: ,\\n\\t *\\n\\t * skinning: ,\\n\\t * morphTargets: \\n\\t * }\\n\\t */\\n\\n\\tfunction MeshBasicMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'MeshBasicMaterial';\\n\\n\\t\\tthis.color = new Color( 0xffffff ); // emissive\\n\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.lightMap = null;\\n\\t\\tthis.lightMapIntensity = 1.0;\\n\\n\\t\\tthis.aoMap = null;\\n\\t\\tthis.aoMapIntensity = 1.0;\\n\\n\\t\\tthis.specularMap = null;\\n\\n\\t\\tthis.alphaMap = null;\\n\\n\\t\\tthis.envMap = null;\\n\\t\\tthis.combine = MultiplyOperation;\\n\\t\\tthis.reflectivity = 1;\\n\\t\\tthis.refractionRatio = 0.98;\\n\\n\\t\\tthis.wireframe = false;\\n\\t\\tthis.wireframeLinewidth = 1;\\n\\t\\tthis.wireframeLinecap = 'round';\\n\\t\\tthis.wireframeLinejoin = 'round';\\n\\n\\t\\tthis.skinning = false;\\n\\t\\tthis.morphTargets = false;\\n\\n\\t\\tthis.lights = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshBasicMaterial.prototype = Object.create( Material.prototype );\\n\\tMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\\n\\n\\tMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\\n\\n\\tMeshBasicMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.color.copy( source.color );\\n\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.lightMap = source.lightMap;\\n\\t\\tthis.lightMapIntensity = source.lightMapIntensity;\\n\\n\\t\\tthis.aoMap = source.aoMap;\\n\\t\\tthis.aoMapIntensity = source.aoMapIntensity;\\n\\n\\t\\tthis.specularMap = source.specularMap;\\n\\n\\t\\tthis.alphaMap = source.alphaMap;\\n\\n\\t\\tthis.envMap = source.envMap;\\n\\t\\tthis.combine = source.combine;\\n\\t\\tthis.reflectivity = source.reflectivity;\\n\\t\\tthis.refractionRatio = source.refractionRatio;\\n\\n\\t\\tthis.wireframe = source.wireframe;\\n\\t\\tthis.wireframeLinewidth = source.wireframeLinewidth;\\n\\t\\tthis.wireframeLinecap = source.wireframeLinecap;\\n\\t\\tthis.wireframeLinejoin = source.wireframeLinejoin;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * defines: { \\\"label\\\" : \\\"value\\\" },\\n\\t * uniforms: { \\\"parameter1\\\": { value: 1.0 }, \\\"parameter2\\\": { value2: 2 } },\\n\\t *\\n\\t * fragmentShader: ,\\n\\t * vertexShader: ,\\n\\t *\\n\\t * wireframe: ,\\n\\t * wireframeLinewidth: ,\\n\\t *\\n\\t * lights: ,\\n\\t *\\n\\t * skinning: ,\\n\\t * morphTargets: ,\\n\\t * morphNormals: \\n\\t * }\\n\\t */\\n\\n\\tfunction ShaderMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'ShaderMaterial';\\n\\n\\t\\tthis.defines = {};\\n\\t\\tthis.uniforms = {};\\n\\n\\t\\tthis.vertexShader = 'void main() {\\\\n\\\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\\\n}';\\n\\t\\tthis.fragmentShader = 'void main() {\\\\n\\\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\\\n}';\\n\\n\\t\\tthis.linewidth = 1;\\n\\n\\t\\tthis.wireframe = false;\\n\\t\\tthis.wireframeLinewidth = 1;\\n\\n\\t\\tthis.fog = false; // set to use scene fog\\n\\t\\tthis.lights = false; // set to use scene lights\\n\\t\\tthis.clipping = false; // set to use user-defined clipping planes\\n\\n\\t\\tthis.skinning = false; // set to use skinning attribute streams\\n\\t\\tthis.morphTargets = false; // set to use morph targets\\n\\t\\tthis.morphNormals = false; // set to use morph normals\\n\\n\\t\\tthis.extensions = {\\n\\t\\t\\tderivatives: false, // set to use derivatives\\n\\t\\t\\tfragDepth: false, // set to use fragment depth values\\n\\t\\t\\tdrawBuffers: false, // set to use draw buffers\\n\\t\\t\\tshaderTextureLOD: false // set to use shader texture LOD\\n\\t\\t};\\n\\n\\t\\t// When rendered geometry doesn't include these attributes but the material does,\\n\\t\\t// use these default values in WebGL. This avoids errors when buffer data is missing.\\n\\t\\tthis.defaultAttributeValues = {\\n\\t\\t\\t'color': [ 1, 1, 1 ],\\n\\t\\t\\t'uv': [ 0, 0 ],\\n\\t\\t\\t'uv2': [ 0, 0 ]\\n\\t\\t};\\n\\n\\t\\tthis.index0AttributeName = undefined;\\n\\n\\t\\tif ( parameters !== undefined ) {\\n\\n\\t\\t\\tif ( parameters.attributes !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.setValues( parameters );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tShaderMaterial.prototype = Object.create( Material.prototype );\\n\\tShaderMaterial.prototype.constructor = ShaderMaterial;\\n\\n\\tShaderMaterial.prototype.isShaderMaterial = true;\\n\\n\\tShaderMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.fragmentShader = source.fragmentShader;\\n\\t\\tthis.vertexShader = source.vertexShader;\\n\\n\\t\\tthis.uniforms = UniformsUtils.clone( source.uniforms );\\n\\n\\t\\tthis.defines = source.defines;\\n\\n\\t\\tthis.wireframe = source.wireframe;\\n\\t\\tthis.wireframeLinewidth = source.wireframeLinewidth;\\n\\n\\t\\tthis.lights = source.lights;\\n\\t\\tthis.clipping = source.clipping;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\t\\tthis.morphNormals = source.morphNormals;\\n\\n\\t\\tthis.extensions = source.extensions;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tShaderMaterial.prototype.toJSON = function ( meta ) {\\n\\n\\t\\tvar data = Material.prototype.toJSON.call( this, meta );\\n\\n\\t\\tdata.uniforms = this.uniforms;\\n\\t\\tdata.vertexShader = this.vertexShader;\\n\\t\\tdata.fragmentShader = this.fragmentShader;\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tfunction Ray( origin, direction ) {\\n\\n\\t\\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\\n\\t\\tthis.direction = ( direction !== undefined ) ? direction : new Vector3();\\n\\n\\t}\\n\\n\\tObject.assign( Ray.prototype, {\\n\\n\\t\\tset: function ( origin, direction ) {\\n\\n\\t\\t\\tthis.origin.copy( origin );\\n\\t\\t\\tthis.direction.copy( direction );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( ray ) {\\n\\n\\t\\t\\tthis.origin.copy( ray.origin );\\n\\t\\t\\tthis.direction.copy( ray.direction );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tat: function ( t, optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\treturn result.copy( this.direction ).multiplyScalar( t ).add( this.origin );\\n\\n\\t\\t},\\n\\n\\t\\tlookAt: function ( v ) {\\n\\n\\t\\t\\tthis.direction.copy( v ).sub( this.origin ).normalize();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\trecast: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function recast( t ) {\\n\\n\\t\\t\\t\\tthis.origin.copy( this.at( t, v1 ) );\\n\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclosestPointToPoint: function ( point, optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\tresult.subVectors( point, this.origin );\\n\\t\\t\\tvar directionDistance = result.dot( this.direction );\\n\\n\\t\\t\\tif ( directionDistance < 0 ) {\\n\\n\\t\\t\\t\\treturn result.copy( this.origin );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToPoint: function ( point ) {\\n\\n\\t\\t\\treturn Math.sqrt( this.distanceSqToPoint( point ) );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceSqToPoint: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function distanceSqToPoint( point ) {\\n\\n\\t\\t\\t\\tvar directionDistance = v1.subVectors( point, this.origin ).dot( this.direction );\\n\\n\\t\\t\\t\\t// point behind the ray\\n\\n\\t\\t\\t\\tif ( directionDistance < 0 ) {\\n\\n\\t\\t\\t\\t\\treturn this.origin.distanceToSquared( point );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tv1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\\n\\n\\t\\t\\t\\treturn v1.distanceToSquared( point );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tdistanceSqToSegment: function () {\\n\\n\\t\\t\\tvar segCenter = new Vector3();\\n\\t\\t\\tvar segDir = new Vector3();\\n\\t\\t\\tvar diff = new Vector3();\\n\\n\\t\\t\\treturn function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\\n\\n\\t\\t\\t\\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\\n\\t\\t\\t\\t// It returns the min distance between the ray and the segment\\n\\t\\t\\t\\t// defined by v0 and v1\\n\\t\\t\\t\\t// It can also set two optional targets :\\n\\t\\t\\t\\t// - The closest point on the ray\\n\\t\\t\\t\\t// - The closest point on the segment\\n\\n\\t\\t\\t\\tsegCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\\n\\t\\t\\t\\tsegDir.copy( v1 ).sub( v0 ).normalize();\\n\\t\\t\\t\\tdiff.copy( this.origin ).sub( segCenter );\\n\\n\\t\\t\\t\\tvar segExtent = v0.distanceTo( v1 ) * 0.5;\\n\\t\\t\\t\\tvar a01 = - this.direction.dot( segDir );\\n\\t\\t\\t\\tvar b0 = diff.dot( this.direction );\\n\\t\\t\\t\\tvar b1 = - diff.dot( segDir );\\n\\t\\t\\t\\tvar c = diff.lengthSq();\\n\\t\\t\\t\\tvar det = Math.abs( 1 - a01 * a01 );\\n\\t\\t\\t\\tvar s0, s1, sqrDist, extDet;\\n\\n\\t\\t\\t\\tif ( det > 0 ) {\\n\\n\\t\\t\\t\\t\\t// The ray and segment are not parallel.\\n\\n\\t\\t\\t\\t\\ts0 = a01 * b1 - b0;\\n\\t\\t\\t\\t\\ts1 = a01 * b0 - b1;\\n\\t\\t\\t\\t\\textDet = segExtent * det;\\n\\n\\t\\t\\t\\t\\tif ( s0 >= 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( s1 >= - extDet ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( s1 <= extDet ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// region 0\\n\\t\\t\\t\\t\\t\\t\\t\\t// Minimum at interior points of ray and segment.\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar invDet = 1 / det;\\n\\t\\t\\t\\t\\t\\t\\t\\ts0 *= invDet;\\n\\t\\t\\t\\t\\t\\t\\t\\ts1 *= invDet;\\n\\t\\t\\t\\t\\t\\t\\t\\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t// region 1\\n\\n\\t\\t\\t\\t\\t\\t\\t\\ts1 = segExtent;\\n\\t\\t\\t\\t\\t\\t\\t\\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\\n\\t\\t\\t\\t\\t\\t\\t\\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// region 5\\n\\n\\t\\t\\t\\t\\t\\t\\ts1 = - segExtent;\\n\\t\\t\\t\\t\\t\\t\\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\\n\\t\\t\\t\\t\\t\\t\\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tif ( s1 <= - extDet ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// region 4\\n\\n\\t\\t\\t\\t\\t\\t\\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\\n\\t\\t\\t\\t\\t\\t\\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\\n\\t\\t\\t\\t\\t\\t\\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\\n\\n\\t\\t\\t\\t\\t\\t} else if ( s1 <= extDet ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// region 3\\n\\n\\t\\t\\t\\t\\t\\t\\ts0 = 0;\\n\\t\\t\\t\\t\\t\\t\\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\\n\\t\\t\\t\\t\\t\\t\\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// region 2\\n\\n\\t\\t\\t\\t\\t\\t\\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\\n\\t\\t\\t\\t\\t\\t\\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\\n\\t\\t\\t\\t\\t\\t\\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// Ray and segment are parallel.\\n\\n\\t\\t\\t\\t\\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\\n\\t\\t\\t\\t\\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\\n\\t\\t\\t\\t\\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( optionalPointOnRay ) {\\n\\n\\t\\t\\t\\t\\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( optionalPointOnSegment ) {\\n\\n\\t\\t\\t\\t\\toptionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn sqrDist;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tintersectSphere: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function intersectSphere( sphere, optionalTarget ) {\\n\\n\\t\\t\\t\\tv1.subVectors( sphere.center, this.origin );\\n\\t\\t\\t\\tvar tca = v1.dot( this.direction );\\n\\t\\t\\t\\tvar d2 = v1.dot( v1 ) - tca * tca;\\n\\t\\t\\t\\tvar radius2 = sphere.radius * sphere.radius;\\n\\n\\t\\t\\t\\tif ( d2 > radius2 ) return null;\\n\\n\\t\\t\\t\\tvar thc = Math.sqrt( radius2 - d2 );\\n\\n\\t\\t\\t\\t// t0 = first intersect point - entrance on front of sphere\\n\\t\\t\\t\\tvar t0 = tca - thc;\\n\\n\\t\\t\\t\\t// t1 = second intersect point - exit point on back of sphere\\n\\t\\t\\t\\tvar t1 = tca + thc;\\n\\n\\t\\t\\t\\t// test to see if both t0 and t1 are behind the ray - if so, return null\\n\\t\\t\\t\\tif ( t0 < 0 && t1 < 0 ) return null;\\n\\n\\t\\t\\t\\t// test to see if t0 is behind the ray:\\n\\t\\t\\t\\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\\n\\t\\t\\t\\t// in order to always return an intersect point that is in front of the ray.\\n\\t\\t\\t\\tif ( t0 < 0 ) return this.at( t1, optionalTarget );\\n\\n\\t\\t\\t\\t// else t0 is in front of the ray, so return the first collision point scaled by t0\\n\\t\\t\\t\\treturn this.at( t0, optionalTarget );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tintersectsSphere: function ( sphere ) {\\n\\n\\t\\t\\treturn this.distanceToPoint( sphere.center ) <= sphere.radius;\\n\\n\\t\\t},\\n\\n\\t\\tdistanceToPlane: function ( plane ) {\\n\\n\\t\\t\\tvar denominator = plane.normal.dot( this.direction );\\n\\n\\t\\t\\tif ( denominator === 0 ) {\\n\\n\\t\\t\\t\\t// line is coplanar, return origin\\n\\t\\t\\t\\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\\n\\n\\t\\t\\t\\t\\treturn 0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Null is preferable to undefined since undefined means.... it is undefined\\n\\n\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\\n\\n\\t\\t\\t// Return if the ray never intersects the plane\\n\\n\\t\\t\\treturn t >= 0 ? t : null;\\n\\n\\t\\t},\\n\\n\\t\\tintersectPlane: function ( plane, optionalTarget ) {\\n\\n\\t\\t\\tvar t = this.distanceToPlane( plane );\\n\\n\\t\\t\\tif ( t === null ) {\\n\\n\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this.at( t, optionalTarget );\\n\\n\\t\\t},\\n\\n\\t\\tintersectsPlane: function ( plane ) {\\n\\n\\t\\t\\t// check if the ray lies on the plane first\\n\\n\\t\\t\\tvar distToPoint = plane.distanceToPoint( this.origin );\\n\\n\\t\\t\\tif ( distToPoint === 0 ) {\\n\\n\\t\\t\\t\\treturn true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar denominator = plane.normal.dot( this.direction );\\n\\n\\t\\t\\tif ( denominator * distToPoint < 0 ) {\\n\\n\\t\\t\\t\\treturn true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// ray origin is behind the plane (and is pointing behind it)\\n\\n\\t\\t\\treturn false;\\n\\n\\t\\t},\\n\\n\\t\\tintersectBox: function ( box, optionalTarget ) {\\n\\n\\t\\t\\tvar tmin, tmax, tymin, tymax, tzmin, tzmax;\\n\\n\\t\\t\\tvar invdirx = 1 / this.direction.x,\\n\\t\\t\\t\\tinvdiry = 1 / this.direction.y,\\n\\t\\t\\t\\tinvdirz = 1 / this.direction.z;\\n\\n\\t\\t\\tvar origin = this.origin;\\n\\n\\t\\t\\tif ( invdirx >= 0 ) {\\n\\n\\t\\t\\t\\ttmin = ( box.min.x - origin.x ) * invdirx;\\n\\t\\t\\t\\ttmax = ( box.max.x - origin.x ) * invdirx;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\ttmin = ( box.max.x - origin.x ) * invdirx;\\n\\t\\t\\t\\ttmax = ( box.min.x - origin.x ) * invdirx;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( invdiry >= 0 ) {\\n\\n\\t\\t\\t\\ttymin = ( box.min.y - origin.y ) * invdiry;\\n\\t\\t\\t\\ttymax = ( box.max.y - origin.y ) * invdiry;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\ttymin = ( box.max.y - origin.y ) * invdiry;\\n\\t\\t\\t\\ttymax = ( box.min.y - origin.y ) * invdiry;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\\n\\n\\t\\t\\t// These lines also handle the case where tmin or tmax is NaN\\n\\t\\t\\t// (result of 0 * Infinity). x !== x returns true if x is NaN\\n\\n\\t\\t\\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\\n\\n\\t\\t\\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\\n\\n\\t\\t\\tif ( invdirz >= 0 ) {\\n\\n\\t\\t\\t\\ttzmin = ( box.min.z - origin.z ) * invdirz;\\n\\t\\t\\t\\ttzmax = ( box.max.z - origin.z ) * invdirz;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\ttzmin = ( box.max.z - origin.z ) * invdirz;\\n\\t\\t\\t\\ttzmax = ( box.min.z - origin.z ) * invdirz;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\\n\\n\\t\\t\\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\\n\\n\\t\\t\\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\\n\\n\\t\\t\\t//return point closest to the ray (positive side)\\n\\n\\t\\t\\tif ( tmax < 0 ) return null;\\n\\n\\t\\t\\treturn this.at( tmin >= 0 ? tmin : tmax, optionalTarget );\\n\\n\\t\\t},\\n\\n\\t\\tintersectsBox: ( function () {\\n\\n\\t\\t\\tvar v = new Vector3();\\n\\n\\t\\t\\treturn function intersectsBox( box ) {\\n\\n\\t\\t\\t\\treturn this.intersectBox( box, v ) !== null;\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )(),\\n\\n\\t\\tintersectTriangle: function () {\\n\\n\\t\\t\\t// Compute the offset origin, edges, and normal.\\n\\t\\t\\tvar diff = new Vector3();\\n\\t\\t\\tvar edge1 = new Vector3();\\n\\t\\t\\tvar edge2 = new Vector3();\\n\\t\\t\\tvar normal = new Vector3();\\n\\n\\t\\t\\treturn function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) {\\n\\n\\t\\t\\t\\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\\n\\n\\t\\t\\t\\tedge1.subVectors( b, a );\\n\\t\\t\\t\\tedge2.subVectors( c, a );\\n\\t\\t\\t\\tnormal.crossVectors( edge1, edge2 );\\n\\n\\t\\t\\t\\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\\n\\t\\t\\t\\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\\n\\t\\t\\t\\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\\n\\t\\t\\t\\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\\n\\t\\t\\t\\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\\n\\t\\t\\t\\tvar DdN = this.direction.dot( normal );\\n\\t\\t\\t\\tvar sign;\\n\\n\\t\\t\\t\\tif ( DdN > 0 ) {\\n\\n\\t\\t\\t\\t\\tif ( backfaceCulling ) return null;\\n\\t\\t\\t\\t\\tsign = 1;\\n\\n\\t\\t\\t\\t} else if ( DdN < 0 ) {\\n\\n\\t\\t\\t\\t\\tsign = - 1;\\n\\t\\t\\t\\t\\tDdN = - DdN;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tdiff.subVectors( this.origin, a );\\n\\t\\t\\t\\tvar DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) );\\n\\n\\t\\t\\t\\t// b1 < 0, no intersection\\n\\t\\t\\t\\tif ( DdQxE2 < 0 ) {\\n\\n\\t\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) );\\n\\n\\t\\t\\t\\t// b2 < 0, no intersection\\n\\t\\t\\t\\tif ( DdE1xQ < 0 ) {\\n\\n\\t\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// b1+b2 > 1, no intersection\\n\\t\\t\\t\\tif ( DdQxE2 + DdE1xQ > DdN ) {\\n\\n\\t\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Line intersects triangle, check if ray does.\\n\\t\\t\\t\\tvar QdN = - sign * diff.dot( normal );\\n\\n\\t\\t\\t\\t// t < 0, no intersection\\n\\t\\t\\t\\tif ( QdN < 0 ) {\\n\\n\\t\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Ray intersects triangle.\\n\\t\\t\\t\\treturn this.at( QdN / DdN, optionalTarget );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tapplyMatrix4: function ( matrix4 ) {\\n\\n\\t\\t\\tthis.origin.applyMatrix4( matrix4 );\\n\\t\\t\\tthis.direction.transformDirection( matrix4 );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( ray ) {\\n\\n\\t\\t\\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t */\\n\\n\\tfunction Line3( start, end ) {\\n\\n\\t\\tthis.start = ( start !== undefined ) ? start : new Vector3();\\n\\t\\tthis.end = ( end !== undefined ) ? end : new Vector3();\\n\\n\\t}\\n\\n\\tObject.assign( Line3.prototype, {\\n\\n\\t\\tset: function ( start, end ) {\\n\\n\\t\\t\\tthis.start.copy( start );\\n\\t\\t\\tthis.end.copy( end );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( line ) {\\n\\n\\t\\t\\tthis.start.copy( line.start );\\n\\t\\t\\tthis.end.copy( line.end );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetCenter: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\treturn result.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\\n\\n\\t\\t},\\n\\n\\t\\tdelta: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\treturn result.subVectors( this.end, this.start );\\n\\n\\t\\t},\\n\\n\\t\\tdistanceSq: function () {\\n\\n\\t\\t\\treturn this.start.distanceToSquared( this.end );\\n\\n\\t\\t},\\n\\n\\t\\tdistance: function () {\\n\\n\\t\\t\\treturn this.start.distanceTo( this.end );\\n\\n\\t\\t},\\n\\n\\t\\tat: function ( t, optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\\n\\n\\t\\t},\\n\\n\\t\\tclosestPointToPointParameter: function () {\\n\\n\\t\\t\\tvar startP = new Vector3();\\n\\t\\t\\tvar startEnd = new Vector3();\\n\\n\\t\\t\\treturn function closestPointToPointParameter( point, clampToLine ) {\\n\\n\\t\\t\\t\\tstartP.subVectors( point, this.start );\\n\\t\\t\\t\\tstartEnd.subVectors( this.end, this.start );\\n\\n\\t\\t\\t\\tvar startEnd2 = startEnd.dot( startEnd );\\n\\t\\t\\t\\tvar startEnd_startP = startEnd.dot( startP );\\n\\n\\t\\t\\t\\tvar t = startEnd_startP / startEnd2;\\n\\n\\t\\t\\t\\tif ( clampToLine ) {\\n\\n\\t\\t\\t\\t\\tt = _Math.clamp( t, 0, 1 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn t;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tclosestPointToPoint: function ( point, clampToLine, optionalTarget ) {\\n\\n\\t\\t\\tvar t = this.closestPointToPointParameter( point, clampToLine );\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\treturn this.delta( result ).multiplyScalar( t ).add( this.start );\\n\\n\\t\\t},\\n\\n\\t\\tapplyMatrix4: function ( matrix ) {\\n\\n\\t\\t\\tthis.start.applyMatrix4( matrix );\\n\\t\\t\\tthis.end.applyMatrix4( matrix );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tequals: function ( line ) {\\n\\n\\t\\t\\treturn line.start.equals( this.start ) && line.end.equals( this.end );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Triangle( a, b, c ) {\\n\\n\\t\\tthis.a = ( a !== undefined ) ? a : new Vector3();\\n\\t\\tthis.b = ( b !== undefined ) ? b : new Vector3();\\n\\t\\tthis.c = ( c !== undefined ) ? c : new Vector3();\\n\\n\\t}\\n\\n\\tObject.assign( Triangle, {\\n\\n\\t\\tnormal: function () {\\n\\n\\t\\t\\tvar v0 = new Vector3();\\n\\n\\t\\t\\treturn function normal( a, b, c, optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\t\\tresult.subVectors( c, b );\\n\\t\\t\\t\\tv0.subVectors( a, b );\\n\\t\\t\\t\\tresult.cross( v0 );\\n\\n\\t\\t\\t\\tvar resultLengthSq = result.lengthSq();\\n\\t\\t\\t\\tif ( resultLengthSq > 0 ) {\\n\\n\\t\\t\\t\\t\\treturn result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn result.set( 0, 0, 0 );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\t// static/instance method to calculate barycentric coordinates\\n\\t\\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\\n\\t\\tbarycoordFromPoint: function () {\\n\\n\\t\\t\\tvar v0 = new Vector3();\\n\\t\\t\\tvar v1 = new Vector3();\\n\\t\\t\\tvar v2 = new Vector3();\\n\\n\\t\\t\\treturn function barycoordFromPoint( point, a, b, c, optionalTarget ) {\\n\\n\\t\\t\\t\\tv0.subVectors( c, a );\\n\\t\\t\\t\\tv1.subVectors( b, a );\\n\\t\\t\\t\\tv2.subVectors( point, a );\\n\\n\\t\\t\\t\\tvar dot00 = v0.dot( v0 );\\n\\t\\t\\t\\tvar dot01 = v0.dot( v1 );\\n\\t\\t\\t\\tvar dot02 = v0.dot( v2 );\\n\\t\\t\\t\\tvar dot11 = v1.dot( v1 );\\n\\t\\t\\t\\tvar dot12 = v1.dot( v2 );\\n\\n\\t\\t\\t\\tvar denom = ( dot00 * dot11 - dot01 * dot01 );\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\n\\t\\t\\t\\t// collinear or singular triangle\\n\\t\\t\\t\\tif ( denom === 0 ) {\\n\\n\\t\\t\\t\\t\\t// arbitrary location outside of triangle?\\n\\t\\t\\t\\t\\t// not sure if this is the best idea, maybe should be returning undefined\\n\\t\\t\\t\\t\\treturn result.set( - 2, - 1, - 1 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar invDenom = 1 / denom;\\n\\t\\t\\t\\tvar u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\\n\\t\\t\\t\\tvar v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\\n\\n\\t\\t\\t\\t// barycentric coordinates must always sum to 1\\n\\t\\t\\t\\treturn result.set( 1 - u - v, v, u );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tcontainsPoint: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function containsPoint( point, a, b, c ) {\\n\\n\\t\\t\\t\\tvar result = Triangle.barycoordFromPoint( point, a, b, c, v1 );\\n\\n\\t\\t\\t\\treturn ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}()\\n\\n\\t} );\\n\\n\\tObject.assign( Triangle.prototype, {\\n\\n\\t\\tset: function ( a, b, c ) {\\n\\n\\t\\t\\tthis.a.copy( a );\\n\\t\\t\\tthis.b.copy( b );\\n\\t\\t\\tthis.c.copy( c );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromPointsAndIndices: function ( points, i0, i1, i2 ) {\\n\\n\\t\\t\\tthis.a.copy( points[ i0 ] );\\n\\t\\t\\tthis.b.copy( points[ i1 ] );\\n\\t\\t\\tthis.c.copy( points[ i2 ] );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( triangle ) {\\n\\n\\t\\t\\tthis.a.copy( triangle.a );\\n\\t\\t\\tthis.b.copy( triangle.b );\\n\\t\\t\\tthis.c.copy( triangle.c );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tarea: function () {\\n\\n\\t\\t\\tvar v0 = new Vector3();\\n\\t\\t\\tvar v1 = new Vector3();\\n\\n\\t\\t\\treturn function area() {\\n\\n\\t\\t\\t\\tv0.subVectors( this.c, this.b );\\n\\t\\t\\t\\tv1.subVectors( this.a, this.b );\\n\\n\\t\\t\\t\\treturn v0.cross( v1 ).length() * 0.5;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tmidpoint: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\treturn result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\\n\\n\\t\\t},\\n\\n\\t\\tnormal: function ( optionalTarget ) {\\n\\n\\t\\t\\treturn Triangle.normal( this.a, this.b, this.c, optionalTarget );\\n\\n\\t\\t},\\n\\n\\t\\tplane: function ( optionalTarget ) {\\n\\n\\t\\t\\tvar result = optionalTarget || new Plane();\\n\\n\\t\\t\\treturn result.setFromCoplanarPoints( this.a, this.b, this.c );\\n\\n\\t\\t},\\n\\n\\t\\tbarycoordFromPoint: function ( point, optionalTarget ) {\\n\\n\\t\\t\\treturn Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget );\\n\\n\\t\\t},\\n\\n\\t\\tcontainsPoint: function ( point ) {\\n\\n\\t\\t\\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\\n\\n\\t\\t},\\n\\n\\t\\tclosestPointToPoint: function () {\\n\\n\\t\\t\\tvar plane = new Plane();\\n\\t\\t\\tvar edgeList = [ new Line3(), new Line3(), new Line3() ];\\n\\t\\t\\tvar projectedPoint = new Vector3();\\n\\t\\t\\tvar closestPoint = new Vector3();\\n\\n\\t\\t\\treturn function closestPointToPoint( point, optionalTarget ) {\\n\\n\\t\\t\\t\\tvar result = optionalTarget || new Vector3();\\n\\t\\t\\t\\tvar minDistance = Infinity;\\n\\n\\t\\t\\t\\t// project the point onto the plane of the triangle\\n\\n\\t\\t\\t\\tplane.setFromCoplanarPoints( this.a, this.b, this.c );\\n\\t\\t\\t\\tplane.projectPoint( point, projectedPoint );\\n\\n\\t\\t\\t\\t// check if the projection lies within the triangle\\n\\n\\t\\t\\t\\tif ( this.containsPoint( projectedPoint ) === true ) {\\n\\n\\t\\t\\t\\t\\t// if so, this is the closest point\\n\\n\\t\\t\\t\\t\\tresult.copy( projectedPoint );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices\\n\\n\\t\\t\\t\\t\\tedgeList[ 0 ].set( this.a, this.b );\\n\\t\\t\\t\\t\\tedgeList[ 1 ].set( this.b, this.c );\\n\\t\\t\\t\\t\\tedgeList[ 2 ].set( this.c, this.a );\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < edgeList.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tedgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint );\\n\\n\\t\\t\\t\\t\\t\\tvar distance = projectedPoint.distanceToSquared( closestPoint );\\n\\n\\t\\t\\t\\t\\t\\tif ( distance < minDistance ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tminDistance = distance;\\n\\n\\t\\t\\t\\t\\t\\t\\tresult.copy( closestPoint );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn result;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tequals: function ( triangle ) {\\n\\n\\t\\t\\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author jonobr1 / http://jonobr1.com/\\n\\t */\\n\\n\\tfunction Mesh( geometry, material ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Mesh';\\n\\n\\t\\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\\n\\t\\tthis.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } );\\n\\n\\t\\tthis.drawMode = TrianglesDrawMode;\\n\\n\\t\\tthis.updateMorphTargets();\\n\\n\\t}\\n\\n\\tMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Mesh,\\n\\n\\t\\tisMesh: true,\\n\\n\\t\\tsetDrawMode: function ( value ) {\\n\\n\\t\\t\\tthis.drawMode = value;\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tObject3D.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.drawMode = source.drawMode;\\n\\n\\t\\t\\tif ( source.morphTargetInfluences !== undefined ) {\\n\\n\\t\\t\\t\\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( source.morphTargetDictionary !== undefined ) {\\n\\n\\t\\t\\t\\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tupdateMorphTargets: function () {\\n\\n\\t\\t\\tvar geometry = this.geometry;\\n\\t\\t\\tvar m, ml, name;\\n\\n\\t\\t\\tif ( geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\tvar morphAttributes = geometry.morphAttributes;\\n\\t\\t\\t\\tvar keys = Object.keys( morphAttributes );\\n\\n\\t\\t\\t\\tif ( keys.length > 0 ) {\\n\\n\\t\\t\\t\\t\\tvar morphAttribute = morphAttributes[ keys[ 0 ] ];\\n\\n\\t\\t\\t\\t\\tif ( morphAttribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.morphTargetInfluences = [];\\n\\t\\t\\t\\t\\t\\tthis.morphTargetDictionary = {};\\n\\n\\t\\t\\t\\t\\t\\tfor ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tname = morphAttribute[ m ].name || String( m );\\n\\n\\t\\t\\t\\t\\t\\t\\tthis.morphTargetInfluences.push( 0 );\\n\\t\\t\\t\\t\\t\\t\\tthis.morphTargetDictionary[ name ] = m;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tvar morphTargets = geometry.morphTargets;\\n\\n\\t\\t\\t\\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\\n\\n\\t\\t\\t\\t\\tthis.morphTargetInfluences = [];\\n\\t\\t\\t\\t\\tthis.morphTargetDictionary = {};\\n\\n\\t\\t\\t\\t\\tfor ( m = 0, ml = morphTargets.length; m < ml; m ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tname = morphTargets[ m ].name || String( m );\\n\\n\\t\\t\\t\\t\\t\\tthis.morphTargetInfluences.push( 0 );\\n\\t\\t\\t\\t\\t\\tthis.morphTargetDictionary[ name ] = m;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\traycast: ( function () {\\n\\n\\t\\t\\tvar inverseMatrix = new Matrix4();\\n\\t\\t\\tvar ray = new Ray();\\n\\t\\t\\tvar sphere = new Sphere();\\n\\n\\t\\t\\tvar vA = new Vector3();\\n\\t\\t\\tvar vB = new Vector3();\\n\\t\\t\\tvar vC = new Vector3();\\n\\n\\t\\t\\tvar tempA = new Vector3();\\n\\t\\t\\tvar tempB = new Vector3();\\n\\t\\t\\tvar tempC = new Vector3();\\n\\n\\t\\t\\tvar uvA = new Vector2();\\n\\t\\t\\tvar uvB = new Vector2();\\n\\t\\t\\tvar uvC = new Vector2();\\n\\n\\t\\t\\tvar barycoord = new Vector3();\\n\\n\\t\\t\\tvar intersectionPoint = new Vector3();\\n\\t\\t\\tvar intersectionPointWorld = new Vector3();\\n\\n\\t\\t\\tfunction uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) {\\n\\n\\t\\t\\t\\tTriangle.barycoordFromPoint( point, p1, p2, p3, barycoord );\\n\\n\\t\\t\\t\\tuv1.multiplyScalar( barycoord.x );\\n\\t\\t\\t\\tuv2.multiplyScalar( barycoord.y );\\n\\t\\t\\t\\tuv3.multiplyScalar( barycoord.z );\\n\\n\\t\\t\\t\\tuv1.add( uv2 ).add( uv3 );\\n\\n\\t\\t\\t\\treturn uv1.clone();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\\n\\n\\t\\t\\t\\tvar intersect;\\n\\n\\t\\t\\t\\tif ( material.side === BackSide ) {\\n\\n\\t\\t\\t\\t\\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( intersect === null ) return null;\\n\\n\\t\\t\\t\\tintersectionPointWorld.copy( point );\\n\\t\\t\\t\\tintersectionPointWorld.applyMatrix4( object.matrixWorld );\\n\\n\\t\\t\\t\\tvar distance = raycaster.ray.origin.distanceTo( intersectionPointWorld );\\n\\n\\t\\t\\t\\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\\n\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tdistance: distance,\\n\\t\\t\\t\\t\\tpoint: intersectionPointWorld.clone(),\\n\\t\\t\\t\\t\\tobject: object\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {\\n\\n\\t\\t\\t\\tvA.fromBufferAttribute( position, a );\\n\\t\\t\\t\\tvB.fromBufferAttribute( position, b );\\n\\t\\t\\t\\tvC.fromBufferAttribute( position, c );\\n\\n\\t\\t\\t\\tvar intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );\\n\\n\\t\\t\\t\\tif ( intersection ) {\\n\\n\\t\\t\\t\\t\\tif ( uv ) {\\n\\n\\t\\t\\t\\t\\t\\tuvA.fromBufferAttribute( uv, a );\\n\\t\\t\\t\\t\\t\\tuvB.fromBufferAttribute( uv, b );\\n\\t\\t\\t\\t\\t\\tuvC.fromBufferAttribute( uv, c );\\n\\n\\t\\t\\t\\t\\t\\tintersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tintersection.face = new Face3( a, b, c, Triangle.normal( vA, vB, vC ) );\\n\\t\\t\\t\\t\\tintersection.faceIndex = a;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn intersection;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn function raycast( raycaster, intersects ) {\\n\\n\\t\\t\\t\\tvar geometry = this.geometry;\\n\\t\\t\\t\\tvar material = this.material;\\n\\t\\t\\t\\tvar matrixWorld = this.matrixWorld;\\n\\n\\t\\t\\t\\tif ( material === undefined ) return;\\n\\n\\t\\t\\t\\t// Checking boundingSphere distance to ray\\n\\n\\t\\t\\t\\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\\n\\n\\t\\t\\t\\tsphere.copy( geometry.boundingSphere );\\n\\t\\t\\t\\tsphere.applyMatrix4( matrixWorld );\\n\\n\\t\\t\\t\\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\\n\\n\\t\\t\\t\\t//\\n\\n\\t\\t\\t\\tinverseMatrix.getInverse( matrixWorld );\\n\\t\\t\\t\\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\\n\\n\\t\\t\\t\\t// Check boundingBox before continuing\\n\\n\\t\\t\\t\\tif ( geometry.boundingBox !== null ) {\\n\\n\\t\\t\\t\\t\\tif ( ray.intersectsBox( geometry.boundingBox ) === false ) return;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar intersection;\\n\\n\\t\\t\\t\\tif ( geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\t\\tvar a, b, c;\\n\\t\\t\\t\\t\\tvar index = geometry.index;\\n\\t\\t\\t\\t\\tvar position = geometry.attributes.position;\\n\\t\\t\\t\\t\\tvar uv = geometry.attributes.uv;\\n\\t\\t\\t\\t\\tvar i, l;\\n\\n\\t\\t\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\t\\t\\t// indexed buffer geometry\\n\\n\\t\\t\\t\\t\\t\\tfor ( i = 0, l = index.count; i < l; i += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\ta = index.getX( i );\\n\\t\\t\\t\\t\\t\\t\\tb = index.getX( i + 1 );\\n\\t\\t\\t\\t\\t\\t\\tc = index.getX( i + 2 );\\n\\n\\t\\t\\t\\t\\t\\t\\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( intersection ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indices buffer semantics\\n\\t\\t\\t\\t\\t\\t\\t\\tintersects.push( intersection );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else if ( position !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t// non-indexed buffer geometry\\n\\n\\t\\t\\t\\t\\t\\tfor ( i = 0, l = position.count; i < l; i += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\ta = i;\\n\\t\\t\\t\\t\\t\\t\\tb = i + 1;\\n\\t\\t\\t\\t\\t\\t\\tc = i + 2;\\n\\n\\t\\t\\t\\t\\t\\t\\tintersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( intersection ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tintersection.index = a; // triangle number in positions buffer semantics\\n\\t\\t\\t\\t\\t\\t\\t\\tintersects.push( intersection );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( geometry.isGeometry ) {\\n\\n\\t\\t\\t\\t\\tvar fvA, fvB, fvC;\\n\\t\\t\\t\\t\\tvar isMultiMaterial = Array.isArray( material );\\n\\n\\t\\t\\t\\t\\tvar vertices = geometry.vertices;\\n\\t\\t\\t\\t\\tvar faces = geometry.faces;\\n\\t\\t\\t\\t\\tvar uvs;\\n\\n\\t\\t\\t\\t\\tvar faceVertexUvs = geometry.faceVertexUvs[ 0 ];\\n\\t\\t\\t\\t\\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\\n\\n\\t\\t\\t\\t\\tfor ( var f = 0, fl = faces.length; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar face = faces[ f ];\\n\\t\\t\\t\\t\\t\\tvar faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\\n\\n\\t\\t\\t\\t\\t\\tif ( faceMaterial === undefined ) continue;\\n\\n\\t\\t\\t\\t\\t\\tfvA = vertices[ face.a ];\\n\\t\\t\\t\\t\\t\\tfvB = vertices[ face.b ];\\n\\t\\t\\t\\t\\t\\tfvC = vertices[ face.c ];\\n\\n\\t\\t\\t\\t\\t\\tif ( faceMaterial.morphTargets === true ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar morphTargets = geometry.morphTargets;\\n\\t\\t\\t\\t\\t\\t\\tvar morphInfluences = this.morphTargetInfluences;\\n\\n\\t\\t\\t\\t\\t\\t\\tvA.set( 0, 0, 0 );\\n\\t\\t\\t\\t\\t\\t\\tvB.set( 0, 0, 0 );\\n\\t\\t\\t\\t\\t\\t\\tvC.set( 0, 0, 0 );\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar influence = morphInfluences[ t ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( influence === 0 ) continue;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar targets = morphTargets[ t ].vertices;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence );\\n\\t\\t\\t\\t\\t\\t\\t\\tvB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence );\\n\\t\\t\\t\\t\\t\\t\\t\\tvC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tvA.add( fvA );\\n\\t\\t\\t\\t\\t\\t\\tvB.add( fvB );\\n\\t\\t\\t\\t\\t\\t\\tvC.add( fvC );\\n\\n\\t\\t\\t\\t\\t\\t\\tfvA = vA;\\n\\t\\t\\t\\t\\t\\t\\tfvB = vB;\\n\\t\\t\\t\\t\\t\\t\\tfvC = vC;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tintersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint );\\n\\n\\t\\t\\t\\t\\t\\tif ( intersection ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( uvs && uvs[ f ] ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar uvs_f = uvs[ f ];\\n\\t\\t\\t\\t\\t\\t\\t\\tuvA.copy( uvs_f[ 0 ] );\\n\\t\\t\\t\\t\\t\\t\\t\\tuvB.copy( uvs_f[ 1 ] );\\n\\t\\t\\t\\t\\t\\t\\t\\tuvC.copy( uvs_f[ 2 ] );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tintersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tintersection.face = face;\\n\\t\\t\\t\\t\\t\\t\\tintersection.faceIndex = f;\\n\\t\\t\\t\\t\\t\\t\\tintersects.push( intersection );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() ),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.geometry, this.material ).copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLBackground( renderer, state, geometries, premultipliedAlpha ) {\\n\\n\\t\\tvar clearColor = new Color( 0x000000 );\\n\\t\\tvar clearAlpha = 0;\\n\\n\\t\\tvar planeCamera, planeMesh;\\n\\t\\tvar boxMesh;\\n\\n\\t\\tfunction render( renderList, scene, camera, forceClear ) {\\n\\n\\t\\t\\tvar background = scene.background;\\n\\n\\t\\t\\tif ( background === null ) {\\n\\n\\t\\t\\t\\tsetClear( clearColor, clearAlpha );\\n\\n\\t\\t\\t} else if ( background && background.isColor ) {\\n\\n\\t\\t\\t\\tsetClear( background, 1 );\\n\\t\\t\\t\\tforceClear = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( renderer.autoClear || forceClear ) {\\n\\n\\t\\t\\t\\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( background && background.isCubeTexture ) {\\n\\n\\t\\t\\t\\tif ( boxMesh === undefined ) {\\n\\n\\t\\t\\t\\t\\tboxMesh = new Mesh(\\n\\t\\t\\t\\t\\t\\tnew BoxBufferGeometry( 1, 1, 1 ),\\n\\t\\t\\t\\t\\t\\tnew ShaderMaterial( {\\n\\t\\t\\t\\t\\t\\t\\tuniforms: ShaderLib.cube.uniforms,\\n\\t\\t\\t\\t\\t\\t\\tvertexShader: ShaderLib.cube.vertexShader,\\n\\t\\t\\t\\t\\t\\t\\tfragmentShader: ShaderLib.cube.fragmentShader,\\n\\t\\t\\t\\t\\t\\t\\tside: BackSide,\\n\\t\\t\\t\\t\\t\\t\\tdepthTest: true,\\n\\t\\t\\t\\t\\t\\t\\tdepthWrite: false,\\n\\t\\t\\t\\t\\t\\t\\tfog: false\\n\\t\\t\\t\\t\\t\\t} )\\n\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\tboxMesh.geometry.removeAttribute( 'normal' );\\n\\t\\t\\t\\t\\tboxMesh.geometry.removeAttribute( 'uv' );\\n\\n\\t\\t\\t\\t\\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.matrixWorld.copyPosition( camera.matrixWorld );\\n\\n\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t\\tgeometries.update( boxMesh.geometry );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tboxMesh.material.uniforms.tCube.value = background;\\n\\n\\t\\t\\t\\trenderList.push( boxMesh, boxMesh.geometry, boxMesh.material, 0, null );\\n\\n\\t\\t\\t} else if ( background && background.isTexture ) {\\n\\n\\t\\t\\t\\tif ( planeCamera === undefined ) {\\n\\n\\t\\t\\t\\t\\tplaneCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );\\n\\n\\t\\t\\t\\t\\tplaneMesh = new Mesh(\\n\\t\\t\\t\\t\\t\\tnew PlaneBufferGeometry( 2, 2 ),\\n\\t\\t\\t\\t\\t\\tnew MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } )\\n\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\tgeometries.update( planeMesh.geometry );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tplaneMesh.material.map = background;\\n\\n\\t\\t\\t\\t// TODO Push this to renderList\\n\\n\\t\\t\\t\\trenderer.renderBufferDirect( planeCamera, null, planeMesh.geometry, planeMesh.material, planeMesh, null );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction setClear( color, alpha ) {\\n\\n\\t\\t\\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tgetClearColor: function () {\\n\\n\\t\\t\\t\\treturn clearColor;\\n\\n\\t\\t\\t},\\n\\t\\t\\tsetClearColor: function ( color, alpha ) {\\n\\n\\t\\t\\t\\tclearColor.set( color );\\n\\t\\t\\t\\tclearAlpha = alpha !== undefined ? alpha : 1;\\n\\t\\t\\t\\tsetClear( clearColor, clearAlpha );\\n\\n\\t\\t\\t},\\n\\t\\t\\tgetClearAlpha: function () {\\n\\n\\t\\t\\t\\treturn clearAlpha;\\n\\n\\t\\t\\t},\\n\\t\\t\\tsetClearAlpha: function ( alpha ) {\\n\\n\\t\\t\\t\\tclearAlpha = alpha;\\n\\t\\t\\t\\tsetClear( clearColor, clearAlpha );\\n\\n\\t\\t\\t},\\n\\t\\t\\trender: render\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction painterSortStable( a, b ) {\\n\\n\\t\\tif ( a.renderOrder !== b.renderOrder ) {\\n\\n\\t\\t\\treturn a.renderOrder - b.renderOrder;\\n\\n\\t\\t} else if ( a.program && b.program && a.program !== b.program ) {\\n\\n\\t\\t\\treturn a.program.id - b.program.id;\\n\\n\\t\\t} else if ( a.material.id !== b.material.id ) {\\n\\n\\t\\t\\treturn a.material.id - b.material.id;\\n\\n\\t\\t} else if ( a.z !== b.z ) {\\n\\n\\t\\t\\treturn a.z - b.z;\\n\\n\\t\\t} else {\\n\\n\\t\\t\\treturn a.id - b.id;\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tfunction reversePainterSortStable( a, b ) {\\n\\n\\t\\tif ( a.renderOrder !== b.renderOrder ) {\\n\\n\\t\\t\\treturn a.renderOrder - b.renderOrder;\\n\\n\\t\\t} if ( a.z !== b.z ) {\\n\\n\\t\\t\\treturn b.z - a.z;\\n\\n\\t\\t} else {\\n\\n\\t\\t\\treturn a.id - b.id;\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tfunction WebGLRenderList() {\\n\\n\\t\\tvar renderItems = [];\\n\\t\\tvar renderItemsIndex = 0;\\n\\n\\t\\tvar opaque = [];\\n\\t\\tvar transparent = [];\\n\\n\\t\\tfunction init() {\\n\\n\\t\\t\\trenderItemsIndex = 0;\\n\\n\\t\\t\\topaque.length = 0;\\n\\t\\t\\ttransparent.length = 0;\\n\\n\\t\\t}\\n\\n\\t\\tfunction push( object, geometry, material, z, group ) {\\n\\n\\t\\t\\tvar renderItem = renderItems[ renderItemsIndex ];\\n\\n\\t\\t\\tif ( renderItem === undefined ) {\\n\\n\\t\\t\\t\\trenderItem = {\\n\\t\\t\\t\\t\\tid: object.id,\\n\\t\\t\\t\\t\\tobject: object,\\n\\t\\t\\t\\t\\tgeometry: geometry,\\n\\t\\t\\t\\t\\tmaterial: material,\\n\\t\\t\\t\\t\\tprogram: material.program,\\n\\t\\t\\t\\t\\trenderOrder: object.renderOrder,\\n\\t\\t\\t\\t\\tz: z,\\n\\t\\t\\t\\t\\tgroup: group\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\trenderItems[ renderItemsIndex ] = renderItem;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\trenderItem.id = object.id;\\n\\t\\t\\t\\trenderItem.object = object;\\n\\t\\t\\t\\trenderItem.geometry = geometry;\\n\\t\\t\\t\\trenderItem.material = material;\\n\\t\\t\\t\\trenderItem.program = material.program;\\n\\t\\t\\t\\trenderItem.renderOrder = object.renderOrder;\\n\\t\\t\\t\\trenderItem.z = z;\\n\\t\\t\\t\\trenderItem.group = group;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t( material.transparent === true ? transparent : opaque ).push( renderItem );\\n\\n\\t\\t\\trenderItemsIndex ++;\\n\\n\\t\\t}\\n\\n\\t\\tfunction sort() {\\n\\n\\t\\t\\tif ( opaque.length > 1 ) opaque.sort( painterSortStable );\\n\\t\\t\\tif ( transparent.length > 1 ) transparent.sort( reversePainterSortStable );\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\t\\t\\topaque: opaque,\\n\\t\\t\\ttransparent: transparent,\\n\\n\\t\\t\\tinit: init,\\n\\t\\t\\tpush: push,\\n\\n\\t\\t\\tsort: sort\\n\\t\\t};\\n\\n\\t}\\n\\n\\tfunction WebGLRenderLists() {\\n\\n\\t\\tvar lists = {};\\n\\n\\t\\tfunction get( scene, camera ) {\\n\\n\\t\\t\\tvar hash = scene.id + ',' + camera.id;\\n\\t\\t\\tvar list = lists[ hash ];\\n\\n\\t\\t\\tif ( list === undefined ) {\\n\\n\\t\\t\\t\\t// console.log( 'THREE.WebGLRenderLists:', hash );\\n\\n\\t\\t\\t\\tlist = new WebGLRenderList();\\n\\t\\t\\t\\tlists[ hash ] = list;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn list;\\n\\n\\t\\t}\\n\\n\\t\\tfunction dispose() {\\n\\n\\t\\t\\tlists = {};\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\t\\t\\tget: get,\\n\\t\\t\\tdispose: dispose\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction absNumericalSort( a, b ) {\\n\\n\\t\\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\\n\\n\\t}\\n\\n\\tfunction WebGLMorphtargets( gl ) {\\n\\n\\t\\tvar influencesList = {};\\n\\t\\tvar morphInfluences = new Float32Array( 8 );\\n\\n\\t\\tfunction update( object, geometry, material, program ) {\\n\\n\\t\\t\\tvar objectInfluences = object.morphTargetInfluences;\\n\\n\\t\\t\\tvar length = objectInfluences.length;\\n\\n\\t\\t\\tvar influences = influencesList[ geometry.id ];\\n\\n\\t\\t\\tif ( influences === undefined ) {\\n\\n\\t\\t\\t\\t// initialise list\\n\\n\\t\\t\\t\\tinfluences = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tinfluences[ i ] = [ i, 0 ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tinfluencesList[ geometry.id ] = influences;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar morphTargets = material.morphTargets && geometry.morphAttributes.position;\\n\\t\\t\\tvar morphNormals = material.morphNormals && geometry.morphAttributes.normal;\\n\\n\\t\\t\\t// Remove current morphAttributes\\n\\n\\t\\t\\tfor ( var i = 0; i < length; i ++ ) {\\n\\n\\t\\t\\t\\tvar influence = influences[ i ];\\n\\n\\t\\t\\t\\tif ( influence[ 1 ] !== 0 ) {\\n\\n\\t\\t\\t\\t\\tif ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i );\\n\\t\\t\\t\\t\\tif ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Collect influences\\n\\n\\t\\t\\tfor ( var i = 0; i < length; i ++ ) {\\n\\n\\t\\t\\t\\tvar influence = influences[ i ];\\n\\n\\t\\t\\t\\tinfluence[ 0 ] = i;\\n\\t\\t\\t\\tinfluence[ 1 ] = objectInfluences[ i ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tinfluences.sort( absNumericalSort );\\n\\n\\t\\t\\t// Add morphAttributes\\n\\n\\t\\t\\tfor ( var i = 0; i < 8; i ++ ) {\\n\\n\\t\\t\\t\\tvar influence = influences[ i ];\\n\\n\\t\\t\\t\\tif ( influence ) {\\n\\n\\t\\t\\t\\t\\tvar index = influence[ 0 ];\\n\\t\\t\\t\\t\\tvar value = influence[ 1 ];\\n\\n\\t\\t\\t\\t\\tif ( value ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] );\\n\\t\\t\\t\\t\\t\\tif ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] );\\n\\n\\t\\t\\t\\t\\t\\tmorphInfluences[ i ] = value;\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tmorphInfluences[ i ] = 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tupdate: update\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLIndexedBufferRenderer( gl, extensions, infoRender ) {\\n\\n\\t\\tvar mode;\\n\\n\\t\\tfunction setMode( value ) {\\n\\n\\t\\t\\tmode = value;\\n\\n\\t\\t}\\n\\n\\t\\tvar type, bytesPerElement;\\n\\n\\t\\tfunction setIndex( value ) {\\n\\n\\t\\t\\ttype = value.type;\\n\\t\\t\\tbytesPerElement = value.bytesPerElement;\\n\\n\\t\\t}\\n\\n\\t\\tfunction render( start, count ) {\\n\\n\\t\\t\\tgl.drawElements( mode, count, type, start * bytesPerElement );\\n\\n\\t\\t\\tinfoRender.calls ++;\\n\\t\\t\\tinfoRender.vertices += count;\\n\\n\\t\\t\\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\\n\\t\\t\\telse if ( mode === gl.POINTS ) infoRender.points += count;\\n\\n\\t\\t}\\n\\n\\t\\tfunction renderInstances( geometry, start, count ) {\\n\\n\\t\\t\\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\\n\\n\\t\\t\\tif ( extension === null ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\textension.drawElementsInstancedANGLE( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );\\n\\n\\t\\t\\tinfoRender.calls ++;\\n\\t\\t\\tinfoRender.vertices += count * geometry.maxInstancedCount;\\n\\n\\t\\t\\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\\n\\t\\t\\telse if ( mode === gl.POINTS ) infoRender.points += geometry.maxInstancedCount * count;\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tthis.setMode = setMode;\\n\\t\\tthis.setIndex = setIndex;\\n\\t\\tthis.render = render;\\n\\t\\tthis.renderInstances = renderInstances;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLBufferRenderer( gl, extensions, infoRender ) {\\n\\n\\t\\tvar mode;\\n\\n\\t\\tfunction setMode( value ) {\\n\\n\\t\\t\\tmode = value;\\n\\n\\t\\t}\\n\\n\\t\\tfunction render( start, count ) {\\n\\n\\t\\t\\tgl.drawArrays( mode, start, count );\\n\\n\\t\\t\\tinfoRender.calls ++;\\n\\t\\t\\tinfoRender.vertices += count;\\n\\n\\t\\t\\tif ( mode === gl.TRIANGLES ) infoRender.faces += count / 3;\\n\\t\\t\\telse if ( mode === gl.POINTS ) infoRender.points += count;\\n\\n\\t\\t}\\n\\n\\t\\tfunction renderInstances( geometry, start, count ) {\\n\\n\\t\\t\\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\\n\\n\\t\\t\\tif ( extension === null ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar position = geometry.attributes.position;\\n\\n\\t\\t\\tif ( position.isInterleavedBufferAttribute ) {\\n\\n\\t\\t\\t\\tcount = position.data.count;\\n\\n\\t\\t\\t\\textension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\textension.drawArraysInstancedANGLE( mode, start, count, geometry.maxInstancedCount );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tinfoRender.calls ++;\\n\\t\\t\\tinfoRender.vertices += count * geometry.maxInstancedCount;\\n\\n\\t\\t\\tif ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3;\\n\\t\\t\\telse if ( mode === gl.POINTS ) infoRender.points += geometry.maxInstancedCount * count;\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tthis.setMode = setMode;\\n\\t\\tthis.render = render;\\n\\t\\tthis.renderInstances = renderInstances;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLGeometries( gl, attributes, infoMemory ) {\\n\\n\\t\\tvar geometries = {};\\n\\t\\tvar wireframeAttributes = {};\\n\\n\\t\\tfunction onGeometryDispose( event ) {\\n\\n\\t\\t\\tvar geometry = event.target;\\n\\t\\t\\tvar buffergeometry = geometries[ geometry.id ];\\n\\n\\t\\t\\tif ( buffergeometry.index !== null ) {\\n\\n\\t\\t\\t\\tattributes.remove( buffergeometry.index );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var name in buffergeometry.attributes ) {\\n\\n\\t\\t\\t\\tattributes.remove( buffergeometry.attributes[ name ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\\n\\n\\t\\t\\tdelete geometries[ geometry.id ];\\n\\n\\t\\t\\t// TODO Remove duplicate code\\n\\n\\t\\t\\tvar attribute = wireframeAttributes[ geometry.id ];\\n\\n\\t\\t\\tif ( attribute ) {\\n\\n\\t\\t\\t\\tattributes.remove( attribute );\\n\\t\\t\\t\\tdelete wireframeAttributes[ geometry.id ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tattribute = wireframeAttributes[ buffergeometry.id ];\\n\\n\\t\\t\\tif ( attribute ) {\\n\\n\\t\\t\\t\\tattributes.remove( attribute );\\n\\t\\t\\t\\tdelete wireframeAttributes[ buffergeometry.id ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tinfoMemory.geometries --;\\n\\n\\t\\t}\\n\\n\\t\\tfunction get( object, geometry ) {\\n\\n\\t\\t\\tvar buffergeometry = geometries[ geometry.id ];\\n\\n\\t\\t\\tif ( buffergeometry ) return buffergeometry;\\n\\n\\t\\t\\tgeometry.addEventListener( 'dispose', onGeometryDispose );\\n\\n\\t\\t\\tif ( geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\tbuffergeometry = geometry;\\n\\n\\t\\t\\t} else if ( geometry.isGeometry ) {\\n\\n\\t\\t\\t\\tif ( geometry._bufferGeometry === undefined ) {\\n\\n\\t\\t\\t\\t\\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tbuffergeometry = geometry._bufferGeometry;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tgeometries[ geometry.id ] = buffergeometry;\\n\\n\\t\\t\\tinfoMemory.geometries ++;\\n\\n\\t\\t\\treturn buffergeometry;\\n\\n\\t\\t}\\n\\n\\t\\tfunction update( geometry ) {\\n\\n\\t\\t\\tvar index = geometry.index;\\n\\t\\t\\tvar geometryAttributes = geometry.attributes;\\n\\n\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var name in geometryAttributes ) {\\n\\n\\t\\t\\t\\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// morph targets\\n\\n\\t\\t\\tvar morphAttributes = geometry.morphAttributes;\\n\\n\\t\\t\\tfor ( var name in morphAttributes ) {\\n\\n\\t\\t\\t\\tvar array = morphAttributes[ name ];\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = array.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction getWireframeAttribute( geometry ) {\\n\\n\\t\\t\\tvar attribute = wireframeAttributes[ geometry.id ];\\n\\n\\t\\t\\tif ( attribute ) return attribute;\\n\\n\\t\\t\\tvar indices = [];\\n\\n\\t\\t\\tvar geometryIndex = geometry.index;\\n\\t\\t\\tvar geometryAttributes = geometry.attributes;\\n\\n\\t\\t\\t// console.time( 'wireframe' );\\n\\n\\t\\t\\tif ( geometryIndex !== null ) {\\n\\n\\t\\t\\t\\tvar array = geometryIndex.array;\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = array.length; i < l; i += 3 ) {\\n\\n\\t\\t\\t\\t\\tvar a = array[ i + 0 ];\\n\\t\\t\\t\\t\\tvar b = array[ i + 1 ];\\n\\t\\t\\t\\t\\tvar c = array[ i + 2 ];\\n\\n\\t\\t\\t\\t\\tindices.push( a, b, b, c, c, a );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tvar array = geometryAttributes.position.array;\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\\n\\n\\t\\t\\t\\t\\tvar a = i + 0;\\n\\t\\t\\t\\t\\tvar b = i + 1;\\n\\t\\t\\t\\t\\tvar c = i + 2;\\n\\n\\t\\t\\t\\t\\tindices.push( a, b, b, c, c, a );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// console.timeEnd( 'wireframe' );\\n\\n\\t\\t\\tattribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\\n\\n\\t\\t\\tattributes.update( attribute, gl.ELEMENT_ARRAY_BUFFER );\\n\\n\\t\\t\\twireframeAttributes[ geometry.id ] = attribute;\\n\\n\\t\\t\\treturn attribute;\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tget: get,\\n\\t\\t\\tupdate: update,\\n\\n\\t\\t\\tgetWireframeAttribute: getWireframeAttribute\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction UniformsCache() {\\n\\n\\t\\tvar lights = {};\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tget: function ( light ) {\\n\\n\\t\\t\\t\\tif ( lights[ light.id ] !== undefined ) {\\n\\n\\t\\t\\t\\t\\treturn lights[ light.id ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar uniforms;\\n\\n\\t\\t\\t\\tswitch ( light.type ) {\\n\\n\\t\\t\\t\\t\\tcase 'DirectionalLight':\\n\\t\\t\\t\\t\\t\\tuniforms = {\\n\\t\\t\\t\\t\\t\\t\\tdirection: new Vector3(),\\n\\t\\t\\t\\t\\t\\t\\tcolor: new Color(),\\n\\n\\t\\t\\t\\t\\t\\t\\tshadow: false,\\n\\t\\t\\t\\t\\t\\t\\tshadowBias: 0,\\n\\t\\t\\t\\t\\t\\t\\tshadowRadius: 1,\\n\\t\\t\\t\\t\\t\\t\\tshadowMapSize: new Vector2()\\n\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'SpotLight':\\n\\t\\t\\t\\t\\t\\tuniforms = {\\n\\t\\t\\t\\t\\t\\t\\tposition: new Vector3(),\\n\\t\\t\\t\\t\\t\\t\\tdirection: new Vector3(),\\n\\t\\t\\t\\t\\t\\t\\tcolor: new Color(),\\n\\t\\t\\t\\t\\t\\t\\tdistance: 0,\\n\\t\\t\\t\\t\\t\\t\\tconeCos: 0,\\n\\t\\t\\t\\t\\t\\t\\tpenumbraCos: 0,\\n\\t\\t\\t\\t\\t\\t\\tdecay: 0,\\n\\n\\t\\t\\t\\t\\t\\t\\tshadow: false,\\n\\t\\t\\t\\t\\t\\t\\tshadowBias: 0,\\n\\t\\t\\t\\t\\t\\t\\tshadowRadius: 1,\\n\\t\\t\\t\\t\\t\\t\\tshadowMapSize: new Vector2()\\n\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'PointLight':\\n\\t\\t\\t\\t\\t\\tuniforms = {\\n\\t\\t\\t\\t\\t\\t\\tposition: new Vector3(),\\n\\t\\t\\t\\t\\t\\t\\tcolor: new Color(),\\n\\t\\t\\t\\t\\t\\t\\tdistance: 0,\\n\\t\\t\\t\\t\\t\\t\\tdecay: 0,\\n\\n\\t\\t\\t\\t\\t\\t\\tshadow: false,\\n\\t\\t\\t\\t\\t\\t\\tshadowBias: 0,\\n\\t\\t\\t\\t\\t\\t\\tshadowRadius: 1,\\n\\t\\t\\t\\t\\t\\t\\tshadowMapSize: new Vector2(),\\n\\t\\t\\t\\t\\t\\t\\tshadowCameraNear: 1,\\n\\t\\t\\t\\t\\t\\t\\tshadowCameraFar: 1000\\n\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'HemisphereLight':\\n\\t\\t\\t\\t\\t\\tuniforms = {\\n\\t\\t\\t\\t\\t\\t\\tdirection: new Vector3(),\\n\\t\\t\\t\\t\\t\\t\\tskyColor: new Color(),\\n\\t\\t\\t\\t\\t\\t\\tgroundColor: new Color()\\n\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'RectAreaLight':\\n\\t\\t\\t\\t\\t\\tuniforms = {\\n\\t\\t\\t\\t\\t\\t\\tcolor: new Color(),\\n\\t\\t\\t\\t\\t\\t\\tposition: new Vector3(),\\n\\t\\t\\t\\t\\t\\t\\thalfWidth: new Vector3(),\\n\\t\\t\\t\\t\\t\\t\\thalfHeight: new Vector3()\\n\\t\\t\\t\\t\\t\\t\\t// TODO (abelnation): set RectAreaLight shadow uniforms\\n\\t\\t\\t\\t\\t\\t};\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tlights[ light.id ] = uniforms;\\n\\n\\t\\t\\t\\treturn uniforms;\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\tfunction WebGLLights() {\\n\\n\\t\\tvar cache = new UniformsCache();\\n\\n\\t\\tvar state = {\\n\\n\\t\\t\\thash: '',\\n\\n\\t\\t\\tambient: [ 0, 0, 0 ],\\n\\t\\t\\tdirectional: [],\\n\\t\\t\\tdirectionalShadowMap: [],\\n\\t\\t\\tdirectionalShadowMatrix: [],\\n\\t\\t\\tspot: [],\\n\\t\\t\\tspotShadowMap: [],\\n\\t\\t\\tspotShadowMatrix: [],\\n\\t\\t\\trectArea: [],\\n\\t\\t\\tpoint: [],\\n\\t\\t\\tpointShadowMap: [],\\n\\t\\t\\tpointShadowMatrix: [],\\n\\t\\t\\themi: []\\n\\n\\t\\t};\\n\\n\\t\\tvar vector3 = new Vector3();\\n\\t\\tvar matrix4 = new Matrix4();\\n\\t\\tvar matrix42 = new Matrix4();\\n\\n\\t\\tfunction setup( lights, shadows, camera ) {\\n\\n\\t\\t\\tvar r = 0, g = 0, b = 0;\\n\\n\\t\\t\\tvar directionalLength = 0;\\n\\t\\t\\tvar pointLength = 0;\\n\\t\\t\\tvar spotLength = 0;\\n\\t\\t\\tvar rectAreaLength = 0;\\n\\t\\t\\tvar hemiLength = 0;\\n\\n\\t\\t\\tvar viewMatrix = camera.matrixWorldInverse;\\n\\n\\t\\t\\tfor ( var i = 0, l = lights.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar light = lights[ i ];\\n\\n\\t\\t\\t\\tvar color = light.color;\\n\\t\\t\\t\\tvar intensity = light.intensity;\\n\\t\\t\\t\\tvar distance = light.distance;\\n\\n\\t\\t\\t\\tvar shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\\n\\n\\t\\t\\t\\tif ( light.isAmbientLight ) {\\n\\n\\t\\t\\t\\t\\tr += color.r * intensity;\\n\\t\\t\\t\\t\\tg += color.g * intensity;\\n\\t\\t\\t\\t\\tb += color.b * intensity;\\n\\n\\t\\t\\t\\t} else if ( light.isDirectionalLight ) {\\n\\n\\t\\t\\t\\t\\tvar uniforms = cache.get( light );\\n\\n\\t\\t\\t\\t\\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\\n\\t\\t\\t\\t\\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\\n\\t\\t\\t\\t\\tvector3.setFromMatrixPosition( light.target.matrixWorld );\\n\\t\\t\\t\\t\\tuniforms.direction.sub( vector3 );\\n\\t\\t\\t\\t\\tuniforms.direction.transformDirection( viewMatrix );\\n\\n\\t\\t\\t\\t\\tuniforms.shadow = light.castShadow;\\n\\n\\t\\t\\t\\t\\tif ( light.castShadow ) {\\n\\n\\t\\t\\t\\t\\t\\tvar shadow = light.shadow;\\n\\n\\t\\t\\t\\t\\t\\tuniforms.shadowBias = shadow.bias;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowRadius = shadow.radius;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowMapSize = shadow.mapSize;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\\n\\t\\t\\t\\t\\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\\n\\t\\t\\t\\t\\tstate.directional[ directionalLength ] = uniforms;\\n\\n\\t\\t\\t\\t\\tdirectionalLength ++;\\n\\n\\t\\t\\t\\t} else if ( light.isSpotLight ) {\\n\\n\\t\\t\\t\\t\\tvar uniforms = cache.get( light );\\n\\n\\t\\t\\t\\t\\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\\n\\t\\t\\t\\t\\tuniforms.position.applyMatrix4( viewMatrix );\\n\\n\\t\\t\\t\\t\\tuniforms.color.copy( color ).multiplyScalar( intensity );\\n\\t\\t\\t\\t\\tuniforms.distance = distance;\\n\\n\\t\\t\\t\\t\\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\\n\\t\\t\\t\\t\\tvector3.setFromMatrixPosition( light.target.matrixWorld );\\n\\t\\t\\t\\t\\tuniforms.direction.sub( vector3 );\\n\\t\\t\\t\\t\\tuniforms.direction.transformDirection( viewMatrix );\\n\\n\\t\\t\\t\\t\\tuniforms.coneCos = Math.cos( light.angle );\\n\\t\\t\\t\\t\\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\\n\\t\\t\\t\\t\\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\\n\\n\\t\\t\\t\\t\\tuniforms.shadow = light.castShadow;\\n\\n\\t\\t\\t\\t\\tif ( light.castShadow ) {\\n\\n\\t\\t\\t\\t\\t\\tvar shadow = light.shadow;\\n\\n\\t\\t\\t\\t\\t\\tuniforms.shadowBias = shadow.bias;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowRadius = shadow.radius;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowMapSize = shadow.mapSize;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tstate.spotShadowMap[ spotLength ] = shadowMap;\\n\\t\\t\\t\\t\\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\\n\\t\\t\\t\\t\\tstate.spot[ spotLength ] = uniforms;\\n\\n\\t\\t\\t\\t\\tspotLength ++;\\n\\n\\t\\t\\t\\t} else if ( light.isRectAreaLight ) {\\n\\n\\t\\t\\t\\t\\tvar uniforms = cache.get( light );\\n\\n\\t\\t\\t\\t\\t// (a) intensity controls irradiance of entire light\\n\\t\\t\\t\\t\\tuniforms.color\\n\\t\\t\\t\\t\\t\\t.copy( color )\\n\\t\\t\\t\\t\\t\\t.multiplyScalar( intensity / ( light.width * light.height ) );\\n\\n\\t\\t\\t\\t\\t// (b) intensity controls the radiance per light area\\n\\t\\t\\t\\t\\t// uniforms.color.copy( color ).multiplyScalar( intensity );\\n\\n\\t\\t\\t\\t\\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\\n\\t\\t\\t\\t\\tuniforms.position.applyMatrix4( viewMatrix );\\n\\n\\t\\t\\t\\t\\t// extract local rotation of light to derive width/height half vectors\\n\\t\\t\\t\\t\\tmatrix42.identity();\\n\\t\\t\\t\\t\\tmatrix4.copy( light.matrixWorld );\\n\\t\\t\\t\\t\\tmatrix4.premultiply( viewMatrix );\\n\\t\\t\\t\\t\\tmatrix42.extractRotation( matrix4 );\\n\\n\\t\\t\\t\\t\\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\\n\\t\\t\\t\\t\\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\\n\\n\\t\\t\\t\\t\\tuniforms.halfWidth.applyMatrix4( matrix42 );\\n\\t\\t\\t\\t\\tuniforms.halfHeight.applyMatrix4( matrix42 );\\n\\n\\t\\t\\t\\t\\t// TODO (abelnation): RectAreaLight distance?\\n\\t\\t\\t\\t\\t// uniforms.distance = distance;\\n\\n\\t\\t\\t\\t\\tstate.rectArea[ rectAreaLength ] = uniforms;\\n\\n\\t\\t\\t\\t\\trectAreaLength ++;\\n\\n\\t\\t\\t\\t} else if ( light.isPointLight ) {\\n\\n\\t\\t\\t\\t\\tvar uniforms = cache.get( light );\\n\\n\\t\\t\\t\\t\\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\\n\\t\\t\\t\\t\\tuniforms.position.applyMatrix4( viewMatrix );\\n\\n\\t\\t\\t\\t\\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\\n\\t\\t\\t\\t\\tuniforms.distance = light.distance;\\n\\t\\t\\t\\t\\tuniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;\\n\\n\\t\\t\\t\\t\\tuniforms.shadow = light.castShadow;\\n\\n\\t\\t\\t\\t\\tif ( light.castShadow ) {\\n\\n\\t\\t\\t\\t\\t\\tvar shadow = light.shadow;\\n\\n\\t\\t\\t\\t\\t\\tuniforms.shadowBias = shadow.bias;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowRadius = shadow.radius;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowMapSize = shadow.mapSize;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowCameraNear = shadow.camera.near;\\n\\t\\t\\t\\t\\t\\tuniforms.shadowCameraFar = shadow.camera.far;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tstate.pointShadowMap[ pointLength ] = shadowMap;\\n\\t\\t\\t\\t\\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\\n\\t\\t\\t\\t\\tstate.point[ pointLength ] = uniforms;\\n\\n\\t\\t\\t\\t\\tpointLength ++;\\n\\n\\t\\t\\t\\t} else if ( light.isHemisphereLight ) {\\n\\n\\t\\t\\t\\t\\tvar uniforms = cache.get( light );\\n\\n\\t\\t\\t\\t\\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\\n\\t\\t\\t\\t\\tuniforms.direction.transformDirection( viewMatrix );\\n\\t\\t\\t\\t\\tuniforms.direction.normalize();\\n\\n\\t\\t\\t\\t\\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\\n\\t\\t\\t\\t\\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\\n\\n\\t\\t\\t\\t\\tstate.hemi[ hemiLength ] = uniforms;\\n\\n\\t\\t\\t\\t\\themiLength ++;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.ambient[ 0 ] = r;\\n\\t\\t\\tstate.ambient[ 1 ] = g;\\n\\t\\t\\tstate.ambient[ 2 ] = b;\\n\\n\\t\\t\\tstate.directional.length = directionalLength;\\n\\t\\t\\tstate.spot.length = spotLength;\\n\\t\\t\\tstate.rectArea.length = rectAreaLength;\\n\\t\\t\\tstate.point.length = pointLength;\\n\\t\\t\\tstate.hemi.length = hemiLength;\\n\\n\\t\\t\\t// TODO (sam-g-steel) why aren't we using join\\n\\t\\t\\tstate.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + rectAreaLength + ',' + hemiLength + ',' + shadows.length;\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\t\\t\\tsetup: setup,\\n\\t\\t\\tstate: state\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLObjects( geometries, infoRender ) {\\n\\n\\t\\tvar updateList = {};\\n\\n\\t\\tfunction update( object ) {\\n\\n\\t\\t\\tvar frame = infoRender.frame;\\n\\n\\t\\t\\tvar geometry = object.geometry;\\n\\t\\t\\tvar buffergeometry = geometries.get( object, geometry );\\n\\n\\t\\t\\t// Update once per frame\\n\\n\\t\\t\\tif ( updateList[ buffergeometry.id ] !== frame ) {\\n\\n\\t\\t\\t\\tif ( geometry.isGeometry ) {\\n\\n\\t\\t\\t\\t\\tbuffergeometry.updateFromObject( object );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometries.update( buffergeometry );\\n\\n\\t\\t\\t\\tupdateList[ buffergeometry.id ] = frame;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn buffergeometry;\\n\\n\\t\\t}\\n\\n\\t\\tfunction clear() {\\n\\n\\t\\t\\tupdateList = {};\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tupdate: update,\\n\\t\\t\\tclear: clear\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction addLineNumbers( string ) {\\n\\n\\t\\tvar lines = string.split( '\\\\n' );\\n\\n\\t\\tfor ( var i = 0; i < lines.length; i ++ ) {\\n\\n\\t\\t\\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\\n\\n\\t\\t}\\n\\n\\t\\treturn lines.join( '\\\\n' );\\n\\n\\t}\\n\\n\\tfunction WebGLShader( gl, type, string ) {\\n\\n\\t\\tvar shader = gl.createShader( type );\\n\\n\\t\\tgl.shaderSource( shader, string );\\n\\t\\tgl.compileShader( shader );\\n\\n\\t\\tif ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.WebGLShader: Shader couldn\\\\'t compile.' );\\n\\n\\t\\t}\\n\\n\\t\\tif ( gl.getShaderInfoLog( shader ) !== '' ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) );\\n\\n\\t\\t}\\n\\n\\t\\t// --enable-privileged-webgl-extension\\n\\t\\t// console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\\n\\n\\t\\treturn shader;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tvar programIdCount = 0;\\n\\n\\tfunction getEncodingComponents( encoding ) {\\n\\n\\t\\tswitch ( encoding ) {\\n\\n\\t\\t\\tcase LinearEncoding:\\n\\t\\t\\t\\treturn [ 'Linear', '( value )' ];\\n\\t\\t\\tcase sRGBEncoding:\\n\\t\\t\\t\\treturn [ 'sRGB', '( value )' ];\\n\\t\\t\\tcase RGBEEncoding:\\n\\t\\t\\t\\treturn [ 'RGBE', '( value )' ];\\n\\t\\t\\tcase RGBM7Encoding:\\n\\t\\t\\t\\treturn [ 'RGBM', '( value, 7.0 )' ];\\n\\t\\t\\tcase RGBM16Encoding:\\n\\t\\t\\t\\treturn [ 'RGBM', '( value, 16.0 )' ];\\n\\t\\t\\tcase RGBDEncoding:\\n\\t\\t\\t\\treturn [ 'RGBD', '( value, 256.0 )' ];\\n\\t\\t\\tcase GammaEncoding:\\n\\t\\t\\t\\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\\n\\t\\t\\tdefault:\\n\\t\\t\\t\\tthrow new Error( 'unsupported encoding: ' + encoding );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tfunction getTexelDecodingFunction( functionName, encoding ) {\\n\\n\\t\\tvar components = getEncodingComponents( encoding );\\n\\t\\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\\n\\n\\t}\\n\\n\\tfunction getTexelEncodingFunction( functionName, encoding ) {\\n\\n\\t\\tvar components = getEncodingComponents( encoding );\\n\\t\\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\\n\\n\\t}\\n\\n\\tfunction getToneMappingFunction( functionName, toneMapping ) {\\n\\n\\t\\tvar toneMappingName;\\n\\n\\t\\tswitch ( toneMapping ) {\\n\\n\\t\\t\\tcase LinearToneMapping:\\n\\t\\t\\t\\ttoneMappingName = 'Linear';\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\tcase ReinhardToneMapping:\\n\\t\\t\\t\\ttoneMappingName = 'Reinhard';\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\tcase Uncharted2ToneMapping:\\n\\t\\t\\t\\ttoneMappingName = 'Uncharted2';\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\tcase CineonToneMapping:\\n\\t\\t\\t\\ttoneMappingName = 'OptimizedCineon';\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\tdefault:\\n\\t\\t\\t\\tthrow new Error( 'unsupported toneMapping: ' + toneMapping );\\n\\n\\t\\t}\\n\\n\\t\\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\\n\\n\\t}\\n\\n\\tfunction generateExtensions( extensions, parameters, rendererExtensions ) {\\n\\n\\t\\textensions = extensions || {};\\n\\n\\t\\tvar chunks = [\\n\\t\\t\\t( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '',\\n\\t\\t\\t( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '',\\n\\t\\t\\t( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '',\\n\\t\\t\\t( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : ''\\n\\t\\t];\\n\\n\\t\\treturn chunks.filter( filterEmptyLine ).join( '\\\\n' );\\n\\n\\t}\\n\\n\\tfunction generateDefines( defines ) {\\n\\n\\t\\tvar chunks = [];\\n\\n\\t\\tfor ( var name in defines ) {\\n\\n\\t\\t\\tvar value = defines[ name ];\\n\\n\\t\\t\\tif ( value === false ) continue;\\n\\n\\t\\t\\tchunks.push( '#define ' + name + ' ' + value );\\n\\n\\t\\t}\\n\\n\\t\\treturn chunks.join( '\\\\n' );\\n\\n\\t}\\n\\n\\tfunction fetchAttributeLocations( gl, program ) {\\n\\n\\t\\tvar attributes = {};\\n\\n\\t\\tvar n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\\n\\n\\t\\tfor ( var i = 0; i < n; i ++ ) {\\n\\n\\t\\t\\tvar info = gl.getActiveAttrib( program, i );\\n\\t\\t\\tvar name = info.name;\\n\\n\\t\\t\\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\\n\\n\\t\\t\\tattributes[ name ] = gl.getAttribLocation( program, name );\\n\\n\\t\\t}\\n\\n\\t\\treturn attributes;\\n\\n\\t}\\n\\n\\tfunction filterEmptyLine( string ) {\\n\\n\\t\\treturn string !== '';\\n\\n\\t}\\n\\n\\tfunction replaceLightNums( string, parameters ) {\\n\\n\\t\\treturn string\\n\\t\\t\\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\\n\\t\\t\\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\\n\\t\\t\\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\\n\\t\\t\\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\\n\\t\\t\\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights );\\n\\n\\t}\\n\\n\\tfunction parseIncludes( string ) {\\n\\n\\t\\tvar pattern = /^[ \\\\t]*#include +<([\\\\w\\\\d.]+)>/gm;\\n\\n\\t\\tfunction replace( match, include ) {\\n\\n\\t\\t\\tvar replace = ShaderChunk[ include ];\\n\\n\\t\\t\\tif ( replace === undefined ) {\\n\\n\\t\\t\\t\\tthrow new Error( 'Can not resolve #include <' + include + '>' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn parseIncludes( replace );\\n\\n\\t\\t}\\n\\n\\t\\treturn string.replace( pattern, replace );\\n\\n\\t}\\n\\n\\tfunction unrollLoops( string ) {\\n\\n\\t\\tvar pattern = /for \\\\( int i \\\\= (\\\\d+)\\\\; i < (\\\\d+)\\\\; i \\\\+\\\\+ \\\\) \\\\{([\\\\s\\\\S]+?)(?=\\\\})\\\\}/g;\\n\\n\\t\\tfunction replace( match, start, end, snippet ) {\\n\\n\\t\\t\\tvar unroll = '';\\n\\n\\t\\t\\tfor ( var i = parseInt( start ); i < parseInt( end ); i ++ ) {\\n\\n\\t\\t\\t\\tunroll += snippet.replace( /\\\\[ i \\\\]/g, '[ ' + i + ' ]' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn unroll;\\n\\n\\t\\t}\\n\\n\\t\\treturn string.replace( pattern, replace );\\n\\n\\t}\\n\\n\\tfunction WebGLProgram( renderer, extensions, code, material, shader, parameters ) {\\n\\n\\t\\tvar gl = renderer.context;\\n\\n\\t\\tvar defines = material.defines;\\n\\n\\t\\tvar vertexShader = shader.vertexShader;\\n\\t\\tvar fragmentShader = shader.fragmentShader;\\n\\n\\t\\tvar shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\\n\\n\\t\\tif ( parameters.shadowMapType === PCFShadowMap ) {\\n\\n\\t\\t\\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\\n\\n\\t\\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\\n\\n\\t\\t\\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\\n\\n\\t\\t}\\n\\n\\t\\tvar envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\\n\\t\\tvar envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\\n\\t\\tvar envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\\n\\n\\t\\tif ( parameters.envMap ) {\\n\\n\\t\\t\\tswitch ( material.envMap.mapping ) {\\n\\n\\t\\t\\t\\tcase CubeReflectionMapping:\\n\\t\\t\\t\\tcase CubeRefractionMapping:\\n\\t\\t\\t\\t\\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase CubeUVReflectionMapping:\\n\\t\\t\\t\\tcase CubeUVRefractionMapping:\\n\\t\\t\\t\\t\\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase EquirectangularReflectionMapping:\\n\\t\\t\\t\\tcase EquirectangularRefractionMapping:\\n\\t\\t\\t\\t\\tenvMapTypeDefine = 'ENVMAP_TYPE_EQUIREC';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase SphericalReflectionMapping:\\n\\t\\t\\t\\t\\tenvMapTypeDefine = 'ENVMAP_TYPE_SPHERE';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tswitch ( material.envMap.mapping ) {\\n\\n\\t\\t\\t\\tcase CubeRefractionMapping:\\n\\t\\t\\t\\tcase EquirectangularRefractionMapping:\\n\\t\\t\\t\\t\\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tswitch ( material.combine ) {\\n\\n\\t\\t\\t\\tcase MultiplyOperation:\\n\\t\\t\\t\\t\\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase MixOperation:\\n\\t\\t\\t\\t\\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase AddOperation:\\n\\t\\t\\t\\t\\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tvar gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\\n\\n\\t\\t// console.log( 'building new program ' );\\n\\n\\t\\t//\\n\\n\\t\\tvar customExtensions = generateExtensions( material.extensions, parameters, extensions );\\n\\n\\t\\tvar customDefines = generateDefines( defines );\\n\\n\\t\\t//\\n\\n\\t\\tvar program = gl.createProgram();\\n\\n\\t\\tvar prefixVertex, prefixFragment;\\n\\n\\t\\tif ( material.isRawShaderMaterial ) {\\n\\n\\t\\t\\tprefixVertex = [\\n\\n\\t\\t\\t\\tcustomDefines\\n\\n\\t\\t\\t].filter( filterEmptyLine ).join( '\\\\n' );\\n\\n\\t\\t\\tif ( prefixVertex.length > 0 ) {\\n\\n\\t\\t\\t\\tprefixVertex += '\\\\n';\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tprefixFragment = [\\n\\n\\t\\t\\t\\tcustomExtensions,\\n\\t\\t\\t\\tcustomDefines\\n\\n\\t\\t\\t].filter( filterEmptyLine ).join( '\\\\n' );\\n\\n\\t\\t\\tif ( prefixFragment.length > 0 ) {\\n\\n\\t\\t\\t\\tprefixFragment += '\\\\n';\\n\\n\\t\\t\\t}\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tprefixVertex = [\\n\\n\\t\\t\\t\\t'precision ' + parameters.precision + ' float;',\\n\\t\\t\\t\\t'precision ' + parameters.precision + ' int;',\\n\\n\\t\\t\\t\\t'#define SHADER_NAME ' + shader.name,\\n\\n\\t\\t\\t\\tcustomDefines,\\n\\n\\t\\t\\t\\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\\n\\n\\t\\t\\t\\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\\n\\n\\t\\t\\t\\t'#define MAX_BONES ' + parameters.maxBones,\\n\\t\\t\\t\\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\\n\\t\\t\\t\\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\\n\\n\\t\\t\\t\\tparameters.map ? '#define USE_MAP' : '',\\n\\t\\t\\t\\tparameters.envMap ? '#define USE_ENVMAP' : '',\\n\\t\\t\\t\\tparameters.envMap ? '#define ' + envMapModeDefine : '',\\n\\t\\t\\t\\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\\n\\t\\t\\t\\tparameters.aoMap ? '#define USE_AOMAP' : '',\\n\\t\\t\\t\\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\\n\\t\\t\\t\\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\\n\\t\\t\\t\\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\\n\\t\\t\\t\\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\\n\\t\\t\\t\\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\\n\\t\\t\\t\\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\\n\\t\\t\\t\\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\\n\\t\\t\\t\\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\\n\\t\\t\\t\\tparameters.vertexColors ? '#define USE_COLOR' : '',\\n\\n\\t\\t\\t\\tparameters.flatShading ? '#define FLAT_SHADED' : '',\\n\\n\\t\\t\\t\\tparameters.skinning ? '#define USE_SKINNING' : '',\\n\\t\\t\\t\\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\\n\\n\\t\\t\\t\\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\\n\\t\\t\\t\\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\\n\\t\\t\\t\\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\\n\\t\\t\\t\\tparameters.flipSided ? '#define FLIP_SIDED' : '',\\n\\n\\t\\t\\t\\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\\n\\n\\t\\t\\t\\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\\n\\t\\t\\t\\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\\n\\n\\t\\t\\t\\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\\n\\n\\t\\t\\t\\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\\n\\t\\t\\t\\tparameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\\n\\n\\t\\t\\t\\t'uniform mat4 modelMatrix;',\\n\\t\\t\\t\\t'uniform mat4 modelViewMatrix;',\\n\\t\\t\\t\\t'uniform mat4 projectionMatrix;',\\n\\t\\t\\t\\t'uniform mat4 viewMatrix;',\\n\\t\\t\\t\\t'uniform mat3 normalMatrix;',\\n\\t\\t\\t\\t'uniform vec3 cameraPosition;',\\n\\n\\t\\t\\t\\t'attribute vec3 position;',\\n\\t\\t\\t\\t'attribute vec3 normal;',\\n\\t\\t\\t\\t'attribute vec2 uv;',\\n\\n\\t\\t\\t\\t'#ifdef USE_COLOR',\\n\\n\\t\\t\\t\\t'\\tattribute vec3 color;',\\n\\n\\t\\t\\t\\t'#endif',\\n\\n\\t\\t\\t\\t'#ifdef USE_MORPHTARGETS',\\n\\n\\t\\t\\t\\t'\\tattribute vec3 morphTarget0;',\\n\\t\\t\\t\\t'\\tattribute vec3 morphTarget1;',\\n\\t\\t\\t\\t'\\tattribute vec3 morphTarget2;',\\n\\t\\t\\t\\t'\\tattribute vec3 morphTarget3;',\\n\\n\\t\\t\\t\\t'\\t#ifdef USE_MORPHNORMALS',\\n\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphNormal0;',\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphNormal1;',\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphNormal2;',\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphNormal3;',\\n\\n\\t\\t\\t\\t'\\t#else',\\n\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphTarget4;',\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphTarget5;',\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphTarget6;',\\n\\t\\t\\t\\t'\\t\\tattribute vec3 morphTarget7;',\\n\\n\\t\\t\\t\\t'\\t#endif',\\n\\n\\t\\t\\t\\t'#endif',\\n\\n\\t\\t\\t\\t'#ifdef USE_SKINNING',\\n\\n\\t\\t\\t\\t'\\tattribute vec4 skinIndex;',\\n\\t\\t\\t\\t'\\tattribute vec4 skinWeight;',\\n\\n\\t\\t\\t\\t'#endif',\\n\\n\\t\\t\\t\\t'\\\\n'\\n\\n\\t\\t\\t].filter( filterEmptyLine ).join( '\\\\n' );\\n\\n\\t\\t\\tprefixFragment = [\\n\\n\\t\\t\\t\\tcustomExtensions,\\n\\n\\t\\t\\t\\t'precision ' + parameters.precision + ' float;',\\n\\t\\t\\t\\t'precision ' + parameters.precision + ' int;',\\n\\n\\t\\t\\t\\t'#define SHADER_NAME ' + shader.name,\\n\\n\\t\\t\\t\\tcustomDefines,\\n\\n\\t\\t\\t\\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '',\\n\\n\\t\\t\\t\\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\\n\\n\\t\\t\\t\\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\\n\\t\\t\\t\\t( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '',\\n\\n\\t\\t\\t\\tparameters.map ? '#define USE_MAP' : '',\\n\\t\\t\\t\\tparameters.envMap ? '#define USE_ENVMAP' : '',\\n\\t\\t\\t\\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\\n\\t\\t\\t\\tparameters.envMap ? '#define ' + envMapModeDefine : '',\\n\\t\\t\\t\\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\\n\\t\\t\\t\\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\\n\\t\\t\\t\\tparameters.aoMap ? '#define USE_AOMAP' : '',\\n\\t\\t\\t\\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\\n\\t\\t\\t\\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\\n\\t\\t\\t\\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\\n\\t\\t\\t\\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\\n\\t\\t\\t\\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\\n\\t\\t\\t\\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\\n\\t\\t\\t\\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\\n\\t\\t\\t\\tparameters.vertexColors ? '#define USE_COLOR' : '',\\n\\n\\t\\t\\t\\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\\n\\n\\t\\t\\t\\tparameters.flatShading ? '#define FLAT_SHADED' : '',\\n\\n\\t\\t\\t\\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\\n\\t\\t\\t\\tparameters.flipSided ? '#define FLIP_SIDED' : '',\\n\\n\\t\\t\\t\\t'#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes,\\n\\t\\t\\t\\t'#define UNION_CLIPPING_PLANES ' + ( parameters.numClippingPlanes - parameters.numClipIntersection ),\\n\\n\\t\\t\\t\\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\\n\\t\\t\\t\\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\\n\\n\\t\\t\\t\\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\\n\\n\\t\\t\\t\\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\\n\\n\\t\\t\\t\\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\\n\\t\\t\\t\\tparameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\\n\\n\\t\\t\\t\\tparameters.envMap && extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '',\\n\\n\\t\\t\\t\\t'uniform mat4 viewMatrix;',\\n\\t\\t\\t\\t'uniform vec3 cameraPosition;',\\n\\n\\t\\t\\t\\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\\n\\t\\t\\t\\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\\n\\t\\t\\t\\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\\n\\n\\t\\t\\t\\tparameters.dithering ? '#define DITHERING' : '',\\n\\n\\t\\t\\t\\t( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below\\n\\t\\t\\t\\tparameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\\n\\t\\t\\t\\tparameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\\n\\t\\t\\t\\tparameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\\n\\t\\t\\t\\tparameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '',\\n\\n\\t\\t\\t\\tparameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '',\\n\\n\\t\\t\\t\\t'\\\\n'\\n\\n\\t\\t\\t].filter( filterEmptyLine ).join( '\\\\n' );\\n\\n\\t\\t}\\n\\n\\t\\tvertexShader = parseIncludes( vertexShader );\\n\\t\\tvertexShader = replaceLightNums( vertexShader, parameters );\\n\\n\\t\\tfragmentShader = parseIncludes( fragmentShader );\\n\\t\\tfragmentShader = replaceLightNums( fragmentShader, parameters );\\n\\n\\t\\tif ( ! material.isShaderMaterial ) {\\n\\n\\t\\t\\tvertexShader = unrollLoops( vertexShader );\\n\\t\\t\\tfragmentShader = unrollLoops( fragmentShader );\\n\\n\\t\\t}\\n\\n\\t\\tvar vertexGlsl = prefixVertex + vertexShader;\\n\\t\\tvar fragmentGlsl = prefixFragment + fragmentShader;\\n\\n\\t\\t// console.log( '*VERTEX*', vertexGlsl );\\n\\t\\t// console.log( '*FRAGMENT*', fragmentGlsl );\\n\\n\\t\\tvar glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\\n\\t\\tvar glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\\n\\n\\t\\tgl.attachShader( program, glVertexShader );\\n\\t\\tgl.attachShader( program, glFragmentShader );\\n\\n\\t\\t// Force a particular attribute to index 0.\\n\\n\\t\\tif ( material.index0AttributeName !== undefined ) {\\n\\n\\t\\t\\tgl.bindAttribLocation( program, 0, material.index0AttributeName );\\n\\n\\t\\t} else if ( parameters.morphTargets === true ) {\\n\\n\\t\\t\\t// programs with morphTargets displace position out of attribute 0\\n\\t\\t\\tgl.bindAttribLocation( program, 0, 'position' );\\n\\n\\t\\t}\\n\\n\\t\\tgl.linkProgram( program );\\n\\n\\t\\tvar programLog = gl.getProgramInfoLog( program );\\n\\t\\tvar vertexLog = gl.getShaderInfoLog( glVertexShader );\\n\\t\\tvar fragmentLog = gl.getShaderInfoLog( glFragmentShader );\\n\\n\\t\\tvar runnable = true;\\n\\t\\tvar haveDiagnostics = true;\\n\\n\\t\\t// console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) );\\n\\t\\t// console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) );\\n\\n\\t\\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\\n\\n\\t\\t\\trunnable = false;\\n\\n\\t\\t\\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog );\\n\\n\\t\\t} else if ( programLog !== '' ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\\n\\n\\t\\t} else if ( vertexLog === '' || fragmentLog === '' ) {\\n\\n\\t\\t\\thaveDiagnostics = false;\\n\\n\\t\\t}\\n\\n\\t\\tif ( haveDiagnostics ) {\\n\\n\\t\\t\\tthis.diagnostics = {\\n\\n\\t\\t\\t\\trunnable: runnable,\\n\\t\\t\\t\\tmaterial: material,\\n\\n\\t\\t\\t\\tprogramLog: programLog,\\n\\n\\t\\t\\t\\tvertexShader: {\\n\\n\\t\\t\\t\\t\\tlog: vertexLog,\\n\\t\\t\\t\\t\\tprefix: prefixVertex\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfragmentShader: {\\n\\n\\t\\t\\t\\t\\tlog: fragmentLog,\\n\\t\\t\\t\\t\\tprefix: prefixFragment\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}\\n\\n\\t\\t// clean up\\n\\n\\t\\tgl.deleteShader( glVertexShader );\\n\\t\\tgl.deleteShader( glFragmentShader );\\n\\n\\t\\t// set up caching for uniform locations\\n\\n\\t\\tvar cachedUniforms;\\n\\n\\t\\tthis.getUniforms = function () {\\n\\n\\t\\t\\tif ( cachedUniforms === undefined ) {\\n\\n\\t\\t\\t\\tcachedUniforms = new WebGLUniforms( gl, program, renderer );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn cachedUniforms;\\n\\n\\t\\t};\\n\\n\\t\\t// set up caching for attribute locations\\n\\n\\t\\tvar cachedAttributes;\\n\\n\\t\\tthis.getAttributes = function () {\\n\\n\\t\\t\\tif ( cachedAttributes === undefined ) {\\n\\n\\t\\t\\t\\tcachedAttributes = fetchAttributeLocations( gl, program );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn cachedAttributes;\\n\\n\\t\\t};\\n\\n\\t\\t// free resource\\n\\n\\t\\tthis.destroy = function () {\\n\\n\\t\\t\\tgl.deleteProgram( program );\\n\\t\\t\\tthis.program = undefined;\\n\\n\\t\\t};\\n\\n\\t\\t// DEPRECATED\\n\\n\\t\\tObject.defineProperties( this, {\\n\\n\\t\\t\\tuniforms: {\\n\\t\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' );\\n\\t\\t\\t\\t\\treturn this.getUniforms();\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\n\\t\\t\\tattributes: {\\n\\t\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' );\\n\\t\\t\\t\\t\\treturn this.getAttributes();\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t} );\\n\\n\\n\\t\\t//\\n\\n\\t\\tthis.id = programIdCount ++;\\n\\t\\tthis.code = code;\\n\\t\\tthis.usedTimes = 1;\\n\\t\\tthis.program = program;\\n\\t\\tthis.vertexShader = glVertexShader;\\n\\t\\tthis.fragmentShader = glFragmentShader;\\n\\n\\t\\treturn this;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLPrograms( renderer, extensions, capabilities ) {\\n\\n\\t\\tvar programs = [];\\n\\n\\t\\tvar shaderIDs = {\\n\\t\\t\\tMeshDepthMaterial: 'depth',\\n\\t\\t\\tMeshDistanceMaterial: 'distanceRGBA',\\n\\t\\t\\tMeshNormalMaterial: 'normal',\\n\\t\\t\\tMeshBasicMaterial: 'basic',\\n\\t\\t\\tMeshLambertMaterial: 'lambert',\\n\\t\\t\\tMeshPhongMaterial: 'phong',\\n\\t\\t\\tMeshToonMaterial: 'phong',\\n\\t\\t\\tMeshStandardMaterial: 'physical',\\n\\t\\t\\tMeshPhysicalMaterial: 'physical',\\n\\t\\t\\tLineBasicMaterial: 'basic',\\n\\t\\t\\tLineDashedMaterial: 'dashed',\\n\\t\\t\\tPointsMaterial: 'points',\\n\\t\\t\\tShadowMaterial: 'shadow'\\n\\t\\t};\\n\\n\\t\\tvar parameterNames = [\\n\\t\\t\\t\\\"precision\\\", \\\"supportsVertexTextures\\\", \\\"map\\\", \\\"mapEncoding\\\", \\\"envMap\\\", \\\"envMapMode\\\", \\\"envMapEncoding\\\",\\n\\t\\t\\t\\\"lightMap\\\", \\\"aoMap\\\", \\\"emissiveMap\\\", \\\"emissiveMapEncoding\\\", \\\"bumpMap\\\", \\\"normalMap\\\", \\\"displacementMap\\\", \\\"specularMap\\\",\\n\\t\\t\\t\\\"roughnessMap\\\", \\\"metalnessMap\\\", \\\"gradientMap\\\",\\n\\t\\t\\t\\\"alphaMap\\\", \\\"combine\\\", \\\"vertexColors\\\", \\\"fog\\\", \\\"useFog\\\", \\\"fogExp\\\",\\n\\t\\t\\t\\\"flatShading\\\", \\\"sizeAttenuation\\\", \\\"logarithmicDepthBuffer\\\", \\\"skinning\\\",\\n\\t\\t\\t\\\"maxBones\\\", \\\"useVertexTexture\\\", \\\"morphTargets\\\", \\\"morphNormals\\\",\\n\\t\\t\\t\\\"maxMorphTargets\\\", \\\"maxMorphNormals\\\", \\\"premultipliedAlpha\\\",\\n\\t\\t\\t\\\"numDirLights\\\", \\\"numPointLights\\\", \\\"numSpotLights\\\", \\\"numHemiLights\\\", \\\"numRectAreaLights\\\",\\n\\t\\t\\t\\\"shadowMapEnabled\\\", \\\"shadowMapType\\\", \\\"toneMapping\\\", 'physicallyCorrectLights',\\n\\t\\t\\t\\\"alphaTest\\\", \\\"doubleSided\\\", \\\"flipSided\\\", \\\"numClippingPlanes\\\", \\\"numClipIntersection\\\", \\\"depthPacking\\\", \\\"dithering\\\"\\n\\t\\t];\\n\\n\\n\\t\\tfunction allocateBones( object ) {\\n\\n\\t\\t\\tvar skeleton = object.skeleton;\\n\\t\\t\\tvar bones = skeleton.bones;\\n\\n\\t\\t\\tif ( capabilities.floatVertexTextures ) {\\n\\n\\t\\t\\t\\treturn 1024;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// default for when object is not specified\\n\\t\\t\\t\\t// ( for example when prebuilding shader to be used with multiple objects )\\n\\t\\t\\t\\t//\\n\\t\\t\\t\\t// - leave some extra space for other uniforms\\n\\t\\t\\t\\t// - limit here is ANGLE's 254 max uniform vectors\\n\\t\\t\\t\\t// (up to 54 should be safe)\\n\\n\\t\\t\\t\\tvar nVertexUniforms = capabilities.maxVertexUniforms;\\n\\t\\t\\t\\tvar nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\\n\\n\\t\\t\\t\\tvar maxBones = Math.min( nVertexMatrices, bones.length );\\n\\n\\t\\t\\t\\tif ( maxBones < bones.length ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\\n\\t\\t\\t\\t\\treturn 0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn maxBones;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction getTextureEncodingFromMap( map, gammaOverrideLinear ) {\\n\\n\\t\\t\\tvar encoding;\\n\\n\\t\\t\\tif ( ! map ) {\\n\\n\\t\\t\\t\\tencoding = LinearEncoding;\\n\\n\\t\\t\\t} else if ( map.isTexture ) {\\n\\n\\t\\t\\t\\tencoding = map.encoding;\\n\\n\\t\\t\\t} else if ( map.isWebGLRenderTarget ) {\\n\\n\\t\\t\\t\\tconsole.warn( \\\"THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.\\\" );\\n\\t\\t\\t\\tencoding = map.texture.encoding;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point.\\n\\t\\t\\tif ( encoding === LinearEncoding && gammaOverrideLinear ) {\\n\\n\\t\\t\\t\\tencoding = GammaEncoding;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn encoding;\\n\\n\\t\\t}\\n\\n\\t\\tthis.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) {\\n\\n\\t\\t\\tvar shaderID = shaderIDs[ material.type ];\\n\\n\\t\\t\\t// heuristics to create shader parameters according to lights in the scene\\n\\t\\t\\t// (not to blow over maxLights budget)\\n\\n\\t\\t\\tvar maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0;\\n\\t\\t\\tvar precision = capabilities.precision;\\n\\n\\t\\t\\tif ( material.precision !== null ) {\\n\\n\\t\\t\\t\\tprecision = capabilities.getMaxPrecision( material.precision );\\n\\n\\t\\t\\t\\tif ( precision !== material.precision ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar currentRenderTarget = renderer.getRenderTarget();\\n\\n\\t\\t\\tvar parameters = {\\n\\n\\t\\t\\t\\tshaderID: shaderID,\\n\\n\\t\\t\\t\\tprecision: precision,\\n\\t\\t\\t\\tsupportsVertexTextures: capabilities.vertexTextures,\\n\\t\\t\\t\\toutputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ),\\n\\t\\t\\t\\tmap: !! material.map,\\n\\t\\t\\t\\tmapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ),\\n\\t\\t\\t\\tenvMap: !! material.envMap,\\n\\t\\t\\t\\tenvMapMode: material.envMap && material.envMap.mapping,\\n\\t\\t\\t\\tenvMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ),\\n\\t\\t\\t\\tenvMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ),\\n\\t\\t\\t\\tlightMap: !! material.lightMap,\\n\\t\\t\\t\\taoMap: !! material.aoMap,\\n\\t\\t\\t\\temissiveMap: !! material.emissiveMap,\\n\\t\\t\\t\\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ),\\n\\t\\t\\t\\tbumpMap: !! material.bumpMap,\\n\\t\\t\\t\\tnormalMap: !! material.normalMap,\\n\\t\\t\\t\\tdisplacementMap: !! material.displacementMap,\\n\\t\\t\\t\\troughnessMap: !! material.roughnessMap,\\n\\t\\t\\t\\tmetalnessMap: !! material.metalnessMap,\\n\\t\\t\\t\\tspecularMap: !! material.specularMap,\\n\\t\\t\\t\\talphaMap: !! material.alphaMap,\\n\\n\\t\\t\\t\\tgradientMap: !! material.gradientMap,\\n\\n\\t\\t\\t\\tcombine: material.combine,\\n\\n\\t\\t\\t\\tvertexColors: material.vertexColors,\\n\\n\\t\\t\\t\\tfog: !! fog,\\n\\t\\t\\t\\tuseFog: material.fog,\\n\\t\\t\\t\\tfogExp: ( fog && fog.isFogExp2 ),\\n\\n\\t\\t\\t\\tflatShading: material.flatShading,\\n\\n\\t\\t\\t\\tsizeAttenuation: material.sizeAttenuation,\\n\\t\\t\\t\\tlogarithmicDepthBuffer: capabilities.logarithmicDepthBuffer,\\n\\n\\t\\t\\t\\tskinning: material.skinning && maxBones > 0,\\n\\t\\t\\t\\tmaxBones: maxBones,\\n\\t\\t\\t\\tuseVertexTexture: capabilities.floatVertexTextures,\\n\\n\\t\\t\\t\\tmorphTargets: material.morphTargets,\\n\\t\\t\\t\\tmorphNormals: material.morphNormals,\\n\\t\\t\\t\\tmaxMorphTargets: renderer.maxMorphTargets,\\n\\t\\t\\t\\tmaxMorphNormals: renderer.maxMorphNormals,\\n\\n\\t\\t\\t\\tnumDirLights: lights.directional.length,\\n\\t\\t\\t\\tnumPointLights: lights.point.length,\\n\\t\\t\\t\\tnumSpotLights: lights.spot.length,\\n\\t\\t\\t\\tnumRectAreaLights: lights.rectArea.length,\\n\\t\\t\\t\\tnumHemiLights: lights.hemi.length,\\n\\n\\t\\t\\t\\tnumClippingPlanes: nClipPlanes,\\n\\t\\t\\t\\tnumClipIntersection: nClipIntersection,\\n\\n\\t\\t\\t\\tdithering: material.dithering,\\n\\n\\t\\t\\t\\tshadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0,\\n\\t\\t\\t\\tshadowMapType: renderer.shadowMap.type,\\n\\n\\t\\t\\t\\ttoneMapping: renderer.toneMapping,\\n\\t\\t\\t\\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\\n\\n\\t\\t\\t\\tpremultipliedAlpha: material.premultipliedAlpha,\\n\\n\\t\\t\\t\\talphaTest: material.alphaTest,\\n\\t\\t\\t\\tdoubleSided: material.side === DoubleSide,\\n\\t\\t\\t\\tflipSided: material.side === BackSide,\\n\\n\\t\\t\\t\\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false\\n\\n\\t\\t\\t};\\n\\n\\t\\t\\treturn parameters;\\n\\n\\t\\t};\\n\\n\\t\\tthis.getProgramCode = function ( material, parameters ) {\\n\\n\\t\\t\\tvar array = [];\\n\\n\\t\\t\\tif ( parameters.shaderID ) {\\n\\n\\t\\t\\t\\tarray.push( parameters.shaderID );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tarray.push( material.fragmentShader );\\n\\t\\t\\t\\tarray.push( material.vertexShader );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.defines !== undefined ) {\\n\\n\\t\\t\\t\\tfor ( var name in material.defines ) {\\n\\n\\t\\t\\t\\t\\tarray.push( name );\\n\\t\\t\\t\\t\\tarray.push( material.defines[ name ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0; i < parameterNames.length; i ++ ) {\\n\\n\\t\\t\\t\\tarray.push( parameters[ parameterNames[ i ] ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tarray.push( material.onBeforeCompile.toString() );\\n\\n\\t\\t\\tarray.push( renderer.gammaOutput );\\n\\n\\t\\t\\treturn array.join();\\n\\n\\t\\t};\\n\\n\\t\\tthis.acquireProgram = function ( material, shader, parameters, code ) {\\n\\n\\t\\t\\tvar program;\\n\\n\\t\\t\\t// Check if code has been already compiled\\n\\t\\t\\tfor ( var p = 0, pl = programs.length; p < pl; p ++ ) {\\n\\n\\t\\t\\t\\tvar programInfo = programs[ p ];\\n\\n\\t\\t\\t\\tif ( programInfo.code === code ) {\\n\\n\\t\\t\\t\\t\\tprogram = programInfo;\\n\\t\\t\\t\\t\\t++ program.usedTimes;\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( program === undefined ) {\\n\\n\\t\\t\\t\\tprogram = new WebGLProgram( renderer, extensions, code, material, shader, parameters );\\n\\t\\t\\t\\tprograms.push( program );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn program;\\n\\n\\t\\t};\\n\\n\\t\\tthis.releaseProgram = function ( program ) {\\n\\n\\t\\t\\tif ( -- program.usedTimes === 0 ) {\\n\\n\\t\\t\\t\\t// Remove from unordered set\\n\\t\\t\\t\\tvar i = programs.indexOf( program );\\n\\t\\t\\t\\tprograms[ i ] = programs[ programs.length - 1 ];\\n\\t\\t\\t\\tprograms.pop();\\n\\n\\t\\t\\t\\t// Free WebGL resources\\n\\t\\t\\t\\tprogram.destroy();\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t\\t// Exposed for resource monitoring & error feedback via renderer.info:\\n\\t\\tthis.programs = programs;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, infoMemory ) {\\n\\n\\t\\tvar _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof window.WebGL2RenderingContext );\\n\\t\\tvar _videoTextures = {};\\n\\n\\t\\t//\\n\\n\\t\\tfunction clampToMaxSize( image, maxSize ) {\\n\\n\\t\\t\\tif ( image.width > maxSize || image.height > maxSize ) {\\n\\n\\t\\t\\t\\t// Warning: Scaling through the canvas will only work with images that use\\n\\t\\t\\t\\t// premultiplied alpha.\\n\\n\\t\\t\\t\\tvar scale = maxSize / Math.max( image.width, image.height );\\n\\n\\t\\t\\t\\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\\n\\t\\t\\t\\tcanvas.width = Math.floor( image.width * scale );\\n\\t\\t\\t\\tcanvas.height = Math.floor( image.height * scale );\\n\\n\\t\\t\\t\\tvar context = canvas.getContext( '2d' );\\n\\t\\t\\t\\tcontext.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height );\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\\n\\n\\t\\t\\t\\treturn canvas;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn image;\\n\\n\\t\\t}\\n\\n\\t\\tfunction isPowerOfTwo( image ) {\\n\\n\\t\\t\\treturn _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height );\\n\\n\\t\\t}\\n\\n\\t\\tfunction makePowerOfTwo( image ) {\\n\\n\\t\\t\\tif ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof ImageBitmap ) {\\n\\n\\t\\t\\t\\tvar canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\\n\\t\\t\\t\\tcanvas.width = _Math.floorPowerOfTwo( image.width );\\n\\t\\t\\t\\tcanvas.height = _Math.floorPowerOfTwo( image.height );\\n\\n\\t\\t\\t\\tvar context = canvas.getContext( '2d' );\\n\\t\\t\\t\\tcontext.drawImage( image, 0, 0, canvas.width, canvas.height );\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image );\\n\\n\\t\\t\\t\\treturn canvas;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn image;\\n\\n\\t\\t}\\n\\n\\t\\tfunction textureNeedsPowerOfTwo( texture ) {\\n\\n\\t\\t\\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\\n\\t\\t\\t\\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\\n\\n\\t\\t}\\n\\n\\t\\tfunction textureNeedsGenerateMipmaps( texture, isPowerOfTwo ) {\\n\\n\\t\\t\\treturn texture.generateMipmaps && isPowerOfTwo &&\\n\\t\\t\\t\\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\\n\\n\\t\\t}\\n\\n\\t\\t// Fallback filters for non-power-of-2 textures\\n\\n\\t\\tfunction filterFallback( f ) {\\n\\n\\t\\t\\tif ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) {\\n\\n\\t\\t\\t\\treturn _gl.NEAREST;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn _gl.LINEAR;\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tfunction onTextureDispose( event ) {\\n\\n\\t\\t\\tvar texture = event.target;\\n\\n\\t\\t\\ttexture.removeEventListener( 'dispose', onTextureDispose );\\n\\n\\t\\t\\tdeallocateTexture( texture );\\n\\n\\t\\t\\tif ( texture.isVideoTexture ) {\\n\\n\\t\\t\\t\\tdelete _videoTextures[ texture.id ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tinfoMemory.textures --;\\n\\n\\t\\t}\\n\\n\\t\\tfunction onRenderTargetDispose( event ) {\\n\\n\\t\\t\\tvar renderTarget = event.target;\\n\\n\\t\\t\\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\\n\\n\\t\\t\\tdeallocateRenderTarget( renderTarget );\\n\\n\\t\\t\\tinfoMemory.textures --;\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tfunction deallocateTexture( texture ) {\\n\\n\\t\\t\\tvar textureProperties = properties.get( texture );\\n\\n\\t\\t\\tif ( texture.image && textureProperties.__image__webglTextureCube ) {\\n\\n\\t\\t\\t\\t// cube texture\\n\\n\\t\\t\\t\\t_gl.deleteTexture( textureProperties.__image__webglTextureCube );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// 2D texture\\n\\n\\t\\t\\t\\tif ( textureProperties.__webglInit === undefined ) return;\\n\\n\\t\\t\\t\\t_gl.deleteTexture( textureProperties.__webglTexture );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// remove all webgl properties\\n\\t\\t\\tproperties.remove( texture );\\n\\n\\t\\t}\\n\\n\\t\\tfunction deallocateRenderTarget( renderTarget ) {\\n\\n\\t\\t\\tvar renderTargetProperties = properties.get( renderTarget );\\n\\t\\t\\tvar textureProperties = properties.get( renderTarget.texture );\\n\\n\\t\\t\\tif ( ! renderTarget ) return;\\n\\n\\t\\t\\tif ( textureProperties.__webglTexture !== undefined ) {\\n\\n\\t\\t\\t\\t_gl.deleteTexture( textureProperties.__webglTexture );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( renderTarget.depthTexture ) {\\n\\n\\t\\t\\t\\trenderTarget.depthTexture.dispose();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( renderTarget.isWebGLRenderTargetCube ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\t\\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\\n\\t\\t\\t\\t\\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\\n\\t\\t\\t\\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tproperties.remove( renderTarget.texture );\\n\\t\\t\\tproperties.remove( renderTarget );\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\n\\n\\t\\tfunction setTexture2D( texture, slot ) {\\n\\n\\t\\t\\tvar textureProperties = properties.get( texture );\\n\\n\\t\\t\\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\\n\\n\\t\\t\\t\\tvar image = texture.image;\\n\\n\\t\\t\\t\\tif ( image === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture );\\n\\n\\t\\t\\t\\t} else if ( image.complete === false ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tuploadTexture( textureProperties, texture, slot );\\n\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.activeTexture( _gl.TEXTURE0 + slot );\\n\\t\\t\\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\\n\\n\\t\\t}\\n\\n\\t\\tfunction setTextureCube( texture, slot ) {\\n\\n\\t\\t\\tvar textureProperties = properties.get( texture );\\n\\n\\t\\t\\tif ( texture.image.length === 6 ) {\\n\\n\\t\\t\\t\\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\\n\\n\\t\\t\\t\\t\\tif ( ! textureProperties.__image__webglTextureCube ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture.addEventListener( 'dispose', onTextureDispose );\\n\\n\\t\\t\\t\\t\\t\\ttextureProperties.__image__webglTextureCube = _gl.createTexture();\\n\\n\\t\\t\\t\\t\\t\\tinfoMemory.textures ++;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tstate.activeTexture( _gl.TEXTURE0 + slot );\\n\\t\\t\\t\\t\\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\\n\\n\\t\\t\\t\\t\\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\\n\\n\\t\\t\\t\\t\\tvar isCompressed = ( texture && texture.isCompressedTexture );\\n\\t\\t\\t\\t\\tvar isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\\n\\n\\t\\t\\t\\t\\tvar cubeImage = [];\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( ! isCompressed && ! isDataTexture ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tcubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize );\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tvar image = cubeImage[ 0 ],\\n\\t\\t\\t\\t\\t\\tisPowerOfTwoImage = isPowerOfTwo( image ),\\n\\t\\t\\t\\t\\t\\tglFormat = utils.convert( texture.format ),\\n\\t\\t\\t\\t\\t\\tglType = utils.convert( texture.type );\\n\\n\\t\\t\\t\\t\\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage );\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( ! isCompressed ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( isDataTexture ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar mipmap, mipmaps = cubeImage[ i ].mipmaps;\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tmipmap = mipmaps[ j ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) {\\n\\n\\t\\t\\t\\t\\t\\t_gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttextureProperties.__version = texture.version;\\n\\n\\t\\t\\t\\t\\tif ( texture.onUpdate ) texture.onUpdate( texture );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tstate.activeTexture( _gl.TEXTURE0 + slot );\\n\\t\\t\\t\\t\\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction setTextureCubeDynamic( texture, slot ) {\\n\\n\\t\\t\\tstate.activeTexture( _gl.TEXTURE0 + slot );\\n\\t\\t\\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture );\\n\\n\\t\\t}\\n\\n\\t\\tfunction setTextureParameters( textureType, texture, isPowerOfTwoImage ) {\\n\\n\\t\\t\\tvar extension;\\n\\n\\t\\t\\tif ( isPowerOfTwoImage ) {\\n\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, utils.convert( texture.wrapS ) );\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, utils.convert( texture.wrapT ) );\\n\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, utils.convert( texture.magFilter ) );\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, utils.convert( texture.minFilter ) );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );\\n\\n\\t\\t\\t\\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) );\\n\\t\\t\\t\\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) );\\n\\n\\t\\t\\t\\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\textension = extensions.get( 'EXT_texture_filter_anisotropic' );\\n\\n\\t\\t\\tif ( extension ) {\\n\\n\\t\\t\\t\\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\\n\\t\\t\\t\\tif ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return;\\n\\n\\t\\t\\t\\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\\n\\n\\t\\t\\t\\t\\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\\n\\t\\t\\t\\t\\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction uploadTexture( textureProperties, texture, slot ) {\\n\\n\\t\\t\\tif ( textureProperties.__webglInit === undefined ) {\\n\\n\\t\\t\\t\\ttextureProperties.__webglInit = true;\\n\\n\\t\\t\\t\\ttexture.addEventListener( 'dispose', onTextureDispose );\\n\\n\\t\\t\\t\\ttextureProperties.__webglTexture = _gl.createTexture();\\n\\n\\t\\t\\t\\tif ( texture.isVideoTexture ) {\\n\\n\\t\\t\\t\\t\\t_videoTextures[ texture.id ] = texture;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tinfoMemory.textures ++;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.activeTexture( _gl.TEXTURE0 + slot );\\n\\t\\t\\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\\n\\n\\t\\t\\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\\n\\t\\t\\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\\n\\t\\t\\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\\n\\n\\t\\t\\tvar image = clampToMaxSize( texture.image, capabilities.maxTextureSize );\\n\\n\\t\\t\\tif ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) {\\n\\n\\t\\t\\t\\timage = makePowerOfTwo( image );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar isPowerOfTwoImage = isPowerOfTwo( image ),\\n\\t\\t\\t\\tglFormat = utils.convert( texture.format ),\\n\\t\\t\\t\\tglType = utils.convert( texture.type );\\n\\n\\t\\t\\tsetTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage );\\n\\n\\t\\t\\tvar mipmap, mipmaps = texture.mipmaps;\\n\\n\\t\\t\\tif ( texture.isDepthTexture ) {\\n\\n\\t\\t\\t\\t// populate depth texture with dummy data\\n\\n\\t\\t\\t\\tvar internalFormat = _gl.DEPTH_COMPONENT;\\n\\n\\t\\t\\t\\tif ( texture.type === FloatType ) {\\n\\n\\t\\t\\t\\t\\tif ( ! _isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );\\n\\t\\t\\t\\t\\tinternalFormat = _gl.DEPTH_COMPONENT32F;\\n\\n\\t\\t\\t\\t} else if ( _isWebGL2 ) {\\n\\n\\t\\t\\t\\t\\t// WebGL 2.0 requires signed internalformat for glTexImage2D\\n\\t\\t\\t\\t\\tinternalFormat = _gl.DEPTH_COMPONENT16;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( texture.format === DepthFormat && internalFormat === _gl.DEPTH_COMPONENT ) {\\n\\n\\t\\t\\t\\t\\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\\n\\t\\t\\t\\t\\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\\n\\t\\t\\t\\t\\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\\n\\t\\t\\t\\t\\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\\n\\n\\t\\t\\t\\t\\t\\ttexture.type = UnsignedShortType;\\n\\t\\t\\t\\t\\t\\tglType = utils.convert( texture.type );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Depth stencil textures need the DEPTH_STENCIL internal format\\n\\t\\t\\t\\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\\n\\t\\t\\t\\tif ( texture.format === DepthStencilFormat ) {\\n\\n\\t\\t\\t\\t\\tinternalFormat = _gl.DEPTH_STENCIL;\\n\\n\\t\\t\\t\\t\\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\\n\\t\\t\\t\\t\\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\\n\\t\\t\\t\\t\\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\\n\\t\\t\\t\\t\\tif ( texture.type !== UnsignedInt248Type ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\\n\\n\\t\\t\\t\\t\\t\\ttexture.type = UnsignedInt248Type;\\n\\t\\t\\t\\t\\t\\tglType = utils.convert( texture.type );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null );\\n\\n\\t\\t\\t} else if ( texture.isDataTexture ) {\\n\\n\\t\\t\\t\\t// use manually created mipmaps if available\\n\\t\\t\\t\\t// if there are no manual mipmaps\\n\\t\\t\\t\\t// set 0 level mipmap and then use GL to generate other mipmap levels\\n\\n\\t\\t\\t\\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tmipmap = mipmaps[ i ];\\n\\t\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttexture.generateMipmaps = false;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( texture.isCompressedTexture ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tmipmap = mipmaps[ i ];\\n\\n\\t\\t\\t\\t\\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data );\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// regular Texture (image, video, canvas)\\n\\n\\t\\t\\t\\t// use manually created mipmaps if available\\n\\t\\t\\t\\t// if there are no manual mipmaps\\n\\t\\t\\t\\t// set 0 level mipmap and then use GL to generate other mipmap levels\\n\\n\\t\\t\\t\\tif ( mipmaps.length > 0 && isPowerOfTwoImage ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, il = mipmaps.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tmipmap = mipmaps[ i ];\\n\\t\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttexture.generateMipmaps = false;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tstate.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) _gl.generateMipmap( _gl.TEXTURE_2D );\\n\\n\\t\\t\\ttextureProperties.__version = texture.version;\\n\\n\\t\\t\\tif ( texture.onUpdate ) texture.onUpdate( texture );\\n\\n\\t\\t}\\n\\n\\t\\t// Render targets\\n\\n\\t\\t// Setup storage for target texture and bind it to correct framebuffer\\n\\t\\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\\n\\n\\t\\t\\tvar glFormat = utils.convert( renderTarget.texture.format );\\n\\t\\t\\tvar glType = utils.convert( renderTarget.texture.type );\\n\\t\\t\\tstate.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\\n\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\\n\\t\\t\\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\\n\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\\n\\n\\t\\t}\\n\\n\\t\\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\\n\\t\\tfunction setupRenderBufferStorage( renderbuffer, renderTarget ) {\\n\\n\\t\\t\\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\\n\\n\\t\\t\\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\\n\\n\\t\\t\\t\\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height );\\n\\t\\t\\t\\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\\n\\n\\t\\t\\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\\n\\n\\t\\t\\t\\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height );\\n\\t\\t\\t\\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// FIXME: We don't support !depth !stencil\\n\\t\\t\\t\\t_gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\\n\\n\\t\\t}\\n\\n\\t\\t// Setup resources for a Depth Texture for a FBO (needs an extension)\\n\\t\\tfunction setupDepthTexture( framebuffer, renderTarget ) {\\n\\n\\t\\t\\tvar isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube );\\n\\t\\t\\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\\n\\n\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\\n\\n\\t\\t\\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\\n\\n\\t\\t\\t\\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// upload an empty depth texture with framebuffer size\\n\\t\\t\\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\\n\\t\\t\\t\\t\\trenderTarget.depthTexture.image.width !== renderTarget.width ||\\n\\t\\t\\t\\t\\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\\n\\n\\t\\t\\t\\trenderTarget.depthTexture.image.width = renderTarget.width;\\n\\t\\t\\t\\trenderTarget.depthTexture.image.height = renderTarget.height;\\n\\t\\t\\t\\trenderTarget.depthTexture.needsUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tsetTexture2D( renderTarget.depthTexture, 0 );\\n\\n\\t\\t\\tvar webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\\n\\n\\t\\t\\tif ( renderTarget.depthTexture.format === DepthFormat ) {\\n\\n\\t\\t\\t\\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\\n\\n\\t\\t\\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\\n\\n\\t\\t\\t\\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthrow new Error( 'Unknown depthTexture format' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// Setup GL resources for a non-texture depth buffer\\n\\t\\tfunction setupDepthRenderbuffer( renderTarget ) {\\n\\n\\t\\t\\tvar renderTargetProperties = properties.get( renderTarget );\\n\\n\\t\\t\\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\\n\\n\\t\\t\\tif ( renderTarget.depthTexture ) {\\n\\n\\t\\t\\t\\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\\n\\n\\t\\t\\t\\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tif ( isCube ) {\\n\\n\\t\\t\\t\\t\\trenderTargetProperties.__webglDepthbuffer = [];\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\\n\\t\\t\\t\\t\\t\\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\\n\\t\\t\\t\\t\\t\\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\\n\\t\\t\\t\\t\\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\\n\\t\\t\\t\\t\\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, null );\\n\\n\\t\\t}\\n\\n\\t\\t// Set up GL resources for the render target\\n\\t\\tfunction setupRenderTarget( renderTarget ) {\\n\\n\\t\\t\\tvar renderTargetProperties = properties.get( renderTarget );\\n\\t\\t\\tvar textureProperties = properties.get( renderTarget.texture );\\n\\n\\t\\t\\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\\n\\n\\t\\t\\ttextureProperties.__webglTexture = _gl.createTexture();\\n\\n\\t\\t\\tinfoMemory.textures ++;\\n\\n\\t\\t\\tvar isCube = ( renderTarget.isWebGLRenderTargetCube === true );\\n\\t\\t\\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\\n\\n\\t\\t\\t// Setup framebuffer\\n\\n\\t\\t\\tif ( isCube ) {\\n\\n\\t\\t\\t\\trenderTargetProperties.__webglFramebuffer = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\t\\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Setup color buffer\\n\\n\\t\\t\\tif ( isCube ) {\\n\\n\\t\\t\\t\\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\\n\\t\\t\\t\\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo );\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\t\\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP );\\n\\t\\t\\t\\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, null );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );\\n\\t\\t\\t\\tsetTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo );\\n\\t\\t\\t\\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D );\\n\\n\\t\\t\\t\\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_2D );\\n\\t\\t\\t\\tstate.bindTexture( _gl.TEXTURE_2D, null );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Setup depth and stencil buffers\\n\\n\\t\\t\\tif ( renderTarget.depthBuffer ) {\\n\\n\\t\\t\\t\\tsetupDepthRenderbuffer( renderTarget );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction updateRenderTargetMipmap( renderTarget ) {\\n\\n\\t\\t\\tvar texture = renderTarget.texture;\\n\\t\\t\\tvar isTargetPowerOfTwo = isPowerOfTwo( renderTarget );\\n\\n\\t\\t\\tif ( textureNeedsGenerateMipmaps( texture, isTargetPowerOfTwo ) ) {\\n\\n\\t\\t\\t\\tvar target = renderTarget.isWebGLRenderTargetCube ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\\n\\t\\t\\t\\tvar webglTexture = properties.get( texture ).__webglTexture;\\n\\n\\t\\t\\t\\tstate.bindTexture( target, webglTexture );\\n\\t\\t\\t\\t_gl.generateMipmap( target );\\n\\t\\t\\t\\tstate.bindTexture( target, null );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction updateVideoTextures() {\\n\\n\\t\\t\\tfor ( var id in _videoTextures ) {\\n\\n\\t\\t\\t\\t_videoTextures[ id ].update();\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tthis.setTexture2D = setTexture2D;\\n\\t\\tthis.setTextureCube = setTextureCube;\\n\\t\\tthis.setTextureCubeDynamic = setTextureCubeDynamic;\\n\\t\\tthis.setupRenderTarget = setupRenderTarget;\\n\\t\\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\\n\\t\\tthis.updateVideoTextures = updateVideoTextures;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author fordacious / fordacious.github.io\\n\\t */\\n\\n\\tfunction WebGLProperties() {\\n\\n\\t\\tvar properties = {};\\n\\n\\t\\tfunction get( object ) {\\n\\n\\t\\t\\tvar uuid = object.uuid;\\n\\t\\t\\tvar map = properties[ uuid ];\\n\\n\\t\\t\\tif ( map === undefined ) {\\n\\n\\t\\t\\t\\tmap = {};\\n\\t\\t\\t\\tproperties[ uuid ] = map;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn map;\\n\\n\\t\\t}\\n\\n\\t\\tfunction remove( object ) {\\n\\n\\t\\t\\tdelete properties[ object.uuid ];\\n\\n\\t\\t}\\n\\n\\t\\tfunction clear() {\\n\\n\\t\\t\\tproperties = {};\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\t\\t\\tget: get,\\n\\t\\t\\tremove: remove,\\n\\t\\t\\tclear: clear\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLState( gl, extensions, utils ) {\\n\\n\\t\\tfunction ColorBuffer() {\\n\\n\\t\\t\\tvar locked = false;\\n\\n\\t\\t\\tvar color = new Vector4();\\n\\t\\t\\tvar currentColorMask = null;\\n\\t\\t\\tvar currentColorClear = new Vector4( 0, 0, 0, 0 );\\n\\n\\t\\t\\treturn {\\n\\n\\t\\t\\t\\tsetMask: function ( colorMask ) {\\n\\n\\t\\t\\t\\t\\tif ( currentColorMask !== colorMask && ! locked ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\\n\\t\\t\\t\\t\\t\\tcurrentColorMask = colorMask;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetLocked: function ( lock ) {\\n\\n\\t\\t\\t\\t\\tlocked = lock;\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\\n\\n\\t\\t\\t\\t\\tif ( premultipliedAlpha === true ) {\\n\\n\\t\\t\\t\\t\\t\\tr *= a; g *= a; b *= a;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tcolor.set( r, g, b, a );\\n\\n\\t\\t\\t\\t\\tif ( currentColorClear.equals( color ) === false ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.clearColor( r, g, b, a );\\n\\t\\t\\t\\t\\t\\tcurrentColorClear.copy( color );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\treset: function () {\\n\\n\\t\\t\\t\\t\\tlocked = false;\\n\\n\\t\\t\\t\\t\\tcurrentColorMask = null;\\n\\t\\t\\t\\t\\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}\\n\\n\\t\\tfunction DepthBuffer() {\\n\\n\\t\\t\\tvar locked = false;\\n\\n\\t\\t\\tvar currentDepthMask = null;\\n\\t\\t\\tvar currentDepthFunc = null;\\n\\t\\t\\tvar currentDepthClear = null;\\n\\n\\t\\t\\treturn {\\n\\n\\t\\t\\t\\tsetTest: function ( depthTest ) {\\n\\n\\t\\t\\t\\t\\tif ( depthTest ) {\\n\\n\\t\\t\\t\\t\\t\\tenable( gl.DEPTH_TEST );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tdisable( gl.DEPTH_TEST );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetMask: function ( depthMask ) {\\n\\n\\t\\t\\t\\t\\tif ( currentDepthMask !== depthMask && ! locked ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.depthMask( depthMask );\\n\\t\\t\\t\\t\\t\\tcurrentDepthMask = depthMask;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetFunc: function ( depthFunc ) {\\n\\n\\t\\t\\t\\t\\tif ( currentDepthFunc !== depthFunc ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( depthFunc ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tswitch ( depthFunc ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase NeverDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.NEVER );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase AlwaysDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.ALWAYS );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase LessDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.LESS );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase LessEqualDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.LEQUAL );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase EqualDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.EQUAL );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase GreaterEqualDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.GEQUAL );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase GreaterDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.GREATER );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase NotEqualDepth:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.NOTEQUAL );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tdefault:\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.LEQUAL );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tgl.depthFunc( gl.LEQUAL );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tcurrentDepthFunc = depthFunc;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetLocked: function ( lock ) {\\n\\n\\t\\t\\t\\t\\tlocked = lock;\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetClear: function ( depth ) {\\n\\n\\t\\t\\t\\t\\tif ( currentDepthClear !== depth ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.clearDepth( depth );\\n\\t\\t\\t\\t\\t\\tcurrentDepthClear = depth;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\treset: function () {\\n\\n\\t\\t\\t\\t\\tlocked = false;\\n\\n\\t\\t\\t\\t\\tcurrentDepthMask = null;\\n\\t\\t\\t\\t\\tcurrentDepthFunc = null;\\n\\t\\t\\t\\t\\tcurrentDepthClear = null;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}\\n\\n\\t\\tfunction StencilBuffer() {\\n\\n\\t\\t\\tvar locked = false;\\n\\n\\t\\t\\tvar currentStencilMask = null;\\n\\t\\t\\tvar currentStencilFunc = null;\\n\\t\\t\\tvar currentStencilRef = null;\\n\\t\\t\\tvar currentStencilFuncMask = null;\\n\\t\\t\\tvar currentStencilFail = null;\\n\\t\\t\\tvar currentStencilZFail = null;\\n\\t\\t\\tvar currentStencilZPass = null;\\n\\t\\t\\tvar currentStencilClear = null;\\n\\n\\t\\t\\treturn {\\n\\n\\t\\t\\t\\tsetTest: function ( stencilTest ) {\\n\\n\\t\\t\\t\\t\\tif ( stencilTest ) {\\n\\n\\t\\t\\t\\t\\t\\tenable( gl.STENCIL_TEST );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tdisable( gl.STENCIL_TEST );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetMask: function ( stencilMask ) {\\n\\n\\t\\t\\t\\t\\tif ( currentStencilMask !== stencilMask && ! locked ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.stencilMask( stencilMask );\\n\\t\\t\\t\\t\\t\\tcurrentStencilMask = stencilMask;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\\n\\n\\t\\t\\t\\t\\tif ( currentStencilFunc !== stencilFunc ||\\n\\t\\t\\t\\t\\t currentStencilRef \\t!== stencilRef \\t||\\n\\t\\t\\t\\t\\t currentStencilFuncMask !== stencilMask ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\\n\\n\\t\\t\\t\\t\\t\\tcurrentStencilFunc = stencilFunc;\\n\\t\\t\\t\\t\\t\\tcurrentStencilRef = stencilRef;\\n\\t\\t\\t\\t\\t\\tcurrentStencilFuncMask = stencilMask;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\\n\\n\\t\\t\\t\\t\\tif ( currentStencilFail\\t !== stencilFail \\t||\\n\\t\\t\\t\\t\\t currentStencilZFail !== stencilZFail ||\\n\\t\\t\\t\\t\\t currentStencilZPass !== stencilZPass ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\\n\\n\\t\\t\\t\\t\\t\\tcurrentStencilFail = stencilFail;\\n\\t\\t\\t\\t\\t\\tcurrentStencilZFail = stencilZFail;\\n\\t\\t\\t\\t\\t\\tcurrentStencilZPass = stencilZPass;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetLocked: function ( lock ) {\\n\\n\\t\\t\\t\\t\\tlocked = lock;\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tsetClear: function ( stencil ) {\\n\\n\\t\\t\\t\\t\\tif ( currentStencilClear !== stencil ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.clearStencil( stencil );\\n\\t\\t\\t\\t\\t\\tcurrentStencilClear = stencil;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\treset: function () {\\n\\n\\t\\t\\t\\t\\tlocked = false;\\n\\n\\t\\t\\t\\t\\tcurrentStencilMask = null;\\n\\t\\t\\t\\t\\tcurrentStencilFunc = null;\\n\\t\\t\\t\\t\\tcurrentStencilRef = null;\\n\\t\\t\\t\\t\\tcurrentStencilFuncMask = null;\\n\\t\\t\\t\\t\\tcurrentStencilFail = null;\\n\\t\\t\\t\\t\\tcurrentStencilZFail = null;\\n\\t\\t\\t\\t\\tcurrentStencilZPass = null;\\n\\t\\t\\t\\t\\tcurrentStencilClear = null;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tvar colorBuffer = new ColorBuffer();\\n\\t\\tvar depthBuffer = new DepthBuffer();\\n\\t\\tvar stencilBuffer = new StencilBuffer();\\n\\n\\t\\tvar maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\\n\\t\\tvar newAttributes = new Uint8Array( maxVertexAttributes );\\n\\t\\tvar enabledAttributes = new Uint8Array( maxVertexAttributes );\\n\\t\\tvar attributeDivisors = new Uint8Array( maxVertexAttributes );\\n\\n\\t\\tvar capabilities = {};\\n\\n\\t\\tvar compressedTextureFormats = null;\\n\\n\\t\\tvar currentProgram = null;\\n\\n\\t\\tvar currentBlending = null;\\n\\t\\tvar currentBlendEquation = null;\\n\\t\\tvar currentBlendSrc = null;\\n\\t\\tvar currentBlendDst = null;\\n\\t\\tvar currentBlendEquationAlpha = null;\\n\\t\\tvar currentBlendSrcAlpha = null;\\n\\t\\tvar currentBlendDstAlpha = null;\\n\\t\\tvar currentPremultipledAlpha = false;\\n\\n\\t\\tvar currentFlipSided = null;\\n\\t\\tvar currentCullFace = null;\\n\\n\\t\\tvar currentLineWidth = null;\\n\\n\\t\\tvar currentPolygonOffsetFactor = null;\\n\\t\\tvar currentPolygonOffsetUnits = null;\\n\\n\\t\\tvar maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\\n\\n\\t\\tvar version = parseFloat( /^WebGL\\\\ ([0-9])/.exec( gl.getParameter( gl.VERSION ) )[ 1 ] );\\n\\t\\tvar lineWidthAvailable = parseFloat( version ) >= 1.0;\\n\\n\\t\\tvar currentTextureSlot = null;\\n\\t\\tvar currentBoundTextures = {};\\n\\n\\t\\tvar currentScissor = new Vector4();\\n\\t\\tvar currentViewport = new Vector4();\\n\\n\\t\\tfunction createTexture( type, target, count ) {\\n\\n\\t\\t\\tvar data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\\n\\t\\t\\tvar texture = gl.createTexture();\\n\\n\\t\\t\\tgl.bindTexture( type, texture );\\n\\t\\t\\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\\n\\t\\t\\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\\n\\n\\t\\t\\tfor ( var i = 0; i < count; i ++ ) {\\n\\n\\t\\t\\t\\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn texture;\\n\\n\\t\\t}\\n\\n\\t\\tvar emptyTextures = {};\\n\\t\\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\\n\\t\\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\\n\\n\\t\\t// init\\n\\n\\t\\tcolorBuffer.setClear( 0, 0, 0, 1 );\\n\\t\\tdepthBuffer.setClear( 1 );\\n\\t\\tstencilBuffer.setClear( 0 );\\n\\n\\t\\tenable( gl.DEPTH_TEST );\\n\\t\\tdepthBuffer.setFunc( LessEqualDepth );\\n\\n\\t\\tsetFlipSided( false );\\n\\t\\tsetCullFace( CullFaceBack );\\n\\t\\tenable( gl.CULL_FACE );\\n\\n\\t\\tenable( gl.BLEND );\\n\\t\\tsetBlending( NormalBlending );\\n\\n\\t\\t//\\n\\n\\t\\tfunction initAttributes() {\\n\\n\\t\\t\\tfor ( var i = 0, l = newAttributes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tnewAttributes[ i ] = 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction enableAttribute( attribute ) {\\n\\n\\t\\t\\tnewAttributes[ attribute ] = 1;\\n\\n\\t\\t\\tif ( enabledAttributes[ attribute ] === 0 ) {\\n\\n\\t\\t\\t\\tgl.enableVertexAttribArray( attribute );\\n\\t\\t\\t\\tenabledAttributes[ attribute ] = 1;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( attributeDivisors[ attribute ] !== 0 ) {\\n\\n\\t\\t\\t\\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\\n\\n\\t\\t\\t\\textension.vertexAttribDivisorANGLE( attribute, 0 );\\n\\t\\t\\t\\tattributeDivisors[ attribute ] = 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\\n\\n\\t\\t\\tnewAttributes[ attribute ] = 1;\\n\\n\\t\\t\\tif ( enabledAttributes[ attribute ] === 0 ) {\\n\\n\\t\\t\\t\\tgl.enableVertexAttribArray( attribute );\\n\\t\\t\\t\\tenabledAttributes[ attribute ] = 1;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\\n\\n\\t\\t\\t\\tvar extension = extensions.get( 'ANGLE_instanced_arrays' );\\n\\n\\t\\t\\t\\textension.vertexAttribDivisorANGLE( attribute, meshPerAttribute );\\n\\t\\t\\t\\tattributeDivisors[ attribute ] = meshPerAttribute;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction disableUnusedAttributes() {\\n\\n\\t\\t\\tfor ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) {\\n\\n\\t\\t\\t\\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\\n\\n\\t\\t\\t\\t\\tgl.disableVertexAttribArray( i );\\n\\t\\t\\t\\t\\tenabledAttributes[ i ] = 0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction enable( id ) {\\n\\n\\t\\t\\tif ( capabilities[ id ] !== true ) {\\n\\n\\t\\t\\t\\tgl.enable( id );\\n\\t\\t\\t\\tcapabilities[ id ] = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction disable( id ) {\\n\\n\\t\\t\\tif ( capabilities[ id ] !== false ) {\\n\\n\\t\\t\\t\\tgl.disable( id );\\n\\t\\t\\t\\tcapabilities[ id ] = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction getCompressedTextureFormats() {\\n\\n\\t\\t\\tif ( compressedTextureFormats === null ) {\\n\\n\\t\\t\\t\\tcompressedTextureFormats = [];\\n\\n\\t\\t\\t\\tif ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) ||\\n\\t\\t\\t\\t extensions.get( 'WEBGL_compressed_texture_s3tc' ) ||\\n\\t\\t\\t\\t extensions.get( 'WEBGL_compressed_texture_etc1' ) ) {\\n\\n\\t\\t\\t\\t\\tvar formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS );\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < formats.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tcompressedTextureFormats.push( formats[ i ] );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn compressedTextureFormats;\\n\\n\\t\\t}\\n\\n\\t\\tfunction useProgram( program ) {\\n\\n\\t\\t\\tif ( currentProgram !== program ) {\\n\\n\\t\\t\\t\\tgl.useProgram( program );\\n\\n\\t\\t\\t\\tcurrentProgram = program;\\n\\n\\t\\t\\t\\treturn true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn false;\\n\\n\\t\\t}\\n\\n\\t\\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\\n\\n\\t\\t\\tif ( blending !== NoBlending ) {\\n\\n\\t\\t\\t\\tenable( gl.BLEND );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tdisable( gl.BLEND );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( blending !== CustomBlending ) {\\n\\n\\t\\t\\t\\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\\n\\n\\t\\t\\t\\t\\tswitch ( blending ) {\\n\\n\\t\\t\\t\\t\\t\\tcase AdditiveBlending:\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( premultipliedAlpha ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE );\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquation( gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase SubtractiveBlending:\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( premultipliedAlpha ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA );\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquation( gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase MultiplyBlending:\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( premultipliedAlpha ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquation( gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tdefault:\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( premultipliedAlpha ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD );\\n\\t\\t\\t\\t\\t\\t\\t\\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcurrentBlendEquation = null;\\n\\t\\t\\t\\tcurrentBlendSrc = null;\\n\\t\\t\\t\\tcurrentBlendDst = null;\\n\\t\\t\\t\\tcurrentBlendEquationAlpha = null;\\n\\t\\t\\t\\tcurrentBlendSrcAlpha = null;\\n\\t\\t\\t\\tcurrentBlendDstAlpha = null;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tblendEquationAlpha = blendEquationAlpha || blendEquation;\\n\\t\\t\\t\\tblendSrcAlpha = blendSrcAlpha || blendSrc;\\n\\t\\t\\t\\tblendDstAlpha = blendDstAlpha || blendDst;\\n\\n\\t\\t\\t\\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\\n\\n\\t\\t\\t\\t\\tgl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) );\\n\\n\\t\\t\\t\\t\\tcurrentBlendEquation = blendEquation;\\n\\t\\t\\t\\t\\tcurrentBlendEquationAlpha = blendEquationAlpha;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\\n\\n\\t\\t\\t\\t\\tgl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) );\\n\\n\\t\\t\\t\\t\\tcurrentBlendSrc = blendSrc;\\n\\t\\t\\t\\t\\tcurrentBlendDst = blendDst;\\n\\t\\t\\t\\t\\tcurrentBlendSrcAlpha = blendSrcAlpha;\\n\\t\\t\\t\\t\\tcurrentBlendDstAlpha = blendDstAlpha;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tcurrentBlending = blending;\\n\\t\\t\\tcurrentPremultipledAlpha = premultipliedAlpha;\\n\\n\\t\\t}\\n\\n\\t\\tfunction setMaterial( material, frontFaceCW ) {\\n\\n\\t\\t\\tmaterial.side === DoubleSide\\n\\t\\t\\t\\t? disable( gl.CULL_FACE )\\n\\t\\t\\t\\t: enable( gl.CULL_FACE );\\n\\n\\t\\t\\tvar flipSided = ( material.side === BackSide );\\n\\t\\t\\tif ( frontFaceCW ) flipSided = ! flipSided;\\n\\n\\t\\t\\tsetFlipSided( flipSided );\\n\\n\\t\\t\\tmaterial.transparent === true\\n\\t\\t\\t\\t? setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha )\\n\\t\\t\\t\\t: setBlending( NoBlending );\\n\\n\\t\\t\\tdepthBuffer.setFunc( material.depthFunc );\\n\\t\\t\\tdepthBuffer.setTest( material.depthTest );\\n\\t\\t\\tdepthBuffer.setMask( material.depthWrite );\\n\\t\\t\\tcolorBuffer.setMask( material.colorWrite );\\n\\n\\t\\t\\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tfunction setFlipSided( flipSided ) {\\n\\n\\t\\t\\tif ( currentFlipSided !== flipSided ) {\\n\\n\\t\\t\\t\\tif ( flipSided ) {\\n\\n\\t\\t\\t\\t\\tgl.frontFace( gl.CW );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tgl.frontFace( gl.CCW );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcurrentFlipSided = flipSided;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction setCullFace( cullFace ) {\\n\\n\\t\\t\\tif ( cullFace !== CullFaceNone ) {\\n\\n\\t\\t\\t\\tenable( gl.CULL_FACE );\\n\\n\\t\\t\\t\\tif ( cullFace !== currentCullFace ) {\\n\\n\\t\\t\\t\\t\\tif ( cullFace === CullFaceBack ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.cullFace( gl.BACK );\\n\\n\\t\\t\\t\\t\\t} else if ( cullFace === CullFaceFront ) {\\n\\n\\t\\t\\t\\t\\t\\tgl.cullFace( gl.FRONT );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tgl.cullFace( gl.FRONT_AND_BACK );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tdisable( gl.CULL_FACE );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tcurrentCullFace = cullFace;\\n\\n\\t\\t}\\n\\n\\t\\tfunction setLineWidth( width ) {\\n\\n\\t\\t\\tif ( width !== currentLineWidth ) {\\n\\n\\t\\t\\t\\tif ( lineWidthAvailable ) gl.lineWidth( width );\\n\\n\\t\\t\\t\\tcurrentLineWidth = width;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction setPolygonOffset( polygonOffset, factor, units ) {\\n\\n\\t\\t\\tif ( polygonOffset ) {\\n\\n\\t\\t\\t\\tenable( gl.POLYGON_OFFSET_FILL );\\n\\n\\t\\t\\t\\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\\n\\n\\t\\t\\t\\t\\tgl.polygonOffset( factor, units );\\n\\n\\t\\t\\t\\t\\tcurrentPolygonOffsetFactor = factor;\\n\\t\\t\\t\\t\\tcurrentPolygonOffsetUnits = units;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tdisable( gl.POLYGON_OFFSET_FILL );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction setScissorTest( scissorTest ) {\\n\\n\\t\\t\\tif ( scissorTest ) {\\n\\n\\t\\t\\t\\tenable( gl.SCISSOR_TEST );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tdisable( gl.SCISSOR_TEST );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// texture\\n\\n\\t\\tfunction activeTexture( webglSlot ) {\\n\\n\\t\\t\\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\\n\\n\\t\\t\\tif ( currentTextureSlot !== webglSlot ) {\\n\\n\\t\\t\\t\\tgl.activeTexture( webglSlot );\\n\\t\\t\\t\\tcurrentTextureSlot = webglSlot;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction bindTexture( webglType, webglTexture ) {\\n\\n\\t\\t\\tif ( currentTextureSlot === null ) {\\n\\n\\t\\t\\t\\tactiveTexture();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar boundTexture = currentBoundTextures[ currentTextureSlot ];\\n\\n\\t\\t\\tif ( boundTexture === undefined ) {\\n\\n\\t\\t\\t\\tboundTexture = { type: undefined, texture: undefined };\\n\\t\\t\\t\\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\\n\\n\\t\\t\\t\\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\\n\\n\\t\\t\\t\\tboundTexture.type = webglType;\\n\\t\\t\\t\\tboundTexture.texture = webglTexture;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction compressedTexImage2D() {\\n\\n\\t\\t\\ttry {\\n\\n\\t\\t\\t\\tgl.compressedTexImage2D.apply( gl, arguments );\\n\\n\\t\\t\\t} catch ( error ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.WebGLState:', error );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction texImage2D() {\\n\\n\\t\\t\\ttry {\\n\\n\\t\\t\\t\\tgl.texImage2D.apply( gl, arguments );\\n\\n\\t\\t\\t} catch ( error ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.WebGLState:', error );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tfunction scissor( scissor ) {\\n\\n\\t\\t\\tif ( currentScissor.equals( scissor ) === false ) {\\n\\n\\t\\t\\t\\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\\n\\t\\t\\t\\tcurrentScissor.copy( scissor );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction viewport( viewport ) {\\n\\n\\t\\t\\tif ( currentViewport.equals( viewport ) === false ) {\\n\\n\\t\\t\\t\\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\\n\\t\\t\\t\\tcurrentViewport.copy( viewport );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tfunction reset() {\\n\\n\\t\\t\\tfor ( var i = 0; i < enabledAttributes.length; i ++ ) {\\n\\n\\t\\t\\t\\tif ( enabledAttributes[ i ] === 1 ) {\\n\\n\\t\\t\\t\\t\\tgl.disableVertexAttribArray( i );\\n\\t\\t\\t\\t\\tenabledAttributes[ i ] = 0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tcapabilities = {};\\n\\n\\t\\t\\tcompressedTextureFormats = null;\\n\\n\\t\\t\\tcurrentTextureSlot = null;\\n\\t\\t\\tcurrentBoundTextures = {};\\n\\n\\t\\t\\tcurrentProgram = null;\\n\\n\\t\\t\\tcurrentBlending = null;\\n\\n\\t\\t\\tcurrentFlipSided = null;\\n\\t\\t\\tcurrentCullFace = null;\\n\\n\\t\\t\\tcolorBuffer.reset();\\n\\t\\t\\tdepthBuffer.reset();\\n\\t\\t\\tstencilBuffer.reset();\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tbuffers: {\\n\\t\\t\\t\\tcolor: colorBuffer,\\n\\t\\t\\t\\tdepth: depthBuffer,\\n\\t\\t\\t\\tstencil: stencilBuffer\\n\\t\\t\\t},\\n\\n\\t\\t\\tinitAttributes: initAttributes,\\n\\t\\t\\tenableAttribute: enableAttribute,\\n\\t\\t\\tenableAttributeAndDivisor: enableAttributeAndDivisor,\\n\\t\\t\\tdisableUnusedAttributes: disableUnusedAttributes,\\n\\t\\t\\tenable: enable,\\n\\t\\t\\tdisable: disable,\\n\\t\\t\\tgetCompressedTextureFormats: getCompressedTextureFormats,\\n\\n\\t\\t\\tuseProgram: useProgram,\\n\\n\\t\\t\\tsetBlending: setBlending,\\n\\t\\t\\tsetMaterial: setMaterial,\\n\\n\\t\\t\\tsetFlipSided: setFlipSided,\\n\\t\\t\\tsetCullFace: setCullFace,\\n\\n\\t\\t\\tsetLineWidth: setLineWidth,\\n\\t\\t\\tsetPolygonOffset: setPolygonOffset,\\n\\n\\t\\t\\tsetScissorTest: setScissorTest,\\n\\n\\t\\t\\tactiveTexture: activeTexture,\\n\\t\\t\\tbindTexture: bindTexture,\\n\\t\\t\\tcompressedTexImage2D: compressedTexImage2D,\\n\\t\\t\\ttexImage2D: texImage2D,\\n\\n\\t\\t\\tscissor: scissor,\\n\\t\\t\\tviewport: viewport,\\n\\n\\t\\t\\treset: reset\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLCapabilities( gl, extensions, parameters ) {\\n\\n\\t\\tvar maxAnisotropy;\\n\\n\\t\\tfunction getMaxAnisotropy() {\\n\\n\\t\\t\\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\\n\\n\\t\\t\\tvar extension = extensions.get( 'EXT_texture_filter_anisotropic' );\\n\\n\\t\\t\\tif ( extension !== null ) {\\n\\n\\t\\t\\t\\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tmaxAnisotropy = 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn maxAnisotropy;\\n\\n\\t\\t}\\n\\n\\t\\tfunction getMaxPrecision( precision ) {\\n\\n\\t\\t\\tif ( precision === 'highp' ) {\\n\\n\\t\\t\\t\\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\\n\\t\\t\\t\\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\\n\\n\\t\\t\\t\\t\\treturn 'highp';\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tprecision = 'mediump';\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( precision === 'mediump' ) {\\n\\n\\t\\t\\t\\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\\n\\t\\t\\t\\t gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\\n\\n\\t\\t\\t\\t\\treturn 'mediump';\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn 'lowp';\\n\\n\\t\\t}\\n\\n\\t\\tvar precision = parameters.precision !== undefined ? parameters.precision : 'highp';\\n\\t\\tvar maxPrecision = getMaxPrecision( precision );\\n\\n\\t\\tif ( maxPrecision !== precision ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\\n\\t\\t\\tprecision = maxPrecision;\\n\\n\\t\\t}\\n\\n\\t\\tvar logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\\n\\n\\t\\tvar maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\\n\\t\\tvar maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\\n\\t\\tvar maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\\n\\t\\tvar maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\\n\\n\\t\\tvar maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\\n\\t\\tvar maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\\n\\t\\tvar maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\\n\\t\\tvar maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\\n\\n\\t\\tvar vertexTextures = maxVertexTextures > 0;\\n\\t\\tvar floatFragmentTextures = !! extensions.get( 'OES_texture_float' );\\n\\t\\tvar floatVertexTextures = vertexTextures && floatFragmentTextures;\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tgetMaxAnisotropy: getMaxAnisotropy,\\n\\t\\t\\tgetMaxPrecision: getMaxPrecision,\\n\\n\\t\\t\\tprecision: precision,\\n\\t\\t\\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\\n\\n\\t\\t\\tmaxTextures: maxTextures,\\n\\t\\t\\tmaxVertexTextures: maxVertexTextures,\\n\\t\\t\\tmaxTextureSize: maxTextureSize,\\n\\t\\t\\tmaxCubemapSize: maxCubemapSize,\\n\\n\\t\\t\\tmaxAttributes: maxAttributes,\\n\\t\\t\\tmaxVertexUniforms: maxVertexUniforms,\\n\\t\\t\\tmaxVaryings: maxVaryings,\\n\\t\\t\\tmaxFragmentUniforms: maxFragmentUniforms,\\n\\n\\t\\t\\tvertexTextures: vertexTextures,\\n\\t\\t\\tfloatFragmentTextures: floatFragmentTextures,\\n\\t\\t\\tfloatVertexTextures: floatVertexTextures\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author greggman / http://games.greggman.com/\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction PerspectiveCamera( fov, aspect, near, far ) {\\n\\n\\t\\tCamera.call( this );\\n\\n\\t\\tthis.type = 'PerspectiveCamera';\\n\\n\\t\\tthis.fov = fov !== undefined ? fov : 50;\\n\\t\\tthis.zoom = 1;\\n\\n\\t\\tthis.near = near !== undefined ? near : 0.1;\\n\\t\\tthis.far = far !== undefined ? far : 2000;\\n\\t\\tthis.focus = 10;\\n\\n\\t\\tthis.aspect = aspect !== undefined ? aspect : 1;\\n\\t\\tthis.view = null;\\n\\n\\t\\tthis.filmGauge = 35;\\t// width of the film (default in millimeters)\\n\\t\\tthis.filmOffset = 0;\\t// horizontal film offset (same unit as gauge)\\n\\n\\t\\tthis.updateProjectionMatrix();\\n\\n\\t}\\n\\n\\tPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\\n\\n\\t\\tconstructor: PerspectiveCamera,\\n\\n\\t\\tisPerspectiveCamera: true,\\n\\n\\t\\tcopy: function ( source, recursive ) {\\n\\n\\t\\t\\tCamera.prototype.copy.call( this, source, recursive );\\n\\n\\t\\t\\tthis.fov = source.fov;\\n\\t\\t\\tthis.zoom = source.zoom;\\n\\n\\t\\t\\tthis.near = source.near;\\n\\t\\t\\tthis.far = source.far;\\n\\t\\t\\tthis.focus = source.focus;\\n\\n\\t\\t\\tthis.aspect = source.aspect;\\n\\t\\t\\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\\n\\n\\t\\t\\tthis.filmGauge = source.filmGauge;\\n\\t\\t\\tthis.filmOffset = source.filmOffset;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t/**\\n\\t\\t * Sets the FOV by focal length in respect to the current .filmGauge.\\n\\t\\t *\\n\\t\\t * The default film gauge is 35, so that the focal length can be specified for\\n\\t\\t * a 35mm (full frame) camera.\\n\\t\\t *\\n\\t\\t * Values for focal length and film gauge must have the same unit.\\n\\t\\t */\\n\\t\\tsetFocalLength: function ( focalLength ) {\\n\\n\\t\\t\\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\\n\\t\\t\\tvar vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\\n\\n\\t\\t\\tthis.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope );\\n\\t\\t\\tthis.updateProjectionMatrix();\\n\\n\\t\\t},\\n\\n\\t\\t/**\\n\\t\\t * Calculates the focal length from the current .fov and .filmGauge.\\n\\t\\t */\\n\\t\\tgetFocalLength: function () {\\n\\n\\t\\t\\tvar vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov );\\n\\n\\t\\t\\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\\n\\n\\t\\t},\\n\\n\\t\\tgetEffectiveFOV: function () {\\n\\n\\t\\t\\treturn _Math.RAD2DEG * 2 * Math.atan(\\n\\t\\t\\t\\tMath.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom );\\n\\n\\t\\t},\\n\\n\\t\\tgetFilmWidth: function () {\\n\\n\\t\\t\\t// film not completely covered in portrait format (aspect < 1)\\n\\t\\t\\treturn this.filmGauge * Math.min( this.aspect, 1 );\\n\\n\\t\\t},\\n\\n\\t\\tgetFilmHeight: function () {\\n\\n\\t\\t\\t// film not completely covered in landscape format (aspect > 1)\\n\\t\\t\\treturn this.filmGauge / Math.max( this.aspect, 1 );\\n\\n\\t\\t},\\n\\n\\t\\t/**\\n\\t\\t * Sets an offset in a larger frustum. This is useful for multi-window or\\n\\t\\t * multi-monitor/multi-machine setups.\\n\\t\\t *\\n\\t\\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\\n\\t\\t * the monitors are in grid like this\\n\\t\\t *\\n\\t\\t * +---+---+---+\\n\\t\\t * | A | B | C |\\n\\t\\t * +---+---+---+\\n\\t\\t * | D | E | F |\\n\\t\\t * +---+---+---+\\n\\t\\t *\\n\\t\\t * then for each monitor you would call it like this\\n\\t\\t *\\n\\t\\t * var w = 1920;\\n\\t\\t * var h = 1080;\\n\\t\\t * var fullWidth = w * 3;\\n\\t\\t * var fullHeight = h * 2;\\n\\t\\t *\\n\\t\\t * --A--\\n\\t\\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\\n\\t\\t * --B--\\n\\t\\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\\n\\t\\t * --C--\\n\\t\\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\\n\\t\\t * --D--\\n\\t\\t * camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\\n\\t\\t * --E--\\n\\t\\t * camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\\n\\t\\t * --F--\\n\\t\\t * camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\\n\\t\\t *\\n\\t\\t * Note there is no reason monitors have to be the same size or in a grid.\\n\\t\\t */\\n\\t\\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\\n\\n\\t\\t\\tthis.aspect = fullWidth / fullHeight;\\n\\n\\t\\t\\tif ( this.view === null ) {\\n\\n\\t\\t\\t\\tthis.view = {\\n\\t\\t\\t\\t\\tenabled: true,\\n\\t\\t\\t\\t\\tfullWidth: 1,\\n\\t\\t\\t\\t\\tfullHeight: 1,\\n\\t\\t\\t\\t\\toffsetX: 0,\\n\\t\\t\\t\\t\\toffsetY: 0,\\n\\t\\t\\t\\t\\twidth: 1,\\n\\t\\t\\t\\t\\theight: 1\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.view.enabled = true;\\n\\t\\t\\tthis.view.fullWidth = fullWidth;\\n\\t\\t\\tthis.view.fullHeight = fullHeight;\\n\\t\\t\\tthis.view.offsetX = x;\\n\\t\\t\\tthis.view.offsetY = y;\\n\\t\\t\\tthis.view.width = width;\\n\\t\\t\\tthis.view.height = height;\\n\\n\\t\\t\\tthis.updateProjectionMatrix();\\n\\n\\t\\t},\\n\\n\\t\\tclearViewOffset: function () {\\n\\n\\t\\t\\tif ( this.view !== null ) {\\n\\n\\t\\t\\t\\tthis.view.enabled = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.updateProjectionMatrix();\\n\\n\\t\\t},\\n\\n\\t\\tupdateProjectionMatrix: function () {\\n\\n\\t\\t\\tvar near = this.near,\\n\\t\\t\\t\\ttop = near * Math.tan(\\n\\t\\t\\t\\t\\t_Math.DEG2RAD * 0.5 * this.fov ) / this.zoom,\\n\\t\\t\\t\\theight = 2 * top,\\n\\t\\t\\t\\twidth = this.aspect * height,\\n\\t\\t\\t\\tleft = - 0.5 * width,\\n\\t\\t\\t\\tview = this.view;\\n\\n\\t\\t\\tif ( this.view !== null && this.view.enabled ) {\\n\\n\\t\\t\\t\\tvar fullWidth = view.fullWidth,\\n\\t\\t\\t\\t\\tfullHeight = view.fullHeight;\\n\\n\\t\\t\\t\\tleft += view.offsetX * width / fullWidth;\\n\\t\\t\\t\\ttop -= view.offsetY * height / fullHeight;\\n\\t\\t\\t\\twidth *= view.width / fullWidth;\\n\\t\\t\\t\\theight *= view.height / fullHeight;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar skew = this.filmOffset;\\n\\t\\t\\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\\n\\n\\t\\t\\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar data = Object3D.prototype.toJSON.call( this, meta );\\n\\n\\t\\t\\tdata.object.fov = this.fov;\\n\\t\\t\\tdata.object.zoom = this.zoom;\\n\\n\\t\\t\\tdata.object.near = this.near;\\n\\t\\t\\tdata.object.far = this.far;\\n\\t\\t\\tdata.object.focus = this.focus;\\n\\n\\t\\t\\tdata.object.aspect = this.aspect;\\n\\n\\t\\t\\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\\n\\n\\t\\t\\tdata.object.filmGauge = this.filmGauge;\\n\\t\\t\\tdata.object.filmOffset = this.filmOffset;\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction ArrayCamera( array ) {\\n\\n\\t\\tPerspectiveCamera.call( this );\\n\\n\\t\\tthis.cameras = array || [];\\n\\n\\t}\\n\\n\\tArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\\n\\n\\t\\tconstructor: ArrayCamera,\\n\\n\\t\\tisArrayCamera: true\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebVRManager( renderer ) {\\n\\n\\t\\tvar scope = this;\\n\\n\\t\\tvar device = null;\\n\\t\\tvar frameData = null;\\n\\n\\t\\tvar poseTarget = null;\\n\\n\\t\\tif ( typeof window !== 'undefined' && 'VRFrameData' in window ) {\\n\\n\\t\\t\\tframeData = new window.VRFrameData();\\n\\n\\t\\t}\\n\\n\\t\\tvar matrixWorldInverse = new Matrix4();\\n\\n\\t\\tvar cameraL = new PerspectiveCamera();\\n\\t\\tcameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 );\\n\\t\\tcameraL.layers.enable( 1 );\\n\\n\\t\\tvar cameraR = new PerspectiveCamera();\\n\\t\\tcameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 );\\n\\t\\tcameraR.layers.enable( 2 );\\n\\n\\t\\tvar cameraVR = new ArrayCamera( [ cameraL, cameraR ] );\\n\\t\\tcameraVR.layers.enable( 1 );\\n\\t\\tcameraVR.layers.enable( 2 );\\n\\n\\t\\t//\\n\\n\\t\\tvar currentSize, currentPixelRatio;\\n\\n\\t\\tfunction onVRDisplayPresentChange() {\\n\\n\\t\\t\\tif ( device !== null && device.isPresenting ) {\\n\\n\\t\\t\\t\\tvar eyeParameters = device.getEyeParameters( 'left' );\\n\\t\\t\\t\\tvar renderWidth = eyeParameters.renderWidth;\\n\\t\\t\\t\\tvar renderHeight = eyeParameters.renderHeight;\\n\\n\\t\\t\\t\\tcurrentPixelRatio = renderer.getPixelRatio();\\n\\t\\t\\t\\tcurrentSize = renderer.getSize();\\n\\n\\t\\t\\t\\trenderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 );\\n\\n\\t\\t\\t} else if ( scope.enabled ) {\\n\\n\\t\\t\\t\\trenderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tif ( typeof window !== 'undefined' ) {\\n\\n\\t\\t\\twindow.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tthis.enabled = false;\\n\\n\\t\\tthis.getDevice = function () {\\n\\n\\t\\t\\treturn device;\\n\\n\\t\\t};\\n\\n\\t\\tthis.setDevice = function ( value ) {\\n\\n\\t\\t\\tif ( value !== undefined ) device = value;\\n\\n\\t\\t};\\n\\n\\t\\tthis.setPoseTarget = function ( object ) {\\n\\n\\t\\t\\tif ( object !== undefined ) poseTarget = object;\\n\\n\\t\\t};\\n\\n\\t\\tthis.getCamera = function ( camera ) {\\n\\n\\t\\t\\tif ( device === null ) return camera;\\n\\n\\t\\t\\tdevice.depthNear = camera.near;\\n\\t\\t\\tdevice.depthFar = camera.far;\\n\\n\\t\\t\\tdevice.getFrameData( frameData );\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar pose = frameData.pose;\\n\\t\\t\\tvar poseObject = poseTarget !== null ? poseTarget : camera;\\n\\n\\t\\t\\tif ( pose.position !== null ) {\\n\\n\\t\\t\\t\\tposeObject.position.fromArray( pose.position );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tposeObject.position.set( 0, 0, 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( pose.orientation !== null ) {\\n\\n\\t\\t\\t\\tposeObject.quaternion.fromArray( pose.orientation );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tposeObject.updateMatrixWorld();\\n\\n\\t\\t\\tif ( device.isPresenting === false ) return camera;\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tcameraL.near = camera.near;\\n\\t\\t\\tcameraR.near = camera.near;\\n\\n\\t\\t\\tcameraL.far = camera.far;\\n\\t\\t\\tcameraR.far = camera.far;\\n\\n\\t\\t\\tcameraVR.matrixWorld.copy( camera.matrixWorld );\\n\\t\\t\\tcameraVR.matrixWorldInverse.copy( camera.matrixWorldInverse );\\n\\n\\t\\t\\tcameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix );\\n\\t\\t\\tcameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix );\\n\\n\\t\\t\\tvar parent = poseObject.parent;\\n\\n\\t\\t\\tif ( parent !== null ) {\\n\\n\\t\\t\\t\\tmatrixWorldInverse.getInverse( parent.matrixWorld );\\n\\n\\t\\t\\t\\tcameraL.matrixWorldInverse.multiply( matrixWorldInverse );\\n\\t\\t\\t\\tcameraR.matrixWorldInverse.multiply( matrixWorldInverse );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// envMap and Mirror needs camera.matrixWorld\\n\\n\\t\\t\\tcameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse );\\n\\t\\t\\tcameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse );\\n\\n\\t\\t\\tcameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix );\\n\\t\\t\\tcameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix );\\n\\n\\t\\t\\t// HACK @mrdoob\\n\\t\\t\\t// https://github.com/w3c/webvr/issues/203\\n\\n\\t\\t\\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar layers = device.getLayers();\\n\\n\\t\\t\\tif ( layers.length ) {\\n\\n\\t\\t\\t\\tvar layer = layers[ 0 ];\\n\\n\\t\\t\\t\\tif ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) {\\n\\n\\t\\t\\t\\t\\tcameraL.bounds.fromArray( layer.leftBounds );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) {\\n\\n\\t\\t\\t\\t\\tcameraR.bounds.fromArray( layer.rightBounds );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn cameraVR;\\n\\n\\t\\t};\\n\\n\\t\\tthis.submitFrame = function () {\\n\\n\\t\\t\\tif ( device && device.isPresenting ) device.submitFrame();\\n\\n\\t\\t};\\n\\n\\t\\tthis.dispose = function () {\\n\\n\\t\\t\\tif ( typeof window !== 'undefined' ) {\\n\\n\\t\\t\\t\\twindow.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange );\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction WebGLExtensions( gl ) {\\n\\n\\t\\tvar extensions = {};\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tget: function ( name ) {\\n\\n\\t\\t\\t\\tif ( extensions[ name ] !== undefined ) {\\n\\n\\t\\t\\t\\t\\treturn extensions[ name ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar extension;\\n\\n\\t\\t\\t\\tswitch ( name ) {\\n\\n\\t\\t\\t\\t\\tcase 'WEBGL_depth_texture':\\n\\t\\t\\t\\t\\t\\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'EXT_texture_filter_anisotropic':\\n\\t\\t\\t\\t\\t\\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'WEBGL_compressed_texture_s3tc':\\n\\t\\t\\t\\t\\t\\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'WEBGL_compressed_texture_pvrtc':\\n\\t\\t\\t\\t\\t\\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'WEBGL_compressed_texture_etc1':\\n\\t\\t\\t\\t\\t\\textension = gl.getExtension( 'WEBGL_compressed_texture_etc1' );\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tdefault:\\n\\t\\t\\t\\t\\t\\textension = gl.getExtension( name );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( extension === null ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\textensions[ name ] = extension;\\n\\n\\t\\t\\t\\treturn extension;\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction WebGLClipping() {\\n\\n\\t\\tvar scope = this,\\n\\n\\t\\t\\tglobalState = null,\\n\\t\\t\\tnumGlobalPlanes = 0,\\n\\t\\t\\tlocalClippingEnabled = false,\\n\\t\\t\\trenderingShadows = false,\\n\\n\\t\\t\\tplane = new Plane(),\\n\\t\\t\\tviewNormalMatrix = new Matrix3(),\\n\\n\\t\\t\\tuniform = { value: null, needsUpdate: false };\\n\\n\\t\\tthis.uniform = uniform;\\n\\t\\tthis.numPlanes = 0;\\n\\t\\tthis.numIntersection = 0;\\n\\n\\t\\tthis.init = function ( planes, enableLocalClipping, camera ) {\\n\\n\\t\\t\\tvar enabled =\\n\\t\\t\\t\\tplanes.length !== 0 ||\\n\\t\\t\\t\\tenableLocalClipping ||\\n\\t\\t\\t\\t// enable state of previous frame - the clipping code has to\\n\\t\\t\\t\\t// run another frame in order to reset the state:\\n\\t\\t\\t\\tnumGlobalPlanes !== 0 ||\\n\\t\\t\\t\\tlocalClippingEnabled;\\n\\n\\t\\t\\tlocalClippingEnabled = enableLocalClipping;\\n\\n\\t\\t\\tglobalState = projectPlanes( planes, camera, 0 );\\n\\t\\t\\tnumGlobalPlanes = planes.length;\\n\\n\\t\\t\\treturn enabled;\\n\\n\\t\\t};\\n\\n\\t\\tthis.beginShadows = function () {\\n\\n\\t\\t\\trenderingShadows = true;\\n\\t\\t\\tprojectPlanes( null );\\n\\n\\t\\t};\\n\\n\\t\\tthis.endShadows = function () {\\n\\n\\t\\t\\trenderingShadows = false;\\n\\t\\t\\tresetGlobalState();\\n\\n\\t\\t};\\n\\n\\t\\tthis.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) {\\n\\n\\t\\t\\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\\n\\n\\t\\t\\t\\t// there's no local clipping\\n\\n\\t\\t\\t\\tif ( renderingShadows ) {\\n\\n\\t\\t\\t\\t\\t// there's no global clipping\\n\\n\\t\\t\\t\\t\\tprojectPlanes( null );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tresetGlobalState();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tvar nGlobal = renderingShadows ? 0 : numGlobalPlanes,\\n\\t\\t\\t\\t\\tlGlobal = nGlobal * 4,\\n\\n\\t\\t\\t\\t\\tdstArray = cache.clippingState || null;\\n\\n\\t\\t\\t\\tuniform.value = dstArray; // ensure unique state\\n\\n\\t\\t\\t\\tdstArray = projectPlanes( planes, camera, lGlobal, fromCache );\\n\\n\\t\\t\\t\\tfor ( var i = 0; i !== lGlobal; ++ i ) {\\n\\n\\t\\t\\t\\t\\tdstArray[ i ] = globalState[ i ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcache.clippingState = dstArray;\\n\\t\\t\\t\\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\\n\\t\\t\\t\\tthis.numPlanes += nGlobal;\\n\\n\\t\\t\\t}\\n\\n\\n\\t\\t};\\n\\n\\t\\tfunction resetGlobalState() {\\n\\n\\t\\t\\tif ( uniform.value !== globalState ) {\\n\\n\\t\\t\\t\\tuniform.value = globalState;\\n\\t\\t\\t\\tuniform.needsUpdate = numGlobalPlanes > 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tscope.numPlanes = numGlobalPlanes;\\n\\t\\t\\tscope.numIntersection = 0;\\n\\n\\t\\t}\\n\\n\\t\\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\\n\\n\\t\\t\\tvar nPlanes = planes !== null ? planes.length : 0,\\n\\t\\t\\t\\tdstArray = null;\\n\\n\\t\\t\\tif ( nPlanes !== 0 ) {\\n\\n\\t\\t\\t\\tdstArray = uniform.value;\\n\\n\\t\\t\\t\\tif ( skipTransform !== true || dstArray === null ) {\\n\\n\\t\\t\\t\\t\\tvar flatSize = dstOffset + nPlanes * 4,\\n\\t\\t\\t\\t\\t\\tviewMatrix = camera.matrixWorldInverse;\\n\\n\\t\\t\\t\\t\\tviewNormalMatrix.getNormalMatrix( viewMatrix );\\n\\n\\t\\t\\t\\t\\tif ( dstArray === null || dstArray.length < flatSize ) {\\n\\n\\t\\t\\t\\t\\t\\tdstArray = new Float32Array( flatSize );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\\n\\n\\t\\t\\t\\t\\t\\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\\n\\n\\t\\t\\t\\t\\t\\tplane.normal.toArray( dstArray, i4 );\\n\\t\\t\\t\\t\\t\\tdstArray[ i4 + 3 ] = plane.constant;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tuniform.value = dstArray;\\n\\t\\t\\t\\tuniform.needsUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tscope.numPlanes = nPlanes;\\n\\n\\t\\t\\treturn dstArray;\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author thespite / http://www.twitter.com/thespite\\n\\t */\\n\\n\\tfunction WebGLUtils( gl, extensions ) {\\n\\n\\t\\tfunction convert( p ) {\\n\\n\\t\\t\\tvar extension;\\n\\n\\t\\t\\tif ( p === RepeatWrapping ) return gl.REPEAT;\\n\\t\\t\\tif ( p === ClampToEdgeWrapping ) return gl.CLAMP_TO_EDGE;\\n\\t\\t\\tif ( p === MirroredRepeatWrapping ) return gl.MIRRORED_REPEAT;\\n\\n\\t\\t\\tif ( p === NearestFilter ) return gl.NEAREST;\\n\\t\\t\\tif ( p === NearestMipMapNearestFilter ) return gl.NEAREST_MIPMAP_NEAREST;\\n\\t\\t\\tif ( p === NearestMipMapLinearFilter ) return gl.NEAREST_MIPMAP_LINEAR;\\n\\n\\t\\t\\tif ( p === LinearFilter ) return gl.LINEAR;\\n\\t\\t\\tif ( p === LinearMipMapNearestFilter ) return gl.LINEAR_MIPMAP_NEAREST;\\n\\t\\t\\tif ( p === LinearMipMapLinearFilter ) return gl.LINEAR_MIPMAP_LINEAR;\\n\\n\\t\\t\\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\\n\\t\\t\\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\\n\\t\\t\\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\\n\\t\\t\\tif ( p === UnsignedShort565Type ) return gl.UNSIGNED_SHORT_5_6_5;\\n\\n\\t\\t\\tif ( p === ByteType ) return gl.BYTE;\\n\\t\\t\\tif ( p === ShortType ) return gl.SHORT;\\n\\t\\t\\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\\n\\t\\t\\tif ( p === IntType ) return gl.INT;\\n\\t\\t\\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\\n\\t\\t\\tif ( p === FloatType ) return gl.FLOAT;\\n\\n\\t\\t\\tif ( p === HalfFloatType ) {\\n\\n\\t\\t\\t\\textension = extensions.get( 'OES_texture_half_float' );\\n\\n\\t\\t\\t\\tif ( extension !== null ) return extension.HALF_FLOAT_OES;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( p === AlphaFormat ) return gl.ALPHA;\\n\\t\\t\\tif ( p === RGBFormat ) return gl.RGB;\\n\\t\\t\\tif ( p === RGBAFormat ) return gl.RGBA;\\n\\t\\t\\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\\n\\t\\t\\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\\n\\t\\t\\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\\n\\t\\t\\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\\n\\n\\t\\t\\tif ( p === AddEquation ) return gl.FUNC_ADD;\\n\\t\\t\\tif ( p === SubtractEquation ) return gl.FUNC_SUBTRACT;\\n\\t\\t\\tif ( p === ReverseSubtractEquation ) return gl.FUNC_REVERSE_SUBTRACT;\\n\\n\\t\\t\\tif ( p === ZeroFactor ) return gl.ZERO;\\n\\t\\t\\tif ( p === OneFactor ) return gl.ONE;\\n\\t\\t\\tif ( p === SrcColorFactor ) return gl.SRC_COLOR;\\n\\t\\t\\tif ( p === OneMinusSrcColorFactor ) return gl.ONE_MINUS_SRC_COLOR;\\n\\t\\t\\tif ( p === SrcAlphaFactor ) return gl.SRC_ALPHA;\\n\\t\\t\\tif ( p === OneMinusSrcAlphaFactor ) return gl.ONE_MINUS_SRC_ALPHA;\\n\\t\\t\\tif ( p === DstAlphaFactor ) return gl.DST_ALPHA;\\n\\t\\t\\tif ( p === OneMinusDstAlphaFactor ) return gl.ONE_MINUS_DST_ALPHA;\\n\\n\\t\\t\\tif ( p === DstColorFactor ) return gl.DST_COLOR;\\n\\t\\t\\tif ( p === OneMinusDstColorFactor ) return gl.ONE_MINUS_DST_COLOR;\\n\\t\\t\\tif ( p === SrcAlphaSaturateFactor ) return gl.SRC_ALPHA_SATURATE;\\n\\n\\t\\t\\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\\n\\t\\t\\t\\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\\n\\n\\t\\t\\t\\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\\n\\n\\t\\t\\t\\tif ( extension !== null ) {\\n\\n\\t\\t\\t\\t\\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\\n\\t\\t\\t\\t\\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\\n\\t\\t\\t\\t\\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\\n\\t\\t\\t\\t\\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\\n\\t\\t\\t\\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\\n\\n\\t\\t\\t\\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\\n\\n\\t\\t\\t\\tif ( extension !== null ) {\\n\\n\\t\\t\\t\\t\\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\\n\\t\\t\\t\\t\\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\\n\\t\\t\\t\\t\\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\\n\\t\\t\\t\\t\\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( p === RGB_ETC1_Format ) {\\n\\n\\t\\t\\t\\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\\n\\n\\t\\t\\t\\tif ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( p === MinEquation || p === MaxEquation ) {\\n\\n\\t\\t\\t\\textension = extensions.get( 'EXT_blend_minmax' );\\n\\n\\t\\t\\t\\tif ( extension !== null ) {\\n\\n\\t\\t\\t\\t\\tif ( p === MinEquation ) return extension.MIN_EXT;\\n\\t\\t\\t\\t\\tif ( p === MaxEquation ) return extension.MAX_EXT;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( p === UnsignedInt248Type ) {\\n\\n\\t\\t\\t\\textension = extensions.get( 'WEBGL_depth_texture' );\\n\\n\\t\\t\\t\\tif ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn 0;\\n\\n\\t\\t}\\n\\n\\t\\treturn { convert: convert };\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author supereggbert / http://www.paulbrunt.co.uk/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author szimek / https://github.com/szimek/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction WebGLRenderer( parameters ) {\\n\\n\\t\\tconsole.log( 'THREE.WebGLRenderer', REVISION );\\n\\n\\t\\tparameters = parameters || {};\\n\\n\\t\\tvar _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ),\\n\\t\\t\\t_context = parameters.context !== undefined ? parameters.context : null,\\n\\n\\t\\t\\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\\n\\t\\t\\t_depth = parameters.depth !== undefined ? parameters.depth : true,\\n\\t\\t\\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\\n\\t\\t\\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\\n\\t\\t\\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\\n\\t\\t\\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\\n\\t\\t\\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default';\\n\\n\\t\\tvar lightsArray = [];\\n\\t\\tvar shadowsArray = [];\\n\\n\\t\\tvar currentRenderList = null;\\n\\n\\t\\tvar spritesArray = [];\\n\\t\\tvar flaresArray = [];\\n\\n\\t\\t// public properties\\n\\n\\t\\tthis.domElement = _canvas;\\n\\t\\tthis.context = null;\\n\\n\\t\\t// clearing\\n\\n\\t\\tthis.autoClear = true;\\n\\t\\tthis.autoClearColor = true;\\n\\t\\tthis.autoClearDepth = true;\\n\\t\\tthis.autoClearStencil = true;\\n\\n\\t\\t// scene graph\\n\\n\\t\\tthis.sortObjects = true;\\n\\n\\t\\t// user-defined clipping\\n\\n\\t\\tthis.clippingPlanes = [];\\n\\t\\tthis.localClippingEnabled = false;\\n\\n\\t\\t// physically based shading\\n\\n\\t\\tthis.gammaFactor = 2.0;\\t// for backwards compatibility\\n\\t\\tthis.gammaInput = false;\\n\\t\\tthis.gammaOutput = false;\\n\\n\\t\\t// physical lights\\n\\n\\t\\tthis.physicallyCorrectLights = false;\\n\\n\\t\\t// tone mapping\\n\\n\\t\\tthis.toneMapping = LinearToneMapping;\\n\\t\\tthis.toneMappingExposure = 1.0;\\n\\t\\tthis.toneMappingWhitePoint = 1.0;\\n\\n\\t\\t// morphs\\n\\n\\t\\tthis.maxMorphTargets = 8;\\n\\t\\tthis.maxMorphNormals = 4;\\n\\n\\t\\t// internal properties\\n\\n\\t\\tvar _this = this,\\n\\n\\t\\t\\t_isContextLost = false,\\n\\n\\t\\t\\t// internal state cache\\n\\n\\t\\t\\t_currentRenderTarget = null,\\n\\t\\t\\t_currentFramebuffer = null,\\n\\t\\t\\t_currentMaterialId = - 1,\\n\\t\\t\\t_currentGeometryProgram = '',\\n\\n\\t\\t\\t_currentCamera = null,\\n\\t\\t\\t_currentArrayCamera = null,\\n\\n\\t\\t\\t_currentViewport = new Vector4(),\\n\\t\\t\\t_currentScissor = new Vector4(),\\n\\t\\t\\t_currentScissorTest = null,\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\t_usedTextureUnits = 0,\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\t_width = _canvas.width,\\n\\t\\t\\t_height = _canvas.height,\\n\\n\\t\\t\\t_pixelRatio = 1,\\n\\n\\t\\t\\t_viewport = new Vector4( 0, 0, _width, _height ),\\n\\t\\t\\t_scissor = new Vector4( 0, 0, _width, _height ),\\n\\t\\t\\t_scissorTest = false,\\n\\n\\t\\t\\t// frustum\\n\\n\\t\\t\\t_frustum = new Frustum(),\\n\\n\\t\\t\\t// clipping\\n\\n\\t\\t\\t_clipping = new WebGLClipping(),\\n\\t\\t\\t_clippingEnabled = false,\\n\\t\\t\\t_localClippingEnabled = false,\\n\\n\\t\\t\\t// camera matrices cache\\n\\n\\t\\t\\t_projScreenMatrix = new Matrix4(),\\n\\n\\t\\t\\t_vector3 = new Vector3(),\\n\\n\\t\\t\\t// info\\n\\n\\t\\t\\t_infoMemory = {\\n\\t\\t\\t\\tgeometries: 0,\\n\\t\\t\\t\\ttextures: 0\\n\\t\\t\\t},\\n\\n\\t\\t\\t_infoRender = {\\n\\n\\t\\t\\t\\tframe: 0,\\n\\t\\t\\t\\tcalls: 0,\\n\\t\\t\\t\\tvertices: 0,\\n\\t\\t\\t\\tfaces: 0,\\n\\t\\t\\t\\tpoints: 0\\n\\n\\t\\t\\t};\\n\\n\\t\\tthis.info = {\\n\\n\\t\\t\\trender: _infoRender,\\n\\t\\t\\tmemory: _infoMemory,\\n\\t\\t\\tprograms: null\\n\\n\\t\\t};\\n\\n\\t\\tfunction getTargetPixelRatio() {\\n\\n\\t\\t\\treturn _currentRenderTarget === null ? _pixelRatio : 1;\\n\\n\\t\\t}\\n\\n\\t\\t// initialize\\n\\n\\t\\tvar _gl;\\n\\n\\t\\ttry {\\n\\n\\t\\t\\tvar contextAttributes = {\\n\\t\\t\\t\\talpha: _alpha,\\n\\t\\t\\t\\tdepth: _depth,\\n\\t\\t\\t\\tstencil: _stencil,\\n\\t\\t\\t\\tantialias: _antialias,\\n\\t\\t\\t\\tpremultipliedAlpha: _premultipliedAlpha,\\n\\t\\t\\t\\tpreserveDrawingBuffer: _preserveDrawingBuffer,\\n\\t\\t\\t\\tpowerPreference: _powerPreference\\n\\t\\t\\t};\\n\\n\\t\\t\\t// event listeners must be registered before WebGL context is created, see #12753\\n\\n\\t\\t\\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\\n\\t\\t\\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\\n\\n\\t\\t\\t_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );\\n\\n\\t\\t\\tif ( _gl === null ) {\\n\\n\\t\\t\\t\\tif ( _canvas.getContext( 'webgl' ) !== null ) {\\n\\n\\t\\t\\t\\t\\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tthrow new Error( 'Error creating WebGL context.' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\\n\\n\\t\\t\\tif ( _gl.getShaderPrecisionFormat === undefined ) {\\n\\n\\t\\t\\t\\t_gl.getShaderPrecisionFormat = function () {\\n\\n\\t\\t\\t\\t\\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\\n\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t}\\n\\n\\t\\t} catch ( error ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\\n\\n\\t\\t}\\n\\n\\t\\tvar extensions, capabilities, state;\\n\\t\\tvar properties, textures, attributes, geometries, objects, lights;\\n\\t\\tvar programCache, renderLists;\\n\\n\\t\\tvar background, morphtargets, bufferRenderer, indexedBufferRenderer;\\n\\t\\tvar flareRenderer, spriteRenderer;\\n\\n\\t\\tvar utils;\\n\\n\\t\\tfunction initGLContext() {\\n\\n\\t\\t\\textensions = new WebGLExtensions( _gl );\\n\\t\\t\\textensions.get( 'WEBGL_depth_texture' );\\n\\t\\t\\textensions.get( 'OES_texture_float' );\\n\\t\\t\\textensions.get( 'OES_texture_float_linear' );\\n\\t\\t\\textensions.get( 'OES_texture_half_float' );\\n\\t\\t\\textensions.get( 'OES_texture_half_float_linear' );\\n\\t\\t\\textensions.get( 'OES_standard_derivatives' );\\n\\t\\t\\textensions.get( 'OES_element_index_uint' );\\n\\t\\t\\textensions.get( 'ANGLE_instanced_arrays' );\\n\\n\\t\\t\\tutils = new WebGLUtils( _gl, extensions );\\n\\n\\t\\t\\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\\n\\n\\t\\t\\tstate = new WebGLState( _gl, extensions, utils );\\n\\t\\t\\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\\n\\t\\t\\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\\n\\n\\t\\t\\tproperties = new WebGLProperties();\\n\\t\\t\\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, _infoMemory );\\n\\t\\t\\tattributes = new WebGLAttributes( _gl );\\n\\t\\t\\tgeometries = new WebGLGeometries( _gl, attributes, _infoMemory );\\n\\t\\t\\tobjects = new WebGLObjects( geometries, _infoRender );\\n\\t\\t\\tmorphtargets = new WebGLMorphtargets( _gl );\\n\\t\\t\\tprogramCache = new WebGLPrograms( _this, extensions, capabilities );\\n\\t\\t\\tlights = new WebGLLights();\\n\\t\\t\\trenderLists = new WebGLRenderLists();\\n\\n\\t\\t\\tbackground = new WebGLBackground( _this, state, geometries, _premultipliedAlpha );\\n\\n\\t\\t\\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender );\\n\\t\\t\\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender );\\n\\n\\t\\t\\tflareRenderer = new WebGLFlareRenderer( _this, _gl, state, textures, capabilities );\\n\\t\\t\\tspriteRenderer = new WebGLSpriteRenderer( _this, _gl, state, textures, capabilities );\\n\\n\\t\\t\\t_this.info.programs = programCache.programs;\\n\\n\\t\\t\\t_this.context = _gl;\\n\\t\\t\\t_this.capabilities = capabilities;\\n\\t\\t\\t_this.extensions = extensions;\\n\\t\\t\\t_this.properties = properties;\\n\\t\\t\\t_this.renderLists = renderLists;\\n\\t\\t\\t_this.state = state;\\n\\n\\t\\t}\\n\\n\\t\\tinitGLContext();\\n\\n\\t\\t// vr\\n\\n\\t\\tvar vr = new WebVRManager( _this );\\n\\n\\t\\tthis.vr = vr;\\n\\n\\t\\t// shadow map\\n\\n\\t\\tvar shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\\n\\n\\t\\tthis.shadowMap = shadowMap;\\n\\n\\t\\t// API\\n\\n\\t\\tthis.getContext = function () {\\n\\n\\t\\t\\treturn _gl;\\n\\n\\t\\t};\\n\\n\\t\\tthis.getContextAttributes = function () {\\n\\n\\t\\t\\treturn _gl.getContextAttributes();\\n\\n\\t\\t};\\n\\n\\t\\tthis.forceContextLoss = function () {\\n\\n\\t\\t\\tvar extension = extensions.get( 'WEBGL_lose_context' );\\n\\t\\t\\tif ( extension ) extension.loseContext();\\n\\n\\t\\t};\\n\\n\\t\\tthis.forceContextRestore = function () {\\n\\n\\t\\t\\tvar extension = extensions.get( 'WEBGL_lose_context' );\\n\\t\\t\\tif ( extension ) extension.restoreContext();\\n\\n\\t\\t};\\n\\n\\t\\tthis.getPixelRatio = function () {\\n\\n\\t\\t\\treturn _pixelRatio;\\n\\n\\t\\t};\\n\\n\\t\\tthis.setPixelRatio = function ( value ) {\\n\\n\\t\\t\\tif ( value === undefined ) return;\\n\\n\\t\\t\\t_pixelRatio = value;\\n\\n\\t\\t\\tthis.setSize( _width, _height, false );\\n\\n\\t\\t};\\n\\n\\t\\tthis.getSize = function () {\\n\\n\\t\\t\\treturn {\\n\\t\\t\\t\\twidth: _width,\\n\\t\\t\\t\\theight: _height\\n\\t\\t\\t};\\n\\n\\t\\t};\\n\\n\\t\\tthis.setSize = function ( width, height, updateStyle ) {\\n\\n\\t\\t\\tvar device = vr.getDevice();\\n\\n\\t\\t\\tif ( device && device.isPresenting ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Can\\\\'t change size while VR device is presenting.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t_width = width;\\n\\t\\t\\t_height = height;\\n\\n\\t\\t\\t_canvas.width = width * _pixelRatio;\\n\\t\\t\\t_canvas.height = height * _pixelRatio;\\n\\n\\t\\t\\tif ( updateStyle !== false ) {\\n\\n\\t\\t\\t\\t_canvas.style.width = width + 'px';\\n\\t\\t\\t\\t_canvas.style.height = height + 'px';\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.setViewport( 0, 0, width, height );\\n\\n\\t\\t};\\n\\n\\t\\tthis.getDrawingBufferSize = function () {\\n\\n\\t\\t\\treturn {\\n\\t\\t\\t\\twidth: _width * _pixelRatio,\\n\\t\\t\\t\\theight: _height * _pixelRatio\\n\\t\\t\\t};\\n\\n\\t\\t};\\n\\n\\t\\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\\n\\n\\t\\t\\t_width = width;\\n\\t\\t\\t_height = height;\\n\\n\\t\\t\\t_pixelRatio = pixelRatio;\\n\\n\\t\\t\\t_canvas.width = width * pixelRatio;\\n\\t\\t\\t_canvas.height = height * pixelRatio;\\n\\n\\t\\t\\tthis.setViewport( 0, 0, width, height );\\n\\n\\t\\t};\\n\\n\\t\\tthis.setViewport = function ( x, y, width, height ) {\\n\\n\\t\\t\\t_viewport.set( x, _height - y - height, width, height );\\n\\t\\t\\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) );\\n\\n\\t\\t};\\n\\n\\t\\tthis.setScissor = function ( x, y, width, height ) {\\n\\n\\t\\t\\t_scissor.set( x, _height - y - height, width, height );\\n\\t\\t\\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) );\\n\\n\\t\\t};\\n\\n\\t\\tthis.setScissorTest = function ( boolean ) {\\n\\n\\t\\t\\tstate.setScissorTest( _scissorTest = boolean );\\n\\n\\t\\t};\\n\\n\\t\\t// Clearing\\n\\n\\t\\tthis.getClearColor = function () {\\n\\n\\t\\t\\treturn background.getClearColor();\\n\\n\\t\\t};\\n\\n\\t\\tthis.setClearColor = function () {\\n\\n\\t\\t\\tbackground.setClearColor.apply( background, arguments );\\n\\n\\t\\t};\\n\\n\\t\\tthis.getClearAlpha = function () {\\n\\n\\t\\t\\treturn background.getClearAlpha();\\n\\n\\t\\t};\\n\\n\\t\\tthis.setClearAlpha = function () {\\n\\n\\t\\t\\tbackground.setClearAlpha.apply( background, arguments );\\n\\n\\t\\t};\\n\\n\\t\\tthis.clear = function ( color, depth, stencil ) {\\n\\n\\t\\t\\tvar bits = 0;\\n\\n\\t\\t\\tif ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT;\\n\\t\\t\\tif ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT;\\n\\t\\t\\tif ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT;\\n\\n\\t\\t\\t_gl.clear( bits );\\n\\n\\t\\t};\\n\\n\\t\\tthis.clearColor = function () {\\n\\n\\t\\t\\tthis.clear( true, false, false );\\n\\n\\t\\t};\\n\\n\\t\\tthis.clearDepth = function () {\\n\\n\\t\\t\\tthis.clear( false, true, false );\\n\\n\\t\\t};\\n\\n\\t\\tthis.clearStencil = function () {\\n\\n\\t\\t\\tthis.clear( false, false, true );\\n\\n\\t\\t};\\n\\n\\t\\tthis.clearTarget = function ( renderTarget, color, depth, stencil ) {\\n\\n\\t\\t\\tthis.setRenderTarget( renderTarget );\\n\\t\\t\\tthis.clear( color, depth, stencil );\\n\\n\\t\\t};\\n\\n\\t\\t//\\n\\n\\t\\tthis.dispose = function () {\\n\\n\\t\\t\\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\\n\\t\\t\\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\\n\\n\\t\\t\\trenderLists.dispose();\\n\\n\\t\\t\\tvr.dispose();\\n\\n\\t\\t};\\n\\n\\t\\t// Events\\n\\n\\t\\tfunction onContextLost( event ) {\\n\\n\\t\\t\\tevent.preventDefault();\\n\\n\\t\\t\\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\\n\\n\\t\\t\\t_isContextLost = true;\\n\\n\\t\\t}\\n\\n\\t\\tfunction onContextRestore( /* event */ ) {\\n\\n\\t\\t\\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\\n\\n\\t\\t\\t_isContextLost = false;\\n\\n\\t\\t\\tinitGLContext();\\n\\n\\t\\t}\\n\\n\\t\\tfunction onMaterialDispose( event ) {\\n\\n\\t\\t\\tvar material = event.target;\\n\\n\\t\\t\\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\\n\\n\\t\\t\\tdeallocateMaterial( material );\\n\\n\\t\\t}\\n\\n\\t\\t// Buffer deallocation\\n\\n\\t\\tfunction deallocateMaterial( material ) {\\n\\n\\t\\t\\treleaseMaterialProgramReference( material );\\n\\n\\t\\t\\tproperties.remove( material );\\n\\n\\t\\t}\\n\\n\\n\\t\\tfunction releaseMaterialProgramReference( material ) {\\n\\n\\t\\t\\tvar programInfo = properties.get( material ).program;\\n\\n\\t\\t\\tmaterial.program = undefined;\\n\\n\\t\\t\\tif ( programInfo !== undefined ) {\\n\\n\\t\\t\\t\\tprogramCache.releaseProgram( programInfo );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// Buffer rendering\\n\\n\\t\\tfunction renderObjectImmediate( object, program, material ) {\\n\\n\\t\\t\\tobject.render( function ( object ) {\\n\\n\\t\\t\\t\\t_this.renderBufferImmediate( object, program, material );\\n\\n\\t\\t\\t} );\\n\\n\\t\\t}\\n\\n\\t\\tthis.renderBufferImmediate = function ( object, program, material ) {\\n\\n\\t\\t\\tstate.initAttributes();\\n\\n\\t\\t\\tvar buffers = properties.get( object );\\n\\n\\t\\t\\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\\n\\t\\t\\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\\n\\t\\t\\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\\n\\t\\t\\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\\n\\n\\t\\t\\tvar programAttributes = program.getAttributes();\\n\\n\\t\\t\\tif ( object.hasPositions ) {\\n\\n\\t\\t\\t\\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );\\n\\t\\t\\t\\t_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );\\n\\n\\t\\t\\t\\tstate.enableAttribute( programAttributes.position );\\n\\t\\t\\t\\t_gl.vertexAttribPointer( programAttributes.position, 3, _gl.FLOAT, false, 0, 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( object.hasNormals ) {\\n\\n\\t\\t\\t\\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );\\n\\n\\t\\t\\t\\tif ( ! material.isMeshPhongMaterial &&\\n\\t\\t\\t\\t\\t! material.isMeshStandardMaterial &&\\n\\t\\t\\t\\t\\t! material.isMeshNormalMaterial &&\\n\\t\\t\\t\\t\\tmaterial.flatShading === true ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = object.count * 3; i < l; i += 9 ) {\\n\\n\\t\\t\\t\\t\\t\\tvar array = object.normalArray;\\n\\n\\t\\t\\t\\t\\t\\tvar nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3;\\n\\t\\t\\t\\t\\t\\tvar ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3;\\n\\t\\t\\t\\t\\t\\tvar nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3;\\n\\n\\t\\t\\t\\t\\t\\tarray[ i + 0 ] = nx;\\n\\t\\t\\t\\t\\t\\tarray[ i + 1 ] = ny;\\n\\t\\t\\t\\t\\t\\tarray[ i + 2 ] = nz;\\n\\n\\t\\t\\t\\t\\t\\tarray[ i + 3 ] = nx;\\n\\t\\t\\t\\t\\t\\tarray[ i + 4 ] = ny;\\n\\t\\t\\t\\t\\t\\tarray[ i + 5 ] = nz;\\n\\n\\t\\t\\t\\t\\t\\tarray[ i + 6 ] = nx;\\n\\t\\t\\t\\t\\t\\tarray[ i + 7 ] = ny;\\n\\t\\t\\t\\t\\t\\tarray[ i + 8 ] = nz;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );\\n\\n\\t\\t\\t\\tstate.enableAttribute( programAttributes.normal );\\n\\n\\t\\t\\t\\t_gl.vertexAttribPointer( programAttributes.normal, 3, _gl.FLOAT, false, 0, 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( object.hasUvs && material.map ) {\\n\\n\\t\\t\\t\\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );\\n\\t\\t\\t\\t_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );\\n\\n\\t\\t\\t\\tstate.enableAttribute( programAttributes.uv );\\n\\n\\t\\t\\t\\t_gl.vertexAttribPointer( programAttributes.uv, 2, _gl.FLOAT, false, 0, 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( object.hasColors && material.vertexColors !== NoColors ) {\\n\\n\\t\\t\\t\\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );\\n\\t\\t\\t\\t_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );\\n\\n\\t\\t\\t\\tstate.enableAttribute( programAttributes.color );\\n\\n\\t\\t\\t\\t_gl.vertexAttribPointer( programAttributes.color, 3, _gl.FLOAT, false, 0, 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.disableUnusedAttributes();\\n\\n\\t\\t\\t_gl.drawArrays( _gl.TRIANGLES, 0, object.count );\\n\\n\\t\\t\\tobject.count = 0;\\n\\n\\t\\t};\\n\\n\\t\\tthis.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) {\\n\\n\\t\\t\\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\\n\\n\\t\\t\\tstate.setMaterial( material, frontFaceCW );\\n\\n\\t\\t\\tvar program = setProgram( camera, fog, material, object );\\n\\t\\t\\tvar geometryProgram = geometry.id + '_' + program.id + '_' + ( material.wireframe === true );\\n\\n\\t\\t\\tvar updateBuffers = false;\\n\\n\\t\\t\\tif ( geometryProgram !== _currentGeometryProgram ) {\\n\\n\\t\\t\\t\\t_currentGeometryProgram = geometryProgram;\\n\\t\\t\\t\\tupdateBuffers = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( object.morphTargetInfluences ) {\\n\\n\\t\\t\\t\\tmorphtargets.update( object, geometry, material, program );\\n\\n\\t\\t\\t\\tupdateBuffers = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar index = geometry.index;\\n\\t\\t\\tvar position = geometry.attributes.position;\\n\\t\\t\\tvar rangeFactor = 1;\\n\\n\\t\\t\\tif ( material.wireframe === true ) {\\n\\n\\t\\t\\t\\tindex = geometries.getWireframeAttribute( geometry );\\n\\t\\t\\t\\trangeFactor = 2;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar attribute;\\n\\t\\t\\tvar renderer = bufferRenderer;\\n\\n\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\tattribute = attributes.get( index );\\n\\n\\t\\t\\t\\trenderer = indexedBufferRenderer;\\n\\t\\t\\t\\trenderer.setIndex( attribute );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( updateBuffers ) {\\n\\n\\t\\t\\t\\tsetupVertexAttributes( material, program, geometry );\\n\\n\\t\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\t\\t_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, attribute.buffer );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar dataCount = 0;\\n\\n\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\tdataCount = index.count;\\n\\n\\t\\t\\t} else if ( position !== undefined ) {\\n\\n\\t\\t\\t\\tdataCount = position.count;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar rangeStart = geometry.drawRange.start * rangeFactor;\\n\\t\\t\\tvar rangeCount = geometry.drawRange.count * rangeFactor;\\n\\n\\t\\t\\tvar groupStart = group !== null ? group.start * rangeFactor : 0;\\n\\t\\t\\tvar groupCount = group !== null ? group.count * rangeFactor : Infinity;\\n\\n\\t\\t\\tvar drawStart = Math.max( rangeStart, groupStart );\\n\\t\\t\\tvar drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\\n\\n\\t\\t\\tvar drawCount = Math.max( 0, drawEnd - drawStart + 1 );\\n\\n\\t\\t\\tif ( drawCount === 0 ) return;\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tif ( object.isMesh ) {\\n\\n\\t\\t\\t\\tif ( material.wireframe === true ) {\\n\\n\\t\\t\\t\\t\\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\\n\\t\\t\\t\\t\\trenderer.setMode( _gl.LINES );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tswitch ( object.drawMode ) {\\n\\n\\t\\t\\t\\t\\t\\tcase TrianglesDrawMode:\\n\\t\\t\\t\\t\\t\\t\\trenderer.setMode( _gl.TRIANGLES );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase TriangleStripDrawMode:\\n\\t\\t\\t\\t\\t\\t\\trenderer.setMode( _gl.TRIANGLE_STRIP );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase TriangleFanDrawMode:\\n\\t\\t\\t\\t\\t\\t\\trenderer.setMode( _gl.TRIANGLE_FAN );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t} else if ( object.isLine ) {\\n\\n\\t\\t\\t\\tvar lineWidth = material.linewidth;\\n\\n\\t\\t\\t\\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\\n\\n\\t\\t\\t\\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\\n\\n\\t\\t\\t\\tif ( object.isLineSegments ) {\\n\\n\\t\\t\\t\\t\\trenderer.setMode( _gl.LINES );\\n\\n\\t\\t\\t\\t} else if ( object.isLineLoop ) {\\n\\n\\t\\t\\t\\t\\trenderer.setMode( _gl.LINE_LOOP );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\trenderer.setMode( _gl.LINE_STRIP );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( object.isPoints ) {\\n\\n\\t\\t\\t\\trenderer.setMode( _gl.POINTS );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( geometry && geometry.isInstancedBufferGeometry ) {\\n\\n\\t\\t\\t\\tif ( geometry.maxInstancedCount > 0 ) {\\n\\n\\t\\t\\t\\t\\trenderer.renderInstances( geometry, drawStart, drawCount );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\trenderer.render( drawStart, drawCount );\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t\\tfunction setupVertexAttributes( material, program, geometry, startIndex ) {\\n\\n\\t\\t\\tif ( geometry && geometry.isInstancedBufferGeometry ) {\\n\\n\\t\\t\\t\\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) {\\n\\n\\t\\t\\t\\t\\tconsole.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\\n\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( startIndex === undefined ) startIndex = 0;\\n\\n\\t\\t\\tstate.initAttributes();\\n\\n\\t\\t\\tvar geometryAttributes = geometry.attributes;\\n\\n\\t\\t\\tvar programAttributes = program.getAttributes();\\n\\n\\t\\t\\tvar materialDefaultAttributeValues = material.defaultAttributeValues;\\n\\n\\t\\t\\tfor ( var name in programAttributes ) {\\n\\n\\t\\t\\t\\tvar programAttribute = programAttributes[ name ];\\n\\n\\t\\t\\t\\tif ( programAttribute >= 0 ) {\\n\\n\\t\\t\\t\\t\\tvar geometryAttribute = geometryAttributes[ name ];\\n\\n\\t\\t\\t\\t\\tif ( geometryAttribute !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tvar normalized = geometryAttribute.normalized;\\n\\t\\t\\t\\t\\t\\tvar size = geometryAttribute.itemSize;\\n\\n\\t\\t\\t\\t\\t\\tvar attribute = attributes.get( geometryAttribute );\\n\\n\\t\\t\\t\\t\\t\\t// TODO Attribute may not be available on context restore\\n\\n\\t\\t\\t\\t\\t\\tif ( attribute === undefined ) continue;\\n\\n\\t\\t\\t\\t\\t\\tvar buffer = attribute.buffer;\\n\\t\\t\\t\\t\\t\\tvar type = attribute.type;\\n\\t\\t\\t\\t\\t\\tvar bytesPerElement = attribute.bytesPerElement;\\n\\n\\t\\t\\t\\t\\t\\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar data = geometryAttribute.data;\\n\\t\\t\\t\\t\\t\\t\\tvar stride = data.stride;\\n\\t\\t\\t\\t\\t\\t\\tvar offset = geometryAttribute.offset;\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( data && data.isInstancedInterleavedBuffer ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tstate.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( geometry.maxInstancedCount === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgeometry.maxInstancedCount = data.meshPerAttribute * data.count;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tstate.enableAttribute( programAttribute );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\\n\\t\\t\\t\\t\\t\\t\\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, ( startIndex * stride + offset ) * bytesPerElement );\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( geometryAttribute.isInstancedBufferAttribute ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tstate.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( geometry.maxInstancedCount === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgeometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tstate.enableAttribute( programAttribute );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t_gl.bindBuffer( _gl.ARRAY_BUFFER, buffer );\\n\\t\\t\\t\\t\\t\\t\\t_gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * bytesPerElement );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else if ( materialDefaultAttributeValues !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tvar value = materialDefaultAttributeValues[ name ];\\n\\n\\t\\t\\t\\t\\t\\tif ( value !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tswitch ( value.length ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase 2:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t_gl.vertexAttrib2fv( programAttribute, value );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase 3:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t_gl.vertexAttrib3fv( programAttribute, value );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcase 4:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t_gl.vertexAttrib4fv( programAttribute, value );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tdefault:\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t_gl.vertexAttrib1fv( programAttribute, value );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.disableUnusedAttributes();\\n\\n\\t\\t}\\n\\n\\t\\t// Compile\\n\\n\\t\\tthis.compile = function ( scene, camera ) {\\n\\n\\t\\t\\tlightsArray.length = 0;\\n\\t\\t\\tshadowsArray.length = 0;\\n\\n\\t\\t\\tscene.traverse( function ( object ) {\\n\\n\\t\\t\\t\\tif ( object.isLight ) {\\n\\n\\t\\t\\t\\t\\tlightsArray.push( object );\\n\\n\\t\\t\\t\\t\\tif ( object.castShadow ) {\\n\\n\\t\\t\\t\\t\\t\\tshadowsArray.push( object );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} );\\n\\n\\t\\t\\tlights.setup( lightsArray, shadowsArray, camera );\\n\\n\\t\\t\\tscene.traverse( function ( object ) {\\n\\n\\t\\t\\t\\tif ( object.material ) {\\n\\n\\t\\t\\t\\t\\tif ( Array.isArray( object.material ) ) {\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < object.material.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tinitMaterial( object.material[ i ], scene.fog, object );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tinitMaterial( object.material, scene.fog, object );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} );\\n\\n\\t\\t};\\n\\n\\t\\t// Animation Loop\\n\\n\\t\\tvar isAnimating = false;\\n\\t\\tvar onAnimationFrame = null;\\n\\n\\t\\tfunction start() {\\n\\n\\t\\t\\tif ( isAnimating ) return;\\n\\n\\t\\t\\tvar device = vr.getDevice();\\n\\n\\t\\t\\tif ( device && device.isPresenting ) {\\n\\n\\t\\t\\t\\tdevice.requestAnimationFrame( loop );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\twindow.requestAnimationFrame( loop );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tisAnimating = true;\\n\\n\\t\\t}\\n\\n\\t\\tfunction loop( time ) {\\n\\n\\t\\t\\tif ( onAnimationFrame !== null ) onAnimationFrame( time );\\n\\n\\t\\t\\tvar device = vr.getDevice();\\n\\n\\t\\t\\tif ( device && device.isPresenting ) {\\n\\n\\t\\t\\t\\tdevice.requestAnimationFrame( loop );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\twindow.requestAnimationFrame( loop );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tthis.animate = function ( callback ) {\\n\\n\\t\\t\\tonAnimationFrame = callback;\\n\\t\\t\\tstart();\\n\\n\\t\\t};\\n\\n\\t\\t// Rendering\\n\\n\\t\\tthis.render = function ( scene, camera, renderTarget, forceClear ) {\\n\\n\\t\\t\\tif ( ! ( camera && camera.isCamera ) ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( _isContextLost ) return;\\n\\n\\t\\t\\t// reset caching for this frame\\n\\n\\t\\t\\t_currentGeometryProgram = '';\\n\\t\\t\\t_currentMaterialId = - 1;\\n\\t\\t\\t_currentCamera = null;\\n\\n\\t\\t\\t// update scene graph\\n\\n\\t\\t\\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\\n\\n\\t\\t\\t// update camera matrices and frustum\\n\\n\\t\\t\\tif ( camera.parent === null ) camera.updateMatrixWorld();\\n\\n\\t\\t\\tif ( vr.enabled ) {\\n\\n\\t\\t\\t\\tcamera = vr.getCamera( camera );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\\n\\t\\t\\t_frustum.setFromMatrix( _projScreenMatrix );\\n\\n\\t\\t\\tlightsArray.length = 0;\\n\\t\\t\\tshadowsArray.length = 0;\\n\\n\\t\\t\\tspritesArray.length = 0;\\n\\t\\t\\tflaresArray.length = 0;\\n\\n\\t\\t\\t_localClippingEnabled = this.localClippingEnabled;\\n\\t\\t\\t_clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\\n\\n\\t\\t\\tcurrentRenderList = renderLists.get( scene, camera );\\n\\t\\t\\tcurrentRenderList.init();\\n\\n\\t\\t\\tprojectObject( scene, camera, _this.sortObjects );\\n\\n\\t\\t\\tif ( _this.sortObjects === true ) {\\n\\n\\t\\t\\t\\tcurrentRenderList.sort();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\ttextures.updateVideoTextures();\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tif ( _clippingEnabled ) _clipping.beginShadows();\\n\\n\\t\\t\\tshadowMap.render( shadowsArray, scene, camera );\\n\\n\\t\\t\\tlights.setup( lightsArray, shadowsArray, camera );\\n\\n\\t\\t\\tif ( _clippingEnabled ) _clipping.endShadows();\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\t_infoRender.frame ++;\\n\\t\\t\\t_infoRender.calls = 0;\\n\\t\\t\\t_infoRender.vertices = 0;\\n\\t\\t\\t_infoRender.faces = 0;\\n\\t\\t\\t_infoRender.points = 0;\\n\\n\\t\\t\\tif ( renderTarget === undefined ) {\\n\\n\\t\\t\\t\\trenderTarget = null;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.setRenderTarget( renderTarget );\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tbackground.render( currentRenderList, scene, camera, forceClear );\\n\\n\\t\\t\\t// render scene\\n\\n\\t\\t\\tvar opaqueObjects = currentRenderList.opaque;\\n\\t\\t\\tvar transparentObjects = currentRenderList.transparent;\\n\\n\\t\\t\\tif ( scene.overrideMaterial ) {\\n\\n\\t\\t\\t\\tvar overrideMaterial = scene.overrideMaterial;\\n\\n\\t\\t\\t\\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );\\n\\t\\t\\t\\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// opaque pass (front-to-back order)\\n\\n\\t\\t\\t\\tif ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );\\n\\n\\t\\t\\t\\t// transparent pass (back-to-front order)\\n\\n\\t\\t\\t\\tif ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// custom renderers\\n\\n\\t\\t\\tspriteRenderer.render( spritesArray, scene, camera );\\n\\t\\t\\tflareRenderer.render( flaresArray, scene, camera, _currentViewport );\\n\\n\\t\\t\\t// Generate mipmap if we're using any kind of mipmap filtering\\n\\n\\t\\t\\tif ( renderTarget ) {\\n\\n\\t\\t\\t\\ttextures.updateRenderTargetMipmap( renderTarget );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Ensure depth buffer writing is enabled so it can be cleared on next render\\n\\n\\t\\t\\tstate.buffers.depth.setTest( true );\\n\\t\\t\\tstate.buffers.depth.setMask( true );\\n\\t\\t\\tstate.buffers.color.setMask( true );\\n\\n\\t\\t\\tstate.setPolygonOffset( false );\\n\\n\\t\\t\\tif ( vr.enabled ) {\\n\\n\\t\\t\\t\\tvr.submitFrame();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// _gl.finish();\\n\\n\\t\\t};\\n\\n\\t\\t/*\\n\\t\\t// TODO Duplicated code (Frustum)\\n\\n\\t\\tvar _sphere = new Sphere();\\n\\n\\t\\tfunction isObjectViewable( object ) {\\n\\n\\t\\t\\tvar geometry = object.geometry;\\n\\n\\t\\t\\tif ( geometry.boundingSphere === null )\\n\\t\\t\\t\\tgeometry.computeBoundingSphere();\\n\\n\\t\\t\\t_sphere.copy( geometry.boundingSphere ).\\n\\t\\t\\tapplyMatrix4( object.matrixWorld );\\n\\n\\t\\t\\treturn isSphereViewable( _sphere );\\n\\n\\t\\t}\\n\\n\\t\\tfunction isSpriteViewable( sprite ) {\\n\\n\\t\\t\\t_sphere.center.set( 0, 0, 0 );\\n\\t\\t\\t_sphere.radius = 0.7071067811865476;\\n\\t\\t\\t_sphere.applyMatrix4( sprite.matrixWorld );\\n\\n\\t\\t\\treturn isSphereViewable( _sphere );\\n\\n\\t\\t}\\n\\n\\t\\tfunction isSphereViewable( sphere ) {\\n\\n\\t\\t\\tif ( ! _frustum.intersectsSphere( sphere ) ) return false;\\n\\n\\t\\t\\tvar numPlanes = _clipping.numPlanes;\\n\\n\\t\\t\\tif ( numPlanes === 0 ) return true;\\n\\n\\t\\t\\tvar planes = _this.clippingPlanes,\\n\\n\\t\\t\\t\\tcenter = sphere.center,\\n\\t\\t\\t\\tnegRad = - sphere.radius,\\n\\t\\t\\t\\ti = 0;\\n\\n\\t\\t\\tdo {\\n\\n\\t\\t\\t\\t// out when deeper than radius in the negative halfspace\\n\\t\\t\\t\\tif ( planes[ i ].distanceToPoint( center ) < negRad ) return false;\\n\\n\\t\\t\\t} while ( ++ i !== numPlanes );\\n\\n\\t\\t\\treturn true;\\n\\n\\t\\t}\\n\\t\\t*/\\n\\n\\t\\tfunction projectObject( object, camera, sortObjects ) {\\n\\n\\t\\t\\tif ( object.visible === false ) return;\\n\\n\\t\\t\\tvar visible = object.layers.test( camera.layers );\\n\\n\\t\\t\\tif ( visible ) {\\n\\n\\t\\t\\t\\tif ( object.isLight ) {\\n\\n\\t\\t\\t\\t\\tlightsArray.push( object );\\n\\n\\t\\t\\t\\t\\tif ( object.castShadow ) {\\n\\n\\t\\t\\t\\t\\t\\tshadowsArray.push( object );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( object.isSprite ) {\\n\\n\\t\\t\\t\\t\\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\\n\\n\\t\\t\\t\\t\\t\\tspritesArray.push( object );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( object.isLensFlare ) {\\n\\n\\t\\t\\t\\t\\tflaresArray.push( object );\\n\\n\\t\\t\\t\\t} else if ( object.isImmediateRenderObject ) {\\n\\n\\t\\t\\t\\t\\tif ( sortObjects ) {\\n\\n\\t\\t\\t\\t\\t\\t_vector3.setFromMatrixPosition( object.matrixWorld )\\n\\t\\t\\t\\t\\t\\t\\t.applyMatrix4( _projScreenMatrix );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tcurrentRenderList.push( object, null, object.material, _vector3.z, null );\\n\\n\\t\\t\\t\\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\\n\\n\\t\\t\\t\\t\\tif ( object.isSkinnedMesh ) {\\n\\n\\t\\t\\t\\t\\t\\tobject.skeleton.update();\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( sortObjects ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t_vector3.setFromMatrixPosition( object.matrixWorld )\\n\\t\\t\\t\\t\\t\\t\\t\\t.applyMatrix4( _projScreenMatrix );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tvar geometry = objects.update( object );\\n\\t\\t\\t\\t\\t\\tvar material = object.material;\\n\\n\\t\\t\\t\\t\\t\\tif ( Array.isArray( material ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar groups = geometry.groups;\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var i = 0, l = groups.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar group = groups[ i ];\\n\\t\\t\\t\\t\\t\\t\\t\\tvar groupMaterial = material[ group.materialIndex ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( groupMaterial && groupMaterial.visible ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcurrentRenderList.push( object, geometry, groupMaterial, _vector3.z, group );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t} else if ( material.visible ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tcurrentRenderList.push( object, geometry, material, _vector3.z, null );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar children = object.children;\\n\\n\\t\\t\\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tprojectObject( children[ i ], camera, sortObjects );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction renderObjects( renderList, scene, camera, overrideMaterial ) {\\n\\n\\t\\t\\tfor ( var i = 0, l = renderList.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar renderItem = renderList[ i ];\\n\\n\\t\\t\\t\\tvar object = renderItem.object;\\n\\t\\t\\t\\tvar geometry = renderItem.geometry;\\n\\t\\t\\t\\tvar material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;\\n\\t\\t\\t\\tvar group = renderItem.group;\\n\\n\\t\\t\\t\\tif ( camera.isArrayCamera ) {\\n\\n\\t\\t\\t\\t\\t_currentArrayCamera = camera;\\n\\n\\t\\t\\t\\t\\tvar cameras = camera.cameras;\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0, jl = cameras.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar camera2 = cameras[ j ];\\n\\n\\t\\t\\t\\t\\t\\tif ( object.layers.test( camera2.layers ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar bounds = camera2.bounds;\\n\\n\\t\\t\\t\\t\\t\\t\\tvar x = bounds.x * _width;\\n\\t\\t\\t\\t\\t\\t\\tvar y = bounds.y * _height;\\n\\t\\t\\t\\t\\t\\t\\tvar width = bounds.z * _width;\\n\\t\\t\\t\\t\\t\\t\\tvar height = bounds.w * _height;\\n\\n\\t\\t\\t\\t\\t\\t\\tstate.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) );\\n\\n\\t\\t\\t\\t\\t\\t\\trenderObject( object, scene, camera2, geometry, material, group );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t_currentArrayCamera = null;\\n\\n\\t\\t\\t\\t\\trenderObject( object, scene, camera, geometry, material, group );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction renderObject( object, scene, camera, geometry, material, group ) {\\n\\n\\t\\t\\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\\n\\n\\t\\t\\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\\n\\t\\t\\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\\n\\n\\t\\t\\tif ( object.isImmediateRenderObject ) {\\n\\n\\t\\t\\t\\tvar frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\\n\\n\\t\\t\\t\\tstate.setMaterial( material, frontFaceCW );\\n\\n\\t\\t\\t\\tvar program = setProgram( camera, scene.fog, material, object );\\n\\n\\t\\t\\t\\t_currentGeometryProgram = '';\\n\\n\\t\\t\\t\\trenderObjectImmediate( object, program, material );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t_this.renderBufferDirect( camera, scene.fog, geometry, material, object, group );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\\n\\n\\t\\t}\\n\\n\\t\\tfunction initMaterial( material, fog, object ) {\\n\\n\\t\\t\\tvar materialProperties = properties.get( material );\\n\\n\\t\\t\\tvar parameters = programCache.getParameters(\\n\\t\\t\\t\\tmaterial, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object );\\n\\n\\t\\t\\tvar code = programCache.getProgramCode( material, parameters );\\n\\n\\t\\t\\tvar program = materialProperties.program;\\n\\t\\t\\tvar programChange = true;\\n\\n\\t\\t\\tif ( program === undefined ) {\\n\\n\\t\\t\\t\\t// new material\\n\\t\\t\\t\\tmaterial.addEventListener( 'dispose', onMaterialDispose );\\n\\n\\t\\t\\t} else if ( program.code !== code ) {\\n\\n\\t\\t\\t\\t// changed glsl or parameters\\n\\t\\t\\t\\treleaseMaterialProgramReference( material );\\n\\n\\t\\t\\t} else if ( parameters.shaderID !== undefined ) {\\n\\n\\t\\t\\t\\t// same glsl and uniform list\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// only rebuild uniform list\\n\\t\\t\\t\\tprogramChange = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( programChange ) {\\n\\n\\t\\t\\t\\tif ( parameters.shaderID ) {\\n\\n\\t\\t\\t\\t\\tvar shader = ShaderLib[ parameters.shaderID ];\\n\\n\\t\\t\\t\\t\\tmaterialProperties.shader = {\\n\\t\\t\\t\\t\\t\\tname: material.type,\\n\\t\\t\\t\\t\\t\\tuniforms: UniformsUtils.clone( shader.uniforms ),\\n\\t\\t\\t\\t\\t\\tvertexShader: shader.vertexShader,\\n\\t\\t\\t\\t\\t\\tfragmentShader: shader.fragmentShader\\n\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tmaterialProperties.shader = {\\n\\t\\t\\t\\t\\t\\tname: material.type,\\n\\t\\t\\t\\t\\t\\tuniforms: material.uniforms,\\n\\t\\t\\t\\t\\t\\tvertexShader: material.vertexShader,\\n\\t\\t\\t\\t\\t\\tfragmentShader: material.fragmentShader\\n\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tmaterial.onBeforeCompile( materialProperties.shader );\\n\\n\\t\\t\\t\\tprogram = programCache.acquireProgram( material, materialProperties.shader, parameters, code );\\n\\n\\t\\t\\t\\tmaterialProperties.program = program;\\n\\t\\t\\t\\tmaterial.program = program;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar programAttributes = program.getAttributes();\\n\\n\\t\\t\\tif ( material.morphTargets ) {\\n\\n\\t\\t\\t\\tmaterial.numSupportedMorphTargets = 0;\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < _this.maxMorphTargets; i ++ ) {\\n\\n\\t\\t\\t\\t\\tif ( programAttributes[ 'morphTarget' + i ] >= 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tmaterial.numSupportedMorphTargets ++;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.morphNormals ) {\\n\\n\\t\\t\\t\\tmaterial.numSupportedMorphNormals = 0;\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < _this.maxMorphNormals; i ++ ) {\\n\\n\\t\\t\\t\\t\\tif ( programAttributes[ 'morphNormal' + i ] >= 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tmaterial.numSupportedMorphNormals ++;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar uniforms = materialProperties.shader.uniforms;\\n\\n\\t\\t\\tif ( ! material.isShaderMaterial &&\\n\\t\\t\\t\\t! material.isRawShaderMaterial ||\\n\\t\\t\\t\\tmaterial.clipping === true ) {\\n\\n\\t\\t\\t\\tmaterialProperties.numClippingPlanes = _clipping.numPlanes;\\n\\t\\t\\t\\tmaterialProperties.numIntersection = _clipping.numIntersection;\\n\\t\\t\\t\\tuniforms.clippingPlanes = _clipping.uniform;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tmaterialProperties.fog = fog;\\n\\n\\t\\t\\t// store the light setup it was created for\\n\\n\\t\\t\\tmaterialProperties.lightsHash = lights.state.hash;\\n\\n\\t\\t\\tif ( material.lights ) {\\n\\n\\t\\t\\t\\t// wire up the material to this renderer's lighting state\\n\\n\\t\\t\\t\\tuniforms.ambientLightColor.value = lights.state.ambient;\\n\\t\\t\\t\\tuniforms.directionalLights.value = lights.state.directional;\\n\\t\\t\\t\\tuniforms.spotLights.value = lights.state.spot;\\n\\t\\t\\t\\tuniforms.rectAreaLights.value = lights.state.rectArea;\\n\\t\\t\\t\\tuniforms.pointLights.value = lights.state.point;\\n\\t\\t\\t\\tuniforms.hemisphereLights.value = lights.state.hemi;\\n\\n\\t\\t\\t\\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\\n\\t\\t\\t\\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\\n\\t\\t\\t\\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\\n\\t\\t\\t\\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\\n\\t\\t\\t\\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\\n\\t\\t\\t\\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\\n\\t\\t\\t\\t// TODO (abelnation): add area lights shadow info to uniforms\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar progUniforms = materialProperties.program.getUniforms(),\\n\\t\\t\\t\\tuniformsList =\\n\\t\\t\\t\\t\\tWebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\\n\\n\\t\\t\\tmaterialProperties.uniformsList = uniformsList;\\n\\n\\t\\t}\\n\\n\\t\\tfunction setProgram( camera, fog, material, object ) {\\n\\n\\t\\t\\t_usedTextureUnits = 0;\\n\\n\\t\\t\\tvar materialProperties = properties.get( material );\\n\\n\\t\\t\\tif ( _clippingEnabled ) {\\n\\n\\t\\t\\t\\tif ( _localClippingEnabled || camera !== _currentCamera ) {\\n\\n\\t\\t\\t\\t\\tvar useCache =\\n\\t\\t\\t\\t\\t\\tcamera === _currentCamera &&\\n\\t\\t\\t\\t\\t\\tmaterial.id === _currentMaterialId;\\n\\n\\t\\t\\t\\t\\t// we might want to call this function with some ClippingGroup\\n\\t\\t\\t\\t\\t// object instead of the material, once it becomes feasible\\n\\t\\t\\t\\t\\t// (#8465, #8379)\\n\\t\\t\\t\\t\\t_clipping.setState(\\n\\t\\t\\t\\t\\t\\tmaterial.clippingPlanes, material.clipIntersection, material.clipShadows,\\n\\t\\t\\t\\t\\t\\tcamera, materialProperties, useCache );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.needsUpdate === false ) {\\n\\n\\t\\t\\t\\tif ( materialProperties.program === undefined ) {\\n\\n\\t\\t\\t\\t\\tmaterial.needsUpdate = true;\\n\\n\\t\\t\\t\\t} else if ( material.fog && materialProperties.fog !== fog ) {\\n\\n\\t\\t\\t\\t\\tmaterial.needsUpdate = true;\\n\\n\\t\\t\\t\\t} else if ( material.lights && materialProperties.lightsHash !== lights.state.hash ) {\\n\\n\\t\\t\\t\\t\\tmaterial.needsUpdate = true;\\n\\n\\t\\t\\t\\t} else if ( materialProperties.numClippingPlanes !== undefined &&\\n\\t\\t\\t\\t\\t( materialProperties.numClippingPlanes !== _clipping.numPlanes ||\\n\\t\\t\\t\\t\\tmaterialProperties.numIntersection !== _clipping.numIntersection ) ) {\\n\\n\\t\\t\\t\\t\\tmaterial.needsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.needsUpdate ) {\\n\\n\\t\\t\\t\\tinitMaterial( material, fog, object );\\n\\t\\t\\t\\tmaterial.needsUpdate = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar refreshProgram = false;\\n\\t\\t\\tvar refreshMaterial = false;\\n\\t\\t\\tvar refreshLights = false;\\n\\n\\t\\t\\tvar program = materialProperties.program,\\n\\t\\t\\t\\tp_uniforms = program.getUniforms(),\\n\\t\\t\\t\\tm_uniforms = materialProperties.shader.uniforms;\\n\\n\\t\\t\\tif ( state.useProgram( program.program ) ) {\\n\\n\\t\\t\\t\\trefreshProgram = true;\\n\\t\\t\\t\\trefreshMaterial = true;\\n\\t\\t\\t\\trefreshLights = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.id !== _currentMaterialId ) {\\n\\n\\t\\t\\t\\t_currentMaterialId = material.id;\\n\\n\\t\\t\\t\\trefreshMaterial = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( refreshProgram || camera !== _currentCamera ) {\\n\\n\\t\\t\\t\\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\\n\\n\\t\\t\\t\\tif ( capabilities.logarithmicDepthBuffer ) {\\n\\n\\t\\t\\t\\t\\tp_uniforms.setValue( _gl, 'logDepthBufFC',\\n\\t\\t\\t\\t\\t\\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Avoid unneeded uniform updates per ArrayCamera's sub-camera\\n\\n\\t\\t\\t\\tif ( _currentCamera !== ( _currentArrayCamera || camera ) ) {\\n\\n\\t\\t\\t\\t\\t_currentCamera = ( _currentArrayCamera || camera );\\n\\n\\t\\t\\t\\t\\t// lighting uniforms depend on the camera so enforce an update\\n\\t\\t\\t\\t\\t// now, in case this material supports lights - or later, when\\n\\t\\t\\t\\t\\t// the next material that does gets activated:\\n\\n\\t\\t\\t\\t\\trefreshMaterial = true;\\t\\t// set to true on material change\\n\\t\\t\\t\\t\\trefreshLights = true;\\t\\t// remains set until update done\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// load material specific uniforms\\n\\t\\t\\t\\t// (shader material also gets them for the sake of genericity)\\n\\n\\t\\t\\t\\tif ( material.isShaderMaterial ||\\n\\t\\t\\t\\t\\tmaterial.isMeshPhongMaterial ||\\n\\t\\t\\t\\t\\tmaterial.isMeshStandardMaterial ||\\n\\t\\t\\t\\t\\tmaterial.envMap ) {\\n\\n\\t\\t\\t\\t\\tvar uCamPos = p_uniforms.map.cameraPosition;\\n\\n\\t\\t\\t\\t\\tif ( uCamPos !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tuCamPos.setValue( _gl,\\n\\t\\t\\t\\t\\t\\t\\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( material.isMeshPhongMaterial ||\\n\\t\\t\\t\\t\\tmaterial.isMeshLambertMaterial ||\\n\\t\\t\\t\\t\\tmaterial.isMeshBasicMaterial ||\\n\\t\\t\\t\\t\\tmaterial.isMeshStandardMaterial ||\\n\\t\\t\\t\\t\\tmaterial.isShaderMaterial ||\\n\\t\\t\\t\\t\\tmaterial.skinning ) {\\n\\n\\t\\t\\t\\t\\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// skinning uniforms must be set even if material didn't change\\n\\t\\t\\t// auto-setting of texture unit for bone texture must go before other textures\\n\\t\\t\\t// not sure why, but otherwise weird things happen\\n\\n\\t\\t\\tif ( material.skinning ) {\\n\\n\\t\\t\\t\\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\\n\\t\\t\\t\\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\\n\\n\\t\\t\\t\\tvar skeleton = object.skeleton;\\n\\n\\t\\t\\t\\tif ( skeleton ) {\\n\\n\\t\\t\\t\\t\\tvar bones = skeleton.bones;\\n\\n\\t\\t\\t\\t\\tif ( capabilities.floatVertexTextures ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( skeleton.boneTexture === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// layout (1 matrix = 4 pixels)\\n\\t\\t\\t\\t\\t\\t\\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\\n\\t\\t\\t\\t\\t\\t\\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\\n\\t\\t\\t\\t\\t\\t\\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\\n\\t\\t\\t\\t\\t\\t\\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\\n\\t\\t\\t\\t\\t\\t\\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\\n\\n\\n\\t\\t\\t\\t\\t\\t\\tvar size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\\n\\t\\t\\t\\t\\t\\t\\tsize = _Math.ceilPowerOfTwo( size );\\n\\t\\t\\t\\t\\t\\t\\tsize = Math.max( size, 4 );\\n\\n\\t\\t\\t\\t\\t\\t\\tvar boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\\n\\t\\t\\t\\t\\t\\t\\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\\n\\n\\t\\t\\t\\t\\t\\t\\tvar boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\\n\\n\\t\\t\\t\\t\\t\\t\\tskeleton.boneMatrices = boneMatrices;\\n\\t\\t\\t\\t\\t\\t\\tskeleton.boneTexture = boneTexture;\\n\\t\\t\\t\\t\\t\\t\\tskeleton.boneTextureSize = size;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture );\\n\\t\\t\\t\\t\\t\\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( refreshMaterial ) {\\n\\n\\t\\t\\t\\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\\n\\t\\t\\t\\tp_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint );\\n\\n\\t\\t\\t\\tif ( material.lights ) {\\n\\n\\t\\t\\t\\t\\t// the current material requires lighting info\\n\\n\\t\\t\\t\\t\\t// note: all lighting uniforms are always set correctly\\n\\t\\t\\t\\t\\t// they simply reference the renderer's state for their\\n\\t\\t\\t\\t\\t// values\\n\\t\\t\\t\\t\\t//\\n\\t\\t\\t\\t\\t// use the current material's .needsUpdate flags to set\\n\\t\\t\\t\\t\\t// the GL state when required\\n\\n\\t\\t\\t\\t\\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// refresh uniforms common to several materials\\n\\n\\t\\t\\t\\tif ( fog && material.fog ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsFog( m_uniforms, fog );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( material.isMeshBasicMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsCommon( m_uniforms, material );\\n\\n\\t\\t\\t\\t} else if ( material.isMeshLambertMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsCommon( m_uniforms, material );\\n\\t\\t\\t\\t\\trefreshUniformsLambert( m_uniforms, material );\\n\\n\\t\\t\\t\\t} else if ( material.isMeshPhongMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsCommon( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\tif ( material.isMeshToonMaterial ) {\\n\\n\\t\\t\\t\\t\\t\\trefreshUniformsToon( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\trefreshUniformsPhong( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( material.isMeshStandardMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsCommon( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\tif ( material.isMeshPhysicalMaterial ) {\\n\\n\\t\\t\\t\\t\\t\\trefreshUniformsPhysical( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\trefreshUniformsStandard( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( material.isMeshDepthMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsCommon( m_uniforms, material );\\n\\t\\t\\t\\t\\trefreshUniformsDepth( m_uniforms, material );\\n\\n\\t\\t\\t\\t} else if ( material.isMeshDistanceMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsCommon( m_uniforms, material );\\n\\t\\t\\t\\t\\trefreshUniformsDistance( m_uniforms, material );\\n\\n\\t\\t\\t\\t} else if ( material.isMeshNormalMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsCommon( m_uniforms, material );\\n\\t\\t\\t\\t\\trefreshUniformsNormal( m_uniforms, material );\\n\\n\\t\\t\\t\\t} else if ( material.isLineBasicMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsLine( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\tif ( material.isLineDashedMaterial ) {\\n\\n\\t\\t\\t\\t\\t\\trefreshUniformsDash( m_uniforms, material );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( material.isPointsMaterial ) {\\n\\n\\t\\t\\t\\t\\trefreshUniformsPoints( m_uniforms, material );\\n\\n\\t\\t\\t\\t} else if ( material.isShadowMaterial ) {\\n\\n\\t\\t\\t\\t\\tm_uniforms.color.value = material.color;\\n\\t\\t\\t\\t\\tm_uniforms.opacity.value = material.opacity;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// RectAreaLight Texture\\n\\t\\t\\t\\t// TODO (mrdoob): Find a nicer implementation\\n\\n\\t\\t\\t\\tif ( m_uniforms.ltcMat !== undefined ) m_uniforms.ltcMat.value = UniformsLib.LTC_MAT_TEXTURE;\\n\\t\\t\\t\\tif ( m_uniforms.ltcMag !== undefined ) m_uniforms.ltcMag.value = UniformsLib.LTC_MAG_TEXTURE;\\n\\n\\t\\t\\t\\tWebGLUniforms.upload(\\n\\t\\t\\t\\t\\t_gl, materialProperties.uniformsList, m_uniforms, _this );\\n\\n\\t\\t\\t}\\n\\n\\n\\t\\t\\t// common matrices\\n\\n\\t\\t\\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\\n\\t\\t\\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\\n\\t\\t\\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\\n\\n\\t\\t\\treturn program;\\n\\n\\t\\t}\\n\\n\\t\\t// Uniforms (refresh uniforms objects)\\n\\n\\t\\tfunction refreshUniformsCommon( uniforms, material ) {\\n\\n\\t\\t\\tuniforms.opacity.value = material.opacity;\\n\\n\\t\\t\\tif ( material.color ) {\\n\\n\\t\\t\\t\\tuniforms.diffuse.value = material.color;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.emissive ) {\\n\\n\\t\\t\\t\\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.map ) {\\n\\n\\t\\t\\t\\tuniforms.map.value = material.map;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.alphaMap ) {\\n\\n\\t\\t\\t\\tuniforms.alphaMap.value = material.alphaMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.specularMap ) {\\n\\n\\t\\t\\t\\tuniforms.specularMap.value = material.specularMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.envMap ) {\\n\\n\\t\\t\\t\\tuniforms.envMap.value = material.envMap;\\n\\n\\t\\t\\t\\t// don't flip CubeTexture envMaps, flip everything else:\\n\\t\\t\\t\\t// WebGLRenderTargetCube will be flipped for backwards compatibility\\n\\t\\t\\t\\t// WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture\\n\\t\\t\\t\\t// this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future\\n\\t\\t\\t\\tuniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1;\\n\\n\\t\\t\\t\\tuniforms.reflectivity.value = material.reflectivity;\\n\\t\\t\\t\\tuniforms.refractionRatio.value = material.refractionRatio;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.lightMap ) {\\n\\n\\t\\t\\t\\tuniforms.lightMap.value = material.lightMap;\\n\\t\\t\\t\\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.aoMap ) {\\n\\n\\t\\t\\t\\tuniforms.aoMap.value = material.aoMap;\\n\\t\\t\\t\\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// uv repeat and offset setting priorities\\n\\t\\t\\t// 1. color map\\n\\t\\t\\t// 2. specular map\\n\\t\\t\\t// 3. normal map\\n\\t\\t\\t// 4. bump map\\n\\t\\t\\t// 5. alpha map\\n\\t\\t\\t// 6. emissive map\\n\\n\\t\\t\\tvar uvScaleMap;\\n\\n\\t\\t\\tif ( material.map ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.map;\\n\\n\\t\\t\\t} else if ( material.specularMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.specularMap;\\n\\n\\t\\t\\t} else if ( material.displacementMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.displacementMap;\\n\\n\\t\\t\\t} else if ( material.normalMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.normalMap;\\n\\n\\t\\t\\t} else if ( material.bumpMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.bumpMap;\\n\\n\\t\\t\\t} else if ( material.roughnessMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.roughnessMap;\\n\\n\\t\\t\\t} else if ( material.metalnessMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.metalnessMap;\\n\\n\\t\\t\\t} else if ( material.alphaMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.alphaMap;\\n\\n\\t\\t\\t} else if ( material.emissiveMap ) {\\n\\n\\t\\t\\t\\tuvScaleMap = material.emissiveMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( uvScaleMap !== undefined ) {\\n\\n\\t\\t\\t\\t// backwards compatibility\\n\\t\\t\\t\\tif ( uvScaleMap.isWebGLRenderTarget ) {\\n\\n\\t\\t\\t\\t\\tuvScaleMap = uvScaleMap.texture;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( uvScaleMap.matrixAutoUpdate === true ) {\\n\\n\\t\\t\\t\\t\\tvar offset = uvScaleMap.offset;\\n\\t\\t\\t\\t\\tvar repeat = uvScaleMap.repeat;\\n\\t\\t\\t\\t\\tvar rotation = uvScaleMap.rotation;\\n\\t\\t\\t\\t\\tvar center = uvScaleMap.center;\\n\\n\\t\\t\\t\\t\\tuvScaleMap.matrix.setUvTransform( offset.x, offset.y, repeat.x, repeat.y, rotation, center.x, center.y );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsLine( uniforms, material ) {\\n\\n\\t\\t\\tuniforms.diffuse.value = material.color;\\n\\t\\t\\tuniforms.opacity.value = material.opacity;\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsDash( uniforms, material ) {\\n\\n\\t\\t\\tuniforms.dashSize.value = material.dashSize;\\n\\t\\t\\tuniforms.totalSize.value = material.dashSize + material.gapSize;\\n\\t\\t\\tuniforms.scale.value = material.scale;\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsPoints( uniforms, material ) {\\n\\n\\t\\t\\tuniforms.diffuse.value = material.color;\\n\\t\\t\\tuniforms.opacity.value = material.opacity;\\n\\t\\t\\tuniforms.size.value = material.size * _pixelRatio;\\n\\t\\t\\tuniforms.scale.value = _height * 0.5;\\n\\n\\t\\t\\tuniforms.map.value = material.map;\\n\\n\\t\\t\\tif ( material.map !== null ) {\\n\\n\\t\\t\\t\\tif ( material.map.matrixAutoUpdate === true ) {\\n\\n\\t\\t\\t\\t\\tvar offset = material.map.offset;\\n\\t\\t\\t\\t\\tvar repeat = material.map.repeat;\\n\\t\\t\\t\\t\\tvar rotation = material.map.rotation;\\n\\t\\t\\t\\t\\tvar center = material.map.center;\\n\\n\\t\\t\\t\\t\\tmaterial.map.matrix.setUvTransform( offset.x, offset.y, repeat.x, repeat.y, rotation, center.x, center.y );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tuniforms.uvTransform.value.copy( material.map.matrix );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsFog( uniforms, fog ) {\\n\\n\\t\\t\\tuniforms.fogColor.value = fog.color;\\n\\n\\t\\t\\tif ( fog.isFog ) {\\n\\n\\t\\t\\t\\tuniforms.fogNear.value = fog.near;\\n\\t\\t\\t\\tuniforms.fogFar.value = fog.far;\\n\\n\\t\\t\\t} else if ( fog.isFogExp2 ) {\\n\\n\\t\\t\\t\\tuniforms.fogDensity.value = fog.density;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsLambert( uniforms, material ) {\\n\\n\\t\\t\\tif ( material.emissiveMap ) {\\n\\n\\t\\t\\t\\tuniforms.emissiveMap.value = material.emissiveMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsPhong( uniforms, material ) {\\n\\n\\t\\t\\tuniforms.specular.value = material.specular;\\n\\t\\t\\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\\n\\n\\t\\t\\tif ( material.emissiveMap ) {\\n\\n\\t\\t\\t\\tuniforms.emissiveMap.value = material.emissiveMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.bumpMap ) {\\n\\n\\t\\t\\t\\tuniforms.bumpMap.value = material.bumpMap;\\n\\t\\t\\t\\tuniforms.bumpScale.value = material.bumpScale;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.normalMap ) {\\n\\n\\t\\t\\t\\tuniforms.normalMap.value = material.normalMap;\\n\\t\\t\\t\\tuniforms.normalScale.value.copy( material.normalScale );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.displacementMap ) {\\n\\n\\t\\t\\t\\tuniforms.displacementMap.value = material.displacementMap;\\n\\t\\t\\t\\tuniforms.displacementScale.value = material.displacementScale;\\n\\t\\t\\t\\tuniforms.displacementBias.value = material.displacementBias;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsToon( uniforms, material ) {\\n\\n\\t\\t\\trefreshUniformsPhong( uniforms, material );\\n\\n\\t\\t\\tif ( material.gradientMap ) {\\n\\n\\t\\t\\t\\tuniforms.gradientMap.value = material.gradientMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsStandard( uniforms, material ) {\\n\\n\\t\\t\\tuniforms.roughness.value = material.roughness;\\n\\t\\t\\tuniforms.metalness.value = material.metalness;\\n\\n\\t\\t\\tif ( material.roughnessMap ) {\\n\\n\\t\\t\\t\\tuniforms.roughnessMap.value = material.roughnessMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.metalnessMap ) {\\n\\n\\t\\t\\t\\tuniforms.metalnessMap.value = material.metalnessMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.emissiveMap ) {\\n\\n\\t\\t\\t\\tuniforms.emissiveMap.value = material.emissiveMap;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.bumpMap ) {\\n\\n\\t\\t\\t\\tuniforms.bumpMap.value = material.bumpMap;\\n\\t\\t\\t\\tuniforms.bumpScale.value = material.bumpScale;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.normalMap ) {\\n\\n\\t\\t\\t\\tuniforms.normalMap.value = material.normalMap;\\n\\t\\t\\t\\tuniforms.normalScale.value.copy( material.normalScale );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.displacementMap ) {\\n\\n\\t\\t\\t\\tuniforms.displacementMap.value = material.displacementMap;\\n\\t\\t\\t\\tuniforms.displacementScale.value = material.displacementScale;\\n\\t\\t\\t\\tuniforms.displacementBias.value = material.displacementBias;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.envMap ) {\\n\\n\\t\\t\\t\\t//uniforms.envMap.value = material.envMap; // part of uniforms common\\n\\t\\t\\t\\tuniforms.envMapIntensity.value = material.envMapIntensity;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsPhysical( uniforms, material ) {\\n\\n\\t\\t\\tuniforms.clearCoat.value = material.clearCoat;\\n\\t\\t\\tuniforms.clearCoatRoughness.value = material.clearCoatRoughness;\\n\\n\\t\\t\\trefreshUniformsStandard( uniforms, material );\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsDepth( uniforms, material ) {\\n\\n\\t\\t\\tif ( material.displacementMap ) {\\n\\n\\t\\t\\t\\tuniforms.displacementMap.value = material.displacementMap;\\n\\t\\t\\t\\tuniforms.displacementScale.value = material.displacementScale;\\n\\t\\t\\t\\tuniforms.displacementBias.value = material.displacementBias;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsDistance( uniforms, material ) {\\n\\n\\t\\t\\tif ( material.displacementMap ) {\\n\\n\\t\\t\\t\\tuniforms.displacementMap.value = material.displacementMap;\\n\\t\\t\\t\\tuniforms.displacementScale.value = material.displacementScale;\\n\\t\\t\\t\\tuniforms.displacementBias.value = material.displacementBias;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tuniforms.referencePosition.value.copy( material.referencePosition );\\n\\t\\t\\tuniforms.nearDistance.value = material.nearDistance;\\n\\t\\t\\tuniforms.farDistance.value = material.farDistance;\\n\\n\\t\\t}\\n\\n\\t\\tfunction refreshUniformsNormal( uniforms, material ) {\\n\\n\\t\\t\\tif ( material.bumpMap ) {\\n\\n\\t\\t\\t\\tuniforms.bumpMap.value = material.bumpMap;\\n\\t\\t\\t\\tuniforms.bumpScale.value = material.bumpScale;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.normalMap ) {\\n\\n\\t\\t\\t\\tuniforms.normalMap.value = material.normalMap;\\n\\t\\t\\t\\tuniforms.normalScale.value.copy( material.normalScale );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( material.displacementMap ) {\\n\\n\\t\\t\\t\\tuniforms.displacementMap.value = material.displacementMap;\\n\\t\\t\\t\\tuniforms.displacementScale.value = material.displacementScale;\\n\\t\\t\\t\\tuniforms.displacementBias.value = material.displacementBias;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\\n\\n\\t\\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\\n\\n\\t\\t\\tuniforms.ambientLightColor.needsUpdate = value;\\n\\n\\t\\t\\tuniforms.directionalLights.needsUpdate = value;\\n\\t\\t\\tuniforms.pointLights.needsUpdate = value;\\n\\t\\t\\tuniforms.spotLights.needsUpdate = value;\\n\\t\\t\\tuniforms.rectAreaLights.needsUpdate = value;\\n\\t\\t\\tuniforms.hemisphereLights.needsUpdate = value;\\n\\n\\t\\t}\\n\\n\\t\\t// GL state setting\\n\\n\\t\\tthis.setFaceCulling = function ( cullFace, frontFaceDirection ) {\\n\\n\\t\\t\\tstate.setCullFace( cullFace );\\n\\t\\t\\tstate.setFlipSided( frontFaceDirection === FrontFaceDirectionCW );\\n\\n\\t\\t};\\n\\n\\t\\t// Textures\\n\\n\\t\\tfunction allocTextureUnit() {\\n\\n\\t\\t\\tvar textureUnit = _usedTextureUnits;\\n\\n\\t\\t\\tif ( textureUnit >= capabilities.maxTextures ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t_usedTextureUnits += 1;\\n\\n\\t\\t\\treturn textureUnit;\\n\\n\\t\\t}\\n\\n\\t\\tthis.allocTextureUnit = allocTextureUnit;\\n\\n\\t\\t// this.setTexture2D = setTexture2D;\\n\\t\\tthis.setTexture2D = ( function () {\\n\\n\\t\\t\\tvar warned = false;\\n\\n\\t\\t\\t// backwards compatibility: peel texture.texture\\n\\t\\t\\treturn function setTexture2D( texture, slot ) {\\n\\n\\t\\t\\t\\tif ( texture && texture.isWebGLRenderTarget ) {\\n\\n\\t\\t\\t\\t\\tif ( ! warned ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( \\\"THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.\\\" );\\n\\t\\t\\t\\t\\t\\twarned = true;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttexture = texture.texture;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttextures.setTexture2D( texture, slot );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() );\\n\\n\\t\\tthis.setTexture = ( function () {\\n\\n\\t\\t\\tvar warned = false;\\n\\n\\t\\t\\treturn function setTexture( texture, slot ) {\\n\\n\\t\\t\\t\\tif ( ! warned ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( \\\"THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead.\\\" );\\n\\t\\t\\t\\t\\twarned = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttextures.setTexture2D( texture, slot );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() );\\n\\n\\t\\tthis.setTextureCube = ( function () {\\n\\n\\t\\t\\tvar warned = false;\\n\\n\\t\\t\\treturn function setTextureCube( texture, slot ) {\\n\\n\\t\\t\\t\\t// backwards compatibility: peel texture.texture\\n\\t\\t\\t\\tif ( texture && texture.isWebGLRenderTargetCube ) {\\n\\n\\t\\t\\t\\t\\tif ( ! warned ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( \\\"THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead.\\\" );\\n\\t\\t\\t\\t\\t\\twarned = true;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttexture = texture.texture;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture\\n\\t\\t\\t\\t// TODO: unify these code paths\\n\\t\\t\\t\\tif ( ( texture && texture.isCubeTexture ) ||\\n\\t\\t\\t\\t\\t( Array.isArray( texture.image ) && texture.image.length === 6 ) ) {\\n\\n\\t\\t\\t\\t\\t// CompressedTexture can have Array in image :/\\n\\n\\t\\t\\t\\t\\t// this function alone should take care of cube textures\\n\\t\\t\\t\\t\\ttextures.setTextureCube( texture, slot );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// assumed: texture property of THREE.WebGLRenderTargetCube\\n\\n\\t\\t\\t\\t\\ttextures.setTextureCubeDynamic( texture, slot );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() );\\n\\n\\t\\tthis.getRenderTarget = function () {\\n\\n\\t\\t\\treturn _currentRenderTarget;\\n\\n\\t\\t};\\n\\n\\t\\tthis.setRenderTarget = function ( renderTarget ) {\\n\\n\\t\\t\\t_currentRenderTarget = renderTarget;\\n\\n\\t\\t\\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\\n\\n\\t\\t\\t\\ttextures.setupRenderTarget( renderTarget );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar framebuffer = null;\\n\\t\\t\\tvar isCube = false;\\n\\n\\t\\t\\tif ( renderTarget ) {\\n\\n\\t\\t\\t\\tvar __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\\n\\n\\t\\t\\t\\tif ( renderTarget.isWebGLRenderTargetCube ) {\\n\\n\\t\\t\\t\\t\\tframebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ];\\n\\t\\t\\t\\t\\tisCube = true;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tframebuffer = __webglFramebuffer;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t_currentViewport.copy( renderTarget.viewport );\\n\\t\\t\\t\\t_currentScissor.copy( renderTarget.scissor );\\n\\t\\t\\t\\t_currentScissorTest = renderTarget.scissorTest;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio );\\n\\t\\t\\t\\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio );\\n\\t\\t\\t\\t_currentScissorTest = _scissorTest;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( _currentFramebuffer !== framebuffer ) {\\n\\n\\t\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\\n\\t\\t\\t\\t_currentFramebuffer = framebuffer;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tstate.viewport( _currentViewport );\\n\\t\\t\\tstate.scissor( _currentScissor );\\n\\t\\t\\tstate.setScissorTest( _currentScissorTest );\\n\\n\\t\\t\\tif ( isCube ) {\\n\\n\\t\\t\\t\\tvar textureProperties = properties.get( renderTarget.texture );\\n\\t\\t\\t\\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel );\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t\\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) {\\n\\n\\t\\t\\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar framebuffer = properties.get( renderTarget ).__webglFramebuffer;\\n\\n\\t\\t\\tif ( framebuffer ) {\\n\\n\\t\\t\\t\\tvar restore = false;\\n\\n\\t\\t\\t\\tif ( framebuffer !== _currentFramebuffer ) {\\n\\n\\t\\t\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\\n\\n\\t\\t\\t\\t\\trestore = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttry {\\n\\n\\t\\t\\t\\t\\tvar texture = renderTarget.texture;\\n\\t\\t\\t\\t\\tvar textureFormat = texture.format;\\n\\t\\t\\t\\t\\tvar textureType = texture.type;\\n\\n\\t\\t\\t\\t\\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\\n\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513)\\n\\t\\t\\t\\t\\t\\t! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\\n\\t\\t\\t\\t\\t\\t! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\\n\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {\\n\\n\\t\\t\\t\\t\\t\\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\\n\\n\\t\\t\\t\\t\\t\\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} finally {\\n\\n\\t\\t\\t\\t\\tif ( restore ) {\\n\\n\\t\\t\\t\\t\\t\\t_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction FogExp2( color, density ) {\\n\\n\\t\\tthis.name = '';\\n\\n\\t\\tthis.color = new Color( color );\\n\\t\\tthis.density = ( density !== undefined ) ? density : 0.00025;\\n\\n\\t}\\n\\n\\tFogExp2.prototype.isFogExp2 = true;\\n\\n\\tFogExp2.prototype.clone = function () {\\n\\n\\t\\treturn new FogExp2( this.color.getHex(), this.density );\\n\\n\\t};\\n\\n\\tFogExp2.prototype.toJSON = function ( /* meta */ ) {\\n\\n\\t\\treturn {\\n\\t\\t\\ttype: 'FogExp2',\\n\\t\\t\\tcolor: this.color.getHex(),\\n\\t\\t\\tdensity: this.density\\n\\t\\t};\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction Fog( color, near, far ) {\\n\\n\\t\\tthis.name = '';\\n\\n\\t\\tthis.color = new Color( color );\\n\\n\\t\\tthis.near = ( near !== undefined ) ? near : 1;\\n\\t\\tthis.far = ( far !== undefined ) ? far : 1000;\\n\\n\\t}\\n\\n\\tFog.prototype.isFog = true;\\n\\n\\tFog.prototype.clone = function () {\\n\\n\\t\\treturn new Fog( this.color.getHex(), this.near, this.far );\\n\\n\\t};\\n\\n\\tFog.prototype.toJSON = function ( /* meta */ ) {\\n\\n\\t\\treturn {\\n\\t\\t\\ttype: 'Fog',\\n\\t\\t\\tcolor: this.color.getHex(),\\n\\t\\t\\tnear: this.near,\\n\\t\\t\\tfar: this.far\\n\\t\\t};\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Scene() {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Scene';\\n\\n\\t\\tthis.background = null;\\n\\t\\tthis.fog = null;\\n\\t\\tthis.overrideMaterial = null;\\n\\n\\t\\tthis.autoUpdate = true; // checked by the renderer\\n\\n\\t}\\n\\n\\tScene.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Scene,\\n\\n\\t\\tcopy: function ( source, recursive ) {\\n\\n\\t\\t\\tObject3D.prototype.copy.call( this, source, recursive );\\n\\n\\t\\t\\tif ( source.background !== null ) this.background = source.background.clone();\\n\\t\\t\\tif ( source.fog !== null ) this.fog = source.fog.clone();\\n\\t\\t\\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\\n\\n\\t\\t\\tthis.autoUpdate = source.autoUpdate;\\n\\t\\t\\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar data = Object3D.prototype.toJSON.call( this, meta );\\n\\n\\t\\t\\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\\n\\t\\t\\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction LensFlare( texture, size, distance, blending, color ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.lensFlares = [];\\n\\n\\t\\tthis.positionScreen = new Vector3();\\n\\t\\tthis.customUpdateCallback = undefined;\\n\\n\\t\\tif ( texture !== undefined ) {\\n\\n\\t\\t\\tthis.add( texture, size, distance, blending, color );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tLensFlare.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: LensFlare,\\n\\n\\t\\tisLensFlare: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tObject3D.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.positionScreen.copy( source.positionScreen );\\n\\t\\t\\tthis.customUpdateCallback = source.customUpdateCallback;\\n\\n\\t\\t\\tfor ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tthis.lensFlares.push( source.lensFlares[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tadd: function ( texture, size, distance, blending, color, opacity ) {\\n\\n\\t\\t\\tif ( size === undefined ) size = - 1;\\n\\t\\t\\tif ( distance === undefined ) distance = 0;\\n\\t\\t\\tif ( opacity === undefined ) opacity = 1;\\n\\t\\t\\tif ( color === undefined ) color = new Color( 0xffffff );\\n\\t\\t\\tif ( blending === undefined ) blending = NormalBlending;\\n\\n\\t\\t\\tdistance = Math.min( distance, Math.max( 0, distance ) );\\n\\n\\t\\t\\tthis.lensFlares.push( {\\n\\t\\t\\t\\ttexture: texture,\\t// THREE.Texture\\n\\t\\t\\t\\tsize: size, \\t\\t// size in pixels (-1 = use texture.width)\\n\\t\\t\\t\\tdistance: distance, \\t// distance (0-1) from light source (0=at light source)\\n\\t\\t\\t\\tx: 0, y: 0, z: 0,\\t// screen position (-1 => 1) z = 0 is in front z = 1 is back\\n\\t\\t\\t\\tscale: 1, \\t\\t// scale\\n\\t\\t\\t\\trotation: 0, \\t\\t// rotation\\n\\t\\t\\t\\topacity: opacity,\\t// opacity\\n\\t\\t\\t\\tcolor: color,\\t\\t// color\\n\\t\\t\\t\\tblending: blending\\t// blending\\n\\t\\t\\t} );\\n\\n\\t\\t},\\n\\n\\t\\t/*\\n\\t\\t * Update lens flares update positions on all flares based on the screen position\\n\\t\\t * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.\\n\\t\\t */\\n\\n\\t\\tupdateLensFlares: function () {\\n\\n\\t\\t\\tvar f, fl = this.lensFlares.length;\\n\\t\\t\\tvar flare;\\n\\t\\t\\tvar vecX = - this.positionScreen.x * 2;\\n\\t\\t\\tvar vecY = - this.positionScreen.y * 2;\\n\\n\\t\\t\\tfor ( f = 0; f < fl; f ++ ) {\\n\\n\\t\\t\\t\\tflare = this.lensFlares[ f ];\\n\\n\\t\\t\\t\\tflare.x = this.positionScreen.x + vecX * flare.distance;\\n\\t\\t\\t\\tflare.y = this.positionScreen.y + vecY * flare.distance;\\n\\n\\t\\t\\t\\tflare.wantedRotation = flare.x * Math.PI * 0.25;\\n\\t\\t\\t\\tflare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * opacity: ,\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t *\\tuvOffset: new THREE.Vector2(),\\n\\t *\\tuvScale: new THREE.Vector2()\\n\\t * }\\n\\t */\\n\\n\\tfunction SpriteMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'SpriteMaterial';\\n\\n\\t\\tthis.color = new Color( 0xffffff );\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.rotation = 0;\\n\\n\\t\\tthis.fog = false;\\n\\t\\tthis.lights = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tSpriteMaterial.prototype = Object.create( Material.prototype );\\n\\tSpriteMaterial.prototype.constructor = SpriteMaterial;\\n\\tSpriteMaterial.prototype.isSpriteMaterial = true;\\n\\n\\tSpriteMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.color.copy( source.color );\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.rotation = source.rotation;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction Sprite( material ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Sprite';\\n\\n\\t\\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\\n\\n\\t}\\n\\n\\tSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Sprite,\\n\\n\\t\\tisSprite: true,\\n\\n\\t\\traycast: ( function () {\\n\\n\\t\\t\\tvar intersectPoint = new Vector3();\\n\\t\\t\\tvar worldPosition = new Vector3();\\n\\t\\t\\tvar worldScale = new Vector3();\\n\\n\\t\\t\\treturn function raycast( raycaster, intersects ) {\\n\\n\\t\\t\\t\\tworldPosition.setFromMatrixPosition( this.matrixWorld );\\n\\t\\t\\t\\traycaster.ray.closestPointToPoint( worldPosition, intersectPoint );\\n\\n\\t\\t\\t\\tworldScale.setFromMatrixScale( this.matrixWorld );\\n\\t\\t\\t\\tvar guessSizeSq = worldScale.x * worldScale.y / 4;\\n\\n\\t\\t\\t\\tif ( worldPosition.distanceToSquared( intersectPoint ) > guessSizeSq ) return;\\n\\n\\t\\t\\t\\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\\n\\n\\t\\t\\t\\tif ( distance < raycaster.near || distance > raycaster.far ) return;\\n\\n\\t\\t\\t\\tintersects.push( {\\n\\n\\t\\t\\t\\t\\tdistance: distance,\\n\\t\\t\\t\\t\\tpoint: intersectPoint.clone(),\\n\\t\\t\\t\\t\\tface: null,\\n\\t\\t\\t\\t\\tobject: this\\n\\n\\t\\t\\t\\t} );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() ),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.material ).copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction LOD() {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'LOD';\\n\\n\\t\\tObject.defineProperties( this, {\\n\\t\\t\\tlevels: {\\n\\t\\t\\t\\tenumerable: true,\\n\\t\\t\\t\\tvalue: []\\n\\t\\t\\t}\\n\\t\\t} );\\n\\n\\t}\\n\\n\\tLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: LOD,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tObject3D.prototype.copy.call( this, source, false );\\n\\n\\t\\t\\tvar levels = source.levels;\\n\\n\\t\\t\\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar level = levels[ i ];\\n\\n\\t\\t\\t\\tthis.addLevel( level.object.clone(), level.distance );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\taddLevel: function ( object, distance ) {\\n\\n\\t\\t\\tif ( distance === undefined ) distance = 0;\\n\\n\\t\\t\\tdistance = Math.abs( distance );\\n\\n\\t\\t\\tvar levels = this.levels;\\n\\n\\t\\t\\tfor ( var l = 0; l < levels.length; l ++ ) {\\n\\n\\t\\t\\t\\tif ( distance < levels[ l ].distance ) {\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tlevels.splice( l, 0, { distance: distance, object: object } );\\n\\n\\t\\t\\tthis.add( object );\\n\\n\\t\\t},\\n\\n\\t\\tgetObjectForDistance: function ( distance ) {\\n\\n\\t\\t\\tvar levels = this.levels;\\n\\n\\t\\t\\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tif ( distance < levels[ i ].distance ) {\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn levels[ i - 1 ].object;\\n\\n\\t\\t},\\n\\n\\t\\traycast: ( function () {\\n\\n\\t\\t\\tvar matrixPosition = new Vector3();\\n\\n\\t\\t\\treturn function raycast( raycaster, intersects ) {\\n\\n\\t\\t\\t\\tmatrixPosition.setFromMatrixPosition( this.matrixWorld );\\n\\n\\t\\t\\t\\tvar distance = raycaster.ray.origin.distanceTo( matrixPosition );\\n\\n\\t\\t\\t\\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() ),\\n\\n\\t\\tupdate: function () {\\n\\n\\t\\t\\tvar v1 = new Vector3();\\n\\t\\t\\tvar v2 = new Vector3();\\n\\n\\t\\t\\treturn function update( camera ) {\\n\\n\\t\\t\\t\\tvar levels = this.levels;\\n\\n\\t\\t\\t\\tif ( levels.length > 1 ) {\\n\\n\\t\\t\\t\\t\\tv1.setFromMatrixPosition( camera.matrixWorld );\\n\\t\\t\\t\\t\\tv2.setFromMatrixPosition( this.matrixWorld );\\n\\n\\t\\t\\t\\t\\tvar distance = v1.distanceTo( v2 );\\n\\n\\t\\t\\t\\t\\tlevels[ 0 ].object.visible = true;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 1, l = levels.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( distance >= levels[ i ].distance ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tlevels[ i - 1 ].object.visible = false;\\n\\t\\t\\t\\t\\t\\t\\tlevels[ i ].object.visible = true;\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tfor ( ; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tlevels[ i ].object.visible = false;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar data = Object3D.prototype.toJSON.call( this, meta );\\n\\n\\t\\t\\tdata.object.levels = [];\\n\\n\\t\\t\\tvar levels = this.levels;\\n\\n\\t\\t\\tfor ( var i = 0, l = levels.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar level = levels[ i ];\\n\\n\\t\\t\\t\\tdata.object.levels.push( {\\n\\t\\t\\t\\t\\tobject: level.object.uuid,\\n\\t\\t\\t\\t\\tdistance: level.distance\\n\\t\\t\\t\\t} );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author michael guerrero / http://realitymeltdown.com\\n\\t * @author ikerr / http://verold.com\\n\\t */\\n\\n\\tfunction Skeleton( bones, boneInverses ) {\\n\\n\\t\\t// copy the bone array\\n\\n\\t\\tbones = bones || [];\\n\\n\\t\\tthis.bones = bones.slice( 0 );\\n\\t\\tthis.boneMatrices = new Float32Array( this.bones.length * 16 );\\n\\n\\t\\t// use the supplied bone inverses or calculate the inverses\\n\\n\\t\\tif ( boneInverses === undefined ) {\\n\\n\\t\\t\\tthis.calculateInverses();\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tif ( this.bones.length === boneInverses.length ) {\\n\\n\\t\\t\\t\\tthis.boneInverses = boneInverses.slice( 0 );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Skeleton boneInverses is the wrong length.' );\\n\\n\\t\\t\\t\\tthis.boneInverses = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tthis.boneInverses.push( new Matrix4() );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tObject.assign( Skeleton.prototype, {\\n\\n\\t\\tcalculateInverses: function () {\\n\\n\\t\\t\\tthis.boneInverses = [];\\n\\n\\t\\t\\tfor ( var i = 0, il = this.bones.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar inverse = new Matrix4();\\n\\n\\t\\t\\t\\tif ( this.bones[ i ] ) {\\n\\n\\t\\t\\t\\t\\tinverse.getInverse( this.bones[ i ].matrixWorld );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.boneInverses.push( inverse );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tpose: function () {\\n\\n\\t\\t\\tvar bone, i, il;\\n\\n\\t\\t\\t// recover the bind-time world matrices\\n\\n\\t\\t\\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tbone = this.bones[ i ];\\n\\n\\t\\t\\t\\tif ( bone ) {\\n\\n\\t\\t\\t\\t\\tbone.matrixWorld.getInverse( this.boneInverses[ i ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// compute the local matrices, positions, rotations and scales\\n\\n\\t\\t\\tfor ( i = 0, il = this.bones.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tbone = this.bones[ i ];\\n\\n\\t\\t\\t\\tif ( bone ) {\\n\\n\\t\\t\\t\\t\\tif ( bone.parent && bone.parent.isBone ) {\\n\\n\\t\\t\\t\\t\\t\\tbone.matrix.getInverse( bone.parent.matrixWorld );\\n\\t\\t\\t\\t\\t\\tbone.matrix.multiply( bone.matrixWorld );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tbone.matrix.copy( bone.matrixWorld );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tupdate: ( function () {\\n\\n\\t\\t\\tvar offsetMatrix = new Matrix4();\\n\\t\\t\\tvar identityMatrix = new Matrix4();\\n\\n\\t\\t\\treturn function update() {\\n\\n\\t\\t\\t\\tvar bones = this.bones;\\n\\t\\t\\t\\tvar boneInverses = this.boneInverses;\\n\\t\\t\\t\\tvar boneMatrices = this.boneMatrices;\\n\\t\\t\\t\\tvar boneTexture = this.boneTexture;\\n\\n\\t\\t\\t\\t// flatten bone matrices to array\\n\\n\\t\\t\\t\\tfor ( var i = 0, il = bones.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t// compute the offset between the current and the original transform\\n\\n\\t\\t\\t\\t\\tvar matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix;\\n\\n\\t\\t\\t\\t\\toffsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\\n\\t\\t\\t\\t\\toffsetMatrix.toArray( boneMatrices, i * 16 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( boneTexture !== undefined ) {\\n\\n\\t\\t\\t\\t\\tboneTexture.needsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )(),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new Skeleton( this.bones, this.boneInverses );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author ikerr / http://verold.com\\n\\t */\\n\\n\\tfunction Bone() {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Bone';\\n\\n\\t}\\n\\n\\tBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Bone,\\n\\n\\t\\tisBone: true\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mikael emtinger / http://gomo.se/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author ikerr / http://verold.com\\n\\t */\\n\\n\\tfunction SkinnedMesh( geometry, material ) {\\n\\n\\t\\tMesh.call( this, geometry, material );\\n\\n\\t\\tthis.type = 'SkinnedMesh';\\n\\n\\t\\tthis.bindMode = 'attached';\\n\\t\\tthis.bindMatrix = new Matrix4();\\n\\t\\tthis.bindMatrixInverse = new Matrix4();\\n\\n\\t\\tvar bones = this.initBones();\\n\\t\\tvar skeleton = new Skeleton( bones );\\n\\n\\t\\tthis.bind( skeleton, this.matrixWorld );\\n\\n\\t\\tthis.normalizeSkinWeights();\\n\\n\\t}\\n\\n\\tSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\\n\\n\\t\\tconstructor: SkinnedMesh,\\n\\n\\t\\tisSkinnedMesh: true,\\n\\n\\t\\tinitBones: function () {\\n\\n\\t\\t\\tvar bones = [], bone, gbone;\\n\\t\\t\\tvar i, il;\\n\\n\\t\\t\\tif ( this.geometry && this.geometry.bones !== undefined ) {\\n\\n\\t\\t\\t\\t// first, create array of 'Bone' objects from geometry data\\n\\n\\t\\t\\t\\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tgbone = this.geometry.bones[ i ];\\n\\n\\t\\t\\t\\t\\t// create new 'Bone' object\\n\\n\\t\\t\\t\\t\\tbone = new Bone();\\n\\t\\t\\t\\t\\tbones.push( bone );\\n\\n\\t\\t\\t\\t\\t// apply values\\n\\n\\t\\t\\t\\t\\tbone.name = gbone.name;\\n\\t\\t\\t\\t\\tbone.position.fromArray( gbone.pos );\\n\\t\\t\\t\\t\\tbone.quaternion.fromArray( gbone.rotq );\\n\\t\\t\\t\\t\\tif ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// second, create bone hierarchy\\n\\n\\t\\t\\t\\tfor ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tgbone = this.geometry.bones[ i ];\\n\\n\\t\\t\\t\\t\\tif ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) {\\n\\n\\t\\t\\t\\t\\t\\t// subsequent bones in the hierarchy\\n\\n\\t\\t\\t\\t\\t\\tbones[ gbone.parent ].add( bones[ i ] );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t// topmost bone, immediate child of the skinned mesh\\n\\n\\t\\t\\t\\t\\t\\tthis.add( bones[ i ] );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// now the bones are part of the scene graph and children of the skinned mesh.\\n\\t\\t\\t// let's update the corresponding matrices\\n\\n\\t\\t\\tthis.updateMatrixWorld( true );\\n\\n\\t\\t\\treturn bones;\\n\\n\\t\\t},\\n\\n\\t\\tbind: function ( skeleton, bindMatrix ) {\\n\\n\\t\\t\\tthis.skeleton = skeleton;\\n\\n\\t\\t\\tif ( bindMatrix === undefined ) {\\n\\n\\t\\t\\t\\tthis.updateMatrixWorld( true );\\n\\n\\t\\t\\t\\tthis.skeleton.calculateInverses();\\n\\n\\t\\t\\t\\tbindMatrix = this.matrixWorld;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.bindMatrix.copy( bindMatrix );\\n\\t\\t\\tthis.bindMatrixInverse.getInverse( bindMatrix );\\n\\n\\t\\t},\\n\\n\\t\\tpose: function () {\\n\\n\\t\\t\\tthis.skeleton.pose();\\n\\n\\t\\t},\\n\\n\\t\\tnormalizeSkinWeights: function () {\\n\\n\\t\\t\\tvar scale, i;\\n\\n\\t\\t\\tif ( this.geometry && this.geometry.isGeometry ) {\\n\\n\\t\\t\\t\\tfor ( i = 0; i < this.geometry.skinWeights.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar sw = this.geometry.skinWeights[ i ];\\n\\n\\t\\t\\t\\t\\tscale = 1.0 / sw.manhattanLength();\\n\\n\\t\\t\\t\\t\\tif ( scale !== Infinity ) {\\n\\n\\t\\t\\t\\t\\t\\tsw.multiplyScalar( scale );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tsw.set( 1, 0, 0, 0 ); // do something reasonable\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( this.geometry && this.geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\tvar vec = new Vector4();\\n\\n\\t\\t\\t\\tvar skinWeight = this.geometry.attributes.skinWeight;\\n\\n\\t\\t\\t\\tfor ( i = 0; i < skinWeight.count; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvec.x = skinWeight.getX( i );\\n\\t\\t\\t\\t\\tvec.y = skinWeight.getY( i );\\n\\t\\t\\t\\t\\tvec.z = skinWeight.getZ( i );\\n\\t\\t\\t\\t\\tvec.w = skinWeight.getW( i );\\n\\n\\t\\t\\t\\t\\tscale = 1.0 / vec.manhattanLength();\\n\\n\\t\\t\\t\\t\\tif ( scale !== Infinity ) {\\n\\n\\t\\t\\t\\t\\t\\tvec.multiplyScalar( scale );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tvec.set( 1, 0, 0, 0 ); // do something reasonable\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tskinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tupdateMatrixWorld: function ( force ) {\\n\\n\\t\\t\\tMesh.prototype.updateMatrixWorld.call( this, force );\\n\\n\\t\\t\\tif ( this.bindMode === 'attached' ) {\\n\\n\\t\\t\\t\\tthis.bindMatrixInverse.getInverse( this.matrixWorld );\\n\\n\\t\\t\\t} else if ( this.bindMode === 'detached' ) {\\n\\n\\t\\t\\t\\tthis.bindMatrixInverse.getInverse( this.bindMatrix );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.geometry, this.material ).copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * opacity: ,\\n\\t *\\n\\t * linewidth: ,\\n\\t * linecap: \\\"round\\\",\\n\\t * linejoin: \\\"round\\\"\\n\\t * }\\n\\t */\\n\\n\\tfunction LineBasicMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'LineBasicMaterial';\\n\\n\\t\\tthis.color = new Color( 0xffffff );\\n\\n\\t\\tthis.linewidth = 1;\\n\\t\\tthis.linecap = 'round';\\n\\t\\tthis.linejoin = 'round';\\n\\n\\t\\tthis.lights = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tLineBasicMaterial.prototype = Object.create( Material.prototype );\\n\\tLineBasicMaterial.prototype.constructor = LineBasicMaterial;\\n\\n\\tLineBasicMaterial.prototype.isLineBasicMaterial = true;\\n\\n\\tLineBasicMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.color.copy( source.color );\\n\\n\\t\\tthis.linewidth = source.linewidth;\\n\\t\\tthis.linecap = source.linecap;\\n\\t\\tthis.linejoin = source.linejoin;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Line( geometry, material, mode ) {\\n\\n\\t\\tif ( mode === 1 ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' );\\n\\t\\t\\treturn new LineSegments( geometry, material );\\n\\n\\t\\t}\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Line';\\n\\n\\t\\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\\n\\t\\tthis.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } );\\n\\n\\t}\\n\\n\\tLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Line,\\n\\n\\t\\tisLine: true,\\n\\n\\t\\traycast: ( function () {\\n\\n\\t\\t\\tvar inverseMatrix = new Matrix4();\\n\\t\\t\\tvar ray = new Ray();\\n\\t\\t\\tvar sphere = new Sphere();\\n\\n\\t\\t\\treturn function raycast( raycaster, intersects ) {\\n\\n\\t\\t\\t\\tvar precision = raycaster.linePrecision;\\n\\t\\t\\t\\tvar precisionSq = precision * precision;\\n\\n\\t\\t\\t\\tvar geometry = this.geometry;\\n\\t\\t\\t\\tvar matrixWorld = this.matrixWorld;\\n\\n\\t\\t\\t\\t// Checking boundingSphere distance to ray\\n\\n\\t\\t\\t\\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\\n\\n\\t\\t\\t\\tsphere.copy( geometry.boundingSphere );\\n\\t\\t\\t\\tsphere.applyMatrix4( matrixWorld );\\n\\n\\t\\t\\t\\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\\n\\n\\t\\t\\t\\t//\\n\\n\\t\\t\\t\\tinverseMatrix.getInverse( matrixWorld );\\n\\t\\t\\t\\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\\n\\n\\t\\t\\t\\tvar vStart = new Vector3();\\n\\t\\t\\t\\tvar vEnd = new Vector3();\\n\\t\\t\\t\\tvar interSegment = new Vector3();\\n\\t\\t\\t\\tvar interRay = new Vector3();\\n\\t\\t\\t\\tvar step = ( this && this.isLineSegments ) ? 2 : 1;\\n\\n\\t\\t\\t\\tif ( geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\t\\tvar index = geometry.index;\\n\\t\\t\\t\\t\\tvar attributes = geometry.attributes;\\n\\t\\t\\t\\t\\tvar positions = attributes.position.array;\\n\\n\\t\\t\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\t\\t\\tvar indices = index.array;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, l = indices.length - 1; i < l; i += step ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar a = indices[ i ];\\n\\t\\t\\t\\t\\t\\t\\tvar b = indices[ i + 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\tvStart.fromArray( positions, a * 3 );\\n\\t\\t\\t\\t\\t\\t\\tvEnd.fromArray( positions, b * 3 );\\n\\n\\t\\t\\t\\t\\t\\t\\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( distSq > precisionSq ) continue;\\n\\n\\t\\t\\t\\t\\t\\t\\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\\n\\n\\t\\t\\t\\t\\t\\t\\tvar distance = raycaster.ray.origin.distanceTo( interRay );\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\\n\\n\\t\\t\\t\\t\\t\\t\\tintersects.push( {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tdistance: distance,\\n\\t\\t\\t\\t\\t\\t\\t\\t// What do we want? intersection point on the ray or on the segment??\\n\\t\\t\\t\\t\\t\\t\\t\\t// point: raycaster.ray.at( distance ),\\n\\t\\t\\t\\t\\t\\t\\t\\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\\n\\t\\t\\t\\t\\t\\t\\t\\tindex: i,\\n\\t\\t\\t\\t\\t\\t\\t\\tface: null,\\n\\t\\t\\t\\t\\t\\t\\t\\tfaceIndex: null,\\n\\t\\t\\t\\t\\t\\t\\t\\tobject: this\\n\\n\\t\\t\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvStart.fromArray( positions, 3 * i );\\n\\t\\t\\t\\t\\t\\t\\tvEnd.fromArray( positions, 3 * i + 3 );\\n\\n\\t\\t\\t\\t\\t\\t\\tvar distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( distSq > precisionSq ) continue;\\n\\n\\t\\t\\t\\t\\t\\t\\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\\n\\n\\t\\t\\t\\t\\t\\t\\tvar distance = raycaster.ray.origin.distanceTo( interRay );\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\\n\\n\\t\\t\\t\\t\\t\\t\\tintersects.push( {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tdistance: distance,\\n\\t\\t\\t\\t\\t\\t\\t\\t// What do we want? intersection point on the ray or on the segment??\\n\\t\\t\\t\\t\\t\\t\\t\\t// point: raycaster.ray.at( distance ),\\n\\t\\t\\t\\t\\t\\t\\t\\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\\n\\t\\t\\t\\t\\t\\t\\t\\tindex: i,\\n\\t\\t\\t\\t\\t\\t\\t\\tface: null,\\n\\t\\t\\t\\t\\t\\t\\t\\tfaceIndex: null,\\n\\t\\t\\t\\t\\t\\t\\t\\tobject: this\\n\\n\\t\\t\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( geometry.isGeometry ) {\\n\\n\\t\\t\\t\\t\\tvar vertices = geometry.vertices;\\n\\t\\t\\t\\t\\tvar nbVertices = vertices.length;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < nbVertices - 1; i += step ) {\\n\\n\\t\\t\\t\\t\\t\\tvar distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\\n\\n\\t\\t\\t\\t\\t\\tif ( distSq > precisionSq ) continue;\\n\\n\\t\\t\\t\\t\\t\\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\\n\\n\\t\\t\\t\\t\\t\\tvar distance = raycaster.ray.origin.distanceTo( interRay );\\n\\n\\t\\t\\t\\t\\t\\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\\n\\n\\t\\t\\t\\t\\t\\tintersects.push( {\\n\\n\\t\\t\\t\\t\\t\\t\\tdistance: distance,\\n\\t\\t\\t\\t\\t\\t\\t// What do we want? intersection point on the ray or on the segment??\\n\\t\\t\\t\\t\\t\\t\\t// point: raycaster.ray.at( distance ),\\n\\t\\t\\t\\t\\t\\t\\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\\n\\t\\t\\t\\t\\t\\t\\tindex: i,\\n\\t\\t\\t\\t\\t\\t\\tface: null,\\n\\t\\t\\t\\t\\t\\t\\tfaceIndex: null,\\n\\t\\t\\t\\t\\t\\t\\tobject: this\\n\\n\\t\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() ),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.geometry, this.material ).copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction LineSegments( geometry, material ) {\\n\\n\\t\\tLine.call( this, geometry, material );\\n\\n\\t\\tthis.type = 'LineSegments';\\n\\n\\t}\\n\\n\\tLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\\n\\n\\t\\tconstructor: LineSegments,\\n\\n\\t\\tisLineSegments: true\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mgreter / http://github.com/mgreter\\n\\t */\\n\\n\\tfunction LineLoop( geometry, material ) {\\n\\n\\t\\tLine.call( this, geometry, material );\\n\\n\\t\\tthis.type = 'LineLoop';\\n\\n\\t}\\n\\n\\tLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\\n\\n\\t\\tconstructor: LineLoop,\\n\\n\\t\\tisLineLoop: true,\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * opacity: ,\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t * size: ,\\n\\t * sizeAttenuation: \\n\\t * }\\n\\t */\\n\\n\\tfunction PointsMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'PointsMaterial';\\n\\n\\t\\tthis.color = new Color( 0xffffff );\\n\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.size = 1;\\n\\t\\tthis.sizeAttenuation = true;\\n\\n\\t\\tthis.lights = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tPointsMaterial.prototype = Object.create( Material.prototype );\\n\\tPointsMaterial.prototype.constructor = PointsMaterial;\\n\\n\\tPointsMaterial.prototype.isPointsMaterial = true;\\n\\n\\tPointsMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.color.copy( source.color );\\n\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.size = source.size;\\n\\t\\tthis.sizeAttenuation = source.sizeAttenuation;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction Points( geometry, material ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Points';\\n\\n\\t\\tthis.geometry = geometry !== undefined ? geometry : new BufferGeometry();\\n\\t\\tthis.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } );\\n\\n\\t}\\n\\n\\tPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Points,\\n\\n\\t\\tisPoints: true,\\n\\n\\t\\traycast: ( function () {\\n\\n\\t\\t\\tvar inverseMatrix = new Matrix4();\\n\\t\\t\\tvar ray = new Ray();\\n\\t\\t\\tvar sphere = new Sphere();\\n\\n\\t\\t\\treturn function raycast( raycaster, intersects ) {\\n\\n\\t\\t\\t\\tvar object = this;\\n\\t\\t\\t\\tvar geometry = this.geometry;\\n\\t\\t\\t\\tvar matrixWorld = this.matrixWorld;\\n\\t\\t\\t\\tvar threshold = raycaster.params.Points.threshold;\\n\\n\\t\\t\\t\\t// Checking boundingSphere distance to ray\\n\\n\\t\\t\\t\\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\\n\\n\\t\\t\\t\\tsphere.copy( geometry.boundingSphere );\\n\\t\\t\\t\\tsphere.applyMatrix4( matrixWorld );\\n\\t\\t\\t\\tsphere.radius += threshold;\\n\\n\\t\\t\\t\\tif ( raycaster.ray.intersectsSphere( sphere ) === false ) return;\\n\\n\\t\\t\\t\\t//\\n\\n\\t\\t\\t\\tinverseMatrix.getInverse( matrixWorld );\\n\\t\\t\\t\\tray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );\\n\\n\\t\\t\\t\\tvar localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\\n\\t\\t\\t\\tvar localThresholdSq = localThreshold * localThreshold;\\n\\t\\t\\t\\tvar position = new Vector3();\\n\\n\\t\\t\\t\\tfunction testPoint( point, index ) {\\n\\n\\t\\t\\t\\t\\tvar rayPointDistanceSq = ray.distanceSqToPoint( point );\\n\\n\\t\\t\\t\\t\\tif ( rayPointDistanceSq < localThresholdSq ) {\\n\\n\\t\\t\\t\\t\\t\\tvar intersectPoint = ray.closestPointToPoint( point );\\n\\t\\t\\t\\t\\t\\tintersectPoint.applyMatrix4( matrixWorld );\\n\\n\\t\\t\\t\\t\\t\\tvar distance = raycaster.ray.origin.distanceTo( intersectPoint );\\n\\n\\t\\t\\t\\t\\t\\tif ( distance < raycaster.near || distance > raycaster.far ) return;\\n\\n\\t\\t\\t\\t\\t\\tintersects.push( {\\n\\n\\t\\t\\t\\t\\t\\t\\tdistance: distance,\\n\\t\\t\\t\\t\\t\\t\\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\\n\\t\\t\\t\\t\\t\\t\\tpoint: intersectPoint.clone(),\\n\\t\\t\\t\\t\\t\\t\\tindex: index,\\n\\t\\t\\t\\t\\t\\t\\tface: null,\\n\\t\\t\\t\\t\\t\\t\\tobject: object\\n\\n\\t\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\t\\tvar index = geometry.index;\\n\\t\\t\\t\\t\\tvar attributes = geometry.attributes;\\n\\t\\t\\t\\t\\tvar positions = attributes.position.array;\\n\\n\\t\\t\\t\\t\\tif ( index !== null ) {\\n\\n\\t\\t\\t\\t\\t\\tvar indices = index.array;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, il = indices.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar a = indices[ i ];\\n\\n\\t\\t\\t\\t\\t\\t\\tposition.fromArray( positions, a * 3 );\\n\\n\\t\\t\\t\\t\\t\\t\\ttestPoint( position, a );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, l = positions.length / 3; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tposition.fromArray( positions, i * 3 );\\n\\n\\t\\t\\t\\t\\t\\t\\ttestPoint( position, i );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvar vertices = geometry.vertices;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = vertices.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\ttestPoint( vertices[ i ], i );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t}() ),\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor( this.geometry, this.material ).copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Group() {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Group';\\n\\n\\t}\\n\\n\\tGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Group,\\n\\n\\t\\tisGroup: true\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\\n\\n\\t\\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\\n\\n\\t\\tthis.generateMipmaps = false;\\n\\n\\t\\t// Set needsUpdate when first frame is ready\\n\\n\\t\\tvar scope = this;\\n\\n\\t\\tfunction onLoaded() {\\n\\n\\t\\t\\tvideo.removeEventListener( 'loadeddata', onLoaded, false );\\n\\t\\t\\tscope.needsUpdate = true;\\n\\n\\t\\t}\\n\\n\\t\\tvideo.addEventListener( 'loadeddata', onLoaded, false );\\n\\n\\t}\\n\\n\\tVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\\n\\n\\t\\tconstructor: VideoTexture,\\n\\n\\t\\tisVideoTexture: true,\\n\\n\\t\\tupdate: function () {\\n\\n\\t\\t\\tvar video = this.image;\\n\\n\\t\\t\\tif ( video.readyState >= video.HAVE_CURRENT_DATA ) {\\n\\n\\t\\t\\t\\tthis.needsUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\\n\\n\\t\\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\\n\\n\\t\\tthis.image = { width: width, height: height };\\n\\t\\tthis.mipmaps = mipmaps;\\n\\n\\t\\t// no flipping for cube textures\\n\\t\\t// (also flipping doesn't work for compressed textures )\\n\\n\\t\\tthis.flipY = false;\\n\\n\\t\\t// can't generate mipmaps for compressed textures\\n\\t\\t// mips must be embedded in DDS files\\n\\n\\t\\tthis.generateMipmaps = false;\\n\\n\\t}\\n\\n\\tCompressedTexture.prototype = Object.create( Texture.prototype );\\n\\tCompressedTexture.prototype.constructor = CompressedTexture;\\n\\n\\tCompressedTexture.prototype.isCompressedTexture = true;\\n\\n\\t/**\\n\\t * @author Matt DesLauriers / @mattdesl\\n\\t * @author atix / arthursilber.de\\n\\t */\\n\\n\\tfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\\n\\n\\t\\tformat = format !== undefined ? format : DepthFormat;\\n\\n\\t\\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\\n\\n\\t\\t\\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\\n\\n\\t\\t}\\n\\n\\t\\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\\n\\t\\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\\n\\n\\t\\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\\n\\n\\t\\tthis.image = { width: width, height: height };\\n\\n\\t\\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\\n\\t\\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\\n\\n\\t\\tthis.flipY = false;\\n\\t\\tthis.generateMipmaps\\t= false;\\n\\n\\t}\\n\\n\\tDepthTexture.prototype = Object.create( Texture.prototype );\\n\\tDepthTexture.prototype.constructor = DepthTexture;\\n\\tDepthTexture.prototype.isDepthTexture = true;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\tfunction WireframeGeometry( geometry ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'WireframeGeometry';\\n\\n\\t\\t// buffer\\n\\n\\t\\tvar vertices = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar i, j, l, o, ol;\\n\\t\\tvar edge = [ 0, 0 ], edges = {}, e, edge1, edge2;\\n\\t\\tvar key, keys = [ 'a', 'b', 'c' ];\\n\\t\\tvar vertex;\\n\\n\\t\\t// different logic for Geometry and BufferGeometry\\n\\n\\t\\tif ( geometry && geometry.isGeometry ) {\\n\\n\\t\\t\\t// create a data structure that contains all edges without duplicates\\n\\n\\t\\t\\tvar faces = geometry.faces;\\n\\n\\t\\t\\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = faces[ i ];\\n\\n\\t\\t\\t\\tfor ( j = 0; j < 3; j ++ ) {\\n\\n\\t\\t\\t\\t\\tedge1 = face[ keys[ j ] ];\\n\\t\\t\\t\\t\\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\\n\\t\\t\\t\\t\\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\\n\\t\\t\\t\\t\\tedge[ 1 ] = Math.max( edge1, edge2 );\\n\\n\\t\\t\\t\\t\\tkey = edge[ 0 ] + ',' + edge[ 1 ];\\n\\n\\t\\t\\t\\t\\tif ( edges[ key ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// generate vertices\\n\\n\\t\\t\\tfor ( key in edges ) {\\n\\n\\t\\t\\t\\te = edges[ key ];\\n\\n\\t\\t\\t\\tvertex = geometry.vertices[ e.index1 ];\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\tvertex = geometry.vertices[ e.index2 ];\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t} else if ( geometry && geometry.isBufferGeometry ) {\\n\\n\\t\\t\\tvar position, indices, groups;\\n\\t\\t\\tvar group, start, count;\\n\\t\\t\\tvar index1, index2;\\n\\n\\t\\t\\tvertex = new Vector3();\\n\\n\\t\\t\\tif ( geometry.index !== null ) {\\n\\n\\t\\t\\t\\t// indexed BufferGeometry\\n\\n\\t\\t\\t\\tposition = geometry.attributes.position;\\n\\t\\t\\t\\tindices = geometry.index;\\n\\t\\t\\t\\tgroups = geometry.groups;\\n\\n\\t\\t\\t\\tif ( groups.length === 0 ) {\\n\\n\\t\\t\\t\\t\\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// create a data structure that contains all eges without duplicates\\n\\n\\t\\t\\t\\tfor ( o = 0, ol = groups.length; o < ol; ++ o ) {\\n\\n\\t\\t\\t\\t\\tgroup = groups[ o ];\\n\\n\\t\\t\\t\\t\\tstart = group.start;\\n\\t\\t\\t\\t\\tcount = group.count;\\n\\n\\t\\t\\t\\t\\tfor ( i = start, l = ( start + count ); i < l; i += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\tfor ( j = 0; j < 3; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tedge1 = indices.getX( i + j );\\n\\t\\t\\t\\t\\t\\t\\tedge2 = indices.getX( i + ( j + 1 ) % 3 );\\n\\t\\t\\t\\t\\t\\t\\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\\n\\t\\t\\t\\t\\t\\t\\tedge[ 1 ] = Math.max( edge1, edge2 );\\n\\n\\t\\t\\t\\t\\t\\t\\tkey = edge[ 0 ] + ',' + edge[ 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( edges[ key ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// generate vertices\\n\\n\\t\\t\\t\\tfor ( key in edges ) {\\n\\n\\t\\t\\t\\t\\te = edges[ key ];\\n\\n\\t\\t\\t\\t\\tvertex.fromBufferAttribute( position, e.index1 );\\n\\t\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t\\tvertex.fromBufferAttribute( position, e.index2 );\\n\\t\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// non-indexed BufferGeometry\\n\\n\\t\\t\\t\\tposition = geometry.attributes.position;\\n\\n\\t\\t\\t\\tfor ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tfor ( j = 0; j < 3; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t// three edges per triangle, an edge is represented as (index1, index2)\\n\\t\\t\\t\\t\\t\\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\\n\\n\\t\\t\\t\\t\\t\\tindex1 = 3 * i + j;\\n\\t\\t\\t\\t\\t\\tvertex.fromBufferAttribute( position, index1 );\\n\\t\\t\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t\\t\\tindex2 = 3 * i + ( ( j + 1 ) % 3 );\\n\\t\\t\\t\\t\\t\\tvertex.fromBufferAttribute( position, index2 );\\n\\t\\t\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\n\\t}\\n\\n\\tWireframeGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tWireframeGeometry.prototype.constructor = WireframeGeometry;\\n\\n\\t/**\\n\\t * @author zz85 / https://github.com/zz85\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t *\\n\\t * Parametric Surfaces Geometry\\n\\t * based on the brilliant article by @prideout http://prideout.net/blog/?p=44\\n\\t */\\n\\n\\t// ParametricGeometry\\n\\n\\tfunction ParametricGeometry( func, slices, stacks ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'ParametricGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tfunc: func,\\n\\t\\t\\tslices: slices,\\n\\t\\t\\tstacks: stacks\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tParametricGeometry.prototype = Object.create( Geometry.prototype );\\n\\tParametricGeometry.prototype.constructor = ParametricGeometry;\\n\\n\\t// ParametricBufferGeometry\\n\\n\\tfunction ParametricBufferGeometry( func, slices, stacks ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'ParametricBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tfunc: func,\\n\\t\\t\\tslices: slices,\\n\\t\\t\\tstacks: stacks\\n\\t\\t};\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\tvar EPS = 0.00001;\\n\\n\\t\\tvar normal = new Vector3();\\n\\n\\t\\tvar p0 = new Vector3(), p1 = new Vector3();\\n\\t\\tvar pu = new Vector3(), pv = new Vector3();\\n\\n\\t\\tvar i, j;\\n\\n\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\tvar sliceCount = slices + 1;\\n\\n\\t\\tfor ( i = 0; i <= stacks; i ++ ) {\\n\\n\\t\\t\\tvar v = i / stacks;\\n\\n\\t\\t\\tfor ( j = 0; j <= slices; j ++ ) {\\n\\n\\t\\t\\t\\tvar u = j / slices;\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tp0 = func( u, v, p0 );\\n\\t\\t\\t\\tvertices.push( p0.x, p0.y, p0.z );\\n\\n\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\t// approximate tangent vectors via finite differences\\n\\n\\t\\t\\t\\tif ( u - EPS >= 0 ) {\\n\\n\\t\\t\\t\\t\\tp1 = func( u - EPS, v, p1 );\\n\\t\\t\\t\\t\\tpu.subVectors( p0, p1 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tp1 = func( u + EPS, v, p1 );\\n\\t\\t\\t\\t\\tpu.subVectors( p1, p0 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( v - EPS >= 0 ) {\\n\\n\\t\\t\\t\\t\\tp1 = func( u, v - EPS, p1 );\\n\\t\\t\\t\\t\\tpv.subVectors( p0, p1 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tp1 = func( u, v + EPS, p1 );\\n\\t\\t\\t\\t\\tpv.subVectors( p1, p0 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// cross product of tangent vectors returns surface normal\\n\\n\\t\\t\\t\\tnormal.crossVectors( pu, pv ).normalize();\\n\\t\\t\\t\\tnormals.push( normal.x, normal.y, normal.z );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuvs.push( u, v );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// generate indices\\n\\n\\t\\tfor ( i = 0; i < stacks; i ++ ) {\\n\\n\\t\\t\\tfor ( j = 0; j < slices; j ++ ) {\\n\\n\\t\\t\\t\\tvar a = i * sliceCount + j;\\n\\t\\t\\t\\tvar b = i * sliceCount + j + 1;\\n\\t\\t\\t\\tvar c = ( i + 1 ) * sliceCount + j + 1;\\n\\t\\t\\t\\tvar d = ( i + 1 ) * sliceCount + j;\\n\\n\\t\\t\\t\\t// faces one and two\\n\\n\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t}\\n\\n\\tParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\\n\\n\\t/**\\n\\t * @author clockworkgeek / https://github.com/clockworkgeek\\n\\t * @author timothypratley / https://github.com/timothypratley\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// PolyhedronGeometry\\n\\n\\tfunction PolyhedronGeometry( vertices, indices, radius, detail ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'PolyhedronGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tvertices: vertices,\\n\\t\\t\\tindices: indices,\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tPolyhedronGeometry.prototype = Object.create( Geometry.prototype );\\n\\tPolyhedronGeometry.prototype.constructor = PolyhedronGeometry;\\n\\n\\t// PolyhedronBufferGeometry\\n\\n\\tfunction PolyhedronBufferGeometry( vertices, indices, radius, detail ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'PolyhedronBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tvertices: vertices,\\n\\t\\t\\tindices: indices,\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t\\tradius = radius || 1;\\n\\t\\tdetail = detail || 0;\\n\\n\\t\\t// default buffer data\\n\\n\\t\\tvar vertexBuffer = [];\\n\\t\\tvar uvBuffer = [];\\n\\n\\t\\t// the subdivision creates the vertex buffer data\\n\\n\\t\\tsubdivide( detail );\\n\\n\\t\\t// all vertices should lie on a conceptual sphere with a given radius\\n\\n\\t\\tappplyRadius( radius );\\n\\n\\t\\t// finally, create the uv data\\n\\n\\t\\tgenerateUVs();\\n\\n\\t\\t// build non-indexed geometry\\n\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\\n\\n\\t\\tif ( detail === 0 ) {\\n\\n\\t\\t\\tthis.computeVertexNormals(); // flat normals\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tthis.normalizeNormals(); // smooth normals\\n\\n\\t\\t}\\n\\n\\t\\t// helper functions\\n\\n\\t\\tfunction subdivide( detail ) {\\n\\n\\t\\t\\tvar a = new Vector3();\\n\\t\\t\\tvar b = new Vector3();\\n\\t\\t\\tvar c = new Vector3();\\n\\n\\t\\t\\t// iterate over all faces and apply a subdivison with the given detail value\\n\\n\\t\\t\\tfor ( var i = 0; i < indices.length; i += 3 ) {\\n\\n\\t\\t\\t\\t// get the vertices of the face\\n\\n\\t\\t\\t\\tgetVertexByIndex( indices[ i + 0 ], a );\\n\\t\\t\\t\\tgetVertexByIndex( indices[ i + 1 ], b );\\n\\t\\t\\t\\tgetVertexByIndex( indices[ i + 2 ], c );\\n\\n\\t\\t\\t\\t// perform subdivision\\n\\n\\t\\t\\t\\tsubdivideFace( a, b, c, detail );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction subdivideFace( a, b, c, detail ) {\\n\\n\\t\\t\\tvar cols = Math.pow( 2, detail );\\n\\n\\t\\t\\t// we use this multidimensional array as a data structure for creating the subdivision\\n\\n\\t\\t\\tvar v = [];\\n\\n\\t\\t\\tvar i, j;\\n\\n\\t\\t\\t// construct all of the vertices for this subdivision\\n\\n\\t\\t\\tfor ( i = 0; i <= cols; i ++ ) {\\n\\n\\t\\t\\t\\tv[ i ] = [];\\n\\n\\t\\t\\t\\tvar aj = a.clone().lerp( c, i / cols );\\n\\t\\t\\t\\tvar bj = b.clone().lerp( c, i / cols );\\n\\n\\t\\t\\t\\tvar rows = cols - i;\\n\\n\\t\\t\\t\\tfor ( j = 0; j <= rows; j ++ ) {\\n\\n\\t\\t\\t\\t\\tif ( j === 0 && i === cols ) {\\n\\n\\t\\t\\t\\t\\t\\tv[ i ][ j ] = aj;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// construct all of the faces\\n\\n\\t\\t\\tfor ( i = 0; i < cols; i ++ ) {\\n\\n\\t\\t\\t\\tfor ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\\n\\n\\t\\t\\t\\t\\tvar k = Math.floor( j / 2 );\\n\\n\\t\\t\\t\\t\\tif ( j % 2 === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tpushVertex( v[ i ][ k + 1 ] );\\n\\t\\t\\t\\t\\t\\tpushVertex( v[ i + 1 ][ k ] );\\n\\t\\t\\t\\t\\t\\tpushVertex( v[ i ][ k ] );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tpushVertex( v[ i ][ k + 1 ] );\\n\\t\\t\\t\\t\\t\\tpushVertex( v[ i + 1 ][ k + 1 ] );\\n\\t\\t\\t\\t\\t\\tpushVertex( v[ i + 1 ][ k ] );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction appplyRadius( radius ) {\\n\\n\\t\\t\\tvar vertex = new Vector3();\\n\\n\\t\\t\\t// iterate over the entire buffer and apply the radius to each vertex\\n\\n\\t\\t\\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\\n\\n\\t\\t\\t\\tvertex.x = vertexBuffer[ i + 0 ];\\n\\t\\t\\t\\tvertex.y = vertexBuffer[ i + 1 ];\\n\\t\\t\\t\\tvertex.z = vertexBuffer[ i + 2 ];\\n\\n\\t\\t\\t\\tvertex.normalize().multiplyScalar( radius );\\n\\n\\t\\t\\t\\tvertexBuffer[ i + 0 ] = vertex.x;\\n\\t\\t\\t\\tvertexBuffer[ i + 1 ] = vertex.y;\\n\\t\\t\\t\\tvertexBuffer[ i + 2 ] = vertex.z;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction generateUVs() {\\n\\n\\t\\t\\tvar vertex = new Vector3();\\n\\n\\t\\t\\tfor ( var i = 0; i < vertexBuffer.length; i += 3 ) {\\n\\n\\t\\t\\t\\tvertex.x = vertexBuffer[ i + 0 ];\\n\\t\\t\\t\\tvertex.y = vertexBuffer[ i + 1 ];\\n\\t\\t\\t\\tvertex.z = vertexBuffer[ i + 2 ];\\n\\n\\t\\t\\t\\tvar u = azimuth( vertex ) / 2 / Math.PI + 0.5;\\n\\t\\t\\t\\tvar v = inclination( vertex ) / Math.PI + 0.5;\\n\\t\\t\\t\\tuvBuffer.push( u, 1 - v );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tcorrectUVs();\\n\\n\\t\\t\\tcorrectSeam();\\n\\n\\t\\t}\\n\\n\\t\\tfunction correctSeam() {\\n\\n\\t\\t\\t// handle case when face straddles the seam, see #3269\\n\\n\\t\\t\\tfor ( var i = 0; i < uvBuffer.length; i += 6 ) {\\n\\n\\t\\t\\t\\t// uv data of a single face\\n\\n\\t\\t\\t\\tvar x0 = uvBuffer[ i + 0 ];\\n\\t\\t\\t\\tvar x1 = uvBuffer[ i + 2 ];\\n\\t\\t\\t\\tvar x2 = uvBuffer[ i + 4 ];\\n\\n\\t\\t\\t\\tvar max = Math.max( x0, x1, x2 );\\n\\t\\t\\t\\tvar min = Math.min( x0, x1, x2 );\\n\\n\\t\\t\\t\\t// 0.9 is somewhat arbitrary\\n\\n\\t\\t\\t\\tif ( max > 0.9 && min < 0.1 ) {\\n\\n\\t\\t\\t\\t\\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\\n\\t\\t\\t\\t\\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\\n\\t\\t\\t\\t\\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction pushVertex( vertex ) {\\n\\n\\t\\t\\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t}\\n\\n\\t\\tfunction getVertexByIndex( index, vertex ) {\\n\\n\\t\\t\\tvar stride = index * 3;\\n\\n\\t\\t\\tvertex.x = vertices[ stride + 0 ];\\n\\t\\t\\tvertex.y = vertices[ stride + 1 ];\\n\\t\\t\\tvertex.z = vertices[ stride + 2 ];\\n\\n\\t\\t}\\n\\n\\t\\tfunction correctUVs() {\\n\\n\\t\\t\\tvar a = new Vector3();\\n\\t\\t\\tvar b = new Vector3();\\n\\t\\t\\tvar c = new Vector3();\\n\\n\\t\\t\\tvar centroid = new Vector3();\\n\\n\\t\\t\\tvar uvA = new Vector2();\\n\\t\\t\\tvar uvB = new Vector2();\\n\\t\\t\\tvar uvC = new Vector2();\\n\\n\\t\\t\\tfor ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\\n\\n\\t\\t\\t\\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\\n\\t\\t\\t\\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\\n\\t\\t\\t\\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\\n\\n\\t\\t\\t\\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\\n\\t\\t\\t\\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\\n\\t\\t\\t\\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\\n\\n\\t\\t\\t\\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\\n\\n\\t\\t\\t\\tvar azi = azimuth( centroid );\\n\\n\\t\\t\\t\\tcorrectUV( uvA, j + 0, a, azi );\\n\\t\\t\\t\\tcorrectUV( uvB, j + 2, b, azi );\\n\\t\\t\\t\\tcorrectUV( uvC, j + 4, c, azi );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction correctUV( uv, stride, vector, azimuth ) {\\n\\n\\t\\t\\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\\n\\n\\t\\t\\t\\tuvBuffer[ stride ] = uv.x - 1;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\\n\\n\\t\\t\\t\\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// Angle around the Y axis, counter-clockwise when looking from above.\\n\\n\\t\\tfunction azimuth( vector ) {\\n\\n\\t\\t\\treturn Math.atan2( vector.z, - vector.x );\\n\\n\\t\\t}\\n\\n\\n\\t\\t// Angle above the XZ plane.\\n\\n\\t\\tfunction inclination( vector ) {\\n\\n\\t\\t\\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tPolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tPolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry;\\n\\n\\t/**\\n\\t * @author timothypratley / https://github.com/timothypratley\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// TetrahedronGeometry\\n\\n\\tfunction TetrahedronGeometry( radius, detail ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'TetrahedronGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tTetrahedronGeometry.prototype = Object.create( Geometry.prototype );\\n\\tTetrahedronGeometry.prototype.constructor = TetrahedronGeometry;\\n\\n\\t// TetrahedronBufferGeometry\\n\\n\\tfunction TetrahedronBufferGeometry( radius, detail ) {\\n\\n\\t\\tvar vertices = [\\n\\t\\t\\t1, 1, 1, \\t- 1, - 1, 1, \\t- 1, 1, - 1, \\t1, - 1, - 1\\n\\t\\t];\\n\\n\\t\\tvar indices = [\\n\\t\\t\\t2, 1, 0, \\t0, 3, 2,\\t1, 3, 0,\\t2, 3, 1\\n\\t\\t];\\n\\n\\t\\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\\n\\n\\t\\tthis.type = 'TetrahedronBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t}\\n\\n\\tTetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\\n\\tTetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry;\\n\\n\\t/**\\n\\t * @author timothypratley / https://github.com/timothypratley\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// OctahedronGeometry\\n\\n\\tfunction OctahedronGeometry( radius, detail ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'OctahedronGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tOctahedronGeometry.prototype = Object.create( Geometry.prototype );\\n\\tOctahedronGeometry.prototype.constructor = OctahedronGeometry;\\n\\n\\t// OctahedronBufferGeometry\\n\\n\\tfunction OctahedronBufferGeometry( radius, detail ) {\\n\\n\\t\\tvar vertices = [\\n\\t\\t\\t1, 0, 0, \\t- 1, 0, 0,\\t0, 1, 0,\\n\\t\\t\\t0, - 1, 0, \\t0, 0, 1,\\t0, 0, - 1\\n\\t\\t];\\n\\n\\t\\tvar indices = [\\n\\t\\t\\t0, 2, 4,\\t0, 4, 3,\\t0, 3, 5,\\n\\t\\t\\t0, 5, 2,\\t1, 2, 5,\\t1, 5, 3,\\n\\t\\t\\t1, 3, 4,\\t1, 4, 2\\n\\t\\t];\\n\\n\\t\\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\\n\\n\\t\\tthis.type = 'OctahedronBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t}\\n\\n\\tOctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\\n\\tOctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry;\\n\\n\\t/**\\n\\t * @author timothypratley / https://github.com/timothypratley\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// IcosahedronGeometry\\n\\n\\tfunction IcosahedronGeometry( radius, detail ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'IcosahedronGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tIcosahedronGeometry.prototype = Object.create( Geometry.prototype );\\n\\tIcosahedronGeometry.prototype.constructor = IcosahedronGeometry;\\n\\n\\t// IcosahedronBufferGeometry\\n\\n\\tfunction IcosahedronBufferGeometry( radius, detail ) {\\n\\n\\t\\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\\n\\n\\t\\tvar vertices = [\\n\\t\\t\\t- 1, t, 0, \\t1, t, 0, \\t- 1, - t, 0, \\t1, - t, 0,\\n\\t\\t\\t 0, - 1, t, \\t0, 1, t,\\t0, - 1, - t, \\t0, 1, - t,\\n\\t\\t\\t t, 0, - 1, \\tt, 0, 1, \\t- t, 0, - 1, \\t- t, 0, 1\\n\\t\\t];\\n\\n\\t\\tvar indices = [\\n\\t\\t\\t 0, 11, 5, \\t0, 5, 1, \\t0, 1, 7, \\t0, 7, 10, \\t0, 10, 11,\\n\\t\\t\\t 1, 5, 9, \\t5, 11, 4,\\t11, 10, 2,\\t10, 7, 6,\\t7, 1, 8,\\n\\t\\t\\t 3, 9, 4, \\t3, 4, 2,\\t3, 2, 6,\\t3, 6, 8,\\t3, 8, 9,\\n\\t\\t\\t 4, 9, 5, \\t2, 4, 11,\\t6, 2, 10,\\t8, 6, 7,\\t9, 8, 1\\n\\t\\t];\\n\\n\\t\\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\\n\\n\\t\\tthis.type = 'IcosahedronBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t}\\n\\n\\tIcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\\n\\tIcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry;\\n\\n\\t/**\\n\\t * @author Abe Pazos / https://hamoid.com\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// DodecahedronGeometry\\n\\n\\tfunction DodecahedronGeometry( radius, detail ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'DodecahedronGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tDodecahedronGeometry.prototype = Object.create( Geometry.prototype );\\n\\tDodecahedronGeometry.prototype.constructor = DodecahedronGeometry;\\n\\n\\t// DodecahedronBufferGeometry\\n\\n\\tfunction DodecahedronBufferGeometry( radius, detail ) {\\n\\n\\t\\tvar t = ( 1 + Math.sqrt( 5 ) ) / 2;\\n\\t\\tvar r = 1 / t;\\n\\n\\t\\tvar vertices = [\\n\\n\\t\\t\\t// (±1, ±1, ±1)\\n\\t\\t\\t- 1, - 1, - 1,\\t- 1, - 1, 1,\\n\\t\\t\\t- 1, 1, - 1, - 1, 1, 1,\\n\\t\\t\\t1, - 1, - 1, 1, - 1, 1,\\n\\t\\t\\t1, 1, - 1, 1, 1, 1,\\n\\n\\t\\t\\t// (0, ±1/φ, ±φ)\\n\\t\\t\\t 0, - r, - t, 0, - r, t,\\n\\t\\t\\t 0, r, - t, 0, r, t,\\n\\n\\t\\t\\t// (±1/φ, ±φ, 0)\\n\\t\\t\\t- r, - t, 0, - r, t, 0,\\n\\t\\t\\t r, - t, 0, r, t, 0,\\n\\n\\t\\t\\t// (±φ, 0, ±1/φ)\\n\\t\\t\\t- t, 0, - r, t, 0, - r,\\n\\t\\t\\t- t, 0, r, t, 0, r\\n\\t\\t];\\n\\n\\t\\tvar indices = [\\n\\t\\t\\t3, 11, 7, \\t3, 7, 15, \\t3, 15, 13,\\n\\t\\t\\t7, 19, 17, \\t7, 17, 6, \\t7, 6, 15,\\n\\t\\t\\t17, 4, 8, \\t17, 8, 10, \\t17, 10, 6,\\n\\t\\t\\t8, 0, 16, \\t8, 16, 2, \\t8, 2, 10,\\n\\t\\t\\t0, 12, 1, \\t0, 1, 18, \\t0, 18, 16,\\n\\t\\t\\t6, 10, 2, \\t6, 2, 13, \\t6, 13, 15,\\n\\t\\t\\t2, 16, 18, \\t2, 18, 3, \\t2, 3, 13,\\n\\t\\t\\t18, 1, 9, \\t18, 9, 11, \\t18, 11, 3,\\n\\t\\t\\t4, 14, 12, \\t4, 12, 0, \\t4, 0, 8,\\n\\t\\t\\t11, 9, 5, \\t11, 5, 19, \\t11, 19, 7,\\n\\t\\t\\t19, 5, 14, \\t19, 14, 4, \\t19, 4, 17,\\n\\t\\t\\t1, 12, 14, \\t1, 14, 5, \\t1, 5, 9\\n\\t\\t];\\n\\n\\t\\tPolyhedronBufferGeometry.call( this, vertices, indices, radius, detail );\\n\\n\\t\\tthis.type = 'DodecahedronBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tdetail: detail\\n\\t\\t};\\n\\n\\t}\\n\\n\\tDodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype );\\n\\tDodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry;\\n\\n\\t/**\\n\\t * @author oosmoxiecode / https://github.com/oosmoxiecode\\n\\t * @author WestLangley / https://github.com/WestLangley\\n\\t * @author zz85 / https://github.com/zz85\\n\\t * @author miningold / https://github.com/miningold\\n\\t * @author jonobr1 / https://github.com/jonobr1\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t *\\n\\t */\\n\\n\\t// TubeGeometry\\n\\n\\tfunction TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'TubeGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tpath: path,\\n\\t\\t\\ttubularSegments: tubularSegments,\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\tclosed: closed\\n\\t\\t};\\n\\n\\t\\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\\n\\n\\t\\tvar bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\\n\\n\\t\\t// expose internals\\n\\n\\t\\tthis.tangents = bufferGeometry.tangents;\\n\\t\\tthis.normals = bufferGeometry.normals;\\n\\t\\tthis.binormals = bufferGeometry.binormals;\\n\\n\\t\\t// create geometry\\n\\n\\t\\tthis.fromBufferGeometry( bufferGeometry );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tTubeGeometry.prototype = Object.create( Geometry.prototype );\\n\\tTubeGeometry.prototype.constructor = TubeGeometry;\\n\\n\\t// TubeBufferGeometry\\n\\n\\tfunction TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'TubeBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tpath: path,\\n\\t\\t\\ttubularSegments: tubularSegments,\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\tclosed: closed\\n\\t\\t};\\n\\n\\t\\ttubularSegments = tubularSegments || 64;\\n\\t\\tradius = radius || 1;\\n\\t\\tradialSegments = radialSegments || 8;\\n\\t\\tclosed = closed || false;\\n\\n\\t\\tvar frames = path.computeFrenetFrames( tubularSegments, closed );\\n\\n\\t\\t// expose internals\\n\\n\\t\\tthis.tangents = frames.tangents;\\n\\t\\tthis.normals = frames.normals;\\n\\t\\tthis.binormals = frames.binormals;\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar vertex = new Vector3();\\n\\t\\tvar normal = new Vector3();\\n\\t\\tvar uv = new Vector2();\\n\\t\\tvar P = new Vector3();\\n\\n\\t\\tvar i, j;\\n\\n\\t\\t// buffer\\n\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\t\\tvar indices = [];\\n\\n\\t\\t// create buffer data\\n\\n\\t\\tgenerateBufferData();\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t\\t// functions\\n\\n\\t\\tfunction generateBufferData() {\\n\\n\\t\\t\\tfor ( i = 0; i < tubularSegments; i ++ ) {\\n\\n\\t\\t\\t\\tgenerateSegment( i );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// if the geometry is not closed, generate the last row of vertices and normals\\n\\t\\t\\t// at the regular position on the given path\\n\\t\\t\\t//\\n\\t\\t\\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\\n\\n\\t\\t\\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\\n\\n\\t\\t\\t// uvs are generated in a separate function.\\n\\t\\t\\t// this makes it easy compute correct values for closed geometries\\n\\n\\t\\t\\tgenerateUVs();\\n\\n\\t\\t\\t// finally create faces\\n\\n\\t\\t\\tgenerateIndices();\\n\\n\\t\\t}\\n\\n\\t\\tfunction generateSegment( i ) {\\n\\n\\t\\t\\t// we use getPointAt to sample evenly distributed points from the given path\\n\\n\\t\\t\\tP = path.getPointAt( i / tubularSegments, P );\\n\\n\\t\\t\\t// retrieve corresponding normal and binormal\\n\\n\\t\\t\\tvar N = frames.normals[ i ];\\n\\t\\t\\tvar B = frames.binormals[ i ];\\n\\n\\t\\t\\t// generate normals and vertices for the current segment\\n\\n\\t\\t\\tfor ( j = 0; j <= radialSegments; j ++ ) {\\n\\n\\t\\t\\t\\tvar v = j / radialSegments * Math.PI * 2;\\n\\n\\t\\t\\t\\tvar sin = Math.sin( v );\\n\\t\\t\\t\\tvar cos = - Math.cos( v );\\n\\n\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\tnormal.x = ( cos * N.x + sin * B.x );\\n\\t\\t\\t\\tnormal.y = ( cos * N.y + sin * B.y );\\n\\t\\t\\t\\tnormal.z = ( cos * N.z + sin * B.z );\\n\\t\\t\\t\\tnormal.normalize();\\n\\n\\t\\t\\t\\tnormals.push( normal.x, normal.y, normal.z );\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tvertex.x = P.x + radius * normal.x;\\n\\t\\t\\t\\tvertex.y = P.y + radius * normal.y;\\n\\t\\t\\t\\tvertex.z = P.z + radius * normal.z;\\n\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction generateIndices() {\\n\\n\\t\\t\\tfor ( j = 1; j <= tubularSegments; j ++ ) {\\n\\n\\t\\t\\t\\tfor ( i = 1; i <= radialSegments; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\\n\\t\\t\\t\\t\\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\\n\\t\\t\\t\\t\\tvar c = ( radialSegments + 1 ) * j + i;\\n\\t\\t\\t\\t\\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\\n\\n\\t\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction generateUVs() {\\n\\n\\t\\t\\tfor ( i = 0; i <= tubularSegments; i ++ ) {\\n\\n\\t\\t\\t\\tfor ( j = 0; j <= radialSegments; j ++ ) {\\n\\n\\t\\t\\t\\t\\tuv.x = i / tubularSegments;\\n\\t\\t\\t\\t\\tuv.y = j / radialSegments;\\n\\n\\t\\t\\t\\t\\tuvs.push( uv.x, uv.y );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tTubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tTubeBufferGeometry.prototype.constructor = TubeBufferGeometry;\\n\\n\\t/**\\n\\t * @author oosmoxiecode\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t *\\n\\t * based on http://www.blackpawn.com/texts/pqtorus/\\n\\t */\\n\\n\\t// TorusKnotGeometry\\n\\n\\tfunction TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'TorusKnotGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\ttube: tube,\\n\\t\\t\\ttubularSegments: tubularSegments,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\tp: p,\\n\\t\\t\\tq: q\\n\\t\\t};\\n\\n\\t\\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\\n\\n\\t\\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tTorusKnotGeometry.prototype = Object.create( Geometry.prototype );\\n\\tTorusKnotGeometry.prototype.constructor = TorusKnotGeometry;\\n\\n\\t// TorusKnotBufferGeometry\\n\\n\\tfunction TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'TorusKnotBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\ttube: tube,\\n\\t\\t\\ttubularSegments: tubularSegments,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\tp: p,\\n\\t\\t\\tq: q\\n\\t\\t};\\n\\n\\t\\tradius = radius || 1;\\n\\t\\ttube = tube || 0.4;\\n\\t\\ttubularSegments = Math.floor( tubularSegments ) || 64;\\n\\t\\tradialSegments = Math.floor( radialSegments ) || 8;\\n\\t\\tp = p || 2;\\n\\t\\tq = q || 3;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar i, j;\\n\\n\\t\\tvar vertex = new Vector3();\\n\\t\\tvar normal = new Vector3();\\n\\n\\t\\tvar P1 = new Vector3();\\n\\t\\tvar P2 = new Vector3();\\n\\n\\t\\tvar B = new Vector3();\\n\\t\\tvar T = new Vector3();\\n\\t\\tvar N = new Vector3();\\n\\n\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\tfor ( i = 0; i <= tubularSegments; ++ i ) {\\n\\n\\t\\t\\t// the radian \\\"u\\\" is used to calculate the position on the torus curve of the current tubular segement\\n\\n\\t\\t\\tvar u = i / tubularSegments * p * Math.PI * 2;\\n\\n\\t\\t\\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\\n\\t\\t\\t// these points are used to create a special \\\"coordinate space\\\", which is necessary to calculate the correct vertex positions\\n\\n\\t\\t\\tcalculatePositionOnCurve( u, p, q, radius, P1 );\\n\\t\\t\\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\\n\\n\\t\\t\\t// calculate orthonormal basis\\n\\n\\t\\t\\tT.subVectors( P2, P1 );\\n\\t\\t\\tN.addVectors( P2, P1 );\\n\\t\\t\\tB.crossVectors( T, N );\\n\\t\\t\\tN.crossVectors( B, T );\\n\\n\\t\\t\\t// normalize B, N. T can be ignored, we don't use it\\n\\n\\t\\t\\tB.normalize();\\n\\t\\t\\tN.normalize();\\n\\n\\t\\t\\tfor ( j = 0; j <= radialSegments; ++ j ) {\\n\\n\\t\\t\\t\\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\\n\\t\\t\\t\\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\\n\\n\\t\\t\\t\\tvar v = j / radialSegments * Math.PI * 2;\\n\\t\\t\\t\\tvar cx = - tube * Math.cos( v );\\n\\t\\t\\t\\tvar cy = tube * Math.sin( v );\\n\\n\\t\\t\\t\\t// now calculate the final vertex position.\\n\\t\\t\\t\\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\\n\\n\\t\\t\\t\\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\\n\\t\\t\\t\\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\\n\\t\\t\\t\\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\\n\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\\n\\n\\t\\t\\t\\tnormal.subVectors( vertex, P1 ).normalize();\\n\\n\\t\\t\\t\\tnormals.push( normal.x, normal.y, normal.z );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuvs.push( i / tubularSegments );\\n\\t\\t\\t\\tuvs.push( j / radialSegments );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// generate indices\\n\\n\\t\\tfor ( j = 1; j <= tubularSegments; j ++ ) {\\n\\n\\t\\t\\tfor ( i = 1; i <= radialSegments; i ++ ) {\\n\\n\\t\\t\\t\\t// indices\\n\\n\\t\\t\\t\\tvar a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\\n\\t\\t\\t\\tvar b = ( radialSegments + 1 ) * j + ( i - 1 );\\n\\t\\t\\t\\tvar c = ( radialSegments + 1 ) * j + i;\\n\\t\\t\\t\\tvar d = ( radialSegments + 1 ) * ( j - 1 ) + i;\\n\\n\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t\\t// this function calculates the current position on the torus curve\\n\\n\\t\\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\\n\\n\\t\\t\\tvar cu = Math.cos( u );\\n\\t\\t\\tvar su = Math.sin( u );\\n\\t\\t\\tvar quOverP = q / p * u;\\n\\t\\t\\tvar cs = Math.cos( quOverP );\\n\\n\\t\\t\\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\\n\\t\\t\\tposition.y = radius * ( 2 + cs ) * su * 0.5;\\n\\t\\t\\tposition.z = radius * Math.sin( quOverP ) * 0.5;\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tTorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tTorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry;\\n\\n\\t/**\\n\\t * @author oosmoxiecode\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// TorusGeometry\\n\\n\\tfunction TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'TorusGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\ttube: tube,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\ttubularSegments: tubularSegments,\\n\\t\\t\\tarc: arc\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tTorusGeometry.prototype = Object.create( Geometry.prototype );\\n\\tTorusGeometry.prototype.constructor = TorusGeometry;\\n\\n\\t// TorusBufferGeometry\\n\\n\\tfunction TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'TorusBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\ttube: tube,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\ttubularSegments: tubularSegments,\\n\\t\\t\\tarc: arc\\n\\t\\t};\\n\\n\\t\\tradius = radius || 1;\\n\\t\\ttube = tube || 0.4;\\n\\t\\tradialSegments = Math.floor( radialSegments ) || 8;\\n\\t\\ttubularSegments = Math.floor( tubularSegments ) || 6;\\n\\t\\tarc = arc || Math.PI * 2;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar center = new Vector3();\\n\\t\\tvar vertex = new Vector3();\\n\\t\\tvar normal = new Vector3();\\n\\n\\t\\tvar j, i;\\n\\n\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\tfor ( j = 0; j <= radialSegments; j ++ ) {\\n\\n\\t\\t\\tfor ( i = 0; i <= tubularSegments; i ++ ) {\\n\\n\\t\\t\\t\\tvar u = i / tubularSegments * arc;\\n\\t\\t\\t\\tvar v = j / radialSegments * Math.PI * 2;\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\\n\\t\\t\\t\\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\\n\\t\\t\\t\\tvertex.z = tube * Math.sin( v );\\n\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\tcenter.x = radius * Math.cos( u );\\n\\t\\t\\t\\tcenter.y = radius * Math.sin( u );\\n\\t\\t\\t\\tnormal.subVectors( vertex, center ).normalize();\\n\\n\\t\\t\\t\\tnormals.push( normal.x, normal.y, normal.z );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuvs.push( i / tubularSegments );\\n\\t\\t\\t\\tuvs.push( j / radialSegments );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// generate indices\\n\\n\\t\\tfor ( j = 1; j <= radialSegments; j ++ ) {\\n\\n\\t\\t\\tfor ( i = 1; i <= tubularSegments; i ++ ) {\\n\\n\\t\\t\\t\\t// indices\\n\\n\\t\\t\\t\\tvar a = ( tubularSegments + 1 ) * j + i - 1;\\n\\t\\t\\t\\tvar b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\\n\\t\\t\\t\\tvar c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\\n\\t\\t\\t\\tvar d = ( tubularSegments + 1 ) * j + i;\\n\\n\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t}\\n\\n\\tTorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tTorusBufferGeometry.prototype.constructor = TorusBufferGeometry;\\n\\n\\t/**\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t * Port from https://github.com/mapbox/earcut (v2.1.2)\\n\\t */\\n\\n\\tvar Earcut = {\\n\\n\\t\\ttriangulate: function ( data, holeIndices, dim ) {\\n\\n\\t\\t\\tdim = dim || 2;\\n\\n\\t\\t\\tvar hasHoles = holeIndices && holeIndices.length,\\n\\t\\t\\t\\touterLen = hasHoles ? holeIndices[ 0 ] * dim : data.length,\\n\\t\\t\\t\\touterNode = linkedList( data, 0, outerLen, dim, true ),\\n\\t\\t\\t\\ttriangles = [];\\n\\n\\t\\t\\tif ( ! outerNode ) return triangles;\\n\\n\\t\\t\\tvar minX, minY, maxX, maxY, x, y, invSize;\\n\\n\\t\\t\\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\\n\\n\\t\\t\\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\\n\\n\\t\\t\\tif ( data.length > 80 * dim ) {\\n\\n\\t\\t\\t\\tminX = maxX = data[ 0 ];\\n\\t\\t\\t\\tminY = maxY = data[ 1 ];\\n\\n\\t\\t\\t\\tfor ( var i = dim; i < outerLen; i += dim ) {\\n\\n\\t\\t\\t\\t\\tx = data[ i ];\\n\\t\\t\\t\\t\\ty = data[ i + 1 ];\\n\\t\\t\\t\\t\\tif ( x < minX ) minX = x;\\n\\t\\t\\t\\t\\tif ( y < minY ) minY = y;\\n\\t\\t\\t\\t\\tif ( x > maxX ) maxX = x;\\n\\t\\t\\t\\t\\tif ( y > maxY ) maxY = y;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\\n\\n\\t\\t\\t\\tinvSize = Math.max( maxX - minX, maxY - minY );\\n\\t\\t\\t\\tinvSize = invSize !== 0 ? 1 / invSize : 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\\n\\n\\t\\t\\treturn triangles;\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t// create a circular doubly linked list from polygon points in the specified winding order\\n\\n\\tfunction linkedList( data, start, end, dim, clockwise ) {\\n\\n\\t\\tvar i, last;\\n\\n\\t\\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\\n\\n\\t\\t\\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\\n\\n\\t\\t}\\n\\n\\t\\tif ( last && equals( last, last.next ) ) {\\n\\n\\t\\t\\tremoveNode( last );\\n\\t\\t\\tlast = last.next;\\n\\n\\t\\t}\\n\\n\\t\\treturn last;\\n\\n\\t}\\n\\n\\t// eliminate colinear or duplicate points\\n\\n\\tfunction filterPoints( start, end ) {\\n\\n\\t\\tif ( ! start ) return start;\\n\\t\\tif ( ! end ) end = start;\\n\\n\\t\\tvar p = start, again;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tagain = false;\\n\\n\\t\\t\\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\\n\\n\\t\\t\\t\\tremoveNode( p );\\n\\t\\t\\t\\tp = end = p.prev;\\n\\t\\t\\t\\tif ( p === p.next ) break;\\n\\t\\t\\t\\tagain = true;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tp = p.next;\\n\\n\\t\\t\\t}\\n\\n\\t\\t} while ( again || p !== end );\\n\\n\\t\\treturn end;\\n\\n\\t}\\n\\n\\t// main ear slicing loop which triangulates a polygon (given as a linked list)\\n\\n\\tfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\\n\\n\\t\\tif ( ! ear ) return;\\n\\n\\t\\t// interlink polygon nodes in z-order\\n\\n\\t\\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\\n\\n\\t\\tvar stop = ear, prev, next;\\n\\n\\t\\t// iterate through ears, slicing them one by one\\n\\n\\t\\twhile ( ear.prev !== ear.next ) {\\n\\n\\t\\t\\tprev = ear.prev;\\n\\t\\t\\tnext = ear.next;\\n\\n\\t\\t\\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\\n\\n\\t\\t\\t\\t// cut off the triangle\\n\\t\\t\\t\\ttriangles.push( prev.i / dim );\\n\\t\\t\\t\\ttriangles.push( ear.i / dim );\\n\\t\\t\\t\\ttriangles.push( next.i / dim );\\n\\n\\t\\t\\t\\tremoveNode( ear );\\n\\n\\t\\t\\t\\t// skipping the next vertice leads to less sliver triangles\\n\\t\\t\\t\\tear = next.next;\\n\\t\\t\\t\\tstop = next.next;\\n\\n\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tear = next;\\n\\n\\t\\t\\t// if we looped through the whole remaining polygon and can't find any more ears\\n\\n\\t\\t\\tif ( ear === stop ) {\\n\\n\\t\\t\\t\\t// try filtering points and slicing again\\n\\n\\t\\t\\t\\tif ( ! pass ) {\\n\\n\\t\\t\\t\\t\\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\\n\\n\\t\\t\\t\\t\\t// if this didn't work, try curing all small self-intersections locally\\n\\n\\t\\t\\t\\t} else if ( pass === 1 ) {\\n\\n\\t\\t\\t\\t\\tear = cureLocalIntersections( ear, triangles, dim );\\n\\t\\t\\t\\t\\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\\n\\n\\t\\t\\t\\t// as a last resort, try splitting the remaining polygon into two\\n\\n\\t\\t\\t\\t} else if ( pass === 2 ) {\\n\\n\\t\\t\\t\\t\\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// check whether a polygon node forms a valid ear with adjacent nodes\\n\\n\\tfunction isEar( ear ) {\\n\\n\\t\\tvar a = ear.prev,\\n\\t\\t\\tb = ear,\\n\\t\\t\\tc = ear.next;\\n\\n\\t\\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\\n\\n\\t\\t// now make sure we don't have other points inside the potential ear\\n\\t\\tvar p = ear.next.next;\\n\\n\\t\\twhile ( p !== ear.prev ) {\\n\\n\\t\\t\\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) {\\n\\n\\t\\t\\t\\treturn false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t}\\n\\n\\t\\treturn true;\\n\\n\\t}\\n\\n\\tfunction isEarHashed( ear, minX, minY, invSize ) {\\n\\n\\t\\tvar a = ear.prev,\\n\\t\\t\\tb = ear,\\n\\t\\t\\tc = ear.next;\\n\\n\\t\\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\\n\\n\\t\\t// triangle bbox; min & max are calculated like this for speed\\n\\n\\t\\tvar minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\\n\\t\\t\\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\\n\\t\\t\\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\\n\\t\\t\\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\\n\\n\\t\\t// z-order range for the current triangle bbox;\\n\\n\\t\\tvar minZ = zOrder( minTX, minTY, minX, minY, invSize ),\\n\\t\\t\\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\\n\\n\\t\\t// first look for points inside the triangle in increasing z-order\\n\\n\\t\\tvar p = ear.nextZ;\\n\\n\\t\\twhile ( p && p.z <= maxZ ) {\\n\\n\\t\\t\\tif ( p !== ear.prev && p !== ear.next &&\\n\\t\\t\\t\\t\\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\\n\\t\\t\\t\\t\\tarea( p.prev, p, p.next ) >= 0 ) return false;\\n\\t\\t\\tp = p.nextZ;\\n\\n\\t\\t}\\n\\n\\t\\t// then look for points in decreasing z-order\\n\\n\\t\\tp = ear.prevZ;\\n\\n\\t\\twhile ( p && p.z >= minZ ) {\\n\\n\\t\\t\\tif ( p !== ear.prev && p !== ear.next &&\\n\\t\\t\\t\\t\\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\\n\\t\\t\\t\\t\\tarea( p.prev, p, p.next ) >= 0 ) return false;\\n\\n\\t\\t\\tp = p.prevZ;\\n\\n\\t\\t}\\n\\n\\t\\treturn true;\\n\\n\\t}\\n\\n\\t// go through all polygon nodes and cure small local self-intersections\\n\\n\\tfunction cureLocalIntersections( start, triangles, dim ) {\\n\\n\\t\\tvar p = start;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tvar a = p.prev, b = p.next.next;\\n\\n\\t\\t\\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\\n\\n\\t\\t\\t\\ttriangles.push( a.i / dim );\\n\\t\\t\\t\\ttriangles.push( p.i / dim );\\n\\t\\t\\t\\ttriangles.push( b.i / dim );\\n\\n\\t\\t\\t\\t// remove two nodes involved\\n\\n\\t\\t\\t\\tremoveNode( p );\\n\\t\\t\\t\\tremoveNode( p.next );\\n\\n\\t\\t\\t\\tp = start = b;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t} while ( p !== start );\\n\\n\\t\\treturn p;\\n\\n\\t}\\n\\n\\t// try splitting polygon into two and triangulate them independently\\n\\n\\tfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\\n\\n\\t\\t// look for a valid diagonal that divides the polygon into two\\n\\n\\t\\tvar a = start;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tvar b = a.next.next;\\n\\n\\t\\t\\twhile ( b !== a.prev ) {\\n\\n\\t\\t\\t\\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\\n\\n\\t\\t\\t\\t\\t// split the polygon in two by the diagonal\\n\\n\\t\\t\\t\\t\\tvar c = splitPolygon( a, b );\\n\\n\\t\\t\\t\\t\\t// filter colinear points around the cuts\\n\\n\\t\\t\\t\\t\\ta = filterPoints( a, a.next );\\n\\t\\t\\t\\t\\tc = filterPoints( c, c.next );\\n\\n\\t\\t\\t\\t\\t// run earcut on each half\\n\\n\\t\\t\\t\\t\\tearcutLinked( a, triangles, dim, minX, minY, invSize );\\n\\t\\t\\t\\t\\tearcutLinked( c, triangles, dim, minX, minY, invSize );\\n\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tb = b.next;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\ta = a.next;\\n\\n\\t\\t} while ( a !== start );\\n\\n\\t}\\n\\n\\t// link every hole into the outer loop, producing a single-ring polygon without holes\\n\\n\\tfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\\n\\n\\t\\tvar queue = [], i, len, start, end, list;\\n\\n\\t\\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\\n\\n\\t\\t\\tstart = holeIndices[ i ] * dim;\\n\\t\\t\\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\\n\\t\\t\\tlist = linkedList( data, start, end, dim, false );\\n\\t\\t\\tif ( list === list.next ) list.steiner = true;\\n\\t\\t\\tqueue.push( getLeftmost( list ) );\\n\\n\\t\\t}\\n\\n\\t\\tqueue.sort( compareX );\\n\\n\\t\\t// process holes from left to right\\n\\n\\t\\tfor ( i = 0; i < queue.length; i ++ ) {\\n\\n\\t\\t\\teliminateHole( queue[ i ], outerNode );\\n\\t\\t\\touterNode = filterPoints( outerNode, outerNode.next );\\n\\n\\t\\t}\\n\\n\\t\\treturn outerNode;\\n\\n\\t}\\n\\n\\tfunction compareX( a, b ) {\\n\\n\\t\\treturn a.x - b.x;\\n\\n\\t}\\n\\n\\t// find a bridge between vertices that connects hole with an outer ring and and link it\\n\\n\\tfunction eliminateHole( hole, outerNode ) {\\n\\n\\t\\touterNode = findHoleBridge( hole, outerNode );\\n\\n\\t\\tif ( outerNode ) {\\n\\n\\t\\t\\tvar b = splitPolygon( outerNode, hole );\\n\\n\\t\\t\\tfilterPoints( b, b.next );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// David Eberly's algorithm for finding a bridge between hole and outer polygon\\n\\n\\tfunction findHoleBridge( hole, outerNode ) {\\n\\n\\t\\tvar p = outerNode,\\n\\t\\t\\thx = hole.x,\\n\\t\\t\\thy = hole.y,\\n\\t\\t\\tqx = - Infinity,\\n\\t\\t\\tm;\\n\\n\\t\\t// find a segment intersected by a ray from the hole's leftmost point to the left;\\n\\t\\t// segment's endpoint with lesser x will be potential connection point\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\\n\\n\\t\\t\\t\\tvar x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\\n\\n\\t\\t\\t\\tif ( x <= hx && x > qx ) {\\n\\n\\t\\t\\t\\t\\tqx = x;\\n\\n\\t\\t\\t\\t\\tif ( x === hx ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( hy === p.y ) return p;\\n\\t\\t\\t\\t\\t\\tif ( hy === p.next.y ) return p.next;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tm = p.x < p.next.x ? p : p.next;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t} while ( p !== outerNode );\\n\\n\\t\\tif ( ! m ) return null;\\n\\n\\t\\tif ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint\\n\\n\\t\\t// look for points inside the triangle of hole point, segment intersection and endpoint;\\n\\t\\t// if there are no points found, we have a valid connection;\\n\\t\\t// otherwise choose the point of the minimum angle with the ray as connection point\\n\\n\\t\\tvar stop = m,\\n\\t\\t\\tmx = m.x,\\n\\t\\t\\tmy = m.y,\\n\\t\\t\\ttanMin = Infinity,\\n\\t\\t\\ttan;\\n\\n\\t\\tp = m.next;\\n\\n\\t\\twhile ( p !== stop ) {\\n\\n\\t\\t\\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\\n\\t\\t\\t\\t\\t\\t\\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\\n\\n\\t\\t\\t\\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\\n\\n\\t\\t\\t\\tif ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) {\\n\\n\\t\\t\\t\\t\\tm = p;\\n\\t\\t\\t\\t\\ttanMin = tan;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t}\\n\\n\\t\\treturn m;\\n\\n\\t}\\n\\n\\t// interlink polygon nodes in z-order\\n\\n\\tfunction indexCurve( start, minX, minY, invSize ) {\\n\\n\\t\\tvar p = start;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\\n\\t\\t\\tp.prevZ = p.prev;\\n\\t\\t\\tp.nextZ = p.next;\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t} while ( p !== start );\\n\\n\\t\\tp.prevZ.nextZ = null;\\n\\t\\tp.prevZ = null;\\n\\n\\t\\tsortLinked( p );\\n\\n\\t}\\n\\n\\t// Simon Tatham's linked list merge sort algorithm\\n\\t// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\\n\\n\\tfunction sortLinked( list ) {\\n\\n\\t\\tvar i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tp = list;\\n\\t\\t\\tlist = null;\\n\\t\\t\\ttail = null;\\n\\t\\t\\tnumMerges = 0;\\n\\n\\t\\t\\twhile ( p ) {\\n\\n\\t\\t\\t\\tnumMerges ++;\\n\\t\\t\\t\\tq = p;\\n\\t\\t\\t\\tpSize = 0;\\n\\n\\t\\t\\t\\tfor ( i = 0; i < inSize; i ++ ) {\\n\\n\\t\\t\\t\\t\\tpSize ++;\\n\\t\\t\\t\\t\\tq = q.nextZ;\\n\\t\\t\\t\\t\\tif ( ! q ) break;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tqSize = inSize;\\n\\n\\t\\t\\t\\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\\n\\n\\t\\t\\t\\t\\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\\n\\n\\t\\t\\t\\t\\t\\te = p;\\n\\t\\t\\t\\t\\t\\tp = p.nextZ;\\n\\t\\t\\t\\t\\t\\tpSize --;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\te = q;\\n\\t\\t\\t\\t\\t\\tq = q.nextZ;\\n\\t\\t\\t\\t\\t\\tqSize --;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( tail ) tail.nextZ = e;\\n\\t\\t\\t\\t\\telse list = e;\\n\\n\\t\\t\\t\\t\\te.prevZ = tail;\\n\\t\\t\\t\\t\\ttail = e;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tp = q;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\ttail.nextZ = null;\\n\\t\\t\\tinSize *= 2;\\n\\n\\t\\t} while ( numMerges > 1 );\\n\\n\\t\\treturn list;\\n\\n\\t}\\n\\n\\t// z-order of a point given coords and inverse of the longer side of data bbox\\n\\n\\tfunction zOrder( x, y, minX, minY, invSize ) {\\n\\n\\t\\t// coords are transformed into non-negative 15-bit integer range\\n\\n\\t\\tx = 32767 * ( x - minX ) * invSize;\\n\\t\\ty = 32767 * ( y - minY ) * invSize;\\n\\n\\t\\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\\n\\t\\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\\n\\t\\tx = ( x | ( x << 2 ) ) & 0x33333333;\\n\\t\\tx = ( x | ( x << 1 ) ) & 0x55555555;\\n\\n\\t\\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\\n\\t\\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\\n\\t\\ty = ( y | ( y << 2 ) ) & 0x33333333;\\n\\t\\ty = ( y | ( y << 1 ) ) & 0x55555555;\\n\\n\\t\\treturn x | ( y << 1 );\\n\\n\\t}\\n\\n\\t// find the leftmost node of a polygon ring\\n\\n\\tfunction getLeftmost( start ) {\\n\\n\\t\\tvar p = start, leftmost = start;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tif ( p.x < leftmost.x ) leftmost = p;\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t} while ( p !== start );\\n\\n\\t\\treturn leftmost;\\n\\n\\t}\\n\\n\\t// check if a point lies within a convex triangle\\n\\n\\tfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\\n\\n\\t\\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\\n\\t\\t ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\\n\\t\\t ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\\n\\n\\t}\\n\\n\\t// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\\n\\n\\tfunction isValidDiagonal( a, b ) {\\n\\n\\t\\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) &&\\n\\t\\t\\tlocallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b );\\n\\n\\t}\\n\\n\\t// signed area of a triangle\\n\\n\\tfunction area( p, q, r ) {\\n\\n\\t\\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\\n\\n\\t}\\n\\n\\t// check if two points are equal\\n\\n\\tfunction equals( p1, p2 ) {\\n\\n\\t\\treturn p1.x === p2.x && p1.y === p2.y;\\n\\n\\t}\\n\\n\\t// check if two segments intersect\\n\\n\\tfunction intersects( p1, q1, p2, q2 ) {\\n\\n\\t\\tif ( ( equals( p1, q1 ) && equals( p2, q2 ) ) ||\\n\\t\\t\\t\\t( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true;\\n\\n\\t\\treturn area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 &&\\n\\t\\t\\t\\t\\t area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0;\\n\\n\\t}\\n\\n\\t// check if a polygon diagonal intersects any polygon segments\\n\\n\\tfunction intersectsPolygon( a, b ) {\\n\\n\\t\\tvar p = a;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\\n\\t\\t\\t\\t\\t\\t\\tintersects( p, p.next, a, b ) ) {\\n\\n\\t\\t\\t\\treturn true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t} while ( p !== a );\\n\\n\\t\\treturn false;\\n\\n\\t}\\n\\n\\t// check if a polygon diagonal is locally inside the polygon\\n\\n\\tfunction locallyInside( a, b ) {\\n\\n\\t\\treturn area( a.prev, a, a.next ) < 0 ?\\n\\t\\t\\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\\n\\t\\t\\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\\n\\n\\t}\\n\\n\\t// check if the middle point of a polygon diagonal is inside the polygon\\n\\n\\tfunction middleInside( a, b ) {\\n\\n\\t\\tvar p = a,\\n\\t\\t\\tinside = false,\\n\\t\\t\\tpx = ( a.x + b.x ) / 2,\\n\\t\\t\\tpy = ( a.y + b.y ) / 2;\\n\\n\\t\\tdo {\\n\\n\\t\\t\\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\\n\\t\\t\\t\\t\\t\\t\\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) {\\n\\n\\t\\t\\t\\tinside = ! inside;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tp = p.next;\\n\\n\\t\\t} while ( p !== a );\\n\\n\\t\\treturn inside;\\n\\n\\t}\\n\\n\\t// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\\n\\t// if one belongs to the outer ring and another to a hole, it merges it into a single ring\\n\\n\\tfunction splitPolygon( a, b ) {\\n\\n\\t\\tvar a2 = new Node( a.i, a.x, a.y ),\\n\\t\\t\\tb2 = new Node( b.i, b.x, b.y ),\\n\\t\\t\\tan = a.next,\\n\\t\\t\\tbp = b.prev;\\n\\n\\t\\ta.next = b;\\n\\t\\tb.prev = a;\\n\\n\\t\\ta2.next = an;\\n\\t\\tan.prev = a2;\\n\\n\\t\\tb2.next = a2;\\n\\t\\ta2.prev = b2;\\n\\n\\t\\tbp.next = b2;\\n\\t\\tb2.prev = bp;\\n\\n\\t\\treturn b2;\\n\\n\\t}\\n\\n\\t// create a node and optionally link it with previous one (in a circular doubly linked list)\\n\\n\\tfunction insertNode( i, x, y, last ) {\\n\\n\\t\\tvar p = new Node( i, x, y );\\n\\n\\t\\tif ( ! last ) {\\n\\n\\t\\t\\tp.prev = p;\\n\\t\\t\\tp.next = p;\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tp.next = last.next;\\n\\t\\t\\tp.prev = last;\\n\\t\\t\\tlast.next.prev = p;\\n\\t\\t\\tlast.next = p;\\n\\n\\t\\t}\\n\\n\\t\\treturn p;\\n\\n\\t}\\n\\n\\tfunction removeNode( p ) {\\n\\n\\t\\tp.next.prev = p.prev;\\n\\t\\tp.prev.next = p.next;\\n\\n\\t\\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\\n\\t\\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\\n\\n\\t}\\n\\n\\tfunction Node( i, x, y ) {\\n\\n\\t\\t// vertice index in coordinates array\\n\\t\\tthis.i = i;\\n\\n\\t\\t// vertex coordinates\\n\\t\\tthis.x = x;\\n\\t\\tthis.y = y;\\n\\n\\t\\t// previous and next vertice nodes in a polygon ring\\n\\t\\tthis.prev = null;\\n\\t\\tthis.next = null;\\n\\n\\t\\t// z-order curve value\\n\\t\\tthis.z = null;\\n\\n\\t\\t// previous and next nodes in z-order\\n\\t\\tthis.prevZ = null;\\n\\t\\tthis.nextZ = null;\\n\\n\\t\\t// indicates whether this is a steiner point\\n\\t\\tthis.steiner = false;\\n\\n\\t}\\n\\n\\tfunction signedArea( data, start, end, dim ) {\\n\\n\\t\\tvar sum = 0;\\n\\n\\t\\tfor ( var i = start, j = end - dim; i < end; i += dim ) {\\n\\n\\t\\t\\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\\n\\t\\t\\tj = i;\\n\\n\\t\\t}\\n\\n\\t\\treturn sum;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t */\\n\\n\\tvar ShapeUtils = {\\n\\n\\t\\t// calculate area of the contour polygon\\n\\n\\t\\tarea: function ( contour ) {\\n\\n\\t\\t\\tvar n = contour.length;\\n\\t\\t\\tvar a = 0.0;\\n\\n\\t\\t\\tfor ( var p = n - 1, q = 0; q < n; p = q ++ ) {\\n\\n\\t\\t\\t\\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn a * 0.5;\\n\\n\\t\\t},\\n\\n\\t\\tisClockWise: function ( pts ) {\\n\\n\\t\\t\\treturn ShapeUtils.area( pts ) < 0;\\n\\n\\t\\t},\\n\\n\\t\\ttriangulateShape: function ( contour, holes ) {\\n\\n\\t\\t\\tfunction removeDupEndPts( points ) {\\n\\n\\t\\t\\t\\tvar l = points.length;\\n\\n\\t\\t\\t\\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\\n\\n\\t\\t\\t\\t\\tpoints.pop();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction addContour( vertices, contour ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < contour.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvertices.push( contour[ i ].x );\\n\\t\\t\\t\\t\\tvertices.push( contour[ i ].y );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\\n\\t\\t\\tvar holeIndices = []; // array of hole indices\\n\\t\\t\\tvar faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\\n\\n\\t\\t\\tremoveDupEndPts( contour );\\n\\t\\t\\taddContour( vertices, contour );\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar holeIndex = contour.length;\\n\\t\\t\\tholes.forEach( removeDupEndPts );\\n\\n\\t\\t\\tfor ( i = 0; i < holes.length; i ++ ) {\\n\\n\\t\\t\\t\\tholeIndices.push( holeIndex );\\n\\t\\t\\t\\tholeIndex += holes[ i ].length;\\n\\t\\t\\t\\taddContour( vertices, holes[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar triangles = Earcut.triangulate( vertices, holeIndices );\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tfor ( var i = 0; i < triangles.length; i += 3 ) {\\n\\n\\t\\t\\t\\tfaces.push( triangles.slice( i, i + 3 ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn faces;\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t *\\n\\t * Creates extruded geometry from a path shape.\\n\\t *\\n\\t * parameters = {\\n\\t *\\n\\t * curveSegments: , // number of points on the curves\\n\\t * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\\n\\t * amount: , // Depth to extrude the shape\\n\\t *\\n\\t * bevelEnabled: , // turn on bevel\\n\\t * bevelThickness: , // how deep into the original shape bevel goes\\n\\t * bevelSize: , // how far from shape outline is bevel\\n\\t * bevelSegments: , // number of bevel layers\\n\\t *\\n\\t * extrudePath: // curve to extrude shape along\\n\\t * frames: // containing arrays of tangents, normals, binormals\\n\\t *\\n\\t * UVGenerator: // object that provides UV generator functions\\n\\t *\\n\\t * }\\n\\t */\\n\\n\\t// ExtrudeGeometry\\n\\n\\tfunction ExtrudeGeometry( shapes, options ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'ExtrudeGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tshapes: shapes,\\n\\t\\t\\toptions: options\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tExtrudeGeometry.prototype = Object.create( Geometry.prototype );\\n\\tExtrudeGeometry.prototype.constructor = ExtrudeGeometry;\\n\\n\\t// ExtrudeBufferGeometry\\n\\n\\tfunction ExtrudeBufferGeometry( shapes, options ) {\\n\\n\\t\\tif ( typeof ( shapes ) === \\\"undefined\\\" ) {\\n\\n\\t\\t\\treturn;\\n\\n\\t\\t}\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'ExtrudeBufferGeometry';\\n\\n\\t\\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\\n\\n\\t\\tthis.addShapeList( shapes, options );\\n\\n\\t\\tthis.computeVertexNormals();\\n\\n\\t\\t// can't really use automatic vertex normals\\n\\t\\t// as then front and back sides get smoothed too\\n\\t\\t// should do separate smoothing just for sides\\n\\n\\t\\t//this.computeVertexNormals();\\n\\n\\t\\t//console.log( \\\"took\\\", ( Date.now() - startTime ) );\\n\\n\\t}\\n\\n\\tExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry;\\n\\n\\tExtrudeBufferGeometry.prototype.getArrays = function () {\\n\\n\\t\\tvar positionAttribute = this.getAttribute( \\\"position\\\" );\\n\\t\\tvar verticesArray = positionAttribute ? Array.prototype.slice.call( positionAttribute.array ) : [];\\n\\n\\t\\tvar uvAttribute = this.getAttribute( \\\"uv\\\" );\\n\\t\\tvar uvArray = uvAttribute ? Array.prototype.slice.call( uvAttribute.array ) : [];\\n\\n\\t\\tvar IndexAttribute = this.index;\\n\\t\\tvar indicesArray = IndexAttribute ? Array.prototype.slice.call( IndexAttribute.array ) : [];\\n\\n\\t\\treturn {\\n\\t\\t\\tposition: verticesArray,\\n\\t\\t\\tuv: uvArray,\\n\\t\\t\\tindex: indicesArray\\n\\t\\t};\\n\\n\\t};\\n\\n\\tExtrudeBufferGeometry.prototype.addShapeList = function ( shapes, options ) {\\n\\n\\t\\tvar sl = shapes.length;\\n\\t\\toptions.arrays = this.getArrays();\\n\\n\\t\\tfor ( var s = 0; s < sl; s ++ ) {\\n\\n\\t\\t\\tvar shape = shapes[ s ];\\n\\t\\t\\tthis.addShape( shape, options );\\n\\n\\t\\t}\\n\\n\\t\\tthis.setIndex( options.arrays.index );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( options.arrays.position, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( options.arrays.uv, 2 ) );\\n\\n\\t};\\n\\n\\tExtrudeBufferGeometry.prototype.addShape = function ( shape, options ) {\\n\\n\\t\\tvar arrays = options.arrays ? options.arrays : this.getArrays();\\n\\t\\tvar verticesArray = arrays.position;\\n\\t\\tvar indicesArray = arrays.index;\\n\\t\\tvar uvArray = arrays.uv;\\n\\n\\t\\tvar placeholder = [];\\n\\n\\n\\t\\tvar amount = options.amount !== undefined ? options.amount : 100;\\n\\n\\t\\tvar bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10\\n\\t\\tvar bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8\\n\\t\\tvar bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\\n\\n\\t\\tvar bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false\\n\\n\\t\\tvar curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\\n\\n\\t\\tvar steps = options.steps !== undefined ? options.steps : 1;\\n\\n\\t\\tvar extrudePath = options.extrudePath;\\n\\t\\tvar extrudePts, extrudeByPath = false;\\n\\n\\t\\t// Use default WorldUVGenerator if no UV generators are specified.\\n\\t\\tvar uvgen = options.UVGenerator !== undefined ? options.UVGenerator : ExtrudeGeometry.WorldUVGenerator;\\n\\n\\t\\tvar splineTube, binormal, normal, position2;\\n\\t\\tif ( extrudePath ) {\\n\\n\\t\\t\\textrudePts = extrudePath.getSpacedPoints( steps );\\n\\n\\t\\t\\textrudeByPath = true;\\n\\t\\t\\tbevelEnabled = false; // bevels not supported for path extrusion\\n\\n\\t\\t\\t// SETUP TNB variables\\n\\n\\t\\t\\t// TODO1 - have a .isClosed in spline?\\n\\n\\t\\t\\tsplineTube = options.frames !== undefined ? options.frames : extrudePath.computeFrenetFrames( steps, false );\\n\\n\\t\\t\\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\\n\\n\\t\\t\\tbinormal = new Vector3();\\n\\t\\t\\tnormal = new Vector3();\\n\\t\\t\\tposition2 = new Vector3();\\n\\n\\t\\t}\\n\\n\\t\\t// Safeguards if bevels are not enabled\\n\\n\\t\\tif ( ! bevelEnabled ) {\\n\\n\\t\\t\\tbevelSegments = 0;\\n\\t\\t\\tbevelThickness = 0;\\n\\t\\t\\tbevelSize = 0;\\n\\n\\t\\t}\\n\\n\\t\\t// Variables initialization\\n\\n\\t\\tvar ahole, h, hl; // looping of holes\\n\\t\\tvar scope = this;\\n\\n\\t\\tvar shapePoints = shape.extractPoints( curveSegments );\\n\\n\\t\\tvar vertices = shapePoints.shape;\\n\\t\\tvar holes = shapePoints.holes;\\n\\n\\t\\tvar reverse = ! ShapeUtils.isClockWise( vertices );\\n\\n\\t\\tif ( reverse ) {\\n\\n\\t\\t\\tvertices = vertices.reverse();\\n\\n\\t\\t\\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\\n\\n\\t\\t\\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\\n\\n\\t\\t\\t\\tahole = holes[ h ];\\n\\n\\t\\t\\t\\tif ( ShapeUtils.isClockWise( ahole ) ) {\\n\\n\\t\\t\\t\\t\\tholes[ h ] = ahole.reverse();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\n\\t\\tvar faces = ShapeUtils.triangulateShape( vertices, holes );\\n\\n\\t\\t/* Vertices */\\n\\n\\t\\tvar contour = vertices; // vertices has all points but contour has only points of circumference\\n\\n\\t\\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\\n\\n\\t\\t\\tahole = holes[ h ];\\n\\n\\t\\t\\tvertices = vertices.concat( ahole );\\n\\n\\t\\t}\\n\\n\\n\\t\\tfunction scalePt2( pt, vec, size ) {\\n\\n\\t\\t\\tif ( ! vec ) console.error( \\\"THREE.ExtrudeGeometry: vec does not exist\\\" );\\n\\n\\t\\t\\treturn vec.clone().multiplyScalar( size ).add( pt );\\n\\n\\t\\t}\\n\\n\\t\\tvar b, bs, t, z,\\n\\t\\t\\tvert, vlen = vertices.length,\\n\\t\\t\\tface, flen = faces.length;\\n\\n\\n\\t\\t// Find directions for point movement\\n\\n\\n\\t\\tfunction getBevelVec( inPt, inPrev, inNext ) {\\n\\n\\t\\t\\t// computes for inPt the corresponding point inPt' on a new contour\\n\\t\\t\\t// shifted by 1 unit (length of normalized vector) to the left\\n\\t\\t\\t// if we walk along contour clockwise, this new contour is outside the old one\\n\\t\\t\\t//\\n\\t\\t\\t// inPt' is the intersection of the two lines parallel to the two\\n\\t\\t\\t// adjacent edges of inPt at a distance of 1 unit on the left side.\\n\\n\\t\\t\\tvar v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\\n\\n\\t\\t\\t// good reading for geometry algorithms (here: line-line intersection)\\n\\t\\t\\t// http://geomalgorithms.com/a05-_intersect-1.html\\n\\n\\t\\t\\tvar v_prev_x = inPt.x - inPrev.x,\\n\\t\\t\\t\\tv_prev_y = inPt.y - inPrev.y;\\n\\t\\t\\tvar v_next_x = inNext.x - inPt.x,\\n\\t\\t\\t\\tv_next_y = inNext.y - inPt.y;\\n\\n\\t\\t\\tvar v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\\n\\n\\t\\t\\t// check for collinear edges\\n\\t\\t\\tvar collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\\n\\n\\t\\t\\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\\n\\n\\t\\t\\t\\t// not collinear\\n\\n\\t\\t\\t\\t// length of vectors for normalizing\\n\\n\\t\\t\\t\\tvar v_prev_len = Math.sqrt( v_prev_lensq );\\n\\t\\t\\t\\tvar v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\\n\\n\\t\\t\\t\\t// shift adjacent points by unit vectors to the left\\n\\n\\t\\t\\t\\tvar ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\\n\\t\\t\\t\\tvar ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\\n\\n\\t\\t\\t\\tvar ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\\n\\t\\t\\t\\tvar ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\\n\\n\\t\\t\\t\\t// scaling factor for v_prev to intersection point\\n\\n\\t\\t\\t\\tvar sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\\n\\t\\t\\t\\t\\t\\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\\n\\t\\t\\t\\t\\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\\n\\n\\t\\t\\t\\t// vector from inPt to intersection point\\n\\n\\t\\t\\t\\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\\n\\t\\t\\t\\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\\n\\n\\t\\t\\t\\t// Don't normalize!, otherwise sharp corners become ugly\\n\\t\\t\\t\\t// but prevent crazy spikes\\n\\t\\t\\t\\tvar v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\\n\\t\\t\\t\\tif ( v_trans_lensq <= 2 ) {\\n\\n\\t\\t\\t\\t\\treturn new Vector2( v_trans_x, v_trans_y );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// handle special case of collinear edges\\n\\n\\t\\t\\t\\tvar direction_eq = false; // assumes: opposite\\n\\t\\t\\t\\tif ( v_prev_x > Number.EPSILON ) {\\n\\n\\t\\t\\t\\t\\tif ( v_next_x > Number.EPSILON ) {\\n\\n\\t\\t\\t\\t\\t\\tdirection_eq = true;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tif ( v_prev_x < - Number.EPSILON ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( v_next_x < - Number.EPSILON ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tdirection_eq = true;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tdirection_eq = true;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( direction_eq ) {\\n\\n\\t\\t\\t\\t\\t// console.log(\\\"Warning: lines are a straight sequence\\\");\\n\\t\\t\\t\\t\\tv_trans_x = - v_prev_y;\\n\\t\\t\\t\\t\\tv_trans_y = v_prev_x;\\n\\t\\t\\t\\t\\tshrink_by = Math.sqrt( v_prev_lensq );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// console.log(\\\"Warning: lines are a straight spike\\\");\\n\\t\\t\\t\\t\\tv_trans_x = v_prev_x;\\n\\t\\t\\t\\t\\tv_trans_y = v_prev_y;\\n\\t\\t\\t\\t\\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\\n\\n\\t\\t}\\n\\n\\n\\t\\tvar contourMovements = [];\\n\\n\\t\\tfor ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\\n\\n\\t\\t\\tif ( j === il ) j = 0;\\n\\t\\t\\tif ( k === il ) k = 0;\\n\\n\\t\\t\\t// (j)---(i)---(k)\\n\\t\\t\\t// console.log('i,j,k', i, j , k)\\n\\n\\t\\t\\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\\n\\n\\t\\t}\\n\\n\\t\\tvar holesMovements = [],\\n\\t\\t\\toneHoleMovements, verticesMovements = contourMovements.concat();\\n\\n\\t\\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\\n\\n\\t\\t\\tahole = holes[ h ];\\n\\n\\t\\t\\toneHoleMovements = [];\\n\\n\\t\\t\\tfor ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\\n\\n\\t\\t\\t\\tif ( j === il ) j = 0;\\n\\t\\t\\t\\tif ( k === il ) k = 0;\\n\\n\\t\\t\\t\\t// (j)---(i)---(k)\\n\\t\\t\\t\\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tholesMovements.push( oneHoleMovements );\\n\\t\\t\\tverticesMovements = verticesMovements.concat( oneHoleMovements );\\n\\n\\t\\t}\\n\\n\\n\\t\\t// Loop bevelSegments, 1 for the front, 1 for the back\\n\\n\\t\\tfor ( b = 0; b < bevelSegments; b ++ ) {\\n\\n\\t\\t\\t//for ( b = bevelSegments; b > 0; b -- ) {\\n\\n\\t\\t\\tt = b / bevelSegments;\\n\\t\\t\\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\\n\\t\\t\\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\\n\\n\\t\\t\\t// contract shape\\n\\n\\t\\t\\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\\n\\n\\t\\t\\t\\tv( vert.x, vert.y, - z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// expand holes\\n\\n\\t\\t\\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\\n\\n\\t\\t\\t\\tahole = holes[ h ];\\n\\t\\t\\t\\toneHoleMovements = holesMovements[ h ];\\n\\n\\t\\t\\t\\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\\n\\n\\t\\t\\t\\t\\tv( vert.x, vert.y, - z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tbs = bevelSize;\\n\\n\\t\\t// Back facing vertices\\n\\n\\t\\tfor ( i = 0; i < vlen; i ++ ) {\\n\\n\\t\\t\\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\\n\\n\\t\\t\\tif ( ! extrudeByPath ) {\\n\\n\\t\\t\\t\\tv( vert.x, vert.y, 0 );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\\n\\n\\t\\t\\t\\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\\n\\t\\t\\t\\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\\n\\n\\t\\t\\t\\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\\n\\n\\t\\t\\t\\tv( position2.x, position2.y, position2.z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// Add stepped vertices...\\n\\t\\t// Including front facing vertices\\n\\n\\t\\tvar s;\\n\\n\\t\\tfor ( s = 1; s <= steps; s ++ ) {\\n\\n\\t\\t\\tfor ( i = 0; i < vlen; i ++ ) {\\n\\n\\t\\t\\t\\tvert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\\n\\n\\t\\t\\t\\tif ( ! extrudeByPath ) {\\n\\n\\t\\t\\t\\t\\tv( vert.x, vert.y, amount / steps * s );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\\n\\n\\t\\t\\t\\t\\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\\n\\t\\t\\t\\t\\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\\n\\n\\t\\t\\t\\t\\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\\n\\n\\t\\t\\t\\t\\tv( position2.x, position2.y, position2.z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\n\\t\\t// Add bevel segments planes\\n\\n\\t\\t//for ( b = 1; b <= bevelSegments; b ++ ) {\\n\\t\\tfor ( b = bevelSegments - 1; b >= 0; b -- ) {\\n\\n\\t\\t\\tt = b / bevelSegments;\\n\\t\\t\\tz = bevelThickness * Math.cos( t * Math.PI / 2 );\\n\\t\\t\\tbs = bevelSize * Math.sin( t * Math.PI / 2 );\\n\\n\\t\\t\\t// contract shape\\n\\n\\t\\t\\tfor ( i = 0, il = contour.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvert = scalePt2( contour[ i ], contourMovements[ i ], bs );\\n\\t\\t\\t\\tv( vert.x, vert.y, amount + z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// expand holes\\n\\n\\t\\t\\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\\n\\n\\t\\t\\t\\tahole = holes[ h ];\\n\\t\\t\\t\\toneHoleMovements = holesMovements[ h ];\\n\\n\\t\\t\\t\\tfor ( i = 0, il = ahole.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\\n\\n\\t\\t\\t\\t\\tif ( ! extrudeByPath ) {\\n\\n\\t\\t\\t\\t\\t\\tv( vert.x, vert.y, amount + z );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t/* Faces */\\n\\n\\t\\t// Top and bottom faces\\n\\n\\t\\tbuildLidFaces();\\n\\n\\t\\t// Sides faces\\n\\n\\t\\tbuildSideFaces();\\n\\n\\n\\t\\t///// Internal functions\\n\\n\\t\\tfunction buildLidFaces() {\\n\\n\\t\\t\\tvar start = verticesArray.length / 3;\\n\\n\\t\\t\\tif ( bevelEnabled ) {\\n\\n\\t\\t\\t\\tvar layer = 0; // steps + 1\\n\\t\\t\\t\\tvar offset = vlen * layer;\\n\\n\\t\\t\\t\\t// Bottom faces\\n\\n\\t\\t\\t\\tfor ( i = 0; i < flen; i ++ ) {\\n\\n\\t\\t\\t\\t\\tface = faces[ i ];\\n\\t\\t\\t\\t\\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tlayer = steps + bevelSegments * 2;\\n\\t\\t\\t\\toffset = vlen * layer;\\n\\n\\t\\t\\t\\t// Top faces\\n\\n\\t\\t\\t\\tfor ( i = 0; i < flen; i ++ ) {\\n\\n\\t\\t\\t\\t\\tface = faces[ i ];\\n\\t\\t\\t\\t\\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Bottom faces\\n\\n\\t\\t\\t\\tfor ( i = 0; i < flen; i ++ ) {\\n\\n\\t\\t\\t\\t\\tface = faces[ i ];\\n\\t\\t\\t\\t\\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Top faces\\n\\n\\t\\t\\t\\tfor ( i = 0; i < flen; i ++ ) {\\n\\n\\t\\t\\t\\t\\tface = faces[ i ];\\n\\t\\t\\t\\t\\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tscope.addGroup( start, verticesArray.length / 3 - start, options.material !== undefined ? options.material : 0 );\\n\\n\\t\\t}\\n\\n\\t\\t// Create faces for the z-sides of the shape\\n\\n\\t\\tfunction buildSideFaces() {\\n\\n\\t\\t\\tvar start = verticesArray.length / 3;\\n\\t\\t\\tvar layeroffset = 0;\\n\\t\\t\\tsidewalls( contour, layeroffset );\\n\\t\\t\\tlayeroffset += contour.length;\\n\\n\\t\\t\\tfor ( h = 0, hl = holes.length; h < hl; h ++ ) {\\n\\n\\t\\t\\t\\tahole = holes[ h ];\\n\\t\\t\\t\\tsidewalls( ahole, layeroffset );\\n\\n\\t\\t\\t\\t//, true\\n\\t\\t\\t\\tlayeroffset += ahole.length;\\n\\n\\t\\t\\t}\\n\\n\\n\\t\\t\\tscope.addGroup( start, verticesArray.length / 3 - start, options.extrudeMaterial !== undefined ? options.extrudeMaterial : 1 );\\n\\n\\n\\t\\t}\\n\\n\\t\\tfunction sidewalls( contour, layeroffset ) {\\n\\n\\t\\t\\tvar j, k;\\n\\t\\t\\ti = contour.length;\\n\\n\\t\\t\\twhile ( -- i >= 0 ) {\\n\\n\\t\\t\\t\\tj = i;\\n\\t\\t\\t\\tk = i - 1;\\n\\t\\t\\t\\tif ( k < 0 ) k = contour.length - 1;\\n\\n\\t\\t\\t\\t//console.log('b', i,j, i-1, k,vertices.length);\\n\\n\\t\\t\\t\\tvar s = 0,\\n\\t\\t\\t\\t\\tsl = steps + bevelSegments * 2;\\n\\n\\t\\t\\t\\tfor ( s = 0; s < sl; s ++ ) {\\n\\n\\t\\t\\t\\t\\tvar slen1 = vlen * s;\\n\\t\\t\\t\\t\\tvar slen2 = vlen * ( s + 1 );\\n\\n\\t\\t\\t\\t\\tvar a = layeroffset + j + slen1,\\n\\t\\t\\t\\t\\t\\tb = layeroffset + k + slen1,\\n\\t\\t\\t\\t\\t\\tc = layeroffset + k + slen2,\\n\\t\\t\\t\\t\\t\\td = layeroffset + j + slen2;\\n\\n\\t\\t\\t\\t\\tf4( a, b, c, d );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tfunction v( x, y, z ) {\\n\\n\\t\\t\\tplaceholder.push( x );\\n\\t\\t\\tplaceholder.push( y );\\n\\t\\t\\tplaceholder.push( z );\\n\\n\\t\\t}\\n\\n\\n\\t\\tfunction f3( a, b, c ) {\\n\\n\\t\\t\\taddVertex( a );\\n\\t\\t\\taddVertex( b );\\n\\t\\t\\taddVertex( c );\\n\\n\\t\\t\\tvar nextIndex = verticesArray.length / 3;\\n\\t\\t\\tvar uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\\n\\n\\t\\t\\taddUV( uvs[ 0 ] );\\n\\t\\t\\taddUV( uvs[ 1 ] );\\n\\t\\t\\taddUV( uvs[ 2 ] );\\n\\n\\t\\t}\\n\\n\\t\\tfunction f4( a, b, c, d ) {\\n\\n\\t\\t\\taddVertex( a );\\n\\t\\t\\taddVertex( b );\\n\\t\\t\\taddVertex( d );\\n\\n\\t\\t\\taddVertex( b );\\n\\t\\t\\taddVertex( c );\\n\\t\\t\\taddVertex( d );\\n\\n\\n\\t\\t\\tvar nextIndex = verticesArray.length / 3;\\n\\t\\t\\tvar uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\\n\\n\\t\\t\\taddUV( uvs[ 0 ] );\\n\\t\\t\\taddUV( uvs[ 1 ] );\\n\\t\\t\\taddUV( uvs[ 3 ] );\\n\\n\\t\\t\\taddUV( uvs[ 1 ] );\\n\\t\\t\\taddUV( uvs[ 2 ] );\\n\\t\\t\\taddUV( uvs[ 3 ] );\\n\\n\\t\\t}\\n\\n\\t\\tfunction addVertex( index ) {\\n\\n\\t\\t\\tindicesArray.push( verticesArray.length / 3 );\\n\\t\\t\\tverticesArray.push( placeholder[ index * 3 + 0 ] );\\n\\t\\t\\tverticesArray.push( placeholder[ index * 3 + 1 ] );\\n\\t\\t\\tverticesArray.push( placeholder[ index * 3 + 2 ] );\\n\\n\\t\\t}\\n\\n\\n\\t\\tfunction addUV( vector2 ) {\\n\\n\\t\\t\\tuvArray.push( vector2.x );\\n\\t\\t\\tuvArray.push( vector2.y );\\n\\n\\t\\t}\\n\\n\\t\\tif ( ! options.arrays ) {\\n\\n\\t\\t\\tthis.setIndex( indicesArray );\\n\\t\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\\n\\t\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\tExtrudeGeometry.WorldUVGenerator = {\\n\\n\\t\\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\\n\\n\\t\\t\\tvar a_x = vertices[ indexA * 3 ];\\n\\t\\t\\tvar a_y = vertices[ indexA * 3 + 1 ];\\n\\t\\t\\tvar b_x = vertices[ indexB * 3 ];\\n\\t\\t\\tvar b_y = vertices[ indexB * 3 + 1 ];\\n\\t\\t\\tvar c_x = vertices[ indexC * 3 ];\\n\\t\\t\\tvar c_y = vertices[ indexC * 3 + 1 ];\\n\\n\\t\\t\\treturn [\\n\\t\\t\\t\\tnew Vector2( a_x, a_y ),\\n\\t\\t\\t\\tnew Vector2( b_x, b_y ),\\n\\t\\t\\t\\tnew Vector2( c_x, c_y )\\n\\t\\t\\t];\\n\\n\\t\\t},\\n\\n\\t\\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\\n\\n\\t\\t\\tvar a_x = vertices[ indexA * 3 ];\\n\\t\\t\\tvar a_y = vertices[ indexA * 3 + 1 ];\\n\\t\\t\\tvar a_z = vertices[ indexA * 3 + 2 ];\\n\\t\\t\\tvar b_x = vertices[ indexB * 3 ];\\n\\t\\t\\tvar b_y = vertices[ indexB * 3 + 1 ];\\n\\t\\t\\tvar b_z = vertices[ indexB * 3 + 2 ];\\n\\t\\t\\tvar c_x = vertices[ indexC * 3 ];\\n\\t\\t\\tvar c_y = vertices[ indexC * 3 + 1 ];\\n\\t\\t\\tvar c_z = vertices[ indexC * 3 + 2 ];\\n\\t\\t\\tvar d_x = vertices[ indexD * 3 ];\\n\\t\\t\\tvar d_y = vertices[ indexD * 3 + 1 ];\\n\\t\\t\\tvar d_z = vertices[ indexD * 3 + 2 ];\\n\\n\\t\\t\\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\\n\\n\\t\\t\\t\\treturn [\\n\\t\\t\\t\\t\\tnew Vector2( a_x, 1 - a_z ),\\n\\t\\t\\t\\t\\tnew Vector2( b_x, 1 - b_z ),\\n\\t\\t\\t\\t\\tnew Vector2( c_x, 1 - c_z ),\\n\\t\\t\\t\\t\\tnew Vector2( d_x, 1 - d_z )\\n\\t\\t\\t\\t];\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\treturn [\\n\\t\\t\\t\\t\\tnew Vector2( a_y, 1 - a_z ),\\n\\t\\t\\t\\t\\tnew Vector2( b_y, 1 - b_z ),\\n\\t\\t\\t\\t\\tnew Vector2( c_y, 1 - c_z ),\\n\\t\\t\\t\\t\\tnew Vector2( d_y, 1 - d_z )\\n\\t\\t\\t\\t];\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\t};\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * Text = 3D Text\\n\\t *\\n\\t * parameters = {\\n\\t * font: , // font\\n\\t *\\n\\t * size: , // size of the text\\n\\t * height: , // thickness to extrude text\\n\\t * curveSegments: , // number of points on the curves\\n\\t *\\n\\t * bevelEnabled: , // turn on bevel\\n\\t * bevelThickness: , // how deep into text bevel goes\\n\\t * bevelSize: // how far from text outline is bevel\\n\\t * }\\n\\t */\\n\\n\\t// TextGeometry\\n\\n\\tfunction TextGeometry( text, parameters ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'TextGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\ttext: text,\\n\\t\\t\\tparameters: parameters\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tTextGeometry.prototype = Object.create( Geometry.prototype );\\n\\tTextGeometry.prototype.constructor = TextGeometry;\\n\\n\\t// TextBufferGeometry\\n\\n\\tfunction TextBufferGeometry( text, parameters ) {\\n\\n\\t\\tparameters = parameters || {};\\n\\n\\t\\tvar font = parameters.font;\\n\\n\\t\\tif ( ! ( font && font.isFont ) ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\\n\\t\\t\\treturn new Geometry();\\n\\n\\t\\t}\\n\\n\\t\\tvar shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );\\n\\n\\t\\t// translate parameters to ExtrudeGeometry API\\n\\n\\t\\tparameters.amount = parameters.height !== undefined ? parameters.height : 50;\\n\\n\\t\\t// defaults\\n\\n\\t\\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\\n\\t\\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\\n\\t\\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\\n\\n\\t\\tExtrudeBufferGeometry.call( this, shapes, parameters );\\n\\n\\t\\tthis.type = 'TextBufferGeometry';\\n\\n\\t}\\n\\n\\tTextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype );\\n\\tTextBufferGeometry.prototype.constructor = TextBufferGeometry;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author benaadams / https://twitter.com/ben_a_adams\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// SphereGeometry\\n\\n\\tfunction SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'SphereGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\twidthSegments: widthSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\tphiStart: phiStart,\\n\\t\\t\\tphiLength: phiLength,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tSphereGeometry.prototype = Object.create( Geometry.prototype );\\n\\tSphereGeometry.prototype.constructor = SphereGeometry;\\n\\n\\t// SphereBufferGeometry\\n\\n\\tfunction SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'SphereBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\twidthSegments: widthSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\tphiStart: phiStart,\\n\\t\\t\\tphiLength: phiLength,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tradius = radius || 1;\\n\\n\\t\\twidthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 );\\n\\t\\theightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 );\\n\\n\\t\\tphiStart = phiStart !== undefined ? phiStart : 0;\\n\\t\\tphiLength = phiLength !== undefined ? phiLength : Math.PI * 2;\\n\\n\\t\\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\\n\\t\\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI;\\n\\n\\t\\tvar thetaEnd = thetaStart + thetaLength;\\n\\n\\t\\tvar ix, iy;\\n\\n\\t\\tvar index = 0;\\n\\t\\tvar grid = [];\\n\\n\\t\\tvar vertex = new Vector3();\\n\\t\\tvar normal = new Vector3();\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\tfor ( iy = 0; iy <= heightSegments; iy ++ ) {\\n\\n\\t\\t\\tvar verticesRow = [];\\n\\n\\t\\t\\tvar v = iy / heightSegments;\\n\\n\\t\\t\\tfor ( ix = 0; ix <= widthSegments; ix ++ ) {\\n\\n\\t\\t\\t\\tvar u = ix / widthSegments;\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\\n\\t\\t\\t\\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\\n\\t\\t\\t\\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\\n\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\tnormal.set( vertex.x, vertex.y, vertex.z ).normalize();\\n\\t\\t\\t\\tnormals.push( normal.x, normal.y, normal.z );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuvs.push( u, 1 - v );\\n\\n\\t\\t\\t\\tverticesRow.push( index ++ );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tgrid.push( verticesRow );\\n\\n\\t\\t}\\n\\n\\t\\t// indices\\n\\n\\t\\tfor ( iy = 0; iy < heightSegments; iy ++ ) {\\n\\n\\t\\t\\tfor ( ix = 0; ix < widthSegments; ix ++ ) {\\n\\n\\t\\t\\t\\tvar a = grid[ iy ][ ix + 1 ];\\n\\t\\t\\t\\tvar b = grid[ iy ][ ix ];\\n\\t\\t\\t\\tvar c = grid[ iy + 1 ][ ix ];\\n\\t\\t\\t\\tvar d = grid[ iy + 1 ][ ix + 1 ];\\n\\n\\t\\t\\t\\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\\n\\t\\t\\t\\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t}\\n\\n\\tSphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tSphereBufferGeometry.prototype.constructor = SphereBufferGeometry;\\n\\n\\t/**\\n\\t * @author Kaleb Murphy\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// RingGeometry\\n\\n\\tfunction RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'RingGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tinnerRadius: innerRadius,\\n\\t\\t\\touterRadius: outerRadius,\\n\\t\\t\\tthetaSegments: thetaSegments,\\n\\t\\t\\tphiSegments: phiSegments,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tRingGeometry.prototype = Object.create( Geometry.prototype );\\n\\tRingGeometry.prototype.constructor = RingGeometry;\\n\\n\\t// RingBufferGeometry\\n\\n\\tfunction RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'RingBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tinnerRadius: innerRadius,\\n\\t\\t\\touterRadius: outerRadius,\\n\\t\\t\\tthetaSegments: thetaSegments,\\n\\t\\t\\tphiSegments: phiSegments,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tinnerRadius = innerRadius || 0.5;\\n\\t\\touterRadius = outerRadius || 1;\\n\\n\\t\\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\\n\\t\\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\\n\\n\\t\\tthetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;\\n\\t\\tphiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// some helper variables\\n\\n\\t\\tvar segment;\\n\\t\\tvar radius = innerRadius;\\n\\t\\tvar radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\\n\\t\\tvar vertex = new Vector3();\\n\\t\\tvar uv = new Vector2();\\n\\t\\tvar j, i;\\n\\n\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\tfor ( j = 0; j <= phiSegments; j ++ ) {\\n\\n\\t\\t\\tfor ( i = 0; i <= thetaSegments; i ++ ) {\\n\\n\\t\\t\\t\\t// values are generate from the inside of the ring to the outside\\n\\n\\t\\t\\t\\tsegment = thetaStart + i / thetaSegments * thetaLength;\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tvertex.x = radius * Math.cos( segment );\\n\\t\\t\\t\\tvertex.y = radius * Math.sin( segment );\\n\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\tnormals.push( 0, 0, 1 );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\\n\\t\\t\\t\\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\\n\\n\\t\\t\\t\\tuvs.push( uv.x, uv.y );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// increase the radius for next row of vertices\\n\\n\\t\\t\\tradius += radiusStep;\\n\\n\\t\\t}\\n\\n\\t\\t// indices\\n\\n\\t\\tfor ( j = 0; j < phiSegments; j ++ ) {\\n\\n\\t\\t\\tvar thetaSegmentLevel = j * ( thetaSegments + 1 );\\n\\n\\t\\t\\tfor ( i = 0; i < thetaSegments; i ++ ) {\\n\\n\\t\\t\\t\\tsegment = i + thetaSegmentLevel;\\n\\n\\t\\t\\t\\tvar a = segment;\\n\\t\\t\\t\\tvar b = segment + thetaSegments + 1;\\n\\t\\t\\t\\tvar c = segment + thetaSegments + 2;\\n\\t\\t\\t\\tvar d = segment + 1;\\n\\n\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t}\\n\\n\\tRingBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tRingBufferGeometry.prototype.constructor = RingBufferGeometry;\\n\\n\\t/**\\n\\t * @author astrodud / http://astrodud.isgreat.org/\\n\\t * @author zz85 / https://github.com/zz85\\n\\t * @author bhouston / http://clara.io\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// LatheGeometry\\n\\n\\tfunction LatheGeometry( points, segments, phiStart, phiLength ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'LatheGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tpoints: points,\\n\\t\\t\\tsegments: segments,\\n\\t\\t\\tphiStart: phiStart,\\n\\t\\t\\tphiLength: phiLength\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tLatheGeometry.prototype = Object.create( Geometry.prototype );\\n\\tLatheGeometry.prototype.constructor = LatheGeometry;\\n\\n\\t// LatheBufferGeometry\\n\\n\\tfunction LatheBufferGeometry( points, segments, phiStart, phiLength ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'LatheBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tpoints: points,\\n\\t\\t\\tsegments: segments,\\n\\t\\t\\tphiStart: phiStart,\\n\\t\\t\\tphiLength: phiLength\\n\\t\\t};\\n\\n\\t\\tsegments = Math.floor( segments ) || 12;\\n\\t\\tphiStart = phiStart || 0;\\n\\t\\tphiLength = phiLength || Math.PI * 2;\\n\\n\\t\\t// clamp phiLength so it's in range of [ 0, 2PI ]\\n\\n\\t\\tphiLength = _Math.clamp( phiLength, 0, Math.PI * 2 );\\n\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar base;\\n\\t\\tvar inverseSegments = 1.0 / segments;\\n\\t\\tvar vertex = new Vector3();\\n\\t\\tvar uv = new Vector2();\\n\\t\\tvar i, j;\\n\\n\\t\\t// generate vertices and uvs\\n\\n\\t\\tfor ( i = 0; i <= segments; i ++ ) {\\n\\n\\t\\t\\tvar phi = phiStart + i * inverseSegments * phiLength;\\n\\n\\t\\t\\tvar sin = Math.sin( phi );\\n\\t\\t\\tvar cos = Math.cos( phi );\\n\\n\\t\\t\\tfor ( j = 0; j <= ( points.length - 1 ); j ++ ) {\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tvertex.x = points[ j ].x * sin;\\n\\t\\t\\t\\tvertex.y = points[ j ].y;\\n\\t\\t\\t\\tvertex.z = points[ j ].x * cos;\\n\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuv.x = i / segments;\\n\\t\\t\\t\\tuv.y = j / ( points.length - 1 );\\n\\n\\t\\t\\t\\tuvs.push( uv.x, uv.y );\\n\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// indices\\n\\n\\t\\tfor ( i = 0; i < segments; i ++ ) {\\n\\n\\t\\t\\tfor ( j = 0; j < ( points.length - 1 ); j ++ ) {\\n\\n\\t\\t\\t\\tbase = j + i * points.length;\\n\\n\\t\\t\\t\\tvar a = base;\\n\\t\\t\\t\\tvar b = base + points.length;\\n\\t\\t\\t\\tvar c = base + points.length + 1;\\n\\t\\t\\t\\tvar d = base + 1;\\n\\n\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t\\t// generate normals\\n\\n\\t\\tthis.computeVertexNormals();\\n\\n\\t\\t// if the geometry is closed, we need to average the normals along the seam.\\n\\t\\t// because the corresponding vertices are identical (but still have different UVs).\\n\\n\\t\\tif ( phiLength === Math.PI * 2 ) {\\n\\n\\t\\t\\tvar normals = this.attributes.normal.array;\\n\\t\\t\\tvar n1 = new Vector3();\\n\\t\\t\\tvar n2 = new Vector3();\\n\\t\\t\\tvar n = new Vector3();\\n\\n\\t\\t\\t// this is the buffer offset for the last line of vertices\\n\\n\\t\\t\\tbase = segments * points.length * 3;\\n\\n\\t\\t\\tfor ( i = 0, j = 0; i < points.length; i ++, j += 3 ) {\\n\\n\\t\\t\\t\\t// select the normal of the vertex in the first line\\n\\n\\t\\t\\t\\tn1.x = normals[ j + 0 ];\\n\\t\\t\\t\\tn1.y = normals[ j + 1 ];\\n\\t\\t\\t\\tn1.z = normals[ j + 2 ];\\n\\n\\t\\t\\t\\t// select the normal of the vertex in the last line\\n\\n\\t\\t\\t\\tn2.x = normals[ base + j + 0 ];\\n\\t\\t\\t\\tn2.y = normals[ base + j + 1 ];\\n\\t\\t\\t\\tn2.z = normals[ base + j + 2 ];\\n\\n\\t\\t\\t\\t// average normals\\n\\n\\t\\t\\t\\tn.addVectors( n1, n2 ).normalize();\\n\\n\\t\\t\\t\\t// assign the new values to both normals\\n\\n\\t\\t\\t\\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\\n\\t\\t\\t\\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\\n\\t\\t\\t\\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tLatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tLatheBufferGeometry.prototype.constructor = LatheBufferGeometry;\\n\\n\\t/**\\n\\t * @author jonobr1 / http://jonobr1.com\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// ShapeGeometry\\n\\n\\tfunction ShapeGeometry( shapes, curveSegments ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'ShapeGeometry';\\n\\n\\t\\tif ( typeof curveSegments === 'object' ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\\n\\n\\t\\t\\tcurveSegments = curveSegments.curveSegments;\\n\\n\\t\\t}\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tshapes: shapes,\\n\\t\\t\\tcurveSegments: curveSegments\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tShapeGeometry.prototype = Object.create( Geometry.prototype );\\n\\tShapeGeometry.prototype.constructor = ShapeGeometry;\\n\\n\\tShapeGeometry.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Geometry.prototype.toJSON.call( this );\\n\\n\\t\\tvar shapes = this.parameters.shapes;\\n\\n\\t\\treturn toJSON( shapes, data );\\n\\n\\t};\\n\\n\\t// ShapeBufferGeometry\\n\\n\\tfunction ShapeBufferGeometry( shapes, curveSegments ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'ShapeBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tshapes: shapes,\\n\\t\\t\\tcurveSegments: curveSegments\\n\\t\\t};\\n\\n\\t\\tcurveSegments = curveSegments || 12;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar groupStart = 0;\\n\\t\\tvar groupCount = 0;\\n\\n\\t\\t// allow single and array values for \\\"shapes\\\" parameter\\n\\n\\t\\tif ( Array.isArray( shapes ) === false ) {\\n\\n\\t\\t\\taddShape( shapes );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tfor ( var i = 0; i < shapes.length; i ++ ) {\\n\\n\\t\\t\\t\\taddShape( shapes[ i ] );\\n\\n\\t\\t\\t\\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\\n\\n\\t\\t\\t\\tgroupStart += groupCount;\\n\\t\\t\\t\\tgroupCount = 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\n\\t\\t// helper functions\\n\\n\\t\\tfunction addShape( shape ) {\\n\\n\\t\\t\\tvar i, l, shapeHole;\\n\\n\\t\\t\\tvar indexOffset = vertices.length / 3;\\n\\t\\t\\tvar points = shape.extractPoints( curveSegments );\\n\\n\\t\\t\\tvar shapeVertices = points.shape;\\n\\t\\t\\tvar shapeHoles = points.holes;\\n\\n\\t\\t\\t// check direction of vertices\\n\\n\\t\\t\\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\\n\\n\\t\\t\\t\\tshapeVertices = shapeVertices.reverse();\\n\\n\\t\\t\\t\\t// also check if holes are in the opposite direction\\n\\n\\t\\t\\t\\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tshapeHole = shapeHoles[ i ];\\n\\n\\t\\t\\t\\t\\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\\n\\n\\t\\t\\t\\t\\t\\tshapeHoles[ i ] = shapeHole.reverse();\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\\n\\n\\t\\t\\t// join vertices of inner and outer paths to a single array\\n\\n\\t\\t\\tfor ( i = 0, l = shapeHoles.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tshapeHole = shapeHoles[ i ];\\n\\t\\t\\t\\tshapeVertices = shapeVertices.concat( shapeHole );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// vertices, normals, uvs\\n\\n\\t\\t\\tfor ( i = 0, l = shapeVertices.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar vertex = shapeVertices[ i ];\\n\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, 0 );\\n\\t\\t\\t\\tnormals.push( 0, 0, 1 );\\n\\t\\t\\t\\tuvs.push( vertex.x, vertex.y ); // world uvs\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// incides\\n\\n\\t\\t\\tfor ( i = 0, l = faces.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = faces[ i ];\\n\\n\\t\\t\\t\\tvar a = face[ 0 ] + indexOffset;\\n\\t\\t\\t\\tvar b = face[ 1 ] + indexOffset;\\n\\t\\t\\t\\tvar c = face[ 2 ] + indexOffset;\\n\\n\\t\\t\\t\\tindices.push( a, b, c );\\n\\t\\t\\t\\tgroupCount += 3;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry;\\n\\n\\tShapeBufferGeometry.prototype.toJSON = function () {\\n\\n\\t\\tvar data = BufferGeometry.prototype.toJSON.call( this );\\n\\n\\t\\tvar shapes = this.parameters.shapes;\\n\\n\\t\\treturn toJSON( shapes, data );\\n\\n\\t};\\n\\n\\t//\\n\\n\\tfunction toJSON( shapes, data ) {\\n\\n\\t\\tdata.shapes = [];\\n\\n\\t\\tif ( Array.isArray( shapes ) ) {\\n\\n\\t\\t\\tfor ( var i = 0, l = shapes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar shape = shapes[ i ];\\n\\n\\t\\t\\t\\tdata.shapes.push( shape.uuid );\\n\\n\\t\\t\\t}\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tdata.shapes.push( shapes.uuid );\\n\\n\\t\\t}\\n\\n\\t\\treturn data;\\n\\n\\t}\\n\\n\\t/**\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\tfunction EdgesGeometry( geometry, thresholdAngle ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'EdgesGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tthresholdAngle: thresholdAngle\\n\\t\\t};\\n\\n\\t\\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\\n\\n\\t\\t// buffer\\n\\n\\t\\tvar vertices = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle );\\n\\t\\tvar edge = [ 0, 0 ], edges = {}, edge1, edge2;\\n\\t\\tvar key, keys = [ 'a', 'b', 'c' ];\\n\\n\\t\\t// prepare source geometry\\n\\n\\t\\tvar geometry2;\\n\\n\\t\\tif ( geometry.isBufferGeometry ) {\\n\\n\\t\\t\\tgeometry2 = new Geometry();\\n\\t\\t\\tgeometry2.fromBufferGeometry( geometry );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tgeometry2 = geometry.clone();\\n\\n\\t\\t}\\n\\n\\t\\tgeometry2.mergeVertices();\\n\\t\\tgeometry2.computeFaceNormals();\\n\\n\\t\\tvar sourceVertices = geometry2.vertices;\\n\\t\\tvar faces = geometry2.faces;\\n\\n\\t\\t// now create a data structure where each entry represents an edge with its adjoining faces\\n\\n\\t\\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\\n\\n\\t\\t\\tvar face = faces[ i ];\\n\\n\\t\\t\\tfor ( var j = 0; j < 3; j ++ ) {\\n\\n\\t\\t\\t\\tedge1 = face[ keys[ j ] ];\\n\\t\\t\\t\\tedge2 = face[ keys[ ( j + 1 ) % 3 ] ];\\n\\t\\t\\t\\tedge[ 0 ] = Math.min( edge1, edge2 );\\n\\t\\t\\t\\tedge[ 1 ] = Math.max( edge1, edge2 );\\n\\n\\t\\t\\t\\tkey = edge[ 0 ] + ',' + edge[ 1 ];\\n\\n\\t\\t\\t\\tif ( edges[ key ] === undefined ) {\\n\\n\\t\\t\\t\\t\\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined };\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tedges[ key ].face2 = i;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// generate vertices\\n\\n\\t\\tfor ( key in edges ) {\\n\\n\\t\\t\\tvar e = edges[ key ];\\n\\n\\t\\t\\t// an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\\n\\n\\t\\t\\tif ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) {\\n\\n\\t\\t\\t\\tvar vertex = sourceVertices[ e.index1 ];\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\tvertex = sourceVertices[ e.index2 ];\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\n\\t}\\n\\n\\tEdgesGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tEdgesGeometry.prototype.constructor = EdgesGeometry;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\t// CylinderGeometry\\n\\n\\tfunction CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'CylinderGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradiusTop: radiusTop,\\n\\t\\t\\tradiusBottom: radiusBottom,\\n\\t\\t\\theight: height,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\topenEnded: openEnded,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tCylinderGeometry.prototype = Object.create( Geometry.prototype );\\n\\tCylinderGeometry.prototype.constructor = CylinderGeometry;\\n\\n\\t// CylinderBufferGeometry\\n\\n\\tfunction CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'CylinderBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradiusTop: radiusTop,\\n\\t\\t\\tradiusBottom: radiusBottom,\\n\\t\\t\\theight: height,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\topenEnded: openEnded,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tvar scope = this;\\n\\n\\t\\tradiusTop = radiusTop !== undefined ? radiusTop : 1;\\n\\t\\tradiusBottom = radiusBottom !== undefined ? radiusBottom : 1;\\n\\t\\theight = height || 1;\\n\\n\\t\\tradialSegments = Math.floor( radialSegments ) || 8;\\n\\t\\theightSegments = Math.floor( heightSegments ) || 1;\\n\\n\\t\\topenEnded = openEnded !== undefined ? openEnded : false;\\n\\t\\tthetaStart = thetaStart !== undefined ? thetaStart : 0.0;\\n\\t\\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar index = 0;\\n\\t\\tvar indexArray = [];\\n\\t\\tvar halfHeight = height / 2;\\n\\t\\tvar groupStart = 0;\\n\\n\\t\\t// generate geometry\\n\\n\\t\\tgenerateTorso();\\n\\n\\t\\tif ( openEnded === false ) {\\n\\n\\t\\t\\tif ( radiusTop > 0 ) generateCap( true );\\n\\t\\t\\tif ( radiusBottom > 0 ) generateCap( false );\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t\\tfunction generateTorso() {\\n\\n\\t\\t\\tvar x, y;\\n\\t\\t\\tvar normal = new Vector3();\\n\\t\\t\\tvar vertex = new Vector3();\\n\\n\\t\\t\\tvar groupCount = 0;\\n\\n\\t\\t\\t// this will be used to calculate the normal\\n\\t\\t\\tvar slope = ( radiusBottom - radiusTop ) / height;\\n\\n\\t\\t\\t// generate vertices, normals and uvs\\n\\n\\t\\t\\tfor ( y = 0; y <= heightSegments; y ++ ) {\\n\\n\\t\\t\\t\\tvar indexRow = [];\\n\\n\\t\\t\\t\\tvar v = y / heightSegments;\\n\\n\\t\\t\\t\\t// calculate the radius of the current row\\n\\n\\t\\t\\t\\tvar radius = v * ( radiusBottom - radiusTop ) + radiusTop;\\n\\n\\t\\t\\t\\tfor ( x = 0; x <= radialSegments; x ++ ) {\\n\\n\\t\\t\\t\\t\\tvar u = x / radialSegments;\\n\\n\\t\\t\\t\\t\\tvar theta = u * thetaLength + thetaStart;\\n\\n\\t\\t\\t\\t\\tvar sinTheta = Math.sin( theta );\\n\\t\\t\\t\\t\\tvar cosTheta = Math.cos( theta );\\n\\n\\t\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\t\\tvertex.x = radius * sinTheta;\\n\\t\\t\\t\\t\\tvertex.y = - v * height + halfHeight;\\n\\t\\t\\t\\t\\tvertex.z = radius * cosTheta;\\n\\t\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\t\\tnormal.set( sinTheta, slope, cosTheta ).normalize();\\n\\t\\t\\t\\t\\tnormals.push( normal.x, normal.y, normal.z );\\n\\n\\t\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\t\\tuvs.push( u, 1 - v );\\n\\n\\t\\t\\t\\t\\t// save index of vertex in respective row\\n\\n\\t\\t\\t\\t\\tindexRow.push( index ++ );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// now save vertices of the row in our index array\\n\\n\\t\\t\\t\\tindexArray.push( indexRow );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// generate indices\\n\\n\\t\\t\\tfor ( x = 0; x < radialSegments; x ++ ) {\\n\\n\\t\\t\\t\\tfor ( y = 0; y < heightSegments; y ++ ) {\\n\\n\\t\\t\\t\\t\\t// we use the index array to access the correct indices\\n\\n\\t\\t\\t\\t\\tvar a = indexArray[ y ][ x ];\\n\\t\\t\\t\\t\\tvar b = indexArray[ y + 1 ][ x ];\\n\\t\\t\\t\\t\\tvar c = indexArray[ y + 1 ][ x + 1 ];\\n\\t\\t\\t\\t\\tvar d = indexArray[ y ][ x + 1 ];\\n\\n\\t\\t\\t\\t\\t// faces\\n\\n\\t\\t\\t\\t\\tindices.push( a, b, d );\\n\\t\\t\\t\\t\\tindices.push( b, c, d );\\n\\n\\t\\t\\t\\t\\t// update group counter\\n\\n\\t\\t\\t\\t\\tgroupCount += 6;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// add a group to the geometry. this will ensure multi material support\\n\\n\\t\\t\\tscope.addGroup( groupStart, groupCount, 0 );\\n\\n\\t\\t\\t// calculate new start value for groups\\n\\n\\t\\t\\tgroupStart += groupCount;\\n\\n\\t\\t}\\n\\n\\t\\tfunction generateCap( top ) {\\n\\n\\t\\t\\tvar x, centerIndexStart, centerIndexEnd;\\n\\n\\t\\t\\tvar uv = new Vector2();\\n\\t\\t\\tvar vertex = new Vector3();\\n\\n\\t\\t\\tvar groupCount = 0;\\n\\n\\t\\t\\tvar radius = ( top === true ) ? radiusTop : radiusBottom;\\n\\t\\t\\tvar sign = ( top === true ) ? 1 : - 1;\\n\\n\\t\\t\\t// save the index of the first center vertex\\n\\t\\t\\tcenterIndexStart = index;\\n\\n\\t\\t\\t// first we generate the center vertex data of the cap.\\n\\t\\t\\t// because the geometry needs one set of uvs per face,\\n\\t\\t\\t// we must generate a center vertex per face/segment\\n\\n\\t\\t\\tfor ( x = 1; x <= radialSegments; x ++ ) {\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tvertices.push( 0, halfHeight * sign, 0 );\\n\\n\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\tnormals.push( 0, sign, 0 );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuvs.push( 0.5, 0.5 );\\n\\n\\t\\t\\t\\t// increase index\\n\\n\\t\\t\\t\\tindex ++;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// save the index of the last center vertex\\n\\n\\t\\t\\tcenterIndexEnd = index;\\n\\n\\t\\t\\t// now we generate the surrounding vertices, normals and uvs\\n\\n\\t\\t\\tfor ( x = 0; x <= radialSegments; x ++ ) {\\n\\n\\t\\t\\t\\tvar u = x / radialSegments;\\n\\t\\t\\t\\tvar theta = u * thetaLength + thetaStart;\\n\\n\\t\\t\\t\\tvar cosTheta = Math.cos( theta );\\n\\t\\t\\t\\tvar sinTheta = Math.sin( theta );\\n\\n\\t\\t\\t\\t// vertex\\n\\n\\t\\t\\t\\tvertex.x = radius * sinTheta;\\n\\t\\t\\t\\tvertex.y = halfHeight * sign;\\n\\t\\t\\t\\tvertex.z = radius * cosTheta;\\n\\t\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t\\t// normal\\n\\n\\t\\t\\t\\tnormals.push( 0, sign, 0 );\\n\\n\\t\\t\\t\\t// uv\\n\\n\\t\\t\\t\\tuv.x = ( cosTheta * 0.5 ) + 0.5;\\n\\t\\t\\t\\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\\n\\t\\t\\t\\tuvs.push( uv.x, uv.y );\\n\\n\\t\\t\\t\\t// increase index\\n\\n\\t\\t\\t\\tindex ++;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// generate indices\\n\\n\\t\\t\\tfor ( x = 0; x < radialSegments; x ++ ) {\\n\\n\\t\\t\\t\\tvar c = centerIndexStart + x;\\n\\t\\t\\t\\tvar i = centerIndexEnd + x;\\n\\n\\t\\t\\t\\tif ( top === true ) {\\n\\n\\t\\t\\t\\t\\t// face top\\n\\n\\t\\t\\t\\t\\tindices.push( i, i + 1, c );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// face bottom\\n\\n\\t\\t\\t\\t\\tindices.push( i + 1, i, c );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgroupCount += 3;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// add a group to the geometry. this will ensure multi material support\\n\\n\\t\\t\\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\\n\\n\\t\\t\\t// calculate new start value for groups\\n\\n\\t\\t\\tgroupStart += groupCount;\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tCylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tCylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;\\n\\n\\t/**\\n\\t * @author abelnation / http://github.com/abelnation\\n\\t */\\n\\n\\t// ConeGeometry\\n\\n\\tfunction ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\\n\\n\\t\\tCylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\\n\\n\\t\\tthis.type = 'ConeGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\theight: height,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\topenEnded: openEnded,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t}\\n\\n\\tConeGeometry.prototype = Object.create( CylinderGeometry.prototype );\\n\\tConeGeometry.prototype.constructor = ConeGeometry;\\n\\n\\t// ConeBufferGeometry\\n\\n\\tfunction ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\\n\\n\\t\\tCylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\\n\\n\\t\\tthis.type = 'ConeBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\theight: height,\\n\\t\\t\\tradialSegments: radialSegments,\\n\\t\\t\\theightSegments: heightSegments,\\n\\t\\t\\topenEnded: openEnded,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t}\\n\\n\\tConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype );\\n\\tConeBufferGeometry.prototype.constructor = ConeBufferGeometry;\\n\\n\\t/**\\n\\t * @author benaadams / https://twitter.com/ben_a_adams\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t * @author hughes\\n\\t */\\n\\n\\t// CircleGeometry\\n\\n\\tfunction CircleGeometry( radius, segments, thetaStart, thetaLength ) {\\n\\n\\t\\tGeometry.call( this );\\n\\n\\t\\tthis.type = 'CircleGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tsegments: segments,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\\n\\t\\tthis.mergeVertices();\\n\\n\\t}\\n\\n\\tCircleGeometry.prototype = Object.create( Geometry.prototype );\\n\\tCircleGeometry.prototype.constructor = CircleGeometry;\\n\\n\\t// CircleBufferGeometry\\n\\n\\tfunction CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'CircleBufferGeometry';\\n\\n\\t\\tthis.parameters = {\\n\\t\\t\\tradius: radius,\\n\\t\\t\\tsegments: segments,\\n\\t\\t\\tthetaStart: thetaStart,\\n\\t\\t\\tthetaLength: thetaLength\\n\\t\\t};\\n\\n\\t\\tradius = radius || 1;\\n\\t\\tsegments = segments !== undefined ? Math.max( 3, segments ) : 8;\\n\\n\\t\\tthetaStart = thetaStart !== undefined ? thetaStart : 0;\\n\\t\\tthetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;\\n\\n\\t\\t// buffers\\n\\n\\t\\tvar indices = [];\\n\\t\\tvar vertices = [];\\n\\t\\tvar normals = [];\\n\\t\\tvar uvs = [];\\n\\n\\t\\t// helper variables\\n\\n\\t\\tvar i, s;\\n\\t\\tvar vertex = new Vector3();\\n\\t\\tvar uv = new Vector2();\\n\\n\\t\\t// center point\\n\\n\\t\\tvertices.push( 0, 0, 0 );\\n\\t\\tnormals.push( 0, 0, 1 );\\n\\t\\tuvs.push( 0.5, 0.5 );\\n\\n\\t\\tfor ( s = 0, i = 3; s <= segments; s ++, i += 3 ) {\\n\\n\\t\\t\\tvar segment = thetaStart + s / segments * thetaLength;\\n\\n\\t\\t\\t// vertex\\n\\n\\t\\t\\tvertex.x = radius * Math.cos( segment );\\n\\t\\t\\tvertex.y = radius * Math.sin( segment );\\n\\n\\t\\t\\tvertices.push( vertex.x, vertex.y, vertex.z );\\n\\n\\t\\t\\t// normal\\n\\n\\t\\t\\tnormals.push( 0, 0, 1 );\\n\\n\\t\\t\\t// uvs\\n\\n\\t\\t\\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\\n\\t\\t\\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\\n\\n\\t\\t\\tuvs.push( uv.x, uv.y );\\n\\n\\t\\t}\\n\\n\\t\\t// indices\\n\\n\\t\\tfor ( i = 1; i <= segments; i ++ ) {\\n\\n\\t\\t\\tindices.push( i, i + 1, 0 );\\n\\n\\t\\t}\\n\\n\\t\\t// build geometry\\n\\n\\t\\tthis.setIndex( indices );\\n\\t\\tthis.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tthis.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\\n\\t\\tthis.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\\n\\n\\t}\\n\\n\\tCircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\\n\\tCircleBufferGeometry.prototype.constructor = CircleBufferGeometry;\\n\\n\\n\\n\\tvar Geometries = Object.freeze({\\n\\t\\tWireframeGeometry: WireframeGeometry,\\n\\t\\tParametricGeometry: ParametricGeometry,\\n\\t\\tParametricBufferGeometry: ParametricBufferGeometry,\\n\\t\\tTetrahedronGeometry: TetrahedronGeometry,\\n\\t\\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\\n\\t\\tOctahedronGeometry: OctahedronGeometry,\\n\\t\\tOctahedronBufferGeometry: OctahedronBufferGeometry,\\n\\t\\tIcosahedronGeometry: IcosahedronGeometry,\\n\\t\\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\\n\\t\\tDodecahedronGeometry: DodecahedronGeometry,\\n\\t\\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\\n\\t\\tPolyhedronGeometry: PolyhedronGeometry,\\n\\t\\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\\n\\t\\tTubeGeometry: TubeGeometry,\\n\\t\\tTubeBufferGeometry: TubeBufferGeometry,\\n\\t\\tTorusKnotGeometry: TorusKnotGeometry,\\n\\t\\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\\n\\t\\tTorusGeometry: TorusGeometry,\\n\\t\\tTorusBufferGeometry: TorusBufferGeometry,\\n\\t\\tTextGeometry: TextGeometry,\\n\\t\\tTextBufferGeometry: TextBufferGeometry,\\n\\t\\tSphereGeometry: SphereGeometry,\\n\\t\\tSphereBufferGeometry: SphereBufferGeometry,\\n\\t\\tRingGeometry: RingGeometry,\\n\\t\\tRingBufferGeometry: RingBufferGeometry,\\n\\t\\tPlaneGeometry: PlaneGeometry,\\n\\t\\tPlaneBufferGeometry: PlaneBufferGeometry,\\n\\t\\tLatheGeometry: LatheGeometry,\\n\\t\\tLatheBufferGeometry: LatheBufferGeometry,\\n\\t\\tShapeGeometry: ShapeGeometry,\\n\\t\\tShapeBufferGeometry: ShapeBufferGeometry,\\n\\t\\tExtrudeGeometry: ExtrudeGeometry,\\n\\t\\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\\n\\t\\tEdgesGeometry: EdgesGeometry,\\n\\t\\tConeGeometry: ConeGeometry,\\n\\t\\tConeBufferGeometry: ConeBufferGeometry,\\n\\t\\tCylinderGeometry: CylinderGeometry,\\n\\t\\tCylinderBufferGeometry: CylinderBufferGeometry,\\n\\t\\tCircleGeometry: CircleGeometry,\\n\\t\\tCircleBufferGeometry: CircleBufferGeometry,\\n\\t\\tBoxGeometry: BoxGeometry,\\n\\t\\tBoxBufferGeometry: BoxBufferGeometry\\n\\t});\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * opacity: \\n\\t * }\\n\\t */\\n\\n\\tfunction ShadowMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'ShadowMaterial';\\n\\n\\t\\tthis.color = new Color( 0x000000 );\\n\\t\\tthis.opacity = 1.0;\\n\\n\\t\\tthis.lights = true;\\n\\t\\tthis.transparent = true;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tShadowMaterial.prototype = Object.create( Material.prototype );\\n\\tShadowMaterial.prototype.constructor = ShadowMaterial;\\n\\n\\tShadowMaterial.prototype.isShadowMaterial = true;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction RawShaderMaterial( parameters ) {\\n\\n\\t\\tShaderMaterial.call( this, parameters );\\n\\n\\t\\tthis.type = 'RawShaderMaterial';\\n\\n\\t}\\n\\n\\tRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\\n\\tRawShaderMaterial.prototype.constructor = RawShaderMaterial;\\n\\n\\tRawShaderMaterial.prototype.isRawShaderMaterial = true;\\n\\n\\t/**\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * roughness: ,\\n\\t * metalness: ,\\n\\t * opacity: ,\\n\\t *\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t * lightMap: new THREE.Texture( ),\\n\\t * lightMapIntensity: \\n\\t *\\n\\t * aoMap: new THREE.Texture( ),\\n\\t * aoMapIntensity: \\n\\t *\\n\\t * emissive: ,\\n\\t * emissiveIntensity: \\n\\t * emissiveMap: new THREE.Texture( ),\\n\\t *\\n\\t * bumpMap: new THREE.Texture( ),\\n\\t * bumpScale: ,\\n\\t *\\n\\t * normalMap: new THREE.Texture( ),\\n\\t * normalScale: ,\\n\\t *\\n\\t * displacementMap: new THREE.Texture( ),\\n\\t * displacementScale: ,\\n\\t * displacementBias: ,\\n\\t *\\n\\t * roughnessMap: new THREE.Texture( ),\\n\\t *\\n\\t * metalnessMap: new THREE.Texture( ),\\n\\t *\\n\\t * alphaMap: new THREE.Texture( ),\\n\\t *\\n\\t * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\\n\\t * envMapIntensity: \\n\\t *\\n\\t * refractionRatio: ,\\n\\t *\\n\\t * wireframe: ,\\n\\t * wireframeLinewidth: ,\\n\\t *\\n\\t * skinning: ,\\n\\t * morphTargets: ,\\n\\t * morphNormals: \\n\\t * }\\n\\t */\\n\\n\\tfunction MeshStandardMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.defines = { 'STANDARD': '' };\\n\\n\\t\\tthis.type = 'MeshStandardMaterial';\\n\\n\\t\\tthis.color = new Color( 0xffffff ); // diffuse\\n\\t\\tthis.roughness = 0.5;\\n\\t\\tthis.metalness = 0.5;\\n\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.lightMap = null;\\n\\t\\tthis.lightMapIntensity = 1.0;\\n\\n\\t\\tthis.aoMap = null;\\n\\t\\tthis.aoMapIntensity = 1.0;\\n\\n\\t\\tthis.emissive = new Color( 0x000000 );\\n\\t\\tthis.emissiveIntensity = 1.0;\\n\\t\\tthis.emissiveMap = null;\\n\\n\\t\\tthis.bumpMap = null;\\n\\t\\tthis.bumpScale = 1;\\n\\n\\t\\tthis.normalMap = null;\\n\\t\\tthis.normalScale = new Vector2( 1, 1 );\\n\\n\\t\\tthis.displacementMap = null;\\n\\t\\tthis.displacementScale = 1;\\n\\t\\tthis.displacementBias = 0;\\n\\n\\t\\tthis.roughnessMap = null;\\n\\n\\t\\tthis.metalnessMap = null;\\n\\n\\t\\tthis.alphaMap = null;\\n\\n\\t\\tthis.envMap = null;\\n\\t\\tthis.envMapIntensity = 1.0;\\n\\n\\t\\tthis.refractionRatio = 0.98;\\n\\n\\t\\tthis.wireframe = false;\\n\\t\\tthis.wireframeLinewidth = 1;\\n\\t\\tthis.wireframeLinecap = 'round';\\n\\t\\tthis.wireframeLinejoin = 'round';\\n\\n\\t\\tthis.skinning = false;\\n\\t\\tthis.morphTargets = false;\\n\\t\\tthis.morphNormals = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshStandardMaterial.prototype = Object.create( Material.prototype );\\n\\tMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\\n\\n\\tMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\\n\\n\\tMeshStandardMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.defines = { 'STANDARD': '' };\\n\\n\\t\\tthis.color.copy( source.color );\\n\\t\\tthis.roughness = source.roughness;\\n\\t\\tthis.metalness = source.metalness;\\n\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.lightMap = source.lightMap;\\n\\t\\tthis.lightMapIntensity = source.lightMapIntensity;\\n\\n\\t\\tthis.aoMap = source.aoMap;\\n\\t\\tthis.aoMapIntensity = source.aoMapIntensity;\\n\\n\\t\\tthis.emissive.copy( source.emissive );\\n\\t\\tthis.emissiveMap = source.emissiveMap;\\n\\t\\tthis.emissiveIntensity = source.emissiveIntensity;\\n\\n\\t\\tthis.bumpMap = source.bumpMap;\\n\\t\\tthis.bumpScale = source.bumpScale;\\n\\n\\t\\tthis.normalMap = source.normalMap;\\n\\t\\tthis.normalScale.copy( source.normalScale );\\n\\n\\t\\tthis.displacementMap = source.displacementMap;\\n\\t\\tthis.displacementScale = source.displacementScale;\\n\\t\\tthis.displacementBias = source.displacementBias;\\n\\n\\t\\tthis.roughnessMap = source.roughnessMap;\\n\\n\\t\\tthis.metalnessMap = source.metalnessMap;\\n\\n\\t\\tthis.alphaMap = source.alphaMap;\\n\\n\\t\\tthis.envMap = source.envMap;\\n\\t\\tthis.envMapIntensity = source.envMapIntensity;\\n\\n\\t\\tthis.refractionRatio = source.refractionRatio;\\n\\n\\t\\tthis.wireframe = source.wireframe;\\n\\t\\tthis.wireframeLinewidth = source.wireframeLinewidth;\\n\\t\\tthis.wireframeLinecap = source.wireframeLinecap;\\n\\t\\tthis.wireframeLinejoin = source.wireframeLinejoin;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\t\\tthis.morphNormals = source.morphNormals;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t *\\n\\t * parameters = {\\n\\t * reflectivity: \\n\\t * }\\n\\t */\\n\\n\\tfunction MeshPhysicalMaterial( parameters ) {\\n\\n\\t\\tMeshStandardMaterial.call( this );\\n\\n\\t\\tthis.defines = { 'PHYSICAL': '' };\\n\\n\\t\\tthis.type = 'MeshPhysicalMaterial';\\n\\n\\t\\tthis.reflectivity = 0.5; // maps to F0 = 0.04\\n\\n\\t\\tthis.clearCoat = 0.0;\\n\\t\\tthis.clearCoatRoughness = 0.0;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\\n\\tMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\\n\\n\\tMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\\n\\n\\tMeshPhysicalMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMeshStandardMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.defines = { 'PHYSICAL': '' };\\n\\n\\t\\tthis.reflectivity = source.reflectivity;\\n\\n\\t\\tthis.clearCoat = source.clearCoat;\\n\\t\\tthis.clearCoatRoughness = source.clearCoatRoughness;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * specular: ,\\n\\t * shininess: ,\\n\\t * opacity: ,\\n\\t *\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t * lightMap: new THREE.Texture( ),\\n\\t * lightMapIntensity: \\n\\t *\\n\\t * aoMap: new THREE.Texture( ),\\n\\t * aoMapIntensity: \\n\\t *\\n\\t * emissive: ,\\n\\t * emissiveIntensity: \\n\\t * emissiveMap: new THREE.Texture( ),\\n\\t *\\n\\t * bumpMap: new THREE.Texture( ),\\n\\t * bumpScale: ,\\n\\t *\\n\\t * normalMap: new THREE.Texture( ),\\n\\t * normalScale: ,\\n\\t *\\n\\t * displacementMap: new THREE.Texture( ),\\n\\t * displacementScale: ,\\n\\t * displacementBias: ,\\n\\t *\\n\\t * specularMap: new THREE.Texture( ),\\n\\t *\\n\\t * alphaMap: new THREE.Texture( ),\\n\\t *\\n\\t * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\\n\\t * combine: THREE.Multiply,\\n\\t * reflectivity: ,\\n\\t * refractionRatio: ,\\n\\t *\\n\\t * wireframe: ,\\n\\t * wireframeLinewidth: ,\\n\\t *\\n\\t * skinning: ,\\n\\t * morphTargets: ,\\n\\t * morphNormals: \\n\\t * }\\n\\t */\\n\\n\\tfunction MeshPhongMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'MeshPhongMaterial';\\n\\n\\t\\tthis.color = new Color( 0xffffff ); // diffuse\\n\\t\\tthis.specular = new Color( 0x111111 );\\n\\t\\tthis.shininess = 30;\\n\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.lightMap = null;\\n\\t\\tthis.lightMapIntensity = 1.0;\\n\\n\\t\\tthis.aoMap = null;\\n\\t\\tthis.aoMapIntensity = 1.0;\\n\\n\\t\\tthis.emissive = new Color( 0x000000 );\\n\\t\\tthis.emissiveIntensity = 1.0;\\n\\t\\tthis.emissiveMap = null;\\n\\n\\t\\tthis.bumpMap = null;\\n\\t\\tthis.bumpScale = 1;\\n\\n\\t\\tthis.normalMap = null;\\n\\t\\tthis.normalScale = new Vector2( 1, 1 );\\n\\n\\t\\tthis.displacementMap = null;\\n\\t\\tthis.displacementScale = 1;\\n\\t\\tthis.displacementBias = 0;\\n\\n\\t\\tthis.specularMap = null;\\n\\n\\t\\tthis.alphaMap = null;\\n\\n\\t\\tthis.envMap = null;\\n\\t\\tthis.combine = MultiplyOperation;\\n\\t\\tthis.reflectivity = 1;\\n\\t\\tthis.refractionRatio = 0.98;\\n\\n\\t\\tthis.wireframe = false;\\n\\t\\tthis.wireframeLinewidth = 1;\\n\\t\\tthis.wireframeLinecap = 'round';\\n\\t\\tthis.wireframeLinejoin = 'round';\\n\\n\\t\\tthis.skinning = false;\\n\\t\\tthis.morphTargets = false;\\n\\t\\tthis.morphNormals = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshPhongMaterial.prototype = Object.create( Material.prototype );\\n\\tMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\\n\\n\\tMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\\n\\n\\tMeshPhongMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.color.copy( source.color );\\n\\t\\tthis.specular.copy( source.specular );\\n\\t\\tthis.shininess = source.shininess;\\n\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.lightMap = source.lightMap;\\n\\t\\tthis.lightMapIntensity = source.lightMapIntensity;\\n\\n\\t\\tthis.aoMap = source.aoMap;\\n\\t\\tthis.aoMapIntensity = source.aoMapIntensity;\\n\\n\\t\\tthis.emissive.copy( source.emissive );\\n\\t\\tthis.emissiveMap = source.emissiveMap;\\n\\t\\tthis.emissiveIntensity = source.emissiveIntensity;\\n\\n\\t\\tthis.bumpMap = source.bumpMap;\\n\\t\\tthis.bumpScale = source.bumpScale;\\n\\n\\t\\tthis.normalMap = source.normalMap;\\n\\t\\tthis.normalScale.copy( source.normalScale );\\n\\n\\t\\tthis.displacementMap = source.displacementMap;\\n\\t\\tthis.displacementScale = source.displacementScale;\\n\\t\\tthis.displacementBias = source.displacementBias;\\n\\n\\t\\tthis.specularMap = source.specularMap;\\n\\n\\t\\tthis.alphaMap = source.alphaMap;\\n\\n\\t\\tthis.envMap = source.envMap;\\n\\t\\tthis.combine = source.combine;\\n\\t\\tthis.reflectivity = source.reflectivity;\\n\\t\\tthis.refractionRatio = source.refractionRatio;\\n\\n\\t\\tthis.wireframe = source.wireframe;\\n\\t\\tthis.wireframeLinewidth = source.wireframeLinewidth;\\n\\t\\tthis.wireframeLinecap = source.wireframeLinecap;\\n\\t\\tthis.wireframeLinejoin = source.wireframeLinejoin;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\t\\tthis.morphNormals = source.morphNormals;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author takahirox / http://github.com/takahirox\\n\\t *\\n\\t * parameters = {\\n\\t * gradientMap: new THREE.Texture( )\\n\\t * }\\n\\t */\\n\\n\\tfunction MeshToonMaterial( parameters ) {\\n\\n\\t\\tMeshPhongMaterial.call( this );\\n\\n\\t\\tthis.defines = { 'TOON': '' };\\n\\n\\t\\tthis.type = 'MeshToonMaterial';\\n\\n\\t\\tthis.gradientMap = null;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype );\\n\\tMeshToonMaterial.prototype.constructor = MeshToonMaterial;\\n\\n\\tMeshToonMaterial.prototype.isMeshToonMaterial = true;\\n\\n\\tMeshToonMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMeshPhongMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.gradientMap = source.gradientMap;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t *\\n\\t * parameters = {\\n\\t * opacity: ,\\n\\t *\\n\\t * bumpMap: new THREE.Texture( ),\\n\\t * bumpScale: ,\\n\\t *\\n\\t * normalMap: new THREE.Texture( ),\\n\\t * normalScale: ,\\n\\t *\\n\\t * displacementMap: new THREE.Texture( ),\\n\\t * displacementScale: ,\\n\\t * displacementBias: ,\\n\\t *\\n\\t * wireframe: ,\\n\\t * wireframeLinewidth: \\n\\t *\\n\\t * skinning: ,\\n\\t * morphTargets: ,\\n\\t * morphNormals: \\n\\t * }\\n\\t */\\n\\n\\tfunction MeshNormalMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'MeshNormalMaterial';\\n\\n\\t\\tthis.bumpMap = null;\\n\\t\\tthis.bumpScale = 1;\\n\\n\\t\\tthis.normalMap = null;\\n\\t\\tthis.normalScale = new Vector2( 1, 1 );\\n\\n\\t\\tthis.displacementMap = null;\\n\\t\\tthis.displacementScale = 1;\\n\\t\\tthis.displacementBias = 0;\\n\\n\\t\\tthis.wireframe = false;\\n\\t\\tthis.wireframeLinewidth = 1;\\n\\n\\t\\tthis.fog = false;\\n\\t\\tthis.lights = false;\\n\\n\\t\\tthis.skinning = false;\\n\\t\\tthis.morphTargets = false;\\n\\t\\tthis.morphNormals = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshNormalMaterial.prototype = Object.create( Material.prototype );\\n\\tMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\\n\\n\\tMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\\n\\n\\tMeshNormalMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.bumpMap = source.bumpMap;\\n\\t\\tthis.bumpScale = source.bumpScale;\\n\\n\\t\\tthis.normalMap = source.normalMap;\\n\\t\\tthis.normalScale.copy( source.normalScale );\\n\\n\\t\\tthis.displacementMap = source.displacementMap;\\n\\t\\tthis.displacementScale = source.displacementScale;\\n\\t\\tthis.displacementBias = source.displacementBias;\\n\\n\\t\\tthis.wireframe = source.wireframe;\\n\\t\\tthis.wireframeLinewidth = source.wireframeLinewidth;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\t\\tthis.morphNormals = source.morphNormals;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * opacity: ,\\n\\t *\\n\\t * map: new THREE.Texture( ),\\n\\t *\\n\\t * lightMap: new THREE.Texture( ),\\n\\t * lightMapIntensity: \\n\\t *\\n\\t * aoMap: new THREE.Texture( ),\\n\\t * aoMapIntensity: \\n\\t *\\n\\t * emissive: ,\\n\\t * emissiveIntensity: \\n\\t * emissiveMap: new THREE.Texture( ),\\n\\t *\\n\\t * specularMap: new THREE.Texture( ),\\n\\t *\\n\\t * alphaMap: new THREE.Texture( ),\\n\\t *\\n\\t * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),\\n\\t * combine: THREE.Multiply,\\n\\t * reflectivity: ,\\n\\t * refractionRatio: ,\\n\\t *\\n\\t * wireframe: ,\\n\\t * wireframeLinewidth: ,\\n\\t *\\n\\t * skinning: ,\\n\\t * morphTargets: ,\\n\\t * morphNormals: \\n\\t * }\\n\\t */\\n\\n\\tfunction MeshLambertMaterial( parameters ) {\\n\\n\\t\\tMaterial.call( this );\\n\\n\\t\\tthis.type = 'MeshLambertMaterial';\\n\\n\\t\\tthis.color = new Color( 0xffffff ); // diffuse\\n\\n\\t\\tthis.map = null;\\n\\n\\t\\tthis.lightMap = null;\\n\\t\\tthis.lightMapIntensity = 1.0;\\n\\n\\t\\tthis.aoMap = null;\\n\\t\\tthis.aoMapIntensity = 1.0;\\n\\n\\t\\tthis.emissive = new Color( 0x000000 );\\n\\t\\tthis.emissiveIntensity = 1.0;\\n\\t\\tthis.emissiveMap = null;\\n\\n\\t\\tthis.specularMap = null;\\n\\n\\t\\tthis.alphaMap = null;\\n\\n\\t\\tthis.envMap = null;\\n\\t\\tthis.combine = MultiplyOperation;\\n\\t\\tthis.reflectivity = 1;\\n\\t\\tthis.refractionRatio = 0.98;\\n\\n\\t\\tthis.wireframe = false;\\n\\t\\tthis.wireframeLinewidth = 1;\\n\\t\\tthis.wireframeLinecap = 'round';\\n\\t\\tthis.wireframeLinejoin = 'round';\\n\\n\\t\\tthis.skinning = false;\\n\\t\\tthis.morphTargets = false;\\n\\t\\tthis.morphNormals = false;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tMeshLambertMaterial.prototype = Object.create( Material.prototype );\\n\\tMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\\n\\n\\tMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\\n\\n\\tMeshLambertMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.color.copy( source.color );\\n\\n\\t\\tthis.map = source.map;\\n\\n\\t\\tthis.lightMap = source.lightMap;\\n\\t\\tthis.lightMapIntensity = source.lightMapIntensity;\\n\\n\\t\\tthis.aoMap = source.aoMap;\\n\\t\\tthis.aoMapIntensity = source.aoMapIntensity;\\n\\n\\t\\tthis.emissive.copy( source.emissive );\\n\\t\\tthis.emissiveMap = source.emissiveMap;\\n\\t\\tthis.emissiveIntensity = source.emissiveIntensity;\\n\\n\\t\\tthis.specularMap = source.specularMap;\\n\\n\\t\\tthis.alphaMap = source.alphaMap;\\n\\n\\t\\tthis.envMap = source.envMap;\\n\\t\\tthis.combine = source.combine;\\n\\t\\tthis.reflectivity = source.reflectivity;\\n\\t\\tthis.refractionRatio = source.refractionRatio;\\n\\n\\t\\tthis.wireframe = source.wireframe;\\n\\t\\tthis.wireframeLinewidth = source.wireframeLinewidth;\\n\\t\\tthis.wireframeLinecap = source.wireframeLinecap;\\n\\t\\tthis.wireframeLinejoin = source.wireframeLinejoin;\\n\\n\\t\\tthis.skinning = source.skinning;\\n\\t\\tthis.morphTargets = source.morphTargets;\\n\\t\\tthis.morphNormals = source.morphNormals;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t *\\n\\t * parameters = {\\n\\t * color: ,\\n\\t * opacity: ,\\n\\t *\\n\\t * linewidth: ,\\n\\t *\\n\\t * scale: ,\\n\\t * dashSize: ,\\n\\t * gapSize: \\n\\t * }\\n\\t */\\n\\n\\tfunction LineDashedMaterial( parameters ) {\\n\\n\\t\\tLineBasicMaterial.call( this );\\n\\n\\t\\tthis.type = 'LineDashedMaterial';\\n\\n\\t\\tthis.scale = 1;\\n\\t\\tthis.dashSize = 3;\\n\\t\\tthis.gapSize = 1;\\n\\n\\t\\tthis.setValues( parameters );\\n\\n\\t}\\n\\n\\tLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\\n\\tLineDashedMaterial.prototype.constructor = LineDashedMaterial;\\n\\n\\tLineDashedMaterial.prototype.isLineDashedMaterial = true;\\n\\n\\tLineDashedMaterial.prototype.copy = function ( source ) {\\n\\n\\t\\tLineBasicMaterial.prototype.copy.call( this, source );\\n\\n\\t\\tthis.scale = source.scale;\\n\\t\\tthis.dashSize = source.dashSize;\\n\\t\\tthis.gapSize = source.gapSize;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\n\\n\\tvar Materials = Object.freeze({\\n\\t\\tShadowMaterial: ShadowMaterial,\\n\\t\\tSpriteMaterial: SpriteMaterial,\\n\\t\\tRawShaderMaterial: RawShaderMaterial,\\n\\t\\tShaderMaterial: ShaderMaterial,\\n\\t\\tPointsMaterial: PointsMaterial,\\n\\t\\tMeshPhysicalMaterial: MeshPhysicalMaterial,\\n\\t\\tMeshStandardMaterial: MeshStandardMaterial,\\n\\t\\tMeshPhongMaterial: MeshPhongMaterial,\\n\\t\\tMeshToonMaterial: MeshToonMaterial,\\n\\t\\tMeshNormalMaterial: MeshNormalMaterial,\\n\\t\\tMeshLambertMaterial: MeshLambertMaterial,\\n\\t\\tMeshDepthMaterial: MeshDepthMaterial,\\n\\t\\tMeshDistanceMaterial: MeshDistanceMaterial,\\n\\t\\tMeshBasicMaterial: MeshBasicMaterial,\\n\\t\\tLineDashedMaterial: LineDashedMaterial,\\n\\t\\tLineBasicMaterial: LineBasicMaterial,\\n\\t\\tMaterial: Material\\n\\t});\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tvar Cache = {\\n\\n\\t\\tenabled: false,\\n\\n\\t\\tfiles: {},\\n\\n\\t\\tadd: function ( key, file ) {\\n\\n\\t\\t\\tif ( this.enabled === false ) return;\\n\\n\\t\\t\\t// console.log( 'THREE.Cache', 'Adding key:', key );\\n\\n\\t\\t\\tthis.files[ key ] = file;\\n\\n\\t\\t},\\n\\n\\t\\tget: function ( key ) {\\n\\n\\t\\t\\tif ( this.enabled === false ) return;\\n\\n\\t\\t\\t// console.log( 'THREE.Cache', 'Checking key:', key );\\n\\n\\t\\t\\treturn this.files[ key ];\\n\\n\\t\\t},\\n\\n\\t\\tremove: function ( key ) {\\n\\n\\t\\t\\tdelete this.files[ key ];\\n\\n\\t\\t},\\n\\n\\t\\tclear: function () {\\n\\n\\t\\t\\tthis.files = {};\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction LoadingManager( onLoad, onProgress, onError ) {\\n\\n\\t\\tvar scope = this;\\n\\n\\t\\tvar isLoading = false;\\n\\t\\tvar itemsLoaded = 0;\\n\\t\\tvar itemsTotal = 0;\\n\\t\\tvar urlModifier = undefined;\\n\\n\\t\\tthis.onStart = undefined;\\n\\t\\tthis.onLoad = onLoad;\\n\\t\\tthis.onProgress = onProgress;\\n\\t\\tthis.onError = onError;\\n\\n\\t\\tthis.itemStart = function ( url ) {\\n\\n\\t\\t\\titemsTotal ++;\\n\\n\\t\\t\\tif ( isLoading === false ) {\\n\\n\\t\\t\\t\\tif ( scope.onStart !== undefined ) {\\n\\n\\t\\t\\t\\t\\tscope.onStart( url, itemsLoaded, itemsTotal );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tisLoading = true;\\n\\n\\t\\t};\\n\\n\\t\\tthis.itemEnd = function ( url ) {\\n\\n\\t\\t\\titemsLoaded ++;\\n\\n\\t\\t\\tif ( scope.onProgress !== undefined ) {\\n\\n\\t\\t\\t\\tscope.onProgress( url, itemsLoaded, itemsTotal );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( itemsLoaded === itemsTotal ) {\\n\\n\\t\\t\\t\\tisLoading = false;\\n\\n\\t\\t\\t\\tif ( scope.onLoad !== undefined ) {\\n\\n\\t\\t\\t\\t\\tscope.onLoad();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t\\tthis.itemError = function ( url ) {\\n\\n\\t\\t\\tif ( scope.onError !== undefined ) {\\n\\n\\t\\t\\t\\tscope.onError( url );\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t\\tthis.resolveURL = function ( url ) {\\n\\n\\t\\t\\tif ( urlModifier ) {\\n\\n\\t\\t\\t\\treturn urlModifier( url );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn url;\\n\\n\\t\\t};\\n\\n\\t\\tthis.setURLModifier = function ( transform ) {\\n\\n\\t\\t\\turlModifier = transform;\\n\\t\\t\\treturn this;\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\tvar DefaultLoadingManager = new LoadingManager();\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tvar loading = {};\\n\\n\\tfunction FileLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t}\\n\\n\\tObject.assign( FileLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tif ( url === undefined ) url = '';\\n\\n\\t\\t\\tif ( this.path !== undefined ) url = this.path + url;\\n\\n\\t\\t\\turl = this.manager.resolveURL( url );\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar cached = Cache.get( url );\\n\\n\\t\\t\\tif ( cached !== undefined ) {\\n\\n\\t\\t\\t\\tscope.manager.itemStart( url );\\n\\n\\t\\t\\t\\tsetTimeout( function () {\\n\\n\\t\\t\\t\\t\\tif ( onLoad ) onLoad( cached );\\n\\n\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t\\t}, 0 );\\n\\n\\t\\t\\t\\treturn cached;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Check if request is duplicate\\n\\n\\t\\t\\tif ( loading[ url ] !== undefined ) {\\n\\n\\t\\t\\t\\tloading[ url ].push( {\\n\\n\\t\\t\\t\\t\\tonLoad: onLoad,\\n\\t\\t\\t\\t\\tonProgress: onProgress,\\n\\t\\t\\t\\t\\tonError: onError\\n\\n\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Check for data: URI\\n\\t\\t\\tvar dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\\n\\t\\t\\tvar dataUriRegexResult = url.match( dataUriRegex );\\n\\n\\t\\t\\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\\n\\t\\t\\tif ( dataUriRegexResult ) {\\n\\n\\t\\t\\t\\tvar mimeType = dataUriRegexResult[ 1 ];\\n\\t\\t\\t\\tvar isBase64 = !! dataUriRegexResult[ 2 ];\\n\\t\\t\\t\\tvar data = dataUriRegexResult[ 3 ];\\n\\n\\t\\t\\t\\tdata = window.decodeURIComponent( data );\\n\\n\\t\\t\\t\\tif ( isBase64 ) data = window.atob( data );\\n\\n\\t\\t\\t\\ttry {\\n\\n\\t\\t\\t\\t\\tvar response;\\n\\t\\t\\t\\t\\tvar responseType = ( this.responseType || '' ).toLowerCase();\\n\\n\\t\\t\\t\\t\\tswitch ( responseType ) {\\n\\n\\t\\t\\t\\t\\t\\tcase 'arraybuffer':\\n\\t\\t\\t\\t\\t\\tcase 'blob':\\n\\n\\t\\t\\t\\t\\t\\t\\tvar view = new Uint8Array( data.length );\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < data.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tview[ i ] = data.charCodeAt( i );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( responseType === 'blob' ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\\n\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tresponse = view.buffer;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'document':\\n\\n\\t\\t\\t\\t\\t\\t\\tvar parser = new DOMParser();\\n\\t\\t\\t\\t\\t\\t\\tresponse = parser.parseFromString( data, mimeType );\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'json':\\n\\n\\t\\t\\t\\t\\t\\t\\tresponse = JSON.parse( data );\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tdefault: // 'text' or other\\n\\n\\t\\t\\t\\t\\t\\t\\tresponse = data;\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\\n\\t\\t\\t\\t\\twindow.setTimeout( function () {\\n\\n\\t\\t\\t\\t\\t\\tif ( onLoad ) onLoad( response );\\n\\n\\t\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t\\t\\t}, 0 );\\n\\n\\t\\t\\t\\t} catch ( error ) {\\n\\n\\t\\t\\t\\t\\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\\n\\t\\t\\t\\t\\twindow.setTimeout( function () {\\n\\n\\t\\t\\t\\t\\t\\tif ( onError ) onError( error );\\n\\n\\t\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\t\\t\\t\\t\\t\\tscope.manager.itemError( url );\\n\\n\\t\\t\\t\\t\\t}, 0 );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// Initialise array for duplicate requests\\n\\n\\t\\t\\t\\tloading[ url ] = [];\\n\\n\\t\\t\\t\\tloading[ url ].push( {\\n\\n\\t\\t\\t\\t\\tonLoad: onLoad,\\n\\t\\t\\t\\t\\tonProgress: onProgress,\\n\\t\\t\\t\\t\\tonError: onError\\n\\n\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\tvar request = new XMLHttpRequest();\\n\\n\\t\\t\\t\\trequest.open( 'GET', url, true );\\n\\n\\t\\t\\t\\trequest.addEventListener( 'load', function ( event ) {\\n\\n\\t\\t\\t\\t\\tvar response = this.response;\\n\\n\\t\\t\\t\\t\\tCache.add( url, response );\\n\\n\\t\\t\\t\\t\\tvar callbacks = loading[ url ];\\n\\n\\t\\t\\t\\t\\tdelete loading[ url ];\\n\\n\\t\\t\\t\\t\\tif ( this.status === 200 ) {\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar callback = callbacks[ i ];\\n\\t\\t\\t\\t\\t\\t\\tif ( callback.onLoad ) callback.onLoad( response );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t\\t\\t} else if ( this.status === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\t// Some browsers return HTTP Status 0 when using non-http protocol\\n\\t\\t\\t\\t\\t\\t// e.g. 'file://' or 'data://'. Handle as success.\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar callback = callbacks[ i ];\\n\\t\\t\\t\\t\\t\\t\\tif ( callback.onLoad ) callback.onLoad( response );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar callback = callbacks[ i ];\\n\\t\\t\\t\\t\\t\\t\\tif ( callback.onError ) callback.onError( event );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\t\\t\\t\\t\\t\\tscope.manager.itemError( url );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}, false );\\n\\n\\t\\t\\t\\trequest.addEventListener( 'progress', function ( event ) {\\n\\n\\t\\t\\t\\t\\tvar callbacks = loading[ url ];\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar callback = callbacks[ i ];\\n\\t\\t\\t\\t\\t\\tif ( callback.onProgress ) callback.onProgress( event );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}, false );\\n\\n\\t\\t\\t\\trequest.addEventListener( 'error', function ( event ) {\\n\\n\\t\\t\\t\\t\\tvar callbacks = loading[ url ];\\n\\n\\t\\t\\t\\t\\tdelete loading[ url ];\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, il = callbacks.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar callback = callbacks[ i ];\\n\\t\\t\\t\\t\\t\\tif ( callback.onError ) callback.onError( event );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\t\\t\\t\\t\\tscope.manager.itemError( url );\\n\\n\\t\\t\\t\\t}, false );\\n\\n\\t\\t\\t\\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\\n\\t\\t\\t\\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\\n\\n\\t\\t\\t\\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\\n\\n\\t\\t\\t\\tfor ( var header in this.requestHeader ) {\\n\\n\\t\\t\\t\\t\\trequest.setRequestHeader( header, this.requestHeader[ header ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\trequest.send( null );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tscope.manager.itemStart( url );\\n\\n\\t\\t\\treturn request;\\n\\n\\t\\t},\\n\\n\\t\\tsetPath: function ( value ) {\\n\\n\\t\\t\\tthis.path = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetResponseType: function ( value ) {\\n\\n\\t\\t\\tthis.responseType = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetWithCredentials: function ( value ) {\\n\\n\\t\\t\\tthis.withCredentials = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetMimeType: function ( value ) {\\n\\n\\t\\t\\tthis.mimeType = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetRequestHeader: function ( value ) {\\n\\n\\t\\t\\tthis.requestHeader = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t *\\n\\t * Abstract Base class to block based textures loader (dds, pvr, ...)\\n\\t */\\n\\n\\tfunction CompressedTextureLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t\\t// override in sub classes\\n\\t\\tthis._parser = null;\\n\\n\\t}\\n\\n\\tObject.assign( CompressedTextureLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar images = [];\\n\\n\\t\\t\\tvar texture = new CompressedTexture();\\n\\t\\t\\ttexture.image = images;\\n\\n\\t\\t\\tvar loader = new FileLoader( this.manager );\\n\\t\\t\\tloader.setPath( this.path );\\n\\t\\t\\tloader.setResponseType( 'arraybuffer' );\\n\\n\\t\\t\\tfunction loadTexture( i ) {\\n\\n\\t\\t\\t\\tloader.load( url[ i ], function ( buffer ) {\\n\\n\\t\\t\\t\\t\\tvar texDatas = scope._parser( buffer, true );\\n\\n\\t\\t\\t\\t\\timages[ i ] = {\\n\\t\\t\\t\\t\\t\\twidth: texDatas.width,\\n\\t\\t\\t\\t\\t\\theight: texDatas.height,\\n\\t\\t\\t\\t\\t\\tformat: texDatas.format,\\n\\t\\t\\t\\t\\t\\tmipmaps: texDatas.mipmaps\\n\\t\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\t\\tloaded += 1;\\n\\n\\t\\t\\t\\t\\tif ( loaded === 6 ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( texDatas.mipmapCount === 1 )\\n\\t\\t\\t\\t\\t\\t\\ttexture.minFilter = LinearFilter;\\n\\n\\t\\t\\t\\t\\t\\ttexture.format = texDatas.format;\\n\\t\\t\\t\\t\\t\\ttexture.needsUpdate = true;\\n\\n\\t\\t\\t\\t\\t\\tif ( onLoad ) onLoad( texture );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( Array.isArray( url ) ) {\\n\\n\\t\\t\\t\\tvar loaded = 0;\\n\\n\\t\\t\\t\\tfor ( var i = 0, il = url.length; i < il; ++ i ) {\\n\\n\\t\\t\\t\\t\\tloadTexture( i );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// compressed cubemap texture stored in a single DDS file\\n\\n\\t\\t\\t\\tloader.load( url, function ( buffer ) {\\n\\n\\t\\t\\t\\t\\tvar texDatas = scope._parser( buffer, true );\\n\\n\\t\\t\\t\\t\\tif ( texDatas.isCubemap ) {\\n\\n\\t\\t\\t\\t\\t\\tvar faces = texDatas.mipmaps.length / texDatas.mipmapCount;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var f = 0; f < faces; f ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\timages[ f ] = { mipmaps: [] };\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < texDatas.mipmapCount; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\\n\\t\\t\\t\\t\\t\\t\\t\\timages[ f ].format = texDatas.format;\\n\\t\\t\\t\\t\\t\\t\\t\\timages[ f ].width = texDatas.width;\\n\\t\\t\\t\\t\\t\\t\\t\\timages[ f ].height = texDatas.height;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\ttexture.image.width = texDatas.width;\\n\\t\\t\\t\\t\\t\\ttexture.image.height = texDatas.height;\\n\\t\\t\\t\\t\\t\\ttexture.mipmaps = texDatas.mipmaps;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( texDatas.mipmapCount === 1 ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture.minFilter = LinearFilter;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttexture.format = texDatas.format;\\n\\t\\t\\t\\t\\ttexture.needsUpdate = true;\\n\\n\\t\\t\\t\\t\\tif ( onLoad ) onLoad( texture );\\n\\n\\t\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn texture;\\n\\n\\t\\t},\\n\\n\\t\\tsetPath: function ( value ) {\\n\\n\\t\\t\\tthis.path = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author Nikos M. / https://github.com/foo123/\\n\\t *\\n\\t * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\\n\\t */\\n\\n\\tfunction DataTextureLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t\\t// override in sub classes\\n\\t\\tthis._parser = null;\\n\\n\\t}\\n\\n\\tObject.assign( DataTextureLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar texture = new DataTexture();\\n\\n\\t\\t\\tvar loader = new FileLoader( this.manager );\\n\\t\\t\\tloader.setResponseType( 'arraybuffer' );\\n\\n\\t\\t\\tloader.load( url, function ( buffer ) {\\n\\n\\t\\t\\t\\tvar texData = scope._parser( buffer );\\n\\n\\t\\t\\t\\tif ( ! texData ) return;\\n\\n\\t\\t\\t\\tif ( undefined !== texData.image ) {\\n\\n\\t\\t\\t\\t\\ttexture.image = texData.image;\\n\\n\\t\\t\\t\\t} else if ( undefined !== texData.data ) {\\n\\n\\t\\t\\t\\t\\ttexture.image.width = texData.width;\\n\\t\\t\\t\\t\\ttexture.image.height = texData.height;\\n\\t\\t\\t\\t\\ttexture.image.data = texData.data;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttexture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping;\\n\\t\\t\\t\\ttexture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping;\\n\\n\\t\\t\\t\\ttexture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter;\\n\\t\\t\\t\\ttexture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter;\\n\\n\\t\\t\\t\\ttexture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1;\\n\\n\\t\\t\\t\\tif ( undefined !== texData.format ) {\\n\\n\\t\\t\\t\\t\\ttexture.format = texData.format;\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif ( undefined !== texData.type ) {\\n\\n\\t\\t\\t\\t\\ttexture.type = texData.type;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( undefined !== texData.mipmaps ) {\\n\\n\\t\\t\\t\\t\\ttexture.mipmaps = texData.mipmaps;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( 1 === texData.mipmapCount ) {\\n\\n\\t\\t\\t\\t\\ttexture.minFilter = LinearFilter;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttexture.needsUpdate = true;\\n\\n\\t\\t\\t\\tif ( onLoad ) onLoad( texture, texData );\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\n\\t\\t\\treturn texture;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction ImageLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t}\\n\\n\\tObject.assign( ImageLoader.prototype, {\\n\\n\\t\\tcrossOrigin: 'Anonymous',\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tif ( url === undefined ) url = '';\\n\\n\\t\\t\\tif ( this.path !== undefined ) url = this.path + url;\\n\\n\\t\\t\\turl = this.manager.resolveURL( url );\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar cached = Cache.get( url );\\n\\n\\t\\t\\tif ( cached !== undefined ) {\\n\\n\\t\\t\\t\\tscope.manager.itemStart( url );\\n\\n\\t\\t\\t\\tsetTimeout( function () {\\n\\n\\t\\t\\t\\t\\tif ( onLoad ) onLoad( cached );\\n\\n\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t\\t}, 0 );\\n\\n\\t\\t\\t\\treturn cached;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\\n\\n\\t\\t\\timage.addEventListener( 'load', function () {\\n\\n\\t\\t\\t\\tCache.add( url, this );\\n\\n\\t\\t\\t\\tif ( onLoad ) onLoad( this );\\n\\n\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t}, false );\\n\\n\\t\\t\\t/*\\n\\t\\t\\timage.addEventListener( 'progress', function ( event ) {\\n\\n\\t\\t\\t\\tif ( onProgress ) onProgress( event );\\n\\n\\t\\t\\t}, false );\\n\\t\\t\\t*/\\n\\n\\t\\t\\timage.addEventListener( 'error', function ( event ) {\\n\\n\\t\\t\\t\\tif ( onError ) onError( event );\\n\\n\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\t\\t\\t\\tscope.manager.itemError( url );\\n\\n\\t\\t\\t}, false );\\n\\n\\t\\t\\tif ( url.substr( 0, 5 ) !== 'data:' ) {\\n\\n\\t\\t\\t\\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tscope.manager.itemStart( url );\\n\\n\\t\\t\\timage.src = url;\\n\\n\\t\\t\\treturn image;\\n\\n\\t\\t},\\n\\n\\t\\tsetCrossOrigin: function ( value ) {\\n\\n\\t\\t\\tthis.crossOrigin = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetPath: function ( value ) {\\n\\n\\t\\t\\tthis.path = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction CubeTextureLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t}\\n\\n\\tObject.assign( CubeTextureLoader.prototype, {\\n\\n\\t\\tcrossOrigin: 'Anonymous',\\n\\n\\t\\tload: function ( urls, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar texture = new CubeTexture();\\n\\n\\t\\t\\tvar loader = new ImageLoader( this.manager );\\n\\t\\t\\tloader.setCrossOrigin( this.crossOrigin );\\n\\t\\t\\tloader.setPath( this.path );\\n\\n\\t\\t\\tvar loaded = 0;\\n\\n\\t\\t\\tfunction loadTexture( i ) {\\n\\n\\t\\t\\t\\tloader.load( urls[ i ], function ( image ) {\\n\\n\\t\\t\\t\\t\\ttexture.images[ i ] = image;\\n\\n\\t\\t\\t\\t\\tloaded ++;\\n\\n\\t\\t\\t\\t\\tif ( loaded === 6 ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture.needsUpdate = true;\\n\\n\\t\\t\\t\\t\\t\\tif ( onLoad ) onLoad( texture );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}, undefined, onError );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0; i < urls.length; ++ i ) {\\n\\n\\t\\t\\t\\tloadTexture( i );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn texture;\\n\\n\\t\\t},\\n\\n\\t\\tsetCrossOrigin: function ( value ) {\\n\\n\\t\\t\\tthis.crossOrigin = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetPath: function ( value ) {\\n\\n\\t\\t\\tthis.path = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction TextureLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t}\\n\\n\\tObject.assign( TextureLoader.prototype, {\\n\\n\\t\\tcrossOrigin: 'Anonymous',\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar texture = new Texture();\\n\\n\\t\\t\\tvar loader = new ImageLoader( this.manager );\\n\\t\\t\\tloader.setCrossOrigin( this.crossOrigin );\\n\\t\\t\\tloader.setPath( this.path );\\n\\n\\t\\t\\tloader.load( url, function ( image ) {\\n\\n\\t\\t\\t\\ttexture.image = image;\\n\\n\\t\\t\\t\\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\\n\\t\\t\\t\\tvar isJPEG = url.search( /\\\\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\\\\:image\\\\/jpeg/ ) === 0;\\n\\n\\t\\t\\t\\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\\n\\t\\t\\t\\ttexture.needsUpdate = true;\\n\\n\\t\\t\\t\\tif ( onLoad !== undefined ) {\\n\\n\\t\\t\\t\\t\\tonLoad( texture );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t\\treturn texture;\\n\\n\\t\\t},\\n\\n\\t\\tsetCrossOrigin: function ( value ) {\\n\\n\\t\\t\\tthis.crossOrigin = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetPath: function ( value ) {\\n\\n\\t\\t\\tthis.path = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * Extensible curve object\\n\\t *\\n\\t * Some common of curve methods:\\n\\t * .getPoint( t, optionalTarget ), .getTangent( t )\\n\\t * .getPointAt( u, optionalTarget ), .getTangentAt( u )\\n\\t * .getPoints(), .getSpacedPoints()\\n\\t * .getLength()\\n\\t * .updateArcLengths()\\n\\t *\\n\\t * This following curves inherit from THREE.Curve:\\n\\t *\\n\\t * -- 2D curves --\\n\\t * THREE.ArcCurve\\n\\t * THREE.CubicBezierCurve\\n\\t * THREE.EllipseCurve\\n\\t * THREE.LineCurve\\n\\t * THREE.QuadraticBezierCurve\\n\\t * THREE.SplineCurve\\n\\t *\\n\\t * -- 3D curves --\\n\\t * THREE.CatmullRomCurve3\\n\\t * THREE.CubicBezierCurve3\\n\\t * THREE.LineCurve3\\n\\t * THREE.QuadraticBezierCurve3\\n\\t *\\n\\t * A series of curves can be represented as a THREE.CurvePath.\\n\\t *\\n\\t **/\\n\\n\\t/**************************************************************\\n\\t *\\tAbstract Curve base class\\n\\t **************************************************************/\\n\\n\\tfunction Curve() {\\n\\n\\t\\tthis.type = 'Curve';\\n\\n\\t\\tthis.arcLengthDivisions = 200;\\n\\n\\t}\\n\\n\\tObject.assign( Curve.prototype, {\\n\\n\\t\\t// Virtual base class method to overwrite and implement in subclasses\\n\\t\\t//\\t- t [0 .. 1]\\n\\n\\t\\tgetPoint: function ( /* t, optionalTarget */ ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\\n\\t\\t\\treturn null;\\n\\n\\t\\t},\\n\\n\\t\\t// Get point at relative position in curve according to arc length\\n\\t\\t// - u [0 .. 1]\\n\\n\\t\\tgetPointAt: function ( u, optionalTarget ) {\\n\\n\\t\\t\\tvar t = this.getUtoTmapping( u );\\n\\t\\t\\treturn this.getPoint( t, optionalTarget );\\n\\n\\t\\t},\\n\\n\\t\\t// Get sequence of points using getPoint( t )\\n\\n\\t\\tgetPoints: function ( divisions ) {\\n\\n\\t\\t\\tif ( divisions === undefined ) divisions = 5;\\n\\n\\t\\t\\tvar points = [];\\n\\n\\t\\t\\tfor ( var d = 0; d <= divisions; d ++ ) {\\n\\n\\t\\t\\t\\tpoints.push( this.getPoint( d / divisions ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn points;\\n\\n\\t\\t},\\n\\n\\t\\t// Get sequence of points using getPointAt( u )\\n\\n\\t\\tgetSpacedPoints: function ( divisions ) {\\n\\n\\t\\t\\tif ( divisions === undefined ) divisions = 5;\\n\\n\\t\\t\\tvar points = [];\\n\\n\\t\\t\\tfor ( var d = 0; d <= divisions; d ++ ) {\\n\\n\\t\\t\\t\\tpoints.push( this.getPointAt( d / divisions ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn points;\\n\\n\\t\\t},\\n\\n\\t\\t// Get total curve arc length\\n\\n\\t\\tgetLength: function () {\\n\\n\\t\\t\\tvar lengths = this.getLengths();\\n\\t\\t\\treturn lengths[ lengths.length - 1 ];\\n\\n\\t\\t},\\n\\n\\t\\t// Get list of cumulative segment lengths\\n\\n\\t\\tgetLengths: function ( divisions ) {\\n\\n\\t\\t\\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\\n\\n\\t\\t\\tif ( this.cacheArcLengths &&\\n\\t\\t\\t\\t( this.cacheArcLengths.length === divisions + 1 ) &&\\n\\t\\t\\t\\t! this.needsUpdate ) {\\n\\n\\t\\t\\t\\treturn this.cacheArcLengths;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.needsUpdate = false;\\n\\n\\t\\t\\tvar cache = [];\\n\\t\\t\\tvar current, last = this.getPoint( 0 );\\n\\t\\t\\tvar p, sum = 0;\\n\\n\\t\\t\\tcache.push( 0 );\\n\\n\\t\\t\\tfor ( p = 1; p <= divisions; p ++ ) {\\n\\n\\t\\t\\t\\tcurrent = this.getPoint( p / divisions );\\n\\t\\t\\t\\tsum += current.distanceTo( last );\\n\\t\\t\\t\\tcache.push( sum );\\n\\t\\t\\t\\tlast = current;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.cacheArcLengths = cache;\\n\\n\\t\\t\\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\\n\\n\\t\\t},\\n\\n\\t\\tupdateArcLengths: function () {\\n\\n\\t\\t\\tthis.needsUpdate = true;\\n\\t\\t\\tthis.getLengths();\\n\\n\\t\\t},\\n\\n\\t\\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\\n\\n\\t\\tgetUtoTmapping: function ( u, distance ) {\\n\\n\\t\\t\\tvar arcLengths = this.getLengths();\\n\\n\\t\\t\\tvar i = 0, il = arcLengths.length;\\n\\n\\t\\t\\tvar targetArcLength; // The targeted u distance value to get\\n\\n\\t\\t\\tif ( distance ) {\\n\\n\\t\\t\\t\\ttargetArcLength = distance;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\ttargetArcLength = u * arcLengths[ il - 1 ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// binary search for the index with largest value smaller than target u distance\\n\\n\\t\\t\\tvar low = 0, high = il - 1, comparison;\\n\\n\\t\\t\\twhile ( low <= high ) {\\n\\n\\t\\t\\t\\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\\n\\n\\t\\t\\t\\tcomparison = arcLengths[ i ] - targetArcLength;\\n\\n\\t\\t\\t\\tif ( comparison < 0 ) {\\n\\n\\t\\t\\t\\t\\tlow = i + 1;\\n\\n\\t\\t\\t\\t} else if ( comparison > 0 ) {\\n\\n\\t\\t\\t\\t\\thigh = i - 1;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\thigh = i;\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t// DONE\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\ti = high;\\n\\n\\t\\t\\tif ( arcLengths[ i ] === targetArcLength ) {\\n\\n\\t\\t\\t\\treturn i / ( il - 1 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// we could get finer grain at lengths, or use simple interpolation between two points\\n\\n\\t\\t\\tvar lengthBefore = arcLengths[ i ];\\n\\t\\t\\tvar lengthAfter = arcLengths[ i + 1 ];\\n\\n\\t\\t\\tvar segmentLength = lengthAfter - lengthBefore;\\n\\n\\t\\t\\t// determine where we are between the 'before' and 'after' points\\n\\n\\t\\t\\tvar segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\\n\\n\\t\\t\\t// add that fractional amount to t\\n\\n\\t\\t\\tvar t = ( i + segmentFraction ) / ( il - 1 );\\n\\n\\t\\t\\treturn t;\\n\\n\\t\\t},\\n\\n\\t\\t// Returns a unit vector tangent at t\\n\\t\\t// In case any sub curve does not implement its tangent derivation,\\n\\t\\t// 2 points a small delta apart will be used to find its gradient\\n\\t\\t// which seems to give a reasonable approximation\\n\\n\\t\\tgetTangent: function ( t ) {\\n\\n\\t\\t\\tvar delta = 0.0001;\\n\\t\\t\\tvar t1 = t - delta;\\n\\t\\t\\tvar t2 = t + delta;\\n\\n\\t\\t\\t// Capping in case of danger\\n\\n\\t\\t\\tif ( t1 < 0 ) t1 = 0;\\n\\t\\t\\tif ( t2 > 1 ) t2 = 1;\\n\\n\\t\\t\\tvar pt1 = this.getPoint( t1 );\\n\\t\\t\\tvar pt2 = this.getPoint( t2 );\\n\\n\\t\\t\\tvar vec = pt2.clone().sub( pt1 );\\n\\t\\t\\treturn vec.normalize();\\n\\n\\t\\t},\\n\\n\\t\\tgetTangentAt: function ( u ) {\\n\\n\\t\\t\\tvar t = this.getUtoTmapping( u );\\n\\t\\t\\treturn this.getTangent( t );\\n\\n\\t\\t},\\n\\n\\t\\tcomputeFrenetFrames: function ( segments, closed ) {\\n\\n\\t\\t\\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\\n\\n\\t\\t\\tvar normal = new Vector3();\\n\\n\\t\\t\\tvar tangents = [];\\n\\t\\t\\tvar normals = [];\\n\\t\\t\\tvar binormals = [];\\n\\n\\t\\t\\tvar vec = new Vector3();\\n\\t\\t\\tvar mat = new Matrix4();\\n\\n\\t\\t\\tvar i, u, theta;\\n\\n\\t\\t\\t// compute the tangent vectors for each segment on the curve\\n\\n\\t\\t\\tfor ( i = 0; i <= segments; i ++ ) {\\n\\n\\t\\t\\t\\tu = i / segments;\\n\\n\\t\\t\\t\\ttangents[ i ] = this.getTangentAt( u );\\n\\t\\t\\t\\ttangents[ i ].normalize();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// select an initial normal vector perpendicular to the first tangent vector,\\n\\t\\t\\t// and in the direction of the minimum tangent xyz component\\n\\n\\t\\t\\tnormals[ 0 ] = new Vector3();\\n\\t\\t\\tbinormals[ 0 ] = new Vector3();\\n\\t\\t\\tvar min = Number.MAX_VALUE;\\n\\t\\t\\tvar tx = Math.abs( tangents[ 0 ].x );\\n\\t\\t\\tvar ty = Math.abs( tangents[ 0 ].y );\\n\\t\\t\\tvar tz = Math.abs( tangents[ 0 ].z );\\n\\n\\t\\t\\tif ( tx <= min ) {\\n\\n\\t\\t\\t\\tmin = tx;\\n\\t\\t\\t\\tnormal.set( 1, 0, 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ty <= min ) {\\n\\n\\t\\t\\t\\tmin = ty;\\n\\t\\t\\t\\tnormal.set( 0, 1, 0 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( tz <= min ) {\\n\\n\\t\\t\\t\\tnormal.set( 0, 0, 1 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\\n\\n\\t\\t\\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\\n\\t\\t\\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\\n\\n\\n\\t\\t\\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\\n\\n\\t\\t\\tfor ( i = 1; i <= segments; i ++ ) {\\n\\n\\t\\t\\t\\tnormals[ i ] = normals[ i - 1 ].clone();\\n\\n\\t\\t\\t\\tbinormals[ i ] = binormals[ i - 1 ].clone();\\n\\n\\t\\t\\t\\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\\n\\n\\t\\t\\t\\tif ( vec.length() > Number.EPSILON ) {\\n\\n\\t\\t\\t\\t\\tvec.normalize();\\n\\n\\t\\t\\t\\t\\ttheta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\\n\\n\\t\\t\\t\\t\\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\\n\\n\\t\\t\\tif ( closed === true ) {\\n\\n\\t\\t\\t\\ttheta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\\n\\t\\t\\t\\ttheta /= segments;\\n\\n\\t\\t\\t\\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\\n\\n\\t\\t\\t\\t\\ttheta = - theta;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfor ( i = 1; i <= segments; i ++ ) {\\n\\n\\t\\t\\t\\t\\t// twist a little...\\n\\t\\t\\t\\t\\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\\n\\t\\t\\t\\t\\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ttangents: tangents,\\n\\t\\t\\t\\tnormals: normals,\\n\\t\\t\\t\\tbinormals: binormals\\n\\t\\t\\t};\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.arcLengthDivisions = source.arcLengthDivisions;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\tvar data = {\\n\\t\\t\\t\\tmetadata: {\\n\\t\\t\\t\\t\\tversion: 4.5,\\n\\t\\t\\t\\t\\ttype: 'Curve',\\n\\t\\t\\t\\t\\tgenerator: 'Curve.toJSON'\\n\\t\\t\\t\\t}\\n\\t\\t\\t};\\n\\n\\t\\t\\tdata.arcLengthDivisions = this.arcLengthDivisions;\\n\\t\\t\\tdata.type = this.type;\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t},\\n\\n\\t\\tfromJSON: function ( json ) {\\n\\n\\t\\t\\tthis.arcLengthDivisions = json.arcLengthDivisions;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'EllipseCurve';\\n\\n\\t\\tthis.aX = aX || 0;\\n\\t\\tthis.aY = aY || 0;\\n\\n\\t\\tthis.xRadius = xRadius || 1;\\n\\t\\tthis.yRadius = yRadius || 1;\\n\\n\\t\\tthis.aStartAngle = aStartAngle || 0;\\n\\t\\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\\n\\n\\t\\tthis.aClockwise = aClockwise || false;\\n\\n\\t\\tthis.aRotation = aRotation || 0;\\n\\n\\t}\\n\\n\\tEllipseCurve.prototype = Object.create( Curve.prototype );\\n\\tEllipseCurve.prototype.constructor = EllipseCurve;\\n\\n\\tEllipseCurve.prototype.isEllipseCurve = true;\\n\\n\\tEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector2();\\n\\n\\t\\tvar twoPi = Math.PI * 2;\\n\\t\\tvar deltaAngle = this.aEndAngle - this.aStartAngle;\\n\\t\\tvar samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\\n\\n\\t\\t// ensures that deltaAngle is 0 .. 2 PI\\n\\t\\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\\n\\t\\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\\n\\n\\t\\tif ( deltaAngle < Number.EPSILON ) {\\n\\n\\t\\t\\tif ( samePoints ) {\\n\\n\\t\\t\\t\\tdeltaAngle = 0;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tdeltaAngle = twoPi;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tif ( this.aClockwise === true && ! samePoints ) {\\n\\n\\t\\t\\tif ( deltaAngle === twoPi ) {\\n\\n\\t\\t\\t\\tdeltaAngle = - twoPi;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tdeltaAngle = deltaAngle - twoPi;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tvar angle = this.aStartAngle + t * deltaAngle;\\n\\t\\tvar x = this.aX + this.xRadius * Math.cos( angle );\\n\\t\\tvar y = this.aY + this.yRadius * Math.sin( angle );\\n\\n\\t\\tif ( this.aRotation !== 0 ) {\\n\\n\\t\\t\\tvar cos = Math.cos( this.aRotation );\\n\\t\\t\\tvar sin = Math.sin( this.aRotation );\\n\\n\\t\\t\\tvar tx = x - this.aX;\\n\\t\\t\\tvar ty = y - this.aY;\\n\\n\\t\\t\\t// Rotate the point about the center of the ellipse.\\n\\t\\t\\tx = tx * cos - ty * sin + this.aX;\\n\\t\\t\\ty = tx * sin + ty * cos + this.aY;\\n\\n\\t\\t}\\n\\n\\t\\treturn point.set( x, y );\\n\\n\\t};\\n\\n\\tEllipseCurve.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.aX = source.aX;\\n\\t\\tthis.aY = source.aY;\\n\\n\\t\\tthis.xRadius = source.xRadius;\\n\\t\\tthis.yRadius = source.yRadius;\\n\\n\\t\\tthis.aStartAngle = source.aStartAngle;\\n\\t\\tthis.aEndAngle = source.aEndAngle;\\n\\n\\t\\tthis.aClockwise = source.aClockwise;\\n\\n\\t\\tthis.aRotation = source.aRotation;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\n\\tEllipseCurve.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.aX = this.aX;\\n\\t\\tdata.aY = this.aY;\\n\\n\\t\\tdata.xRadius = this.xRadius;\\n\\t\\tdata.yRadius = this.yRadius;\\n\\n\\t\\tdata.aStartAngle = this.aStartAngle;\\n\\t\\tdata.aEndAngle = this.aEndAngle;\\n\\n\\t\\tdata.aClockwise = this.aClockwise;\\n\\n\\t\\tdata.aRotation = this.aRotation;\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tEllipseCurve.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.aX = json.aX;\\n\\t\\tthis.aY = json.aY;\\n\\n\\t\\tthis.xRadius = json.xRadius;\\n\\t\\tthis.yRadius = json.yRadius;\\n\\n\\t\\tthis.aStartAngle = json.aStartAngle;\\n\\t\\tthis.aEndAngle = json.aEndAngle;\\n\\n\\t\\tthis.aClockwise = json.aClockwise;\\n\\n\\t\\tthis.aRotation = json.aRotation;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\\n\\n\\t\\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\\n\\n\\t\\tthis.type = 'ArcCurve';\\n\\n\\t}\\n\\n\\tArcCurve.prototype = Object.create( EllipseCurve.prototype );\\n\\tArcCurve.prototype.constructor = ArcCurve;\\n\\n\\tArcCurve.prototype.isArcCurve = true;\\n\\n\\t/**\\n\\t * @author zz85 https://github.com/zz85\\n\\t *\\n\\t * Centripetal CatmullRom Curve - which is useful for avoiding\\n\\t * cusps and self-intersections in non-uniform catmull rom curves.\\n\\t * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\\n\\t *\\n\\t * curve.type accepts centripetal(default), chordal and catmullrom\\n\\t * curve.tension is used for catmullrom which defaults to 0.5\\n\\t */\\n\\n\\n\\t/*\\n\\tBased on an optimized c++ solution in\\n\\t - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\\n\\t - http://ideone.com/NoEbVM\\n\\n\\tThis CubicPoly class could be used for reusing some variables and calculations,\\n\\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\\n\\twhich can be placed in CurveUtils.\\n\\t*/\\n\\n\\tfunction CubicPoly() {\\n\\n\\t\\tvar c0 = 0, c1 = 0, c2 = 0, c3 = 0;\\n\\n\\t\\t/*\\n\\t\\t * Compute coefficients for a cubic polynomial\\n\\t\\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\\n\\t\\t * such that\\n\\t\\t * p(0) = x0, p(1) = x1\\n\\t\\t * and\\n\\t\\t * p'(0) = t0, p'(1) = t1.\\n\\t\\t */\\n\\t\\tfunction init( x0, x1, t0, t1 ) {\\n\\n\\t\\t\\tc0 = x0;\\n\\t\\t\\tc1 = t0;\\n\\t\\t\\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\\n\\t\\t\\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\\n\\n\\t\\t}\\n\\n\\t\\treturn {\\n\\n\\t\\t\\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\\n\\n\\t\\t\\t\\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\\n\\n\\t\\t\\t\\t// compute tangents when parameterized in [t1,t2]\\n\\t\\t\\t\\tvar t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\\n\\t\\t\\t\\tvar t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\\n\\n\\t\\t\\t\\t// rescale tangents for parametrization in [0,1]\\n\\t\\t\\t\\tt1 *= dt1;\\n\\t\\t\\t\\tt2 *= dt1;\\n\\n\\t\\t\\t\\tinit( x1, x2, t1, t2 );\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tcalc: function ( t ) {\\n\\n\\t\\t\\t\\tvar t2 = t * t;\\n\\t\\t\\t\\tvar t3 = t2 * t;\\n\\t\\t\\t\\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t//\\n\\n\\tvar tmp = new Vector3();\\n\\tvar px = new CubicPoly();\\n\\tvar py = new CubicPoly();\\n\\tvar pz = new CubicPoly();\\n\\n\\tfunction CatmullRomCurve3( points, closed, curveType, tension ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'CatmullRomCurve3';\\n\\n\\t\\tthis.points = points || [];\\n\\t\\tthis.closed = closed || false;\\n\\t\\tthis.curveType = curveType || 'centripetal';\\n\\t\\tthis.tension = tension || 0.5;\\n\\n\\t}\\n\\n\\tCatmullRomCurve3.prototype = Object.create( Curve.prototype );\\n\\tCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\\n\\n\\tCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\\n\\n\\tCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector3();\\n\\n\\t\\tvar points = this.points;\\n\\t\\tvar l = points.length;\\n\\n\\t\\tvar p = ( l - ( this.closed ? 0 : 1 ) ) * t;\\n\\t\\tvar intPoint = Math.floor( p );\\n\\t\\tvar weight = p - intPoint;\\n\\n\\t\\tif ( this.closed ) {\\n\\n\\t\\t\\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;\\n\\n\\t\\t} else if ( weight === 0 && intPoint === l - 1 ) {\\n\\n\\t\\t\\tintPoint = l - 2;\\n\\t\\t\\tweight = 1;\\n\\n\\t\\t}\\n\\n\\t\\tvar p0, p1, p2, p3; // 4 points\\n\\n\\t\\tif ( this.closed || intPoint > 0 ) {\\n\\n\\t\\t\\tp0 = points[ ( intPoint - 1 ) % l ];\\n\\n\\t\\t} else {\\n\\n\\t\\t\\t// extrapolate first point\\n\\t\\t\\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\\n\\t\\t\\tp0 = tmp;\\n\\n\\t\\t}\\n\\n\\t\\tp1 = points[ intPoint % l ];\\n\\t\\tp2 = points[ ( intPoint + 1 ) % l ];\\n\\n\\t\\tif ( this.closed || intPoint + 2 < l ) {\\n\\n\\t\\t\\tp3 = points[ ( intPoint + 2 ) % l ];\\n\\n\\t\\t} else {\\n\\n\\t\\t\\t// extrapolate last point\\n\\t\\t\\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\\n\\t\\t\\tp3 = tmp;\\n\\n\\t\\t}\\n\\n\\t\\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\\n\\n\\t\\t\\t// init Centripetal / Chordal Catmull-Rom\\n\\t\\t\\tvar pow = this.curveType === 'chordal' ? 0.5 : 0.25;\\n\\t\\t\\tvar dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\\n\\t\\t\\tvar dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\\n\\t\\t\\tvar dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\\n\\n\\t\\t\\t// safety check for repeated points\\n\\t\\t\\tif ( dt1 < 1e-4 ) dt1 = 1.0;\\n\\t\\t\\tif ( dt0 < 1e-4 ) dt0 = dt1;\\n\\t\\t\\tif ( dt2 < 1e-4 ) dt2 = dt1;\\n\\n\\t\\t\\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\\n\\t\\t\\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\\n\\t\\t\\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\\n\\n\\t\\t} else if ( this.curveType === 'catmullrom' ) {\\n\\n\\t\\t\\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\\n\\t\\t\\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\\n\\t\\t\\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\\n\\n\\t\\t}\\n\\n\\t\\tpoint.set(\\n\\t\\t\\tpx.calc( weight ),\\n\\t\\t\\tpy.calc( weight ),\\n\\t\\t\\tpz.calc( weight )\\n\\t\\t);\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\tCatmullRomCurve3.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.points = [];\\n\\n\\t\\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\\n\\n\\t\\t\\tvar point = source.points[ i ];\\n\\n\\t\\t\\tthis.points.push( point.clone() );\\n\\n\\t\\t}\\n\\n\\t\\tthis.closed = source.closed;\\n\\t\\tthis.curveType = source.curveType;\\n\\t\\tthis.tension = source.tension;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tCatmullRomCurve3.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.points = [];\\n\\n\\t\\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\\n\\n\\t\\t\\tvar point = this.points[ i ];\\n\\t\\t\\tdata.points.push( point.toArray() );\\n\\n\\t\\t}\\n\\n\\t\\tdata.closed = this.closed;\\n\\t\\tdata.curveType = this.curveType;\\n\\t\\tdata.tension = this.tension;\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tCatmullRomCurve3.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.points = [];\\n\\n\\t\\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\\n\\n\\t\\t\\tvar point = json.points[ i ];\\n\\t\\t\\tthis.points.push( new Vector3().fromArray( point ) );\\n\\n\\t\\t}\\n\\n\\t\\tthis.closed = json.closed;\\n\\t\\tthis.curveType = json.curveType;\\n\\t\\tthis.tension = json.tension;\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t *\\n\\t * Bezier Curves formulas obtained from\\n\\t * http://en.wikipedia.org/wiki/Bézier_curve\\n\\t */\\n\\n\\tfunction CatmullRom( t, p0, p1, p2, p3 ) {\\n\\n\\t\\tvar v0 = ( p2 - p0 ) * 0.5;\\n\\t\\tvar v1 = ( p3 - p1 ) * 0.5;\\n\\t\\tvar t2 = t * t;\\n\\t\\tvar t3 = t * t2;\\n\\t\\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\\n\\n\\t}\\n\\n\\t//\\n\\n\\tfunction QuadraticBezierP0( t, p ) {\\n\\n\\t\\tvar k = 1 - t;\\n\\t\\treturn k * k * p;\\n\\n\\t}\\n\\n\\tfunction QuadraticBezierP1( t, p ) {\\n\\n\\t\\treturn 2 * ( 1 - t ) * t * p;\\n\\n\\t}\\n\\n\\tfunction QuadraticBezierP2( t, p ) {\\n\\n\\t\\treturn t * t * p;\\n\\n\\t}\\n\\n\\tfunction QuadraticBezier( t, p0, p1, p2 ) {\\n\\n\\t\\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\\n\\t\\t\\tQuadraticBezierP2( t, p2 );\\n\\n\\t}\\n\\n\\t//\\n\\n\\tfunction CubicBezierP0( t, p ) {\\n\\n\\t\\tvar k = 1 - t;\\n\\t\\treturn k * k * k * p;\\n\\n\\t}\\n\\n\\tfunction CubicBezierP1( t, p ) {\\n\\n\\t\\tvar k = 1 - t;\\n\\t\\treturn 3 * k * k * t * p;\\n\\n\\t}\\n\\n\\tfunction CubicBezierP2( t, p ) {\\n\\n\\t\\treturn 3 * ( 1 - t ) * t * t * p;\\n\\n\\t}\\n\\n\\tfunction CubicBezierP3( t, p ) {\\n\\n\\t\\treturn t * t * t * p;\\n\\n\\t}\\n\\n\\tfunction CubicBezier( t, p0, p1, p2, p3 ) {\\n\\n\\t\\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\\n\\t\\t\\tCubicBezierP3( t, p3 );\\n\\n\\t}\\n\\n\\tfunction CubicBezierCurve( v0, v1, v2, v3 ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'CubicBezierCurve';\\n\\n\\t\\tthis.v0 = v0 || new Vector2();\\n\\t\\tthis.v1 = v1 || new Vector2();\\n\\t\\tthis.v2 = v2 || new Vector2();\\n\\t\\tthis.v3 = v3 || new Vector2();\\n\\n\\t}\\n\\n\\tCubicBezierCurve.prototype = Object.create( Curve.prototype );\\n\\tCubicBezierCurve.prototype.constructor = CubicBezierCurve;\\n\\n\\tCubicBezierCurve.prototype.isCubicBezierCurve = true;\\n\\n\\tCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector2();\\n\\n\\t\\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\\n\\n\\t\\tpoint.set(\\n\\t\\t\\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\\n\\t\\t\\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\\n\\t\\t);\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\tCubicBezierCurve.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.v0.copy( source.v0 );\\n\\t\\tthis.v1.copy( source.v1 );\\n\\t\\tthis.v2.copy( source.v2 );\\n\\t\\tthis.v3.copy( source.v3 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tCubicBezierCurve.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.v0 = this.v0.toArray();\\n\\t\\tdata.v1 = this.v1.toArray();\\n\\t\\tdata.v2 = this.v2.toArray();\\n\\t\\tdata.v3 = this.v3.toArray();\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tCubicBezierCurve.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.v0.fromArray( json.v0 );\\n\\t\\tthis.v1.fromArray( json.v1 );\\n\\t\\tthis.v2.fromArray( json.v2 );\\n\\t\\tthis.v3.fromArray( json.v3 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tfunction CubicBezierCurve3( v0, v1, v2, v3 ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'CubicBezierCurve3';\\n\\n\\t\\tthis.v0 = v0 || new Vector3();\\n\\t\\tthis.v1 = v1 || new Vector3();\\n\\t\\tthis.v2 = v2 || new Vector3();\\n\\t\\tthis.v3 = v3 || new Vector3();\\n\\n\\t}\\n\\n\\tCubicBezierCurve3.prototype = Object.create( Curve.prototype );\\n\\tCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\\n\\n\\tCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\\n\\n\\tCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector3();\\n\\n\\t\\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\\n\\n\\t\\tpoint.set(\\n\\t\\t\\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\\n\\t\\t\\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\\n\\t\\t\\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\\n\\t\\t);\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\tCubicBezierCurve3.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.v0.copy( source.v0 );\\n\\t\\tthis.v1.copy( source.v1 );\\n\\t\\tthis.v2.copy( source.v2 );\\n\\t\\tthis.v3.copy( source.v3 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tCubicBezierCurve3.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.v0 = this.v0.toArray();\\n\\t\\tdata.v1 = this.v1.toArray();\\n\\t\\tdata.v2 = this.v2.toArray();\\n\\t\\tdata.v3 = this.v3.toArray();\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tCubicBezierCurve3.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.v0.fromArray( json.v0 );\\n\\t\\tthis.v1.fromArray( json.v1 );\\n\\t\\tthis.v2.fromArray( json.v2 );\\n\\t\\tthis.v3.fromArray( json.v3 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tfunction LineCurve( v1, v2 ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'LineCurve';\\n\\n\\t\\tthis.v1 = v1 || new Vector2();\\n\\t\\tthis.v2 = v2 || new Vector2();\\n\\n\\t}\\n\\n\\tLineCurve.prototype = Object.create( Curve.prototype );\\n\\tLineCurve.prototype.constructor = LineCurve;\\n\\n\\tLineCurve.prototype.isLineCurve = true;\\n\\n\\tLineCurve.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector2();\\n\\n\\t\\tif ( t === 1 ) {\\n\\n\\t\\t\\tpoint.copy( this.v2 );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tpoint.copy( this.v2 ).sub( this.v1 );\\n\\t\\t\\tpoint.multiplyScalar( t ).add( this.v1 );\\n\\n\\t\\t}\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\t// Line curve is linear, so we can overwrite default getPointAt\\n\\n\\tLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\\n\\n\\t\\treturn this.getPoint( u, optionalTarget );\\n\\n\\t};\\n\\n\\tLineCurve.prototype.getTangent = function ( /* t */ ) {\\n\\n\\t\\tvar tangent = this.v2.clone().sub( this.v1 );\\n\\n\\t\\treturn tangent.normalize();\\n\\n\\t};\\n\\n\\tLineCurve.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.v1.copy( source.v1 );\\n\\t\\tthis.v2.copy( source.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tLineCurve.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.v1 = this.v1.toArray();\\n\\t\\tdata.v2 = this.v2.toArray();\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tLineCurve.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.v1.fromArray( json.v1 );\\n\\t\\tthis.v2.fromArray( json.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tfunction LineCurve3( v1, v2 ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'LineCurve3';\\n\\n\\t\\tthis.v1 = v1 || new Vector3();\\n\\t\\tthis.v2 = v2 || new Vector3();\\n\\n\\t}\\n\\n\\tLineCurve3.prototype = Object.create( Curve.prototype );\\n\\tLineCurve3.prototype.constructor = LineCurve3;\\n\\n\\tLineCurve3.prototype.isLineCurve3 = true;\\n\\n\\tLineCurve3.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector3();\\n\\n\\t\\tif ( t === 1 ) {\\n\\n\\t\\t\\tpoint.copy( this.v2 );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tpoint.copy( this.v2 ).sub( this.v1 );\\n\\t\\t\\tpoint.multiplyScalar( t ).add( this.v1 );\\n\\n\\t\\t}\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\t// Line curve is linear, so we can overwrite default getPointAt\\n\\n\\tLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\\n\\n\\t\\treturn this.getPoint( u, optionalTarget );\\n\\n\\t};\\n\\n\\tLineCurve3.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.v1.copy( source.v1 );\\n\\t\\tthis.v2.copy( source.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tLineCurve3.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.v1 = this.v1.toArray();\\n\\t\\tdata.v2 = this.v2.toArray();\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tLineCurve3.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.v1.fromArray( json.v1 );\\n\\t\\tthis.v2.fromArray( json.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tfunction QuadraticBezierCurve( v0, v1, v2 ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'QuadraticBezierCurve';\\n\\n\\t\\tthis.v0 = v0 || new Vector2();\\n\\t\\tthis.v1 = v1 || new Vector2();\\n\\t\\tthis.v2 = v2 || new Vector2();\\n\\n\\t}\\n\\n\\tQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\\n\\tQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\\n\\n\\tQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\\n\\n\\tQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector2();\\n\\n\\t\\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\\n\\n\\t\\tpoint.set(\\n\\t\\t\\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\\n\\t\\t\\tQuadraticBezier( t, v0.y, v1.y, v2.y )\\n\\t\\t);\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\tQuadraticBezierCurve.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.v0.copy( source.v0 );\\n\\t\\tthis.v1.copy( source.v1 );\\n\\t\\tthis.v2.copy( source.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tQuadraticBezierCurve.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.v0 = this.v0.toArray();\\n\\t\\tdata.v1 = this.v1.toArray();\\n\\t\\tdata.v2 = this.v2.toArray();\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.v0.fromArray( json.v0 );\\n\\t\\tthis.v1.fromArray( json.v1 );\\n\\t\\tthis.v2.fromArray( json.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tfunction QuadraticBezierCurve3( v0, v1, v2 ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'QuadraticBezierCurve3';\\n\\n\\t\\tthis.v0 = v0 || new Vector3();\\n\\t\\tthis.v1 = v1 || new Vector3();\\n\\t\\tthis.v2 = v2 || new Vector3();\\n\\n\\t}\\n\\n\\tQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\\n\\tQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\\n\\n\\tQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\\n\\n\\tQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector3();\\n\\n\\t\\tvar v0 = this.v0, v1 = this.v1, v2 = this.v2;\\n\\n\\t\\tpoint.set(\\n\\t\\t\\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\\n\\t\\t\\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\\n\\t\\t\\tQuadraticBezier( t, v0.z, v1.z, v2.z )\\n\\t\\t);\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\tQuadraticBezierCurve3.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.v0.copy( source.v0 );\\n\\t\\tthis.v1.copy( source.v1 );\\n\\t\\tthis.v2.copy( source.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tQuadraticBezierCurve3.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.v0 = this.v0.toArray();\\n\\t\\tdata.v1 = this.v1.toArray();\\n\\t\\tdata.v2 = this.v2.toArray();\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.v0.fromArray( json.v0 );\\n\\t\\tthis.v1.fromArray( json.v1 );\\n\\t\\tthis.v2.fromArray( json.v2 );\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tfunction SplineCurve( points /* array of Vector2 */ ) {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'SplineCurve';\\n\\n\\t\\tthis.points = points || [];\\n\\n\\t}\\n\\n\\tSplineCurve.prototype = Object.create( Curve.prototype );\\n\\tSplineCurve.prototype.constructor = SplineCurve;\\n\\n\\tSplineCurve.prototype.isSplineCurve = true;\\n\\n\\tSplineCurve.prototype.getPoint = function ( t, optionalTarget ) {\\n\\n\\t\\tvar point = optionalTarget || new Vector2();\\n\\n\\t\\tvar points = this.points;\\n\\t\\tvar p = ( points.length - 1 ) * t;\\n\\n\\t\\tvar intPoint = Math.floor( p );\\n\\t\\tvar weight = p - intPoint;\\n\\n\\t\\tvar p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\\n\\t\\tvar p1 = points[ intPoint ];\\n\\t\\tvar p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\\n\\t\\tvar p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\\n\\n\\t\\tpoint.set(\\n\\t\\t\\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\\n\\t\\t\\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\\n\\t\\t);\\n\\n\\t\\treturn point;\\n\\n\\t};\\n\\n\\tSplineCurve.prototype.copy = function ( source ) {\\n\\n\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\tthis.points = [];\\n\\n\\t\\tfor ( var i = 0, l = source.points.length; i < l; i ++ ) {\\n\\n\\t\\t\\tvar point = source.points[ i ];\\n\\n\\t\\t\\tthis.points.push( point.clone() );\\n\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tSplineCurve.prototype.toJSON = function () {\\n\\n\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\tdata.points = [];\\n\\n\\t\\tfor ( var i = 0, l = this.points.length; i < l; i ++ ) {\\n\\n\\t\\t\\tvar point = this.points[ i ];\\n\\t\\t\\tdata.points.push( point.toArray() );\\n\\n\\t\\t}\\n\\n\\t\\treturn data;\\n\\n\\t};\\n\\n\\tSplineCurve.prototype.fromJSON = function ( json ) {\\n\\n\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\tthis.points = [];\\n\\n\\t\\tfor ( var i = 0, l = json.points.length; i < l; i ++ ) {\\n\\n\\t\\t\\tvar point = json.points[ i ];\\n\\t\\t\\tthis.points.push( new Vector2().fromArray( point ) );\\n\\n\\t\\t}\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\n\\n\\tvar Curves = Object.freeze({\\n\\t\\tArcCurve: ArcCurve,\\n\\t\\tCatmullRomCurve3: CatmullRomCurve3,\\n\\t\\tCubicBezierCurve: CubicBezierCurve,\\n\\t\\tCubicBezierCurve3: CubicBezierCurve3,\\n\\t\\tEllipseCurve: EllipseCurve,\\n\\t\\tLineCurve: LineCurve,\\n\\t\\tLineCurve3: LineCurve3,\\n\\t\\tQuadraticBezierCurve: QuadraticBezierCurve,\\n\\t\\tQuadraticBezierCurve3: QuadraticBezierCurve3,\\n\\t\\tSplineCurve: SplineCurve\\n\\t});\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t *\\n\\t **/\\n\\n\\t/**************************************************************\\n\\t *\\tCurved Path - a curve path is simply a array of connected\\n\\t * curves, but retains the api of a curve\\n\\t **************************************************************/\\n\\n\\tfunction CurvePath() {\\n\\n\\t\\tCurve.call( this );\\n\\n\\t\\tthis.type = 'CurvePath';\\n\\n\\t\\tthis.curves = [];\\n\\t\\tthis.autoClose = false; // Automatically closes the path\\n\\n\\t}\\n\\n\\tCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\\n\\n\\t\\tconstructor: CurvePath,\\n\\n\\t\\tadd: function ( curve ) {\\n\\n\\t\\t\\tthis.curves.push( curve );\\n\\n\\t\\t},\\n\\n\\t\\tclosePath: function () {\\n\\n\\t\\t\\t// Add a line curve if start and end of lines are not connected\\n\\t\\t\\tvar startPoint = this.curves[ 0 ].getPoint( 0 );\\n\\t\\t\\tvar endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\\n\\n\\t\\t\\tif ( ! startPoint.equals( endPoint ) ) {\\n\\n\\t\\t\\t\\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t// To get accurate point with reference to\\n\\t\\t// entire path distance at time t,\\n\\t\\t// following has to be done:\\n\\n\\t\\t// 1. Length of each sub path have to be known\\n\\t\\t// 2. Locate and identify type of curve\\n\\t\\t// 3. Get t for the curve\\n\\t\\t// 4. Return curve.getPointAt(t')\\n\\n\\t\\tgetPoint: function ( t ) {\\n\\n\\t\\t\\tvar d = t * this.getLength();\\n\\t\\t\\tvar curveLengths = this.getCurveLengths();\\n\\t\\t\\tvar i = 0;\\n\\n\\t\\t\\t// To think about boundaries points.\\n\\n\\t\\t\\twhile ( i < curveLengths.length ) {\\n\\n\\t\\t\\t\\tif ( curveLengths[ i ] >= d ) {\\n\\n\\t\\t\\t\\t\\tvar diff = curveLengths[ i ] - d;\\n\\t\\t\\t\\t\\tvar curve = this.curves[ i ];\\n\\n\\t\\t\\t\\t\\tvar segmentLength = curve.getLength();\\n\\t\\t\\t\\t\\tvar u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\\n\\n\\t\\t\\t\\t\\treturn curve.getPointAt( u );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ti ++;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn null;\\n\\n\\t\\t\\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\\n\\n\\t\\t\\t\\tpoints.push( points[ 0 ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn points;\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tCurve.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.curves = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = source.curves.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar curve = source.curves[ i ];\\n\\n\\t\\t\\t\\tthis.curves.push( curve.clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.autoClose = source.autoClose;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\tvar data = Curve.prototype.toJSON.call( this );\\n\\n\\t\\t\\tdata.autoClose = this.autoClose;\\n\\t\\t\\tdata.curves = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = this.curves.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar curve = this.curves[ i ];\\n\\t\\t\\t\\tdata.curves.push( curve.toJSON() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t},\\n\\n\\t\\tfromJSON: function ( json ) {\\n\\n\\t\\t\\tCurve.prototype.fromJSON.call( this, json );\\n\\n\\t\\t\\tthis.autoClose = json.autoClose;\\n\\t\\t\\tthis.curves = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = json.curves.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar curve = json.curves[ i ];\\n\\t\\t\\t\\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * Creates free form 2d path using series of points, lines or curves.\\n\\t **/\\n\\n\\tfunction Path( points ) {\\n\\n\\t\\tCurvePath.call( this );\\n\\n\\t\\tthis.type = 'Path';\\n\\n\\t\\tthis.currentPoint = new Vector2();\\n\\n\\t\\tif ( points ) {\\n\\n\\t\\t\\tthis.setFromPoints( points );\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\\n\\n\\t\\tconstructor: Path,\\n\\n\\t\\tsetFromPoints: function ( points ) {\\n\\n\\t\\t\\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\\n\\n\\t\\t\\tfor ( var i = 1, l = points.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tthis.lineTo( points[ i ].x, points[ i ].y );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tmoveTo: function ( x, y ) {\\n\\n\\t\\t\\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\\n\\n\\t\\t},\\n\\n\\t\\tlineTo: function ( x, y ) {\\n\\n\\t\\t\\tvar curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\\n\\t\\t\\tthis.curves.push( curve );\\n\\n\\t\\t\\tthis.currentPoint.set( x, y );\\n\\n\\t\\t},\\n\\n\\t\\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\\n\\n\\t\\t\\tvar curve = new QuadraticBezierCurve(\\n\\t\\t\\t\\tthis.currentPoint.clone(),\\n\\t\\t\\t\\tnew Vector2( aCPx, aCPy ),\\n\\t\\t\\t\\tnew Vector2( aX, aY )\\n\\t\\t\\t);\\n\\n\\t\\t\\tthis.curves.push( curve );\\n\\n\\t\\t\\tthis.currentPoint.set( aX, aY );\\n\\n\\t\\t},\\n\\n\\t\\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\\n\\n\\t\\t\\tvar curve = new CubicBezierCurve(\\n\\t\\t\\t\\tthis.currentPoint.clone(),\\n\\t\\t\\t\\tnew Vector2( aCP1x, aCP1y ),\\n\\t\\t\\t\\tnew Vector2( aCP2x, aCP2y ),\\n\\t\\t\\t\\tnew Vector2( aX, aY )\\n\\t\\t\\t);\\n\\n\\t\\t\\tthis.curves.push( curve );\\n\\n\\t\\t\\tthis.currentPoint.set( aX, aY );\\n\\n\\t\\t},\\n\\n\\t\\tsplineThru: function ( pts /*Array of Vector*/ ) {\\n\\n\\t\\t\\tvar npts = [ this.currentPoint.clone() ].concat( pts );\\n\\n\\t\\t\\tvar curve = new SplineCurve( npts );\\n\\t\\t\\tthis.curves.push( curve );\\n\\n\\t\\t\\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\\n\\n\\t\\t},\\n\\n\\t\\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\\n\\n\\t\\t\\tvar x0 = this.currentPoint.x;\\n\\t\\t\\tvar y0 = this.currentPoint.y;\\n\\n\\t\\t\\tthis.absarc( aX + x0, aY + y0, aRadius,\\n\\t\\t\\t\\taStartAngle, aEndAngle, aClockwise );\\n\\n\\t\\t},\\n\\n\\t\\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\\n\\n\\t\\t\\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\\n\\n\\t\\t},\\n\\n\\t\\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\\n\\n\\t\\t\\tvar x0 = this.currentPoint.x;\\n\\t\\t\\tvar y0 = this.currentPoint.y;\\n\\n\\t\\t\\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\\n\\n\\t\\t},\\n\\n\\t\\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\\n\\n\\t\\t\\tvar curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\\n\\n\\t\\t\\tif ( this.curves.length > 0 ) {\\n\\n\\t\\t\\t\\t// if a previous curve is present, attempt to join\\n\\t\\t\\t\\tvar firstPoint = curve.getPoint( 0 );\\n\\n\\t\\t\\t\\tif ( ! firstPoint.equals( this.currentPoint ) ) {\\n\\n\\t\\t\\t\\t\\tthis.lineTo( firstPoint.x, firstPoint.y );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.curves.push( curve );\\n\\n\\t\\t\\tvar lastPoint = curve.getPoint( 1 );\\n\\t\\t\\tthis.currentPoint.copy( lastPoint );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tCurvePath.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.currentPoint.copy( source.currentPoint );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\tvar data = CurvePath.prototype.toJSON.call( this );\\n\\n\\t\\t\\tdata.currentPoint = this.currentPoint.toArray();\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t},\\n\\n\\t\\tfromJSON: function ( json ) {\\n\\n\\t\\t\\tCurvePath.prototype.fromJSON.call( this, json );\\n\\n\\t\\t\\tthis.currentPoint.fromArray( json.currentPoint );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * Defines a 2d shape plane using paths.\\n\\t **/\\n\\n\\t// STEP 1 Create a path.\\n\\t// STEP 2 Turn path into shape.\\n\\t// STEP 3 ExtrudeGeometry takes in Shape/Shapes\\n\\t// STEP 3a - Extract points from each shape, turn to vertices\\n\\t// STEP 3b - Triangulate each shape, add faces.\\n\\n\\tfunction Shape( points ) {\\n\\n\\t\\tPath.call( this, points );\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.type = 'Shape';\\n\\n\\t\\tthis.holes = [];\\n\\n\\t}\\n\\n\\tShape.prototype = Object.assign( Object.create( Path.prototype ), {\\n\\n\\t\\tconstructor: Shape,\\n\\n\\t\\tgetPointsHoles: function ( divisions ) {\\n\\n\\t\\t\\tvar holesPts = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn holesPts;\\n\\n\\t\\t},\\n\\n\\t\\t// get points of shape and holes (keypoints based on segments parameter)\\n\\n\\t\\textractPoints: function ( divisions ) {\\n\\n\\t\\t\\treturn {\\n\\n\\t\\t\\t\\tshape: this.getPoints( divisions ),\\n\\t\\t\\t\\tholes: this.getPointsHoles( divisions )\\n\\n\\t\\t\\t};\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tPath.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.holes = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = source.holes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar hole = source.holes[ i ];\\n\\n\\t\\t\\t\\tthis.holes.push( hole.clone() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\tvar data = Path.prototype.toJSON.call( this );\\n\\n\\t\\t\\tdata.uuid = this.uuid;\\n\\t\\t\\tdata.holes = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = this.holes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar hole = this.holes[ i ];\\n\\t\\t\\t\\tdata.holes.push( hole.toJSON() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t},\\n\\n\\t\\tfromJSON: function ( json ) {\\n\\n\\t\\t\\tPath.prototype.fromJSON.call( this, json );\\n\\n\\t\\t\\tthis.uuid = json.uuid;\\n\\t\\t\\tthis.holes = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = json.holes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar hole = json.holes[ i ];\\n\\t\\t\\t\\tthis.holes.push( new Path().fromJSON( hole ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction Light( color, intensity ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Light';\\n\\n\\t\\tthis.color = new Color( color );\\n\\t\\tthis.intensity = intensity !== undefined ? intensity : 1;\\n\\n\\t\\tthis.receiveShadow = undefined;\\n\\n\\t}\\n\\n\\tLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Light,\\n\\n\\t\\tisLight: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tObject3D.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.color.copy( source.color );\\n\\t\\t\\tthis.intensity = source.intensity;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar data = Object3D.prototype.toJSON.call( this, meta );\\n\\n\\t\\t\\tdata.object.color = this.color.getHex();\\n\\t\\t\\tdata.object.intensity = this.intensity;\\n\\n\\t\\t\\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\\n\\n\\t\\t\\tif ( this.distance !== undefined ) data.object.distance = this.distance;\\n\\t\\t\\tif ( this.angle !== undefined ) data.object.angle = this.angle;\\n\\t\\t\\tif ( this.decay !== undefined ) data.object.decay = this.decay;\\n\\t\\t\\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\\n\\n\\t\\t\\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction HemisphereLight( skyColor, groundColor, intensity ) {\\n\\n\\t\\tLight.call( this, skyColor, intensity );\\n\\n\\t\\tthis.type = 'HemisphereLight';\\n\\n\\t\\tthis.castShadow = undefined;\\n\\n\\t\\tthis.position.copy( Object3D.DefaultUp );\\n\\t\\tthis.updateMatrix();\\n\\n\\t\\tthis.groundColor = new Color( groundColor );\\n\\n\\t}\\n\\n\\tHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\\n\\n\\t\\tconstructor: HemisphereLight,\\n\\n\\t\\tisHemisphereLight: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tLight.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.groundColor.copy( source.groundColor );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction LightShadow( camera ) {\\n\\n\\t\\tthis.camera = camera;\\n\\n\\t\\tthis.bias = 0;\\n\\t\\tthis.radius = 1;\\n\\n\\t\\tthis.mapSize = new Vector2( 512, 512 );\\n\\n\\t\\tthis.map = null;\\n\\t\\tthis.matrix = new Matrix4();\\n\\n\\t}\\n\\n\\tObject.assign( LightShadow.prototype, {\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.camera = source.camera.clone();\\n\\n\\t\\t\\tthis.bias = source.bias;\\n\\t\\t\\tthis.radius = source.radius;\\n\\n\\t\\t\\tthis.mapSize.copy( source.mapSize );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function () {\\n\\n\\t\\t\\tvar object = {};\\n\\n\\t\\t\\tif ( this.bias !== 0 ) object.bias = this.bias;\\n\\t\\t\\tif ( this.radius !== 1 ) object.radius = this.radius;\\n\\t\\t\\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\\n\\n\\t\\t\\tobject.camera = this.camera.toJSON( false ).object;\\n\\t\\t\\tdelete object.camera.matrix;\\n\\n\\t\\t\\treturn object;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction SpotLightShadow() {\\n\\n\\t\\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\\n\\n\\t}\\n\\n\\tSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\\n\\n\\t\\tconstructor: SpotLightShadow,\\n\\n\\t\\tisSpotLightShadow: true,\\n\\n\\t\\tupdate: function ( light ) {\\n\\n\\t\\t\\tvar camera = this.camera;\\n\\n\\t\\t\\tvar fov = _Math.RAD2DEG * 2 * light.angle;\\n\\t\\t\\tvar aspect = this.mapSize.width / this.mapSize.height;\\n\\t\\t\\tvar far = light.distance || camera.far;\\n\\n\\t\\t\\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\\n\\n\\t\\t\\t\\tcamera.fov = fov;\\n\\t\\t\\t\\tcamera.aspect = aspect;\\n\\t\\t\\t\\tcamera.far = far;\\n\\t\\t\\t\\tcamera.updateProjectionMatrix();\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\\n\\n\\t\\tLight.call( this, color, intensity );\\n\\n\\t\\tthis.type = 'SpotLight';\\n\\n\\t\\tthis.position.copy( Object3D.DefaultUp );\\n\\t\\tthis.updateMatrix();\\n\\n\\t\\tthis.target = new Object3D();\\n\\n\\t\\tObject.defineProperty( this, 'power', {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\t// intensity = power per solid angle.\\n\\t\\t\\t\\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\\n\\t\\t\\t\\treturn this.intensity * Math.PI;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( power ) {\\n\\n\\t\\t\\t\\t// intensity = power per solid angle.\\n\\t\\t\\t\\t// ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\\n\\t\\t\\t\\tthis.intensity = power / Math.PI;\\n\\n\\t\\t\\t}\\n\\t\\t} );\\n\\n\\t\\tthis.distance = ( distance !== undefined ) ? distance : 0;\\n\\t\\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\\n\\t\\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\\n\\t\\tthis.decay = ( decay !== undefined ) ? decay : 1;\\t// for physically correct lights, should be 2.\\n\\n\\t\\tthis.shadow = new SpotLightShadow();\\n\\n\\t}\\n\\n\\tSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\\n\\n\\t\\tconstructor: SpotLight,\\n\\n\\t\\tisSpotLight: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tLight.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.distance = source.distance;\\n\\t\\t\\tthis.angle = source.angle;\\n\\t\\t\\tthis.penumbra = source.penumbra;\\n\\t\\t\\tthis.decay = source.decay;\\n\\n\\t\\t\\tthis.target = source.target.clone();\\n\\n\\t\\t\\tthis.shadow = source.shadow.clone();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\n\\tfunction PointLight( color, intensity, distance, decay ) {\\n\\n\\t\\tLight.call( this, color, intensity );\\n\\n\\t\\tthis.type = 'PointLight';\\n\\n\\t\\tObject.defineProperty( this, 'power', {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\t// intensity = power per solid angle.\\n\\t\\t\\t\\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\\n\\t\\t\\t\\treturn this.intensity * 4 * Math.PI;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( power ) {\\n\\n\\t\\t\\t\\t// intensity = power per solid angle.\\n\\t\\t\\t\\t// ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf\\n\\t\\t\\t\\tthis.intensity = power / ( 4 * Math.PI );\\n\\n\\t\\t\\t}\\n\\t\\t} );\\n\\n\\t\\tthis.distance = ( distance !== undefined ) ? distance : 0;\\n\\t\\tthis.decay = ( decay !== undefined ) ? decay : 1;\\t// for physically correct lights, should be 2.\\n\\n\\t\\tthis.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\\n\\n\\t}\\n\\n\\tPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\\n\\n\\t\\tconstructor: PointLight,\\n\\n\\t\\tisPointLight: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tLight.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.distance = source.distance;\\n\\t\\t\\tthis.decay = source.decay;\\n\\n\\t\\t\\tthis.shadow = source.shadow.clone();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction DirectionalLightShadow( ) {\\n\\n\\t\\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\\n\\n\\t}\\n\\n\\tDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\\n\\n\\t\\tconstructor: DirectionalLightShadow\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction DirectionalLight( color, intensity ) {\\n\\n\\t\\tLight.call( this, color, intensity );\\n\\n\\t\\tthis.type = 'DirectionalLight';\\n\\n\\t\\tthis.position.copy( Object3D.DefaultUp );\\n\\t\\tthis.updateMatrix();\\n\\n\\t\\tthis.target = new Object3D();\\n\\n\\t\\tthis.shadow = new DirectionalLightShadow();\\n\\n\\t}\\n\\n\\tDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\\n\\n\\t\\tconstructor: DirectionalLight,\\n\\n\\t\\tisDirectionalLight: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tLight.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.target = source.target.clone();\\n\\n\\t\\t\\tthis.shadow = source.shadow.clone();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction AmbientLight( color, intensity ) {\\n\\n\\t\\tLight.call( this, color, intensity );\\n\\n\\t\\tthis.type = 'AmbientLight';\\n\\n\\t\\tthis.castShadow = undefined;\\n\\n\\t}\\n\\n\\tAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\\n\\n\\t\\tconstructor: AmbientLight,\\n\\n\\t\\tisAmbientLight: true\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author abelnation / http://github.com/abelnation\\n\\t */\\n\\n\\tfunction RectAreaLight( color, intensity, width, height ) {\\n\\n\\t\\tLight.call( this, color, intensity );\\n\\n\\t\\tthis.type = 'RectAreaLight';\\n\\n\\t\\tthis.position.set( 0, 1, 0 );\\n\\t\\tthis.updateMatrix();\\n\\n\\t\\tthis.width = ( width !== undefined ) ? width : 10;\\n\\t\\tthis.height = ( height !== undefined ) ? height : 10;\\n\\n\\t\\t// TODO (abelnation): distance/decay\\n\\n\\t\\t// TODO (abelnation): update method for RectAreaLight to update transform to lookat target\\n\\n\\t\\t// TODO (abelnation): shadows\\n\\n\\t}\\n\\n\\t// TODO (abelnation): RectAreaLight update when light shape is changed\\n\\tRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\\n\\n\\t\\tconstructor: RectAreaLight,\\n\\n\\t\\tisRectAreaLight: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tLight.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.width = source.width;\\n\\t\\t\\tthis.height = source.height;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( meta ) {\\n\\n\\t\\t\\tvar data = Light.prototype.toJSON.call( this, meta );\\n\\n\\t\\t\\tdata.object.width = this.width;\\n\\t\\t\\tdata.object.height = this.height;\\n\\n\\t\\t\\treturn data;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A Track that interpolates Strings\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction StringKeyframeTrack( name, times, values, interpolation ) {\\n\\n\\t\\tKeyframeTrack.call( this, name, times, values, interpolation );\\n\\n\\t}\\n\\n\\tStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\\n\\n\\t\\tconstructor: StringKeyframeTrack,\\n\\n\\t\\tValueTypeName: 'string',\\n\\t\\tValueBufferType: Array,\\n\\n\\t\\tDefaultInterpolation: InterpolateDiscrete,\\n\\n\\t\\tInterpolantFactoryMethodLinear: undefined,\\n\\n\\t\\tInterpolantFactoryMethodSmooth: undefined\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A Track of Boolean keyframe values.\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction BooleanKeyframeTrack( name, times, values ) {\\n\\n\\t\\tKeyframeTrack.call( this, name, times, values );\\n\\n\\t}\\n\\n\\tBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\\n\\n\\t\\tconstructor: BooleanKeyframeTrack,\\n\\n\\t\\tValueTypeName: 'bool',\\n\\t\\tValueBufferType: Array,\\n\\n\\t\\tDefaultInterpolation: InterpolateDiscrete,\\n\\n\\t\\tInterpolantFactoryMethodLinear: undefined,\\n\\t\\tInterpolantFactoryMethodSmooth: undefined\\n\\n\\t\\t// Note: Actually this track could have a optimized / compressed\\n\\t\\t// representation of a single value and a custom interpolant that\\n\\t\\t// computes \\\"firstValue ^ isOdd( index )\\\".\\n\\n\\t} );\\n\\n\\t/**\\n\\t * Abstract base class of interpolants over parametric samples.\\n\\t *\\n\\t * The parameter domain is one dimensional, typically the time or a path\\n\\t * along a curve defined by the data.\\n\\t *\\n\\t * The sample values can have any dimensionality and derived classes may\\n\\t * apply special interpretations to the data.\\n\\t *\\n\\t * This class provides the interval seek in a Template Method, deferring\\n\\t * the actual interpolation to derived classes.\\n\\t *\\n\\t * Time complexity is O(1) for linear access crossing at most two points\\n\\t * and O(log N) for random access, where N is the number of positions.\\n\\t *\\n\\t * References:\\n\\t *\\n\\t * \\t\\thttp://www.oodesign.com/template-method-pattern.html\\n\\t *\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\\n\\n\\t\\tthis.parameterPositions = parameterPositions;\\n\\t\\tthis._cachedIndex = 0;\\n\\n\\t\\tthis.resultBuffer = resultBuffer !== undefined ?\\n\\t\\t\\tresultBuffer : new sampleValues.constructor( sampleSize );\\n\\t\\tthis.sampleValues = sampleValues;\\n\\t\\tthis.valueSize = sampleSize;\\n\\n\\t}\\n\\n\\tObject.assign( Interpolant.prototype, {\\n\\n\\t\\tevaluate: function ( t ) {\\n\\n\\t\\t\\tvar pp = this.parameterPositions,\\n\\t\\t\\t\\ti1 = this._cachedIndex,\\n\\n\\t\\t\\t\\tt1 = pp[ i1 ],\\n\\t\\t\\t\\tt0 = pp[ i1 - 1 ];\\n\\n\\t\\t\\tvalidate_interval: {\\n\\n\\t\\t\\t\\tseek: {\\n\\n\\t\\t\\t\\t\\tvar right;\\n\\n\\t\\t\\t\\t\\tlinear_scan: {\\n\\n\\t\\t\\t\\t\\t\\t//- See http://jsperf.com/comparison-to-undefined/3\\n\\t\\t\\t\\t\\t\\t//- slower code:\\n\\t\\t\\t\\t\\t\\t//-\\n\\t\\t\\t\\t\\t\\t//- \\t\\t\\t\\tif ( t >= t1 || t1 === undefined ) {\\n\\t\\t\\t\\t\\t\\tforward_scan: if ( ! ( t < t1 ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var giveUpAt = i1 + 2; ; ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( t1 === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( t < t0 ) break forward_scan;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// after end\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ti1 = pp.length;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tthis._cachedIndex = i1;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn this.afterEnd_( i1 - 1, t, t0 );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( i1 === giveUpAt ) break; // this loop\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tt0 = t1;\\n\\t\\t\\t\\t\\t\\t\\t\\tt1 = pp[ ++ i1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( t < t1 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// we have arrived at the sought interval\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak seek;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t// prepare binary search on the right side of the index\\n\\t\\t\\t\\t\\t\\t\\tright = pp.length;\\n\\t\\t\\t\\t\\t\\t\\tbreak linear_scan;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t//- slower code:\\n\\t\\t\\t\\t\\t\\t//-\\t\\t\\t\\t\\tif ( t < t0 || t0 === undefined ) {\\n\\t\\t\\t\\t\\t\\tif ( ! ( t >= t0 ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// looping?\\n\\n\\t\\t\\t\\t\\t\\t\\tvar t1global = pp[ 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( t < t1global ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\ti1 = 2; // + 1, using the scan for the details\\n\\t\\t\\t\\t\\t\\t\\t\\tt0 = t1global;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t// linear reverse scan\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var giveUpAt = i1 - 2; ; ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( t0 === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// before start\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tthis._cachedIndex = 0;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treturn this.beforeStart_( 0, t, t1 );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( i1 === giveUpAt ) break; // this loop\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tt1 = t0;\\n\\t\\t\\t\\t\\t\\t\\t\\tt0 = pp[ -- i1 - 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( t >= t0 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t// we have arrived at the sought interval\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbreak seek;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t// prepare binary search on the left side of the index\\n\\t\\t\\t\\t\\t\\t\\tright = i1;\\n\\t\\t\\t\\t\\t\\t\\ti1 = 0;\\n\\t\\t\\t\\t\\t\\t\\tbreak linear_scan;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// the interval is valid\\n\\n\\t\\t\\t\\t\\t\\tbreak validate_interval;\\n\\n\\t\\t\\t\\t\\t} // linear scan\\n\\n\\t\\t\\t\\t\\t// binary search\\n\\n\\t\\t\\t\\t\\twhile ( i1 < right ) {\\n\\n\\t\\t\\t\\t\\t\\tvar mid = ( i1 + right ) >>> 1;\\n\\n\\t\\t\\t\\t\\t\\tif ( t < pp[ mid ] ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tright = mid;\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\ti1 = mid + 1;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tt1 = pp[ i1 ];\\n\\t\\t\\t\\t\\tt0 = pp[ i1 - 1 ];\\n\\n\\t\\t\\t\\t\\t// check boundary cases, again\\n\\n\\t\\t\\t\\t\\tif ( t0 === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tthis._cachedIndex = 0;\\n\\t\\t\\t\\t\\t\\treturn this.beforeStart_( 0, t, t1 );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( t1 === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ti1 = pp.length;\\n\\t\\t\\t\\t\\t\\tthis._cachedIndex = i1;\\n\\t\\t\\t\\t\\t\\treturn this.afterEnd_( i1 - 1, t0, t );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} // seek\\n\\n\\t\\t\\t\\tthis._cachedIndex = i1;\\n\\n\\t\\t\\t\\tthis.intervalChanged_( i1, t0, t1 );\\n\\n\\t\\t\\t} // validate_interval\\n\\n\\t\\t\\treturn this.interpolate_( i1, t0, t, t1 );\\n\\n\\t\\t},\\n\\n\\t\\tsettings: null, // optional, subclass-specific settings structure\\n\\t\\t// Note: The indirection allows central control of many interpolants.\\n\\n\\t\\t// --- Protected interface\\n\\n\\t\\tDefaultSettings_: {},\\n\\n\\t\\tgetSettings_: function () {\\n\\n\\t\\t\\treturn this.settings || this.DefaultSettings_;\\n\\n\\t\\t},\\n\\n\\t\\tcopySampleValue_: function ( index ) {\\n\\n\\t\\t\\t// copies a sample value to the result buffer\\n\\n\\t\\t\\tvar result = this.resultBuffer,\\n\\t\\t\\t\\tvalues = this.sampleValues,\\n\\t\\t\\t\\tstride = this.valueSize,\\n\\t\\t\\t\\toffset = index * stride;\\n\\n\\t\\t\\tfor ( var i = 0; i !== stride; ++ i ) {\\n\\n\\t\\t\\t\\tresult[ i ] = values[ offset + i ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t},\\n\\n\\t\\t// Template methods for derived classes:\\n\\n\\t\\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\\n\\n\\t\\t\\tthrow new Error( 'call to abstract method' );\\n\\t\\t\\t// implementations shall return this.resultBuffer\\n\\n\\t\\t},\\n\\n\\t\\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\\n\\n\\t\\t\\t// empty\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//!\\\\ DECLARE ALIAS AFTER assign prototype !\\n\\tObject.assign( Interpolant.prototype, {\\n\\n\\t\\t//( 0, t, t0 ), returns this.resultBuffer\\n\\t\\tbeforeStart_: Interpolant.prototype.copySampleValue_,\\n\\n\\t\\t//( N-1, tN-1, t ), returns this.resultBuffer\\n\\t\\tafterEnd_: Interpolant.prototype.copySampleValue_,\\n\\n\\t} );\\n\\n\\t/**\\n\\t * Spherical linear unit quaternion interpolant.\\n\\t *\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\\n\\n\\t\\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\\n\\n\\t}\\n\\n\\tQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\\n\\n\\t\\tconstructor: QuaternionLinearInterpolant,\\n\\n\\t\\tinterpolate_: function ( i1, t0, t, t1 ) {\\n\\n\\t\\t\\tvar result = this.resultBuffer,\\n\\t\\t\\t\\tvalues = this.sampleValues,\\n\\t\\t\\t\\tstride = this.valueSize,\\n\\n\\t\\t\\t\\toffset = i1 * stride,\\n\\n\\t\\t\\t\\talpha = ( t - t0 ) / ( t1 - t0 );\\n\\n\\t\\t\\tfor ( var end = offset + stride; offset !== end; offset += 4 ) {\\n\\n\\t\\t\\t\\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A Track of quaternion keyframe values.\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\\n\\n\\t\\tKeyframeTrack.call( this, name, times, values, interpolation );\\n\\n\\t}\\n\\n\\tQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\\n\\n\\t\\tconstructor: QuaternionKeyframeTrack,\\n\\n\\t\\tValueTypeName: 'quaternion',\\n\\n\\t\\t// ValueBufferType is inherited\\n\\n\\t\\tDefaultInterpolation: InterpolateLinear,\\n\\n\\t\\tInterpolantFactoryMethodLinear: function ( result ) {\\n\\n\\t\\t\\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\\n\\n\\t\\t},\\n\\n\\t\\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A Track of keyframe values that represent color.\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction ColorKeyframeTrack( name, times, values, interpolation ) {\\n\\n\\t\\tKeyframeTrack.call( this, name, times, values, interpolation );\\n\\n\\t}\\n\\n\\tColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\\n\\n\\t\\tconstructor: ColorKeyframeTrack,\\n\\n\\t\\tValueTypeName: 'color'\\n\\n\\t\\t// ValueBufferType is inherited\\n\\n\\t\\t// DefaultInterpolation is inherited\\n\\n\\t\\t// Note: Very basic implementation and nothing special yet.\\n\\t\\t// However, this is the place for color space parameterization.\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A Track of numeric keyframe values.\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction NumberKeyframeTrack( name, times, values, interpolation ) {\\n\\n\\t\\tKeyframeTrack.call( this, name, times, values, interpolation );\\n\\n\\t}\\n\\n\\tNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\\n\\n\\t\\tconstructor: NumberKeyframeTrack,\\n\\n\\t\\tValueTypeName: 'number'\\n\\n\\t\\t// ValueBufferType is inherited\\n\\n\\t\\t// DefaultInterpolation is inherited\\n\\n\\t} );\\n\\n\\t/**\\n\\t * Fast and simple cubic spline interpolant.\\n\\t *\\n\\t * It was derived from a Hermitian construction setting the first derivative\\n\\t * at each sample position to the linear slope between neighboring positions\\n\\t * over their parameter interval.\\n\\t *\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\\n\\n\\t\\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\\n\\n\\t\\tthis._weightPrev = - 0;\\n\\t\\tthis._offsetPrev = - 0;\\n\\t\\tthis._weightNext = - 0;\\n\\t\\tthis._offsetNext = - 0;\\n\\n\\t}\\n\\n\\tCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\\n\\n\\t\\tconstructor: CubicInterpolant,\\n\\n\\t\\tDefaultSettings_: {\\n\\n\\t\\t\\tendingStart: ZeroCurvatureEnding,\\n\\t\\t\\tendingEnd: ZeroCurvatureEnding\\n\\n\\t\\t},\\n\\n\\t\\tintervalChanged_: function ( i1, t0, t1 ) {\\n\\n\\t\\t\\tvar pp = this.parameterPositions,\\n\\t\\t\\t\\tiPrev = i1 - 2,\\n\\t\\t\\t\\tiNext = i1 + 1,\\n\\n\\t\\t\\t\\ttPrev = pp[ iPrev ],\\n\\t\\t\\t\\ttNext = pp[ iNext ];\\n\\n\\t\\t\\tif ( tPrev === undefined ) {\\n\\n\\t\\t\\t\\tswitch ( this.getSettings_().endingStart ) {\\n\\n\\t\\t\\t\\t\\tcase ZeroSlopeEnding:\\n\\n\\t\\t\\t\\t\\t\\t// f'(t0) = 0\\n\\t\\t\\t\\t\\t\\tiPrev = i1;\\n\\t\\t\\t\\t\\t\\ttPrev = 2 * t0 - t1;\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase WrapAroundEnding:\\n\\n\\t\\t\\t\\t\\t\\t// use the other end of the curve\\n\\t\\t\\t\\t\\t\\tiPrev = pp.length - 2;\\n\\t\\t\\t\\t\\t\\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tdefault: // ZeroCurvatureEnding\\n\\n\\t\\t\\t\\t\\t\\t// f''(t0) = 0 a.k.a. Natural Spline\\n\\t\\t\\t\\t\\t\\tiPrev = i1;\\n\\t\\t\\t\\t\\t\\ttPrev = t1;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( tNext === undefined ) {\\n\\n\\t\\t\\t\\tswitch ( this.getSettings_().endingEnd ) {\\n\\n\\t\\t\\t\\t\\tcase ZeroSlopeEnding:\\n\\n\\t\\t\\t\\t\\t\\t// f'(tN) = 0\\n\\t\\t\\t\\t\\t\\tiNext = i1;\\n\\t\\t\\t\\t\\t\\ttNext = 2 * t1 - t0;\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase WrapAroundEnding:\\n\\n\\t\\t\\t\\t\\t\\t// use the other end of the curve\\n\\t\\t\\t\\t\\t\\tiNext = 1;\\n\\t\\t\\t\\t\\t\\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tdefault: // ZeroCurvatureEnding\\n\\n\\t\\t\\t\\t\\t\\t// f''(tN) = 0, a.k.a. Natural Spline\\n\\t\\t\\t\\t\\t\\tiNext = i1 - 1;\\n\\t\\t\\t\\t\\t\\ttNext = t0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar halfDt = ( t1 - t0 ) * 0.5,\\n\\t\\t\\t\\tstride = this.valueSize;\\n\\n\\t\\t\\tthis._weightPrev = halfDt / ( t0 - tPrev );\\n\\t\\t\\tthis._weightNext = halfDt / ( tNext - t1 );\\n\\t\\t\\tthis._offsetPrev = iPrev * stride;\\n\\t\\t\\tthis._offsetNext = iNext * stride;\\n\\n\\t\\t},\\n\\n\\t\\tinterpolate_: function ( i1, t0, t, t1 ) {\\n\\n\\t\\t\\tvar result = this.resultBuffer,\\n\\t\\t\\t\\tvalues = this.sampleValues,\\n\\t\\t\\t\\tstride = this.valueSize,\\n\\n\\t\\t\\t\\to1 = i1 * stride,\\t\\to0 = o1 - stride,\\n\\t\\t\\t\\toP = this._offsetPrev, \\toN = this._offsetNext,\\n\\t\\t\\t\\twP = this._weightPrev,\\twN = this._weightNext,\\n\\n\\t\\t\\t\\tp = ( t - t0 ) / ( t1 - t0 ),\\n\\t\\t\\t\\tpp = p * p,\\n\\t\\t\\t\\tppp = pp * p;\\n\\n\\t\\t\\t// evaluate polynomials\\n\\n\\t\\t\\tvar sP = - wP * ppp + 2 * wP * pp - wP * p;\\n\\t\\t\\tvar s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\\n\\t\\t\\tvar s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\\n\\t\\t\\tvar sN = wN * ppp - wN * pp;\\n\\n\\t\\t\\t// combine data linearly\\n\\n\\t\\t\\tfor ( var i = 0; i !== stride; ++ i ) {\\n\\n\\t\\t\\t\\tresult[ i ] =\\n\\t\\t\\t\\t\\t\\tsP * values[ oP + i ] +\\n\\t\\t\\t\\t\\t\\ts0 * values[ o0 + i ] +\\n\\t\\t\\t\\t\\t\\ts1 * values[ o1 + i ] +\\n\\t\\t\\t\\t\\t\\tsN * values[ oN + i ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\\n\\n\\t\\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\\n\\n\\t}\\n\\n\\tLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\\n\\n\\t\\tconstructor: LinearInterpolant,\\n\\n\\t\\tinterpolate_: function ( i1, t0, t, t1 ) {\\n\\n\\t\\t\\tvar result = this.resultBuffer,\\n\\t\\t\\t\\tvalues = this.sampleValues,\\n\\t\\t\\t\\tstride = this.valueSize,\\n\\n\\t\\t\\t\\toffset1 = i1 * stride,\\n\\t\\t\\t\\toffset0 = offset1 - stride,\\n\\n\\t\\t\\t\\tweight1 = ( t - t0 ) / ( t1 - t0 ),\\n\\t\\t\\t\\tweight0 = 1 - weight1;\\n\\n\\t\\t\\tfor ( var i = 0; i !== stride; ++ i ) {\\n\\n\\t\\t\\t\\tresult[ i ] =\\n\\t\\t\\t\\t\\t\\tvalues[ offset0 + i ] * weight0 +\\n\\t\\t\\t\\t\\t\\tvalues[ offset1 + i ] * weight1;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * Interpolant that evaluates to the sample value at the position preceeding\\n\\t * the parameter.\\n\\t *\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\\n\\n\\t\\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\\n\\n\\t}\\n\\n\\tDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\\n\\n\\t\\tconstructor: DiscreteInterpolant,\\n\\n\\t\\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\\n\\n\\t\\t\\treturn this.copySampleValue_( i1 - 1 );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author tschw\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t */\\n\\n\\tvar AnimationUtils = {\\n\\n\\t\\t// same as Array.prototype.slice, but also works on typed arrays\\n\\t\\tarraySlice: function ( array, from, to ) {\\n\\n\\t\\t\\tif ( AnimationUtils.isTypedArray( array ) ) {\\n\\n\\t\\t\\t\\t// in ios9 array.subarray(from, undefined) will return empty array\\n\\t\\t\\t\\t// but array.subarray(from) or array.subarray(from, len) is correct\\n\\t\\t\\t\\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn array.slice( from, to );\\n\\n\\t\\t},\\n\\n\\t\\t// converts an array to a specific type\\n\\t\\tconvertArray: function ( array, type, forceClone ) {\\n\\n\\t\\t\\tif ( ! array || // let 'undefined' and 'null' pass\\n\\t\\t\\t\\t\\t! forceClone && array.constructor === type ) return array;\\n\\n\\t\\t\\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\\n\\n\\t\\t\\t\\treturn new type( array ); // create typed array\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn Array.prototype.slice.call( array ); // create Array\\n\\n\\t\\t},\\n\\n\\t\\tisTypedArray: function ( object ) {\\n\\n\\t\\t\\treturn ArrayBuffer.isView( object ) &&\\n\\t\\t\\t\\t\\t! ( object instanceof DataView );\\n\\n\\t\\t},\\n\\n\\t\\t// returns an array by which times and values can be sorted\\n\\t\\tgetKeyframeOrder: function ( times ) {\\n\\n\\t\\t\\tfunction compareTime( i, j ) {\\n\\n\\t\\t\\t\\treturn times[ i ] - times[ j ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar n = times.length;\\n\\t\\t\\tvar result = new Array( n );\\n\\t\\t\\tfor ( var i = 0; i !== n; ++ i ) result[ i ] = i;\\n\\n\\t\\t\\tresult.sort( compareTime );\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t},\\n\\n\\t\\t// uses the array previously returned by 'getKeyframeOrder' to sort data\\n\\t\\tsortedArray: function ( values, stride, order ) {\\n\\n\\t\\t\\tvar nValues = values.length;\\n\\t\\t\\tvar result = new values.constructor( nValues );\\n\\n\\t\\t\\tfor ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\\n\\n\\t\\t\\t\\tvar srcOffset = order[ i ] * stride;\\n\\n\\t\\t\\t\\tfor ( var j = 0; j !== stride; ++ j ) {\\n\\n\\t\\t\\t\\t\\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn result;\\n\\n\\t\\t},\\n\\n\\t\\t// function for parsing AOS keyframe formats\\n\\t\\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\\n\\n\\t\\t\\tvar i = 1, key = jsonKeys[ 0 ];\\n\\n\\t\\t\\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\\n\\n\\t\\t\\t\\tkey = jsonKeys[ i ++ ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( key === undefined ) return; // no data\\n\\n\\t\\t\\tvar value = key[ valuePropertyName ];\\n\\t\\t\\tif ( value === undefined ) return; // no data\\n\\n\\t\\t\\tif ( Array.isArray( value ) ) {\\n\\n\\t\\t\\t\\tdo {\\n\\n\\t\\t\\t\\t\\tvalue = key[ valuePropertyName ];\\n\\n\\t\\t\\t\\t\\tif ( value !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ttimes.push( key.time );\\n\\t\\t\\t\\t\\t\\tvalues.push.apply( values, value ); // push all elements\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tkey = jsonKeys[ i ++ ];\\n\\n\\t\\t\\t\\t} while ( key !== undefined );\\n\\n\\t\\t\\t} else if ( value.toArray !== undefined ) {\\n\\n\\t\\t\\t\\t// ...assume THREE.Math-ish\\n\\n\\t\\t\\t\\tdo {\\n\\n\\t\\t\\t\\t\\tvalue = key[ valuePropertyName ];\\n\\n\\t\\t\\t\\t\\tif ( value !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ttimes.push( key.time );\\n\\t\\t\\t\\t\\t\\tvalue.toArray( values, values.length );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tkey = jsonKeys[ i ++ ];\\n\\n\\t\\t\\t\\t} while ( key !== undefined );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// otherwise push as-is\\n\\n\\t\\t\\t\\tdo {\\n\\n\\t\\t\\t\\t\\tvalue = key[ valuePropertyName ];\\n\\n\\t\\t\\t\\t\\tif ( value !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ttimes.push( key.time );\\n\\t\\t\\t\\t\\t\\tvalues.push( value );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tkey = jsonKeys[ i ++ ];\\n\\n\\t\\t\\t\\t} while ( key !== undefined );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t *\\n\\t * A timed sequence of keyframes for a specific property.\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction KeyframeTrack( name, times, values, interpolation ) {\\n\\n\\t\\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\\n\\t\\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\\n\\n\\t\\tthis.name = name;\\n\\n\\t\\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\\n\\t\\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\\n\\n\\t\\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\\n\\n\\t\\tthis.validate();\\n\\t\\tthis.optimize();\\n\\n\\t}\\n\\n\\t// Static methods:\\n\\n\\tObject.assign( KeyframeTrack, {\\n\\n\\t\\t// Serialization (in static context, because of constructor invocation\\n\\t\\t// and automatic invocation of .toJSON):\\n\\n\\t\\tparse: function ( json ) {\\n\\n\\t\\t\\tif ( json.type === undefined ) {\\n\\n\\t\\t\\t\\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type );\\n\\n\\t\\t\\tif ( json.times === undefined ) {\\n\\n\\t\\t\\t\\tvar times = [], values = [];\\n\\n\\t\\t\\t\\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\\n\\n\\t\\t\\t\\tjson.times = times;\\n\\t\\t\\t\\tjson.values = values;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// derived classes can define a static parse method\\n\\t\\t\\tif ( trackType.parse !== undefined ) {\\n\\n\\t\\t\\t\\treturn trackType.parse( json );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// by default, we assume a constructor compatible with the base\\n\\t\\t\\t\\treturn new trackType( json.name, json.times, json.values, json.interpolation );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( track ) {\\n\\n\\t\\t\\tvar trackType = track.constructor;\\n\\n\\t\\t\\tvar json;\\n\\n\\t\\t\\t// derived classes can define a static toJSON method\\n\\t\\t\\tif ( trackType.toJSON !== undefined ) {\\n\\n\\t\\t\\t\\tjson = trackType.toJSON( track );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// by default, we assume the data can be serialized as-is\\n\\t\\t\\t\\tjson = {\\n\\n\\t\\t\\t\\t\\t'name': track.name,\\n\\t\\t\\t\\t\\t'times': AnimationUtils.convertArray( track.times, Array ),\\n\\t\\t\\t\\t\\t'values': AnimationUtils.convertArray( track.values, Array )\\n\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\tvar interpolation = track.getInterpolation();\\n\\n\\t\\t\\t\\tif ( interpolation !== track.DefaultInterpolation ) {\\n\\n\\t\\t\\t\\t\\tjson.interpolation = interpolation;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tjson.type = track.ValueTypeName; // mandatory\\n\\n\\t\\t\\treturn json;\\n\\n\\t\\t},\\n\\n\\t\\t_getTrackTypeForValueTypeName: function ( typeName ) {\\n\\n\\t\\t\\tswitch ( typeName.toLowerCase() ) {\\n\\n\\t\\t\\t\\tcase 'scalar':\\n\\t\\t\\t\\tcase 'double':\\n\\t\\t\\t\\tcase 'float':\\n\\t\\t\\t\\tcase 'number':\\n\\t\\t\\t\\tcase 'integer':\\n\\n\\t\\t\\t\\t\\treturn NumberKeyframeTrack;\\n\\n\\t\\t\\t\\tcase 'vector':\\n\\t\\t\\t\\tcase 'vector2':\\n\\t\\t\\t\\tcase 'vector3':\\n\\t\\t\\t\\tcase 'vector4':\\n\\n\\t\\t\\t\\t\\treturn VectorKeyframeTrack;\\n\\n\\t\\t\\t\\tcase 'color':\\n\\n\\t\\t\\t\\t\\treturn ColorKeyframeTrack;\\n\\n\\t\\t\\t\\tcase 'quaternion':\\n\\n\\t\\t\\t\\t\\treturn QuaternionKeyframeTrack;\\n\\n\\t\\t\\t\\tcase 'bool':\\n\\t\\t\\t\\tcase 'boolean':\\n\\n\\t\\t\\t\\t\\treturn BooleanKeyframeTrack;\\n\\n\\t\\t\\t\\tcase 'string':\\n\\n\\t\\t\\t\\t\\treturn StringKeyframeTrack;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( KeyframeTrack.prototype, {\\n\\n\\t\\tconstructor: KeyframeTrack,\\n\\n\\t\\tTimeBufferType: Float32Array,\\n\\n\\t\\tValueBufferType: Float32Array,\\n\\n\\t\\tDefaultInterpolation: InterpolateLinear,\\n\\n\\t\\tInterpolantFactoryMethodDiscrete: function ( result ) {\\n\\n\\t\\t\\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\\n\\n\\t\\t},\\n\\n\\t\\tInterpolantFactoryMethodLinear: function ( result ) {\\n\\n\\t\\t\\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\\n\\n\\t\\t},\\n\\n\\t\\tInterpolantFactoryMethodSmooth: function ( result ) {\\n\\n\\t\\t\\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\\n\\n\\t\\t},\\n\\n\\t\\tsetInterpolation: function ( interpolation ) {\\n\\n\\t\\t\\tvar factoryMethod;\\n\\n\\t\\t\\tswitch ( interpolation ) {\\n\\n\\t\\t\\t\\tcase InterpolateDiscrete:\\n\\n\\t\\t\\t\\t\\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase InterpolateLinear:\\n\\n\\t\\t\\t\\t\\tfactoryMethod = this.InterpolantFactoryMethodLinear;\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase InterpolateSmooth:\\n\\n\\t\\t\\t\\t\\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\\n\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( factoryMethod === undefined ) {\\n\\n\\t\\t\\t\\tvar message = \\\"unsupported interpolation for \\\" +\\n\\t\\t\\t\\t\\tthis.ValueTypeName + \\\" keyframe track named \\\" + this.name;\\n\\n\\t\\t\\t\\tif ( this.createInterpolant === undefined ) {\\n\\n\\t\\t\\t\\t\\t// fall back to default, unless the default itself is messed up\\n\\t\\t\\t\\t\\tif ( interpolation !== this.DefaultInterpolation ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.setInterpolation( this.DefaultInterpolation );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tthrow new Error( message ); // fatal, in this case\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.KeyframeTrack:', message );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.createInterpolant = factoryMethod;\\n\\n\\t\\t},\\n\\n\\t\\tgetInterpolation: function () {\\n\\n\\t\\t\\tswitch ( this.createInterpolant ) {\\n\\n\\t\\t\\t\\tcase this.InterpolantFactoryMethodDiscrete:\\n\\n\\t\\t\\t\\t\\treturn InterpolateDiscrete;\\n\\n\\t\\t\\t\\tcase this.InterpolantFactoryMethodLinear:\\n\\n\\t\\t\\t\\t\\treturn InterpolateLinear;\\n\\n\\t\\t\\t\\tcase this.InterpolantFactoryMethodSmooth:\\n\\n\\t\\t\\t\\t\\treturn InterpolateSmooth;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tgetValueSize: function () {\\n\\n\\t\\t\\treturn this.values.length / this.times.length;\\n\\n\\t\\t},\\n\\n\\t\\t// move all keyframes either forwards or backwards in time\\n\\t\\tshift: function ( timeOffset ) {\\n\\n\\t\\t\\tif ( timeOffset !== 0.0 ) {\\n\\n\\t\\t\\t\\tvar times = this.times;\\n\\n\\t\\t\\t\\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\ttimes[ i ] += timeOffset;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\\n\\t\\tscale: function ( timeScale ) {\\n\\n\\t\\t\\tif ( timeScale !== 1.0 ) {\\n\\n\\t\\t\\t\\tvar times = this.times;\\n\\n\\t\\t\\t\\tfor ( var i = 0, n = times.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\ttimes[ i ] *= timeScale;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\\n\\t\\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\\n\\t\\ttrim: function ( startTime, endTime ) {\\n\\n\\t\\t\\tvar times = this.times,\\n\\t\\t\\t\\tnKeys = times.length,\\n\\t\\t\\t\\tfrom = 0,\\n\\t\\t\\t\\tto = nKeys - 1;\\n\\n\\t\\t\\twhile ( from !== nKeys && times[ from ] < startTime ) {\\n\\n\\t\\t\\t\\t++ from;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\twhile ( to !== - 1 && times[ to ] > endTime ) {\\n\\n\\t\\t\\t\\t-- to;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t++ to; // inclusive -> exclusive bound\\n\\n\\t\\t\\tif ( from !== 0 || to !== nKeys ) {\\n\\n\\t\\t\\t\\t// empty tracks are forbidden, so keep at least one keyframe\\n\\t\\t\\t\\tif ( from >= to ) to = Math.max( to, 1 ), from = to - 1;\\n\\n\\t\\t\\t\\tvar stride = this.getValueSize();\\n\\t\\t\\t\\tthis.times = AnimationUtils.arraySlice( times, from, to );\\n\\t\\t\\t\\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\\n\\t\\tvalidate: function () {\\n\\n\\t\\t\\tvar valid = true;\\n\\n\\t\\t\\tvar valueSize = this.getValueSize();\\n\\t\\t\\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\\n\\t\\t\\t\\tvalid = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar times = this.times,\\n\\t\\t\\t\\tvalues = this.values,\\n\\n\\t\\t\\t\\tnKeys = times.length;\\n\\n\\t\\t\\tif ( nKeys === 0 ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\\n\\t\\t\\t\\tvalid = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar prevTime = null;\\n\\n\\t\\t\\tfor ( var i = 0; i !== nKeys; i ++ ) {\\n\\n\\t\\t\\t\\tvar currTime = times[ i ];\\n\\n\\t\\t\\t\\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\\n\\n\\t\\t\\t\\t\\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\\n\\t\\t\\t\\t\\tvalid = false;\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( prevTime !== null && prevTime > currTime ) {\\n\\n\\t\\t\\t\\t\\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\\n\\t\\t\\t\\t\\tvalid = false;\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tprevTime = currTime;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( values !== undefined ) {\\n\\n\\t\\t\\t\\tif ( AnimationUtils.isTypedArray( values ) ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, n = values.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\t\\tvar value = values[ i ];\\n\\n\\t\\t\\t\\t\\t\\tif ( isNaN( value ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\\n\\t\\t\\t\\t\\t\\t\\tvalid = false;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn valid;\\n\\n\\t\\t},\\n\\n\\t\\t// removes equivalent sequential keys as common in morph target sequences\\n\\t\\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --\x3e (0,0,1,1,0,0)\\n\\t\\toptimize: function () {\\n\\n\\t\\t\\tvar times = this.times,\\n\\t\\t\\t\\tvalues = this.values,\\n\\t\\t\\t\\tstride = this.getValueSize(),\\n\\n\\t\\t\\t\\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\\n\\n\\t\\t\\t\\twriteIndex = 1,\\n\\t\\t\\t\\tlastIndex = times.length - 1;\\n\\n\\t\\t\\tfor ( var i = 1; i < lastIndex; ++ i ) {\\n\\n\\t\\t\\t\\tvar keep = false;\\n\\n\\t\\t\\t\\tvar time = times[ i ];\\n\\t\\t\\t\\tvar timeNext = times[ i + 1 ];\\n\\n\\t\\t\\t\\t// remove adjacent keyframes scheduled at the same time\\n\\n\\t\\t\\t\\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\\n\\n\\t\\t\\t\\t\\tif ( ! smoothInterpolation ) {\\n\\n\\t\\t\\t\\t\\t\\t// remove unnecessary keyframes same as their neighbors\\n\\n\\t\\t\\t\\t\\t\\tvar offset = i * stride,\\n\\t\\t\\t\\t\\t\\t\\toffsetP = offset - stride,\\n\\t\\t\\t\\t\\t\\t\\toffsetN = offset + stride;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var j = 0; j !== stride; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar value = values[ offset + j ];\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( value !== values[ offsetP + j ] ||\\n\\t\\t\\t\\t\\t\\t\\t\\tvalue !== values[ offsetN + j ] ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tkeep = true;\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tkeep = true;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// in-place compaction\\n\\n\\t\\t\\t\\tif ( keep ) {\\n\\n\\t\\t\\t\\t\\tif ( i !== writeIndex ) {\\n\\n\\t\\t\\t\\t\\t\\ttimes[ writeIndex ] = times[ i ];\\n\\n\\t\\t\\t\\t\\t\\tvar readOffset = i * stride,\\n\\t\\t\\t\\t\\t\\t\\twriteOffset = writeIndex * stride;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var j = 0; j !== stride; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvalues[ writeOffset + j ] = values[ readOffset + j ];\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t++ writeIndex;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// flush last keyframe (compaction looks ahead)\\n\\n\\t\\t\\tif ( lastIndex > 0 ) {\\n\\n\\t\\t\\t\\ttimes[ writeIndex ] = times[ lastIndex ];\\n\\n\\t\\t\\t\\tfor ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\\n\\n\\t\\t\\t\\t\\tvalues[ writeOffset + j ] = values[ readOffset + j ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t++ writeIndex;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( writeIndex !== times.length ) {\\n\\n\\t\\t\\t\\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\\n\\t\\t\\t\\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A Track of vectored keyframe values.\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction VectorKeyframeTrack( name, times, values, interpolation ) {\\n\\n\\t\\tKeyframeTrack.call( this, name, times, values, interpolation );\\n\\n\\t}\\n\\n\\tVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\\n\\n\\t\\tconstructor: VectorKeyframeTrack,\\n\\n\\t\\tValueTypeName: 'vector'\\n\\n\\t\\t// ValueBufferType is inherited\\n\\n\\t\\t// DefaultInterpolation is inherited\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * Reusable set of Tracks that represent an animation.\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t */\\n\\n\\tfunction AnimationClip( name, duration, tracks ) {\\n\\n\\t\\tthis.name = name;\\n\\t\\tthis.tracks = tracks;\\n\\t\\tthis.duration = ( duration !== undefined ) ? duration : - 1;\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\t// this means it should figure out its duration by scanning the tracks\\n\\t\\tif ( this.duration < 0 ) {\\n\\n\\t\\t\\tthis.resetDuration();\\n\\n\\t\\t}\\n\\n\\t\\tthis.optimize();\\n\\n\\t}\\n\\n\\tObject.assign( AnimationClip, {\\n\\n\\t\\tparse: function ( json ) {\\n\\n\\t\\t\\tvar tracks = [],\\n\\t\\t\\t\\tjsonTracks = json.tracks,\\n\\t\\t\\t\\tframeTime = 1.0 / ( json.fps || 1.0 );\\n\\n\\t\\t\\tfor ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\ttracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn new AnimationClip( json.name, json.duration, tracks );\\n\\n\\t\\t},\\n\\n\\t\\ttoJSON: function ( clip ) {\\n\\n\\t\\t\\tvar tracks = [],\\n\\t\\t\\t\\tclipTracks = clip.tracks;\\n\\n\\t\\t\\tvar json = {\\n\\n\\t\\t\\t\\t'name': clip.name,\\n\\t\\t\\t\\t'duration': clip.duration,\\n\\t\\t\\t\\t'tracks': tracks\\n\\n\\t\\t\\t};\\n\\n\\t\\t\\tfor ( var i = 0, n = clipTracks.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn json;\\n\\n\\t\\t},\\n\\n\\t\\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\\n\\n\\t\\t\\tvar numMorphTargets = morphTargetSequence.length;\\n\\t\\t\\tvar tracks = [];\\n\\n\\t\\t\\tfor ( var i = 0; i < numMorphTargets; i ++ ) {\\n\\n\\t\\t\\t\\tvar times = [];\\n\\t\\t\\t\\tvar values = [];\\n\\n\\t\\t\\t\\ttimes.push(\\n\\t\\t\\t\\t\\t( i + numMorphTargets - 1 ) % numMorphTargets,\\n\\t\\t\\t\\t\\ti,\\n\\t\\t\\t\\t\\t( i + 1 ) % numMorphTargets );\\n\\n\\t\\t\\t\\tvalues.push( 0, 1, 0 );\\n\\n\\t\\t\\t\\tvar order = AnimationUtils.getKeyframeOrder( times );\\n\\t\\t\\t\\ttimes = AnimationUtils.sortedArray( times, 1, order );\\n\\t\\t\\t\\tvalues = AnimationUtils.sortedArray( values, 1, order );\\n\\n\\t\\t\\t\\t// if there is a key at the first frame, duplicate it as the\\n\\t\\t\\t\\t// last frame as well for perfect loop.\\n\\t\\t\\t\\tif ( ! noLoop && times[ 0 ] === 0 ) {\\n\\n\\t\\t\\t\\t\\ttimes.push( numMorphTargets );\\n\\t\\t\\t\\t\\tvalues.push( values[ 0 ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\ttracks.push(\\n\\t\\t\\t\\t\\tnew NumberKeyframeTrack(\\n\\t\\t\\t\\t\\t\\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\\n\\t\\t\\t\\t\\t\\ttimes, values\\n\\t\\t\\t\\t\\t).scale( 1.0 / fps ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn new AnimationClip( name, - 1, tracks );\\n\\n\\t\\t},\\n\\n\\t\\tfindByName: function ( objectOrClipArray, name ) {\\n\\n\\t\\t\\tvar clipArray = objectOrClipArray;\\n\\n\\t\\t\\tif ( ! Array.isArray( objectOrClipArray ) ) {\\n\\n\\t\\t\\t\\tvar o = objectOrClipArray;\\n\\t\\t\\t\\tclipArray = o.geometry && o.geometry.animations || o.animations;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0; i < clipArray.length; i ++ ) {\\n\\n\\t\\t\\t\\tif ( clipArray[ i ].name === name ) {\\n\\n\\t\\t\\t\\t\\treturn clipArray[ i ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn null;\\n\\n\\t\\t},\\n\\n\\t\\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\\n\\n\\t\\t\\tvar animationToMorphTargets = {};\\n\\n\\t\\t\\t// tested with https://regex101.com/ on trick sequences\\n\\t\\t\\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\\n\\t\\t\\tvar pattern = /^([\\\\w-]*?)([\\\\d]+)$/;\\n\\n\\t\\t\\t// sort morph target names into animation groups based\\n\\t\\t\\t// patterns like Walk_001, Walk_002, Run_001, Run_002\\n\\t\\t\\tfor ( var i = 0, il = morphTargets.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\tvar morphTarget = morphTargets[ i ];\\n\\t\\t\\t\\tvar parts = morphTarget.name.match( pattern );\\n\\n\\t\\t\\t\\tif ( parts && parts.length > 1 ) {\\n\\n\\t\\t\\t\\t\\tvar name = parts[ 1 ];\\n\\n\\t\\t\\t\\t\\tvar animationMorphTargets = animationToMorphTargets[ name ];\\n\\t\\t\\t\\t\\tif ( ! animationMorphTargets ) {\\n\\n\\t\\t\\t\\t\\t\\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tanimationMorphTargets.push( morphTarget );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar clips = [];\\n\\n\\t\\t\\tfor ( var name in animationToMorphTargets ) {\\n\\n\\t\\t\\t\\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn clips;\\n\\n\\t\\t},\\n\\n\\t\\t// parse the animation.hierarchy format\\n\\t\\tparseAnimation: function ( animation, bones ) {\\n\\n\\t\\t\\tif ( ! animation ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\\n\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\\n\\n\\t\\t\\t\\t// only return track if there are actually keys.\\n\\t\\t\\t\\tif ( animationKeys.length !== 0 ) {\\n\\n\\t\\t\\t\\t\\tvar times = [];\\n\\t\\t\\t\\t\\tvar values = [];\\n\\n\\t\\t\\t\\t\\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\\n\\n\\t\\t\\t\\t\\t// empty keys are filtered out, so check again\\n\\t\\t\\t\\t\\tif ( times.length !== 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tdestTracks.push( new trackType( trackName, times, values ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t\\tvar tracks = [];\\n\\n\\t\\t\\tvar clipName = animation.name || 'default';\\n\\t\\t\\t// automatic length determination in AnimationClip.\\n\\t\\t\\tvar duration = animation.length || - 1;\\n\\t\\t\\tvar fps = animation.fps || 30;\\n\\n\\t\\t\\tvar hierarchyTracks = animation.hierarchy || [];\\n\\n\\t\\t\\tfor ( var h = 0; h < hierarchyTracks.length; h ++ ) {\\n\\n\\t\\t\\t\\tvar animationKeys = hierarchyTracks[ h ].keys;\\n\\n\\t\\t\\t\\t// skip empty tracks\\n\\t\\t\\t\\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\\n\\n\\t\\t\\t\\t// process morph targets\\n\\t\\t\\t\\tif ( animationKeys[ 0 ].morphTargets ) {\\n\\n\\t\\t\\t\\t\\t// figure out all morph targets used in this track\\n\\t\\t\\t\\t\\tvar morphTargetNames = {};\\n\\n\\t\\t\\t\\t\\tfor ( var k = 0; k < animationKeys.length; k ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( animationKeys[ k ].morphTargets ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// create a track for each morph target with all zero\\n\\t\\t\\t\\t\\t// morphTargetInfluences except for the keys in which\\n\\t\\t\\t\\t\\t// the morphTarget is named.\\n\\t\\t\\t\\t\\tfor ( var morphTargetName in morphTargetNames ) {\\n\\n\\t\\t\\t\\t\\t\\tvar times = [];\\n\\t\\t\\t\\t\\t\\tvar values = [];\\n\\n\\t\\t\\t\\t\\t\\tfor ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar animationKey = animationKeys[ k ];\\n\\n\\t\\t\\t\\t\\t\\t\\ttimes.push( animationKey.time );\\n\\t\\t\\t\\t\\t\\t\\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tduration = morphTargetNames.length * ( fps || 1.0 );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t// ...assume skeletal animation\\n\\n\\t\\t\\t\\t\\tvar boneName = '.bones[' + bones[ h ].name + ']';\\n\\n\\t\\t\\t\\t\\taddNonemptyTrack(\\n\\t\\t\\t\\t\\t\\tVectorKeyframeTrack, boneName + '.position',\\n\\t\\t\\t\\t\\t\\tanimationKeys, 'pos', tracks );\\n\\n\\t\\t\\t\\t\\taddNonemptyTrack(\\n\\t\\t\\t\\t\\t\\tQuaternionKeyframeTrack, boneName + '.quaternion',\\n\\t\\t\\t\\t\\t\\tanimationKeys, 'rot', tracks );\\n\\n\\t\\t\\t\\t\\taddNonemptyTrack(\\n\\t\\t\\t\\t\\t\\tVectorKeyframeTrack, boneName + '.scale',\\n\\t\\t\\t\\t\\t\\tanimationKeys, 'scl', tracks );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( tracks.length === 0 ) {\\n\\n\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar clip = new AnimationClip( clipName, duration, tracks );\\n\\n\\t\\t\\treturn clip;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( AnimationClip.prototype, {\\n\\n\\t\\tresetDuration: function () {\\n\\n\\t\\t\\tvar tracks = this.tracks, duration = 0;\\n\\n\\t\\t\\tfor ( var i = 0, n = tracks.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tvar track = this.tracks[ i ];\\n\\n\\t\\t\\t\\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.duration = duration;\\n\\n\\t\\t},\\n\\n\\t\\ttrim: function () {\\n\\n\\t\\t\\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\\n\\n\\t\\t\\t\\tthis.tracks[ i ].trim( 0, this.duration );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\toptimize: function () {\\n\\n\\t\\t\\tfor ( var i = 0; i < this.tracks.length; i ++ ) {\\n\\n\\t\\t\\t\\tthis.tracks[ i ].optimize();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction MaterialLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\t\\tthis.textures = {};\\n\\n\\t}\\n\\n\\tObject.assign( MaterialLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar loader = new FileLoader( scope.manager );\\n\\t\\t\\tloader.load( url, function ( text ) {\\n\\n\\t\\t\\t\\tonLoad( scope.parse( JSON.parse( text ) ) );\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t},\\n\\n\\t\\tsetTextures: function ( value ) {\\n\\n\\t\\t\\tthis.textures = value;\\n\\n\\t\\t},\\n\\n\\t\\tparse: function ( json ) {\\n\\n\\t\\t\\tvar textures = this.textures;\\n\\n\\t\\t\\tfunction getTexture( name ) {\\n\\n\\t\\t\\t\\tif ( textures[ name ] === undefined ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn textures[ name ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar material = new Materials[ json.type ]();\\n\\n\\t\\t\\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\\n\\t\\t\\tif ( json.name !== undefined ) material.name = json.name;\\n\\t\\t\\tif ( json.color !== undefined ) material.color.setHex( json.color );\\n\\t\\t\\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\\n\\t\\t\\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\\n\\t\\t\\tif ( json.emissive !== undefined ) material.emissive.setHex( json.emissive );\\n\\t\\t\\tif ( json.specular !== undefined ) material.specular.setHex( json.specular );\\n\\t\\t\\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\\n\\t\\t\\tif ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat;\\n\\t\\t\\tif ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness;\\n\\t\\t\\tif ( json.uniforms !== undefined ) material.uniforms = json.uniforms;\\n\\t\\t\\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\\n\\t\\t\\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\\n\\t\\t\\tif ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors;\\n\\t\\t\\tif ( json.fog !== undefined ) material.fog = json.fog;\\n\\t\\t\\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\\n\\t\\t\\tif ( json.blending !== undefined ) material.blending = json.blending;\\n\\t\\t\\tif ( json.side !== undefined ) material.side = json.side;\\n\\t\\t\\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\\n\\t\\t\\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\\n\\t\\t\\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\\n\\t\\t\\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\\n\\t\\t\\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\\n\\t\\t\\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\\n\\t\\t\\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\\n\\t\\t\\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\\n\\t\\t\\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\\n\\t\\t\\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\\n\\n\\t\\t\\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\\n\\n\\t\\t\\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\\n\\t\\t\\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\\n\\t\\t\\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\\n\\t\\t\\tif ( json.scale !== undefined ) material.scale = json.scale;\\n\\n\\t\\t\\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\\n\\t\\t\\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\\n\\t\\t\\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\\n\\n\\t\\t\\tif ( json.visible !== undefined ) material.visible = json.visible;\\n\\t\\t\\tif ( json.userData !== undefined ) material.userData = json.userData;\\n\\n\\t\\t\\t// Deprecated\\n\\n\\t\\t\\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\\n\\n\\t\\t\\t// for PointsMaterial\\n\\n\\t\\t\\tif ( json.size !== undefined ) material.size = json.size;\\n\\t\\t\\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\\n\\n\\t\\t\\t// maps\\n\\n\\t\\t\\tif ( json.map !== undefined ) material.map = getTexture( json.map );\\n\\n\\t\\t\\tif ( json.alphaMap !== undefined ) {\\n\\n\\t\\t\\t\\tmaterial.alphaMap = getTexture( json.alphaMap );\\n\\t\\t\\t\\tmaterial.transparent = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\\n\\t\\t\\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\\n\\n\\t\\t\\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\\n\\t\\t\\tif ( json.normalScale !== undefined ) {\\n\\n\\t\\t\\t\\tvar normalScale = json.normalScale;\\n\\n\\t\\t\\t\\tif ( Array.isArray( normalScale ) === false ) {\\n\\n\\t\\t\\t\\t\\t// Blender exporter used to export a scalar. See #7459\\n\\n\\t\\t\\t\\t\\tnormalScale = [ normalScale, normalScale ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tmaterial.normalScale = new Vector2().fromArray( normalScale );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\\n\\t\\t\\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\\n\\t\\t\\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\\n\\n\\t\\t\\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\\n\\t\\t\\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\\n\\n\\t\\t\\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\\n\\t\\t\\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\\n\\n\\t\\t\\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\\n\\n\\t\\t\\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\\n\\n\\t\\t\\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\\n\\n\\t\\t\\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\\n\\t\\t\\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\\n\\n\\t\\t\\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\\n\\t\\t\\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\\n\\n\\t\\t\\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\\n\\n\\t\\t\\treturn material;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction BufferGeometryLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t}\\n\\n\\tObject.assign( BufferGeometryLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar loader = new FileLoader( scope.manager );\\n\\t\\t\\tloader.load( url, function ( text ) {\\n\\n\\t\\t\\t\\tonLoad( scope.parse( JSON.parse( text ) ) );\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t},\\n\\n\\t\\tparse: function ( json ) {\\n\\n\\t\\t\\tvar geometry = new BufferGeometry();\\n\\n\\t\\t\\tvar index = json.data.index;\\n\\n\\t\\t\\tif ( index !== undefined ) {\\n\\n\\t\\t\\t\\tvar typedArray = new TYPED_ARRAYS[ index.type ]( index.array );\\n\\t\\t\\t\\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar attributes = json.data.attributes;\\n\\n\\t\\t\\tfor ( var key in attributes ) {\\n\\n\\t\\t\\t\\tvar attribute = attributes[ key ];\\n\\t\\t\\t\\tvar typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array );\\n\\n\\t\\t\\t\\tgeometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar groups = json.data.groups || json.data.drawcalls || json.data.offsets;\\n\\n\\t\\t\\tif ( groups !== undefined ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0, n = groups.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\tvar group = groups[ i ];\\n\\n\\t\\t\\t\\t\\tgeometry.addGroup( group.start, group.count, group.materialIndex );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar boundingSphere = json.data.boundingSphere;\\n\\n\\t\\t\\tif ( boundingSphere !== undefined ) {\\n\\n\\t\\t\\t\\tvar center = new Vector3();\\n\\n\\t\\t\\t\\tif ( boundingSphere.center !== undefined ) {\\n\\n\\t\\t\\t\\t\\tcenter.fromArray( boundingSphere.center );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn geometry;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tvar TYPED_ARRAYS = {\\n\\t\\tInt8Array: Int8Array,\\n\\t\\tUint8Array: Uint8Array,\\n\\t\\t// Workaround for IE11 pre KB2929437. See #11440\\n\\t\\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\\n\\t\\tInt16Array: Int16Array,\\n\\t\\tUint16Array: Uint16Array,\\n\\t\\tInt32Array: Int32Array,\\n\\t\\tUint32Array: Uint32Array,\\n\\t\\tFloat32Array: Float32Array,\\n\\t\\tFloat64Array: Float64Array\\n\\t};\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction Loader() {\\n\\n\\t\\tthis.onLoadStart = function () {};\\n\\t\\tthis.onLoadProgress = function () {};\\n\\t\\tthis.onLoadComplete = function () {};\\n\\n\\t}\\n\\n\\tLoader.Handlers = {\\n\\n\\t\\thandlers: [],\\n\\n\\t\\tadd: function ( regex, loader ) {\\n\\n\\t\\t\\tthis.handlers.push( regex, loader );\\n\\n\\t\\t},\\n\\n\\t\\tget: function ( file ) {\\n\\n\\t\\t\\tvar handlers = this.handlers;\\n\\n\\t\\t\\tfor ( var i = 0, l = handlers.length; i < l; i += 2 ) {\\n\\n\\t\\t\\t\\tvar regex = handlers[ i ];\\n\\t\\t\\t\\tvar loader = handlers[ i + 1 ];\\n\\n\\t\\t\\t\\tif ( regex.test( file ) ) {\\n\\n\\t\\t\\t\\t\\treturn loader;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn null;\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\tObject.assign( Loader.prototype, {\\n\\n\\t\\tcrossOrigin: undefined,\\n\\n\\t\\tinitMaterials: function ( materials, texturePath, crossOrigin ) {\\n\\n\\t\\t\\tvar array = [];\\n\\n\\t\\t\\tfor ( var i = 0; i < materials.length; ++ i ) {\\n\\n\\t\\t\\t\\tarray[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn array;\\n\\n\\t\\t},\\n\\n\\t\\tcreateMaterial: ( function () {\\n\\n\\t\\t\\tvar BlendingMode = {\\n\\t\\t\\t\\tNoBlending: NoBlending,\\n\\t\\t\\t\\tNormalBlending: NormalBlending,\\n\\t\\t\\t\\tAdditiveBlending: AdditiveBlending,\\n\\t\\t\\t\\tSubtractiveBlending: SubtractiveBlending,\\n\\t\\t\\t\\tMultiplyBlending: MultiplyBlending,\\n\\t\\t\\t\\tCustomBlending: CustomBlending\\n\\t\\t\\t};\\n\\n\\t\\t\\tvar color = new Color();\\n\\t\\t\\tvar textureLoader = new TextureLoader();\\n\\t\\t\\tvar materialLoader = new MaterialLoader();\\n\\n\\t\\t\\treturn function createMaterial( m, texturePath, crossOrigin ) {\\n\\n\\t\\t\\t\\t// convert from old material format\\n\\n\\t\\t\\t\\tvar textures = {};\\n\\n\\t\\t\\t\\tfunction loadTexture( path, repeat, offset, wrap, anisotropy ) {\\n\\n\\t\\t\\t\\t\\tvar fullPath = texturePath + path;\\n\\t\\t\\t\\t\\tvar loader = Loader.Handlers.get( fullPath );\\n\\n\\t\\t\\t\\t\\tvar texture;\\n\\n\\t\\t\\t\\t\\tif ( loader !== null ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture = loader.load( fullPath );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\ttextureLoader.setCrossOrigin( crossOrigin );\\n\\t\\t\\t\\t\\t\\ttexture = textureLoader.load( fullPath );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( repeat !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture.repeat.fromArray( repeat );\\n\\n\\t\\t\\t\\t\\t\\tif ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping;\\n\\t\\t\\t\\t\\t\\tif ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( offset !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture.offset.fromArray( offset );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( wrap !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping;\\n\\t\\t\\t\\t\\t\\tif ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping;\\n\\n\\t\\t\\t\\t\\t\\tif ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping;\\n\\t\\t\\t\\t\\t\\tif ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( anisotropy !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture.anisotropy = anisotropy;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tvar uuid = _Math.generateUUID();\\n\\n\\t\\t\\t\\t\\ttextures[ uuid ] = texture;\\n\\n\\t\\t\\t\\t\\treturn uuid;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t//\\n\\n\\t\\t\\t\\tvar json = {\\n\\t\\t\\t\\t\\tuuid: _Math.generateUUID(),\\n\\t\\t\\t\\t\\ttype: 'MeshLambertMaterial'\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\tfor ( var name in m ) {\\n\\n\\t\\t\\t\\t\\tvar value = m[ name ];\\n\\n\\t\\t\\t\\t\\tswitch ( name ) {\\n\\n\\t\\t\\t\\t\\t\\tcase 'DbgColor':\\n\\t\\t\\t\\t\\t\\tcase 'DbgIndex':\\n\\t\\t\\t\\t\\t\\tcase 'opticalDensity':\\n\\t\\t\\t\\t\\t\\tcase 'illumination':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'DbgName':\\n\\t\\t\\t\\t\\t\\t\\tjson.name = value;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'blending':\\n\\t\\t\\t\\t\\t\\t\\tjson.blending = BlendingMode[ value ];\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'colorAmbient':\\n\\t\\t\\t\\t\\t\\tcase 'mapAmbient':\\n\\t\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'colorDiffuse':\\n\\t\\t\\t\\t\\t\\t\\tjson.color = color.fromArray( value ).getHex();\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'colorSpecular':\\n\\t\\t\\t\\t\\t\\t\\tjson.specular = color.fromArray( value ).getHex();\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'colorEmissive':\\n\\t\\t\\t\\t\\t\\t\\tjson.emissive = color.fromArray( value ).getHex();\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'specularCoef':\\n\\t\\t\\t\\t\\t\\t\\tjson.shininess = value;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'shading':\\n\\t\\t\\t\\t\\t\\t\\tif ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial';\\n\\t\\t\\t\\t\\t\\t\\tif ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial';\\n\\t\\t\\t\\t\\t\\t\\tif ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial';\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapDiffuse':\\n\\t\\t\\t\\t\\t\\t\\tjson.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapDiffuseRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapDiffuseOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapDiffuseWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapDiffuseAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapEmissive':\\n\\t\\t\\t\\t\\t\\t\\tjson.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapEmissiveRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapEmissiveOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapEmissiveWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapEmissiveAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapLight':\\n\\t\\t\\t\\t\\t\\t\\tjson.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapLightRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapLightOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapLightWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapLightAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapAO':\\n\\t\\t\\t\\t\\t\\t\\tjson.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapAORepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapAOOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapAOWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapAOAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapBump':\\n\\t\\t\\t\\t\\t\\t\\tjson.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapBumpScale':\\n\\t\\t\\t\\t\\t\\t\\tjson.bumpScale = value;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapBumpRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapBumpOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapBumpWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapBumpAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapNormal':\\n\\t\\t\\t\\t\\t\\t\\tjson.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapNormalFactor':\\n\\t\\t\\t\\t\\t\\t\\tjson.normalScale = [ value, value ];\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapNormalRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapNormalOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapNormalWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapNormalAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapSpecular':\\n\\t\\t\\t\\t\\t\\t\\tjson.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapSpecularRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapSpecularOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapSpecularWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapSpecularAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapMetalness':\\n\\t\\t\\t\\t\\t\\t\\tjson.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapMetalnessRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapMetalnessOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapMetalnessWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapMetalnessAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapRoughness':\\n\\t\\t\\t\\t\\t\\t\\tjson.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapRoughnessRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapRoughnessOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapRoughnessWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapRoughnessAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapAlpha':\\n\\t\\t\\t\\t\\t\\t\\tjson.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'mapAlphaRepeat':\\n\\t\\t\\t\\t\\t\\tcase 'mapAlphaOffset':\\n\\t\\t\\t\\t\\t\\tcase 'mapAlphaWrap':\\n\\t\\t\\t\\t\\t\\tcase 'mapAlphaAnisotropy':\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'flipSided':\\n\\t\\t\\t\\t\\t\\t\\tjson.side = BackSide;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'doubleSided':\\n\\t\\t\\t\\t\\t\\t\\tjson.side = DoubleSide;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'transparency':\\n\\t\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' );\\n\\t\\t\\t\\t\\t\\t\\tjson.opacity = value;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'depthTest':\\n\\t\\t\\t\\t\\t\\tcase 'depthWrite':\\n\\t\\t\\t\\t\\t\\tcase 'colorWrite':\\n\\t\\t\\t\\t\\t\\tcase 'opacity':\\n\\t\\t\\t\\t\\t\\tcase 'reflectivity':\\n\\t\\t\\t\\t\\t\\tcase 'transparent':\\n\\t\\t\\t\\t\\t\\tcase 'visible':\\n\\t\\t\\t\\t\\t\\tcase 'wireframe':\\n\\t\\t\\t\\t\\t\\t\\tjson[ name ] = value;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tcase 'vertexColors':\\n\\t\\t\\t\\t\\t\\t\\tif ( value === true ) json.vertexColors = VertexColors;\\n\\t\\t\\t\\t\\t\\t\\tif ( value === 'face' ) json.vertexColors = FaceColors;\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t\\t\\t\\tdefault:\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.Loader.createMaterial: Unsupported', name, value );\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( json.type === 'MeshBasicMaterial' ) delete json.emissive;\\n\\t\\t\\t\\tif ( json.type !== 'MeshPhongMaterial' ) delete json.specular;\\n\\n\\t\\t\\t\\tif ( json.opacity < 1 ) json.transparent = true;\\n\\n\\t\\t\\t\\tmaterialLoader.setTextures( textures );\\n\\n\\t\\t\\t\\treturn materialLoader.parse( json );\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )()\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author Don McCurdy / https://www.donmccurdy.com\\n\\t */\\n\\n\\tvar LoaderUtils = {\\n\\n\\t\\tdecodeText: function ( array ) {\\n\\n\\t\\t\\tif ( typeof TextDecoder !== 'undefined' ) {\\n\\n\\t\\t\\t\\treturn new TextDecoder().decode( array );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\\n\\t\\t\\t// throws a \\\"maximum call stack size exceeded\\\" error for large arrays.\\n\\n\\t\\t\\tvar s = '';\\n\\n\\t\\t\\tfor ( var i = 0, il = array.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\t// Implicitly assumes little-endian.\\n\\t\\t\\t\\ts += String.fromCharCode( array[ i ] );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn s;\\n\\n\\t\\t},\\n\\n\\t\\textractUrlBase: function ( url ) {\\n\\n\\t\\t\\tvar parts = url.split( '/' );\\n\\n\\t\\t\\tif ( parts.length === 1 ) return './';\\n\\n\\t\\t\\tparts.pop();\\n\\n\\t\\t\\treturn parts.join( '/' ) + '/';\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction JSONLoader( manager ) {\\n\\n\\t\\tif ( typeof manager === 'boolean' ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' );\\n\\t\\t\\tmanager = undefined;\\n\\n\\t\\t}\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t\\tthis.withCredentials = false;\\n\\n\\t}\\n\\n\\tObject.assign( JSONLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar texturePath = this.texturePath && ( typeof this.texturePath === 'string' ) ? this.texturePath : LoaderUtils.extractUrlBase( url );\\n\\n\\t\\t\\tvar loader = new FileLoader( this.manager );\\n\\t\\t\\tloader.setWithCredentials( this.withCredentials );\\n\\t\\t\\tloader.load( url, function ( text ) {\\n\\n\\t\\t\\t\\tvar json = JSON.parse( text );\\n\\t\\t\\t\\tvar metadata = json.metadata;\\n\\n\\t\\t\\t\\tif ( metadata !== undefined ) {\\n\\n\\t\\t\\t\\t\\tvar type = metadata.type;\\n\\n\\t\\t\\t\\t\\tif ( type !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( type.toLowerCase() === 'object' ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( type.toLowerCase() === 'scene' ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar object = scope.parse( json, texturePath );\\n\\t\\t\\t\\tonLoad( object.geometry, object.materials );\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t},\\n\\n\\t\\tsetTexturePath: function ( value ) {\\n\\n\\t\\t\\tthis.texturePath = value;\\n\\n\\t\\t},\\n\\n\\t\\tparse: ( function () {\\n\\n\\t\\t\\tfunction parseModel( json, geometry ) {\\n\\n\\t\\t\\t\\tfunction isBitSet( value, position ) {\\n\\n\\t\\t\\t\\t\\treturn value & ( 1 << position );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar i, j, fi,\\n\\n\\t\\t\\t\\t\\toffset, zLength,\\n\\n\\t\\t\\t\\t\\tcolorIndex, normalIndex, uvIndex, materialIndex,\\n\\n\\t\\t\\t\\t\\ttype,\\n\\t\\t\\t\\t\\tisQuad,\\n\\t\\t\\t\\t\\thasMaterial,\\n\\t\\t\\t\\t\\thasFaceVertexUv,\\n\\t\\t\\t\\t\\thasFaceNormal, hasFaceVertexNormal,\\n\\t\\t\\t\\t\\thasFaceColor, hasFaceVertexColor,\\n\\n\\t\\t\\t\\t\\tvertex, face, faceA, faceB, hex, normal,\\n\\n\\t\\t\\t\\t\\tuvLayer, uv, u, v,\\n\\n\\t\\t\\t\\t\\tfaces = json.faces,\\n\\t\\t\\t\\t\\tvertices = json.vertices,\\n\\t\\t\\t\\t\\tnormals = json.normals,\\n\\t\\t\\t\\t\\tcolors = json.colors,\\n\\n\\t\\t\\t\\t\\tscale = json.scale,\\n\\n\\t\\t\\t\\t\\tnUvLayers = 0;\\n\\n\\n\\t\\t\\t\\tif ( json.uvs !== undefined ) {\\n\\n\\t\\t\\t\\t\\t// disregard empty arrays\\n\\n\\t\\t\\t\\t\\tfor ( i = 0; i < json.uvs.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( json.uvs[ i ].length ) nUvLayers ++;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tfor ( i = 0; i < nUvLayers; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tgeometry.faceVertexUvs[ i ] = [];\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\toffset = 0;\\n\\t\\t\\t\\tzLength = vertices.length;\\n\\n\\t\\t\\t\\twhile ( offset < zLength ) {\\n\\n\\t\\t\\t\\t\\tvertex = new Vector3();\\n\\n\\t\\t\\t\\t\\tvertex.x = vertices[ offset ++ ] * scale;\\n\\t\\t\\t\\t\\tvertex.y = vertices[ offset ++ ] * scale;\\n\\t\\t\\t\\t\\tvertex.z = vertices[ offset ++ ] * scale;\\n\\n\\t\\t\\t\\t\\tgeometry.vertices.push( vertex );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\toffset = 0;\\n\\t\\t\\t\\tzLength = faces.length;\\n\\n\\t\\t\\t\\twhile ( offset < zLength ) {\\n\\n\\t\\t\\t\\t\\ttype = faces[ offset ++ ];\\n\\n\\t\\t\\t\\t\\tisQuad = isBitSet( type, 0 );\\n\\t\\t\\t\\t\\thasMaterial = isBitSet( type, 1 );\\n\\t\\t\\t\\t\\thasFaceVertexUv = isBitSet( type, 3 );\\n\\t\\t\\t\\t\\thasFaceNormal = isBitSet( type, 4 );\\n\\t\\t\\t\\t\\thasFaceVertexNormal = isBitSet( type, 5 );\\n\\t\\t\\t\\t\\thasFaceColor = isBitSet( type, 6 );\\n\\t\\t\\t\\t\\thasFaceVertexColor = isBitSet( type, 7 );\\n\\n\\t\\t\\t\\t\\t// console.log(\\\"type\\\", type, \\\"bits\\\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\\n\\n\\t\\t\\t\\t\\tif ( isQuad ) {\\n\\n\\t\\t\\t\\t\\t\\tfaceA = new Face3();\\n\\t\\t\\t\\t\\t\\tfaceA.a = faces[ offset ];\\n\\t\\t\\t\\t\\t\\tfaceA.b = faces[ offset + 1 ];\\n\\t\\t\\t\\t\\t\\tfaceA.c = faces[ offset + 3 ];\\n\\n\\t\\t\\t\\t\\t\\tfaceB = new Face3();\\n\\t\\t\\t\\t\\t\\tfaceB.a = faces[ offset + 1 ];\\n\\t\\t\\t\\t\\t\\tfaceB.b = faces[ offset + 2 ];\\n\\t\\t\\t\\t\\t\\tfaceB.c = faces[ offset + 3 ];\\n\\n\\t\\t\\t\\t\\t\\toffset += 4;\\n\\n\\t\\t\\t\\t\\t\\tif ( hasMaterial ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tmaterialIndex = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\t\\tfaceA.materialIndex = materialIndex;\\n\\t\\t\\t\\t\\t\\t\\tfaceB.materialIndex = materialIndex;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// to get face <=> uv index correspondence\\n\\n\\t\\t\\t\\t\\t\\tfi = geometry.faces.length;\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceVertexUv ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( i = 0; i < nUvLayers; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tuvLayer = json.uvs[ i ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgeometry.faceVertexUvs[ i ][ fi ] = [];\\n\\t\\t\\t\\t\\t\\t\\t\\tgeometry.faceVertexUvs[ i ][ fi + 1 ] = [];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( j = 0; j < 4; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tuvIndex = faces[ offset ++ ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tu = uvLayer[ uvIndex * 2 ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tv = uvLayer[ uvIndex * 2 + 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tuv = new Vector2( u, v );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tif ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceNormal ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tnormalIndex = faces[ offset ++ ] * 3;\\n\\n\\t\\t\\t\\t\\t\\t\\tfaceA.normal.set(\\n\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ]\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tfaceB.normal.copy( faceA.normal );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceVertexNormal ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( i = 0; i < 4; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tnormalIndex = faces[ offset ++ ] * 3;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tnormal = new Vector3(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ]\\n\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( i !== 2 ) faceA.vertexNormals.push( normal );\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( i !== 0 ) faceB.vertexNormals.push( normal );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceColor ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tcolorIndex = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\t\\thex = colors[ colorIndex ];\\n\\n\\t\\t\\t\\t\\t\\t\\tfaceA.color.setHex( hex );\\n\\t\\t\\t\\t\\t\\t\\tfaceB.color.setHex( hex );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceVertexColor ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( i = 0; i < 4; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcolorIndex = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\t\\t\\thex = colors[ colorIndex ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) );\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tgeometry.faces.push( faceA );\\n\\t\\t\\t\\t\\t\\tgeometry.faces.push( faceB );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tface = new Face3();\\n\\t\\t\\t\\t\\t\\tface.a = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\tface.b = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\tface.c = faces[ offset ++ ];\\n\\n\\t\\t\\t\\t\\t\\tif ( hasMaterial ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tmaterialIndex = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\t\\tface.materialIndex = materialIndex;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// to get face <=> uv index correspondence\\n\\n\\t\\t\\t\\t\\t\\tfi = geometry.faces.length;\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceVertexUv ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( i = 0; i < nUvLayers; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tuvLayer = json.uvs[ i ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgeometry.faceVertexUvs[ i ][ fi ] = [];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tfor ( j = 0; j < 3; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tuvIndex = faces[ offset ++ ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tu = uvLayer[ uvIndex * 2 ];\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tv = uvLayer[ uvIndex * 2 + 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tuv = new Vector2( u, v );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tgeometry.faceVertexUvs[ i ][ fi ].push( uv );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceNormal ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tnormalIndex = faces[ offset ++ ] * 3;\\n\\n\\t\\t\\t\\t\\t\\t\\tface.normal.set(\\n\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ]\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceVertexNormal ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( i = 0; i < 3; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tnormalIndex = faces[ offset ++ ] * 3;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tnormal = new Vector3(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ++ ],\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tnormals[ normalIndex ]\\n\\t\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tface.vertexNormals.push( normal );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceColor ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tcolorIndex = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\t\\tface.color.setHex( colors[ colorIndex ] );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t\\t\\t\\tif ( hasFaceVertexColor ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( i = 0; i < 3; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcolorIndex = faces[ offset ++ ];\\n\\t\\t\\t\\t\\t\\t\\t\\tface.vertexColors.push( new Color( colors[ colorIndex ] ) );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tgeometry.faces.push( face );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction parseSkin( json, geometry ) {\\n\\n\\t\\t\\t\\tvar influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2;\\n\\n\\t\\t\\t\\tif ( json.skinWeights ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) {\\n\\n\\t\\t\\t\\t\\t\\tvar x = json.skinWeights[ i ];\\n\\t\\t\\t\\t\\t\\tvar y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0;\\n\\t\\t\\t\\t\\t\\tvar z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0;\\n\\t\\t\\t\\t\\t\\tvar w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0;\\n\\n\\t\\t\\t\\t\\t\\tgeometry.skinWeights.push( new Vector4( x, y, z, w ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( json.skinIndices ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) {\\n\\n\\t\\t\\t\\t\\t\\tvar a = json.skinIndices[ i ];\\n\\t\\t\\t\\t\\t\\tvar b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0;\\n\\t\\t\\t\\t\\t\\tvar c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0;\\n\\t\\t\\t\\t\\t\\tvar d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0;\\n\\n\\t\\t\\t\\t\\t\\tgeometry.skinIndices.push( new Vector4( a, b, c, d ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tgeometry.bones = json.bones;\\n\\n\\t\\t\\t\\tif ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\\n\\t\\t\\t\\t\\t\\tgeometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction parseMorphing( json, geometry ) {\\n\\n\\t\\t\\t\\tvar scale = json.scale;\\n\\n\\t\\t\\t\\tif ( json.morphTargets !== undefined ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tgeometry.morphTargets[ i ] = {};\\n\\t\\t\\t\\t\\t\\tgeometry.morphTargets[ i ].name = json.morphTargets[ i ].name;\\n\\t\\t\\t\\t\\t\\tgeometry.morphTargets[ i ].vertices = [];\\n\\n\\t\\t\\t\\t\\t\\tvar dstVertices = geometry.morphTargets[ i ].vertices;\\n\\t\\t\\t\\t\\t\\tvar srcVertices = json.morphTargets[ i ].vertices;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar vertex = new Vector3();\\n\\t\\t\\t\\t\\t\\t\\tvertex.x = srcVertices[ v ] * scale;\\n\\t\\t\\t\\t\\t\\t\\tvertex.y = srcVertices[ v + 1 ] * scale;\\n\\t\\t\\t\\t\\t\\t\\tvertex.z = srcVertices[ v + 2 ] * scale;\\n\\n\\t\\t\\t\\t\\t\\t\\tdstVertices.push( vertex );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( json.morphColors !== undefined && json.morphColors.length > 0 ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.JSONLoader: \\\"morphColors\\\" no longer supported. Using them as face colors.' );\\n\\n\\t\\t\\t\\t\\tvar faces = geometry.faces;\\n\\t\\t\\t\\t\\tvar morphColors = json.morphColors[ 0 ].colors;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tfaces[ i ].color.fromArray( morphColors, i * 3 );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction parseAnimations( json, geometry ) {\\n\\n\\t\\t\\t\\tvar outputAnimations = [];\\n\\n\\t\\t\\t\\t// parse old style Bone/Hierarchy animations\\n\\t\\t\\t\\tvar animations = [];\\n\\n\\t\\t\\t\\tif ( json.animation !== undefined ) {\\n\\n\\t\\t\\t\\t\\tanimations.push( json.animation );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( json.animations !== undefined ) {\\n\\n\\t\\t\\t\\t\\tif ( json.animations.length ) {\\n\\n\\t\\t\\t\\t\\t\\tanimations = animations.concat( json.animations );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tanimations.push( json.animations );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < animations.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones );\\n\\t\\t\\t\\t\\tif ( clip ) outputAnimations.push( clip );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// parse implicit morph animations\\n\\t\\t\\t\\tif ( geometry.morphTargets ) {\\n\\n\\t\\t\\t\\t\\t// TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\\n\\t\\t\\t\\t\\tvar morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 );\\n\\t\\t\\t\\t\\toutputAnimations = outputAnimations.concat( morphAnimationClips );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( outputAnimations.length > 0 ) geometry.animations = outputAnimations;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn function ( json, texturePath ) {\\n\\n\\t\\t\\t\\tif ( json.data !== undefined ) {\\n\\n\\t\\t\\t\\t\\t// Geometry 4.0 spec\\n\\t\\t\\t\\t\\tjson = json.data;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( json.scale !== undefined ) {\\n\\n\\t\\t\\t\\t\\tjson.scale = 1.0 / json.scale;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tjson.scale = 1.0;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar geometry = new Geometry();\\n\\n\\t\\t\\t\\tparseModel( json, geometry );\\n\\t\\t\\t\\tparseSkin( json, geometry );\\n\\t\\t\\t\\tparseMorphing( json, geometry );\\n\\t\\t\\t\\tparseAnimations( json, geometry );\\n\\n\\t\\t\\t\\tgeometry.computeFaceNormals();\\n\\t\\t\\t\\tgeometry.computeBoundingSphere();\\n\\n\\t\\t\\t\\tif ( json.materials === undefined || json.materials.length === 0 ) {\\n\\n\\t\\t\\t\\t\\treturn { geometry: geometry };\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tvar materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin );\\n\\n\\t\\t\\t\\t\\treturn { geometry: geometry, materials: materials };\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )()\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction ObjectLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\t\\tthis.texturePath = '';\\n\\n\\t}\\n\\n\\tObject.assign( ObjectLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tif ( this.texturePath === '' ) {\\n\\n\\t\\t\\t\\tthis.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar loader = new FileLoader( scope.manager );\\n\\t\\t\\tloader.load( url, function ( text ) {\\n\\n\\t\\t\\t\\tvar json = null;\\n\\n\\t\\t\\t\\ttry {\\n\\n\\t\\t\\t\\t\\tjson = JSON.parse( text );\\n\\n\\t\\t\\t\\t} catch ( error ) {\\n\\n\\t\\t\\t\\t\\tif ( onError !== undefined ) onError( error );\\n\\n\\t\\t\\t\\t\\tconsole.error( 'THREE:ObjectLoader: Can\\\\'t parse ' + url + '.', error.message );\\n\\n\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar metadata = json.metadata;\\n\\n\\t\\t\\t\\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\\n\\n\\t\\t\\t\\t\\tconsole.error( 'THREE.ObjectLoader: Can\\\\'t load ' + url + '. Use THREE.JSONLoader instead.' );\\n\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tscope.parse( json, onLoad );\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t},\\n\\n\\t\\tsetTexturePath: function ( value ) {\\n\\n\\t\\t\\tthis.texturePath = value;\\n\\n\\t\\t},\\n\\n\\t\\tsetCrossOrigin: function ( value ) {\\n\\n\\t\\t\\tthis.crossOrigin = value;\\n\\n\\t\\t},\\n\\n\\t\\tparse: function ( json, onLoad ) {\\n\\n\\t\\t\\tvar shapes = this.parseShape( json.shapes );\\n\\t\\t\\tvar geometries = this.parseGeometries( json.geometries, shapes );\\n\\n\\t\\t\\tvar images = this.parseImages( json.images, function () {\\n\\n\\t\\t\\t\\tif ( onLoad !== undefined ) onLoad( object );\\n\\n\\t\\t\\t} );\\n\\n\\t\\t\\tvar textures = this.parseTextures( json.textures, images );\\n\\t\\t\\tvar materials = this.parseMaterials( json.materials, textures );\\n\\n\\t\\t\\tvar object = this.parseObject( json.object, geometries, materials );\\n\\n\\t\\t\\tif ( json.animations ) {\\n\\n\\t\\t\\t\\tobject.animations = this.parseAnimations( json.animations );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( json.images === undefined || json.images.length === 0 ) {\\n\\n\\t\\t\\t\\tif ( onLoad !== undefined ) onLoad( object );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn object;\\n\\n\\t\\t},\\n\\n\\t\\tparseShape: function ( json ) {\\n\\n\\t\\t\\tvar shapes = {};\\n\\n\\t\\t\\tif ( json !== undefined ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar shape = new Shape().fromJSON( json[ i ] );\\n\\n\\t\\t\\t\\t\\tshapes[ shape.uuid ] = shape;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn shapes;\\n\\n\\t\\t},\\n\\n\\t\\tparseGeometries: function ( json, shapes ) {\\n\\n\\t\\t\\tvar geometries = {};\\n\\n\\t\\t\\tif ( json !== undefined ) {\\n\\n\\t\\t\\t\\tvar geometryLoader = new JSONLoader();\\n\\t\\t\\t\\tvar bufferGeometryLoader = new BufferGeometryLoader();\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar geometry;\\n\\t\\t\\t\\t\\tvar data = json[ i ];\\n\\n\\t\\t\\t\\t\\tswitch ( data.type ) {\\n\\n\\t\\t\\t\\t\\t\\tcase 'PlaneGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'PlaneBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.width,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.height,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.widthSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.heightSegments\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'BoxGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'BoxBufferGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'CubeGeometry': // backwards compatible\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.width,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.height,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.depth,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.widthSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.heightSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.depthSegments\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'CircleGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'CircleBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.segments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaStart,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaLength\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'CylinderGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'CylinderBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radiusTop,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radiusBottom,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.height,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radialSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.heightSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.openEnded,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaStart,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaLength\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'ConeGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'ConeBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.height,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radialSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.heightSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.openEnded,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaStart,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaLength\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'SphereGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'SphereBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.widthSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.heightSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.phiStart,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.phiLength,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaStart,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaLength\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'DodecahedronGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'DodecahedronBufferGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'IcosahedronGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'IcosahedronBufferGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'OctahedronGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'OctahedronBufferGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'TetrahedronGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'TetrahedronBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.detail\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'RingGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'RingBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.innerRadius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.outerRadius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.phiSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaStart,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.thetaLength\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'TorusGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'TorusBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.tube,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radialSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.tubularSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.arc\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'TorusKnotGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'TorusKnotBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.tube,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.tubularSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radialSegments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.p,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.q\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'LatheGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'LatheBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.points,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.segments,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.phiStart,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.phiLength\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'PolyhedronGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'PolyhedronBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.vertices,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.indices,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.radius,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.details\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'ShapeGeometry':\\n\\t\\t\\t\\t\\t\\tcase 'ShapeBufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tvar geometryShapes = [];\\n\\n\\t\\t\\t\\t\\t\\t\\tfor ( var i = 0, l = data.shapes.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar shape = shapes[ data.shapes[ i ] ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tgeometryShapes.push( shape );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = new Geometries[ data.type ](\\n\\t\\t\\t\\t\\t\\t\\t\\tgeometryShapes,\\n\\t\\t\\t\\t\\t\\t\\t\\tdata.curveSegments\\n\\t\\t\\t\\t\\t\\t\\t);\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'BufferGeometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = bufferGeometryLoader.parse( data );\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tcase 'Geometry':\\n\\n\\t\\t\\t\\t\\t\\t\\tgeometry = geometryLoader.parse( data, this.texturePath ).geometry;\\n\\n\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\tdefault:\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \\\"' + data.type + '\\\"' );\\n\\n\\t\\t\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tgeometry.uuid = data.uuid;\\n\\n\\t\\t\\t\\t\\tif ( data.name !== undefined ) geometry.name = data.name;\\n\\n\\t\\t\\t\\t\\tgeometries[ data.uuid ] = geometry;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn geometries;\\n\\n\\t\\t},\\n\\n\\t\\tparseMaterials: function ( json, textures ) {\\n\\n\\t\\t\\tvar materials = {};\\n\\n\\t\\t\\tif ( json !== undefined ) {\\n\\n\\t\\t\\t\\tvar loader = new MaterialLoader();\\n\\t\\t\\t\\tloader.setTextures( textures );\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar data = json[ i ];\\n\\n\\t\\t\\t\\t\\tif ( data.type === 'MultiMaterial' ) {\\n\\n\\t\\t\\t\\t\\t\\t// Deprecated\\n\\n\\t\\t\\t\\t\\t\\tvar array = [];\\n\\n\\t\\t\\t\\t\\t\\tfor ( var j = 0; j < data.materials.length; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tarray.push( loader.parse( data.materials[ j ] ) );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tmaterials[ data.uuid ] = array;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tmaterials[ data.uuid ] = loader.parse( data );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn materials;\\n\\n\\t\\t},\\n\\n\\t\\tparseAnimations: function ( json ) {\\n\\n\\t\\t\\tvar animations = [];\\n\\n\\t\\t\\tfor ( var i = 0; i < json.length; i ++ ) {\\n\\n\\t\\t\\t\\tvar clip = AnimationClip.parse( json[ i ] );\\n\\n\\t\\t\\t\\tanimations.push( clip );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn animations;\\n\\n\\t\\t},\\n\\n\\t\\tparseImages: function ( json, onLoad ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\t\\t\\tvar images = {};\\n\\n\\t\\t\\tfunction loadImage( url ) {\\n\\n\\t\\t\\t\\tscope.manager.itemStart( url );\\n\\n\\t\\t\\t\\treturn loader.load( url, function () {\\n\\n\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t\\t}, undefined, function () {\\n\\n\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\t\\t\\t\\t\\tscope.manager.itemError( url );\\n\\n\\t\\t\\t\\t} );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( json !== undefined && json.length > 0 ) {\\n\\n\\t\\t\\t\\tvar manager = new LoadingManager( onLoad );\\n\\n\\t\\t\\t\\tvar loader = new ImageLoader( manager );\\n\\t\\t\\t\\tloader.setCrossOrigin( this.crossOrigin );\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar image = json[ i ];\\n\\t\\t\\t\\t\\tvar path = /^(\\\\/\\\\/)|([a-z]+:(\\\\/\\\\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;\\n\\n\\t\\t\\t\\t\\timages[ image.uuid ] = loadImage( path );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn images;\\n\\n\\t\\t},\\n\\n\\t\\tparseTextures: function ( json, images ) {\\n\\n\\t\\t\\tfunction parseConstant( value, type ) {\\n\\n\\t\\t\\t\\tif ( typeof value === 'number' ) return value;\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\\n\\n\\t\\t\\t\\treturn type[ value ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar textures = {};\\n\\n\\t\\t\\tif ( json !== undefined ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = json.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar data = json[ i ];\\n\\n\\t\\t\\t\\t\\tif ( data.image === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader: No \\\"image\\\" specified for', data.uuid );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( images[ data.image ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tvar texture = new Texture( images[ data.image ] );\\n\\t\\t\\t\\t\\ttexture.needsUpdate = true;\\n\\n\\t\\t\\t\\t\\ttexture.uuid = data.uuid;\\n\\n\\t\\t\\t\\t\\tif ( data.name !== undefined ) texture.name = data.name;\\n\\n\\t\\t\\t\\t\\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\\n\\n\\t\\t\\t\\t\\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\\n\\t\\t\\t\\t\\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\\n\\t\\t\\t\\t\\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\\n\\t\\t\\t\\t\\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\\n\\n\\t\\t\\t\\t\\tif ( data.wrap !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\\n\\t\\t\\t\\t\\t\\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\\n\\t\\t\\t\\t\\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\\n\\t\\t\\t\\t\\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\\n\\n\\t\\t\\t\\t\\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\\n\\n\\t\\t\\t\\t\\ttextures[ data.uuid ] = texture;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn textures;\\n\\n\\t\\t},\\n\\n\\t\\tparseObject: function () {\\n\\n\\t\\t\\tvar matrix = new Matrix4();\\n\\n\\t\\t\\treturn function parseObject( data, geometries, materials ) {\\n\\n\\t\\t\\t\\tvar object;\\n\\n\\t\\t\\t\\tfunction getGeometry( name ) {\\n\\n\\t\\t\\t\\t\\tif ( geometries[ name ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn geometries[ name ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfunction getMaterial( name ) {\\n\\n\\t\\t\\t\\t\\tif ( name === undefined ) return undefined;\\n\\n\\t\\t\\t\\t\\tif ( Array.isArray( name ) ) {\\n\\n\\t\\t\\t\\t\\t\\tvar array = [];\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0, l = name.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar uuid = name[ i ];\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( materials[ uuid ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tarray.push( materials[ uuid ] );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\treturn array;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( materials[ name ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn materials[ name ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tswitch ( data.type ) {\\n\\n\\t\\t\\t\\t\\tcase 'Scene':\\n\\n\\t\\t\\t\\t\\t\\tobject = new Scene();\\n\\n\\t\\t\\t\\t\\t\\tif ( data.background !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( Number.isInteger( data.background ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tobject.background = new Color( data.background );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( data.fog !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( data.fog.type === 'Fog' ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\\n\\n\\t\\t\\t\\t\\t\\t\\t} else if ( data.fog.type === 'FogExp2' ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'PerspectiveCamera':\\n\\n\\t\\t\\t\\t\\t\\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\\n\\n\\t\\t\\t\\t\\t\\tif ( data.focus !== undefined ) object.focus = data.focus;\\n\\t\\t\\t\\t\\t\\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\\n\\t\\t\\t\\t\\t\\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\\n\\t\\t\\t\\t\\t\\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\\n\\t\\t\\t\\t\\t\\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'OrthographicCamera':\\n\\n\\t\\t\\t\\t\\t\\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'AmbientLight':\\n\\n\\t\\t\\t\\t\\t\\tobject = new AmbientLight( data.color, data.intensity );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'DirectionalLight':\\n\\n\\t\\t\\t\\t\\t\\tobject = new DirectionalLight( data.color, data.intensity );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'PointLight':\\n\\n\\t\\t\\t\\t\\t\\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'RectAreaLight':\\n\\n\\t\\t\\t\\t\\t\\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'SpotLight':\\n\\n\\t\\t\\t\\t\\t\\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'HemisphereLight':\\n\\n\\t\\t\\t\\t\\t\\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'SkinnedMesh':\\n\\n\\t\\t\\t\\t\\t\\tconsole.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' );\\n\\n\\t\\t\\t\\t\\tcase 'Mesh':\\n\\n\\t\\t\\t\\t\\t\\tvar geometry = getGeometry( data.geometry );\\n\\t\\t\\t\\t\\t\\tvar material = getMaterial( data.material );\\n\\n\\t\\t\\t\\t\\t\\tif ( geometry.bones && geometry.bones.length > 0 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tobject = new SkinnedMesh( geometry, material );\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tobject = new Mesh( geometry, material );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'LOD':\\n\\n\\t\\t\\t\\t\\t\\tobject = new LOD();\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'Line':\\n\\n\\t\\t\\t\\t\\t\\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'LineLoop':\\n\\n\\t\\t\\t\\t\\t\\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'LineSegments':\\n\\n\\t\\t\\t\\t\\t\\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'PointCloud':\\n\\t\\t\\t\\t\\tcase 'Points':\\n\\n\\t\\t\\t\\t\\t\\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'Sprite':\\n\\n\\t\\t\\t\\t\\t\\tobject = new Sprite( getMaterial( data.material ) );\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'Group':\\n\\n\\t\\t\\t\\t\\t\\tobject = new Group();\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tdefault:\\n\\n\\t\\t\\t\\t\\t\\tobject = new Object3D();\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tobject.uuid = data.uuid;\\n\\n\\t\\t\\t\\tif ( data.name !== undefined ) object.name = data.name;\\n\\t\\t\\t\\tif ( data.matrix !== undefined ) {\\n\\n\\t\\t\\t\\t\\tmatrix.fromArray( data.matrix );\\n\\t\\t\\t\\t\\tmatrix.decompose( object.position, object.quaternion, object.scale );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tif ( data.position !== undefined ) object.position.fromArray( data.position );\\n\\t\\t\\t\\t\\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\\n\\t\\t\\t\\t\\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\\n\\t\\t\\t\\t\\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\\n\\t\\t\\t\\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\\n\\n\\t\\t\\t\\tif ( data.shadow ) {\\n\\n\\t\\t\\t\\t\\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\\n\\t\\t\\t\\t\\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\\n\\t\\t\\t\\t\\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\\n\\t\\t\\t\\t\\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( data.visible !== undefined ) object.visible = data.visible;\\n\\t\\t\\t\\tif ( data.userData !== undefined ) object.userData = data.userData;\\n\\n\\t\\t\\t\\tif ( data.children !== undefined ) {\\n\\n\\t\\t\\t\\t\\tvar children = data.children;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < children.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tobject.add( this.parseObject( children[ i ], geometries, materials ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( data.type === 'LOD' ) {\\n\\n\\t\\t\\t\\t\\tvar levels = data.levels;\\n\\n\\t\\t\\t\\t\\tfor ( var l = 0; l < levels.length; l ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar level = levels[ l ];\\n\\t\\t\\t\\t\\t\\tvar child = object.getObjectByProperty( 'uuid', level.object );\\n\\n\\t\\t\\t\\t\\t\\tif ( child !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tobject.addLevel( child, level.distance );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn object;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}()\\n\\n\\t} );\\n\\n\\tvar TEXTURE_MAPPING = {\\n\\t\\tUVMapping: UVMapping,\\n\\t\\tCubeReflectionMapping: CubeReflectionMapping,\\n\\t\\tCubeRefractionMapping: CubeRefractionMapping,\\n\\t\\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\\n\\t\\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\\n\\t\\tSphericalReflectionMapping: SphericalReflectionMapping,\\n\\t\\tCubeUVReflectionMapping: CubeUVReflectionMapping,\\n\\t\\tCubeUVRefractionMapping: CubeUVRefractionMapping\\n\\t};\\n\\n\\tvar TEXTURE_WRAPPING = {\\n\\t\\tRepeatWrapping: RepeatWrapping,\\n\\t\\tClampToEdgeWrapping: ClampToEdgeWrapping,\\n\\t\\tMirroredRepeatWrapping: MirroredRepeatWrapping\\n\\t};\\n\\n\\tvar TEXTURE_FILTER = {\\n\\t\\tNearestFilter: NearestFilter,\\n\\t\\tNearestMipMapNearestFilter: NearestMipMapNearestFilter,\\n\\t\\tNearestMipMapLinearFilter: NearestMipMapLinearFilter,\\n\\t\\tLinearFilter: LinearFilter,\\n\\t\\tLinearMipMapNearestFilter: LinearMipMapNearestFilter,\\n\\t\\tLinearMipMapLinearFilter: LinearMipMapLinearFilter\\n\\t};\\n\\n\\t/**\\n\\t * @author thespite / http://clicktorelease.com/\\n\\t */\\n\\n\\tfunction ImageBitmapLoader( manager ) {\\n\\n\\t\\tif ( typeof createImageBitmap === 'undefined' ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\\n\\n\\t\\t}\\n\\n\\t\\tif ( typeof fetch === 'undefined' ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\\n\\n\\t\\t}\\n\\n\\t\\tthis.manager = manager !== undefined ? manager : DefaultLoadingManager;\\n\\t\\tthis.options = undefined;\\n\\n\\t}\\n\\n\\tImageBitmapLoader.prototype = {\\n\\n\\t\\tconstructor: ImageBitmapLoader,\\n\\n\\t\\tsetOptions: function setOptions( options ) {\\n\\n\\t\\t\\tthis.options = options;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tload: function load( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tif ( url === undefined ) url = '';\\n\\n\\t\\t\\tif ( this.path !== undefined ) url = this.path + url;\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar cached = Cache.get( url );\\n\\n\\t\\t\\tif ( cached !== undefined ) {\\n\\n\\t\\t\\t\\tscope.manager.itemStart( url );\\n\\n\\t\\t\\t\\tsetTimeout( function () {\\n\\n\\t\\t\\t\\t\\tif ( onLoad ) onLoad( cached );\\n\\n\\t\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t\\t}, 0 );\\n\\n\\t\\t\\t\\treturn cached;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfetch( url ).then( function ( res ) {\\n\\n\\t\\t\\t\\treturn res.blob();\\n\\n\\t\\t\\t} ).then( function ( blob ) {\\n\\n\\t\\t\\t\\treturn createImageBitmap( blob, scope.options );\\n\\n\\t\\t\\t} ).then( function ( imageBitmap ) {\\n\\n\\t\\t\\t\\tCache.add( url, imageBitmap );\\n\\n\\t\\t\\t\\tif ( onLoad ) onLoad( imageBitmap );\\n\\n\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\n\\t\\t\\t} ).catch( function ( e ) {\\n\\n\\t\\t\\t\\tif ( onError ) onError( e );\\n\\n\\t\\t\\t\\tscope.manager.itemEnd( url );\\n\\t\\t\\t\\tscope.manager.itemError( url );\\n\\n\\t\\t\\t} );\\n\\n\\t\\t},\\n\\n\\t\\tsetCrossOrigin: function ( /* value */ ) {\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetPath: function ( value ) {\\n\\n\\t\\t\\tthis.path = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * minimal class for proxing functions to Path. Replaces old \\\"extractSubpaths()\\\"\\n\\t **/\\n\\n\\tfunction ShapePath() {\\n\\n\\t\\tthis.type = 'ShapePath';\\n\\n\\t\\tthis.subPaths = [];\\n\\t\\tthis.currentPath = null;\\n\\n\\t}\\n\\n\\tObject.assign( ShapePath.prototype, {\\n\\n\\t\\tmoveTo: function ( x, y ) {\\n\\n\\t\\t\\tthis.currentPath = new Path();\\n\\t\\t\\tthis.subPaths.push( this.currentPath );\\n\\t\\t\\tthis.currentPath.moveTo( x, y );\\n\\n\\t\\t},\\n\\n\\t\\tlineTo: function ( x, y ) {\\n\\n\\t\\t\\tthis.currentPath.lineTo( x, y );\\n\\n\\t\\t},\\n\\n\\t\\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\\n\\n\\t\\t\\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\\n\\n\\t\\t},\\n\\n\\t\\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\\n\\n\\t\\t\\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\\n\\n\\t\\t},\\n\\n\\t\\tsplineThru: function ( pts ) {\\n\\n\\t\\t\\tthis.currentPath.splineThru( pts );\\n\\n\\t\\t},\\n\\n\\t\\ttoShapes: function ( isCCW, noHoles ) {\\n\\n\\t\\t\\tfunction toShapesNoHoles( inSubpaths ) {\\n\\n\\t\\t\\t\\tvar shapes = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = inSubpaths.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar tmpPath = inSubpaths[ i ];\\n\\n\\t\\t\\t\\t\\tvar tmpShape = new Shape();\\n\\t\\t\\t\\t\\ttmpShape.curves = tmpPath.curves;\\n\\n\\t\\t\\t\\t\\tshapes.push( tmpShape );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn shapes;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction isPointInsidePolygon( inPt, inPolygon ) {\\n\\n\\t\\t\\t\\tvar polyLen = inPolygon.length;\\n\\n\\t\\t\\t\\t// inPt on polygon contour => immediate success or\\n\\t\\t\\t\\t// toggling of inside/outside at every single! intersection point of an edge\\n\\t\\t\\t\\t// with the horizontal line through inPt, left of inPt\\n\\t\\t\\t\\t// not counting lowerY endpoints of edges and whole edges on that line\\n\\t\\t\\t\\tvar inside = false;\\n\\t\\t\\t\\tfor ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\\n\\n\\t\\t\\t\\t\\tvar edgeLowPt = inPolygon[ p ];\\n\\t\\t\\t\\t\\tvar edgeHighPt = inPolygon[ q ];\\n\\n\\t\\t\\t\\t\\tvar edgeDx = edgeHighPt.x - edgeLowPt.x;\\n\\t\\t\\t\\t\\tvar edgeDy = edgeHighPt.y - edgeLowPt.y;\\n\\n\\t\\t\\t\\t\\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\\n\\n\\t\\t\\t\\t\\t\\t// not parallel\\n\\t\\t\\t\\t\\t\\tif ( edgeDy < 0 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\\n\\t\\t\\t\\t\\t\\t\\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \\t\\tcontinue;\\n\\n\\t\\t\\t\\t\\t\\tif ( inPt.y === edgeLowPt.y ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( inPt.x === edgeLowPt.x )\\t\\treturn\\ttrue;\\t\\t// inPt is on contour ?\\n\\t\\t\\t\\t\\t\\t\\t// continue;\\t\\t\\t\\t// no intersection or edgeLowPt => doesn't count !!!\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\\n\\t\\t\\t\\t\\t\\t\\tif ( perpEdge === 0 )\\t\\t\\t\\treturn\\ttrue;\\t\\t// inPt is on contour ?\\n\\t\\t\\t\\t\\t\\t\\tif ( perpEdge < 0 ) \\t\\t\\t\\tcontinue;\\n\\t\\t\\t\\t\\t\\t\\tinside = ! inside;\\t\\t// true intersection left of inPt\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t// parallel or collinear\\n\\t\\t\\t\\t\\t\\tif ( inPt.y !== edgeLowPt.y ) \\t\\tcontinue;\\t\\t\\t// parallel\\n\\t\\t\\t\\t\\t\\t// edge lies on the same horizontal line as inPt\\n\\t\\t\\t\\t\\t\\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\\n\\t\\t\\t\\t\\t\\t\\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\\t\\treturn\\ttrue;\\t// inPt: Point on contour !\\n\\t\\t\\t\\t\\t\\t// continue;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn\\tinside;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar isClockWise = ShapeUtils.isClockWise;\\n\\n\\t\\t\\tvar subPaths = this.subPaths;\\n\\t\\t\\tif ( subPaths.length === 0 ) return [];\\n\\n\\t\\t\\tif ( noHoles === true )\\treturn\\ttoShapesNoHoles( subPaths );\\n\\n\\n\\t\\t\\tvar solid, tmpPath, tmpShape, shapes = [];\\n\\n\\t\\t\\tif ( subPaths.length === 1 ) {\\n\\n\\t\\t\\t\\ttmpPath = subPaths[ 0 ];\\n\\t\\t\\t\\ttmpShape = new Shape();\\n\\t\\t\\t\\ttmpShape.curves = tmpPath.curves;\\n\\t\\t\\t\\tshapes.push( tmpShape );\\n\\t\\t\\t\\treturn shapes;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\\n\\t\\t\\tholesFirst = isCCW ? ! holesFirst : holesFirst;\\n\\n\\t\\t\\t// console.log(\\\"Holes first\\\", holesFirst);\\n\\n\\t\\t\\tvar betterShapeHoles = [];\\n\\t\\t\\tvar newShapes = [];\\n\\t\\t\\tvar newShapeHoles = [];\\n\\t\\t\\tvar mainIdx = 0;\\n\\t\\t\\tvar tmpPoints;\\n\\n\\t\\t\\tnewShapes[ mainIdx ] = undefined;\\n\\t\\t\\tnewShapeHoles[ mainIdx ] = [];\\n\\n\\t\\t\\tfor ( var i = 0, l = subPaths.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\ttmpPath = subPaths[ i ];\\n\\t\\t\\t\\ttmpPoints = tmpPath.getPoints();\\n\\t\\t\\t\\tsolid = isClockWise( tmpPoints );\\n\\t\\t\\t\\tsolid = isCCW ? ! solid : solid;\\n\\n\\t\\t\\t\\tif ( solid ) {\\n\\n\\t\\t\\t\\t\\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\\tmainIdx ++;\\n\\n\\t\\t\\t\\t\\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\\n\\t\\t\\t\\t\\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\\n\\n\\t\\t\\t\\t\\tif ( holesFirst )\\tmainIdx ++;\\n\\t\\t\\t\\t\\tnewShapeHoles[ mainIdx ] = [];\\n\\n\\t\\t\\t\\t\\t//console.log('cw', i);\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\\n\\n\\t\\t\\t\\t\\t//console.log('ccw', i);\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// only Holes? -> probably all Shapes with wrong orientation\\n\\t\\t\\tif ( ! newShapes[ 0 ] )\\treturn\\ttoShapesNoHoles( subPaths );\\n\\n\\n\\t\\t\\tif ( newShapes.length > 1 ) {\\n\\n\\t\\t\\t\\tvar ambiguous = false;\\n\\t\\t\\t\\tvar toChange = [];\\n\\n\\t\\t\\t\\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\\n\\n\\t\\t\\t\\t\\tbetterShapeHoles[ sIdx ] = [];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tfor ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\\n\\n\\t\\t\\t\\t\\tvar sho = newShapeHoles[ sIdx ];\\n\\n\\t\\t\\t\\t\\tfor ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar ho = sho[ hIdx ];\\n\\t\\t\\t\\t\\t\\tvar hole_unassigned = true;\\n\\n\\t\\t\\t\\t\\t\\tfor ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( sIdx !== s2Idx )\\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( hole_unassigned ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thole_unassigned = false;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tbetterShapeHoles[ s2Idx ].push( ho );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tambiguous = true;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\tif ( hole_unassigned ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tbetterShapeHoles[ sIdx ].push( ho );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// console.log(\\\"ambiguous: \\\", ambiguous);\\n\\t\\t\\t\\tif ( toChange.length > 0 ) {\\n\\n\\t\\t\\t\\t\\t// console.log(\\\"to change: \\\", toChange);\\n\\t\\t\\t\\t\\tif ( ! ambiguous )\\tnewShapeHoles = betterShapeHoles;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar tmpHoles;\\n\\n\\t\\t\\tfor ( var i = 0, il = newShapes.length; i < il; i ++ ) {\\n\\n\\t\\t\\t\\ttmpShape = newShapes[ i ].s;\\n\\t\\t\\t\\tshapes.push( tmpShape );\\n\\t\\t\\t\\ttmpHoles = newShapeHoles[ i ];\\n\\n\\t\\t\\t\\tfor ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\ttmpShape.holes.push( tmpHoles[ j ].h );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//console.log(\\\"shape\\\", shapes);\\n\\n\\t\\t\\treturn shapes;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author zz85 / http://www.lab4games.net/zz85/blog\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Font( data ) {\\n\\n\\t\\tthis.type = 'Font';\\n\\n\\t\\tthis.data = data;\\n\\n\\t}\\n\\n\\tObject.assign( Font.prototype, {\\n\\n\\t\\tisFont: true,\\n\\n\\t\\tgenerateShapes: function ( text, size, divisions ) {\\n\\n\\t\\t\\tfunction createPaths( text ) {\\n\\n\\t\\t\\t\\tvar chars = String( text ).split( '' );\\n\\t\\t\\t\\tvar scale = size / data.resolution;\\n\\t\\t\\t\\tvar line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\\n\\n\\t\\t\\t\\tvar offsetX = 0, offsetY = 0;\\n\\n\\t\\t\\t\\tvar paths = [];\\n\\n\\t\\t\\t\\tfor ( var i = 0; i < chars.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar char = chars[ i ];\\n\\n\\t\\t\\t\\t\\tif ( char === '\\\\n' ) {\\n\\n\\t\\t\\t\\t\\t\\toffsetX = 0;\\n\\t\\t\\t\\t\\t\\toffsetY -= line_height;\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tvar ret = createPath( char, scale, offsetX, offsetY );\\n\\t\\t\\t\\t\\t\\toffsetX += ret.offsetX;\\n\\t\\t\\t\\t\\t\\tpaths.push( ret.path );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn paths;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfunction createPath( c, scale, offsetX, offsetY ) {\\n\\n\\t\\t\\t\\tvar glyph = data.glyphs[ c ] || data.glyphs[ '?' ];\\n\\n\\t\\t\\t\\tif ( ! glyph ) return;\\n\\n\\t\\t\\t\\tvar path = new ShapePath();\\n\\n\\t\\t\\t\\tvar pts = [];\\n\\t\\t\\t\\tvar x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste;\\n\\n\\t\\t\\t\\tif ( glyph.o ) {\\n\\n\\t\\t\\t\\t\\tvar outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, l = outline.length; i < l; ) {\\n\\n\\t\\t\\t\\t\\t\\tvar action = outline[ i ++ ];\\n\\n\\t\\t\\t\\t\\t\\tswitch ( action ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tcase 'm': // moveTo\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tx = outline[ i ++ ] * scale + offsetX;\\n\\t\\t\\t\\t\\t\\t\\t\\ty = outline[ i ++ ] * scale + offsetY;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tpath.moveTo( x, y );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\tcase 'l': // lineTo\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tx = outline[ i ++ ] * scale + offsetX;\\n\\t\\t\\t\\t\\t\\t\\t\\ty = outline[ i ++ ] * scale + offsetY;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tpath.lineTo( x, y );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\tcase 'q': // quadraticCurveTo\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcpx = outline[ i ++ ] * scale + offsetX;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpy = outline[ i ++ ] * scale + offsetY;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpx1 = outline[ i ++ ] * scale + offsetX;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpy1 = outline[ i ++ ] * scale + offsetY;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tlaste = pts[ pts.length - 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( laste ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcpx0 = laste.x;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcpy0 = laste.y;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\tcase 'b': // bezierCurveTo\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcpx = outline[ i ++ ] * scale + offsetX;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpy = outline[ i ++ ] * scale + offsetY;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpx1 = outline[ i ++ ] * scale + offsetX;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpy1 = outline[ i ++ ] * scale + offsetY;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpx2 = outline[ i ++ ] * scale + offsetX;\\n\\t\\t\\t\\t\\t\\t\\t\\tcpy2 = outline[ i ++ ] * scale + offsetY;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tlaste = pts[ pts.length - 1 ];\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( laste ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcpx0 = laste.x;\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcpy0 = laste.y;\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn { offsetX: glyph.ha * scale, path: path };\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tif ( size === undefined ) size = 100;\\n\\t\\t\\tif ( divisions === undefined ) divisions = 4;\\n\\n\\t\\t\\tvar data = this.data;\\n\\n\\t\\t\\tvar paths = createPaths( text );\\n\\t\\t\\tvar shapes = [];\\n\\n\\t\\t\\tfor ( var p = 0, pl = paths.length; p < pl; p ++ ) {\\n\\n\\t\\t\\t\\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn shapes;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction FontLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t}\\n\\n\\tObject.assign( FontLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tvar loader = new FileLoader( this.manager );\\n\\t\\t\\tloader.setPath( this.path );\\n\\t\\t\\tloader.load( url, function ( text ) {\\n\\n\\t\\t\\t\\tvar json;\\n\\n\\t\\t\\t\\ttry {\\n\\n\\t\\t\\t\\t\\tjson = JSON.parse( text );\\n\\n\\t\\t\\t\\t} catch ( e ) {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\\n\\t\\t\\t\\t\\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar font = scope.parse( json );\\n\\n\\t\\t\\t\\tif ( onLoad ) onLoad( font );\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t},\\n\\n\\t\\tparse: function ( json ) {\\n\\n\\t\\t\\treturn new Font( json );\\n\\n\\t\\t},\\n\\n\\t\\tsetPath: function ( value ) {\\n\\n\\t\\t\\tthis.path = value;\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tvar context;\\n\\n\\tvar AudioContext = {\\n\\n\\t\\tgetContext: function () {\\n\\n\\t\\t\\tif ( context === undefined ) {\\n\\n\\t\\t\\t\\tcontext = new ( window.AudioContext || window.webkitAudioContext )();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn context;\\n\\n\\t\\t},\\n\\n\\t\\tsetContext: function ( value ) {\\n\\n\\t\\t\\tcontext = value;\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author Reece Aaron Lecrivain / http://reecenotes.com/\\n\\t */\\n\\n\\tfunction AudioLoader( manager ) {\\n\\n\\t\\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\\n\\n\\t}\\n\\n\\tObject.assign( AudioLoader.prototype, {\\n\\n\\t\\tload: function ( url, onLoad, onProgress, onError ) {\\n\\n\\t\\t\\tvar loader = new FileLoader( this.manager );\\n\\t\\t\\tloader.setResponseType( 'arraybuffer' );\\n\\t\\t\\tloader.load( url, function ( buffer ) {\\n\\n\\t\\t\\t\\tvar context = AudioContext.getContext();\\n\\n\\t\\t\\t\\tcontext.decodeAudioData( buffer, function ( audioBuffer ) {\\n\\n\\t\\t\\t\\t\\tonLoad( audioBuffer );\\n\\n\\t\\t\\t\\t} );\\n\\n\\t\\t\\t}, onProgress, onError );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction StereoCamera() {\\n\\n\\t\\tthis.type = 'StereoCamera';\\n\\n\\t\\tthis.aspect = 1;\\n\\n\\t\\tthis.eyeSep = 0.064;\\n\\n\\t\\tthis.cameraL = new PerspectiveCamera();\\n\\t\\tthis.cameraL.layers.enable( 1 );\\n\\t\\tthis.cameraL.matrixAutoUpdate = false;\\n\\n\\t\\tthis.cameraR = new PerspectiveCamera();\\n\\t\\tthis.cameraR.layers.enable( 2 );\\n\\t\\tthis.cameraR.matrixAutoUpdate = false;\\n\\n\\t}\\n\\n\\tObject.assign( StereoCamera.prototype, {\\n\\n\\t\\tupdate: ( function () {\\n\\n\\t\\t\\tvar instance, focus, fov, aspect, near, far, zoom, eyeSep;\\n\\n\\t\\t\\tvar eyeRight = new Matrix4();\\n\\t\\t\\tvar eyeLeft = new Matrix4();\\n\\n\\t\\t\\treturn function update( camera ) {\\n\\n\\t\\t\\t\\tvar needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taspect !== camera.aspect * this.aspect || near !== camera.near ||\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tfar !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep;\\n\\n\\t\\t\\t\\tif ( needsUpdate ) {\\n\\n\\t\\t\\t\\t\\tinstance = this;\\n\\t\\t\\t\\t\\tfocus = camera.focus;\\n\\t\\t\\t\\t\\tfov = camera.fov;\\n\\t\\t\\t\\t\\taspect = camera.aspect * this.aspect;\\n\\t\\t\\t\\t\\tnear = camera.near;\\n\\t\\t\\t\\t\\tfar = camera.far;\\n\\t\\t\\t\\t\\tzoom = camera.zoom;\\n\\n\\t\\t\\t\\t\\t// Off-axis stereoscopic effect based on\\n\\t\\t\\t\\t\\t// http://paulbourke.net/stereographics/stereorender/\\n\\n\\t\\t\\t\\t\\tvar projectionMatrix = camera.projectionMatrix.clone();\\n\\t\\t\\t\\t\\teyeSep = this.eyeSep / 2;\\n\\t\\t\\t\\t\\tvar eyeSepOnProjection = eyeSep * near / focus;\\n\\t\\t\\t\\t\\tvar ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom;\\n\\t\\t\\t\\t\\tvar xmin, xmax;\\n\\n\\t\\t\\t\\t\\t// translate xOffset\\n\\n\\t\\t\\t\\t\\teyeLeft.elements[ 12 ] = - eyeSep;\\n\\t\\t\\t\\t\\teyeRight.elements[ 12 ] = eyeSep;\\n\\n\\t\\t\\t\\t\\t// for left eye\\n\\n\\t\\t\\t\\t\\txmin = - ymax * aspect + eyeSepOnProjection;\\n\\t\\t\\t\\t\\txmax = ymax * aspect + eyeSepOnProjection;\\n\\n\\t\\t\\t\\t\\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\\n\\t\\t\\t\\t\\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\\n\\n\\t\\t\\t\\t\\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\\n\\n\\t\\t\\t\\t\\t// for right eye\\n\\n\\t\\t\\t\\t\\txmin = - ymax * aspect - eyeSepOnProjection;\\n\\t\\t\\t\\t\\txmax = ymax * aspect - eyeSepOnProjection;\\n\\n\\t\\t\\t\\t\\tprojectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin );\\n\\t\\t\\t\\t\\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\\n\\n\\t\\t\\t\\t\\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft );\\n\\t\\t\\t\\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight );\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )()\\n\\n\\t} );\\n\\n\\t/**\\n\\t * Camera for rendering cube maps\\n\\t *\\t- renders scene into axis-aligned cube\\n\\t *\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction CubeCamera( near, far, cubeResolution ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'CubeCamera';\\n\\n\\t\\tvar fov = 90, aspect = 1;\\n\\n\\t\\tvar cameraPX = new PerspectiveCamera( fov, aspect, near, far );\\n\\t\\tcameraPX.up.set( 0, - 1, 0 );\\n\\t\\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\\n\\t\\tthis.add( cameraPX );\\n\\n\\t\\tvar cameraNX = new PerspectiveCamera( fov, aspect, near, far );\\n\\t\\tcameraNX.up.set( 0, - 1, 0 );\\n\\t\\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\\n\\t\\tthis.add( cameraNX );\\n\\n\\t\\tvar cameraPY = new PerspectiveCamera( fov, aspect, near, far );\\n\\t\\tcameraPY.up.set( 0, 0, 1 );\\n\\t\\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\\n\\t\\tthis.add( cameraPY );\\n\\n\\t\\tvar cameraNY = new PerspectiveCamera( fov, aspect, near, far );\\n\\t\\tcameraNY.up.set( 0, 0, - 1 );\\n\\t\\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\\n\\t\\tthis.add( cameraNY );\\n\\n\\t\\tvar cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\\n\\t\\tcameraPZ.up.set( 0, - 1, 0 );\\n\\t\\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\\n\\t\\tthis.add( cameraPZ );\\n\\n\\t\\tvar cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\\n\\t\\tcameraNZ.up.set( 0, - 1, 0 );\\n\\t\\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\\n\\t\\tthis.add( cameraNZ );\\n\\n\\t\\tvar options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter };\\n\\n\\t\\tthis.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );\\n\\t\\tthis.renderTarget.texture.name = \\\"CubeCamera\\\";\\n\\n\\t\\tthis.update = function ( renderer, scene ) {\\n\\n\\t\\t\\tif ( this.parent === null ) this.updateMatrixWorld();\\n\\n\\t\\t\\tvar renderTarget = this.renderTarget;\\n\\t\\t\\tvar generateMipmaps = renderTarget.texture.generateMipmaps;\\n\\n\\t\\t\\trenderTarget.texture.generateMipmaps = false;\\n\\n\\t\\t\\trenderTarget.activeCubeFace = 0;\\n\\t\\t\\trenderer.render( scene, cameraPX, renderTarget );\\n\\n\\t\\t\\trenderTarget.activeCubeFace = 1;\\n\\t\\t\\trenderer.render( scene, cameraNX, renderTarget );\\n\\n\\t\\t\\trenderTarget.activeCubeFace = 2;\\n\\t\\t\\trenderer.render( scene, cameraPY, renderTarget );\\n\\n\\t\\t\\trenderTarget.activeCubeFace = 3;\\n\\t\\t\\trenderer.render( scene, cameraNY, renderTarget );\\n\\n\\t\\t\\trenderTarget.activeCubeFace = 4;\\n\\t\\t\\trenderer.render( scene, cameraPZ, renderTarget );\\n\\n\\t\\t\\trenderTarget.texture.generateMipmaps = generateMipmaps;\\n\\n\\t\\t\\trenderTarget.activeCubeFace = 5;\\n\\t\\t\\trenderer.render( scene, cameraNZ, renderTarget );\\n\\n\\t\\t\\trenderer.setRenderTarget( null );\\n\\n\\t\\t};\\n\\n\\t\\tthis.clear = function ( renderer, color, depth, stencil ) {\\n\\n\\t\\t\\tvar renderTarget = this.renderTarget;\\n\\n\\t\\t\\tfor ( var i = 0; i < 6; i ++ ) {\\n\\n\\t\\t\\t\\trenderTarget.activeCubeFace = i;\\n\\t\\t\\t\\trenderer.setRenderTarget( renderTarget );\\n\\n\\t\\t\\t\\trenderer.clear( color, depth, stencil );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\trenderer.setRenderTarget( null );\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\tCubeCamera.prototype = Object.create( Object3D.prototype );\\n\\tCubeCamera.prototype.constructor = CubeCamera;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction AudioListener() {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'AudioListener';\\n\\n\\t\\tthis.context = AudioContext.getContext();\\n\\n\\t\\tthis.gain = this.context.createGain();\\n\\t\\tthis.gain.connect( this.context.destination );\\n\\n\\t\\tthis.filter = null;\\n\\n\\t}\\n\\n\\tAudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: AudioListener,\\n\\n\\t\\tgetInput: function () {\\n\\n\\t\\t\\treturn this.gain;\\n\\n\\t\\t},\\n\\n\\t\\tremoveFilter: function ( ) {\\n\\n\\t\\t\\tif ( this.filter !== null ) {\\n\\n\\t\\t\\t\\tthis.gain.disconnect( this.filter );\\n\\t\\t\\t\\tthis.filter.disconnect( this.context.destination );\\n\\t\\t\\t\\tthis.gain.connect( this.context.destination );\\n\\t\\t\\t\\tthis.filter = null;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tgetFilter: function () {\\n\\n\\t\\t\\treturn this.filter;\\n\\n\\t\\t},\\n\\n\\t\\tsetFilter: function ( value ) {\\n\\n\\t\\t\\tif ( this.filter !== null ) {\\n\\n\\t\\t\\t\\tthis.gain.disconnect( this.filter );\\n\\t\\t\\t\\tthis.filter.disconnect( this.context.destination );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.gain.disconnect( this.context.destination );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.filter = value;\\n\\t\\t\\tthis.gain.connect( this.filter );\\n\\t\\t\\tthis.filter.connect( this.context.destination );\\n\\n\\t\\t},\\n\\n\\t\\tgetMasterVolume: function () {\\n\\n\\t\\t\\treturn this.gain.gain.value;\\n\\n\\t\\t},\\n\\n\\t\\tsetMasterVolume: function ( value ) {\\n\\n\\t\\t\\tthis.gain.gain.value = value;\\n\\n\\t\\t},\\n\\n\\t\\tupdateMatrixWorld: ( function () {\\n\\n\\t\\t\\tvar position = new Vector3();\\n\\t\\t\\tvar quaternion = new Quaternion();\\n\\t\\t\\tvar scale = new Vector3();\\n\\n\\t\\t\\tvar orientation = new Vector3();\\n\\n\\t\\t\\treturn function updateMatrixWorld( force ) {\\n\\n\\t\\t\\t\\tObject3D.prototype.updateMatrixWorld.call( this, force );\\n\\n\\t\\t\\t\\tvar listener = this.context.listener;\\n\\t\\t\\t\\tvar up = this.up;\\n\\n\\t\\t\\t\\tthis.matrixWorld.decompose( position, quaternion, scale );\\n\\n\\t\\t\\t\\torientation.set( 0, 0, - 1 ).applyQuaternion( quaternion );\\n\\n\\t\\t\\t\\tif ( listener.positionX ) {\\n\\n\\t\\t\\t\\t\\tlistener.positionX.setValueAtTime( position.x, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.positionY.setValueAtTime( position.y, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.positionZ.setValueAtTime( position.z, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.forwardX.setValueAtTime( orientation.x, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.forwardY.setValueAtTime( orientation.y, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.forwardZ.setValueAtTime( orientation.z, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.upX.setValueAtTime( up.x, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.upY.setValueAtTime( up.y, this.context.currentTime );\\n\\t\\t\\t\\t\\tlistener.upZ.setValueAtTime( up.z, this.context.currentTime );\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tlistener.setPosition( position.x, position.y, position.z );\\n\\t\\t\\t\\t\\tlistener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )()\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Reece Aaron Lecrivain / http://reecenotes.com/\\n\\t */\\n\\n\\tfunction Audio( listener ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.type = 'Audio';\\n\\n\\t\\tthis.context = listener.context;\\n\\n\\t\\tthis.gain = this.context.createGain();\\n\\t\\tthis.gain.connect( listener.getInput() );\\n\\n\\t\\tthis.autoplay = false;\\n\\n\\t\\tthis.buffer = null;\\n\\t\\tthis.loop = false;\\n\\t\\tthis.startTime = 0;\\n\\t\\tthis.offset = 0;\\n\\t\\tthis.playbackRate = 1;\\n\\t\\tthis.isPlaying = false;\\n\\t\\tthis.hasPlaybackControl = true;\\n\\t\\tthis.sourceType = 'empty';\\n\\n\\t\\tthis.filters = [];\\n\\n\\t}\\n\\n\\tAudio.prototype = Object.assign( Object.create( Object3D.prototype ), {\\n\\n\\t\\tconstructor: Audio,\\n\\n\\t\\tgetOutput: function () {\\n\\n\\t\\t\\treturn this.gain;\\n\\n\\t\\t},\\n\\n\\t\\tsetNodeSource: function ( audioNode ) {\\n\\n\\t\\t\\tthis.hasPlaybackControl = false;\\n\\t\\t\\tthis.sourceType = 'audioNode';\\n\\t\\t\\tthis.source = audioNode;\\n\\t\\t\\tthis.connect();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetBuffer: function ( audioBuffer ) {\\n\\n\\t\\t\\tthis.buffer = audioBuffer;\\n\\t\\t\\tthis.sourceType = 'buffer';\\n\\n\\t\\t\\tif ( this.autoplay ) this.play();\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tplay: function () {\\n\\n\\t\\t\\tif ( this.isPlaying === true ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.hasPlaybackControl === false ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar source = this.context.createBufferSource();\\n\\n\\t\\t\\tsource.buffer = this.buffer;\\n\\t\\t\\tsource.loop = this.loop;\\n\\t\\t\\tsource.onended = this.onEnded.bind( this );\\n\\t\\t\\tsource.playbackRate.setValueAtTime( this.playbackRate, this.startTime );\\n\\t\\t\\tthis.startTime = this.context.currentTime;\\n\\t\\t\\tsource.start( this.startTime, this.offset );\\n\\n\\t\\t\\tthis.isPlaying = true;\\n\\n\\t\\t\\tthis.source = source;\\n\\n\\t\\t\\treturn this.connect();\\n\\n\\t\\t},\\n\\n\\t\\tpause: function () {\\n\\n\\t\\t\\tif ( this.hasPlaybackControl === false ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.isPlaying === true ) {\\n\\n\\t\\t\\t\\tthis.source.stop();\\n\\t\\t\\t\\tthis.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate;\\n\\t\\t\\t\\tthis.isPlaying = false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tstop: function () {\\n\\n\\t\\t\\tif ( this.hasPlaybackControl === false ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.source.stop();\\n\\t\\t\\tthis.offset = 0;\\n\\t\\t\\tthis.isPlaying = false;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tconnect: function () {\\n\\n\\t\\t\\tif ( this.filters.length > 0 ) {\\n\\n\\t\\t\\t\\tthis.source.connect( this.filters[ 0 ] );\\n\\n\\t\\t\\t\\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.source.connect( this.getOutput() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tdisconnect: function () {\\n\\n\\t\\t\\tif ( this.filters.length > 0 ) {\\n\\n\\t\\t\\t\\tthis.source.disconnect( this.filters[ 0 ] );\\n\\n\\t\\t\\t\\tfor ( var i = 1, l = this.filters.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.source.disconnect( this.getOutput() );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetFilters: function () {\\n\\n\\t\\t\\treturn this.filters;\\n\\n\\t\\t},\\n\\n\\t\\tsetFilters: function ( value ) {\\n\\n\\t\\t\\tif ( ! value ) value = [];\\n\\n\\t\\t\\tif ( this.isPlaying === true ) {\\n\\n\\t\\t\\t\\tthis.disconnect();\\n\\t\\t\\t\\tthis.filters = value;\\n\\t\\t\\t\\tthis.connect();\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.filters = value;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetFilter: function () {\\n\\n\\t\\t\\treturn this.getFilters()[ 0 ];\\n\\n\\t\\t},\\n\\n\\t\\tsetFilter: function ( filter ) {\\n\\n\\t\\t\\treturn this.setFilters( filter ? [ filter ] : [] );\\n\\n\\t\\t},\\n\\n\\t\\tsetPlaybackRate: function ( value ) {\\n\\n\\t\\t\\tif ( this.hasPlaybackControl === false ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.playbackRate = value;\\n\\n\\t\\t\\tif ( this.isPlaying === true ) {\\n\\n\\t\\t\\t\\tthis.source.playbackRate.setValueAtTime( this.playbackRate, this.context.currentTime );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetPlaybackRate: function () {\\n\\n\\t\\t\\treturn this.playbackRate;\\n\\n\\t\\t},\\n\\n\\t\\tonEnded: function () {\\n\\n\\t\\t\\tthis.isPlaying = false;\\n\\n\\t\\t},\\n\\n\\t\\tgetLoop: function () {\\n\\n\\t\\t\\tif ( this.hasPlaybackControl === false ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\\n\\t\\t\\t\\treturn false;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this.loop;\\n\\n\\t\\t},\\n\\n\\t\\tsetLoop: function ( value ) {\\n\\n\\t\\t\\tif ( this.hasPlaybackControl === false ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.loop = value;\\n\\n\\t\\t\\tif ( this.isPlaying === true ) {\\n\\n\\t\\t\\t\\tthis.source.loop = this.loop;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetVolume: function () {\\n\\n\\t\\t\\treturn this.gain.gain.value;\\n\\n\\t\\t},\\n\\n\\t\\tsetVolume: function ( value ) {\\n\\n\\t\\t\\tthis.gain.gain.value = value;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction PositionalAudio( listener ) {\\n\\n\\t\\tAudio.call( this, listener );\\n\\n\\t\\tthis.panner = this.context.createPanner();\\n\\t\\tthis.panner.connect( this.gain );\\n\\n\\t}\\n\\n\\tPositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {\\n\\n\\t\\tconstructor: PositionalAudio,\\n\\n\\t\\tgetOutput: function () {\\n\\n\\t\\t\\treturn this.panner;\\n\\n\\t\\t},\\n\\n\\t\\tgetRefDistance: function () {\\n\\n\\t\\t\\treturn this.panner.refDistance;\\n\\n\\t\\t},\\n\\n\\t\\tsetRefDistance: function ( value ) {\\n\\n\\t\\t\\tthis.panner.refDistance = value;\\n\\n\\t\\t},\\n\\n\\t\\tgetRolloffFactor: function () {\\n\\n\\t\\t\\treturn this.panner.rolloffFactor;\\n\\n\\t\\t},\\n\\n\\t\\tsetRolloffFactor: function ( value ) {\\n\\n\\t\\t\\tthis.panner.rolloffFactor = value;\\n\\n\\t\\t},\\n\\n\\t\\tgetDistanceModel: function () {\\n\\n\\t\\t\\treturn this.panner.distanceModel;\\n\\n\\t\\t},\\n\\n\\t\\tsetDistanceModel: function ( value ) {\\n\\n\\t\\t\\tthis.panner.distanceModel = value;\\n\\n\\t\\t},\\n\\n\\t\\tgetMaxDistance: function () {\\n\\n\\t\\t\\treturn this.panner.maxDistance;\\n\\n\\t\\t},\\n\\n\\t\\tsetMaxDistance: function ( value ) {\\n\\n\\t\\t\\tthis.panner.maxDistance = value;\\n\\n\\t\\t},\\n\\n\\t\\tupdateMatrixWorld: ( function () {\\n\\n\\t\\t\\tvar position = new Vector3();\\n\\n\\t\\t\\treturn function updateMatrixWorld( force ) {\\n\\n\\t\\t\\t\\tObject3D.prototype.updateMatrixWorld.call( this, force );\\n\\n\\t\\t\\t\\tposition.setFromMatrixPosition( this.matrixWorld );\\n\\n\\t\\t\\t\\tthis.panner.setPosition( position.x, position.y, position.z );\\n\\n\\t\\t\\t};\\n\\n\\t\\t} )()\\n\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction AudioAnalyser( audio, fftSize ) {\\n\\n\\t\\tthis.analyser = audio.context.createAnalyser();\\n\\t\\tthis.analyser.fftSize = fftSize !== undefined ? fftSize : 2048;\\n\\n\\t\\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\\n\\n\\t\\taudio.getOutput().connect( this.analyser );\\n\\n\\t}\\n\\n\\tObject.assign( AudioAnalyser.prototype, {\\n\\n\\t\\tgetFrequencyData: function () {\\n\\n\\t\\t\\tthis.analyser.getByteFrequencyData( this.data );\\n\\n\\t\\t\\treturn this.data;\\n\\n\\t\\t},\\n\\n\\t\\tgetAverageFrequency: function () {\\n\\n\\t\\t\\tvar value = 0, data = this.getFrequencyData();\\n\\n\\t\\t\\tfor ( var i = 0; i < data.length; i ++ ) {\\n\\n\\t\\t\\t\\tvalue += data[ i ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn value / data.length;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * Buffered scene graph property that allows weighted accumulation.\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction PropertyMixer( binding, typeName, valueSize ) {\\n\\n\\t\\tthis.binding = binding;\\n\\t\\tthis.valueSize = valueSize;\\n\\n\\t\\tvar bufferType = Float64Array,\\n\\t\\t\\tmixFunction;\\n\\n\\t\\tswitch ( typeName ) {\\n\\n\\t\\t\\tcase 'quaternion':\\n\\t\\t\\t\\tmixFunction = this._slerp;\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\tcase 'string':\\n\\t\\t\\tcase 'bool':\\n\\t\\t\\t\\tbufferType = Array;\\n\\t\\t\\t\\tmixFunction = this._select;\\n\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\tdefault:\\n\\t\\t\\t\\tmixFunction = this._lerp;\\n\\n\\t\\t}\\n\\n\\t\\tthis.buffer = new bufferType( valueSize * 4 );\\n\\t\\t// layout: [ incoming | accu0 | accu1 | orig ]\\n\\t\\t//\\n\\t\\t// interpolators can use .buffer as their .result\\n\\t\\t// the data then goes to 'incoming'\\n\\t\\t//\\n\\t\\t// 'accu0' and 'accu1' are used frame-interleaved for\\n\\t\\t// the cumulative result and are compared to detect\\n\\t\\t// changes\\n\\t\\t//\\n\\t\\t// 'orig' stores the original state of the property\\n\\n\\t\\tthis._mixBufferRegion = mixFunction;\\n\\n\\t\\tthis.cumulativeWeight = 0;\\n\\n\\t\\tthis.useCount = 0;\\n\\t\\tthis.referenceCount = 0;\\n\\n\\t}\\n\\n\\tObject.assign( PropertyMixer.prototype, {\\n\\n\\t\\t// accumulate data in the 'incoming' region into 'accu'\\n\\t\\taccumulate: function ( accuIndex, weight ) {\\n\\n\\t\\t\\t// note: happily accumulating nothing when weight = 0, the caller knows\\n\\t\\t\\t// the weight and shouldn't have made the call in the first place\\n\\n\\t\\t\\tvar buffer = this.buffer,\\n\\t\\t\\t\\tstride = this.valueSize,\\n\\t\\t\\t\\toffset = accuIndex * stride + stride,\\n\\n\\t\\t\\t\\tcurrentWeight = this.cumulativeWeight;\\n\\n\\t\\t\\tif ( currentWeight === 0 ) {\\n\\n\\t\\t\\t\\t// accuN := incoming * weight\\n\\n\\t\\t\\t\\tfor ( var i = 0; i !== stride; ++ i ) {\\n\\n\\t\\t\\t\\t\\tbuffer[ offset + i ] = buffer[ i ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcurrentWeight = weight;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// accuN := accuN + incoming * weight\\n\\n\\t\\t\\t\\tcurrentWeight += weight;\\n\\t\\t\\t\\tvar mix = weight / currentWeight;\\n\\t\\t\\t\\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.cumulativeWeight = currentWeight;\\n\\n\\t\\t},\\n\\n\\t\\t// apply the state of 'accu' to the binding when accus differ\\n\\t\\tapply: function ( accuIndex ) {\\n\\n\\t\\t\\tvar stride = this.valueSize,\\n\\t\\t\\t\\tbuffer = this.buffer,\\n\\t\\t\\t\\toffset = accuIndex * stride + stride,\\n\\n\\t\\t\\t\\tweight = this.cumulativeWeight,\\n\\n\\t\\t\\t\\tbinding = this.binding;\\n\\n\\t\\t\\tthis.cumulativeWeight = 0;\\n\\n\\t\\t\\tif ( weight < 1 ) {\\n\\n\\t\\t\\t\\t// accuN := accuN + original * ( 1 - cumulativeWeight )\\n\\n\\t\\t\\t\\tvar originalValueOffset = stride * 3;\\n\\n\\t\\t\\t\\tthis._mixBufferRegion(\\n\\t\\t\\t\\t\\tbuffer, offset, originalValueOffset, 1 - weight, stride );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = stride, e = stride + stride; i !== e; ++ i ) {\\n\\n\\t\\t\\t\\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\\n\\n\\t\\t\\t\\t\\t// value has changed -> update scene graph\\n\\n\\t\\t\\t\\t\\tbinding.setValue( buffer, offset );\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t// remember the state of the bound property and copy it to both accus\\n\\t\\tsaveOriginalState: function () {\\n\\n\\t\\t\\tvar binding = this.binding;\\n\\n\\t\\t\\tvar buffer = this.buffer,\\n\\t\\t\\t\\tstride = this.valueSize,\\n\\n\\t\\t\\t\\toriginalValueOffset = stride * 3;\\n\\n\\t\\t\\tbinding.getValue( buffer, originalValueOffset );\\n\\n\\t\\t\\t// accu[0..1] := orig -- initially detect changes against the original\\n\\t\\t\\tfor ( var i = stride, e = originalValueOffset; i !== e; ++ i ) {\\n\\n\\t\\t\\t\\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.cumulativeWeight = 0;\\n\\n\\t\\t},\\n\\n\\t\\t// apply the state previously taken via 'saveOriginalState' to the binding\\n\\t\\trestoreOriginalState: function () {\\n\\n\\t\\t\\tvar originalValueOffset = this.valueSize * 3;\\n\\t\\t\\tthis.binding.setValue( this.buffer, originalValueOffset );\\n\\n\\t\\t},\\n\\n\\n\\t\\t// mix functions\\n\\n\\t\\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\\n\\n\\t\\t\\tif ( t >= 0.5 ) {\\n\\n\\t\\t\\t\\tfor ( var i = 0; i !== stride; ++ i ) {\\n\\n\\t\\t\\t\\t\\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\\n\\n\\t\\t\\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\\n\\n\\t\\t},\\n\\n\\t\\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\\n\\n\\t\\t\\tvar s = 1 - t;\\n\\n\\t\\t\\tfor ( var i = 0; i !== stride; ++ i ) {\\n\\n\\t\\t\\t\\tvar j = dstOffset + i;\\n\\n\\t\\t\\t\\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A reference to a real property in the scene graph.\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction Composite( targetGroup, path, optionalParsedPath ) {\\n\\n\\t\\tvar parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\\n\\n\\t\\tthis._targetGroup = targetGroup;\\n\\t\\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\\n\\n\\t}\\n\\n\\tObject.assign( Composite.prototype, {\\n\\n\\t\\tgetValue: function ( array, offset ) {\\n\\n\\t\\t\\tthis.bind(); // bind all binding\\n\\n\\t\\t\\tvar firstValidIndex = this._targetGroup.nCachedObjects_,\\n\\t\\t\\t\\tbinding = this._bindings[ firstValidIndex ];\\n\\n\\t\\t\\t// and only call .getValue on the first\\n\\t\\t\\tif ( binding !== undefined ) binding.getValue( array, offset );\\n\\n\\t\\t},\\n\\n\\t\\tsetValue: function ( array, offset ) {\\n\\n\\t\\t\\tvar bindings = this._bindings;\\n\\n\\t\\t\\tfor ( var i = this._targetGroup.nCachedObjects_,\\n\\t\\t\\t\\t\\t n = bindings.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tbindings[ i ].setValue( array, offset );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tbind: function () {\\n\\n\\t\\t\\tvar bindings = this._bindings;\\n\\n\\t\\t\\tfor ( var i = this._targetGroup.nCachedObjects_,\\n\\t\\t\\t\\t\\t n = bindings.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tbindings[ i ].bind();\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tunbind: function () {\\n\\n\\t\\t\\tvar bindings = this._bindings;\\n\\n\\t\\t\\tfor ( var i = this._targetGroup.nCachedObjects_,\\n\\t\\t\\t\\t\\t n = bindings.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tbindings[ i ].unbind();\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\n\\tfunction PropertyBinding( rootNode, path, parsedPath ) {\\n\\n\\t\\tthis.path = path;\\n\\t\\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\\n\\n\\t\\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\\n\\n\\t\\tthis.rootNode = rootNode;\\n\\n\\t}\\n\\n\\tObject.assign( PropertyBinding, {\\n\\n\\t\\tComposite: Composite,\\n\\n\\t\\tcreate: function ( root, path, parsedPath ) {\\n\\n\\t\\t\\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\\n\\n\\t\\t\\t\\treturn new PropertyBinding( root, path, parsedPath );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\treturn new PropertyBinding.Composite( root, path, parsedPath );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t/**\\n\\t\\t * Replaces spaces with underscores and removes unsupported characters from\\n\\t\\t * node names, to ensure compatibility with parseTrackName().\\n\\t\\t *\\n\\t\\t * @param {string} name Node name to be sanitized.\\n\\t\\t * @return {string}\\n\\t\\t */\\n\\t\\tsanitizeNodeName: function ( name ) {\\n\\n\\t\\t\\treturn name.replace( /\\\\s/g, '_' ).replace( /[^\\\\w-]/g, '' );\\n\\n\\t\\t},\\n\\n\\t\\tparseTrackName: function () {\\n\\n\\t\\t\\t// Parent directories, delimited by '/' or ':'. Currently unused, but must\\n\\t\\t\\t// be matched to parse the rest of the track name.\\n\\t\\t\\tvar directoryRe = /((?:[\\\\w-]+[\\\\/:])*)/;\\n\\n\\t\\t\\t// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\\n\\t\\t\\tvar nodeRe = /([\\\\w-\\\\.]+)?/;\\n\\n\\t\\t\\t// Object on target node, and accessor. Name may contain only word\\n\\t\\t\\t// characters. Accessor may contain any character except closing bracket.\\n\\t\\t\\tvar objectRe = /(?:\\\\.([\\\\w-]+)(?:\\\\[(.+)\\\\])?)?/;\\n\\n\\t\\t\\t// Property and accessor. May contain only word characters. Accessor may\\n\\t\\t\\t// contain any non-bracket characters.\\n\\t\\t\\tvar propertyRe = /\\\\.([\\\\w-]+)(?:\\\\[(.+)\\\\])?/;\\n\\n\\t\\t\\tvar trackRe = new RegExp( ''\\n\\t\\t\\t\\t+ '^'\\n\\t\\t\\t\\t+ directoryRe.source\\n\\t\\t\\t\\t+ nodeRe.source\\n\\t\\t\\t\\t+ objectRe.source\\n\\t\\t\\t\\t+ propertyRe.source\\n\\t\\t\\t\\t+ '$'\\n\\t\\t\\t);\\n\\n\\t\\t\\tvar supportedObjectNames = [ 'material', 'materials', 'bones' ];\\n\\n\\t\\t\\treturn function ( trackName ) {\\n\\n\\t\\t\\t\\tvar matches = trackRe.exec( trackName );\\n\\n\\t\\t\\t\\tif ( ! matches ) {\\n\\n\\t\\t\\t\\t\\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar results = {\\n\\t\\t\\t\\t\\t// directoryName: matches[ 1 ], // (tschw) currently unused\\n\\t\\t\\t\\t\\tnodeName: matches[ 2 ],\\n\\t\\t\\t\\t\\tobjectName: matches[ 3 ],\\n\\t\\t\\t\\t\\tobjectIndex: matches[ 4 ],\\n\\t\\t\\t\\t\\tpropertyName: matches[ 5 ], // required\\n\\t\\t\\t\\t\\tpropertyIndex: matches[ 6 ]\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\tvar lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\\n\\n\\t\\t\\t\\tif ( lastDot !== undefined && lastDot !== - 1 ) {\\n\\n\\t\\t\\t\\t\\tvar objectName = results.nodeName.substring( lastDot + 1 );\\n\\n\\t\\t\\t\\t\\t// Object names must be checked against a whitelist. Otherwise, there\\n\\t\\t\\t\\t\\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\\n\\t\\t\\t\\t\\t// 'bar' could be the objectName, or part of a nodeName (which can\\n\\t\\t\\t\\t\\t// include '.' characters).\\n\\t\\t\\t\\t\\tif ( supportedObjectNames.indexOf( objectName ) !== - 1 ) {\\n\\n\\t\\t\\t\\t\\t\\tresults.nodeName = results.nodeName.substring( 0, lastDot );\\n\\t\\t\\t\\t\\t\\tresults.objectName = objectName;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\\n\\n\\t\\t\\t\\t\\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\treturn results;\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\n\\t\\tfindNode: function ( root, nodeName ) {\\n\\n\\t\\t\\tif ( ! nodeName || nodeName === \\\"\\\" || nodeName === \\\"root\\\" || nodeName === \\\".\\\" || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\\n\\n\\t\\t\\t\\treturn root;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// search into skeleton bones.\\n\\t\\t\\tif ( root.skeleton ) {\\n\\n\\t\\t\\t\\tvar searchSkeleton = function ( skeleton ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < skeleton.bones.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar bone = skeleton.bones[ i ];\\n\\n\\t\\t\\t\\t\\t\\tif ( bone.name === nodeName ) {\\n\\n\\t\\t\\t\\t\\t\\t\\treturn bone;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\tvar bone = searchSkeleton( root.skeleton );\\n\\n\\t\\t\\t\\tif ( bone ) {\\n\\n\\t\\t\\t\\t\\treturn bone;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// search into node subtree.\\n\\t\\t\\tif ( root.children ) {\\n\\n\\t\\t\\t\\tvar searchNodeSubtree = function ( children ) {\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0; i < children.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar childNode = children[ i ];\\n\\n\\t\\t\\t\\t\\t\\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\\n\\n\\t\\t\\t\\t\\t\\t\\treturn childNode;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tvar result = searchNodeSubtree( childNode.children );\\n\\n\\t\\t\\t\\t\\t\\tif ( result ) return result;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\treturn null;\\n\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\tvar subTreeNode = searchNodeSubtree( root.children );\\n\\n\\t\\t\\t\\tif ( subTreeNode ) {\\n\\n\\t\\t\\t\\t\\treturn subTreeNode;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn null;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( PropertyBinding.prototype, { // prototype, continued\\n\\n\\t\\t// these are used to \\\"bind\\\" a nonexistent property\\n\\t\\t_getValue_unavailable: function () {},\\n\\t\\t_setValue_unavailable: function () {},\\n\\n\\t\\tBindingType: {\\n\\t\\t\\tDirect: 0,\\n\\t\\t\\tEntireArray: 1,\\n\\t\\t\\tArrayElement: 2,\\n\\t\\t\\tHasFromToArray: 3\\n\\t\\t},\\n\\n\\t\\tVersioning: {\\n\\t\\t\\tNone: 0,\\n\\t\\t\\tNeedsUpdate: 1,\\n\\t\\t\\tMatrixWorldNeedsUpdate: 2\\n\\t\\t},\\n\\n\\t\\tGetterByBindingType: [\\n\\n\\t\\t\\tfunction getValue_direct( buffer, offset ) {\\n\\n\\t\\t\\t\\tbuffer[ offset ] = this.node[ this.propertyName ];\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tfunction getValue_array( buffer, offset ) {\\n\\n\\t\\t\\t\\tvar source = this.resolvedProperty;\\n\\n\\t\\t\\t\\tfor ( var i = 0, n = source.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\tbuffer[ offset ++ ] = source[ i ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tfunction getValue_arrayElement( buffer, offset ) {\\n\\n\\t\\t\\t\\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\\n\\n\\t\\t\\t},\\n\\n\\t\\t\\tfunction getValue_toArray( buffer, offset ) {\\n\\n\\t\\t\\t\\tthis.resolvedProperty.toArray( buffer, offset );\\n\\n\\t\\t\\t}\\n\\n\\t\\t],\\n\\n\\t\\tSetterByBindingTypeAndVersioning: [\\n\\n\\t\\t\\t[\\n\\t\\t\\t\\t// Direct\\n\\n\\t\\t\\t\\tfunction setValue_direct( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\\n\\t\\t\\t\\t\\tthis.targetObject.needsUpdate = true;\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\\n\\t\\t\\t\\t\\tthis.targetObject.matrixWorldNeedsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t], [\\n\\n\\t\\t\\t\\t// EntireArray\\n\\n\\t\\t\\t\\tfunction setValue_array( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tvar dest = this.resolvedProperty;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\t\\tdest[ i ] = buffer[ offset ++ ];\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tvar dest = this.resolvedProperty;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\t\\tdest[ i ] = buffer[ offset ++ ];\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.targetObject.needsUpdate = true;\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tvar dest = this.resolvedProperty;\\n\\n\\t\\t\\t\\t\\tfor ( var i = 0, n = dest.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\t\\tdest[ i ] = buffer[ offset ++ ];\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tthis.targetObject.matrixWorldNeedsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t], [\\n\\n\\t\\t\\t\\t// ArrayElement\\n\\n\\t\\t\\t\\tfunction setValue_arrayElement( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\\n\\t\\t\\t\\t\\tthis.targetObject.needsUpdate = true;\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\\n\\t\\t\\t\\t\\tthis.targetObject.matrixWorldNeedsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t], [\\n\\n\\t\\t\\t\\t// HasToFromArray\\n\\n\\t\\t\\t\\tfunction setValue_fromArray( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.resolvedProperty.fromArray( buffer, offset );\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.resolvedProperty.fromArray( buffer, offset );\\n\\t\\t\\t\\t\\tthis.targetObject.needsUpdate = true;\\n\\n\\t\\t\\t\\t},\\n\\n\\t\\t\\t\\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\\n\\n\\t\\t\\t\\t\\tthis.resolvedProperty.fromArray( buffer, offset );\\n\\t\\t\\t\\t\\tthis.targetObject.matrixWorldNeedsUpdate = true;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t]\\n\\n\\t\\t],\\n\\n\\t\\tgetValue: function getValue_unbound( targetArray, offset ) {\\n\\n\\t\\t\\tthis.bind();\\n\\t\\t\\tthis.getValue( targetArray, offset );\\n\\n\\t\\t\\t// Note: This class uses a State pattern on a per-method basis:\\n\\t\\t\\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\\n\\t\\t\\t// prototype version of these methods with one that represents\\n\\t\\t\\t// the bound state. When the property is not found, the methods\\n\\t\\t\\t// become no-ops.\\n\\n\\t\\t},\\n\\n\\t\\tsetValue: function getValue_unbound( sourceArray, offset ) {\\n\\n\\t\\t\\tthis.bind();\\n\\t\\t\\tthis.setValue( sourceArray, offset );\\n\\n\\t\\t},\\n\\n\\t\\t// create getter / setter pair for a property in the scene graph\\n\\t\\tbind: function () {\\n\\n\\t\\t\\tvar targetObject = this.node,\\n\\t\\t\\t\\tparsedPath = this.parsedPath,\\n\\n\\t\\t\\t\\tobjectName = parsedPath.objectName,\\n\\t\\t\\t\\tpropertyName = parsedPath.propertyName,\\n\\t\\t\\t\\tpropertyIndex = parsedPath.propertyIndex;\\n\\n\\t\\t\\tif ( ! targetObject ) {\\n\\n\\t\\t\\t\\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\\n\\n\\t\\t\\t\\tthis.node = targetObject;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// set fail state so we can just 'return' on error\\n\\t\\t\\tthis.getValue = this._getValue_unavailable;\\n\\t\\t\\tthis.setValue = this._setValue_unavailable;\\n\\n\\t\\t\\t// ensure there is a value node\\n\\t\\t\\tif ( ! targetObject ) {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\\\'t found.' );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( objectName ) {\\n\\n\\t\\t\\t\\tvar objectIndex = parsedPath.objectIndex;\\n\\n\\t\\t\\t\\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\\n\\t\\t\\t\\tswitch ( objectName ) {\\n\\n\\t\\t\\t\\t\\tcase 'materials':\\n\\n\\t\\t\\t\\t\\t\\tif ( ! targetObject.material ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tif ( ! targetObject.material.materials ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\ttargetObject = targetObject.material.materials;\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tcase 'bones':\\n\\n\\t\\t\\t\\t\\t\\tif ( ! targetObject.skeleton ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// potential future optimization: skip this if propertyIndex is already an integer\\n\\t\\t\\t\\t\\t\\t// and convert the integer string to a true integer.\\n\\n\\t\\t\\t\\t\\t\\ttargetObject = targetObject.skeleton.bones;\\n\\n\\t\\t\\t\\t\\t\\t// support resolving morphTarget names into indices.\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < targetObject.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( targetObject[ i ].name === objectIndex ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tobjectIndex = i;\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\tdefault:\\n\\n\\t\\t\\t\\t\\t\\tif ( targetObject[ objectName ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\ttargetObject = targetObject[ objectName ];\\n\\n\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t\\tif ( objectIndex !== undefined ) {\\n\\n\\t\\t\\t\\t\\tif ( targetObject[ objectIndex ] === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\\n\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttargetObject = targetObject[ objectIndex ];\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// resolve property\\n\\t\\t\\tvar nodeProperty = targetObject[ propertyName ];\\n\\n\\t\\t\\tif ( nodeProperty === undefined ) {\\n\\n\\t\\t\\t\\tvar nodeName = parsedPath.nodeName;\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\\n\\t\\t\\t\\t\\t'.' + propertyName + ' but it wasn\\\\'t found.', targetObject );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// determine versioning scheme\\n\\t\\t\\tvar versioning = this.Versioning.None;\\n\\n\\t\\t\\tif ( targetObject.needsUpdate !== undefined ) { // material\\n\\n\\t\\t\\t\\tversioning = this.Versioning.NeedsUpdate;\\n\\t\\t\\t\\tthis.targetObject = targetObject;\\n\\n\\t\\t\\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\\n\\n\\t\\t\\t\\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\\n\\t\\t\\t\\tthis.targetObject = targetObject;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// determine how the property gets bound\\n\\t\\t\\tvar bindingType = this.BindingType.Direct;\\n\\n\\t\\t\\tif ( propertyIndex !== undefined ) {\\n\\n\\t\\t\\t\\t// access a sub element of the property array (only primitives are supported right now)\\n\\n\\t\\t\\t\\tif ( propertyName === \\\"morphTargetInfluences\\\" ) {\\n\\n\\t\\t\\t\\t\\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\\n\\n\\t\\t\\t\\t\\t// support resolving morphTarget names into indices.\\n\\t\\t\\t\\t\\tif ( ! targetObject.geometry ) {\\n\\n\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\\n\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tif ( targetObject.geometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\t\\t\\tif ( ! targetObject.geometry.morphAttributes ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tpropertyIndex = i;\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\tif ( ! targetObject.geometry.morphTargets ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this );\\n\\t\\t\\t\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tfor ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tpropertyIndex = i;\\n\\t\\t\\t\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tbindingType = this.BindingType.ArrayElement;\\n\\n\\t\\t\\t\\tthis.resolvedProperty = nodeProperty;\\n\\t\\t\\t\\tthis.propertyIndex = propertyIndex;\\n\\n\\t\\t\\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\\n\\n\\t\\t\\t\\t// must use copy for Object3D.Euler/Quaternion\\n\\n\\t\\t\\t\\tbindingType = this.BindingType.HasFromToArray;\\n\\n\\t\\t\\t\\tthis.resolvedProperty = nodeProperty;\\n\\n\\t\\t\\t} else if ( Array.isArray( nodeProperty ) ) {\\n\\n\\t\\t\\t\\tbindingType = this.BindingType.EntireArray;\\n\\n\\t\\t\\t\\tthis.resolvedProperty = nodeProperty;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.propertyName = propertyName;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// select getter / setter\\n\\t\\t\\tthis.getValue = this.GetterByBindingType[ bindingType ];\\n\\t\\t\\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\\n\\n\\t\\t},\\n\\n\\t\\tunbind: function () {\\n\\n\\t\\t\\tthis.node = null;\\n\\n\\t\\t\\t// back to the prototype version of getValue / setValue\\n\\t\\t\\t// note: avoiding to mutate the shape of 'this' via 'delete'\\n\\t\\t\\tthis.getValue = this._getValue_unbound;\\n\\t\\t\\tthis.setValue = this._setValue_unbound;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//!\\\\ DECLARE ALIAS AFTER assign prototype !\\n\\tObject.assign( PropertyBinding.prototype, {\\n\\n\\t\\t// initial state of these methods that calls 'bind'\\n\\t\\t_getValue_unbound: PropertyBinding.prototype.getValue,\\n\\t\\t_setValue_unbound: PropertyBinding.prototype.setValue,\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * A group of objects that receives a shared animation state.\\n\\t *\\n\\t * Usage:\\n\\t *\\n\\t * \\t-\\tAdd objects you would otherwise pass as 'root' to the\\n\\t * \\t\\tconstructor or the .clipAction method of AnimationMixer.\\n\\t *\\n\\t * \\t-\\tInstead pass this object as 'root'.\\n\\t *\\n\\t * \\t-\\tYou can also add and remove objects later when the mixer\\n\\t * \\t\\tis running.\\n\\t *\\n\\t * Note:\\n\\t *\\n\\t * \\tObjects of this class appear as one object to the mixer,\\n\\t * \\tso cache control of the individual objects must be done\\n\\t * \\ton the group.\\n\\t *\\n\\t * Limitation:\\n\\t *\\n\\t * \\t- \\tThe animated properties must be compatible among the\\n\\t * \\t\\tall objects in the group.\\n\\t *\\n\\t * -\\tA single property can either be controlled through a\\n\\t * \\ttarget group or directly, but not both.\\n\\t *\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction AnimationObjectGroup() {\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\t// cached objects followed by the active ones\\n\\t\\tthis._objects = Array.prototype.slice.call( arguments );\\n\\n\\t\\tthis.nCachedObjects_ = 0;\\t\\t\\t// threshold\\n\\t\\t// note: read by PropertyBinding.Composite\\n\\n\\t\\tvar indices = {};\\n\\t\\tthis._indicesByUUID = indices;\\t\\t// for bookkeeping\\n\\n\\t\\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\\n\\n\\t\\t\\tindices[ arguments[ i ].uuid ] = i;\\n\\n\\t\\t}\\n\\n\\t\\tthis._paths = [];\\t\\t\\t\\t\\t// inside: string\\n\\t\\tthis._parsedPaths = [];\\t\\t\\t\\t// inside: { we don't care, here }\\n\\t\\tthis._bindings = []; \\t\\t\\t\\t// inside: Array< PropertyBinding >\\n\\t\\tthis._bindingsIndicesByPath = {}; \\t// inside: indices in these arrays\\n\\n\\t\\tvar scope = this;\\n\\n\\t\\tthis.stats = {\\n\\n\\t\\t\\tobjects: {\\n\\t\\t\\t\\tget total() {\\n\\n\\t\\t\\t\\t\\treturn scope._objects.length;\\n\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tget inUse() {\\n\\n\\t\\t\\t\\t\\treturn this.total - scope.nCachedObjects_;\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t\\tget bindingsPerObject() {\\n\\n\\t\\t\\t\\treturn scope._bindings.length;\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\tObject.assign( AnimationObjectGroup.prototype, {\\n\\n\\t\\tisAnimationObjectGroup: true,\\n\\n\\t\\tadd: function () {\\n\\n\\t\\t\\tvar objects = this._objects,\\n\\t\\t\\t\\tnObjects = objects.length,\\n\\t\\t\\t\\tnCachedObjects = this.nCachedObjects_,\\n\\t\\t\\t\\tindicesByUUID = this._indicesByUUID,\\n\\t\\t\\t\\tpaths = this._paths,\\n\\t\\t\\t\\tparsedPaths = this._parsedPaths,\\n\\t\\t\\t\\tbindings = this._bindings,\\n\\t\\t\\t\\tnBindings = bindings.length;\\n\\n\\t\\t\\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tvar object = arguments[ i ],\\n\\t\\t\\t\\t\\tuuid = object.uuid,\\n\\t\\t\\t\\t\\tindex = indicesByUUID[ uuid ],\\n\\t\\t\\t\\t\\tknownObject = undefined;\\n\\n\\t\\t\\t\\tif ( index === undefined ) {\\n\\n\\t\\t\\t\\t\\t// unknown object -> add it to the ACTIVE region\\n\\n\\t\\t\\t\\t\\tindex = nObjects ++;\\n\\t\\t\\t\\t\\tindicesByUUID[ uuid ] = index;\\n\\t\\t\\t\\t\\tobjects.push( object );\\n\\n\\t\\t\\t\\t\\t// accounting is done, now do the same for all bindings\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( index < nCachedObjects ) {\\n\\n\\t\\t\\t\\t\\tknownObject = objects[ index ];\\n\\n\\t\\t\\t\\t\\t// move existing object to the ACTIVE region\\n\\n\\t\\t\\t\\t\\tvar firstActiveIndex = -- nCachedObjects,\\n\\t\\t\\t\\t\\t\\tlastCachedObject = objects[ firstActiveIndex ];\\n\\n\\t\\t\\t\\t\\tindicesByUUID[ lastCachedObject.uuid ] = index;\\n\\t\\t\\t\\t\\tobjects[ index ] = lastCachedObject;\\n\\n\\t\\t\\t\\t\\tindicesByUUID[ uuid ] = firstActiveIndex;\\n\\t\\t\\t\\t\\tobjects[ firstActiveIndex ] = object;\\n\\n\\t\\t\\t\\t\\t// accounting is done, now do the same for all bindings\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\tvar bindingsForPath = bindings[ j ],\\n\\t\\t\\t\\t\\t\\t\\tlastCached = bindingsForPath[ firstActiveIndex ],\\n\\t\\t\\t\\t\\t\\t\\tbinding = bindingsForPath[ index ];\\n\\n\\t\\t\\t\\t\\t\\tbindingsForPath[ index ] = lastCached;\\n\\n\\t\\t\\t\\t\\t\\tif ( binding === undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// since we do not bother to create new bindings\\n\\t\\t\\t\\t\\t\\t\\t// for objects that are cached, the binding may\\n\\t\\t\\t\\t\\t\\t\\t// or may not exist\\n\\n\\t\\t\\t\\t\\t\\t\\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tbindingsForPath[ firstActiveIndex ] = binding;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t} else if ( objects[ index ] !== knownObject ) {\\n\\n\\t\\t\\t\\t\\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\\n\\t\\t\\t\\t\\t\\t\\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\\n\\n\\t\\t\\t\\t} // else the object is already where we want it to be\\n\\n\\t\\t\\t} // for arguments\\n\\n\\t\\t\\tthis.nCachedObjects_ = nCachedObjects;\\n\\n\\t\\t},\\n\\n\\t\\tremove: function () {\\n\\n\\t\\t\\tvar objects = this._objects,\\n\\t\\t\\t\\tnCachedObjects = this.nCachedObjects_,\\n\\t\\t\\t\\tindicesByUUID = this._indicesByUUID,\\n\\t\\t\\t\\tbindings = this._bindings,\\n\\t\\t\\t\\tnBindings = bindings.length;\\n\\n\\t\\t\\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tvar object = arguments[ i ],\\n\\t\\t\\t\\t\\tuuid = object.uuid,\\n\\t\\t\\t\\t\\tindex = indicesByUUID[ uuid ];\\n\\n\\t\\t\\t\\tif ( index !== undefined && index >= nCachedObjects ) {\\n\\n\\t\\t\\t\\t\\t// move existing object into the CACHED region\\n\\n\\t\\t\\t\\t\\tvar lastCachedIndex = nCachedObjects ++,\\n\\t\\t\\t\\t\\t\\tfirstActiveObject = objects[ lastCachedIndex ];\\n\\n\\t\\t\\t\\t\\tindicesByUUID[ firstActiveObject.uuid ] = index;\\n\\t\\t\\t\\t\\tobjects[ index ] = firstActiveObject;\\n\\n\\t\\t\\t\\t\\tindicesByUUID[ uuid ] = lastCachedIndex;\\n\\t\\t\\t\\t\\tobjects[ lastCachedIndex ] = object;\\n\\n\\t\\t\\t\\t\\t// accounting is done, now do the same for all bindings\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\tvar bindingsForPath = bindings[ j ],\\n\\t\\t\\t\\t\\t\\t\\tfirstActive = bindingsForPath[ lastCachedIndex ],\\n\\t\\t\\t\\t\\t\\t\\tbinding = bindingsForPath[ index ];\\n\\n\\t\\t\\t\\t\\t\\tbindingsForPath[ index ] = firstActive;\\n\\t\\t\\t\\t\\t\\tbindingsForPath[ lastCachedIndex ] = binding;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} // for arguments\\n\\n\\t\\t\\tthis.nCachedObjects_ = nCachedObjects;\\n\\n\\t\\t},\\n\\n\\t\\t// remove & forget\\n\\t\\tuncache: function () {\\n\\n\\t\\t\\tvar objects = this._objects,\\n\\t\\t\\t\\tnObjects = objects.length,\\n\\t\\t\\t\\tnCachedObjects = this.nCachedObjects_,\\n\\t\\t\\t\\tindicesByUUID = this._indicesByUUID,\\n\\t\\t\\t\\tbindings = this._bindings,\\n\\t\\t\\t\\tnBindings = bindings.length;\\n\\n\\t\\t\\tfor ( var i = 0, n = arguments.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tvar object = arguments[ i ],\\n\\t\\t\\t\\t\\tuuid = object.uuid,\\n\\t\\t\\t\\t\\tindex = indicesByUUID[ uuid ];\\n\\n\\t\\t\\t\\tif ( index !== undefined ) {\\n\\n\\t\\t\\t\\t\\tdelete indicesByUUID[ uuid ];\\n\\n\\t\\t\\t\\t\\tif ( index < nCachedObjects ) {\\n\\n\\t\\t\\t\\t\\t\\t// object is cached, shrink the CACHED region\\n\\n\\t\\t\\t\\t\\t\\tvar firstActiveIndex = -- nCachedObjects,\\n\\t\\t\\t\\t\\t\\t\\tlastCachedObject = objects[ firstActiveIndex ],\\n\\t\\t\\t\\t\\t\\t\\tlastIndex = -- nObjects,\\n\\t\\t\\t\\t\\t\\t\\tlastObject = objects[ lastIndex ];\\n\\n\\t\\t\\t\\t\\t\\t// last cached object takes this object's place\\n\\t\\t\\t\\t\\t\\tindicesByUUID[ lastCachedObject.uuid ] = index;\\n\\t\\t\\t\\t\\t\\tobjects[ index ] = lastCachedObject;\\n\\n\\t\\t\\t\\t\\t\\t// last object goes to the activated slot and pop\\n\\t\\t\\t\\t\\t\\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\\n\\t\\t\\t\\t\\t\\tobjects[ firstActiveIndex ] = lastObject;\\n\\t\\t\\t\\t\\t\\tobjects.pop();\\n\\n\\t\\t\\t\\t\\t\\t// accounting is done, now do the same for all bindings\\n\\n\\t\\t\\t\\t\\t\\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar bindingsForPath = bindings[ j ],\\n\\t\\t\\t\\t\\t\\t\\t\\tlastCached = bindingsForPath[ firstActiveIndex ],\\n\\t\\t\\t\\t\\t\\t\\t\\tlast = bindingsForPath[ lastIndex ];\\n\\n\\t\\t\\t\\t\\t\\t\\tbindingsForPath[ index ] = lastCached;\\n\\t\\t\\t\\t\\t\\t\\tbindingsForPath[ firstActiveIndex ] = last;\\n\\t\\t\\t\\t\\t\\t\\tbindingsForPath.pop();\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t// object is active, just swap with the last and pop\\n\\n\\t\\t\\t\\t\\t\\tvar lastIndex = -- nObjects,\\n\\t\\t\\t\\t\\t\\t\\tlastObject = objects[ lastIndex ];\\n\\n\\t\\t\\t\\t\\t\\tindicesByUUID[ lastObject.uuid ] = index;\\n\\t\\t\\t\\t\\t\\tobjects[ index ] = lastObject;\\n\\t\\t\\t\\t\\t\\tobjects.pop();\\n\\n\\t\\t\\t\\t\\t\\t// accounting is done, now do the same for all bindings\\n\\n\\t\\t\\t\\t\\t\\tfor ( var j = 0, m = nBindings; j !== m; ++ j ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tvar bindingsForPath = bindings[ j ];\\n\\n\\t\\t\\t\\t\\t\\t\\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\\n\\t\\t\\t\\t\\t\\t\\tbindingsForPath.pop();\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t} // cached or active\\n\\n\\t\\t\\t\\t} // if object is known\\n\\n\\t\\t\\t} // for arguments\\n\\n\\t\\t\\tthis.nCachedObjects_ = nCachedObjects;\\n\\n\\t\\t},\\n\\n\\t\\t// Internal interface used by befriended PropertyBinding.Composite:\\n\\n\\t\\tsubscribe_: function ( path, parsedPath ) {\\n\\n\\t\\t\\t// returns an array of bindings for the given path that is changed\\n\\t\\t\\t// according to the contained objects in the group\\n\\n\\t\\t\\tvar indicesByPath = this._bindingsIndicesByPath,\\n\\t\\t\\t\\tindex = indicesByPath[ path ],\\n\\t\\t\\t\\tbindings = this._bindings;\\n\\n\\t\\t\\tif ( index !== undefined ) return bindings[ index ];\\n\\n\\t\\t\\tvar paths = this._paths,\\n\\t\\t\\t\\tparsedPaths = this._parsedPaths,\\n\\t\\t\\t\\tobjects = this._objects,\\n\\t\\t\\t\\tnObjects = objects.length,\\n\\t\\t\\t\\tnCachedObjects = this.nCachedObjects_,\\n\\t\\t\\t\\tbindingsForPath = new Array( nObjects );\\n\\n\\t\\t\\tindex = bindings.length;\\n\\n\\t\\t\\tindicesByPath[ path ] = index;\\n\\n\\t\\t\\tpaths.push( path );\\n\\t\\t\\tparsedPaths.push( parsedPath );\\n\\t\\t\\tbindings.push( bindingsForPath );\\n\\n\\t\\t\\tfor ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tvar object = objects[ i ];\\n\\t\\t\\t\\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn bindingsForPath;\\n\\n\\t\\t},\\n\\n\\t\\tunsubscribe_: function ( path ) {\\n\\n\\t\\t\\t// tells the group to forget about a property path and no longer\\n\\t\\t\\t// update the array previously obtained with 'subscribe_'\\n\\n\\t\\t\\tvar indicesByPath = this._bindingsIndicesByPath,\\n\\t\\t\\t\\tindex = indicesByPath[ path ];\\n\\n\\t\\t\\tif ( index !== undefined ) {\\n\\n\\t\\t\\t\\tvar paths = this._paths,\\n\\t\\t\\t\\t\\tparsedPaths = this._parsedPaths,\\n\\t\\t\\t\\t\\tbindings = this._bindings,\\n\\t\\t\\t\\t\\tlastBindingsIndex = bindings.length - 1,\\n\\t\\t\\t\\t\\tlastBindings = bindings[ lastBindingsIndex ],\\n\\t\\t\\t\\t\\tlastBindingsPath = path[ lastBindingsIndex ];\\n\\n\\t\\t\\t\\tindicesByPath[ lastBindingsPath ] = index;\\n\\n\\t\\t\\t\\tbindings[ index ] = lastBindings;\\n\\t\\t\\t\\tbindings.pop();\\n\\n\\t\\t\\t\\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\\n\\t\\t\\t\\tparsedPaths.pop();\\n\\n\\t\\t\\t\\tpaths[ index ] = paths[ lastBindingsIndex ];\\n\\t\\t\\t\\tpaths.pop();\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * Action provided by AnimationMixer for scheduling clip playback on specific\\n\\t * objects.\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t *\\n\\t */\\n\\n\\tfunction AnimationAction( mixer, clip, localRoot ) {\\n\\n\\t\\tthis._mixer = mixer;\\n\\t\\tthis._clip = clip;\\n\\t\\tthis._localRoot = localRoot || null;\\n\\n\\t\\tvar tracks = clip.tracks,\\n\\t\\t\\tnTracks = tracks.length,\\n\\t\\t\\tinterpolants = new Array( nTracks );\\n\\n\\t\\tvar interpolantSettings = {\\n\\t\\t\\tendingStart: ZeroCurvatureEnding,\\n\\t\\t\\tendingEnd: ZeroCurvatureEnding\\n\\t\\t};\\n\\n\\t\\tfor ( var i = 0; i !== nTracks; ++ i ) {\\n\\n\\t\\t\\tvar interpolant = tracks[ i ].createInterpolant( null );\\n\\t\\t\\tinterpolants[ i ] = interpolant;\\n\\t\\t\\tinterpolant.settings = interpolantSettings;\\n\\n\\t\\t}\\n\\n\\t\\tthis._interpolantSettings = interpolantSettings;\\n\\n\\t\\tthis._interpolants = interpolants;\\t// bound by the mixer\\n\\n\\t\\t// inside: PropertyMixer (managed by the mixer)\\n\\t\\tthis._propertyBindings = new Array( nTracks );\\n\\n\\t\\tthis._cacheIndex = null;\\t\\t\\t// for the memory manager\\n\\t\\tthis._byClipCacheIndex = null;\\t\\t// for the memory manager\\n\\n\\t\\tthis._timeScaleInterpolant = null;\\n\\t\\tthis._weightInterpolant = null;\\n\\n\\t\\tthis.loop = LoopRepeat;\\n\\t\\tthis._loopCount = - 1;\\n\\n\\t\\t// global mixer time when the action is to be started\\n\\t\\t// it's set back to 'null' upon start of the action\\n\\t\\tthis._startTime = null;\\n\\n\\t\\t// scaled local time of the action\\n\\t\\t// gets clamped or wrapped to 0..clip.duration according to loop\\n\\t\\tthis.time = 0;\\n\\n\\t\\tthis.timeScale = 1;\\n\\t\\tthis._effectiveTimeScale = 1;\\n\\n\\t\\tthis.weight = 1;\\n\\t\\tthis._effectiveWeight = 1;\\n\\n\\t\\tthis.repetitions = Infinity; \\t\\t// no. of repetitions when looping\\n\\n\\t\\tthis.paused = false;\\t\\t\\t\\t// true -> zero effective time scale\\n\\t\\tthis.enabled = true;\\t\\t\\t\\t// false -> zero effective weight\\n\\n\\t\\tthis.clampWhenFinished \\t= false;\\t// keep feeding the last frame?\\n\\n\\t\\tthis.zeroSlopeAtStart \\t= true;\\t\\t// for smooth interpolation w/o separate\\n\\t\\tthis.zeroSlopeAtEnd\\t\\t= true;\\t\\t// clips for start, loop and end\\n\\n\\t}\\n\\n\\tObject.assign( AnimationAction.prototype, {\\n\\n\\t\\t// State & Scheduling\\n\\n\\t\\tplay: function () {\\n\\n\\t\\t\\tthis._mixer._activateAction( this );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tstop: function () {\\n\\n\\t\\t\\tthis._mixer._deactivateAction( this );\\n\\n\\t\\t\\treturn this.reset();\\n\\n\\t\\t},\\n\\n\\t\\treset: function () {\\n\\n\\t\\t\\tthis.paused = false;\\n\\t\\t\\tthis.enabled = true;\\n\\n\\t\\t\\tthis.time = 0;\\t\\t\\t// restart clip\\n\\t\\t\\tthis._loopCount = - 1;\\t// forget previous loops\\n\\t\\t\\tthis._startTime = null;\\t// forget scheduling\\n\\n\\t\\t\\treturn this.stopFading().stopWarping();\\n\\n\\t\\t},\\n\\n\\t\\tisRunning: function () {\\n\\n\\t\\t\\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\\n\\t\\t\\t\\t\\tthis._startTime === null && this._mixer._isActiveAction( this );\\n\\n\\t\\t},\\n\\n\\t\\t// return true when play has been called\\n\\t\\tisScheduled: function () {\\n\\n\\t\\t\\treturn this._mixer._isActiveAction( this );\\n\\n\\t\\t},\\n\\n\\t\\tstartAt: function ( time ) {\\n\\n\\t\\t\\tthis._startTime = time;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetLoop: function ( mode, repetitions ) {\\n\\n\\t\\t\\tthis.loop = mode;\\n\\t\\t\\tthis.repetitions = repetitions;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// Weight\\n\\n\\t\\t// set the weight stopping any scheduled fading\\n\\t\\t// although .enabled = false yields an effective weight of zero, this\\n\\t\\t// method does *not* change .enabled, because it would be confusing\\n\\t\\tsetEffectiveWeight: function ( weight ) {\\n\\n\\t\\t\\tthis.weight = weight;\\n\\n\\t\\t\\t// note: same logic as when updated at runtime\\n\\t\\t\\tthis._effectiveWeight = this.enabled ? weight : 0;\\n\\n\\t\\t\\treturn this.stopFading();\\n\\n\\t\\t},\\n\\n\\t\\t// return the weight considering fading and .enabled\\n\\t\\tgetEffectiveWeight: function () {\\n\\n\\t\\t\\treturn this._effectiveWeight;\\n\\n\\t\\t},\\n\\n\\t\\tfadeIn: function ( duration ) {\\n\\n\\t\\t\\treturn this._scheduleFading( duration, 0, 1 );\\n\\n\\t\\t},\\n\\n\\t\\tfadeOut: function ( duration ) {\\n\\n\\t\\t\\treturn this._scheduleFading( duration, 1, 0 );\\n\\n\\t\\t},\\n\\n\\t\\tcrossFadeFrom: function ( fadeOutAction, duration, warp ) {\\n\\n\\t\\t\\tfadeOutAction.fadeOut( duration );\\n\\t\\t\\tthis.fadeIn( duration );\\n\\n\\t\\t\\tif ( warp ) {\\n\\n\\t\\t\\t\\tvar fadeInDuration = this._clip.duration,\\n\\t\\t\\t\\t\\tfadeOutDuration = fadeOutAction._clip.duration,\\n\\n\\t\\t\\t\\t\\tstartEndRatio = fadeOutDuration / fadeInDuration,\\n\\t\\t\\t\\t\\tendStartRatio = fadeInDuration / fadeOutDuration;\\n\\n\\t\\t\\t\\tfadeOutAction.warp( 1.0, startEndRatio, duration );\\n\\t\\t\\t\\tthis.warp( endStartRatio, 1.0, duration );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcrossFadeTo: function ( fadeInAction, duration, warp ) {\\n\\n\\t\\t\\treturn fadeInAction.crossFadeFrom( this, duration, warp );\\n\\n\\t\\t},\\n\\n\\t\\tstopFading: function () {\\n\\n\\t\\t\\tvar weightInterpolant = this._weightInterpolant;\\n\\n\\t\\t\\tif ( weightInterpolant !== null ) {\\n\\n\\t\\t\\t\\tthis._weightInterpolant = null;\\n\\t\\t\\t\\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// Time Scale Control\\n\\n\\t\\t// set the time scale stopping any scheduled warping\\n\\t\\t// although .paused = true yields an effective time scale of zero, this\\n\\t\\t// method does *not* change .paused, because it would be confusing\\n\\t\\tsetEffectiveTimeScale: function ( timeScale ) {\\n\\n\\t\\t\\tthis.timeScale = timeScale;\\n\\t\\t\\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\\n\\n\\t\\t\\treturn this.stopWarping();\\n\\n\\t\\t},\\n\\n\\t\\t// return the time scale considering warping and .paused\\n\\t\\tgetEffectiveTimeScale: function () {\\n\\n\\t\\t\\treturn this._effectiveTimeScale;\\n\\n\\t\\t},\\n\\n\\t\\tsetDuration: function ( duration ) {\\n\\n\\t\\t\\tthis.timeScale = this._clip.duration / duration;\\n\\n\\t\\t\\treturn this.stopWarping();\\n\\n\\t\\t},\\n\\n\\t\\tsyncWith: function ( action ) {\\n\\n\\t\\t\\tthis.time = action.time;\\n\\t\\t\\tthis.timeScale = action.timeScale;\\n\\n\\t\\t\\treturn this.stopWarping();\\n\\n\\t\\t},\\n\\n\\t\\thalt: function ( duration ) {\\n\\n\\t\\t\\treturn this.warp( this._effectiveTimeScale, 0, duration );\\n\\n\\t\\t},\\n\\n\\t\\twarp: function ( startTimeScale, endTimeScale, duration ) {\\n\\n\\t\\t\\tvar mixer = this._mixer, now = mixer.time,\\n\\t\\t\\t\\tinterpolant = this._timeScaleInterpolant,\\n\\n\\t\\t\\t\\ttimeScale = this.timeScale;\\n\\n\\t\\t\\tif ( interpolant === null ) {\\n\\n\\t\\t\\t\\tinterpolant = mixer._lendControlInterpolant();\\n\\t\\t\\t\\tthis._timeScaleInterpolant = interpolant;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar times = interpolant.parameterPositions,\\n\\t\\t\\t\\tvalues = interpolant.sampleValues;\\n\\n\\t\\t\\ttimes[ 0 ] = now;\\n\\t\\t\\ttimes[ 1 ] = now + duration;\\n\\n\\t\\t\\tvalues[ 0 ] = startTimeScale / timeScale;\\n\\t\\t\\tvalues[ 1 ] = endTimeScale / timeScale;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tstopWarping: function () {\\n\\n\\t\\t\\tvar timeScaleInterpolant = this._timeScaleInterpolant;\\n\\n\\t\\t\\tif ( timeScaleInterpolant !== null ) {\\n\\n\\t\\t\\t\\tthis._timeScaleInterpolant = null;\\n\\t\\t\\t\\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// Object Accessors\\n\\n\\t\\tgetMixer: function () {\\n\\n\\t\\t\\treturn this._mixer;\\n\\n\\t\\t},\\n\\n\\t\\tgetClip: function () {\\n\\n\\t\\t\\treturn this._clip;\\n\\n\\t\\t},\\n\\n\\t\\tgetRoot: function () {\\n\\n\\t\\t\\treturn this._localRoot || this._mixer._root;\\n\\n\\t\\t},\\n\\n\\t\\t// Interna\\n\\n\\t\\t_update: function ( time, deltaTime, timeDirection, accuIndex ) {\\n\\n\\t\\t\\t// called by the mixer\\n\\n\\t\\t\\tif ( ! this.enabled ) {\\n\\n\\t\\t\\t\\t// call ._updateWeight() to update ._effectiveWeight\\n\\n\\t\\t\\t\\tthis._updateWeight( time );\\n\\t\\t\\t\\treturn;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar startTime = this._startTime;\\n\\n\\t\\t\\tif ( startTime !== null ) {\\n\\n\\t\\t\\t\\t// check for scheduled start of action\\n\\n\\t\\t\\t\\tvar timeRunning = ( time - startTime ) * timeDirection;\\n\\t\\t\\t\\tif ( timeRunning < 0 || timeDirection === 0 ) {\\n\\n\\t\\t\\t\\t\\treturn; // yet to come / don't decide when delta = 0\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// start\\n\\n\\t\\t\\t\\tthis._startTime = null; // unschedule\\n\\t\\t\\t\\tdeltaTime = timeDirection * timeRunning;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// apply time scale and advance time\\n\\n\\t\\t\\tdeltaTime *= this._updateTimeScale( time );\\n\\t\\t\\tvar clipTime = this._updateTime( deltaTime );\\n\\n\\t\\t\\t// note: _updateTime may disable the action resulting in\\n\\t\\t\\t// an effective weight of 0\\n\\n\\t\\t\\tvar weight = this._updateWeight( time );\\n\\n\\t\\t\\tif ( weight > 0 ) {\\n\\n\\t\\t\\t\\tvar interpolants = this._interpolants;\\n\\t\\t\\t\\tvar propertyMixers = this._propertyBindings;\\n\\n\\t\\t\\t\\tfor ( var j = 0, m = interpolants.length; j !== m; ++ j ) {\\n\\n\\t\\t\\t\\t\\tinterpolants[ j ].evaluate( clipTime );\\n\\t\\t\\t\\t\\tpropertyMixers[ j ].accumulate( accuIndex, weight );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t_updateWeight: function ( time ) {\\n\\n\\t\\t\\tvar weight = 0;\\n\\n\\t\\t\\tif ( this.enabled ) {\\n\\n\\t\\t\\t\\tweight = this.weight;\\n\\t\\t\\t\\tvar interpolant = this._weightInterpolant;\\n\\n\\t\\t\\t\\tif ( interpolant !== null ) {\\n\\n\\t\\t\\t\\t\\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\\n\\n\\t\\t\\t\\t\\tweight *= interpolantValue;\\n\\n\\t\\t\\t\\t\\tif ( time > interpolant.parameterPositions[ 1 ] ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.stopFading();\\n\\n\\t\\t\\t\\t\\t\\tif ( interpolantValue === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// faded out, disable\\n\\t\\t\\t\\t\\t\\t\\tthis.enabled = false;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis._effectiveWeight = weight;\\n\\t\\t\\treturn weight;\\n\\n\\t\\t},\\n\\n\\t\\t_updateTimeScale: function ( time ) {\\n\\n\\t\\t\\tvar timeScale = 0;\\n\\n\\t\\t\\tif ( ! this.paused ) {\\n\\n\\t\\t\\t\\ttimeScale = this.timeScale;\\n\\n\\t\\t\\t\\tvar interpolant = this._timeScaleInterpolant;\\n\\n\\t\\t\\t\\tif ( interpolant !== null ) {\\n\\n\\t\\t\\t\\t\\tvar interpolantValue = interpolant.evaluate( time )[ 0 ];\\n\\n\\t\\t\\t\\t\\ttimeScale *= interpolantValue;\\n\\n\\t\\t\\t\\t\\tif ( time > interpolant.parameterPositions[ 1 ] ) {\\n\\n\\t\\t\\t\\t\\t\\tthis.stopWarping();\\n\\n\\t\\t\\t\\t\\t\\tif ( timeScale === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// motion has halted, pause\\n\\t\\t\\t\\t\\t\\t\\tthis.paused = true;\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\t// warp done - apply final time scale\\n\\t\\t\\t\\t\\t\\t\\tthis.timeScale = timeScale;\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis._effectiveTimeScale = timeScale;\\n\\t\\t\\treturn timeScale;\\n\\n\\t\\t},\\n\\n\\t\\t_updateTime: function ( deltaTime ) {\\n\\n\\t\\t\\tvar time = this.time + deltaTime;\\n\\n\\t\\t\\tif ( deltaTime === 0 ) return time;\\n\\n\\t\\t\\tvar duration = this._clip.duration,\\n\\n\\t\\t\\t\\tloop = this.loop,\\n\\t\\t\\t\\tloopCount = this._loopCount;\\n\\n\\t\\t\\tif ( loop === LoopOnce ) {\\n\\n\\t\\t\\t\\tif ( loopCount === - 1 ) {\\n\\n\\t\\t\\t\\t\\t// just started\\n\\n\\t\\t\\t\\t\\tthis._loopCount = 0;\\n\\t\\t\\t\\t\\tthis._setEndings( true, true, false );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\thandle_stop: {\\n\\n\\t\\t\\t\\t\\tif ( time >= duration ) {\\n\\n\\t\\t\\t\\t\\t\\ttime = duration;\\n\\n\\t\\t\\t\\t\\t} else if ( time < 0 ) {\\n\\n\\t\\t\\t\\t\\t\\ttime = 0;\\n\\n\\t\\t\\t\\t\\t} else break handle_stop;\\n\\n\\t\\t\\t\\t\\tif ( this.clampWhenFinished ) this.paused = true;\\n\\t\\t\\t\\t\\telse this.enabled = false;\\n\\n\\t\\t\\t\\t\\tthis._mixer.dispatchEvent( {\\n\\t\\t\\t\\t\\t\\ttype: 'finished', action: this,\\n\\t\\t\\t\\t\\t\\tdirection: deltaTime < 0 ? - 1 : 1\\n\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else { // repetitive Repeat or PingPong\\n\\n\\t\\t\\t\\tvar pingPong = ( loop === LoopPingPong );\\n\\n\\t\\t\\t\\tif ( loopCount === - 1 ) {\\n\\n\\t\\t\\t\\t\\t// just started\\n\\n\\t\\t\\t\\t\\tif ( deltaTime >= 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tloopCount = 0;\\n\\n\\t\\t\\t\\t\\t\\tthis._setEndings( true, this.repetitions === 0, pingPong );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t// when looping in reverse direction, the initial\\n\\t\\t\\t\\t\\t\\t// transition through zero counts as a repetition,\\n\\t\\t\\t\\t\\t\\t// so leave loopCount at -1\\n\\n\\t\\t\\t\\t\\t\\tthis._setEndings( this.repetitions === 0, true, pingPong );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( time >= duration || time < 0 ) {\\n\\n\\t\\t\\t\\t\\t// wrap around\\n\\n\\t\\t\\t\\t\\tvar loopDelta = Math.floor( time / duration ); // signed\\n\\t\\t\\t\\t\\ttime -= duration * loopDelta;\\n\\n\\t\\t\\t\\t\\tloopCount += Math.abs( loopDelta );\\n\\n\\t\\t\\t\\t\\tvar pending = this.repetitions - loopCount;\\n\\n\\t\\t\\t\\t\\tif ( pending < 0 ) {\\n\\n\\t\\t\\t\\t\\t\\t// have to stop (switch state, clamp time, fire event)\\n\\n\\t\\t\\t\\t\\t\\tif ( this.clampWhenFinished ) this.paused = true;\\n\\t\\t\\t\\t\\t\\telse this.enabled = false;\\n\\n\\t\\t\\t\\t\\t\\ttime = deltaTime > 0 ? duration : 0;\\n\\n\\t\\t\\t\\t\\t\\tthis._mixer.dispatchEvent( {\\n\\t\\t\\t\\t\\t\\t\\ttype: 'finished', action: this,\\n\\t\\t\\t\\t\\t\\t\\tdirection: deltaTime > 0 ? 1 : - 1\\n\\t\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t// keep running\\n\\n\\t\\t\\t\\t\\t\\tif ( pending === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t// entering the last round\\n\\n\\t\\t\\t\\t\\t\\t\\tvar atStart = deltaTime < 0;\\n\\t\\t\\t\\t\\t\\t\\tthis._setEndings( atStart, ! atStart, pingPong );\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\t\\t\\tthis._setEndings( false, false, pingPong );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tthis._loopCount = loopCount;\\n\\n\\t\\t\\t\\t\\t\\tthis._mixer.dispatchEvent( {\\n\\t\\t\\t\\t\\t\\t\\ttype: 'loop', action: this, loopDelta: loopDelta\\n\\t\\t\\t\\t\\t\\t} );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\\n\\n\\t\\t\\t\\t\\t// invert time for the \\\"pong round\\\"\\n\\n\\t\\t\\t\\t\\tthis.time = time;\\n\\t\\t\\t\\t\\treturn duration - time;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.time = time;\\n\\t\\t\\treturn time;\\n\\n\\t\\t},\\n\\n\\t\\t_setEndings: function ( atStart, atEnd, pingPong ) {\\n\\n\\t\\t\\tvar settings = this._interpolantSettings;\\n\\n\\t\\t\\tif ( pingPong ) {\\n\\n\\t\\t\\t\\tsettings.endingStart \\t= ZeroSlopeEnding;\\n\\t\\t\\t\\tsettings.endingEnd\\t\\t= ZeroSlopeEnding;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t// assuming for LoopOnce atStart == atEnd == true\\n\\n\\t\\t\\t\\tif ( atStart ) {\\n\\n\\t\\t\\t\\t\\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tsettings.endingStart = WrapAroundEnding;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif ( atEnd ) {\\n\\n\\t\\t\\t\\t\\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tsettings.endingEnd \\t = WrapAroundEnding;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t_scheduleFading: function ( duration, weightNow, weightThen ) {\\n\\n\\t\\t\\tvar mixer = this._mixer, now = mixer.time,\\n\\t\\t\\t\\tinterpolant = this._weightInterpolant;\\n\\n\\t\\t\\tif ( interpolant === null ) {\\n\\n\\t\\t\\t\\tinterpolant = mixer._lendControlInterpolant();\\n\\t\\t\\t\\tthis._weightInterpolant = interpolant;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar times = interpolant.parameterPositions,\\n\\t\\t\\t\\tvalues = interpolant.sampleValues;\\n\\n\\t\\t\\ttimes[ 0 ] = now; \\t\\t\\t\\tvalues[ 0 ] = weightNow;\\n\\t\\t\\ttimes[ 1 ] = now + duration;\\tvalues[ 1 ] = weightThen;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t *\\n\\t * Player for AnimationClips.\\n\\t *\\n\\t *\\n\\t * @author Ben Houston / http://clara.io/\\n\\t * @author David Sarno / http://lighthaus.us/\\n\\t * @author tschw\\n\\t */\\n\\n\\tfunction AnimationMixer( root ) {\\n\\n\\t\\tthis._root = root;\\n\\t\\tthis._initMemoryManager();\\n\\t\\tthis._accuIndex = 0;\\n\\n\\t\\tthis.time = 0;\\n\\n\\t\\tthis.timeScale = 1.0;\\n\\n\\t}\\n\\n\\tAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\\n\\n\\t\\tconstructor: AnimationMixer,\\n\\n\\t\\t_bindAction: function ( action, prototypeAction ) {\\n\\n\\t\\t\\tvar root = action._localRoot || this._root,\\n\\t\\t\\t\\ttracks = action._clip.tracks,\\n\\t\\t\\t\\tnTracks = tracks.length,\\n\\t\\t\\t\\tbindings = action._propertyBindings,\\n\\t\\t\\t\\tinterpolants = action._interpolants,\\n\\t\\t\\t\\trootUuid = root.uuid,\\n\\t\\t\\t\\tbindingsByRoot = this._bindingsByRootAndName,\\n\\t\\t\\t\\tbindingsByName = bindingsByRoot[ rootUuid ];\\n\\n\\t\\t\\tif ( bindingsByName === undefined ) {\\n\\n\\t\\t\\t\\tbindingsByName = {};\\n\\t\\t\\t\\tbindingsByRoot[ rootUuid ] = bindingsByName;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0; i !== nTracks; ++ i ) {\\n\\n\\t\\t\\t\\tvar track = tracks[ i ],\\n\\t\\t\\t\\t\\ttrackName = track.name,\\n\\t\\t\\t\\t\\tbinding = bindingsByName[ trackName ];\\n\\n\\t\\t\\t\\tif ( binding !== undefined ) {\\n\\n\\t\\t\\t\\t\\tbindings[ i ] = binding;\\n\\n\\t\\t\\t\\t} else {\\n\\n\\t\\t\\t\\t\\tbinding = bindings[ i ];\\n\\n\\t\\t\\t\\t\\tif ( binding !== undefined ) {\\n\\n\\t\\t\\t\\t\\t\\t// existing binding, make sure the cache knows\\n\\n\\t\\t\\t\\t\\t\\tif ( binding._cacheIndex === null ) {\\n\\n\\t\\t\\t\\t\\t\\t\\t++ binding.referenceCount;\\n\\t\\t\\t\\t\\t\\t\\tthis._addInactiveBinding( binding, rootUuid, trackName );\\n\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tcontinue;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\tvar path = prototypeAction && prototypeAction.\\n\\t\\t\\t\\t\\t\\t_propertyBindings[ i ].binding.parsedPath;\\n\\n\\t\\t\\t\\t\\tbinding = new PropertyMixer(\\n\\t\\t\\t\\t\\t\\tPropertyBinding.create( root, trackName, path ),\\n\\t\\t\\t\\t\\t\\ttrack.ValueTypeName, track.getValueSize() );\\n\\n\\t\\t\\t\\t\\t++ binding.referenceCount;\\n\\t\\t\\t\\t\\tthis._addInactiveBinding( binding, rootUuid, trackName );\\n\\n\\t\\t\\t\\t\\tbindings[ i ] = binding;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tinterpolants[ i ].resultBuffer = binding.buffer;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t_activateAction: function ( action ) {\\n\\n\\t\\t\\tif ( ! this._isActiveAction( action ) ) {\\n\\n\\t\\t\\t\\tif ( action._cacheIndex === null ) {\\n\\n\\t\\t\\t\\t\\t// this action has been forgotten by the cache, but the user\\n\\t\\t\\t\\t\\t// appears to be still using it -> rebind\\n\\n\\t\\t\\t\\t\\tvar rootUuid = ( action._localRoot || this._root ).uuid,\\n\\t\\t\\t\\t\\t\\tclipUuid = action._clip.uuid,\\n\\t\\t\\t\\t\\t\\tactionsForClip = this._actionsByClip[ clipUuid ];\\n\\n\\t\\t\\t\\t\\tthis._bindAction( action,\\n\\t\\t\\t\\t\\t\\tactionsForClip && actionsForClip.knownActions[ 0 ] );\\n\\n\\t\\t\\t\\t\\tthis._addInactiveAction( action, clipUuid, rootUuid );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tvar bindings = action._propertyBindings;\\n\\n\\t\\t\\t\\t// increment reference counts / sort out state\\n\\t\\t\\t\\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\tvar binding = bindings[ i ];\\n\\n\\t\\t\\t\\t\\tif ( binding.useCount ++ === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tthis._lendBinding( binding );\\n\\t\\t\\t\\t\\t\\tbinding.saveOriginalState();\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis._lendAction( action );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t_deactivateAction: function ( action ) {\\n\\n\\t\\t\\tif ( this._isActiveAction( action ) ) {\\n\\n\\t\\t\\t\\tvar bindings = action._propertyBindings;\\n\\n\\t\\t\\t\\t// decrement reference counts / sort out state\\n\\t\\t\\t\\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\tvar binding = bindings[ i ];\\n\\n\\t\\t\\t\\t\\tif ( -- binding.useCount === 0 ) {\\n\\n\\t\\t\\t\\t\\t\\tbinding.restoreOriginalState();\\n\\t\\t\\t\\t\\t\\tthis._takeBackBinding( binding );\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tthis._takeBackAction( action );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t// Memory manager\\n\\n\\t\\t_initMemoryManager: function () {\\n\\n\\t\\t\\tthis._actions = []; // 'nActiveActions' followed by inactive ones\\n\\t\\t\\tthis._nActiveActions = 0;\\n\\n\\t\\t\\tthis._actionsByClip = {};\\n\\t\\t\\t// inside:\\n\\t\\t\\t// {\\n\\t\\t\\t// \\t\\tknownActions: Array< AnimationAction >\\t- used as prototypes\\n\\t\\t\\t// \\t\\tactionByRoot: AnimationAction\\t\\t\\t- lookup\\n\\t\\t\\t// }\\n\\n\\n\\t\\t\\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\\n\\t\\t\\tthis._nActiveBindings = 0;\\n\\n\\t\\t\\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\\n\\n\\n\\t\\t\\tthis._controlInterpolants = []; // same game as above\\n\\t\\t\\tthis._nActiveControlInterpolants = 0;\\n\\n\\t\\t\\tvar scope = this;\\n\\n\\t\\t\\tthis.stats = {\\n\\n\\t\\t\\t\\tactions: {\\n\\t\\t\\t\\t\\tget total() {\\n\\n\\t\\t\\t\\t\\t\\treturn scope._actions.length;\\n\\n\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\tget inUse() {\\n\\n\\t\\t\\t\\t\\t\\treturn scope._nActiveActions;\\n\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tbindings: {\\n\\t\\t\\t\\t\\tget total() {\\n\\n\\t\\t\\t\\t\\t\\treturn scope._bindings.length;\\n\\n\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\tget inUse() {\\n\\n\\t\\t\\t\\t\\t\\treturn scope._nActiveBindings;\\n\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tcontrolInterpolants: {\\n\\t\\t\\t\\t\\tget total() {\\n\\n\\t\\t\\t\\t\\t\\treturn scope._controlInterpolants.length;\\n\\n\\t\\t\\t\\t\\t},\\n\\t\\t\\t\\t\\tget inUse() {\\n\\n\\t\\t\\t\\t\\t\\treturn scope._nActiveControlInterpolants;\\n\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t};\\n\\n\\t\\t},\\n\\n\\t\\t// Memory management for AnimationAction objects\\n\\n\\t\\t_isActiveAction: function ( action ) {\\n\\n\\t\\t\\tvar index = action._cacheIndex;\\n\\t\\t\\treturn index !== null && index < this._nActiveActions;\\n\\n\\t\\t},\\n\\n\\t\\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\\n\\n\\t\\t\\tvar actions = this._actions,\\n\\t\\t\\t\\tactionsByClip = this._actionsByClip,\\n\\t\\t\\t\\tactionsForClip = actionsByClip[ clipUuid ];\\n\\n\\t\\t\\tif ( actionsForClip === undefined ) {\\n\\n\\t\\t\\t\\tactionsForClip = {\\n\\n\\t\\t\\t\\t\\tknownActions: [ action ],\\n\\t\\t\\t\\t\\tactionByRoot: {}\\n\\n\\t\\t\\t\\t};\\n\\n\\t\\t\\t\\taction._byClipCacheIndex = 0;\\n\\n\\t\\t\\t\\tactionsByClip[ clipUuid ] = actionsForClip;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tvar knownActions = actionsForClip.knownActions;\\n\\n\\t\\t\\t\\taction._byClipCacheIndex = knownActions.length;\\n\\t\\t\\t\\tknownActions.push( action );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\taction._cacheIndex = actions.length;\\n\\t\\t\\tactions.push( action );\\n\\n\\t\\t\\tactionsForClip.actionByRoot[ rootUuid ] = action;\\n\\n\\t\\t},\\n\\n\\t\\t_removeInactiveAction: function ( action ) {\\n\\n\\t\\t\\tvar actions = this._actions,\\n\\t\\t\\t\\tlastInactiveAction = actions[ actions.length - 1 ],\\n\\t\\t\\t\\tcacheIndex = action._cacheIndex;\\n\\n\\t\\t\\tlastInactiveAction._cacheIndex = cacheIndex;\\n\\t\\t\\tactions[ cacheIndex ] = lastInactiveAction;\\n\\t\\t\\tactions.pop();\\n\\n\\t\\t\\taction._cacheIndex = null;\\n\\n\\n\\t\\t\\tvar clipUuid = action._clip.uuid,\\n\\t\\t\\t\\tactionsByClip = this._actionsByClip,\\n\\t\\t\\t\\tactionsForClip = actionsByClip[ clipUuid ],\\n\\t\\t\\t\\tknownActionsForClip = actionsForClip.knownActions,\\n\\n\\t\\t\\t\\tlastKnownAction =\\n\\t\\t\\t\\t\\tknownActionsForClip[ knownActionsForClip.length - 1 ],\\n\\n\\t\\t\\t\\tbyClipCacheIndex = action._byClipCacheIndex;\\n\\n\\t\\t\\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\\n\\t\\t\\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\\n\\t\\t\\tknownActionsForClip.pop();\\n\\n\\t\\t\\taction._byClipCacheIndex = null;\\n\\n\\n\\t\\t\\tvar actionByRoot = actionsForClip.actionByRoot,\\n\\t\\t\\t\\trootUuid = ( action._localRoot || this._root ).uuid;\\n\\n\\t\\t\\tdelete actionByRoot[ rootUuid ];\\n\\n\\t\\t\\tif ( knownActionsForClip.length === 0 ) {\\n\\n\\t\\t\\t\\tdelete actionsByClip[ clipUuid ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis._removeInactiveBindingsForAction( action );\\n\\n\\t\\t},\\n\\n\\t\\t_removeInactiveBindingsForAction: function ( action ) {\\n\\n\\t\\t\\tvar bindings = action._propertyBindings;\\n\\t\\t\\tfor ( var i = 0, n = bindings.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\tvar binding = bindings[ i ];\\n\\n\\t\\t\\t\\tif ( -- binding.referenceCount === 0 ) {\\n\\n\\t\\t\\t\\t\\tthis._removeInactiveBinding( binding );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t_lendAction: function ( action ) {\\n\\n\\t\\t\\t// [ active actions | inactive actions ]\\n\\t\\t\\t// [ active actions >| inactive actions ]\\n\\t\\t\\t// s a\\n\\t\\t\\t// <-swap->\\n\\t\\t\\t// a s\\n\\n\\t\\t\\tvar actions = this._actions,\\n\\t\\t\\t\\tprevIndex = action._cacheIndex,\\n\\n\\t\\t\\t\\tlastActiveIndex = this._nActiveActions ++,\\n\\n\\t\\t\\t\\tfirstInactiveAction = actions[ lastActiveIndex ];\\n\\n\\t\\t\\taction._cacheIndex = lastActiveIndex;\\n\\t\\t\\tactions[ lastActiveIndex ] = action;\\n\\n\\t\\t\\tfirstInactiveAction._cacheIndex = prevIndex;\\n\\t\\t\\tactions[ prevIndex ] = firstInactiveAction;\\n\\n\\t\\t},\\n\\n\\t\\t_takeBackAction: function ( action ) {\\n\\n\\t\\t\\t// [ active actions | inactive actions ]\\n\\t\\t\\t// [ active actions |< inactive actions ]\\n\\t\\t\\t// a s\\n\\t\\t\\t// <-swap->\\n\\t\\t\\t// s a\\n\\n\\t\\t\\tvar actions = this._actions,\\n\\t\\t\\t\\tprevIndex = action._cacheIndex,\\n\\n\\t\\t\\t\\tfirstInactiveIndex = -- this._nActiveActions,\\n\\n\\t\\t\\t\\tlastActiveAction = actions[ firstInactiveIndex ];\\n\\n\\t\\t\\taction._cacheIndex = firstInactiveIndex;\\n\\t\\t\\tactions[ firstInactiveIndex ] = action;\\n\\n\\t\\t\\tlastActiveAction._cacheIndex = prevIndex;\\n\\t\\t\\tactions[ prevIndex ] = lastActiveAction;\\n\\n\\t\\t},\\n\\n\\t\\t// Memory management for PropertyMixer objects\\n\\n\\t\\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\\n\\n\\t\\t\\tvar bindingsByRoot = this._bindingsByRootAndName,\\n\\t\\t\\t\\tbindingByName = bindingsByRoot[ rootUuid ],\\n\\n\\t\\t\\t\\tbindings = this._bindings;\\n\\n\\t\\t\\tif ( bindingByName === undefined ) {\\n\\n\\t\\t\\t\\tbindingByName = {};\\n\\t\\t\\t\\tbindingsByRoot[ rootUuid ] = bindingByName;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tbindingByName[ trackName ] = binding;\\n\\n\\t\\t\\tbinding._cacheIndex = bindings.length;\\n\\t\\t\\tbindings.push( binding );\\n\\n\\t\\t},\\n\\n\\t\\t_removeInactiveBinding: function ( binding ) {\\n\\n\\t\\t\\tvar bindings = this._bindings,\\n\\t\\t\\t\\tpropBinding = binding.binding,\\n\\t\\t\\t\\trootUuid = propBinding.rootNode.uuid,\\n\\t\\t\\t\\ttrackName = propBinding.path,\\n\\t\\t\\t\\tbindingsByRoot = this._bindingsByRootAndName,\\n\\t\\t\\t\\tbindingByName = bindingsByRoot[ rootUuid ],\\n\\n\\t\\t\\t\\tlastInactiveBinding = bindings[ bindings.length - 1 ],\\n\\t\\t\\t\\tcacheIndex = binding._cacheIndex;\\n\\n\\t\\t\\tlastInactiveBinding._cacheIndex = cacheIndex;\\n\\t\\t\\tbindings[ cacheIndex ] = lastInactiveBinding;\\n\\t\\t\\tbindings.pop();\\n\\n\\t\\t\\tdelete bindingByName[ trackName ];\\n\\n\\t\\t\\tremove_empty_map: {\\n\\n\\t\\t\\t\\tfor ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars\\n\\n\\t\\t\\t\\tdelete bindingsByRoot[ rootUuid ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t_lendBinding: function ( binding ) {\\n\\n\\t\\t\\tvar bindings = this._bindings,\\n\\t\\t\\t\\tprevIndex = binding._cacheIndex,\\n\\n\\t\\t\\t\\tlastActiveIndex = this._nActiveBindings ++,\\n\\n\\t\\t\\t\\tfirstInactiveBinding = bindings[ lastActiveIndex ];\\n\\n\\t\\t\\tbinding._cacheIndex = lastActiveIndex;\\n\\t\\t\\tbindings[ lastActiveIndex ] = binding;\\n\\n\\t\\t\\tfirstInactiveBinding._cacheIndex = prevIndex;\\n\\t\\t\\tbindings[ prevIndex ] = firstInactiveBinding;\\n\\n\\t\\t},\\n\\n\\t\\t_takeBackBinding: function ( binding ) {\\n\\n\\t\\t\\tvar bindings = this._bindings,\\n\\t\\t\\t\\tprevIndex = binding._cacheIndex,\\n\\n\\t\\t\\t\\tfirstInactiveIndex = -- this._nActiveBindings,\\n\\n\\t\\t\\t\\tlastActiveBinding = bindings[ firstInactiveIndex ];\\n\\n\\t\\t\\tbinding._cacheIndex = firstInactiveIndex;\\n\\t\\t\\tbindings[ firstInactiveIndex ] = binding;\\n\\n\\t\\t\\tlastActiveBinding._cacheIndex = prevIndex;\\n\\t\\t\\tbindings[ prevIndex ] = lastActiveBinding;\\n\\n\\t\\t},\\n\\n\\n\\t\\t// Memory management of Interpolants for weight and time scale\\n\\n\\t\\t_lendControlInterpolant: function () {\\n\\n\\t\\t\\tvar interpolants = this._controlInterpolants,\\n\\t\\t\\t\\tlastActiveIndex = this._nActiveControlInterpolants ++,\\n\\t\\t\\t\\tinterpolant = interpolants[ lastActiveIndex ];\\n\\n\\t\\t\\tif ( interpolant === undefined ) {\\n\\n\\t\\t\\t\\tinterpolant = new LinearInterpolant(\\n\\t\\t\\t\\t\\tnew Float32Array( 2 ), new Float32Array( 2 ),\\n\\t\\t\\t\\t\\t1, this._controlInterpolantsResultBuffer );\\n\\n\\t\\t\\t\\tinterpolant.__cacheIndex = lastActiveIndex;\\n\\t\\t\\t\\tinterpolants[ lastActiveIndex ] = interpolant;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn interpolant;\\n\\n\\t\\t},\\n\\n\\t\\t_takeBackControlInterpolant: function ( interpolant ) {\\n\\n\\t\\t\\tvar interpolants = this._controlInterpolants,\\n\\t\\t\\t\\tprevIndex = interpolant.__cacheIndex,\\n\\n\\t\\t\\t\\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\\n\\n\\t\\t\\t\\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\\n\\n\\t\\t\\tinterpolant.__cacheIndex = firstInactiveIndex;\\n\\t\\t\\tinterpolants[ firstInactiveIndex ] = interpolant;\\n\\n\\t\\t\\tlastActiveInterpolant.__cacheIndex = prevIndex;\\n\\t\\t\\tinterpolants[ prevIndex ] = lastActiveInterpolant;\\n\\n\\t\\t},\\n\\n\\t\\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\\n\\n\\t\\t// return an action for a clip optionally using a custom root target\\n\\t\\t// object (this method allocates a lot of dynamic memory in case a\\n\\t\\t// previously unknown clip/root combination is specified)\\n\\t\\tclipAction: function ( clip, optionalRoot ) {\\n\\n\\t\\t\\tvar root = optionalRoot || this._root,\\n\\t\\t\\t\\trootUuid = root.uuid,\\n\\n\\t\\t\\t\\tclipObject = typeof clip === 'string' ?\\n\\t\\t\\t\\t\\tAnimationClip.findByName( root, clip ) : clip,\\n\\n\\t\\t\\t\\tclipUuid = clipObject !== null ? clipObject.uuid : clip,\\n\\n\\t\\t\\t\\tactionsForClip = this._actionsByClip[ clipUuid ],\\n\\t\\t\\t\\tprototypeAction = null;\\n\\n\\t\\t\\tif ( actionsForClip !== undefined ) {\\n\\n\\t\\t\\t\\tvar existingAction =\\n\\t\\t\\t\\t\\t\\tactionsForClip.actionByRoot[ rootUuid ];\\n\\n\\t\\t\\t\\tif ( existingAction !== undefined ) {\\n\\n\\t\\t\\t\\t\\treturn existingAction;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// we know the clip, so we don't have to parse all\\n\\t\\t\\t\\t// the bindings again but can just copy\\n\\t\\t\\t\\tprototypeAction = actionsForClip.knownActions[ 0 ];\\n\\n\\t\\t\\t\\t// also, take the clip from the prototype action\\n\\t\\t\\t\\tif ( clipObject === null )\\n\\t\\t\\t\\t\\tclipObject = prototypeAction._clip;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// clip must be known when specified via string\\n\\t\\t\\tif ( clipObject === null ) return null;\\n\\n\\t\\t\\t// allocate all resources required to run it\\n\\t\\t\\tvar newAction = new AnimationAction( this, clipObject, optionalRoot );\\n\\n\\t\\t\\tthis._bindAction( newAction, prototypeAction );\\n\\n\\t\\t\\t// and make the action known to the memory manager\\n\\t\\t\\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\\n\\n\\t\\t\\treturn newAction;\\n\\n\\t\\t},\\n\\n\\t\\t// get an existing action\\n\\t\\texistingAction: function ( clip, optionalRoot ) {\\n\\n\\t\\t\\tvar root = optionalRoot || this._root,\\n\\t\\t\\t\\trootUuid = root.uuid,\\n\\n\\t\\t\\t\\tclipObject = typeof clip === 'string' ?\\n\\t\\t\\t\\t\\tAnimationClip.findByName( root, clip ) : clip,\\n\\n\\t\\t\\t\\tclipUuid = clipObject ? clipObject.uuid : clip,\\n\\n\\t\\t\\t\\tactionsForClip = this._actionsByClip[ clipUuid ];\\n\\n\\t\\t\\tif ( actionsForClip !== undefined ) {\\n\\n\\t\\t\\t\\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn null;\\n\\n\\t\\t},\\n\\n\\t\\t// deactivates all previously scheduled actions\\n\\t\\tstopAllAction: function () {\\n\\n\\t\\t\\tvar actions = this._actions,\\n\\t\\t\\t\\tnActions = this._nActiveActions,\\n\\t\\t\\t\\tbindings = this._bindings,\\n\\t\\t\\t\\tnBindings = this._nActiveBindings;\\n\\n\\t\\t\\tthis._nActiveActions = 0;\\n\\t\\t\\tthis._nActiveBindings = 0;\\n\\n\\t\\t\\tfor ( var i = 0; i !== nActions; ++ i ) {\\n\\n\\t\\t\\t\\tactions[ i ].reset();\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0; i !== nBindings; ++ i ) {\\n\\n\\t\\t\\t\\tbindings[ i ].useCount = 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// advance the time and update apply the animation\\n\\t\\tupdate: function ( deltaTime ) {\\n\\n\\t\\t\\tdeltaTime *= this.timeScale;\\n\\n\\t\\t\\tvar actions = this._actions,\\n\\t\\t\\t\\tnActions = this._nActiveActions,\\n\\n\\t\\t\\t\\ttime = this.time += deltaTime,\\n\\t\\t\\t\\ttimeDirection = Math.sign( deltaTime ),\\n\\n\\t\\t\\t\\taccuIndex = this._accuIndex ^= 1;\\n\\n\\t\\t\\t// run active actions\\n\\n\\t\\t\\tfor ( var i = 0; i !== nActions; ++ i ) {\\n\\n\\t\\t\\t\\tvar action = actions[ i ];\\n\\n\\t\\t\\t\\taction._update( time, deltaTime, timeDirection, accuIndex );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\t// update scene graph\\n\\n\\t\\t\\tvar bindings = this._bindings,\\n\\t\\t\\t\\tnBindings = this._nActiveBindings;\\n\\n\\t\\t\\tfor ( var i = 0; i !== nBindings; ++ i ) {\\n\\n\\t\\t\\t\\tbindings[ i ].apply( accuIndex );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// return this mixer's root target object\\n\\t\\tgetRoot: function () {\\n\\n\\t\\t\\treturn this._root;\\n\\n\\t\\t},\\n\\n\\t\\t// free all resources specific to a particular clip\\n\\t\\tuncacheClip: function ( clip ) {\\n\\n\\t\\t\\tvar actions = this._actions,\\n\\t\\t\\t\\tclipUuid = clip.uuid,\\n\\t\\t\\t\\tactionsByClip = this._actionsByClip,\\n\\t\\t\\t\\tactionsForClip = actionsByClip[ clipUuid ];\\n\\n\\t\\t\\tif ( actionsForClip !== undefined ) {\\n\\n\\t\\t\\t\\t// note: just calling _removeInactiveAction would mess up the\\n\\t\\t\\t\\t// iteration state and also require updating the state we can\\n\\t\\t\\t\\t// just throw away\\n\\n\\t\\t\\t\\tvar actionsToRemove = actionsForClip.knownActions;\\n\\n\\t\\t\\t\\tfor ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\\n\\n\\t\\t\\t\\t\\tvar action = actionsToRemove[ i ];\\n\\n\\t\\t\\t\\t\\tthis._deactivateAction( action );\\n\\n\\t\\t\\t\\t\\tvar cacheIndex = action._cacheIndex,\\n\\t\\t\\t\\t\\t\\tlastInactiveAction = actions[ actions.length - 1 ];\\n\\n\\t\\t\\t\\t\\taction._cacheIndex = null;\\n\\t\\t\\t\\t\\taction._byClipCacheIndex = null;\\n\\n\\t\\t\\t\\t\\tlastInactiveAction._cacheIndex = cacheIndex;\\n\\t\\t\\t\\t\\tactions[ cacheIndex ] = lastInactiveAction;\\n\\t\\t\\t\\t\\tactions.pop();\\n\\n\\t\\t\\t\\t\\tthis._removeInactiveBindingsForAction( action );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tdelete actionsByClip[ clipUuid ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t// free all resources specific to a particular root target object\\n\\t\\tuncacheRoot: function ( root ) {\\n\\n\\t\\t\\tvar rootUuid = root.uuid,\\n\\t\\t\\t\\tactionsByClip = this._actionsByClip;\\n\\n\\t\\t\\tfor ( var clipUuid in actionsByClip ) {\\n\\n\\t\\t\\t\\tvar actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\\n\\t\\t\\t\\t\\taction = actionByRoot[ rootUuid ];\\n\\n\\t\\t\\t\\tif ( action !== undefined ) {\\n\\n\\t\\t\\t\\t\\tthis._deactivateAction( action );\\n\\t\\t\\t\\t\\tthis._removeInactiveAction( action );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar bindingsByRoot = this._bindingsByRootAndName,\\n\\t\\t\\t\\tbindingByName = bindingsByRoot[ rootUuid ];\\n\\n\\t\\t\\tif ( bindingByName !== undefined ) {\\n\\n\\t\\t\\t\\tfor ( var trackName in bindingByName ) {\\n\\n\\t\\t\\t\\t\\tvar binding = bindingByName[ trackName ];\\n\\t\\t\\t\\t\\tbinding.restoreOriginalState();\\n\\t\\t\\t\\t\\tthis._removeInactiveBinding( binding );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\t// remove a targeted clip from the cache\\n\\t\\tuncacheAction: function ( clip, optionalRoot ) {\\n\\n\\t\\t\\tvar action = this.existingAction( clip, optionalRoot );\\n\\n\\t\\t\\tif ( action !== null ) {\\n\\n\\t\\t\\t\\tthis._deactivateAction( action );\\n\\t\\t\\t\\tthis._removeInactiveAction( action );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Uniform( value ) {\\n\\n\\t\\tif ( typeof value === 'string' ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\\n\\t\\t\\tvalue = arguments[ 1 ];\\n\\n\\t\\t}\\n\\n\\t\\tthis.value = value;\\n\\n\\t}\\n\\n\\tUniform.prototype.clone = function () {\\n\\n\\t\\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author benaadams / https://twitter.com/ben_a_adams\\n\\t */\\n\\n\\tfunction InstancedBufferGeometry() {\\n\\n\\t\\tBufferGeometry.call( this );\\n\\n\\t\\tthis.type = 'InstancedBufferGeometry';\\n\\t\\tthis.maxInstancedCount = undefined;\\n\\n\\t}\\n\\n\\tInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\\n\\n\\t\\tconstructor: InstancedBufferGeometry,\\n\\n\\t\\tisInstancedBufferGeometry: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tBufferGeometry.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.maxInstancedCount = source.maxInstancedCount;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author benaadams / https://twitter.com/ben_a_adams\\n\\t */\\n\\n\\tfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.data = interleavedBuffer;\\n\\t\\tthis.itemSize = itemSize;\\n\\t\\tthis.offset = offset;\\n\\n\\t\\tthis.normalized = normalized === true;\\n\\n\\t}\\n\\n\\tObject.defineProperties( InterleavedBufferAttribute.prototype, {\\n\\n\\t\\tcount: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.data.count;\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tarray: {\\n\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.data.array;\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( InterleavedBufferAttribute.prototype, {\\n\\n\\t\\tisInterleavedBufferAttribute: true,\\n\\n\\t\\tsetX: function ( index, x ) {\\n\\n\\t\\t\\tthis.data.array[ index * this.data.stride + this.offset ] = x;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetY: function ( index, y ) {\\n\\n\\t\\t\\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetZ: function ( index, z ) {\\n\\n\\t\\t\\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetW: function ( index, w ) {\\n\\n\\t\\t\\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tgetX: function ( index ) {\\n\\n\\t\\t\\treturn this.data.array[ index * this.data.stride + this.offset ];\\n\\n\\t\\t},\\n\\n\\t\\tgetY: function ( index ) {\\n\\n\\t\\t\\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\\n\\n\\t\\t},\\n\\n\\t\\tgetZ: function ( index ) {\\n\\n\\t\\t\\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\\n\\n\\t\\t},\\n\\n\\t\\tgetW: function ( index ) {\\n\\n\\t\\t\\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\\n\\n\\t\\t},\\n\\n\\t\\tsetXY: function ( index, x, y ) {\\n\\n\\t\\t\\tindex = index * this.data.stride + this.offset;\\n\\n\\t\\t\\tthis.data.array[ index + 0 ] = x;\\n\\t\\t\\tthis.data.array[ index + 1 ] = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetXYZ: function ( index, x, y, z ) {\\n\\n\\t\\t\\tindex = index * this.data.stride + this.offset;\\n\\n\\t\\t\\tthis.data.array[ index + 0 ] = x;\\n\\t\\t\\tthis.data.array[ index + 1 ] = y;\\n\\t\\t\\tthis.data.array[ index + 2 ] = z;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetXYZW: function ( index, x, y, z, w ) {\\n\\n\\t\\t\\tindex = index * this.data.stride + this.offset;\\n\\n\\t\\t\\tthis.data.array[ index + 0 ] = x;\\n\\t\\t\\tthis.data.array[ index + 1 ] = y;\\n\\t\\t\\tthis.data.array[ index + 2 ] = z;\\n\\t\\t\\tthis.data.array[ index + 3 ] = w;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author benaadams / https://twitter.com/ben_a_adams\\n\\t */\\n\\n\\tfunction InterleavedBuffer( array, stride ) {\\n\\n\\t\\tthis.uuid = _Math.generateUUID();\\n\\n\\t\\tthis.array = array;\\n\\t\\tthis.stride = stride;\\n\\t\\tthis.count = array !== undefined ? array.length / stride : 0;\\n\\n\\t\\tthis.dynamic = false;\\n\\t\\tthis.updateRange = { offset: 0, count: - 1 };\\n\\n\\t\\tthis.onUploadCallback = function () {};\\n\\n\\t\\tthis.version = 0;\\n\\n\\t}\\n\\n\\tObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\\n\\n\\t\\tset: function ( value ) {\\n\\n\\t\\t\\tif ( value === true ) this.version ++;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( InterleavedBuffer.prototype, {\\n\\n\\t\\tisInterleavedBuffer: true,\\n\\n\\t\\tsetArray: function ( array ) {\\n\\n\\t\\t\\tif ( Array.isArray( array ) ) {\\n\\n\\t\\t\\t\\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.count = array !== undefined ? array.length / this.stride : 0;\\n\\t\\t\\tthis.array = array;\\n\\n\\t\\t},\\n\\n\\t\\tsetDynamic: function ( value ) {\\n\\n\\t\\t\\tthis.dynamic = value;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tthis.array = new source.array.constructor( source.array );\\n\\t\\t\\tthis.count = source.count;\\n\\t\\t\\tthis.stride = source.stride;\\n\\t\\t\\tthis.dynamic = source.dynamic;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tcopyAt: function ( index1, attribute, index2 ) {\\n\\n\\t\\t\\tindex1 *= this.stride;\\n\\t\\t\\tindex2 *= attribute.stride;\\n\\n\\t\\t\\tfor ( var i = 0, l = this.stride; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tset: function ( value, offset ) {\\n\\n\\t\\t\\tif ( offset === undefined ) offset = 0;\\n\\n\\t\\t\\tthis.array.set( value, offset );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tonUpload: function ( callback ) {\\n\\n\\t\\t\\tthis.onUploadCallback = callback;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author benaadams / https://twitter.com/ben_a_adams\\n\\t */\\n\\n\\tfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\\n\\n\\t\\tInterleavedBuffer.call( this, array, stride );\\n\\n\\t\\tthis.meshPerAttribute = meshPerAttribute || 1;\\n\\n\\t}\\n\\n\\tInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\\n\\n\\t\\tconstructor: InstancedInterleavedBuffer,\\n\\n\\t\\tisInstancedInterleavedBuffer: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tInterleavedBuffer.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.meshPerAttribute = source.meshPerAttribute;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author benaadams / https://twitter.com/ben_a_adams\\n\\t */\\n\\n\\tfunction InstancedBufferAttribute( array, itemSize, meshPerAttribute ) {\\n\\n\\t\\tBufferAttribute.call( this, array, itemSize );\\n\\n\\t\\tthis.meshPerAttribute = meshPerAttribute || 1;\\n\\n\\t}\\n\\n\\tInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\\n\\n\\t\\tconstructor: InstancedBufferAttribute,\\n\\n\\t\\tisInstancedBufferAttribute: true,\\n\\n\\t\\tcopy: function ( source ) {\\n\\n\\t\\t\\tBufferAttribute.prototype.copy.call( this, source );\\n\\n\\t\\t\\tthis.meshPerAttribute = source.meshPerAttribute;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author bhouston / http://clara.io/\\n\\t * @author stephomi / http://stephaneginier.com/\\n\\t */\\n\\n\\tfunction Raycaster( origin, direction, near, far ) {\\n\\n\\t\\tthis.ray = new Ray( origin, direction );\\n\\t\\t// direction is assumed to be normalized (for accurate distance calculations)\\n\\n\\t\\tthis.near = near || 0;\\n\\t\\tthis.far = far || Infinity;\\n\\n\\t\\tthis.params = {\\n\\t\\t\\tMesh: {},\\n\\t\\t\\tLine: {},\\n\\t\\t\\tLOD: {},\\n\\t\\t\\tPoints: { threshold: 1 },\\n\\t\\t\\tSprite: {}\\n\\t\\t};\\n\\n\\t\\tObject.defineProperties( this.params, {\\n\\t\\t\\tPointCloud: {\\n\\t\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\t\\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\\n\\t\\t\\t\\t\\treturn this.Points;\\n\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t} );\\n\\n\\t}\\n\\n\\tfunction ascSort( a, b ) {\\n\\n\\t\\treturn a.distance - b.distance;\\n\\n\\t}\\n\\n\\tfunction intersectObject( object, raycaster, intersects, recursive ) {\\n\\n\\t\\tif ( object.visible === false ) return;\\n\\n\\t\\tobject.raycast( raycaster, intersects );\\n\\n\\t\\tif ( recursive === true ) {\\n\\n\\t\\t\\tvar children = object.children;\\n\\n\\t\\t\\tfor ( var i = 0, l = children.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tintersectObject( children[ i ], raycaster, intersects, true );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t}\\n\\n\\tObject.assign( Raycaster.prototype, {\\n\\n\\t\\tlinePrecision: 1,\\n\\n\\t\\tset: function ( origin, direction ) {\\n\\n\\t\\t\\t// direction is assumed to be normalized (for accurate distance calculations)\\n\\n\\t\\t\\tthis.ray.set( origin, direction );\\n\\n\\t\\t},\\n\\n\\t\\tsetFromCamera: function ( coords, camera ) {\\n\\n\\t\\t\\tif ( ( camera && camera.isPerspectiveCamera ) ) {\\n\\n\\t\\t\\t\\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\\n\\t\\t\\t\\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\\n\\n\\t\\t\\t} else if ( ( camera && camera.isOrthographicCamera ) ) {\\n\\n\\t\\t\\t\\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\\n\\t\\t\\t\\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.Raycaster: Unsupported camera type.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t},\\n\\n\\t\\tintersectObject: function ( object, recursive ) {\\n\\n\\t\\t\\tvar intersects = [];\\n\\n\\t\\t\\tintersectObject( object, this, intersects, recursive );\\n\\n\\t\\t\\tintersects.sort( ascSort );\\n\\n\\t\\t\\treturn intersects;\\n\\n\\t\\t},\\n\\n\\t\\tintersectObjects: function ( objects, recursive ) {\\n\\n\\t\\t\\tvar intersects = [];\\n\\n\\t\\t\\tif ( Array.isArray( objects ) === false ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\\n\\t\\t\\t\\treturn intersects;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tfor ( var i = 0, l = objects.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tintersectObject( objects[ i ], this, intersects, recursive );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tintersects.sort( ascSort );\\n\\n\\t\\t\\treturn intersects;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction Clock( autoStart ) {\\n\\n\\t\\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\\n\\n\\t\\tthis.startTime = 0;\\n\\t\\tthis.oldTime = 0;\\n\\t\\tthis.elapsedTime = 0;\\n\\n\\t\\tthis.running = false;\\n\\n\\t}\\n\\n\\tObject.assign( Clock.prototype, {\\n\\n\\t\\tstart: function () {\\n\\n\\t\\t\\tthis.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\\n\\n\\t\\t\\tthis.oldTime = this.startTime;\\n\\t\\t\\tthis.elapsedTime = 0;\\n\\t\\t\\tthis.running = true;\\n\\n\\t\\t},\\n\\n\\t\\tstop: function () {\\n\\n\\t\\t\\tthis.getElapsedTime();\\n\\t\\t\\tthis.running = false;\\n\\t\\t\\tthis.autoStart = false;\\n\\n\\t\\t},\\n\\n\\t\\tgetElapsedTime: function () {\\n\\n\\t\\t\\tthis.getDelta();\\n\\t\\t\\treturn this.elapsedTime;\\n\\n\\t\\t},\\n\\n\\t\\tgetDelta: function () {\\n\\n\\t\\t\\tvar diff = 0;\\n\\n\\t\\t\\tif ( this.autoStart && ! this.running ) {\\n\\n\\t\\t\\t\\tthis.start();\\n\\t\\t\\t\\treturn 0;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.running ) {\\n\\n\\t\\t\\t\\tvar newTime = ( typeof performance === 'undefined' ? Date : performance ).now();\\n\\n\\t\\t\\t\\tdiff = ( newTime - this.oldTime ) / 1000;\\n\\t\\t\\t\\tthis.oldTime = newTime;\\n\\n\\t\\t\\t\\tthis.elapsedTime += diff;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn diff;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author bhouston / http://clara.io\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t *\\n\\t * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\\n\\t *\\n\\t * The poles (phi) are at the positive and negative y axis.\\n\\t * The equator starts at positive z.\\n\\t */\\n\\n\\tfunction Spherical( radius, phi, theta ) {\\n\\n\\t\\tthis.radius = ( radius !== undefined ) ? radius : 1.0;\\n\\t\\tthis.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole\\n\\t\\tthis.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere\\n\\n\\t\\treturn this;\\n\\n\\t}\\n\\n\\tObject.assign( Spherical.prototype, {\\n\\n\\t\\tset: function ( radius, phi, theta ) {\\n\\n\\t\\t\\tthis.radius = radius;\\n\\t\\t\\tthis.phi = phi;\\n\\t\\t\\tthis.theta = theta;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( other ) {\\n\\n\\t\\t\\tthis.radius = other.radius;\\n\\t\\t\\tthis.phi = other.phi;\\n\\t\\t\\tthis.theta = other.theta;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\t// restrict phi to be betwee EPS and PI-EPS\\n\\t\\tmakeSafe: function () {\\n\\n\\t\\t\\tvar EPS = 0.000001;\\n\\t\\t\\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromVector3: function ( vec3 ) {\\n\\n\\t\\t\\tthis.radius = vec3.length();\\n\\n\\t\\t\\tif ( this.radius === 0 ) {\\n\\n\\t\\t\\t\\tthis.theta = 0;\\n\\t\\t\\t\\tthis.phi = 0;\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis\\n\\t\\t\\t\\tthis.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t *\\n\\t * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\\n\\t *\\n\\t */\\n\\n\\tfunction Cylindrical( radius, theta, y ) {\\n\\n\\t\\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\\n\\t\\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\\n\\t\\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\\n\\n\\t\\treturn this;\\n\\n\\t}\\n\\n\\tObject.assign( Cylindrical.prototype, {\\n\\n\\t\\tset: function ( radius, theta, y ) {\\n\\n\\t\\t\\tthis.radius = radius;\\n\\t\\t\\tthis.theta = theta;\\n\\t\\t\\tthis.y = y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tclone: function () {\\n\\n\\t\\t\\treturn new this.constructor().copy( this );\\n\\n\\t\\t},\\n\\n\\t\\tcopy: function ( other ) {\\n\\n\\t\\t\\tthis.radius = other.radius;\\n\\t\\t\\tthis.theta = other.theta;\\n\\t\\t\\tthis.y = other.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t},\\n\\n\\t\\tsetFromVector3: function ( vec3 ) {\\n\\n\\t\\t\\tthis.radius = Math.sqrt( vec3.x * vec3.x + vec3.z * vec3.z );\\n\\t\\t\\tthis.theta = Math.atan2( vec3.x, vec3.z );\\n\\t\\t\\tthis.y = vec3.y;\\n\\n\\t\\t\\treturn this;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tfunction ImmediateRenderObject( material ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.material = material;\\n\\t\\tthis.render = function ( /* renderCallback */ ) {};\\n\\n\\t}\\n\\n\\tImmediateRenderObject.prototype = Object.create( Object3D.prototype );\\n\\tImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\\n\\n\\tImmediateRenderObject.prototype.isImmediateRenderObject = true;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction VertexNormalsHelper( object, size, hex, linewidth ) {\\n\\n\\t\\tthis.object = object;\\n\\n\\t\\tthis.size = ( size !== undefined ) ? size : 1;\\n\\n\\t\\tvar color = ( hex !== undefined ) ? hex : 0xff0000;\\n\\n\\t\\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\\n\\n\\t\\t//\\n\\n\\t\\tvar nNormals = 0;\\n\\n\\t\\tvar objGeometry = this.object.geometry;\\n\\n\\t\\tif ( objGeometry && objGeometry.isGeometry ) {\\n\\n\\t\\t\\tnNormals = objGeometry.faces.length * 3;\\n\\n\\t\\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\\n\\n\\t\\t\\tnNormals = objGeometry.attributes.normal.count;\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\n\\t\\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\\n\\n\\t\\tgeometry.addAttribute( 'position', positions );\\n\\n\\t\\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\\n\\n\\t\\t//\\n\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tVertexNormalsHelper.prototype = Object.create( LineSegments.prototype );\\n\\tVertexNormalsHelper.prototype.constructor = VertexNormalsHelper;\\n\\n\\tVertexNormalsHelper.prototype.update = ( function () {\\n\\n\\t\\tvar v1 = new Vector3();\\n\\t\\tvar v2 = new Vector3();\\n\\t\\tvar normalMatrix = new Matrix3();\\n\\n\\t\\treturn function update() {\\n\\n\\t\\t\\tvar keys = [ 'a', 'b', 'c' ];\\n\\n\\t\\t\\tthis.object.updateMatrixWorld( true );\\n\\n\\t\\t\\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\\n\\n\\t\\t\\tvar matrixWorld = this.object.matrixWorld;\\n\\n\\t\\t\\tvar position = this.geometry.attributes.position;\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar objGeometry = this.object.geometry;\\n\\n\\t\\t\\tif ( objGeometry && objGeometry.isGeometry ) {\\n\\n\\t\\t\\t\\tvar vertices = objGeometry.vertices;\\n\\n\\t\\t\\t\\tvar faces = objGeometry.faces;\\n\\n\\t\\t\\t\\tvar idx = 0;\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar face = faces[ i ];\\n\\n\\t\\t\\t\\t\\tfor ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\t\\tvar vertex = vertices[ face[ keys[ j ] ] ];\\n\\n\\t\\t\\t\\t\\t\\tvar normal = face.vertexNormals[ j ];\\n\\n\\t\\t\\t\\t\\t\\tv1.copy( vertex ).applyMatrix4( matrixWorld );\\n\\n\\t\\t\\t\\t\\t\\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\\n\\n\\t\\t\\t\\t\\t\\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\\n\\n\\t\\t\\t\\t\\t\\tidx = idx + 1;\\n\\n\\t\\t\\t\\t\\t\\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\\n\\n\\t\\t\\t\\t\\t\\tidx = idx + 1;\\n\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t} else if ( objGeometry && objGeometry.isBufferGeometry ) {\\n\\n\\t\\t\\t\\tvar objPos = objGeometry.attributes.position;\\n\\n\\t\\t\\t\\tvar objNorm = objGeometry.attributes.normal;\\n\\n\\t\\t\\t\\tvar idx = 0;\\n\\n\\t\\t\\t\\t// for simplicity, ignore index and drawcalls, and render every normal\\n\\n\\t\\t\\t\\tfor ( var j = 0, jl = objPos.count; j < jl; j ++ ) {\\n\\n\\t\\t\\t\\t\\tv1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld );\\n\\n\\t\\t\\t\\t\\tv2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) );\\n\\n\\t\\t\\t\\t\\tv2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\\n\\n\\t\\t\\t\\t\\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\\n\\n\\t\\t\\t\\t\\tidx = idx + 1;\\n\\n\\t\\t\\t\\t\\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\\n\\n\\t\\t\\t\\t\\tidx = idx + 1;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tposition.needsUpdate = true;\\n\\n\\t\\t};\\n\\n\\t}() );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction SpotLightHelper( light, color ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.light = light;\\n\\t\\tthis.light.updateMatrixWorld();\\n\\n\\t\\tthis.matrix = light.matrixWorld;\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.color = color;\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\n\\t\\tvar positions = [\\n\\t\\t\\t0, 0, 0, \\t0, 0, 1,\\n\\t\\t\\t0, 0, 0, \\t1, 0, 1,\\n\\t\\t\\t0, 0, 0,\\t- 1, 0, 1,\\n\\t\\t\\t0, 0, 0, \\t0, 1, 1,\\n\\t\\t\\t0, 0, 0, \\t0, - 1, 1\\n\\t\\t];\\n\\n\\t\\tfor ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\\n\\n\\t\\t\\tvar p1 = ( i / l ) * Math.PI * 2;\\n\\t\\t\\tvar p2 = ( j / l ) * Math.PI * 2;\\n\\n\\t\\t\\tpositions.push(\\n\\t\\t\\t\\tMath.cos( p1 ), Math.sin( p1 ), 1,\\n\\t\\t\\t\\tMath.cos( p2 ), Math.sin( p2 ), 1\\n\\t\\t\\t);\\n\\n\\t\\t}\\n\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\\n\\n\\t\\tvar material = new LineBasicMaterial( { fog: false } );\\n\\n\\t\\tthis.cone = new LineSegments( geometry, material );\\n\\t\\tthis.add( this.cone );\\n\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tSpotLightHelper.prototype = Object.create( Object3D.prototype );\\n\\tSpotLightHelper.prototype.constructor = SpotLightHelper;\\n\\n\\tSpotLightHelper.prototype.dispose = function () {\\n\\n\\t\\tthis.cone.geometry.dispose();\\n\\t\\tthis.cone.material.dispose();\\n\\n\\t};\\n\\n\\tSpotLightHelper.prototype.update = function () {\\n\\n\\t\\tvar vector = new Vector3();\\n\\t\\tvar vector2 = new Vector3();\\n\\n\\t\\treturn function update() {\\n\\n\\t\\t\\tthis.light.updateMatrixWorld();\\n\\n\\t\\t\\tvar coneLength = this.light.distance ? this.light.distance : 1000;\\n\\t\\t\\tvar coneWidth = coneLength * Math.tan( this.light.angle );\\n\\n\\t\\t\\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\\n\\n\\t\\t\\tvector.setFromMatrixPosition( this.light.matrixWorld );\\n\\t\\t\\tvector2.setFromMatrixPosition( this.light.target.matrixWorld );\\n\\n\\t\\t\\tthis.cone.lookAt( vector2.sub( vector ) );\\n\\n\\t\\t\\tif ( this.color !== undefined ) {\\n\\n\\t\\t\\t\\tthis.cone.material.color.set( this.color );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.cone.material.color.copy( this.light.color );\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}();\\n\\n\\t/**\\n\\t * @author Sean Griffin / http://twitter.com/sgrif\\n\\t * @author Michael Guerrero / http://realitymeltdown.com\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author ikerr / http://verold.com\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\tfunction getBoneList( object ) {\\n\\n\\t\\tvar boneList = [];\\n\\n\\t\\tif ( object && object.isBone ) {\\n\\n\\t\\t\\tboneList.push( object );\\n\\n\\t\\t}\\n\\n\\t\\tfor ( var i = 0; i < object.children.length; i ++ ) {\\n\\n\\t\\t\\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\\n\\n\\t\\t}\\n\\n\\t\\treturn boneList;\\n\\n\\t}\\n\\n\\tfunction SkeletonHelper( object ) {\\n\\n\\t\\tvar bones = getBoneList( object );\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\n\\t\\tvar vertices = [];\\n\\t\\tvar colors = [];\\n\\n\\t\\tvar color1 = new Color( 0, 0, 1 );\\n\\t\\tvar color2 = new Color( 0, 1, 0 );\\n\\n\\t\\tfor ( var i = 0; i < bones.length; i ++ ) {\\n\\n\\t\\t\\tvar bone = bones[ i ];\\n\\n\\t\\t\\tif ( bone.parent && bone.parent.isBone ) {\\n\\n\\t\\t\\t\\tvertices.push( 0, 0, 0 );\\n\\t\\t\\t\\tvertices.push( 0, 0, 0 );\\n\\t\\t\\t\\tcolors.push( color1.r, color1.g, color1.b );\\n\\t\\t\\t\\tcolors.push( color2.r, color2.g, color2.b );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\\n\\n\\t\\tvar material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } );\\n\\n\\t\\tLineSegments.call( this, geometry, material );\\n\\n\\t\\tthis.root = object;\\n\\t\\tthis.bones = bones;\\n\\n\\t\\tthis.matrix = object.matrixWorld;\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t}\\n\\n\\tSkeletonHelper.prototype = Object.create( LineSegments.prototype );\\n\\tSkeletonHelper.prototype.constructor = SkeletonHelper;\\n\\n\\tSkeletonHelper.prototype.updateMatrixWorld = function () {\\n\\n\\t\\tvar vector = new Vector3();\\n\\n\\t\\tvar boneMatrix = new Matrix4();\\n\\t\\tvar matrixWorldInv = new Matrix4();\\n\\n\\t\\treturn function updateMatrixWorld( force ) {\\n\\n\\t\\t\\tvar bones = this.bones;\\n\\n\\t\\t\\tvar geometry = this.geometry;\\n\\t\\t\\tvar position = geometry.getAttribute( 'position' );\\n\\n\\t\\t\\tmatrixWorldInv.getInverse( this.root.matrixWorld );\\n\\n\\t\\t\\tfor ( var i = 0, j = 0; i < bones.length; i ++ ) {\\n\\n\\t\\t\\t\\tvar bone = bones[ i ];\\n\\n\\t\\t\\t\\tif ( bone.parent && bone.parent.isBone ) {\\n\\n\\t\\t\\t\\t\\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld );\\n\\t\\t\\t\\t\\tvector.setFromMatrixPosition( boneMatrix );\\n\\t\\t\\t\\t\\tposition.setXYZ( j, vector.x, vector.y, vector.z );\\n\\n\\t\\t\\t\\t\\tboneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld );\\n\\t\\t\\t\\t\\tvector.setFromMatrixPosition( boneMatrix );\\n\\t\\t\\t\\t\\tposition.setXYZ( j + 1, vector.x, vector.y, vector.z );\\n\\n\\t\\t\\t\\t\\tj += 2;\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tgeometry.getAttribute( 'position' ).needsUpdate = true;\\n\\n\\t\\t\\tObject3D.prototype.updateMatrixWorld.call( this, force );\\n\\n\\t\\t};\\n\\n\\t}();\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction PointLightHelper( light, sphereSize, color ) {\\n\\n\\t\\tthis.light = light;\\n\\t\\tthis.light.updateMatrixWorld();\\n\\n\\t\\tthis.color = color;\\n\\n\\t\\tvar geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\\n\\t\\tvar material = new MeshBasicMaterial( { wireframe: true, fog: false } );\\n\\n\\t\\tMesh.call( this, geometry, material );\\n\\n\\t\\tthis.matrix = this.light.matrixWorld;\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.update();\\n\\n\\n\\t\\t/*\\n\\t\\tvar distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\\n\\t\\tvar distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\\n\\n\\t\\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\\n\\t\\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\\n\\n\\t\\tvar d = light.distance;\\n\\n\\t\\tif ( d === 0.0 ) {\\n\\n\\t\\t\\tthis.lightDistance.visible = false;\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tthis.lightDistance.scale.set( d, d, d );\\n\\n\\t\\t}\\n\\n\\t\\tthis.add( this.lightDistance );\\n\\t\\t*/\\n\\n\\t}\\n\\n\\tPointLightHelper.prototype = Object.create( Mesh.prototype );\\n\\tPointLightHelper.prototype.constructor = PointLightHelper;\\n\\n\\tPointLightHelper.prototype.dispose = function () {\\n\\n\\t\\tthis.geometry.dispose();\\n\\t\\tthis.material.dispose();\\n\\n\\t};\\n\\n\\tPointLightHelper.prototype.update = function () {\\n\\n\\t\\tif ( this.color !== undefined ) {\\n\\n\\t\\t\\tthis.material.color.set( this.color );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tthis.material.color.copy( this.light.color );\\n\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\tvar d = this.light.distance;\\n\\n\\t\\tif ( d === 0.0 ) {\\n\\n\\t\\t\\tthis.lightDistance.visible = false;\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tthis.lightDistance.visible = true;\\n\\t\\t\\tthis.lightDistance.scale.set( d, d, d );\\n\\n\\t\\t}\\n\\t\\t*/\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author abelnation / http://github.com/abelnation\\n\\t * @author Mugen87 / http://github.com/Mugen87\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction RectAreaLightHelper( light, color ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.light = light;\\n\\t\\tthis.light.updateMatrixWorld();\\n\\n\\t\\tthis.matrix = light.matrixWorld;\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.color = color;\\n\\n\\t\\tvar material = new LineBasicMaterial( { fog: false } );\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\n\\t\\tgeometry.addAttribute( 'position', new BufferAttribute( new Float32Array( 5 * 3 ), 3 ) );\\n\\n\\t\\tthis.line = new Line( geometry, material );\\n\\t\\tthis.add( this.line );\\n\\n\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tRectAreaLightHelper.prototype = Object.create( Object3D.prototype );\\n\\tRectAreaLightHelper.prototype.constructor = RectAreaLightHelper;\\n\\n\\tRectAreaLightHelper.prototype.dispose = function () {\\n\\n\\t\\tthis.children[ 0 ].geometry.dispose();\\n\\t\\tthis.children[ 0 ].material.dispose();\\n\\n\\t};\\n\\n\\tRectAreaLightHelper.prototype.update = function () {\\n\\n\\t\\t// calculate new dimensions of the helper\\n\\n\\t\\tvar hx = this.light.width * 0.5;\\n\\t\\tvar hy = this.light.height * 0.5;\\n\\n\\t\\tvar position = this.line.geometry.attributes.position;\\n\\t\\tvar array = position.array;\\n\\n\\t\\t// update vertices\\n\\n\\t\\tarray[ 0 ] = hx; array[ 1 ] = - hy; array[ 2 ] = 0;\\n\\t\\tarray[ 3 ] = hx; array[ 4 ] = hy; array[ 5 ] = 0;\\n\\t\\tarray[ 6 ] = - hx; array[ 7 ] = hy; array[ 8 ] = 0;\\n\\t\\tarray[ 9 ] = - hx; array[ 10 ] = - hy; array[ 11 ] = 0;\\n\\t\\tarray[ 12 ] = hx; array[ 13 ] = - hy; array[ 14 ] = 0;\\n\\n\\t\\tposition.needsUpdate = true;\\n\\n\\t\\tif ( this.color !== undefined ) {\\n\\n\\t\\t\\tthis.line.material.color.set( this.color );\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tthis.line.material.color.copy( this.light.color );\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t */\\n\\n\\tfunction HemisphereLightHelper( light, size, color ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.light = light;\\n\\t\\tthis.light.updateMatrixWorld();\\n\\n\\t\\tthis.matrix = light.matrixWorld;\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.color = color;\\n\\n\\t\\tvar geometry = new OctahedronBufferGeometry( size );\\n\\t\\tgeometry.rotateY( Math.PI * 0.5 );\\n\\n\\t\\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false } );\\n\\t\\tif ( this.color === undefined ) this.material.vertexColors = VertexColors;\\n\\n\\t\\tvar position = geometry.getAttribute( 'position' );\\n\\t\\tvar colors = new Float32Array( position.count * 3 );\\n\\n\\t\\tgeometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) );\\n\\n\\t\\tthis.add( new Mesh( geometry, this.material ) );\\n\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tHemisphereLightHelper.prototype = Object.create( Object3D.prototype );\\n\\tHemisphereLightHelper.prototype.constructor = HemisphereLightHelper;\\n\\n\\tHemisphereLightHelper.prototype.dispose = function () {\\n\\n\\t\\tthis.children[ 0 ].geometry.dispose();\\n\\t\\tthis.children[ 0 ].material.dispose();\\n\\n\\t};\\n\\n\\tHemisphereLightHelper.prototype.update = function () {\\n\\n\\t\\tvar vector = new Vector3();\\n\\n\\t\\tvar color1 = new Color();\\n\\t\\tvar color2 = new Color();\\n\\n\\t\\treturn function update() {\\n\\n\\t\\t\\tvar mesh = this.children[ 0 ];\\n\\n\\t\\t\\tif ( this.color !== undefined ) {\\n\\n\\t\\t\\t\\tthis.material.color.set( this.color );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tvar colors = mesh.geometry.getAttribute( 'color' );\\n\\n\\t\\t\\t\\tcolor1.copy( this.light.color );\\n\\t\\t\\t\\tcolor2.copy( this.light.groundColor );\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = colors.count; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tvar color = ( i < ( l / 2 ) ) ? color1 : color2;\\n\\n\\t\\t\\t\\t\\tcolors.setXYZ( i, color.r, color.g, color.b );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tcolors.needsUpdate = true;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tmesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() );\\n\\n\\t\\t};\\n\\n\\t}();\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction GridHelper( size, divisions, color1, color2 ) {\\n\\n\\t\\tsize = size || 10;\\n\\t\\tdivisions = divisions || 10;\\n\\t\\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\\n\\t\\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\\n\\n\\t\\tvar center = divisions / 2;\\n\\t\\tvar step = size / divisions;\\n\\t\\tvar halfSize = size / 2;\\n\\n\\t\\tvar vertices = [], colors = [];\\n\\n\\t\\tfor ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\\n\\n\\t\\t\\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\\n\\t\\t\\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\\n\\n\\t\\t\\tvar color = i === center ? color1 : color2;\\n\\n\\t\\t\\tcolor.toArray( colors, j ); j += 3;\\n\\t\\t\\tcolor.toArray( colors, j ); j += 3;\\n\\t\\t\\tcolor.toArray( colors, j ); j += 3;\\n\\t\\t\\tcolor.toArray( colors, j ); j += 3;\\n\\n\\t\\t}\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\\n\\n\\t\\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\\n\\n\\t\\tLineSegments.call( this, geometry, material );\\n\\n\\t}\\n\\n\\tGridHelper.prototype = Object.create( LineSegments.prototype );\\n\\tGridHelper.prototype.constructor = GridHelper;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / http://github.com/Mugen87\\n\\t * @author Hectate / http://www.github.com/Hectate\\n\\t */\\n\\n\\tfunction PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) {\\n\\n\\t\\tradius = radius || 10;\\n\\t\\tradials = radials || 16;\\n\\t\\tcircles = circles || 8;\\n\\t\\tdivisions = divisions || 64;\\n\\t\\tcolor1 = new Color( color1 !== undefined ? color1 : 0x444444 );\\n\\t\\tcolor2 = new Color( color2 !== undefined ? color2 : 0x888888 );\\n\\n\\t\\tvar vertices = [];\\n\\t\\tvar colors = [];\\n\\n\\t\\tvar x, z;\\n\\t\\tvar v, i, j, r, color;\\n\\n\\t\\t// create the radials\\n\\n\\t\\tfor ( i = 0; i <= radials; i ++ ) {\\n\\n\\t\\t\\tv = ( i / radials ) * ( Math.PI * 2 );\\n\\n\\t\\t\\tx = Math.sin( v ) * radius;\\n\\t\\t\\tz = Math.cos( v ) * radius;\\n\\n\\t\\t\\tvertices.push( 0, 0, 0 );\\n\\t\\t\\tvertices.push( x, 0, z );\\n\\n\\t\\t\\tcolor = ( i & 1 ) ? color1 : color2;\\n\\n\\t\\t\\tcolors.push( color.r, color.g, color.b );\\n\\t\\t\\tcolors.push( color.r, color.g, color.b );\\n\\n\\t\\t}\\n\\n\\t\\t// create the circles\\n\\n\\t\\tfor ( i = 0; i <= circles; i ++ ) {\\n\\n\\t\\t\\tcolor = ( i & 1 ) ? color1 : color2;\\n\\n\\t\\t\\tr = radius - ( radius / circles * i );\\n\\n\\t\\t\\tfor ( j = 0; j < divisions; j ++ ) {\\n\\n\\t\\t\\t\\t// first vertex\\n\\n\\t\\t\\t\\tv = ( j / divisions ) * ( Math.PI * 2 );\\n\\n\\t\\t\\t\\tx = Math.sin( v ) * r;\\n\\t\\t\\t\\tz = Math.cos( v ) * r;\\n\\n\\t\\t\\t\\tvertices.push( x, 0, z );\\n\\t\\t\\t\\tcolors.push( color.r, color.g, color.b );\\n\\n\\t\\t\\t\\t// second vertex\\n\\n\\t\\t\\t\\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\\n\\n\\t\\t\\t\\tx = Math.sin( v ) * r;\\n\\t\\t\\t\\tz = Math.cos( v ) * r;\\n\\n\\t\\t\\t\\tvertices.push( x, 0, z );\\n\\t\\t\\t\\tcolors.push( color.r, color.g, color.b );\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\\n\\n\\t\\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\\n\\n\\t\\tLineSegments.call( this, geometry, material );\\n\\n\\t}\\n\\n\\tPolarGridHelper.prototype = Object.create( LineSegments.prototype );\\n\\tPolarGridHelper.prototype.constructor = PolarGridHelper;\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction FaceNormalsHelper( object, size, hex, linewidth ) {\\n\\n\\t\\t// FaceNormalsHelper only supports THREE.Geometry\\n\\n\\t\\tthis.object = object;\\n\\n\\t\\tthis.size = ( size !== undefined ) ? size : 1;\\n\\n\\t\\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\\n\\n\\t\\tvar width = ( linewidth !== undefined ) ? linewidth : 1;\\n\\n\\t\\t//\\n\\n\\t\\tvar nNormals = 0;\\n\\n\\t\\tvar objGeometry = this.object.geometry;\\n\\n\\t\\tif ( objGeometry && objGeometry.isGeometry ) {\\n\\n\\t\\t\\tnNormals = objGeometry.faces.length;\\n\\n\\t\\t} else {\\n\\n\\t\\t\\tconsole.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' );\\n\\n\\t\\t}\\n\\n\\t\\t//\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\n\\t\\tvar positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 );\\n\\n\\t\\tgeometry.addAttribute( 'position', positions );\\n\\n\\t\\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) );\\n\\n\\t\\t//\\n\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tFaceNormalsHelper.prototype = Object.create( LineSegments.prototype );\\n\\tFaceNormalsHelper.prototype.constructor = FaceNormalsHelper;\\n\\n\\tFaceNormalsHelper.prototype.update = ( function () {\\n\\n\\t\\tvar v1 = new Vector3();\\n\\t\\tvar v2 = new Vector3();\\n\\t\\tvar normalMatrix = new Matrix3();\\n\\n\\t\\treturn function update() {\\n\\n\\t\\t\\tthis.object.updateMatrixWorld( true );\\n\\n\\t\\t\\tnormalMatrix.getNormalMatrix( this.object.matrixWorld );\\n\\n\\t\\t\\tvar matrixWorld = this.object.matrixWorld;\\n\\n\\t\\t\\tvar position = this.geometry.attributes.position;\\n\\n\\t\\t\\t//\\n\\n\\t\\t\\tvar objGeometry = this.object.geometry;\\n\\n\\t\\t\\tvar vertices = objGeometry.vertices;\\n\\n\\t\\t\\tvar faces = objGeometry.faces;\\n\\n\\t\\t\\tvar idx = 0;\\n\\n\\t\\t\\tfor ( var i = 0, l = faces.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar face = faces[ i ];\\n\\n\\t\\t\\t\\tvar normal = face.normal;\\n\\n\\t\\t\\t\\tv1.copy( vertices[ face.a ] )\\n\\t\\t\\t\\t\\t.add( vertices[ face.b ] )\\n\\t\\t\\t\\t\\t.add( vertices[ face.c ] )\\n\\t\\t\\t\\t\\t.divideScalar( 3 )\\n\\t\\t\\t\\t\\t.applyMatrix4( matrixWorld );\\n\\n\\t\\t\\t\\tv2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 );\\n\\n\\t\\t\\t\\tposition.setXYZ( idx, v1.x, v1.y, v1.z );\\n\\n\\t\\t\\t\\tidx = idx + 1;\\n\\n\\t\\t\\t\\tposition.setXYZ( idx, v2.x, v2.y, v2.z );\\n\\n\\t\\t\\t\\tidx = idx + 1;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tposition.needsUpdate = true;\\n\\n\\t\\t};\\n\\n\\t}() );\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction DirectionalLightHelper( light, size, color ) {\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tthis.light = light;\\n\\t\\tthis.light.updateMatrixWorld();\\n\\n\\t\\tthis.matrix = light.matrixWorld;\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.color = color;\\n\\n\\t\\tif ( size === undefined ) size = 1;\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [\\n\\t\\t\\t- size, size, 0,\\n\\t\\t\\tsize, size, 0,\\n\\t\\t\\tsize, - size, 0,\\n\\t\\t\\t- size, - size, 0,\\n\\t\\t\\t- size, size, 0\\n\\t\\t], 3 ) );\\n\\n\\t\\tvar material = new LineBasicMaterial( { fog: false } );\\n\\n\\t\\tthis.lightPlane = new Line( geometry, material );\\n\\t\\tthis.add( this.lightPlane );\\n\\n\\t\\tgeometry = new BufferGeometry();\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\\n\\n\\t\\tthis.targetLine = new Line( geometry, material );\\n\\t\\tthis.add( this.targetLine );\\n\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tDirectionalLightHelper.prototype = Object.create( Object3D.prototype );\\n\\tDirectionalLightHelper.prototype.constructor = DirectionalLightHelper;\\n\\n\\tDirectionalLightHelper.prototype.dispose = function () {\\n\\n\\t\\tthis.lightPlane.geometry.dispose();\\n\\t\\tthis.lightPlane.material.dispose();\\n\\t\\tthis.targetLine.geometry.dispose();\\n\\t\\tthis.targetLine.material.dispose();\\n\\n\\t};\\n\\n\\tDirectionalLightHelper.prototype.update = function () {\\n\\n\\t\\tvar v1 = new Vector3();\\n\\t\\tvar v2 = new Vector3();\\n\\t\\tvar v3 = new Vector3();\\n\\n\\t\\treturn function update() {\\n\\n\\t\\t\\tv1.setFromMatrixPosition( this.light.matrixWorld );\\n\\t\\t\\tv2.setFromMatrixPosition( this.light.target.matrixWorld );\\n\\t\\t\\tv3.subVectors( v2, v1 );\\n\\n\\t\\t\\tthis.lightPlane.lookAt( v3 );\\n\\n\\t\\t\\tif ( this.color !== undefined ) {\\n\\n\\t\\t\\t\\tthis.lightPlane.material.color.set( this.color );\\n\\t\\t\\t\\tthis.targetLine.material.color.set( this.color );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\tthis.lightPlane.material.color.copy( this.light.color );\\n\\t\\t\\t\\tthis.targetLine.material.color.copy( this.light.color );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.targetLine.lookAt( v3 );\\n\\t\\t\\tthis.targetLine.scale.z = v3.length();\\n\\n\\t\\t};\\n\\n\\t}();\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t * @author Mugen87 / https://github.com/Mugen87\\n\\t *\\n\\t *\\t- shows frustum, line of sight and up of the camera\\n\\t *\\t- suitable for fast updates\\n\\t * \\t- based on frustum visualization in lightgl.js shadowmap example\\n\\t *\\t\\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\\n\\t */\\n\\n\\tfunction CameraHelper( camera ) {\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\t\\tvar material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );\\n\\n\\t\\tvar vertices = [];\\n\\t\\tvar colors = [];\\n\\n\\t\\tvar pointMap = {};\\n\\n\\t\\t// colors\\n\\n\\t\\tvar colorFrustum = new Color( 0xffaa00 );\\n\\t\\tvar colorCone = new Color( 0xff0000 );\\n\\t\\tvar colorUp = new Color( 0x00aaff );\\n\\t\\tvar colorTarget = new Color( 0xffffff );\\n\\t\\tvar colorCross = new Color( 0x333333 );\\n\\n\\t\\t// near\\n\\n\\t\\taddLine( 'n1', 'n2', colorFrustum );\\n\\t\\taddLine( 'n2', 'n4', colorFrustum );\\n\\t\\taddLine( 'n4', 'n3', colorFrustum );\\n\\t\\taddLine( 'n3', 'n1', colorFrustum );\\n\\n\\t\\t// far\\n\\n\\t\\taddLine( 'f1', 'f2', colorFrustum );\\n\\t\\taddLine( 'f2', 'f4', colorFrustum );\\n\\t\\taddLine( 'f4', 'f3', colorFrustum );\\n\\t\\taddLine( 'f3', 'f1', colorFrustum );\\n\\n\\t\\t// sides\\n\\n\\t\\taddLine( 'n1', 'f1', colorFrustum );\\n\\t\\taddLine( 'n2', 'f2', colorFrustum );\\n\\t\\taddLine( 'n3', 'f3', colorFrustum );\\n\\t\\taddLine( 'n4', 'f4', colorFrustum );\\n\\n\\t\\t// cone\\n\\n\\t\\taddLine( 'p', 'n1', colorCone );\\n\\t\\taddLine( 'p', 'n2', colorCone );\\n\\t\\taddLine( 'p', 'n3', colorCone );\\n\\t\\taddLine( 'p', 'n4', colorCone );\\n\\n\\t\\t// up\\n\\n\\t\\taddLine( 'u1', 'u2', colorUp );\\n\\t\\taddLine( 'u2', 'u3', colorUp );\\n\\t\\taddLine( 'u3', 'u1', colorUp );\\n\\n\\t\\t// target\\n\\n\\t\\taddLine( 'c', 't', colorTarget );\\n\\t\\taddLine( 'p', 'c', colorCross );\\n\\n\\t\\t// cross\\n\\n\\t\\taddLine( 'cn1', 'cn2', colorCross );\\n\\t\\taddLine( 'cn3', 'cn4', colorCross );\\n\\n\\t\\taddLine( 'cf1', 'cf2', colorCross );\\n\\t\\taddLine( 'cf3', 'cf4', colorCross );\\n\\n\\t\\tfunction addLine( a, b, color ) {\\n\\n\\t\\t\\taddPoint( a, color );\\n\\t\\t\\taddPoint( b, color );\\n\\n\\t\\t}\\n\\n\\t\\tfunction addPoint( id, color ) {\\n\\n\\t\\t\\tvertices.push( 0, 0, 0 );\\n\\t\\t\\tcolors.push( color.r, color.g, color.b );\\n\\n\\t\\t\\tif ( pointMap[ id ] === undefined ) {\\n\\n\\t\\t\\t\\tpointMap[ id ] = [];\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\\n\\n\\t\\t}\\n\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\\n\\n\\t\\tLineSegments.call( this, geometry, material );\\n\\n\\t\\tthis.camera = camera;\\n\\t\\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\\n\\n\\t\\tthis.matrix = camera.matrixWorld;\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.pointMap = pointMap;\\n\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tCameraHelper.prototype = Object.create( LineSegments.prototype );\\n\\tCameraHelper.prototype.constructor = CameraHelper;\\n\\n\\tCameraHelper.prototype.update = function () {\\n\\n\\t\\tvar geometry, pointMap;\\n\\n\\t\\tvar vector = new Vector3();\\n\\t\\tvar camera = new Camera();\\n\\n\\t\\tfunction setPoint( point, x, y, z ) {\\n\\n\\t\\t\\tvector.set( x, y, z ).unproject( camera );\\n\\n\\t\\t\\tvar points = pointMap[ point ];\\n\\n\\t\\t\\tif ( points !== undefined ) {\\n\\n\\t\\t\\t\\tvar position = geometry.getAttribute( 'position' );\\n\\n\\t\\t\\t\\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\t\\tposition.setXYZ( points[ i ], vector.x, vector.y, vector.z );\\n\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\n\\t\\treturn function update() {\\n\\n\\t\\t\\tgeometry = this.geometry;\\n\\t\\t\\tpointMap = this.pointMap;\\n\\n\\t\\t\\tvar w = 1, h = 1;\\n\\n\\t\\t\\t// we need just camera projection matrix\\n\\t\\t\\t// world matrix must be identity\\n\\n\\t\\t\\tcamera.projectionMatrix.copy( this.camera.projectionMatrix );\\n\\n\\t\\t\\t// center / target\\n\\n\\t\\t\\tsetPoint( 'c', 0, 0, - 1 );\\n\\t\\t\\tsetPoint( 't', 0, 0, 1 );\\n\\n\\t\\t\\t// near\\n\\n\\t\\t\\tsetPoint( 'n1', - w, - h, - 1 );\\n\\t\\t\\tsetPoint( 'n2', w, - h, - 1 );\\n\\t\\t\\tsetPoint( 'n3', - w, h, - 1 );\\n\\t\\t\\tsetPoint( 'n4', w, h, - 1 );\\n\\n\\t\\t\\t// far\\n\\n\\t\\t\\tsetPoint( 'f1', - w, - h, 1 );\\n\\t\\t\\tsetPoint( 'f2', w, - h, 1 );\\n\\t\\t\\tsetPoint( 'f3', - w, h, 1 );\\n\\t\\t\\tsetPoint( 'f4', w, h, 1 );\\n\\n\\t\\t\\t// up\\n\\n\\t\\t\\tsetPoint( 'u1', w * 0.7, h * 1.1, - 1 );\\n\\t\\t\\tsetPoint( 'u2', - w * 0.7, h * 1.1, - 1 );\\n\\t\\t\\tsetPoint( 'u3', 0, h * 2, - 1 );\\n\\n\\t\\t\\t// cross\\n\\n\\t\\t\\tsetPoint( 'cf1', - w, 0, 1 );\\n\\t\\t\\tsetPoint( 'cf2', w, 0, 1 );\\n\\t\\t\\tsetPoint( 'cf3', 0, - h, 1 );\\n\\t\\t\\tsetPoint( 'cf4', 0, h, 1 );\\n\\n\\t\\t\\tsetPoint( 'cn1', - w, 0, - 1 );\\n\\t\\t\\tsetPoint( 'cn2', w, 0, - 1 );\\n\\t\\t\\tsetPoint( 'cn3', 0, - h, - 1 );\\n\\t\\t\\tsetPoint( 'cn4', 0, h, - 1 );\\n\\n\\t\\t\\tgeometry.getAttribute( 'position' ).needsUpdate = true;\\n\\n\\t\\t};\\n\\n\\t}();\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t * @author Mugen87 / http://github.com/Mugen87\\n\\t */\\n\\n\\tfunction BoxHelper( object, color ) {\\n\\n\\t\\tthis.object = object;\\n\\n\\t\\tif ( color === undefined ) color = 0xffff00;\\n\\n\\t\\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\\n\\t\\tvar positions = new Float32Array( 8 * 3 );\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\t\\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\\n\\t\\tgeometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) );\\n\\n\\t\\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\\n\\n\\t\\tthis.matrixAutoUpdate = false;\\n\\n\\t\\tthis.update();\\n\\n\\t}\\n\\n\\tBoxHelper.prototype = Object.create( LineSegments.prototype );\\n\\tBoxHelper.prototype.constructor = BoxHelper;\\n\\n\\tBoxHelper.prototype.update = ( function () {\\n\\n\\t\\tvar box = new Box3();\\n\\n\\t\\treturn function update( object ) {\\n\\n\\t\\t\\tif ( object !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( this.object !== undefined ) {\\n\\n\\t\\t\\t\\tbox.setFromObject( this.object );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( box.isEmpty() ) return;\\n\\n\\t\\t\\tvar min = box.min;\\n\\t\\t\\tvar max = box.max;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t 5____4\\n\\t\\t\\t1/___0/|\\n\\t\\t\\t| 6__|_7\\n\\t\\t\\t2/___3/\\n\\n\\t\\t\\t0: max.x, max.y, max.z\\n\\t\\t\\t1: min.x, max.y, max.z\\n\\t\\t\\t2: min.x, min.y, max.z\\n\\t\\t\\t3: max.x, min.y, max.z\\n\\t\\t\\t4: max.x, max.y, min.z\\n\\t\\t\\t5: min.x, max.y, min.z\\n\\t\\t\\t6: min.x, min.y, min.z\\n\\t\\t\\t7: max.x, min.y, min.z\\n\\t\\t\\t*/\\n\\n\\t\\t\\tvar position = this.geometry.attributes.position;\\n\\t\\t\\tvar array = position.array;\\n\\n\\t\\t\\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\\n\\t\\t\\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\\n\\t\\t\\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\\n\\t\\t\\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\\n\\t\\t\\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\\n\\t\\t\\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\\n\\t\\t\\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\\n\\t\\t\\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\\n\\n\\t\\t\\tposition.needsUpdate = true;\\n\\n\\t\\t\\tthis.geometry.computeBoundingSphere();\\n\\n\\t\\t};\\n\\n\\t} )();\\n\\n\\tBoxHelper.prototype.setFromObject = function ( object ) {\\n\\n\\t\\tthis.object = object;\\n\\t\\tthis.update();\\n\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction Box3Helper( box, hex ) {\\n\\n\\t\\tthis.type = 'Box3Helper';\\n\\n\\t\\tthis.box = box;\\n\\n\\t\\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\\n\\n\\t\\tvar indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\\n\\n\\t\\tvar positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\n\\t\\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\\n\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\\n\\n\\t\\tLineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) );\\n\\n\\t\\tthis.geometry.computeBoundingSphere();\\n\\n\\t}\\n\\n\\tBox3Helper.prototype = Object.create( LineSegments.prototype );\\n\\tBox3Helper.prototype.constructor = Box3Helper;\\n\\n\\tBox3Helper.prototype.updateMatrixWorld = function ( force ) {\\n\\n\\t\\tvar box = this.box;\\n\\n\\t\\tif ( box.isEmpty() ) return;\\n\\n\\t\\tbox.getCenter( this.position );\\n\\n\\t\\tbox.getSize( this.scale );\\n\\n\\t\\tthis.scale.multiplyScalar( 0.5 );\\n\\n\\t\\tObject3D.prototype.updateMatrixWorld.call( this, force );\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t */\\n\\n\\tfunction PlaneHelper( plane, size, hex ) {\\n\\n\\t\\tthis.type = 'PlaneHelper';\\n\\n\\t\\tthis.plane = plane;\\n\\n\\t\\tthis.size = ( size === undefined ) ? 1 : size;\\n\\n\\t\\tvar color = ( hex !== undefined ) ? hex : 0xffff00;\\n\\n\\t\\tvar positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\\n\\t\\tgeometry.computeBoundingSphere();\\n\\n\\t\\tLine.call( this, geometry, new LineBasicMaterial( { color: color } ) );\\n\\n\\t\\t//\\n\\n\\t\\tvar positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\\n\\n\\t\\tvar geometry2 = new BufferGeometry();\\n\\t\\tgeometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\\n\\t\\tgeometry2.computeBoundingSphere();\\n\\n\\t\\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) );\\n\\n\\t}\\n\\n\\tPlaneHelper.prototype = Object.create( Line.prototype );\\n\\tPlaneHelper.prototype.constructor = PlaneHelper;\\n\\n\\tPlaneHelper.prototype.updateMatrixWorld = function ( force ) {\\n\\n\\t\\tvar scale = - this.plane.constant;\\n\\n\\t\\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\\n\\n\\t\\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\\n\\n\\t\\tthis.lookAt( this.plane.normal );\\n\\n\\t\\tObject3D.prototype.updateMatrixWorld.call( this, force );\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author WestLangley / http://github.com/WestLangley\\n\\t * @author zz85 / http://github.com/zz85\\n\\t * @author bhouston / http://clara.io\\n\\t *\\n\\t * Creates an arrow for visualizing directions\\n\\t *\\n\\t * Parameters:\\n\\t * dir - Vector3\\n\\t * origin - Vector3\\n\\t * length - Number\\n\\t * color - color in hex value\\n\\t * headLength - Number\\n\\t * headWidth - Number\\n\\t */\\n\\n\\tvar lineGeometry;\\n\\tvar coneGeometry;\\n\\n\\tfunction ArrowHelper( dir, origin, length, color, headLength, headWidth ) {\\n\\n\\t\\t// dir is assumed to be normalized\\n\\n\\t\\tObject3D.call( this );\\n\\n\\t\\tif ( color === undefined ) color = 0xffff00;\\n\\t\\tif ( length === undefined ) length = 1;\\n\\t\\tif ( headLength === undefined ) headLength = 0.2 * length;\\n\\t\\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\\n\\n\\t\\tif ( lineGeometry === undefined ) {\\n\\n\\t\\t\\tlineGeometry = new BufferGeometry();\\n\\t\\t\\tlineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\\n\\n\\t\\t\\tconeGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\\n\\t\\t\\tconeGeometry.translate( 0, - 0.5, 0 );\\n\\n\\t\\t}\\n\\n\\t\\tthis.position.copy( origin );\\n\\n\\t\\tthis.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) );\\n\\t\\tthis.line.matrixAutoUpdate = false;\\n\\t\\tthis.add( this.line );\\n\\n\\t\\tthis.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) );\\n\\t\\tthis.cone.matrixAutoUpdate = false;\\n\\t\\tthis.add( this.cone );\\n\\n\\t\\tthis.setDirection( dir );\\n\\t\\tthis.setLength( length, headLength, headWidth );\\n\\n\\t}\\n\\n\\tArrowHelper.prototype = Object.create( Object3D.prototype );\\n\\tArrowHelper.prototype.constructor = ArrowHelper;\\n\\n\\tArrowHelper.prototype.setDirection = ( function () {\\n\\n\\t\\tvar axis = new Vector3();\\n\\t\\tvar radians;\\n\\n\\t\\treturn function setDirection( dir ) {\\n\\n\\t\\t\\t// dir is assumed to be normalized\\n\\n\\t\\t\\tif ( dir.y > 0.99999 ) {\\n\\n\\t\\t\\t\\tthis.quaternion.set( 0, 0, 0, 1 );\\n\\n\\t\\t\\t} else if ( dir.y < - 0.99999 ) {\\n\\n\\t\\t\\t\\tthis.quaternion.set( 1, 0, 0, 0 );\\n\\n\\t\\t\\t} else {\\n\\n\\t\\t\\t\\taxis.set( dir.z, 0, - dir.x ).normalize();\\n\\n\\t\\t\\t\\tradians = Math.acos( dir.y );\\n\\n\\t\\t\\t\\tthis.quaternion.setFromAxisAngle( axis, radians );\\n\\n\\t\\t\\t}\\n\\n\\t\\t};\\n\\n\\t}() );\\n\\n\\tArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) {\\n\\n\\t\\tif ( headLength === undefined ) headLength = 0.2 * length;\\n\\t\\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\\n\\n\\t\\tthis.line.scale.set( 1, Math.max( 0, length - headLength ), 1 );\\n\\t\\tthis.line.updateMatrix();\\n\\n\\t\\tthis.cone.scale.set( headWidth, headLength, headWidth );\\n\\t\\tthis.cone.position.y = length;\\n\\t\\tthis.cone.updateMatrix();\\n\\n\\t};\\n\\n\\tArrowHelper.prototype.setColor = function ( color ) {\\n\\n\\t\\tthis.line.material.color.copy( color );\\n\\t\\tthis.cone.material.color.copy( color );\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author sroucheray / http://sroucheray.org/\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction AxesHelper( size ) {\\n\\n\\t\\tsize = size || 1;\\n\\n\\t\\tvar vertices = [\\n\\t\\t\\t0, 0, 0,\\tsize, 0, 0,\\n\\t\\t\\t0, 0, 0,\\t0, size, 0,\\n\\t\\t\\t0, 0, 0,\\t0, 0, size\\n\\t\\t];\\n\\n\\t\\tvar colors = [\\n\\t\\t\\t1, 0, 0,\\t1, 0.6, 0,\\n\\t\\t\\t0, 1, 0,\\t0.6, 1, 0,\\n\\t\\t\\t0, 0, 1,\\t0, 0.6, 1\\n\\t\\t];\\n\\n\\t\\tvar geometry = new BufferGeometry();\\n\\t\\tgeometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\\n\\t\\tgeometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\\n\\n\\t\\tvar material = new LineBasicMaterial( { vertexColors: VertexColors } );\\n\\n\\t\\tLineSegments.call( this, geometry, material );\\n\\n\\t}\\n\\n\\tAxesHelper.prototype = Object.create( LineSegments.prototype );\\n\\tAxesHelper.prototype.constructor = AxesHelper;\\n\\n\\t/**\\n\\t * @author alteredq / http://alteredqualia.com/\\n\\t */\\n\\n\\tvar SceneUtils = {\\n\\n\\t\\tcreateMultiMaterialObject: function ( geometry, materials ) {\\n\\n\\t\\t\\tvar group = new Group();\\n\\n\\t\\t\\tfor ( var i = 0, l = materials.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tgroup.add( new Mesh( geometry, materials[ i ] ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn group;\\n\\n\\t\\t},\\n\\n\\t\\tdetach: function ( child, parent, scene ) {\\n\\n\\t\\t\\tchild.applyMatrix( parent.matrixWorld );\\n\\t\\t\\tparent.remove( child );\\n\\t\\t\\tscene.add( child );\\n\\n\\t\\t},\\n\\n\\t\\tattach: function ( child, scene, parent ) {\\n\\n\\t\\t\\tchild.applyMatrix( new Matrix4().getInverse( parent.matrixWorld ) );\\n\\n\\t\\t\\tscene.remove( child );\\n\\t\\t\\tparent.add( child );\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t/**\\n\\t * @author mrdoob / http://mrdoob.com/\\n\\t */\\n\\n\\tfunction Face4( a, b, c, d, normal, color, materialIndex ) {\\n\\n\\t\\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\\n\\t\\treturn new Face3( a, b, c, normal, color, materialIndex );\\n\\n\\t}\\n\\n\\tvar LineStrip = 0;\\n\\n\\tvar LinePieces = 1;\\n\\n\\tfunction MeshFaceMaterial( materials ) {\\n\\n\\t\\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\\n\\t\\treturn materials;\\n\\n\\t}\\n\\n\\tfunction MultiMaterial( materials ) {\\n\\n\\t\\tif ( materials === undefined ) materials = [];\\n\\n\\t\\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\\n\\t\\tmaterials.isMultiMaterial = true;\\n\\t\\tmaterials.materials = materials;\\n\\t\\tmaterials.clone = function () {\\n\\n\\t\\t\\treturn materials.slice();\\n\\n\\t\\t};\\n\\t\\treturn materials;\\n\\n\\t}\\n\\n\\tfunction PointCloud( geometry, material ) {\\n\\n\\t\\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\\n\\t\\treturn new Points( geometry, material );\\n\\n\\t}\\n\\n\\tfunction Particle( material ) {\\n\\n\\t\\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\\n\\t\\treturn new Sprite( material );\\n\\n\\t}\\n\\n\\tfunction ParticleSystem( geometry, material ) {\\n\\n\\t\\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\\n\\t\\treturn new Points( geometry, material );\\n\\n\\t}\\n\\n\\tfunction PointCloudMaterial( parameters ) {\\n\\n\\t\\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\\n\\t\\treturn new PointsMaterial( parameters );\\n\\n\\t}\\n\\n\\tfunction ParticleBasicMaterial( parameters ) {\\n\\n\\t\\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\\n\\t\\treturn new PointsMaterial( parameters );\\n\\n\\t}\\n\\n\\tfunction ParticleSystemMaterial( parameters ) {\\n\\n\\t\\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\\n\\t\\treturn new PointsMaterial( parameters );\\n\\n\\t}\\n\\n\\tfunction Vertex( x, y, z ) {\\n\\n\\t\\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\\n\\t\\treturn new Vector3( x, y, z );\\n\\n\\t}\\n\\n\\t//\\n\\n\\tfunction DynamicBufferAttribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' );\\n\\t\\treturn new BufferAttribute( array, itemSize ).setDynamic( true );\\n\\n\\t}\\n\\n\\tfunction Int8Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\\n\\t\\treturn new Int8BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Uint8Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\\n\\t\\treturn new Uint8BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Uint8ClampedAttribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\\n\\t\\treturn new Uint8ClampedBufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Int16Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\\n\\t\\treturn new Int16BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Uint16Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\\n\\t\\treturn new Uint16BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Int32Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\\n\\t\\treturn new Int32BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Uint32Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\\n\\t\\treturn new Uint32BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Float32Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\\n\\t\\treturn new Float32BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\tfunction Float64Attribute( array, itemSize ) {\\n\\n\\t\\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\\n\\t\\treturn new Float64BufferAttribute( array, itemSize );\\n\\n\\t}\\n\\n\\t//\\n\\n\\tCurve.create = function ( construct, getPoint ) {\\n\\n\\t\\tconsole.log( 'THREE.Curve.create() has been deprecated' );\\n\\n\\t\\tconstruct.prototype = Object.create( Curve.prototype );\\n\\t\\tconstruct.prototype.constructor = construct;\\n\\t\\tconstruct.prototype.getPoint = getPoint;\\n\\n\\t\\treturn construct;\\n\\n\\t};\\n\\n\\t//\\n\\n\\tObject.assign( CurvePath.prototype, {\\n\\n\\t\\tcreatePointsGeometry: function ( divisions ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\\n\\n\\t\\t\\t// generate geometry from path points (for Line or Points objects)\\n\\n\\t\\t\\tvar pts = this.getPoints( divisions );\\n\\t\\t\\treturn this.createGeometry( pts );\\n\\n\\t\\t},\\n\\n\\t\\tcreateSpacedPointsGeometry: function ( divisions ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\\n\\n\\t\\t\\t// generate geometry from equidistant sampling along the path\\n\\n\\t\\t\\tvar pts = this.getSpacedPoints( divisions );\\n\\t\\t\\treturn this.createGeometry( pts );\\n\\n\\t\\t},\\n\\n\\t\\tcreateGeometry: function ( points ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\\n\\n\\t\\t\\tvar geometry = new Geometry();\\n\\n\\t\\t\\tfor ( var i = 0, l = points.length; i < l; i ++ ) {\\n\\n\\t\\t\\t\\tvar point = points[ i ];\\n\\t\\t\\t\\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn geometry;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tObject.assign( Path.prototype, {\\n\\n\\t\\tfromPoints: function ( points ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\\n\\t\\t\\tthis.setFromPoints( points );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tfunction ClosedSplineCurve3( points ) {\\n\\n\\t\\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\\n\\n\\t\\tCatmullRomCurve3.call( this, points );\\n\\t\\tthis.type = 'catmullrom';\\n\\t\\tthis.closed = true;\\n\\n\\t}\\n\\n\\tClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\\n\\n\\t//\\n\\n\\tfunction SplineCurve3( points ) {\\n\\n\\t\\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\\n\\n\\t\\tCatmullRomCurve3.call( this, points );\\n\\t\\tthis.type = 'catmullrom';\\n\\n\\t}\\n\\n\\tSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\\n\\n\\t//\\n\\n\\tfunction Spline( points ) {\\n\\n\\t\\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\\n\\n\\t\\tCatmullRomCurve3.call( this, points );\\n\\t\\tthis.type = 'catmullrom';\\n\\n\\t}\\n\\n\\tSpline.prototype = Object.create( CatmullRomCurve3.prototype );\\n\\n\\tObject.assign( Spline.prototype, {\\n\\n\\t\\tinitFromArray: function ( /* a */ ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\\n\\n\\t\\t},\\n\\t\\tgetControlPointsArray: function ( /* optionalTarget */ ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\\n\\n\\t\\t},\\n\\t\\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tfunction AxisHelper( size ) {\\n\\n\\t\\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\\n\\t\\treturn new AxesHelper( size );\\n\\n\\t}\\n\\n\\tfunction BoundingBoxHelper( object, color ) {\\n\\n\\t\\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\\n\\t\\treturn new BoxHelper( object, color );\\n\\n\\t}\\n\\n\\tfunction EdgesHelper( object, hex ) {\\n\\n\\t\\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\\n\\t\\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\\n\\n\\t}\\n\\n\\tGridHelper.prototype.setColors = function () {\\n\\n\\t\\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\\n\\n\\t};\\n\\n\\tSkeletonHelper.prototype.update = function () {\\n\\n\\t\\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\\n\\n\\t};\\n\\n\\tfunction WireframeHelper( object, hex ) {\\n\\n\\t\\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\\n\\t\\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\\n\\n\\t}\\n\\n\\t//\\n\\n\\tObject.assign( Loader.prototype, {\\n\\n\\t\\textractUrlBase: function ( url ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\\n\\t\\t\\treturn LoaderUtils.extractUrlBase( url );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tfunction XHRLoader( manager ) {\\n\\n\\t\\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\\n\\t\\treturn new FileLoader( manager );\\n\\n\\t}\\n\\n\\tfunction BinaryTextureLoader( manager ) {\\n\\n\\t\\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\\n\\t\\treturn new DataTextureLoader( manager );\\n\\n\\t}\\n\\n\\t//\\n\\n\\tObject.assign( Box2.prototype, {\\n\\n\\t\\tcenter: function ( optionalTarget ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\\n\\t\\t\\treturn this.getCenter( optionalTarget );\\n\\n\\t\\t},\\n\\t\\tempty: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\\n\\t\\t\\treturn this.isEmpty();\\n\\n\\t\\t},\\n\\t\\tisIntersectionBox: function ( box ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\\n\\t\\t\\treturn this.intersectsBox( box );\\n\\n\\t\\t},\\n\\t\\tsize: function ( optionalTarget ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\\n\\t\\t\\treturn this.getSize( optionalTarget );\\n\\n\\t\\t}\\n\\t} );\\n\\n\\tObject.assign( Box3.prototype, {\\n\\n\\t\\tcenter: function ( optionalTarget ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\\n\\t\\t\\treturn this.getCenter( optionalTarget );\\n\\n\\t\\t},\\n\\t\\tempty: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\\n\\t\\t\\treturn this.isEmpty();\\n\\n\\t\\t},\\n\\t\\tisIntersectionBox: function ( box ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\\n\\t\\t\\treturn this.intersectsBox( box );\\n\\n\\t\\t},\\n\\t\\tisIntersectionSphere: function ( sphere ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\\n\\t\\t\\treturn this.intersectsSphere( sphere );\\n\\n\\t\\t},\\n\\t\\tsize: function ( optionalTarget ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\\n\\t\\t\\treturn this.getSize( optionalTarget );\\n\\n\\t\\t}\\n\\t} );\\n\\n\\tLine3.prototype.center = function ( optionalTarget ) {\\n\\n\\t\\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\\n\\t\\treturn this.getCenter( optionalTarget );\\n\\n\\t};\\n\\n\\tObject.assign( _Math, {\\n\\n\\t\\trandom16: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\\n\\t\\t\\treturn Math.random();\\n\\n\\t\\t},\\n\\n\\t\\tnearestPowerOfTwo: function ( value ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\\n\\t\\t\\treturn _Math.floorPowerOfTwo( value );\\n\\n\\t\\t},\\n\\n\\t\\tnextPowerOfTwo: function ( value ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\\n\\t\\t\\treturn _Math.ceilPowerOfTwo( value );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Matrix3.prototype, {\\n\\n\\t\\tflattenToArrayOffset: function ( array, offset ) {\\n\\n\\t\\t\\tconsole.warn( \\\"THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\\\" );\\n\\t\\t\\treturn this.toArray( array, offset );\\n\\n\\t\\t},\\n\\t\\tmultiplyVector3: function ( vector ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\\n\\t\\t\\treturn vector.applyMatrix3( this );\\n\\n\\t\\t},\\n\\t\\tmultiplyVector3Array: function ( /* a */ ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\\n\\n\\t\\t},\\n\\t\\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\\n\\t\\t\\treturn this.applyToBufferAttribute( buffer );\\n\\n\\t\\t},\\n\\t\\tapplyToVector3Array: function ( /* array, offset, length */ ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Matrix4.prototype, {\\n\\n\\t\\textractPosition: function ( m ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\\n\\t\\t\\treturn this.copyPosition( m );\\n\\n\\t\\t},\\n\\t\\tflattenToArrayOffset: function ( array, offset ) {\\n\\n\\t\\t\\tconsole.warn( \\\"THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.\\\" );\\n\\t\\t\\treturn this.toArray( array, offset );\\n\\n\\t\\t},\\n\\t\\tgetPosition: function () {\\n\\n\\t\\t\\tvar v1;\\n\\n\\t\\t\\treturn function getPosition() {\\n\\n\\t\\t\\t\\tif ( v1 === undefined ) v1 = new Vector3();\\n\\t\\t\\t\\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\\n\\t\\t\\t\\treturn v1.setFromMatrixColumn( this, 3 );\\n\\n\\t\\t\\t};\\n\\n\\t\\t}(),\\n\\t\\tsetRotationFromQuaternion: function ( q ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\\n\\t\\t\\treturn this.makeRotationFromQuaternion( q );\\n\\n\\t\\t},\\n\\t\\tmultiplyToArray: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\\n\\n\\t\\t},\\n\\t\\tmultiplyVector3: function ( vector ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\\n\\t\\t\\treturn vector.applyMatrix4( this );\\n\\n\\t\\t},\\n\\t\\tmultiplyVector4: function ( vector ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\\n\\t\\t\\treturn vector.applyMatrix4( this );\\n\\n\\t\\t},\\n\\t\\tmultiplyVector3Array: function ( /* a */ ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\\n\\n\\t\\t},\\n\\t\\trotateAxis: function ( v ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\\n\\t\\t\\tv.transformDirection( this );\\n\\n\\t\\t},\\n\\t\\tcrossVector: function ( vector ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\\n\\t\\t\\treturn vector.applyMatrix4( this );\\n\\n\\t\\t},\\n\\t\\ttranslate: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\\n\\n\\t\\t},\\n\\t\\trotateX: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\\n\\n\\t\\t},\\n\\t\\trotateY: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\\n\\n\\t\\t},\\n\\t\\trotateZ: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\\n\\n\\t\\t},\\n\\t\\trotateByAxis: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\\n\\n\\t\\t},\\n\\t\\tapplyToBuffer: function ( buffer /*, offset, length */ ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' );\\n\\t\\t\\treturn this.applyToBufferAttribute( buffer );\\n\\n\\t\\t},\\n\\t\\tapplyToVector3Array: function ( /* array, offset, length */ ) {\\n\\n\\t\\t\\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\\n\\n\\t\\t},\\n\\t\\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\\n\\t\\t\\treturn this.makePerspective( left, right, top, bottom, near, far );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tPlane.prototype.isIntersectionLine = function ( line ) {\\n\\n\\t\\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\\n\\t\\treturn this.intersectsLine( line );\\n\\n\\t};\\n\\n\\tQuaternion.prototype.multiplyVector3 = function ( vector ) {\\n\\n\\t\\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\\n\\t\\treturn vector.applyQuaternion( this );\\n\\n\\t};\\n\\n\\tObject.assign( Ray.prototype, {\\n\\n\\t\\tisIntersectionBox: function ( box ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\\n\\t\\t\\treturn this.intersectsBox( box );\\n\\n\\t\\t},\\n\\t\\tisIntersectionPlane: function ( plane ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\\n\\t\\t\\treturn this.intersectsPlane( plane );\\n\\n\\t\\t},\\n\\t\\tisIntersectionSphere: function ( sphere ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\\n\\t\\t\\treturn this.intersectsSphere( sphere );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Shape.prototype, {\\n\\n\\t\\textractAllPoints: function ( divisions ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\\n\\t\\t\\treturn this.extractPoints( divisions );\\n\\n\\t\\t},\\n\\t\\textrude: function ( options ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\\n\\t\\t\\treturn new ExtrudeGeometry( this, options );\\n\\n\\t\\t},\\n\\t\\tmakeGeometry: function ( options ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\\n\\t\\t\\treturn new ShapeGeometry( this, options );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Vector2.prototype, {\\n\\n\\t\\tfromAttribute: function ( attribute, index, offset ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\\n\\t\\t\\treturn this.fromBufferAttribute( attribute, index, offset );\\n\\n\\t\\t},\\n\\t\\tdistanceToManhattan: function ( v ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\\n\\t\\t\\treturn this.manhattanDistanceTo( v );\\n\\n\\t\\t},\\n\\t\\tlengthManhattan: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\\n\\t\\t\\treturn this.manhattanLength();\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Vector3.prototype, {\\n\\n\\t\\tsetEulerFromRotationMatrix: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\\n\\n\\t\\t},\\n\\t\\tsetEulerFromQuaternion: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\\n\\n\\t\\t},\\n\\t\\tgetPositionFromMatrix: function ( m ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\\n\\t\\t\\treturn this.setFromMatrixPosition( m );\\n\\n\\t\\t},\\n\\t\\tgetScaleFromMatrix: function ( m ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\\n\\t\\t\\treturn this.setFromMatrixScale( m );\\n\\n\\t\\t},\\n\\t\\tgetColumnFromMatrix: function ( index, matrix ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\\n\\t\\t\\treturn this.setFromMatrixColumn( matrix, index );\\n\\n\\t\\t},\\n\\t\\tapplyProjection: function ( m ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\\n\\t\\t\\treturn this.applyMatrix4( m );\\n\\n\\t\\t},\\n\\t\\tfromAttribute: function ( attribute, index, offset ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\\n\\t\\t\\treturn this.fromBufferAttribute( attribute, index, offset );\\n\\n\\t\\t},\\n\\t\\tdistanceToManhattan: function ( v ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\\n\\t\\t\\treturn this.manhattanDistanceTo( v );\\n\\n\\t\\t},\\n\\t\\tlengthManhattan: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\\n\\t\\t\\treturn this.manhattanLength();\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( Vector4.prototype, {\\n\\n\\t\\tfromAttribute: function ( attribute, index, offset ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\\n\\t\\t\\treturn this.fromBufferAttribute( attribute, index, offset );\\n\\n\\t\\t},\\n\\t\\tlengthManhattan: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\\n\\t\\t\\treturn this.manhattanLength();\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tGeometry.prototype.computeTangents = function () {\\n\\n\\t\\tconsole.warn( 'THREE.Geometry: .computeTangents() has been removed.' );\\n\\n\\t};\\n\\n\\tObject.assign( Object3D.prototype, {\\n\\n\\t\\tgetChildByName: function ( name ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\\n\\t\\t\\treturn this.getObjectByName( name );\\n\\n\\t\\t},\\n\\t\\trenderDepth: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\\n\\n\\t\\t},\\n\\t\\ttranslate: function ( distance, axis ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\\n\\t\\t\\treturn this.translateOnAxis( axis, distance );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( Object3D.prototype, {\\n\\n\\t\\teulerOrder: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\\n\\t\\t\\t\\treturn this.rotation.order;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\\n\\t\\t\\t\\tthis.rotation.order = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tuseQuaternion: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( LOD.prototype, {\\n\\n\\t\\tobjects: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\\n\\t\\t\\t\\treturn this.levels;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\\n\\n\\t\\tget: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\\n\\n\\t\\t},\\n\\t\\tset: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\\n\\n\\t\\tget: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\\n\\t\\t\\treturn this.arcLengthDivisions;\\n\\n\\t\\t},\\n\\t\\tset: function ( value ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\\n\\t\\t\\tthis.arcLengthDivisions = value;\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\\n\\n\\t\\tconsole.warn( \\\"THREE.PerspectiveCamera.setLens is deprecated. \\\" +\\n\\t\\t\\t\\t\\\"Use .setFocalLength and .filmGauge for a photographic setup.\\\" );\\n\\n\\t\\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\\n\\t\\tthis.setFocalLength( focalLength );\\n\\n\\t};\\n\\n\\t//\\n\\n\\tObject.defineProperties( Light.prototype, {\\n\\t\\tonlyShadow: {\\n\\t\\t\\tset: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraFov: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\\n\\t\\t\\t\\tthis.shadow.camera.fov = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraLeft: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\\n\\t\\t\\t\\tthis.shadow.camera.left = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraRight: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\\n\\t\\t\\t\\tthis.shadow.camera.right = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraTop: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\\n\\t\\t\\t\\tthis.shadow.camera.top = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraBottom: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\\n\\t\\t\\t\\tthis.shadow.camera.bottom = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraNear: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\\n\\t\\t\\t\\tthis.shadow.camera.near = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraFar: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\\n\\t\\t\\t\\tthis.shadow.camera.far = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowCameraVisible: {\\n\\t\\t\\tset: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowBias: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\\n\\t\\t\\t\\tthis.shadow.bias = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowDarkness: {\\n\\t\\t\\tset: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowMapWidth: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\\n\\t\\t\\t\\tthis.shadow.mapSize.width = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowMapHeight: {\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\\n\\t\\t\\t\\tthis.shadow.mapSize.height = value;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} );\\n\\n\\t//\\n\\n\\tObject.defineProperties( BufferAttribute.prototype, {\\n\\n\\t\\tlength: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\\n\\t\\t\\t\\treturn this.array.length;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.assign( BufferGeometry.prototype, {\\n\\n\\t\\taddIndex: function ( index ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\\n\\t\\t\\tthis.setIndex( index );\\n\\n\\t\\t},\\n\\t\\taddDrawCall: function ( start, count, indexOffset ) {\\n\\n\\t\\t\\tif ( indexOffset !== undefined ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\\n\\n\\t\\t\\t}\\n\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\\n\\t\\t\\tthis.addGroup( start, count );\\n\\n\\t\\t},\\n\\t\\tclearDrawCalls: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\\n\\t\\t\\tthis.clearGroups();\\n\\n\\t\\t},\\n\\t\\tcomputeTangents: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\\n\\n\\t\\t},\\n\\t\\tcomputeOffsets: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( BufferGeometry.prototype, {\\n\\n\\t\\tdrawcalls: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\\n\\t\\t\\t\\treturn this.groups;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\toffsets: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\\n\\t\\t\\t\\treturn this.groups;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tObject.defineProperties( Uniform.prototype, {\\n\\n\\t\\tdynamic: {\\n\\t\\t\\tset: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tonUpdate: {\\n\\t\\t\\tvalue: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\\n\\t\\t\\t\\treturn this;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tObject.defineProperties( Material.prototype, {\\n\\n\\t\\twrapAround: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\twrapRGB: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\\n\\t\\t\\t\\treturn new Color();\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tshading: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\\n\\t\\t\\t\\tthis.flatShading = ( value === FlatShading );\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( MeshPhongMaterial.prototype, {\\n\\n\\t\\tmetal: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\\n\\t\\t\\t\\treturn false;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( ShaderMaterial.prototype, {\\n\\n\\t\\tderivatives: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\\n\\t\\t\\t\\treturn this.extensions.derivatives;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\\n\\t\\t\\t\\tthis.extensions.derivatives = value;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tObject.assign( WebGLRenderer.prototype, {\\n\\n\\t\\tgetCurrentRenderTarget: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\\n\\t\\t\\treturn this.getRenderTarget();\\n\\n\\t\\t},\\n\\n\\t\\tgetMaxAnisotropy: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\\n\\t\\t\\treturn this.capabilities.getMaxAnisotropy();\\n\\n\\t\\t},\\n\\n\\t\\tgetPrecision: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\\n\\t\\t\\treturn this.capabilities.precision;\\n\\n\\t\\t},\\n\\n\\t\\tresetGLState: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\\n\\t\\t\\treturn this.state.reset();\\n\\n\\t\\t},\\n\\n\\t\\tsupportsFloatTextures: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\\\'OES_texture_float\\\\' ).' );\\n\\t\\t\\treturn this.extensions.get( 'OES_texture_float' );\\n\\n\\t\\t},\\n\\t\\tsupportsHalfFloatTextures: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\\\'OES_texture_half_float\\\\' ).' );\\n\\t\\t\\treturn this.extensions.get( 'OES_texture_half_float' );\\n\\n\\t\\t},\\n\\t\\tsupportsStandardDerivatives: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\\\'OES_standard_derivatives\\\\' ).' );\\n\\t\\t\\treturn this.extensions.get( 'OES_standard_derivatives' );\\n\\n\\t\\t},\\n\\t\\tsupportsCompressedTextureS3TC: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\\\'WEBGL_compressed_texture_s3tc\\\\' ).' );\\n\\t\\t\\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\\n\\n\\t\\t},\\n\\t\\tsupportsCompressedTexturePVRTC: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\\\'WEBGL_compressed_texture_pvrtc\\\\' ).' );\\n\\t\\t\\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\\n\\n\\t\\t},\\n\\t\\tsupportsBlendMinMax: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\\\'EXT_blend_minmax\\\\' ).' );\\n\\t\\t\\treturn this.extensions.get( 'EXT_blend_minmax' );\\n\\n\\t\\t},\\n\\t\\tsupportsVertexTextures: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\\n\\t\\t\\treturn this.capabilities.vertexTextures;\\n\\n\\t\\t},\\n\\t\\tsupportsInstancedArrays: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\\\'ANGLE_instanced_arrays\\\\' ).' );\\n\\t\\t\\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\\n\\n\\t\\t},\\n\\t\\tenableScissorTest: function ( boolean ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\\n\\t\\t\\tthis.setScissorTest( boolean );\\n\\n\\t\\t},\\n\\t\\tinitMaterial: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\\n\\n\\t\\t},\\n\\t\\taddPrePlugin: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\\n\\n\\t\\t},\\n\\t\\taddPostPlugin: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\\n\\n\\t\\t},\\n\\t\\tupdateShadowMap: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( WebGLRenderer.prototype, {\\n\\n\\t\\tshadowMapEnabled: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.shadowMap.enabled;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\\n\\t\\t\\t\\tthis.shadowMap.enabled = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowMapType: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.shadowMap.type;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\\n\\t\\t\\t\\tthis.shadowMap.type = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tshadowMapCullFace: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.shadowMap.cullFace;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' );\\n\\t\\t\\t\\tthis.shadowMap.cullFace = value;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\t} );\\n\\n\\tObject.defineProperties( WebGLShadowMap.prototype, {\\n\\n\\t\\tcullFace: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\treturn this.renderReverseSided ? CullFaceFront : CullFaceBack;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( cullFace ) {\\n\\n\\t\\t\\t\\tvar value = ( cullFace !== CullFaceBack );\\n\\t\\t\\t\\tconsole.warn( \\\"WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to \\\" + value + \\\".\\\" );\\n\\t\\t\\t\\tthis.renderReverseSided = value;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tObject.defineProperties( WebGLRenderTarget.prototype, {\\n\\n\\t\\twrapS: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\\n\\t\\t\\t\\treturn this.texture.wrapS;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\\n\\t\\t\\t\\tthis.texture.wrapS = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\twrapT: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\\n\\t\\t\\t\\treturn this.texture.wrapT;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\\n\\t\\t\\t\\tthis.texture.wrapT = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tmagFilter: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\\n\\t\\t\\t\\treturn this.texture.magFilter;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\\n\\t\\t\\t\\tthis.texture.magFilter = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tminFilter: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\\n\\t\\t\\t\\treturn this.texture.minFilter;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\\n\\t\\t\\t\\tthis.texture.minFilter = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tanisotropy: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\\n\\t\\t\\t\\treturn this.texture.anisotropy;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\\n\\t\\t\\t\\tthis.texture.anisotropy = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\toffset: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\\n\\t\\t\\t\\treturn this.texture.offset;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\\n\\t\\t\\t\\tthis.texture.offset = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\trepeat: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\\n\\t\\t\\t\\treturn this.texture.repeat;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\\n\\t\\t\\t\\tthis.texture.repeat = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tformat: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\\n\\t\\t\\t\\treturn this.texture.format;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\\n\\t\\t\\t\\tthis.texture.format = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\ttype: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\\n\\t\\t\\t\\treturn this.texture.type;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\\n\\t\\t\\t\\tthis.texture.type = value;\\n\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tgenerateMipmaps: {\\n\\t\\t\\tget: function () {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\\n\\t\\t\\t\\treturn this.texture.generateMipmaps;\\n\\n\\t\\t\\t},\\n\\t\\t\\tset: function ( value ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\\n\\t\\t\\t\\tthis.texture.generateMipmaps = value;\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tObject.assign( WebVRManager.prototype, {\\n\\n\\t\\tgetStandingMatrix: function () {\\n\\n\\t\\t\\tconsole.warn( 'THREE.WebVRManager: .getStandingMatrix() has been removed.' );\\n\\n\\t\\t}\\n\\n\\t} );\\n\\n\\tObject.defineProperties( WebVRManager.prototype, {\\n\\n\\t\\tstanding: {\\n\\t\\t\\tset: function ( /* value */ ) {\\n\\n\\t\\t\\t\\tconsole.warn( 'THREE.WebVRManager: .standing has been removed.' );\\n\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t} );\\n\\n\\t//\\n\\n\\tAudio.prototype.load = function ( file ) {\\n\\n\\t\\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\\n\\t\\tvar scope = this;\\n\\t\\tvar audioLoader = new AudioLoader();\\n\\t\\taudioLoader.load( file, function ( buffer ) {\\n\\n\\t\\t\\tscope.setBuffer( buffer );\\n\\n\\t\\t} );\\n\\t\\treturn this;\\n\\n\\t};\\n\\n\\tAudioAnalyser.prototype.getData = function () {\\n\\n\\t\\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\\n\\t\\treturn this.getFrequencyData();\\n\\n\\t};\\n\\n\\t//\\n\\n\\tCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\\n\\n\\t\\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\\n\\t\\treturn this.update( renderer, scene );\\n\\n\\t};\\n\\n\\t//\\n\\n\\tvar GeometryUtils = {\\n\\n\\t\\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\\n\\t\\t\\tvar matrix;\\n\\n\\t\\t\\tif ( geometry2.isMesh ) {\\n\\n\\t\\t\\t\\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\\n\\n\\t\\t\\t\\tmatrix = geometry2.matrix;\\n\\t\\t\\t\\tgeometry2 = geometry2.geometry;\\n\\n\\t\\t\\t}\\n\\n\\t\\t\\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\\n\\n\\t\\t},\\n\\n\\t\\tcenter: function ( geometry ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\\n\\t\\t\\treturn geometry.center();\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\tvar ImageUtils = {\\n\\n\\t\\tcrossOrigin: undefined,\\n\\n\\t\\tloadTexture: function ( url, mapping, onLoad, onError ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\\n\\n\\t\\t\\tvar loader = new TextureLoader();\\n\\t\\t\\tloader.setCrossOrigin( this.crossOrigin );\\n\\n\\t\\t\\tvar texture = loader.load( url, onLoad, undefined, onError );\\n\\n\\t\\t\\tif ( mapping ) texture.mapping = mapping;\\n\\n\\t\\t\\treturn texture;\\n\\n\\t\\t},\\n\\n\\t\\tloadTextureCube: function ( urls, mapping, onLoad, onError ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\\n\\n\\t\\t\\tvar loader = new CubeTextureLoader();\\n\\t\\t\\tloader.setCrossOrigin( this.crossOrigin );\\n\\n\\t\\t\\tvar texture = loader.load( urls, onLoad, undefined, onError );\\n\\n\\t\\t\\tif ( mapping ) texture.mapping = mapping;\\n\\n\\t\\t\\treturn texture;\\n\\n\\t\\t},\\n\\n\\t\\tloadCompressedTexture: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\\n\\n\\t\\t},\\n\\n\\t\\tloadCompressedTextureCube: function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\\n\\n\\t\\t}\\n\\n\\t};\\n\\n\\t//\\n\\n\\tfunction Projector() {\\n\\n\\t\\tconsole.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' );\\n\\n\\t\\tthis.projectVector = function ( vector, camera ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Projector: .projectVector() is now vector.project().' );\\n\\t\\t\\tvector.project( camera );\\n\\n\\t\\t};\\n\\n\\t\\tthis.unprojectVector = function ( vector, camera ) {\\n\\n\\t\\t\\tconsole.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );\\n\\t\\t\\tvector.unproject( camera );\\n\\n\\t\\t};\\n\\n\\t\\tthis.pickingRay = function () {\\n\\n\\t\\t\\tconsole.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );\\n\\n\\t\\t};\\n\\n\\t}\\n\\n\\t//\\n\\n\\tfunction CanvasRenderer() {\\n\\n\\t\\tconsole.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' );\\n\\n\\t\\tthis.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\\n\\t\\tthis.clear = function () {};\\n\\t\\tthis.render = function () {};\\n\\t\\tthis.setClearColor = function () {};\\n\\t\\tthis.setSize = function () {};\\n\\n\\t}\\n\\n\\texports.WebGLRenderTargetCube = WebGLRenderTargetCube;\\n\\texports.WebGLRenderTarget = WebGLRenderTarget;\\n\\texports.WebGLRenderer = WebGLRenderer;\\n\\texports.ShaderLib = ShaderLib;\\n\\texports.UniformsLib = UniformsLib;\\n\\texports.UniformsUtils = UniformsUtils;\\n\\texports.ShaderChunk = ShaderChunk;\\n\\texports.FogExp2 = FogExp2;\\n\\texports.Fog = Fog;\\n\\texports.Scene = Scene;\\n\\texports.LensFlare = LensFlare;\\n\\texports.Sprite = Sprite;\\n\\texports.LOD = LOD;\\n\\texports.SkinnedMesh = SkinnedMesh;\\n\\texports.Skeleton = Skeleton;\\n\\texports.Bone = Bone;\\n\\texports.Mesh = Mesh;\\n\\texports.LineSegments = LineSegments;\\n\\texports.LineLoop = LineLoop;\\n\\texports.Line = Line;\\n\\texports.Points = Points;\\n\\texports.Group = Group;\\n\\texports.VideoTexture = VideoTexture;\\n\\texports.DataTexture = DataTexture;\\n\\texports.CompressedTexture = CompressedTexture;\\n\\texports.CubeTexture = CubeTexture;\\n\\texports.CanvasTexture = CanvasTexture;\\n\\texports.DepthTexture = DepthTexture;\\n\\texports.Texture = Texture;\\n\\texports.CompressedTextureLoader = CompressedTextureLoader;\\n\\texports.DataTextureLoader = DataTextureLoader;\\n\\texports.CubeTextureLoader = CubeTextureLoader;\\n\\texports.TextureLoader = TextureLoader;\\n\\texports.ObjectLoader = ObjectLoader;\\n\\texports.MaterialLoader = MaterialLoader;\\n\\texports.BufferGeometryLoader = BufferGeometryLoader;\\n\\texports.DefaultLoadingManager = DefaultLoadingManager;\\n\\texports.LoadingManager = LoadingManager;\\n\\texports.JSONLoader = JSONLoader;\\n\\texports.ImageLoader = ImageLoader;\\n\\texports.ImageBitmapLoader = ImageBitmapLoader;\\n\\texports.FontLoader = FontLoader;\\n\\texports.FileLoader = FileLoader;\\n\\texports.Loader = Loader;\\n\\texports.LoaderUtils = LoaderUtils;\\n\\texports.Cache = Cache;\\n\\texports.AudioLoader = AudioLoader;\\n\\texports.SpotLightShadow = SpotLightShadow;\\n\\texports.SpotLight = SpotLight;\\n\\texports.PointLight = PointLight;\\n\\texports.RectAreaLight = RectAreaLight;\\n\\texports.HemisphereLight = HemisphereLight;\\n\\texports.DirectionalLightShadow = DirectionalLightShadow;\\n\\texports.DirectionalLight = DirectionalLight;\\n\\texports.AmbientLight = AmbientLight;\\n\\texports.LightShadow = LightShadow;\\n\\texports.Light = Light;\\n\\texports.StereoCamera = StereoCamera;\\n\\texports.PerspectiveCamera = PerspectiveCamera;\\n\\texports.OrthographicCamera = OrthographicCamera;\\n\\texports.CubeCamera = CubeCamera;\\n\\texports.ArrayCamera = ArrayCamera;\\n\\texports.Camera = Camera;\\n\\texports.AudioListener = AudioListener;\\n\\texports.PositionalAudio = PositionalAudio;\\n\\texports.AudioContext = AudioContext;\\n\\texports.AudioAnalyser = AudioAnalyser;\\n\\texports.Audio = Audio;\\n\\texports.VectorKeyframeTrack = VectorKeyframeTrack;\\n\\texports.StringKeyframeTrack = StringKeyframeTrack;\\n\\texports.QuaternionKeyframeTrack = QuaternionKeyframeTrack;\\n\\texports.NumberKeyframeTrack = NumberKeyframeTrack;\\n\\texports.ColorKeyframeTrack = ColorKeyframeTrack;\\n\\texports.BooleanKeyframeTrack = BooleanKeyframeTrack;\\n\\texports.PropertyMixer = PropertyMixer;\\n\\texports.PropertyBinding = PropertyBinding;\\n\\texports.KeyframeTrack = KeyframeTrack;\\n\\texports.AnimationUtils = AnimationUtils;\\n\\texports.AnimationObjectGroup = AnimationObjectGroup;\\n\\texports.AnimationMixer = AnimationMixer;\\n\\texports.AnimationClip = AnimationClip;\\n\\texports.Uniform = Uniform;\\n\\texports.InstancedBufferGeometry = InstancedBufferGeometry;\\n\\texports.BufferGeometry = BufferGeometry;\\n\\texports.Geometry = Geometry;\\n\\texports.InterleavedBufferAttribute = InterleavedBufferAttribute;\\n\\texports.InstancedInterleavedBuffer = InstancedInterleavedBuffer;\\n\\texports.InterleavedBuffer = InterleavedBuffer;\\n\\texports.InstancedBufferAttribute = InstancedBufferAttribute;\\n\\texports.Face3 = Face3;\\n\\texports.Object3D = Object3D;\\n\\texports.Raycaster = Raycaster;\\n\\texports.Layers = Layers;\\n\\texports.EventDispatcher = EventDispatcher;\\n\\texports.Clock = Clock;\\n\\texports.QuaternionLinearInterpolant = QuaternionLinearInterpolant;\\n\\texports.LinearInterpolant = LinearInterpolant;\\n\\texports.DiscreteInterpolant = DiscreteInterpolant;\\n\\texports.CubicInterpolant = CubicInterpolant;\\n\\texports.Interpolant = Interpolant;\\n\\texports.Triangle = Triangle;\\n\\texports.Math = _Math;\\n\\texports.Spherical = Spherical;\\n\\texports.Cylindrical = Cylindrical;\\n\\texports.Plane = Plane;\\n\\texports.Frustum = Frustum;\\n\\texports.Sphere = Sphere;\\n\\texports.Ray = Ray;\\n\\texports.Matrix4 = Matrix4;\\n\\texports.Matrix3 = Matrix3;\\n\\texports.Box3 = Box3;\\n\\texports.Box2 = Box2;\\n\\texports.Line3 = Line3;\\n\\texports.Euler = Euler;\\n\\texports.Vector4 = Vector4;\\n\\texports.Vector3 = Vector3;\\n\\texports.Vector2 = Vector2;\\n\\texports.Quaternion = Quaternion;\\n\\texports.Color = Color;\\n\\texports.ImmediateRenderObject = ImmediateRenderObject;\\n\\texports.VertexNormalsHelper = VertexNormalsHelper;\\n\\texports.SpotLightHelper = SpotLightHelper;\\n\\texports.SkeletonHelper = SkeletonHelper;\\n\\texports.PointLightHelper = PointLightHelper;\\n\\texports.RectAreaLightHelper = RectAreaLightHelper;\\n\\texports.HemisphereLightHelper = HemisphereLightHelper;\\n\\texports.GridHelper = GridHelper;\\n\\texports.PolarGridHelper = PolarGridHelper;\\n\\texports.FaceNormalsHelper = FaceNormalsHelper;\\n\\texports.DirectionalLightHelper = DirectionalLightHelper;\\n\\texports.CameraHelper = CameraHelper;\\n\\texports.BoxHelper = BoxHelper;\\n\\texports.Box3Helper = Box3Helper;\\n\\texports.PlaneHelper = PlaneHelper;\\n\\texports.ArrowHelper = ArrowHelper;\\n\\texports.AxesHelper = AxesHelper;\\n\\texports.Shape = Shape;\\n\\texports.Path = Path;\\n\\texports.ShapePath = ShapePath;\\n\\texports.Font = Font;\\n\\texports.CurvePath = CurvePath;\\n\\texports.Curve = Curve;\\n\\texports.ShapeUtils = ShapeUtils;\\n\\texports.SceneUtils = SceneUtils;\\n\\texports.WebGLUtils = WebGLUtils;\\n\\texports.WireframeGeometry = WireframeGeometry;\\n\\texports.ParametricGeometry = ParametricGeometry;\\n\\texports.ParametricBufferGeometry = ParametricBufferGeometry;\\n\\texports.TetrahedronGeometry = TetrahedronGeometry;\\n\\texports.TetrahedronBufferGeometry = TetrahedronBufferGeometry;\\n\\texports.OctahedronGeometry = OctahedronGeometry;\\n\\texports.OctahedronBufferGeometry = OctahedronBufferGeometry;\\n\\texports.IcosahedronGeometry = IcosahedronGeometry;\\n\\texports.IcosahedronBufferGeometry = IcosahedronBufferGeometry;\\n\\texports.DodecahedronGeometry = DodecahedronGeometry;\\n\\texports.DodecahedronBufferGeometry = DodecahedronBufferGeometry;\\n\\texports.PolyhedronGeometry = PolyhedronGeometry;\\n\\texports.PolyhedronBufferGeometry = PolyhedronBufferGeometry;\\n\\texports.TubeGeometry = TubeGeometry;\\n\\texports.TubeBufferGeometry = TubeBufferGeometry;\\n\\texports.TorusKnotGeometry = TorusKnotGeometry;\\n\\texports.TorusKnotBufferGeometry = TorusKnotBufferGeometry;\\n\\texports.TorusGeometry = TorusGeometry;\\n\\texports.TorusBufferGeometry = TorusBufferGeometry;\\n\\texports.TextGeometry = TextGeometry;\\n\\texports.TextBufferGeometry = TextBufferGeometry;\\n\\texports.SphereGeometry = SphereGeometry;\\n\\texports.SphereBufferGeometry = SphereBufferGeometry;\\n\\texports.RingGeometry = RingGeometry;\\n\\texports.RingBufferGeometry = RingBufferGeometry;\\n\\texports.PlaneGeometry = PlaneGeometry;\\n\\texports.PlaneBufferGeometry = PlaneBufferGeometry;\\n\\texports.LatheGeometry = LatheGeometry;\\n\\texports.LatheBufferGeometry = LatheBufferGeometry;\\n\\texports.ShapeGeometry = ShapeGeometry;\\n\\texports.ShapeBufferGeometry = ShapeBufferGeometry;\\n\\texports.ExtrudeGeometry = ExtrudeGeometry;\\n\\texports.ExtrudeBufferGeometry = ExtrudeBufferGeometry;\\n\\texports.EdgesGeometry = EdgesGeometry;\\n\\texports.ConeGeometry = ConeGeometry;\\n\\texports.ConeBufferGeometry = ConeBufferGeometry;\\n\\texports.CylinderGeometry = CylinderGeometry;\\n\\texports.CylinderBufferGeometry = CylinderBufferGeometry;\\n\\texports.CircleGeometry = CircleGeometry;\\n\\texports.CircleBufferGeometry = CircleBufferGeometry;\\n\\texports.BoxGeometry = BoxGeometry;\\n\\texports.BoxBufferGeometry = BoxBufferGeometry;\\n\\texports.ShadowMaterial = ShadowMaterial;\\n\\texports.SpriteMaterial = SpriteMaterial;\\n\\texports.RawShaderMaterial = RawShaderMaterial;\\n\\texports.ShaderMaterial = ShaderMaterial;\\n\\texports.PointsMaterial = PointsMaterial;\\n\\texports.MeshPhysicalMaterial = MeshPhysicalMaterial;\\n\\texports.MeshStandardMaterial = MeshStandardMaterial;\\n\\texports.MeshPhongMaterial = MeshPhongMaterial;\\n\\texports.MeshToonMaterial = MeshToonMaterial;\\n\\texports.MeshNormalMaterial = MeshNormalMaterial;\\n\\texports.MeshLambertMaterial = MeshLambertMaterial;\\n\\texports.MeshDepthMaterial = MeshDepthMaterial;\\n\\texports.MeshDistanceMaterial = MeshDistanceMaterial;\\n\\texports.MeshBasicMaterial = MeshBasicMaterial;\\n\\texports.LineDashedMaterial = LineDashedMaterial;\\n\\texports.LineBasicMaterial = LineBasicMaterial;\\n\\texports.Material = Material;\\n\\texports.Float64BufferAttribute = Float64BufferAttribute;\\n\\texports.Float32BufferAttribute = Float32BufferAttribute;\\n\\texports.Uint32BufferAttribute = Uint32BufferAttribute;\\n\\texports.Int32BufferAttribute = Int32BufferAttribute;\\n\\texports.Uint16BufferAttribute = Uint16BufferAttribute;\\n\\texports.Int16BufferAttribute = Int16BufferAttribute;\\n\\texports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute;\\n\\texports.Uint8BufferAttribute = Uint8BufferAttribute;\\n\\texports.Int8BufferAttribute = Int8BufferAttribute;\\n\\texports.BufferAttribute = BufferAttribute;\\n\\texports.ArcCurve = ArcCurve;\\n\\texports.CatmullRomCurve3 = CatmullRomCurve3;\\n\\texports.CubicBezierCurve = CubicBezierCurve;\\n\\texports.CubicBezierCurve3 = CubicBezierCurve3;\\n\\texports.EllipseCurve = EllipseCurve;\\n\\texports.LineCurve = LineCurve;\\n\\texports.LineCurve3 = LineCurve3;\\n\\texports.QuadraticBezierCurve = QuadraticBezierCurve;\\n\\texports.QuadraticBezierCurve3 = QuadraticBezierCurve3;\\n\\texports.SplineCurve = SplineCurve;\\n\\texports.REVISION = REVISION;\\n\\texports.MOUSE = MOUSE;\\n\\texports.CullFaceNone = CullFaceNone;\\n\\texports.CullFaceBack = CullFaceBack;\\n\\texports.CullFaceFront = CullFaceFront;\\n\\texports.CullFaceFrontBack = CullFaceFrontBack;\\n\\texports.FrontFaceDirectionCW = FrontFaceDirectionCW;\\n\\texports.FrontFaceDirectionCCW = FrontFaceDirectionCCW;\\n\\texports.BasicShadowMap = BasicShadowMap;\\n\\texports.PCFShadowMap = PCFShadowMap;\\n\\texports.PCFSoftShadowMap = PCFSoftShadowMap;\\n\\texports.FrontSide = FrontSide;\\n\\texports.BackSide = BackSide;\\n\\texports.DoubleSide = DoubleSide;\\n\\texports.FlatShading = FlatShading;\\n\\texports.SmoothShading = SmoothShading;\\n\\texports.NoColors = NoColors;\\n\\texports.FaceColors = FaceColors;\\n\\texports.VertexColors = VertexColors;\\n\\texports.NoBlending = NoBlending;\\n\\texports.NormalBlending = NormalBlending;\\n\\texports.AdditiveBlending = AdditiveBlending;\\n\\texports.SubtractiveBlending = SubtractiveBlending;\\n\\texports.MultiplyBlending = MultiplyBlending;\\n\\texports.CustomBlending = CustomBlending;\\n\\texports.AddEquation = AddEquation;\\n\\texports.SubtractEquation = SubtractEquation;\\n\\texports.ReverseSubtractEquation = ReverseSubtractEquation;\\n\\texports.MinEquation = MinEquation;\\n\\texports.MaxEquation = MaxEquation;\\n\\texports.ZeroFactor = ZeroFactor;\\n\\texports.OneFactor = OneFactor;\\n\\texports.SrcColorFactor = SrcColorFactor;\\n\\texports.OneMinusSrcColorFactor = OneMinusSrcColorFactor;\\n\\texports.SrcAlphaFactor = SrcAlphaFactor;\\n\\texports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor;\\n\\texports.DstAlphaFactor = DstAlphaFactor;\\n\\texports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor;\\n\\texports.DstColorFactor = DstColorFactor;\\n\\texports.OneMinusDstColorFactor = OneMinusDstColorFactor;\\n\\texports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor;\\n\\texports.NeverDepth = NeverDepth;\\n\\texports.AlwaysDepth = AlwaysDepth;\\n\\texports.LessDepth = LessDepth;\\n\\texports.LessEqualDepth = LessEqualDepth;\\n\\texports.EqualDepth = EqualDepth;\\n\\texports.GreaterEqualDepth = GreaterEqualDepth;\\n\\texports.GreaterDepth = GreaterDepth;\\n\\texports.NotEqualDepth = NotEqualDepth;\\n\\texports.MultiplyOperation = MultiplyOperation;\\n\\texports.MixOperation = MixOperation;\\n\\texports.AddOperation = AddOperation;\\n\\texports.NoToneMapping = NoToneMapping;\\n\\texports.LinearToneMapping = LinearToneMapping;\\n\\texports.ReinhardToneMapping = ReinhardToneMapping;\\n\\texports.Uncharted2ToneMapping = Uncharted2ToneMapping;\\n\\texports.CineonToneMapping = CineonToneMapping;\\n\\texports.UVMapping = UVMapping;\\n\\texports.CubeReflectionMapping = CubeReflectionMapping;\\n\\texports.CubeRefractionMapping = CubeRefractionMapping;\\n\\texports.EquirectangularReflectionMapping = EquirectangularReflectionMapping;\\n\\texports.EquirectangularRefractionMapping = EquirectangularRefractionMapping;\\n\\texports.SphericalReflectionMapping = SphericalReflectionMapping;\\n\\texports.CubeUVReflectionMapping = CubeUVReflectionMapping;\\n\\texports.CubeUVRefractionMapping = CubeUVRefractionMapping;\\n\\texports.RepeatWrapping = RepeatWrapping;\\n\\texports.ClampToEdgeWrapping = ClampToEdgeWrapping;\\n\\texports.MirroredRepeatWrapping = MirroredRepeatWrapping;\\n\\texports.NearestFilter = NearestFilter;\\n\\texports.NearestMipMapNearestFilter = NearestMipMapNearestFilter;\\n\\texports.NearestMipMapLinearFilter = NearestMipMapLinearFilter;\\n\\texports.LinearFilter = LinearFilter;\\n\\texports.LinearMipMapNearestFilter = LinearMipMapNearestFilter;\\n\\texports.LinearMipMapLinearFilter = LinearMipMapLinearFilter;\\n\\texports.UnsignedByteType = UnsignedByteType;\\n\\texports.ByteType = ByteType;\\n\\texports.ShortType = ShortType;\\n\\texports.UnsignedShortType = UnsignedShortType;\\n\\texports.IntType = IntType;\\n\\texports.UnsignedIntType = UnsignedIntType;\\n\\texports.FloatType = FloatType;\\n\\texports.HalfFloatType = HalfFloatType;\\n\\texports.UnsignedShort4444Type = UnsignedShort4444Type;\\n\\texports.UnsignedShort5551Type = UnsignedShort5551Type;\\n\\texports.UnsignedShort565Type = UnsignedShort565Type;\\n\\texports.UnsignedInt248Type = UnsignedInt248Type;\\n\\texports.AlphaFormat = AlphaFormat;\\n\\texports.RGBFormat = RGBFormat;\\n\\texports.RGBAFormat = RGBAFormat;\\n\\texports.LuminanceFormat = LuminanceFormat;\\n\\texports.LuminanceAlphaFormat = LuminanceAlphaFormat;\\n\\texports.RGBEFormat = RGBEFormat;\\n\\texports.DepthFormat = DepthFormat;\\n\\texports.DepthStencilFormat = DepthStencilFormat;\\n\\texports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format;\\n\\texports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format;\\n\\texports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format;\\n\\texports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format;\\n\\texports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format;\\n\\texports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format;\\n\\texports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format;\\n\\texports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format;\\n\\texports.RGB_ETC1_Format = RGB_ETC1_Format;\\n\\texports.LoopOnce = LoopOnce;\\n\\texports.LoopRepeat = LoopRepeat;\\n\\texports.LoopPingPong = LoopPingPong;\\n\\texports.InterpolateDiscrete = InterpolateDiscrete;\\n\\texports.InterpolateLinear = InterpolateLinear;\\n\\texports.InterpolateSmooth = InterpolateSmooth;\\n\\texports.ZeroCurvatureEnding = ZeroCurvatureEnding;\\n\\texports.ZeroSlopeEnding = ZeroSlopeEnding;\\n\\texports.WrapAroundEnding = WrapAroundEnding;\\n\\texports.TrianglesDrawMode = TrianglesDrawMode;\\n\\texports.TriangleStripDrawMode = TriangleStripDrawMode;\\n\\texports.TriangleFanDrawMode = TriangleFanDrawMode;\\n\\texports.LinearEncoding = LinearEncoding;\\n\\texports.sRGBEncoding = sRGBEncoding;\\n\\texports.GammaEncoding = GammaEncoding;\\n\\texports.RGBEEncoding = RGBEEncoding;\\n\\texports.LogLuvEncoding = LogLuvEncoding;\\n\\texports.RGBM7Encoding = RGBM7Encoding;\\n\\texports.RGBM16Encoding = RGBM16Encoding;\\n\\texports.RGBDEncoding = RGBDEncoding;\\n\\texports.BasicDepthPacking = BasicDepthPacking;\\n\\texports.RGBADepthPacking = RGBADepthPacking;\\n\\texports.CubeGeometry = BoxGeometry;\\n\\texports.Face4 = Face4;\\n\\texports.LineStrip = LineStrip;\\n\\texports.LinePieces = LinePieces;\\n\\texports.MeshFaceMaterial = MeshFaceMaterial;\\n\\texports.MultiMaterial = MultiMaterial;\\n\\texports.PointCloud = PointCloud;\\n\\texports.Particle = Particle;\\n\\texports.ParticleSystem = ParticleSystem;\\n\\texports.PointCloudMaterial = PointCloudMaterial;\\n\\texports.ParticleBasicMaterial = ParticleBasicMaterial;\\n\\texports.ParticleSystemMaterial = ParticleSystemMaterial;\\n\\texports.Vertex = Vertex;\\n\\texports.DynamicBufferAttribute = DynamicBufferAttribute;\\n\\texports.Int8Attribute = Int8Attribute;\\n\\texports.Uint8Attribute = Uint8Attribute;\\n\\texports.Uint8ClampedAttribute = Uint8ClampedAttribute;\\n\\texports.Int16Attribute = Int16Attribute;\\n\\texports.Uint16Attribute = Uint16Attribute;\\n\\texports.Int32Attribute = Int32Attribute;\\n\\texports.Uint32Attribute = Uint32Attribute;\\n\\texports.Float32Attribute = Float32Attribute;\\n\\texports.Float64Attribute = Float64Attribute;\\n\\texports.ClosedSplineCurve3 = ClosedSplineCurve3;\\n\\texports.SplineCurve3 = SplineCurve3;\\n\\texports.Spline = Spline;\\n\\texports.AxisHelper = AxisHelper;\\n\\texports.BoundingBoxHelper = BoundingBoxHelper;\\n\\texports.EdgesHelper = EdgesHelper;\\n\\texports.WireframeHelper = WireframeHelper;\\n\\texports.XHRLoader = XHRLoader;\\n\\texports.BinaryTextureLoader = BinaryTextureLoader;\\n\\texports.GeometryUtils = GeometryUtils;\\n\\texports.ImageUtils = ImageUtils;\\n\\texports.Projector = Projector;\\n\\texports.CanvasRenderer = CanvasRenderer;\\n\\n\\tObject.defineProperty(exports, '__esModule', { value: true });\\n\\n})));\\n\"//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RCx3REFBd0Qsb0RBQW9ELHNDQUFzQyxrQ0FBa0Msb0NBQW9DLDhDQUE4Qyx3REFBd0Qsb0NBQW9DLHNDQUFzQyxvREFBb0Qsd0RBQXdELDBEQUEwRCwwREFBMEQsMERBQTBELDhEQUE4RCw4REFBOEQsZ0VBQWdFLGdFQUFnRSw4Q0FBOEMsZ0NBQWdDLG9DQUFvQyx3Q0FBd0Msc0RBQXNELGtEQUFrRCxrREFBa0Qsc0RBQXNELDhDQUE4QyxnREFBZ0Qsa0RBQWtELDBEQUEwRCxzREFBc0QsNENBQTRDLHdDQUF3QywwQ0FBMEMsd0NBQXdDLDRDQUE0QywwQ0FBMEMsNENBQTRDLHdDQUF3QyxrREFBa0QsZ0RBQWdELHVDQUF1QywwQkFBMEIsa0NBQWtDLG9DQUFvQyxnREFBZ0QsMENBQTBDLG9DQUFvQyxnQ0FBZ0MsNENBQTRDLG9EQUFvRCwwREFBMEQsNERBQTRELDRCQUE0Qiw0REFBNEQsMENBQTBDLDRDQUE0QywwREFBMEQsNENBQTRDLDhDQUE4Qyw0Q0FBNEMsOENBQThDLGdEQUFnRCxnREFBZ0Qsb0RBQW9ELHdDQUF3Qyw0QkFBNEIsb0NBQW9DLGtEQUFrRCxzQ0FBc0MsOENBQThDLGtDQUFrQyxzREFBc0QsMENBQTBDLG9DQUFvQyxrQ0FBa0MsNENBQTRDLHFEQUFxRCxhQUFhLEVBQUUsS0FBSyxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZGFzaC8uL3ZlbmRvci90aHJlZS5qcz9lNGJhIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xcblxcdHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cykgOlxcblxcdHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxcblxcdChmYWN0b3J5KChnbG9iYWwuVEhSRUUgPSB7fSkpKTtcXG59KHRoaXMsIChmdW5jdGlvbiAoZXhwb3J0cykgeyAndXNlIHN0cmljdCc7XFxuXFxuXFx0Ly8gUG9seWZpbGxzXFxuXFxuXFx0aWYgKCBOdW1iZXIuRVBTSUxPTiA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdE51bWJlci5FUFNJTE9OID0gTWF0aC5wb3coIDIsIC0gNTIgKTtcXG5cXG5cXHR9XFxuXFxuXFx0aWYgKCBOdW1iZXIuaXNJbnRlZ2VyID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0Ly8gTWlzc2luZyBpbiBJRVxcblxcdFxcdC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL051bWJlci9pc0ludGVnZXJcXG5cXG5cXHRcXHROdW1iZXIuaXNJbnRlZ2VyID0gZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc0Zpbml0ZSggdmFsdWUgKSAmJiBNYXRoLmZsb29yKCB2YWx1ZSApID09PSB2YWx1ZTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvL1xcblxcblxcdGlmICggTWF0aC5zaWduID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0Ly8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvTWF0aC9zaWduXFxuXFxuXFx0XFx0TWF0aC5zaWduID0gZnVuY3Rpb24gKCB4ICkge1xcblxcblxcdFxcdFxcdHJldHVybiAoIHggPCAwICkgPyAtIDEgOiAoIHggPiAwICkgPyAxIDogKyB4O1xcblxcblxcdFxcdH07XFxuXFxuXFx0fVxcblxcblxcdGlmICggJ25hbWUnIGluIEZ1bmN0aW9uLnByb3RvdHlwZSA9PT0gZmFsc2UgKSB7XFxuXFxuXFx0XFx0Ly8gTWlzc2luZyBpbiBJRVxcblxcdFxcdC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0Z1bmN0aW9uL25hbWVcXG5cXG5cXHRcXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIEZ1bmN0aW9uLnByb3RvdHlwZSwgJ25hbWUnLCB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudG9TdHJpbmcoKS5tYXRjaCggL15cXFxccypmdW5jdGlvblxcXFxzKihbXlxcXFwoXFxcXHNdKikvIClbIDEgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSApO1xcblxcblxcdH1cXG5cXG5cXHRpZiAoIE9iamVjdC5hc3NpZ24gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHQvLyBNaXNzaW5nIGluIElFXFxuXFx0XFx0Ly8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnblxcblxcblxcdFxcdCggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdE9iamVjdC5hc3NpZ24gPSBmdW5jdGlvbiAoIHRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldCA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aHJvdyBuZXcgVHlwZUVycm9yKCAnQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0JyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR2YXIgb3V0cHV0ID0gT2JqZWN0KCB0YXJnZXQgKTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaW5kZXggPSAxOyBpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBzb3VyY2UgPSBhcmd1bWVudHNbIGluZGV4IF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBzb3VyY2UgIT09IHVuZGVmaW5lZCAmJiBzb3VyY2UgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIG5leHRLZXkgaW4gc291cmNlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCBzb3VyY2UsIG5leHRLZXkgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRvdXRwdXRbIG5leHRLZXkgXSA9IHNvdXJjZVsgbmV4dEtleSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gb3V0cHV0O1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSApKCk7XFxuXFxuXFx0fVxcblxcblxcdC8qKlxcblxcdCAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tcmRvb2IvZXZlbnRkaXNwYXRjaGVyLmpzL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEV2ZW50RGlzcGF0Y2hlcigpIHt9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGFkZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uICggdHlwZSwgbGlzdGVuZXIgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLl9saXN0ZW5lcnMgPT09IHVuZGVmaW5lZCApIHRoaXMuX2xpc3RlbmVycyA9IHt9O1xcblxcblxcdFxcdFxcdHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7XFxuXFxuXFx0XFx0XFx0aWYgKCBsaXN0ZW5lcnNbIHR5cGUgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGxpc3RlbmVyc1sgdHlwZSBdID0gW107XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbGlzdGVuZXJzWyB0eXBlIF0uaW5kZXhPZiggbGlzdGVuZXIgKSA9PT0gLSAxICkge1xcblxcblxcdFxcdFxcdFxcdGxpc3RlbmVyc1sgdHlwZSBdLnB1c2goIGxpc3RlbmVyICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aGFzRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKCB0eXBlLCBsaXN0ZW5lciApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuX2xpc3RlbmVycyA9PT0gdW5kZWZpbmVkICkgcmV0dXJuIGZhbHNlO1xcblxcblxcdFxcdFxcdHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGxpc3RlbmVyc1sgdHlwZSBdICE9PSB1bmRlZmluZWQgJiYgbGlzdGVuZXJzWyB0eXBlIF0uaW5kZXhPZiggbGlzdGVuZXIgKSAhPT0gLSAxO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKCB0eXBlLCBsaXN0ZW5lciApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuX2xpc3RlbmVycyA9PT0gdW5kZWZpbmVkICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7XFxuXFx0XFx0XFx0dmFyIGxpc3RlbmVyQXJyYXkgPSBsaXN0ZW5lcnNbIHR5cGUgXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGxpc3RlbmVyQXJyYXkgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaW5kZXggPSBsaXN0ZW5lckFycmF5LmluZGV4T2YoIGxpc3RlbmVyICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpbmRleCAhPT0gLSAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGxpc3RlbmVyQXJyYXkuc3BsaWNlKCBpbmRleCwgMSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXNwYXRjaEV2ZW50OiBmdW5jdGlvbiAoIGV2ZW50ICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5fbGlzdGVuZXJzID09PSB1bmRlZmluZWQgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0dmFyIGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVycztcXG5cXHRcXHRcXHR2YXIgbGlzdGVuZXJBcnJheSA9IGxpc3RlbmVyc1sgZXZlbnQudHlwZSBdO1xcblxcblxcdFxcdFxcdGlmICggbGlzdGVuZXJBcnJheSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGV2ZW50LnRhcmdldCA9IHRoaXM7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFycmF5ID0gbGlzdGVuZXJBcnJheS5zbGljZSggMCApO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YXJyYXlbIGkgXS5jYWxsKCB0aGlzLCBldmVudCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHR2YXIgUkVWSVNJT04gPSAnODknO1xcblxcdHZhciBNT1VTRSA9IHsgTEVGVDogMCwgTUlERExFOiAxLCBSSUdIVDogMiB9O1xcblxcdHZhciBDdWxsRmFjZU5vbmUgPSAwO1xcblxcdHZhciBDdWxsRmFjZUJhY2sgPSAxO1xcblxcdHZhciBDdWxsRmFjZUZyb250ID0gMjtcXG5cXHR2YXIgQ3VsbEZhY2VGcm9udEJhY2sgPSAzO1xcblxcdHZhciBGcm9udEZhY2VEaXJlY3Rpb25DVyA9IDA7XFxuXFx0dmFyIEZyb250RmFjZURpcmVjdGlvbkNDVyA9IDE7XFxuXFx0dmFyIEJhc2ljU2hhZG93TWFwID0gMDtcXG5cXHR2YXIgUENGU2hhZG93TWFwID0gMTtcXG5cXHR2YXIgUENGU29mdFNoYWRvd01hcCA9IDI7XFxuXFx0dmFyIEZyb250U2lkZSA9IDA7XFxuXFx0dmFyIEJhY2tTaWRlID0gMTtcXG5cXHR2YXIgRG91YmxlU2lkZSA9IDI7XFxuXFx0dmFyIEZsYXRTaGFkaW5nID0gMTtcXG5cXHR2YXIgU21vb3RoU2hhZGluZyA9IDI7XFxuXFx0dmFyIE5vQ29sb3JzID0gMDtcXG5cXHR2YXIgRmFjZUNvbG9ycyA9IDE7XFxuXFx0dmFyIFZlcnRleENvbG9ycyA9IDI7XFxuXFx0dmFyIE5vQmxlbmRpbmcgPSAwO1xcblxcdHZhciBOb3JtYWxCbGVuZGluZyA9IDE7XFxuXFx0dmFyIEFkZGl0aXZlQmxlbmRpbmcgPSAyO1xcblxcdHZhciBTdWJ0cmFjdGl2ZUJsZW5kaW5nID0gMztcXG5cXHR2YXIgTXVsdGlwbHlCbGVuZGluZyA9IDQ7XFxuXFx0dmFyIEN1c3RvbUJsZW5kaW5nID0gNTtcXG5cXHR2YXIgQWRkRXF1YXRpb24gPSAxMDA7XFxuXFx0dmFyIFN1YnRyYWN0RXF1YXRpb24gPSAxMDE7XFxuXFx0dmFyIFJldmVyc2VTdWJ0cmFjdEVxdWF0aW9uID0gMTAyO1xcblxcdHZhciBNaW5FcXVhdGlvbiA9IDEwMztcXG5cXHR2YXIgTWF4RXF1YXRpb24gPSAxMDQ7XFxuXFx0dmFyIFplcm9GYWN0b3IgPSAyMDA7XFxuXFx0dmFyIE9uZUZhY3RvciA9IDIwMTtcXG5cXHR2YXIgU3JjQ29sb3JGYWN0b3IgPSAyMDI7XFxuXFx0dmFyIE9uZU1pbnVzU3JjQ29sb3JGYWN0b3IgPSAyMDM7XFxuXFx0dmFyIFNyY0FscGhhRmFjdG9yID0gMjA0O1xcblxcdHZhciBPbmVNaW51c1NyY0FscGhhRmFjdG9yID0gMjA1O1xcblxcdHZhciBEc3RBbHBoYUZhY3RvciA9IDIwNjtcXG5cXHR2YXIgT25lTWludXNEc3RBbHBoYUZhY3RvciA9IDIwNztcXG5cXHR2YXIgRHN0Q29sb3JGYWN0b3IgPSAyMDg7XFxuXFx0dmFyIE9uZU1pbnVzRHN0Q29sb3JGYWN0b3IgPSAyMDk7XFxuXFx0dmFyIFNyY0FscGhhU2F0dXJhdGVGYWN0b3IgPSAyMTA7XFxuXFx0dmFyIE5ldmVyRGVwdGggPSAwO1xcblxcdHZhciBBbHdheXNEZXB0aCA9IDE7XFxuXFx0dmFyIExlc3NEZXB0aCA9IDI7XFxuXFx0dmFyIExlc3NFcXVhbERlcHRoID0gMztcXG5cXHR2YXIgRXF1YWxEZXB0aCA9IDQ7XFxuXFx0dmFyIEdyZWF0ZXJFcXVhbERlcHRoID0gNTtcXG5cXHR2YXIgR3JlYXRlckRlcHRoID0gNjtcXG5cXHR2YXIgTm90RXF1YWxEZXB0aCA9IDc7XFxuXFx0dmFyIE11bHRpcGx5T3BlcmF0aW9uID0gMDtcXG5cXHR2YXIgTWl4T3BlcmF0aW9uID0gMTtcXG5cXHR2YXIgQWRkT3BlcmF0aW9uID0gMjtcXG5cXHR2YXIgTm9Ub25lTWFwcGluZyA9IDA7XFxuXFx0dmFyIExpbmVhclRvbmVNYXBwaW5nID0gMTtcXG5cXHR2YXIgUmVpbmhhcmRUb25lTWFwcGluZyA9IDI7XFxuXFx0dmFyIFVuY2hhcnRlZDJUb25lTWFwcGluZyA9IDM7XFxuXFx0dmFyIENpbmVvblRvbmVNYXBwaW5nID0gNDtcXG5cXHR2YXIgVVZNYXBwaW5nID0gMzAwO1xcblxcdHZhciBDdWJlUmVmbGVjdGlvbk1hcHBpbmcgPSAzMDE7XFxuXFx0dmFyIEN1YmVSZWZyYWN0aW9uTWFwcGluZyA9IDMwMjtcXG5cXHR2YXIgRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmcgPSAzMDM7XFxuXFx0dmFyIEVxdWlyZWN0YW5ndWxhclJlZnJhY3Rpb25NYXBwaW5nID0gMzA0O1xcblxcdHZhciBTcGhlcmljYWxSZWZsZWN0aW9uTWFwcGluZyA9IDMwNTtcXG5cXHR2YXIgQ3ViZVVWUmVmbGVjdGlvbk1hcHBpbmcgPSAzMDY7XFxuXFx0dmFyIEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nID0gMzA3O1xcblxcdHZhciBSZXBlYXRXcmFwcGluZyA9IDEwMDA7XFxuXFx0dmFyIENsYW1wVG9FZGdlV3JhcHBpbmcgPSAxMDAxO1xcblxcdHZhciBNaXJyb3JlZFJlcGVhdFdyYXBwaW5nID0gMTAwMjtcXG5cXHR2YXIgTmVhcmVzdEZpbHRlciA9IDEwMDM7XFxuXFx0dmFyIE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyID0gMTAwNDtcXG5cXHR2YXIgTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlciA9IDEwMDU7XFxuXFx0dmFyIExpbmVhckZpbHRlciA9IDEwMDY7XFxuXFx0dmFyIExpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXIgPSAxMDA3O1xcblxcdHZhciBMaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXIgPSAxMDA4O1xcblxcdHZhciBVbnNpZ25lZEJ5dGVUeXBlID0gMTAwOTtcXG5cXHR2YXIgQnl0ZVR5cGUgPSAxMDEwO1xcblxcdHZhciBTaG9ydFR5cGUgPSAxMDExO1xcblxcdHZhciBVbnNpZ25lZFNob3J0VHlwZSA9IDEwMTI7XFxuXFx0dmFyIEludFR5cGUgPSAxMDEzO1xcblxcdHZhciBVbnNpZ25lZEludFR5cGUgPSAxMDE0O1xcblxcdHZhciBGbG9hdFR5cGUgPSAxMDE1O1xcblxcdHZhciBIYWxmRmxvYXRUeXBlID0gMTAxNjtcXG5cXHR2YXIgVW5zaWduZWRTaG9ydDQ0NDRUeXBlID0gMTAxNztcXG5cXHR2YXIgVW5zaWduZWRTaG9ydDU1NTFUeXBlID0gMTAxODtcXG5cXHR2YXIgVW5zaWduZWRTaG9ydDU2NVR5cGUgPSAxMDE5O1xcblxcdHZhciBVbnNpZ25lZEludDI0OFR5cGUgPSAxMDIwO1xcblxcdHZhciBBbHBoYUZvcm1hdCA9IDEwMjE7XFxuXFx0dmFyIFJHQkZvcm1hdCA9IDEwMjI7XFxuXFx0dmFyIFJHQkFGb3JtYXQgPSAxMDIzO1xcblxcdHZhciBMdW1pbmFuY2VGb3JtYXQgPSAxMDI0O1xcblxcdHZhciBMdW1pbmFuY2VBbHBoYUZvcm1hdCA9IDEwMjU7XFxuXFx0dmFyIFJHQkVGb3JtYXQgPSBSR0JBRm9ybWF0O1xcblxcdHZhciBEZXB0aEZvcm1hdCA9IDEwMjY7XFxuXFx0dmFyIERlcHRoU3RlbmNpbEZvcm1hdCA9IDEwMjc7XFxuXFx0dmFyIFJHQl9TM1RDX0RYVDFfRm9ybWF0ID0gMjAwMTtcXG5cXHR2YXIgUkdCQV9TM1RDX0RYVDFfRm9ybWF0ID0gMjAwMjtcXG5cXHR2YXIgUkdCQV9TM1RDX0RYVDNfRm9ybWF0ID0gMjAwMztcXG5cXHR2YXIgUkdCQV9TM1RDX0RYVDVfRm9ybWF0ID0gMjAwNDtcXG5cXHR2YXIgUkdCX1BWUlRDXzRCUFBWMV9Gb3JtYXQgPSAyMTAwO1xcblxcdHZhciBSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdCA9IDIxMDE7XFxuXFx0dmFyIFJHQkFfUFZSVENfNEJQUFYxX0Zvcm1hdCA9IDIxMDI7XFxuXFx0dmFyIFJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdCA9IDIxMDM7XFxuXFx0dmFyIFJHQl9FVEMxX0Zvcm1hdCA9IDIxNTE7XFxuXFx0dmFyIExvb3BPbmNlID0gMjIwMDtcXG5cXHR2YXIgTG9vcFJlcGVhdCA9IDIyMDE7XFxuXFx0dmFyIExvb3BQaW5nUG9uZyA9IDIyMDI7XFxuXFx0dmFyIEludGVycG9sYXRlRGlzY3JldGUgPSAyMzAwO1xcblxcdHZhciBJbnRlcnBvbGF0ZUxpbmVhciA9IDIzMDE7XFxuXFx0dmFyIEludGVycG9sYXRlU21vb3RoID0gMjMwMjtcXG5cXHR2YXIgWmVyb0N1cnZhdHVyZUVuZGluZyA9IDI0MDA7XFxuXFx0dmFyIFplcm9TbG9wZUVuZGluZyA9IDI0MDE7XFxuXFx0dmFyIFdyYXBBcm91bmRFbmRpbmcgPSAyNDAyO1xcblxcdHZhciBUcmlhbmdsZXNEcmF3TW9kZSA9IDA7XFxuXFx0dmFyIFRyaWFuZ2xlU3RyaXBEcmF3TW9kZSA9IDE7XFxuXFx0dmFyIFRyaWFuZ2xlRmFuRHJhd01vZGUgPSAyO1xcblxcdHZhciBMaW5lYXJFbmNvZGluZyA9IDMwMDA7XFxuXFx0dmFyIHNSR0JFbmNvZGluZyA9IDMwMDE7XFxuXFx0dmFyIEdhbW1hRW5jb2RpbmcgPSAzMDA3O1xcblxcdHZhciBSR0JFRW5jb2RpbmcgPSAzMDAyO1xcblxcdHZhciBMb2dMdXZFbmNvZGluZyA9IDMwMDM7XFxuXFx0dmFyIFJHQk03RW5jb2RpbmcgPSAzMDA0O1xcblxcdHZhciBSR0JNMTZFbmNvZGluZyA9IDMwMDU7XFxuXFx0dmFyIFJHQkRFbmNvZGluZyA9IDMwMDY7XFxuXFx0dmFyIEJhc2ljRGVwdGhQYWNraW5nID0gMzIwMDtcXG5cXHR2YXIgUkdCQURlcHRoUGFja2luZyA9IDMyMDE7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdHZhciBfTWF0aCA9IHtcXG5cXG5cXHRcXHRERUcyUkFEOiBNYXRoLlBJIC8gMTgwLFxcblxcdFxcdFJBRDJERUc6IDE4MCAvIE1hdGguUEksXFxuXFxuXFx0XFx0Z2VuZXJhdGVVVUlEOiAoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNTAzNC9ob3ctdG8tY3JlYXRlLWEtZ3VpZC11dWlkLWluLWphdmFzY3JpcHQvMjE5NjMxMzYjMjE5NjMxMzZcXG5cXG5cXHRcXHRcXHR2YXIgbHV0ID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgMjU2OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGx1dFsgaSBdID0gKCBpIDwgMTYgPyAnMCcgOiAnJyApICsgKCBpICkudG9TdHJpbmcoIDE2ICkudG9VcHBlckNhc2UoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZDAgPSBNYXRoLnJhbmRvbSgpICogMHhmZmZmZmZmZiB8IDA7XFxuXFx0XFx0XFx0XFx0dmFyIGQxID0gTWF0aC5yYW5kb20oKSAqIDB4ZmZmZmZmZmYgfCAwO1xcblxcdFxcdFxcdFxcdHZhciBkMiA9IE1hdGgucmFuZG9tKCkgKiAweGZmZmZmZmZmIHwgMDtcXG5cXHRcXHRcXHRcXHR2YXIgZDMgPSBNYXRoLnJhbmRvbSgpICogMHhmZmZmZmZmZiB8IDA7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIGx1dFsgZDAgJiAweGZmIF0gKyBsdXRbIGQwID4+IDggJiAweGZmIF0gKyBsdXRbIGQwID4+IDE2ICYgMHhmZiBdICsgbHV0WyBkMCA+PiAyNCAmIDB4ZmYgXSArICctJyArXFxuXFx0XFx0XFx0XFx0XFx0bHV0WyBkMSAmIDB4ZmYgXSArIGx1dFsgZDEgPj4gOCAmIDB4ZmYgXSArICctJyArIGx1dFsgZDEgPj4gMTYgJiAweDBmIHwgMHg0MCBdICsgbHV0WyBkMSA+PiAyNCAmIDB4ZmYgXSArICctJyArXFxuXFx0XFx0XFx0XFx0XFx0bHV0WyBkMiAmIDB4M2YgfCAweDgwIF0gKyBsdXRbIGQyID4+IDggJiAweGZmIF0gKyAnLScgKyBsdXRbIGQyID4+IDE2ICYgMHhmZiBdICsgbHV0WyBkMiA+PiAyNCAmIDB4ZmYgXSArXFxuXFx0XFx0XFx0XFx0XFx0bHV0WyBkMyAmIDB4ZmYgXSArIGx1dFsgZDMgPj4gOCAmIDB4ZmYgXSArIGx1dFsgZDMgPj4gMTYgJiAweGZmIF0gKyBsdXRbIGQzID4+IDI0ICYgMHhmZiBdO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSApKCksXFxuXFxuXFx0XFx0Y2xhbXA6IGZ1bmN0aW9uICggdmFsdWUsIG1pbiwgbWF4ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLm1heCggbWluLCBNYXRoLm1pbiggbWF4LCB2YWx1ZSApICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBjb21wdXRlIGV1Y2xpZGlhbiBtb2R1bG8gb2YgbSAlIG5cXG5cXHRcXHQvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Nb2R1bG9fb3BlcmF0aW9uXFxuXFxuXFx0XFx0ZXVjbGlkZWFuTW9kdWxvOiBmdW5jdGlvbiAoIG4sIG0gKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuICggKCBuICUgbSApICsgbSApICUgbTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIExpbmVhciBtYXBwaW5nIGZyb20gcmFuZ2UgPGExLCBhMj4gdG8gcmFuZ2UgPGIxLCBiMj5cXG5cXG5cXHRcXHRtYXBMaW5lYXI6IGZ1bmN0aW9uICggeCwgYTEsIGEyLCBiMSwgYjIgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGIxICsgKCB4IC0gYTEgKSAqICggYjIgLSBiMSApIC8gKCBhMiAtIGExICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW5lYXJfaW50ZXJwb2xhdGlvblxcblxcblxcdFxcdGxlcnA6IGZ1bmN0aW9uICggeCwgeSwgdCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCAxIC0gdCApICogeCArIHQgKiB5O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbW9vdGhzdGVwXFxuXFxuXFx0XFx0c21vb3Roc3RlcDogZnVuY3Rpb24gKCB4LCBtaW4sIG1heCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHggPD0gbWluICkgcmV0dXJuIDA7XFxuXFx0XFx0XFx0aWYgKCB4ID49IG1heCApIHJldHVybiAxO1xcblxcblxcdFxcdFxcdHggPSAoIHggLSBtaW4gKSAvICggbWF4IC0gbWluICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHggKiB4ICogKCAzIC0gMiAqIHggKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNtb290aGVyc3RlcDogZnVuY3Rpb24gKCB4LCBtaW4sIG1heCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHggPD0gbWluICkgcmV0dXJuIDA7XFxuXFx0XFx0XFx0aWYgKCB4ID49IG1heCApIHJldHVybiAxO1xcblxcblxcdFxcdFxcdHggPSAoIHggLSBtaW4gKSAvICggbWF4IC0gbWluICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHggKiB4ICogeCAqICggeCAqICggeCAqIDYgLSAxNSApICsgMTAgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIFJhbmRvbSBpbnRlZ2VyIGZyb20gPGxvdywgaGlnaD4gaW50ZXJ2YWxcXG5cXG5cXHRcXHRyYW5kSW50OiBmdW5jdGlvbiAoIGxvdywgaGlnaCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbG93ICsgTWF0aC5mbG9vciggTWF0aC5yYW5kb20oKSAqICggaGlnaCAtIGxvdyArIDEgKSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gUmFuZG9tIGZsb2F0IGZyb20gPGxvdywgaGlnaD4gaW50ZXJ2YWxcXG5cXG5cXHRcXHRyYW5kRmxvYXQ6IGZ1bmN0aW9uICggbG93LCBoaWdoICkge1xcblxcblxcdFxcdFxcdHJldHVybiBsb3cgKyBNYXRoLnJhbmRvbSgpICogKCBoaWdoIC0gbG93ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBSYW5kb20gZmxvYXQgZnJvbSA8LXJhbmdlLzIsIHJhbmdlLzI+IGludGVydmFsXFxuXFxuXFx0XFx0cmFuZEZsb2F0U3ByZWFkOiBmdW5jdGlvbiAoIHJhbmdlICkge1xcblxcblxcdFxcdFxcdHJldHVybiByYW5nZSAqICggMC41IC0gTWF0aC5yYW5kb20oKSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGVnVG9SYWQ6IGZ1bmN0aW9uICggZGVncmVlcyApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZGVncmVlcyAqIF9NYXRoLkRFRzJSQUQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyYWRUb0RlZzogZnVuY3Rpb24gKCByYWRpYW5zICkge1xcblxcblxcdFxcdFxcdHJldHVybiByYWRpYW5zICogX01hdGguUkFEMkRFRztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGlzUG93ZXJPZlR3bzogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCB2YWx1ZSAmICggdmFsdWUgLSAxICkgKSA9PT0gMCAmJiB2YWx1ZSAhPT0gMDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNlaWxQb3dlck9mVHdvOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLnBvdyggMiwgTWF0aC5jZWlsKCBNYXRoLmxvZyggdmFsdWUgKSAvIE1hdGguTE4yICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZsb29yUG93ZXJPZlR3bzogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5wb3coIDIsIE1hdGguZmxvb3IoIE1hdGgubG9nKCB2YWx1ZSApIC8gTWF0aC5MTjIgKSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBwaGlsb2diIC8gaHR0cDovL2Jsb2cudGhlaml0Lm9yZy9cXG5cXHQgKiBAYXV0aG9yIGVncmFldGhlciAvIGh0dHA6Ly9lZ3JhZXRoZXIuY29tL1xcblxcdCAqIEBhdXRob3Igeno4NSAvIGh0dHA6Ly93d3cubGFiNGdhbWVzLm5ldC96ejg1L2Jsb2dcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBWZWN0b3IyKCB4LCB5ICkge1xcblxcblxcdFxcdHRoaXMueCA9IHggfHwgMDtcXG5cXHRcXHR0aGlzLnkgPSB5IHx8IDA7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWZWN0b3IyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdFxcXCJ3aWR0aFxcXCI6IHtcXG5cXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy54O1xcblxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMueCA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdFxcXCJoZWlnaHRcXFwiOiB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMueTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnkgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBWZWN0b3IyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGlzVmVjdG9yMjogdHJ1ZSxcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggeCwgeSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSB4O1xcblxcdFxcdFxcdHRoaXMueSA9IHk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IHNjYWxhcjtcXG5cXHRcXHRcXHR0aGlzLnkgPSBzY2FsYXI7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRYOiBmdW5jdGlvbiAoIHggKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0geDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFk6IGZ1bmN0aW9uICggeSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnkgPSB5O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q29tcG9uZW50OiBmdW5jdGlvbiAoIGluZGV4LCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRzd2l0Y2ggKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIDA6IHRoaXMueCA9IHZhbHVlOyBicmVhaztcXG5cXHRcXHRcXHRcXHRjYXNlIDE6IHRoaXMueSA9IHZhbHVlOyBicmVhaztcXG5cXHRcXHRcXHRcXHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoICdpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICcgKyBpbmRleCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldENvbXBvbmVudDogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRzd2l0Y2ggKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIDA6IHJldHVybiB0aGlzLng7XFxuXFx0XFx0XFx0XFx0Y2FzZSAxOiByZXR1cm4gdGhpcy55O1xcblxcdFxcdFxcdFxcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvciggJ2luZGV4IGlzIG91dCBvZiByYW5nZTogJyArIGluZGV4ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoIHRoaXMueCwgdGhpcy55ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gdi54O1xcblxcdFxcdFxcdHRoaXMueSA9IHYueTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFkZDogZnVuY3Rpb24gKCB2LCB3ICkge1xcblxcblxcdFxcdFxcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjI6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuYWRkVmVjdG9ycyggdiwgdyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLnggKz0gdi54O1xcblxcdFxcdFxcdHRoaXMueSArPSB2Lnk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhZGRTY2FsYXI6IGZ1bmN0aW9uICggcyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggKz0gcztcXG5cXHRcXHRcXHR0aGlzLnkgKz0gcztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFkZFZlY3RvcnM6IGZ1bmN0aW9uICggYSwgYiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBhLnggKyBiLng7XFxuXFx0XFx0XFx0dGhpcy55ID0gYS55ICsgYi55O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWRkU2NhbGVkVmVjdG9yOiBmdW5jdGlvbiAoIHYsIHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ICs9IHYueCAqIHM7XFxuXFx0XFx0XFx0dGhpcy55ICs9IHYueSAqIHM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzdWI6IGZ1bmN0aW9uICggdiwgdyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHcgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnN1YlZlY3RvcnMoIHYsIHcgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy54IC09IHYueDtcXG5cXHRcXHRcXHR0aGlzLnkgLT0gdi55O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3ViU2NhbGFyOiBmdW5jdGlvbiAoIHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54IC09IHM7XFxuXFx0XFx0XFx0dGhpcy55IC09IHM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzdWJWZWN0b3JzOiBmdW5jdGlvbiAoIGEsIGIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gYS54IC0gYi54O1xcblxcdFxcdFxcdHRoaXMueSA9IGEueSAtIGIueTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG11bHRpcGx5OiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ICo9IHYueDtcXG5cXHRcXHRcXHR0aGlzLnkgKj0gdi55O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHlTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xcblxcblxcdFxcdFxcdHRoaXMueCAqPSBzY2FsYXI7XFxuXFx0XFx0XFx0dGhpcy55ICo9IHNjYWxhcjtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpdmlkZTogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHRoaXMueCAvPSB2Lng7XFxuXFx0XFx0XFx0dGhpcy55IC89IHYueTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpdmlkZVNjYWxhcjogZnVuY3Rpb24gKCBzY2FsYXIgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoIDEgLyBzY2FsYXIgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFwcGx5TWF0cml4MzogZnVuY3Rpb24gKCBtICkge1xcblxcblxcdFxcdFxcdHZhciB4ID0gdGhpcy54LCB5ID0gdGhpcy55O1xcblxcdFxcdFxcdHZhciBlID0gbS5lbGVtZW50cztcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBlWyAwIF0gKiB4ICsgZVsgMyBdICogeSArIGVbIDYgXTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBlWyAxIF0gKiB4ICsgZVsgNCBdICogeSArIGVbIDcgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1pbjogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IE1hdGgubWluKCB0aGlzLngsIHYueCApO1xcblxcdFxcdFxcdHRoaXMueSA9IE1hdGgubWluKCB0aGlzLnksIHYueSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWF4OiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5tYXgoIHRoaXMueCwgdi54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5tYXgoIHRoaXMueSwgdi55ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbGFtcDogZnVuY3Rpb24gKCBtaW4sIG1heCApIHtcXG5cXG5cXHRcXHRcXHQvLyBhc3N1bWVzIG1pbiA8IG1heCwgY29tcG9uZW50d2lzZVxcblxcblxcdFxcdFxcdHRoaXMueCA9IE1hdGgubWF4KCBtaW4ueCwgTWF0aC5taW4oIG1heC54LCB0aGlzLnggKSApO1xcblxcdFxcdFxcdHRoaXMueSA9IE1hdGgubWF4KCBtaW4ueSwgTWF0aC5taW4oIG1heC55LCB0aGlzLnkgKSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xhbXBTY2FsYXI6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgbWluID0gbmV3IFZlY3RvcjIoKTtcXG5cXHRcXHRcXHR2YXIgbWF4ID0gbmV3IFZlY3RvcjIoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gY2xhbXBTY2FsYXIoIG1pblZhbCwgbWF4VmFsICkge1xcblxcblxcdFxcdFxcdFxcdG1pbi5zZXQoIG1pblZhbCwgbWluVmFsICk7XFxuXFx0XFx0XFx0XFx0bWF4LnNldCggbWF4VmFsLCBtYXhWYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5jbGFtcCggbWluLCBtYXggKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRjbGFtcExlbmd0aDogZnVuY3Rpb24gKCBtaW4sIG1heCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGgoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoIGxlbmd0aCB8fCAxICkubXVsdGlwbHlTY2FsYXIoIE1hdGgubWF4KCBtaW4sIE1hdGgubWluKCBtYXgsIGxlbmd0aCApICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZsb29yOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5mbG9vciggdGhpcy54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5mbG9vciggdGhpcy55ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjZWlsOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5jZWlsKCB0aGlzLnggKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBNYXRoLmNlaWwoIHRoaXMueSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cm91bmQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBNYXRoLnJvdW5kKCB0aGlzLnggKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBNYXRoLnJvdW5kKCB0aGlzLnkgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJvdW5kVG9aZXJvOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gKCB0aGlzLnggPCAwICkgPyBNYXRoLmNlaWwoIHRoaXMueCApIDogTWF0aC5mbG9vciggdGhpcy54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gKCB0aGlzLnkgPCAwICkgPyBNYXRoLmNlaWwoIHRoaXMueSApIDogTWF0aC5mbG9vciggdGhpcy55ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRuZWdhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSAtIHRoaXMueDtcXG5cXHRcXHRcXHR0aGlzLnkgPSAtIHRoaXMueTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRvdDogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnggKiB2LnggKyB0aGlzLnkgKiB2Lnk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRsZW5ndGhTcTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRsZW5ndGg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5zcXJ0KCB0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1hbmhhdHRhbkxlbmd0aDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLmFicyggdGhpcy54ICkgKyBNYXRoLmFicyggdGhpcy55ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRub3JtYWxpemU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoIHRoaXMubGVuZ3RoKCkgfHwgMSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YW5nbGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyBjb21wdXRlcyB0aGUgYW5nbGUgaW4gcmFkaWFucyB3aXRoIHJlc3BlY3QgdG8gdGhlIHBvc2l0aXZlIHgtYXhpc1xcblxcblxcdFxcdFxcdHZhciBhbmdsZSA9IE1hdGguYXRhbjIoIHRoaXMueSwgdGhpcy54ICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBhbmdsZSA8IDAgKSBhbmdsZSArPSAyICogTWF0aC5QSTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYW5nbGU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXN0YW5jZVRvOiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIE1hdGguc3FydCggdGhpcy5kaXN0YW5jZVRvU3F1YXJlZCggdiApICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXN0YW5jZVRvU3F1YXJlZDogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHZhciBkeCA9IHRoaXMueCAtIHYueCwgZHkgPSB0aGlzLnkgLSB2Lnk7XFxuXFx0XFx0XFx0cmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWFuaGF0dGFuRGlzdGFuY2VUbzogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLmFicyggdGhpcy54IC0gdi54ICkgKyBNYXRoLmFicyggdGhpcy55IC0gdi55ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRMZW5ndGg6IGZ1bmN0aW9uICggbGVuZ3RoICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKCBsZW5ndGggKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGxlcnA6IGZ1bmN0aW9uICggdiwgYWxwaGEgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ICs9ICggdi54IC0gdGhpcy54ICkgKiBhbHBoYTtcXG5cXHRcXHRcXHR0aGlzLnkgKz0gKCB2LnkgLSB0aGlzLnkgKSAqIGFscGhhO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGVycFZlY3RvcnM6IGZ1bmN0aW9uICggdjEsIHYyLCBhbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zdWJWZWN0b3JzKCB2MiwgdjEgKS5tdWx0aXBseVNjYWxhciggYWxwaGEgKS5hZGQoIHYxICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRlcXVhbHM6IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCAoIHYueCA9PT0gdGhpcy54ICkgJiYgKCB2LnkgPT09IHRoaXMueSApICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBhcnJheVsgb2Zmc2V0IF07XFxuXFx0XFx0XFx0dGhpcy55ID0gYXJyYXlbIG9mZnNldCArIDEgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGFycmF5ID09PSB1bmRlZmluZWQgKSBhcnJheSA9IFtdO1xcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgXSA9IHRoaXMueDtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMSBdID0gdGhpcy55O1xcblxcblxcdFxcdFxcdHJldHVybiBhcnJheTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZyb21CdWZmZXJBdHRyaWJ1dGU6IGZ1bmN0aW9uICggYXR0cmlidXRlLCBpbmRleCwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggb2Zmc2V0ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMjogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gYXR0cmlidXRlLmdldFgoIGluZGV4ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gYXR0cmlidXRlLmdldFkoIGluZGV4ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyb3RhdGVBcm91bmQ6IGZ1bmN0aW9uICggY2VudGVyLCBhbmdsZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYyA9IE1hdGguY29zKCBhbmdsZSApLCBzID0gTWF0aC5zaW4oIGFuZ2xlICk7XFxuXFxuXFx0XFx0XFx0dmFyIHggPSB0aGlzLnggLSBjZW50ZXIueDtcXG5cXHRcXHRcXHR2YXIgeSA9IHRoaXMueSAtIGNlbnRlci55O1xcblxcblxcdFxcdFxcdHRoaXMueCA9IHggKiBjIC0geSAqIHMgKyBjZW50ZXIueDtcXG5cXHRcXHRcXHR0aGlzLnkgPSB4ICogcyArIHkgKiBjICsgY2VudGVyLnk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3Igc3VwZXJlZ2diZXJ0IC8gaHR0cDovL3d3dy5wYXVsYnJ1bnQuY28udWsvXFxuXFx0ICogQGF1dGhvciBwaGlsb2diIC8gaHR0cDovL2Jsb2cudGhlaml0Lm9yZy9cXG5cXHQgKiBAYXV0aG9yIGpvcmRpX3JvcyAvIGh0dHA6Ly9wbGF0dHNvZnQuY29tXFxuXFx0ICogQGF1dGhvciBEMXBsbzFkIC8gaHR0cDovL2dpdGh1Yi5jb20vRDFwbG8xZFxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBtaWthZWwgZW10aW5nZXIgLyBodHRwOi8vZ29tby5zZS9cXG5cXHQgKiBAYXV0aG9yIHRpbWtuaXAgLyBodHRwOi8vd3d3LmZsb29ycGxhbm5lci5jb20vXFxuXFx0ICogQGF1dGhvciBiaG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pb1xcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE1hdHJpeDQoKSB7XFxuXFxuXFx0XFx0dGhpcy5lbGVtZW50cyA9IFtcXG5cXG5cXHRcXHRcXHQxLCAwLCAwLCAwLFxcblxcdFxcdFxcdDAsIDEsIDAsIDAsXFxuXFx0XFx0XFx0MCwgMCwgMSwgMCxcXG5cXHRcXHRcXHQwLCAwLCAwLCAxXFxuXFxuXFx0XFx0XTtcXG5cXG5cXHRcXHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPiAwICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIE1hdHJpeDQucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0aXNNYXRyaXg0OiB0cnVlLFxcblxcblxcdFxcdHNldDogZnVuY3Rpb24gKCBuMTEsIG4xMiwgbjEzLCBuMTQsIG4yMSwgbjIyLCBuMjMsIG4yNCwgbjMxLCBuMzIsIG4zMywgbjM0LCBuNDEsIG40MiwgbjQzLCBuNDQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXG5cXHRcXHRcXHR0ZVsgMCBdID0gbjExOyB0ZVsgNCBdID0gbjEyOyB0ZVsgOCBdID0gbjEzOyB0ZVsgMTIgXSA9IG4xNDtcXG5cXHRcXHRcXHR0ZVsgMSBdID0gbjIxOyB0ZVsgNSBdID0gbjIyOyB0ZVsgOSBdID0gbjIzOyB0ZVsgMTMgXSA9IG4yNDtcXG5cXHRcXHRcXHR0ZVsgMiBdID0gbjMxOyB0ZVsgNiBdID0gbjMyOyB0ZVsgMTAgXSA9IG4zMzsgdGVbIDE0IF0gPSBuMzQ7XFxuXFx0XFx0XFx0dGVbIDMgXSA9IG40MTsgdGVbIDcgXSA9IG40MjsgdGVbIDExIF0gPSBuNDM7IHRlWyAxNSBdID0gbjQ0O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aWRlbnRpdHk6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnNldChcXG5cXG5cXHRcXHRcXHRcXHQxLCAwLCAwLCAwLFxcblxcdFxcdFxcdFxcdDAsIDEsIDAsIDAsXFxuXFx0XFx0XFx0XFx0MCwgMCwgMSwgMCxcXG5cXHRcXHRcXHRcXHQwLCAwLCAwLCAxXFxuXFxuXFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyBNYXRyaXg0KCkuZnJvbUFycmF5KCB0aGlzLmVsZW1lbnRzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgbWUgPSBtLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRlWyAwIF0gPSBtZVsgMCBdOyB0ZVsgMSBdID0gbWVbIDEgXTsgdGVbIDIgXSA9IG1lWyAyIF07IHRlWyAzIF0gPSBtZVsgMyBdO1xcblxcdFxcdFxcdHRlWyA0IF0gPSBtZVsgNCBdOyB0ZVsgNSBdID0gbWVbIDUgXTsgdGVbIDYgXSA9IG1lWyA2IF07IHRlWyA3IF0gPSBtZVsgNyBdO1xcblxcdFxcdFxcdHRlWyA4IF0gPSBtZVsgOCBdOyB0ZVsgOSBdID0gbWVbIDkgXTsgdGVbIDEwIF0gPSBtZVsgMTAgXTsgdGVbIDExIF0gPSBtZVsgMTEgXTtcXG5cXHRcXHRcXHR0ZVsgMTIgXSA9IG1lWyAxMiBdOyB0ZVsgMTMgXSA9IG1lWyAxMyBdOyB0ZVsgMTQgXSA9IG1lWyAxNCBdOyB0ZVsgMTUgXSA9IG1lWyAxNSBdO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weVBvc2l0aW9uOiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cywgbWUgPSBtLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRlWyAxMiBdID0gbWVbIDEyIF07XFxuXFx0XFx0XFx0dGVbIDEzIF0gPSBtZVsgMTMgXTtcXG5cXHRcXHRcXHR0ZVsgMTQgXSA9IG1lWyAxNCBdO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXh0cmFjdEJhc2lzOiBmdW5jdGlvbiAoIHhBeGlzLCB5QXhpcywgekF4aXMgKSB7XFxuXFxuXFx0XFx0XFx0eEF4aXMuc2V0RnJvbU1hdHJpeENvbHVtbiggdGhpcywgMCApO1xcblxcdFxcdFxcdHlBeGlzLnNldEZyb21NYXRyaXhDb2x1bW4oIHRoaXMsIDEgKTtcXG5cXHRcXHRcXHR6QXhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKCB0aGlzLCAyICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtYWtlQmFzaXM6IGZ1bmN0aW9uICggeEF4aXMsIHlBeGlzLCB6QXhpcyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnNldChcXG5cXHRcXHRcXHRcXHR4QXhpcy54LCB5QXhpcy54LCB6QXhpcy54LCAwLFxcblxcdFxcdFxcdFxcdHhBeGlzLnksIHlBeGlzLnksIHpBeGlzLnksIDAsXFxuXFx0XFx0XFx0XFx0eEF4aXMueiwgeUF4aXMueiwgekF4aXMueiwgMCxcXG5cXHRcXHRcXHRcXHQwLCAwLCAwLCAxXFxuXFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGV4dHJhY3RSb3RhdGlvbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGV4dHJhY3RSb3RhdGlvbiggbSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcdFxcdFxcdFxcdHZhciBtZSA9IG0uZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNjYWxlWCA9IDEgLyB2MS5zZXRGcm9tTWF0cml4Q29sdW1uKCBtLCAwICkubGVuZ3RoKCk7XFxuXFx0XFx0XFx0XFx0dmFyIHNjYWxlWSA9IDEgLyB2MS5zZXRGcm9tTWF0cml4Q29sdW1uKCBtLCAxICkubGVuZ3RoKCk7XFxuXFx0XFx0XFx0XFx0dmFyIHNjYWxlWiA9IDEgLyB2MS5zZXRGcm9tTWF0cml4Q29sdW1uKCBtLCAyICkubGVuZ3RoKCk7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDAgXSA9IG1lWyAwIF0gKiBzY2FsZVg7XFxuXFx0XFx0XFx0XFx0dGVbIDEgXSA9IG1lWyAxIF0gKiBzY2FsZVg7XFxuXFx0XFx0XFx0XFx0dGVbIDIgXSA9IG1lWyAyIF0gKiBzY2FsZVg7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDQgXSA9IG1lWyA0IF0gKiBzY2FsZVk7XFxuXFx0XFx0XFx0XFx0dGVbIDUgXSA9IG1lWyA1IF0gKiBzY2FsZVk7XFxuXFx0XFx0XFx0XFx0dGVbIDYgXSA9IG1lWyA2IF0gKiBzY2FsZVk7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDggXSA9IG1lWyA4IF0gKiBzY2FsZVo7XFxuXFx0XFx0XFx0XFx0dGVbIDkgXSA9IG1lWyA5IF0gKiBzY2FsZVo7XFxuXFx0XFx0XFx0XFx0dGVbIDEwIF0gPSBtZVsgMTAgXSAqIHNjYWxlWjtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRtYWtlUm90YXRpb25Gcm9tRXVsZXI6IGZ1bmN0aW9uICggZXVsZXIgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCAhICggZXVsZXIgJiYgZXVsZXIuaXNFdWxlciApICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5NYXRyaXg0OiAubWFrZVJvdGF0aW9uRnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYSBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXG5cXHRcXHRcXHR2YXIgeCA9IGV1bGVyLngsIHkgPSBldWxlci55LCB6ID0gZXVsZXIuejtcXG5cXHRcXHRcXHR2YXIgYSA9IE1hdGguY29zKCB4ICksIGIgPSBNYXRoLnNpbiggeCApO1xcblxcdFxcdFxcdHZhciBjID0gTWF0aC5jb3MoIHkgKSwgZCA9IE1hdGguc2luKCB5ICk7XFxuXFx0XFx0XFx0dmFyIGUgPSBNYXRoLmNvcyggeiApLCBmID0gTWF0aC5zaW4oIHogKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGV1bGVyLm9yZGVyID09PSAnWFlaJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYWUgPSBhICogZSwgYWYgPSBhICogZiwgYmUgPSBiICogZSwgYmYgPSBiICogZjtcXG5cXG5cXHRcXHRcXHRcXHR0ZVsgMCBdID0gYyAqIGU7XFxuXFx0XFx0XFx0XFx0dGVbIDQgXSA9IC0gYyAqIGY7XFxuXFx0XFx0XFx0XFx0dGVbIDggXSA9IGQ7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDEgXSA9IGFmICsgYmUgKiBkO1xcblxcdFxcdFxcdFxcdHRlWyA1IF0gPSBhZSAtIGJmICogZDtcXG5cXHRcXHRcXHRcXHR0ZVsgOSBdID0gLSBiICogYztcXG5cXG5cXHRcXHRcXHRcXHR0ZVsgMiBdID0gYmYgLSBhZSAqIGQ7XFxuXFx0XFx0XFx0XFx0dGVbIDYgXSA9IGJlICsgYWYgKiBkO1xcblxcdFxcdFxcdFxcdHRlWyAxMCBdID0gYSAqIGM7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggZXVsZXIub3JkZXIgPT09ICdZWFonICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjZSA9IGMgKiBlLCBjZiA9IGMgKiBmLCBkZSA9IGQgKiBlLCBkZiA9IGQgKiBmO1xcblxcblxcdFxcdFxcdFxcdHRlWyAwIF0gPSBjZSArIGRmICogYjtcXG5cXHRcXHRcXHRcXHR0ZVsgNCBdID0gZGUgKiBiIC0gY2Y7XFxuXFx0XFx0XFx0XFx0dGVbIDggXSA9IGEgKiBkO1xcblxcblxcdFxcdFxcdFxcdHRlWyAxIF0gPSBhICogZjtcXG5cXHRcXHRcXHRcXHR0ZVsgNSBdID0gYSAqIGU7XFxuXFx0XFx0XFx0XFx0dGVbIDkgXSA9IC0gYjtcXG5cXG5cXHRcXHRcXHRcXHR0ZVsgMiBdID0gY2YgKiBiIC0gZGU7XFxuXFx0XFx0XFx0XFx0dGVbIDYgXSA9IGRmICsgY2UgKiBiO1xcblxcdFxcdFxcdFxcdHRlWyAxMCBdID0gYSAqIGM7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggZXVsZXIub3JkZXIgPT09ICdaWFknICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjZSA9IGMgKiBlLCBjZiA9IGMgKiBmLCBkZSA9IGQgKiBlLCBkZiA9IGQgKiBmO1xcblxcblxcdFxcdFxcdFxcdHRlWyAwIF0gPSBjZSAtIGRmICogYjtcXG5cXHRcXHRcXHRcXHR0ZVsgNCBdID0gLSBhICogZjtcXG5cXHRcXHRcXHRcXHR0ZVsgOCBdID0gZGUgKyBjZiAqIGI7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDEgXSA9IGNmICsgZGUgKiBiO1xcblxcdFxcdFxcdFxcdHRlWyA1IF0gPSBhICogZTtcXG5cXHRcXHRcXHRcXHR0ZVsgOSBdID0gZGYgLSBjZSAqIGI7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDIgXSA9IC0gYSAqIGQ7XFxuXFx0XFx0XFx0XFx0dGVbIDYgXSA9IGI7XFxuXFx0XFx0XFx0XFx0dGVbIDEwIF0gPSBhICogYztcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBldWxlci5vcmRlciA9PT0gJ1pZWCcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFlID0gYSAqIGUsIGFmID0gYSAqIGYsIGJlID0gYiAqIGUsIGJmID0gYiAqIGY7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDAgXSA9IGMgKiBlO1xcblxcdFxcdFxcdFxcdHRlWyA0IF0gPSBiZSAqIGQgLSBhZjtcXG5cXHRcXHRcXHRcXHR0ZVsgOCBdID0gYWUgKiBkICsgYmY7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDEgXSA9IGMgKiBmO1xcblxcdFxcdFxcdFxcdHRlWyA1IF0gPSBiZiAqIGQgKyBhZTtcXG5cXHRcXHRcXHRcXHR0ZVsgOSBdID0gYWYgKiBkIC0gYmU7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDIgXSA9IC0gZDtcXG5cXHRcXHRcXHRcXHR0ZVsgNiBdID0gYiAqIGM7XFxuXFx0XFx0XFx0XFx0dGVbIDEwIF0gPSBhICogYztcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBldWxlci5vcmRlciA9PT0gJ1laWCcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFjID0gYSAqIGMsIGFkID0gYSAqIGQsIGJjID0gYiAqIGMsIGJkID0gYiAqIGQ7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDAgXSA9IGMgKiBlO1xcblxcdFxcdFxcdFxcdHRlWyA0IF0gPSBiZCAtIGFjICogZjtcXG5cXHRcXHRcXHRcXHR0ZVsgOCBdID0gYmMgKiBmICsgYWQ7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDEgXSA9IGY7XFxuXFx0XFx0XFx0XFx0dGVbIDUgXSA9IGEgKiBlO1xcblxcdFxcdFxcdFxcdHRlWyA5IF0gPSAtIGIgKiBlO1xcblxcblxcdFxcdFxcdFxcdHRlWyAyIF0gPSAtIGQgKiBlO1xcblxcdFxcdFxcdFxcdHRlWyA2IF0gPSBhZCAqIGYgKyBiYztcXG5cXHRcXHRcXHRcXHR0ZVsgMTAgXSA9IGFjIC0gYmQgKiBmO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIGV1bGVyLm9yZGVyID09PSAnWFpZJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYWMgPSBhICogYywgYWQgPSBhICogZCwgYmMgPSBiICogYywgYmQgPSBiICogZDtcXG5cXG5cXHRcXHRcXHRcXHR0ZVsgMCBdID0gYyAqIGU7XFxuXFx0XFx0XFx0XFx0dGVbIDQgXSA9IC0gZjtcXG5cXHRcXHRcXHRcXHR0ZVsgOCBdID0gZCAqIGU7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDEgXSA9IGFjICogZiArIGJkO1xcblxcdFxcdFxcdFxcdHRlWyA1IF0gPSBhICogZTtcXG5cXHRcXHRcXHRcXHR0ZVsgOSBdID0gYWQgKiBmIC0gYmM7XFxuXFxuXFx0XFx0XFx0XFx0dGVbIDIgXSA9IGJjICogZiAtIGFkO1xcblxcdFxcdFxcdFxcdHRlWyA2IF0gPSBiICogZTtcXG5cXHRcXHRcXHRcXHR0ZVsgMTAgXSA9IGJkICogZiArIGFjO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBsYXN0IGNvbHVtblxcblxcdFxcdFxcdHRlWyAzIF0gPSAwO1xcblxcdFxcdFxcdHRlWyA3IF0gPSAwO1xcblxcdFxcdFxcdHRlWyAxMSBdID0gMDtcXG5cXG5cXHRcXHRcXHQvLyBib3R0b20gcm93XFxuXFx0XFx0XFx0dGVbIDEyIF0gPSAwO1xcblxcdFxcdFxcdHRlWyAxMyBdID0gMDtcXG5cXHRcXHRcXHR0ZVsgMTQgXSA9IDA7XFxuXFx0XFx0XFx0dGVbIDE1IF0gPSAxO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb246IGZ1bmN0aW9uICggcSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHZhciB4ID0gcS5feCwgeSA9IHEuX3ksIHogPSBxLl96LCB3ID0gcS5fdztcXG5cXHRcXHRcXHR2YXIgeDIgPSB4ICsgeCwgeTIgPSB5ICsgeSwgejIgPSB6ICsgejtcXG5cXHRcXHRcXHR2YXIgeHggPSB4ICogeDIsIHh5ID0geCAqIHkyLCB4eiA9IHggKiB6MjtcXG5cXHRcXHRcXHR2YXIgeXkgPSB5ICogeTIsIHl6ID0geSAqIHoyLCB6eiA9IHogKiB6MjtcXG5cXHRcXHRcXHR2YXIgd3ggPSB3ICogeDIsIHd5ID0gdyAqIHkyLCB3eiA9IHcgKiB6MjtcXG5cXG5cXHRcXHRcXHR0ZVsgMCBdID0gMSAtICggeXkgKyB6eiApO1xcblxcdFxcdFxcdHRlWyA0IF0gPSB4eSAtIHd6O1xcblxcdFxcdFxcdHRlWyA4IF0gPSB4eiArIHd5O1xcblxcblxcdFxcdFxcdHRlWyAxIF0gPSB4eSArIHd6O1xcblxcdFxcdFxcdHRlWyA1IF0gPSAxIC0gKCB4eCArIHp6ICk7XFxuXFx0XFx0XFx0dGVbIDkgXSA9IHl6IC0gd3g7XFxuXFxuXFx0XFx0XFx0dGVbIDIgXSA9IHh6IC0gd3k7XFxuXFx0XFx0XFx0dGVbIDYgXSA9IHl6ICsgd3g7XFxuXFx0XFx0XFx0dGVbIDEwIF0gPSAxIC0gKCB4eCArIHl5ICk7XFxuXFxuXFx0XFx0XFx0Ly8gbGFzdCBjb2x1bW5cXG5cXHRcXHRcXHR0ZVsgMyBdID0gMDtcXG5cXHRcXHRcXHR0ZVsgNyBdID0gMDtcXG5cXHRcXHRcXHR0ZVsgMTEgXSA9IDA7XFxuXFxuXFx0XFx0XFx0Ly8gYm90dG9tIHJvd1xcblxcdFxcdFxcdHRlWyAxMiBdID0gMDtcXG5cXHRcXHRcXHR0ZVsgMTMgXSA9IDA7XFxuXFx0XFx0XFx0dGVbIDE0IF0gPSAwO1xcblxcdFxcdFxcdHRlWyAxNSBdID0gMTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGxvb2tBdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgeSA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0dmFyIHogPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBsb29rQXQoIGV5ZSwgdGFyZ2V0LCB1cCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdFxcdHouc3ViVmVjdG9ycyggZXllLCB0YXJnZXQgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHoubGVuZ3RoU3EoKSA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBleWUgYW5kIHRhcmdldCBhcmUgaW4gdGhlIHNhbWUgcG9zaXRpb25cXG5cXG5cXHRcXHRcXHRcXHRcXHR6LnogPSAxO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR6Lm5vcm1hbGl6ZSgpO1xcblxcdFxcdFxcdFxcdHguY3Jvc3NWZWN0b3JzKCB1cCwgeiApO1xcblxcblxcdFxcdFxcdFxcdGlmICggeC5sZW5ndGhTcSgpID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHVwIGFuZCB6IGFyZSBwYXJhbGxlbFxcblxcblxcdFxcdFxcdFxcdFxcdGlmICggTWF0aC5hYnMoIHVwLnogKSA9PT0gMSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR6LnggKz0gMC4wMDAxO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ei56ICs9IDAuMDAwMTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0ei5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHRcXHRcXHR4LmNyb3NzVmVjdG9ycyggdXAsIHogKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0eC5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHRcXHR5LmNyb3NzVmVjdG9ycyggeiwgeCApO1xcblxcblxcdFxcdFxcdFxcdHRlWyAwIF0gPSB4Lng7IHRlWyA0IF0gPSB5Lng7IHRlWyA4IF0gPSB6Lng7XFxuXFx0XFx0XFx0XFx0dGVbIDEgXSA9IHgueTsgdGVbIDUgXSA9IHkueTsgdGVbIDkgXSA9IHoueTtcXG5cXHRcXHRcXHRcXHR0ZVsgMiBdID0geC56OyB0ZVsgNiBdID0geS56OyB0ZVsgMTAgXSA9IHouejtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRtdWx0aXBseTogZnVuY3Rpb24gKCBtLCBuICkge1xcblxcblxcdFxcdFxcdGlmICggbiAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5TWF0cmljZXMoIGEsIGIgKSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKCBtLCBuICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXMoIHRoaXMsIG0gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHByZW11bHRpcGx5OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyggbSwgdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHlNYXRyaWNlczogZnVuY3Rpb24gKCBhLCBiICkge1xcblxcblxcdFxcdFxcdHZhciBhZSA9IGEuZWxlbWVudHM7XFxuXFx0XFx0XFx0dmFyIGJlID0gYi5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHZhciBhMTEgPSBhZVsgMCBdLCBhMTIgPSBhZVsgNCBdLCBhMTMgPSBhZVsgOCBdLCBhMTQgPSBhZVsgMTIgXTtcXG5cXHRcXHRcXHR2YXIgYTIxID0gYWVbIDEgXSwgYTIyID0gYWVbIDUgXSwgYTIzID0gYWVbIDkgXSwgYTI0ID0gYWVbIDEzIF07XFxuXFx0XFx0XFx0dmFyIGEzMSA9IGFlWyAyIF0sIGEzMiA9IGFlWyA2IF0sIGEzMyA9IGFlWyAxMCBdLCBhMzQgPSBhZVsgMTQgXTtcXG5cXHRcXHRcXHR2YXIgYTQxID0gYWVbIDMgXSwgYTQyID0gYWVbIDcgXSwgYTQzID0gYWVbIDExIF0sIGE0NCA9IGFlWyAxNSBdO1xcblxcblxcdFxcdFxcdHZhciBiMTEgPSBiZVsgMCBdLCBiMTIgPSBiZVsgNCBdLCBiMTMgPSBiZVsgOCBdLCBiMTQgPSBiZVsgMTIgXTtcXG5cXHRcXHRcXHR2YXIgYjIxID0gYmVbIDEgXSwgYjIyID0gYmVbIDUgXSwgYjIzID0gYmVbIDkgXSwgYjI0ID0gYmVbIDEzIF07XFxuXFx0XFx0XFx0dmFyIGIzMSA9IGJlWyAyIF0sIGIzMiA9IGJlWyA2IF0sIGIzMyA9IGJlWyAxMCBdLCBiMzQgPSBiZVsgMTQgXTtcXG5cXHRcXHRcXHR2YXIgYjQxID0gYmVbIDMgXSwgYjQyID0gYmVbIDcgXSwgYjQzID0gYmVbIDExIF0sIGI0NCA9IGJlWyAxNSBdO1xcblxcblxcdFxcdFxcdHRlWyAwIF0gPSBhMTEgKiBiMTEgKyBhMTIgKiBiMjEgKyBhMTMgKiBiMzEgKyBhMTQgKiBiNDE7XFxuXFx0XFx0XFx0dGVbIDQgXSA9IGExMSAqIGIxMiArIGExMiAqIGIyMiArIGExMyAqIGIzMiArIGExNCAqIGI0MjtcXG5cXHRcXHRcXHR0ZVsgOCBdID0gYTExICogYjEzICsgYTEyICogYjIzICsgYTEzICogYjMzICsgYTE0ICogYjQzO1xcblxcdFxcdFxcdHRlWyAxMiBdID0gYTExICogYjE0ICsgYTEyICogYjI0ICsgYTEzICogYjM0ICsgYTE0ICogYjQ0O1xcblxcblxcdFxcdFxcdHRlWyAxIF0gPSBhMjEgKiBiMTEgKyBhMjIgKiBiMjEgKyBhMjMgKiBiMzEgKyBhMjQgKiBiNDE7XFxuXFx0XFx0XFx0dGVbIDUgXSA9IGEyMSAqIGIxMiArIGEyMiAqIGIyMiArIGEyMyAqIGIzMiArIGEyNCAqIGI0MjtcXG5cXHRcXHRcXHR0ZVsgOSBdID0gYTIxICogYjEzICsgYTIyICogYjIzICsgYTIzICogYjMzICsgYTI0ICogYjQzO1xcblxcdFxcdFxcdHRlWyAxMyBdID0gYTIxICogYjE0ICsgYTIyICogYjI0ICsgYTIzICogYjM0ICsgYTI0ICogYjQ0O1xcblxcblxcdFxcdFxcdHRlWyAyIF0gPSBhMzEgKiBiMTEgKyBhMzIgKiBiMjEgKyBhMzMgKiBiMzEgKyBhMzQgKiBiNDE7XFxuXFx0XFx0XFx0dGVbIDYgXSA9IGEzMSAqIGIxMiArIGEzMiAqIGIyMiArIGEzMyAqIGIzMiArIGEzNCAqIGI0MjtcXG5cXHRcXHRcXHR0ZVsgMTAgXSA9IGEzMSAqIGIxMyArIGEzMiAqIGIyMyArIGEzMyAqIGIzMyArIGEzNCAqIGI0MztcXG5cXHRcXHRcXHR0ZVsgMTQgXSA9IGEzMSAqIGIxNCArIGEzMiAqIGIyNCArIGEzMyAqIGIzNCArIGEzNCAqIGI0NDtcXG5cXG5cXHRcXHRcXHR0ZVsgMyBdID0gYTQxICogYjExICsgYTQyICogYjIxICsgYTQzICogYjMxICsgYTQ0ICogYjQxO1xcblxcdFxcdFxcdHRlWyA3IF0gPSBhNDEgKiBiMTIgKyBhNDIgKiBiMjIgKyBhNDMgKiBiMzIgKyBhNDQgKiBiNDI7XFxuXFx0XFx0XFx0dGVbIDExIF0gPSBhNDEgKiBiMTMgKyBhNDIgKiBiMjMgKyBhNDMgKiBiMzMgKyBhNDQgKiBiNDM7XFxuXFx0XFx0XFx0dGVbIDE1IF0gPSBhNDEgKiBiMTQgKyBhNDIgKiBiMjQgKyBhNDMgKiBiMzQgKyBhNDQgKiBiNDQ7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtdWx0aXBseVNjYWxhcjogZnVuY3Rpb24gKCBzICkge1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0dGVbIDAgXSAqPSBzOyB0ZVsgNCBdICo9IHM7IHRlWyA4IF0gKj0gczsgdGVbIDEyIF0gKj0gcztcXG5cXHRcXHRcXHR0ZVsgMSBdICo9IHM7IHRlWyA1IF0gKj0gczsgdGVbIDkgXSAqPSBzOyB0ZVsgMTMgXSAqPSBzO1xcblxcdFxcdFxcdHRlWyAyIF0gKj0gczsgdGVbIDYgXSAqPSBzOyB0ZVsgMTAgXSAqPSBzOyB0ZVsgMTQgXSAqPSBzO1xcblxcdFxcdFxcdHRlWyAzIF0gKj0gczsgdGVbIDcgXSAqPSBzOyB0ZVsgMTEgXSAqPSBzOyB0ZVsgMTUgXSAqPSBzO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXBwbHlUb0J1ZmZlckF0dHJpYnV0ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoIGF0dHJpYnV0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBhdHRyaWJ1dGUuY291bnQ7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHYxLnggPSBhdHRyaWJ1dGUuZ2V0WCggaSApO1xcblxcdFxcdFxcdFxcdFxcdHYxLnkgPSBhdHRyaWJ1dGUuZ2V0WSggaSApO1xcblxcdFxcdFxcdFxcdFxcdHYxLnogPSBhdHRyaWJ1dGUuZ2V0WiggaSApO1xcblxcblxcdFxcdFxcdFxcdFxcdHYxLmFwcGx5TWF0cml4NCggdGhpcyApO1xcblxcblxcdFxcdFxcdFxcdFxcdGF0dHJpYnV0ZS5zZXRYWVooIGksIHYxLngsIHYxLnksIHYxLnogKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGF0dHJpYnV0ZTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRkZXRlcm1pbmFudDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0dmFyIG4xMSA9IHRlWyAwIF0sIG4xMiA9IHRlWyA0IF0sIG4xMyA9IHRlWyA4IF0sIG4xNCA9IHRlWyAxMiBdO1xcblxcdFxcdFxcdHZhciBuMjEgPSB0ZVsgMSBdLCBuMjIgPSB0ZVsgNSBdLCBuMjMgPSB0ZVsgOSBdLCBuMjQgPSB0ZVsgMTMgXTtcXG5cXHRcXHRcXHR2YXIgbjMxID0gdGVbIDIgXSwgbjMyID0gdGVbIDYgXSwgbjMzID0gdGVbIDEwIF0sIG4zNCA9IHRlWyAxNCBdO1xcblxcdFxcdFxcdHZhciBuNDEgPSB0ZVsgMyBdLCBuNDIgPSB0ZVsgNyBdLCBuNDMgPSB0ZVsgMTEgXSwgbjQ0ID0gdGVbIDE1IF07XFxuXFxuXFx0XFx0XFx0Ly9UT0RPOiBtYWtlIHRoaXMgbW9yZSBlZmZpY2llbnRcXG5cXHRcXHRcXHQvLyggYmFzZWQgb24gaHR0cDovL3d3dy5ldWNsaWRlYW5zcGFjZS5jb20vbWF0aHMvYWxnZWJyYS9tYXRyaXgvZnVuY3Rpb25zL2ludmVyc2UvZm91ckQvaW5kZXguaHRtIClcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKFxcblxcdFxcdFxcdFxcdG40MSAqIChcXG5cXHRcXHRcXHRcXHRcXHQrIG4xNCAqIG4yMyAqIG4zMlxcblxcdFxcdFxcdFxcdFxcdCAtIG4xMyAqIG4yNCAqIG4zMlxcblxcdFxcdFxcdFxcdFxcdCAtIG4xNCAqIG4yMiAqIG4zM1xcblxcdFxcdFxcdFxcdFxcdCArIG4xMiAqIG4yNCAqIG4zM1xcblxcdFxcdFxcdFxcdFxcdCArIG4xMyAqIG4yMiAqIG4zNFxcblxcdFxcdFxcdFxcdFxcdCAtIG4xMiAqIG4yMyAqIG4zNFxcblxcdFxcdFxcdFxcdCkgK1xcblxcdFxcdFxcdFxcdG40MiAqIChcXG5cXHRcXHRcXHRcXHRcXHQrIG4xMSAqIG4yMyAqIG4zNFxcblxcdFxcdFxcdFxcdFxcdCAtIG4xMSAqIG4yNCAqIG4zM1xcblxcdFxcdFxcdFxcdFxcdCArIG4xNCAqIG4yMSAqIG4zM1xcblxcdFxcdFxcdFxcdFxcdCAtIG4xMyAqIG4yMSAqIG4zNFxcblxcdFxcdFxcdFxcdFxcdCArIG4xMyAqIG4yNCAqIG4zMVxcblxcdFxcdFxcdFxcdFxcdCAtIG4xNCAqIG4yMyAqIG4zMVxcblxcdFxcdFxcdFxcdCkgK1xcblxcdFxcdFxcdFxcdG40MyAqIChcXG5cXHRcXHRcXHRcXHRcXHQrIG4xMSAqIG4yNCAqIG4zMlxcblxcdFxcdFxcdFxcdFxcdCAtIG4xMSAqIG4yMiAqIG4zNFxcblxcdFxcdFxcdFxcdFxcdCAtIG4xNCAqIG4yMSAqIG4zMlxcblxcdFxcdFxcdFxcdFxcdCArIG4xMiAqIG4yMSAqIG4zNFxcblxcdFxcdFxcdFxcdFxcdCArIG4xNCAqIG4yMiAqIG4zMVxcblxcdFxcdFxcdFxcdFxcdCAtIG4xMiAqIG4yNCAqIG4zMVxcblxcdFxcdFxcdFxcdCkgK1xcblxcdFxcdFxcdFxcdG40NCAqIChcXG5cXHRcXHRcXHRcXHRcXHQtIG4xMyAqIG4yMiAqIG4zMVxcblxcdFxcdFxcdFxcdFxcdCAtIG4xMSAqIG4yMyAqIG4zMlxcblxcdFxcdFxcdFxcdFxcdCArIG4xMSAqIG4yMiAqIG4zM1xcblxcdFxcdFxcdFxcdFxcdCArIG4xMyAqIG4yMSAqIG4zMlxcblxcdFxcdFxcdFxcdFxcdCAtIG4xMiAqIG4yMSAqIG4zM1xcblxcdFxcdFxcdFxcdFxcdCArIG4xMiAqIG4yMyAqIG4zMVxcblxcdFxcdFxcdFxcdClcXG5cXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dHJhbnNwb3NlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgdG1wO1xcblxcblxcdFxcdFxcdHRtcCA9IHRlWyAxIF07IHRlWyAxIF0gPSB0ZVsgNCBdOyB0ZVsgNCBdID0gdG1wO1xcblxcdFxcdFxcdHRtcCA9IHRlWyAyIF07IHRlWyAyIF0gPSB0ZVsgOCBdOyB0ZVsgOCBdID0gdG1wO1xcblxcdFxcdFxcdHRtcCA9IHRlWyA2IF07IHRlWyA2IF0gPSB0ZVsgOSBdOyB0ZVsgOSBdID0gdG1wO1xcblxcblxcdFxcdFxcdHRtcCA9IHRlWyAzIF07IHRlWyAzIF0gPSB0ZVsgMTIgXTsgdGVbIDEyIF0gPSB0bXA7XFxuXFx0XFx0XFx0dG1wID0gdGVbIDcgXTsgdGVbIDcgXSA9IHRlWyAxMyBdOyB0ZVsgMTMgXSA9IHRtcDtcXG5cXHRcXHRcXHR0bXAgPSB0ZVsgMTEgXTsgdGVbIDExIF0gPSB0ZVsgMTQgXTsgdGVbIDE0IF0gPSB0bXA7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRQb3NpdGlvbjogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0dGVbIDEyIF0gPSB2Lng7XFxuXFx0XFx0XFx0dGVbIDEzIF0gPSB2Lnk7XFxuXFx0XFx0XFx0dGVbIDE0IF0gPSB2Lno7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRJbnZlcnNlOiBmdW5jdGlvbiAoIG0sIHRocm93T25EZWdlbmVyYXRlICkge1xcblxcblxcdFxcdFxcdC8vIGJhc2VkIG9uIGh0dHA6Ly93d3cuZXVjbGlkZWFuc3BhY2UuY29tL21hdGhzL2FsZ2VicmEvbWF0cml4L2Z1bmN0aW9ucy9pbnZlcnNlL2ZvdXJEL2luZGV4Lmh0bVxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHMsXFxuXFx0XFx0XFx0XFx0bWUgPSBtLmVsZW1lbnRzLFxcblxcblxcdFxcdFxcdFxcdG4xMSA9IG1lWyAwIF0sIG4yMSA9IG1lWyAxIF0sIG4zMSA9IG1lWyAyIF0sIG40MSA9IG1lWyAzIF0sXFxuXFx0XFx0XFx0XFx0bjEyID0gbWVbIDQgXSwgbjIyID0gbWVbIDUgXSwgbjMyID0gbWVbIDYgXSwgbjQyID0gbWVbIDcgXSxcXG5cXHRcXHRcXHRcXHRuMTMgPSBtZVsgOCBdLCBuMjMgPSBtZVsgOSBdLCBuMzMgPSBtZVsgMTAgXSwgbjQzID0gbWVbIDExIF0sXFxuXFx0XFx0XFx0XFx0bjE0ID0gbWVbIDEyIF0sIG4yNCA9IG1lWyAxMyBdLCBuMzQgPSBtZVsgMTQgXSwgbjQ0ID0gbWVbIDE1IF0sXFxuXFxuXFx0XFx0XFx0XFx0dDExID0gbjIzICogbjM0ICogbjQyIC0gbjI0ICogbjMzICogbjQyICsgbjI0ICogbjMyICogbjQzIC0gbjIyICogbjM0ICogbjQzIC0gbjIzICogbjMyICogbjQ0ICsgbjIyICogbjMzICogbjQ0LFxcblxcdFxcdFxcdFxcdHQxMiA9IG4xNCAqIG4zMyAqIG40MiAtIG4xMyAqIG4zNCAqIG40MiAtIG4xNCAqIG4zMiAqIG40MyArIG4xMiAqIG4zNCAqIG40MyArIG4xMyAqIG4zMiAqIG40NCAtIG4xMiAqIG4zMyAqIG40NCxcXG5cXHRcXHRcXHRcXHR0MTMgPSBuMTMgKiBuMjQgKiBuNDIgLSBuMTQgKiBuMjMgKiBuNDIgKyBuMTQgKiBuMjIgKiBuNDMgLSBuMTIgKiBuMjQgKiBuNDMgLSBuMTMgKiBuMjIgKiBuNDQgKyBuMTIgKiBuMjMgKiBuNDQsXFxuXFx0XFx0XFx0XFx0dDE0ID0gbjE0ICogbjIzICogbjMyIC0gbjEzICogbjI0ICogbjMyIC0gbjE0ICogbjIyICogbjMzICsgbjEyICogbjI0ICogbjMzICsgbjEzICogbjIyICogbjM0IC0gbjEyICogbjIzICogbjM0O1xcblxcblxcdFxcdFxcdHZhciBkZXQgPSBuMTEgKiB0MTEgKyBuMjEgKiB0MTIgKyBuMzEgKiB0MTMgKyBuNDEgKiB0MTQ7XFxuXFxuXFx0XFx0XFx0aWYgKCBkZXQgPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG1zZyA9IFxcXCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGNhbid0IGludmVydCBtYXRyaXgsIGRldGVybWluYW50IGlzIDBcXFwiO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGhyb3dPbkRlZ2VuZXJhdGUgPT09IHRydWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggbXNnICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmlkZW50aXR5KCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBkZXRJbnYgPSAxIC8gZGV0O1xcblxcblxcdFxcdFxcdHRlWyAwIF0gPSB0MTEgKiBkZXRJbnY7XFxuXFx0XFx0XFx0dGVbIDEgXSA9ICggbjI0ICogbjMzICogbjQxIC0gbjIzICogbjM0ICogbjQxIC0gbjI0ICogbjMxICogbjQzICsgbjIxICogbjM0ICogbjQzICsgbjIzICogbjMxICogbjQ0IC0gbjIxICogbjMzICogbjQ0ICkgKiBkZXRJbnY7XFxuXFx0XFx0XFx0dGVbIDIgXSA9ICggbjIyICogbjM0ICogbjQxIC0gbjI0ICogbjMyICogbjQxICsgbjI0ICogbjMxICogbjQyIC0gbjIxICogbjM0ICogbjQyIC0gbjIyICogbjMxICogbjQ0ICsgbjIxICogbjMyICogbjQ0ICkgKiBkZXRJbnY7XFxuXFx0XFx0XFx0dGVbIDMgXSA9ICggbjIzICogbjMyICogbjQxIC0gbjIyICogbjMzICogbjQxIC0gbjIzICogbjMxICogbjQyICsgbjIxICogbjMzICogbjQyICsgbjIyICogbjMxICogbjQzIC0gbjIxICogbjMyICogbjQzICkgKiBkZXRJbnY7XFxuXFxuXFx0XFx0XFx0dGVbIDQgXSA9IHQxMiAqIGRldEludjtcXG5cXHRcXHRcXHR0ZVsgNSBdID0gKCBuMTMgKiBuMzQgKiBuNDEgLSBuMTQgKiBuMzMgKiBuNDEgKyBuMTQgKiBuMzEgKiBuNDMgLSBuMTEgKiBuMzQgKiBuNDMgLSBuMTMgKiBuMzEgKiBuNDQgKyBuMTEgKiBuMzMgKiBuNDQgKSAqIGRldEludjtcXG5cXHRcXHRcXHR0ZVsgNiBdID0gKCBuMTQgKiBuMzIgKiBuNDEgLSBuMTIgKiBuMzQgKiBuNDEgLSBuMTQgKiBuMzEgKiBuNDIgKyBuMTEgKiBuMzQgKiBuNDIgKyBuMTIgKiBuMzEgKiBuNDQgLSBuMTEgKiBuMzIgKiBuNDQgKSAqIGRldEludjtcXG5cXHRcXHRcXHR0ZVsgNyBdID0gKCBuMTIgKiBuMzMgKiBuNDEgLSBuMTMgKiBuMzIgKiBuNDEgKyBuMTMgKiBuMzEgKiBuNDIgLSBuMTEgKiBuMzMgKiBuNDIgLSBuMTIgKiBuMzEgKiBuNDMgKyBuMTEgKiBuMzIgKiBuNDMgKSAqIGRldEludjtcXG5cXG5cXHRcXHRcXHR0ZVsgOCBdID0gdDEzICogZGV0SW52O1xcblxcdFxcdFxcdHRlWyA5IF0gPSAoIG4xNCAqIG4yMyAqIG40MSAtIG4xMyAqIG4yNCAqIG40MSAtIG4xNCAqIG4yMSAqIG40MyArIG4xMSAqIG4yNCAqIG40MyArIG4xMyAqIG4yMSAqIG40NCAtIG4xMSAqIG4yMyAqIG40NCApICogZGV0SW52O1xcblxcdFxcdFxcdHRlWyAxMCBdID0gKCBuMTIgKiBuMjQgKiBuNDEgLSBuMTQgKiBuMjIgKiBuNDEgKyBuMTQgKiBuMjEgKiBuNDIgLSBuMTEgKiBuMjQgKiBuNDIgLSBuMTIgKiBuMjEgKiBuNDQgKyBuMTEgKiBuMjIgKiBuNDQgKSAqIGRldEludjtcXG5cXHRcXHRcXHR0ZVsgMTEgXSA9ICggbjEzICogbjIyICogbjQxIC0gbjEyICogbjIzICogbjQxIC0gbjEzICogbjIxICogbjQyICsgbjExICogbjIzICogbjQyICsgbjEyICogbjIxICogbjQzIC0gbjExICogbjIyICogbjQzICkgKiBkZXRJbnY7XFxuXFxuXFx0XFx0XFx0dGVbIDEyIF0gPSB0MTQgKiBkZXRJbnY7XFxuXFx0XFx0XFx0dGVbIDEzIF0gPSAoIG4xMyAqIG4yNCAqIG4zMSAtIG4xNCAqIG4yMyAqIG4zMSArIG4xNCAqIG4yMSAqIG4zMyAtIG4xMSAqIG4yNCAqIG4zMyAtIG4xMyAqIG4yMSAqIG4zNCArIG4xMSAqIG4yMyAqIG4zNCApICogZGV0SW52O1xcblxcdFxcdFxcdHRlWyAxNCBdID0gKCBuMTQgKiBuMjIgKiBuMzEgLSBuMTIgKiBuMjQgKiBuMzEgLSBuMTQgKiBuMjEgKiBuMzIgKyBuMTEgKiBuMjQgKiBuMzIgKyBuMTIgKiBuMjEgKiBuMzQgLSBuMTEgKiBuMjIgKiBuMzQgKSAqIGRldEludjtcXG5cXHRcXHRcXHR0ZVsgMTUgXSA9ICggbjEyICogbjIzICogbjMxIC0gbjEzICogbjIyICogbjMxICsgbjEzICogbjIxICogbjMyIC0gbjExICogbjIzICogbjMyIC0gbjEyICogbjIxICogbjMzICsgbjExICogbjIyICogbjMzICkgKiBkZXRJbnY7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzY2FsZTogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFx0XFx0XFx0dmFyIHggPSB2LngsIHkgPSB2LnksIHogPSB2Lno7XFxuXFxuXFx0XFx0XFx0dGVbIDAgXSAqPSB4OyB0ZVsgNCBdICo9IHk7IHRlWyA4IF0gKj0gejtcXG5cXHRcXHRcXHR0ZVsgMSBdICo9IHg7IHRlWyA1IF0gKj0geTsgdGVbIDkgXSAqPSB6O1xcblxcdFxcdFxcdHRlWyAyIF0gKj0geDsgdGVbIDYgXSAqPSB5OyB0ZVsgMTAgXSAqPSB6O1xcblxcdFxcdFxcdHRlWyAzIF0gKj0geDsgdGVbIDcgXSAqPSB5OyB0ZVsgMTEgXSAqPSB6O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0TWF4U2NhbGVPbkF4aXM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHZhciBzY2FsZVhTcSA9IHRlWyAwIF0gKiB0ZVsgMCBdICsgdGVbIDEgXSAqIHRlWyAxIF0gKyB0ZVsgMiBdICogdGVbIDIgXTtcXG5cXHRcXHRcXHR2YXIgc2NhbGVZU3EgPSB0ZVsgNCBdICogdGVbIDQgXSArIHRlWyA1IF0gKiB0ZVsgNSBdICsgdGVbIDYgXSAqIHRlWyA2IF07XFxuXFx0XFx0XFx0dmFyIHNjYWxlWlNxID0gdGVbIDggXSAqIHRlWyA4IF0gKyB0ZVsgOSBdICogdGVbIDkgXSArIHRlWyAxMCBdICogdGVbIDEwIF07XFxuXFxuXFx0XFx0XFx0cmV0dXJuIE1hdGguc3FydCggTWF0aC5tYXgoIHNjYWxlWFNxLCBzY2FsZVlTcSwgc2NhbGVaU3EgKSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWFrZVRyYW5zbGF0aW9uOiBmdW5jdGlvbiAoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5zZXQoXFxuXFxuXFx0XFx0XFx0XFx0MSwgMCwgMCwgeCxcXG5cXHRcXHRcXHRcXHQwLCAxLCAwLCB5LFxcblxcdFxcdFxcdFxcdDAsIDAsIDEsIHosXFxuXFx0XFx0XFx0XFx0MCwgMCwgMCwgMVxcblxcblxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtYWtlUm90YXRpb25YOiBmdW5jdGlvbiAoIHRoZXRhICkge1xcblxcblxcdFxcdFxcdHZhciBjID0gTWF0aC5jb3MoIHRoZXRhICksIHMgPSBNYXRoLnNpbiggdGhldGEgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLnNldChcXG5cXG5cXHRcXHRcXHRcXHQxLCAwLCAwLCAwLFxcblxcdFxcdFxcdFxcdDAsIGMsIC0gcywgMCxcXG5cXHRcXHRcXHRcXHQwLCBzLCBjLCAwLFxcblxcdFxcdFxcdFxcdDAsIDAsIDAsIDFcXG5cXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWFrZVJvdGF0aW9uWTogZnVuY3Rpb24gKCB0aGV0YSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYyA9IE1hdGguY29zKCB0aGV0YSApLCBzID0gTWF0aC5zaW4oIHRoZXRhICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5zZXQoXFxuXFxuXFx0XFx0XFx0XFx0IGMsIDAsIHMsIDAsXFxuXFx0XFx0XFx0XFx0IDAsIDEsIDAsIDAsXFxuXFx0XFx0XFx0XFx0LSBzLCAwLCBjLCAwLFxcblxcdFxcdFxcdFxcdCAwLCAwLCAwLCAxXFxuXFxuXFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1ha2VSb3RhdGlvblo6IGZ1bmN0aW9uICggdGhldGEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGMgPSBNYXRoLmNvcyggdGhldGEgKSwgcyA9IE1hdGguc2luKCB0aGV0YSApO1xcblxcblxcdFxcdFxcdHRoaXMuc2V0KFxcblxcblxcdFxcdFxcdFxcdGMsIC0gcywgMCwgMCxcXG5cXHRcXHRcXHRcXHRzLCBjLCAwLCAwLFxcblxcdFxcdFxcdFxcdDAsIDAsIDEsIDAsXFxuXFx0XFx0XFx0XFx0MCwgMCwgMCwgMVxcblxcblxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtYWtlUm90YXRpb25BeGlzOiBmdW5jdGlvbiAoIGF4aXMsIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdC8vIEJhc2VkIG9uIGh0dHA6Ly93d3cuZ2FtZWRldi5uZXQvcmVmZXJlbmNlL2FydGljbGVzL2FydGljbGUxMTk5LmFzcFxcblxcblxcdFxcdFxcdHZhciBjID0gTWF0aC5jb3MoIGFuZ2xlICk7XFxuXFx0XFx0XFx0dmFyIHMgPSBNYXRoLnNpbiggYW5nbGUgKTtcXG5cXHRcXHRcXHR2YXIgdCA9IDEgLSBjO1xcblxcdFxcdFxcdHZhciB4ID0gYXhpcy54LCB5ID0gYXhpcy55LCB6ID0gYXhpcy56O1xcblxcdFxcdFxcdHZhciB0eCA9IHQgKiB4LCB0eSA9IHQgKiB5O1xcblxcblxcdFxcdFxcdHRoaXMuc2V0KFxcblxcblxcdFxcdFxcdFxcdHR4ICogeCArIGMsIHR4ICogeSAtIHMgKiB6LCB0eCAqIHogKyBzICogeSwgMCxcXG5cXHRcXHRcXHRcXHR0eCAqIHkgKyBzICogeiwgdHkgKiB5ICsgYywgdHkgKiB6IC0gcyAqIHgsIDAsXFxuXFx0XFx0XFx0XFx0dHggKiB6IC0gcyAqIHksIHR5ICogeiArIHMgKiB4LCB0ICogeiAqIHogKyBjLCAwLFxcblxcdFxcdFxcdFxcdDAsIDAsIDAsIDFcXG5cXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdCByZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1ha2VTY2FsZTogZnVuY3Rpb24gKCB4LCB5LCB6ICkge1xcblxcblxcdFxcdFxcdHRoaXMuc2V0KFxcblxcblxcdFxcdFxcdFxcdHgsIDAsIDAsIDAsXFxuXFx0XFx0XFx0XFx0MCwgeSwgMCwgMCxcXG5cXHRcXHRcXHRcXHQwLCAwLCB6LCAwLFxcblxcdFxcdFxcdFxcdDAsIDAsIDAsIDFcXG5cXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWFrZVNoZWFyOiBmdW5jdGlvbiAoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5zZXQoXFxuXFxuXFx0XFx0XFx0XFx0MSwgeSwgeiwgMCxcXG5cXHRcXHRcXHRcXHR4LCAxLCB6LCAwLFxcblxcdFxcdFxcdFxcdHgsIHksIDEsIDAsXFxuXFx0XFx0XFx0XFx0MCwgMCwgMCwgMVxcblxcblxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb21wb3NlOiBmdW5jdGlvbiAoIHBvc2l0aW9uLCBxdWF0ZXJuaW9uLCBzY2FsZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICk7XFxuXFx0XFx0XFx0dGhpcy5zY2FsZSggc2NhbGUgKTtcXG5cXHRcXHRcXHR0aGlzLnNldFBvc2l0aW9uKCBwb3NpdGlvbiApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGVjb21wb3NlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHZlY3RvciA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0dmFyIG1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGRlY29tcG9zZSggcG9zaXRpb24sIHF1YXRlcm5pb24sIHNjYWxlICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHN4ID0gdmVjdG9yLnNldCggdGVbIDAgXSwgdGVbIDEgXSwgdGVbIDIgXSApLmxlbmd0aCgpO1xcblxcdFxcdFxcdFxcdHZhciBzeSA9IHZlY3Rvci5zZXQoIHRlWyA0IF0sIHRlWyA1IF0sIHRlWyA2IF0gKS5sZW5ndGgoKTtcXG5cXHRcXHRcXHRcXHR2YXIgc3ogPSB2ZWN0b3Iuc2V0KCB0ZVsgOCBdLCB0ZVsgOSBdLCB0ZVsgMTAgXSApLmxlbmd0aCgpO1xcblxcblxcdFxcdFxcdFxcdC8vIGlmIGRldGVybWluZSBpcyBuZWdhdGl2ZSwgd2UgbmVlZCB0byBpbnZlcnQgb25lIHNjYWxlXFxuXFx0XFx0XFx0XFx0dmFyIGRldCA9IHRoaXMuZGV0ZXJtaW5hbnQoKTtcXG5cXHRcXHRcXHRcXHRpZiAoIGRldCA8IDAgKSBzeCA9IC0gc3g7XFxuXFxuXFx0XFx0XFx0XFx0cG9zaXRpb24ueCA9IHRlWyAxMiBdO1xcblxcdFxcdFxcdFxcdHBvc2l0aW9uLnkgPSB0ZVsgMTMgXTtcXG5cXHRcXHRcXHRcXHRwb3NpdGlvbi56ID0gdGVbIDE0IF07XFxuXFxuXFx0XFx0XFx0XFx0Ly8gc2NhbGUgdGhlIHJvdGF0aW9uIHBhcnRcXG5cXHRcXHRcXHRcXHRtYXRyaXguY29weSggdGhpcyApO1xcblxcblxcdFxcdFxcdFxcdHZhciBpbnZTWCA9IDEgLyBzeDtcXG5cXHRcXHRcXHRcXHR2YXIgaW52U1kgPSAxIC8gc3k7XFxuXFx0XFx0XFx0XFx0dmFyIGludlNaID0gMSAvIHN6O1xcblxcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgMCBdICo9IGludlNYO1xcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgMSBdICo9IGludlNYO1xcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgMiBdICo9IGludlNYO1xcblxcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgNCBdICo9IGludlNZO1xcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgNSBdICo9IGludlNZO1xcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgNiBdICo9IGludlNZO1xcblxcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgOCBdICo9IGludlNaO1xcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgOSBdICo9IGludlNaO1xcblxcdFxcdFxcdFxcdG1hdHJpeC5lbGVtZW50c1sgMTAgXSAqPSBpbnZTWjtcXG5cXG5cXHRcXHRcXHRcXHRxdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeCggbWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0c2NhbGUueCA9IHN4O1xcblxcdFxcdFxcdFxcdHNjYWxlLnkgPSBzeTtcXG5cXHRcXHRcXHRcXHRzY2FsZS56ID0gc3o7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0bWFrZVBlcnNwZWN0aXZlOiBmdW5jdGlvbiAoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyICkge1xcblxcblxcdFxcdFxcdGlmICggZmFyID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgeCA9IDIgKiBuZWFyIC8gKCByaWdodCAtIGxlZnQgKTtcXG5cXHRcXHRcXHR2YXIgeSA9IDIgKiBuZWFyIC8gKCB0b3AgLSBib3R0b20gKTtcXG5cXG5cXHRcXHRcXHR2YXIgYSA9ICggcmlnaHQgKyBsZWZ0ICkgLyAoIHJpZ2h0IC0gbGVmdCApO1xcblxcdFxcdFxcdHZhciBiID0gKCB0b3AgKyBib3R0b20gKSAvICggdG9wIC0gYm90dG9tICk7XFxuXFx0XFx0XFx0dmFyIGMgPSAtICggZmFyICsgbmVhciApIC8gKCBmYXIgLSBuZWFyICk7XFxuXFx0XFx0XFx0dmFyIGQgPSAtIDIgKiBmYXIgKiBuZWFyIC8gKCBmYXIgLSBuZWFyICk7XFxuXFxuXFx0XFx0XFx0dGVbIDAgXSA9IHg7XFx0dGVbIDQgXSA9IDA7XFx0dGVbIDggXSA9IGE7XFx0dGVbIDEyIF0gPSAwO1xcblxcdFxcdFxcdHRlWyAxIF0gPSAwO1xcdHRlWyA1IF0gPSB5O1xcdHRlWyA5IF0gPSBiO1xcdHRlWyAxMyBdID0gMDtcXG5cXHRcXHRcXHR0ZVsgMiBdID0gMDtcXHR0ZVsgNiBdID0gMDtcXHR0ZVsgMTAgXSA9IGM7XFx0dGVbIDE0IF0gPSBkO1xcblxcdFxcdFxcdHRlWyAzIF0gPSAwO1xcdHRlWyA3IF0gPSAwO1xcdHRlWyAxMSBdID0gLSAxO1xcdHRlWyAxNSBdID0gMDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1ha2VPcnRob2dyYXBoaWM6IGZ1bmN0aW9uICggbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tLCBuZWFyLCBmYXIgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgdyA9IDEuMCAvICggcmlnaHQgLSBsZWZ0ICk7XFxuXFx0XFx0XFx0dmFyIGggPSAxLjAgLyAoIHRvcCAtIGJvdHRvbSApO1xcblxcdFxcdFxcdHZhciBwID0gMS4wIC8gKCBmYXIgLSBuZWFyICk7XFxuXFxuXFx0XFx0XFx0dmFyIHggPSAoIHJpZ2h0ICsgbGVmdCApICogdztcXG5cXHRcXHRcXHR2YXIgeSA9ICggdG9wICsgYm90dG9tICkgKiBoO1xcblxcdFxcdFxcdHZhciB6ID0gKCBmYXIgKyBuZWFyICkgKiBwO1xcblxcblxcdFxcdFxcdHRlWyAwIF0gPSAyICogdztcXHR0ZVsgNCBdID0gMDtcXHR0ZVsgOCBdID0gMDtcXHR0ZVsgMTIgXSA9IC0geDtcXG5cXHRcXHRcXHR0ZVsgMSBdID0gMDtcXHR0ZVsgNSBdID0gMiAqIGg7XFx0dGVbIDkgXSA9IDA7XFx0dGVbIDEzIF0gPSAtIHk7XFxuXFx0XFx0XFx0dGVbIDIgXSA9IDA7XFx0dGVbIDYgXSA9IDA7XFx0dGVbIDEwIF0gPSAtIDIgKiBwO1xcdHRlWyAxNCBdID0gLSB6O1xcblxcdFxcdFxcdHRlWyAzIF0gPSAwO1xcdHRlWyA3IF0gPSAwO1xcdHRlWyAxMSBdID0gMDtcXHR0ZVsgMTUgXSA9IDE7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRlcXVhbHM6IGZ1bmN0aW9uICggbWF0cml4ICkge1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFx0XFx0XFx0dmFyIG1lID0gbWF0cml4LmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IDE2OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggdGVbIGkgXSAhPT0gbWVbIGkgXSApIHJldHVybiBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCAxNjsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmVsZW1lbnRzWyBpIF0gPSBhcnJheVsgaSArIG9mZnNldCBdO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGFycmF5ID09PSB1bmRlZmluZWQgKSBhcnJheSA9IFtdO1xcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCBdID0gdGVbIDAgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMSBdID0gdGVbIDEgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMiBdID0gdGVbIDIgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMyBdID0gdGVbIDMgXTtcXG5cXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgNCBdID0gdGVbIDQgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgNSBdID0gdGVbIDUgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgNiBdID0gdGVbIDYgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgNyBdID0gdGVbIDcgXTtcXG5cXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgOCBdID0gdGVbIDggXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgOSBdID0gdGVbIDkgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMTAgXSA9IHRlWyAxMCBdO1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAxMSBdID0gdGVbIDExIF07XFxuXFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDEyIF0gPSB0ZVsgMTIgXTtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMTMgXSA9IHRlWyAxMyBdO1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAxNCBdID0gdGVbIDE0IF07XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDE1IF0gPSB0ZVsgMTUgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYXJyYXk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICogQGF1dGhvciBiaG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pb1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFF1YXRlcm5pb24oIHgsIHksIHosIHcgKSB7XFxuXFxuXFx0XFx0dGhpcy5feCA9IHggfHwgMDtcXG5cXHRcXHR0aGlzLl95ID0geSB8fCAwO1xcblxcdFxcdHRoaXMuX3ogPSB6IHx8IDA7XFxuXFx0XFx0dGhpcy5fdyA9ICggdyAhPT0gdW5kZWZpbmVkICkgPyB3IDogMTtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggUXVhdGVybmlvbiwge1xcblxcblxcdFxcdHNsZXJwOiBmdW5jdGlvbiAoIHFhLCBxYiwgcW0sIHQgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHFtLmNvcHkoIHFhICkuc2xlcnAoIHFiLCB0ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzbGVycEZsYXQ6IGZ1bmN0aW9uICggZHN0LCBkc3RPZmZzZXQsIHNyYzAsIHNyY09mZnNldDAsIHNyYzEsIHNyY09mZnNldDEsIHQgKSB7XFxuXFxuXFx0XFx0XFx0Ly8gZnV6ei1mcmVlLCBhcnJheS1iYXNlZCBRdWF0ZXJuaW9uIFNMRVJQIG9wZXJhdGlvblxcblxcblxcdFxcdFxcdHZhciB4MCA9IHNyYzBbIHNyY09mZnNldDAgKyAwIF0sXFxuXFx0XFx0XFx0XFx0eTAgPSBzcmMwWyBzcmNPZmZzZXQwICsgMSBdLFxcblxcdFxcdFxcdFxcdHowID0gc3JjMFsgc3JjT2Zmc2V0MCArIDIgXSxcXG5cXHRcXHRcXHRcXHR3MCA9IHNyYzBbIHNyY09mZnNldDAgKyAzIF0sXFxuXFxuXFx0XFx0XFx0XFx0eDEgPSBzcmMxWyBzcmNPZmZzZXQxICsgMCBdLFxcblxcdFxcdFxcdFxcdHkxID0gc3JjMVsgc3JjT2Zmc2V0MSArIDEgXSxcXG5cXHRcXHRcXHRcXHR6MSA9IHNyYzFbIHNyY09mZnNldDEgKyAyIF0sXFxuXFx0XFx0XFx0XFx0dzEgPSBzcmMxWyBzcmNPZmZzZXQxICsgMyBdO1xcblxcblxcdFxcdFxcdGlmICggdzAgIT09IHcxIHx8IHgwICE9PSB4MSB8fCB5MCAhPT0geTEgfHwgejAgIT09IHoxICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBzID0gMSAtIHQsXFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29zID0geDAgKiB4MSArIHkwICogeTEgKyB6MCAqIHoxICsgdzAgKiB3MSxcXG5cXG5cXHRcXHRcXHRcXHRcXHRkaXIgPSAoIGNvcyA+PSAwID8gMSA6IC0gMSApLFxcblxcdFxcdFxcdFxcdFxcdHNxclNpbiA9IDEgLSBjb3MgKiBjb3M7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gU2tpcCB0aGUgU2xlcnAgZm9yIHRpbnkgc3RlcHMgdG8gYXZvaWQgbnVtZXJpYyBwcm9ibGVtczpcXG5cXHRcXHRcXHRcXHRpZiAoIHNxclNpbiA+IE51bWJlci5FUFNJTE9OICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBzaW4gPSBNYXRoLnNxcnQoIHNxclNpbiApLFxcblxcdFxcdFxcdFxcdFxcdFxcdGxlbiA9IE1hdGguYXRhbjIoIHNpbiwgY29zICogZGlyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cyA9IE1hdGguc2luKCBzICogbGVuICkgLyBzaW47XFxuXFx0XFx0XFx0XFx0XFx0dCA9IE1hdGguc2luKCB0ICogbGVuICkgLyBzaW47XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHZhciB0RGlyID0gdCAqIGRpcjtcXG5cXG5cXHRcXHRcXHRcXHR4MCA9IHgwICogcyArIHgxICogdERpcjtcXG5cXHRcXHRcXHRcXHR5MCA9IHkwICogcyArIHkxICogdERpcjtcXG5cXHRcXHRcXHRcXHR6MCA9IHowICogcyArIHoxICogdERpcjtcXG5cXHRcXHRcXHRcXHR3MCA9IHcwICogcyArIHcxICogdERpcjtcXG5cXG5cXHRcXHRcXHRcXHQvLyBOb3JtYWxpemUgaW4gY2FzZSB3ZSBqdXN0IGRpZCBhIGxlcnA6XFxuXFx0XFx0XFx0XFx0aWYgKCBzID09PSAxIC0gdCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZiA9IDEgLyBNYXRoLnNxcnQoIHgwICogeDAgKyB5MCAqIHkwICsgejAgKiB6MCArIHcwICogdzAgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR4MCAqPSBmO1xcblxcdFxcdFxcdFxcdFxcdHkwICo9IGY7XFxuXFx0XFx0XFx0XFx0XFx0ejAgKj0gZjtcXG5cXHRcXHRcXHRcXHRcXHR3MCAqPSBmO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0ZHN0WyBkc3RPZmZzZXQgXSA9IHgwO1xcblxcdFxcdFxcdGRzdFsgZHN0T2Zmc2V0ICsgMSBdID0geTA7XFxuXFx0XFx0XFx0ZHN0WyBkc3RPZmZzZXQgKyAyIF0gPSB6MDtcXG5cXHRcXHRcXHRkc3RbIGRzdE9mZnNldCArIDMgXSA9IHcwO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFF1YXRlcm5pb24ucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0eDoge1xcblxcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLl94O1xcblxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3ggPSB2YWx1ZTtcXG5cXHRcXHRcXHRcXHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR5OiB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuX3k7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5feSA9IHZhbHVlO1xcblxcdFxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHo6IHtcXG5cXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5fejtcXG5cXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl96ID0gdmFsdWU7XFxuXFx0XFx0XFx0XFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dzoge1xcblxcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLl93O1xcblxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3cgPSB2YWx1ZTtcXG5cXHRcXHRcXHRcXHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBRdWF0ZXJuaW9uLnByb3RvdHlwZSwge1xcblxcblxcdFxcdHNldDogZnVuY3Rpb24gKCB4LCB5LCB6LCB3ICkge1xcblxcblxcdFxcdFxcdHRoaXMuX3ggPSB4O1xcblxcdFxcdFxcdHRoaXMuX3kgPSB5O1xcblxcdFxcdFxcdHRoaXMuX3ogPSB6O1xcblxcdFxcdFxcdHRoaXMuX3cgPSB3O1xcblxcblxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoIHRoaXMuX3gsIHRoaXMuX3ksIHRoaXMuX3osIHRoaXMuX3cgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggcXVhdGVybmlvbiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLl94ID0gcXVhdGVybmlvbi54O1xcblxcdFxcdFxcdHRoaXMuX3kgPSBxdWF0ZXJuaW9uLnk7XFxuXFx0XFx0XFx0dGhpcy5feiA9IHF1YXRlcm5pb24uejtcXG5cXHRcXHRcXHR0aGlzLl93ID0gcXVhdGVybmlvbi53O1xcblxcblxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbUV1bGVyOiBmdW5jdGlvbiAoIGV1bGVyLCB1cGRhdGUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCAhICggZXVsZXIgJiYgZXVsZXIuaXNFdWxlciApICkge1xcblxcblxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggJ1RIUkVFLlF1YXRlcm5pb246IC5zZXRGcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHggPSBldWxlci5feCwgeSA9IGV1bGVyLl95LCB6ID0gZXVsZXIuX3osIG9yZGVyID0gZXVsZXIub3JkZXI7XFxuXFxuXFx0XFx0XFx0Ly8gaHR0cDovL3d3dy5tYXRod29ya3MuY29tL21hdGxhYmNlbnRyYWwvZmlsZWV4Y2hhbmdlL1xcblxcdFxcdFxcdC8vIFxcdDIwNjk2LWZ1bmN0aW9uLXRvLWNvbnZlcnQtYmV0d2Vlbi1kY20tZXVsZXItYW5nbGVzLXF1YXRlcm5pb25zLWFuZC1ldWxlci12ZWN0b3JzL1xcblxcdFxcdFxcdC8vXFx0Y29udGVudC9TcGluQ2FsYy5tXFxuXFxuXFx0XFx0XFx0dmFyIGNvcyA9IE1hdGguY29zO1xcblxcdFxcdFxcdHZhciBzaW4gPSBNYXRoLnNpbjtcXG5cXG5cXHRcXHRcXHR2YXIgYzEgPSBjb3MoIHggLyAyICk7XFxuXFx0XFx0XFx0dmFyIGMyID0gY29zKCB5IC8gMiApO1xcblxcdFxcdFxcdHZhciBjMyA9IGNvcyggeiAvIDIgKTtcXG5cXG5cXHRcXHRcXHR2YXIgczEgPSBzaW4oIHggLyAyICk7XFxuXFx0XFx0XFx0dmFyIHMyID0gc2luKCB5IC8gMiApO1xcblxcdFxcdFxcdHZhciBzMyA9IHNpbiggeiAvIDIgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIG9yZGVyID09PSAnWFlaJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gczEgKiBjMiAqIGMzICsgYzEgKiBzMiAqIHMzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSBjMSAqIHMyICogYzMgLSBzMSAqIGMyICogczM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IGMxICogYzIgKiBzMyArIHMxICogczIgKiBjMztcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gYzEgKiBjMiAqIGMzIC0gczEgKiBzMiAqIHMzO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG9yZGVyID09PSAnWVhaJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gczEgKiBjMiAqIGMzICsgYzEgKiBzMiAqIHMzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSBjMSAqIHMyICogYzMgLSBzMSAqIGMyICogczM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IGMxICogYzIgKiBzMyAtIHMxICogczIgKiBjMztcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gYzEgKiBjMiAqIGMzICsgczEgKiBzMiAqIHMzO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG9yZGVyID09PSAnWlhZJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gczEgKiBjMiAqIGMzIC0gYzEgKiBzMiAqIHMzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSBjMSAqIHMyICogYzMgKyBzMSAqIGMyICogczM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IGMxICogYzIgKiBzMyArIHMxICogczIgKiBjMztcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gYzEgKiBjMiAqIGMzIC0gczEgKiBzMiAqIHMzO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG9yZGVyID09PSAnWllYJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gczEgKiBjMiAqIGMzIC0gYzEgKiBzMiAqIHMzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSBjMSAqIHMyICogYzMgKyBzMSAqIGMyICogczM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IGMxICogYzIgKiBzMyAtIHMxICogczIgKiBjMztcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gYzEgKiBjMiAqIGMzICsgczEgKiBzMiAqIHMzO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG9yZGVyID09PSAnWVpYJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gczEgKiBjMiAqIGMzICsgYzEgKiBzMiAqIHMzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSBjMSAqIHMyICogYzMgKyBzMSAqIGMyICogczM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IGMxICogYzIgKiBzMyAtIHMxICogczIgKiBjMztcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gYzEgKiBjMiAqIGMzIC0gczEgKiBzMiAqIHMzO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG9yZGVyID09PSAnWFpZJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gczEgKiBjMiAqIGMzIC0gYzEgKiBzMiAqIHMzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSBjMSAqIHMyICogYzMgLSBzMSAqIGMyICogczM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IGMxICogYzIgKiBzMyArIHMxICogczIgKiBjMztcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gYzEgKiBjMiAqIGMzICsgczEgKiBzMiAqIHMzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHVwZGF0ZSAhPT0gZmFsc2UgKSB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21BeGlzQW5nbGU6IGZ1bmN0aW9uICggYXhpcywgYW5nbGUgKSB7XFxuXFxuXFx0XFx0XFx0Ly8gaHR0cDovL3d3dy5ldWNsaWRlYW5zcGFjZS5jb20vbWF0aHMvZ2VvbWV0cnkvcm90YXRpb25zL2NvbnZlcnNpb25zL2FuZ2xlVG9RdWF0ZXJuaW9uL2luZGV4Lmh0bVxcblxcblxcdFxcdFxcdC8vIGFzc3VtZXMgYXhpcyBpcyBub3JtYWxpemVkXFxuXFxuXFx0XFx0XFx0dmFyIGhhbGZBbmdsZSA9IGFuZ2xlIC8gMiwgcyA9IE1hdGguc2luKCBoYWxmQW5nbGUgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLl94ID0gYXhpcy54ICogcztcXG5cXHRcXHRcXHR0aGlzLl95ID0gYXhpcy55ICogcztcXG5cXHRcXHRcXHR0aGlzLl96ID0gYXhpcy56ICogcztcXG5cXHRcXHRcXHR0aGlzLl93ID0gTWF0aC5jb3MoIGhhbGZBbmdsZSApO1xcblxcblxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbVJvdGF0aW9uTWF0cml4OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0Ly8gaHR0cDovL3d3dy5ldWNsaWRlYW5zcGFjZS5jb20vbWF0aHMvZ2VvbWV0cnkvcm90YXRpb25zL2NvbnZlcnNpb25zL21hdHJpeFRvUXVhdGVybmlvbi9pbmRleC5odG1cXG5cXG5cXHRcXHRcXHQvLyBhc3N1bWVzIHRoZSB1cHBlciAzeDMgb2YgbSBpcyBhIHB1cmUgcm90YXRpb24gbWF0cml4IChpLmUsIHVuc2NhbGVkKVxcblxcblxcdFxcdFxcdHZhciB0ZSA9IG0uZWxlbWVudHMsXFxuXFxuXFx0XFx0XFx0XFx0bTExID0gdGVbIDAgXSwgbTEyID0gdGVbIDQgXSwgbTEzID0gdGVbIDggXSxcXG5cXHRcXHRcXHRcXHRtMjEgPSB0ZVsgMSBdLCBtMjIgPSB0ZVsgNSBdLCBtMjMgPSB0ZVsgOSBdLFxcblxcdFxcdFxcdFxcdG0zMSA9IHRlWyAyIF0sIG0zMiA9IHRlWyA2IF0sIG0zMyA9IHRlWyAxMCBdLFxcblxcblxcdFxcdFxcdFxcdHRyYWNlID0gbTExICsgbTIyICsgbTMzLFxcblxcdFxcdFxcdFxcdHM7XFxuXFxuXFx0XFx0XFx0aWYgKCB0cmFjZSA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cyA9IDAuNSAvIE1hdGguc3FydCggdHJhY2UgKyAxLjAgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gMC4yNSAvIHM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feCA9ICggbTMyIC0gbTIzICkgKiBzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSAoIG0xMyAtIG0zMSApICogcztcXG5cXHRcXHRcXHRcXHR0aGlzLl96ID0gKCBtMjEgLSBtMTIgKSAqIHM7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggbTExID4gbTIyICYmIG0xMSA+IG0zMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRzID0gMi4wICogTWF0aC5zcXJ0KCAxLjAgKyBtMTEgLSBtMjIgLSBtMzMgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gKCBtMzIgLSBtMjMgKSAvIHM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feCA9IDAuMjUgKiBzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSAoIG0xMiArIG0yMSApIC8gcztcXG5cXHRcXHRcXHRcXHR0aGlzLl96ID0gKCBtMTMgKyBtMzEgKSAvIHM7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggbTIyID4gbTMzICkge1xcblxcblxcdFxcdFxcdFxcdHMgPSAyLjAgKiBNYXRoLnNxcnQoIDEuMCArIG0yMiAtIG0xMSAtIG0zMyApO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3cgPSAoIG0xMyAtIG0zMSApIC8gcztcXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gKCBtMTIgKyBtMjEgKSAvIHM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feSA9IDAuMjUgKiBzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3ogPSAoIG0yMyArIG0zMiApIC8gcztcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHMgPSAyLjAgKiBNYXRoLnNxcnQoIDEuMCArIG0zMyAtIG0xMSAtIG0yMiApO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3cgPSAoIG0yMSAtIG0xMiApIC8gcztcXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gKCBtMTMgKyBtMzEgKSAvIHM7XFxuXFx0XFx0XFx0XFx0dGhpcy5feSA9ICggbTIzICsgbTMyICkgLyBzO1xcblxcdFxcdFxcdFxcdHRoaXMuX3ogPSAwLjI1ICogcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tVW5pdFZlY3RvcnM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyBhc3N1bWVzIGRpcmVjdGlvbiB2ZWN0b3JzIHZGcm9tIGFuZCB2VG8gYXJlIG5vcm1hbGl6ZWRcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciByO1xcblxcblxcdFxcdFxcdHZhciBFUFMgPSAwLjAwMDAwMTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gc2V0RnJvbVVuaXRWZWN0b3JzKCB2RnJvbSwgdlRvICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggdjEgPT09IHVuZGVmaW5lZCApIHYxID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRcXHRyID0gdkZyb20uZG90KCB2VG8gKSArIDE7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCByIDwgRVBTICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHIgPSAwO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggTWF0aC5hYnMoIHZGcm9tLnggKSA+IE1hdGguYWJzKCB2RnJvbS56ICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0djEuc2V0KCAtIHZGcm9tLnksIHZGcm9tLngsIDAgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHYxLnNldCggMCwgLSB2RnJvbS56LCB2RnJvbS55ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0djEuY3Jvc3NWZWN0b3JzKCB2RnJvbSwgdlRvICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMuX3ggPSB2MS54O1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSB2MS55O1xcblxcdFxcdFxcdFxcdHRoaXMuX3ogPSB2MS56O1xcblxcdFxcdFxcdFxcdHRoaXMuX3cgPSByO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLm5vcm1hbGl6ZSgpO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGludmVyc2U6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5jb25qdWdhdGUoKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvbmp1Z2F0ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuX3ggKj0gLSAxO1xcblxcdFxcdFxcdHRoaXMuX3kgKj0gLSAxO1xcblxcdFxcdFxcdHRoaXMuX3ogKj0gLSAxO1xcblxcblxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZG90OiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuX3ggKiB2Ll94ICsgdGhpcy5feSAqIHYuX3kgKyB0aGlzLl96ICogdi5feiArIHRoaXMuX3cgKiB2Ll93O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGVuZ3RoU3E6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5feCAqIHRoaXMuX3ggKyB0aGlzLl95ICogdGhpcy5feSArIHRoaXMuX3ogKiB0aGlzLl96ICsgdGhpcy5fdyAqIHRoaXMuX3c7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRsZW5ndGg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5zcXJ0KCB0aGlzLl94ICogdGhpcy5feCArIHRoaXMuX3kgKiB0aGlzLl95ICsgdGhpcy5feiAqIHRoaXMuX3ogKyB0aGlzLl93ICogdGhpcy5fdyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bm9ybWFsaXplOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGwgPSB0aGlzLmxlbmd0aCgpO1xcblxcblxcdFxcdFxcdGlmICggbCA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gMDtcXG5cXHRcXHRcXHRcXHR0aGlzLl95ID0gMDtcXG5cXHRcXHRcXHRcXHR0aGlzLl96ID0gMDtcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gMTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGwgPSAxIC8gbDtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gdGhpcy5feCAqIGw7XFxuXFx0XFx0XFx0XFx0dGhpcy5feSA9IHRoaXMuX3kgKiBsO1xcblxcdFxcdFxcdFxcdHRoaXMuX3ogPSB0aGlzLl96ICogbDtcXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gdGhpcy5fdyAqIGw7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHk6IGZ1bmN0aW9uICggcSwgcCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVF1YXRlcm5pb25zKCBhLCBiICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyggcSwgcCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKCB0aGlzLCBxICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwcmVtdWx0aXBseTogZnVuY3Rpb24gKCBxICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLm11bHRpcGx5UXVhdGVybmlvbnMoIHEsIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG11bHRpcGx5UXVhdGVybmlvbnM6IGZ1bmN0aW9uICggYSwgYiApIHtcXG5cXG5cXHRcXHRcXHQvLyBmcm9tIGh0dHA6Ly93d3cuZXVjbGlkZWFuc3BhY2UuY29tL21hdGhzL2FsZ2VicmEvcmVhbE5vcm1lZEFsZ2VicmEvcXVhdGVybmlvbnMvY29kZS9pbmRleC5odG1cXG5cXG5cXHRcXHRcXHR2YXIgcWF4ID0gYS5feCwgcWF5ID0gYS5feSwgcWF6ID0gYS5feiwgcWF3ID0gYS5fdztcXG5cXHRcXHRcXHR2YXIgcWJ4ID0gYi5feCwgcWJ5ID0gYi5feSwgcWJ6ID0gYi5feiwgcWJ3ID0gYi5fdztcXG5cXG5cXHRcXHRcXHR0aGlzLl94ID0gcWF4ICogcWJ3ICsgcWF3ICogcWJ4ICsgcWF5ICogcWJ6IC0gcWF6ICogcWJ5O1xcblxcdFxcdFxcdHRoaXMuX3kgPSBxYXkgKiBxYncgKyBxYXcgKiBxYnkgKyBxYXogKiBxYnggLSBxYXggKiBxYno7XFxuXFx0XFx0XFx0dGhpcy5feiA9IHFheiAqIHFidyArIHFhdyAqIHFieiArIHFheCAqIHFieSAtIHFheSAqIHFieDtcXG5cXHRcXHRcXHR0aGlzLl93ID0gcWF3ICogcWJ3IC0gcWF4ICogcWJ4IC0gcWF5ICogcWJ5IC0gcWF6ICogcWJ6O1xcblxcblxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2xlcnA6IGZ1bmN0aW9uICggcWIsIHQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0ID09PSAwICkgcmV0dXJuIHRoaXM7XFxuXFx0XFx0XFx0aWYgKCB0ID09PSAxICkgcmV0dXJuIHRoaXMuY29weSggcWIgKTtcXG5cXG5cXHRcXHRcXHR2YXIgeCA9IHRoaXMuX3gsIHkgPSB0aGlzLl95LCB6ID0gdGhpcy5feiwgdyA9IHRoaXMuX3c7XFxuXFxuXFx0XFx0XFx0Ly8gaHR0cDovL3d3dy5ldWNsaWRlYW5zcGFjZS5jb20vbWF0aHMvYWxnZWJyYS9yZWFsTm9ybWVkQWxnZWJyYS9xdWF0ZXJuaW9ucy9zbGVycC9cXG5cXG5cXHRcXHRcXHR2YXIgY29zSGFsZlRoZXRhID0gdyAqIHFiLl93ICsgeCAqIHFiLl94ICsgeSAqIHFiLl95ICsgeiAqIHFiLl96O1xcblxcblxcdFxcdFxcdGlmICggY29zSGFsZlRoZXRhIDwgMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl93ID0gLSBxYi5fdztcXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gLSBxYi5feDtcXG5cXHRcXHRcXHRcXHR0aGlzLl95ID0gLSBxYi5feTtcXG5cXHRcXHRcXHRcXHR0aGlzLl96ID0gLSBxYi5fejtcXG5cXG5cXHRcXHRcXHRcXHRjb3NIYWxmVGhldGEgPSAtIGNvc0hhbGZUaGV0YTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuY29weSggcWIgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBjb3NIYWxmVGhldGEgPj0gMS4wICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3cgPSB3O1xcblxcdFxcdFxcdFxcdHRoaXMuX3ggPSB4O1xcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSB5O1xcblxcdFxcdFxcdFxcdHRoaXMuX3ogPSB6O1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgc2luSGFsZlRoZXRhID0gTWF0aC5zcXJ0KCAxLjAgLSBjb3NIYWxmVGhldGEgKiBjb3NIYWxmVGhldGEgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIE1hdGguYWJzKCBzaW5IYWxmVGhldGEgKSA8IDAuMDAxICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3cgPSAwLjUgKiAoIHcgKyB0aGlzLl93ICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5feCA9IDAuNSAqICggeCArIHRoaXMuX3ggKTtcXG5cXHRcXHRcXHRcXHR0aGlzLl95ID0gMC41ICogKCB5ICsgdGhpcy5feSApO1xcblxcdFxcdFxcdFxcdHRoaXMuX3ogPSAwLjUgKiAoIHogKyB0aGlzLl96ICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBoYWxmVGhldGEgPSBNYXRoLmF0YW4yKCBzaW5IYWxmVGhldGEsIGNvc0hhbGZUaGV0YSApO1xcblxcdFxcdFxcdHZhciByYXRpb0EgPSBNYXRoLnNpbiggKCAxIC0gdCApICogaGFsZlRoZXRhICkgLyBzaW5IYWxmVGhldGEsXFxuXFx0XFx0XFx0XFx0cmF0aW9CID0gTWF0aC5zaW4oIHQgKiBoYWxmVGhldGEgKSAvIHNpbkhhbGZUaGV0YTtcXG5cXG5cXHRcXHRcXHR0aGlzLl93ID0gKCB3ICogcmF0aW9BICsgdGhpcy5fdyAqIHJhdGlvQiApO1xcblxcdFxcdFxcdHRoaXMuX3ggPSAoIHggKiByYXRpb0EgKyB0aGlzLl94ICogcmF0aW9CICk7XFxuXFx0XFx0XFx0dGhpcy5feSA9ICggeSAqIHJhdGlvQSArIHRoaXMuX3kgKiByYXRpb0IgKTtcXG5cXHRcXHRcXHR0aGlzLl96ID0gKCB6ICogcmF0aW9BICsgdGhpcy5feiAqIHJhdGlvQiApO1xcblxcblxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXF1YWxzOiBmdW5jdGlvbiAoIHF1YXRlcm5pb24gKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuICggcXVhdGVybmlvbi5feCA9PT0gdGhpcy5feCApICYmICggcXVhdGVybmlvbi5feSA9PT0gdGhpcy5feSApICYmICggcXVhdGVybmlvbi5feiA9PT0gdGhpcy5feiApICYmICggcXVhdGVybmlvbi5fdyA9PT0gdGhpcy5fdyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZnJvbUFycmF5OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBvZmZzZXQgPT09IHVuZGVmaW5lZCApIG9mZnNldCA9IDA7XFxuXFxuXFx0XFx0XFx0dGhpcy5feCA9IGFycmF5WyBvZmZzZXQgXTtcXG5cXHRcXHRcXHR0aGlzLl95ID0gYXJyYXlbIG9mZnNldCArIDEgXTtcXG5cXHRcXHRcXHR0aGlzLl96ID0gYXJyYXlbIG9mZnNldCArIDIgXTtcXG5cXHRcXHRcXHR0aGlzLl93ID0gYXJyYXlbIG9mZnNldCArIDMgXTtcXG5cXG5cXHRcXHRcXHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGFycmF5ID09PSB1bmRlZmluZWQgKSBhcnJheSA9IFtdO1xcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgXSA9IHRoaXMuX3g7XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDEgXSA9IHRoaXMuX3k7XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDIgXSA9IHRoaXMuX3o7XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDMgXSA9IHRoaXMuX3c7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGFycmF5O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0b25DaGFuZ2U6IGZ1bmN0aW9uICggY2FsbGJhY2sgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gY2FsbGJhY2s7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRvbkNoYW5nZUNhbGxiYWNrOiBmdW5jdGlvbiAoKSB7fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3Iga2lsZSAvIGh0dHA6Ly9raWxlLnN0cmF2YWdhbnphLm9yZy9cXG5cXHQgKiBAYXV0aG9yIHBoaWxvZ2IgLyBodHRwOi8vYmxvZy50aGVqaXQub3JnL1xcblxcdCAqIEBhdXRob3IgbWlrYWVsIGVtdGluZ2VyIC8gaHR0cDovL2dvbW8uc2UvXFxuXFx0ICogQGF1dGhvciBlZ3JhZXRoZXIgLyBodHRwOi8vZWdyYWV0aGVyLmNvbS9cXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBWZWN0b3IzKCB4LCB5LCB6ICkge1xcblxcblxcdFxcdHRoaXMueCA9IHggfHwgMDtcXG5cXHRcXHR0aGlzLnkgPSB5IHx8IDA7XFxuXFx0XFx0dGhpcy56ID0geiB8fCAwO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBWZWN0b3IzLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGlzVmVjdG9yMzogdHJ1ZSxcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggeCwgeSwgeiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSB4O1xcblxcdFxcdFxcdHRoaXMueSA9IHk7XFxuXFx0XFx0XFx0dGhpcy56ID0gejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFNjYWxhcjogZnVuY3Rpb24gKCBzY2FsYXIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gc2NhbGFyO1xcblxcdFxcdFxcdHRoaXMueSA9IHNjYWxhcjtcXG5cXHRcXHRcXHR0aGlzLnogPSBzY2FsYXI7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRYOiBmdW5jdGlvbiAoIHggKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0geDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFk6IGZ1bmN0aW9uICggeSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnkgPSB5O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WjogZnVuY3Rpb24gKCB6ICkge1xcblxcblxcdFxcdFxcdHRoaXMueiA9IHo7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRDb21wb25lbnQ6IGZ1bmN0aW9uICggaW5kZXgsIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHN3aXRjaCAoIGluZGV4ICkge1xcblxcblxcdFxcdFxcdFxcdGNhc2UgMDogdGhpcy54ID0gdmFsdWU7IGJyZWFrO1xcblxcdFxcdFxcdFxcdGNhc2UgMTogdGhpcy55ID0gdmFsdWU7IGJyZWFrO1xcblxcdFxcdFxcdFxcdGNhc2UgMjogdGhpcy56ID0gdmFsdWU7IGJyZWFrO1xcblxcdFxcdFxcdFxcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvciggJ2luZGV4IGlzIG91dCBvZiByYW5nZTogJyArIGluZGV4ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0Q29tcG9uZW50OiBmdW5jdGlvbiAoIGluZGV4ICkge1xcblxcblxcdFxcdFxcdHN3aXRjaCAoIGluZGV4ICkge1xcblxcblxcdFxcdFxcdFxcdGNhc2UgMDogcmV0dXJuIHRoaXMueDtcXG5cXHRcXHRcXHRcXHRjYXNlIDE6IHJldHVybiB0aGlzLnk7XFxuXFx0XFx0XFx0XFx0Y2FzZSAyOiByZXR1cm4gdGhpcy56O1xcblxcdFxcdFxcdFxcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvciggJ2luZGV4IGlzIG91dCBvZiByYW5nZTogJyArIGluZGV4ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoIHRoaXMueCwgdGhpcy55LCB0aGlzLnogKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSB2Lng7XFxuXFx0XFx0XFx0dGhpcy55ID0gdi55O1xcblxcdFxcdFxcdHRoaXMueiA9IHYuejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFkZDogZnVuY3Rpb24gKCB2LCB3ICkge1xcblxcblxcdFxcdFxcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjM6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuYWRkVmVjdG9ycyggdiwgdyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLnggKz0gdi54O1xcblxcdFxcdFxcdHRoaXMueSArPSB2Lnk7XFxuXFx0XFx0XFx0dGhpcy56ICs9IHYuejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFkZFNjYWxhcjogZnVuY3Rpb24gKCBzICkge1xcblxcblxcdFxcdFxcdHRoaXMueCArPSBzO1xcblxcdFxcdFxcdHRoaXMueSArPSBzO1xcblxcdFxcdFxcdHRoaXMueiArPSBzO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWRkVmVjdG9yczogZnVuY3Rpb24gKCBhLCBiICkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IGEueCArIGIueDtcXG5cXHRcXHRcXHR0aGlzLnkgPSBhLnkgKyBiLnk7XFxuXFx0XFx0XFx0dGhpcy56ID0gYS56ICsgYi56O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWRkU2NhbGVkVmVjdG9yOiBmdW5jdGlvbiAoIHYsIHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ICs9IHYueCAqIHM7XFxuXFx0XFx0XFx0dGhpcy55ICs9IHYueSAqIHM7XFxuXFx0XFx0XFx0dGhpcy56ICs9IHYueiAqIHM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzdWI6IGZ1bmN0aW9uICggdiwgdyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHcgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnN1YlZlY3RvcnMoIHYsIHcgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy54IC09IHYueDtcXG5cXHRcXHRcXHR0aGlzLnkgLT0gdi55O1xcblxcdFxcdFxcdHRoaXMueiAtPSB2Lno7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzdWJTY2FsYXI6IGZ1bmN0aW9uICggcyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggLT0gcztcXG5cXHRcXHRcXHR0aGlzLnkgLT0gcztcXG5cXHRcXHRcXHR0aGlzLnogLT0gcztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHN1YlZlY3RvcnM6IGZ1bmN0aW9uICggYSwgYiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBhLnggLSBiLng7XFxuXFx0XFx0XFx0dGhpcy55ID0gYS55IC0gYi55O1xcblxcdFxcdFxcdHRoaXMueiA9IGEueiAtIGIuejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG11bHRpcGx5OiBmdW5jdGlvbiAoIHYsIHcgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB3ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMzogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMubXVsdGlwbHlWZWN0b3JzKCB2LCB3ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMueCAqPSB2Lng7XFxuXFx0XFx0XFx0dGhpcy55ICo9IHYueTtcXG5cXHRcXHRcXHR0aGlzLnogKj0gdi56O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHlTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xcblxcblxcdFxcdFxcdHRoaXMueCAqPSBzY2FsYXI7XFxuXFx0XFx0XFx0dGhpcy55ICo9IHNjYWxhcjtcXG5cXHRcXHRcXHR0aGlzLnogKj0gc2NhbGFyO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHlWZWN0b3JzOiBmdW5jdGlvbiAoIGEsIGIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gYS54ICogYi54O1xcblxcdFxcdFxcdHRoaXMueSA9IGEueSAqIGIueTtcXG5cXHRcXHRcXHR0aGlzLnogPSBhLnogKiBiLno7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhcHBseUV1bGVyOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBhcHBseUV1bGVyKCBldWxlciApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoICEgKCBldWxlciAmJiBldWxlci5pc0V1bGVyICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlZlY3RvcjM6IC5hcHBseUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4nICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbi5zZXRGcm9tRXVsZXIoIGV1bGVyICkgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRhcHBseUF4aXNBbmdsZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBxdWF0ZXJuaW9uID0gbmV3IFF1YXRlcm5pb24oKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gYXBwbHlBeGlzQW5nbGUoIGF4aXMsIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbi5zZXRGcm9tQXhpc0FuZ2xlKCBheGlzLCBhbmdsZSApICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0YXBwbHlNYXRyaXgzOiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLno7XFxuXFx0XFx0XFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRoaXMueCA9IGVbIDAgXSAqIHggKyBlWyAzIF0gKiB5ICsgZVsgNiBdICogejtcXG5cXHRcXHRcXHR0aGlzLnkgPSBlWyAxIF0gKiB4ICsgZVsgNCBdICogeSArIGVbIDcgXSAqIHo7XFxuXFx0XFx0XFx0dGhpcy56ID0gZVsgMiBdICogeCArIGVbIDUgXSAqIHkgKyBlWyA4IF0gKiB6O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXBwbHlNYXRyaXg0OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLno7XFxuXFx0XFx0XFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHZhciB3ID0gMSAvICggZVsgMyBdICogeCArIGVbIDcgXSAqIHkgKyBlWyAxMSBdICogeiArIGVbIDE1IF0gKTtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSAoIGVbIDAgXSAqIHggKyBlWyA0IF0gKiB5ICsgZVsgOCBdICogeiArIGVbIDEyIF0gKSAqIHc7XFxuXFx0XFx0XFx0dGhpcy55ID0gKCBlWyAxIF0gKiB4ICsgZVsgNSBdICogeSArIGVbIDkgXSAqIHogKyBlWyAxMyBdICkgKiB3O1xcblxcdFxcdFxcdHRoaXMueiA9ICggZVsgMiBdICogeCArIGVbIDYgXSAqIHkgKyBlWyAxMCBdICogeiArIGVbIDE0IF0gKSAqIHc7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhcHBseVF1YXRlcm5pb246IGZ1bmN0aW9uICggcSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgeCA9IHRoaXMueCwgeSA9IHRoaXMueSwgeiA9IHRoaXMuejtcXG5cXHRcXHRcXHR2YXIgcXggPSBxLngsIHF5ID0gcS55LCBxeiA9IHEueiwgcXcgPSBxLnc7XFxuXFxuXFx0XFx0XFx0Ly8gY2FsY3VsYXRlIHF1YXQgKiB2ZWN0b3JcXG5cXG5cXHRcXHRcXHR2YXIgaXggPSBxdyAqIHggKyBxeSAqIHogLSBxeiAqIHk7XFxuXFx0XFx0XFx0dmFyIGl5ID0gcXcgKiB5ICsgcXogKiB4IC0gcXggKiB6O1xcblxcdFxcdFxcdHZhciBpeiA9IHF3ICogeiArIHF4ICogeSAtIHF5ICogeDtcXG5cXHRcXHRcXHR2YXIgaXcgPSAtIHF4ICogeCAtIHF5ICogeSAtIHF6ICogejtcXG5cXG5cXHRcXHRcXHQvLyBjYWxjdWxhdGUgcmVzdWx0ICogaW52ZXJzZSBxdWF0XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gaXggKiBxdyArIGl3ICogLSBxeCArIGl5ICogLSBxeiAtIGl6ICogLSBxeTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBpeSAqIHF3ICsgaXcgKiAtIHF5ICsgaXogKiAtIHF4IC0gaXggKiAtIHF6O1xcblxcdFxcdFxcdHRoaXMueiA9IGl6ICogcXcgKyBpdyAqIC0gcXogKyBpeCAqIC0gcXkgLSBpeSAqIC0gcXg7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwcm9qZWN0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHByb2plY3QoIGNhbWVyYSApIHtcXG5cXG5cXHRcXHRcXHRcXHRtYXRyaXgubXVsdGlwbHlNYXRyaWNlcyggY2FtZXJhLnByb2plY3Rpb25NYXRyaXgsIG1hdHJpeC5nZXRJbnZlcnNlKCBjYW1lcmEubWF0cml4V29ybGQgKSApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmFwcGx5TWF0cml4NCggbWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0dW5wcm9qZWN0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVucHJvamVjdCggY2FtZXJhICkge1xcblxcblxcdFxcdFxcdFxcdG1hdHJpeC5tdWx0aXBseU1hdHJpY2VzKCBjYW1lcmEubWF0cml4V29ybGQsIG1hdHJpeC5nZXRJbnZlcnNlKCBjYW1lcmEucHJvamVjdGlvbk1hdHJpeCApICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHR0cmFuc2Zvcm1EaXJlY3Rpb246IGZ1bmN0aW9uICggbSApIHtcXG5cXG5cXHRcXHRcXHQvLyBpbnB1dDogVEhSRUUuTWF0cml4NCBhZmZpbmUgbWF0cml4XFxuXFx0XFx0XFx0Ly8gdmVjdG9yIGludGVycHJldGVkIGFzIGEgZGlyZWN0aW9uXFxuXFxuXFx0XFx0XFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLno7XFxuXFx0XFx0XFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRoaXMueCA9IGVbIDAgXSAqIHggKyBlWyA0IF0gKiB5ICsgZVsgOCBdICogejtcXG5cXHRcXHRcXHR0aGlzLnkgPSBlWyAxIF0gKiB4ICsgZVsgNSBdICogeSArIGVbIDkgXSAqIHo7XFxuXFx0XFx0XFx0dGhpcy56ID0gZVsgMiBdICogeCArIGVbIDYgXSAqIHkgKyBlWyAxMCBdICogejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpdmlkZTogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHRoaXMueCAvPSB2Lng7XFxuXFx0XFx0XFx0dGhpcy55IC89IHYueTtcXG5cXHRcXHRcXHR0aGlzLnogLz0gdi56O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGl2aWRlU2NhbGFyOiBmdW5jdGlvbiAoIHNjYWxhciApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhciggMSAvIHNjYWxhciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWluOiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5taW4oIHRoaXMueCwgdi54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5taW4oIHRoaXMueSwgdi55ICk7XFxuXFx0XFx0XFx0dGhpcy56ID0gTWF0aC5taW4oIHRoaXMueiwgdi56ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtYXg6IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBNYXRoLm1heCggdGhpcy54LCB2LnggKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBNYXRoLm1heCggdGhpcy55LCB2LnkgKTtcXG5cXHRcXHRcXHR0aGlzLnogPSBNYXRoLm1heCggdGhpcy56LCB2LnogKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsYW1wOiBmdW5jdGlvbiAoIG1pbiwgbWF4ICkge1xcblxcblxcdFxcdFxcdC8vIGFzc3VtZXMgbWluIDwgbWF4LCBjb21wb25lbnR3aXNlXFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5tYXgoIG1pbi54LCBNYXRoLm1pbiggbWF4LngsIHRoaXMueCApICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5tYXgoIG1pbi55LCBNYXRoLm1pbiggbWF4LnksIHRoaXMueSApICk7XFxuXFx0XFx0XFx0dGhpcy56ID0gTWF0aC5tYXgoIG1pbi56LCBNYXRoLm1pbiggbWF4LnosIHRoaXMueiApICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbGFtcFNjYWxhcjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBtaW4gPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBtYXggPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBjbGFtcFNjYWxhciggbWluVmFsLCBtYXhWYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bWluLnNldCggbWluVmFsLCBtaW5WYWwsIG1pblZhbCApO1xcblxcdFxcdFxcdFxcdG1heC5zZXQoIG1heFZhbCwgbWF4VmFsLCBtYXhWYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5jbGFtcCggbWluLCBtYXggKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRjbGFtcExlbmd0aDogZnVuY3Rpb24gKCBtaW4sIG1heCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGgoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoIGxlbmd0aCB8fCAxICkubXVsdGlwbHlTY2FsYXIoIE1hdGgubWF4KCBtaW4sIE1hdGgubWluKCBtYXgsIGxlbmd0aCApICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZsb29yOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5mbG9vciggdGhpcy54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5mbG9vciggdGhpcy55ICk7XFxuXFx0XFx0XFx0dGhpcy56ID0gTWF0aC5mbG9vciggdGhpcy56ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjZWlsOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5jZWlsKCB0aGlzLnggKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBNYXRoLmNlaWwoIHRoaXMueSApO1xcblxcdFxcdFxcdHRoaXMueiA9IE1hdGguY2VpbCggdGhpcy56ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyb3VuZDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IE1hdGgucm91bmQoIHRoaXMueCApO1xcblxcdFxcdFxcdHRoaXMueSA9IE1hdGgucm91bmQoIHRoaXMueSApO1xcblxcdFxcdFxcdHRoaXMueiA9IE1hdGgucm91bmQoIHRoaXMueiApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cm91bmRUb1plcm86IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSAoIHRoaXMueCA8IDAgKSA/IE1hdGguY2VpbCggdGhpcy54ICkgOiBNYXRoLmZsb29yKCB0aGlzLnggKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSAoIHRoaXMueSA8IDAgKSA/IE1hdGguY2VpbCggdGhpcy55ICkgOiBNYXRoLmZsb29yKCB0aGlzLnkgKTtcXG5cXHRcXHRcXHR0aGlzLnogPSAoIHRoaXMueiA8IDAgKSA/IE1hdGguY2VpbCggdGhpcy56ICkgOiBNYXRoLmZsb29yKCB0aGlzLnogKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG5lZ2F0ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IC0gdGhpcy54O1xcblxcdFxcdFxcdHRoaXMueSA9IC0gdGhpcy55O1xcblxcdFxcdFxcdHRoaXMueiA9IC0gdGhpcy56O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZG90OiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMueCAqIHYueCArIHRoaXMueSAqIHYueSArIHRoaXMueiAqIHYuejtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIFRPRE8gbGVuZ3RoU3F1YXJlZD9cXG5cXG5cXHRcXHRsZW5ndGhTcTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnkgKyB0aGlzLnogKiB0aGlzLno7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRsZW5ndGg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5zcXJ0KCB0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnkgKyB0aGlzLnogKiB0aGlzLnogKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1hbmhhdHRhbkxlbmd0aDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLmFicyggdGhpcy54ICkgKyBNYXRoLmFicyggdGhpcy55ICkgKyBNYXRoLmFicyggdGhpcy56ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRub3JtYWxpemU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoIHRoaXMubGVuZ3RoKCkgfHwgMSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0TGVuZ3RoOiBmdW5jdGlvbiAoIGxlbmd0aCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhciggbGVuZ3RoICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRsZXJwOiBmdW5jdGlvbiAoIHYsIGFscGhhICkge1xcblxcblxcdFxcdFxcdHRoaXMueCArPSAoIHYueCAtIHRoaXMueCApICogYWxwaGE7XFxuXFx0XFx0XFx0dGhpcy55ICs9ICggdi55IC0gdGhpcy55ICkgKiBhbHBoYTtcXG5cXHRcXHRcXHR0aGlzLnogKz0gKCB2LnogLSB0aGlzLnogKSAqIGFscGhhO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGVycFZlY3RvcnM6IGZ1bmN0aW9uICggdjEsIHYyLCBhbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zdWJWZWN0b3JzKCB2MiwgdjEgKS5tdWx0aXBseVNjYWxhciggYWxwaGEgKS5hZGQoIHYxICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjcm9zczogZnVuY3Rpb24gKCB2LCB3ICkge1xcblxcblxcdFxcdFxcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmNyb3NzVmVjdG9ycyggdiwgdyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5jcm9zc1ZlY3RvcnMoIHRoaXMsIHYgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNyb3NzVmVjdG9yczogZnVuY3Rpb24gKCBhLCBiICkge1xcblxcblxcdFxcdFxcdHZhciBheCA9IGEueCwgYXkgPSBhLnksIGF6ID0gYS56O1xcblxcdFxcdFxcdHZhciBieCA9IGIueCwgYnkgPSBiLnksIGJ6ID0gYi56O1xcblxcblxcdFxcdFxcdHRoaXMueCA9IGF5ICogYnogLSBheiAqIGJ5O1xcblxcdFxcdFxcdHRoaXMueSA9IGF6ICogYnggLSBheCAqIGJ6O1xcblxcdFxcdFxcdHRoaXMueiA9IGF4ICogYnkgLSBheSAqIGJ4O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cHJvamVjdE9uVmVjdG9yOiBmdW5jdGlvbiAoIHZlY3RvciApIHtcXG5cXG5cXHRcXHRcXHR2YXIgc2NhbGFyID0gdmVjdG9yLmRvdCggdGhpcyApIC8gdmVjdG9yLmxlbmd0aFNxKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuY29weSggdmVjdG9yICkubXVsdGlwbHlTY2FsYXIoIHNjYWxhciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cHJvamVjdE9uUGxhbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBwcm9qZWN0T25QbGFuZSggcGxhbmVOb3JtYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0djEuY29weSggdGhpcyApLnByb2plY3RPblZlY3RvciggcGxhbmVOb3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5zdWIoIHYxICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0cmVmbGVjdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIHJlZmxlY3QgaW5jaWRlbnQgdmVjdG9yIG9mZiBwbGFuZSBvcnRob2dvbmFsIHRvIG5vcm1hbFxcblxcdFxcdFxcdC8vIG5vcm1hbCBpcyBhc3N1bWVkIHRvIGhhdmUgdW5pdCBsZW5ndGhcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiByZWZsZWN0KCBub3JtYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuc3ViKCB2MS5jb3B5KCBub3JtYWwgKS5tdWx0aXBseVNjYWxhciggMiAqIHRoaXMuZG90KCBub3JtYWwgKSApICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0YW5nbGVUbzogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHZhciB0aGV0YSA9IHRoaXMuZG90KCB2ICkgLyAoIE1hdGguc3FydCggdGhpcy5sZW5ndGhTcSgpICogdi5sZW5ndGhTcSgpICkgKTtcXG5cXG5cXHRcXHRcXHQvLyBjbGFtcCwgdG8gaGFuZGxlIG51bWVyaWNhbCBwcm9ibGVtc1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLmFjb3MoIF9NYXRoLmNsYW1wKCB0aGV0YSwgLSAxLCAxICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpc3RhbmNlVG86IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5zcXJ0KCB0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKCB2ICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpc3RhbmNlVG9TcXVhcmVkOiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGR4ID0gdGhpcy54IC0gdi54LCBkeSA9IHRoaXMueSAtIHYueSwgZHogPSB0aGlzLnogLSB2Lno7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGR4ICogZHggKyBkeSAqIGR5ICsgZHogKiBkejtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1hbmhhdHRhbkRpc3RhbmNlVG86IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5hYnMoIHRoaXMueCAtIHYueCApICsgTWF0aC5hYnMoIHRoaXMueSAtIHYueSApICsgTWF0aC5hYnMoIHRoaXMueiAtIHYueiApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbVNwaGVyaWNhbDogZnVuY3Rpb24gKCBzICkge1xcblxcblxcdFxcdFxcdHZhciBzaW5QaGlSYWRpdXMgPSBNYXRoLnNpbiggcy5waGkgKSAqIHMucmFkaXVzO1xcblxcblxcdFxcdFxcdHRoaXMueCA9IHNpblBoaVJhZGl1cyAqIE1hdGguc2luKCBzLnRoZXRhICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5jb3MoIHMucGhpICkgKiBzLnJhZGl1cztcXG5cXHRcXHRcXHR0aGlzLnogPSBzaW5QaGlSYWRpdXMgKiBNYXRoLmNvcyggcy50aGV0YSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbUN5bGluZHJpY2FsOiBmdW5jdGlvbiAoIGMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gYy5yYWRpdXMgKiBNYXRoLnNpbiggYy50aGV0YSApO1xcblxcdFxcdFxcdHRoaXMueSA9IGMueTtcXG5cXHRcXHRcXHR0aGlzLnogPSBjLnJhZGl1cyAqIE1hdGguY29zKCBjLnRoZXRhICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tTWF0cml4UG9zaXRpb246IGZ1bmN0aW9uICggbSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZSA9IG0uZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gZVsgMTIgXTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBlWyAxMyBdO1xcblxcdFxcdFxcdHRoaXMueiA9IGVbIDE0IF07XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tTWF0cml4U2NhbGU6IGZ1bmN0aW9uICggbSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgc3ggPSB0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oIG0sIDAgKS5sZW5ndGgoKTtcXG5cXHRcXHRcXHR2YXIgc3kgPSB0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oIG0sIDEgKS5sZW5ndGgoKTtcXG5cXHRcXHRcXHR2YXIgc3ogPSB0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oIG0sIDIgKS5sZW5ndGgoKTtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBzeDtcXG5cXHRcXHRcXHR0aGlzLnkgPSBzeTtcXG5cXHRcXHRcXHR0aGlzLnogPSBzejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21NYXRyaXhDb2x1bW46IGZ1bmN0aW9uICggbSwgaW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZnJvbUFycmF5KCBtLmVsZW1lbnRzLCBpbmRleCAqIDQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGVxdWFsczogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdHJldHVybiAoICggdi54ID09PSB0aGlzLnggKSAmJiAoIHYueSA9PT0gdGhpcy55ICkgJiYgKCB2LnogPT09IHRoaXMueiApICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBhcnJheVsgb2Zmc2V0IF07XFxuXFx0XFx0XFx0dGhpcy55ID0gYXJyYXlbIG9mZnNldCArIDEgXTtcXG5cXHRcXHRcXHR0aGlzLnogPSBhcnJheVsgb2Zmc2V0ICsgMiBdO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dG9BcnJheTogZnVuY3Rpb24gKCBhcnJheSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggYXJyYXkgPT09IHVuZGVmaW5lZCApIGFycmF5ID0gW107XFxuXFx0XFx0XFx0aWYgKCBvZmZzZXQgPT09IHVuZGVmaW5lZCApIG9mZnNldCA9IDA7XFxuXFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCBdID0gdGhpcy54O1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAxIF0gPSB0aGlzLnk7XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDIgXSA9IHRoaXMuejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYXJyYXk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tQnVmZmVyQXR0cmlidXRlOiBmdW5jdGlvbiAoIGF0dHJpYnV0ZSwgaW5kZXgsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9mZnNldCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjM6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4nICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMueCA9IGF0dHJpYnV0ZS5nZXRYKCBpbmRleCApO1xcblxcdFxcdFxcdHRoaXMueSA9IGF0dHJpYnV0ZS5nZXRZKCBpbmRleCApO1xcblxcdFxcdFxcdHRoaXMueiA9IGF0dHJpYnV0ZS5nZXRaKCBpbmRleCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKiBAYXV0aG9yIGJob3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE1hdHJpeDMoKSB7XFxuXFxuXFx0XFx0dGhpcy5lbGVtZW50cyA9IFtcXG5cXG5cXHRcXHRcXHQxLCAwLCAwLFxcblxcdFxcdFxcdDAsIDEsIDAsXFxuXFx0XFx0XFx0MCwgMCwgMVxcblxcblxcdFxcdF07XFxuXFxuXFx0XFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4nICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBNYXRyaXgzLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGlzTWF0cml4MzogdHJ1ZSxcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggbjExLCBuMTIsIG4xMywgbjIxLCBuMjIsIG4yMywgbjMxLCBuMzIsIG4zMyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRlWyAwIF0gPSBuMTE7IHRlWyAxIF0gPSBuMjE7IHRlWyAyIF0gPSBuMzE7XFxuXFx0XFx0XFx0dGVbIDMgXSA9IG4xMjsgdGVbIDQgXSA9IG4yMjsgdGVbIDUgXSA9IG4zMjtcXG5cXHRcXHRcXHR0ZVsgNiBdID0gbjEzOyB0ZVsgNyBdID0gbjIzOyB0ZVsgOCBdID0gbjMzO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aWRlbnRpdHk6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnNldChcXG5cXG5cXHRcXHRcXHRcXHQxLCAwLCAwLFxcblxcdFxcdFxcdFxcdDAsIDEsIDAsXFxuXFx0XFx0XFx0XFx0MCwgMCwgMVxcblxcblxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmZyb21BcnJheSggdGhpcy5lbGVtZW50cyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBtICkge1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFx0XFx0XFx0dmFyIG1lID0gbS5lbGVtZW50cztcXG5cXG5cXHRcXHRcXHR0ZVsgMCBdID0gbWVbIDAgXTsgdGVbIDEgXSA9IG1lWyAxIF07IHRlWyAyIF0gPSBtZVsgMiBdO1xcblxcdFxcdFxcdHRlWyAzIF0gPSBtZVsgMyBdOyB0ZVsgNCBdID0gbWVbIDQgXTsgdGVbIDUgXSA9IG1lWyA1IF07XFxuXFx0XFx0XFx0dGVbIDYgXSA9IG1lWyA2IF07IHRlWyA3IF0gPSBtZVsgNyBdOyB0ZVsgOCBdID0gbWVbIDggXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21NYXRyaXg0OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG1lID0gbS5lbGVtZW50cztcXG5cXG5cXHRcXHRcXHR0aGlzLnNldChcXG5cXG5cXHRcXHRcXHRcXHRtZVsgMCBdLCBtZVsgNCBdLCBtZVsgOCBdLFxcblxcdFxcdFxcdFxcdG1lWyAxIF0sIG1lWyA1IF0sIG1lWyA5IF0sXFxuXFx0XFx0XFx0XFx0bWVbIDIgXSwgbWVbIDYgXSwgbWVbIDEwIF1cXG5cXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXBwbHlUb0J1ZmZlckF0dHJpYnV0ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoIGF0dHJpYnV0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBhdHRyaWJ1dGUuY291bnQ7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHYxLnggPSBhdHRyaWJ1dGUuZ2V0WCggaSApO1xcblxcdFxcdFxcdFxcdFxcdHYxLnkgPSBhdHRyaWJ1dGUuZ2V0WSggaSApO1xcblxcdFxcdFxcdFxcdFxcdHYxLnogPSBhdHRyaWJ1dGUuZ2V0WiggaSApO1xcblxcblxcdFxcdFxcdFxcdFxcdHYxLmFwcGx5TWF0cml4MyggdGhpcyApO1xcblxcblxcdFxcdFxcdFxcdFxcdGF0dHJpYnV0ZS5zZXRYWVooIGksIHYxLngsIHYxLnksIHYxLnogKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGF0dHJpYnV0ZTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRtdWx0aXBseTogZnVuY3Rpb24gKCBtICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXMoIHRoaXMsIG0gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHByZW11bHRpcGx5OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyggbSwgdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHlNYXRyaWNlczogZnVuY3Rpb24gKCBhLCBiICkge1xcblxcblxcdFxcdFxcdHZhciBhZSA9IGEuZWxlbWVudHM7XFxuXFx0XFx0XFx0dmFyIGJlID0gYi5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHZhciBhMTEgPSBhZVsgMCBdLCBhMTIgPSBhZVsgMyBdLCBhMTMgPSBhZVsgNiBdO1xcblxcdFxcdFxcdHZhciBhMjEgPSBhZVsgMSBdLCBhMjIgPSBhZVsgNCBdLCBhMjMgPSBhZVsgNyBdO1xcblxcdFxcdFxcdHZhciBhMzEgPSBhZVsgMiBdLCBhMzIgPSBhZVsgNSBdLCBhMzMgPSBhZVsgOCBdO1xcblxcblxcdFxcdFxcdHZhciBiMTEgPSBiZVsgMCBdLCBiMTIgPSBiZVsgMyBdLCBiMTMgPSBiZVsgNiBdO1xcblxcdFxcdFxcdHZhciBiMjEgPSBiZVsgMSBdLCBiMjIgPSBiZVsgNCBdLCBiMjMgPSBiZVsgNyBdO1xcblxcdFxcdFxcdHZhciBiMzEgPSBiZVsgMiBdLCBiMzIgPSBiZVsgNSBdLCBiMzMgPSBiZVsgOCBdO1xcblxcblxcdFxcdFxcdHRlWyAwIF0gPSBhMTEgKiBiMTEgKyBhMTIgKiBiMjEgKyBhMTMgKiBiMzE7XFxuXFx0XFx0XFx0dGVbIDMgXSA9IGExMSAqIGIxMiArIGExMiAqIGIyMiArIGExMyAqIGIzMjtcXG5cXHRcXHRcXHR0ZVsgNiBdID0gYTExICogYjEzICsgYTEyICogYjIzICsgYTEzICogYjMzO1xcblxcblxcdFxcdFxcdHRlWyAxIF0gPSBhMjEgKiBiMTEgKyBhMjIgKiBiMjEgKyBhMjMgKiBiMzE7XFxuXFx0XFx0XFx0dGVbIDQgXSA9IGEyMSAqIGIxMiArIGEyMiAqIGIyMiArIGEyMyAqIGIzMjtcXG5cXHRcXHRcXHR0ZVsgNyBdID0gYTIxICogYjEzICsgYTIyICogYjIzICsgYTIzICogYjMzO1xcblxcblxcdFxcdFxcdHRlWyAyIF0gPSBhMzEgKiBiMTEgKyBhMzIgKiBiMjEgKyBhMzMgKiBiMzE7XFxuXFx0XFx0XFx0dGVbIDUgXSA9IGEzMSAqIGIxMiArIGEzMiAqIGIyMiArIGEzMyAqIGIzMjtcXG5cXHRcXHRcXHR0ZVsgOCBdID0gYTMxICogYjEzICsgYTMyICogYjIzICsgYTMzICogYjMzO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHlTY2FsYXI6IGZ1bmN0aW9uICggcyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRlWyAwIF0gKj0gczsgdGVbIDMgXSAqPSBzOyB0ZVsgNiBdICo9IHM7XFxuXFx0XFx0XFx0dGVbIDEgXSAqPSBzOyB0ZVsgNCBdICo9IHM7IHRlWyA3IF0gKj0gcztcXG5cXHRcXHRcXHR0ZVsgMiBdICo9IHM7IHRlWyA1IF0gKj0gczsgdGVbIDggXSAqPSBzO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGV0ZXJtaW5hbnQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHZhciBhID0gdGVbIDAgXSwgYiA9IHRlWyAxIF0sIGMgPSB0ZVsgMiBdLFxcblxcdFxcdFxcdFxcdGQgPSB0ZVsgMyBdLCBlID0gdGVbIDQgXSwgZiA9IHRlWyA1IF0sXFxuXFx0XFx0XFx0XFx0ZyA9IHRlWyA2IF0sIGggPSB0ZVsgNyBdLCBpID0gdGVbIDggXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYSAqIGUgKiBpIC0gYSAqIGYgKiBoIC0gYiAqIGQgKiBpICsgYiAqIGYgKiBnICsgYyAqIGQgKiBoIC0gYyAqIGUgKiBnO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0SW52ZXJzZTogZnVuY3Rpb24gKCBtYXRyaXgsIHRocm93T25EZWdlbmVyYXRlICkge1xcblxcblxcdFxcdFxcdGlmICggbWF0cml4ICYmIG1hdHJpeC5pc01hdHJpeDQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggXFxcIlRIUkVFLk1hdHJpeDM6IC5nZXRJbnZlcnNlKCkgbm8gbG9uZ2VyIHRha2VzIGEgTWF0cml4NCBhcmd1bWVudC5cXFwiICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBtZSA9IG1hdHJpeC5lbGVtZW50cyxcXG5cXHRcXHRcXHRcXHR0ZSA9IHRoaXMuZWxlbWVudHMsXFxuXFxuXFx0XFx0XFx0XFx0bjExID0gbWVbIDAgXSwgbjIxID0gbWVbIDEgXSwgbjMxID0gbWVbIDIgXSxcXG5cXHRcXHRcXHRcXHRuMTIgPSBtZVsgMyBdLCBuMjIgPSBtZVsgNCBdLCBuMzIgPSBtZVsgNSBdLFxcblxcdFxcdFxcdFxcdG4xMyA9IG1lWyA2IF0sIG4yMyA9IG1lWyA3IF0sIG4zMyA9IG1lWyA4IF0sXFxuXFxuXFx0XFx0XFx0XFx0dDExID0gbjMzICogbjIyIC0gbjMyICogbjIzLFxcblxcdFxcdFxcdFxcdHQxMiA9IG4zMiAqIG4xMyAtIG4zMyAqIG4xMixcXG5cXHRcXHRcXHRcXHR0MTMgPSBuMjMgKiBuMTIgLSBuMjIgKiBuMTMsXFxuXFxuXFx0XFx0XFx0XFx0ZGV0ID0gbjExICogdDExICsgbjIxICogdDEyICsgbjMxICogdDEzO1xcblxcblxcdFxcdFxcdGlmICggZGV0ID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBtc2cgPSBcXFwiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBjYW4ndCBpbnZlcnQgbWF0cml4LCBkZXRlcm1pbmFudCBpcyAwXFxcIjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHRocm93T25EZWdlbmVyYXRlID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggbXNnICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oIG1zZyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5pZGVudGl0eSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgZGV0SW52ID0gMSAvIGRldDtcXG5cXG5cXHRcXHRcXHR0ZVsgMCBdID0gdDExICogZGV0SW52O1xcblxcdFxcdFxcdHRlWyAxIF0gPSAoIG4zMSAqIG4yMyAtIG4zMyAqIG4yMSApICogZGV0SW52O1xcblxcdFxcdFxcdHRlWyAyIF0gPSAoIG4zMiAqIG4yMSAtIG4zMSAqIG4yMiApICogZGV0SW52O1xcblxcblxcdFxcdFxcdHRlWyAzIF0gPSB0MTIgKiBkZXRJbnY7XFxuXFx0XFx0XFx0dGVbIDQgXSA9ICggbjMzICogbjExIC0gbjMxICogbjEzICkgKiBkZXRJbnY7XFxuXFx0XFx0XFx0dGVbIDUgXSA9ICggbjMxICogbjEyIC0gbjMyICogbjExICkgKiBkZXRJbnY7XFxuXFxuXFx0XFx0XFx0dGVbIDYgXSA9IHQxMyAqIGRldEludjtcXG5cXHRcXHRcXHR0ZVsgNyBdID0gKCBuMjEgKiBuMTMgLSBuMjMgKiBuMTEgKSAqIGRldEludjtcXG5cXHRcXHRcXHR0ZVsgOCBdID0gKCBuMjIgKiBuMTEgLSBuMjEgKiBuMTIgKSAqIGRldEludjtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRyYW5zcG9zZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB0bXAsIG0gPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRtcCA9IG1bIDEgXTsgbVsgMSBdID0gbVsgMyBdOyBtWyAzIF0gPSB0bXA7XFxuXFx0XFx0XFx0dG1wID0gbVsgMiBdOyBtWyAyIF0gPSBtWyA2IF07IG1bIDYgXSA9IHRtcDtcXG5cXHRcXHRcXHR0bXAgPSBtWyA1IF07IG1bIDUgXSA9IG1bIDcgXTsgbVsgNyBdID0gdG1wO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0Tm9ybWFsTWF0cml4OiBmdW5jdGlvbiAoIG1hdHJpeDQgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuc2V0RnJvbU1hdHJpeDQoIG1hdHJpeDQgKS5nZXRJbnZlcnNlKCB0aGlzICkudHJhbnNwb3NlKCk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0cmFuc3Bvc2VJbnRvQXJyYXk6IGZ1bmN0aW9uICggciApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbSA9IHRoaXMuZWxlbWVudHM7XFxuXFxuXFx0XFx0XFx0clsgMCBdID0gbVsgMCBdO1xcblxcdFxcdFxcdHJbIDEgXSA9IG1bIDMgXTtcXG5cXHRcXHRcXHRyWyAyIF0gPSBtWyA2IF07XFxuXFx0XFx0XFx0clsgMyBdID0gbVsgMSBdO1xcblxcdFxcdFxcdHJbIDQgXSA9IG1bIDQgXTtcXG5cXHRcXHRcXHRyWyA1IF0gPSBtWyA3IF07XFxuXFx0XFx0XFx0clsgNiBdID0gbVsgMiBdO1xcblxcdFxcdFxcdHJbIDcgXSA9IG1bIDUgXTtcXG5cXHRcXHRcXHRyWyA4IF0gPSBtWyA4IF07XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRVdlRyYW5zZm9ybTogZnVuY3Rpb24gKCB0eCwgdHksIHN4LCBzeSwgcm90YXRpb24sIGN4LCBjeSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYyA9IE1hdGguY29zKCByb3RhdGlvbiApO1xcblxcdFxcdFxcdHZhciBzID0gTWF0aC5zaW4oIHJvdGF0aW9uICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5zZXQoXFxuXFx0XFx0XFx0XFx0c3ggKiBjLCBzeCAqIHMsIC0gc3ggKiAoIGMgKiBjeCArIHMgKiBjeSApICsgY3ggKyB0eCxcXG5cXHRcXHRcXHRcXHQtIHN5ICogcywgc3kgKiBjLCAtIHN5ICogKCAtIHMgKiBjeCArIGMgKiBjeSApICsgY3kgKyB0eSxcXG5cXHRcXHRcXHRcXHQwLCAwLCAxXFxuXFx0XFx0XFx0KTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNjYWxlOiBmdW5jdGlvbiAoIHN4LCBzeSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRlWyAwIF0gKj0gc3g7IHRlWyAzIF0gKj0gc3g7IHRlWyA2IF0gKj0gc3g7XFxuXFx0XFx0XFx0dGVbIDEgXSAqPSBzeTsgdGVbIDQgXSAqPSBzeTsgdGVbIDcgXSAqPSBzeTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJvdGF0ZTogZnVuY3Rpb24gKCB0aGV0YSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYyA9IE1hdGguY29zKCB0aGV0YSApO1xcblxcdFxcdFxcdHZhciBzID0gTWF0aC5zaW4oIHRoZXRhICk7XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXG5cXHRcXHRcXHR2YXIgYTExID0gdGVbIDAgXSwgYTEyID0gdGVbIDMgXSwgYTEzID0gdGVbIDYgXTtcXG5cXHRcXHRcXHR2YXIgYTIxID0gdGVbIDEgXSwgYTIyID0gdGVbIDQgXSwgYTIzID0gdGVbIDcgXTtcXG5cXG5cXHRcXHRcXHR0ZVsgMCBdID0gYyAqIGExMSArIHMgKiBhMjE7XFxuXFx0XFx0XFx0dGVbIDMgXSA9IGMgKiBhMTIgKyBzICogYTIyO1xcblxcdFxcdFxcdHRlWyA2IF0gPSBjICogYTEzICsgcyAqIGEyMztcXG5cXG5cXHRcXHRcXHR0ZVsgMSBdID0gLSBzICogYTExICsgYyAqIGEyMTtcXG5cXHRcXHRcXHR0ZVsgNCBdID0gLSBzICogYTEyICsgYyAqIGEyMjtcXG5cXHRcXHRcXHR0ZVsgNyBdID0gLSBzICogYTEzICsgYyAqIGEyMztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRyYW5zbGF0ZTogZnVuY3Rpb24gKCB0eCwgdHkgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gdGhpcy5lbGVtZW50cztcXG5cXG5cXHRcXHRcXHR0ZVsgMCBdICs9IHR4ICogdGVbIDIgXTsgdGVbIDMgXSArPSB0eCAqIHRlWyA1IF07IHRlWyA2IF0gKz0gdHggKiB0ZVsgOCBdO1xcblxcdFxcdFxcdHRlWyAxIF0gKz0gdHkgKiB0ZVsgMiBdOyB0ZVsgNCBdICs9IHR5ICogdGVbIDUgXTsgdGVbIDcgXSArPSB0eSAqIHRlWyA4IF07XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRlcXVhbHM6IGZ1bmN0aW9uICggbWF0cml4ICkge1xcblxcblxcdFxcdFxcdHZhciB0ZSA9IHRoaXMuZWxlbWVudHM7XFxuXFx0XFx0XFx0dmFyIG1lID0gbWF0cml4LmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IDk7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0ZVsgaSBdICE9PSBtZVsgaSBdICkgcmV0dXJuIGZhbHNlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZyb21BcnJheTogZnVuY3Rpb24gKCBhcnJheSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IDk7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5lbGVtZW50c1sgaSBdID0gYXJyYXlbIGkgKyBvZmZzZXQgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0FycmF5OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBhcnJheSA9PT0gdW5kZWZpbmVkICkgYXJyYXkgPSBbXTtcXG5cXHRcXHRcXHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHR2YXIgdGUgPSB0aGlzLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgXSA9IHRlWyAwIF07XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDEgXSA9IHRlWyAxIF07XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDIgXSA9IHRlWyAyIF07XFxuXFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDMgXSA9IHRlWyAzIF07XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDQgXSA9IHRlWyA0IF07XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDUgXSA9IHRlWyA1IF07XFxuXFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDYgXSA9IHRlWyA2IF07XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDcgXSA9IHRlWyA3IF07XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDggXSA9IHRlWyA4IF07XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGFycmF5O1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqIEBhdXRob3Igc3ppbWVrIC8gaHR0cHM6Ly9naXRodWIuY29tL3N6aW1lay9cXG5cXHQgKi9cXG5cXG5cXHR2YXIgdGV4dHVyZUlkID0gMDtcXG5cXG5cXHRmdW5jdGlvbiBUZXh0dXJlKCBpbWFnZSwgbWFwcGluZywgd3JhcFMsIHdyYXBULCBtYWdGaWx0ZXIsIG1pbkZpbHRlciwgZm9ybWF0LCB0eXBlLCBhbmlzb3Ryb3B5LCBlbmNvZGluZyApIHtcXG5cXG5cXHRcXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsICdpZCcsIHsgdmFsdWU6IHRleHR1cmVJZCArKyB9ICk7XFxuXFxuXFx0XFx0dGhpcy51dWlkID0gX01hdGguZ2VuZXJhdGVVVUlEKCk7XFxuXFxuXFx0XFx0dGhpcy5uYW1lID0gJyc7XFxuXFxuXFx0XFx0dGhpcy5pbWFnZSA9IGltYWdlICE9PSB1bmRlZmluZWQgPyBpbWFnZSA6IFRleHR1cmUuREVGQVVMVF9JTUFHRTtcXG5cXHRcXHR0aGlzLm1pcG1hcHMgPSBbXTtcXG5cXG5cXHRcXHR0aGlzLm1hcHBpbmcgPSBtYXBwaW5nICE9PSB1bmRlZmluZWQgPyBtYXBwaW5nIDogVGV4dHVyZS5ERUZBVUxUX01BUFBJTkc7XFxuXFxuXFx0XFx0dGhpcy53cmFwUyA9IHdyYXBTICE9PSB1bmRlZmluZWQgPyB3cmFwUyA6IENsYW1wVG9FZGdlV3JhcHBpbmc7XFxuXFx0XFx0dGhpcy53cmFwVCA9IHdyYXBUICE9PSB1bmRlZmluZWQgPyB3cmFwVCA6IENsYW1wVG9FZGdlV3JhcHBpbmc7XFxuXFxuXFx0XFx0dGhpcy5tYWdGaWx0ZXIgPSBtYWdGaWx0ZXIgIT09IHVuZGVmaW5lZCA/IG1hZ0ZpbHRlciA6IExpbmVhckZpbHRlcjtcXG5cXHRcXHR0aGlzLm1pbkZpbHRlciA9IG1pbkZpbHRlciAhPT0gdW5kZWZpbmVkID8gbWluRmlsdGVyIDogTGluZWFyTWlwTWFwTGluZWFyRmlsdGVyO1xcblxcblxcdFxcdHRoaXMuYW5pc290cm9weSA9IGFuaXNvdHJvcHkgIT09IHVuZGVmaW5lZCA/IGFuaXNvdHJvcHkgOiAxO1xcblxcblxcdFxcdHRoaXMuZm9ybWF0ID0gZm9ybWF0ICE9PSB1bmRlZmluZWQgPyBmb3JtYXQgOiBSR0JBRm9ybWF0O1xcblxcdFxcdHRoaXMudHlwZSA9IHR5cGUgIT09IHVuZGVmaW5lZCA/IHR5cGUgOiBVbnNpZ25lZEJ5dGVUeXBlO1xcblxcblxcdFxcdHRoaXMub2Zmc2V0ID0gbmV3IFZlY3RvcjIoIDAsIDAgKTtcXG5cXHRcXHR0aGlzLnJlcGVhdCA9IG5ldyBWZWN0b3IyKCAxLCAxICk7XFxuXFx0XFx0dGhpcy5jZW50ZXIgPSBuZXcgVmVjdG9yMiggMCwgMCApO1xcblxcdFxcdHRoaXMucm90YXRpb24gPSAwO1xcblxcblxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IHRydWU7XFxuXFx0XFx0dGhpcy5tYXRyaXggPSBuZXcgTWF0cml4MygpO1xcblxcblxcdFxcdHRoaXMuZ2VuZXJhdGVNaXBtYXBzID0gdHJ1ZTtcXG5cXHRcXHR0aGlzLnByZW11bHRpcGx5QWxwaGEgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLmZsaXBZID0gdHJ1ZTtcXG5cXHRcXHR0aGlzLnVucGFja0FsaWdubWVudCA9IDQ7XFx0Ly8gdmFsaWQgdmFsdWVzOiAxLCAyLCA0LCA4IChzZWUgaHR0cDovL3d3dy5raHJvbm9zLm9yZy9vcGVuZ2xlcy9zZGsvZG9jcy9tYW4veGh0bWwvZ2xQaXhlbFN0b3JlaS54bWwpXFxuXFxuXFx0XFx0Ly8gVmFsdWVzIG9mIGVuY29kaW5nICE9PSBUSFJFRS5MaW5lYXJFbmNvZGluZyBvbmx5IHN1cHBvcnRlZCBvbiBtYXAsIGVudk1hcCBhbmQgZW1pc3NpdmVNYXAuXFxuXFx0XFx0Ly9cXG5cXHRcXHQvLyBBbHNvIGNoYW5naW5nIHRoZSBlbmNvZGluZyBhZnRlciBhbHJlYWR5IHVzZWQgYnkgYSBNYXRlcmlhbCB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IG1ha2UgdGhlIE1hdGVyaWFsXFxuXFx0XFx0Ly8gdXBkYXRlLiAgWW91IG5lZWQgdG8gZXhwbGljaXRseSBjYWxsIE1hdGVyaWFsLm5lZWRzVXBkYXRlIHRvIHRyaWdnZXIgaXQgdG8gcmVjb21waWxlLlxcblxcdFxcdHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZyAhPT0gdW5kZWZpbmVkID8gZW5jb2RpbmcgOiBMaW5lYXJFbmNvZGluZztcXG5cXG5cXHRcXHR0aGlzLnZlcnNpb24gPSAwO1xcblxcdFxcdHRoaXMub25VcGRhdGUgPSBudWxsO1xcblxcblxcdH1cXG5cXG5cXHRUZXh0dXJlLkRFRkFVTFRfSU1BR0UgPSB1bmRlZmluZWQ7XFxuXFx0VGV4dHVyZS5ERUZBVUxUX01BUFBJTkcgPSBVVk1hcHBpbmc7XFxuXFxuXFx0VGV4dHVyZS5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogVGV4dHVyZSxcXG5cXG5cXHRcXHRpc1RleHR1cmU6IHRydWUsXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm5hbWUgPSBzb3VyY2UubmFtZTtcXG5cXG5cXHRcXHRcXHR0aGlzLmltYWdlID0gc291cmNlLmltYWdlO1xcblxcdFxcdFxcdHRoaXMubWlwbWFwcyA9IHNvdXJjZS5taXBtYXBzLnNsaWNlKCAwICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYXBwaW5nID0gc291cmNlLm1hcHBpbmc7XFxuXFxuXFx0XFx0XFx0dGhpcy53cmFwUyA9IHNvdXJjZS53cmFwUztcXG5cXHRcXHRcXHR0aGlzLndyYXBUID0gc291cmNlLndyYXBUO1xcblxcblxcdFxcdFxcdHRoaXMubWFnRmlsdGVyID0gc291cmNlLm1hZ0ZpbHRlcjtcXG5cXHRcXHRcXHR0aGlzLm1pbkZpbHRlciA9IHNvdXJjZS5taW5GaWx0ZXI7XFxuXFxuXFx0XFx0XFx0dGhpcy5hbmlzb3Ryb3B5ID0gc291cmNlLmFuaXNvdHJvcHk7XFxuXFxuXFx0XFx0XFx0dGhpcy5mb3JtYXQgPSBzb3VyY2UuZm9ybWF0O1xcblxcdFxcdFxcdHRoaXMudHlwZSA9IHNvdXJjZS50eXBlO1xcblxcblxcdFxcdFxcdHRoaXMub2Zmc2V0LmNvcHkoIHNvdXJjZS5vZmZzZXQgKTtcXG5cXHRcXHRcXHR0aGlzLnJlcGVhdC5jb3B5KCBzb3VyY2UucmVwZWF0ICk7XFxuXFx0XFx0XFx0dGhpcy5jZW50ZXIuY29weSggc291cmNlLmNlbnRlciApO1xcblxcdFxcdFxcdHRoaXMucm90YXRpb24gPSBzb3VyY2Uucm90YXRpb247XFxuXFxuXFx0XFx0XFx0dGhpcy5tYXRyaXhBdXRvVXBkYXRlID0gc291cmNlLm1hdHJpeEF1dG9VcGRhdGU7XFxuXFx0XFx0XFx0dGhpcy5tYXRyaXguY29weSggc291cmNlLm1hdHJpeCApO1xcblxcblxcdFxcdFxcdHRoaXMuZ2VuZXJhdGVNaXBtYXBzID0gc291cmNlLmdlbmVyYXRlTWlwbWFwcztcXG5cXHRcXHRcXHR0aGlzLnByZW11bHRpcGx5QWxwaGEgPSBzb3VyY2UucHJlbXVsdGlwbHlBbHBoYTtcXG5cXHRcXHRcXHR0aGlzLmZsaXBZID0gc291cmNlLmZsaXBZO1xcblxcdFxcdFxcdHRoaXMudW5wYWNrQWxpZ25tZW50ID0gc291cmNlLnVucGFja0FsaWdubWVudDtcXG5cXHRcXHRcXHR0aGlzLmVuY29kaW5nID0gc291cmNlLmVuY29kaW5nO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dG9KU09OOiBmdW5jdGlvbiAoIG1ldGEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGlzUm9vdE9iamVjdCA9ICggbWV0YSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBtZXRhID09PSAnc3RyaW5nJyApO1xcblxcblxcdFxcdFxcdGlmICggISBpc1Jvb3RPYmplY3QgJiYgbWV0YS50ZXh0dXJlc1sgdGhpcy51dWlkIF0gIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gbWV0YS50ZXh0dXJlc1sgdGhpcy51dWlkIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZ1bmN0aW9uIGdldERhdGFVUkwoIGltYWdlICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjYW52YXM7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpbWFnZSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNhbnZhcyA9IGltYWdlO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdjYW52YXMnICk7XFxuXFx0XFx0XFx0XFx0XFx0Y2FudmFzLndpZHRoID0gaW1hZ2Uud2lkdGg7XFxuXFx0XFx0XFx0XFx0XFx0Y2FudmFzLmhlaWdodCA9IGltYWdlLmhlaWdodDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCAnMmQnICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBpbWFnZSBpbnN0YW5jZW9mIEltYWdlRGF0YSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb250ZXh0LnB1dEltYWdlRGF0YSggaW1hZ2UsIDAsIDAgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNvbnRleHQuZHJhd0ltYWdlKCBpbWFnZSwgMCwgMCwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBjYW52YXMud2lkdGggPiAyMDQ4IHx8IGNhbnZhcy5oZWlnaHQgPiAyMDQ4ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBjYW52YXMudG9EYXRhVVJMKCAnaW1hZ2UvanBlZycsIDAuNiApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoICdpbWFnZS9wbmcnICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgb3V0cHV0ID0ge1xcblxcdFxcdFxcdFxcdG1ldGFkYXRhOiB7XFxuXFx0XFx0XFx0XFx0XFx0dmVyc2lvbjogNC41LFxcblxcdFxcdFxcdFxcdFxcdHR5cGU6ICdUZXh0dXJlJyxcXG5cXHRcXHRcXHRcXHRcXHRnZW5lcmF0b3I6ICdUZXh0dXJlLnRvSlNPTidcXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdHV1aWQ6IHRoaXMudXVpZCxcXG5cXHRcXHRcXHRcXHRuYW1lOiB0aGlzLm5hbWUsXFxuXFxuXFx0XFx0XFx0XFx0bWFwcGluZzogdGhpcy5tYXBwaW5nLFxcblxcblxcdFxcdFxcdFxcdHJlcGVhdDogWyB0aGlzLnJlcGVhdC54LCB0aGlzLnJlcGVhdC55IF0sXFxuXFx0XFx0XFx0XFx0b2Zmc2V0OiBbIHRoaXMub2Zmc2V0LngsIHRoaXMub2Zmc2V0LnkgXSxcXG5cXHRcXHRcXHRcXHRjZW50ZXI6IFsgdGhpcy5jZW50ZXIueCwgdGhpcy5jZW50ZXIueSBdLFxcblxcdFxcdFxcdFxcdHJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uLFxcblxcblxcdFxcdFxcdFxcdHdyYXA6IFsgdGhpcy53cmFwUywgdGhpcy53cmFwVCBdLFxcblxcblxcdFxcdFxcdFxcdG1pbkZpbHRlcjogdGhpcy5taW5GaWx0ZXIsXFxuXFx0XFx0XFx0XFx0bWFnRmlsdGVyOiB0aGlzLm1hZ0ZpbHRlcixcXG5cXHRcXHRcXHRcXHRhbmlzb3Ryb3B5OiB0aGlzLmFuaXNvdHJvcHksXFxuXFxuXFx0XFx0XFx0XFx0ZmxpcFk6IHRoaXMuZmxpcFlcXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5pbWFnZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdC8vIFRPRE86IE1vdmUgdG8gVEhSRUUuSW1hZ2VcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaW1hZ2UgPSB0aGlzLmltYWdlO1xcblxcblxcdFxcdFxcdFxcdGlmICggaW1hZ2UudXVpZCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGltYWdlLnV1aWQgPSBfTWF0aC5nZW5lcmF0ZVVVSUQoKTsgLy8gVUdIXFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggISBpc1Jvb3RPYmplY3QgJiYgbWV0YS5pbWFnZXNbIGltYWdlLnV1aWQgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdG1ldGEuaW1hZ2VzWyBpbWFnZS51dWlkIF0gPSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dXVpZDogaW1hZ2UudXVpZCxcXG5cXHRcXHRcXHRcXHRcXHRcXHR1cmw6IGdldERhdGFVUkwoIGltYWdlIClcXG5cXHRcXHRcXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRvdXRwdXQuaW1hZ2UgPSBpbWFnZS51dWlkO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoICEgaXNSb290T2JqZWN0ICkge1xcblxcblxcdFxcdFxcdFxcdG1ldGEudGV4dHVyZXNbIHRoaXMudXVpZCBdID0gb3V0cHV0O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gb3V0cHV0O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGlzcG9zZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuZGlzcGF0Y2hFdmVudCggeyB0eXBlOiAnZGlzcG9zZScgfSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dHJhbnNmb3JtVXY6IGZ1bmN0aW9uICggdXYgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLm1hcHBpbmcgIT09IFVWTWFwcGluZyApIHJldHVybjtcXG5cXG5cXHRcXHRcXHR1di5hcHBseU1hdHJpeDMoIHRoaXMubWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0aWYgKCB1di54IDwgMCB8fCB1di54ID4gMSApIHtcXG5cXG5cXHRcXHRcXHRcXHRzd2l0Y2ggKCB0aGlzLndyYXBTICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgUmVwZWF0V3JhcHBpbmc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dXYueCA9IHV2LnggLSBNYXRoLmZsb29yKCB1di54ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSBDbGFtcFRvRWRnZVdyYXBwaW5nOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHV2LnggPSB1di54IDwgMCA/IDAgOiAxO1xcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgTWlycm9yZWRSZXBlYXRXcmFwcGluZzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIE1hdGguYWJzKCBNYXRoLmZsb29yKCB1di54ICkgJSAyICkgPT09IDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dXYueCA9IE1hdGguY2VpbCggdXYueCApIC0gdXYueDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHV2LnggPSB1di54IC0gTWF0aC5mbG9vciggdXYueCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdXYueSA8IDAgfHwgdXYueSA+IDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c3dpdGNoICggdGhpcy53cmFwVCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlIFJlcGVhdFdyYXBwaW5nOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHV2LnkgPSB1di55IC0gTWF0aC5mbG9vciggdXYueSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgQ2xhbXBUb0VkZ2VXcmFwcGluZzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1di55ID0gdXYueSA8IDAgPyAwIDogMTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlIE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBNYXRoLmFicyggTWF0aC5mbG9vciggdXYueSApICUgMiApID09PSAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHV2LnkgPSBNYXRoLmNlaWwoIHV2LnkgKSAtIHV2Lnk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR1di55ID0gdXYueSAtIE1hdGguZmxvb3IoIHV2LnkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZmxpcFkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dXYueSA9IDEgLSB1di55O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggVGV4dHVyZS5wcm90b3R5cGUsIFxcXCJuZWVkc1VwZGF0ZVxcXCIsIHtcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB2YWx1ZSA9PT0gdHJ1ZSApIHRoaXMudmVyc2lvbiArKztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igc3VwZXJlZ2diZXJ0IC8gaHR0cDovL3d3dy5wYXVsYnJ1bnQuY28udWsvXFxuXFx0ICogQGF1dGhvciBwaGlsb2diIC8gaHR0cDovL2Jsb2cudGhlaml0Lm9yZy9cXG5cXHQgKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xcblxcdCAqIEBhdXRob3IgZWdyYWV0aGVyIC8gaHR0cDovL2VncmFldGhlci5jb20vXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gVmVjdG9yNCggeCwgeSwgeiwgdyApIHtcXG5cXG5cXHRcXHR0aGlzLnggPSB4IHx8IDA7XFxuXFx0XFx0dGhpcy55ID0geSB8fCAwO1xcblxcdFxcdHRoaXMueiA9IHogfHwgMDtcXG5cXHRcXHR0aGlzLncgPSAoIHcgIT09IHVuZGVmaW5lZCApID8gdyA6IDE7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIFZlY3RvcjQucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0aXNWZWN0b3I0OiB0cnVlLFxcblxcblxcdFxcdHNldDogZnVuY3Rpb24gKCB4LCB5LCB6LCB3ICkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IHg7XFxuXFx0XFx0XFx0dGhpcy55ID0geTtcXG5cXHRcXHRcXHR0aGlzLnogPSB6O1xcblxcdFxcdFxcdHRoaXMudyA9IHc7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IHNjYWxhcjtcXG5cXHRcXHRcXHR0aGlzLnkgPSBzY2FsYXI7XFxuXFx0XFx0XFx0dGhpcy56ID0gc2NhbGFyO1xcblxcdFxcdFxcdHRoaXMudyA9IHNjYWxhcjtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFg6IGZ1bmN0aW9uICggeCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSB4O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WTogZnVuY3Rpb24gKCB5ICkge1xcblxcblxcdFxcdFxcdHRoaXMueSA9IHk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRaOiBmdW5jdGlvbiAoIHogKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy56ID0gejtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFc6IGZ1bmN0aW9uICggdyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLncgPSB3O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q29tcG9uZW50OiBmdW5jdGlvbiAoIGluZGV4LCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRzd2l0Y2ggKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIDA6IHRoaXMueCA9IHZhbHVlOyBicmVhaztcXG5cXHRcXHRcXHRcXHRjYXNlIDE6IHRoaXMueSA9IHZhbHVlOyBicmVhaztcXG5cXHRcXHRcXHRcXHRjYXNlIDI6IHRoaXMueiA9IHZhbHVlOyBicmVhaztcXG5cXHRcXHRcXHRcXHRjYXNlIDM6IHRoaXMudyA9IHZhbHVlOyBicmVhaztcXG5cXHRcXHRcXHRcXHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoICdpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICcgKyBpbmRleCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldENvbXBvbmVudDogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRzd2l0Y2ggKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIDA6IHJldHVybiB0aGlzLng7XFxuXFx0XFx0XFx0XFx0Y2FzZSAxOiByZXR1cm4gdGhpcy55O1xcblxcdFxcdFxcdFxcdGNhc2UgMjogcmV0dXJuIHRoaXMuejtcXG5cXHRcXHRcXHRcXHRjYXNlIDM6IHJldHVybiB0aGlzLnc7XFxuXFx0XFx0XFx0XFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCAnaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAnICsgaW5kZXggKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvciggdGhpcy54LCB0aGlzLnksIHRoaXMueiwgdGhpcy53ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gdi54O1xcblxcdFxcdFxcdHRoaXMueSA9IHYueTtcXG5cXHRcXHRcXHR0aGlzLnogPSB2Lno7XFxuXFx0XFx0XFx0dGhpcy53ID0gKCB2LncgIT09IHVuZGVmaW5lZCApID8gdi53IDogMTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFkZDogZnVuY3Rpb24gKCB2LCB3ICkge1xcblxcblxcdFxcdFxcdGlmICggdyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjQ6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuYWRkVmVjdG9ycyggdiwgdyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLnggKz0gdi54O1xcblxcdFxcdFxcdHRoaXMueSArPSB2Lnk7XFxuXFx0XFx0XFx0dGhpcy56ICs9IHYuejtcXG5cXHRcXHRcXHR0aGlzLncgKz0gdi53O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWRkU2NhbGFyOiBmdW5jdGlvbiAoIHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ICs9IHM7XFxuXFx0XFx0XFx0dGhpcy55ICs9IHM7XFxuXFx0XFx0XFx0dGhpcy56ICs9IHM7XFxuXFx0XFx0XFx0dGhpcy53ICs9IHM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhZGRWZWN0b3JzOiBmdW5jdGlvbiAoIGEsIGIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gYS54ICsgYi54O1xcblxcdFxcdFxcdHRoaXMueSA9IGEueSArIGIueTtcXG5cXHRcXHRcXHR0aGlzLnogPSBhLnogKyBiLno7XFxuXFx0XFx0XFx0dGhpcy53ID0gYS53ICsgYi53O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWRkU2NhbGVkVmVjdG9yOiBmdW5jdGlvbiAoIHYsIHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ICs9IHYueCAqIHM7XFxuXFx0XFx0XFx0dGhpcy55ICs9IHYueSAqIHM7XFxuXFx0XFx0XFx0dGhpcy56ICs9IHYueiAqIHM7XFxuXFx0XFx0XFx0dGhpcy53ICs9IHYudyAqIHM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzdWI6IGZ1bmN0aW9uICggdiwgdyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHcgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnN1YlZlY3RvcnMoIHYsIHcgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy54IC09IHYueDtcXG5cXHRcXHRcXHR0aGlzLnkgLT0gdi55O1xcblxcdFxcdFxcdHRoaXMueiAtPSB2Lno7XFxuXFx0XFx0XFx0dGhpcy53IC09IHYudztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHN1YlNjYWxhcjogZnVuY3Rpb24gKCBzICkge1xcblxcblxcdFxcdFxcdHRoaXMueCAtPSBzO1xcblxcdFxcdFxcdHRoaXMueSAtPSBzO1xcblxcdFxcdFxcdHRoaXMueiAtPSBzO1xcblxcdFxcdFxcdHRoaXMudyAtPSBzO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3ViVmVjdG9yczogZnVuY3Rpb24gKCBhLCBiICkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9IGEueCAtIGIueDtcXG5cXHRcXHRcXHR0aGlzLnkgPSBhLnkgLSBiLnk7XFxuXFx0XFx0XFx0dGhpcy56ID0gYS56IC0gYi56O1xcblxcdFxcdFxcdHRoaXMudyA9IGEudyAtIGIudztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG11bHRpcGx5U2NhbGFyOiBmdW5jdGlvbiAoIHNjYWxhciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggKj0gc2NhbGFyO1xcblxcdFxcdFxcdHRoaXMueSAqPSBzY2FsYXI7XFxuXFx0XFx0XFx0dGhpcy56ICo9IHNjYWxhcjtcXG5cXHRcXHRcXHR0aGlzLncgKj0gc2NhbGFyO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXBwbHlNYXRyaXg0OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHggPSB0aGlzLngsIHkgPSB0aGlzLnksIHogPSB0aGlzLnosIHcgPSB0aGlzLnc7XFxuXFx0XFx0XFx0dmFyIGUgPSBtLmVsZW1lbnRzO1xcblxcblxcdFxcdFxcdHRoaXMueCA9IGVbIDAgXSAqIHggKyBlWyA0IF0gKiB5ICsgZVsgOCBdICogeiArIGVbIDEyIF0gKiB3O1xcblxcdFxcdFxcdHRoaXMueSA9IGVbIDEgXSAqIHggKyBlWyA1IF0gKiB5ICsgZVsgOSBdICogeiArIGVbIDEzIF0gKiB3O1xcblxcdFxcdFxcdHRoaXMueiA9IGVbIDIgXSAqIHggKyBlWyA2IF0gKiB5ICsgZVsgMTAgXSAqIHogKyBlWyAxNCBdICogdztcXG5cXHRcXHRcXHR0aGlzLncgPSBlWyAzIF0gKiB4ICsgZVsgNyBdICogeSArIGVbIDExIF0gKiB6ICsgZVsgMTUgXSAqIHc7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXZpZGVTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKCAxIC8gc2NhbGFyICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRBeGlzQW5nbGVGcm9tUXVhdGVybmlvbjogZnVuY3Rpb24gKCBxICkge1xcblxcblxcdFxcdFxcdC8vIGh0dHA6Ly93d3cuZXVjbGlkZWFuc3BhY2UuY29tL21hdGhzL2dlb21ldHJ5L3JvdGF0aW9ucy9jb252ZXJzaW9ucy9xdWF0ZXJuaW9uVG9BbmdsZS9pbmRleC5odG1cXG5cXG5cXHRcXHRcXHQvLyBxIGlzIGFzc3VtZWQgdG8gYmUgbm9ybWFsaXplZFxcblxcblxcdFxcdFxcdHRoaXMudyA9IDIgKiBNYXRoLmFjb3MoIHEudyApO1xcblxcblxcdFxcdFxcdHZhciBzID0gTWF0aC5zcXJ0KCAxIC0gcS53ICogcS53ICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBzIDwgMC4wMDAxICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMueCA9IDE7XFxuXFx0XFx0XFx0XFx0dGhpcy55ID0gMDtcXG5cXHRcXHRcXHRcXHR0aGlzLnogPSAwO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy54ID0gcS54IC8gcztcXG5cXHRcXHRcXHRcXHR0aGlzLnkgPSBxLnkgLyBzO1xcblxcdFxcdFxcdFxcdHRoaXMueiA9IHEueiAvIHM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0QXhpc0FuZ2xlRnJvbVJvdGF0aW9uTWF0cml4OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0Ly8gaHR0cDovL3d3dy5ldWNsaWRlYW5zcGFjZS5jb20vbWF0aHMvZ2VvbWV0cnkvcm90YXRpb25zL2NvbnZlcnNpb25zL21hdHJpeFRvQW5nbGUvaW5kZXguaHRtXFxuXFxuXFx0XFx0XFx0Ly8gYXNzdW1lcyB0aGUgdXBwZXIgM3gzIG9mIG0gaXMgYSBwdXJlIHJvdGF0aW9uIG1hdHJpeCAoaS5lLCB1bnNjYWxlZClcXG5cXG5cXHRcXHRcXHR2YXIgYW5nbGUsIHgsIHksIHosXFx0XFx0Ly8gdmFyaWFibGVzIGZvciByZXN1bHRcXG5cXHRcXHRcXHRcXHRlcHNpbG9uID0gMC4wMSxcXHRcXHQvLyBtYXJnaW4gdG8gYWxsb3cgZm9yIHJvdW5kaW5nIGVycm9yc1xcblxcdFxcdFxcdFxcdGVwc2lsb24yID0gMC4xLFxcdFxcdC8vIG1hcmdpbiB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIDAgYW5kIDE4MCBkZWdyZWVzXFxuXFxuXFx0XFx0XFx0XFx0dGUgPSBtLmVsZW1lbnRzLFxcblxcblxcdFxcdFxcdFxcdG0xMSA9IHRlWyAwIF0sIG0xMiA9IHRlWyA0IF0sIG0xMyA9IHRlWyA4IF0sXFxuXFx0XFx0XFx0XFx0bTIxID0gdGVbIDEgXSwgbTIyID0gdGVbIDUgXSwgbTIzID0gdGVbIDkgXSxcXG5cXHRcXHRcXHRcXHRtMzEgPSB0ZVsgMiBdLCBtMzIgPSB0ZVsgNiBdLCBtMzMgPSB0ZVsgMTAgXTtcXG5cXG5cXHRcXHRcXHRpZiAoICggTWF0aC5hYnMoIG0xMiAtIG0yMSApIDwgZXBzaWxvbiApICYmXFxuXFx0XFx0XFx0ICAgICAoIE1hdGguYWJzKCBtMTMgLSBtMzEgKSA8IGVwc2lsb24gKSAmJlxcblxcdFxcdFxcdCAgICAgKCBNYXRoLmFicyggbTIzIC0gbTMyICkgPCBlcHNpbG9uICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gc2luZ3VsYXJpdHkgZm91bmRcXG5cXHRcXHRcXHRcXHQvLyBmaXJzdCBjaGVjayBmb3IgaWRlbnRpdHkgbWF0cml4IHdoaWNoIG11c3QgaGF2ZSArMSBmb3IgYWxsIHRlcm1zXFxuXFx0XFx0XFx0XFx0Ly8gaW4gbGVhZGluZyBkaWFnb25hbCBhbmQgemVybyBpbiBvdGhlciB0ZXJtc1xcblxcblxcdFxcdFxcdFxcdGlmICggKCBNYXRoLmFicyggbTEyICsgbTIxICkgPCBlcHNpbG9uMiApICYmXFxuXFx0XFx0XFx0XFx0ICAgICAoIE1hdGguYWJzKCBtMTMgKyBtMzEgKSA8IGVwc2lsb24yICkgJiZcXG5cXHRcXHRcXHRcXHQgICAgICggTWF0aC5hYnMoIG0yMyArIG0zMiApIDwgZXBzaWxvbjIgKSAmJlxcblxcdFxcdFxcdFxcdCAgICAgKCBNYXRoLmFicyggbTExICsgbTIyICsgbTMzIC0gMyApIDwgZXBzaWxvbjIgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyB0aGlzIHNpbmd1bGFyaXR5IGlzIGlkZW50aXR5IG1hdHJpeCBzbyBhbmdsZSA9IDBcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnNldCggMSwgMCwgMCwgMCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzOyAvLyB6ZXJvIGFuZ2xlLCBhcmJpdHJhcnkgYXhpc1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBvdGhlcndpc2UgdGhpcyBzaW5ndWxhcml0eSBpcyBhbmdsZSA9IDE4MFxcblxcblxcdFxcdFxcdFxcdGFuZ2xlID0gTWF0aC5QSTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgeHggPSAoIG0xMSArIDEgKSAvIDI7XFxuXFx0XFx0XFx0XFx0dmFyIHl5ID0gKCBtMjIgKyAxICkgLyAyO1xcblxcdFxcdFxcdFxcdHZhciB6eiA9ICggbTMzICsgMSApIC8gMjtcXG5cXHRcXHRcXHRcXHR2YXIgeHkgPSAoIG0xMiArIG0yMSApIC8gNDtcXG5cXHRcXHRcXHRcXHR2YXIgeHogPSAoIG0xMyArIG0zMSApIC8gNDtcXG5cXHRcXHRcXHRcXHR2YXIgeXogPSAoIG0yMyArIG0zMiApIC8gNDtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoICggeHggPiB5eSApICYmICggeHggPiB6eiApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIG0xMSBpcyB0aGUgbGFyZ2VzdCBkaWFnb25hbCB0ZXJtXFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB4eCA8IGVwc2lsb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0eCA9IDA7XFxuXFx0XFx0XFx0XFx0XFx0XFx0eSA9IDAuNzA3MTA2NzgxO1xcblxcdFxcdFxcdFxcdFxcdFxcdHogPSAwLjcwNzEwNjc4MTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHggPSBNYXRoLnNxcnQoIHh4ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0eSA9IHh5IC8geDtcXG5cXHRcXHRcXHRcXHRcXHRcXHR6ID0geHogLyB4O1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCB5eSA+IHp6ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIG0yMiBpcyB0aGUgbGFyZ2VzdCBkaWFnb25hbCB0ZXJtXFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB5eSA8IGVwc2lsb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0eCA9IDAuNzA3MTA2NzgxO1xcblxcdFxcdFxcdFxcdFxcdFxcdHkgPSAwO1xcblxcdFxcdFxcdFxcdFxcdFxcdHogPSAwLjcwNzEwNjc4MTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHkgPSBNYXRoLnNxcnQoIHl5ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0eCA9IHh5IC8geTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR6ID0geXogLyB5O1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIG0zMyBpcyB0aGUgbGFyZ2VzdCBkaWFnb25hbCB0ZXJtIHNvIGJhc2UgcmVzdWx0IG9uIHRoaXNcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHp6IDwgZXBzaWxvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR4ID0gMC43MDcxMDY3ODE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0eSA9IDAuNzA3MTA2NzgxO1xcblxcdFxcdFxcdFxcdFxcdFxcdHogPSAwO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0eiA9IE1hdGguc3FydCggenogKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR4ID0geHogLyB6O1xcblxcdFxcdFxcdFxcdFxcdFxcdHkgPSB5eiAvIHo7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnNldCggeCwgeSwgeiwgYW5nbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpczsgLy8gcmV0dXJuIDE4MCBkZWcgcm90YXRpb25cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gYXMgd2UgaGF2ZSByZWFjaGVkIGhlcmUgdGhlcmUgYXJlIG5vIHNpbmd1bGFyaXRpZXMgc28gd2UgY2FuIGhhbmRsZSBub3JtYWxseVxcblxcblxcdFxcdFxcdHZhciBzID0gTWF0aC5zcXJ0KCAoIG0zMiAtIG0yMyApICogKCBtMzIgLSBtMjMgKSArXFxuXFx0XFx0XFx0ICAgICAgICAgICAgICAgICAgICggbTEzIC0gbTMxICkgKiAoIG0xMyAtIG0zMSApICtcXG5cXHRcXHRcXHQgICAgICAgICAgICAgICAgICAgKCBtMjEgLSBtMTIgKSAqICggbTIxIC0gbTEyICkgKTsgLy8gdXNlZCB0byBub3JtYWxpemVcXG5cXG5cXHRcXHRcXHRpZiAoIE1hdGguYWJzKCBzICkgPCAwLjAwMSApIHMgPSAxO1xcblxcblxcdFxcdFxcdC8vIHByZXZlbnQgZGl2aWRlIGJ5IHplcm8sIHNob3VsZCBub3QgaGFwcGVuIGlmIG1hdHJpeCBpcyBvcnRob2dvbmFsIGFuZCBzaG91bGQgYmVcXG5cXHRcXHRcXHQvLyBjYXVnaHQgYnkgc2luZ3VsYXJpdHkgdGVzdCBhYm92ZSwgYnV0IEkndmUgbGVmdCBpdCBpbiBqdXN0IGluIGNhc2VcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSAoIG0zMiAtIG0yMyApIC8gcztcXG5cXHRcXHRcXHR0aGlzLnkgPSAoIG0xMyAtIG0zMSApIC8gcztcXG5cXHRcXHRcXHR0aGlzLnogPSAoIG0yMSAtIG0xMiApIC8gcztcXG5cXHRcXHRcXHR0aGlzLncgPSBNYXRoLmFjb3MoICggbTExICsgbTIyICsgbTMzIC0gMSApIC8gMiApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWluOiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5taW4oIHRoaXMueCwgdi54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5taW4oIHRoaXMueSwgdi55ICk7XFxuXFx0XFx0XFx0dGhpcy56ID0gTWF0aC5taW4oIHRoaXMueiwgdi56ICk7XFxuXFx0XFx0XFx0dGhpcy53ID0gTWF0aC5taW4oIHRoaXMudywgdi53ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtYXg6IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggPSBNYXRoLm1heCggdGhpcy54LCB2LnggKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBNYXRoLm1heCggdGhpcy55LCB2LnkgKTtcXG5cXHRcXHRcXHR0aGlzLnogPSBNYXRoLm1heCggdGhpcy56LCB2LnogKTtcXG5cXHRcXHRcXHR0aGlzLncgPSBNYXRoLm1heCggdGhpcy53LCB2LncgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsYW1wOiBmdW5jdGlvbiAoIG1pbiwgbWF4ICkge1xcblxcblxcdFxcdFxcdC8vIGFzc3VtZXMgbWluIDwgbWF4LCBjb21wb25lbnR3aXNlXFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5tYXgoIG1pbi54LCBNYXRoLm1pbiggbWF4LngsIHRoaXMueCApICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5tYXgoIG1pbi55LCBNYXRoLm1pbiggbWF4LnksIHRoaXMueSApICk7XFxuXFx0XFx0XFx0dGhpcy56ID0gTWF0aC5tYXgoIG1pbi56LCBNYXRoLm1pbiggbWF4LnosIHRoaXMueiApICk7XFxuXFx0XFx0XFx0dGhpcy53ID0gTWF0aC5tYXgoIG1pbi53LCBNYXRoLm1pbiggbWF4LncsIHRoaXMudyApICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbGFtcFNjYWxhcjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBtaW4sIG1heDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gY2xhbXBTY2FsYXIoIG1pblZhbCwgbWF4VmFsICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggbWluID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWluID0gbmV3IFZlY3RvcjQoKTtcXG5cXHRcXHRcXHRcXHRcXHRtYXggPSBuZXcgVmVjdG9yNCgpO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRtaW4uc2V0KCBtaW5WYWwsIG1pblZhbCwgbWluVmFsLCBtaW5WYWwgKTtcXG5cXHRcXHRcXHRcXHRtYXguc2V0KCBtYXhWYWwsIG1heFZhbCwgbWF4VmFsLCBtYXhWYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5jbGFtcCggbWluLCBtYXggKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRjbGFtcExlbmd0aDogZnVuY3Rpb24gKCBtaW4sIG1heCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGgoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoIGxlbmd0aCB8fCAxICkubXVsdGlwbHlTY2FsYXIoIE1hdGgubWF4KCBtaW4sIE1hdGgubWluKCBtYXgsIGxlbmd0aCApICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZsb29yOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5mbG9vciggdGhpcy54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5mbG9vciggdGhpcy55ICk7XFxuXFx0XFx0XFx0dGhpcy56ID0gTWF0aC5mbG9vciggdGhpcy56ICk7XFxuXFx0XFx0XFx0dGhpcy53ID0gTWF0aC5mbG9vciggdGhpcy53ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjZWlsOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5jZWlsKCB0aGlzLnggKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBNYXRoLmNlaWwoIHRoaXMueSApO1xcblxcdFxcdFxcdHRoaXMueiA9IE1hdGguY2VpbCggdGhpcy56ICk7XFxuXFx0XFx0XFx0dGhpcy53ID0gTWF0aC5jZWlsKCB0aGlzLncgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJvdW5kOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gTWF0aC5yb3VuZCggdGhpcy54ICk7XFxuXFx0XFx0XFx0dGhpcy55ID0gTWF0aC5yb3VuZCggdGhpcy55ICk7XFxuXFx0XFx0XFx0dGhpcy56ID0gTWF0aC5yb3VuZCggdGhpcy56ICk7XFxuXFx0XFx0XFx0dGhpcy53ID0gTWF0aC5yb3VuZCggdGhpcy53ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyb3VuZFRvWmVybzogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMueCA9ICggdGhpcy54IDwgMCApID8gTWF0aC5jZWlsKCB0aGlzLnggKSA6IE1hdGguZmxvb3IoIHRoaXMueCApO1xcblxcdFxcdFxcdHRoaXMueSA9ICggdGhpcy55IDwgMCApID8gTWF0aC5jZWlsKCB0aGlzLnkgKSA6IE1hdGguZmxvb3IoIHRoaXMueSApO1xcblxcdFxcdFxcdHRoaXMueiA9ICggdGhpcy56IDwgMCApID8gTWF0aC5jZWlsKCB0aGlzLnogKSA6IE1hdGguZmxvb3IoIHRoaXMueiApO1xcblxcdFxcdFxcdHRoaXMudyA9ICggdGhpcy53IDwgMCApID8gTWF0aC5jZWlsKCB0aGlzLncgKSA6IE1hdGguZmxvb3IoIHRoaXMudyApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bmVnYXRlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy54ID0gLSB0aGlzLng7XFxuXFx0XFx0XFx0dGhpcy55ID0gLSB0aGlzLnk7XFxuXFx0XFx0XFx0dGhpcy56ID0gLSB0aGlzLno7XFxuXFx0XFx0XFx0dGhpcy53ID0gLSB0aGlzLnc7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkb3Q6IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy54ICogdi54ICsgdGhpcy55ICogdi55ICsgdGhpcy56ICogdi56ICsgdGhpcy53ICogdi53O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGVuZ3RoU3E6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55ICsgdGhpcy56ICogdGhpcy56ICsgdGhpcy53ICogdGhpcy53O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGVuZ3RoOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIE1hdGguc3FydCggdGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55ICsgdGhpcy56ICogdGhpcy56ICsgdGhpcy53ICogdGhpcy53ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtYW5oYXR0YW5MZW5ndGg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5hYnMoIHRoaXMueCApICsgTWF0aC5hYnMoIHRoaXMueSApICsgTWF0aC5hYnMoIHRoaXMueiApICsgTWF0aC5hYnMoIHRoaXMudyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bm9ybWFsaXplOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKCB0aGlzLmxlbmd0aCgpIHx8IDEgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldExlbmd0aDogZnVuY3Rpb24gKCBsZW5ndGggKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoIGxlbmd0aCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGVycDogZnVuY3Rpb24gKCB2LCBhbHBoYSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnggKz0gKCB2LnggLSB0aGlzLnggKSAqIGFscGhhO1xcblxcdFxcdFxcdHRoaXMueSArPSAoIHYueSAtIHRoaXMueSApICogYWxwaGE7XFxuXFx0XFx0XFx0dGhpcy56ICs9ICggdi56IC0gdGhpcy56ICkgKiBhbHBoYTtcXG5cXHRcXHRcXHR0aGlzLncgKz0gKCB2LncgLSB0aGlzLncgKSAqIGFscGhhO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGVycFZlY3RvcnM6IGZ1bmN0aW9uICggdjEsIHYyLCBhbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zdWJWZWN0b3JzKCB2MiwgdjEgKS5tdWx0aXBseVNjYWxhciggYWxwaGEgKS5hZGQoIHYxICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRlcXVhbHM6IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCAoIHYueCA9PT0gdGhpcy54ICkgJiYgKCB2LnkgPT09IHRoaXMueSApICYmICggdi56ID09PSB0aGlzLnogKSAmJiAoIHYudyA9PT0gdGhpcy53ICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZyb21BcnJheTogZnVuY3Rpb24gKCBhcnJheSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdHRoaXMueCA9IGFycmF5WyBvZmZzZXQgXTtcXG5cXHRcXHRcXHR0aGlzLnkgPSBhcnJheVsgb2Zmc2V0ICsgMSBdO1xcblxcdFxcdFxcdHRoaXMueiA9IGFycmF5WyBvZmZzZXQgKyAyIF07XFxuXFx0XFx0XFx0dGhpcy53ID0gYXJyYXlbIG9mZnNldCArIDMgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGFycmF5ID09PSB1bmRlZmluZWQgKSBhcnJheSA9IFtdO1xcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgXSA9IHRoaXMueDtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMSBdID0gdGhpcy55O1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAyIF0gPSB0aGlzLno7XFxuXFx0XFx0XFx0YXJyYXlbIG9mZnNldCArIDMgXSA9IHRoaXMudztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYXJyYXk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tQnVmZmVyQXR0cmlidXRlOiBmdW5jdGlvbiAoIGF0dHJpYnV0ZSwgaW5kZXgsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9mZnNldCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjQ6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4nICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMueCA9IGF0dHJpYnV0ZS5nZXRYKCBpbmRleCApO1xcblxcdFxcdFxcdHRoaXMueSA9IGF0dHJpYnV0ZS5nZXRZKCBpbmRleCApO1xcblxcdFxcdFxcdHRoaXMueiA9IGF0dHJpYnV0ZS5nZXRaKCBpbmRleCApO1xcblxcdFxcdFxcdHRoaXMudyA9IGF0dHJpYnV0ZS5nZXRXKCBpbmRleCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBzemltZWsgLyBodHRwczovL2dpdGh1Yi5jb20vc3ppbWVrL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBNYXJpdXMgS2ludGVsIC8gaHR0cHM6Ly9naXRodWIuY29tL2tpbnRlbFxcblxcdCAqL1xcblxcblxcdC8qXFxuXFx0IEluIG9wdGlvbnMsIHdlIGNhbiBzcGVjaWZ5OlxcblxcdCAqIFRleHR1cmUgcGFyYW1ldGVycyBmb3IgYW4gYXV0by1nZW5lcmF0ZWQgdGFyZ2V0IHRleHR1cmVcXG5cXHQgKiBkZXB0aEJ1ZmZlci9zdGVuY2lsQnVmZmVyOiBCb29sZWFucyB0byBpbmRpY2F0ZSBpZiB3ZSBzaG91bGQgZ2VuZXJhdGUgdGhlc2UgYnVmZmVyc1xcblxcdCovXFxuXFx0ZnVuY3Rpb24gV2ViR0xSZW5kZXJUYXJnZXQoIHdpZHRoLCBoZWlnaHQsIG9wdGlvbnMgKSB7XFxuXFxuXFx0XFx0dGhpcy51dWlkID0gX01hdGguZ2VuZXJhdGVVVUlEKCk7XFxuXFxuXFx0XFx0dGhpcy53aWR0aCA9IHdpZHRoO1xcblxcdFxcdHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xcblxcblxcdFxcdHRoaXMuc2Npc3NvciA9IG5ldyBWZWN0b3I0KCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICk7XFxuXFx0XFx0dGhpcy5zY2lzc29yVGVzdCA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMudmlld3BvcnQgPSBuZXcgVmVjdG9yNCggMCwgMCwgd2lkdGgsIGhlaWdodCApO1xcblxcblxcdFxcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xcblxcblxcdFxcdGlmICggb3B0aW9ucy5taW5GaWx0ZXIgPT09IHVuZGVmaW5lZCApIG9wdGlvbnMubWluRmlsdGVyID0gTGluZWFyRmlsdGVyO1xcblxcblxcdFxcdHRoaXMudGV4dHVyZSA9IG5ldyBUZXh0dXJlKCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb3B0aW9ucy53cmFwUywgb3B0aW9ucy53cmFwVCwgb3B0aW9ucy5tYWdGaWx0ZXIsIG9wdGlvbnMubWluRmlsdGVyLCBvcHRpb25zLmZvcm1hdCwgb3B0aW9ucy50eXBlLCBvcHRpb25zLmFuaXNvdHJvcHksIG9wdGlvbnMuZW5jb2RpbmcgKTtcXG5cXG5cXHRcXHR0aGlzLmRlcHRoQnVmZmVyID0gb3B0aW9ucy5kZXB0aEJ1ZmZlciAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5kZXB0aEJ1ZmZlciA6IHRydWU7XFxuXFx0XFx0dGhpcy5zdGVuY2lsQnVmZmVyID0gb3B0aW9ucy5zdGVuY2lsQnVmZmVyICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnN0ZW5jaWxCdWZmZXIgOiB0cnVlO1xcblxcdFxcdHRoaXMuZGVwdGhUZXh0dXJlID0gb3B0aW9ucy5kZXB0aFRleHR1cmUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuZGVwdGhUZXh0dXJlIDogbnVsbDtcXG5cXG5cXHR9XFxuXFxuXFx0V2ViR0xSZW5kZXJUYXJnZXQucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IFdlYkdMUmVuZGVyVGFyZ2V0LFxcblxcblxcdFxcdGlzV2ViR0xSZW5kZXJUYXJnZXQ6IHRydWUsXFxuXFxuXFx0XFx0c2V0U2l6ZTogZnVuY3Rpb24gKCB3aWR0aCwgaGVpZ2h0ICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy53aWR0aCAhPT0gd2lkdGggfHwgdGhpcy5oZWlnaHQgIT09IGhlaWdodCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLndpZHRoID0gd2lkdGg7XFxuXFx0XFx0XFx0XFx0dGhpcy5oZWlnaHQgPSBoZWlnaHQ7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5kaXNwb3NlKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMudmlld3BvcnQuc2V0KCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICk7XFxuXFx0XFx0XFx0dGhpcy5zY2lzc29yLnNldCggMCwgMCwgd2lkdGgsIGhlaWdodCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLndpZHRoID0gc291cmNlLndpZHRoO1xcblxcdFxcdFxcdHRoaXMuaGVpZ2h0ID0gc291cmNlLmhlaWdodDtcXG5cXG5cXHRcXHRcXHR0aGlzLnZpZXdwb3J0LmNvcHkoIHNvdXJjZS52aWV3cG9ydCApO1xcblxcblxcdFxcdFxcdHRoaXMudGV4dHVyZSA9IHNvdXJjZS50ZXh0dXJlLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0dGhpcy5kZXB0aEJ1ZmZlciA9IHNvdXJjZS5kZXB0aEJ1ZmZlcjtcXG5cXHRcXHRcXHR0aGlzLnN0ZW5jaWxCdWZmZXIgPSBzb3VyY2Uuc3RlbmNpbEJ1ZmZlcjtcXG5cXHRcXHRcXHR0aGlzLmRlcHRoVGV4dHVyZSA9IHNvdXJjZS5kZXB0aFRleHR1cmU7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXNwb3NlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5kaXNwYXRjaEV2ZW50KCB7IHR5cGU6ICdkaXNwb3NlJyB9ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xSZW5kZXJUYXJnZXRDdWJlKCB3aWR0aCwgaGVpZ2h0LCBvcHRpb25zICkge1xcblxcblxcdFxcdFdlYkdMUmVuZGVyVGFyZ2V0LmNhbGwoIHRoaXMsIHdpZHRoLCBoZWlnaHQsIG9wdGlvbnMgKTtcXG5cXG5cXHRcXHR0aGlzLmFjdGl2ZUN1YmVGYWNlID0gMDsgLy8gUFggMCwgTlggMSwgUFkgMiwgTlkgMywgUFogNCwgTlogNVxcblxcdFxcdHRoaXMuYWN0aXZlTWlwTWFwTGV2ZWwgPSAwO1xcblxcblxcdH1cXG5cXG5cXHRXZWJHTFJlbmRlclRhcmdldEN1YmUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggV2ViR0xSZW5kZXJUYXJnZXQucHJvdG90eXBlICk7XFxuXFx0V2ViR0xSZW5kZXJUYXJnZXRDdWJlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFdlYkdMUmVuZGVyVGFyZ2V0Q3ViZTtcXG5cXG5cXHRXZWJHTFJlbmRlclRhcmdldEN1YmUucHJvdG90eXBlLmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlID0gdHJ1ZTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIERhdGFUZXh0dXJlKCBkYXRhLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1hcHBpbmcsIHdyYXBTLCB3cmFwVCwgbWFnRmlsdGVyLCBtaW5GaWx0ZXIsIGFuaXNvdHJvcHksIGVuY29kaW5nICkge1xcblxcblxcdFxcdFRleHR1cmUuY2FsbCggdGhpcywgbnVsbCwgbWFwcGluZywgd3JhcFMsIHdyYXBULCBtYWdGaWx0ZXIsIG1pbkZpbHRlciwgZm9ybWF0LCB0eXBlLCBhbmlzb3Ryb3B5LCBlbmNvZGluZyApO1xcblxcblxcdFxcdHRoaXMuaW1hZ2UgPSB7IGRhdGE6IGRhdGEsIHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQgfTtcXG5cXG5cXHRcXHR0aGlzLm1hZ0ZpbHRlciA9IG1hZ0ZpbHRlciAhPT0gdW5kZWZpbmVkID8gbWFnRmlsdGVyIDogTmVhcmVzdEZpbHRlcjtcXG5cXHRcXHR0aGlzLm1pbkZpbHRlciA9IG1pbkZpbHRlciAhPT0gdW5kZWZpbmVkID8gbWluRmlsdGVyIDogTmVhcmVzdEZpbHRlcjtcXG5cXG5cXHRcXHR0aGlzLmdlbmVyYXRlTWlwbWFwcyA9IGZhbHNlO1xcblxcdFxcdHRoaXMuZmxpcFkgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLnVucGFja0FsaWdubWVudCA9IDE7XFxuXFxuXFx0fVxcblxcblxcdERhdGFUZXh0dXJlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFRleHR1cmUucHJvdG90eXBlICk7XFxuXFx0RGF0YVRleHR1cmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRGF0YVRleHR1cmU7XFxuXFxuXFx0RGF0YVRleHR1cmUucHJvdG90eXBlLmlzRGF0YVRleHR1cmUgPSB0cnVlO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ3ViZVRleHR1cmUoIGltYWdlcywgbWFwcGluZywgd3JhcFMsIHdyYXBULCBtYWdGaWx0ZXIsIG1pbkZpbHRlciwgZm9ybWF0LCB0eXBlLCBhbmlzb3Ryb3B5LCBlbmNvZGluZyApIHtcXG5cXG5cXHRcXHRpbWFnZXMgPSBpbWFnZXMgIT09IHVuZGVmaW5lZCA/IGltYWdlcyA6IFtdO1xcblxcdFxcdG1hcHBpbmcgPSBtYXBwaW5nICE9PSB1bmRlZmluZWQgPyBtYXBwaW5nIDogQ3ViZVJlZmxlY3Rpb25NYXBwaW5nO1xcblxcblxcdFxcdFRleHR1cmUuY2FsbCggdGhpcywgaW1hZ2VzLCBtYXBwaW5nLCB3cmFwUywgd3JhcFQsIG1hZ0ZpbHRlciwgbWluRmlsdGVyLCBmb3JtYXQsIHR5cGUsIGFuaXNvdHJvcHksIGVuY29kaW5nICk7XFxuXFxuXFx0XFx0dGhpcy5mbGlwWSA9IGZhbHNlO1xcblxcblxcdH1cXG5cXG5cXHRDdWJlVGV4dHVyZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBUZXh0dXJlLnByb3RvdHlwZSApO1xcblxcdEN1YmVUZXh0dXJlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEN1YmVUZXh0dXJlO1xcblxcblxcdEN1YmVUZXh0dXJlLnByb3RvdHlwZS5pc0N1YmVUZXh0dXJlID0gdHJ1ZTtcXG5cXG5cXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIEN1YmVUZXh0dXJlLnByb3RvdHlwZSwgJ2ltYWdlcycsIHtcXG5cXG5cXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5pbWFnZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmltYWdlID0gdmFsdWU7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICpcXG5cXHQgKiBVbmlmb3JtcyBvZiBhIHByb2dyYW0uXFxuXFx0ICogVGhvc2UgZm9ybSBhIHRyZWUgc3RydWN0dXJlIHdpdGggYSBzcGVjaWFsIHRvcC1sZXZlbCBjb250YWluZXIgZm9yIHRoZSByb290LFxcblxcdCAqIHdoaWNoIHlvdSBnZXQgYnkgY2FsbGluZyAnbmV3IFdlYkdMVW5pZm9ybXMoIGdsLCBwcm9ncmFtLCByZW5kZXJlciApJy5cXG5cXHQgKlxcblxcdCAqXFxuXFx0ICogUHJvcGVydGllcyBvZiBpbm5lciBub2RlcyBpbmNsdWRpbmcgdGhlIHRvcC1sZXZlbCBjb250YWluZXI6XFxuXFx0ICpcXG5cXHQgKiAuc2VxIC0gYXJyYXkgb2YgbmVzdGVkIHVuaWZvcm1zXFxuXFx0ICogLm1hcCAtIG5lc3RlZCB1bmlmb3JtcyBieSBuYW1lXFxuXFx0ICpcXG5cXHQgKlxcblxcdCAqIE1ldGhvZHMgb2YgYWxsIG5vZGVzIGV4Y2VwdCB0aGUgdG9wLWxldmVsIGNvbnRhaW5lcjpcXG5cXHQgKlxcblxcdCAqIC5zZXRWYWx1ZSggZ2wsIHZhbHVlLCBbcmVuZGVyZXJdIClcXG5cXHQgKlxcblxcdCAqIFxcdFxcdHVwbG9hZHMgYSB1bmlmb3JtIHZhbHVlKHMpXFxuXFx0ICogIFxcdHRoZSAncmVuZGVyZXInIHBhcmFtZXRlciBpcyBuZWVkZWQgZm9yIHNhbXBsZXIgdW5pZm9ybXNcXG5cXHQgKlxcblxcdCAqXFxuXFx0ICogU3RhdGljIG1ldGhvZHMgb2YgdGhlIHRvcC1sZXZlbCBjb250YWluZXIgKHJlbmRlcmVyIGZhY3Rvcml6YXRpb25zKTpcXG5cXHQgKlxcblxcdCAqIC51cGxvYWQoIGdsLCBzZXEsIHZhbHVlcywgcmVuZGVyZXIgKVxcblxcdCAqXFxuXFx0ICogXFx0XFx0c2V0cyB1bmlmb3JtcyBpbiAnc2VxJyB0byAndmFsdWVzW2lkXS52YWx1ZSdcXG5cXHQgKlxcblxcdCAqIC5zZXFXaXRoVmFsdWUoIHNlcSwgdmFsdWVzICkgOiBmaWx0ZXJlZFNlcVxcblxcdCAqXFxuXFx0ICogXFx0XFx0ZmlsdGVycyAnc2VxJyBlbnRyaWVzIHdpdGggY29ycmVzcG9uZGluZyBlbnRyeSBpbiB2YWx1ZXNcXG5cXHQgKlxcblxcdCAqXFxuXFx0ICogTWV0aG9kcyBvZiB0aGUgdG9wLWxldmVsIGNvbnRhaW5lciAocmVuZGVyZXIgZmFjdG9yaXphdGlvbnMpOlxcblxcdCAqXFxuXFx0ICogLnNldFZhbHVlKCBnbCwgbmFtZSwgdmFsdWUgKVxcblxcdCAqXFxuXFx0ICogXFx0XFx0c2V0cyB1bmlmb3JtIHdpdGggIG5hbWUgJ25hbWUnIHRvICd2YWx1ZSdcXG5cXHQgKlxcblxcdCAqIC5zZXQoIGdsLCBvYmosIHByb3AgKVxcblxcdCAqXFxuXFx0ICogXFx0XFx0c2V0cyB1bmlmb3JtIGZyb20gb2JqZWN0IGFuZCBwcm9wZXJ0eSB3aXRoIHNhbWUgbmFtZSB0aGFuIHVuaWZvcm1cXG5cXHQgKlxcblxcdCAqIC5zZXRPcHRpb25hbCggZ2wsIG9iaiwgcHJvcCApXFxuXFx0ICpcXG5cXHQgKiBcXHRcXHRsaWtlIC5zZXQgZm9yIGFuIG9wdGlvbmFsIHByb3BlcnR5IG9mIHRoZSBvYmplY3RcXG5cXHQgKlxcblxcdCAqL1xcblxcblxcdHZhciBlbXB0eVRleHR1cmUgPSBuZXcgVGV4dHVyZSgpO1xcblxcdHZhciBlbXB0eUN1YmVUZXh0dXJlID0gbmV3IEN1YmVUZXh0dXJlKCk7XFxuXFxuXFx0Ly8gLS0tIEJhc2UgZm9yIGlubmVyIG5vZGVzIChpbmNsdWRpbmcgdGhlIHJvb3QpIC0tLVxcblxcblxcdGZ1bmN0aW9uIFVuaWZvcm1Db250YWluZXIoKSB7XFxuXFxuXFx0XFx0dGhpcy5zZXEgPSBbXTtcXG5cXHRcXHR0aGlzLm1hcCA9IHt9O1xcblxcblxcdH1cXG5cXG5cXHQvLyAtLS0gVXRpbGl0aWVzIC0tLVxcblxcblxcdC8vIEFycmF5IENhY2hlcyAocHJvdmlkZSB0eXBlZCBhcnJheXMgZm9yIHRlbXBvcmFyeSBieSBzaXplKVxcblxcblxcdHZhciBhcnJheUNhY2hlRjMyID0gW107XFxuXFx0dmFyIGFycmF5Q2FjaGVJMzIgPSBbXTtcXG5cXG5cXHQvLyBGbG9hdDMyQXJyYXkgY2FjaGVzIHVzZWQgZm9yIHVwbG9hZGluZyBNYXRyaXggdW5pZm9ybXNcXG5cXG5cXHR2YXIgbWF0NGFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSggMTYgKTtcXG5cXHR2YXIgbWF0M2FycmF5ID0gbmV3IEZsb2F0MzJBcnJheSggOSApO1xcblxcblxcdC8vIEZsYXR0ZW5pbmcgZm9yIGFycmF5cyBvZiB2ZWN0b3JzIGFuZCBtYXRyaWNlc1xcblxcblxcdGZ1bmN0aW9uIGZsYXR0ZW4oIGFycmF5LCBuQmxvY2tzLCBibG9ja1NpemUgKSB7XFxuXFxuXFx0XFx0dmFyIGZpcnN0RWxlbSA9IGFycmF5WyAwIF07XFxuXFxuXFx0XFx0aWYgKCBmaXJzdEVsZW0gPD0gMCB8fCBmaXJzdEVsZW0gPiAwICkgcmV0dXJuIGFycmF5O1xcblxcdFxcdC8vIHVub3B0aW1pemVkOiAhIGlzTmFOKCBmaXJzdEVsZW0gKVxcblxcdFxcdC8vIHNlZSBodHRwOi8vamFja3NvbmR1bnN0YW4uY29tL2FydGljbGVzLzk4M1xcblxcblxcdFxcdHZhciBuID0gbkJsb2NrcyAqIGJsb2NrU2l6ZSxcXG5cXHRcXHRcXHRyID0gYXJyYXlDYWNoZUYzMlsgbiBdO1xcblxcblxcdFxcdGlmICggciA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdHIgPSBuZXcgRmxvYXQzMkFycmF5KCBuICk7XFxuXFx0XFx0XFx0YXJyYXlDYWNoZUYzMlsgbiBdID0gcjtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aWYgKCBuQmxvY2tzICE9PSAwICkge1xcblxcblxcdFxcdFxcdGZpcnN0RWxlbS50b0FycmF5KCByLCAwICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAxLCBvZmZzZXQgPSAwOyBpICE9PSBuQmxvY2tzOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdG9mZnNldCArPSBibG9ja1NpemU7XFxuXFx0XFx0XFx0XFx0YXJyYXlbIGkgXS50b0FycmF5KCByLCBvZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiByO1xcblxcblxcdH1cXG5cXG5cXHQvLyBUZXh0dXJlIHVuaXQgYWxsb2NhdGlvblxcblxcblxcdGZ1bmN0aW9uIGFsbG9jVGV4VW5pdHMoIHJlbmRlcmVyLCBuICkge1xcblxcblxcdFxcdHZhciByID0gYXJyYXlDYWNoZUkzMlsgbiBdO1xcblxcblxcdFxcdGlmICggciA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdHIgPSBuZXcgSW50MzJBcnJheSggbiApO1xcblxcdFxcdFxcdGFycmF5Q2FjaGVJMzJbIG4gXSA9IHI7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gbjsgKysgaSApXFxuXFx0XFx0XFx0clsgaSBdID0gcmVuZGVyZXIuYWxsb2NUZXh0dXJlVW5pdCgpO1xcblxcblxcdFxcdHJldHVybiByO1xcblxcblxcdH1cXG5cXG5cXHQvLyAtLS0gU2V0dGVycyAtLS1cXG5cXG5cXHQvLyBOb3RlOiBEZWZpbmluZyB0aGVzZSBtZXRob2RzIGV4dGVybmFsbHksIGJlY2F1c2UgdGhleSBjb21lIGluIGEgYnVuY2hcXG5cXHQvLyBhbmQgdGhpcyB3YXkgdGhlaXIgbmFtZXMgbWluaWZ5LlxcblxcblxcdC8vIFNpbmdsZSBzY2FsYXJcXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZTFmKCBnbCwgdiApIHtcXG5cXG5cXHRcXHRnbC51bmlmb3JtMWYoIHRoaXMuYWRkciwgdiApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZTFpKCBnbCwgdiApIHtcXG5cXG5cXHRcXHRnbC51bmlmb3JtMWkoIHRoaXMuYWRkciwgdiApO1xcblxcblxcdH1cXG5cXG5cXHQvLyBTaW5nbGUgZmxvYXQgdmVjdG9yIChmcm9tIGZsYXQgYXJyYXkgb3IgVEhSRUUuVmVjdG9yTilcXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZTJmdiggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0aWYgKCB2LnggPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRnbC51bmlmb3JtMmZ2KCB0aGlzLmFkZHIsIHYgKTtcXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdGdsLnVuaWZvcm0yZiggdGhpcy5hZGRyLCB2LngsIHYueSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gc2V0VmFsdWUzZnYoIGdsLCB2ICkge1xcblxcblxcdFxcdGlmICggdi54ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0Z2wudW5pZm9ybTNmKCB0aGlzLmFkZHIsIHYueCwgdi55LCB2LnogKTtcXG5cXG5cXHRcXHR9IGVsc2UgaWYgKCB2LnIgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRnbC51bmlmb3JtM2YoIHRoaXMuYWRkciwgdi5yLCB2LmcsIHYuYiApO1xcblxcblxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0Z2wudW5pZm9ybTNmdiggdGhpcy5hZGRyLCB2ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZTRmdiggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0aWYgKCB2LnggPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRnbC51bmlmb3JtNGZ2KCB0aGlzLmFkZHIsIHYgKTtcXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdCBnbC51bmlmb3JtNGYoIHRoaXMuYWRkciwgdi54LCB2LnksIHYueiwgdi53ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHQvLyBTaW5nbGUgbWF0cml4IChmcm9tIGZsYXQgYXJyYXkgb3IgTWF0cml4TilcXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZTJmbSggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0Z2wudW5pZm9ybU1hdHJpeDJmdiggdGhpcy5hZGRyLCBmYWxzZSwgdi5lbGVtZW50cyB8fCB2ICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIHNldFZhbHVlM2ZtKCBnbCwgdiApIHtcXG5cXG5cXHRcXHRpZiAoIHYuZWxlbWVudHMgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRnbC51bmlmb3JtTWF0cml4M2Z2KCB0aGlzLmFkZHIsIGZhbHNlLCB2ICk7XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRtYXQzYXJyYXkuc2V0KCB2LmVsZW1lbnRzICk7XFxuXFx0XFx0XFx0Z2wudW5pZm9ybU1hdHJpeDNmdiggdGhpcy5hZGRyLCBmYWxzZSwgbWF0M2FycmF5ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZTRmbSggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0aWYgKCB2LmVsZW1lbnRzID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0Z2wudW5pZm9ybU1hdHJpeDRmdiggdGhpcy5hZGRyLCBmYWxzZSwgdiApO1xcblxcblxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0bWF0NGFycmF5LnNldCggdi5lbGVtZW50cyApO1xcblxcdFxcdFxcdGdsLnVuaWZvcm1NYXRyaXg0ZnYoIHRoaXMuYWRkciwgZmFsc2UsIG1hdDRhcnJheSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0Ly8gU2luZ2xlIHRleHR1cmUgKDJEIC8gQ3ViZSlcXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZVQxKCBnbCwgdiwgcmVuZGVyZXIgKSB7XFxuXFxuXFx0XFx0dmFyIHVuaXQgPSByZW5kZXJlci5hbGxvY1RleHR1cmVVbml0KCk7XFxuXFx0XFx0Z2wudW5pZm9ybTFpKCB0aGlzLmFkZHIsIHVuaXQgKTtcXG5cXHRcXHRyZW5kZXJlci5zZXRUZXh0dXJlMkQoIHYgfHwgZW1wdHlUZXh0dXJlLCB1bml0ICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIHNldFZhbHVlVDYoIGdsLCB2LCByZW5kZXJlciApIHtcXG5cXG5cXHRcXHR2YXIgdW5pdCA9IHJlbmRlcmVyLmFsbG9jVGV4dHVyZVVuaXQoKTtcXG5cXHRcXHRnbC51bmlmb3JtMWkoIHRoaXMuYWRkciwgdW5pdCApO1xcblxcdFxcdHJlbmRlcmVyLnNldFRleHR1cmVDdWJlKCB2IHx8IGVtcHR5Q3ViZVRleHR1cmUsIHVuaXQgKTtcXG5cXG5cXHR9XFxuXFxuXFx0Ly8gSW50ZWdlciAvIEJvb2xlYW4gdmVjdG9ycyBvciBhcnJheXMgdGhlcmVvZiAoYWx3YXlzIGZsYXQgYXJyYXlzKVxcblxcblxcdGZ1bmN0aW9uIHNldFZhbHVlMml2KCBnbCwgdiApIHtcXG5cXG5cXHRcXHRnbC51bmlmb3JtMml2KCB0aGlzLmFkZHIsIHYgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gc2V0VmFsdWUzaXYoIGdsLCB2ICkge1xcblxcblxcdFxcdGdsLnVuaWZvcm0zaXYoIHRoaXMuYWRkciwgdiApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZTRpdiggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0Z2wudW5pZm9ybTRpdiggdGhpcy5hZGRyLCB2ICk7XFxuXFxuXFx0fVxcblxcblxcdC8vIEhlbHBlciB0byBwaWNrIHRoZSByaWdodCBzZXR0ZXIgZm9yIHRoZSBzaW5ndWxhciBjYXNlXFxuXFxuXFx0ZnVuY3Rpb24gZ2V0U2luZ3VsYXJTZXR0ZXIoIHR5cGUgKSB7XFxuXFxuXFx0XFx0c3dpdGNoICggdHlwZSApIHtcXG5cXG5cXHRcXHRcXHRjYXNlIDB4MTQwNjogcmV0dXJuIHNldFZhbHVlMWY7IC8vIEZMT0FUXFxuXFx0XFx0XFx0Y2FzZSAweDhiNTA6IHJldHVybiBzZXRWYWx1ZTJmdjsgLy8gX1ZFQzJcXG5cXHRcXHRcXHRjYXNlIDB4OGI1MTogcmV0dXJuIHNldFZhbHVlM2Z2OyAvLyBfVkVDM1xcblxcdFxcdFxcdGNhc2UgMHg4YjUyOiByZXR1cm4gc2V0VmFsdWU0ZnY7IC8vIF9WRUM0XFxuXFxuXFx0XFx0XFx0Y2FzZSAweDhiNWE6IHJldHVybiBzZXRWYWx1ZTJmbTsgLy8gX01BVDJcXG5cXHRcXHRcXHRjYXNlIDB4OGI1YjogcmV0dXJuIHNldFZhbHVlM2ZtOyAvLyBfTUFUM1xcblxcdFxcdFxcdGNhc2UgMHg4YjVjOiByZXR1cm4gc2V0VmFsdWU0Zm07IC8vIF9NQVQ0XFxuXFxuXFx0XFx0XFx0Y2FzZSAweDhiNWU6IGNhc2UgMHg4ZDY2OiByZXR1cm4gc2V0VmFsdWVUMTsgLy8gU0FNUExFUl8yRCwgU0FNUExFUl9FWFRFUk5BTF9PRVNcXG5cXHRcXHRcXHRjYXNlIDB4OGI2MDogcmV0dXJuIHNldFZhbHVlVDY7IC8vIFNBTVBMRVJfQ1VCRVxcblxcblxcdFxcdFxcdGNhc2UgMHgxNDA0OiBjYXNlIDB4OGI1NjogcmV0dXJuIHNldFZhbHVlMWk7IC8vIElOVCwgQk9PTFxcblxcdFxcdFxcdGNhc2UgMHg4YjUzOiBjYXNlIDB4OGI1NzogcmV0dXJuIHNldFZhbHVlMml2OyAvLyBfVkVDMlxcblxcdFxcdFxcdGNhc2UgMHg4YjU0OiBjYXNlIDB4OGI1ODogcmV0dXJuIHNldFZhbHVlM2l2OyAvLyBfVkVDM1xcblxcdFxcdFxcdGNhc2UgMHg4YjU1OiBjYXNlIDB4OGI1OTogcmV0dXJuIHNldFZhbHVlNGl2OyAvLyBfVkVDNFxcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0Ly8gQXJyYXkgb2Ygc2NhbGFyc1xcblxcblxcdGZ1bmN0aW9uIHNldFZhbHVlMWZ2KCBnbCwgdiApIHtcXG5cXG5cXHRcXHRnbC51bmlmb3JtMWZ2KCB0aGlzLmFkZHIsIHYgKTtcXG5cXG5cXHR9XFxuXFx0ZnVuY3Rpb24gc2V0VmFsdWUxaXYoIGdsLCB2ICkge1xcblxcblxcdFxcdGdsLnVuaWZvcm0xaXYoIHRoaXMuYWRkciwgdiApO1xcblxcblxcdH1cXG5cXG5cXHQvLyBBcnJheSBvZiB2ZWN0b3JzIChmbGF0IG9yIGZyb20gVEhSRUUgY2xhc3NlcylcXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZVYyYSggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0Z2wudW5pZm9ybTJmdiggdGhpcy5hZGRyLCBmbGF0dGVuKCB2LCB0aGlzLnNpemUsIDIgKSApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZVYzYSggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0Z2wudW5pZm9ybTNmdiggdGhpcy5hZGRyLCBmbGF0dGVuKCB2LCB0aGlzLnNpemUsIDMgKSApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZVY0YSggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0Z2wudW5pZm9ybTRmdiggdGhpcy5hZGRyLCBmbGF0dGVuKCB2LCB0aGlzLnNpemUsIDQgKSApO1xcblxcblxcdH1cXG5cXG5cXHQvLyBBcnJheSBvZiBtYXRyaWNlcyAoZmxhdCBvciBmcm9tIFRIUkVFIGNsYXNlcylcXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZU0yYSggZ2wsIHYgKSB7XFxuXFxuXFx0XFx0Z2wudW5pZm9ybU1hdHJpeDJmdiggdGhpcy5hZGRyLCBmYWxzZSwgZmxhdHRlbiggdiwgdGhpcy5zaXplLCA0ICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gc2V0VmFsdWVNM2EoIGdsLCB2ICkge1xcblxcblxcdFxcdGdsLnVuaWZvcm1NYXRyaXgzZnYoIHRoaXMuYWRkciwgZmFsc2UsIGZsYXR0ZW4oIHYsIHRoaXMuc2l6ZSwgOSApICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIHNldFZhbHVlTTRhKCBnbCwgdiApIHtcXG5cXG5cXHRcXHRnbC51bmlmb3JtTWF0cml4NGZ2KCB0aGlzLmFkZHIsIGZhbHNlLCBmbGF0dGVuKCB2LCB0aGlzLnNpemUsIDE2ICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0Ly8gQXJyYXkgb2YgdGV4dHVyZXMgKDJEIC8gQ3ViZSlcXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZVQxYSggZ2wsIHYsIHJlbmRlcmVyICkge1xcblxcblxcdFxcdHZhciBuID0gdi5sZW5ndGgsXFxuXFx0XFx0XFx0dW5pdHMgPSBhbGxvY1RleFVuaXRzKCByZW5kZXJlciwgbiApO1xcblxcblxcdFxcdGdsLnVuaWZvcm0xaXYoIHRoaXMuYWRkciwgdW5pdHMgKTtcXG5cXG5cXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0cmVuZGVyZXIuc2V0VGV4dHVyZTJEKCB2WyBpIF0gfHwgZW1wdHlUZXh0dXJlLCB1bml0c1sgaSBdICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBzZXRWYWx1ZVQ2YSggZ2wsIHYsIHJlbmRlcmVyICkge1xcblxcblxcdFxcdHZhciBuID0gdi5sZW5ndGgsXFxuXFx0XFx0XFx0dW5pdHMgPSBhbGxvY1RleFVuaXRzKCByZW5kZXJlciwgbiApO1xcblxcblxcdFxcdGdsLnVuaWZvcm0xaXYoIHRoaXMuYWRkciwgdW5pdHMgKTtcXG5cXG5cXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0cmVuZGVyZXIuc2V0VGV4dHVyZUN1YmUoIHZbIGkgXSB8fCBlbXB0eUN1YmVUZXh0dXJlLCB1bml0c1sgaSBdICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHQvLyBIZWxwZXIgdG8gcGljayB0aGUgcmlnaHQgc2V0dGVyIGZvciBhIHB1cmUgKGJvdHRvbS1sZXZlbCkgYXJyYXlcXG5cXG5cXHRmdW5jdGlvbiBnZXRQdXJlQXJyYXlTZXR0ZXIoIHR5cGUgKSB7XFxuXFxuXFx0XFx0c3dpdGNoICggdHlwZSApIHtcXG5cXG5cXHRcXHRcXHRjYXNlIDB4MTQwNjogcmV0dXJuIHNldFZhbHVlMWZ2OyAvLyBGTE9BVFxcblxcdFxcdFxcdGNhc2UgMHg4YjUwOiByZXR1cm4gc2V0VmFsdWVWMmE7IC8vIF9WRUMyXFxuXFx0XFx0XFx0Y2FzZSAweDhiNTE6IHJldHVybiBzZXRWYWx1ZVYzYTsgLy8gX1ZFQzNcXG5cXHRcXHRcXHRjYXNlIDB4OGI1MjogcmV0dXJuIHNldFZhbHVlVjRhOyAvLyBfVkVDNFxcblxcblxcdFxcdFxcdGNhc2UgMHg4YjVhOiByZXR1cm4gc2V0VmFsdWVNMmE7IC8vIF9NQVQyXFxuXFx0XFx0XFx0Y2FzZSAweDhiNWI6IHJldHVybiBzZXRWYWx1ZU0zYTsgLy8gX01BVDNcXG5cXHRcXHRcXHRjYXNlIDB4OGI1YzogcmV0dXJuIHNldFZhbHVlTTRhOyAvLyBfTUFUNFxcblxcblxcdFxcdFxcdGNhc2UgMHg4YjVlOiByZXR1cm4gc2V0VmFsdWVUMWE7IC8vIFNBTVBMRVJfMkRcXG5cXHRcXHRcXHRjYXNlIDB4OGI2MDogcmV0dXJuIHNldFZhbHVlVDZhOyAvLyBTQU1QTEVSX0NVQkVcXG5cXG5cXHRcXHRcXHRjYXNlIDB4MTQwNDogY2FzZSAweDhiNTY6IHJldHVybiBzZXRWYWx1ZTFpdjsgLy8gSU5ULCBCT09MXFxuXFx0XFx0XFx0Y2FzZSAweDhiNTM6IGNhc2UgMHg4YjU3OiByZXR1cm4gc2V0VmFsdWUyaXY7IC8vIF9WRUMyXFxuXFx0XFx0XFx0Y2FzZSAweDhiNTQ6IGNhc2UgMHg4YjU4OiByZXR1cm4gc2V0VmFsdWUzaXY7IC8vIF9WRUMzXFxuXFx0XFx0XFx0Y2FzZSAweDhiNTU6IGNhc2UgMHg4YjU5OiByZXR1cm4gc2V0VmFsdWU0aXY7IC8vIF9WRUM0XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHQvLyAtLS0gVW5pZm9ybSBDbGFzc2VzIC0tLVxcblxcblxcdGZ1bmN0aW9uIFNpbmdsZVVuaWZvcm0oIGlkLCBhY3RpdmVJbmZvLCBhZGRyICkge1xcblxcblxcdFxcdHRoaXMuaWQgPSBpZDtcXG5cXHRcXHR0aGlzLmFkZHIgPSBhZGRyO1xcblxcdFxcdHRoaXMuc2V0VmFsdWUgPSBnZXRTaW5ndWxhclNldHRlciggYWN0aXZlSW5mby50eXBlICk7XFxuXFxuXFx0XFx0Ly8gdGhpcy5wYXRoID0gYWN0aXZlSW5mby5uYW1lOyAvLyBERUJVR1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBQdXJlQXJyYXlVbmlmb3JtKCBpZCwgYWN0aXZlSW5mbywgYWRkciApIHtcXG5cXG5cXHRcXHR0aGlzLmlkID0gaWQ7XFxuXFx0XFx0dGhpcy5hZGRyID0gYWRkcjtcXG5cXHRcXHR0aGlzLnNpemUgPSBhY3RpdmVJbmZvLnNpemU7XFxuXFx0XFx0dGhpcy5zZXRWYWx1ZSA9IGdldFB1cmVBcnJheVNldHRlciggYWN0aXZlSW5mby50eXBlICk7XFxuXFxuXFx0XFx0Ly8gdGhpcy5wYXRoID0gYWN0aXZlSW5mby5uYW1lOyAvLyBERUJVR1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBTdHJ1Y3R1cmVkVW5pZm9ybSggaWQgKSB7XFxuXFxuXFx0XFx0dGhpcy5pZCA9IGlkO1xcblxcblxcdFxcdFVuaWZvcm1Db250YWluZXIuY2FsbCggdGhpcyApOyAvLyBtaXgtaW5cXG5cXG5cXHR9XFxuXFxuXFx0U3RydWN0dXJlZFVuaWZvcm0ucHJvdG90eXBlLnNldFZhbHVlID0gZnVuY3Rpb24gKCBnbCwgdmFsdWUgKSB7XFxuXFxuXFx0XFx0Ly8gTm90ZTogRG9uJ3QgbmVlZCBhbiBleHRyYSAncmVuZGVyZXInIHBhcmFtZXRlciwgc2luY2Ugc2FtcGxlcnNcXG5cXHRcXHQvLyBhcmUgbm90IGFsbG93ZWQgaW4gc3RydWN0dXJlZCB1bmlmb3Jtcy5cXG5cXG5cXHRcXHR2YXIgc2VxID0gdGhpcy5zZXE7XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gc2VxLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdSA9IHNlcVsgaSBdO1xcblxcdFxcdFxcdHUuc2V0VmFsdWUoIGdsLCB2YWx1ZVsgdS5pZCBdICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH07XFxuXFxuXFx0Ly8gLS0tIFRvcC1sZXZlbCAtLS1cXG5cXG5cXHQvLyBQYXJzZXIgLSBidWlsZHMgdXAgdGhlIHByb3BlcnR5IHRyZWUgZnJvbSB0aGUgcGF0aCBzdHJpbmdzXFxuXFxuXFx0dmFyIFJlUGF0aFBhcnQgPSAvKFtcXFxcd1xcXFxkX10rKShcXFxcXSk/KFxcXFxbfFxcXFwuKT8vZztcXG5cXG5cXHQvLyBleHRyYWN0c1xcblxcdC8vIFxcdC0gdGhlIGlkZW50aWZpZXIgKG1lbWJlciBuYW1lIG9yIGFycmF5IGluZGV4KVxcblxcdC8vICAtIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHJpZ2h0IGJyYWNrZXQgKGZvdW5kIHdoZW4gYXJyYXkgaW5kZXgpXFxuXFx0Ly8gIC0gZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgbGVmdCBicmFja2V0IG9yIGRvdCAodHlwZSBvZiBzdWJzY3JpcHQpXFxuXFx0Ly9cXG5cXHQvLyBOb3RlOiBUaGVzZSBwb3J0aW9ucyBjYW4gYmUgcmVhZCBpbiBhIG5vbi1vdmVybGFwcGluZyBmYXNoaW9uIGFuZFxcblxcdC8vIGFsbG93IHN0cmFpZ2h0Zm9yd2FyZCBwYXJzaW5nIG9mIHRoZSBoaWVyYXJjaHkgdGhhdCBXZWJHTCBlbmNvZGVzXFxuXFx0Ly8gaW4gdGhlIHVuaWZvcm0gbmFtZXMuXFxuXFxuXFx0ZnVuY3Rpb24gYWRkVW5pZm9ybSggY29udGFpbmVyLCB1bmlmb3JtT2JqZWN0ICkge1xcblxcblxcdFxcdGNvbnRhaW5lci5zZXEucHVzaCggdW5pZm9ybU9iamVjdCApO1xcblxcdFxcdGNvbnRhaW5lci5tYXBbIHVuaWZvcm1PYmplY3QuaWQgXSA9IHVuaWZvcm1PYmplY3Q7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIHBhcnNlVW5pZm9ybSggYWN0aXZlSW5mbywgYWRkciwgY29udGFpbmVyICkge1xcblxcblxcdFxcdHZhciBwYXRoID0gYWN0aXZlSW5mby5uYW1lLFxcblxcdFxcdFxcdHBhdGhMZW5ndGggPSBwYXRoLmxlbmd0aDtcXG5cXG5cXHRcXHQvLyByZXNldCBSZWdFeHAgb2JqZWN0LCBiZWNhdXNlIG9mIHRoZSBlYXJseSBleGl0IG9mIGEgcHJldmlvdXMgcnVuXFxuXFx0XFx0UmVQYXRoUGFydC5sYXN0SW5kZXggPSAwO1xcblxcblxcdFxcdGZvciAoIDsgOyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbWF0Y2ggPSBSZVBhdGhQYXJ0LmV4ZWMoIHBhdGggKSxcXG5cXHRcXHRcXHRcXHRtYXRjaEVuZCA9IFJlUGF0aFBhcnQubGFzdEluZGV4LFxcblxcblxcdFxcdFxcdFxcdGlkID0gbWF0Y2hbIDEgXSxcXG5cXHRcXHRcXHRcXHRpZElzSW5kZXggPSBtYXRjaFsgMiBdID09PSAnXScsXFxuXFx0XFx0XFx0XFx0c3Vic2NyaXB0ID0gbWF0Y2hbIDMgXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGlkSXNJbmRleCApIGlkID0gaWQgfCAwOyAvLyBjb252ZXJ0IHRvIGludGVnZXJcXG5cXG5cXHRcXHRcXHRpZiAoIHN1YnNjcmlwdCA9PT0gdW5kZWZpbmVkIHx8IHN1YnNjcmlwdCA9PT0gJ1snICYmIG1hdGNoRW5kICsgMiA9PT0gcGF0aExlbmd0aCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBiYXJlIG5hbWUgb3IgXFxcInB1cmVcXFwiIGJvdHRvbS1sZXZlbCBhcnJheSBcXFwiWzBdXFxcIiBzdWZmaXhcXG5cXG5cXHRcXHRcXHRcXHRhZGRVbmlmb3JtKCBjb250YWluZXIsIHN1YnNjcmlwdCA9PT0gdW5kZWZpbmVkID9cXG5cXHRcXHRcXHRcXHRcXHRuZXcgU2luZ2xlVW5pZm9ybSggaWQsIGFjdGl2ZUluZm8sIGFkZHIgKSA6XFxuXFx0XFx0XFx0XFx0XFx0bmV3IFB1cmVBcnJheVVuaWZvcm0oIGlkLCBhY3RpdmVJbmZvLCBhZGRyICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdC8vIHN0ZXAgaW50byBpbm5lciBub2RlIC8gY3JlYXRlIGl0IGluIGNhc2UgaXQgZG9lc24ndCBleGlzdFxcblxcblxcdFxcdFxcdFxcdHZhciBtYXAgPSBjb250YWluZXIubWFwLCBuZXh0ID0gbWFwWyBpZCBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggbmV4dCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdG5leHQgPSBuZXcgU3RydWN0dXJlZFVuaWZvcm0oIGlkICk7XFxuXFx0XFx0XFx0XFx0XFx0YWRkVW5pZm9ybSggY29udGFpbmVyLCBuZXh0ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGNvbnRhaW5lciA9IG5leHQ7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0Ly8gUm9vdCBDb250YWluZXJcXG5cXG5cXHRmdW5jdGlvbiBXZWJHTFVuaWZvcm1zKCBnbCwgcHJvZ3JhbSwgcmVuZGVyZXIgKSB7XFxuXFxuXFx0XFx0VW5pZm9ybUNvbnRhaW5lci5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xcblxcblxcdFxcdHZhciBuID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlciggcHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1TICk7XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW5mbyA9IGdsLmdldEFjdGl2ZVVuaWZvcm0oIHByb2dyYW0sIGkgKSxcXG5cXHRcXHRcXHRcXHRwYXRoID0gaW5mby5uYW1lLFxcblxcdFxcdFxcdFxcdGFkZHIgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sIHBhdGggKTtcXG5cXG5cXHRcXHRcXHRwYXJzZVVuaWZvcm0oIGluZm8sIGFkZHIsIHRoaXMgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdFdlYkdMVW5pZm9ybXMucHJvdG90eXBlLnNldFZhbHVlID0gZnVuY3Rpb24gKCBnbCwgbmFtZSwgdmFsdWUgKSB7XFxuXFxuXFx0XFx0dmFyIHUgPSB0aGlzLm1hcFsgbmFtZSBdO1xcblxcblxcdFxcdGlmICggdSAhPT0gdW5kZWZpbmVkICkgdS5zZXRWYWx1ZSggZ2wsIHZhbHVlLCB0aGlzLnJlbmRlcmVyICk7XFxuXFxuXFx0fTtcXG5cXG5cXHRXZWJHTFVuaWZvcm1zLnByb3RvdHlwZS5zZXRPcHRpb25hbCA9IGZ1bmN0aW9uICggZ2wsIG9iamVjdCwgbmFtZSApIHtcXG5cXG5cXHRcXHR2YXIgdiA9IG9iamVjdFsgbmFtZSBdO1xcblxcblxcdFxcdGlmICggdiAhPT0gdW5kZWZpbmVkICkgdGhpcy5zZXRWYWx1ZSggZ2wsIG5hbWUsIHYgKTtcXG5cXG5cXHR9O1xcblxcblxcblxcdC8vIFN0YXRpYyBpbnRlcmZhY2VcXG5cXG5cXHRXZWJHTFVuaWZvcm1zLnVwbG9hZCA9IGZ1bmN0aW9uICggZ2wsIHNlcSwgdmFsdWVzLCByZW5kZXJlciApIHtcXG5cXG5cXHRcXHRmb3IgKCB2YXIgaSA9IDAsIG4gPSBzZXEubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdHZhciB1ID0gc2VxWyBpIF0sXFxuXFx0XFx0XFx0XFx0diA9IHZhbHVlc1sgdS5pZCBdO1xcblxcblxcdFxcdFxcdGlmICggdi5uZWVkc1VwZGF0ZSAhPT0gZmFsc2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbm90ZTogYWx3YXlzIHVwZGF0aW5nIHdoZW4gLm5lZWRzVXBkYXRlIGlzIHVuZGVmaW5lZFxcblxcdFxcdFxcdFxcdHUuc2V0VmFsdWUoIGdsLCB2LnZhbHVlLCByZW5kZXJlciApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0fTtcXG5cXG5cXHRXZWJHTFVuaWZvcm1zLnNlcVdpdGhWYWx1ZSA9IGZ1bmN0aW9uICggc2VxLCB2YWx1ZXMgKSB7XFxuXFxuXFx0XFx0dmFyIHIgPSBbXTtcXG5cXG5cXHRcXHRmb3IgKCB2YXIgaSA9IDAsIG4gPSBzZXEubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdHZhciB1ID0gc2VxWyBpIF07XFxuXFx0XFx0XFx0aWYgKCB1LmlkIGluIHZhbHVlcyApIHIucHVzaCggdSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gcjtcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0dmFyIENvbG9yS2V5d29yZHMgPSB7ICdhbGljZWJsdWUnOiAweEYwRjhGRiwgJ2FudGlxdWV3aGl0ZSc6IDB4RkFFQkQ3LCAnYXF1YSc6IDB4MDBGRkZGLCAnYXF1YW1hcmluZSc6IDB4N0ZGRkQ0LCAnYXp1cmUnOiAweEYwRkZGRixcXG5cXHRcXHQnYmVpZ2UnOiAweEY1RjVEQywgJ2Jpc3F1ZSc6IDB4RkZFNEM0LCAnYmxhY2snOiAweDAwMDAwMCwgJ2JsYW5jaGVkYWxtb25kJzogMHhGRkVCQ0QsICdibHVlJzogMHgwMDAwRkYsICdibHVldmlvbGV0JzogMHg4QTJCRTIsXFxuXFx0XFx0J2Jyb3duJzogMHhBNTJBMkEsICdidXJseXdvb2QnOiAweERFQjg4NywgJ2NhZGV0Ymx1ZSc6IDB4NUY5RUEwLCAnY2hhcnRyZXVzZSc6IDB4N0ZGRjAwLCAnY2hvY29sYXRlJzogMHhEMjY5MUUsICdjb3JhbCc6IDB4RkY3RjUwLFxcblxcdFxcdCdjb3JuZmxvd2VyYmx1ZSc6IDB4NjQ5NUVELCAnY29ybnNpbGsnOiAweEZGRjhEQywgJ2NyaW1zb24nOiAweERDMTQzQywgJ2N5YW4nOiAweDAwRkZGRiwgJ2RhcmtibHVlJzogMHgwMDAwOEIsICdkYXJrY3lhbic6IDB4MDA4QjhCLFxcblxcdFxcdCdkYXJrZ29sZGVucm9kJzogMHhCODg2MEIsICdkYXJrZ3JheSc6IDB4QTlBOUE5LCAnZGFya2dyZWVuJzogMHgwMDY0MDAsICdkYXJrZ3JleSc6IDB4QTlBOUE5LCAnZGFya2toYWtpJzogMHhCREI3NkIsICdkYXJrbWFnZW50YSc6IDB4OEIwMDhCLFxcblxcdFxcdCdkYXJrb2xpdmVncmVlbic6IDB4NTU2QjJGLCAnZGFya29yYW5nZSc6IDB4RkY4QzAwLCAnZGFya29yY2hpZCc6IDB4OTkzMkNDLCAnZGFya3JlZCc6IDB4OEIwMDAwLCAnZGFya3NhbG1vbic6IDB4RTk5NjdBLCAnZGFya3NlYWdyZWVuJzogMHg4RkJDOEYsXFxuXFx0XFx0J2RhcmtzbGF0ZWJsdWUnOiAweDQ4M0Q4QiwgJ2RhcmtzbGF0ZWdyYXknOiAweDJGNEY0RiwgJ2RhcmtzbGF0ZWdyZXknOiAweDJGNEY0RiwgJ2Rhcmt0dXJxdW9pc2UnOiAweDAwQ0VEMSwgJ2Rhcmt2aW9sZXQnOiAweDk0MDBEMyxcXG5cXHRcXHQnZGVlcHBpbmsnOiAweEZGMTQ5MywgJ2RlZXBza3libHVlJzogMHgwMEJGRkYsICdkaW1ncmF5JzogMHg2OTY5NjksICdkaW1ncmV5JzogMHg2OTY5NjksICdkb2RnZXJibHVlJzogMHgxRTkwRkYsICdmaXJlYnJpY2snOiAweEIyMjIyMixcXG5cXHRcXHQnZmxvcmFsd2hpdGUnOiAweEZGRkFGMCwgJ2ZvcmVzdGdyZWVuJzogMHgyMjhCMjIsICdmdWNoc2lhJzogMHhGRjAwRkYsICdnYWluc2Jvcm8nOiAweERDRENEQywgJ2dob3N0d2hpdGUnOiAweEY4RjhGRiwgJ2dvbGQnOiAweEZGRDcwMCxcXG5cXHRcXHQnZ29sZGVucm9kJzogMHhEQUE1MjAsICdncmF5JzogMHg4MDgwODAsICdncmVlbic6IDB4MDA4MDAwLCAnZ3JlZW55ZWxsb3cnOiAweEFERkYyRiwgJ2dyZXknOiAweDgwODA4MCwgJ2hvbmV5ZGV3JzogMHhGMEZGRjAsICdob3RwaW5rJzogMHhGRjY5QjQsXFxuXFx0XFx0J2luZGlhbnJlZCc6IDB4Q0Q1QzVDLCAnaW5kaWdvJzogMHg0QjAwODIsICdpdm9yeSc6IDB4RkZGRkYwLCAna2hha2knOiAweEYwRTY4QywgJ2xhdmVuZGVyJzogMHhFNkU2RkEsICdsYXZlbmRlcmJsdXNoJzogMHhGRkYwRjUsICdsYXduZ3JlZW4nOiAweDdDRkMwMCxcXG5cXHRcXHQnbGVtb25jaGlmZm9uJzogMHhGRkZBQ0QsICdsaWdodGJsdWUnOiAweEFERDhFNiwgJ2xpZ2h0Y29yYWwnOiAweEYwODA4MCwgJ2xpZ2h0Y3lhbic6IDB4RTBGRkZGLCAnbGlnaHRnb2xkZW5yb2R5ZWxsb3cnOiAweEZBRkFEMiwgJ2xpZ2h0Z3JheSc6IDB4RDNEM0QzLFxcblxcdFxcdCdsaWdodGdyZWVuJzogMHg5MEVFOTAsICdsaWdodGdyZXknOiAweEQzRDNEMywgJ2xpZ2h0cGluayc6IDB4RkZCNkMxLCAnbGlnaHRzYWxtb24nOiAweEZGQTA3QSwgJ2xpZ2h0c2VhZ3JlZW4nOiAweDIwQjJBQSwgJ2xpZ2h0c2t5Ymx1ZSc6IDB4ODdDRUZBLFxcblxcdFxcdCdsaWdodHNsYXRlZ3JheSc6IDB4Nzc4ODk5LCAnbGlnaHRzbGF0ZWdyZXknOiAweDc3ODg5OSwgJ2xpZ2h0c3RlZWxibHVlJzogMHhCMEM0REUsICdsaWdodHllbGxvdyc6IDB4RkZGRkUwLCAnbGltZSc6IDB4MDBGRjAwLCAnbGltZWdyZWVuJzogMHgzMkNEMzIsXFxuXFx0XFx0J2xpbmVuJzogMHhGQUYwRTYsICdtYWdlbnRhJzogMHhGRjAwRkYsICdtYXJvb24nOiAweDgwMDAwMCwgJ21lZGl1bWFxdWFtYXJpbmUnOiAweDY2Q0RBQSwgJ21lZGl1bWJsdWUnOiAweDAwMDBDRCwgJ21lZGl1bW9yY2hpZCc6IDB4QkE1NUQzLFxcblxcdFxcdCdtZWRpdW1wdXJwbGUnOiAweDkzNzBEQiwgJ21lZGl1bXNlYWdyZWVuJzogMHgzQ0IzNzEsICdtZWRpdW1zbGF0ZWJsdWUnOiAweDdCNjhFRSwgJ21lZGl1bXNwcmluZ2dyZWVuJzogMHgwMEZBOUEsICdtZWRpdW10dXJxdW9pc2UnOiAweDQ4RDFDQyxcXG5cXHRcXHQnbWVkaXVtdmlvbGV0cmVkJzogMHhDNzE1ODUsICdtaWRuaWdodGJsdWUnOiAweDE5MTk3MCwgJ21pbnRjcmVhbSc6IDB4RjVGRkZBLCAnbWlzdHlyb3NlJzogMHhGRkU0RTEsICdtb2NjYXNpbic6IDB4RkZFNEI1LCAnbmF2YWpvd2hpdGUnOiAweEZGREVBRCxcXG5cXHRcXHQnbmF2eSc6IDB4MDAwMDgwLCAnb2xkbGFjZSc6IDB4RkRGNUU2LCAnb2xpdmUnOiAweDgwODAwMCwgJ29saXZlZHJhYic6IDB4NkI4RTIzLCAnb3JhbmdlJzogMHhGRkE1MDAsICdvcmFuZ2VyZWQnOiAweEZGNDUwMCwgJ29yY2hpZCc6IDB4REE3MEQ2LFxcblxcdFxcdCdwYWxlZ29sZGVucm9kJzogMHhFRUU4QUEsICdwYWxlZ3JlZW4nOiAweDk4RkI5OCwgJ3BhbGV0dXJxdW9pc2UnOiAweEFGRUVFRSwgJ3BhbGV2aW9sZXRyZWQnOiAweERCNzA5MywgJ3BhcGF5YXdoaXAnOiAweEZGRUZENSwgJ3BlYWNocHVmZic6IDB4RkZEQUI5LFxcblxcdFxcdCdwZXJ1JzogMHhDRDg1M0YsICdwaW5rJzogMHhGRkMwQ0IsICdwbHVtJzogMHhEREEwREQsICdwb3dkZXJibHVlJzogMHhCMEUwRTYsICdwdXJwbGUnOiAweDgwMDA4MCwgJ3JlYmVjY2FwdXJwbGUnOiAweDY2MzM5OSwgJ3JlZCc6IDB4RkYwMDAwLCAncm9zeWJyb3duJzogMHhCQzhGOEYsXFxuXFx0XFx0J3JveWFsYmx1ZSc6IDB4NDE2OUUxLCAnc2FkZGxlYnJvd24nOiAweDhCNDUxMywgJ3NhbG1vbic6IDB4RkE4MDcyLCAnc2FuZHlicm93bic6IDB4RjRBNDYwLCAnc2VhZ3JlZW4nOiAweDJFOEI1NywgJ3NlYXNoZWxsJzogMHhGRkY1RUUsXFxuXFx0XFx0J3NpZW5uYSc6IDB4QTA1MjJELCAnc2lsdmVyJzogMHhDMEMwQzAsICdza3libHVlJzogMHg4N0NFRUIsICdzbGF0ZWJsdWUnOiAweDZBNUFDRCwgJ3NsYXRlZ3JheSc6IDB4NzA4MDkwLCAnc2xhdGVncmV5JzogMHg3MDgwOTAsICdzbm93JzogMHhGRkZBRkEsXFxuXFx0XFx0J3NwcmluZ2dyZWVuJzogMHgwMEZGN0YsICdzdGVlbGJsdWUnOiAweDQ2ODJCNCwgJ3Rhbic6IDB4RDJCNDhDLCAndGVhbCc6IDB4MDA4MDgwLCAndGhpc3RsZSc6IDB4RDhCRkQ4LCAndG9tYXRvJzogMHhGRjYzNDcsICd0dXJxdW9pc2UnOiAweDQwRTBEMCxcXG5cXHRcXHQndmlvbGV0JzogMHhFRTgyRUUsICd3aGVhdCc6IDB4RjVERUIzLCAnd2hpdGUnOiAweEZGRkZGRiwgJ3doaXRlc21va2UnOiAweEY1RjVGNSwgJ3llbGxvdyc6IDB4RkZGRjAwLCAneWVsbG93Z3JlZW4nOiAweDlBQ0QzMiB9O1xcblxcblxcdGZ1bmN0aW9uIENvbG9yKCByLCBnLCBiICkge1xcblxcblxcdFxcdGlmICggZyA9PT0gdW5kZWZpbmVkICYmIGIgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHQvLyByIGlzIFRIUkVFLkNvbG9yLCBoZXggb3Igc3RyaW5nXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuc2V0KCByICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB0aGlzLnNldFJHQiggciwgZywgYiApO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBDb2xvci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRpc0NvbG9yOiB0cnVlLFxcblxcblxcdFxcdHI6IDEsIGc6IDEsIGI6IDEsXFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdGlmICggdmFsdWUgJiYgdmFsdWUuaXNDb2xvciApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmNvcHkoIHZhbHVlICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnNldEhleCggdmFsdWUgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuc2V0U3R5bGUoIHZhbHVlICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0U2NhbGFyOiBmdW5jdGlvbiAoIHNjYWxhciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnIgPSBzY2FsYXI7XFxuXFx0XFx0XFx0dGhpcy5nID0gc2NhbGFyO1xcblxcdFxcdFxcdHRoaXMuYiA9IHNjYWxhcjtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEhleDogZnVuY3Rpb24gKCBoZXggKSB7XFxuXFxuXFx0XFx0XFx0aGV4ID0gTWF0aC5mbG9vciggaGV4ICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5yID0gKCBoZXggPj4gMTYgJiAyNTUgKSAvIDI1NTtcXG5cXHRcXHRcXHR0aGlzLmcgPSAoIGhleCA+PiA4ICYgMjU1ICkgLyAyNTU7XFxuXFx0XFx0XFx0dGhpcy5iID0gKCBoZXggJiAyNTUgKSAvIDI1NTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFJHQjogZnVuY3Rpb24gKCByLCBnLCBiICkge1xcblxcblxcdFxcdFxcdHRoaXMuciA9IHI7XFxuXFx0XFx0XFx0dGhpcy5nID0gZztcXG5cXHRcXHRcXHR0aGlzLmIgPSBiO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0SFNMOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gaHVlMnJnYiggcCwgcSwgdCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHQgPCAwICkgdCArPSAxO1xcblxcdFxcdFxcdFxcdGlmICggdCA+IDEgKSB0IC09IDE7XFxuXFx0XFx0XFx0XFx0aWYgKCB0IDwgMSAvIDYgKSByZXR1cm4gcCArICggcSAtIHAgKSAqIDYgKiB0O1xcblxcdFxcdFxcdFxcdGlmICggdCA8IDEgLyAyICkgcmV0dXJuIHE7XFxuXFx0XFx0XFx0XFx0aWYgKCB0IDwgMiAvIDMgKSByZXR1cm4gcCArICggcSAtIHAgKSAqIDYgKiAoIDIgLyAzIC0gdCApO1xcblxcdFxcdFxcdFxcdHJldHVybiBwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gc2V0SFNMKCBoLCBzLCBsICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGgscyxsIHJhbmdlcyBhcmUgaW4gMC4wIC0gMS4wXFxuXFx0XFx0XFx0XFx0aCA9IF9NYXRoLmV1Y2xpZGVhbk1vZHVsbyggaCwgMSApO1xcblxcdFxcdFxcdFxcdHMgPSBfTWF0aC5jbGFtcCggcywgMCwgMSApO1xcblxcdFxcdFxcdFxcdGwgPSBfTWF0aC5jbGFtcCggbCwgMCwgMSApO1xcblxcblxcdFxcdFxcdFxcdGlmICggcyA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnIgPSB0aGlzLmcgPSB0aGlzLmIgPSBsO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHAgPSBsIDw9IDAuNSA/IGwgKiAoIDEgKyBzICkgOiBsICsgcyAtICggbCAqIHMgKTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgcSA9ICggMiAqIGwgKSAtIHA7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5yID0gaHVlMnJnYiggcSwgcCwgaCArIDEgLyAzICk7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5nID0gaHVlMnJnYiggcSwgcCwgaCApO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuYiA9IGh1ZTJyZ2IoIHEsIHAsIGggLSAxIC8gMyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRzZXRTdHlsZTogZnVuY3Rpb24gKCBzdHlsZSApIHtcXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBoYW5kbGVBbHBoYSggc3RyaW5nICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggc3RyaW5nID09PSB1bmRlZmluZWQgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBwYXJzZUZsb2F0KCBzdHJpbmcgKSA8IDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAnICsgc3R5bGUgKyAnIHdpbGwgYmUgaWdub3JlZC4nICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXG5cXHRcXHRcXHR2YXIgbTtcXG5cXG5cXHRcXHRcXHRpZiAoIG0gPSAvXigoPzpyZ2J8aHNsKWE/KVxcXFwoXFxcXHMqKFteXFxcXCldKilcXFxcKS8uZXhlYyggc3R5bGUgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyByZ2IgLyBoc2xcXG5cXG5cXHRcXHRcXHRcXHR2YXIgY29sb3I7XFxuXFx0XFx0XFx0XFx0dmFyIG5hbWUgPSBtWyAxIF07XFxuXFx0XFx0XFx0XFx0dmFyIGNvbXBvbmVudHMgPSBtWyAyIF07XFxuXFxuXFx0XFx0XFx0XFx0c3dpdGNoICggbmFtZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdyZ2InOlxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ3JnYmEnOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggY29sb3IgPSAvXihcXFxcZCspXFxcXHMqLFxcXFxzKihcXFxcZCspXFxcXHMqLFxcXFxzKihcXFxcZCspXFxcXHMqKCxcXFxccyooWzAtOV0qXFxcXC4/WzAtOV0rKVxcXFxzKik/JC8uZXhlYyggY29tcG9uZW50cyApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIHJnYigyNTUsMCwwKSByZ2JhKDI1NSwwLDAsMC41KVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuciA9IE1hdGgubWluKCAyNTUsIHBhcnNlSW50KCBjb2xvclsgMSBdLCAxMCApICkgLyAyNTU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5nID0gTWF0aC5taW4oIDI1NSwgcGFyc2VJbnQoIGNvbG9yWyAyIF0sIDEwICkgKSAvIDI1NTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0aGlzLmIgPSBNYXRoLm1pbiggMjU1LCBwYXJzZUludCggY29sb3JbIDMgXSwgMTAgKSApIC8gMjU1O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGhhbmRsZUFscGhhKCBjb2xvclsgNSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggY29sb3IgPSAvXihcXFxcZCspXFxcXCVcXFxccyosXFxcXHMqKFxcXFxkKylcXFxcJVxcXFxzKixcXFxccyooXFxcXGQrKVxcXFwlXFxcXHMqKCxcXFxccyooWzAtOV0qXFxcXC4/WzAtOV0rKVxcXFxzKik/JC8uZXhlYyggY29tcG9uZW50cyApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIHJnYigxMDAlLDAlLDAlKSByZ2JhKDEwMCUsMCUsMCUsMC41KVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuciA9IE1hdGgubWluKCAxMDAsIHBhcnNlSW50KCBjb2xvclsgMSBdLCAxMCApICkgLyAxMDA7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5nID0gTWF0aC5taW4oIDEwMCwgcGFyc2VJbnQoIGNvbG9yWyAyIF0sIDEwICkgKSAvIDEwMDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0aGlzLmIgPSBNYXRoLm1pbiggMTAwLCBwYXJzZUludCggY29sb3JbIDMgXSwgMTAgKSApIC8gMTAwO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGhhbmRsZUFscGhhKCBjb2xvclsgNSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ2hzbCc6XFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnaHNsYSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBjb2xvciA9IC9eKFswLTldKlxcXFwuP1swLTldKylcXFxccyosXFxcXHMqKFxcXFxkKylcXFxcJVxcXFxzKixcXFxccyooXFxcXGQrKVxcXFwlXFxcXHMqKCxcXFxccyooWzAtOV0qXFxcXC4/WzAtOV0rKVxcXFxzKik/JC8uZXhlYyggY29tcG9uZW50cyApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIGhzbCgxMjAsNTAlLDUwJSkgaHNsYSgxMjAsNTAlLDUwJSwwLjUpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGggPSBwYXJzZUZsb2F0KCBjb2xvclsgMSBdICkgLyAzNjA7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIHMgPSBwYXJzZUludCggY29sb3JbIDIgXSwgMTAgKSAvIDEwMDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgbCA9IHBhcnNlSW50KCBjb2xvclsgMyBdLCAxMCApIC8gMTAwO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGhhbmRsZUFscGhhKCBjb2xvclsgNSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuc2V0SFNMKCBoLCBzLCBsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBtID0gL15cXFxcIyhbQS1GYS1mMC05XSspJC8uZXhlYyggc3R5bGUgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBoZXggY29sb3JcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaGV4ID0gbVsgMSBdO1xcblxcdFxcdFxcdFxcdHZhciBzaXplID0gaGV4Lmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHNpemUgPT09IDMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gI2ZmMFxcblxcdFxcdFxcdFxcdFxcdHRoaXMuciA9IHBhcnNlSW50KCBoZXguY2hhckF0KCAwICkgKyBoZXguY2hhckF0KCAwICksIDE2ICkgLyAyNTU7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5nID0gcGFyc2VJbnQoIGhleC5jaGFyQXQoIDEgKSArIGhleC5jaGFyQXQoIDEgKSwgMTYgKSAvIDI1NTtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmIgPSBwYXJzZUludCggaGV4LmNoYXJBdCggMiApICsgaGV4LmNoYXJBdCggMiApLCAxNiApIC8gMjU1O1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIHNpemUgPT09IDYgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gI2ZmMDAwMFxcblxcdFxcdFxcdFxcdFxcdHRoaXMuciA9IHBhcnNlSW50KCBoZXguY2hhckF0KCAwICkgKyBoZXguY2hhckF0KCAxICksIDE2ICkgLyAyNTU7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5nID0gcGFyc2VJbnQoIGhleC5jaGFyQXQoIDIgKSArIGhleC5jaGFyQXQoIDMgKSwgMTYgKSAvIDI1NTtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmIgPSBwYXJzZUludCggaGV4LmNoYXJBdCggNCApICsgaGV4LmNoYXJBdCggNSApLCAxNiApIC8gMjU1O1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBzdHlsZSAmJiBzdHlsZS5sZW5ndGggPiAwICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGNvbG9yIGtleXdvcmRzXFxuXFx0XFx0XFx0XFx0dmFyIGhleCA9IENvbG9yS2V5d29yZHNbIHN0eWxlIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBoZXggIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyByZWRcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnNldEhleCggaGV4ICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyB1bmtub3duIGNvbG9yXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQ29sb3I6IFVua25vd24gY29sb3IgJyArIHN0eWxlICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCB0aGlzLnIsIHRoaXMuZywgdGhpcy5iICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIGNvbG9yICkge1xcblxcblxcdFxcdFxcdHRoaXMuciA9IGNvbG9yLnI7XFxuXFx0XFx0XFx0dGhpcy5nID0gY29sb3IuZztcXG5cXHRcXHRcXHR0aGlzLmIgPSBjb2xvci5iO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weUdhbW1hVG9MaW5lYXI6IGZ1bmN0aW9uICggY29sb3IsIGdhbW1hRmFjdG9yICkge1xcblxcblxcdFxcdFxcdGlmICggZ2FtbWFGYWN0b3IgPT09IHVuZGVmaW5lZCApIGdhbW1hRmFjdG9yID0gMi4wO1xcblxcblxcdFxcdFxcdHRoaXMuciA9IE1hdGgucG93KCBjb2xvci5yLCBnYW1tYUZhY3RvciApO1xcblxcdFxcdFxcdHRoaXMuZyA9IE1hdGgucG93KCBjb2xvci5nLCBnYW1tYUZhY3RvciApO1xcblxcdFxcdFxcdHRoaXMuYiA9IE1hdGgucG93KCBjb2xvci5iLCBnYW1tYUZhY3RvciApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weUxpbmVhclRvR2FtbWE6IGZ1bmN0aW9uICggY29sb3IsIGdhbW1hRmFjdG9yICkge1xcblxcblxcdFxcdFxcdGlmICggZ2FtbWFGYWN0b3IgPT09IHVuZGVmaW5lZCApIGdhbW1hRmFjdG9yID0gMi4wO1xcblxcblxcdFxcdFxcdHZhciBzYWZlSW52ZXJzZSA9ICggZ2FtbWFGYWN0b3IgPiAwICkgPyAoIDEuMCAvIGdhbW1hRmFjdG9yICkgOiAxLjA7XFxuXFxuXFx0XFx0XFx0dGhpcy5yID0gTWF0aC5wb3coIGNvbG9yLnIsIHNhZmVJbnZlcnNlICk7XFxuXFx0XFx0XFx0dGhpcy5nID0gTWF0aC5wb3coIGNvbG9yLmcsIHNhZmVJbnZlcnNlICk7XFxuXFx0XFx0XFx0dGhpcy5iID0gTWF0aC5wb3coIGNvbG9yLmIsIHNhZmVJbnZlcnNlICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb252ZXJ0R2FtbWFUb0xpbmVhcjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciByID0gdGhpcy5yLCBnID0gdGhpcy5nLCBiID0gdGhpcy5iO1xcblxcblxcdFxcdFxcdHRoaXMuciA9IHIgKiByO1xcblxcdFxcdFxcdHRoaXMuZyA9IGcgKiBnO1xcblxcdFxcdFxcdHRoaXMuYiA9IGIgKiBiO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29udmVydExpbmVhclRvR2FtbWE6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnIgPSBNYXRoLnNxcnQoIHRoaXMuciApO1xcblxcdFxcdFxcdHRoaXMuZyA9IE1hdGguc3FydCggdGhpcy5nICk7XFxuXFx0XFx0XFx0dGhpcy5iID0gTWF0aC5zcXJ0KCB0aGlzLmIgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldEhleDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiAoIHRoaXMuciAqIDI1NSApIDw8IDE2IF4gKCB0aGlzLmcgKiAyNTUgKSA8PCA4IF4gKCB0aGlzLmIgKiAyNTUgKSA8PCAwO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0SGV4U3RyaW5nOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuICggJzAwMDAwMCcgKyB0aGlzLmdldEhleCgpLnRvU3RyaW5nKCAxNiApICkuc2xpY2UoIC0gNiApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0SFNMOiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdC8vIGgscyxsIHJhbmdlcyBhcmUgaW4gMC4wIC0gMS4wXFxuXFxuXFx0XFx0XFx0dmFyIGhzbCA9IG9wdGlvbmFsVGFyZ2V0IHx8IHsgaDogMCwgczogMCwgbDogMCB9O1xcblxcblxcdFxcdFxcdHZhciByID0gdGhpcy5yLCBnID0gdGhpcy5nLCBiID0gdGhpcy5iO1xcblxcblxcdFxcdFxcdHZhciBtYXggPSBNYXRoLm1heCggciwgZywgYiApO1xcblxcdFxcdFxcdHZhciBtaW4gPSBNYXRoLm1pbiggciwgZywgYiApO1xcblxcblxcdFxcdFxcdHZhciBodWUsIHNhdHVyYXRpb247XFxuXFx0XFx0XFx0dmFyIGxpZ2h0bmVzcyA9ICggbWluICsgbWF4ICkgLyAyLjA7XFxuXFxuXFx0XFx0XFx0aWYgKCBtaW4gPT09IG1heCApIHtcXG5cXG5cXHRcXHRcXHRcXHRodWUgPSAwO1xcblxcdFxcdFxcdFxcdHNhdHVyYXRpb24gPSAwO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGRlbHRhID0gbWF4IC0gbWluO1xcblxcblxcdFxcdFxcdFxcdHNhdHVyYXRpb24gPSBsaWdodG5lc3MgPD0gMC41ID8gZGVsdGEgLyAoIG1heCArIG1pbiApIDogZGVsdGEgLyAoIDIgLSBtYXggLSBtaW4gKTtcXG5cXG5cXHRcXHRcXHRcXHRzd2l0Y2ggKCBtYXggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSByOiBodWUgPSAoIGcgLSBiICkgLyBkZWx0YSArICggZyA8IGIgPyA2IDogMCApOyBicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRjYXNlIGc6IGh1ZSA9ICggYiAtIHIgKSAvIGRlbHRhICsgMjsgYnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSBiOiBodWUgPSAoIHIgLSBnICkgLyBkZWx0YSArIDQ7IGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRodWUgLz0gNjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aHNsLmggPSBodWU7XFxuXFx0XFx0XFx0aHNsLnMgPSBzYXR1cmF0aW9uO1xcblxcdFxcdFxcdGhzbC5sID0gbGlnaHRuZXNzO1xcblxcblxcdFxcdFxcdHJldHVybiBoc2w7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRTdHlsZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiAncmdiKCcgKyAoICggdGhpcy5yICogMjU1ICkgfCAwICkgKyAnLCcgKyAoICggdGhpcy5nICogMjU1ICkgfCAwICkgKyAnLCcgKyAoICggdGhpcy5iICogMjU1ICkgfCAwICkgKyAnKSc7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRvZmZzZXRIU0w6IGZ1bmN0aW9uICggaCwgcywgbCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaHNsID0gdGhpcy5nZXRIU0woKTtcXG5cXG5cXHRcXHRcXHRoc2wuaCArPSBoOyBoc2wucyArPSBzOyBoc2wubCArPSBsO1xcblxcblxcdFxcdFxcdHRoaXMuc2V0SFNMKCBoc2wuaCwgaHNsLnMsIGhzbC5sICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhZGQ6IGZ1bmN0aW9uICggY29sb3IgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5yICs9IGNvbG9yLnI7XFxuXFx0XFx0XFx0dGhpcy5nICs9IGNvbG9yLmc7XFxuXFx0XFx0XFx0dGhpcy5iICs9IGNvbG9yLmI7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhZGRDb2xvcnM6IGZ1bmN0aW9uICggY29sb3IxLCBjb2xvcjIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5yID0gY29sb3IxLnIgKyBjb2xvcjIucjtcXG5cXHRcXHRcXHR0aGlzLmcgPSBjb2xvcjEuZyArIGNvbG9yMi5nO1xcblxcdFxcdFxcdHRoaXMuYiA9IGNvbG9yMS5iICsgY29sb3IyLmI7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhZGRTY2FsYXI6IGZ1bmN0aW9uICggcyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnIgKz0gcztcXG5cXHRcXHRcXHR0aGlzLmcgKz0gcztcXG5cXHRcXHRcXHR0aGlzLmIgKz0gcztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHN1YjogZnVuY3Rpb24gKCBjb2xvciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnIgPSBNYXRoLm1heCggMCwgdGhpcy5yIC0gY29sb3IuciApO1xcblxcdFxcdFxcdHRoaXMuZyA9IE1hdGgubWF4KCAwLCB0aGlzLmcgLSBjb2xvci5nICk7XFxuXFx0XFx0XFx0dGhpcy5iID0gTWF0aC5tYXgoIDAsIHRoaXMuYiAtIGNvbG9yLmIgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG11bHRpcGx5OiBmdW5jdGlvbiAoIGNvbG9yICkge1xcblxcblxcdFxcdFxcdHRoaXMuciAqPSBjb2xvci5yO1xcblxcdFxcdFxcdHRoaXMuZyAqPSBjb2xvci5nO1xcblxcdFxcdFxcdHRoaXMuYiAqPSBjb2xvci5iO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bXVsdGlwbHlTY2FsYXI6IGZ1bmN0aW9uICggcyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnIgKj0gcztcXG5cXHRcXHRcXHR0aGlzLmcgKj0gcztcXG5cXHRcXHRcXHR0aGlzLmIgKj0gcztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGxlcnA6IGZ1bmN0aW9uICggY29sb3IsIGFscGhhICkge1xcblxcblxcdFxcdFxcdHRoaXMuciArPSAoIGNvbG9yLnIgLSB0aGlzLnIgKSAqIGFscGhhO1xcblxcdFxcdFxcdHRoaXMuZyArPSAoIGNvbG9yLmcgLSB0aGlzLmcgKSAqIGFscGhhO1xcblxcdFxcdFxcdHRoaXMuYiArPSAoIGNvbG9yLmIgLSB0aGlzLmIgKSAqIGFscGhhO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXF1YWxzOiBmdW5jdGlvbiAoIGMgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuICggYy5yID09PSB0aGlzLnIgKSAmJiAoIGMuZyA9PT0gdGhpcy5nICkgJiYgKCBjLmIgPT09IHRoaXMuYiApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZnJvbUFycmF5OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBvZmZzZXQgPT09IHVuZGVmaW5lZCApIG9mZnNldCA9IDA7XFxuXFxuXFx0XFx0XFx0dGhpcy5yID0gYXJyYXlbIG9mZnNldCBdO1xcblxcdFxcdFxcdHRoaXMuZyA9IGFycmF5WyBvZmZzZXQgKyAxIF07XFxuXFx0XFx0XFx0dGhpcy5iID0gYXJyYXlbIG9mZnNldCArIDIgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvQXJyYXk6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGFycmF5ID09PSB1bmRlZmluZWQgKSBhcnJheSA9IFtdO1xcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgXSA9IHRoaXMucjtcXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsgMSBdID0gdGhpcy5nO1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAyIF0gPSB0aGlzLmI7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGFycmF5O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dG9KU09OOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2V0SGV4KCk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBVbmlmb3JtcyBsaWJyYXJ5IGZvciBzaGFyZWQgd2ViZ2wgc2hhZGVyc1xcblxcdCAqL1xcblxcblxcdHZhciBVbmlmb3Jtc0xpYiA9IHtcXG5cXG5cXHRcXHRjb21tb246IHtcXG5cXG5cXHRcXHRcXHRkaWZmdXNlOiB7IHZhbHVlOiBuZXcgQ29sb3IoIDB4ZWVlZWVlICkgfSxcXG5cXHRcXHRcXHRvcGFjaXR5OiB7IHZhbHVlOiAxLjAgfSxcXG5cXG5cXHRcXHRcXHRtYXA6IHsgdmFsdWU6IG51bGwgfSxcXG5cXHRcXHRcXHR1dlRyYW5zZm9ybTogeyB2YWx1ZTogbmV3IE1hdHJpeDMoKSB9LFxcblxcblxcdFxcdFxcdGFscGhhTWFwOiB7IHZhbHVlOiBudWxsIH0sXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzcGVjdWxhcm1hcDoge1xcblxcblxcdFxcdFxcdHNwZWN1bGFyTWFwOiB7IHZhbHVlOiBudWxsIH0sXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRlbnZtYXA6IHtcXG5cXG5cXHRcXHRcXHRlbnZNYXA6IHsgdmFsdWU6IG51bGwgfSxcXG5cXHRcXHRcXHRmbGlwRW52TWFwOiB7IHZhbHVlOiAtIDEgfSxcXG5cXHRcXHRcXHRyZWZsZWN0aXZpdHk6IHsgdmFsdWU6IDEuMCB9LFxcblxcdFxcdFxcdHJlZnJhY3Rpb25SYXRpbzogeyB2YWx1ZTogMC45OCB9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhb21hcDoge1xcblxcblxcdFxcdFxcdGFvTWFwOiB7IHZhbHVlOiBudWxsIH0sXFxuXFx0XFx0XFx0YW9NYXBJbnRlbnNpdHk6IHsgdmFsdWU6IDEgfVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGlnaHRtYXA6IHtcXG5cXG5cXHRcXHRcXHRsaWdodE1hcDogeyB2YWx1ZTogbnVsbCB9LFxcblxcdFxcdFxcdGxpZ2h0TWFwSW50ZW5zaXR5OiB7IHZhbHVlOiAxIH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGVtaXNzaXZlbWFwOiB7XFxuXFxuXFx0XFx0XFx0ZW1pc3NpdmVNYXA6IHsgdmFsdWU6IG51bGwgfVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YnVtcG1hcDoge1xcblxcblxcdFxcdFxcdGJ1bXBNYXA6IHsgdmFsdWU6IG51bGwgfSxcXG5cXHRcXHRcXHRidW1wU2NhbGU6IHsgdmFsdWU6IDEgfVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bm9ybWFsbWFwOiB7XFxuXFxuXFx0XFx0XFx0bm9ybWFsTWFwOiB7IHZhbHVlOiBudWxsIH0sXFxuXFx0XFx0XFx0bm9ybWFsU2NhbGU6IHsgdmFsdWU6IG5ldyBWZWN0b3IyKCAxLCAxICkgfVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGlzcGxhY2VtZW50bWFwOiB7XFxuXFxuXFx0XFx0XFx0ZGlzcGxhY2VtZW50TWFwOiB7IHZhbHVlOiBudWxsIH0sXFxuXFx0XFx0XFx0ZGlzcGxhY2VtZW50U2NhbGU6IHsgdmFsdWU6IDEgfSxcXG5cXHRcXHRcXHRkaXNwbGFjZW1lbnRCaWFzOiB7IHZhbHVlOiAwIH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJvdWdobmVzc21hcDoge1xcblxcblxcdFxcdFxcdHJvdWdobmVzc01hcDogeyB2YWx1ZTogbnVsbCB9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtZXRhbG5lc3NtYXA6IHtcXG5cXG5cXHRcXHRcXHRtZXRhbG5lc3NNYXA6IHsgdmFsdWU6IG51bGwgfVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z3JhZGllbnRtYXA6IHtcXG5cXG5cXHRcXHRcXHRncmFkaWVudE1hcDogeyB2YWx1ZTogbnVsbCB9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmb2c6IHtcXG5cXG5cXHRcXHRcXHRmb2dEZW5zaXR5OiB7IHZhbHVlOiAwLjAwMDI1IH0sXFxuXFx0XFx0XFx0Zm9nTmVhcjogeyB2YWx1ZTogMSB9LFxcblxcdFxcdFxcdGZvZ0ZhcjogeyB2YWx1ZTogMjAwMCB9LFxcblxcdFxcdFxcdGZvZ0NvbG9yOiB7IHZhbHVlOiBuZXcgQ29sb3IoIDB4ZmZmZmZmICkgfVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bGlnaHRzOiB7XFxuXFxuXFx0XFx0XFx0YW1iaWVudExpZ2h0Q29sb3I6IHsgdmFsdWU6IFtdIH0sXFxuXFxuXFx0XFx0XFx0ZGlyZWN0aW9uYWxMaWdodHM6IHsgdmFsdWU6IFtdLCBwcm9wZXJ0aWVzOiB7XFxuXFx0XFx0XFx0XFx0ZGlyZWN0aW9uOiB7fSxcXG5cXHRcXHRcXHRcXHRjb2xvcjoge30sXFxuXFxuXFx0XFx0XFx0XFx0c2hhZG93OiB7fSxcXG5cXHRcXHRcXHRcXHRzaGFkb3dCaWFzOiB7fSxcXG5cXHRcXHRcXHRcXHRzaGFkb3dSYWRpdXM6IHt9LFxcblxcdFxcdFxcdFxcdHNoYWRvd01hcFNpemU6IHt9XFxuXFx0XFx0XFx0fSB9LFxcblxcblxcdFxcdFxcdGRpcmVjdGlvbmFsU2hhZG93TWFwOiB7IHZhbHVlOiBbXSB9LFxcblxcdFxcdFxcdGRpcmVjdGlvbmFsU2hhZG93TWF0cml4OiB7IHZhbHVlOiBbXSB9LFxcblxcblxcdFxcdFxcdHNwb3RMaWdodHM6IHsgdmFsdWU6IFtdLCBwcm9wZXJ0aWVzOiB7XFxuXFx0XFx0XFx0XFx0Y29sb3I6IHt9LFxcblxcdFxcdFxcdFxcdHBvc2l0aW9uOiB7fSxcXG5cXHRcXHRcXHRcXHRkaXJlY3Rpb246IHt9LFxcblxcdFxcdFxcdFxcdGRpc3RhbmNlOiB7fSxcXG5cXHRcXHRcXHRcXHRjb25lQ29zOiB7fSxcXG5cXHRcXHRcXHRcXHRwZW51bWJyYUNvczoge30sXFxuXFx0XFx0XFx0XFx0ZGVjYXk6IHt9LFxcblxcblxcdFxcdFxcdFxcdHNoYWRvdzoge30sXFxuXFx0XFx0XFx0XFx0c2hhZG93Qmlhczoge30sXFxuXFx0XFx0XFx0XFx0c2hhZG93UmFkaXVzOiB7fSxcXG5cXHRcXHRcXHRcXHRzaGFkb3dNYXBTaXplOiB7fVxcblxcdFxcdFxcdH0gfSxcXG5cXG5cXHRcXHRcXHRzcG90U2hhZG93TWFwOiB7IHZhbHVlOiBbXSB9LFxcblxcdFxcdFxcdHNwb3RTaGFkb3dNYXRyaXg6IHsgdmFsdWU6IFtdIH0sXFxuXFxuXFx0XFx0XFx0cG9pbnRMaWdodHM6IHsgdmFsdWU6IFtdLCBwcm9wZXJ0aWVzOiB7XFxuXFx0XFx0XFx0XFx0Y29sb3I6IHt9LFxcblxcdFxcdFxcdFxcdHBvc2l0aW9uOiB7fSxcXG5cXHRcXHRcXHRcXHRkZWNheToge30sXFxuXFx0XFx0XFx0XFx0ZGlzdGFuY2U6IHt9LFxcblxcblxcdFxcdFxcdFxcdHNoYWRvdzoge30sXFxuXFx0XFx0XFx0XFx0c2hhZG93Qmlhczoge30sXFxuXFx0XFx0XFx0XFx0c2hhZG93UmFkaXVzOiB7fSxcXG5cXHRcXHRcXHRcXHRzaGFkb3dNYXBTaXplOiB7fSxcXG5cXHRcXHRcXHRcXHRzaGFkb3dDYW1lcmFOZWFyOiB7fSxcXG5cXHRcXHRcXHRcXHRzaGFkb3dDYW1lcmFGYXI6IHt9XFxuXFx0XFx0XFx0fSB9LFxcblxcblxcdFxcdFxcdHBvaW50U2hhZG93TWFwOiB7IHZhbHVlOiBbXSB9LFxcblxcdFxcdFxcdHBvaW50U2hhZG93TWF0cml4OiB7IHZhbHVlOiBbXSB9LFxcblxcblxcdFxcdFxcdGhlbWlzcGhlcmVMaWdodHM6IHsgdmFsdWU6IFtdLCBwcm9wZXJ0aWVzOiB7XFxuXFx0XFx0XFx0XFx0ZGlyZWN0aW9uOiB7fSxcXG5cXHRcXHRcXHRcXHRza3lDb2xvcjoge30sXFxuXFx0XFx0XFx0XFx0Z3JvdW5kQ29sb3I6IHt9XFxuXFx0XFx0XFx0fSB9LFxcblxcblxcdFxcdFxcdC8vIFRPRE8gKGFiZWxuYXRpb24pOiBSZWN0QXJlYUxpZ2h0IEJSREYgZGF0YSBuZWVkcyB0byBiZSBtb3ZlZCBmcm9tIGV4YW1wbGUgdG8gbWFpbiBzcmNcXG5cXHRcXHRcXHRyZWN0QXJlYUxpZ2h0czogeyB2YWx1ZTogW10sIHByb3BlcnRpZXM6IHtcXG5cXHRcXHRcXHRcXHRjb2xvcjoge30sXFxuXFx0XFx0XFx0XFx0cG9zaXRpb246IHt9LFxcblxcdFxcdFxcdFxcdHdpZHRoOiB7fSxcXG5cXHRcXHRcXHRcXHRoZWlnaHQ6IHt9XFxuXFx0XFx0XFx0fSB9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwb2ludHM6IHtcXG5cXG5cXHRcXHRcXHRkaWZmdXNlOiB7IHZhbHVlOiBuZXcgQ29sb3IoIDB4ZWVlZWVlICkgfSxcXG5cXHRcXHRcXHRvcGFjaXR5OiB7IHZhbHVlOiAxLjAgfSxcXG5cXHRcXHRcXHRzaXplOiB7IHZhbHVlOiAxLjAgfSxcXG5cXHRcXHRcXHRzY2FsZTogeyB2YWx1ZTogMS4wIH0sXFxuXFx0XFx0XFx0bWFwOiB7IHZhbHVlOiBudWxsIH0sXFxuXFx0XFx0XFx0dXZUcmFuc2Zvcm06IHsgdmFsdWU6IG5ldyBNYXRyaXgzKCkgfVxcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIFVuaWZvcm0gVXRpbGl0aWVzXFxuXFx0ICovXFxuXFxuXFx0dmFyIFVuaWZvcm1zVXRpbHMgPSB7XFxuXFxuXFx0XFx0bWVyZ2U6IGZ1bmN0aW9uICggdW5pZm9ybXMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG1lcmdlZCA9IHt9O1xcblxcblxcdFxcdFxcdGZvciAoIHZhciB1ID0gMDsgdSA8IHVuaWZvcm1zLmxlbmd0aDsgdSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdG1wID0gdGhpcy5jbG9uZSggdW5pZm9ybXNbIHUgXSApO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBwIGluIHRtcCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtZXJnZWRbIHAgXSA9IHRtcFsgcCBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG1lcmdlZDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoIHVuaWZvcm1zX3NyYyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdW5pZm9ybXNfZHN0ID0ge307XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIHUgaW4gdW5pZm9ybXNfc3JjICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zX2RzdFsgdSBdID0ge307XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIHAgaW4gdW5pZm9ybXNfc3JjWyB1IF0gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHBhcmFtZXRlcl9zcmMgPSB1bmlmb3Jtc19zcmNbIHUgXVsgcCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggcGFyYW1ldGVyX3NyYyAmJiAoIHBhcmFtZXRlcl9zcmMuaXNDb2xvciB8fFxcblxcdFxcdFxcdFxcdFxcdFxcdHBhcmFtZXRlcl9zcmMuaXNNYXRyaXgzIHx8IHBhcmFtZXRlcl9zcmMuaXNNYXRyaXg0IHx8XFxuXFx0XFx0XFx0XFx0XFx0XFx0cGFyYW1ldGVyX3NyYy5pc1ZlY3RvcjIgfHwgcGFyYW1ldGVyX3NyYy5pc1ZlY3RvcjMgfHwgcGFyYW1ldGVyX3NyYy5pc1ZlY3RvcjQgfHxcXG5cXHRcXHRcXHRcXHRcXHRcXHRwYXJhbWV0ZXJfc3JjLmlzVGV4dHVyZSApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zX2RzdFsgdSBdWyBwIF0gPSBwYXJhbWV0ZXJfc3JjLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggcGFyYW1ldGVyX3NyYyApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zX2RzdFsgdSBdWyBwIF0gPSBwYXJhbWV0ZXJfc3JjLnNsaWNlKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1bmlmb3Jtc19kc3RbIHUgXVsgcCBdID0gcGFyYW1ldGVyX3NyYztcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdW5pZm9ybXNfZHN0O1xcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdHZhciBhbHBoYW1hcF9mcmFnbWVudCA9IFxcXCIjaWZkZWYgVVNFX0FMUEhBTUFQXFxcXG5cXFxcdGRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHZVdiApLmc7XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGFscGhhbWFwX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9BTFBIQU1BUFxcXFxuXFxcXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgYWxwaGF0ZXN0X2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBBTFBIQVRFU1RcXFxcblxcXFx0aWYgKCBkaWZmdXNlQ29sb3IuYSA8IEFMUEhBVEVTVCApIGRpc2NhcmQ7XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGFvbWFwX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBVU0VfQU9NQVBcXFxcblxcXFx0ZmxvYXQgYW1iaWVudE9jY2x1c2lvbiA9ICggdGV4dHVyZTJEKCBhb01hcCwgdlV2MiApLnIgLSAxLjAgKSAqIGFvTWFwSW50ZW5zaXR5ICsgMS4wO1xcXFxuXFxcXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gYW1iaWVudE9jY2x1c2lvbjtcXFxcblxcXFx0I2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBQSFlTSUNBTCApXFxcXG5cXFxcdFxcXFx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xcXFxuXFxcXHRcXFxcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKj0gY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBkb3ROViwgYW1iaWVudE9jY2x1c2lvbiwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgKTtcXFxcblxcXFx0I2VuZGlmXFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGFvbWFwX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9BT01BUFxcXFxuXFxcXHR1bmlmb3JtIHNhbXBsZXIyRCBhb01hcDtcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTtcXFxcbiNlbmRpZlxcXCI7XFxuXFxuXFx0dmFyIGJlZ2luX3ZlcnRleCA9IFxcXCJcXFxcbnZlYzMgdHJhbnNmb3JtZWQgPSB2ZWMzKCBwb3NpdGlvbiApO1xcXFxuXFxcIjtcXG5cXG5cXHR2YXIgYmVnaW5ub3JtYWxfdmVydGV4ID0gXFxcIlxcXFxudmVjMyBvYmplY3ROb3JtYWwgPSB2ZWMzKCBub3JtYWwgKTtcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGJzZGZzID0gXFxcImZsb2F0IHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGNvbnN0IGluIGZsb2F0IGxpZ2h0RGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGN1dG9mZkRpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBkZWNheUV4cG9uZW50ICkge1xcXFxuXFxcXHRpZiggZGVjYXlFeHBvbmVudCA+IDAuMCApIHtcXFxcbiNpZiBkZWZpbmVkICggUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyApXFxcXG5cXFxcdFxcXFx0ZmxvYXQgZGlzdGFuY2VGYWxsb2ZmID0gMS4wIC8gbWF4KCBwb3coIGxpZ2h0RGlzdGFuY2UsIGRlY2F5RXhwb25lbnQgKSwgMC4wMSApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IG1heERpc3RhbmNlQ3V0b2ZmRmFjdG9yID0gcG93Miggc2F0dXJhdGUoIDEuMCAtIHBvdzQoIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSApICkgKTtcXFxcblxcXFx0XFxcXHRyZXR1cm4gZGlzdGFuY2VGYWxsb2ZmICogbWF4RGlzdGFuY2VDdXRvZmZGYWN0b3I7XFxcXG4jZWxzZVxcXFxuXFxcXHRcXFxcdHJldHVybiBwb3coIHNhdHVyYXRlKCAtbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICsgMS4wICksIGRlY2F5RXhwb25lbnQgKTtcXFxcbiNlbmRpZlxcXFxuXFxcXHR9XFxcXG5cXFxcdHJldHVybiAxLjA7XFxcXG59XFxcXG52ZWMzIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBjb25zdCBpbiB2ZWMzIGRpZmZ1c2VDb2xvciApIHtcXFxcblxcXFx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBkaWZmdXNlQ29sb3I7XFxcXG59XFxcXG52ZWMzIEZfU2NobGljayggY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBkb3RMSCApIHtcXFxcblxcXFx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLTUuNTU0NzMgKiBkb3RMSCAtIDYuOTgzMTYgKSAqIGRvdExIICk7XFxcXG5cXFxcdHJldHVybiAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIGZyZXNuZWwgKyBzcGVjdWxhckNvbG9yO1xcXFxufVxcXFxuZmxvYXQgR19HR1hfU21pdGgoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7XFxcXG5cXFxcdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcXFxcblxcXFx0ZmxvYXQgZ2wgPSBkb3ROTCArIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xcXFxuXFxcXHRmbG9hdCBndiA9IGRvdE5WICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XFxcXG5cXFxcdHJldHVybiAxLjAgLyAoIGdsICogZ3YgKTtcXFxcbn1cXFxcbmZsb2F0IEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcXFxcblxcXFx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xcXFxuXFxcXHRmbG9hdCBndiA9IGRvdE5MICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XFxcXG5cXFxcdGZsb2F0IGdsID0gZG90TlYgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5MICkgKTtcXFxcblxcXFx0cmV0dXJuIDAuNSAvIG1heCggZ3YgKyBnbCwgRVBTSUxPTiApO1xcXFxufVxcXFxuZmxvYXQgRF9HR1goIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHtcXFxcblxcXFx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xcXFxuXFxcXHRmbG9hdCBkZW5vbSA9IHBvdzIoIGRvdE5IICkgKiAoIGEyIC0gMS4wICkgKyAxLjA7XFxcXG5cXFxcdHJldHVybiBSRUNJUFJPQ0FMX1BJICogYTIgLyBwb3cyKCBkZW5vbSApO1xcXFxufVxcXFxudmVjMyBCUkRGX1NwZWN1bGFyX0dHWCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBpbmNpZGVudExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcXFxcblxcXFx0ZmxvYXQgYWxwaGEgPSBwb3cyKCByb3VnaG5lc3MgKTtcXFxcblxcXFx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiArIGdlb21ldHJ5LnZpZXdEaXIgKTtcXFxcblxcXFx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICkgKTtcXFxcblxcXFx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xcXFxuXFxcXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGFsZkRpciApICk7XFxcXG5cXFxcdGZsb2F0IGRvdExIID0gc2F0dXJhdGUoIGRvdCggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24sIGhhbGZEaXIgKSApO1xcXFxuXFxcXHR2ZWMzIEYgPSBGX1NjaGxpY2soIHNwZWN1bGFyQ29sb3IsIGRvdExIICk7XFxcXG5cXFxcdGZsb2F0IEcgPSBHX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGFscGhhLCBkb3ROTCwgZG90TlYgKTtcXFxcblxcXFx0ZmxvYXQgRCA9IERfR0dYKCBhbHBoYSwgZG90TkggKTtcXFxcblxcXFx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XFxcXG59XFxcXG52ZWMyIExUQ19VdiggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcXFxcblxcXFx0Y29uc3QgZmxvYXQgTFVUX1NJWkUgID0gNjQuMDtcXFxcblxcXFx0Y29uc3QgZmxvYXQgTFVUX1NDQUxFID0gKCBMVVRfU0laRSAtIDEuMCApIC8gTFVUX1NJWkU7XFxcXG5cXFxcdGNvbnN0IGZsb2F0IExVVF9CSUFTICA9IDAuNSAvIExVVF9TSVpFO1xcXFxuXFxcXHRmbG9hdCB0aGV0YSA9IGFjb3MoIGRvdCggTiwgViApICk7XFxcXG5cXFxcdHZlYzIgdXYgPSB2ZWMyKFxcXFxuXFxcXHRcXFxcdHNxcnQoIHNhdHVyYXRlKCByb3VnaG5lc3MgKSApLFxcXFxuXFxcXHRcXFxcdHNhdHVyYXRlKCB0aGV0YSAvICggMC41ICogUEkgKSApICk7XFxcXG5cXFxcdHV2ID0gdXYgKiBMVVRfU0NBTEUgKyBMVVRfQklBUztcXFxcblxcXFx0cmV0dXJuIHV2O1xcXFxufVxcXFxuZmxvYXQgTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIGYgKSB7XFxcXG5cXFxcdGZsb2F0IGwgPSBsZW5ndGgoIGYgKTtcXFxcblxcXFx0cmV0dXJuIG1heCggKCBsICogbCArIGYueiApIC8gKCBsICsgMS4wICksIDAuMCApO1xcXFxufVxcXFxudmVjMyBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgdjEsIGNvbnN0IGluIHZlYzMgdjIgKSB7XFxcXG5cXFxcdGZsb2F0IHggPSBkb3QoIHYxLCB2MiApO1xcXFxuXFxcXHRmbG9hdCB5ID0gYWJzKCB4ICk7XFxcXG5cXFxcdGZsb2F0IGEgPSAwLjg2MjY3ICsgKDAuNDk3ODggKyAwLjAxNDM2ICogeSApICogeTtcXFxcblxcXFx0ZmxvYXQgYiA9IDMuNDUwNjggKyAoNC4xODgxNCArIHkpICogeTtcXFxcblxcXFx0ZmxvYXQgdiA9IGEgLyBiO1xcXFxuXFxcXHRmbG9hdCB0aGV0YV9zaW50aGV0YSA9ICh4ID4gMC4wKSA/IHYgOiAwLjUgKiBpbnZlcnNlc3FydCggMS4wIC0geCAqIHggKSAtIHY7XFxcXG5cXFxcdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcXFxcbn1cXFxcbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xcXFxuXFxcXHR2ZWMzIHYxID0gcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xcXFxuXFxcXHR2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xcXFxuXFxcXHR2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApO1xcXFxuXFxcXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIDwgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xcXFxuXFxcXHR2ZWMzIFQxLCBUMjtcXFxcblxcXFx0VDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcXFxcblxcXFx0VDIgPSAtIGNyb3NzKCBOLCBUMSApO1xcXFxuXFxcXHRtYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xcXFxuXFxcXHR2ZWMzIGNvb3Jkc1sgNCBdO1xcXFxuXFxcXHRjb29yZHNbIDAgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xcXFxuXFxcXHRjb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xcXFxuXFxcXHRjb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xcXFxuXFxcXHRjb29yZHNbIDMgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xcXFxuXFxcXHRjb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcXFxcblxcXFx0Y29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XFxcXG5cXFxcdGNvb3Jkc1sgMiBdID0gbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xcXFxuXFxcXHRjb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcXFxcblxcXFx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7XFxcXG5cXFxcdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcXFxcblxcXFx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xcXFxuXFxcXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XFxcXG5cXFxcdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcXFxcblxcXFx0dmVjMyByZXN1bHQgPSB2ZWMzKCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIHZlY3RvckZvcm1GYWN0b3IgKSApO1xcXFxuXFxcXHRyZXR1cm4gcmVzdWx0O1xcXFxufVxcXFxudmVjMyBCUkRGX1NwZWN1bGFyX0dHWF9FbnZpcm9ubWVudCggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XFxcXG5cXFxcdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcXFxcblxcXFx0Y29uc3QgdmVjNCBjMCA9IHZlYzQoIC0gMSwgLSAwLjAyNzUsIC0gMC41NzIsIDAuMDIyICk7XFxcXG5cXFxcdGNvbnN0IHZlYzQgYzEgPSB2ZWM0KCAxLCAwLjA0MjUsIDEuMDQsIC0gMC4wNCApO1xcXFxuXFxcXHR2ZWM0IHIgPSByb3VnaG5lc3MgKiBjMCArIGMxO1xcXFxuXFxcXHRmbG9hdCBhMDA0ID0gbWluKCByLnggKiByLngsIGV4cDIoIC0gOS4yOCAqIGRvdE5WICkgKSAqIHIueCArIHIueTtcXFxcblxcXFx0dmVjMiBBQiA9IHZlYzIoIC0xLjA0LCAxLjA0ICkgKiBhMDA0ICsgci56dztcXFxcblxcXFx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBBQi54ICsgQUIueTtcXFxcbn1cXFxcbmZsb2F0IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKSB7XFxcXG5cXFxcdHJldHVybiAwLjI1O1xcXFxufVxcXFxuZmxvYXQgRF9CbGlublBob25nKCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xcXFxuXFxcXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqICggc2hpbmluZXNzICogMC41ICsgMS4wICkgKiBwb3coIGRvdE5ILCBzaGluaW5lc3MgKTtcXFxcbn1cXFxcbnZlYzMgQlJERl9TcGVjdWxhcl9CbGlublBob25nKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzICkge1xcXFxuXFxcXHR2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICsgZ2VvbWV0cnkudmlld0RpciApO1xcXFxuXFxcXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGFsZkRpciApICk7XFxcXG5cXFxcdGZsb2F0IGRvdExIID0gc2F0dXJhdGUoIGRvdCggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24sIGhhbGZEaXIgKSApO1xcXFxuXFxcXHR2ZWMzIEYgPSBGX1NjaGxpY2soIHNwZWN1bGFyQ29sb3IsIGRvdExIICk7XFxcXG5cXFxcdGZsb2F0IEcgPSBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICk7XFxcXG5cXFxcdGZsb2F0IEQgPSBEX0JsaW5uUGhvbmcoIHNoaW5pbmVzcywgZG90TkggKTtcXFxcblxcXFx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XFxcXG59XFxcXG5mbG9hdCBHR1hSb3VnaG5lc3NUb0JsaW5uRXhwb25lbnQoIGNvbnN0IGluIGZsb2F0IGdneFJvdWdobmVzcyApIHtcXFxcblxcXFx0cmV0dXJuICggMi4wIC8gcG93MiggZ2d4Um91Z2huZXNzICsgMC4wMDAxICkgLSAyLjAgKTtcXFxcbn1cXFxcbmZsb2F0IEJsaW5uRXhwb25lbnRUb0dHWFJvdWdobmVzcyggY29uc3QgaW4gZmxvYXQgYmxpbm5FeHBvbmVudCApIHtcXFxcblxcXFx0cmV0dXJuIHNxcnQoIDIuMCAvICggYmxpbm5FeHBvbmVudCArIDIuMCApICk7XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBidW1wbWFwX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9CVU1QTUFQXFxcXG5cXFxcdHVuaWZvcm0gc2FtcGxlcjJEIGJ1bXBNYXA7XFxcXG5cXFxcdHVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlO1xcXFxuXFxcXHR2ZWMyIGRIZHh5X2Z3ZCgpIHtcXFxcblxcXFx0XFxcXHR2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7XFxcXG5cXFxcdFxcXFx0dmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDtcXFxcblxcXFx0XFxcXHRmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDtcXFxcblxcXFx0XFxcXHRmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDtcXFxcblxcXFx0XFxcXHRyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTtcXFxcblxcXFx0fVxcXFxuXFxcXHR2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5ICkge1xcXFxuXFxcXHRcXFxcdHZlYzMgdlNpZ21hWCA9IHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTtcXFxcblxcXFx0XFxcXHR2ZWMzIHZTaWdtYVkgPSB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7XFxcXG5cXFxcdFxcXFx0dmVjMyB2TiA9IHN1cmZfbm9ybTtcXFxcblxcXFx0XFxcXHR2ZWMzIFIxID0gY3Jvc3MoIHZTaWdtYVksIHZOICk7XFxcXG5cXFxcdFxcXFx0dmVjMyBSMiA9IGNyb3NzKCB2TiwgdlNpZ21hWCApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IGZEZXQgPSBkb3QoIHZTaWdtYVgsIFIxICk7XFxcXG5cXFxcdFxcXFx0dmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XFxcXG5cXFxcdFxcXFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xcXFxuXFxcXHR9XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudCA9IFxcXCIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcXFxcblxcXFx0Zm9yICggaW50IGkgPSAwOyBpIDwgVU5JT05fQ0xJUFBJTkdfUExBTkVTOyArKyBpICkge1xcXFxuXFxcXHRcXFxcdHZlYzQgcGxhbmUgPSBjbGlwcGluZ1BsYW5lc1sgaSBdO1xcXFxuXFxcXHRcXFxcdGlmICggZG90KCB2Vmlld1Bvc2l0aW9uLCBwbGFuZS54eXogKSA+IHBsYW5lLncgKSBkaXNjYXJkO1xcXFxuXFxcXHR9XFxcXG5cXFxcdFxcXFx0XFxcXG5cXFxcdCNpZiBVTklPTl9DTElQUElOR19QTEFORVMgPCBOVU1fQ0xJUFBJTkdfUExBTkVTXFxcXG5cXFxcdFxcXFx0Ym9vbCBjbGlwcGVkID0gdHJ1ZTtcXFxcblxcXFx0XFxcXHRmb3IgKCBpbnQgaSA9IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSA8IE5VTV9DTElQUElOR19QTEFORVM7ICsrIGkgKSB7XFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWM0IHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcXFxcblxcXFx0XFxcXHRcXFxcdGNsaXBwZWQgPSAoIGRvdCggdlZpZXdQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgJiYgY2xpcHBlZDtcXFxcblxcXFx0XFxcXHR9XFxcXG5cXFxcdFxcXFx0aWYgKCBjbGlwcGVkICkgZGlzY2FyZDtcXFxcblxcXFx0XFxcXG5cXFxcdCNlbmRpZlxcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudCA9IFxcXCIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcXFxcblxcXFx0I2lmICEgZGVmaW5lZCggUEhZU0lDQUwgKSAmJiAhIGRlZmluZWQoIFBIT05HIClcXFxcblxcXFx0XFxcXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdHVuaWZvcm0gdmVjNCBjbGlwcGluZ1BsYW5lc1sgTlVNX0NMSVBQSU5HX1BMQU5FUyBdO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXggPSBcXFwiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwICYmICEgZGVmaW5lZCggUEhZU0lDQUwgKSAmJiAhIGRlZmluZWQoIFBIT05HIClcXFxcblxcXFx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXggPSBcXFwiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwICYmICEgZGVmaW5lZCggUEhZU0lDQUwgKSAmJiAhIGRlZmluZWQoIFBIT05HIClcXFxcblxcXFx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGNvbG9yX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBVU0VfQ09MT1JcXFxcblxcXFx0ZGlmZnVzZUNvbG9yLnJnYiAqPSB2Q29sb3I7XFxcXG4jZW5kaWZcXFwiO1xcblxcblxcdHZhciBjb2xvcl9wYXJzX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBVU0VfQ09MT1JcXFxcblxcXFx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgY29sb3JfcGFyc192ZXJ0ZXggPSBcXFwiI2lmZGVmIFVTRV9DT0xPUlxcXFxuXFxcXHR2YXJ5aW5nIHZlYzMgdkNvbG9yO1xcXFxuI2VuZGlmXFxcIjtcXG5cXG5cXHR2YXIgY29sb3JfdmVydGV4ID0gXFxcIiNpZmRlZiBVU0VfQ09MT1JcXFxcblxcXFx0dkNvbG9yLnh5eiA9IGNvbG9yLnh5ejtcXFxcbiNlbmRpZlxcXCI7XFxuXFxuXFx0dmFyIGNvbW1vbiA9IFxcXCIjZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTlcXFxcbiNkZWZpbmUgUEkyIDYuMjgzMTg1MzA3MThcXFxcbiNkZWZpbmUgUElfSEFMRiAxLjU3MDc5NjMyNjc5NDlcXFxcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4XFxcXG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkyIDAuMTU5MTU0OTRcXFxcbiNkZWZpbmUgTE9HMiAxLjQ0MjY5NVxcXFxuI2RlZmluZSBFUFNJTE9OIDFlLTZcXFxcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcXFxcbiNkZWZpbmUgd2hpdGVDb21wbGltZW50KGEpICggMS4wIC0gc2F0dXJhdGUoIGEgKSApXFxcXG5mbG9hdCBwb3cyKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4OyB9XFxcXG5mbG9hdCBwb3czKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4Kng7IH1cXFxcbmZsb2F0IHBvdzQoIGNvbnN0IGluIGZsb2F0IHggKSB7IGZsb2F0IHgyID0geCp4OyByZXR1cm4geDIqeDI7IH1cXFxcbmZsb2F0IGF2ZXJhZ2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7IHJldHVybiBkb3QoIGNvbG9yLCB2ZWMzKCAwLjMzMzMgKSApOyB9XFxcXG5oaWdocCBmbG9hdCByYW5kKCBjb25zdCBpbiB2ZWMyIHV2ICkge1xcXFxuXFxcXHRjb25zdCBoaWdocCBmbG9hdCBhID0gMTIuOTg5OCwgYiA9IDc4LjIzMywgYyA9IDQzNzU4LjU0NTM7XFxcXG5cXFxcdGhpZ2hwIGZsb2F0IGR0ID0gZG90KCB1di54eSwgdmVjMiggYSxiICkgKSwgc24gPSBtb2QoIGR0LCBQSSApO1xcXFxuXFxcXHRyZXR1cm4gZnJhY3Qoc2luKHNuKSAqIGMpO1xcXFxufVxcXFxuc3RydWN0IEluY2lkZW50TGlnaHQge1xcXFxuXFxcXHR2ZWMzIGNvbG9yO1xcXFxuXFxcXHR2ZWMzIGRpcmVjdGlvbjtcXFxcblxcXFx0Ym9vbCB2aXNpYmxlO1xcXFxufTtcXFxcbnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7XFxcXG5cXFxcdHZlYzMgZGlyZWN0RGlmZnVzZTtcXFxcblxcXFx0dmVjMyBkaXJlY3RTcGVjdWxhcjtcXFxcblxcXFx0dmVjMyBpbmRpcmVjdERpZmZ1c2U7XFxcXG5cXFxcdHZlYzMgaW5kaXJlY3RTcGVjdWxhcjtcXFxcbn07XFxcXG5zdHJ1Y3QgR2VvbWV0cmljQ29udGV4dCB7XFxcXG5cXFxcdHZlYzMgcG9zaXRpb247XFxcXG5cXFxcdHZlYzMgbm9ybWFsO1xcXFxuXFxcXHR2ZWMzIHZpZXdEaXI7XFxcXG59O1xcXFxudmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcXFxcblxcXFx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XFxcXG59XFxcXG52ZWMzIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcXFxcblxcXFx0cmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBkaXIsIDAuMCApICogbWF0cml4ICkueHl6ICk7XFxcXG59XFxcXG52ZWMzIHByb2plY3RPblBsYW5lKGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xcXFxuXFxcXHRmbG9hdCBkaXN0YW5jZSA9IGRvdCggcGxhbmVOb3JtYWwsIHBvaW50IC0gcG9pbnRPblBsYW5lICk7XFxcXG5cXFxcdHJldHVybiAtIGRpc3RhbmNlICogcGxhbmVOb3JtYWwgKyBwb2ludDtcXFxcbn1cXFxcbmZsb2F0IHNpZGVPZlBsYW5lKCBpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcXFxcblxcXFx0cmV0dXJuIHNpZ24oIGRvdCggcG9pbnQgLSBwb2ludE9uUGxhbmUsIHBsYW5lTm9ybWFsICkgKTtcXFxcbn1cXFxcbnZlYzMgbGluZVBsYW5lSW50ZXJzZWN0KCBpbiB2ZWMzIHBvaW50T25MaW5lLCBpbiB2ZWMzIGxpbmVEaXJlY3Rpb24sIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xcXFxuXFxcXHRyZXR1cm4gbGluZURpcmVjdGlvbiAqICggZG90KCBwbGFuZU5vcm1hbCwgcG9pbnRPblBsYW5lIC0gcG9pbnRPbkxpbmUgKSAvIGRvdCggcGxhbmVOb3JtYWwsIGxpbmVEaXJlY3Rpb24gKSApICsgcG9pbnRPbkxpbmU7XFxcXG59XFxcXG5tYXQzIHRyYW5zcG9zZU1hdDMoIGNvbnN0IGluIG1hdDMgbSApIHtcXFxcblxcXFx0bWF0MyB0bXA7XFxcXG5cXFxcdHRtcFsgMCBdID0gdmVjMyggbVsgMCBdLngsIG1bIDEgXS54LCBtWyAyIF0ueCApO1xcXFxuXFxcXHR0bXBbIDEgXSA9IHZlYzMoIG1bIDAgXS55LCBtWyAxIF0ueSwgbVsgMiBdLnkgKTtcXFxcblxcXFx0dG1wWyAyIF0gPSB2ZWMzKCBtWyAwIF0ueiwgbVsgMSBdLnosIG1bIDIgXS56ICk7XFxcXG5cXFxcdHJldHVybiB0bXA7XFxcXG59XFxcXG5mbG9hdCBsaW5lYXJUb1JlbGF0aXZlTHVtaW5hbmNlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkge1xcXFxuXFxcXHR2ZWMzIHdlaWdodHMgPSB2ZWMzKCAwLjIxMjYsIDAuNzE1MiwgMC4wNzIyICk7XFxcXG5cXFxcdHJldHVybiBkb3QoIHdlaWdodHMsIGNvbG9yLnJnYiApO1xcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgY3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWXFxcXG4jZGVmaW5lIGN1YmVVVl90ZXh0dXJlU2l6ZSAoMTAyNC4wKVxcXFxuaW50IGdldEZhY2VGcm9tRGlyZWN0aW9uKHZlYzMgZGlyZWN0aW9uKSB7XFxcXG5cXFxcdHZlYzMgYWJzRGlyZWN0aW9uID0gYWJzKGRpcmVjdGlvbik7XFxcXG5cXFxcdGludCBmYWNlID0gLTE7XFxcXG5cXFxcdGlmKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi56ICkge1xcXFxuXFxcXHRcXFxcdGlmKGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnkgKVxcXFxuXFxcXHRcXFxcdFxcXFx0ZmFjZSA9IGRpcmVjdGlvbi54ID4gMC4wID8gMCA6IDM7XFxcXG5cXFxcdFxcXFx0ZWxzZVxcXFxuXFxcXHRcXFxcdFxcXFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMSA6IDQ7XFxcXG5cXFxcdH1cXFxcblxcXFx0ZWxzZSB7XFxcXG5cXFxcdFxcXFx0aWYoYWJzRGlyZWN0aW9uLnogPiBhYnNEaXJlY3Rpb24ueSApXFxcXG5cXFxcdFxcXFx0XFxcXHRmYWNlID0gZGlyZWN0aW9uLnogPiAwLjAgPyAyIDogNTtcXFxcblxcXFx0XFxcXHRlbHNlXFxcXG5cXFxcdFxcXFx0XFxcXHRmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxIDogNDtcXFxcblxcXFx0fVxcXFxuXFxcXHRyZXR1cm4gZmFjZTtcXFxcbn1cXFxcbiNkZWZpbmUgY3ViZVVWX21heExvZHMxICAobG9nMihjdWJlVVZfdGV4dHVyZVNpemUqMC4yNSkgLSAxLjApXFxcXG4jZGVmaW5lIGN1YmVVVl9yYW5nZUNsYW1wIChleHAyKCg2LjAgLSAxLjApICogMi4wKSlcXFxcbnZlYzIgTWlwTGV2ZWxJbmZvKCB2ZWMzIHZlYywgZmxvYXQgcm91Z2huZXNzTGV2ZWwsIGZsb2F0IHJvdWdobmVzcyApIHtcXFxcblxcXFx0ZmxvYXQgc2NhbGUgPSBleHAyKGN1YmVVVl9tYXhMb2RzMSAtIHJvdWdobmVzc0xldmVsKTtcXFxcblxcXFx0ZmxvYXQgZHhSb3VnaG5lc3MgPSBkRmR4KHJvdWdobmVzcyk7XFxcXG5cXFxcdGZsb2F0IGR5Um91Z2huZXNzID0gZEZkeShyb3VnaG5lc3MpO1xcXFxuXFxcXHR2ZWMzIGR4ID0gZEZkeCggdmVjICogc2NhbGUgKiBkeFJvdWdobmVzcyApO1xcXFxuXFxcXHR2ZWMzIGR5ID0gZEZkeSggdmVjICogc2NhbGUgKiBkeVJvdWdobmVzcyApO1xcXFxuXFxcXHRmbG9hdCBkID0gbWF4KCBkb3QoIGR4LCBkeCApLCBkb3QoIGR5LCBkeSApICk7XFxcXG5cXFxcdGQgPSBjbGFtcChkLCAxLjAsIGN1YmVVVl9yYW5nZUNsYW1wKTtcXFxcblxcXFx0ZmxvYXQgbWlwTGV2ZWwgPSAwLjUgKiBsb2cyKGQpO1xcXFxuXFxcXHRyZXR1cm4gdmVjMihmbG9vcihtaXBMZXZlbCksIGZyYWN0KG1pcExldmVsKSk7XFxcXG59XFxcXG4jZGVmaW5lIGN1YmVVVl9tYXhMb2RzMiAobG9nMihjdWJlVVZfdGV4dHVyZVNpemUqMC4yNSkgLSAyLjApXFxcXG4jZGVmaW5lIGN1YmVVVl9yY3BUZXh0dXJlU2l6ZSAoMS4wIC8gY3ViZVVWX3RleHR1cmVTaXplKVxcXFxudmVjMiBnZXRDdWJlVVYodmVjMyBkaXJlY3Rpb24sIGZsb2F0IHJvdWdobmVzc0xldmVsLCBmbG9hdCBtaXBMZXZlbCkge1xcXFxuXFxcXHRtaXBMZXZlbCA9IHJvdWdobmVzc0xldmVsID4gY3ViZVVWX21heExvZHMyIC0gMy4wID8gMC4wIDogbWlwTGV2ZWw7XFxcXG5cXFxcdGZsb2F0IGEgPSAxNi4wICogY3ViZVVWX3JjcFRleHR1cmVTaXplO1xcXFxuXFxcXHR2ZWMyIGV4cDJfcGFja2VkID0gZXhwMiggdmVjMiggcm91Z2huZXNzTGV2ZWwsIG1pcExldmVsICkgKTtcXFxcblxcXFx0dmVjMiByY3BfZXhwMl9wYWNrZWQgPSB2ZWMyKCAxLjAgKSAvIGV4cDJfcGFja2VkO1xcXFxuXFxcXHRmbG9hdCBwb3dTY2FsZSA9IGV4cDJfcGFja2VkLnggKiBleHAyX3BhY2tlZC55O1xcXFxuXFxcXHRmbG9hdCBzY2FsZSA9IHJjcF9leHAyX3BhY2tlZC54ICogcmNwX2V4cDJfcGFja2VkLnkgKiAwLjI1O1xcXFxuXFxcXHRmbG9hdCBtaXBPZmZzZXQgPSAwLjc1KigxLjAgLSByY3BfZXhwMl9wYWNrZWQueSkgKiByY3BfZXhwMl9wYWNrZWQueDtcXFxcblxcXFx0Ym9vbCBiUmVzID0gbWlwTGV2ZWwgPT0gMC4wO1xcXFxuXFxcXHRzY2FsZSA9ICBiUmVzICYmIChzY2FsZSA8IGEpID8gYSA6IHNjYWxlO1xcXFxuXFxcXHR2ZWMzIHI7XFxcXG5cXFxcdHZlYzIgb2Zmc2V0O1xcXFxuXFxcXHRpbnQgZmFjZSA9IGdldEZhY2VGcm9tRGlyZWN0aW9uKGRpcmVjdGlvbik7XFxcXG5cXFxcdGZsb2F0IHJjcFBvd1NjYWxlID0gMS4wIC8gcG93U2NhbGU7XFxcXG5cXFxcdGlmKCBmYWNlID09IDApIHtcXFxcblxcXFx0XFxcXHRyID0gdmVjMyhkaXJlY3Rpb24ueCwgLWRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSk7XFxcXG5cXFxcdFxcXFx0b2Zmc2V0ID0gdmVjMigwLjArbWlwT2Zmc2V0LDAuNzUgKiByY3BQb3dTY2FsZSk7XFxcXG5cXFxcdFxcXFx0b2Zmc2V0LnkgPSBiUmVzICYmIChvZmZzZXQueSA8IDIuMCphKSA/IGEgOiBvZmZzZXQueTtcXFxcblxcXFx0fVxcXFxuXFxcXHRlbHNlIGlmKCBmYWNlID09IDEpIHtcXFxcblxcXFx0XFxcXHRyID0gdmVjMyhkaXJlY3Rpb24ueSwgZGlyZWN0aW9uLngsIGRpcmVjdGlvbi56KTtcXFxcblxcXFx0XFxcXHRvZmZzZXQgPSB2ZWMyKHNjYWxlK21pcE9mZnNldCwgMC43NSAqIHJjcFBvd1NjYWxlKTtcXFxcblxcXFx0XFxcXHRvZmZzZXQueSA9IGJSZXMgJiYgKG9mZnNldC55IDwgMi4wKmEpID8gYSA6IG9mZnNldC55O1xcXFxuXFxcXHR9XFxcXG5cXFxcdGVsc2UgaWYoIGZhY2UgPT0gMikge1xcXFxuXFxcXHRcXFxcdHIgPSB2ZWMzKGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkpO1xcXFxuXFxcXHRcXFxcdG9mZnNldCA9IHZlYzIoMi4wKnNjYWxlK21pcE9mZnNldCwgMC43NSAqIHJjcFBvd1NjYWxlKTtcXFxcblxcXFx0XFxcXHRvZmZzZXQueSA9IGJSZXMgJiYgKG9mZnNldC55IDwgMi4wKmEpID8gYSA6IG9mZnNldC55O1xcXFxuXFxcXHR9XFxcXG5cXFxcdGVsc2UgaWYoIGZhY2UgPT0gMykge1xcXFxuXFxcXHRcXFxcdHIgPSB2ZWMzKGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkpO1xcXFxuXFxcXHRcXFxcdG9mZnNldCA9IHZlYzIoMC4wK21pcE9mZnNldCwwLjUgKiByY3BQb3dTY2FsZSk7XFxcXG5cXFxcdFxcXFx0b2Zmc2V0LnkgPSBiUmVzICYmIChvZmZzZXQueSA8IDIuMCphKSA/IDAuMCA6IG9mZnNldC55O1xcXFxuXFxcXHR9XFxcXG5cXFxcdGVsc2UgaWYoIGZhY2UgPT0gNCkge1xcXFxuXFxcXHRcXFxcdHIgPSB2ZWMzKGRpcmVjdGlvbi55LCBkaXJlY3Rpb24ueCwgLWRpcmVjdGlvbi56KTtcXFxcblxcXFx0XFxcXHRvZmZzZXQgPSB2ZWMyKHNjYWxlK21pcE9mZnNldCwgMC41ICogcmNwUG93U2NhbGUpO1xcXFxuXFxcXHRcXFxcdG9mZnNldC55ID0gYlJlcyAmJiAob2Zmc2V0LnkgPCAyLjAqYSkgPyAwLjAgOiBvZmZzZXQueTtcXFxcblxcXFx0fVxcXFxuXFxcXHRlbHNlIHtcXFxcblxcXFx0XFxcXHRyID0gdmVjMyhkaXJlY3Rpb24ueiwgLWRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSk7XFxcXG5cXFxcdFxcXFx0b2Zmc2V0ID0gdmVjMigyLjAqc2NhbGUrbWlwT2Zmc2V0LCAwLjUgKiByY3BQb3dTY2FsZSk7XFxcXG5cXFxcdFxcXFx0b2Zmc2V0LnkgPSBiUmVzICYmIChvZmZzZXQueSA8IDIuMCphKSA/IDAuMCA6IG9mZnNldC55O1xcXFxuXFxcXHR9XFxcXG5cXFxcdHIgPSBub3JtYWxpemUocik7XFxcXG5cXFxcdGZsb2F0IHRleGVsT2Zmc2V0ID0gMC41ICogY3ViZVVWX3JjcFRleHR1cmVTaXplO1xcXFxuXFxcXHR2ZWMyIHMgPSAoIHIueXogLyBhYnMoIHIueCApICsgdmVjMiggMS4wICkgKSAqIDAuNTtcXFxcblxcXFx0dmVjMiBiYXNlID0gb2Zmc2V0ICsgdmVjMiggdGV4ZWxPZmZzZXQgKTtcXFxcblxcXFx0cmV0dXJuIGJhc2UgKyBzICogKCBzY2FsZSAtIDIuMCAqIHRleGVsT2Zmc2V0ICk7XFxcXG59XFxcXG4jZGVmaW5lIGN1YmVVVl9tYXhMb2RzMyAobG9nMihjdWJlVVZfdGV4dHVyZVNpemUqMC4yNSkgLSAzLjApXFxcXG52ZWM0IHRleHR1cmVDdWJlVVYodmVjMyByZWZsZWN0ZWREaXJlY3Rpb24sIGZsb2F0IHJvdWdobmVzcyApIHtcXFxcblxcXFx0ZmxvYXQgcm91Z2huZXNzVmFsID0gcm91Z2huZXNzKiBjdWJlVVZfbWF4TG9kczM7XFxcXG5cXFxcdGZsb2F0IHIxID0gZmxvb3Iocm91Z2huZXNzVmFsKTtcXFxcblxcXFx0ZmxvYXQgcjIgPSByMSArIDEuMDtcXFxcblxcXFx0ZmxvYXQgdCA9IGZyYWN0KHJvdWdobmVzc1ZhbCk7XFxcXG5cXFxcdHZlYzIgbWlwSW5mbyA9IE1pcExldmVsSW5mbyhyZWZsZWN0ZWREaXJlY3Rpb24sIHIxLCByb3VnaG5lc3MpO1xcXFxuXFxcXHRmbG9hdCBzID0gbWlwSW5mby55O1xcXFxuXFxcXHRmbG9hdCBsZXZlbDAgPSBtaXBJbmZvLng7XFxcXG5cXFxcdGZsb2F0IGxldmVsMSA9IGxldmVsMCArIDEuMDtcXFxcblxcXFx0bGV2ZWwxID0gbGV2ZWwxID4gNS4wID8gNS4wIDogbGV2ZWwxO1xcXFxuXFxcXHRsZXZlbDAgKz0gbWluKCBmbG9vciggcyArIDAuNSApLCA1LjAgKTtcXFxcblxcXFx0dmVjMiB1dl8xMCA9IGdldEN1YmVVVihyZWZsZWN0ZWREaXJlY3Rpb24sIHIxLCBsZXZlbDApO1xcXFxuXFxcXHR2ZWM0IGNvbG9yMTAgPSBlbnZNYXBUZXhlbFRvTGluZWFyKHRleHR1cmUyRChlbnZNYXAsIHV2XzEwKSk7XFxcXG5cXFxcdHZlYzIgdXZfMjAgPSBnZXRDdWJlVVYocmVmbGVjdGVkRGlyZWN0aW9uLCByMiwgbGV2ZWwwKTtcXFxcblxcXFx0dmVjNCBjb2xvcjIwID0gZW52TWFwVGV4ZWxUb0xpbmVhcih0ZXh0dXJlMkQoZW52TWFwLCB1dl8yMCkpO1xcXFxuXFxcXHR2ZWM0IHJlc3VsdCA9IG1peChjb2xvcjEwLCBjb2xvcjIwLCB0KTtcXFxcblxcXFx0cmV0dXJuIHZlYzQocmVzdWx0LnJnYiwgMS4wKTtcXFxcbn1cXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZGVmYXVsdG5vcm1hbF92ZXJ0ZXggPSBcXFwidmVjMyB0cmFuc2Zvcm1lZE5vcm1hbCA9IG5vcm1hbE1hdHJpeCAqIG9iamVjdE5vcm1hbDtcXFxcbiNpZmRlZiBGTElQX1NJREVEXFxcXG5cXFxcdHRyYW5zZm9ybWVkTm9ybWFsID0gLSB0cmFuc2Zvcm1lZE5vcm1hbDtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4ID0gXFxcIiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXFxcXG5cXFxcdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBkaXNwbGFjZW1lbnRtYXBfdmVydGV4ID0gXFxcIiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXFxcXG5cXFxcdHRyYW5zZm9ybWVkICs9IG5vcm1hbGl6ZSggb2JqZWN0Tm9ybWFsICkgKiAoIHRleHR1cmUyRCggZGlzcGxhY2VtZW50TWFwLCB1diApLnggKiBkaXNwbGFjZW1lbnRTY2FsZSArIGRpc3BsYWNlbWVudEJpYXMgKTtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZW1pc3NpdmVtYXBfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxcXFxuXFxcXHR2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTtcXFxcblxcXFx0ZW1pc3NpdmVDb2xvci5yZ2IgPSBlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIoIGVtaXNzaXZlQ29sb3IgKS5yZ2I7XFxcXG5cXFxcdHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudCA9IFxcXCIjaWZkZWYgVVNFX0VNSVNTSVZFTUFQXFxcXG5cXFxcdHVuaWZvcm0gc2FtcGxlcjJEIGVtaXNzaXZlTWFwO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBlbmNvZGluZ3NfZnJhZ21lbnQgPSBcXFwiICBnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTtcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGVuY29kaW5nc19wYXJzX2ZyYWdtZW50ID0gXFxcIlxcXFxudmVjNCBMaW5lYXJUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcXFxcblxcXFx0cmV0dXJuIHZhbHVlO1xcXFxufVxcXFxudmVjNCBHYW1tYVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBnYW1tYUZhY3RvciApIHtcXFxcblxcXFx0cmV0dXJuIHZlYzQoIHBvdyggdmFsdWUueHl6LCB2ZWMzKCBnYW1tYUZhY3RvciApICksIHZhbHVlLncgKTtcXFxcbn1cXFxcbnZlYzQgTGluZWFyVG9HYW1tYSggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XFxcXG5cXFxcdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnh5eiwgdmVjMyggMS4wIC8gZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS53ICk7XFxcXG59XFxcXG52ZWM0IHNSR0JUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcXFxcblxcXFx0cmV0dXJuIHZlYzQoIG1peCggcG93KCB2YWx1ZS5yZ2IgKiAwLjk0Nzg2NzI5ODYgKyB2ZWMzKCAwLjA1MjEzMjcwMTQgKSwgdmVjMyggMi40ICkgKSwgdmFsdWUucmdiICogMC4wNzczOTkzODA4LCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDQwNDUgKSApICkgKSwgdmFsdWUudyApO1xcXFxufVxcXFxudmVjNCBMaW5lYXJUb3NSR0IoIGluIHZlYzQgdmFsdWUgKSB7XFxcXG5cXFxcdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCAwLjQxNjY2ICkgKSAqIDEuMDU1IC0gdmVjMyggMC4wNTUgKSwgdmFsdWUucmdiICogMTIuOTIsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHZhbHVlLnJnYiwgdmVjMyggMC4wMDMxMzA4ICkgKSApICksIHZhbHVlLncgKTtcXFxcbn1cXFxcbnZlYzQgUkdCRVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xcXFxuXFxcXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogZXhwMiggdmFsdWUuYSAqIDI1NS4wIC0gMTI4LjAgKSwgMS4wICk7XFxcXG59XFxcXG52ZWM0IExpbmVhclRvUkdCRSggaW4gdmVjNCB2YWx1ZSApIHtcXFxcblxcXFx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4KCBtYXgoIHZhbHVlLnIsIHZhbHVlLmcgKSwgdmFsdWUuYiApO1xcXFxuXFxcXHRmbG9hdCBmRXhwID0gY2xhbXAoIGNlaWwoIGxvZzIoIG1heENvbXBvbmVudCApICksIC0xMjguMCwgMTI3LjAgKTtcXFxcblxcXFx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvIGV4cDIoIGZFeHAgKSwgKCBmRXhwICsgMTI4LjAgKSAvIDI1NS4wICk7XFxcXG59XFxcXG52ZWM0IFJHQk1Ub0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XFxcXG5cXFxcdHJldHVybiB2ZWM0KCB2YWx1ZS54eXogKiB2YWx1ZS53ICogbWF4UmFuZ2UsIDEuMCApO1xcXFxufVxcXFxudmVjNCBMaW5lYXJUb1JHQk0oIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xcXFxuXFxcXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLngsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XFxcXG5cXFxcdGZsb2F0IE0gICAgICA9IGNsYW1wKCBtYXhSR0IgLyBtYXhSYW5nZSwgMC4wLCAxLjAgKTtcXFxcblxcXFx0TSAgICAgICAgICAgID0gY2VpbCggTSAqIDI1NS4wICkgLyAyNTUuMDtcXFxcblxcXFx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvICggTSAqIG1heFJhbmdlICksIE0gKTtcXFxcbn1cXFxcbnZlYzQgUkdCRFRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcXFxcblxcXFx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggKCBtYXhSYW5nZSAvIDI1NS4wICkgLyB2YWx1ZS5hICksIDEuMCApO1xcXFxufVxcXFxudmVjNCBMaW5lYXJUb1JHQkQoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xcXFxuXFxcXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLngsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XFxcXG5cXFxcdGZsb2F0IEQgICAgICA9IG1heCggbWF4UmFuZ2UgLyBtYXhSR0IsIDEuMCApO1xcXFxuXFxcXHREICAgICAgICAgICAgPSBtaW4oIGZsb29yKCBEICkgLyAyNTUuMCwgMS4wICk7XFxcXG5cXFxcdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiAoIEQgKiAoIDI1NS4wIC8gbWF4UmFuZ2UgKSApLCBEICk7XFxcXG59XFxcXG5jb25zdCBtYXQzIGNMb2dMdXZNID0gbWF0MyggMC4yMjA5LCAwLjMzOTAsIDAuNDE4NCwgMC4xMTM4LCAwLjY3ODAsIDAuNzMxOSwgMC4wMTAyLCAwLjExMzAsIDAuMjk2OSApO1xcXFxudmVjNCBMaW5lYXJUb0xvZ0x1diggaW4gdmVjNCB2YWx1ZSApICB7XFxcXG5cXFxcdHZlYzMgWHBfWV9YWVpwID0gdmFsdWUucmdiICogY0xvZ0x1dk07XFxcXG5cXFxcdFhwX1lfWFlacCA9IG1heChYcF9ZX1hZWnAsIHZlYzMoMWUtNiwgMWUtNiwgMWUtNikpO1xcXFxuXFxcXHR2ZWM0IHZSZXN1bHQ7XFxcXG5cXFxcdHZSZXN1bHQueHkgPSBYcF9ZX1hZWnAueHkgLyBYcF9ZX1hZWnAuejtcXFxcblxcXFx0ZmxvYXQgTGUgPSAyLjAgKiBsb2cyKFhwX1lfWFlacC55KSArIDEyNy4wO1xcXFxuXFxcXHR2UmVzdWx0LncgPSBmcmFjdChMZSk7XFxcXG5cXFxcdHZSZXN1bHQueiA9IChMZSAtIChmbG9vcih2UmVzdWx0LncqMjU1LjApKS8yNTUuMCkvMjU1LjA7XFxcXG5cXFxcdHJldHVybiB2UmVzdWx0O1xcXFxufVxcXFxuY29uc3QgbWF0MyBjTG9nTHV2SW52ZXJzZU0gPSBtYXQzKCA2LjAwMTQsIC0yLjcwMDgsIC0xLjc5OTYsIC0xLjMzMjAsIDMuMTAyOSwgLTUuNzcyMSwgMC4zMDA4LCAtMS4wODgyLCA1LjYyNjggKTtcXFxcbnZlYzQgTG9nTHV2VG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XFxcXG5cXFxcdGZsb2F0IExlID0gdmFsdWUueiAqIDI1NS4wICsgdmFsdWUudztcXFxcblxcXFx0dmVjMyBYcF9ZX1hZWnA7XFxcXG5cXFxcdFhwX1lfWFlacC55ID0gZXhwMigoTGUgLSAxMjcuMCkgLyAyLjApO1xcXFxuXFxcXHRYcF9ZX1hZWnAueiA9IFhwX1lfWFlacC55IC8gdmFsdWUueTtcXFxcblxcXFx0WHBfWV9YWVpwLnggPSB2YWx1ZS54ICogWHBfWV9YWVpwLno7XFxcXG5cXFxcdHZlYzMgdlJHQiA9IFhwX1lfWFlacC5yZ2IgKiBjTG9nTHV2SW52ZXJzZU07XFxcXG5cXFxcdHJldHVybiB2ZWM0KCBtYXgodlJHQiwgMC4wKSwgMS4wICk7XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBlbnZtYXBfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9FTlZNQVBcXFxcblxcXFx0I2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFBIT05HIClcXFxcblxcXFx0XFxcXHR2ZWMzIGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7XFxcXG5cXFxcdFxcXFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xcXFxuXFxcXHRcXFxcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwgKTtcXFxcblxcXFx0XFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdFxcXFx0dmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcXFxcblxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHR2ZWMzIHJlZmxlY3RWZWMgPSB2UmVmbGVjdDtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXFxcXG5cXFxcdFxcXFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKSApO1xcXFxuXFxcXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9FUVVJUkVDIClcXFxcblxcXFx0XFxcXHR2ZWMyIHNhbXBsZVVWO1xcXFxuXFxcXHRcXFxcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIHJlZmxlY3RWZWMgKTtcXFxcblxcXFx0XFxcXHRzYW1wbGVVVi55ID0gYXNpbiggY2xhbXAoIHJlZmxlY3RWZWMueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xcXFxuXFxcXHRcXFxcdHNhbXBsZVVWLnggPSBhdGFuKCByZWZsZWN0VmVjLnosIHJlZmxlY3RWZWMueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7XFxcXG5cXFxcdFxcXFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmUyRCggZW52TWFwLCBzYW1wbGVVViApO1xcXFxuXFxcXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9TUEhFUkUgKVxcXFxuXFxcXHRcXFxcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIHJlZmxlY3RWZWMgKTtcXFxcblxcXFx0XFxcXHR2ZWMzIHJlZmxlY3RWaWV3ID0gbm9ybWFsaXplKCAoIHZpZXdNYXRyaXggKiB2ZWM0KCByZWZsZWN0VmVjLCAwLjAgKSApLnh5eiArIHZlYzMoIDAuMCwgMC4wLCAxLjAgKSApO1xcXFxuXFxcXHRcXFxcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlMkQoIGVudk1hcCwgcmVmbGVjdFZpZXcueHkgKiAwLjUgKyAwLjUgKTtcXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHR2ZWM0IGVudkNvbG9yID0gdmVjNCggMC4wICk7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHRlbnZDb2xvciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudkNvbG9yICk7XFxcXG5cXFxcdCNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFlcXFxcblxcXFx0XFxcXHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XFxcXG5cXFxcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19NSVggKVxcXFxuXFxcXHRcXFxcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xcXFxuXFxcXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREIClcXFxcblxcXFx0XFxcXHRvdXRnb2luZ0xpZ2h0ICs9IGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7XFxcXG5cXFxcdCNlbmRpZlxcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBlbnZtYXBfcGFyc19mcmFnbWVudCA9IFxcXCIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQoIFBIWVNJQ0FMIClcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XFxcXG5cXFxcdHVuaWZvcm0gZmxvYXQgZW52TWFwSW50ZW5zaXR5O1xcXFxuI2VuZGlmXFxcXG4jaWZkZWYgVVNFX0VOVk1BUFxcXFxuXFxcXHQjaWYgISBkZWZpbmVkKCBQSFlTSUNBTCApICYmICggZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKSApXFxcXG5cXFxcdFxcXFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcXFxcblxcXFx0XFxcXHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHR1bmlmb3JtIGZsb2F0IGZsaXBFbnZNYXA7XFxcXG5cXFxcdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBQSE9ORyApIHx8IGRlZmluZWQoIFBIWVNJQ0FMIClcXFxcblxcXFx0XFxcXHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHR2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7XFxcXG5cXFxcdCNlbmRpZlxcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBlbnZtYXBfcGFyc192ZXJ0ZXggPSBcXFwiI2lmZGVmIFVTRV9FTlZNQVBcXFxcblxcXFx0I2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFBIT05HIClcXFxcblxcXFx0XFxcXHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XFxcXG5cXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xcXFxuXFxcXHRcXFxcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xcXFxuXFxcXHQjZW5kaWZcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZW52bWFwX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX0VOVk1BUFxcXFxuXFxcXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKVxcXFxuXFxcXHRcXFxcdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XFxcXG5cXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0dmVjMyBjYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggd29ybGRQb3NpdGlvbi54eXogLSBjYW1lcmFQb3NpdGlvbiApO1xcXFxuXFxcXHRcXFxcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xcXFxuXFxcXHRcXFxcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXFxcXG5cXFxcdFxcXFx0XFxcXHR2UmVmbGVjdCA9IHJlZmxlY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCApO1xcXFxuXFxcXHRcXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0XFxcXHR2UmVmbGVjdCA9IHJlZnJhY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XFxcXG5cXFxcdFxcXFx0I2VuZGlmXFxcXG5cXFxcdCNlbmRpZlxcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBmb2dfdmVydGV4ID0gXFxcIlxcXFxuI2lmZGVmIFVTRV9GT0dcXFxcbmZvZ0RlcHRoID0gLW12UG9zaXRpb24uejtcXFxcbiNlbmRpZlxcXCI7XFxuXFxuXFx0dmFyIGZvZ19wYXJzX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX0ZPR1xcXFxuICB2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBmb2dfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9GT0dcXFxcblxcXFx0I2lmZGVmIEZPR19FWFAyXFxcXG5cXFxcdFxcXFx0ZmxvYXQgZm9nRmFjdG9yID0gd2hpdGVDb21wbGltZW50KCBleHAyKCAtIGZvZ0RlbnNpdHkgKiBmb2dEZW5zaXR5ICogZm9nRGVwdGggKiBmb2dEZXB0aCAqIExPRzIgKSApO1xcXFxuXFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdGZsb2F0IGZvZ0ZhY3RvciA9IHNtb290aHN0ZXAoIGZvZ05lYXIsIGZvZ0ZhciwgZm9nRGVwdGggKTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdGdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIGdsX0ZyYWdDb2xvci5yZ2IsIGZvZ0NvbG9yLCBmb2dGYWN0b3IgKTtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZm9nX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9GT0dcXFxcblxcXFx0dW5pZm9ybSB2ZWMzIGZvZ0NvbG9yO1xcXFxuXFxcXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xcXFxuXFxcXHQjaWZkZWYgRk9HX0VYUDJcXFxcblxcXFx0XFxcXHR1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7XFxcXG5cXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0dW5pZm9ybSBmbG9hdCBmb2dOZWFyO1xcXFxuXFxcXHRcXFxcdHVuaWZvcm0gZmxvYXQgZm9nRmFyO1xcXFxuXFxcXHQjZW5kaWZcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudCA9IFxcXCIjaWZkZWYgVE9PTlxcXFxuXFxcXHR1bmlmb3JtIHNhbXBsZXIyRCBncmFkaWVudE1hcDtcXFxcblxcXFx0dmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkge1xcXFxuXFxcXHRcXFxcdGZsb2F0IGRvdE5MID0gZG90KCBub3JtYWwsIGxpZ2h0RGlyZWN0aW9uICk7XFxcXG5cXFxcdFxcXFx0dmVjMiBjb29yZCA9IHZlYzIoIGRvdE5MICogMC41ICsgMC41LCAwLjAgKTtcXFxcblxcXFx0XFxcXHQjaWZkZWYgVVNFX0dSQURJRU5UTUFQXFxcXG5cXFxcdFxcXFx0XFxcXHRyZXR1cm4gdGV4dHVyZTJEKCBncmFkaWVudE1hcCwgY29vcmQgKS5yZ2I7XFxcXG5cXFxcdFxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHRcXFxcdHJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7XFxcXG5cXFxcdFxcXFx0I2VuZGlmXFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbGlnaHRtYXBfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9MSUdIVE1BUFxcXFxuXFxcXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gUEkgKiB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICkueHl6ICogbGlnaHRNYXBJbnRlbnNpdHk7XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9MSUdIVE1BUFxcXFxuXFxcXHR1bmlmb3JtIHNhbXBsZXIyRCBsaWdodE1hcDtcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBsaWdodE1hcEludGVuc2l0eTtcXFxcbiNlbmRpZlxcXCI7XFxuXFxuXFx0dmFyIGxpZ2h0c19sYW1iZXJ0X3ZlcnRleCA9IFxcXCJ2ZWMzIGRpZmZ1c2UgPSB2ZWMzKCAxLjAgKTtcXFxcbkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XFxcXG5nZW9tZXRyeS5wb3NpdGlvbiA9IG12UG9zaXRpb24ueHl6O1xcXFxuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xcXFxuZ2VvbWV0cnkudmlld0RpciA9IG5vcm1hbGl6ZSggLW12UG9zaXRpb24ueHl6ICk7XFxcXG5HZW9tZXRyaWNDb250ZXh0IGJhY2tHZW9tZXRyeTtcXFxcbmJhY2tHZW9tZXRyeS5wb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uO1xcXFxuYmFja0dlb21ldHJ5Lm5vcm1hbCA9IC1nZW9tZXRyeS5ub3JtYWw7XFxcXG5iYWNrR2VvbWV0cnkudmlld0RpciA9IGdlb21ldHJ5LnZpZXdEaXI7XFxcXG52TGlnaHRGcm9udCA9IHZlYzMoIDAuMCApO1xcXFxuI2lmZGVmIERPVUJMRV9TSURFRFxcXFxuXFxcXHR2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7XFxcXG4jZW5kaWZcXFxcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XFxcXG5mbG9hdCBkb3ROTDtcXFxcbnZlYzMgZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xcXFxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXFxcXG5cXFxcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XFxcXG5cXFxcdFxcXFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xcXFxuXFxcXHRcXFxcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xcXFxuXFxcXHRcXFxcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XFxcXG5cXFxcdFxcXFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XFxcXG5cXFxcdFxcXFx0I2lmZGVmIERPVUJMRV9TSURFRFxcXFxuXFxcXHRcXFxcdFxcXFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XFxcXG5cXFxcdFxcXFx0I2VuZGlmXFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcXFxcblxcXFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XFxcXG5cXFxcdFxcXFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XFxcXG5cXFxcdFxcXFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcXFxcblxcXFx0XFxcXHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcXFxcblxcXFx0XFxcXHQjaWZkZWYgRE9VQkxFX1NJREVEXFxcXG5cXFxcdFxcXFx0XFxcXHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcXFxcblxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0fVxcXFxuI2VuZGlmXFxcXG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXFxcXG5cXFxcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXFxcblxcXFx0XFxcXHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcXFxcblxcXFx0XFxcXHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xcXFxuXFxcXHRcXFxcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xcXFxuXFxcXHRcXFxcdCNpZmRlZiBET1VCTEVfU0lERURcXFxcblxcXFx0XFxcXHRcXFxcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xcXFxuXFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHR9XFxcXG4jZW5kaWZcXFxcbiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwXFxcXG5cXFxcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcXFxcblxcXFx0XFxcXHR2TGlnaHRGcm9udCArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XFxcXG5cXFxcdFxcXFx0I2lmZGVmIERPVUJMRV9TSURFRFxcXFxuXFxcXHRcXFxcdFxcXFx0dkxpZ2h0QmFjayArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGJhY2tHZW9tZXRyeSApO1xcXFxuXFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHR9XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGxpZ2h0c19wYXJzID0gXFxcInVuaWZvcm0gdmVjMyBhbWJpZW50TGlnaHRDb2xvcjtcXFxcbnZlYzMgZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBhbWJpZW50TGlnaHRDb2xvciApIHtcXFxcblxcXFx0dmVjMyBpcnJhZGlhbmNlID0gYW1iaWVudExpZ2h0Q29sb3I7XFxcXG5cXFxcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xcXFxuXFxcXHRcXFxcdGlycmFkaWFuY2UgKj0gUEk7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHRyZXR1cm4gaXJyYWRpYW5jZTtcXFxcbn1cXFxcbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcXFxcblxcXFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHQge1xcXFxuXFxcXHRcXFxcdHZlYzMgZGlyZWN0aW9uO1xcXFxuXFxcXHRcXFxcdHZlYzMgY29sb3I7XFxcXG5cXFxcdFxcXFx0aW50IHNoYWRvdztcXFxcblxcXFx0XFxcXHRmbG9hdCBzaGFkb3dCaWFzO1xcXFxuXFxcXHRcXFxcdGZsb2F0IHNoYWRvd1JhZGl1cztcXFxcblxcXFx0XFxcXHR2ZWMyIHNoYWRvd01hcFNpemU7XFxcXG5cXFxcdH07XFxcXG5cXFxcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0c1sgTlVNX0RJUl9MSUdIVFMgXTtcXFxcblxcXFx0dm9pZCBnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcXFxcblxcXFx0XFxcXHRkaXJlY3RMaWdodC5jb2xvciA9IGRpcmVjdGlvbmFsTGlnaHQuY29sb3I7XFxcXG5cXFxcdFxcXFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uYWxMaWdodC5kaXJlY3Rpb247XFxcXG5cXFxcdFxcXFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IHRydWU7XFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXFxcXG5cXFxcdHN0cnVjdCBQb2ludExpZ2h0IHtcXFxcblxcXFx0XFxcXHR2ZWMzIHBvc2l0aW9uO1xcXFxuXFxcXHRcXFxcdHZlYzMgY29sb3I7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgZGlzdGFuY2U7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgZGVjYXk7XFxcXG5cXFxcdFxcXFx0aW50IHNoYWRvdztcXFxcblxcXFx0XFxcXHRmbG9hdCBzaGFkb3dCaWFzO1xcXFxuXFxcXHRcXFxcdGZsb2F0IHNoYWRvd1JhZGl1cztcXFxcblxcXFx0XFxcXHR2ZWMyIHNoYWRvd01hcFNpemU7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcXFxcblxcXFx0XFxcXHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XFxcXG5cXFxcdH07XFxcXG5cXFxcdHVuaWZvcm0gUG9pbnRMaWdodCBwb2ludExpZ2h0c1sgTlVNX1BPSU5UX0xJR0hUUyBdO1xcXFxuXFxcXHR2b2lkIGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBQb2ludExpZ2h0IHBvaW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xcXFxuXFxcXHRcXFxcdHZlYzMgbFZlY3RvciA9IHBvaW50TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcXFxcblxcXFx0XFxcXHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcXFxcblxcXFx0XFxcXHRmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7XFxcXG5cXFxcdFxcXFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBwb2ludExpZ2h0LmNvbG9yO1xcXFxuXFxcXHRcXFxcdGRpcmVjdExpZ2h0LmNvbG9yICo9IHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHBvaW50TGlnaHQuZGlzdGFuY2UsIHBvaW50TGlnaHQuZGVjYXkgKTtcXFxcblxcXFx0XFxcXHRkaXJlY3RMaWdodC52aXNpYmxlID0gKCBkaXJlY3RMaWdodC5jb2xvciAhPSB2ZWMzKCAwLjAgKSApO1xcXFxuXFxcXHR9XFxcXG4jZW5kaWZcXFxcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXFxcXG5cXFxcdHN0cnVjdCBTcG90TGlnaHQge1xcXFxuXFxcXHRcXFxcdHZlYzMgcG9zaXRpb247XFxcXG5cXFxcdFxcXFx0dmVjMyBkaXJlY3Rpb247XFxcXG5cXFxcdFxcXFx0dmVjMyBjb2xvcjtcXFxcblxcXFx0XFxcXHRmbG9hdCBkaXN0YW5jZTtcXFxcblxcXFx0XFxcXHRmbG9hdCBkZWNheTtcXFxcblxcXFx0XFxcXHRmbG9hdCBjb25lQ29zO1xcXFxuXFxcXHRcXFxcdGZsb2F0IHBlbnVtYnJhQ29zO1xcXFxuXFxcXHRcXFxcdGludCBzaGFkb3c7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgc2hhZG93QmlhcztcXFxcblxcXFx0XFxcXHRmbG9hdCBzaGFkb3dSYWRpdXM7XFxcXG5cXFxcdFxcXFx0dmVjMiBzaGFkb3dNYXBTaXplO1xcXFxuXFxcXHR9O1xcXFxuXFxcXHR1bmlmb3JtIFNwb3RMaWdodCBzcG90TGlnaHRzWyBOVU1fU1BPVF9MSUdIVFMgXTtcXFxcblxcXFx0dm9pZCBnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBTcG90TGlnaHQgc3BvdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCAgKSB7XFxcXG5cXFxcdFxcXFx0dmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XFxcXG5cXFxcdFxcXFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IGFuZ2xlQ29zID0gZG90KCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIHNwb3RMaWdodC5kaXJlY3Rpb24gKTtcXFxcblxcXFx0XFxcXHRpZiAoIGFuZ2xlQ29zID4gc3BvdExpZ2h0LmNvbmVDb3MgKSB7XFxcXG5cXFxcdFxcXFx0XFxcXHRmbG9hdCBzcG90RWZmZWN0ID0gc21vb3Roc3RlcCggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTtcXFxcblxcXFx0XFxcXHRcXFxcdGRpcmVjdExpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yO1xcXFxuXFxcXHRcXFxcdFxcXFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gc3BvdEVmZmVjdCAqIHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHNwb3RMaWdodC5kaXN0YW5jZSwgc3BvdExpZ2h0LmRlY2F5ICk7XFxcXG5cXFxcdFxcXFx0XFxcXHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcXFxcblxcXFx0XFxcXHR9IGVsc2Uge1xcXFxuXFxcXHRcXFxcdFxcXFx0ZGlyZWN0TGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTtcXFxcblxcXFx0XFxcXHRcXFxcdGRpcmVjdExpZ2h0LnZpc2libGUgPSBmYWxzZTtcXFxcblxcXFx0XFxcXHR9XFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxcXFxuXFxcXHRzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7XFxcXG5cXFxcdFxcXFx0dmVjMyBjb2xvcjtcXFxcblxcXFx0XFxcXHR2ZWMzIHBvc2l0aW9uO1xcXFxuXFxcXHRcXFxcdHZlYzMgaGFsZldpZHRoO1xcXFxuXFxcXHRcXFxcdHZlYzMgaGFsZkhlaWdodDtcXFxcblxcXFx0fTtcXFxcblxcXFx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjTWF0O1xcXFx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjTWFnO1xcXFxuXFxcXHR1bmlmb3JtIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodHNbIE5VTV9SRUNUX0FSRUFfTElHSFRTIF07XFxcXG4jZW5kaWZcXFxcbiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwXFxcXG5cXFxcdHN0cnVjdCBIZW1pc3BoZXJlTGlnaHQge1xcXFxuXFxcXHRcXFxcdHZlYzMgZGlyZWN0aW9uO1xcXFxuXFxcXHRcXFxcdHZlYzMgc2t5Q29sb3I7XFxcXG5cXFxcdFxcXFx0dmVjMyBncm91bmRDb2xvcjtcXFxcblxcXFx0fTtcXFxcblxcXFx0dW5pZm9ybSBIZW1pc3BoZXJlTGlnaHQgaGVtaXNwaGVyZUxpZ2h0c1sgTlVNX0hFTUlfTElHSFRTIF07XFxcXG5cXFxcdHZlYzMgZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gSGVtaXNwaGVyZUxpZ2h0IGhlbWlMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcXFxcblxcXFx0XFxcXHRmbG9hdCBkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoZW1pTGlnaHQuZGlyZWN0aW9uICk7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgaGVtaURpZmZ1c2VXZWlnaHQgPSAwLjUgKiBkb3ROTCArIDAuNTtcXFxcblxcXFx0XFxcXHR2ZWMzIGlycmFkaWFuY2UgPSBtaXgoIGhlbWlMaWdodC5ncm91bmRDb2xvciwgaGVtaUxpZ2h0LnNreUNvbG9yLCBoZW1pRGlmZnVzZVdlaWdodCApO1xcXFxuXFxcXHRcXFxcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xcXFxuXFxcXHRcXFxcdFxcXFx0aXJyYWRpYW5jZSAqPSBQSTtcXFxcblxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0XFxcXHRyZXR1cm4gaXJyYWRpYW5jZTtcXFxcblxcXFx0fVxcXFxuI2VuZGlmXFxcXG4jaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFBIWVNJQ0FMIClcXFxcblxcXFx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XFxcXG5cXFxcdFxcXFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xcXFxuXFxcXHRcXFxcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMzIHF1ZXJ5VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XFxcXG5cXFxcdFxcXFx0XFxcXHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcXFxcblxcXFx0XFxcXHRcXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcXFxcblxcXFx0XFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHRcXFxcdFxcXFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XFxcXG5cXFxcdFxcXFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMzIHF1ZXJ5VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggcXVlcnlWZWMsIDEuMCApO1xcXFxuXFxcXHRcXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWM0IGVudk1hcENvbG9yID0gdmVjNCggMC4wICk7XFxcXG5cXFxcdFxcXFx0I2VuZGlmXFxcXG5cXFxcdFxcXFx0cmV0dXJuIFBJICogZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xcXFxuXFxcXHR9XFxcXG5cXFxcdGZsb2F0IGdldFNwZWN1bGFyTUlQTGV2ZWwoIGNvbnN0IGluIGZsb2F0IGJsaW5uU2hpbmluZXNzRXhwb25lbnQsIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcXFxcblxcXFx0XFxcXHRmbG9hdCBtYXhNSVBMZXZlbFNjYWxhciA9IGZsb2F0KCBtYXhNSVBMZXZlbCApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IGRlc2lyZWRNSVBMZXZlbCA9IG1heE1JUExldmVsU2NhbGFyICsgMC43OTI0OCAtIDAuNSAqIGxvZzIoIHBvdzIoIGJsaW5uU2hpbmluZXNzRXhwb25lbnQgKSArIDEuMCApO1xcXFxuXFxcXHRcXFxcdHJldHVybiBjbGFtcCggZGVzaXJlZE1JUExldmVsLCAwLjAsIG1heE1JUExldmVsU2NhbGFyICk7XFxcXG5cXFxcdH1cXFxcblxcXFx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gZmxvYXQgYmxpbm5TaGluaW5lc3NFeHBvbmVudCwgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xcXFxuXFxcXHRcXFxcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCAtZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsICk7XFxcXG5cXFxcdFxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHRcXFxcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIC1nZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xcXFxuXFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHRcXFxcdHJlZmxlY3RWZWMgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCByZWZsZWN0VmVjLCB2aWV3TWF0cml4ICk7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgc3BlY3VsYXJNSVBMZXZlbCA9IGdldFNwZWN1bGFyTUlQTGV2ZWwoIGJsaW5uU2hpbmluZXNzRXhwb25lbnQsIG1heE1JUExldmVsICk7XFxcXG5cXFxcdFxcXFx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcXFxcblxcXFx0XFxcXHRcXFxcdHZlYzMgcXVlcnlSZWZsZWN0VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApO1xcXFxuXFxcXHRcXFxcdFxcXFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVMb2RFWFQoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCBzcGVjdWxhck1JUExldmVsICk7XFxcXG5cXFxcdFxcXFx0XFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCBzcGVjdWxhck1JUExldmVsICk7XFxcXG5cXFxcdFxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0XFxcXHRcXFxcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xcXFxuXFxcXHRcXFxcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxcXFxuXFxcXHRcXFxcdFxcXFx0dmVjMyBxdWVyeVJlZmxlY3RWZWMgPSB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICk7XFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVVihxdWVyeVJlZmxlY3RWZWMsIEJsaW5uRXhwb25lbnRUb0dHWFJvdWdobmVzcyhibGlublNoaW5pbmVzc0V4cG9uZW50KSk7XFxcXG5cXFxcdFxcXFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfRVFVSVJFQyApXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMyIHNhbXBsZVVWO1xcXFxuXFxcXHRcXFxcdFxcXFx0c2FtcGxlVVYueSA9IGFzaW4oIGNsYW1wKCByZWZsZWN0VmVjLnksIC0gMS4wLCAxLjAgKSApICogUkVDSVBST0NBTF9QSSArIDAuNTtcXFxcblxcXFx0XFxcXHRcXFxcdHNhbXBsZVVWLnggPSBhdGFuKCByZWZsZWN0VmVjLnosIHJlZmxlY3RWZWMueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7XFxcXG5cXFxcdFxcXFx0XFxcXHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlMkRMb2RFWFQoIGVudk1hcCwgc2FtcGxlVVYsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcXFxcblxcXFx0XFxcXHRcXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlMkQoIGVudk1hcCwgc2FtcGxlVVYsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcXFxcblxcXFx0XFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHRcXFxcdFxcXFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XFxcXG5cXFxcdFxcXFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfU1BIRVJFIClcXFxcblxcXFx0XFxcXHRcXFxcdHZlYzMgcmVmbGVjdFZpZXcgPSBub3JtYWxpemUoICggdmlld01hdHJpeCAqIHZlYzQoIHJlZmxlY3RWZWMsIDAuMCApICkueHl6ICsgdmVjMyggMC4wLDAuMCwxLjAgKSApO1xcXFxuXFxcXHRcXFxcdFxcXFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZTJETG9kRVhUKCBlbnZNYXAsIHJlZmxlY3RWaWV3Lnh5ICogMC41ICsgMC41LCBzcGVjdWxhck1JUExldmVsICk7XFxcXG5cXFxcdFxcXFx0XFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZTJEKCBlbnZNYXAsIHJlZmxlY3RWaWV3Lnh5ICogMC41ICsgMC41LCBzcGVjdWxhck1JUExldmVsICk7XFxcXG5cXFxcdFxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0XFxcXHRcXFxcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xcXFxuXFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHRcXFxcdHJldHVybiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbGlnaHRzX3Bob25nX2ZyYWdtZW50ID0gXFxcIkJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbDtcXFxcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7XFxcXG5tYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gc3BlY3VsYXI7XFxcXG5tYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyA9IHNoaW5pbmVzcztcXFxcbm1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGggPSBzcGVjdWxhclN0cmVuZ3RoO1xcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQgPSBcXFwidmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XFxcXG4jaWZuZGVmIEZMQVRfU0hBREVEXFxcXG5cXFxcdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xcXFxuI2VuZGlmXFxcXG5zdHJ1Y3QgQmxpbm5QaG9uZ01hdGVyaWFsIHtcXFxcblxcXFx0dmVjM1xcXFx0ZGlmZnVzZUNvbG9yO1xcXFxuXFxcXHR2ZWMzXFxcXHRzcGVjdWxhckNvbG9yO1xcXFxuXFxcXHRmbG9hdFxcXFx0c3BlY3VsYXJTaGluaW5lc3M7XFxcXG5cXFxcdGZsb2F0XFxcXHRzcGVjdWxhclN0cmVuZ3RoO1xcXFxufTtcXFxcbnZvaWQgUkVfRGlyZWN0X0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XFxcXG5cXFxcdCNpZmRlZiBUT09OXFxcXG5cXFxcdFxcXFx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICogZGlyZWN0TGlnaHQuY29sb3I7XFxcXG5cXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XFxcXG5cXFxcdFxcXFx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xcXFxuXFxcXHRcXFxcdGlycmFkaWFuY2UgKj0gUEk7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XFxcXG5cXFxcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgKSAqIG1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGg7XFxcXG59XFxcXG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XFxcXG5cXFxcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xcXFxufVxcXFxuI2RlZmluZSBSRV9EaXJlY3RcXFxcdFxcXFx0XFxcXHRcXFxcdFJFX0RpcmVjdF9CbGlublBob25nXFxcXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVxcXFx0XFxcXHRSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZ1xcXFxuI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApXFxcXHQoMClcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudCA9IFxcXCJQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsO1xcXFxubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYiAqICggMS4wIC0gbWV0YWxuZXNzRmFjdG9yICk7XFxcXG5tYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyA9IGNsYW1wKCByb3VnaG5lc3NGYWN0b3IsIDAuMDQsIDEuMCApO1xcXFxuI2lmZGVmIFNUQU5EQVJEXFxcXG5cXFxcdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XFxcXG4jZWxzZVxcXFxuXFxcXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCBNQVhJTVVNX1NQRUNVTEFSX0NPRUZGSUNJRU5UICogcG93MiggcmVmbGVjdGl2aXR5ICkgKSwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XFxcXG5cXFxcdG1hdGVyaWFsLmNsZWFyQ29hdCA9IHNhdHVyYXRlKCBjbGVhckNvYXQgKTtcXFxcdG1hdGVyaWFsLmNsZWFyQ29hdFJvdWdobmVzcyA9IGNsYW1wKCBjbGVhckNvYXRSb3VnaG5lc3MsIDAuMDQsIDEuMCApO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudCA9IFxcXCJzdHJ1Y3QgUGh5c2ljYWxNYXRlcmlhbCB7XFxcXG5cXFxcdHZlYzNcXFxcdGRpZmZ1c2VDb2xvcjtcXFxcblxcXFx0ZmxvYXRcXFxcdHNwZWN1bGFyUm91Z2huZXNzO1xcXFxuXFxcXHR2ZWMzXFxcXHRzcGVjdWxhckNvbG9yO1xcXFxuXFxcXHQjaWZuZGVmIFNUQU5EQVJEXFxcXG5cXFxcdFxcXFx0ZmxvYXQgY2xlYXJDb2F0O1xcXFxuXFxcXHRcXFxcdGZsb2F0IGNsZWFyQ29hdFJvdWdobmVzcztcXFxcblxcXFx0I2VuZGlmXFxcXG59O1xcXFxuI2RlZmluZSBNQVhJTVVNX1NQRUNVTEFSX0NPRUZGSUNJRU5UIDAuMTZcXFxcbiNkZWZpbmUgREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjA0XFxcXG5mbG9hdCBjbGVhckNvYXRESFJBcHByb3goIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkwgKSB7XFxcXG5cXFxcdHJldHVybiBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICsgKCAxLjAgLSBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICkgKiAoIHBvdyggMS4wIC0gZG90TkwsIDUuMCApICogcG93KCAxLjAgLSByb3VnaG5lc3MsIDIuMCApICk7XFxcXG59XFxcXG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwXFxcXG5cXFxcdHZvaWQgUkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsKCBjb25zdCBpbiBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xcXFxuXFxcXHRcXFxcdHZlYzMgbm9ybWFsID0gZ2VvbWV0cnkubm9ybWFsO1xcXFxuXFxcXHRcXFxcdHZlYzMgdmlld0RpciA9IGdlb21ldHJ5LnZpZXdEaXI7XFxcXG5cXFxcdFxcXFx0dmVjMyBwb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uO1xcXFxuXFxcXHRcXFxcdHZlYzMgbGlnaHRQb3MgPSByZWN0QXJlYUxpZ2h0LnBvc2l0aW9uO1xcXFxuXFxcXHRcXFxcdHZlYzMgaGFsZldpZHRoID0gcmVjdEFyZWFMaWdodC5oYWxmV2lkdGg7XFxcXG5cXFxcdFxcXFx0dmVjMyBoYWxmSGVpZ2h0ID0gcmVjdEFyZWFMaWdodC5oYWxmSGVpZ2h0O1xcXFxuXFxcXHRcXFxcdHZlYzMgbGlnaHRDb2xvciA9IHJlY3RBcmVhTGlnaHQuY29sb3I7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgcm91Z2huZXNzID0gbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3M7XFxcXG5cXFxcdFxcXFx0dmVjMyByZWN0Q29vcmRzWyA0IF07XFxcXG5cXFxcdFxcXFx0cmVjdENvb3Jkc1sgMCBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1xcXFx0XFxcXHRyZWN0Q29vcmRzWyAxIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7XFxcXG5cXFxcdFxcXFx0cmVjdENvb3Jkc1sgMiBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0O1xcXFxuXFxcXHRcXFxcdHJlY3RDb29yZHNbIDMgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDtcXFxcblxcXFx0XFxcXHR2ZWMyIHV2ID0gTFRDX1V2KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IG5vcm0gPSB0ZXh0dXJlMkQoIGx0Y01hZywgdXYgKS5hO1xcXFxuXFxcXHRcXFxcdHZlYzQgdCA9IHRleHR1cmUyRCggbHRjTWF0LCB1diApO1xcXFxuXFxcXHRcXFxcdG1hdDMgbUludiA9IG1hdDMoXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMzKCAgIDEsICAgMCwgdC55ICksXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMzKCAgIDAsIHQueiwgICAwICksXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMzKCB0LncsICAgMCwgdC54IClcXFxcblxcXFx0XFxcXHQpO1xcXFxuXFxcXHRcXFxcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGxpZ2h0Q29sb3IgKiBtYXRlcmlhbC5zcGVjdWxhckNvbG9yICogbm9ybSAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApO1xcXFxuXFxcXHRcXFxcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMSApLCByZWN0Q29vcmRzICk7XFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxudm9pZCBSRV9EaXJlY3RfUGh5c2ljYWwoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xcXFxuXFxcXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcXFxcblxcXFx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcXFxcblxcXFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXFxcXG5cXFxcdFxcXFx0aXJyYWRpYW5jZSAqPSBQSTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZm5kZWYgU1RBTkRBUkRcXFxcblxcXFx0XFxcXHRmbG9hdCBjbGVhckNvYXRESFIgPSBtYXRlcmlhbC5jbGVhckNvYXQgKiBjbGVhckNvYXRESFJBcHByb3goIG1hdGVyaWFsLmNsZWFyQ29hdFJvdWdobmVzcywgZG90TkwgKTtcXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHRmbG9hdCBjbGVhckNvYXRESFIgPSAwLjA7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyQ29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfR0dYKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICk7XFxcXG5cXFxcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gKCAxLjAgLSBjbGVhckNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XFxcXG5cXFxcdCNpZm5kZWYgU1RBTkRBUkRcXFxcblxcXFx0XFxcXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlICogbWF0ZXJpYWwuY2xlYXJDb2F0ICogQlJERl9TcGVjdWxhcl9HR1goIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBtYXRlcmlhbC5jbGVhckNvYXRSb3VnaG5lc3MgKTtcXFxcblxcXFx0I2VuZGlmXFxcXG59XFxcXG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcXFxcblxcXFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XFxcXG59XFxcXG52b2lkIFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgY2xlYXJDb2F0UmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xcXFxuXFxcXHQjaWZuZGVmIFNUQU5EQVJEXFxcXG5cXFxcdFxcXFx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IGRvdE5MID0gZG90TlY7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgY2xlYXJDb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJDb2F0ICogY2xlYXJDb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhckNvYXRSb3VnaG5lc3MsIGRvdE5MICk7XFxcXG5cXFxcdCNlbHNlXFxcXG5cXFxcdFxcXFx0ZmxvYXQgY2xlYXJDb2F0REhSID0gMC4wO1xcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyQ29hdERIUiApICogcmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0dHWF9FbnZpcm9ubWVudCggZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICk7XFxcXG5cXFxcdCNpZm5kZWYgU1RBTkRBUkRcXFxcblxcXFx0XFxcXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IGNsZWFyQ29hdFJhZGlhbmNlICogbWF0ZXJpYWwuY2xlYXJDb2F0ICogQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGdlb21ldHJ5LCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIG1hdGVyaWFsLmNsZWFyQ29hdFJvdWdobmVzcyApO1xcXFxuXFxcXHQjZW5kaWZcXFxcbn1cXFxcbiNkZWZpbmUgUkVfRGlyZWN0XFxcXHRcXFxcdFxcXFx0XFxcXHRSRV9EaXJlY3RfUGh5c2ljYWxcXFxcbiNkZWZpbmUgUkVfRGlyZWN0X1JlY3RBcmVhXFxcXHRcXFxcdFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbFxcXFxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcXFxcdFxcXFx0UkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsXFxcXG4jZGVmaW5lIFJFX0luZGlyZWN0U3BlY3VsYXJcXFxcdFxcXFx0UkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbFxcXFxuI2RlZmluZSBNYXRlcmlhbF9CbGlublNoaW5pbmVzc0V4cG9uZW50KCBtYXRlcmlhbCApICAgR0dYUm91Z2huZXNzVG9CbGlubkV4cG9uZW50KCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyApXFxcXG4jZGVmaW5lIE1hdGVyaWFsX0NsZWFyQ29hdF9CbGlublNoaW5pbmVzc0V4cG9uZW50KCBtYXRlcmlhbCApICAgR0dYUm91Z2huZXNzVG9CbGlubkV4cG9uZW50KCBtYXRlcmlhbC5jbGVhckNvYXRSb3VnaG5lc3MgKVxcXFxuZmxvYXQgY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgYW1iaWVudE9jY2x1c2lvbiwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xcXFxuXFxcXHRyZXR1cm4gc2F0dXJhdGUoIHBvdyggZG90TlYgKyBhbWJpZW50T2NjbHVzaW9uLCBleHAyKCAtIDE2LjAgKiByb3VnaG5lc3MgLSAxLjAgKSApIC0gMS4wICsgYW1iaWVudE9jY2x1c2lvbiApO1xcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbGlnaHRzX3RlbXBsYXRlID0gXFxcIlxcXFxuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcXFxcbmdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uO1xcXFxuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsO1xcXFxuZ2VvbWV0cnkudmlld0RpciA9IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xcXFxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcXFxcbiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcXFxcblxcXFx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xcXFxuXFxcXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0c1sgaSBdO1xcXFxuXFxcXHRcXFxcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXFxcblxcXFx0XFxcXHQjaWZkZWYgVVNFX1NIQURPV01BUFxcXFxuXFxcXHRcXFxcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIHBvaW50TGlnaHQuc2hhZG93LCBkaXJlY3RMaWdodC52aXNpYmxlICkgKSA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHQuc2hhZG93QmlhcywgcG9pbnRMaWdodC5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcXFxcblxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0XFxcXHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxuI2lmICggTlVNX1NQT1RfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXFxcXG5cXFxcdFNwb3RMaWdodCBzcG90TGlnaHQ7XFxcXG5cXFxcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcXFxcblxcXFx0XFxcXHRzcG90TGlnaHQgPSBzcG90TGlnaHRzWyBpIF07XFxcXG5cXFxcdFxcXFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcXFxcblxcXFx0XFxcXHQjaWZkZWYgVVNFX1NIQURPV01BUFxcXFxuXFxcXHRcXFxcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIHNwb3RMaWdodC5zaGFkb3csIGRpcmVjdExpZ2h0LnZpc2libGUgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XFxcXG5cXFxcdFxcXFx0I2VuZGlmXFxcXG5cXFxcdFxcXFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xcXFxuXFxcXHR9XFxcXG4jZW5kaWZcXFxcbiNpZiAoIE5VTV9ESVJfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXFxcXG5cXFxcdERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDtcXFxcblxcXFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XFxcXG5cXFxcdFxcXFx0ZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRzWyBpIF07XFxcXG5cXFxcdFxcXFx0Z2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xcXFxuXFxcXHRcXFxcdCNpZmRlZiBVU0VfU0hBRE9XTUFQXFxcXG5cXFxcdFxcXFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0aW9uYWxMaWdodC5zaGFkb3csIGRpcmVjdExpZ2h0LnZpc2libGUgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcXFxcblxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0XFxcXHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XFxcXG5cXFxcdH1cXFxcbiNlbmRpZlxcXFxuI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhIClcXFxcblxcXFx0UmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0O1xcXFxuXFxcXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUkVDVF9BUkVBX0xJR0hUUzsgaSArKyApIHtcXFxcblxcXFx0XFxcXHRyZWN0QXJlYUxpZ2h0ID0gcmVjdEFyZWFMaWdodHNbIGkgXTtcXFxcblxcXFx0XFxcXHRSRV9EaXJlY3RfUmVjdEFyZWEoIHJlY3RBcmVhTGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcXFxcblxcXFx0fVxcXFxuI2VuZGlmXFxcXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcXFxcblxcXFx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcXFxcblxcXFx0I2lmZGVmIFVTRV9MSUdIVE1BUFxcXFxuXFxcXHRcXFxcdHZlYzMgbGlnaHRNYXBJcnJhZGlhbmNlID0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApLnh5eiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xcXFxuXFxcXHRcXFxcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xcXFxuXFxcXHRcXFxcdFxcXFx0bGlnaHRNYXBJcnJhZGlhbmNlICo9IFBJO1xcXFxuXFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHRcXFxcdGlycmFkaWFuY2UgKz0gbGlnaHRNYXBJcnJhZGlhbmNlO1xcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2lmICggTlVNX0hFTUlfTElHSFRTID4gMCApXFxcXG5cXFxcdFxcXFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdFxcXFx0aXJyYWRpYW5jZSArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XFxcXG5cXFxcdFxcXFx0fVxcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBQSFlTSUNBTCApICYmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxcXFxuXFxcXHRcXFxcdGlycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0SXJyYWRpYW5jZSggZ2VvbWV0cnksIDggKTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdFJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xcXFxuI2VuZGlmXFxcXG4jaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxcXFxuXFxcXHR2ZWMzIHJhZGlhbmNlID0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LCBNYXRlcmlhbF9CbGlublNoaW5pbmVzc0V4cG9uZW50KCBtYXRlcmlhbCApLCA4ICk7XFxcXG5cXFxcdCNpZm5kZWYgU1RBTkRBUkRcXFxcblxcXFx0XFxcXHR2ZWMzIGNsZWFyQ29hdFJhZGlhbmNlID0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LCBNYXRlcmlhbF9DbGVhckNvYXRfQmxpbm5TaGluaW5lc3NFeHBvbmVudCggbWF0ZXJpYWwgKSwgOCApO1xcXFxuXFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdHZlYzMgY2xlYXJDb2F0UmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdFJFX0luZGlyZWN0U3BlY3VsYXIoIHJhZGlhbmNlLCBjbGVhckNvYXRSYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBsb2dkZXB0aGJ1Zl9mcmFnbWVudCA9IFxcXCIjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApXFxcXG5cXFxcdGdsX0ZyYWdEZXB0aEVYVCA9IGxvZzIoIHZGcmFnRGVwdGggKSAqIGxvZ0RlcHRoQnVmRkMgKiAwLjU7XFxcXG4jZW5kaWZcXFwiO1xcblxcblxcdHZhciBsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xcXFxuXFxcXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxcXFxuXFxcXHRcXFxcdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcXFxcblxcXFx0I2VuZGlmXFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4ID0gXFxcIiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcXFxcblxcXFx0I2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFRcXFxcblxcXFx0XFxcXHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XFxcXG4jZW5kaWZcXFwiO1xcblxcblxcdHZhciBsb2dkZXB0aGJ1Zl92ZXJ0ZXggPSBcXFwiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxcXFxuXFxcXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxcXFxuXFxcXHRcXFxcdHZGcmFnRGVwdGggPSAxLjAgKyBnbF9Qb3NpdGlvbi53O1xcXFxuXFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdGdsX1Bvc2l0aW9uLnogPSBsb2cyKCBtYXgoIEVQU0lMT04sIGdsX1Bvc2l0aW9uLncgKyAxLjAgKSApICogbG9nRGVwdGhCdWZGQyAtIDEuMDtcXFxcblxcXFx0XFxcXHRnbF9Qb3NpdGlvbi56ICo9IGdsX1Bvc2l0aW9uLnc7XFxcXG5cXFxcdCNlbmRpZlxcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBtYXBfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9NQVBcXFxcblxcXFx0dmVjNCB0ZXhlbENvbG9yID0gdGV4dHVyZTJEKCBtYXAsIHZVdiApO1xcXFxuXFxcXHR0ZXhlbENvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4ZWxDb2xvciApO1xcXFxuXFxcXHRkaWZmdXNlQ29sb3IgKj0gdGV4ZWxDb2xvcjtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbWFwX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9NQVBcXFxcblxcXFx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBtYXBfcGFydGljbGVfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9NQVBcXFxcblxcXFx0dmVjMiB1diA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCBnbF9Qb2ludENvb3JkLngsIDEuMCAtIGdsX1BvaW50Q29vcmQueSwgMSApICkueHk7XFxcXG5cXFxcdHZlYzQgbWFwVGV4ZWwgPSB0ZXh0dXJlMkQoIG1hcCwgdXYgKTtcXFxcblxcXFx0ZGlmZnVzZUNvbG9yICo9IG1hcFRleGVsVG9MaW5lYXIoIG1hcFRleGVsICk7XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBVU0VfTUFQXFxcXG5cXFxcdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcXFxcblxcXFx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBtZXRhbG5lc3NtYXBfZnJhZ21lbnQgPSBcXFwiZmxvYXQgbWV0YWxuZXNzRmFjdG9yID0gbWV0YWxuZXNzO1xcXFxuI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcXFxcblxcXFx0dmVjNCB0ZXhlbE1ldGFsbmVzcyA9IHRleHR1cmUyRCggbWV0YWxuZXNzTWFwLCB2VXYgKTtcXFxcblxcXFx0bWV0YWxuZXNzRmFjdG9yICo9IHRleGVsTWV0YWxuZXNzLmI7XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXFxcXG5cXFxcdHVuaWZvcm0gc2FtcGxlcjJEIG1ldGFsbmVzc01hcDtcXFxcbiNlbmRpZlxcXCI7XFxuXFxuXFx0dmFyIG1vcnBobm9ybWFsX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX01PUlBITk9STUFMU1xcXFxuXFxcXHRvYmplY3ROb3JtYWwgKz0gKCBtb3JwaE5vcm1hbDAgLSBub3JtYWwgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xcXFxuXFxcXHRvYmplY3ROb3JtYWwgKz0gKCBtb3JwaE5vcm1hbDEgLSBub3JtYWwgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xcXFxuXFxcXHRvYmplY3ROb3JtYWwgKz0gKCBtb3JwaE5vcm1hbDIgLSBub3JtYWwgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdO1xcXFxuXFxcXHRvYmplY3ROb3JtYWwgKz0gKCBtb3JwaE5vcm1hbDMgLSBub3JtYWwgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBtb3JwaHRhcmdldF9wYXJzX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xcXFxuXFxcXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDggXTtcXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcXFxcblxcXFx0I2VuZGlmXFxcXG4jZW5kaWZcXFwiO1xcblxcblxcdHZhciBtb3JwaHRhcmdldF92ZXJ0ZXggPSBcXFwiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFNcXFxcblxcXFx0dHJhbnNmb3JtZWQgKz0gKCBtb3JwaFRhcmdldDAgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XFxcXG5cXFxcdHRyYW5zZm9ybWVkICs9ICggbW9ycGhUYXJnZXQxIC0gcG9zaXRpb24gKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xcXFxuXFxcXHR0cmFuc2Zvcm1lZCArPSAoIG1vcnBoVGFyZ2V0MiAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcXFxcblxcXFx0dHJhbnNmb3JtZWQgKz0gKCBtb3JwaFRhcmdldDMgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XFxcXG5cXFxcdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xcXFxuXFxcXHR0cmFuc2Zvcm1lZCArPSAoIG1vcnBoVGFyZ2V0NCAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcXFxcblxcXFx0dHJhbnNmb3JtZWQgKz0gKCBtb3JwaFRhcmdldDUgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA1IF07XFxcXG5cXFxcdHRyYW5zZm9ybWVkICs9ICggbW9ycGhUYXJnZXQ2IC0gcG9zaXRpb24gKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNiBdO1xcXFxuXFxcXHR0cmFuc2Zvcm1lZCArPSAoIG1vcnBoVGFyZ2V0NyAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTtcXFxcblxcXFx0I2VuZGlmXFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIG5vcm1hbF9mcmFnbWVudCA9IFxcXCIjaWZkZWYgRkxBVF9TSEFERURcXFxcblxcXFx0dmVjMyBmZHggPSB2ZWMzKCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeCggdlZpZXdQb3NpdGlvbi55ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueiApICk7XFxcXG5cXFxcdHZlYzMgZmR5ID0gdmVjMyggZEZkeSggdlZpZXdQb3NpdGlvbi54ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnogKSApO1xcXFxuXFxcXHR2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggY3Jvc3MoIGZkeCwgZmR5ICkgKTtcXFxcbiNlbHNlXFxcXG5cXFxcdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCB2Tm9ybWFsICk7XFxcXG5cXFxcdCNpZmRlZiBET1VCTEVfU0lERURcXFxcblxcXFx0XFxcXHRub3JtYWwgPSBub3JtYWwgKiAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XFxcXG5cXFxcdCNlbmRpZlxcXFxuI2VuZGlmXFxcXG4jaWZkZWYgVVNFX05PUk1BTE1BUFxcXFxuXFxcXHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCApO1xcXFxuI2VsaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKVxcXFxuXFxcXHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsQXJiKCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBkSGR4eV9md2QoKSApO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBub3JtYWxtYXBfcGFyc19mcmFnbWVudCA9IFxcXCIjaWZkZWYgVVNFX05PUk1BTE1BUFxcXFxuXFxcXHR1bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxNYXA7XFxcXG5cXFxcdHVuaWZvcm0gdmVjMiBub3JtYWxTY2FsZTtcXFxcblxcXFx0dmVjMyBwZXJ0dXJiTm9ybWFsMkFyYiggdmVjMyBleWVfcG9zLCB2ZWMzIHN1cmZfbm9ybSApIHtcXFxcblxcXFx0XFxcXHR2ZWMzIHEwID0gdmVjMyggZEZkeCggZXllX3Bvcy54ICksIGRGZHgoIGV5ZV9wb3MueSApLCBkRmR4KCBleWVfcG9zLnogKSApO1xcXFxuXFxcXHRcXFxcdHZlYzMgcTEgPSB2ZWMzKCBkRmR5KCBleWVfcG9zLnggKSwgZEZkeSggZXllX3Bvcy55ICksIGRGZHkoIGV5ZV9wb3MueiApICk7XFxcXG5cXFxcdFxcXFx0dmVjMiBzdDAgPSBkRmR4KCB2VXYuc3QgKTtcXFxcblxcXFx0XFxcXHR2ZWMyIHN0MSA9IGRGZHkoIHZVdi5zdCApO1xcXFxuXFxcXHRcXFxcdHZlYzMgUyA9IG5vcm1hbGl6ZSggcTAgKiBzdDEudCAtIHExICogc3QwLnQgKTtcXFxcblxcXFx0XFxcXHR2ZWMzIFQgPSBub3JtYWxpemUoIC1xMCAqIHN0MS5zICsgcTEgKiBzdDAucyApO1xcXFxuXFxcXHRcXFxcdHZlYzMgTiA9IG5vcm1hbGl6ZSggc3VyZl9ub3JtICk7XFxcXG5cXFxcdFxcXFx0dmVjMyBtYXBOID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcXFxcblxcXFx0XFxcXHRtYXBOLnh5ID0gbm9ybWFsU2NhbGUgKiBtYXBOLnh5O1xcXFxuXFxcXHRcXFxcdG1hdDMgdHNuID0gbWF0MyggUywgVCwgTiApO1xcXFxuXFxcXHRcXFxcdHJldHVybiBub3JtYWxpemUoIHRzbiAqIG1hcE4gKTtcXFxcblxcXFx0fVxcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBwYWNraW5nID0gXFxcInZlYzMgcGFja05vcm1hbFRvUkdCKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCApIHtcXFxcblxcXFx0cmV0dXJuIG5vcm1hbGl6ZSggbm9ybWFsICkgKiAwLjUgKyAwLjU7XFxcXG59XFxcXG52ZWMzIHVucGFja1JHQlRvTm9ybWFsKCBjb25zdCBpbiB2ZWMzIHJnYiApIHtcXFxcblxcXFx0cmV0dXJuIDIuMCAqIHJnYi54eXogLSAxLjA7XFxcXG59XFxcXG5jb25zdCBmbG9hdCBQYWNrVXBzY2FsZSA9IDI1Ni4gLyAyNTUuO2NvbnN0IGZsb2F0IFVucGFja0Rvd25zY2FsZSA9IDI1NS4gLyAyNTYuO1xcXFxuY29uc3QgdmVjMyBQYWNrRmFjdG9ycyA9IHZlYzMoIDI1Ni4gKiAyNTYuICogMjU2LiwgMjU2LiAqIDI1Ni4sICAyNTYuICk7XFxcXG5jb25zdCB2ZWM0IFVucGFja0ZhY3RvcnMgPSBVbnBhY2tEb3duc2NhbGUgLyB2ZWM0KCBQYWNrRmFjdG9ycywgMS4gKTtcXFxcbmNvbnN0IGZsb2F0IFNoaWZ0UmlnaHQ4ID0gMS4gLyAyNTYuO1xcXFxudmVjNCBwYWNrRGVwdGhUb1JHQkEoIGNvbnN0IGluIGZsb2F0IHYgKSB7XFxcXG5cXFxcdHZlYzQgciA9IHZlYzQoIGZyYWN0KCB2ICogUGFja0ZhY3RvcnMgKSwgdiApO1xcXFxuXFxcXHRyLnl6dyAtPSByLnh5eiAqIFNoaWZ0UmlnaHQ4O1xcXFx0cmV0dXJuIHIgKiBQYWNrVXBzY2FsZTtcXFxcbn1cXFxcbmZsb2F0IHVucGFja1JHQkFUb0RlcHRoKCBjb25zdCBpbiB2ZWM0IHYgKSB7XFxcXG5cXFxcdHJldHVybiBkb3QoIHYsIFVucGFja0ZhY3RvcnMgKTtcXFxcbn1cXFxcbmZsb2F0IHZpZXdaVG9PcnRob2dyYXBoaWNEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcXFxcblxcXFx0cmV0dXJuICggdmlld1ogKyBuZWFyICkgLyAoIG5lYXIgLSBmYXIgKTtcXFxcbn1cXFxcbmZsb2F0IG9ydGhvZ3JhcGhpY0RlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgbGluZWFyQ2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcXFxcblxcXFx0cmV0dXJuIGxpbmVhckNsaXBaICogKCBuZWFyIC0gZmFyICkgLSBuZWFyO1xcXFxufVxcXFxuZmxvYXQgdmlld1pUb1BlcnNwZWN0aXZlRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XFxcXG5cXFxcdHJldHVybiAoKCBuZWFyICsgdmlld1ogKSAqIGZhciApIC8gKCggZmFyIC0gbmVhciApICogdmlld1ogKTtcXFxcbn1cXFxcbmZsb2F0IHBlcnNwZWN0aXZlRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBpbnZDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xcXFxuXFxcXHRyZXR1cm4gKCBuZWFyICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogaW52Q2xpcFogLSBmYXIgKTtcXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFBSRU1VTFRJUExJRURfQUxQSEFcXFxcblxcXFx0Z2xfRnJhZ0NvbG9yLnJnYiAqPSBnbF9GcmFnQ29sb3IuYTtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgcHJvamVjdF92ZXJ0ZXggPSBcXFwidmVjNCBtdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xcXFxuZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcXFxcblxcXCI7XFxuXFxuXFx0dmFyIGRpdGhlcmluZ19mcmFnbWVudCA9IFxcXCIjaWYgZGVmaW5lZCggRElUSEVSSU5HIClcXFxcbiAgZ2xfRnJhZ0NvbG9yLnJnYiA9IGRpdGhlcmluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBkaXRoZXJpbmdfcGFyc19mcmFnbWVudCA9IFxcXCIjaWYgZGVmaW5lZCggRElUSEVSSU5HIClcXFxcblxcXFx0dmVjMyBkaXRoZXJpbmcoIHZlYzMgY29sb3IgKSB7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgZ3JpZF9wb3NpdGlvbiA9IHJhbmQoIGdsX0ZyYWdDb29yZC54eSApO1xcXFxuXFxcXHRcXFxcdHZlYzMgZGl0aGVyX3NoaWZ0X1JHQiA9IHZlYzMoIDAuMjUgLyAyNTUuMCwgLTAuMjUgLyAyNTUuMCwgMC4yNSAvIDI1NS4wICk7XFxcXG5cXFxcdFxcXFx0ZGl0aGVyX3NoaWZ0X1JHQiA9IG1peCggMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgLTIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIGdyaWRfcG9zaXRpb24gKTtcXFxcblxcXFx0XFxcXHRyZXR1cm4gY29sb3IgKyBkaXRoZXJfc2hpZnRfUkdCO1xcXFxuXFxcXHR9XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIHJvdWdobmVzc21hcF9mcmFnbWVudCA9IFxcXCJmbG9hdCByb3VnaG5lc3NGYWN0b3IgPSByb3VnaG5lc3M7XFxcXG4jaWZkZWYgVVNFX1JPVUdITkVTU01BUFxcXFxuXFxcXHR2ZWM0IHRleGVsUm91Z2huZXNzID0gdGV4dHVyZTJEKCByb3VnaG5lc3NNYXAsIHZVdiApO1xcXFxuXFxcXHRyb3VnaG5lc3NGYWN0b3IgKj0gdGV4ZWxSb3VnaG5lc3MuZztcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgcm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcXFxcblxcXFx0dW5pZm9ybSBzYW1wbGVyMkQgcm91Z2huZXNzTWFwO1xcXFxuI2VuZGlmXFxcIjtcXG5cXG5cXHR2YXIgc2hhZG93bWFwX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmZGVmIFVTRV9TSEFET1dNQVBcXFxcblxcXFx0I2lmIE5VTV9ESVJfTElHSFRTID4gMFxcXFxuXFxcXHRcXFxcdHVuaWZvcm0gc2FtcGxlcjJEIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBOVU1fRElSX0xJR0hUUyBdO1xcXFxuXFxcXHRcXFxcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVFMgXTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXFxcXG5cXFxcdFxcXFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BvdFNoYWRvd01hcFsgTlVNX1NQT1RfTElHSFRTIF07XFxcXG5cXFxcdFxcXFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUUyBdO1xcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXFxcXG5cXFxcdFxcXFx0dW5pZm9ybSBzYW1wbGVyMkQgcG9pbnRTaGFkb3dNYXBbIE5VTV9QT0lOVF9MSUdIVFMgXTtcXFxcblxcXFx0XFxcXHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVFMgXTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdGZsb2F0IHRleHR1cmUyRENvbXBhcmUoIHNhbXBsZXIyRCBkZXB0aHMsIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKSB7XFxcXG5cXFxcdFxcXFx0cmV0dXJuIHN0ZXAoIGNvbXBhcmUsIHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIGRlcHRocywgdXYgKSApICk7XFxcXG5cXFxcdH1cXFxcblxcXFx0ZmxvYXQgdGV4dHVyZTJEU2hhZG93TGVycCggc2FtcGxlcjJEIGRlcHRocywgdmVjMiBzaXplLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkge1xcXFxuXFxcXHRcXFxcdGNvbnN0IHZlYzIgb2Zmc2V0ID0gdmVjMiggMC4wLCAxLjAgKTtcXFxcblxcXFx0XFxcXHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2l6ZTtcXFxcblxcXFx0XFxcXHR2ZWMyIGNlbnRyb2lkVVYgPSBmbG9vciggdXYgKiBzaXplICsgMC41ICkgLyBzaXplO1xcXFxuXFxcXHRcXFxcdGZsb2F0IGxiID0gdGV4dHVyZTJEQ29tcGFyZSggZGVwdGhzLCBjZW50cm9pZFVWICsgdGV4ZWxTaXplICogb2Zmc2V0Lnh4LCBjb21wYXJlICk7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgbHQgPSB0ZXh0dXJlMkRDb21wYXJlKCBkZXB0aHMsIGNlbnRyb2lkVVYgKyB0ZXhlbFNpemUgKiBvZmZzZXQueHksIGNvbXBhcmUgKTtcXFxcblxcXFx0XFxcXHRmbG9hdCByYiA9IHRleHR1cmUyRENvbXBhcmUoIGRlcHRocywgY2VudHJvaWRVViArIHRleGVsU2l6ZSAqIG9mZnNldC55eCwgY29tcGFyZSApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IHJ0ID0gdGV4dHVyZTJEQ29tcGFyZSggZGVwdGhzLCBjZW50cm9pZFVWICsgdGV4ZWxTaXplICogb2Zmc2V0Lnl5LCBjb21wYXJlICk7XFxcXG5cXFxcdFxcXFx0dmVjMiBmID0gZnJhY3QoIHV2ICogc2l6ZSArIDAuNSApO1xcXFxuXFxcXHRcXFxcdGZsb2F0IGEgPSBtaXgoIGxiLCBsdCwgZi55ICk7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgYiA9IG1peCggcmIsIHJ0LCBmLnkgKTtcXFxcblxcXFx0XFxcXHRmbG9hdCBjID0gbWl4KCBhLCBiLCBmLnggKTtcXFxcblxcXFx0XFxcXHRyZXR1cm4gYztcXFxcblxcXFx0fVxcXFxuXFxcXHRmbG9hdCBnZXRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkICkge1xcXFxuXFxcXHRcXFxcdGZsb2F0IHNoYWRvdyA9IDEuMDtcXFxcblxcXFx0XFxcXHRzaGFkb3dDb29yZC54eXogLz0gc2hhZG93Q29vcmQudztcXFxcblxcXFx0XFxcXHRzaGFkb3dDb29yZC56ICs9IHNoYWRvd0JpYXM7XFxcXG5cXFxcdFxcXFx0YnZlYzQgaW5GcnVzdHVtVmVjID0gYnZlYzQgKCBzaGFkb3dDb29yZC54ID49IDAuMCwgc2hhZG93Q29vcmQueCA8PSAxLjAsIHNoYWRvd0Nvb3JkLnkgPj0gMC4wLCBzaGFkb3dDb29yZC55IDw9IDEuMCApO1xcXFxuXFxcXHRcXFxcdGJvb2wgaW5GcnVzdHVtID0gYWxsKCBpbkZydXN0dW1WZWMgKTtcXFxcblxcXFx0XFxcXHRidmVjMiBmcnVzdHVtVGVzdFZlYyA9IGJ2ZWMyKCBpbkZydXN0dW0sIHNoYWRvd0Nvb3JkLnogPD0gMS4wICk7XFxcXG5cXFxcdFxcXFx0Ym9vbCBmcnVzdHVtVGVzdCA9IGFsbCggZnJ1c3R1bVRlc3RWZWMgKTtcXFxcblxcXFx0XFxcXHRpZiAoIGZydXN0dW1UZXN0ICkge1xcXFxuXFxcXHRcXFxcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKVxcXFxuXFxcXHRcXFxcdFxcXFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XFxcXG5cXFxcdFxcXFx0XFxcXHRmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xcXFxuXFxcXHRcXFxcdFxcXFx0ZmxvYXQgZHkwID0gLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcXFxcblxcXFx0XFxcXHRcXFxcdGZsb2F0IGR4MSA9ICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XFxcXG5cXFxcdFxcXFx0XFxcXHRmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xcXFxuXFxcXHRcXFxcdFxcXFx0c2hhZG93ID0gKFxcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkxICksIHNoYWRvd0Nvb3JkLnogKVxcXFxuXFxcXHRcXFxcdFxcXFx0KSAqICggMS4wIC8gOS4wICk7XFxcXG5cXFxcdFxcXFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKVxcXFxuXFxcXHRcXFxcdFxcXFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XFxcXG5cXFxcdFxcXFx0XFxcXHRmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xcXFxuXFxcXHRcXFxcdFxcXFx0ZmxvYXQgZHkwID0gLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcXFxcblxcXFx0XFxcXHRcXFxcdGZsb2F0IGR4MSA9ICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XFxcXG5cXFxcdFxcXFx0XFxcXHRmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xcXFxuXFxcXHRcXFxcdFxcXFx0c2hhZG93ID0gKFxcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHRleHR1cmUyRFNoYWRvd0xlcnAoIHNoYWRvd01hcCwgc2hhZG93TWFwU2l6ZSwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHRleHR1cmUyRFNoYWRvd0xlcnAoIHNoYWRvd01hcCwgc2hhZG93TWFwU2l6ZSwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkxICksIHNoYWRvd0Nvb3JkLnogKVxcXFxuXFxcXHRcXFxcdFxcXFx0KSAqICggMS4wIC8gOS4wICk7XFxcXG5cXFxcdFxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHRcXFxcdHNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcXFxcblxcXFx0XFxcXHQjZW5kaWZcXFxcblxcXFx0XFxcXHR9XFxcXG5cXFxcdFxcXFx0cmV0dXJuIHNoYWRvdztcXFxcblxcXFx0fVxcXFxuXFxcXHR2ZWMyIGN1YmVUb1VWKCB2ZWMzIHYsIGZsb2F0IHRleGVsU2l6ZVkgKSB7XFxcXG5cXFxcdFxcXFx0dmVjMyBhYnNWID0gYWJzKCB2ICk7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgc2NhbGVUb0N1YmUgPSAxLjAgLyBtYXgoIGFic1YueCwgbWF4KCBhYnNWLnksIGFic1YueiApICk7XFxcXG5cXFxcdFxcXFx0YWJzViAqPSBzY2FsZVRvQ3ViZTtcXFxcblxcXFx0XFxcXHR2ICo9IHNjYWxlVG9DdWJlICogKCAxLjAgLSAyLjAgKiB0ZXhlbFNpemVZICk7XFxcXG5cXFxcdFxcXFx0dmVjMiBwbGFuYXIgPSB2Lnh5O1xcXFxuXFxcXHRcXFxcdGZsb2F0IGFsbW9zdEFUZXhlbCA9IDEuNSAqIHRleGVsU2l6ZVk7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgYWxtb3N0T25lID0gMS4wIC0gYWxtb3N0QVRleGVsO1xcXFxuXFxcXHRcXFxcdGlmICggYWJzVi56ID49IGFsbW9zdE9uZSApIHtcXFxcblxcXFx0XFxcXHRcXFxcdGlmICggdi56ID4gMC4wIClcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0cGxhbmFyLnggPSA0LjAgLSB2Lng7XFxcXG5cXFxcdFxcXFx0fSBlbHNlIGlmICggYWJzVi54ID49IGFsbW9zdE9uZSApIHtcXFxcblxcXFx0XFxcXHRcXFxcdGZsb2F0IHNpZ25YID0gc2lnbiggdi54ICk7XFxcXG5cXFxcdFxcXFx0XFxcXHRwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7XFxcXG5cXFxcdFxcXFx0fSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHtcXFxcblxcXFx0XFxcXHRcXFxcdGZsb2F0IHNpZ25ZID0gc2lnbiggdi55ICk7XFxcXG5cXFxcdFxcXFx0XFxcXHRwbGFuYXIueCA9IHYueCArIDIuMCAqIHNpZ25ZICsgMi4wO1xcXFxuXFxcXHRcXFxcdFxcXFx0cGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDtcXFxcblxcXFx0XFxcXHR9XFxcXG5cXFxcdFxcXFx0cmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApO1xcXFxuXFxcXHR9XFxcXG5cXFxcdGZsb2F0IGdldFBvaW50U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCwgZmxvYXQgc2hhZG93Q2FtZXJhTmVhciwgZmxvYXQgc2hhZG93Q2FtZXJhRmFyICkge1xcXFxuXFxcXHRcXFxcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyAoIHNoYWRvd01hcFNpemUgKiB2ZWMyKCA0LjAsIDIuMCApICk7XFxcXG5cXFxcdFxcXFx0dmVjMyBsaWdodFRvUG9zaXRpb24gPSBzaGFkb3dDb29yZC54eXo7XFxcXG5cXFxcdFxcXFx0ZmxvYXQgZHAgPSAoIGxlbmd0aCggbGlnaHRUb1Bvc2l0aW9uICkgLSBzaGFkb3dDYW1lcmFOZWFyICkgLyAoIHNoYWRvd0NhbWVyYUZhciAtIHNoYWRvd0NhbWVyYU5lYXIgKTtcXFxcdFxcXFx0ZHAgKz0gc2hhZG93QmlhcztcXFxcblxcXFx0XFxcXHR2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApO1xcXFxuXFxcXHRcXFxcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApXFxcXG5cXFxcdFxcXFx0XFxcXHR2ZWMyIG9mZnNldCA9IHZlYzIoIC0gMSwgMSApICogc2hhZG93UmFkaXVzICogdGV4ZWxTaXplLnk7XFxcXG5cXFxcdFxcXFx0XFxcXHRyZXR1cm4gKFxcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgK1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKVxcXFxuXFxcXHRcXFxcdFxcXFx0KSAqICggMS4wIC8gOS4wICk7XFxcXG5cXFxcdFxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHRcXFxcdHJldHVybiB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApO1xcXFxuXFxcXHRcXFxcdCNlbmRpZlxcXFxuXFxcXHR9XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIHNoYWRvd21hcF9wYXJzX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX1NIQURPV01BUFxcXFxuXFxcXHQjaWYgTlVNX0RJUl9MSUdIVFMgPiAwXFxcXG5cXFxcdFxcXFx0dW5pZm9ybSBtYXQ0IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBOVU1fRElSX0xJR0hUUyBdO1xcXFxuXFxcXHRcXFxcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVFMgXTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXFxcXG5cXFxcdFxcXFx0dW5pZm9ybSBtYXQ0IHNwb3RTaGFkb3dNYXRyaXhbIE5VTV9TUE9UX0xJR0hUUyBdO1xcXFxuXFxcXHRcXFxcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVFMgXTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxcXFxuXFxcXHRcXFxcdHVuaWZvcm0gbWF0NCBwb2ludFNoYWRvd01hdHJpeFsgTlVNX1BPSU5UX0xJR0hUUyBdO1xcXFxuXFxcXHRcXFxcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUUyBdO1xcXFxuXFxcXHQjZW5kaWZcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgc2hhZG93bWFwX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX1NIQURPV01BUFxcXFxuXFxcXHQjaWYgTlVNX0RJUl9MSUdIVFMgPiAwXFxcXG5cXFxcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gPSBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgaSBdICogd29ybGRQb3NpdGlvbjtcXFxcblxcXFx0fVxcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcXFxcblxcXFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdHZTcG90U2hhZG93Q29vcmRbIGkgXSA9IHNwb3RTaGFkb3dNYXRyaXhbIGkgXSAqIHdvcmxkUG9zaXRpb247XFxcXG5cXFxcdH1cXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxcXFxuXFxcXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0gPSBwb2ludFNoYWRvd01hdHJpeFsgaSBdICogd29ybGRQb3NpdGlvbjtcXFxcblxcXFx0fVxcXFxuXFxcXHQjZW5kaWZcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgc2hhZG93bWFza19wYXJzX2ZyYWdtZW50ID0gXFxcImZsb2F0IGdldFNoYWRvd01hc2soKSB7XFxcXG5cXFxcdGZsb2F0IHNoYWRvdyA9IDEuMDtcXFxcblxcXFx0I2lmZGVmIFVTRV9TSEFET1dNQVBcXFxcblxcXFx0I2lmIE5VTV9ESVJfTElHSFRTID4gMFxcXFxuXFxcXHREaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQ7XFxcXG5cXFxcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdO1xcXFxuXFxcXHRcXFxcdHNoYWRvdyAqPSBib29sKCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvdyApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcXFxcblxcXFx0fVxcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcXFxcblxcXFx0U3BvdExpZ2h0IHNwb3RMaWdodDtcXFxcblxcXFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xcXFxuXFxcXHRcXFxcdHNwb3RMaWdodCA9IHNwb3RMaWdodHNbIGkgXTtcXFxcblxcXFx0XFxcXHRzaGFkb3cgKj0gYm9vbCggc3BvdExpZ2h0LnNoYWRvdyApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XFxcXG5cXFxcdH1cXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxcXFxuXFxcXHRQb2ludExpZ2h0IHBvaW50TGlnaHQ7XFxcXG5cXFxcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XFxcXG5cXFxcdFxcXFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07XFxcXG5cXFxcdFxcXFx0c2hhZG93ICo9IGJvb2woIHBvaW50TGlnaHQuc2hhZG93ICkgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0LnNoYWRvd0JpYXMsIHBvaW50TGlnaHQuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XFxcXG5cXFxcdH1cXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHRyZXR1cm4gc2hhZG93O1xcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgc2tpbmJhc2VfdmVydGV4ID0gXFxcIiNpZmRlZiBVU0VfU0tJTk5JTkdcXFxcblxcXFx0bWF0NCBib25lTWF0WCA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC54ICk7XFxcXG5cXFxcdG1hdDQgYm9uZU1hdFkgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueSApO1xcXFxuXFxcXHRtYXQ0IGJvbmVNYXRaID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnogKTtcXFxcblxcXFx0bWF0NCBib25lTWF0VyA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC53ICk7XFxcXG4jZW5kaWZcXFwiO1xcblxcblxcdHZhciBza2lubmluZ19wYXJzX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX1NLSU5OSU5HXFxcXG5cXFxcdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4O1xcXFxuXFxcXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeEludmVyc2U7XFxcXG5cXFxcdCNpZmRlZiBCT05FX1RFWFRVUkVcXFxcblxcXFx0XFxcXHR1bmlmb3JtIHNhbXBsZXIyRCBib25lVGV4dHVyZTtcXFxcblxcXFx0XFxcXHR1bmlmb3JtIGludCBib25lVGV4dHVyZVNpemU7XFxcXG5cXFxcdFxcXFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xcXFxuXFxcXHRcXFxcdFxcXFx0ZmxvYXQgaiA9IGkgKiA0LjA7XFxcXG5cXFxcdFxcXFx0XFxcXHRmbG9hdCB4ID0gbW9kKCBqLCBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcXFxcblxcXFx0XFxcXHRcXFxcdGZsb2F0IHkgPSBmbG9vciggaiAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xcXFxuXFxcXHRcXFxcdFxcXFx0ZmxvYXQgZHggPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XFxcXG5cXFxcdFxcXFx0XFxcXHRmbG9hdCBkeSA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcXFxcblxcXFx0XFxcXHRcXFxcdHkgPSBkeSAqICggeSArIDAuNSApO1xcXFxuXFxcXHRcXFxcdFxcXFx0dmVjNCB2MSA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMC41ICksIHkgKSApO1xcXFxuXFxcXHRcXFxcdFxcXFx0dmVjNCB2MiA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMS41ICksIHkgKSApO1xcXFxuXFxcXHRcXFxcdFxcXFx0dmVjNCB2MyA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMi41ICksIHkgKSApO1xcXFxuXFxcXHRcXFxcdFxcXFx0dmVjNCB2NCA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMy41ICksIHkgKSApO1xcXFxuXFxcXHRcXFxcdFxcXFx0bWF0NCBib25lID0gbWF0NCggdjEsIHYyLCB2MywgdjQgKTtcXFxcblxcXFx0XFxcXHRcXFxcdHJldHVybiBib25lO1xcXFxuXFxcXHRcXFxcdH1cXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHR1bmlmb3JtIG1hdDQgYm9uZU1hdHJpY2VzWyBNQVhfQk9ORVMgXTtcXFxcblxcXFx0XFxcXHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XFxcXG5cXFxcdFxcXFx0XFxcXHRtYXQ0IGJvbmUgPSBib25lTWF0cmljZXNbIGludChpKSBdO1xcXFxuXFxcXHRcXFxcdFxcXFx0cmV0dXJuIGJvbmU7XFxcXG5cXFxcdFxcXFx0fVxcXFxuXFxcXHQjZW5kaWZcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgc2tpbm5pbmdfdmVydGV4ID0gXFxcIiNpZmRlZiBVU0VfU0tJTk5JTkdcXFxcblxcXFx0dmVjNCBza2luVmVydGV4ID0gYmluZE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcXFxcblxcXFx0dmVjNCBza2lubmVkID0gdmVjNCggMC4wICk7XFxcXG5cXFxcdHNraW5uZWQgKz0gYm9uZU1hdFggKiBza2luVmVydGV4ICogc2tpbldlaWdodC54O1xcXFxuXFxcXHRza2lubmVkICs9IGJvbmVNYXRZICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueTtcXFxcblxcXFx0c2tpbm5lZCArPSBib25lTWF0WiAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lno7XFxcXG5cXFxcdHNraW5uZWQgKz0gYm9uZU1hdFcgKiBza2luVmVydGV4ICogc2tpbldlaWdodC53O1xcXFxuXFxcXHR0cmFuc2Zvcm1lZCA9ICggYmluZE1hdHJpeEludmVyc2UgKiBza2lubmVkICkueHl6O1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBza2lubm9ybWFsX3ZlcnRleCA9IFxcXCIjaWZkZWYgVVNFX1NLSU5OSU5HXFxcXG5cXFxcdG1hdDQgc2tpbk1hdHJpeCA9IG1hdDQoIDAuMCApO1xcXFxuXFxcXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueCAqIGJvbmVNYXRYO1xcXFxuXFxcXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueSAqIGJvbmVNYXRZO1xcXFxuXFxcXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueiAqIGJvbmVNYXRaO1xcXFxuXFxcXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQudyAqIGJvbmVNYXRXO1xcXFxuXFxcXHRza2luTWF0cml4ICA9IGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbk1hdHJpeCAqIGJpbmRNYXRyaXg7XFxcXG5cXFxcdG9iamVjdE5vcm1hbCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3ROb3JtYWwsIDAuMCApICkueHl6O1xcXFxuI2VuZGlmXFxcXG5cXFwiO1xcblxcblxcdHZhciBzcGVjdWxhcm1hcF9mcmFnbWVudCA9IFxcXCJmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xcXFxuI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxcXFxuXFxcXHR2ZWM0IHRleGVsU3BlY3VsYXIgPSB0ZXh0dXJlMkQoIHNwZWN1bGFyTWFwLCB2VXYgKTtcXFxcblxcXFx0c3BlY3VsYXJTdHJlbmd0aCA9IHRleGVsU3BlY3VsYXIucjtcXFxcbiNlbHNlXFxcXG5cXFxcdHNwZWN1bGFyU3RyZW5ndGggPSAxLjA7XFxcXG4jZW5kaWZcXFwiO1xcblxcblxcdHZhciBzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50ID0gXFxcIiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcXFxcblxcXFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7XFxcXG4jZW5kaWZcXFwiO1xcblxcblxcdHZhciB0b25lbWFwcGluZ19mcmFnbWVudCA9IFxcXCIjaWYgZGVmaW5lZCggVE9ORV9NQVBQSU5HIClcXFxcbiAgZ2xfRnJhZ0NvbG9yLnJnYiA9IHRvbmVNYXBwaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XFxcXG4jZW5kaWZcXFxcblxcXCI7XFxuXFxuXFx0dmFyIHRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmbmRlZiBzYXR1cmF0ZVxcXFxuXFxcXHQjZGVmaW5lIHNhdHVyYXRlKGEpIGNsYW1wKCBhLCAwLjAsIDEuMCApXFxcXG4jZW5kaWZcXFxcbnVuaWZvcm0gZmxvYXQgdG9uZU1hcHBpbmdFeHBvc3VyZTtcXFxcbnVuaWZvcm0gZmxvYXQgdG9uZU1hcHBpbmdXaGl0ZVBvaW50O1xcXFxudmVjMyBMaW5lYXJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcXFxcblxcXFx0cmV0dXJuIHRvbmVNYXBwaW5nRXhwb3N1cmUgKiBjb2xvcjtcXFxcbn1cXFxcbnZlYzMgUmVpbmhhcmRUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcXFxcblxcXFx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcXFxcblxcXFx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciAvICggdmVjMyggMS4wICkgKyBjb2xvciApICk7XFxcXG59XFxcXG4jZGVmaW5lIFVuY2hhcnRlZDJIZWxwZXIoIHggKSBtYXgoICggKCB4ICogKCAwLjE1ICogeCArIDAuMTAgKiAwLjUwICkgKyAwLjIwICogMC4wMiApIC8gKCB4ICogKCAwLjE1ICogeCArIDAuNTAgKSArIDAuMjAgKiAwLjMwICkgKSAtIDAuMDIgLyAwLjMwLCB2ZWMzKCAwLjAgKSApXFxcXG52ZWMzIFVuY2hhcnRlZDJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcXFxcblxcXFx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcXFxcblxcXFx0cmV0dXJuIHNhdHVyYXRlKCBVbmNoYXJ0ZWQySGVscGVyKCBjb2xvciApIC8gVW5jaGFydGVkMkhlbHBlciggdmVjMyggdG9uZU1hcHBpbmdXaGl0ZVBvaW50ICkgKSApO1xcXFxufVxcXFxudmVjMyBPcHRpbWl6ZWRDaW5lb25Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcXFxcblxcXFx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcXFxcblxcXFx0Y29sb3IgPSBtYXgoIHZlYzMoIDAuMCApLCBjb2xvciAtIDAuMDA0ICk7XFxcXG5cXFxcdHJldHVybiBwb3coICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMC41ICkgKSAvICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMS43ICkgKyAwLjA2ICksIHZlYzMoIDIuMiApICk7XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciB1dl9wYXJzX2ZyYWdtZW50ID0gXFxcIiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX1NQRUNVTEFSTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQICkgfHwgZGVmaW5lZCggVVNFX0VNSVNTSVZFTUFQICkgfHwgZGVmaW5lZCggVVNFX1JPVUdITkVTU01BUCApIHx8IGRlZmluZWQoIFVTRV9NRVRBTE5FU1NNQVAgKVxcXFxuXFxcXHR2YXJ5aW5nIHZlYzIgdlV2O1xcXFxuI2VuZGlmXFxcIjtcXG5cXG5cXHR2YXIgdXZfcGFyc192ZXJ0ZXggPSBcXFwiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBVU0VfU1BFQ1VMQVJNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKSB8fCBkZWZpbmVkKCBVU0VfRU1JU1NJVkVNQVAgKSB8fCBkZWZpbmVkKCBVU0VfUk9VR0hORVNTTUFQICkgfHwgZGVmaW5lZCggVVNFX01FVEFMTkVTU01BUCApXFxcXG5cXFxcdHZhcnlpbmcgdmVjMiB2VXY7XFxcXG5cXFxcdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgdXZfdmVydGV4ID0gXFxcIiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX1NQRUNVTEFSTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQICkgfHwgZGVmaW5lZCggVVNFX0VNSVNTSVZFTUFQICkgfHwgZGVmaW5lZCggVVNFX1JPVUdITkVTU01BUCApIHx8IGRlZmluZWQoIFVTRV9NRVRBTE5FU1NNQVAgKVxcXFxuXFxcXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xcXFxuI2VuZGlmXFxcIjtcXG5cXG5cXHR2YXIgdXYyX3BhcnNfZnJhZ21lbnQgPSBcXFwiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXFxcXG5cXFxcdHZhcnlpbmcgdmVjMiB2VXYyO1xcXFxuI2VuZGlmXFxcIjtcXG5cXG5cXHR2YXIgdXYyX3BhcnNfdmVydGV4ID0gXFxcIiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxcXFxuXFxcXHRhdHRyaWJ1dGUgdmVjMiB1djI7XFxcXG5cXFxcdHZhcnlpbmcgdmVjMiB2VXYyO1xcXFxuI2VuZGlmXFxcIjtcXG5cXG5cXHR2YXIgdXYyX3ZlcnRleCA9IFxcXCIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcXFxcblxcXFx0dlV2MiA9IHV2MjtcXFxcbiNlbmRpZlxcXCI7XFxuXFxuXFx0dmFyIHdvcmxkcG9zX3ZlcnRleCA9IFxcXCIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQoIERJU1RBTkNFICkgfHwgZGVmaW5lZCAoIFVTRV9TSEFET1dNQVAgKVxcXFxuXFxcXHR2ZWM0IHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcXFxcbiNlbmRpZlxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgY3ViZV9mcmFnID0gXFxcInVuaWZvcm0gc2FtcGxlckN1YmUgdEN1YmU7XFxcXG51bmlmb3JtIGZsb2F0IHRGbGlwO1xcXFxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xcXFxudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xcXFxudm9pZCBtYWluKCkge1xcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlQ3ViZSggdEN1YmUsIHZlYzMoIHRGbGlwICogdldvcmxkUG9zaXRpb24ueCwgdldvcmxkUG9zaXRpb24ueXogKSApO1xcXFxuXFxcXHRnbF9GcmFnQ29sb3IuYSAqPSBvcGFjaXR5O1xcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgY3ViZV92ZXJ0ID0gXFxcInZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG52b2lkIG1haW4oKSB7XFxcXG5cXFxcdHZXb3JsZFBvc2l0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTtcXFxcblxcXFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxcXFxuXFxcXHRnbF9Qb3NpdGlvbi56ID0gZ2xfUG9zaXRpb24udztcXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIGRlcHRoX2ZyYWcgPSBcXFwiI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxcXFxuXFxcXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XFxcXG4jZW5kaWZcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG4jaW5jbHVkZSA8cGFja2luZz5cXFxcbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cXFxcblxcXFx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcXFxcblxcXFx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxcXFxuXFxcXHRcXFxcdGRpZmZ1c2VDb2xvci5hID0gb3BhY2l0eTtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxcXFxuXFxcXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXFxcXG5cXFxcdFxcXFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggZ2xfRnJhZ0Nvb3JkLnogKSwgb3BhY2l0eSApO1xcXFxuXFxcXHQjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDFcXFxcblxcXFx0XFxcXHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGdsX0ZyYWdDb29yZC56ICk7XFxcXG5cXFxcdCNlbmRpZlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZGVwdGhfdmVydCA9IFxcXCIjaW5jbHVkZSA8Y29tbW9uPlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XFxcXG52b2lkIG1haW4oKSB7XFxcXG5cXFxcdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XFxcXG5cXFxcdCNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXFxcXG5cXFxcdFxcXFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cXFxcblxcXFx0XFxcXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxcXFxuXFxcXHRcXFxcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgZGlzdGFuY2VSR0JBX2ZyYWcgPSBcXFwiI2RlZmluZSBESVNUQU5DRVxcXFxudW5pZm9ybSB2ZWMzIHJlZmVyZW5jZVBvc2l0aW9uO1xcXFxudW5pZm9ybSBmbG9hdCBuZWFyRGlzdGFuY2U7XFxcXG51bmlmb3JtIGZsb2F0IGZhckRpc3RhbmNlO1xcXFxudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xcXFxuI2luY2x1ZGUgPGNvbW1vbj5cXFxcbiNpbmNsdWRlIDxwYWNraW5nPlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cXFxcbnZvaWQgbWFpbiAoKSB7XFxcXG5cXFxcdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XFxcXG5cXFxcdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7XFxcXG5cXFxcdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cXFxcblxcXFx0ZmxvYXQgZGlzdCA9IGxlbmd0aCggdldvcmxkUG9zaXRpb24gLSByZWZlcmVuY2VQb3NpdGlvbiApO1xcXFxuXFxcXHRkaXN0ID0gKCBkaXN0IC0gbmVhckRpc3RhbmNlICkgLyAoIGZhckRpc3RhbmNlIC0gbmVhckRpc3RhbmNlICk7XFxcXG5cXFxcdGRpc3QgPSBzYXR1cmF0ZSggZGlzdCApO1xcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGRpc3QgKTtcXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIGRpc3RhbmNlUkdCQV92ZXJ0ID0gXFxcIiNkZWZpbmUgRElTVEFOQ0VcXFxcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cXFxcblxcXFx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcXFxcblxcXFx0XFxcXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxcXFxuXFxcXHRcXFxcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdFxcXFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XFxcXG5cXFxcdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBlcXVpcmVjdF9mcmFnID0gXFxcInVuaWZvcm0gc2FtcGxlcjJEIHRFcXVpcmVjdDtcXFxcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG52b2lkIG1haW4oKSB7XFxcXG5cXFxcdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiApO1xcXFxuXFxcXHR2ZWMyIHNhbXBsZVVWO1xcXFxuXFxcXHRzYW1wbGVVVi55ID0gYXNpbiggY2xhbXAoIGRpcmVjdGlvbi55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7XFxcXG5cXFxcdHNhbXBsZVVWLnggPSBhdGFuKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnggKSAqIFJFQ0lQUk9DQUxfUEkyICsgMC41O1xcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIGVxdWlyZWN0X3ZlcnQgPSBcXFwidmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xcXFxuI2luY2x1ZGUgPGNvbW1vbj5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0dldvcmxkUG9zaXRpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xcXFxuXFxcXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBsaW5lZGFzaGVkX2ZyYWcgPSBcXFwidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XFxcXG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XFxcXG51bmlmb3JtIGZsb2F0IGRhc2hTaXplO1xcXFxudW5pZm9ybSBmbG9hdCB0b3RhbFNpemU7XFxcXG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XFxcXG4jaW5jbHVkZSA8Y29tbW9uPlxcXFxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cXFxcblxcXFx0aWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7XFxcXG5cXFxcdFxcXFx0ZGlzY2FyZDtcXFxcblxcXFx0fVxcXFxuXFxcXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcXFxcblxcXFx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XFxcXG5cXFxcdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxcXFxuXFxcXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcXFxcblxcXFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcXFxcblxcXFx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIGxpbmVkYXNoZWRfdmVydCA9IFxcXCJ1bmlmb3JtIGZsb2F0IHNjYWxlO1xcXFxuYXR0cmlidXRlIGZsb2F0IGxpbmVEaXN0YW5jZTtcXFxcbnZhcnlpbmcgZmxvYXQgdkxpbmVEaXN0YW5jZTtcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cXFxcblxcXFx0dkxpbmVEaXN0YW5jZSA9IHNjYWxlICogbGluZURpc3RhbmNlO1xcXFxuXFxcXHR2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XFxcXG5cXFxcdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247XFxcXG5cXFxcdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIG1lc2hiYXNpY19mcmFnID0gXFxcInVuaWZvcm0gdmVjMyBkaWZmdXNlO1xcXFxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xcXFxuI2lmbmRlZiBGTEFUX1NIQURFRFxcXFxuXFxcXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcXFxcbiNlbmRpZlxcXFxuI2luY2x1ZGUgPGNvbW1vbj5cXFxcbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50PlxcXFxudm9pZCBtYWluKCkge1xcXFxuXFxcXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxcXFxuXFxcXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcXFxcblxcXFx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxcXFxuXFxcXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xcXFxuXFxcXHQjaWZkZWYgVVNFX0xJR0hUTUFQXFxcXG5cXFxcdFxcXFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKS54eXogKiBsaWdodE1hcEludGVuc2l0eTtcXFxcblxcXFx0I2Vsc2VcXFxcblxcXFx0XFxcXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdmVjMyggMS4wICk7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBkaWZmdXNlQ29sb3IucmdiO1xcXFxuXFxcXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7XFxcXG5cXFxcdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XFxcXG5cXFxcdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBtZXNoYmFzaWNfdmVydCA9IFxcXCIjaW5jbHVkZSA8Y29tbW9uPlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XFxcXG5cXFxcdCNpZmRlZiBVU0VfRU5WTUFQXFxcXG5cXFxcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxcXFxuXFxcXHQjZW5kaWZcXFxcblxcXFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbWVzaGxhbWJlcnRfZnJhZyA9IFxcXCJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcXFxcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcXFxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcXFxcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcXFxcbiNpZmRlZiBET1VCTEVfU0lERURcXFxcblxcXFx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XFxcXG4jZW5kaWZcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG4jaW5jbHVkZSA8cGFja2luZz5cXFxcbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxic2Rmcz5cXFxcbiNpbmNsdWRlIDxsaWdodHNfcGFycz5cXFxcbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50PlxcXFxudm9pZCBtYWluKCkge1xcXFxuXFxcXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxcXFxuXFxcXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcXFxcblxcXFx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcXFxcblxcXFx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcXFxcblxcXFx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSA9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XFxcXG5cXFxcdCNpbmNsdWRlIDxsaWdodG1hcF9mcmFnbWVudD5cXFxcblxcXFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICk7XFxcXG5cXFxcdCNpZmRlZiBET1VCTEVfU0lERURcXFxcblxcXFx0XFxcXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gKCBnbF9Gcm9udEZhY2luZyApID8gdkxpZ2h0RnJvbnQgOiB2TGlnaHRCYWNrO1xcXFxuXFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSB2TGlnaHRGcm9udDtcXFxcblxcXFx0I2VuZGlmXFxcXG5cXFxcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKSAqIGdldFNoYWRvd01hc2soKTtcXFxcblxcXFx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxcXFxuXFxcXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xcXFxuXFxcXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xcXFxuXFxcXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbWVzaGxhbWJlcnRfdmVydCA9IFxcXCIjZGVmaW5lIExBTUJFUlRcXFxcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcXFxcbiNpZmRlZiBET1VCTEVfU0lERURcXFxcblxcXFx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XFxcXG4jZW5kaWZcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxic2Rmcz5cXFxcbiNpbmNsdWRlIDxsaWdodHNfcGFycz5cXFxcbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGxpZ2h0c19sYW1iZXJ0X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbWVzaHBob25nX2ZyYWcgPSBcXFwiI2RlZmluZSBQSE9OR1xcXFxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XFxcXG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XFxcXG51bmlmb3JtIHZlYzMgc3BlY3VsYXI7XFxcXG51bmlmb3JtIGZsb2F0IHNoaW5pbmVzcztcXFxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcXFxcbiNpbmNsdWRlIDxjb21tb24+XFxcXG4jaW5jbHVkZSA8cGFja2luZz5cXFxcbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGJzZGZzPlxcXFxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzPlxcXFxuI2luY2x1ZGUgPGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XFxcXG52b2lkIG1haW4oKSB7XFxcXG5cXFxcdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XFxcXG5cXFxcdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xcXFxuXFxcXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xcXFxuXFxcXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xcXFxuXFxcXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGxpZ2h0c19waG9uZ19mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGxpZ2h0c190ZW1wbGF0ZT5cXFxcblxcXFx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxcXFxuXFxcXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xcXFxuXFxcXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xcXFxuXFxcXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbWVzaHBob25nX3ZlcnQgPSBcXFwiI2RlZmluZSBQSE9OR1xcXFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XFxcXG4jaWZuZGVmIEZMQVRfU0hBREVEXFxcXG5cXFxcdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xcXFxuI2VuZGlmXFxcXG4jaW5jbHVkZSA8Y29tbW9uPlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4PlxcXFxudm9pZCBtYWluKCkge1xcXFxuXFxcXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XFxcXG4jaWZuZGVmIEZMQVRfU0hBREVEXFxcXG5cXFxcdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XFxcXG4jZW5kaWZcXFxcblxcXFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XFxcXG5cXFxcdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xcXFxuXFxcXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbWVzaHBoeXNpY2FsX2ZyYWcgPSBcXFwiI2RlZmluZSBQSFlTSUNBTFxcXFxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XFxcXG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XFxcXG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcztcXFxcbnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzO1xcXFxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xcXFxuI2lmbmRlZiBTVEFOREFSRFxcXFxuXFxcXHR1bmlmb3JtIGZsb2F0IGNsZWFyQ29hdDtcXFxcblxcXFx0dW5pZm9ybSBmbG9hdCBjbGVhckNvYXRSb3VnaG5lc3M7XFxcXG4jZW5kaWZcXFxcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xcXFxuI2lmbmRlZiBGTEFUX1NIQURFRFxcXFxuXFxcXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcXFxcbiNlbmRpZlxcXFxuI2luY2x1ZGUgPGNvbW1vbj5cXFxcbiNpbmNsdWRlIDxwYWNraW5nPlxcXFxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGJzZGZzPlxcXFxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxsaWdodHNfcGFycz5cXFxcbiNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8cm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cXFxcblxcXFx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XFxcXG5cXFxcdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XFxcXG5cXFxcdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XFxcXG5cXFxcdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGxpZ2h0c190ZW1wbGF0ZT5cXFxcblxcXFx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxcXFxuXFxcXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xcXFxuXFxcXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgbWVzaHBoeXNpY2FsX3ZlcnQgPSBcXFwiI2RlZmluZSBQSFlTSUNBTFxcXFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XFxcXG4jaWZuZGVmIEZMQVRfU0hBREVEXFxcXG5cXFxcdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xcXFxuI2VuZGlmXFxcXG4jaW5jbHVkZSA8Y29tbW9uPlxcXFxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XFxcXG52b2lkIG1haW4oKSB7XFxcXG5cXFxcdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDx1djJfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cXFxcbiNpZm5kZWYgRkxBVF9TSEFERURcXFxcblxcXFx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcXFxcbiNlbmRpZlxcXFxuXFxcXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cXFxcblxcXFx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XFxcXG5cXFxcdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIG5vcm1hbF9mcmFnID0gXFxcIiNkZWZpbmUgTk9STUFMXFxcXG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XFxcXG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKVxcXFxuXFxcXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcXFxcbiNlbmRpZlxcXFxuI2lmbmRlZiBGTEFUX1NIQURFRFxcXFxuXFxcXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcXFxcbiNlbmRpZlxcXFxuI2luY2x1ZGUgPHBhY2tpbmc+XFxcXG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XFxcXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50PlxcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBwYWNrTm9ybWFsVG9SR0IoIG5vcm1hbCApLCBvcGFjaXR5ICk7XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBub3JtYWxfdmVydCA9IFxcXCIjZGVmaW5lIE5PUk1BTFxcXFxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQIClcXFxcblxcXFx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XFxcXG4jZW5kaWZcXFxcbiNpZm5kZWYgRkxBVF9TSEFERURcXFxcblxcXFx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XFxcXG4jZW5kaWZcXFxcbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XFxcXG52b2lkIG1haW4oKSB7XFxcXG5cXFxcdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxcXFxuI2lmbmRlZiBGTEFUX1NIQURFRFxcXFxuXFxcXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xcXFxuI2VuZGlmXFxcXG5cXFxcdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XFxcXG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKVxcXFxuXFxcXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcXFxcbiNlbmRpZlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgcG9pbnRzX2ZyYWcgPSBcXFwidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XFxcXG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XFxcXG4jaW5jbHVkZSA8Y29tbW9uPlxcXFxuI2luY2x1ZGUgPHBhY2tpbmc+XFxcXG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cXFxcbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50PlxcXFxudm9pZCBtYWluKCkge1xcXFxuXFxcXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxcXFxuXFxcXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcXFxcblxcXFx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XFxcXG5cXFxcdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxcXFxuXFxcXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxcXFxuXFxcXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcXFxcblxcXFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcXFxcblxcXFx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XFxcXG5cXFxcdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cXFxcblxcXFx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cXFxcbn1cXFxcblxcXCI7XFxuXFxuXFx0dmFyIHBvaW50c192ZXJ0ID0gXFxcInVuaWZvcm0gZmxvYXQgc2l6ZTtcXFxcbnVuaWZvcm0gZmxvYXQgc2NhbGU7XFxcXG4jaW5jbHVkZSA8Y29tbW9uPlxcXFxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cXFxcbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XFxcXG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4PlxcXFxudm9pZCBtYWluKCkge1xcXFxuXFxcXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XFxcXG5cXFxcdCNpZmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXFxcXG5cXFxcdFxcXFx0Z2xfUG9pbnRTaXplID0gc2l6ZSAqICggc2NhbGUgLyAtIG12UG9zaXRpb24ueiApO1xcXFxuXFxcXHQjZWxzZVxcXFxuXFxcXHRcXFxcdGdsX1BvaW50U2l6ZSA9IHNpemU7XFxcXG5cXFxcdCNlbmRpZlxcXFxuXFxcXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxcXFxufVxcXFxuXFxcIjtcXG5cXG5cXHR2YXIgc2hhZG93X2ZyYWcgPSBcXFwidW5pZm9ybSB2ZWMzIGNvbG9yO1xcXFxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xcXFxuI2luY2x1ZGUgPGNvbW1vbj5cXFxcbiNpbmNsdWRlIDxwYWNraW5nPlxcXFxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPGJzZGZzPlxcXFxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzPlxcXFxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxcXFxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IsIG9wYWNpdHkgKiAoIDEuMCAtIGdldFNoYWRvd01hc2soKSApICk7XFxcXG5cXFxcdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBzaGFkb3dfdmVydCA9IFxcXCIjaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxcXFxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cXFxcbnZvaWQgbWFpbigpIHtcXFxcblxcXFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxcXFxuXFxcXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cXFxcblxcXFx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XFxcXG59XFxcXG5cXFwiO1xcblxcblxcdHZhciBTaGFkZXJDaHVuayA9IHtcXG5cXHRcXHRhbHBoYW1hcF9mcmFnbWVudDogYWxwaGFtYXBfZnJhZ21lbnQsXFxuXFx0XFx0YWxwaGFtYXBfcGFyc19mcmFnbWVudDogYWxwaGFtYXBfcGFyc19mcmFnbWVudCxcXG5cXHRcXHRhbHBoYXRlc3RfZnJhZ21lbnQ6IGFscGhhdGVzdF9mcmFnbWVudCxcXG5cXHRcXHRhb21hcF9mcmFnbWVudDogYW9tYXBfZnJhZ21lbnQsXFxuXFx0XFx0YW9tYXBfcGFyc19mcmFnbWVudDogYW9tYXBfcGFyc19mcmFnbWVudCxcXG5cXHRcXHRiZWdpbl92ZXJ0ZXg6IGJlZ2luX3ZlcnRleCxcXG5cXHRcXHRiZWdpbm5vcm1hbF92ZXJ0ZXg6IGJlZ2lubm9ybWFsX3ZlcnRleCxcXG5cXHRcXHRic2RmczogYnNkZnMsXFxuXFx0XFx0YnVtcG1hcF9wYXJzX2ZyYWdtZW50OiBidW1wbWFwX3BhcnNfZnJhZ21lbnQsXFxuXFx0XFx0Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50OiBjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQsXFxuXFx0XFx0Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50LFxcblxcdFxcdGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleDogY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4LFxcblxcdFxcdGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg6IGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXgsXFxuXFx0XFx0Y29sb3JfZnJhZ21lbnQ6IGNvbG9yX2ZyYWdtZW50LFxcblxcdFxcdGNvbG9yX3BhcnNfZnJhZ21lbnQ6IGNvbG9yX3BhcnNfZnJhZ21lbnQsXFxuXFx0XFx0Y29sb3JfcGFyc192ZXJ0ZXg6IGNvbG9yX3BhcnNfdmVydGV4LFxcblxcdFxcdGNvbG9yX3ZlcnRleDogY29sb3JfdmVydGV4LFxcblxcdFxcdGNvbW1vbjogY29tbW9uLFxcblxcdFxcdGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudDogY3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50LFxcblxcdFxcdGRlZmF1bHRub3JtYWxfdmVydGV4OiBkZWZhdWx0bm9ybWFsX3ZlcnRleCxcXG5cXHRcXHRkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleCxcXG5cXHRcXHRkaXNwbGFjZW1lbnRtYXBfdmVydGV4OiBkaXNwbGFjZW1lbnRtYXBfdmVydGV4LFxcblxcdFxcdGVtaXNzaXZlbWFwX2ZyYWdtZW50OiBlbWlzc2l2ZW1hcF9mcmFnbWVudCxcXG5cXHRcXHRlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50OiBlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdGVuY29kaW5nc19mcmFnbWVudDogZW5jb2RpbmdzX2ZyYWdtZW50LFxcblxcdFxcdGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiBlbmNvZGluZ3NfcGFyc19mcmFnbWVudCxcXG5cXHRcXHRlbnZtYXBfZnJhZ21lbnQ6IGVudm1hcF9mcmFnbWVudCxcXG5cXHRcXHRlbnZtYXBfcGFyc19mcmFnbWVudDogZW52bWFwX3BhcnNfZnJhZ21lbnQsXFxuXFx0XFx0ZW52bWFwX3BhcnNfdmVydGV4OiBlbnZtYXBfcGFyc192ZXJ0ZXgsXFxuXFx0XFx0ZW52bWFwX3ZlcnRleDogZW52bWFwX3ZlcnRleCxcXG5cXHRcXHRmb2dfdmVydGV4OiBmb2dfdmVydGV4LFxcblxcdFxcdGZvZ19wYXJzX3ZlcnRleDogZm9nX3BhcnNfdmVydGV4LFxcblxcdFxcdGZvZ19mcmFnbWVudDogZm9nX2ZyYWdtZW50LFxcblxcdFxcdGZvZ19wYXJzX2ZyYWdtZW50OiBmb2dfcGFyc19mcmFnbWVudCxcXG5cXHRcXHRncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50OiBncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdGxpZ2h0bWFwX2ZyYWdtZW50OiBsaWdodG1hcF9mcmFnbWVudCxcXG5cXHRcXHRsaWdodG1hcF9wYXJzX2ZyYWdtZW50OiBsaWdodG1hcF9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdGxpZ2h0c19sYW1iZXJ0X3ZlcnRleDogbGlnaHRzX2xhbWJlcnRfdmVydGV4LFxcblxcdFxcdGxpZ2h0c19wYXJzOiBsaWdodHNfcGFycyxcXG5cXHRcXHRsaWdodHNfcGhvbmdfZnJhZ21lbnQ6IGxpZ2h0c19waG9uZ19mcmFnbWVudCxcXG5cXHRcXHRsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudDogbGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQsXFxuXFx0XFx0bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50OiBsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQsXFxuXFx0XFx0bGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6IGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdGxpZ2h0c190ZW1wbGF0ZTogbGlnaHRzX3RlbXBsYXRlLFxcblxcdFxcdGxvZ2RlcHRoYnVmX2ZyYWdtZW50OiBsb2dkZXB0aGJ1Zl9mcmFnbWVudCxcXG5cXHRcXHRsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50OiBsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4OiBsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleCxcXG5cXHRcXHRsb2dkZXB0aGJ1Zl92ZXJ0ZXg6IGxvZ2RlcHRoYnVmX3ZlcnRleCxcXG5cXHRcXHRtYXBfZnJhZ21lbnQ6IG1hcF9mcmFnbWVudCxcXG5cXHRcXHRtYXBfcGFyc19mcmFnbWVudDogbWFwX3BhcnNfZnJhZ21lbnQsXFxuXFx0XFx0bWFwX3BhcnRpY2xlX2ZyYWdtZW50OiBtYXBfcGFydGljbGVfZnJhZ21lbnQsXFxuXFx0XFx0bWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnQ6IG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdG1ldGFsbmVzc21hcF9mcmFnbWVudDogbWV0YWxuZXNzbWFwX2ZyYWdtZW50LFxcblxcdFxcdG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50OiBtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudCxcXG5cXHRcXHRtb3JwaG5vcm1hbF92ZXJ0ZXg6IG1vcnBobm9ybWFsX3ZlcnRleCxcXG5cXHRcXHRtb3JwaHRhcmdldF9wYXJzX3ZlcnRleDogbW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXgsXFxuXFx0XFx0bW9ycGh0YXJnZXRfdmVydGV4OiBtb3JwaHRhcmdldF92ZXJ0ZXgsXFxuXFx0XFx0bm9ybWFsX2ZyYWdtZW50OiBub3JtYWxfZnJhZ21lbnQsXFxuXFx0XFx0bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6IG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdHBhY2tpbmc6IHBhY2tpbmcsXFxuXFx0XFx0cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudDogcHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudCxcXG5cXHRcXHRwcm9qZWN0X3ZlcnRleDogcHJvamVjdF92ZXJ0ZXgsXFxuXFx0XFx0ZGl0aGVyaW5nX2ZyYWdtZW50OiBkaXRoZXJpbmdfZnJhZ21lbnQsXFxuXFx0XFx0ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ6IGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50LFxcblxcdFxcdHJvdWdobmVzc21hcF9mcmFnbWVudDogcm91Z2huZXNzbWFwX2ZyYWdtZW50LFxcblxcdFxcdHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50OiByb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudCxcXG5cXHRcXHRzaGFkb3dtYXBfcGFyc19mcmFnbWVudDogc2hhZG93bWFwX3BhcnNfZnJhZ21lbnQsXFxuXFx0XFx0c2hhZG93bWFwX3BhcnNfdmVydGV4OiBzaGFkb3dtYXBfcGFyc192ZXJ0ZXgsXFxuXFx0XFx0c2hhZG93bWFwX3ZlcnRleDogc2hhZG93bWFwX3ZlcnRleCxcXG5cXHRcXHRzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ6IHNoYWRvd21hc2tfcGFyc19mcmFnbWVudCxcXG5cXHRcXHRza2luYmFzZV92ZXJ0ZXg6IHNraW5iYXNlX3ZlcnRleCxcXG5cXHRcXHRza2lubmluZ19wYXJzX3ZlcnRleDogc2tpbm5pbmdfcGFyc192ZXJ0ZXgsXFxuXFx0XFx0c2tpbm5pbmdfdmVydGV4OiBza2lubmluZ192ZXJ0ZXgsXFxuXFx0XFx0c2tpbm5vcm1hbF92ZXJ0ZXg6IHNraW5ub3JtYWxfdmVydGV4LFxcblxcdFxcdHNwZWN1bGFybWFwX2ZyYWdtZW50OiBzcGVjdWxhcm1hcF9mcmFnbWVudCxcXG5cXHRcXHRzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50OiBzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50LFxcblxcdFxcdHRvbmVtYXBwaW5nX2ZyYWdtZW50OiB0b25lbWFwcGluZ19mcmFnbWVudCxcXG5cXHRcXHR0b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiB0b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50LFxcblxcdFxcdHV2X3BhcnNfZnJhZ21lbnQ6IHV2X3BhcnNfZnJhZ21lbnQsXFxuXFx0XFx0dXZfcGFyc192ZXJ0ZXg6IHV2X3BhcnNfdmVydGV4LFxcblxcdFxcdHV2X3ZlcnRleDogdXZfdmVydGV4LFxcblxcdFxcdHV2Ml9wYXJzX2ZyYWdtZW50OiB1djJfcGFyc19mcmFnbWVudCxcXG5cXHRcXHR1djJfcGFyc192ZXJ0ZXg6IHV2Ml9wYXJzX3ZlcnRleCxcXG5cXHRcXHR1djJfdmVydGV4OiB1djJfdmVydGV4LFxcblxcdFxcdHdvcmxkcG9zX3ZlcnRleDogd29ybGRwb3NfdmVydGV4LFxcblxcblxcdFxcdGN1YmVfZnJhZzogY3ViZV9mcmFnLFxcblxcdFxcdGN1YmVfdmVydDogY3ViZV92ZXJ0LFxcblxcdFxcdGRlcHRoX2ZyYWc6IGRlcHRoX2ZyYWcsXFxuXFx0XFx0ZGVwdGhfdmVydDogZGVwdGhfdmVydCxcXG5cXHRcXHRkaXN0YW5jZVJHQkFfZnJhZzogZGlzdGFuY2VSR0JBX2ZyYWcsXFxuXFx0XFx0ZGlzdGFuY2VSR0JBX3ZlcnQ6IGRpc3RhbmNlUkdCQV92ZXJ0LFxcblxcdFxcdGVxdWlyZWN0X2ZyYWc6IGVxdWlyZWN0X2ZyYWcsXFxuXFx0XFx0ZXF1aXJlY3RfdmVydDogZXF1aXJlY3RfdmVydCxcXG5cXHRcXHRsaW5lZGFzaGVkX2ZyYWc6IGxpbmVkYXNoZWRfZnJhZyxcXG5cXHRcXHRsaW5lZGFzaGVkX3ZlcnQ6IGxpbmVkYXNoZWRfdmVydCxcXG5cXHRcXHRtZXNoYmFzaWNfZnJhZzogbWVzaGJhc2ljX2ZyYWcsXFxuXFx0XFx0bWVzaGJhc2ljX3ZlcnQ6IG1lc2hiYXNpY192ZXJ0LFxcblxcdFxcdG1lc2hsYW1iZXJ0X2ZyYWc6IG1lc2hsYW1iZXJ0X2ZyYWcsXFxuXFx0XFx0bWVzaGxhbWJlcnRfdmVydDogbWVzaGxhbWJlcnRfdmVydCxcXG5cXHRcXHRtZXNocGhvbmdfZnJhZzogbWVzaHBob25nX2ZyYWcsXFxuXFx0XFx0bWVzaHBob25nX3ZlcnQ6IG1lc2hwaG9uZ192ZXJ0LFxcblxcdFxcdG1lc2hwaHlzaWNhbF9mcmFnOiBtZXNocGh5c2ljYWxfZnJhZyxcXG5cXHRcXHRtZXNocGh5c2ljYWxfdmVydDogbWVzaHBoeXNpY2FsX3ZlcnQsXFxuXFx0XFx0bm9ybWFsX2ZyYWc6IG5vcm1hbF9mcmFnLFxcblxcdFxcdG5vcm1hbF92ZXJ0OiBub3JtYWxfdmVydCxcXG5cXHRcXHRwb2ludHNfZnJhZzogcG9pbnRzX2ZyYWcsXFxuXFx0XFx0cG9pbnRzX3ZlcnQ6IHBvaW50c192ZXJ0LFxcblxcdFxcdHNoYWRvd19mcmFnOiBzaGFkb3dfZnJhZyxcXG5cXHRcXHRzaGFkb3dfdmVydDogc2hhZG93X3ZlcnRcXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xcblxcdCAqL1xcblxcblxcdHZhciBTaGFkZXJMaWIgPSB7XFxuXFxuXFx0XFx0YmFzaWM6IHtcXG5cXG5cXHRcXHRcXHR1bmlmb3JtczogVW5pZm9ybXNVdGlscy5tZXJnZSggW1xcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmNvbW1vbixcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5zcGVjdWxhcm1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5lbnZtYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuYW9tYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIubGlnaHRtYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZm9nXFxuXFx0XFx0XFx0XSApLFxcblxcblxcdFxcdFxcdHZlcnRleFNoYWRlcjogU2hhZGVyQ2h1bmsubWVzaGJhc2ljX3ZlcnQsXFxuXFx0XFx0XFx0ZnJhZ21lbnRTaGFkZXI6IFNoYWRlckNodW5rLm1lc2hiYXNpY19mcmFnXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRsYW1iZXJ0OiB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXM6IFVuaWZvcm1zVXRpbHMubWVyZ2UoIFtcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5jb21tb24sXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuc3BlY3VsYXJtYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZW52bWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmFvbWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmxpZ2h0bWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmVtaXNzaXZlbWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmZvZyxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5saWdodHMsXFxuXFx0XFx0XFx0XFx0e1xcblxcdFxcdFxcdFxcdFxcdGVtaXNzaXZlOiB7IHZhbHVlOiBuZXcgQ29sb3IoIDB4MDAwMDAwICkgfVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRdICksXFxuXFxuXFx0XFx0XFx0dmVydGV4U2hhZGVyOiBTaGFkZXJDaHVuay5tZXNobGFtYmVydF92ZXJ0LFxcblxcdFxcdFxcdGZyYWdtZW50U2hhZGVyOiBTaGFkZXJDaHVuay5tZXNobGFtYmVydF9mcmFnXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwaG9uZzoge1xcblxcblxcdFxcdFxcdHVuaWZvcm1zOiBVbmlmb3Jtc1V0aWxzLm1lcmdlKCBbXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuY29tbW9uLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLnNwZWN1bGFybWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmVudm1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5hb21hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5saWdodG1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5lbWlzc2l2ZW1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5idW1wbWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLm5vcm1hbG1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5kaXNwbGFjZW1lbnRtYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZ3JhZGllbnRtYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZm9nLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmxpZ2h0cyxcXG5cXHRcXHRcXHRcXHR7XFxuXFx0XFx0XFx0XFx0XFx0ZW1pc3NpdmU6IHsgdmFsdWU6IG5ldyBDb2xvciggMHgwMDAwMDAgKSB9LFxcblxcdFxcdFxcdFxcdFxcdHNwZWN1bGFyOiB7IHZhbHVlOiBuZXcgQ29sb3IoIDB4MTExMTExICkgfSxcXG5cXHRcXHRcXHRcXHRcXHRzaGluaW5lc3M6IHsgdmFsdWU6IDMwIH1cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XSApLFxcblxcblxcdFxcdFxcdHZlcnRleFNoYWRlcjogU2hhZGVyQ2h1bmsubWVzaHBob25nX3ZlcnQsXFxuXFx0XFx0XFx0ZnJhZ21lbnRTaGFkZXI6IFNoYWRlckNodW5rLm1lc2hwaG9uZ19mcmFnXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzdGFuZGFyZDoge1xcblxcblxcdFxcdFxcdHVuaWZvcm1zOiBVbmlmb3Jtc1V0aWxzLm1lcmdlKCBbXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuY29tbW9uLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmVudm1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5hb21hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5saWdodG1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5lbWlzc2l2ZW1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5idW1wbWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLm5vcm1hbG1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5kaXNwbGFjZW1lbnRtYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIucm91Z2huZXNzbWFwLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLm1ldGFsbmVzc21hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5mb2csXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIubGlnaHRzLFxcblxcdFxcdFxcdFxcdHtcXG5cXHRcXHRcXHRcXHRcXHRlbWlzc2l2ZTogeyB2YWx1ZTogbmV3IENvbG9yKCAweDAwMDAwMCApIH0sXFxuXFx0XFx0XFx0XFx0XFx0cm91Z2huZXNzOiB7IHZhbHVlOiAwLjUgfSxcXG5cXHRcXHRcXHRcXHRcXHRtZXRhbG5lc3M6IHsgdmFsdWU6IDAuNSB9LFxcblxcdFxcdFxcdFxcdFxcdGVudk1hcEludGVuc2l0eTogeyB2YWx1ZTogMSB9IC8vIHRlbXBvcmFyeVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRdICksXFxuXFxuXFx0XFx0XFx0dmVydGV4U2hhZGVyOiBTaGFkZXJDaHVuay5tZXNocGh5c2ljYWxfdmVydCxcXG5cXHRcXHRcXHRmcmFnbWVudFNoYWRlcjogU2hhZGVyQ2h1bmsubWVzaHBoeXNpY2FsX2ZyYWdcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHBvaW50czoge1xcblxcblxcdFxcdFxcdHVuaWZvcm1zOiBVbmlmb3Jtc1V0aWxzLm1lcmdlKCBbXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIucG9pbnRzLFxcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmZvZ1xcblxcdFxcdFxcdF0gKSxcXG5cXG5cXHRcXHRcXHR2ZXJ0ZXhTaGFkZXI6IFNoYWRlckNodW5rLnBvaW50c192ZXJ0LFxcblxcdFxcdFxcdGZyYWdtZW50U2hhZGVyOiBTaGFkZXJDaHVuay5wb2ludHNfZnJhZ1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGFzaGVkOiB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXM6IFVuaWZvcm1zVXRpbHMubWVyZ2UoIFtcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5jb21tb24sXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZm9nLFxcblxcdFxcdFxcdFxcdHtcXG5cXHRcXHRcXHRcXHRcXHRzY2FsZTogeyB2YWx1ZTogMSB9LFxcblxcdFxcdFxcdFxcdFxcdGRhc2hTaXplOiB7IHZhbHVlOiAxIH0sXFxuXFx0XFx0XFx0XFx0XFx0dG90YWxTaXplOiB7IHZhbHVlOiAyIH1cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XSApLFxcblxcblxcdFxcdFxcdHZlcnRleFNoYWRlcjogU2hhZGVyQ2h1bmsubGluZWRhc2hlZF92ZXJ0LFxcblxcdFxcdFxcdGZyYWdtZW50U2hhZGVyOiBTaGFkZXJDaHVuay5saW5lZGFzaGVkX2ZyYWdcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRlcHRoOiB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXM6IFVuaWZvcm1zVXRpbHMubWVyZ2UoIFtcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5jb21tb24sXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZGlzcGxhY2VtZW50bWFwXFxuXFx0XFx0XFx0XSApLFxcblxcblxcdFxcdFxcdHZlcnRleFNoYWRlcjogU2hhZGVyQ2h1bmsuZGVwdGhfdmVydCxcXG5cXHRcXHRcXHRmcmFnbWVudFNoYWRlcjogU2hhZGVyQ2h1bmsuZGVwdGhfZnJhZ1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bm9ybWFsOiB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXM6IFVuaWZvcm1zVXRpbHMubWVyZ2UoIFtcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5jb21tb24sXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuYnVtcG1hcCxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5ub3JtYWxtYXAsXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZGlzcGxhY2VtZW50bWFwLFxcblxcdFxcdFxcdFxcdHtcXG5cXHRcXHRcXHRcXHRcXHRvcGFjaXR5OiB7IHZhbHVlOiAxLjAgfVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRdICksXFxuXFxuXFx0XFx0XFx0dmVydGV4U2hhZGVyOiBTaGFkZXJDaHVuay5ub3JtYWxfdmVydCxcXG5cXHRcXHRcXHRmcmFnbWVudFNoYWRlcjogU2hhZGVyQ2h1bmsubm9ybWFsX2ZyYWdcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG5cXHRcXHQvL1xcdEN1YmUgbWFwIHNoYWRlclxcblxcdFxcdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXFxuXFxuXFx0XFx0Y3ViZToge1xcblxcblxcdFxcdFxcdHVuaWZvcm1zOiB7XFxuXFx0XFx0XFx0XFx0dEN1YmU6IHsgdmFsdWU6IG51bGwgfSxcXG5cXHRcXHRcXHRcXHR0RmxpcDogeyB2YWx1ZTogLSAxIH0sXFxuXFx0XFx0XFx0XFx0b3BhY2l0eTogeyB2YWx1ZTogMS4wIH1cXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdHZlcnRleFNoYWRlcjogU2hhZGVyQ2h1bmsuY3ViZV92ZXJ0LFxcblxcdFxcdFxcdGZyYWdtZW50U2hhZGVyOiBTaGFkZXJDaHVuay5jdWJlX2ZyYWdcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGVxdWlyZWN0OiB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXM6IHtcXG5cXHRcXHRcXHRcXHR0RXF1aXJlY3Q6IHsgdmFsdWU6IG51bGwgfSxcXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdHZlcnRleFNoYWRlcjogU2hhZGVyQ2h1bmsuZXF1aXJlY3RfdmVydCxcXG5cXHRcXHRcXHRmcmFnbWVudFNoYWRlcjogU2hhZGVyQ2h1bmsuZXF1aXJlY3RfZnJhZ1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGlzdGFuY2VSR0JBOiB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXM6IFVuaWZvcm1zVXRpbHMubWVyZ2UoIFtcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5jb21tb24sXFxuXFx0XFx0XFx0XFx0VW5pZm9ybXNMaWIuZGlzcGxhY2VtZW50bWFwLFxcblxcdFxcdFxcdFxcdHtcXG5cXHRcXHRcXHRcXHRcXHRyZWZlcmVuY2VQb3NpdGlvbjogeyB2YWx1ZTogbmV3IFZlY3RvcjMoKSB9LFxcblxcdFxcdFxcdFxcdFxcdG5lYXJEaXN0YW5jZTogeyB2YWx1ZTogMSB9LFxcblxcdFxcdFxcdFxcdFxcdGZhckRpc3RhbmNlOiB7IHZhbHVlOiAxMDAwIH1cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XSApLFxcblxcblxcdFxcdFxcdHZlcnRleFNoYWRlcjogU2hhZGVyQ2h1bmsuZGlzdGFuY2VSR0JBX3ZlcnQsXFxuXFx0XFx0XFx0ZnJhZ21lbnRTaGFkZXI6IFNoYWRlckNodW5rLmRpc3RhbmNlUkdCQV9mcmFnXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzaGFkb3c6IHtcXG5cXG5cXHRcXHRcXHR1bmlmb3JtczogVW5pZm9ybXNVdGlscy5tZXJnZSggW1xcblxcdFxcdFxcdFxcdFVuaWZvcm1zTGliLmxpZ2h0cyxcXG5cXHRcXHRcXHRcXHRVbmlmb3Jtc0xpYi5mb2csXFxuXFx0XFx0XFx0XFx0e1xcblxcdFxcdFxcdFxcdFxcdGNvbG9yOiB7IHZhbHVlOiBuZXcgQ29sb3IoIDB4MDAwMDAgKSB9LFxcblxcdFxcdFxcdFxcdFxcdG9wYWNpdHk6IHsgdmFsdWU6IDEuMCB9XFxuXFx0XFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRdICksXFxuXFxuXFx0XFx0XFx0dmVydGV4U2hhZGVyOiBTaGFkZXJDaHVuay5zaGFkb3dfdmVydCxcXG5cXHRcXHRcXHRmcmFnbWVudFNoYWRlcjogU2hhZGVyQ2h1bmsuc2hhZG93X2ZyYWdcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fTtcXG5cXG5cXHRTaGFkZXJMaWIucGh5c2ljYWwgPSB7XFxuXFxuXFx0XFx0dW5pZm9ybXM6IFVuaWZvcm1zVXRpbHMubWVyZ2UoIFtcXG5cXHRcXHRcXHRTaGFkZXJMaWIuc3RhbmRhcmQudW5pZm9ybXMsXFxuXFx0XFx0XFx0e1xcblxcdFxcdFxcdFxcdGNsZWFyQ29hdDogeyB2YWx1ZTogMCB9LFxcblxcdFxcdFxcdFxcdGNsZWFyQ29hdFJvdWdobmVzczogeyB2YWx1ZTogMCB9XFxuXFx0XFx0XFx0fVxcblxcdFxcdF0gKSxcXG5cXG5cXHRcXHR2ZXJ0ZXhTaGFkZXI6IFNoYWRlckNodW5rLm1lc2hwaHlzaWNhbF92ZXJ0LFxcblxcdFxcdGZyYWdtZW50U2hhZGVyOiBTaGFkZXJDaHVuay5tZXNocGh5c2ljYWxfZnJhZ1xcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBiaG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pb1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEJveDIoIG1pbiwgbWF4ICkge1xcblxcblxcdFxcdHRoaXMubWluID0gKCBtaW4gIT09IHVuZGVmaW5lZCApID8gbWluIDogbmV3IFZlY3RvcjIoICsgSW5maW5pdHksICsgSW5maW5pdHkgKTtcXG5cXHRcXHR0aGlzLm1heCA9ICggbWF4ICE9PSB1bmRlZmluZWQgKSA/IG1heCA6IG5ldyBWZWN0b3IyKCAtIEluZmluaXR5LCAtIEluZmluaXR5ICk7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIEJveDIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIG1pbiwgbWF4ICkge1xcblxcblxcdFxcdFxcdHRoaXMubWluLmNvcHkoIG1pbiApO1xcblxcdFxcdFxcdHRoaXMubWF4LmNvcHkoIG1heCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbVBvaW50czogZnVuY3Rpb24gKCBwb2ludHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYWtlRW1wdHkoKTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gcG9pbnRzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZXhwYW5kQnlQb2ludCggcG9pbnRzWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tQ2VudGVyQW5kU2l6ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IyKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHNldEZyb21DZW50ZXJBbmRTaXplKCBjZW50ZXIsIHNpemUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGhhbGZTaXplID0gdjEuY29weSggc2l6ZSApLm11bHRpcGx5U2NhbGFyKCAwLjUgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLm1pbi5jb3B5KCBjZW50ZXIgKS5zdWIoIGhhbGZTaXplICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5tYXguY29weSggY2VudGVyICkuYWRkKCBoYWxmU2l6ZSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSggdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4uY29weSggYm94Lm1pbiApO1xcblxcdFxcdFxcdHRoaXMubWF4LmNvcHkoIGJveC5tYXggKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1ha2VFbXB0eTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMubWluLnggPSB0aGlzLm1pbi55ID0gKyBJbmZpbml0eTtcXG5cXHRcXHRcXHR0aGlzLm1heC54ID0gdGhpcy5tYXgueSA9IC0gSW5maW5pdHk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRpc0VtcHR5OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gdGhpcyBpcyBhIG1vcmUgcm9idXN0IGNoZWNrIGZvciBlbXB0eSB0aGFuICggdm9sdW1lIDw9IDAgKSBiZWNhdXNlIHZvbHVtZSBjYW4gZ2V0IHBvc2l0aXZlIHdpdGggdHdvIG5lZ2F0aXZlIGF4ZXNcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCB0aGlzLm1heC54IDwgdGhpcy5taW4ueCApIHx8ICggdGhpcy5tYXgueSA8IHRoaXMubWluLnkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldENlbnRlcjogZnVuY3Rpb24gKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjIoKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5pc0VtcHR5KCkgPyByZXN1bHQuc2V0KCAwLCAwICkgOiByZXN1bHQuYWRkVmVjdG9ycyggdGhpcy5taW4sIHRoaXMubWF4ICkubXVsdGlwbHlTY2FsYXIoIDAuNSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0U2l6ZTogZnVuY3Rpb24gKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjIoKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5pc0VtcHR5KCkgPyByZXN1bHQuc2V0KCAwLCAwICkgOiByZXN1bHQuc3ViVmVjdG9ycyggdGhpcy5tYXgsIHRoaXMubWluICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRleHBhbmRCeVBvaW50OiBmdW5jdGlvbiAoIHBvaW50ICkge1xcblxcblxcdFxcdFxcdHRoaXMubWluLm1pbiggcG9pbnQgKTtcXG5cXHRcXHRcXHR0aGlzLm1heC5tYXgoIHBvaW50ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRleHBhbmRCeVZlY3RvcjogZnVuY3Rpb24gKCB2ZWN0b3IgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4uc3ViKCB2ZWN0b3IgKTtcXG5cXHRcXHRcXHR0aGlzLm1heC5hZGQoIHZlY3RvciApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXhwYW5kQnlTY2FsYXI6IGZ1bmN0aW9uICggc2NhbGFyICkge1xcblxcblxcdFxcdFxcdHRoaXMubWluLmFkZFNjYWxhciggLSBzY2FsYXIgKTtcXG5cXHRcXHRcXHR0aGlzLm1heC5hZGRTY2FsYXIoIHNjYWxhciApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29udGFpbnNQb2ludDogZnVuY3Rpb24gKCBwb2ludCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gcG9pbnQueCA8IHRoaXMubWluLnggfHwgcG9pbnQueCA+IHRoaXMubWF4LnggfHxcXG5cXHRcXHRcXHRcXHRwb2ludC55IDwgdGhpcy5taW4ueSB8fCBwb2ludC55ID4gdGhpcy5tYXgueSA/IGZhbHNlIDogdHJ1ZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvbnRhaW5zQm94OiBmdW5jdGlvbiAoIGJveCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5taW4ueCA8PSBib3gubWluLnggJiYgYm94Lm1heC54IDw9IHRoaXMubWF4LnggJiZcXG5cXHRcXHRcXHRcXHR0aGlzLm1pbi55IDw9IGJveC5taW4ueSAmJiBib3gubWF4LnkgPD0gdGhpcy5tYXgueTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldFBhcmFtZXRlcjogZnVuY3Rpb24gKCBwb2ludCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0Ly8gVGhpcyBjYW4gcG90ZW50aWFsbHkgaGF2ZSBhIGRpdmlkZSBieSB6ZXJvIGlmIHRoZSBib3hcXG5cXHRcXHRcXHQvLyBoYXMgYSBzaXplIGRpbWVuc2lvbiBvZiAwLlxcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMigpO1xcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQuc2V0KFxcblxcdFxcdFxcdFxcdCggcG9pbnQueCAtIHRoaXMubWluLnggKSAvICggdGhpcy5tYXgueCAtIHRoaXMubWluLnggKSxcXG5cXHRcXHRcXHRcXHQoIHBvaW50LnkgLSB0aGlzLm1pbi55ICkgLyAoIHRoaXMubWF4LnkgLSB0aGlzLm1pbi55IClcXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aW50ZXJzZWN0c0JveDogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0Ly8gdXNpbmcgNCBzcGxpdHRpbmcgcGxhbmVzIHRvIHJ1bGUgb3V0IGludGVyc2VjdGlvbnNcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYm94Lm1heC54IDwgdGhpcy5taW4ueCB8fCBib3gubWluLnggPiB0aGlzLm1heC54IHx8XFxuXFx0XFx0XFx0XFx0Ym94Lm1heC55IDwgdGhpcy5taW4ueSB8fCBib3gubWluLnkgPiB0aGlzLm1heC55ID8gZmFsc2UgOiB0cnVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xhbXBQb2ludDogZnVuY3Rpb24gKCBwb2ludCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IyKCk7XFxuXFx0XFx0XFx0cmV0dXJuIHJlc3VsdC5jb3B5KCBwb2ludCApLmNsYW1wKCB0aGlzLm1pbiwgdGhpcy5tYXggKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpc3RhbmNlVG9Qb2ludDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IyKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGRpc3RhbmNlVG9Qb2ludCggcG9pbnQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGNsYW1wZWRQb2ludCA9IHYxLmNvcHkoIHBvaW50ICkuY2xhbXAoIHRoaXMubWluLCB0aGlzLm1heCApO1xcblxcdFxcdFxcdFxcdHJldHVybiBjbGFtcGVkUG9pbnQuc3ViKCBwb2ludCApLmxlbmd0aCgpO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGludGVyc2VjdDogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4ubWF4KCBib3gubWluICk7XFxuXFx0XFx0XFx0dGhpcy5tYXgubWluKCBib3gubWF4ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR1bmlvbjogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4ubWluKCBib3gubWluICk7XFxuXFx0XFx0XFx0dGhpcy5tYXgubWF4KCBib3gubWF4ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0cmFuc2xhdGU6IGZ1bmN0aW9uICggb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdHRoaXMubWluLmFkZCggb2Zmc2V0ICk7XFxuXFx0XFx0XFx0dGhpcy5tYXguYWRkKCBvZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGVxdWFsczogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGJveC5taW4uZXF1YWxzKCB0aGlzLm1pbiApICYmIGJveC5tYXguZXF1YWxzKCB0aGlzLm1heCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtaWthZWwgZW10aW5nZXIgLyBodHRwOi8vZ29tby5zZS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMRmxhcmVSZW5kZXJlciggcmVuZGVyZXIsIGdsLCBzdGF0ZSwgdGV4dHVyZXMsIGNhcGFiaWxpdGllcyApIHtcXG5cXG5cXHRcXHR2YXIgdmVydGV4QnVmZmVyLCBlbGVtZW50QnVmZmVyO1xcblxcdFxcdHZhciBzaGFkZXIsIHByb2dyYW0sIGF0dHJpYnV0ZXMsIHVuaWZvcm1zO1xcblxcblxcdFxcdHZhciB0ZW1wVGV4dHVyZSwgb2NjbHVzaW9uVGV4dHVyZTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBpbml0KCkge1xcblxcblxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoIFtcXG5cXHRcXHRcXHRcXHQtIDEsIC0gMSwgMCwgMCxcXG5cXHRcXHRcXHRcXHQgIDEsIC0gMSwgMSwgMCxcXG5cXHRcXHRcXHRcXHQgIDEsIDEsIDEsIDEsXFxuXFx0XFx0XFx0XFx0LSAxLCAxLCAwLCAxXFxuXFx0XFx0XFx0XSApO1xcblxcblxcdFxcdFxcdHZhciBmYWNlcyA9IG5ldyBVaW50MTZBcnJheSggW1xcblxcdFxcdFxcdFxcdDAsIDEsIDIsXFxuXFx0XFx0XFx0XFx0MCwgMiwgM1xcblxcdFxcdFxcdF0gKTtcXG5cXG5cXHRcXHRcXHQvLyBidWZmZXJzXFxuXFxuXFx0XFx0XFx0dmVydGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7XFxuXFx0XFx0XFx0ZWxlbWVudEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpO1xcblxcblxcdFxcdFxcdGdsLmJpbmRCdWZmZXIoIGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyICk7XFxuXFx0XFx0XFx0Z2wuYnVmZmVyRGF0YSggZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcgKTtcXG5cXG5cXHRcXHRcXHRnbC5iaW5kQnVmZmVyKCBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlciApO1xcblxcdFxcdFxcdGdsLmJ1ZmZlckRhdGEoIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBmYWNlcywgZ2wuU1RBVElDX0RSQVcgKTtcXG5cXG5cXHRcXHRcXHQvLyB0ZXh0dXJlc1xcblxcblxcdFxcdFxcdHRlbXBUZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpO1xcblxcdFxcdFxcdG9jY2x1c2lvblRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7XFxuXFxuXFx0XFx0XFx0c3RhdGUuYmluZFRleHR1cmUoIGdsLlRFWFRVUkVfMkQsIHRlbXBUZXh0dXJlICk7XFxuXFx0XFx0XFx0Z2wudGV4SW1hZ2UyRCggZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCLCAxNiwgMTYsIDAsIGdsLlJHQiwgZ2wuVU5TSUdORURfQllURSwgbnVsbCApO1xcblxcdFxcdFxcdGdsLnRleFBhcmFtZXRlcmkoIGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFICk7XFxuXFx0XFx0XFx0Z2wudGV4UGFyYW1ldGVyaSggZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UgKTtcXG5cXHRcXHRcXHRnbC50ZXhQYXJhbWV0ZXJpKCBnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QgKTtcXG5cXHRcXHRcXHRnbC50ZXhQYXJhbWV0ZXJpKCBnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QgKTtcXG5cXG5cXHRcXHRcXHRzdGF0ZS5iaW5kVGV4dHVyZSggZ2wuVEVYVFVSRV8yRCwgb2NjbHVzaW9uVGV4dHVyZSApO1xcblxcdFxcdFxcdGdsLnRleEltYWdlMkQoIGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDE2LCAxNiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCApO1xcblxcdFxcdFxcdGdsLnRleFBhcmFtZXRlcmkoIGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFICk7XFxuXFx0XFx0XFx0Z2wudGV4UGFyYW1ldGVyaSggZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0UgKTtcXG5cXHRcXHRcXHRnbC50ZXhQYXJhbWV0ZXJpKCBnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QgKTtcXG5cXHRcXHRcXHRnbC50ZXhQYXJhbWV0ZXJpKCBnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QgKTtcXG5cXG5cXHRcXHRcXHRzaGFkZXIgPSB7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGV4U2hhZGVyOiBbXFxuXFxuXFx0XFx0XFx0XFx0XFx0J3VuaWZvcm0gbG93cCBpbnQgcmVuZGVyVHlwZTsnLFxcblxcblxcdFxcdFxcdFxcdFxcdCd1bmlmb3JtIHZlYzMgc2NyZWVuUG9zaXRpb247JyxcXG5cXHRcXHRcXHRcXHRcXHQndW5pZm9ybSB2ZWMyIHNjYWxlOycsXFxuXFx0XFx0XFx0XFx0XFx0J3VuaWZvcm0gZmxvYXQgcm90YXRpb247JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQndW5pZm9ybSBzYW1wbGVyMkQgb2NjbHVzaW9uTWFwOycsXFxuXFxuXFx0XFx0XFx0XFx0XFx0J2F0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOycsXFxuXFx0XFx0XFx0XFx0XFx0J2F0dHJpYnV0ZSB2ZWMyIHV2OycsXFxuXFxuXFx0XFx0XFx0XFx0XFx0J3ZhcnlpbmcgdmVjMiB2VVY7JyxcXG5cXHRcXHRcXHRcXHRcXHQndmFyeWluZyBmbG9hdCB2VmlzaWJpbGl0eTsnLFxcblxcblxcdFxcdFxcdFxcdFxcdCd2b2lkIG1haW4oKSB7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQnXFx0dlVWID0gdXY7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQnXFx0dmVjMiBwb3MgPSBwb3NpdGlvbjsnLFxcblxcblxcdFxcdFxcdFxcdFxcdCdcXHRpZiAoIHJlbmRlclR5cGUgPT0gMiApIHsnLFxcblxcblxcdFxcdFxcdFxcdFxcdCdcXHRcXHR2ZWM0IHZpc2liaWxpdHkgPSB0ZXh0dXJlMkQoIG9jY2x1c2lvbk1hcCwgdmVjMiggMC4xLCAwLjEgKSApOycsXFxuXFx0XFx0XFx0XFx0XFx0J1xcdFxcdHZpc2liaWxpdHkgKz0gdGV4dHVyZTJEKCBvY2NsdXNpb25NYXAsIHZlYzIoIDAuNSwgMC4xICkgKTsnLFxcblxcdFxcdFxcdFxcdFxcdCdcXHRcXHR2aXNpYmlsaXR5ICs9IHRleHR1cmUyRCggb2NjbHVzaW9uTWFwLCB2ZWMyKCAwLjksIDAuMSApICk7JyxcXG5cXHRcXHRcXHRcXHRcXHQnXFx0XFx0dmlzaWJpbGl0eSArPSB0ZXh0dXJlMkQoIG9jY2x1c2lvbk1hcCwgdmVjMiggMC45LCAwLjUgKSApOycsXFxuXFx0XFx0XFx0XFx0XFx0J1xcdFxcdHZpc2liaWxpdHkgKz0gdGV4dHVyZTJEKCBvY2NsdXNpb25NYXAsIHZlYzIoIDAuOSwgMC45ICkgKTsnLFxcblxcdFxcdFxcdFxcdFxcdCdcXHRcXHR2aXNpYmlsaXR5ICs9IHRleHR1cmUyRCggb2NjbHVzaW9uTWFwLCB2ZWMyKCAwLjUsIDAuOSApICk7JyxcXG5cXHRcXHRcXHRcXHRcXHQnXFx0XFx0dmlzaWJpbGl0eSArPSB0ZXh0dXJlMkQoIG9jY2x1c2lvbk1hcCwgdmVjMiggMC4xLCAwLjkgKSApOycsXFxuXFx0XFx0XFx0XFx0XFx0J1xcdFxcdHZpc2liaWxpdHkgKz0gdGV4dHVyZTJEKCBvY2NsdXNpb25NYXAsIHZlYzIoIDAuMSwgMC41ICkgKTsnLFxcblxcdFxcdFxcdFxcdFxcdCdcXHRcXHR2aXNpYmlsaXR5ICs9IHRleHR1cmUyRCggb2NjbHVzaW9uTWFwLCB2ZWMyKCAwLjUsIDAuNSApICk7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQnXFx0XFx0dlZpc2liaWxpdHkgPSAgICAgICAgdmlzaWJpbGl0eS5yIC8gOS4wOycsXFxuXFx0XFx0XFx0XFx0XFx0J1xcdFxcdHZWaXNpYmlsaXR5ICo9IDEuMCAtIHZpc2liaWxpdHkuZyAvIDkuMDsnLFxcblxcdFxcdFxcdFxcdFxcdCdcXHRcXHR2VmlzaWJpbGl0eSAqPSAgICAgICB2aXNpYmlsaXR5LmIgLyA5LjA7JyxcXG5cXHRcXHRcXHRcXHRcXHQnXFx0XFx0dlZpc2liaWxpdHkgKj0gMS4wIC0gdmlzaWJpbGl0eS5hIC8gOS4wOycsXFxuXFxuXFx0XFx0XFx0XFx0XFx0J1xcdFxcdHBvcy54ID0gY29zKCByb3RhdGlvbiApICogcG9zaXRpb24ueCAtIHNpbiggcm90YXRpb24gKSAqIHBvc2l0aW9uLnk7JyxcXG5cXHRcXHRcXHRcXHRcXHQnXFx0XFx0cG9zLnkgPSBzaW4oIHJvdGF0aW9uICkgKiBwb3NpdGlvbi54ICsgY29zKCByb3RhdGlvbiApICogcG9zaXRpb24ueTsnLFxcblxcblxcdFxcdFxcdFxcdFxcdCdcXHR9JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQnXFx0Z2xfUG9zaXRpb24gPSB2ZWM0KCAoIHBvcyAqIHNjYWxlICsgc2NyZWVuUG9zaXRpb24ueHkgKS54eSwgc2NyZWVuUG9zaXRpb24ueiwgMS4wICk7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQnfSdcXG5cXG5cXHRcXHRcXHRcXHRdLmpvaW4oICdcXFxcbicgKSxcXG5cXG5cXHRcXHRcXHRcXHRmcmFnbWVudFNoYWRlcjogW1xcblxcblxcdFxcdFxcdFxcdFxcdCd1bmlmb3JtIGxvd3AgaW50IHJlbmRlclR5cGU7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQndW5pZm9ybSBzYW1wbGVyMkQgbWFwOycsXFxuXFx0XFx0XFx0XFx0XFx0J3VuaWZvcm0gZmxvYXQgb3BhY2l0eTsnLFxcblxcdFxcdFxcdFxcdFxcdCd1bmlmb3JtIHZlYzMgY29sb3I7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQndmFyeWluZyB2ZWMyIHZVVjsnLFxcblxcdFxcdFxcdFxcdFxcdCd2YXJ5aW5nIGZsb2F0IHZWaXNpYmlsaXR5OycsXFxuXFxuXFx0XFx0XFx0XFx0XFx0J3ZvaWQgbWFpbigpIHsnLFxcblxcblxcdFxcdFxcdFxcdFxcdC8vIHBpbmsgc3F1YXJlXFxuXFxuXFx0XFx0XFx0XFx0XFx0J1xcdGlmICggcmVuZGVyVHlwZSA9PSAwICkgeycsXFxuXFxuXFx0XFx0XFx0XFx0XFx0J1xcdFxcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDEuMCwgMC4wLCAxLjAsIDAuMCApOycsXFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gcmVzdG9yZVxcblxcblxcdFxcdFxcdFxcdFxcdCdcXHR9IGVsc2UgaWYgKCByZW5kZXJUeXBlID09IDEgKSB7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQnXFx0XFx0Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCBtYXAsIHZVViApOycsXFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gZmxhcmVcXG5cXG5cXHRcXHRcXHRcXHRcXHQnXFx0fSBlbHNlIHsnLFxcblxcblxcdFxcdFxcdFxcdFxcdCdcXHRcXHR2ZWM0IHRleHR1cmUgPSB0ZXh0dXJlMkQoIG1hcCwgdlVWICk7JyxcXG5cXHRcXHRcXHRcXHRcXHQnXFx0XFx0dGV4dHVyZS5hICo9IG9wYWNpdHkgKiB2VmlzaWJpbGl0eTsnLFxcblxcdFxcdFxcdFxcdFxcdCdcXHRcXHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlOycsXFxuXFx0XFx0XFx0XFx0XFx0J1xcdFxcdGdsX0ZyYWdDb2xvci5yZ2IgKj0gY29sb3I7JyxcXG5cXG5cXHRcXHRcXHRcXHRcXHQnXFx0fScsXFxuXFxuXFx0XFx0XFx0XFx0XFx0J30nXFxuXFxuXFx0XFx0XFx0XFx0XS5qb2luKCAnXFxcXG4nIClcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKCBzaGFkZXIgKTtcXG5cXG5cXHRcXHRcXHRhdHRyaWJ1dGVzID0ge1xcblxcdFxcdFxcdFxcdHZlcnRleDogZ2wuZ2V0QXR0cmliTG9jYXRpb24oIHByb2dyYW0sICdwb3NpdGlvbicgKSxcXG5cXHRcXHRcXHRcXHR1djogZ2wuZ2V0QXR0cmliTG9jYXRpb24oIHByb2dyYW0sICd1dicgKVxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXMgPSB7XFxuXFx0XFx0XFx0XFx0cmVuZGVyVHlwZTogZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCBwcm9ncmFtLCAncmVuZGVyVHlwZScgKSxcXG5cXHRcXHRcXHRcXHRtYXA6IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ21hcCcgKSxcXG5cXHRcXHRcXHRcXHRvY2NsdXNpb25NYXA6IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ29jY2x1c2lvbk1hcCcgKSxcXG5cXHRcXHRcXHRcXHRvcGFjaXR5OiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdvcGFjaXR5JyApLFxcblxcdFxcdFxcdFxcdGNvbG9yOiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdjb2xvcicgKSxcXG5cXHRcXHRcXHRcXHRzY2FsZTogZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCBwcm9ncmFtLCAnc2NhbGUnICksXFxuXFx0XFx0XFx0XFx0cm90YXRpb246IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ3JvdGF0aW9uJyApLFxcblxcdFxcdFxcdFxcdHNjcmVlblBvc2l0aW9uOiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdzY3JlZW5Qb3NpdGlvbicgKVxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8qXFxuXFx0XFx0ICogUmVuZGVyIGxlbnMgZmxhcmVzXFxuXFx0XFx0ICogTWV0aG9kOiByZW5kZXJzIDE2eDE2IDB4ZmYwMGZmLWNvbG9yZWQgcG9pbnRzIHNjYXR0ZXJlZCBvdmVyIHRoZSBsaWdodCBzb3VyY2UgYXJlYSxcXG5cXHRcXHQgKiAgICAgICAgIHJlYWRzIHRoZXNlIGJhY2sgYW5kIGNhbGN1bGF0ZXMgb2NjbHVzaW9uLlxcblxcdFxcdCAqL1xcblxcblxcdFxcdHRoaXMucmVuZGVyID0gZnVuY3Rpb24gKCBmbGFyZXMsIHNjZW5lLCBjYW1lcmEsIHZpZXdwb3J0ICkge1xcblxcblxcdFxcdFxcdGlmICggZmxhcmVzLmxlbmd0aCA9PT0gMCApIHJldHVybjtcXG5cXG5cXHRcXHRcXHR2YXIgdGVtcFBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgaW52QXNwZWN0ID0gdmlld3BvcnQudyAvIHZpZXdwb3J0LnosXFxuXFx0XFx0XFx0XFx0aGFsZlZpZXdwb3J0V2lkdGggPSB2aWV3cG9ydC56ICogMC41LFxcblxcdFxcdFxcdFxcdGhhbGZWaWV3cG9ydEhlaWdodCA9IHZpZXdwb3J0LncgKiAwLjU7XFxuXFxuXFx0XFx0XFx0dmFyIHNpemUgPSAxNiAvIHZpZXdwb3J0LncsXFxuXFx0XFx0XFx0XFx0c2NhbGUgPSBuZXcgVmVjdG9yMiggc2l6ZSAqIGludkFzcGVjdCwgc2l6ZSApO1xcblxcblxcdFxcdFxcdHZhciBzY3JlZW5Qb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCAxLCAxLCAwICksXFxuXFx0XFx0XFx0XFx0c2NyZWVuUG9zaXRpb25QaXhlbHMgPSBuZXcgVmVjdG9yMiggMSwgMSApO1xcblxcblxcdFxcdFxcdHZhciB2YWxpZEFyZWEgPSBuZXcgQm94MigpO1xcblxcblxcdFxcdFxcdHZhbGlkQXJlYS5taW4uc2V0KCB2aWV3cG9ydC54LCB2aWV3cG9ydC55ICk7XFxuXFx0XFx0XFx0dmFsaWRBcmVhLm1heC5zZXQoIHZpZXdwb3J0LnggKyAoIHZpZXdwb3J0LnogLSAxNiApLCB2aWV3cG9ydC55ICsgKCB2aWV3cG9ydC53IC0gMTYgKSApO1xcblxcblxcdFxcdFxcdGlmICggcHJvZ3JhbSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGluaXQoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0c3RhdGUudXNlUHJvZ3JhbSggcHJvZ3JhbSApO1xcblxcblxcdFxcdFxcdHN0YXRlLmluaXRBdHRyaWJ1dGVzKCk7XFxuXFx0XFx0XFx0c3RhdGUuZW5hYmxlQXR0cmlidXRlKCBhdHRyaWJ1dGVzLnZlcnRleCApO1xcblxcdFxcdFxcdHN0YXRlLmVuYWJsZUF0dHJpYnV0ZSggYXR0cmlidXRlcy51diApO1xcblxcdFxcdFxcdHN0YXRlLmRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzKCk7XFxuXFxuXFx0XFx0XFx0Ly8gbG9vcCB0aHJvdWdoIGFsbCBsZW5zIGZsYXJlcyB0byB1cGRhdGUgdGhlaXIgb2NjbHVzaW9uIGFuZCBwb3NpdGlvbnNcXG5cXHRcXHRcXHQvLyBzZXR1cCBnbCBhbmQgY29tbW9uIHVzZWQgYXR0cmlicy91bmlmb3Jtc1xcblxcblxcdFxcdFxcdGdsLnVuaWZvcm0xaSggdW5pZm9ybXMub2NjbHVzaW9uTWFwLCAwICk7XFxuXFx0XFx0XFx0Z2wudW5pZm9ybTFpKCB1bmlmb3Jtcy5tYXAsIDEgKTtcXG5cXG5cXHRcXHRcXHRnbC5iaW5kQnVmZmVyKCBnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlciApO1xcblxcdFxcdFxcdGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoIGF0dHJpYnV0ZXMudmVydGV4LCAyLCBnbC5GTE9BVCwgZmFsc2UsIDIgKiA4LCAwICk7XFxuXFx0XFx0XFx0Z2wudmVydGV4QXR0cmliUG9pbnRlciggYXR0cmlidXRlcy51diwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAyICogOCwgOCApO1xcblxcblxcdFxcdFxcdGdsLmJpbmRCdWZmZXIoIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtZW50QnVmZmVyICk7XFxuXFxuXFx0XFx0XFx0c3RhdGUuZGlzYWJsZSggZ2wuQ1VMTF9GQUNFICk7XFxuXFx0XFx0XFx0c3RhdGUuYnVmZmVycy5kZXB0aC5zZXRNYXNrKCBmYWxzZSApO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGZsYXJlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHNpemUgPSAxNiAvIHZpZXdwb3J0Lnc7XFxuXFx0XFx0XFx0XFx0c2NhbGUuc2V0KCBzaXplICogaW52QXNwZWN0LCBzaXplICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gY2FsYyBvYmplY3Qgc2NyZWVuIHBvc2l0aW9uXFxuXFxuXFx0XFx0XFx0XFx0dmFyIGZsYXJlID0gZmxhcmVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0dGVtcFBvc2l0aW9uLnNldCggZmxhcmUubWF0cml4V29ybGQuZWxlbWVudHNbIDEyIF0sIGZsYXJlLm1hdHJpeFdvcmxkLmVsZW1lbnRzWyAxMyBdLCBmbGFyZS5tYXRyaXhXb3JsZC5lbGVtZW50c1sgMTQgXSApO1xcblxcblxcdFxcdFxcdFxcdHRlbXBQb3NpdGlvbi5hcHBseU1hdHJpeDQoIGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UgKTtcXG5cXHRcXHRcXHRcXHR0ZW1wUG9zaXRpb24uYXBwbHlNYXRyaXg0KCBjYW1lcmEucHJvamVjdGlvbk1hdHJpeCApO1xcblxcblxcdFxcdFxcdFxcdC8vIHNldHVwIGFycmF5cyBmb3IgZ2wgcHJvZ3JhbXNcXG5cXG5cXHRcXHRcXHRcXHRzY3JlZW5Qb3NpdGlvbi5jb3B5KCB0ZW1wUG9zaXRpb24gKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSBsb3dlciBsZWZ0IGNvcm5lciBvZiB0aGUgcGl4ZWxzIHRvIGNvcHlcXG5cXG5cXHRcXHRcXHRcXHRzY3JlZW5Qb3NpdGlvblBpeGVscy54ID0gdmlld3BvcnQueCArICggc2NyZWVuUG9zaXRpb24ueCAqIGhhbGZWaWV3cG9ydFdpZHRoICkgKyBoYWxmVmlld3BvcnRXaWR0aCAtIDg7XFxuXFx0XFx0XFx0XFx0c2NyZWVuUG9zaXRpb25QaXhlbHMueSA9IHZpZXdwb3J0LnkgKyAoIHNjcmVlblBvc2l0aW9uLnkgKiBoYWxmVmlld3BvcnRIZWlnaHQgKSArIGhhbGZWaWV3cG9ydEhlaWdodCAtIDg7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gc2NyZWVuIGN1bGxcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHZhbGlkQXJlYS5jb250YWluc1BvaW50KCBzY3JlZW5Qb3NpdGlvblBpeGVscyApID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHNhdmUgY3VycmVudCBSR0IgdG8gdGVtcCB0ZXh0dXJlXFxuXFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUuYWN0aXZlVGV4dHVyZSggZ2wuVEVYVFVSRTAgKTtcXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5iaW5kVGV4dHVyZSggZ2wuVEVYVFVSRV8yRCwgbnVsbCApO1xcblxcdFxcdFxcdFxcdFxcdHN0YXRlLmFjdGl2ZVRleHR1cmUoIGdsLlRFWFRVUkUxICk7XFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUuYmluZFRleHR1cmUoIGdsLlRFWFRVUkVfMkQsIHRlbXBUZXh0dXJlICk7XFxuXFx0XFx0XFx0XFx0XFx0Z2wuY29weVRleEltYWdlMkQoIGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQiwgc2NyZWVuUG9zaXRpb25QaXhlbHMueCwgc2NyZWVuUG9zaXRpb25QaXhlbHMueSwgMTYsIDE2LCAwICk7XFxuXFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gcmVuZGVyIHBpbmsgcXVhZFxcblxcblxcdFxcdFxcdFxcdFxcdGdsLnVuaWZvcm0xaSggdW5pZm9ybXMucmVuZGVyVHlwZSwgMCApO1xcblxcdFxcdFxcdFxcdFxcdGdsLnVuaWZvcm0yZiggdW5pZm9ybXMuc2NhbGUsIHNjYWxlLngsIHNjYWxlLnkgKTtcXG5cXHRcXHRcXHRcXHRcXHRnbC51bmlmb3JtM2YoIHVuaWZvcm1zLnNjcmVlblBvc2l0aW9uLCBzY3JlZW5Qb3NpdGlvbi54LCBzY3JlZW5Qb3NpdGlvbi55LCBzY3JlZW5Qb3NpdGlvbi56ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUuZGlzYWJsZSggZ2wuQkxFTkQgKTtcXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5lbmFibGUoIGdsLkRFUFRIX1RFU1QgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRnbC5kcmF3RWxlbWVudHMoIGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAgKTtcXG5cXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBjb3B5IHJlc3VsdCB0byBvY2NsdXNpb25NYXBcXG5cXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5hY3RpdmVUZXh0dXJlKCBnbC5URVhUVVJFMCApO1xcblxcdFxcdFxcdFxcdFxcdHN0YXRlLmJpbmRUZXh0dXJlKCBnbC5URVhUVVJFXzJELCBvY2NsdXNpb25UZXh0dXJlICk7XFxuXFx0XFx0XFx0XFx0XFx0Z2wuY29weVRleEltYWdlMkQoIGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIHNjcmVlblBvc2l0aW9uUGl4ZWxzLngsIHNjcmVlblBvc2l0aW9uUGl4ZWxzLnksIDE2LCAxNiwgMCApO1xcblxcblxcblxcdFxcdFxcdFxcdFxcdC8vIHJlc3RvcmUgZ3JhcGhpY3NcXG5cXG5cXHRcXHRcXHRcXHRcXHRnbC51bmlmb3JtMWkoIHVuaWZvcm1zLnJlbmRlclR5cGUsIDEgKTtcXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5kaXNhYmxlKCBnbC5ERVBUSF9URVNUICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUuYWN0aXZlVGV4dHVyZSggZ2wuVEVYVFVSRTEgKTtcXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5iaW5kVGV4dHVyZSggZ2wuVEVYVFVSRV8yRCwgdGVtcFRleHR1cmUgKTtcXG5cXHRcXHRcXHRcXHRcXHRnbC5kcmF3RWxlbWVudHMoIGdsLlRSSUFOR0xFUywgNiwgZ2wuVU5TSUdORURfU0hPUlQsIDAgKTtcXG5cXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyB1cGRhdGUgb2JqZWN0IHBvc2l0aW9uc1xcblxcblxcdFxcdFxcdFxcdFxcdGZsYXJlLnBvc2l0aW9uU2NyZWVuLmNvcHkoIHNjcmVlblBvc2l0aW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBmbGFyZS5jdXN0b21VcGRhdGVDYWxsYmFjayApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmbGFyZS5jdXN0b21VcGRhdGVDYWxsYmFjayggZmxhcmUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZsYXJlLnVwZGF0ZUxlbnNGbGFyZXMoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gcmVuZGVyIGZsYXJlc1xcblxcblxcdFxcdFxcdFxcdFxcdGdsLnVuaWZvcm0xaSggdW5pZm9ybXMucmVuZGVyVHlwZSwgMiApO1xcblxcdFxcdFxcdFxcdFxcdHN0YXRlLmVuYWJsZSggZ2wuQkxFTkQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaiA9IDAsIGpsID0gZmxhcmUubGVuc0ZsYXJlcy5sZW5ndGg7IGogPCBqbDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgc3ByaXRlID0gZmxhcmUubGVuc0ZsYXJlc1sgaiBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggc3ByaXRlLm9wYWNpdHkgPiAwLjAwMSAmJiBzcHJpdGUuc2NhbGUgPiAwLjAwMSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzY3JlZW5Qb3NpdGlvbi54ID0gc3ByaXRlLng7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2NyZWVuUG9zaXRpb24ueSA9IHNwcml0ZS55O1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNjcmVlblBvc2l0aW9uLnogPSBzcHJpdGUuejtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzaXplID0gc3ByaXRlLnNpemUgKiBzcHJpdGUuc2NhbGUgLyB2aWV3cG9ydC53O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNjYWxlLnggPSBzaXplICogaW52QXNwZWN0O1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNjYWxlLnkgPSBzaXplO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLnVuaWZvcm0zZiggdW5pZm9ybXMuc2NyZWVuUG9zaXRpb24sIHNjcmVlblBvc2l0aW9uLngsIHNjcmVlblBvc2l0aW9uLnksIHNjcmVlblBvc2l0aW9uLnogKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRnbC51bmlmb3JtMmYoIHVuaWZvcm1zLnNjYWxlLCBzY2FsZS54LCBzY2FsZS55ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wudW5pZm9ybTFmKCB1bmlmb3Jtcy5yb3RhdGlvbiwgc3ByaXRlLnJvdGF0aW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wudW5pZm9ybTFmKCB1bmlmb3Jtcy5vcGFjaXR5LCBzcHJpdGUub3BhY2l0eSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLnVuaWZvcm0zZiggdW5pZm9ybXMuY29sb3IsIHNwcml0ZS5jb2xvci5yLCBzcHJpdGUuY29sb3IuZywgc3ByaXRlLmNvbG9yLmIgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzdGF0ZS5zZXRCbGVuZGluZyggc3ByaXRlLmJsZW5kaW5nLCBzcHJpdGUuYmxlbmRFcXVhdGlvbiwgc3ByaXRlLmJsZW5kU3JjLCBzcHJpdGUuYmxlbmREc3QgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0ZXh0dXJlcy5zZXRUZXh0dXJlMkQoIHNwcml0ZS50ZXh0dXJlLCAxICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuZHJhd0VsZW1lbnRzKCBnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHJlc3RvcmUgZ2xcXG5cXG5cXHRcXHRcXHRzdGF0ZS5lbmFibGUoIGdsLkNVTExfRkFDRSApO1xcblxcdFxcdFxcdHN0YXRlLmVuYWJsZSggZ2wuREVQVEhfVEVTVCApO1xcblxcdFxcdFxcdHN0YXRlLmJ1ZmZlcnMuZGVwdGguc2V0TWFzayggdHJ1ZSApO1xcblxcblxcdFxcdFxcdHN0YXRlLnJlc2V0KCk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBjcmVhdGVQcm9ncmFtKCBzaGFkZXIgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7XFxuXFxuXFx0XFx0XFx0dmFyIGZyYWdtZW50U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKCBnbC5GUkFHTUVOVF9TSEFERVIgKTtcXG5cXHRcXHRcXHR2YXIgdmVydGV4U2hhZGVyID0gZ2wuY3JlYXRlU2hhZGVyKCBnbC5WRVJURVhfU0hBREVSICk7XFxuXFxuXFx0XFx0XFx0dmFyIHByZWZpeCA9ICdwcmVjaXNpb24gJyArIGNhcGFiaWxpdGllcy5wcmVjaXNpb24gKyAnIGZsb2F0O1xcXFxuJztcXG5cXG5cXHRcXHRcXHRnbC5zaGFkZXJTb3VyY2UoIGZyYWdtZW50U2hhZGVyLCBwcmVmaXggKyBzaGFkZXIuZnJhZ21lbnRTaGFkZXIgKTtcXG5cXHRcXHRcXHRnbC5zaGFkZXJTb3VyY2UoIHZlcnRleFNoYWRlciwgcHJlZml4ICsgc2hhZGVyLnZlcnRleFNoYWRlciApO1xcblxcblxcdFxcdFxcdGdsLmNvbXBpbGVTaGFkZXIoIGZyYWdtZW50U2hhZGVyICk7XFxuXFx0XFx0XFx0Z2wuY29tcGlsZVNoYWRlciggdmVydGV4U2hhZGVyICk7XFxuXFxuXFx0XFx0XFx0Z2wuYXR0YWNoU2hhZGVyKCBwcm9ncmFtLCBmcmFnbWVudFNoYWRlciApO1xcblxcdFxcdFxcdGdsLmF0dGFjaFNoYWRlciggcHJvZ3JhbSwgdmVydGV4U2hhZGVyICk7XFxuXFxuXFx0XFx0XFx0Z2wubGlua1Byb2dyYW0oIHByb2dyYW0gKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gcHJvZ3JhbTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ2FudmFzVGV4dHVyZSggY2FudmFzLCBtYXBwaW5nLCB3cmFwUywgd3JhcFQsIG1hZ0ZpbHRlciwgbWluRmlsdGVyLCBmb3JtYXQsIHR5cGUsIGFuaXNvdHJvcHkgKSB7XFxuXFxuXFx0XFx0VGV4dHVyZS5jYWxsKCB0aGlzLCBjYW52YXMsIG1hcHBpbmcsIHdyYXBTLCB3cmFwVCwgbWFnRmlsdGVyLCBtaW5GaWx0ZXIsIGZvcm1hdCwgdHlwZSwgYW5pc290cm9weSApO1xcblxcblxcdFxcdHRoaXMubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdH1cXG5cXG5cXHRDYW52YXNUZXh0dXJlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFRleHR1cmUucHJvdG90eXBlICk7XFxuXFx0Q2FudmFzVGV4dHVyZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW52YXNUZXh0dXJlO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbWlrYWVsIGVtdGluZ2VyIC8gaHR0cDovL2dvbW8uc2UvXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBXZWJHTFNwcml0ZVJlbmRlcmVyKCByZW5kZXJlciwgZ2wsIHN0YXRlLCB0ZXh0dXJlcywgY2FwYWJpbGl0aWVzICkge1xcblxcblxcdFxcdHZhciB2ZXJ0ZXhCdWZmZXIsIGVsZW1lbnRCdWZmZXI7XFxuXFx0XFx0dmFyIHByb2dyYW0sIGF0dHJpYnV0ZXMsIHVuaWZvcm1zO1xcblxcblxcdFxcdHZhciB0ZXh0dXJlO1xcblxcblxcdFxcdC8vIGRlY29tcG9zZSBtYXRyaXhXb3JsZFxcblxcblxcdFxcdHZhciBzcHJpdGVQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIHNwcml0ZVJvdGF0aW9uID0gbmV3IFF1YXRlcm5pb24oKTtcXG5cXHRcXHR2YXIgc3ByaXRlU2NhbGUgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdGZ1bmN0aW9uIGluaXQoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheSggW1xcblxcdFxcdFxcdFxcdC0gMC41LCAtIDAuNSwgMCwgMCxcXG5cXHRcXHRcXHRcXHQgIDAuNSwgLSAwLjUsIDEsIDAsXFxuXFx0XFx0XFx0XFx0ICAwLjUsIDAuNSwgMSwgMSxcXG5cXHRcXHRcXHRcXHQtIDAuNSwgMC41LCAwLCAxXFxuXFx0XFx0XFx0XSApO1xcblxcblxcdFxcdFxcdHZhciBmYWNlcyA9IG5ldyBVaW50MTZBcnJheSggW1xcblxcdFxcdFxcdFxcdDAsIDEsIDIsXFxuXFx0XFx0XFx0XFx0MCwgMiwgM1xcblxcdFxcdFxcdF0gKTtcXG5cXG5cXHRcXHRcXHR2ZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTtcXG5cXHRcXHRcXHRlbGVtZW50QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7XFxuXFxuXFx0XFx0XFx0Z2wuYmluZEJ1ZmZlciggZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhCdWZmZXIgKTtcXG5cXHRcXHRcXHRnbC5idWZmZXJEYXRhKCBnbC5BUlJBWV9CVUZGRVIsIHZlcnRpY2VzLCBnbC5TVEFUSUNfRFJBVyApO1xcblxcblxcdFxcdFxcdGdsLmJpbmRCdWZmZXIoIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtZW50QnVmZmVyICk7XFxuXFx0XFx0XFx0Z2wuYnVmZmVyRGF0YSggZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGZhY2VzLCBnbC5TVEFUSUNfRFJBVyApO1xcblxcblxcdFxcdFxcdHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKCk7XFxuXFxuXFx0XFx0XFx0YXR0cmlidXRlcyA9IHtcXG5cXHRcXHRcXHRcXHRwb3NpdGlvbjogZ2wuZ2V0QXR0cmliTG9jYXRpb24oIHByb2dyYW0sICdwb3NpdGlvbicgKSxcXG5cXHRcXHRcXHRcXHR1djogZ2wuZ2V0QXR0cmliTG9jYXRpb24oIHByb2dyYW0sICd1dicgKVxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXMgPSB7XFxuXFx0XFx0XFx0XFx0dXZPZmZzZXQ6IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ3V2T2Zmc2V0JyApLFxcblxcdFxcdFxcdFxcdHV2U2NhbGU6IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ3V2U2NhbGUnICksXFxuXFxuXFx0XFx0XFx0XFx0cm90YXRpb246IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ3JvdGF0aW9uJyApLFxcblxcdFxcdFxcdFxcdHNjYWxlOiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdzY2FsZScgKSxcXG5cXG5cXHRcXHRcXHRcXHRjb2xvcjogZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCBwcm9ncmFtLCAnY29sb3InICksXFxuXFx0XFx0XFx0XFx0bWFwOiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdtYXAnICksXFxuXFx0XFx0XFx0XFx0b3BhY2l0eTogZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCBwcm9ncmFtLCAnb3BhY2l0eScgKSxcXG5cXG5cXHRcXHRcXHRcXHRtb2RlbFZpZXdNYXRyaXg6IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ21vZGVsVmlld01hdHJpeCcgKSxcXG5cXHRcXHRcXHRcXHRwcm9qZWN0aW9uTWF0cml4OiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdwcm9qZWN0aW9uTWF0cml4JyApLFxcblxcblxcdFxcdFxcdFxcdGZvZ1R5cGU6IGdsLmdldFVuaWZvcm1Mb2NhdGlvbiggcHJvZ3JhbSwgJ2ZvZ1R5cGUnICksXFxuXFx0XFx0XFx0XFx0Zm9nRGVuc2l0eTogZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCBwcm9ncmFtLCAnZm9nRGVuc2l0eScgKSxcXG5cXHRcXHRcXHRcXHRmb2dOZWFyOiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdmb2dOZWFyJyApLFxcblxcdFxcdFxcdFxcdGZvZ0ZhcjogZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCBwcm9ncmFtLCAnZm9nRmFyJyApLFxcblxcdFxcdFxcdFxcdGZvZ0NvbG9yOiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdmb2dDb2xvcicgKSxcXG5cXHRcXHRcXHRcXHRmb2dEZXB0aDogZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKCBwcm9ncmFtLCAnZm9nRGVwdGgnICksXFxuXFxuXFx0XFx0XFx0XFx0YWxwaGFUZXN0OiBnbC5nZXRVbmlmb3JtTG9jYXRpb24oIHByb2dyYW0sICdhbHBoYVRlc3QnIClcXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2NhbnZhcycgKTtcXG5cXHRcXHRcXHRjYW52YXMud2lkdGggPSA4O1xcblxcdFxcdFxcdGNhbnZhcy5oZWlnaHQgPSA4O1xcblxcblxcdFxcdFxcdHZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoICcyZCcgKTtcXG5cXHRcXHRcXHRjb250ZXh0LmZpbGxTdHlsZSA9ICd3aGl0ZSc7XFxuXFx0XFx0XFx0Y29udGV4dC5maWxsUmVjdCggMCwgMCwgOCwgOCApO1xcblxcblxcdFxcdFxcdHRleHR1cmUgPSBuZXcgQ2FudmFzVGV4dHVyZSggY2FudmFzICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHRoaXMucmVuZGVyID0gZnVuY3Rpb24gKCBzcHJpdGVzLCBzY2VuZSwgY2FtZXJhICkge1xcblxcblxcdFxcdFxcdGlmICggc3ByaXRlcy5sZW5ndGggPT09IDAgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0Ly8gc2V0dXAgZ2xcXG5cXG5cXHRcXHRcXHRpZiAoIHByb2dyYW0gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpbml0KCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHN0YXRlLnVzZVByb2dyYW0oIHByb2dyYW0gKTtcXG5cXG5cXHRcXHRcXHRzdGF0ZS5pbml0QXR0cmlidXRlcygpO1xcblxcdFxcdFxcdHN0YXRlLmVuYWJsZUF0dHJpYnV0ZSggYXR0cmlidXRlcy5wb3NpdGlvbiApO1xcblxcdFxcdFxcdHN0YXRlLmVuYWJsZUF0dHJpYnV0ZSggYXR0cmlidXRlcy51diApO1xcblxcdFxcdFxcdHN0YXRlLmRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzKCk7XFxuXFxuXFx0XFx0XFx0c3RhdGUuZGlzYWJsZSggZ2wuQ1VMTF9GQUNFICk7XFxuXFx0XFx0XFx0c3RhdGUuZW5hYmxlKCBnbC5CTEVORCApO1xcblxcblxcdFxcdFxcdGdsLmJpbmRCdWZmZXIoIGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyICk7XFxuXFx0XFx0XFx0Z2wudmVydGV4QXR0cmliUG9pbnRlciggYXR0cmlidXRlcy5wb3NpdGlvbiwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAyICogOCwgMCApO1xcblxcdFxcdFxcdGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoIGF0dHJpYnV0ZXMudXYsIDIsIGdsLkZMT0FULCBmYWxzZSwgMiAqIDgsIDggKTtcXG5cXG5cXHRcXHRcXHRnbC5iaW5kQnVmZmVyKCBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZWxlbWVudEJ1ZmZlciApO1xcblxcblxcdFxcdFxcdGdsLnVuaWZvcm1NYXRyaXg0ZnYoIHVuaWZvcm1zLnByb2plY3Rpb25NYXRyaXgsIGZhbHNlLCBjYW1lcmEucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyApO1xcblxcblxcdFxcdFxcdHN0YXRlLmFjdGl2ZVRleHR1cmUoIGdsLlRFWFRVUkUwICk7XFxuXFx0XFx0XFx0Z2wudW5pZm9ybTFpKCB1bmlmb3Jtcy5tYXAsIDAgKTtcXG5cXG5cXHRcXHRcXHR2YXIgb2xkRm9nVHlwZSA9IDA7XFxuXFx0XFx0XFx0dmFyIHNjZW5lRm9nVHlwZSA9IDA7XFxuXFx0XFx0XFx0dmFyIGZvZyA9IHNjZW5lLmZvZztcXG5cXG5cXHRcXHRcXHRpZiAoIGZvZyApIHtcXG5cXG5cXHRcXHRcXHRcXHRnbC51bmlmb3JtM2YoIHVuaWZvcm1zLmZvZ0NvbG9yLCBmb2cuY29sb3IuciwgZm9nLmNvbG9yLmcsIGZvZy5jb2xvci5iICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBmb2cuaXNGb2cgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2wudW5pZm9ybTFmKCB1bmlmb3Jtcy5mb2dOZWFyLCBmb2cubmVhciApO1xcblxcdFxcdFxcdFxcdFxcdGdsLnVuaWZvcm0xZiggdW5pZm9ybXMuZm9nRmFyLCBmb2cuZmFyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2wudW5pZm9ybTFpKCB1bmlmb3Jtcy5mb2dUeXBlLCAxICk7XFxuXFx0XFx0XFx0XFx0XFx0b2xkRm9nVHlwZSA9IDE7XFxuXFx0XFx0XFx0XFx0XFx0c2NlbmVGb2dUeXBlID0gMTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBmb2cuaXNGb2dFeHAyICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGdsLnVuaWZvcm0xZiggdW5pZm9ybXMuZm9nRGVuc2l0eSwgZm9nLmRlbnNpdHkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRnbC51bmlmb3JtMWkoIHVuaWZvcm1zLmZvZ1R5cGUsIDIgKTtcXG5cXHRcXHRcXHRcXHRcXHRvbGRGb2dUeXBlID0gMjtcXG5cXHRcXHRcXHRcXHRcXHRzY2VuZUZvZ1R5cGUgPSAyO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGdsLnVuaWZvcm0xaSggdW5pZm9ybXMuZm9nVHlwZSwgMCApO1xcblxcdFxcdFxcdFxcdG9sZEZvZ1R5cGUgPSAwO1xcblxcdFxcdFxcdFxcdHNjZW5lRm9nVHlwZSA9IDA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcblxcdFxcdFxcdC8vIHVwZGF0ZSBwb3NpdGlvbnMgYW5kIHNvcnRcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBzcHJpdGVzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNwcml0ZSA9IHNwcml0ZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRzcHJpdGUubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoIGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UsIHNwcml0ZS5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdHNwcml0ZS56ID0gLSBzcHJpdGUubW9kZWxWaWV3TWF0cml4LmVsZW1lbnRzWyAxNCBdO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRzcHJpdGVzLnNvcnQoIHBhaW50ZXJTb3J0U3RhYmxlICk7XFxuXFxuXFx0XFx0XFx0Ly8gcmVuZGVyIGFsbCBzcHJpdGVzXFxuXFxuXFx0XFx0XFx0dmFyIHNjYWxlID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gc3ByaXRlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBzcHJpdGUgPSBzcHJpdGVzWyBpIF07XFxuXFx0XFx0XFx0XFx0dmFyIG1hdGVyaWFsID0gc3ByaXRlLm1hdGVyaWFsO1xcblxcblxcdFxcdFxcdFxcdGlmICggbWF0ZXJpYWwudmlzaWJsZSA9PT0gZmFsc2UgKSBjb250aW51ZTtcXG5cXG5cXHRcXHRcXHRcXHRzcHJpdGUub25CZWZvcmVSZW5kZXIoIHJlbmRlcmVyLCBzY2VuZSwgY2FtZXJhLCB1bmRlZmluZWQsIG1hdGVyaWFsLCB1bmRlZmluZWQgKTtcXG5cXG5cXHRcXHRcXHRcXHRnbC51bmlmb3JtMWYoIHVuaWZvcm1zLmFscGhhVGVzdCwgbWF0ZXJpYWwuYWxwaGFUZXN0ICk7XFxuXFx0XFx0XFx0XFx0Z2wudW5pZm9ybU1hdHJpeDRmdiggdW5pZm9ybXMubW9kZWxWaWV3TWF0cml4LCBmYWxzZSwgc3ByaXRlLm1vZGVsVmlld01hdHJpeC5lbGVtZW50cyApO1xcblxcblxcdFxcdFxcdFxcdHNwcml0ZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoIHNwcml0ZVBvc2l0aW9uLCBzcHJpdGVSb3RhdGlvbiwgc3ByaXRlU2NhbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRzY2FsZVsgMCBdID0gc3ByaXRlU2NhbGUueDtcXG5cXHRcXHRcXHRcXHRzY2FsZVsgMSBdID0gc3ByaXRlU2NhbGUueTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZm9nVHlwZSA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBzY2VuZS5mb2cgJiYgbWF0ZXJpYWwuZm9nICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZvZ1R5cGUgPSBzY2VuZUZvZ1R5cGU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggb2xkRm9nVHlwZSAhPT0gZm9nVHlwZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRnbC51bmlmb3JtMWkoIHVuaWZvcm1zLmZvZ1R5cGUsIGZvZ1R5cGUgKTtcXG5cXHRcXHRcXHRcXHRcXHRvbGRGb2dUeXBlID0gZm9nVHlwZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5tYXAgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2wudW5pZm9ybTJmKCB1bmlmb3Jtcy51dk9mZnNldCwgbWF0ZXJpYWwubWFwLm9mZnNldC54LCBtYXRlcmlhbC5tYXAub2Zmc2V0LnkgKTtcXG5cXHRcXHRcXHRcXHRcXHRnbC51bmlmb3JtMmYoIHVuaWZvcm1zLnV2U2NhbGUsIG1hdGVyaWFsLm1hcC5yZXBlYXQueCwgbWF0ZXJpYWwubWFwLnJlcGVhdC55ICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRnbC51bmlmb3JtMmYoIHVuaWZvcm1zLnV2T2Zmc2V0LCAwLCAwICk7XFxuXFx0XFx0XFx0XFx0XFx0Z2wudW5pZm9ybTJmKCB1bmlmb3Jtcy51dlNjYWxlLCAxLCAxICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGdsLnVuaWZvcm0xZiggdW5pZm9ybXMub3BhY2l0eSwgbWF0ZXJpYWwub3BhY2l0eSApO1xcblxcdFxcdFxcdFxcdGdsLnVuaWZvcm0zZiggdW5pZm9ybXMuY29sb3IsIG1hdGVyaWFsLmNvbG9yLnIsIG1hdGVyaWFsLmNvbG9yLmcsIG1hdGVyaWFsLmNvbG9yLmIgKTtcXG5cXG5cXHRcXHRcXHRcXHRnbC51bmlmb3JtMWYoIHVuaWZvcm1zLnJvdGF0aW9uLCBtYXRlcmlhbC5yb3RhdGlvbiApO1xcblxcdFxcdFxcdFxcdGdsLnVuaWZvcm0yZnYoIHVuaWZvcm1zLnNjYWxlLCBzY2FsZSApO1xcblxcblxcdFxcdFxcdFxcdHN0YXRlLnNldEJsZW5kaW5nKCBtYXRlcmlhbC5ibGVuZGluZywgbWF0ZXJpYWwuYmxlbmRFcXVhdGlvbiwgbWF0ZXJpYWwuYmxlbmRTcmMsIG1hdGVyaWFsLmJsZW5kRHN0LCBtYXRlcmlhbC5ibGVuZEVxdWF0aW9uQWxwaGEsIG1hdGVyaWFsLmJsZW5kU3JjQWxwaGEsIG1hdGVyaWFsLmJsZW5kRHN0QWxwaGEsIG1hdGVyaWFsLnByZW11bHRpcGxpZWRBbHBoYSApO1xcblxcdFxcdFxcdFxcdHN0YXRlLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCggbWF0ZXJpYWwuZGVwdGhUZXN0ICk7XFxuXFx0XFx0XFx0XFx0c3RhdGUuYnVmZmVycy5kZXB0aC5zZXRNYXNrKCBtYXRlcmlhbC5kZXB0aFdyaXRlICk7XFxuXFx0XFx0XFx0XFx0c3RhdGUuYnVmZmVycy5jb2xvci5zZXRNYXNrKCBtYXRlcmlhbC5jb2xvcldyaXRlICk7XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZXMuc2V0VGV4dHVyZTJEKCBtYXRlcmlhbC5tYXAgfHwgdGV4dHVyZSwgMCApO1xcblxcblxcdFxcdFxcdFxcdGdsLmRyYXdFbGVtZW50cyggZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCApO1xcblxcblxcdFxcdFxcdFxcdHNwcml0ZS5vbkFmdGVyUmVuZGVyKCByZW5kZXJlciwgc2NlbmUsIGNhbWVyYSwgdW5kZWZpbmVkLCBtYXRlcmlhbCwgdW5kZWZpbmVkICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHJlc3RvcmUgZ2xcXG5cXG5cXHRcXHRcXHRzdGF0ZS5lbmFibGUoIGdsLkNVTExfRkFDRSApO1xcblxcblxcdFxcdFxcdHN0YXRlLnJlc2V0KCk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBjcmVhdGVQcm9ncmFtKCkge1xcblxcblxcdFxcdFxcdHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpO1xcblxcblxcdFxcdFxcdHZhciB2ZXJ0ZXhTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoIGdsLlZFUlRFWF9TSEFERVIgKTtcXG5cXHRcXHRcXHR2YXIgZnJhZ21lbnRTaGFkZXIgPSBnbC5jcmVhdGVTaGFkZXIoIGdsLkZSQUdNRU5UX1NIQURFUiApO1xcblxcblxcdFxcdFxcdGdsLnNoYWRlclNvdXJjZSggdmVydGV4U2hhZGVyLCBbXFxuXFxuXFx0XFx0XFx0XFx0J3ByZWNpc2lvbiAnICsgY2FwYWJpbGl0aWVzLnByZWNpc2lvbiArICcgZmxvYXQ7JyxcXG5cXG5cXHRcXHRcXHRcXHQnI2RlZmluZSBTSEFERVJfTkFNRSAnICsgJ1Nwcml0ZU1hdGVyaWFsJyxcXG5cXG5cXHRcXHRcXHRcXHQndW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIGZsb2F0IHJvdGF0aW9uOycsXFxuXFx0XFx0XFx0XFx0J3VuaWZvcm0gdmVjMiBzY2FsZTsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIHZlYzIgdXZPZmZzZXQ7JyxcXG5cXHRcXHRcXHRcXHQndW5pZm9ybSB2ZWMyIHV2U2NhbGU7JyxcXG5cXG5cXHRcXHRcXHRcXHQnYXR0cmlidXRlIHZlYzIgcG9zaXRpb247JyxcXG5cXHRcXHRcXHRcXHQnYXR0cmlidXRlIHZlYzIgdXY7JyxcXG5cXG5cXHRcXHRcXHRcXHQndmFyeWluZyB2ZWMyIHZVVjsnLFxcblxcdFxcdFxcdFxcdCd2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoOycsXFxuXFxuXFx0XFx0XFx0XFx0J3ZvaWQgbWFpbigpIHsnLFxcblxcblxcdFxcdFxcdFxcdCdcXHR2VVYgPSB1dk9mZnNldCArIHV2ICogdXZTY2FsZTsnLFxcblxcblxcdFxcdFxcdFxcdCdcXHR2ZWMyIGFsaWduZWRQb3NpdGlvbiA9IHBvc2l0aW9uICogc2NhbGU7JyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0dmVjMiByb3RhdGVkUG9zaXRpb247JyxcXG5cXHRcXHRcXHRcXHQnXFx0cm90YXRlZFBvc2l0aW9uLnggPSBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCAtIHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55OycsXFxuXFx0XFx0XFx0XFx0J1xcdHJvdGF0ZWRQb3NpdGlvbi55ID0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggKyBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTsnLFxcblxcblxcdFxcdFxcdFxcdCdcXHR2ZWM0IG12UG9zaXRpb247JyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0bXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApOycsXFxuXFx0XFx0XFx0XFx0J1xcdG12UG9zaXRpb24ueHkgKz0gcm90YXRlZFBvc2l0aW9uOycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247JyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0Zm9nRGVwdGggPSAtIG12UG9zaXRpb24uejsnLFxcblxcblxcdFxcdFxcdFxcdCd9J1xcblxcblxcdFxcdFxcdF0uam9pbiggJ1xcXFxuJyApICk7XFxuXFxuXFx0XFx0XFx0Z2wuc2hhZGVyU291cmNlKCBmcmFnbWVudFNoYWRlciwgW1xcblxcblxcdFxcdFxcdFxcdCdwcmVjaXNpb24gJyArIGNhcGFiaWxpdGllcy5wcmVjaXNpb24gKyAnIGZsb2F0OycsXFxuXFxuXFx0XFx0XFx0XFx0JyNkZWZpbmUgU0hBREVSX05BTUUgJyArICdTcHJpdGVNYXRlcmlhbCcsXFxuXFxuXFx0XFx0XFx0XFx0J3VuaWZvcm0gdmVjMyBjb2xvcjsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIHNhbXBsZXIyRCBtYXA7JyxcXG5cXHRcXHRcXHRcXHQndW5pZm9ybSBmbG9hdCBvcGFjaXR5OycsXFxuXFxuXFx0XFx0XFx0XFx0J3VuaWZvcm0gaW50IGZvZ1R5cGU7JyxcXG5cXHRcXHRcXHRcXHQndW5pZm9ybSB2ZWMzIGZvZ0NvbG9yOycsXFxuXFx0XFx0XFx0XFx0J3VuaWZvcm0gZmxvYXQgZm9nRGVuc2l0eTsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIGZsb2F0IGZvZ05lYXI7JyxcXG5cXHRcXHRcXHRcXHQndW5pZm9ybSBmbG9hdCBmb2dGYXI7JyxcXG5cXHRcXHRcXHRcXHQndW5pZm9ybSBmbG9hdCBhbHBoYVRlc3Q7JyxcXG5cXG5cXHRcXHRcXHRcXHQndmFyeWluZyB2ZWMyIHZVVjsnLFxcblxcdFxcdFxcdFxcdCd2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoOycsXFxuXFxuXFx0XFx0XFx0XFx0J3ZvaWQgbWFpbigpIHsnLFxcblxcblxcdFxcdFxcdFxcdCdcXHR2ZWM0IHRleHR1cmUgPSB0ZXh0dXJlMkQoIG1hcCwgdlVWICk7JyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IgKiB0ZXh0dXJlLnh5eiwgdGV4dHVyZS5hICogb3BhY2l0eSApOycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdGlmICggZ2xfRnJhZ0NvbG9yLmEgPCBhbHBoYVRlc3QgKSBkaXNjYXJkOycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdGlmICggZm9nVHlwZSA+IDAgKSB7JyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0XFx0ZmxvYXQgZm9nRmFjdG9yID0gMC4wOycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdFxcdGlmICggZm9nVHlwZSA9PSAxICkgeycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdFxcdFxcdGZvZ0ZhY3RvciA9IHNtb290aHN0ZXAoIGZvZ05lYXIsIGZvZ0ZhciwgZm9nRGVwdGggKTsnLFxcblxcblxcdFxcdFxcdFxcdCdcXHRcXHR9IGVsc2UgeycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdFxcdFxcdGNvbnN0IGZsb2F0IExPRzIgPSAxLjQ0MjY5NTsnLFxcblxcdFxcdFxcdFxcdCdcXHRcXHRcXHRmb2dGYWN0b3IgPSBleHAyKCAtIGZvZ0RlbnNpdHkgKiBmb2dEZW5zaXR5ICogZm9nRGVwdGggKiBmb2dEZXB0aCAqIExPRzIgKTsnLFxcblxcdFxcdFxcdFxcdCdcXHRcXHRcXHRmb2dGYWN0b3IgPSAxLjAgLSBjbGFtcCggZm9nRmFjdG9yLCAwLjAsIDEuMCApOycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdFxcdH0nLFxcblxcblxcdFxcdFxcdFxcdCdcXHRcXHRnbF9GcmFnQ29sb3IucmdiID0gbWl4KCBnbF9GcmFnQ29sb3IucmdiLCBmb2dDb2xvciwgZm9nRmFjdG9yICk7JyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0fScsXFxuXFxuXFx0XFx0XFx0XFx0J30nXFxuXFxuXFx0XFx0XFx0XS5qb2luKCAnXFxcXG4nICkgKTtcXG5cXG5cXHRcXHRcXHRnbC5jb21waWxlU2hhZGVyKCB2ZXJ0ZXhTaGFkZXIgKTtcXG5cXHRcXHRcXHRnbC5jb21waWxlU2hhZGVyKCBmcmFnbWVudFNoYWRlciApO1xcblxcblxcdFxcdFxcdGdsLmF0dGFjaFNoYWRlciggcHJvZ3JhbSwgdmVydGV4U2hhZGVyICk7XFxuXFx0XFx0XFx0Z2wuYXR0YWNoU2hhZGVyKCBwcm9ncmFtLCBmcmFnbWVudFNoYWRlciApO1xcblxcblxcdFxcdFxcdGdsLmxpbmtQcm9ncmFtKCBwcm9ncmFtICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHByb2dyYW07XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHBhaW50ZXJTb3J0U3RhYmxlKCBhLCBiICkge1xcblxcblxcdFxcdFxcdGlmICggYS5yZW5kZXJPcmRlciAhPT0gYi5yZW5kZXJPcmRlciApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gYS5yZW5kZXJPcmRlciAtIGIucmVuZGVyT3JkZXI7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYS56ICE9PSBiLnogKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGIueiAtIGEuejtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBiLmlkIC0gYS5pZDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICovXFxuXFxuXFx0dmFyIG1hdGVyaWFsSWQgPSAwO1xcblxcblxcdGZ1bmN0aW9uIE1hdGVyaWFsKCkge1xcblxcblxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgJ2lkJywgeyB2YWx1ZTogbWF0ZXJpYWxJZCArKyB9ICk7XFxuXFxuXFx0XFx0dGhpcy51dWlkID0gX01hdGguZ2VuZXJhdGVVVUlEKCk7XFxuXFxuXFx0XFx0dGhpcy5uYW1lID0gJyc7XFxuXFx0XFx0dGhpcy50eXBlID0gJ01hdGVyaWFsJztcXG5cXG5cXHRcXHR0aGlzLmZvZyA9IHRydWU7XFxuXFx0XFx0dGhpcy5saWdodHMgPSB0cnVlO1xcblxcblxcdFxcdHRoaXMuYmxlbmRpbmcgPSBOb3JtYWxCbGVuZGluZztcXG5cXHRcXHR0aGlzLnNpZGUgPSBGcm9udFNpZGU7XFxuXFx0XFx0dGhpcy5mbGF0U2hhZGluZyA9IGZhbHNlO1xcblxcdFxcdHRoaXMudmVydGV4Q29sb3JzID0gTm9Db2xvcnM7IC8vIFRIUkVFLk5vQ29sb3JzLCBUSFJFRS5WZXJ0ZXhDb2xvcnMsIFRIUkVFLkZhY2VDb2xvcnNcXG5cXG5cXHRcXHR0aGlzLm9wYWNpdHkgPSAxO1xcblxcdFxcdHRoaXMudHJhbnNwYXJlbnQgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLmJsZW5kU3JjID0gU3JjQWxwaGFGYWN0b3I7XFxuXFx0XFx0dGhpcy5ibGVuZERzdCA9IE9uZU1pbnVzU3JjQWxwaGFGYWN0b3I7XFxuXFx0XFx0dGhpcy5ibGVuZEVxdWF0aW9uID0gQWRkRXF1YXRpb247XFxuXFx0XFx0dGhpcy5ibGVuZFNyY0FscGhhID0gbnVsbDtcXG5cXHRcXHR0aGlzLmJsZW5kRHN0QWxwaGEgPSBudWxsO1xcblxcdFxcdHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhID0gbnVsbDtcXG5cXG5cXHRcXHR0aGlzLmRlcHRoRnVuYyA9IExlc3NFcXVhbERlcHRoO1xcblxcdFxcdHRoaXMuZGVwdGhUZXN0ID0gdHJ1ZTtcXG5cXHRcXHR0aGlzLmRlcHRoV3JpdGUgPSB0cnVlO1xcblxcblxcdFxcdHRoaXMuY2xpcHBpbmdQbGFuZXMgPSBudWxsO1xcblxcdFxcdHRoaXMuY2xpcEludGVyc2VjdGlvbiA9IGZhbHNlO1xcblxcdFxcdHRoaXMuY2xpcFNoYWRvd3MgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLmNvbG9yV3JpdGUgPSB0cnVlO1xcblxcblxcdFxcdHRoaXMucHJlY2lzaW9uID0gbnVsbDsgLy8gb3ZlcnJpZGUgdGhlIHJlbmRlcmVyJ3MgZGVmYXVsdCBwcmVjaXNpb24gZm9yIHRoaXMgbWF0ZXJpYWxcXG5cXG5cXHRcXHR0aGlzLnBvbHlnb25PZmZzZXQgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3IgPSAwO1xcblxcdFxcdHRoaXMucG9seWdvbk9mZnNldFVuaXRzID0gMDtcXG5cXG5cXHRcXHR0aGlzLmRpdGhlcmluZyA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuYWxwaGFUZXN0ID0gMDtcXG5cXHRcXHR0aGlzLnByZW11bHRpcGxpZWRBbHBoYSA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMub3ZlcmRyYXcgPSAwOyAvLyBPdmVyZHJhd24gcGl4ZWxzICh0eXBpY2FsbHkgYmV0d2VlbiAwIGFuZCAxKSBmb3IgZml4aW5nIGFudGlhbGlhc2luZyBnYXBzIGluIENhbnZhc1JlbmRlcmVyXFxuXFxuXFx0XFx0dGhpcy52aXNpYmxlID0gdHJ1ZTtcXG5cXG5cXHRcXHR0aGlzLnVzZXJEYXRhID0ge307XFxuXFxuXFx0XFx0dGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0fVxcblxcblxcdE1hdGVyaWFsLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBNYXRlcmlhbCxcXG5cXG5cXHRcXHRpc01hdGVyaWFsOiB0cnVlLFxcblxcblxcdFxcdG9uQmVmb3JlQ29tcGlsZTogZnVuY3Rpb24gKCkge30sXFxuXFxuXFx0XFx0c2V0VmFsdWVzOiBmdW5jdGlvbiAoIHZhbHVlcyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHZhbHVlcyA9PT0gdW5kZWZpbmVkICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBrZXkgaW4gdmFsdWVzICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBuZXdWYWx1ZSA9IHZhbHVlc1sga2V5IF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggXFxcIlRIUkVFLk1hdGVyaWFsOiAnXFxcIiArIGtleSArIFxcXCInIHBhcmFtZXRlciBpcyB1bmRlZmluZWQuXFxcIiApO1xcblxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBmb3IgYmFja3dhcmQgY29tcGF0YWJpbGl0eSBpZiBzaGFkaW5nIGlzIHNldCBpbiB0aGUgY29uc3RydWN0b3JcXG5cXHRcXHRcXHRcXHRpZiAoIGtleSA9PT0gJ3NoYWRpbmcnICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLicgKyB0aGlzLnR5cGUgKyAnOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuZmxhdFNoYWRpbmcgPSAoIG5ld1ZhbHVlID09PSBGbGF0U2hhZGluZyApID8gdHJ1ZSA6IGZhbHNlO1xcblxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR2YXIgY3VycmVudFZhbHVlID0gdGhpc1sga2V5IF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oIFxcXCJUSFJFRS5cXFwiICsgdGhpcy50eXBlICsgXFxcIjogJ1xcXCIgKyBrZXkgKyBcXFwiJyBpcyBub3QgYSBwcm9wZXJ0eSBvZiB0aGlzIG1hdGVyaWFsLlxcXCIgKTtcXG5cXHRcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBjdXJyZW50VmFsdWUgJiYgY3VycmVudFZhbHVlLmlzQ29sb3IgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y3VycmVudFZhbHVlLnNldCggbmV3VmFsdWUgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCAoIGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUuaXNWZWN0b3IzICkgJiYgKCBuZXdWYWx1ZSAmJiBuZXdWYWx1ZS5pc1ZlY3RvcjMgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50VmFsdWUuY29weSggbmV3VmFsdWUgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBrZXkgPT09ICdvdmVyZHJhdycgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gZW5zdXJlIG92ZXJkcmF3IGlzIGJhY2t3YXJkcy1jb21wYXRpYmxlIHdpdGggbGVnYWN5IGJvb2xlYW4gdHlwZVxcblxcdFxcdFxcdFxcdFxcdHRoaXNbIGtleSBdID0gTnVtYmVyKCBuZXdWYWx1ZSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpc1sga2V5IF0gPSBuZXdWYWx1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dG9KU09OOiBmdW5jdGlvbiAoIG1ldGEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGlzUm9vdCA9ICggbWV0YSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBtZXRhID09PSAnc3RyaW5nJyApO1xcblxcblxcdFxcdFxcdGlmICggaXNSb290ICkge1xcblxcblxcdFxcdFxcdFxcdG1ldGEgPSB7XFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZXM6IHt9LFxcblxcdFxcdFxcdFxcdFxcdGltYWdlczoge31cXG5cXHRcXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IHtcXG5cXHRcXHRcXHRcXHRtZXRhZGF0YToge1xcblxcdFxcdFxcdFxcdFxcdHZlcnNpb246IDQuNSxcXG5cXHRcXHRcXHRcXHRcXHR0eXBlOiAnTWF0ZXJpYWwnLFxcblxcdFxcdFxcdFxcdFxcdGdlbmVyYXRvcjogJ01hdGVyaWFsLnRvSlNPTidcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHQvLyBzdGFuZGFyZCBNYXRlcmlhbCBzZXJpYWxpemF0aW9uXFxuXFx0XFx0XFx0ZGF0YS51dWlkID0gdGhpcy51dWlkO1xcblxcdFxcdFxcdGRhdGEudHlwZSA9IHRoaXMudHlwZTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMubmFtZSAhPT0gJycgKSBkYXRhLm5hbWUgPSB0aGlzLm5hbWU7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmNvbG9yICYmIHRoaXMuY29sb3IuaXNDb2xvciApIGRhdGEuY29sb3IgPSB0aGlzLmNvbG9yLmdldEhleCgpO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5yb3VnaG5lc3MgIT09IHVuZGVmaW5lZCApIGRhdGEucm91Z2huZXNzID0gdGhpcy5yb3VnaG5lc3M7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLm1ldGFsbmVzcyAhPT0gdW5kZWZpbmVkICkgZGF0YS5tZXRhbG5lc3MgPSB0aGlzLm1ldGFsbmVzcztcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZW1pc3NpdmUgJiYgdGhpcy5lbWlzc2l2ZS5pc0NvbG9yICkgZGF0YS5lbWlzc2l2ZSA9IHRoaXMuZW1pc3NpdmUuZ2V0SGV4KCk7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLmVtaXNzaXZlSW50ZW5zaXR5ICE9PSAxICkgZGF0YS5lbWlzc2l2ZUludGVuc2l0eSA9IHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnNwZWN1bGFyICYmIHRoaXMuc3BlY3VsYXIuaXNDb2xvciApIGRhdGEuc3BlY3VsYXIgPSB0aGlzLnNwZWN1bGFyLmdldEhleCgpO1xcblxcdFxcdFxcdGlmICggdGhpcy5zaGluaW5lc3MgIT09IHVuZGVmaW5lZCApIGRhdGEuc2hpbmluZXNzID0gdGhpcy5zaGluaW5lc3M7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLmNsZWFyQ29hdCAhPT0gdW5kZWZpbmVkICkgZGF0YS5jbGVhckNvYXQgPSB0aGlzLmNsZWFyQ29hdDtcXG5cXHRcXHRcXHRpZiAoIHRoaXMuY2xlYXJDb2F0Um91Z2huZXNzICE9PSB1bmRlZmluZWQgKSBkYXRhLmNsZWFyQ29hdFJvdWdobmVzcyA9IHRoaXMuY2xlYXJDb2F0Um91Z2huZXNzO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5tYXAgJiYgdGhpcy5tYXAuaXNUZXh0dXJlICkgZGF0YS5tYXAgPSB0aGlzLm1hcC50b0pTT04oIG1ldGEgKS51dWlkO1xcblxcdFxcdFxcdGlmICggdGhpcy5hbHBoYU1hcCAmJiB0aGlzLmFscGhhTWFwLmlzVGV4dHVyZSApIGRhdGEuYWxwaGFNYXAgPSB0aGlzLmFscGhhTWFwLnRvSlNPTiggbWV0YSApLnV1aWQ7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLmxpZ2h0TWFwICYmIHRoaXMubGlnaHRNYXAuaXNUZXh0dXJlICkgZGF0YS5saWdodE1hcCA9IHRoaXMubGlnaHRNYXAudG9KU09OKCBtZXRhICkudXVpZDtcXG5cXHRcXHRcXHRpZiAoIHRoaXMuYnVtcE1hcCAmJiB0aGlzLmJ1bXBNYXAuaXNUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdGRhdGEuYnVtcE1hcCA9IHRoaXMuYnVtcE1hcC50b0pTT04oIG1ldGEgKS51dWlkO1xcblxcdFxcdFxcdFxcdGRhdGEuYnVtcFNjYWxlID0gdGhpcy5idW1wU2NhbGU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGlmICggdGhpcy5ub3JtYWxNYXAgJiYgdGhpcy5ub3JtYWxNYXAuaXNUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdGRhdGEubm9ybWFsTWFwID0gdGhpcy5ub3JtYWxNYXAudG9KU09OKCBtZXRhICkudXVpZDtcXG5cXHRcXHRcXHRcXHRkYXRhLm5vcm1hbFNjYWxlID0gdGhpcy5ub3JtYWxTY2FsZS50b0FycmF5KCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGlmICggdGhpcy5kaXNwbGFjZW1lbnRNYXAgJiYgdGhpcy5kaXNwbGFjZW1lbnRNYXAuaXNUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdGRhdGEuZGlzcGxhY2VtZW50TWFwID0gdGhpcy5kaXNwbGFjZW1lbnRNYXAudG9KU09OKCBtZXRhICkudXVpZDtcXG5cXHRcXHRcXHRcXHRkYXRhLmRpc3BsYWNlbWVudFNjYWxlID0gdGhpcy5kaXNwbGFjZW1lbnRTY2FsZTtcXG5cXHRcXHRcXHRcXHRkYXRhLmRpc3BsYWNlbWVudEJpYXMgPSB0aGlzLmRpc3BsYWNlbWVudEJpYXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGlmICggdGhpcy5yb3VnaG5lc3NNYXAgJiYgdGhpcy5yb3VnaG5lc3NNYXAuaXNUZXh0dXJlICkgZGF0YS5yb3VnaG5lc3NNYXAgPSB0aGlzLnJvdWdobmVzc01hcC50b0pTT04oIG1ldGEgKS51dWlkO1xcblxcdFxcdFxcdGlmICggdGhpcy5tZXRhbG5lc3NNYXAgJiYgdGhpcy5tZXRhbG5lc3NNYXAuaXNUZXh0dXJlICkgZGF0YS5tZXRhbG5lc3NNYXAgPSB0aGlzLm1ldGFsbmVzc01hcC50b0pTT04oIG1ldGEgKS51dWlkO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5lbWlzc2l2ZU1hcCAmJiB0aGlzLmVtaXNzaXZlTWFwLmlzVGV4dHVyZSApIGRhdGEuZW1pc3NpdmVNYXAgPSB0aGlzLmVtaXNzaXZlTWFwLnRvSlNPTiggbWV0YSApLnV1aWQ7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLnNwZWN1bGFyTWFwICYmIHRoaXMuc3BlY3VsYXJNYXAuaXNUZXh0dXJlICkgZGF0YS5zcGVjdWxhck1hcCA9IHRoaXMuc3BlY3VsYXJNYXAudG9KU09OKCBtZXRhICkudXVpZDtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZW52TWFwICYmIHRoaXMuZW52TWFwLmlzVGV4dHVyZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRkYXRhLmVudk1hcCA9IHRoaXMuZW52TWFwLnRvSlNPTiggbWV0YSApLnV1aWQ7XFxuXFx0XFx0XFx0XFx0ZGF0YS5yZWZsZWN0aXZpdHkgPSB0aGlzLnJlZmxlY3Rpdml0eTsgLy8gU2NhbGUgYmVoaW5kIGVudk1hcFxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZ3JhZGllbnRNYXAgJiYgdGhpcy5ncmFkaWVudE1hcC5pc1RleHR1cmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGF0YS5ncmFkaWVudE1hcCA9IHRoaXMuZ3JhZGllbnRNYXAudG9KU09OKCBtZXRhICkudXVpZDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnNpemUgIT09IHVuZGVmaW5lZCApIGRhdGEuc2l6ZSA9IHRoaXMuc2l6ZTtcXG5cXHRcXHRcXHRpZiAoIHRoaXMuc2l6ZUF0dGVudWF0aW9uICE9PSB1bmRlZmluZWQgKSBkYXRhLnNpemVBdHRlbnVhdGlvbiA9IHRoaXMuc2l6ZUF0dGVudWF0aW9uO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5ibGVuZGluZyAhPT0gTm9ybWFsQmxlbmRpbmcgKSBkYXRhLmJsZW5kaW5nID0gdGhpcy5ibGVuZGluZztcXG5cXHRcXHRcXHRpZiAoIHRoaXMuZmxhdFNoYWRpbmcgPT09IHRydWUgKSBkYXRhLmZsYXRTaGFkaW5nID0gdGhpcy5mbGF0U2hhZGluZztcXG5cXHRcXHRcXHRpZiAoIHRoaXMuc2lkZSAhPT0gRnJvbnRTaWRlICkgZGF0YS5zaWRlID0gdGhpcy5zaWRlO1xcblxcdFxcdFxcdGlmICggdGhpcy52ZXJ0ZXhDb2xvcnMgIT09IE5vQ29sb3JzICkgZGF0YS52ZXJ0ZXhDb2xvcnMgPSB0aGlzLnZlcnRleENvbG9ycztcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMub3BhY2l0eSA8IDEgKSBkYXRhLm9wYWNpdHkgPSB0aGlzLm9wYWNpdHk7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLnRyYW5zcGFyZW50ID09PSB0cnVlICkgZGF0YS50cmFuc3BhcmVudCA9IHRoaXMudHJhbnNwYXJlbnQ7XFxuXFxuXFx0XFx0XFx0ZGF0YS5kZXB0aEZ1bmMgPSB0aGlzLmRlcHRoRnVuYztcXG5cXHRcXHRcXHRkYXRhLmRlcHRoVGVzdCA9IHRoaXMuZGVwdGhUZXN0O1xcblxcdFxcdFxcdGRhdGEuZGVwdGhXcml0ZSA9IHRoaXMuZGVwdGhXcml0ZTtcXG5cXG5cXHRcXHRcXHQvLyByb3RhdGlvbiAoU3ByaXRlTWF0ZXJpYWwpXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnJvdGF0aW9uICE9PSAwICkgZGF0YS5yb3RhdGlvbiA9IHRoaXMucm90YXRpb247XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmxpbmV3aWR0aCAhPT0gMSApIGRhdGEubGluZXdpZHRoID0gdGhpcy5saW5ld2lkdGg7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLmRhc2hTaXplICE9PSB1bmRlZmluZWQgKSBkYXRhLmRhc2hTaXplID0gdGhpcy5kYXNoU2l6ZTtcXG5cXHRcXHRcXHRpZiAoIHRoaXMuZ2FwU2l6ZSAhPT0gdW5kZWZpbmVkICkgZGF0YS5nYXBTaXplID0gdGhpcy5nYXBTaXplO1xcblxcdFxcdFxcdGlmICggdGhpcy5zY2FsZSAhPT0gdW5kZWZpbmVkICkgZGF0YS5zY2FsZSA9IHRoaXMuc2NhbGU7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmRpdGhlcmluZyA9PT0gdHJ1ZSApIGRhdGEuZGl0aGVyaW5nID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuYWxwaGFUZXN0ID4gMCApIGRhdGEuYWxwaGFUZXN0ID0gdGhpcy5hbHBoYVRlc3Q7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLnByZW11bHRpcGxpZWRBbHBoYSA9PT0gdHJ1ZSApIGRhdGEucHJlbXVsdGlwbGllZEFscGhhID0gdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLndpcmVmcmFtZSA9PT0gdHJ1ZSApIGRhdGEud2lyZWZyYW1lID0gdGhpcy53aXJlZnJhbWU7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLndpcmVmcmFtZUxpbmV3aWR0aCA+IDEgKSBkYXRhLndpcmVmcmFtZUxpbmV3aWR0aCA9IHRoaXMud2lyZWZyYW1lTGluZXdpZHRoO1xcblxcdFxcdFxcdGlmICggdGhpcy53aXJlZnJhbWVMaW5lY2FwICE9PSAncm91bmQnICkgZGF0YS53aXJlZnJhbWVMaW5lY2FwID0gdGhpcy53aXJlZnJhbWVMaW5lY2FwO1xcblxcdFxcdFxcdGlmICggdGhpcy53aXJlZnJhbWVMaW5lam9pbiAhPT0gJ3JvdW5kJyApIGRhdGEud2lyZWZyYW1lTGluZWpvaW4gPSB0aGlzLndpcmVmcmFtZUxpbmVqb2luO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5tb3JwaFRhcmdldHMgPT09IHRydWUgKSBkYXRhLm1vcnBoVGFyZ2V0cyA9IHRydWU7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLnNraW5uaW5nID09PSB0cnVlICkgZGF0YS5za2lubmluZyA9IHRydWU7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpc2libGUgPT09IGZhbHNlICkgZGF0YS52aXNpYmxlID0gZmFsc2U7XFxuXFx0XFx0XFx0aWYgKCBKU09OLnN0cmluZ2lmeSggdGhpcy51c2VyRGF0YSApICE9PSAne30nICkgZGF0YS51c2VyRGF0YSA9IHRoaXMudXNlckRhdGE7XFxuXFxuXFx0XFx0XFx0Ly8gVE9ETzogQ29waWVkIGZyb20gT2JqZWN0M0QudG9KU09OXFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gZXh0cmFjdEZyb21DYWNoZSggY2FjaGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZhbHVlcyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBrZXkgaW4gY2FjaGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGRhdGEgPSBjYWNoZVsga2V5IF07XFxuXFx0XFx0XFx0XFx0XFx0ZGVsZXRlIGRhdGEubWV0YWRhdGE7XFxuXFx0XFx0XFx0XFx0XFx0dmFsdWVzLnB1c2goIGRhdGEgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHZhbHVlcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBpc1Jvb3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHRleHR1cmVzID0gZXh0cmFjdEZyb21DYWNoZSggbWV0YS50ZXh0dXJlcyApO1xcblxcdFxcdFxcdFxcdHZhciBpbWFnZXMgPSBleHRyYWN0RnJvbUNhY2hlKCBtZXRhLmltYWdlcyApO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZXMubGVuZ3RoID4gMCApIGRhdGEudGV4dHVyZXMgPSB0ZXh0dXJlcztcXG5cXHRcXHRcXHRcXHRpZiAoIGltYWdlcy5sZW5ndGggPiAwICkgZGF0YS5pbWFnZXMgPSBpbWFnZXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm5hbWUgPSBzb3VyY2UubmFtZTtcXG5cXG5cXHRcXHRcXHR0aGlzLmZvZyA9IHNvdXJjZS5mb2c7XFxuXFx0XFx0XFx0dGhpcy5saWdodHMgPSBzb3VyY2UubGlnaHRzO1xcblxcblxcdFxcdFxcdHRoaXMuYmxlbmRpbmcgPSBzb3VyY2UuYmxlbmRpbmc7XFxuXFx0XFx0XFx0dGhpcy5zaWRlID0gc291cmNlLnNpZGU7XFxuXFx0XFx0XFx0dGhpcy5mbGF0U2hhZGluZyA9IHNvdXJjZS5mbGF0U2hhZGluZztcXG5cXHRcXHRcXHR0aGlzLnZlcnRleENvbG9ycyA9IHNvdXJjZS52ZXJ0ZXhDb2xvcnM7XFxuXFxuXFx0XFx0XFx0dGhpcy5vcGFjaXR5ID0gc291cmNlLm9wYWNpdHk7XFxuXFx0XFx0XFx0dGhpcy50cmFuc3BhcmVudCA9IHNvdXJjZS50cmFuc3BhcmVudDtcXG5cXG5cXHRcXHRcXHR0aGlzLmJsZW5kU3JjID0gc291cmNlLmJsZW5kU3JjO1xcblxcdFxcdFxcdHRoaXMuYmxlbmREc3QgPSBzb3VyY2UuYmxlbmREc3Q7XFxuXFx0XFx0XFx0dGhpcy5ibGVuZEVxdWF0aW9uID0gc291cmNlLmJsZW5kRXF1YXRpb247XFxuXFx0XFx0XFx0dGhpcy5ibGVuZFNyY0FscGhhID0gc291cmNlLmJsZW5kU3JjQWxwaGE7XFxuXFx0XFx0XFx0dGhpcy5ibGVuZERzdEFscGhhID0gc291cmNlLmJsZW5kRHN0QWxwaGE7XFxuXFx0XFx0XFx0dGhpcy5ibGVuZEVxdWF0aW9uQWxwaGEgPSBzb3VyY2UuYmxlbmRFcXVhdGlvbkFscGhhO1xcblxcblxcdFxcdFxcdHRoaXMuZGVwdGhGdW5jID0gc291cmNlLmRlcHRoRnVuYztcXG5cXHRcXHRcXHR0aGlzLmRlcHRoVGVzdCA9IHNvdXJjZS5kZXB0aFRlc3Q7XFxuXFx0XFx0XFx0dGhpcy5kZXB0aFdyaXRlID0gc291cmNlLmRlcHRoV3JpdGU7XFxuXFxuXFx0XFx0XFx0dGhpcy5jb2xvcldyaXRlID0gc291cmNlLmNvbG9yV3JpdGU7XFxuXFxuXFx0XFx0XFx0dGhpcy5wcmVjaXNpb24gPSBzb3VyY2UucHJlY2lzaW9uO1xcblxcblxcdFxcdFxcdHRoaXMucG9seWdvbk9mZnNldCA9IHNvdXJjZS5wb2x5Z29uT2Zmc2V0O1xcblxcdFxcdFxcdHRoaXMucG9seWdvbk9mZnNldEZhY3RvciA9IHNvdXJjZS5wb2x5Z29uT2Zmc2V0RmFjdG9yO1xcblxcdFxcdFxcdHRoaXMucG9seWdvbk9mZnNldFVuaXRzID0gc291cmNlLnBvbHlnb25PZmZzZXRVbml0cztcXG5cXG5cXHRcXHRcXHR0aGlzLmRpdGhlcmluZyA9IHNvdXJjZS5kaXRoZXJpbmc7XFxuXFxuXFx0XFx0XFx0dGhpcy5hbHBoYVRlc3QgPSBzb3VyY2UuYWxwaGFUZXN0O1xcblxcdFxcdFxcdHRoaXMucHJlbXVsdGlwbGllZEFscGhhID0gc291cmNlLnByZW11bHRpcGxpZWRBbHBoYTtcXG5cXG5cXHRcXHRcXHR0aGlzLm92ZXJkcmF3ID0gc291cmNlLm92ZXJkcmF3O1xcblxcblxcdFxcdFxcdHRoaXMudmlzaWJsZSA9IHNvdXJjZS52aXNpYmxlO1xcblxcdFxcdFxcdHRoaXMudXNlckRhdGEgPSBKU09OLnBhcnNlKCBKU09OLnN0cmluZ2lmeSggc291cmNlLnVzZXJEYXRhICkgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLmNsaXBTaGFkb3dzID0gc291cmNlLmNsaXBTaGFkb3dzO1xcblxcdFxcdFxcdHRoaXMuY2xpcEludGVyc2VjdGlvbiA9IHNvdXJjZS5jbGlwSW50ZXJzZWN0aW9uO1xcblxcblxcdFxcdFxcdHZhciBzcmNQbGFuZXMgPSBzb3VyY2UuY2xpcHBpbmdQbGFuZXMsXFxuXFx0XFx0XFx0XFx0ZHN0UGxhbmVzID0gbnVsbDtcXG5cXG5cXHRcXHRcXHRpZiAoIHNyY1BsYW5lcyAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbiA9IHNyY1BsYW5lcy5sZW5ndGg7XFxuXFx0XFx0XFx0XFx0ZHN0UGxhbmVzID0gbmV3IEFycmF5KCBuICk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpICE9PSBuOyArKyBpIClcXG5cXHRcXHRcXHRcXHRcXHRkc3RQbGFuZXNbIGkgXSA9IHNyY1BsYW5lc1sgaSBdLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuY2xpcHBpbmdQbGFuZXMgPSBkc3RQbGFuZXM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXNwb3NlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5kaXNwYXRjaEV2ZW50KCB7IHR5cGU6ICdkaXNwb3NlJyB9ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBiaG91c3RvbiAvIGh0dHBzOi8vY2xhcmEuaW9cXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICpcXG5cXHQgKiAgb3BhY2l0eTogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICBtYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgYWxwaGFNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgZGlzcGxhY2VtZW50TWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqICBkaXNwbGFjZW1lbnRTY2FsZTogPGZsb2F0PixcXG5cXHQgKiAgZGlzcGxhY2VtZW50QmlhczogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICB3aXJlZnJhbWU6IDxib29sZWFuPixcXG5cXHQgKiAgd2lyZWZyYW1lTGluZXdpZHRoOiA8ZmxvYXQ+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE1lc2hEZXB0aE1hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaERlcHRoTWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMuZGVwdGhQYWNraW5nID0gQmFzaWNEZXB0aFBhY2tpbmc7XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IGZhbHNlO1xcblxcdFxcdHRoaXMubW9ycGhUYXJnZXRzID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudFNjYWxlID0gMTtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudEJpYXMgPSAwO1xcblxcblxcdFxcdHRoaXMud2lyZWZyYW1lID0gZmFsc2U7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5ld2lkdGggPSAxO1xcblxcblxcdFxcdHRoaXMuZm9nID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5saWdodHMgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLnNldFZhbHVlcyggcGFyYW1ldGVycyApO1xcblxcblxcdH1cXG5cXG5cXHRNZXNoRGVwdGhNYXRlcmlhbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBNYXRlcmlhbC5wcm90b3R5cGUgKTtcXG5cXHRNZXNoRGVwdGhNYXRlcmlhbC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNZXNoRGVwdGhNYXRlcmlhbDtcXG5cXG5cXHRNZXNoRGVwdGhNYXRlcmlhbC5wcm90b3R5cGUuaXNNZXNoRGVwdGhNYXRlcmlhbCA9IHRydWU7XFxuXFxuXFx0TWVzaERlcHRoTWF0ZXJpYWwucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRNYXRlcmlhbC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHR0aGlzLmRlcHRoUGFja2luZyA9IHNvdXJjZS5kZXB0aFBhY2tpbmc7XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IHNvdXJjZS5za2lubmluZztcXG5cXHRcXHR0aGlzLm1vcnBoVGFyZ2V0cyA9IHNvdXJjZS5tb3JwaFRhcmdldHM7XFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBzb3VyY2UubWFwO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBzb3VyY2UuYWxwaGFNYXA7XFxuXFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRNYXAgPSBzb3VyY2UuZGlzcGxhY2VtZW50TWFwO1xcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50U2NhbGUgPSBzb3VyY2UuZGlzcGxhY2VtZW50U2NhbGU7XFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRCaWFzID0gc291cmNlLmRpc3BsYWNlbWVudEJpYXM7XFxuXFxuXFx0XFx0dGhpcy53aXJlZnJhbWUgPSBzb3VyY2Uud2lyZWZyYW1lO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZXdpZHRoID0gc291cmNlLndpcmVmcmFtZUxpbmV3aWR0aDtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCAqXFxuXFx0ICogcGFyYW1ldGVycyA9IHtcXG5cXHQgKlxcblxcdCAqICByZWZlcmVuY2VQb3NpdGlvbjogPGZsb2F0PixcXG5cXHQgKiAgbmVhckRpc3RhbmNlOiA8ZmxvYXQ+LFxcblxcdCAqICBmYXJEaXN0YW5jZTogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICBza2lubmluZzogPGJvb2w+LFxcblxcdCAqICBtb3JwaFRhcmdldHM6IDxib29sPixcXG5cXHQgKlxcblxcdCAqICBtYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgYWxwaGFNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgZGlzcGxhY2VtZW50TWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqICBkaXNwbGFjZW1lbnRTY2FsZTogPGZsb2F0PixcXG5cXHQgKiAgZGlzcGxhY2VtZW50QmlhczogPGZsb2F0PlxcblxcdCAqXFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE1lc2hEaXN0YW5jZU1hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaERpc3RhbmNlTWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMucmVmZXJlbmNlUG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHRoaXMubmVhckRpc3RhbmNlID0gMTtcXG5cXHRcXHR0aGlzLmZhckRpc3RhbmNlID0gMTAwMDtcXG5cXG5cXHRcXHR0aGlzLnNraW5uaW5nID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLm1hcCA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5hbHBoYU1hcCA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRNYXAgPSBudWxsO1xcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50U2NhbGUgPSAxO1xcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50QmlhcyA9IDA7XFxuXFxuXFx0XFx0dGhpcy5mb2cgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLmxpZ2h0cyA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuc2V0VmFsdWVzKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdE1lc2hEaXN0YW5jZU1hdGVyaWFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE1hdGVyaWFsLnByb3RvdHlwZSApO1xcblxcdE1lc2hEaXN0YW5jZU1hdGVyaWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1lc2hEaXN0YW5jZU1hdGVyaWFsO1xcblxcblxcdE1lc2hEaXN0YW5jZU1hdGVyaWFsLnByb3RvdHlwZS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRNZXNoRGlzdGFuY2VNYXRlcmlhbC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdE1hdGVyaWFsLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMucmVmZXJlbmNlUG9zaXRpb24uY29weSggc291cmNlLnJlZmVyZW5jZVBvc2l0aW9uICk7XFxuXFx0XFx0dGhpcy5uZWFyRGlzdGFuY2UgPSBzb3VyY2UubmVhckRpc3RhbmNlO1xcblxcdFxcdHRoaXMuZmFyRGlzdGFuY2UgPSBzb3VyY2UuZmFyRGlzdGFuY2U7XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IHNvdXJjZS5za2lubmluZztcXG5cXHRcXHR0aGlzLm1vcnBoVGFyZ2V0cyA9IHNvdXJjZS5tb3JwaFRhcmdldHM7XFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBzb3VyY2UubWFwO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBzb3VyY2UuYWxwaGFNYXA7XFxuXFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRNYXAgPSBzb3VyY2UuZGlzcGxhY2VtZW50TWFwO1xcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50U2NhbGUgPSBzb3VyY2UuZGlzcGxhY2VtZW50U2NhbGU7XFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRCaWFzID0gc291cmNlLmRpc3BsYWNlbWVudEJpYXM7XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGJob3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQm94MyggbWluLCBtYXggKSB7XFxuXFxuXFx0XFx0dGhpcy5taW4gPSAoIG1pbiAhPT0gdW5kZWZpbmVkICkgPyBtaW4gOiBuZXcgVmVjdG9yMyggKyBJbmZpbml0eSwgKyBJbmZpbml0eSwgKyBJbmZpbml0eSApO1xcblxcdFxcdHRoaXMubWF4ID0gKCBtYXggIT09IHVuZGVmaW5lZCApID8gbWF4IDogbmV3IFZlY3RvcjMoIC0gSW5maW5pdHksIC0gSW5maW5pdHksIC0gSW5maW5pdHkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggQm94My5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRpc0JveDM6IHRydWUsXFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIG1pbiwgbWF4ICkge1xcblxcblxcdFxcdFxcdHRoaXMubWluLmNvcHkoIG1pbiApO1xcblxcdFxcdFxcdHRoaXMubWF4LmNvcHkoIG1heCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbUFycmF5OiBmdW5jdGlvbiAoIGFycmF5ICkge1xcblxcblxcdFxcdFxcdHZhciBtaW5YID0gKyBJbmZpbml0eTtcXG5cXHRcXHRcXHR2YXIgbWluWSA9ICsgSW5maW5pdHk7XFxuXFx0XFx0XFx0dmFyIG1pblogPSArIEluZmluaXR5O1xcblxcblxcdFxcdFxcdHZhciBtYXhYID0gLSBJbmZpbml0eTtcXG5cXHRcXHRcXHR2YXIgbWF4WSA9IC0gSW5maW5pdHk7XFxuXFx0XFx0XFx0dmFyIG1heFogPSAtIEluZmluaXR5O1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkgKz0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgeCA9IGFycmF5WyBpIF07XFxuXFx0XFx0XFx0XFx0dmFyIHkgPSBhcnJheVsgaSArIDEgXTtcXG5cXHRcXHRcXHRcXHR2YXIgeiA9IGFycmF5WyBpICsgMiBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggeCA8IG1pblggKSBtaW5YID0geDtcXG5cXHRcXHRcXHRcXHRpZiAoIHkgPCBtaW5ZICkgbWluWSA9IHk7XFxuXFx0XFx0XFx0XFx0aWYgKCB6IDwgbWluWiApIG1pblogPSB6O1xcblxcblxcdFxcdFxcdFxcdGlmICggeCA+IG1heFggKSBtYXhYID0geDtcXG5cXHRcXHRcXHRcXHRpZiAoIHkgPiBtYXhZICkgbWF4WSA9IHk7XFxuXFx0XFx0XFx0XFx0aWYgKCB6ID4gbWF4WiApIG1heFogPSB6O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLm1pbi5zZXQoIG1pblgsIG1pblksIG1pblogKTtcXG5cXHRcXHRcXHR0aGlzLm1heC5zZXQoIG1heFgsIG1heFksIG1heFogKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21CdWZmZXJBdHRyaWJ1dGU6IGZ1bmN0aW9uICggYXR0cmlidXRlICkge1xcblxcblxcdFxcdFxcdHZhciBtaW5YID0gKyBJbmZpbml0eTtcXG5cXHRcXHRcXHR2YXIgbWluWSA9ICsgSW5maW5pdHk7XFxuXFx0XFx0XFx0dmFyIG1pblogPSArIEluZmluaXR5O1xcblxcblxcdFxcdFxcdHZhciBtYXhYID0gLSBJbmZpbml0eTtcXG5cXHRcXHRcXHR2YXIgbWF4WSA9IC0gSW5maW5pdHk7XFxuXFx0XFx0XFx0dmFyIG1heFogPSAtIEluZmluaXR5O1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGF0dHJpYnV0ZS5jb3VudDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHggPSBhdHRyaWJ1dGUuZ2V0WCggaSApO1xcblxcdFxcdFxcdFxcdHZhciB5ID0gYXR0cmlidXRlLmdldFkoIGkgKTtcXG5cXHRcXHRcXHRcXHR2YXIgeiA9IGF0dHJpYnV0ZS5nZXRaKCBpICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB4IDwgbWluWCApIG1pblggPSB4O1xcblxcdFxcdFxcdFxcdGlmICggeSA8IG1pblkgKSBtaW5ZID0geTtcXG5cXHRcXHRcXHRcXHRpZiAoIHogPCBtaW5aICkgbWluWiA9IHo7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB4ID4gbWF4WCApIG1heFggPSB4O1xcblxcdFxcdFxcdFxcdGlmICggeSA+IG1heFkgKSBtYXhZID0geTtcXG5cXHRcXHRcXHRcXHRpZiAoIHogPiBtYXhaICkgbWF4WiA9IHo7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMubWluLnNldCggbWluWCwgbWluWSwgbWluWiApO1xcblxcdFxcdFxcdHRoaXMubWF4LnNldCggbWF4WCwgbWF4WSwgbWF4WiApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbVBvaW50czogZnVuY3Rpb24gKCBwb2ludHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYWtlRW1wdHkoKTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gcG9pbnRzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZXhwYW5kQnlQb2ludCggcG9pbnRzWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tQ2VudGVyQW5kU2l6ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHNldEZyb21DZW50ZXJBbmRTaXplKCBjZW50ZXIsIHNpemUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGhhbGZTaXplID0gdjEuY29weSggc2l6ZSApLm11bHRpcGx5U2NhbGFyKCAwLjUgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm1pbi5jb3B5KCBjZW50ZXIgKS5zdWIoIGhhbGZTaXplICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5tYXguY29weSggY2VudGVyICkuYWRkKCBoYWxmU2l6ZSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHNldEZyb21PYmplY3Q6IGZ1bmN0aW9uICggb2JqZWN0ICkge1xcblxcblxcdFxcdFxcdHRoaXMubWFrZUVtcHR5KCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZXhwYW5kQnlPYmplY3QoIG9iamVjdCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIGJveCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm1pbi5jb3B5KCBib3gubWluICk7XFxuXFx0XFx0XFx0dGhpcy5tYXguY29weSggYm94Lm1heCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bWFrZUVtcHR5OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4ueCA9IHRoaXMubWluLnkgPSB0aGlzLm1pbi56ID0gKyBJbmZpbml0eTtcXG5cXHRcXHRcXHR0aGlzLm1heC54ID0gdGhpcy5tYXgueSA9IHRoaXMubWF4LnogPSAtIEluZmluaXR5O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aXNFbXB0eTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIHRoaXMgaXMgYSBtb3JlIHJvYnVzdCBjaGVjayBmb3IgZW1wdHkgdGhhbiAoIHZvbHVtZSA8PSAwICkgYmVjYXVzZSB2b2x1bWUgY2FuIGdldCBwb3NpdGl2ZSB3aXRoIHR3byBuZWdhdGl2ZSBheGVzXFxuXFxuXFx0XFx0XFx0cmV0dXJuICggdGhpcy5tYXgueCA8IHRoaXMubWluLnggKSB8fCAoIHRoaXMubWF4LnkgPCB0aGlzLm1pbi55ICkgfHwgKCB0aGlzLm1heC56IDwgdGhpcy5taW4ueiApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0Q2VudGVyOiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmlzRW1wdHkoKSA/IHJlc3VsdC5zZXQoIDAsIDAsIDAgKSA6IHJlc3VsdC5hZGRWZWN0b3JzKCB0aGlzLm1pbiwgdGhpcy5tYXggKS5tdWx0aXBseVNjYWxhciggMC41ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRTaXplOiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmlzRW1wdHkoKSA/IHJlc3VsdC5zZXQoIDAsIDAsIDAgKSA6IHJlc3VsdC5zdWJWZWN0b3JzKCB0aGlzLm1heCwgdGhpcy5taW4gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGV4cGFuZEJ5UG9pbnQ6IGZ1bmN0aW9uICggcG9pbnQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4ubWluKCBwb2ludCApO1xcblxcdFxcdFxcdHRoaXMubWF4Lm1heCggcG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGV4cGFuZEJ5VmVjdG9yOiBmdW5jdGlvbiAoIHZlY3RvciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm1pbi5zdWIoIHZlY3RvciApO1xcblxcdFxcdFxcdHRoaXMubWF4LmFkZCggdmVjdG9yICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRleHBhbmRCeVNjYWxhcjogZnVuY3Rpb24gKCBzY2FsYXIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4uYWRkU2NhbGFyKCAtIHNjYWxhciApO1xcblxcdFxcdFxcdHRoaXMubWF4LmFkZFNjYWxhciggc2NhbGFyICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRleHBhbmRCeU9iamVjdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIENvbXB1dGVzIHRoZSB3b3JsZC1heGlzLWFsaWduZWQgYm91bmRpbmcgYm94IG9mIGFuIG9iamVjdCAoaW5jbHVkaW5nIGl0cyBjaGlsZHJlbiksXFxuXFx0XFx0XFx0Ly8gYWNjb3VudGluZyBmb3IgYm90aCB0aGUgb2JqZWN0J3MsIGFuZCBjaGlsZHJlbidzLCB3b3JsZCB0cmFuc2Zvcm1zXFxuXFxuXFx0XFx0XFx0dmFyIHNjb3BlLCBpLCBsO1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gdHJhdmVyc2UoIG5vZGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGdlb21ldHJ5ID0gbm9kZS5nZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGdlb21ldHJ5ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5pc0dlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IGdlb21ldHJ5LnZlcnRpY2VzO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gdmVydGljZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2MS5jb3B5KCB2ZXJ0aWNlc1sgaSBdICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0djEuYXBwbHlNYXRyaXg0KCBub2RlLm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2NvcGUuZXhwYW5kQnlQb2ludCggdjEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIGlmICggZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgYXR0cmlidXRlID0gZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gYXR0cmlidXRlLmNvdW50OyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2MS5mcm9tQnVmZmVyQXR0cmlidXRlKCBhdHRyaWJ1dGUsIGkgKS5hcHBseU1hdHJpeDQoIG5vZGUubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzY29wZS5leHBhbmRCeVBvaW50KCB2MSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGV4cGFuZEJ5T2JqZWN0KCBvYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUgPSB0aGlzO1xcblxcblxcdFxcdFxcdFxcdG9iamVjdC51cGRhdGVNYXRyaXhXb3JsZCggdHJ1ZSApO1xcblxcblxcdFxcdFxcdFxcdG9iamVjdC50cmF2ZXJzZSggdHJhdmVyc2UgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRjb250YWluc1BvaW50OiBmdW5jdGlvbiAoIHBvaW50ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBwb2ludC54IDwgdGhpcy5taW4ueCB8fCBwb2ludC54ID4gdGhpcy5tYXgueCB8fFxcblxcdFxcdFxcdFxcdHBvaW50LnkgPCB0aGlzLm1pbi55IHx8IHBvaW50LnkgPiB0aGlzLm1heC55IHx8XFxuXFx0XFx0XFx0XFx0cG9pbnQueiA8IHRoaXMubWluLnogfHwgcG9pbnQueiA+IHRoaXMubWF4LnogPyBmYWxzZSA6IHRydWU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb250YWluc0JveDogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubWluLnggPD0gYm94Lm1pbi54ICYmIGJveC5tYXgueCA8PSB0aGlzLm1heC54ICYmXFxuXFx0XFx0XFx0XFx0dGhpcy5taW4ueSA8PSBib3gubWluLnkgJiYgYm94Lm1heC55IDw9IHRoaXMubWF4LnkgJiZcXG5cXHRcXHRcXHRcXHR0aGlzLm1pbi56IDw9IGJveC5taW4ueiAmJiBib3gubWF4LnogPD0gdGhpcy5tYXguejtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldFBhcmFtZXRlcjogZnVuY3Rpb24gKCBwb2ludCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0Ly8gVGhpcyBjYW4gcG90ZW50aWFsbHkgaGF2ZSBhIGRpdmlkZSBieSB6ZXJvIGlmIHRoZSBib3hcXG5cXHRcXHRcXHQvLyBoYXMgYSBzaXplIGRpbWVuc2lvbiBvZiAwLlxcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQuc2V0KFxcblxcdFxcdFxcdFxcdCggcG9pbnQueCAtIHRoaXMubWluLnggKSAvICggdGhpcy5tYXgueCAtIHRoaXMubWluLnggKSxcXG5cXHRcXHRcXHRcXHQoIHBvaW50LnkgLSB0aGlzLm1pbi55ICkgLyAoIHRoaXMubWF4LnkgLSB0aGlzLm1pbi55ICksXFxuXFx0XFx0XFx0XFx0KCBwb2ludC56IC0gdGhpcy5taW4ueiApIC8gKCB0aGlzLm1heC56IC0gdGhpcy5taW4ueiApXFxuXFx0XFx0XFx0KTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdHNCb3g6IGZ1bmN0aW9uICggYm94ICkge1xcblxcblxcdFxcdFxcdC8vIHVzaW5nIDYgc3BsaXR0aW5nIHBsYW5lcyB0byBydWxlIG91dCBpbnRlcnNlY3Rpb25zLlxcblxcdFxcdFxcdHJldHVybiBib3gubWF4LnggPCB0aGlzLm1pbi54IHx8IGJveC5taW4ueCA+IHRoaXMubWF4LnggfHxcXG5cXHRcXHRcXHRcXHRib3gubWF4LnkgPCB0aGlzLm1pbi55IHx8IGJveC5taW4ueSA+IHRoaXMubWF4LnkgfHxcXG5cXHRcXHRcXHRcXHRib3gubWF4LnogPCB0aGlzLm1pbi56IHx8IGJveC5taW4ueiA+IHRoaXMubWF4LnogPyBmYWxzZSA6IHRydWU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRpbnRlcnNlY3RzU3BoZXJlOiAoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgY2xvc2VzdFBvaW50ID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gaW50ZXJzZWN0c1NwaGVyZSggc3BoZXJlICkge1xcblxcblxcdFxcdFxcdFxcdC8vIEZpbmQgdGhlIHBvaW50IG9uIHRoZSBBQUJCIGNsb3Nlc3QgdG8gdGhlIHNwaGVyZSBjZW50ZXIuXFxuXFx0XFx0XFx0XFx0dGhpcy5jbGFtcFBvaW50KCBzcGhlcmUuY2VudGVyLCBjbG9zZXN0UG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBJZiB0aGF0IHBvaW50IGlzIGluc2lkZSB0aGUgc3BoZXJlLCB0aGUgQUFCQiBhbmQgc3BoZXJlIGludGVyc2VjdC5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gY2xvc2VzdFBvaW50LmRpc3RhbmNlVG9TcXVhcmVkKCBzcGhlcmUuY2VudGVyICkgPD0gKCBzcGhlcmUucmFkaXVzICogc3BoZXJlLnJhZGl1cyApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSApKCksXFxuXFxuXFx0XFx0aW50ZXJzZWN0c1BsYW5lOiBmdW5jdGlvbiAoIHBsYW5lICkge1xcblxcblxcdFxcdFxcdC8vIFdlIGNvbXB1dGUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gZG90IHByb2R1Y3QgdmFsdWVzLiBJZiB0aG9zZSB2YWx1ZXNcXG5cXHRcXHRcXHQvLyBhcmUgb24gdGhlIHNhbWUgc2lkZSAoYmFjayBvciBmcm9udCkgb2YgdGhlIHBsYW5lLCB0aGVuIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbi5cXG5cXG5cXHRcXHRcXHR2YXIgbWluLCBtYXg7XFxuXFxuXFx0XFx0XFx0aWYgKCBwbGFuZS5ub3JtYWwueCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bWluID0gcGxhbmUubm9ybWFsLnggKiB0aGlzLm1pbi54O1xcblxcdFxcdFxcdFxcdG1heCA9IHBsYW5lLm5vcm1hbC54ICogdGhpcy5tYXgueDtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdG1pbiA9IHBsYW5lLm5vcm1hbC54ICogdGhpcy5tYXgueDtcXG5cXHRcXHRcXHRcXHRtYXggPSBwbGFuZS5ub3JtYWwueCAqIHRoaXMubWluLng7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggcGxhbmUubm9ybWFsLnkgPiAwICkge1xcblxcblxcdFxcdFxcdFxcdG1pbiArPSBwbGFuZS5ub3JtYWwueSAqIHRoaXMubWluLnk7XFxuXFx0XFx0XFx0XFx0bWF4ICs9IHBsYW5lLm5vcm1hbC55ICogdGhpcy5tYXgueTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdG1pbiArPSBwbGFuZS5ub3JtYWwueSAqIHRoaXMubWF4Lnk7XFxuXFx0XFx0XFx0XFx0bWF4ICs9IHBsYW5lLm5vcm1hbC55ICogdGhpcy5taW4ueTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBwbGFuZS5ub3JtYWwueiA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bWluICs9IHBsYW5lLm5vcm1hbC56ICogdGhpcy5taW4uejtcXG5cXHRcXHRcXHRcXHRtYXggKz0gcGxhbmUubm9ybWFsLnogKiB0aGlzLm1heC56O1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0bWluICs9IHBsYW5lLm5vcm1hbC56ICogdGhpcy5tYXguejtcXG5cXHRcXHRcXHRcXHRtYXggKz0gcGxhbmUubm9ybWFsLnogKiB0aGlzLm1pbi56O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCBtaW4gPD0gcGxhbmUuY29uc3RhbnQgJiYgbWF4ID49IHBsYW5lLmNvbnN0YW50ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbGFtcFBvaW50OiBmdW5jdGlvbiAoIHBvaW50LCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHRyZXR1cm4gcmVzdWx0LmNvcHkoIHBvaW50ICkuY2xhbXAoIHRoaXMubWluLCB0aGlzLm1heCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGlzdGFuY2VUb1BvaW50OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gZGlzdGFuY2VUb1BvaW50KCBwb2ludCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgY2xhbXBlZFBvaW50ID0gdjEuY29weSggcG9pbnQgKS5jbGFtcCggdGhpcy5taW4sIHRoaXMubWF4ICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIGNsYW1wZWRQb2ludC5zdWIoIHBvaW50ICkubGVuZ3RoKCk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0Z2V0Qm91bmRpbmdTcGhlcmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBnZXRCb3VuZGluZ1NwaGVyZSggb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmdldENlbnRlciggcmVzdWx0LmNlbnRlciApO1xcblxcblxcdFxcdFxcdFxcdHJlc3VsdC5yYWRpdXMgPSB0aGlzLmdldFNpemUoIHYxICkubGVuZ3RoKCkgKiAwLjU7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRpbnRlcnNlY3Q6IGZ1bmN0aW9uICggYm94ICkge1xcblxcblxcdFxcdFxcdHRoaXMubWluLm1heCggYm94Lm1pbiApO1xcblxcdFxcdFxcdHRoaXMubWF4Lm1pbiggYm94Lm1heCApO1xcblxcblxcdFxcdFxcdC8vIGVuc3VyZSB0aGF0IGlmIHRoZXJlIGlzIG5vIG92ZXJsYXAsIHRoZSByZXN1bHQgaXMgZnVsbHkgZW1wdHksIG5vdCBzbGlnaHRseSBlbXB0eSB3aXRoIG5vbi1pbmYvK2luZiB2YWx1ZXMgdGhhdCB3aWxsIGNhdXNlIHN1YnNlcXVlbmNlIGludGVyc2VjdHMgdG8gZXJyb25lb3VzbHkgcmV0dXJuIHZhbGlkIHZhbHVlcy5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuaXNFbXB0eSgpICkgdGhpcy5tYWtlRW1wdHkoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHVuaW9uOiBmdW5jdGlvbiAoIGJveCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm1pbi5taW4oIGJveC5taW4gKTtcXG5cXHRcXHRcXHR0aGlzLm1heC5tYXgoIGJveC5tYXggKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFwcGx5TWF0cml4NDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBwb2ludHMgPSBbXFxuXFx0XFx0XFx0XFx0bmV3IFZlY3RvcjMoKSxcXG5cXHRcXHRcXHRcXHRuZXcgVmVjdG9yMygpLFxcblxcdFxcdFxcdFxcdG5ldyBWZWN0b3IzKCksXFxuXFx0XFx0XFx0XFx0bmV3IFZlY3RvcjMoKSxcXG5cXHRcXHRcXHRcXHRuZXcgVmVjdG9yMygpLFxcblxcdFxcdFxcdFxcdG5ldyBWZWN0b3IzKCksXFxuXFx0XFx0XFx0XFx0bmV3IFZlY3RvcjMoKSxcXG5cXHRcXHRcXHRcXHRuZXcgVmVjdG9yMygpXFxuXFx0XFx0XFx0XTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gYXBwbHlNYXRyaXg0KCBtYXRyaXggKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdHJhbnNmb3JtIG9mIGVtcHR5IGJveCBpcyBhbiBlbXB0eSBib3guXFxuXFx0XFx0XFx0XFx0aWYgKCB0aGlzLmlzRW1wdHkoKSApIHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdFxcdC8vIE5PVEU6IEkgYW0gdXNpbmcgYSBiaW5hcnkgcGF0dGVybiB0byBzcGVjaWZ5IGFsbCAyXjMgY29tYmluYXRpb25zIGJlbG93XFxuXFx0XFx0XFx0XFx0cG9pbnRzWyAwIF0uc2V0KCB0aGlzLm1pbi54LCB0aGlzLm1pbi55LCB0aGlzLm1pbi56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTsgLy8gMDAwXFxuXFx0XFx0XFx0XFx0cG9pbnRzWyAxIF0uc2V0KCB0aGlzLm1pbi54LCB0aGlzLm1pbi55LCB0aGlzLm1heC56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTsgLy8gMDAxXFxuXFx0XFx0XFx0XFx0cG9pbnRzWyAyIF0uc2V0KCB0aGlzLm1pbi54LCB0aGlzLm1heC55LCB0aGlzLm1pbi56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTsgLy8gMDEwXFxuXFx0XFx0XFx0XFx0cG9pbnRzWyAzIF0uc2V0KCB0aGlzLm1pbi54LCB0aGlzLm1heC55LCB0aGlzLm1heC56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTsgLy8gMDExXFxuXFx0XFx0XFx0XFx0cG9pbnRzWyA0IF0uc2V0KCB0aGlzLm1heC54LCB0aGlzLm1pbi55LCB0aGlzLm1pbi56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTsgLy8gMTAwXFxuXFx0XFx0XFx0XFx0cG9pbnRzWyA1IF0uc2V0KCB0aGlzLm1heC54LCB0aGlzLm1pbi55LCB0aGlzLm1heC56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTsgLy8gMTAxXFxuXFx0XFx0XFx0XFx0cG9pbnRzWyA2IF0uc2V0KCB0aGlzLm1heC54LCB0aGlzLm1heC55LCB0aGlzLm1pbi56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTsgLy8gMTEwXFxuXFx0XFx0XFx0XFx0cG9pbnRzWyA3IF0uc2V0KCB0aGlzLm1heC54LCB0aGlzLm1heC55LCB0aGlzLm1heC56ICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTtcXHQvLyAxMTFcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnNldEZyb21Qb2ludHMoIHBvaW50cyApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHRyYW5zbGF0ZTogZnVuY3Rpb24gKCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5taW4uYWRkKCBvZmZzZXQgKTtcXG5cXHRcXHRcXHR0aGlzLm1heC5hZGQoIG9mZnNldCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXF1YWxzOiBmdW5jdGlvbiAoIGJveCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYm94Lm1pbi5lcXVhbHMoIHRoaXMubWluICkgJiYgYm94Lm1heC5lcXVhbHMoIHRoaXMubWF4ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGJob3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBTcGhlcmUoIGNlbnRlciwgcmFkaXVzICkge1xcblxcblxcdFxcdHRoaXMuY2VudGVyID0gKCBjZW50ZXIgIT09IHVuZGVmaW5lZCApID8gY2VudGVyIDogbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR0aGlzLnJhZGl1cyA9ICggcmFkaXVzICE9PSB1bmRlZmluZWQgKSA/IHJhZGl1cyA6IDA7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIFNwaGVyZS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggY2VudGVyLCByYWRpdXMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jZW50ZXIuY29weSggY2VudGVyICk7XFxuXFx0XFx0XFx0dGhpcy5yYWRpdXMgPSByYWRpdXM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tUG9pbnRzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGJveCA9IG5ldyBCb3gzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHNldEZyb21Qb2ludHMoIHBvaW50cywgb3B0aW9uYWxDZW50ZXIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGNlbnRlciA9IHRoaXMuY2VudGVyO1xcblxcblxcdFxcdFxcdFxcdGlmICggb3B0aW9uYWxDZW50ZXIgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjZW50ZXIuY29weSggb3B0aW9uYWxDZW50ZXIgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdGJveC5zZXRGcm9tUG9pbnRzKCBwb2ludHMgKS5nZXRDZW50ZXIoIGNlbnRlciApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR2YXIgbWF4UmFkaXVzU3EgPSAwO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBwb2ludHMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWF4UmFkaXVzU3EgPSBNYXRoLm1heCggbWF4UmFkaXVzU3EsIGNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCggcG9pbnRzWyBpIF0gKSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnJhZGl1cyA9IE1hdGguc3FydCggbWF4UmFkaXVzU3EgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc3BoZXJlICkge1xcblxcblxcdFxcdFxcdHRoaXMuY2VudGVyLmNvcHkoIHNwaGVyZS5jZW50ZXIgKTtcXG5cXHRcXHRcXHR0aGlzLnJhZGl1cyA9IHNwaGVyZS5yYWRpdXM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRlbXB0eTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiAoIHRoaXMucmFkaXVzIDw9IDAgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvbnRhaW5zUG9pbnQ6IGZ1bmN0aW9uICggcG9pbnQgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuICggcG9pbnQuZGlzdGFuY2VUb1NxdWFyZWQoIHRoaXMuY2VudGVyICkgPD0gKCB0aGlzLnJhZGl1cyAqIHRoaXMucmFkaXVzICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpc3RhbmNlVG9Qb2ludDogZnVuY3Rpb24gKCBwb2ludCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCBwb2ludC5kaXN0YW5jZVRvKCB0aGlzLmNlbnRlciApIC0gdGhpcy5yYWRpdXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdHNTcGhlcmU6IGZ1bmN0aW9uICggc3BoZXJlICkge1xcblxcblxcdFxcdFxcdHZhciByYWRpdXNTdW0gPSB0aGlzLnJhZGl1cyArIHNwaGVyZS5yYWRpdXM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHNwaGVyZS5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQoIHRoaXMuY2VudGVyICkgPD0gKCByYWRpdXNTdW0gKiByYWRpdXNTdW0gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdHNCb3g6IGZ1bmN0aW9uICggYm94ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBib3guaW50ZXJzZWN0c1NwaGVyZSggdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aW50ZXJzZWN0c1BsYW5lOiBmdW5jdGlvbiAoIHBsYW5lICkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLmFicyggcGxhbmUuZGlzdGFuY2VUb1BvaW50KCB0aGlzLmNlbnRlciApICkgPD0gdGhpcy5yYWRpdXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbGFtcFBvaW50OiBmdW5jdGlvbiAoIHBvaW50LCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGVsdGFMZW5ndGhTcSA9IHRoaXMuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKCBwb2ludCApO1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJlc3VsdC5jb3B5KCBwb2ludCApO1xcblxcblxcdFxcdFxcdGlmICggZGVsdGFMZW5ndGhTcSA+ICggdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cyApICkge1xcblxcblxcdFxcdFxcdFxcdHJlc3VsdC5zdWIoIHRoaXMuY2VudGVyICkubm9ybWFsaXplKCk7XFxuXFx0XFx0XFx0XFx0cmVzdWx0Lm11bHRpcGx5U2NhbGFyKCB0aGlzLnJhZGl1cyApLmFkZCggdGhpcy5jZW50ZXIgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldEJvdW5kaW5nQm94OiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciBib3ggPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgQm94MygpO1xcblxcblxcdFxcdFxcdGJveC5zZXQoIHRoaXMuY2VudGVyLCB0aGlzLmNlbnRlciApO1xcblxcdFxcdFxcdGJveC5leHBhbmRCeVNjYWxhciggdGhpcy5yYWRpdXMgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYm94O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXBwbHlNYXRyaXg0OiBmdW5jdGlvbiAoIG1hdHJpeCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmNlbnRlci5hcHBseU1hdHJpeDQoIG1hdHJpeCApO1xcblxcdFxcdFxcdHRoaXMucmFkaXVzID0gdGhpcy5yYWRpdXMgKiBtYXRyaXguZ2V0TWF4U2NhbGVPbkF4aXMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRyYW5zbGF0ZTogZnVuY3Rpb24gKCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jZW50ZXIuYWRkKCBvZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGVxdWFsczogZnVuY3Rpb24gKCBzcGhlcmUgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHNwaGVyZS5jZW50ZXIuZXF1YWxzKCB0aGlzLmNlbnRlciApICYmICggc3BoZXJlLnJhZGl1cyA9PT0gdGhpcy5yYWRpdXMgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYmhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBQbGFuZSggbm9ybWFsLCBjb25zdGFudCApIHtcXG5cXG5cXHRcXHQvLyBub3JtYWwgaXMgYXNzdW1lZCB0byBiZSBub3JtYWxpemVkXFxuXFxuXFx0XFx0dGhpcy5ub3JtYWwgPSAoIG5vcm1hbCAhPT0gdW5kZWZpbmVkICkgPyBub3JtYWwgOiBuZXcgVmVjdG9yMyggMSwgMCwgMCApO1xcblxcdFxcdHRoaXMuY29uc3RhbnQgPSAoIGNvbnN0YW50ICE9PSB1bmRlZmluZWQgKSA/IGNvbnN0YW50IDogMDtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggUGxhbmUucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIG5vcm1hbCwgY29uc3RhbnQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5ub3JtYWwuY29weSggbm9ybWFsICk7XFxuXFx0XFx0XFx0dGhpcy5jb25zdGFudCA9IGNvbnN0YW50O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q29tcG9uZW50czogZnVuY3Rpb24gKCB4LCB5LCB6LCB3ICkge1xcblxcblxcdFxcdFxcdHRoaXMubm9ybWFsLnNldCggeCwgeSwgeiApO1xcblxcdFxcdFxcdHRoaXMuY29uc3RhbnQgPSB3O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQ6IGZ1bmN0aW9uICggbm9ybWFsLCBwb2ludCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm5vcm1hbC5jb3B5KCBub3JtYWwgKTtcXG5cXHRcXHRcXHR0aGlzLmNvbnN0YW50ID0gLSBwb2ludC5kb3QoIHRoaXMubm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tQ29wbGFuYXJQb2ludHM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciB2MiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHNldEZyb21Db3BsYW5hclBvaW50cyggYSwgYiwgYyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbm9ybWFsID0gdjEuc3ViVmVjdG9ycyggYywgYiApLmNyb3NzKCB2Mi5zdWJWZWN0b3JzKCBhLCBiICkgKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBROiBzaG91bGQgYW4gZXJyb3IgYmUgdGhyb3duIGlmIG5vcm1hbCBpcyB6ZXJvIChlLmcuIGRlZ2VuZXJhdGUgcGxhbmUpP1xcblxcblxcdFxcdFxcdFxcdHRoaXMuc2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQoIG5vcm1hbCwgYSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSggdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBwbGFuZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm5vcm1hbC5jb3B5KCBwbGFuZS5ub3JtYWwgKTtcXG5cXHRcXHRcXHR0aGlzLmNvbnN0YW50ID0gcGxhbmUuY29uc3RhbnQ7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRub3JtYWxpemU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyBOb3RlOiB3aWxsIGxlYWQgdG8gYSBkaXZpZGUgYnkgemVybyBpZiB0aGUgcGxhbmUgaXMgaW52YWxpZC5cXG5cXG5cXHRcXHRcXHR2YXIgaW52ZXJzZU5vcm1hbExlbmd0aCA9IDEuMCAvIHRoaXMubm9ybWFsLmxlbmd0aCgpO1xcblxcdFxcdFxcdHRoaXMubm9ybWFsLm11bHRpcGx5U2NhbGFyKCBpbnZlcnNlTm9ybWFsTGVuZ3RoICk7XFxuXFx0XFx0XFx0dGhpcy5jb25zdGFudCAqPSBpbnZlcnNlTm9ybWFsTGVuZ3RoO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bmVnYXRlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jb25zdGFudCAqPSAtIDE7XFxuXFx0XFx0XFx0dGhpcy5ub3JtYWwubmVnYXRlKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXN0YW5jZVRvUG9pbnQ6IGZ1bmN0aW9uICggcG9pbnQgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubm9ybWFsLmRvdCggcG9pbnQgKSArIHRoaXMuY29uc3RhbnQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXN0YW5jZVRvU3BoZXJlOiBmdW5jdGlvbiAoIHNwaGVyZSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQoIHNwaGVyZS5jZW50ZXIgKSAtIHNwaGVyZS5yYWRpdXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwcm9qZWN0UG9pbnQ6IGZ1bmN0aW9uICggcG9pbnQsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQuY29weSggdGhpcy5ub3JtYWwgKS5tdWx0aXBseVNjYWxhciggLSB0aGlzLmRpc3RhbmNlVG9Qb2ludCggcG9pbnQgKSApLmFkZCggcG9pbnQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdExpbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBpbnRlcnNlY3RMaW5lKCBsaW5lLCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZGlyZWN0aW9uID0gbGluZS5kZWx0YSggdjEgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZGVub21pbmF0b3IgPSB0aGlzLm5vcm1hbC5kb3QoIGRpcmVjdGlvbiApO1xcblxcblxcdFxcdFxcdFxcdGlmICggZGVub21pbmF0b3IgPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gbGluZSBpcyBjb3BsYW5hciwgcmV0dXJuIG9yaWdpblxcblxcdFxcdFxcdFxcdFxcdGlmICggdGhpcy5kaXN0YW5jZVRvUG9pbnQoIGxpbmUuc3RhcnQgKSA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gcmVzdWx0LmNvcHkoIGxpbmUuc3RhcnQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gVW5zdXJlIGlmIHRoaXMgaXMgdGhlIGNvcnJlY3QgbWV0aG9kIHRvIGhhbmRsZSB0aGlzIGNhc2UuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIHVuZGVmaW5lZDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHQgPSAtICggbGluZS5zdGFydC5kb3QoIHRoaXMubm9ybWFsICkgKyB0aGlzLmNvbnN0YW50ICkgLyBkZW5vbWluYXRvcjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHQgPCAwIHx8IHQgPiAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB1bmRlZmluZWQ7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQuY29weSggZGlyZWN0aW9uICkubXVsdGlwbHlTY2FsYXIoIHQgKS5hZGQoIGxpbmUuc3RhcnQgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRpbnRlcnNlY3RzTGluZTogZnVuY3Rpb24gKCBsaW5lICkge1xcblxcblxcdFxcdFxcdC8vIE5vdGU6IHRoaXMgdGVzdHMgaWYgYSBsaW5lIGludGVyc2VjdHMgdGhlIHBsYW5lLCBub3Qgd2hldGhlciBpdCAob3IgaXRzIGVuZC1wb2ludHMpIGFyZSBjb3BsYW5hciB3aXRoIGl0LlxcblxcblxcdFxcdFxcdHZhciBzdGFydFNpZ24gPSB0aGlzLmRpc3RhbmNlVG9Qb2ludCggbGluZS5zdGFydCApO1xcblxcdFxcdFxcdHZhciBlbmRTaWduID0gdGhpcy5kaXN0YW5jZVRvUG9pbnQoIGxpbmUuZW5kICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuICggc3RhcnRTaWduIDwgMCAmJiBlbmRTaWduID4gMCApIHx8ICggZW5kU2lnbiA8IDAgJiYgc3RhcnRTaWduID4gMCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aW50ZXJzZWN0c0JveDogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGJveC5pbnRlcnNlY3RzUGxhbmUoIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdHNTcGhlcmU6IGZ1bmN0aW9uICggc3BoZXJlICkge1xcblxcblxcdFxcdFxcdHJldHVybiBzcGhlcmUuaW50ZXJzZWN0c1BsYW5lKCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3BsYW5hclBvaW50OiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQuY29weSggdGhpcy5ub3JtYWwgKS5tdWx0aXBseVNjYWxhciggLSB0aGlzLmNvbnN0YW50ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhcHBseU1hdHJpeDQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBtMSA9IG5ldyBNYXRyaXgzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGFwcGx5TWF0cml4NCggbWF0cml4LCBvcHRpb25hbE5vcm1hbE1hdHJpeCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbm9ybWFsTWF0cml4ID0gb3B0aW9uYWxOb3JtYWxNYXRyaXggfHwgbTEuZ2V0Tm9ybWFsTWF0cml4KCBtYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcmVmZXJlbmNlUG9pbnQgPSB0aGlzLmNvcGxhbmFyUG9pbnQoIHYxICkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbm9ybWFsID0gdGhpcy5ub3JtYWwuYXBwbHlNYXRyaXgzKCBub3JtYWxNYXRyaXggKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmNvbnN0YW50ID0gLSByZWZlcmVuY2VQb2ludC5kb3QoIG5vcm1hbCApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHRyYW5zbGF0ZTogZnVuY3Rpb24gKCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jb25zdGFudCAtPSBvZmZzZXQuZG90KCB0aGlzLm5vcm1hbCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXF1YWxzOiBmdW5jdGlvbiAoIHBsYW5lICkge1xcblxcblxcdFxcdFxcdHJldHVybiBwbGFuZS5ub3JtYWwuZXF1YWxzKCB0aGlzLm5vcm1hbCApICYmICggcGxhbmUuY29uc3RhbnQgPT09IHRoaXMuY29uc3RhbnQgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKiBAYXV0aG9yIGJob3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gRnJ1c3R1bSggcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSApIHtcXG5cXG5cXHRcXHR0aGlzLnBsYW5lcyA9IFtcXG5cXG5cXHRcXHRcXHQoIHAwICE9PSB1bmRlZmluZWQgKSA/IHAwIDogbmV3IFBsYW5lKCksXFxuXFx0XFx0XFx0KCBwMSAhPT0gdW5kZWZpbmVkICkgPyBwMSA6IG5ldyBQbGFuZSgpLFxcblxcdFxcdFxcdCggcDIgIT09IHVuZGVmaW5lZCApID8gcDIgOiBuZXcgUGxhbmUoKSxcXG5cXHRcXHRcXHQoIHAzICE9PSB1bmRlZmluZWQgKSA/IHAzIDogbmV3IFBsYW5lKCksXFxuXFx0XFx0XFx0KCBwNCAhPT0gdW5kZWZpbmVkICkgPyBwNCA6IG5ldyBQbGFuZSgpLFxcblxcdFxcdFxcdCggcDUgIT09IHVuZGVmaW5lZCApID8gcDUgOiBuZXcgUGxhbmUoKVxcblxcblxcdFxcdF07XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIEZydXN0dW0ucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHBsYW5lcyA9IHRoaXMucGxhbmVzO1xcblxcblxcdFxcdFxcdHBsYW5lc1sgMCBdLmNvcHkoIHAwICk7XFxuXFx0XFx0XFx0cGxhbmVzWyAxIF0uY29weSggcDEgKTtcXG5cXHRcXHRcXHRwbGFuZXNbIDIgXS5jb3B5KCBwMiApO1xcblxcdFxcdFxcdHBsYW5lc1sgMyBdLmNvcHkoIHAzICk7XFxuXFx0XFx0XFx0cGxhbmVzWyA0IF0uY29weSggcDQgKTtcXG5cXHRcXHRcXHRwbGFuZXNbIDUgXS5jb3B5KCBwNSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIGZydXN0dW0gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHBsYW5lcyA9IHRoaXMucGxhbmVzO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IDY7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cGxhbmVzWyBpIF0uY29weSggZnJ1c3R1bS5wbGFuZXNbIGkgXSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21NYXRyaXg6IGZ1bmN0aW9uICggbSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcGxhbmVzID0gdGhpcy5wbGFuZXM7XFxuXFx0XFx0XFx0dmFyIG1lID0gbS5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgbWUwID0gbWVbIDAgXSwgbWUxID0gbWVbIDEgXSwgbWUyID0gbWVbIDIgXSwgbWUzID0gbWVbIDMgXTtcXG5cXHRcXHRcXHR2YXIgbWU0ID0gbWVbIDQgXSwgbWU1ID0gbWVbIDUgXSwgbWU2ID0gbWVbIDYgXSwgbWU3ID0gbWVbIDcgXTtcXG5cXHRcXHRcXHR2YXIgbWU4ID0gbWVbIDggXSwgbWU5ID0gbWVbIDkgXSwgbWUxMCA9IG1lWyAxMCBdLCBtZTExID0gbWVbIDExIF07XFxuXFx0XFx0XFx0dmFyIG1lMTIgPSBtZVsgMTIgXSwgbWUxMyA9IG1lWyAxMyBdLCBtZTE0ID0gbWVbIDE0IF0sIG1lMTUgPSBtZVsgMTUgXTtcXG5cXG5cXHRcXHRcXHRwbGFuZXNbIDAgXS5zZXRDb21wb25lbnRzKCBtZTMgLSBtZTAsIG1lNyAtIG1lNCwgbWUxMSAtIG1lOCwgbWUxNSAtIG1lMTIgKS5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHRwbGFuZXNbIDEgXS5zZXRDb21wb25lbnRzKCBtZTMgKyBtZTAsIG1lNyArIG1lNCwgbWUxMSArIG1lOCwgbWUxNSArIG1lMTIgKS5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHRwbGFuZXNbIDIgXS5zZXRDb21wb25lbnRzKCBtZTMgKyBtZTEsIG1lNyArIG1lNSwgbWUxMSArIG1lOSwgbWUxNSArIG1lMTMgKS5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHRwbGFuZXNbIDMgXS5zZXRDb21wb25lbnRzKCBtZTMgLSBtZTEsIG1lNyAtIG1lNSwgbWUxMSAtIG1lOSwgbWUxNSAtIG1lMTMgKS5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHRwbGFuZXNbIDQgXS5zZXRDb21wb25lbnRzKCBtZTMgLSBtZTIsIG1lNyAtIG1lNiwgbWUxMSAtIG1lMTAsIG1lMTUgLSBtZTE0ICkubm9ybWFsaXplKCk7XFxuXFx0XFx0XFx0cGxhbmVzWyA1IF0uc2V0Q29tcG9uZW50cyggbWUzICsgbWUyLCBtZTcgKyBtZTYsIG1lMTEgKyBtZTEwLCBtZTE1ICsgbWUxNCApLm5vcm1hbGl6ZSgpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aW50ZXJzZWN0c09iamVjdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBzcGhlcmUgPSBuZXcgU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGludGVyc2VjdHNPYmplY3QoIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZ2VvbWV0cnkgPSBvYmplY3QuZ2VvbWV0cnk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSA9PT0gbnVsbCApXFxuXFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0XFx0c3BoZXJlLmNvcHkoIGdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlIClcXG5cXHRcXHRcXHRcXHRcXHQuYXBwbHlNYXRyaXg0KCBvYmplY3QubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKCBzcGhlcmUgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRpbnRlcnNlY3RzU3ByaXRlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHNwaGVyZSA9IG5ldyBTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gaW50ZXJzZWN0c1Nwcml0ZSggc3ByaXRlICkge1xcblxcblxcdFxcdFxcdFxcdHNwaGVyZS5jZW50ZXIuc2V0KCAwLCAwLCAwICk7XFxuXFx0XFx0XFx0XFx0c3BoZXJlLnJhZGl1cyA9IDAuNzA3MTA2NzgxMTg2NTQ3NjtcXG5cXHRcXHRcXHRcXHRzcGhlcmUuYXBwbHlNYXRyaXg0KCBzcHJpdGUubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKCBzcGhlcmUgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRpbnRlcnNlY3RzU3BoZXJlOiBmdW5jdGlvbiAoIHNwaGVyZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcGxhbmVzID0gdGhpcy5wbGFuZXM7XFxuXFx0XFx0XFx0dmFyIGNlbnRlciA9IHNwaGVyZS5jZW50ZXI7XFxuXFx0XFx0XFx0dmFyIG5lZ1JhZGl1cyA9IC0gc3BoZXJlLnJhZGl1cztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCA2OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBkaXN0YW5jZSA9IHBsYW5lc1sgaSBdLmRpc3RhbmNlVG9Qb2ludCggY2VudGVyICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBkaXN0YW5jZSA8IG5lZ1JhZGl1cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdHNCb3g6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgcDEgPSBuZXcgVmVjdG9yMygpLFxcblxcdFxcdFxcdFxcdHAyID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gaW50ZXJzZWN0c0JveCggYm94ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBwbGFuZXMgPSB0aGlzLnBsYW5lcztcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCA2OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBwbGFuZSA9IHBsYW5lc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdHAxLnggPSBwbGFuZS5ub3JtYWwueCA+IDAgPyBib3gubWluLnggOiBib3gubWF4Lng7XFxuXFx0XFx0XFx0XFx0XFx0cDIueCA9IHBsYW5lLm5vcm1hbC54ID4gMCA/IGJveC5tYXgueCA6IGJveC5taW4ueDtcXG5cXHRcXHRcXHRcXHRcXHRwMS55ID0gcGxhbmUubm9ybWFsLnkgPiAwID8gYm94Lm1pbi55IDogYm94Lm1heC55O1xcblxcdFxcdFxcdFxcdFxcdHAyLnkgPSBwbGFuZS5ub3JtYWwueSA+IDAgPyBib3gubWF4LnkgOiBib3gubWluLnk7XFxuXFx0XFx0XFx0XFx0XFx0cDEueiA9IHBsYW5lLm5vcm1hbC56ID4gMCA/IGJveC5taW4ueiA6IGJveC5tYXguejtcXG5cXHRcXHRcXHRcXHRcXHRwMi56ID0gcGxhbmUubm9ybWFsLnogPiAwID8gYm94Lm1heC56IDogYm94Lm1pbi56O1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBkMSA9IHBsYW5lLmRpc3RhbmNlVG9Qb2ludCggcDEgKTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgZDIgPSBwbGFuZS5kaXN0YW5jZVRvUG9pbnQoIHAyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gaWYgYm90aCBvdXRzaWRlIHBsYW5lLCBubyBpbnRlcnNlY3Rpb25cXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGQxIDwgMCAmJiBkMiA8IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0Y29udGFpbnNQb2ludDogZnVuY3Rpb24gKCBwb2ludCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcGxhbmVzID0gdGhpcy5wbGFuZXM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgNjsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHBsYW5lc1sgaSBdLmRpc3RhbmNlVG9Qb2ludCggcG9pbnQgKSA8IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xTaGFkb3dNYXAoIF9yZW5kZXJlciwgX29iamVjdHMsIG1heFRleHR1cmVTaXplICkge1xcblxcblxcdFxcdHZhciBfZnJ1c3R1bSA9IG5ldyBGcnVzdHVtKCksXFxuXFx0XFx0XFx0X3Byb2pTY3JlZW5NYXRyaXggPSBuZXcgTWF0cml4NCgpLFxcblxcblxcdFxcdFxcdF9zaGFkb3dNYXBTaXplID0gbmV3IFZlY3RvcjIoKSxcXG5cXHRcXHRcXHRfbWF4U2hhZG93TWFwU2l6ZSA9IG5ldyBWZWN0b3IyKCBtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUgKSxcXG5cXG5cXHRcXHRcXHRfbG9va1RhcmdldCA9IG5ldyBWZWN0b3IzKCksXFxuXFx0XFx0XFx0X2xpZ2h0UG9zaXRpb25Xb3JsZCA9IG5ldyBWZWN0b3IzKCksXFxuXFxuXFx0XFx0XFx0X01vcnBoaW5nRmxhZyA9IDEsXFxuXFx0XFx0XFx0X1NraW5uaW5nRmxhZyA9IDIsXFxuXFxuXFx0XFx0XFx0X051bWJlck9mTWF0ZXJpYWxWYXJpYW50cyA9ICggX01vcnBoaW5nRmxhZyB8IF9Ta2lubmluZ0ZsYWcgKSArIDEsXFxuXFxuXFx0XFx0XFx0X2RlcHRoTWF0ZXJpYWxzID0gbmV3IEFycmF5KCBfTnVtYmVyT2ZNYXRlcmlhbFZhcmlhbnRzICksXFxuXFx0XFx0XFx0X2Rpc3RhbmNlTWF0ZXJpYWxzID0gbmV3IEFycmF5KCBfTnVtYmVyT2ZNYXRlcmlhbFZhcmlhbnRzICksXFxuXFxuXFx0XFx0XFx0X21hdGVyaWFsQ2FjaGUgPSB7fTtcXG5cXG5cXHRcXHR2YXIgY3ViZURpcmVjdGlvbnMgPSBbXFxuXFx0XFx0XFx0bmV3IFZlY3RvcjMoIDEsIDAsIDAgKSwgbmV3IFZlY3RvcjMoIC0gMSwgMCwgMCApLCBuZXcgVmVjdG9yMyggMCwgMCwgMSApLFxcblxcdFxcdFxcdG5ldyBWZWN0b3IzKCAwLCAwLCAtIDEgKSwgbmV3IFZlY3RvcjMoIDAsIDEsIDAgKSwgbmV3IFZlY3RvcjMoIDAsIC0gMSwgMCApXFxuXFx0XFx0XTtcXG5cXG5cXHRcXHR2YXIgY3ViZVVwcyA9IFtcXG5cXHRcXHRcXHRuZXcgVmVjdG9yMyggMCwgMSwgMCApLCBuZXcgVmVjdG9yMyggMCwgMSwgMCApLCBuZXcgVmVjdG9yMyggMCwgMSwgMCApLFxcblxcdFxcdFxcdG5ldyBWZWN0b3IzKCAwLCAxLCAwICksIG5ldyBWZWN0b3IzKCAwLCAwLCAxICksXFx0bmV3IFZlY3RvcjMoIDAsIDAsIC0gMSApXFxuXFx0XFx0XTtcXG5cXG5cXHRcXHR2YXIgY3ViZTJEVmlld1BvcnRzID0gW1xcblxcdFxcdFxcdG5ldyBWZWN0b3I0KCksIG5ldyBWZWN0b3I0KCksIG5ldyBWZWN0b3I0KCksXFxuXFx0XFx0XFx0bmV3IFZlY3RvcjQoKSwgbmV3IFZlY3RvcjQoKSwgbmV3IFZlY3RvcjQoKVxcblxcdFxcdF07XFxuXFxuXFx0XFx0Ly8gaW5pdFxcblxcblxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gX051bWJlck9mTWF0ZXJpYWxWYXJpYW50czsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdXNlTW9ycGhpbmcgPSAoIGkgJiBfTW9ycGhpbmdGbGFnICkgIT09IDA7XFxuXFx0XFx0XFx0dmFyIHVzZVNraW5uaW5nID0gKCBpICYgX1NraW5uaW5nRmxhZyApICE9PSAwO1xcblxcblxcdFxcdFxcdHZhciBkZXB0aE1hdGVyaWFsID0gbmV3IE1lc2hEZXB0aE1hdGVyaWFsKCB7XFxuXFxuXFx0XFx0XFx0XFx0ZGVwdGhQYWNraW5nOiBSR0JBRGVwdGhQYWNraW5nLFxcblxcblxcdFxcdFxcdFxcdG1vcnBoVGFyZ2V0czogdXNlTW9ycGhpbmcsXFxuXFx0XFx0XFx0XFx0c2tpbm5pbmc6IHVzZVNraW5uaW5nXFxuXFxuXFx0XFx0XFx0fSApO1xcblxcblxcdFxcdFxcdF9kZXB0aE1hdGVyaWFsc1sgaSBdID0gZGVwdGhNYXRlcmlhbDtcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdHZhciBkaXN0YW5jZU1hdGVyaWFsID0gbmV3IE1lc2hEaXN0YW5jZU1hdGVyaWFsKCB7XFxuXFxuXFx0XFx0XFx0XFx0bW9ycGhUYXJnZXRzOiB1c2VNb3JwaGluZyxcXG5cXHRcXHRcXHRcXHRza2lubmluZzogdXNlU2tpbm5pbmdcXG5cXG5cXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0X2Rpc3RhbmNlTWF0ZXJpYWxzWyBpIF0gPSBkaXN0YW5jZU1hdGVyaWFsO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0dGhpcy5lbmFibGVkID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5hdXRvVXBkYXRlID0gdHJ1ZTtcXG5cXHRcXHR0aGlzLm5lZWRzVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gUENGU2hhZG93TWFwO1xcblxcblxcdFxcdHRoaXMucmVuZGVyUmV2ZXJzZVNpZGVkID0gdHJ1ZTtcXG5cXHRcXHR0aGlzLnJlbmRlclNpbmdsZVNpZGVkID0gdHJ1ZTtcXG5cXG5cXHRcXHR0aGlzLnJlbmRlciA9IGZ1bmN0aW9uICggbGlnaHRzLCBzY2VuZSwgY2FtZXJhICkge1xcblxcblxcdFxcdFxcdGlmICggc2NvcGUuZW5hYmxlZCA9PT0gZmFsc2UgKSByZXR1cm47XFxuXFx0XFx0XFx0aWYgKCBzY29wZS5hdXRvVXBkYXRlID09PSBmYWxzZSAmJiBzY29wZS5uZWVkc1VwZGF0ZSA9PT0gZmFsc2UgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0aWYgKCBsaWdodHMubGVuZ3RoID09PSAwICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdC8vIFRPRE8gQ2xlYW4gdXAgKG5lZWRlZCBpbiBjYXNlIG9mIGNvbnRleHRsb3N0KVxcblxcdFxcdFxcdHZhciBfZ2wgPSBfcmVuZGVyZXIuY29udGV4dDtcXG5cXHRcXHRcXHR2YXIgX3N0YXRlID0gX3JlbmRlcmVyLnN0YXRlO1xcblxcblxcdFxcdFxcdC8vIFNldCBHTCBzdGF0ZSBmb3IgZGVwdGggbWFwLlxcblxcdFxcdFxcdF9zdGF0ZS5kaXNhYmxlKCBfZ2wuQkxFTkQgKTtcXG5cXHRcXHRcXHRfc3RhdGUuYnVmZmVycy5jb2xvci5zZXRDbGVhciggMSwgMSwgMSwgMSApO1xcblxcdFxcdFxcdF9zdGF0ZS5idWZmZXJzLmRlcHRoLnNldFRlc3QoIHRydWUgKTtcXG5cXHRcXHRcXHRfc3RhdGUuc2V0U2Npc3NvclRlc3QoIGZhbHNlICk7XFxuXFxuXFx0XFx0XFx0Ly8gcmVuZGVyIGRlcHRoIG1hcFxcblxcblxcdFxcdFxcdHZhciBmYWNlQ291bnQ7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBpbCA9IGxpZ2h0cy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbGlnaHQgPSBsaWdodHNbIGkgXTtcXG5cXHRcXHRcXHRcXHR2YXIgc2hhZG93ID0gbGlnaHQuc2hhZG93O1xcblxcdFxcdFxcdFxcdHZhciBpc1BvaW50TGlnaHQgPSBsaWdodCAmJiBsaWdodC5pc1BvaW50TGlnaHQ7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBzaGFkb3cgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFNoYWRvd01hcDonLCBsaWdodCwgJ2hhcyBubyBzaGFkb3cuJyApO1xcblxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR2YXIgc2hhZG93Q2FtZXJhID0gc2hhZG93LmNhbWVyYTtcXG5cXG5cXHRcXHRcXHRcXHRfc2hhZG93TWFwU2l6ZS5jb3B5KCBzaGFkb3cubWFwU2l6ZSApO1xcblxcdFxcdFxcdFxcdF9zaGFkb3dNYXBTaXplLm1pbiggX21heFNoYWRvd01hcFNpemUgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGlzUG9pbnRMaWdodCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdnBXaWR0aCA9IF9zaGFkb3dNYXBTaXplLng7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHZwSGVpZ2h0ID0gX3NoYWRvd01hcFNpemUueTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBUaGVzZSB2aWV3cG9ydHMgbWFwIGEgY3ViZS1tYXAgb250byBhIDJEIHRleHR1cmUgd2l0aCB0aGVcXG5cXHRcXHRcXHRcXHRcXHQvLyBmb2xsb3dpbmcgb3JpZW50YXRpb246XFxuXFx0XFx0XFx0XFx0XFx0Ly9cXG5cXHRcXHRcXHRcXHRcXHQvLyAgeHpYWlxcblxcdFxcdFxcdFxcdFxcdC8vICAgeSBZXFxuXFx0XFx0XFx0XFx0XFx0Ly9cXG5cXHRcXHRcXHRcXHRcXHQvLyBYIC0gUG9zaXRpdmUgeCBkaXJlY3Rpb25cXG5cXHRcXHRcXHRcXHRcXHQvLyB4IC0gTmVnYXRpdmUgeCBkaXJlY3Rpb25cXG5cXHRcXHRcXHRcXHRcXHQvLyBZIC0gUG9zaXRpdmUgeSBkaXJlY3Rpb25cXG5cXHRcXHRcXHRcXHRcXHQvLyB5IC0gTmVnYXRpdmUgeSBkaXJlY3Rpb25cXG5cXHRcXHRcXHRcXHRcXHQvLyBaIC0gUG9zaXRpdmUgeiBkaXJlY3Rpb25cXG5cXHRcXHRcXHRcXHRcXHQvLyB6IC0gTmVnYXRpdmUgeiBkaXJlY3Rpb25cXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBwb3NpdGl2ZSBYXFxuXFx0XFx0XFx0XFx0XFx0Y3ViZTJEVmlld1BvcnRzWyAwIF0uc2V0KCB2cFdpZHRoICogMiwgdnBIZWlnaHQsIHZwV2lkdGgsIHZwSGVpZ2h0ICk7XFxuXFx0XFx0XFx0XFx0XFx0Ly8gbmVnYXRpdmUgWFxcblxcdFxcdFxcdFxcdFxcdGN1YmUyRFZpZXdQb3J0c1sgMSBdLnNldCggMCwgdnBIZWlnaHQsIHZwV2lkdGgsIHZwSGVpZ2h0ICk7XFxuXFx0XFx0XFx0XFx0XFx0Ly8gcG9zaXRpdmUgWlxcblxcdFxcdFxcdFxcdFxcdGN1YmUyRFZpZXdQb3J0c1sgMiBdLnNldCggdnBXaWR0aCAqIDMsIHZwSGVpZ2h0LCB2cFdpZHRoLCB2cEhlaWdodCApO1xcblxcdFxcdFxcdFxcdFxcdC8vIG5lZ2F0aXZlIFpcXG5cXHRcXHRcXHRcXHRcXHRjdWJlMkRWaWV3UG9ydHNbIDMgXS5zZXQoIHZwV2lkdGgsIHZwSGVpZ2h0LCB2cFdpZHRoLCB2cEhlaWdodCApO1xcblxcdFxcdFxcdFxcdFxcdC8vIHBvc2l0aXZlIFlcXG5cXHRcXHRcXHRcXHRcXHRjdWJlMkRWaWV3UG9ydHNbIDQgXS5zZXQoIHZwV2lkdGggKiAzLCAwLCB2cFdpZHRoLCB2cEhlaWdodCApO1xcblxcdFxcdFxcdFxcdFxcdC8vIG5lZ2F0aXZlIFlcXG5cXHRcXHRcXHRcXHRcXHRjdWJlMkRWaWV3UG9ydHNbIDUgXS5zZXQoIHZwV2lkdGgsIDAsIHZwV2lkdGgsIHZwSGVpZ2h0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0X3NoYWRvd01hcFNpemUueCAqPSA0LjA7XFxuXFx0XFx0XFx0XFx0XFx0X3NoYWRvd01hcFNpemUueSAqPSAyLjA7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggc2hhZG93Lm1hcCA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgcGFycyA9IHsgbWluRmlsdGVyOiBOZWFyZXN0RmlsdGVyLCBtYWdGaWx0ZXI6IE5lYXJlc3RGaWx0ZXIsIGZvcm1hdDogUkdCQUZvcm1hdCB9O1xcblxcblxcdFxcdFxcdFxcdFxcdHNoYWRvdy5tYXAgPSBuZXcgV2ViR0xSZW5kZXJUYXJnZXQoIF9zaGFkb3dNYXBTaXplLngsIF9zaGFkb3dNYXBTaXplLnksIHBhcnMgKTtcXG5cXHRcXHRcXHRcXHRcXHRzaGFkb3cubWFwLnRleHR1cmUubmFtZSA9IGxpZ2h0Lm5hbWUgKyBcXFwiLnNoYWRvd01hcFxcXCI7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2hhZG93Q2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBzaGFkb3cuaXNTcG90TGlnaHRTaGFkb3cgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2hhZG93LnVwZGF0ZSggbGlnaHQgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNoYWRvd01hcCA9IHNoYWRvdy5tYXA7XFxuXFx0XFx0XFx0XFx0dmFyIHNoYWRvd01hdHJpeCA9IHNoYWRvdy5tYXRyaXg7XFxuXFxuXFx0XFx0XFx0XFx0X2xpZ2h0UG9zaXRpb25Xb3JsZC5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGxpZ2h0Lm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0c2hhZG93Q2FtZXJhLnBvc2l0aW9uLmNvcHkoIF9saWdodFBvc2l0aW9uV29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGlzUG9pbnRMaWdodCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmYWNlQ291bnQgPSA2O1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGZvciBwb2ludCBsaWdodHMgd2Ugc2V0IHRoZSBzaGFkb3cgbWF0cml4IHRvIGJlIGEgdHJhbnNsYXRpb24tb25seSBtYXRyaXhcXG5cXHRcXHRcXHRcXHRcXHQvLyBlcXVhbCB0byBpbnZlcnNlIG9mIHRoZSBsaWdodCdzIHBvc2l0aW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0c2hhZG93TWF0cml4Lm1ha2VUcmFuc2xhdGlvbiggLSBfbGlnaHRQb3NpdGlvbldvcmxkLngsIC0gX2xpZ2h0UG9zaXRpb25Xb3JsZC55LCAtIF9saWdodFBvc2l0aW9uV29ybGQueiApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZUNvdW50ID0gMTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRfbG9va1RhcmdldC5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGxpZ2h0LnRhcmdldC5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdFxcdHNoYWRvd0NhbWVyYS5sb29rQXQoIF9sb29rVGFyZ2V0ICk7XFxuXFx0XFx0XFx0XFx0XFx0c2hhZG93Q2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gY29tcHV0ZSBzaGFkb3cgbWF0cml4XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2hhZG93TWF0cml4LnNldChcXG5cXHRcXHRcXHRcXHRcXHRcXHQwLjUsIDAuMCwgMC4wLCAwLjUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0MC4wLCAwLjUsIDAuMCwgMC41LFxcblxcdFxcdFxcdFxcdFxcdFxcdDAuMCwgMC4wLCAwLjUsIDAuNSxcXG5cXHRcXHRcXHRcXHRcXHRcXHQwLjAsIDAuMCwgMC4wLCAxLjBcXG5cXHRcXHRcXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdFxcdFxcdHNoYWRvd01hdHJpeC5tdWx0aXBseSggc2hhZG93Q2FtZXJhLnByb2plY3Rpb25NYXRyaXggKTtcXG5cXHRcXHRcXHRcXHRcXHRzaGFkb3dNYXRyaXgubXVsdGlwbHkoIHNoYWRvd0NhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0X3JlbmRlcmVyLnNldFJlbmRlclRhcmdldCggc2hhZG93TWFwICk7XFxuXFx0XFx0XFx0XFx0X3JlbmRlcmVyLmNsZWFyKCk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gcmVuZGVyIHNoYWRvdyBtYXAgZm9yIGVhY2ggY3ViZSBmYWNlIChpZiBvbW5pLWRpcmVjdGlvbmFsKSBvclxcblxcdFxcdFxcdFxcdC8vIHJ1biBhIHNpbmdsZSBwYXNzIGlmIG5vdFxcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBmYWNlID0gMDsgZmFjZSA8IGZhY2VDb3VudDsgZmFjZSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGlzUG9pbnRMaWdodCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRfbG9va1RhcmdldC5jb3B5KCBzaGFkb3dDYW1lcmEucG9zaXRpb24gKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRfbG9va1RhcmdldC5hZGQoIGN1YmVEaXJlY3Rpb25zWyBmYWNlIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3dDYW1lcmEudXAuY29weSggY3ViZVVwc1sgZmFjZSBdICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0c2hhZG93Q2FtZXJhLmxvb2tBdCggX2xvb2tUYXJnZXQgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3dDYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgdnBEaW1lbnNpb25zID0gY3ViZTJEVmlld1BvcnRzWyBmYWNlIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0X3N0YXRlLnZpZXdwb3J0KCB2cERpbWVuc2lvbnMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdXBkYXRlIGNhbWVyYSBtYXRyaWNlcyBhbmQgZnJ1c3R1bVxcblxcblxcdFxcdFxcdFxcdFxcdF9wcm9qU2NyZWVuTWF0cml4Lm11bHRpcGx5TWF0cmljZXMoIHNoYWRvd0NhbWVyYS5wcm9qZWN0aW9uTWF0cml4LCBzaGFkb3dDYW1lcmEubWF0cml4V29ybGRJbnZlcnNlICk7XFxuXFx0XFx0XFx0XFx0XFx0X2ZydXN0dW0uc2V0RnJvbU1hdHJpeCggX3Byb2pTY3JlZW5NYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBzZXQgb2JqZWN0IG1hdHJpY2VzICYgZnJ1c3R1bSBjdWxsaW5nXFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVuZGVyT2JqZWN0KCBzY2VuZSwgY2FtZXJhLCBzaGFkb3dDYW1lcmEsIGlzUG9pbnRMaWdodCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0c2NvcGUubmVlZHNVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdGZ1bmN0aW9uIGdldERlcHRoTWF0ZXJpYWwoIG9iamVjdCwgbWF0ZXJpYWwsIGlzUG9pbnRMaWdodCwgbGlnaHRQb3NpdGlvbldvcmxkLCBzaGFkb3dDYW1lcmFOZWFyLCBzaGFkb3dDYW1lcmFGYXIgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGdlb21ldHJ5ID0gb2JqZWN0Lmdlb21ldHJ5O1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBudWxsO1xcblxcblxcdFxcdFxcdHZhciBtYXRlcmlhbFZhcmlhbnRzID0gX2RlcHRoTWF0ZXJpYWxzO1xcblxcdFxcdFxcdHZhciBjdXN0b21NYXRlcmlhbCA9IG9iamVjdC5jdXN0b21EZXB0aE1hdGVyaWFsO1xcblxcblxcdFxcdFxcdGlmICggaXNQb2ludExpZ2h0ICkge1xcblxcblxcdFxcdFxcdFxcdG1hdGVyaWFsVmFyaWFudHMgPSBfZGlzdGFuY2VNYXRlcmlhbHM7XFxuXFx0XFx0XFx0XFx0Y3VzdG9tTWF0ZXJpYWwgPSBvYmplY3QuY3VzdG9tRGlzdGFuY2VNYXRlcmlhbDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCAhIGN1c3RvbU1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB1c2VNb3JwaGluZyA9IGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdGlmICggbWF0ZXJpYWwubW9ycGhUYXJnZXRzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkgJiYgZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1c2VNb3JwaGluZyA9IGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcyAmJiBnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24gJiYgZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aCA+IDA7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIGlmICggZ2VvbWV0cnkgJiYgZ2VvbWV0cnkuaXNHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1c2VNb3JwaGluZyA9IGdlb21ldHJ5Lm1vcnBoVGFyZ2V0cyAmJiBnZW9tZXRyeS5tb3JwaFRhcmdldHMubGVuZ3RoID4gMDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggb2JqZWN0LmlzU2tpbm5lZE1lc2ggJiYgbWF0ZXJpYWwuc2tpbm5pbmcgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMU2hhZG93TWFwOiBUSFJFRS5Ta2lubmVkTWVzaCB3aXRoIG1hdGVyaWFsLnNraW5uaW5nIHNldCB0byBmYWxzZTonLCBvYmplY3QgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHVzZVNraW5uaW5nID0gb2JqZWN0LmlzU2tpbm5lZE1lc2ggJiYgbWF0ZXJpYWwuc2tpbm5pbmc7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZhcmlhbnRJbmRleCA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1c2VNb3JwaGluZyApIHZhcmlhbnRJbmRleCB8PSBfTW9ycGhpbmdGbGFnO1xcblxcdFxcdFxcdFxcdGlmICggdXNlU2tpbm5pbmcgKSB2YXJpYW50SW5kZXggfD0gX1NraW5uaW5nRmxhZztcXG5cXG5cXHRcXHRcXHRcXHRyZXN1bHQgPSBtYXRlcmlhbFZhcmlhbnRzWyB2YXJpYW50SW5kZXggXTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHJlc3VsdCA9IGN1c3RvbU1hdGVyaWFsO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIF9yZW5kZXJlci5sb2NhbENsaXBwaW5nRW5hYmxlZCAmJlxcblxcdFxcdFxcdFxcdFxcdG1hdGVyaWFsLmNsaXBTaGFkb3dzID09PSB0cnVlICYmXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwuY2xpcHBpbmdQbGFuZXMubGVuZ3RoICE9PSAwICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGluIHRoaXMgY2FzZSB3ZSBuZWVkIGEgdW5pcXVlIG1hdGVyaWFsIGluc3RhbmNlIHJlZmxlY3RpbmcgdGhlXFxuXFx0XFx0XFx0XFx0Ly8gYXBwcm9wcmlhdGUgc3RhdGVcXG5cXG5cXHRcXHRcXHRcXHR2YXIga2V5QSA9IHJlc3VsdC51dWlkLCBrZXlCID0gbWF0ZXJpYWwudXVpZDtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbWF0ZXJpYWxzRm9yVmFyaWFudCA9IF9tYXRlcmlhbENhY2hlWyBrZXlBIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbHNGb3JWYXJpYW50ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWxzRm9yVmFyaWFudCA9IHt9O1xcblxcdFxcdFxcdFxcdFxcdF9tYXRlcmlhbENhY2hlWyBrZXlBIF0gPSBtYXRlcmlhbHNGb3JWYXJpYW50O1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR2YXIgY2FjaGVkTWF0ZXJpYWwgPSBtYXRlcmlhbHNGb3JWYXJpYW50WyBrZXlCIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBjYWNoZWRNYXRlcmlhbCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNhY2hlZE1hdGVyaWFsID0gcmVzdWx0LmNsb25lKCk7XFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWxzRm9yVmFyaWFudFsga2V5QiBdID0gY2FjaGVkTWF0ZXJpYWw7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJlc3VsdCA9IGNhY2hlZE1hdGVyaWFsO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXN1bHQudmlzaWJsZSA9IG1hdGVyaWFsLnZpc2libGU7XFxuXFx0XFx0XFx0cmVzdWx0LndpcmVmcmFtZSA9IG1hdGVyaWFsLndpcmVmcmFtZTtcXG5cXG5cXHRcXHRcXHR2YXIgc2lkZSA9IG1hdGVyaWFsLnNpZGU7XFxuXFxuXFx0XFx0XFx0aWYgKCBzY29wZS5yZW5kZXJTaW5nbGVTaWRlZCAmJiBzaWRlID09IERvdWJsZVNpZGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2lkZSA9IEZyb250U2lkZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBzY29wZS5yZW5kZXJSZXZlcnNlU2lkZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBzaWRlID09PSBGcm9udFNpZGUgKSBzaWRlID0gQmFja1NpZGU7XFxuXFx0XFx0XFx0XFx0ZWxzZSBpZiAoIHNpZGUgPT09IEJhY2tTaWRlICkgc2lkZSA9IEZyb250U2lkZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmVzdWx0LnNpZGUgPSBzaWRlO1xcblxcblxcdFxcdFxcdHJlc3VsdC5jbGlwU2hhZG93cyA9IG1hdGVyaWFsLmNsaXBTaGFkb3dzO1xcblxcdFxcdFxcdHJlc3VsdC5jbGlwcGluZ1BsYW5lcyA9IG1hdGVyaWFsLmNsaXBwaW5nUGxhbmVzO1xcblxcdFxcdFxcdHJlc3VsdC5jbGlwSW50ZXJzZWN0aW9uID0gbWF0ZXJpYWwuY2xpcEludGVyc2VjdGlvbjtcXG5cXG5cXHRcXHRcXHRyZXN1bHQud2lyZWZyYW1lTGluZXdpZHRoID0gbWF0ZXJpYWwud2lyZWZyYW1lTGluZXdpZHRoO1xcblxcdFxcdFxcdHJlc3VsdC5saW5ld2lkdGggPSBtYXRlcmlhbC5saW5ld2lkdGg7XFxuXFxuXFx0XFx0XFx0aWYgKCBpc1BvaW50TGlnaHQgJiYgcmVzdWx0LmlzTWVzaERpc3RhbmNlTWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVzdWx0LnJlZmVyZW5jZVBvc2l0aW9uLmNvcHkoIGxpZ2h0UG9zaXRpb25Xb3JsZCApO1xcblxcdFxcdFxcdFxcdHJlc3VsdC5uZWFyRGlzdGFuY2UgPSBzaGFkb3dDYW1lcmFOZWFyO1xcblxcdFxcdFxcdFxcdHJlc3VsdC5mYXJEaXN0YW5jZSA9IHNoYWRvd0NhbWVyYUZhcjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVuZGVyT2JqZWN0KCBvYmplY3QsIGNhbWVyYSwgc2hhZG93Q2FtZXJhLCBpc1BvaW50TGlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBvYmplY3QudmlzaWJsZSA9PT0gZmFsc2UgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0dmFyIHZpc2libGUgPSBvYmplY3QubGF5ZXJzLnRlc3QoIGNhbWVyYS5sYXllcnMgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHZpc2libGUgJiYgKCBvYmplY3QuaXNNZXNoIHx8IG9iamVjdC5pc0xpbmUgfHwgb2JqZWN0LmlzUG9pbnRzICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvYmplY3QuY2FzdFNoYWRvdyAmJiAoICEgb2JqZWN0LmZydXN0dW1DdWxsZWQgfHwgX2ZydXN0dW0uaW50ZXJzZWN0c09iamVjdCggb2JqZWN0ICkgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRvYmplY3QubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoIHNoYWRvd0NhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UsIG9iamVjdC5tYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IF9vYmplY3RzLnVwZGF0ZSggb2JqZWN0ICk7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIG1hdGVyaWFsID0gb2JqZWN0Lm1hdGVyaWFsO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggQXJyYXkuaXNBcnJheSggbWF0ZXJpYWwgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgZ3JvdXBzID0gZ2VvbWV0cnkuZ3JvdXBzO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBrID0gMCwga2wgPSBncm91cHMubGVuZ3RoOyBrIDwga2w7IGsgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGdyb3VwID0gZ3JvdXBzWyBrIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGdyb3VwTWF0ZXJpYWwgPSBtYXRlcmlhbFsgZ3JvdXAubWF0ZXJpYWxJbmRleCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggZ3JvdXBNYXRlcmlhbCAmJiBncm91cE1hdGVyaWFsLnZpc2libGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRlcHRoTWF0ZXJpYWwgPSBnZXREZXB0aE1hdGVyaWFsKCBvYmplY3QsIGdyb3VwTWF0ZXJpYWwsIGlzUG9pbnRMaWdodCwgX2xpZ2h0UG9zaXRpb25Xb3JsZCwgc2hhZG93Q2FtZXJhLm5lYXIsIHNoYWRvd0NhbWVyYS5mYXIgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRfcmVuZGVyZXIucmVuZGVyQnVmZmVyRGlyZWN0KCBzaGFkb3dDYW1lcmEsIG51bGwsIGdlb21ldHJ5LCBkZXB0aE1hdGVyaWFsLCBvYmplY3QsIGdyb3VwICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC52aXNpYmxlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBkZXB0aE1hdGVyaWFsID0gZ2V0RGVwdGhNYXRlcmlhbCggb2JqZWN0LCBtYXRlcmlhbCwgaXNQb2ludExpZ2h0LCBfbGlnaHRQb3NpdGlvbldvcmxkLCBzaGFkb3dDYW1lcmEubmVhciwgc2hhZG93Q2FtZXJhLmZhciApO1xcblxcdFxcdFxcdFxcdFxcdFxcdF9yZW5kZXJlci5yZW5kZXJCdWZmZXJEaXJlY3QoIHNoYWRvd0NhbWVyYSwgbnVsbCwgZ2VvbWV0cnksIGRlcHRoTWF0ZXJpYWwsIG9iamVjdCwgbnVsbCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBjaGlsZHJlbiA9IG9iamVjdC5jaGlsZHJlbjtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHJlbmRlck9iamVjdCggY2hpbGRyZW5bIGkgXSwgY2FtZXJhLCBzaGFkb3dDYW1lcmEsIGlzUG9pbnRMaWdodCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xBdHRyaWJ1dGVzKCBnbCApIHtcXG5cXG5cXHRcXHR2YXIgYnVmZmVycyA9IHt9O1xcblxcblxcdFxcdGZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciggYXR0cmlidXRlLCBidWZmZXJUeXBlICkge1xcblxcblxcdFxcdFxcdHZhciBhcnJheSA9IGF0dHJpYnV0ZS5hcnJheTtcXG5cXHRcXHRcXHR2YXIgdXNhZ2UgPSBhdHRyaWJ1dGUuZHluYW1pYyA/IGdsLkRZTkFNSUNfRFJBVyA6IGdsLlNUQVRJQ19EUkFXO1xcblxcblxcdFxcdFxcdHZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTtcXG5cXG5cXHRcXHRcXHRnbC5iaW5kQnVmZmVyKCBidWZmZXJUeXBlLCBidWZmZXIgKTtcXG5cXHRcXHRcXHRnbC5idWZmZXJEYXRhKCBidWZmZXJUeXBlLCBhcnJheSwgdXNhZ2UgKTtcXG5cXG5cXHRcXHRcXHRhdHRyaWJ1dGUub25VcGxvYWRDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdHZhciB0eXBlID0gZ2wuRkxPQVQ7XFxuXFxuXFx0XFx0XFx0aWYgKCBhcnJheSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0eXBlID0gZ2wuRkxPQVQ7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYXJyYXkgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVbnN1cHBvcnRlZCBkYXRhIGJ1ZmZlciBmb3JtYXQ6IEZsb2F0NjRBcnJheS4nICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYXJyYXkgaW5zdGFuY2VvZiBVaW50MTZBcnJheSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0eXBlID0gZ2wuVU5TSUdORURfU0hPUlQ7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYXJyYXkgaW5zdGFuY2VvZiBJbnQxNkFycmF5ICkge1xcblxcblxcdFxcdFxcdFxcdHR5cGUgPSBnbC5TSE9SVDtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBhcnJheSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ICkge1xcblxcblxcdFxcdFxcdFxcdHR5cGUgPSBnbC5VTlNJR05FRF9JTlQ7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYXJyYXkgaW5zdGFuY2VvZiBJbnQzMkFycmF5ICkge1xcblxcblxcdFxcdFxcdFxcdHR5cGUgPSBnbC5JTlQ7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYXJyYXkgaW5zdGFuY2VvZiBJbnQ4QXJyYXkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dHlwZSA9IGdsLkJZVEU7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYXJyYXkgaW5zdGFuY2VvZiBVaW50OEFycmF5ICkge1xcblxcblxcdFxcdFxcdFxcdHR5cGUgPSBnbC5VTlNJR05FRF9CWVRFO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4ge1xcblxcdFxcdFxcdFxcdGJ1ZmZlcjogYnVmZmVyLFxcblxcdFxcdFxcdFxcdHR5cGU6IHR5cGUsXFxuXFx0XFx0XFx0XFx0Ynl0ZXNQZXJFbGVtZW50OiBhcnJheS5CWVRFU19QRVJfRUxFTUVOVCxcXG5cXHRcXHRcXHRcXHR2ZXJzaW9uOiBhdHRyaWJ1dGUudmVyc2lvblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHVwZGF0ZUJ1ZmZlciggYnVmZmVyLCBhdHRyaWJ1dGUsIGJ1ZmZlclR5cGUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFycmF5ID0gYXR0cmlidXRlLmFycmF5O1xcblxcdFxcdFxcdHZhciB1cGRhdGVSYW5nZSA9IGF0dHJpYnV0ZS51cGRhdGVSYW5nZTtcXG5cXG5cXHRcXHRcXHRnbC5iaW5kQnVmZmVyKCBidWZmZXJUeXBlLCBidWZmZXIgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZS5keW5hbWljID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRnbC5idWZmZXJEYXRhKCBidWZmZXJUeXBlLCBhcnJheSwgZ2wuU1RBVElDX0RSQVcgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCB1cGRhdGVSYW5nZS5jb3VudCA9PT0gLSAxICkge1xcblxcblxcdFxcdFxcdFxcdC8vIE5vdCB1c2luZyB1cGRhdGUgcmFuZ2VzXFxuXFxuXFx0XFx0XFx0XFx0Z2wuYnVmZmVyU3ViRGF0YSggYnVmZmVyVHlwZSwgMCwgYXJyYXkgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCB1cGRhdGVSYW5nZS5jb3VudCA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuV2ViR0xPYmplY3RzLnVwZGF0ZUJ1ZmZlcjogZHluYW1pYyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUgbWFya2VkIGFzIG5lZWRzVXBkYXRlIGJ1dCB1cGRhdGVSYW5nZS5jb3VudCBpcyAwLCBlbnN1cmUgeW91IGFyZSB1c2luZyBzZXQgbWV0aG9kcyBvciB1cGRhdGluZyBtYW51YWxseS4nICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRnbC5idWZmZXJTdWJEYXRhKCBidWZmZXJUeXBlLCB1cGRhdGVSYW5nZS5vZmZzZXQgKiBhcnJheS5CWVRFU19QRVJfRUxFTUVOVCxcXG5cXHRcXHRcXHRcXHRcXHRhcnJheS5zdWJhcnJheSggdXBkYXRlUmFuZ2Uub2Zmc2V0LCB1cGRhdGVSYW5nZS5vZmZzZXQgKyB1cGRhdGVSYW5nZS5jb3VudCApICk7XFxuXFxuXFx0XFx0XFx0XFx0dXBkYXRlUmFuZ2UuY291bnQgPSAtIDE7IC8vIHJlc2V0IHJhbmdlXFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdGZ1bmN0aW9uIGdldCggYXR0cmlidXRlICkge1xcblxcblxcdFxcdFxcdGlmICggYXR0cmlidXRlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUgKSBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGUuZGF0YTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYnVmZmVyc1sgYXR0cmlidXRlLnV1aWQgXTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVtb3ZlKCBhdHRyaWJ1dGUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBhdHRyaWJ1dGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSApIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZS5kYXRhO1xcblxcblxcdFxcdFxcdHZhciBkYXRhID0gYnVmZmVyc1sgYXR0cmlidXRlLnV1aWQgXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGRhdGEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Z2wuZGVsZXRlQnVmZmVyKCBkYXRhLmJ1ZmZlciApO1xcblxcblxcdFxcdFxcdFxcdGRlbGV0ZSBidWZmZXJzWyBhdHRyaWJ1dGUudXVpZCBdO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gdXBkYXRlKCBhdHRyaWJ1dGUsIGJ1ZmZlclR5cGUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBhdHRyaWJ1dGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSApIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZS5kYXRhO1xcblxcblxcdFxcdFxcdHZhciBkYXRhID0gYnVmZmVyc1sgYXR0cmlidXRlLnV1aWQgXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRidWZmZXJzWyBhdHRyaWJ1dGUudXVpZCBdID0gY3JlYXRlQnVmZmVyKCBhdHRyaWJ1dGUsIGJ1ZmZlclR5cGUgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBkYXRhLnZlcnNpb24gPCBhdHRyaWJ1dGUudmVyc2lvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHR1cGRhdGVCdWZmZXIoIGRhdGEuYnVmZmVyLCBhdHRyaWJ1dGUsIGJ1ZmZlclR5cGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRkYXRhLnZlcnNpb24gPSBhdHRyaWJ1dGUudmVyc2lvbjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBnZXQsXFxuXFx0XFx0XFx0cmVtb3ZlOiByZW1vdmUsXFxuXFx0XFx0XFx0dXBkYXRlOiB1cGRhdGVcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCAqIEBhdXRob3IgYmhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBFdWxlciggeCwgeSwgeiwgb3JkZXIgKSB7XFxuXFxuXFx0XFx0dGhpcy5feCA9IHggfHwgMDtcXG5cXHRcXHR0aGlzLl95ID0geSB8fCAwO1xcblxcdFxcdHRoaXMuX3ogPSB6IHx8IDA7XFxuXFx0XFx0dGhpcy5fb3JkZXIgPSBvcmRlciB8fCBFdWxlci5EZWZhdWx0T3JkZXI7XFxuXFxuXFx0fVxcblxcblxcdEV1bGVyLlJvdGF0aW9uT3JkZXJzID0gWyAnWFlaJywgJ1laWCcsICdaWFknLCAnWFpZJywgJ1lYWicsICdaWVgnIF07XFxuXFxuXFx0RXVsZXIuRGVmYXVsdE9yZGVyID0gJ1hZWic7XFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIEV1bGVyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdHg6IHtcXG5cXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5feDtcXG5cXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl94ID0gdmFsdWU7XFxuXFx0XFx0XFx0XFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0eToge1xcblxcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLl95O1xcblxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3kgPSB2YWx1ZTtcXG5cXHRcXHRcXHRcXHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR6OiB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuX3o7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IHZhbHVlO1xcblxcdFxcdFxcdFxcdHRoaXMub25DaGFuZ2VDYWxsYmFjaygpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG9yZGVyOiB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuX29yZGVyO1xcblxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX29yZGVyID0gdmFsdWU7XFxuXFx0XFx0XFx0XFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggRXVsZXIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0aXNFdWxlcjogdHJ1ZSxcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggeCwgeSwgeiwgb3JkZXIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5feCA9IHg7XFxuXFx0XFx0XFx0dGhpcy5feSA9IHk7XFxuXFx0XFx0XFx0dGhpcy5feiA9IHo7XFxuXFx0XFx0XFx0dGhpcy5fb3JkZXIgPSBvcmRlciB8fCB0aGlzLl9vcmRlcjtcXG5cXG5cXHRcXHRcXHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCB0aGlzLl94LCB0aGlzLl95LCB0aGlzLl96LCB0aGlzLl9vcmRlciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBldWxlciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLl94ID0gZXVsZXIuX3g7XFxuXFx0XFx0XFx0dGhpcy5feSA9IGV1bGVyLl95O1xcblxcdFxcdFxcdHRoaXMuX3ogPSBldWxlci5fejtcXG5cXHRcXHRcXHR0aGlzLl9vcmRlciA9IGV1bGVyLl9vcmRlcjtcXG5cXG5cXHRcXHRcXHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21Sb3RhdGlvbk1hdHJpeDogZnVuY3Rpb24gKCBtLCBvcmRlciwgdXBkYXRlICkge1xcblxcblxcdFxcdFxcdHZhciBjbGFtcCA9IF9NYXRoLmNsYW1wO1xcblxcblxcdFxcdFxcdC8vIGFzc3VtZXMgdGhlIHVwcGVyIDN4MyBvZiBtIGlzIGEgcHVyZSByb3RhdGlvbiBtYXRyaXggKGkuZSwgdW5zY2FsZWQpXFxuXFxuXFx0XFx0XFx0dmFyIHRlID0gbS5lbGVtZW50cztcXG5cXHRcXHRcXHR2YXIgbTExID0gdGVbIDAgXSwgbTEyID0gdGVbIDQgXSwgbTEzID0gdGVbIDggXTtcXG5cXHRcXHRcXHR2YXIgbTIxID0gdGVbIDEgXSwgbTIyID0gdGVbIDUgXSwgbTIzID0gdGVbIDkgXTtcXG5cXHRcXHRcXHR2YXIgbTMxID0gdGVbIDIgXSwgbTMyID0gdGVbIDYgXSwgbTMzID0gdGVbIDEwIF07XFxuXFxuXFx0XFx0XFx0b3JkZXIgPSBvcmRlciB8fCB0aGlzLl9vcmRlcjtcXG5cXG5cXHRcXHRcXHRpZiAoIG9yZGVyID09PSAnWFlaJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl95ID0gTWF0aC5hc2luKCBjbGFtcCggbTEzLCAtIDEsIDEgKSApO1xcblxcblxcdFxcdFxcdFxcdGlmICggTWF0aC5hYnMoIG0xMyApIDwgMC45OTk5OSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl94ID0gTWF0aC5hdGFuMiggLSBtMjMsIG0zMyApO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3ogPSBNYXRoLmF0YW4yKCAtIG0xMiwgbTExICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl94ID0gTWF0aC5hdGFuMiggbTMyLCBtMjIgKTtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl96ID0gMDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggb3JkZXIgPT09ICdZWFonICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3ggPSBNYXRoLmFzaW4oIC0gY2xhbXAoIG0yMywgLSAxLCAxICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIE1hdGguYWJzKCBtMjMgKSA8IDAuOTk5OTkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feSA9IE1hdGguYXRhbjIoIG0xMywgbTMzICk7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feiA9IE1hdGguYXRhbjIoIG0yMSwgbTIyICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl95ID0gTWF0aC5hdGFuMiggLSBtMzEsIG0xMSApO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3ogPSAwO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBvcmRlciA9PT0gJ1pYWScgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5feCA9IE1hdGguYXNpbiggY2xhbXAoIG0zMiwgLSAxLCAxICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIE1hdGguYWJzKCBtMzIgKSA8IDAuOTk5OTkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feSA9IE1hdGguYXRhbjIoIC0gbTMxLCBtMzMgKTtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl96ID0gTWF0aC5hdGFuMiggLSBtMTIsIG0yMiApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feSA9IDA7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feiA9IE1hdGguYXRhbjIoIG0yMSwgbTExICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG9yZGVyID09PSAnWllYJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl95ID0gTWF0aC5hc2luKCAtIGNsYW1wKCBtMzEsIC0gMSwgMSApICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBNYXRoLmFicyggbTMxICkgPCAwLjk5OTk5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3ggPSBNYXRoLmF0YW4yKCBtMzIsIG0zMyApO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3ogPSBNYXRoLmF0YW4yKCBtMjEsIG0xMSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feCA9IDA7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feiA9IE1hdGguYXRhbjIoIC0gbTEyLCBtMjIgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggb3JkZXIgPT09ICdZWlgnICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3ogPSBNYXRoLmFzaW4oIGNsYW1wKCBtMjEsIC0gMSwgMSApICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBNYXRoLmFicyggbTIxICkgPCAwLjk5OTk5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3ggPSBNYXRoLmF0YW4yKCAtIG0yMywgbTIyICk7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feSA9IE1hdGguYXRhbjIoIC0gbTMxLCBtMTEgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3ggPSAwO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3kgPSBNYXRoLmF0YW4yKCBtMTMsIG0zMyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBvcmRlciA9PT0gJ1haWScgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5feiA9IE1hdGguYXNpbiggLSBjbGFtcCggbTEyLCAtIDEsIDEgKSApO1xcblxcblxcdFxcdFxcdFxcdGlmICggTWF0aC5hYnMoIG0xMiApIDwgMC45OTk5OSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl94ID0gTWF0aC5hdGFuMiggbTMyLCBtMjIgKTtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl95ID0gTWF0aC5hdGFuMiggbTEzLCBtMTEgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3ggPSBNYXRoLmF0YW4yKCAtIG0yMywgbTMzICk7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5feSA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuRXVsZXI6IC5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBnaXZlbiB1bnN1cHBvcnRlZCBvcmRlcjogJyArIG9yZGVyICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuX29yZGVyID0gb3JkZXI7XFxuXFxuXFx0XFx0XFx0aWYgKCB1cGRhdGUgIT09IGZhbHNlICkgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tUXVhdGVybmlvbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBtYXRyaXggPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBzZXRGcm9tUXVhdGVybmlvbiggcSwgb3JkZXIsIHVwZGF0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRtYXRyaXgubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oIHEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5zZXRGcm9tUm90YXRpb25NYXRyaXgoIG1hdHJpeCwgb3JkZXIsIHVwZGF0ZSApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHNldEZyb21WZWN0b3IzOiBmdW5jdGlvbiAoIHYsIG9yZGVyICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnNldCggdi54LCB2LnksIHYueiwgb3JkZXIgfHwgdGhpcy5fb3JkZXIgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJlb3JkZXI6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyBXQVJOSU5HOiB0aGlzIGRpc2NhcmRzIHJldm9sdXRpb24gaW5mb3JtYXRpb24gLWJob3VzdG9uXFxuXFxuXFx0XFx0XFx0dmFyIHEgPSBuZXcgUXVhdGVybmlvbigpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiByZW9yZGVyKCBuZXdPcmRlciApIHtcXG5cXG5cXHRcXHRcXHRcXHRxLnNldEZyb21FdWxlciggdGhpcyApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnNldEZyb21RdWF0ZXJuaW9uKCBxLCBuZXdPcmRlciApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGVxdWFsczogZnVuY3Rpb24gKCBldWxlciApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCBldWxlci5feCA9PT0gdGhpcy5feCApICYmICggZXVsZXIuX3kgPT09IHRoaXMuX3kgKSAmJiAoIGV1bGVyLl96ID09PSB0aGlzLl96ICkgJiYgKCBldWxlci5fb3JkZXIgPT09IHRoaXMuX29yZGVyICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tQXJyYXk6IGZ1bmN0aW9uICggYXJyYXkgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5feCA9IGFycmF5WyAwIF07XFxuXFx0XFx0XFx0dGhpcy5feSA9IGFycmF5WyAxIF07XFxuXFx0XFx0XFx0dGhpcy5feiA9IGFycmF5WyAyIF07XFxuXFx0XFx0XFx0aWYgKCBhcnJheVsgMyBdICE9PSB1bmRlZmluZWQgKSB0aGlzLl9vcmRlciA9IGFycmF5WyAzIF07XFxuXFxuXFx0XFx0XFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0FycmF5OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBhcnJheSA9PT0gdW5kZWZpbmVkICkgYXJyYXkgPSBbXTtcXG5cXHRcXHRcXHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHRhcnJheVsgb2Zmc2V0IF0gPSB0aGlzLl94O1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAxIF0gPSB0aGlzLl95O1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAyIF0gPSB0aGlzLl96O1xcblxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKyAzIF0gPSB0aGlzLl9vcmRlcjtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYXJyYXk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b1ZlY3RvcjM6IGZ1bmN0aW9uICggb3B0aW9uYWxSZXN1bHQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBvcHRpb25hbFJlc3VsdCApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gb3B0aW9uYWxSZXN1bHQuc2V0KCB0aGlzLl94LCB0aGlzLl95LCB0aGlzLl96ICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gbmV3IFZlY3RvcjMoIHRoaXMuX3gsIHRoaXMuX3ksIHRoaXMuX3ogKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRvbkNoYW5nZTogZnVuY3Rpb24gKCBjYWxsYmFjayApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBjYWxsYmFjaztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG9uQ2hhbmdlQ2FsbGJhY2s6IGZ1bmN0aW9uICgpIHt9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTGF5ZXJzKCkge1xcblxcblxcdFxcdHRoaXMubWFzayA9IDEgfCAwO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBMYXllcnMucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIGNoYW5uZWwgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYXNrID0gMSA8PCBjaGFubmVsIHwgMDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGVuYWJsZTogZnVuY3Rpb24gKCBjaGFubmVsICkge1xcblxcblxcdFxcdFxcdHRoaXMubWFzayB8PSAxIDw8IGNoYW5uZWwgfCAwO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dG9nZ2xlOiBmdW5jdGlvbiAoIGNoYW5uZWwgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYXNrIF49IDEgPDwgY2hhbm5lbCB8IDA7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXNhYmxlOiBmdW5jdGlvbiAoIGNoYW5uZWwgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYXNrICY9IH4gKCAxIDw8IGNoYW5uZWwgfCAwICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0ZXN0OiBmdW5jdGlvbiAoIGxheWVycyApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gKCB0aGlzLm1hc2sgJiBsYXllcnMubWFzayApICE9PSAwO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICogQGF1dGhvciBlbGVwaGFudGF0d29yayAvIHd3dy5lbGVwaGFudGF0d29yay5jaFxcblxcdCAqL1xcblxcblxcdHZhciBvYmplY3QzRElkID0gMDtcXG5cXG5cXHRmdW5jdGlvbiBPYmplY3QzRCgpIHtcXG5cXG5cXHRcXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHRoaXMsICdpZCcsIHsgdmFsdWU6IG9iamVjdDNESWQgKysgfSApO1xcblxcblxcdFxcdHRoaXMudXVpZCA9IF9NYXRoLmdlbmVyYXRlVVVJRCgpO1xcblxcblxcdFxcdHRoaXMubmFtZSA9ICcnO1xcblxcdFxcdHRoaXMudHlwZSA9ICdPYmplY3QzRCc7XFxuXFxuXFx0XFx0dGhpcy5wYXJlbnQgPSBudWxsO1xcblxcdFxcdHRoaXMuY2hpbGRyZW4gPSBbXTtcXG5cXG5cXHRcXHR0aGlzLnVwID0gT2JqZWN0M0QuRGVmYXVsdFVwLmNsb25lKCk7XFxuXFxuXFx0XFx0dmFyIHBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgcm90YXRpb24gPSBuZXcgRXVsZXIoKTtcXG5cXHRcXHR2YXIgcXVhdGVybmlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XFxuXFx0XFx0dmFyIHNjYWxlID0gbmV3IFZlY3RvcjMoIDEsIDEsIDEgKTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBvblJvdGF0aW9uQ2hhbmdlKCkge1xcblxcblxcdFxcdFxcdHF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKCByb3RhdGlvbiwgZmFsc2UgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gb25RdWF0ZXJuaW9uQ2hhbmdlKCkge1xcblxcblxcdFxcdFxcdHJvdGF0aW9uLnNldEZyb21RdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uLCB1bmRlZmluZWQsIGZhbHNlICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJvdGF0aW9uLm9uQ2hhbmdlKCBvblJvdGF0aW9uQ2hhbmdlICk7XFxuXFx0XFx0cXVhdGVybmlvbi5vbkNoYW5nZSggb25RdWF0ZXJuaW9uQ2hhbmdlICk7XFxuXFxuXFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIHRoaXMsIHtcXG5cXHRcXHRcXHRwb3NpdGlvbjoge1xcblxcdFxcdFxcdFxcdGVudW1lcmFibGU6IHRydWUsXFxuXFx0XFx0XFx0XFx0dmFsdWU6IHBvc2l0aW9uXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRyb3RhdGlvbjoge1xcblxcdFxcdFxcdFxcdGVudW1lcmFibGU6IHRydWUsXFxuXFx0XFx0XFx0XFx0dmFsdWU6IHJvdGF0aW9uXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRxdWF0ZXJuaW9uOiB7XFxuXFx0XFx0XFx0XFx0ZW51bWVyYWJsZTogdHJ1ZSxcXG5cXHRcXHRcXHRcXHR2YWx1ZTogcXVhdGVybmlvblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2NhbGU6IHtcXG5cXHRcXHRcXHRcXHRlbnVtZXJhYmxlOiB0cnVlLFxcblxcdFxcdFxcdFxcdHZhbHVlOiBzY2FsZVxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0bW9kZWxWaWV3TWF0cml4OiB7XFxuXFx0XFx0XFx0XFx0dmFsdWU6IG5ldyBNYXRyaXg0KClcXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdG5vcm1hbE1hdHJpeDoge1xcblxcdFxcdFxcdFxcdHZhbHVlOiBuZXcgTWF0cml4MygpXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0gKTtcXG5cXG5cXHRcXHR0aGlzLm1hdHJpeCA9IG5ldyBNYXRyaXg0KCk7XFxuXFx0XFx0dGhpcy5tYXRyaXhXb3JsZCA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0dGhpcy5tYXRyaXhBdXRvVXBkYXRlID0gT2JqZWN0M0QuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU7XFxuXFx0XFx0dGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5sYXllcnMgPSBuZXcgTGF5ZXJzKCk7XFxuXFx0XFx0dGhpcy52aXNpYmxlID0gdHJ1ZTtcXG5cXG5cXHRcXHR0aGlzLmNhc3RTaGFkb3cgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLnJlY2VpdmVTaGFkb3cgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLmZydXN0dW1DdWxsZWQgPSB0cnVlO1xcblxcdFxcdHRoaXMucmVuZGVyT3JkZXIgPSAwO1xcblxcblxcdFxcdHRoaXMudXNlckRhdGEgPSB7fTtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0M0QuRGVmYXVsdFVwID0gbmV3IFZlY3RvcjMoIDAsIDEsIDAgKTtcXG5cXHRPYmplY3QzRC5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0T2JqZWN0M0QucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IE9iamVjdDNELFxcblxcblxcdFxcdGlzT2JqZWN0M0Q6IHRydWUsXFxuXFxuXFx0XFx0b25CZWZvcmVSZW5kZXI6IGZ1bmN0aW9uICgpIHt9LFxcblxcdFxcdG9uQWZ0ZXJSZW5kZXI6IGZ1bmN0aW9uICgpIHt9LFxcblxcblxcdFxcdGFwcGx5TWF0cml4OiBmdW5jdGlvbiAoIG1hdHJpeCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm1hdHJpeC5tdWx0aXBseU1hdHJpY2VzKCBtYXRyaXgsIHRoaXMubWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYXRyaXguZGVjb21wb3NlKCB0aGlzLnBvc2l0aW9uLCB0aGlzLnF1YXRlcm5pb24sIHRoaXMuc2NhbGUgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFwcGx5UXVhdGVybmlvbjogZnVuY3Rpb24gKCBxICkge1xcblxcblxcdFxcdFxcdHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSggcSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Um90YXRpb25Gcm9tQXhpc0FuZ2xlOiBmdW5jdGlvbiAoIGF4aXMsIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdC8vIGFzc3VtZXMgYXhpcyBpcyBub3JtYWxpemVkXFxuXFxuXFx0XFx0XFx0dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUoIGF4aXMsIGFuZ2xlICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRSb3RhdGlvbkZyb21FdWxlcjogZnVuY3Rpb24gKCBldWxlciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKCBldWxlciwgdHJ1ZSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Um90YXRpb25Gcm9tTWF0cml4OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0Ly8gYXNzdW1lcyB0aGUgdXBwZXIgM3gzIG9mIG0gaXMgYSBwdXJlIHJvdGF0aW9uIG1hdHJpeCAoaS5lLCB1bnNjYWxlZClcXG5cXG5cXHRcXHRcXHR0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KCBtICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uOiBmdW5jdGlvbiAoIHEgKSB7XFxuXFxuXFx0XFx0XFx0Ly8gYXNzdW1lcyBxIGlzIG5vcm1hbGl6ZWRcXG5cXG5cXHRcXHRcXHR0aGlzLnF1YXRlcm5pb24uY29weSggcSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cm90YXRlT25BeGlzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gcm90YXRlIG9iamVjdCBvbiBheGlzIGluIG9iamVjdCBzcGFjZVxcblxcdFxcdFxcdC8vIGF4aXMgaXMgYXNzdW1lZCB0byBiZSBub3JtYWxpemVkXFxuXFxuXFx0XFx0XFx0dmFyIHExID0gbmV3IFF1YXRlcm5pb24oKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gcm90YXRlT25BeGlzKCBheGlzLCBhbmdsZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRxMS5zZXRGcm9tQXhpc0FuZ2xlKCBheGlzLCBhbmdsZSApO1xcblxcblxcdFxcdFxcdFxcdHRoaXMucXVhdGVybmlvbi5tdWx0aXBseSggcTEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRyb3RhdGVPbldvcmxkQXhpczogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIHJvdGF0ZSBvYmplY3Qgb24gYXhpcyBpbiB3b3JsZCBzcGFjZVxcblxcdFxcdFxcdC8vIGF4aXMgaXMgYXNzdW1lZCB0byBiZSBub3JtYWxpemVkXFxuXFx0XFx0XFx0Ly8gbWV0aG9kIGFzc3VtZXMgbm8gcm90YXRlZCBwYXJlbnRcXG5cXG5cXHRcXHRcXHR2YXIgcTEgPSBuZXcgUXVhdGVybmlvbigpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiByb3RhdGVPbldvcmxkQXhpcyggYXhpcywgYW5nbGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cTEuc2V0RnJvbUF4aXNBbmdsZSggYXhpcywgYW5nbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoIHExICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0cm90YXRlWDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCAxLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJvdGF0ZVgoIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyggdjEsIGFuZ2xlICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0cm90YXRlWTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCAwLCAxLCAwICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJvdGF0ZVkoIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyggdjEsIGFuZ2xlICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0cm90YXRlWjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCAwLCAwLCAxICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJvdGF0ZVooIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyggdjEsIGFuZ2xlICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0dHJhbnNsYXRlT25BeGlzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gdHJhbnNsYXRlIG9iamVjdCBieSBkaXN0YW5jZSBhbG9uZyBheGlzIGluIG9iamVjdCBzcGFjZVxcblxcdFxcdFxcdC8vIGF4aXMgaXMgYXNzdW1lZCB0byBiZSBub3JtYWxpemVkXFxuXFxuXFx0XFx0XFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gdHJhbnNsYXRlT25BeGlzKCBheGlzLCBkaXN0YW5jZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2MS5jb3B5KCBheGlzICkuYXBwbHlRdWF0ZXJuaW9uKCB0aGlzLnF1YXRlcm5pb24gKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnBvc2l0aW9uLmFkZCggdjEubXVsdGlwbHlTY2FsYXIoIGRpc3RhbmNlICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHR0cmFuc2xhdGVYOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoIDEsIDAsIDAgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gdHJhbnNsYXRlWCggZGlzdGFuY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKCB2MSwgZGlzdGFuY2UgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHR0cmFuc2xhdGVZOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoIDAsIDEsIDAgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gdHJhbnNsYXRlWSggZGlzdGFuY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKCB2MSwgZGlzdGFuY2UgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHR0cmFuc2xhdGVaOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoIDAsIDAsIDEgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gdHJhbnNsYXRlWiggZGlzdGFuY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKCB2MSwgZGlzdGFuY2UgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRsb2NhbFRvV29ybGQ6IGZ1bmN0aW9uICggdmVjdG9yICkge1xcblxcblxcdFxcdFxcdHJldHVybiB2ZWN0b3IuYXBwbHlNYXRyaXg0KCB0aGlzLm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR3b3JsZFRvTG9jYWw6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgbTEgPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiB3b3JsZFRvTG9jYWwoIHZlY3RvciApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdmVjdG9yLmFwcGx5TWF0cml4NCggbTEuZ2V0SW52ZXJzZSggdGhpcy5tYXRyaXhXb3JsZCApICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0bG9va0F0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gVGhpcyBtZXRob2QgZG9lcyBub3Qgc3VwcG9ydCBvYmplY3RzIHdpdGggcm90YXRlZCBhbmQvb3IgdHJhbnNsYXRlZCBwYXJlbnQocylcXG5cXG5cXHRcXHRcXHR2YXIgbTEgPSBuZXcgTWF0cml4NCgpO1xcblxcdFxcdFxcdHZhciB2ZWN0b3IgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBsb29rQXQoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB4LmlzVmVjdG9yMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZWN0b3IuY29weSggeCApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVjdG9yLnNldCggeCwgeSwgeiApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHRoaXMuaXNDYW1lcmEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bTEubG9va0F0KCB0aGlzLnBvc2l0aW9uLCB2ZWN0b3IsIHRoaXMudXAgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdG0xLmxvb2tBdCggdmVjdG9yLCB0aGlzLnBvc2l0aW9uLCB0aGlzLnVwICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgoIG0xICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0YWRkOiBmdW5jdGlvbiAoIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPiAxICkge1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5hZGQoIGFyZ3VtZW50c1sgaSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG9iamVjdCA9PT0gdGhpcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCBcXFwiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3QgY2FuJ3QgYmUgYWRkZWQgYXMgYSBjaGlsZCBvZiBpdHNlbGYuXFxcIiwgb2JqZWN0ICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggKCBvYmplY3QgJiYgb2JqZWN0LmlzT2JqZWN0M0QgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9iamVjdC5wYXJlbnQgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0b2JqZWN0LnBhcmVudC5yZW1vdmUoIG9iamVjdCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRvYmplY3QucGFyZW50ID0gdGhpcztcXG5cXHRcXHRcXHRcXHRvYmplY3QuZGlzcGF0Y2hFdmVudCggeyB0eXBlOiAnYWRkZWQnIH0gKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmNoaWxkcmVuLnB1c2goIG9iamVjdCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggXFxcIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC5cXFwiLCBvYmplY3QgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyZW1vdmU6IGZ1bmN0aW9uICggb2JqZWN0ICkge1xcblxcblxcdFxcdFxcdGlmICggYXJndW1lbnRzLmxlbmd0aCA+IDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnJlbW92ZSggYXJndW1lbnRzWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBpbmRleCA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZiggb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBpbmRleCAhPT0gLSAxICkge1xcblxcblxcdFxcdFxcdFxcdG9iamVjdC5wYXJlbnQgPSBudWxsO1xcblxcblxcdFxcdFxcdFxcdG9iamVjdC5kaXNwYXRjaEV2ZW50KCB7IHR5cGU6ICdyZW1vdmVkJyB9ICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5jaGlsZHJlbi5zcGxpY2UoIGluZGV4LCAxICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0T2JqZWN0QnlJZDogZnVuY3Rpb24gKCBpZCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCAnaWQnLCBpZCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0T2JqZWN0QnlOYW1lOiBmdW5jdGlvbiAoIG5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSggJ25hbWUnLCBuYW1lICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRPYmplY3RCeVByb3BlcnR5OiBmdW5jdGlvbiAoIG5hbWUsIHZhbHVlICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpc1sgbmFtZSBdID09PSB2YWx1ZSApIHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuWyBpIF07XFxuXFx0XFx0XFx0XFx0dmFyIG9iamVjdCA9IGNoaWxkLmdldE9iamVjdEJ5UHJvcGVydHkoIG5hbWUsIHZhbHVlICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvYmplY3QgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gb2JqZWN0O1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHVuZGVmaW5lZDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldFdvcmxkUG9zaXRpb246IGZ1bmN0aW9uICggb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0dGhpcy51cGRhdGVNYXRyaXhXb3JsZCggdHJ1ZSApO1xcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCB0aGlzLm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRXb3JsZFF1YXRlcm5pb246IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgcG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBzY2FsZSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGdldFdvcmxkUXVhdGVybmlvbiggb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBRdWF0ZXJuaW9uKCk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy51cGRhdGVNYXRyaXhXb3JsZCggdHJ1ZSApO1xcblxcblxcdFxcdFxcdFxcdHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKCBwb3NpdGlvbiwgcmVzdWx0LCBzY2FsZSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0Z2V0V29ybGRSb3RhdGlvbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBxdWF0ZXJuaW9uID0gbmV3IFF1YXRlcm5pb24oKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gZ2V0V29ybGRSb3RhdGlvbiggb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBFdWxlcigpO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZ2V0V29ybGRRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHJlc3VsdC5zZXRGcm9tUXVhdGVybmlvbiggcXVhdGVybmlvbiwgdGhpcy5yb3RhdGlvbi5vcmRlciwgZmFsc2UgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRnZXRXb3JsZFNjYWxlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgcXVhdGVybmlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGdldFdvcmxkU2NhbGUoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdFxcdHRoaXMudXBkYXRlTWF0cml4V29ybGQoIHRydWUgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZSggcG9zaXRpb24sIHF1YXRlcm5pb24sIHJlc3VsdCApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0Z2V0V29ybGREaXJlY3Rpb246IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgcXVhdGVybmlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGdldFdvcmxkRGlyZWN0aW9uKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmdldFdvcmxkUXVhdGVybmlvbiggcXVhdGVybmlvbiApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQuc2V0KCAwLCAwLCAxICkuYXBwbHlRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0cmF5Y2FzdDogZnVuY3Rpb24gKCkge30sXFxuXFxuXFx0XFx0dHJhdmVyc2U6IGZ1bmN0aW9uICggY2FsbGJhY2sgKSB7XFxuXFxuXFx0XFx0XFx0Y2FsbGJhY2soIHRoaXMgKTtcXG5cXG5cXHRcXHRcXHR2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y2hpbGRyZW5bIGkgXS50cmF2ZXJzZSggY2FsbGJhY2sgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0cmF2ZXJzZVZpc2libGU6IGZ1bmN0aW9uICggY2FsbGJhY2sgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpc2libGUgPT09IGZhbHNlICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdGNhbGxiYWNrKCB0aGlzICk7XFxuXFxuXFx0XFx0XFx0dmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGNoaWxkcmVuWyBpIF0udHJhdmVyc2VWaXNpYmxlKCBjYWxsYmFjayApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRyYXZlcnNlQW5jZXN0b3JzOiBmdW5jdGlvbiAoIGNhbGxiYWNrICkge1xcblxcblxcdFxcdFxcdHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudDtcXG5cXG5cXHRcXHRcXHRpZiAoIHBhcmVudCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjYWxsYmFjayggcGFyZW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0cGFyZW50LnRyYXZlcnNlQW5jZXN0b3JzKCBjYWxsYmFjayApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHVwZGF0ZU1hdHJpeDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMubWF0cml4LmNvbXBvc2UoIHRoaXMucG9zaXRpb24sIHRoaXMucXVhdGVybmlvbiwgdGhpcy5zY2FsZSApO1xcblxcblxcdFxcdFxcdHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR1cGRhdGVNYXRyaXhXb3JsZDogZnVuY3Rpb24gKCBmb3JjZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMubWF0cml4QXV0b1VwZGF0ZSApIHRoaXMudXBkYXRlTWF0cml4KCk7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgfHwgZm9yY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0aGlzLnBhcmVudCA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLm1hdHJpeFdvcmxkLmNvcHkoIHRoaXMubWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXMoIHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLCB0aGlzLm1hdHJpeCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRcXHRmb3JjZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHVwZGF0ZSBjaGlsZHJlblxcblxcblxcdFxcdFxcdHZhciBjaGlsZHJlbiA9IHRoaXMuY2hpbGRyZW47XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRjaGlsZHJlblsgaSBdLnVwZGF0ZU1hdHJpeFdvcmxkKCBmb3JjZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvSlNPTjogZnVuY3Rpb24gKCBtZXRhICkge1xcblxcblxcdFxcdFxcdC8vIG1ldGEgaXMgYSBzdHJpbmcgd2hlbiBjYWxsZWQgZnJvbSBKU09OLnN0cmluZ2lmeVxcblxcdFxcdFxcdHZhciBpc1Jvb3RPYmplY3QgPSAoIG1ldGEgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgbWV0YSA9PT0gJ3N0cmluZycgKTtcXG5cXG5cXHRcXHRcXHR2YXIgb3V0cHV0ID0ge307XFxuXFxuXFx0XFx0XFx0Ly8gbWV0YSBpcyBhIGhhc2ggdXNlZCB0byBjb2xsZWN0IGdlb21ldHJpZXMsIG1hdGVyaWFscy5cXG5cXHRcXHRcXHQvLyBub3QgcHJvdmlkaW5nIGl0IGltcGxpZXMgdGhhdCB0aGlzIGlzIHRoZSByb290IG9iamVjdFxcblxcdFxcdFxcdC8vIGJlaW5nIHNlcmlhbGl6ZWQuXFxuXFx0XFx0XFx0aWYgKCBpc1Jvb3RPYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gaW5pdGlhbGl6ZSBtZXRhIG9ialxcblxcdFxcdFxcdFxcdG1ldGEgPSB7XFxuXFx0XFx0XFx0XFx0XFx0Z2VvbWV0cmllczoge30sXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWxzOiB7fSxcXG5cXHRcXHRcXHRcXHRcXHR0ZXh0dXJlczoge30sXFxuXFx0XFx0XFx0XFx0XFx0aW1hZ2VzOiB7fSxcXG5cXHRcXHRcXHRcXHRcXHRzaGFwZXM6IHt9XFxuXFx0XFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHRcXHRvdXRwdXQubWV0YWRhdGEgPSB7XFxuXFx0XFx0XFx0XFx0XFx0dmVyc2lvbjogNC41LFxcblxcdFxcdFxcdFxcdFxcdHR5cGU6ICdPYmplY3QnLFxcblxcdFxcdFxcdFxcdFxcdGdlbmVyYXRvcjogJ09iamVjdDNELnRvSlNPTidcXG5cXHRcXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBzdGFuZGFyZCBPYmplY3QzRCBzZXJpYWxpemF0aW9uXFxuXFxuXFx0XFx0XFx0dmFyIG9iamVjdCA9IHt9O1xcblxcblxcdFxcdFxcdG9iamVjdC51dWlkID0gdGhpcy51dWlkO1xcblxcdFxcdFxcdG9iamVjdC50eXBlID0gdGhpcy50eXBlO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5uYW1lICE9PSAnJyApIG9iamVjdC5uYW1lID0gdGhpcy5uYW1lO1xcblxcdFxcdFxcdGlmICggdGhpcy5jYXN0U2hhZG93ID09PSB0cnVlICkgb2JqZWN0LmNhc3RTaGFkb3cgPSB0cnVlO1xcblxcdFxcdFxcdGlmICggdGhpcy5yZWNlaXZlU2hhZG93ID09PSB0cnVlICkgb2JqZWN0LnJlY2VpdmVTaGFkb3cgPSB0cnVlO1xcblxcdFxcdFxcdGlmICggdGhpcy52aXNpYmxlID09PSBmYWxzZSApIG9iamVjdC52aXNpYmxlID0gZmFsc2U7XFxuXFx0XFx0XFx0aWYgKCBKU09OLnN0cmluZ2lmeSggdGhpcy51c2VyRGF0YSApICE9PSAne30nICkgb2JqZWN0LnVzZXJEYXRhID0gdGhpcy51c2VyRGF0YTtcXG5cXG5cXHRcXHRcXHRvYmplY3QubWF0cml4ID0gdGhpcy5tYXRyaXgudG9BcnJheSgpO1xcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gc2VyaWFsaXplKCBsaWJyYXJ5LCBlbGVtZW50ICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggbGlicmFyeVsgZWxlbWVudC51dWlkIF0gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsaWJyYXJ5WyBlbGVtZW50LnV1aWQgXSA9IGVsZW1lbnQudG9KU09OKCBtZXRhICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiBlbGVtZW50LnV1aWQ7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5nZW9tZXRyeSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdG9iamVjdC5nZW9tZXRyeSA9IHNlcmlhbGl6ZSggbWV0YS5nZW9tZXRyaWVzLCB0aGlzLmdlb21ldHJ5ICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHBhcmFtZXRlcnMgPSB0aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBwYXJhbWV0ZXJzICE9PSB1bmRlZmluZWQgJiYgcGFyYW1ldGVycy5zaGFwZXMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgc2hhcGVzID0gcGFyYW1ldGVycy5zaGFwZXM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBBcnJheS5pc0FycmF5KCBzaGFwZXMgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBzaGFwZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgc2hhcGUgPSBzaGFwZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzZXJpYWxpemUoIG1ldGEuc2hhcGVzLCBzaGFwZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHNlcmlhbGl6ZSggbWV0YS5zaGFwZXMsIHNoYXBlcyApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5tYXRlcmlhbCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggQXJyYXkuaXNBcnJheSggdGhpcy5tYXRlcmlhbCApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB1dWlkcyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMubWF0ZXJpYWwubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1dWlkcy5wdXNoKCBzZXJpYWxpemUoIG1ldGEubWF0ZXJpYWxzLCB0aGlzLm1hdGVyaWFsWyBpIF0gKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRvYmplY3QubWF0ZXJpYWwgPSB1dWlkcztcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdG9iamVjdC5tYXRlcmlhbCA9IHNlcmlhbGl6ZSggbWV0YS5tYXRlcmlhbHMsIHRoaXMubWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0b2JqZWN0LmNoaWxkcmVuID0gW107XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0b2JqZWN0LmNoaWxkcmVuLnB1c2goIHRoaXMuY2hpbGRyZW5bIGkgXS50b0pTT04oIG1ldGEgKS5vYmplY3QgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggaXNSb290T2JqZWN0ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBnZW9tZXRyaWVzID0gZXh0cmFjdEZyb21DYWNoZSggbWV0YS5nZW9tZXRyaWVzICk7XFxuXFx0XFx0XFx0XFx0dmFyIG1hdGVyaWFscyA9IGV4dHJhY3RGcm9tQ2FjaGUoIG1ldGEubWF0ZXJpYWxzICk7XFxuXFx0XFx0XFx0XFx0dmFyIHRleHR1cmVzID0gZXh0cmFjdEZyb21DYWNoZSggbWV0YS50ZXh0dXJlcyApO1xcblxcdFxcdFxcdFxcdHZhciBpbWFnZXMgPSBleHRyYWN0RnJvbUNhY2hlKCBtZXRhLmltYWdlcyApO1xcblxcdFxcdFxcdFxcdHZhciBzaGFwZXMgPSBleHRyYWN0RnJvbUNhY2hlKCBtZXRhLnNoYXBlcyApO1xcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cmllcy5sZW5ndGggPiAwICkgb3V0cHV0Lmdlb21ldHJpZXMgPSBnZW9tZXRyaWVzO1xcblxcdFxcdFxcdFxcdGlmICggbWF0ZXJpYWxzLmxlbmd0aCA+IDAgKSBvdXRwdXQubWF0ZXJpYWxzID0gbWF0ZXJpYWxzO1xcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZXMubGVuZ3RoID4gMCApIG91dHB1dC50ZXh0dXJlcyA9IHRleHR1cmVzO1xcblxcdFxcdFxcdFxcdGlmICggaW1hZ2VzLmxlbmd0aCA+IDAgKSBvdXRwdXQuaW1hZ2VzID0gaW1hZ2VzO1xcblxcdFxcdFxcdFxcdGlmICggc2hhcGVzLmxlbmd0aCA+IDAgKSBvdXRwdXQuc2hhcGVzID0gc2hhcGVzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRvdXRwdXQub2JqZWN0ID0gb2JqZWN0O1xcblxcblxcdFxcdFxcdHJldHVybiBvdXRwdXQ7XFxuXFxuXFx0XFx0XFx0Ly8gZXh0cmFjdCBkYXRhIGZyb20gdGhlIGNhY2hlIGhhc2hcXG5cXHRcXHRcXHQvLyByZW1vdmUgbWV0YWRhdGEgb24gZWFjaCBpdGVtXFxuXFx0XFx0XFx0Ly8gYW5kIHJldHVybiBhcyBhcnJheVxcblxcdFxcdFxcdGZ1bmN0aW9uIGV4dHJhY3RGcm9tQ2FjaGUoIGNhY2hlICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB2YWx1ZXMgPSBbXTtcXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIga2V5IGluIGNhY2hlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBkYXRhID0gY2FjaGVbIGtleSBdO1xcblxcdFxcdFxcdFxcdFxcdGRlbGV0ZSBkYXRhLm1ldGFkYXRhO1xcblxcdFxcdFxcdFxcdFxcdHZhbHVlcy5wdXNoKCBkYXRhICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdHJldHVybiB2YWx1ZXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICggcmVjdXJzaXZlICkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkoIHRoaXMsIHJlY3Vyc2l2ZSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UsIHJlY3Vyc2l2ZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHJlY3Vyc2l2ZSA9PT0gdW5kZWZpbmVkICkgcmVjdXJzaXZlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR0aGlzLm5hbWUgPSBzb3VyY2UubmFtZTtcXG5cXG5cXHRcXHRcXHR0aGlzLnVwLmNvcHkoIHNvdXJjZS51cCApO1xcblxcblxcdFxcdFxcdHRoaXMucG9zaXRpb24uY29weSggc291cmNlLnBvc2l0aW9uICk7XFxuXFx0XFx0XFx0dGhpcy5xdWF0ZXJuaW9uLmNvcHkoIHNvdXJjZS5xdWF0ZXJuaW9uICk7XFxuXFx0XFx0XFx0dGhpcy5zY2FsZS5jb3B5KCBzb3VyY2Uuc2NhbGUgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLm1hdHJpeC5jb3B5KCBzb3VyY2UubWF0cml4ICk7XFxuXFx0XFx0XFx0dGhpcy5tYXRyaXhXb3JsZC5jb3B5KCBzb3VyY2UubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLm1hdHJpeEF1dG9VcGRhdGUgPSBzb3VyY2UubWF0cml4QXV0b1VwZGF0ZTtcXG5cXHRcXHRcXHR0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgPSBzb3VyY2UubWF0cml4V29ybGROZWVkc1VwZGF0ZTtcXG5cXG5cXHRcXHRcXHR0aGlzLmxheWVycy5tYXNrID0gc291cmNlLmxheWVycy5tYXNrO1xcblxcdFxcdFxcdHRoaXMudmlzaWJsZSA9IHNvdXJjZS52aXNpYmxlO1xcblxcblxcdFxcdFxcdHRoaXMuY2FzdFNoYWRvdyA9IHNvdXJjZS5jYXN0U2hhZG93O1xcblxcdFxcdFxcdHRoaXMucmVjZWl2ZVNoYWRvdyA9IHNvdXJjZS5yZWNlaXZlU2hhZG93O1xcblxcblxcdFxcdFxcdHRoaXMuZnJ1c3R1bUN1bGxlZCA9IHNvdXJjZS5mcnVzdHVtQ3VsbGVkO1xcblxcdFxcdFxcdHRoaXMucmVuZGVyT3JkZXIgPSBzb3VyY2UucmVuZGVyT3JkZXI7XFxuXFxuXFx0XFx0XFx0dGhpcy51c2VyRGF0YSA9IEpTT04ucGFyc2UoIEpTT04uc3RyaW5naWZ5KCBzb3VyY2UudXNlckRhdGEgKSApO1xcblxcblxcdFxcdFxcdGlmICggcmVjdXJzaXZlID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHNvdXJjZS5jaGlsZHJlbi5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGNoaWxkID0gc291cmNlLmNoaWxkcmVuWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5hZGQoIGNoaWxkLmNsb25lKCkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCovXFxuXFxuXFx0ZnVuY3Rpb24gQ2FtZXJhKCkge1xcblxcblxcdFxcdE9iamVjdDNELmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnQ2FtZXJhJztcXG5cXG5cXHRcXHR0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZSA9IG5ldyBNYXRyaXg0KCk7XFxuXFx0XFx0dGhpcy5wcm9qZWN0aW9uTWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHR9XFxuXFxuXFx0Q2FtZXJhLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IENhbWVyYSxcXG5cXG5cXHRcXHRpc0NhbWVyYTogdHJ1ZSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSwgcmVjdXJzaXZlICkge1xcblxcblxcdFxcdFxcdE9iamVjdDNELnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSwgcmVjdXJzaXZlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSggc291cmNlLm1hdHJpeFdvcmxkSW52ZXJzZSApO1xcblxcdFxcdFxcdHRoaXMucHJvamVjdGlvbk1hdHJpeC5jb3B5KCBzb3VyY2UucHJvamVjdGlvbk1hdHJpeCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0V29ybGREaXJlY3Rpb246IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgcXVhdGVybmlvbiA9IG5ldyBRdWF0ZXJuaW9uKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGdldFdvcmxkRGlyZWN0aW9uKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmdldFdvcmxkUXVhdGVybmlvbiggcXVhdGVybmlvbiApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQuc2V0KCAwLCAwLCAtIDEgKS5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24gKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHR1cGRhdGVNYXRyaXhXb3JsZDogZnVuY3Rpb24gKCBmb3JjZSApIHtcXG5cXG5cXHRcXHRcXHRPYmplY3QzRC5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCggdGhpcywgZm9yY2UgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5nZXRJbnZlcnNlKCB0aGlzLm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBhcm9zZSAvIGh0dHA6Ly9naXRodWIuY29tL2Fyb3NlXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gT3J0aG9ncmFwaGljQ2FtZXJhKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApIHtcXG5cXG5cXHRcXHRDYW1lcmEuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdPcnRob2dyYXBoaWNDYW1lcmEnO1xcblxcblxcdFxcdHRoaXMuem9vbSA9IDE7XFxuXFx0XFx0dGhpcy52aWV3ID0gbnVsbDtcXG5cXG5cXHRcXHR0aGlzLmxlZnQgPSBsZWZ0O1xcblxcdFxcdHRoaXMucmlnaHQgPSByaWdodDtcXG5cXHRcXHR0aGlzLnRvcCA9IHRvcDtcXG5cXHRcXHR0aGlzLmJvdHRvbSA9IGJvdHRvbTtcXG5cXG5cXHRcXHR0aGlzLm5lYXIgPSAoIG5lYXIgIT09IHVuZGVmaW5lZCApID8gbmVhciA6IDAuMTtcXG5cXHRcXHR0aGlzLmZhciA9ICggZmFyICE9PSB1bmRlZmluZWQgKSA/IGZhciA6IDIwMDA7XFxuXFxuXFx0XFx0dGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XFxuXFxuXFx0fVxcblxcblxcdE9ydGhvZ3JhcGhpY0NhbWVyYS5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBDYW1lcmEucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogT3J0aG9ncmFwaGljQ2FtZXJhLFxcblxcblxcdFxcdGlzT3J0aG9ncmFwaGljQ2FtZXJhOiB0cnVlLFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlLCByZWN1cnNpdmUgKSB7XFxuXFxuXFx0XFx0XFx0Q2FtZXJhLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSwgcmVjdXJzaXZlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5sZWZ0ID0gc291cmNlLmxlZnQ7XFxuXFx0XFx0XFx0dGhpcy5yaWdodCA9IHNvdXJjZS5yaWdodDtcXG5cXHRcXHRcXHR0aGlzLnRvcCA9IHNvdXJjZS50b3A7XFxuXFx0XFx0XFx0dGhpcy5ib3R0b20gPSBzb3VyY2UuYm90dG9tO1xcblxcdFxcdFxcdHRoaXMubmVhciA9IHNvdXJjZS5uZWFyO1xcblxcdFxcdFxcdHRoaXMuZmFyID0gc291cmNlLmZhcjtcXG5cXG5cXHRcXHRcXHR0aGlzLnpvb20gPSBzb3VyY2Uuem9vbTtcXG5cXHRcXHRcXHR0aGlzLnZpZXcgPSBzb3VyY2UudmlldyA9PT0gbnVsbCA/IG51bGwgOiBPYmplY3QuYXNzaWduKCB7fSwgc291cmNlLnZpZXcgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFZpZXdPZmZzZXQ6IGZ1bmN0aW9uICggZnVsbFdpZHRoLCBmdWxsSGVpZ2h0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0ICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy52aWV3ID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMudmlldyA9IHtcXG5cXHRcXHRcXHRcXHRcXHRlbmFibGVkOiB0cnVlLFxcblxcdFxcdFxcdFxcdFxcdGZ1bGxXaWR0aDogMSxcXG5cXHRcXHRcXHRcXHRcXHRmdWxsSGVpZ2h0OiAxLFxcblxcdFxcdFxcdFxcdFxcdG9mZnNldFg6IDAsXFxuXFx0XFx0XFx0XFx0XFx0b2Zmc2V0WTogMCxcXG5cXHRcXHRcXHRcXHRcXHR3aWR0aDogMSxcXG5cXHRcXHRcXHRcXHRcXHRoZWlnaHQ6IDFcXG5cXHRcXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLnZpZXcuZW5hYmxlZCA9IHRydWU7XFxuXFx0XFx0XFx0dGhpcy52aWV3LmZ1bGxXaWR0aCA9IGZ1bGxXaWR0aDtcXG5cXHRcXHRcXHR0aGlzLnZpZXcuZnVsbEhlaWdodCA9IGZ1bGxIZWlnaHQ7XFxuXFx0XFx0XFx0dGhpcy52aWV3Lm9mZnNldFggPSB4O1xcblxcdFxcdFxcdHRoaXMudmlldy5vZmZzZXRZID0geTtcXG5cXHRcXHRcXHR0aGlzLnZpZXcud2lkdGggPSB3aWR0aDtcXG5cXHRcXHRcXHR0aGlzLnZpZXcuaGVpZ2h0ID0gaGVpZ2h0O1xcblxcblxcdFxcdFxcdHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xlYXJWaWV3T2Zmc2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpZXcgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy52aWV3LmVuYWJsZWQgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR1cGRhdGVQcm9qZWN0aW9uTWF0cml4OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGR4ID0gKCB0aGlzLnJpZ2h0IC0gdGhpcy5sZWZ0ICkgLyAoIDIgKiB0aGlzLnpvb20gKTtcXG5cXHRcXHRcXHR2YXIgZHkgPSAoIHRoaXMudG9wIC0gdGhpcy5ib3R0b20gKSAvICggMiAqIHRoaXMuem9vbSApO1xcblxcdFxcdFxcdHZhciBjeCA9ICggdGhpcy5yaWdodCArIHRoaXMubGVmdCApIC8gMjtcXG5cXHRcXHRcXHR2YXIgY3kgPSAoIHRoaXMudG9wICsgdGhpcy5ib3R0b20gKSAvIDI7XFxuXFxuXFx0XFx0XFx0dmFyIGxlZnQgPSBjeCAtIGR4O1xcblxcdFxcdFxcdHZhciByaWdodCA9IGN4ICsgZHg7XFxuXFx0XFx0XFx0dmFyIHRvcCA9IGN5ICsgZHk7XFxuXFx0XFx0XFx0dmFyIGJvdHRvbSA9IGN5IC0gZHk7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpZXcgIT09IG51bGwgJiYgdGhpcy52aWV3LmVuYWJsZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHpvb21XID0gdGhpcy56b29tIC8gKCB0aGlzLnZpZXcud2lkdGggLyB0aGlzLnZpZXcuZnVsbFdpZHRoICk7XFxuXFx0XFx0XFx0XFx0dmFyIHpvb21IID0gdGhpcy56b29tIC8gKCB0aGlzLnZpZXcuaGVpZ2h0IC8gdGhpcy52aWV3LmZ1bGxIZWlnaHQgKTtcXG5cXHRcXHRcXHRcXHR2YXIgc2NhbGVXID0gKCB0aGlzLnJpZ2h0IC0gdGhpcy5sZWZ0ICkgLyB0aGlzLnZpZXcud2lkdGg7XFxuXFx0XFx0XFx0XFx0dmFyIHNjYWxlSCA9ICggdGhpcy50b3AgLSB0aGlzLmJvdHRvbSApIC8gdGhpcy52aWV3LmhlaWdodDtcXG5cXG5cXHRcXHRcXHRcXHRsZWZ0ICs9IHNjYWxlVyAqICggdGhpcy52aWV3Lm9mZnNldFggLyB6b29tVyApO1xcblxcdFxcdFxcdFxcdHJpZ2h0ID0gbGVmdCArIHNjYWxlVyAqICggdGhpcy52aWV3LndpZHRoIC8gem9vbVcgKTtcXG5cXHRcXHRcXHRcXHR0b3AgLT0gc2NhbGVIICogKCB0aGlzLnZpZXcub2Zmc2V0WSAvIHpvb21IICk7XFxuXFx0XFx0XFx0XFx0Ym90dG9tID0gdG9wIC0gc2NhbGVIICogKCB0aGlzLnZpZXcuaGVpZ2h0IC8gem9vbUggKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VPcnRob2dyYXBoaWMoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgdGhpcy5uZWFyLCB0aGlzLmZhciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dG9KU09OOiBmdW5jdGlvbiAoIG1ldGEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGRhdGEgPSBPYmplY3QzRC5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMsIG1ldGEgKTtcXG5cXG5cXHRcXHRcXHRkYXRhLm9iamVjdC56b29tID0gdGhpcy56b29tO1xcblxcdFxcdFxcdGRhdGEub2JqZWN0LmxlZnQgPSB0aGlzLmxlZnQ7XFxuXFx0XFx0XFx0ZGF0YS5vYmplY3QucmlnaHQgPSB0aGlzLnJpZ2h0O1xcblxcdFxcdFxcdGRhdGEub2JqZWN0LnRvcCA9IHRoaXMudG9wO1xcblxcdFxcdFxcdGRhdGEub2JqZWN0LmJvdHRvbSA9IHRoaXMuYm90dG9tO1xcblxcdFxcdFxcdGRhdGEub2JqZWN0Lm5lYXIgPSB0aGlzLm5lYXI7XFxuXFx0XFx0XFx0ZGF0YS5vYmplY3QuZmFyID0gdGhpcy5mYXI7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpZXcgIT09IG51bGwgKSBkYXRhLm9iamVjdC52aWV3ID0gT2JqZWN0LmFzc2lnbigge30sIHRoaXMudmlldyApO1xcblxcblxcdFxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEZhY2UzKCBhLCBiLCBjLCBub3JtYWwsIGNvbG9yLCBtYXRlcmlhbEluZGV4ICkge1xcblxcblxcdFxcdHRoaXMuYSA9IGE7XFxuXFx0XFx0dGhpcy5iID0gYjtcXG5cXHRcXHR0aGlzLmMgPSBjO1xcblxcblxcdFxcdHRoaXMubm9ybWFsID0gKCBub3JtYWwgJiYgbm9ybWFsLmlzVmVjdG9yMyApID8gbm9ybWFsIDogbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR0aGlzLnZlcnRleE5vcm1hbHMgPSBBcnJheS5pc0FycmF5KCBub3JtYWwgKSA/IG5vcm1hbCA6IFtdO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSAoIGNvbG9yICYmIGNvbG9yLmlzQ29sb3IgKSA/IGNvbG9yIDogbmV3IENvbG9yKCk7XFxuXFx0XFx0dGhpcy52ZXJ0ZXhDb2xvcnMgPSBBcnJheS5pc0FycmF5KCBjb2xvciApID8gY29sb3IgOiBbXTtcXG5cXG5cXHRcXHR0aGlzLm1hdGVyaWFsSW5kZXggPSBtYXRlcmlhbEluZGV4ICE9PSB1bmRlZmluZWQgPyBtYXRlcmlhbEluZGV4IDogMDtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggRmFjZTMucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmEgPSBzb3VyY2UuYTtcXG5cXHRcXHRcXHR0aGlzLmIgPSBzb3VyY2UuYjtcXG5cXHRcXHRcXHR0aGlzLmMgPSBzb3VyY2UuYztcXG5cXG5cXHRcXHRcXHR0aGlzLm5vcm1hbC5jb3B5KCBzb3VyY2Uubm9ybWFsICk7XFxuXFx0XFx0XFx0dGhpcy5jb2xvci5jb3B5KCBzb3VyY2UuY29sb3IgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLm1hdGVyaWFsSW5kZXggPSBzb3VyY2UubWF0ZXJpYWxJbmRleDtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gc291cmNlLnZlcnRleE5vcm1hbHMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy52ZXJ0ZXhOb3JtYWxzWyBpIF0gPSBzb3VyY2UudmVydGV4Tm9ybWFsc1sgaSBdLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBzb3VyY2UudmVydGV4Q29sb3JzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMudmVydGV4Q29sb3JzWyBpIF0gPSBzb3VyY2UudmVydGV4Q29sb3JzWyBpIF0uY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3Iga2lsZSAvIGh0dHA6Ly9raWxlLnN0cmF2YWdhbnphLm9yZy9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqIEBhdXRob3IgbWlrYWVsIGVtdGluZ2VyIC8gaHR0cDovL2dvbW8uc2UvXFxuXFx0ICogQGF1dGhvciB6ejg1IC8gaHR0cDovL3d3dy5sYWI0Z2FtZXMubmV0L3p6ODUvYmxvZ1xcblxcdCAqIEBhdXRob3IgYmhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW9cXG5cXHQgKi9cXG5cXG5cXHR2YXIgZ2VvbWV0cnlJZCA9IDA7IC8vIEdlb21ldHJ5IHVzZXMgZXZlbiBudW1iZXJzIGFzIElkXFxuXFxuXFx0ZnVuY3Rpb24gR2VvbWV0cnkoKSB7XFxuXFxuXFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCB0aGlzLCAnaWQnLCB7IHZhbHVlOiBnZW9tZXRyeUlkICs9IDIgfSApO1xcblxcblxcdFxcdHRoaXMudXVpZCA9IF9NYXRoLmdlbmVyYXRlVVVJRCgpO1xcblxcblxcdFxcdHRoaXMubmFtZSA9ICcnO1xcblxcdFxcdHRoaXMudHlwZSA9ICdHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy52ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHRoaXMuY29sb3JzID0gW107XFxuXFx0XFx0dGhpcy5mYWNlcyA9IFtdO1xcblxcdFxcdHRoaXMuZmFjZVZlcnRleFV2cyA9IFtbXV07XFxuXFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSBbXTtcXG5cXHRcXHR0aGlzLm1vcnBoTm9ybWFscyA9IFtdO1xcblxcblxcdFxcdHRoaXMuc2tpbldlaWdodHMgPSBbXTtcXG5cXHRcXHR0aGlzLnNraW5JbmRpY2VzID0gW107XFxuXFxuXFx0XFx0dGhpcy5saW5lRGlzdGFuY2VzID0gW107XFxuXFxuXFx0XFx0dGhpcy5ib3VuZGluZ0JveCA9IG51bGw7XFxuXFx0XFx0dGhpcy5ib3VuZGluZ1NwaGVyZSA9IG51bGw7XFxuXFxuXFx0XFx0Ly8gdXBkYXRlIGZsYWdzXFxuXFxuXFx0XFx0dGhpcy5lbGVtZW50c05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLnZlcnRpY2VzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMudXZzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMubm9ybWFsc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLmNvbG9yc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5ncm91cHNOZWVkVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0fVxcblxcblxcdEdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBHZW9tZXRyeSxcXG5cXG5cXHRcXHRpc0dlb21ldHJ5OiB0cnVlLFxcblxcblxcdFxcdGFwcGx5TWF0cml4OiBmdW5jdGlvbiAoIG1hdHJpeCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbm9ybWFsTWF0cml4ID0gbmV3IE1hdHJpeDMoKS5nZXROb3JtYWxNYXRyaXgoIG1hdHJpeCApO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSB0aGlzLnZlcnRpY2VzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB2ZXJ0ZXggPSB0aGlzLnZlcnRpY2VzWyBpIF07XFxuXFx0XFx0XFx0XFx0dmVydGV4LmFwcGx5TWF0cml4NCggbWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSB0aGlzLmZhY2VzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBmYWNlID0gdGhpcy5mYWNlc1sgaSBdO1xcblxcdFxcdFxcdFxcdGZhY2Uubm9ybWFsLmFwcGx5TWF0cml4Myggbm9ybWFsTWF0cml4ICkubm9ybWFsaXplKCk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwLCBqbCA9IGZhY2UudmVydGV4Tm9ybWFscy5sZW5ndGg7IGogPCBqbDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmYWNlLnZlcnRleE5vcm1hbHNbIGogXS5hcHBseU1hdHJpeDMoIG5vcm1hbE1hdHJpeCApLm5vcm1hbGl6ZSgpO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmJvdW5kaW5nQm94ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5ib3VuZGluZ1NwaGVyZSAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLnZlcnRpY2VzTmVlZFVwZGF0ZSA9IHRydWU7XFxuXFx0XFx0XFx0dGhpcy5ub3JtYWxzTmVlZFVwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyb3RhdGVYOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gcm90YXRlIGdlb21ldHJ5IGFyb3VuZCB3b3JsZCB4LWF4aXNcXG5cXG5cXHRcXHRcXHR2YXIgbTEgPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiByb3RhdGVYKCBhbmdsZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRtMS5tYWtlUm90YXRpb25YKCBhbmdsZSApO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuYXBwbHlNYXRyaXgoIG0xICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0cm90YXRlWTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIHJvdGF0ZSBnZW9tZXRyeSBhcm91bmQgd29ybGQgeS1heGlzXFxuXFxuXFx0XFx0XFx0dmFyIG0xID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gcm90YXRlWSggYW5nbGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bTEubWFrZVJvdGF0aW9uWSggYW5nbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmFwcGx5TWF0cml4KCBtMSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHJvdGF0ZVo6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyByb3RhdGUgZ2VvbWV0cnkgYXJvdW5kIHdvcmxkIHotYXhpc1xcblxcblxcdFxcdFxcdHZhciBtMSA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJvdGF0ZVooIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdFxcdG0xLm1ha2VSb3RhdGlvblooIGFuZ2xlICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hcHBseU1hdHJpeCggbTEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHR0cmFuc2xhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyB0cmFuc2xhdGUgZ2VvbWV0cnlcXG5cXG5cXHRcXHRcXHR2YXIgbTEgPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiB0cmFuc2xhdGUoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0XFx0bTEubWFrZVRyYW5zbGF0aW9uKCB4LCB5LCB6ICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hcHBseU1hdHJpeCggbTEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRzY2FsZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIHNjYWxlIGdlb21ldHJ5XFxuXFxuXFx0XFx0XFx0dmFyIG0xID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gc2NhbGUoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0XFx0bTEubWFrZVNjYWxlKCB4LCB5LCB6ICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hcHBseU1hdHJpeCggbTEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRsb29rQXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgb2JqID0gbmV3IE9iamVjdDNEKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGxvb2tBdCggdmVjdG9yICkge1xcblxcblxcdFxcdFxcdFxcdG9iai5sb29rQXQoIHZlY3RvciApO1xcblxcblxcdFxcdFxcdFxcdG9iai51cGRhdGVNYXRyaXgoKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmFwcGx5TWF0cml4KCBvYmoubWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0ZnJvbUJ1ZmZlckdlb21ldHJ5OiBmdW5jdGlvbiAoIGdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0XFx0dmFyIGluZGljZXMgPSBnZW9tZXRyeS5pbmRleCAhPT0gbnVsbCA/IGdlb21ldHJ5LmluZGV4LmFycmF5IDogdW5kZWZpbmVkO1xcblxcdFxcdFxcdHZhciBhdHRyaWJ1dGVzID0gZ2VvbWV0cnkuYXR0cmlidXRlcztcXG5cXG5cXHRcXHRcXHR2YXIgcG9zaXRpb25zID0gYXR0cmlidXRlcy5wb3NpdGlvbi5hcnJheTtcXG5cXHRcXHRcXHR2YXIgbm9ybWFscyA9IGF0dHJpYnV0ZXMubm9ybWFsICE9PSB1bmRlZmluZWQgPyBhdHRyaWJ1dGVzLm5vcm1hbC5hcnJheSA6IHVuZGVmaW5lZDtcXG5cXHRcXHRcXHR2YXIgY29sb3JzID0gYXR0cmlidXRlcy5jb2xvciAhPT0gdW5kZWZpbmVkID8gYXR0cmlidXRlcy5jb2xvci5hcnJheSA6IHVuZGVmaW5lZDtcXG5cXHRcXHRcXHR2YXIgdXZzID0gYXR0cmlidXRlcy51diAhPT0gdW5kZWZpbmVkID8gYXR0cmlidXRlcy51di5hcnJheSA6IHVuZGVmaW5lZDtcXG5cXHRcXHRcXHR2YXIgdXZzMiA9IGF0dHJpYnV0ZXMudXYyICE9PSB1bmRlZmluZWQgPyBhdHRyaWJ1dGVzLnV2Mi5hcnJheSA6IHVuZGVmaW5lZDtcXG5cXG5cXHRcXHRcXHRpZiAoIHV2czIgIT09IHVuZGVmaW5lZCApIHRoaXMuZmFjZVZlcnRleFV2c1sgMSBdID0gW107XFxuXFxuXFx0XFx0XFx0dmFyIHRlbXBOb3JtYWxzID0gW107XFxuXFx0XFx0XFx0dmFyIHRlbXBVVnMgPSBbXTtcXG5cXHRcXHRcXHR2YXIgdGVtcFVWczIgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGogPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSArPSAzLCBqICs9IDIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUudmVydGljZXMucHVzaCggbmV3IFZlY3RvcjMoIHBvc2l0aW9uc1sgaSBdLCBwb3NpdGlvbnNbIGkgKyAxIF0sIHBvc2l0aW9uc1sgaSArIDIgXSApICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBub3JtYWxzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGVtcE5vcm1hbHMucHVzaCggbmV3IFZlY3RvcjMoIG5vcm1hbHNbIGkgXSwgbm9ybWFsc1sgaSArIDEgXSwgbm9ybWFsc1sgaSArIDIgXSApICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggY29sb3JzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2NvcGUuY29sb3JzLnB1c2goIG5ldyBDb2xvciggY29sb3JzWyBpIF0sIGNvbG9yc1sgaSArIDEgXSwgY29sb3JzWyBpICsgMiBdICkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1dnMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0ZW1wVVZzLnB1c2goIG5ldyBWZWN0b3IyKCB1dnNbIGogXSwgdXZzWyBqICsgMSBdICkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1dnMyICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGVtcFVWczIucHVzaCggbmV3IFZlY3RvcjIoIHV2czJbIGogXSwgdXZzMlsgaiArIDEgXSApICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBhZGRGYWNlKCBhLCBiLCBjLCBtYXRlcmlhbEluZGV4ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB2ZXJ0ZXhOb3JtYWxzID0gbm9ybWFscyAhPT0gdW5kZWZpbmVkID8gWyB0ZW1wTm9ybWFsc1sgYSBdLmNsb25lKCksIHRlbXBOb3JtYWxzWyBiIF0uY2xvbmUoKSwgdGVtcE5vcm1hbHNbIGMgXS5jbG9uZSgpIF0gOiBbXTtcXG5cXHRcXHRcXHRcXHR2YXIgdmVydGV4Q29sb3JzID0gY29sb3JzICE9PSB1bmRlZmluZWQgPyBbIHNjb3BlLmNvbG9yc1sgYSBdLmNsb25lKCksIHNjb3BlLmNvbG9yc1sgYiBdLmNsb25lKCksIHNjb3BlLmNvbG9yc1sgYyBdLmNsb25lKCkgXSA6IFtdO1xcblxcblxcdFxcdFxcdFxcdHZhciBmYWNlID0gbmV3IEZhY2UzKCBhLCBiLCBjLCB2ZXJ0ZXhOb3JtYWxzLCB2ZXJ0ZXhDb2xvcnMsIG1hdGVyaWFsSW5kZXggKTtcXG5cXG5cXHRcXHRcXHRcXHRzY29wZS5mYWNlcy5wdXNoKCBmYWNlICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1dnMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzY29wZS5mYWNlVmVydGV4VXZzWyAwIF0ucHVzaCggWyB0ZW1wVVZzWyBhIF0uY2xvbmUoKSwgdGVtcFVWc1sgYiBdLmNsb25lKCksIHRlbXBVVnNbIGMgXS5jbG9uZSgpIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1dnMyICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2NvcGUuZmFjZVZlcnRleFV2c1sgMSBdLnB1c2goIFsgdGVtcFVWczJbIGEgXS5jbG9uZSgpLCB0ZW1wVVZzMlsgYiBdLmNsb25lKCksIHRlbXBVVnMyWyBjIF0uY2xvbmUoKSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgZ3JvdXBzID0gZ2VvbWV0cnkuZ3JvdXBzO1xcblxcblxcdFxcdFxcdGlmICggZ3JvdXBzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZ3JvdXAgPSBncm91cHNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgc3RhcnQgPSBncm91cC5zdGFydDtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgY291bnQgPSBncm91cC5jb3VudDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaiA9IHN0YXJ0LCBqbCA9IHN0YXJ0ICsgY291bnQ7IGogPCBqbDsgaiArPSAzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggaW5kaWNlcyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGFkZEZhY2UoIGluZGljZXNbIGogXSwgaW5kaWNlc1sgaiArIDEgXSwgaW5kaWNlc1sgaiArIDIgXSwgZ3JvdXAubWF0ZXJpYWxJbmRleCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YWRkRmFjZSggaiwgaiArIDEsIGogKyAyLCBncm91cC5tYXRlcmlhbEluZGV4ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGluZGljZXMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSArPSAzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGFkZEZhY2UoIGluZGljZXNbIGkgXSwgaW5kaWNlc1sgaSArIDEgXSwgaW5kaWNlc1sgaSArIDIgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGggLyAzOyBpICs9IDMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YWRkRmFjZSggaSwgaSArIDEsIGkgKyAyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5jb21wdXRlRmFjZU5vcm1hbHMoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmJvdW5kaW5nQm94ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuYm91bmRpbmdCb3ggPSBnZW9tZXRyeS5ib3VuZGluZ0JveC5jbG9uZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuYm91bmRpbmdTcGhlcmUgPSBnZW9tZXRyeS5ib3VuZGluZ1NwaGVyZS5jbG9uZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNlbnRlcjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCk7XFxuXFxuXFx0XFx0XFx0dmFyIG9mZnNldCA9IHRoaXMuYm91bmRpbmdCb3guZ2V0Q2VudGVyKCkubmVnYXRlKCk7XFxuXFxuXFx0XFx0XFx0dGhpcy50cmFuc2xhdGUoIG9mZnNldC54LCBvZmZzZXQueSwgb2Zmc2V0LnogKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gb2Zmc2V0O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bm9ybWFsaXplOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHR2YXIgY2VudGVyID0gdGhpcy5ib3VuZGluZ1NwaGVyZS5jZW50ZXI7XFxuXFx0XFx0XFx0dmFyIHJhZGl1cyA9IHRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzO1xcblxcblxcdFxcdFxcdHZhciBzID0gcmFkaXVzID09PSAwID8gMSA6IDEuMCAvIHJhZGl1cztcXG5cXG5cXHRcXHRcXHR2YXIgbWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcXG5cXHRcXHRcXHRtYXRyaXguc2V0KFxcblxcdFxcdFxcdFxcdHMsIDAsIDAsIC0gcyAqIGNlbnRlci54LFxcblxcdFxcdFxcdFxcdDAsIHMsIDAsIC0gcyAqIGNlbnRlci55LFxcblxcdFxcdFxcdFxcdDAsIDAsIHMsIC0gcyAqIGNlbnRlci56LFxcblxcdFxcdFxcdFxcdDAsIDAsIDAsIDFcXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdHRoaXMuYXBwbHlNYXRyaXgoIG1hdHJpeCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29tcHV0ZUZhY2VOb3JtYWxzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGNiID0gbmV3IFZlY3RvcjMoKSwgYWIgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBmID0gMCwgZmwgPSB0aGlzLmZhY2VzLmxlbmd0aDsgZiA8IGZsOyBmICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBmYWNlID0gdGhpcy5mYWNlc1sgZiBdO1xcblxcblxcdFxcdFxcdFxcdHZhciB2QSA9IHRoaXMudmVydGljZXNbIGZhY2UuYSBdO1xcblxcdFxcdFxcdFxcdHZhciB2QiA9IHRoaXMudmVydGljZXNbIGZhY2UuYiBdO1xcblxcdFxcdFxcdFxcdHZhciB2QyA9IHRoaXMudmVydGljZXNbIGZhY2UuYyBdO1xcblxcblxcdFxcdFxcdFxcdGNiLnN1YlZlY3RvcnMoIHZDLCB2QiApO1xcblxcdFxcdFxcdFxcdGFiLnN1YlZlY3RvcnMoIHZBLCB2QiApO1xcblxcdFxcdFxcdFxcdGNiLmNyb3NzKCBhYiApO1xcblxcblxcdFxcdFxcdFxcdGNiLm5vcm1hbGl6ZSgpO1xcblxcblxcdFxcdFxcdFxcdGZhY2Uubm9ybWFsLmNvcHkoIGNiICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29tcHV0ZVZlcnRleE5vcm1hbHM6IGZ1bmN0aW9uICggYXJlYVdlaWdodGVkICkge1xcblxcblxcdFxcdFxcdGlmICggYXJlYVdlaWdodGVkID09PSB1bmRlZmluZWQgKSBhcmVhV2VpZ2h0ZWQgPSB0cnVlO1xcblxcblxcdFxcdFxcdHZhciB2LCB2bCwgZiwgZmwsIGZhY2UsIHZlcnRpY2VzO1xcblxcblxcdFxcdFxcdHZlcnRpY2VzID0gbmV3IEFycmF5KCB0aGlzLnZlcnRpY2VzLmxlbmd0aCApO1xcblxcblxcdFxcdFxcdGZvciAoIHYgPSAwLCB2bCA9IHRoaXMudmVydGljZXMubGVuZ3RoOyB2IDwgdmw7IHYgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGljZXNbIHYgXSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggYXJlYVdlaWdodGVkICkge1xcblxcblxcdFxcdFxcdFxcdC8vIHZlcnRleCBub3JtYWxzIHdlaWdodGVkIGJ5IHRyaWFuZ2xlIGFyZWFzXFxuXFx0XFx0XFx0XFx0Ly8gaHR0cDovL3d3dy5pcXVpbGV6bGVzLm9yZy93d3cvYXJ0aWNsZXMvbm9ybWFscy9ub3JtYWxzLmh0bVxcblxcblxcdFxcdFxcdFxcdHZhciB2QSwgdkIsIHZDO1xcblxcdFxcdFxcdFxcdHZhciBjYiA9IG5ldyBWZWN0b3IzKCksIGFiID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBmID0gMCwgZmwgPSB0aGlzLmZhY2VzLmxlbmd0aDsgZiA8IGZsOyBmICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZhY2UgPSB0aGlzLmZhY2VzWyBmIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0dkEgPSB0aGlzLnZlcnRpY2VzWyBmYWNlLmEgXTtcXG5cXHRcXHRcXHRcXHRcXHR2QiA9IHRoaXMudmVydGljZXNbIGZhY2UuYiBdO1xcblxcdFxcdFxcdFxcdFxcdHZDID0gdGhpcy52ZXJ0aWNlc1sgZmFjZS5jIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2Iuc3ViVmVjdG9ycyggdkMsIHZCICk7XFxuXFx0XFx0XFx0XFx0XFx0YWIuc3ViVmVjdG9ycyggdkEsIHZCICk7XFxuXFx0XFx0XFx0XFx0XFx0Y2IuY3Jvc3MoIGFiICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVydGljZXNbIGZhY2UuYSBdLmFkZCggY2IgKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0aWNlc1sgZmFjZS5iIF0uYWRkKCBjYiApO1xcblxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzWyBmYWNlLmMgXS5hZGQoIGNiICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5jb21wdXRlRmFjZU5vcm1hbHMoKTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBmID0gMCwgZmwgPSB0aGlzLmZhY2VzLmxlbmd0aDsgZiA8IGZsOyBmICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZhY2UgPSB0aGlzLmZhY2VzWyBmIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVydGljZXNbIGZhY2UuYSBdLmFkZCggZmFjZS5ub3JtYWwgKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0aWNlc1sgZmFjZS5iIF0uYWRkKCBmYWNlLm5vcm1hbCApO1xcblxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzWyBmYWNlLmMgXS5hZGQoIGZhY2Uubm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmb3IgKCB2ID0gMCwgdmwgPSB0aGlzLnZlcnRpY2VzLmxlbmd0aDsgdiA8IHZsOyB2ICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZlcnRpY2VzWyB2IF0ubm9ybWFsaXplKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZvciAoIGYgPSAwLCBmbCA9IHRoaXMuZmFjZXMubGVuZ3RoOyBmIDwgZmw7IGYgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZmFjZSA9IHRoaXMuZmFjZXNbIGYgXTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdmVydGV4Tm9ybWFscyA9IGZhY2UudmVydGV4Tm9ybWFscztcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHZlcnRleE5vcm1hbHMubGVuZ3RoID09PSAzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZlcnRleE5vcm1hbHNbIDAgXS5jb3B5KCB2ZXJ0aWNlc1sgZmFjZS5hIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhOb3JtYWxzWyAxIF0uY29weSggdmVydGljZXNbIGZhY2UuYiBdICk7XFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFsc1sgMiBdLmNvcHkoIHZlcnRpY2VzWyBmYWNlLmMgXSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFsc1sgMCBdID0gdmVydGljZXNbIGZhY2UuYSBdLmNsb25lKCk7XFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFsc1sgMSBdID0gdmVydGljZXNbIGZhY2UuYiBdLmNsb25lKCk7XFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFsc1sgMiBdID0gdmVydGljZXNbIGZhY2UuYyBdLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZmFjZXMubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm5vcm1hbHNOZWVkVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb21wdXRlRmxhdFZlcnRleE5vcm1hbHM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgZiwgZmwsIGZhY2U7XFxuXFxuXFx0XFx0XFx0dGhpcy5jb21wdXRlRmFjZU5vcm1hbHMoKTtcXG5cXG5cXHRcXHRcXHRmb3IgKCBmID0gMCwgZmwgPSB0aGlzLmZhY2VzLmxlbmd0aDsgZiA8IGZsOyBmICsrICkge1xcblxcblxcdFxcdFxcdFxcdGZhY2UgPSB0aGlzLmZhY2VzWyBmIF07XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZlcnRleE5vcm1hbHMgPSBmYWNlLnZlcnRleE5vcm1hbHM7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB2ZXJ0ZXhOb3JtYWxzLmxlbmd0aCA9PT0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhOb3JtYWxzWyAwIF0uY29weSggZmFjZS5ub3JtYWwgKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhOb3JtYWxzWyAxIF0uY29weSggZmFjZS5ub3JtYWwgKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhOb3JtYWxzWyAyIF0uY29weSggZmFjZS5ub3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHZlcnRleE5vcm1hbHNbIDAgXSA9IGZhY2Uubm9ybWFsLmNsb25lKCk7XFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFsc1sgMSBdID0gZmFjZS5ub3JtYWwuY2xvbmUoKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhOb3JtYWxzWyAyIF0gPSBmYWNlLm5vcm1hbC5jbG9uZSgpO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmZhY2VzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ub3JtYWxzTmVlZFVwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29tcHV0ZU1vcnBoTm9ybWFsczogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBpLCBpbCwgZiwgZmwsIGZhY2U7XFxuXFxuXFx0XFx0XFx0Ly8gc2F2ZSBvcmlnaW5hbCBub3JtYWxzXFxuXFx0XFx0XFx0Ly8gLSBjcmVhdGUgdGVtcCB2YXJpYWJsZXMgb24gZmlyc3QgYWNjZXNzXFxuXFx0XFx0XFx0Ly8gICBvdGhlcndpc2UganVzdCBjb3B5IChmb3IgZmFzdGVyIHJlcGVhdGVkIGNhbGxzKVxcblxcblxcdFxcdFxcdGZvciAoIGYgPSAwLCBmbCA9IHRoaXMuZmFjZXMubGVuZ3RoOyBmIDwgZmw7IGYgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZmFjZSA9IHRoaXMuZmFjZXNbIGYgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoICEgZmFjZS5fX29yaWdpbmFsRmFjZU5vcm1hbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmYWNlLl9fb3JpZ2luYWxGYWNlTm9ybWFsID0gZmFjZS5ub3JtYWwuY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdGZhY2UuX19vcmlnaW5hbEZhY2VOb3JtYWwuY29weSggZmFjZS5ub3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCAhIGZhY2UuX19vcmlnaW5hbFZlcnRleE5vcm1hbHMgKSBmYWNlLl9fb3JpZ2luYWxWZXJ0ZXhOb3JtYWxzID0gW107XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggaSA9IDAsIGlsID0gZmFjZS52ZXJ0ZXhOb3JtYWxzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggISBmYWNlLl9fb3JpZ2luYWxWZXJ0ZXhOb3JtYWxzWyBpIF0gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZS5fX29yaWdpbmFsVmVydGV4Tm9ybWFsc1sgaSBdID0gZmFjZS52ZXJ0ZXhOb3JtYWxzWyBpIF0uY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZhY2UuX19vcmlnaW5hbFZlcnRleE5vcm1hbHNbIGkgXS5jb3B5KCBmYWNlLnZlcnRleE5vcm1hbHNbIGkgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHVzZSB0ZW1wIGdlb21ldHJ5IHRvIGNvbXB1dGUgZmFjZSBhbmQgdmVydGV4IG5vcm1hbHMgZm9yIGVhY2ggbW9ycGhcXG5cXG5cXHRcXHRcXHR2YXIgdG1wR2VvID0gbmV3IEdlb21ldHJ5KCk7XFxuXFx0XFx0XFx0dG1wR2VvLmZhY2VzID0gdGhpcy5mYWNlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSB0aGlzLm1vcnBoVGFyZ2V0cy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBjcmVhdGUgb24gZmlyc3QgYWNjZXNzXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCAhIHRoaXMubW9ycGhOb3JtYWxzWyBpIF0gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5tb3JwaE5vcm1hbHNbIGkgXSA9IHt9O1xcblxcdFxcdFxcdFxcdFxcdHRoaXMubW9ycGhOb3JtYWxzWyBpIF0uZmFjZU5vcm1hbHMgPSBbXTtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLm1vcnBoTm9ybWFsc1sgaSBdLnZlcnRleE5vcm1hbHMgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZHN0Tm9ybWFsc0ZhY2UgPSB0aGlzLm1vcnBoTm9ybWFsc1sgaSBdLmZhY2VOb3JtYWxzO1xcblxcdFxcdFxcdFxcdFxcdHZhciBkc3ROb3JtYWxzVmVydGV4ID0gdGhpcy5tb3JwaE5vcm1hbHNbIGkgXS52ZXJ0ZXhOb3JtYWxzO1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBmYWNlTm9ybWFsLCB2ZXJ0ZXhOb3JtYWxzO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIGYgPSAwLCBmbCA9IHRoaXMuZmFjZXMubGVuZ3RoOyBmIDwgZmw7IGYgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZU5vcm1hbCA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFscyA9IHsgYTogbmV3IFZlY3RvcjMoKSwgYjogbmV3IFZlY3RvcjMoKSwgYzogbmV3IFZlY3RvcjMoKSB9O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGRzdE5vcm1hbHNGYWNlLnB1c2goIGZhY2VOb3JtYWwgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRkc3ROb3JtYWxzVmVydGV4LnB1c2goIHZlcnRleE5vcm1hbHMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHZhciBtb3JwaE5vcm1hbHMgPSB0aGlzLm1vcnBoTm9ybWFsc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdC8vIHNldCB2ZXJ0aWNlcyB0byBtb3JwaCB0YXJnZXRcXG5cXG5cXHRcXHRcXHRcXHR0bXBHZW8udmVydGljZXMgPSB0aGlzLm1vcnBoVGFyZ2V0c1sgaSBdLnZlcnRpY2VzO1xcblxcblxcdFxcdFxcdFxcdC8vIGNvbXB1dGUgbW9ycGggbm9ybWFsc1xcblxcblxcdFxcdFxcdFxcdHRtcEdlby5jb21wdXRlRmFjZU5vcm1hbHMoKTtcXG5cXHRcXHRcXHRcXHR0bXBHZW8uY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBzdG9yZSBtb3JwaCBub3JtYWxzXFxuXFxuXFx0XFx0XFx0XFx0dmFyIGZhY2VOb3JtYWwsIHZlcnRleE5vcm1hbHM7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggZiA9IDAsIGZsID0gdGhpcy5mYWNlcy5sZW5ndGg7IGYgPCBmbDsgZiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmYWNlID0gdGhpcy5mYWNlc1sgZiBdO1xcblxcblxcdFxcdFxcdFxcdFxcdGZhY2VOb3JtYWwgPSBtb3JwaE5vcm1hbHMuZmFjZU5vcm1hbHNbIGYgXTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhOb3JtYWxzID0gbW9ycGhOb3JtYWxzLnZlcnRleE5vcm1hbHNbIGYgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmYWNlTm9ybWFsLmNvcHkoIGZhY2Uubm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFscy5hLmNvcHkoIGZhY2UudmVydGV4Tm9ybWFsc1sgMCBdICk7XFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFscy5iLmNvcHkoIGZhY2UudmVydGV4Tm9ybWFsc1sgMSBdICk7XFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Tm9ybWFscy5jLmNvcHkoIGZhY2UudmVydGV4Tm9ybWFsc1sgMiBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyByZXN0b3JlIG9yaWdpbmFsIG5vcm1hbHNcXG5cXG5cXHRcXHRcXHRmb3IgKCBmID0gMCwgZmwgPSB0aGlzLmZhY2VzLmxlbmd0aDsgZiA8IGZsOyBmICsrICkge1xcblxcblxcdFxcdFxcdFxcdGZhY2UgPSB0aGlzLmZhY2VzWyBmIF07XFxuXFxuXFx0XFx0XFx0XFx0ZmFjZS5ub3JtYWwgPSBmYWNlLl9fb3JpZ2luYWxGYWNlTm9ybWFsO1xcblxcdFxcdFxcdFxcdGZhY2UudmVydGV4Tm9ybWFscyA9IGZhY2UuX19vcmlnaW5hbFZlcnRleE5vcm1hbHM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29tcHV0ZUxpbmVEaXN0YW5jZXM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgZCA9IDA7XFxuXFx0XFx0XFx0dmFyIHZlcnRpY2VzID0gdGhpcy52ZXJ0aWNlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gdmVydGljZXMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRkICs9IHZlcnRpY2VzWyBpIF0uZGlzdGFuY2VUbyggdmVydGljZXNbIGkgLSAxIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5saW5lRGlzdGFuY2VzWyBpIF0gPSBkO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvbXB1dGVCb3VuZGluZ0JveDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5ib3VuZGluZ0JveCA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJvdW5kaW5nQm94ID0gbmV3IEJveDMoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tUG9pbnRzKCB0aGlzLnZlcnRpY2VzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb21wdXRlQm91bmRpbmdTcGhlcmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuYm91bmRpbmdTcGhlcmUgPT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ib3VuZGluZ1NwaGVyZSA9IG5ldyBTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5ib3VuZGluZ1NwaGVyZS5zZXRGcm9tUG9pbnRzKCB0aGlzLnZlcnRpY2VzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtZXJnZTogZnVuY3Rpb24gKCBnZW9tZXRyeSwgbWF0cml4LCBtYXRlcmlhbEluZGV4T2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggISAoIGdlb21ldHJ5ICYmIGdlb21ldHJ5LmlzR2VvbWV0cnkgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuR2VvbWV0cnkubWVyZ2UoKTogZ2VvbWV0cnkgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkdlb21ldHJ5LicsIGdlb21ldHJ5ICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgbm9ybWFsTWF0cml4LFxcblxcdFxcdFxcdFxcdHZlcnRleE9mZnNldCA9IHRoaXMudmVydGljZXMubGVuZ3RoLFxcblxcdFxcdFxcdFxcdHZlcnRpY2VzMSA9IHRoaXMudmVydGljZXMsXFxuXFx0XFx0XFx0XFx0dmVydGljZXMyID0gZ2VvbWV0cnkudmVydGljZXMsXFxuXFx0XFx0XFx0XFx0ZmFjZXMxID0gdGhpcy5mYWNlcyxcXG5cXHRcXHRcXHRcXHRmYWNlczIgPSBnZW9tZXRyeS5mYWNlcyxcXG5cXHRcXHRcXHRcXHR1dnMxID0gdGhpcy5mYWNlVmVydGV4VXZzWyAwIF0sXFxuXFx0XFx0XFx0XFx0dXZzMiA9IGdlb21ldHJ5LmZhY2VWZXJ0ZXhVdnNbIDAgXSxcXG5cXHRcXHRcXHRcXHRjb2xvcnMxID0gdGhpcy5jb2xvcnMsXFxuXFx0XFx0XFx0XFx0Y29sb3JzMiA9IGdlb21ldHJ5LmNvbG9ycztcXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsSW5kZXhPZmZzZXQgPT09IHVuZGVmaW5lZCApIG1hdGVyaWFsSW5kZXhPZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdGlmICggbWF0cml4ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bm9ybWFsTWF0cml4ID0gbmV3IE1hdHJpeDMoKS5nZXROb3JtYWxNYXRyaXgoIG1hdHJpeCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyB2ZXJ0aWNlc1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSB2ZXJ0aWNlczIubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZlcnRleCA9IHZlcnRpY2VzMlsgaSBdO1xcblxcblxcdFxcdFxcdFxcdHZhciB2ZXJ0ZXhDb3B5ID0gdmVydGV4LmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRyaXggIT09IHVuZGVmaW5lZCApIHZlcnRleENvcHkuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0aWNlczEucHVzaCggdmVydGV4Q29weSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBjb2xvcnNcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gY29sb3JzMi5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb2xvcnMxLnB1c2goIGNvbG9yczJbIGkgXS5jbG9uZSgpICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGZhY2VzXFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDAsIGlsID0gZmFjZXMyLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBmYWNlID0gZmFjZXMyWyBpIF0sIGZhY2VDb3B5LCBub3JtYWwsIGNvbG9yLFxcblxcdFxcdFxcdFxcdFxcdGZhY2VWZXJ0ZXhOb3JtYWxzID0gZmFjZS52ZXJ0ZXhOb3JtYWxzLFxcblxcdFxcdFxcdFxcdFxcdGZhY2VWZXJ0ZXhDb2xvcnMgPSBmYWNlLnZlcnRleENvbG9ycztcXG5cXG5cXHRcXHRcXHRcXHRmYWNlQ29weSA9IG5ldyBGYWNlMyggZmFjZS5hICsgdmVydGV4T2Zmc2V0LCBmYWNlLmIgKyB2ZXJ0ZXhPZmZzZXQsIGZhY2UuYyArIHZlcnRleE9mZnNldCApO1xcblxcdFxcdFxcdFxcdGZhY2VDb3B5Lm5vcm1hbC5jb3B5KCBmYWNlLm5vcm1hbCApO1xcblxcblxcdFxcdFxcdFxcdGlmICggbm9ybWFsTWF0cml4ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZUNvcHkubm9ybWFsLmFwcGx5TWF0cml4Myggbm9ybWFsTWF0cml4ICkubm9ybWFsaXplKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMCwgamwgPSBmYWNlVmVydGV4Tm9ybWFscy5sZW5ndGg7IGogPCBqbDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRub3JtYWwgPSBmYWNlVmVydGV4Tm9ybWFsc1sgaiBdLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBub3JtYWxNYXRyaXggIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWwuYXBwbHlNYXRyaXgzKCBub3JtYWxNYXRyaXggKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZUNvcHkudmVydGV4Tm9ybWFscy5wdXNoKCBub3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0ZmFjZUNvcHkuY29sb3IuY29weSggZmFjZS5jb2xvciApO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMCwgamwgPSBmYWNlVmVydGV4Q29sb3JzLmxlbmd0aDsgaiA8IGpsOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbG9yID0gZmFjZVZlcnRleENvbG9yc1sgaiBdO1xcblxcdFxcdFxcdFxcdFxcdGZhY2VDb3B5LnZlcnRleENvbG9ycy5wdXNoKCBjb2xvci5jbG9uZSgpICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGZhY2VDb3B5Lm1hdGVyaWFsSW5kZXggPSBmYWNlLm1hdGVyaWFsSW5kZXggKyBtYXRlcmlhbEluZGV4T2Zmc2V0O1xcblxcblxcdFxcdFxcdFxcdGZhY2VzMS5wdXNoKCBmYWNlQ29weSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyB1dnNcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSB1dnMyLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB1diA9IHV2czJbIGkgXSwgdXZDb3B5ID0gW107XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1diA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaiA9IDAsIGpsID0gdXYubGVuZ3RoOyBqIDwgamw7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dXZDb3B5LnB1c2goIHV2WyBqIF0uY2xvbmUoKSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR1dnMxLnB1c2goIHV2Q29weSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG1lcmdlTWVzaDogZnVuY3Rpb24gKCBtZXNoICkge1xcblxcblxcdFxcdFxcdGlmICggISAoIG1lc2ggJiYgbWVzaC5pc01lc2ggKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuR2VvbWV0cnkubWVyZ2VNZXNoKCk6IG1lc2ggbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLk1lc2guJywgbWVzaCApO1xcblxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0bWVzaC5tYXRyaXhBdXRvVXBkYXRlICYmIG1lc2gudXBkYXRlTWF0cml4KCk7XFxuXFxuXFx0XFx0XFx0dGhpcy5tZXJnZSggbWVzaC5nZW9tZXRyeSwgbWVzaC5tYXRyaXggKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8qXFxuXFx0XFx0ICogQ2hlY2tzIGZvciBkdXBsaWNhdGUgdmVydGljZXMgd2l0aCBoYXNobWFwLlxcblxcdFxcdCAqIER1cGxpY2F0ZWQgdmVydGljZXMgYXJlIHJlbW92ZWRcXG5cXHRcXHQgKiBhbmQgZmFjZXMnIHZlcnRpY2VzIGFyZSB1cGRhdGVkLlxcblxcdFxcdCAqL1xcblxcblxcdFxcdG1lcmdlVmVydGljZXM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdmVydGljZXNNYXAgPSB7fTsgLy8gSGFzaG1hcCBmb3IgbG9va2luZyB1cCB2ZXJ0aWNlcyBieSBwb3NpdGlvbiBjb29yZGluYXRlcyAoYW5kIG1ha2luZyBzdXJlIHRoZXkgYXJlIHVuaXF1ZSlcXG5cXHRcXHRcXHR2YXIgdW5pcXVlID0gW10sIGNoYW5nZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHR2YXIgdiwga2V5O1xcblxcdFxcdFxcdHZhciBwcmVjaXNpb25Qb2ludHMgPSA0OyAvLyBudW1iZXIgb2YgZGVjaW1hbCBwb2ludHMsIGUuZy4gNCBmb3IgZXBzaWxvbiBvZiAwLjAwMDFcXG5cXHRcXHRcXHR2YXIgcHJlY2lzaW9uID0gTWF0aC5wb3coIDEwLCBwcmVjaXNpb25Qb2ludHMgKTtcXG5cXHRcXHRcXHR2YXIgaSwgaWwsIGZhY2U7XFxuXFx0XFx0XFx0dmFyIGluZGljZXMsIGosIGpsO1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBpbCA9IHRoaXMudmVydGljZXMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0diA9IHRoaXMudmVydGljZXNbIGkgXTtcXG5cXHRcXHRcXHRcXHRrZXkgPSBNYXRoLnJvdW5kKCB2LnggKiBwcmVjaXNpb24gKSArICdfJyArIE1hdGgucm91bmQoIHYueSAqIHByZWNpc2lvbiApICsgJ18nICsgTWF0aC5yb3VuZCggdi56ICogcHJlY2lzaW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB2ZXJ0aWNlc01hcFsga2V5IF0gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0aWNlc01hcFsga2V5IF0gPSBpO1xcblxcdFxcdFxcdFxcdFxcdHVuaXF1ZS5wdXNoKCB0aGlzLnZlcnRpY2VzWyBpIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHRjaGFuZ2VzWyBpIF0gPSB1bmlxdWUubGVuZ3RoIC0gMTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vY29uc29sZS5sb2coJ0R1cGxpY2F0ZSB2ZXJ0ZXggZm91bmQuICcsIGksICcgY291bGQgYmUgdXNpbmcgJywgdmVydGljZXNNYXBba2V5XSk7XFxuXFx0XFx0XFx0XFx0XFx0Y2hhbmdlc1sgaSBdID0gY2hhbmdlc1sgdmVydGljZXNNYXBbIGtleSBdIF07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXG5cXHRcXHRcXHQvLyBpZiBmYWNlcyBhcmUgY29tcGxldGVseSBkZWdlbmVyYXRlIGFmdGVyIG1lcmdpbmcgdmVydGljZXMsIHdlXFxuXFx0XFx0XFx0Ly8gaGF2ZSB0byByZW1vdmUgdGhlbSBmcm9tIHRoZSBnZW9tZXRyeS5cXG5cXHRcXHRcXHR2YXIgZmFjZUluZGljZXNUb1JlbW92ZSA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBpbCA9IHRoaXMuZmFjZXMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZmFjZSA9IHRoaXMuZmFjZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRmYWNlLmEgPSBjaGFuZ2VzWyBmYWNlLmEgXTtcXG5cXHRcXHRcXHRcXHRmYWNlLmIgPSBjaGFuZ2VzWyBmYWNlLmIgXTtcXG5cXHRcXHRcXHRcXHRmYWNlLmMgPSBjaGFuZ2VzWyBmYWNlLmMgXTtcXG5cXG5cXHRcXHRcXHRcXHRpbmRpY2VzID0gWyBmYWNlLmEsIGZhY2UuYiwgZmFjZS5jIF07XFxuXFxuXFx0XFx0XFx0XFx0Ly8gaWYgYW55IGR1cGxpY2F0ZSB2ZXJ0aWNlcyBhcmUgZm91bmQgaW4gYSBGYWNlM1xcblxcdFxcdFxcdFxcdC8vIHdlIGhhdmUgdG8gcmVtb3ZlIHRoZSBmYWNlIGFzIG5vdGhpbmcgY2FuIGJlIHNhdmVkXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIG4gPSAwOyBuIDwgMzsgbiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGluZGljZXNbIG4gXSA9PT0gaW5kaWNlc1sgKCBuICsgMSApICUgMyBdICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZhY2VJbmRpY2VzVG9SZW1vdmUucHVzaCggaSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZvciAoIGkgPSBmYWNlSW5kaWNlc1RvUmVtb3ZlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtLSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaWR4ID0gZmFjZUluZGljZXNUb1JlbW92ZVsgaSBdO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZmFjZXMuc3BsaWNlKCBpZHgsIDEgKTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBqID0gMCwgamwgPSB0aGlzLmZhY2VWZXJ0ZXhVdnMubGVuZ3RoOyBqIDwgamw7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5mYWNlVmVydGV4VXZzWyBqIF0uc3BsaWNlKCBpZHgsIDEgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIFVzZSB1bmlxdWUgc2V0IG9mIHZlcnRpY2VzXFxuXFxuXFx0XFx0XFx0dmFyIGRpZmYgPSB0aGlzLnZlcnRpY2VzLmxlbmd0aCAtIHVuaXF1ZS5sZW5ndGg7XFxuXFx0XFx0XFx0dGhpcy52ZXJ0aWNlcyA9IHVuaXF1ZTtcXG5cXHRcXHRcXHRyZXR1cm4gZGlmZjtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21Qb2ludHM6IGZ1bmN0aW9uICggcG9pbnRzICkge1xcblxcblxcdFxcdFxcdHRoaXMudmVydGljZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBwb2ludHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcG9pbnQgPSBwb2ludHNbIGkgXTtcXG5cXHRcXHRcXHRcXHR0aGlzLnZlcnRpY2VzLnB1c2goIG5ldyBWZWN0b3IzKCBwb2ludC54LCBwb2ludC55LCBwb2ludC56IHx8IDAgKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNvcnRGYWNlc0J5TWF0ZXJpYWxJbmRleDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBmYWNlcyA9IHRoaXMuZmFjZXM7XFxuXFx0XFx0XFx0dmFyIGxlbmd0aCA9IGZhY2VzLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHQvLyB0YWcgZmFjZXNcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZmFjZXNbIGkgXS5faWQgPSBpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBzb3J0IGZhY2VzXFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gbWF0ZXJpYWxJbmRleFNvcnQoIGEsIGIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGEubWF0ZXJpYWxJbmRleCAtIGIubWF0ZXJpYWxJbmRleDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0ZmFjZXMuc29ydCggbWF0ZXJpYWxJbmRleFNvcnQgKTtcXG5cXG5cXHRcXHRcXHQvLyBzb3J0IHV2c1xcblxcblxcdFxcdFxcdHZhciB1dnMxID0gdGhpcy5mYWNlVmVydGV4VXZzWyAwIF07XFxuXFx0XFx0XFx0dmFyIHV2czIgPSB0aGlzLmZhY2VWZXJ0ZXhVdnNbIDEgXTtcXG5cXG5cXHRcXHRcXHR2YXIgbmV3VXZzMSwgbmV3VXZzMjtcXG5cXG5cXHRcXHRcXHRpZiAoIHV2czEgJiYgdXZzMS5sZW5ndGggPT09IGxlbmd0aCApIG5ld1V2czEgPSBbXTtcXG5cXHRcXHRcXHRpZiAoIHV2czIgJiYgdXZzMi5sZW5ndGggPT09IGxlbmd0aCApIG5ld1V2czIgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGlkID0gZmFjZXNbIGkgXS5faWQ7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBuZXdVdnMxICkgbmV3VXZzMS5wdXNoKCB1dnMxWyBpZCBdICk7XFxuXFx0XFx0XFx0XFx0aWYgKCBuZXdVdnMyICkgbmV3VXZzMi5wdXNoKCB1dnMyWyBpZCBdICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbmV3VXZzMSApIHRoaXMuZmFjZVZlcnRleFV2c1sgMCBdID0gbmV3VXZzMTtcXG5cXHRcXHRcXHRpZiAoIG5ld1V2czIgKSB0aGlzLmZhY2VWZXJ0ZXhVdnNbIDEgXSA9IG5ld1V2czI7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IHtcXG5cXHRcXHRcXHRcXHRtZXRhZGF0YToge1xcblxcdFxcdFxcdFxcdFxcdHZlcnNpb246IDQuNSxcXG5cXHRcXHRcXHRcXHRcXHR0eXBlOiAnR2VvbWV0cnknLFxcblxcdFxcdFxcdFxcdFxcdGdlbmVyYXRvcjogJ0dlb21ldHJ5LnRvSlNPTidcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHQvLyBzdGFuZGFyZCBHZW9tZXRyeSBzZXJpYWxpemF0aW9uXFxuXFxuXFx0XFx0XFx0ZGF0YS51dWlkID0gdGhpcy51dWlkO1xcblxcdFxcdFxcdGRhdGEudHlwZSA9IHRoaXMudHlwZTtcXG5cXHRcXHRcXHRpZiAoIHRoaXMubmFtZSAhPT0gJycgKSBkYXRhLm5hbWUgPSB0aGlzLm5hbWU7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycztcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIga2V5IGluIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBwYXJhbWV0ZXJzWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkgZGF0YVsga2V5IF0gPSBwYXJhbWV0ZXJzWyBrZXkgXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGRhdGE7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHRoaXMudmVydGljZXMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB2ZXJ0ZXggPSB0aGlzLnZlcnRpY2VzWyBpIF07XFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggdmVydGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgZmFjZXMgPSBbXTtcXG5cXHRcXHRcXHR2YXIgbm9ybWFscyA9IFtdO1xcblxcdFxcdFxcdHZhciBub3JtYWxzSGFzaCA9IHt9O1xcblxcdFxcdFxcdHZhciBjb2xvcnMgPSBbXTtcXG5cXHRcXHRcXHR2YXIgY29sb3JzSGFzaCA9IHt9O1xcblxcdFxcdFxcdHZhciB1dnMgPSBbXTtcXG5cXHRcXHRcXHR2YXIgdXZzSGFzaCA9IHt9O1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHRoaXMuZmFjZXMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBmYWNlID0gdGhpcy5mYWNlc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdHZhciBoYXNNYXRlcmlhbCA9IHRydWU7XFxuXFx0XFx0XFx0XFx0dmFyIGhhc0ZhY2VVdiA9IGZhbHNlOyAvLyBkZXByZWNhdGVkXFxuXFx0XFx0XFx0XFx0dmFyIGhhc0ZhY2VWZXJ0ZXhVdiA9IHRoaXMuZmFjZVZlcnRleFV2c1sgMCBdWyBpIF0gIT09IHVuZGVmaW5lZDtcXG5cXHRcXHRcXHRcXHR2YXIgaGFzRmFjZU5vcm1hbCA9IGZhY2Uubm9ybWFsLmxlbmd0aCgpID4gMDtcXG5cXHRcXHRcXHRcXHR2YXIgaGFzRmFjZVZlcnRleE5vcm1hbCA9IGZhY2UudmVydGV4Tm9ybWFscy5sZW5ndGggPiAwO1xcblxcdFxcdFxcdFxcdHZhciBoYXNGYWNlQ29sb3IgPSBmYWNlLmNvbG9yLnIgIT09IDEgfHwgZmFjZS5jb2xvci5nICE9PSAxIHx8IGZhY2UuY29sb3IuYiAhPT0gMTtcXG5cXHRcXHRcXHRcXHR2YXIgaGFzRmFjZVZlcnRleENvbG9yID0gZmFjZS52ZXJ0ZXhDb2xvcnMubGVuZ3RoID4gMDtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZmFjZVR5cGUgPSAwO1xcblxcblxcdFxcdFxcdFxcdGZhY2VUeXBlID0gc2V0Qml0KCBmYWNlVHlwZSwgMCwgMCApOyAvLyBpc1F1YWRcXG5cXHRcXHRcXHRcXHRmYWNlVHlwZSA9IHNldEJpdCggZmFjZVR5cGUsIDEsIGhhc01hdGVyaWFsICk7XFxuXFx0XFx0XFx0XFx0ZmFjZVR5cGUgPSBzZXRCaXQoIGZhY2VUeXBlLCAyLCBoYXNGYWNlVXYgKTtcXG5cXHRcXHRcXHRcXHRmYWNlVHlwZSA9IHNldEJpdCggZmFjZVR5cGUsIDMsIGhhc0ZhY2VWZXJ0ZXhVdiApO1xcblxcdFxcdFxcdFxcdGZhY2VUeXBlID0gc2V0Qml0KCBmYWNlVHlwZSwgNCwgaGFzRmFjZU5vcm1hbCApO1xcblxcdFxcdFxcdFxcdGZhY2VUeXBlID0gc2V0Qml0KCBmYWNlVHlwZSwgNSwgaGFzRmFjZVZlcnRleE5vcm1hbCApO1xcblxcdFxcdFxcdFxcdGZhY2VUeXBlID0gc2V0Qml0KCBmYWNlVHlwZSwgNiwgaGFzRmFjZUNvbG9yICk7XFxuXFx0XFx0XFx0XFx0ZmFjZVR5cGUgPSBzZXRCaXQoIGZhY2VUeXBlLCA3LCBoYXNGYWNlVmVydGV4Q29sb3IgKTtcXG5cXG5cXHRcXHRcXHRcXHRmYWNlcy5wdXNoKCBmYWNlVHlwZSApO1xcblxcdFxcdFxcdFxcdGZhY2VzLnB1c2goIGZhY2UuYSwgZmFjZS5iLCBmYWNlLmMgKTtcXG5cXHRcXHRcXHRcXHRmYWNlcy5wdXNoKCBmYWNlLm1hdGVyaWFsSW5kZXggKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGhhc0ZhY2VWZXJ0ZXhVdiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZmFjZVZlcnRleFV2cyA9IHRoaXMuZmFjZVZlcnRleFV2c1sgMCBdWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZXMucHVzaChcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZXRVdkluZGV4KCBmYWNlVmVydGV4VXZzWyAwIF0gKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZXRVdkluZGV4KCBmYWNlVmVydGV4VXZzWyAxIF0gKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZXRVdkluZGV4KCBmYWNlVmVydGV4VXZzWyAyIF0gKVxcblxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggaGFzRmFjZU5vcm1hbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmYWNlcy5wdXNoKCBnZXROb3JtYWxJbmRleCggZmFjZS5ub3JtYWwgKSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGhhc0ZhY2VWZXJ0ZXhOb3JtYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHZlcnRleE5vcm1hbHMgPSBmYWNlLnZlcnRleE5vcm1hbHM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZXMucHVzaChcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZXROb3JtYWxJbmRleCggdmVydGV4Tm9ybWFsc1sgMCBdICksXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2V0Tm9ybWFsSW5kZXgoIHZlcnRleE5vcm1hbHNbIDEgXSApLFxcblxcdFxcdFxcdFxcdFxcdFxcdGdldE5vcm1hbEluZGV4KCB2ZXJ0ZXhOb3JtYWxzWyAyIF0gKVxcblxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggaGFzRmFjZUNvbG9yICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZhY2VzLnB1c2goIGdldENvbG9ySW5kZXgoIGZhY2UuY29sb3IgKSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGhhc0ZhY2VWZXJ0ZXhDb2xvciApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdmVydGV4Q29sb3JzID0gZmFjZS52ZXJ0ZXhDb2xvcnM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZXMucHVzaChcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZXRDb2xvckluZGV4KCB2ZXJ0ZXhDb2xvcnNbIDAgXSApLFxcblxcdFxcdFxcdFxcdFxcdFxcdGdldENvbG9ySW5kZXgoIHZlcnRleENvbG9yc1sgMSBdICksXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2V0Q29sb3JJbmRleCggdmVydGV4Q29sb3JzWyAyIF0gKVxcblxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBzZXRCaXQoIHZhbHVlLCBwb3NpdGlvbiwgZW5hYmxlZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gZW5hYmxlZCA/IHZhbHVlIHwgKCAxIDw8IHBvc2l0aW9uICkgOiB2YWx1ZSAmICggfiAoIDEgPDwgcG9zaXRpb24gKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBnZXROb3JtYWxJbmRleCggbm9ybWFsICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBoYXNoID0gbm9ybWFsLngudG9TdHJpbmcoKSArIG5vcm1hbC55LnRvU3RyaW5nKCkgKyBub3JtYWwuei50b1N0cmluZygpO1xcblxcblxcdFxcdFxcdFxcdGlmICggbm9ybWFsc0hhc2hbIGhhc2ggXSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBub3JtYWxzSGFzaFsgaGFzaCBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRub3JtYWxzSGFzaFsgaGFzaCBdID0gbm9ybWFscy5sZW5ndGggLyAzO1xcblxcdFxcdFxcdFxcdG5vcm1hbHMucHVzaCggbm9ybWFsLngsIG5vcm1hbC55LCBub3JtYWwueiApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBub3JtYWxzSGFzaFsgaGFzaCBdO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBnZXRDb2xvckluZGV4KCBjb2xvciApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaGFzaCA9IGNvbG9yLnIudG9TdHJpbmcoKSArIGNvbG9yLmcudG9TdHJpbmcoKSArIGNvbG9yLmIudG9TdHJpbmcoKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGNvbG9yc0hhc2hbIGhhc2ggXSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBjb2xvcnNIYXNoWyBoYXNoIF07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGNvbG9yc0hhc2hbIGhhc2ggXSA9IGNvbG9ycy5sZW5ndGg7XFxuXFx0XFx0XFx0XFx0Y29sb3JzLnB1c2goIGNvbG9yLmdldEhleCgpICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGNvbG9yc0hhc2hbIGhhc2ggXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gZ2V0VXZJbmRleCggdXYgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGhhc2ggPSB1di54LnRvU3RyaW5nKCkgKyB1di55LnRvU3RyaW5nKCk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1dnNIYXNoWyBoYXNoIF0gIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gdXZzSGFzaFsgaGFzaCBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR1dnNIYXNoWyBoYXNoIF0gPSB1dnMubGVuZ3RoIC8gMjtcXG5cXHRcXHRcXHRcXHR1dnMucHVzaCggdXYueCwgdXYueSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB1dnNIYXNoWyBoYXNoIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGRhdGEuZGF0YSA9IHt9O1xcblxcblxcdFxcdFxcdGRhdGEuZGF0YS52ZXJ0aWNlcyA9IHZlcnRpY2VzO1xcblxcdFxcdFxcdGRhdGEuZGF0YS5ub3JtYWxzID0gbm9ybWFscztcXG5cXHRcXHRcXHRpZiAoIGNvbG9ycy5sZW5ndGggPiAwICkgZGF0YS5kYXRhLmNvbG9ycyA9IGNvbG9ycztcXG5cXHRcXHRcXHRpZiAoIHV2cy5sZW5ndGggPiAwICkgZGF0YS5kYXRhLnV2cyA9IFsgdXZzIF07IC8vIHRlbXBvcmFsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcXG5cXHRcXHRcXHRkYXRhLmRhdGEuZmFjZXMgPSBmYWNlcztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0LypcXG5cXHRcXHRcXHQgLy8gSGFuZGxlIHByaW1pdGl2ZXNcXG5cXG5cXHRcXHRcXHQgdmFyIHBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtZXRlcnM7XFxuXFxuXFx0XFx0XFx0IGlmICggcGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdCB2YXIgdmFsdWVzID0gW107XFxuXFxuXFx0XFx0XFx0IGZvciAoIHZhciBrZXkgaW4gcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHRcXHQgdmFsdWVzLnB1c2goIHBhcmFtZXRlcnNbIGtleSBdICk7XFxuXFxuXFx0XFx0XFx0IH1cXG5cXG5cXHRcXHRcXHQgdmFyIGdlb21ldHJ5ID0gT2JqZWN0LmNyZWF0ZSggdGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgKTtcXG5cXHRcXHRcXHQgdGhpcy5jb25zdHJ1Y3Rvci5hcHBseSggZ2VvbWV0cnksIHZhbHVlcyApO1xcblxcdFxcdFxcdCByZXR1cm4gZ2VvbWV0cnk7XFxuXFxuXFx0XFx0XFx0IH1cXG5cXG5cXHRcXHRcXHQgcmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSggdGhpcyApO1xcblxcdFxcdFxcdCAqL1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgR2VvbWV0cnkoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaSwgaWwsIGosIGpsLCBrLCBrbDtcXG5cXG5cXHRcXHRcXHQvLyByZXNldFxcblxcblxcdFxcdFxcdHRoaXMudmVydGljZXMgPSBbXTtcXG5cXHRcXHRcXHR0aGlzLmNvbG9ycyA9IFtdO1xcblxcdFxcdFxcdHRoaXMuZmFjZXMgPSBbXTtcXG5cXHRcXHRcXHR0aGlzLmZhY2VWZXJ0ZXhVdnMgPSBbW11dO1xcblxcdFxcdFxcdHRoaXMubW9ycGhUYXJnZXRzID0gW107XFxuXFx0XFx0XFx0dGhpcy5tb3JwaE5vcm1hbHMgPSBbXTtcXG5cXHRcXHRcXHR0aGlzLnNraW5XZWlnaHRzID0gW107XFxuXFx0XFx0XFx0dGhpcy5za2luSW5kaWNlcyA9IFtdO1xcblxcdFxcdFxcdHRoaXMubGluZURpc3RhbmNlcyA9IFtdO1xcblxcdFxcdFxcdHRoaXMuYm91bmRpbmdCb3ggPSBudWxsO1xcblxcdFxcdFxcdHRoaXMuYm91bmRpbmdTcGhlcmUgPSBudWxsO1xcblxcblxcdFxcdFxcdC8vIG5hbWVcXG5cXG5cXHRcXHRcXHR0aGlzLm5hbWUgPSBzb3VyY2UubmFtZTtcXG5cXG5cXHRcXHRcXHQvLyB2ZXJ0aWNlc1xcblxcblxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IHNvdXJjZS52ZXJ0aWNlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSB2ZXJ0aWNlcy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnZlcnRpY2VzLnB1c2goIHZlcnRpY2VzWyBpIF0uY2xvbmUoKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBjb2xvcnNcXG5cXG5cXHRcXHRcXHR2YXIgY29sb3JzID0gc291cmNlLmNvbG9ycztcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBjb2xvcnMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5jb2xvcnMucHVzaCggY29sb3JzWyBpIF0uY2xvbmUoKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBmYWNlc1xcblxcblxcdFxcdFxcdHZhciBmYWNlcyA9IHNvdXJjZS5mYWNlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBmYWNlcy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmZhY2VzLnB1c2goIGZhY2VzWyBpIF0uY2xvbmUoKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBmYWNlIHZlcnRleCB1dnNcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBzb3VyY2UuZmFjZVZlcnRleFV2cy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZmFjZVZlcnRleFV2cyA9IHNvdXJjZS5mYWNlVmVydGV4VXZzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0aGlzLmZhY2VWZXJ0ZXhVdnNbIGkgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuZmFjZVZlcnRleFV2c1sgaSBdID0gW107XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGZvciAoIGogPSAwLCBqbCA9IGZhY2VWZXJ0ZXhVdnMubGVuZ3RoOyBqIDwgamw7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHV2cyA9IGZhY2VWZXJ0ZXhVdnNbIGogXSwgdXZzQ29weSA9IFtdO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIGsgPSAwLCBrbCA9IHV2cy5sZW5ndGg7IGsgPCBrbDsgayArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgdXYgPSB1dnNbIGsgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1dnNDb3B5LnB1c2goIHV2LmNsb25lKCkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5mYWNlVmVydGV4VXZzWyBpIF0ucHVzaCggdXZzQ29weSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gbW9ycGggdGFyZ2V0c1xcblxcblxcdFxcdFxcdHZhciBtb3JwaFRhcmdldHMgPSBzb3VyY2UubW9ycGhUYXJnZXRzO1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBpbCA9IG1vcnBoVGFyZ2V0cy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbW9ycGhUYXJnZXQgPSB7fTtcXG5cXHRcXHRcXHRcXHRtb3JwaFRhcmdldC5uYW1lID0gbW9ycGhUYXJnZXRzWyBpIF0ubmFtZTtcXG5cXG5cXHRcXHRcXHRcXHQvLyB2ZXJ0aWNlc1xcblxcblxcdFxcdFxcdFxcdGlmICggbW9ycGhUYXJnZXRzWyBpIF0udmVydGljZXMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtb3JwaFRhcmdldC52ZXJ0aWNlcyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIGogPSAwLCBqbCA9IG1vcnBoVGFyZ2V0c1sgaSBdLnZlcnRpY2VzLmxlbmd0aDsgaiA8IGpsOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdG1vcnBoVGFyZ2V0LnZlcnRpY2VzLnB1c2goIG1vcnBoVGFyZ2V0c1sgaSBdLnZlcnRpY2VzWyBqIF0uY2xvbmUoKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbm9ybWFsc1xcblxcblxcdFxcdFxcdFxcdGlmICggbW9ycGhUYXJnZXRzWyBpIF0ubm9ybWFscyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdG1vcnBoVGFyZ2V0Lm5vcm1hbHMgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCBqID0gMCwgamwgPSBtb3JwaFRhcmdldHNbIGkgXS5ub3JtYWxzLmxlbmd0aDsgaiA8IGpsOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdG1vcnBoVGFyZ2V0Lm5vcm1hbHMucHVzaCggbW9ycGhUYXJnZXRzWyBpIF0ubm9ybWFsc1sgaiBdLmNsb25lKCkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMubW9ycGhUYXJnZXRzLnB1c2goIG1vcnBoVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIG1vcnBoIG5vcm1hbHNcXG5cXG5cXHRcXHRcXHR2YXIgbW9ycGhOb3JtYWxzID0gc291cmNlLm1vcnBoTm9ybWFscztcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBtb3JwaE5vcm1hbHMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG1vcnBoTm9ybWFsID0ge307XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdmVydGV4IG5vcm1hbHNcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1vcnBoTm9ybWFsc1sgaSBdLnZlcnRleE5vcm1hbHMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtb3JwaE5vcm1hbC52ZXJ0ZXhOb3JtYWxzID0gW107XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggaiA9IDAsIGpsID0gbW9ycGhOb3JtYWxzWyBpIF0udmVydGV4Tm9ybWFscy5sZW5ndGg7IGogPCBqbDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgc3JjVmVydGV4Tm9ybWFsID0gbW9ycGhOb3JtYWxzWyBpIF0udmVydGV4Tm9ybWFsc1sgaiBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBkZXN0VmVydGV4Tm9ybWFsID0ge307XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZGVzdFZlcnRleE5vcm1hbC5hID0gc3JjVmVydGV4Tm9ybWFsLmEuY2xvbmUoKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRkZXN0VmVydGV4Tm9ybWFsLmIgPSBzcmNWZXJ0ZXhOb3JtYWwuYi5jbG9uZSgpO1xcblxcdFxcdFxcdFxcdFxcdFxcdGRlc3RWZXJ0ZXhOb3JtYWwuYyA9IHNyY1ZlcnRleE5vcm1hbC5jLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0bW9ycGhOb3JtYWwudmVydGV4Tm9ybWFscy5wdXNoKCBkZXN0VmVydGV4Tm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBmYWNlIG5vcm1hbHNcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1vcnBoTm9ybWFsc1sgaSBdLmZhY2VOb3JtYWxzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bW9ycGhOb3JtYWwuZmFjZU5vcm1hbHMgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCBqID0gMCwgamwgPSBtb3JwaE5vcm1hbHNbIGkgXS5mYWNlTm9ybWFscy5sZW5ndGg7IGogPCBqbDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRtb3JwaE5vcm1hbC5mYWNlTm9ybWFscy5wdXNoKCBtb3JwaE5vcm1hbHNbIGkgXS5mYWNlTm9ybWFsc1sgaiBdLmNsb25lKCkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMubW9ycGhOb3JtYWxzLnB1c2goIG1vcnBoTm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHNraW4gd2VpZ2h0c1xcblxcblxcdFxcdFxcdHZhciBza2luV2VpZ2h0cyA9IHNvdXJjZS5za2luV2VpZ2h0cztcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBza2luV2VpZ2h0cy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnNraW5XZWlnaHRzLnB1c2goIHNraW5XZWlnaHRzWyBpIF0uY2xvbmUoKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBza2luIGluZGljZXNcXG5cXG5cXHRcXHRcXHR2YXIgc2tpbkluZGljZXMgPSBzb3VyY2Uuc2tpbkluZGljZXM7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDAsIGlsID0gc2tpbkluZGljZXMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5za2luSW5kaWNlcy5wdXNoKCBza2luSW5kaWNlc1sgaSBdLmNsb25lKCkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gbGluZSBkaXN0YW5jZXNcXG5cXG5cXHRcXHRcXHR2YXIgbGluZURpc3RhbmNlcyA9IHNvdXJjZS5saW5lRGlzdGFuY2VzO1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBpbCA9IGxpbmVEaXN0YW5jZXMubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5saW5lRGlzdGFuY2VzLnB1c2goIGxpbmVEaXN0YW5jZXNbIGkgXSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBib3VuZGluZyBib3hcXG5cXG5cXHRcXHRcXHR2YXIgYm91bmRpbmdCb3ggPSBzb3VyY2UuYm91bmRpbmdCb3g7XFxuXFxuXFx0XFx0XFx0aWYgKCBib3VuZGluZ0JveCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJvdW5kaW5nQm94ID0gYm91bmRpbmdCb3guY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gYm91bmRpbmcgc3BoZXJlXFxuXFxuXFx0XFx0XFx0dmFyIGJvdW5kaW5nU3BoZXJlID0gc291cmNlLmJvdW5kaW5nU3BoZXJlO1xcblxcblxcdFxcdFxcdGlmICggYm91bmRpbmdTcGhlcmUgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ib3VuZGluZ1NwaGVyZSA9IGJvdW5kaW5nU3BoZXJlLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHVwZGF0ZSBmbGFnc1xcblxcblxcdFxcdFxcdHRoaXMuZWxlbWVudHNOZWVkVXBkYXRlID0gc291cmNlLmVsZW1lbnRzTmVlZFVwZGF0ZTtcXG5cXHRcXHRcXHR0aGlzLnZlcnRpY2VzTmVlZFVwZGF0ZSA9IHNvdXJjZS52ZXJ0aWNlc05lZWRVcGRhdGU7XFxuXFx0XFx0XFx0dGhpcy51dnNOZWVkVXBkYXRlID0gc291cmNlLnV2c05lZWRVcGRhdGU7XFxuXFx0XFx0XFx0dGhpcy5ub3JtYWxzTmVlZFVwZGF0ZSA9IHNvdXJjZS5ub3JtYWxzTmVlZFVwZGF0ZTtcXG5cXHRcXHRcXHR0aGlzLmNvbG9yc05lZWRVcGRhdGUgPSBzb3VyY2UuY29sb3JzTmVlZFVwZGF0ZTtcXG5cXHRcXHRcXHR0aGlzLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlID0gc291cmNlLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlO1xcblxcdFxcdFxcdHRoaXMuZ3JvdXBzTmVlZFVwZGF0ZSA9IHNvdXJjZS5ncm91cHNOZWVkVXBkYXRlO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGlzcG9zZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuZGlzcGF0Y2hFdmVudCggeyB0eXBlOiAnZGlzcG9zZScgfSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApIHtcXG5cXG5cXHRcXHRpZiAoIEFycmF5LmlzQXJyYXkoIGFycmF5ICkgKSB7XFxuXFxuXFx0XFx0XFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ1RIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuJyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLnV1aWQgPSBfTWF0aC5nZW5lcmF0ZVVVSUQoKTtcXG5cXHRcXHR0aGlzLm5hbWUgPSAnJztcXG5cXG5cXHRcXHR0aGlzLmFycmF5ID0gYXJyYXk7XFxuXFx0XFx0dGhpcy5pdGVtU2l6ZSA9IGl0ZW1TaXplO1xcblxcdFxcdHRoaXMuY291bnQgPSBhcnJheSAhPT0gdW5kZWZpbmVkID8gYXJyYXkubGVuZ3RoIC8gaXRlbVNpemUgOiAwO1xcblxcdFxcdHRoaXMubm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQgPT09IHRydWU7XFxuXFxuXFx0XFx0dGhpcy5keW5hbWljID0gZmFsc2U7XFxuXFx0XFx0dGhpcy51cGRhdGVSYW5nZSA9IHsgb2Zmc2V0OiAwLCBjb3VudDogLSAxIH07XFxuXFxuXFx0XFx0dGhpcy5vblVwbG9hZENhbGxiYWNrID0gZnVuY3Rpb24gKCkge307XFxuXFxuXFx0XFx0dGhpcy52ZXJzaW9uID0gMDtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBCdWZmZXJBdHRyaWJ1dGUucHJvdG90eXBlLCAnbmVlZHNVcGRhdGUnLCB7XFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdGlmICggdmFsdWUgPT09IHRydWUgKSB0aGlzLnZlcnNpb24gKys7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBCdWZmZXJBdHRyaWJ1dGUucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0aXNCdWZmZXJBdHRyaWJ1dGU6IHRydWUsXFxuXFxuXFx0XFx0c2V0QXJyYXk6IGZ1bmN0aW9uICggYXJyYXkgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBBcnJheS5pc0FycmF5KCBhcnJheSApICkge1xcblxcblxcdFxcdFxcdFxcdHRocm93IG5ldyBUeXBlRXJyb3IoICdUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IGFycmF5IHNob3VsZCBiZSBhIFR5cGVkIEFycmF5LicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5jb3VudCA9IGFycmF5ICE9PSB1bmRlZmluZWQgPyBhcnJheS5sZW5ndGggLyB0aGlzLml0ZW1TaXplIDogMDtcXG5cXHRcXHRcXHR0aGlzLmFycmF5ID0gYXJyYXk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXREeW5hbWljOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMuZHluYW1pYyA9IHZhbHVlO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5hcnJheSA9IG5ldyBzb3VyY2UuYXJyYXkuY29uc3RydWN0b3IoIHNvdXJjZS5hcnJheSApO1xcblxcdFxcdFxcdHRoaXMuaXRlbVNpemUgPSBzb3VyY2UuaXRlbVNpemU7XFxuXFx0XFx0XFx0dGhpcy5jb3VudCA9IHNvdXJjZS5jb3VudDtcXG5cXHRcXHRcXHR0aGlzLm5vcm1hbGl6ZWQgPSBzb3VyY2Uubm9ybWFsaXplZDtcXG5cXG5cXHRcXHRcXHR0aGlzLmR5bmFtaWMgPSBzb3VyY2UuZHluYW1pYztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHlBdDogZnVuY3Rpb24gKCBpbmRleDEsIGF0dHJpYnV0ZSwgaW5kZXgyICkge1xcblxcblxcdFxcdFxcdGluZGV4MSAqPSB0aGlzLml0ZW1TaXplO1xcblxcdFxcdFxcdGluZGV4MiAqPSBhdHRyaWJ1dGUuaXRlbVNpemU7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gdGhpcy5pdGVtU2l6ZTsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hcnJheVsgaW5kZXgxICsgaSBdID0gYXR0cmlidXRlLmFycmF5WyBpbmRleDIgKyBpIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weUFycmF5OiBmdW5jdGlvbiAoIGFycmF5ICkge1xcblxcblxcdFxcdFxcdHRoaXMuYXJyYXkuc2V0KCBhcnJheSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weUNvbG9yc0FycmF5OiBmdW5jdGlvbiAoIGNvbG9ycyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYXJyYXkgPSB0aGlzLmFycmF5LCBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGNvbG9ycy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjb2xvciA9IGNvbG9yc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggY29sb3IgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weUNvbG9yc0FycmF5KCk6IGNvbG9yIGlzIHVuZGVmaW5lZCcsIGkgKTtcXG5cXHRcXHRcXHRcXHRcXHRjb2xvciA9IG5ldyBDb2xvcigpO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsrIF0gPSBjb2xvci5yO1xcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IGNvbG9yLmc7XFxuXFx0XFx0XFx0XFx0YXJyYXlbIG9mZnNldCArKyBdID0gY29sb3IuYjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5SW5kaWNlc0FycmF5OiBmdW5jdGlvbiAoIGluZGljZXMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFycmF5ID0gdGhpcy5hcnJheSwgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBpbmRpY2VzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGluZGV4ID0gaW5kaWNlc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IGluZGV4LmE7XFxuXFx0XFx0XFx0XFx0YXJyYXlbIG9mZnNldCArKyBdID0gaW5kZXguYjtcXG5cXHRcXHRcXHRcXHRhcnJheVsgb2Zmc2V0ICsrIF0gPSBpbmRleC5jO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHlWZWN0b3Iyc0FycmF5OiBmdW5jdGlvbiAoIHZlY3RvcnMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFycmF5ID0gdGhpcy5hcnJheSwgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSB2ZWN0b3JzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZlY3RvciA9IHZlY3RvcnNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHZlY3RvciA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yMnNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkJywgaSApO1xcblxcdFxcdFxcdFxcdFxcdHZlY3RvciA9IG5ldyBWZWN0b3IyKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci54O1xcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci55O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHlWZWN0b3Izc0FycmF5OiBmdW5jdGlvbiAoIHZlY3RvcnMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFycmF5ID0gdGhpcy5hcnJheSwgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSB2ZWN0b3JzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZlY3RvciA9IHZlY3RvcnNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHZlY3RvciA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yM3NBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkJywgaSApO1xcblxcdFxcdFxcdFxcdFxcdHZlY3RvciA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci54O1xcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci55O1xcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci56O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHlWZWN0b3I0c0FycmF5OiBmdW5jdGlvbiAoIHZlY3RvcnMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFycmF5ID0gdGhpcy5hcnJheSwgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSB2ZWN0b3JzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZlY3RvciA9IHZlY3RvcnNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHZlY3RvciA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yNHNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkJywgaSApO1xcblxcdFxcdFxcdFxcdFxcdHZlY3RvciA9IG5ldyBWZWN0b3I0KCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci54O1xcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci55O1xcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci56O1xcblxcdFxcdFxcdFxcdGFycmF5WyBvZmZzZXQgKysgXSA9IHZlY3Rvci53O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggb2Zmc2V0ID09PSB1bmRlZmluZWQgKSBvZmZzZXQgPSAwO1xcblxcblxcdFxcdFxcdHRoaXMuYXJyYXkuc2V0KCB2YWx1ZSwgb2Zmc2V0ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRYOiBmdW5jdGlvbiAoIGluZGV4ICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmFycmF5WyBpbmRleCAqIHRoaXMuaXRlbVNpemUgXTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFg6IGZ1bmN0aW9uICggaW5kZXgsIHggKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5hcnJheVsgaW5kZXggKiB0aGlzLml0ZW1TaXplIF0gPSB4O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0WTogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5hcnJheVsgaW5kZXggKiB0aGlzLml0ZW1TaXplICsgMSBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WTogZnVuY3Rpb24gKCBpbmRleCwgeSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFycmF5WyBpbmRleCAqIHRoaXMuaXRlbVNpemUgKyAxIF0gPSB5O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0WjogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5hcnJheVsgaW5kZXggKiB0aGlzLml0ZW1TaXplICsgMiBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WjogZnVuY3Rpb24gKCBpbmRleCwgeiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFycmF5WyBpbmRleCAqIHRoaXMuaXRlbVNpemUgKyAyIF0gPSB6O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0VzogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5hcnJheVsgaW5kZXggKiB0aGlzLml0ZW1TaXplICsgMyBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0VzogZnVuY3Rpb24gKCBpbmRleCwgdyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFycmF5WyBpbmRleCAqIHRoaXMuaXRlbVNpemUgKyAzIF0gPSB3O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WFk6IGZ1bmN0aW9uICggaW5kZXgsIHgsIHkgKSB7XFxuXFxuXFx0XFx0XFx0aW5kZXggKj0gdGhpcy5pdGVtU2l6ZTtcXG5cXG5cXHRcXHRcXHR0aGlzLmFycmF5WyBpbmRleCArIDAgXSA9IHg7XFxuXFx0XFx0XFx0dGhpcy5hcnJheVsgaW5kZXggKyAxIF0gPSB5O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WFlaOiBmdW5jdGlvbiAoIGluZGV4LCB4LCB5LCB6ICkge1xcblxcblxcdFxcdFxcdGluZGV4ICo9IHRoaXMuaXRlbVNpemU7XFxuXFxuXFx0XFx0XFx0dGhpcy5hcnJheVsgaW5kZXggKyAwIF0gPSB4O1xcblxcdFxcdFxcdHRoaXMuYXJyYXlbIGluZGV4ICsgMSBdID0geTtcXG5cXHRcXHRcXHR0aGlzLmFycmF5WyBpbmRleCArIDIgXSA9IHo7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRYWVpXOiBmdW5jdGlvbiAoIGluZGV4LCB4LCB5LCB6LCB3ICkge1xcblxcblxcdFxcdFxcdGluZGV4ICo9IHRoaXMuaXRlbVNpemU7XFxuXFxuXFx0XFx0XFx0dGhpcy5hcnJheVsgaW5kZXggKyAwIF0gPSB4O1xcblxcdFxcdFxcdHRoaXMuYXJyYXlbIGluZGV4ICsgMSBdID0geTtcXG5cXHRcXHRcXHR0aGlzLmFycmF5WyBpbmRleCArIDIgXSA9IHo7XFxuXFx0XFx0XFx0dGhpcy5hcnJheVsgaW5kZXggKyAzIF0gPSB3O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0b25VcGxvYWQ6IGZ1bmN0aW9uICggY2FsbGJhY2sgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5vblVwbG9hZENhbGxiYWNrID0gY2FsbGJhY2s7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvciggdGhpcy5hcnJheSwgdGhpcy5pdGVtU2l6ZSApLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8vXFxuXFxuXFx0ZnVuY3Rpb24gSW50OEJ1ZmZlckF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplLCBub3JtYWxpemVkICkge1xcblxcblxcdFxcdEJ1ZmZlckF0dHJpYnV0ZS5jYWxsKCB0aGlzLCBuZXcgSW50OEFycmF5KCBhcnJheSApLCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApO1xcblxcblxcdH1cXG5cXG5cXHRJbnQ4QnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUgKTtcXG5cXHRJbnQ4QnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEludDhCdWZmZXJBdHRyaWJ1dGU7XFxuXFxuXFxuXFx0ZnVuY3Rpb24gVWludDhCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApIHtcXG5cXG5cXHRcXHRCdWZmZXJBdHRyaWJ1dGUuY2FsbCggdGhpcywgbmV3IFVpbnQ4QXJyYXkoIGFycmF5ICksIGl0ZW1TaXplLCBub3JtYWxpemVkICk7XFxuXFxuXFx0fVxcblxcblxcdFVpbnQ4QnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUgKTtcXG5cXHRVaW50OEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVaW50OEJ1ZmZlckF0dHJpYnV0ZTtcXG5cXG5cXG5cXHRmdW5jdGlvbiBVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApIHtcXG5cXG5cXHRcXHRCdWZmZXJBdHRyaWJ1dGUuY2FsbCggdGhpcywgbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KCBhcnJheSApLCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApO1xcblxcblxcdH1cXG5cXG5cXHRVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSApO1xcblxcdFVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU7XFxuXFxuXFxuXFx0ZnVuY3Rpb24gSW50MTZCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApIHtcXG5cXG5cXHRcXHRCdWZmZXJBdHRyaWJ1dGUuY2FsbCggdGhpcywgbmV3IEludDE2QXJyYXkoIGFycmF5ICksIGl0ZW1TaXplLCBub3JtYWxpemVkICk7XFxuXFxuXFx0fVxcblxcblxcdEludDE2QnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUgKTtcXG5cXHRJbnQxNkJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJbnQxNkJ1ZmZlckF0dHJpYnV0ZTtcXG5cXG5cXG5cXHRmdW5jdGlvbiBVaW50MTZCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApIHtcXG5cXG5cXHRcXHRCdWZmZXJBdHRyaWJ1dGUuY2FsbCggdGhpcywgbmV3IFVpbnQxNkFycmF5KCBhcnJheSApLCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApO1xcblxcblxcdH1cXG5cXG5cXHRVaW50MTZCdWZmZXJBdHRyaWJ1dGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSApO1xcblxcdFVpbnQxNkJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVaW50MTZCdWZmZXJBdHRyaWJ1dGU7XFxuXFxuXFxuXFx0ZnVuY3Rpb24gSW50MzJCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApIHtcXG5cXG5cXHRcXHRCdWZmZXJBdHRyaWJ1dGUuY2FsbCggdGhpcywgbmV3IEludDMyQXJyYXkoIGFycmF5ICksIGl0ZW1TaXplLCBub3JtYWxpemVkICk7XFxuXFxuXFx0fVxcblxcblxcdEludDMyQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUgKTtcXG5cXHRJbnQzMkJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJbnQzMkJ1ZmZlckF0dHJpYnV0ZTtcXG5cXG5cXG5cXHRmdW5jdGlvbiBVaW50MzJCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApIHtcXG5cXG5cXHRcXHRCdWZmZXJBdHRyaWJ1dGUuY2FsbCggdGhpcywgbmV3IFVpbnQzMkFycmF5KCBhcnJheSApLCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApO1xcblxcblxcdH1cXG5cXG5cXHRVaW50MzJCdWZmZXJBdHRyaWJ1dGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSApO1xcblxcdFVpbnQzMkJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBVaW50MzJCdWZmZXJBdHRyaWJ1dGU7XFxuXFxuXFxuXFx0ZnVuY3Rpb24gRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplLCBub3JtYWxpemVkICkge1xcblxcblxcdFxcdEJ1ZmZlckF0dHJpYnV0ZS5jYWxsKCB0aGlzLCBuZXcgRmxvYXQzMkFycmF5KCBhcnJheSApLCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApO1xcblxcblxcdH1cXG5cXG5cXHRGbG9hdDMyQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUgKTtcXG5cXHRGbG9hdDMyQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU7XFxuXFxuXFxuXFx0ZnVuY3Rpb24gRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplLCBub3JtYWxpemVkICkge1xcblxcblxcdFxcdEJ1ZmZlckF0dHJpYnV0ZS5jYWxsKCB0aGlzLCBuZXcgRmxvYXQ2NEFycmF5KCBhcnJheSApLCBpdGVtU2l6ZSwgbm9ybWFsaXplZCApO1xcblxcblxcdH1cXG5cXG5cXHRGbG9hdDY0QnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUgKTtcXG5cXHRGbG9hdDY0QnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEZsb2F0NjRCdWZmZXJBdHRyaWJ1dGU7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBEaXJlY3RHZW9tZXRyeSgpIHtcXG5cXG5cXHRcXHR0aGlzLmluZGljZXMgPSBbXTtcXG5cXHRcXHR0aGlzLnZlcnRpY2VzID0gW107XFxuXFx0XFx0dGhpcy5ub3JtYWxzID0gW107XFxuXFx0XFx0dGhpcy5jb2xvcnMgPSBbXTtcXG5cXHRcXHR0aGlzLnV2cyA9IFtdO1xcblxcdFxcdHRoaXMudXZzMiA9IFtdO1xcblxcblxcdFxcdHRoaXMuZ3JvdXBzID0gW107XFxuXFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSB7fTtcXG5cXG5cXHRcXHR0aGlzLnNraW5XZWlnaHRzID0gW107XFxuXFx0XFx0dGhpcy5za2luSW5kaWNlcyA9IFtdO1xcblxcblxcdFxcdC8vIHRoaXMubGluZURpc3RhbmNlcyA9IFtdO1xcblxcblxcdFxcdHRoaXMuYm91bmRpbmdCb3ggPSBudWxsO1xcblxcdFxcdHRoaXMuYm91bmRpbmdTcGhlcmUgPSBudWxsO1xcblxcblxcdFxcdC8vIHVwZGF0ZSBmbGFnc1xcblxcblxcdFxcdHRoaXMudmVydGljZXNOZWVkVXBkYXRlID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5ub3JtYWxzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMuY29sb3JzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMudXZzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMuZ3JvdXBzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBEaXJlY3RHZW9tZXRyeS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRjb21wdXRlR3JvdXBzOiBmdW5jdGlvbiAoIGdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdHZhciBncm91cDtcXG5cXHRcXHRcXHR2YXIgZ3JvdXBzID0gW107XFxuXFx0XFx0XFx0dmFyIG1hdGVyaWFsSW5kZXggPSB1bmRlZmluZWQ7XFxuXFxuXFx0XFx0XFx0dmFyIGZhY2VzID0gZ2VvbWV0cnkuZmFjZXM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgZmFjZXMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBmYWNlID0gZmFjZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBtYXRlcmlhbHNcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGZhY2UubWF0ZXJpYWxJbmRleCAhPT0gbWF0ZXJpYWxJbmRleCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtYXRlcmlhbEluZGV4ID0gZmFjZS5tYXRlcmlhbEluZGV4O1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggZ3JvdXAgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRncm91cC5jb3VudCA9ICggaSAqIDMgKSAtIGdyb3VwLnN0YXJ0O1xcblxcdFxcdFxcdFxcdFxcdFxcdGdyb3Vwcy5wdXNoKCBncm91cCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRncm91cCA9IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRzdGFydDogaSAqIDMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWxJbmRleDogbWF0ZXJpYWxJbmRleFxcblxcdFxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGdyb3VwICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Z3JvdXAuY291bnQgPSAoIGkgKiAzICkgLSBncm91cC5zdGFydDtcXG5cXHRcXHRcXHRcXHRncm91cHMucHVzaCggZ3JvdXAgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5ncm91cHMgPSBncm91cHM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tR2VvbWV0cnk6IGZ1bmN0aW9uICggZ2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGZhY2VzID0gZ2VvbWV0cnkuZmFjZXM7XFxuXFx0XFx0XFx0dmFyIHZlcnRpY2VzID0gZ2VvbWV0cnkudmVydGljZXM7XFxuXFx0XFx0XFx0dmFyIGZhY2VWZXJ0ZXhVdnMgPSBnZW9tZXRyeS5mYWNlVmVydGV4VXZzO1xcblxcblxcdFxcdFxcdHZhciBoYXNGYWNlVmVydGV4VXYgPSBmYWNlVmVydGV4VXZzWyAwIF0gJiYgZmFjZVZlcnRleFV2c1sgMCBdLmxlbmd0aCA+IDA7XFxuXFx0XFx0XFx0dmFyIGhhc0ZhY2VWZXJ0ZXhVdjIgPSBmYWNlVmVydGV4VXZzWyAxIF0gJiYgZmFjZVZlcnRleFV2c1sgMSBdLmxlbmd0aCA+IDA7XFxuXFxuXFx0XFx0XFx0Ly8gbW9ycGhzXFxuXFxuXFx0XFx0XFx0dmFyIG1vcnBoVGFyZ2V0cyA9IGdlb21ldHJ5Lm1vcnBoVGFyZ2V0cztcXG5cXHRcXHRcXHR2YXIgbW9ycGhUYXJnZXRzTGVuZ3RoID0gbW9ycGhUYXJnZXRzLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHR2YXIgbW9ycGhUYXJnZXRzUG9zaXRpb247XFxuXFxuXFx0XFx0XFx0aWYgKCBtb3JwaFRhcmdldHNMZW5ndGggPiAwICkge1xcblxcblxcdFxcdFxcdFxcdG1vcnBoVGFyZ2V0c1Bvc2l0aW9uID0gW107XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbW9ycGhUYXJnZXRzTGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdG1vcnBoVGFyZ2V0c1Bvc2l0aW9uWyBpIF0gPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5tb3JwaFRhcmdldHMucG9zaXRpb24gPSBtb3JwaFRhcmdldHNQb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIG1vcnBoTm9ybWFscyA9IGdlb21ldHJ5Lm1vcnBoTm9ybWFscztcXG5cXHRcXHRcXHR2YXIgbW9ycGhOb3JtYWxzTGVuZ3RoID0gbW9ycGhOb3JtYWxzLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHR2YXIgbW9ycGhUYXJnZXRzTm9ybWFsO1xcblxcblxcdFxcdFxcdGlmICggbW9ycGhOb3JtYWxzTGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRtb3JwaFRhcmdldHNOb3JtYWwgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBtb3JwaE5vcm1hbHNMZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bW9ycGhUYXJnZXRzTm9ybWFsWyBpIF0gPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5tb3JwaFRhcmdldHMubm9ybWFsID0gbW9ycGhUYXJnZXRzTm9ybWFsO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBza2luc1xcblxcblxcdFxcdFxcdHZhciBza2luSW5kaWNlcyA9IGdlb21ldHJ5LnNraW5JbmRpY2VzO1xcblxcdFxcdFxcdHZhciBza2luV2VpZ2h0cyA9IGdlb21ldHJ5LnNraW5XZWlnaHRzO1xcblxcblxcdFxcdFxcdHZhciBoYXNTa2luSW5kaWNlcyA9IHNraW5JbmRpY2VzLmxlbmd0aCA9PT0gdmVydGljZXMubGVuZ3RoO1xcblxcdFxcdFxcdHZhciBoYXNTa2luV2VpZ2h0cyA9IHNraW5XZWlnaHRzLmxlbmd0aCA9PT0gdmVydGljZXMubGVuZ3RoO1xcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgZmFjZXMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBmYWNlID0gZmFjZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnZlcnRpY2VzLnB1c2goIHZlcnRpY2VzWyBmYWNlLmEgXSwgdmVydGljZXNbIGZhY2UuYiBdLCB2ZXJ0aWNlc1sgZmFjZS5jIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdmVydGV4Tm9ybWFscyA9IGZhY2UudmVydGV4Tm9ybWFscztcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHZlcnRleE5vcm1hbHMubGVuZ3RoID09PSAzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMubm9ybWFscy5wdXNoKCB2ZXJ0ZXhOb3JtYWxzWyAwIF0sIHZlcnRleE5vcm1hbHNbIDEgXSwgdmVydGV4Tm9ybWFsc1sgMiBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgbm9ybWFsID0gZmFjZS5ub3JtYWw7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5ub3JtYWxzLnB1c2goIG5vcm1hbCwgbm9ybWFsLCBub3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZlcnRleENvbG9ycyA9IGZhY2UudmVydGV4Q29sb3JzO1xcblxcblxcdFxcdFxcdFxcdGlmICggdmVydGV4Q29sb3JzLmxlbmd0aCA9PT0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmNvbG9ycy5wdXNoKCB2ZXJ0ZXhDb2xvcnNbIDAgXSwgdmVydGV4Q29sb3JzWyAxIF0sIHZlcnRleENvbG9yc1sgMiBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgY29sb3IgPSBmYWNlLmNvbG9yO1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuY29sb3JzLnB1c2goIGNvbG9yLCBjb2xvciwgY29sb3IgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBoYXNGYWNlVmVydGV4VXYgPT09IHRydWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHZlcnRleFV2cyA9IGZhY2VWZXJ0ZXhVdnNbIDAgXVsgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggdmVydGV4VXZzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy51dnMucHVzaCggdmVydGV4VXZzWyAwIF0sIHZlcnRleFV2c1sgMSBdLCB2ZXJ0ZXhVdnNbIDIgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuRGlyZWN0R2VvbWV0cnkuZnJvbUdlb21ldHJ5KCk6IFVuZGVmaW5lZCB2ZXJ0ZXhVdiAnLCBpICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy51dnMucHVzaCggbmV3IFZlY3RvcjIoKSwgbmV3IFZlY3RvcjIoKSwgbmV3IFZlY3RvcjIoKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBoYXNGYWNlVmVydGV4VXYyID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB2ZXJ0ZXhVdnMgPSBmYWNlVmVydGV4VXZzWyAxIF1bIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHZlcnRleFV2cyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMudXZzMi5wdXNoKCB2ZXJ0ZXhVdnNbIDAgXSwgdmVydGV4VXZzWyAxIF0sIHZlcnRleFV2c1sgMiBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5EaXJlY3RHZW9tZXRyeS5mcm9tR2VvbWV0cnkoKTogVW5kZWZpbmVkIHZlcnRleFV2MiAnLCBpICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy51dnMyLnB1c2goIG5ldyBWZWN0b3IyKCksIG5ldyBWZWN0b3IyKCksIG5ldyBWZWN0b3IyKCkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdC8vIG1vcnBoc1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMDsgaiA8IG1vcnBoVGFyZ2V0c0xlbmd0aDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgbW9ycGhUYXJnZXQgPSBtb3JwaFRhcmdldHNbIGogXS52ZXJ0aWNlcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRtb3JwaFRhcmdldHNQb3NpdGlvblsgaiBdLnB1c2goIG1vcnBoVGFyZ2V0WyBmYWNlLmEgXSwgbW9ycGhUYXJnZXRbIGZhY2UuYiBdLCBtb3JwaFRhcmdldFsgZmFjZS5jIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwOyBqIDwgbW9ycGhOb3JtYWxzTGVuZ3RoOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBtb3JwaE5vcm1hbCA9IG1vcnBoTm9ybWFsc1sgaiBdLnZlcnRleE5vcm1hbHNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtb3JwaFRhcmdldHNOb3JtYWxbIGogXS5wdXNoKCBtb3JwaE5vcm1hbC5hLCBtb3JwaE5vcm1hbC5iLCBtb3JwaE5vcm1hbC5jICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdC8vIHNraW5zXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBoYXNTa2luSW5kaWNlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnNraW5JbmRpY2VzLnB1c2goIHNraW5JbmRpY2VzWyBmYWNlLmEgXSwgc2tpbkluZGljZXNbIGZhY2UuYiBdLCBza2luSW5kaWNlc1sgZmFjZS5jIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBoYXNTa2luV2VpZ2h0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnNraW5XZWlnaHRzLnB1c2goIHNraW5XZWlnaHRzWyBmYWNlLmEgXSwgc2tpbldlaWdodHNbIGZhY2UuYiBdLCBza2luV2VpZ2h0c1sgZmFjZS5jIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuY29tcHV0ZUdyb3VwcyggZ2VvbWV0cnkgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLnZlcnRpY2VzTmVlZFVwZGF0ZSA9IGdlb21ldHJ5LnZlcnRpY2VzTmVlZFVwZGF0ZTtcXG5cXHRcXHRcXHR0aGlzLm5vcm1hbHNOZWVkVXBkYXRlID0gZ2VvbWV0cnkubm9ybWFsc05lZWRVcGRhdGU7XFxuXFx0XFx0XFx0dGhpcy5jb2xvcnNOZWVkVXBkYXRlID0gZ2VvbWV0cnkuY29sb3JzTmVlZFVwZGF0ZTtcXG5cXHRcXHRcXHR0aGlzLnV2c05lZWRVcGRhdGUgPSBnZW9tZXRyeS51dnNOZWVkVXBkYXRlO1xcblxcdFxcdFxcdHRoaXMuZ3JvdXBzTmVlZFVwZGF0ZSA9IGdlb21ldHJ5Lmdyb3Vwc05lZWRVcGRhdGU7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIGFycmF5TWF4KCBhcnJheSApIHtcXG5cXG5cXHRcXHRpZiAoIGFycmF5Lmxlbmd0aCA9PT0gMCApIHJldHVybiAtIEluZmluaXR5O1xcblxcblxcdFxcdHZhciBtYXggPSBhcnJheVsgMCBdO1xcblxcblxcdFxcdGZvciAoIHZhciBpID0gMSwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBhcnJheVsgaSBdID4gbWF4ICkgbWF4ID0gYXJyYXlbIGkgXTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIG1heDtcXG5cXG5cXHR9XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdHZhciBidWZmZXJHZW9tZXRyeUlkID0gMTsgLy8gQnVmZmVyR2VvbWV0cnkgdXNlcyBvZGQgbnVtYmVycyBhcyBJZFxcblxcblxcdGZ1bmN0aW9uIEJ1ZmZlckdlb21ldHJ5KCkge1xcblxcblxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgJ2lkJywgeyB2YWx1ZTogYnVmZmVyR2VvbWV0cnlJZCArPSAyIH0gKTtcXG5cXG5cXHRcXHR0aGlzLnV1aWQgPSBfTWF0aC5nZW5lcmF0ZVVVSUQoKTtcXG5cXG5cXHRcXHR0aGlzLm5hbWUgPSAnJztcXG5cXHRcXHR0aGlzLnR5cGUgPSAnQnVmZmVyR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMuaW5kZXggPSBudWxsO1xcblxcdFxcdHRoaXMuYXR0cmlidXRlcyA9IHt9O1xcblxcblxcdFxcdHRoaXMubW9ycGhBdHRyaWJ1dGVzID0ge307XFxuXFxuXFx0XFx0dGhpcy5ncm91cHMgPSBbXTtcXG5cXG5cXHRcXHR0aGlzLmJvdW5kaW5nQm94ID0gbnVsbDtcXG5cXHRcXHR0aGlzLmJvdW5kaW5nU3BoZXJlID0gbnVsbDtcXG5cXG5cXHRcXHR0aGlzLmRyYXdSYW5nZSA9IHsgc3RhcnQ6IDAsIGNvdW50OiBJbmZpbml0eSB9O1xcblxcblxcdH1cXG5cXG5cXHRCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogQnVmZmVyR2VvbWV0cnksXFxuXFxuXFx0XFx0aXNCdWZmZXJHZW9tZXRyeTogdHJ1ZSxcXG5cXG5cXHRcXHRnZXRJbmRleDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmluZGV4O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0SW5kZXg6IGZ1bmN0aW9uICggaW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBBcnJheS5pc0FycmF5KCBpbmRleCApICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuaW5kZXggPSBuZXcgKCBhcnJheU1heCggaW5kZXggKSA+IDY1NTM1ID8gVWludDMyQnVmZmVyQXR0cmlidXRlIDogVWludDE2QnVmZmVyQXR0cmlidXRlICkoIGluZGV4LCAxICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmluZGV4ID0gaW5kZXg7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWRkQXR0cmlidXRlOiBmdW5jdGlvbiAoIG5hbWUsIGF0dHJpYnV0ZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoICEgKCBhdHRyaWJ1dGUgJiYgYXR0cmlidXRlLmlzQnVmZmVyQXR0cmlidXRlICkgJiYgISAoIGF0dHJpYnV0ZSAmJiBhdHRyaWJ1dGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSApICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4nICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoIG5hbWUsIG5ldyBCdWZmZXJBdHRyaWJ1dGUoIGFyZ3VtZW50c1sgMSBdLCBhcmd1bWVudHNbIDIgXSApICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG5hbWUgPT09ICdpbmRleCcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQnVmZmVyR2VvbWV0cnkuYWRkQXR0cmlidXRlOiBVc2UgLnNldEluZGV4KCkgZm9yIGluZGV4IGF0dHJpYnV0ZS4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5zZXRJbmRleCggYXR0cmlidXRlICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLmF0dHJpYnV0ZXNbIG5hbWUgXSA9IGF0dHJpYnV0ZTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldEF0dHJpYnV0ZTogZnVuY3Rpb24gKCBuYW1lICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmF0dHJpYnV0ZXNbIG5hbWUgXTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJlbW92ZUF0dHJpYnV0ZTogZnVuY3Rpb24gKCBuYW1lICkge1xcblxcblxcdFxcdFxcdGRlbGV0ZSB0aGlzLmF0dHJpYnV0ZXNbIG5hbWUgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFkZEdyb3VwOiBmdW5jdGlvbiAoIHN0YXJ0LCBjb3VudCwgbWF0ZXJpYWxJbmRleCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmdyb3Vwcy5wdXNoKCB7XFxuXFxuXFx0XFx0XFx0XFx0c3RhcnQ6IHN0YXJ0LFxcblxcdFxcdFxcdFxcdGNvdW50OiBjb3VudCxcXG5cXHRcXHRcXHRcXHRtYXRlcmlhbEluZGV4OiBtYXRlcmlhbEluZGV4ICE9PSB1bmRlZmluZWQgPyBtYXRlcmlhbEluZGV4IDogMFxcblxcblxcdFxcdFxcdH0gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsZWFyR3JvdXBzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5ncm91cHMgPSBbXTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldERyYXdSYW5nZTogZnVuY3Rpb24gKCBzdGFydCwgY291bnQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5kcmF3UmFuZ2Uuc3RhcnQgPSBzdGFydDtcXG5cXHRcXHRcXHR0aGlzLmRyYXdSYW5nZS5jb3VudCA9IGNvdW50O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXBwbHlNYXRyaXg6IGZ1bmN0aW9uICggbWF0cml4ICkge1xcblxcblxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IHRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRpZiAoIHBvc2l0aW9uICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bWF0cml4LmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoIHBvc2l0aW9uICk7XFxuXFx0XFx0XFx0XFx0cG9zaXRpb24ubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgbm9ybWFsID0gdGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtcXG5cXG5cXHRcXHRcXHRpZiAoIG5vcm1hbCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBub3JtYWxNYXRyaXggPSBuZXcgTWF0cml4MygpLmdldE5vcm1hbE1hdHJpeCggbWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0bm9ybWFsTWF0cml4LmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoIG5vcm1hbCApO1xcblxcdFxcdFxcdFxcdG5vcm1hbC5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5ib3VuZGluZ0JveCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuYm91bmRpbmdTcGhlcmUgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyb3RhdGVYOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gcm90YXRlIGdlb21ldHJ5IGFyb3VuZCB3b3JsZCB4LWF4aXNcXG5cXG5cXHRcXHRcXHR2YXIgbTEgPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiByb3RhdGVYKCBhbmdsZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRtMS5tYWtlUm90YXRpb25YKCBhbmdsZSApO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuYXBwbHlNYXRyaXgoIG0xICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0cm90YXRlWTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIHJvdGF0ZSBnZW9tZXRyeSBhcm91bmQgd29ybGQgeS1heGlzXFxuXFxuXFx0XFx0XFx0dmFyIG0xID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gcm90YXRlWSggYW5nbGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bTEubWFrZVJvdGF0aW9uWSggYW5nbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmFwcGx5TWF0cml4KCBtMSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHJvdGF0ZVo6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyByb3RhdGUgZ2VvbWV0cnkgYXJvdW5kIHdvcmxkIHotYXhpc1xcblxcblxcdFxcdFxcdHZhciBtMSA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJvdGF0ZVooIGFuZ2xlICkge1xcblxcblxcdFxcdFxcdFxcdG0xLm1ha2VSb3RhdGlvblooIGFuZ2xlICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hcHBseU1hdHJpeCggbTEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHR0cmFuc2xhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyB0cmFuc2xhdGUgZ2VvbWV0cnlcXG5cXG5cXHRcXHRcXHR2YXIgbTEgPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiB0cmFuc2xhdGUoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0XFx0bTEubWFrZVRyYW5zbGF0aW9uKCB4LCB5LCB6ICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hcHBseU1hdHJpeCggbTEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRzY2FsZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIHNjYWxlIGdlb21ldHJ5XFxuXFxuXFx0XFx0XFx0dmFyIG0xID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gc2NhbGUoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0XFx0bTEubWFrZVNjYWxlKCB4LCB5LCB6ICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hcHBseU1hdHJpeCggbTEgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRsb29rQXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgb2JqID0gbmV3IE9iamVjdDNEKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGxvb2tBdCggdmVjdG9yICkge1xcblxcblxcdFxcdFxcdFxcdG9iai5sb29rQXQoIHZlY3RvciApO1xcblxcblxcdFxcdFxcdFxcdG9iai51cGRhdGVNYXRyaXgoKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmFwcGx5TWF0cml4KCBvYmoubWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0Y2VudGVyOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jb21wdXRlQm91bmRpbmdCb3goKTtcXG5cXG5cXHRcXHRcXHR2YXIgb2Zmc2V0ID0gdGhpcy5ib3VuZGluZ0JveC5nZXRDZW50ZXIoKS5uZWdhdGUoKTtcXG5cXG5cXHRcXHRcXHR0aGlzLnRyYW5zbGF0ZSggb2Zmc2V0LngsIG9mZnNldC55LCBvZmZzZXQueiApO1xcblxcblxcdFxcdFxcdHJldHVybiBvZmZzZXQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tT2JqZWN0OiBmdW5jdGlvbiAoIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHQvLyBjb25zb2xlLmxvZyggJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LnNldEZyb21PYmplY3QoKS4gQ29udmVydGluZycsIG9iamVjdCwgdGhpcyApO1xcblxcblxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IG9iamVjdC5nZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5pc1BvaW50cyB8fCBvYmplY3QuaXNMaW5lICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggZ2VvbWV0cnkudmVydGljZXMubGVuZ3RoICogMywgMyApO1xcblxcdFxcdFxcdFxcdHZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggZ2VvbWV0cnkuY29sb3JzLmxlbmd0aCAqIDMsIDMgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgcG9zaXRpb25zLmNvcHlWZWN0b3Izc0FycmF5KCBnZW9tZXRyeS52ZXJ0aWNlcyApICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICdjb2xvcicsIGNvbG9ycy5jb3B5Q29sb3JzQXJyYXkoIGdlb21ldHJ5LmNvbG9ycyApICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5saW5lRGlzdGFuY2VzICYmIGdlb21ldHJ5LmxpbmVEaXN0YW5jZXMubGVuZ3RoID09PSBnZW9tZXRyeS52ZXJ0aWNlcy5sZW5ndGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGxpbmVEaXN0YW5jZXMgPSBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggZ2VvbWV0cnkubGluZURpc3RhbmNlcy5sZW5ndGgsIDEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ2xpbmVEaXN0YW5jZScsIGxpbmVEaXN0YW5jZXMuY29weUFycmF5KCBnZW9tZXRyeS5saW5lRGlzdGFuY2VzICkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmJvdW5kaW5nU3BoZXJlID0gZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUuY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ib3VuZGluZ0JveCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmJvdW5kaW5nQm94ID0gZ2VvbWV0cnkuYm91bmRpbmdCb3guY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggb2JqZWN0LmlzTWVzaCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGdlb21ldHJ5ICYmIGdlb21ldHJ5LmlzR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5mcm9tR2VvbWV0cnkoIGdlb21ldHJ5ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21Qb2ludHM6IGZ1bmN0aW9uICggcG9pbnRzICkge1xcblxcblxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IHBvaW50cy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBwb2ludCA9IHBvaW50c1sgaSBdO1xcblxcdFxcdFxcdFxcdHBvc2l0aW9uLnB1c2goIHBvaW50LngsIHBvaW50LnksIHBvaW50LnogfHwgMCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHBvc2l0aW9uLCAzICkgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHVwZGF0ZUZyb21PYmplY3Q6IGZ1bmN0aW9uICggb2JqZWN0ICkge1xcblxcblxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IG9iamVjdC5nZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5pc01lc2ggKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGRpcmVjdCA9IGdlb21ldHJ5Ll9fZGlyZWN0R2VvbWV0cnk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5lbGVtZW50c05lZWRVcGRhdGUgPT09IHRydWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZGlyZWN0ID0gdW5kZWZpbmVkO1xcblxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5LmVsZW1lbnRzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGRpcmVjdCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmZyb21HZW9tZXRyeSggZ2VvbWV0cnkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0ZGlyZWN0LnZlcnRpY2VzTmVlZFVwZGF0ZSA9IGdlb21ldHJ5LnZlcnRpY2VzTmVlZFVwZGF0ZTtcXG5cXHRcXHRcXHRcXHRkaXJlY3Qubm9ybWFsc05lZWRVcGRhdGUgPSBnZW9tZXRyeS5ub3JtYWxzTmVlZFVwZGF0ZTtcXG5cXHRcXHRcXHRcXHRkaXJlY3QuY29sb3JzTmVlZFVwZGF0ZSA9IGdlb21ldHJ5LmNvbG9yc05lZWRVcGRhdGU7XFxuXFx0XFx0XFx0XFx0ZGlyZWN0LnV2c05lZWRVcGRhdGUgPSBnZW9tZXRyeS51dnNOZWVkVXBkYXRlO1xcblxcdFxcdFxcdFxcdGRpcmVjdC5ncm91cHNOZWVkVXBkYXRlID0gZ2VvbWV0cnkuZ3JvdXBzTmVlZFVwZGF0ZTtcXG5cXG5cXHRcXHRcXHRcXHRnZW9tZXRyeS52ZXJ0aWNlc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXHRcXHRcXHRcXHRnZW9tZXRyeS5ub3JtYWxzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdFxcdFxcdGdlb21ldHJ5LmNvbG9yc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXHRcXHRcXHRcXHRnZW9tZXRyeS51dnNOZWVkVXBkYXRlID0gZmFsc2U7XFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkuZ3JvdXBzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gZGlyZWN0O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgYXR0cmlidXRlO1xcblxcblxcdFxcdFxcdGlmICggZ2VvbWV0cnkudmVydGljZXNOZWVkVXBkYXRlID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZSA9IHRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGF0dHJpYnV0ZS5jb3B5VmVjdG9yM3NBcnJheSggZ2VvbWV0cnkudmVydGljZXMgKTtcXG5cXHRcXHRcXHRcXHRcXHRhdHRyaWJ1dGUubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRnZW9tZXRyeS52ZXJ0aWNlc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ub3JtYWxzTmVlZFVwZGF0ZSA9PT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRhdHRyaWJ1dGUgPSB0aGlzLmF0dHJpYnV0ZXMubm9ybWFsO1xcblxcblxcdFxcdFxcdFxcdGlmICggYXR0cmlidXRlICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCBnZW9tZXRyeS5ub3JtYWxzICk7XFxuXFx0XFx0XFx0XFx0XFx0YXR0cmlidXRlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkubm9ybWFsc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5jb2xvcnNOZWVkVXBkYXRlID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZSA9IHRoaXMuYXR0cmlidXRlcy5jb2xvcjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoIGdlb21ldHJ5LmNvbG9ycyApO1xcblxcdFxcdFxcdFxcdFxcdGF0dHJpYnV0ZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGdlb21ldHJ5LmNvbG9yc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS51dnNOZWVkVXBkYXRlICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZSA9IHRoaXMuYXR0cmlidXRlcy51djtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGF0dHJpYnV0ZS5jb3B5VmVjdG9yMnNBcnJheSggZ2VvbWV0cnkudXZzICk7XFxuXFx0XFx0XFx0XFx0XFx0YXR0cmlidXRlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkudXZzTmVlZFVwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZSA9IHRoaXMuYXR0cmlidXRlcy5saW5lRGlzdGFuY2U7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBhdHRyaWJ1dGUgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRhdHRyaWJ1dGUuY29weUFycmF5KCBnZW9tZXRyeS5saW5lRGlzdGFuY2VzICk7XFxuXFx0XFx0XFx0XFx0XFx0YXR0cmlidXRlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkubGluZURpc3RhbmNlc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ncm91cHNOZWVkVXBkYXRlICkge1xcblxcblxcdFxcdFxcdFxcdGdlb21ldHJ5LmNvbXB1dGVHcm91cHMoIG9iamVjdC5nZW9tZXRyeSApO1xcblxcdFxcdFxcdFxcdHRoaXMuZ3JvdXBzID0gZ2VvbWV0cnkuZ3JvdXBzO1xcblxcblxcdFxcdFxcdFxcdGdlb21ldHJ5Lmdyb3Vwc05lZWRVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmcm9tR2VvbWV0cnk6IGZ1bmN0aW9uICggZ2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0Z2VvbWV0cnkuX19kaXJlY3RHZW9tZXRyeSA9IG5ldyBEaXJlY3RHZW9tZXRyeSgpLmZyb21HZW9tZXRyeSggZ2VvbWV0cnkgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5mcm9tRGlyZWN0R2VvbWV0cnkoIGdlb21ldHJ5Ll9fZGlyZWN0R2VvbWV0cnkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZyb21EaXJlY3RHZW9tZXRyeTogZnVuY3Rpb24gKCBnZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJBcnJheSggZ2VvbWV0cnkudmVydGljZXMubGVuZ3RoICogMyApO1xcblxcdFxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgQnVmZmVyQXR0cmlidXRlKCBwb3NpdGlvbnMsIDMgKS5jb3B5VmVjdG9yM3NBcnJheSggZ2VvbWV0cnkudmVydGljZXMgKSApO1xcblxcblxcdFxcdFxcdGlmICggZ2VvbWV0cnkubm9ybWFscy5sZW5ndGggPiAwICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBub3JtYWxzID0gbmV3IEZsb2F0MzJBcnJheSggZ2VvbWV0cnkubm9ybWFscy5sZW5ndGggKiAzICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICdub3JtYWwnLCBuZXcgQnVmZmVyQXR0cmlidXRlKCBub3JtYWxzLCAzICkuY29weVZlY3RvcjNzQXJyYXkoIGdlb21ldHJ5Lm5vcm1hbHMgKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmNvbG9ycy5sZW5ndGggPiAwICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjb2xvcnMgPSBuZXcgRmxvYXQzMkFycmF5KCBnZW9tZXRyeS5jb2xvcnMubGVuZ3RoICogMyApO1xcblxcdFxcdFxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnY29sb3InLCBuZXcgQnVmZmVyQXR0cmlidXRlKCBjb2xvcnMsIDMgKS5jb3B5Q29sb3JzQXJyYXkoIGdlb21ldHJ5LmNvbG9ycyApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggZ2VvbWV0cnkudXZzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHV2cyA9IG5ldyBGbG9hdDMyQXJyYXkoIGdlb21ldHJ5LnV2cy5sZW5ndGggKiAyICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICd1dicsIG5ldyBCdWZmZXJBdHRyaWJ1dGUoIHV2cywgMiApLmNvcHlWZWN0b3Iyc0FycmF5KCBnZW9tZXRyeS51dnMgKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LnV2czIubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdXZzMiA9IG5ldyBGbG9hdDMyQXJyYXkoIGdlb21ldHJ5LnV2czIubGVuZ3RoICogMiApO1xcblxcdFxcdFxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYyJywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSggdXZzMiwgMiApLmNvcHlWZWN0b3Iyc0FycmF5KCBnZW9tZXRyeS51dnMyICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5pbmRpY2VzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIFR5cGVBcnJheSA9IGFycmF5TWF4KCBnZW9tZXRyeS5pbmRpY2VzICkgPiA2NTUzNSA/IFVpbnQzMkFycmF5IDogVWludDE2QXJyYXk7XFxuXFx0XFx0XFx0XFx0dmFyIGluZGljZXMgPSBuZXcgVHlwZUFycmF5KCBnZW9tZXRyeS5pbmRpY2VzLmxlbmd0aCAqIDMgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnNldEluZGV4KCBuZXcgQnVmZmVyQXR0cmlidXRlKCBpbmRpY2VzLCAxICkuY29weUluZGljZXNBcnJheSggZ2VvbWV0cnkuaW5kaWNlcyApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGdyb3Vwc1xcblxcblxcdFxcdFxcdHRoaXMuZ3JvdXBzID0gZ2VvbWV0cnkuZ3JvdXBzO1xcblxcblxcdFxcdFxcdC8vIG1vcnBoc1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBuYW1lIGluIGdlb21ldHJ5Lm1vcnBoVGFyZ2V0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXJyYXkgPSBbXTtcXG5cXHRcXHRcXHRcXHR2YXIgbW9ycGhUYXJnZXRzID0gZ2VvbWV0cnkubW9ycGhUYXJnZXRzWyBuYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gbW9ycGhUYXJnZXRzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIG1vcnBoVGFyZ2V0ID0gbW9ycGhUYXJnZXRzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGF0dHJpYnV0ZSA9IG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBtb3JwaFRhcmdldC5sZW5ndGggKiAzLCAzICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YXJyYXkucHVzaCggYXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCBtb3JwaFRhcmdldCApICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMubW9ycGhBdHRyaWJ1dGVzWyBuYW1lIF0gPSBhcnJheTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gc2tpbm5pbmdcXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LnNraW5JbmRpY2VzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNraW5JbmRpY2VzID0gbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIGdlb21ldHJ5LnNraW5JbmRpY2VzLmxlbmd0aCAqIDQsIDQgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3NraW5JbmRleCcsIHNraW5JbmRpY2VzLmNvcHlWZWN0b3I0c0FycmF5KCBnZW9tZXRyeS5za2luSW5kaWNlcyApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggZ2VvbWV0cnkuc2tpbldlaWdodHMubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgc2tpbldlaWdodHMgPSBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggZ2VvbWV0cnkuc2tpbldlaWdodHMubGVuZ3RoICogNCwgNCApO1xcblxcdFxcdFxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnc2tpbldlaWdodCcsIHNraW5XZWlnaHRzLmNvcHlWZWN0b3I0c0FycmF5KCBnZW9tZXRyeS5za2luV2VpZ2h0cyApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJvdW5kaW5nU3BoZXJlID0gZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUuY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ib3VuZGluZ0JveCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJvdW5kaW5nQm94ID0gZ2VvbWV0cnkuYm91bmRpbmdCb3guY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb21wdXRlQm91bmRpbmdCb3g6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuYm91bmRpbmdCb3ggPT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ib3VuZGluZ0JveCA9IG5ldyBCb3gzKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IHRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRpZiAoIHBvc2l0aW9uICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKCBwb3NpdGlvbiApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ib3VuZGluZ0JveC5tYWtlRW1wdHkoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBpc05hTiggdGhpcy5ib3VuZGluZ0JveC5taW4ueCApIHx8IGlzTmFOKCB0aGlzLmJvdW5kaW5nQm94Lm1pbi55ICkgfHwgaXNOYU4oIHRoaXMuYm91bmRpbmdCb3gubWluLnogKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94OiBDb21wdXRlZCBtaW4vbWF4IGhhdmUgTmFOIHZhbHVlcy4gVGhlIFxcXCJwb3NpdGlvblxcXCIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJywgdGhpcyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvbXB1dGVCb3VuZGluZ1NwaGVyZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBib3ggPSBuZXcgQm94MygpO1xcblxcdFxcdFxcdHZhciB2ZWN0b3IgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBjb21wdXRlQm91bmRpbmdTcGhlcmUoKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0aGlzLmJvdW5kaW5nU3BoZXJlID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuYm91bmRpbmdTcGhlcmUgPSBuZXcgU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IHRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHBvc2l0aW9uICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBjZW50ZXIgPSB0aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlcjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRib3guc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSggcG9zaXRpb24gKTtcXG5cXHRcXHRcXHRcXHRcXHRib3guZ2V0Q2VudGVyKCBjZW50ZXIgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBob3BpbmcgdG8gZmluZCBhIGJvdW5kaW5nU3BoZXJlIHdpdGggYSByYWRpdXMgc21hbGxlciB0aGFuIHRoZVxcblxcdFxcdFxcdFxcdFxcdC8vIGJvdW5kaW5nU3BoZXJlIG9mIHRoZSBib3VuZGluZ0JveDogc3FydCgzKSBzbWFsbGVyIGluIHRoZSBiZXN0IGNhc2VcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgbWF4UmFkaXVzU3EgPSAwO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBwb3NpdGlvbi5jb3VudDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZlY3Rvci54ID0gcG9zaXRpb24uZ2V0WCggaSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZlY3Rvci55ID0gcG9zaXRpb24uZ2V0WSggaSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZlY3Rvci56ID0gcG9zaXRpb24uZ2V0WiggaSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdG1heFJhZGl1c1NxID0gTWF0aC5tYXgoIG1heFJhZGl1c1NxLCBjZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQoIHZlY3RvciApICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzID0gTWF0aC5zcXJ0KCBtYXhSYWRpdXNTcSApO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggaXNOYU4oIHRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBDb21wdXRlZCByYWRpdXMgaXMgTmFOLiBUaGUgXFxcInBvc2l0aW9uXFxcIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLCB0aGlzICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRjb21wdXRlRmFjZU5vcm1hbHM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29tcHV0ZVZlcnRleE5vcm1hbHM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW5kZXggPSB0aGlzLmluZGV4O1xcblxcdFxcdFxcdHZhciBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzO1xcblxcdFxcdFxcdHZhciBncm91cHMgPSB0aGlzLmdyb3VwcztcXG5cXG5cXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZXMucG9zaXRpb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHBvc2l0aW9ucyA9IGF0dHJpYnV0ZXMucG9zaXRpb24uYXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBhdHRyaWJ1dGVzLm5vcm1hbCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSggbmV3IEZsb2F0MzJBcnJheSggcG9zaXRpb25zLmxlbmd0aCApLCAzICkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHJlc2V0IGV4aXN0aW5nIG5vcm1hbHMgdG8gemVyb1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBhcnJheSA9IGF0dHJpYnV0ZXMubm9ybWFsLmFycmF5O1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBhcnJheS5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRhcnJheVsgaSBdID0gMDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHZhciBub3JtYWxzID0gYXR0cmlidXRlcy5ub3JtYWwuYXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZBLCB2QiwgdkM7XFxuXFx0XFx0XFx0XFx0dmFyIHBBID0gbmV3IFZlY3RvcjMoKSwgcEIgPSBuZXcgVmVjdG9yMygpLCBwQyA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0XFx0dmFyIGNiID0gbmV3IFZlY3RvcjMoKSwgYWIgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdFxcdC8vIGluZGV4ZWQgZWxlbWVudHNcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGluZGV4ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBpbmRpY2VzID0gaW5kZXguYXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBncm91cHMubGVuZ3RoID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuYWRkR3JvdXAoIDAsIGluZGljZXMubGVuZ3RoICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMCwgamwgPSBncm91cHMubGVuZ3RoOyBqIDwgamw7ICsrIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGdyb3VwID0gZ3JvdXBzWyBqIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHN0YXJ0ID0gZ3JvdXAuc3RhcnQ7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNvdW50ID0gZ3JvdXAuY291bnQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSBzdGFydCwgaWwgPSBzdGFydCArIGNvdW50OyBpIDwgaWw7IGkgKz0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2QSA9IGluZGljZXNbIGkgKyAwIF0gKiAzO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZCID0gaW5kaWNlc1sgaSArIDEgXSAqIDM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dkMgPSBpbmRpY2VzWyBpICsgMiBdICogMztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRwQS5mcm9tQXJyYXkoIHBvc2l0aW9ucywgdkEgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRwQi5mcm9tQXJyYXkoIHBvc2l0aW9ucywgdkIgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRwQy5mcm9tQXJyYXkoIHBvc2l0aW9ucywgdkMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjYi5zdWJWZWN0b3JzKCBwQywgcEIgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRhYi5zdWJWZWN0b3JzKCBwQSwgcEIgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjYi5jcm9zcyggYWIgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyB2QSBdICs9IGNiLng7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgdkEgKyAxIF0gKz0gY2IueTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyB2QSArIDIgXSArPSBjYi56O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIHZCIF0gKz0gY2IueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyB2QiArIDEgXSArPSBjYi55O1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIHZCICsgMiBdICs9IGNiLno7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgdkMgXSArPSBjYi54O1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIHZDICsgMSBdICs9IGNiLnk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgdkMgKyAyIF0gKz0gY2IuejtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gbm9uLWluZGV4ZWQgZWxlbWVudHMgKHVuY29ubmVjdGVkIHRyaWFuZ2xlIHNvdXApXFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBpbCA9IHBvc2l0aW9ucy5sZW5ndGg7IGkgPCBpbDsgaSArPSA5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHBBLmZyb21BcnJheSggcG9zaXRpb25zLCBpICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cEIuZnJvbUFycmF5KCBwb3NpdGlvbnMsIGkgKyAzICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cEMuZnJvbUFycmF5KCBwb3NpdGlvbnMsIGkgKyA2ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2Iuc3ViVmVjdG9ycyggcEMsIHBCICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0YWIuc3ViVmVjdG9ycyggcEEsIHBCICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2IuY3Jvc3MoIGFiICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgaSBdID0gY2IueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgMSBdID0gY2IueTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgMiBdID0gY2IuejtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgMyBdID0gY2IueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgNCBdID0gY2IueTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgNSBdID0gY2IuejtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgNiBdID0gY2IueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgNyBdID0gY2IueTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpICsgOCBdID0gY2IuejtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMubm9ybWFsaXplTm9ybWFscygpO1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZXMubm9ybWFsLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtZXJnZTogZnVuY3Rpb24gKCBnZW9tZXRyeSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggISAoIGdlb21ldHJ5ICYmIGdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuQnVmZmVyR2VvbWV0cnkubWVyZ2UoKTogZ2VvbWV0cnkgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkJ1ZmZlckdlb21ldHJ5LicsIGdlb21ldHJ5ICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHR2YXIgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIga2V5IGluIGF0dHJpYnV0ZXMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5hdHRyaWJ1dGVzWyBrZXkgXSA9PT0gdW5kZWZpbmVkICkgY29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGF0dHJpYnV0ZTEgPSBhdHRyaWJ1dGVzWyBrZXkgXTtcXG5cXHRcXHRcXHRcXHR2YXIgYXR0cmlidXRlQXJyYXkxID0gYXR0cmlidXRlMS5hcnJheTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXR0cmlidXRlMiA9IGdlb21ldHJ5LmF0dHJpYnV0ZXNbIGtleSBdO1xcblxcdFxcdFxcdFxcdHZhciBhdHRyaWJ1dGVBcnJheTIgPSBhdHRyaWJ1dGUyLmFycmF5O1xcblxcblxcdFxcdFxcdFxcdHZhciBhdHRyaWJ1dGVTaXplID0gYXR0cmlidXRlMi5pdGVtU2l6ZTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGogPSBhdHRyaWJ1dGVTaXplICogb2Zmc2V0OyBpIDwgYXR0cmlidXRlQXJyYXkyLmxlbmd0aDsgaSArKywgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRhdHRyaWJ1dGVBcnJheTFbIGogXSA9IGF0dHJpYnV0ZUFycmF5MlsgaSBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRub3JtYWxpemVOb3JtYWxzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHZlY3RvciA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIG5vcm1hbGl6ZU5vcm1hbHMoKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG5vcm1hbHMgPSB0aGlzLmF0dHJpYnV0ZXMubm9ybWFsO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBub3JtYWxzLmNvdW50OyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVjdG9yLnggPSBub3JtYWxzLmdldFgoIGkgKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZWN0b3IueSA9IG5vcm1hbHMuZ2V0WSggaSApO1xcblxcdFxcdFxcdFxcdFxcdHZlY3Rvci56ID0gbm9ybWFscy5nZXRaKCBpICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVjdG9yLm5vcm1hbGl6ZSgpO1xcblxcblxcdFxcdFxcdFxcdFxcdG5vcm1hbHMuc2V0WFlaKCBpLCB2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci56ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHRvTm9uSW5kZXhlZDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5pbmRleCA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5CdWZmZXJHZW9tZXRyeS50b05vbkluZGV4ZWQoKTogR2VvbWV0cnkgaXMgYWxyZWFkeSBub24taW5kZXhlZC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBnZW9tZXRyeTIgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXG5cXHRcXHRcXHR2YXIgaW5kaWNlcyA9IHRoaXMuaW5kZXguYXJyYXk7XFxuXFx0XFx0XFx0dmFyIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIG5hbWUgaW4gYXR0cmlidXRlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXR0cmlidXRlID0gYXR0cmlidXRlc1sgbmFtZSBdO1xcblxcblxcdFxcdFxcdFxcdHZhciBhcnJheSA9IGF0dHJpYnV0ZS5hcnJheTtcXG5cXHRcXHRcXHRcXHR2YXIgaXRlbVNpemUgPSBhdHRyaWJ1dGUuaXRlbVNpemU7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFycmF5MiA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvciggaW5kaWNlcy5sZW5ndGggKiBpdGVtU2l6ZSApO1xcblxcblxcdFxcdFxcdFxcdHZhciBpbmRleCA9IDAsIGluZGV4MiA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gaW5kaWNlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGluZGV4ID0gaW5kaWNlc1sgaSBdICogaXRlbVNpemU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwOyBqIDwgaXRlbVNpemU7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YXJyYXkyWyBpbmRleDIgKysgXSA9IGFycmF5WyBpbmRleCArKyBdO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkyLmFkZEF0dHJpYnV0ZSggbmFtZSwgbmV3IEJ1ZmZlckF0dHJpYnV0ZSggYXJyYXkyLCBpdGVtU2l6ZSApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBnZW9tZXRyeTI7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IHtcXG5cXHRcXHRcXHRcXHRtZXRhZGF0YToge1xcblxcdFxcdFxcdFxcdFxcdHZlcnNpb246IDQuNSxcXG5cXHRcXHRcXHRcXHRcXHR0eXBlOiAnQnVmZmVyR2VvbWV0cnknLFxcblxcdFxcdFxcdFxcdFxcdGdlbmVyYXRvcjogJ0J1ZmZlckdlb21ldHJ5LnRvSlNPTidcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHQvLyBzdGFuZGFyZCBCdWZmZXJHZW9tZXRyeSBzZXJpYWxpemF0aW9uXFxuXFxuXFx0XFx0XFx0ZGF0YS51dWlkID0gdGhpcy51dWlkO1xcblxcdFxcdFxcdGRhdGEudHlwZSA9IHRoaXMudHlwZTtcXG5cXHRcXHRcXHRpZiAoIHRoaXMubmFtZSAhPT0gJycgKSBkYXRhLm5hbWUgPSB0aGlzLm5hbWU7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnBhcmFtZXRlcnMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycztcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIga2V5IGluIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBwYXJhbWV0ZXJzWyBrZXkgXSAhPT0gdW5kZWZpbmVkICkgZGF0YVsga2V5IF0gPSBwYXJhbWV0ZXJzWyBrZXkgXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGRhdGE7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGRhdGEuZGF0YSA9IHsgYXR0cmlidXRlczoge30gfTtcXG5cXG5cXHRcXHRcXHR2YXIgaW5kZXggPSB0aGlzLmluZGV4O1xcblxcblxcdFxcdFxcdGlmICggaW5kZXggIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGluZGV4LmFycmF5ICk7XFxuXFxuXFx0XFx0XFx0XFx0ZGF0YS5kYXRhLmluZGV4ID0ge1xcblxcdFxcdFxcdFxcdFxcdHR5cGU6IGluZGV4LmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsXFxuXFx0XFx0XFx0XFx0XFx0YXJyYXk6IGFycmF5XFxuXFx0XFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZXM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGtleSBpbiBhdHRyaWJ1dGVzICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzWyBrZXkgXTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXR0cmlidXRlLmFycmF5ICk7XFxuXFxuXFx0XFx0XFx0XFx0ZGF0YS5kYXRhLmF0dHJpYnV0ZXNbIGtleSBdID0ge1xcblxcdFxcdFxcdFxcdFxcdGl0ZW1TaXplOiBhdHRyaWJ1dGUuaXRlbVNpemUsXFxuXFx0XFx0XFx0XFx0XFx0dHlwZTogYXR0cmlidXRlLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsXFxuXFx0XFx0XFx0XFx0XFx0YXJyYXk6IGFycmF5LFxcblxcdFxcdFxcdFxcdFxcdG5vcm1hbGl6ZWQ6IGF0dHJpYnV0ZS5ub3JtYWxpemVkXFxuXFx0XFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGdyb3VwcyA9IHRoaXMuZ3JvdXBzO1xcblxcblxcdFxcdFxcdGlmICggZ3JvdXBzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGF0YS5kYXRhLmdyb3VwcyA9IEpTT04ucGFyc2UoIEpTT04uc3RyaW5naWZ5KCBncm91cHMgKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgYm91bmRpbmdTcGhlcmUgPSB0aGlzLmJvdW5kaW5nU3BoZXJlO1xcblxcblxcdFxcdFxcdGlmICggYm91bmRpbmdTcGhlcmUgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGF0YS5kYXRhLmJvdW5kaW5nU3BoZXJlID0ge1xcblxcdFxcdFxcdFxcdFxcdGNlbnRlcjogYm91bmRpbmdTcGhlcmUuY2VudGVyLnRvQXJyYXkoKSxcXG5cXHRcXHRcXHRcXHRcXHRyYWRpdXM6IGJvdW5kaW5nU3BoZXJlLnJhZGl1c1xcblxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHQvKlxcblxcdFxcdFxcdCAvLyBIYW5kbGUgcHJpbWl0aXZlc1xcblxcblxcdFxcdFxcdCB2YXIgcGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycztcXG5cXG5cXHRcXHRcXHQgaWYgKCBwYXJhbWV0ZXJzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0IHZhciB2YWx1ZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHQgZm9yICggdmFyIGtleSBpbiBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdFxcdCB2YWx1ZXMucHVzaCggcGFyYW1ldGVyc1sga2V5IF0gKTtcXG5cXG5cXHRcXHRcXHQgfVxcblxcblxcdFxcdFxcdCB2YXIgZ2VvbWV0cnkgPSBPYmplY3QuY3JlYXRlKCB0aGlzLmNvbnN0cnVjdG9yLnByb3RvdHlwZSApO1xcblxcdFxcdFxcdCB0aGlzLmNvbnN0cnVjdG9yLmFwcGx5KCBnZW9tZXRyeSwgdmFsdWVzICk7XFxuXFx0XFx0XFx0IHJldHVybiBnZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHQgfVxcblxcblxcdFxcdFxcdCByZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFx0XFx0XFx0ICovXFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyBCdWZmZXJHZW9tZXRyeSgpLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdHZhciBuYW1lLCBpLCBsO1xcblxcblxcdFxcdFxcdC8vIHJlc2V0XFxuXFxuXFx0XFx0XFx0dGhpcy5pbmRleCA9IG51bGw7XFxuXFx0XFx0XFx0dGhpcy5hdHRyaWJ1dGVzID0ge307XFxuXFx0XFx0XFx0dGhpcy5tb3JwaEF0dHJpYnV0ZXMgPSB7fTtcXG5cXHRcXHRcXHR0aGlzLmdyb3VwcyA9IFtdO1xcblxcdFxcdFxcdHRoaXMuYm91bmRpbmdCb3ggPSBudWxsO1xcblxcdFxcdFxcdHRoaXMuYm91bmRpbmdTcGhlcmUgPSBudWxsO1xcblxcblxcdFxcdFxcdC8vIG5hbWVcXG5cXG5cXHRcXHRcXHR0aGlzLm5hbWUgPSBzb3VyY2UubmFtZTtcXG5cXG5cXHRcXHRcXHQvLyBpbmRleFxcblxcblxcdFxcdFxcdHZhciBpbmRleCA9IHNvdXJjZS5pbmRleDtcXG5cXG5cXHRcXHRcXHRpZiAoIGluZGV4ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuc2V0SW5kZXgoIGluZGV4LmNsb25lKCkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gYXR0cmlidXRlc1xcblxcblxcdFxcdFxcdHZhciBhdHRyaWJ1dGVzID0gc291cmNlLmF0dHJpYnV0ZXM7XFxuXFxuXFx0XFx0XFx0Zm9yICggbmFtZSBpbiBhdHRyaWJ1dGVzICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzWyBuYW1lIF07XFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoIG5hbWUsIGF0dHJpYnV0ZS5jbG9uZSgpICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIG1vcnBoIGF0dHJpYnV0ZXNcXG5cXG5cXHRcXHRcXHR2YXIgbW9ycGhBdHRyaWJ1dGVzID0gc291cmNlLm1vcnBoQXR0cmlidXRlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCBuYW1lIGluIG1vcnBoQXR0cmlidXRlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXJyYXkgPSBbXTtcXG5cXHRcXHRcXHRcXHR2YXIgbW9ycGhBdHRyaWJ1dGUgPSBtb3JwaEF0dHJpYnV0ZXNbIG5hbWUgXTsgLy8gbW9ycGhBdHRyaWJ1dGU6IGFycmF5IG9mIEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGVzXFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggaSA9IDAsIGwgPSBtb3JwaEF0dHJpYnV0ZS5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGFycmF5LnB1c2goIG1vcnBoQXR0cmlidXRlWyBpIF0uY2xvbmUoKSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm1vcnBoQXR0cmlidXRlc1sgbmFtZSBdID0gYXJyYXk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGdyb3Vwc1xcblxcblxcdFxcdFxcdHZhciBncm91cHMgPSBzb3VyY2UuZ3JvdXBzO1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gZ3JvdXBzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGdyb3VwID0gZ3JvdXBzWyBpIF07XFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRHcm91cCggZ3JvdXAuc3RhcnQsIGdyb3VwLmNvdW50LCBncm91cC5tYXRlcmlhbEluZGV4ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGJvdW5kaW5nIGJveFxcblxcblxcdFxcdFxcdHZhciBib3VuZGluZ0JveCA9IHNvdXJjZS5ib3VuZGluZ0JveDtcXG5cXG5cXHRcXHRcXHRpZiAoIGJvdW5kaW5nQm94ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC5jbG9uZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBib3VuZGluZyBzcGhlcmVcXG5cXG5cXHRcXHRcXHR2YXIgYm91bmRpbmdTcGhlcmUgPSBzb3VyY2UuYm91bmRpbmdTcGhlcmU7XFxuXFxuXFx0XFx0XFx0aWYgKCBib3VuZGluZ1NwaGVyZSAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJvdW5kaW5nU3BoZXJlID0gYm91bmRpbmdTcGhlcmUuY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gZHJhdyByYW5nZVxcblxcblxcdFxcdFxcdHRoaXMuZHJhd1JhbmdlLnN0YXJ0ID0gc291cmNlLmRyYXdSYW5nZS5zdGFydDtcXG5cXHRcXHRcXHR0aGlzLmRyYXdSYW5nZS5jb3VudCA9IHNvdXJjZS5kcmF3UmFuZ2UuY291bnQ7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXNwb3NlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5kaXNwYXRjaEV2ZW50KCB7IHR5cGU6ICdkaXNwb3NlJyB9ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICovXFxuXFxuXFx0Ly8gQm94R2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBCb3hHZW9tZXRyeSggd2lkdGgsIGhlaWdodCwgZGVwdGgsIHdpZHRoU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzLCBkZXB0aFNlZ21lbnRzICkge1xcblxcblxcdFxcdEdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnQm94R2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHR3aWR0aDogd2lkdGgsXFxuXFx0XFx0XFx0aGVpZ2h0OiBoZWlnaHQsXFxuXFx0XFx0XFx0ZGVwdGg6IGRlcHRoLFxcblxcdFxcdFxcdHdpZHRoU2VnbWVudHM6IHdpZHRoU2VnbWVudHMsXFxuXFx0XFx0XFx0aGVpZ2h0U2VnbWVudHM6IGhlaWdodFNlZ21lbnRzLFxcblxcdFxcdFxcdGRlcHRoU2VnbWVudHM6IGRlcHRoU2VnbWVudHNcXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KCBuZXcgQm94QnVmZmVyR2VvbWV0cnkoIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCB3aWR0aFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cywgZGVwdGhTZWdtZW50cyApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdEJveEdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdEJveEdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJveEdlb21ldHJ5O1xcblxcblxcdC8vIEJveEJ1ZmZlckdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gQm94QnVmZmVyR2VvbWV0cnkoIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCB3aWR0aFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cywgZGVwdGhTZWdtZW50cyApIHtcXG5cXG5cXHRcXHRCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0JveEJ1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0d2lkdGg6IHdpZHRoLFxcblxcdFxcdFxcdGhlaWdodDogaGVpZ2h0LFxcblxcdFxcdFxcdGRlcHRoOiBkZXB0aCxcXG5cXHRcXHRcXHR3aWR0aFNlZ21lbnRzOiB3aWR0aFNlZ21lbnRzLFxcblxcdFxcdFxcdGhlaWdodFNlZ21lbnRzOiBoZWlnaHRTZWdtZW50cyxcXG5cXHRcXHRcXHRkZXB0aFNlZ21lbnRzOiBkZXB0aFNlZ21lbnRzXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR2YXIgc2NvcGUgPSB0aGlzO1xcblxcblxcdFxcdHdpZHRoID0gd2lkdGggfHwgMTtcXG5cXHRcXHRoZWlnaHQgPSBoZWlnaHQgfHwgMTtcXG5cXHRcXHRkZXB0aCA9IGRlcHRoIHx8IDE7XFxuXFxuXFx0XFx0Ly8gc2VnbWVudHNcXG5cXG5cXHRcXHR3aWR0aFNlZ21lbnRzID0gTWF0aC5mbG9vciggd2lkdGhTZWdtZW50cyApIHx8IDE7XFxuXFx0XFx0aGVpZ2h0U2VnbWVudHMgPSBNYXRoLmZsb29yKCBoZWlnaHRTZWdtZW50cyApIHx8IDE7XFxuXFx0XFx0ZGVwdGhTZWdtZW50cyA9IE1hdGguZmxvb3IoIGRlcHRoU2VnbWVudHMgKSB8fCAxO1xcblxcblxcdFxcdC8vIGJ1ZmZlcnNcXG5cXG5cXHRcXHR2YXIgaW5kaWNlcyA9IFtdO1xcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciBub3JtYWxzID0gW107XFxuXFx0XFx0dmFyIHV2cyA9IFtdO1xcblxcblxcdFxcdC8vIGhlbHBlciB2YXJpYWJsZXNcXG5cXG5cXHRcXHR2YXIgbnVtYmVyT2ZWZXJ0aWNlcyA9IDA7XFxuXFx0XFx0dmFyIGdyb3VwU3RhcnQgPSAwO1xcblxcblxcdFxcdC8vIGJ1aWxkIGVhY2ggc2lkZSBvZiB0aGUgYm94IGdlb21ldHJ5XFxuXFxuXFx0XFx0YnVpbGRQbGFuZSggJ3onLCAneScsICd4JywgLSAxLCAtIDEsIGRlcHRoLCBoZWlnaHQsIHdpZHRoLCBkZXB0aFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cywgMCApOyAvLyBweFxcblxcdFxcdGJ1aWxkUGxhbmUoICd6JywgJ3knLCAneCcsIDEsIC0gMSwgZGVwdGgsIGhlaWdodCwgLSB3aWR0aCwgZGVwdGhTZWdtZW50cywgaGVpZ2h0U2VnbWVudHMsIDEgKTsgLy8gbnhcXG5cXHRcXHRidWlsZFBsYW5lKCAneCcsICd6JywgJ3knLCAxLCAxLCB3aWR0aCwgZGVwdGgsIGhlaWdodCwgd2lkdGhTZWdtZW50cywgZGVwdGhTZWdtZW50cywgMiApOyAvLyBweVxcblxcdFxcdGJ1aWxkUGxhbmUoICd4JywgJ3onLCAneScsIDEsIC0gMSwgd2lkdGgsIGRlcHRoLCAtIGhlaWdodCwgd2lkdGhTZWdtZW50cywgZGVwdGhTZWdtZW50cywgMyApOyAvLyBueVxcblxcdFxcdGJ1aWxkUGxhbmUoICd4JywgJ3knLCAneicsIDEsIC0gMSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIHdpZHRoU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzLCA0ICk7IC8vIHB6XFxuXFx0XFx0YnVpbGRQbGFuZSggJ3gnLCAneScsICd6JywgLSAxLCAtIDEsIHdpZHRoLCBoZWlnaHQsIC0gZGVwdGgsIHdpZHRoU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzLCA1ICk7IC8vIG56XFxuXFxuXFx0XFx0Ly8gYnVpbGQgZ2VvbWV0cnlcXG5cXG5cXHRcXHR0aGlzLnNldEluZGV4KCBpbmRpY2VzICk7XFxuXFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB2ZXJ0aWNlcywgMyApICk7XFxuXFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICdub3JtYWwnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggbm9ybWFscywgMyApICk7XFxuXFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICd1dicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB1dnMsIDIgKSApO1xcblxcblxcdFxcdGZ1bmN0aW9uIGJ1aWxkUGxhbmUoIHUsIHYsIHcsIHVkaXIsIHZkaXIsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBncmlkWCwgZ3JpZFksIG1hdGVyaWFsSW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHNlZ21lbnRXaWR0aCA9IHdpZHRoIC8gZ3JpZFg7XFxuXFx0XFx0XFx0dmFyIHNlZ21lbnRIZWlnaHQgPSBoZWlnaHQgLyBncmlkWTtcXG5cXG5cXHRcXHRcXHR2YXIgd2lkdGhIYWxmID0gd2lkdGggLyAyO1xcblxcdFxcdFxcdHZhciBoZWlnaHRIYWxmID0gaGVpZ2h0IC8gMjtcXG5cXHRcXHRcXHR2YXIgZGVwdGhIYWxmID0gZGVwdGggLyAyO1xcblxcblxcdFxcdFxcdHZhciBncmlkWDEgPSBncmlkWCArIDE7XFxuXFx0XFx0XFx0dmFyIGdyaWRZMSA9IGdyaWRZICsgMTtcXG5cXG5cXHRcXHRcXHR2YXIgdmVydGV4Q291bnRlciA9IDA7XFxuXFx0XFx0XFx0dmFyIGdyb3VwQ291bnQgPSAwO1xcblxcblxcdFxcdFxcdHZhciBpeCwgaXk7XFxuXFxuXFx0XFx0XFx0dmFyIHZlY3RvciA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0Ly8gZ2VuZXJhdGUgdmVydGljZXMsIG5vcm1hbHMgYW5kIHV2c1xcblxcblxcdFxcdFxcdGZvciAoIGl5ID0gMDsgaXkgPCBncmlkWTE7IGl5ICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB5ID0gaXkgKiBzZWdtZW50SGVpZ2h0IC0gaGVpZ2h0SGFsZjtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpeCA9IDA7IGl4IDwgZ3JpZFgxOyBpeCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgeCA9IGl4ICogc2VnbWVudFdpZHRoIC0gd2lkdGhIYWxmO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHNldCB2YWx1ZXMgdG8gY29ycmVjdCB2ZWN0b3IgY29tcG9uZW50XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVjdG9yWyB1IF0gPSB4ICogdWRpcjtcXG5cXHRcXHRcXHRcXHRcXHR2ZWN0b3JbIHYgXSA9IHkgKiB2ZGlyO1xcblxcdFxcdFxcdFxcdFxcdHZlY3RvclsgdyBdID0gZGVwdGhIYWxmO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIG5vdyBhcHBseSB2ZWN0b3IgdG8gdmVydGV4IGJ1ZmZlclxcblxcblxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHZlY3Rvci54LCB2ZWN0b3IueSwgdmVjdG9yLnogKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBzZXQgdmFsdWVzIHRvIGNvcnJlY3QgdmVjdG9yIGNvbXBvbmVudFxcblxcblxcdFxcdFxcdFxcdFxcdHZlY3RvclsgdSBdID0gMDtcXG5cXHRcXHRcXHRcXHRcXHR2ZWN0b3JbIHYgXSA9IDA7XFxuXFx0XFx0XFx0XFx0XFx0dmVjdG9yWyB3IF0gPSBkZXB0aCA+IDAgPyAxIDogLSAxO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIG5vdyBhcHBseSB2ZWN0b3IgdG8gbm9ybWFsIGJ1ZmZlclxcblxcblxcdFxcdFxcdFxcdFxcdG5vcm1hbHMucHVzaCggdmVjdG9yLngsIHZlY3Rvci55LCB2ZWN0b3IueiApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHV2c1xcblxcblxcdFxcdFxcdFxcdFxcdHV2cy5wdXNoKCBpeCAvIGdyaWRYICk7XFxuXFx0XFx0XFx0XFx0XFx0dXZzLnB1c2goIDEgLSAoIGl5IC8gZ3JpZFkgKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGNvdW50ZXJzXFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4Q291bnRlciArPSAxO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gaW5kaWNlc1xcblxcblxcdFxcdFxcdC8vIDEuIHlvdSBuZWVkIHRocmVlIGluZGljZXMgdG8gZHJhdyBhIHNpbmdsZSBmYWNlXFxuXFx0XFx0XFx0Ly8gMi4gYSBzaW5nbGUgc2VnbWVudCBjb25zaXN0cyBvZiB0d28gZmFjZXNcXG5cXHRcXHRcXHQvLyAzLiBzbyB3ZSBuZWVkIHRvIGdlbmVyYXRlIHNpeCAoMiozKSBpbmRpY2VzIHBlciBzZWdtZW50XFxuXFxuXFx0XFx0XFx0Zm9yICggaXkgPSAwOyBpeSA8IGdyaWRZOyBpeSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpeCA9IDA7IGl4IDwgZ3JpZFg7IGl4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBhID0gbnVtYmVyT2ZWZXJ0aWNlcyArIGl4ICsgZ3JpZFgxICogaXk7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGIgPSBudW1iZXJPZlZlcnRpY2VzICsgaXggKyBncmlkWDEgKiAoIGl5ICsgMSApO1xcblxcdFxcdFxcdFxcdFxcdHZhciBjID0gbnVtYmVyT2ZWZXJ0aWNlcyArICggaXggKyAxICkgKyBncmlkWDEgKiAoIGl5ICsgMSApO1xcblxcdFxcdFxcdFxcdFxcdHZhciBkID0gbnVtYmVyT2ZWZXJ0aWNlcyArICggaXggKyAxICkgKyBncmlkWDEgKiBpeTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBmYWNlc1xcblxcblxcdFxcdFxcdFxcdFxcdGluZGljZXMucHVzaCggYSwgYiwgZCApO1xcblxcdFxcdFxcdFxcdFxcdGluZGljZXMucHVzaCggYiwgYywgZCApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGluY3JlYXNlIGNvdW50ZXJcXG5cXG5cXHRcXHRcXHRcXHRcXHRncm91cENvdW50ICs9IDY7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBhZGQgYSBncm91cCB0byB0aGUgZ2VvbWV0cnkuIHRoaXMgd2lsbCBlbnN1cmUgbXVsdGkgbWF0ZXJpYWwgc3VwcG9ydFxcblxcblxcdFxcdFxcdHNjb3BlLmFkZEdyb3VwKCBncm91cFN0YXJ0LCBncm91cENvdW50LCBtYXRlcmlhbEluZGV4ICk7XFxuXFxuXFx0XFx0XFx0Ly8gY2FsY3VsYXRlIG5ldyBzdGFydCB2YWx1ZSBmb3IgZ3JvdXBzXFxuXFxuXFx0XFx0XFx0Z3JvdXBTdGFydCArPSBncm91cENvdW50O1xcblxcblxcdFxcdFxcdC8vIHVwZGF0ZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXNcXG5cXG5cXHRcXHRcXHRudW1iZXJPZlZlcnRpY2VzICs9IHZlcnRleENvdW50ZXI7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRCb3hCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRCb3hCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBCb3hCdWZmZXJHZW9tZXRyeTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICovXFxuXFxuXFx0Ly8gUGxhbmVHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIFBsYW5lR2VvbWV0cnkoIHdpZHRoLCBoZWlnaHQsIHdpZHRoU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzICkge1xcblxcblxcdFxcdEdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUGxhbmVHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHdpZHRoOiB3aWR0aCxcXG5cXHRcXHRcXHRoZWlnaHQ6IGhlaWdodCxcXG5cXHRcXHRcXHR3aWR0aFNlZ21lbnRzOiB3aWR0aFNlZ21lbnRzLFxcblxcdFxcdFxcdGhlaWdodFNlZ21lbnRzOiBoZWlnaHRTZWdtZW50c1xcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBQbGFuZUJ1ZmZlckdlb21ldHJ5KCB3aWR0aCwgaGVpZ2h0LCB3aWR0aFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cyApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdFBsYW5lR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0UGxhbmVHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBQbGFuZUdlb21ldHJ5O1xcblxcblxcdC8vIFBsYW5lQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBQbGFuZUJ1ZmZlckdlb21ldHJ5KCB3aWR0aCwgaGVpZ2h0LCB3aWR0aFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cyApIHtcXG5cXG5cXHRcXHRCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1BsYW5lQnVmZmVyR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHR3aWR0aDogd2lkdGgsXFxuXFx0XFx0XFx0aGVpZ2h0OiBoZWlnaHQsXFxuXFx0XFx0XFx0d2lkdGhTZWdtZW50czogd2lkdGhTZWdtZW50cyxcXG5cXHRcXHRcXHRoZWlnaHRTZWdtZW50czogaGVpZ2h0U2VnbWVudHNcXG5cXHRcXHR9O1xcblxcblxcdFxcdHdpZHRoID0gd2lkdGggfHwgMTtcXG5cXHRcXHRoZWlnaHQgPSBoZWlnaHQgfHwgMTtcXG5cXG5cXHRcXHR2YXIgd2lkdGhfaGFsZiA9IHdpZHRoIC8gMjtcXG5cXHRcXHR2YXIgaGVpZ2h0X2hhbGYgPSBoZWlnaHQgLyAyO1xcblxcblxcdFxcdHZhciBncmlkWCA9IE1hdGguZmxvb3IoIHdpZHRoU2VnbWVudHMgKSB8fCAxO1xcblxcdFxcdHZhciBncmlkWSA9IE1hdGguZmxvb3IoIGhlaWdodFNlZ21lbnRzICkgfHwgMTtcXG5cXG5cXHRcXHR2YXIgZ3JpZFgxID0gZ3JpZFggKyAxO1xcblxcdFxcdHZhciBncmlkWTEgPSBncmlkWSArIDE7XFxuXFxuXFx0XFx0dmFyIHNlZ21lbnRfd2lkdGggPSB3aWR0aCAvIGdyaWRYO1xcblxcdFxcdHZhciBzZWdtZW50X2hlaWdodCA9IGhlaWdodCAvIGdyaWRZO1xcblxcblxcdFxcdHZhciBpeCwgaXk7XFxuXFxuXFx0XFx0Ly8gYnVmZmVyc1xcblxcblxcdFxcdHZhciBpbmRpY2VzID0gW107XFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW107XFxuXFx0XFx0dmFyIG5vcm1hbHMgPSBbXTtcXG5cXHRcXHR2YXIgdXZzID0gW107XFxuXFxuXFx0XFx0Ly8gZ2VuZXJhdGUgdmVydGljZXMsIG5vcm1hbHMgYW5kIHV2c1xcblxcblxcdFxcdGZvciAoIGl5ID0gMDsgaXkgPCBncmlkWTE7IGl5ICsrICkge1xcblxcblxcdFxcdFxcdHZhciB5ID0gaXkgKiBzZWdtZW50X2hlaWdodCAtIGhlaWdodF9oYWxmO1xcblxcblxcdFxcdFxcdGZvciAoIGl4ID0gMDsgaXggPCBncmlkWDE7IGl4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB4ID0gaXggKiBzZWdtZW50X3dpZHRoIC0gd2lkdGhfaGFsZjtcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB4LCAtIHksIDAgKTtcXG5cXG5cXHRcXHRcXHRcXHRub3JtYWxzLnB1c2goIDAsIDAsIDEgKTtcXG5cXG5cXHRcXHRcXHRcXHR1dnMucHVzaCggaXggLyBncmlkWCApO1xcblxcdFxcdFxcdFxcdHV2cy5wdXNoKCAxIC0gKCBpeSAvIGdyaWRZICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGluZGljZXNcXG5cXG5cXHRcXHRmb3IgKCBpeSA9IDA7IGl5IDwgZ3JpZFk7IGl5ICsrICkge1xcblxcblxcdFxcdFxcdGZvciAoIGl4ID0gMDsgaXggPCBncmlkWDsgaXggKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGEgPSBpeCArIGdyaWRYMSAqIGl5O1xcblxcdFxcdFxcdFxcdHZhciBiID0gaXggKyBncmlkWDEgKiAoIGl5ICsgMSApO1xcblxcdFxcdFxcdFxcdHZhciBjID0gKCBpeCArIDEgKSArIGdyaWRYMSAqICggaXkgKyAxICk7XFxuXFx0XFx0XFx0XFx0dmFyIGQgPSAoIGl4ICsgMSApICsgZ3JpZFgxICogaXk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZmFjZXNcXG5cXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGEsIGIsIGQgKTtcXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGIsIGMsIGQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGJ1aWxkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggaW5kaWNlcyApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5vcm1hbHMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdXZzLCAyICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0UGxhbmVCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRQbGFuZUJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFBsYW5lQnVmZmVyR2VvbWV0cnk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqXFxuXFx0ICogcGFyYW1ldGVycyA9IHtcXG5cXHQgKiAgY29sb3I6IDxoZXg+LFxcblxcdCAqICBvcGFjaXR5OiA8ZmxvYXQ+LFxcblxcdCAqICBtYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgbGlnaHRNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGxpZ2h0TWFwSW50ZW5zaXR5OiA8ZmxvYXQ+XFxuXFx0ICpcXG5cXHQgKiAgYW9NYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGFvTWFwSW50ZW5zaXR5OiA8ZmxvYXQ+XFxuXFx0ICpcXG5cXHQgKiAgc3BlY3VsYXJNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgYWxwaGFNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgZW52TWFwOiBuZXcgVEhSRUUuVGV4dHVyZUN1YmUoIFtwb3N4LCBuZWd4LCBwb3N5LCBuZWd5LCBwb3N6LCBuZWd6XSApLFxcblxcdCAqICBjb21iaW5lOiBUSFJFRS5NdWx0aXBseSxcXG5cXHQgKiAgcmVmbGVjdGl2aXR5OiA8ZmxvYXQ+LFxcblxcdCAqICByZWZyYWN0aW9uUmF0aW86IDxmbG9hdD4sXFxuXFx0ICpcXG5cXHQgKiAgZGVwdGhUZXN0OiA8Ym9vbD4sXFxuXFx0ICogIGRlcHRoV3JpdGU6IDxib29sPixcXG5cXHQgKlxcblxcdCAqICB3aXJlZnJhbWU6IDxib29sZWFuPixcXG5cXHQgKiAgd2lyZWZyYW1lTGluZXdpZHRoOiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIHNraW5uaW5nOiA8Ym9vbD4sXFxuXFx0ICogIG1vcnBoVGFyZ2V0czogPGJvb2w+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE1lc2hCYXNpY01hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaEJhc2ljTWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSBuZXcgQ29sb3IoIDB4ZmZmZmZmICk7IC8vIGVtaXNzaXZlXFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMubGlnaHRNYXAgPSBudWxsO1xcblxcdFxcdHRoaXMubGlnaHRNYXBJbnRlbnNpdHkgPSAxLjA7XFxuXFxuXFx0XFx0dGhpcy5hb01hcCA9IG51bGw7XFxuXFx0XFx0dGhpcy5hb01hcEludGVuc2l0eSA9IDEuMDtcXG5cXG5cXHRcXHR0aGlzLnNwZWN1bGFyTWFwID0gbnVsbDtcXG5cXG5cXHRcXHR0aGlzLmFscGhhTWFwID0gbnVsbDtcXG5cXG5cXHRcXHR0aGlzLmVudk1hcCA9IG51bGw7XFxuXFx0XFx0dGhpcy5jb21iaW5lID0gTXVsdGlwbHlPcGVyYXRpb247XFxuXFx0XFx0dGhpcy5yZWZsZWN0aXZpdHkgPSAxO1xcblxcdFxcdHRoaXMucmVmcmFjdGlvblJhdGlvID0gMC45ODtcXG5cXG5cXHRcXHR0aGlzLndpcmVmcmFtZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZXdpZHRoID0gMTtcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmVjYXAgPSAncm91bmQnO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZWpvaW4gPSAncm91bmQnO1xcblxcblxcdFxcdHRoaXMuc2tpbm5pbmcgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLm1vcnBoVGFyZ2V0cyA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMubGlnaHRzID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5zZXRWYWx1ZXMoIHBhcmFtZXRlcnMgKTtcXG5cXG5cXHR9XFxuXFxuXFx0TWVzaEJhc2ljTWF0ZXJpYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggTWF0ZXJpYWwucHJvdG90eXBlICk7XFxuXFx0TWVzaEJhc2ljTWF0ZXJpYWwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWVzaEJhc2ljTWF0ZXJpYWw7XFxuXFxuXFx0TWVzaEJhc2ljTWF0ZXJpYWwucHJvdG90eXBlLmlzTWVzaEJhc2ljTWF0ZXJpYWwgPSB0cnVlO1xcblxcblxcdE1lc2hCYXNpY01hdGVyaWFsLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0TWF0ZXJpYWwucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0dGhpcy5jb2xvci5jb3B5KCBzb3VyY2UuY29sb3IgKTtcXG5cXG5cXHRcXHR0aGlzLm1hcCA9IHNvdXJjZS5tYXA7XFxuXFxuXFx0XFx0dGhpcy5saWdodE1hcCA9IHNvdXJjZS5saWdodE1hcDtcXG5cXHRcXHR0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5ID0gc291cmNlLmxpZ2h0TWFwSW50ZW5zaXR5O1xcblxcblxcdFxcdHRoaXMuYW9NYXAgPSBzb3VyY2UuYW9NYXA7XFxuXFx0XFx0dGhpcy5hb01hcEludGVuc2l0eSA9IHNvdXJjZS5hb01hcEludGVuc2l0eTtcXG5cXG5cXHRcXHR0aGlzLnNwZWN1bGFyTWFwID0gc291cmNlLnNwZWN1bGFyTWFwO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBzb3VyY2UuYWxwaGFNYXA7XFxuXFxuXFx0XFx0dGhpcy5lbnZNYXAgPSBzb3VyY2UuZW52TWFwO1xcblxcdFxcdHRoaXMuY29tYmluZSA9IHNvdXJjZS5jb21iaW5lO1xcblxcdFxcdHRoaXMucmVmbGVjdGl2aXR5ID0gc291cmNlLnJlZmxlY3Rpdml0eTtcXG5cXHRcXHR0aGlzLnJlZnJhY3Rpb25SYXRpbyA9IHNvdXJjZS5yZWZyYWN0aW9uUmF0aW87XFxuXFxuXFx0XFx0dGhpcy53aXJlZnJhbWUgPSBzb3VyY2Uud2lyZWZyYW1lO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZXdpZHRoID0gc291cmNlLndpcmVmcmFtZUxpbmV3aWR0aDtcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmVjYXAgPSBzb3VyY2Uud2lyZWZyYW1lTGluZWNhcDtcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmVqb2luID0gc291cmNlLndpcmVmcmFtZUxpbmVqb2luO1xcblxcblxcdFxcdHRoaXMuc2tpbm5pbmcgPSBzb3VyY2Uuc2tpbm5pbmc7XFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSBzb3VyY2UubW9ycGhUYXJnZXRzO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGRlZmluZXM6IHsgXFxcImxhYmVsXFxcIiA6IFxcXCJ2YWx1ZVxcXCIgfSxcXG5cXHQgKiAgdW5pZm9ybXM6IHsgXFxcInBhcmFtZXRlcjFcXFwiOiB7IHZhbHVlOiAxLjAgfSwgXFxcInBhcmFtZXRlcjJcXFwiOiB7IHZhbHVlMjogMiB9IH0sXFxuXFx0ICpcXG5cXHQgKiAgZnJhZ21lbnRTaGFkZXI6IDxzdHJpbmc+LFxcblxcdCAqICB2ZXJ0ZXhTaGFkZXI6IDxzdHJpbmc+LFxcblxcdCAqXFxuXFx0ICogIHdpcmVmcmFtZTogPGJvb2xlYW4+LFxcblxcdCAqICB3aXJlZnJhbWVMaW5ld2lkdGg6IDxmbG9hdD4sXFxuXFx0ICpcXG5cXHQgKiAgbGlnaHRzOiA8Ym9vbD4sXFxuXFx0ICpcXG5cXHQgKiAgc2tpbm5pbmc6IDxib29sPixcXG5cXHQgKiAgbW9ycGhUYXJnZXRzOiA8Ym9vbD4sXFxuXFx0ICogIG1vcnBoTm9ybWFsczogPGJvb2w+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFNoYWRlck1hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnU2hhZGVyTWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMuZGVmaW5lcyA9IHt9O1xcblxcdFxcdHRoaXMudW5pZm9ybXMgPSB7fTtcXG5cXG5cXHRcXHR0aGlzLnZlcnRleFNoYWRlciA9ICd2b2lkIG1haW4oKSB7XFxcXG5cXFxcdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcXFxcbn0nO1xcblxcdFxcdHRoaXMuZnJhZ21lbnRTaGFkZXIgPSAndm9pZCBtYWluKCkge1xcXFxuXFxcXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAxLjAsIDAuMCwgMC4wLCAxLjAgKTtcXFxcbn0nO1xcblxcblxcdFxcdHRoaXMubGluZXdpZHRoID0gMTtcXG5cXG5cXHRcXHR0aGlzLndpcmVmcmFtZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZXdpZHRoID0gMTtcXG5cXG5cXHRcXHR0aGlzLmZvZyA9IGZhbHNlOyAvLyBzZXQgdG8gdXNlIHNjZW5lIGZvZ1xcblxcdFxcdHRoaXMubGlnaHRzID0gZmFsc2U7IC8vIHNldCB0byB1c2Ugc2NlbmUgbGlnaHRzXFxuXFx0XFx0dGhpcy5jbGlwcGluZyA9IGZhbHNlOyAvLyBzZXQgdG8gdXNlIHVzZXItZGVmaW5lZCBjbGlwcGluZyBwbGFuZXNcXG5cXG5cXHRcXHR0aGlzLnNraW5uaW5nID0gZmFsc2U7IC8vIHNldCB0byB1c2Ugc2tpbm5pbmcgYXR0cmlidXRlIHN0cmVhbXNcXG5cXHRcXHR0aGlzLm1vcnBoVGFyZ2V0cyA9IGZhbHNlOyAvLyBzZXQgdG8gdXNlIG1vcnBoIHRhcmdldHNcXG5cXHRcXHR0aGlzLm1vcnBoTm9ybWFscyA9IGZhbHNlOyAvLyBzZXQgdG8gdXNlIG1vcnBoIG5vcm1hbHNcXG5cXG5cXHRcXHR0aGlzLmV4dGVuc2lvbnMgPSB7XFxuXFx0XFx0XFx0ZGVyaXZhdGl2ZXM6IGZhbHNlLCAvLyBzZXQgdG8gdXNlIGRlcml2YXRpdmVzXFxuXFx0XFx0XFx0ZnJhZ0RlcHRoOiBmYWxzZSwgLy8gc2V0IHRvIHVzZSBmcmFnbWVudCBkZXB0aCB2YWx1ZXNcXG5cXHRcXHRcXHRkcmF3QnVmZmVyczogZmFsc2UsIC8vIHNldCB0byB1c2UgZHJhdyBidWZmZXJzXFxuXFx0XFx0XFx0c2hhZGVyVGV4dHVyZUxPRDogZmFsc2UgLy8gc2V0IHRvIHVzZSBzaGFkZXIgdGV4dHVyZSBMT0RcXG5cXHRcXHR9O1xcblxcblxcdFxcdC8vIFdoZW4gcmVuZGVyZWQgZ2VvbWV0cnkgZG9lc24ndCBpbmNsdWRlIHRoZXNlIGF0dHJpYnV0ZXMgYnV0IHRoZSBtYXRlcmlhbCBkb2VzLFxcblxcdFxcdC8vIHVzZSB0aGVzZSBkZWZhdWx0IHZhbHVlcyBpbiBXZWJHTC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gYnVmZmVyIGRhdGEgaXMgbWlzc2luZy5cXG5cXHRcXHR0aGlzLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXMgPSB7XFxuXFx0XFx0XFx0J2NvbG9yJzogWyAxLCAxLCAxIF0sXFxuXFx0XFx0XFx0J3V2JzogWyAwLCAwIF0sXFxuXFx0XFx0XFx0J3V2Mic6IFsgMCwgMCBdXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmluZGV4MEF0dHJpYnV0ZU5hbWUgPSB1bmRlZmluZWQ7XFxuXFxuXFx0XFx0aWYgKCBwYXJhbWV0ZXJzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBwYXJhbWV0ZXJzLmF0dHJpYnV0ZXMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuJyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLnNldFZhbHVlcyggcGFyYW1ldGVycyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0U2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggTWF0ZXJpYWwucHJvdG90eXBlICk7XFxuXFx0U2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2hhZGVyTWF0ZXJpYWw7XFxuXFxuXFx0U2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlLmlzU2hhZGVyTWF0ZXJpYWwgPSB0cnVlO1xcblxcblxcdFNoYWRlck1hdGVyaWFsLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0TWF0ZXJpYWwucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0dGhpcy5mcmFnbWVudFNoYWRlciA9IHNvdXJjZS5mcmFnbWVudFNoYWRlcjtcXG5cXHRcXHR0aGlzLnZlcnRleFNoYWRlciA9IHNvdXJjZS52ZXJ0ZXhTaGFkZXI7XFxuXFxuXFx0XFx0dGhpcy51bmlmb3JtcyA9IFVuaWZvcm1zVXRpbHMuY2xvbmUoIHNvdXJjZS51bmlmb3JtcyApO1xcblxcblxcdFxcdHRoaXMuZGVmaW5lcyA9IHNvdXJjZS5kZWZpbmVzO1xcblxcblxcdFxcdHRoaXMud2lyZWZyYW1lID0gc291cmNlLndpcmVmcmFtZTtcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmV3aWR0aCA9IHNvdXJjZS53aXJlZnJhbWVMaW5ld2lkdGg7XFxuXFxuXFx0XFx0dGhpcy5saWdodHMgPSBzb3VyY2UubGlnaHRzO1xcblxcdFxcdHRoaXMuY2xpcHBpbmcgPSBzb3VyY2UuY2xpcHBpbmc7XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IHNvdXJjZS5za2lubmluZztcXG5cXG5cXHRcXHR0aGlzLm1vcnBoVGFyZ2V0cyA9IHNvdXJjZS5tb3JwaFRhcmdldHM7XFxuXFx0XFx0dGhpcy5tb3JwaE5vcm1hbHMgPSBzb3VyY2UubW9ycGhOb3JtYWxzO1xcblxcblxcdFxcdHRoaXMuZXh0ZW5zaW9ucyA9IHNvdXJjZS5leHRlbnNpb25zO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0U2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICggbWV0YSApIHtcXG5cXG5cXHRcXHR2YXIgZGF0YSA9IE1hdGVyaWFsLnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcywgbWV0YSApO1xcblxcblxcdFxcdGRhdGEudW5pZm9ybXMgPSB0aGlzLnVuaWZvcm1zO1xcblxcdFxcdGRhdGEudmVydGV4U2hhZGVyID0gdGhpcy52ZXJ0ZXhTaGFkZXI7XFxuXFx0XFx0ZGF0YS5mcmFnbWVudFNoYWRlciA9IHRoaXMuZnJhZ21lbnRTaGFkZXI7XFxuXFxuXFx0XFx0cmV0dXJuIGRhdGE7XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGJob3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gUmF5KCBvcmlnaW4sIGRpcmVjdGlvbiApIHtcXG5cXG5cXHRcXHR0aGlzLm9yaWdpbiA9ICggb3JpZ2luICE9PSB1bmRlZmluZWQgKSA/IG9yaWdpbiA6IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dGhpcy5kaXJlY3Rpb24gPSAoIGRpcmVjdGlvbiAhPT0gdW5kZWZpbmVkICkgPyBkaXJlY3Rpb24gOiBuZXcgVmVjdG9yMygpO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBSYXkucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIG9yaWdpbiwgZGlyZWN0aW9uICkge1xcblxcblxcdFxcdFxcdHRoaXMub3JpZ2luLmNvcHkoIG9yaWdpbiApO1xcblxcdFxcdFxcdHRoaXMuZGlyZWN0aW9uLmNvcHkoIGRpcmVjdGlvbiApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHJheSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm9yaWdpbi5jb3B5KCByYXkub3JpZ2luICk7XFxuXFx0XFx0XFx0dGhpcy5kaXJlY3Rpb24uY29weSggcmF5LmRpcmVjdGlvbiApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXQ6IGZ1bmN0aW9uICggdCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHJlc3VsdC5jb3B5KCB0aGlzLmRpcmVjdGlvbiApLm11bHRpcGx5U2NhbGFyKCB0ICkuYWRkKCB0aGlzLm9yaWdpbiApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bG9va0F0OiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5kaXJlY3Rpb24uY29weSggdiApLnN1YiggdGhpcy5vcmlnaW4gKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJlY2FzdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJlY2FzdCggdCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm9yaWdpbi5jb3B5KCB0aGlzLmF0KCB0LCB2MSApICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0Y2xvc2VzdFBvaW50VG9Qb2ludDogZnVuY3Rpb24gKCBwb2ludCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0cmVzdWx0LnN1YlZlY3RvcnMoIHBvaW50LCB0aGlzLm9yaWdpbiApO1xcblxcdFxcdFxcdHZhciBkaXJlY3Rpb25EaXN0YW5jZSA9IHJlc3VsdC5kb3QoIHRoaXMuZGlyZWN0aW9uICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBkaXJlY3Rpb25EaXN0YW5jZSA8IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHJlc3VsdC5jb3B5KCB0aGlzLm9yaWdpbiApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gcmVzdWx0LmNvcHkoIHRoaXMuZGlyZWN0aW9uICkubXVsdGlwbHlTY2FsYXIoIGRpcmVjdGlvbkRpc3RhbmNlICkuYWRkKCB0aGlzLm9yaWdpbiApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGlzdGFuY2VUb1BvaW50OiBmdW5jdGlvbiAoIHBvaW50ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLnNxcnQoIHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQoIHBvaW50ICkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGRpc3RhbmNlU3FUb1BvaW50OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gZGlzdGFuY2VTcVRvUG9pbnQoIHBvaW50ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBkaXJlY3Rpb25EaXN0YW5jZSA9IHYxLnN1YlZlY3RvcnMoIHBvaW50LCB0aGlzLm9yaWdpbiApLmRvdCggdGhpcy5kaXJlY3Rpb24gKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBwb2ludCBiZWhpbmQgdGhlIHJheVxcblxcblxcdFxcdFxcdFxcdGlmICggZGlyZWN0aW9uRGlzdGFuY2UgPCAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzLm9yaWdpbi5kaXN0YW5jZVRvU3F1YXJlZCggcG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0djEuY29weSggdGhpcy5kaXJlY3Rpb24gKS5tdWx0aXBseVNjYWxhciggZGlyZWN0aW9uRGlzdGFuY2UgKS5hZGQoIHRoaXMub3JpZ2luICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHYxLmRpc3RhbmNlVG9TcXVhcmVkKCBwb2ludCApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGRpc3RhbmNlU3FUb1NlZ21lbnQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgc2VnQ2VudGVyID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgc2VnRGlyID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgZGlmZiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGRpc3RhbmNlU3FUb1NlZ21lbnQoIHYwLCB2MSwgb3B0aW9uYWxQb2ludE9uUmF5LCBvcHRpb25hbFBvaW50T25TZWdtZW50ICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGZyb20gaHR0cDovL3d3dy5nZW9tZXRyaWN0b29scy5jb20vR1RFbmdpbmUvSW5jbHVkZS9NYXRoZW1hdGljcy9HdGVEaXN0UmF5U2VnbWVudC5oXFxuXFx0XFx0XFx0XFx0Ly8gSXQgcmV0dXJucyB0aGUgbWluIGRpc3RhbmNlIGJldHdlZW4gdGhlIHJheSBhbmQgdGhlIHNlZ21lbnRcXG5cXHRcXHRcXHRcXHQvLyBkZWZpbmVkIGJ5IHYwIGFuZCB2MVxcblxcdFxcdFxcdFxcdC8vIEl0IGNhbiBhbHNvIHNldCB0d28gb3B0aW9uYWwgdGFyZ2V0cyA6XFxuXFx0XFx0XFx0XFx0Ly8gLSBUaGUgY2xvc2VzdCBwb2ludCBvbiB0aGUgcmF5XFxuXFx0XFx0XFx0XFx0Ly8gLSBUaGUgY2xvc2VzdCBwb2ludCBvbiB0aGUgc2VnbWVudFxcblxcblxcdFxcdFxcdFxcdHNlZ0NlbnRlci5jb3B5KCB2MCApLmFkZCggdjEgKS5tdWx0aXBseVNjYWxhciggMC41ICk7XFxuXFx0XFx0XFx0XFx0c2VnRGlyLmNvcHkoIHYxICkuc3ViKCB2MCApLm5vcm1hbGl6ZSgpO1xcblxcdFxcdFxcdFxcdGRpZmYuY29weSggdGhpcy5vcmlnaW4gKS5zdWIoIHNlZ0NlbnRlciApO1xcblxcblxcdFxcdFxcdFxcdHZhciBzZWdFeHRlbnQgPSB2MC5kaXN0YW5jZVRvKCB2MSApICogMC41O1xcblxcdFxcdFxcdFxcdHZhciBhMDEgPSAtIHRoaXMuZGlyZWN0aW9uLmRvdCggc2VnRGlyICk7XFxuXFx0XFx0XFx0XFx0dmFyIGIwID0gZGlmZi5kb3QoIHRoaXMuZGlyZWN0aW9uICk7XFxuXFx0XFx0XFx0XFx0dmFyIGIxID0gLSBkaWZmLmRvdCggc2VnRGlyICk7XFxuXFx0XFx0XFx0XFx0dmFyIGMgPSBkaWZmLmxlbmd0aFNxKCk7XFxuXFx0XFx0XFx0XFx0dmFyIGRldCA9IE1hdGguYWJzKCAxIC0gYTAxICogYTAxICk7XFxuXFx0XFx0XFx0XFx0dmFyIHMwLCBzMSwgc3FyRGlzdCwgZXh0RGV0O1xcblxcblxcdFxcdFxcdFxcdGlmICggZGV0ID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBUaGUgcmF5IGFuZCBzZWdtZW50IGFyZSBub3QgcGFyYWxsZWwuXFxuXFxuXFx0XFx0XFx0XFx0XFx0czAgPSBhMDEgKiBiMSAtIGIwO1xcblxcdFxcdFxcdFxcdFxcdHMxID0gYTAxICogYjAgLSBiMTtcXG5cXHRcXHRcXHRcXHRcXHRleHREZXQgPSBzZWdFeHRlbnQgKiBkZXQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBzMCA+PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggczEgPj0gLSBleHREZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBzMSA8PSBleHREZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gcmVnaW9uIDBcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyBNaW5pbXVtIGF0IGludGVyaW9yIHBvaW50cyBvZiByYXkgYW5kIHNlZ21lbnQuXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGludkRldCA9IDEgLyBkZXQ7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0czAgKj0gaW52RGV0O1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHMxICo9IGludkRldDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzcXJEaXN0ID0gczAgKiAoIHMwICsgYTAxICogczEgKyAyICogYjAgKSArIHMxICogKCBhMDEgKiBzMCArIHMxICsgMiAqIGIxICkgKyBjO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gcmVnaW9uIDFcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzMSA9IHNlZ0V4dGVudDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzMCA9IE1hdGgubWF4KCAwLCAtICggYTAxICogczEgKyBiMCApICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3FyRGlzdCA9IC0gczAgKiBzMCArIHMxICogKCBzMSArIDIgKiBiMSApICsgYztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyByZWdpb24gNVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHMxID0gLSBzZWdFeHRlbnQ7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0czAgPSBNYXRoLm1heCggMCwgLSAoIGEwMSAqIHMxICsgYjAgKSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNxckRpc3QgPSAtIHMwICogczAgKyBzMSAqICggczEgKyAyICogYjEgKSArIGM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBzMSA8PSAtIGV4dERldCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyByZWdpb24gNFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHMwID0gTWF0aC5tYXgoIDAsIC0gKCAtIGEwMSAqIHNlZ0V4dGVudCArIGIwICkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzMSA9ICggczAgPiAwICkgPyAtIHNlZ0V4dGVudCA6IE1hdGgubWluKCBNYXRoLm1heCggLSBzZWdFeHRlbnQsIC0gYjEgKSwgc2VnRXh0ZW50ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c3FyRGlzdCA9IC0gczAgKiBzMCArIHMxICogKCBzMSArIDIgKiBiMSApICsgYztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBzMSA8PSBleHREZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gcmVnaW9uIDNcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzMCA9IDA7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0czEgPSBNYXRoLm1pbiggTWF0aC5tYXgoIC0gc2VnRXh0ZW50LCAtIGIxICksIHNlZ0V4dGVudCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNxckRpc3QgPSBzMSAqICggczEgKyAyICogYjEgKSArIGM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyByZWdpb24gMlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHMwID0gTWF0aC5tYXgoIDAsIC0gKCBhMDEgKiBzZWdFeHRlbnQgKyBiMCApICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0czEgPSAoIHMwID4gMCApID8gc2VnRXh0ZW50IDogTWF0aC5taW4oIE1hdGgubWF4KCAtIHNlZ0V4dGVudCwgLSBiMSApLCBzZWdFeHRlbnQgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzcXJEaXN0ID0gLSBzMCAqIHMwICsgczEgKiAoIHMxICsgMiAqIGIxICkgKyBjO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBSYXkgYW5kIHNlZ21lbnQgYXJlIHBhcmFsbGVsLlxcblxcblxcdFxcdFxcdFxcdFxcdHMxID0gKCBhMDEgPiAwICkgPyAtIHNlZ0V4dGVudCA6IHNlZ0V4dGVudDtcXG5cXHRcXHRcXHRcXHRcXHRzMCA9IE1hdGgubWF4KCAwLCAtICggYTAxICogczEgKyBiMCApICk7XFxuXFx0XFx0XFx0XFx0XFx0c3FyRGlzdCA9IC0gczAgKiBzMCArIHMxICogKCBzMSArIDIgKiBiMSApICsgYztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvcHRpb25hbFBvaW50T25SYXkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0b3B0aW9uYWxQb2ludE9uUmF5LmNvcHkoIHRoaXMuZGlyZWN0aW9uICkubXVsdGlwbHlTY2FsYXIoIHMwICkuYWRkKCB0aGlzLm9yaWdpbiApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9wdGlvbmFsUG9pbnRPblNlZ21lbnQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0b3B0aW9uYWxQb2ludE9uU2VnbWVudC5jb3B5KCBzZWdEaXIgKS5tdWx0aXBseVNjYWxhciggczEgKS5hZGQoIHNlZ0NlbnRlciApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gc3FyRGlzdDtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRpbnRlcnNlY3RTcGhlcmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBpbnRlcnNlY3RTcGhlcmUoIHNwaGVyZSwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0djEuc3ViVmVjdG9ycyggc3BoZXJlLmNlbnRlciwgdGhpcy5vcmlnaW4gKTtcXG5cXHRcXHRcXHRcXHR2YXIgdGNhID0gdjEuZG90KCB0aGlzLmRpcmVjdGlvbiApO1xcblxcdFxcdFxcdFxcdHZhciBkMiA9IHYxLmRvdCggdjEgKSAtIHRjYSAqIHRjYTtcXG5cXHRcXHRcXHRcXHR2YXIgcmFkaXVzMiA9IHNwaGVyZS5yYWRpdXMgKiBzcGhlcmUucmFkaXVzO1xcblxcblxcdFxcdFxcdFxcdGlmICggZDIgPiByYWRpdXMyICkgcmV0dXJuIG51bGw7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHRoYyA9IE1hdGguc3FydCggcmFkaXVzMiAtIGQyICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdDAgPSBmaXJzdCBpbnRlcnNlY3QgcG9pbnQgLSBlbnRyYW5jZSBvbiBmcm9udCBvZiBzcGhlcmVcXG5cXHRcXHRcXHRcXHR2YXIgdDAgPSB0Y2EgLSB0aGM7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdDEgPSBzZWNvbmQgaW50ZXJzZWN0IHBvaW50IC0gZXhpdCBwb2ludCBvbiBiYWNrIG9mIHNwaGVyZVxcblxcdFxcdFxcdFxcdHZhciB0MSA9IHRjYSArIHRoYztcXG5cXG5cXHRcXHRcXHRcXHQvLyB0ZXN0IHRvIHNlZSBpZiBib3RoIHQwIGFuZCB0MSBhcmUgYmVoaW5kIHRoZSByYXkgLSBpZiBzbywgcmV0dXJuIG51bGxcXG5cXHRcXHRcXHRcXHRpZiAoIHQwIDwgMCAmJiB0MSA8IDAgKSByZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHRcXHQvLyB0ZXN0IHRvIHNlZSBpZiB0MCBpcyBiZWhpbmQgdGhlIHJheTpcXG5cXHRcXHRcXHRcXHQvLyBpZiBpdCBpcywgdGhlIHJheSBpcyBpbnNpZGUgdGhlIHNwaGVyZSwgc28gcmV0dXJuIHRoZSBzZWNvbmQgZXhpdCBwb2ludCBzY2FsZWQgYnkgdDEsXFxuXFx0XFx0XFx0XFx0Ly8gaW4gb3JkZXIgdG8gYWx3YXlzIHJldHVybiBhbiBpbnRlcnNlY3QgcG9pbnQgdGhhdCBpcyBpbiBmcm9udCBvZiB0aGUgcmF5LlxcblxcdFxcdFxcdFxcdGlmICggdDAgPCAwICkgcmV0dXJuIHRoaXMuYXQoIHQxLCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdFxcdFxcdFxcdC8vIGVsc2UgdDAgaXMgaW4gZnJvbnQgb2YgdGhlIHJheSwgc28gcmV0dXJuIHRoZSBmaXJzdCBjb2xsaXNpb24gcG9pbnQgc2NhbGVkIGJ5IHQwXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuYXQoIHQwLCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGludGVyc2VjdHNTcGhlcmU6IGZ1bmN0aW9uICggc3BoZXJlICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmRpc3RhbmNlVG9Qb2ludCggc3BoZXJlLmNlbnRlciApIDw9IHNwaGVyZS5yYWRpdXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXN0YW5jZVRvUGxhbmU6IGZ1bmN0aW9uICggcGxhbmUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGRlbm9taW5hdG9yID0gcGxhbmUubm9ybWFsLmRvdCggdGhpcy5kaXJlY3Rpb24gKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGRlbm9taW5hdG9yID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGxpbmUgaXMgY29wbGFuYXIsIHJldHVybiBvcmlnaW5cXG5cXHRcXHRcXHRcXHRpZiAoIHBsYW5lLmRpc3RhbmNlVG9Qb2ludCggdGhpcy5vcmlnaW4gKSA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gTnVsbCBpcyBwcmVmZXJhYmxlIHRvIHVuZGVmaW5lZCBzaW5jZSB1bmRlZmluZWQgbWVhbnMuLi4uIGl0IGlzIHVuZGVmaW5lZFxcblxcblxcdFxcdFxcdFxcdHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgdCA9IC0gKCB0aGlzLm9yaWdpbi5kb3QoIHBsYW5lLm5vcm1hbCApICsgcGxhbmUuY29uc3RhbnQgKSAvIGRlbm9taW5hdG9yO1xcblxcblxcdFxcdFxcdC8vIFJldHVybiBpZiB0aGUgcmF5IG5ldmVyIGludGVyc2VjdHMgdGhlIHBsYW5lXFxuXFxuXFx0XFx0XFx0cmV0dXJuIHQgPj0gMCA/IHQgOiBudWxsO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aW50ZXJzZWN0UGxhbmU6IGZ1bmN0aW9uICggcGxhbmUsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciB0ID0gdGhpcy5kaXN0YW5jZVRvUGxhbmUoIHBsYW5lICk7XFxuXFxuXFx0XFx0XFx0aWYgKCB0ID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5hdCggdCwgb3B0aW9uYWxUYXJnZXQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdHNQbGFuZTogZnVuY3Rpb24gKCBwbGFuZSApIHtcXG5cXG5cXHRcXHRcXHQvLyBjaGVjayBpZiB0aGUgcmF5IGxpZXMgb24gdGhlIHBsYW5lIGZpcnN0XFxuXFxuXFx0XFx0XFx0dmFyIGRpc3RUb1BvaW50ID0gcGxhbmUuZGlzdGFuY2VUb1BvaW50KCB0aGlzLm9yaWdpbiApO1xcblxcblxcdFxcdFxcdGlmICggZGlzdFRvUG9pbnQgPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBkZW5vbWluYXRvciA9IHBsYW5lLm5vcm1hbC5kb3QoIHRoaXMuZGlyZWN0aW9uICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBkZW5vbWluYXRvciAqIGRpc3RUb1BvaW50IDwgMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gcmF5IG9yaWdpbiBpcyBiZWhpbmQgdGhlIHBsYW5lIChhbmQgaXMgcG9pbnRpbmcgYmVoaW5kIGl0KVxcblxcblxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdEJveDogZnVuY3Rpb24gKCBib3gsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciB0bWluLCB0bWF4LCB0eW1pbiwgdHltYXgsIHR6bWluLCB0em1heDtcXG5cXG5cXHRcXHRcXHR2YXIgaW52ZGlyeCA9IDEgLyB0aGlzLmRpcmVjdGlvbi54LFxcblxcdFxcdFxcdFxcdGludmRpcnkgPSAxIC8gdGhpcy5kaXJlY3Rpb24ueSxcXG5cXHRcXHRcXHRcXHRpbnZkaXJ6ID0gMSAvIHRoaXMuZGlyZWN0aW9uLno7XFxuXFxuXFx0XFx0XFx0dmFyIG9yaWdpbiA9IHRoaXMub3JpZ2luO1xcblxcblxcdFxcdFxcdGlmICggaW52ZGlyeCA+PSAwICkge1xcblxcblxcdFxcdFxcdFxcdHRtaW4gPSAoIGJveC5taW4ueCAtIG9yaWdpbi54ICkgKiBpbnZkaXJ4O1xcblxcdFxcdFxcdFxcdHRtYXggPSAoIGJveC5tYXgueCAtIG9yaWdpbi54ICkgKiBpbnZkaXJ4O1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0dG1pbiA9ICggYm94Lm1heC54IC0gb3JpZ2luLnggKSAqIGludmRpcng7XFxuXFx0XFx0XFx0XFx0dG1heCA9ICggYm94Lm1pbi54IC0gb3JpZ2luLnggKSAqIGludmRpcng7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggaW52ZGlyeSA+PSAwICkge1xcblxcblxcdFxcdFxcdFxcdHR5bWluID0gKCBib3gubWluLnkgLSBvcmlnaW4ueSApICogaW52ZGlyeTtcXG5cXHRcXHRcXHRcXHR0eW1heCA9ICggYm94Lm1heC55IC0gb3JpZ2luLnkgKSAqIGludmRpcnk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR0eW1pbiA9ICggYm94Lm1heC55IC0gb3JpZ2luLnkgKSAqIGludmRpcnk7XFxuXFx0XFx0XFx0XFx0dHltYXggPSAoIGJveC5taW4ueSAtIG9yaWdpbi55ICkgKiBpbnZkaXJ5O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoICggdG1pbiA+IHR5bWF4ICkgfHwgKCB0eW1pbiA+IHRtYXggKSApIHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdC8vIFRoZXNlIGxpbmVzIGFsc28gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRtaW4gb3IgdG1heCBpcyBOYU5cXG5cXHRcXHRcXHQvLyAocmVzdWx0IG9mIDAgKiBJbmZpbml0eSkuIHggIT09IHggcmV0dXJucyB0cnVlIGlmIHggaXMgTmFOXFxuXFxuXFx0XFx0XFx0aWYgKCB0eW1pbiA+IHRtaW4gfHwgdG1pbiAhPT0gdG1pbiApIHRtaW4gPSB0eW1pbjtcXG5cXG5cXHRcXHRcXHRpZiAoIHR5bWF4IDwgdG1heCB8fCB0bWF4ICE9PSB0bWF4ICkgdG1heCA9IHR5bWF4O1xcblxcblxcdFxcdFxcdGlmICggaW52ZGlyeiA+PSAwICkge1xcblxcblxcdFxcdFxcdFxcdHR6bWluID0gKCBib3gubWluLnogLSBvcmlnaW4ueiApICogaW52ZGlyejtcXG5cXHRcXHRcXHRcXHR0em1heCA9ICggYm94Lm1heC56IC0gb3JpZ2luLnogKSAqIGludmRpcno7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR0em1pbiA9ICggYm94Lm1heC56IC0gb3JpZ2luLnogKSAqIGludmRpcno7XFxuXFx0XFx0XFx0XFx0dHptYXggPSAoIGJveC5taW4ueiAtIG9yaWdpbi56ICkgKiBpbnZkaXJ6O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoICggdG1pbiA+IHR6bWF4ICkgfHwgKCB0em1pbiA+IHRtYXggKSApIHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdGlmICggdHptaW4gPiB0bWluIHx8IHRtaW4gIT09IHRtaW4gKSB0bWluID0gdHptaW47XFxuXFxuXFx0XFx0XFx0aWYgKCB0em1heCA8IHRtYXggfHwgdG1heCAhPT0gdG1heCApIHRtYXggPSB0em1heDtcXG5cXG5cXHRcXHRcXHQvL3JldHVybiBwb2ludCBjbG9zZXN0IHRvIHRoZSByYXkgKHBvc2l0aXZlIHNpZGUpXFxuXFxuXFx0XFx0XFx0aWYgKCB0bWF4IDwgMCApIHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmF0KCB0bWluID49IDAgPyB0bWluIDogdG1heCwgb3B0aW9uYWxUYXJnZXQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdHNCb3g6ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2ID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gaW50ZXJzZWN0c0JveCggYm94ICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmludGVyc2VjdEJveCggYm94LCB2ICkgIT09IG51bGw7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9ICkoKSxcXG5cXG5cXHRcXHRpbnRlcnNlY3RUcmlhbmdsZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIENvbXB1dGUgdGhlIG9mZnNldCBvcmlnaW4sIGVkZ2VzLCBhbmQgbm9ybWFsLlxcblxcdFxcdFxcdHZhciBkaWZmID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgZWRnZTEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBlZGdlMiA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0dmFyIG5vcm1hbCA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGludGVyc2VjdFRyaWFuZ2xlKCBhLCBiLCBjLCBiYWNrZmFjZUN1bGxpbmcsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGZyb20gaHR0cDovL3d3dy5nZW9tZXRyaWN0b29scy5jb20vR1RFbmdpbmUvSW5jbHVkZS9NYXRoZW1hdGljcy9HdGVJbnRyUmF5M1RyaWFuZ2xlMy5oXFxuXFxuXFx0XFx0XFx0XFx0ZWRnZTEuc3ViVmVjdG9ycyggYiwgYSApO1xcblxcdFxcdFxcdFxcdGVkZ2UyLnN1YlZlY3RvcnMoIGMsIGEgKTtcXG5cXHRcXHRcXHRcXHRub3JtYWwuY3Jvc3NWZWN0b3JzKCBlZGdlMSwgZWRnZTIgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBTb2x2ZSBRICsgdCpEID0gYjEqRTEgKyBiMipFMiAoUSA9IGtEaWZmLCBEID0gcmF5IGRpcmVjdGlvbixcXG5cXHRcXHRcXHRcXHQvLyBFMSA9IGtFZGdlMSwgRTIgPSBrRWRnZTIsIE4gPSBDcm9zcyhFMSxFMikpIGJ5XFxuXFx0XFx0XFx0XFx0Ly8gICB8RG90KEQsTil8KmIxID0gc2lnbihEb3QoRCxOKSkqRG90KEQsQ3Jvc3MoUSxFMikpXFxuXFx0XFx0XFx0XFx0Ly8gICB8RG90KEQsTil8KmIyID0gc2lnbihEb3QoRCxOKSkqRG90KEQsQ3Jvc3MoRTEsUSkpXFxuXFx0XFx0XFx0XFx0Ly8gICB8RG90KEQsTil8KnQgPSAtc2lnbihEb3QoRCxOKSkqRG90KFEsTilcXG5cXHRcXHRcXHRcXHR2YXIgRGROID0gdGhpcy5kaXJlY3Rpb24uZG90KCBub3JtYWwgKTtcXG5cXHRcXHRcXHRcXHR2YXIgc2lnbjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIERkTiA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBiYWNrZmFjZUN1bGxpbmcgKSByZXR1cm4gbnVsbDtcXG5cXHRcXHRcXHRcXHRcXHRzaWduID0gMTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBEZE4gPCAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHNpZ24gPSAtIDE7XFxuXFx0XFx0XFx0XFx0XFx0RGROID0gLSBEZE47XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0ZGlmZi5zdWJWZWN0b3JzKCB0aGlzLm9yaWdpbiwgYSApO1xcblxcdFxcdFxcdFxcdHZhciBEZFF4RTIgPSBzaWduICogdGhpcy5kaXJlY3Rpb24uZG90KCBlZGdlMi5jcm9zc1ZlY3RvcnMoIGRpZmYsIGVkZ2UyICkgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBiMSA8IDAsIG5vIGludGVyc2VjdGlvblxcblxcdFxcdFxcdFxcdGlmICggRGRReEUyIDwgMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIERkRTF4USA9IHNpZ24gKiB0aGlzLmRpcmVjdGlvbi5kb3QoIGVkZ2UxLmNyb3NzKCBkaWZmICkgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBiMiA8IDAsIG5vIGludGVyc2VjdGlvblxcblxcdFxcdFxcdFxcdGlmICggRGRFMXhRIDwgMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gYjErYjIgPiAxLCBubyBpbnRlcnNlY3Rpb25cXG5cXHRcXHRcXHRcXHRpZiAoIERkUXhFMiArIERkRTF4USA+IERkTiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gTGluZSBpbnRlcnNlY3RzIHRyaWFuZ2xlLCBjaGVjayBpZiByYXkgZG9lcy5cXG5cXHRcXHRcXHRcXHR2YXIgUWROID0gLSBzaWduICogZGlmZi5kb3QoIG5vcm1hbCApO1xcblxcblxcdFxcdFxcdFxcdC8vIHQgPCAwLCBubyBpbnRlcnNlY3Rpb25cXG5cXHRcXHRcXHRcXHRpZiAoIFFkTiA8IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIG51bGw7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdC8vIFJheSBpbnRlcnNlY3RzIHRyaWFuZ2xlLlxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmF0KCBRZE4gLyBEZE4sIG9wdGlvbmFsVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0YXBwbHlNYXRyaXg0OiBmdW5jdGlvbiAoIG1hdHJpeDQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KCBtYXRyaXg0ICk7XFxuXFx0XFx0XFx0dGhpcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKCBtYXRyaXg0ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRlcXVhbHM6IGZ1bmN0aW9uICggcmF5ICkge1xcblxcblxcdFxcdFxcdHJldHVybiByYXkub3JpZ2luLmVxdWFscyggdGhpcy5vcmlnaW4gKSAmJiByYXkuZGlyZWN0aW9uLmVxdWFscyggdGhpcy5kaXJlY3Rpb24gKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYmhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBMaW5lMyggc3RhcnQsIGVuZCApIHtcXG5cXG5cXHRcXHR0aGlzLnN0YXJ0ID0gKCBzdGFydCAhPT0gdW5kZWZpbmVkICkgPyBzdGFydCA6IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dGhpcy5lbmQgPSAoIGVuZCAhPT0gdW5kZWZpbmVkICkgPyBlbmQgOiBuZXcgVmVjdG9yMygpO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBMaW5lMy5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggc3RhcnQsIGVuZCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnN0YXJ0LmNvcHkoIHN0YXJ0ICk7XFxuXFx0XFx0XFx0dGhpcy5lbmQuY29weSggZW5kICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggbGluZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnN0YXJ0LmNvcHkoIGxpbmUuc3RhcnQgKTtcXG5cXHRcXHRcXHR0aGlzLmVuZC5jb3B5KCBsaW5lLmVuZCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0Q2VudGVyOiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHJldHVybiByZXN1bHQuYWRkVmVjdG9ycyggdGhpcy5zdGFydCwgdGhpcy5lbmQgKS5tdWx0aXBseVNjYWxhciggMC41ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkZWx0YTogZnVuY3Rpb24gKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHRyZXR1cm4gcmVzdWx0LnN1YlZlY3RvcnMoIHRoaXMuZW5kLCB0aGlzLnN0YXJ0ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXN0YW5jZVNxOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuc3RhcnQuZGlzdGFuY2VUb1NxdWFyZWQoIHRoaXMuZW5kICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRkaXN0YW5jZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG8oIHRoaXMuZW5kICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhdDogZnVuY3Rpb24gKCB0LCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kZWx0YSggcmVzdWx0ICkubXVsdGlwbHlTY2FsYXIoIHQgKS5hZGQoIHRoaXMuc3RhcnQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb3Nlc3RQb2ludFRvUG9pbnRQYXJhbWV0ZXI6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgc3RhcnRQID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgc3RhcnRFbmQgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBjbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKCBwb2ludCwgY2xhbXBUb0xpbmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c3RhcnRQLnN1YlZlY3RvcnMoIHBvaW50LCB0aGlzLnN0YXJ0ICk7XFxuXFx0XFx0XFx0XFx0c3RhcnRFbmQuc3ViVmVjdG9ycyggdGhpcy5lbmQsIHRoaXMuc3RhcnQgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgc3RhcnRFbmQyID0gc3RhcnRFbmQuZG90KCBzdGFydEVuZCApO1xcblxcdFxcdFxcdFxcdHZhciBzdGFydEVuZF9zdGFydFAgPSBzdGFydEVuZC5kb3QoIHN0YXJ0UCApO1xcblxcblxcdFxcdFxcdFxcdHZhciB0ID0gc3RhcnRFbmRfc3RhcnRQIC8gc3RhcnRFbmQyO1xcblxcblxcdFxcdFxcdFxcdGlmICggY2xhbXBUb0xpbmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dCA9IF9NYXRoLmNsYW1wKCB0LCAwLCAxICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiB0O1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGNsb3Nlc3RQb2ludFRvUG9pbnQ6IGZ1bmN0aW9uICggcG9pbnQsIGNsYW1wVG9MaW5lLCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdCA9IHRoaXMuY2xvc2VzdFBvaW50VG9Qb2ludFBhcmFtZXRlciggcG9pbnQsIGNsYW1wVG9MaW5lICk7XFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZGVsdGEoIHJlc3VsdCApLm11bHRpcGx5U2NhbGFyKCB0ICkuYWRkKCB0aGlzLnN0YXJ0ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRhcHBseU1hdHJpeDQ6IGZ1bmN0aW9uICggbWF0cml4ICkge1xcblxcblxcdFxcdFxcdHRoaXMuc3RhcnQuYXBwbHlNYXRyaXg0KCBtYXRyaXggKTtcXG5cXHRcXHRcXHR0aGlzLmVuZC5hcHBseU1hdHJpeDQoIG1hdHJpeCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXF1YWxzOiBmdW5jdGlvbiAoIGxpbmUgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGxpbmUuc3RhcnQuZXF1YWxzKCB0aGlzLnN0YXJ0ICkgJiYgbGluZS5lbmQuZXF1YWxzKCB0aGlzLmVuZCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBiaG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pb1xcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gVHJpYW5nbGUoIGEsIGIsIGMgKSB7XFxuXFxuXFx0XFx0dGhpcy5hID0gKCBhICE9PSB1bmRlZmluZWQgKSA/IGEgOiBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHRoaXMuYiA9ICggYiAhPT0gdW5kZWZpbmVkICkgPyBiIDogbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR0aGlzLmMgPSAoIGMgIT09IHVuZGVmaW5lZCApID8gYyA6IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIFRyaWFuZ2xlLCB7XFxuXFxuXFx0XFx0bm9ybWFsOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHYwID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gbm9ybWFsKCBhLCBiLCBjLCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXN1bHQuc3ViVmVjdG9ycyggYywgYiApO1xcblxcdFxcdFxcdFxcdHYwLnN1YlZlY3RvcnMoIGEsIGIgKTtcXG5cXHRcXHRcXHRcXHRyZXN1bHQuY3Jvc3MoIHYwICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHJlc3VsdExlbmd0aFNxID0gcmVzdWx0Lmxlbmd0aFNxKCk7XFxuXFx0XFx0XFx0XFx0aWYgKCByZXN1bHRMZW5ndGhTcSA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJlc3VsdC5tdWx0aXBseVNjYWxhciggMSAvIE1hdGguc3FydCggcmVzdWx0TGVuZ3RoU3EgKSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gcmVzdWx0LnNldCggMCwgMCwgMCApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdC8vIHN0YXRpYy9pbnN0YW5jZSBtZXRob2QgdG8gY2FsY3VsYXRlIGJhcnljZW50cmljIGNvb3JkaW5hdGVzXFxuXFx0XFx0Ly8gYmFzZWQgb246IGh0dHA6Ly93d3cuYmxhY2twYXduLmNvbS90ZXh0cy9wb2ludGlucG9seS9kZWZhdWx0Lmh0bWxcXG5cXHRcXHRiYXJ5Y29vcmRGcm9tUG9pbnQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjAgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0dmFyIHYyID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gYmFyeWNvb3JkRnJvbVBvaW50KCBwb2ludCwgYSwgYiwgYywgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0djAuc3ViVmVjdG9ycyggYywgYSApO1xcblxcdFxcdFxcdFxcdHYxLnN1YlZlY3RvcnMoIGIsIGEgKTtcXG5cXHRcXHRcXHRcXHR2Mi5zdWJWZWN0b3JzKCBwb2ludCwgYSApO1xcblxcblxcdFxcdFxcdFxcdHZhciBkb3QwMCA9IHYwLmRvdCggdjAgKTtcXG5cXHRcXHRcXHRcXHR2YXIgZG90MDEgPSB2MC5kb3QoIHYxICk7XFxuXFx0XFx0XFx0XFx0dmFyIGRvdDAyID0gdjAuZG90KCB2MiApO1xcblxcdFxcdFxcdFxcdHZhciBkb3QxMSA9IHYxLmRvdCggdjEgKTtcXG5cXHRcXHRcXHRcXHR2YXIgZG90MTIgPSB2MS5kb3QoIHYyICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGRlbm9tID0gKCBkb3QwMCAqIGRvdDExIC0gZG90MDEgKiBkb3QwMSApO1xcblxcblxcdFxcdFxcdFxcdHZhciByZXN1bHQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdFxcdC8vIGNvbGxpbmVhciBvciBzaW5ndWxhciB0cmlhbmdsZVxcblxcdFxcdFxcdFxcdGlmICggZGVub20gPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gYXJiaXRyYXJ5IGxvY2F0aW9uIG91dHNpZGUgb2YgdHJpYW5nbGU/XFxuXFx0XFx0XFx0XFx0XFx0Ly8gbm90IHN1cmUgaWYgdGhpcyBpcyB0aGUgYmVzdCBpZGVhLCBtYXliZSBzaG91bGQgYmUgcmV0dXJuaW5nIHVuZGVmaW5lZFxcblxcdFxcdFxcdFxcdFxcdHJldHVybiByZXN1bHQuc2V0KCAtIDIsIC0gMSwgLSAxICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHZhciBpbnZEZW5vbSA9IDEgLyBkZW5vbTtcXG5cXHRcXHRcXHRcXHR2YXIgdSA9ICggZG90MTEgKiBkb3QwMiAtIGRvdDAxICogZG90MTIgKSAqIGludkRlbm9tO1xcblxcdFxcdFxcdFxcdHZhciB2ID0gKCBkb3QwMCAqIGRvdDEyIC0gZG90MDEgKiBkb3QwMiApICogaW52RGVub207XFxuXFxuXFx0XFx0XFx0XFx0Ly8gYmFyeWNlbnRyaWMgY29vcmRpbmF0ZXMgbXVzdCBhbHdheXMgc3VtIHRvIDFcXG5cXHRcXHRcXHRcXHRyZXR1cm4gcmVzdWx0LnNldCggMSAtIHUgLSB2LCB2LCB1ICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFxuXFx0XFx0Y29udGFpbnNQb2ludDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGNvbnRhaW5zUG9pbnQoIHBvaW50LCBhLCBiLCBjICkge1xcblxcblxcdFxcdFxcdFxcdHZhciByZXN1bHQgPSBUcmlhbmdsZS5iYXJ5Y29vcmRGcm9tUG9pbnQoIHBvaW50LCBhLCBiLCBjLCB2MSApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiAoIHJlc3VsdC54ID49IDAgKSAmJiAoIHJlc3VsdC55ID49IDAgKSAmJiAoICggcmVzdWx0LnggKyByZXN1bHQueSApIDw9IDEgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBUcmlhbmdsZS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggYSwgYiwgYyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmEuY29weSggYSApO1xcblxcdFxcdFxcdHRoaXMuYi5jb3B5KCBiICk7XFxuXFx0XFx0XFx0dGhpcy5jLmNvcHkoIGMgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZyb21Qb2ludHNBbmRJbmRpY2VzOiBmdW5jdGlvbiAoIHBvaW50cywgaTAsIGkxLCBpMiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmEuY29weSggcG9pbnRzWyBpMCBdICk7XFxuXFx0XFx0XFx0dGhpcy5iLmNvcHkoIHBvaW50c1sgaTEgXSApO1xcblxcdFxcdFxcdHRoaXMuYy5jb3B5KCBwb2ludHNbIGkyIF0gKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSggdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCB0cmlhbmdsZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmEuY29weSggdHJpYW5nbGUuYSApO1xcblxcdFxcdFxcdHRoaXMuYi5jb3B5KCB0cmlhbmdsZS5iICk7XFxuXFx0XFx0XFx0dGhpcy5jLmNvcHkoIHRyaWFuZ2xlLmMgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFyZWE6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjAgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciB2MSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGFyZWEoKSB7XFxuXFxuXFx0XFx0XFx0XFx0djAuc3ViVmVjdG9ycyggdGhpcy5jLCB0aGlzLmIgKTtcXG5cXHRcXHRcXHRcXHR2MS5zdWJWZWN0b3JzKCB0aGlzLmEsIHRoaXMuYiApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB2MC5jcm9zcyggdjEgKS5sZW5ndGgoKSAqIDAuNTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRtaWRwb2ludDogZnVuY3Rpb24gKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHRyZXR1cm4gcmVzdWx0LmFkZFZlY3RvcnMoIHRoaXMuYSwgdGhpcy5iICkuYWRkKCB0aGlzLmMgKS5tdWx0aXBseVNjYWxhciggMSAvIDMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdG5vcm1hbDogZnVuY3Rpb24gKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gVHJpYW5nbGUubm9ybWFsKCB0aGlzLmEsIHRoaXMuYiwgdGhpcy5jLCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cGxhbmU6IGZ1bmN0aW9uICggb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBQbGFuZSgpO1xcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKCB0aGlzLmEsIHRoaXMuYiwgdGhpcy5jICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRiYXJ5Y29vcmRGcm9tUG9pbnQ6IGZ1bmN0aW9uICggcG9pbnQsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBUcmlhbmdsZS5iYXJ5Y29vcmRGcm9tUG9pbnQoIHBvaW50LCB0aGlzLmEsIHRoaXMuYiwgdGhpcy5jLCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29udGFpbnNQb2ludDogZnVuY3Rpb24gKCBwb2ludCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gVHJpYW5nbGUuY29udGFpbnNQb2ludCggcG9pbnQsIHRoaXMuYSwgdGhpcy5iLCB0aGlzLmMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb3Nlc3RQb2ludFRvUG9pbnQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgcGxhbmUgPSBuZXcgUGxhbmUoKTtcXG5cXHRcXHRcXHR2YXIgZWRnZUxpc3QgPSBbIG5ldyBMaW5lMygpLCBuZXcgTGluZTMoKSwgbmV3IExpbmUzKCkgXTtcXG5cXHRcXHRcXHR2YXIgcHJvamVjdGVkUG9pbnQgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBjbG9zZXN0UG9pbnQgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBjbG9zZXN0UG9pbnRUb1BvaW50KCBwb2ludCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHJlc3VsdCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0XFx0dmFyIG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gcHJvamVjdCB0aGUgcG9pbnQgb250byB0aGUgcGxhbmUgb2YgdGhlIHRyaWFuZ2xlXFxuXFxuXFx0XFx0XFx0XFx0cGxhbmUuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKCB0aGlzLmEsIHRoaXMuYiwgdGhpcy5jICk7XFxuXFx0XFx0XFx0XFx0cGxhbmUucHJvamVjdFBvaW50KCBwb2ludCwgcHJvamVjdGVkUG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBjaGVjayBpZiB0aGUgcHJvamVjdGlvbiBsaWVzIHdpdGhpbiB0aGUgdHJpYW5nbGVcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHRoaXMuY29udGFpbnNQb2ludCggcHJvamVjdGVkUG9pbnQgKSA9PT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBpZiBzbywgdGhpcyBpcyB0aGUgY2xvc2VzdCBwb2ludFxcblxcblxcdFxcdFxcdFxcdFxcdHJlc3VsdC5jb3B5KCBwcm9qZWN0ZWRQb2ludCApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gaWYgbm90LCB0aGUgcG9pbnQgZmFsbHMgb3V0c2lkZSB0aGUgdHJpYW5nbGUuIHRoZSByZXN1bHQgaXMgdGhlIGNsb3Nlc3QgcG9pbnQgdG8gdGhlIHRyaWFuZ2xlJ3MgZWRnZXMgb3IgdmVydGljZXNcXG5cXG5cXHRcXHRcXHRcXHRcXHRlZGdlTGlzdFsgMCBdLnNldCggdGhpcy5hLCB0aGlzLmIgKTtcXG5cXHRcXHRcXHRcXHRcXHRlZGdlTGlzdFsgMSBdLnNldCggdGhpcy5iLCB0aGlzLmMgKTtcXG5cXHRcXHRcXHRcXHRcXHRlZGdlTGlzdFsgMiBdLnNldCggdGhpcy5jLCB0aGlzLmEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBlZGdlTGlzdC5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZWRnZUxpc3RbIGkgXS5jbG9zZXN0UG9pbnRUb1BvaW50KCBwcm9qZWN0ZWRQb2ludCwgdHJ1ZSwgY2xvc2VzdFBvaW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRpc3RhbmNlID0gcHJvamVjdGVkUG9pbnQuZGlzdGFuY2VUb1NxdWFyZWQoIGNsb3Nlc3RQb2ludCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGlzdGFuY2UgPCBtaW5EaXN0YW5jZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHJlc3VsdC5jb3B5KCBjbG9zZXN0UG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gcmVzdWx0O1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdGVxdWFsczogZnVuY3Rpb24gKCB0cmlhbmdsZSApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdHJpYW5nbGUuYS5lcXVhbHMoIHRoaXMuYSApICYmIHRyaWFuZ2xlLmIuZXF1YWxzKCB0aGlzLmIgKSAmJiB0cmlhbmdsZS5jLmVxdWFscyggdGhpcy5jICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBtaWthZWwgZW10aW5nZXIgLyBodHRwOi8vZ29tby5zZS9cXG5cXHQgKiBAYXV0aG9yIGpvbm9icjEgLyBodHRwOi8vam9ub2JyMS5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTWVzaCggZ2VvbWV0cnksIG1hdGVyaWFsICkge1xcblxcblxcdFxcdE9iamVjdDNELmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaCc7XFxuXFxuXFx0XFx0dGhpcy5nZW9tZXRyeSA9IGdlb21ldHJ5ICE9PSB1bmRlZmluZWQgPyBnZW9tZXRyeSA6IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcdFxcdHRoaXMubWF0ZXJpYWwgPSBtYXRlcmlhbCAhPT0gdW5kZWZpbmVkID8gbWF0ZXJpYWwgOiBuZXcgTWVzaEJhc2ljTWF0ZXJpYWwoIHsgY29sb3I6IE1hdGgucmFuZG9tKCkgKiAweGZmZmZmZiB9ICk7XFxuXFxuXFx0XFx0dGhpcy5kcmF3TW9kZSA9IFRyaWFuZ2xlc0RyYXdNb2RlO1xcblxcblxcdFxcdHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCk7XFxuXFxuXFx0fVxcblxcblxcdE1lc2gucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggT2JqZWN0M0QucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogTWVzaCxcXG5cXG5cXHRcXHRpc01lc2g6IHRydWUsXFxuXFxuXFx0XFx0c2V0RHJhd01vZGU6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5kcmF3TW9kZSA9IHZhbHVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0XFx0T2JqZWN0M0QucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5kcmF3TW9kZSA9IHNvdXJjZS5kcmF3TW9kZTtcXG5cXG5cXHRcXHRcXHRpZiAoIHNvdXJjZS5tb3JwaFRhcmdldEluZmx1ZW5jZXMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyA9IHNvdXJjZS5tb3JwaFRhcmdldEluZmx1ZW5jZXMuc2xpY2UoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBzb3VyY2UubW9ycGhUYXJnZXREaWN0aW9uYXJ5ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnkgPSBPYmplY3QuYXNzaWduKCB7fSwgc291cmNlLm1vcnBoVGFyZ2V0RGljdGlvbmFyeSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHVwZGF0ZU1vcnBoVGFyZ2V0czogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnk7XFxuXFx0XFx0XFx0dmFyIG0sIG1sLCBuYW1lO1xcblxcblxcdFxcdFxcdGlmICggZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbW9ycGhBdHRyaWJ1dGVzID0gZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzO1xcblxcdFxcdFxcdFxcdHZhciBrZXlzID0gT2JqZWN0LmtleXMoIG1vcnBoQXR0cmlidXRlcyApO1xcblxcblxcdFxcdFxcdFxcdGlmICgga2V5cy5sZW5ndGggPiAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBtb3JwaEF0dHJpYnV0ZSA9IG1vcnBoQXR0cmlidXRlc1sga2V5c1sgMCBdIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBtb3JwaEF0dHJpYnV0ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzID0gW107XFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnkgPSB7fTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCBtID0gMCwgbWwgPSBtb3JwaEF0dHJpYnV0ZS5sZW5ndGg7IG0gPCBtbDsgbSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRuYW1lID0gbW9ycGhBdHRyaWJ1dGVbIG0gXS5uYW1lIHx8IFN0cmluZyggbSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goIDAgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVsgbmFtZSBdID0gbTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHZhciBtb3JwaFRhcmdldHMgPSBnZW9tZXRyeS5tb3JwaFRhcmdldHM7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtb3JwaFRhcmdldHMgIT09IHVuZGVmaW5lZCAmJiBtb3JwaFRhcmdldHMubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyA9IFtdO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5ID0ge307XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggbSA9IDAsIG1sID0gbW9ycGhUYXJnZXRzLmxlbmd0aDsgbSA8IG1sOyBtICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdG5hbWUgPSBtb3JwaFRhcmdldHNbIG0gXS5uYW1lIHx8IFN0cmluZyggbSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goIDAgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVsgbmFtZSBdID0gbTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJheWNhc3Q6ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBpbnZlcnNlTWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcXG5cXHRcXHRcXHR2YXIgcmF5ID0gbmV3IFJheSgpO1xcblxcdFxcdFxcdHZhciBzcGhlcmUgPSBuZXcgU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0dmFyIHZBID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgdkIgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciB2QyA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0dmFyIHRlbXBBID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgdGVtcEIgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciB0ZW1wQyA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0dmFyIHV2QSA9IG5ldyBWZWN0b3IyKCk7XFxuXFx0XFx0XFx0dmFyIHV2QiA9IG5ldyBWZWN0b3IyKCk7XFxuXFx0XFx0XFx0dmFyIHV2QyA9IG5ldyBWZWN0b3IyKCk7XFxuXFxuXFx0XFx0XFx0dmFyIGJhcnljb29yZCA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0dmFyIGludGVyc2VjdGlvblBvaW50ID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgaW50ZXJzZWN0aW9uUG9pbnRXb3JsZCA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gdXZJbnRlcnNlY3Rpb24oIHBvaW50LCBwMSwgcDIsIHAzLCB1djEsIHV2MiwgdXYzICkge1xcblxcblxcdFxcdFxcdFxcdFRyaWFuZ2xlLmJhcnljb29yZEZyb21Qb2ludCggcG9pbnQsIHAxLCBwMiwgcDMsIGJhcnljb29yZCApO1xcblxcblxcdFxcdFxcdFxcdHV2MS5tdWx0aXBseVNjYWxhciggYmFyeWNvb3JkLnggKTtcXG5cXHRcXHRcXHRcXHR1djIubXVsdGlwbHlTY2FsYXIoIGJhcnljb29yZC55ICk7XFxuXFx0XFx0XFx0XFx0dXYzLm11bHRpcGx5U2NhbGFyKCBiYXJ5Y29vcmQueiApO1xcblxcblxcdFxcdFxcdFxcdHV2MS5hZGQoIHV2MiApLmFkZCggdXYzICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHV2MS5jbG9uZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBjaGVja0ludGVyc2VjdGlvbiggb2JqZWN0LCBtYXRlcmlhbCwgcmF5Y2FzdGVyLCByYXksIHBBLCBwQiwgcEMsIHBvaW50ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBpbnRlcnNlY3Q7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5zaWRlID09PSBCYWNrU2lkZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3QgPSByYXkuaW50ZXJzZWN0VHJpYW5nbGUoIHBDLCBwQiwgcEEsIHRydWUsIHBvaW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3QgPSByYXkuaW50ZXJzZWN0VHJpYW5nbGUoIHBBLCBwQiwgcEMsIG1hdGVyaWFsLnNpZGUgIT09IERvdWJsZVNpZGUsIHBvaW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggaW50ZXJzZWN0ID09PSBudWxsICkgcmV0dXJuIG51bGw7XFxuXFxuXFx0XFx0XFx0XFx0aW50ZXJzZWN0aW9uUG9pbnRXb3JsZC5jb3B5KCBwb2ludCApO1xcblxcdFxcdFxcdFxcdGludGVyc2VjdGlvblBvaW50V29ybGQuYXBwbHlNYXRyaXg0KCBvYmplY3QubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZGlzdGFuY2UgPSByYXljYXN0ZXIucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKCBpbnRlcnNlY3Rpb25Qb2ludFdvcmxkICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBkaXN0YW5jZSA8IHJheWNhc3Rlci5uZWFyIHx8IGRpc3RhbmNlID4gcmF5Y2FzdGVyLmZhciApIHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB7XFxuXFx0XFx0XFx0XFx0XFx0ZGlzdGFuY2U6IGRpc3RhbmNlLFxcblxcdFxcdFxcdFxcdFxcdHBvaW50OiBpbnRlcnNlY3Rpb25Qb2ludFdvcmxkLmNsb25lKCksXFxuXFx0XFx0XFx0XFx0XFx0b2JqZWN0OiBvYmplY3RcXG5cXHRcXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBjaGVja0J1ZmZlckdlb21ldHJ5SW50ZXJzZWN0aW9uKCBvYmplY3QsIHJheWNhc3RlciwgcmF5LCBwb3NpdGlvbiwgdXYsIGEsIGIsIGMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dkEuZnJvbUJ1ZmZlckF0dHJpYnV0ZSggcG9zaXRpb24sIGEgKTtcXG5cXHRcXHRcXHRcXHR2Qi5mcm9tQnVmZmVyQXR0cmlidXRlKCBwb3NpdGlvbiwgYiApO1xcblxcdFxcdFxcdFxcdHZDLmZyb21CdWZmZXJBdHRyaWJ1dGUoIHBvc2l0aW9uLCBjICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGludGVyc2VjdGlvbiA9IGNoZWNrSW50ZXJzZWN0aW9uKCBvYmplY3QsIG9iamVjdC5tYXRlcmlhbCwgcmF5Y2FzdGVyLCByYXksIHZBLCB2QiwgdkMsIGludGVyc2VjdGlvblBvaW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpbnRlcnNlY3Rpb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB1diApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1dkEuZnJvbUJ1ZmZlckF0dHJpYnV0ZSggdXYsIGEgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR1dkIuZnJvbUJ1ZmZlckF0dHJpYnV0ZSggdXYsIGIgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR1dkMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSggdXYsIGMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3Rpb24udXYgPSB1dkludGVyc2VjdGlvbiggaW50ZXJzZWN0aW9uUG9pbnQsIHZBLCB2QiwgdkMsIHV2QSwgdXZCLCB1dkMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0aW9uLmZhY2UgPSBuZXcgRmFjZTMoIGEsIGIsIGMsIFRyaWFuZ2xlLm5vcm1hbCggdkEsIHZCLCB2QyApICk7XFxuXFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0aW9uLmZhY2VJbmRleCA9IGE7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiBpbnRlcnNlY3Rpb247XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiByYXljYXN0KCByYXljYXN0ZXIsIGludGVyc2VjdHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGdlb21ldHJ5ID0gdGhpcy5nZW9tZXRyeTtcXG5cXHRcXHRcXHRcXHR2YXIgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsO1xcblxcdFxcdFxcdFxcdHZhciBtYXRyaXhXb3JsZCA9IHRoaXMubWF0cml4V29ybGQ7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbCA9PT0gdW5kZWZpbmVkICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdC8vIENoZWNraW5nIGJvdW5kaW5nU3BoZXJlIGRpc3RhbmNlIHRvIHJheVxcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUgPT09IG51bGwgKSBnZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHRcXHRzcGhlcmUuY29weSggZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUgKTtcXG5cXHRcXHRcXHRcXHRzcGhlcmUuYXBwbHlNYXRyaXg0KCBtYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdFxcdGlmICggcmF5Y2FzdGVyLnJheS5pbnRlcnNlY3RzU3BoZXJlKCBzcGhlcmUgKSA9PT0gZmFsc2UgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0Ly9cXG5cXG5cXHRcXHRcXHRcXHRpbnZlcnNlTWF0cml4LmdldEludmVyc2UoIG1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0cmF5LmNvcHkoIHJheWNhc3Rlci5yYXkgKS5hcHBseU1hdHJpeDQoIGludmVyc2VNYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBDaGVjayBib3VuZGluZ0JveCBiZWZvcmUgY29udGludWluZ1xcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkuYm91bmRpbmdCb3ggIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCByYXkuaW50ZXJzZWN0c0JveCggZ2VvbWV0cnkuYm91bmRpbmdCb3ggKSA9PT0gZmFsc2UgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHZhciBpbnRlcnNlY3Rpb247XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5pc0J1ZmZlckdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBhLCBiLCBjO1xcblxcdFxcdFxcdFxcdFxcdHZhciBpbmRleCA9IGdlb21ldHJ5LmluZGV4O1xcblxcdFxcdFxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IGdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb247XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHV2ID0gZ2VvbWV0cnkuYXR0cmlidXRlcy51djtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgaSwgbDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGluZGV4ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIGluZGV4ZWQgYnVmZmVyIGdlb21ldHJ5XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggaSA9IDAsIGwgPSBpbmRleC5jb3VudDsgaSA8IGw7IGkgKz0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRhID0gaW5kZXguZ2V0WCggaSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGIgPSBpbmRleC5nZXRYKCBpICsgMSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGMgPSBpbmRleC5nZXRYKCBpICsgMiApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGludGVyc2VjdGlvbiA9IGNoZWNrQnVmZmVyR2VvbWV0cnlJbnRlcnNlY3Rpb24oIHRoaXMsIHJheWNhc3RlciwgcmF5LCBwb3NpdGlvbiwgdXYsIGEsIGIsIGMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGludGVyc2VjdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3Rpb24uZmFjZUluZGV4ID0gTWF0aC5mbG9vciggaSAvIDMgKTsgLy8gdHJpYW5nbGUgbnVtYmVyIGluIGluZGljZXMgYnVmZmVyIHNlbWFudGljc1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGludGVyc2VjdHMucHVzaCggaW50ZXJzZWN0aW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBwb3NpdGlvbiAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIG5vbi1pbmRleGVkIGJ1ZmZlciBnZW9tZXRyeVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gcG9zaXRpb24uY291bnQ7IGkgPCBsOyBpICs9IDMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YSA9IGk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YiA9IGkgKyAxO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGMgPSBpICsgMjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3Rpb24gPSBjaGVja0J1ZmZlckdlb21ldHJ5SW50ZXJzZWN0aW9uKCB0aGlzLCByYXljYXN0ZXIsIHJheSwgcG9zaXRpb24sIHV2LCBhLCBiLCBjICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBpbnRlcnNlY3Rpb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0aW9uLmluZGV4ID0gYTsgLy8gdHJpYW5nbGUgbnVtYmVyIGluIHBvc2l0aW9ucyBidWZmZXIgc2VtYW50aWNzXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0cy5wdXNoKCBpbnRlcnNlY3Rpb24gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBnZW9tZXRyeS5pc0dlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBmdkEsIGZ2QiwgZnZDO1xcblxcdFxcdFxcdFxcdFxcdHZhciBpc011bHRpTWF0ZXJpYWwgPSBBcnJheS5pc0FycmF5KCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IGdlb21ldHJ5LnZlcnRpY2VzO1xcblxcdFxcdFxcdFxcdFxcdHZhciBmYWNlcyA9IGdlb21ldHJ5LmZhY2VzO1xcblxcdFxcdFxcdFxcdFxcdHZhciB1dnM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGZhY2VWZXJ0ZXhVdnMgPSBnZW9tZXRyeS5mYWNlVmVydGV4VXZzWyAwIF07XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBmYWNlVmVydGV4VXZzLmxlbmd0aCA+IDAgKSB1dnMgPSBmYWNlVmVydGV4VXZzO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBmID0gMCwgZmwgPSBmYWNlcy5sZW5ndGg7IGYgPCBmbDsgZiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgZmFjZSA9IGZhY2VzWyBmIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGZhY2VNYXRlcmlhbCA9IGlzTXVsdGlNYXRlcmlhbCA/IG1hdGVyaWFsWyBmYWNlLm1hdGVyaWFsSW5kZXggXSA6IG1hdGVyaWFsO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggZmFjZU1hdGVyaWFsID09PSB1bmRlZmluZWQgKSBjb250aW51ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmdkEgPSB2ZXJ0aWNlc1sgZmFjZS5hIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZnZCID0gdmVydGljZXNbIGZhY2UuYiBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdGZ2QyA9IHZlcnRpY2VzWyBmYWNlLmMgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGZhY2VNYXRlcmlhbC5tb3JwaFRhcmdldHMgPT09IHRydWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIG1vcnBoVGFyZ2V0cyA9IGdlb21ldHJ5Lm1vcnBoVGFyZ2V0cztcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgbW9ycGhJbmZsdWVuY2VzID0gdGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dkEuc2V0KCAwLCAwLCAwICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dkIuc2V0KCAwLCAwLCAwICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dkMuc2V0KCAwLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIHQgPSAwLCB0bCA9IG1vcnBoVGFyZ2V0cy5sZW5ndGg7IHQgPCB0bDsgdCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgaW5mbHVlbmNlID0gbW9ycGhJbmZsdWVuY2VzWyB0IF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBpbmZsdWVuY2UgPT09IDAgKSBjb250aW51ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgdGFyZ2V0cyA9IG1vcnBoVGFyZ2V0c1sgdCBdLnZlcnRpY2VzO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHZBLmFkZFNjYWxlZFZlY3RvciggdGVtcEEuc3ViVmVjdG9ycyggdGFyZ2V0c1sgZmFjZS5hIF0sIGZ2QSApLCBpbmZsdWVuY2UgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2Qi5hZGRTY2FsZWRWZWN0b3IoIHRlbXBCLnN1YlZlY3RvcnMoIHRhcmdldHNbIGZhY2UuYiBdLCBmdkIgKSwgaW5mbHVlbmNlICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dkMuYWRkU2NhbGVkVmVjdG9yKCB0ZW1wQy5zdWJWZWN0b3JzKCB0YXJnZXRzWyBmYWNlLmMgXSwgZnZDICksIGluZmx1ZW5jZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2QS5hZGQoIGZ2QSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZCLmFkZCggZnZCICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dkMuYWRkKCBmdkMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmdkEgPSB2QTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmdkIgPSB2QjtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmdkMgPSB2QztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0aW9uID0gY2hlY2tJbnRlcnNlY3Rpb24oIHRoaXMsIGZhY2VNYXRlcmlhbCwgcmF5Y2FzdGVyLCByYXksIGZ2QSwgZnZCLCBmdkMsIGludGVyc2VjdGlvblBvaW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBpbnRlcnNlY3Rpb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB1dnMgJiYgdXZzWyBmIF0gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIHV2c19mID0gdXZzWyBmIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dXZBLmNvcHkoIHV2c19mWyAwIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR1dkIuY29weSggdXZzX2ZbIDEgXSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHV2Qy5jb3B5KCB1dnNfZlsgMiBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0aW9uLnV2ID0gdXZJbnRlcnNlY3Rpb24oIGludGVyc2VjdGlvblBvaW50LCBmdkEsIGZ2QiwgZnZDLCB1dkEsIHV2QiwgdXZDICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGludGVyc2VjdGlvbi5mYWNlID0gZmFjZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3Rpb24uZmFjZUluZGV4ID0gZjtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3RzLnB1c2goIGludGVyc2VjdGlvbiApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpICksXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoIHRoaXMuZ2VvbWV0cnksIHRoaXMubWF0ZXJpYWwgKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMQmFja2dyb3VuZCggcmVuZGVyZXIsIHN0YXRlLCBnZW9tZXRyaWVzLCBwcmVtdWx0aXBsaWVkQWxwaGEgKSB7XFxuXFxuXFx0XFx0dmFyIGNsZWFyQ29sb3IgPSBuZXcgQ29sb3IoIDB4MDAwMDAwICk7XFxuXFx0XFx0dmFyIGNsZWFyQWxwaGEgPSAwO1xcblxcblxcdFxcdHZhciBwbGFuZUNhbWVyYSwgcGxhbmVNZXNoO1xcblxcdFxcdHZhciBib3hNZXNoO1xcblxcblxcdFxcdGZ1bmN0aW9uIHJlbmRlciggcmVuZGVyTGlzdCwgc2NlbmUsIGNhbWVyYSwgZm9yY2VDbGVhciApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYmFja2dyb3VuZCA9IHNjZW5lLmJhY2tncm91bmQ7XFxuXFxuXFx0XFx0XFx0aWYgKCBiYWNrZ3JvdW5kID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHNldENsZWFyKCBjbGVhckNvbG9yLCBjbGVhckFscGhhICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYmFja2dyb3VuZCAmJiBiYWNrZ3JvdW5kLmlzQ29sb3IgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2V0Q2xlYXIoIGJhY2tncm91bmQsIDEgKTtcXG5cXHRcXHRcXHRcXHRmb3JjZUNsZWFyID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCByZW5kZXJlci5hdXRvQ2xlYXIgfHwgZm9yY2VDbGVhciApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZW5kZXJlci5jbGVhciggcmVuZGVyZXIuYXV0b0NsZWFyQ29sb3IsIHJlbmRlcmVyLmF1dG9DbGVhckRlcHRoLCByZW5kZXJlci5hdXRvQ2xlYXJTdGVuY2lsICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggYmFja2dyb3VuZCAmJiBiYWNrZ3JvdW5kLmlzQ3ViZVRleHR1cmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBib3hNZXNoID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ym94TWVzaCA9IG5ldyBNZXNoKFxcblxcdFxcdFxcdFxcdFxcdFxcdG5ldyBCb3hCdWZmZXJHZW9tZXRyeSggMSwgMSwgMSApLFxcblxcdFxcdFxcdFxcdFxcdFxcdG5ldyBTaGFkZXJNYXRlcmlhbCgge1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zOiBTaGFkZXJMaWIuY3ViZS51bmlmb3JtcyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhTaGFkZXI6IFNoYWRlckxpYi5jdWJlLnZlcnRleFNoYWRlcixcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmcmFnbWVudFNoYWRlcjogU2hhZGVyTGliLmN1YmUuZnJhZ21lbnRTaGFkZXIsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2lkZTogQmFja1NpZGUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGVwdGhUZXN0OiB0cnVlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGRlcHRoV3JpdGU6IGZhbHNlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvZzogZmFsc2VcXG5cXHRcXHRcXHRcXHRcXHRcXHR9IClcXG5cXHRcXHRcXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdFxcdFxcdGJveE1lc2guZ2VvbWV0cnkucmVtb3ZlQXR0cmlidXRlKCAnbm9ybWFsJyApO1xcblxcdFxcdFxcdFxcdFxcdGJveE1lc2guZ2VvbWV0cnkucmVtb3ZlQXR0cmlidXRlKCAndXYnICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ym94TWVzaC5vbkJlZm9yZVJlbmRlciA9IGZ1bmN0aW9uICggcmVuZGVyZXIsIHNjZW5lLCBjYW1lcmEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5tYXRyaXhXb3JsZC5jb3B5UG9zaXRpb24oIGNhbWVyYS5tYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2VvbWV0cmllcy51cGRhdGUoIGJveE1lc2guZ2VvbWV0cnkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ym94TWVzaC5tYXRlcmlhbC51bmlmb3Jtcy50Q3ViZS52YWx1ZSA9IGJhY2tncm91bmQ7XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyTGlzdC5wdXNoKCBib3hNZXNoLCBib3hNZXNoLmdlb21ldHJ5LCBib3hNZXNoLm1hdGVyaWFsLCAwLCBudWxsICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggYmFja2dyb3VuZCAmJiBiYWNrZ3JvdW5kLmlzVGV4dHVyZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHBsYW5lQ2FtZXJhID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cGxhbmVDYW1lcmEgPSBuZXcgT3J0aG9ncmFwaGljQ2FtZXJhKCAtIDEsIDEsIDEsIC0gMSwgMCwgMSApO1xcblxcblxcdFxcdFxcdFxcdFxcdHBsYW5lTWVzaCA9IG5ldyBNZXNoKFxcblxcdFxcdFxcdFxcdFxcdFxcdG5ldyBQbGFuZUJ1ZmZlckdlb21ldHJ5KCAyLCAyICksXFxuXFx0XFx0XFx0XFx0XFx0XFx0bmV3IE1lc2hCYXNpY01hdGVyaWFsKCB7IGRlcHRoVGVzdDogZmFsc2UsIGRlcHRoV3JpdGU6IGZhbHNlLCBmb2c6IGZhbHNlIH0gKVxcblxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2VvbWV0cmllcy51cGRhdGUoIHBsYW5lTWVzaC5nZW9tZXRyeSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRwbGFuZU1lc2gubWF0ZXJpYWwubWFwID0gYmFja2dyb3VuZDtcXG5cXG5cXHRcXHRcXHRcXHQvLyBUT0RPIFB1c2ggdGhpcyB0byByZW5kZXJMaXN0XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyZXIucmVuZGVyQnVmZmVyRGlyZWN0KCBwbGFuZUNhbWVyYSwgbnVsbCwgcGxhbmVNZXNoLmdlb21ldHJ5LCBwbGFuZU1lc2gubWF0ZXJpYWwsIHBsYW5lTWVzaCwgbnVsbCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0Q2xlYXIoIGNvbG9yLCBhbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRzdGF0ZS5idWZmZXJzLmNvbG9yLnNldENsZWFyKCBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBhbHBoYSwgcHJlbXVsdGlwbGllZEFscGhhICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFxuXFx0XFx0XFx0Z2V0Q2xlYXJDb2xvcjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBjbGVhckNvbG9yO1xcblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2V0Q2xlYXJDb2xvcjogZnVuY3Rpb24gKCBjb2xvciwgYWxwaGEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y2xlYXJDb2xvci5zZXQoIGNvbG9yICk7XFxuXFx0XFx0XFx0XFx0Y2xlYXJBbHBoYSA9IGFscGhhICE9PSB1bmRlZmluZWQgPyBhbHBoYSA6IDE7XFxuXFx0XFx0XFx0XFx0c2V0Q2xlYXIoIGNsZWFyQ29sb3IsIGNsZWFyQWxwaGEgKTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdGdldENsZWFyQWxwaGE6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gY2xlYXJBbHBoYTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldENsZWFyQWxwaGE6IGZ1bmN0aW9uICggYWxwaGEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y2xlYXJBbHBoYSA9IGFscGhhO1xcblxcdFxcdFxcdFxcdHNldENsZWFyKCBjbGVhckNvbG9yLCBjbGVhckFscGhhICk7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRyZW5kZXI6IHJlbmRlclxcblxcblxcdFxcdH07XFxuXFxuXFx0fVxcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gcGFpbnRlclNvcnRTdGFibGUoIGEsIGIgKSB7XFxuXFxuXFx0XFx0aWYgKCBhLnJlbmRlck9yZGVyICE9PSBiLnJlbmRlck9yZGVyICkge1xcblxcblxcdFxcdFxcdHJldHVybiBhLnJlbmRlck9yZGVyIC0gYi5yZW5kZXJPcmRlcjtcXG5cXG5cXHRcXHR9IGVsc2UgaWYgKCBhLnByb2dyYW0gJiYgYi5wcm9ncmFtICYmIGEucHJvZ3JhbSAhPT0gYi5wcm9ncmFtICkge1xcblxcblxcdFxcdFxcdHJldHVybiBhLnByb2dyYW0uaWQgLSBiLnByb2dyYW0uaWQ7XFxuXFxuXFx0XFx0fSBlbHNlIGlmICggYS5tYXRlcmlhbC5pZCAhPT0gYi5tYXRlcmlhbC5pZCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYS5tYXRlcmlhbC5pZCAtIGIubWF0ZXJpYWwuaWQ7XFxuXFxuXFx0XFx0fSBlbHNlIGlmICggYS56ICE9PSBiLnogKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGEueiAtIGIuejtcXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdHJldHVybiBhLmlkIC0gYi5pZDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIHJldmVyc2VQYWludGVyU29ydFN0YWJsZSggYSwgYiApIHtcXG5cXG5cXHRcXHRpZiAoIGEucmVuZGVyT3JkZXIgIT09IGIucmVuZGVyT3JkZXIgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGEucmVuZGVyT3JkZXIgLSBiLnJlbmRlck9yZGVyO1xcblxcblxcdFxcdH0gaWYgKCBhLnogIT09IGIueiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYi56IC0gYS56O1xcblxcblxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGEuaWQgLSBiLmlkO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xSZW5kZXJMaXN0KCkge1xcblxcblxcdFxcdHZhciByZW5kZXJJdGVtcyA9IFtdO1xcblxcdFxcdHZhciByZW5kZXJJdGVtc0luZGV4ID0gMDtcXG5cXG5cXHRcXHR2YXIgb3BhcXVlID0gW107XFxuXFx0XFx0dmFyIHRyYW5zcGFyZW50ID0gW107XFxuXFxuXFx0XFx0ZnVuY3Rpb24gaW5pdCgpIHtcXG5cXG5cXHRcXHRcXHRyZW5kZXJJdGVtc0luZGV4ID0gMDtcXG5cXG5cXHRcXHRcXHRvcGFxdWUubGVuZ3RoID0gMDtcXG5cXHRcXHRcXHR0cmFuc3BhcmVudC5sZW5ndGggPSAwO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBwdXNoKCBvYmplY3QsIGdlb21ldHJ5LCBtYXRlcmlhbCwgeiwgZ3JvdXAgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlbmRlckl0ZW0gPSByZW5kZXJJdGVtc1sgcmVuZGVySXRlbXNJbmRleCBdO1xcblxcblxcdFxcdFxcdGlmICggcmVuZGVySXRlbSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHJlbmRlckl0ZW0gPSB7XFxuXFx0XFx0XFx0XFx0XFx0aWQ6IG9iamVjdC5pZCxcXG5cXHRcXHRcXHRcXHRcXHRvYmplY3Q6IG9iamVjdCxcXG5cXHRcXHRcXHRcXHRcXHRnZW9tZXRyeTogZ2VvbWV0cnksXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWw6IG1hdGVyaWFsLFxcblxcdFxcdFxcdFxcdFxcdHByb2dyYW06IG1hdGVyaWFsLnByb2dyYW0sXFxuXFx0XFx0XFx0XFx0XFx0cmVuZGVyT3JkZXI6IG9iamVjdC5yZW5kZXJPcmRlcixcXG5cXHRcXHRcXHRcXHRcXHR6OiB6LFxcblxcdFxcdFxcdFxcdFxcdGdyb3VwOiBncm91cFxcblxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVySXRlbXNbIHJlbmRlckl0ZW1zSW5kZXggXSA9IHJlbmRlckl0ZW07XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRyZW5kZXJJdGVtLmlkID0gb2JqZWN0LmlkO1xcblxcdFxcdFxcdFxcdHJlbmRlckl0ZW0ub2JqZWN0ID0gb2JqZWN0O1xcblxcdFxcdFxcdFxcdHJlbmRlckl0ZW0uZ2VvbWV0cnkgPSBnZW9tZXRyeTtcXG5cXHRcXHRcXHRcXHRyZW5kZXJJdGVtLm1hdGVyaWFsID0gbWF0ZXJpYWw7XFxuXFx0XFx0XFx0XFx0cmVuZGVySXRlbS5wcm9ncmFtID0gbWF0ZXJpYWwucHJvZ3JhbTtcXG5cXHRcXHRcXHRcXHRyZW5kZXJJdGVtLnJlbmRlck9yZGVyID0gb2JqZWN0LnJlbmRlck9yZGVyO1xcblxcdFxcdFxcdFxcdHJlbmRlckl0ZW0ueiA9IHo7XFxuXFx0XFx0XFx0XFx0cmVuZGVySXRlbS5ncm91cCA9IGdyb3VwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQoIG1hdGVyaWFsLnRyYW5zcGFyZW50ID09PSB0cnVlID8gdHJhbnNwYXJlbnQgOiBvcGFxdWUgKS5wdXNoKCByZW5kZXJJdGVtICk7XFxuXFxuXFx0XFx0XFx0cmVuZGVySXRlbXNJbmRleCArKztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc29ydCgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9wYXF1ZS5sZW5ndGggPiAxICkgb3BhcXVlLnNvcnQoIHBhaW50ZXJTb3J0U3RhYmxlICk7XFxuXFx0XFx0XFx0aWYgKCB0cmFuc3BhcmVudC5sZW5ndGggPiAxICkgdHJhbnNwYXJlbnQuc29ydCggcmV2ZXJzZVBhaW50ZXJTb3J0U3RhYmxlICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFx0XFx0XFx0b3BhcXVlOiBvcGFxdWUsXFxuXFx0XFx0XFx0dHJhbnNwYXJlbnQ6IHRyYW5zcGFyZW50LFxcblxcblxcdFxcdFxcdGluaXQ6IGluaXQsXFxuXFx0XFx0XFx0cHVzaDogcHVzaCxcXG5cXG5cXHRcXHRcXHRzb3J0OiBzb3J0XFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xSZW5kZXJMaXN0cygpIHtcXG5cXG5cXHRcXHR2YXIgbGlzdHMgPSB7fTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXQoIHNjZW5lLCBjYW1lcmEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGhhc2ggPSBzY2VuZS5pZCArICcsJyArIGNhbWVyYS5pZDtcXG5cXHRcXHRcXHR2YXIgbGlzdCA9IGxpc3RzWyBoYXNoIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBsaXN0ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gY29uc29sZS5sb2coICdUSFJFRS5XZWJHTFJlbmRlckxpc3RzOicsIGhhc2ggKTtcXG5cXG5cXHRcXHRcXHRcXHRsaXN0ID0gbmV3IFdlYkdMUmVuZGVyTGlzdCgpO1xcblxcdFxcdFxcdFxcdGxpc3RzWyBoYXNoIF0gPSBsaXN0O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gbGlzdDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZGlzcG9zZSgpIHtcXG5cXG5cXHRcXHRcXHRsaXN0cyA9IHt9O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4ge1xcblxcdFxcdFxcdGdldDogZ2V0LFxcblxcdFxcdFxcdGRpc3Bvc2U6IGRpc3Bvc2VcXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIGFic051bWVyaWNhbFNvcnQoIGEsIGIgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIE1hdGguYWJzKCBiWyAxIF0gKSAtIE1hdGguYWJzKCBhWyAxIF0gKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xNb3JwaHRhcmdldHMoIGdsICkge1xcblxcblxcdFxcdHZhciBpbmZsdWVuY2VzTGlzdCA9IHt9O1xcblxcdFxcdHZhciBtb3JwaEluZmx1ZW5jZXMgPSBuZXcgRmxvYXQzMkFycmF5KCA4ICk7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gdXBkYXRlKCBvYmplY3QsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcHJvZ3JhbSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgb2JqZWN0SW5mbHVlbmNlcyA9IG9iamVjdC5tb3JwaFRhcmdldEluZmx1ZW5jZXM7XFxuXFxuXFx0XFx0XFx0dmFyIGxlbmd0aCA9IG9iamVjdEluZmx1ZW5jZXMubGVuZ3RoO1xcblxcblxcdFxcdFxcdHZhciBpbmZsdWVuY2VzID0gaW5mbHVlbmNlc0xpc3RbIGdlb21ldHJ5LmlkIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBpbmZsdWVuY2VzID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gaW5pdGlhbGlzZSBsaXN0XFxuXFxuXFx0XFx0XFx0XFx0aW5mbHVlbmNlcyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbmZsdWVuY2VzWyBpIF0gPSBbIGksIDAgXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aW5mbHVlbmNlc0xpc3RbIGdlb21ldHJ5LmlkIF0gPSBpbmZsdWVuY2VzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgbW9ycGhUYXJnZXRzID0gbWF0ZXJpYWwubW9ycGhUYXJnZXRzICYmIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXHRcXHRcXHR2YXIgbW9ycGhOb3JtYWxzID0gbWF0ZXJpYWwubW9ycGhOb3JtYWxzICYmIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWw7XFxuXFxuXFx0XFx0XFx0Ly8gUmVtb3ZlIGN1cnJlbnQgbW9ycGhBdHRyaWJ1dGVzXFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBpbmZsdWVuY2UgPSBpbmZsdWVuY2VzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpbmZsdWVuY2VbIDEgXSAhPT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG1vcnBoVGFyZ2V0cyApIGdlb21ldHJ5LnJlbW92ZUF0dHJpYnV0ZSggJ21vcnBoVGFyZ2V0JyArIGkgKTtcXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG1vcnBoTm9ybWFscyApIGdlb21ldHJ5LnJlbW92ZUF0dHJpYnV0ZSggJ21vcnBoTm9ybWFsJyArIGkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIENvbGxlY3QgaW5mbHVlbmNlc1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaW5mbHVlbmNlID0gaW5mbHVlbmNlc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdGluZmx1ZW5jZVsgMCBdID0gaTtcXG5cXHRcXHRcXHRcXHRpbmZsdWVuY2VbIDEgXSA9IG9iamVjdEluZmx1ZW5jZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aW5mbHVlbmNlcy5zb3J0KCBhYnNOdW1lcmljYWxTb3J0ICk7XFxuXFxuXFx0XFx0XFx0Ly8gQWRkIG1vcnBoQXR0cmlidXRlc1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IDg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGluZmx1ZW5jZSA9IGluZmx1ZW5jZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGluZmx1ZW5jZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgaW5kZXggPSBpbmZsdWVuY2VbIDAgXTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgdmFsdWUgPSBpbmZsdWVuY2VbIDEgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggbW9ycGhUYXJnZXRzICkgZ2VvbWV0cnkuYWRkQXR0cmlidXRlKCAnbW9ycGhUYXJnZXQnICsgaSwgbW9ycGhUYXJnZXRzWyBpbmRleCBdICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBtb3JwaE5vcm1hbHMgKSBnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdtb3JwaE5vcm1hbCcgKyBpLCBtb3JwaE5vcm1hbHNbIGluZGV4IF0gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRtb3JwaEluZmx1ZW5jZXNbIGkgXSA9IHZhbHVlO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0bW9ycGhJbmZsdWVuY2VzWyBpIF0gPSAwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRwcm9ncmFtLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUoIGdsLCAnbW9ycGhUYXJnZXRJbmZsdWVuY2VzJywgbW9ycGhJbmZsdWVuY2VzICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFxuXFx0XFx0XFx0dXBkYXRlOiB1cGRhdGVcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMSW5kZXhlZEJ1ZmZlclJlbmRlcmVyKCBnbCwgZXh0ZW5zaW9ucywgaW5mb1JlbmRlciApIHtcXG5cXG5cXHRcXHR2YXIgbW9kZTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBzZXRNb2RlKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRtb2RlID0gdmFsdWU7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHZhciB0eXBlLCBieXRlc1BlckVsZW1lbnQ7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0SW5kZXgoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHR5cGUgPSB2YWx1ZS50eXBlO1xcblxcdFxcdFxcdGJ5dGVzUGVyRWxlbWVudCA9IHZhbHVlLmJ5dGVzUGVyRWxlbWVudDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVuZGVyKCBzdGFydCwgY291bnQgKSB7XFxuXFxuXFx0XFx0XFx0Z2wuZHJhd0VsZW1lbnRzKCBtb2RlLCBjb3VudCwgdHlwZSwgc3RhcnQgKiBieXRlc1BlckVsZW1lbnQgKTtcXG5cXG5cXHRcXHRcXHRpbmZvUmVuZGVyLmNhbGxzICsrO1xcblxcdFxcdFxcdGluZm9SZW5kZXIudmVydGljZXMgKz0gY291bnQ7XFxuXFxuXFx0XFx0XFx0aWYgKCBtb2RlID09PSBnbC5UUklBTkdMRVMgKSBpbmZvUmVuZGVyLmZhY2VzICs9IGNvdW50IC8gMztcXG5cXHRcXHRcXHRlbHNlIGlmICggbW9kZSA9PT0gZ2wuUE9JTlRTICkgaW5mb1JlbmRlci5wb2ludHMgKz0gY291bnQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHJlbmRlckluc3RhbmNlcyggZ2VvbWV0cnksIHN0YXJ0LCBjb3VudCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZXh0ZW5zaW9uID0gZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApO1xcblxcblxcdFxcdFxcdGlmICggZXh0ZW5zaW9uID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5XZWJHTEluZGV4ZWRCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0ZXh0ZW5zaW9uLmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKCBtb2RlLCBjb3VudCwgdHlwZSwgc3RhcnQgKiBieXRlc1BlckVsZW1lbnQsIGdlb21ldHJ5Lm1heEluc3RhbmNlZENvdW50ICk7XFxuXFxuXFx0XFx0XFx0aW5mb1JlbmRlci5jYWxscyArKztcXG5cXHRcXHRcXHRpbmZvUmVuZGVyLnZlcnRpY2VzICs9IGNvdW50ICogZ2VvbWV0cnkubWF4SW5zdGFuY2VkQ291bnQ7XFxuXFxuXFx0XFx0XFx0aWYgKCBtb2RlID09PSBnbC5UUklBTkdMRVMgKSBpbmZvUmVuZGVyLmZhY2VzICs9IGdlb21ldHJ5Lm1heEluc3RhbmNlZENvdW50ICogY291bnQgLyAzO1xcblxcdFxcdFxcdGVsc2UgaWYgKCBtb2RlID09PSBnbC5QT0lOVFMgKSBpbmZvUmVuZGVyLnBvaW50cyArPSBnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCAqIGNvdW50O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHRoaXMuc2V0TW9kZSA9IHNldE1vZGU7XFxuXFx0XFx0dGhpcy5zZXRJbmRleCA9IHNldEluZGV4O1xcblxcdFxcdHRoaXMucmVuZGVyID0gcmVuZGVyO1xcblxcdFxcdHRoaXMucmVuZGVySW5zdGFuY2VzID0gcmVuZGVySW5zdGFuY2VzO1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMQnVmZmVyUmVuZGVyZXIoIGdsLCBleHRlbnNpb25zLCBpbmZvUmVuZGVyICkge1xcblxcblxcdFxcdHZhciBtb2RlO1xcblxcblxcdFxcdGZ1bmN0aW9uIHNldE1vZGUoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdG1vZGUgPSB2YWx1ZTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVuZGVyKCBzdGFydCwgY291bnQgKSB7XFxuXFxuXFx0XFx0XFx0Z2wuZHJhd0FycmF5cyggbW9kZSwgc3RhcnQsIGNvdW50ICk7XFxuXFxuXFx0XFx0XFx0aW5mb1JlbmRlci5jYWxscyArKztcXG5cXHRcXHRcXHRpbmZvUmVuZGVyLnZlcnRpY2VzICs9IGNvdW50O1xcblxcblxcdFxcdFxcdGlmICggbW9kZSA9PT0gZ2wuVFJJQU5HTEVTICkgaW5mb1JlbmRlci5mYWNlcyArPSBjb3VudCAvIDM7XFxuXFx0XFx0XFx0ZWxzZSBpZiAoIG1vZGUgPT09IGdsLlBPSU5UUyApIGluZm9SZW5kZXIucG9pbnRzICs9IGNvdW50O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiByZW5kZXJJbnN0YW5jZXMoIGdlb21ldHJ5LCBzdGFydCwgY291bnQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGV4dGVuc2lvbiA9IGV4dGVuc2lvbnMuZ2V0KCAnQU5HTEVfaW5zdGFuY2VkX2FycmF5cycgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGV4dGVuc2lvbiA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuV2ViR0xCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHBvc2l0aW9uID0gZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRpZiAoIHBvc2l0aW9uLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y291bnQgPSBwb3NpdGlvbi5kYXRhLmNvdW50O1xcblxcblxcdFxcdFxcdFxcdGV4dGVuc2lvbi5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoIG1vZGUsIDAsIGNvdW50LCBnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0ZXh0ZW5zaW9uLmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSggbW9kZSwgc3RhcnQsIGNvdW50LCBnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpbmZvUmVuZGVyLmNhbGxzICsrO1xcblxcdFxcdFxcdGluZm9SZW5kZXIudmVydGljZXMgKz0gY291bnQgKiBnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudDtcXG5cXG5cXHRcXHRcXHRpZiAoIG1vZGUgPT09IGdsLlRSSUFOR0xFUyApIGluZm9SZW5kZXIuZmFjZXMgKz0gZ2VvbWV0cnkubWF4SW5zdGFuY2VkQ291bnQgKiBjb3VudCAvIDM7XFxuXFx0XFx0XFx0ZWxzZSBpZiAoIG1vZGUgPT09IGdsLlBPSU5UUyApIGluZm9SZW5kZXIucG9pbnRzICs9IGdlb21ldHJ5Lm1heEluc3RhbmNlZENvdW50ICogY291bnQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vXFxuXFxuXFx0XFx0dGhpcy5zZXRNb2RlID0gc2V0TW9kZTtcXG5cXHRcXHR0aGlzLnJlbmRlciA9IHJlbmRlcjtcXG5cXHRcXHR0aGlzLnJlbmRlckluc3RhbmNlcyA9IHJlbmRlckluc3RhbmNlcztcXG5cXG5cXHR9XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBXZWJHTEdlb21ldHJpZXMoIGdsLCBhdHRyaWJ1dGVzLCBpbmZvTWVtb3J5ICkge1xcblxcblxcdFxcdHZhciBnZW9tZXRyaWVzID0ge307XFxuXFx0XFx0dmFyIHdpcmVmcmFtZUF0dHJpYnV0ZXMgPSB7fTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBvbkdlb21ldHJ5RGlzcG9zZSggZXZlbnQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGdlb21ldHJ5ID0gZXZlbnQudGFyZ2V0O1xcblxcdFxcdFxcdHZhciBidWZmZXJnZW9tZXRyeSA9IGdlb21ldHJpZXNbIGdlb21ldHJ5LmlkIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBidWZmZXJnZW9tZXRyeS5pbmRleCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRhdHRyaWJ1dGVzLnJlbW92ZSggYnVmZmVyZ2VvbWV0cnkuaW5kZXggKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIG5hbWUgaW4gYnVmZmVyZ2VvbWV0cnkuYXR0cmlidXRlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRhdHRyaWJ1dGVzLnJlbW92ZSggYnVmZmVyZ2VvbWV0cnkuYXR0cmlidXRlc1sgbmFtZSBdICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGdlb21ldHJ5LnJlbW92ZUV2ZW50TGlzdGVuZXIoICdkaXNwb3NlJywgb25HZW9tZXRyeURpc3Bvc2UgKTtcXG5cXG5cXHRcXHRcXHRkZWxldGUgZ2VvbWV0cmllc1sgZ2VvbWV0cnkuaWQgXTtcXG5cXG5cXHRcXHRcXHQvLyBUT0RPIFJlbW92ZSBkdXBsaWNhdGUgY29kZVxcblxcblxcdFxcdFxcdHZhciBhdHRyaWJ1dGUgPSB3aXJlZnJhbWVBdHRyaWJ1dGVzWyBnZW9tZXRyeS5pZCBdO1xcblxcblxcdFxcdFxcdGlmICggYXR0cmlidXRlICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZXMucmVtb3ZlKCBhdHRyaWJ1dGUgKTtcXG5cXHRcXHRcXHRcXHRkZWxldGUgd2lyZWZyYW1lQXR0cmlidXRlc1sgZ2VvbWV0cnkuaWQgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0YXR0cmlidXRlID0gd2lyZWZyYW1lQXR0cmlidXRlc1sgYnVmZmVyZ2VvbWV0cnkuaWQgXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRhdHRyaWJ1dGVzLnJlbW92ZSggYXR0cmlidXRlICk7XFxuXFx0XFx0XFx0XFx0ZGVsZXRlIHdpcmVmcmFtZUF0dHJpYnV0ZXNbIGJ1ZmZlcmdlb21ldHJ5LmlkIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0aW5mb01lbW9yeS5nZW9tZXRyaWVzIC0tO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXQoIG9iamVjdCwgZ2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGJ1ZmZlcmdlb21ldHJ5ID0gZ2VvbWV0cmllc1sgZ2VvbWV0cnkuaWQgXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGJ1ZmZlcmdlb21ldHJ5ICkgcmV0dXJuIGJ1ZmZlcmdlb21ldHJ5O1xcblxcblxcdFxcdFxcdGdlb21ldHJ5LmFkZEV2ZW50TGlzdGVuZXIoICdkaXNwb3NlJywgb25HZW9tZXRyeURpc3Bvc2UgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YnVmZmVyZ2VvbWV0cnkgPSBnZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBnZW9tZXRyeS5pc0dlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkuX2J1ZmZlckdlb21ldHJ5ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkuX2J1ZmZlckdlb21ldHJ5ID0gbmV3IEJ1ZmZlckdlb21ldHJ5KCkuc2V0RnJvbU9iamVjdCggb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGJ1ZmZlcmdlb21ldHJ5ID0gZ2VvbWV0cnkuX2J1ZmZlckdlb21ldHJ5O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRnZW9tZXRyaWVzWyBnZW9tZXRyeS5pZCBdID0gYnVmZmVyZ2VvbWV0cnk7XFxuXFxuXFx0XFx0XFx0aW5mb01lbW9yeS5nZW9tZXRyaWVzICsrO1xcblxcblxcdFxcdFxcdHJldHVybiBidWZmZXJnZW9tZXRyeTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gdXBkYXRlKCBnZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW5kZXggPSBnZW9tZXRyeS5pbmRleDtcXG5cXHRcXHRcXHR2YXIgZ2VvbWV0cnlBdHRyaWJ1dGVzID0gZ2VvbWV0cnkuYXR0cmlidXRlcztcXG5cXG5cXHRcXHRcXHRpZiAoIGluZGV4ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZXMudXBkYXRlKCBpbmRleCwgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIG5hbWUgaW4gZ2VvbWV0cnlBdHRyaWJ1dGVzICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZXMudXBkYXRlKCBnZW9tZXRyeUF0dHJpYnV0ZXNbIG5hbWUgXSwgZ2wuQVJSQVlfQlVGRkVSICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIG1vcnBoIHRhcmdldHNcXG5cXG5cXHRcXHRcXHR2YXIgbW9ycGhBdHRyaWJ1dGVzID0gZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBuYW1lIGluIG1vcnBoQXR0cmlidXRlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXJyYXkgPSBtb3JwaEF0dHJpYnV0ZXNbIG5hbWUgXTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGF0dHJpYnV0ZXMudXBkYXRlKCBhcnJheVsgaSBdLCBnbC5BUlJBWV9CVUZGRVIgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXRXaXJlZnJhbWVBdHRyaWJ1dGUoIGdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdHZhciBhdHRyaWJ1dGUgPSB3aXJlZnJhbWVBdHRyaWJ1dGVzWyBnZW9tZXRyeS5pZCBdO1xcblxcblxcdFxcdFxcdGlmICggYXR0cmlidXRlICkgcmV0dXJuIGF0dHJpYnV0ZTtcXG5cXG5cXHRcXHRcXHR2YXIgaW5kaWNlcyA9IFtdO1xcblxcblxcdFxcdFxcdHZhciBnZW9tZXRyeUluZGV4ID0gZ2VvbWV0cnkuaW5kZXg7XFxuXFx0XFx0XFx0dmFyIGdlb21ldHJ5QXR0cmlidXRlcyA9IGdlb21ldHJ5LmF0dHJpYnV0ZXM7XFxuXFxuXFx0XFx0XFx0Ly8gY29uc29sZS50aW1lKCAnd2lyZWZyYW1lJyApO1xcblxcblxcdFxcdFxcdGlmICggZ2VvbWV0cnlJbmRleCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXJyYXkgPSBnZW9tZXRyeUluZGV4LmFycmF5O1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkgKz0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgYSA9IGFycmF5WyBpICsgMCBdO1xcblxcdFxcdFxcdFxcdFxcdHZhciBiID0gYXJyYXlbIGkgKyAxIF07XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGMgPSBhcnJheVsgaSArIDIgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGEsIGIsIGIsIGMsIGMsIGEgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYXJyYXkgPSBnZW9tZXRyeUF0dHJpYnV0ZXMucG9zaXRpb24uYXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gKCBhcnJheS5sZW5ndGggLyAzICkgLSAxOyBpIDwgbDsgaSArPSAzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBhID0gaSArIDA7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGIgPSBpICsgMTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgYyA9IGkgKyAyO1xcblxcblxcdFxcdFxcdFxcdFxcdGluZGljZXMucHVzaCggYSwgYiwgYiwgYywgYywgYSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gY29uc29sZS50aW1lRW5kKCAnd2lyZWZyYW1lJyApO1xcblxcblxcdFxcdFxcdGF0dHJpYnV0ZSA9IG5ldyAoIGFycmF5TWF4KCBpbmRpY2VzICkgPiA2NTUzNSA/IFVpbnQzMkJ1ZmZlckF0dHJpYnV0ZSA6IFVpbnQxNkJ1ZmZlckF0dHJpYnV0ZSApKCBpbmRpY2VzLCAxICk7XFxuXFxuXFx0XFx0XFx0YXR0cmlidXRlcy51cGRhdGUoIGF0dHJpYnV0ZSwgZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIgKTtcXG5cXG5cXHRcXHRcXHR3aXJlZnJhbWVBdHRyaWJ1dGVzWyBnZW9tZXRyeS5pZCBdID0gYXR0cmlidXRlO1xcblxcblxcdFxcdFxcdHJldHVybiBhdHRyaWJ1dGU7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBnZXQsXFxuXFx0XFx0XFx0dXBkYXRlOiB1cGRhdGUsXFxuXFxuXFx0XFx0XFx0Z2V0V2lyZWZyYW1lQXR0cmlidXRlOiBnZXRXaXJlZnJhbWVBdHRyaWJ1dGVcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFVuaWZvcm1zQ2FjaGUoKSB7XFxuXFxuXFx0XFx0dmFyIGxpZ2h0cyA9IHt9O1xcblxcblxcdFxcdHJldHVybiB7XFxuXFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoIGxpZ2h0ICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggbGlnaHRzWyBsaWdodC5pZCBdICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGxpZ2h0c1sgbGlnaHQuaWQgXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHVuaWZvcm1zO1xcblxcblxcdFxcdFxcdFxcdHN3aXRjaCAoIGxpZ2h0LnR5cGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnRGlyZWN0aW9uYWxMaWdodCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMgPSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGlyZWN0aW9uOiBuZXcgVmVjdG9yMygpLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbG9yOiBuZXcgQ29sb3IoKSxcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3c6IGZhbHNlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNoYWRvd0JpYXM6IDAsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2hhZG93UmFkaXVzOiAxLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNoYWRvd01hcFNpemU6IG5ldyBWZWN0b3IyKClcXG5cXHRcXHRcXHRcXHRcXHRcXHR9O1xcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ1Nwb3RMaWdodCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMgPSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cG9zaXRpb246IG5ldyBWZWN0b3IzKCksXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGlyZWN0aW9uOiBuZXcgVmVjdG9yMygpLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbG9yOiBuZXcgQ29sb3IoKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRkaXN0YW5jZTogMCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb25lQ29zOiAwLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHBlbnVtYnJhQ29zOiAwLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGRlY2F5OiAwLFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNoYWRvdzogZmFsc2UsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2hhZG93QmlhczogMCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3dSYWRpdXM6IDEsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2hhZG93TWFwU2l6ZTogbmV3IFZlY3RvcjIoKVxcblxcdFxcdFxcdFxcdFxcdFxcdH07XFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnUG9pbnRMaWdodCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMgPSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cG9zaXRpb246IG5ldyBWZWN0b3IzKCksXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29sb3I6IG5ldyBDb2xvcigpLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGRpc3RhbmNlOiAwLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGRlY2F5OiAwLFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNoYWRvdzogZmFsc2UsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2hhZG93QmlhczogMCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3dSYWRpdXM6IDEsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2hhZG93TWFwU2l6ZTogbmV3IFZlY3RvcjIoKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3dDYW1lcmFOZWFyOiAxLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNoYWRvd0NhbWVyYUZhcjogMTAwMFxcblxcdFxcdFxcdFxcdFxcdFxcdH07XFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnSGVtaXNwaGVyZUxpZ2h0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHR1bmlmb3JtcyA9IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRkaXJlY3Rpb246IG5ldyBWZWN0b3IzKCksXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2t5Q29sb3I6IG5ldyBDb2xvcigpLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdyb3VuZENvbG9yOiBuZXcgQ29sb3IoKVxcblxcdFxcdFxcdFxcdFxcdFxcdH07XFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnUmVjdEFyZWFMaWdodCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMgPSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29sb3I6IG5ldyBDb2xvcigpLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHBvc2l0aW9uOiBuZXcgVmVjdG9yMygpLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGhhbGZXaWR0aDogbmV3IFZlY3RvcjMoKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRoYWxmSGVpZ2h0OiBuZXcgVmVjdG9yMygpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gVE9ETyAoYWJlbG5hdGlvbik6IHNldCBSZWN0QXJlYUxpZ2h0IHNoYWRvdyB1bmlmb3Jtc1xcblxcdFxcdFxcdFxcdFxcdFxcdH07XFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGxpZ2h0c1sgbGlnaHQuaWQgXSA9IHVuaWZvcm1zO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB1bmlmb3JtcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xMaWdodHMoKSB7XFxuXFxuXFx0XFx0dmFyIGNhY2hlID0gbmV3IFVuaWZvcm1zQ2FjaGUoKTtcXG5cXG5cXHRcXHR2YXIgc3RhdGUgPSB7XFxuXFxuXFx0XFx0XFx0aGFzaDogJycsXFxuXFxuXFx0XFx0XFx0YW1iaWVudDogWyAwLCAwLCAwIF0sXFxuXFx0XFx0XFx0ZGlyZWN0aW9uYWw6IFtdLFxcblxcdFxcdFxcdGRpcmVjdGlvbmFsU2hhZG93TWFwOiBbXSxcXG5cXHRcXHRcXHRkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDogW10sXFxuXFx0XFx0XFx0c3BvdDogW10sXFxuXFx0XFx0XFx0c3BvdFNoYWRvd01hcDogW10sXFxuXFx0XFx0XFx0c3BvdFNoYWRvd01hdHJpeDogW10sXFxuXFx0XFx0XFx0cmVjdEFyZWE6IFtdLFxcblxcdFxcdFxcdHBvaW50OiBbXSxcXG5cXHRcXHRcXHRwb2ludFNoYWRvd01hcDogW10sXFxuXFx0XFx0XFx0cG9pbnRTaGFkb3dNYXRyaXg6IFtdLFxcblxcdFxcdFxcdGhlbWk6IFtdXFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR2YXIgdmVjdG9yMyA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIG1hdHJpeDQgPSBuZXcgTWF0cml4NCgpO1xcblxcdFxcdHZhciBtYXRyaXg0MiA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0dXAoIGxpZ2h0cywgc2hhZG93cywgY2FtZXJhICkge1xcblxcblxcdFxcdFxcdHZhciByID0gMCwgZyA9IDAsIGIgPSAwO1xcblxcblxcdFxcdFxcdHZhciBkaXJlY3Rpb25hbExlbmd0aCA9IDA7XFxuXFx0XFx0XFx0dmFyIHBvaW50TGVuZ3RoID0gMDtcXG5cXHRcXHRcXHR2YXIgc3BvdExlbmd0aCA9IDA7XFxuXFx0XFx0XFx0dmFyIHJlY3RBcmVhTGVuZ3RoID0gMDtcXG5cXHRcXHRcXHR2YXIgaGVtaUxlbmd0aCA9IDA7XFxuXFxuXFx0XFx0XFx0dmFyIHZpZXdNYXRyaXggPSBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGxpZ2h0cy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBsaWdodCA9IGxpZ2h0c1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdHZhciBjb2xvciA9IGxpZ2h0LmNvbG9yO1xcblxcdFxcdFxcdFxcdHZhciBpbnRlbnNpdHkgPSBsaWdodC5pbnRlbnNpdHk7XFxuXFx0XFx0XFx0XFx0dmFyIGRpc3RhbmNlID0gbGlnaHQuZGlzdGFuY2U7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNoYWRvd01hcCA9ICggbGlnaHQuc2hhZG93ICYmIGxpZ2h0LnNoYWRvdy5tYXAgKSA/IGxpZ2h0LnNoYWRvdy5tYXAudGV4dHVyZSA6IG51bGw7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBsaWdodC5pc0FtYmllbnRMaWdodCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyICs9IGNvbG9yLnIgKiBpbnRlbnNpdHk7XFxuXFx0XFx0XFx0XFx0XFx0ZyArPSBjb2xvci5nICogaW50ZW5zaXR5O1xcblxcdFxcdFxcdFxcdFxcdGIgKz0gY29sb3IuYiAqIGludGVuc2l0eTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBsaWdodC5pc0RpcmVjdGlvbmFsTGlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHVuaWZvcm1zID0gY2FjaGUuZ2V0KCBsaWdodCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmNvbG9yLmNvcHkoIGxpZ2h0LmNvbG9yICkubXVsdGlwbHlTY2FsYXIoIGxpZ2h0LmludGVuc2l0eSApO1xcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGxpZ2h0Lm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0XFx0dmVjdG9yMy5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGxpZ2h0LnRhcmdldC5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmRpcmVjdGlvbi5zdWIoIHZlY3RvcjMgKTtcXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKCB2aWV3TWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuc2hhZG93ID0gbGlnaHQuY2FzdFNoYWRvdztcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGxpZ2h0LmNhc3RTaGFkb3cgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHNoYWRvdyA9IGxpZ2h0LnNoYWRvdztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5zaGFkb3dCaWFzID0gc2hhZG93LmJpYXM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuc2hhZG93UmFkaXVzID0gc2hhZG93LnJhZGl1cztcXG5cXHRcXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5zaGFkb3dNYXBTaXplID0gc2hhZG93Lm1hcFNpemU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdHN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWFwWyBkaXJlY3Rpb25hbExlbmd0aCBdID0gc2hhZG93TWFwO1xcblxcdFxcdFxcdFxcdFxcdHN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBkaXJlY3Rpb25hbExlbmd0aCBdID0gbGlnaHQuc2hhZG93Lm1hdHJpeDtcXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5kaXJlY3Rpb25hbFsgZGlyZWN0aW9uYWxMZW5ndGggXSA9IHVuaWZvcm1zO1xcblxcblxcdFxcdFxcdFxcdFxcdGRpcmVjdGlvbmFsTGVuZ3RoICsrO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIGxpZ2h0LmlzU3BvdExpZ2h0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB1bmlmb3JtcyA9IGNhY2hlLmdldCggbGlnaHQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGxpZ2h0Lm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMucG9zaXRpb24uYXBwbHlNYXRyaXg0KCB2aWV3TWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuY29sb3IuY29weSggY29sb3IgKS5tdWx0aXBseVNjYWxhciggaW50ZW5zaXR5ICk7XFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlzdGFuY2UgPSBkaXN0YW5jZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBsaWdodC5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdFxcdHZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBsaWdodC50YXJnZXQubWF0cml4V29ybGQgKTtcXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXJlY3Rpb24uc3ViKCB2ZWN0b3IzICk7XFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbiggdmlld01hdHJpeCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmNvbmVDb3MgPSBNYXRoLmNvcyggbGlnaHQuYW5nbGUgKTtcXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5wZW51bWJyYUNvcyA9IE1hdGguY29zKCBsaWdodC5hbmdsZSAqICggMSAtIGxpZ2h0LnBlbnVtYnJhICkgKTtcXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5kZWNheSA9ICggbGlnaHQuZGlzdGFuY2UgPT09IDAgKSA/IDAuMCA6IGxpZ2h0LmRlY2F5O1xcblxcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLnNoYWRvdyA9IGxpZ2h0LmNhc3RTaGFkb3c7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBsaWdodC5jYXN0U2hhZG93ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBzaGFkb3cgPSBsaWdodC5zaGFkb3c7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuc2hhZG93QmlhcyA9IHNoYWRvdy5iaWFzO1xcblxcdFxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLnNoYWRvd1JhZGl1cyA9IHNoYWRvdy5yYWRpdXM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuc2hhZG93TWFwU2l6ZSA9IHNoYWRvdy5tYXBTaXplO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5zcG90U2hhZG93TWFwWyBzcG90TGVuZ3RoIF0gPSBzaGFkb3dNYXA7XFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUuc3BvdFNoYWRvd01hdHJpeFsgc3BvdExlbmd0aCBdID0gbGlnaHQuc2hhZG93Lm1hdHJpeDtcXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5zcG90WyBzcG90TGVuZ3RoIF0gPSB1bmlmb3JtcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRzcG90TGVuZ3RoICsrO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIGxpZ2h0LmlzUmVjdEFyZWFMaWdodCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdW5pZm9ybXMgPSBjYWNoZS5nZXQoIGxpZ2h0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gKGEpIGludGVuc2l0eSBjb250cm9scyBpcnJhZGlhbmNlIG9mIGVudGlyZSBsaWdodFxcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmNvbG9yXFxuXFx0XFx0XFx0XFx0XFx0XFx0LmNvcHkoIGNvbG9yIClcXG5cXHRcXHRcXHRcXHRcXHRcXHQubXVsdGlwbHlTY2FsYXIoIGludGVuc2l0eSAvICggbGlnaHQud2lkdGggKiBsaWdodC5oZWlnaHQgKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIChiKSBpbnRlbnNpdHkgY29udHJvbHMgdGhlIHJhZGlhbmNlIHBlciBsaWdodCBhcmVhXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdW5pZm9ybXMuY29sb3IuY29weSggY29sb3IgKS5tdWx0aXBseVNjYWxhciggaW50ZW5zaXR5ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBsaWdodC5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLnBvc2l0aW9uLmFwcGx5TWF0cml4NCggdmlld01hdHJpeCApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGV4dHJhY3QgbG9jYWwgcm90YXRpb24gb2YgbGlnaHQgdG8gZGVyaXZlIHdpZHRoL2hlaWdodCBoYWxmIHZlY3RvcnNcXG5cXHRcXHRcXHRcXHRcXHRtYXRyaXg0Mi5pZGVudGl0eSgpO1xcblxcdFxcdFxcdFxcdFxcdG1hdHJpeDQuY29weSggbGlnaHQubWF0cml4V29ybGQgKTtcXG5cXHRcXHRcXHRcXHRcXHRtYXRyaXg0LnByZW11bHRpcGx5KCB2aWV3TWF0cml4ICk7XFxuXFx0XFx0XFx0XFx0XFx0bWF0cml4NDIuZXh0cmFjdFJvdGF0aW9uKCBtYXRyaXg0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuaGFsZldpZHRoLnNldCggbGlnaHQud2lkdGggKiAwLjUsIDAuMCwgMC4wICk7XFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuaGFsZkhlaWdodC5zZXQoIDAuMCwgbGlnaHQuaGVpZ2h0ICogMC41LCAwLjAgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5oYWxmV2lkdGguYXBwbHlNYXRyaXg0KCBtYXRyaXg0MiApO1xcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmhhbGZIZWlnaHQuYXBwbHlNYXRyaXg0KCBtYXRyaXg0MiApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIFRPRE8gKGFiZWxuYXRpb24pOiBSZWN0QXJlYUxpZ2h0IGRpc3RhbmNlP1xcblxcdFxcdFxcdFxcdFxcdC8vIHVuaWZvcm1zLmRpc3RhbmNlID0gZGlzdGFuY2U7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUucmVjdEFyZWFbIHJlY3RBcmVhTGVuZ3RoIF0gPSB1bmlmb3JtcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZWN0QXJlYUxlbmd0aCArKztcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBsaWdodC5pc1BvaW50TGlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHVuaWZvcm1zID0gY2FjaGUuZ2V0KCBsaWdodCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbGlnaHQubWF0cml4V29ybGQgKTtcXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5wb3NpdGlvbi5hcHBseU1hdHJpeDQoIHZpZXdNYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5jb2xvci5jb3B5KCBsaWdodC5jb2xvciApLm11bHRpcGx5U2NhbGFyKCBsaWdodC5pbnRlbnNpdHkgKTtcXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXN0YW5jZSA9IGxpZ2h0LmRpc3RhbmNlO1xcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmRlY2F5ID0gKCBsaWdodC5kaXN0YW5jZSA9PT0gMCApID8gMC4wIDogbGlnaHQuZGVjYXk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuc2hhZG93ID0gbGlnaHQuY2FzdFNoYWRvdztcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGxpZ2h0LmNhc3RTaGFkb3cgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHNoYWRvdyA9IGxpZ2h0LnNoYWRvdztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5zaGFkb3dCaWFzID0gc2hhZG93LmJpYXM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuc2hhZG93UmFkaXVzID0gc2hhZG93LnJhZGl1cztcXG5cXHRcXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5zaGFkb3dNYXBTaXplID0gc2hhZG93Lm1hcFNpemU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuc2hhZG93Q2FtZXJhTmVhciA9IHNoYWRvdy5jYW1lcmEubmVhcjtcXG5cXHRcXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5zaGFkb3dDYW1lcmFGYXIgPSBzaGFkb3cuY2FtZXJhLmZhcjtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUucG9pbnRTaGFkb3dNYXBbIHBvaW50TGVuZ3RoIF0gPSBzaGFkb3dNYXA7XFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUucG9pbnRTaGFkb3dNYXRyaXhbIHBvaW50TGVuZ3RoIF0gPSBsaWdodC5zaGFkb3cubWF0cml4O1xcblxcdFxcdFxcdFxcdFxcdHN0YXRlLnBvaW50WyBwb2ludExlbmd0aCBdID0gdW5pZm9ybXM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cG9pbnRMZW5ndGggKys7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIGlmICggbGlnaHQuaXNIZW1pc3BoZXJlTGlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHVuaWZvcm1zID0gY2FjaGUuZ2V0KCBsaWdodCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGxpZ2h0Lm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbiggdmlld01hdHJpeCApO1xcblxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zLmRpcmVjdGlvbi5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5za3lDb2xvci5jb3B5KCBsaWdodC5jb2xvciApLm11bHRpcGx5U2NhbGFyKCBpbnRlbnNpdHkgKTtcXG5cXHRcXHRcXHRcXHRcXHR1bmlmb3Jtcy5ncm91bmRDb2xvci5jb3B5KCBsaWdodC5ncm91bmRDb2xvciApLm11bHRpcGx5U2NhbGFyKCBpbnRlbnNpdHkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5oZW1pWyBoZW1pTGVuZ3RoIF0gPSB1bmlmb3JtcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRoZW1pTGVuZ3RoICsrO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0c3RhdGUuYW1iaWVudFsgMCBdID0gcjtcXG5cXHRcXHRcXHRzdGF0ZS5hbWJpZW50WyAxIF0gPSBnO1xcblxcdFxcdFxcdHN0YXRlLmFtYmllbnRbIDIgXSA9IGI7XFxuXFxuXFx0XFx0XFx0c3RhdGUuZGlyZWN0aW9uYWwubGVuZ3RoID0gZGlyZWN0aW9uYWxMZW5ndGg7XFxuXFx0XFx0XFx0c3RhdGUuc3BvdC5sZW5ndGggPSBzcG90TGVuZ3RoO1xcblxcdFxcdFxcdHN0YXRlLnJlY3RBcmVhLmxlbmd0aCA9IHJlY3RBcmVhTGVuZ3RoO1xcblxcdFxcdFxcdHN0YXRlLnBvaW50Lmxlbmd0aCA9IHBvaW50TGVuZ3RoO1xcblxcdFxcdFxcdHN0YXRlLmhlbWkubGVuZ3RoID0gaGVtaUxlbmd0aDtcXG5cXG5cXHRcXHRcXHQvLyBUT0RPIChzYW0tZy1zdGVlbCkgd2h5IGFyZW4ndCB3ZSB1c2luZyBqb2luXFxuXFx0XFx0XFx0c3RhdGUuaGFzaCA9IGRpcmVjdGlvbmFsTGVuZ3RoICsgJywnICsgcG9pbnRMZW5ndGggKyAnLCcgKyBzcG90TGVuZ3RoICsgJywnICsgcmVjdEFyZWFMZW5ndGggKyAnLCcgKyBoZW1pTGVuZ3RoICsgJywnICsgc2hhZG93cy5sZW5ndGg7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFx0XFx0XFx0c2V0dXA6IHNldHVwLFxcblxcdFxcdFxcdHN0YXRlOiBzdGF0ZVxcblxcdFxcdH07XFxuXFxuXFx0fVxcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xPYmplY3RzKCBnZW9tZXRyaWVzLCBpbmZvUmVuZGVyICkge1xcblxcblxcdFxcdHZhciB1cGRhdGVMaXN0ID0ge307XFxuXFxuXFx0XFx0ZnVuY3Rpb24gdXBkYXRlKCBvYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGZyYW1lID0gaW5mb1JlbmRlci5mcmFtZTtcXG5cXG5cXHRcXHRcXHR2YXIgZ2VvbWV0cnkgPSBvYmplY3QuZ2VvbWV0cnk7XFxuXFx0XFx0XFx0dmFyIGJ1ZmZlcmdlb21ldHJ5ID0gZ2VvbWV0cmllcy5nZXQoIG9iamVjdCwgZ2VvbWV0cnkgKTtcXG5cXG5cXHRcXHRcXHQvLyBVcGRhdGUgb25jZSBwZXIgZnJhbWVcXG5cXG5cXHRcXHRcXHRpZiAoIHVwZGF0ZUxpc3RbIGJ1ZmZlcmdlb21ldHJ5LmlkIF0gIT09IGZyYW1lICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkuaXNHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRidWZmZXJnZW9tZXRyeS51cGRhdGVGcm9tT2JqZWN0KCBvYmplY3QgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cmllcy51cGRhdGUoIGJ1ZmZlcmdlb21ldHJ5ICk7XFxuXFxuXFx0XFx0XFx0XFx0dXBkYXRlTGlzdFsgYnVmZmVyZ2VvbWV0cnkuaWQgXSA9IGZyYW1lO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gYnVmZmVyZ2VvbWV0cnk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGNsZWFyKCkge1xcblxcblxcdFxcdFxcdHVwZGF0ZUxpc3QgPSB7fTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIHtcXG5cXG5cXHRcXHRcXHR1cGRhdGU6IHVwZGF0ZSxcXG5cXHRcXHRcXHRjbGVhcjogY2xlYXJcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIGFkZExpbmVOdW1iZXJzKCBzdHJpbmcgKSB7XFxuXFxuXFx0XFx0dmFyIGxpbmVzID0gc3RyaW5nLnNwbGl0KCAnXFxcXG4nICk7XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdGxpbmVzWyBpIF0gPSAoIGkgKyAxICkgKyAnOiAnICsgbGluZXNbIGkgXTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIGxpbmVzLmpvaW4oICdcXFxcbicgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xTaGFkZXIoIGdsLCB0eXBlLCBzdHJpbmcgKSB7XFxuXFxuXFx0XFx0dmFyIHNoYWRlciA9IGdsLmNyZWF0ZVNoYWRlciggdHlwZSApO1xcblxcblxcdFxcdGdsLnNoYWRlclNvdXJjZSggc2hhZGVyLCBzdHJpbmcgKTtcXG5cXHRcXHRnbC5jb21waWxlU2hhZGVyKCBzaGFkZXIgKTtcXG5cXG5cXHRcXHRpZiAoIGdsLmdldFNoYWRlclBhcmFtZXRlciggc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUyApID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuV2ViR0xTaGFkZXI6IFNoYWRlciBjb3VsZG5cXFxcJ3QgY29tcGlsZS4nICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGlmICggZ2wuZ2V0U2hhZGVySW5mb0xvZyggc2hhZGVyICkgIT09ICcnICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMU2hhZGVyOiBnbC5nZXRTaGFkZXJJbmZvTG9nKCknLCB0eXBlID09PSBnbC5WRVJURVhfU0hBREVSID8gJ3ZlcnRleCcgOiAnZnJhZ21lbnQnLCBnbC5nZXRTaGFkZXJJbmZvTG9nKCBzaGFkZXIgKSwgYWRkTGluZU51bWJlcnMoIHN0cmluZyApICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIC0tZW5hYmxlLXByaXZpbGVnZWQtd2ViZ2wtZXh0ZW5zaW9uXFxuXFx0XFx0Ly8gY29uc29sZS5sb2coIHR5cGUsIGdsLmdldEV4dGVuc2lvbiggJ1dFQkdMX2RlYnVnX3NoYWRlcnMnICkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZSggc2hhZGVyICkgKTtcXG5cXG5cXHRcXHRyZXR1cm4gc2hhZGVyO1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdHZhciBwcm9ncmFtSWRDb3VudCA9IDA7XFxuXFxuXFx0ZnVuY3Rpb24gZ2V0RW5jb2RpbmdDb21wb25lbnRzKCBlbmNvZGluZyApIHtcXG5cXG5cXHRcXHRzd2l0Y2ggKCBlbmNvZGluZyApIHtcXG5cXG5cXHRcXHRcXHRjYXNlIExpbmVhckVuY29kaW5nOlxcblxcdFxcdFxcdFxcdHJldHVybiBbICdMaW5lYXInLCAnKCB2YWx1ZSApJyBdO1xcblxcdFxcdFxcdGNhc2Ugc1JHQkVuY29kaW5nOlxcblxcdFxcdFxcdFxcdHJldHVybiBbICdzUkdCJywgJyggdmFsdWUgKScgXTtcXG5cXHRcXHRcXHRjYXNlIFJHQkVFbmNvZGluZzpcXG5cXHRcXHRcXHRcXHRyZXR1cm4gWyAnUkdCRScsICcoIHZhbHVlICknIF07XFxuXFx0XFx0XFx0Y2FzZSBSR0JNN0VuY29kaW5nOlxcblxcdFxcdFxcdFxcdHJldHVybiBbICdSR0JNJywgJyggdmFsdWUsIDcuMCApJyBdO1xcblxcdFxcdFxcdGNhc2UgUkdCTTE2RW5jb2Rpbmc6XFxuXFx0XFx0XFx0XFx0cmV0dXJuIFsgJ1JHQk0nLCAnKCB2YWx1ZSwgMTYuMCApJyBdO1xcblxcdFxcdFxcdGNhc2UgUkdCREVuY29kaW5nOlxcblxcdFxcdFxcdFxcdHJldHVybiBbICdSR0JEJywgJyggdmFsdWUsIDI1Ni4wICknIF07XFxuXFx0XFx0XFx0Y2FzZSBHYW1tYUVuY29kaW5nOlxcblxcdFxcdFxcdFxcdHJldHVybiBbICdHYW1tYScsICcoIHZhbHVlLCBmbG9hdCggR0FNTUFfRkFDVE9SICkgKScgXTtcXG5cXHRcXHRcXHRkZWZhdWx0OlxcblxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggJ3Vuc3VwcG9ydGVkIGVuY29kaW5nOiAnICsgZW5jb2RpbmcgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIGdldFRleGVsRGVjb2RpbmdGdW5jdGlvbiggZnVuY3Rpb25OYW1lLCBlbmNvZGluZyApIHtcXG5cXG5cXHRcXHR2YXIgY29tcG9uZW50cyA9IGdldEVuY29kaW5nQ29tcG9uZW50cyggZW5jb2RpbmcgKTtcXG5cXHRcXHRyZXR1cm4gJ3ZlYzQgJyArIGZ1bmN0aW9uTmFtZSArICcoIHZlYzQgdmFsdWUgKSB7IHJldHVybiAnICsgY29tcG9uZW50c1sgMCBdICsgJ1RvTGluZWFyJyArIGNvbXBvbmVudHNbIDEgXSArICc7IH0nO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBnZXRUZXhlbEVuY29kaW5nRnVuY3Rpb24oIGZ1bmN0aW9uTmFtZSwgZW5jb2RpbmcgKSB7XFxuXFxuXFx0XFx0dmFyIGNvbXBvbmVudHMgPSBnZXRFbmNvZGluZ0NvbXBvbmVudHMoIGVuY29kaW5nICk7XFxuXFx0XFx0cmV0dXJuICd2ZWM0ICcgKyBmdW5jdGlvbk5hbWUgKyAnKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gTGluZWFyVG8nICsgY29tcG9uZW50c1sgMCBdICsgY29tcG9uZW50c1sgMSBdICsgJzsgfSc7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIGdldFRvbmVNYXBwaW5nRnVuY3Rpb24oIGZ1bmN0aW9uTmFtZSwgdG9uZU1hcHBpbmcgKSB7XFxuXFxuXFx0XFx0dmFyIHRvbmVNYXBwaW5nTmFtZTtcXG5cXG5cXHRcXHRzd2l0Y2ggKCB0b25lTWFwcGluZyApIHtcXG5cXG5cXHRcXHRcXHRjYXNlIExpbmVhclRvbmVNYXBwaW5nOlxcblxcdFxcdFxcdFxcdHRvbmVNYXBwaW5nTmFtZSA9ICdMaW5lYXInO1xcblxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdGNhc2UgUmVpbmhhcmRUb25lTWFwcGluZzpcXG5cXHRcXHRcXHRcXHR0b25lTWFwcGluZ05hbWUgPSAnUmVpbmhhcmQnO1xcblxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdGNhc2UgVW5jaGFydGVkMlRvbmVNYXBwaW5nOlxcblxcdFxcdFxcdFxcdHRvbmVNYXBwaW5nTmFtZSA9ICdVbmNoYXJ0ZWQyJztcXG5cXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRjYXNlIENpbmVvblRvbmVNYXBwaW5nOlxcblxcdFxcdFxcdFxcdHRvbmVNYXBwaW5nTmFtZSA9ICdPcHRpbWl6ZWRDaW5lb24nO1xcblxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdGRlZmF1bHQ6XFxuXFx0XFx0XFx0XFx0dGhyb3cgbmV3IEVycm9yKCAndW5zdXBwb3J0ZWQgdG9uZU1hcHBpbmc6ICcgKyB0b25lTWFwcGluZyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gJ3ZlYzMgJyArIGZ1bmN0aW9uTmFtZSArICcoIHZlYzMgY29sb3IgKSB7IHJldHVybiAnICsgdG9uZU1hcHBpbmdOYW1lICsgJ1RvbmVNYXBwaW5nKCBjb2xvciApOyB9JztcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gZ2VuZXJhdGVFeHRlbnNpb25zKCBleHRlbnNpb25zLCBwYXJhbWV0ZXJzLCByZW5kZXJlckV4dGVuc2lvbnMgKSB7XFxuXFxuXFx0XFx0ZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnMgfHwge307XFxuXFxuXFx0XFx0dmFyIGNodW5rcyA9IFtcXG5cXHRcXHRcXHQoIGV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMgfHwgcGFyYW1ldGVycy5lbnZNYXBDdWJlVVYgfHwgcGFyYW1ldGVycy5idW1wTWFwIHx8IHBhcmFtZXRlcnMubm9ybWFsTWFwIHx8IHBhcmFtZXRlcnMuZmxhdFNoYWRpbmcgKSA/ICcjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZScgOiAnJyxcXG5cXHRcXHRcXHQoIGV4dGVuc2lvbnMuZnJhZ0RlcHRoIHx8IHBhcmFtZXRlcnMubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciApICYmIHJlbmRlcmVyRXh0ZW5zaW9ucy5nZXQoICdFWFRfZnJhZ19kZXB0aCcgKSA/ICcjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlJyA6ICcnLFxcblxcdFxcdFxcdCggZXh0ZW5zaW9ucy5kcmF3QnVmZmVycyApICYmIHJlbmRlcmVyRXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9kcmF3X2J1ZmZlcnMnICkgPyAnI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZScgOiAnJyxcXG5cXHRcXHRcXHQoIGV4dGVuc2lvbnMuc2hhZGVyVGV4dHVyZUxPRCB8fCBwYXJhbWV0ZXJzLmVudk1hcCApICYmIHJlbmRlcmVyRXh0ZW5zaW9ucy5nZXQoICdFWFRfc2hhZGVyX3RleHR1cmVfbG9kJyApID8gJyNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA6IGVuYWJsZScgOiAnJ1xcblxcdFxcdF07XFxuXFxuXFx0XFx0cmV0dXJuIGNodW5rcy5maWx0ZXIoIGZpbHRlckVtcHR5TGluZSApLmpvaW4oICdcXFxcbicgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gZ2VuZXJhdGVEZWZpbmVzKCBkZWZpbmVzICkge1xcblxcblxcdFxcdHZhciBjaHVua3MgPSBbXTtcXG5cXG5cXHRcXHRmb3IgKCB2YXIgbmFtZSBpbiBkZWZpbmVzICkge1xcblxcblxcdFxcdFxcdHZhciB2YWx1ZSA9IGRlZmluZXNbIG5hbWUgXTtcXG5cXG5cXHRcXHRcXHRpZiAoIHZhbHVlID09PSBmYWxzZSApIGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdGNodW5rcy5wdXNoKCAnI2RlZmluZSAnICsgbmFtZSArICcgJyArIHZhbHVlICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiBjaHVua3Muam9pbiggJ1xcXFxuJyApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBmZXRjaEF0dHJpYnV0ZUxvY2F0aW9ucyggZ2wsIHByb2dyYW0gKSB7XFxuXFxuXFx0XFx0dmFyIGF0dHJpYnV0ZXMgPSB7fTtcXG5cXG5cXHRcXHR2YXIgbiA9IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoIHByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJVVEVTICk7XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbjsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW5mbyA9IGdsLmdldEFjdGl2ZUF0dHJpYiggcHJvZ3JhbSwgaSApO1xcblxcdFxcdFxcdHZhciBuYW1lID0gaW5mby5uYW1lO1xcblxcblxcdFxcdFxcdC8vIGNvbnNvbGUubG9nKCAnVEhSRUUuV2ViR0xQcm9ncmFtOiBBQ1RJVkUgVkVSVEVYIEFUVFJJQlVURTonLCBuYW1lLCBpICk7XFxuXFxuXFx0XFx0XFx0YXR0cmlidXRlc1sgbmFtZSBdID0gZ2wuZ2V0QXR0cmliTG9jYXRpb24oIHByb2dyYW0sIG5hbWUgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIGF0dHJpYnV0ZXM7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIGZpbHRlckVtcHR5TGluZSggc3RyaW5nICkge1xcblxcblxcdFxcdHJldHVybiBzdHJpbmcgIT09ICcnO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiByZXBsYWNlTGlnaHROdW1zKCBzdHJpbmcsIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIHN0cmluZ1xcblxcdFxcdFxcdC5yZXBsYWNlKCAvTlVNX0RJUl9MSUdIVFMvZywgcGFyYW1ldGVycy5udW1EaXJMaWdodHMgKVxcblxcdFxcdFxcdC5yZXBsYWNlKCAvTlVNX1NQT1RfTElHSFRTL2csIHBhcmFtZXRlcnMubnVtU3BvdExpZ2h0cyApXFxuXFx0XFx0XFx0LnJlcGxhY2UoIC9OVU1fUkVDVF9BUkVBX0xJR0hUUy9nLCBwYXJhbWV0ZXJzLm51bVJlY3RBcmVhTGlnaHRzIClcXG5cXHRcXHRcXHQucmVwbGFjZSggL05VTV9QT0lOVF9MSUdIVFMvZywgcGFyYW1ldGVycy5udW1Qb2ludExpZ2h0cyApXFxuXFx0XFx0XFx0LnJlcGxhY2UoIC9OVU1fSEVNSV9MSUdIVFMvZywgcGFyYW1ldGVycy5udW1IZW1pTGlnaHRzICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIHBhcnNlSW5jbHVkZXMoIHN0cmluZyApIHtcXG5cXG5cXHRcXHR2YXIgcGF0dGVybiA9IC9eWyBcXFxcdF0qI2luY2x1ZGUgKzwoW1xcXFx3XFxcXGQuXSspPi9nbTtcXG5cXG5cXHRcXHRmdW5jdGlvbiByZXBsYWNlKCBtYXRjaCwgaW5jbHVkZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVwbGFjZSA9IFNoYWRlckNodW5rWyBpbmNsdWRlIF07XFxuXFxuXFx0XFx0XFx0aWYgKCByZXBsYWNlID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhyb3cgbmV3IEVycm9yKCAnQ2FuIG5vdCByZXNvbHZlICNpbmNsdWRlIDwnICsgaW5jbHVkZSArICc+JyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gcGFyc2VJbmNsdWRlcyggcmVwbGFjZSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gc3RyaW5nLnJlcGxhY2UoIHBhdHRlcm4sIHJlcGxhY2UgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gdW5yb2xsTG9vcHMoIHN0cmluZyApIHtcXG5cXG5cXHRcXHR2YXIgcGF0dGVybiA9IC9mb3IgXFxcXCggaW50IGkgXFxcXD0gKFxcXFxkKylcXFxcOyBpIDwgKFxcXFxkKylcXFxcOyBpIFxcXFwrXFxcXCsgXFxcXCkgXFxcXHsoW1xcXFxzXFxcXFNdKz8pKD89XFxcXH0pXFxcXH0vZztcXG5cXG5cXHRcXHRmdW5jdGlvbiByZXBsYWNlKCBtYXRjaCwgc3RhcnQsIGVuZCwgc25pcHBldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdW5yb2xsID0gJyc7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSBwYXJzZUludCggc3RhcnQgKTsgaSA8IHBhcnNlSW50KCBlbmQgKTsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bnJvbGwgKz0gc25pcHBldC5yZXBsYWNlKCAvXFxcXFsgaSBcXFxcXS9nLCAnWyAnICsgaSArICcgXScgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHVucm9sbDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBwYXR0ZXJuLCByZXBsYWNlICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIFdlYkdMUHJvZ3JhbSggcmVuZGVyZXIsIGV4dGVuc2lvbnMsIGNvZGUsIG1hdGVyaWFsLCBzaGFkZXIsIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0dmFyIGdsID0gcmVuZGVyZXIuY29udGV4dDtcXG5cXG5cXHRcXHR2YXIgZGVmaW5lcyA9IG1hdGVyaWFsLmRlZmluZXM7XFxuXFxuXFx0XFx0dmFyIHZlcnRleFNoYWRlciA9IHNoYWRlci52ZXJ0ZXhTaGFkZXI7XFxuXFx0XFx0dmFyIGZyYWdtZW50U2hhZGVyID0gc2hhZGVyLmZyYWdtZW50U2hhZGVyO1xcblxcblxcdFxcdHZhciBzaGFkb3dNYXBUeXBlRGVmaW5lID0gJ1NIQURPV01BUF9UWVBFX0JBU0lDJztcXG5cXG5cXHRcXHRpZiAoIHBhcmFtZXRlcnMuc2hhZG93TWFwVHlwZSA9PT0gUENGU2hhZG93TWFwICkge1xcblxcblxcdFxcdFxcdHNoYWRvd01hcFR5cGVEZWZpbmUgPSAnU0hBRE9XTUFQX1RZUEVfUENGJztcXG5cXG5cXHRcXHR9IGVsc2UgaWYgKCBwYXJhbWV0ZXJzLnNoYWRvd01hcFR5cGUgPT09IFBDRlNvZnRTaGFkb3dNYXAgKSB7XFxuXFxuXFx0XFx0XFx0c2hhZG93TWFwVHlwZURlZmluZSA9ICdTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCc7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHZhciBlbnZNYXBUeXBlRGVmaW5lID0gJ0VOVk1BUF9UWVBFX0NVQkUnO1xcblxcdFxcdHZhciBlbnZNYXBNb2RlRGVmaW5lID0gJ0VOVk1BUF9NT0RFX1JFRkxFQ1RJT04nO1xcblxcdFxcdHZhciBlbnZNYXBCbGVuZGluZ0RlZmluZSA9ICdFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFknO1xcblxcblxcdFxcdGlmICggcGFyYW1ldGVycy5lbnZNYXAgKSB7XFxuXFxuXFx0XFx0XFx0c3dpdGNoICggbWF0ZXJpYWwuZW52TWFwLm1hcHBpbmcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y2FzZSBDdWJlUmVmbGVjdGlvbk1hcHBpbmc6XFxuXFx0XFx0XFx0XFx0Y2FzZSBDdWJlUmVmcmFjdGlvbk1hcHBpbmc6XFxuXFx0XFx0XFx0XFx0XFx0ZW52TWFwVHlwZURlZmluZSA9ICdFTlZNQVBfVFlQRV9DVUJFJztcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nOlxcblxcdFxcdFxcdFxcdGNhc2UgQ3ViZVVWUmVmcmFjdGlvbk1hcHBpbmc6XFxuXFx0XFx0XFx0XFx0XFx0ZW52TWFwVHlwZURlZmluZSA9ICdFTlZNQVBfVFlQRV9DVUJFX1VWJztcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIEVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nOlxcblxcdFxcdFxcdFxcdGNhc2UgRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmc6XFxuXFx0XFx0XFx0XFx0XFx0ZW52TWFwVHlwZURlZmluZSA9ICdFTlZNQVBfVFlQRV9FUVVJUkVDJztcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIFNwaGVyaWNhbFJlZmxlY3Rpb25NYXBwaW5nOlxcblxcdFxcdFxcdFxcdFxcdGVudk1hcFR5cGVEZWZpbmUgPSAnRU5WTUFQX1RZUEVfU1BIRVJFJztcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0c3dpdGNoICggbWF0ZXJpYWwuZW52TWFwLm1hcHBpbmcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y2FzZSBDdWJlUmVmcmFjdGlvbk1hcHBpbmc6XFxuXFx0XFx0XFx0XFx0Y2FzZSBFcXVpcmVjdGFuZ3VsYXJSZWZyYWN0aW9uTWFwcGluZzpcXG5cXHRcXHRcXHRcXHRcXHRlbnZNYXBNb2RlRGVmaW5lID0gJ0VOVk1BUF9NT0RFX1JFRlJBQ1RJT04nO1xcblxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRzd2l0Y2ggKCBtYXRlcmlhbC5jb21iaW5lICkge1xcblxcblxcdFxcdFxcdFxcdGNhc2UgTXVsdGlwbHlPcGVyYXRpb246XFxuXFx0XFx0XFx0XFx0XFx0ZW52TWFwQmxlbmRpbmdEZWZpbmUgPSAnRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZJztcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIE1peE9wZXJhdGlvbjpcXG5cXHRcXHRcXHRcXHRcXHRlbnZNYXBCbGVuZGluZ0RlZmluZSA9ICdFTlZNQVBfQkxFTkRJTkdfTUlYJztcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIEFkZE9wZXJhdGlvbjpcXG5cXHRcXHRcXHRcXHRcXHRlbnZNYXBCbGVuZGluZ0RlZmluZSA9ICdFTlZNQVBfQkxFTkRJTkdfQUREJztcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHZhciBnYW1tYUZhY3RvckRlZmluZSA9ICggcmVuZGVyZXIuZ2FtbWFGYWN0b3IgPiAwICkgPyByZW5kZXJlci5nYW1tYUZhY3RvciA6IDEuMDtcXG5cXG5cXHRcXHQvLyBjb25zb2xlLmxvZyggJ2J1aWxkaW5nIG5ldyBwcm9ncmFtICcgKTtcXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHZhciBjdXN0b21FeHRlbnNpb25zID0gZ2VuZXJhdGVFeHRlbnNpb25zKCBtYXRlcmlhbC5leHRlbnNpb25zLCBwYXJhbWV0ZXJzLCBleHRlbnNpb25zICk7XFxuXFxuXFx0XFx0dmFyIGN1c3RvbURlZmluZXMgPSBnZW5lcmF0ZURlZmluZXMoIGRlZmluZXMgKTtcXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHZhciBwcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpO1xcblxcblxcdFxcdHZhciBwcmVmaXhWZXJ0ZXgsIHByZWZpeEZyYWdtZW50O1xcblxcblxcdFxcdGlmICggbWF0ZXJpYWwuaXNSYXdTaGFkZXJNYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRwcmVmaXhWZXJ0ZXggPSBbXFxuXFxuXFx0XFx0XFx0XFx0Y3VzdG9tRGVmaW5lc1xcblxcblxcdFxcdFxcdF0uZmlsdGVyKCBmaWx0ZXJFbXB0eUxpbmUgKS5qb2luKCAnXFxcXG4nICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBwcmVmaXhWZXJ0ZXgubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRwcmVmaXhWZXJ0ZXggKz0gJ1xcXFxuJztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cHJlZml4RnJhZ21lbnQgPSBbXFxuXFxuXFx0XFx0XFx0XFx0Y3VzdG9tRXh0ZW5zaW9ucyxcXG5cXHRcXHRcXHRcXHRjdXN0b21EZWZpbmVzXFxuXFxuXFx0XFx0XFx0XS5maWx0ZXIoIGZpbHRlckVtcHR5TGluZSApLmpvaW4oICdcXFxcbicgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHByZWZpeEZyYWdtZW50Lmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cHJlZml4RnJhZ21lbnQgKz0gJ1xcXFxuJztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRwcmVmaXhWZXJ0ZXggPSBbXFxuXFxuXFx0XFx0XFx0XFx0J3ByZWNpc2lvbiAnICsgcGFyYW1ldGVycy5wcmVjaXNpb24gKyAnIGZsb2F0OycsXFxuXFx0XFx0XFx0XFx0J3ByZWNpc2lvbiAnICsgcGFyYW1ldGVycy5wcmVjaXNpb24gKyAnIGludDsnLFxcblxcblxcdFxcdFxcdFxcdCcjZGVmaW5lIFNIQURFUl9OQU1FICcgKyBzaGFkZXIubmFtZSxcXG5cXG5cXHRcXHRcXHRcXHRjdXN0b21EZWZpbmVzLFxcblxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcyA/ICcjZGVmaW5lIFZFUlRFWF9URVhUVVJFUycgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHQnI2RlZmluZSBHQU1NQV9GQUNUT1IgJyArIGdhbW1hRmFjdG9yRGVmaW5lLFxcblxcblxcdFxcdFxcdFxcdCcjZGVmaW5lIE1BWF9CT05FUyAnICsgcGFyYW1ldGVycy5tYXhCb25lcyxcXG5cXHRcXHRcXHRcXHQoIHBhcmFtZXRlcnMudXNlRm9nICYmIHBhcmFtZXRlcnMuZm9nICkgPyAnI2RlZmluZSBVU0VfRk9HJyA6ICcnLFxcblxcdFxcdFxcdFxcdCggcGFyYW1ldGVycy51c2VGb2cgJiYgcGFyYW1ldGVycy5mb2dFeHAgKSA/ICcjZGVmaW5lIEZPR19FWFAyJyA6ICcnLFxcblxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMubWFwID8gJyNkZWZpbmUgVVNFX01BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmVudk1hcCA/ICcjZGVmaW5lIFVTRV9FTlZNQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5lbnZNYXAgPyAnI2RlZmluZSAnICsgZW52TWFwTW9kZURlZmluZSA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMubGlnaHRNYXAgPyAnI2RlZmluZSBVU0VfTElHSFRNQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5hb01hcCA/ICcjZGVmaW5lIFVTRV9BT01BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmVtaXNzaXZlTWFwID8gJyNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuYnVtcE1hcCA/ICcjZGVmaW5lIFVTRV9CVU1QTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMubm9ybWFsTWFwID8gJyNkZWZpbmUgVVNFX05PUk1BTE1BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmRpc3BsYWNlbWVudE1hcCAmJiBwYXJhbWV0ZXJzLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMgPyAnI2RlZmluZSBVU0VfRElTUExBQ0VNRU5UTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuc3BlY3VsYXJNYXAgPyAnI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5yb3VnaG5lc3NNYXAgPyAnI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMubWV0YWxuZXNzTWFwID8gJyNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmFscGhhTWFwID8gJyNkZWZpbmUgVVNFX0FMUEhBTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMudmVydGV4Q29sb3JzID8gJyNkZWZpbmUgVVNFX0NPTE9SJyA6ICcnLFxcblxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuZmxhdFNoYWRpbmcgPyAnI2RlZmluZSBGTEFUX1NIQURFRCcgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLnNraW5uaW5nID8gJyNkZWZpbmUgVVNFX1NLSU5OSU5HJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMudXNlVmVydGV4VGV4dHVyZSA/ICcjZGVmaW5lIEJPTkVfVEVYVFVSRScgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLm1vcnBoVGFyZ2V0cyA/ICcjZGVmaW5lIFVTRV9NT1JQSFRBUkdFVFMnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5tb3JwaE5vcm1hbHMgJiYgcGFyYW1ldGVycy5mbGF0U2hhZGluZyA9PT0gZmFsc2UgPyAnI2RlZmluZSBVU0VfTU9SUEhOT1JNQUxTJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuZG91YmxlU2lkZWQgPyAnI2RlZmluZSBET1VCTEVfU0lERUQnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5mbGlwU2lkZWQgPyAnI2RlZmluZSBGTElQX1NJREVEJyA6ICcnLFxcblxcblxcdFxcdFxcdFxcdCcjZGVmaW5lIE5VTV9DTElQUElOR19QTEFORVMgJyArIHBhcmFtZXRlcnMubnVtQ2xpcHBpbmdQbGFuZXMsXFxuXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5zaGFkb3dNYXBFbmFibGVkID8gJyNkZWZpbmUgVVNFX1NIQURPV01BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLnNoYWRvd01hcEVuYWJsZWQgPyAnI2RlZmluZSAnICsgc2hhZG93TWFwVHlwZURlZmluZSA6ICcnLFxcblxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuc2l6ZUF0dGVudWF0aW9uID8gJyNkZWZpbmUgVVNFX1NJWkVBVFRFTlVBVElPTicgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIgPyAnI2RlZmluZSBVU0VfTE9HREVQVEhCVUYnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5sb2dhcml0aG1pY0RlcHRoQnVmZmVyICYmIGV4dGVuc2lvbnMuZ2V0KCAnRVhUX2ZyYWdfZGVwdGgnICkgPyAnI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUJyA6ICcnLFxcblxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7JyxcXG5cXHRcXHRcXHRcXHQndW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsnLFxcblxcdFxcdFxcdFxcdCd1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4OycsXFxuXFx0XFx0XFx0XFx0J3VuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsnLFxcblxcblxcdFxcdFxcdFxcdCdhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjsnLFxcblxcdFxcdFxcdFxcdCdhdHRyaWJ1dGUgdmVjMyBub3JtYWw7JyxcXG5cXHRcXHRcXHRcXHQnYXR0cmlidXRlIHZlYzIgdXY7JyxcXG5cXG5cXHRcXHRcXHRcXHQnI2lmZGVmIFVTRV9DT0xPUicsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdGF0dHJpYnV0ZSB2ZWMzIGNvbG9yOycsXFxuXFxuXFx0XFx0XFx0XFx0JyNlbmRpZicsXFxuXFxuXFx0XFx0XFx0XFx0JyNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTJyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQwOycsXFxuXFx0XFx0XFx0XFx0J1xcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MTsnLFxcblxcdFxcdFxcdFxcdCdcXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDI7JyxcXG5cXHRcXHRcXHRcXHQnXFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQzOycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdCNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTJyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0XFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwwOycsXFxuXFx0XFx0XFx0XFx0J1xcdFxcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMTsnLFxcblxcdFxcdFxcdFxcdCdcXHRcXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDI7JyxcXG5cXHRcXHRcXHRcXHQnXFx0XFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwzOycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdCNlbHNlJyxcXG5cXG5cXHRcXHRcXHRcXHQnXFx0XFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ0OycsXFxuXFx0XFx0XFx0XFx0J1xcdFxcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NTsnLFxcblxcdFxcdFxcdFxcdCdcXHRcXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDY7JyxcXG5cXHRcXHRcXHRcXHQnXFx0XFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ3OycsXFxuXFxuXFx0XFx0XFx0XFx0J1xcdCNlbmRpZicsXFxuXFxuXFx0XFx0XFx0XFx0JyNlbmRpZicsXFxuXFxuXFx0XFx0XFx0XFx0JyNpZmRlZiBVU0VfU0tJTk5JTkcnLFxcblxcblxcdFxcdFxcdFxcdCdcXHRhdHRyaWJ1dGUgdmVjNCBza2luSW5kZXg7JyxcXG5cXHRcXHRcXHRcXHQnXFx0YXR0cmlidXRlIHZlYzQgc2tpbldlaWdodDsnLFxcblxcblxcdFxcdFxcdFxcdCcjZW5kaWYnLFxcblxcblxcdFxcdFxcdFxcdCdcXFxcbidcXG5cXG5cXHRcXHRcXHRdLmZpbHRlciggZmlsdGVyRW1wdHlMaW5lICkuam9pbiggJ1xcXFxuJyApO1xcblxcblxcdFxcdFxcdHByZWZpeEZyYWdtZW50ID0gW1xcblxcblxcdFxcdFxcdFxcdGN1c3RvbUV4dGVuc2lvbnMsXFxuXFxuXFx0XFx0XFx0XFx0J3ByZWNpc2lvbiAnICsgcGFyYW1ldGVycy5wcmVjaXNpb24gKyAnIGZsb2F0OycsXFxuXFx0XFx0XFx0XFx0J3ByZWNpc2lvbiAnICsgcGFyYW1ldGVycy5wcmVjaXNpb24gKyAnIGludDsnLFxcblxcblxcdFxcdFxcdFxcdCcjZGVmaW5lIFNIQURFUl9OQU1FICcgKyBzaGFkZXIubmFtZSxcXG5cXG5cXHRcXHRcXHRcXHRjdXN0b21EZWZpbmVzLFxcblxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuYWxwaGFUZXN0ID8gJyNkZWZpbmUgQUxQSEFURVNUICcgKyBwYXJhbWV0ZXJzLmFscGhhVGVzdCA6ICcnLFxcblxcblxcdFxcdFxcdFxcdCcjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAnICsgZ2FtbWFGYWN0b3JEZWZpbmUsXFxuXFxuXFx0XFx0XFx0XFx0KCBwYXJhbWV0ZXJzLnVzZUZvZyAmJiBwYXJhbWV0ZXJzLmZvZyApID8gJyNkZWZpbmUgVVNFX0ZPRycgOiAnJyxcXG5cXHRcXHRcXHRcXHQoIHBhcmFtZXRlcnMudXNlRm9nICYmIHBhcmFtZXRlcnMuZm9nRXhwICkgPyAnI2RlZmluZSBGT0dfRVhQMicgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLm1hcCA/ICcjZGVmaW5lIFVTRV9NQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5lbnZNYXAgPyAnI2RlZmluZSBVU0VfRU5WTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuZW52TWFwID8gJyNkZWZpbmUgJyArIGVudk1hcFR5cGVEZWZpbmUgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmVudk1hcCA/ICcjZGVmaW5lICcgKyBlbnZNYXBNb2RlRGVmaW5lIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5lbnZNYXAgPyAnI2RlZmluZSAnICsgZW52TWFwQmxlbmRpbmdEZWZpbmUgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmxpZ2h0TWFwID8gJyNkZWZpbmUgVVNFX0xJR0hUTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuYW9NYXAgPyAnI2RlZmluZSBVU0VfQU9NQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5lbWlzc2l2ZU1hcCA/ICcjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmJ1bXBNYXAgPyAnI2RlZmluZSBVU0VfQlVNUE1BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLm5vcm1hbE1hcCA/ICcjZGVmaW5lIFVTRV9OT1JNQUxNQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5zcGVjdWxhck1hcCA/ICcjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLnJvdWdobmVzc01hcCA/ICcjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5tZXRhbG5lc3NNYXAgPyAnI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuYWxwaGFNYXAgPyAnI2RlZmluZSBVU0VfQUxQSEFNQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy52ZXJ0ZXhDb2xvcnMgPyAnI2RlZmluZSBVU0VfQ09MT1InIDogJycsXFxuXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5ncmFkaWVudE1hcCA/ICcjZGVmaW5lIFVTRV9HUkFESUVOVE1BUCcgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmZsYXRTaGFkaW5nID8gJyNkZWZpbmUgRkxBVF9TSEFERUQnIDogJycsXFxuXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5kb3VibGVTaWRlZCA/ICcjZGVmaW5lIERPVUJMRV9TSURFRCcgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmZsaXBTaWRlZCA/ICcjZGVmaW5lIEZMSVBfU0lERUQnIDogJycsXFxuXFxuXFx0XFx0XFx0XFx0JyNkZWZpbmUgTlVNX0NMSVBQSU5HX1BMQU5FUyAnICsgcGFyYW1ldGVycy5udW1DbGlwcGluZ1BsYW5lcyxcXG5cXHRcXHRcXHRcXHQnI2RlZmluZSBVTklPTl9DTElQUElOR19QTEFORVMgJyArICggcGFyYW1ldGVycy5udW1DbGlwcGluZ1BsYW5lcyAtIHBhcmFtZXRlcnMubnVtQ2xpcEludGVyc2VjdGlvbiApLFxcblxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMuc2hhZG93TWFwRW5hYmxlZCA/ICcjZGVmaW5lIFVTRV9TSEFET1dNQVAnIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5zaGFkb3dNYXBFbmFibGVkID8gJyNkZWZpbmUgJyArIHNoYWRvd01hcFR5cGVEZWZpbmUgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLnByZW11bHRpcGxpZWRBbHBoYSA/ICcjZGVmaW5lIFBSRU1VTFRJUExJRURfQUxQSEEnIDogJycsXFxuXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyA/ICcjZGVmaW5lIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMnIDogJycsXFxuXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5sb2dhcml0aG1pY0RlcHRoQnVmZmVyID8gJyNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGJyA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciAmJiBleHRlbnNpb25zLmdldCggJ0VYVF9mcmFnX2RlcHRoJyApID8gJyNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCcgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmVudk1hcCAmJiBleHRlbnNpb25zLmdldCggJ0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QnICkgPyAnI2RlZmluZSBURVhUVVJFX0xPRF9FWFQnIDogJycsXFxuXFxuXFx0XFx0XFx0XFx0J3VuaWZvcm0gbWF0NCB2aWV3TWF0cml4OycsXFxuXFx0XFx0XFx0XFx0J3VuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsnLFxcblxcblxcdFxcdFxcdFxcdCggcGFyYW1ldGVycy50b25lTWFwcGluZyAhPT0gTm9Ub25lTWFwcGluZyApID8gJyNkZWZpbmUgVE9ORV9NQVBQSU5HJyA6ICcnLFxcblxcdFxcdFxcdFxcdCggcGFyYW1ldGVycy50b25lTWFwcGluZyAhPT0gTm9Ub25lTWFwcGluZyApID8gU2hhZGVyQ2h1bmtbICd0b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50JyBdIDogJycsIC8vIHRoaXMgY29kZSBpcyByZXF1aXJlZCBoZXJlIGJlY2F1c2UgaXQgaXMgdXNlZCBieSB0aGUgdG9uZU1hcHBpbmcoKSBmdW5jdGlvbiBkZWZpbmVkIGJlbG93XFxuXFx0XFx0XFx0XFx0KCBwYXJhbWV0ZXJzLnRvbmVNYXBwaW5nICE9PSBOb1RvbmVNYXBwaW5nICkgPyBnZXRUb25lTWFwcGluZ0Z1bmN0aW9uKCAndG9uZU1hcHBpbmcnLCBwYXJhbWV0ZXJzLnRvbmVNYXBwaW5nICkgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmRpdGhlcmluZyA/ICcjZGVmaW5lIERJVEhFUklORycgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHQoIHBhcmFtZXRlcnMub3V0cHV0RW5jb2RpbmcgfHwgcGFyYW1ldGVycy5tYXBFbmNvZGluZyB8fCBwYXJhbWV0ZXJzLmVudk1hcEVuY29kaW5nIHx8IHBhcmFtZXRlcnMuZW1pc3NpdmVNYXBFbmNvZGluZyApID8gU2hhZGVyQ2h1bmtbICdlbmNvZGluZ3NfcGFyc19mcmFnbWVudCcgXSA6ICcnLCAvLyB0aGlzIGNvZGUgaXMgcmVxdWlyZWQgaGVyZSBiZWNhdXNlIGl0IGlzIHVzZWQgYnkgdGhlIHZhcmlvdXMgZW5jb2RpbmcvZGVjb2RpbmcgZnVuY3Rpb24gZGVmaW5lZCBiZWxvd1xcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMubWFwRW5jb2RpbmcgPyBnZXRUZXhlbERlY29kaW5nRnVuY3Rpb24oICdtYXBUZXhlbFRvTGluZWFyJywgcGFyYW1ldGVycy5tYXBFbmNvZGluZyApIDogJycsXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5lbnZNYXBFbmNvZGluZyA/IGdldFRleGVsRGVjb2RpbmdGdW5jdGlvbiggJ2Vudk1hcFRleGVsVG9MaW5lYXInLCBwYXJhbWV0ZXJzLmVudk1hcEVuY29kaW5nICkgOiAnJyxcXG5cXHRcXHRcXHRcXHRwYXJhbWV0ZXJzLmVtaXNzaXZlTWFwRW5jb2RpbmcgPyBnZXRUZXhlbERlY29kaW5nRnVuY3Rpb24oICdlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXInLCBwYXJhbWV0ZXJzLmVtaXNzaXZlTWFwRW5jb2RpbmcgKSA6ICcnLFxcblxcdFxcdFxcdFxcdHBhcmFtZXRlcnMub3V0cHV0RW5jb2RpbmcgPyBnZXRUZXhlbEVuY29kaW5nRnVuY3Rpb24oICdsaW5lYXJUb091dHB1dFRleGVsJywgcGFyYW1ldGVycy5vdXRwdXRFbmNvZGluZyApIDogJycsXFxuXFxuXFx0XFx0XFx0XFx0cGFyYW1ldGVycy5kZXB0aFBhY2tpbmcgPyAnI2RlZmluZSBERVBUSF9QQUNLSU5HICcgKyBtYXRlcmlhbC5kZXB0aFBhY2tpbmcgOiAnJyxcXG5cXG5cXHRcXHRcXHRcXHQnXFxcXG4nXFxuXFxuXFx0XFx0XFx0XS5maWx0ZXIoIGZpbHRlckVtcHR5TGluZSApLmpvaW4oICdcXFxcbicgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dmVydGV4U2hhZGVyID0gcGFyc2VJbmNsdWRlcyggdmVydGV4U2hhZGVyICk7XFxuXFx0XFx0dmVydGV4U2hhZGVyID0gcmVwbGFjZUxpZ2h0TnVtcyggdmVydGV4U2hhZGVyLCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0XFx0ZnJhZ21lbnRTaGFkZXIgPSBwYXJzZUluY2x1ZGVzKCBmcmFnbWVudFNoYWRlciApO1xcblxcdFxcdGZyYWdtZW50U2hhZGVyID0gcmVwbGFjZUxpZ2h0TnVtcyggZnJhZ21lbnRTaGFkZXIsIHBhcmFtZXRlcnMgKTtcXG5cXG5cXHRcXHRpZiAoICEgbWF0ZXJpYWwuaXNTaGFkZXJNYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHR2ZXJ0ZXhTaGFkZXIgPSB1bnJvbGxMb29wcyggdmVydGV4U2hhZGVyICk7XFxuXFx0XFx0XFx0ZnJhZ21lbnRTaGFkZXIgPSB1bnJvbGxMb29wcyggZnJhZ21lbnRTaGFkZXIgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dmFyIHZlcnRleEdsc2wgPSBwcmVmaXhWZXJ0ZXggKyB2ZXJ0ZXhTaGFkZXI7XFxuXFx0XFx0dmFyIGZyYWdtZW50R2xzbCA9IHByZWZpeEZyYWdtZW50ICsgZnJhZ21lbnRTaGFkZXI7XFxuXFxuXFx0XFx0Ly8gY29uc29sZS5sb2coICcqVkVSVEVYKicsIHZlcnRleEdsc2wgKTtcXG5cXHRcXHQvLyBjb25zb2xlLmxvZyggJypGUkFHTUVOVConLCBmcmFnbWVudEdsc2wgKTtcXG5cXG5cXHRcXHR2YXIgZ2xWZXJ0ZXhTaGFkZXIgPSBXZWJHTFNoYWRlciggZ2wsIGdsLlZFUlRFWF9TSEFERVIsIHZlcnRleEdsc2wgKTtcXG5cXHRcXHR2YXIgZ2xGcmFnbWVudFNoYWRlciA9IFdlYkdMU2hhZGVyKCBnbCwgZ2wuRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudEdsc2wgKTtcXG5cXG5cXHRcXHRnbC5hdHRhY2hTaGFkZXIoIHByb2dyYW0sIGdsVmVydGV4U2hhZGVyICk7XFxuXFx0XFx0Z2wuYXR0YWNoU2hhZGVyKCBwcm9ncmFtLCBnbEZyYWdtZW50U2hhZGVyICk7XFxuXFxuXFx0XFx0Ly8gRm9yY2UgYSBwYXJ0aWN1bGFyIGF0dHJpYnV0ZSB0byBpbmRleCAwLlxcblxcblxcdFxcdGlmICggbWF0ZXJpYWwuaW5kZXgwQXR0cmlidXRlTmFtZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdGdsLmJpbmRBdHRyaWJMb2NhdGlvbiggcHJvZ3JhbSwgMCwgbWF0ZXJpYWwuaW5kZXgwQXR0cmlidXRlTmFtZSApO1xcblxcblxcdFxcdH0gZWxzZSBpZiAoIHBhcmFtZXRlcnMubW9ycGhUYXJnZXRzID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdC8vIHByb2dyYW1zIHdpdGggbW9ycGhUYXJnZXRzIGRpc3BsYWNlIHBvc2l0aW9uIG91dCBvZiBhdHRyaWJ1dGUgMFxcblxcdFxcdFxcdGdsLmJpbmRBdHRyaWJMb2NhdGlvbiggcHJvZ3JhbSwgMCwgJ3Bvc2l0aW9uJyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRnbC5saW5rUHJvZ3JhbSggcHJvZ3JhbSApO1xcblxcblxcdFxcdHZhciBwcm9ncmFtTG9nID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2coIHByb2dyYW0gKTtcXG5cXHRcXHR2YXIgdmVydGV4TG9nID0gZ2wuZ2V0U2hhZGVySW5mb0xvZyggZ2xWZXJ0ZXhTaGFkZXIgKTtcXG5cXHRcXHR2YXIgZnJhZ21lbnRMb2cgPSBnbC5nZXRTaGFkZXJJbmZvTG9nKCBnbEZyYWdtZW50U2hhZGVyICk7XFxuXFxuXFx0XFx0dmFyIHJ1bm5hYmxlID0gdHJ1ZTtcXG5cXHRcXHR2YXIgaGF2ZURpYWdub3N0aWNzID0gdHJ1ZTtcXG5cXG5cXHRcXHQvLyBjb25zb2xlLmxvZyggJyoqVkVSVEVYKionLCBnbC5nZXRFeHRlbnNpb24oICdXRUJHTF9kZWJ1Z19zaGFkZXJzJyApLmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UoIGdsVmVydGV4U2hhZGVyICkgKTtcXG5cXHRcXHQvLyBjb25zb2xlLmxvZyggJyoqRlJBR01FTlQqKicsIGdsLmdldEV4dGVuc2lvbiggJ1dFQkdMX2RlYnVnX3NoYWRlcnMnICkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZSggZ2xGcmFnbWVudFNoYWRlciApICk7XFxuXFxuXFx0XFx0aWYgKCBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKCBwcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyApID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRydW5uYWJsZSA9IGZhbHNlO1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5XZWJHTFByb2dyYW06IHNoYWRlciBlcnJvcjogJywgZ2wuZ2V0RXJyb3IoKSwgJ2dsLlZBTElEQVRFX1NUQVRVUycsIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoIHByb2dyYW0sIGdsLlZBTElEQVRFX1NUQVRVUyApLCAnZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cnLCBwcm9ncmFtTG9nLCB2ZXJ0ZXhMb2csIGZyYWdtZW50TG9nICk7XFxuXFxuXFx0XFx0fSBlbHNlIGlmICggcHJvZ3JhbUxvZyAhPT0gJycgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xQcm9ncmFtOiBnbC5nZXRQcm9ncmFtSW5mb0xvZygpJywgcHJvZ3JhbUxvZyApO1xcblxcblxcdFxcdH0gZWxzZSBpZiAoIHZlcnRleExvZyA9PT0gJycgfHwgZnJhZ21lbnRMb2cgPT09ICcnICkge1xcblxcblxcdFxcdFxcdGhhdmVEaWFnbm9zdGljcyA9IGZhbHNlO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRpZiAoIGhhdmVEaWFnbm9zdGljcyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmRpYWdub3N0aWNzID0ge1xcblxcblxcdFxcdFxcdFxcdHJ1bm5hYmxlOiBydW5uYWJsZSxcXG5cXHRcXHRcXHRcXHRtYXRlcmlhbDogbWF0ZXJpYWwsXFxuXFxuXFx0XFx0XFx0XFx0cHJvZ3JhbUxvZzogcHJvZ3JhbUxvZyxcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ZXhTaGFkZXI6IHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsb2c6IHZlcnRleExvZyxcXG5cXHRcXHRcXHRcXHRcXHRwcmVmaXg6IHByZWZpeFZlcnRleFxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0ZnJhZ21lbnRTaGFkZXI6IHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsb2c6IGZyYWdtZW50TG9nLFxcblxcdFxcdFxcdFxcdFxcdHByZWZpeDogcHJlZml4RnJhZ21lbnRcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gY2xlYW4gdXBcXG5cXG5cXHRcXHRnbC5kZWxldGVTaGFkZXIoIGdsVmVydGV4U2hhZGVyICk7XFxuXFx0XFx0Z2wuZGVsZXRlU2hhZGVyKCBnbEZyYWdtZW50U2hhZGVyICk7XFxuXFxuXFx0XFx0Ly8gc2V0IHVwIGNhY2hpbmcgZm9yIHVuaWZvcm0gbG9jYXRpb25zXFxuXFxuXFx0XFx0dmFyIGNhY2hlZFVuaWZvcm1zO1xcblxcblxcdFxcdHRoaXMuZ2V0VW5pZm9ybXMgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBjYWNoZWRVbmlmb3JtcyA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNhY2hlZFVuaWZvcm1zID0gbmV3IFdlYkdMVW5pZm9ybXMoIGdsLCBwcm9ncmFtLCByZW5kZXJlciApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gY2FjaGVkVW5pZm9ybXM7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHQvLyBzZXQgdXAgY2FjaGluZyBmb3IgYXR0cmlidXRlIGxvY2F0aW9uc1xcblxcblxcdFxcdHZhciBjYWNoZWRBdHRyaWJ1dGVzO1xcblxcblxcdFxcdHRoaXMuZ2V0QXR0cmlidXRlcyA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGNhY2hlZEF0dHJpYnV0ZXMgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjYWNoZWRBdHRyaWJ1dGVzID0gZmV0Y2hBdHRyaWJ1dGVMb2NhdGlvbnMoIGdsLCBwcm9ncmFtICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBjYWNoZWRBdHRyaWJ1dGVzO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0Ly8gZnJlZSByZXNvdXJjZVxcblxcblxcdFxcdHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRnbC5kZWxldGVQcm9ncmFtKCBwcm9ncmFtICk7XFxuXFx0XFx0XFx0dGhpcy5wcm9ncmFtID0gdW5kZWZpbmVkO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0Ly8gREVQUkVDQVRFRFxcblxcblxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCB0aGlzLCB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXM6IHtcXG5cXHRcXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFByb2dyYW06IC51bmlmb3JtcyBpcyBub3cgLmdldFVuaWZvcm1zKCkuJyApO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmdldFVuaWZvcm1zKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0YXR0cmlidXRlczoge1xcblxcdFxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUHJvZ3JhbTogLmF0dHJpYnV0ZXMgaXMgbm93IC5nZXRBdHRyaWJ1dGVzKCkuJyApO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZXMoKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0gKTtcXG5cXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHRoaXMuaWQgPSBwcm9ncmFtSWRDb3VudCArKztcXG5cXHRcXHR0aGlzLmNvZGUgPSBjb2RlO1xcblxcdFxcdHRoaXMudXNlZFRpbWVzID0gMTtcXG5cXHRcXHR0aGlzLnByb2dyYW0gPSBwcm9ncmFtO1xcblxcdFxcdHRoaXMudmVydGV4U2hhZGVyID0gZ2xWZXJ0ZXhTaGFkZXI7XFxuXFx0XFx0dGhpcy5mcmFnbWVudFNoYWRlciA9IGdsRnJhZ21lbnRTaGFkZXI7XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fVxcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gV2ViR0xQcm9ncmFtcyggcmVuZGVyZXIsIGV4dGVuc2lvbnMsIGNhcGFiaWxpdGllcyApIHtcXG5cXG5cXHRcXHR2YXIgcHJvZ3JhbXMgPSBbXTtcXG5cXG5cXHRcXHR2YXIgc2hhZGVySURzID0ge1xcblxcdFxcdFxcdE1lc2hEZXB0aE1hdGVyaWFsOiAnZGVwdGgnLFxcblxcdFxcdFxcdE1lc2hEaXN0YW5jZU1hdGVyaWFsOiAnZGlzdGFuY2VSR0JBJyxcXG5cXHRcXHRcXHRNZXNoTm9ybWFsTWF0ZXJpYWw6ICdub3JtYWwnLFxcblxcdFxcdFxcdE1lc2hCYXNpY01hdGVyaWFsOiAnYmFzaWMnLFxcblxcdFxcdFxcdE1lc2hMYW1iZXJ0TWF0ZXJpYWw6ICdsYW1iZXJ0JyxcXG5cXHRcXHRcXHRNZXNoUGhvbmdNYXRlcmlhbDogJ3Bob25nJyxcXG5cXHRcXHRcXHRNZXNoVG9vbk1hdGVyaWFsOiAncGhvbmcnLFxcblxcdFxcdFxcdE1lc2hTdGFuZGFyZE1hdGVyaWFsOiAncGh5c2ljYWwnLFxcblxcdFxcdFxcdE1lc2hQaHlzaWNhbE1hdGVyaWFsOiAncGh5c2ljYWwnLFxcblxcdFxcdFxcdExpbmVCYXNpY01hdGVyaWFsOiAnYmFzaWMnLFxcblxcdFxcdFxcdExpbmVEYXNoZWRNYXRlcmlhbDogJ2Rhc2hlZCcsXFxuXFx0XFx0XFx0UG9pbnRzTWF0ZXJpYWw6ICdwb2ludHMnLFxcblxcdFxcdFxcdFNoYWRvd01hdGVyaWFsOiAnc2hhZG93J1xcblxcdFxcdH07XFxuXFxuXFx0XFx0dmFyIHBhcmFtZXRlck5hbWVzID0gW1xcblxcdFxcdFxcdFxcXCJwcmVjaXNpb25cXFwiLCBcXFwic3VwcG9ydHNWZXJ0ZXhUZXh0dXJlc1xcXCIsIFxcXCJtYXBcXFwiLCBcXFwibWFwRW5jb2RpbmdcXFwiLCBcXFwiZW52TWFwXFxcIiwgXFxcImVudk1hcE1vZGVcXFwiLCBcXFwiZW52TWFwRW5jb2RpbmdcXFwiLFxcblxcdFxcdFxcdFxcXCJsaWdodE1hcFxcXCIsIFxcXCJhb01hcFxcXCIsIFxcXCJlbWlzc2l2ZU1hcFxcXCIsIFxcXCJlbWlzc2l2ZU1hcEVuY29kaW5nXFxcIiwgXFxcImJ1bXBNYXBcXFwiLCBcXFwibm9ybWFsTWFwXFxcIiwgXFxcImRpc3BsYWNlbWVudE1hcFxcXCIsIFxcXCJzcGVjdWxhck1hcFxcXCIsXFxuXFx0XFx0XFx0XFxcInJvdWdobmVzc01hcFxcXCIsIFxcXCJtZXRhbG5lc3NNYXBcXFwiLCBcXFwiZ3JhZGllbnRNYXBcXFwiLFxcblxcdFxcdFxcdFxcXCJhbHBoYU1hcFxcXCIsIFxcXCJjb21iaW5lXFxcIiwgXFxcInZlcnRleENvbG9yc1xcXCIsIFxcXCJmb2dcXFwiLCBcXFwidXNlRm9nXFxcIiwgXFxcImZvZ0V4cFxcXCIsXFxuXFx0XFx0XFx0XFxcImZsYXRTaGFkaW5nXFxcIiwgXFxcInNpemVBdHRlbnVhdGlvblxcXCIsIFxcXCJsb2dhcml0aG1pY0RlcHRoQnVmZmVyXFxcIiwgXFxcInNraW5uaW5nXFxcIixcXG5cXHRcXHRcXHRcXFwibWF4Qm9uZXNcXFwiLCBcXFwidXNlVmVydGV4VGV4dHVyZVxcXCIsIFxcXCJtb3JwaFRhcmdldHNcXFwiLCBcXFwibW9ycGhOb3JtYWxzXFxcIixcXG5cXHRcXHRcXHRcXFwibWF4TW9ycGhUYXJnZXRzXFxcIiwgXFxcIm1heE1vcnBoTm9ybWFsc1xcXCIsIFxcXCJwcmVtdWx0aXBsaWVkQWxwaGFcXFwiLFxcblxcdFxcdFxcdFxcXCJudW1EaXJMaWdodHNcXFwiLCBcXFwibnVtUG9pbnRMaWdodHNcXFwiLCBcXFwibnVtU3BvdExpZ2h0c1xcXCIsIFxcXCJudW1IZW1pTGlnaHRzXFxcIiwgXFxcIm51bVJlY3RBcmVhTGlnaHRzXFxcIixcXG5cXHRcXHRcXHRcXFwic2hhZG93TWFwRW5hYmxlZFxcXCIsIFxcXCJzaGFkb3dNYXBUeXBlXFxcIiwgXFxcInRvbmVNYXBwaW5nXFxcIiwgJ3BoeXNpY2FsbHlDb3JyZWN0TGlnaHRzJyxcXG5cXHRcXHRcXHRcXFwiYWxwaGFUZXN0XFxcIiwgXFxcImRvdWJsZVNpZGVkXFxcIiwgXFxcImZsaXBTaWRlZFxcXCIsIFxcXCJudW1DbGlwcGluZ1BsYW5lc1xcXCIsIFxcXCJudW1DbGlwSW50ZXJzZWN0aW9uXFxcIiwgXFxcImRlcHRoUGFja2luZ1xcXCIsIFxcXCJkaXRoZXJpbmdcXFwiXFxuXFx0XFx0XTtcXG5cXG5cXG5cXHRcXHRmdW5jdGlvbiBhbGxvY2F0ZUJvbmVzKCBvYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHNrZWxldG9uID0gb2JqZWN0LnNrZWxldG9uO1xcblxcdFxcdFxcdHZhciBib25lcyA9IHNrZWxldG9uLmJvbmVzO1xcblxcblxcdFxcdFxcdGlmICggY2FwYWJpbGl0aWVzLmZsb2F0VmVydGV4VGV4dHVyZXMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIDEwMjQ7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBkZWZhdWx0IGZvciB3aGVuIG9iamVjdCBpcyBub3Qgc3BlY2lmaWVkXFxuXFx0XFx0XFx0XFx0Ly8gKCBmb3IgZXhhbXBsZSB3aGVuIHByZWJ1aWxkaW5nIHNoYWRlciB0byBiZSB1c2VkIHdpdGggbXVsdGlwbGUgb2JqZWN0cyApXFxuXFx0XFx0XFx0XFx0Ly9cXG5cXHRcXHRcXHRcXHQvLyAgLSBsZWF2ZSBzb21lIGV4dHJhIHNwYWNlIGZvciBvdGhlciB1bmlmb3Jtc1xcblxcdFxcdFxcdFxcdC8vICAtIGxpbWl0IGhlcmUgaXMgQU5HTEUncyAyNTQgbWF4IHVuaWZvcm0gdmVjdG9yc1xcblxcdFxcdFxcdFxcdC8vICAgICh1cCB0byA1NCBzaG91bGQgYmUgc2FmZSlcXG5cXG5cXHRcXHRcXHRcXHR2YXIgblZlcnRleFVuaWZvcm1zID0gY2FwYWJpbGl0aWVzLm1heFZlcnRleFVuaWZvcm1zO1xcblxcdFxcdFxcdFxcdHZhciBuVmVydGV4TWF0cmljZXMgPSBNYXRoLmZsb29yKCAoIG5WZXJ0ZXhVbmlmb3JtcyAtIDIwICkgLyA0ICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG1heEJvbmVzID0gTWF0aC5taW4oIG5WZXJ0ZXhNYXRyaWNlcywgYm9uZXMubGVuZ3RoICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXhCb25lcyA8IGJvbmVzLmxlbmd0aCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiBTa2VsZXRvbiBoYXMgJyArIGJvbmVzLmxlbmd0aCArICcgYm9uZXMuIFRoaXMgR1BVIHN1cHBvcnRzICcgKyBtYXhCb25lcyArICcuJyApO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiAwO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gbWF4Qm9uZXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwKCBtYXAsIGdhbW1hT3ZlcnJpZGVMaW5lYXIgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGVuY29kaW5nO1xcblxcblxcdFxcdFxcdGlmICggISBtYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZW5jb2RpbmcgPSBMaW5lYXJFbmNvZGluZztcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXAuaXNUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdGVuY29kaW5nID0gbWFwLmVuY29kaW5nO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hcC5pc1dlYkdMUmVuZGVyVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggXFxcIlRIUkVFLldlYkdMUHJvZ3JhbXMuZ2V0VGV4dHVyZUVuY29kaW5nRnJvbU1hcDogZG9uJ3QgdXNlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC5cXFwiICk7XFxuXFx0XFx0XFx0XFx0ZW5jb2RpbmcgPSBtYXAudGV4dHVyZS5lbmNvZGluZztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gYWRkIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBXZWJHTFJlbmRlcmVyLmdhbW1hSW5wdXQvZ2FtbWFPdXRwdXQgcGFyYW1ldGVyLCBzaG91bGQgcHJvYmFibHkgYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LlxcblxcdFxcdFxcdGlmICggZW5jb2RpbmcgPT09IExpbmVhckVuY29kaW5nICYmIGdhbW1hT3ZlcnJpZGVMaW5lYXIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZW5jb2RpbmcgPSBHYW1tYUVuY29kaW5nO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gZW5jb2Rpbmc7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHRoaXMuZ2V0UGFyYW1ldGVycyA9IGZ1bmN0aW9uICggbWF0ZXJpYWwsIGxpZ2h0cywgc2hhZG93cywgZm9nLCBuQ2xpcFBsYW5lcywgbkNsaXBJbnRlcnNlY3Rpb24sIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgc2hhZGVySUQgPSBzaGFkZXJJRHNbIG1hdGVyaWFsLnR5cGUgXTtcXG5cXG5cXHRcXHRcXHQvLyBoZXVyaXN0aWNzIHRvIGNyZWF0ZSBzaGFkZXIgcGFyYW1ldGVycyBhY2NvcmRpbmcgdG8gbGlnaHRzIGluIHRoZSBzY2VuZVxcblxcdFxcdFxcdC8vIChub3QgdG8gYmxvdyBvdmVyIG1heExpZ2h0cyBidWRnZXQpXFxuXFxuXFx0XFx0XFx0dmFyIG1heEJvbmVzID0gb2JqZWN0LmlzU2tpbm5lZE1lc2ggPyBhbGxvY2F0ZUJvbmVzKCBvYmplY3QgKSA6IDA7XFxuXFx0XFx0XFx0dmFyIHByZWNpc2lvbiA9IGNhcGFiaWxpdGllcy5wcmVjaXNpb247XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5wcmVjaXNpb24gIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cHJlY2lzaW9uID0gY2FwYWJpbGl0aWVzLmdldE1heFByZWNpc2lvbiggbWF0ZXJpYWwucHJlY2lzaW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBwcmVjaXNpb24gIT09IG1hdGVyaWFsLnByZWNpc2lvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFByb2dyYW0uZ2V0UGFyYW1ldGVyczonLCBtYXRlcmlhbC5wcmVjaXNpb24sICdub3Qgc3VwcG9ydGVkLCB1c2luZycsIHByZWNpc2lvbiwgJ2luc3RlYWQuJyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGN1cnJlbnRSZW5kZXJUYXJnZXQgPSByZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtcXG5cXG5cXHRcXHRcXHR2YXIgcGFyYW1ldGVycyA9IHtcXG5cXG5cXHRcXHRcXHRcXHRzaGFkZXJJRDogc2hhZGVySUQsXFxuXFxuXFx0XFx0XFx0XFx0cHJlY2lzaW9uOiBwcmVjaXNpb24sXFxuXFx0XFx0XFx0XFx0c3VwcG9ydHNWZXJ0ZXhUZXh0dXJlczogY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzLFxcblxcdFxcdFxcdFxcdG91dHB1dEVuY29kaW5nOiBnZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwKCAoICEgY3VycmVudFJlbmRlclRhcmdldCApID8gbnVsbCA6IGN1cnJlbnRSZW5kZXJUYXJnZXQudGV4dHVyZSwgcmVuZGVyZXIuZ2FtbWFPdXRwdXQgKSxcXG5cXHRcXHRcXHRcXHRtYXA6ICEhIG1hdGVyaWFsLm1hcCxcXG5cXHRcXHRcXHRcXHRtYXBFbmNvZGluZzogZ2V0VGV4dHVyZUVuY29kaW5nRnJvbU1hcCggbWF0ZXJpYWwubWFwLCByZW5kZXJlci5nYW1tYUlucHV0ICksXFxuXFx0XFx0XFx0XFx0ZW52TWFwOiAhISBtYXRlcmlhbC5lbnZNYXAsXFxuXFx0XFx0XFx0XFx0ZW52TWFwTW9kZTogbWF0ZXJpYWwuZW52TWFwICYmIG1hdGVyaWFsLmVudk1hcC5tYXBwaW5nLFxcblxcdFxcdFxcdFxcdGVudk1hcEVuY29kaW5nOiBnZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwKCBtYXRlcmlhbC5lbnZNYXAsIHJlbmRlcmVyLmdhbW1hSW5wdXQgKSxcXG5cXHRcXHRcXHRcXHRlbnZNYXBDdWJlVVY6ICggISEgbWF0ZXJpYWwuZW52TWFwICkgJiYgKCAoIG1hdGVyaWFsLmVudk1hcC5tYXBwaW5nID09PSBDdWJlVVZSZWZsZWN0aW9uTWFwcGluZyApIHx8ICggbWF0ZXJpYWwuZW52TWFwLm1hcHBpbmcgPT09IEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nICkgKSxcXG5cXHRcXHRcXHRcXHRsaWdodE1hcDogISEgbWF0ZXJpYWwubGlnaHRNYXAsXFxuXFx0XFx0XFx0XFx0YW9NYXA6ICEhIG1hdGVyaWFsLmFvTWFwLFxcblxcdFxcdFxcdFxcdGVtaXNzaXZlTWFwOiAhISBtYXRlcmlhbC5lbWlzc2l2ZU1hcCxcXG5cXHRcXHRcXHRcXHRlbWlzc2l2ZU1hcEVuY29kaW5nOiBnZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwKCBtYXRlcmlhbC5lbWlzc2l2ZU1hcCwgcmVuZGVyZXIuZ2FtbWFJbnB1dCApLFxcblxcdFxcdFxcdFxcdGJ1bXBNYXA6ICEhIG1hdGVyaWFsLmJ1bXBNYXAsXFxuXFx0XFx0XFx0XFx0bm9ybWFsTWFwOiAhISBtYXRlcmlhbC5ub3JtYWxNYXAsXFxuXFx0XFx0XFx0XFx0ZGlzcGxhY2VtZW50TWFwOiAhISBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXAsXFxuXFx0XFx0XFx0XFx0cm91Z2huZXNzTWFwOiAhISBtYXRlcmlhbC5yb3VnaG5lc3NNYXAsXFxuXFx0XFx0XFx0XFx0bWV0YWxuZXNzTWFwOiAhISBtYXRlcmlhbC5tZXRhbG5lc3NNYXAsXFxuXFx0XFx0XFx0XFx0c3BlY3VsYXJNYXA6ICEhIG1hdGVyaWFsLnNwZWN1bGFyTWFwLFxcblxcdFxcdFxcdFxcdGFscGhhTWFwOiAhISBtYXRlcmlhbC5hbHBoYU1hcCxcXG5cXG5cXHRcXHRcXHRcXHRncmFkaWVudE1hcDogISEgbWF0ZXJpYWwuZ3JhZGllbnRNYXAsXFxuXFxuXFx0XFx0XFx0XFx0Y29tYmluZTogbWF0ZXJpYWwuY29tYmluZSxcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ZXhDb2xvcnM6IG1hdGVyaWFsLnZlcnRleENvbG9ycyxcXG5cXG5cXHRcXHRcXHRcXHRmb2c6ICEhIGZvZyxcXG5cXHRcXHRcXHRcXHR1c2VGb2c6IG1hdGVyaWFsLmZvZyxcXG5cXHRcXHRcXHRcXHRmb2dFeHA6ICggZm9nICYmIGZvZy5pc0ZvZ0V4cDIgKSxcXG5cXG5cXHRcXHRcXHRcXHRmbGF0U2hhZGluZzogbWF0ZXJpYWwuZmxhdFNoYWRpbmcsXFxuXFxuXFx0XFx0XFx0XFx0c2l6ZUF0dGVudWF0aW9uOiBtYXRlcmlhbC5zaXplQXR0ZW51YXRpb24sXFxuXFx0XFx0XFx0XFx0bG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjogY2FwYWJpbGl0aWVzLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsXFxuXFxuXFx0XFx0XFx0XFx0c2tpbm5pbmc6IG1hdGVyaWFsLnNraW5uaW5nICYmIG1heEJvbmVzID4gMCxcXG5cXHRcXHRcXHRcXHRtYXhCb25lczogbWF4Qm9uZXMsXFxuXFx0XFx0XFx0XFx0dXNlVmVydGV4VGV4dHVyZTogY2FwYWJpbGl0aWVzLmZsb2F0VmVydGV4VGV4dHVyZXMsXFxuXFxuXFx0XFx0XFx0XFx0bW9ycGhUYXJnZXRzOiBtYXRlcmlhbC5tb3JwaFRhcmdldHMsXFxuXFx0XFx0XFx0XFx0bW9ycGhOb3JtYWxzOiBtYXRlcmlhbC5tb3JwaE5vcm1hbHMsXFxuXFx0XFx0XFx0XFx0bWF4TW9ycGhUYXJnZXRzOiByZW5kZXJlci5tYXhNb3JwaFRhcmdldHMsXFxuXFx0XFx0XFx0XFx0bWF4TW9ycGhOb3JtYWxzOiByZW5kZXJlci5tYXhNb3JwaE5vcm1hbHMsXFxuXFxuXFx0XFx0XFx0XFx0bnVtRGlyTGlnaHRzOiBsaWdodHMuZGlyZWN0aW9uYWwubGVuZ3RoLFxcblxcdFxcdFxcdFxcdG51bVBvaW50TGlnaHRzOiBsaWdodHMucG9pbnQubGVuZ3RoLFxcblxcdFxcdFxcdFxcdG51bVNwb3RMaWdodHM6IGxpZ2h0cy5zcG90Lmxlbmd0aCxcXG5cXHRcXHRcXHRcXHRudW1SZWN0QXJlYUxpZ2h0czogbGlnaHRzLnJlY3RBcmVhLmxlbmd0aCxcXG5cXHRcXHRcXHRcXHRudW1IZW1pTGlnaHRzOiBsaWdodHMuaGVtaS5sZW5ndGgsXFxuXFxuXFx0XFx0XFx0XFx0bnVtQ2xpcHBpbmdQbGFuZXM6IG5DbGlwUGxhbmVzLFxcblxcdFxcdFxcdFxcdG51bUNsaXBJbnRlcnNlY3Rpb246IG5DbGlwSW50ZXJzZWN0aW9uLFxcblxcblxcdFxcdFxcdFxcdGRpdGhlcmluZzogbWF0ZXJpYWwuZGl0aGVyaW5nLFxcblxcblxcdFxcdFxcdFxcdHNoYWRvd01hcEVuYWJsZWQ6IHJlbmRlcmVyLnNoYWRvd01hcC5lbmFibGVkICYmIG9iamVjdC5yZWNlaXZlU2hhZG93ICYmIHNoYWRvd3MubGVuZ3RoID4gMCxcXG5cXHRcXHRcXHRcXHRzaGFkb3dNYXBUeXBlOiByZW5kZXJlci5zaGFkb3dNYXAudHlwZSxcXG5cXG5cXHRcXHRcXHRcXHR0b25lTWFwcGluZzogcmVuZGVyZXIudG9uZU1hcHBpbmcsXFxuXFx0XFx0XFx0XFx0cGh5c2ljYWxseUNvcnJlY3RMaWdodHM6IHJlbmRlcmVyLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLFxcblxcblxcdFxcdFxcdFxcdHByZW11bHRpcGxpZWRBbHBoYTogbWF0ZXJpYWwucHJlbXVsdGlwbGllZEFscGhhLFxcblxcblxcdFxcdFxcdFxcdGFscGhhVGVzdDogbWF0ZXJpYWwuYWxwaGFUZXN0LFxcblxcdFxcdFxcdFxcdGRvdWJsZVNpZGVkOiBtYXRlcmlhbC5zaWRlID09PSBEb3VibGVTaWRlLFxcblxcdFxcdFxcdFxcdGZsaXBTaWRlZDogbWF0ZXJpYWwuc2lkZSA9PT0gQmFja1NpZGUsXFxuXFxuXFx0XFx0XFx0XFx0ZGVwdGhQYWNraW5nOiAoIG1hdGVyaWFsLmRlcHRoUGFja2luZyAhPT0gdW5kZWZpbmVkICkgPyBtYXRlcmlhbC5kZXB0aFBhY2tpbmcgOiBmYWxzZVxcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHBhcmFtZXRlcnM7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmdldFByb2dyYW1Db2RlID0gZnVuY3Rpb24gKCBtYXRlcmlhbCwgcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYXJyYXkgPSBbXTtcXG5cXG5cXHRcXHRcXHRpZiAoIHBhcmFtZXRlcnMuc2hhZGVySUQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YXJyYXkucHVzaCggcGFyYW1ldGVycy5zaGFkZXJJRCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0YXJyYXkucHVzaCggbWF0ZXJpYWwuZnJhZ21lbnRTaGFkZXIgKTtcXG5cXHRcXHRcXHRcXHRhcnJheS5wdXNoKCBtYXRlcmlhbC52ZXJ0ZXhTaGFkZXIgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5kZWZpbmVzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIG5hbWUgaW4gbWF0ZXJpYWwuZGVmaW5lcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRhcnJheS5wdXNoKCBuYW1lICk7XFxuXFx0XFx0XFx0XFx0XFx0YXJyYXkucHVzaCggbWF0ZXJpYWwuZGVmaW5lc1sgbmFtZSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJOYW1lcy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YXJyYXkucHVzaCggcGFyYW1ldGVyc1sgcGFyYW1ldGVyTmFtZXNbIGkgXSBdICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGFycmF5LnB1c2goIG1hdGVyaWFsLm9uQmVmb3JlQ29tcGlsZS50b1N0cmluZygpICk7XFxuXFxuXFx0XFx0XFx0YXJyYXkucHVzaCggcmVuZGVyZXIuZ2FtbWFPdXRwdXQgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYXJyYXkuam9pbigpO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5hY3F1aXJlUHJvZ3JhbSA9IGZ1bmN0aW9uICggbWF0ZXJpYWwsIHNoYWRlciwgcGFyYW1ldGVycywgY29kZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcHJvZ3JhbTtcXG5cXG5cXHRcXHRcXHQvLyBDaGVjayBpZiBjb2RlIGhhcyBiZWVuIGFscmVhZHkgY29tcGlsZWRcXG5cXHRcXHRcXHRmb3IgKCB2YXIgcCA9IDAsIHBsID0gcHJvZ3JhbXMubGVuZ3RoOyBwIDwgcGw7IHAgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHByb2dyYW1JbmZvID0gcHJvZ3JhbXNbIHAgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHByb2dyYW1JbmZvLmNvZGUgPT09IGNvZGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cHJvZ3JhbSA9IHByb2dyYW1JbmZvO1xcblxcdFxcdFxcdFxcdFxcdCsrIHByb2dyYW0udXNlZFRpbWVzO1xcblxcblxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBwcm9ncmFtID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cHJvZ3JhbSA9IG5ldyBXZWJHTFByb2dyYW0oIHJlbmRlcmVyLCBleHRlbnNpb25zLCBjb2RlLCBtYXRlcmlhbCwgc2hhZGVyLCBwYXJhbWV0ZXJzICk7XFxuXFx0XFx0XFx0XFx0cHJvZ3JhbXMucHVzaCggcHJvZ3JhbSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gcHJvZ3JhbTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMucmVsZWFzZVByb2dyYW0gPSBmdW5jdGlvbiAoIHByb2dyYW0gKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCAtLSBwcm9ncmFtLnVzZWRUaW1lcyA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBSZW1vdmUgZnJvbSB1bm9yZGVyZWQgc2V0XFxuXFx0XFx0XFx0XFx0dmFyIGkgPSBwcm9ncmFtcy5pbmRleE9mKCBwcm9ncmFtICk7XFxuXFx0XFx0XFx0XFx0cHJvZ3JhbXNbIGkgXSA9IHByb2dyYW1zWyBwcm9ncmFtcy5sZW5ndGggLSAxIF07XFxuXFx0XFx0XFx0XFx0cHJvZ3JhbXMucG9wKCk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gRnJlZSBXZWJHTCByZXNvdXJjZXNcXG5cXHRcXHRcXHRcXHRwcm9ncmFtLmRlc3Ryb3koKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHQvLyBFeHBvc2VkIGZvciByZXNvdXJjZSBtb25pdG9yaW5nICYgZXJyb3IgZmVlZGJhY2sgdmlhIHJlbmRlcmVyLmluZm86XFxuXFx0XFx0dGhpcy5wcm9ncmFtcyA9IHByb2dyYW1zO1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMVGV4dHVyZXMoIF9nbCwgZXh0ZW5zaW9ucywgc3RhdGUsIHByb3BlcnRpZXMsIGNhcGFiaWxpdGllcywgdXRpbHMsIGluZm9NZW1vcnkgKSB7XFxuXFxuXFx0XFx0dmFyIF9pc1dlYkdMMiA9ICggdHlwZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQgIT09ICd1bmRlZmluZWQnICYmIF9nbCBpbnN0YW5jZW9mIHdpbmRvdy5XZWJHTDJSZW5kZXJpbmdDb250ZXh0ICk7XFxuXFx0XFx0dmFyIF92aWRlb1RleHR1cmVzID0ge307XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHRmdW5jdGlvbiBjbGFtcFRvTWF4U2l6ZSggaW1hZ2UsIG1heFNpemUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBpbWFnZS53aWR0aCA+IG1heFNpemUgfHwgaW1hZ2UuaGVpZ2h0ID4gbWF4U2l6ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBXYXJuaW5nOiBTY2FsaW5nIHRocm91Z2ggdGhlIGNhbnZhcyB3aWxsIG9ubHkgd29yayB3aXRoIGltYWdlcyB0aGF0IHVzZVxcblxcdFxcdFxcdFxcdC8vIHByZW11bHRpcGxpZWQgYWxwaGEuXFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNjYWxlID0gbWF4U2l6ZSAvIE1hdGgubWF4KCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0ICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyggJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnY2FudmFzJyApO1xcblxcdFxcdFxcdFxcdGNhbnZhcy53aWR0aCA9IE1hdGguZmxvb3IoIGltYWdlLndpZHRoICogc2NhbGUgKTtcXG5cXHRcXHRcXHRcXHRjYW52YXMuaGVpZ2h0ID0gTWF0aC5mbG9vciggaW1hZ2UuaGVpZ2h0ICogc2NhbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCAnMmQnICk7XFxuXFx0XFx0XFx0XFx0Y29udGV4dC5kcmF3SW1hZ2UoIGltYWdlLCAwLCAwLCBpbWFnZS53aWR0aCwgaW1hZ2UuaGVpZ2h0LCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQgKTtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiBpbWFnZSBpcyB0b28gYmlnICgnICsgaW1hZ2Uud2lkdGggKyAneCcgKyBpbWFnZS5oZWlnaHQgKyAnKS4gUmVzaXplZCB0byAnICsgY2FudmFzLndpZHRoICsgJ3gnICsgY2FudmFzLmhlaWdodCwgaW1hZ2UgKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gY2FudmFzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gaW1hZ2U7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGlzUG93ZXJPZlR3byggaW1hZ2UgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIF9NYXRoLmlzUG93ZXJPZlR3byggaW1hZ2Uud2lkdGggKSAmJiBfTWF0aC5pc1Bvd2VyT2ZUd28oIGltYWdlLmhlaWdodCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBtYWtlUG93ZXJPZlR3byggaW1hZ2UgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBpbWFnZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQgfHwgaW1hZ2UgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCB8fCBpbWFnZSBpbnN0YW5jZW9mIEltYWdlQml0bWFwICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2NhbnZhcycgKTtcXG5cXHRcXHRcXHRcXHRjYW52YXMud2lkdGggPSBfTWF0aC5mbG9vclBvd2VyT2ZUd28oIGltYWdlLndpZHRoICk7XFxuXFx0XFx0XFx0XFx0Y2FudmFzLmhlaWdodCA9IF9NYXRoLmZsb29yUG93ZXJPZlR3byggaW1hZ2UuaGVpZ2h0ICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCggJzJkJyApO1xcblxcdFxcdFxcdFxcdGNvbnRleHQuZHJhd0ltYWdlKCBpbWFnZSwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0ICk7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogaW1hZ2UgaXMgbm90IHBvd2VyIG9mIHR3byAoJyArIGltYWdlLndpZHRoICsgJ3gnICsgaW1hZ2UuaGVpZ2h0ICsgJykuIFJlc2l6ZWQgdG8gJyArIGNhbnZhcy53aWR0aCArICd4JyArIGNhbnZhcy5oZWlnaHQsIGltYWdlICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGNhbnZhcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGltYWdlO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiB0ZXh0dXJlTmVlZHNQb3dlck9mVHdvKCB0ZXh0dXJlICkge1xcblxcblxcdFxcdFxcdHJldHVybiAoIHRleHR1cmUud3JhcFMgIT09IENsYW1wVG9FZGdlV3JhcHBpbmcgfHwgdGV4dHVyZS53cmFwVCAhPT0gQ2xhbXBUb0VkZ2VXcmFwcGluZyApIHx8XFxuXFx0XFx0XFx0XFx0KCB0ZXh0dXJlLm1pbkZpbHRlciAhPT0gTmVhcmVzdEZpbHRlciAmJiB0ZXh0dXJlLm1pbkZpbHRlciAhPT0gTGluZWFyRmlsdGVyICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHRleHR1cmVOZWVkc0dlbmVyYXRlTWlwbWFwcyggdGV4dHVyZSwgaXNQb3dlck9mVHdvICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcyAmJiBpc1Bvd2VyT2ZUd28gJiZcXG5cXHRcXHRcXHRcXHR0ZXh0dXJlLm1pbkZpbHRlciAhPT0gTmVhcmVzdEZpbHRlciAmJiB0ZXh0dXJlLm1pbkZpbHRlciAhPT0gTGluZWFyRmlsdGVyO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBGYWxsYmFjayBmaWx0ZXJzIGZvciBub24tcG93ZXItb2YtMiB0ZXh0dXJlc1xcblxcblxcdFxcdGZ1bmN0aW9uIGZpbHRlckZhbGxiYWNrKCBmICkge1xcblxcblxcdFxcdFxcdGlmICggZiA9PT0gTmVhcmVzdEZpbHRlciB8fCBmID09PSBOZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlciB8fCBmID09PSBOZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBfZ2wuTkVBUkVTVDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIF9nbC5MSU5FQVI7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vXFxuXFxuXFx0XFx0ZnVuY3Rpb24gb25UZXh0dXJlRGlzcG9zZSggZXZlbnQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRleHR1cmUgPSBldmVudC50YXJnZXQ7XFxuXFxuXFx0XFx0XFx0dGV4dHVyZS5yZW1vdmVFdmVudExpc3RlbmVyKCAnZGlzcG9zZScsIG9uVGV4dHVyZURpc3Bvc2UgKTtcXG5cXG5cXHRcXHRcXHRkZWFsbG9jYXRlVGV4dHVyZSggdGV4dHVyZSApO1xcblxcblxcdFxcdFxcdGlmICggdGV4dHVyZS5pc1ZpZGVvVGV4dHVyZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRkZWxldGUgX3ZpZGVvVGV4dHVyZXNbIHRleHR1cmUuaWQgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aW5mb01lbW9yeS50ZXh0dXJlcyAtLTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gb25SZW5kZXJUYXJnZXREaXNwb3NlKCBldmVudCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVuZGVyVGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xcblxcblxcdFxcdFxcdHJlbmRlclRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCAnZGlzcG9zZScsIG9uUmVuZGVyVGFyZ2V0RGlzcG9zZSApO1xcblxcblxcdFxcdFxcdGRlYWxsb2NhdGVSZW5kZXJUYXJnZXQoIHJlbmRlclRhcmdldCApO1xcblxcblxcdFxcdFxcdGluZm9NZW1vcnkudGV4dHVyZXMgLS07XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vXFxuXFxuXFx0XFx0ZnVuY3Rpb24gZGVhbGxvY2F0ZVRleHR1cmUoIHRleHR1cmUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRleHR1cmVQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5nZXQoIHRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRleHR1cmUuaW1hZ2UgJiYgdGV4dHVyZVByb3BlcnRpZXMuX19pbWFnZV9fd2ViZ2xUZXh0dXJlQ3ViZSApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBjdWJlIHRleHR1cmVcXG5cXG5cXHRcXHRcXHRcXHRfZ2wuZGVsZXRlVGV4dHVyZSggdGV4dHVyZVByb3BlcnRpZXMuX19pbWFnZV9fd2ViZ2xUZXh0dXJlQ3ViZSApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gMkQgdGV4dHVyZVxcblxcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZVByb3BlcnRpZXMuX193ZWJnbEluaXQgPT09IHVuZGVmaW5lZCApIHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHRfZ2wuZGVsZXRlVGV4dHVyZSggdGV4dHVyZVByb3BlcnRpZXMuX193ZWJnbFRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gcmVtb3ZlIGFsbCB3ZWJnbCBwcm9wZXJ0aWVzXFxuXFx0XFx0XFx0cHJvcGVydGllcy5yZW1vdmUoIHRleHR1cmUgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZGVhbGxvY2F0ZVJlbmRlclRhcmdldCggcmVuZGVyVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5nZXQoIHJlbmRlclRhcmdldCApO1xcblxcdFxcdFxcdHZhciB0ZXh0dXJlUHJvcGVydGllcyA9IHByb3BlcnRpZXMuZ2V0KCByZW5kZXJUYXJnZXQudGV4dHVyZSApO1xcblxcblxcdFxcdFxcdGlmICggISByZW5kZXJUYXJnZXQgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0aWYgKCB0ZXh0dXJlUHJvcGVydGllcy5fX3dlYmdsVGV4dHVyZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdF9nbC5kZWxldGVUZXh0dXJlKCB0ZXh0dXJlUHJvcGVydGllcy5fX3dlYmdsVGV4dHVyZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZS5kaXNwb3NlKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggcmVuZGVyVGFyZ2V0LmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlICkge1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IDY7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0X2dsLmRlbGV0ZUZyYW1lYnVmZmVyKCByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLl9fd2ViZ2xGcmFtZWJ1ZmZlclsgaSBdICk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLl9fd2ViZ2xEZXB0aGJ1ZmZlciApIF9nbC5kZWxldGVSZW5kZXJidWZmZXIoIHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbERlcHRoYnVmZmVyWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRfZ2wuZGVsZXRlRnJhbWVidWZmZXIoIHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbEZyYW1lYnVmZmVyICk7XFxuXFx0XFx0XFx0XFx0aWYgKCByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLl9fd2ViZ2xEZXB0aGJ1ZmZlciApIF9nbC5kZWxldGVSZW5kZXJidWZmZXIoIHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbERlcHRoYnVmZmVyICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHByb3BlcnRpZXMucmVtb3ZlKCByZW5kZXJUYXJnZXQudGV4dHVyZSApO1xcblxcdFxcdFxcdHByb3BlcnRpZXMucmVtb3ZlKCByZW5kZXJUYXJnZXQgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXG5cXG5cXHRcXHRmdW5jdGlvbiBzZXRUZXh0dXJlMkQoIHRleHR1cmUsIHNsb3QgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRleHR1cmVQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5nZXQoIHRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRleHR1cmUudmVyc2lvbiA+IDAgJiYgdGV4dHVyZVByb3BlcnRpZXMuX192ZXJzaW9uICE9PSB0ZXh0dXJlLnZlcnNpb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGltYWdlID0gdGV4dHVyZS5pbWFnZTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGltYWdlID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBtYXJrZWQgZm9yIHVwZGF0ZSBidXQgaW1hZ2UgaXMgdW5kZWZpbmVkJywgdGV4dHVyZSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIGltYWdlLmNvbXBsZXRlID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyBpbmNvbXBsZXRlJywgdGV4dHVyZSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dXBsb2FkVGV4dHVyZSggdGV4dHVyZVByb3BlcnRpZXMsIHRleHR1cmUsIHNsb3QgKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRzdGF0ZS5hY3RpdmVUZXh0dXJlKCBfZ2wuVEVYVFVSRTAgKyBzbG90ICk7XFxuXFx0XFx0XFx0c3RhdGUuYmluZFRleHR1cmUoIF9nbC5URVhUVVJFXzJELCB0ZXh0dXJlUHJvcGVydGllcy5fX3dlYmdsVGV4dHVyZSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBzZXRUZXh0dXJlQ3ViZSggdGV4dHVyZSwgc2xvdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGV4dHVyZVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmdldCggdGV4dHVyZSApO1xcblxcblxcdFxcdFxcdGlmICggdGV4dHVyZS5pbWFnZS5sZW5ndGggPT09IDYgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlLnZlcnNpb24gPiAwICYmIHRleHR1cmVQcm9wZXJ0aWVzLl9fdmVyc2lvbiAhPT0gdGV4dHVyZS52ZXJzaW9uICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggISB0ZXh0dXJlUHJvcGVydGllcy5fX2ltYWdlX193ZWJnbFRleHR1cmVDdWJlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRleHR1cmUuYWRkRXZlbnRMaXN0ZW5lciggJ2Rpc3Bvc2UnLCBvblRleHR1cmVEaXNwb3NlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZVByb3BlcnRpZXMuX19pbWFnZV9fd2ViZ2xUZXh0dXJlQ3ViZSA9IF9nbC5jcmVhdGVUZXh0dXJlKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aW5mb01lbW9yeS50ZXh0dXJlcyArKztcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUuYWN0aXZlVGV4dHVyZSggX2dsLlRFWFRVUkUwICsgc2xvdCApO1xcblxcdFxcdFxcdFxcdFxcdHN0YXRlLmJpbmRUZXh0dXJlKCBfZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZVByb3BlcnRpZXMuX19pbWFnZV9fd2ViZ2xUZXh0dXJlQ3ViZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdF9nbC5waXhlbFN0b3JlaSggX2dsLlVOUEFDS19GTElQX1lfV0VCR0wsIHRleHR1cmUuZmxpcFkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgaXNDb21wcmVzc2VkID0gKCB0ZXh0dXJlICYmIHRleHR1cmUuaXNDb21wcmVzc2VkVGV4dHVyZSApO1xcblxcdFxcdFxcdFxcdFxcdHZhciBpc0RhdGFUZXh0dXJlID0gKCB0ZXh0dXJlLmltYWdlWyAwIF0gJiYgdGV4dHVyZS5pbWFnZVsgMCBdLmlzRGF0YVRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgY3ViZUltYWdlID0gW107XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgNjsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoICEgaXNDb21wcmVzc2VkICYmICEgaXNEYXRhVGV4dHVyZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjdWJlSW1hZ2VbIGkgXSA9IGNsYW1wVG9NYXhTaXplKCB0ZXh0dXJlLmltYWdlWyBpIF0sIGNhcGFiaWxpdGllcy5tYXhDdWJlbWFwU2l6ZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3ViZUltYWdlWyBpIF0gPSBpc0RhdGFUZXh0dXJlID8gdGV4dHVyZS5pbWFnZVsgaSBdLmltYWdlIDogdGV4dHVyZS5pbWFnZVsgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGltYWdlID0gY3ViZUltYWdlWyAwIF0sXFxuXFx0XFx0XFx0XFx0XFx0XFx0aXNQb3dlck9mVHdvSW1hZ2UgPSBpc1Bvd2VyT2ZUd28oIGltYWdlICksXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2xGb3JtYXQgPSB1dGlscy5jb252ZXJ0KCB0ZXh0dXJlLmZvcm1hdCApLFxcblxcdFxcdFxcdFxcdFxcdFxcdGdsVHlwZSA9IHV0aWxzLmNvbnZlcnQoIHRleHR1cmUudHlwZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdHNldFRleHR1cmVQYXJhbWV0ZXJzKCBfZ2wuVEVYVFVSRV9DVUJFX01BUCwgdGV4dHVyZSwgaXNQb3dlck9mVHdvSW1hZ2UgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCA2OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggISBpc0NvbXByZXNzZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBpc0RhdGFUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRlLnRleEltYWdlMkQoIF9nbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBpLCAwLCBnbEZvcm1hdCwgY3ViZUltYWdlWyBpIF0ud2lkdGgsIGN1YmVJbWFnZVsgaSBdLmhlaWdodCwgMCwgZ2xGb3JtYXQsIGdsVHlwZSwgY3ViZUltYWdlWyBpIF0uZGF0YSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RhdGUudGV4SW1hZ2UyRCggX2dsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGksIDAsIGdsRm9ybWF0LCBnbEZvcm1hdCwgZ2xUeXBlLCBjdWJlSW1hZ2VbIGkgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBtaXBtYXAsIG1pcG1hcHMgPSBjdWJlSW1hZ2VbIGkgXS5taXBtYXBzO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMCwgamwgPSBtaXBtYXBzLmxlbmd0aDsgaiA8IGpsOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG1pcG1hcCA9IG1pcG1hcHNbIGogXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHRleHR1cmUuZm9ybWF0ICE9PSBSR0JBRm9ybWF0ICYmIHRleHR1cmUuZm9ybWF0ICE9PSBSR0JGb3JtYXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBzdGF0ZS5nZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKS5pbmRleE9mKCBnbEZvcm1hdCApID4gLSAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRlLmNvbXByZXNzZWRUZXhJbWFnZTJEKCBfZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgaSwgaiwgZ2xGb3JtYXQsIG1pcG1hcC53aWR0aCwgbWlwbWFwLmhlaWdodCwgMCwgbWlwbWFwLmRhdGEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC5zZXRUZXh0dXJlQ3ViZSgpJyApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRlLnRleEltYWdlMkQoIF9nbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBpLCBqLCBnbEZvcm1hdCwgbWlwbWFwLndpZHRoLCBtaXBtYXAuaGVpZ2h0LCAwLCBnbEZvcm1hdCwgZ2xUeXBlLCBtaXBtYXAuZGF0YSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHRleHR1cmVOZWVkc0dlbmVyYXRlTWlwbWFwcyggdGV4dHVyZSwgaXNQb3dlck9mVHdvSW1hZ2UgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRfZ2wuZ2VuZXJhdGVNaXBtYXAoIF9nbC5URVhUVVJFX0NVQkVfTUFQICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmVQcm9wZXJ0aWVzLl9fdmVyc2lvbiA9IHRleHR1cmUudmVyc2lvbjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHRleHR1cmUub25VcGRhdGUgKSB0ZXh0dXJlLm9uVXBkYXRlKCB0ZXh0dXJlICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5hY3RpdmVUZXh0dXJlKCBfZ2wuVEVYVFVSRTAgKyBzbG90ICk7XFxuXFx0XFx0XFx0XFx0XFx0c3RhdGUuYmluZFRleHR1cmUoIF9nbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlUHJvcGVydGllcy5fX2ltYWdlX193ZWJnbFRleHR1cmVDdWJlICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0VGV4dHVyZUN1YmVEeW5hbWljKCB0ZXh0dXJlLCBzbG90ICkge1xcblxcblxcdFxcdFxcdHN0YXRlLmFjdGl2ZVRleHR1cmUoIF9nbC5URVhUVVJFMCArIHNsb3QgKTtcXG5cXHRcXHRcXHRzdGF0ZS5iaW5kVGV4dHVyZSggX2dsLlRFWFRVUkVfQ1VCRV9NQVAsIHByb3BlcnRpZXMuZ2V0KCB0ZXh0dXJlICkuX193ZWJnbFRleHR1cmUgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0VGV4dHVyZVBhcmFtZXRlcnMoIHRleHR1cmVUeXBlLCB0ZXh0dXJlLCBpc1Bvd2VyT2ZUd29JbWFnZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZXh0ZW5zaW9uO1xcblxcblxcdFxcdFxcdGlmICggaXNQb3dlck9mVHdvSW1hZ2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLnRleFBhcmFtZXRlcmkoIHRleHR1cmVUeXBlLCBfZ2wuVEVYVFVSRV9XUkFQX1MsIHV0aWxzLmNvbnZlcnQoIHRleHR1cmUud3JhcFMgKSApO1xcblxcdFxcdFxcdFxcdF9nbC50ZXhQYXJhbWV0ZXJpKCB0ZXh0dXJlVHlwZSwgX2dsLlRFWFRVUkVfV1JBUF9ULCB1dGlscy5jb252ZXJ0KCB0ZXh0dXJlLndyYXBUICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRfZ2wudGV4UGFyYW1ldGVyaSggdGV4dHVyZVR5cGUsIF9nbC5URVhUVVJFX01BR19GSUxURVIsIHV0aWxzLmNvbnZlcnQoIHRleHR1cmUubWFnRmlsdGVyICkgKTtcXG5cXHRcXHRcXHRcXHRfZ2wudGV4UGFyYW1ldGVyaSggdGV4dHVyZVR5cGUsIF9nbC5URVhUVVJFX01JTl9GSUxURVIsIHV0aWxzLmNvbnZlcnQoIHRleHR1cmUubWluRmlsdGVyICkgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdF9nbC50ZXhQYXJhbWV0ZXJpKCB0ZXh0dXJlVHlwZSwgX2dsLlRFWFRVUkVfV1JBUF9TLCBfZ2wuQ0xBTVBfVE9fRURHRSApO1xcblxcdFxcdFxcdFxcdF9nbC50ZXhQYXJhbWV0ZXJpKCB0ZXh0dXJlVHlwZSwgX2dsLlRFWFRVUkVfV1JBUF9ULCBfZ2wuQ0xBTVBfVE9fRURHRSApO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZS53cmFwUyAhPT0gQ2xhbXBUb0VkZ2VXcmFwcGluZyB8fCB0ZXh0dXJlLndyYXBUICE9PSBDbGFtcFRvRWRnZVdyYXBwaW5nICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS53cmFwUyBhbmQgVGV4dHVyZS53cmFwVCBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLkNsYW1wVG9FZGdlV3JhcHBpbmcuJywgdGV4dHVyZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRfZ2wudGV4UGFyYW1ldGVyaSggdGV4dHVyZVR5cGUsIF9nbC5URVhUVVJFX01BR19GSUxURVIsIGZpbHRlckZhbGxiYWNrKCB0ZXh0dXJlLm1hZ0ZpbHRlciApICk7XFxuXFx0XFx0XFx0XFx0X2dsLnRleFBhcmFtZXRlcmkoIHRleHR1cmVUeXBlLCBfZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXJGYWxsYmFjayggdGV4dHVyZS5taW5GaWx0ZXIgKSApO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZS5taW5GaWx0ZXIgIT09IE5lYXJlc3RGaWx0ZXIgJiYgdGV4dHVyZS5taW5GaWx0ZXIgIT09IExpbmVhckZpbHRlciApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUubWluRmlsdGVyIHNob3VsZCBiZSBzZXQgdG8gVEhSRUUuTmVhcmVzdEZpbHRlciBvciBUSFJFRS5MaW5lYXJGaWx0ZXIuJywgdGV4dHVyZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0ZXh0ZW5zaW9uID0gZXh0ZW5zaW9ucy5nZXQoICdFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMnICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBleHRlbnNpb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlLnR5cGUgPT09IEZsb2F0VHlwZSAmJiBleHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhcicgKSA9PT0gbnVsbCApIHJldHVybjtcXG5cXHRcXHRcXHRcXHRpZiAoIHRleHR1cmUudHlwZSA9PT0gSGFsZkZsb2F0VHlwZSAmJiBleHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyJyApID09PSBudWxsICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZS5hbmlzb3Ryb3B5ID4gMSB8fCBwcm9wZXJ0aWVzLmdldCggdGV4dHVyZSApLl9fY3VycmVudEFuaXNvdHJvcHkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0X2dsLnRleFBhcmFtZXRlcmYoIHRleHR1cmVUeXBlLCBleHRlbnNpb24uVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsIE1hdGgubWluKCB0ZXh0dXJlLmFuaXNvdHJvcHksIGNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCkgKSApO1xcblxcdFxcdFxcdFxcdFxcdHByb3BlcnRpZXMuZ2V0KCB0ZXh0dXJlICkuX19jdXJyZW50QW5pc290cm9weSA9IHRleHR1cmUuYW5pc290cm9weTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiB1cGxvYWRUZXh0dXJlKCB0ZXh0dXJlUHJvcGVydGllcywgdGV4dHVyZSwgc2xvdCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRleHR1cmVQcm9wZXJ0aWVzLl9fd2ViZ2xJbml0ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZVByb3BlcnRpZXMuX193ZWJnbEluaXQgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdHRleHR1cmUuYWRkRXZlbnRMaXN0ZW5lciggJ2Rpc3Bvc2UnLCBvblRleHR1cmVEaXNwb3NlICk7XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZVByb3BlcnRpZXMuX193ZWJnbFRleHR1cmUgPSBfZ2wuY3JlYXRlVGV4dHVyZSgpO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZS5pc1ZpZGVvVGV4dHVyZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRfdmlkZW9UZXh0dXJlc1sgdGV4dHVyZS5pZCBdID0gdGV4dHVyZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aW5mb01lbW9yeS50ZXh0dXJlcyArKztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0c3RhdGUuYWN0aXZlVGV4dHVyZSggX2dsLlRFWFRVUkUwICsgc2xvdCApO1xcblxcdFxcdFxcdHN0YXRlLmJpbmRUZXh0dXJlKCBfZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZVByb3BlcnRpZXMuX193ZWJnbFRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRfZ2wucGl4ZWxTdG9yZWkoIF9nbC5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCB0ZXh0dXJlLmZsaXBZICk7XFxuXFx0XFx0XFx0X2dsLnBpeGVsU3RvcmVpKCBfZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCB0ZXh0dXJlLnByZW11bHRpcGx5QWxwaGEgKTtcXG5cXHRcXHRcXHRfZ2wucGl4ZWxTdG9yZWkoIF9nbC5VTlBBQ0tfQUxJR05NRU5ULCB0ZXh0dXJlLnVucGFja0FsaWdubWVudCApO1xcblxcblxcdFxcdFxcdHZhciBpbWFnZSA9IGNsYW1wVG9NYXhTaXplKCB0ZXh0dXJlLmltYWdlLCBjYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRleHR1cmVOZWVkc1Bvd2VyT2ZUd28oIHRleHR1cmUgKSAmJiBpc1Bvd2VyT2ZUd28oIGltYWdlICkgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGltYWdlID0gbWFrZVBvd2VyT2ZUd28oIGltYWdlICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBpc1Bvd2VyT2ZUd29JbWFnZSA9IGlzUG93ZXJPZlR3byggaW1hZ2UgKSxcXG5cXHRcXHRcXHRcXHRnbEZvcm1hdCA9IHV0aWxzLmNvbnZlcnQoIHRleHR1cmUuZm9ybWF0ICksXFxuXFx0XFx0XFx0XFx0Z2xUeXBlID0gdXRpbHMuY29udmVydCggdGV4dHVyZS50eXBlICk7XFxuXFxuXFx0XFx0XFx0c2V0VGV4dHVyZVBhcmFtZXRlcnMoIF9nbC5URVhUVVJFXzJELCB0ZXh0dXJlLCBpc1Bvd2VyT2ZUd29JbWFnZSApO1xcblxcblxcdFxcdFxcdHZhciBtaXBtYXAsIG1pcG1hcHMgPSB0ZXh0dXJlLm1pcG1hcHM7XFxuXFxuXFx0XFx0XFx0aWYgKCB0ZXh0dXJlLmlzRGVwdGhUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdC8vIHBvcHVsYXRlIGRlcHRoIHRleHR1cmUgd2l0aCBkdW1teSBkYXRhXFxuXFxuXFx0XFx0XFx0XFx0dmFyIGludGVybmFsRm9ybWF0ID0gX2dsLkRFUFRIX0NPTVBPTkVOVDtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHRleHR1cmUudHlwZSA9PT0gRmxvYXRUeXBlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggISBfaXNXZWJHTDIgKSB0aHJvdyBuZXcgRXJyb3IoICdGbG9hdCBEZXB0aCBUZXh0dXJlIG9ubHkgc3VwcG9ydGVkIGluIFdlYkdMMi4wJyApO1xcblxcdFxcdFxcdFxcdFxcdGludGVybmFsRm9ybWF0ID0gX2dsLkRFUFRIX0NPTVBPTkVOVDMyRjtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBfaXNXZWJHTDIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gV2ViR0wgMi4wIHJlcXVpcmVzIHNpZ25lZCBpbnRlcm5hbGZvcm1hdCBmb3IgZ2xUZXhJbWFnZTJEXFxuXFx0XFx0XFx0XFx0XFx0aW50ZXJuYWxGb3JtYXQgPSBfZ2wuREVQVEhfQ09NUE9ORU5UMTY7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggdGV4dHVyZS5mb3JtYXQgPT09IERlcHRoRm9ybWF0ICYmIGludGVybmFsRm9ybWF0ID09PSBfZ2wuREVQVEhfQ09NUE9ORU5UICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIFRoZSBlcnJvciBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQgYnkgdGV4SW1hZ2UyRCBpZiBmb3JtYXQgYW5kIGludGVybmFsZm9ybWF0IGFyZVxcblxcdFxcdFxcdFxcdFxcdC8vIERFUFRIX0NPTVBPTkVOVCBhbmQgdHlwZSBpcyBub3QgVU5TSUdORURfU0hPUlQgb3IgVU5TSUdORURfSU5UXFxuXFx0XFx0XFx0XFx0XFx0Ly8gKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvV0VCR0xfZGVwdGhfdGV4dHVyZS8pXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlLnR5cGUgIT09IFVuc2lnbmVkU2hvcnRUeXBlICYmIHRleHR1cmUudHlwZSAhPT0gVW5zaWduZWRJbnRUeXBlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZFNob3J0VHlwZSBvciBVbnNpZ25lZEludFR5cGUgZm9yIERlcHRoRm9ybWF0IERlcHRoVGV4dHVyZS4nICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZS50eXBlID0gVW5zaWduZWRTaG9ydFR5cGU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2xUeXBlID0gdXRpbHMuY29udmVydCggdGV4dHVyZS50eXBlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBEZXB0aCBzdGVuY2lsIHRleHR1cmVzIG5lZWQgdGhlIERFUFRIX1NURU5DSUwgaW50ZXJuYWwgZm9ybWF0XFxuXFx0XFx0XFx0XFx0Ly8gKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvV0VCR0xfZGVwdGhfdGV4dHVyZS8pXFxuXFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlLmZvcm1hdCA9PT0gRGVwdGhTdGVuY2lsRm9ybWF0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGludGVybmFsRm9ybWF0ID0gX2dsLkRFUFRIX1NURU5DSUw7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gVGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZCBieSB0ZXhJbWFnZTJEIGlmIGZvcm1hdCBhbmQgaW50ZXJuYWxmb3JtYXQgYXJlXFxuXFx0XFx0XFx0XFx0XFx0Ly8gREVQVEhfU1RFTkNJTCBhbmQgdHlwZSBpcyBub3QgVU5TSUdORURfSU5UXzI0XzhfV0VCR0wuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmdsL2V4dGVuc2lvbnMvV0VCR0xfZGVwdGhfdGV4dHVyZS8pXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlLnR5cGUgIT09IFVuc2lnbmVkSW50MjQ4VHlwZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRJbnQyNDhUeXBlIGZvciBEZXB0aFN0ZW5jaWxGb3JtYXQgRGVwdGhUZXh0dXJlLicgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLnR5cGUgPSBVbnNpZ25lZEludDI0OFR5cGU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2xUeXBlID0gdXRpbHMuY29udmVydCggdGV4dHVyZS50eXBlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRzdGF0ZS50ZXhJbWFnZTJEKCBfZ2wuVEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxGb3JtYXQsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQsIDAsIGdsRm9ybWF0LCBnbFR5cGUsIG51bGwgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCB0ZXh0dXJlLmlzRGF0YVRleHR1cmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdXNlIG1hbnVhbGx5IGNyZWF0ZWQgbWlwbWFwcyBpZiBhdmFpbGFibGVcXG5cXHRcXHRcXHRcXHQvLyBpZiB0aGVyZSBhcmUgbm8gbWFudWFsIG1pcG1hcHNcXG5cXHRcXHRcXHRcXHQvLyBzZXQgMCBsZXZlbCBtaXBtYXAgYW5kIHRoZW4gdXNlIEdMIHRvIGdlbmVyYXRlIG90aGVyIG1pcG1hcCBsZXZlbHNcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1pcG1hcHMubGVuZ3RoID4gMCAmJiBpc1Bvd2VyT2ZUd29JbWFnZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gbWlwbWFwcy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRtaXBtYXAgPSBtaXBtYXBzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0c3RhdGUudGV4SW1hZ2UyRCggX2dsLlRFWFRVUkVfMkQsIGksIGdsRm9ybWF0LCBtaXBtYXAud2lkdGgsIG1pcG1hcC5oZWlnaHQsIDAsIGdsRm9ybWF0LCBnbFR5cGUsIG1pcG1hcC5kYXRhICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS50ZXhJbWFnZTJEKCBfZ2wuVEVYVFVSRV8yRCwgMCwgZ2xGb3JtYXQsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQsIDAsIGdsRm9ybWF0LCBnbFR5cGUsIGltYWdlLmRhdGEgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggdGV4dHVyZS5pc0NvbXByZXNzZWRUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBtaXBtYXBzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdG1pcG1hcCA9IG1pcG1hcHNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHRleHR1cmUuZm9ybWF0ICE9PSBSR0JBRm9ybWF0ICYmIHRleHR1cmUuZm9ybWF0ICE9PSBSR0JGb3JtYXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBzdGF0ZS5nZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMoKS5pbmRleE9mKCBnbEZvcm1hdCApID4gLSAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRlLmNvbXByZXNzZWRUZXhJbWFnZTJEKCBfZ2wuVEVYVFVSRV8yRCwgaSwgZ2xGb3JtYXQsIG1pcG1hcC53aWR0aCwgbWlwbWFwLmhlaWdodCwgMCwgbWlwbWFwLmRhdGEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCknICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0c3RhdGUudGV4SW1hZ2UyRCggX2dsLlRFWFRVUkVfMkQsIGksIGdsRm9ybWF0LCBtaXBtYXAud2lkdGgsIG1pcG1hcC5oZWlnaHQsIDAsIGdsRm9ybWF0LCBnbFR5cGUsIG1pcG1hcC5kYXRhICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdC8vIHJlZ3VsYXIgVGV4dHVyZSAoaW1hZ2UsIHZpZGVvLCBjYW52YXMpXFxuXFxuXFx0XFx0XFx0XFx0Ly8gdXNlIG1hbnVhbGx5IGNyZWF0ZWQgbWlwbWFwcyBpZiBhdmFpbGFibGVcXG5cXHRcXHRcXHRcXHQvLyBpZiB0aGVyZSBhcmUgbm8gbWFudWFsIG1pcG1hcHNcXG5cXHRcXHRcXHRcXHQvLyBzZXQgMCBsZXZlbCBtaXBtYXAgYW5kIHRoZW4gdXNlIEdMIHRvIGdlbmVyYXRlIG90aGVyIG1pcG1hcCBsZXZlbHNcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1pcG1hcHMubGVuZ3RoID4gMCAmJiBpc1Bvd2VyT2ZUd29JbWFnZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gbWlwbWFwcy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRtaXBtYXAgPSBtaXBtYXBzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0c3RhdGUudGV4SW1hZ2UyRCggX2dsLlRFWFRVUkVfMkQsIGksIGdsRm9ybWF0LCBnbEZvcm1hdCwgZ2xUeXBlLCBtaXBtYXAgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHN0YXRlLnRleEltYWdlMkQoIF9nbC5URVhUVVJFXzJELCAwLCBnbEZvcm1hdCwgZ2xGb3JtYXQsIGdsVHlwZSwgaW1hZ2UgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGV4dHVyZU5lZWRzR2VuZXJhdGVNaXBtYXBzKCB0ZXh0dXJlLCBpc1Bvd2VyT2ZUd29JbWFnZSApICkgX2dsLmdlbmVyYXRlTWlwbWFwKCBfZ2wuVEVYVFVSRV8yRCApO1xcblxcblxcdFxcdFxcdHRleHR1cmVQcm9wZXJ0aWVzLl9fdmVyc2lvbiA9IHRleHR1cmUudmVyc2lvbjtcXG5cXG5cXHRcXHRcXHRpZiAoIHRleHR1cmUub25VcGRhdGUgKSB0ZXh0dXJlLm9uVXBkYXRlKCB0ZXh0dXJlICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIFJlbmRlciB0YXJnZXRzXFxuXFxuXFx0XFx0Ly8gU2V0dXAgc3RvcmFnZSBmb3IgdGFyZ2V0IHRleHR1cmUgYW5kIGJpbmQgaXQgdG8gY29ycmVjdCBmcmFtZWJ1ZmZlclxcblxcdFxcdGZ1bmN0aW9uIHNldHVwRnJhbWVCdWZmZXJUZXh0dXJlKCBmcmFtZWJ1ZmZlciwgcmVuZGVyVGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciBnbEZvcm1hdCA9IHV0aWxzLmNvbnZlcnQoIHJlbmRlclRhcmdldC50ZXh0dXJlLmZvcm1hdCApO1xcblxcdFxcdFxcdHZhciBnbFR5cGUgPSB1dGlscy5jb252ZXJ0KCByZW5kZXJUYXJnZXQudGV4dHVyZS50eXBlICk7XFxuXFx0XFx0XFx0c3RhdGUudGV4SW1hZ2UyRCggdGV4dHVyZVRhcmdldCwgMCwgZ2xGb3JtYXQsIHJlbmRlclRhcmdldC53aWR0aCwgcmVuZGVyVGFyZ2V0LmhlaWdodCwgMCwgZ2xGb3JtYXQsIGdsVHlwZSwgbnVsbCApO1xcblxcdFxcdFxcdF9nbC5iaW5kRnJhbWVidWZmZXIoIF9nbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIgKTtcXG5cXHRcXHRcXHRfZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoIF9nbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgdGV4dHVyZVRhcmdldCwgcHJvcGVydGllcy5nZXQoIHJlbmRlclRhcmdldC50ZXh0dXJlICkuX193ZWJnbFRleHR1cmUsIDAgKTtcXG5cXHRcXHRcXHRfZ2wuYmluZEZyYW1lYnVmZmVyKCBfZ2wuRlJBTUVCVUZGRVIsIG51bGwgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gU2V0dXAgc3RvcmFnZSBmb3IgaW50ZXJuYWwgZGVwdGgvc3RlbmNpbCBidWZmZXJzIGFuZCBiaW5kIHRvIGNvcnJlY3QgZnJhbWVidWZmZXJcXG5cXHRcXHRmdW5jdGlvbiBzZXR1cFJlbmRlckJ1ZmZlclN0b3JhZ2UoIHJlbmRlcmJ1ZmZlciwgcmVuZGVyVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdF9nbC5iaW5kUmVuZGVyYnVmZmVyKCBfZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHJlbmRlclRhcmdldC5kZXB0aEJ1ZmZlciAmJiAhIHJlbmRlclRhcmdldC5zdGVuY2lsQnVmZmVyICkge1xcblxcblxcdFxcdFxcdFxcdF9nbC5yZW5kZXJidWZmZXJTdG9yYWdlKCBfZ2wuUkVOREVSQlVGRkVSLCBfZ2wuREVQVEhfQ09NUE9ORU5UMTYsIHJlbmRlclRhcmdldC53aWR0aCwgcmVuZGVyVGFyZ2V0LmhlaWdodCApO1xcblxcdFxcdFxcdFxcdF9nbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciggX2dsLkZSQU1FQlVGRkVSLCBfZ2wuREVQVEhfQVRUQUNITUVOVCwgX2dsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggcmVuZGVyVGFyZ2V0LmRlcHRoQnVmZmVyICYmIHJlbmRlclRhcmdldC5zdGVuY2lsQnVmZmVyICkge1xcblxcblxcdFxcdFxcdFxcdF9nbC5yZW5kZXJidWZmZXJTdG9yYWdlKCBfZ2wuUkVOREVSQlVGRkVSLCBfZ2wuREVQVEhfU1RFTkNJTCwgcmVuZGVyVGFyZ2V0LndpZHRoLCByZW5kZXJUYXJnZXQuaGVpZ2h0ICk7XFxuXFx0XFx0XFx0XFx0X2dsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKCBfZ2wuRlJBTUVCVUZGRVIsIF9nbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIF9nbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlciApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgIWRlcHRoICFzdGVuY2lsXFxuXFx0XFx0XFx0XFx0X2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoIF9nbC5SRU5ERVJCVUZGRVIsIF9nbC5SR0JBNCwgcmVuZGVyVGFyZ2V0LndpZHRoLCByZW5kZXJUYXJnZXQuaGVpZ2h0ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdF9nbC5iaW5kUmVuZGVyYnVmZmVyKCBfZ2wuUkVOREVSQlVGRkVSLCBudWxsICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIFNldHVwIHJlc291cmNlcyBmb3IgYSBEZXB0aCBUZXh0dXJlIGZvciBhIEZCTyAobmVlZHMgYW4gZXh0ZW5zaW9uKVxcblxcdFxcdGZ1bmN0aW9uIHNldHVwRGVwdGhUZXh0dXJlKCBmcmFtZWJ1ZmZlciwgcmVuZGVyVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdHZhciBpc0N1YmUgPSAoIHJlbmRlclRhcmdldCAmJiByZW5kZXJUYXJnZXQuaXNXZWJHTFJlbmRlclRhcmdldEN1YmUgKTtcXG5cXHRcXHRcXHRpZiAoIGlzQ3ViZSApIHRocm93IG5ldyBFcnJvciggJ0RlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQnICk7XFxuXFxuXFx0XFx0XFx0X2dsLmJpbmRGcmFtZWJ1ZmZlciggX2dsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlciApO1xcblxcblxcdFxcdFxcdGlmICggISAoIHJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgJiYgcmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSApICkge1xcblxcblxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggJ3JlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUnICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHVwbG9hZCBhbiBlbXB0eSBkZXB0aCB0ZXh0dXJlIHdpdGggZnJhbWVidWZmZXIgc2l6ZVxcblxcdFxcdFxcdGlmICggISBwcm9wZXJ0aWVzLmdldCggcmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSApLl9fd2ViZ2xUZXh0dXJlIHx8XFxuXFx0XFx0XFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aCAhPT0gcmVuZGVyVGFyZ2V0LndpZHRoIHx8XFxuXFx0XFx0XFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQgIT09IHJlbmRlclRhcmdldC5oZWlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aCA9IHJlbmRlclRhcmdldC53aWR0aDtcXG5cXHRcXHRcXHRcXHRyZW5kZXJUYXJnZXQuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodCA9IHJlbmRlclRhcmdldC5oZWlnaHQ7XFxuXFx0XFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHNldFRleHR1cmUyRCggcmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSwgMCApO1xcblxcblxcdFxcdFxcdHZhciB3ZWJnbERlcHRoVGV4dHVyZSA9IHByb3BlcnRpZXMuZ2V0KCByZW5kZXJUYXJnZXQuZGVwdGhUZXh0dXJlICkuX193ZWJnbFRleHR1cmU7XFxuXFxuXFx0XFx0XFx0aWYgKCByZW5kZXJUYXJnZXQuZGVwdGhUZXh0dXJlLmZvcm1hdCA9PT0gRGVwdGhGb3JtYXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKCBfZ2wuRlJBTUVCVUZGRVIsIF9nbC5ERVBUSF9BVFRBQ0hNRU5ULCBfZ2wuVEVYVFVSRV8yRCwgd2ViZ2xEZXB0aFRleHR1cmUsIDAgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCByZW5kZXJUYXJnZXQuZGVwdGhUZXh0dXJlLmZvcm1hdCA9PT0gRGVwdGhTdGVuY2lsRm9ybWF0ICkge1xcblxcblxcdFxcdFxcdFxcdF9nbC5mcmFtZWJ1ZmZlclRleHR1cmUyRCggX2dsLkZSQU1FQlVGRkVSLCBfZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBfZ2wuVEVYVFVSRV8yRCwgd2ViZ2xEZXB0aFRleHR1cmUsIDAgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggJ1Vua25vd24gZGVwdGhUZXh0dXJlIGZvcm1hdCcgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIFNldHVwIEdMIHJlc291cmNlcyBmb3IgYSBub24tdGV4dHVyZSBkZXB0aCBidWZmZXJcXG5cXHRcXHRmdW5jdGlvbiBzZXR1cERlcHRoUmVuZGVyYnVmZmVyKCByZW5kZXJUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlbmRlclRhcmdldFByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmdldCggcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0dmFyIGlzQ3ViZSA9ICggcmVuZGVyVGFyZ2V0LmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlID09PSB0cnVlICk7XFxuXFxuXFx0XFx0XFx0aWYgKCByZW5kZXJUYXJnZXQuZGVwdGhUZXh0dXJlICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggaXNDdWJlICkgdGhyb3cgbmV3IEVycm9yKCAndGFyZ2V0LmRlcHRoVGV4dHVyZSBub3Qgc3VwcG9ydGVkIGluIEN1YmUgcmVuZGVyIHRhcmdldHMnICk7XFxuXFxuXFx0XFx0XFx0XFx0c2V0dXBEZXB0aFRleHR1cmUoIHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbEZyYW1lYnVmZmVyLCByZW5kZXJUYXJnZXQgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGlmICggaXNDdWJlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbERlcHRoYnVmZmVyID0gW107XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgNjsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRfZ2wuYmluZEZyYW1lYnVmZmVyKCBfZ2wuRlJBTUVCVUZGRVIsIHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbEZyYW1lYnVmZmVyWyBpIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLl9fd2ViZ2xEZXB0aGJ1ZmZlclsgaSBdID0gX2dsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpO1xcblxcdFxcdFxcdFxcdFxcdFxcdHNldHVwUmVuZGVyQnVmZmVyU3RvcmFnZSggcmVuZGVyVGFyZ2V0UHJvcGVydGllcy5fX3dlYmdsRGVwdGhidWZmZXJbIGkgXSwgcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0X2dsLmJpbmRGcmFtZWJ1ZmZlciggX2dsLkZSQU1FQlVGRkVSLCByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLl9fd2ViZ2xGcmFtZWJ1ZmZlciApO1xcblxcdFxcdFxcdFxcdFxcdHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbERlcHRoYnVmZmVyID0gX2dsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpO1xcblxcdFxcdFxcdFxcdFxcdHNldHVwUmVuZGVyQnVmZmVyU3RvcmFnZSggcmVuZGVyVGFyZ2V0UHJvcGVydGllcy5fX3dlYmdsRGVwdGhidWZmZXIsIHJlbmRlclRhcmdldCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0X2dsLmJpbmRGcmFtZWJ1ZmZlciggX2dsLkZSQU1FQlVGRkVSLCBudWxsICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIFNldCB1cCBHTCByZXNvdXJjZXMgZm9yIHRoZSByZW5kZXIgdGFyZ2V0XFxuXFx0XFx0ZnVuY3Rpb24gc2V0dXBSZW5kZXJUYXJnZXQoIHJlbmRlclRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVuZGVyVGFyZ2V0UHJvcGVydGllcyA9IHByb3BlcnRpZXMuZ2V0KCByZW5kZXJUYXJnZXQgKTtcXG5cXHRcXHRcXHR2YXIgdGV4dHVyZVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmdldCggcmVuZGVyVGFyZ2V0LnRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRyZW5kZXJUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lciggJ2Rpc3Bvc2UnLCBvblJlbmRlclRhcmdldERpc3Bvc2UgKTtcXG5cXG5cXHRcXHRcXHR0ZXh0dXJlUHJvcGVydGllcy5fX3dlYmdsVGV4dHVyZSA9IF9nbC5jcmVhdGVUZXh0dXJlKCk7XFxuXFxuXFx0XFx0XFx0aW5mb01lbW9yeS50ZXh0dXJlcyArKztcXG5cXG5cXHRcXHRcXHR2YXIgaXNDdWJlID0gKCByZW5kZXJUYXJnZXQuaXNXZWJHTFJlbmRlclRhcmdldEN1YmUgPT09IHRydWUgKTtcXG5cXHRcXHRcXHR2YXIgaXNUYXJnZXRQb3dlck9mVHdvID0gaXNQb3dlck9mVHdvKCByZW5kZXJUYXJnZXQgKTtcXG5cXG5cXHRcXHRcXHQvLyBTZXR1cCBmcmFtZWJ1ZmZlclxcblxcblxcdFxcdFxcdGlmICggaXNDdWJlICkge1xcblxcblxcdFxcdFxcdFxcdHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbEZyYW1lYnVmZmVyID0gW107XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgNjsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLl9fd2ViZ2xGcmFtZWJ1ZmZlclsgaSBdID0gX2dsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyVGFyZ2V0UHJvcGVydGllcy5fX3dlYmdsRnJhbWVidWZmZXIgPSBfZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gU2V0dXAgY29sb3IgYnVmZmVyXFxuXFxuXFx0XFx0XFx0aWYgKCBpc0N1YmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c3RhdGUuYmluZFRleHR1cmUoIF9nbC5URVhUVVJFX0NVQkVfTUFQLCB0ZXh0dXJlUHJvcGVydGllcy5fX3dlYmdsVGV4dHVyZSApO1xcblxcdFxcdFxcdFxcdHNldFRleHR1cmVQYXJhbWV0ZXJzKCBfZ2wuVEVYVFVSRV9DVUJFX01BUCwgcmVuZGVyVGFyZ2V0LnRleHR1cmUsIGlzVGFyZ2V0UG93ZXJPZlR3byApO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IDY7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2V0dXBGcmFtZUJ1ZmZlclRleHR1cmUoIHJlbmRlclRhcmdldFByb3BlcnRpZXMuX193ZWJnbEZyYW1lYnVmZmVyWyBpIF0sIHJlbmRlclRhcmdldCwgX2dsLkNPTE9SX0FUVEFDSE1FTlQwLCBfZ2wuVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgaSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHRleHR1cmVOZWVkc0dlbmVyYXRlTWlwbWFwcyggcmVuZGVyVGFyZ2V0LnRleHR1cmUsIGlzVGFyZ2V0UG93ZXJPZlR3byApICkgX2dsLmdlbmVyYXRlTWlwbWFwKCBfZ2wuVEVYVFVSRV9DVUJFX01BUCApO1xcblxcdFxcdFxcdFxcdHN0YXRlLmJpbmRUZXh0dXJlKCBfZ2wuVEVYVFVSRV9DVUJFX01BUCwgbnVsbCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0c3RhdGUuYmluZFRleHR1cmUoIF9nbC5URVhUVVJFXzJELCB0ZXh0dXJlUHJvcGVydGllcy5fX3dlYmdsVGV4dHVyZSApO1xcblxcdFxcdFxcdFxcdHNldFRleHR1cmVQYXJhbWV0ZXJzKCBfZ2wuVEVYVFVSRV8yRCwgcmVuZGVyVGFyZ2V0LnRleHR1cmUsIGlzVGFyZ2V0UG93ZXJPZlR3byApO1xcblxcdFxcdFxcdFxcdHNldHVwRnJhbWVCdWZmZXJUZXh0dXJlKCByZW5kZXJUYXJnZXRQcm9wZXJ0aWVzLl9fd2ViZ2xGcmFtZWJ1ZmZlciwgcmVuZGVyVGFyZ2V0LCBfZ2wuQ09MT1JfQVRUQUNITUVOVDAsIF9nbC5URVhUVVJFXzJEICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlTmVlZHNHZW5lcmF0ZU1pcG1hcHMoIHJlbmRlclRhcmdldC50ZXh0dXJlLCBpc1RhcmdldFBvd2VyT2ZUd28gKSApIF9nbC5nZW5lcmF0ZU1pcG1hcCggX2dsLlRFWFRVUkVfMkQgKTtcXG5cXHRcXHRcXHRcXHRzdGF0ZS5iaW5kVGV4dHVyZSggX2dsLlRFWFRVUkVfMkQsIG51bGwgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gU2V0dXAgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVyc1xcblxcblxcdFxcdFxcdGlmICggcmVuZGVyVGFyZ2V0LmRlcHRoQnVmZmVyICkge1xcblxcblxcdFxcdFxcdFxcdHNldHVwRGVwdGhSZW5kZXJidWZmZXIoIHJlbmRlclRhcmdldCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gdXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKCByZW5kZXJUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRleHR1cmUgPSByZW5kZXJUYXJnZXQudGV4dHVyZTtcXG5cXHRcXHRcXHR2YXIgaXNUYXJnZXRQb3dlck9mVHdvID0gaXNQb3dlck9mVHdvKCByZW5kZXJUYXJnZXQgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRleHR1cmVOZWVkc0dlbmVyYXRlTWlwbWFwcyggdGV4dHVyZSwgaXNUYXJnZXRQb3dlck9mVHdvICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHRhcmdldCA9IHJlbmRlclRhcmdldC5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSA/IF9nbC5URVhUVVJFX0NVQkVfTUFQIDogX2dsLlRFWFRVUkVfMkQ7XFxuXFx0XFx0XFx0XFx0dmFyIHdlYmdsVGV4dHVyZSA9IHByb3BlcnRpZXMuZ2V0KCB0ZXh0dXJlICkuX193ZWJnbFRleHR1cmU7XFxuXFxuXFx0XFx0XFx0XFx0c3RhdGUuYmluZFRleHR1cmUoIHRhcmdldCwgd2ViZ2xUZXh0dXJlICk7XFxuXFx0XFx0XFx0XFx0X2dsLmdlbmVyYXRlTWlwbWFwKCB0YXJnZXQgKTtcXG5cXHRcXHRcXHRcXHRzdGF0ZS5iaW5kVGV4dHVyZSggdGFyZ2V0LCBudWxsICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiB1cGRhdGVWaWRlb1RleHR1cmVzKCkge1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpZCBpbiBfdmlkZW9UZXh0dXJlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRfdmlkZW9UZXh0dXJlc1sgaWQgXS51cGRhdGUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHRoaXMuc2V0VGV4dHVyZTJEID0gc2V0VGV4dHVyZTJEO1xcblxcdFxcdHRoaXMuc2V0VGV4dHVyZUN1YmUgPSBzZXRUZXh0dXJlQ3ViZTtcXG5cXHRcXHR0aGlzLnNldFRleHR1cmVDdWJlRHluYW1pYyA9IHNldFRleHR1cmVDdWJlRHluYW1pYztcXG5cXHRcXHR0aGlzLnNldHVwUmVuZGVyVGFyZ2V0ID0gc2V0dXBSZW5kZXJUYXJnZXQ7XFxuXFx0XFx0dGhpcy51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXAgPSB1cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXA7XFxuXFx0XFx0dGhpcy51cGRhdGVWaWRlb1RleHR1cmVzID0gdXBkYXRlVmlkZW9UZXh0dXJlcztcXG5cXG5cXHR9XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBmb3JkYWNpb3VzIC8gZm9yZGFjaW91cy5naXRodWIuaW9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBXZWJHTFByb3BlcnRpZXMoKSB7XFxuXFxuXFx0XFx0dmFyIHByb3BlcnRpZXMgPSB7fTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXQoIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdXVpZCA9IG9iamVjdC51dWlkO1xcblxcdFxcdFxcdHZhciBtYXAgPSBwcm9wZXJ0aWVzWyB1dWlkIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXAgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRtYXAgPSB7fTtcXG5cXHRcXHRcXHRcXHRwcm9wZXJ0aWVzWyB1dWlkIF0gPSBtYXA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBtYXA7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHJlbW92ZSggb2JqZWN0ICkge1xcblxcblxcdFxcdFxcdGRlbGV0ZSBwcm9wZXJ0aWVzWyBvYmplY3QudXVpZCBdO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBjbGVhcigpIHtcXG5cXG5cXHRcXHRcXHRwcm9wZXJ0aWVzID0ge307XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFx0XFx0XFx0Z2V0OiBnZXQsXFxuXFx0XFx0XFx0cmVtb3ZlOiByZW1vdmUsXFxuXFx0XFx0XFx0Y2xlYXI6IGNsZWFyXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBXZWJHTFN0YXRlKCBnbCwgZXh0ZW5zaW9ucywgdXRpbHMgKSB7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gQ29sb3JCdWZmZXIoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGxvY2tlZCA9IGZhbHNlO1xcblxcblxcdFxcdFxcdHZhciBjb2xvciA9IG5ldyBWZWN0b3I0KCk7XFxuXFx0XFx0XFx0dmFyIGN1cnJlbnRDb2xvck1hc2sgPSBudWxsO1xcblxcdFxcdFxcdHZhciBjdXJyZW50Q29sb3JDbGVhciA9IG5ldyBWZWN0b3I0KCAwLCAwLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHtcXG5cXG5cXHRcXHRcXHRcXHRzZXRNYXNrOiBmdW5jdGlvbiAoIGNvbG9yTWFzayApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGN1cnJlbnRDb2xvck1hc2sgIT09IGNvbG9yTWFzayAmJiAhIGxvY2tlZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRnbC5jb2xvck1hc2soIGNvbG9yTWFzaywgY29sb3JNYXNrLCBjb2xvck1hc2ssIGNvbG9yTWFzayApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGN1cnJlbnRDb2xvck1hc2sgPSBjb2xvck1hc2s7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0c2V0TG9ja2VkOiBmdW5jdGlvbiAoIGxvY2sgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bG9ja2VkID0gbG9jaztcXG5cXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdHNldENsZWFyOiBmdW5jdGlvbiAoIHIsIGcsIGIsIGEsIHByZW11bHRpcGxpZWRBbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHByZW11bHRpcGxpZWRBbHBoYSA9PT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRyICo9IGE7IGcgKj0gYTsgYiAqPSBhO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRjb2xvci5zZXQoIHIsIGcsIGIsIGEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGN1cnJlbnRDb2xvckNsZWFyLmVxdWFscyggY29sb3IgKSA9PT0gZmFsc2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2wuY2xlYXJDb2xvciggciwgZywgYiwgYSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGN1cnJlbnRDb2xvckNsZWFyLmNvcHkoIGNvbG9yICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0cmVzZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsb2NrZWQgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50Q29sb3JNYXNrID0gbnVsbDtcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50Q29sb3JDbGVhci5zZXQoIC0gMSwgMCwgMCwgMCApOyAvLyBzZXQgdG8gaW52YWxpZCBzdGF0ZVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBEZXB0aEJ1ZmZlcigpIHtcXG5cXG5cXHRcXHRcXHR2YXIgbG9ja2VkID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0dmFyIGN1cnJlbnREZXB0aE1hc2sgPSBudWxsO1xcblxcdFxcdFxcdHZhciBjdXJyZW50RGVwdGhGdW5jID0gbnVsbDtcXG5cXHRcXHRcXHR2YXIgY3VycmVudERlcHRoQ2xlYXIgPSBudWxsO1xcblxcblxcdFxcdFxcdHJldHVybiB7XFxuXFxuXFx0XFx0XFx0XFx0c2V0VGVzdDogZnVuY3Rpb24gKCBkZXB0aFRlc3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkZXB0aFRlc3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZW5hYmxlKCBnbC5ERVBUSF9URVNUICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRkaXNhYmxlKCBnbC5ERVBUSF9URVNUICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0c2V0TWFzazogZnVuY3Rpb24gKCBkZXB0aE1hc2sgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBjdXJyZW50RGVwdGhNYXNrICE9PSBkZXB0aE1hc2sgJiYgISBsb2NrZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2wuZGVwdGhNYXNrKCBkZXB0aE1hc2sgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRjdXJyZW50RGVwdGhNYXNrID0gZGVwdGhNYXNrO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdHNldEZ1bmM6IGZ1bmN0aW9uICggZGVwdGhGdW5jICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggY3VycmVudERlcHRoRnVuYyAhPT0gZGVwdGhGdW5jICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGVwdGhGdW5jICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHN3aXRjaCAoIGRlcHRoRnVuYyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlIE5ldmVyRGVwdGg6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuZGVwdGhGdW5jKCBnbC5ORVZFUiApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgQWx3YXlzRGVwdGg6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuZGVwdGhGdW5jKCBnbC5BTFdBWVMgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlIExlc3NEZXB0aDpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnbC5kZXB0aEZ1bmMoIGdsLkxFU1MgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlIExlc3NFcXVhbERlcHRoOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmRlcHRoRnVuYyggZ2wuTEVRVUFMICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSBFcXVhbERlcHRoOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmRlcHRoRnVuYyggZ2wuRVFVQUwgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlIEdyZWF0ZXJFcXVhbERlcHRoOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmRlcHRoRnVuYyggZ2wuR0VRVUFMICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSBHcmVhdGVyRGVwdGg6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuZGVwdGhGdW5jKCBnbC5HUkVBVEVSICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSBOb3RFcXVhbERlcHRoOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmRlcHRoRnVuYyggZ2wuTk9URVFVQUwgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZWZhdWx0OlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmRlcHRoRnVuYyggZ2wuTEVRVUFMICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuZGVwdGhGdW5jKCBnbC5MRVFVQUwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y3VycmVudERlcHRoRnVuYyA9IGRlcHRoRnVuYztcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fSxcXG5cXG5cXHRcXHRcXHRcXHRzZXRMb2NrZWQ6IGZ1bmN0aW9uICggbG9jayApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsb2NrZWQgPSBsb2NrO1xcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0c2V0Q2xlYXI6IGZ1bmN0aW9uICggZGVwdGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBjdXJyZW50RGVwdGhDbGVhciAhPT0gZGVwdGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2wuY2xlYXJEZXB0aCggZGVwdGggKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRjdXJyZW50RGVwdGhDbGVhciA9IGRlcHRoO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdHJlc2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bG9ja2VkID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y3VycmVudERlcHRoTWFzayA9IG51bGw7XFxuXFx0XFx0XFx0XFx0XFx0Y3VycmVudERlcHRoRnVuYyA9IG51bGw7XFxuXFx0XFx0XFx0XFx0XFx0Y3VycmVudERlcHRoQ2xlYXIgPSBudWxsO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBTdGVuY2lsQnVmZmVyKCkge1xcblxcblxcdFxcdFxcdHZhciBsb2NrZWQgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR2YXIgY3VycmVudFN0ZW5jaWxNYXNrID0gbnVsbDtcXG5cXHRcXHRcXHR2YXIgY3VycmVudFN0ZW5jaWxGdW5jID0gbnVsbDtcXG5cXHRcXHRcXHR2YXIgY3VycmVudFN0ZW5jaWxSZWYgPSBudWxsO1xcblxcdFxcdFxcdHZhciBjdXJyZW50U3RlbmNpbEZ1bmNNYXNrID0gbnVsbDtcXG5cXHRcXHRcXHR2YXIgY3VycmVudFN0ZW5jaWxGYWlsID0gbnVsbDtcXG5cXHRcXHRcXHR2YXIgY3VycmVudFN0ZW5jaWxaRmFpbCA9IG51bGw7XFxuXFx0XFx0XFx0dmFyIGN1cnJlbnRTdGVuY2lsWlBhc3MgPSBudWxsO1xcblxcdFxcdFxcdHZhciBjdXJyZW50U3RlbmNpbENsZWFyID0gbnVsbDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4ge1xcblxcblxcdFxcdFxcdFxcdHNldFRlc3Q6IGZ1bmN0aW9uICggc3RlbmNpbFRlc3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBzdGVuY2lsVGVzdCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRlbmFibGUoIGdsLlNURU5DSUxfVEVTVCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZGlzYWJsZSggZ2wuU1RFTkNJTF9URVNUICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0c2V0TWFzazogZnVuY3Rpb24gKCBzdGVuY2lsTWFzayApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGN1cnJlbnRTdGVuY2lsTWFzayAhPT0gc3RlbmNpbE1hc2sgJiYgISBsb2NrZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2wuc3RlbmNpbE1hc2soIHN0ZW5jaWxNYXNrICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y3VycmVudFN0ZW5jaWxNYXNrID0gc3RlbmNpbE1hc2s7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0c2V0RnVuYzogZnVuY3Rpb24gKCBzdGVuY2lsRnVuYywgc3RlbmNpbFJlZiwgc3RlbmNpbE1hc2sgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBjdXJyZW50U3RlbmNpbEZ1bmMgIT09IHN0ZW5jaWxGdW5jIHx8XFxuXFx0XFx0XFx0XFx0XFx0ICAgICBjdXJyZW50U3RlbmNpbFJlZiBcXHQhPT0gc3RlbmNpbFJlZiBcXHR8fFxcblxcdFxcdFxcdFxcdFxcdCAgICAgY3VycmVudFN0ZW5jaWxGdW5jTWFzayAhPT0gc3RlbmNpbE1hc2sgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2wuc3RlbmNpbEZ1bmMoIHN0ZW5jaWxGdW5jLCBzdGVuY2lsUmVmLCBzdGVuY2lsTWFzayApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsRnVuYyA9IHN0ZW5jaWxGdW5jO1xcblxcdFxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsUmVmID0gc3RlbmNpbFJlZjtcXG5cXHRcXHRcXHRcXHRcXHRcXHRjdXJyZW50U3RlbmNpbEZ1bmNNYXNrID0gc3RlbmNpbE1hc2s7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0c2V0T3A6IGZ1bmN0aW9uICggc3RlbmNpbEZhaWwsIHN0ZW5jaWxaRmFpbCwgc3RlbmNpbFpQYXNzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggY3VycmVudFN0ZW5jaWxGYWlsXFx0ICE9PSBzdGVuY2lsRmFpbCBcXHR8fFxcblxcdFxcdFxcdFxcdFxcdCAgICAgY3VycmVudFN0ZW5jaWxaRmFpbCAhPT0gc3RlbmNpbFpGYWlsIHx8XFxuXFx0XFx0XFx0XFx0XFx0ICAgICBjdXJyZW50U3RlbmNpbFpQYXNzICE9PSBzdGVuY2lsWlBhc3MgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2wuc3RlbmNpbE9wKCBzdGVuY2lsRmFpbCwgc3RlbmNpbFpGYWlsLCBzdGVuY2lsWlBhc3MgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjdXJyZW50U3RlbmNpbEZhaWwgPSBzdGVuY2lsRmFpbDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRjdXJyZW50U3RlbmNpbFpGYWlsID0gc3RlbmNpbFpGYWlsO1xcblxcdFxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsWlBhc3MgPSBzdGVuY2lsWlBhc3M7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0c2V0TG9ja2VkOiBmdW5jdGlvbiAoIGxvY2sgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bG9ja2VkID0gbG9jaztcXG5cXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdHNldENsZWFyOiBmdW5jdGlvbiAoIHN0ZW5jaWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBjdXJyZW50U3RlbmNpbENsZWFyICE9PSBzdGVuY2lsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGdsLmNsZWFyU3RlbmNpbCggc3RlbmNpbCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsQ2xlYXIgPSBzdGVuY2lsO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdHJlc2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bG9ja2VkID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y3VycmVudFN0ZW5jaWxNYXNrID0gbnVsbDtcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50U3RlbmNpbEZ1bmMgPSBudWxsO1xcblxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsUmVmID0gbnVsbDtcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50U3RlbmNpbEZ1bmNNYXNrID0gbnVsbDtcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50U3RlbmNpbEZhaWwgPSBudWxsO1xcblxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsWkZhaWwgPSBudWxsO1xcblxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsWlBhc3MgPSBudWxsO1xcblxcdFxcdFxcdFxcdFxcdGN1cnJlbnRTdGVuY2lsQ2xlYXIgPSBudWxsO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHZhciBjb2xvckJ1ZmZlciA9IG5ldyBDb2xvckJ1ZmZlcigpO1xcblxcdFxcdHZhciBkZXB0aEJ1ZmZlciA9IG5ldyBEZXB0aEJ1ZmZlcigpO1xcblxcdFxcdHZhciBzdGVuY2lsQnVmZmVyID0gbmV3IFN0ZW5jaWxCdWZmZXIoKTtcXG5cXG5cXHRcXHR2YXIgbWF4VmVydGV4QXR0cmlidXRlcyA9IGdsLmdldFBhcmFtZXRlciggZ2wuTUFYX1ZFUlRFWF9BVFRSSUJTICk7XFxuXFx0XFx0dmFyIG5ld0F0dHJpYnV0ZXMgPSBuZXcgVWludDhBcnJheSggbWF4VmVydGV4QXR0cmlidXRlcyApO1xcblxcdFxcdHZhciBlbmFibGVkQXR0cmlidXRlcyA9IG5ldyBVaW50OEFycmF5KCBtYXhWZXJ0ZXhBdHRyaWJ1dGVzICk7XFxuXFx0XFx0dmFyIGF0dHJpYnV0ZURpdmlzb3JzID0gbmV3IFVpbnQ4QXJyYXkoIG1heFZlcnRleEF0dHJpYnV0ZXMgKTtcXG5cXG5cXHRcXHR2YXIgY2FwYWJpbGl0aWVzID0ge307XFxuXFxuXFx0XFx0dmFyIGNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyA9IG51bGw7XFxuXFxuXFx0XFx0dmFyIGN1cnJlbnRQcm9ncmFtID0gbnVsbDtcXG5cXG5cXHRcXHR2YXIgY3VycmVudEJsZW5kaW5nID0gbnVsbDtcXG5cXHRcXHR2YXIgY3VycmVudEJsZW5kRXF1YXRpb24gPSBudWxsO1xcblxcdFxcdHZhciBjdXJyZW50QmxlbmRTcmMgPSBudWxsO1xcblxcdFxcdHZhciBjdXJyZW50QmxlbmREc3QgPSBudWxsO1xcblxcdFxcdHZhciBjdXJyZW50QmxlbmRFcXVhdGlvbkFscGhhID0gbnVsbDtcXG5cXHRcXHR2YXIgY3VycmVudEJsZW5kU3JjQWxwaGEgPSBudWxsO1xcblxcdFxcdHZhciBjdXJyZW50QmxlbmREc3RBbHBoYSA9IG51bGw7XFxuXFx0XFx0dmFyIGN1cnJlbnRQcmVtdWx0aXBsZWRBbHBoYSA9IGZhbHNlO1xcblxcblxcdFxcdHZhciBjdXJyZW50RmxpcFNpZGVkID0gbnVsbDtcXG5cXHRcXHR2YXIgY3VycmVudEN1bGxGYWNlID0gbnVsbDtcXG5cXG5cXHRcXHR2YXIgY3VycmVudExpbmVXaWR0aCA9IG51bGw7XFxuXFxuXFx0XFx0dmFyIGN1cnJlbnRQb2x5Z29uT2Zmc2V0RmFjdG9yID0gbnVsbDtcXG5cXHRcXHR2YXIgY3VycmVudFBvbHlnb25PZmZzZXRVbml0cyA9IG51bGw7XFxuXFxuXFx0XFx0dmFyIG1heFRleHR1cmVzID0gZ2wuZ2V0UGFyYW1ldGVyKCBnbC5NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUyApO1xcblxcblxcdFxcdHZhciB2ZXJzaW9uID0gcGFyc2VGbG9hdCggL15XZWJHTFxcXFwgKFswLTldKS8uZXhlYyggZ2wuZ2V0UGFyYW1ldGVyKCBnbC5WRVJTSU9OICkgKVsgMSBdICk7XFxuXFx0XFx0dmFyIGxpbmVXaWR0aEF2YWlsYWJsZSA9IHBhcnNlRmxvYXQoIHZlcnNpb24gKSA+PSAxLjA7XFxuXFxuXFx0XFx0dmFyIGN1cnJlbnRUZXh0dXJlU2xvdCA9IG51bGw7XFxuXFx0XFx0dmFyIGN1cnJlbnRCb3VuZFRleHR1cmVzID0ge307XFxuXFxuXFx0XFx0dmFyIGN1cnJlbnRTY2lzc29yID0gbmV3IFZlY3RvcjQoKTtcXG5cXHRcXHR2YXIgY3VycmVudFZpZXdwb3J0ID0gbmV3IFZlY3RvcjQoKTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBjcmVhdGVUZXh0dXJlKCB0eXBlLCB0YXJnZXQsIGNvdW50ICkge1xcblxcblxcdFxcdFxcdHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoIDQgKTsgLy8gNCBpcyByZXF1aXJlZCB0byBtYXRjaCBkZWZhdWx0IHVucGFjayBhbGlnbm1lbnQgb2YgNC5cXG5cXHRcXHRcXHR2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTtcXG5cXG5cXHRcXHRcXHRnbC5iaW5kVGV4dHVyZSggdHlwZSwgdGV4dHVyZSApO1xcblxcdFxcdFxcdGdsLnRleFBhcmFtZXRlcmkoIHR5cGUsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCApO1xcblxcdFxcdFxcdGdsLnRleFBhcmFtZXRlcmkoIHR5cGUsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCApO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGNvdW50OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGdsLnRleEltYWdlMkQoIHRhcmdldCArIGksIDAsIGdsLlJHQkEsIDEsIDEsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGRhdGEgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRleHR1cmU7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHZhciBlbXB0eVRleHR1cmVzID0ge307XFxuXFx0XFx0ZW1wdHlUZXh0dXJlc1sgZ2wuVEVYVFVSRV8yRCBdID0gY3JlYXRlVGV4dHVyZSggZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV8yRCwgMSApO1xcblxcdFxcdGVtcHR5VGV4dHVyZXNbIGdsLlRFWFRVUkVfQ1VCRV9NQVAgXSA9IGNyZWF0ZVRleHR1cmUoIGdsLlRFWFRVUkVfQ1VCRV9NQVAsIGdsLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgNiApO1xcblxcblxcdFxcdC8vIGluaXRcXG5cXG5cXHRcXHRjb2xvckJ1ZmZlci5zZXRDbGVhciggMCwgMCwgMCwgMSApO1xcblxcdFxcdGRlcHRoQnVmZmVyLnNldENsZWFyKCAxICk7XFxuXFx0XFx0c3RlbmNpbEJ1ZmZlci5zZXRDbGVhciggMCApO1xcblxcblxcdFxcdGVuYWJsZSggZ2wuREVQVEhfVEVTVCApO1xcblxcdFxcdGRlcHRoQnVmZmVyLnNldEZ1bmMoIExlc3NFcXVhbERlcHRoICk7XFxuXFxuXFx0XFx0c2V0RmxpcFNpZGVkKCBmYWxzZSApO1xcblxcdFxcdHNldEN1bGxGYWNlKCBDdWxsRmFjZUJhY2sgKTtcXG5cXHRcXHRlbmFibGUoIGdsLkNVTExfRkFDRSApO1xcblxcblxcdFxcdGVuYWJsZSggZ2wuQkxFTkQgKTtcXG5cXHRcXHRzZXRCbGVuZGluZyggTm9ybWFsQmxlbmRpbmcgKTtcXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdGZ1bmN0aW9uIGluaXRBdHRyaWJ1dGVzKCkge1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IG5ld0F0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRuZXdBdHRyaWJ1dGVzWyBpIF0gPSAwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZW5hYmxlQXR0cmlidXRlKCBhdHRyaWJ1dGUgKSB7XFxuXFxuXFx0XFx0XFx0bmV3QXR0cmlidXRlc1sgYXR0cmlidXRlIF0gPSAxO1xcblxcblxcdFxcdFxcdGlmICggZW5hYmxlZEF0dHJpYnV0ZXNbIGF0dHJpYnV0ZSBdID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KCBhdHRyaWJ1dGUgKTtcXG5cXHRcXHRcXHRcXHRlbmFibGVkQXR0cmlidXRlc1sgYXR0cmlidXRlIF0gPSAxO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZURpdmlzb3JzWyBhdHRyaWJ1dGUgXSAhPT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZXh0ZW5zaW9uID0gZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApO1xcblxcblxcdFxcdFxcdFxcdGV4dGVuc2lvbi52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoIGF0dHJpYnV0ZSwgMCApO1xcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZURpdmlzb3JzWyBhdHRyaWJ1dGUgXSA9IDA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBlbmFibGVBdHRyaWJ1dGVBbmREaXZpc29yKCBhdHRyaWJ1dGUsIG1lc2hQZXJBdHRyaWJ1dGUgKSB7XFxuXFxuXFx0XFx0XFx0bmV3QXR0cmlidXRlc1sgYXR0cmlidXRlIF0gPSAxO1xcblxcblxcdFxcdFxcdGlmICggZW5hYmxlZEF0dHJpYnV0ZXNbIGF0dHJpYnV0ZSBdID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KCBhdHRyaWJ1dGUgKTtcXG5cXHRcXHRcXHRcXHRlbmFibGVkQXR0cmlidXRlc1sgYXR0cmlidXRlIF0gPSAxO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZURpdmlzb3JzWyBhdHRyaWJ1dGUgXSAhPT0gbWVzaFBlckF0dHJpYnV0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZXh0ZW5zaW9uID0gZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApO1xcblxcblxcdFxcdFxcdFxcdGV4dGVuc2lvbi52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoIGF0dHJpYnV0ZSwgbWVzaFBlckF0dHJpYnV0ZSApO1xcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZURpdmlzb3JzWyBhdHRyaWJ1dGUgXSA9IG1lc2hQZXJBdHRyaWJ1dGU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBkaXNhYmxlVW51c2VkQXR0cmlidXRlcygpIHtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBlbmFibGVkQXR0cmlidXRlcy5sZW5ndGg7IGkgIT09IGw7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBlbmFibGVkQXR0cmlidXRlc1sgaSBdICE9PSBuZXdBdHRyaWJ1dGVzWyBpIF0gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KCBpICk7XFxuXFx0XFx0XFx0XFx0XFx0ZW5hYmxlZEF0dHJpYnV0ZXNbIGkgXSA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZW5hYmxlKCBpZCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGNhcGFiaWxpdGllc1sgaWQgXSAhPT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRnbC5lbmFibGUoIGlkICk7XFxuXFx0XFx0XFx0XFx0Y2FwYWJpbGl0aWVzWyBpZCBdID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGRpc2FibGUoIGlkICkge1xcblxcblxcdFxcdFxcdGlmICggY2FwYWJpbGl0aWVzWyBpZCBdICE9PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRnbC5kaXNhYmxlKCBpZCApO1xcblxcdFxcdFxcdFxcdGNhcGFiaWxpdGllc1sgaWQgXSA9IGZhbHNlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKCkge1xcblxcblxcdFxcdFxcdGlmICggY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdGNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdGlmICggZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkgfHxcXG5cXHRcXHRcXHRcXHQgICAgIGV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMnICkgfHxcXG5cXHRcXHRcXHRcXHQgICAgIGV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEnICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGZvcm1hdHMgPSBnbC5nZXRQYXJhbWV0ZXIoIGdsLkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgZm9ybWF0cy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnB1c2goIGZvcm1hdHNbIGkgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBjb21wcmVzc2VkVGV4dHVyZUZvcm1hdHM7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHVzZVByb2dyYW0oIHByb2dyYW0gKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBjdXJyZW50UHJvZ3JhbSAhPT0gcHJvZ3JhbSApIHtcXG5cXG5cXHRcXHRcXHRcXHRnbC51c2VQcm9ncmFtKCBwcm9ncmFtICk7XFxuXFxuXFx0XFx0XFx0XFx0Y3VycmVudFByb2dyYW0gPSBwcm9ncmFtO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHNldEJsZW5kaW5nKCBibGVuZGluZywgYmxlbmRFcXVhdGlvbiwgYmxlbmRTcmMsIGJsZW5kRHN0LCBibGVuZEVxdWF0aW9uQWxwaGEsIGJsZW5kU3JjQWxwaGEsIGJsZW5kRHN0QWxwaGEsIHByZW11bHRpcGxpZWRBbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGJsZW5kaW5nICE9PSBOb0JsZW5kaW5nICkge1xcblxcblxcdFxcdFxcdFxcdGVuYWJsZSggZ2wuQkxFTkQgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGRpc2FibGUoIGdsLkJMRU5EICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggYmxlbmRpbmcgIT09IEN1c3RvbUJsZW5kaW5nICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggYmxlbmRpbmcgIT09IGN1cnJlbnRCbGVuZGluZyB8fCBwcmVtdWx0aXBsaWVkQWxwaGEgIT09IGN1cnJlbnRQcmVtdWx0aXBsZWRBbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzd2l0Y2ggKCBibGVuZGluZyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlIEFkZGl0aXZlQmxlbmRpbmc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBwcmVtdWx0aXBsaWVkQWxwaGEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuYmxlbmRFcXVhdGlvblNlcGFyYXRlKCBnbC5GVU5DX0FERCwgZ2wuRlVOQ19BREQgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnbC5ibGVuZEZ1bmNTZXBhcmF0ZSggZ2wuT05FLCBnbC5PTkUsIGdsLk9ORSwgZ2wuT05FICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnbC5ibGVuZEVxdWF0aW9uKCBnbC5GVU5DX0FERCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmJsZW5kRnVuYyggZ2wuU1JDX0FMUEhBLCBnbC5PTkUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSBTdWJ0cmFjdGl2ZUJsZW5kaW5nOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggcHJlbXVsdGlwbGllZEFscGhhICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZSggZ2wuRlVOQ19BREQsIGdsLkZVTkNfQUREICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuYmxlbmRGdW5jU2VwYXJhdGUoIGdsLlpFUk8sIGdsLlpFUk8sIGdsLk9ORV9NSU5VU19TUkNfQ09MT1IsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmJsZW5kRXF1YXRpb24oIGdsLkZVTkNfQUREICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuYmxlbmRGdW5jKCBnbC5aRVJPLCBnbC5PTkVfTUlOVVNfU1JDX0NPTE9SICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgTXVsdGlwbHlCbGVuZGluZzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHByZW11bHRpcGxpZWRBbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnbC5ibGVuZEVxdWF0aW9uU2VwYXJhdGUoIGdsLkZVTkNfQURELCBnbC5GVU5DX0FERCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmJsZW5kRnVuY1NlcGFyYXRlKCBnbC5aRVJPLCBnbC5TUkNfQ09MT1IsIGdsLlpFUk8sIGdsLlNSQ19BTFBIQSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuYmxlbmRFcXVhdGlvbiggZ2wuRlVOQ19BREQgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnbC5ibGVuZEZ1bmMoIGdsLlpFUk8sIGdsLlNSQ19DT0xPUiApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRkZWZhdWx0OlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggcHJlbXVsdGlwbGllZEFscGhhICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZSggZ2wuRlVOQ19BREQsIGdsLkZVTkNfQUREICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2wuYmxlbmRGdW5jU2VwYXJhdGUoIGdsLk9ORSwgZ2wuT05FX01JTlVTX1NSQ19BTFBIQSwgZ2wuT05FLCBnbC5PTkVfTUlOVVNfU1JDX0FMUEhBICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnbC5ibGVuZEVxdWF0aW9uU2VwYXJhdGUoIGdsLkZVTkNfQURELCBnbC5GVU5DX0FERCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdsLmJsZW5kRnVuY1NlcGFyYXRlKCBnbC5TUkNfQUxQSEEsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEsIGdsLk9ORSwgZ2wuT05FX01JTlVTX1NSQ19BTFBIQSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGN1cnJlbnRCbGVuZEVxdWF0aW9uID0gbnVsbDtcXG5cXHRcXHRcXHRcXHRjdXJyZW50QmxlbmRTcmMgPSBudWxsO1xcblxcdFxcdFxcdFxcdGN1cnJlbnRCbGVuZERzdCA9IG51bGw7XFxuXFx0XFx0XFx0XFx0Y3VycmVudEJsZW5kRXF1YXRpb25BbHBoYSA9IG51bGw7XFxuXFx0XFx0XFx0XFx0Y3VycmVudEJsZW5kU3JjQWxwaGEgPSBudWxsO1xcblxcdFxcdFxcdFxcdGN1cnJlbnRCbGVuZERzdEFscGhhID0gbnVsbDtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGJsZW5kRXF1YXRpb25BbHBoYSA9IGJsZW5kRXF1YXRpb25BbHBoYSB8fCBibGVuZEVxdWF0aW9uO1xcblxcdFxcdFxcdFxcdGJsZW5kU3JjQWxwaGEgPSBibGVuZFNyY0FscGhhIHx8IGJsZW5kU3JjO1xcblxcdFxcdFxcdFxcdGJsZW5kRHN0QWxwaGEgPSBibGVuZERzdEFscGhhIHx8IGJsZW5kRHN0O1xcblxcblxcdFxcdFxcdFxcdGlmICggYmxlbmRFcXVhdGlvbiAhPT0gY3VycmVudEJsZW5kRXF1YXRpb24gfHwgYmxlbmRFcXVhdGlvbkFscGhhICE9PSBjdXJyZW50QmxlbmRFcXVhdGlvbkFscGhhICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGdsLmJsZW5kRXF1YXRpb25TZXBhcmF0ZSggdXRpbHMuY29udmVydCggYmxlbmRFcXVhdGlvbiApLCB1dGlscy5jb252ZXJ0KCBibGVuZEVxdWF0aW9uQWxwaGEgKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdGN1cnJlbnRCbGVuZEVxdWF0aW9uID0gYmxlbmRFcXVhdGlvbjtcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50QmxlbmRFcXVhdGlvbkFscGhhID0gYmxlbmRFcXVhdGlvbkFscGhhO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGJsZW5kU3JjICE9PSBjdXJyZW50QmxlbmRTcmMgfHwgYmxlbmREc3QgIT09IGN1cnJlbnRCbGVuZERzdCB8fCBibGVuZFNyY0FscGhhICE9PSBjdXJyZW50QmxlbmRTcmNBbHBoYSB8fCBibGVuZERzdEFscGhhICE9PSBjdXJyZW50QmxlbmREc3RBbHBoYSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRnbC5ibGVuZEZ1bmNTZXBhcmF0ZSggdXRpbHMuY29udmVydCggYmxlbmRTcmMgKSwgdXRpbHMuY29udmVydCggYmxlbmREc3QgKSwgdXRpbHMuY29udmVydCggYmxlbmRTcmNBbHBoYSApLCB1dGlscy5jb252ZXJ0KCBibGVuZERzdEFscGhhICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50QmxlbmRTcmMgPSBibGVuZFNyYztcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50QmxlbmREc3QgPSBibGVuZERzdDtcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50QmxlbmRTcmNBbHBoYSA9IGJsZW5kU3JjQWxwaGE7XFxuXFx0XFx0XFx0XFx0XFx0Y3VycmVudEJsZW5kRHN0QWxwaGEgPSBibGVuZERzdEFscGhhO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Y3VycmVudEJsZW5kaW5nID0gYmxlbmRpbmc7XFxuXFx0XFx0XFx0Y3VycmVudFByZW11bHRpcGxlZEFscGhhID0gcHJlbXVsdGlwbGllZEFscGhhO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBzZXRNYXRlcmlhbCggbWF0ZXJpYWwsIGZyb250RmFjZUNXICkge1xcblxcblxcdFxcdFxcdG1hdGVyaWFsLnNpZGUgPT09IERvdWJsZVNpZGVcXG5cXHRcXHRcXHRcXHQ/IGRpc2FibGUoIGdsLkNVTExfRkFDRSApXFxuXFx0XFx0XFx0XFx0OiBlbmFibGUoIGdsLkNVTExfRkFDRSApO1xcblxcblxcdFxcdFxcdHZhciBmbGlwU2lkZWQgPSAoIG1hdGVyaWFsLnNpZGUgPT09IEJhY2tTaWRlICk7XFxuXFx0XFx0XFx0aWYgKCBmcm9udEZhY2VDVyApIGZsaXBTaWRlZCA9ICEgZmxpcFNpZGVkO1xcblxcblxcdFxcdFxcdHNldEZsaXBTaWRlZCggZmxpcFNpZGVkICk7XFxuXFxuXFx0XFx0XFx0bWF0ZXJpYWwudHJhbnNwYXJlbnQgPT09IHRydWVcXG5cXHRcXHRcXHRcXHQ/IHNldEJsZW5kaW5nKCBtYXRlcmlhbC5ibGVuZGluZywgbWF0ZXJpYWwuYmxlbmRFcXVhdGlvbiwgbWF0ZXJpYWwuYmxlbmRTcmMsIG1hdGVyaWFsLmJsZW5kRHN0LCBtYXRlcmlhbC5ibGVuZEVxdWF0aW9uQWxwaGEsIG1hdGVyaWFsLmJsZW5kU3JjQWxwaGEsIG1hdGVyaWFsLmJsZW5kRHN0QWxwaGEsIG1hdGVyaWFsLnByZW11bHRpcGxpZWRBbHBoYSApXFxuXFx0XFx0XFx0XFx0OiBzZXRCbGVuZGluZyggTm9CbGVuZGluZyApO1xcblxcblxcdFxcdFxcdGRlcHRoQnVmZmVyLnNldEZ1bmMoIG1hdGVyaWFsLmRlcHRoRnVuYyApO1xcblxcdFxcdFxcdGRlcHRoQnVmZmVyLnNldFRlc3QoIG1hdGVyaWFsLmRlcHRoVGVzdCApO1xcblxcdFxcdFxcdGRlcHRoQnVmZmVyLnNldE1hc2soIG1hdGVyaWFsLmRlcHRoV3JpdGUgKTtcXG5cXHRcXHRcXHRjb2xvckJ1ZmZlci5zZXRNYXNrKCBtYXRlcmlhbC5jb2xvcldyaXRlICk7XFxuXFxuXFx0XFx0XFx0c2V0UG9seWdvbk9mZnNldCggbWF0ZXJpYWwucG9seWdvbk9mZnNldCwgbWF0ZXJpYWwucG9seWdvbk9mZnNldEZhY3RvciwgbWF0ZXJpYWwucG9seWdvbk9mZnNldFVuaXRzICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vXFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0RmxpcFNpZGVkKCBmbGlwU2lkZWQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBjdXJyZW50RmxpcFNpZGVkICE9PSBmbGlwU2lkZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBmbGlwU2lkZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2wuZnJvbnRGYWNlKCBnbC5DVyApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2wuZnJvbnRGYWNlKCBnbC5DQ1cgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Y3VycmVudEZsaXBTaWRlZCA9IGZsaXBTaWRlZDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHNldEN1bGxGYWNlKCBjdWxsRmFjZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGN1bGxGYWNlICE9PSBDdWxsRmFjZU5vbmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZW5hYmxlKCBnbC5DVUxMX0ZBQ0UgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGN1bGxGYWNlICE9PSBjdXJyZW50Q3VsbEZhY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBjdWxsRmFjZSA9PT0gQ3VsbEZhY2VCYWNrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGdsLmN1bGxGYWNlKCBnbC5CQUNLICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIGlmICggY3VsbEZhY2UgPT09IEN1bGxGYWNlRnJvbnQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2wuY3VsbEZhY2UoIGdsLkZST05UICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRnbC5jdWxsRmFjZSggZ2wuRlJPTlRfQU5EX0JBQ0sgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGlzYWJsZSggZ2wuQ1VMTF9GQUNFICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGN1cnJlbnRDdWxsRmFjZSA9IGN1bGxGYWNlO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBzZXRMaW5lV2lkdGgoIHdpZHRoICkge1xcblxcblxcdFxcdFxcdGlmICggd2lkdGggIT09IGN1cnJlbnRMaW5lV2lkdGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBsaW5lV2lkdGhBdmFpbGFibGUgKSBnbC5saW5lV2lkdGgoIHdpZHRoICk7XFxuXFxuXFx0XFx0XFx0XFx0Y3VycmVudExpbmVXaWR0aCA9IHdpZHRoO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0UG9seWdvbk9mZnNldCggcG9seWdvbk9mZnNldCwgZmFjdG9yLCB1bml0cyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHBvbHlnb25PZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZW5hYmxlKCBnbC5QT0xZR09OX09GRlNFVF9GSUxMICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBjdXJyZW50UG9seWdvbk9mZnNldEZhY3RvciAhPT0gZmFjdG9yIHx8IGN1cnJlbnRQb2x5Z29uT2Zmc2V0VW5pdHMgIT09IHVuaXRzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGdsLnBvbHlnb25PZmZzZXQoIGZhY3RvciwgdW5pdHMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50UG9seWdvbk9mZnNldEZhY3RvciA9IGZhY3RvcjtcXG5cXHRcXHRcXHRcXHRcXHRjdXJyZW50UG9seWdvbk9mZnNldFVuaXRzID0gdW5pdHM7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGlzYWJsZSggZ2wuUE9MWUdPTl9PRkZTRVRfRklMTCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0U2Npc3NvclRlc3QoIHNjaXNzb3JUZXN0ICkge1xcblxcblxcdFxcdFxcdGlmICggc2Npc3NvclRlc3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZW5hYmxlKCBnbC5TQ0lTU09SX1RFU1QgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGRpc2FibGUoIGdsLlNDSVNTT1JfVEVTVCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gdGV4dHVyZVxcblxcblxcdFxcdGZ1bmN0aW9uIGFjdGl2ZVRleHR1cmUoIHdlYmdsU2xvdCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHdlYmdsU2xvdCA9PT0gdW5kZWZpbmVkICkgd2ViZ2xTbG90ID0gZ2wuVEVYVFVSRTAgKyBtYXhUZXh0dXJlcyAtIDE7XFxuXFxuXFx0XFx0XFx0aWYgKCBjdXJyZW50VGV4dHVyZVNsb3QgIT09IHdlYmdsU2xvdCApIHtcXG5cXG5cXHRcXHRcXHRcXHRnbC5hY3RpdmVUZXh0dXJlKCB3ZWJnbFNsb3QgKTtcXG5cXHRcXHRcXHRcXHRjdXJyZW50VGV4dHVyZVNsb3QgPSB3ZWJnbFNsb3Q7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBiaW5kVGV4dHVyZSggd2ViZ2xUeXBlLCB3ZWJnbFRleHR1cmUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBjdXJyZW50VGV4dHVyZVNsb3QgPT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YWN0aXZlVGV4dHVyZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgYm91bmRUZXh0dXJlID0gY3VycmVudEJvdW5kVGV4dHVyZXNbIGN1cnJlbnRUZXh0dXJlU2xvdCBdO1xcblxcblxcdFxcdFxcdGlmICggYm91bmRUZXh0dXJlID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ym91bmRUZXh0dXJlID0geyB0eXBlOiB1bmRlZmluZWQsIHRleHR1cmU6IHVuZGVmaW5lZCB9O1xcblxcdFxcdFxcdFxcdGN1cnJlbnRCb3VuZFRleHR1cmVzWyBjdXJyZW50VGV4dHVyZVNsb3QgXSA9IGJvdW5kVGV4dHVyZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBib3VuZFRleHR1cmUudHlwZSAhPT0gd2ViZ2xUeXBlIHx8IGJvdW5kVGV4dHVyZS50ZXh0dXJlICE9PSB3ZWJnbFRleHR1cmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Z2wuYmluZFRleHR1cmUoIHdlYmdsVHlwZSwgd2ViZ2xUZXh0dXJlIHx8IGVtcHR5VGV4dHVyZXNbIHdlYmdsVHlwZSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0Ym91bmRUZXh0dXJlLnR5cGUgPSB3ZWJnbFR5cGU7XFxuXFx0XFx0XFx0XFx0Ym91bmRUZXh0dXJlLnRleHR1cmUgPSB3ZWJnbFRleHR1cmU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBjb21wcmVzc2VkVGV4SW1hZ2UyRCgpIHtcXG5cXG5cXHRcXHRcXHR0cnkge1xcblxcblxcdFxcdFxcdFxcdGdsLmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KCBnbCwgYXJndW1lbnRzICk7XFxuXFxuXFx0XFx0XFx0fSBjYXRjaCAoIGVycm9yICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5XZWJHTFN0YXRlOicsIGVycm9yICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiB0ZXhJbWFnZTJEKCkge1xcblxcblxcdFxcdFxcdHRyeSB7XFxuXFxuXFx0XFx0XFx0XFx0Z2wudGV4SW1hZ2UyRC5hcHBseSggZ2wsIGFyZ3VtZW50cyApO1xcblxcblxcdFxcdFxcdH0gY2F0Y2ggKCBlcnJvciApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuV2ViR0xTdGF0ZTonLCBlcnJvciApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHRmdW5jdGlvbiBzY2lzc29yKCBzY2lzc29yICkge1xcblxcblxcdFxcdFxcdGlmICggY3VycmVudFNjaXNzb3IuZXF1YWxzKCBzY2lzc29yICkgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGdsLnNjaXNzb3IoIHNjaXNzb3IueCwgc2Npc3Nvci55LCBzY2lzc29yLnosIHNjaXNzb3IudyApO1xcblxcdFxcdFxcdFxcdGN1cnJlbnRTY2lzc29yLmNvcHkoIHNjaXNzb3IgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHZpZXdwb3J0KCB2aWV3cG9ydCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGN1cnJlbnRWaWV3cG9ydC5lcXVhbHMoIHZpZXdwb3J0ICkgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGdsLnZpZXdwb3J0KCB2aWV3cG9ydC54LCB2aWV3cG9ydC55LCB2aWV3cG9ydC56LCB2aWV3cG9ydC53ICk7XFxuXFx0XFx0XFx0XFx0Y3VycmVudFZpZXdwb3J0LmNvcHkoIHZpZXdwb3J0ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdGZ1bmN0aW9uIHJlc2V0KCkge1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGVuYWJsZWRBdHRyaWJ1dGVzLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGVuYWJsZWRBdHRyaWJ1dGVzWyBpIF0gPT09IDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KCBpICk7XFxuXFx0XFx0XFx0XFx0XFx0ZW5hYmxlZEF0dHJpYnV0ZXNbIGkgXSA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRjYXBhYmlsaXRpZXMgPSB7fTtcXG5cXG5cXHRcXHRcXHRjb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMgPSBudWxsO1xcblxcblxcdFxcdFxcdGN1cnJlbnRUZXh0dXJlU2xvdCA9IG51bGw7XFxuXFx0XFx0XFx0Y3VycmVudEJvdW5kVGV4dHVyZXMgPSB7fTtcXG5cXG5cXHRcXHRcXHRjdXJyZW50UHJvZ3JhbSA9IG51bGw7XFxuXFxuXFx0XFx0XFx0Y3VycmVudEJsZW5kaW5nID0gbnVsbDtcXG5cXG5cXHRcXHRcXHRjdXJyZW50RmxpcFNpZGVkID0gbnVsbDtcXG5cXHRcXHRcXHRjdXJyZW50Q3VsbEZhY2UgPSBudWxsO1xcblxcblxcdFxcdFxcdGNvbG9yQnVmZmVyLnJlc2V0KCk7XFxuXFx0XFx0XFx0ZGVwdGhCdWZmZXIucmVzZXQoKTtcXG5cXHRcXHRcXHRzdGVuY2lsQnVmZmVyLnJlc2V0KCk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB7XFxuXFxuXFx0XFx0XFx0YnVmZmVyczoge1xcblxcdFxcdFxcdFxcdGNvbG9yOiBjb2xvckJ1ZmZlcixcXG5cXHRcXHRcXHRcXHRkZXB0aDogZGVwdGhCdWZmZXIsXFxuXFx0XFx0XFx0XFx0c3RlbmNpbDogc3RlbmNpbEJ1ZmZlclxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0aW5pdEF0dHJpYnV0ZXM6IGluaXRBdHRyaWJ1dGVzLFxcblxcdFxcdFxcdGVuYWJsZUF0dHJpYnV0ZTogZW5hYmxlQXR0cmlidXRlLFxcblxcdFxcdFxcdGVuYWJsZUF0dHJpYnV0ZUFuZERpdmlzb3I6IGVuYWJsZUF0dHJpYnV0ZUFuZERpdmlzb3IsXFxuXFx0XFx0XFx0ZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXM6IGRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzLFxcblxcdFxcdFxcdGVuYWJsZTogZW5hYmxlLFxcblxcdFxcdFxcdGRpc2FibGU6IGRpc2FibGUsXFxuXFx0XFx0XFx0Z2V0Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzOiBnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMsXFxuXFxuXFx0XFx0XFx0dXNlUHJvZ3JhbTogdXNlUHJvZ3JhbSxcXG5cXG5cXHRcXHRcXHRzZXRCbGVuZGluZzogc2V0QmxlbmRpbmcsXFxuXFx0XFx0XFx0c2V0TWF0ZXJpYWw6IHNldE1hdGVyaWFsLFxcblxcblxcdFxcdFxcdHNldEZsaXBTaWRlZDogc2V0RmxpcFNpZGVkLFxcblxcdFxcdFxcdHNldEN1bGxGYWNlOiBzZXRDdWxsRmFjZSxcXG5cXG5cXHRcXHRcXHRzZXRMaW5lV2lkdGg6IHNldExpbmVXaWR0aCxcXG5cXHRcXHRcXHRzZXRQb2x5Z29uT2Zmc2V0OiBzZXRQb2x5Z29uT2Zmc2V0LFxcblxcblxcdFxcdFxcdHNldFNjaXNzb3JUZXN0OiBzZXRTY2lzc29yVGVzdCxcXG5cXG5cXHRcXHRcXHRhY3RpdmVUZXh0dXJlOiBhY3RpdmVUZXh0dXJlLFxcblxcdFxcdFxcdGJpbmRUZXh0dXJlOiBiaW5kVGV4dHVyZSxcXG5cXHRcXHRcXHRjb21wcmVzc2VkVGV4SW1hZ2UyRDogY29tcHJlc3NlZFRleEltYWdlMkQsXFxuXFx0XFx0XFx0dGV4SW1hZ2UyRDogdGV4SW1hZ2UyRCxcXG5cXG5cXHRcXHRcXHRzY2lzc29yOiBzY2lzc29yLFxcblxcdFxcdFxcdHZpZXdwb3J0OiB2aWV3cG9ydCxcXG5cXG5cXHRcXHRcXHRyZXNldDogcmVzZXRcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMQ2FwYWJpbGl0aWVzKCBnbCwgZXh0ZW5zaW9ucywgcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHR2YXIgbWF4QW5pc290cm9weTtcXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXRNYXhBbmlzb3Ryb3B5KCkge1xcblxcblxcdFxcdFxcdGlmICggbWF4QW5pc290cm9weSAhPT0gdW5kZWZpbmVkICkgcmV0dXJuIG1heEFuaXNvdHJvcHk7XFxuXFxuXFx0XFx0XFx0dmFyIGV4dGVuc2lvbiA9IGV4dGVuc2lvbnMuZ2V0KCAnRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljJyApO1xcblxcblxcdFxcdFxcdGlmICggZXh0ZW5zaW9uICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdG1heEFuaXNvdHJvcHkgPSBnbC5nZXRQYXJhbWV0ZXIoIGV4dGVuc2lvbi5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdG1heEFuaXNvdHJvcHkgPSAwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gbWF4QW5pc290cm9weTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2V0TWF4UHJlY2lzaW9uKCBwcmVjaXNpb24gKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBwcmVjaXNpb24gPT09ICdoaWdocCcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnbC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoIGdsLlZFUlRFWF9TSEFERVIsIGdsLkhJR0hfRkxPQVQgKS5wcmVjaXNpb24gPiAwICYmXFxuXFx0XFx0XFx0XFx0ICAgICBnbC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoIGdsLkZSQUdNRU5UX1NIQURFUiwgZ2wuSElHSF9GTE9BVCApLnByZWNpc2lvbiA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuICdoaWdocCc7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHByZWNpc2lvbiA9ICdtZWRpdW1wJztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBwcmVjaXNpb24gPT09ICdtZWRpdW1wJyApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGdsLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCggZ2wuVkVSVEVYX1NIQURFUiwgZ2wuTUVESVVNX0ZMT0FUICkucHJlY2lzaW9uID4gMCAmJlxcblxcdFxcdFxcdFxcdCAgICAgZ2wuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KCBnbC5GUkFHTUVOVF9TSEFERVIsIGdsLk1FRElVTV9GTE9BVCApLnByZWNpc2lvbiA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuICdtZWRpdW1wJztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiAnbG93cCc7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHZhciBwcmVjaXNpb24gPSBwYXJhbWV0ZXJzLnByZWNpc2lvbiAhPT0gdW5kZWZpbmVkID8gcGFyYW1ldGVycy5wcmVjaXNpb24gOiAnaGlnaHAnO1xcblxcdFxcdHZhciBtYXhQcmVjaXNpb24gPSBnZXRNYXhQcmVjaXNpb24oIHByZWNpc2lvbiApO1xcblxcblxcdFxcdGlmICggbWF4UHJlY2lzaW9uICE9PSBwcmVjaXNpb24gKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjonLCBwcmVjaXNpb24sICdub3Qgc3VwcG9ydGVkLCB1c2luZycsIG1heFByZWNpc2lvbiwgJ2luc3RlYWQuJyApO1xcblxcdFxcdFxcdHByZWNpc2lvbiA9IG1heFByZWNpc2lvbjtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dmFyIGxvZ2FyaXRobWljRGVwdGhCdWZmZXIgPSBwYXJhbWV0ZXJzLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIgPT09IHRydWU7XFxuXFxuXFx0XFx0dmFyIG1heFRleHR1cmVzID0gZ2wuZ2V0UGFyYW1ldGVyKCBnbC5NQVhfVEVYVFVSRV9JTUFHRV9VTklUUyApO1xcblxcdFxcdHZhciBtYXhWZXJ0ZXhUZXh0dXJlcyA9IGdsLmdldFBhcmFtZXRlciggZ2wuTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTICk7XFxuXFx0XFx0dmFyIG1heFRleHR1cmVTaXplID0gZ2wuZ2V0UGFyYW1ldGVyKCBnbC5NQVhfVEVYVFVSRV9TSVpFICk7XFxuXFx0XFx0dmFyIG1heEN1YmVtYXBTaXplID0gZ2wuZ2V0UGFyYW1ldGVyKCBnbC5NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFICk7XFxuXFxuXFx0XFx0dmFyIG1heEF0dHJpYnV0ZXMgPSBnbC5nZXRQYXJhbWV0ZXIoIGdsLk1BWF9WRVJURVhfQVRUUklCUyApO1xcblxcdFxcdHZhciBtYXhWZXJ0ZXhVbmlmb3JtcyA9IGdsLmdldFBhcmFtZXRlciggZ2wuTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgKTtcXG5cXHRcXHR2YXIgbWF4VmFyeWluZ3MgPSBnbC5nZXRQYXJhbWV0ZXIoIGdsLk1BWF9WQVJZSU5HX1ZFQ1RPUlMgKTtcXG5cXHRcXHR2YXIgbWF4RnJhZ21lbnRVbmlmb3JtcyA9IGdsLmdldFBhcmFtZXRlciggZ2wuTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyApO1xcblxcblxcdFxcdHZhciB2ZXJ0ZXhUZXh0dXJlcyA9IG1heFZlcnRleFRleHR1cmVzID4gMDtcXG5cXHRcXHR2YXIgZmxvYXRGcmFnbWVudFRleHR1cmVzID0gISEgZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9mbG9hdCcgKTtcXG5cXHRcXHR2YXIgZmxvYXRWZXJ0ZXhUZXh0dXJlcyA9IHZlcnRleFRleHR1cmVzICYmIGZsb2F0RnJhZ21lbnRUZXh0dXJlcztcXG5cXG5cXHRcXHRyZXR1cm4ge1xcblxcblxcdFxcdFxcdGdldE1heEFuaXNvdHJvcHk6IGdldE1heEFuaXNvdHJvcHksXFxuXFx0XFx0XFx0Z2V0TWF4UHJlY2lzaW9uOiBnZXRNYXhQcmVjaXNpb24sXFxuXFxuXFx0XFx0XFx0cHJlY2lzaW9uOiBwcmVjaXNpb24sXFxuXFx0XFx0XFx0bG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjogbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixcXG5cXG5cXHRcXHRcXHRtYXhUZXh0dXJlczogbWF4VGV4dHVyZXMsXFxuXFx0XFx0XFx0bWF4VmVydGV4VGV4dHVyZXM6IG1heFZlcnRleFRleHR1cmVzLFxcblxcdFxcdFxcdG1heFRleHR1cmVTaXplOiBtYXhUZXh0dXJlU2l6ZSxcXG5cXHRcXHRcXHRtYXhDdWJlbWFwU2l6ZTogbWF4Q3ViZW1hcFNpemUsXFxuXFxuXFx0XFx0XFx0bWF4QXR0cmlidXRlczogbWF4QXR0cmlidXRlcyxcXG5cXHRcXHRcXHRtYXhWZXJ0ZXhVbmlmb3JtczogbWF4VmVydGV4VW5pZm9ybXMsXFxuXFx0XFx0XFx0bWF4VmFyeWluZ3M6IG1heFZhcnlpbmdzLFxcblxcdFxcdFxcdG1heEZyYWdtZW50VW5pZm9ybXM6IG1heEZyYWdtZW50VW5pZm9ybXMsXFxuXFxuXFx0XFx0XFx0dmVydGV4VGV4dHVyZXM6IHZlcnRleFRleHR1cmVzLFxcblxcdFxcdFxcdGZsb2F0RnJhZ21lbnRUZXh0dXJlczogZmxvYXRGcmFnbWVudFRleHR1cmVzLFxcblxcdFxcdFxcdGZsb2F0VmVydGV4VGV4dHVyZXM6IGZsb2F0VmVydGV4VGV4dHVyZXNcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgZ3JlZ2dtYW4gLyBodHRwOi8vZ2FtZXMuZ3JlZ2dtYW4uY29tL1xcblxcdCAqIEBhdXRob3Igeno4NSAvIGh0dHA6Ly93d3cubGFiNGdhbWVzLm5ldC96ejg1L2Jsb2dcXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gUGVyc3BlY3RpdmVDYW1lcmEoIGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIgKSB7XFxuXFxuXFx0XFx0Q2FtZXJhLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUGVyc3BlY3RpdmVDYW1lcmEnO1xcblxcblxcdFxcdHRoaXMuZm92ID0gZm92ICE9PSB1bmRlZmluZWQgPyBmb3YgOiA1MDtcXG5cXHRcXHR0aGlzLnpvb20gPSAxO1xcblxcblxcdFxcdHRoaXMubmVhciA9IG5lYXIgIT09IHVuZGVmaW5lZCA/IG5lYXIgOiAwLjE7XFxuXFx0XFx0dGhpcy5mYXIgPSBmYXIgIT09IHVuZGVmaW5lZCA/IGZhciA6IDIwMDA7XFxuXFx0XFx0dGhpcy5mb2N1cyA9IDEwO1xcblxcblxcdFxcdHRoaXMuYXNwZWN0ID0gYXNwZWN0ICE9PSB1bmRlZmluZWQgPyBhc3BlY3QgOiAxO1xcblxcdFxcdHRoaXMudmlldyA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5maWxtR2F1Z2UgPSAzNTtcXHQvLyB3aWR0aCBvZiB0aGUgZmlsbSAoZGVmYXVsdCBpbiBtaWxsaW1ldGVycylcXG5cXHRcXHR0aGlzLmZpbG1PZmZzZXQgPSAwO1xcdC8vIGhvcml6b250YWwgZmlsbSBvZmZzZXQgKHNhbWUgdW5pdCBhcyBnYXVnZSlcXG5cXG5cXHRcXHR0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcXG5cXG5cXHR9XFxuXFxuXFx0UGVyc3BlY3RpdmVDYW1lcmEucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggQ2FtZXJhLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IFBlcnNwZWN0aXZlQ2FtZXJhLFxcblxcblxcdFxcdGlzUGVyc3BlY3RpdmVDYW1lcmE6IHRydWUsXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UsIHJlY3Vyc2l2ZSApIHtcXG5cXG5cXHRcXHRcXHRDYW1lcmEucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlLCByZWN1cnNpdmUgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLmZvdiA9IHNvdXJjZS5mb3Y7XFxuXFx0XFx0XFx0dGhpcy56b29tID0gc291cmNlLnpvb207XFxuXFxuXFx0XFx0XFx0dGhpcy5uZWFyID0gc291cmNlLm5lYXI7XFxuXFx0XFx0XFx0dGhpcy5mYXIgPSBzb3VyY2UuZmFyO1xcblxcdFxcdFxcdHRoaXMuZm9jdXMgPSBzb3VyY2UuZm9jdXM7XFxuXFxuXFx0XFx0XFx0dGhpcy5hc3BlY3QgPSBzb3VyY2UuYXNwZWN0O1xcblxcdFxcdFxcdHRoaXMudmlldyA9IHNvdXJjZS52aWV3ID09PSBudWxsID8gbnVsbCA6IE9iamVjdC5hc3NpZ24oIHt9LCBzb3VyY2UudmlldyApO1xcblxcblxcdFxcdFxcdHRoaXMuZmlsbUdhdWdlID0gc291cmNlLmZpbG1HYXVnZTtcXG5cXHRcXHRcXHR0aGlzLmZpbG1PZmZzZXQgPSBzb3VyY2UuZmlsbU9mZnNldDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8qKlxcblxcdFxcdCAqIFNldHMgdGhlIEZPViBieSBmb2NhbCBsZW5ndGggaW4gcmVzcGVjdCB0byB0aGUgY3VycmVudCAuZmlsbUdhdWdlLlxcblxcdFxcdCAqXFxuXFx0XFx0ICogVGhlIGRlZmF1bHQgZmlsbSBnYXVnZSBpcyAzNSwgc28gdGhhdCB0aGUgZm9jYWwgbGVuZ3RoIGNhbiBiZSBzcGVjaWZpZWQgZm9yXFxuXFx0XFx0ICogYSAzNW1tIChmdWxsIGZyYW1lKSBjYW1lcmEuXFxuXFx0XFx0ICpcXG5cXHRcXHQgKiBWYWx1ZXMgZm9yIGZvY2FsIGxlbmd0aCBhbmQgZmlsbSBnYXVnZSBtdXN0IGhhdmUgdGhlIHNhbWUgdW5pdC5cXG5cXHRcXHQgKi9cXG5cXHRcXHRzZXRGb2NhbExlbmd0aDogZnVuY3Rpb24gKCBmb2NhbExlbmd0aCApIHtcXG5cXG5cXHRcXHRcXHQvLyBzZWUgaHR0cDovL3d3dy5ib2JhdGtpbnMuY29tL3Bob3RvZ3JhcGh5L3RlY2huaWNhbC9maWVsZF9vZl92aWV3Lmh0bWxcXG5cXHRcXHRcXHR2YXIgdkV4dGVudFNsb3BlID0gMC41ICogdGhpcy5nZXRGaWxtSGVpZ2h0KCkgLyBmb2NhbExlbmd0aDtcXG5cXG5cXHRcXHRcXHR0aGlzLmZvdiA9IF9NYXRoLlJBRDJERUcgKiAyICogTWF0aC5hdGFuKCB2RXh0ZW50U2xvcGUgKTtcXG5cXHRcXHRcXHR0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8qKlxcblxcdFxcdCAqIENhbGN1bGF0ZXMgdGhlIGZvY2FsIGxlbmd0aCBmcm9tIHRoZSBjdXJyZW50IC5mb3YgYW5kIC5maWxtR2F1Z2UuXFxuXFx0XFx0ICovXFxuXFx0XFx0Z2V0Rm9jYWxMZW5ndGg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdkV4dGVudFNsb3BlID0gTWF0aC50YW4oIF9NYXRoLkRFRzJSQUQgKiAwLjUgKiB0aGlzLmZvdiApO1xcblxcblxcdFxcdFxcdHJldHVybiAwLjUgKiB0aGlzLmdldEZpbG1IZWlnaHQoKSAvIHZFeHRlbnRTbG9wZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldEVmZmVjdGl2ZUZPVjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBfTWF0aC5SQUQyREVHICogMiAqIE1hdGguYXRhbihcXG5cXHRcXHRcXHRcXHRNYXRoLnRhbiggX01hdGguREVHMlJBRCAqIDAuNSAqIHRoaXMuZm92ICkgLyB0aGlzLnpvb20gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldEZpbG1XaWR0aDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIGZpbG0gbm90IGNvbXBsZXRlbHkgY292ZXJlZCBpbiBwb3J0cmFpdCBmb3JtYXQgKGFzcGVjdCA8IDEpXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZmlsbUdhdWdlICogTWF0aC5taW4oIHRoaXMuYXNwZWN0LCAxICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRGaWxtSGVpZ2h0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gZmlsbSBub3QgY29tcGxldGVseSBjb3ZlcmVkIGluIGxhbmRzY2FwZSBmb3JtYXQgKGFzcGVjdCA+IDEpXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZmlsbUdhdWdlIC8gTWF0aC5tYXgoIHRoaXMuYXNwZWN0LCAxICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvKipcXG5cXHRcXHQgKiBTZXRzIGFuIG9mZnNldCBpbiBhIGxhcmdlciBmcnVzdHVtLiBUaGlzIGlzIHVzZWZ1bCBmb3IgbXVsdGktd2luZG93IG9yXFxuXFx0XFx0ICogbXVsdGktbW9uaXRvci9tdWx0aS1tYWNoaW5lIHNldHVwcy5cXG5cXHRcXHQgKlxcblxcdFxcdCAqIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSAzeDIgbW9uaXRvcnMgYW5kIGVhY2ggbW9uaXRvciBpcyAxOTIweDEwODAgYW5kXFxuXFx0XFx0ICogdGhlIG1vbml0b3JzIGFyZSBpbiBncmlkIGxpa2UgdGhpc1xcblxcdFxcdCAqXFxuXFx0XFx0ICogICArLS0tKy0tLSstLS0rXFxuXFx0XFx0ICogICB8IEEgfCBCIHwgQyB8XFxuXFx0XFx0ICogICArLS0tKy0tLSstLS0rXFxuXFx0XFx0ICogICB8IEQgfCBFIHwgRiB8XFxuXFx0XFx0ICogICArLS0tKy0tLSstLS0rXFxuXFx0XFx0ICpcXG5cXHRcXHQgKiB0aGVuIGZvciBlYWNoIG1vbml0b3IgeW91IHdvdWxkIGNhbGwgaXQgbGlrZSB0aGlzXFxuXFx0XFx0ICpcXG5cXHRcXHQgKiAgIHZhciB3ID0gMTkyMDtcXG5cXHRcXHQgKiAgIHZhciBoID0gMTA4MDtcXG5cXHRcXHQgKiAgIHZhciBmdWxsV2lkdGggPSB3ICogMztcXG5cXHRcXHQgKiAgIHZhciBmdWxsSGVpZ2h0ID0gaCAqIDI7XFxuXFx0XFx0ICpcXG5cXHRcXHQgKiAgIC0tQS0tXFxuXFx0XFx0ICogICBjYW1lcmEuc2V0T2Zmc2V0KCBmdWxsV2lkdGgsIGZ1bGxIZWlnaHQsIHcgKiAwLCBoICogMCwgdywgaCApO1xcblxcdFxcdCAqICAgLS1CLS1cXG5cXHRcXHQgKiAgIGNhbWVyYS5zZXRPZmZzZXQoIGZ1bGxXaWR0aCwgZnVsbEhlaWdodCwgdyAqIDEsIGggKiAwLCB3LCBoICk7XFxuXFx0XFx0ICogICAtLUMtLVxcblxcdFxcdCAqICAgY2FtZXJhLnNldE9mZnNldCggZnVsbFdpZHRoLCBmdWxsSGVpZ2h0LCB3ICogMiwgaCAqIDAsIHcsIGggKTtcXG5cXHRcXHQgKiAgIC0tRC0tXFxuXFx0XFx0ICogICBjYW1lcmEuc2V0T2Zmc2V0KCBmdWxsV2lkdGgsIGZ1bGxIZWlnaHQsIHcgKiAwLCBoICogMSwgdywgaCApO1xcblxcdFxcdCAqICAgLS1FLS1cXG5cXHRcXHQgKiAgIGNhbWVyYS5zZXRPZmZzZXQoIGZ1bGxXaWR0aCwgZnVsbEhlaWdodCwgdyAqIDEsIGggKiAxLCB3LCBoICk7XFxuXFx0XFx0ICogICAtLUYtLVxcblxcdFxcdCAqICAgY2FtZXJhLnNldE9mZnNldCggZnVsbFdpZHRoLCBmdWxsSGVpZ2h0LCB3ICogMiwgaCAqIDEsIHcsIGggKTtcXG5cXHRcXHQgKlxcblxcdFxcdCAqICAgTm90ZSB0aGVyZSBpcyBubyByZWFzb24gbW9uaXRvcnMgaGF2ZSB0byBiZSB0aGUgc2FtZSBzaXplIG9yIGluIGEgZ3JpZC5cXG5cXHRcXHQgKi9cXG5cXHRcXHRzZXRWaWV3T2Zmc2V0OiBmdW5jdGlvbiAoIGZ1bGxXaWR0aCwgZnVsbEhlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFzcGVjdCA9IGZ1bGxXaWR0aCAvIGZ1bGxIZWlnaHQ7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpZXcgPT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy52aWV3ID0ge1xcblxcdFxcdFxcdFxcdFxcdGVuYWJsZWQ6IHRydWUsXFxuXFx0XFx0XFx0XFx0XFx0ZnVsbFdpZHRoOiAxLFxcblxcdFxcdFxcdFxcdFxcdGZ1bGxIZWlnaHQ6IDEsXFxuXFx0XFx0XFx0XFx0XFx0b2Zmc2V0WDogMCxcXG5cXHRcXHRcXHRcXHRcXHRvZmZzZXRZOiAwLFxcblxcdFxcdFxcdFxcdFxcdHdpZHRoOiAxLFxcblxcdFxcdFxcdFxcdFxcdGhlaWdodDogMVxcblxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMudmlldy5lbmFibGVkID0gdHJ1ZTtcXG5cXHRcXHRcXHR0aGlzLnZpZXcuZnVsbFdpZHRoID0gZnVsbFdpZHRoO1xcblxcdFxcdFxcdHRoaXMudmlldy5mdWxsSGVpZ2h0ID0gZnVsbEhlaWdodDtcXG5cXHRcXHRcXHR0aGlzLnZpZXcub2Zmc2V0WCA9IHg7XFxuXFx0XFx0XFx0dGhpcy52aWV3Lm9mZnNldFkgPSB5O1xcblxcdFxcdFxcdHRoaXMudmlldy53aWR0aCA9IHdpZHRoO1xcblxcdFxcdFxcdHRoaXMudmlldy5oZWlnaHQgPSBoZWlnaHQ7XFxuXFxuXFx0XFx0XFx0dGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbGVhclZpZXdPZmZzZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMudmlldyAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnZpZXcuZW5hYmxlZCA9IGZhbHNlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHVwZGF0ZVByb2plY3Rpb25NYXRyaXg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgbmVhciA9IHRoaXMubmVhcixcXG5cXHRcXHRcXHRcXHR0b3AgPSBuZWFyICogTWF0aC50YW4oXFxuXFx0XFx0XFx0XFx0XFx0X01hdGguREVHMlJBRCAqIDAuNSAqIHRoaXMuZm92ICkgLyB0aGlzLnpvb20sXFxuXFx0XFx0XFx0XFx0aGVpZ2h0ID0gMiAqIHRvcCxcXG5cXHRcXHRcXHRcXHR3aWR0aCA9IHRoaXMuYXNwZWN0ICogaGVpZ2h0LFxcblxcdFxcdFxcdFxcdGxlZnQgPSAtIDAuNSAqIHdpZHRoLFxcblxcdFxcdFxcdFxcdHZpZXcgPSB0aGlzLnZpZXc7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpZXcgIT09IG51bGwgJiYgdGhpcy52aWV3LmVuYWJsZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGZ1bGxXaWR0aCA9IHZpZXcuZnVsbFdpZHRoLFxcblxcdFxcdFxcdFxcdFxcdGZ1bGxIZWlnaHQgPSB2aWV3LmZ1bGxIZWlnaHQ7XFxuXFxuXFx0XFx0XFx0XFx0bGVmdCArPSB2aWV3Lm9mZnNldFggKiB3aWR0aCAvIGZ1bGxXaWR0aDtcXG5cXHRcXHRcXHRcXHR0b3AgLT0gdmlldy5vZmZzZXRZICogaGVpZ2h0IC8gZnVsbEhlaWdodDtcXG5cXHRcXHRcXHRcXHR3aWR0aCAqPSB2aWV3LndpZHRoIC8gZnVsbFdpZHRoO1xcblxcdFxcdFxcdFxcdGhlaWdodCAqPSB2aWV3LmhlaWdodCAvIGZ1bGxIZWlnaHQ7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBza2V3ID0gdGhpcy5maWxtT2Zmc2V0O1xcblxcdFxcdFxcdGlmICggc2tldyAhPT0gMCApIGxlZnQgKz0gbmVhciAqIHNrZXcgLyB0aGlzLmdldEZpbG1XaWR0aCgpO1xcblxcblxcdFxcdFxcdHRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoIGxlZnQsIGxlZnQgKyB3aWR0aCwgdG9wLCB0b3AgLSBoZWlnaHQsIG5lYXIsIHRoaXMuZmFyICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICggbWV0YSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IE9iamVjdDNELnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcywgbWV0YSApO1xcblxcblxcdFxcdFxcdGRhdGEub2JqZWN0LmZvdiA9IHRoaXMuZm92O1xcblxcdFxcdFxcdGRhdGEub2JqZWN0Lnpvb20gPSB0aGlzLnpvb207XFxuXFxuXFx0XFx0XFx0ZGF0YS5vYmplY3QubmVhciA9IHRoaXMubmVhcjtcXG5cXHRcXHRcXHRkYXRhLm9iamVjdC5mYXIgPSB0aGlzLmZhcjtcXG5cXHRcXHRcXHRkYXRhLm9iamVjdC5mb2N1cyA9IHRoaXMuZm9jdXM7XFxuXFxuXFx0XFx0XFx0ZGF0YS5vYmplY3QuYXNwZWN0ID0gdGhpcy5hc3BlY3Q7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnZpZXcgIT09IG51bGwgKSBkYXRhLm9iamVjdC52aWV3ID0gT2JqZWN0LmFzc2lnbigge30sIHRoaXMudmlldyApO1xcblxcblxcdFxcdFxcdGRhdGEub2JqZWN0LmZpbG1HYXVnZSA9IHRoaXMuZmlsbUdhdWdlO1xcblxcdFxcdFxcdGRhdGEub2JqZWN0LmZpbG1PZmZzZXQgPSB0aGlzLmZpbG1PZmZzZXQ7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGRhdGE7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEFycmF5Q2FtZXJhKCBhcnJheSApIHtcXG5cXG5cXHRcXHRQZXJzcGVjdGl2ZUNhbWVyYS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy5jYW1lcmFzID0gYXJyYXkgfHwgW107XFxuXFxuXFx0fVxcblxcblxcdEFycmF5Q2FtZXJhLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIFBlcnNwZWN0aXZlQ2FtZXJhLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEFycmF5Q2FtZXJhLFxcblxcblxcdFxcdGlzQXJyYXlDYW1lcmE6IHRydWVcXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBXZWJWUk1hbmFnZXIoIHJlbmRlcmVyICkge1xcblxcblxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0dmFyIGRldmljZSA9IG51bGw7XFxuXFx0XFx0dmFyIGZyYW1lRGF0YSA9IG51bGw7XFxuXFxuXFx0XFx0dmFyIHBvc2VUYXJnZXQgPSBudWxsO1xcblxcblxcdFxcdGlmICggdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ1ZSRnJhbWVEYXRhJyBpbiB3aW5kb3cgKSB7XFxuXFxuXFx0XFx0XFx0ZnJhbWVEYXRhID0gbmV3IHdpbmRvdy5WUkZyYW1lRGF0YSgpO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR2YXIgbWF0cml4V29ybGRJbnZlcnNlID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHRcXHR2YXIgY2FtZXJhTCA9IG5ldyBQZXJzcGVjdGl2ZUNhbWVyYSgpO1xcblxcdFxcdGNhbWVyYUwuYm91bmRzID0gbmV3IFZlY3RvcjQoIDAuMCwgMC4wLCAwLjUsIDEuMCApO1xcblxcdFxcdGNhbWVyYUwubGF5ZXJzLmVuYWJsZSggMSApO1xcblxcblxcdFxcdHZhciBjYW1lcmFSID0gbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCk7XFxuXFx0XFx0Y2FtZXJhUi5ib3VuZHMgPSBuZXcgVmVjdG9yNCggMC41LCAwLjAsIDAuNSwgMS4wICk7XFxuXFx0XFx0Y2FtZXJhUi5sYXllcnMuZW5hYmxlKCAyICk7XFxuXFxuXFx0XFx0dmFyIGNhbWVyYVZSID0gbmV3IEFycmF5Q2FtZXJhKCBbIGNhbWVyYUwsIGNhbWVyYVIgXSApO1xcblxcdFxcdGNhbWVyYVZSLmxheWVycy5lbmFibGUoIDEgKTtcXG5cXHRcXHRjYW1lcmFWUi5sYXllcnMuZW5hYmxlKCAyICk7XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHR2YXIgY3VycmVudFNpemUsIGN1cnJlbnRQaXhlbFJhdGlvO1xcblxcblxcdFxcdGZ1bmN0aW9uIG9uVlJEaXNwbGF5UHJlc2VudENoYW5nZSgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGRldmljZSAhPT0gbnVsbCAmJiBkZXZpY2UuaXNQcmVzZW50aW5nICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBleWVQYXJhbWV0ZXJzID0gZGV2aWNlLmdldEV5ZVBhcmFtZXRlcnMoICdsZWZ0JyApO1xcblxcdFxcdFxcdFxcdHZhciByZW5kZXJXaWR0aCA9IGV5ZVBhcmFtZXRlcnMucmVuZGVyV2lkdGg7XFxuXFx0XFx0XFx0XFx0dmFyIHJlbmRlckhlaWdodCA9IGV5ZVBhcmFtZXRlcnMucmVuZGVySGVpZ2h0O1xcblxcblxcdFxcdFxcdFxcdGN1cnJlbnRQaXhlbFJhdGlvID0gcmVuZGVyZXIuZ2V0UGl4ZWxSYXRpbygpO1xcblxcdFxcdFxcdFxcdGN1cnJlbnRTaXplID0gcmVuZGVyZXIuZ2V0U2l6ZSgpO1xcblxcblxcdFxcdFxcdFxcdHJlbmRlcmVyLnNldERyYXdpbmdCdWZmZXJTaXplKCByZW5kZXJXaWR0aCAqIDIsIHJlbmRlckhlaWdodCwgMSApO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIHNjb3BlLmVuYWJsZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyZXIuc2V0RHJhd2luZ0J1ZmZlclNpemUoIGN1cnJlbnRTaXplLndpZHRoLCBjdXJyZW50U2l6ZS5oZWlnaHQsIGN1cnJlbnRQaXhlbFJhdGlvICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRpZiAoIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICkge1xcblxcblxcdFxcdFxcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndnJkaXNwbGF5cHJlc2VudGNoYW5nZScsIG9uVlJEaXNwbGF5UHJlc2VudENoYW5nZSwgZmFsc2UgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHR0aGlzLmVuYWJsZWQgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLmdldERldmljZSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZGV2aWNlO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5zZXREZXZpY2UgPSBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIGRldmljZSA9IHZhbHVlO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5zZXRQb3NlVGFyZ2V0ID0gZnVuY3Rpb24gKCBvYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBvYmplY3QgIT09IHVuZGVmaW5lZCApIHBvc2VUYXJnZXQgPSBvYmplY3Q7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmdldENhbWVyYSA9IGZ1bmN0aW9uICggY2FtZXJhICkge1xcblxcblxcdFxcdFxcdGlmICggZGV2aWNlID09PSBudWxsICkgcmV0dXJuIGNhbWVyYTtcXG5cXG5cXHRcXHRcXHRkZXZpY2UuZGVwdGhOZWFyID0gY2FtZXJhLm5lYXI7XFxuXFx0XFx0XFx0ZGV2aWNlLmRlcHRoRmFyID0gY2FtZXJhLmZhcjtcXG5cXG5cXHRcXHRcXHRkZXZpY2UuZ2V0RnJhbWVEYXRhKCBmcmFtZURhdGEgKTtcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdHZhciBwb3NlID0gZnJhbWVEYXRhLnBvc2U7XFxuXFx0XFx0XFx0dmFyIHBvc2VPYmplY3QgPSBwb3NlVGFyZ2V0ICE9PSBudWxsID8gcG9zZVRhcmdldCA6IGNhbWVyYTtcXG5cXG5cXHRcXHRcXHRpZiAoIHBvc2UucG9zaXRpb24gIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cG9zZU9iamVjdC5wb3NpdGlvbi5mcm9tQXJyYXkoIHBvc2UucG9zaXRpb24gKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHBvc2VPYmplY3QucG9zaXRpb24uc2V0KCAwLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggcG9zZS5vcmllbnRhdGlvbiAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRwb3NlT2JqZWN0LnF1YXRlcm5pb24uZnJvbUFycmF5KCBwb3NlLm9yaWVudGF0aW9uICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHBvc2VPYmplY3QudXBkYXRlTWF0cml4V29ybGQoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGRldmljZS5pc1ByZXNlbnRpbmcgPT09IGZhbHNlICkgcmV0dXJuIGNhbWVyYTtcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdGNhbWVyYUwubmVhciA9IGNhbWVyYS5uZWFyO1xcblxcdFxcdFxcdGNhbWVyYVIubmVhciA9IGNhbWVyYS5uZWFyO1xcblxcblxcdFxcdFxcdGNhbWVyYUwuZmFyID0gY2FtZXJhLmZhcjtcXG5cXHRcXHRcXHRjYW1lcmFSLmZhciA9IGNhbWVyYS5mYXI7XFxuXFxuXFx0XFx0XFx0Y2FtZXJhVlIubWF0cml4V29ybGQuY29weSggY2FtZXJhLm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0Y2FtZXJhVlIubWF0cml4V29ybGRJbnZlcnNlLmNvcHkoIGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UgKTtcXG5cXG5cXHRcXHRcXHRjYW1lcmFMLm1hdHJpeFdvcmxkSW52ZXJzZS5mcm9tQXJyYXkoIGZyYW1lRGF0YS5sZWZ0Vmlld01hdHJpeCApO1xcblxcdFxcdFxcdGNhbWVyYVIubWF0cml4V29ybGRJbnZlcnNlLmZyb21BcnJheSggZnJhbWVEYXRhLnJpZ2h0Vmlld01hdHJpeCApO1xcblxcblxcdFxcdFxcdHZhciBwYXJlbnQgPSBwb3NlT2JqZWN0LnBhcmVudDtcXG5cXG5cXHRcXHRcXHRpZiAoIHBhcmVudCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRtYXRyaXhXb3JsZEludmVyc2UuZ2V0SW52ZXJzZSggcGFyZW50Lm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0XFx0XFx0Y2FtZXJhTC5tYXRyaXhXb3JsZEludmVyc2UubXVsdGlwbHkoIG1hdHJpeFdvcmxkSW52ZXJzZSApO1xcblxcdFxcdFxcdFxcdGNhbWVyYVIubWF0cml4V29ybGRJbnZlcnNlLm11bHRpcGx5KCBtYXRyaXhXb3JsZEludmVyc2UgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gZW52TWFwIGFuZCBNaXJyb3IgbmVlZHMgY2FtZXJhLm1hdHJpeFdvcmxkXFxuXFxuXFx0XFx0XFx0Y2FtZXJhTC5tYXRyaXhXb3JsZC5nZXRJbnZlcnNlKCBjYW1lcmFMLm1hdHJpeFdvcmxkSW52ZXJzZSApO1xcblxcdFxcdFxcdGNhbWVyYVIubWF0cml4V29ybGQuZ2V0SW52ZXJzZSggY2FtZXJhUi5tYXRyaXhXb3JsZEludmVyc2UgKTtcXG5cXG5cXHRcXHRcXHRjYW1lcmFMLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KCBmcmFtZURhdGEubGVmdFByb2plY3Rpb25NYXRyaXggKTtcXG5cXHRcXHRcXHRjYW1lcmFSLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KCBmcmFtZURhdGEucmlnaHRQcm9qZWN0aW9uTWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0Ly8gSEFDSyBAbXJkb29iXFxuXFx0XFx0XFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJ2ci9pc3N1ZXMvMjAzXFxuXFxuXFx0XFx0XFx0Y2FtZXJhVlIucHJvamVjdGlvbk1hdHJpeC5jb3B5KCBjYW1lcmFMLnByb2plY3Rpb25NYXRyaXggKTtcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdHZhciBsYXllcnMgPSBkZXZpY2UuZ2V0TGF5ZXJzKCk7XFxuXFxuXFx0XFx0XFx0aWYgKCBsYXllcnMubGVuZ3RoICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBsYXllciA9IGxheWVyc1sgMCBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggbGF5ZXIubGVmdEJvdW5kcyAhPT0gbnVsbCAmJiBsYXllci5sZWZ0Qm91bmRzLmxlbmd0aCA9PT0gNCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYW1lcmFMLmJvdW5kcy5mcm9tQXJyYXkoIGxheWVyLmxlZnRCb3VuZHMgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBsYXllci5yaWdodEJvdW5kcyAhPT0gbnVsbCAmJiBsYXllci5yaWdodEJvdW5kcy5sZW5ndGggPT09IDQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FtZXJhUi5ib3VuZHMuZnJvbUFycmF5KCBsYXllci5yaWdodEJvdW5kcyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGNhbWVyYVZSO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5zdWJtaXRGcmFtZSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGRldmljZSAmJiBkZXZpY2UuaXNQcmVzZW50aW5nICkgZGV2aWNlLnN1Ym1pdEZyYW1lKCk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmRpc3Bvc2UgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ3ZyZGlzcGxheXByZXNlbnRjaGFuZ2UnLCBvblZSRGlzcGxheVByZXNlbnRDaGFuZ2UgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBXZWJHTEV4dGVuc2lvbnMoIGdsICkge1xcblxcblxcdFxcdHZhciBleHRlbnNpb25zID0ge307XFxuXFxuXFx0XFx0cmV0dXJuIHtcXG5cXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICggbmFtZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGV4dGVuc2lvbnNbIG5hbWUgXSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBleHRlbnNpb25zWyBuYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHZhciBleHRlbnNpb247XFxuXFxuXFx0XFx0XFx0XFx0c3dpdGNoICggbmFtZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdXRUJHTF9kZXB0aF90ZXh0dXJlJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRleHRlbnNpb24gPSBnbC5nZXRFeHRlbnNpb24oICdXRUJHTF9kZXB0aF90ZXh0dXJlJyApIHx8IGdsLmdldEV4dGVuc2lvbiggJ01PWl9XRUJHTF9kZXB0aF90ZXh0dXJlJyApIHx8IGdsLmdldEV4dGVuc2lvbiggJ1dFQktJVF9XRUJHTF9kZXB0aF90ZXh0dXJlJyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZXh0ZW5zaW9uID0gZ2wuZ2V0RXh0ZW5zaW9uKCAnRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljJyApIHx8IGdsLmdldEV4dGVuc2lvbiggJ01PWl9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMnICkgfHwgZ2wuZ2V0RXh0ZW5zaW9uKCAnV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYycgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Yyc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZXh0ZW5zaW9uID0gZ2wuZ2V0RXh0ZW5zaW9uKCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMnICkgfHwgZ2wuZ2V0RXh0ZW5zaW9uKCAnTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJyApIHx8IGdsLmdldEV4dGVuc2lvbiggJ1dFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGV4dGVuc2lvbiA9IGdsLmdldEV4dGVuc2lvbiggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YycgKSB8fCBnbC5nZXRFeHRlbnNpb24oICdXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjJyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRleHRlbnNpb24gPSBnbC5nZXRFeHRlbnNpb24oICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMScgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRkZWZhdWx0OlxcblxcdFxcdFxcdFxcdFxcdFxcdGV4dGVuc2lvbiA9IGdsLmdldEV4dGVuc2lvbiggbmFtZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGV4dGVuc2lvbiA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiAnICsgbmFtZSArICcgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuJyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRleHRlbnNpb25zWyBuYW1lIF0gPSBleHRlbnNpb247XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGV4dGVuc2lvbjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMQ2xpcHBpbmcoKSB7XFxuXFxuXFx0XFx0dmFyIHNjb3BlID0gdGhpcyxcXG5cXG5cXHRcXHRcXHRnbG9iYWxTdGF0ZSA9IG51bGwsXFxuXFx0XFx0XFx0bnVtR2xvYmFsUGxhbmVzID0gMCxcXG5cXHRcXHRcXHRsb2NhbENsaXBwaW5nRW5hYmxlZCA9IGZhbHNlLFxcblxcdFxcdFxcdHJlbmRlcmluZ1NoYWRvd3MgPSBmYWxzZSxcXG5cXG5cXHRcXHRcXHRwbGFuZSA9IG5ldyBQbGFuZSgpLFxcblxcdFxcdFxcdHZpZXdOb3JtYWxNYXRyaXggPSBuZXcgTWF0cml4MygpLFxcblxcblxcdFxcdFxcdHVuaWZvcm0gPSB7IHZhbHVlOiBudWxsLCBuZWVkc1VwZGF0ZTogZmFsc2UgfTtcXG5cXG5cXHRcXHR0aGlzLnVuaWZvcm0gPSB1bmlmb3JtO1xcblxcdFxcdHRoaXMubnVtUGxhbmVzID0gMDtcXG5cXHRcXHR0aGlzLm51bUludGVyc2VjdGlvbiA9IDA7XFxuXFxuXFx0XFx0dGhpcy5pbml0ID0gZnVuY3Rpb24gKCBwbGFuZXMsIGVuYWJsZUxvY2FsQ2xpcHBpbmcsIGNhbWVyYSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZW5hYmxlZCA9XFxuXFx0XFx0XFx0XFx0cGxhbmVzLmxlbmd0aCAhPT0gMCB8fFxcblxcdFxcdFxcdFxcdGVuYWJsZUxvY2FsQ2xpcHBpbmcgfHxcXG5cXHRcXHRcXHRcXHQvLyBlbmFibGUgc3RhdGUgb2YgcHJldmlvdXMgZnJhbWUgLSB0aGUgY2xpcHBpbmcgY29kZSBoYXMgdG9cXG5cXHRcXHRcXHRcXHQvLyBydW4gYW5vdGhlciBmcmFtZSBpbiBvcmRlciB0byByZXNldCB0aGUgc3RhdGU6XFxuXFx0XFx0XFx0XFx0bnVtR2xvYmFsUGxhbmVzICE9PSAwIHx8XFxuXFx0XFx0XFx0XFx0bG9jYWxDbGlwcGluZ0VuYWJsZWQ7XFxuXFxuXFx0XFx0XFx0bG9jYWxDbGlwcGluZ0VuYWJsZWQgPSBlbmFibGVMb2NhbENsaXBwaW5nO1xcblxcblxcdFxcdFxcdGdsb2JhbFN0YXRlID0gcHJvamVjdFBsYW5lcyggcGxhbmVzLCBjYW1lcmEsIDAgKTtcXG5cXHRcXHRcXHRudW1HbG9iYWxQbGFuZXMgPSBwbGFuZXMubGVuZ3RoO1xcblxcblxcdFxcdFxcdHJldHVybiBlbmFibGVkO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5iZWdpblNoYWRvd3MgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmVuZGVyaW5nU2hhZG93cyA9IHRydWU7XFxuXFx0XFx0XFx0cHJvamVjdFBsYW5lcyggbnVsbCApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5lbmRTaGFkb3dzID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJlbmRlcmluZ1NoYWRvd3MgPSBmYWxzZTtcXG5cXHRcXHRcXHRyZXNldEdsb2JhbFN0YXRlKCk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLnNldFN0YXRlID0gZnVuY3Rpb24gKCBwbGFuZXMsIGNsaXBJbnRlcnNlY3Rpb24sIGNsaXBTaGFkb3dzLCBjYW1lcmEsIGNhY2hlLCBmcm9tQ2FjaGUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCAhIGxvY2FsQ2xpcHBpbmdFbmFibGVkIHx8IHBsYW5lcyA9PT0gbnVsbCB8fCBwbGFuZXMubGVuZ3RoID09PSAwIHx8IHJlbmRlcmluZ1NoYWRvd3MgJiYgISBjbGlwU2hhZG93cyApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyB0aGVyZSdzIG5vIGxvY2FsIGNsaXBwaW5nXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCByZW5kZXJpbmdTaGFkb3dzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHRoZXJlJ3Mgbm8gZ2xvYmFsIGNsaXBwaW5nXFxuXFxuXFx0XFx0XFx0XFx0XFx0cHJvamVjdFBsYW5lcyggbnVsbCApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVzZXRHbG9iYWxTdGF0ZSgpO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHZhciBuR2xvYmFsID0gcmVuZGVyaW5nU2hhZG93cyA/IDAgOiBudW1HbG9iYWxQbGFuZXMsXFxuXFx0XFx0XFx0XFx0XFx0bEdsb2JhbCA9IG5HbG9iYWwgKiA0LFxcblxcblxcdFxcdFxcdFxcdFxcdGRzdEFycmF5ID0gY2FjaGUuY2xpcHBpbmdTdGF0ZSB8fCBudWxsO1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm0udmFsdWUgPSBkc3RBcnJheTsgLy8gZW5zdXJlIHVuaXF1ZSBzdGF0ZVxcblxcblxcdFxcdFxcdFxcdGRzdEFycmF5ID0gcHJvamVjdFBsYW5lcyggcGxhbmVzLCBjYW1lcmEsIGxHbG9iYWwsIGZyb21DYWNoZSApO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gbEdsb2JhbDsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRkc3RBcnJheVsgaSBdID0gZ2xvYmFsU3RhdGVbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Y2FjaGUuY2xpcHBpbmdTdGF0ZSA9IGRzdEFycmF5O1xcblxcdFxcdFxcdFxcdHRoaXMubnVtSW50ZXJzZWN0aW9uID0gY2xpcEludGVyc2VjdGlvbiA/IHRoaXMubnVtUGxhbmVzIDogMDtcXG5cXHRcXHRcXHRcXHR0aGlzLm51bVBsYW5lcyArPSBuR2xvYmFsO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdGZ1bmN0aW9uIHJlc2V0R2xvYmFsU3RhdGUoKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB1bmlmb3JtLnZhbHVlICE9PSBnbG9iYWxTdGF0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3JtLnZhbHVlID0gZ2xvYmFsU3RhdGU7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybS5uZWVkc1VwZGF0ZSA9IG51bUdsb2JhbFBsYW5lcyA+IDA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHNjb3BlLm51bVBsYW5lcyA9IG51bUdsb2JhbFBsYW5lcztcXG5cXHRcXHRcXHRzY29wZS5udW1JbnRlcnNlY3Rpb24gPSAwO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBwcm9qZWN0UGxhbmVzKCBwbGFuZXMsIGNhbWVyYSwgZHN0T2Zmc2V0LCBza2lwVHJhbnNmb3JtICkge1xcblxcblxcdFxcdFxcdHZhciBuUGxhbmVzID0gcGxhbmVzICE9PSBudWxsID8gcGxhbmVzLmxlbmd0aCA6IDAsXFxuXFx0XFx0XFx0XFx0ZHN0QXJyYXkgPSBudWxsO1xcblxcblxcdFxcdFxcdGlmICggblBsYW5lcyAhPT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRkc3RBcnJheSA9IHVuaWZvcm0udmFsdWU7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBza2lwVHJhbnNmb3JtICE9PSB0cnVlIHx8IGRzdEFycmF5ID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBmbGF0U2l6ZSA9IGRzdE9mZnNldCArIG5QbGFuZXMgKiA0LFxcblxcdFxcdFxcdFxcdFxcdFxcdHZpZXdNYXRyaXggPSBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlO1xcblxcblxcdFxcdFxcdFxcdFxcdHZpZXdOb3JtYWxNYXRyaXguZ2V0Tm9ybWFsTWF0cml4KCB2aWV3TWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkc3RBcnJheSA9PT0gbnVsbCB8fCBkc3RBcnJheS5sZW5ndGggPCBmbGF0U2l6ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRkc3RBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoIGZsYXRTaXplICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaTQgPSBkc3RPZmZzZXQ7IGkgIT09IG5QbGFuZXM7ICsrIGksIGk0ICs9IDQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0cGxhbmUuY29weSggcGxhbmVzWyBpIF0gKS5hcHBseU1hdHJpeDQoIHZpZXdNYXRyaXgsIHZpZXdOb3JtYWxNYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRwbGFuZS5ub3JtYWwudG9BcnJheSggZHN0QXJyYXksIGk0ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZHN0QXJyYXlbIGk0ICsgMyBdID0gcGxhbmUuY29uc3RhbnQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3JtLnZhbHVlID0gZHN0QXJyYXk7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHNjb3BlLm51bVBsYW5lcyA9IG5QbGFuZXM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGRzdEFycmF5O1xcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciB0aGVzcGl0ZSAvIGh0dHA6Ly93d3cudHdpdHRlci5jb20vdGhlc3BpdGVcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBXZWJHTFV0aWxzKCBnbCwgZXh0ZW5zaW9ucyApIHtcXG5cXG5cXHRcXHRmdW5jdGlvbiBjb252ZXJ0KCBwICkge1xcblxcblxcdFxcdFxcdHZhciBleHRlbnNpb247XFxuXFxuXFx0XFx0XFx0aWYgKCBwID09PSBSZXBlYXRXcmFwcGluZyApIHJldHVybiBnbC5SRVBFQVQ7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBDbGFtcFRvRWRnZVdyYXBwaW5nICkgcmV0dXJuIGdsLkNMQU1QX1RPX0VER0U7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBNaXJyb3JlZFJlcGVhdFdyYXBwaW5nICkgcmV0dXJuIGdsLk1JUlJPUkVEX1JFUEVBVDtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IE5lYXJlc3RGaWx0ZXIgKSByZXR1cm4gZ2wuTkVBUkVTVDtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyICkgcmV0dXJuIGdsLk5FQVJFU1RfTUlQTUFQX05FQVJFU1Q7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBOZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyICkgcmV0dXJuIGdsLk5FQVJFU1RfTUlQTUFQX0xJTkVBUjtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IExpbmVhckZpbHRlciApIHJldHVybiBnbC5MSU5FQVI7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBMaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyICkgcmV0dXJuIGdsLkxJTkVBUl9NSVBNQVBfTkVBUkVTVDtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IExpbmVhck1pcE1hcExpbmVhckZpbHRlciApIHJldHVybiBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUjtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IFVuc2lnbmVkQnl0ZVR5cGUgKSByZXR1cm4gZ2wuVU5TSUdORURfQllURTtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IFVuc2lnbmVkU2hvcnQ0NDQ0VHlwZSApIHJldHVybiBnbC5VTlNJR05FRF9TSE9SVF80XzRfNF80O1xcblxcdFxcdFxcdGlmICggcCA9PT0gVW5zaWduZWRTaG9ydDU1NTFUeXBlICkgcmV0dXJuIGdsLlVOU0lHTkVEX1NIT1JUXzVfNV81XzE7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBVbnNpZ25lZFNob3J0NTY1VHlwZSApIHJldHVybiBnbC5VTlNJR05FRF9TSE9SVF81XzZfNTtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IEJ5dGVUeXBlICkgcmV0dXJuIGdsLkJZVEU7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBTaG9ydFR5cGUgKSByZXR1cm4gZ2wuU0hPUlQ7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBVbnNpZ25lZFNob3J0VHlwZSApIHJldHVybiBnbC5VTlNJR05FRF9TSE9SVDtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IEludFR5cGUgKSByZXR1cm4gZ2wuSU5UO1xcblxcdFxcdFxcdGlmICggcCA9PT0gVW5zaWduZWRJbnRUeXBlICkgcmV0dXJuIGdsLlVOU0lHTkVEX0lOVDtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IEZsb2F0VHlwZSApIHJldHVybiBnbC5GTE9BVDtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IEhhbGZGbG9hdFR5cGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZXh0ZW5zaW9uID0gZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApO1xcblxcblxcdFxcdFxcdFxcdGlmICggZXh0ZW5zaW9uICE9PSBudWxsICkgcmV0dXJuIGV4dGVuc2lvbi5IQUxGX0ZMT0FUX09FUztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBwID09PSBBbHBoYUZvcm1hdCApIHJldHVybiBnbC5BTFBIQTtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IFJHQkZvcm1hdCApIHJldHVybiBnbC5SR0I7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBSR0JBRm9ybWF0ICkgcmV0dXJuIGdsLlJHQkE7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBMdW1pbmFuY2VGb3JtYXQgKSByZXR1cm4gZ2wuTFVNSU5BTkNFO1xcblxcdFxcdFxcdGlmICggcCA9PT0gTHVtaW5hbmNlQWxwaGFGb3JtYXQgKSByZXR1cm4gZ2wuTFVNSU5BTkNFX0FMUEhBO1xcblxcdFxcdFxcdGlmICggcCA9PT0gRGVwdGhGb3JtYXQgKSByZXR1cm4gZ2wuREVQVEhfQ09NUE9ORU5UO1xcblxcdFxcdFxcdGlmICggcCA9PT0gRGVwdGhTdGVuY2lsRm9ybWF0ICkgcmV0dXJuIGdsLkRFUFRIX1NURU5DSUw7XFxuXFxuXFx0XFx0XFx0aWYgKCBwID09PSBBZGRFcXVhdGlvbiApIHJldHVybiBnbC5GVU5DX0FERDtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IFN1YnRyYWN0RXF1YXRpb24gKSByZXR1cm4gZ2wuRlVOQ19TVUJUUkFDVDtcXG5cXHRcXHRcXHRpZiAoIHAgPT09IFJldmVyc2VTdWJ0cmFjdEVxdWF0aW9uICkgcmV0dXJuIGdsLkZVTkNfUkVWRVJTRV9TVUJUUkFDVDtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IFplcm9GYWN0b3IgKSByZXR1cm4gZ2wuWkVSTztcXG5cXHRcXHRcXHRpZiAoIHAgPT09IE9uZUZhY3RvciApIHJldHVybiBnbC5PTkU7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBTcmNDb2xvckZhY3RvciApIHJldHVybiBnbC5TUkNfQ09MT1I7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBPbmVNaW51c1NyY0NvbG9yRmFjdG9yICkgcmV0dXJuIGdsLk9ORV9NSU5VU19TUkNfQ09MT1I7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBTcmNBbHBoYUZhY3RvciApIHJldHVybiBnbC5TUkNfQUxQSEE7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBPbmVNaW51c1NyY0FscGhhRmFjdG9yICkgcmV0dXJuIGdsLk9ORV9NSU5VU19TUkNfQUxQSEE7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBEc3RBbHBoYUZhY3RvciApIHJldHVybiBnbC5EU1RfQUxQSEE7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBPbmVNaW51c0RzdEFscGhhRmFjdG9yICkgcmV0dXJuIGdsLk9ORV9NSU5VU19EU1RfQUxQSEE7XFxuXFxuXFx0XFx0XFx0aWYgKCBwID09PSBEc3RDb2xvckZhY3RvciApIHJldHVybiBnbC5EU1RfQ09MT1I7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBPbmVNaW51c0RzdENvbG9yRmFjdG9yICkgcmV0dXJuIGdsLk9ORV9NSU5VU19EU1RfQ09MT1I7XFxuXFx0XFx0XFx0aWYgKCBwID09PSBTcmNBbHBoYVNhdHVyYXRlRmFjdG9yICkgcmV0dXJuIGdsLlNSQ19BTFBIQV9TQVRVUkFURTtcXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IFJHQl9TM1RDX0RYVDFfRm9ybWF0IHx8IHAgPT09IFJHQkFfUzNUQ19EWFQxX0Zvcm1hdCB8fFxcblxcdFxcdFxcdFxcdHAgPT09IFJHQkFfUzNUQ19EWFQzX0Zvcm1hdCB8fCBwID09PSBSR0JBX1MzVENfRFhUNV9Gb3JtYXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZXh0ZW5zaW9uID0gZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGV4dGVuc2lvbiAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHAgPT09IFJHQl9TM1RDX0RYVDFfRm9ybWF0ICkgcmV0dXJuIGV4dGVuc2lvbi5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUO1xcblxcdFxcdFxcdFxcdFxcdGlmICggcCA9PT0gUkdCQV9TM1RDX0RYVDFfRm9ybWF0ICkgcmV0dXJuIGV4dGVuc2lvbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDtcXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHAgPT09IFJHQkFfUzNUQ19EWFQzX0Zvcm1hdCApIHJldHVybiBleHRlbnNpb24uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBwID09PSBSR0JBX1MzVENfRFhUNV9Gb3JtYXQgKSByZXR1cm4gZXh0ZW5zaW9uLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBwID09PSBSR0JfUFZSVENfNEJQUFYxX0Zvcm1hdCB8fCBwID09PSBSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdCB8fFxcblxcdFxcdFxcdFxcdHAgPT09IFJHQkFfUFZSVENfNEJQUFYxX0Zvcm1hdCB8fCBwID09PSBSR0JBX1BWUlRDXzJCUFBWMV9Gb3JtYXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZXh0ZW5zaW9uID0gZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBleHRlbnNpb24gIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBwID09PSBSR0JfUFZSVENfNEJQUFYxX0Zvcm1hdCApIHJldHVybiBleHRlbnNpb24uQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRztcXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHAgPT09IFJHQl9QVlJUQ18yQlBQVjFfRm9ybWF0ICkgcmV0dXJuIGV4dGVuc2lvbi5DT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HO1xcblxcdFxcdFxcdFxcdFxcdGlmICggcCA9PT0gUkdCQV9QVlJUQ180QlBQVjFfRm9ybWF0ICkgcmV0dXJuIGV4dGVuc2lvbi5DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRztcXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHAgPT09IFJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdCApIHJldHVybiBleHRlbnNpb24uQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IFJHQl9FVEMxX0Zvcm1hdCApIHtcXG5cXG5cXHRcXHRcXHRcXHRleHRlbnNpb24gPSBleHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxJyApO1xcblxcblxcdFxcdFxcdFxcdGlmICggZXh0ZW5zaW9uICE9PSBudWxsICkgcmV0dXJuIGV4dGVuc2lvbi5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IE1pbkVxdWF0aW9uIHx8IHAgPT09IE1heEVxdWF0aW9uICkge1xcblxcblxcdFxcdFxcdFxcdGV4dGVuc2lvbiA9IGV4dGVuc2lvbnMuZ2V0KCAnRVhUX2JsZW5kX21pbm1heCcgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGV4dGVuc2lvbiAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHAgPT09IE1pbkVxdWF0aW9uICkgcmV0dXJuIGV4dGVuc2lvbi5NSU5fRVhUO1xcblxcdFxcdFxcdFxcdFxcdGlmICggcCA9PT0gTWF4RXF1YXRpb24gKSByZXR1cm4gZXh0ZW5zaW9uLk1BWF9FWFQ7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHAgPT09IFVuc2lnbmVkSW50MjQ4VHlwZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRleHRlbnNpb24gPSBleHRlbnNpb25zLmdldCggJ1dFQkdMX2RlcHRoX3RleHR1cmUnICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBleHRlbnNpb24gIT09IG51bGwgKSByZXR1cm4gZXh0ZW5zaW9uLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gMDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIHsgY29udmVydDogY29udmVydCB9O1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIHN1cGVyZWdnYmVydCAvIGh0dHA6Ly93d3cucGF1bGJydW50LmNvLnVrL1xcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKiBAYXV0aG9yIHN6aW1layAvIGh0dHBzOi8vZ2l0aHViLmNvbS9zemltZWsvXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFdlYkdMUmVuZGVyZXIoIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0Y29uc29sZS5sb2coICdUSFJFRS5XZWJHTFJlbmRlcmVyJywgUkVWSVNJT04gKTtcXG5cXG5cXHRcXHRwYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcXG5cXG5cXHRcXHR2YXIgX2NhbnZhcyA9IHBhcmFtZXRlcnMuY2FudmFzICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLmNhbnZhcyA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyggJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnY2FudmFzJyApLFxcblxcdFxcdFxcdF9jb250ZXh0ID0gcGFyYW1ldGVycy5jb250ZXh0ICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLmNvbnRleHQgOiBudWxsLFxcblxcblxcdFxcdFxcdF9hbHBoYSA9IHBhcmFtZXRlcnMuYWxwaGEgIT09IHVuZGVmaW5lZCA/IHBhcmFtZXRlcnMuYWxwaGEgOiBmYWxzZSxcXG5cXHRcXHRcXHRfZGVwdGggPSBwYXJhbWV0ZXJzLmRlcHRoICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLmRlcHRoIDogdHJ1ZSxcXG5cXHRcXHRcXHRfc3RlbmNpbCA9IHBhcmFtZXRlcnMuc3RlbmNpbCAhPT0gdW5kZWZpbmVkID8gcGFyYW1ldGVycy5zdGVuY2lsIDogdHJ1ZSxcXG5cXHRcXHRcXHRfYW50aWFsaWFzID0gcGFyYW1ldGVycy5hbnRpYWxpYXMgIT09IHVuZGVmaW5lZCA/IHBhcmFtZXRlcnMuYW50aWFsaWFzIDogZmFsc2UsXFxuXFx0XFx0XFx0X3ByZW11bHRpcGxpZWRBbHBoYSA9IHBhcmFtZXRlcnMucHJlbXVsdGlwbGllZEFscGhhICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLnByZW11bHRpcGxpZWRBbHBoYSA6IHRydWUsXFxuXFx0XFx0XFx0X3ByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IHBhcmFtZXRlcnMucHJlc2VydmVEcmF3aW5nQnVmZmVyICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA6IGZhbHNlLFxcblxcdFxcdFxcdF9wb3dlclByZWZlcmVuY2UgPSBwYXJhbWV0ZXJzLnBvd2VyUHJlZmVyZW5jZSAhPT0gdW5kZWZpbmVkID8gcGFyYW1ldGVycy5wb3dlclByZWZlcmVuY2UgOiAnZGVmYXVsdCc7XFxuXFxuXFx0XFx0dmFyIGxpZ2h0c0FycmF5ID0gW107XFxuXFx0XFx0dmFyIHNoYWRvd3NBcnJheSA9IFtdO1xcblxcblxcdFxcdHZhciBjdXJyZW50UmVuZGVyTGlzdCA9IG51bGw7XFxuXFxuXFx0XFx0dmFyIHNwcml0ZXNBcnJheSA9IFtdO1xcblxcdFxcdHZhciBmbGFyZXNBcnJheSA9IFtdO1xcblxcblxcdFxcdC8vIHB1YmxpYyBwcm9wZXJ0aWVzXFxuXFxuXFx0XFx0dGhpcy5kb21FbGVtZW50ID0gX2NhbnZhcztcXG5cXHRcXHR0aGlzLmNvbnRleHQgPSBudWxsO1xcblxcblxcdFxcdC8vIGNsZWFyaW5nXFxuXFxuXFx0XFx0dGhpcy5hdXRvQ2xlYXIgPSB0cnVlO1xcblxcdFxcdHRoaXMuYXV0b0NsZWFyQ29sb3IgPSB0cnVlO1xcblxcdFxcdHRoaXMuYXV0b0NsZWFyRGVwdGggPSB0cnVlO1xcblxcdFxcdHRoaXMuYXV0b0NsZWFyU3RlbmNpbCA9IHRydWU7XFxuXFxuXFx0XFx0Ly8gc2NlbmUgZ3JhcGhcXG5cXG5cXHRcXHR0aGlzLnNvcnRPYmplY3RzID0gdHJ1ZTtcXG5cXG5cXHRcXHQvLyB1c2VyLWRlZmluZWQgY2xpcHBpbmdcXG5cXG5cXHRcXHR0aGlzLmNsaXBwaW5nUGxhbmVzID0gW107XFxuXFx0XFx0dGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZCA9IGZhbHNlO1xcblxcblxcdFxcdC8vIHBoeXNpY2FsbHkgYmFzZWQgc2hhZGluZ1xcblxcblxcdFxcdHRoaXMuZ2FtbWFGYWN0b3IgPSAyLjA7XFx0Ly8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XFxuXFx0XFx0dGhpcy5nYW1tYUlucHV0ID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5nYW1tYU91dHB1dCA9IGZhbHNlO1xcblxcblxcdFxcdC8vIHBoeXNpY2FsIGxpZ2h0c1xcblxcblxcdFxcdHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHMgPSBmYWxzZTtcXG5cXG5cXHRcXHQvLyB0b25lIG1hcHBpbmdcXG5cXG5cXHRcXHR0aGlzLnRvbmVNYXBwaW5nID0gTGluZWFyVG9uZU1hcHBpbmc7XFxuXFx0XFx0dGhpcy50b25lTWFwcGluZ0V4cG9zdXJlID0gMS4wO1xcblxcdFxcdHRoaXMudG9uZU1hcHBpbmdXaGl0ZVBvaW50ID0gMS4wO1xcblxcblxcdFxcdC8vIG1vcnBoc1xcblxcblxcdFxcdHRoaXMubWF4TW9ycGhUYXJnZXRzID0gODtcXG5cXHRcXHR0aGlzLm1heE1vcnBoTm9ybWFscyA9IDQ7XFxuXFxuXFx0XFx0Ly8gaW50ZXJuYWwgcHJvcGVydGllc1xcblxcblxcdFxcdHZhciBfdGhpcyA9IHRoaXMsXFxuXFxuXFx0XFx0XFx0X2lzQ29udGV4dExvc3QgPSBmYWxzZSxcXG5cXG5cXHRcXHRcXHQvLyBpbnRlcm5hbCBzdGF0ZSBjYWNoZVxcblxcblxcdFxcdFxcdF9jdXJyZW50UmVuZGVyVGFyZ2V0ID0gbnVsbCxcXG5cXHRcXHRcXHRfY3VycmVudEZyYW1lYnVmZmVyID0gbnVsbCxcXG5cXHRcXHRcXHRfY3VycmVudE1hdGVyaWFsSWQgPSAtIDEsXFxuXFx0XFx0XFx0X2N1cnJlbnRHZW9tZXRyeVByb2dyYW0gPSAnJyxcXG5cXG5cXHRcXHRcXHRfY3VycmVudENhbWVyYSA9IG51bGwsXFxuXFx0XFx0XFx0X2N1cnJlbnRBcnJheUNhbWVyYSA9IG51bGwsXFxuXFxuXFx0XFx0XFx0X2N1cnJlbnRWaWV3cG9ydCA9IG5ldyBWZWN0b3I0KCksXFxuXFx0XFx0XFx0X2N1cnJlbnRTY2lzc29yID0gbmV3IFZlY3RvcjQoKSxcXG5cXHRcXHRcXHRfY3VycmVudFNjaXNzb3JUZXN0ID0gbnVsbCxcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdF91c2VkVGV4dHVyZVVuaXRzID0gMCxcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdF93aWR0aCA9IF9jYW52YXMud2lkdGgsXFxuXFx0XFx0XFx0X2hlaWdodCA9IF9jYW52YXMuaGVpZ2h0LFxcblxcblxcdFxcdFxcdF9waXhlbFJhdGlvID0gMSxcXG5cXG5cXHRcXHRcXHRfdmlld3BvcnQgPSBuZXcgVmVjdG9yNCggMCwgMCwgX3dpZHRoLCBfaGVpZ2h0ICksXFxuXFx0XFx0XFx0X3NjaXNzb3IgPSBuZXcgVmVjdG9yNCggMCwgMCwgX3dpZHRoLCBfaGVpZ2h0ICksXFxuXFx0XFx0XFx0X3NjaXNzb3JUZXN0ID0gZmFsc2UsXFxuXFxuXFx0XFx0XFx0Ly8gZnJ1c3R1bVxcblxcblxcdFxcdFxcdF9mcnVzdHVtID0gbmV3IEZydXN0dW0oKSxcXG5cXG5cXHRcXHRcXHQvLyBjbGlwcGluZ1xcblxcblxcdFxcdFxcdF9jbGlwcGluZyA9IG5ldyBXZWJHTENsaXBwaW5nKCksXFxuXFx0XFx0XFx0X2NsaXBwaW5nRW5hYmxlZCA9IGZhbHNlLFxcblxcdFxcdFxcdF9sb2NhbENsaXBwaW5nRW5hYmxlZCA9IGZhbHNlLFxcblxcblxcdFxcdFxcdC8vIGNhbWVyYSBtYXRyaWNlcyBjYWNoZVxcblxcblxcdFxcdFxcdF9wcm9qU2NyZWVuTWF0cml4ID0gbmV3IE1hdHJpeDQoKSxcXG5cXG5cXHRcXHRcXHRfdmVjdG9yMyA9IG5ldyBWZWN0b3IzKCksXFxuXFxuXFx0XFx0XFx0Ly8gaW5mb1xcblxcblxcdFxcdFxcdF9pbmZvTWVtb3J5ID0ge1xcblxcdFxcdFxcdFxcdGdlb21ldHJpZXM6IDAsXFxuXFx0XFx0XFx0XFx0dGV4dHVyZXM6IDBcXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdF9pbmZvUmVuZGVyID0ge1xcblxcblxcdFxcdFxcdFxcdGZyYW1lOiAwLFxcblxcdFxcdFxcdFxcdGNhbGxzOiAwLFxcblxcdFxcdFxcdFxcdHZlcnRpY2VzOiAwLFxcblxcdFxcdFxcdFxcdGZhY2VzOiAwLFxcblxcdFxcdFxcdFxcdHBvaW50czogMFxcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5pbmZvID0ge1xcblxcblxcdFxcdFxcdHJlbmRlcjogX2luZm9SZW5kZXIsXFxuXFx0XFx0XFx0bWVtb3J5OiBfaW5mb01lbW9yeSxcXG5cXHRcXHRcXHRwcm9ncmFtczogbnVsbFxcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2V0VGFyZ2V0UGl4ZWxSYXRpbygpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gX2N1cnJlbnRSZW5kZXJUYXJnZXQgPT09IG51bGwgPyBfcGl4ZWxSYXRpbyA6IDE7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGluaXRpYWxpemVcXG5cXG5cXHRcXHR2YXIgX2dsO1xcblxcblxcdFxcdHRyeSB7XFxuXFxuXFx0XFx0XFx0dmFyIGNvbnRleHRBdHRyaWJ1dGVzID0ge1xcblxcdFxcdFxcdFxcdGFscGhhOiBfYWxwaGEsXFxuXFx0XFx0XFx0XFx0ZGVwdGg6IF9kZXB0aCxcXG5cXHRcXHRcXHRcXHRzdGVuY2lsOiBfc3RlbmNpbCxcXG5cXHRcXHRcXHRcXHRhbnRpYWxpYXM6IF9hbnRpYWxpYXMsXFxuXFx0XFx0XFx0XFx0cHJlbXVsdGlwbGllZEFscGhhOiBfcHJlbXVsdGlwbGllZEFscGhhLFxcblxcdFxcdFxcdFxcdHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogX3ByZXNlcnZlRHJhd2luZ0J1ZmZlcixcXG5cXHRcXHRcXHRcXHRwb3dlclByZWZlcmVuY2U6IF9wb3dlclByZWZlcmVuY2VcXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdC8vIGV2ZW50IGxpc3RlbmVycyBtdXN0IGJlIHJlZ2lzdGVyZWQgYmVmb3JlIFdlYkdMIGNvbnRleHQgaXMgY3JlYXRlZCwgc2VlICMxMjc1M1xcblxcblxcdFxcdFxcdF9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lciggJ3dlYmdsY29udGV4dGxvc3QnLCBvbkNvbnRleHRMb3N0LCBmYWxzZSApO1xcblxcdFxcdFxcdF9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lciggJ3dlYmdsY29udGV4dHJlc3RvcmVkJywgb25Db250ZXh0UmVzdG9yZSwgZmFsc2UgKTtcXG5cXG5cXHRcXHRcXHRfZ2wgPSBfY29udGV4dCB8fCBfY2FudmFzLmdldENvbnRleHQoICd3ZWJnbCcsIGNvbnRleHRBdHRyaWJ1dGVzICkgfHwgX2NhbnZhcy5nZXRDb250ZXh0KCAnZXhwZXJpbWVudGFsLXdlYmdsJywgY29udGV4dEF0dHJpYnV0ZXMgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIF9nbCA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIF9jYW52YXMuZ2V0Q29udGV4dCggJ3dlYmdsJyApICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggJ0Vycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQgd2l0aCB5b3VyIHNlbGVjdGVkIGF0dHJpYnV0ZXMuJyApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhyb3cgbmV3IEVycm9yKCAnRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dC4nICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBTb21lIGV4cGVyaW1lbnRhbC13ZWJnbCBpbXBsZW1lbnRhdGlvbnMgZG8gbm90IGhhdmUgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0XFxuXFxuXFx0XFx0XFx0aWYgKCBfZ2wuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4geyAncmFuZ2VNaW4nOiAxLCAncmFuZ2VNYXgnOiAxLCAncHJlY2lzaW9uJzogMSB9O1xcblxcblxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0gY2F0Y2ggKCBlcnJvciApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogJyArIGVycm9yLm1lc3NhZ2UgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dmFyIGV4dGVuc2lvbnMsIGNhcGFiaWxpdGllcywgc3RhdGU7XFxuXFx0XFx0dmFyIHByb3BlcnRpZXMsIHRleHR1cmVzLCBhdHRyaWJ1dGVzLCBnZW9tZXRyaWVzLCBvYmplY3RzLCBsaWdodHM7XFxuXFx0XFx0dmFyIHByb2dyYW1DYWNoZSwgcmVuZGVyTGlzdHM7XFxuXFxuXFx0XFx0dmFyIGJhY2tncm91bmQsIG1vcnBodGFyZ2V0cywgYnVmZmVyUmVuZGVyZXIsIGluZGV4ZWRCdWZmZXJSZW5kZXJlcjtcXG5cXHRcXHR2YXIgZmxhcmVSZW5kZXJlciwgc3ByaXRlUmVuZGVyZXI7XFxuXFxuXFx0XFx0dmFyIHV0aWxzO1xcblxcblxcdFxcdGZ1bmN0aW9uIGluaXRHTENvbnRleHQoKSB7XFxuXFxuXFx0XFx0XFx0ZXh0ZW5zaW9ucyA9IG5ldyBXZWJHTEV4dGVuc2lvbnMoIF9nbCApO1xcblxcdFxcdFxcdGV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfZGVwdGhfdGV4dHVyZScgKTtcXG5cXHRcXHRcXHRleHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0JyApO1xcblxcdFxcdFxcdGV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyJyApO1xcblxcdFxcdFxcdGV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfaGFsZl9mbG9hdCcgKTtcXG5cXHRcXHRcXHRleHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyJyApO1xcblxcdFxcdFxcdGV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApO1xcblxcdFxcdFxcdGV4dGVuc2lvbnMuZ2V0KCAnT0VTX2VsZW1lbnRfaW5kZXhfdWludCcgKTtcXG5cXHRcXHRcXHRleHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICk7XFxuXFxuXFx0XFx0XFx0dXRpbHMgPSBuZXcgV2ViR0xVdGlscyggX2dsLCBleHRlbnNpb25zICk7XFxuXFxuXFx0XFx0XFx0Y2FwYWJpbGl0aWVzID0gbmV3IFdlYkdMQ2FwYWJpbGl0aWVzKCBfZ2wsIGV4dGVuc2lvbnMsIHBhcmFtZXRlcnMgKTtcXG5cXG5cXHRcXHRcXHRzdGF0ZSA9IG5ldyBXZWJHTFN0YXRlKCBfZ2wsIGV4dGVuc2lvbnMsIHV0aWxzICk7XFxuXFx0XFx0XFx0c3RhdGUuc2Npc3NvciggX2N1cnJlbnRTY2lzc29yLmNvcHkoIF9zY2lzc29yICkubXVsdGlwbHlTY2FsYXIoIF9waXhlbFJhdGlvICkgKTtcXG5cXHRcXHRcXHRzdGF0ZS52aWV3cG9ydCggX2N1cnJlbnRWaWV3cG9ydC5jb3B5KCBfdmlld3BvcnQgKS5tdWx0aXBseVNjYWxhciggX3BpeGVsUmF0aW8gKSApO1xcblxcblxcdFxcdFxcdHByb3BlcnRpZXMgPSBuZXcgV2ViR0xQcm9wZXJ0aWVzKCk7XFxuXFx0XFx0XFx0dGV4dHVyZXMgPSBuZXcgV2ViR0xUZXh0dXJlcyggX2dsLCBleHRlbnNpb25zLCBzdGF0ZSwgcHJvcGVydGllcywgY2FwYWJpbGl0aWVzLCB1dGlscywgX2luZm9NZW1vcnkgKTtcXG5cXHRcXHRcXHRhdHRyaWJ1dGVzID0gbmV3IFdlYkdMQXR0cmlidXRlcyggX2dsICk7XFxuXFx0XFx0XFx0Z2VvbWV0cmllcyA9IG5ldyBXZWJHTEdlb21ldHJpZXMoIF9nbCwgYXR0cmlidXRlcywgX2luZm9NZW1vcnkgKTtcXG5cXHRcXHRcXHRvYmplY3RzID0gbmV3IFdlYkdMT2JqZWN0cyggZ2VvbWV0cmllcywgX2luZm9SZW5kZXIgKTtcXG5cXHRcXHRcXHRtb3JwaHRhcmdldHMgPSBuZXcgV2ViR0xNb3JwaHRhcmdldHMoIF9nbCApO1xcblxcdFxcdFxcdHByb2dyYW1DYWNoZSA9IG5ldyBXZWJHTFByb2dyYW1zKCBfdGhpcywgZXh0ZW5zaW9ucywgY2FwYWJpbGl0aWVzICk7XFxuXFx0XFx0XFx0bGlnaHRzID0gbmV3IFdlYkdMTGlnaHRzKCk7XFxuXFx0XFx0XFx0cmVuZGVyTGlzdHMgPSBuZXcgV2ViR0xSZW5kZXJMaXN0cygpO1xcblxcblxcdFxcdFxcdGJhY2tncm91bmQgPSBuZXcgV2ViR0xCYWNrZ3JvdW5kKCBfdGhpcywgc3RhdGUsIGdlb21ldHJpZXMsIF9wcmVtdWx0aXBsaWVkQWxwaGEgKTtcXG5cXG5cXHRcXHRcXHRidWZmZXJSZW5kZXJlciA9IG5ldyBXZWJHTEJ1ZmZlclJlbmRlcmVyKCBfZ2wsIGV4dGVuc2lvbnMsIF9pbmZvUmVuZGVyICk7XFxuXFx0XFx0XFx0aW5kZXhlZEJ1ZmZlclJlbmRlcmVyID0gbmV3IFdlYkdMSW5kZXhlZEJ1ZmZlclJlbmRlcmVyKCBfZ2wsIGV4dGVuc2lvbnMsIF9pbmZvUmVuZGVyICk7XFxuXFxuXFx0XFx0XFx0ZmxhcmVSZW5kZXJlciA9IG5ldyBXZWJHTEZsYXJlUmVuZGVyZXIoIF90aGlzLCBfZ2wsIHN0YXRlLCB0ZXh0dXJlcywgY2FwYWJpbGl0aWVzICk7XFxuXFx0XFx0XFx0c3ByaXRlUmVuZGVyZXIgPSBuZXcgV2ViR0xTcHJpdGVSZW5kZXJlciggX3RoaXMsIF9nbCwgc3RhdGUsIHRleHR1cmVzLCBjYXBhYmlsaXRpZXMgKTtcXG5cXG5cXHRcXHRcXHRfdGhpcy5pbmZvLnByb2dyYW1zID0gcHJvZ3JhbUNhY2hlLnByb2dyYW1zO1xcblxcblxcdFxcdFxcdF90aGlzLmNvbnRleHQgPSBfZ2w7XFxuXFx0XFx0XFx0X3RoaXMuY2FwYWJpbGl0aWVzID0gY2FwYWJpbGl0aWVzO1xcblxcdFxcdFxcdF90aGlzLmV4dGVuc2lvbnMgPSBleHRlbnNpb25zO1xcblxcdFxcdFxcdF90aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xcblxcdFxcdFxcdF90aGlzLnJlbmRlckxpc3RzID0gcmVuZGVyTGlzdHM7XFxuXFx0XFx0XFx0X3RoaXMuc3RhdGUgPSBzdGF0ZTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aW5pdEdMQ29udGV4dCgpO1xcblxcblxcdFxcdC8vIHZyXFxuXFxuXFx0XFx0dmFyIHZyID0gbmV3IFdlYlZSTWFuYWdlciggX3RoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnZyID0gdnI7XFxuXFxuXFx0XFx0Ly8gc2hhZG93IG1hcFxcblxcblxcdFxcdHZhciBzaGFkb3dNYXAgPSBuZXcgV2ViR0xTaGFkb3dNYXAoIF90aGlzLCBvYmplY3RzLCBjYXBhYmlsaXRpZXMubWF4VGV4dHVyZVNpemUgKTtcXG5cXG5cXHRcXHR0aGlzLnNoYWRvd01hcCA9IHNoYWRvd01hcDtcXG5cXG5cXHRcXHQvLyBBUElcXG5cXG5cXHRcXHR0aGlzLmdldENvbnRleHQgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIF9nbDtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIF9nbC5nZXRDb250ZXh0QXR0cmlidXRlcygpO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mb3JjZUNvbnRleHRMb3NzID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBleHRlbnNpb24gPSBleHRlbnNpb25zLmdldCggJ1dFQkdMX2xvc2VfY29udGV4dCcgKTtcXG5cXHRcXHRcXHRpZiAoIGV4dGVuc2lvbiApIGV4dGVuc2lvbi5sb3NlQ29udGV4dCgpO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mb3JjZUNvbnRleHRSZXN0b3JlID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBleHRlbnNpb24gPSBleHRlbnNpb25zLmdldCggJ1dFQkdMX2xvc2VfY29udGV4dCcgKTtcXG5cXHRcXHRcXHRpZiAoIGV4dGVuc2lvbiApIGV4dGVuc2lvbi5yZXN0b3JlQ29udGV4dCgpO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5nZXRQaXhlbFJhdGlvID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBfcGl4ZWxSYXRpbztcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuc2V0UGl4ZWxSYXRpbyA9IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdF9waXhlbFJhdGlvID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0dGhpcy5zZXRTaXplKCBfd2lkdGgsIF9oZWlnaHQsIGZhbHNlICk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmdldFNpemUgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHtcXG5cXHRcXHRcXHRcXHR3aWR0aDogX3dpZHRoLFxcblxcdFxcdFxcdFxcdGhlaWdodDogX2hlaWdodFxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLnNldFNpemUgPSBmdW5jdGlvbiAoIHdpZHRoLCBoZWlnaHQsIHVwZGF0ZVN0eWxlICkge1xcblxcblxcdFxcdFxcdHZhciBkZXZpY2UgPSB2ci5nZXREZXZpY2UoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGRldmljZSAmJiBkZXZpY2UuaXNQcmVzZW50aW5nICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IENhblxcXFwndCBjaGFuZ2Ugc2l6ZSB3aGlsZSBWUiBkZXZpY2UgaXMgcHJlc2VudGluZy4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRfd2lkdGggPSB3aWR0aDtcXG5cXHRcXHRcXHRfaGVpZ2h0ID0gaGVpZ2h0O1xcblxcblxcdFxcdFxcdF9jYW52YXMud2lkdGggPSB3aWR0aCAqIF9waXhlbFJhdGlvO1xcblxcdFxcdFxcdF9jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogX3BpeGVsUmF0aW87XFxuXFxuXFx0XFx0XFx0aWYgKCB1cGRhdGVTdHlsZSAhPT0gZmFsc2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2NhbnZhcy5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcXG5cXHRcXHRcXHRcXHRfY2FudmFzLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuc2V0Vmlld3BvcnQoIDAsIDAsIHdpZHRoLCBoZWlnaHQgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuZ2V0RHJhd2luZ0J1ZmZlclNpemUgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHtcXG5cXHRcXHRcXHRcXHR3aWR0aDogX3dpZHRoICogX3BpeGVsUmF0aW8sXFxuXFx0XFx0XFx0XFx0aGVpZ2h0OiBfaGVpZ2h0ICogX3BpeGVsUmF0aW9cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZSA9IGZ1bmN0aW9uICggd2lkdGgsIGhlaWdodCwgcGl4ZWxSYXRpbyApIHtcXG5cXG5cXHRcXHRcXHRfd2lkdGggPSB3aWR0aDtcXG5cXHRcXHRcXHRfaGVpZ2h0ID0gaGVpZ2h0O1xcblxcblxcdFxcdFxcdF9waXhlbFJhdGlvID0gcGl4ZWxSYXRpbztcXG5cXG5cXHRcXHRcXHRfY2FudmFzLndpZHRoID0gd2lkdGggKiBwaXhlbFJhdGlvO1xcblxcdFxcdFxcdF9jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogcGl4ZWxSYXRpbztcXG5cXG5cXHRcXHRcXHR0aGlzLnNldFZpZXdwb3J0KCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLnNldFZpZXdwb3J0ID0gZnVuY3Rpb24gKCB4LCB5LCB3aWR0aCwgaGVpZ2h0ICkge1xcblxcblxcdFxcdFxcdF92aWV3cG9ydC5zZXQoIHgsIF9oZWlnaHQgLSB5IC0gaGVpZ2h0LCB3aWR0aCwgaGVpZ2h0ICk7XFxuXFx0XFx0XFx0c3RhdGUudmlld3BvcnQoIF9jdXJyZW50Vmlld3BvcnQuY29weSggX3ZpZXdwb3J0ICkubXVsdGlwbHlTY2FsYXIoIF9waXhlbFJhdGlvICkgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuc2V0U2Npc3NvciA9IGZ1bmN0aW9uICggeCwgeSwgd2lkdGgsIGhlaWdodCApIHtcXG5cXG5cXHRcXHRcXHRfc2Npc3Nvci5zZXQoIHgsIF9oZWlnaHQgLSB5IC0gaGVpZ2h0LCB3aWR0aCwgaGVpZ2h0ICk7XFxuXFx0XFx0XFx0c3RhdGUuc2Npc3NvciggX2N1cnJlbnRTY2lzc29yLmNvcHkoIF9zY2lzc29yICkubXVsdGlwbHlTY2FsYXIoIF9waXhlbFJhdGlvICkgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuc2V0U2Npc3NvclRlc3QgPSBmdW5jdGlvbiAoIGJvb2xlYW4gKSB7XFxuXFxuXFx0XFx0XFx0c3RhdGUuc2V0U2Npc3NvclRlc3QoIF9zY2lzc29yVGVzdCA9IGJvb2xlYW4gKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdC8vIENsZWFyaW5nXFxuXFxuXFx0XFx0dGhpcy5nZXRDbGVhckNvbG9yID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBiYWNrZ3JvdW5kLmdldENsZWFyQ29sb3IoKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuc2V0Q2xlYXJDb2xvciA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLnNldENsZWFyQ29sb3IuYXBwbHkoIGJhY2tncm91bmQsIGFyZ3VtZW50cyApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5nZXRDbGVhckFscGhhID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBiYWNrZ3JvdW5kLmdldENsZWFyQWxwaGEoKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuc2V0Q2xlYXJBbHBoYSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRiYWNrZ3JvdW5kLnNldENsZWFyQWxwaGEuYXBwbHkoIGJhY2tncm91bmQsIGFyZ3VtZW50cyApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5jbGVhciA9IGZ1bmN0aW9uICggY29sb3IsIGRlcHRoLCBzdGVuY2lsICkge1xcblxcblxcdFxcdFxcdHZhciBiaXRzID0gMDtcXG5cXG5cXHRcXHRcXHRpZiAoIGNvbG9yID09PSB1bmRlZmluZWQgfHwgY29sb3IgKSBiaXRzIHw9IF9nbC5DT0xPUl9CVUZGRVJfQklUO1xcblxcdFxcdFxcdGlmICggZGVwdGggPT09IHVuZGVmaW5lZCB8fCBkZXB0aCApIGJpdHMgfD0gX2dsLkRFUFRIX0JVRkZFUl9CSVQ7XFxuXFx0XFx0XFx0aWYgKCBzdGVuY2lsID09PSB1bmRlZmluZWQgfHwgc3RlbmNpbCApIGJpdHMgfD0gX2dsLlNURU5DSUxfQlVGRkVSX0JJVDtcXG5cXG5cXHRcXHRcXHRfZ2wuY2xlYXIoIGJpdHMgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuY2xlYXJDb2xvciA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmNsZWFyKCB0cnVlLCBmYWxzZSwgZmFsc2UgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuY2xlYXJEZXB0aCA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmNsZWFyKCBmYWxzZSwgdHJ1ZSwgZmFsc2UgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuY2xlYXJTdGVuY2lsID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuY2xlYXIoIGZhbHNlLCBmYWxzZSwgdHJ1ZSApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5jbGVhclRhcmdldCA9IGZ1bmN0aW9uICggcmVuZGVyVGFyZ2V0LCBjb2xvciwgZGVwdGgsIHN0ZW5jaWwgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5zZXRSZW5kZXJUYXJnZXQoIHJlbmRlclRhcmdldCApO1xcblxcdFxcdFxcdHRoaXMuY2xlYXIoIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHR0aGlzLmRpc3Bvc2UgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0X2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCAnd2ViZ2xjb250ZXh0bG9zdCcsIG9uQ29udGV4dExvc3QsIGZhbHNlICk7XFxuXFx0XFx0XFx0X2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCAnd2ViZ2xjb250ZXh0cmVzdG9yZWQnLCBvbkNvbnRleHRSZXN0b3JlLCBmYWxzZSApO1xcblxcblxcdFxcdFxcdHJlbmRlckxpc3RzLmRpc3Bvc2UoKTtcXG5cXG5cXHRcXHRcXHR2ci5kaXNwb3NlKCk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHQvLyBFdmVudHNcXG5cXG5cXHRcXHRmdW5jdGlvbiBvbkNvbnRleHRMb3N0KCBldmVudCApIHtcXG5cXG5cXHRcXHRcXHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xcblxcblxcdFxcdFxcdGNvbnNvbGUubG9nKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LicgKTtcXG5cXG5cXHRcXHRcXHRfaXNDb250ZXh0TG9zdCA9IHRydWU7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIG9uQ29udGV4dFJlc3RvcmUoIC8qIGV2ZW50ICovICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUubG9nKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4nICk7XFxuXFxuXFx0XFx0XFx0X2lzQ29udGV4dExvc3QgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRpbml0R0xDb250ZXh0KCk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIG9uTWF0ZXJpYWxEaXNwb3NlKCBldmVudCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbWF0ZXJpYWwgPSBldmVudC50YXJnZXQ7XFxuXFxuXFx0XFx0XFx0bWF0ZXJpYWwucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2Rpc3Bvc2UnLCBvbk1hdGVyaWFsRGlzcG9zZSApO1xcblxcblxcdFxcdFxcdGRlYWxsb2NhdGVNYXRlcmlhbCggbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gQnVmZmVyIGRlYWxsb2NhdGlvblxcblxcblxcdFxcdGZ1bmN0aW9uIGRlYWxsb2NhdGVNYXRlcmlhbCggbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0cmVsZWFzZU1hdGVyaWFsUHJvZ3JhbVJlZmVyZW5jZSggbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRwcm9wZXJ0aWVzLnJlbW92ZSggbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVsZWFzZU1hdGVyaWFsUHJvZ3JhbVJlZmVyZW5jZSggbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHByb2dyYW1JbmZvID0gcHJvcGVydGllcy5nZXQoIG1hdGVyaWFsICkucHJvZ3JhbTtcXG5cXG5cXHRcXHRcXHRtYXRlcmlhbC5wcm9ncmFtID0gdW5kZWZpbmVkO1xcblxcblxcdFxcdFxcdGlmICggcHJvZ3JhbUluZm8gIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRwcm9ncmFtQ2FjaGUucmVsZWFzZVByb2dyYW0oIHByb2dyYW1JbmZvICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBCdWZmZXIgcmVuZGVyaW5nXFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVuZGVyT2JqZWN0SW1tZWRpYXRlKCBvYmplY3QsIHByb2dyYW0sIG1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdG9iamVjdC5yZW5kZXIoIGZ1bmN0aW9uICggb2JqZWN0ICkge1xcblxcblxcdFxcdFxcdFxcdF90aGlzLnJlbmRlckJ1ZmZlckltbWVkaWF0ZSggb2JqZWN0LCBwcm9ncmFtLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdH0gKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dGhpcy5yZW5kZXJCdWZmZXJJbW1lZGlhdGUgPSBmdW5jdGlvbiAoIG9iamVjdCwgcHJvZ3JhbSwgbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0c3RhdGUuaW5pdEF0dHJpYnV0ZXMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgYnVmZmVycyA9IHByb3BlcnRpZXMuZ2V0KCBvYmplY3QgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5oYXNQb3NpdGlvbnMgJiYgISBidWZmZXJzLnBvc2l0aW9uICkgYnVmZmVycy5wb3NpdGlvbiA9IF9nbC5jcmVhdGVCdWZmZXIoKTtcXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5oYXNOb3JtYWxzICYmICEgYnVmZmVycy5ub3JtYWwgKSBidWZmZXJzLm5vcm1hbCA9IF9nbC5jcmVhdGVCdWZmZXIoKTtcXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5oYXNVdnMgJiYgISBidWZmZXJzLnV2ICkgYnVmZmVycy51diA9IF9nbC5jcmVhdGVCdWZmZXIoKTtcXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5oYXNDb2xvcnMgJiYgISBidWZmZXJzLmNvbG9yICkgYnVmZmVycy5jb2xvciA9IF9nbC5jcmVhdGVCdWZmZXIoKTtcXG5cXG5cXHRcXHRcXHR2YXIgcHJvZ3JhbUF0dHJpYnV0ZXMgPSBwcm9ncmFtLmdldEF0dHJpYnV0ZXMoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5oYXNQb3NpdGlvbnMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLmJpbmRCdWZmZXIoIF9nbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcnMucG9zaXRpb24gKTtcXG5cXHRcXHRcXHRcXHRfZ2wuYnVmZmVyRGF0YSggX2dsLkFSUkFZX0JVRkZFUiwgb2JqZWN0LnBvc2l0aW9uQXJyYXksIF9nbC5EWU5BTUlDX0RSQVcgKTtcXG5cXG5cXHRcXHRcXHRcXHRzdGF0ZS5lbmFibGVBdHRyaWJ1dGUoIHByb2dyYW1BdHRyaWJ1dGVzLnBvc2l0aW9uICk7XFxuXFx0XFx0XFx0XFx0X2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoIHByb2dyYW1BdHRyaWJ1dGVzLnBvc2l0aW9uLCAzLCBfZ2wuRkxPQVQsIGZhbHNlLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggb2JqZWN0Lmhhc05vcm1hbHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLmJpbmRCdWZmZXIoIF9nbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcnMubm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCAhIG1hdGVyaWFsLmlzTWVzaFBob25nTWF0ZXJpYWwgJiZcXG5cXHRcXHRcXHRcXHRcXHQhIG1hdGVyaWFsLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWwgJiZcXG5cXHRcXHRcXHRcXHRcXHQhIG1hdGVyaWFsLmlzTWVzaE5vcm1hbE1hdGVyaWFsICYmXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwuZmxhdFNoYWRpbmcgPT09IHRydWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gb2JqZWN0LmNvdW50ICogMzsgaSA8IGw7IGkgKz0gOSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgYXJyYXkgPSBvYmplY3Qubm9ybWFsQXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIG54ID0gKCBhcnJheVsgaSArIDAgXSArIGFycmF5WyBpICsgMyBdICsgYXJyYXlbIGkgKyA2IF0gKSAvIDM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIG55ID0gKCBhcnJheVsgaSArIDEgXSArIGFycmF5WyBpICsgNCBdICsgYXJyYXlbIGkgKyA3IF0gKSAvIDM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIG56ID0gKCBhcnJheVsgaSArIDIgXSArIGFycmF5WyBpICsgNSBdICsgYXJyYXlbIGkgKyA4IF0gKSAvIDM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YXJyYXlbIGkgKyAwIF0gPSBueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRhcnJheVsgaSArIDEgXSA9IG55O1xcblxcdFxcdFxcdFxcdFxcdFxcdGFycmF5WyBpICsgMiBdID0gbno7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YXJyYXlbIGkgKyAzIF0gPSBueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRhcnJheVsgaSArIDQgXSA9IG55O1xcblxcdFxcdFxcdFxcdFxcdFxcdGFycmF5WyBpICsgNSBdID0gbno7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YXJyYXlbIGkgKyA2IF0gPSBueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRhcnJheVsgaSArIDcgXSA9IG55O1xcblxcdFxcdFxcdFxcdFxcdFxcdGFycmF5WyBpICsgOCBdID0gbno7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRfZ2wuYnVmZmVyRGF0YSggX2dsLkFSUkFZX0JVRkZFUiwgb2JqZWN0Lm5vcm1hbEFycmF5LCBfZ2wuRFlOQU1JQ19EUkFXICk7XFxuXFxuXFx0XFx0XFx0XFx0c3RhdGUuZW5hYmxlQXR0cmlidXRlKCBwcm9ncmFtQXR0cmlidXRlcy5ub3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRfZ2wudmVydGV4QXR0cmliUG9pbnRlciggcHJvZ3JhbUF0dHJpYnV0ZXMubm9ybWFsLCAzLCBfZ2wuRkxPQVQsIGZhbHNlLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggb2JqZWN0Lmhhc1V2cyAmJiBtYXRlcmlhbC5tYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLmJpbmRCdWZmZXIoIF9nbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcnMudXYgKTtcXG5cXHRcXHRcXHRcXHRfZ2wuYnVmZmVyRGF0YSggX2dsLkFSUkFZX0JVRkZFUiwgb2JqZWN0LnV2QXJyYXksIF9nbC5EWU5BTUlDX0RSQVcgKTtcXG5cXG5cXHRcXHRcXHRcXHRzdGF0ZS5lbmFibGVBdHRyaWJ1dGUoIHByb2dyYW1BdHRyaWJ1dGVzLnV2ICk7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoIHByb2dyYW1BdHRyaWJ1dGVzLnV2LCAyLCBfZ2wuRkxPQVQsIGZhbHNlLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggb2JqZWN0Lmhhc0NvbG9ycyAmJiBtYXRlcmlhbC52ZXJ0ZXhDb2xvcnMgIT09IE5vQ29sb3JzICkge1xcblxcblxcdFxcdFxcdFxcdF9nbC5iaW5kQnVmZmVyKCBfZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXJzLmNvbG9yICk7XFxuXFx0XFx0XFx0XFx0X2dsLmJ1ZmZlckRhdGEoIF9nbC5BUlJBWV9CVUZGRVIsIG9iamVjdC5jb2xvckFycmF5LCBfZ2wuRFlOQU1JQ19EUkFXICk7XFxuXFxuXFx0XFx0XFx0XFx0c3RhdGUuZW5hYmxlQXR0cmlidXRlKCBwcm9ncmFtQXR0cmlidXRlcy5jb2xvciApO1xcblxcblxcdFxcdFxcdFxcdF9nbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKCBwcm9ncmFtQXR0cmlidXRlcy5jb2xvciwgMywgX2dsLkZMT0FULCBmYWxzZSwgMCwgMCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRzdGF0ZS5kaXNhYmxlVW51c2VkQXR0cmlidXRlcygpO1xcblxcblxcdFxcdFxcdF9nbC5kcmF3QXJyYXlzKCBfZ2wuVFJJQU5HTEVTLCAwLCBvYmplY3QuY291bnQgKTtcXG5cXG5cXHRcXHRcXHRvYmplY3QuY291bnQgPSAwO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5yZW5kZXJCdWZmZXJEaXJlY3QgPSBmdW5jdGlvbiAoIGNhbWVyYSwgZm9nLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIG9iamVjdCwgZ3JvdXAgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGZyb250RmFjZUNXID0gKCBvYmplY3QuaXNNZXNoICYmIG9iamVjdC5tYXRyaXhXb3JsZC5kZXRlcm1pbmFudCgpIDwgMCApO1xcblxcblxcdFxcdFxcdHN0YXRlLnNldE1hdGVyaWFsKCBtYXRlcmlhbCwgZnJvbnRGYWNlQ1cgKTtcXG5cXG5cXHRcXHRcXHR2YXIgcHJvZ3JhbSA9IHNldFByb2dyYW0oIGNhbWVyYSwgZm9nLCBtYXRlcmlhbCwgb2JqZWN0ICk7XFxuXFx0XFx0XFx0dmFyIGdlb21ldHJ5UHJvZ3JhbSA9IGdlb21ldHJ5LmlkICsgJ18nICsgcHJvZ3JhbS5pZCArICdfJyArICggbWF0ZXJpYWwud2lyZWZyYW1lID09PSB0cnVlICk7XFxuXFxuXFx0XFx0XFx0dmFyIHVwZGF0ZUJ1ZmZlcnMgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5UHJvZ3JhbSAhPT0gX2N1cnJlbnRHZW9tZXRyeVByb2dyYW0gKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2N1cnJlbnRHZW9tZXRyeVByb2dyYW0gPSBnZW9tZXRyeVByb2dyYW07XFxuXFx0XFx0XFx0XFx0dXBkYXRlQnVmZmVycyA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggb2JqZWN0Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRtb3JwaHRhcmdldHMudXBkYXRlKCBvYmplY3QsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcHJvZ3JhbSApO1xcblxcblxcdFxcdFxcdFxcdHVwZGF0ZUJ1ZmZlcnMgPSB0cnVlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdHZhciBpbmRleCA9IGdlb21ldHJ5LmluZGV4O1xcblxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IGdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb247XFxuXFx0XFx0XFx0dmFyIHJhbmdlRmFjdG9yID0gMTtcXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLndpcmVmcmFtZSA9PT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpbmRleCA9IGdlb21ldHJpZXMuZ2V0V2lyZWZyYW1lQXR0cmlidXRlKCBnZW9tZXRyeSApO1xcblxcdFxcdFxcdFxcdHJhbmdlRmFjdG9yID0gMjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGF0dHJpYnV0ZTtcXG5cXHRcXHRcXHR2YXIgcmVuZGVyZXIgPSBidWZmZXJSZW5kZXJlcjtcXG5cXG5cXHRcXHRcXHRpZiAoIGluZGV4ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMuZ2V0KCBpbmRleCApO1xcblxcblxcdFxcdFxcdFxcdHJlbmRlcmVyID0gaW5kZXhlZEJ1ZmZlclJlbmRlcmVyO1xcblxcdFxcdFxcdFxcdHJlbmRlcmVyLnNldEluZGV4KCBhdHRyaWJ1dGUgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB1cGRhdGVCdWZmZXJzICkge1xcblxcblxcdFxcdFxcdFxcdHNldHVwVmVydGV4QXR0cmlidXRlcyggbWF0ZXJpYWwsIHByb2dyYW0sIGdlb21ldHJ5ICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpbmRleCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRfZ2wuYmluZEJ1ZmZlciggX2dsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBhdHRyaWJ1dGUuYnVmZmVyICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdHZhciBkYXRhQ291bnQgPSAwO1xcblxcblxcdFxcdFxcdGlmICggaW5kZXggIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGF0YUNvdW50ID0gaW5kZXguY291bnQ7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggcG9zaXRpb24gIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRkYXRhQ291bnQgPSBwb3NpdGlvbi5jb3VudDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHJhbmdlU3RhcnQgPSBnZW9tZXRyeS5kcmF3UmFuZ2Uuc3RhcnQgKiByYW5nZUZhY3RvcjtcXG5cXHRcXHRcXHR2YXIgcmFuZ2VDb3VudCA9IGdlb21ldHJ5LmRyYXdSYW5nZS5jb3VudCAqIHJhbmdlRmFjdG9yO1xcblxcblxcdFxcdFxcdHZhciBncm91cFN0YXJ0ID0gZ3JvdXAgIT09IG51bGwgPyBncm91cC5zdGFydCAqIHJhbmdlRmFjdG9yIDogMDtcXG5cXHRcXHRcXHR2YXIgZ3JvdXBDb3VudCA9IGdyb3VwICE9PSBudWxsID8gZ3JvdXAuY291bnQgKiByYW5nZUZhY3RvciA6IEluZmluaXR5O1xcblxcblxcdFxcdFxcdHZhciBkcmF3U3RhcnQgPSBNYXRoLm1heCggcmFuZ2VTdGFydCwgZ3JvdXBTdGFydCApO1xcblxcdFxcdFxcdHZhciBkcmF3RW5kID0gTWF0aC5taW4oIGRhdGFDb3VudCwgcmFuZ2VTdGFydCArIHJhbmdlQ291bnQsIGdyb3VwU3RhcnQgKyBncm91cENvdW50ICkgLSAxO1xcblxcblxcdFxcdFxcdHZhciBkcmF3Q291bnQgPSBNYXRoLm1heCggMCwgZHJhd0VuZCAtIGRyYXdTdGFydCArIDEgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGRyYXdDb3VudCA9PT0gMCApIHJldHVybjtcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdGlmICggb2JqZWN0LmlzTWVzaCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1hdGVyaWFsLndpcmVmcmFtZSA9PT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzdGF0ZS5zZXRMaW5lV2lkdGgoIG1hdGVyaWFsLndpcmVmcmFtZUxpbmV3aWR0aCAqIGdldFRhcmdldFBpeGVsUmF0aW8oKSApO1xcblxcdFxcdFxcdFxcdFxcdHJlbmRlcmVyLnNldE1vZGUoIF9nbC5MSU5FUyApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3dpdGNoICggb2JqZWN0LmRyYXdNb2RlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgVHJpYW5nbGVzRHJhd01vZGU6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmVuZGVyZXIuc2V0TW9kZSggX2dsLlRSSUFOR0xFUyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgVHJpYW5nbGVTdHJpcERyYXdNb2RlOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHJlbmRlcmVyLnNldE1vZGUoIF9nbC5UUklBTkdMRV9TVFJJUCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgVHJpYW5nbGVGYW5EcmF3TW9kZTpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyZW5kZXJlci5zZXRNb2RlKCBfZ2wuVFJJQU5HTEVfRkFOICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBvYmplY3QuaXNMaW5lICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBsaW5lV2lkdGggPSBtYXRlcmlhbC5saW5ld2lkdGg7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBsaW5lV2lkdGggPT09IHVuZGVmaW5lZCApIGxpbmVXaWR0aCA9IDE7IC8vIE5vdCB1c2luZyBMaW5lKk1hdGVyaWFsXFxuXFxuXFx0XFx0XFx0XFx0c3RhdGUuc2V0TGluZVdpZHRoKCBsaW5lV2lkdGggKiBnZXRUYXJnZXRQaXhlbFJhdGlvKCkgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9iamVjdC5pc0xpbmVTZWdtZW50cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZW5kZXJlci5zZXRNb2RlKCBfZ2wuTElORVMgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBvYmplY3QuaXNMaW5lTG9vcCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZW5kZXJlci5zZXRNb2RlKCBfZ2wuTElORV9MT09QICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZW5kZXJlci5zZXRNb2RlKCBfZ2wuTElORV9TVFJJUCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBvYmplY3QuaXNQb2ludHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyZXIuc2V0TW9kZSggX2dsLlBPSU5UUyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5ICYmIGdlb21ldHJ5LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVuZGVyZXIucmVuZGVySW5zdGFuY2VzKCBnZW9tZXRyeSwgZHJhd1N0YXJ0LCBkcmF3Q291bnQgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRyZW5kZXJlci5yZW5kZXIoIGRyYXdTdGFydCwgZHJhd0NvdW50ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0dXBWZXJ0ZXhBdHRyaWJ1dGVzKCBtYXRlcmlhbCwgcHJvZ3JhbSwgZ2VvbWV0cnksIHN0YXJ0SW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeSAmJiBnZW9tZXRyeS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5XZWJHTFJlbmRlcmVyLnNldHVwVmVydGV4QXR0cmlidXRlczogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuJyApO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkICkgc3RhcnRJbmRleCA9IDA7XFxuXFxuXFx0XFx0XFx0c3RhdGUuaW5pdEF0dHJpYnV0ZXMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgZ2VvbWV0cnlBdHRyaWJ1dGVzID0gZ2VvbWV0cnkuYXR0cmlidXRlcztcXG5cXG5cXHRcXHRcXHR2YXIgcHJvZ3JhbUF0dHJpYnV0ZXMgPSBwcm9ncmFtLmdldEF0dHJpYnV0ZXMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgbWF0ZXJpYWxEZWZhdWx0QXR0cmlidXRlVmFsdWVzID0gbWF0ZXJpYWwuZGVmYXVsdEF0dHJpYnV0ZVZhbHVlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgbmFtZSBpbiBwcm9ncmFtQXR0cmlidXRlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcHJvZ3JhbUF0dHJpYnV0ZSA9IHByb2dyYW1BdHRyaWJ1dGVzWyBuYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBwcm9ncmFtQXR0cmlidXRlID49IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGdlb21ldHJ5QXR0cmlidXRlID0gZ2VvbWV0cnlBdHRyaWJ1dGVzWyBuYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeUF0dHJpYnV0ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBub3JtYWxpemVkID0gZ2VvbWV0cnlBdHRyaWJ1dGUubm9ybWFsaXplZDtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgc2l6ZSA9IGdlb21ldHJ5QXR0cmlidXRlLml0ZW1TaXplO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmdldCggZ2VvbWV0cnlBdHRyaWJ1dGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBUT0RPIEF0dHJpYnV0ZSBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiBjb250ZXh0IHJlc3RvcmVcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGF0dHJpYnV0ZSA9PT0gdW5kZWZpbmVkICkgY29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGJ1ZmZlciA9IGF0dHJpYnV0ZS5idWZmZXI7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHR5cGUgPSBhdHRyaWJ1dGUudHlwZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgYnl0ZXNQZXJFbGVtZW50ID0gYXR0cmlidXRlLmJ5dGVzUGVyRWxlbWVudDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGdlb21ldHJ5QXR0cmlidXRlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRhdGEgPSBnZW9tZXRyeUF0dHJpYnV0ZS5kYXRhO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBzdHJpZGUgPSBkYXRhLnN0cmlkZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgb2Zmc2V0ID0gZ2VvbWV0cnlBdHRyaWJ1dGUub2Zmc2V0O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGF0YSAmJiBkYXRhLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RhdGUuZW5hYmxlQXR0cmlidXRlQW5kRGl2aXNvciggcHJvZ3JhbUF0dHJpYnV0ZSwgZGF0YS5tZXNoUGVyQXR0cmlidXRlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5tYXhJbnN0YW5jZWRDb3VudCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5Lm1heEluc3RhbmNlZENvdW50ID0gZGF0YS5tZXNoUGVyQXR0cmlidXRlICogZGF0YS5jb3VudDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRzdGF0ZS5lbmFibGVBdHRyaWJ1dGUoIHByb2dyYW1BdHRyaWJ1dGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0X2dsLmJpbmRCdWZmZXIoIF9nbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlciApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdF9nbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKCBwcm9ncmFtQXR0cmlidXRlLCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUgKiBieXRlc1BlckVsZW1lbnQsICggc3RhcnRJbmRleCAqIHN0cmlkZSArIG9mZnNldCApICogYnl0ZXNQZXJFbGVtZW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGdlb21ldHJ5QXR0cmlidXRlLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRlLmVuYWJsZUF0dHJpYnV0ZUFuZERpdmlzb3IoIHByb2dyYW1BdHRyaWJ1dGUsIGdlb21ldHJ5QXR0cmlidXRlLm1lc2hQZXJBdHRyaWJ1dGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGdlb21ldHJ5Lm1heEluc3RhbmNlZENvdW50ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkubWF4SW5zdGFuY2VkQ291bnQgPSBnZW9tZXRyeUF0dHJpYnV0ZS5tZXNoUGVyQXR0cmlidXRlICogZ2VvbWV0cnlBdHRyaWJ1dGUuY291bnQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0c3RhdGUuZW5hYmxlQXR0cmlidXRlKCBwcm9ncmFtQXR0cmlidXRlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdF9nbC5iaW5kQnVmZmVyKCBfZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRfZ2wudmVydGV4QXR0cmliUG9pbnRlciggcHJvZ3JhbUF0dHJpYnV0ZSwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgMCwgc3RhcnRJbmRleCAqIHNpemUgKiBieXRlc1BlckVsZW1lbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIGlmICggbWF0ZXJpYWxEZWZhdWx0QXR0cmlidXRlVmFsdWVzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHZhbHVlID0gbWF0ZXJpYWxEZWZhdWx0QXR0cmlidXRlVmFsdWVzWyBuYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHN3aXRjaCAoIHZhbHVlLmxlbmd0aCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlIDI6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0X2dsLnZlcnRleEF0dHJpYjJmdiggcHJvZ3JhbUF0dHJpYnV0ZSwgdmFsdWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlIDM6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0X2dsLnZlcnRleEF0dHJpYjNmdiggcHJvZ3JhbUF0dHJpYnV0ZSwgdmFsdWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlIDQ6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0X2dsLnZlcnRleEF0dHJpYjRmdiggcHJvZ3JhbUF0dHJpYnV0ZSwgdmFsdWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZWZhdWx0OlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdF9nbC52ZXJ0ZXhBdHRyaWIxZnYoIHByb2dyYW1BdHRyaWJ1dGUsIHZhbHVlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRzdGF0ZS5kaXNhYmxlVW51c2VkQXR0cmlidXRlcygpO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBDb21waWxlXFxuXFxuXFx0XFx0dGhpcy5jb21waWxlID0gZnVuY3Rpb24gKCBzY2VuZSwgY2FtZXJhICkge1xcblxcblxcdFxcdFxcdGxpZ2h0c0FycmF5Lmxlbmd0aCA9IDA7XFxuXFx0XFx0XFx0c2hhZG93c0FycmF5Lmxlbmd0aCA9IDA7XFxuXFxuXFx0XFx0XFx0c2NlbmUudHJhdmVyc2UoIGZ1bmN0aW9uICggb2JqZWN0ICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggb2JqZWN0LmlzTGlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bGlnaHRzQXJyYXkucHVzaCggb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBvYmplY3QuY2FzdFNoYWRvdyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3dzQXJyYXkucHVzaCggb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0bGlnaHRzLnNldHVwKCBsaWdodHNBcnJheSwgc2hhZG93c0FycmF5LCBjYW1lcmEgKTtcXG5cXG5cXHRcXHRcXHRzY2VuZS50cmF2ZXJzZSggZnVuY3Rpb24gKCBvYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvYmplY3QubWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBBcnJheS5pc0FycmF5KCBvYmplY3QubWF0ZXJpYWwgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBvYmplY3QubWF0ZXJpYWwubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGluaXRNYXRlcmlhbCggb2JqZWN0Lm1hdGVyaWFsWyBpIF0sIHNjZW5lLmZvZywgb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aW5pdE1hdGVyaWFsKCBvYmplY3QubWF0ZXJpYWwsIHNjZW5lLmZvZywgb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHQvLyBBbmltYXRpb24gTG9vcFxcblxcblxcdFxcdHZhciBpc0FuaW1hdGluZyA9IGZhbHNlO1xcblxcdFxcdHZhciBvbkFuaW1hdGlvbkZyYW1lID0gbnVsbDtcXG5cXG5cXHRcXHRmdW5jdGlvbiBzdGFydCgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGlzQW5pbWF0aW5nICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdHZhciBkZXZpY2UgPSB2ci5nZXREZXZpY2UoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGRldmljZSAmJiBkZXZpY2UuaXNQcmVzZW50aW5nICkge1xcblxcblxcdFxcdFxcdFxcdGRldmljZS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIGxvb3AgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIGxvb3AgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aXNBbmltYXRpbmcgPSB0cnVlO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBsb29wKCB0aW1lICkge1xcblxcblxcdFxcdFxcdGlmICggb25BbmltYXRpb25GcmFtZSAhPT0gbnVsbCApIG9uQW5pbWF0aW9uRnJhbWUoIHRpbWUgKTtcXG5cXG5cXHRcXHRcXHR2YXIgZGV2aWNlID0gdnIuZ2V0RGV2aWNlKCk7XFxuXFxuXFx0XFx0XFx0aWYgKCBkZXZpY2UgJiYgZGV2aWNlLmlzUHJlc2VudGluZyApIHtcXG5cXG5cXHRcXHRcXHRcXHRkZXZpY2UucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBsb29wICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBsb29wICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLmFuaW1hdGUgPSBmdW5jdGlvbiAoIGNhbGxiYWNrICkge1xcblxcblxcdFxcdFxcdG9uQW5pbWF0aW9uRnJhbWUgPSBjYWxsYmFjaztcXG5cXHRcXHRcXHRzdGFydCgpO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0Ly8gUmVuZGVyaW5nXFxuXFxuXFx0XFx0dGhpcy5yZW5kZXIgPSBmdW5jdGlvbiAoIHNjZW5lLCBjYW1lcmEsIHJlbmRlclRhcmdldCwgZm9yY2VDbGVhciApIHtcXG5cXG5cXHRcXHRcXHRpZiAoICEgKCBjYW1lcmEgJiYgY2FtZXJhLmlzQ2FtZXJhICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyOiBjYW1lcmEgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkNhbWVyYS4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIF9pc0NvbnRleHRMb3N0ICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdC8vIHJlc2V0IGNhY2hpbmcgZm9yIHRoaXMgZnJhbWVcXG5cXG5cXHRcXHRcXHRfY3VycmVudEdlb21ldHJ5UHJvZ3JhbSA9ICcnO1xcblxcdFxcdFxcdF9jdXJyZW50TWF0ZXJpYWxJZCA9IC0gMTtcXG5cXHRcXHRcXHRfY3VycmVudENhbWVyYSA9IG51bGw7XFxuXFxuXFx0XFx0XFx0Ly8gdXBkYXRlIHNjZW5lIGdyYXBoXFxuXFxuXFx0XFx0XFx0aWYgKCBzY2VuZS5hdXRvVXBkYXRlID09PSB0cnVlICkgc2NlbmUudXBkYXRlTWF0cml4V29ybGQoKTtcXG5cXG5cXHRcXHRcXHQvLyB1cGRhdGUgY2FtZXJhIG1hdHJpY2VzIGFuZCBmcnVzdHVtXFxuXFxuXFx0XFx0XFx0aWYgKCBjYW1lcmEucGFyZW50ID09PSBudWxsICkgY2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XFxuXFxuXFx0XFx0XFx0aWYgKCB2ci5lbmFibGVkICkge1xcblxcblxcdFxcdFxcdFxcdGNhbWVyYSA9IHZyLmdldENhbWVyYSggY2FtZXJhICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdF9wcm9qU2NyZWVuTWF0cml4Lm11bHRpcGx5TWF0cmljZXMoIGNhbWVyYS5wcm9qZWN0aW9uTWF0cml4LCBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlICk7XFxuXFx0XFx0XFx0X2ZydXN0dW0uc2V0RnJvbU1hdHJpeCggX3Byb2pTY3JlZW5NYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRsaWdodHNBcnJheS5sZW5ndGggPSAwO1xcblxcdFxcdFxcdHNoYWRvd3NBcnJheS5sZW5ndGggPSAwO1xcblxcblxcdFxcdFxcdHNwcml0ZXNBcnJheS5sZW5ndGggPSAwO1xcblxcdFxcdFxcdGZsYXJlc0FycmF5Lmxlbmd0aCA9IDA7XFxuXFxuXFx0XFx0XFx0X2xvY2FsQ2xpcHBpbmdFbmFibGVkID0gdGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZDtcXG5cXHRcXHRcXHRfY2xpcHBpbmdFbmFibGVkID0gX2NsaXBwaW5nLmluaXQoIHRoaXMuY2xpcHBpbmdQbGFuZXMsIF9sb2NhbENsaXBwaW5nRW5hYmxlZCwgY2FtZXJhICk7XFxuXFxuXFx0XFx0XFx0Y3VycmVudFJlbmRlckxpc3QgPSByZW5kZXJMaXN0cy5nZXQoIHNjZW5lLCBjYW1lcmEgKTtcXG5cXHRcXHRcXHRjdXJyZW50UmVuZGVyTGlzdC5pbml0KCk7XFxuXFxuXFx0XFx0XFx0cHJvamVjdE9iamVjdCggc2NlbmUsIGNhbWVyYSwgX3RoaXMuc29ydE9iamVjdHMgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIF90aGlzLnNvcnRPYmplY3RzID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdGN1cnJlbnRSZW5kZXJMaXN0LnNvcnQoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly9cXG5cXG5cXHRcXHRcXHR0ZXh0dXJlcy51cGRhdGVWaWRlb1RleHR1cmVzKCk7XFxuXFxuXFx0XFx0XFx0Ly9cXG5cXG5cXHRcXHRcXHRpZiAoIF9jbGlwcGluZ0VuYWJsZWQgKSBfY2xpcHBpbmcuYmVnaW5TaGFkb3dzKCk7XFxuXFxuXFx0XFx0XFx0c2hhZG93TWFwLnJlbmRlciggc2hhZG93c0FycmF5LCBzY2VuZSwgY2FtZXJhICk7XFxuXFxuXFx0XFx0XFx0bGlnaHRzLnNldHVwKCBsaWdodHNBcnJheSwgc2hhZG93c0FycmF5LCBjYW1lcmEgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIF9jbGlwcGluZ0VuYWJsZWQgKSBfY2xpcHBpbmcuZW5kU2hhZG93cygpO1xcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0X2luZm9SZW5kZXIuZnJhbWUgKys7XFxuXFx0XFx0XFx0X2luZm9SZW5kZXIuY2FsbHMgPSAwO1xcblxcdFxcdFxcdF9pbmZvUmVuZGVyLnZlcnRpY2VzID0gMDtcXG5cXHRcXHRcXHRfaW5mb1JlbmRlci5mYWNlcyA9IDA7XFxuXFx0XFx0XFx0X2luZm9SZW5kZXIucG9pbnRzID0gMDtcXG5cXG5cXHRcXHRcXHRpZiAoIHJlbmRlclRhcmdldCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHJlbmRlclRhcmdldCA9IG51bGw7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuc2V0UmVuZGVyVGFyZ2V0KCByZW5kZXJUYXJnZXQgKTtcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdGJhY2tncm91bmQucmVuZGVyKCBjdXJyZW50UmVuZGVyTGlzdCwgc2NlbmUsIGNhbWVyYSwgZm9yY2VDbGVhciApO1xcblxcblxcdFxcdFxcdC8vIHJlbmRlciBzY2VuZVxcblxcblxcdFxcdFxcdHZhciBvcGFxdWVPYmplY3RzID0gY3VycmVudFJlbmRlckxpc3Qub3BhcXVlO1xcblxcdFxcdFxcdHZhciB0cmFuc3BhcmVudE9iamVjdHMgPSBjdXJyZW50UmVuZGVyTGlzdC50cmFuc3BhcmVudDtcXG5cXG5cXHRcXHRcXHRpZiAoIHNjZW5lLm92ZXJyaWRlTWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG92ZXJyaWRlTWF0ZXJpYWwgPSBzY2VuZS5vdmVycmlkZU1hdGVyaWFsO1xcblxcblxcdFxcdFxcdFxcdGlmICggb3BhcXVlT2JqZWN0cy5sZW5ndGggKSByZW5kZXJPYmplY3RzKCBvcGFxdWVPYmplY3RzLCBzY2VuZSwgY2FtZXJhLCBvdmVycmlkZU1hdGVyaWFsICk7XFxuXFx0XFx0XFx0XFx0aWYgKCB0cmFuc3BhcmVudE9iamVjdHMubGVuZ3RoICkgcmVuZGVyT2JqZWN0cyggdHJhbnNwYXJlbnRPYmplY3RzLCBzY2VuZSwgY2FtZXJhLCBvdmVycmlkZU1hdGVyaWFsICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBvcGFxdWUgcGFzcyAoZnJvbnQtdG8tYmFjayBvcmRlcilcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9wYXF1ZU9iamVjdHMubGVuZ3RoICkgcmVuZGVyT2JqZWN0cyggb3BhcXVlT2JqZWN0cywgc2NlbmUsIGNhbWVyYSApO1xcblxcblxcdFxcdFxcdFxcdC8vIHRyYW5zcGFyZW50IHBhc3MgKGJhY2stdG8tZnJvbnQgb3JkZXIpXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0cmFuc3BhcmVudE9iamVjdHMubGVuZ3RoICkgcmVuZGVyT2JqZWN0cyggdHJhbnNwYXJlbnRPYmplY3RzLCBzY2VuZSwgY2FtZXJhICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGN1c3RvbSByZW5kZXJlcnNcXG5cXG5cXHRcXHRcXHRzcHJpdGVSZW5kZXJlci5yZW5kZXIoIHNwcml0ZXNBcnJheSwgc2NlbmUsIGNhbWVyYSApO1xcblxcdFxcdFxcdGZsYXJlUmVuZGVyZXIucmVuZGVyKCBmbGFyZXNBcnJheSwgc2NlbmUsIGNhbWVyYSwgX2N1cnJlbnRWaWV3cG9ydCApO1xcblxcblxcdFxcdFxcdC8vIEdlbmVyYXRlIG1pcG1hcCBpZiB3ZSdyZSB1c2luZyBhbnkga2luZCBvZiBtaXBtYXAgZmlsdGVyaW5nXFxuXFxuXFx0XFx0XFx0aWYgKCByZW5kZXJUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZXMudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKCByZW5kZXJUYXJnZXQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gRW5zdXJlIGRlcHRoIGJ1ZmZlciB3cml0aW5nIGlzIGVuYWJsZWQgc28gaXQgY2FuIGJlIGNsZWFyZWQgb24gbmV4dCByZW5kZXJcXG5cXG5cXHRcXHRcXHRzdGF0ZS5idWZmZXJzLmRlcHRoLnNldFRlc3QoIHRydWUgKTtcXG5cXHRcXHRcXHRzdGF0ZS5idWZmZXJzLmRlcHRoLnNldE1hc2soIHRydWUgKTtcXG5cXHRcXHRcXHRzdGF0ZS5idWZmZXJzLmNvbG9yLnNldE1hc2soIHRydWUgKTtcXG5cXG5cXHRcXHRcXHRzdGF0ZS5zZXRQb2x5Z29uT2Zmc2V0KCBmYWxzZSApO1xcblxcblxcdFxcdFxcdGlmICggdnIuZW5hYmxlZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2ci5zdWJtaXRGcmFtZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBfZ2wuZmluaXNoKCk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHQvKlxcblxcdFxcdC8vIFRPRE8gRHVwbGljYXRlZCBjb2RlIChGcnVzdHVtKVxcblxcblxcdFxcdHZhciBfc3BoZXJlID0gbmV3IFNwaGVyZSgpO1xcblxcblxcdFxcdGZ1bmN0aW9uIGlzT2JqZWN0Vmlld2FibGUoIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZ2VvbWV0cnkgPSBvYmplY3QuZ2VvbWV0cnk7XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSA9PT0gbnVsbCApXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0X3NwaGVyZS5jb3B5KCBnZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSApLlxcblxcdFxcdFxcdGFwcGx5TWF0cml4NCggb2JqZWN0Lm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGlzU3BoZXJlVmlld2FibGUoIF9zcGhlcmUgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gaXNTcHJpdGVWaWV3YWJsZSggc3ByaXRlICkge1xcblxcblxcdFxcdFxcdF9zcGhlcmUuY2VudGVyLnNldCggMCwgMCwgMCApO1xcblxcdFxcdFxcdF9zcGhlcmUucmFkaXVzID0gMC43MDcxMDY3ODExODY1NDc2O1xcblxcdFxcdFxcdF9zcGhlcmUuYXBwbHlNYXRyaXg0KCBzcHJpdGUubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gaXNTcGhlcmVWaWV3YWJsZSggX3NwaGVyZSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBpc1NwaGVyZVZpZXdhYmxlKCBzcGhlcmUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCAhIF9mcnVzdHVtLmludGVyc2VjdHNTcGhlcmUoIHNwaGVyZSApICkgcmV0dXJuIGZhbHNlO1xcblxcblxcdFxcdFxcdHZhciBudW1QbGFuZXMgPSBfY2xpcHBpbmcubnVtUGxhbmVzO1xcblxcblxcdFxcdFxcdGlmICggbnVtUGxhbmVzID09PSAwICkgcmV0dXJuIHRydWU7XFxuXFxuXFx0XFx0XFx0dmFyIHBsYW5lcyA9IF90aGlzLmNsaXBwaW5nUGxhbmVzLFxcblxcblxcdFxcdFxcdFxcdGNlbnRlciA9IHNwaGVyZS5jZW50ZXIsXFxuXFx0XFx0XFx0XFx0bmVnUmFkID0gLSBzcGhlcmUucmFkaXVzLFxcblxcdFxcdFxcdFxcdGkgPSAwO1xcblxcblxcdFxcdFxcdGRvIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBvdXQgd2hlbiBkZWVwZXIgdGhhbiByYWRpdXMgaW4gdGhlIG5lZ2F0aXZlIGhhbGZzcGFjZVxcblxcdFxcdFxcdFxcdGlmICggcGxhbmVzWyBpIF0uZGlzdGFuY2VUb1BvaW50KCBjZW50ZXIgKSA8IG5lZ1JhZCApIHJldHVybiBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9IHdoaWxlICggKysgaSAhPT0gbnVtUGxhbmVzICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuXFxuXFx0XFx0fVxcblxcdFxcdCovXFxuXFxuXFx0XFx0ZnVuY3Rpb24gcHJvamVjdE9iamVjdCggb2JqZWN0LCBjYW1lcmEsIHNvcnRPYmplY3RzICkge1xcblxcblxcdFxcdFxcdGlmICggb2JqZWN0LnZpc2libGUgPT09IGZhbHNlICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdHZhciB2aXNpYmxlID0gb2JqZWN0LmxheWVycy50ZXN0KCBjYW1lcmEubGF5ZXJzICk7XFxuXFxuXFx0XFx0XFx0aWYgKCB2aXNpYmxlICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggb2JqZWN0LmlzTGlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bGlnaHRzQXJyYXkucHVzaCggb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBvYmplY3QuY2FzdFNoYWRvdyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRzaGFkb3dzQXJyYXkucHVzaCggb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG9iamVjdC5pc1Nwcml0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoICEgb2JqZWN0LmZydXN0dW1DdWxsZWQgfHwgX2ZydXN0dW0uaW50ZXJzZWN0c1Nwcml0ZSggb2JqZWN0ICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0c3ByaXRlc0FycmF5LnB1c2goIG9iamVjdCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBvYmplY3QuaXNMZW5zRmxhcmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmxhcmVzQXJyYXkucHVzaCggb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIGlmICggb2JqZWN0LmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggc29ydE9iamVjdHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0X3ZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBvYmplY3QubWF0cml4V29ybGQgKVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC5hcHBseU1hdHJpeDQoIF9wcm9qU2NyZWVuTWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGN1cnJlbnRSZW5kZXJMaXN0LnB1c2goIG9iamVjdCwgbnVsbCwgb2JqZWN0Lm1hdGVyaWFsLCBfdmVjdG9yMy56LCBudWxsICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIGlmICggb2JqZWN0LmlzTWVzaCB8fCBvYmplY3QuaXNMaW5lIHx8IG9iamVjdC5pc1BvaW50cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG9iamVjdC5pc1NraW5uZWRNZXNoICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdC5za2VsZXRvbi51cGRhdGUoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCAhIG9iamVjdC5mcnVzdHVtQ3VsbGVkIHx8IF9mcnVzdHVtLmludGVyc2VjdHNPYmplY3QoIG9iamVjdCApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggc29ydE9iamVjdHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0X3ZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBvYmplY3QubWF0cml4V29ybGQgKVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC5hcHBseU1hdHJpeDQoIF9wcm9qU2NyZWVuTWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IG9iamVjdHMudXBkYXRlKCBvYmplY3QgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgbWF0ZXJpYWwgPSBvYmplY3QubWF0ZXJpYWw7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBBcnJheS5pc0FycmF5KCBtYXRlcmlhbCApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBncm91cHMgPSBnZW9tZXRyeS5ncm91cHM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gZ3JvdXBzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGdyb3VwID0gZ3JvdXBzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGdyb3VwTWF0ZXJpYWwgPSBtYXRlcmlhbFsgZ3JvdXAubWF0ZXJpYWxJbmRleCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggZ3JvdXBNYXRlcmlhbCAmJiBncm91cE1hdGVyaWFsLnZpc2libGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3VycmVudFJlbmRlckxpc3QucHVzaCggb2JqZWN0LCBnZW9tZXRyeSwgZ3JvdXBNYXRlcmlhbCwgX3ZlY3RvcjMueiwgZ3JvdXAgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLnZpc2libGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3VycmVudFJlbmRlckxpc3QucHVzaCggb2JqZWN0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIF92ZWN0b3IzLnosIG51bGwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGNoaWxkcmVuID0gb2JqZWN0LmNoaWxkcmVuO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cHJvamVjdE9iamVjdCggY2hpbGRyZW5bIGkgXSwgY2FtZXJhLCBzb3J0T2JqZWN0cyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVuZGVyT2JqZWN0cyggcmVuZGVyTGlzdCwgc2NlbmUsIGNhbWVyYSwgb3ZlcnJpZGVNYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSByZW5kZXJMaXN0Lmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHJlbmRlckl0ZW0gPSByZW5kZXJMaXN0WyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG9iamVjdCA9IHJlbmRlckl0ZW0ub2JqZWN0O1xcblxcdFxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IHJlbmRlckl0ZW0uZ2VvbWV0cnk7XFxuXFx0XFx0XFx0XFx0dmFyIG1hdGVyaWFsID0gb3ZlcnJpZGVNYXRlcmlhbCA9PT0gdW5kZWZpbmVkID8gcmVuZGVySXRlbS5tYXRlcmlhbCA6IG92ZXJyaWRlTWF0ZXJpYWw7XFxuXFx0XFx0XFx0XFx0dmFyIGdyb3VwID0gcmVuZGVySXRlbS5ncm91cDtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGNhbWVyYS5pc0FycmF5Q2FtZXJhICkge1xcblxcblxcdFxcdFxcdFxcdFxcdF9jdXJyZW50QXJyYXlDYW1lcmEgPSBjYW1lcmE7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGNhbWVyYXMgPSBjYW1lcmEuY2FtZXJhcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaiA9IDAsIGpsID0gY2FtZXJhcy5sZW5ndGg7IGogPCBqbDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2FtZXJhMiA9IGNhbWVyYXNbIGogXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIG9iamVjdC5sYXllcnMudGVzdCggY2FtZXJhMi5sYXllcnMgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgYm91bmRzID0gY2FtZXJhMi5ib3VuZHM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIHggPSBib3VuZHMueCAqIF93aWR0aDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgeSA9IGJvdW5kcy55ICogX2hlaWdodDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgd2lkdGggPSBib3VuZHMueiAqIF93aWR0aDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgaGVpZ2h0ID0gYm91bmRzLncgKiBfaGVpZ2h0O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHN0YXRlLnZpZXdwb3J0KCBfY3VycmVudFZpZXdwb3J0LnNldCggeCwgeSwgd2lkdGgsIGhlaWdodCApLm11bHRpcGx5U2NhbGFyKCBfcGl4ZWxSYXRpbyApICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmVuZGVyT2JqZWN0KCBvYmplY3QsIHNjZW5lLCBjYW1lcmEyLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIGdyb3VwICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdF9jdXJyZW50QXJyYXlDYW1lcmEgPSBudWxsO1xcblxcblxcdFxcdFxcdFxcdFxcdHJlbmRlck9iamVjdCggb2JqZWN0LCBzY2VuZSwgY2FtZXJhLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIGdyb3VwICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVuZGVyT2JqZWN0KCBvYmplY3QsIHNjZW5lLCBjYW1lcmEsIGdlb21ldHJ5LCBtYXRlcmlhbCwgZ3JvdXAgKSB7XFxuXFxuXFx0XFx0XFx0b2JqZWN0Lm9uQmVmb3JlUmVuZGVyKCBfdGhpcywgc2NlbmUsIGNhbWVyYSwgZ2VvbWV0cnksIG1hdGVyaWFsLCBncm91cCApO1xcblxcblxcdFxcdFxcdG9iamVjdC5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyggY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSwgb2JqZWN0Lm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0b2JqZWN0Lm5vcm1hbE1hdHJpeC5nZXROb3JtYWxNYXRyaXgoIG9iamVjdC5tb2RlbFZpZXdNYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRpZiAoIG9iamVjdC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZnJvbnRGYWNlQ1cgPSAoIG9iamVjdC5pc01lc2ggJiYgb2JqZWN0Lm1hdHJpeFdvcmxkLmRldGVybWluYW50KCkgPCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0c3RhdGUuc2V0TWF0ZXJpYWwoIG1hdGVyaWFsLCBmcm9udEZhY2VDVyApO1xcblxcblxcdFxcdFxcdFxcdHZhciBwcm9ncmFtID0gc2V0UHJvZ3JhbSggY2FtZXJhLCBzY2VuZS5mb2csIG1hdGVyaWFsLCBvYmplY3QgKTtcXG5cXG5cXHRcXHRcXHRcXHRfY3VycmVudEdlb21ldHJ5UHJvZ3JhbSA9ICcnO1xcblxcblxcdFxcdFxcdFxcdHJlbmRlck9iamVjdEltbWVkaWF0ZSggb2JqZWN0LCBwcm9ncmFtLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0X3RoaXMucmVuZGVyQnVmZmVyRGlyZWN0KCBjYW1lcmEsIHNjZW5lLmZvZywgZ2VvbWV0cnksIG1hdGVyaWFsLCBvYmplY3QsIGdyb3VwICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdG9iamVjdC5vbkFmdGVyUmVuZGVyKCBfdGhpcywgc2NlbmUsIGNhbWVyYSwgZ2VvbWV0cnksIG1hdGVyaWFsLCBncm91cCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBpbml0TWF0ZXJpYWwoIG1hdGVyaWFsLCBmb2csIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbWF0ZXJpYWxQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5nZXQoIG1hdGVyaWFsICk7XFxuXFxuXFx0XFx0XFx0dmFyIHBhcmFtZXRlcnMgPSBwcm9ncmFtQ2FjaGUuZ2V0UGFyYW1ldGVycyhcXG5cXHRcXHRcXHRcXHRtYXRlcmlhbCwgbGlnaHRzLnN0YXRlLCBzaGFkb3dzQXJyYXksIGZvZywgX2NsaXBwaW5nLm51bVBsYW5lcywgX2NsaXBwaW5nLm51bUludGVyc2VjdGlvbiwgb2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0dmFyIGNvZGUgPSBwcm9ncmFtQ2FjaGUuZ2V0UHJvZ3JhbUNvZGUoIG1hdGVyaWFsLCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0XFx0XFx0dmFyIHByb2dyYW0gPSBtYXRlcmlhbFByb3BlcnRpZXMucHJvZ3JhbTtcXG5cXHRcXHRcXHR2YXIgcHJvZ3JhbUNoYW5nZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0aWYgKCBwcm9ncmFtID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbmV3IG1hdGVyaWFsXFxuXFx0XFx0XFx0XFx0bWF0ZXJpYWwuYWRkRXZlbnRMaXN0ZW5lciggJ2Rpc3Bvc2UnLCBvbk1hdGVyaWFsRGlzcG9zZSApO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIHByb2dyYW0uY29kZSAhPT0gY29kZSApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBjaGFuZ2VkIGdsc2wgb3IgcGFyYW1ldGVyc1xcblxcdFxcdFxcdFxcdHJlbGVhc2VNYXRlcmlhbFByb2dyYW1SZWZlcmVuY2UoIG1hdGVyaWFsICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggcGFyYW1ldGVycy5zaGFkZXJJRCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdC8vIHNhbWUgZ2xzbCBhbmQgdW5pZm9ybSBsaXN0XFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gb25seSByZWJ1aWxkIHVuaWZvcm0gbGlzdFxcblxcdFxcdFxcdFxcdHByb2dyYW1DaGFuZ2UgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBwcm9ncmFtQ2hhbmdlICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggcGFyYW1ldGVycy5zaGFkZXJJRCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgc2hhZGVyID0gU2hhZGVyTGliWyBwYXJhbWV0ZXJzLnNoYWRlcklEIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlciA9IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRuYW1lOiBtYXRlcmlhbC50eXBlLFxcblxcdFxcdFxcdFxcdFxcdFxcdHVuaWZvcm1zOiBVbmlmb3Jtc1V0aWxzLmNsb25lKCBzaGFkZXIudW5pZm9ybXMgKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHR2ZXJ0ZXhTaGFkZXI6IHNoYWRlci52ZXJ0ZXhTaGFkZXIsXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZnJhZ21lbnRTaGFkZXI6IHNoYWRlci5mcmFnbWVudFNoYWRlclxcblxcdFxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtYXRlcmlhbFByb3BlcnRpZXMuc2hhZGVyID0ge1xcblxcdFxcdFxcdFxcdFxcdFxcdG5hbWU6IG1hdGVyaWFsLnR5cGUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0dW5pZm9ybXM6IG1hdGVyaWFsLnVuaWZvcm1zLFxcblxcdFxcdFxcdFxcdFxcdFxcdHZlcnRleFNoYWRlcjogbWF0ZXJpYWwudmVydGV4U2hhZGVyLFxcblxcdFxcdFxcdFxcdFxcdFxcdGZyYWdtZW50U2hhZGVyOiBtYXRlcmlhbC5mcmFnbWVudFNoYWRlclxcblxcdFxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdG1hdGVyaWFsLm9uQmVmb3JlQ29tcGlsZSggbWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlciApO1xcblxcblxcdFxcdFxcdFxcdHByb2dyYW0gPSBwcm9ncmFtQ2FjaGUuYWNxdWlyZVByb2dyYW0oIG1hdGVyaWFsLCBtYXRlcmlhbFByb3BlcnRpZXMuc2hhZGVyLCBwYXJhbWV0ZXJzLCBjb2RlICk7XFxuXFxuXFx0XFx0XFx0XFx0bWF0ZXJpYWxQcm9wZXJ0aWVzLnByb2dyYW0gPSBwcm9ncmFtO1xcblxcdFxcdFxcdFxcdG1hdGVyaWFsLnByb2dyYW0gPSBwcm9ncmFtO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgcHJvZ3JhbUF0dHJpYnV0ZXMgPSBwcm9ncmFtLmdldEF0dHJpYnV0ZXMoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLm1vcnBoVGFyZ2V0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRtYXRlcmlhbC5udW1TdXBwb3J0ZWRNb3JwaFRhcmdldHMgPSAwO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IF90aGlzLm1heE1vcnBoVGFyZ2V0czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHByb2dyYW1BdHRyaWJ1dGVzWyAnbW9ycGhUYXJnZXQnICsgaSBdID49IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwubnVtU3VwcG9ydGVkTW9ycGhUYXJnZXRzICsrO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwubW9ycGhOb3JtYWxzICkge1xcblxcblxcdFxcdFxcdFxcdG1hdGVyaWFsLm51bVN1cHBvcnRlZE1vcnBoTm9ybWFscyA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgX3RoaXMubWF4TW9ycGhOb3JtYWxzOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggcHJvZ3JhbUF0dHJpYnV0ZXNbICdtb3JwaE5vcm1hbCcgKyBpIF0gPj0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRtYXRlcmlhbC5udW1TdXBwb3J0ZWRNb3JwaE5vcm1hbHMgKys7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHVuaWZvcm1zID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlci51bmlmb3JtcztcXG5cXG5cXHRcXHRcXHRpZiAoICEgbWF0ZXJpYWwuaXNTaGFkZXJNYXRlcmlhbCAmJlxcblxcdFxcdFxcdFxcdCEgbWF0ZXJpYWwuaXNSYXdTaGFkZXJNYXRlcmlhbCB8fFxcblxcdFxcdFxcdFxcdG1hdGVyaWFsLmNsaXBwaW5nID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdG1hdGVyaWFsUHJvcGVydGllcy5udW1DbGlwcGluZ1BsYW5lcyA9IF9jbGlwcGluZy5udW1QbGFuZXM7XFxuXFx0XFx0XFx0XFx0bWF0ZXJpYWxQcm9wZXJ0aWVzLm51bUludGVyc2VjdGlvbiA9IF9jbGlwcGluZy5udW1JbnRlcnNlY3Rpb247XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuY2xpcHBpbmdQbGFuZXMgPSBfY2xpcHBpbmcudW5pZm9ybTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0bWF0ZXJpYWxQcm9wZXJ0aWVzLmZvZyA9IGZvZztcXG5cXG5cXHRcXHRcXHQvLyBzdG9yZSB0aGUgbGlnaHQgc2V0dXAgaXQgd2FzIGNyZWF0ZWQgZm9yXFxuXFxuXFx0XFx0XFx0bWF0ZXJpYWxQcm9wZXJ0aWVzLmxpZ2h0c0hhc2ggPSBsaWdodHMuc3RhdGUuaGFzaDtcXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmxpZ2h0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyB3aXJlIHVwIHRoZSBtYXRlcmlhbCB0byB0aGlzIHJlbmRlcmVyJ3MgbGlnaHRpbmcgc3RhdGVcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5hbWJpZW50TGlnaHRDb2xvci52YWx1ZSA9IGxpZ2h0cy5zdGF0ZS5hbWJpZW50O1xcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmRpcmVjdGlvbmFsTGlnaHRzLnZhbHVlID0gbGlnaHRzLnN0YXRlLmRpcmVjdGlvbmFsO1xcblxcdFxcdFxcdFxcdHVuaWZvcm1zLnNwb3RMaWdodHMudmFsdWUgPSBsaWdodHMuc3RhdGUuc3BvdDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5yZWN0QXJlYUxpZ2h0cy52YWx1ZSA9IGxpZ2h0cy5zdGF0ZS5yZWN0QXJlYTtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5wb2ludExpZ2h0cy52YWx1ZSA9IGxpZ2h0cy5zdGF0ZS5wb2ludDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5oZW1pc3BoZXJlTGlnaHRzLnZhbHVlID0gbGlnaHRzLnN0YXRlLmhlbWk7XFxuXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlyZWN0aW9uYWxTaGFkb3dNYXAudmFsdWUgPSBsaWdodHMuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXA7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgudmFsdWUgPSBsaWdodHMuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuc3BvdFNoYWRvd01hcC52YWx1ZSA9IGxpZ2h0cy5zdGF0ZS5zcG90U2hhZG93TWFwO1xcblxcdFxcdFxcdFxcdHVuaWZvcm1zLnNwb3RTaGFkb3dNYXRyaXgudmFsdWUgPSBsaWdodHMuc3RhdGUuc3BvdFNoYWRvd01hdHJpeDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5wb2ludFNoYWRvd01hcC52YWx1ZSA9IGxpZ2h0cy5zdGF0ZS5wb2ludFNoYWRvd01hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5wb2ludFNoYWRvd01hdHJpeC52YWx1ZSA9IGxpZ2h0cy5zdGF0ZS5wb2ludFNoYWRvd01hdHJpeDtcXG5cXHRcXHRcXHRcXHQvLyBUT0RPIChhYmVsbmF0aW9uKTogYWRkIGFyZWEgbGlnaHRzIHNoYWRvdyBpbmZvIHRvIHVuaWZvcm1zXFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBwcm9nVW5pZm9ybXMgPSBtYXRlcmlhbFByb3BlcnRpZXMucHJvZ3JhbS5nZXRVbmlmb3JtcygpLFxcblxcdFxcdFxcdFxcdHVuaWZvcm1zTGlzdCA9XFxuXFx0XFx0XFx0XFx0XFx0V2ViR0xVbmlmb3Jtcy5zZXFXaXRoVmFsdWUoIHByb2dVbmlmb3Jtcy5zZXEsIHVuaWZvcm1zICk7XFxuXFxuXFx0XFx0XFx0bWF0ZXJpYWxQcm9wZXJ0aWVzLnVuaWZvcm1zTGlzdCA9IHVuaWZvcm1zTGlzdDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc2V0UHJvZ3JhbSggY2FtZXJhLCBmb2csIG1hdGVyaWFsLCBvYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0X3VzZWRUZXh0dXJlVW5pdHMgPSAwO1xcblxcblxcdFxcdFxcdHZhciBtYXRlcmlhbFByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmdldCggbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIF9jbGlwcGluZ0VuYWJsZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBfbG9jYWxDbGlwcGluZ0VuYWJsZWQgfHwgY2FtZXJhICE9PSBfY3VycmVudENhbWVyYSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdXNlQ2FjaGUgPVxcblxcdFxcdFxcdFxcdFxcdFxcdGNhbWVyYSA9PT0gX2N1cnJlbnRDYW1lcmEgJiZcXG5cXHRcXHRcXHRcXHRcXHRcXHRtYXRlcmlhbC5pZCA9PT0gX2N1cnJlbnRNYXRlcmlhbElkO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHdlIG1pZ2h0IHdhbnQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggc29tZSBDbGlwcGluZ0dyb3VwXFxuXFx0XFx0XFx0XFx0XFx0Ly8gb2JqZWN0IGluc3RlYWQgb2YgdGhlIG1hdGVyaWFsLCBvbmNlIGl0IGJlY29tZXMgZmVhc2libGVcXG5cXHRcXHRcXHRcXHRcXHQvLyAoIzg0NjUsICM4Mzc5KVxcblxcdFxcdFxcdFxcdFxcdF9jbGlwcGluZy5zZXRTdGF0ZShcXG5cXHRcXHRcXHRcXHRcXHRcXHRtYXRlcmlhbC5jbGlwcGluZ1BsYW5lcywgbWF0ZXJpYWwuY2xpcEludGVyc2VjdGlvbiwgbWF0ZXJpYWwuY2xpcFNoYWRvd3MsXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FtZXJhLCBtYXRlcmlhbFByb3BlcnRpZXMsIHVzZUNhY2hlICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLm5lZWRzVXBkYXRlID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1hdGVyaWFsUHJvcGVydGllcy5wcm9ncmFtID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLmZvZyAmJiBtYXRlcmlhbFByb3BlcnRpZXMuZm9nICE9PSBmb2cgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLmxpZ2h0cyAmJiBtYXRlcmlhbFByb3BlcnRpZXMubGlnaHRzSGFzaCAhPT0gbGlnaHRzLnN0YXRlLmhhc2ggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsUHJvcGVydGllcy5udW1DbGlwcGluZ1BsYW5lcyAhPT0gdW5kZWZpbmVkICYmXFxuXFx0XFx0XFx0XFx0XFx0KCBtYXRlcmlhbFByb3BlcnRpZXMubnVtQ2xpcHBpbmdQbGFuZXMgIT09IF9jbGlwcGluZy5udW1QbGFuZXMgfHxcXG5cXHRcXHRcXHRcXHRcXHRtYXRlcmlhbFByb3BlcnRpZXMubnVtSW50ZXJzZWN0aW9uICE9PSBfY2xpcHBpbmcubnVtSW50ZXJzZWN0aW9uICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5uZWVkc1VwZGF0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpbml0TWF0ZXJpYWwoIG1hdGVyaWFsLCBmb2csIG9iamVjdCApO1xcblxcdFxcdFxcdFxcdG1hdGVyaWFsLm5lZWRzVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciByZWZyZXNoUHJvZ3JhbSA9IGZhbHNlO1xcblxcdFxcdFxcdHZhciByZWZyZXNoTWF0ZXJpYWwgPSBmYWxzZTtcXG5cXHRcXHRcXHR2YXIgcmVmcmVzaExpZ2h0cyA9IGZhbHNlO1xcblxcblxcdFxcdFxcdHZhciBwcm9ncmFtID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnByb2dyYW0sXFxuXFx0XFx0XFx0XFx0cF91bmlmb3JtcyA9IHByb2dyYW0uZ2V0VW5pZm9ybXMoKSxcXG5cXHRcXHRcXHRcXHRtX3VuaWZvcm1zID0gbWF0ZXJpYWxQcm9wZXJ0aWVzLnNoYWRlci51bmlmb3JtcztcXG5cXG5cXHRcXHRcXHRpZiAoIHN0YXRlLnVzZVByb2dyYW0oIHByb2dyYW0ucHJvZ3JhbSApICkge1xcblxcblxcdFxcdFxcdFxcdHJlZnJlc2hQcm9ncmFtID0gdHJ1ZTtcXG5cXHRcXHRcXHRcXHRyZWZyZXNoTWF0ZXJpYWwgPSB0cnVlO1xcblxcdFxcdFxcdFxcdHJlZnJlc2hMaWdodHMgPSB0cnVlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmlkICE9PSBfY3VycmVudE1hdGVyaWFsSWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2N1cnJlbnRNYXRlcmlhbElkID0gbWF0ZXJpYWwuaWQ7XFxuXFxuXFx0XFx0XFx0XFx0cmVmcmVzaE1hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCByZWZyZXNoUHJvZ3JhbSB8fCBjYW1lcmEgIT09IF9jdXJyZW50Q2FtZXJhICkge1xcblxcblxcdFxcdFxcdFxcdHBfdW5pZm9ybXMuc2V0VmFsdWUoIF9nbCwgJ3Byb2plY3Rpb25NYXRyaXgnLCBjYW1lcmEucHJvamVjdGlvbk1hdHJpeCApO1xcblxcblxcdFxcdFxcdFxcdGlmICggY2FwYWJpbGl0aWVzLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cF91bmlmb3Jtcy5zZXRWYWx1ZSggX2dsLCAnbG9nRGVwdGhCdWZGQycsXFxuXFx0XFx0XFx0XFx0XFx0XFx0Mi4wIC8gKCBNYXRoLmxvZyggY2FtZXJhLmZhciArIDEuMCApIC8gTWF0aC5MTjIgKSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBBdm9pZCB1bm5lZWRlZCB1bmlmb3JtIHVwZGF0ZXMgcGVyIEFycmF5Q2FtZXJhJ3Mgc3ViLWNhbWVyYVxcblxcblxcdFxcdFxcdFxcdGlmICggX2N1cnJlbnRDYW1lcmEgIT09ICggX2N1cnJlbnRBcnJheUNhbWVyYSB8fCBjYW1lcmEgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRfY3VycmVudENhbWVyYSA9ICggX2N1cnJlbnRBcnJheUNhbWVyYSB8fCBjYW1lcmEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBsaWdodGluZyB1bmlmb3JtcyBkZXBlbmQgb24gdGhlIGNhbWVyYSBzbyBlbmZvcmNlIGFuIHVwZGF0ZVxcblxcdFxcdFxcdFxcdFxcdC8vIG5vdywgaW4gY2FzZSB0aGlzIG1hdGVyaWFsIHN1cHBvcnRzIGxpZ2h0cyAtIG9yIGxhdGVyLCB3aGVuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdGhlIG5leHQgbWF0ZXJpYWwgdGhhdCBkb2VzIGdldHMgYWN0aXZhdGVkOlxcblxcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hNYXRlcmlhbCA9IHRydWU7XFx0XFx0Ly8gc2V0IHRvIHRydWUgb24gbWF0ZXJpYWwgY2hhbmdlXFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaExpZ2h0cyA9IHRydWU7XFx0XFx0Ly8gcmVtYWlucyBzZXQgdW50aWwgdXBkYXRlIGRvbmVcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbG9hZCBtYXRlcmlhbCBzcGVjaWZpYyB1bmlmb3Jtc1xcblxcdFxcdFxcdFxcdC8vIChzaGFkZXIgbWF0ZXJpYWwgYWxzbyBnZXRzIHRoZW0gZm9yIHRoZSBzYWtlIG9mIGdlbmVyaWNpdHkpXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5pc1NoYWRlck1hdGVyaWFsIHx8XFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwuaXNNZXNoUGhvbmdNYXRlcmlhbCB8fFxcblxcdFxcdFxcdFxcdFxcdG1hdGVyaWFsLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWwgfHxcXG5cXHRcXHRcXHRcXHRcXHRtYXRlcmlhbC5lbnZNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHVDYW1Qb3MgPSBwX3VuaWZvcm1zLm1hcC5jYW1lcmFQb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHVDYW1Qb3MgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR1Q2FtUG9zLnNldFZhbHVlKCBfZ2wsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0X3ZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBjYW1lcmEubWF0cml4V29ybGQgKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5pc01lc2hQaG9uZ01hdGVyaWFsIHx8XFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwuaXNNZXNoTGFtYmVydE1hdGVyaWFsIHx8XFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwuaXNNZXNoQmFzaWNNYXRlcmlhbCB8fFxcblxcdFxcdFxcdFxcdFxcdG1hdGVyaWFsLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWwgfHxcXG5cXHRcXHRcXHRcXHRcXHRtYXRlcmlhbC5pc1NoYWRlck1hdGVyaWFsIHx8XFxuXFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWwuc2tpbm5pbmcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cF91bmlmb3Jtcy5zZXRWYWx1ZSggX2dsLCAndmlld01hdHJpeCcsIGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIHNraW5uaW5nIHVuaWZvcm1zIG11c3QgYmUgc2V0IGV2ZW4gaWYgbWF0ZXJpYWwgZGlkbid0IGNoYW5nZVxcblxcdFxcdFxcdC8vIGF1dG8tc2V0dGluZyBvZiB0ZXh0dXJlIHVuaXQgZm9yIGJvbmUgdGV4dHVyZSBtdXN0IGdvIGJlZm9yZSBvdGhlciB0ZXh0dXJlc1xcblxcdFxcdFxcdC8vIG5vdCBzdXJlIHdoeSwgYnV0IG90aGVyd2lzZSB3ZWlyZCB0aGluZ3MgaGFwcGVuXFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5za2lubmluZyApIHtcXG5cXG5cXHRcXHRcXHRcXHRwX3VuaWZvcm1zLnNldE9wdGlvbmFsKCBfZ2wsIG9iamVjdCwgJ2JpbmRNYXRyaXgnICk7XFxuXFx0XFx0XFx0XFx0cF91bmlmb3Jtcy5zZXRPcHRpb25hbCggX2dsLCBvYmplY3QsICdiaW5kTWF0cml4SW52ZXJzZScgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgc2tlbGV0b24gPSBvYmplY3Quc2tlbGV0b247XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBza2VsZXRvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgYm9uZXMgPSBza2VsZXRvbi5ib25lcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGNhcGFiaWxpdGllcy5mbG9hdFZlcnRleFRleHR1cmVzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggc2tlbGV0b24uYm9uZVRleHR1cmUgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyBsYXlvdXQgKDEgbWF0cml4ID0gNCBwaXhlbHMpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gICAgICBSR0JBIFJHQkEgUkdCQSBSR0JBICg9PiBjb2x1bW4xLCBjb2x1bW4yLCBjb2x1bW4zLCBjb2x1bW40KVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vICB3aXRoICA4eDggIHBpeGVsIHRleHR1cmUgbWF4ICAgMTYgYm9uZXMgKiA0IHBpeGVscyA9ICAoOCAqIDgpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gICAgICAgMTZ4MTYgcGl4ZWwgdGV4dHVyZSBtYXggICA2NCBib25lcyAqIDQgcGl4ZWxzID0gKDE2ICogMTYpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gICAgICAgMzJ4MzIgcGl4ZWwgdGV4dHVyZSBtYXggIDI1NiBib25lcyAqIDQgcGl4ZWxzID0gKDMyICogMzIpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gICAgICAgNjR4NjQgcGl4ZWwgdGV4dHVyZSBtYXggMTAyNCBib25lcyAqIDQgcGl4ZWxzID0gKDY0ICogNjQpXFxuXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIHNpemUgPSBNYXRoLnNxcnQoIGJvbmVzLmxlbmd0aCAqIDQgKTsgLy8gNCBwaXhlbHMgbmVlZGVkIGZvciAxIG1hdHJpeFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNpemUgPSBfTWF0aC5jZWlsUG93ZXJPZlR3byggc2l6ZSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHNpemUgPSBNYXRoLm1heCggc2l6ZSwgNCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBib25lTWF0cmljZXMgPSBuZXcgRmxvYXQzMkFycmF5KCBzaXplICogc2l6ZSAqIDQgKTsgLy8gNCBmbG9hdHMgcGVyIFJHQkEgcGl4ZWxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRib25lTWF0cmljZXMuc2V0KCBza2VsZXRvbi5ib25lTWF0cmljZXMgKTsgLy8gY29weSBjdXJyZW50IHZhbHVlc1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBib25lVGV4dHVyZSA9IG5ldyBEYXRhVGV4dHVyZSggYm9uZU1hdHJpY2VzLCBzaXplLCBzaXplLCBSR0JBRm9ybWF0LCBGbG9hdFR5cGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRza2VsZXRvbi5ib25lTWF0cmljZXMgPSBib25lTWF0cmljZXM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0c2tlbGV0b24uYm9uZVRleHR1cmUgPSBib25lVGV4dHVyZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRza2VsZXRvbi5ib25lVGV4dHVyZVNpemUgPSBzaXplO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRwX3VuaWZvcm1zLnNldFZhbHVlKCBfZ2wsICdib25lVGV4dHVyZScsIHNrZWxldG9uLmJvbmVUZXh0dXJlICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cF91bmlmb3Jtcy5zZXRWYWx1ZSggX2dsLCAnYm9uZVRleHR1cmVTaXplJywgc2tlbGV0b24uYm9uZVRleHR1cmVTaXplICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRwX3VuaWZvcm1zLnNldE9wdGlvbmFsKCBfZ2wsIHNrZWxldG9uLCAnYm9uZU1hdHJpY2VzJyApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggcmVmcmVzaE1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdFxcdHBfdW5pZm9ybXMuc2V0VmFsdWUoIF9nbCwgJ3RvbmVNYXBwaW5nRXhwb3N1cmUnLCBfdGhpcy50b25lTWFwcGluZ0V4cG9zdXJlICk7XFxuXFx0XFx0XFx0XFx0cF91bmlmb3Jtcy5zZXRWYWx1ZSggX2dsLCAndG9uZU1hcHBpbmdXaGl0ZVBvaW50JywgX3RoaXMudG9uZU1hcHBpbmdXaGl0ZVBvaW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5saWdodHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdGhlIGN1cnJlbnQgbWF0ZXJpYWwgcmVxdWlyZXMgbGlnaHRpbmcgaW5mb1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIG5vdGU6IGFsbCBsaWdodGluZyB1bmlmb3JtcyBhcmUgYWx3YXlzIHNldCBjb3JyZWN0bHlcXG5cXHRcXHRcXHRcXHRcXHQvLyB0aGV5IHNpbXBseSByZWZlcmVuY2UgdGhlIHJlbmRlcmVyJ3Mgc3RhdGUgZm9yIHRoZWlyXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdmFsdWVzXFxuXFx0XFx0XFx0XFx0XFx0Ly9cXG5cXHRcXHRcXHRcXHRcXHQvLyB1c2UgdGhlIGN1cnJlbnQgbWF0ZXJpYWwncyAubmVlZHNVcGRhdGUgZmxhZ3MgdG8gc2V0XFxuXFx0XFx0XFx0XFx0XFx0Ly8gdGhlIEdMIHN0YXRlIHdoZW4gcmVxdWlyZWRcXG5cXG5cXHRcXHRcXHRcXHRcXHRtYXJrVW5pZm9ybXNMaWdodHNOZWVkc1VwZGF0ZSggbV91bmlmb3JtcywgcmVmcmVzaExpZ2h0cyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyByZWZyZXNoIHVuaWZvcm1zIGNvbW1vbiB0byBzZXZlcmFsIG1hdGVyaWFsc1xcblxcblxcdFxcdFxcdFxcdGlmICggZm9nICYmIG1hdGVyaWFsLmZvZyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNGb2coIG1fdW5pZm9ybXMsIGZvZyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmlzTWVzaEJhc2ljTWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFVuaWZvcm1zQ29tbW9uKCBtX3VuaWZvcm1zLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLmlzTWVzaExhbWJlcnRNYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNDb21tb24oIG1fdW5pZm9ybXMsIG1hdGVyaWFsICk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFVuaWZvcm1zTGFtYmVydCggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5pc01lc2hQaG9uZ01hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hVbmlmb3Jtc0NvbW1vbiggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmlzTWVzaFRvb25NYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNUb29uKCBtX3VuaWZvcm1zLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0cmVmcmVzaFVuaWZvcm1zUGhvbmcoIG1fdW5pZm9ybXMsIG1hdGVyaWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFVuaWZvcm1zQ29tbW9uKCBtX3VuaWZvcm1zLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggbWF0ZXJpYWwuaXNNZXNoUGh5c2ljYWxNYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNQaHlzaWNhbCggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHJlZnJlc2hVbmlmb3Jtc1N0YW5kYXJkKCBtX3VuaWZvcm1zLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5pc01lc2hEZXB0aE1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hVbmlmb3Jtc0NvbW1vbiggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNEZXB0aCggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5pc01lc2hEaXN0YW5jZU1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hVbmlmb3Jtc0NvbW1vbiggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNEaXN0YW5jZSggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5pc01lc2hOb3JtYWxNYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNDb21tb24oIG1fdW5pZm9ybXMsIG1hdGVyaWFsICk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFVuaWZvcm1zTm9ybWFsKCBtX3VuaWZvcm1zLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLmlzTGluZUJhc2ljTWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFVuaWZvcm1zTGluZSggbV91bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmlzTGluZURhc2hlZE1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHJlZnJlc2hVbmlmb3Jtc0Rhc2goIG1fdW5pZm9ybXMsIG1hdGVyaWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLmlzUG9pbnRzTWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFVuaWZvcm1zUG9pbnRzKCBtX3VuaWZvcm1zLCBtYXRlcmlhbCApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIG1hdGVyaWFsLmlzU2hhZG93TWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bV91bmlmb3Jtcy5jb2xvci52YWx1ZSA9IG1hdGVyaWFsLmNvbG9yO1xcblxcdFxcdFxcdFxcdFxcdG1fdW5pZm9ybXMub3BhY2l0eS52YWx1ZSA9IG1hdGVyaWFsLm9wYWNpdHk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdC8vIFJlY3RBcmVhTGlnaHQgVGV4dHVyZVxcblxcdFxcdFxcdFxcdC8vIFRPRE8gKG1yZG9vYik6IEZpbmQgYSBuaWNlciBpbXBsZW1lbnRhdGlvblxcblxcblxcdFxcdFxcdFxcdGlmICggbV91bmlmb3Jtcy5sdGNNYXQgIT09IHVuZGVmaW5lZCApIG1fdW5pZm9ybXMubHRjTWF0LnZhbHVlID0gVW5pZm9ybXNMaWIuTFRDX01BVF9URVhUVVJFO1xcblxcdFxcdFxcdFxcdGlmICggbV91bmlmb3Jtcy5sdGNNYWcgIT09IHVuZGVmaW5lZCApIG1fdW5pZm9ybXMubHRjTWFnLnZhbHVlID0gVW5pZm9ybXNMaWIuTFRDX01BR19URVhUVVJFO1xcblxcblxcdFxcdFxcdFxcdFdlYkdMVW5pZm9ybXMudXBsb2FkKFxcblxcdFxcdFxcdFxcdFxcdF9nbCwgbWF0ZXJpYWxQcm9wZXJ0aWVzLnVuaWZvcm1zTGlzdCwgbV91bmlmb3JtcywgX3RoaXMgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFxuXFx0XFx0XFx0Ly8gY29tbW9uIG1hdHJpY2VzXFxuXFxuXFx0XFx0XFx0cF91bmlmb3Jtcy5zZXRWYWx1ZSggX2dsLCAnbW9kZWxWaWV3TWF0cml4Jywgb2JqZWN0Lm1vZGVsVmlld01hdHJpeCApO1xcblxcdFxcdFxcdHBfdW5pZm9ybXMuc2V0VmFsdWUoIF9nbCwgJ25vcm1hbE1hdHJpeCcsIG9iamVjdC5ub3JtYWxNYXRyaXggKTtcXG5cXHRcXHRcXHRwX3VuaWZvcm1zLnNldFZhbHVlKCBfZ2wsICdtb2RlbE1hdHJpeCcsIG9iamVjdC5tYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdHJldHVybiBwcm9ncmFtO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBVbmlmb3JtcyAocmVmcmVzaCB1bmlmb3JtcyBvYmplY3RzKVxcblxcblxcdFxcdGZ1bmN0aW9uIHJlZnJlc2hVbmlmb3Jtc0NvbW1vbiggdW5pZm9ybXMsIG1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdHVuaWZvcm1zLm9wYWNpdHkudmFsdWUgPSBtYXRlcmlhbC5vcGFjaXR5O1xcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwuY29sb3IgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlmZnVzZS52YWx1ZSA9IG1hdGVyaWFsLmNvbG9yO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmVtaXNzaXZlICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmVtaXNzaXZlLnZhbHVlLmNvcHkoIG1hdGVyaWFsLmVtaXNzaXZlICkubXVsdGlwbHlTY2FsYXIoIG1hdGVyaWFsLmVtaXNzaXZlSW50ZW5zaXR5ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwubWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLm1hcC52YWx1ZSA9IG1hdGVyaWFsLm1hcDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5hbHBoYU1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5hbHBoYU1hcC52YWx1ZSA9IG1hdGVyaWFsLmFscGhhTWFwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLnNwZWN1bGFyTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLnNwZWN1bGFyTWFwLnZhbHVlID0gbWF0ZXJpYWwuc3BlY3VsYXJNYXA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwuZW52TWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmVudk1hcC52YWx1ZSA9IG1hdGVyaWFsLmVudk1hcDtcXG5cXG5cXHRcXHRcXHRcXHQvLyBkb24ndCBmbGlwIEN1YmVUZXh0dXJlIGVudk1hcHMsIGZsaXAgZXZlcnl0aGluZyBlbHNlOlxcblxcdFxcdFxcdFxcdC8vICBXZWJHTFJlbmRlclRhcmdldEN1YmUgd2lsbCBiZSBmbGlwcGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxcblxcdFxcdFxcdFxcdC8vICBXZWJHTFJlbmRlclRhcmdldEN1YmUudGV4dHVyZSB3aWxsIGJlIGZsaXBwZWQgYmVjYXVzZSBpdCdzIGEgVGV4dHVyZSBhbmQgTk9UIGEgQ3ViZVRleHR1cmVcXG5cXHRcXHRcXHRcXHQvLyB0aGlzIGNoZWNrIG11c3QgYmUgaGFuZGxlZCBkaWZmZXJlbnRseSwgb3IgcmVtb3ZlZCBlbnRpcmVseSwgaWYgV2ViR0xSZW5kZXJUYXJnZXRDdWJlIHVzZXMgYSBDdWJlVGV4dHVyZSBpbiB0aGUgZnV0dXJlXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZSA9ICggISAoIG1hdGVyaWFsLmVudk1hcCAmJiBtYXRlcmlhbC5lbnZNYXAuaXNDdWJlVGV4dHVyZSApICkgPyAxIDogLSAxO1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLnJlZmxlY3Rpdml0eS52YWx1ZSA9IG1hdGVyaWFsLnJlZmxlY3Rpdml0eTtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5yZWZyYWN0aW9uUmF0aW8udmFsdWUgPSBtYXRlcmlhbC5yZWZyYWN0aW9uUmF0aW87XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwubGlnaHRNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMubGlnaHRNYXAudmFsdWUgPSBtYXRlcmlhbC5saWdodE1hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5saWdodE1hcEludGVuc2l0eS52YWx1ZSA9IG1hdGVyaWFsLmxpZ2h0TWFwSW50ZW5zaXR5O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmFvTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmFvTWFwLnZhbHVlID0gbWF0ZXJpYWwuYW9NYXA7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuYW9NYXBJbnRlbnNpdHkudmFsdWUgPSBtYXRlcmlhbC5hb01hcEludGVuc2l0eTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gdXYgcmVwZWF0IGFuZCBvZmZzZXQgc2V0dGluZyBwcmlvcml0aWVzXFxuXFx0XFx0XFx0Ly8gMS4gY29sb3IgbWFwXFxuXFx0XFx0XFx0Ly8gMi4gc3BlY3VsYXIgbWFwXFxuXFx0XFx0XFx0Ly8gMy4gbm9ybWFsIG1hcFxcblxcdFxcdFxcdC8vIDQuIGJ1bXAgbWFwXFxuXFx0XFx0XFx0Ly8gNS4gYWxwaGEgbWFwXFxuXFx0XFx0XFx0Ly8gNi4gZW1pc3NpdmUgbWFwXFxuXFxuXFx0XFx0XFx0dmFyIHV2U2NhbGVNYXA7XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5tYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dXZTY2FsZU1hcCA9IG1hdGVyaWFsLm1hcDtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5zcGVjdWxhck1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1dlNjYWxlTWFwID0gbWF0ZXJpYWwuc3BlY3VsYXJNYXA7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggbWF0ZXJpYWwuZGlzcGxhY2VtZW50TWFwICkge1xcblxcblxcdFxcdFxcdFxcdHV2U2NhbGVNYXAgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXA7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggbWF0ZXJpYWwubm9ybWFsTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHV2U2NhbGVNYXAgPSBtYXRlcmlhbC5ub3JtYWxNYXA7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggbWF0ZXJpYWwuYnVtcE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1dlNjYWxlTWFwID0gbWF0ZXJpYWwuYnVtcE1hcDtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5yb3VnaG5lc3NNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dXZTY2FsZU1hcCA9IG1hdGVyaWFsLnJvdWdobmVzc01hcDtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5tZXRhbG5lc3NNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dXZTY2FsZU1hcCA9IG1hdGVyaWFsLm1ldGFsbmVzc01hcDtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCBtYXRlcmlhbC5hbHBoYU1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1dlNjYWxlTWFwID0gbWF0ZXJpYWwuYWxwaGFNYXA7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggbWF0ZXJpYWwuZW1pc3NpdmVNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dXZTY2FsZU1hcCA9IG1hdGVyaWFsLmVtaXNzaXZlTWFwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHV2U2NhbGVNYXAgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxcblxcdFxcdFxcdFxcdGlmICggdXZTY2FsZU1hcC5pc1dlYkdMUmVuZGVyVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHV2U2NhbGVNYXAgPSB1dlNjYWxlTWFwLnRleHR1cmU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggdXZTY2FsZU1hcC5tYXRyaXhBdXRvVXBkYXRlID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBvZmZzZXQgPSB1dlNjYWxlTWFwLm9mZnNldDtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgcmVwZWF0ID0gdXZTY2FsZU1hcC5yZXBlYXQ7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJvdGF0aW9uID0gdXZTY2FsZU1hcC5yb3RhdGlvbjtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgY2VudGVyID0gdXZTY2FsZU1hcC5jZW50ZXI7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dXZTY2FsZU1hcC5tYXRyaXguc2V0VXZUcmFuc2Zvcm0oIG9mZnNldC54LCBvZmZzZXQueSwgcmVwZWF0LngsIHJlcGVhdC55LCByb3RhdGlvbiwgY2VudGVyLngsIGNlbnRlci55ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoIHV2U2NhbGVNYXAubWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiByZWZyZXNoVW5pZm9ybXNMaW5lKCB1bmlmb3JtcywgbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXMuZGlmZnVzZS52YWx1ZSA9IG1hdGVyaWFsLmNvbG9yO1xcblxcdFxcdFxcdHVuaWZvcm1zLm9wYWNpdHkudmFsdWUgPSBtYXRlcmlhbC5vcGFjaXR5O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiByZWZyZXNoVW5pZm9ybXNEYXNoKCB1bmlmb3JtcywgbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXMuZGFzaFNpemUudmFsdWUgPSBtYXRlcmlhbC5kYXNoU2l6ZTtcXG5cXHRcXHRcXHR1bmlmb3Jtcy50b3RhbFNpemUudmFsdWUgPSBtYXRlcmlhbC5kYXNoU2l6ZSArIG1hdGVyaWFsLmdhcFNpemU7XFxuXFx0XFx0XFx0dW5pZm9ybXMuc2NhbGUudmFsdWUgPSBtYXRlcmlhbC5zY2FsZTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVmcmVzaFVuaWZvcm1zUG9pbnRzKCB1bmlmb3JtcywgbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXMuZGlmZnVzZS52YWx1ZSA9IG1hdGVyaWFsLmNvbG9yO1xcblxcdFxcdFxcdHVuaWZvcm1zLm9wYWNpdHkudmFsdWUgPSBtYXRlcmlhbC5vcGFjaXR5O1xcblxcdFxcdFxcdHVuaWZvcm1zLnNpemUudmFsdWUgPSBtYXRlcmlhbC5zaXplICogX3BpeGVsUmF0aW87XFxuXFx0XFx0XFx0dW5pZm9ybXMuc2NhbGUudmFsdWUgPSBfaGVpZ2h0ICogMC41O1xcblxcblxcdFxcdFxcdHVuaWZvcm1zLm1hcC52YWx1ZSA9IG1hdGVyaWFsLm1hcDtcXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLm1hcCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1hdGVyaWFsLm1hcC5tYXRyaXhBdXRvVXBkYXRlID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBvZmZzZXQgPSBtYXRlcmlhbC5tYXAub2Zmc2V0O1xcblxcdFxcdFxcdFxcdFxcdHZhciByZXBlYXQgPSBtYXRlcmlhbC5tYXAucmVwZWF0O1xcblxcdFxcdFxcdFxcdFxcdHZhciByb3RhdGlvbiA9IG1hdGVyaWFsLm1hcC5yb3RhdGlvbjtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgY2VudGVyID0gbWF0ZXJpYWwubWFwLmNlbnRlcjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtYXRlcmlhbC5tYXAubWF0cml4LnNldFV2VHJhbnNmb3JtKCBvZmZzZXQueCwgb2Zmc2V0LnksIHJlcGVhdC54LCByZXBlYXQueSwgcm90YXRpb24sIGNlbnRlci54LCBjZW50ZXIueSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KCBtYXRlcmlhbC5tYXAubWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiByZWZyZXNoVW5pZm9ybXNGb2coIHVuaWZvcm1zLCBmb2cgKSB7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXMuZm9nQ29sb3IudmFsdWUgPSBmb2cuY29sb3I7XFxuXFxuXFx0XFx0XFx0aWYgKCBmb2cuaXNGb2cgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZm9nTmVhci52YWx1ZSA9IGZvZy5uZWFyO1xcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmZvZ0Zhci52YWx1ZSA9IGZvZy5mYXI7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggZm9nLmlzRm9nRXhwMiApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5mb2dEZW5zaXR5LnZhbHVlID0gZm9nLmRlbnNpdHk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiByZWZyZXNoVW5pZm9ybXNMYW1iZXJ0KCB1bmlmb3JtcywgbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5lbWlzc2l2ZU1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5lbWlzc2l2ZU1hcC52YWx1ZSA9IG1hdGVyaWFsLmVtaXNzaXZlTWFwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVmcmVzaFVuaWZvcm1zUGhvbmcoIHVuaWZvcm1zLCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHR1bmlmb3Jtcy5zcGVjdWxhci52YWx1ZSA9IG1hdGVyaWFsLnNwZWN1bGFyO1xcblxcdFxcdFxcdHVuaWZvcm1zLnNoaW5pbmVzcy52YWx1ZSA9IE1hdGgubWF4KCBtYXRlcmlhbC5zaGluaW5lc3MsIDFlLTQgKTsgLy8gdG8gcHJldmVudCBwb3coIDAuMCwgMC4wIClcXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmVtaXNzaXZlTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmVtaXNzaXZlTWFwLnZhbHVlID0gbWF0ZXJpYWwuZW1pc3NpdmVNYXA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwuYnVtcE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5idW1wTWFwLnZhbHVlID0gbWF0ZXJpYWwuYnVtcE1hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5idW1wU2NhbGUudmFsdWUgPSBtYXRlcmlhbC5idW1wU2NhbGU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwubm9ybWFsTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLm5vcm1hbE1hcC52YWx1ZSA9IG1hdGVyaWFsLm5vcm1hbE1hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KCBtYXRlcmlhbC5ub3JtYWxTY2FsZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmRpc3BsYWNlbWVudE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRNYXAudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXA7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlzcGxhY2VtZW50U2NhbGUudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRTY2FsZTtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlID0gbWF0ZXJpYWwuZGlzcGxhY2VtZW50QmlhcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHJlZnJlc2hVbmlmb3Jtc1Rvb24oIHVuaWZvcm1zLCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRyZWZyZXNoVW5pZm9ybXNQaG9uZyggdW5pZm9ybXMsIG1hdGVyaWFsICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5ncmFkaWVudE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5ncmFkaWVudE1hcC52YWx1ZSA9IG1hdGVyaWFsLmdyYWRpZW50TWFwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVmcmVzaFVuaWZvcm1zU3RhbmRhcmQoIHVuaWZvcm1zLCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHR1bmlmb3Jtcy5yb3VnaG5lc3MudmFsdWUgPSBtYXRlcmlhbC5yb3VnaG5lc3M7XFxuXFx0XFx0XFx0dW5pZm9ybXMubWV0YWxuZXNzLnZhbHVlID0gbWF0ZXJpYWwubWV0YWxuZXNzO1xcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwucm91Z2huZXNzTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLnJvdWdobmVzc01hcC52YWx1ZSA9IG1hdGVyaWFsLnJvdWdobmVzc01hcDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5tZXRhbG5lc3NNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMubWV0YWxuZXNzTWFwLnZhbHVlID0gbWF0ZXJpYWwubWV0YWxuZXNzTWFwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmVtaXNzaXZlTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmVtaXNzaXZlTWFwLnZhbHVlID0gbWF0ZXJpYWwuZW1pc3NpdmVNYXA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwuYnVtcE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5idW1wTWFwLnZhbHVlID0gbWF0ZXJpYWwuYnVtcE1hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5idW1wU2NhbGUudmFsdWUgPSBtYXRlcmlhbC5idW1wU2NhbGU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwubm9ybWFsTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLm5vcm1hbE1hcC52YWx1ZSA9IG1hdGVyaWFsLm5vcm1hbE1hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KCBtYXRlcmlhbC5ub3JtYWxTY2FsZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmRpc3BsYWNlbWVudE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRNYXAudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXA7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlzcGxhY2VtZW50U2NhbGUudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRTY2FsZTtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlID0gbWF0ZXJpYWwuZGlzcGxhY2VtZW50QmlhcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5lbnZNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly91bmlmb3Jtcy5lbnZNYXAudmFsdWUgPSBtYXRlcmlhbC5lbnZNYXA7IC8vIHBhcnQgb2YgdW5pZm9ybXMgY29tbW9uXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZW52TWFwSW50ZW5zaXR5LnZhbHVlID0gbWF0ZXJpYWwuZW52TWFwSW50ZW5zaXR5O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVmcmVzaFVuaWZvcm1zUGh5c2ljYWwoIHVuaWZvcm1zLCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHR1bmlmb3Jtcy5jbGVhckNvYXQudmFsdWUgPSBtYXRlcmlhbC5jbGVhckNvYXQ7XFxuXFx0XFx0XFx0dW5pZm9ybXMuY2xlYXJDb2F0Um91Z2huZXNzLnZhbHVlID0gbWF0ZXJpYWwuY2xlYXJDb2F0Um91Z2huZXNzO1xcblxcblxcdFxcdFxcdHJlZnJlc2hVbmlmb3Jtc1N0YW5kYXJkKCB1bmlmb3JtcywgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gcmVmcmVzaFVuaWZvcm1zRGVwdGgoIHVuaWZvcm1zLCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmRpc3BsYWNlbWVudE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRNYXAudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXA7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlzcGxhY2VtZW50U2NhbGUudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRTY2FsZTtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlID0gbWF0ZXJpYWwuZGlzcGxhY2VtZW50QmlhcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHJlZnJlc2hVbmlmb3Jtc0Rpc3RhbmNlKCB1bmlmb3JtcywgbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlzcGxhY2VtZW50TWFwLnZhbHVlID0gbWF0ZXJpYWwuZGlzcGxhY2VtZW50TWFwO1xcblxcdFxcdFxcdFxcdHVuaWZvcm1zLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlID0gbWF0ZXJpYWwuZGlzcGxhY2VtZW50U2NhbGU7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZSA9IG1hdGVyaWFsLmRpc3BsYWNlbWVudEJpYXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHVuaWZvcm1zLnJlZmVyZW5jZVBvc2l0aW9uLnZhbHVlLmNvcHkoIG1hdGVyaWFsLnJlZmVyZW5jZVBvc2l0aW9uICk7XFxuXFx0XFx0XFx0dW5pZm9ybXMubmVhckRpc3RhbmNlLnZhbHVlID0gbWF0ZXJpYWwubmVhckRpc3RhbmNlO1xcblxcdFxcdFxcdHVuaWZvcm1zLmZhckRpc3RhbmNlLnZhbHVlID0gbWF0ZXJpYWwuZmFyRGlzdGFuY2U7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHJlZnJlc2hVbmlmb3Jtc05vcm1hbCggdW5pZm9ybXMsIG1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwuYnVtcE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5idW1wTWFwLnZhbHVlID0gbWF0ZXJpYWwuYnVtcE1hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5idW1wU2NhbGUudmFsdWUgPSBtYXRlcmlhbC5idW1wU2NhbGU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggbWF0ZXJpYWwubm9ybWFsTWFwICkge1xcblxcblxcdFxcdFxcdFxcdHVuaWZvcm1zLm5vcm1hbE1hcC52YWx1ZSA9IG1hdGVyaWFsLm5vcm1hbE1hcDtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KCBtYXRlcmlhbC5ub3JtYWxTY2FsZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIG1hdGVyaWFsLmRpc3BsYWNlbWVudE1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRNYXAudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXA7XFxuXFx0XFx0XFx0XFx0dW5pZm9ybXMuZGlzcGxhY2VtZW50U2NhbGUudmFsdWUgPSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRTY2FsZTtcXG5cXHRcXHRcXHRcXHR1bmlmb3Jtcy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlID0gbWF0ZXJpYWwuZGlzcGxhY2VtZW50QmlhcztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIElmIHVuaWZvcm1zIGFyZSBtYXJrZWQgYXMgY2xlYW4sIHRoZXkgZG9uJ3QgbmVlZCB0byBiZSBsb2FkZWQgdG8gdGhlIEdQVS5cXG5cXG5cXHRcXHRmdW5jdGlvbiBtYXJrVW5pZm9ybXNMaWdodHNOZWVkc1VwZGF0ZSggdW5pZm9ybXMsIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHVuaWZvcm1zLmFtYmllbnRMaWdodENvbG9yLm5lZWRzVXBkYXRlID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0dW5pZm9ybXMuZGlyZWN0aW9uYWxMaWdodHMubmVlZHNVcGRhdGUgPSB2YWx1ZTtcXG5cXHRcXHRcXHR1bmlmb3Jtcy5wb2ludExpZ2h0cy5uZWVkc1VwZGF0ZSA9IHZhbHVlO1xcblxcdFxcdFxcdHVuaWZvcm1zLnNwb3RMaWdodHMubmVlZHNVcGRhdGUgPSB2YWx1ZTtcXG5cXHRcXHRcXHR1bmlmb3Jtcy5yZWN0QXJlYUxpZ2h0cy5uZWVkc1VwZGF0ZSA9IHZhbHVlO1xcblxcdFxcdFxcdHVuaWZvcm1zLmhlbWlzcGhlcmVMaWdodHMubmVlZHNVcGRhdGUgPSB2YWx1ZTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gR0wgc3RhdGUgc2V0dGluZ1xcblxcblxcdFxcdHRoaXMuc2V0RmFjZUN1bGxpbmcgPSBmdW5jdGlvbiAoIGN1bGxGYWNlLCBmcm9udEZhY2VEaXJlY3Rpb24gKSB7XFxuXFxuXFx0XFx0XFx0c3RhdGUuc2V0Q3VsbEZhY2UoIGN1bGxGYWNlICk7XFxuXFx0XFx0XFx0c3RhdGUuc2V0RmxpcFNpZGVkKCBmcm9udEZhY2VEaXJlY3Rpb24gPT09IEZyb250RmFjZURpcmVjdGlvbkNXICk7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHQvLyBUZXh0dXJlc1xcblxcblxcdFxcdGZ1bmN0aW9uIGFsbG9jVGV4dHVyZVVuaXQoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRleHR1cmVVbml0ID0gX3VzZWRUZXh0dXJlVW5pdHM7XFxuXFxuXFx0XFx0XFx0aWYgKCB0ZXh0dXJlVW5pdCA+PSBjYXBhYmlsaXRpZXMubWF4VGV4dHVyZXMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogVHJ5aW5nIHRvIHVzZSAnICsgdGV4dHVyZVVuaXQgKyAnIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAnICsgY2FwYWJpbGl0aWVzLm1heFRleHR1cmVzICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdF91c2VkVGV4dHVyZVVuaXRzICs9IDE7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRleHR1cmVVbml0O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLmFsbG9jVGV4dHVyZVVuaXQgPSBhbGxvY1RleHR1cmVVbml0O1xcblxcblxcdFxcdC8vIHRoaXMuc2V0VGV4dHVyZTJEID0gc2V0VGV4dHVyZTJEO1xcblxcdFxcdHRoaXMuc2V0VGV4dHVyZTJEID0gKCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHdhcm5lZCA9IGZhbHNlO1xcblxcblxcdFxcdFxcdC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiBwZWVsIHRleHR1cmUudGV4dHVyZVxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBzZXRUZXh0dXJlMkQoIHRleHR1cmUsIHNsb3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlICYmIHRleHR1cmUuaXNXZWJHTFJlbmRlclRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoICEgd2FybmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggXFxcIlRIUkVFLldlYkdMUmVuZGVyZXIuc2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLlxcXCIgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR3YXJuZWQgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR0ZXh0dXJlID0gdGV4dHVyZS50ZXh0dXJlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0ZXh0dXJlcy5zZXRUZXh0dXJlMkQoIHRleHR1cmUsIHNsb3QgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSApO1xcblxcblxcdFxcdHRoaXMuc2V0VGV4dHVyZSA9ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB3YXJuZWQgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gc2V0VGV4dHVyZSggdGV4dHVyZSwgc2xvdCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoICEgd2FybmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggXFxcIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlIGlzIGRlcHJlY2F0ZWQsIHVzZSBzZXRUZXh0dXJlMkQgaW5zdGVhZC5cXFwiICk7XFxuXFx0XFx0XFx0XFx0XFx0d2FybmVkID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZXMuc2V0VGV4dHVyZTJEKCB0ZXh0dXJlLCBzbG90ICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCkgKTtcXG5cXG5cXHRcXHR0aGlzLnNldFRleHR1cmVDdWJlID0gKCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHdhcm5lZCA9IGZhbHNlO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBzZXRUZXh0dXJlQ3ViZSggdGV4dHVyZSwgc2xvdCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogcGVlbCB0ZXh0dXJlLnRleHR1cmVcXG5cXHRcXHRcXHRcXHRpZiAoIHRleHR1cmUgJiYgdGV4dHVyZS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoICEgd2FybmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggXFxcIlRIUkVFLldlYkdMUmVuZGVyZXIuc2V0VGV4dHVyZUN1YmU6IGRvbid0IHVzZSBjdWJlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC5cXFwiICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0d2FybmVkID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZSA9IHRleHR1cmUudGV4dHVyZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gY3VycmVudGx5IHJlbHlpbmcgb24gdGhlIGZhY3QgdGhhdCBXZWJHTFJlbmRlclRhcmdldEN1YmUudGV4dHVyZSBpcyBhIFRleHR1cmUgYW5kIE5PVCBhIEN1YmVUZXh0dXJlXFxuXFx0XFx0XFx0XFx0Ly8gVE9ETzogdW5pZnkgdGhlc2UgY29kZSBwYXRoc1xcblxcdFxcdFxcdFxcdGlmICggKCB0ZXh0dXJlICYmIHRleHR1cmUuaXNDdWJlVGV4dHVyZSApIHx8XFxuXFx0XFx0XFx0XFx0XFx0KCBBcnJheS5pc0FycmF5KCB0ZXh0dXJlLmltYWdlICkgJiYgdGV4dHVyZS5pbWFnZS5sZW5ndGggPT09IDYgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBDb21wcmVzc2VkVGV4dHVyZSBjYW4gaGF2ZSBBcnJheSBpbiBpbWFnZSA6L1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHRoaXMgZnVuY3Rpb24gYWxvbmUgc2hvdWxkIHRha2UgY2FyZSBvZiBjdWJlIHRleHR1cmVzXFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZXMuc2V0VGV4dHVyZUN1YmUoIHRleHR1cmUsIHNsb3QgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGFzc3VtZWQ6IHRleHR1cmUgcHJvcGVydHkgb2YgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXRDdWJlXFxuXFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZXMuc2V0VGV4dHVyZUN1YmVEeW5hbWljKCB0ZXh0dXJlLCBzbG90ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpICk7XFxuXFxuXFx0XFx0dGhpcy5nZXRSZW5kZXJUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIF9jdXJyZW50UmVuZGVyVGFyZ2V0O1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5zZXRSZW5kZXJUYXJnZXQgPSBmdW5jdGlvbiAoIHJlbmRlclRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRfY3VycmVudFJlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDtcXG5cXG5cXHRcXHRcXHRpZiAoIHJlbmRlclRhcmdldCAmJiBwcm9wZXJ0aWVzLmdldCggcmVuZGVyVGFyZ2V0ICkuX193ZWJnbEZyYW1lYnVmZmVyID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZXMuc2V0dXBSZW5kZXJUYXJnZXQoIHJlbmRlclRhcmdldCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgZnJhbWVidWZmZXIgPSBudWxsO1xcblxcdFxcdFxcdHZhciBpc0N1YmUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRpZiAoIHJlbmRlclRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgX193ZWJnbEZyYW1lYnVmZmVyID0gcHJvcGVydGllcy5nZXQoIHJlbmRlclRhcmdldCApLl9fd2ViZ2xGcmFtZWJ1ZmZlcjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHJlbmRlclRhcmdldC5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmcmFtZWJ1ZmZlciA9IF9fd2ViZ2xGcmFtZWJ1ZmZlclsgcmVuZGVyVGFyZ2V0LmFjdGl2ZUN1YmVGYWNlIF07XFxuXFx0XFx0XFx0XFx0XFx0aXNDdWJlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdGZyYW1lYnVmZmVyID0gX193ZWJnbEZyYW1lYnVmZmVyO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRfY3VycmVudFZpZXdwb3J0LmNvcHkoIHJlbmRlclRhcmdldC52aWV3cG9ydCApO1xcblxcdFxcdFxcdFxcdF9jdXJyZW50U2Npc3Nvci5jb3B5KCByZW5kZXJUYXJnZXQuc2Npc3NvciApO1xcblxcdFxcdFxcdFxcdF9jdXJyZW50U2Npc3NvclRlc3QgPSByZW5kZXJUYXJnZXQuc2Npc3NvclRlc3Q7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRfY3VycmVudFZpZXdwb3J0LmNvcHkoIF92aWV3cG9ydCApLm11bHRpcGx5U2NhbGFyKCBfcGl4ZWxSYXRpbyApO1xcblxcdFxcdFxcdFxcdF9jdXJyZW50U2Npc3Nvci5jb3B5KCBfc2Npc3NvciApLm11bHRpcGx5U2NhbGFyKCBfcGl4ZWxSYXRpbyApO1xcblxcdFxcdFxcdFxcdF9jdXJyZW50U2Npc3NvclRlc3QgPSBfc2Npc3NvclRlc3Q7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggX2N1cnJlbnRGcmFtZWJ1ZmZlciAhPT0gZnJhbWVidWZmZXIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0X2dsLmJpbmRGcmFtZWJ1ZmZlciggX2dsLkZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlciApO1xcblxcdFxcdFxcdFxcdF9jdXJyZW50RnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlcjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0c3RhdGUudmlld3BvcnQoIF9jdXJyZW50Vmlld3BvcnQgKTtcXG5cXHRcXHRcXHRzdGF0ZS5zY2lzc29yKCBfY3VycmVudFNjaXNzb3IgKTtcXG5cXHRcXHRcXHRzdGF0ZS5zZXRTY2lzc29yVGVzdCggX2N1cnJlbnRTY2lzc29yVGVzdCApO1xcblxcblxcdFxcdFxcdGlmICggaXNDdWJlICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB0ZXh0dXJlUHJvcGVydGllcyA9IHByb3BlcnRpZXMuZ2V0KCByZW5kZXJUYXJnZXQudGV4dHVyZSApO1xcblxcdFxcdFxcdFxcdF9nbC5mcmFtZWJ1ZmZlclRleHR1cmUyRCggX2dsLkZSQU1FQlVGRkVSLCBfZ2wuQ09MT1JfQVRUQUNITUVOVDAsIF9nbC5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyByZW5kZXJUYXJnZXQuYWN0aXZlQ3ViZUZhY2UsIHRleHR1cmVQcm9wZXJ0aWVzLl9fd2ViZ2xUZXh0dXJlLCByZW5kZXJUYXJnZXQuYWN0aXZlTWlwTWFwTGV2ZWwgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHMgPSBmdW5jdGlvbiAoIHJlbmRlclRhcmdldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYnVmZmVyICkge1xcblxcblxcdFxcdFxcdGlmICggISAoIHJlbmRlclRhcmdldCAmJiByZW5kZXJUYXJnZXQuaXNXZWJHTFJlbmRlclRhcmdldCApICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGZyYW1lYnVmZmVyID0gcHJvcGVydGllcy5nZXQoIHJlbmRlclRhcmdldCApLl9fd2ViZ2xGcmFtZWJ1ZmZlcjtcXG5cXG5cXHRcXHRcXHRpZiAoIGZyYW1lYnVmZmVyICkge1xcblxcblxcdFxcdFxcdFxcdHZhciByZXN0b3JlID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBmcmFtZWJ1ZmZlciAhPT0gX2N1cnJlbnRGcmFtZWJ1ZmZlciApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRfZ2wuYmluZEZyYW1lYnVmZmVyKCBfZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVzdG9yZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRyeSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHRleHR1cmUgPSByZW5kZXJUYXJnZXQudGV4dHVyZTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgdGV4dHVyZUZvcm1hdCA9IHRleHR1cmUuZm9ybWF0O1xcblxcdFxcdFxcdFxcdFxcdHZhciB0ZXh0dXJlVHlwZSA9IHRleHR1cmUudHlwZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHRleHR1cmVGb3JtYXQgIT09IFJHQkFGb3JtYXQgJiYgdXRpbHMuY29udmVydCggdGV4dHVyZUZvcm1hdCApICE9PSBfZ2wuZ2V0UGFyYW1ldGVyKCBfZ2wuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFJHQkEgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBmb3JtYXQuJyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlVHlwZSAhPT0gVW5zaWduZWRCeXRlVHlwZSAmJiB1dGlscy5jb252ZXJ0KCB0ZXh0dXJlVHlwZSApICE9PSBfZ2wuZ2V0UGFyYW1ldGVyKCBfZ2wuSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFICkgJiYgLy8gSUUxMSwgRWRnZSBhbmQgQ2hyb21lIE1hYyA8IDUyICgjOTUxMylcXG5cXHRcXHRcXHRcXHRcXHRcXHQhICggdGV4dHVyZVR5cGUgPT09IEZsb2F0VHlwZSAmJiAoIGV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfZmxvYXQnICkgfHwgZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQnICkgKSApICYmIC8vIENocm9tZSBNYWMgPj0gNTIgYW5kIEZpcmVmb3hcXG5cXHRcXHRcXHRcXHRcXHRcXHQhICggdGV4dHVyZVR5cGUgPT09IEhhbGZGbG9hdFR5cGUgJiYgZXh0ZW5zaW9ucy5nZXQoICdFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQnICkgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFVuc2lnbmVkQnl0ZVR5cGUgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0eXBlLicgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGlmICggX2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoIF9nbC5GUkFNRUJVRkZFUiApID09PSBfZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gdGhlIGZvbGxvd2luZyBpZiBzdGF0ZW1lbnQgZW5zdXJlcyB2YWxpZCByZWFkIHJlcXVlc3RzIChubyBvdXQtb2YtYm91bmRzIHBpeGVscywgc2VlICM4NjA0KVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggKCB4ID49IDAgJiYgeCA8PSAoIHJlbmRlclRhcmdldC53aWR0aCAtIHdpZHRoICkgKSAmJiAoIHkgPj0gMCAmJiB5IDw9ICggcmVuZGVyVGFyZ2V0LmhlaWdodCAtIGhlaWdodCApICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0X2dsLnJlYWRQaXhlbHMoIHgsIHksIHdpZHRoLCBoZWlnaHQsIHV0aWxzLmNvbnZlcnQoIHRleHR1cmVGb3JtYXQgKSwgdXRpbHMuY29udmVydCggdGV4dHVyZVR5cGUgKSwgYnVmZmVyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVhZFBpeGVscyBmcm9tIHJlbmRlclRhcmdldCBmYWlsZWQuIEZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZS4nICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZmluYWxseSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCByZXN0b3JlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdF9nbC5iaW5kRnJhbWVidWZmZXIoIF9nbC5GUkFNRUJVRkZFUiwgX2N1cnJlbnRGcmFtZWJ1ZmZlciApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH07XFxuXFxuXFx0fVxcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBGb2dFeHAyKCBjb2xvciwgZGVuc2l0eSApIHtcXG5cXG5cXHRcXHR0aGlzLm5hbWUgPSAnJztcXG5cXG5cXHRcXHR0aGlzLmNvbG9yID0gbmV3IENvbG9yKCBjb2xvciApO1xcblxcdFxcdHRoaXMuZGVuc2l0eSA9ICggZGVuc2l0eSAhPT0gdW5kZWZpbmVkICkgPyBkZW5zaXR5IDogMC4wMDAyNTtcXG5cXG5cXHR9XFxuXFxuXFx0Rm9nRXhwMi5wcm90b3R5cGUuaXNGb2dFeHAyID0gdHJ1ZTtcXG5cXG5cXHRGb2dFeHAyLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRyZXR1cm4gbmV3IEZvZ0V4cDIoIHRoaXMuY29sb3IuZ2V0SGV4KCksIHRoaXMuZGVuc2l0eSApO1xcblxcblxcdH07XFxuXFxuXFx0Rm9nRXhwMi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gKCAvKiBtZXRhICovICkge1xcblxcblxcdFxcdHJldHVybiB7XFxuXFx0XFx0XFx0dHlwZTogJ0ZvZ0V4cDInLFxcblxcdFxcdFxcdGNvbG9yOiB0aGlzLmNvbG9yLmdldEhleCgpLFxcblxcdFxcdFxcdGRlbnNpdHk6IHRoaXMuZGVuc2l0eVxcblxcdFxcdH07XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gRm9nKCBjb2xvciwgbmVhciwgZmFyICkge1xcblxcblxcdFxcdHRoaXMubmFtZSA9ICcnO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSBuZXcgQ29sb3IoIGNvbG9yICk7XFxuXFxuXFx0XFx0dGhpcy5uZWFyID0gKCBuZWFyICE9PSB1bmRlZmluZWQgKSA/IG5lYXIgOiAxO1xcblxcdFxcdHRoaXMuZmFyID0gKCBmYXIgIT09IHVuZGVmaW5lZCApID8gZmFyIDogMTAwMDtcXG5cXG5cXHR9XFxuXFxuXFx0Rm9nLnByb3RvdHlwZS5pc0ZvZyA9IHRydWU7XFxuXFxuXFx0Rm9nLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRyZXR1cm4gbmV3IEZvZyggdGhpcy5jb2xvci5nZXRIZXgoKSwgdGhpcy5uZWFyLCB0aGlzLmZhciApO1xcblxcblxcdH07XFxuXFxuXFx0Rm9nLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoIC8qIG1ldGEgKi8gKSB7XFxuXFxuXFx0XFx0cmV0dXJuIHtcXG5cXHRcXHRcXHR0eXBlOiAnRm9nJyxcXG5cXHRcXHRcXHRjb2xvcjogdGhpcy5jb2xvci5nZXRIZXgoKSxcXG5cXHRcXHRcXHRuZWFyOiB0aGlzLm5lYXIsXFxuXFx0XFx0XFx0ZmFyOiB0aGlzLmZhclxcblxcdFxcdH07XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFNjZW5lKCkge1xcblxcblxcdFxcdE9iamVjdDNELmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnU2NlbmUnO1xcblxcblxcdFxcdHRoaXMuYmFja2dyb3VuZCA9IG51bGw7XFxuXFx0XFx0dGhpcy5mb2cgPSBudWxsO1xcblxcdFxcdHRoaXMub3ZlcnJpZGVNYXRlcmlhbCA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5hdXRvVXBkYXRlID0gdHJ1ZTsgLy8gY2hlY2tlZCBieSB0aGUgcmVuZGVyZXJcXG5cXG5cXHR9XFxuXFxuXFx0U2NlbmUucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggT2JqZWN0M0QucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogU2NlbmUsXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UsIHJlY3Vyc2l2ZSApIHtcXG5cXG5cXHRcXHRcXHRPYmplY3QzRC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UsIHJlY3Vyc2l2ZSApO1xcblxcblxcdFxcdFxcdGlmICggc291cmNlLmJhY2tncm91bmQgIT09IG51bGwgKSB0aGlzLmJhY2tncm91bmQgPSBzb3VyY2UuYmFja2dyb3VuZC5jbG9uZSgpO1xcblxcdFxcdFxcdGlmICggc291cmNlLmZvZyAhPT0gbnVsbCApIHRoaXMuZm9nID0gc291cmNlLmZvZy5jbG9uZSgpO1xcblxcdFxcdFxcdGlmICggc291cmNlLm92ZXJyaWRlTWF0ZXJpYWwgIT09IG51bGwgKSB0aGlzLm92ZXJyaWRlTWF0ZXJpYWwgPSBzb3VyY2Uub3ZlcnJpZGVNYXRlcmlhbC5jbG9uZSgpO1xcblxcblxcdFxcdFxcdHRoaXMuYXV0b1VwZGF0ZSA9IHNvdXJjZS5hdXRvVXBkYXRlO1xcblxcdFxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IHNvdXJjZS5tYXRyaXhBdXRvVXBkYXRlO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dG9KU09OOiBmdW5jdGlvbiAoIG1ldGEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGRhdGEgPSBPYmplY3QzRC5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMsIG1ldGEgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuYmFja2dyb3VuZCAhPT0gbnVsbCApIGRhdGEub2JqZWN0LmJhY2tncm91bmQgPSB0aGlzLmJhY2tncm91bmQudG9KU09OKCBtZXRhICk7XFxuXFx0XFx0XFx0aWYgKCB0aGlzLmZvZyAhPT0gbnVsbCApIGRhdGEub2JqZWN0LmZvZyA9IHRoaXMuZm9nLnRvSlNPTigpO1xcblxcblxcdFxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtaWthZWwgZW10aW5nZXIgLyBodHRwOi8vZ29tby5zZS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIExlbnNGbGFyZSggdGV4dHVyZSwgc2l6ZSwgZGlzdGFuY2UsIGJsZW5kaW5nLCBjb2xvciApIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy5sZW5zRmxhcmVzID0gW107XFxuXFxuXFx0XFx0dGhpcy5wb3NpdGlvblNjcmVlbiA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dGhpcy5jdXN0b21VcGRhdGVDYWxsYmFjayA9IHVuZGVmaW5lZDtcXG5cXG5cXHRcXHRpZiAoIHRleHR1cmUgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFkZCggdGV4dHVyZSwgc2l6ZSwgZGlzdGFuY2UsIGJsZW5kaW5nLCBjb2xvciApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0TGVuc0ZsYXJlLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IExlbnNGbGFyZSxcXG5cXG5cXHRcXHRpc0xlbnNGbGFyZTogdHJ1ZSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHRPYmplY3QzRC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLnBvc2l0aW9uU2NyZWVuLmNvcHkoIHNvdXJjZS5wb3NpdGlvblNjcmVlbiApO1xcblxcdFxcdFxcdHRoaXMuY3VzdG9tVXBkYXRlQ2FsbGJhY2sgPSBzb3VyY2UuY3VzdG9tVXBkYXRlQ2FsbGJhY2s7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gc291cmNlLmxlbnNGbGFyZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmxlbnNGbGFyZXMucHVzaCggc291cmNlLmxlbnNGbGFyZXNbIGkgXSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFkZDogZnVuY3Rpb24gKCB0ZXh0dXJlLCBzaXplLCBkaXN0YW5jZSwgYmxlbmRpbmcsIGNvbG9yLCBvcGFjaXR5ICkge1xcblxcblxcdFxcdFxcdGlmICggc2l6ZSA9PT0gdW5kZWZpbmVkICkgc2l6ZSA9IC0gMTtcXG5cXHRcXHRcXHRpZiAoIGRpc3RhbmNlID09PSB1bmRlZmluZWQgKSBkaXN0YW5jZSA9IDA7XFxuXFx0XFx0XFx0aWYgKCBvcGFjaXR5ID09PSB1bmRlZmluZWQgKSBvcGFjaXR5ID0gMTtcXG5cXHRcXHRcXHRpZiAoIGNvbG9yID09PSB1bmRlZmluZWQgKSBjb2xvciA9IG5ldyBDb2xvciggMHhmZmZmZmYgKTtcXG5cXHRcXHRcXHRpZiAoIGJsZW5kaW5nID09PSB1bmRlZmluZWQgKSBibGVuZGluZyA9IE5vcm1hbEJsZW5kaW5nO1xcblxcblxcdFxcdFxcdGRpc3RhbmNlID0gTWF0aC5taW4oIGRpc3RhbmNlLCBNYXRoLm1heCggMCwgZGlzdGFuY2UgKSApO1xcblxcblxcdFxcdFxcdHRoaXMubGVuc0ZsYXJlcy5wdXNoKCB7XFxuXFx0XFx0XFx0XFx0dGV4dHVyZTogdGV4dHVyZSxcXHQvLyBUSFJFRS5UZXh0dXJlXFxuXFx0XFx0XFx0XFx0c2l6ZTogc2l6ZSwgXFx0XFx0Ly8gc2l6ZSBpbiBwaXhlbHMgKC0xID0gdXNlIHRleHR1cmUud2lkdGgpXFxuXFx0XFx0XFx0XFx0ZGlzdGFuY2U6IGRpc3RhbmNlLCBcXHQvLyBkaXN0YW5jZSAoMC0xKSBmcm9tIGxpZ2h0IHNvdXJjZSAoMD1hdCBsaWdodCBzb3VyY2UpXFxuXFx0XFx0XFx0XFx0eDogMCwgeTogMCwgejogMCxcXHQvLyBzY3JlZW4gcG9zaXRpb24gKC0xID0+IDEpIHogPSAwIGlzIGluIGZyb250IHogPSAxIGlzIGJhY2tcXG5cXHRcXHRcXHRcXHRzY2FsZTogMSwgXFx0XFx0Ly8gc2NhbGVcXG5cXHRcXHRcXHRcXHRyb3RhdGlvbjogMCwgXFx0XFx0Ly8gcm90YXRpb25cXG5cXHRcXHRcXHRcXHRvcGFjaXR5OiBvcGFjaXR5LFxcdC8vIG9wYWNpdHlcXG5cXHRcXHRcXHRcXHRjb2xvcjogY29sb3IsXFx0XFx0Ly8gY29sb3JcXG5cXHRcXHRcXHRcXHRibGVuZGluZzogYmxlbmRpbmdcXHQvLyBibGVuZGluZ1xcblxcdFxcdFxcdH0gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8qXFxuXFx0XFx0ICogVXBkYXRlIGxlbnMgZmxhcmVzIHVwZGF0ZSBwb3NpdGlvbnMgb24gYWxsIGZsYXJlcyBiYXNlZCBvbiB0aGUgc2NyZWVuIHBvc2l0aW9uXFxuXFx0XFx0ICogU2V0IG15TGVuc0ZsYXJlLmN1c3RvbVVwZGF0ZUNhbGxiYWNrIHRvIGFsdGVyIHRoZSBmbGFyZXMgaW4geW91ciBwcm9qZWN0IHNwZWNpZmljIHdheS5cXG5cXHRcXHQgKi9cXG5cXG5cXHRcXHR1cGRhdGVMZW5zRmxhcmVzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGYsIGZsID0gdGhpcy5sZW5zRmxhcmVzLmxlbmd0aDtcXG5cXHRcXHRcXHR2YXIgZmxhcmU7XFxuXFx0XFx0XFx0dmFyIHZlY1ggPSAtIHRoaXMucG9zaXRpb25TY3JlZW4ueCAqIDI7XFxuXFx0XFx0XFx0dmFyIHZlY1kgPSAtIHRoaXMucG9zaXRpb25TY3JlZW4ueSAqIDI7XFxuXFxuXFx0XFx0XFx0Zm9yICggZiA9IDA7IGYgPCBmbDsgZiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRmbGFyZSA9IHRoaXMubGVuc0ZsYXJlc1sgZiBdO1xcblxcblxcdFxcdFxcdFxcdGZsYXJlLnggPSB0aGlzLnBvc2l0aW9uU2NyZWVuLnggKyB2ZWNYICogZmxhcmUuZGlzdGFuY2U7XFxuXFx0XFx0XFx0XFx0ZmxhcmUueSA9IHRoaXMucG9zaXRpb25TY3JlZW4ueSArIHZlY1kgKiBmbGFyZS5kaXN0YW5jZTtcXG5cXG5cXHRcXHRcXHRcXHRmbGFyZS53YW50ZWRSb3RhdGlvbiA9IGZsYXJlLnggKiBNYXRoLlBJICogMC4yNTtcXG5cXHRcXHRcXHRcXHRmbGFyZS5yb3RhdGlvbiArPSAoIGZsYXJlLndhbnRlZFJvdGF0aW9uIC0gZmxhcmUucm90YXRpb24gKSAqIDAuMjU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGNvbG9yOiA8aGV4PixcXG5cXHQgKiAgb3BhY2l0eTogPGZsb2F0PixcXG5cXHQgKiAgbWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqXFxuXFx0ICpcXHR1dk9mZnNldDogbmV3IFRIUkVFLlZlY3RvcjIoKSxcXG5cXHQgKlxcdHV2U2NhbGU6IG5ldyBUSFJFRS5WZWN0b3IyKClcXG5cXHQgKiB9XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gU3ByaXRlTWF0ZXJpYWwoIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0TWF0ZXJpYWwuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdTcHJpdGVNYXRlcmlhbCc7XFxuXFxuXFx0XFx0dGhpcy5jb2xvciA9IG5ldyBDb2xvciggMHhmZmZmZmYgKTtcXG5cXHRcXHR0aGlzLm1hcCA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5yb3RhdGlvbiA9IDA7XFxuXFxuXFx0XFx0dGhpcy5mb2cgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLmxpZ2h0cyA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuc2V0VmFsdWVzKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdFNwcml0ZU1hdGVyaWFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE1hdGVyaWFsLnByb3RvdHlwZSApO1xcblxcdFNwcml0ZU1hdGVyaWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNwcml0ZU1hdGVyaWFsO1xcblxcdFNwcml0ZU1hdGVyaWFsLnByb3RvdHlwZS5pc1Nwcml0ZU1hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRTcHJpdGVNYXRlcmlhbC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdE1hdGVyaWFsLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMuY29sb3IuY29weSggc291cmNlLmNvbG9yICk7XFxuXFx0XFx0dGhpcy5tYXAgPSBzb3VyY2UubWFwO1xcblxcblxcdFxcdHRoaXMucm90YXRpb24gPSBzb3VyY2Uucm90YXRpb247XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gU3ByaXRlKCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1Nwcml0ZSc7XFxuXFxuXFx0XFx0dGhpcy5tYXRlcmlhbCA9ICggbWF0ZXJpYWwgIT09IHVuZGVmaW5lZCApID8gbWF0ZXJpYWwgOiBuZXcgU3ByaXRlTWF0ZXJpYWwoKTtcXG5cXG5cXHR9XFxuXFxuXFx0U3ByaXRlLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IFNwcml0ZSxcXG5cXG5cXHRcXHRpc1Nwcml0ZTogdHJ1ZSxcXG5cXG5cXHRcXHRyYXljYXN0OiAoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW50ZXJzZWN0UG9pbnQgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciB3b3JsZFBvc2l0aW9uID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgd29ybGRTY2FsZSA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJheWNhc3QoIHJheWNhc3RlciwgaW50ZXJzZWN0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHR3b3JsZFBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbiggdGhpcy5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdHJheWNhc3Rlci5yYXkuY2xvc2VzdFBvaW50VG9Qb2ludCggd29ybGRQb3NpdGlvbiwgaW50ZXJzZWN0UG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHR3b3JsZFNjYWxlLnNldEZyb21NYXRyaXhTY2FsZSggdGhpcy5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdHZhciBndWVzc1NpemVTcSA9IHdvcmxkU2NhbGUueCAqIHdvcmxkU2NhbGUueSAvIDQ7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB3b3JsZFBvc2l0aW9uLmRpc3RhbmNlVG9TcXVhcmVkKCBpbnRlcnNlY3RQb2ludCApID4gZ3Vlc3NTaXplU3EgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGRpc3RhbmNlID0gcmF5Y2FzdGVyLnJheS5vcmlnaW4uZGlzdGFuY2VUbyggaW50ZXJzZWN0UG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGRpc3RhbmNlIDwgcmF5Y2FzdGVyLm5lYXIgfHwgZGlzdGFuY2UgPiByYXljYXN0ZXIuZmFyICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdGludGVyc2VjdHMucHVzaCgge1xcblxcblxcdFxcdFxcdFxcdFxcdGRpc3RhbmNlOiBkaXN0YW5jZSxcXG5cXHRcXHRcXHRcXHRcXHRwb2ludDogaW50ZXJzZWN0UG9pbnQuY2xvbmUoKSxcXG5cXHRcXHRcXHRcXHRcXHRmYWNlOiBudWxsLFxcblxcdFxcdFxcdFxcdFxcdG9iamVjdDogdGhpc1xcblxcblxcdFxcdFxcdFxcdH0gKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSApLFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCB0aGlzLm1hdGVyaWFsICkuY29weSggdGhpcyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtaWthZWwgZW10aW5nZXIgLyBodHRwOi8vZ29tby5zZS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTE9EKCkge1xcblxcblxcdFxcdE9iamVjdDNELmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTE9EJztcXG5cXG5cXHRcXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggdGhpcywge1xcblxcdFxcdFxcdGxldmVsczoge1xcblxcdFxcdFxcdFxcdGVudW1lcmFibGU6IHRydWUsXFxuXFx0XFx0XFx0XFx0dmFsdWU6IFtdXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0gKTtcXG5cXG5cXHR9XFxuXFxuXFx0TE9ELnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IExPRCxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHRPYmplY3QzRC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UsIGZhbHNlICk7XFxuXFxuXFx0XFx0XFx0dmFyIGxldmVscyA9IHNvdXJjZS5sZXZlbHM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gbGV2ZWxzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGxldmVsID0gbGV2ZWxzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRMZXZlbCggbGV2ZWwub2JqZWN0LmNsb25lKCksIGxldmVsLmRpc3RhbmNlICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWRkTGV2ZWw6IGZ1bmN0aW9uICggb2JqZWN0LCBkaXN0YW5jZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGRpc3RhbmNlID09PSB1bmRlZmluZWQgKSBkaXN0YW5jZSA9IDA7XFxuXFxuXFx0XFx0XFx0ZGlzdGFuY2UgPSBNYXRoLmFicyggZGlzdGFuY2UgKTtcXG5cXG5cXHRcXHRcXHR2YXIgbGV2ZWxzID0gdGhpcy5sZXZlbHM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGwgPSAwOyBsIDwgbGV2ZWxzLmxlbmd0aDsgbCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGRpc3RhbmNlIDwgbGV2ZWxzWyBsIF0uZGlzdGFuY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRsZXZlbHMuc3BsaWNlKCBsLCAwLCB7IGRpc3RhbmNlOiBkaXN0YW5jZSwgb2JqZWN0OiBvYmplY3QgfSApO1xcblxcblxcdFxcdFxcdHRoaXMuYWRkKCBvYmplY3QgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldE9iamVjdEZvckRpc3RhbmNlOiBmdW5jdGlvbiAoIGRpc3RhbmNlICkge1xcblxcblxcdFxcdFxcdHZhciBsZXZlbHMgPSB0aGlzLmxldmVscztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDEsIGwgPSBsZXZlbHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGRpc3RhbmNlIDwgbGV2ZWxzWyBpIF0uZGlzdGFuY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gbGV2ZWxzWyBpIC0gMSBdLm9iamVjdDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJheWNhc3Q6ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBtYXRyaXhQb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJheWNhc3QoIHJheWNhc3RlciwgaW50ZXJzZWN0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRtYXRyaXhQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oIHRoaXMubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZGlzdGFuY2UgPSByYXljYXN0ZXIucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKCBtYXRyaXhQb3NpdGlvbiApO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZ2V0T2JqZWN0Rm9yRGlzdGFuY2UoIGRpc3RhbmNlICkucmF5Y2FzdCggcmF5Y2FzdGVyLCBpbnRlcnNlY3RzICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCkgKSxcXG5cXG5cXHRcXHR1cGRhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciB2MiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSggY2FtZXJhICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBsZXZlbHMgPSB0aGlzLmxldmVscztcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGxldmVscy5sZW5ndGggPiAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHYxLnNldEZyb21NYXRyaXhQb3NpdGlvbiggY2FtZXJhLm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0XFx0djIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCB0aGlzLm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGRpc3RhbmNlID0gdjEuZGlzdGFuY2VUbyggdjIgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsZXZlbHNbIDAgXS5vYmplY3QudmlzaWJsZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAxLCBsID0gbGV2ZWxzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBkaXN0YW5jZSA+PSBsZXZlbHNbIGkgXS5kaXN0YW5jZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRsZXZlbHNbIGkgLSAxIF0ub2JqZWN0LnZpc2libGUgPSBmYWxzZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRsZXZlbHNbIGkgXS5vYmplY3QudmlzaWJsZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0bGV2ZWxzWyBpIF0ub2JqZWN0LnZpc2libGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSgpLFxcblxcblxcdFxcdHRvSlNPTjogZnVuY3Rpb24gKCBtZXRhICkge1xcblxcblxcdFxcdFxcdHZhciBkYXRhID0gT2JqZWN0M0QucHJvdG90eXBlLnRvSlNPTi5jYWxsKCB0aGlzLCBtZXRhICk7XFxuXFxuXFx0XFx0XFx0ZGF0YS5vYmplY3QubGV2ZWxzID0gW107XFxuXFxuXFx0XFx0XFx0dmFyIGxldmVscyA9IHRoaXMubGV2ZWxzO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGxldmVscy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBsZXZlbCA9IGxldmVsc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdGRhdGEub2JqZWN0LmxldmVscy5wdXNoKCB7XFxuXFx0XFx0XFx0XFx0XFx0b2JqZWN0OiBsZXZlbC5vYmplY3QudXVpZCxcXG5cXHRcXHRcXHRcXHRcXHRkaXN0YW5jZTogbGV2ZWwuZGlzdGFuY2VcXG5cXHRcXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtaWthZWwgZW10aW5nZXIgLyBodHRwOi8vZ29tby5zZS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqIEBhdXRob3IgbWljaGFlbCBndWVycmVybyAvIGh0dHA6Ly9yZWFsaXR5bWVsdGRvd24uY29tXFxuXFx0ICogQGF1dGhvciBpa2VyciAvIGh0dHA6Ly92ZXJvbGQuY29tXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gU2tlbGV0b24oIGJvbmVzLCBib25lSW52ZXJzZXMgKSB7XFxuXFxuXFx0XFx0Ly8gY29weSB0aGUgYm9uZSBhcnJheVxcblxcblxcdFxcdGJvbmVzID0gYm9uZXMgfHwgW107XFxuXFxuXFx0XFx0dGhpcy5ib25lcyA9IGJvbmVzLnNsaWNlKCAwICk7XFxuXFx0XFx0dGhpcy5ib25lTWF0cmljZXMgPSBuZXcgRmxvYXQzMkFycmF5KCB0aGlzLmJvbmVzLmxlbmd0aCAqIDE2ICk7XFxuXFxuXFx0XFx0Ly8gdXNlIHRoZSBzdXBwbGllZCBib25lIGludmVyc2VzIG9yIGNhbGN1bGF0ZSB0aGUgaW52ZXJzZXNcXG5cXG5cXHRcXHRpZiAoIGJvbmVJbnZlcnNlcyA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdHRoaXMuY2FsY3VsYXRlSW52ZXJzZXMoKTtcXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5ib25lcy5sZW5ndGggPT09IGJvbmVJbnZlcnNlcy5sZW5ndGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ib25lSW52ZXJzZXMgPSBib25lSW52ZXJzZXMuc2xpY2UoIDAgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlNrZWxldG9uIGJvbmVJbnZlcnNlcyBpcyB0aGUgd3JvbmcgbGVuZ3RoLicgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJvbmVJbnZlcnNlcyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSB0aGlzLmJvbmVzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuYm9uZUludmVyc2VzLnB1c2goIG5ldyBNYXRyaXg0KCkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggU2tlbGV0b24ucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Y2FsY3VsYXRlSW52ZXJzZXM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmJvbmVJbnZlcnNlcyA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSB0aGlzLmJvbmVzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBpbnZlcnNlID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHRoaXMuYm9uZXNbIGkgXSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbnZlcnNlLmdldEludmVyc2UoIHRoaXMuYm9uZXNbIGkgXS5tYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJvbmVJbnZlcnNlcy5wdXNoKCBpbnZlcnNlICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cG9zZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBib25lLCBpLCBpbDtcXG5cXG5cXHRcXHRcXHQvLyByZWNvdmVyIHRoZSBiaW5kLXRpbWUgd29ybGQgbWF0cmljZXNcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSB0aGlzLmJvbmVzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGJvbmUgPSB0aGlzLmJvbmVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBib25lICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGJvbmUubWF0cml4V29ybGQuZ2V0SW52ZXJzZSggdGhpcy5ib25lSW52ZXJzZXNbIGkgXSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gY29tcHV0ZSB0aGUgbG9jYWwgbWF0cmljZXMsIHBvc2l0aW9ucywgcm90YXRpb25zIGFuZCBzY2FsZXNcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSB0aGlzLmJvbmVzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGJvbmUgPSB0aGlzLmJvbmVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBib25lICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggYm9uZS5wYXJlbnQgJiYgYm9uZS5wYXJlbnQuaXNCb25lICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJvbmUubWF0cml4LmdldEludmVyc2UoIGJvbmUucGFyZW50Lm1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Ym9uZS5tYXRyaXgubXVsdGlwbHkoIGJvbmUubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJvbmUubWF0cml4LmNvcHkoIGJvbmUubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ym9uZS5tYXRyaXguZGVjb21wb3NlKCBib25lLnBvc2l0aW9uLCBib25lLnF1YXRlcm5pb24sIGJvbmUuc2NhbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dXBkYXRlOiAoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgb2Zmc2V0TWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcXG5cXHRcXHRcXHR2YXIgaWRlbnRpdHlNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiB1cGRhdGUoKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGJvbmVzID0gdGhpcy5ib25lcztcXG5cXHRcXHRcXHRcXHR2YXIgYm9uZUludmVyc2VzID0gdGhpcy5ib25lSW52ZXJzZXM7XFxuXFx0XFx0XFx0XFx0dmFyIGJvbmVNYXRyaWNlcyA9IHRoaXMuYm9uZU1hdHJpY2VzO1xcblxcdFxcdFxcdFxcdHZhciBib25lVGV4dHVyZSA9IHRoaXMuYm9uZVRleHR1cmU7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZmxhdHRlbiBib25lIG1hdHJpY2VzIHRvIGFycmF5XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBpbCA9IGJvbmVzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGNvbXB1dGUgdGhlIG9mZnNldCBiZXR3ZWVuIHRoZSBjdXJyZW50IGFuZCB0aGUgb3JpZ2luYWwgdHJhbnNmb3JtXFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIG1hdHJpeCA9IGJvbmVzWyBpIF0gPyBib25lc1sgaSBdLm1hdHJpeFdvcmxkIDogaWRlbnRpdHlNYXRyaXg7XFxuXFxuXFx0XFx0XFx0XFx0XFx0b2Zmc2V0TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoIG1hdHJpeCwgYm9uZUludmVyc2VzWyBpIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHRvZmZzZXRNYXRyaXgudG9BcnJheSggYm9uZU1hdHJpY2VzLCBpICogMTYgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBib25lVGV4dHVyZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGJvbmVUZXh0dXJlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9ICkoKSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgU2tlbGV0b24oIHRoaXMuYm9uZXMsIHRoaXMuYm9uZUludmVyc2VzICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1pa2FlbCBlbXRpbmdlciAvIGh0dHA6Ly9nb21vLnNlL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBpa2VyciAvIGh0dHA6Ly92ZXJvbGQuY29tXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQm9uZSgpIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0JvbmUnO1xcblxcblxcdH1cXG5cXG5cXHRCb25lLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEJvbmUsXFxuXFxuXFx0XFx0aXNCb25lOiB0cnVlXFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbWlrYWVsIGVtdGluZ2VyIC8gaHR0cDovL2dvbW8uc2UvXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKiBAYXV0aG9yIGlrZXJyIC8gaHR0cDovL3Zlcm9sZC5jb21cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBTa2lubmVkTWVzaCggZ2VvbWV0cnksIG1hdGVyaWFsICkge1xcblxcblxcdFxcdE1lc2guY2FsbCggdGhpcywgZ2VvbWV0cnksIG1hdGVyaWFsICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1NraW5uZWRNZXNoJztcXG5cXG5cXHRcXHR0aGlzLmJpbmRNb2RlID0gJ2F0dGFjaGVkJztcXG5cXHRcXHR0aGlzLmJpbmRNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xcblxcdFxcdHRoaXMuYmluZE1hdHJpeEludmVyc2UgPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdHZhciBib25lcyA9IHRoaXMuaW5pdEJvbmVzKCk7XFxuXFx0XFx0dmFyIHNrZWxldG9uID0gbmV3IFNrZWxldG9uKCBib25lcyApO1xcblxcblxcdFxcdHRoaXMuYmluZCggc2tlbGV0b24sIHRoaXMubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHR0aGlzLm5vcm1hbGl6ZVNraW5XZWlnaHRzKCk7XFxuXFxuXFx0fVxcblxcblxcdFNraW5uZWRNZXNoLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE1lc2gucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogU2tpbm5lZE1lc2gsXFxuXFxuXFx0XFx0aXNTa2lubmVkTWVzaDogdHJ1ZSxcXG5cXG5cXHRcXHRpbml0Qm9uZXM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgYm9uZXMgPSBbXSwgYm9uZSwgZ2JvbmU7XFxuXFx0XFx0XFx0dmFyIGksIGlsO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5nZW9tZXRyeSAmJiB0aGlzLmdlb21ldHJ5LmJvbmVzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZmlyc3QsIGNyZWF0ZSBhcnJheSBvZiAnQm9uZScgb2JqZWN0cyBmcm9tIGdlb21ldHJ5IGRhdGFcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSB0aGlzLmdlb21ldHJ5LmJvbmVzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGdib25lID0gdGhpcy5nZW9tZXRyeS5ib25lc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGNyZWF0ZSBuZXcgJ0JvbmUnIG9iamVjdFxcblxcblxcdFxcdFxcdFxcdFxcdGJvbmUgPSBuZXcgQm9uZSgpO1xcblxcdFxcdFxcdFxcdFxcdGJvbmVzLnB1c2goIGJvbmUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBhcHBseSB2YWx1ZXNcXG5cXG5cXHRcXHRcXHRcXHRcXHRib25lLm5hbWUgPSBnYm9uZS5uYW1lO1xcblxcdFxcdFxcdFxcdFxcdGJvbmUucG9zaXRpb24uZnJvbUFycmF5KCBnYm9uZS5wb3MgKTtcXG5cXHRcXHRcXHRcXHRcXHRib25lLnF1YXRlcm5pb24uZnJvbUFycmF5KCBnYm9uZS5yb3RxICk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBnYm9uZS5zY2wgIT09IHVuZGVmaW5lZCApIGJvbmUuc2NhbGUuZnJvbUFycmF5KCBnYm9uZS5zY2wgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gc2Vjb25kLCBjcmVhdGUgYm9uZSBoaWVyYXJjaHlcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSB0aGlzLmdlb21ldHJ5LmJvbmVzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGdib25lID0gdGhpcy5nZW9tZXRyeS5ib25lc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggKCBnYm9uZS5wYXJlbnQgIT09IC0gMSApICYmICggZ2JvbmUucGFyZW50ICE9PSBudWxsICkgJiYgKCBib25lc1sgZ2JvbmUucGFyZW50IF0gIT09IHVuZGVmaW5lZCApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIHN1YnNlcXVlbnQgYm9uZXMgaW4gdGhlIGhpZXJhcmNoeVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJvbmVzWyBnYm9uZS5wYXJlbnQgXS5hZGQoIGJvbmVzWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIHRvcG1vc3QgYm9uZSwgaW1tZWRpYXRlIGNoaWxkIG9mIHRoZSBza2lubmVkIG1lc2hcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0aGlzLmFkZCggYm9uZXNbIGkgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIG5vdyB0aGUgYm9uZXMgYXJlIHBhcnQgb2YgdGhlIHNjZW5lIGdyYXBoIGFuZCBjaGlsZHJlbiBvZiB0aGUgc2tpbm5lZCBtZXNoLlxcblxcdFxcdFxcdC8vIGxldCdzIHVwZGF0ZSB0aGUgY29ycmVzcG9uZGluZyBtYXRyaWNlc1xcblxcblxcdFxcdFxcdHRoaXMudXBkYXRlTWF0cml4V29ybGQoIHRydWUgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gYm9uZXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRiaW5kOiBmdW5jdGlvbiAoIHNrZWxldG9uLCBiaW5kTWF0cml4ICkge1xcblxcblxcdFxcdFxcdHRoaXMuc2tlbGV0b24gPSBza2VsZXRvbjtcXG5cXG5cXHRcXHRcXHRpZiAoIGJpbmRNYXRyaXggPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCB0cnVlICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5za2VsZXRvbi5jYWxjdWxhdGVJbnZlcnNlcygpO1xcblxcblxcdFxcdFxcdFxcdGJpbmRNYXRyaXggPSB0aGlzLm1hdHJpeFdvcmxkO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLmJpbmRNYXRyaXguY29weSggYmluZE1hdHJpeCApO1xcblxcdFxcdFxcdHRoaXMuYmluZE1hdHJpeEludmVyc2UuZ2V0SW52ZXJzZSggYmluZE1hdHJpeCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cG9zZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuc2tlbGV0b24ucG9zZSgpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bm9ybWFsaXplU2tpbldlaWdodHM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgc2NhbGUsIGk7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmdlb21ldHJ5ICYmIHRoaXMuZ2VvbWV0cnkuaXNHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IHRoaXMuZ2VvbWV0cnkuc2tpbldlaWdodHMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBzdyA9IHRoaXMuZ2VvbWV0cnkuc2tpbldlaWdodHNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzY2FsZSA9IDEuMCAvIHN3Lm1hbmhhdHRhbkxlbmd0aCgpO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggc2NhbGUgIT09IEluZmluaXR5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHN3Lm11bHRpcGx5U2NhbGFyKCBzY2FsZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0c3cuc2V0KCAxLCAwLCAwLCAwICk7IC8vIGRvIHNvbWV0aGluZyByZWFzb25hYmxlXFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCB0aGlzLmdlb21ldHJ5ICYmIHRoaXMuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdmVjID0gbmV3IFZlY3RvcjQoKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgc2tpbldlaWdodCA9IHRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O1xcblxcblxcdFxcdFxcdFxcdGZvciAoIGkgPSAwOyBpIDwgc2tpbldlaWdodC5jb3VudDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZWMueCA9IHNraW5XZWlnaHQuZ2V0WCggaSApO1xcblxcdFxcdFxcdFxcdFxcdHZlYy55ID0gc2tpbldlaWdodC5nZXRZKCBpICk7XFxuXFx0XFx0XFx0XFx0XFx0dmVjLnogPSBza2luV2VpZ2h0LmdldFooIGkgKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZWMudyA9IHNraW5XZWlnaHQuZ2V0VyggaSApO1xcblxcblxcdFxcdFxcdFxcdFxcdHNjYWxlID0gMS4wIC8gdmVjLm1hbmhhdHRhbkxlbmd0aCgpO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggc2NhbGUgIT09IEluZmluaXR5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZlYy5tdWx0aXBseVNjYWxhciggc2NhbGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZlYy5zZXQoIDEsIDAsIDAsIDAgKTsgLy8gZG8gc29tZXRoaW5nIHJlYXNvbmFibGVcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2tpbldlaWdodC5zZXRYWVpXKCBpLCB2ZWMueCwgdmVjLnksIHZlYy56LCB2ZWMudyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR1cGRhdGVNYXRyaXhXb3JsZDogZnVuY3Rpb24gKCBmb3JjZSApIHtcXG5cXG5cXHRcXHRcXHRNZXNoLnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKCB0aGlzLCBmb3JjZSApO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5iaW5kTW9kZSA9PT0gJ2F0dGFjaGVkJyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmdldEludmVyc2UoIHRoaXMubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCB0aGlzLmJpbmRNb2RlID09PSAnZGV0YWNoZWQnICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuYmluZE1hdHJpeEludmVyc2UuZ2V0SW52ZXJzZSggdGhpcy5iaW5kTWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Ta2lubmVkTWVzaDogVW5yZWNvZ25pemVkIGJpbmRNb2RlOiAnICsgdGhpcy5iaW5kTW9kZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCB0aGlzLmdlb21ldHJ5LCB0aGlzLm1hdGVyaWFsICkuY29weSggdGhpcyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqXFxuXFx0ICogcGFyYW1ldGVycyA9IHtcXG5cXHQgKiAgY29sb3I6IDxoZXg+LFxcblxcdCAqICBvcGFjaXR5OiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIGxpbmV3aWR0aDogPGZsb2F0PixcXG5cXHQgKiAgbGluZWNhcDogXFxcInJvdW5kXFxcIixcXG5cXHQgKiAgbGluZWpvaW46IFxcXCJyb3VuZFxcXCJcXG5cXHQgKiB9XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTGluZUJhc2ljTWF0ZXJpYWwoIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0TWF0ZXJpYWwuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdMaW5lQmFzaWNNYXRlcmlhbCc7XFxuXFxuXFx0XFx0dGhpcy5jb2xvciA9IG5ldyBDb2xvciggMHhmZmZmZmYgKTtcXG5cXG5cXHRcXHR0aGlzLmxpbmV3aWR0aCA9IDE7XFxuXFx0XFx0dGhpcy5saW5lY2FwID0gJ3JvdW5kJztcXG5cXHRcXHR0aGlzLmxpbmVqb2luID0gJ3JvdW5kJztcXG5cXG5cXHRcXHR0aGlzLmxpZ2h0cyA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuc2V0VmFsdWVzKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdExpbmVCYXNpY01hdGVyaWFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE1hdGVyaWFsLnByb3RvdHlwZSApO1xcblxcdExpbmVCYXNpY01hdGVyaWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExpbmVCYXNpY01hdGVyaWFsO1xcblxcblxcdExpbmVCYXNpY01hdGVyaWFsLnByb3RvdHlwZS5pc0xpbmVCYXNpY01hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRMaW5lQmFzaWNNYXRlcmlhbC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdE1hdGVyaWFsLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMuY29sb3IuY29weSggc291cmNlLmNvbG9yICk7XFxuXFxuXFx0XFx0dGhpcy5saW5ld2lkdGggPSBzb3VyY2UubGluZXdpZHRoO1xcblxcdFxcdHRoaXMubGluZWNhcCA9IHNvdXJjZS5saW5lY2FwO1xcblxcdFxcdHRoaXMubGluZWpvaW4gPSBzb3VyY2UubGluZWpvaW47XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIExpbmUoIGdlb21ldHJ5LCBtYXRlcmlhbCwgbW9kZSApIHtcXG5cXG5cXHRcXHRpZiAoIG1vZGUgPT09IDEgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGluZTogcGFyYW1ldGVyIFRIUkVFLkxpbmVQaWVjZXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gQ3JlYXRlZCBUSFJFRS5MaW5lU2VnbWVudHMgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIG5ldyBMaW5lU2VnbWVudHMoIGdlb21ldHJ5LCBtYXRlcmlhbCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0xpbmUnO1xcblxcblxcdFxcdHRoaXMuZ2VvbWV0cnkgPSBnZW9tZXRyeSAhPT0gdW5kZWZpbmVkID8gZ2VvbWV0cnkgOiBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXHRcXHR0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWwgIT09IHVuZGVmaW5lZCA/IG1hdGVyaWFsIDogbmV3IExpbmVCYXNpY01hdGVyaWFsKCB7IGNvbG9yOiBNYXRoLnJhbmRvbSgpICogMHhmZmZmZmYgfSApO1xcblxcblxcdH1cXG5cXG5cXHRMaW5lLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IExpbmUsXFxuXFxuXFx0XFx0aXNMaW5lOiB0cnVlLFxcblxcblxcdFxcdHJheWNhc3Q6ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBpbnZlcnNlTWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcXG5cXHRcXHRcXHR2YXIgcmF5ID0gbmV3IFJheSgpO1xcblxcdFxcdFxcdHZhciBzcGhlcmUgPSBuZXcgU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHJheWNhc3QoIHJheWNhc3RlciwgaW50ZXJzZWN0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcHJlY2lzaW9uID0gcmF5Y2FzdGVyLmxpbmVQcmVjaXNpb247XFxuXFx0XFx0XFx0XFx0dmFyIHByZWNpc2lvblNxID0gcHJlY2lzaW9uICogcHJlY2lzaW9uO1xcblxcblxcdFxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnk7XFxuXFx0XFx0XFx0XFx0dmFyIG1hdHJpeFdvcmxkID0gdGhpcy5tYXRyaXhXb3JsZDtcXG5cXG5cXHRcXHRcXHRcXHQvLyBDaGVja2luZyBib3VuZGluZ1NwaGVyZSBkaXN0YW5jZSB0byByYXlcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlID09PSBudWxsICkgZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0XFx0c3BoZXJlLmNvcHkoIGdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlICk7XFxuXFx0XFx0XFx0XFx0c3BoZXJlLmFwcGx5TWF0cml4NCggbWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHJheWNhc3Rlci5yYXkuaW50ZXJzZWN0c1NwaGVyZSggc3BoZXJlICkgPT09IGZhbHNlICkgcmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0XFx0aW52ZXJzZU1hdHJpeC5nZXRJbnZlcnNlKCBtYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdHJheS5jb3B5KCByYXljYXN0ZXIucmF5ICkuYXBwbHlNYXRyaXg0KCBpbnZlcnNlTWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZTdGFydCA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0XFx0dmFyIHZFbmQgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdFxcdHZhciBpbnRlclNlZ21lbnQgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdFxcdHZhciBpbnRlclJheSA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0XFx0dmFyIHN0ZXAgPSAoIHRoaXMgJiYgdGhpcy5pc0xpbmVTZWdtZW50cyApID8gMiA6IDE7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5pc0J1ZmZlckdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBpbmRleCA9IGdlb21ldHJ5LmluZGV4O1xcblxcdFxcdFxcdFxcdFxcdHZhciBhdHRyaWJ1dGVzID0gZ2VvbWV0cnkuYXR0cmlidXRlcztcXG5cXHRcXHRcXHRcXHRcXHR2YXIgcG9zaXRpb25zID0gYXR0cmlidXRlcy5wb3NpdGlvbi5hcnJheTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGluZGV4ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBpbmRpY2VzID0gaW5kZXguYXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gaW5kaWNlcy5sZW5ndGggLSAxOyBpIDwgbDsgaSArPSBzdGVwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBhID0gaW5kaWNlc1sgaSBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBiID0gaW5kaWNlc1sgaSArIDEgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2U3RhcnQuZnJvbUFycmF5KCBwb3NpdGlvbnMsIGEgKiAzICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dkVuZC5mcm9tQXJyYXkoIHBvc2l0aW9ucywgYiAqIDMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgZGlzdFNxID0gcmF5LmRpc3RhbmNlU3FUb1NlZ21lbnQoIHZTdGFydCwgdkVuZCwgaW50ZXJSYXksIGludGVyU2VnbWVudCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGlzdFNxID4gcHJlY2lzaW9uU3EgKSBjb250aW51ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnRlclJheS5hcHBseU1hdHJpeDQoIHRoaXMubWF0cml4V29ybGQgKTsgLy9Nb3ZlIGJhY2sgdG8gd29ybGQgc3BhY2UgZm9yIGRpc3RhbmNlIGNhbGN1bGF0aW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRpc3RhbmNlID0gcmF5Y2FzdGVyLnJheS5vcmlnaW4uZGlzdGFuY2VUbyggaW50ZXJSYXkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGRpc3RhbmNlIDwgcmF5Y2FzdGVyLm5lYXIgfHwgZGlzdGFuY2UgPiByYXljYXN0ZXIuZmFyICkgY29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0cy5wdXNoKCB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGlzdGFuY2U6IGRpc3RhbmNlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIFdoYXQgZG8gd2Ugd2FudD8gaW50ZXJzZWN0aW9uIHBvaW50IG9uIHRoZSByYXkgb3Igb24gdGhlIHNlZ21lbnQ/P1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIHBvaW50OiByYXljYXN0ZXIucmF5LmF0KCBkaXN0YW5jZSApLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBvaW50OiBpbnRlclNlZ21lbnQuY2xvbmUoKS5hcHBseU1hdHJpeDQoIHRoaXMubWF0cml4V29ybGQgKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbmRleDogaSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRmYWNlOiBudWxsLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2VJbmRleDogbnVsbCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRvYmplY3Q6IHRoaXNcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gcG9zaXRpb25zLmxlbmd0aCAvIDMgLSAxOyBpIDwgbDsgaSArPSBzdGVwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZTdGFydC5mcm9tQXJyYXkoIHBvc2l0aW9ucywgMyAqIGkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2RW5kLmZyb21BcnJheSggcG9zaXRpb25zLCAzICogaSArIDMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgZGlzdFNxID0gcmF5LmRpc3RhbmNlU3FUb1NlZ21lbnQoIHZTdGFydCwgdkVuZCwgaW50ZXJSYXksIGludGVyU2VnbWVudCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGlzdFNxID4gcHJlY2lzaW9uU3EgKSBjb250aW51ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnRlclJheS5hcHBseU1hdHJpeDQoIHRoaXMubWF0cml4V29ybGQgKTsgLy9Nb3ZlIGJhY2sgdG8gd29ybGQgc3BhY2UgZm9yIGRpc3RhbmNlIGNhbGN1bGF0aW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRpc3RhbmNlID0gcmF5Y2FzdGVyLnJheS5vcmlnaW4uZGlzdGFuY2VUbyggaW50ZXJSYXkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGRpc3RhbmNlIDwgcmF5Y2FzdGVyLm5lYXIgfHwgZGlzdGFuY2UgPiByYXljYXN0ZXIuZmFyICkgY29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0cy5wdXNoKCB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGlzdGFuY2U6IGRpc3RhbmNlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIFdoYXQgZG8gd2Ugd2FudD8gaW50ZXJzZWN0aW9uIHBvaW50IG9uIHRoZSByYXkgb3Igb24gdGhlIHNlZ21lbnQ/P1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIHBvaW50OiByYXljYXN0ZXIucmF5LmF0KCBkaXN0YW5jZSApLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBvaW50OiBpbnRlclNlZ21lbnQuY2xvbmUoKS5hcHBseU1hdHJpeDQoIHRoaXMubWF0cml4V29ybGQgKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpbmRleDogaSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRmYWNlOiBudWxsLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2VJbmRleDogbnVsbCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRvYmplY3Q6IHRoaXNcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBnZW9tZXRyeS5pc0dlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IGdlb21ldHJ5LnZlcnRpY2VzO1xcblxcdFxcdFxcdFxcdFxcdHZhciBuYlZlcnRpY2VzID0gdmVydGljZXMubGVuZ3RoO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IG5iVmVydGljZXMgLSAxOyBpICs9IHN0ZXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRpc3RTcSA9IHJheS5kaXN0YW5jZVNxVG9TZWdtZW50KCB2ZXJ0aWNlc1sgaSBdLCB2ZXJ0aWNlc1sgaSArIDEgXSwgaW50ZXJSYXksIGludGVyU2VnbWVudCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGlzdFNxID4gcHJlY2lzaW9uU3EgKSBjb250aW51ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpbnRlclJheS5hcHBseU1hdHJpeDQoIHRoaXMubWF0cml4V29ybGQgKTsgLy9Nb3ZlIGJhY2sgdG8gd29ybGQgc3BhY2UgZm9yIGRpc3RhbmNlIGNhbGN1bGF0aW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRpc3RhbmNlID0gcmF5Y2FzdGVyLnJheS5vcmlnaW4uZGlzdGFuY2VUbyggaW50ZXJSYXkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGRpc3RhbmNlIDwgcmF5Y2FzdGVyLm5lYXIgfHwgZGlzdGFuY2UgPiByYXljYXN0ZXIuZmFyICkgY29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0cy5wdXNoKCB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGlzdGFuY2U6IGRpc3RhbmNlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIFdoYXQgZG8gd2Ugd2FudD8gaW50ZXJzZWN0aW9uIHBvaW50IG9uIHRoZSByYXkgb3Igb24gdGhlIHNlZ21lbnQ/P1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIHBvaW50OiByYXljYXN0ZXIucmF5LmF0KCBkaXN0YW5jZSApLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHBvaW50OiBpbnRlclNlZ21lbnQuY2xvbmUoKS5hcHBseU1hdHJpeDQoIHRoaXMubWF0cml4V29ybGQgKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbmRleDogaSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmYWNlOiBudWxsLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2VJbmRleDogbnVsbCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRvYmplY3Q6IHRoaXNcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSApLFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCB0aGlzLmdlb21ldHJ5LCB0aGlzLm1hdGVyaWFsICkuY29weSggdGhpcyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBMaW5lU2VnbWVudHMoIGdlb21ldHJ5LCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRMaW5lLmNhbGwoIHRoaXMsIGdlb21ldHJ5LCBtYXRlcmlhbCApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdMaW5lU2VnbWVudHMnO1xcblxcblxcdH1cXG5cXG5cXHRMaW5lU2VnbWVudHMucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggTGluZS5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBMaW5lU2VnbWVudHMsXFxuXFxuXFx0XFx0aXNMaW5lU2VnbWVudHM6IHRydWVcXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtZ3JldGVyIC8gaHR0cDovL2dpdGh1Yi5jb20vbWdyZXRlclxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIExpbmVMb29wKCBnZW9tZXRyeSwgbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0TGluZS5jYWxsKCB0aGlzLCBnZW9tZXRyeSwgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTGluZUxvb3AnO1xcblxcblxcdH1cXG5cXG5cXHRMaW5lTG9vcC5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBMaW5lLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IExpbmVMb29wLFxcblxcblxcdFxcdGlzTGluZUxvb3A6IHRydWUsXFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGNvbG9yOiA8aGV4PixcXG5cXHQgKiAgb3BhY2l0eTogPGZsb2F0PixcXG5cXHQgKiAgbWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqXFxuXFx0ICogIHNpemU6IDxmbG9hdD4sXFxuXFx0ICogIHNpemVBdHRlbnVhdGlvbjogPGJvb2w+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFBvaW50c01hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUG9pbnRzTWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSBuZXcgQ29sb3IoIDB4ZmZmZmZmICk7XFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuc2l6ZSA9IDE7XFxuXFx0XFx0dGhpcy5zaXplQXR0ZW51YXRpb24gPSB0cnVlO1xcblxcblxcdFxcdHRoaXMubGlnaHRzID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5zZXRWYWx1ZXMoIHBhcmFtZXRlcnMgKTtcXG5cXG5cXHR9XFxuXFxuXFx0UG9pbnRzTWF0ZXJpYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggTWF0ZXJpYWwucHJvdG90eXBlICk7XFxuXFx0UG9pbnRzTWF0ZXJpYWwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUG9pbnRzTWF0ZXJpYWw7XFxuXFxuXFx0UG9pbnRzTWF0ZXJpYWwucHJvdG90eXBlLmlzUG9pbnRzTWF0ZXJpYWwgPSB0cnVlO1xcblxcblxcdFBvaW50c01hdGVyaWFsLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0TWF0ZXJpYWwucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0dGhpcy5jb2xvci5jb3B5KCBzb3VyY2UuY29sb3IgKTtcXG5cXG5cXHRcXHR0aGlzLm1hcCA9IHNvdXJjZS5tYXA7XFxuXFxuXFx0XFx0dGhpcy5zaXplID0gc291cmNlLnNpemU7XFxuXFx0XFx0dGhpcy5zaXplQXR0ZW51YXRpb24gPSBzb3VyY2Uuc2l6ZUF0dGVudWF0aW9uO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBQb2ludHMoIGdlb21ldHJ5LCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1BvaW50cyc7XFxuXFxuXFx0XFx0dGhpcy5nZW9tZXRyeSA9IGdlb21ldHJ5ICE9PSB1bmRlZmluZWQgPyBnZW9tZXRyeSA6IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcdFxcdHRoaXMubWF0ZXJpYWwgPSBtYXRlcmlhbCAhPT0gdW5kZWZpbmVkID8gbWF0ZXJpYWwgOiBuZXcgUG9pbnRzTWF0ZXJpYWwoIHsgY29sb3I6IE1hdGgucmFuZG9tKCkgKiAweGZmZmZmZiB9ICk7XFxuXFxuXFx0fVxcblxcblxcdFBvaW50cy5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBPYmplY3QzRC5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBQb2ludHMsXFxuXFxuXFx0XFx0aXNQb2ludHM6IHRydWUsXFxuXFxuXFx0XFx0cmF5Y2FzdDogKCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGludmVyc2VNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xcblxcdFxcdFxcdHZhciByYXkgPSBuZXcgUmF5KCk7XFxuXFx0XFx0XFx0dmFyIHNwaGVyZSA9IG5ldyBTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gcmF5Y2FzdCggcmF5Y2FzdGVyLCBpbnRlcnNlY3RzICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBvYmplY3QgPSB0aGlzO1xcblxcdFxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnk7XFxuXFx0XFx0XFx0XFx0dmFyIG1hdHJpeFdvcmxkID0gdGhpcy5tYXRyaXhXb3JsZDtcXG5cXHRcXHRcXHRcXHR2YXIgdGhyZXNob2xkID0gcmF5Y2FzdGVyLnBhcmFtcy5Qb2ludHMudGhyZXNob2xkO1xcblxcblxcdFxcdFxcdFxcdC8vIENoZWNraW5nIGJvdW5kaW5nU3BoZXJlIGRpc3RhbmNlIHRvIHJheVxcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUgPT09IG51bGwgKSBnZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtcXG5cXG5cXHRcXHRcXHRcXHRzcGhlcmUuY29weSggZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUgKTtcXG5cXHRcXHRcXHRcXHRzcGhlcmUuYXBwbHlNYXRyaXg0KCBtYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdHNwaGVyZS5yYWRpdXMgKz0gdGhyZXNob2xkO1xcblxcblxcdFxcdFxcdFxcdGlmICggcmF5Y2FzdGVyLnJheS5pbnRlcnNlY3RzU3BoZXJlKCBzcGhlcmUgKSA9PT0gZmFsc2UgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0Ly9cXG5cXG5cXHRcXHRcXHRcXHRpbnZlcnNlTWF0cml4LmdldEludmVyc2UoIG1hdHJpeFdvcmxkICk7XFxuXFx0XFx0XFx0XFx0cmF5LmNvcHkoIHJheWNhc3Rlci5yYXkgKS5hcHBseU1hdHJpeDQoIGludmVyc2VNYXRyaXggKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbG9jYWxUaHJlc2hvbGQgPSB0aHJlc2hvbGQgLyAoICggdGhpcy5zY2FsZS54ICsgdGhpcy5zY2FsZS55ICsgdGhpcy5zY2FsZS56ICkgLyAzICk7XFxuXFx0XFx0XFx0XFx0dmFyIGxvY2FsVGhyZXNob2xkU3EgPSBsb2NhbFRocmVzaG9sZCAqIGxvY2FsVGhyZXNob2xkO1xcblxcdFxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gdGVzdFBvaW50KCBwb2ludCwgaW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJheVBvaW50RGlzdGFuY2VTcSA9IHJheS5kaXN0YW5jZVNxVG9Qb2ludCggcG9pbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHJheVBvaW50RGlzdGFuY2VTcSA8IGxvY2FsVGhyZXNob2xkU3EgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGludGVyc2VjdFBvaW50ID0gcmF5LmNsb3Nlc3RQb2ludFRvUG9pbnQoIHBvaW50ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0aW50ZXJzZWN0UG9pbnQuYXBwbHlNYXRyaXg0KCBtYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBkaXN0YW5jZSA9IHJheWNhc3Rlci5yYXkub3JpZ2luLmRpc3RhbmNlVG8oIGludGVyc2VjdFBvaW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBkaXN0YW5jZSA8IHJheWNhc3Rlci5uZWFyIHx8IGRpc3RhbmNlID4gcmF5Y2FzdGVyLmZhciApIHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpbnRlcnNlY3RzLnB1c2goIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRkaXN0YW5jZTogZGlzdGFuY2UsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGlzdGFuY2VUb1JheTogTWF0aC5zcXJ0KCByYXlQb2ludERpc3RhbmNlU3EgKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRwb2ludDogaW50ZXJzZWN0UG9pbnQuY2xvbmUoKSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbmRleDogaW5kZXgsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZmFjZTogbnVsbCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRvYmplY3Q6IG9iamVjdFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH0gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgaW5kZXggPSBnZW9tZXRyeS5pbmRleDtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgYXR0cmlidXRlcyA9IGdlb21ldHJ5LmF0dHJpYnV0ZXM7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHBvc2l0aW9ucyA9IGF0dHJpYnV0ZXMucG9zaXRpb24uYXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBpbmRleCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgaW5kaWNlcyA9IGluZGV4LmFycmF5O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBpbmRpY2VzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBhID0gaW5kaWNlc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHBvc2l0aW9uLmZyb21BcnJheSggcG9zaXRpb25zLCBhICogMyApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRlc3RQb2ludCggcG9zaXRpb24sIGEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBwb3NpdGlvbnMubGVuZ3RoIC8gMzsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cG9zaXRpb24uZnJvbUFycmF5KCBwb3NpdGlvbnMsIGkgKiAzICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGVzdFBvaW50KCBwb3NpdGlvbiwgaSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdmVydGljZXMgPSBnZW9tZXRyeS52ZXJ0aWNlcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSB2ZXJ0aWNlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRlc3RQb2ludCggdmVydGljZXNbIGkgXSwgaSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCkgKSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvciggdGhpcy5nZW9tZXRyeSwgdGhpcy5tYXRlcmlhbCApLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gR3JvdXAoKSB7XFxuXFxuXFx0XFx0T2JqZWN0M0QuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdHcm91cCc7XFxuXFxuXFx0fVxcblxcblxcdEdyb3VwLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEdyb3VwLFxcblxcblxcdFxcdGlzR3JvdXA6IHRydWVcXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBWaWRlb1RleHR1cmUoIHZpZGVvLCBtYXBwaW5nLCB3cmFwUywgd3JhcFQsIG1hZ0ZpbHRlciwgbWluRmlsdGVyLCBmb3JtYXQsIHR5cGUsIGFuaXNvdHJvcHkgKSB7XFxuXFxuXFx0XFx0VGV4dHVyZS5jYWxsKCB0aGlzLCB2aWRlbywgbWFwcGluZywgd3JhcFMsIHdyYXBULCBtYWdGaWx0ZXIsIG1pbkZpbHRlciwgZm9ybWF0LCB0eXBlLCBhbmlzb3Ryb3B5ICk7XFxuXFxuXFx0XFx0dGhpcy5nZW5lcmF0ZU1pcG1hcHMgPSBmYWxzZTtcXG5cXG5cXHRcXHQvLyBTZXQgbmVlZHNVcGRhdGUgd2hlbiBmaXJzdCBmcmFtZSBpcyByZWFkeVxcblxcblxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gb25Mb2FkZWQoKSB7XFxuXFxuXFx0XFx0XFx0dmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ2xvYWRlZGRhdGEnLCBvbkxvYWRlZCwgZmFsc2UgKTtcXG5cXHRcXHRcXHRzY29wZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoICdsb2FkZWRkYXRhJywgb25Mb2FkZWQsIGZhbHNlICk7XFxuXFxuXFx0fVxcblxcblxcdFZpZGVvVGV4dHVyZS5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBUZXh0dXJlLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IFZpZGVvVGV4dHVyZSxcXG5cXG5cXHRcXHRpc1ZpZGVvVGV4dHVyZTogdHJ1ZSxcXG5cXG5cXHRcXHR1cGRhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdmlkZW8gPSB0aGlzLmltYWdlO1xcblxcblxcdFxcdFxcdGlmICggdmlkZW8ucmVhZHlTdGF0ZSA+PSB2aWRlby5IQVZFX0NVUlJFTlRfREFUQSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIENvbXByZXNzZWRUZXh0dXJlKCBtaXBtYXBzLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIG1hcHBpbmcsIHdyYXBTLCB3cmFwVCwgbWFnRmlsdGVyLCBtaW5GaWx0ZXIsIGFuaXNvdHJvcHksIGVuY29kaW5nICkge1xcblxcblxcdFxcdFRleHR1cmUuY2FsbCggdGhpcywgbnVsbCwgbWFwcGluZywgd3JhcFMsIHdyYXBULCBtYWdGaWx0ZXIsIG1pbkZpbHRlciwgZm9ybWF0LCB0eXBlLCBhbmlzb3Ryb3B5LCBlbmNvZGluZyApO1xcblxcblxcdFxcdHRoaXMuaW1hZ2UgPSB7IHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQgfTtcXG5cXHRcXHR0aGlzLm1pcG1hcHMgPSBtaXBtYXBzO1xcblxcblxcdFxcdC8vIG5vIGZsaXBwaW5nIGZvciBjdWJlIHRleHR1cmVzXFxuXFx0XFx0Ly8gKGFsc28gZmxpcHBpbmcgZG9lc24ndCB3b3JrIGZvciBjb21wcmVzc2VkIHRleHR1cmVzIClcXG5cXG5cXHRcXHR0aGlzLmZsaXBZID0gZmFsc2U7XFxuXFxuXFx0XFx0Ly8gY2FuJ3QgZ2VuZXJhdGUgbWlwbWFwcyBmb3IgY29tcHJlc3NlZCB0ZXh0dXJlc1xcblxcdFxcdC8vIG1pcHMgbXVzdCBiZSBlbWJlZGRlZCBpbiBERFMgZmlsZXNcXG5cXG5cXHRcXHR0aGlzLmdlbmVyYXRlTWlwbWFwcyA9IGZhbHNlO1xcblxcblxcdH1cXG5cXG5cXHRDb21wcmVzc2VkVGV4dHVyZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBUZXh0dXJlLnByb3RvdHlwZSApO1xcblxcdENvbXByZXNzZWRUZXh0dXJlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbXByZXNzZWRUZXh0dXJlO1xcblxcblxcdENvbXByZXNzZWRUZXh0dXJlLnByb3RvdHlwZS5pc0NvbXByZXNzZWRUZXh0dXJlID0gdHJ1ZTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIE1hdHQgRGVzTGF1cmllcnMgLyBAbWF0dGRlc2xcXG5cXHQgKiBAYXV0aG9yIGF0aXggLyBhcnRodXJzaWxiZXIuZGVcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBEZXB0aFRleHR1cmUoIHdpZHRoLCBoZWlnaHQsIHR5cGUsIG1hcHBpbmcsIHdyYXBTLCB3cmFwVCwgbWFnRmlsdGVyLCBtaW5GaWx0ZXIsIGFuaXNvdHJvcHksIGZvcm1hdCApIHtcXG5cXG5cXHRcXHRmb3JtYXQgPSBmb3JtYXQgIT09IHVuZGVmaW5lZCA/IGZvcm1hdCA6IERlcHRoRm9ybWF0O1xcblxcblxcdFxcdGlmICggZm9ybWF0ICE9PSBEZXB0aEZvcm1hdCAmJiBmb3JtYXQgIT09IERlcHRoU3RlbmNpbEZvcm1hdCApIHtcXG5cXG5cXHRcXHRcXHR0aHJvdyBuZXcgRXJyb3IoICdEZXB0aFRleHR1cmUgZm9ybWF0IG11c3QgYmUgZWl0aGVyIFRIUkVFLkRlcHRoRm9ybWF0IG9yIFRIUkVFLkRlcHRoU3RlbmNpbEZvcm1hdCcgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aWYgKCB0eXBlID09PSB1bmRlZmluZWQgJiYgZm9ybWF0ID09PSBEZXB0aEZvcm1hdCApIHR5cGUgPSBVbnNpZ25lZFNob3J0VHlwZTtcXG5cXHRcXHRpZiAoIHR5cGUgPT09IHVuZGVmaW5lZCAmJiBmb3JtYXQgPT09IERlcHRoU3RlbmNpbEZvcm1hdCApIHR5cGUgPSBVbnNpZ25lZEludDI0OFR5cGU7XFxuXFxuXFx0XFx0VGV4dHVyZS5jYWxsKCB0aGlzLCBudWxsLCBtYXBwaW5nLCB3cmFwUywgd3JhcFQsIG1hZ0ZpbHRlciwgbWluRmlsdGVyLCBmb3JtYXQsIHR5cGUsIGFuaXNvdHJvcHkgKTtcXG5cXG5cXHRcXHR0aGlzLmltYWdlID0geyB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0IH07XFxuXFxuXFx0XFx0dGhpcy5tYWdGaWx0ZXIgPSBtYWdGaWx0ZXIgIT09IHVuZGVmaW5lZCA/IG1hZ0ZpbHRlciA6IE5lYXJlc3RGaWx0ZXI7XFxuXFx0XFx0dGhpcy5taW5GaWx0ZXIgPSBtaW5GaWx0ZXIgIT09IHVuZGVmaW5lZCA/IG1pbkZpbHRlciA6IE5lYXJlc3RGaWx0ZXI7XFxuXFxuXFx0XFx0dGhpcy5mbGlwWSA9IGZhbHNlO1xcblxcdFxcdHRoaXMuZ2VuZXJhdGVNaXBtYXBzXFx0PSBmYWxzZTtcXG5cXG5cXHR9XFxuXFxuXFx0RGVwdGhUZXh0dXJlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFRleHR1cmUucHJvdG90eXBlICk7XFxuXFx0RGVwdGhUZXh0dXJlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERlcHRoVGV4dHVyZTtcXG5cXHREZXB0aFRleHR1cmUucHJvdG90eXBlLmlzRGVwdGhUZXh0dXJlID0gdHJ1ZTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gV2lyZWZyYW1lR2VvbWV0cnkoIGdlb21ldHJ5ICkge1xcblxcblxcdFxcdEJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnV2lyZWZyYW1lR2VvbWV0cnknO1xcblxcblxcdFxcdC8vIGJ1ZmZlclxcblxcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcblxcdFxcdC8vIGhlbHBlciB2YXJpYWJsZXNcXG5cXG5cXHRcXHR2YXIgaSwgaiwgbCwgbywgb2w7XFxuXFx0XFx0dmFyIGVkZ2UgPSBbIDAsIDAgXSwgZWRnZXMgPSB7fSwgZSwgZWRnZTEsIGVkZ2UyO1xcblxcdFxcdHZhciBrZXksIGtleXMgPSBbICdhJywgJ2InLCAnYycgXTtcXG5cXHRcXHR2YXIgdmVydGV4O1xcblxcblxcdFxcdC8vIGRpZmZlcmVudCBsb2dpYyBmb3IgR2VvbWV0cnkgYW5kIEJ1ZmZlckdlb21ldHJ5XFxuXFxuXFx0XFx0aWYgKCBnZW9tZXRyeSAmJiBnZW9tZXRyeS5pc0dlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdC8vIGNyZWF0ZSBhIGRhdGEgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgYWxsIGVkZ2VzIHdpdGhvdXQgZHVwbGljYXRlc1xcblxcblxcdFxcdFxcdHZhciBmYWNlcyA9IGdlb21ldHJ5LmZhY2VzO1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gZmFjZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZmFjZSA9IGZhY2VzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggaiA9IDA7IGogPCAzOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGVkZ2UxID0gZmFjZVsga2V5c1sgaiBdIF07XFxuXFx0XFx0XFx0XFx0XFx0ZWRnZTIgPSBmYWNlWyBrZXlzWyAoIGogKyAxICkgJSAzIF0gXTtcXG5cXHRcXHRcXHRcXHRcXHRlZGdlWyAwIF0gPSBNYXRoLm1pbiggZWRnZTEsIGVkZ2UyICk7IC8vIHNvcnRpbmcgcHJldmVudHMgZHVwbGljYXRlc1xcblxcdFxcdFxcdFxcdFxcdGVkZ2VbIDEgXSA9IE1hdGgubWF4KCBlZGdlMSwgZWRnZTIgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRrZXkgPSBlZGdlWyAwIF0gKyAnLCcgKyBlZGdlWyAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBlZGdlc1sga2V5IF0gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRlZGdlc1sga2V5IF0gPSB7IGluZGV4MTogZWRnZVsgMCBdLCBpbmRleDI6IGVkZ2VbIDEgXSB9O1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGdlbmVyYXRlIHZlcnRpY2VzXFxuXFxuXFx0XFx0XFx0Zm9yICgga2V5IGluIGVkZ2VzICkge1xcblxcblxcdFxcdFxcdFxcdGUgPSBlZGdlc1sga2V5IF07XFxuXFxuXFx0XFx0XFx0XFx0dmVydGV4ID0gZ2VvbWV0cnkudmVydGljZXNbIGUuaW5kZXgxIF07XFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggdmVydGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiApO1xcblxcblxcdFxcdFxcdFxcdHZlcnRleCA9IGdlb21ldHJ5LnZlcnRpY2VzWyBlLmluZGV4MiBdO1xcblxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHZlcnRleC54LCB2ZXJ0ZXgueSwgdmVydGV4LnogKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSBlbHNlIGlmICggZ2VvbWV0cnkgJiYgZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcG9zaXRpb24sIGluZGljZXMsIGdyb3VwcztcXG5cXHRcXHRcXHR2YXIgZ3JvdXAsIHN0YXJ0LCBjb3VudDtcXG5cXHRcXHRcXHR2YXIgaW5kZXgxLCBpbmRleDI7XFxuXFxuXFx0XFx0XFx0dmVydGV4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmluZGV4ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGluZGV4ZWQgQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRcXHRcXHRcXHRwb3NpdGlvbiA9IGdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb247XFxuXFx0XFx0XFx0XFx0aW5kaWNlcyA9IGdlb21ldHJ5LmluZGV4O1xcblxcdFxcdFxcdFxcdGdyb3VwcyA9IGdlb21ldHJ5Lmdyb3VwcztcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGdyb3Vwcy5sZW5ndGggPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z3JvdXBzID0gWyB7IHN0YXJ0OiAwLCBjb3VudDogaW5kaWNlcy5jb3VudCwgbWF0ZXJpYWxJbmRleDogMCB9IF07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdC8vIGNyZWF0ZSBhIGRhdGEgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgYWxsIGVnZXMgd2l0aG91dCBkdXBsaWNhdGVzXFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggbyA9IDAsIG9sID0gZ3JvdXBzLmxlbmd0aDsgbyA8IG9sOyArKyBvICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGdyb3VwID0gZ3JvdXBzWyBvIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3RhcnQgPSBncm91cC5zdGFydDtcXG5cXHRcXHRcXHRcXHRcXHRjb3VudCA9IGdyb3VwLmNvdW50O1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIGkgPSBzdGFydCwgbCA9ICggc3RhcnQgKyBjb3VudCApOyBpIDwgbDsgaSArPSAzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDwgMzsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRlZGdlMSA9IGluZGljZXMuZ2V0WCggaSArIGogKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRlZGdlMiA9IGluZGljZXMuZ2V0WCggaSArICggaiArIDEgKSAlIDMgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRlZGdlWyAwIF0gPSBNYXRoLm1pbiggZWRnZTEsIGVkZ2UyICk7IC8vIHNvcnRpbmcgcHJldmVudHMgZHVwbGljYXRlc1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGVkZ2VbIDEgXSA9IE1hdGgubWF4KCBlZGdlMSwgZWRnZTIgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRrZXkgPSBlZGdlWyAwIF0gKyAnLCcgKyBlZGdlWyAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBlZGdlc1sga2V5IF0gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRlZGdlc1sga2V5IF0gPSB7IGluZGV4MTogZWRnZVsgMCBdLCBpbmRleDI6IGVkZ2VbIDEgXSB9O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBnZW5lcmF0ZSB2ZXJ0aWNlc1xcblxcblxcdFxcdFxcdFxcdGZvciAoIGtleSBpbiBlZGdlcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRlID0gZWRnZXNbIGtleSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdHZlcnRleC5mcm9tQnVmZmVyQXR0cmlidXRlKCBwb3NpdGlvbiwgZS5pbmRleDEgKTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB2ZXJ0ZXgueCwgdmVydGV4LnksIHZlcnRleC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4LmZyb21CdWZmZXJBdHRyaWJ1dGUoIHBvc2l0aW9uLCBlLmluZGV4MiApO1xcblxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHZlcnRleC54LCB2ZXJ0ZXgueSwgdmVydGV4LnogKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeVxcblxcblxcdFxcdFxcdFxcdHBvc2l0aW9uID0gZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMCwgbCA9ICggcG9zaXRpb24uY291bnQgLyAzICk7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDwgMzsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyB0aHJlZSBlZGdlcyBwZXIgdHJpYW5nbGUsIGFuIGVkZ2UgaXMgcmVwcmVzZW50ZWQgYXMgKGluZGV4MSwgaW5kZXgyKVxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIGUuZy4gdGhlIGZpcnN0IHRyaWFuZ2xlIGhhcyB0aGUgZm9sbG93aW5nIGVkZ2VzOiAoMCwxKSwoMSwyKSwoMiwwKVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGluZGV4MSA9IDMgKiBpICsgajtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2ZXJ0ZXguZnJvbUJ1ZmZlckF0dHJpYnV0ZSggcG9zaXRpb24sIGluZGV4MSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHZlcnRleC54LCB2ZXJ0ZXgueSwgdmVydGV4LnogKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpbmRleDIgPSAzICogaSArICggKCBqICsgMSApICUgMyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZlcnRleC5mcm9tQnVmZmVyQXR0cmlidXRlKCBwb3NpdGlvbiwgaW5kZXgyICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggdmVydGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBidWlsZCBnZW9tZXRyeVxcblxcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcblxcdH1cXG5cXG5cXHRXaXJlZnJhbWVHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRXaXJlZnJhbWVHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBXaXJlZnJhbWVHZW9tZXRyeTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIHp6ODUgLyBodHRwczovL2dpdGh1Yi5jb20veno4NVxcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICpcXG5cXHQgKiBQYXJhbWV0cmljIFN1cmZhY2VzIEdlb21ldHJ5XFxuXFx0ICogYmFzZWQgb24gdGhlIGJyaWxsaWFudCBhcnRpY2xlIGJ5IEBwcmlkZW91dCBodHRwOi8vcHJpZGVvdXQubmV0L2Jsb2cvP3A9NDRcXG5cXHQgKi9cXG5cXG5cXHQvLyBQYXJhbWV0cmljR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBQYXJhbWV0cmljR2VvbWV0cnkoIGZ1bmMsIHNsaWNlcywgc3RhY2tzICkge1xcblxcblxcdFxcdEdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUGFyYW1ldHJpY0dlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0ZnVuYzogZnVuYyxcXG5cXHRcXHRcXHRzbGljZXM6IHNsaWNlcyxcXG5cXHRcXHRcXHRzdGFja3M6IHN0YWNrc1xcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBQYXJhbWV0cmljQnVmZmVyR2VvbWV0cnkoIGZ1bmMsIHNsaWNlcywgc3RhY2tzICkgKTtcXG5cXHRcXHR0aGlzLm1lcmdlVmVydGljZXMoKTtcXG5cXG5cXHR9XFxuXFxuXFx0UGFyYW1ldHJpY0dlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdFBhcmFtZXRyaWNHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBQYXJhbWV0cmljR2VvbWV0cnk7XFxuXFxuXFx0Ly8gUGFyYW1ldHJpY0J1ZmZlckdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gUGFyYW1ldHJpY0J1ZmZlckdlb21ldHJ5KCBmdW5jLCBzbGljZXMsIHN0YWNrcyApIHtcXG5cXG5cXHRcXHRCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1BhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdGZ1bmM6IGZ1bmMsXFxuXFx0XFx0XFx0c2xpY2VzOiBzbGljZXMsXFxuXFx0XFx0XFx0c3RhY2tzOiBzdGFja3NcXG5cXHRcXHR9O1xcblxcblxcdFxcdC8vIGJ1ZmZlcnNcXG5cXG5cXHRcXHR2YXIgaW5kaWNlcyA9IFtdO1xcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciBub3JtYWxzID0gW107XFxuXFx0XFx0dmFyIHV2cyA9IFtdO1xcblxcblxcdFxcdHZhciBFUFMgPSAwLjAwMDAxO1xcblxcblxcdFxcdHZhciBub3JtYWwgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdHZhciBwMCA9IG5ldyBWZWN0b3IzKCksIHAxID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgcHUgPSBuZXcgVmVjdG9yMygpLCBwdiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0dmFyIGksIGo7XFxuXFxuXFx0XFx0Ly8gZ2VuZXJhdGUgdmVydGljZXMsIG5vcm1hbHMgYW5kIHV2c1xcblxcblxcdFxcdHZhciBzbGljZUNvdW50ID0gc2xpY2VzICsgMTtcXG5cXG5cXHRcXHRmb3IgKCBpID0gMDsgaSA8PSBzdGFja3M7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHYgPSBpIC8gc3RhY2tzO1xcblxcblxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDw9IHNsaWNlczsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdSA9IGogLyBzbGljZXM7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdmVydGV4XFxuXFxuXFx0XFx0XFx0XFx0cDAgPSBmdW5jKCB1LCB2LCBwMCApO1xcblxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHAwLngsIHAwLnksIHAwLnogKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub3JtYWxcXG5cXG5cXHRcXHRcXHRcXHQvLyBhcHByb3hpbWF0ZSB0YW5nZW50IHZlY3RvcnMgdmlhIGZpbml0ZSBkaWZmZXJlbmNlc1xcblxcblxcdFxcdFxcdFxcdGlmICggdSAtIEVQUyA+PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHAxID0gZnVuYyggdSAtIEVQUywgdiwgcDEgKTtcXG5cXHRcXHRcXHRcXHRcXHRwdS5zdWJWZWN0b3JzKCBwMCwgcDEgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHAxID0gZnVuYyggdSArIEVQUywgdiwgcDEgKTtcXG5cXHRcXHRcXHRcXHRcXHRwdS5zdWJWZWN0b3JzKCBwMSwgcDAgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB2IC0gRVBTID49IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cDEgPSBmdW5jKCB1LCB2IC0gRVBTLCBwMSApO1xcblxcdFxcdFxcdFxcdFxcdHB2LnN1YlZlY3RvcnMoIHAwLCBwMSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cDEgPSBmdW5jKCB1LCB2ICsgRVBTLCBwMSApO1xcblxcdFxcdFxcdFxcdFxcdHB2LnN1YlZlY3RvcnMoIHAxLCBwMCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBjcm9zcyBwcm9kdWN0IG9mIHRhbmdlbnQgdmVjdG9ycyByZXR1cm5zIHN1cmZhY2Ugbm9ybWFsXFxuXFxuXFx0XFx0XFx0XFx0bm9ybWFsLmNyb3NzVmVjdG9ycyggcHUsIHB2ICkubm9ybWFsaXplKCk7XFxuXFx0XFx0XFx0XFx0bm9ybWFscy5wdXNoKCBub3JtYWwueCwgbm9ybWFsLnksIG5vcm1hbC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdXZcXG5cXG5cXHRcXHRcXHRcXHR1dnMucHVzaCggdSwgdiApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gZ2VuZXJhdGUgaW5kaWNlc1xcblxcblxcdFxcdGZvciAoIGkgPSAwOyBpIDwgc3RhY2tzOyBpICsrICkge1xcblxcblxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDwgc2xpY2VzOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBhID0gaSAqIHNsaWNlQ291bnQgKyBqO1xcblxcdFxcdFxcdFxcdHZhciBiID0gaSAqIHNsaWNlQ291bnQgKyBqICsgMTtcXG5cXHRcXHRcXHRcXHR2YXIgYyA9ICggaSArIDEgKSAqIHNsaWNlQ291bnQgKyBqICsgMTtcXG5cXHRcXHRcXHRcXHR2YXIgZCA9ICggaSArIDEgKSAqIHNsaWNlQ291bnQgKyBqO1xcblxcblxcdFxcdFxcdFxcdC8vIGZhY2VzIG9uZSBhbmQgdHdvXFxuXFxuXFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBhLCBiLCBkICk7XFxuXFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBiLCBjLCBkICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBidWlsZCBnZW9tZXRyeVxcblxcblxcdFxcdHRoaXMuc2V0SW5kZXgoIGluZGljZXMgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHZlcnRpY2VzLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ25vcm1hbCcsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBub3JtYWxzLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3V2JywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHV2cywgMiApICk7XFxuXFxuXFx0fVxcblxcblxcdFBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRQYXJhbWV0cmljQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUGFyYW1ldHJpY0J1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgY2xvY2t3b3JrZ2VlayAvIGh0dHBzOi8vZ2l0aHViLmNvbS9jbG9ja3dvcmtnZWVrXFxuXFx0ICogQGF1dGhvciB0aW1vdGh5cHJhdGxleSAvIGh0dHBzOi8vZ2l0aHViLmNvbS90aW1vdGh5cHJhdGxleVxcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICovXFxuXFxuXFx0Ly8gUG9seWhlZHJvbkdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gUG9seWhlZHJvbkdlb21ldHJ5KCB2ZXJ0aWNlcywgaW5kaWNlcywgcmFkaXVzLCBkZXRhaWwgKSB7XFxuXFxuXFx0XFx0R2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdQb2x5aGVkcm9uR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHR2ZXJ0aWNlczogdmVydGljZXMsXFxuXFx0XFx0XFx0aW5kaWNlczogaW5kaWNlcyxcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRkZXRhaWw6IGRldGFpbFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnkoIHZlcnRpY2VzLCBpbmRpY2VzLCByYWRpdXMsIGRldGFpbCApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdFBvbHloZWRyb25HZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRQb2x5aGVkcm9uR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUG9seWhlZHJvbkdlb21ldHJ5O1xcblxcblxcdC8vIFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeSggdmVydGljZXMsIGluZGljZXMsIHJhZGl1cywgZGV0YWlsICkge1xcblxcblxcdFxcdEJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0dmVydGljZXM6IHZlcnRpY2VzLFxcblxcdFxcdFxcdGluZGljZXM6IGluZGljZXMsXFxuXFx0XFx0XFx0cmFkaXVzOiByYWRpdXMsXFxuXFx0XFx0XFx0ZGV0YWlsOiBkZXRhaWxcXG5cXHRcXHR9O1xcblxcblxcdFxcdHJhZGl1cyA9IHJhZGl1cyB8fCAxO1xcblxcdFxcdGRldGFpbCA9IGRldGFpbCB8fCAwO1xcblxcblxcdFxcdC8vIGRlZmF1bHQgYnVmZmVyIGRhdGFcXG5cXG5cXHRcXHR2YXIgdmVydGV4QnVmZmVyID0gW107XFxuXFx0XFx0dmFyIHV2QnVmZmVyID0gW107XFxuXFxuXFx0XFx0Ly8gdGhlIHN1YmRpdmlzaW9uIGNyZWF0ZXMgdGhlIHZlcnRleCBidWZmZXIgZGF0YVxcblxcblxcdFxcdHN1YmRpdmlkZSggZGV0YWlsICk7XFxuXFxuXFx0XFx0Ly8gYWxsIHZlcnRpY2VzIHNob3VsZCBsaWUgb24gYSBjb25jZXB0dWFsIHNwaGVyZSB3aXRoIGEgZ2l2ZW4gcmFkaXVzXFxuXFxuXFx0XFx0YXBwcGx5UmFkaXVzKCByYWRpdXMgKTtcXG5cXG5cXHRcXHQvLyBmaW5hbGx5LCBjcmVhdGUgdGhlIHV2IGRhdGFcXG5cXG5cXHRcXHRnZW5lcmF0ZVVWcygpO1xcblxcblxcdFxcdC8vIGJ1aWxkIG5vbi1pbmRleGVkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB2ZXJ0ZXhCdWZmZXIsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHZlcnRleEJ1ZmZlci5zbGljZSgpLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3V2JywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHV2QnVmZmVyLCAyICkgKTtcXG5cXG5cXHRcXHRpZiAoIGRldGFpbCA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7IC8vIGZsYXQgbm9ybWFsc1xcblxcblxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5ub3JtYWxpemVOb3JtYWxzKCk7IC8vIHNtb290aCBub3JtYWxzXFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGhlbHBlciBmdW5jdGlvbnNcXG5cXG5cXHRcXHRmdW5jdGlvbiBzdWJkaXZpZGUoIGRldGFpbCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYSA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0dmFyIGIgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBjID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHQvLyBpdGVyYXRlIG92ZXIgYWxsIGZhY2VzIGFuZCBhcHBseSBhIHN1YmRpdmlzb24gd2l0aCB0aGUgZ2l2ZW4gZGV0YWlsIHZhbHVlXFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkgKz0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBnZXQgdGhlIHZlcnRpY2VzIG9mIHRoZSBmYWNlXFxuXFxuXFx0XFx0XFx0XFx0Z2V0VmVydGV4QnlJbmRleCggaW5kaWNlc1sgaSArIDAgXSwgYSApO1xcblxcdFxcdFxcdFxcdGdldFZlcnRleEJ5SW5kZXgoIGluZGljZXNbIGkgKyAxIF0sIGIgKTtcXG5cXHRcXHRcXHRcXHRnZXRWZXJ0ZXhCeUluZGV4KCBpbmRpY2VzWyBpICsgMiBdLCBjICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gcGVyZm9ybSBzdWJkaXZpc2lvblxcblxcblxcdFxcdFxcdFxcdHN1YmRpdmlkZUZhY2UoIGEsIGIsIGMsIGRldGFpbCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gc3ViZGl2aWRlRmFjZSggYSwgYiwgYywgZGV0YWlsICkge1xcblxcblxcdFxcdFxcdHZhciBjb2xzID0gTWF0aC5wb3coIDIsIGRldGFpbCApO1xcblxcblxcdFxcdFxcdC8vIHdlIHVzZSB0aGlzIG11bHRpZGltZW5zaW9uYWwgYXJyYXkgYXMgYSBkYXRhIHN0cnVjdHVyZSBmb3IgY3JlYXRpbmcgdGhlIHN1YmRpdmlzaW9uXFxuXFxuXFx0XFx0XFx0dmFyIHYgPSBbXTtcXG5cXG5cXHRcXHRcXHR2YXIgaSwgajtcXG5cXG5cXHRcXHRcXHQvLyBjb25zdHJ1Y3QgYWxsIG9mIHRoZSB2ZXJ0aWNlcyBmb3IgdGhpcyBzdWJkaXZpc2lvblxcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwOyBpIDw9IGNvbHM7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dlsgaSBdID0gW107XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFqID0gYS5jbG9uZSgpLmxlcnAoIGMsIGkgLyBjb2xzICk7XFxuXFx0XFx0XFx0XFx0dmFyIGJqID0gYi5jbG9uZSgpLmxlcnAoIGMsIGkgLyBjb2xzICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHJvd3MgPSBjb2xzIC0gaTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBqID0gMDsgaiA8PSByb3dzOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggaiA9PT0gMCAmJiBpID09PSBjb2xzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZbIGkgXVsgaiBdID0gYWo7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2WyBpIF1bIGogXSA9IGFqLmNsb25lKCkubGVycCggYmosIGogLyByb3dzICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gY29uc3RydWN0IGFsbCBvZiB0aGUgZmFjZXNcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IGNvbHM7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggaiA9IDA7IGogPCAyICogKCBjb2xzIC0gaSApIC0gMTsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgayA9IE1hdGguZmxvb3IoIGogLyAyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBqICUgMiA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXNoVmVydGV4KCB2WyBpIF1bIGsgKyAxIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXNoVmVydGV4KCB2WyBpICsgMSBdWyBrIF0gKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXNoVmVydGV4KCB2WyBpIF1bIGsgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0cHVzaFZlcnRleCggdlsgaSBdWyBrICsgMSBdICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cHVzaFZlcnRleCggdlsgaSArIDEgXVsgayArIDEgXSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHB1c2hWZXJ0ZXgoIHZbIGkgKyAxIF1bIGsgXSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBhcHBwbHlSYWRpdXMoIHJhZGl1cyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdmVydGV4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHQvLyBpdGVyYXRlIG92ZXIgdGhlIGVudGlyZSBidWZmZXIgYW5kIGFwcGx5IHRoZSByYWRpdXMgdG8gZWFjaCB2ZXJ0ZXhcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCB2ZXJ0ZXhCdWZmZXIubGVuZ3RoOyBpICs9IDMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGV4LnggPSB2ZXJ0ZXhCdWZmZXJbIGkgKyAwIF07XFxuXFx0XFx0XFx0XFx0dmVydGV4LnkgPSB2ZXJ0ZXhCdWZmZXJbIGkgKyAxIF07XFxuXFx0XFx0XFx0XFx0dmVydGV4LnogPSB2ZXJ0ZXhCdWZmZXJbIGkgKyAyIF07XFxuXFxuXFx0XFx0XFx0XFx0dmVydGV4Lm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKCByYWRpdXMgKTtcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ZXhCdWZmZXJbIGkgKyAwIF0gPSB2ZXJ0ZXgueDtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXhCdWZmZXJbIGkgKyAxIF0gPSB2ZXJ0ZXgueTtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXhCdWZmZXJbIGkgKyAyIF0gPSB2ZXJ0ZXguejtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGdlbmVyYXRlVVZzKCkge1xcblxcblxcdFxcdFxcdHZhciB2ZXJ0ZXggPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHZlcnRleEJ1ZmZlci5sZW5ndGg7IGkgKz0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueCA9IHZlcnRleEJ1ZmZlclsgaSArIDAgXTtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueSA9IHZlcnRleEJ1ZmZlclsgaSArIDEgXTtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueiA9IHZlcnRleEJ1ZmZlclsgaSArIDIgXTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdSA9IGF6aW11dGgoIHZlcnRleCApIC8gMiAvIE1hdGguUEkgKyAwLjU7XFxuXFx0XFx0XFx0XFx0dmFyIHYgPSBpbmNsaW5hdGlvbiggdmVydGV4ICkgLyBNYXRoLlBJICsgMC41O1xcblxcdFxcdFxcdFxcdHV2QnVmZmVyLnB1c2goIHUsIDEgLSB2ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGNvcnJlY3RVVnMoKTtcXG5cXG5cXHRcXHRcXHRjb3JyZWN0U2VhbSgpO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBjb3JyZWN0U2VhbSgpIHtcXG5cXG5cXHRcXHRcXHQvLyBoYW5kbGUgY2FzZSB3aGVuIGZhY2Ugc3RyYWRkbGVzIHRoZSBzZWFtLCBzZWUgIzMyNjlcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCB1dkJ1ZmZlci5sZW5ndGg7IGkgKz0gNiApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyB1diBkYXRhIG9mIGEgc2luZ2xlIGZhY2VcXG5cXG5cXHRcXHRcXHRcXHR2YXIgeDAgPSB1dkJ1ZmZlclsgaSArIDAgXTtcXG5cXHRcXHRcXHRcXHR2YXIgeDEgPSB1dkJ1ZmZlclsgaSArIDIgXTtcXG5cXHRcXHRcXHRcXHR2YXIgeDIgPSB1dkJ1ZmZlclsgaSArIDQgXTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbWF4ID0gTWF0aC5tYXgoIHgwLCB4MSwgeDIgKTtcXG5cXHRcXHRcXHRcXHR2YXIgbWluID0gTWF0aC5taW4oIHgwLCB4MSwgeDIgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyAwLjkgaXMgc29tZXdoYXQgYXJiaXRyYXJ5XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtYXggPiAwLjkgJiYgbWluIDwgMC4xICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggeDAgPCAwLjIgKSB1dkJ1ZmZlclsgaSArIDAgXSArPSAxO1xcblxcdFxcdFxcdFxcdFxcdGlmICggeDEgPCAwLjIgKSB1dkJ1ZmZlclsgaSArIDIgXSArPSAxO1xcblxcdFxcdFxcdFxcdFxcdGlmICggeDIgPCAwLjIgKSB1dkJ1ZmZlclsgaSArIDQgXSArPSAxO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHB1c2hWZXJ0ZXgoIHZlcnRleCApIHtcXG5cXG5cXHRcXHRcXHR2ZXJ0ZXhCdWZmZXIucHVzaCggdmVydGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXRWZXJ0ZXhCeUluZGV4KCBpbmRleCwgdmVydGV4ICkge1xcblxcblxcdFxcdFxcdHZhciBzdHJpZGUgPSBpbmRleCAqIDM7XFxuXFxuXFx0XFx0XFx0dmVydGV4LnggPSB2ZXJ0aWNlc1sgc3RyaWRlICsgMCBdO1xcblxcdFxcdFxcdHZlcnRleC55ID0gdmVydGljZXNbIHN0cmlkZSArIDEgXTtcXG5cXHRcXHRcXHR2ZXJ0ZXgueiA9IHZlcnRpY2VzWyBzdHJpZGUgKyAyIF07XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGNvcnJlY3RVVnMoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBiID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgYyA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0dmFyIGNlbnRyb2lkID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgdXZBID0gbmV3IFZlY3RvcjIoKTtcXG5cXHRcXHRcXHR2YXIgdXZCID0gbmV3IFZlY3RvcjIoKTtcXG5cXHRcXHRcXHR2YXIgdXZDID0gbmV3IFZlY3RvcjIoKTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGogPSAwOyBpIDwgdmVydGV4QnVmZmVyLmxlbmd0aDsgaSArPSA5LCBqICs9IDYgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YS5zZXQoIHZlcnRleEJ1ZmZlclsgaSArIDAgXSwgdmVydGV4QnVmZmVyWyBpICsgMSBdLCB2ZXJ0ZXhCdWZmZXJbIGkgKyAyIF0gKTtcXG5cXHRcXHRcXHRcXHRiLnNldCggdmVydGV4QnVmZmVyWyBpICsgMyBdLCB2ZXJ0ZXhCdWZmZXJbIGkgKyA0IF0sIHZlcnRleEJ1ZmZlclsgaSArIDUgXSApO1xcblxcdFxcdFxcdFxcdGMuc2V0KCB2ZXJ0ZXhCdWZmZXJbIGkgKyA2IF0sIHZlcnRleEJ1ZmZlclsgaSArIDcgXSwgdmVydGV4QnVmZmVyWyBpICsgOCBdICk7XFxuXFxuXFx0XFx0XFx0XFx0dXZBLnNldCggdXZCdWZmZXJbIGogKyAwIF0sIHV2QnVmZmVyWyBqICsgMSBdICk7XFxuXFx0XFx0XFx0XFx0dXZCLnNldCggdXZCdWZmZXJbIGogKyAyIF0sIHV2QnVmZmVyWyBqICsgMyBdICk7XFxuXFx0XFx0XFx0XFx0dXZDLnNldCggdXZCdWZmZXJbIGogKyA0IF0sIHV2QnVmZmVyWyBqICsgNSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0Y2VudHJvaWQuY29weSggYSApLmFkZCggYiApLmFkZCggYyApLmRpdmlkZVNjYWxhciggMyApO1xcblxcblxcdFxcdFxcdFxcdHZhciBhemkgPSBhemltdXRoKCBjZW50cm9pZCApO1xcblxcblxcdFxcdFxcdFxcdGNvcnJlY3RVViggdXZBLCBqICsgMCwgYSwgYXppICk7XFxuXFx0XFx0XFx0XFx0Y29ycmVjdFVWKCB1dkIsIGogKyAyLCBiLCBhemkgKTtcXG5cXHRcXHRcXHRcXHRjb3JyZWN0VVYoIHV2QywgaiArIDQsIGMsIGF6aSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gY29ycmVjdFVWKCB1diwgc3RyaWRlLCB2ZWN0b3IsIGF6aW11dGggKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCAoIGF6aW11dGggPCAwICkgJiYgKCB1di54ID09PSAxICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dXZCdWZmZXJbIHN0cmlkZSBdID0gdXYueCAtIDE7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggKCB2ZWN0b3IueCA9PT0gMCApICYmICggdmVjdG9yLnogPT09IDAgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHR1dkJ1ZmZlclsgc3RyaWRlIF0gPSBhemltdXRoIC8gMiAvIE1hdGguUEkgKyAwLjU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBBbmdsZSBhcm91bmQgdGhlIFkgYXhpcywgY291bnRlci1jbG9ja3dpc2Ugd2hlbiBsb29raW5nIGZyb20gYWJvdmUuXFxuXFxuXFx0XFx0ZnVuY3Rpb24gYXppbXV0aCggdmVjdG9yICkge1xcblxcblxcdFxcdFxcdHJldHVybiBNYXRoLmF0YW4yKCB2ZWN0b3IueiwgLSB2ZWN0b3IueCApO1xcblxcblxcdFxcdH1cXG5cXG5cXG5cXHRcXHQvLyBBbmdsZSBhYm92ZSB0aGUgWFogcGxhbmUuXFxuXFxuXFx0XFx0ZnVuY3Rpb24gaW5jbGluYXRpb24oIHZlY3RvciApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gTWF0aC5hdGFuMiggLSB2ZWN0b3IueSwgTWF0aC5zcXJ0KCAoIHZlY3Rvci54ICogdmVjdG9yLnggKSArICggdmVjdG9yLnogKiB2ZWN0b3IueiApICkgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgdGltb3RoeXByYXRsZXkgLyBodHRwczovL2dpdGh1Yi5jb20vdGltb3RoeXByYXRsZXlcXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIFRldHJhaGVkcm9uR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBUZXRyYWhlZHJvbkdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApIHtcXG5cXG5cXHRcXHRHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1RldHJhaGVkcm9uR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRkZXRhaWw6IGRldGFpbFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdFRldHJhaGVkcm9uR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0VGV0cmFoZWRyb25HZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZXRyYWhlZHJvbkdlb21ldHJ5O1xcblxcblxcdC8vIFRldHJhaGVkcm9uQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApIHtcXG5cXG5cXHRcXHR2YXIgdmVydGljZXMgPSBbXFxuXFx0XFx0XFx0MSwgMSwgMSwgXFx0LSAxLCAtIDEsIDEsIFxcdC0gMSwgMSwgLSAxLCBcXHQxLCAtIDEsIC0gMVxcblxcdFxcdF07XFxuXFxuXFx0XFx0dmFyIGluZGljZXMgPSBbXFxuXFx0XFx0XFx0MiwgMSwgMCwgXFx0MCwgMywgMixcXHQxLCAzLCAwLFxcdDIsIDMsIDFcXG5cXHRcXHRdO1xcblxcblxcdFxcdFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzLCB2ZXJ0aWNlcywgaW5kaWNlcywgcmFkaXVzLCBkZXRhaWwgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHJhZGl1czogcmFkaXVzLFxcblxcdFxcdFxcdGRldGFpbDogZGV0YWlsXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0VGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0VGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgdGltb3RoeXByYXRsZXkgLyBodHRwczovL2dpdGh1Yi5jb20vdGltb3RoeXByYXRsZXlcXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIE9jdGFoZWRyb25HZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIE9jdGFoZWRyb25HZW9tZXRyeSggcmFkaXVzLCBkZXRhaWwgKSB7XFxuXFxuXFx0XFx0R2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdPY3RhaGVkcm9uR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRkZXRhaWw6IGRldGFpbFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnkoIHJhZGl1cywgZGV0YWlsICkgKTtcXG5cXHRcXHR0aGlzLm1lcmdlVmVydGljZXMoKTtcXG5cXG5cXHR9XFxuXFxuXFx0T2N0YWhlZHJvbkdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdE9jdGFoZWRyb25HZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBPY3RhaGVkcm9uR2VvbWV0cnk7XFxuXFxuXFx0Ly8gT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApIHtcXG5cXG5cXHRcXHR2YXIgdmVydGljZXMgPSBbXFxuXFx0XFx0XFx0MSwgMCwgMCwgXFx0LSAxLCAwLCAwLFxcdDAsIDEsIDAsXFxuXFx0XFx0XFx0MCwgLSAxLCAwLCBcXHQwLCAwLCAxLFxcdDAsIDAsIC0gMVxcblxcdFxcdF07XFxuXFxuXFx0XFx0dmFyIGluZGljZXMgPSBbXFxuXFx0XFx0XFx0MCwgMiwgNCxcXHQwLCA0LCAzLFxcdDAsIDMsIDUsXFxuXFx0XFx0XFx0MCwgNSwgMixcXHQxLCAyLCA1LFxcdDEsIDUsIDMsXFxuXFx0XFx0XFx0MSwgMywgNCxcXHQxLCA0LCAyXFxuXFx0XFx0XTtcXG5cXG5cXHRcXHRQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnkuY2FsbCggdGhpcywgdmVydGljZXMsIGluZGljZXMsIHJhZGl1cywgZGV0YWlsICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ09jdGFoZWRyb25CdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHJhZGl1czogcmFkaXVzLFxcblxcdFxcdFxcdGRldGFpbDogZGV0YWlsXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0T2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgdGltb3RoeXByYXRsZXkgLyBodHRwczovL2dpdGh1Yi5jb20vdGltb3RoeXByYXRsZXlcXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIEljb3NhaGVkcm9uR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBJY29zYWhlZHJvbkdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApIHtcXG5cXG5cXHRcXHRHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0ljb3NhaGVkcm9uR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRkZXRhaWw6IGRldGFpbFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdEljb3NhaGVkcm9uR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0SWNvc2FoZWRyb25HZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJY29zYWhlZHJvbkdlb21ldHJ5O1xcblxcblxcdC8vIEljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApIHtcXG5cXG5cXHRcXHR2YXIgdCA9ICggMSArIE1hdGguc3FydCggNSApICkgLyAyO1xcblxcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtcXG5cXHRcXHRcXHQtIDEsIHQsIDAsIFxcdDEsIHQsIDAsIFxcdC0gMSwgLSB0LCAwLCBcXHQxLCAtIHQsIDAsXFxuXFx0XFx0XFx0IDAsIC0gMSwgdCwgXFx0MCwgMSwgdCxcXHQwLCAtIDEsIC0gdCwgXFx0MCwgMSwgLSB0LFxcblxcdFxcdFxcdCB0LCAwLCAtIDEsIFxcdHQsIDAsIDEsIFxcdC0gdCwgMCwgLSAxLCBcXHQtIHQsIDAsIDFcXG5cXHRcXHRdO1xcblxcblxcdFxcdHZhciBpbmRpY2VzID0gW1xcblxcdFxcdFxcdCAwLCAxMSwgNSwgXFx0MCwgNSwgMSwgXFx0MCwgMSwgNywgXFx0MCwgNywgMTAsIFxcdDAsIDEwLCAxMSxcXG5cXHRcXHRcXHQgMSwgNSwgOSwgXFx0NSwgMTEsIDQsXFx0MTEsIDEwLCAyLFxcdDEwLCA3LCA2LFxcdDcsIDEsIDgsXFxuXFx0XFx0XFx0IDMsIDksIDQsIFxcdDMsIDQsIDIsXFx0MywgMiwgNixcXHQzLCA2LCA4LFxcdDMsIDgsIDksXFxuXFx0XFx0XFx0IDQsIDksIDUsIFxcdDIsIDQsIDExLFxcdDYsIDIsIDEwLFxcdDgsIDYsIDcsXFx0OSwgOCwgMVxcblxcdFxcdF07XFxuXFxuXFx0XFx0UG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMsIHZlcnRpY2VzLCBpbmRpY2VzLCByYWRpdXMsIGRldGFpbCApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0cmFkaXVzOiByYWRpdXMsXFxuXFx0XFx0XFx0ZGV0YWlsOiBkZXRhaWxcXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHRJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBBYmUgUGF6b3MgLyBodHRwczovL2hhbW9pZC5jb21cXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIERvZGVjYWhlZHJvbkdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gRG9kZWNhaGVkcm9uR2VvbWV0cnkoIHJhZGl1cywgZGV0YWlsICkge1xcblxcblxcdFxcdEdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnRG9kZWNhaGVkcm9uR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRkZXRhaWw6IGRldGFpbFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBEb2RlY2FoZWRyb25CdWZmZXJHZW9tZXRyeSggcmFkaXVzLCBkZXRhaWwgKSApO1xcblxcdFxcdHRoaXMubWVyZ2VWZXJ0aWNlcygpO1xcblxcblxcdH1cXG5cXG5cXHREb2RlY2FoZWRyb25HZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHREb2RlY2FoZWRyb25HZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEb2RlY2FoZWRyb25HZW9tZXRyeTtcXG5cXG5cXHQvLyBEb2RlY2FoZWRyb25CdWZmZXJHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIGRldGFpbCApIHtcXG5cXG5cXHRcXHR2YXIgdCA9ICggMSArIE1hdGguc3FydCggNSApICkgLyAyO1xcblxcdFxcdHZhciByID0gMSAvIHQ7XFxuXFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW1xcblxcblxcdFxcdFxcdC8vICjCsTEsIMKxMSwgwrExKVxcblxcdFxcdFxcdC0gMSwgLSAxLCAtIDEsXFx0LSAxLCAtIDEsIDEsXFxuXFx0XFx0XFx0LSAxLCAxLCAtIDEsIC0gMSwgMSwgMSxcXG5cXHRcXHRcXHQxLCAtIDEsIC0gMSwgMSwgLSAxLCAxLFxcblxcdFxcdFxcdDEsIDEsIC0gMSwgMSwgMSwgMSxcXG5cXG5cXHRcXHRcXHQvLyAoMCwgwrExL8+GLCDCsc+GKVxcblxcdFxcdFxcdCAwLCAtIHIsIC0gdCwgMCwgLSByLCB0LFxcblxcdFxcdFxcdCAwLCByLCAtIHQsIDAsIHIsIHQsXFxuXFxuXFx0XFx0XFx0Ly8gKMKxMS/PhiwgwrHPhiwgMClcXG5cXHRcXHRcXHQtIHIsIC0gdCwgMCwgLSByLCB0LCAwLFxcblxcdFxcdFxcdCByLCAtIHQsIDAsIHIsIHQsIDAsXFxuXFxuXFx0XFx0XFx0Ly8gKMKxz4YsIDAsIMKxMS/PhilcXG5cXHRcXHRcXHQtIHQsIDAsIC0gciwgdCwgMCwgLSByLFxcblxcdFxcdFxcdC0gdCwgMCwgciwgdCwgMCwgclxcblxcdFxcdF07XFxuXFxuXFx0XFx0dmFyIGluZGljZXMgPSBbXFxuXFx0XFx0XFx0MywgMTEsIDcsIFxcdDMsIDcsIDE1LCBcXHQzLCAxNSwgMTMsXFxuXFx0XFx0XFx0NywgMTksIDE3LCBcXHQ3LCAxNywgNiwgXFx0NywgNiwgMTUsXFxuXFx0XFx0XFx0MTcsIDQsIDgsIFxcdDE3LCA4LCAxMCwgXFx0MTcsIDEwLCA2LFxcblxcdFxcdFxcdDgsIDAsIDE2LCBcXHQ4LCAxNiwgMiwgXFx0OCwgMiwgMTAsXFxuXFx0XFx0XFx0MCwgMTIsIDEsIFxcdDAsIDEsIDE4LCBcXHQwLCAxOCwgMTYsXFxuXFx0XFx0XFx0NiwgMTAsIDIsIFxcdDYsIDIsIDEzLCBcXHQ2LCAxMywgMTUsXFxuXFx0XFx0XFx0MiwgMTYsIDE4LCBcXHQyLCAxOCwgMywgXFx0MiwgMywgMTMsXFxuXFx0XFx0XFx0MTgsIDEsIDksIFxcdDE4LCA5LCAxMSwgXFx0MTgsIDExLCAzLFxcblxcdFxcdFxcdDQsIDE0LCAxMiwgXFx0NCwgMTIsIDAsIFxcdDQsIDAsIDgsXFxuXFx0XFx0XFx0MTEsIDksIDUsIFxcdDExLCA1LCAxOSwgXFx0MTEsIDE5LCA3LFxcblxcdFxcdFxcdDE5LCA1LCAxNCwgXFx0MTksIDE0LCA0LCBcXHQxOSwgNCwgMTcsXFxuXFx0XFx0XFx0MSwgMTIsIDE0LCBcXHQxLCAxNCwgNSwgXFx0MSwgNSwgOVxcblxcdFxcdF07XFxuXFxuXFx0XFx0UG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMsIHZlcnRpY2VzLCBpbmRpY2VzLCByYWRpdXMsIGRldGFpbCApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdEb2RlY2FoZWRyb25CdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHJhZGl1czogcmFkaXVzLFxcblxcdFxcdFxcdGRldGFpbDogZGV0YWlsXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0RG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igb29zbW94aWVjb2RlIC8gaHR0cHM6Ly9naXRodWIuY29tL29vc21veGllY29kZVxcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwczovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKiBAYXV0aG9yIHp6ODUgLyBodHRwczovL2dpdGh1Yi5jb20veno4NVxcblxcdCAqIEBhdXRob3IgbWluaW5nb2xkIC8gaHR0cHM6Ly9naXRodWIuY29tL21pbmluZ29sZFxcblxcdCAqIEBhdXRob3Igam9ub2JyMSAvIGh0dHBzOi8vZ2l0aHViLmNvbS9qb25vYnIxXFxuXFx0ICogQGF1dGhvciBNdWdlbjg3IC8gaHR0cHM6Ly9naXRodWIuY29tL011Z2VuODdcXG5cXHQgKlxcblxcdCAqL1xcblxcblxcdC8vIFR1YmVHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIFR1YmVHZW9tZXRyeSggcGF0aCwgdHVidWxhclNlZ21lbnRzLCByYWRpdXMsIHJhZGlhbFNlZ21lbnRzLCBjbG9zZWQsIHRhcGVyICkge1xcblxcblxcdFxcdEdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnVHViZUdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0cGF0aDogcGF0aCxcXG5cXHRcXHRcXHR0dWJ1bGFyU2VnbWVudHM6IHR1YnVsYXJTZWdtZW50cyxcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRyYWRpYWxTZWdtZW50czogcmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0Y2xvc2VkOiBjbG9zZWRcXG5cXHRcXHR9O1xcblxcblxcdFxcdGlmICggdGFwZXIgIT09IHVuZGVmaW5lZCApIGNvbnNvbGUud2FybiggJ1RIUkVFLlR1YmVHZW9tZXRyeTogdGFwZXIgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0dmFyIGJ1ZmZlckdlb21ldHJ5ID0gbmV3IFR1YmVCdWZmZXJHZW9tZXRyeSggcGF0aCwgdHVidWxhclNlZ21lbnRzLCByYWRpdXMsIHJhZGlhbFNlZ21lbnRzLCBjbG9zZWQgKTtcXG5cXG5cXHRcXHQvLyBleHBvc2UgaW50ZXJuYWxzXFxuXFxuXFx0XFx0dGhpcy50YW5nZW50cyA9IGJ1ZmZlckdlb21ldHJ5LnRhbmdlbnRzO1xcblxcdFxcdHRoaXMubm9ybWFscyA9IGJ1ZmZlckdlb21ldHJ5Lm5vcm1hbHM7XFxuXFx0XFx0dGhpcy5iaW5vcm1hbHMgPSBidWZmZXJHZW9tZXRyeS5iaW5vcm1hbHM7XFxuXFxuXFx0XFx0Ly8gY3JlYXRlIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIGJ1ZmZlckdlb21ldHJ5ICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdFR1YmVHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRUdWJlR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHViZUdlb21ldHJ5O1xcblxcblxcdC8vIFR1YmVCdWZmZXJHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIFR1YmVCdWZmZXJHZW9tZXRyeSggcGF0aCwgdHVidWxhclNlZ21lbnRzLCByYWRpdXMsIHJhZGlhbFNlZ21lbnRzLCBjbG9zZWQgKSB7XFxuXFxuXFx0XFx0QnVmZmVyR2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdUdWJlQnVmZmVyR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRwYXRoOiBwYXRoLFxcblxcdFxcdFxcdHR1YnVsYXJTZWdtZW50czogdHVidWxhclNlZ21lbnRzLFxcblxcdFxcdFxcdHJhZGl1czogcmFkaXVzLFxcblxcdFxcdFxcdHJhZGlhbFNlZ21lbnRzOiByYWRpYWxTZWdtZW50cyxcXG5cXHRcXHRcXHRjbG9zZWQ6IGNsb3NlZFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dHVidWxhclNlZ21lbnRzID0gdHVidWxhclNlZ21lbnRzIHx8IDY0O1xcblxcdFxcdHJhZGl1cyA9IHJhZGl1cyB8fCAxO1xcblxcdFxcdHJhZGlhbFNlZ21lbnRzID0gcmFkaWFsU2VnbWVudHMgfHwgODtcXG5cXHRcXHRjbG9zZWQgPSBjbG9zZWQgfHwgZmFsc2U7XFxuXFxuXFx0XFx0dmFyIGZyYW1lcyA9IHBhdGguY29tcHV0ZUZyZW5ldEZyYW1lcyggdHVidWxhclNlZ21lbnRzLCBjbG9zZWQgKTtcXG5cXG5cXHRcXHQvLyBleHBvc2UgaW50ZXJuYWxzXFxuXFxuXFx0XFx0dGhpcy50YW5nZW50cyA9IGZyYW1lcy50YW5nZW50cztcXG5cXHRcXHR0aGlzLm5vcm1hbHMgPSBmcmFtZXMubm9ybWFscztcXG5cXHRcXHR0aGlzLmJpbm9ybWFscyA9IGZyYW1lcy5iaW5vcm1hbHM7XFxuXFxuXFx0XFx0Ly8gaGVscGVyIHZhcmlhYmxlc1xcblxcblxcdFxcdHZhciB2ZXJ0ZXggPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciBub3JtYWwgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciB1diA9IG5ldyBWZWN0b3IyKCk7XFxuXFx0XFx0dmFyIFAgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdHZhciBpLCBqO1xcblxcblxcdFxcdC8vIGJ1ZmZlclxcblxcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciBub3JtYWxzID0gW107XFxuXFx0XFx0dmFyIHV2cyA9IFtdO1xcblxcdFxcdHZhciBpbmRpY2VzID0gW107XFxuXFxuXFx0XFx0Ly8gY3JlYXRlIGJ1ZmZlciBkYXRhXFxuXFxuXFx0XFx0Z2VuZXJhdGVCdWZmZXJEYXRhKCk7XFxuXFxuXFx0XFx0Ly8gYnVpbGQgZ2VvbWV0cnlcXG5cXG5cXHRcXHR0aGlzLnNldEluZGV4KCBpbmRpY2VzICk7XFxuXFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB2ZXJ0aWNlcywgMyApICk7XFxuXFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICdub3JtYWwnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggbm9ybWFscywgMyApICk7XFxuXFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICd1dicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB1dnMsIDIgKSApO1xcblxcblxcdFxcdC8vIGZ1bmN0aW9uc1xcblxcblxcdFxcdGZ1bmN0aW9uIGdlbmVyYXRlQnVmZmVyRGF0YSgpIHtcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IHR1YnVsYXJTZWdtZW50czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRnZW5lcmF0ZVNlZ21lbnQoIGkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gaWYgdGhlIGdlb21ldHJ5IGlzIG5vdCBjbG9zZWQsIGdlbmVyYXRlIHRoZSBsYXN0IHJvdyBvZiB2ZXJ0aWNlcyBhbmQgbm9ybWFsc1xcblxcdFxcdFxcdC8vIGF0IHRoZSByZWd1bGFyIHBvc2l0aW9uIG9uIHRoZSBnaXZlbiBwYXRoXFxuXFx0XFx0XFx0Ly9cXG5cXHRcXHRcXHQvLyBpZiB0aGUgZ2VvbWV0cnkgaXMgY2xvc2VkLCBkdXBsaWNhdGUgdGhlIGZpcnN0IHJvdyBvZiB2ZXJ0aWNlcyBhbmQgbm9ybWFscyAodXZzIHdpbGwgZGlmZmVyKVxcblxcblxcdFxcdFxcdGdlbmVyYXRlU2VnbWVudCggKCBjbG9zZWQgPT09IGZhbHNlICkgPyB0dWJ1bGFyU2VnbWVudHMgOiAwICk7XFxuXFxuXFx0XFx0XFx0Ly8gdXZzIGFyZSBnZW5lcmF0ZWQgaW4gYSBzZXBhcmF0ZSBmdW5jdGlvbi5cXG5cXHRcXHRcXHQvLyB0aGlzIG1ha2VzIGl0IGVhc3kgY29tcHV0ZSBjb3JyZWN0IHZhbHVlcyBmb3IgY2xvc2VkIGdlb21ldHJpZXNcXG5cXG5cXHRcXHRcXHRnZW5lcmF0ZVVWcygpO1xcblxcblxcdFxcdFxcdC8vIGZpbmFsbHkgY3JlYXRlIGZhY2VzXFxuXFxuXFx0XFx0XFx0Z2VuZXJhdGVJbmRpY2VzKCk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGdlbmVyYXRlU2VnbWVudCggaSApIHtcXG5cXG5cXHRcXHRcXHQvLyB3ZSB1c2UgZ2V0UG9pbnRBdCB0byBzYW1wbGUgZXZlbmx5IGRpc3RyaWJ1dGVkIHBvaW50cyBmcm9tIHRoZSBnaXZlbiBwYXRoXFxuXFxuXFx0XFx0XFx0UCA9IHBhdGguZ2V0UG9pbnRBdCggaSAvIHR1YnVsYXJTZWdtZW50cywgUCApO1xcblxcblxcdFxcdFxcdC8vIHJldHJpZXZlIGNvcnJlc3BvbmRpbmcgbm9ybWFsIGFuZCBiaW5vcm1hbFxcblxcblxcdFxcdFxcdHZhciBOID0gZnJhbWVzLm5vcm1hbHNbIGkgXTtcXG5cXHRcXHRcXHR2YXIgQiA9IGZyYW1lcy5iaW5vcm1hbHNbIGkgXTtcXG5cXG5cXHRcXHRcXHQvLyBnZW5lcmF0ZSBub3JtYWxzIGFuZCB2ZXJ0aWNlcyBmb3IgdGhlIGN1cnJlbnQgc2VnbWVudFxcblxcblxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDw9IHJhZGlhbFNlZ21lbnRzOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB2ID0gaiAvIHJhZGlhbFNlZ21lbnRzICogTWF0aC5QSSAqIDI7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNpbiA9IE1hdGguc2luKCB2ICk7XFxuXFx0XFx0XFx0XFx0dmFyIGNvcyA9IC0gTWF0aC5jb3MoIHYgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub3JtYWxcXG5cXG5cXHRcXHRcXHRcXHRub3JtYWwueCA9ICggY29zICogTi54ICsgc2luICogQi54ICk7XFxuXFx0XFx0XFx0XFx0bm9ybWFsLnkgPSAoIGNvcyAqIE4ueSArIHNpbiAqIEIueSApO1xcblxcdFxcdFxcdFxcdG5vcm1hbC56ID0gKCBjb3MgKiBOLnogKyBzaW4gKiBCLnogKTtcXG5cXHRcXHRcXHRcXHRub3JtYWwubm9ybWFsaXplKCk7XFxuXFxuXFx0XFx0XFx0XFx0bm9ybWFscy5wdXNoKCBub3JtYWwueCwgbm9ybWFsLnksIG5vcm1hbC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdmVydGV4XFxuXFxuXFx0XFx0XFx0XFx0dmVydGV4LnggPSBQLnggKyByYWRpdXMgKiBub3JtYWwueDtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueSA9IFAueSArIHJhZGl1cyAqIG5vcm1hbC55O1xcblxcdFxcdFxcdFxcdHZlcnRleC56ID0gUC56ICsgcmFkaXVzICogbm9ybWFsLno7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggdmVydGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2VuZXJhdGVJbmRpY2VzKCkge1xcblxcblxcdFxcdFxcdGZvciAoIGogPSAxOyBqIDw9IHR1YnVsYXJTZWdtZW50czsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMTsgaSA8PSByYWRpYWxTZWdtZW50czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgYSA9ICggcmFkaWFsU2VnbWVudHMgKyAxICkgKiAoIGogLSAxICkgKyAoIGkgLSAxICk7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGIgPSAoIHJhZGlhbFNlZ21lbnRzICsgMSApICogaiArICggaSAtIDEgKTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgYyA9ICggcmFkaWFsU2VnbWVudHMgKyAxICkgKiBqICsgaTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgZCA9ICggcmFkaWFsU2VnbWVudHMgKyAxICkgKiAoIGogLSAxICkgKyBpO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGZhY2VzXFxuXFxuXFx0XFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBhLCBiLCBkICk7XFxuXFx0XFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBiLCBjLCBkICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2VuZXJhdGVVVnMoKSB7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPD0gdHVidWxhclNlZ21lbnRzOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDw9IHJhZGlhbFNlZ21lbnRzOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHV2LnggPSBpIC8gdHVidWxhclNlZ21lbnRzO1xcblxcdFxcdFxcdFxcdFxcdHV2LnkgPSBqIC8gcmFkaWFsU2VnbWVudHM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dXZzLnB1c2goIHV2LngsIHV2LnkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0VHViZUJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdFR1YmVCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUdWJlQnVmZmVyR2VvbWV0cnk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBvb3Ntb3hpZWNvZGVcXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqXFxuXFx0ICogYmFzZWQgb24gaHR0cDovL3d3dy5ibGFja3Bhd24uY29tL3RleHRzL3BxdG9ydXMvXFxuXFx0ICovXFxuXFxuXFx0Ly8gVG9ydXNLbm90R2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBUb3J1c0tub3RHZW9tZXRyeSggcmFkaXVzLCB0dWJlLCB0dWJ1bGFyU2VnbWVudHMsIHJhZGlhbFNlZ21lbnRzLCBwLCBxLCBoZWlnaHRTY2FsZSApIHtcXG5cXG5cXHRcXHRHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1RvcnVzS25vdEdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0cmFkaXVzOiByYWRpdXMsXFxuXFx0XFx0XFx0dHViZTogdHViZSxcXG5cXHRcXHRcXHR0dWJ1bGFyU2VnbWVudHM6IHR1YnVsYXJTZWdtZW50cyxcXG5cXHRcXHRcXHRyYWRpYWxTZWdtZW50czogcmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0cDogcCxcXG5cXHRcXHRcXHRxOiBxXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHRpZiAoIGhlaWdodFNjYWxlICE9PSB1bmRlZmluZWQgKSBjb25zb2xlLndhcm4oICdUSFJFRS5Ub3J1c0tub3RHZW9tZXRyeTogaGVpZ2h0U2NhbGUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zY2FsZSggeCwgeSwgeiApIGluc3RlYWQuJyApO1xcblxcblxcdFxcdHRoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KCBuZXcgVG9ydXNLbm90QnVmZmVyR2VvbWV0cnkoIHJhZGl1cywgdHViZSwgdHVidWxhclNlZ21lbnRzLCByYWRpYWxTZWdtZW50cywgcCwgcSApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdFRvcnVzS25vdEdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdFRvcnVzS25vdEdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRvcnVzS25vdEdlb21ldHJ5O1xcblxcblxcdC8vIFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gVG9ydXNLbm90QnVmZmVyR2VvbWV0cnkoIHJhZGl1cywgdHViZSwgdHVidWxhclNlZ21lbnRzLCByYWRpYWxTZWdtZW50cywgcCwgcSApIHtcXG5cXG5cXHRcXHRCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1RvcnVzS25vdEJ1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0cmFkaXVzOiByYWRpdXMsXFxuXFx0XFx0XFx0dHViZTogdHViZSxcXG5cXHRcXHRcXHR0dWJ1bGFyU2VnbWVudHM6IHR1YnVsYXJTZWdtZW50cyxcXG5cXHRcXHRcXHRyYWRpYWxTZWdtZW50czogcmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0cDogcCxcXG5cXHRcXHRcXHRxOiBxXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHRyYWRpdXMgPSByYWRpdXMgfHwgMTtcXG5cXHRcXHR0dWJlID0gdHViZSB8fCAwLjQ7XFxuXFx0XFx0dHVidWxhclNlZ21lbnRzID0gTWF0aC5mbG9vciggdHVidWxhclNlZ21lbnRzICkgfHwgNjQ7XFxuXFx0XFx0cmFkaWFsU2VnbWVudHMgPSBNYXRoLmZsb29yKCByYWRpYWxTZWdtZW50cyApIHx8IDg7XFxuXFx0XFx0cCA9IHAgfHwgMjtcXG5cXHRcXHRxID0gcSB8fCAzO1xcblxcblxcdFxcdC8vIGJ1ZmZlcnNcXG5cXG5cXHRcXHR2YXIgaW5kaWNlcyA9IFtdO1xcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciBub3JtYWxzID0gW107XFxuXFx0XFx0dmFyIHV2cyA9IFtdO1xcblxcblxcdFxcdC8vIGhlbHBlciB2YXJpYWJsZXNcXG5cXG5cXHRcXHR2YXIgaSwgajtcXG5cXG5cXHRcXHR2YXIgdmVydGV4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgbm9ybWFsID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHR2YXIgUDEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciBQMiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0dmFyIEIgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciBUID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgTiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0Ly8gZ2VuZXJhdGUgdmVydGljZXMsIG5vcm1hbHMgYW5kIHV2c1xcblxcblxcdFxcdGZvciAoIGkgPSAwOyBpIDw9IHR1YnVsYXJTZWdtZW50czsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHQvLyB0aGUgcmFkaWFuIFxcXCJ1XFxcIiBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb24gdGhlIHRvcnVzIGN1cnZlIG9mIHRoZSBjdXJyZW50IHR1YnVsYXIgc2VnZW1lbnRcXG5cXG5cXHRcXHRcXHR2YXIgdSA9IGkgLyB0dWJ1bGFyU2VnbWVudHMgKiBwICogTWF0aC5QSSAqIDI7XFxuXFxuXFx0XFx0XFx0Ly8gbm93IHdlIGNhbGN1bGF0ZSB0d28gcG9pbnRzLiBQMSBpcyBvdXIgY3VycmVudCBwb3NpdGlvbiBvbiB0aGUgY3VydmUsIFAyIGlzIGEgbGl0dGxlIGZhcnRoZXIgYWhlYWQuXFxuXFx0XFx0XFx0Ly8gdGhlc2UgcG9pbnRzIGFyZSB1c2VkIHRvIGNyZWF0ZSBhIHNwZWNpYWwgXFxcImNvb3JkaW5hdGUgc3BhY2VcXFwiLCB3aGljaCBpcyBuZWNlc3NhcnkgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHZlcnRleCBwb3NpdGlvbnNcXG5cXG5cXHRcXHRcXHRjYWxjdWxhdGVQb3NpdGlvbk9uQ3VydmUoIHUsIHAsIHEsIHJhZGl1cywgUDEgKTtcXG5cXHRcXHRcXHRjYWxjdWxhdGVQb3NpdGlvbk9uQ3VydmUoIHUgKyAwLjAxLCBwLCBxLCByYWRpdXMsIFAyICk7XFxuXFxuXFx0XFx0XFx0Ly8gY2FsY3VsYXRlIG9ydGhvbm9ybWFsIGJhc2lzXFxuXFxuXFx0XFx0XFx0VC5zdWJWZWN0b3JzKCBQMiwgUDEgKTtcXG5cXHRcXHRcXHROLmFkZFZlY3RvcnMoIFAyLCBQMSApO1xcblxcdFxcdFxcdEIuY3Jvc3NWZWN0b3JzKCBULCBOICk7XFxuXFx0XFx0XFx0Ti5jcm9zc1ZlY3RvcnMoIEIsIFQgKTtcXG5cXG5cXHRcXHRcXHQvLyBub3JtYWxpemUgQiwgTi4gVCBjYW4gYmUgaWdub3JlZCwgd2UgZG9uJ3QgdXNlIGl0XFxuXFxuXFx0XFx0XFx0Qi5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHROLm5vcm1hbGl6ZSgpO1xcblxcblxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDw9IHJhZGlhbFNlZ21lbnRzOyArKyBqICkge1xcblxcblxcdFxcdFxcdFxcdC8vIG5vdyBjYWxjdWxhdGUgdGhlIHZlcnRpY2VzLiB0aGV5IGFyZSBub3RoaW5nIG1vcmUgdGhhbiBhbiBleHRydXNpb24gb2YgdGhlIHRvcnVzIGN1cnZlLlxcblxcdFxcdFxcdFxcdC8vIGJlY2F1c2Ugd2UgZXh0cnVkZSBhIHNoYXBlIGluIHRoZSB4eS1wbGFuZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxjdWxhdGUgYSB6LXZhbHVlLlxcblxcblxcdFxcdFxcdFxcdHZhciB2ID0gaiAvIHJhZGlhbFNlZ21lbnRzICogTWF0aC5QSSAqIDI7XFxuXFx0XFx0XFx0XFx0dmFyIGN4ID0gLSB0dWJlICogTWF0aC5jb3MoIHYgKTtcXG5cXHRcXHRcXHRcXHR2YXIgY3kgPSB0dWJlICogTWF0aC5zaW4oIHYgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub3cgY2FsY3VsYXRlIHRoZSBmaW5hbCB2ZXJ0ZXggcG9zaXRpb24uXFxuXFx0XFx0XFx0XFx0Ly8gZmlyc3Qgd2Ugb3JpZW50IHRoZSBleHRydXNpb24gd2l0aCBvdXIgYmFzaXMgdmVjdG9zLCB0aGVuIHdlIGFkZCBpdCB0byB0aGUgY3VycmVudCBwb3NpdGlvbiBvbiB0aGUgY3VydmVcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueCA9IFAxLnggKyAoIGN4ICogTi54ICsgY3kgKiBCLnggKTtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueSA9IFAxLnkgKyAoIGN4ICogTi55ICsgY3kgKiBCLnkgKTtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueiA9IFAxLnogKyAoIGN4ICogTi56ICsgY3kgKiBCLnogKTtcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB2ZXJ0ZXgueCwgdmVydGV4LnksIHZlcnRleC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbm9ybWFsIChQMSBpcyBhbHdheXMgdGhlIGNlbnRlci9vcmlnaW4gb2YgdGhlIGV4dHJ1c2lvbiwgdGh1cyB3ZSBjYW4gdXNlIGl0IHRvIGNhbGN1bGF0ZSB0aGUgbm9ybWFsKVxcblxcblxcdFxcdFxcdFxcdG5vcm1hbC5zdWJWZWN0b3JzKCB2ZXJ0ZXgsIFAxICkubm9ybWFsaXplKCk7XFxuXFxuXFx0XFx0XFx0XFx0bm9ybWFscy5wdXNoKCBub3JtYWwueCwgbm9ybWFsLnksIG5vcm1hbC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdXZcXG5cXG5cXHRcXHRcXHRcXHR1dnMucHVzaCggaSAvIHR1YnVsYXJTZWdtZW50cyApO1xcblxcdFxcdFxcdFxcdHV2cy5wdXNoKCBqIC8gcmFkaWFsU2VnbWVudHMgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGdlbmVyYXRlIGluZGljZXNcXG5cXG5cXHRcXHRmb3IgKCBqID0gMTsgaiA8PSB0dWJ1bGFyU2VnbWVudHM7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDE7IGkgPD0gcmFkaWFsU2VnbWVudHM7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gaW5kaWNlc1xcblxcblxcdFxcdFxcdFxcdHZhciBhID0gKCByYWRpYWxTZWdtZW50cyArIDEgKSAqICggaiAtIDEgKSArICggaSAtIDEgKTtcXG5cXHRcXHRcXHRcXHR2YXIgYiA9ICggcmFkaWFsU2VnbWVudHMgKyAxICkgKiBqICsgKCBpIC0gMSApO1xcblxcdFxcdFxcdFxcdHZhciBjID0gKCByYWRpYWxTZWdtZW50cyArIDEgKSAqIGogKyBpO1xcblxcdFxcdFxcdFxcdHZhciBkID0gKCByYWRpYWxTZWdtZW50cyArIDEgKSAqICggaiAtIDEgKSArIGk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZmFjZXNcXG5cXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGEsIGIsIGQgKTtcXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGIsIGMsIGQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGJ1aWxkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggaW5kaWNlcyApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5vcm1hbHMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdXZzLCAyICkgKTtcXG5cXG5cXHRcXHQvLyB0aGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIGN1cnJlbnQgcG9zaXRpb24gb24gdGhlIHRvcnVzIGN1cnZlXFxuXFxuXFx0XFx0ZnVuY3Rpb24gY2FsY3VsYXRlUG9zaXRpb25PbkN1cnZlKCB1LCBwLCBxLCByYWRpdXMsIHBvc2l0aW9uICkge1xcblxcblxcdFxcdFxcdHZhciBjdSA9IE1hdGguY29zKCB1ICk7XFxuXFx0XFx0XFx0dmFyIHN1ID0gTWF0aC5zaW4oIHUgKTtcXG5cXHRcXHRcXHR2YXIgcXVPdmVyUCA9IHEgLyBwICogdTtcXG5cXHRcXHRcXHR2YXIgY3MgPSBNYXRoLmNvcyggcXVPdmVyUCApO1xcblxcblxcdFxcdFxcdHBvc2l0aW9uLnggPSByYWRpdXMgKiAoIDIgKyBjcyApICogMC41ICogY3U7XFxuXFx0XFx0XFx0cG9zaXRpb24ueSA9IHJhZGl1cyAqICggMiArIGNzICkgKiBzdSAqIDAuNTtcXG5cXHRcXHRcXHRwb3NpdGlvbi56ID0gcmFkaXVzICogTWF0aC5zaW4oIHF1T3ZlclAgKSAqIDAuNTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igb29zbW94aWVjb2RlXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIFRvcnVzR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBUb3J1c0dlb21ldHJ5KCByYWRpdXMsIHR1YmUsIHJhZGlhbFNlZ21lbnRzLCB0dWJ1bGFyU2VnbWVudHMsIGFyYyApIHtcXG5cXG5cXHRcXHRHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1RvcnVzR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHR0dWJlOiB0dWJlLFxcblxcdFxcdFxcdHJhZGlhbFNlZ21lbnRzOiByYWRpYWxTZWdtZW50cyxcXG5cXHRcXHRcXHR0dWJ1bGFyU2VnbWVudHM6IHR1YnVsYXJTZWdtZW50cyxcXG5cXHRcXHRcXHRhcmM6IGFyY1xcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBUb3J1c0J1ZmZlckdlb21ldHJ5KCByYWRpdXMsIHR1YmUsIHJhZGlhbFNlZ21lbnRzLCB0dWJ1bGFyU2VnbWVudHMsIGFyYyApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdFRvcnVzR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0VG9ydXNHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUb3J1c0dlb21ldHJ5O1xcblxcblxcdC8vIFRvcnVzQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBUb3J1c0J1ZmZlckdlb21ldHJ5KCByYWRpdXMsIHR1YmUsIHJhZGlhbFNlZ21lbnRzLCB0dWJ1bGFyU2VnbWVudHMsIGFyYyApIHtcXG5cXG5cXHRcXHRCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1RvcnVzQnVmZmVyR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHR0dWJlOiB0dWJlLFxcblxcdFxcdFxcdHJhZGlhbFNlZ21lbnRzOiByYWRpYWxTZWdtZW50cyxcXG5cXHRcXHRcXHR0dWJ1bGFyU2VnbWVudHM6IHR1YnVsYXJTZWdtZW50cyxcXG5cXHRcXHRcXHRhcmM6IGFyY1xcblxcdFxcdH07XFxuXFxuXFx0XFx0cmFkaXVzID0gcmFkaXVzIHx8IDE7XFxuXFx0XFx0dHViZSA9IHR1YmUgfHwgMC40O1xcblxcdFxcdHJhZGlhbFNlZ21lbnRzID0gTWF0aC5mbG9vciggcmFkaWFsU2VnbWVudHMgKSB8fCA4O1xcblxcdFxcdHR1YnVsYXJTZWdtZW50cyA9IE1hdGguZmxvb3IoIHR1YnVsYXJTZWdtZW50cyApIHx8IDY7XFxuXFx0XFx0YXJjID0gYXJjIHx8IE1hdGguUEkgKiAyO1xcblxcblxcdFxcdC8vIGJ1ZmZlcnNcXG5cXG5cXHRcXHR2YXIgaW5kaWNlcyA9IFtdO1xcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciBub3JtYWxzID0gW107XFxuXFx0XFx0dmFyIHV2cyA9IFtdO1xcblxcblxcdFxcdC8vIGhlbHBlciB2YXJpYWJsZXNcXG5cXG5cXHRcXHR2YXIgY2VudGVyID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgdmVydGV4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgbm9ybWFsID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHR2YXIgaiwgaTtcXG5cXG5cXHRcXHQvLyBnZW5lcmF0ZSB2ZXJ0aWNlcywgbm9ybWFscyBhbmQgdXZzXFxuXFxuXFx0XFx0Zm9yICggaiA9IDA7IGogPD0gcmFkaWFsU2VnbWVudHM7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPD0gdHVidWxhclNlZ21lbnRzOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB1ID0gaSAvIHR1YnVsYXJTZWdtZW50cyAqIGFyYztcXG5cXHRcXHRcXHRcXHR2YXIgdiA9IGogLyByYWRpYWxTZWdtZW50cyAqIE1hdGguUEkgKiAyO1xcblxcblxcdFxcdFxcdFxcdC8vIHZlcnRleFxcblxcblxcdFxcdFxcdFxcdHZlcnRleC54ID0gKCByYWRpdXMgKyB0dWJlICogTWF0aC5jb3MoIHYgKSApICogTWF0aC5jb3MoIHUgKTtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueSA9ICggcmFkaXVzICsgdHViZSAqIE1hdGguY29zKCB2ICkgKSAqIE1hdGguc2luKCB1ICk7XFxuXFx0XFx0XFx0XFx0dmVydGV4LnogPSB0dWJlICogTWF0aC5zaW4oIHYgKTtcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB2ZXJ0ZXgueCwgdmVydGV4LnksIHZlcnRleC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbm9ybWFsXFxuXFxuXFx0XFx0XFx0XFx0Y2VudGVyLnggPSByYWRpdXMgKiBNYXRoLmNvcyggdSApO1xcblxcdFxcdFxcdFxcdGNlbnRlci55ID0gcmFkaXVzICogTWF0aC5zaW4oIHUgKTtcXG5cXHRcXHRcXHRcXHRub3JtYWwuc3ViVmVjdG9ycyggdmVydGV4LCBjZW50ZXIgKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHRcXHRub3JtYWxzLnB1c2goIG5vcm1hbC54LCBub3JtYWwueSwgbm9ybWFsLnogKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyB1dlxcblxcblxcdFxcdFxcdFxcdHV2cy5wdXNoKCBpIC8gdHVidWxhclNlZ21lbnRzICk7XFxuXFx0XFx0XFx0XFx0dXZzLnB1c2goIGogLyByYWRpYWxTZWdtZW50cyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gZ2VuZXJhdGUgaW5kaWNlc1xcblxcblxcdFxcdGZvciAoIGogPSAxOyBqIDw9IHJhZGlhbFNlZ21lbnRzOyBqICsrICkge1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAxOyBpIDw9IHR1YnVsYXJTZWdtZW50czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBpbmRpY2VzXFxuXFxuXFx0XFx0XFx0XFx0dmFyIGEgPSAoIHR1YnVsYXJTZWdtZW50cyArIDEgKSAqIGogKyBpIC0gMTtcXG5cXHRcXHRcXHRcXHR2YXIgYiA9ICggdHVidWxhclNlZ21lbnRzICsgMSApICogKCBqIC0gMSApICsgaSAtIDE7XFxuXFx0XFx0XFx0XFx0dmFyIGMgPSAoIHR1YnVsYXJTZWdtZW50cyArIDEgKSAqICggaiAtIDEgKSArIGk7XFxuXFx0XFx0XFx0XFx0dmFyIGQgPSAoIHR1YnVsYXJTZWdtZW50cyArIDEgKSAqIGogKyBpO1xcblxcblxcdFxcdFxcdFxcdC8vIGZhY2VzXFxuXFxuXFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBhLCBiLCBkICk7XFxuXFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBiLCBjLCBkICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBidWlsZCBnZW9tZXRyeVxcblxcblxcdFxcdHRoaXMuc2V0SW5kZXgoIGluZGljZXMgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHZlcnRpY2VzLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ25vcm1hbCcsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBub3JtYWxzLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3V2JywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHV2cywgMiApICk7XFxuXFxuXFx0fVxcblxcblxcdFRvcnVzQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0VG9ydXNCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUb3J1c0J1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICogUG9ydCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvZWFyY3V0ICh2Mi4xLjIpXFxuXFx0ICovXFxuXFxuXFx0dmFyIEVhcmN1dCA9IHtcXG5cXG5cXHRcXHR0cmlhbmd1bGF0ZTogZnVuY3Rpb24gKCBkYXRhLCBob2xlSW5kaWNlcywgZGltICkge1xcblxcblxcdFxcdFxcdGRpbSA9IGRpbSB8fCAyO1xcblxcblxcdFxcdFxcdHZhciBoYXNIb2xlcyA9IGhvbGVJbmRpY2VzICYmIGhvbGVJbmRpY2VzLmxlbmd0aCxcXG5cXHRcXHRcXHRcXHRvdXRlckxlbiA9IGhhc0hvbGVzID8gaG9sZUluZGljZXNbIDAgXSAqIGRpbSA6IGRhdGEubGVuZ3RoLFxcblxcdFxcdFxcdFxcdG91dGVyTm9kZSA9IGxpbmtlZExpc3QoIGRhdGEsIDAsIG91dGVyTGVuLCBkaW0sIHRydWUgKSxcXG5cXHRcXHRcXHRcXHR0cmlhbmdsZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRpZiAoICEgb3V0ZXJOb2RlICkgcmV0dXJuIHRyaWFuZ2xlcztcXG5cXG5cXHRcXHRcXHR2YXIgbWluWCwgbWluWSwgbWF4WCwgbWF4WSwgeCwgeSwgaW52U2l6ZTtcXG5cXG5cXHRcXHRcXHRpZiAoIGhhc0hvbGVzICkgb3V0ZXJOb2RlID0gZWxpbWluYXRlSG9sZXMoIGRhdGEsIGhvbGVJbmRpY2VzLCBvdXRlck5vZGUsIGRpbSApO1xcblxcblxcdFxcdFxcdC8vIGlmIHRoZSBzaGFwZSBpcyBub3QgdG9vIHNpbXBsZSwgd2UnbGwgdXNlIHotb3JkZXIgY3VydmUgaGFzaCBsYXRlcjsgY2FsY3VsYXRlIHBvbHlnb24gYmJveFxcblxcblxcdFxcdFxcdGlmICggZGF0YS5sZW5ndGggPiA4MCAqIGRpbSApIHtcXG5cXG5cXHRcXHRcXHRcXHRtaW5YID0gbWF4WCA9IGRhdGFbIDAgXTtcXG5cXHRcXHRcXHRcXHRtaW5ZID0gbWF4WSA9IGRhdGFbIDEgXTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IGRpbTsgaSA8IG91dGVyTGVuOyBpICs9IGRpbSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR4ID0gZGF0YVsgaSBdO1xcblxcdFxcdFxcdFxcdFxcdHkgPSBkYXRhWyBpICsgMSBdO1xcblxcdFxcdFxcdFxcdFxcdGlmICggeCA8IG1pblggKSBtaW5YID0geDtcXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHkgPCBtaW5ZICkgbWluWSA9IHk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB4ID4gbWF4WCApIG1heFggPSB4O1xcblxcdFxcdFxcdFxcdFxcdGlmICggeSA+IG1heFkgKSBtYXhZID0geTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbWluWCwgbWluWSBhbmQgaW52U2l6ZSBhcmUgbGF0ZXIgdXNlZCB0byB0cmFuc2Zvcm0gY29vcmRzIGludG8gaW50ZWdlcnMgZm9yIHotb3JkZXIgY2FsY3VsYXRpb25cXG5cXG5cXHRcXHRcXHRcXHRpbnZTaXplID0gTWF0aC5tYXgoIG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSApO1xcblxcdFxcdFxcdFxcdGludlNpemUgPSBpbnZTaXplICE9PSAwID8gMSAvIGludlNpemUgOiAwO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRlYXJjdXRMaW5rZWQoIG91dGVyTm9kZSwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIGludlNpemUgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdHJpYW5nbGVzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdC8vIGNyZWF0ZSBhIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdCBmcm9tIHBvbHlnb24gcG9pbnRzIGluIHRoZSBzcGVjaWZpZWQgd2luZGluZyBvcmRlclxcblxcblxcdGZ1bmN0aW9uIGxpbmtlZExpc3QoIGRhdGEsIHN0YXJ0LCBlbmQsIGRpbSwgY2xvY2t3aXNlICkge1xcblxcblxcdFxcdHZhciBpLCBsYXN0O1xcblxcblxcdFxcdGlmICggY2xvY2t3aXNlID09PSAoIHNpZ25lZEFyZWEoIGRhdGEsIHN0YXJ0LCBlbmQsIGRpbSApID4gMCApICkge1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBkaW0gKSBsYXN0ID0gaW5zZXJ0Tm9kZSggaSwgZGF0YVsgaSBdLCBkYXRhWyBpICsgMSBdLCBsYXN0ICk7XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gZW5kIC0gZGltOyBpID49IHN0YXJ0OyBpIC09IGRpbSApIGxhc3QgPSBpbnNlcnROb2RlKCBpLCBkYXRhWyBpIF0sIGRhdGFbIGkgKyAxIF0sIGxhc3QgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aWYgKCBsYXN0ICYmIGVxdWFscyggbGFzdCwgbGFzdC5uZXh0ICkgKSB7XFxuXFxuXFx0XFx0XFx0cmVtb3ZlTm9kZSggbGFzdCApO1xcblxcdFxcdFxcdGxhc3QgPSBsYXN0Lm5leHQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiBsYXN0O1xcblxcblxcdH1cXG5cXG5cXHQvLyBlbGltaW5hdGUgY29saW5lYXIgb3IgZHVwbGljYXRlIHBvaW50c1xcblxcblxcdGZ1bmN0aW9uIGZpbHRlclBvaW50cyggc3RhcnQsIGVuZCApIHtcXG5cXG5cXHRcXHRpZiAoICEgc3RhcnQgKSByZXR1cm4gc3RhcnQ7XFxuXFx0XFx0aWYgKCAhIGVuZCApIGVuZCA9IHN0YXJ0O1xcblxcblxcdFxcdHZhciBwID0gc3RhcnQsIGFnYWluO1xcblxcblxcdFxcdGRvIHtcXG5cXG5cXHRcXHRcXHRhZ2FpbiA9IGZhbHNlO1xcblxcblxcdFxcdFxcdGlmICggISBwLnN0ZWluZXIgJiYgKCBlcXVhbHMoIHAsIHAubmV4dCApIHx8IGFyZWEoIHAucHJldiwgcCwgcC5uZXh0ICkgPT09IDAgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZW1vdmVOb2RlKCBwICk7XFxuXFx0XFx0XFx0XFx0cCA9IGVuZCA9IHAucHJldjtcXG5cXHRcXHRcXHRcXHRpZiAoIHAgPT09IHAubmV4dCApIGJyZWFrO1xcblxcdFxcdFxcdFxcdGFnYWluID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHAgPSBwLm5leHQ7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0gd2hpbGUgKCBhZ2FpbiB8fCBwICE9PSBlbmQgKTtcXG5cXG5cXHRcXHRyZXR1cm4gZW5kO1xcblxcblxcdH1cXG5cXG5cXHQvLyBtYWluIGVhciBzbGljaW5nIGxvb3Agd2hpY2ggdHJpYW5ndWxhdGVzIGEgcG9seWdvbiAoZ2l2ZW4gYXMgYSBsaW5rZWQgbGlzdClcXG5cXG5cXHRmdW5jdGlvbiBlYXJjdXRMaW5rZWQoIGVhciwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIGludlNpemUsIHBhc3MgKSB7XFxuXFxuXFx0XFx0aWYgKCAhIGVhciApIHJldHVybjtcXG5cXG5cXHRcXHQvLyBpbnRlcmxpbmsgcG9seWdvbiBub2RlcyBpbiB6LW9yZGVyXFxuXFxuXFx0XFx0aWYgKCAhIHBhc3MgJiYgaW52U2l6ZSApIGluZGV4Q3VydmUoIGVhciwgbWluWCwgbWluWSwgaW52U2l6ZSApO1xcblxcblxcdFxcdHZhciBzdG9wID0gZWFyLCBwcmV2LCBuZXh0O1xcblxcblxcdFxcdC8vIGl0ZXJhdGUgdGhyb3VnaCBlYXJzLCBzbGljaW5nIHRoZW0gb25lIGJ5IG9uZVxcblxcblxcdFxcdHdoaWxlICggZWFyLnByZXYgIT09IGVhci5uZXh0ICkge1xcblxcblxcdFxcdFxcdHByZXYgPSBlYXIucHJldjtcXG5cXHRcXHRcXHRuZXh0ID0gZWFyLm5leHQ7XFxuXFxuXFx0XFx0XFx0aWYgKCBpbnZTaXplID8gaXNFYXJIYXNoZWQoIGVhciwgbWluWCwgbWluWSwgaW52U2l6ZSApIDogaXNFYXIoIGVhciApICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGN1dCBvZmYgdGhlIHRyaWFuZ2xlXFxuXFx0XFx0XFx0XFx0dHJpYW5nbGVzLnB1c2goIHByZXYuaSAvIGRpbSApO1xcblxcdFxcdFxcdFxcdHRyaWFuZ2xlcy5wdXNoKCBlYXIuaSAvIGRpbSApO1xcblxcdFxcdFxcdFxcdHRyaWFuZ2xlcy5wdXNoKCBuZXh0LmkgLyBkaW0gKTtcXG5cXG5cXHRcXHRcXHRcXHRyZW1vdmVOb2RlKCBlYXIgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBza2lwcGluZyB0aGUgbmV4dCB2ZXJ0aWNlIGxlYWRzIHRvIGxlc3Mgc2xpdmVyIHRyaWFuZ2xlc1xcblxcdFxcdFxcdFxcdGVhciA9IG5leHQubmV4dDtcXG5cXHRcXHRcXHRcXHRzdG9wID0gbmV4dC5uZXh0O1xcblxcblxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRlYXIgPSBuZXh0O1xcblxcblxcdFxcdFxcdC8vIGlmIHdlIGxvb3BlZCB0aHJvdWdoIHRoZSB3aG9sZSByZW1haW5pbmcgcG9seWdvbiBhbmQgY2FuJ3QgZmluZCBhbnkgbW9yZSBlYXJzXFxuXFxuXFx0XFx0XFx0aWYgKCBlYXIgPT09IHN0b3AgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdHJ5IGZpbHRlcmluZyBwb2ludHMgYW5kIHNsaWNpbmcgYWdhaW5cXG5cXG5cXHRcXHRcXHRcXHRpZiAoICEgcGFzcyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRlYXJjdXRMaW5rZWQoIGZpbHRlclBvaW50cyggZWFyICksIHRyaWFuZ2xlcywgZGltLCBtaW5YLCBtaW5ZLCBpbnZTaXplLCAxICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gaWYgdGhpcyBkaWRuJ3Qgd29yaywgdHJ5IGN1cmluZyBhbGwgc21hbGwgc2VsZi1pbnRlcnNlY3Rpb25zIGxvY2FsbHlcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBwYXNzID09PSAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGVhciA9IGN1cmVMb2NhbEludGVyc2VjdGlvbnMoIGVhciwgdHJpYW5nbGVzLCBkaW0gKTtcXG5cXHRcXHRcXHRcXHRcXHRlYXJjdXRMaW5rZWQoIGVhciwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIGludlNpemUsIDIgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBhcyBhIGxhc3QgcmVzb3J0LCB0cnkgc3BsaXR0aW5nIHRoZSByZW1haW5pbmcgcG9seWdvbiBpbnRvIHR3b1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIHBhc3MgPT09IDIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3BsaXRFYXJjdXQoIGVhciwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIGludlNpemUgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9XFxuXFxuXFx0Ly8gY2hlY2sgd2hldGhlciBhIHBvbHlnb24gbm9kZSBmb3JtcyBhIHZhbGlkIGVhciB3aXRoIGFkamFjZW50IG5vZGVzXFxuXFxuXFx0ZnVuY3Rpb24gaXNFYXIoIGVhciApIHtcXG5cXG5cXHRcXHR2YXIgYSA9IGVhci5wcmV2LFxcblxcdFxcdFxcdGIgPSBlYXIsXFxuXFx0XFx0XFx0YyA9IGVhci5uZXh0O1xcblxcblxcdFxcdGlmICggYXJlYSggYSwgYiwgYyApID49IDAgKSByZXR1cm4gZmFsc2U7IC8vIHJlZmxleCwgY2FuJ3QgYmUgYW4gZWFyXFxuXFxuXFx0XFx0Ly8gbm93IG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIG90aGVyIHBvaW50cyBpbnNpZGUgdGhlIHBvdGVudGlhbCBlYXJcXG5cXHRcXHR2YXIgcCA9IGVhci5uZXh0Lm5leHQ7XFxuXFxuXFx0XFx0d2hpbGUgKCBwICE9PSBlYXIucHJldiApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHBvaW50SW5UcmlhbmdsZSggYS54LCBhLnksIGIueCwgYi55LCBjLngsIGMueSwgcC54LCBwLnkgKSAmJiBhcmVhKCBwLnByZXYsIHAsIHAubmV4dCApID49IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRwID0gcC5uZXh0O1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gdHJ1ZTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gaXNFYXJIYXNoZWQoIGVhciwgbWluWCwgbWluWSwgaW52U2l6ZSApIHtcXG5cXG5cXHRcXHR2YXIgYSA9IGVhci5wcmV2LFxcblxcdFxcdFxcdGIgPSBlYXIsXFxuXFx0XFx0XFx0YyA9IGVhci5uZXh0O1xcblxcblxcdFxcdGlmICggYXJlYSggYSwgYiwgYyApID49IDAgKSByZXR1cm4gZmFsc2U7IC8vIHJlZmxleCwgY2FuJ3QgYmUgYW4gZWFyXFxuXFxuXFx0XFx0Ly8gdHJpYW5nbGUgYmJveDsgbWluICYgbWF4IGFyZSBjYWxjdWxhdGVkIGxpa2UgdGhpcyBmb3Igc3BlZWRcXG5cXG5cXHRcXHR2YXIgbWluVFggPSBhLnggPCBiLnggPyAoIGEueCA8IGMueCA/IGEueCA6IGMueCApIDogKCBiLnggPCBjLnggPyBiLnggOiBjLnggKSxcXG5cXHRcXHRcXHRtaW5UWSA9IGEueSA8IGIueSA/ICggYS55IDwgYy55ID8gYS55IDogYy55ICkgOiAoIGIueSA8IGMueSA/IGIueSA6IGMueSApLFxcblxcdFxcdFxcdG1heFRYID0gYS54ID4gYi54ID8gKCBhLnggPiBjLnggPyBhLnggOiBjLnggKSA6ICggYi54ID4gYy54ID8gYi54IDogYy54ICksXFxuXFx0XFx0XFx0bWF4VFkgPSBhLnkgPiBiLnkgPyAoIGEueSA+IGMueSA/IGEueSA6IGMueSApIDogKCBiLnkgPiBjLnkgPyBiLnkgOiBjLnkgKTtcXG5cXG5cXHRcXHQvLyB6LW9yZGVyIHJhbmdlIGZvciB0aGUgY3VycmVudCB0cmlhbmdsZSBiYm94O1xcblxcblxcdFxcdHZhciBtaW5aID0gek9yZGVyKCBtaW5UWCwgbWluVFksIG1pblgsIG1pblksIGludlNpemUgKSxcXG5cXHRcXHRcXHRtYXhaID0gek9yZGVyKCBtYXhUWCwgbWF4VFksIG1pblgsIG1pblksIGludlNpemUgKTtcXG5cXG5cXHRcXHQvLyBmaXJzdCBsb29rIGZvciBwb2ludHMgaW5zaWRlIHRoZSB0cmlhbmdsZSBpbiBpbmNyZWFzaW5nIHotb3JkZXJcXG5cXG5cXHRcXHR2YXIgcCA9IGVhci5uZXh0WjtcXG5cXG5cXHRcXHR3aGlsZSAoIHAgJiYgcC56IDw9IG1heFogKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBwICE9PSBlYXIucHJldiAmJiBwICE9PSBlYXIubmV4dCAmJlxcblxcdFxcdFxcdFxcdFxcdHBvaW50SW5UcmlhbmdsZSggYS54LCBhLnksIGIueCwgYi55LCBjLngsIGMueSwgcC54LCBwLnkgKSAmJlxcblxcdFxcdFxcdFxcdFxcdGFyZWEoIHAucHJldiwgcCwgcC5uZXh0ICkgPj0gMCApIHJldHVybiBmYWxzZTtcXG5cXHRcXHRcXHRwID0gcC5uZXh0WjtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gdGhlbiBsb29rIGZvciBwb2ludHMgaW4gZGVjcmVhc2luZyB6LW9yZGVyXFxuXFxuXFx0XFx0cCA9IGVhci5wcmV2WjtcXG5cXG5cXHRcXHR3aGlsZSAoIHAgJiYgcC56ID49IG1pblogKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBwICE9PSBlYXIucHJldiAmJiBwICE9PSBlYXIubmV4dCAmJlxcblxcdFxcdFxcdFxcdFxcdHBvaW50SW5UcmlhbmdsZSggYS54LCBhLnksIGIueCwgYi55LCBjLngsIGMueSwgcC54LCBwLnkgKSAmJlxcblxcdFxcdFxcdFxcdFxcdGFyZWEoIHAucHJldiwgcCwgcC5uZXh0ICkgPj0gMCApIHJldHVybiBmYWxzZTtcXG5cXG5cXHRcXHRcXHRwID0gcC5wcmV2WjtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIHRydWU7XFxuXFxuXFx0fVxcblxcblxcdC8vIGdvIHRocm91Z2ggYWxsIHBvbHlnb24gbm9kZXMgYW5kIGN1cmUgc21hbGwgbG9jYWwgc2VsZi1pbnRlcnNlY3Rpb25zXFxuXFxuXFx0ZnVuY3Rpb24gY3VyZUxvY2FsSW50ZXJzZWN0aW9ucyggc3RhcnQsIHRyaWFuZ2xlcywgZGltICkge1xcblxcblxcdFxcdHZhciBwID0gc3RhcnQ7XFxuXFxuXFx0XFx0ZG8ge1xcblxcblxcdFxcdFxcdHZhciBhID0gcC5wcmV2LCBiID0gcC5uZXh0Lm5leHQ7XFxuXFxuXFx0XFx0XFx0aWYgKCAhIGVxdWFscyggYSwgYiApICYmIGludGVyc2VjdHMoIGEsIHAsIHAubmV4dCwgYiApICYmIGxvY2FsbHlJbnNpZGUoIGEsIGIgKSAmJiBsb2NhbGx5SW5zaWRlKCBiLCBhICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dHJpYW5nbGVzLnB1c2goIGEuaSAvIGRpbSApO1xcblxcdFxcdFxcdFxcdHRyaWFuZ2xlcy5wdXNoKCBwLmkgLyBkaW0gKTtcXG5cXHRcXHRcXHRcXHR0cmlhbmdsZXMucHVzaCggYi5pIC8gZGltICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gcmVtb3ZlIHR3byBub2RlcyBpbnZvbHZlZFxcblxcblxcdFxcdFxcdFxcdHJlbW92ZU5vZGUoIHAgKTtcXG5cXHRcXHRcXHRcXHRyZW1vdmVOb2RlKCBwLm5leHQgKTtcXG5cXG5cXHRcXHRcXHRcXHRwID0gc3RhcnQgPSBiO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRwID0gcC5uZXh0O1xcblxcblxcdFxcdH0gd2hpbGUgKCBwICE9PSBzdGFydCApO1xcblxcblxcdFxcdHJldHVybiBwO1xcblxcblxcdH1cXG5cXG5cXHQvLyB0cnkgc3BsaXR0aW5nIHBvbHlnb24gaW50byB0d28gYW5kIHRyaWFuZ3VsYXRlIHRoZW0gaW5kZXBlbmRlbnRseVxcblxcblxcdGZ1bmN0aW9uIHNwbGl0RWFyY3V0KCBzdGFydCwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIGludlNpemUgKSB7XFxuXFxuXFx0XFx0Ly8gbG9vayBmb3IgYSB2YWxpZCBkaWFnb25hbCB0aGF0IGRpdmlkZXMgdGhlIHBvbHlnb24gaW50byB0d29cXG5cXG5cXHRcXHR2YXIgYSA9IHN0YXJ0O1xcblxcblxcdFxcdGRvIHtcXG5cXG5cXHRcXHRcXHR2YXIgYiA9IGEubmV4dC5uZXh0O1xcblxcblxcdFxcdFxcdHdoaWxlICggYiAhPT0gYS5wcmV2ICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggYS5pICE9PSBiLmkgJiYgaXNWYWxpZERpYWdvbmFsKCBhLCBiICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gc3BsaXQgdGhlIHBvbHlnb24gaW4gdHdvIGJ5IHRoZSBkaWFnb25hbFxcblxcblxcdFxcdFxcdFxcdFxcdHZhciBjID0gc3BsaXRQb2x5Z29uKCBhLCBiICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gZmlsdGVyIGNvbGluZWFyIHBvaW50cyBhcm91bmQgdGhlIGN1dHNcXG5cXG5cXHRcXHRcXHRcXHRcXHRhID0gZmlsdGVyUG9pbnRzKCBhLCBhLm5leHQgKTtcXG5cXHRcXHRcXHRcXHRcXHRjID0gZmlsdGVyUG9pbnRzKCBjLCBjLm5leHQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBydW4gZWFyY3V0IG9uIGVhY2ggaGFsZlxcblxcblxcdFxcdFxcdFxcdFxcdGVhcmN1dExpbmtlZCggYSwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIGludlNpemUgKTtcXG5cXHRcXHRcXHRcXHRcXHRlYXJjdXRMaW5rZWQoIGMsIHRyaWFuZ2xlcywgZGltLCBtaW5YLCBtaW5ZLCBpbnZTaXplICk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRiID0gYi5uZXh0O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRhID0gYS5uZXh0O1xcblxcblxcdFxcdH0gd2hpbGUgKCBhICE9PSBzdGFydCApO1xcblxcblxcdH1cXG5cXG5cXHQvLyBsaW5rIGV2ZXJ5IGhvbGUgaW50byB0aGUgb3V0ZXIgbG9vcCwgcHJvZHVjaW5nIGEgc2luZ2xlLXJpbmcgcG9seWdvbiB3aXRob3V0IGhvbGVzXFxuXFxuXFx0ZnVuY3Rpb24gZWxpbWluYXRlSG9sZXMoIGRhdGEsIGhvbGVJbmRpY2VzLCBvdXRlck5vZGUsIGRpbSApIHtcXG5cXG5cXHRcXHR2YXIgcXVldWUgPSBbXSwgaSwgbGVuLCBzdGFydCwgZW5kLCBsaXN0O1xcblxcblxcdFxcdGZvciAoIGkgPSAwLCBsZW4gPSBob2xlSW5kaWNlcy5sZW5ndGg7IGkgPCBsZW47IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0c3RhcnQgPSBob2xlSW5kaWNlc1sgaSBdICogZGltO1xcblxcdFxcdFxcdGVuZCA9IGkgPCBsZW4gLSAxID8gaG9sZUluZGljZXNbIGkgKyAxIF0gKiBkaW0gOiBkYXRhLmxlbmd0aDtcXG5cXHRcXHRcXHRsaXN0ID0gbGlua2VkTGlzdCggZGF0YSwgc3RhcnQsIGVuZCwgZGltLCBmYWxzZSApO1xcblxcdFxcdFxcdGlmICggbGlzdCA9PT0gbGlzdC5uZXh0ICkgbGlzdC5zdGVpbmVyID0gdHJ1ZTtcXG5cXHRcXHRcXHRxdWV1ZS5wdXNoKCBnZXRMZWZ0bW9zdCggbGlzdCApICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHF1ZXVlLnNvcnQoIGNvbXBhcmVYICk7XFxuXFxuXFx0XFx0Ly8gcHJvY2VzcyBob2xlcyBmcm9tIGxlZnQgdG8gcmlnaHRcXG5cXG5cXHRcXHRmb3IgKCBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRlbGltaW5hdGVIb2xlKCBxdWV1ZVsgaSBdLCBvdXRlck5vZGUgKTtcXG5cXHRcXHRcXHRvdXRlck5vZGUgPSBmaWx0ZXJQb2ludHMoIG91dGVyTm9kZSwgb3V0ZXJOb2RlLm5leHQgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIG91dGVyTm9kZTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gY29tcGFyZVgoIGEsIGIgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIGEueCAtIGIueDtcXG5cXG5cXHR9XFxuXFxuXFx0Ly8gZmluZCBhIGJyaWRnZSBiZXR3ZWVuIHZlcnRpY2VzIHRoYXQgY29ubmVjdHMgaG9sZSB3aXRoIGFuIG91dGVyIHJpbmcgYW5kIGFuZCBsaW5rIGl0XFxuXFxuXFx0ZnVuY3Rpb24gZWxpbWluYXRlSG9sZSggaG9sZSwgb3V0ZXJOb2RlICkge1xcblxcblxcdFxcdG91dGVyTm9kZSA9IGZpbmRIb2xlQnJpZGdlKCBob2xlLCBvdXRlck5vZGUgKTtcXG5cXG5cXHRcXHRpZiAoIG91dGVyTm9kZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYiA9IHNwbGl0UG9seWdvbiggb3V0ZXJOb2RlLCBob2xlICk7XFxuXFxuXFx0XFx0XFx0ZmlsdGVyUG9pbnRzKCBiLCBiLm5leHQgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdC8vIERhdmlkIEViZXJseSdzIGFsZ29yaXRobSBmb3IgZmluZGluZyBhIGJyaWRnZSBiZXR3ZWVuIGhvbGUgYW5kIG91dGVyIHBvbHlnb25cXG5cXG5cXHRmdW5jdGlvbiBmaW5kSG9sZUJyaWRnZSggaG9sZSwgb3V0ZXJOb2RlICkge1xcblxcblxcdFxcdHZhciBwID0gb3V0ZXJOb2RlLFxcblxcdFxcdFxcdGh4ID0gaG9sZS54LFxcblxcdFxcdFxcdGh5ID0gaG9sZS55LFxcblxcdFxcdFxcdHF4ID0gLSBJbmZpbml0eSxcXG5cXHRcXHRcXHRtO1xcblxcblxcdFxcdC8vIGZpbmQgYSBzZWdtZW50IGludGVyc2VjdGVkIGJ5IGEgcmF5IGZyb20gdGhlIGhvbGUncyBsZWZ0bW9zdCBwb2ludCB0byB0aGUgbGVmdDtcXG5cXHRcXHQvLyBzZWdtZW50J3MgZW5kcG9pbnQgd2l0aCBsZXNzZXIgeCB3aWxsIGJlIHBvdGVudGlhbCBjb25uZWN0aW9uIHBvaW50XFxuXFxuXFx0XFx0ZG8ge1xcblxcblxcdFxcdFxcdGlmICggaHkgPD0gcC55ICYmIGh5ID49IHAubmV4dC55ICYmIHAubmV4dC55ICE9PSBwLnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHggPSBwLnggKyAoIGh5IC0gcC55ICkgKiAoIHAubmV4dC54IC0gcC54ICkgLyAoIHAubmV4dC55IC0gcC55ICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB4IDw9IGh4ICYmIHggPiBxeCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRxeCA9IHg7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB4ID09PSBoeCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGh5ID09PSBwLnkgKSByZXR1cm4gcDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGh5ID09PSBwLm5leHQueSApIHJldHVybiBwLm5leHQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdG0gPSBwLnggPCBwLm5leHQueCA/IHAgOiBwLm5leHQ7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRwID0gcC5uZXh0O1xcblxcblxcdFxcdH0gd2hpbGUgKCBwICE9PSBvdXRlck5vZGUgKTtcXG5cXG5cXHRcXHRpZiAoICEgbSApIHJldHVybiBudWxsO1xcblxcblxcdFxcdGlmICggaHggPT09IHF4ICkgcmV0dXJuIG0ucHJldjsgLy8gaG9sZSB0b3VjaGVzIG91dGVyIHNlZ21lbnQ7IHBpY2sgbG93ZXIgZW5kcG9pbnRcXG5cXG5cXHRcXHQvLyBsb29rIGZvciBwb2ludHMgaW5zaWRlIHRoZSB0cmlhbmdsZSBvZiBob2xlIHBvaW50LCBzZWdtZW50IGludGVyc2VjdGlvbiBhbmQgZW5kcG9pbnQ7XFxuXFx0XFx0Ly8gaWYgdGhlcmUgYXJlIG5vIHBvaW50cyBmb3VuZCwgd2UgaGF2ZSBhIHZhbGlkIGNvbm5lY3Rpb247XFxuXFx0XFx0Ly8gb3RoZXJ3aXNlIGNob29zZSB0aGUgcG9pbnQgb2YgdGhlIG1pbmltdW0gYW5nbGUgd2l0aCB0aGUgcmF5IGFzIGNvbm5lY3Rpb24gcG9pbnRcXG5cXG5cXHRcXHR2YXIgc3RvcCA9IG0sXFxuXFx0XFx0XFx0bXggPSBtLngsXFxuXFx0XFx0XFx0bXkgPSBtLnksXFxuXFx0XFx0XFx0dGFuTWluID0gSW5maW5pdHksXFxuXFx0XFx0XFx0dGFuO1xcblxcblxcdFxcdHAgPSBtLm5leHQ7XFxuXFxuXFx0XFx0d2hpbGUgKCBwICE9PSBzdG9wICkge1xcblxcblxcdFxcdFxcdGlmICggaHggPj0gcC54ICYmIHAueCA+PSBteCAmJiBoeCAhPT0gcC54ICYmXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cG9pbnRJblRyaWFuZ2xlKCBoeSA8IG15ID8gaHggOiBxeCwgaHksIG14LCBteSwgaHkgPCBteSA/IHF4IDogaHgsIGh5LCBwLngsIHAueSApICkge1xcblxcblxcdFxcdFxcdFxcdHRhbiA9IE1hdGguYWJzKCBoeSAtIHAueSApIC8gKCBoeCAtIHAueCApOyAvLyB0YW5nZW50aWFsXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCAoIHRhbiA8IHRhbk1pbiB8fCAoIHRhbiA9PT0gdGFuTWluICYmIHAueCA+IG0ueCApICkgJiYgbG9jYWxseUluc2lkZSggcCwgaG9sZSApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdG0gPSBwO1xcblxcdFxcdFxcdFxcdFxcdHRhbk1pbiA9IHRhbjtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHAgPSBwLm5leHQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiBtO1xcblxcblxcdH1cXG5cXG5cXHQvLyBpbnRlcmxpbmsgcG9seWdvbiBub2RlcyBpbiB6LW9yZGVyXFxuXFxuXFx0ZnVuY3Rpb24gaW5kZXhDdXJ2ZSggc3RhcnQsIG1pblgsIG1pblksIGludlNpemUgKSB7XFxuXFxuXFx0XFx0dmFyIHAgPSBzdGFydDtcXG5cXG5cXHRcXHRkbyB7XFxuXFxuXFx0XFx0XFx0aWYgKCBwLnogPT09IG51bGwgKSBwLnogPSB6T3JkZXIoIHAueCwgcC55LCBtaW5YLCBtaW5ZLCBpbnZTaXplICk7XFxuXFx0XFx0XFx0cC5wcmV2WiA9IHAucHJldjtcXG5cXHRcXHRcXHRwLm5leHRaID0gcC5uZXh0O1xcblxcdFxcdFxcdHAgPSBwLm5leHQ7XFxuXFxuXFx0XFx0fSB3aGlsZSAoIHAgIT09IHN0YXJ0ICk7XFxuXFxuXFx0XFx0cC5wcmV2Wi5uZXh0WiA9IG51bGw7XFxuXFx0XFx0cC5wcmV2WiA9IG51bGw7XFxuXFxuXFx0XFx0c29ydExpbmtlZCggcCApO1xcblxcblxcdH1cXG5cXG5cXHQvLyBTaW1vbiBUYXRoYW0ncyBsaW5rZWQgbGlzdCBtZXJnZSBzb3J0IGFsZ29yaXRobVxcblxcdC8vIGh0dHA6Ly93d3cuY2hpYXJrLmdyZWVuZW5kLm9yZy51ay9+c2d0YXRoYW0vYWxnb3JpdGhtcy9saXN0c29ydC5odG1sXFxuXFxuXFx0ZnVuY3Rpb24gc29ydExpbmtlZCggbGlzdCApIHtcXG5cXG5cXHRcXHR2YXIgaSwgcCwgcSwgZSwgdGFpbCwgbnVtTWVyZ2VzLCBwU2l6ZSwgcVNpemUsIGluU2l6ZSA9IDE7XFxuXFxuXFx0XFx0ZG8ge1xcblxcblxcdFxcdFxcdHAgPSBsaXN0O1xcblxcdFxcdFxcdGxpc3QgPSBudWxsO1xcblxcdFxcdFxcdHRhaWwgPSBudWxsO1xcblxcdFxcdFxcdG51bU1lcmdlcyA9IDA7XFxuXFxuXFx0XFx0XFx0d2hpbGUgKCBwICkge1xcblxcblxcdFxcdFxcdFxcdG51bU1lcmdlcyArKztcXG5cXHRcXHRcXHRcXHRxID0gcDtcXG5cXHRcXHRcXHRcXHRwU2l6ZSA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPCBpblNpemU7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cFNpemUgKys7XFxuXFx0XFx0XFx0XFx0XFx0cSA9IHEubmV4dFo7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCAhIHEgKSBicmVhaztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cVNpemUgPSBpblNpemU7XFxuXFxuXFx0XFx0XFx0XFx0d2hpbGUgKCBwU2l6ZSA+IDAgfHwgKCBxU2l6ZSA+IDAgJiYgcSApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggcFNpemUgIT09IDAgJiYgKCBxU2l6ZSA9PT0gMCB8fCAhIHEgfHwgcC56IDw9IHEueiApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGUgPSBwO1xcblxcdFxcdFxcdFxcdFxcdFxcdHAgPSBwLm5leHRaO1xcblxcdFxcdFxcdFxcdFxcdFxcdHBTaXplIC0tO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZSA9IHE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cSA9IHEubmV4dFo7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cVNpemUgLS07XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGlmICggdGFpbCApIHRhaWwubmV4dFogPSBlO1xcblxcdFxcdFxcdFxcdFxcdGVsc2UgbGlzdCA9IGU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZS5wcmV2WiA9IHRhaWw7XFxuXFx0XFx0XFx0XFx0XFx0dGFpbCA9IGU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHAgPSBxO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0YWlsLm5leHRaID0gbnVsbDtcXG5cXHRcXHRcXHRpblNpemUgKj0gMjtcXG5cXG5cXHRcXHR9IHdoaWxlICggbnVtTWVyZ2VzID4gMSApO1xcblxcblxcdFxcdHJldHVybiBsaXN0O1xcblxcblxcdH1cXG5cXG5cXHQvLyB6LW9yZGVyIG9mIGEgcG9pbnQgZ2l2ZW4gY29vcmRzIGFuZCBpbnZlcnNlIG9mIHRoZSBsb25nZXIgc2lkZSBvZiBkYXRhIGJib3hcXG5cXG5cXHRmdW5jdGlvbiB6T3JkZXIoIHgsIHksIG1pblgsIG1pblksIGludlNpemUgKSB7XFxuXFxuXFx0XFx0Ly8gY29vcmRzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIG5vbi1uZWdhdGl2ZSAxNS1iaXQgaW50ZWdlciByYW5nZVxcblxcblxcdFxcdHggPSAzMjc2NyAqICggeCAtIG1pblggKSAqIGludlNpemU7XFxuXFx0XFx0eSA9IDMyNzY3ICogKCB5IC0gbWluWSApICogaW52U2l6ZTtcXG5cXG5cXHRcXHR4ID0gKCB4IHwgKCB4IDw8IDggKSApICYgMHgwMEZGMDBGRjtcXG5cXHRcXHR4ID0gKCB4IHwgKCB4IDw8IDQgKSApICYgMHgwRjBGMEYwRjtcXG5cXHRcXHR4ID0gKCB4IHwgKCB4IDw8IDIgKSApICYgMHgzMzMzMzMzMztcXG5cXHRcXHR4ID0gKCB4IHwgKCB4IDw8IDEgKSApICYgMHg1NTU1NTU1NTtcXG5cXG5cXHRcXHR5ID0gKCB5IHwgKCB5IDw8IDggKSApICYgMHgwMEZGMDBGRjtcXG5cXHRcXHR5ID0gKCB5IHwgKCB5IDw8IDQgKSApICYgMHgwRjBGMEYwRjtcXG5cXHRcXHR5ID0gKCB5IHwgKCB5IDw8IDIgKSApICYgMHgzMzMzMzMzMztcXG5cXHRcXHR5ID0gKCB5IHwgKCB5IDw8IDEgKSApICYgMHg1NTU1NTU1NTtcXG5cXG5cXHRcXHRyZXR1cm4geCB8ICggeSA8PCAxICk7XFxuXFxuXFx0fVxcblxcblxcdC8vIGZpbmQgdGhlIGxlZnRtb3N0IG5vZGUgb2YgYSBwb2x5Z29uIHJpbmdcXG5cXG5cXHRmdW5jdGlvbiBnZXRMZWZ0bW9zdCggc3RhcnQgKSB7XFxuXFxuXFx0XFx0dmFyIHAgPSBzdGFydCwgbGVmdG1vc3QgPSBzdGFydDtcXG5cXG5cXHRcXHRkbyB7XFxuXFxuXFx0XFx0XFx0aWYgKCBwLnggPCBsZWZ0bW9zdC54ICkgbGVmdG1vc3QgPSBwO1xcblxcdFxcdFxcdHAgPSBwLm5leHQ7XFxuXFxuXFx0XFx0fSB3aGlsZSAoIHAgIT09IHN0YXJ0ICk7XFxuXFxuXFx0XFx0cmV0dXJuIGxlZnRtb3N0O1xcblxcblxcdH1cXG5cXG5cXHQvLyBjaGVjayBpZiBhIHBvaW50IGxpZXMgd2l0aGluIGEgY29udmV4IHRyaWFuZ2xlXFxuXFxuXFx0ZnVuY3Rpb24gcG9pbnRJblRyaWFuZ2xlKCBheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBweCwgcHkgKSB7XFxuXFxuXFx0XFx0cmV0dXJuICggY3ggLSBweCApICogKCBheSAtIHB5ICkgLSAoIGF4IC0gcHggKSAqICggY3kgLSBweSApID49IDAgJiZcXG5cXHRcXHQgKCBheCAtIHB4ICkgKiAoIGJ5IC0gcHkgKSAtICggYnggLSBweCApICogKCBheSAtIHB5ICkgPj0gMCAmJlxcblxcdFxcdCAoIGJ4IC0gcHggKSAqICggY3kgLSBweSApIC0gKCBjeCAtIHB4ICkgKiAoIGJ5IC0gcHkgKSA+PSAwO1xcblxcblxcdH1cXG5cXG5cXHQvLyBjaGVjayBpZiBhIGRpYWdvbmFsIGJldHdlZW4gdHdvIHBvbHlnb24gbm9kZXMgaXMgdmFsaWQgKGxpZXMgaW4gcG9seWdvbiBpbnRlcmlvcilcXG5cXG5cXHRmdW5jdGlvbiBpc1ZhbGlkRGlhZ29uYWwoIGEsIGIgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIGEubmV4dC5pICE9PSBiLmkgJiYgYS5wcmV2LmkgIT09IGIuaSAmJiAhIGludGVyc2VjdHNQb2x5Z29uKCBhLCBiICkgJiZcXG5cXHRcXHRcXHRsb2NhbGx5SW5zaWRlKCBhLCBiICkgJiYgbG9jYWxseUluc2lkZSggYiwgYSApICYmIG1pZGRsZUluc2lkZSggYSwgYiApO1xcblxcblxcdH1cXG5cXG5cXHQvLyBzaWduZWQgYXJlYSBvZiBhIHRyaWFuZ2xlXFxuXFxuXFx0ZnVuY3Rpb24gYXJlYSggcCwgcSwgciApIHtcXG5cXG5cXHRcXHRyZXR1cm4gKCBxLnkgLSBwLnkgKSAqICggci54IC0gcS54ICkgLSAoIHEueCAtIHAueCApICogKCByLnkgLSBxLnkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0Ly8gY2hlY2sgaWYgdHdvIHBvaW50cyBhcmUgZXF1YWxcXG5cXG5cXHRmdW5jdGlvbiBlcXVhbHMoIHAxLCBwMiApIHtcXG5cXG5cXHRcXHRyZXR1cm4gcDEueCA9PT0gcDIueCAmJiBwMS55ID09PSBwMi55O1xcblxcblxcdH1cXG5cXG5cXHQvLyBjaGVjayBpZiB0d28gc2VnbWVudHMgaW50ZXJzZWN0XFxuXFxuXFx0ZnVuY3Rpb24gaW50ZXJzZWN0cyggcDEsIHExLCBwMiwgcTIgKSB7XFxuXFxuXFx0XFx0aWYgKCAoIGVxdWFscyggcDEsIHExICkgJiYgZXF1YWxzKCBwMiwgcTIgKSApIHx8XFxuXFx0XFx0XFx0XFx0KCBlcXVhbHMoIHAxLCBxMiApICYmIGVxdWFscyggcDIsIHExICkgKSApIHJldHVybiB0cnVlO1xcblxcblxcdFxcdHJldHVybiBhcmVhKCBwMSwgcTEsIHAyICkgPiAwICE9PSBhcmVhKCBwMSwgcTEsIHEyICkgPiAwICYmXFxuXFx0XFx0XFx0XFx0XFx0IGFyZWEoIHAyLCBxMiwgcDEgKSA+IDAgIT09IGFyZWEoIHAyLCBxMiwgcTEgKSA+IDA7XFxuXFxuXFx0fVxcblxcblxcdC8vIGNoZWNrIGlmIGEgcG9seWdvbiBkaWFnb25hbCBpbnRlcnNlY3RzIGFueSBwb2x5Z29uIHNlZ21lbnRzXFxuXFxuXFx0ZnVuY3Rpb24gaW50ZXJzZWN0c1BvbHlnb24oIGEsIGIgKSB7XFxuXFxuXFx0XFx0dmFyIHAgPSBhO1xcblxcblxcdFxcdGRvIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHAuaSAhPT0gYS5pICYmIHAubmV4dC5pICE9PSBhLmkgJiYgcC5pICE9PSBiLmkgJiYgcC5uZXh0LmkgIT09IGIuaSAmJlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGludGVyc2VjdHMoIHAsIHAubmV4dCwgYSwgYiApICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0cnVlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRwID0gcC5uZXh0O1xcblxcblxcdFxcdH0gd2hpbGUgKCBwICE9PSBhICk7XFxuXFxuXFx0XFx0cmV0dXJuIGZhbHNlO1xcblxcblxcdH1cXG5cXG5cXHQvLyBjaGVjayBpZiBhIHBvbHlnb24gZGlhZ29uYWwgaXMgbG9jYWxseSBpbnNpZGUgdGhlIHBvbHlnb25cXG5cXG5cXHRmdW5jdGlvbiBsb2NhbGx5SW5zaWRlKCBhLCBiICkge1xcblxcblxcdFxcdHJldHVybiBhcmVhKCBhLnByZXYsIGEsIGEubmV4dCApIDwgMCA/XFxuXFx0XFx0XFx0YXJlYSggYSwgYiwgYS5uZXh0ICkgPj0gMCAmJiBhcmVhKCBhLCBhLnByZXYsIGIgKSA+PSAwIDpcXG5cXHRcXHRcXHRhcmVhKCBhLCBiLCBhLnByZXYgKSA8IDAgfHwgYXJlYSggYSwgYS5uZXh0LCBiICkgPCAwO1xcblxcblxcdH1cXG5cXG5cXHQvLyBjaGVjayBpZiB0aGUgbWlkZGxlIHBvaW50IG9mIGEgcG9seWdvbiBkaWFnb25hbCBpcyBpbnNpZGUgdGhlIHBvbHlnb25cXG5cXG5cXHRmdW5jdGlvbiBtaWRkbGVJbnNpZGUoIGEsIGIgKSB7XFxuXFxuXFx0XFx0dmFyIHAgPSBhLFxcblxcdFxcdFxcdGluc2lkZSA9IGZhbHNlLFxcblxcdFxcdFxcdHB4ID0gKCBhLnggKyBiLnggKSAvIDIsXFxuXFx0XFx0XFx0cHkgPSAoIGEueSArIGIueSApIC8gMjtcXG5cXG5cXHRcXHRkbyB7XFxuXFxuXFx0XFx0XFx0aWYgKCAoICggcC55ID4gcHkgKSAhPT0gKCBwLm5leHQueSA+IHB5ICkgKSAmJiBwLm5leHQueSAhPT0gcC55ICYmXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0KCBweCA8ICggcC5uZXh0LnggLSBwLnggKSAqICggcHkgLSBwLnkgKSAvICggcC5uZXh0LnkgLSBwLnkgKSArIHAueCApICkge1xcblxcblxcdFxcdFxcdFxcdGluc2lkZSA9ICEgaW5zaWRlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRwID0gcC5uZXh0O1xcblxcblxcdFxcdH0gd2hpbGUgKCBwICE9PSBhICk7XFxuXFxuXFx0XFx0cmV0dXJuIGluc2lkZTtcXG5cXG5cXHR9XFxuXFxuXFx0Ly8gbGluayB0d28gcG9seWdvbiB2ZXJ0aWNlcyB3aXRoIGEgYnJpZGdlOyBpZiB0aGUgdmVydGljZXMgYmVsb25nIHRvIHRoZSBzYW1lIHJpbmcsIGl0IHNwbGl0cyBwb2x5Z29uIGludG8gdHdvO1xcblxcdC8vIGlmIG9uZSBiZWxvbmdzIHRvIHRoZSBvdXRlciByaW5nIGFuZCBhbm90aGVyIHRvIGEgaG9sZSwgaXQgbWVyZ2VzIGl0IGludG8gYSBzaW5nbGUgcmluZ1xcblxcblxcdGZ1bmN0aW9uIHNwbGl0UG9seWdvbiggYSwgYiApIHtcXG5cXG5cXHRcXHR2YXIgYTIgPSBuZXcgTm9kZSggYS5pLCBhLngsIGEueSApLFxcblxcdFxcdFxcdGIyID0gbmV3IE5vZGUoIGIuaSwgYi54LCBiLnkgKSxcXG5cXHRcXHRcXHRhbiA9IGEubmV4dCxcXG5cXHRcXHRcXHRicCA9IGIucHJldjtcXG5cXG5cXHRcXHRhLm5leHQgPSBiO1xcblxcdFxcdGIucHJldiA9IGE7XFxuXFxuXFx0XFx0YTIubmV4dCA9IGFuO1xcblxcdFxcdGFuLnByZXYgPSBhMjtcXG5cXG5cXHRcXHRiMi5uZXh0ID0gYTI7XFxuXFx0XFx0YTIucHJldiA9IGIyO1xcblxcblxcdFxcdGJwLm5leHQgPSBiMjtcXG5cXHRcXHRiMi5wcmV2ID0gYnA7XFxuXFxuXFx0XFx0cmV0dXJuIGIyO1xcblxcblxcdH1cXG5cXG5cXHQvLyBjcmVhdGUgYSBub2RlIGFuZCBvcHRpb25hbGx5IGxpbmsgaXQgd2l0aCBwcmV2aW91cyBvbmUgKGluIGEgY2lyY3VsYXIgZG91Ymx5IGxpbmtlZCBsaXN0KVxcblxcblxcdGZ1bmN0aW9uIGluc2VydE5vZGUoIGksIHgsIHksIGxhc3QgKSB7XFxuXFxuXFx0XFx0dmFyIHAgPSBuZXcgTm9kZSggaSwgeCwgeSApO1xcblxcblxcdFxcdGlmICggISBsYXN0ICkge1xcblxcblxcdFxcdFxcdHAucHJldiA9IHA7XFxuXFx0XFx0XFx0cC5uZXh0ID0gcDtcXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdHAubmV4dCA9IGxhc3QubmV4dDtcXG5cXHRcXHRcXHRwLnByZXYgPSBsYXN0O1xcblxcdFxcdFxcdGxhc3QubmV4dC5wcmV2ID0gcDtcXG5cXHRcXHRcXHRsYXN0Lm5leHQgPSBwO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gcDtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gcmVtb3ZlTm9kZSggcCApIHtcXG5cXG5cXHRcXHRwLm5leHQucHJldiA9IHAucHJldjtcXG5cXHRcXHRwLnByZXYubmV4dCA9IHAubmV4dDtcXG5cXG5cXHRcXHRpZiAoIHAucHJldlogKSBwLnByZXZaLm5leHRaID0gcC5uZXh0WjtcXG5cXHRcXHRpZiAoIHAubmV4dFogKSBwLm5leHRaLnByZXZaID0gcC5wcmV2WjtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gTm9kZSggaSwgeCwgeSApIHtcXG5cXG5cXHRcXHQvLyB2ZXJ0aWNlIGluZGV4IGluIGNvb3JkaW5hdGVzIGFycmF5XFxuXFx0XFx0dGhpcy5pID0gaTtcXG5cXG5cXHRcXHQvLyB2ZXJ0ZXggY29vcmRpbmF0ZXNcXG5cXHRcXHR0aGlzLnggPSB4O1xcblxcdFxcdHRoaXMueSA9IHk7XFxuXFxuXFx0XFx0Ly8gcHJldmlvdXMgYW5kIG5leHQgdmVydGljZSBub2RlcyBpbiBhIHBvbHlnb24gcmluZ1xcblxcdFxcdHRoaXMucHJldiA9IG51bGw7XFxuXFx0XFx0dGhpcy5uZXh0ID0gbnVsbDtcXG5cXG5cXHRcXHQvLyB6LW9yZGVyIGN1cnZlIHZhbHVlXFxuXFx0XFx0dGhpcy56ID0gbnVsbDtcXG5cXG5cXHRcXHQvLyBwcmV2aW91cyBhbmQgbmV4dCBub2RlcyBpbiB6LW9yZGVyXFxuXFx0XFx0dGhpcy5wcmV2WiA9IG51bGw7XFxuXFx0XFx0dGhpcy5uZXh0WiA9IG51bGw7XFxuXFxuXFx0XFx0Ly8gaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBpcyBhIHN0ZWluZXIgcG9pbnRcXG5cXHRcXHR0aGlzLnN0ZWluZXIgPSBmYWxzZTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gc2lnbmVkQXJlYSggZGF0YSwgc3RhcnQsIGVuZCwgZGltICkge1xcblxcblxcdFxcdHZhciBzdW0gPSAwO1xcblxcblxcdFxcdGZvciAoIHZhciBpID0gc3RhcnQsIGogPSBlbmQgLSBkaW07IGkgPCBlbmQ7IGkgKz0gZGltICkge1xcblxcblxcdFxcdFxcdHN1bSArPSAoIGRhdGFbIGogXSAtIGRhdGFbIGkgXSApICogKCBkYXRhWyBpICsgMSBdICsgZGF0YVsgaiArIDEgXSApO1xcblxcdFxcdFxcdGogPSBpO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gc3VtO1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIHp6ODUgLyBodHRwOi8vd3d3LmxhYjRnYW1lcy5uZXQveno4NS9ibG9nXFxuXFx0ICovXFxuXFxuXFx0dmFyIFNoYXBlVXRpbHMgPSB7XFxuXFxuXFx0XFx0Ly8gY2FsY3VsYXRlIGFyZWEgb2YgdGhlIGNvbnRvdXIgcG9seWdvblxcblxcblxcdFxcdGFyZWE6IGZ1bmN0aW9uICggY29udG91ciApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbiA9IGNvbnRvdXIubGVuZ3RoO1xcblxcdFxcdFxcdHZhciBhID0gMC4wO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBwID0gbiAtIDEsIHEgPSAwOyBxIDwgbjsgcCA9IHEgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YSArPSBjb250b3VyWyBwIF0ueCAqIGNvbnRvdXJbIHEgXS55IC0gY29udG91clsgcSBdLnggKiBjb250b3VyWyBwIF0ueTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGEgKiAwLjU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRpc0Nsb2NrV2lzZTogZnVuY3Rpb24gKCBwdHMgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIFNoYXBlVXRpbHMuYXJlYSggcHRzICkgPCAwO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dHJpYW5ndWxhdGVTaGFwZTogZnVuY3Rpb24gKCBjb250b3VyLCBob2xlcyApIHtcXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiByZW1vdmVEdXBFbmRQdHMoIHBvaW50cyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbCA9IHBvaW50cy5sZW5ndGg7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBsID4gMiAmJiBwb2ludHNbIGwgLSAxIF0uZXF1YWxzKCBwb2ludHNbIDAgXSApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHBvaW50cy5wb3AoKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZ1bmN0aW9uIGFkZENvbnRvdXIoIHZlcnRpY2VzLCBjb250b3VyICkge1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGNvbnRvdXIubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIGNvbnRvdXJbIGkgXS54ICk7XFxuXFx0XFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggY29udG91clsgaSBdLnkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdOyAvLyBmbGF0IGFycmF5IG9mIHZlcnRpY2VzIGxpa2UgWyB4MCx5MCwgeDEseTEsIHgyLHkyLCAuLi4gXVxcblxcdFxcdFxcdHZhciBob2xlSW5kaWNlcyA9IFtdOyAvLyBhcnJheSBvZiBob2xlIGluZGljZXNcXG5cXHRcXHRcXHR2YXIgZmFjZXMgPSBbXTsgLy8gZmluYWwgYXJyYXkgb2YgdmVydGV4IGluZGljZXMgbGlrZSBbIFsgYSxiLGQgXSwgWyBiLGMsZCBdIF1cXG5cXG5cXHRcXHRcXHRyZW1vdmVEdXBFbmRQdHMoIGNvbnRvdXIgKTtcXG5cXHRcXHRcXHRhZGRDb250b3VyKCB2ZXJ0aWNlcywgY29udG91ciApO1xcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0dmFyIGhvbGVJbmRleCA9IGNvbnRvdXIubGVuZ3RoO1xcblxcdFxcdFxcdGhvbGVzLmZvckVhY2goIHJlbW92ZUR1cEVuZFB0cyApO1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwOyBpIDwgaG9sZXMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGhvbGVJbmRpY2VzLnB1c2goIGhvbGVJbmRleCApO1xcblxcdFxcdFxcdFxcdGhvbGVJbmRleCArPSBob2xlc1sgaSBdLmxlbmd0aDtcXG5cXHRcXHRcXHRcXHRhZGRDb250b3VyKCB2ZXJ0aWNlcywgaG9sZXNbIGkgXSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdHZhciB0cmlhbmdsZXMgPSBFYXJjdXQudHJpYW5ndWxhdGUoIHZlcnRpY2VzLCBob2xlSW5kaWNlcyApO1xcblxcblxcdFxcdFxcdC8vXFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgdHJpYW5nbGVzLmxlbmd0aDsgaSArPSAzICkge1xcblxcblxcdFxcdFxcdFxcdGZhY2VzLnB1c2goIHRyaWFuZ2xlcy5zbGljZSggaSwgaSArIDMgKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gZmFjZXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciB6ejg1IC8gaHR0cDovL3d3dy5sYWI0Z2FtZXMubmV0L3p6ODUvYmxvZ1xcblxcdCAqXFxuXFx0ICogQ3JlYXRlcyBleHRydWRlZCBnZW9tZXRyeSBmcm9tIGEgcGF0aCBzaGFwZS5cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICpcXG5cXHQgKiAgY3VydmVTZWdtZW50czogPGludD4sIC8vIG51bWJlciBvZiBwb2ludHMgb24gdGhlIGN1cnZlc1xcblxcdCAqICBzdGVwczogPGludD4sIC8vIG51bWJlciBvZiBwb2ludHMgZm9yIHotc2lkZSBleHRydXNpb25zIC8gdXNlZCBmb3Igc3ViZGl2aWRpbmcgc2VnbWVudHMgb2YgZXh0cnVkZSBzcGxpbmUgdG9vXFxuXFx0ICogIGFtb3VudDogPGludD4sIC8vIERlcHRoIHRvIGV4dHJ1ZGUgdGhlIHNoYXBlXFxuXFx0ICpcXG5cXHQgKiAgYmV2ZWxFbmFibGVkOiA8Ym9vbD4sIC8vIHR1cm4gb24gYmV2ZWxcXG5cXHQgKiAgYmV2ZWxUaGlja25lc3M6IDxmbG9hdD4sIC8vIGhvdyBkZWVwIGludG8gdGhlIG9yaWdpbmFsIHNoYXBlIGJldmVsIGdvZXNcXG5cXHQgKiAgYmV2ZWxTaXplOiA8ZmxvYXQ+LCAvLyBob3cgZmFyIGZyb20gc2hhcGUgb3V0bGluZSBpcyBiZXZlbFxcblxcdCAqICBiZXZlbFNlZ21lbnRzOiA8aW50PiwgLy8gbnVtYmVyIG9mIGJldmVsIGxheWVyc1xcblxcdCAqXFxuXFx0ICogIGV4dHJ1ZGVQYXRoOiA8VEhSRUUuQ3VydmU+IC8vIGN1cnZlIHRvIGV4dHJ1ZGUgc2hhcGUgYWxvbmdcXG5cXHQgKiAgZnJhbWVzOiA8T2JqZWN0PiAvLyBjb250YWluaW5nIGFycmF5cyBvZiB0YW5nZW50cywgbm9ybWFscywgYmlub3JtYWxzXFxuXFx0ICpcXG5cXHQgKiAgVVZHZW5lcmF0b3I6IDxPYmplY3Q+IC8vIG9iamVjdCB0aGF0IHByb3ZpZGVzIFVWIGdlbmVyYXRvciBmdW5jdGlvbnNcXG5cXHQgKlxcblxcdCAqIH1cXG5cXHQgKi9cXG5cXG5cXHQvLyBFeHRydWRlR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBFeHRydWRlR2VvbWV0cnkoIHNoYXBlcywgb3B0aW9ucyApIHtcXG5cXG5cXHRcXHRHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0V4dHJ1ZGVHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHNoYXBlczogc2hhcGVzLFxcblxcdFxcdFxcdG9wdGlvbnM6IG9wdGlvbnNcXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KCBuZXcgRXh0cnVkZUJ1ZmZlckdlb21ldHJ5KCBzaGFwZXMsIG9wdGlvbnMgKSApO1xcblxcdFxcdHRoaXMubWVyZ2VWZXJ0aWNlcygpO1xcblxcblxcdH1cXG5cXG5cXHRFeHRydWRlR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0RXh0cnVkZUdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEV4dHJ1ZGVHZW9tZXRyeTtcXG5cXG5cXHQvLyBFeHRydWRlQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBFeHRydWRlQnVmZmVyR2VvbWV0cnkoIHNoYXBlcywgb3B0aW9ucyApIHtcXG5cXG5cXHRcXHRpZiAoIHR5cGVvZiAoIHNoYXBlcyApID09PSBcXFwidW5kZWZpbmVkXFxcIiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdEJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnRXh0cnVkZUJ1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHRzaGFwZXMgPSBBcnJheS5pc0FycmF5KCBzaGFwZXMgKSA/IHNoYXBlcyA6IFsgc2hhcGVzIF07XFxuXFxuXFx0XFx0dGhpcy5hZGRTaGFwZUxpc3QoIHNoYXBlcywgb3B0aW9ucyApO1xcblxcblxcdFxcdHRoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtcXG5cXG5cXHRcXHQvLyBjYW4ndCByZWFsbHkgdXNlIGF1dG9tYXRpYyB2ZXJ0ZXggbm9ybWFsc1xcblxcdFxcdC8vIGFzIHRoZW4gZnJvbnQgYW5kIGJhY2sgc2lkZXMgZ2V0IHNtb290aGVkIHRvb1xcblxcdFxcdC8vIHNob3VsZCBkbyBzZXBhcmF0ZSBzbW9vdGhpbmcganVzdCBmb3Igc2lkZXNcXG5cXG5cXHRcXHQvL3RoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtcXG5cXG5cXHRcXHQvL2NvbnNvbGUubG9nKCBcXFwidG9va1xcXCIsICggRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSApICk7XFxuXFxuXFx0fVxcblxcblxcdEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRFeHRydWRlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRXh0cnVkZUJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuZ2V0QXJyYXlzID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdHZhciBwb3NpdGlvbkF0dHJpYnV0ZSA9IHRoaXMuZ2V0QXR0cmlidXRlKCBcXFwicG9zaXRpb25cXFwiICk7XFxuXFx0XFx0dmFyIHZlcnRpY2VzQXJyYXkgPSBwb3NpdGlvbkF0dHJpYnV0ZSA/IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKCBwb3NpdGlvbkF0dHJpYnV0ZS5hcnJheSApIDogW107XFxuXFxuXFx0XFx0dmFyIHV2QXR0cmlidXRlID0gdGhpcy5nZXRBdHRyaWJ1dGUoIFxcXCJ1dlxcXCIgKTtcXG5cXHRcXHR2YXIgdXZBcnJheSA9IHV2QXR0cmlidXRlID8gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIHV2QXR0cmlidXRlLmFycmF5ICkgOiBbXTtcXG5cXG5cXHRcXHR2YXIgSW5kZXhBdHRyaWJ1dGUgPSB0aGlzLmluZGV4O1xcblxcdFxcdHZhciBpbmRpY2VzQXJyYXkgPSBJbmRleEF0dHJpYnV0ZSA/IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKCBJbmRleEF0dHJpYnV0ZS5hcnJheSApIDogW107XFxuXFxuXFx0XFx0cmV0dXJuIHtcXG5cXHRcXHRcXHRwb3NpdGlvbjogdmVydGljZXNBcnJheSxcXG5cXHRcXHRcXHR1djogdXZBcnJheSxcXG5cXHRcXHRcXHRpbmRleDogaW5kaWNlc0FycmF5XFxuXFx0XFx0fTtcXG5cXG5cXHR9O1xcblxcblxcdEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuYWRkU2hhcGVMaXN0ID0gZnVuY3Rpb24gKCBzaGFwZXMsIG9wdGlvbnMgKSB7XFxuXFxuXFx0XFx0dmFyIHNsID0gc2hhcGVzLmxlbmd0aDtcXG5cXHRcXHRvcHRpb25zLmFycmF5cyA9IHRoaXMuZ2V0QXJyYXlzKCk7XFxuXFxuXFx0XFx0Zm9yICggdmFyIHMgPSAwOyBzIDwgc2w7IHMgKysgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHNoYXBlID0gc2hhcGVzWyBzIF07XFxuXFx0XFx0XFx0dGhpcy5hZGRTaGFwZSggc2hhcGUsIG9wdGlvbnMgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggb3B0aW9ucy5hcnJheXMuaW5kZXggKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG9wdGlvbnMuYXJyYXlzLnBvc2l0aW9uLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3V2JywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG9wdGlvbnMuYXJyYXlzLnV2LCAyICkgKTtcXG5cXG5cXHR9O1xcblxcblxcdEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuYWRkU2hhcGUgPSBmdW5jdGlvbiAoIHNoYXBlLCBvcHRpb25zICkge1xcblxcblxcdFxcdHZhciBhcnJheXMgPSBvcHRpb25zLmFycmF5cyA/IG9wdGlvbnMuYXJyYXlzIDogdGhpcy5nZXRBcnJheXMoKTtcXG5cXHRcXHR2YXIgdmVydGljZXNBcnJheSA9IGFycmF5cy5wb3NpdGlvbjtcXG5cXHRcXHR2YXIgaW5kaWNlc0FycmF5ID0gYXJyYXlzLmluZGV4O1xcblxcdFxcdHZhciB1dkFycmF5ID0gYXJyYXlzLnV2O1xcblxcblxcdFxcdHZhciBwbGFjZWhvbGRlciA9IFtdO1xcblxcblxcblxcdFxcdHZhciBhbW91bnQgPSBvcHRpb25zLmFtb3VudCAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5hbW91bnQgOiAxMDA7XFxuXFxuXFx0XFx0dmFyIGJldmVsVGhpY2tuZXNzID0gb3B0aW9ucy5iZXZlbFRoaWNrbmVzcyAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5iZXZlbFRoaWNrbmVzcyA6IDY7IC8vIDEwXFxuXFx0XFx0dmFyIGJldmVsU2l6ZSA9IG9wdGlvbnMuYmV2ZWxTaXplICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmJldmVsU2l6ZSA6IGJldmVsVGhpY2tuZXNzIC0gMjsgLy8gOFxcblxcdFxcdHZhciBiZXZlbFNlZ21lbnRzID0gb3B0aW9ucy5iZXZlbFNlZ21lbnRzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmJldmVsU2VnbWVudHMgOiAzO1xcblxcblxcdFxcdHZhciBiZXZlbEVuYWJsZWQgPSBvcHRpb25zLmJldmVsRW5hYmxlZCAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5iZXZlbEVuYWJsZWQgOiB0cnVlOyAvLyBmYWxzZVxcblxcblxcdFxcdHZhciBjdXJ2ZVNlZ21lbnRzID0gb3B0aW9ucy5jdXJ2ZVNlZ21lbnRzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmN1cnZlU2VnbWVudHMgOiAxMjtcXG5cXG5cXHRcXHR2YXIgc3RlcHMgPSBvcHRpb25zLnN0ZXBzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnN0ZXBzIDogMTtcXG5cXG5cXHRcXHR2YXIgZXh0cnVkZVBhdGggPSBvcHRpb25zLmV4dHJ1ZGVQYXRoO1xcblxcdFxcdHZhciBleHRydWRlUHRzLCBleHRydWRlQnlQYXRoID0gZmFsc2U7XFxuXFxuXFx0XFx0Ly8gVXNlIGRlZmF1bHQgV29ybGRVVkdlbmVyYXRvciBpZiBubyBVViBnZW5lcmF0b3JzIGFyZSBzcGVjaWZpZWQuXFxuXFx0XFx0dmFyIHV2Z2VuID0gb3B0aW9ucy5VVkdlbmVyYXRvciAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5VVkdlbmVyYXRvciA6IEV4dHJ1ZGVHZW9tZXRyeS5Xb3JsZFVWR2VuZXJhdG9yO1xcblxcblxcdFxcdHZhciBzcGxpbmVUdWJlLCBiaW5vcm1hbCwgbm9ybWFsLCBwb3NpdGlvbjI7XFxuXFx0XFx0aWYgKCBleHRydWRlUGF0aCApIHtcXG5cXG5cXHRcXHRcXHRleHRydWRlUHRzID0gZXh0cnVkZVBhdGguZ2V0U3BhY2VkUG9pbnRzKCBzdGVwcyApO1xcblxcblxcdFxcdFxcdGV4dHJ1ZGVCeVBhdGggPSB0cnVlO1xcblxcdFxcdFxcdGJldmVsRW5hYmxlZCA9IGZhbHNlOyAvLyBiZXZlbHMgbm90IHN1cHBvcnRlZCBmb3IgcGF0aCBleHRydXNpb25cXG5cXG5cXHRcXHRcXHQvLyBTRVRVUCBUTkIgdmFyaWFibGVzXFxuXFxuXFx0XFx0XFx0Ly8gVE9ETzEgLSBoYXZlIGEgLmlzQ2xvc2VkIGluIHNwbGluZT9cXG5cXG5cXHRcXHRcXHRzcGxpbmVUdWJlID0gb3B0aW9ucy5mcmFtZXMgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuZnJhbWVzIDogZXh0cnVkZVBhdGguY29tcHV0ZUZyZW5ldEZyYW1lcyggc3RlcHMsIGZhbHNlICk7XFxuXFxuXFx0XFx0XFx0Ly8gY29uc29sZS5sb2coc3BsaW5lVHViZSwgJ3NwbGluZVR1YmUnLCBzcGxpbmVUdWJlLm5vcm1hbHMubGVuZ3RoLCAnc3RlcHMnLCBzdGVwcywgJ2V4dHJ1ZGVQdHMnLCBleHRydWRlUHRzLmxlbmd0aCk7XFxuXFxuXFx0XFx0XFx0Ymlub3JtYWwgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdG5vcm1hbCA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0cG9zaXRpb24yID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gU2FmZWd1YXJkcyBpZiBiZXZlbHMgYXJlIG5vdCBlbmFibGVkXFxuXFxuXFx0XFx0aWYgKCAhIGJldmVsRW5hYmxlZCApIHtcXG5cXG5cXHRcXHRcXHRiZXZlbFNlZ21lbnRzID0gMDtcXG5cXHRcXHRcXHRiZXZlbFRoaWNrbmVzcyA9IDA7XFxuXFx0XFx0XFx0YmV2ZWxTaXplID0gMDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gVmFyaWFibGVzIGluaXRpYWxpemF0aW9uXFxuXFxuXFx0XFx0dmFyIGFob2xlLCBoLCBobDsgLy8gbG9vcGluZyBvZiBob2xlc1xcblxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0dmFyIHNoYXBlUG9pbnRzID0gc2hhcGUuZXh0cmFjdFBvaW50cyggY3VydmVTZWdtZW50cyApO1xcblxcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IHNoYXBlUG9pbnRzLnNoYXBlO1xcblxcdFxcdHZhciBob2xlcyA9IHNoYXBlUG9pbnRzLmhvbGVzO1xcblxcblxcdFxcdHZhciByZXZlcnNlID0gISBTaGFwZVV0aWxzLmlzQ2xvY2tXaXNlKCB2ZXJ0aWNlcyApO1xcblxcblxcdFxcdGlmICggcmV2ZXJzZSApIHtcXG5cXG5cXHRcXHRcXHR2ZXJ0aWNlcyA9IHZlcnRpY2VzLnJldmVyc2UoKTtcXG5cXG5cXHRcXHRcXHQvLyBNYXliZSB3ZSBzaG91bGQgYWxzbyBjaGVjayBpZiBob2xlcyBhcmUgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiwganVzdCB0byBiZSBzYWZlIC4uLlxcblxcblxcdFxcdFxcdGZvciAoIGggPSAwLCBobCA9IGhvbGVzLmxlbmd0aDsgaCA8IGhsOyBoICsrICkge1xcblxcblxcdFxcdFxcdFxcdGFob2xlID0gaG9sZXNbIGggXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIFNoYXBlVXRpbHMuaXNDbG9ja1dpc2UoIGFob2xlICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aG9sZXNbIGggXSA9IGFob2xlLnJldmVyc2UoKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXG5cXHRcXHR2YXIgZmFjZXMgPSBTaGFwZVV0aWxzLnRyaWFuZ3VsYXRlU2hhcGUoIHZlcnRpY2VzLCBob2xlcyApO1xcblxcblxcdFxcdC8qIFZlcnRpY2VzICovXFxuXFxuXFx0XFx0dmFyIGNvbnRvdXIgPSB2ZXJ0aWNlczsgLy8gdmVydGljZXMgaGFzIGFsbCBwb2ludHMgYnV0IGNvbnRvdXIgaGFzIG9ubHkgcG9pbnRzIG9mIGNpcmN1bWZlcmVuY2VcXG5cXG5cXHRcXHRmb3IgKCBoID0gMCwgaGwgPSBob2xlcy5sZW5ndGg7IGggPCBobDsgaCArKyApIHtcXG5cXG5cXHRcXHRcXHRhaG9sZSA9IGhvbGVzWyBoIF07XFxuXFxuXFx0XFx0XFx0dmVydGljZXMgPSB2ZXJ0aWNlcy5jb25jYXQoIGFob2xlICk7XFxuXFxuXFx0XFx0fVxcblxcblxcblxcdFxcdGZ1bmN0aW9uIHNjYWxlUHQyKCBwdCwgdmVjLCBzaXplICkge1xcblxcblxcdFxcdFxcdGlmICggISB2ZWMgKSBjb25zb2xlLmVycm9yKCBcXFwiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiB2ZWMgZG9lcyBub3QgZXhpc3RcXFwiICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHZlYy5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKCBzaXplICkuYWRkKCBwdCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR2YXIgYiwgYnMsIHQsIHosXFxuXFx0XFx0XFx0dmVydCwgdmxlbiA9IHZlcnRpY2VzLmxlbmd0aCxcXG5cXHRcXHRcXHRmYWNlLCBmbGVuID0gZmFjZXMubGVuZ3RoO1xcblxcblxcblxcdFxcdC8vIEZpbmQgZGlyZWN0aW9ucyBmb3IgcG9pbnQgbW92ZW1lbnRcXG5cXG5cXG5cXHRcXHRmdW5jdGlvbiBnZXRCZXZlbFZlYyggaW5QdCwgaW5QcmV2LCBpbk5leHQgKSB7XFxuXFxuXFx0XFx0XFx0Ly8gY29tcHV0ZXMgZm9yIGluUHQgdGhlIGNvcnJlc3BvbmRpbmcgcG9pbnQgaW5QdCcgb24gYSBuZXcgY29udG91clxcblxcdFxcdFxcdC8vICAgc2hpZnRlZCBieSAxIHVuaXQgKGxlbmd0aCBvZiBub3JtYWxpemVkIHZlY3RvcikgdG8gdGhlIGxlZnRcXG5cXHRcXHRcXHQvLyBpZiB3ZSB3YWxrIGFsb25nIGNvbnRvdXIgY2xvY2t3aXNlLCB0aGlzIG5ldyBjb250b3VyIGlzIG91dHNpZGUgdGhlIG9sZCBvbmVcXG5cXHRcXHRcXHQvL1xcblxcdFxcdFxcdC8vIGluUHQnIGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBsaW5lcyBwYXJhbGxlbCB0byB0aGUgdHdvXFxuXFx0XFx0XFx0Ly8gIGFkamFjZW50IGVkZ2VzIG9mIGluUHQgYXQgYSBkaXN0YW5jZSBvZiAxIHVuaXQgb24gdGhlIGxlZnQgc2lkZS5cXG5cXG5cXHRcXHRcXHR2YXIgdl90cmFuc194LCB2X3RyYW5zX3ksIHNocmlua19ieTsgLy8gcmVzdWx0aW5nIHRyYW5zbGF0aW9uIHZlY3RvciBmb3IgaW5QdFxcblxcblxcdFxcdFxcdC8vIGdvb2QgcmVhZGluZyBmb3IgZ2VvbWV0cnkgYWxnb3JpdGhtcyAoaGVyZTogbGluZS1saW5lIGludGVyc2VjdGlvbilcXG5cXHRcXHRcXHQvLyBodHRwOi8vZ2VvbWFsZ29yaXRobXMuY29tL2EwNS1faW50ZXJzZWN0LTEuaHRtbFxcblxcblxcdFxcdFxcdHZhciB2X3ByZXZfeCA9IGluUHQueCAtIGluUHJldi54LFxcblxcdFxcdFxcdFxcdHZfcHJldl95ID0gaW5QdC55IC0gaW5QcmV2Lnk7XFxuXFx0XFx0XFx0dmFyIHZfbmV4dF94ID0gaW5OZXh0LnggLSBpblB0LngsXFxuXFx0XFx0XFx0XFx0dl9uZXh0X3kgPSBpbk5leHQueSAtIGluUHQueTtcXG5cXG5cXHRcXHRcXHR2YXIgdl9wcmV2X2xlbnNxID0gKCB2X3ByZXZfeCAqIHZfcHJldl94ICsgdl9wcmV2X3kgKiB2X3ByZXZfeSApO1xcblxcblxcdFxcdFxcdC8vIGNoZWNrIGZvciBjb2xsaW5lYXIgZWRnZXNcXG5cXHRcXHRcXHR2YXIgY29sbGluZWFyMCA9ICggdl9wcmV2X3ggKiB2X25leHRfeSAtIHZfcHJldl95ICogdl9uZXh0X3ggKTtcXG5cXG5cXHRcXHRcXHRpZiAoIE1hdGguYWJzKCBjb2xsaW5lYXIwICkgPiBOdW1iZXIuRVBTSUxPTiApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub3QgY29sbGluZWFyXFxuXFxuXFx0XFx0XFx0XFx0Ly8gbGVuZ3RoIG9mIHZlY3RvcnMgZm9yIG5vcm1hbGl6aW5nXFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZfcHJldl9sZW4gPSBNYXRoLnNxcnQoIHZfcHJldl9sZW5zcSApO1xcblxcdFxcdFxcdFxcdHZhciB2X25leHRfbGVuID0gTWF0aC5zcXJ0KCB2X25leHRfeCAqIHZfbmV4dF94ICsgdl9uZXh0X3kgKiB2X25leHRfeSApO1xcblxcblxcdFxcdFxcdFxcdC8vIHNoaWZ0IGFkamFjZW50IHBvaW50cyBieSB1bml0IHZlY3RvcnMgdG8gdGhlIGxlZnRcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcHRQcmV2U2hpZnRfeCA9ICggaW5QcmV2LnggLSB2X3ByZXZfeSAvIHZfcHJldl9sZW4gKTtcXG5cXHRcXHRcXHRcXHR2YXIgcHRQcmV2U2hpZnRfeSA9ICggaW5QcmV2LnkgKyB2X3ByZXZfeCAvIHZfcHJldl9sZW4gKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcHROZXh0U2hpZnRfeCA9ICggaW5OZXh0LnggLSB2X25leHRfeSAvIHZfbmV4dF9sZW4gKTtcXG5cXHRcXHRcXHRcXHR2YXIgcHROZXh0U2hpZnRfeSA9ICggaW5OZXh0LnkgKyB2X25leHRfeCAvIHZfbmV4dF9sZW4gKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBzY2FsaW5nIGZhY3RvciBmb3Igdl9wcmV2IHRvIGludGVyc2VjdGlvbiBwb2ludFxcblxcblxcdFxcdFxcdFxcdHZhciBzZiA9ICggKCBwdE5leHRTaGlmdF94IC0gcHRQcmV2U2hpZnRfeCApICogdl9uZXh0X3kgLVxcblxcdFxcdFxcdFxcdFxcdFxcdCggcHROZXh0U2hpZnRfeSAtIHB0UHJldlNoaWZ0X3kgKSAqIHZfbmV4dF94ICkgL1xcblxcdFxcdFxcdFxcdFxcdCggdl9wcmV2X3ggKiB2X25leHRfeSAtIHZfcHJldl95ICogdl9uZXh0X3ggKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyB2ZWN0b3IgZnJvbSBpblB0IHRvIGludGVyc2VjdGlvbiBwb2ludFxcblxcblxcdFxcdFxcdFxcdHZfdHJhbnNfeCA9ICggcHRQcmV2U2hpZnRfeCArIHZfcHJldl94ICogc2YgLSBpblB0LnggKTtcXG5cXHRcXHRcXHRcXHR2X3RyYW5zX3kgPSAoIHB0UHJldlNoaWZ0X3kgKyB2X3ByZXZfeSAqIHNmIC0gaW5QdC55ICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gRG9uJ3Qgbm9ybWFsaXplISwgb3RoZXJ3aXNlIHNoYXJwIGNvcm5lcnMgYmVjb21lIHVnbHlcXG5cXHRcXHRcXHRcXHQvLyAgYnV0IHByZXZlbnQgY3Jhenkgc3Bpa2VzXFxuXFx0XFx0XFx0XFx0dmFyIHZfdHJhbnNfbGVuc3EgPSAoIHZfdHJhbnNfeCAqIHZfdHJhbnNfeCArIHZfdHJhbnNfeSAqIHZfdHJhbnNfeSApO1xcblxcdFxcdFxcdFxcdGlmICggdl90cmFuc19sZW5zcSA8PSAyICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBuZXcgVmVjdG9yMiggdl90cmFuc194LCB2X3RyYW5zX3kgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHNocmlua19ieSA9IE1hdGguc3FydCggdl90cmFuc19sZW5zcSAvIDIgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBoYW5kbGUgc3BlY2lhbCBjYXNlIG9mIGNvbGxpbmVhciBlZGdlc1xcblxcblxcdFxcdFxcdFxcdHZhciBkaXJlY3Rpb25fZXEgPSBmYWxzZTsgLy8gYXNzdW1lczogb3Bwb3NpdGVcXG5cXHRcXHRcXHRcXHRpZiAoIHZfcHJldl94ID4gTnVtYmVyLkVQU0lMT04gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB2X25leHRfeCA+IE51bWJlci5FUFNJTE9OICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGRpcmVjdGlvbl9lcSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB2X3ByZXZfeCA8IC0gTnVtYmVyLkVQU0lMT04gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB2X25leHRfeCA8IC0gTnVtYmVyLkVQU0lMT04gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGlyZWN0aW9uX2VxID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIE1hdGguc2lnbiggdl9wcmV2X3kgKSA9PT0gTWF0aC5zaWduKCB2X25leHRfeSApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGRpcmVjdGlvbl9lcSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBkaXJlY3Rpb25fZXEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gY29uc29sZS5sb2coXFxcIldhcm5pbmc6IGxpbmVzIGFyZSBhIHN0cmFpZ2h0IHNlcXVlbmNlXFxcIik7XFxuXFx0XFx0XFx0XFx0XFx0dl90cmFuc194ID0gLSB2X3ByZXZfeTtcXG5cXHRcXHRcXHRcXHRcXHR2X3RyYW5zX3kgPSB2X3ByZXZfeDtcXG5cXHRcXHRcXHRcXHRcXHRzaHJpbmtfYnkgPSBNYXRoLnNxcnQoIHZfcHJldl9sZW5zcSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gY29uc29sZS5sb2coXFxcIldhcm5pbmc6IGxpbmVzIGFyZSBhIHN0cmFpZ2h0IHNwaWtlXFxcIik7XFxuXFx0XFx0XFx0XFx0XFx0dl90cmFuc194ID0gdl9wcmV2X3g7XFxuXFx0XFx0XFx0XFx0XFx0dl90cmFuc195ID0gdl9wcmV2X3k7XFxuXFx0XFx0XFx0XFx0XFx0c2hyaW5rX2J5ID0gTWF0aC5zcXJ0KCB2X3ByZXZfbGVuc3EgLyAyICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IFZlY3RvcjIoIHZfdHJhbnNfeCAvIHNocmlua19ieSwgdl90cmFuc195IC8gc2hyaW5rX2J5ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcblxcdFxcdHZhciBjb250b3VyTW92ZW1lbnRzID0gW107XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBpbCA9IGNvbnRvdXIubGVuZ3RoLCBqID0gaWwgLSAxLCBrID0gaSArIDE7IGkgPCBpbDsgaSArKywgaiArKywgayArKyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGogPT09IGlsICkgaiA9IDA7XFxuXFx0XFx0XFx0aWYgKCBrID09PSBpbCApIGsgPSAwO1xcblxcblxcdFxcdFxcdC8vICAoaiktLS0oaSktLS0oaylcXG5cXHRcXHRcXHQvLyBjb25zb2xlLmxvZygnaSxqLGsnLCBpLCBqICwgaylcXG5cXG5cXHRcXHRcXHRjb250b3VyTW92ZW1lbnRzWyBpIF0gPSBnZXRCZXZlbFZlYyggY29udG91clsgaSBdLCBjb250b3VyWyBqIF0sIGNvbnRvdXJbIGsgXSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR2YXIgaG9sZXNNb3ZlbWVudHMgPSBbXSxcXG5cXHRcXHRcXHRvbmVIb2xlTW92ZW1lbnRzLCB2ZXJ0aWNlc01vdmVtZW50cyA9IGNvbnRvdXJNb3ZlbWVudHMuY29uY2F0KCk7XFxuXFxuXFx0XFx0Zm9yICggaCA9IDAsIGhsID0gaG9sZXMubGVuZ3RoOyBoIDwgaGw7IGggKysgKSB7XFxuXFxuXFx0XFx0XFx0YWhvbGUgPSBob2xlc1sgaCBdO1xcblxcblxcdFxcdFxcdG9uZUhvbGVNb3ZlbWVudHMgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBhaG9sZS5sZW5ndGgsIGogPSBpbCAtIDEsIGsgPSBpICsgMTsgaSA8IGlsOyBpICsrLCBqICsrLCBrICsrICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggaiA9PT0gaWwgKSBqID0gMDtcXG5cXHRcXHRcXHRcXHRpZiAoIGsgPT09IGlsICkgayA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gIChqKS0tLShpKS0tLShrKVxcblxcdFxcdFxcdFxcdG9uZUhvbGVNb3ZlbWVudHNbIGkgXSA9IGdldEJldmVsVmVjKCBhaG9sZVsgaSBdLCBhaG9sZVsgaiBdLCBhaG9sZVsgayBdICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGhvbGVzTW92ZW1lbnRzLnB1c2goIG9uZUhvbGVNb3ZlbWVudHMgKTtcXG5cXHRcXHRcXHR2ZXJ0aWNlc01vdmVtZW50cyA9IHZlcnRpY2VzTW92ZW1lbnRzLmNvbmNhdCggb25lSG9sZU1vdmVtZW50cyApO1xcblxcblxcdFxcdH1cXG5cXG5cXG5cXHRcXHQvLyBMb29wIGJldmVsU2VnbWVudHMsIDEgZm9yIHRoZSBmcm9udCwgMSBmb3IgdGhlIGJhY2tcXG5cXG5cXHRcXHRmb3IgKCBiID0gMDsgYiA8IGJldmVsU2VnbWVudHM7IGIgKysgKSB7XFxuXFxuXFx0XFx0XFx0Ly9mb3IgKCBiID0gYmV2ZWxTZWdtZW50czsgYiA+IDA7IGIgLS0gKSB7XFxuXFxuXFx0XFx0XFx0dCA9IGIgLyBiZXZlbFNlZ21lbnRzO1xcblxcdFxcdFxcdHogPSBiZXZlbFRoaWNrbmVzcyAqIE1hdGguY29zKCB0ICogTWF0aC5QSSAvIDIgKTtcXG5cXHRcXHRcXHRicyA9IGJldmVsU2l6ZSAqIE1hdGguc2luKCB0ICogTWF0aC5QSSAvIDIgKTtcXG5cXG5cXHRcXHRcXHQvLyBjb250cmFjdCBzaGFwZVxcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBpbCA9IGNvbnRvdXIubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmVydCA9IHNjYWxlUHQyKCBjb250b3VyWyBpIF0sIGNvbnRvdXJNb3ZlbWVudHNbIGkgXSwgYnMgKTtcXG5cXG5cXHRcXHRcXHRcXHR2KCB2ZXJ0LngsIHZlcnQueSwgLSB6ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGV4cGFuZCBob2xlc1xcblxcblxcdFxcdFxcdGZvciAoIGggPSAwLCBobCA9IGhvbGVzLmxlbmd0aDsgaCA8IGhsOyBoICsrICkge1xcblxcblxcdFxcdFxcdFxcdGFob2xlID0gaG9sZXNbIGggXTtcXG5cXHRcXHRcXHRcXHRvbmVIb2xlTW92ZW1lbnRzID0gaG9sZXNNb3ZlbWVudHNbIGggXTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBhaG9sZS5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ID0gc2NhbGVQdDIoIGFob2xlWyBpIF0sIG9uZUhvbGVNb3ZlbWVudHNbIGkgXSwgYnMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2KCB2ZXJ0LngsIHZlcnQueSwgLSB6ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0YnMgPSBiZXZlbFNpemU7XFxuXFxuXFx0XFx0Ly8gQmFjayBmYWNpbmcgdmVydGljZXNcXG5cXG5cXHRcXHRmb3IgKCBpID0gMDsgaSA8IHZsZW47IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0dmVydCA9IGJldmVsRW5hYmxlZCA/IHNjYWxlUHQyKCB2ZXJ0aWNlc1sgaSBdLCB2ZXJ0aWNlc01vdmVtZW50c1sgaSBdLCBicyApIDogdmVydGljZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRpZiAoICEgZXh0cnVkZUJ5UGF0aCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2KCB2ZXJ0LngsIHZlcnQueSwgMCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdiggdmVydC54LCB2ZXJ0LnkgKyBleHRydWRlUHRzWyAwIF0ueSwgZXh0cnVkZVB0c1sgMCBdLnggKTtcXG5cXG5cXHRcXHRcXHRcXHRub3JtYWwuY29weSggc3BsaW5lVHViZS5ub3JtYWxzWyAwIF0gKS5tdWx0aXBseVNjYWxhciggdmVydC54ICk7XFxuXFx0XFx0XFx0XFx0Ymlub3JtYWwuY29weSggc3BsaW5lVHViZS5iaW5vcm1hbHNbIDAgXSApLm11bHRpcGx5U2NhbGFyKCB2ZXJ0LnkgKTtcXG5cXG5cXHRcXHRcXHRcXHRwb3NpdGlvbjIuY29weSggZXh0cnVkZVB0c1sgMCBdICkuYWRkKCBub3JtYWwgKS5hZGQoIGJpbm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0diggcG9zaXRpb24yLngsIHBvc2l0aW9uMi55LCBwb3NpdGlvbjIueiApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gQWRkIHN0ZXBwZWQgdmVydGljZXMuLi5cXG5cXHRcXHQvLyBJbmNsdWRpbmcgZnJvbnQgZmFjaW5nIHZlcnRpY2VzXFxuXFxuXFx0XFx0dmFyIHM7XFxuXFxuXFx0XFx0Zm9yICggcyA9IDE7IHMgPD0gc3RlcHM7IHMgKysgKSB7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPCB2bGVuOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZlcnQgPSBiZXZlbEVuYWJsZWQgPyBzY2FsZVB0MiggdmVydGljZXNbIGkgXSwgdmVydGljZXNNb3ZlbWVudHNbIGkgXSwgYnMgKSA6IHZlcnRpY2VzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCAhIGV4dHJ1ZGVCeVBhdGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0diggdmVydC54LCB2ZXJ0LnksIGFtb3VudCAvIHN0ZXBzICogcyApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdiggdmVydC54LCB2ZXJ0LnkgKyBleHRydWRlUHRzWyBzIC0gMSBdLnksIGV4dHJ1ZGVQdHNbIHMgLSAxIF0ueCApO1xcblxcblxcdFxcdFxcdFxcdFxcdG5vcm1hbC5jb3B5KCBzcGxpbmVUdWJlLm5vcm1hbHNbIHMgXSApLm11bHRpcGx5U2NhbGFyKCB2ZXJ0LnggKTtcXG5cXHRcXHRcXHRcXHRcXHRiaW5vcm1hbC5jb3B5KCBzcGxpbmVUdWJlLmJpbm9ybWFsc1sgcyBdICkubXVsdGlwbHlTY2FsYXIoIHZlcnQueSApO1xcblxcblxcdFxcdFxcdFxcdFxcdHBvc2l0aW9uMi5jb3B5KCBleHRydWRlUHRzWyBzIF0gKS5hZGQoIG5vcm1hbCApLmFkZCggYmlub3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2KCBwb3NpdGlvbjIueCwgcG9zaXRpb24yLnksIHBvc2l0aW9uMi56ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFxuXFx0XFx0Ly8gQWRkIGJldmVsIHNlZ21lbnRzIHBsYW5lc1xcblxcblxcdFxcdC8vZm9yICggYiA9IDE7IGIgPD0gYmV2ZWxTZWdtZW50czsgYiArKyApIHtcXG5cXHRcXHRmb3IgKCBiID0gYmV2ZWxTZWdtZW50cyAtIDE7IGIgPj0gMDsgYiAtLSApIHtcXG5cXG5cXHRcXHRcXHR0ID0gYiAvIGJldmVsU2VnbWVudHM7XFxuXFx0XFx0XFx0eiA9IGJldmVsVGhpY2tuZXNzICogTWF0aC5jb3MoIHQgKiBNYXRoLlBJIC8gMiApO1xcblxcdFxcdFxcdGJzID0gYmV2ZWxTaXplICogTWF0aC5zaW4oIHQgKiBNYXRoLlBJIC8gMiApO1xcblxcblxcdFxcdFxcdC8vIGNvbnRyYWN0IHNoYXBlXFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDAsIGlsID0gY29udG91ci5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ID0gc2NhbGVQdDIoIGNvbnRvdXJbIGkgXSwgY29udG91ck1vdmVtZW50c1sgaSBdLCBicyApO1xcblxcdFxcdFxcdFxcdHYoIHZlcnQueCwgdmVydC55LCBhbW91bnQgKyB6ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGV4cGFuZCBob2xlc1xcblxcblxcdFxcdFxcdGZvciAoIGggPSAwLCBobCA9IGhvbGVzLmxlbmd0aDsgaCA8IGhsOyBoICsrICkge1xcblxcblxcdFxcdFxcdFxcdGFob2xlID0gaG9sZXNbIGggXTtcXG5cXHRcXHRcXHRcXHRvbmVIb2xlTW92ZW1lbnRzID0gaG9sZXNNb3ZlbWVudHNbIGggXTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMCwgaWwgPSBhaG9sZS5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ID0gc2NhbGVQdDIoIGFob2xlWyBpIF0sIG9uZUhvbGVNb3ZlbWVudHNbIGkgXSwgYnMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoICEgZXh0cnVkZUJ5UGF0aCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2KCB2ZXJ0LngsIHZlcnQueSwgYW1vdW50ICsgeiApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0diggdmVydC54LCB2ZXJ0LnkgKyBleHRydWRlUHRzWyBzdGVwcyAtIDEgXS55LCBleHRydWRlUHRzWyBzdGVwcyAtIDEgXS54ICsgeiApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvKiBGYWNlcyAqL1xcblxcblxcdFxcdC8vIFRvcCBhbmQgYm90dG9tIGZhY2VzXFxuXFxuXFx0XFx0YnVpbGRMaWRGYWNlcygpO1xcblxcblxcdFxcdC8vIFNpZGVzIGZhY2VzXFxuXFxuXFx0XFx0YnVpbGRTaWRlRmFjZXMoKTtcXG5cXG5cXG5cXHRcXHQvLy8vLyAgSW50ZXJuYWwgZnVuY3Rpb25zXFxuXFxuXFx0XFx0ZnVuY3Rpb24gYnVpbGRMaWRGYWNlcygpIHtcXG5cXG5cXHRcXHRcXHR2YXIgc3RhcnQgPSB2ZXJ0aWNlc0FycmF5Lmxlbmd0aCAvIDM7XFxuXFxuXFx0XFx0XFx0aWYgKCBiZXZlbEVuYWJsZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGxheWVyID0gMDsgLy8gc3RlcHMgKyAxXFxuXFx0XFx0XFx0XFx0dmFyIG9mZnNldCA9IHZsZW4gKiBsYXllcjtcXG5cXG5cXHRcXHRcXHRcXHQvLyBCb3R0b20gZmFjZXNcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IGZsZW47IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZSA9IGZhY2VzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0ZjMoIGZhY2VbIDIgXSArIG9mZnNldCwgZmFjZVsgMSBdICsgb2Zmc2V0LCBmYWNlWyAwIF0gKyBvZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0bGF5ZXIgPSBzdGVwcyArIGJldmVsU2VnbWVudHMgKiAyO1xcblxcdFxcdFxcdFxcdG9mZnNldCA9IHZsZW4gKiBsYXllcjtcXG5cXG5cXHRcXHRcXHRcXHQvLyBUb3AgZmFjZXNcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IGZsZW47IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZSA9IGZhY2VzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0ZjMoIGZhY2VbIDAgXSArIG9mZnNldCwgZmFjZVsgMSBdICsgb2Zmc2V0LCBmYWNlWyAyIF0gKyBvZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBCb3R0b20gZmFjZXNcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IGZsZW47IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZSA9IGZhY2VzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0ZjMoIGZhY2VbIDIgXSwgZmFjZVsgMSBdLCBmYWNlWyAwIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ly8gVG9wIGZhY2VzXFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPCBmbGVuOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZhY2UgPSBmYWNlc1sgaSBdO1xcblxcdFxcdFxcdFxcdFxcdGYzKCBmYWNlWyAwIF0gKyB2bGVuICogc3RlcHMsIGZhY2VbIDEgXSArIHZsZW4gKiBzdGVwcywgZmFjZVsgMiBdICsgdmxlbiAqIHN0ZXBzICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRzY29wZS5hZGRHcm91cCggc3RhcnQsIHZlcnRpY2VzQXJyYXkubGVuZ3RoIC8gMyAtIHN0YXJ0LCBvcHRpb25zLm1hdGVyaWFsICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm1hdGVyaWFsIDogMCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBDcmVhdGUgZmFjZXMgZm9yIHRoZSB6LXNpZGVzIG9mIHRoZSBzaGFwZVxcblxcblxcdFxcdGZ1bmN0aW9uIGJ1aWxkU2lkZUZhY2VzKCkge1xcblxcblxcdFxcdFxcdHZhciBzdGFydCA9IHZlcnRpY2VzQXJyYXkubGVuZ3RoIC8gMztcXG5cXHRcXHRcXHR2YXIgbGF5ZXJvZmZzZXQgPSAwO1xcblxcdFxcdFxcdHNpZGV3YWxscyggY29udG91ciwgbGF5ZXJvZmZzZXQgKTtcXG5cXHRcXHRcXHRsYXllcm9mZnNldCArPSBjb250b3VyLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRmb3IgKCBoID0gMCwgaGwgPSBob2xlcy5sZW5ndGg7IGggPCBobDsgaCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRhaG9sZSA9IGhvbGVzWyBoIF07XFxuXFx0XFx0XFx0XFx0c2lkZXdhbGxzKCBhaG9sZSwgbGF5ZXJvZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLywgdHJ1ZVxcblxcdFxcdFxcdFxcdGxheWVyb2Zmc2V0ICs9IGFob2xlLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFxuXFx0XFx0XFx0c2NvcGUuYWRkR3JvdXAoIHN0YXJ0LCB2ZXJ0aWNlc0FycmF5Lmxlbmd0aCAvIDMgLSBzdGFydCwgb3B0aW9ucy5leHRydWRlTWF0ZXJpYWwgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuZXh0cnVkZU1hdGVyaWFsIDogMSApO1xcblxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmdW5jdGlvbiBzaWRld2FsbHMoIGNvbnRvdXIsIGxheWVyb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdHZhciBqLCBrO1xcblxcdFxcdFxcdGkgPSBjb250b3VyLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHR3aGlsZSAoIC0tIGkgPj0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRqID0gaTtcXG5cXHRcXHRcXHRcXHRrID0gaSAtIDE7XFxuXFx0XFx0XFx0XFx0aWYgKCBrIDwgMCApIGsgPSBjb250b3VyLmxlbmd0aCAtIDE7XFxuXFxuXFx0XFx0XFx0XFx0Ly9jb25zb2xlLmxvZygnYicsIGksaiwgaS0xLCBrLHZlcnRpY2VzLmxlbmd0aCk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHMgPSAwLFxcblxcdFxcdFxcdFxcdFxcdHNsID0gc3RlcHMgKyBiZXZlbFNlZ21lbnRzICogMjtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCBzID0gMDsgcyA8IHNsOyBzICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBzbGVuMSA9IHZsZW4gKiBzO1xcblxcdFxcdFxcdFxcdFxcdHZhciBzbGVuMiA9IHZsZW4gKiAoIHMgKyAxICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGEgPSBsYXllcm9mZnNldCArIGogKyBzbGVuMSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRiID0gbGF5ZXJvZmZzZXQgKyBrICsgc2xlbjEsXFxuXFx0XFx0XFx0XFx0XFx0XFx0YyA9IGxheWVyb2Zmc2V0ICsgayArIHNsZW4yLFxcblxcdFxcdFxcdFxcdFxcdFxcdGQgPSBsYXllcm9mZnNldCArIGogKyBzbGVuMjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmNCggYSwgYiwgYywgZCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIHYoIHgsIHksIHogKSB7XFxuXFxuXFx0XFx0XFx0cGxhY2Vob2xkZXIucHVzaCggeCApO1xcblxcdFxcdFxcdHBsYWNlaG9sZGVyLnB1c2goIHkgKTtcXG5cXHRcXHRcXHRwbGFjZWhvbGRlci5wdXNoKCB6ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcblxcdFxcdGZ1bmN0aW9uIGYzKCBhLCBiLCBjICkge1xcblxcblxcdFxcdFxcdGFkZFZlcnRleCggYSApO1xcblxcdFxcdFxcdGFkZFZlcnRleCggYiApO1xcblxcdFxcdFxcdGFkZFZlcnRleCggYyApO1xcblxcblxcdFxcdFxcdHZhciBuZXh0SW5kZXggPSB2ZXJ0aWNlc0FycmF5Lmxlbmd0aCAvIDM7XFxuXFx0XFx0XFx0dmFyIHV2cyA9IHV2Z2VuLmdlbmVyYXRlVG9wVVYoIHNjb3BlLCB2ZXJ0aWNlc0FycmF5LCBuZXh0SW5kZXggLSAzLCBuZXh0SW5kZXggLSAyLCBuZXh0SW5kZXggLSAxICk7XFxuXFxuXFx0XFx0XFx0YWRkVVYoIHV2c1sgMCBdICk7XFxuXFx0XFx0XFx0YWRkVVYoIHV2c1sgMSBdICk7XFxuXFx0XFx0XFx0YWRkVVYoIHV2c1sgMiBdICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGY0KCBhLCBiLCBjLCBkICkge1xcblxcblxcdFxcdFxcdGFkZFZlcnRleCggYSApO1xcblxcdFxcdFxcdGFkZFZlcnRleCggYiApO1xcblxcdFxcdFxcdGFkZFZlcnRleCggZCApO1xcblxcblxcdFxcdFxcdGFkZFZlcnRleCggYiApO1xcblxcdFxcdFxcdGFkZFZlcnRleCggYyApO1xcblxcdFxcdFxcdGFkZFZlcnRleCggZCApO1xcblxcblxcblxcdFxcdFxcdHZhciBuZXh0SW5kZXggPSB2ZXJ0aWNlc0FycmF5Lmxlbmd0aCAvIDM7XFxuXFx0XFx0XFx0dmFyIHV2cyA9IHV2Z2VuLmdlbmVyYXRlU2lkZVdhbGxVViggc2NvcGUsIHZlcnRpY2VzQXJyYXksIG5leHRJbmRleCAtIDYsIG5leHRJbmRleCAtIDMsIG5leHRJbmRleCAtIDIsIG5leHRJbmRleCAtIDEgKTtcXG5cXG5cXHRcXHRcXHRhZGRVViggdXZzWyAwIF0gKTtcXG5cXHRcXHRcXHRhZGRVViggdXZzWyAxIF0gKTtcXG5cXHRcXHRcXHRhZGRVViggdXZzWyAzIF0gKTtcXG5cXG5cXHRcXHRcXHRhZGRVViggdXZzWyAxIF0gKTtcXG5cXHRcXHRcXHRhZGRVViggdXZzWyAyIF0gKTtcXG5cXHRcXHRcXHRhZGRVViggdXZzWyAzIF0gKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gYWRkVmVydGV4KCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRpbmRpY2VzQXJyYXkucHVzaCggdmVydGljZXNBcnJheS5sZW5ndGggLyAzICk7XFxuXFx0XFx0XFx0dmVydGljZXNBcnJheS5wdXNoKCBwbGFjZWhvbGRlclsgaW5kZXggKiAzICsgMCBdICk7XFxuXFx0XFx0XFx0dmVydGljZXNBcnJheS5wdXNoKCBwbGFjZWhvbGRlclsgaW5kZXggKiAzICsgMSBdICk7XFxuXFx0XFx0XFx0dmVydGljZXNBcnJheS5wdXNoKCBwbGFjZWhvbGRlclsgaW5kZXggKiAzICsgMiBdICk7XFxuXFxuXFx0XFx0fVxcblxcblxcblxcdFxcdGZ1bmN0aW9uIGFkZFVWKCB2ZWN0b3IyICkge1xcblxcblxcdFxcdFxcdHV2QXJyYXkucHVzaCggdmVjdG9yMi54ICk7XFxuXFx0XFx0XFx0dXZBcnJheS5wdXNoKCB2ZWN0b3IyLnkgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aWYgKCAhIG9wdGlvbnMuYXJyYXlzICkge1xcblxcblxcdFxcdFxcdHRoaXMuc2V0SW5kZXgoIGluZGljZXNBcnJheSApO1xcblxcdFxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXNBcnJheSwgMyApICk7XFxuXFx0XFx0XFx0dGhpcy5hZGRBdHRyaWJ1dGUoICd1dicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB1dkFycmF5LCAyICkgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fTtcXG5cXG5cXHRFeHRydWRlR2VvbWV0cnkuV29ybGRVVkdlbmVyYXRvciA9IHtcXG5cXG5cXHRcXHRnZW5lcmF0ZVRvcFVWOiBmdW5jdGlvbiAoIGdlb21ldHJ5LCB2ZXJ0aWNlcywgaW5kZXhBLCBpbmRleEIsIGluZGV4QyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYV94ID0gdmVydGljZXNbIGluZGV4QSAqIDMgXTtcXG5cXHRcXHRcXHR2YXIgYV95ID0gdmVydGljZXNbIGluZGV4QSAqIDMgKyAxIF07XFxuXFx0XFx0XFx0dmFyIGJfeCA9IHZlcnRpY2VzWyBpbmRleEIgKiAzIF07XFxuXFx0XFx0XFx0dmFyIGJfeSA9IHZlcnRpY2VzWyBpbmRleEIgKiAzICsgMSBdO1xcblxcdFxcdFxcdHZhciBjX3ggPSB2ZXJ0aWNlc1sgaW5kZXhDICogMyBdO1xcblxcdFxcdFxcdHZhciBjX3kgPSB2ZXJ0aWNlc1sgaW5kZXhDICogMyArIDEgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gW1xcblxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBhX3gsIGFfeSApLFxcblxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBiX3gsIGJfeSApLFxcblxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBjX3gsIGNfeSApXFxuXFx0XFx0XFx0XTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdlbmVyYXRlU2lkZVdhbGxVVjogZnVuY3Rpb24gKCBnZW9tZXRyeSwgdmVydGljZXMsIGluZGV4QSwgaW5kZXhCLCBpbmRleEMsIGluZGV4RCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYV94ID0gdmVydGljZXNbIGluZGV4QSAqIDMgXTtcXG5cXHRcXHRcXHR2YXIgYV95ID0gdmVydGljZXNbIGluZGV4QSAqIDMgKyAxIF07XFxuXFx0XFx0XFx0dmFyIGFfeiA9IHZlcnRpY2VzWyBpbmRleEEgKiAzICsgMiBdO1xcblxcdFxcdFxcdHZhciBiX3ggPSB2ZXJ0aWNlc1sgaW5kZXhCICogMyBdO1xcblxcdFxcdFxcdHZhciBiX3kgPSB2ZXJ0aWNlc1sgaW5kZXhCICogMyArIDEgXTtcXG5cXHRcXHRcXHR2YXIgYl96ID0gdmVydGljZXNbIGluZGV4QiAqIDMgKyAyIF07XFxuXFx0XFx0XFx0dmFyIGNfeCA9IHZlcnRpY2VzWyBpbmRleEMgKiAzIF07XFxuXFx0XFx0XFx0dmFyIGNfeSA9IHZlcnRpY2VzWyBpbmRleEMgKiAzICsgMSBdO1xcblxcdFxcdFxcdHZhciBjX3ogPSB2ZXJ0aWNlc1sgaW5kZXhDICogMyArIDIgXTtcXG5cXHRcXHRcXHR2YXIgZF94ID0gdmVydGljZXNbIGluZGV4RCAqIDMgXTtcXG5cXHRcXHRcXHR2YXIgZF95ID0gdmVydGljZXNbIGluZGV4RCAqIDMgKyAxIF07XFxuXFx0XFx0XFx0dmFyIGRfeiA9IHZlcnRpY2VzWyBpbmRleEQgKiAzICsgMiBdO1xcblxcblxcdFxcdFxcdGlmICggTWF0aC5hYnMoIGFfeSAtIGJfeSApIDwgMC4wMSApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gW1xcblxcdFxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBhX3gsIDEgLSBhX3ogKSxcXG5cXHRcXHRcXHRcXHRcXHRuZXcgVmVjdG9yMiggYl94LCAxIC0gYl96ICksXFxuXFx0XFx0XFx0XFx0XFx0bmV3IFZlY3RvcjIoIGNfeCwgMSAtIGNfeiApLFxcblxcdFxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBkX3gsIDEgLSBkX3ogKVxcblxcdFxcdFxcdFxcdF07XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gW1xcblxcdFxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBhX3ksIDEgLSBhX3ogKSxcXG5cXHRcXHRcXHRcXHRcXHRuZXcgVmVjdG9yMiggYl95LCAxIC0gYl96ICksXFxuXFx0XFx0XFx0XFx0XFx0bmV3IFZlY3RvcjIoIGNfeSwgMSAtIGNfeiApLFxcblxcdFxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBkX3ksIDEgLSBkX3ogKVxcblxcdFxcdFxcdFxcdF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igeno4NSAvIGh0dHA6Ly93d3cubGFiNGdhbWVzLm5ldC96ejg1L2Jsb2dcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqXFxuXFx0ICogVGV4dCA9IDNEIFRleHRcXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGZvbnQ6IDxUSFJFRS5Gb250PiwgLy8gZm9udFxcblxcdCAqXFxuXFx0ICogIHNpemU6IDxmbG9hdD4sIC8vIHNpemUgb2YgdGhlIHRleHRcXG5cXHQgKiAgaGVpZ2h0OiA8ZmxvYXQ+LCAvLyB0aGlja25lc3MgdG8gZXh0cnVkZSB0ZXh0XFxuXFx0ICogIGN1cnZlU2VnbWVudHM6IDxpbnQ+LCAvLyBudW1iZXIgb2YgcG9pbnRzIG9uIHRoZSBjdXJ2ZXNcXG5cXHQgKlxcblxcdCAqICBiZXZlbEVuYWJsZWQ6IDxib29sPiwgLy8gdHVybiBvbiBiZXZlbFxcblxcdCAqICBiZXZlbFRoaWNrbmVzczogPGZsb2F0PiwgLy8gaG93IGRlZXAgaW50byB0ZXh0IGJldmVsIGdvZXNcXG5cXHQgKiAgYmV2ZWxTaXplOiA8ZmxvYXQ+IC8vIGhvdyBmYXIgZnJvbSB0ZXh0IG91dGxpbmUgaXMgYmV2ZWxcXG5cXHQgKiB9XFxuXFx0ICovXFxuXFxuXFx0Ly8gVGV4dEdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gVGV4dEdlb21ldHJ5KCB0ZXh0LCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdEdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnVGV4dEdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0dGV4dDogdGV4dCxcXG5cXHRcXHRcXHRwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmZyb21CdWZmZXJHZW9tZXRyeSggbmV3IFRleHRCdWZmZXJHZW9tZXRyeSggdGV4dCwgcGFyYW1ldGVycyApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdFRleHRHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRUZXh0R2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVGV4dEdlb21ldHJ5O1xcblxcblxcdC8vIFRleHRCdWZmZXJHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIFRleHRCdWZmZXJHZW9tZXRyeSggdGV4dCwgcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHRwYXJhbWV0ZXJzID0gcGFyYW1ldGVycyB8fCB7fTtcXG5cXG5cXHRcXHR2YXIgZm9udCA9IHBhcmFtZXRlcnMuZm9udDtcXG5cXG5cXHRcXHRpZiAoICEgKCBmb250ICYmIGZvbnQuaXNGb250ICkgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlRleHRHZW9tZXRyeTogZm9udCBwYXJhbWV0ZXIgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkZvbnQuJyApO1xcblxcdFxcdFxcdHJldHVybiBuZXcgR2VvbWV0cnkoKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dmFyIHNoYXBlcyA9IGZvbnQuZ2VuZXJhdGVTaGFwZXMoIHRleHQsIHBhcmFtZXRlcnMuc2l6ZSwgcGFyYW1ldGVycy5jdXJ2ZVNlZ21lbnRzICk7XFxuXFxuXFx0XFx0Ly8gdHJhbnNsYXRlIHBhcmFtZXRlcnMgdG8gRXh0cnVkZUdlb21ldHJ5IEFQSVxcblxcblxcdFxcdHBhcmFtZXRlcnMuYW1vdW50ID0gcGFyYW1ldGVycy5oZWlnaHQgIT09IHVuZGVmaW5lZCA/IHBhcmFtZXRlcnMuaGVpZ2h0IDogNTA7XFxuXFxuXFx0XFx0Ly8gZGVmYXVsdHNcXG5cXG5cXHRcXHRpZiAoIHBhcmFtZXRlcnMuYmV2ZWxUaGlja25lc3MgPT09IHVuZGVmaW5lZCApIHBhcmFtZXRlcnMuYmV2ZWxUaGlja25lc3MgPSAxMDtcXG5cXHRcXHRpZiAoIHBhcmFtZXRlcnMuYmV2ZWxTaXplID09PSB1bmRlZmluZWQgKSBwYXJhbWV0ZXJzLmJldmVsU2l6ZSA9IDg7XFxuXFx0XFx0aWYgKCBwYXJhbWV0ZXJzLmJldmVsRW5hYmxlZCA9PT0gdW5kZWZpbmVkICkgcGFyYW1ldGVycy5iZXZlbEVuYWJsZWQgPSBmYWxzZTtcXG5cXG5cXHRcXHRFeHRydWRlQnVmZmVyR2VvbWV0cnkuY2FsbCggdGhpcywgc2hhcGVzLCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1RleHRCdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0fVxcblxcblxcdFRleHRCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBFeHRydWRlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0VGV4dEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRleHRCdWZmZXJHZW9tZXRyeTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgYmVuYWFkYW1zIC8gaHR0cHM6Ly90d2l0dGVyLmNvbS9iZW5fYV9hZGFtc1xcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICovXFxuXFxuXFx0Ly8gU3BoZXJlR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBTcGhlcmVHZW9tZXRyeSggcmFkaXVzLCB3aWR0aFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cywgcGhpU3RhcnQsIHBoaUxlbmd0aCwgdGhldGFTdGFydCwgdGhldGFMZW5ndGggKSB7XFxuXFxuXFx0XFx0R2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdTcGhlcmVHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHJhZGl1czogcmFkaXVzLFxcblxcdFxcdFxcdHdpZHRoU2VnbWVudHM6IHdpZHRoU2VnbWVudHMsXFxuXFx0XFx0XFx0aGVpZ2h0U2VnbWVudHM6IGhlaWdodFNlZ21lbnRzLFxcblxcdFxcdFxcdHBoaVN0YXJ0OiBwaGlTdGFydCxcXG5cXHRcXHRcXHRwaGlMZW5ndGg6IHBoaUxlbmd0aCxcXG5cXHRcXHRcXHR0aGV0YVN0YXJ0OiB0aGV0YVN0YXJ0LFxcblxcdFxcdFxcdHRoZXRhTGVuZ3RoOiB0aGV0YUxlbmd0aFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBTcGhlcmVCdWZmZXJHZW9tZXRyeSggcmFkaXVzLCB3aWR0aFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cywgcGhpU3RhcnQsIHBoaUxlbmd0aCwgdGhldGFTdGFydCwgdGhldGFMZW5ndGggKSApO1xcblxcdFxcdHRoaXMubWVyZ2VWZXJ0aWNlcygpO1xcblxcblxcdH1cXG5cXG5cXHRTcGhlcmVHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRTcGhlcmVHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTcGhlcmVHZW9tZXRyeTtcXG5cXG5cXHQvLyBTcGhlcmVCdWZmZXJHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIFNwaGVyZUJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIHdpZHRoU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzLCBwaGlTdGFydCwgcGhpTGVuZ3RoLCB0aGV0YVN0YXJ0LCB0aGV0YUxlbmd0aCApIHtcXG5cXG5cXHRcXHRCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1NwaGVyZUJ1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0cmFkaXVzOiByYWRpdXMsXFxuXFx0XFx0XFx0d2lkdGhTZWdtZW50czogd2lkdGhTZWdtZW50cyxcXG5cXHRcXHRcXHRoZWlnaHRTZWdtZW50czogaGVpZ2h0U2VnbWVudHMsXFxuXFx0XFx0XFx0cGhpU3RhcnQ6IHBoaVN0YXJ0LFxcblxcdFxcdFxcdHBoaUxlbmd0aDogcGhpTGVuZ3RoLFxcblxcdFxcdFxcdHRoZXRhU3RhcnQ6IHRoZXRhU3RhcnQsXFxuXFx0XFx0XFx0dGhldGFMZW5ndGg6IHRoZXRhTGVuZ3RoXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHRyYWRpdXMgPSByYWRpdXMgfHwgMTtcXG5cXG5cXHRcXHR3aWR0aFNlZ21lbnRzID0gTWF0aC5tYXgoIDMsIE1hdGguZmxvb3IoIHdpZHRoU2VnbWVudHMgKSB8fCA4ICk7XFxuXFx0XFx0aGVpZ2h0U2VnbWVudHMgPSBNYXRoLm1heCggMiwgTWF0aC5mbG9vciggaGVpZ2h0U2VnbWVudHMgKSB8fCA2ICk7XFxuXFxuXFx0XFx0cGhpU3RhcnQgPSBwaGlTdGFydCAhPT0gdW5kZWZpbmVkID8gcGhpU3RhcnQgOiAwO1xcblxcdFxcdHBoaUxlbmd0aCA9IHBoaUxlbmd0aCAhPT0gdW5kZWZpbmVkID8gcGhpTGVuZ3RoIDogTWF0aC5QSSAqIDI7XFxuXFxuXFx0XFx0dGhldGFTdGFydCA9IHRoZXRhU3RhcnQgIT09IHVuZGVmaW5lZCA/IHRoZXRhU3RhcnQgOiAwO1xcblxcdFxcdHRoZXRhTGVuZ3RoID0gdGhldGFMZW5ndGggIT09IHVuZGVmaW5lZCA/IHRoZXRhTGVuZ3RoIDogTWF0aC5QSTtcXG5cXG5cXHRcXHR2YXIgdGhldGFFbmQgPSB0aGV0YVN0YXJ0ICsgdGhldGFMZW5ndGg7XFxuXFxuXFx0XFx0dmFyIGl4LCBpeTtcXG5cXG5cXHRcXHR2YXIgaW5kZXggPSAwO1xcblxcdFxcdHZhciBncmlkID0gW107XFxuXFxuXFx0XFx0dmFyIHZlcnRleCA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIG5vcm1hbCA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0Ly8gYnVmZmVyc1xcblxcblxcdFxcdHZhciBpbmRpY2VzID0gW107XFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW107XFxuXFx0XFx0dmFyIG5vcm1hbHMgPSBbXTtcXG5cXHRcXHR2YXIgdXZzID0gW107XFxuXFxuXFx0XFx0Ly8gZ2VuZXJhdGUgdmVydGljZXMsIG5vcm1hbHMgYW5kIHV2c1xcblxcblxcdFxcdGZvciAoIGl5ID0gMDsgaXkgPD0gaGVpZ2h0U2VnbWVudHM7IGl5ICsrICkge1xcblxcblxcdFxcdFxcdHZhciB2ZXJ0aWNlc1JvdyA9IFtdO1xcblxcblxcdFxcdFxcdHZhciB2ID0gaXkgLyBoZWlnaHRTZWdtZW50cztcXG5cXG5cXHRcXHRcXHRmb3IgKCBpeCA9IDA7IGl4IDw9IHdpZHRoU2VnbWVudHM7IGl4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB1ID0gaXggLyB3aWR0aFNlZ21lbnRzO1xcblxcblxcdFxcdFxcdFxcdC8vIHZlcnRleFxcblxcblxcdFxcdFxcdFxcdHZlcnRleC54ID0gLSByYWRpdXMgKiBNYXRoLmNvcyggcGhpU3RhcnQgKyB1ICogcGhpTGVuZ3RoICkgKiBNYXRoLnNpbiggdGhldGFTdGFydCArIHYgKiB0aGV0YUxlbmd0aCApO1xcblxcdFxcdFxcdFxcdHZlcnRleC55ID0gcmFkaXVzICogTWF0aC5jb3MoIHRoZXRhU3RhcnQgKyB2ICogdGhldGFMZW5ndGggKTtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueiA9IHJhZGl1cyAqIE1hdGguc2luKCBwaGlTdGFydCArIHUgKiBwaGlMZW5ndGggKSAqIE1hdGguc2luKCB0aGV0YVN0YXJ0ICsgdiAqIHRoZXRhTGVuZ3RoICk7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggdmVydGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiApO1xcblxcblxcdFxcdFxcdFxcdC8vIG5vcm1hbFxcblxcblxcdFxcdFxcdFxcdG5vcm1hbC5zZXQoIHZlcnRleC54LCB2ZXJ0ZXgueSwgdmVydGV4LnogKS5ub3JtYWxpemUoKTtcXG5cXHRcXHRcXHRcXHRub3JtYWxzLnB1c2goIG5vcm1hbC54LCBub3JtYWwueSwgbm9ybWFsLnogKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyB1dlxcblxcblxcdFxcdFxcdFxcdHV2cy5wdXNoKCB1LCAxIC0gdiApO1xcblxcblxcdFxcdFxcdFxcdHZlcnRpY2VzUm93LnB1c2goIGluZGV4ICsrICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGdyaWQucHVzaCggdmVydGljZXNSb3cgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gaW5kaWNlc1xcblxcblxcdFxcdGZvciAoIGl5ID0gMDsgaXkgPCBoZWlnaHRTZWdtZW50czsgaXkgKysgKSB7XFxuXFxuXFx0XFx0XFx0Zm9yICggaXggPSAwOyBpeCA8IHdpZHRoU2VnbWVudHM7IGl4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBhID0gZ3JpZFsgaXkgXVsgaXggKyAxIF07XFxuXFx0XFx0XFx0XFx0dmFyIGIgPSBncmlkWyBpeSBdWyBpeCBdO1xcblxcdFxcdFxcdFxcdHZhciBjID0gZ3JpZFsgaXkgKyAxIF1bIGl4IF07XFxuXFx0XFx0XFx0XFx0dmFyIGQgPSBncmlkWyBpeSArIDEgXVsgaXggKyAxIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpeSAhPT0gMCB8fCB0aGV0YVN0YXJ0ID4gMCApIGluZGljZXMucHVzaCggYSwgYiwgZCApO1xcblxcdFxcdFxcdFxcdGlmICggaXkgIT09IGhlaWdodFNlZ21lbnRzIC0gMSB8fCB0aGV0YUVuZCA8IE1hdGguUEkgKSBpbmRpY2VzLnB1c2goIGIsIGMsIGQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGJ1aWxkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggaW5kaWNlcyApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5vcm1hbHMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdXZzLCAyICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0U3BoZXJlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0U3BoZXJlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3BoZXJlQnVmZmVyR2VvbWV0cnk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBLYWxlYiBNdXJwaHlcXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIFJpbmdHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIFJpbmdHZW9tZXRyeSggaW5uZXJSYWRpdXMsIG91dGVyUmFkaXVzLCB0aGV0YVNlZ21lbnRzLCBwaGlTZWdtZW50cywgdGhldGFTdGFydCwgdGhldGFMZW5ndGggKSB7XFxuXFxuXFx0XFx0R2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdSaW5nR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRpbm5lclJhZGl1czogaW5uZXJSYWRpdXMsXFxuXFx0XFx0XFx0b3V0ZXJSYWRpdXM6IG91dGVyUmFkaXVzLFxcblxcdFxcdFxcdHRoZXRhU2VnbWVudHM6IHRoZXRhU2VnbWVudHMsXFxuXFx0XFx0XFx0cGhpU2VnbWVudHM6IHBoaVNlZ21lbnRzLFxcblxcdFxcdFxcdHRoZXRhU3RhcnQ6IHRoZXRhU3RhcnQsXFxuXFx0XFx0XFx0dGhldGFMZW5ndGg6IHRoZXRhTGVuZ3RoXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmZyb21CdWZmZXJHZW9tZXRyeSggbmV3IFJpbmdCdWZmZXJHZW9tZXRyeSggaW5uZXJSYWRpdXMsIG91dGVyUmFkaXVzLCB0aGV0YVNlZ21lbnRzLCBwaGlTZWdtZW50cywgdGhldGFTdGFydCwgdGhldGFMZW5ndGggKSApO1xcblxcdFxcdHRoaXMubWVyZ2VWZXJ0aWNlcygpO1xcblxcblxcdH1cXG5cXG5cXHRSaW5nR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0UmluZ0dlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJpbmdHZW9tZXRyeTtcXG5cXG5cXHQvLyBSaW5nQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBSaW5nQnVmZmVyR2VvbWV0cnkoIGlubmVyUmFkaXVzLCBvdXRlclJhZGl1cywgdGhldGFTZWdtZW50cywgcGhpU2VnbWVudHMsIHRoZXRhU3RhcnQsIHRoZXRhTGVuZ3RoICkge1xcblxcblxcdFxcdEJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUmluZ0J1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0aW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzLFxcblxcdFxcdFxcdG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcXG5cXHRcXHRcXHR0aGV0YVNlZ21lbnRzOiB0aGV0YVNlZ21lbnRzLFxcblxcdFxcdFxcdHBoaVNlZ21lbnRzOiBwaGlTZWdtZW50cyxcXG5cXHRcXHRcXHR0aGV0YVN0YXJ0OiB0aGV0YVN0YXJ0LFxcblxcdFxcdFxcdHRoZXRhTGVuZ3RoOiB0aGV0YUxlbmd0aFxcblxcdFxcdH07XFxuXFxuXFx0XFx0aW5uZXJSYWRpdXMgPSBpbm5lclJhZGl1cyB8fCAwLjU7XFxuXFx0XFx0b3V0ZXJSYWRpdXMgPSBvdXRlclJhZGl1cyB8fCAxO1xcblxcblxcdFxcdHRoZXRhU3RhcnQgPSB0aGV0YVN0YXJ0ICE9PSB1bmRlZmluZWQgPyB0aGV0YVN0YXJ0IDogMDtcXG5cXHRcXHR0aGV0YUxlbmd0aCA9IHRoZXRhTGVuZ3RoICE9PSB1bmRlZmluZWQgPyB0aGV0YUxlbmd0aCA6IE1hdGguUEkgKiAyO1xcblxcblxcdFxcdHRoZXRhU2VnbWVudHMgPSB0aGV0YVNlZ21lbnRzICE9PSB1bmRlZmluZWQgPyBNYXRoLm1heCggMywgdGhldGFTZWdtZW50cyApIDogODtcXG5cXHRcXHRwaGlTZWdtZW50cyA9IHBoaVNlZ21lbnRzICE9PSB1bmRlZmluZWQgPyBNYXRoLm1heCggMSwgcGhpU2VnbWVudHMgKSA6IDE7XFxuXFxuXFx0XFx0Ly8gYnVmZmVyc1xcblxcblxcdFxcdHZhciBpbmRpY2VzID0gW107XFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW107XFxuXFx0XFx0dmFyIG5vcm1hbHMgPSBbXTtcXG5cXHRcXHR2YXIgdXZzID0gW107XFxuXFxuXFx0XFx0Ly8gc29tZSBoZWxwZXIgdmFyaWFibGVzXFxuXFxuXFx0XFx0dmFyIHNlZ21lbnQ7XFxuXFx0XFx0dmFyIHJhZGl1cyA9IGlubmVyUmFkaXVzO1xcblxcdFxcdHZhciByYWRpdXNTdGVwID0gKCAoIG91dGVyUmFkaXVzIC0gaW5uZXJSYWRpdXMgKSAvIHBoaVNlZ21lbnRzICk7XFxuXFx0XFx0dmFyIHZlcnRleCA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIHV2ID0gbmV3IFZlY3RvcjIoKTtcXG5cXHRcXHR2YXIgaiwgaTtcXG5cXG5cXHRcXHQvLyBnZW5lcmF0ZSB2ZXJ0aWNlcywgbm9ybWFscyBhbmQgdXZzXFxuXFxuXFx0XFx0Zm9yICggaiA9IDA7IGogPD0gcGhpU2VnbWVudHM7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPD0gdGhldGFTZWdtZW50czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyB2YWx1ZXMgYXJlIGdlbmVyYXRlIGZyb20gdGhlIGluc2lkZSBvZiB0aGUgcmluZyB0byB0aGUgb3V0c2lkZVxcblxcblxcdFxcdFxcdFxcdHNlZ21lbnQgPSB0aGV0YVN0YXJ0ICsgaSAvIHRoZXRhU2VnbWVudHMgKiB0aGV0YUxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHQvLyB2ZXJ0ZXhcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueCA9IHJhZGl1cyAqIE1hdGguY29zKCBzZWdtZW50ICk7XFxuXFx0XFx0XFx0XFx0dmVydGV4LnkgPSByYWRpdXMgKiBNYXRoLnNpbiggc2VnbWVudCApO1xcblxcblxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHZlcnRleC54LCB2ZXJ0ZXgueSwgdmVydGV4LnogKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub3JtYWxcXG5cXG5cXHRcXHRcXHRcXHRub3JtYWxzLnB1c2goIDAsIDAsIDEgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyB1dlxcblxcblxcdFxcdFxcdFxcdHV2LnggPSAoIHZlcnRleC54IC8gb3V0ZXJSYWRpdXMgKyAxICkgLyAyO1xcblxcdFxcdFxcdFxcdHV2LnkgPSAoIHZlcnRleC55IC8gb3V0ZXJSYWRpdXMgKyAxICkgLyAyO1xcblxcblxcdFxcdFxcdFxcdHV2cy5wdXNoKCB1di54LCB1di55ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGluY3JlYXNlIHRoZSByYWRpdXMgZm9yIG5leHQgcm93IG9mIHZlcnRpY2VzXFxuXFxuXFx0XFx0XFx0cmFkaXVzICs9IHJhZGl1c1N0ZXA7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGluZGljZXNcXG5cXG5cXHRcXHRmb3IgKCBqID0gMDsgaiA8IHBoaVNlZ21lbnRzOyBqICsrICkge1xcblxcblxcdFxcdFxcdHZhciB0aGV0YVNlZ21lbnRMZXZlbCA9IGogKiAoIHRoZXRhU2VnbWVudHMgKyAxICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPCB0aGV0YVNlZ21lbnRzOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHNlZ21lbnQgPSBpICsgdGhldGFTZWdtZW50TGV2ZWw7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGEgPSBzZWdtZW50O1xcblxcdFxcdFxcdFxcdHZhciBiID0gc2VnbWVudCArIHRoZXRhU2VnbWVudHMgKyAxO1xcblxcdFxcdFxcdFxcdHZhciBjID0gc2VnbWVudCArIHRoZXRhU2VnbWVudHMgKyAyO1xcblxcdFxcdFxcdFxcdHZhciBkID0gc2VnbWVudCArIDE7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZmFjZXNcXG5cXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGEsIGIsIGQgKTtcXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGIsIGMsIGQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGJ1aWxkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggaW5kaWNlcyApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5vcm1hbHMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdXZzLCAyICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0UmluZ0J1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdFJpbmdCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBSaW5nQnVmZmVyR2VvbWV0cnk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhc3Ryb2R1ZCAvIGh0dHA6Ly9hc3Ryb2R1ZC5pc2dyZWF0Lm9yZy9cXG5cXHQgKiBAYXV0aG9yIHp6ODUgLyBodHRwczovL2dpdGh1Yi5jb20veno4NVxcblxcdCAqIEBhdXRob3IgYmhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW9cXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIExhdGhlR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBMYXRoZUdlb21ldHJ5KCBwb2ludHMsIHNlZ21lbnRzLCBwaGlTdGFydCwgcGhpTGVuZ3RoICkge1xcblxcblxcdFxcdEdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTGF0aGVHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHBvaW50czogcG9pbnRzLFxcblxcdFxcdFxcdHNlZ21lbnRzOiBzZWdtZW50cyxcXG5cXHRcXHRcXHRwaGlTdGFydDogcGhpU3RhcnQsXFxuXFx0XFx0XFx0cGhpTGVuZ3RoOiBwaGlMZW5ndGhcXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KCBuZXcgTGF0aGVCdWZmZXJHZW9tZXRyeSggcG9pbnRzLCBzZWdtZW50cywgcGhpU3RhcnQsIHBoaUxlbmd0aCApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdExhdGhlR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0TGF0aGVHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXRoZUdlb21ldHJ5O1xcblxcblxcdC8vIExhdGhlQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBMYXRoZUJ1ZmZlckdlb21ldHJ5KCBwb2ludHMsIHNlZ21lbnRzLCBwaGlTdGFydCwgcGhpTGVuZ3RoICkge1xcblxcblxcdFxcdEJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTGF0aGVCdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHBvaW50czogcG9pbnRzLFxcblxcdFxcdFxcdHNlZ21lbnRzOiBzZWdtZW50cyxcXG5cXHRcXHRcXHRwaGlTdGFydDogcGhpU3RhcnQsXFxuXFx0XFx0XFx0cGhpTGVuZ3RoOiBwaGlMZW5ndGhcXG5cXHRcXHR9O1xcblxcblxcdFxcdHNlZ21lbnRzID0gTWF0aC5mbG9vciggc2VnbWVudHMgKSB8fCAxMjtcXG5cXHRcXHRwaGlTdGFydCA9IHBoaVN0YXJ0IHx8IDA7XFxuXFx0XFx0cGhpTGVuZ3RoID0gcGhpTGVuZ3RoIHx8IE1hdGguUEkgKiAyO1xcblxcblxcdFxcdC8vIGNsYW1wIHBoaUxlbmd0aCBzbyBpdCdzIGluIHJhbmdlIG9mIFsgMCwgMlBJIF1cXG5cXG5cXHRcXHRwaGlMZW5ndGggPSBfTWF0aC5jbGFtcCggcGhpTGVuZ3RoLCAwLCBNYXRoLlBJICogMiApO1xcblxcblxcblxcdFxcdC8vIGJ1ZmZlcnNcXG5cXG5cXHRcXHR2YXIgaW5kaWNlcyA9IFtdO1xcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciB1dnMgPSBbXTtcXG5cXG5cXHRcXHQvLyBoZWxwZXIgdmFyaWFibGVzXFxuXFxuXFx0XFx0dmFyIGJhc2U7XFxuXFx0XFx0dmFyIGludmVyc2VTZWdtZW50cyA9IDEuMCAvIHNlZ21lbnRzO1xcblxcdFxcdHZhciB2ZXJ0ZXggPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciB1diA9IG5ldyBWZWN0b3IyKCk7XFxuXFx0XFx0dmFyIGksIGo7XFxuXFxuXFx0XFx0Ly8gZ2VuZXJhdGUgdmVydGljZXMgYW5kIHV2c1xcblxcblxcdFxcdGZvciAoIGkgPSAwOyBpIDw9IHNlZ21lbnRzOyBpICsrICkge1xcblxcblxcdFxcdFxcdHZhciBwaGkgPSBwaGlTdGFydCArIGkgKiBpbnZlcnNlU2VnbWVudHMgKiBwaGlMZW5ndGg7XFxuXFxuXFx0XFx0XFx0dmFyIHNpbiA9IE1hdGguc2luKCBwaGkgKTtcXG5cXHRcXHRcXHR2YXIgY29zID0gTWF0aC5jb3MoIHBoaSApO1xcblxcblxcdFxcdFxcdGZvciAoIGogPSAwOyBqIDw9ICggcG9pbnRzLmxlbmd0aCAtIDEgKTsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyB2ZXJ0ZXhcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueCA9IHBvaW50c1sgaiBdLnggKiBzaW47XFxuXFx0XFx0XFx0XFx0dmVydGV4LnkgPSBwb2ludHNbIGogXS55O1xcblxcdFxcdFxcdFxcdHZlcnRleC56ID0gcG9pbnRzWyBqIF0ueCAqIGNvcztcXG5cXG5cXHRcXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB2ZXJ0ZXgueCwgdmVydGV4LnksIHZlcnRleC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdXZcXG5cXG5cXHRcXHRcXHRcXHR1di54ID0gaSAvIHNlZ21lbnRzO1xcblxcdFxcdFxcdFxcdHV2LnkgPSBqIC8gKCBwb2ludHMubGVuZ3RoIC0gMSApO1xcblxcblxcdFxcdFxcdFxcdHV2cy5wdXNoKCB1di54LCB1di55ICk7XFxuXFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBpbmRpY2VzXFxuXFxuXFx0XFx0Zm9yICggaSA9IDA7IGkgPCBzZWdtZW50czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRmb3IgKCBqID0gMDsgaiA8ICggcG9pbnRzLmxlbmd0aCAtIDEgKTsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRiYXNlID0gaiArIGkgKiBwb2ludHMubGVuZ3RoO1xcblxcblxcdFxcdFxcdFxcdHZhciBhID0gYmFzZTtcXG5cXHRcXHRcXHRcXHR2YXIgYiA9IGJhc2UgKyBwb2ludHMubGVuZ3RoO1xcblxcdFxcdFxcdFxcdHZhciBjID0gYmFzZSArIHBvaW50cy5sZW5ndGggKyAxO1xcblxcdFxcdFxcdFxcdHZhciBkID0gYmFzZSArIDE7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZmFjZXNcXG5cXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGEsIGIsIGQgKTtcXG5cXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGIsIGMsIGQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGJ1aWxkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggaW5kaWNlcyApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdXZzLCAyICkgKTtcXG5cXG5cXHRcXHQvLyBnZW5lcmF0ZSBub3JtYWxzXFxuXFxuXFx0XFx0dGhpcy5jb21wdXRlVmVydGV4Tm9ybWFscygpO1xcblxcblxcdFxcdC8vIGlmIHRoZSBnZW9tZXRyeSBpcyBjbG9zZWQsIHdlIG5lZWQgdG8gYXZlcmFnZSB0aGUgbm9ybWFscyBhbG9uZyB0aGUgc2VhbS5cXG5cXHRcXHQvLyBiZWNhdXNlIHRoZSBjb3JyZXNwb25kaW5nIHZlcnRpY2VzIGFyZSBpZGVudGljYWwgKGJ1dCBzdGlsbCBoYXZlIGRpZmZlcmVudCBVVnMpLlxcblxcblxcdFxcdGlmICggcGhpTGVuZ3RoID09PSBNYXRoLlBJICogMiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbm9ybWFscyA9IHRoaXMuYXR0cmlidXRlcy5ub3JtYWwuYXJyYXk7XFxuXFx0XFx0XFx0dmFyIG4xID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgbjIgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBuID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHQvLyB0aGlzIGlzIHRoZSBidWZmZXIgb2Zmc2V0IGZvciB0aGUgbGFzdCBsaW5lIG9mIHZlcnRpY2VzXFxuXFxuXFx0XFx0XFx0YmFzZSA9IHNlZ21lbnRzICogcG9pbnRzLmxlbmd0aCAqIDM7XFxuXFxuXFx0XFx0XFx0Zm9yICggaSA9IDAsIGogPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSArKywgaiArPSAzICkge1xcblxcblxcdFxcdFxcdFxcdC8vIHNlbGVjdCB0aGUgbm9ybWFsIG9mIHRoZSB2ZXJ0ZXggaW4gdGhlIGZpcnN0IGxpbmVcXG5cXG5cXHRcXHRcXHRcXHRuMS54ID0gbm9ybWFsc1sgaiArIDAgXTtcXG5cXHRcXHRcXHRcXHRuMS55ID0gbm9ybWFsc1sgaiArIDEgXTtcXG5cXHRcXHRcXHRcXHRuMS56ID0gbm9ybWFsc1sgaiArIDIgXTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBzZWxlY3QgdGhlIG5vcm1hbCBvZiB0aGUgdmVydGV4IGluIHRoZSBsYXN0IGxpbmVcXG5cXG5cXHRcXHRcXHRcXHRuMi54ID0gbm9ybWFsc1sgYmFzZSArIGogKyAwIF07XFxuXFx0XFx0XFx0XFx0bjIueSA9IG5vcm1hbHNbIGJhc2UgKyBqICsgMSBdO1xcblxcdFxcdFxcdFxcdG4yLnogPSBub3JtYWxzWyBiYXNlICsgaiArIDIgXTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBhdmVyYWdlIG5vcm1hbHNcXG5cXG5cXHRcXHRcXHRcXHRuLmFkZFZlY3RvcnMoIG4xLCBuMiApLm5vcm1hbGl6ZSgpO1xcblxcblxcdFxcdFxcdFxcdC8vIGFzc2lnbiB0aGUgbmV3IHZhbHVlcyB0byBib3RoIG5vcm1hbHNcXG5cXG5cXHRcXHRcXHRcXHRub3JtYWxzWyBqICsgMCBdID0gbm9ybWFsc1sgYmFzZSArIGogKyAwIF0gPSBuLng7XFxuXFx0XFx0XFx0XFx0bm9ybWFsc1sgaiArIDEgXSA9IG5vcm1hbHNbIGJhc2UgKyBqICsgMSBdID0gbi55O1xcblxcdFxcdFxcdFxcdG5vcm1hbHNbIGogKyAyIF0gPSBub3JtYWxzWyBiYXNlICsgaiArIDIgXSA9IG4uejtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRMYXRoZUJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdExhdGhlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGF0aGVCdWZmZXJHZW9tZXRyeTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGpvbm9icjEgLyBodHRwOi8vam9ub2JyMS5jb21cXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIFNoYXBlR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBTaGFwZUdlb21ldHJ5KCBzaGFwZXMsIGN1cnZlU2VnbWVudHMgKSB7XFxuXFxuXFx0XFx0R2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdTaGFwZUdlb21ldHJ5JztcXG5cXG5cXHRcXHRpZiAoIHR5cGVvZiBjdXJ2ZVNlZ21lbnRzID09PSAnb2JqZWN0JyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5TaGFwZUdlb21ldHJ5OiBPcHRpb25zIHBhcmFtZXRlciBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHRcXHRjdXJ2ZVNlZ21lbnRzID0gY3VydmVTZWdtZW50cy5jdXJ2ZVNlZ21lbnRzO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0c2hhcGVzOiBzaGFwZXMsXFxuXFx0XFx0XFx0Y3VydmVTZWdtZW50czogY3VydmVTZWdtZW50c1xcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBTaGFwZUJ1ZmZlckdlb21ldHJ5KCBzaGFwZXMsIGN1cnZlU2VnbWVudHMgKSApO1xcblxcdFxcdHRoaXMubWVyZ2VWZXJ0aWNlcygpO1xcblxcblxcdH1cXG5cXG5cXHRTaGFwZUdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdFNoYXBlR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2hhcGVHZW9tZXRyeTtcXG5cXG5cXHRTaGFwZUdlb21ldHJ5LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIGRhdGEgPSBHZW9tZXRyeS5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR2YXIgc2hhcGVzID0gdGhpcy5wYXJhbWV0ZXJzLnNoYXBlcztcXG5cXG5cXHRcXHRyZXR1cm4gdG9KU09OKCBzaGFwZXMsIGRhdGEgKTtcXG5cXG5cXHR9O1xcblxcblxcdC8vIFNoYXBlQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBTaGFwZUJ1ZmZlckdlb21ldHJ5KCBzaGFwZXMsIGN1cnZlU2VnbWVudHMgKSB7XFxuXFxuXFx0XFx0QnVmZmVyR2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdTaGFwZUJ1ZmZlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0c2hhcGVzOiBzaGFwZXMsXFxuXFx0XFx0XFx0Y3VydmVTZWdtZW50czogY3VydmVTZWdtZW50c1xcblxcdFxcdH07XFxuXFxuXFx0XFx0Y3VydmVTZWdtZW50cyA9IGN1cnZlU2VnbWVudHMgfHwgMTI7XFxuXFxuXFx0XFx0Ly8gYnVmZmVyc1xcblxcblxcdFxcdHZhciBpbmRpY2VzID0gW107XFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW107XFxuXFx0XFx0dmFyIG5vcm1hbHMgPSBbXTtcXG5cXHRcXHR2YXIgdXZzID0gW107XFxuXFxuXFx0XFx0Ly8gaGVscGVyIHZhcmlhYmxlc1xcblxcblxcdFxcdHZhciBncm91cFN0YXJ0ID0gMDtcXG5cXHRcXHR2YXIgZ3JvdXBDb3VudCA9IDA7XFxuXFxuXFx0XFx0Ly8gYWxsb3cgc2luZ2xlIGFuZCBhcnJheSB2YWx1ZXMgZm9yIFxcXCJzaGFwZXNcXFwiIHBhcmFtZXRlclxcblxcblxcdFxcdGlmICggQXJyYXkuaXNBcnJheSggc2hhcGVzICkgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdGFkZFNoYXBlKCBzaGFwZXMgKTtcXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHNoYXBlcy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YWRkU2hhcGUoIHNoYXBlc1sgaSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5hZGRHcm91cCggZ3JvdXBTdGFydCwgZ3JvdXBDb3VudCwgaSApOyAvLyBlbmFibGVzIE11bHRpTWF0ZXJpYWwgc3VwcG9ydFxcblxcblxcdFxcdFxcdFxcdGdyb3VwU3RhcnQgKz0gZ3JvdXBDb3VudDtcXG5cXHRcXHRcXHRcXHRncm91cENvdW50ID0gMDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGJ1aWxkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggaW5kaWNlcyApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5vcm1hbHMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdXZzLCAyICkgKTtcXG5cXG5cXG5cXHRcXHQvLyBoZWxwZXIgZnVuY3Rpb25zXFxuXFxuXFx0XFx0ZnVuY3Rpb24gYWRkU2hhcGUoIHNoYXBlICkge1xcblxcblxcdFxcdFxcdHZhciBpLCBsLCBzaGFwZUhvbGU7XFxuXFxuXFx0XFx0XFx0dmFyIGluZGV4T2Zmc2V0ID0gdmVydGljZXMubGVuZ3RoIC8gMztcXG5cXHRcXHRcXHR2YXIgcG9pbnRzID0gc2hhcGUuZXh0cmFjdFBvaW50cyggY3VydmVTZWdtZW50cyApO1xcblxcblxcdFxcdFxcdHZhciBzaGFwZVZlcnRpY2VzID0gcG9pbnRzLnNoYXBlO1xcblxcdFxcdFxcdHZhciBzaGFwZUhvbGVzID0gcG9pbnRzLmhvbGVzO1xcblxcblxcdFxcdFxcdC8vIGNoZWNrIGRpcmVjdGlvbiBvZiB2ZXJ0aWNlc1xcblxcblxcdFxcdFxcdGlmICggU2hhcGVVdGlscy5pc0Nsb2NrV2lzZSggc2hhcGVWZXJ0aWNlcyApID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRzaGFwZVZlcnRpY2VzID0gc2hhcGVWZXJ0aWNlcy5yZXZlcnNlKCk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gYWxzbyBjaGVjayBpZiBob2xlcyBhcmUgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvblxcblxcblxcdFxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gc2hhcGVIb2xlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHNoYXBlSG9sZSA9IHNoYXBlSG9sZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIFNoYXBlVXRpbHMuaXNDbG9ja1dpc2UoIHNoYXBlSG9sZSApID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHNoYXBlSG9sZXNbIGkgXSA9IHNoYXBlSG9sZS5yZXZlcnNlKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGZhY2VzID0gU2hhcGVVdGlscy50cmlhbmd1bGF0ZVNoYXBlKCBzaGFwZVZlcnRpY2VzLCBzaGFwZUhvbGVzICk7XFxuXFxuXFx0XFx0XFx0Ly8gam9pbiB2ZXJ0aWNlcyBvZiBpbm5lciBhbmQgb3V0ZXIgcGF0aHMgdG8gYSBzaW5nbGUgYXJyYXlcXG5cXG5cXHRcXHRcXHRmb3IgKCBpID0gMCwgbCA9IHNoYXBlSG9sZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRzaGFwZUhvbGUgPSBzaGFwZUhvbGVzWyBpIF07XFxuXFx0XFx0XFx0XFx0c2hhcGVWZXJ0aWNlcyA9IHNoYXBlVmVydGljZXMuY29uY2F0KCBzaGFwZUhvbGUgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gdmVydGljZXMsIG5vcm1hbHMsIHV2c1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gc2hhcGVWZXJ0aWNlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB2ZXJ0ZXggPSBzaGFwZVZlcnRpY2VzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggdmVydGV4LngsIHZlcnRleC55LCAwICk7XFxuXFx0XFx0XFx0XFx0bm9ybWFscy5wdXNoKCAwLCAwLCAxICk7XFxuXFx0XFx0XFx0XFx0dXZzLnB1c2goIHZlcnRleC54LCB2ZXJ0ZXgueSApOyAvLyB3b3JsZCB1dnNcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gaW5jaWRlc1xcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwLCBsID0gZmFjZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZmFjZSA9IGZhY2VzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGEgPSBmYWNlWyAwIF0gKyBpbmRleE9mZnNldDtcXG5cXHRcXHRcXHRcXHR2YXIgYiA9IGZhY2VbIDEgXSArIGluZGV4T2Zmc2V0O1xcblxcdFxcdFxcdFxcdHZhciBjID0gZmFjZVsgMiBdICsgaW5kZXhPZmZzZXQ7XFxuXFxuXFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBhLCBiLCBjICk7XFxuXFx0XFx0XFx0XFx0Z3JvdXBDb3VudCArPSAzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0fVxcblxcblxcdFNoYXBlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0U2hhcGVCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTaGFwZUJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdFNoYXBlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgZGF0YSA9IEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHZhciBzaGFwZXMgPSB0aGlzLnBhcmFtZXRlcnMuc2hhcGVzO1xcblxcblxcdFxcdHJldHVybiB0b0pTT04oIHNoYXBlcywgZGF0YSApO1xcblxcblxcdH07XFxuXFxuXFx0Ly9cXG5cXG5cXHRmdW5jdGlvbiB0b0pTT04oIHNoYXBlcywgZGF0YSApIHtcXG5cXG5cXHRcXHRkYXRhLnNoYXBlcyA9IFtdO1xcblxcblxcdFxcdGlmICggQXJyYXkuaXNBcnJheSggc2hhcGVzICkgKSB7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gc2hhcGVzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNoYXBlID0gc2hhcGVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0ZGF0YS5zaGFwZXMucHVzaCggc2hhcGUudXVpZCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdGRhdGEuc2hhcGVzLnB1c2goIHNoYXBlcy51dWlkICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdH1cXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEVkZ2VzR2VvbWV0cnkoIGdlb21ldHJ5LCB0aHJlc2hvbGRBbmdsZSApIHtcXG5cXG5cXHRcXHRCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0VkZ2VzR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHR0aHJlc2hvbGRBbmdsZTogdGhyZXNob2xkQW5nbGVcXG5cXHRcXHR9O1xcblxcblxcdFxcdHRocmVzaG9sZEFuZ2xlID0gKCB0aHJlc2hvbGRBbmdsZSAhPT0gdW5kZWZpbmVkICkgPyB0aHJlc2hvbGRBbmdsZSA6IDE7XFxuXFxuXFx0XFx0Ly8gYnVmZmVyXFxuXFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW107XFxuXFxuXFx0XFx0Ly8gaGVscGVyIHZhcmlhYmxlc1xcblxcblxcdFxcdHZhciB0aHJlc2hvbGREb3QgPSBNYXRoLmNvcyggX01hdGguREVHMlJBRCAqIHRocmVzaG9sZEFuZ2xlICk7XFxuXFx0XFx0dmFyIGVkZ2UgPSBbIDAsIDAgXSwgZWRnZXMgPSB7fSwgZWRnZTEsIGVkZ2UyO1xcblxcdFxcdHZhciBrZXksIGtleXMgPSBbICdhJywgJ2InLCAnYycgXTtcXG5cXG5cXHRcXHQvLyBwcmVwYXJlIHNvdXJjZSBnZW9tZXRyeVxcblxcblxcdFxcdHZhciBnZW9tZXRyeTI7XFxuXFxuXFx0XFx0aWYgKCBnZW9tZXRyeS5pc0J1ZmZlckdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdGdlb21ldHJ5MiA9IG5ldyBHZW9tZXRyeSgpO1xcblxcdFxcdFxcdGdlb21ldHJ5Mi5mcm9tQnVmZmVyR2VvbWV0cnkoIGdlb21ldHJ5ICk7XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRnZW9tZXRyeTIgPSBnZW9tZXRyeS5jbG9uZSgpO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRnZW9tZXRyeTIubWVyZ2VWZXJ0aWNlcygpO1xcblxcdFxcdGdlb21ldHJ5Mi5jb21wdXRlRmFjZU5vcm1hbHMoKTtcXG5cXG5cXHRcXHR2YXIgc291cmNlVmVydGljZXMgPSBnZW9tZXRyeTIudmVydGljZXM7XFxuXFx0XFx0dmFyIGZhY2VzID0gZ2VvbWV0cnkyLmZhY2VzO1xcblxcblxcdFxcdC8vIG5vdyBjcmVhdGUgYSBkYXRhIHN0cnVjdHVyZSB3aGVyZSBlYWNoIGVudHJ5IHJlcHJlc2VudHMgYW4gZWRnZSB3aXRoIGl0cyBhZGpvaW5pbmcgZmFjZXNcXG5cXG5cXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBmYWNlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdHZhciBmYWNlID0gZmFjZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaiA9IDA7IGogPCAzOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdGVkZ2UxID0gZmFjZVsga2V5c1sgaiBdIF07XFxuXFx0XFx0XFx0XFx0ZWRnZTIgPSBmYWNlWyBrZXlzWyAoIGogKyAxICkgJSAzIF0gXTtcXG5cXHRcXHRcXHRcXHRlZGdlWyAwIF0gPSBNYXRoLm1pbiggZWRnZTEsIGVkZ2UyICk7XFxuXFx0XFx0XFx0XFx0ZWRnZVsgMSBdID0gTWF0aC5tYXgoIGVkZ2UxLCBlZGdlMiApO1xcblxcblxcdFxcdFxcdFxcdGtleSA9IGVkZ2VbIDAgXSArICcsJyArIGVkZ2VbIDEgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGVkZ2VzWyBrZXkgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGVkZ2VzWyBrZXkgXSA9IHsgaW5kZXgxOiBlZGdlWyAwIF0sIGluZGV4MjogZWRnZVsgMSBdLCBmYWNlMTogaSwgZmFjZTI6IHVuZGVmaW5lZCB9O1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZWRnZXNbIGtleSBdLmZhY2UyID0gaTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBnZW5lcmF0ZSB2ZXJ0aWNlc1xcblxcblxcdFxcdGZvciAoIGtleSBpbiBlZGdlcyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZSA9IGVkZ2VzWyBrZXkgXTtcXG5cXG5cXHRcXHRcXHQvLyBhbiBlZGdlIGlzIG9ubHkgcmVuZGVyZWQgaWYgdGhlIGFuZ2xlIChpbiBkZWdyZWVzKSBiZXR3ZWVuIHRoZSBmYWNlIG5vcm1hbHMgb2YgdGhlIGFkam9pbmluZyBmYWNlcyBleGNlZWRzIHRoaXMgdmFsdWUuIGRlZmF1bHQgPSAxIGRlZ3JlZS5cXG5cXG5cXHRcXHRcXHRpZiAoIGUuZmFjZTIgPT09IHVuZGVmaW5lZCB8fCBmYWNlc1sgZS5mYWNlMSBdLm5vcm1hbC5kb3QoIGZhY2VzWyBlLmZhY2UyIF0ubm9ybWFsICkgPD0gdGhyZXNob2xkRG90ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB2ZXJ0ZXggPSBzb3VyY2VWZXJ0aWNlc1sgZS5pbmRleDEgXTtcXG5cXHRcXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB2ZXJ0ZXgueCwgdmVydGV4LnksIHZlcnRleC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGV4ID0gc291cmNlVmVydGljZXNbIGUuaW5kZXgyIF07XFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggdmVydGV4LngsIHZlcnRleC55LCB2ZXJ0ZXgueiApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly8gYnVpbGQgZ2VvbWV0cnlcXG5cXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHZlcnRpY2VzLCAzICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0RWRnZXNHZW9tZXRyeS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRFZGdlc0dlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEVkZ2VzR2VvbWV0cnk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdC8vIEN5bGluZGVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBDeWxpbmRlckdlb21ldHJ5KCByYWRpdXNUb3AsIHJhZGl1c0JvdHRvbSwgaGVpZ2h0LCByYWRpYWxTZWdtZW50cywgaGVpZ2h0U2VnbWVudHMsIG9wZW5FbmRlZCwgdGhldGFTdGFydCwgdGhldGFMZW5ndGggKSB7XFxuXFxuXFx0XFx0R2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdDeWxpbmRlckdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0cmFkaXVzVG9wOiByYWRpdXNUb3AsXFxuXFx0XFx0XFx0cmFkaXVzQm90dG9tOiByYWRpdXNCb3R0b20sXFxuXFx0XFx0XFx0aGVpZ2h0OiBoZWlnaHQsXFxuXFx0XFx0XFx0cmFkaWFsU2VnbWVudHM6IHJhZGlhbFNlZ21lbnRzLFxcblxcdFxcdFxcdGhlaWdodFNlZ21lbnRzOiBoZWlnaHRTZWdtZW50cyxcXG5cXHRcXHRcXHRvcGVuRW5kZWQ6IG9wZW5FbmRlZCxcXG5cXHRcXHRcXHR0aGV0YVN0YXJ0OiB0aGV0YVN0YXJ0LFxcblxcdFxcdFxcdHRoZXRhTGVuZ3RoOiB0aGV0YUxlbmd0aFxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkoIG5ldyBDeWxpbmRlckJ1ZmZlckdlb21ldHJ5KCByYWRpdXNUb3AsIHJhZGl1c0JvdHRvbSwgaGVpZ2h0LCByYWRpYWxTZWdtZW50cywgaGVpZ2h0U2VnbWVudHMsIG9wZW5FbmRlZCwgdGhldGFTdGFydCwgdGhldGFMZW5ndGggKSApO1xcblxcdFxcdHRoaXMubWVyZ2VWZXJ0aWNlcygpO1xcblxcblxcdH1cXG5cXG5cXHRDeWxpbmRlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdEN5bGluZGVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ3lsaW5kZXJHZW9tZXRyeTtcXG5cXG5cXHQvLyBDeWxpbmRlckJ1ZmZlckdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeSggcmFkaXVzVG9wLCByYWRpdXNCb3R0b20sIGhlaWdodCwgcmFkaWFsU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzLCBvcGVuRW5kZWQsIHRoZXRhU3RhcnQsIHRoZXRhTGVuZ3RoICkge1xcblxcblxcdFxcdEJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHJhZGl1c1RvcDogcmFkaXVzVG9wLFxcblxcdFxcdFxcdHJhZGl1c0JvdHRvbTogcmFkaXVzQm90dG9tLFxcblxcdFxcdFxcdGhlaWdodDogaGVpZ2h0LFxcblxcdFxcdFxcdHJhZGlhbFNlZ21lbnRzOiByYWRpYWxTZWdtZW50cyxcXG5cXHRcXHRcXHRoZWlnaHRTZWdtZW50czogaGVpZ2h0U2VnbWVudHMsXFxuXFx0XFx0XFx0b3BlbkVuZGVkOiBvcGVuRW5kZWQsXFxuXFx0XFx0XFx0dGhldGFTdGFydDogdGhldGFTdGFydCxcXG5cXHRcXHRcXHR0aGV0YUxlbmd0aDogdGhldGFMZW5ndGhcXG5cXHRcXHR9O1xcblxcblxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0cmFkaXVzVG9wID0gcmFkaXVzVG9wICE9PSB1bmRlZmluZWQgPyByYWRpdXNUb3AgOiAxO1xcblxcdFxcdHJhZGl1c0JvdHRvbSA9IHJhZGl1c0JvdHRvbSAhPT0gdW5kZWZpbmVkID8gcmFkaXVzQm90dG9tIDogMTtcXG5cXHRcXHRoZWlnaHQgPSBoZWlnaHQgfHwgMTtcXG5cXG5cXHRcXHRyYWRpYWxTZWdtZW50cyA9IE1hdGguZmxvb3IoIHJhZGlhbFNlZ21lbnRzICkgfHwgODtcXG5cXHRcXHRoZWlnaHRTZWdtZW50cyA9IE1hdGguZmxvb3IoIGhlaWdodFNlZ21lbnRzICkgfHwgMTtcXG5cXG5cXHRcXHRvcGVuRW5kZWQgPSBvcGVuRW5kZWQgIT09IHVuZGVmaW5lZCA/IG9wZW5FbmRlZCA6IGZhbHNlO1xcblxcdFxcdHRoZXRhU3RhcnQgPSB0aGV0YVN0YXJ0ICE9PSB1bmRlZmluZWQgPyB0aGV0YVN0YXJ0IDogMC4wO1xcblxcdFxcdHRoZXRhTGVuZ3RoID0gdGhldGFMZW5ndGggIT09IHVuZGVmaW5lZCA/IHRoZXRhTGVuZ3RoIDogTWF0aC5QSSAqIDI7XFxuXFxuXFx0XFx0Ly8gYnVmZmVyc1xcblxcblxcdFxcdHZhciBpbmRpY2VzID0gW107XFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW107XFxuXFx0XFx0dmFyIG5vcm1hbHMgPSBbXTtcXG5cXHRcXHR2YXIgdXZzID0gW107XFxuXFxuXFx0XFx0Ly8gaGVscGVyIHZhcmlhYmxlc1xcblxcblxcdFxcdHZhciBpbmRleCA9IDA7XFxuXFx0XFx0dmFyIGluZGV4QXJyYXkgPSBbXTtcXG5cXHRcXHR2YXIgaGFsZkhlaWdodCA9IGhlaWdodCAvIDI7XFxuXFx0XFx0dmFyIGdyb3VwU3RhcnQgPSAwO1xcblxcblxcdFxcdC8vIGdlbmVyYXRlIGdlb21ldHJ5XFxuXFxuXFx0XFx0Z2VuZXJhdGVUb3JzbygpO1xcblxcblxcdFxcdGlmICggb3BlbkVuZGVkID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHJhZGl1c1RvcCA+IDAgKSBnZW5lcmF0ZUNhcCggdHJ1ZSApO1xcblxcdFxcdFxcdGlmICggcmFkaXVzQm90dG9tID4gMCApIGdlbmVyYXRlQ2FwKCBmYWxzZSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBidWlsZCBnZW9tZXRyeVxcblxcblxcdFxcdHRoaXMuc2V0SW5kZXgoIGluZGljZXMgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHZlcnRpY2VzLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ25vcm1hbCcsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBub3JtYWxzLCAzICkgKTtcXG5cXHRcXHR0aGlzLmFkZEF0dHJpYnV0ZSggJ3V2JywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHV2cywgMiApICk7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2VuZXJhdGVUb3JzbygpIHtcXG5cXG5cXHRcXHRcXHR2YXIgeCwgeTtcXG5cXHRcXHRcXHR2YXIgbm9ybWFsID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgdmVydGV4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgZ3JvdXBDb3VudCA9IDA7XFxuXFxuXFx0XFx0XFx0Ly8gdGhpcyB3aWxsIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBub3JtYWxcXG5cXHRcXHRcXHR2YXIgc2xvcGUgPSAoIHJhZGl1c0JvdHRvbSAtIHJhZGl1c1RvcCApIC8gaGVpZ2h0O1xcblxcblxcdFxcdFxcdC8vIGdlbmVyYXRlIHZlcnRpY2VzLCBub3JtYWxzIGFuZCB1dnNcXG5cXG5cXHRcXHRcXHRmb3IgKCB5ID0gMDsgeSA8PSBoZWlnaHRTZWdtZW50czsgeSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaW5kZXhSb3cgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdiA9IHkgLyBoZWlnaHRTZWdtZW50cztcXG5cXG5cXHRcXHRcXHRcXHQvLyBjYWxjdWxhdGUgdGhlIHJhZGl1cyBvZiB0aGUgY3VycmVudCByb3dcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcmFkaXVzID0gdiAqICggcmFkaXVzQm90dG9tIC0gcmFkaXVzVG9wICkgKyByYWRpdXNUb3A7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggeCA9IDA7IHggPD0gcmFkaWFsU2VnbWVudHM7IHggKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHUgPSB4IC8gcmFkaWFsU2VnbWVudHM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHRoZXRhID0gdSAqIHRoZXRhTGVuZ3RoICsgdGhldGFTdGFydDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgc2luVGhldGEgPSBNYXRoLnNpbiggdGhldGEgKTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgY29zVGhldGEgPSBNYXRoLmNvcyggdGhldGEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyB2ZXJ0ZXhcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXgueCA9IHJhZGl1cyAqIHNpblRoZXRhO1xcblxcdFxcdFxcdFxcdFxcdHZlcnRleC55ID0gLSB2ICogaGVpZ2h0ICsgaGFsZkhlaWdodDtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXgueiA9IHJhZGl1cyAqIGNvc1RoZXRhO1xcblxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHZlcnRleC54LCB2ZXJ0ZXgueSwgdmVydGV4LnogKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBub3JtYWxcXG5cXG5cXHRcXHRcXHRcXHRcXHRub3JtYWwuc2V0KCBzaW5UaGV0YSwgc2xvcGUsIGNvc1RoZXRhICkubm9ybWFsaXplKCk7XFxuXFx0XFx0XFx0XFx0XFx0bm9ybWFscy5wdXNoKCBub3JtYWwueCwgbm9ybWFsLnksIG5vcm1hbC56ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdXZcXG5cXG5cXHRcXHRcXHRcXHRcXHR1dnMucHVzaCggdSwgMSAtIHYgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBzYXZlIGluZGV4IG9mIHZlcnRleCBpbiByZXNwZWN0aXZlIHJvd1xcblxcblxcdFxcdFxcdFxcdFxcdGluZGV4Um93LnB1c2goIGluZGV4ICsrICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdC8vIG5vdyBzYXZlIHZlcnRpY2VzIG9mIHRoZSByb3cgaW4gb3VyIGluZGV4IGFycmF5XFxuXFxuXFx0XFx0XFx0XFx0aW5kZXhBcnJheS5wdXNoKCBpbmRleFJvdyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBnZW5lcmF0ZSBpbmRpY2VzXFxuXFxuXFx0XFx0XFx0Zm9yICggeCA9IDA7IHggPCByYWRpYWxTZWdtZW50czsgeCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB5ID0gMDsgeSA8IGhlaWdodFNlZ21lbnRzOyB5ICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHdlIHVzZSB0aGUgaW5kZXggYXJyYXkgdG8gYWNjZXNzIHRoZSBjb3JyZWN0IGluZGljZXNcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgYSA9IGluZGV4QXJyYXlbIHkgXVsgeCBdO1xcblxcdFxcdFxcdFxcdFxcdHZhciBiID0gaW5kZXhBcnJheVsgeSArIDEgXVsgeCBdO1xcblxcdFxcdFxcdFxcdFxcdHZhciBjID0gaW5kZXhBcnJheVsgeSArIDEgXVsgeCArIDEgXTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgZCA9IGluZGV4QXJyYXlbIHkgXVsgeCArIDEgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBmYWNlc1xcblxcblxcdFxcdFxcdFxcdFxcdGluZGljZXMucHVzaCggYSwgYiwgZCApO1xcblxcdFxcdFxcdFxcdFxcdGluZGljZXMucHVzaCggYiwgYywgZCApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHVwZGF0ZSBncm91cCBjb3VudGVyXFxuXFxuXFx0XFx0XFx0XFx0XFx0Z3JvdXBDb3VudCArPSA2O1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gYWRkIGEgZ3JvdXAgdG8gdGhlIGdlb21ldHJ5LiB0aGlzIHdpbGwgZW5zdXJlIG11bHRpIG1hdGVyaWFsIHN1cHBvcnRcXG5cXG5cXHRcXHRcXHRzY29wZS5hZGRHcm91cCggZ3JvdXBTdGFydCwgZ3JvdXBDb3VudCwgMCApO1xcblxcblxcdFxcdFxcdC8vIGNhbGN1bGF0ZSBuZXcgc3RhcnQgdmFsdWUgZm9yIGdyb3Vwc1xcblxcblxcdFxcdFxcdGdyb3VwU3RhcnQgKz0gZ3JvdXBDb3VudDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2VuZXJhdGVDYXAoIHRvcCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgeCwgY2VudGVySW5kZXhTdGFydCwgY2VudGVySW5kZXhFbmQ7XFxuXFxuXFx0XFx0XFx0dmFyIHV2ID0gbmV3IFZlY3RvcjIoKTtcXG5cXHRcXHRcXHR2YXIgdmVydGV4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgZ3JvdXBDb3VudCA9IDA7XFxuXFxuXFx0XFx0XFx0dmFyIHJhZGl1cyA9ICggdG9wID09PSB0cnVlICkgPyByYWRpdXNUb3AgOiByYWRpdXNCb3R0b207XFxuXFx0XFx0XFx0dmFyIHNpZ24gPSAoIHRvcCA9PT0gdHJ1ZSApID8gMSA6IC0gMTtcXG5cXG5cXHRcXHRcXHQvLyBzYXZlIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2VudGVyIHZlcnRleFxcblxcdFxcdFxcdGNlbnRlckluZGV4U3RhcnQgPSBpbmRleDtcXG5cXG5cXHRcXHRcXHQvLyBmaXJzdCB3ZSBnZW5lcmF0ZSB0aGUgY2VudGVyIHZlcnRleCBkYXRhIG9mIHRoZSBjYXAuXFxuXFx0XFx0XFx0Ly8gYmVjYXVzZSB0aGUgZ2VvbWV0cnkgbmVlZHMgb25lIHNldCBvZiB1dnMgcGVyIGZhY2UsXFxuXFx0XFx0XFx0Ly8gd2UgbXVzdCBnZW5lcmF0ZSBhIGNlbnRlciB2ZXJ0ZXggcGVyIGZhY2Uvc2VnbWVudFxcblxcblxcdFxcdFxcdGZvciAoIHggPSAxOyB4IDw9IHJhZGlhbFNlZ21lbnRzOyB4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdC8vIHZlcnRleFxcblxcblxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIDAsIGhhbGZIZWlnaHQgKiBzaWduLCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbm9ybWFsXFxuXFxuXFx0XFx0XFx0XFx0bm9ybWFscy5wdXNoKCAwLCBzaWduLCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gdXZcXG5cXG5cXHRcXHRcXHRcXHR1dnMucHVzaCggMC41LCAwLjUgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBpbmNyZWFzZSBpbmRleFxcblxcblxcdFxcdFxcdFxcdGluZGV4ICsrO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBzYXZlIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjZW50ZXIgdmVydGV4XFxuXFxuXFx0XFx0XFx0Y2VudGVySW5kZXhFbmQgPSBpbmRleDtcXG5cXG5cXHRcXHRcXHQvLyBub3cgd2UgZ2VuZXJhdGUgdGhlIHN1cnJvdW5kaW5nIHZlcnRpY2VzLCBub3JtYWxzIGFuZCB1dnNcXG5cXG5cXHRcXHRcXHRmb3IgKCB4ID0gMDsgeCA8PSByYWRpYWxTZWdtZW50czsgeCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdSA9IHggLyByYWRpYWxTZWdtZW50cztcXG5cXHRcXHRcXHRcXHR2YXIgdGhldGEgPSB1ICogdGhldGFMZW5ndGggKyB0aGV0YVN0YXJ0O1xcblxcblxcdFxcdFxcdFxcdHZhciBjb3NUaGV0YSA9IE1hdGguY29zKCB0aGV0YSApO1xcblxcdFxcdFxcdFxcdHZhciBzaW5UaGV0YSA9IE1hdGguc2luKCB0aGV0YSApO1xcblxcblxcdFxcdFxcdFxcdC8vIHZlcnRleFxcblxcblxcdFxcdFxcdFxcdHZlcnRleC54ID0gcmFkaXVzICogc2luVGhldGE7XFxuXFx0XFx0XFx0XFx0dmVydGV4LnkgPSBoYWxmSGVpZ2h0ICogc2lnbjtcXG5cXHRcXHRcXHRcXHR2ZXJ0ZXgueiA9IHJhZGl1cyAqIGNvc1RoZXRhO1xcblxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIHZlcnRleC54LCB2ZXJ0ZXgueSwgdmVydGV4LnogKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub3JtYWxcXG5cXG5cXHRcXHRcXHRcXHRub3JtYWxzLnB1c2goIDAsIHNpZ24sIDAgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyB1dlxcblxcblxcdFxcdFxcdFxcdHV2LnggPSAoIGNvc1RoZXRhICogMC41ICkgKyAwLjU7XFxuXFx0XFx0XFx0XFx0dXYueSA9ICggc2luVGhldGEgKiAwLjUgKiBzaWduICkgKyAwLjU7XFxuXFx0XFx0XFx0XFx0dXZzLnB1c2goIHV2LngsIHV2LnkgKTtcXG5cXG5cXHRcXHRcXHRcXHQvLyBpbmNyZWFzZSBpbmRleFxcblxcblxcdFxcdFxcdFxcdGluZGV4ICsrO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBnZW5lcmF0ZSBpbmRpY2VzXFxuXFxuXFx0XFx0XFx0Zm9yICggeCA9IDA7IHggPCByYWRpYWxTZWdtZW50czsgeCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYyA9IGNlbnRlckluZGV4U3RhcnQgKyB4O1xcblxcdFxcdFxcdFxcdHZhciBpID0gY2VudGVySW5kZXhFbmQgKyB4O1xcblxcblxcdFxcdFxcdFxcdGlmICggdG9wID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGZhY2UgdG9wXFxuXFxuXFx0XFx0XFx0XFx0XFx0aW5kaWNlcy5wdXNoKCBpLCBpICsgMSwgYyApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gZmFjZSBib3R0b21cXG5cXG5cXHRcXHRcXHRcXHRcXHRpbmRpY2VzLnB1c2goIGkgKyAxLCBpLCBjICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGdyb3VwQ291bnQgKz0gMztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gYWRkIGEgZ3JvdXAgdG8gdGhlIGdlb21ldHJ5LiB0aGlzIHdpbGwgZW5zdXJlIG11bHRpIG1hdGVyaWFsIHN1cHBvcnRcXG5cXG5cXHRcXHRcXHRzY29wZS5hZGRHcm91cCggZ3JvdXBTdGFydCwgZ3JvdXBDb3VudCwgdG9wID09PSB0cnVlID8gMSA6IDIgKTtcXG5cXG5cXHRcXHRcXHQvLyBjYWxjdWxhdGUgbmV3IHN0YXJ0IHZhbHVlIGZvciBncm91cHNcXG5cXG5cXHRcXHRcXHRncm91cFN0YXJ0ICs9IGdyb3VwQ291bnQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRDeWxpbmRlckJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdEN5bGluZGVyQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFiZWxuYXRpb24gLyBodHRwOi8vZ2l0aHViLmNvbS9hYmVsbmF0aW9uXFxuXFx0ICovXFxuXFxuXFx0Ly8gQ29uZUdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gQ29uZUdlb21ldHJ5KCByYWRpdXMsIGhlaWdodCwgcmFkaWFsU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzLCBvcGVuRW5kZWQsIHRoZXRhU3RhcnQsIHRoZXRhTGVuZ3RoICkge1xcblxcblxcdFxcdEN5bGluZGVyR2VvbWV0cnkuY2FsbCggdGhpcywgMCwgcmFkaXVzLCBoZWlnaHQsIHJhZGlhbFNlZ21lbnRzLCBoZWlnaHRTZWdtZW50cywgb3BlbkVuZGVkLCB0aGV0YVN0YXJ0LCB0aGV0YUxlbmd0aCApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdDb25lR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRoZWlnaHQ6IGhlaWdodCxcXG5cXHRcXHRcXHRyYWRpYWxTZWdtZW50czogcmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0aGVpZ2h0U2VnbWVudHM6IGhlaWdodFNlZ21lbnRzLFxcblxcdFxcdFxcdG9wZW5FbmRlZDogb3BlbkVuZGVkLFxcblxcdFxcdFxcdHRoZXRhU3RhcnQ6IHRoZXRhU3RhcnQsXFxuXFx0XFx0XFx0dGhldGFMZW5ndGg6IHRoZXRhTGVuZ3RoXFxuXFx0XFx0fTtcXG5cXG5cXHR9XFxuXFxuXFx0Q29uZUdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEN5bGluZGVyR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0Q29uZUdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvbmVHZW9tZXRyeTtcXG5cXG5cXHQvLyBDb25lQnVmZmVyR2VvbWV0cnlcXG5cXG5cXHRmdW5jdGlvbiBDb25lQnVmZmVyR2VvbWV0cnkoIHJhZGl1cywgaGVpZ2h0LCByYWRpYWxTZWdtZW50cywgaGVpZ2h0U2VnbWVudHMsIG9wZW5FbmRlZCwgdGhldGFTdGFydCwgdGhldGFMZW5ndGggKSB7XFxuXFxuXFx0XFx0Q3lsaW5kZXJCdWZmZXJHZW9tZXRyeS5jYWxsKCB0aGlzLCAwLCByYWRpdXMsIGhlaWdodCwgcmFkaWFsU2VnbWVudHMsIGhlaWdodFNlZ21lbnRzLCBvcGVuRW5kZWQsIHRoZXRhU3RhcnQsIHRoZXRhTGVuZ3RoICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0NvbmVCdWZmZXJHZW9tZXRyeSc7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJzID0ge1xcblxcdFxcdFxcdHJhZGl1czogcmFkaXVzLFxcblxcdFxcdFxcdGhlaWdodDogaGVpZ2h0LFxcblxcdFxcdFxcdHJhZGlhbFNlZ21lbnRzOiByYWRpYWxTZWdtZW50cyxcXG5cXHRcXHRcXHRoZWlnaHRTZWdtZW50czogaGVpZ2h0U2VnbWVudHMsXFxuXFx0XFx0XFx0b3BlbkVuZGVkOiBvcGVuRW5kZWQsXFxuXFx0XFx0XFx0dGhldGFTdGFydDogdGhldGFTdGFydCxcXG5cXHRcXHRcXHR0aGV0YUxlbmd0aDogdGhldGFMZW5ndGhcXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHRDb25lQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUgKTtcXG5cXHRDb25lQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uZUJ1ZmZlckdlb21ldHJ5O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYmVuYWFkYW1zIC8gaHR0cHM6Ly90d2l0dGVyLmNvbS9iZW5fYV9hZGFtc1xcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICogQGF1dGhvciBodWdoZXNcXG5cXHQgKi9cXG5cXG5cXHQvLyBDaXJjbGVHZW9tZXRyeVxcblxcblxcdGZ1bmN0aW9uIENpcmNsZUdlb21ldHJ5KCByYWRpdXMsIHNlZ21lbnRzLCB0aGV0YVN0YXJ0LCB0aGV0YUxlbmd0aCApIHtcXG5cXG5cXHRcXHRHZW9tZXRyeS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0NpcmNsZUdlb21ldHJ5JztcXG5cXG5cXHRcXHR0aGlzLnBhcmFtZXRlcnMgPSB7XFxuXFx0XFx0XFx0cmFkaXVzOiByYWRpdXMsXFxuXFx0XFx0XFx0c2VnbWVudHM6IHNlZ21lbnRzLFxcblxcdFxcdFxcdHRoZXRhU3RhcnQ6IHRoZXRhU3RhcnQsXFxuXFx0XFx0XFx0dGhldGFMZW5ndGg6IHRoZXRhTGVuZ3RoXFxuXFx0XFx0fTtcXG5cXG5cXHRcXHR0aGlzLmZyb21CdWZmZXJHZW9tZXRyeSggbmV3IENpcmNsZUJ1ZmZlckdlb21ldHJ5KCByYWRpdXMsIHNlZ21lbnRzLCB0aGV0YVN0YXJ0LCB0aGV0YUxlbmd0aCApICk7XFxuXFx0XFx0dGhpcy5tZXJnZVZlcnRpY2VzKCk7XFxuXFxuXFx0fVxcblxcblxcdENpcmNsZUdlb21ldHJ5LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEdlb21ldHJ5LnByb3RvdHlwZSApO1xcblxcdENpcmNsZUdlb21ldHJ5LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENpcmNsZUdlb21ldHJ5O1xcblxcblxcdC8vIENpcmNsZUJ1ZmZlckdlb21ldHJ5XFxuXFxuXFx0ZnVuY3Rpb24gQ2lyY2xlQnVmZmVyR2VvbWV0cnkoIHJhZGl1cywgc2VnbWVudHMsIHRoZXRhU3RhcnQsIHRoZXRhTGVuZ3RoICkge1xcblxcblxcdFxcdEJ1ZmZlckdlb21ldHJ5LmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnQ2lyY2xlQnVmZmVyR2VvbWV0cnknO1xcblxcblxcdFxcdHRoaXMucGFyYW1ldGVycyA9IHtcXG5cXHRcXHRcXHRyYWRpdXM6IHJhZGl1cyxcXG5cXHRcXHRcXHRzZWdtZW50czogc2VnbWVudHMsXFxuXFx0XFx0XFx0dGhldGFTdGFydDogdGhldGFTdGFydCxcXG5cXHRcXHRcXHR0aGV0YUxlbmd0aDogdGhldGFMZW5ndGhcXG5cXHRcXHR9O1xcblxcblxcdFxcdHJhZGl1cyA9IHJhZGl1cyB8fCAxO1xcblxcdFxcdHNlZ21lbnRzID0gc2VnbWVudHMgIT09IHVuZGVmaW5lZCA/IE1hdGgubWF4KCAzLCBzZWdtZW50cyApIDogODtcXG5cXG5cXHRcXHR0aGV0YVN0YXJ0ID0gdGhldGFTdGFydCAhPT0gdW5kZWZpbmVkID8gdGhldGFTdGFydCA6IDA7XFxuXFx0XFx0dGhldGFMZW5ndGggPSB0aGV0YUxlbmd0aCAhPT0gdW5kZWZpbmVkID8gdGhldGFMZW5ndGggOiBNYXRoLlBJICogMjtcXG5cXG5cXHRcXHQvLyBidWZmZXJzXFxuXFxuXFx0XFx0dmFyIGluZGljZXMgPSBbXTtcXG5cXHRcXHR2YXIgdmVydGljZXMgPSBbXTtcXG5cXHRcXHR2YXIgbm9ybWFscyA9IFtdO1xcblxcdFxcdHZhciB1dnMgPSBbXTtcXG5cXG5cXHRcXHQvLyBoZWxwZXIgdmFyaWFibGVzXFxuXFxuXFx0XFx0dmFyIGksIHM7XFxuXFx0XFx0dmFyIHZlcnRleCA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIHV2ID0gbmV3IFZlY3RvcjIoKTtcXG5cXG5cXHRcXHQvLyBjZW50ZXIgcG9pbnRcXG5cXG5cXHRcXHR2ZXJ0aWNlcy5wdXNoKCAwLCAwLCAwICk7XFxuXFx0XFx0bm9ybWFscy5wdXNoKCAwLCAwLCAxICk7XFxuXFx0XFx0dXZzLnB1c2goIDAuNSwgMC41ICk7XFxuXFxuXFx0XFx0Zm9yICggcyA9IDAsIGkgPSAzOyBzIDw9IHNlZ21lbnRzOyBzICsrLCBpICs9IDMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHNlZ21lbnQgPSB0aGV0YVN0YXJ0ICsgcyAvIHNlZ21lbnRzICogdGhldGFMZW5ndGg7XFxuXFxuXFx0XFx0XFx0Ly8gdmVydGV4XFxuXFxuXFx0XFx0XFx0dmVydGV4LnggPSByYWRpdXMgKiBNYXRoLmNvcyggc2VnbWVudCApO1xcblxcdFxcdFxcdHZlcnRleC55ID0gcmFkaXVzICogTWF0aC5zaW4oIHNlZ21lbnQgKTtcXG5cXG5cXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB2ZXJ0ZXgueCwgdmVydGV4LnksIHZlcnRleC56ICk7XFxuXFxuXFx0XFx0XFx0Ly8gbm9ybWFsXFxuXFxuXFx0XFx0XFx0bm9ybWFscy5wdXNoKCAwLCAwLCAxICk7XFxuXFxuXFx0XFx0XFx0Ly8gdXZzXFxuXFxuXFx0XFx0XFx0dXYueCA9ICggdmVydGljZXNbIGkgXSAvIHJhZGl1cyArIDEgKSAvIDI7XFxuXFx0XFx0XFx0dXYueSA9ICggdmVydGljZXNbIGkgKyAxIF0gLyByYWRpdXMgKyAxICkgLyAyO1xcblxcblxcdFxcdFxcdHV2cy5wdXNoKCB1di54LCB1di55ICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGluZGljZXNcXG5cXG5cXHRcXHRmb3IgKCBpID0gMTsgaSA8PSBzZWdtZW50czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRpbmRpY2VzLnB1c2goIGksIGkgKyAxLCAwICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdC8vIGJ1aWxkIGdlb21ldHJ5XFxuXFxuXFx0XFx0dGhpcy5zZXRJbmRleCggaW5kaWNlcyApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdmVydGljZXMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAnbm9ybWFsJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5vcm1hbHMsIDMgKSApO1xcblxcdFxcdHRoaXMuYWRkQXR0cmlidXRlKCAndXYnLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggdXZzLCAyICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0Q2lyY2xlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlICk7XFxuXFx0Q2lyY2xlQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2lyY2xlQnVmZmVyR2VvbWV0cnk7XFxuXFxuXFxuXFxuXFx0dmFyIEdlb21ldHJpZXMgPSBPYmplY3QuZnJlZXplKHtcXG5cXHRcXHRXaXJlZnJhbWVHZW9tZXRyeTogV2lyZWZyYW1lR2VvbWV0cnksXFxuXFx0XFx0UGFyYW1ldHJpY0dlb21ldHJ5OiBQYXJhbWV0cmljR2VvbWV0cnksXFxuXFx0XFx0UGFyYW1ldHJpY0J1ZmZlckdlb21ldHJ5OiBQYXJhbWV0cmljQnVmZmVyR2VvbWV0cnksXFxuXFx0XFx0VGV0cmFoZWRyb25HZW9tZXRyeTogVGV0cmFoZWRyb25HZW9tZXRyeSxcXG5cXHRcXHRUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OiBUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5LFxcblxcdFxcdE9jdGFoZWRyb25HZW9tZXRyeTogT2N0YWhlZHJvbkdlb21ldHJ5LFxcblxcdFxcdE9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeTogT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5LFxcblxcdFxcdEljb3NhaGVkcm9uR2VvbWV0cnk6IEljb3NhaGVkcm9uR2VvbWV0cnksXFxuXFx0XFx0SWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeTogSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeSxcXG5cXHRcXHREb2RlY2FoZWRyb25HZW9tZXRyeTogRG9kZWNhaGVkcm9uR2VvbWV0cnksXFxuXFx0XFx0RG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk6IERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5LFxcblxcdFxcdFBvbHloZWRyb25HZW9tZXRyeTogUG9seWhlZHJvbkdlb21ldHJ5LFxcblxcdFxcdFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeTogUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5LFxcblxcdFxcdFR1YmVHZW9tZXRyeTogVHViZUdlb21ldHJ5LFxcblxcdFxcdFR1YmVCdWZmZXJHZW9tZXRyeTogVHViZUJ1ZmZlckdlb21ldHJ5LFxcblxcdFxcdFRvcnVzS25vdEdlb21ldHJ5OiBUb3J1c0tub3RHZW9tZXRyeSxcXG5cXHRcXHRUb3J1c0tub3RCdWZmZXJHZW9tZXRyeTogVG9ydXNLbm90QnVmZmVyR2VvbWV0cnksXFxuXFx0XFx0VG9ydXNHZW9tZXRyeTogVG9ydXNHZW9tZXRyeSxcXG5cXHRcXHRUb3J1c0J1ZmZlckdlb21ldHJ5OiBUb3J1c0J1ZmZlckdlb21ldHJ5LFxcblxcdFxcdFRleHRHZW9tZXRyeTogVGV4dEdlb21ldHJ5LFxcblxcdFxcdFRleHRCdWZmZXJHZW9tZXRyeTogVGV4dEJ1ZmZlckdlb21ldHJ5LFxcblxcdFxcdFNwaGVyZUdlb21ldHJ5OiBTcGhlcmVHZW9tZXRyeSxcXG5cXHRcXHRTcGhlcmVCdWZmZXJHZW9tZXRyeTogU3BoZXJlQnVmZmVyR2VvbWV0cnksXFxuXFx0XFx0UmluZ0dlb21ldHJ5OiBSaW5nR2VvbWV0cnksXFxuXFx0XFx0UmluZ0J1ZmZlckdlb21ldHJ5OiBSaW5nQnVmZmVyR2VvbWV0cnksXFxuXFx0XFx0UGxhbmVHZW9tZXRyeTogUGxhbmVHZW9tZXRyeSxcXG5cXHRcXHRQbGFuZUJ1ZmZlckdlb21ldHJ5OiBQbGFuZUJ1ZmZlckdlb21ldHJ5LFxcblxcdFxcdExhdGhlR2VvbWV0cnk6IExhdGhlR2VvbWV0cnksXFxuXFx0XFx0TGF0aGVCdWZmZXJHZW9tZXRyeTogTGF0aGVCdWZmZXJHZW9tZXRyeSxcXG5cXHRcXHRTaGFwZUdlb21ldHJ5OiBTaGFwZUdlb21ldHJ5LFxcblxcdFxcdFNoYXBlQnVmZmVyR2VvbWV0cnk6IFNoYXBlQnVmZmVyR2VvbWV0cnksXFxuXFx0XFx0RXh0cnVkZUdlb21ldHJ5OiBFeHRydWRlR2VvbWV0cnksXFxuXFx0XFx0RXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBFeHRydWRlQnVmZmVyR2VvbWV0cnksXFxuXFx0XFx0RWRnZXNHZW9tZXRyeTogRWRnZXNHZW9tZXRyeSxcXG5cXHRcXHRDb25lR2VvbWV0cnk6IENvbmVHZW9tZXRyeSxcXG5cXHRcXHRDb25lQnVmZmVyR2VvbWV0cnk6IENvbmVCdWZmZXJHZW9tZXRyeSxcXG5cXHRcXHRDeWxpbmRlckdlb21ldHJ5OiBDeWxpbmRlckdlb21ldHJ5LFxcblxcdFxcdEN5bGluZGVyQnVmZmVyR2VvbWV0cnk6IEN5bGluZGVyQnVmZmVyR2VvbWV0cnksXFxuXFx0XFx0Q2lyY2xlR2VvbWV0cnk6IENpcmNsZUdlb21ldHJ5LFxcblxcdFxcdENpcmNsZUJ1ZmZlckdlb21ldHJ5OiBDaXJjbGVCdWZmZXJHZW9tZXRyeSxcXG5cXHRcXHRCb3hHZW9tZXRyeTogQm94R2VvbWV0cnksXFxuXFx0XFx0Qm94QnVmZmVyR2VvbWV0cnk6IEJveEJ1ZmZlckdlb21ldHJ5XFxuXFx0fSk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGNvbG9yOiA8VEhSRUUuQ29sb3I+LFxcblxcdCAqICBvcGFjaXR5OiA8ZmxvYXQ+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFNoYWRvd01hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnU2hhZG93TWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSBuZXcgQ29sb3IoIDB4MDAwMDAwICk7XFxuXFx0XFx0dGhpcy5vcGFjaXR5ID0gMS4wO1xcblxcblxcdFxcdHRoaXMubGlnaHRzID0gdHJ1ZTtcXG5cXHRcXHR0aGlzLnRyYW5zcGFyZW50ID0gdHJ1ZTtcXG5cXG5cXHRcXHR0aGlzLnNldFZhbHVlcyggcGFyYW1ldGVycyApO1xcblxcblxcdH1cXG5cXG5cXHRTaGFkb3dNYXRlcmlhbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBNYXRlcmlhbC5wcm90b3R5cGUgKTtcXG5cXHRTaGFkb3dNYXRlcmlhbC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTaGFkb3dNYXRlcmlhbDtcXG5cXG5cXHRTaGFkb3dNYXRlcmlhbC5wcm90b3R5cGUuaXNTaGFkb3dNYXRlcmlhbCA9IHRydWU7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBSYXdTaGFkZXJNYXRlcmlhbCggcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHRTaGFkZXJNYXRlcmlhbC5jYWxsKCB0aGlzLCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1Jhd1NoYWRlck1hdGVyaWFsJztcXG5cXG5cXHR9XFxuXFxuXFx0UmF3U2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggU2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlICk7XFxuXFx0UmF3U2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmF3U2hhZGVyTWF0ZXJpYWw7XFxuXFxuXFx0UmF3U2hhZGVyTWF0ZXJpYWwucHJvdG90eXBlLmlzUmF3U2hhZGVyTWF0ZXJpYWwgPSB0cnVlO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCAqXFxuXFx0ICogcGFyYW1ldGVycyA9IHtcXG5cXHQgKiAgY29sb3I6IDxoZXg+LFxcblxcdCAqICByb3VnaG5lc3M6IDxmbG9hdD4sXFxuXFx0ICogIG1ldGFsbmVzczogPGZsb2F0PixcXG5cXHQgKiAgb3BhY2l0eTogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICBtYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgbGlnaHRNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGxpZ2h0TWFwSW50ZW5zaXR5OiA8ZmxvYXQ+XFxuXFx0ICpcXG5cXHQgKiAgYW9NYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGFvTWFwSW50ZW5zaXR5OiA8ZmxvYXQ+XFxuXFx0ICpcXG5cXHQgKiAgZW1pc3NpdmU6IDxoZXg+LFxcblxcdCAqICBlbWlzc2l2ZUludGVuc2l0eTogPGZsb2F0PlxcblxcdCAqICBlbWlzc2l2ZU1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKlxcblxcdCAqICBidW1wTWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqICBidW1wU2NhbGU6IDxmbG9hdD4sXFxuXFx0ICpcXG5cXHQgKiAgbm9ybWFsTWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqICBub3JtYWxTY2FsZTogPFZlY3RvcjI+LFxcblxcdCAqXFxuXFx0ICogIGRpc3BsYWNlbWVudE1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKiAgZGlzcGxhY2VtZW50U2NhbGU6IDxmbG9hdD4sXFxuXFx0ICogIGRpc3BsYWNlbWVudEJpYXM6IDxmbG9hdD4sXFxuXFx0ICpcXG5cXHQgKiAgcm91Z2huZXNzTWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqXFxuXFx0ICogIG1ldGFsbmVzc01hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKlxcblxcdCAqICBhbHBoYU1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKlxcblxcdCAqICBlbnZNYXA6IG5ldyBUSFJFRS5DdWJlVGV4dHVyZSggW3Bvc3gsIG5lZ3gsIHBvc3ksIG5lZ3ksIHBvc3osIG5lZ3pdICksXFxuXFx0ICogIGVudk1hcEludGVuc2l0eTogPGZsb2F0PlxcblxcdCAqXFxuXFx0ICogIHJlZnJhY3Rpb25SYXRpbzogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICB3aXJlZnJhbWU6IDxib29sZWFuPixcXG5cXHQgKiAgd2lyZWZyYW1lTGluZXdpZHRoOiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIHNraW5uaW5nOiA8Ym9vbD4sXFxuXFx0ICogIG1vcnBoVGFyZ2V0czogPGJvb2w+LFxcblxcdCAqICBtb3JwaE5vcm1hbHM6IDxib29sPlxcblxcdCAqIH1cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBNZXNoU3RhbmRhcmRNYXRlcmlhbCggcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHRNYXRlcmlhbC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy5kZWZpbmVzID0geyAnU1RBTkRBUkQnOiAnJyB9O1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdNZXNoU3RhbmRhcmRNYXRlcmlhbCc7XFxuXFxuXFx0XFx0dGhpcy5jb2xvciA9IG5ldyBDb2xvciggMHhmZmZmZmYgKTsgLy8gZGlmZnVzZVxcblxcdFxcdHRoaXMucm91Z2huZXNzID0gMC41O1xcblxcdFxcdHRoaXMubWV0YWxuZXNzID0gMC41O1xcblxcblxcdFxcdHRoaXMubWFwID0gbnVsbDtcXG5cXG5cXHRcXHR0aGlzLmxpZ2h0TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5ID0gMS4wO1xcblxcblxcdFxcdHRoaXMuYW9NYXAgPSBudWxsO1xcblxcdFxcdHRoaXMuYW9NYXBJbnRlbnNpdHkgPSAxLjA7XFxuXFxuXFx0XFx0dGhpcy5lbWlzc2l2ZSA9IG5ldyBDb2xvciggMHgwMDAwMDAgKTtcXG5cXHRcXHR0aGlzLmVtaXNzaXZlSW50ZW5zaXR5ID0gMS4wO1xcblxcdFxcdHRoaXMuZW1pc3NpdmVNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuYnVtcE1hcCA9IG51bGw7XFxuXFx0XFx0dGhpcy5idW1wU2NhbGUgPSAxO1xcblxcblxcdFxcdHRoaXMubm9ybWFsTWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLm5vcm1hbFNjYWxlID0gbmV3IFZlY3RvcjIoIDEsIDEgKTtcXG5cXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudE1hcCA9IG51bGw7XFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSA9IDE7XFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRCaWFzID0gMDtcXG5cXG5cXHRcXHR0aGlzLnJvdWdobmVzc01hcCA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5tZXRhbG5lc3NNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuZW52TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmVudk1hcEludGVuc2l0eSA9IDEuMDtcXG5cXG5cXHRcXHR0aGlzLnJlZnJhY3Rpb25SYXRpbyA9IDAuOTg7XFxuXFxuXFx0XFx0dGhpcy53aXJlZnJhbWUgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmV3aWR0aCA9IDE7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5lY2FwID0gJ3JvdW5kJztcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmVqb2luID0gJ3JvdW5kJztcXG5cXG5cXHRcXHR0aGlzLnNraW5uaW5nID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLm1vcnBoTm9ybWFscyA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuc2V0VmFsdWVzKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdE1lc2hTdGFuZGFyZE1hdGVyaWFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE1hdGVyaWFsLnByb3RvdHlwZSApO1xcblxcdE1lc2hTdGFuZGFyZE1hdGVyaWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1lc2hTdGFuZGFyZE1hdGVyaWFsO1xcblxcblxcdE1lc2hTdGFuZGFyZE1hdGVyaWFsLnByb3RvdHlwZS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRNZXNoU3RhbmRhcmRNYXRlcmlhbC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdE1hdGVyaWFsLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMuZGVmaW5lcyA9IHsgJ1NUQU5EQVJEJzogJycgfTtcXG5cXG5cXHRcXHR0aGlzLmNvbG9yLmNvcHkoIHNvdXJjZS5jb2xvciApO1xcblxcdFxcdHRoaXMucm91Z2huZXNzID0gc291cmNlLnJvdWdobmVzcztcXG5cXHRcXHR0aGlzLm1ldGFsbmVzcyA9IHNvdXJjZS5tZXRhbG5lc3M7XFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBzb3VyY2UubWFwO1xcblxcblxcdFxcdHRoaXMubGlnaHRNYXAgPSBzb3VyY2UubGlnaHRNYXA7XFxuXFx0XFx0dGhpcy5saWdodE1hcEludGVuc2l0eSA9IHNvdXJjZS5saWdodE1hcEludGVuc2l0eTtcXG5cXG5cXHRcXHR0aGlzLmFvTWFwID0gc291cmNlLmFvTWFwO1xcblxcdFxcdHRoaXMuYW9NYXBJbnRlbnNpdHkgPSBzb3VyY2UuYW9NYXBJbnRlbnNpdHk7XFxuXFxuXFx0XFx0dGhpcy5lbWlzc2l2ZS5jb3B5KCBzb3VyY2UuZW1pc3NpdmUgKTtcXG5cXHRcXHR0aGlzLmVtaXNzaXZlTWFwID0gc291cmNlLmVtaXNzaXZlTWFwO1xcblxcdFxcdHRoaXMuZW1pc3NpdmVJbnRlbnNpdHkgPSBzb3VyY2UuZW1pc3NpdmVJbnRlbnNpdHk7XFxuXFxuXFx0XFx0dGhpcy5idW1wTWFwID0gc291cmNlLmJ1bXBNYXA7XFxuXFx0XFx0dGhpcy5idW1wU2NhbGUgPSBzb3VyY2UuYnVtcFNjYWxlO1xcblxcblxcdFxcdHRoaXMubm9ybWFsTWFwID0gc291cmNlLm5vcm1hbE1hcDtcXG5cXHRcXHR0aGlzLm5vcm1hbFNjYWxlLmNvcHkoIHNvdXJjZS5ub3JtYWxTY2FsZSApO1xcblxcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50TWFwID0gc291cmNlLmRpc3BsYWNlbWVudE1hcDtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudFNjYWxlID0gc291cmNlLmRpc3BsYWNlbWVudFNjYWxlO1xcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50QmlhcyA9IHNvdXJjZS5kaXNwbGFjZW1lbnRCaWFzO1xcblxcblxcdFxcdHRoaXMucm91Z2huZXNzTWFwID0gc291cmNlLnJvdWdobmVzc01hcDtcXG5cXG5cXHRcXHR0aGlzLm1ldGFsbmVzc01hcCA9IHNvdXJjZS5tZXRhbG5lc3NNYXA7XFxuXFxuXFx0XFx0dGhpcy5hbHBoYU1hcCA9IHNvdXJjZS5hbHBoYU1hcDtcXG5cXG5cXHRcXHR0aGlzLmVudk1hcCA9IHNvdXJjZS5lbnZNYXA7XFxuXFx0XFx0dGhpcy5lbnZNYXBJbnRlbnNpdHkgPSBzb3VyY2UuZW52TWFwSW50ZW5zaXR5O1xcblxcblxcdFxcdHRoaXMucmVmcmFjdGlvblJhdGlvID0gc291cmNlLnJlZnJhY3Rpb25SYXRpbztcXG5cXG5cXHRcXHR0aGlzLndpcmVmcmFtZSA9IHNvdXJjZS53aXJlZnJhbWU7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5ld2lkdGggPSBzb3VyY2Uud2lyZWZyYW1lTGluZXdpZHRoO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZWNhcCA9IHNvdXJjZS53aXJlZnJhbWVMaW5lY2FwO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZWpvaW4gPSBzb3VyY2Uud2lyZWZyYW1lTGluZWpvaW47XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IHNvdXJjZS5za2lubmluZztcXG5cXHRcXHR0aGlzLm1vcnBoVGFyZ2V0cyA9IHNvdXJjZS5tb3JwaFRhcmdldHM7XFxuXFx0XFx0dGhpcy5tb3JwaE5vcm1hbHMgPSBzb3VyY2UubW9ycGhOb3JtYWxzO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICpcXG5cXHQgKiBwYXJhbWV0ZXJzID0ge1xcblxcdCAqICByZWZsZWN0aXZpdHk6IDxmbG9hdD5cXG5cXHQgKiB9XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTWVzaFBoeXNpY2FsTWF0ZXJpYWwoIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0TWVzaFN0YW5kYXJkTWF0ZXJpYWwuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMuZGVmaW5lcyA9IHsgJ1BIWVNJQ0FMJzogJycgfTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaFBoeXNpY2FsTWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMucmVmbGVjdGl2aXR5ID0gMC41OyAvLyBtYXBzIHRvIEYwID0gMC4wNFxcblxcblxcdFxcdHRoaXMuY2xlYXJDb2F0ID0gMC4wO1xcblxcdFxcdHRoaXMuY2xlYXJDb2F0Um91Z2huZXNzID0gMC4wO1xcblxcblxcdFxcdHRoaXMuc2V0VmFsdWVzKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdE1lc2hQaHlzaWNhbE1hdGVyaWFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE1lc2hTdGFuZGFyZE1hdGVyaWFsLnByb3RvdHlwZSApO1xcblxcdE1lc2hQaHlzaWNhbE1hdGVyaWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1lc2hQaHlzaWNhbE1hdGVyaWFsO1xcblxcblxcdE1lc2hQaHlzaWNhbE1hdGVyaWFsLnByb3RvdHlwZS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRNZXNoUGh5c2ljYWxNYXRlcmlhbC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdE1lc2hTdGFuZGFyZE1hdGVyaWFsLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMuZGVmaW5lcyA9IHsgJ1BIWVNJQ0FMJzogJycgfTtcXG5cXG5cXHRcXHR0aGlzLnJlZmxlY3Rpdml0eSA9IHNvdXJjZS5yZWZsZWN0aXZpdHk7XFxuXFxuXFx0XFx0dGhpcy5jbGVhckNvYXQgPSBzb3VyY2UuY2xlYXJDb2F0O1xcblxcdFxcdHRoaXMuY2xlYXJDb2F0Um91Z2huZXNzID0gc291cmNlLmNsZWFyQ29hdFJvdWdobmVzcztcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGNvbG9yOiA8aGV4PixcXG5cXHQgKiAgc3BlY3VsYXI6IDxoZXg+LFxcblxcdCAqICBzaGluaW5lc3M6IDxmbG9hdD4sXFxuXFx0ICogIG9wYWNpdHk6IDxmbG9hdD4sXFxuXFx0ICpcXG5cXHQgKiAgbWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqXFxuXFx0ICogIGxpZ2h0TWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqICBsaWdodE1hcEludGVuc2l0eTogPGZsb2F0PlxcblxcdCAqXFxuXFx0ICogIGFvTWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqICBhb01hcEludGVuc2l0eTogPGZsb2F0PlxcblxcdCAqXFxuXFx0ICogIGVtaXNzaXZlOiA8aGV4PixcXG5cXHQgKiAgZW1pc3NpdmVJbnRlbnNpdHk6IDxmbG9hdD5cXG5cXHQgKiAgZW1pc3NpdmVNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgYnVtcE1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKiAgYnVtcFNjYWxlOiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIG5vcm1hbE1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKiAgbm9ybWFsU2NhbGU6IDxWZWN0b3IyPixcXG5cXHQgKlxcblxcdCAqICBkaXNwbGFjZW1lbnRNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGRpc3BsYWNlbWVudFNjYWxlOiA8ZmxvYXQ+LFxcblxcdCAqICBkaXNwbGFjZW1lbnRCaWFzOiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIHNwZWN1bGFyTWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqXFxuXFx0ICogIGFscGhhTWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqXFxuXFx0ICogIGVudk1hcDogbmV3IFRIUkVFLlRleHR1cmVDdWJlKCBbcG9zeCwgbmVneCwgcG9zeSwgbmVneSwgcG9zeiwgbmVnel0gKSxcXG5cXHQgKiAgY29tYmluZTogVEhSRUUuTXVsdGlwbHksXFxuXFx0ICogIHJlZmxlY3Rpdml0eTogPGZsb2F0PixcXG5cXHQgKiAgcmVmcmFjdGlvblJhdGlvOiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIHdpcmVmcmFtZTogPGJvb2xlYW4+LFxcblxcdCAqICB3aXJlZnJhbWVMaW5ld2lkdGg6IDxmbG9hdD4sXFxuXFx0ICpcXG5cXHQgKiAgc2tpbm5pbmc6IDxib29sPixcXG5cXHQgKiAgbW9ycGhUYXJnZXRzOiA8Ym9vbD4sXFxuXFx0ICogIG1vcnBoTm9ybWFsczogPGJvb2w+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE1lc2hQaG9uZ01hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaFBob25nTWF0ZXJpYWwnO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSBuZXcgQ29sb3IoIDB4ZmZmZmZmICk7IC8vIGRpZmZ1c2VcXG5cXHRcXHR0aGlzLnNwZWN1bGFyID0gbmV3IENvbG9yKCAweDExMTExMSApO1xcblxcdFxcdHRoaXMuc2hpbmluZXNzID0gMzA7XFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMubGlnaHRNYXAgPSBudWxsO1xcblxcdFxcdHRoaXMubGlnaHRNYXBJbnRlbnNpdHkgPSAxLjA7XFxuXFxuXFx0XFx0dGhpcy5hb01hcCA9IG51bGw7XFxuXFx0XFx0dGhpcy5hb01hcEludGVuc2l0eSA9IDEuMDtcXG5cXG5cXHRcXHR0aGlzLmVtaXNzaXZlID0gbmV3IENvbG9yKCAweDAwMDAwMCApO1xcblxcdFxcdHRoaXMuZW1pc3NpdmVJbnRlbnNpdHkgPSAxLjA7XFxuXFx0XFx0dGhpcy5lbWlzc2l2ZU1hcCA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5idW1wTWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmJ1bXBTY2FsZSA9IDE7XFxuXFxuXFx0XFx0dGhpcy5ub3JtYWxNYXAgPSBudWxsO1xcblxcdFxcdHRoaXMubm9ybWFsU2NhbGUgPSBuZXcgVmVjdG9yMiggMSwgMSApO1xcblxcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudFNjYWxlID0gMTtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudEJpYXMgPSAwO1xcblxcblxcdFxcdHRoaXMuc3BlY3VsYXJNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuZW52TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmNvbWJpbmUgPSBNdWx0aXBseU9wZXJhdGlvbjtcXG5cXHRcXHR0aGlzLnJlZmxlY3Rpdml0eSA9IDE7XFxuXFx0XFx0dGhpcy5yZWZyYWN0aW9uUmF0aW8gPSAwLjk4O1xcblxcblxcdFxcdHRoaXMud2lyZWZyYW1lID0gZmFsc2U7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5ld2lkdGggPSAxO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZWNhcCA9ICdyb3VuZCc7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5lam9pbiA9ICdyb3VuZCc7XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IGZhbHNlO1xcblxcdFxcdHRoaXMubW9ycGhUYXJnZXRzID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5tb3JwaE5vcm1hbHMgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLnNldFZhbHVlcyggcGFyYW1ldGVycyApO1xcblxcblxcdH1cXG5cXG5cXHRNZXNoUGhvbmdNYXRlcmlhbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBNYXRlcmlhbC5wcm90b3R5cGUgKTtcXG5cXHRNZXNoUGhvbmdNYXRlcmlhbC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNZXNoUGhvbmdNYXRlcmlhbDtcXG5cXG5cXHRNZXNoUGhvbmdNYXRlcmlhbC5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbCA9IHRydWU7XFxuXFxuXFx0TWVzaFBob25nTWF0ZXJpYWwucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRNYXRlcmlhbC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHR0aGlzLmNvbG9yLmNvcHkoIHNvdXJjZS5jb2xvciApO1xcblxcdFxcdHRoaXMuc3BlY3VsYXIuY29weSggc291cmNlLnNwZWN1bGFyICk7XFxuXFx0XFx0dGhpcy5zaGluaW5lc3MgPSBzb3VyY2Uuc2hpbmluZXNzO1xcblxcblxcdFxcdHRoaXMubWFwID0gc291cmNlLm1hcDtcXG5cXG5cXHRcXHR0aGlzLmxpZ2h0TWFwID0gc291cmNlLmxpZ2h0TWFwO1xcblxcdFxcdHRoaXMubGlnaHRNYXBJbnRlbnNpdHkgPSBzb3VyY2UubGlnaHRNYXBJbnRlbnNpdHk7XFxuXFxuXFx0XFx0dGhpcy5hb01hcCA9IHNvdXJjZS5hb01hcDtcXG5cXHRcXHR0aGlzLmFvTWFwSW50ZW5zaXR5ID0gc291cmNlLmFvTWFwSW50ZW5zaXR5O1xcblxcblxcdFxcdHRoaXMuZW1pc3NpdmUuY29weSggc291cmNlLmVtaXNzaXZlICk7XFxuXFx0XFx0dGhpcy5lbWlzc2l2ZU1hcCA9IHNvdXJjZS5lbWlzc2l2ZU1hcDtcXG5cXHRcXHR0aGlzLmVtaXNzaXZlSW50ZW5zaXR5ID0gc291cmNlLmVtaXNzaXZlSW50ZW5zaXR5O1xcblxcblxcdFxcdHRoaXMuYnVtcE1hcCA9IHNvdXJjZS5idW1wTWFwO1xcblxcdFxcdHRoaXMuYnVtcFNjYWxlID0gc291cmNlLmJ1bXBTY2FsZTtcXG5cXG5cXHRcXHR0aGlzLm5vcm1hbE1hcCA9IHNvdXJjZS5ub3JtYWxNYXA7XFxuXFx0XFx0dGhpcy5ub3JtYWxTY2FsZS5jb3B5KCBzb3VyY2Uubm9ybWFsU2NhbGUgKTtcXG5cXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudE1hcCA9IHNvdXJjZS5kaXNwbGFjZW1lbnRNYXA7XFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSA9IHNvdXJjZS5kaXNwbGFjZW1lbnRTY2FsZTtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudEJpYXMgPSBzb3VyY2UuZGlzcGxhY2VtZW50QmlhcztcXG5cXG5cXHRcXHR0aGlzLnNwZWN1bGFyTWFwID0gc291cmNlLnNwZWN1bGFyTWFwO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBzb3VyY2UuYWxwaGFNYXA7XFxuXFxuXFx0XFx0dGhpcy5lbnZNYXAgPSBzb3VyY2UuZW52TWFwO1xcblxcdFxcdHRoaXMuY29tYmluZSA9IHNvdXJjZS5jb21iaW5lO1xcblxcdFxcdHRoaXMucmVmbGVjdGl2aXR5ID0gc291cmNlLnJlZmxlY3Rpdml0eTtcXG5cXHRcXHR0aGlzLnJlZnJhY3Rpb25SYXRpbyA9IHNvdXJjZS5yZWZyYWN0aW9uUmF0aW87XFxuXFxuXFx0XFx0dGhpcy53aXJlZnJhbWUgPSBzb3VyY2Uud2lyZWZyYW1lO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZXdpZHRoID0gc291cmNlLndpcmVmcmFtZUxpbmV3aWR0aDtcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmVjYXAgPSBzb3VyY2Uud2lyZWZyYW1lTGluZWNhcDtcXG5cXHRcXHR0aGlzLndpcmVmcmFtZUxpbmVqb2luID0gc291cmNlLndpcmVmcmFtZUxpbmVqb2luO1xcblxcblxcdFxcdHRoaXMuc2tpbm5pbmcgPSBzb3VyY2Uuc2tpbm5pbmc7XFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSBzb3VyY2UubW9ycGhUYXJnZXRzO1xcblxcdFxcdHRoaXMubW9ycGhOb3JtYWxzID0gc291cmNlLm1vcnBoTm9ybWFscztcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgdGFrYWhpcm94IC8gaHR0cDovL2dpdGh1Yi5jb20vdGFrYWhpcm94XFxuXFx0ICpcXG5cXHQgKiBwYXJhbWV0ZXJzID0ge1xcblxcdCAqICBncmFkaWVudE1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKVxcblxcdCAqIH1cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBNZXNoVG9vbk1hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1lc2hQaG9uZ01hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLmRlZmluZXMgPSB7ICdUT09OJzogJycgfTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaFRvb25NYXRlcmlhbCc7XFxuXFxuXFx0XFx0dGhpcy5ncmFkaWVudE1hcCA9IG51bGw7XFxuXFxuXFx0XFx0dGhpcy5zZXRWYWx1ZXMoIHBhcmFtZXRlcnMgKTtcXG5cXG5cXHR9XFxuXFxuXFx0TWVzaFRvb25NYXRlcmlhbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBNZXNoUGhvbmdNYXRlcmlhbC5wcm90b3R5cGUgKTtcXG5cXHRNZXNoVG9vbk1hdGVyaWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1lc2hUb29uTWF0ZXJpYWw7XFxuXFxuXFx0TWVzaFRvb25NYXRlcmlhbC5wcm90b3R5cGUuaXNNZXNoVG9vbk1hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRNZXNoVG9vbk1hdGVyaWFsLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0TWVzaFBob25nTWF0ZXJpYWwucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0dGhpcy5ncmFkaWVudE1hcCA9IHNvdXJjZS5ncmFkaWVudE1hcDtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICpcXG5cXHQgKiBwYXJhbWV0ZXJzID0ge1xcblxcdCAqICBvcGFjaXR5OiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIGJ1bXBNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGJ1bXBTY2FsZTogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICBub3JtYWxNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIG5vcm1hbFNjYWxlOiA8VmVjdG9yMj4sXFxuXFx0ICpcXG5cXHQgKiAgZGlzcGxhY2VtZW50TWFwOiBuZXcgVEhSRUUuVGV4dHVyZSggPEltYWdlPiApLFxcblxcdCAqICBkaXNwbGFjZW1lbnRTY2FsZTogPGZsb2F0PixcXG5cXHQgKiAgZGlzcGxhY2VtZW50QmlhczogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICB3aXJlZnJhbWU6IDxib29sZWFuPixcXG5cXHQgKiAgd2lyZWZyYW1lTGluZXdpZHRoOiA8ZmxvYXQ+XFxuXFx0ICpcXG5cXHQgKiAgc2tpbm5pbmc6IDxib29sPixcXG5cXHQgKiAgbW9ycGhUYXJnZXRzOiA8Ym9vbD4sXFxuXFx0ICogIG1vcnBoTm9ybWFsczogPGJvb2w+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE1lc2hOb3JtYWxNYXRlcmlhbCggcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHRNYXRlcmlhbC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ01lc2hOb3JtYWxNYXRlcmlhbCc7XFxuXFxuXFx0XFx0dGhpcy5idW1wTWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmJ1bXBTY2FsZSA9IDE7XFxuXFxuXFx0XFx0dGhpcy5ub3JtYWxNYXAgPSBudWxsO1xcblxcdFxcdHRoaXMubm9ybWFsU2NhbGUgPSBuZXcgVmVjdG9yMiggMSwgMSApO1xcblxcblxcdFxcdHRoaXMuZGlzcGxhY2VtZW50TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudFNjYWxlID0gMTtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudEJpYXMgPSAwO1xcblxcblxcdFxcdHRoaXMud2lyZWZyYW1lID0gZmFsc2U7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5ld2lkdGggPSAxO1xcblxcblxcdFxcdHRoaXMuZm9nID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5saWdodHMgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLnNraW5uaW5nID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLm1vcnBoTm9ybWFscyA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuc2V0VmFsdWVzKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdE1lc2hOb3JtYWxNYXRlcmlhbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBNYXRlcmlhbC5wcm90b3R5cGUgKTtcXG5cXHRNZXNoTm9ybWFsTWF0ZXJpYWwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWVzaE5vcm1hbE1hdGVyaWFsO1xcblxcblxcdE1lc2hOb3JtYWxNYXRlcmlhbC5wcm90b3R5cGUuaXNNZXNoTm9ybWFsTWF0ZXJpYWwgPSB0cnVlO1xcblxcblxcdE1lc2hOb3JtYWxNYXRlcmlhbC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdE1hdGVyaWFsLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMuYnVtcE1hcCA9IHNvdXJjZS5idW1wTWFwO1xcblxcdFxcdHRoaXMuYnVtcFNjYWxlID0gc291cmNlLmJ1bXBTY2FsZTtcXG5cXG5cXHRcXHR0aGlzLm5vcm1hbE1hcCA9IHNvdXJjZS5ub3JtYWxNYXA7XFxuXFx0XFx0dGhpcy5ub3JtYWxTY2FsZS5jb3B5KCBzb3VyY2Uubm9ybWFsU2NhbGUgKTtcXG5cXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudE1hcCA9IHNvdXJjZS5kaXNwbGFjZW1lbnRNYXA7XFxuXFx0XFx0dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSA9IHNvdXJjZS5kaXNwbGFjZW1lbnRTY2FsZTtcXG5cXHRcXHR0aGlzLmRpc3BsYWNlbWVudEJpYXMgPSBzb3VyY2UuZGlzcGxhY2VtZW50QmlhcztcXG5cXG5cXHRcXHR0aGlzLndpcmVmcmFtZSA9IHNvdXJjZS53aXJlZnJhbWU7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5ld2lkdGggPSBzb3VyY2Uud2lyZWZyYW1lTGluZXdpZHRoO1xcblxcblxcdFxcdHRoaXMuc2tpbm5pbmcgPSBzb3VyY2Uuc2tpbm5pbmc7XFxuXFx0XFx0dGhpcy5tb3JwaFRhcmdldHMgPSBzb3VyY2UubW9ycGhUYXJnZXRzO1xcblxcdFxcdHRoaXMubW9ycGhOb3JtYWxzID0gc291cmNlLm1vcnBoTm9ybWFscztcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGNvbG9yOiA8aGV4PixcXG5cXHQgKiAgb3BhY2l0eTogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICBtYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICpcXG5cXHQgKiAgbGlnaHRNYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGxpZ2h0TWFwSW50ZW5zaXR5OiA8ZmxvYXQ+XFxuXFx0ICpcXG5cXHQgKiAgYW9NYXA6IG5ldyBUSFJFRS5UZXh0dXJlKCA8SW1hZ2U+ICksXFxuXFx0ICogIGFvTWFwSW50ZW5zaXR5OiA8ZmxvYXQ+XFxuXFx0ICpcXG5cXHQgKiAgZW1pc3NpdmU6IDxoZXg+LFxcblxcdCAqICBlbWlzc2l2ZUludGVuc2l0eTogPGZsb2F0PlxcblxcdCAqICBlbWlzc2l2ZU1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKlxcblxcdCAqICBzcGVjdWxhck1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKlxcblxcdCAqICBhbHBoYU1hcDogbmV3IFRIUkVFLlRleHR1cmUoIDxJbWFnZT4gKSxcXG5cXHQgKlxcblxcdCAqICBlbnZNYXA6IG5ldyBUSFJFRS5UZXh0dXJlQ3ViZSggW3Bvc3gsIG5lZ3gsIHBvc3ksIG5lZ3ksIHBvc3osIG5lZ3pdICksXFxuXFx0ICogIGNvbWJpbmU6IFRIUkVFLk11bHRpcGx5LFxcblxcdCAqICByZWZsZWN0aXZpdHk6IDxmbG9hdD4sXFxuXFx0ICogIHJlZnJhY3Rpb25SYXRpbzogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICB3aXJlZnJhbWU6IDxib29sZWFuPixcXG5cXHQgKiAgd2lyZWZyYW1lTGluZXdpZHRoOiA8ZmxvYXQ+LFxcblxcdCAqXFxuXFx0ICogIHNraW5uaW5nOiA8Ym9vbD4sXFxuXFx0ICogIG1vcnBoVGFyZ2V0czogPGJvb2w+LFxcblxcdCAqICBtb3JwaE5vcm1hbHM6IDxib29sPlxcblxcdCAqIH1cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBNZXNoTGFtYmVydE1hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdE1hdGVyaWFsLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnTWVzaExhbWJlcnRNYXRlcmlhbCc7XFxuXFxuXFx0XFx0dGhpcy5jb2xvciA9IG5ldyBDb2xvciggMHhmZmZmZmYgKTsgLy8gZGlmZnVzZVxcblxcblxcdFxcdHRoaXMubWFwID0gbnVsbDtcXG5cXG5cXHRcXHR0aGlzLmxpZ2h0TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5ID0gMS4wO1xcblxcblxcdFxcdHRoaXMuYW9NYXAgPSBudWxsO1xcblxcdFxcdHRoaXMuYW9NYXBJbnRlbnNpdHkgPSAxLjA7XFxuXFxuXFx0XFx0dGhpcy5lbWlzc2l2ZSA9IG5ldyBDb2xvciggMHgwMDAwMDAgKTtcXG5cXHRcXHR0aGlzLmVtaXNzaXZlSW50ZW5zaXR5ID0gMS4wO1xcblxcdFxcdHRoaXMuZW1pc3NpdmVNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuc3BlY3VsYXJNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuYWxwaGFNYXAgPSBudWxsO1xcblxcblxcdFxcdHRoaXMuZW52TWFwID0gbnVsbDtcXG5cXHRcXHR0aGlzLmNvbWJpbmUgPSBNdWx0aXBseU9wZXJhdGlvbjtcXG5cXHRcXHR0aGlzLnJlZmxlY3Rpdml0eSA9IDE7XFxuXFx0XFx0dGhpcy5yZWZyYWN0aW9uUmF0aW8gPSAwLjk4O1xcblxcblxcdFxcdHRoaXMud2lyZWZyYW1lID0gZmFsc2U7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5ld2lkdGggPSAxO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZWNhcCA9ICdyb3VuZCc7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5lam9pbiA9ICdyb3VuZCc7XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IGZhbHNlO1xcblxcdFxcdHRoaXMubW9ycGhUYXJnZXRzID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5tb3JwaE5vcm1hbHMgPSBmYWxzZTtcXG5cXG5cXHRcXHR0aGlzLnNldFZhbHVlcyggcGFyYW1ldGVycyApO1xcblxcblxcdH1cXG5cXG5cXHRNZXNoTGFtYmVydE1hdGVyaWFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE1hdGVyaWFsLnByb3RvdHlwZSApO1xcblxcdE1lc2hMYW1iZXJ0TWF0ZXJpYWwucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWVzaExhbWJlcnRNYXRlcmlhbDtcXG5cXG5cXHRNZXNoTGFtYmVydE1hdGVyaWFsLnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWwgPSB0cnVlO1xcblxcblxcdE1lc2hMYW1iZXJ0TWF0ZXJpYWwucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRNYXRlcmlhbC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHR0aGlzLmNvbG9yLmNvcHkoIHNvdXJjZS5jb2xvciApO1xcblxcblxcdFxcdHRoaXMubWFwID0gc291cmNlLm1hcDtcXG5cXG5cXHRcXHR0aGlzLmxpZ2h0TWFwID0gc291cmNlLmxpZ2h0TWFwO1xcblxcdFxcdHRoaXMubGlnaHRNYXBJbnRlbnNpdHkgPSBzb3VyY2UubGlnaHRNYXBJbnRlbnNpdHk7XFxuXFxuXFx0XFx0dGhpcy5hb01hcCA9IHNvdXJjZS5hb01hcDtcXG5cXHRcXHR0aGlzLmFvTWFwSW50ZW5zaXR5ID0gc291cmNlLmFvTWFwSW50ZW5zaXR5O1xcblxcblxcdFxcdHRoaXMuZW1pc3NpdmUuY29weSggc291cmNlLmVtaXNzaXZlICk7XFxuXFx0XFx0dGhpcy5lbWlzc2l2ZU1hcCA9IHNvdXJjZS5lbWlzc2l2ZU1hcDtcXG5cXHRcXHR0aGlzLmVtaXNzaXZlSW50ZW5zaXR5ID0gc291cmNlLmVtaXNzaXZlSW50ZW5zaXR5O1xcblxcblxcdFxcdHRoaXMuc3BlY3VsYXJNYXAgPSBzb3VyY2Uuc3BlY3VsYXJNYXA7XFxuXFxuXFx0XFx0dGhpcy5hbHBoYU1hcCA9IHNvdXJjZS5hbHBoYU1hcDtcXG5cXG5cXHRcXHR0aGlzLmVudk1hcCA9IHNvdXJjZS5lbnZNYXA7XFxuXFx0XFx0dGhpcy5jb21iaW5lID0gc291cmNlLmNvbWJpbmU7XFxuXFx0XFx0dGhpcy5yZWZsZWN0aXZpdHkgPSBzb3VyY2UucmVmbGVjdGl2aXR5O1xcblxcdFxcdHRoaXMucmVmcmFjdGlvblJhdGlvID0gc291cmNlLnJlZnJhY3Rpb25SYXRpbztcXG5cXG5cXHRcXHR0aGlzLndpcmVmcmFtZSA9IHNvdXJjZS53aXJlZnJhbWU7XFxuXFx0XFx0dGhpcy53aXJlZnJhbWVMaW5ld2lkdGggPSBzb3VyY2Uud2lyZWZyYW1lTGluZXdpZHRoO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZWNhcCA9IHNvdXJjZS53aXJlZnJhbWVMaW5lY2FwO1xcblxcdFxcdHRoaXMud2lyZWZyYW1lTGluZWpvaW4gPSBzb3VyY2Uud2lyZWZyYW1lTGluZWpvaW47XFxuXFxuXFx0XFx0dGhpcy5za2lubmluZyA9IHNvdXJjZS5za2lubmluZztcXG5cXHRcXHR0aGlzLm1vcnBoVGFyZ2V0cyA9IHNvdXJjZS5tb3JwaFRhcmdldHM7XFxuXFx0XFx0dGhpcy5tb3JwaE5vcm1hbHMgPSBzb3VyY2UubW9ycGhOb3JtYWxzO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKlxcblxcdCAqIHBhcmFtZXRlcnMgPSB7XFxuXFx0ICogIGNvbG9yOiA8aGV4PixcXG5cXHQgKiAgb3BhY2l0eTogPGZsb2F0PixcXG5cXHQgKlxcblxcdCAqICBsaW5ld2lkdGg6IDxmbG9hdD4sXFxuXFx0ICpcXG5cXHQgKiAgc2NhbGU6IDxmbG9hdD4sXFxuXFx0ICogIGRhc2hTaXplOiA8ZmxvYXQ+LFxcblxcdCAqICBnYXBTaXplOiA8ZmxvYXQ+XFxuXFx0ICogfVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIExpbmVEYXNoZWRNYXRlcmlhbCggcGFyYW1ldGVycyApIHtcXG5cXG5cXHRcXHRMaW5lQmFzaWNNYXRlcmlhbC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0xpbmVEYXNoZWRNYXRlcmlhbCc7XFxuXFxuXFx0XFx0dGhpcy5zY2FsZSA9IDE7XFxuXFx0XFx0dGhpcy5kYXNoU2l6ZSA9IDM7XFxuXFx0XFx0dGhpcy5nYXBTaXplID0gMTtcXG5cXG5cXHRcXHR0aGlzLnNldFZhbHVlcyggcGFyYW1ldGVycyApO1xcblxcblxcdH1cXG5cXG5cXHRMaW5lRGFzaGVkTWF0ZXJpYWwucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggTGluZUJhc2ljTWF0ZXJpYWwucHJvdG90eXBlICk7XFxuXFx0TGluZURhc2hlZE1hdGVyaWFsLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExpbmVEYXNoZWRNYXRlcmlhbDtcXG5cXG5cXHRMaW5lRGFzaGVkTWF0ZXJpYWwucHJvdG90eXBlLmlzTGluZURhc2hlZE1hdGVyaWFsID0gdHJ1ZTtcXG5cXG5cXHRMaW5lRGFzaGVkTWF0ZXJpYWwucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRMaW5lQmFzaWNNYXRlcmlhbC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHR0aGlzLnNjYWxlID0gc291cmNlLnNjYWxlO1xcblxcdFxcdHRoaXMuZGFzaFNpemUgPSBzb3VyY2UuZGFzaFNpemU7XFxuXFx0XFx0dGhpcy5nYXBTaXplID0gc291cmNlLmdhcFNpemU7XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXG5cXG5cXHR2YXIgTWF0ZXJpYWxzID0gT2JqZWN0LmZyZWV6ZSh7XFxuXFx0XFx0U2hhZG93TWF0ZXJpYWw6IFNoYWRvd01hdGVyaWFsLFxcblxcdFxcdFNwcml0ZU1hdGVyaWFsOiBTcHJpdGVNYXRlcmlhbCxcXG5cXHRcXHRSYXdTaGFkZXJNYXRlcmlhbDogUmF3U2hhZGVyTWF0ZXJpYWwsXFxuXFx0XFx0U2hhZGVyTWF0ZXJpYWw6IFNoYWRlck1hdGVyaWFsLFxcblxcdFxcdFBvaW50c01hdGVyaWFsOiBQb2ludHNNYXRlcmlhbCxcXG5cXHRcXHRNZXNoUGh5c2ljYWxNYXRlcmlhbDogTWVzaFBoeXNpY2FsTWF0ZXJpYWwsXFxuXFx0XFx0TWVzaFN0YW5kYXJkTWF0ZXJpYWw6IE1lc2hTdGFuZGFyZE1hdGVyaWFsLFxcblxcdFxcdE1lc2hQaG9uZ01hdGVyaWFsOiBNZXNoUGhvbmdNYXRlcmlhbCxcXG5cXHRcXHRNZXNoVG9vbk1hdGVyaWFsOiBNZXNoVG9vbk1hdGVyaWFsLFxcblxcdFxcdE1lc2hOb3JtYWxNYXRlcmlhbDogTWVzaE5vcm1hbE1hdGVyaWFsLFxcblxcdFxcdE1lc2hMYW1iZXJ0TWF0ZXJpYWw6IE1lc2hMYW1iZXJ0TWF0ZXJpYWwsXFxuXFx0XFx0TWVzaERlcHRoTWF0ZXJpYWw6IE1lc2hEZXB0aE1hdGVyaWFsLFxcblxcdFxcdE1lc2hEaXN0YW5jZU1hdGVyaWFsOiBNZXNoRGlzdGFuY2VNYXRlcmlhbCxcXG5cXHRcXHRNZXNoQmFzaWNNYXRlcmlhbDogTWVzaEJhc2ljTWF0ZXJpYWwsXFxuXFx0XFx0TGluZURhc2hlZE1hdGVyaWFsOiBMaW5lRGFzaGVkTWF0ZXJpYWwsXFxuXFx0XFx0TGluZUJhc2ljTWF0ZXJpYWw6IExpbmVCYXNpY01hdGVyaWFsLFxcblxcdFxcdE1hdGVyaWFsOiBNYXRlcmlhbFxcblxcdH0pO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0dmFyIENhY2hlID0ge1xcblxcblxcdFxcdGVuYWJsZWQ6IGZhbHNlLFxcblxcblxcdFxcdGZpbGVzOiB7fSxcXG5cXG5cXHRcXHRhZGQ6IGZ1bmN0aW9uICgga2V5LCBmaWxlICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5lbmFibGVkID09PSBmYWxzZSApIHJldHVybjtcXG5cXG5cXHRcXHRcXHQvLyBjb25zb2xlLmxvZyggJ1RIUkVFLkNhY2hlJywgJ0FkZGluZyBrZXk6Jywga2V5ICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5maWxlc1sga2V5IF0gPSBmaWxlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0OiBmdW5jdGlvbiAoIGtleSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZW5hYmxlZCA9PT0gZmFsc2UgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0Ly8gY29uc29sZS5sb2coICdUSFJFRS5DYWNoZScsICdDaGVja2luZyBrZXk6Jywga2V5ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZmlsZXNbIGtleSBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cmVtb3ZlOiBmdW5jdGlvbiAoIGtleSApIHtcXG5cXG5cXHRcXHRcXHRkZWxldGUgdGhpcy5maWxlc1sga2V5IF07XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbGVhcjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuZmlsZXMgPSB7fTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIExvYWRpbmdNYW5hZ2VyKCBvbkxvYWQsIG9uUHJvZ3Jlc3MsIG9uRXJyb3IgKSB7XFxuXFxuXFx0XFx0dmFyIHNjb3BlID0gdGhpcztcXG5cXG5cXHRcXHR2YXIgaXNMb2FkaW5nID0gZmFsc2U7XFxuXFx0XFx0dmFyIGl0ZW1zTG9hZGVkID0gMDtcXG5cXHRcXHR2YXIgaXRlbXNUb3RhbCA9IDA7XFxuXFx0XFx0dmFyIHVybE1vZGlmaWVyID0gdW5kZWZpbmVkO1xcblxcblxcdFxcdHRoaXMub25TdGFydCA9IHVuZGVmaW5lZDtcXG5cXHRcXHR0aGlzLm9uTG9hZCA9IG9uTG9hZDtcXG5cXHRcXHR0aGlzLm9uUHJvZ3Jlc3MgPSBvblByb2dyZXNzO1xcblxcdFxcdHRoaXMub25FcnJvciA9IG9uRXJyb3I7XFxuXFxuXFx0XFx0dGhpcy5pdGVtU3RhcnQgPSBmdW5jdGlvbiAoIHVybCApIHtcXG5cXG5cXHRcXHRcXHRpdGVtc1RvdGFsICsrO1xcblxcblxcdFxcdFxcdGlmICggaXNMb2FkaW5nID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHNjb3BlLm9uU3RhcnQgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzY29wZS5vblN0YXJ0KCB1cmwsIGl0ZW1zTG9hZGVkLCBpdGVtc1RvdGFsICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpc0xvYWRpbmcgPSB0cnVlO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5pdGVtRW5kID0gZnVuY3Rpb24gKCB1cmwgKSB7XFxuXFxuXFx0XFx0XFx0aXRlbXNMb2FkZWQgKys7XFxuXFxuXFx0XFx0XFx0aWYgKCBzY29wZS5vblByb2dyZXNzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUub25Qcm9ncmVzcyggdXJsLCBpdGVtc0xvYWRlZCwgaXRlbXNUb3RhbCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGl0ZW1zTG9hZGVkID09PSBpdGVtc1RvdGFsICkge1xcblxcblxcdFxcdFxcdFxcdGlzTG9hZGluZyA9IGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdGlmICggc2NvcGUub25Mb2FkICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2NvcGUub25Mb2FkKCk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9O1xcblxcblxcdFxcdHRoaXMuaXRlbUVycm9yID0gZnVuY3Rpb24gKCB1cmwgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBzY29wZS5vbkVycm9yICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUub25FcnJvciggdXJsICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5yZXNvbHZlVVJMID0gZnVuY3Rpb24gKCB1cmwgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB1cmxNb2RpZmllciApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdXJsTW9kaWZpZXIoIHVybCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdXJsO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5zZXRVUkxNb2RpZmllciA9IGZ1bmN0aW9uICggdHJhbnNmb3JtICkge1xcblxcblxcdFxcdFxcdHVybE1vZGlmaWVyID0gdHJhbnNmb3JtO1xcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH07XFxuXFxuXFx0fVxcblxcblxcdHZhciBEZWZhdWx0TG9hZGluZ01hbmFnZXIgPSBuZXcgTG9hZGluZ01hbmFnZXIoKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdHZhciBsb2FkaW5nID0ge307XFxuXFxuXFx0ZnVuY3Rpb24gRmlsZUxvYWRlciggbWFuYWdlciApIHtcXG5cXG5cXHRcXHR0aGlzLm1hbmFnZXIgPSAoIG1hbmFnZXIgIT09IHVuZGVmaW5lZCApID8gbWFuYWdlciA6IERlZmF1bHRMb2FkaW5nTWFuYWdlcjtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggRmlsZUxvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdGlmICggdXJsID09PSB1bmRlZmluZWQgKSB1cmwgPSAnJztcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMucGF0aCAhPT0gdW5kZWZpbmVkICkgdXJsID0gdGhpcy5wYXRoICsgdXJsO1xcblxcblxcdFxcdFxcdHVybCA9IHRoaXMubWFuYWdlci5yZXNvbHZlVVJMKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHR2YXIgc2NvcGUgPSB0aGlzO1xcblxcblxcdFxcdFxcdHZhciBjYWNoZWQgPSBDYWNoZS5nZXQoIHVybCApO1xcblxcblxcdFxcdFxcdGlmICggY2FjaGVkICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtU3RhcnQoIHVybCApO1xcblxcblxcdFxcdFxcdFxcdHNldFRpbWVvdXQoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG9uTG9hZCApIG9uTG9hZCggY2FjaGVkICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9LCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGNhY2hlZDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gQ2hlY2sgaWYgcmVxdWVzdCBpcyBkdXBsaWNhdGVcXG5cXG5cXHRcXHRcXHRpZiAoIGxvYWRpbmdbIHVybCBdICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bG9hZGluZ1sgdXJsIF0ucHVzaCgge1xcblxcblxcdFxcdFxcdFxcdFxcdG9uTG9hZDogb25Mb2FkLFxcblxcdFxcdFxcdFxcdFxcdG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXFxuXFx0XFx0XFx0XFx0XFx0b25FcnJvcjogb25FcnJvclxcblxcblxcdFxcdFxcdFxcdH0gKTtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIENoZWNrIGZvciBkYXRhOiBVUklcXG5cXHRcXHRcXHR2YXIgZGF0YVVyaVJlZ2V4ID0gL15kYXRhOiguKj8pKDtiYXNlNjQpPywoLiopJC87XFxuXFx0XFx0XFx0dmFyIGRhdGFVcmlSZWdleFJlc3VsdCA9IHVybC5tYXRjaCggZGF0YVVyaVJlZ2V4ICk7XFxuXFxuXFx0XFx0XFx0Ly8gU2FmYXJpIGNhbiBub3QgaGFuZGxlIERhdGEgVVJJcyB0aHJvdWdoIFhNTEh0dHBSZXF1ZXN0IHNvIHByb2Nlc3MgbWFudWFsbHlcXG5cXHRcXHRcXHRpZiAoIGRhdGFVcmlSZWdleFJlc3VsdCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbWltZVR5cGUgPSBkYXRhVXJpUmVnZXhSZXN1bHRbIDEgXTtcXG5cXHRcXHRcXHRcXHR2YXIgaXNCYXNlNjQgPSAhISBkYXRhVXJpUmVnZXhSZXN1bHRbIDIgXTtcXG5cXHRcXHRcXHRcXHR2YXIgZGF0YSA9IGRhdGFVcmlSZWdleFJlc3VsdFsgMyBdO1xcblxcblxcdFxcdFxcdFxcdGRhdGEgPSB3aW5kb3cuZGVjb2RlVVJJQ29tcG9uZW50KCBkYXRhICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpc0Jhc2U2NCApIGRhdGEgPSB3aW5kb3cuYXRvYiggZGF0YSApO1xcblxcblxcdFxcdFxcdFxcdHRyeSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJlc3BvbnNlO1xcblxcdFxcdFxcdFxcdFxcdHZhciByZXNwb25zZVR5cGUgPSAoIHRoaXMucmVzcG9uc2VUeXBlIHx8ICcnICkudG9Mb3dlckNhc2UoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzd2l0Y2ggKCByZXNwb25zZVR5cGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnYXJyYXlidWZmZXInOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ2Jsb2InOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoIGRhdGEubGVuZ3RoICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dmlld1sgaSBdID0gZGF0YS5jaGFyQ29kZUF0KCBpICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggcmVzcG9uc2VUeXBlID09PSAnYmxvYicgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cmVzcG9uc2UgPSBuZXcgQmxvYiggWyB2aWV3LmJ1ZmZlciBdLCB7IHR5cGU6IG1pbWVUeXBlIH0gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHJlc3BvbnNlID0gdmlldy5idWZmZXI7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ2RvY3VtZW50JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHJlc3BvbnNlID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgbWltZVR5cGUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdqc29uJzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXNwb25zZSA9IEpTT04ucGFyc2UoIGRhdGEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRkZWZhdWx0OiAvLyAndGV4dCcgb3Igb3RoZXJcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXNwb25zZSA9IGRhdGE7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdC8vIFdhaXQgZm9yIG5leHQgYnJvd3NlciB0aWNrIGxpa2Ugc3RhbmRhcmQgWE1MSHR0cFJlcXVlc3QgZXZlbnQgZGlzcGF0Y2hpbmcgZG9lc1xcblxcdFxcdFxcdFxcdFxcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBvbkxvYWQgKSBvbkxvYWQoIHJlc3BvbnNlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9LCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBjYXRjaCAoIGVycm9yICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIFdhaXQgZm9yIG5leHQgYnJvd3NlciB0aWNrIGxpa2Ugc3RhbmRhcmQgWE1MSHR0cFJlcXVlc3QgZXZlbnQgZGlzcGF0Y2hpbmcgZG9lc1xcblxcdFxcdFxcdFxcdFxcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBvbkVycm9yICkgb25FcnJvciggZXJyb3IgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRzY29wZS5tYW5hZ2VyLml0ZW1FbmQoIHVybCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHNjb3BlLm1hbmFnZXIuaXRlbUVycm9yKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9LCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gSW5pdGlhbGlzZSBhcnJheSBmb3IgZHVwbGljYXRlIHJlcXVlc3RzXFxuXFxuXFx0XFx0XFx0XFx0bG9hZGluZ1sgdXJsIF0gPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRsb2FkaW5nWyB1cmwgXS5wdXNoKCB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0b25Mb2FkOiBvbkxvYWQsXFxuXFx0XFx0XFx0XFx0XFx0b25Qcm9ncmVzczogb25Qcm9ncmVzcyxcXG5cXHRcXHRcXHRcXHRcXHRvbkVycm9yOiBvbkVycm9yXFxuXFxuXFx0XFx0XFx0XFx0fSApO1xcblxcblxcdFxcdFxcdFxcdHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XFxuXFxuXFx0XFx0XFx0XFx0cmVxdWVzdC5vcGVuKCAnR0VUJywgdXJsLCB0cnVlICk7XFxuXFxuXFx0XFx0XFx0XFx0cmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCAnbG9hZCcsIGZ1bmN0aW9uICggZXZlbnQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJlc3BvbnNlID0gdGhpcy5yZXNwb25zZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRDYWNoZS5hZGQoIHVybCwgcmVzcG9uc2UgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgY2FsbGJhY2tzID0gbG9hZGluZ1sgdXJsIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZGVsZXRlIGxvYWRpbmdbIHVybCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggdGhpcy5zdGF0dXMgPT09IDIwMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gY2FsbGJhY2tzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBjYWxsYmFjayA9IGNhbGxiYWNrc1sgaSBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggY2FsbGJhY2sub25Mb2FkICkgY2FsbGJhY2sub25Mb2FkKCByZXNwb25zZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRzY29wZS5tYW5hZ2VyLml0ZW1FbmQoIHVybCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSBpZiAoIHRoaXMuc3RhdHVzID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIFNvbWUgYnJvd3NlcnMgcmV0dXJuIEhUVFAgU3RhdHVzIDAgd2hlbiB1c2luZyBub24taHR0cCBwcm90b2NvbFxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIGUuZy4gJ2ZpbGU6Ly8nIG9yICdkYXRhOi8vJy4gSGFuZGxlIGFzIHN1Y2Nlc3MuXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4nICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBpbCA9IGNhbGxiYWNrcy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2FsbGJhY2sgPSBjYWxsYmFja3NbIGkgXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGNhbGxiYWNrLm9uTG9hZCApIGNhbGxiYWNrLm9uTG9hZCggcmVzcG9uc2UgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSBjYWxsYmFja3MubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNhbGxiYWNrID0gY2FsbGJhY2tzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBjYWxsYmFjay5vbkVycm9yICkgY2FsbGJhY2sub25FcnJvciggZXZlbnQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRzY29wZS5tYW5hZ2VyLml0ZW1FcnJvciggdXJsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sIGZhbHNlICk7XFxuXFxuXFx0XFx0XFx0XFx0cmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCAncHJvZ3Jlc3MnLCBmdW5jdGlvbiAoIGV2ZW50ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBjYWxsYmFja3MgPSBsb2FkaW5nWyB1cmwgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gY2FsbGJhY2tzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBjYWxsYmFjayA9IGNhbGxiYWNrc1sgaSBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggY2FsbGJhY2sub25Qcm9ncmVzcyApIGNhbGxiYWNrLm9uUHJvZ3Jlc3MoIGV2ZW50ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sIGZhbHNlICk7XFxuXFxuXFx0XFx0XFx0XFx0cmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCAnZXJyb3InLCBmdW5jdGlvbiAoIGV2ZW50ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBjYWxsYmFja3MgPSBsb2FkaW5nWyB1cmwgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRkZWxldGUgbG9hZGluZ1sgdXJsIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBpbCA9IGNhbGxiYWNrcy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2FsbGJhY2sgPSBjYWxsYmFja3NbIGkgXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGNhbGxiYWNrLm9uRXJyb3IgKSBjYWxsYmFjay5vbkVycm9yKCBldmVudCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRzY29wZS5tYW5hZ2VyLml0ZW1FbmQoIHVybCApO1xcblxcdFxcdFxcdFxcdFxcdHNjb3BlLm1hbmFnZXIuaXRlbUVycm9yKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9LCBmYWxzZSApO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGhpcy5yZXNwb25zZVR5cGUgIT09IHVuZGVmaW5lZCApIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gdGhpcy5yZXNwb25zZVR5cGU7XFxuXFx0XFx0XFx0XFx0aWYgKCB0aGlzLndpdGhDcmVkZW50aWFscyAhPT0gdW5kZWZpbmVkICkgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSB0aGlzLndpdGhDcmVkZW50aWFscztcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHJlcXVlc3Qub3ZlcnJpZGVNaW1lVHlwZSApIHJlcXVlc3Qub3ZlcnJpZGVNaW1lVHlwZSggdGhpcy5taW1lVHlwZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5taW1lVHlwZSA6ICd0ZXh0L3BsYWluJyApO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBoZWFkZXIgaW4gdGhpcy5yZXF1ZXN0SGVhZGVyICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlciggaGVhZGVyLCB0aGlzLnJlcXVlc3RIZWFkZXJbIGhlYWRlciBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJlcXVlc3Quc2VuZCggbnVsbCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRzY29wZS5tYW5hZ2VyLml0ZW1TdGFydCggdXJsICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHJlcXVlc3Q7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRQYXRoOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMucGF0aCA9IHZhbHVlO1xcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0UmVzcG9uc2VUeXBlOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMucmVzcG9uc2VUeXBlID0gdmFsdWU7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRXaXRoQ3JlZGVudGlhbHM6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy53aXRoQ3JlZGVudGlhbHMgPSB2YWx1ZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldE1pbWVUeXBlOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMubWltZVR5cGUgPSB2YWx1ZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFJlcXVlc3RIZWFkZXI6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5yZXF1ZXN0SGVhZGVyID0gdmFsdWU7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqXFxuXFx0ICogQWJzdHJhY3QgQmFzZSBjbGFzcyB0byBibG9jayBiYXNlZCB0ZXh0dXJlcyBsb2FkZXIgKGRkcywgcHZyLCAuLi4pXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ29tcHJlc3NlZFRleHR1cmVMb2FkZXIoIG1hbmFnZXIgKSB7XFxuXFxuXFx0XFx0dGhpcy5tYW5hZ2VyID0gKCBtYW5hZ2VyICE9PSB1bmRlZmluZWQgKSA/IG1hbmFnZXIgOiBEZWZhdWx0TG9hZGluZ01hbmFnZXI7XFxuXFxuXFx0XFx0Ly8gb3ZlcnJpZGUgaW4gc3ViIGNsYXNzZXNcXG5cXHRcXHR0aGlzLl9wYXJzZXIgPSBudWxsO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBDb21wcmVzc2VkVGV4dHVyZUxvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0XFx0dmFyIGltYWdlcyA9IFtdO1xcblxcblxcdFxcdFxcdHZhciB0ZXh0dXJlID0gbmV3IENvbXByZXNzZWRUZXh0dXJlKCk7XFxuXFx0XFx0XFx0dGV4dHVyZS5pbWFnZSA9IGltYWdlcztcXG5cXG5cXHRcXHRcXHR2YXIgbG9hZGVyID0gbmV3IEZpbGVMb2FkZXIoIHRoaXMubWFuYWdlciApO1xcblxcdFxcdFxcdGxvYWRlci5zZXRQYXRoKCB0aGlzLnBhdGggKTtcXG5cXHRcXHRcXHRsb2FkZXIuc2V0UmVzcG9uc2VUeXBlKCAnYXJyYXlidWZmZXInICk7XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gbG9hZFRleHR1cmUoIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0bG9hZGVyLmxvYWQoIHVybFsgaSBdLCBmdW5jdGlvbiAoIGJ1ZmZlciApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdGV4RGF0YXMgPSBzY29wZS5fcGFyc2VyKCBidWZmZXIsIHRydWUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbWFnZXNbIGkgXSA9IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHR3aWR0aDogdGV4RGF0YXMud2lkdGgsXFxuXFx0XFx0XFx0XFx0XFx0XFx0aGVpZ2h0OiB0ZXhEYXRhcy5oZWlnaHQsXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9ybWF0OiB0ZXhEYXRhcy5mb3JtYXQsXFxuXFx0XFx0XFx0XFx0XFx0XFx0bWlwbWFwczogdGV4RGF0YXMubWlwbWFwc1xcblxcdFxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0XFx0XFx0bG9hZGVkICs9IDE7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBsb2FkZWQgPT09IDYgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0ZXhEYXRhcy5taXBtYXBDb3VudCA9PT0gMSApXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5taW5GaWx0ZXIgPSBMaW5lYXJGaWx0ZXI7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5mb3JtYXQgPSB0ZXhEYXRhcy5mb3JtYXQ7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBvbkxvYWQgKSBvbkxvYWQoIHRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fSwgb25Qcm9ncmVzcywgb25FcnJvciApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIEFycmF5LmlzQXJyYXkoIHVybCApICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBsb2FkZWQgPSAwO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgaWwgPSB1cmwubGVuZ3RoOyBpIDwgaWw7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bG9hZFRleHR1cmUoIGkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBjb21wcmVzc2VkIGN1YmVtYXAgdGV4dHVyZSBzdG9yZWQgaW4gYSBzaW5nbGUgRERTIGZpbGVcXG5cXG5cXHRcXHRcXHRcXHRsb2FkZXIubG9hZCggdXJsLCBmdW5jdGlvbiAoIGJ1ZmZlciApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdGV4RGF0YXMgPSBzY29wZS5fcGFyc2VyKCBidWZmZXIsIHRydWUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHRleERhdGFzLmlzQ3ViZW1hcCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgZmFjZXMgPSB0ZXhEYXRhcy5taXBtYXBzLmxlbmd0aCAvIHRleERhdGFzLm1pcG1hcENvdW50O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBmID0gMDsgZiA8IGZhY2VzOyBmICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGltYWdlc1sgZiBdID0geyBtaXBtYXBzOiBbXSB9O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHRleERhdGFzLm1pcG1hcENvdW50OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGltYWdlc1sgZiBdLm1pcG1hcHMucHVzaCggdGV4RGF0YXMubWlwbWFwc1sgZiAqIHRleERhdGFzLm1pcG1hcENvdW50ICsgaSBdICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW1hZ2VzWyBmIF0uZm9ybWF0ID0gdGV4RGF0YXMuZm9ybWF0O1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGltYWdlc1sgZiBdLndpZHRoID0gdGV4RGF0YXMud2lkdGg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW1hZ2VzWyBmIF0uaGVpZ2h0ID0gdGV4RGF0YXMuaGVpZ2h0O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLmltYWdlLndpZHRoID0gdGV4RGF0YXMud2lkdGg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5pbWFnZS5oZWlnaHQgPSB0ZXhEYXRhcy5oZWlnaHQ7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5taXBtYXBzID0gdGV4RGF0YXMubWlwbWFwcztcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB0ZXhEYXRhcy5taXBtYXBDb3VudCA9PT0gMSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLm1pbkZpbHRlciA9IExpbmVhckZpbHRlcjtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5mb3JtYXQgPSB0ZXhEYXRhcy5mb3JtYXQ7XFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBvbkxvYWQgKSBvbkxvYWQoIHRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRcXHR9LCBvblByb2dyZXNzLCBvbkVycm9yICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0ZXh0dXJlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0UGF0aDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnBhdGggPSB2YWx1ZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgTmlrb3MgTS4gLyBodHRwczovL2dpdGh1Yi5jb20vZm9vMTIzL1xcblxcdCAqXFxuXFx0ICogQWJzdHJhY3QgQmFzZSBjbGFzcyB0byBsb2FkIGdlbmVyaWMgYmluYXJ5IHRleHR1cmVzIGZvcm1hdHMgKHJnYmUsIGhkciwgLi4uKVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIERhdGFUZXh0dXJlTG9hZGVyKCBtYW5hZ2VyICkge1xcblxcblxcdFxcdHRoaXMubWFuYWdlciA9ICggbWFuYWdlciAhPT0gdW5kZWZpbmVkICkgPyBtYW5hZ2VyIDogRGVmYXVsdExvYWRpbmdNYW5hZ2VyO1xcblxcblxcdFxcdC8vIG92ZXJyaWRlIGluIHN1YiBjbGFzc2VzXFxuXFx0XFx0dGhpcy5fcGFyc2VyID0gbnVsbDtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggRGF0YVRleHR1cmVMb2FkZXIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0bG9hZDogZnVuY3Rpb24gKCB1cmwsIG9uTG9hZCwgb25Qcm9ncmVzcywgb25FcnJvciApIHtcXG5cXG5cXHRcXHRcXHR2YXIgc2NvcGUgPSB0aGlzO1xcblxcblxcdFxcdFxcdHZhciB0ZXh0dXJlID0gbmV3IERhdGFUZXh0dXJlKCk7XFxuXFxuXFx0XFx0XFx0dmFyIGxvYWRlciA9IG5ldyBGaWxlTG9hZGVyKCB0aGlzLm1hbmFnZXIgKTtcXG5cXHRcXHRcXHRsb2FkZXIuc2V0UmVzcG9uc2VUeXBlKCAnYXJyYXlidWZmZXInICk7XFxuXFxuXFx0XFx0XFx0bG9hZGVyLmxvYWQoIHVybCwgZnVuY3Rpb24gKCBidWZmZXIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHRleERhdGEgPSBzY29wZS5fcGFyc2VyKCBidWZmZXIgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoICEgdGV4RGF0YSApIHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHVuZGVmaW5lZCAhPT0gdGV4RGF0YS5pbWFnZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLmltYWdlID0gdGV4RGF0YS5pbWFnZTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCB1bmRlZmluZWQgIT09IHRleERhdGEuZGF0YSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLmltYWdlLndpZHRoID0gdGV4RGF0YS53aWR0aDtcXG5cXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLmltYWdlLmhlaWdodCA9IHRleERhdGEuaGVpZ2h0O1xcblxcdFxcdFxcdFxcdFxcdHRleHR1cmUuaW1hZ2UuZGF0YSA9IHRleERhdGEuZGF0YTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZS53cmFwUyA9IHVuZGVmaW5lZCAhPT0gdGV4RGF0YS53cmFwUyA/IHRleERhdGEud3JhcFMgOiBDbGFtcFRvRWRnZVdyYXBwaW5nO1xcblxcdFxcdFxcdFxcdHRleHR1cmUud3JhcFQgPSB1bmRlZmluZWQgIT09IHRleERhdGEud3JhcFQgPyB0ZXhEYXRhLndyYXBUIDogQ2xhbXBUb0VkZ2VXcmFwcGluZztcXG5cXG5cXHRcXHRcXHRcXHR0ZXh0dXJlLm1hZ0ZpbHRlciA9IHVuZGVmaW5lZCAhPT0gdGV4RGF0YS5tYWdGaWx0ZXIgPyB0ZXhEYXRhLm1hZ0ZpbHRlciA6IExpbmVhckZpbHRlcjtcXG5cXHRcXHRcXHRcXHR0ZXh0dXJlLm1pbkZpbHRlciA9IHVuZGVmaW5lZCAhPT0gdGV4RGF0YS5taW5GaWx0ZXIgPyB0ZXhEYXRhLm1pbkZpbHRlciA6IExpbmVhck1pcE1hcExpbmVhckZpbHRlcjtcXG5cXG5cXHRcXHRcXHRcXHR0ZXh0dXJlLmFuaXNvdHJvcHkgPSB1bmRlZmluZWQgIT09IHRleERhdGEuYW5pc290cm9weSA/IHRleERhdGEuYW5pc290cm9weSA6IDE7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB1bmRlZmluZWQgIT09IHRleERhdGEuZm9ybWF0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmUuZm9ybWF0ID0gdGV4RGF0YS5mb3JtYXQ7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdGlmICggdW5kZWZpbmVkICE9PSB0ZXhEYXRhLnR5cGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZS50eXBlID0gdGV4RGF0YS50eXBlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHVuZGVmaW5lZCAhPT0gdGV4RGF0YS5taXBtYXBzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmUubWlwbWFwcyA9IHRleERhdGEubWlwbWFwcztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCAxID09PSB0ZXhEYXRhLm1pcG1hcENvdW50ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmUubWluRmlsdGVyID0gTGluZWFyRmlsdGVyO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0ZXh0dXJlLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9uTG9hZCApIG9uTG9hZCggdGV4dHVyZSwgdGV4RGF0YSApO1xcblxcblxcdFxcdFxcdH0sIG9uUHJvZ3Jlc3MsIG9uRXJyb3IgKTtcXG5cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGV4dHVyZTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gSW1hZ2VMb2FkZXIoIG1hbmFnZXIgKSB7XFxuXFxuXFx0XFx0dGhpcy5tYW5hZ2VyID0gKCBtYW5hZ2VyICE9PSB1bmRlZmluZWQgKSA/IG1hbmFnZXIgOiBEZWZhdWx0TG9hZGluZ01hbmFnZXI7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIEltYWdlTG9hZGVyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGNyb3NzT3JpZ2luOiAnQW5vbnltb3VzJyxcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdGlmICggdXJsID09PSB1bmRlZmluZWQgKSB1cmwgPSAnJztcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMucGF0aCAhPT0gdW5kZWZpbmVkICkgdXJsID0gdGhpcy5wYXRoICsgdXJsO1xcblxcblxcdFxcdFxcdHVybCA9IHRoaXMubWFuYWdlci5yZXNvbHZlVVJMKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHR2YXIgc2NvcGUgPSB0aGlzO1xcblxcblxcdFxcdFxcdHZhciBjYWNoZWQgPSBDYWNoZS5nZXQoIHVybCApO1xcblxcblxcdFxcdFxcdGlmICggY2FjaGVkICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtU3RhcnQoIHVybCApO1xcblxcblxcdFxcdFxcdFxcdHNldFRpbWVvdXQoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG9uTG9hZCApIG9uTG9hZCggY2FjaGVkICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9LCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGNhY2hlZDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdpbWcnICk7XFxuXFxuXFx0XFx0XFx0aW1hZ2UuYWRkRXZlbnRMaXN0ZW5lciggJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Q2FjaGUuYWRkKCB1cmwsIHRoaXMgKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9uTG9hZCApIG9uTG9hZCggdGhpcyApO1xcblxcblxcdFxcdFxcdFxcdHNjb3BlLm1hbmFnZXIuaXRlbUVuZCggdXJsICk7XFxuXFxuXFx0XFx0XFx0fSwgZmFsc2UgKTtcXG5cXG5cXHRcXHRcXHQvKlxcblxcdFxcdFxcdGltYWdlLmFkZEV2ZW50TGlzdGVuZXIoICdwcm9ncmVzcycsIGZ1bmN0aW9uICggZXZlbnQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvblByb2dyZXNzICkgb25Qcm9ncmVzcyggZXZlbnQgKTtcXG5cXG5cXHRcXHRcXHR9LCBmYWxzZSApO1xcblxcdFxcdFxcdCovXFxuXFxuXFx0XFx0XFx0aW1hZ2UuYWRkRXZlbnRMaXN0ZW5lciggJ2Vycm9yJywgZnVuY3Rpb24gKCBldmVudCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9uRXJyb3IgKSBvbkVycm9yKCBldmVudCApO1xcblxcblxcdFxcdFxcdFxcdHNjb3BlLm1hbmFnZXIuaXRlbUVuZCggdXJsICk7XFxuXFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRXJyb3IoIHVybCApO1xcblxcblxcdFxcdFxcdH0sIGZhbHNlICk7XFxuXFxuXFx0XFx0XFx0aWYgKCB1cmwuc3Vic3RyKCAwLCA1ICkgIT09ICdkYXRhOicgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0aGlzLmNyb3NzT3JpZ2luICE9PSB1bmRlZmluZWQgKSBpbWFnZS5jcm9zc09yaWdpbiA9IHRoaXMuY3Jvc3NPcmlnaW47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHNjb3BlLm1hbmFnZXIuaXRlbVN0YXJ0KCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRpbWFnZS5zcmMgPSB1cmw7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGltYWdlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q3Jvc3NPcmlnaW46IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jcm9zc09yaWdpbiA9IHZhbHVlO1xcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0UGF0aDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnBhdGggPSB2YWx1ZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ3ViZVRleHR1cmVMb2FkZXIoIG1hbmFnZXIgKSB7XFxuXFxuXFx0XFx0dGhpcy5tYW5hZ2VyID0gKCBtYW5hZ2VyICE9PSB1bmRlZmluZWQgKSA/IG1hbmFnZXIgOiBEZWZhdWx0TG9hZGluZ01hbmFnZXI7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIEN1YmVUZXh0dXJlTG9hZGVyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGNyb3NzT3JpZ2luOiAnQW5vbnltb3VzJyxcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybHMsIG9uTG9hZCwgb25Qcm9ncmVzcywgb25FcnJvciApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGV4dHVyZSA9IG5ldyBDdWJlVGV4dHVyZSgpO1xcblxcblxcdFxcdFxcdHZhciBsb2FkZXIgPSBuZXcgSW1hZ2VMb2FkZXIoIHRoaXMubWFuYWdlciApO1xcblxcdFxcdFxcdGxvYWRlci5zZXRDcm9zc09yaWdpbiggdGhpcy5jcm9zc09yaWdpbiApO1xcblxcdFxcdFxcdGxvYWRlci5zZXRQYXRoKCB0aGlzLnBhdGggKTtcXG5cXG5cXHRcXHRcXHR2YXIgbG9hZGVkID0gMDtcXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBsb2FkVGV4dHVyZSggaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRsb2FkZXIubG9hZCggdXJsc1sgaSBdLCBmdW5jdGlvbiAoIGltYWdlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmUuaW1hZ2VzWyBpIF0gPSBpbWFnZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsb2FkZWQgKys7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBsb2FkZWQgPT09IDYgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBvbkxvYWQgKSBvbkxvYWQoIHRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fSwgdW5kZWZpbmVkLCBvbkVycm9yICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHVybHMubGVuZ3RoOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdGxvYWRUZXh0dXJlKCBpICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0ZXh0dXJlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q3Jvc3NPcmlnaW46IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jcm9zc09yaWdpbiA9IHZhbHVlO1xcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0UGF0aDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnBhdGggPSB2YWx1ZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gVGV4dHVyZUxvYWRlciggbWFuYWdlciApIHtcXG5cXG5cXHRcXHR0aGlzLm1hbmFnZXIgPSAoIG1hbmFnZXIgIT09IHVuZGVmaW5lZCApID8gbWFuYWdlciA6IERlZmF1bHRMb2FkaW5nTWFuYWdlcjtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggVGV4dHVyZUxvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRjcm9zc09yaWdpbjogJ0Fub255bW91cycsXFxuXFxuXFx0XFx0bG9hZDogZnVuY3Rpb24gKCB1cmwsIG9uTG9hZCwgb25Qcm9ncmVzcywgb25FcnJvciApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGV4dHVyZSA9IG5ldyBUZXh0dXJlKCk7XFxuXFxuXFx0XFx0XFx0dmFyIGxvYWRlciA9IG5ldyBJbWFnZUxvYWRlciggdGhpcy5tYW5hZ2VyICk7XFxuXFx0XFx0XFx0bG9hZGVyLnNldENyb3NzT3JpZ2luKCB0aGlzLmNyb3NzT3JpZ2luICk7XFxuXFx0XFx0XFx0bG9hZGVyLnNldFBhdGgoIHRoaXMucGF0aCApO1xcblxcblxcdFxcdFxcdGxvYWRlci5sb2FkKCB1cmwsIGZ1bmN0aW9uICggaW1hZ2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGV4dHVyZS5pbWFnZSA9IGltYWdlO1xcblxcblxcdFxcdFxcdFxcdC8vIEpQRUdzIGNhbid0IGhhdmUgYW4gYWxwaGEgY2hhbm5lbCwgc28gbWVtb3J5IGNhbiBiZSBzYXZlZCBieSBzdG9yaW5nIHRoZW0gYXMgUkdCLlxcblxcdFxcdFxcdFxcdHZhciBpc0pQRUcgPSB1cmwuc2VhcmNoKCAvXFxcXC4oanBnfGpwZWcpJC8gKSA+IDAgfHwgdXJsLnNlYXJjaCggL15kYXRhXFxcXDppbWFnZVxcXFwvanBlZy8gKSA9PT0gMDtcXG5cXG5cXHRcXHRcXHRcXHR0ZXh0dXJlLmZvcm1hdCA9IGlzSlBFRyA/IFJHQkZvcm1hdCA6IFJHQkFGb3JtYXQ7XFxuXFx0XFx0XFx0XFx0dGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvbkxvYWQgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRvbkxvYWQoIHRleHR1cmUgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSwgb25Qcm9ncmVzcywgb25FcnJvciApO1xcblxcblxcdFxcdFxcdHJldHVybiB0ZXh0dXJlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q3Jvc3NPcmlnaW46IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jcm9zc09yaWdpbiA9IHZhbHVlO1xcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0UGF0aDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnBhdGggPSB2YWx1ZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igeno4NSAvIGh0dHA6Ly93d3cubGFiNGdhbWVzLm5ldC96ejg1L2Jsb2dcXG5cXHQgKiBFeHRlbnNpYmxlIGN1cnZlIG9iamVjdFxcblxcdCAqXFxuXFx0ICogU29tZSBjb21tb24gb2YgY3VydmUgbWV0aG9kczpcXG5cXHQgKiAuZ2V0UG9pbnQoIHQsIG9wdGlvbmFsVGFyZ2V0ICksIC5nZXRUYW5nZW50KCB0IClcXG5cXHQgKiAuZ2V0UG9pbnRBdCggdSwgb3B0aW9uYWxUYXJnZXQgKSwgLmdldFRhbmdlbnRBdCggdSApXFxuXFx0ICogLmdldFBvaW50cygpLCAuZ2V0U3BhY2VkUG9pbnRzKClcXG5cXHQgKiAuZ2V0TGVuZ3RoKClcXG5cXHQgKiAudXBkYXRlQXJjTGVuZ3RocygpXFxuXFx0ICpcXG5cXHQgKiBUaGlzIGZvbGxvd2luZyBjdXJ2ZXMgaW5oZXJpdCBmcm9tIFRIUkVFLkN1cnZlOlxcblxcdCAqXFxuXFx0ICogLS0gMkQgY3VydmVzIC0tXFxuXFx0ICogVEhSRUUuQXJjQ3VydmVcXG5cXHQgKiBUSFJFRS5DdWJpY0JlemllckN1cnZlXFxuXFx0ICogVEhSRUUuRWxsaXBzZUN1cnZlXFxuXFx0ICogVEhSRUUuTGluZUN1cnZlXFxuXFx0ICogVEhSRUUuUXVhZHJhdGljQmV6aWVyQ3VydmVcXG5cXHQgKiBUSFJFRS5TcGxpbmVDdXJ2ZVxcblxcdCAqXFxuXFx0ICogLS0gM0QgY3VydmVzIC0tXFxuXFx0ICogVEhSRUUuQ2F0bXVsbFJvbUN1cnZlM1xcblxcdCAqIFRIUkVFLkN1YmljQmV6aWVyQ3VydmUzXFxuXFx0ICogVEhSRUUuTGluZUN1cnZlM1xcblxcdCAqIFRIUkVFLlF1YWRyYXRpY0JlemllckN1cnZlM1xcblxcdCAqXFxuXFx0ICogQSBzZXJpZXMgb2YgY3VydmVzIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIFRIUkVFLkN1cnZlUGF0aC5cXG5cXHQgKlxcblxcdCAqKi9cXG5cXG5cXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXHQgKlxcdEFic3RyYWN0IEN1cnZlIGJhc2UgY2xhc3NcXG5cXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuXFx0ZnVuY3Rpb24gQ3VydmUoKSB7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0N1cnZlJztcXG5cXG5cXHRcXHR0aGlzLmFyY0xlbmd0aERpdmlzaW9ucyA9IDIwMDtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggQ3VydmUucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Ly8gVmlydHVhbCBiYXNlIGNsYXNzIG1ldGhvZCB0byBvdmVyd3JpdGUgYW5kIGltcGxlbWVudCBpbiBzdWJjbGFzc2VzXFxuXFx0XFx0Ly9cXHQtIHQgWzAgLi4gMV1cXG5cXG5cXHRcXHRnZXRQb2ludDogZnVuY3Rpb24gKCAvKiB0LCBvcHRpb25hbFRhcmdldCAqLyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5DdXJ2ZTogLmdldFBvaW50KCkgbm90IGltcGxlbWVudGVkLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIEdldCBwb2ludCBhdCByZWxhdGl2ZSBwb3NpdGlvbiBpbiBjdXJ2ZSBhY2NvcmRpbmcgdG8gYXJjIGxlbmd0aFxcblxcdFxcdC8vIC0gdSBbMCAuLiAxXVxcblxcblxcdFxcdGdldFBvaW50QXQ6IGZ1bmN0aW9uICggdSwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHQgPSB0aGlzLmdldFV0b1RtYXBwaW5nKCB1ICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2V0UG9pbnQoIHQsIG9wdGlvbmFsVGFyZ2V0ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBHZXQgc2VxdWVuY2Ugb2YgcG9pbnRzIHVzaW5nIGdldFBvaW50KCB0IClcXG5cXG5cXHRcXHRnZXRQb2ludHM6IGZ1bmN0aW9uICggZGl2aXNpb25zICkge1xcblxcblxcdFxcdFxcdGlmICggZGl2aXNpb25zID09PSB1bmRlZmluZWQgKSBkaXZpc2lvbnMgPSA1O1xcblxcblxcdFxcdFxcdHZhciBwb2ludHMgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgZCA9IDA7IGQgPD0gZGl2aXNpb25zOyBkICsrICkge1xcblxcblxcdFxcdFxcdFxcdHBvaW50cy5wdXNoKCB0aGlzLmdldFBvaW50KCBkIC8gZGl2aXNpb25zICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHBvaW50cztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIEdldCBzZXF1ZW5jZSBvZiBwb2ludHMgdXNpbmcgZ2V0UG9pbnRBdCggdSApXFxuXFxuXFx0XFx0Z2V0U3BhY2VkUG9pbnRzOiBmdW5jdGlvbiAoIGRpdmlzaW9ucyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGRpdmlzaW9ucyA9PT0gdW5kZWZpbmVkICkgZGl2aXNpb25zID0gNTtcXG5cXG5cXHRcXHRcXHR2YXIgcG9pbnRzID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGQgPSAwOyBkIDw9IGRpdmlzaW9uczsgZCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRwb2ludHMucHVzaCggdGhpcy5nZXRQb2ludEF0KCBkIC8gZGl2aXNpb25zICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHBvaW50cztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIEdldCB0b3RhbCBjdXJ2ZSBhcmMgbGVuZ3RoXFxuXFxuXFx0XFx0Z2V0TGVuZ3RoOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGxlbmd0aHMgPSB0aGlzLmdldExlbmd0aHMoKTtcXG5cXHRcXHRcXHRyZXR1cm4gbGVuZ3Roc1sgbGVuZ3Rocy5sZW5ndGggLSAxIF07XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBHZXQgbGlzdCBvZiBjdW11bGF0aXZlIHNlZ21lbnQgbGVuZ3Roc1xcblxcblxcdFxcdGdldExlbmd0aHM6IGZ1bmN0aW9uICggZGl2aXNpb25zICkge1xcblxcblxcdFxcdFxcdGlmICggZGl2aXNpb25zID09PSB1bmRlZmluZWQgKSBkaXZpc2lvbnMgPSB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucztcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuY2FjaGVBcmNMZW5ndGhzICYmXFxuXFx0XFx0XFx0XFx0KCB0aGlzLmNhY2hlQXJjTGVuZ3Rocy5sZW5ndGggPT09IGRpdmlzaW9ucyArIDEgKSAmJlxcblxcdFxcdFxcdFxcdCEgdGhpcy5uZWVkc1VwZGF0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMubmVlZHNVcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHR2YXIgY2FjaGUgPSBbXTtcXG5cXHRcXHRcXHR2YXIgY3VycmVudCwgbGFzdCA9IHRoaXMuZ2V0UG9pbnQoIDAgKTtcXG5cXHRcXHRcXHR2YXIgcCwgc3VtID0gMDtcXG5cXG5cXHRcXHRcXHRjYWNoZS5wdXNoKCAwICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggcCA9IDE7IHAgPD0gZGl2aXNpb25zOyBwICsrICkge1xcblxcblxcdFxcdFxcdFxcdGN1cnJlbnQgPSB0aGlzLmdldFBvaW50KCBwIC8gZGl2aXNpb25zICk7XFxuXFx0XFx0XFx0XFx0c3VtICs9IGN1cnJlbnQuZGlzdGFuY2VUbyggbGFzdCApO1xcblxcdFxcdFxcdFxcdGNhY2hlLnB1c2goIHN1bSApO1xcblxcdFxcdFxcdFxcdGxhc3QgPSBjdXJyZW50O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLmNhY2hlQXJjTGVuZ3RocyA9IGNhY2hlO1xcblxcblxcdFxcdFxcdHJldHVybiBjYWNoZTsgLy8geyBzdW1zOiBjYWNoZSwgc3VtOiBzdW0gfTsgU3VtIGlzIGluIHRoZSBsYXN0IGVsZW1lbnQuXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR1cGRhdGVBcmNMZW5ndGhzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFx0XFx0XFx0dGhpcy5nZXRMZW5ndGhzKCk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBHaXZlbiB1ICggMCAuLiAxICksIGdldCBhIHQgdG8gZmluZCBwLiBUaGlzIGdpdmVzIHlvdSBwb2ludHMgd2hpY2ggYXJlIGVxdWlkaXN0YW50XFxuXFxuXFx0XFx0Z2V0VXRvVG1hcHBpbmc6IGZ1bmN0aW9uICggdSwgZGlzdGFuY2UgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFyY0xlbmd0aHMgPSB0aGlzLmdldExlbmd0aHMoKTtcXG5cXG5cXHRcXHRcXHR2YXIgaSA9IDAsIGlsID0gYXJjTGVuZ3Rocy5sZW5ndGg7XFxuXFxuXFx0XFx0XFx0dmFyIHRhcmdldEFyY0xlbmd0aDsgLy8gVGhlIHRhcmdldGVkIHUgZGlzdGFuY2UgdmFsdWUgdG8gZ2V0XFxuXFxuXFx0XFx0XFx0aWYgKCBkaXN0YW5jZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0YXJnZXRBcmNMZW5ndGggPSBkaXN0YW5jZTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHRhcmdldEFyY0xlbmd0aCA9IHUgKiBhcmNMZW5ndGhzWyBpbCAtIDEgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gYmluYXJ5IHNlYXJjaCBmb3IgdGhlIGluZGV4IHdpdGggbGFyZ2VzdCB2YWx1ZSBzbWFsbGVyIHRoYW4gdGFyZ2V0IHUgZGlzdGFuY2VcXG5cXG5cXHRcXHRcXHR2YXIgbG93ID0gMCwgaGlnaCA9IGlsIC0gMSwgY29tcGFyaXNvbjtcXG5cXG5cXHRcXHRcXHR3aGlsZSAoIGxvdyA8PSBoaWdoICkge1xcblxcblxcdFxcdFxcdFxcdGkgPSBNYXRoLmZsb29yKCBsb3cgKyAoIGhpZ2ggLSBsb3cgKSAvIDIgKTsgLy8gbGVzcyBsaWtlbHkgdG8gb3ZlcmZsb3csIHRob3VnaCBwcm9iYWJseSBub3QgaXNzdWUgaGVyZSwgSlMgZG9lc24ndCByZWFsbHkgaGF2ZSBpbnRlZ2VycywgYWxsIG51bWJlcnMgYXJlIGZsb2F0c1xcblxcblxcdFxcdFxcdFxcdGNvbXBhcmlzb24gPSBhcmNMZW5ndGhzWyBpIF0gLSB0YXJnZXRBcmNMZW5ndGg7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBjb21wYXJpc29uIDwgMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsb3cgPSBpICsgMTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBjb21wYXJpc29uID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRoaWdoID0gaSAtIDE7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRoaWdoID0gaTtcXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBET05FXFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpID0gaGlnaDtcXG5cXG5cXHRcXHRcXHRpZiAoIGFyY0xlbmd0aHNbIGkgXSA9PT0gdGFyZ2V0QXJjTGVuZ3RoICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBpIC8gKCBpbCAtIDEgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gd2UgY291bGQgZ2V0IGZpbmVyIGdyYWluIGF0IGxlbmd0aHMsIG9yIHVzZSBzaW1wbGUgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIHR3byBwb2ludHNcXG5cXG5cXHRcXHRcXHR2YXIgbGVuZ3RoQmVmb3JlID0gYXJjTGVuZ3Roc1sgaSBdO1xcblxcdFxcdFxcdHZhciBsZW5ndGhBZnRlciA9IGFyY0xlbmd0aHNbIGkgKyAxIF07XFxuXFxuXFx0XFx0XFx0dmFyIHNlZ21lbnRMZW5ndGggPSBsZW5ndGhBZnRlciAtIGxlbmd0aEJlZm9yZTtcXG5cXG5cXHRcXHRcXHQvLyBkZXRlcm1pbmUgd2hlcmUgd2UgYXJlIGJldHdlZW4gdGhlICdiZWZvcmUnIGFuZCAnYWZ0ZXInIHBvaW50c1xcblxcblxcdFxcdFxcdHZhciBzZWdtZW50RnJhY3Rpb24gPSAoIHRhcmdldEFyY0xlbmd0aCAtIGxlbmd0aEJlZm9yZSApIC8gc2VnbWVudExlbmd0aDtcXG5cXG5cXHRcXHRcXHQvLyBhZGQgdGhhdCBmcmFjdGlvbmFsIGFtb3VudCB0byB0XFxuXFxuXFx0XFx0XFx0dmFyIHQgPSAoIGkgKyBzZWdtZW50RnJhY3Rpb24gKSAvICggaWwgLSAxICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBSZXR1cm5zIGEgdW5pdCB2ZWN0b3IgdGFuZ2VudCBhdCB0XFxuXFx0XFx0Ly8gSW4gY2FzZSBhbnkgc3ViIGN1cnZlIGRvZXMgbm90IGltcGxlbWVudCBpdHMgdGFuZ2VudCBkZXJpdmF0aW9uLFxcblxcdFxcdC8vIDIgcG9pbnRzIGEgc21hbGwgZGVsdGEgYXBhcnQgd2lsbCBiZSB1c2VkIHRvIGZpbmQgaXRzIGdyYWRpZW50XFxuXFx0XFx0Ly8gd2hpY2ggc2VlbXMgdG8gZ2l2ZSBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlvblxcblxcblxcdFxcdGdldFRhbmdlbnQ6IGZ1bmN0aW9uICggdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGVsdGEgPSAwLjAwMDE7XFxuXFx0XFx0XFx0dmFyIHQxID0gdCAtIGRlbHRhO1xcblxcdFxcdFxcdHZhciB0MiA9IHQgKyBkZWx0YTtcXG5cXG5cXHRcXHRcXHQvLyBDYXBwaW5nIGluIGNhc2Ugb2YgZGFuZ2VyXFxuXFxuXFx0XFx0XFx0aWYgKCB0MSA8IDAgKSB0MSA9IDA7XFxuXFx0XFx0XFx0aWYgKCB0MiA+IDEgKSB0MiA9IDE7XFxuXFxuXFx0XFx0XFx0dmFyIHB0MSA9IHRoaXMuZ2V0UG9pbnQoIHQxICk7XFxuXFx0XFx0XFx0dmFyIHB0MiA9IHRoaXMuZ2V0UG9pbnQoIHQyICk7XFxuXFxuXFx0XFx0XFx0dmFyIHZlYyA9IHB0Mi5jbG9uZSgpLnN1YiggcHQxICk7XFxuXFx0XFx0XFx0cmV0dXJuIHZlYy5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldFRhbmdlbnRBdDogZnVuY3Rpb24gKCB1ICkge1xcblxcblxcdFxcdFxcdHZhciB0ID0gdGhpcy5nZXRVdG9UbWFwcGluZyggdSApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmdldFRhbmdlbnQoIHQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvbXB1dGVGcmVuZXRGcmFtZXM6IGZ1bmN0aW9uICggc2VnbWVudHMsIGNsb3NlZCApIHtcXG5cXG5cXHRcXHRcXHQvLyBzZWUgaHR0cDovL3d3dy5jcy5pbmRpYW5hLmVkdS9wdWIvdGVjaHJlcG9ydHMvVFI0MjUucGRmXFxuXFxuXFx0XFx0XFx0dmFyIG5vcm1hbCA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0dmFyIHRhbmdlbnRzID0gW107XFxuXFx0XFx0XFx0dmFyIG5vcm1hbHMgPSBbXTtcXG5cXHRcXHRcXHR2YXIgYmlub3JtYWxzID0gW107XFxuXFxuXFx0XFx0XFx0dmFyIHZlYyA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0XFx0dmFyIG1hdCA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0XFx0dmFyIGksIHUsIHRoZXRhO1xcblxcblxcdFxcdFxcdC8vIGNvbXB1dGUgdGhlIHRhbmdlbnQgdmVjdG9ycyBmb3IgZWFjaCBzZWdtZW50IG9uIHRoZSBjdXJ2ZVxcblxcblxcdFxcdFxcdGZvciAoIGkgPSAwOyBpIDw9IHNlZ21lbnRzOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHUgPSBpIC8gc2VnbWVudHM7XFxuXFxuXFx0XFx0XFx0XFx0dGFuZ2VudHNbIGkgXSA9IHRoaXMuZ2V0VGFuZ2VudEF0KCB1ICk7XFxuXFx0XFx0XFx0XFx0dGFuZ2VudHNbIGkgXS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gc2VsZWN0IGFuIGluaXRpYWwgbm9ybWFsIHZlY3RvciBwZXJwZW5kaWN1bGFyIHRvIHRoZSBmaXJzdCB0YW5nZW50IHZlY3RvcixcXG5cXHRcXHRcXHQvLyBhbmQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgbWluaW11bSB0YW5nZW50IHh5eiBjb21wb25lbnRcXG5cXG5cXHRcXHRcXHRub3JtYWxzWyAwIF0gPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdGJpbm9ybWFsc1sgMCBdID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHR2YXIgbWluID0gTnVtYmVyLk1BWF9WQUxVRTtcXG5cXHRcXHRcXHR2YXIgdHggPSBNYXRoLmFicyggdGFuZ2VudHNbIDAgXS54ICk7XFxuXFx0XFx0XFx0dmFyIHR5ID0gTWF0aC5hYnMoIHRhbmdlbnRzWyAwIF0ueSApO1xcblxcdFxcdFxcdHZhciB0eiA9IE1hdGguYWJzKCB0YW5nZW50c1sgMCBdLnogKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHR4IDw9IG1pbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRtaW4gPSB0eDtcXG5cXHRcXHRcXHRcXHRub3JtYWwuc2V0KCAxLCAwLCAwICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdHkgPD0gbWluICkge1xcblxcblxcdFxcdFxcdFxcdG1pbiA9IHR5O1xcblxcdFxcdFxcdFxcdG5vcm1hbC5zZXQoIDAsIDEsIDAgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB0eiA8PSBtaW4gKSB7XFxuXFxuXFx0XFx0XFx0XFx0bm9ybWFsLnNldCggMCwgMCwgMSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2ZWMuY3Jvc3NWZWN0b3JzKCB0YW5nZW50c1sgMCBdLCBub3JtYWwgKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHRub3JtYWxzWyAwIF0uY3Jvc3NWZWN0b3JzKCB0YW5nZW50c1sgMCBdLCB2ZWMgKTtcXG5cXHRcXHRcXHRiaW5vcm1hbHNbIDAgXS5jcm9zc1ZlY3RvcnMoIHRhbmdlbnRzWyAwIF0sIG5vcm1hbHNbIDAgXSApO1xcblxcblxcblxcdFxcdFxcdC8vIGNvbXB1dGUgdGhlIHNsb3dseS12YXJ5aW5nIG5vcm1hbCBhbmQgYmlub3JtYWwgdmVjdG9ycyBmb3IgZWFjaCBzZWdtZW50IG9uIHRoZSBjdXJ2ZVxcblxcblxcdFxcdFxcdGZvciAoIGkgPSAxOyBpIDw9IHNlZ21lbnRzOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdG5vcm1hbHNbIGkgXSA9IG5vcm1hbHNbIGkgLSAxIF0uY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHRcXHRiaW5vcm1hbHNbIGkgXSA9IGJpbm9ybWFsc1sgaSAtIDEgXS5jbG9uZSgpO1xcblxcblxcdFxcdFxcdFxcdHZlYy5jcm9zc1ZlY3RvcnMoIHRhbmdlbnRzWyBpIC0gMSBdLCB0YW5nZW50c1sgaSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB2ZWMubGVuZ3RoKCkgPiBOdW1iZXIuRVBTSUxPTiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZWMubm9ybWFsaXplKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhldGEgPSBNYXRoLmFjb3MoIF9NYXRoLmNsYW1wKCB0YW5nZW50c1sgaSAtIDEgXS5kb3QoIHRhbmdlbnRzWyBpIF0gKSwgLSAxLCAxICkgKTsgLy8gY2xhbXAgZm9yIGZsb2F0aW5nIHB0IGVycm9yc1xcblxcblxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIGkgXS5hcHBseU1hdHJpeDQoIG1hdC5tYWtlUm90YXRpb25BeGlzKCB2ZWMsIHRoZXRhICkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Ymlub3JtYWxzWyBpIF0uY3Jvc3NWZWN0b3JzKCB0YW5nZW50c1sgaSBdLCBub3JtYWxzWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gaWYgdGhlIGN1cnZlIGlzIGNsb3NlZCwgcG9zdHByb2Nlc3MgdGhlIHZlY3RvcnMgc28gdGhlIGZpcnN0IGFuZCBsYXN0IG5vcm1hbCB2ZWN0b3JzIGFyZSB0aGUgc2FtZVxcblxcblxcdFxcdFxcdGlmICggY2xvc2VkID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoZXRhID0gTWF0aC5hY29zKCBfTWF0aC5jbGFtcCggbm9ybWFsc1sgMCBdLmRvdCggbm9ybWFsc1sgc2VnbWVudHMgXSApLCAtIDEsIDEgKSApO1xcblxcdFxcdFxcdFxcdHRoZXRhIC89IHNlZ21lbnRzO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGFuZ2VudHNbIDAgXS5kb3QoIHZlYy5jcm9zc1ZlY3RvcnMoIG5vcm1hbHNbIDAgXSwgbm9ybWFsc1sgc2VnbWVudHMgXSApICkgPiAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoZXRhID0gLSB0aGV0YTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggaSA9IDE7IGkgPD0gc2VnbWVudHM7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdHdpc3QgYSBsaXR0bGUuLi5cXG5cXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBpIF0uYXBwbHlNYXRyaXg0KCBtYXQubWFrZVJvdGF0aW9uQXhpcyggdGFuZ2VudHNbIGkgXSwgdGhldGEgKiBpICkgKTtcXG5cXHRcXHRcXHRcXHRcXHRiaW5vcm1hbHNbIGkgXS5jcm9zc1ZlY3RvcnMoIHRhbmdlbnRzWyBpIF0sIG5vcm1hbHNbIGkgXSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHtcXG5cXHRcXHRcXHRcXHR0YW5nZW50czogdGFuZ2VudHMsXFxuXFx0XFx0XFx0XFx0bm9ybWFsczogbm9ybWFscyxcXG5cXHRcXHRcXHRcXHRiaW5vcm1hbHM6IGJpbm9ybWFsc1xcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zID0gc291cmNlLmFyY0xlbmd0aERpdmlzaW9ucztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvSlNPTjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBkYXRhID0ge1xcblxcdFxcdFxcdFxcdG1ldGFkYXRhOiB7XFxuXFx0XFx0XFx0XFx0XFx0dmVyc2lvbjogNC41LFxcblxcdFxcdFxcdFxcdFxcdHR5cGU6ICdDdXJ2ZScsXFxuXFx0XFx0XFx0XFx0XFx0Z2VuZXJhdG9yOiAnQ3VydmUudG9KU09OJ1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdGRhdGEuYXJjTGVuZ3RoRGl2aXNpb25zID0gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM7XFxuXFx0XFx0XFx0ZGF0YS50eXBlID0gdGhpcy50eXBlO1xcblxcblxcdFxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZnJvbUpTT046IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFyY0xlbmd0aERpdmlzaW9ucyA9IGpzb24uYXJjTGVuZ3RoRGl2aXNpb25zO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0ZnVuY3Rpb24gRWxsaXBzZUN1cnZlKCBhWCwgYVksIHhSYWRpdXMsIHlSYWRpdXMsIGFTdGFydEFuZ2xlLCBhRW5kQW5nbGUsIGFDbG9ja3dpc2UsIGFSb3RhdGlvbiApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0VsbGlwc2VDdXJ2ZSc7XFxuXFxuXFx0XFx0dGhpcy5hWCA9IGFYIHx8IDA7XFxuXFx0XFx0dGhpcy5hWSA9IGFZIHx8IDA7XFxuXFxuXFx0XFx0dGhpcy54UmFkaXVzID0geFJhZGl1cyB8fCAxO1xcblxcdFxcdHRoaXMueVJhZGl1cyA9IHlSYWRpdXMgfHwgMTtcXG5cXG5cXHRcXHR0aGlzLmFTdGFydEFuZ2xlID0gYVN0YXJ0QW5nbGUgfHwgMDtcXG5cXHRcXHR0aGlzLmFFbmRBbmdsZSA9IGFFbmRBbmdsZSB8fCAyICogTWF0aC5QSTtcXG5cXG5cXHRcXHR0aGlzLmFDbG9ja3dpc2UgPSBhQ2xvY2t3aXNlIHx8IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuYVJvdGF0aW9uID0gYVJvdGF0aW9uIHx8IDA7XFxuXFxuXFx0fVxcblxcblxcdEVsbGlwc2VDdXJ2ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBDdXJ2ZS5wcm90b3R5cGUgKTtcXG5cXHRFbGxpcHNlQ3VydmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRWxsaXBzZUN1cnZlO1xcblxcblxcdEVsbGlwc2VDdXJ2ZS5wcm90b3R5cGUuaXNFbGxpcHNlQ3VydmUgPSB0cnVlO1xcblxcblxcdEVsbGlwc2VDdXJ2ZS5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAoIHQsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdHZhciBwb2ludCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IyKCk7XFxuXFxuXFx0XFx0dmFyIHR3b1BpID0gTWF0aC5QSSAqIDI7XFxuXFx0XFx0dmFyIGRlbHRhQW5nbGUgPSB0aGlzLmFFbmRBbmdsZSAtIHRoaXMuYVN0YXJ0QW5nbGU7XFxuXFx0XFx0dmFyIHNhbWVQb2ludHMgPSBNYXRoLmFicyggZGVsdGFBbmdsZSApIDwgTnVtYmVyLkVQU0lMT047XFxuXFxuXFx0XFx0Ly8gZW5zdXJlcyB0aGF0IGRlbHRhQW5nbGUgaXMgMCAuLiAyIFBJXFxuXFx0XFx0d2hpbGUgKCBkZWx0YUFuZ2xlIDwgMCApIGRlbHRhQW5nbGUgKz0gdHdvUGk7XFxuXFx0XFx0d2hpbGUgKCBkZWx0YUFuZ2xlID4gdHdvUGkgKSBkZWx0YUFuZ2xlIC09IHR3b1BpO1xcblxcblxcdFxcdGlmICggZGVsdGFBbmdsZSA8IE51bWJlci5FUFNJTE9OICkge1xcblxcblxcdFxcdFxcdGlmICggc2FtZVBvaW50cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRkZWx0YUFuZ2xlID0gMDtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdGRlbHRhQW5nbGUgPSB0d29QaTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGlmICggdGhpcy5hQ2xvY2t3aXNlID09PSB0cnVlICYmICEgc2FtZVBvaW50cyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIGRlbHRhQW5nbGUgPT09IHR3b1BpICkge1xcblxcblxcdFxcdFxcdFxcdGRlbHRhQW5nbGUgPSAtIHR3b1BpO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGVsdGFBbmdsZSA9IGRlbHRhQW5nbGUgLSB0d29QaTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHZhciBhbmdsZSA9IHRoaXMuYVN0YXJ0QW5nbGUgKyB0ICogZGVsdGFBbmdsZTtcXG5cXHRcXHR2YXIgeCA9IHRoaXMuYVggKyB0aGlzLnhSYWRpdXMgKiBNYXRoLmNvcyggYW5nbGUgKTtcXG5cXHRcXHR2YXIgeSA9IHRoaXMuYVkgKyB0aGlzLnlSYWRpdXMgKiBNYXRoLnNpbiggYW5nbGUgKTtcXG5cXG5cXHRcXHRpZiAoIHRoaXMuYVJvdGF0aW9uICE9PSAwICkge1xcblxcblxcdFxcdFxcdHZhciBjb3MgPSBNYXRoLmNvcyggdGhpcy5hUm90YXRpb24gKTtcXG5cXHRcXHRcXHR2YXIgc2luID0gTWF0aC5zaW4oIHRoaXMuYVJvdGF0aW9uICk7XFxuXFxuXFx0XFx0XFx0dmFyIHR4ID0geCAtIHRoaXMuYVg7XFxuXFx0XFx0XFx0dmFyIHR5ID0geSAtIHRoaXMuYVk7XFxuXFxuXFx0XFx0XFx0Ly8gUm90YXRlIHRoZSBwb2ludCBhYm91dCB0aGUgY2VudGVyIG9mIHRoZSBlbGxpcHNlLlxcblxcdFxcdFxcdHggPSB0eCAqIGNvcyAtIHR5ICogc2luICsgdGhpcy5hWDtcXG5cXHRcXHRcXHR5ID0gdHggKiBzaW4gKyB0eSAqIGNvcyArIHRoaXMuYVk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiBwb2ludC5zZXQoIHgsIHkgKTtcXG5cXG5cXHR9O1xcblxcblxcdEVsbGlwc2VDdXJ2ZS5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdEN1cnZlLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMuYVggPSBzb3VyY2UuYVg7XFxuXFx0XFx0dGhpcy5hWSA9IHNvdXJjZS5hWTtcXG5cXG5cXHRcXHR0aGlzLnhSYWRpdXMgPSBzb3VyY2UueFJhZGl1cztcXG5cXHRcXHR0aGlzLnlSYWRpdXMgPSBzb3VyY2UueVJhZGl1cztcXG5cXG5cXHRcXHR0aGlzLmFTdGFydEFuZ2xlID0gc291cmNlLmFTdGFydEFuZ2xlO1xcblxcdFxcdHRoaXMuYUVuZEFuZ2xlID0gc291cmNlLmFFbmRBbmdsZTtcXG5cXG5cXHRcXHR0aGlzLmFDbG9ja3dpc2UgPSBzb3VyY2UuYUNsb2Nrd2lzZTtcXG5cXG5cXHRcXHR0aGlzLmFSb3RhdGlvbiA9IHNvdXJjZS5hUm90YXRpb247XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXG5cXHRFbGxpcHNlQ3VydmUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgZGF0YSA9IEN1cnZlLnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcyApO1xcblxcblxcdFxcdGRhdGEuYVggPSB0aGlzLmFYO1xcblxcdFxcdGRhdGEuYVkgPSB0aGlzLmFZO1xcblxcblxcdFxcdGRhdGEueFJhZGl1cyA9IHRoaXMueFJhZGl1cztcXG5cXHRcXHRkYXRhLnlSYWRpdXMgPSB0aGlzLnlSYWRpdXM7XFxuXFxuXFx0XFx0ZGF0YS5hU3RhcnRBbmdsZSA9IHRoaXMuYVN0YXJ0QW5nbGU7XFxuXFx0XFx0ZGF0YS5hRW5kQW5nbGUgPSB0aGlzLmFFbmRBbmdsZTtcXG5cXG5cXHRcXHRkYXRhLmFDbG9ja3dpc2UgPSB0aGlzLmFDbG9ja3dpc2U7XFxuXFxuXFx0XFx0ZGF0YS5hUm90YXRpb24gPSB0aGlzLmFSb3RhdGlvbjtcXG5cXG5cXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHR9O1xcblxcblxcdEVsbGlwc2VDdXJ2ZS5wcm90b3R5cGUuZnJvbUpTT04gPSBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0Q3VydmUucHJvdG90eXBlLmZyb21KU09OLmNhbGwoIHRoaXMsIGpzb24gKTtcXG5cXG5cXHRcXHR0aGlzLmFYID0ganNvbi5hWDtcXG5cXHRcXHR0aGlzLmFZID0ganNvbi5hWTtcXG5cXG5cXHRcXHR0aGlzLnhSYWRpdXMgPSBqc29uLnhSYWRpdXM7XFxuXFx0XFx0dGhpcy55UmFkaXVzID0ganNvbi55UmFkaXVzO1xcblxcblxcdFxcdHRoaXMuYVN0YXJ0QW5nbGUgPSBqc29uLmFTdGFydEFuZ2xlO1xcblxcdFxcdHRoaXMuYUVuZEFuZ2xlID0ganNvbi5hRW5kQW5nbGU7XFxuXFxuXFx0XFx0dGhpcy5hQ2xvY2t3aXNlID0ganNvbi5hQ2xvY2t3aXNlO1xcblxcblxcdFxcdHRoaXMuYVJvdGF0aW9uID0ganNvbi5hUm90YXRpb247XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHRmdW5jdGlvbiBBcmNDdXJ2ZSggYVgsIGFZLCBhUmFkaXVzLCBhU3RhcnRBbmdsZSwgYUVuZEFuZ2xlLCBhQ2xvY2t3aXNlICkge1xcblxcblxcdFxcdEVsbGlwc2VDdXJ2ZS5jYWxsKCB0aGlzLCBhWCwgYVksIGFSYWRpdXMsIGFSYWRpdXMsIGFTdGFydEFuZ2xlLCBhRW5kQW5nbGUsIGFDbG9ja3dpc2UgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnQXJjQ3VydmUnO1xcblxcblxcdH1cXG5cXG5cXHRBcmNDdXJ2ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBFbGxpcHNlQ3VydmUucHJvdG90eXBlICk7XFxuXFx0QXJjQ3VydmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQXJjQ3VydmU7XFxuXFxuXFx0QXJjQ3VydmUucHJvdG90eXBlLmlzQXJjQ3VydmUgPSB0cnVlO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igeno4NSBodHRwczovL2dpdGh1Yi5jb20veno4NVxcblxcdCAqXFxuXFx0ICogQ2VudHJpcGV0YWwgQ2F0bXVsbFJvbSBDdXJ2ZSAtIHdoaWNoIGlzIHVzZWZ1bCBmb3IgYXZvaWRpbmdcXG5cXHQgKiBjdXNwcyBhbmQgc2VsZi1pbnRlcnNlY3Rpb25zIGluIG5vbi11bmlmb3JtIGNhdG11bGwgcm9tIGN1cnZlcy5cXG5cXHQgKiBodHRwOi8vd3d3LmNlbXl1a3NlbC5jb20vcmVzZWFyY2gvY2F0bXVsbHJvbV9wYXJhbS9jYXRtdWxscm9tLnBkZlxcblxcdCAqXFxuXFx0ICogY3VydmUudHlwZSBhY2NlcHRzIGNlbnRyaXBldGFsKGRlZmF1bHQpLCBjaG9yZGFsIGFuZCBjYXRtdWxscm9tXFxuXFx0ICogY3VydmUudGVuc2lvbiBpcyB1c2VkIGZvciBjYXRtdWxscm9tIHdoaWNoIGRlZmF1bHRzIHRvIDAuNVxcblxcdCAqL1xcblxcblxcblxcdC8qXFxuXFx0QmFzZWQgb24gYW4gb3B0aW1pemVkIGMrKyBzb2x1dGlvbiBpblxcblxcdCAtIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvOTQ4OTczNi9jYXRtdWxsLXJvbS1jdXJ2ZS13aXRoLW5vLWN1c3BzLWFuZC1uby1zZWxmLWludGVyc2VjdGlvbnMvXFxuXFx0IC0gaHR0cDovL2lkZW9uZS5jb20vTm9FYlZNXFxuXFxuXFx0VGhpcyBDdWJpY1BvbHkgY2xhc3MgY291bGQgYmUgdXNlZCBmb3IgcmV1c2luZyBzb21lIHZhcmlhYmxlcyBhbmQgY2FsY3VsYXRpb25zLFxcblxcdGJ1dCBmb3IgdGhyZWUuanMgY3VydmUgdXNlLCBpdCBjb3VsZCBiZSBwb3NzaWJsZSBpbmxpbmVkIGFuZCBmbGF0dGVuIGludG8gYSBzaW5nbGUgZnVuY3Rpb24gY2FsbFxcblxcdHdoaWNoIGNhbiBiZSBwbGFjZWQgaW4gQ3VydmVVdGlscy5cXG5cXHQqL1xcblxcblxcdGZ1bmN0aW9uIEN1YmljUG9seSgpIHtcXG5cXG5cXHRcXHR2YXIgYzAgPSAwLCBjMSA9IDAsIGMyID0gMCwgYzMgPSAwO1xcblxcblxcdFxcdC8qXFxuXFx0XFx0ICogQ29tcHV0ZSBjb2VmZmljaWVudHMgZm9yIGEgY3ViaWMgcG9seW5vbWlhbFxcblxcdFxcdCAqICAgcChzKSA9IGMwICsgYzEqcyArIGMyKnNeMiArIGMzKnNeM1xcblxcdFxcdCAqIHN1Y2ggdGhhdFxcblxcdFxcdCAqICAgcCgwKSA9IHgwLCBwKDEpID0geDFcXG5cXHRcXHQgKiAgYW5kXFxuXFx0XFx0ICogICBwJygwKSA9IHQwLCBwJygxKSA9IHQxLlxcblxcdFxcdCAqL1xcblxcdFxcdGZ1bmN0aW9uIGluaXQoIHgwLCB4MSwgdDAsIHQxICkge1xcblxcblxcdFxcdFxcdGMwID0geDA7XFxuXFx0XFx0XFx0YzEgPSB0MDtcXG5cXHRcXHRcXHRjMiA9IC0gMyAqIHgwICsgMyAqIHgxIC0gMiAqIHQwIC0gdDE7XFxuXFx0XFx0XFx0YzMgPSAyICogeDAgLSAyICogeDEgKyB0MCArIHQxO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4ge1xcblxcblxcdFxcdFxcdGluaXRDYXRtdWxsUm9tOiBmdW5jdGlvbiAoIHgwLCB4MSwgeDIsIHgzLCB0ZW5zaW9uICkge1xcblxcblxcdFxcdFxcdFxcdGluaXQoIHgxLCB4MiwgdGVuc2lvbiAqICggeDIgLSB4MCApLCB0ZW5zaW9uICogKCB4MyAtIHgxICkgKTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdGluaXROb251bmlmb3JtQ2F0bXVsbFJvbTogZnVuY3Rpb24gKCB4MCwgeDEsIHgyLCB4MywgZHQwLCBkdDEsIGR0MiApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBjb21wdXRlIHRhbmdlbnRzIHdoZW4gcGFyYW1ldGVyaXplZCBpbiBbdDEsdDJdXFxuXFx0XFx0XFx0XFx0dmFyIHQxID0gKCB4MSAtIHgwICkgLyBkdDAgLSAoIHgyIC0geDAgKSAvICggZHQwICsgZHQxICkgKyAoIHgyIC0geDEgKSAvIGR0MTtcXG5cXHRcXHRcXHRcXHR2YXIgdDIgPSAoIHgyIC0geDEgKSAvIGR0MSAtICggeDMgLSB4MSApIC8gKCBkdDEgKyBkdDIgKSArICggeDMgLSB4MiApIC8gZHQyO1xcblxcblxcdFxcdFxcdFxcdC8vIHJlc2NhbGUgdGFuZ2VudHMgZm9yIHBhcmFtZXRyaXphdGlvbiBpbiBbMCwxXVxcblxcdFxcdFxcdFxcdHQxICo9IGR0MTtcXG5cXHRcXHRcXHRcXHR0MiAqPSBkdDE7XFxuXFxuXFx0XFx0XFx0XFx0aW5pdCggeDEsIHgyLCB0MSwgdDIgKTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdGNhbGM6IGZ1bmN0aW9uICggdCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdDIgPSB0ICogdDtcXG5cXHRcXHRcXHRcXHR2YXIgdDMgPSB0MiAqIHQ7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIGMwICsgYzEgKiB0ICsgYzIgKiB0MiArIGMzICogdDM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH07XFxuXFxuXFx0fVxcblxcblxcdC8vXFxuXFxuXFx0dmFyIHRtcCA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0dmFyIHB4ID0gbmV3IEN1YmljUG9seSgpO1xcblxcdHZhciBweSA9IG5ldyBDdWJpY1BvbHkoKTtcXG5cXHR2YXIgcHogPSBuZXcgQ3ViaWNQb2x5KCk7XFxuXFxuXFx0ZnVuY3Rpb24gQ2F0bXVsbFJvbUN1cnZlMyggcG9pbnRzLCBjbG9zZWQsIGN1cnZlVHlwZSwgdGVuc2lvbiApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0NhdG11bGxSb21DdXJ2ZTMnO1xcblxcblxcdFxcdHRoaXMucG9pbnRzID0gcG9pbnRzIHx8IFtdO1xcblxcdFxcdHRoaXMuY2xvc2VkID0gY2xvc2VkIHx8IGZhbHNlO1xcblxcdFxcdHRoaXMuY3VydmVUeXBlID0gY3VydmVUeXBlIHx8ICdjZW50cmlwZXRhbCc7XFxuXFx0XFx0dGhpcy50ZW5zaW9uID0gdGVuc2lvbiB8fCAwLjU7XFxuXFxuXFx0fVxcblxcblxcdENhdG11bGxSb21DdXJ2ZTMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQ3VydmUucHJvdG90eXBlICk7XFxuXFx0Q2F0bXVsbFJvbUN1cnZlMy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYXRtdWxsUm9tQ3VydmUzO1xcblxcblxcdENhdG11bGxSb21DdXJ2ZTMucHJvdG90eXBlLmlzQ2F0bXVsbFJvbUN1cnZlMyA9IHRydWU7XFxuXFxuXFx0Q2F0bXVsbFJvbUN1cnZlMy5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAoIHQsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdHZhciBwb2ludCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0dmFyIHBvaW50cyA9IHRoaXMucG9pbnRzO1xcblxcdFxcdHZhciBsID0gcG9pbnRzLmxlbmd0aDtcXG5cXG5cXHRcXHR2YXIgcCA9ICggbCAtICggdGhpcy5jbG9zZWQgPyAwIDogMSApICkgKiB0O1xcblxcdFxcdHZhciBpbnRQb2ludCA9IE1hdGguZmxvb3IoIHAgKTtcXG5cXHRcXHR2YXIgd2VpZ2h0ID0gcCAtIGludFBvaW50O1xcblxcblxcdFxcdGlmICggdGhpcy5jbG9zZWQgKSB7XFxuXFxuXFx0XFx0XFx0aW50UG9pbnQgKz0gaW50UG9pbnQgPiAwID8gMCA6ICggTWF0aC5mbG9vciggTWF0aC5hYnMoIGludFBvaW50ICkgLyBwb2ludHMubGVuZ3RoICkgKyAxICkgKiBwb2ludHMubGVuZ3RoO1xcblxcblxcdFxcdH0gZWxzZSBpZiAoIHdlaWdodCA9PT0gMCAmJiBpbnRQb2ludCA9PT0gbCAtIDEgKSB7XFxuXFxuXFx0XFx0XFx0aW50UG9pbnQgPSBsIC0gMjtcXG5cXHRcXHRcXHR3ZWlnaHQgPSAxO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR2YXIgcDAsIHAxLCBwMiwgcDM7IC8vIDQgcG9pbnRzXFxuXFxuXFx0XFx0aWYgKCB0aGlzLmNsb3NlZCB8fCBpbnRQb2ludCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0cDAgPSBwb2ludHNbICggaW50UG9pbnQgLSAxICkgJSBsIF07XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHQvLyBleHRyYXBvbGF0ZSBmaXJzdCBwb2ludFxcblxcdFxcdFxcdHRtcC5zdWJWZWN0b3JzKCBwb2ludHNbIDAgXSwgcG9pbnRzWyAxIF0gKS5hZGQoIHBvaW50c1sgMCBdICk7XFxuXFx0XFx0XFx0cDAgPSB0bXA7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHAxID0gcG9pbnRzWyBpbnRQb2ludCAlIGwgXTtcXG5cXHRcXHRwMiA9IHBvaW50c1sgKCBpbnRQb2ludCArIDEgKSAlIGwgXTtcXG5cXG5cXHRcXHRpZiAoIHRoaXMuY2xvc2VkIHx8IGludFBvaW50ICsgMiA8IGwgKSB7XFxuXFxuXFx0XFx0XFx0cDMgPSBwb2ludHNbICggaW50UG9pbnQgKyAyICkgJSBsIF07XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHQvLyBleHRyYXBvbGF0ZSBsYXN0IHBvaW50XFxuXFx0XFx0XFx0dG1wLnN1YlZlY3RvcnMoIHBvaW50c1sgbCAtIDEgXSwgcG9pbnRzWyBsIC0gMiBdICkuYWRkKCBwb2ludHNbIGwgLSAxIF0gKTtcXG5cXHRcXHRcXHRwMyA9IHRtcDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aWYgKCB0aGlzLmN1cnZlVHlwZSA9PT0gJ2NlbnRyaXBldGFsJyB8fCB0aGlzLmN1cnZlVHlwZSA9PT0gJ2Nob3JkYWwnICkge1xcblxcblxcdFxcdFxcdC8vIGluaXQgQ2VudHJpcGV0YWwgLyBDaG9yZGFsIENhdG11bGwtUm9tXFxuXFx0XFx0XFx0dmFyIHBvdyA9IHRoaXMuY3VydmVUeXBlID09PSAnY2hvcmRhbCcgPyAwLjUgOiAwLjI1O1xcblxcdFxcdFxcdHZhciBkdDAgPSBNYXRoLnBvdyggcDAuZGlzdGFuY2VUb1NxdWFyZWQoIHAxICksIHBvdyApO1xcblxcdFxcdFxcdHZhciBkdDEgPSBNYXRoLnBvdyggcDEuZGlzdGFuY2VUb1NxdWFyZWQoIHAyICksIHBvdyApO1xcblxcdFxcdFxcdHZhciBkdDIgPSBNYXRoLnBvdyggcDIuZGlzdGFuY2VUb1NxdWFyZWQoIHAzICksIHBvdyApO1xcblxcblxcdFxcdFxcdC8vIHNhZmV0eSBjaGVjayBmb3IgcmVwZWF0ZWQgcG9pbnRzXFxuXFx0XFx0XFx0aWYgKCBkdDEgPCAxZS00ICkgZHQxID0gMS4wO1xcblxcdFxcdFxcdGlmICggZHQwIDwgMWUtNCApIGR0MCA9IGR0MTtcXG5cXHRcXHRcXHRpZiAoIGR0MiA8IDFlLTQgKSBkdDIgPSBkdDE7XFxuXFxuXFx0XFx0XFx0cHguaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKCBwMC54LCBwMS54LCBwMi54LCBwMy54LCBkdDAsIGR0MSwgZHQyICk7XFxuXFx0XFx0XFx0cHkuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKCBwMC55LCBwMS55LCBwMi55LCBwMy55LCBkdDAsIGR0MSwgZHQyICk7XFxuXFx0XFx0XFx0cHouaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKCBwMC56LCBwMS56LCBwMi56LCBwMy56LCBkdDAsIGR0MSwgZHQyICk7XFxuXFxuXFx0XFx0fSBlbHNlIGlmICggdGhpcy5jdXJ2ZVR5cGUgPT09ICdjYXRtdWxscm9tJyApIHtcXG5cXG5cXHRcXHRcXHRweC5pbml0Q2F0bXVsbFJvbSggcDAueCwgcDEueCwgcDIueCwgcDMueCwgdGhpcy50ZW5zaW9uICk7XFxuXFx0XFx0XFx0cHkuaW5pdENhdG11bGxSb20oIHAwLnksIHAxLnksIHAyLnksIHAzLnksIHRoaXMudGVuc2lvbiApO1xcblxcdFxcdFxcdHB6LmluaXRDYXRtdWxsUm9tKCBwMC56LCBwMS56LCBwMi56LCBwMy56LCB0aGlzLnRlbnNpb24gKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cG9pbnQuc2V0KFxcblxcdFxcdFxcdHB4LmNhbGMoIHdlaWdodCApLFxcblxcdFxcdFxcdHB5LmNhbGMoIHdlaWdodCApLFxcblxcdFxcdFxcdHB6LmNhbGMoIHdlaWdodCApXFxuXFx0XFx0KTtcXG5cXG5cXHRcXHRyZXR1cm4gcG9pbnQ7XFxuXFxuXFx0fTtcXG5cXG5cXHRDYXRtdWxsUm9tQ3VydmUzLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0Q3VydmUucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0dGhpcy5wb2ludHMgPSBbXTtcXG5cXG5cXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBzb3VyY2UucG9pbnRzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHBvaW50ID0gc291cmNlLnBvaW50c1sgaSBdO1xcblxcblxcdFxcdFxcdHRoaXMucG9pbnRzLnB1c2goIHBvaW50LmNsb25lKCkgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dGhpcy5jbG9zZWQgPSBzb3VyY2UuY2xvc2VkO1xcblxcdFxcdHRoaXMuY3VydmVUeXBlID0gc291cmNlLmN1cnZlVHlwZTtcXG5cXHRcXHR0aGlzLnRlbnNpb24gPSBzb3VyY2UudGVuc2lvbjtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdENhdG11bGxSb21DdXJ2ZTMucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgZGF0YSA9IEN1cnZlLnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcyApO1xcblxcblxcdFxcdGRhdGEucG9pbnRzID0gW107XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gdGhpcy5wb2ludHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcG9pbnQgPSB0aGlzLnBvaW50c1sgaSBdO1xcblxcdFxcdFxcdGRhdGEucG9pbnRzLnB1c2goIHBvaW50LnRvQXJyYXkoKSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRkYXRhLmNsb3NlZCA9IHRoaXMuY2xvc2VkO1xcblxcdFxcdGRhdGEuY3VydmVUeXBlID0gdGhpcy5jdXJ2ZVR5cGU7XFxuXFx0XFx0ZGF0YS50ZW5zaW9uID0gdGhpcy50ZW5zaW9uO1xcblxcblxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdH07XFxuXFxuXFx0Q2F0bXVsbFJvbUN1cnZlMy5wcm90b3R5cGUuZnJvbUpTT04gPSBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0Q3VydmUucHJvdG90eXBlLmZyb21KU09OLmNhbGwoIHRoaXMsIGpzb24gKTtcXG5cXG5cXHRcXHR0aGlzLnBvaW50cyA9IFtdO1xcblxcblxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGpzb24ucG9pbnRzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHBvaW50ID0ganNvbi5wb2ludHNbIGkgXTtcXG5cXHRcXHRcXHR0aGlzLnBvaW50cy5wdXNoKCBuZXcgVmVjdG9yMygpLmZyb21BcnJheSggcG9pbnQgKSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLmNsb3NlZCA9IGpzb24uY2xvc2VkO1xcblxcdFxcdHRoaXMuY3VydmVUeXBlID0ganNvbi5jdXJ2ZVR5cGU7XFxuXFx0XFx0dGhpcy50ZW5zaW9uID0ganNvbi50ZW5zaW9uO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciB6ejg1IC8gaHR0cDovL3d3dy5sYWI0Z2FtZXMubmV0L3p6ODUvYmxvZ1xcblxcdCAqXFxuXFx0ICogQmV6aWVyIEN1cnZlcyBmb3JtdWxhcyBvYnRhaW5lZCBmcm9tXFxuXFx0ICogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Cw6l6aWVyX2N1cnZlXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ2F0bXVsbFJvbSggdCwgcDAsIHAxLCBwMiwgcDMgKSB7XFxuXFxuXFx0XFx0dmFyIHYwID0gKCBwMiAtIHAwICkgKiAwLjU7XFxuXFx0XFx0dmFyIHYxID0gKCBwMyAtIHAxICkgKiAwLjU7XFxuXFx0XFx0dmFyIHQyID0gdCAqIHQ7XFxuXFx0XFx0dmFyIHQzID0gdCAqIHQyO1xcblxcdFxcdHJldHVybiAoIDIgKiBwMSAtIDIgKiBwMiArIHYwICsgdjEgKSAqIHQzICsgKCAtIDMgKiBwMSArIDMgKiBwMiAtIDIgKiB2MCAtIHYxICkgKiB0MiArIHYwICogdCArIHAxO1xcblxcblxcdH1cXG5cXG5cXHQvL1xcblxcblxcdGZ1bmN0aW9uIFF1YWRyYXRpY0JlemllclAwKCB0LCBwICkge1xcblxcblxcdFxcdHZhciBrID0gMSAtIHQ7XFxuXFx0XFx0cmV0dXJuIGsgKiBrICogcDtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gUXVhZHJhdGljQmV6aWVyUDEoIHQsIHAgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIDIgKiAoIDEgLSB0ICkgKiB0ICogcDtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gUXVhZHJhdGljQmV6aWVyUDIoIHQsIHAgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIHQgKiB0ICogcDtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gUXVhZHJhdGljQmV6aWVyKCB0LCBwMCwgcDEsIHAyICkge1xcblxcblxcdFxcdHJldHVybiBRdWFkcmF0aWNCZXppZXJQMCggdCwgcDAgKSArIFF1YWRyYXRpY0JlemllclAxKCB0LCBwMSApICtcXG5cXHRcXHRcXHRRdWFkcmF0aWNCZXppZXJQMiggdCwgcDIgKTtcXG5cXG5cXHR9XFxuXFxuXFx0Ly9cXG5cXG5cXHRmdW5jdGlvbiBDdWJpY0JlemllclAwKCB0LCBwICkge1xcblxcblxcdFxcdHZhciBrID0gMSAtIHQ7XFxuXFx0XFx0cmV0dXJuIGsgKiBrICogayAqIHA7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIEN1YmljQmV6aWVyUDEoIHQsIHAgKSB7XFxuXFxuXFx0XFx0dmFyIGsgPSAxIC0gdDtcXG5cXHRcXHRyZXR1cm4gMyAqIGsgKiBrICogdCAqIHA7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIEN1YmljQmV6aWVyUDIoIHQsIHAgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIDMgKiAoIDEgLSB0ICkgKiB0ICogdCAqIHA7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIEN1YmljQmV6aWVyUDMoIHQsIHAgKSB7XFxuXFxuXFx0XFx0cmV0dXJuIHQgKiB0ICogdCAqIHA7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIEN1YmljQmV6aWVyKCB0LCBwMCwgcDEsIHAyLCBwMyApIHtcXG5cXG5cXHRcXHRyZXR1cm4gQ3ViaWNCZXppZXJQMCggdCwgcDAgKSArIEN1YmljQmV6aWVyUDEoIHQsIHAxICkgKyBDdWJpY0JlemllclAyKCB0LCBwMiApICtcXG5cXHRcXHRcXHRDdWJpY0JlemllclAzKCB0LCBwMyApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBDdWJpY0JlemllckN1cnZlKCB2MCwgdjEsIHYyLCB2MyApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0N1YmljQmV6aWVyQ3VydmUnO1xcblxcblxcdFxcdHRoaXMudjAgPSB2MCB8fCBuZXcgVmVjdG9yMigpO1xcblxcdFxcdHRoaXMudjEgPSB2MSB8fCBuZXcgVmVjdG9yMigpO1xcblxcdFxcdHRoaXMudjIgPSB2MiB8fCBuZXcgVmVjdG9yMigpO1xcblxcdFxcdHRoaXMudjMgPSB2MyB8fCBuZXcgVmVjdG9yMigpO1xcblxcblxcdH1cXG5cXG5cXHRDdWJpY0JlemllckN1cnZlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEN1cnZlLnByb3RvdHlwZSApO1xcblxcdEN1YmljQmV6aWVyQ3VydmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ3ViaWNCZXppZXJDdXJ2ZTtcXG5cXG5cXHRDdWJpY0JlemllckN1cnZlLnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmUgPSB0cnVlO1xcblxcblxcdEN1YmljQmV6aWVyQ3VydmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKCB0LCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHR2YXIgcG9pbnQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMigpO1xcblxcblxcdFxcdHZhciB2MCA9IHRoaXMudjAsIHYxID0gdGhpcy52MSwgdjIgPSB0aGlzLnYyLCB2MyA9IHRoaXMudjM7XFxuXFxuXFx0XFx0cG9pbnQuc2V0KFxcblxcdFxcdFxcdEN1YmljQmV6aWVyKCB0LCB2MC54LCB2MS54LCB2Mi54LCB2My54ICksXFxuXFx0XFx0XFx0Q3ViaWNCZXppZXIoIHQsIHYwLnksIHYxLnksIHYyLnksIHYzLnkgKVxcblxcdFxcdCk7XFxuXFxuXFx0XFx0cmV0dXJuIHBvaW50O1xcblxcblxcdH07XFxuXFxuXFx0Q3ViaWNCZXppZXJDdXJ2ZS5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdEN1cnZlLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMudjAuY29weSggc291cmNlLnYwICk7XFxuXFx0XFx0dGhpcy52MS5jb3B5KCBzb3VyY2UudjEgKTtcXG5cXHRcXHR0aGlzLnYyLmNvcHkoIHNvdXJjZS52MiApO1xcblxcdFxcdHRoaXMudjMuY29weSggc291cmNlLnYzICk7XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHRDdWJpY0JlemllckN1cnZlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIGRhdGEgPSBDdXJ2ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHRkYXRhLnYwID0gdGhpcy52MC50b0FycmF5KCk7XFxuXFx0XFx0ZGF0YS52MSA9IHRoaXMudjEudG9BcnJheSgpO1xcblxcdFxcdGRhdGEudjIgPSB0aGlzLnYyLnRvQXJyYXkoKTtcXG5cXHRcXHRkYXRhLnYzID0gdGhpcy52My50b0FycmF5KCk7XFxuXFxuXFx0XFx0cmV0dXJuIGRhdGE7XFxuXFxuXFx0fTtcXG5cXG5cXHRDdWJpY0JlemllckN1cnZlLnByb3RvdHlwZS5mcm9tSlNPTiA9IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCggdGhpcywganNvbiApO1xcblxcblxcdFxcdHRoaXMudjAuZnJvbUFycmF5KCBqc29uLnYwICk7XFxuXFx0XFx0dGhpcy52MS5mcm9tQXJyYXkoIGpzb24udjEgKTtcXG5cXHRcXHR0aGlzLnYyLmZyb21BcnJheSgganNvbi52MiApO1xcblxcdFxcdHRoaXMudjMuZnJvbUFycmF5KCBqc29uLnYzICk7XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHRmdW5jdGlvbiBDdWJpY0JlemllckN1cnZlMyggdjAsIHYxLCB2MiwgdjMgKSB7XFxuXFxuXFx0XFx0Q3VydmUuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdDdWJpY0JlemllckN1cnZlMyc7XFxuXFxuXFx0XFx0dGhpcy52MCA9IHYwIHx8IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dGhpcy52MSA9IHYxIHx8IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dGhpcy52MiA9IHYyIHx8IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dGhpcy52MyA9IHYzIHx8IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0fVxcblxcblxcdEN1YmljQmV6aWVyQ3VydmUzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEN1cnZlLnByb3RvdHlwZSApO1xcblxcdEN1YmljQmV6aWVyQ3VydmUzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEN1YmljQmV6aWVyQ3VydmUzO1xcblxcblxcdEN1YmljQmV6aWVyQ3VydmUzLnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmUzID0gdHJ1ZTtcXG5cXG5cXHRDdWJpY0JlemllckN1cnZlMy5wcm90b3R5cGUuZ2V0UG9pbnQgPSBmdW5jdGlvbiAoIHQsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdHZhciBwb2ludCA9IG9wdGlvbmFsVGFyZ2V0IHx8IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0dmFyIHYwID0gdGhpcy52MCwgdjEgPSB0aGlzLnYxLCB2MiA9IHRoaXMudjIsIHYzID0gdGhpcy52MztcXG5cXG5cXHRcXHRwb2ludC5zZXQoXFxuXFx0XFx0XFx0Q3ViaWNCZXppZXIoIHQsIHYwLngsIHYxLngsIHYyLngsIHYzLnggKSxcXG5cXHRcXHRcXHRDdWJpY0JlemllciggdCwgdjAueSwgdjEueSwgdjIueSwgdjMueSApLFxcblxcdFxcdFxcdEN1YmljQmV6aWVyKCB0LCB2MC56LCB2MS56LCB2Mi56LCB2My56IClcXG5cXHRcXHQpO1xcblxcblxcdFxcdHJldHVybiBwb2ludDtcXG5cXG5cXHR9O1xcblxcblxcdEN1YmljQmV6aWVyQ3VydmUzLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0Q3VydmUucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0dGhpcy52MC5jb3B5KCBzb3VyY2UudjAgKTtcXG5cXHRcXHR0aGlzLnYxLmNvcHkoIHNvdXJjZS52MSApO1xcblxcdFxcdHRoaXMudjIuY29weSggc291cmNlLnYyICk7XFxuXFx0XFx0dGhpcy52My5jb3B5KCBzb3VyY2UudjMgKTtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdEN1YmljQmV6aWVyQ3VydmUzLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIGRhdGEgPSBDdXJ2ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHRkYXRhLnYwID0gdGhpcy52MC50b0FycmF5KCk7XFxuXFx0XFx0ZGF0YS52MSA9IHRoaXMudjEudG9BcnJheSgpO1xcblxcdFxcdGRhdGEudjIgPSB0aGlzLnYyLnRvQXJyYXkoKTtcXG5cXHRcXHRkYXRhLnYzID0gdGhpcy52My50b0FycmF5KCk7XFxuXFxuXFx0XFx0cmV0dXJuIGRhdGE7XFxuXFxuXFx0fTtcXG5cXG5cXHRDdWJpY0JlemllckN1cnZlMy5wcm90b3R5cGUuZnJvbUpTT04gPSBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0Q3VydmUucHJvdG90eXBlLmZyb21KU09OLmNhbGwoIHRoaXMsIGpzb24gKTtcXG5cXG5cXHRcXHR0aGlzLnYwLmZyb21BcnJheSgganNvbi52MCApO1xcblxcdFxcdHRoaXMudjEuZnJvbUFycmF5KCBqc29uLnYxICk7XFxuXFx0XFx0dGhpcy52Mi5mcm9tQXJyYXkoIGpzb24udjIgKTtcXG5cXHRcXHR0aGlzLnYzLmZyb21BcnJheSgganNvbi52MyApO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0ZnVuY3Rpb24gTGluZUN1cnZlKCB2MSwgdjIgKSB7XFxuXFxuXFx0XFx0Q3VydmUuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdMaW5lQ3VydmUnO1xcblxcblxcdFxcdHRoaXMudjEgPSB2MSB8fCBuZXcgVmVjdG9yMigpO1xcblxcdFxcdHRoaXMudjIgPSB2MiB8fCBuZXcgVmVjdG9yMigpO1xcblxcblxcdH1cXG5cXG5cXHRMaW5lQ3VydmUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQ3VydmUucHJvdG90eXBlICk7XFxuXFx0TGluZUN1cnZlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExpbmVDdXJ2ZTtcXG5cXG5cXHRMaW5lQ3VydmUucHJvdG90eXBlLmlzTGluZUN1cnZlID0gdHJ1ZTtcXG5cXG5cXHRMaW5lQ3VydmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKCB0LCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHR2YXIgcG9pbnQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMigpO1xcblxcblxcdFxcdGlmICggdCA9PT0gMSApIHtcXG5cXG5cXHRcXHRcXHRwb2ludC5jb3B5KCB0aGlzLnYyICk7XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRwb2ludC5jb3B5KCB0aGlzLnYyICkuc3ViKCB0aGlzLnYxICk7XFxuXFx0XFx0XFx0cG9pbnQubXVsdGlwbHlTY2FsYXIoIHQgKS5hZGQoIHRoaXMudjEgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIHBvaW50O1xcblxcblxcdH07XFxuXFxuXFx0Ly8gTGluZSBjdXJ2ZSBpcyBsaW5lYXIsIHNvIHdlIGNhbiBvdmVyd3JpdGUgZGVmYXVsdCBnZXRQb2ludEF0XFxuXFxuXFx0TGluZUN1cnZlLnByb3RvdHlwZS5nZXRQb2ludEF0ID0gZnVuY3Rpb24gKCB1LCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcy5nZXRQb2ludCggdSwgb3B0aW9uYWxUYXJnZXQgKTtcXG5cXG5cXHR9O1xcblxcblxcdExpbmVDdXJ2ZS5wcm90b3R5cGUuZ2V0VGFuZ2VudCA9IGZ1bmN0aW9uICggLyogdCAqLyApIHtcXG5cXG5cXHRcXHR2YXIgdGFuZ2VudCA9IHRoaXMudjIuY2xvbmUoKS5zdWIoIHRoaXMudjEgKTtcXG5cXG5cXHRcXHRyZXR1cm4gdGFuZ2VudC5ub3JtYWxpemUoKTtcXG5cXG5cXHR9O1xcblxcblxcdExpbmVDdXJ2ZS5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdEN1cnZlLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMudjEuY29weSggc291cmNlLnYxICk7XFxuXFx0XFx0dGhpcy52Mi5jb3B5KCBzb3VyY2UudjIgKTtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdExpbmVDdXJ2ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdHZhciBkYXRhID0gQ3VydmUucHJvdG90eXBlLnRvSlNPTi5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0ZGF0YS52MSA9IHRoaXMudjEudG9BcnJheSgpO1xcblxcdFxcdGRhdGEudjIgPSB0aGlzLnYyLnRvQXJyYXkoKTtcXG5cXG5cXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHR9O1xcblxcblxcdExpbmVDdXJ2ZS5wcm90b3R5cGUuZnJvbUpTT04gPSBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0Q3VydmUucHJvdG90eXBlLmZyb21KU09OLmNhbGwoIHRoaXMsIGpzb24gKTtcXG5cXG5cXHRcXHR0aGlzLnYxLmZyb21BcnJheSgganNvbi52MSApO1xcblxcdFxcdHRoaXMudjIuZnJvbUFycmF5KCBqc29uLnYyICk7XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHRmdW5jdGlvbiBMaW5lQ3VydmUzKCB2MSwgdjIgKSB7XFxuXFxuXFx0XFx0Q3VydmUuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdMaW5lQ3VydmUzJztcXG5cXG5cXHRcXHR0aGlzLnYxID0gdjEgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR0aGlzLnYyID0gdjIgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHR9XFxuXFxuXFx0TGluZUN1cnZlMy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBDdXJ2ZS5wcm90b3R5cGUgKTtcXG5cXHRMaW5lQ3VydmUzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExpbmVDdXJ2ZTM7XFxuXFxuXFx0TGluZUN1cnZlMy5wcm90b3R5cGUuaXNMaW5lQ3VydmUzID0gdHJ1ZTtcXG5cXG5cXHRMaW5lQ3VydmUzLnByb3RvdHlwZS5nZXRQb2ludCA9IGZ1bmN0aW9uICggdCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0dmFyIHBvaW50ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRpZiAoIHQgPT09IDEgKSB7XFxuXFxuXFx0XFx0XFx0cG9pbnQuY29weSggdGhpcy52MiApO1xcblxcblxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0cG9pbnQuY29weSggdGhpcy52MiApLnN1YiggdGhpcy52MSApO1xcblxcdFxcdFxcdHBvaW50Lm11bHRpcGx5U2NhbGFyKCB0ICkuYWRkKCB0aGlzLnYxICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiBwb2ludDtcXG5cXG5cXHR9O1xcblxcblxcdC8vIExpbmUgY3VydmUgaXMgbGluZWFyLCBzbyB3ZSBjYW4gb3ZlcndyaXRlIGRlZmF1bHQgZ2V0UG9pbnRBdFxcblxcblxcdExpbmVDdXJ2ZTMucHJvdG90eXBlLmdldFBvaW50QXQgPSBmdW5jdGlvbiAoIHUsIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdHJldHVybiB0aGlzLmdldFBvaW50KCB1LCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdH07XFxuXFxuXFx0TGluZUN1cnZlMy5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdEN1cnZlLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMudjEuY29weSggc291cmNlLnYxICk7XFxuXFx0XFx0dGhpcy52Mi5jb3B5KCBzb3VyY2UudjIgKTtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdExpbmVDdXJ2ZTMucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgZGF0YSA9IEN1cnZlLnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcyApO1xcblxcblxcdFxcdGRhdGEudjEgPSB0aGlzLnYxLnRvQXJyYXkoKTtcXG5cXHRcXHRkYXRhLnYyID0gdGhpcy52Mi50b0FycmF5KCk7XFxuXFxuXFx0XFx0cmV0dXJuIGRhdGE7XFxuXFxuXFx0fTtcXG5cXG5cXHRMaW5lQ3VydmUzLnByb3RvdHlwZS5mcm9tSlNPTiA9IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCggdGhpcywganNvbiApO1xcblxcblxcdFxcdHRoaXMudjEuZnJvbUFycmF5KCBqc29uLnYxICk7XFxuXFx0XFx0dGhpcy52Mi5mcm9tQXJyYXkoIGpzb24udjIgKTtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdGZ1bmN0aW9uIFF1YWRyYXRpY0JlemllckN1cnZlKCB2MCwgdjEsIHYyICkge1xcblxcblxcdFxcdEN1cnZlLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUXVhZHJhdGljQmV6aWVyQ3VydmUnO1xcblxcblxcdFxcdHRoaXMudjAgPSB2MCB8fCBuZXcgVmVjdG9yMigpO1xcblxcdFxcdHRoaXMudjEgPSB2MSB8fCBuZXcgVmVjdG9yMigpO1xcblxcdFxcdHRoaXMudjIgPSB2MiB8fCBuZXcgVmVjdG9yMigpO1xcblxcblxcdH1cXG5cXG5cXHRRdWFkcmF0aWNCZXppZXJDdXJ2ZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBDdXJ2ZS5wcm90b3R5cGUgKTtcXG5cXHRRdWFkcmF0aWNCZXppZXJDdXJ2ZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBRdWFkcmF0aWNCZXppZXJDdXJ2ZTtcXG5cXG5cXHRRdWFkcmF0aWNCZXppZXJDdXJ2ZS5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZSA9IHRydWU7XFxuXFxuXFx0UXVhZHJhdGljQmV6aWVyQ3VydmUucHJvdG90eXBlLmdldFBvaW50ID0gZnVuY3Rpb24gKCB0LCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHR2YXIgcG9pbnQgPSBvcHRpb25hbFRhcmdldCB8fCBuZXcgVmVjdG9yMigpO1xcblxcblxcdFxcdHZhciB2MCA9IHRoaXMudjAsIHYxID0gdGhpcy52MSwgdjIgPSB0aGlzLnYyO1xcblxcblxcdFxcdHBvaW50LnNldChcXG5cXHRcXHRcXHRRdWFkcmF0aWNCZXppZXIoIHQsIHYwLngsIHYxLngsIHYyLnggKSxcXG5cXHRcXHRcXHRRdWFkcmF0aWNCZXppZXIoIHQsIHYwLnksIHYxLnksIHYyLnkgKVxcblxcdFxcdCk7XFxuXFxuXFx0XFx0cmV0dXJuIHBvaW50O1xcblxcblxcdH07XFxuXFxuXFx0UXVhZHJhdGljQmV6aWVyQ3VydmUucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHR0aGlzLnYwLmNvcHkoIHNvdXJjZS52MCApO1xcblxcdFxcdHRoaXMudjEuY29weSggc291cmNlLnYxICk7XFxuXFx0XFx0dGhpcy52Mi5jb3B5KCBzb3VyY2UudjIgKTtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdFF1YWRyYXRpY0JlemllckN1cnZlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIGRhdGEgPSBDdXJ2ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHRkYXRhLnYwID0gdGhpcy52MC50b0FycmF5KCk7XFxuXFx0XFx0ZGF0YS52MSA9IHRoaXMudjEudG9BcnJheSgpO1xcblxcdFxcdGRhdGEudjIgPSB0aGlzLnYyLnRvQXJyYXkoKTtcXG5cXG5cXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHR9O1xcblxcblxcdFF1YWRyYXRpY0JlemllckN1cnZlLnByb3RvdHlwZS5mcm9tSlNPTiA9IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCggdGhpcywganNvbiApO1xcblxcblxcdFxcdHRoaXMudjAuZnJvbUFycmF5KCBqc29uLnYwICk7XFxuXFx0XFx0dGhpcy52MS5mcm9tQXJyYXkoIGpzb24udjEgKTtcXG5cXHRcXHR0aGlzLnYyLmZyb21BcnJheSgganNvbi52MiApO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0ZnVuY3Rpb24gUXVhZHJhdGljQmV6aWVyQ3VydmUzKCB2MCwgdjEsIHYyICkge1xcblxcblxcdFxcdEN1cnZlLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUXVhZHJhdGljQmV6aWVyQ3VydmUzJztcXG5cXG5cXHRcXHR0aGlzLnYwID0gdjAgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR0aGlzLnYxID0gdjEgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR0aGlzLnYyID0gdjIgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHR9XFxuXFxuXFx0UXVhZHJhdGljQmV6aWVyQ3VydmUzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIEN1cnZlLnByb3RvdHlwZSApO1xcblxcdFF1YWRyYXRpY0JlemllckN1cnZlMy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBRdWFkcmF0aWNCZXppZXJDdXJ2ZTM7XFxuXFxuXFx0UXVhZHJhdGljQmV6aWVyQ3VydmUzLnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlMyA9IHRydWU7XFxuXFxuXFx0UXVhZHJhdGljQmV6aWVyQ3VydmUzLnByb3RvdHlwZS5nZXRQb2ludCA9IGZ1bmN0aW9uICggdCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0dmFyIHBvaW50ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHR2YXIgdjAgPSB0aGlzLnYwLCB2MSA9IHRoaXMudjEsIHYyID0gdGhpcy52MjtcXG5cXG5cXHRcXHRwb2ludC5zZXQoXFxuXFx0XFx0XFx0UXVhZHJhdGljQmV6aWVyKCB0LCB2MC54LCB2MS54LCB2Mi54ICksXFxuXFx0XFx0XFx0UXVhZHJhdGljQmV6aWVyKCB0LCB2MC55LCB2MS55LCB2Mi55ICksXFxuXFx0XFx0XFx0UXVhZHJhdGljQmV6aWVyKCB0LCB2MC56LCB2MS56LCB2Mi56IClcXG5cXHRcXHQpO1xcblxcblxcdFxcdHJldHVybiBwb2ludDtcXG5cXG5cXHR9O1xcblxcblxcdFF1YWRyYXRpY0JlemllckN1cnZlMy5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdEN1cnZlLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMudjAuY29weSggc291cmNlLnYwICk7XFxuXFx0XFx0dGhpcy52MS5jb3B5KCBzb3VyY2UudjEgKTtcXG5cXHRcXHR0aGlzLnYyLmNvcHkoIHNvdXJjZS52MiApO1xcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0UXVhZHJhdGljQmV6aWVyQ3VydmUzLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIGRhdGEgPSBDdXJ2ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHRkYXRhLnYwID0gdGhpcy52MC50b0FycmF5KCk7XFxuXFx0XFx0ZGF0YS52MSA9IHRoaXMudjEudG9BcnJheSgpO1xcblxcdFxcdGRhdGEudjIgPSB0aGlzLnYyLnRvQXJyYXkoKTtcXG5cXG5cXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHR9O1xcblxcblxcdFF1YWRyYXRpY0JlemllckN1cnZlMy5wcm90b3R5cGUuZnJvbUpTT04gPSBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0Q3VydmUucHJvdG90eXBlLmZyb21KU09OLmNhbGwoIHRoaXMsIGpzb24gKTtcXG5cXG5cXHRcXHR0aGlzLnYwLmZyb21BcnJheSgganNvbi52MCApO1xcblxcdFxcdHRoaXMudjEuZnJvbUFycmF5KCBqc29uLnYxICk7XFxuXFx0XFx0dGhpcy52Mi5mcm9tQXJyYXkoIGpzb24udjIgKTtcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdGZ1bmN0aW9uIFNwbGluZUN1cnZlKCBwb2ludHMgLyogYXJyYXkgb2YgVmVjdG9yMiAqLyApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1NwbGluZUN1cnZlJztcXG5cXG5cXHRcXHR0aGlzLnBvaW50cyA9IHBvaW50cyB8fCBbXTtcXG5cXG5cXHR9XFxuXFxuXFx0U3BsaW5lQ3VydmUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQ3VydmUucHJvdG90eXBlICk7XFxuXFx0U3BsaW5lQ3VydmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3BsaW5lQ3VydmU7XFxuXFxuXFx0U3BsaW5lQ3VydmUucHJvdG90eXBlLmlzU3BsaW5lQ3VydmUgPSB0cnVlO1xcblxcblxcdFNwbGluZUN1cnZlLnByb3RvdHlwZS5nZXRQb2ludCA9IGZ1bmN0aW9uICggdCwgb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0dmFyIHBvaW50ID0gb3B0aW9uYWxUYXJnZXQgfHwgbmV3IFZlY3RvcjIoKTtcXG5cXG5cXHRcXHR2YXIgcG9pbnRzID0gdGhpcy5wb2ludHM7XFxuXFx0XFx0dmFyIHAgPSAoIHBvaW50cy5sZW5ndGggLSAxICkgKiB0O1xcblxcblxcdFxcdHZhciBpbnRQb2ludCA9IE1hdGguZmxvb3IoIHAgKTtcXG5cXHRcXHR2YXIgd2VpZ2h0ID0gcCAtIGludFBvaW50O1xcblxcblxcdFxcdHZhciBwMCA9IHBvaW50c1sgaW50UG9pbnQgPT09IDAgPyBpbnRQb2ludCA6IGludFBvaW50IC0gMSBdO1xcblxcdFxcdHZhciBwMSA9IHBvaW50c1sgaW50UG9pbnQgXTtcXG5cXHRcXHR2YXIgcDIgPSBwb2ludHNbIGludFBvaW50ID4gcG9pbnRzLmxlbmd0aCAtIDIgPyBwb2ludHMubGVuZ3RoIC0gMSA6IGludFBvaW50ICsgMSBdO1xcblxcdFxcdHZhciBwMyA9IHBvaW50c1sgaW50UG9pbnQgPiBwb2ludHMubGVuZ3RoIC0gMyA/IHBvaW50cy5sZW5ndGggLSAxIDogaW50UG9pbnQgKyAyIF07XFxuXFxuXFx0XFx0cG9pbnQuc2V0KFxcblxcdFxcdFxcdENhdG11bGxSb20oIHdlaWdodCwgcDAueCwgcDEueCwgcDIueCwgcDMueCApLFxcblxcdFxcdFxcdENhdG11bGxSb20oIHdlaWdodCwgcDAueSwgcDEueSwgcDIueSwgcDMueSApXFxuXFx0XFx0KTtcXG5cXG5cXHRcXHRyZXR1cm4gcG9pbnQ7XFxuXFxuXFx0fTtcXG5cXG5cXHRTcGxpbmVDdXJ2ZS5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdEN1cnZlLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdHRoaXMucG9pbnRzID0gW107XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gc291cmNlLnBvaW50cy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdHZhciBwb2ludCA9IHNvdXJjZS5wb2ludHNbIGkgXTtcXG5cXG5cXHRcXHRcXHR0aGlzLnBvaW50cy5wdXNoKCBwb2ludC5jbG9uZSgpICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFx0U3BsaW5lQ3VydmUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgZGF0YSA9IEN1cnZlLnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcyApO1xcblxcblxcdFxcdGRhdGEucG9pbnRzID0gW107XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gdGhpcy5wb2ludHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcG9pbnQgPSB0aGlzLnBvaW50c1sgaSBdO1xcblxcdFxcdFxcdGRhdGEucG9pbnRzLnB1c2goIHBvaW50LnRvQXJyYXkoKSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHR9O1xcblxcblxcdFNwbGluZUN1cnZlLnByb3RvdHlwZS5mcm9tSlNPTiA9IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRDdXJ2ZS5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCggdGhpcywganNvbiApO1xcblxcblxcdFxcdHRoaXMucG9pbnRzID0gW107XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0ganNvbi5wb2ludHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcG9pbnQgPSBqc29uLnBvaW50c1sgaSBdO1xcblxcdFxcdFxcdHRoaXMucG9pbnRzLnB1c2goIG5ldyBWZWN0b3IyKCkuZnJvbUFycmF5KCBwb2ludCApICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdH07XFxuXFxuXFxuXFxuXFx0dmFyIEN1cnZlcyA9IE9iamVjdC5mcmVlemUoe1xcblxcdFxcdEFyY0N1cnZlOiBBcmNDdXJ2ZSxcXG5cXHRcXHRDYXRtdWxsUm9tQ3VydmUzOiBDYXRtdWxsUm9tQ3VydmUzLFxcblxcdFxcdEN1YmljQmV6aWVyQ3VydmU6IEN1YmljQmV6aWVyQ3VydmUsXFxuXFx0XFx0Q3ViaWNCZXppZXJDdXJ2ZTM6IEN1YmljQmV6aWVyQ3VydmUzLFxcblxcdFxcdEVsbGlwc2VDdXJ2ZTogRWxsaXBzZUN1cnZlLFxcblxcdFxcdExpbmVDdXJ2ZTogTGluZUN1cnZlLFxcblxcdFxcdExpbmVDdXJ2ZTM6IExpbmVDdXJ2ZTMsXFxuXFx0XFx0UXVhZHJhdGljQmV6aWVyQ3VydmU6IFF1YWRyYXRpY0JlemllckN1cnZlLFxcblxcdFxcdFF1YWRyYXRpY0JlemllckN1cnZlMzogUXVhZHJhdGljQmV6aWVyQ3VydmUzLFxcblxcdFxcdFNwbGluZUN1cnZlOiBTcGxpbmVDdXJ2ZVxcblxcdH0pO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igeno4NSAvIGh0dHA6Ly93d3cubGFiNGdhbWVzLm5ldC96ejg1L2Jsb2dcXG5cXHQgKlxcblxcdCAqKi9cXG5cXG5cXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXHQgKlxcdEN1cnZlZCBQYXRoIC0gYSBjdXJ2ZSBwYXRoIGlzIHNpbXBseSBhIGFycmF5IG9mIGNvbm5lY3RlZFxcblxcdCAqICBjdXJ2ZXMsIGJ1dCByZXRhaW5zIHRoZSBhcGkgb2YgYSBjdXJ2ZVxcblxcdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG5cXHRmdW5jdGlvbiBDdXJ2ZVBhdGgoKSB7XFxuXFxuXFx0XFx0Q3VydmUuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdDdXJ2ZVBhdGgnO1xcblxcblxcdFxcdHRoaXMuY3VydmVzID0gW107XFxuXFx0XFx0dGhpcy5hdXRvQ2xvc2UgPSBmYWxzZTsgLy8gQXV0b21hdGljYWxseSBjbG9zZXMgdGhlIHBhdGhcXG5cXG5cXHR9XFxuXFxuXFx0Q3VydmVQYXRoLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEN1cnZlLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEN1cnZlUGF0aCxcXG5cXG5cXHRcXHRhZGQ6IGZ1bmN0aW9uICggY3VydmUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jdXJ2ZXMucHVzaCggY3VydmUgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb3NlUGF0aDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIEFkZCBhIGxpbmUgY3VydmUgaWYgc3RhcnQgYW5kIGVuZCBvZiBsaW5lcyBhcmUgbm90IGNvbm5lY3RlZFxcblxcdFxcdFxcdHZhciBzdGFydFBvaW50ID0gdGhpcy5jdXJ2ZXNbIDAgXS5nZXRQb2ludCggMCApO1xcblxcdFxcdFxcdHZhciBlbmRQb2ludCA9IHRoaXMuY3VydmVzWyB0aGlzLmN1cnZlcy5sZW5ndGggLSAxIF0uZ2V0UG9pbnQoIDEgKTtcXG5cXG5cXHRcXHRcXHRpZiAoICEgc3RhcnRQb2ludC5lcXVhbHMoIGVuZFBvaW50ICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5jdXJ2ZXMucHVzaCggbmV3IExpbmVDdXJ2ZSggZW5kUG9pbnQsIHN0YXJ0UG9pbnQgKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIFRvIGdldCBhY2N1cmF0ZSBwb2ludCB3aXRoIHJlZmVyZW5jZSB0b1xcblxcdFxcdC8vIGVudGlyZSBwYXRoIGRpc3RhbmNlIGF0IHRpbWUgdCxcXG5cXHRcXHQvLyBmb2xsb3dpbmcgaGFzIHRvIGJlIGRvbmU6XFxuXFxuXFx0XFx0Ly8gMS4gTGVuZ3RoIG9mIGVhY2ggc3ViIHBhdGggaGF2ZSB0byBiZSBrbm93blxcblxcdFxcdC8vIDIuIExvY2F0ZSBhbmQgaWRlbnRpZnkgdHlwZSBvZiBjdXJ2ZVxcblxcdFxcdC8vIDMuIEdldCB0IGZvciB0aGUgY3VydmVcXG5cXHRcXHQvLyA0LiBSZXR1cm4gY3VydmUuZ2V0UG9pbnRBdCh0JylcXG5cXG5cXHRcXHRnZXRQb2ludDogZnVuY3Rpb24gKCB0ICkge1xcblxcblxcdFxcdFxcdHZhciBkID0gdCAqIHRoaXMuZ2V0TGVuZ3RoKCk7XFxuXFx0XFx0XFx0dmFyIGN1cnZlTGVuZ3RocyA9IHRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7XFxuXFx0XFx0XFx0dmFyIGkgPSAwO1xcblxcblxcdFxcdFxcdC8vIFRvIHRoaW5rIGFib3V0IGJvdW5kYXJpZXMgcG9pbnRzLlxcblxcblxcdFxcdFxcdHdoaWxlICggaSA8IGN1cnZlTGVuZ3Rocy5sZW5ndGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBjdXJ2ZUxlbmd0aHNbIGkgXSA+PSBkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBkaWZmID0gY3VydmVMZW5ndGhzWyBpIF0gLSBkO1xcblxcdFxcdFxcdFxcdFxcdHZhciBjdXJ2ZSA9IHRoaXMuY3VydmVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHNlZ21lbnRMZW5ndGggPSBjdXJ2ZS5nZXRMZW5ndGgoKTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgdSA9IHNlZ21lbnRMZW5ndGggPT09IDAgPyAwIDogMSAtIGRpZmYgLyBzZWdtZW50TGVuZ3RoO1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBjdXJ2ZS5nZXRQb2ludEF0KCB1ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGkgKys7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdC8vIGxvb3Agd2hlcmUgc3VtICE9IDAsIHN1bSA+IGQgLCBzdW0rMSA8ZFxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gV2UgY2Fubm90IHVzZSB0aGUgZGVmYXVsdCBUSFJFRS5DdXJ2ZSBnZXRQb2ludCgpIHdpdGggZ2V0TGVuZ3RoKCkgYmVjYXVzZSBpblxcblxcdFxcdC8vIFRIUkVFLkN1cnZlLCBnZXRMZW5ndGgoKSBkZXBlbmRzIG9uIGdldFBvaW50KCkgYnV0IGluIFRIUkVFLkN1cnZlUGF0aFxcblxcdFxcdC8vIGdldFBvaW50KCkgZGVwZW5kcyBvbiBnZXRMZW5ndGhcXG5cXG5cXHRcXHRnZXRMZW5ndGg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgbGVucyA9IHRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7XFxuXFx0XFx0XFx0cmV0dXJuIGxlbnNbIGxlbnMubGVuZ3RoIC0gMSBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gY2FjaGVMZW5ndGhzIG11c3QgYmUgcmVjYWxjdWxhdGVkLlxcblxcdFxcdHVwZGF0ZUFyY0xlbmd0aHM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXHRcXHRcXHR0aGlzLmNhY2hlTGVuZ3RocyA9IG51bGw7XFxuXFx0XFx0XFx0dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIENvbXB1dGUgbGVuZ3RocyBhbmQgY2FjaGUgdGhlbVxcblxcdFxcdC8vIFdlIGNhbm5vdCBvdmVyd3JpdGUgZ2V0TGVuZ3RocygpIGJlY2F1c2UgVXRvVCBtYXBwaW5nIHVzZXMgaXQuXFxuXFxuXFx0XFx0Z2V0Q3VydmVMZW5ndGhzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Ly8gV2UgdXNlIGNhY2hlIHZhbHVlcyBpZiBjdXJ2ZXMgYW5kIGNhY2hlIGFycmF5IGFyZSBzYW1lIGxlbmd0aFxcblxcblxcdFxcdFxcdGlmICggdGhpcy5jYWNoZUxlbmd0aHMgJiYgdGhpcy5jYWNoZUxlbmd0aHMubGVuZ3RoID09PSB0aGlzLmN1cnZlcy5sZW5ndGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBHZXQgbGVuZ3RoIG9mIHN1Yi1jdXJ2ZVxcblxcdFxcdFxcdC8vIFB1c2ggc3VtcyBpbnRvIGNhY2hlZCBhcnJheVxcblxcblxcdFxcdFxcdHZhciBsZW5ndGhzID0gW10sIHN1bXMgPSAwO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMuY3VydmVzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c3VtcyArPSB0aGlzLmN1cnZlc1sgaSBdLmdldExlbmd0aCgpO1xcblxcdFxcdFxcdFxcdGxlbmd0aHMucHVzaCggc3VtcyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLmNhY2hlTGVuZ3RocyA9IGxlbmd0aHM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGxlbmd0aHM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRTcGFjZWRQb2ludHM6IGZ1bmN0aW9uICggZGl2aXNpb25zICkge1xcblxcblxcdFxcdFxcdGlmICggZGl2aXNpb25zID09PSB1bmRlZmluZWQgKSBkaXZpc2lvbnMgPSA0MDtcXG5cXG5cXHRcXHRcXHR2YXIgcG9pbnRzID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDw9IGRpdmlzaW9uczsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRwb2ludHMucHVzaCggdGhpcy5nZXRQb2ludCggaSAvIGRpdmlzaW9ucyApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5hdXRvQ2xvc2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cG9pbnRzLnB1c2goIHBvaW50c1sgMCBdICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBwb2ludHM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRQb2ludHM6IGZ1bmN0aW9uICggZGl2aXNpb25zICkge1xcblxcblxcdFxcdFxcdGRpdmlzaW9ucyA9IGRpdmlzaW9ucyB8fCAxMjtcXG5cXG5cXHRcXHRcXHR2YXIgcG9pbnRzID0gW10sIGxhc3Q7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBjdXJ2ZXMgPSB0aGlzLmN1cnZlczsgaSA8IGN1cnZlcy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGN1cnZlID0gY3VydmVzWyBpIF07XFxuXFx0XFx0XFx0XFx0dmFyIHJlc29sdXRpb24gPSAoIGN1cnZlICYmIGN1cnZlLmlzRWxsaXBzZUN1cnZlICkgPyBkaXZpc2lvbnMgKiAyXFxuXFx0XFx0XFx0XFx0XFx0OiAoIGN1cnZlICYmIGN1cnZlLmlzTGluZUN1cnZlICkgPyAxXFxuXFx0XFx0XFx0XFx0XFx0XFx0OiAoIGN1cnZlICYmIGN1cnZlLmlzU3BsaW5lQ3VydmUgKSA/IGRpdmlzaW9ucyAqIGN1cnZlLnBvaW50cy5sZW5ndGhcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQ6IGRpdmlzaW9ucztcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcHRzID0gY3VydmUuZ2V0UG9pbnRzKCByZXNvbHV0aW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwOyBqIDwgcHRzLmxlbmd0aDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgcG9pbnQgPSBwdHNbIGogXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGxhc3QgJiYgbGFzdC5lcXVhbHMoIHBvaW50ICkgKSBjb250aW51ZTsgLy8gZW5zdXJlcyBubyBjb25zZWN1dGl2ZSBwb2ludHMgYXJlIGR1cGxpY2F0ZXNcXG5cXG5cXHRcXHRcXHRcXHRcXHRwb2ludHMucHVzaCggcG9pbnQgKTtcXG5cXHRcXHRcXHRcXHRcXHRsYXN0ID0gcG9pbnQ7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuYXV0b0Nsb3NlICYmIHBvaW50cy5sZW5ndGggPiAxICYmICEgcG9pbnRzWyBwb2ludHMubGVuZ3RoIC0gMSBdLmVxdWFscyggcG9pbnRzWyAwIF0gKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRwb2ludHMucHVzaCggcG9pbnRzWyAwIF0gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHBvaW50cztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdEN1cnZlLnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdFxcdHRoaXMuY3VydmVzID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gc291cmNlLmN1cnZlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjdXJ2ZSA9IHNvdXJjZS5jdXJ2ZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmN1cnZlcy5wdXNoKCBjdXJ2ZS5jbG9uZSgpICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuYXV0b0Nsb3NlID0gc291cmNlLmF1dG9DbG9zZTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvSlNPTjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBkYXRhID0gQ3VydmUucHJvdG90eXBlLnRvSlNPTi5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0XFx0ZGF0YS5hdXRvQ2xvc2UgPSB0aGlzLmF1dG9DbG9zZTtcXG5cXHRcXHRcXHRkYXRhLmN1cnZlcyA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMuY3VydmVzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGN1cnZlID0gdGhpcy5jdXJ2ZXNbIGkgXTtcXG5cXHRcXHRcXHRcXHRkYXRhLmN1cnZlcy5wdXNoKCBjdXJ2ZS50b0pTT04oKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZyb21KU09OOiBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0XFx0Q3VydmUucHJvdG90eXBlLmZyb21KU09OLmNhbGwoIHRoaXMsIGpzb24gKTtcXG5cXG5cXHRcXHRcXHR0aGlzLmF1dG9DbG9zZSA9IGpzb24uYXV0b0Nsb3NlO1xcblxcdFxcdFxcdHRoaXMuY3VydmVzID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0ganNvbi5jdXJ2ZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgY3VydmUgPSBqc29uLmN1cnZlc1sgaSBdO1xcblxcdFxcdFxcdFxcdHRoaXMuY3VydmVzLnB1c2goIG5ldyBDdXJ2ZXNbIGN1cnZlLnR5cGUgXSgpLmZyb21KU09OKCBjdXJ2ZSApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciB6ejg1IC8gaHR0cDovL3d3dy5sYWI0Z2FtZXMubmV0L3p6ODUvYmxvZ1xcblxcdCAqIENyZWF0ZXMgZnJlZSBmb3JtIDJkIHBhdGggdXNpbmcgc2VyaWVzIG9mIHBvaW50cywgbGluZXMgb3IgY3VydmVzLlxcblxcdCAqKi9cXG5cXG5cXHRmdW5jdGlvbiBQYXRoKCBwb2ludHMgKSB7XFxuXFxuXFx0XFx0Q3VydmVQYXRoLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUGF0aCc7XFxuXFxuXFx0XFx0dGhpcy5jdXJyZW50UG9pbnQgPSBuZXcgVmVjdG9yMigpO1xcblxcblxcdFxcdGlmICggcG9pbnRzICkge1xcblxcblxcdFxcdFxcdHRoaXMuc2V0RnJvbVBvaW50cyggcG9pbnRzICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRQYXRoLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEN1cnZlUGF0aC5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBQYXRoLFxcblxcblxcdFxcdHNldEZyb21Qb2ludHM6IGZ1bmN0aW9uICggcG9pbnRzICkge1xcblxcblxcdFxcdFxcdHRoaXMubW92ZVRvKCBwb2ludHNbIDAgXS54LCBwb2ludHNbIDAgXS55ICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAxLCBsID0gcG9pbnRzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5saW5lVG8oIHBvaW50c1sgaSBdLngsIHBvaW50c1sgaSBdLnkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRtb3ZlVG86IGZ1bmN0aW9uICggeCwgeSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmN1cnJlbnRQb2ludC5zZXQoIHgsIHkgKTsgLy8gVE9ETyBjb25zaWRlciByZWZlcmVuY2luZyB2ZWN0b3JzIGluc3RlYWQgb2YgY29weWluZz9cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGxpbmVUbzogZnVuY3Rpb24gKCB4LCB5ICkge1xcblxcblxcdFxcdFxcdHZhciBjdXJ2ZSA9IG5ldyBMaW5lQ3VydmUoIHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksIG5ldyBWZWN0b3IyKCB4LCB5ICkgKTtcXG5cXHRcXHRcXHR0aGlzLmN1cnZlcy5wdXNoKCBjdXJ2ZSApO1xcblxcblxcdFxcdFxcdHRoaXMuY3VycmVudFBvaW50LnNldCggeCwgeSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cXVhZHJhdGljQ3VydmVUbzogZnVuY3Rpb24gKCBhQ1B4LCBhQ1B5LCBhWCwgYVkgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGN1cnZlID0gbmV3IFF1YWRyYXRpY0JlemllckN1cnZlKFxcblxcdFxcdFxcdFxcdHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksXFxuXFx0XFx0XFx0XFx0bmV3IFZlY3RvcjIoIGFDUHgsIGFDUHkgKSxcXG5cXHRcXHRcXHRcXHRuZXcgVmVjdG9yMiggYVgsIGFZIClcXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdHRoaXMuY3VydmVzLnB1c2goIGN1cnZlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5jdXJyZW50UG9pbnQuc2V0KCBhWCwgYVkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGJlemllckN1cnZlVG86IGZ1bmN0aW9uICggYUNQMXgsIGFDUDF5LCBhQ1AyeCwgYUNQMnksIGFYLCBhWSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgY3VydmUgPSBuZXcgQ3ViaWNCZXppZXJDdXJ2ZShcXG5cXHRcXHRcXHRcXHR0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLFxcblxcdFxcdFxcdFxcdG5ldyBWZWN0b3IyKCBhQ1AxeCwgYUNQMXkgKSxcXG5cXHRcXHRcXHRcXHRuZXcgVmVjdG9yMiggYUNQMngsIGFDUDJ5ICksXFxuXFx0XFx0XFx0XFx0bmV3IFZlY3RvcjIoIGFYLCBhWSApXFxuXFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHR0aGlzLmN1cnZlcy5wdXNoKCBjdXJ2ZSApO1xcblxcblxcdFxcdFxcdHRoaXMuY3VycmVudFBvaW50LnNldCggYVgsIGFZICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzcGxpbmVUaHJ1OiBmdW5jdGlvbiAoIHB0cyAvKkFycmF5IG9mIFZlY3RvciovICkge1xcblxcblxcdFxcdFxcdHZhciBucHRzID0gWyB0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpIF0uY29uY2F0KCBwdHMgKTtcXG5cXG5cXHRcXHRcXHR2YXIgY3VydmUgPSBuZXcgU3BsaW5lQ3VydmUoIG5wdHMgKTtcXG5cXHRcXHRcXHR0aGlzLmN1cnZlcy5wdXNoKCBjdXJ2ZSApO1xcblxcblxcdFxcdFxcdHRoaXMuY3VycmVudFBvaW50LmNvcHkoIHB0c1sgcHRzLmxlbmd0aCAtIDEgXSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXJjOiBmdW5jdGlvbiAoIGFYLCBhWSwgYVJhZGl1cywgYVN0YXJ0QW5nbGUsIGFFbmRBbmdsZSwgYUNsb2Nrd2lzZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgeDAgPSB0aGlzLmN1cnJlbnRQb2ludC54O1xcblxcdFxcdFxcdHZhciB5MCA9IHRoaXMuY3VycmVudFBvaW50Lnk7XFxuXFxuXFx0XFx0XFx0dGhpcy5hYnNhcmMoIGFYICsgeDAsIGFZICsgeTAsIGFSYWRpdXMsXFxuXFx0XFx0XFx0XFx0YVN0YXJ0QW5nbGUsIGFFbmRBbmdsZSwgYUNsb2Nrd2lzZSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YWJzYXJjOiBmdW5jdGlvbiAoIGFYLCBhWSwgYVJhZGl1cywgYVN0YXJ0QW5nbGUsIGFFbmRBbmdsZSwgYUNsb2Nrd2lzZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFic2VsbGlwc2UoIGFYLCBhWSwgYVJhZGl1cywgYVJhZGl1cywgYVN0YXJ0QW5nbGUsIGFFbmRBbmdsZSwgYUNsb2Nrd2lzZSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZWxsaXBzZTogZnVuY3Rpb24gKCBhWCwgYVksIHhSYWRpdXMsIHlSYWRpdXMsIGFTdGFydEFuZ2xlLCBhRW5kQW5nbGUsIGFDbG9ja3dpc2UsIGFSb3RhdGlvbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgeDAgPSB0aGlzLmN1cnJlbnRQb2ludC54O1xcblxcdFxcdFxcdHZhciB5MCA9IHRoaXMuY3VycmVudFBvaW50Lnk7XFxuXFxuXFx0XFx0XFx0dGhpcy5hYnNlbGxpcHNlKCBhWCArIHgwLCBhWSArIHkwLCB4UmFkaXVzLCB5UmFkaXVzLCBhU3RhcnRBbmdsZSwgYUVuZEFuZ2xlLCBhQ2xvY2t3aXNlLCBhUm90YXRpb24gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGFic2VsbGlwc2U6IGZ1bmN0aW9uICggYVgsIGFZLCB4UmFkaXVzLCB5UmFkaXVzLCBhU3RhcnRBbmdsZSwgYUVuZEFuZ2xlLCBhQ2xvY2t3aXNlLCBhUm90YXRpb24gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGN1cnZlID0gbmV3IEVsbGlwc2VDdXJ2ZSggYVgsIGFZLCB4UmFkaXVzLCB5UmFkaXVzLCBhU3RhcnRBbmdsZSwgYUVuZEFuZ2xlLCBhQ2xvY2t3aXNlLCBhUm90YXRpb24gKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuY3VydmVzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gaWYgYSBwcmV2aW91cyBjdXJ2ZSBpcyBwcmVzZW50LCBhdHRlbXB0IHRvIGpvaW5cXG5cXHRcXHRcXHRcXHR2YXIgZmlyc3RQb2ludCA9IGN1cnZlLmdldFBvaW50KCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCAhIGZpcnN0UG9pbnQuZXF1YWxzKCB0aGlzLmN1cnJlbnRQb2ludCApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMubGluZVRvKCBmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5jdXJ2ZXMucHVzaCggY3VydmUgKTtcXG5cXG5cXHRcXHRcXHR2YXIgbGFzdFBvaW50ID0gY3VydmUuZ2V0UG9pbnQoIDEgKTtcXG5cXHRcXHRcXHR0aGlzLmN1cnJlbnRQb2ludC5jb3B5KCBsYXN0UG9pbnQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdEN1cnZlUGF0aC5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLmN1cnJlbnRQb2ludC5jb3B5KCBzb3VyY2UuY3VycmVudFBvaW50ICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IEN1cnZlUGF0aC5wcm90b3R5cGUudG9KU09OLmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHRcXHRkYXRhLmN1cnJlbnRQb2ludCA9IHRoaXMuY3VycmVudFBvaW50LnRvQXJyYXkoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZyb21KU09OOiBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0XFx0Q3VydmVQYXRoLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKCB0aGlzLCBqc29uICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5jdXJyZW50UG9pbnQuZnJvbUFycmF5KCBqc29uLmN1cnJlbnRQb2ludCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciB6ejg1IC8gaHR0cDovL3d3dy5sYWI0Z2FtZXMubmV0L3p6ODUvYmxvZ1xcblxcdCAqIERlZmluZXMgYSAyZCBzaGFwZSBwbGFuZSB1c2luZyBwYXRocy5cXG5cXHQgKiovXFxuXFxuXFx0Ly8gU1RFUCAxIENyZWF0ZSBhIHBhdGguXFxuXFx0Ly8gU1RFUCAyIFR1cm4gcGF0aCBpbnRvIHNoYXBlLlxcblxcdC8vIFNURVAgMyBFeHRydWRlR2VvbWV0cnkgdGFrZXMgaW4gU2hhcGUvU2hhcGVzXFxuXFx0Ly8gU1RFUCAzYSAtIEV4dHJhY3QgcG9pbnRzIGZyb20gZWFjaCBzaGFwZSwgdHVybiB0byB2ZXJ0aWNlc1xcblxcdC8vIFNURVAgM2IgLSBUcmlhbmd1bGF0ZSBlYWNoIHNoYXBlLCBhZGQgZmFjZXMuXFxuXFxuXFx0ZnVuY3Rpb24gU2hhcGUoIHBvaW50cyApIHtcXG5cXG5cXHRcXHRQYXRoLmNhbGwoIHRoaXMsIHBvaW50cyApO1xcblxcblxcdFxcdHRoaXMudXVpZCA9IF9NYXRoLmdlbmVyYXRlVVVJRCgpO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdTaGFwZSc7XFxuXFxuXFx0XFx0dGhpcy5ob2xlcyA9IFtdO1xcblxcblxcdH1cXG5cXG5cXHRTaGFwZS5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBQYXRoLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IFNoYXBlLFxcblxcblxcdFxcdGdldFBvaW50c0hvbGVzOiBmdW5jdGlvbiAoIGRpdmlzaW9ucyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaG9sZXNQdHMgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSB0aGlzLmhvbGVzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aG9sZXNQdHNbIGkgXSA9IHRoaXMuaG9sZXNbIGkgXS5nZXRQb2ludHMoIGRpdmlzaW9ucyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gaG9sZXNQdHM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBnZXQgcG9pbnRzIG9mIHNoYXBlIGFuZCBob2xlcyAoa2V5cG9pbnRzIGJhc2VkIG9uIHNlZ21lbnRzIHBhcmFtZXRlcilcXG5cXG5cXHRcXHRleHRyYWN0UG9pbnRzOiBmdW5jdGlvbiAoIGRpdmlzaW9ucyApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4ge1xcblxcblxcdFxcdFxcdFxcdHNoYXBlOiB0aGlzLmdldFBvaW50cyggZGl2aXNpb25zICksXFxuXFx0XFx0XFx0XFx0aG9sZXM6IHRoaXMuZ2V0UG9pbnRzSG9sZXMoIGRpdmlzaW9ucyApXFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdFBhdGgucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5ob2xlcyA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IHNvdXJjZS5ob2xlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBob2xlID0gc291cmNlLmhvbGVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ob2xlcy5wdXNoKCBob2xlLmNsb25lKCkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IFBhdGgucHJvdG90eXBlLnRvSlNPTi5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0XFx0ZGF0YS51dWlkID0gdGhpcy51dWlkO1xcblxcdFxcdFxcdGRhdGEuaG9sZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSB0aGlzLmhvbGVzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGhvbGUgPSB0aGlzLmhvbGVzWyBpIF07XFxuXFx0XFx0XFx0XFx0ZGF0YS5ob2xlcy5wdXNoKCBob2xlLnRvSlNPTigpICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBkYXRhO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZnJvbUpTT046IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRcXHRQYXRoLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKCB0aGlzLCBqc29uICk7XFxuXFxuXFx0XFx0XFx0dGhpcy51dWlkID0ganNvbi51dWlkO1xcblxcdFxcdFxcdHRoaXMuaG9sZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBqc29uLmhvbGVzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGhvbGUgPSBqc29uLmhvbGVzWyBpIF07XFxuXFx0XFx0XFx0XFx0dGhpcy5ob2xlcy5wdXNoKCBuZXcgUGF0aCgpLmZyb21KU09OKCBob2xlICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTGlnaHQoIGNvbG9yLCBpbnRlbnNpdHkgKSB7XFxuXFxuXFx0XFx0T2JqZWN0M0QuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdMaWdodCc7XFxuXFxuXFx0XFx0dGhpcy5jb2xvciA9IG5ldyBDb2xvciggY29sb3IgKTtcXG5cXHRcXHR0aGlzLmludGVuc2l0eSA9IGludGVuc2l0eSAhPT0gdW5kZWZpbmVkID8gaW50ZW5zaXR5IDogMTtcXG5cXG5cXHRcXHR0aGlzLnJlY2VpdmVTaGFkb3cgPSB1bmRlZmluZWQ7XFxuXFxuXFx0fVxcblxcblxcdExpZ2h0LnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IExpZ2h0LFxcblxcblxcdFxcdGlzTGlnaHQ6IHRydWUsXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0XFx0T2JqZWN0M0QucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5jb2xvci5jb3B5KCBzb3VyY2UuY29sb3IgKTtcXG5cXHRcXHRcXHR0aGlzLmludGVuc2l0eSA9IHNvdXJjZS5pbnRlbnNpdHk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICggbWV0YSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IE9iamVjdDNELnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcywgbWV0YSApO1xcblxcblxcdFxcdFxcdGRhdGEub2JqZWN0LmNvbG9yID0gdGhpcy5jb2xvci5nZXRIZXgoKTtcXG5cXHRcXHRcXHRkYXRhLm9iamVjdC5pbnRlbnNpdHkgPSB0aGlzLmludGVuc2l0eTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZ3JvdW5kQ29sb3IgIT09IHVuZGVmaW5lZCApIGRhdGEub2JqZWN0Lmdyb3VuZENvbG9yID0gdGhpcy5ncm91bmRDb2xvci5nZXRIZXgoKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZGlzdGFuY2UgIT09IHVuZGVmaW5lZCApIGRhdGEub2JqZWN0LmRpc3RhbmNlID0gdGhpcy5kaXN0YW5jZTtcXG5cXHRcXHRcXHRpZiAoIHRoaXMuYW5nbGUgIT09IHVuZGVmaW5lZCApIGRhdGEub2JqZWN0LmFuZ2xlID0gdGhpcy5hbmdsZTtcXG5cXHRcXHRcXHRpZiAoIHRoaXMuZGVjYXkgIT09IHVuZGVmaW5lZCApIGRhdGEub2JqZWN0LmRlY2F5ID0gdGhpcy5kZWNheTtcXG5cXHRcXHRcXHRpZiAoIHRoaXMucGVudW1icmEgIT09IHVuZGVmaW5lZCApIGRhdGEub2JqZWN0LnBlbnVtYnJhID0gdGhpcy5wZW51bWJyYTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuc2hhZG93ICE9PSB1bmRlZmluZWQgKSBkYXRhLm9iamVjdC5zaGFkb3cgPSB0aGlzLnNoYWRvdy50b0pTT04oKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gSGVtaXNwaGVyZUxpZ2h0KCBza3lDb2xvciwgZ3JvdW5kQ29sb3IsIGludGVuc2l0eSApIHtcXG5cXG5cXHRcXHRMaWdodC5jYWxsKCB0aGlzLCBza3lDb2xvciwgaW50ZW5zaXR5ICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0hlbWlzcGhlcmVMaWdodCc7XFxuXFxuXFx0XFx0dGhpcy5jYXN0U2hhZG93ID0gdW5kZWZpbmVkO1xcblxcblxcdFxcdHRoaXMucG9zaXRpb24uY29weSggT2JqZWN0M0QuRGVmYXVsdFVwICk7XFxuXFx0XFx0dGhpcy51cGRhdGVNYXRyaXgoKTtcXG5cXG5cXHRcXHR0aGlzLmdyb3VuZENvbG9yID0gbmV3IENvbG9yKCBncm91bmRDb2xvciApO1xcblxcblxcdH1cXG5cXG5cXHRIZW1pc3BoZXJlTGlnaHQucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggTGlnaHQucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogSGVtaXNwaGVyZUxpZ2h0LFxcblxcblxcdFxcdGlzSGVtaXNwaGVyZUxpZ2h0OiB0cnVlLFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdExpZ2h0LnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdFxcdHRoaXMuZ3JvdW5kQ29sb3IuY29weSggc291cmNlLmdyb3VuZENvbG9yICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIExpZ2h0U2hhZG93KCBjYW1lcmEgKSB7XFxuXFxuXFx0XFx0dGhpcy5jYW1lcmEgPSBjYW1lcmE7XFxuXFxuXFx0XFx0dGhpcy5iaWFzID0gMDtcXG5cXHRcXHR0aGlzLnJhZGl1cyA9IDE7XFxuXFxuXFx0XFx0dGhpcy5tYXBTaXplID0gbmV3IFZlY3RvcjIoIDUxMiwgNTEyICk7XFxuXFxuXFx0XFx0dGhpcy5tYXAgPSBudWxsO1xcblxcdFxcdHRoaXMubWF0cml4ID0gbmV3IE1hdHJpeDQoKTtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggTGlnaHRTaGFkb3cucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jYW1lcmEgPSBzb3VyY2UuY2FtZXJhLmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0dGhpcy5iaWFzID0gc291cmNlLmJpYXM7XFxuXFx0XFx0XFx0dGhpcy5yYWRpdXMgPSBzb3VyY2UucmFkaXVzO1xcblxcblxcdFxcdFxcdHRoaXMubWFwU2l6ZS5jb3B5KCBzb3VyY2UubWFwU2l6ZSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgb2JqZWN0ID0ge307XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmJpYXMgIT09IDAgKSBvYmplY3QuYmlhcyA9IHRoaXMuYmlhcztcXG5cXHRcXHRcXHRpZiAoIHRoaXMucmFkaXVzICE9PSAxICkgb2JqZWN0LnJhZGl1cyA9IHRoaXMucmFkaXVzO1xcblxcdFxcdFxcdGlmICggdGhpcy5tYXBTaXplLnggIT09IDUxMiB8fCB0aGlzLm1hcFNpemUueSAhPT0gNTEyICkgb2JqZWN0Lm1hcFNpemUgPSB0aGlzLm1hcFNpemUudG9BcnJheSgpO1xcblxcblxcdFxcdFxcdG9iamVjdC5jYW1lcmEgPSB0aGlzLmNhbWVyYS50b0pTT04oIGZhbHNlICkub2JqZWN0O1xcblxcdFxcdFxcdGRlbGV0ZSBvYmplY3QuY2FtZXJhLm1hdHJpeDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gb2JqZWN0O1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBTcG90TGlnaHRTaGFkb3coKSB7XFxuXFxuXFx0XFx0TGlnaHRTaGFkb3cuY2FsbCggdGhpcywgbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCA1MCwgMSwgMC41LCA1MDAgKSApO1xcblxcblxcdH1cXG5cXG5cXHRTcG90TGlnaHRTaGFkb3cucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggTGlnaHRTaGFkb3cucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogU3BvdExpZ2h0U2hhZG93LFxcblxcblxcdFxcdGlzU3BvdExpZ2h0U2hhZG93OiB0cnVlLFxcblxcblxcdFxcdHVwZGF0ZTogZnVuY3Rpb24gKCBsaWdodCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgY2FtZXJhID0gdGhpcy5jYW1lcmE7XFxuXFxuXFx0XFx0XFx0dmFyIGZvdiA9IF9NYXRoLlJBRDJERUcgKiAyICogbGlnaHQuYW5nbGU7XFxuXFx0XFx0XFx0dmFyIGFzcGVjdCA9IHRoaXMubWFwU2l6ZS53aWR0aCAvIHRoaXMubWFwU2l6ZS5oZWlnaHQ7XFxuXFx0XFx0XFx0dmFyIGZhciA9IGxpZ2h0LmRpc3RhbmNlIHx8IGNhbWVyYS5mYXI7XFxuXFxuXFx0XFx0XFx0aWYgKCBmb3YgIT09IGNhbWVyYS5mb3YgfHwgYXNwZWN0ICE9PSBjYW1lcmEuYXNwZWN0IHx8IGZhciAhPT0gY2FtZXJhLmZhciApIHtcXG5cXG5cXHRcXHRcXHRcXHRjYW1lcmEuZm92ID0gZm92O1xcblxcdFxcdFxcdFxcdGNhbWVyYS5hc3BlY3QgPSBhc3BlY3Q7XFxuXFx0XFx0XFx0XFx0Y2FtZXJhLmZhciA9IGZhcjtcXG5cXHRcXHRcXHRcXHRjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gU3BvdExpZ2h0KCBjb2xvciwgaW50ZW5zaXR5LCBkaXN0YW5jZSwgYW5nbGUsIHBlbnVtYnJhLCBkZWNheSApIHtcXG5cXG5cXHRcXHRMaWdodC5jYWxsKCB0aGlzLCBjb2xvciwgaW50ZW5zaXR5ICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1Nwb3RMaWdodCc7XFxuXFxuXFx0XFx0dGhpcy5wb3NpdGlvbi5jb3B5KCBPYmplY3QzRC5EZWZhdWx0VXAgKTtcXG5cXHRcXHR0aGlzLnVwZGF0ZU1hdHJpeCgpO1xcblxcblxcdFxcdHRoaXMudGFyZ2V0ID0gbmV3IE9iamVjdDNEKCk7XFxuXFxuXFx0XFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCB0aGlzLCAncG93ZXInLCB7XFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gaW50ZW5zaXR5ID0gcG93ZXIgcGVyIHNvbGlkIGFuZ2xlLlxcblxcdFxcdFxcdFxcdC8vIHJlZjogZXF1YXRpb24gKDE3KSBmcm9tIGh0dHA6Ly93d3cuZnJvc3RiaXRlLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNC8xMS9jb3Vyc2Vfbm90ZXNfbW92aW5nX2Zyb3N0Yml0ZV90b19wYnIucGRmXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuaW50ZW5zaXR5ICogTWF0aC5QSTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCBwb3dlciApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBpbnRlbnNpdHkgPSBwb3dlciBwZXIgc29saWQgYW5nbGUuXFxuXFx0XFx0XFx0XFx0Ly8gcmVmOiBlcXVhdGlvbiAoMTcpIGZyb20gaHR0cDovL3d3dy5mcm9zdGJpdGUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE0LzExL2NvdXJzZV9ub3Rlc19tb3ZpbmdfZnJvc3RiaXRlX3RvX3Bici5wZGZcXG5cXHRcXHRcXHRcXHR0aGlzLmludGVuc2l0eSA9IHBvd2VyIC8gTWF0aC5QSTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSApO1xcblxcblxcdFxcdHRoaXMuZGlzdGFuY2UgPSAoIGRpc3RhbmNlICE9PSB1bmRlZmluZWQgKSA/IGRpc3RhbmNlIDogMDtcXG5cXHRcXHR0aGlzLmFuZ2xlID0gKCBhbmdsZSAhPT0gdW5kZWZpbmVkICkgPyBhbmdsZSA6IE1hdGguUEkgLyAzO1xcblxcdFxcdHRoaXMucGVudW1icmEgPSAoIHBlbnVtYnJhICE9PSB1bmRlZmluZWQgKSA/IHBlbnVtYnJhIDogMDtcXG5cXHRcXHR0aGlzLmRlY2F5ID0gKCBkZWNheSAhPT0gdW5kZWZpbmVkICkgPyBkZWNheSA6IDE7XFx0Ly8gZm9yIHBoeXNpY2FsbHkgY29ycmVjdCBsaWdodHMsIHNob3VsZCBiZSAyLlxcblxcblxcdFxcdHRoaXMuc2hhZG93ID0gbmV3IFNwb3RMaWdodFNoYWRvdygpO1xcblxcblxcdH1cXG5cXG5cXHRTcG90TGlnaHQucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggTGlnaHQucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogU3BvdExpZ2h0LFxcblxcblxcdFxcdGlzU3BvdExpZ2h0OiB0cnVlLFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdExpZ2h0LnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdFxcdHRoaXMuZGlzdGFuY2UgPSBzb3VyY2UuZGlzdGFuY2U7XFxuXFx0XFx0XFx0dGhpcy5hbmdsZSA9IHNvdXJjZS5hbmdsZTtcXG5cXHRcXHRcXHR0aGlzLnBlbnVtYnJhID0gc291cmNlLnBlbnVtYnJhO1xcblxcdFxcdFxcdHRoaXMuZGVjYXkgPSBzb3VyY2UuZGVjYXk7XFxuXFxuXFx0XFx0XFx0dGhpcy50YXJnZXQgPSBzb3VyY2UudGFyZ2V0LmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0dGhpcy5zaGFkb3cgPSBzb3VyY2Uuc2hhZG93LmNsb25lKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcblxcdGZ1bmN0aW9uIFBvaW50TGlnaHQoIGNvbG9yLCBpbnRlbnNpdHksIGRpc3RhbmNlLCBkZWNheSApIHtcXG5cXG5cXHRcXHRMaWdodC5jYWxsKCB0aGlzLCBjb2xvciwgaW50ZW5zaXR5ICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1BvaW50TGlnaHQnO1xcblxcblxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgJ3Bvd2VyJywge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdC8vIGludGVuc2l0eSA9IHBvd2VyIHBlciBzb2xpZCBhbmdsZS5cXG5cXHRcXHRcXHRcXHQvLyByZWY6IGVxdWF0aW9uICgxNSkgZnJvbSBodHRwOi8vd3d3LmZyb3N0Yml0ZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTQvMTEvY291cnNlX25vdGVzX21vdmluZ19mcm9zdGJpdGVfdG9fcGJyLnBkZlxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmludGVuc2l0eSAqIDQgKiBNYXRoLlBJO1xcblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHBvd2VyICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGludGVuc2l0eSA9IHBvd2VyIHBlciBzb2xpZCBhbmdsZS5cXG5cXHRcXHRcXHRcXHQvLyByZWY6IGVxdWF0aW9uICgxNSkgZnJvbSBodHRwOi8vd3d3LmZyb3N0Yml0ZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTQvMTEvY291cnNlX25vdGVzX21vdmluZ19mcm9zdGJpdGVfdG9fcGJyLnBkZlxcblxcdFxcdFxcdFxcdHRoaXMuaW50ZW5zaXR5ID0gcG93ZXIgLyAoIDQgKiBNYXRoLlBJICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0gKTtcXG5cXG5cXHRcXHR0aGlzLmRpc3RhbmNlID0gKCBkaXN0YW5jZSAhPT0gdW5kZWZpbmVkICkgPyBkaXN0YW5jZSA6IDA7XFxuXFx0XFx0dGhpcy5kZWNheSA9ICggZGVjYXkgIT09IHVuZGVmaW5lZCApID8gZGVjYXkgOiAxO1xcdC8vIGZvciBwaHlzaWNhbGx5IGNvcnJlY3QgbGlnaHRzLCBzaG91bGQgYmUgMi5cXG5cXG5cXHRcXHR0aGlzLnNoYWRvdyA9IG5ldyBMaWdodFNoYWRvdyggbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCA5MCwgMSwgMC41LCA1MDAgKSApO1xcblxcblxcdH1cXG5cXG5cXHRQb2ludExpZ2h0LnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIExpZ2h0LnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IFBvaW50TGlnaHQsXFxuXFxuXFx0XFx0aXNQb2ludExpZ2h0OiB0cnVlLFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdExpZ2h0LnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdFxcdHRoaXMuZGlzdGFuY2UgPSBzb3VyY2UuZGlzdGFuY2U7XFxuXFx0XFx0XFx0dGhpcy5kZWNheSA9IHNvdXJjZS5kZWNheTtcXG5cXG5cXHRcXHRcXHR0aGlzLnNoYWRvdyA9IHNvdXJjZS5zaGFkb3cuY2xvbmUoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyggKSB7XFxuXFxuXFx0XFx0TGlnaHRTaGFkb3cuY2FsbCggdGhpcywgbmV3IE9ydGhvZ3JhcGhpY0NhbWVyYSggLSA1LCA1LCA1LCAtIDUsIDAuNSwgNTAwICkgKTtcXG5cXG5cXHR9XFxuXFxuXFx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdy5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBMaWdodFNoYWRvdy5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBEaXJlY3Rpb25hbExpZ2h0U2hhZG93XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBEaXJlY3Rpb25hbExpZ2h0KCBjb2xvciwgaW50ZW5zaXR5ICkge1xcblxcblxcdFxcdExpZ2h0LmNhbGwoIHRoaXMsIGNvbG9yLCBpbnRlbnNpdHkgKTtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnRGlyZWN0aW9uYWxMaWdodCc7XFxuXFxuXFx0XFx0dGhpcy5wb3NpdGlvbi5jb3B5KCBPYmplY3QzRC5EZWZhdWx0VXAgKTtcXG5cXHRcXHR0aGlzLnVwZGF0ZU1hdHJpeCgpO1xcblxcblxcdFxcdHRoaXMudGFyZ2V0ID0gbmV3IE9iamVjdDNEKCk7XFxuXFxuXFx0XFx0dGhpcy5zaGFkb3cgPSBuZXcgRGlyZWN0aW9uYWxMaWdodFNoYWRvdygpO1xcblxcblxcdH1cXG5cXG5cXHREaXJlY3Rpb25hbExpZ2h0LnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIExpZ2h0LnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IERpcmVjdGlvbmFsTGlnaHQsXFxuXFxuXFx0XFx0aXNEaXJlY3Rpb25hbExpZ2h0OiB0cnVlLFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggc291cmNlICkge1xcblxcblxcdFxcdFxcdExpZ2h0LnByb3RvdHlwZS5jb3B5LmNhbGwoIHRoaXMsIHNvdXJjZSApO1xcblxcblxcdFxcdFxcdHRoaXMudGFyZ2V0ID0gc291cmNlLnRhcmdldC5jbG9uZSgpO1xcblxcblxcdFxcdFxcdHRoaXMuc2hhZG93ID0gc291cmNlLnNoYWRvdy5jbG9uZSgpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBBbWJpZW50TGlnaHQoIGNvbG9yLCBpbnRlbnNpdHkgKSB7XFxuXFxuXFx0XFx0TGlnaHQuY2FsbCggdGhpcywgY29sb3IsIGludGVuc2l0eSApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdBbWJpZW50TGlnaHQnO1xcblxcblxcdFxcdHRoaXMuY2FzdFNoYWRvdyA9IHVuZGVmaW5lZDtcXG5cXG5cXHR9XFxuXFxuXFx0QW1iaWVudExpZ2h0LnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIExpZ2h0LnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEFtYmllbnRMaWdodCxcXG5cXG5cXHRcXHRpc0FtYmllbnRMaWdodDogdHJ1ZVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFiZWxuYXRpb24gLyBodHRwOi8vZ2l0aHViLmNvbS9hYmVsbmF0aW9uXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gUmVjdEFyZWFMaWdodCggY29sb3IsIGludGVuc2l0eSwgd2lkdGgsIGhlaWdodCApIHtcXG5cXG5cXHRcXHRMaWdodC5jYWxsKCB0aGlzLCBjb2xvciwgaW50ZW5zaXR5ICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1JlY3RBcmVhTGlnaHQnO1xcblxcblxcdFxcdHRoaXMucG9zaXRpb24uc2V0KCAwLCAxLCAwICk7XFxuXFx0XFx0dGhpcy51cGRhdGVNYXRyaXgoKTtcXG5cXG5cXHRcXHR0aGlzLndpZHRoID0gKCB3aWR0aCAhPT0gdW5kZWZpbmVkICkgPyB3aWR0aCA6IDEwO1xcblxcdFxcdHRoaXMuaGVpZ2h0ID0gKCBoZWlnaHQgIT09IHVuZGVmaW5lZCApID8gaGVpZ2h0IDogMTA7XFxuXFxuXFx0XFx0Ly8gVE9ETyAoYWJlbG5hdGlvbik6IGRpc3RhbmNlL2RlY2F5XFxuXFxuXFx0XFx0Ly8gVE9ETyAoYWJlbG5hdGlvbik6IHVwZGF0ZSBtZXRob2QgZm9yIFJlY3RBcmVhTGlnaHQgdG8gdXBkYXRlIHRyYW5zZm9ybSB0byBsb29rYXQgdGFyZ2V0XFxuXFxuXFx0XFx0Ly8gVE9ETyAoYWJlbG5hdGlvbik6IHNoYWRvd3NcXG5cXG5cXHR9XFxuXFxuXFx0Ly8gVE9ETyAoYWJlbG5hdGlvbik6IFJlY3RBcmVhTGlnaHQgdXBkYXRlIHdoZW4gbGlnaHQgc2hhcGUgaXMgY2hhbmdlZFxcblxcdFJlY3RBcmVhTGlnaHQucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggTGlnaHQucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogUmVjdEFyZWFMaWdodCxcXG5cXG5cXHRcXHRpc1JlY3RBcmVhTGlnaHQ6IHRydWUsXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0XFx0TGlnaHQucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy53aWR0aCA9IHNvdXJjZS53aWR0aDtcXG5cXHRcXHRcXHR0aGlzLmhlaWdodCA9IHNvdXJjZS5oZWlnaHQ7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICggbWV0YSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGF0YSA9IExpZ2h0LnByb3RvdHlwZS50b0pTT04uY2FsbCggdGhpcywgbWV0YSApO1xcblxcblxcdFxcdFxcdGRhdGEub2JqZWN0LndpZHRoID0gdGhpcy53aWR0aDtcXG5cXHRcXHRcXHRkYXRhLm9iamVjdC5oZWlnaHQgPSB0aGlzLmhlaWdodDtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZGF0YTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqXFxuXFx0ICogQSBUcmFjayB0aGF0IGludGVycG9sYXRlcyBTdHJpbmdzXFxuXFx0ICpcXG5cXHQgKlxcblxcdCAqIEBhdXRob3IgQmVuIEhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW8vXFxuXFx0ICogQGF1dGhvciBEYXZpZCBTYXJubyAvIGh0dHA6Ly9saWdodGhhdXMudXMvXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFN0cmluZ0tleWZyYW1lVHJhY2soIG5hbWUsIHRpbWVzLCB2YWx1ZXMsIGludGVycG9sYXRpb24gKSB7XFxuXFxuXFx0XFx0S2V5ZnJhbWVUcmFjay5jYWxsKCB0aGlzLCBuYW1lLCB0aW1lcywgdmFsdWVzLCBpbnRlcnBvbGF0aW9uICk7XFxuXFxuXFx0fVxcblxcblxcdFN0cmluZ0tleWZyYW1lVHJhY2sucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggS2V5ZnJhbWVUcmFjay5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBTdHJpbmdLZXlmcmFtZVRyYWNrLFxcblxcblxcdFxcdFZhbHVlVHlwZU5hbWU6ICdzdHJpbmcnLFxcblxcdFxcdFZhbHVlQnVmZmVyVHlwZTogQXJyYXksXFxuXFxuXFx0XFx0RGVmYXVsdEludGVycG9sYXRpb246IEludGVycG9sYXRlRGlzY3JldGUsXFxuXFxuXFx0XFx0SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOiB1bmRlZmluZWQsXFxuXFxuXFx0XFx0SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOiB1bmRlZmluZWRcXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICpcXG5cXHQgKiBBIFRyYWNrIG9mIEJvb2xlYW4ga2V5ZnJhbWUgdmFsdWVzLlxcblxcdCAqXFxuXFx0ICpcXG5cXHQgKiBAYXV0aG9yIEJlbiBIb3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvL1xcblxcdCAqIEBhdXRob3IgRGF2aWQgU2Fybm8gLyBodHRwOi8vbGlnaHRoYXVzLnVzL1xcblxcdCAqIEBhdXRob3IgdHNjaHdcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBCb29sZWFuS2V5ZnJhbWVUcmFjayggbmFtZSwgdGltZXMsIHZhbHVlcyApIHtcXG5cXG5cXHRcXHRLZXlmcmFtZVRyYWNrLmNhbGwoIHRoaXMsIG5hbWUsIHRpbWVzLCB2YWx1ZXMgKTtcXG5cXG5cXHR9XFxuXFxuXFx0Qm9vbGVhbktleWZyYW1lVHJhY2sucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggS2V5ZnJhbWVUcmFjay5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBCb29sZWFuS2V5ZnJhbWVUcmFjayxcXG5cXG5cXHRcXHRWYWx1ZVR5cGVOYW1lOiAnYm9vbCcsXFxuXFx0XFx0VmFsdWVCdWZmZXJUeXBlOiBBcnJheSxcXG5cXG5cXHRcXHREZWZhdWx0SW50ZXJwb2xhdGlvbjogSW50ZXJwb2xhdGVEaXNjcmV0ZSxcXG5cXG5cXHRcXHRJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6IHVuZGVmaW5lZCxcXG5cXHRcXHRJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6IHVuZGVmaW5lZFxcblxcblxcdFxcdC8vIE5vdGU6IEFjdHVhbGx5IHRoaXMgdHJhY2sgY291bGQgaGF2ZSBhIG9wdGltaXplZCAvIGNvbXByZXNzZWRcXG5cXHRcXHQvLyByZXByZXNlbnRhdGlvbiBvZiBhIHNpbmdsZSB2YWx1ZSBhbmQgYSBjdXN0b20gaW50ZXJwb2xhbnQgdGhhdFxcblxcdFxcdC8vIGNvbXB1dGVzIFxcXCJmaXJzdFZhbHVlIF4gaXNPZGQoIGluZGV4IClcXFwiLlxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBBYnN0cmFjdCBiYXNlIGNsYXNzIG9mIGludGVycG9sYW50cyBvdmVyIHBhcmFtZXRyaWMgc2FtcGxlcy5cXG5cXHQgKlxcblxcdCAqIFRoZSBwYXJhbWV0ZXIgZG9tYWluIGlzIG9uZSBkaW1lbnNpb25hbCwgdHlwaWNhbGx5IHRoZSB0aW1lIG9yIGEgcGF0aFxcblxcdCAqIGFsb25nIGEgY3VydmUgZGVmaW5lZCBieSB0aGUgZGF0YS5cXG5cXHQgKlxcblxcdCAqIFRoZSBzYW1wbGUgdmFsdWVzIGNhbiBoYXZlIGFueSBkaW1lbnNpb25hbGl0eSBhbmQgZGVyaXZlZCBjbGFzc2VzIG1heVxcblxcdCAqIGFwcGx5IHNwZWNpYWwgaW50ZXJwcmV0YXRpb25zIHRvIHRoZSBkYXRhLlxcblxcdCAqXFxuXFx0ICogVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgaW50ZXJ2YWwgc2VlayBpbiBhIFRlbXBsYXRlIE1ldGhvZCwgZGVmZXJyaW5nXFxuXFx0ICogdGhlIGFjdHVhbCBpbnRlcnBvbGF0aW9uIHRvIGRlcml2ZWQgY2xhc3Nlcy5cXG5cXHQgKlxcblxcdCAqIFRpbWUgY29tcGxleGl0eSBpcyBPKDEpIGZvciBsaW5lYXIgYWNjZXNzIGNyb3NzaW5nIGF0IG1vc3QgdHdvIHBvaW50c1xcblxcdCAqIGFuZCBPKGxvZyBOKSBmb3IgcmFuZG9tIGFjY2Vzcywgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9ucy5cXG5cXHQgKlxcblxcdCAqIFJlZmVyZW5jZXM6XFxuXFx0ICpcXG5cXHQgKiBcXHRcXHRodHRwOi8vd3d3Lm9vZGVzaWduLmNvbS90ZW1wbGF0ZS1tZXRob2QtcGF0dGVybi5odG1sXFxuXFx0ICpcXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gSW50ZXJwb2xhbnQoIHBhcmFtZXRlclBvc2l0aW9ucywgc2FtcGxlVmFsdWVzLCBzYW1wbGVTaXplLCByZXN1bHRCdWZmZXIgKSB7XFxuXFxuXFx0XFx0dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnMgPSBwYXJhbWV0ZXJQb3NpdGlvbnM7XFxuXFx0XFx0dGhpcy5fY2FjaGVkSW5kZXggPSAwO1xcblxcblxcdFxcdHRoaXMucmVzdWx0QnVmZmVyID0gcmVzdWx0QnVmZmVyICE9PSB1bmRlZmluZWQgP1xcblxcdFxcdFxcdHJlc3VsdEJ1ZmZlciA6IG5ldyBzYW1wbGVWYWx1ZXMuY29uc3RydWN0b3IoIHNhbXBsZVNpemUgKTtcXG5cXHRcXHR0aGlzLnNhbXBsZVZhbHVlcyA9IHNhbXBsZVZhbHVlcztcXG5cXHRcXHR0aGlzLnZhbHVlU2l6ZSA9IHNhbXBsZVNpemU7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIEludGVycG9sYW50LnByb3RvdHlwZSwge1xcblxcblxcdFxcdGV2YWx1YXRlOiBmdW5jdGlvbiAoIHQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHBwID0gdGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnMsXFxuXFx0XFx0XFx0XFx0aTEgPSB0aGlzLl9jYWNoZWRJbmRleCxcXG5cXG5cXHRcXHRcXHRcXHR0MSA9IHBwWyBpMSBdLFxcblxcdFxcdFxcdFxcdHQwID0gcHBbIGkxIC0gMSBdO1xcblxcblxcdFxcdFxcdHZhbGlkYXRlX2ludGVydmFsOiB7XFxuXFxuXFx0XFx0XFx0XFx0c2Vlazoge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciByaWdodDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsaW5lYXJfc2Nhbjoge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vLSBTZWUgaHR0cDovL2pzcGVyZi5jb20vY29tcGFyaXNvbi10by11bmRlZmluZWQvM1xcblxcdFxcdFxcdFxcdFxcdFxcdC8vLSBzbG93ZXIgY29kZTpcXG5cXHRcXHRcXHRcXHRcXHRcXHQvLy1cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLy0gXFx0XFx0XFx0XFx0aWYgKCB0ID49IHQxIHx8IHQxID09PSB1bmRlZmluZWQgKSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yd2FyZF9zY2FuOiBpZiAoICEgKCB0IDwgdDEgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgZ2l2ZVVwQXQgPSBpMSArIDI7IDsgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0MSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggdCA8IHQwICkgYnJlYWsgZm9yd2FyZF9zY2FuO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIGFmdGVyIGVuZFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGkxID0gcHAubGVuZ3RoO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuX2NhY2hlZEluZGV4ID0gaTE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuYWZ0ZXJFbmRfKCBpMSAtIDEsIHQsIHQwICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggaTEgPT09IGdpdmVVcEF0ICkgYnJlYWs7IC8vIHRoaXMgbG9vcFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHQwID0gdDE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dDEgPSBwcFsgKysgaTEgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHQgPCB0MSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyB3ZSBoYXZlIGFycml2ZWQgYXQgdGhlIHNvdWdodCBpbnRlcnZhbFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrIHNlZWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyBwcmVwYXJlIGJpbmFyeSBzZWFyY2ggb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGluZGV4XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmlnaHQgPSBwcC5sZW5ndGg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWsgbGluZWFyX3NjYW47XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vLSBzbG93ZXIgY29kZTpcXG5cXHRcXHRcXHRcXHRcXHRcXHQvLy1cXHRcXHRcXHRcXHRcXHRpZiAoIHQgPCB0MCB8fCB0MCA9PT0gdW5kZWZpbmVkICkge1xcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggISAoIHQgPj0gdDAgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyBsb29waW5nP1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciB0MWdsb2JhbCA9IHBwWyAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0IDwgdDFnbG9iYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aTEgPSAyOyAvLyArIDEsIHVzaW5nIHRoZSBzY2FuIGZvciB0aGUgZGV0YWlsc1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHQwID0gdDFnbG9iYWw7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIGxpbmVhciByZXZlcnNlIHNjYW5cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgZ2l2ZVVwQXQgPSBpMSAtIDI7IDsgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0MCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIGJlZm9yZSBzdGFydFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuX2NhY2hlZEluZGV4ID0gMDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5iZWZvcmVTdGFydF8oIDAsIHQsIHQxICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggaTEgPT09IGdpdmVVcEF0ICkgYnJlYWs7IC8vIHRoaXMgbG9vcFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHQxID0gdDA7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dDAgPSBwcFsgLS0gaTEgLSAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0ID49IHQwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIHdlIGhhdmUgYXJyaXZlZCBhdCB0aGUgc291Z2h0IGludGVydmFsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWsgc2VlaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIHByZXBhcmUgYmluYXJ5IHNlYXJjaCBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBpbmRleFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHJpZ2h0ID0gaTE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aTEgPSAwO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrIGxpbmVhcl9zY2FuO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyB0aGUgaW50ZXJ2YWwgaXMgdmFsaWRcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhayB2YWxpZGF0ZV9pbnRlcnZhbDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IC8vIGxpbmVhciBzY2FuXFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gYmluYXJ5IHNlYXJjaFxcblxcblxcdFxcdFxcdFxcdFxcdHdoaWxlICggaTEgPCByaWdodCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgbWlkID0gKCBpMSArIHJpZ2h0ICkgPj4+IDE7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0IDwgcHBbIG1pZCBdICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHJpZ2h0ID0gbWlkO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aTEgPSBtaWQgKyAxO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0dDEgPSBwcFsgaTEgXTtcXG5cXHRcXHRcXHRcXHRcXHR0MCA9IHBwWyBpMSAtIDEgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBjaGVjayBib3VuZGFyeSBjYXNlcywgYWdhaW5cXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHQwID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5fY2FjaGVkSW5kZXggPSAwO1xcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmJlZm9yZVN0YXJ0XyggMCwgdCwgdDEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB0MSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGkxID0gcHAubGVuZ3RoO1xcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuX2NhY2hlZEluZGV4ID0gaTE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuYWZ0ZXJFbmRfKCBpMSAtIDEsIHQwLCB0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0gLy8gc2Vla1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX2NhY2hlZEluZGV4ID0gaTE7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5pbnRlcnZhbENoYW5nZWRfKCBpMSwgdDAsIHQxICk7XFxuXFxuXFx0XFx0XFx0fSAvLyB2YWxpZGF0ZV9pbnRlcnZhbFxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmludGVycG9sYXRlXyggaTEsIHQwLCB0LCB0MSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0dGluZ3M6IG51bGwsIC8vIG9wdGlvbmFsLCBzdWJjbGFzcy1zcGVjaWZpYyBzZXR0aW5ncyBzdHJ1Y3R1cmVcXG5cXHRcXHQvLyBOb3RlOiBUaGUgaW5kaXJlY3Rpb24gYWxsb3dzIGNlbnRyYWwgY29udHJvbCBvZiBtYW55IGludGVycG9sYW50cy5cXG5cXG5cXHRcXHQvLyAtLS0gUHJvdGVjdGVkIGludGVyZmFjZVxcblxcblxcdFxcdERlZmF1bHRTZXR0aW5nc186IHt9LFxcblxcblxcdFxcdGdldFNldHRpbmdzXzogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnNldHRpbmdzIHx8IHRoaXMuRGVmYXVsdFNldHRpbmdzXztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHlTYW1wbGVWYWx1ZV86IGZ1bmN0aW9uICggaW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0Ly8gY29waWVzIGEgc2FtcGxlIHZhbHVlIHRvIHRoZSByZXN1bHQgYnVmZmVyXFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IHRoaXMucmVzdWx0QnVmZmVyLFxcblxcdFxcdFxcdFxcdHZhbHVlcyA9IHRoaXMuc2FtcGxlVmFsdWVzLFxcblxcdFxcdFxcdFxcdHN0cmlkZSA9IHRoaXMudmFsdWVTaXplLFxcblxcdFxcdFxcdFxcdG9mZnNldCA9IGluZGV4ICogc3RyaWRlO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gc3RyaWRlOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdHJlc3VsdFsgaSBdID0gdmFsdWVzWyBvZmZzZXQgKyBpIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBUZW1wbGF0ZSBtZXRob2RzIGZvciBkZXJpdmVkIGNsYXNzZXM6XFxuXFxuXFx0XFx0aW50ZXJwb2xhdGVfOiBmdW5jdGlvbiAoIC8qIGkxLCB0MCwgdCwgdDEgKi8gKSB7XFxuXFxuXFx0XFx0XFx0dGhyb3cgbmV3IEVycm9yKCAnY2FsbCB0byBhYnN0cmFjdCBtZXRob2QnICk7XFxuXFx0XFx0XFx0Ly8gaW1wbGVtZW50YXRpb25zIHNoYWxsIHJldHVybiB0aGlzLnJlc3VsdEJ1ZmZlclxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aW50ZXJ2YWxDaGFuZ2VkXzogZnVuY3Rpb24gKCAvKiBpMSwgdDAsIHQxICovICkge1xcblxcblxcdFxcdFxcdC8vIGVtcHR5XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvLyFcXFxcIERFQ0xBUkUgQUxJQVMgQUZURVIgYXNzaWduIHByb3RvdHlwZSAhXFxuXFx0T2JqZWN0LmFzc2lnbiggSW50ZXJwb2xhbnQucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Ly8oIDAsIHQsIHQwICksIHJldHVybnMgdGhpcy5yZXN1bHRCdWZmZXJcXG5cXHRcXHRiZWZvcmVTdGFydF86IEludGVycG9sYW50LnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfLFxcblxcblxcdFxcdC8vKCBOLTEsIHROLTEsIHQgKSwgcmV0dXJucyB0aGlzLnJlc3VsdEJ1ZmZlclxcblxcdFxcdGFmdGVyRW5kXzogSW50ZXJwb2xhbnQucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV8sXFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIFNwaGVyaWNhbCBsaW5lYXIgdW5pdCBxdWF0ZXJuaW9uIGludGVycG9sYW50LlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudCggcGFyYW1ldGVyUG9zaXRpb25zLCBzYW1wbGVWYWx1ZXMsIHNhbXBsZVNpemUsIHJlc3VsdEJ1ZmZlciApIHtcXG5cXG5cXHRcXHRJbnRlcnBvbGFudC5jYWxsKCB0aGlzLCBwYXJhbWV0ZXJQb3NpdGlvbnMsIHNhbXBsZVZhbHVlcywgc2FtcGxlU2l6ZSwgcmVzdWx0QnVmZmVyICk7XFxuXFxuXFx0fVxcblxcblxcdFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudC5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBJbnRlcnBvbGFudC5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBRdWF0ZXJuaW9uTGluZWFySW50ZXJwb2xhbnQsXFxuXFxuXFx0XFx0aW50ZXJwb2xhdGVfOiBmdW5jdGlvbiAoIGkxLCB0MCwgdCwgdDEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJlc3VsdCA9IHRoaXMucmVzdWx0QnVmZmVyLFxcblxcdFxcdFxcdFxcdHZhbHVlcyA9IHRoaXMuc2FtcGxlVmFsdWVzLFxcblxcdFxcdFxcdFxcdHN0cmlkZSA9IHRoaXMudmFsdWVTaXplLFxcblxcblxcdFxcdFxcdFxcdG9mZnNldCA9IGkxICogc3RyaWRlLFxcblxcblxcdFxcdFxcdFxcdGFscGhhID0gKCB0IC0gdDAgKSAvICggdDEgLSB0MCApO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBlbmQgPSBvZmZzZXQgKyBzdHJpZGU7IG9mZnNldCAhPT0gZW5kOyBvZmZzZXQgKz0gNCApIHtcXG5cXG5cXHRcXHRcXHRcXHRRdWF0ZXJuaW9uLnNsZXJwRmxhdCggcmVzdWx0LCAwLCB2YWx1ZXMsIG9mZnNldCAtIHN0cmlkZSwgdmFsdWVzLCBvZmZzZXQsIGFscGhhICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKlxcblxcdCAqIEEgVHJhY2sgb2YgcXVhdGVybmlvbiBrZXlmcmFtZSB2YWx1ZXMuXFxuXFx0ICpcXG5cXHQgKiBAYXV0aG9yIEJlbiBIb3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvL1xcblxcdCAqIEBhdXRob3IgRGF2aWQgU2Fybm8gLyBodHRwOi8vbGlnaHRoYXVzLnVzL1xcblxcdCAqIEBhdXRob3IgdHNjaHdcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBRdWF0ZXJuaW9uS2V5ZnJhbWVUcmFjayggbmFtZSwgdGltZXMsIHZhbHVlcywgaW50ZXJwb2xhdGlvbiApIHtcXG5cXG5cXHRcXHRLZXlmcmFtZVRyYWNrLmNhbGwoIHRoaXMsIG5hbWUsIHRpbWVzLCB2YWx1ZXMsIGludGVycG9sYXRpb24gKTtcXG5cXG5cXHR9XFxuXFxuXFx0UXVhdGVybmlvbktleWZyYW1lVHJhY2sucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggS2V5ZnJhbWVUcmFjay5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBRdWF0ZXJuaW9uS2V5ZnJhbWVUcmFjayxcXG5cXG5cXHRcXHRWYWx1ZVR5cGVOYW1lOiAncXVhdGVybmlvbicsXFxuXFxuXFx0XFx0Ly8gVmFsdWVCdWZmZXJUeXBlIGlzIGluaGVyaXRlZFxcblxcblxcdFxcdERlZmF1bHRJbnRlcnBvbGF0aW9uOiBJbnRlcnBvbGF0ZUxpbmVhcixcXG5cXG5cXHRcXHRJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6IGZ1bmN0aW9uICggcmVzdWx0ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgUXVhdGVybmlvbkxpbmVhckludGVycG9sYW50KCB0aGlzLnRpbWVzLCB0aGlzLnZhbHVlcywgdGhpcy5nZXRWYWx1ZVNpemUoKSwgcmVzdWx0ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6IHVuZGVmaW5lZCAvLyBub3QgeWV0IGltcGxlbWVudGVkXFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqXFxuXFx0ICogQSBUcmFjayBvZiBrZXlmcmFtZSB2YWx1ZXMgdGhhdCByZXByZXNlbnQgY29sb3IuXFxuXFx0ICpcXG5cXHQgKlxcblxcdCAqIEBhdXRob3IgQmVuIEhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW8vXFxuXFx0ICogQGF1dGhvciBEYXZpZCBTYXJubyAvIGh0dHA6Ly9saWdodGhhdXMudXMvXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIENvbG9yS2V5ZnJhbWVUcmFjayggbmFtZSwgdGltZXMsIHZhbHVlcywgaW50ZXJwb2xhdGlvbiApIHtcXG5cXG5cXHRcXHRLZXlmcmFtZVRyYWNrLmNhbGwoIHRoaXMsIG5hbWUsIHRpbWVzLCB2YWx1ZXMsIGludGVycG9sYXRpb24gKTtcXG5cXG5cXHR9XFxuXFxuXFx0Q29sb3JLZXlmcmFtZVRyYWNrLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEtleWZyYW1lVHJhY2sucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogQ29sb3JLZXlmcmFtZVRyYWNrLFxcblxcblxcdFxcdFZhbHVlVHlwZU5hbWU6ICdjb2xvcidcXG5cXG5cXHRcXHQvLyBWYWx1ZUJ1ZmZlclR5cGUgaXMgaW5oZXJpdGVkXFxuXFxuXFx0XFx0Ly8gRGVmYXVsdEludGVycG9sYXRpb24gaXMgaW5oZXJpdGVkXFxuXFxuXFx0XFx0Ly8gTm90ZTogVmVyeSBiYXNpYyBpbXBsZW1lbnRhdGlvbiBhbmQgbm90aGluZyBzcGVjaWFsIHlldC5cXG5cXHRcXHQvLyBIb3dldmVyLCB0aGlzIGlzIHRoZSBwbGFjZSBmb3IgY29sb3Igc3BhY2UgcGFyYW1ldGVyaXphdGlvbi5cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICpcXG5cXHQgKiBBIFRyYWNrIG9mIG51bWVyaWMga2V5ZnJhbWUgdmFsdWVzLlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciBCZW4gSG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pby9cXG5cXHQgKiBAYXV0aG9yIERhdmlkIFNhcm5vIC8gaHR0cDovL2xpZ2h0aGF1cy51cy9cXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTnVtYmVyS2V5ZnJhbWVUcmFjayggbmFtZSwgdGltZXMsIHZhbHVlcywgaW50ZXJwb2xhdGlvbiApIHtcXG5cXG5cXHRcXHRLZXlmcmFtZVRyYWNrLmNhbGwoIHRoaXMsIG5hbWUsIHRpbWVzLCB2YWx1ZXMsIGludGVycG9sYXRpb24gKTtcXG5cXG5cXHR9XFxuXFxuXFx0TnVtYmVyS2V5ZnJhbWVUcmFjay5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBLZXlmcmFtZVRyYWNrLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IE51bWJlcktleWZyYW1lVHJhY2ssXFxuXFxuXFx0XFx0VmFsdWVUeXBlTmFtZTogJ251bWJlcidcXG5cXG5cXHRcXHQvLyBWYWx1ZUJ1ZmZlclR5cGUgaXMgaW5oZXJpdGVkXFxuXFxuXFx0XFx0Ly8gRGVmYXVsdEludGVycG9sYXRpb24gaXMgaW5oZXJpdGVkXFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEZhc3QgYW5kIHNpbXBsZSBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhbnQuXFxuXFx0ICpcXG5cXHQgKiBJdCB3YXMgZGVyaXZlZCBmcm9tIGEgSGVybWl0aWFuIGNvbnN0cnVjdGlvbiBzZXR0aW5nIHRoZSBmaXJzdCBkZXJpdmF0aXZlXFxuXFx0ICogYXQgZWFjaCBzYW1wbGUgcG9zaXRpb24gdG8gdGhlIGxpbmVhciBzbG9wZSBiZXR3ZWVuIG5laWdoYm9yaW5nIHBvc2l0aW9uc1xcblxcdCAqIG92ZXIgdGhlaXIgcGFyYW1ldGVyIGludGVydmFsLlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEN1YmljSW50ZXJwb2xhbnQoIHBhcmFtZXRlclBvc2l0aW9ucywgc2FtcGxlVmFsdWVzLCBzYW1wbGVTaXplLCByZXN1bHRCdWZmZXIgKSB7XFxuXFxuXFx0XFx0SW50ZXJwb2xhbnQuY2FsbCggdGhpcywgcGFyYW1ldGVyUG9zaXRpb25zLCBzYW1wbGVWYWx1ZXMsIHNhbXBsZVNpemUsIHJlc3VsdEJ1ZmZlciApO1xcblxcblxcdFxcdHRoaXMuX3dlaWdodFByZXYgPSAtIDA7XFxuXFx0XFx0dGhpcy5fb2Zmc2V0UHJldiA9IC0gMDtcXG5cXHRcXHR0aGlzLl93ZWlnaHROZXh0ID0gLSAwO1xcblxcdFxcdHRoaXMuX29mZnNldE5leHQgPSAtIDA7XFxuXFxuXFx0fVxcblxcblxcdEN1YmljSW50ZXJwb2xhbnQucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggSW50ZXJwb2xhbnQucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogQ3ViaWNJbnRlcnBvbGFudCxcXG5cXG5cXHRcXHREZWZhdWx0U2V0dGluZ3NfOiB7XFxuXFxuXFx0XFx0XFx0ZW5kaW5nU3RhcnQ6IFplcm9DdXJ2YXR1cmVFbmRpbmcsXFxuXFx0XFx0XFx0ZW5kaW5nRW5kOiBaZXJvQ3VydmF0dXJlRW5kaW5nXFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRpbnRlcnZhbENoYW5nZWRfOiBmdW5jdGlvbiAoIGkxLCB0MCwgdDEgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHBwID0gdGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnMsXFxuXFx0XFx0XFx0XFx0aVByZXYgPSBpMSAtIDIsXFxuXFx0XFx0XFx0XFx0aU5leHQgPSBpMSArIDEsXFxuXFxuXFx0XFx0XFx0XFx0dFByZXYgPSBwcFsgaVByZXYgXSxcXG5cXHRcXHRcXHRcXHR0TmV4dCA9IHBwWyBpTmV4dCBdO1xcblxcblxcdFxcdFxcdGlmICggdFByZXYgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRzd2l0Y2ggKCB0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgWmVyb1Nsb3BlRW5kaW5nOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIGYnKHQwKSA9IDBcXG5cXHRcXHRcXHRcXHRcXHRcXHRpUHJldiA9IGkxO1xcblxcdFxcdFxcdFxcdFxcdFxcdHRQcmV2ID0gMiAqIHQwIC0gdDE7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSBXcmFwQXJvdW5kRW5kaW5nOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIHVzZSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjdXJ2ZVxcblxcdFxcdFxcdFxcdFxcdFxcdGlQcmV2ID0gcHAubGVuZ3RoIC0gMjtcXG5cXHRcXHRcXHRcXHRcXHRcXHR0UHJldiA9IHQwICsgcHBbIGlQcmV2IF0gLSBwcFsgaVByZXYgKyAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZGVmYXVsdDogLy8gWmVyb0N1cnZhdHVyZUVuZGluZ1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIGYnJyh0MCkgPSAwIGEuay5hLiBOYXR1cmFsIFNwbGluZVxcblxcdFxcdFxcdFxcdFxcdFxcdGlQcmV2ID0gaTE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dFByZXYgPSB0MTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdE5leHQgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRzd2l0Y2ggKCB0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ0VuZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlIFplcm9TbG9wZUVuZGluZzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBmJyh0TikgPSAwXFxuXFx0XFx0XFx0XFx0XFx0XFx0aU5leHQgPSBpMTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR0TmV4dCA9IDIgKiB0MSAtIHQwO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgV3JhcEFyb3VuZEVuZGluZzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyB1c2UgdGhlIG90aGVyIGVuZCBvZiB0aGUgY3VydmVcXG5cXHRcXHRcXHRcXHRcXHRcXHRpTmV4dCA9IDE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dE5leHQgPSB0MSArIHBwWyAxIF0gLSBwcFsgMCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGRlZmF1bHQ6IC8vIFplcm9DdXJ2YXR1cmVFbmRpbmdcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBmJycodE4pID0gMCwgYS5rLmEuIE5hdHVyYWwgU3BsaW5lXFxuXFx0XFx0XFx0XFx0XFx0XFx0aU5leHQgPSBpMSAtIDE7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dE5leHQgPSB0MDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBoYWxmRHQgPSAoIHQxIC0gdDAgKSAqIDAuNSxcXG5cXHRcXHRcXHRcXHRzdHJpZGUgPSB0aGlzLnZhbHVlU2l6ZTtcXG5cXG5cXHRcXHRcXHR0aGlzLl93ZWlnaHRQcmV2ID0gaGFsZkR0IC8gKCB0MCAtIHRQcmV2ICk7XFxuXFx0XFx0XFx0dGhpcy5fd2VpZ2h0TmV4dCA9IGhhbGZEdCAvICggdE5leHQgLSB0MSApO1xcblxcdFxcdFxcdHRoaXMuX29mZnNldFByZXYgPSBpUHJldiAqIHN0cmlkZTtcXG5cXHRcXHRcXHR0aGlzLl9vZmZzZXROZXh0ID0gaU5leHQgKiBzdHJpZGU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRpbnRlcnBvbGF0ZV86IGZ1bmN0aW9uICggaTEsIHQwLCB0LCB0MSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gdGhpcy5yZXN1bHRCdWZmZXIsXFxuXFx0XFx0XFx0XFx0dmFsdWVzID0gdGhpcy5zYW1wbGVWYWx1ZXMsXFxuXFx0XFx0XFx0XFx0c3RyaWRlID0gdGhpcy52YWx1ZVNpemUsXFxuXFxuXFx0XFx0XFx0XFx0bzEgPSBpMSAqIHN0cmlkZSxcXHRcXHRvMCA9IG8xIC0gc3RyaWRlLFxcblxcdFxcdFxcdFxcdG9QID0gdGhpcy5fb2Zmc2V0UHJldiwgXFx0b04gPSB0aGlzLl9vZmZzZXROZXh0LFxcblxcdFxcdFxcdFxcdHdQID0gdGhpcy5fd2VpZ2h0UHJldixcXHR3TiA9IHRoaXMuX3dlaWdodE5leHQsXFxuXFxuXFx0XFx0XFx0XFx0cCA9ICggdCAtIHQwICkgLyAoIHQxIC0gdDAgKSxcXG5cXHRcXHRcXHRcXHRwcCA9IHAgKiBwLFxcblxcdFxcdFxcdFxcdHBwcCA9IHBwICogcDtcXG5cXG5cXHRcXHRcXHQvLyBldmFsdWF0ZSBwb2x5bm9taWFsc1xcblxcblxcdFxcdFxcdHZhciBzUCA9IC0gd1AgKiBwcHAgKyAyICogd1AgKiBwcCAtIHdQICogcDtcXG5cXHRcXHRcXHR2YXIgczAgPSAoIDEgKyB3UCApICogcHBwICsgKCAtIDEuNSAtIDIgKiB3UCApICogcHAgKyAoIC0gMC41ICsgd1AgKSAqIHAgKyAxO1xcblxcdFxcdFxcdHZhciBzMSA9ICggLSAxIC0gd04gKSAqIHBwcCArICggMS41ICsgd04gKSAqIHBwICsgMC41ICogcDtcXG5cXHRcXHRcXHR2YXIgc04gPSB3TiAqIHBwcCAtIHdOICogcHA7XFxuXFxuXFx0XFx0XFx0Ly8gY29tYmluZSBkYXRhIGxpbmVhcmx5XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpICE9PSBzdHJpZGU7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVzdWx0WyBpIF0gPVxcblxcdFxcdFxcdFxcdFxcdFxcdHNQICogdmFsdWVzWyBvUCArIGkgXSArXFxuXFx0XFx0XFx0XFx0XFx0XFx0czAgKiB2YWx1ZXNbIG8wICsgaSBdICtcXG5cXHRcXHRcXHRcXHRcXHRcXHRzMSAqIHZhbHVlc1sgbzEgKyBpIF0gK1xcblxcdFxcdFxcdFxcdFxcdFxcdHNOICogdmFsdWVzWyBvTiArIGkgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgdHNjaHdcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBMaW5lYXJJbnRlcnBvbGFudCggcGFyYW1ldGVyUG9zaXRpb25zLCBzYW1wbGVWYWx1ZXMsIHNhbXBsZVNpemUsIHJlc3VsdEJ1ZmZlciApIHtcXG5cXG5cXHRcXHRJbnRlcnBvbGFudC5jYWxsKCB0aGlzLCBwYXJhbWV0ZXJQb3NpdGlvbnMsIHNhbXBsZVZhbHVlcywgc2FtcGxlU2l6ZSwgcmVzdWx0QnVmZmVyICk7XFxuXFxuXFx0fVxcblxcblxcdExpbmVhckludGVycG9sYW50LnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEludGVycG9sYW50LnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IExpbmVhckludGVycG9sYW50LFxcblxcblxcdFxcdGludGVycG9sYXRlXzogZnVuY3Rpb24gKCBpMSwgdDAsIHQsIHQxICkge1xcblxcblxcdFxcdFxcdHZhciByZXN1bHQgPSB0aGlzLnJlc3VsdEJ1ZmZlcixcXG5cXHRcXHRcXHRcXHR2YWx1ZXMgPSB0aGlzLnNhbXBsZVZhbHVlcyxcXG5cXHRcXHRcXHRcXHRzdHJpZGUgPSB0aGlzLnZhbHVlU2l6ZSxcXG5cXG5cXHRcXHRcXHRcXHRvZmZzZXQxID0gaTEgKiBzdHJpZGUsXFxuXFx0XFx0XFx0XFx0b2Zmc2V0MCA9IG9mZnNldDEgLSBzdHJpZGUsXFxuXFxuXFx0XFx0XFx0XFx0d2VpZ2h0MSA9ICggdCAtIHQwICkgLyAoIHQxIC0gdDAgKSxcXG5cXHRcXHRcXHRcXHR3ZWlnaHQwID0gMSAtIHdlaWdodDE7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpICE9PSBzdHJpZGU7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmVzdWx0WyBpIF0gPVxcblxcdFxcdFxcdFxcdFxcdFxcdHZhbHVlc1sgb2Zmc2V0MCArIGkgXSAqIHdlaWdodDAgK1xcblxcdFxcdFxcdFxcdFxcdFxcdHZhbHVlc1sgb2Zmc2V0MSArIGkgXSAqIHdlaWdodDE7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKlxcblxcdCAqIEludGVycG9sYW50IHRoYXQgZXZhbHVhdGVzIHRvIHRoZSBzYW1wbGUgdmFsdWUgYXQgdGhlIHBvc2l0aW9uIHByZWNlZWRpbmdcXG5cXHQgKiB0aGUgcGFyYW1ldGVyLlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIERpc2NyZXRlSW50ZXJwb2xhbnQoIHBhcmFtZXRlclBvc2l0aW9ucywgc2FtcGxlVmFsdWVzLCBzYW1wbGVTaXplLCByZXN1bHRCdWZmZXIgKSB7XFxuXFxuXFx0XFx0SW50ZXJwb2xhbnQuY2FsbCggdGhpcywgcGFyYW1ldGVyUG9zaXRpb25zLCBzYW1wbGVWYWx1ZXMsIHNhbXBsZVNpemUsIHJlc3VsdEJ1ZmZlciApO1xcblxcblxcdH1cXG5cXG5cXHREaXNjcmV0ZUludGVycG9sYW50LnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEludGVycG9sYW50LnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IERpc2NyZXRlSW50ZXJwb2xhbnQsXFxuXFxuXFx0XFx0aW50ZXJwb2xhdGVfOiBmdW5jdGlvbiAoIGkxIC8qLCB0MCwgdCwgdDEgKi8gKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuY29weVNhbXBsZVZhbHVlXyggaTEgLSAxICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICogQGF1dGhvciBCZW4gSG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pby9cXG5cXHQgKiBAYXV0aG9yIERhdmlkIFNhcm5vIC8gaHR0cDovL2xpZ2h0aGF1cy51cy9cXG5cXHQgKi9cXG5cXG5cXHR2YXIgQW5pbWF0aW9uVXRpbHMgPSB7XFxuXFxuXFx0XFx0Ly8gc2FtZSBhcyBBcnJheS5wcm90b3R5cGUuc2xpY2UsIGJ1dCBhbHNvIHdvcmtzIG9uIHR5cGVkIGFycmF5c1xcblxcdFxcdGFycmF5U2xpY2U6IGZ1bmN0aW9uICggYXJyYXksIGZyb20sIHRvICkge1xcblxcblxcdFxcdFxcdGlmICggQW5pbWF0aW9uVXRpbHMuaXNUeXBlZEFycmF5KCBhcnJheSApICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGluIGlvczkgYXJyYXkuc3ViYXJyYXkoZnJvbSwgdW5kZWZpbmVkKSB3aWxsIHJldHVybiBlbXB0eSBhcnJheVxcblxcdFxcdFxcdFxcdC8vIGJ1dCBhcnJheS5zdWJhcnJheShmcm9tKSBvciBhcnJheS5zdWJhcnJheShmcm9tLCBsZW4pIGlzIGNvcnJlY3RcXG5cXHRcXHRcXHRcXHRyZXR1cm4gbmV3IGFycmF5LmNvbnN0cnVjdG9yKCBhcnJheS5zdWJhcnJheSggZnJvbSwgdG8gIT09IHVuZGVmaW5lZCA/IHRvIDogYXJyYXkubGVuZ3RoICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGFycmF5LnNsaWNlKCBmcm9tLCB0byApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gY29udmVydHMgYW4gYXJyYXkgdG8gYSBzcGVjaWZpYyB0eXBlXFxuXFx0XFx0Y29udmVydEFycmF5OiBmdW5jdGlvbiAoIGFycmF5LCB0eXBlLCBmb3JjZUNsb25lICkge1xcblxcblxcdFxcdFxcdGlmICggISBhcnJheSB8fCAvLyBsZXQgJ3VuZGVmaW5lZCcgYW5kICdudWxsJyBwYXNzXFxuXFx0XFx0XFx0XFx0XFx0ISBmb3JjZUNsb25lICYmIGFycmF5LmNvbnN0cnVjdG9yID09PSB0eXBlICkgcmV0dXJuIGFycmF5O1xcblxcblxcdFxcdFxcdGlmICggdHlwZW9mIHR5cGUuQllURVNfUEVSX0VMRU1FTlQgPT09ICdudW1iZXInICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBuZXcgdHlwZSggYXJyYXkgKTsgLy8gY3JlYXRlIHR5cGVkIGFycmF5XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXJyYXkgKTsgLy8gY3JlYXRlIEFycmF5XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRpc1R5cGVkQXJyYXk6IGZ1bmN0aW9uICggb2JqZWN0ICkge1xcblxcblxcdFxcdFxcdHJldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoIG9iamVjdCApICYmXFxuXFx0XFx0XFx0XFx0XFx0ISAoIG9iamVjdCBpbnN0YW5jZW9mIERhdGFWaWV3ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyByZXR1cm5zIGFuIGFycmF5IGJ5IHdoaWNoIHRpbWVzIGFuZCB2YWx1ZXMgY2FuIGJlIHNvcnRlZFxcblxcdFxcdGdldEtleWZyYW1lT3JkZXI6IGZ1bmN0aW9uICggdGltZXMgKSB7XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gY29tcGFyZVRpbWUoIGksIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRpbWVzWyBpIF0gLSB0aW1lc1sgaiBdO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgbiA9IHRpbWVzLmxlbmd0aDtcXG5cXHRcXHRcXHR2YXIgcmVzdWx0ID0gbmV3IEFycmF5KCBuICk7XFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpICE9PSBuOyArKyBpICkgcmVzdWx0WyBpIF0gPSBpO1xcblxcblxcdFxcdFxcdHJlc3VsdC5zb3J0KCBjb21wYXJlVGltZSApO1xcblxcblxcdFxcdFxcdHJldHVybiByZXN1bHQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyB1c2VzIHRoZSBhcnJheSBwcmV2aW91c2x5IHJldHVybmVkIGJ5ICdnZXRLZXlmcmFtZU9yZGVyJyB0byBzb3J0IGRhdGFcXG5cXHRcXHRzb3J0ZWRBcnJheTogZnVuY3Rpb24gKCB2YWx1ZXMsIHN0cmlkZSwgb3JkZXIgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG5WYWx1ZXMgPSB2YWx1ZXMubGVuZ3RoO1xcblxcdFxcdFxcdHZhciByZXN1bHQgPSBuZXcgdmFsdWVzLmNvbnN0cnVjdG9yKCBuVmFsdWVzICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBkc3RPZmZzZXQgPSAwOyBkc3RPZmZzZXQgIT09IG5WYWx1ZXM7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHNyY09mZnNldCA9IG9yZGVyWyBpIF0gKiBzdHJpZGU7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwOyBqICE9PSBzdHJpZGU7ICsrIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmVzdWx0WyBkc3RPZmZzZXQgKysgXSA9IHZhbHVlc1sgc3JjT2Zmc2V0ICsgaiBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIGZ1bmN0aW9uIGZvciBwYXJzaW5nIEFPUyBrZXlmcmFtZSBmb3JtYXRzXFxuXFx0XFx0ZmxhdHRlbkpTT046IGZ1bmN0aW9uICgganNvbktleXMsIHRpbWVzLCB2YWx1ZXMsIHZhbHVlUHJvcGVydHlOYW1lICkge1xcblxcblxcdFxcdFxcdHZhciBpID0gMSwga2V5ID0ganNvbktleXNbIDAgXTtcXG5cXG5cXHRcXHRcXHR3aGlsZSAoIGtleSAhPT0gdW5kZWZpbmVkICYmIGtleVsgdmFsdWVQcm9wZXJ0eU5hbWUgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGtleSA9IGpzb25LZXlzWyBpICsrIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSByZXR1cm47IC8vIG5vIGRhdGFcXG5cXG5cXHRcXHRcXHR2YXIgdmFsdWUgPSBrZXlbIHZhbHVlUHJvcGVydHlOYW1lIF07XFxuXFx0XFx0XFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgcmV0dXJuOyAvLyBubyBkYXRhXFxuXFxuXFx0XFx0XFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xcblxcblxcdFxcdFxcdFxcdGRvIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YWx1ZSA9IGtleVsgdmFsdWVQcm9wZXJ0eU5hbWUgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGltZXMucHVzaCgga2V5LnRpbWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YWx1ZXMucHVzaC5hcHBseSggdmFsdWVzLCB2YWx1ZSApOyAvLyBwdXNoIGFsbCBlbGVtZW50c1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRrZXkgPSBqc29uS2V5c1sgaSArKyBdO1xcblxcblxcdFxcdFxcdFxcdH0gd2hpbGUgKCBrZXkgIT09IHVuZGVmaW5lZCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIHZhbHVlLnRvQXJyYXkgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyAuLi5hc3N1bWUgVEhSRUUuTWF0aC1pc2hcXG5cXG5cXHRcXHRcXHRcXHRkbyB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFsdWUgPSBrZXlbIHZhbHVlUHJvcGVydHlOYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRpbWVzLnB1c2goIGtleS50aW1lICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFsdWUudG9BcnJheSggdmFsdWVzLCB2YWx1ZXMubGVuZ3RoICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGtleSA9IGpzb25LZXlzWyBpICsrIF07XFxuXFxuXFx0XFx0XFx0XFx0fSB3aGlsZSAoIGtleSAhPT0gdW5kZWZpbmVkICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBvdGhlcndpc2UgcHVzaCBhcy1pc1xcblxcblxcdFxcdFxcdFxcdGRvIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YWx1ZSA9IGtleVsgdmFsdWVQcm9wZXJ0eU5hbWUgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGltZXMucHVzaCgga2V5LnRpbWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YWx1ZXMucHVzaCggdmFsdWUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0a2V5ID0ganNvbktleXNbIGkgKysgXTtcXG5cXG5cXHRcXHRcXHRcXHR9IHdoaWxlICgga2V5ICE9PSB1bmRlZmluZWQgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICpcXG5cXHQgKiBBIHRpbWVkIHNlcXVlbmNlIG9mIGtleWZyYW1lcyBmb3IgYSBzcGVjaWZpYyBwcm9wZXJ0eS5cXG5cXHQgKlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciBCZW4gSG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pby9cXG5cXHQgKiBAYXV0aG9yIERhdmlkIFNhcm5vIC8gaHR0cDovL2xpZ2h0aGF1cy51cy9cXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gS2V5ZnJhbWVUcmFjayggbmFtZSwgdGltZXMsIHZhbHVlcywgaW50ZXJwb2xhdGlvbiApIHtcXG5cXG5cXHRcXHRpZiAoIG5hbWUgPT09IHVuZGVmaW5lZCApIHRocm93IG5ldyBFcnJvciggJ1RIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkJyApO1xcblxcdFxcdGlmICggdGltZXMgPT09IHVuZGVmaW5lZCB8fCB0aW1lcy5sZW5ndGggPT09IDAgKSB0aHJvdyBuZXcgRXJyb3IoICdUSFJFRS5LZXlmcmFtZVRyYWNrOiBubyBrZXlmcmFtZXMgaW4gdHJhY2sgbmFtZWQgJyArIG5hbWUgKTtcXG5cXG5cXHRcXHR0aGlzLm5hbWUgPSBuYW1lO1xcblxcblxcdFxcdHRoaXMudGltZXMgPSBBbmltYXRpb25VdGlscy5jb252ZXJ0QXJyYXkoIHRpbWVzLCB0aGlzLlRpbWVCdWZmZXJUeXBlICk7XFxuXFx0XFx0dGhpcy52YWx1ZXMgPSBBbmltYXRpb25VdGlscy5jb252ZXJ0QXJyYXkoIHZhbHVlcywgdGhpcy5WYWx1ZUJ1ZmZlclR5cGUgKTtcXG5cXG5cXHRcXHR0aGlzLnNldEludGVycG9sYXRpb24oIGludGVycG9sYXRpb24gfHwgdGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbiApO1xcblxcblxcdFxcdHRoaXMudmFsaWRhdGUoKTtcXG5cXHRcXHR0aGlzLm9wdGltaXplKCk7XFxuXFxuXFx0fVxcblxcblxcdC8vIFN0YXRpYyBtZXRob2RzOlxcblxcblxcdE9iamVjdC5hc3NpZ24oIEtleWZyYW1lVHJhY2ssIHtcXG5cXG5cXHRcXHQvLyBTZXJpYWxpemF0aW9uIChpbiBzdGF0aWMgY29udGV4dCwgYmVjYXVzZSBvZiBjb25zdHJ1Y3RvciBpbnZvY2F0aW9uXFxuXFx0XFx0Ly8gYW5kIGF1dG9tYXRpYyBpbnZvY2F0aW9uIG9mIC50b0pTT04pOlxcblxcblxcdFxcdHBhcnNlOiBmdW5jdGlvbiAoIGpzb24gKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLnR5cGUgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aHJvdyBuZXcgRXJyb3IoICdUSFJFRS5LZXlmcmFtZVRyYWNrOiB0cmFjayB0eXBlIHVuZGVmaW5lZCwgY2FuIG5vdCBwYXJzZScgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHRyYWNrVHlwZSA9IEtleWZyYW1lVHJhY2suX2dldFRyYWNrVHlwZUZvclZhbHVlVHlwZU5hbWUoIGpzb24udHlwZSApO1xcblxcblxcdFxcdFxcdGlmICgganNvbi50aW1lcyA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB0aW1lcyA9IFtdLCB2YWx1ZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRBbmltYXRpb25VdGlscy5mbGF0dGVuSlNPTigganNvbi5rZXlzLCB0aW1lcywgdmFsdWVzLCAndmFsdWUnICk7XFxuXFxuXFx0XFx0XFx0XFx0anNvbi50aW1lcyA9IHRpbWVzO1xcblxcdFxcdFxcdFxcdGpzb24udmFsdWVzID0gdmFsdWVzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBkZXJpdmVkIGNsYXNzZXMgY2FuIGRlZmluZSBhIHN0YXRpYyBwYXJzZSBtZXRob2RcXG5cXHRcXHRcXHRpZiAoIHRyYWNrVHlwZS5wYXJzZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0cmFja1R5cGUucGFyc2UoIGpzb24gKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdC8vIGJ5IGRlZmF1bHQsIHdlIGFzc3VtZSBhIGNvbnN0cnVjdG9yIGNvbXBhdGlibGUgd2l0aCB0aGUgYmFzZVxcblxcdFxcdFxcdFxcdHJldHVybiBuZXcgdHJhY2tUeXBlKCBqc29uLm5hbWUsIGpzb24udGltZXMsIGpzb24udmFsdWVzLCBqc29uLmludGVycG9sYXRpb24gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR0b0pTT046IGZ1bmN0aW9uICggdHJhY2sgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRyYWNrVHlwZSA9IHRyYWNrLmNvbnN0cnVjdG9yO1xcblxcblxcdFxcdFxcdHZhciBqc29uO1xcblxcblxcdFxcdFxcdC8vIGRlcml2ZWQgY2xhc3NlcyBjYW4gZGVmaW5lIGEgc3RhdGljIHRvSlNPTiBtZXRob2RcXG5cXHRcXHRcXHRpZiAoIHRyYWNrVHlwZS50b0pTT04gIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRqc29uID0gdHJhY2tUeXBlLnRvSlNPTiggdHJhY2sgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdC8vIGJ5IGRlZmF1bHQsIHdlIGFzc3VtZSB0aGUgZGF0YSBjYW4gYmUgc2VyaWFsaXplZCBhcy1pc1xcblxcdFxcdFxcdFxcdGpzb24gPSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0J25hbWUnOiB0cmFjay5uYW1lLFxcblxcdFxcdFxcdFxcdFxcdCd0aW1lcyc6IEFuaW1hdGlvblV0aWxzLmNvbnZlcnRBcnJheSggdHJhY2sudGltZXMsIEFycmF5ICksXFxuXFx0XFx0XFx0XFx0XFx0J3ZhbHVlcyc6IEFuaW1hdGlvblV0aWxzLmNvbnZlcnRBcnJheSggdHJhY2sudmFsdWVzLCBBcnJheSApXFxuXFxuXFx0XFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaW50ZXJwb2xhdGlvbiA9IHRyYWNrLmdldEludGVycG9sYXRpb24oKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGludGVycG9sYXRpb24gIT09IHRyYWNrLkRlZmF1bHRJbnRlcnBvbGF0aW9uICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGpzb24uaW50ZXJwb2xhdGlvbiA9IGludGVycG9sYXRpb247XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRqc29uLnR5cGUgPSB0cmFjay5WYWx1ZVR5cGVOYW1lOyAvLyBtYW5kYXRvcnlcXG5cXG5cXHRcXHRcXHRyZXR1cm4ganNvbjtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdF9nZXRUcmFja1R5cGVGb3JWYWx1ZVR5cGVOYW1lOiBmdW5jdGlvbiAoIHR5cGVOYW1lICkge1xcblxcblxcdFxcdFxcdHN3aXRjaCAoIHR5cGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y2FzZSAnc2NhbGFyJzpcXG5cXHRcXHRcXHRcXHRjYXNlICdkb3VibGUnOlxcblxcdFxcdFxcdFxcdGNhc2UgJ2Zsb2F0JzpcXG5cXHRcXHRcXHRcXHRjYXNlICdudW1iZXInOlxcblxcdFxcdFxcdFxcdGNhc2UgJ2ludGVnZXInOlxcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBOdW1iZXJLZXlmcmFtZVRyYWNrO1xcblxcblxcdFxcdFxcdFxcdGNhc2UgJ3ZlY3Rvcic6XFxuXFx0XFx0XFx0XFx0Y2FzZSAndmVjdG9yMic6XFxuXFx0XFx0XFx0XFx0Y2FzZSAndmVjdG9yMyc6XFxuXFx0XFx0XFx0XFx0Y2FzZSAndmVjdG9yNCc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFZlY3RvcktleWZyYW1lVHJhY2s7XFxuXFxuXFx0XFx0XFx0XFx0Y2FzZSAnY29sb3InOlxcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBDb2xvcktleWZyYW1lVHJhY2s7XFxuXFxuXFx0XFx0XFx0XFx0Y2FzZSAncXVhdGVybmlvbic6XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFF1YXRlcm5pb25LZXlmcmFtZVRyYWNrO1xcblxcblxcdFxcdFxcdFxcdGNhc2UgJ2Jvb2wnOlxcblxcdFxcdFxcdFxcdGNhc2UgJ2Jvb2xlYW4nOlxcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBCb29sZWFuS2V5ZnJhbWVUcmFjaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlICdzdHJpbmcnOlxcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBTdHJpbmdLZXlmcmFtZVRyYWNrO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aHJvdyBuZXcgRXJyb3IoICdUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogJyArIHR5cGVOYW1lICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBLZXlmcmFtZVRyYWNrLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBLZXlmcmFtZVRyYWNrLFxcblxcblxcdFxcdFRpbWVCdWZmZXJUeXBlOiBGbG9hdDMyQXJyYXksXFxuXFxuXFx0XFx0VmFsdWVCdWZmZXJUeXBlOiBGbG9hdDMyQXJyYXksXFxuXFxuXFx0XFx0RGVmYXVsdEludGVycG9sYXRpb246IEludGVycG9sYXRlTGluZWFyLFxcblxcblxcdFxcdEludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlOiBmdW5jdGlvbiAoIHJlc3VsdCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IERpc2NyZXRlSW50ZXJwb2xhbnQoIHRoaXMudGltZXMsIHRoaXMudmFsdWVzLCB0aGlzLmdldFZhbHVlU2l6ZSgpLCByZXN1bHQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjogZnVuY3Rpb24gKCByZXN1bHQgKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyBMaW5lYXJJbnRlcnBvbGFudCggdGhpcy50aW1lcywgdGhpcy52YWx1ZXMsIHRoaXMuZ2V0VmFsdWVTaXplKCksIHJlc3VsdCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOiBmdW5jdGlvbiAoIHJlc3VsdCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IEN1YmljSW50ZXJwb2xhbnQoIHRoaXMudGltZXMsIHRoaXMudmFsdWVzLCB0aGlzLmdldFZhbHVlU2l6ZSgpLCByZXN1bHQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEludGVycG9sYXRpb246IGZ1bmN0aW9uICggaW50ZXJwb2xhdGlvbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZmFjdG9yeU1ldGhvZDtcXG5cXG5cXHRcXHRcXHRzd2l0Y2ggKCBpbnRlcnBvbGF0aW9uICkge1xcblxcblxcdFxcdFxcdFxcdGNhc2UgSW50ZXJwb2xhdGVEaXNjcmV0ZTpcXG5cXG5cXHRcXHRcXHRcXHRcXHRmYWN0b3J5TWV0aG9kID0gdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIEludGVycG9sYXRlTGluZWFyOlxcblxcblxcdFxcdFxcdFxcdFxcdGZhY3RvcnlNZXRob2QgPSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRjYXNlIEludGVycG9sYXRlU21vb3RoOlxcblxcblxcdFxcdFxcdFxcdFxcdGZhY3RvcnlNZXRob2QgPSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBmYWN0b3J5TWV0aG9kID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG1lc3NhZ2UgPSBcXFwidW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgXFxcIiArXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5WYWx1ZVR5cGVOYW1lICsgXFxcIiBrZXlmcmFtZSB0cmFjayBuYW1lZCBcXFwiICsgdGhpcy5uYW1lO1xcblxcblxcdFxcdFxcdFxcdGlmICggdGhpcy5jcmVhdGVJbnRlcnBvbGFudCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGZhbGwgYmFjayB0byBkZWZhdWx0LCB1bmxlc3MgdGhlIGRlZmF1bHQgaXRzZWxmIGlzIG1lc3NlZCB1cFxcblxcdFxcdFxcdFxcdFxcdGlmICggaW50ZXJwb2xhdGlvbiAhPT0gdGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0aGlzLnNldEludGVycG9sYXRpb24oIHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggbWVzc2FnZSApOyAvLyBmYXRhbCwgaW4gdGhpcyBjYXNlXFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5LZXlmcmFtZVRyYWNrOicsIG1lc3NhZ2UgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQgPSBmYWN0b3J5TWV0aG9kO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0SW50ZXJwb2xhdGlvbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHN3aXRjaCAoIHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlOlxcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBJbnRlcnBvbGF0ZURpc2NyZXRlO1xcblxcblxcdFxcdFxcdFxcdGNhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIEludGVycG9sYXRlTGluZWFyO1xcblxcblxcdFxcdFxcdFxcdGNhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIEludGVycG9sYXRlU21vb3RoO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldFZhbHVlU2l6ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGggLyB0aGlzLnRpbWVzLmxlbmd0aDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIG1vdmUgYWxsIGtleWZyYW1lcyBlaXRoZXIgZm9yd2FyZHMgb3IgYmFja3dhcmRzIGluIHRpbWVcXG5cXHRcXHRzaGlmdDogZnVuY3Rpb24gKCB0aW1lT2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGlmICggdGltZU9mZnNldCAhPT0gMC4wICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB0aW1lcyA9IHRoaXMudGltZXM7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gdGltZXMubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRpbWVzWyBpIF0gKz0gdGltZU9mZnNldDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gc2NhbGUgYWxsIGtleWZyYW1lIHRpbWVzIGJ5IGEgZmFjdG9yICh1c2VmdWwgZm9yIGZyYW1lIDwtPiBzZWNvbmRzIGNvbnZlcnNpb25zKVxcblxcdFxcdHNjYWxlOiBmdW5jdGlvbiAoIHRpbWVTY2FsZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRpbWVTY2FsZSAhPT0gMS4wICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB0aW1lcyA9IHRoaXMudGltZXM7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gdGltZXMubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRpbWVzWyBpIF0gKj0gdGltZVNjYWxlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyByZW1vdmVzIGtleWZyYW1lcyBiZWZvcmUgYW5kIGFmdGVyIGFuaW1hdGlvbiB3aXRob3V0IGNoYW5naW5nIGFueSB2YWx1ZXMgd2l0aGluIHRoZSByYW5nZSBbc3RhcnRUaW1lLCBlbmRUaW1lXS5cXG5cXHRcXHQvLyBJTVBPUlRBTlQ6IFdlIGRvIG5vdCBzaGlmdCBhcm91bmQga2V5cyB0byB0aGUgc3RhcnQgb2YgdGhlIHRyYWNrIHRpbWUsIGJlY2F1c2UgZm9yIGludGVycG9sYXRlZCBrZXlzIHRoaXMgd2lsbCBjaGFuZ2UgdGhlaXIgdmFsdWVzXFxuXFx0XFx0dHJpbTogZnVuY3Rpb24gKCBzdGFydFRpbWUsIGVuZFRpbWUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRpbWVzID0gdGhpcy50aW1lcyxcXG5cXHRcXHRcXHRcXHRuS2V5cyA9IHRpbWVzLmxlbmd0aCxcXG5cXHRcXHRcXHRcXHRmcm9tID0gMCxcXG5cXHRcXHRcXHRcXHR0byA9IG5LZXlzIC0gMTtcXG5cXG5cXHRcXHRcXHR3aGlsZSAoIGZyb20gIT09IG5LZXlzICYmIHRpbWVzWyBmcm9tIF0gPCBzdGFydFRpbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0KysgZnJvbTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0d2hpbGUgKCB0byAhPT0gLSAxICYmIHRpbWVzWyB0byBdID4gZW5kVGltZSApIHtcXG5cXG5cXHRcXHRcXHRcXHQtLSB0bztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0KysgdG87IC8vIGluY2x1c2l2ZSAtPiBleGNsdXNpdmUgYm91bmRcXG5cXG5cXHRcXHRcXHRpZiAoIGZyb20gIT09IDAgfHwgdG8gIT09IG5LZXlzICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGVtcHR5IHRyYWNrcyBhcmUgZm9yYmlkZGVuLCBzbyBrZWVwIGF0IGxlYXN0IG9uZSBrZXlmcmFtZVxcblxcdFxcdFxcdFxcdGlmICggZnJvbSA+PSB0byApIHRvID0gTWF0aC5tYXgoIHRvLCAxICksIGZyb20gPSB0byAtIDE7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHN0cmlkZSA9IHRoaXMuZ2V0VmFsdWVTaXplKCk7XFxuXFx0XFx0XFx0XFx0dGhpcy50aW1lcyA9IEFuaW1hdGlvblV0aWxzLmFycmF5U2xpY2UoIHRpbWVzLCBmcm9tLCB0byApO1xcblxcdFxcdFxcdFxcdHRoaXMudmFsdWVzID0gQW5pbWF0aW9uVXRpbHMuYXJyYXlTbGljZSggdGhpcy52YWx1ZXMsIGZyb20gKiBzdHJpZGUsIHRvICogc3RyaWRlICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gZW5zdXJlIHdlIGRvIG5vdCBnZXQgYSBHYXJiYWdlSW5HYXJiYWdlT3V0IHNpdHVhdGlvbiwgbWFrZSBzdXJlIHRyYWNrcyBhcmUgYXQgbGVhc3QgbWluaW1hbGx5IHZpYWJsZVxcblxcdFxcdHZhbGlkYXRlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHZhbGlkID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR2YXIgdmFsdWVTaXplID0gdGhpcy5nZXRWYWx1ZVNpemUoKTtcXG5cXHRcXHRcXHRpZiAoIHZhbHVlU2l6ZSAtIE1hdGguZmxvb3IoIHZhbHVlU2l6ZSApICE9PSAwICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5LZXlmcmFtZVRyYWNrOiBJbnZhbGlkIHZhbHVlIHNpemUgaW4gdHJhY2suJywgdGhpcyApO1xcblxcdFxcdFxcdFxcdHZhbGlkID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciB0aW1lcyA9IHRoaXMudGltZXMsXFxuXFx0XFx0XFx0XFx0dmFsdWVzID0gdGhpcy52YWx1ZXMsXFxuXFxuXFx0XFx0XFx0XFx0bktleXMgPSB0aW1lcy5sZW5ndGg7XFxuXFxuXFx0XFx0XFx0aWYgKCBuS2V5cyA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuS2V5ZnJhbWVUcmFjazogVHJhY2sgaXMgZW1wdHkuJywgdGhpcyApO1xcblxcdFxcdFxcdFxcdHZhbGlkID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBwcmV2VGltZSA9IG51bGw7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpICE9PSBuS2V5czsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgY3VyclRpbWUgPSB0aW1lc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggdHlwZW9mIGN1cnJUaW1lID09PSAnbnVtYmVyJyAmJiBpc05hTiggY3VyclRpbWUgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuJywgdGhpcywgaSwgY3VyclRpbWUgKTtcXG5cXHRcXHRcXHRcXHRcXHR2YWxpZCA9IGZhbHNlO1xcblxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHByZXZUaW1lICE9PSBudWxsICYmIHByZXZUaW1lID4gY3VyclRpbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLktleWZyYW1lVHJhY2s6IE91dCBvZiBvcmRlciBrZXlzLicsIHRoaXMsIGksIGN1cnJUaW1lLCBwcmV2VGltZSApO1xcblxcdFxcdFxcdFxcdFxcdHZhbGlkID0gZmFsc2U7XFxuXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHByZXZUaW1lID0gY3VyclRpbWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdmFsdWVzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBBbmltYXRpb25VdGlscy5pc1R5cGVkQXJyYXkoIHZhbHVlcyApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbiA9IHZhbHVlcy5sZW5ndGg7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHZhbHVlID0gdmFsdWVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBpc05hTiggdmFsdWUgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLicsIHRoaXMsIGksIHZhbHVlICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFsaWQgPSBmYWxzZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHZhbGlkO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gcmVtb3ZlcyBlcXVpdmFsZW50IHNlcXVlbnRpYWwga2V5cyBhcyBjb21tb24gaW4gbW9ycGggdGFyZ2V0IHNlcXVlbmNlc1xcblxcdFxcdC8vICgwLDAsMCwwLDEsMSwxLDAsMCwwLDAsMCwwLDApIC0tPiAoMCwwLDEsMSwwLDApXFxuXFx0XFx0b3B0aW1pemU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGltZXMgPSB0aGlzLnRpbWVzLFxcblxcdFxcdFxcdFxcdHZhbHVlcyA9IHRoaXMudmFsdWVzLFxcblxcdFxcdFxcdFxcdHN0cmlkZSA9IHRoaXMuZ2V0VmFsdWVTaXplKCksXFxuXFxuXFx0XFx0XFx0XFx0c21vb3RoSW50ZXJwb2xhdGlvbiA9IHRoaXMuZ2V0SW50ZXJwb2xhdGlvbigpID09PSBJbnRlcnBvbGF0ZVNtb290aCxcXG5cXG5cXHRcXHRcXHRcXHR3cml0ZUluZGV4ID0gMSxcXG5cXHRcXHRcXHRcXHRsYXN0SW5kZXggPSB0aW1lcy5sZW5ndGggLSAxO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMTsgaSA8IGxhc3RJbmRleDsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIga2VlcCA9IGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdHZhciB0aW1lID0gdGltZXNbIGkgXTtcXG5cXHRcXHRcXHRcXHR2YXIgdGltZU5leHQgPSB0aW1lc1sgaSArIDEgXTtcXG5cXG5cXHRcXHRcXHRcXHQvLyByZW1vdmUgYWRqYWNlbnQga2V5ZnJhbWVzIHNjaGVkdWxlZCBhdCB0aGUgc2FtZSB0aW1lXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0aW1lICE9PSB0aW1lTmV4dCAmJiAoIGkgIT09IDEgfHwgdGltZSAhPT0gdGltZVsgMCBdICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCAhIHNtb290aEludGVycG9sYXRpb24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gcmVtb3ZlIHVubmVjZXNzYXJ5IGtleWZyYW1lcyBzYW1lIGFzIHRoZWlyIG5laWdoYm9yc1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBvZmZzZXQgPSBpICogc3RyaWRlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG9mZnNldFAgPSBvZmZzZXQgLSBzdHJpZGUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0b2Zmc2V0TiA9IG9mZnNldCArIHN0cmlkZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaiA9IDA7IGogIT09IHN0cmlkZTsgKysgaiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgdmFsdWUgPSB2YWx1ZXNbIG9mZnNldCArIGogXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHZhbHVlICE9PSB2YWx1ZXNbIG9mZnNldFAgKyBqIF0gfHxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2YWx1ZSAhPT0gdmFsdWVzWyBvZmZzZXROICsgaiBdICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGtlZXAgPSB0cnVlO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRrZWVwID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdC8vIGluLXBsYWNlIGNvbXBhY3Rpb25cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGtlZXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBpICE9PSB3cml0ZUluZGV4ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRpbWVzWyB3cml0ZUluZGV4IF0gPSB0aW1lc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciByZWFkT2Zmc2V0ID0gaSAqIHN0cmlkZSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR3cml0ZU9mZnNldCA9IHdyaXRlSW5kZXggKiBzdHJpZGU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwOyBqICE9PSBzdHJpZGU7ICsrIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFsdWVzWyB3cml0ZU9mZnNldCArIGogXSA9IHZhbHVlc1sgcmVhZE9mZnNldCArIGogXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdCsrIHdyaXRlSW5kZXg7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBmbHVzaCBsYXN0IGtleWZyYW1lIChjb21wYWN0aW9uIGxvb2tzIGFoZWFkKVxcblxcblxcdFxcdFxcdGlmICggbGFzdEluZGV4ID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aW1lc1sgd3JpdGVJbmRleCBdID0gdGltZXNbIGxhc3RJbmRleCBdO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciByZWFkT2Zmc2V0ID0gbGFzdEluZGV4ICogc3RyaWRlLCB3cml0ZU9mZnNldCA9IHdyaXRlSW5kZXggKiBzdHJpZGUsIGogPSAwOyBqICE9PSBzdHJpZGU7ICsrIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFsdWVzWyB3cml0ZU9mZnNldCArIGogXSA9IHZhbHVlc1sgcmVhZE9mZnNldCArIGogXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Kysgd3JpdGVJbmRleDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB3cml0ZUluZGV4ICE9PSB0aW1lcy5sZW5ndGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy50aW1lcyA9IEFuaW1hdGlvblV0aWxzLmFycmF5U2xpY2UoIHRpbWVzLCAwLCB3cml0ZUluZGV4ICk7XFxuXFx0XFx0XFx0XFx0dGhpcy52YWx1ZXMgPSBBbmltYXRpb25VdGlscy5hcnJheVNsaWNlKCB2YWx1ZXMsIDAsIHdyaXRlSW5kZXggKiBzdHJpZGUgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKlxcblxcdCAqIEEgVHJhY2sgb2YgdmVjdG9yZWQga2V5ZnJhbWUgdmFsdWVzLlxcblxcdCAqXFxuXFx0ICpcXG5cXHQgKiBAYXV0aG9yIEJlbiBIb3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvL1xcblxcdCAqIEBhdXRob3IgRGF2aWQgU2Fybm8gLyBodHRwOi8vbGlnaHRoYXVzLnVzL1xcblxcdCAqIEBhdXRob3IgdHNjaHdcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBWZWN0b3JLZXlmcmFtZVRyYWNrKCBuYW1lLCB0aW1lcywgdmFsdWVzLCBpbnRlcnBvbGF0aW9uICkge1xcblxcblxcdFxcdEtleWZyYW1lVHJhY2suY2FsbCggdGhpcywgbmFtZSwgdGltZXMsIHZhbHVlcywgaW50ZXJwb2xhdGlvbiApO1xcblxcblxcdH1cXG5cXG5cXHRWZWN0b3JLZXlmcmFtZVRyYWNrLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEtleWZyYW1lVHJhY2sucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogVmVjdG9yS2V5ZnJhbWVUcmFjayxcXG5cXG5cXHRcXHRWYWx1ZVR5cGVOYW1lOiAndmVjdG9yJ1xcblxcblxcdFxcdC8vIFZhbHVlQnVmZmVyVHlwZSBpcyBpbmhlcml0ZWRcXG5cXG5cXHRcXHQvLyBEZWZhdWx0SW50ZXJwb2xhdGlvbiBpcyBpbmhlcml0ZWRcXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICpcXG5cXHQgKiBSZXVzYWJsZSBzZXQgb2YgVHJhY2tzIHRoYXQgcmVwcmVzZW50IGFuIGFuaW1hdGlvbi5cXG5cXHQgKlxcblxcdCAqIEBhdXRob3IgQmVuIEhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW8vXFxuXFx0ICogQGF1dGhvciBEYXZpZCBTYXJubyAvIGh0dHA6Ly9saWdodGhhdXMudXMvXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQW5pbWF0aW9uQ2xpcCggbmFtZSwgZHVyYXRpb24sIHRyYWNrcyApIHtcXG5cXG5cXHRcXHR0aGlzLm5hbWUgPSBuYW1lO1xcblxcdFxcdHRoaXMudHJhY2tzID0gdHJhY2tzO1xcblxcdFxcdHRoaXMuZHVyYXRpb24gPSAoIGR1cmF0aW9uICE9PSB1bmRlZmluZWQgKSA/IGR1cmF0aW9uIDogLSAxO1xcblxcblxcdFxcdHRoaXMudXVpZCA9IF9NYXRoLmdlbmVyYXRlVVVJRCgpO1xcblxcblxcdFxcdC8vIHRoaXMgbWVhbnMgaXQgc2hvdWxkIGZpZ3VyZSBvdXQgaXRzIGR1cmF0aW9uIGJ5IHNjYW5uaW5nIHRoZSB0cmFja3NcXG5cXHRcXHRpZiAoIHRoaXMuZHVyYXRpb24gPCAwICkge1xcblxcblxcdFxcdFxcdHRoaXMucmVzZXREdXJhdGlvbigpO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLm9wdGltaXplKCk7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIEFuaW1hdGlvbkNsaXAsIHtcXG5cXG5cXHRcXHRwYXJzZTogZnVuY3Rpb24gKCBqc29uICkge1xcblxcblxcdFxcdFxcdHZhciB0cmFja3MgPSBbXSxcXG5cXHRcXHRcXHRcXHRqc29uVHJhY2tzID0ganNvbi50cmFja3MsXFxuXFx0XFx0XFx0XFx0ZnJhbWVUaW1lID0gMS4wIC8gKCBqc29uLmZwcyB8fCAxLjAgKTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIG4gPSBqc29uVHJhY2tzLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0cmFja3MucHVzaCggS2V5ZnJhbWVUcmFjay5wYXJzZSgganNvblRyYWNrc1sgaSBdICkuc2NhbGUoIGZyYW1lVGltZSApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBuZXcgQW5pbWF0aW9uQ2xpcCgganNvbi5uYW1lLCBqc29uLmR1cmF0aW9uLCB0cmFja3MgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvSlNPTjogZnVuY3Rpb24gKCBjbGlwICkge1xcblxcblxcdFxcdFxcdHZhciB0cmFja3MgPSBbXSxcXG5cXHRcXHRcXHRcXHRjbGlwVHJhY2tzID0gY2xpcC50cmFja3M7XFxuXFxuXFx0XFx0XFx0dmFyIGpzb24gPSB7XFxuXFxuXFx0XFx0XFx0XFx0J25hbWUnOiBjbGlwLm5hbWUsXFxuXFx0XFx0XFx0XFx0J2R1cmF0aW9uJzogY2xpcC5kdXJhdGlvbixcXG5cXHRcXHRcXHRcXHQndHJhY2tzJzogdHJhY2tzXFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIG4gPSBjbGlwVHJhY2tzLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0cmFja3MucHVzaCggS2V5ZnJhbWVUcmFjay50b0pTT04oIGNsaXBUcmFja3NbIGkgXSApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBqc29uO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Q3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2U6IGZ1bmN0aW9uICggbmFtZSwgbW9ycGhUYXJnZXRTZXF1ZW5jZSwgZnBzLCBub0xvb3AgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG51bU1vcnBoVGFyZ2V0cyA9IG1vcnBoVGFyZ2V0U2VxdWVuY2UubGVuZ3RoO1xcblxcdFxcdFxcdHZhciB0cmFja3MgPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBudW1Nb3JwaFRhcmdldHM7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHRpbWVzID0gW107XFxuXFx0XFx0XFx0XFx0dmFyIHZhbHVlcyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdHRpbWVzLnB1c2goXFxuXFx0XFx0XFx0XFx0XFx0KCBpICsgbnVtTW9ycGhUYXJnZXRzIC0gMSApICUgbnVtTW9ycGhUYXJnZXRzLFxcblxcdFxcdFxcdFxcdFxcdGksXFxuXFx0XFx0XFx0XFx0XFx0KCBpICsgMSApICUgbnVtTW9ycGhUYXJnZXRzICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFsdWVzLnB1c2goIDAsIDEsIDAgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgb3JkZXIgPSBBbmltYXRpb25VdGlscy5nZXRLZXlmcmFtZU9yZGVyKCB0aW1lcyApO1xcblxcdFxcdFxcdFxcdHRpbWVzID0gQW5pbWF0aW9uVXRpbHMuc29ydGVkQXJyYXkoIHRpbWVzLCAxLCBvcmRlciApO1xcblxcdFxcdFxcdFxcdHZhbHVlcyA9IEFuaW1hdGlvblV0aWxzLnNvcnRlZEFycmF5KCB2YWx1ZXMsIDEsIG9yZGVyICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gaWYgdGhlcmUgaXMgYSBrZXkgYXQgdGhlIGZpcnN0IGZyYW1lLCBkdXBsaWNhdGUgaXQgYXMgdGhlXFxuXFx0XFx0XFx0XFx0Ly8gbGFzdCBmcmFtZSBhcyB3ZWxsIGZvciBwZXJmZWN0IGxvb3AuXFxuXFx0XFx0XFx0XFx0aWYgKCAhIG5vTG9vcCAmJiB0aW1lc1sgMCBdID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRpbWVzLnB1c2goIG51bU1vcnBoVGFyZ2V0cyApO1xcblxcdFxcdFxcdFxcdFxcdHZhbHVlcy5wdXNoKCB2YWx1ZXNbIDAgXSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR0cmFja3MucHVzaChcXG5cXHRcXHRcXHRcXHRcXHRuZXcgTnVtYmVyS2V5ZnJhbWVUcmFjayhcXG5cXHRcXHRcXHRcXHRcXHRcXHQnLm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1snICsgbW9ycGhUYXJnZXRTZXF1ZW5jZVsgaSBdLm5hbWUgKyAnXScsXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGltZXMsIHZhbHVlc1xcblxcdFxcdFxcdFxcdFxcdCkuc2NhbGUoIDEuMCAvIGZwcyApICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBuZXcgQW5pbWF0aW9uQ2xpcCggbmFtZSwgLSAxLCB0cmFja3MgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGZpbmRCeU5hbWU6IGZ1bmN0aW9uICggb2JqZWN0T3JDbGlwQXJyYXksIG5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGNsaXBBcnJheSA9IG9iamVjdE9yQ2xpcEFycmF5O1xcblxcblxcdFxcdFxcdGlmICggISBBcnJheS5pc0FycmF5KCBvYmplY3RPckNsaXBBcnJheSApICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBvID0gb2JqZWN0T3JDbGlwQXJyYXk7XFxuXFx0XFx0XFx0XFx0Y2xpcEFycmF5ID0gby5nZW9tZXRyeSAmJiBvLmdlb21ldHJ5LmFuaW1hdGlvbnMgfHwgby5hbmltYXRpb25zO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBjbGlwQXJyYXkubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggY2xpcEFycmF5WyBpIF0ubmFtZSA9PT0gbmFtZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gY2xpcEFycmF5WyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzOiBmdW5jdGlvbiAoIG1vcnBoVGFyZ2V0cywgZnBzLCBub0xvb3AgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFuaW1hdGlvblRvTW9ycGhUYXJnZXRzID0ge307XFxuXFxuXFx0XFx0XFx0Ly8gdGVzdGVkIHdpdGggaHR0cHM6Ly9yZWdleDEwMS5jb20vIG9uIHRyaWNrIHNlcXVlbmNlc1xcblxcdFxcdFxcdC8vIHN1Y2ggZmxhbWluZ29fZmx5QV8wMDMsIGZsYW1pbmdvX3J1bjFfMDAzLCBjcmRlYXRoMDA1OVxcblxcdFxcdFxcdHZhciBwYXR0ZXJuID0gL14oW1xcXFx3LV0qPykoW1xcXFxkXSspJC87XFxuXFxuXFx0XFx0XFx0Ly8gc29ydCBtb3JwaCB0YXJnZXQgbmFtZXMgaW50byBhbmltYXRpb24gZ3JvdXBzIGJhc2VkXFxuXFx0XFx0XFx0Ly8gcGF0dGVybnMgbGlrZSBXYWxrXzAwMSwgV2Fsa18wMDIsIFJ1bl8wMDEsIFJ1bl8wMDJcXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gbW9ycGhUYXJnZXRzLmxlbmd0aDsgaSA8IGlsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBtb3JwaFRhcmdldCA9IG1vcnBoVGFyZ2V0c1sgaSBdO1xcblxcdFxcdFxcdFxcdHZhciBwYXJ0cyA9IG1vcnBoVGFyZ2V0Lm5hbWUubWF0Y2goIHBhdHRlcm4gKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHBhcnRzICYmIHBhcnRzLmxlbmd0aCA+IDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIG5hbWUgPSBwYXJ0c1sgMSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBhbmltYXRpb25Nb3JwaFRhcmdldHMgPSBhbmltYXRpb25Ub01vcnBoVGFyZ2V0c1sgbmFtZSBdO1xcblxcdFxcdFxcdFxcdFxcdGlmICggISBhbmltYXRpb25Nb3JwaFRhcmdldHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YW5pbWF0aW9uVG9Nb3JwaFRhcmdldHNbIG5hbWUgXSA9IGFuaW1hdGlvbk1vcnBoVGFyZ2V0cyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRhbmltYXRpb25Nb3JwaFRhcmdldHMucHVzaCggbW9ycGhUYXJnZXQgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBjbGlwcyA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBuYW1lIGluIGFuaW1hdGlvblRvTW9ycGhUYXJnZXRzICkge1xcblxcblxcdFxcdFxcdFxcdGNsaXBzLnB1c2goIEFuaW1hdGlvbkNsaXAuQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UoIG5hbWUsIGFuaW1hdGlvblRvTW9ycGhUYXJnZXRzWyBuYW1lIF0sIGZwcywgbm9Mb29wICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGNsaXBzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gcGFyc2UgdGhlIGFuaW1hdGlvbi5oaWVyYXJjaHkgZm9ybWF0XFxuXFx0XFx0cGFyc2VBbmltYXRpb246IGZ1bmN0aW9uICggYW5pbWF0aW9uLCBib25lcyApIHtcXG5cXG5cXHRcXHRcXHRpZiAoICEgYW5pbWF0aW9uICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5BbmltYXRpb25DbGlwOiBObyBhbmltYXRpb24gaW4gSlNPTkxvYWRlciBkYXRhLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGFkZE5vbmVtcHR5VHJhY2sgPSBmdW5jdGlvbiAoIHRyYWNrVHlwZSwgdHJhY2tOYW1lLCBhbmltYXRpb25LZXlzLCBwcm9wZXJ0eU5hbWUsIGRlc3RUcmFja3MgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gb25seSByZXR1cm4gdHJhY2sgaWYgdGhlcmUgYXJlIGFjdHVhbGx5IGtleXMuXFxuXFx0XFx0XFx0XFx0aWYgKCBhbmltYXRpb25LZXlzLmxlbmd0aCAhPT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdGltZXMgPSBbXTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgdmFsdWVzID0gW107XFxuXFxuXFx0XFx0XFx0XFx0XFx0QW5pbWF0aW9uVXRpbHMuZmxhdHRlbkpTT04oIGFuaW1hdGlvbktleXMsIHRpbWVzLCB2YWx1ZXMsIHByb3BlcnR5TmFtZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGVtcHR5IGtleXMgYXJlIGZpbHRlcmVkIG91dCwgc28gY2hlY2sgYWdhaW5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHRpbWVzLmxlbmd0aCAhPT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRkZXN0VHJhY2tzLnB1c2goIG5ldyB0cmFja1R5cGUoIHRyYWNrTmFtZSwgdGltZXMsIHZhbHVlcyApICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdHZhciB0cmFja3MgPSBbXTtcXG5cXG5cXHRcXHRcXHR2YXIgY2xpcE5hbWUgPSBhbmltYXRpb24ubmFtZSB8fCAnZGVmYXVsdCc7XFxuXFx0XFx0XFx0Ly8gYXV0b21hdGljIGxlbmd0aCBkZXRlcm1pbmF0aW9uIGluIEFuaW1hdGlvbkNsaXAuXFxuXFx0XFx0XFx0dmFyIGR1cmF0aW9uID0gYW5pbWF0aW9uLmxlbmd0aCB8fCAtIDE7XFxuXFx0XFx0XFx0dmFyIGZwcyA9IGFuaW1hdGlvbi5mcHMgfHwgMzA7XFxuXFxuXFx0XFx0XFx0dmFyIGhpZXJhcmNoeVRyYWNrcyA9IGFuaW1hdGlvbi5oaWVyYXJjaHkgfHwgW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGggPSAwOyBoIDwgaGllcmFyY2h5VHJhY2tzLmxlbmd0aDsgaCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYW5pbWF0aW9uS2V5cyA9IGhpZXJhcmNoeVRyYWNrc1sgaCBdLmtleXM7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gc2tpcCBlbXB0eSB0cmFja3NcXG5cXHRcXHRcXHRcXHRpZiAoICEgYW5pbWF0aW9uS2V5cyB8fCBhbmltYXRpb25LZXlzLmxlbmd0aCA9PT0gMCApIGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdFxcdC8vIHByb2Nlc3MgbW9ycGggdGFyZ2V0c1xcblxcdFxcdFxcdFxcdGlmICggYW5pbWF0aW9uS2V5c1sgMCBdLm1vcnBoVGFyZ2V0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBmaWd1cmUgb3V0IGFsbCBtb3JwaCB0YXJnZXRzIHVzZWQgaW4gdGhpcyB0cmFja1xcblxcdFxcdFxcdFxcdFxcdHZhciBtb3JwaFRhcmdldE5hbWVzID0ge307XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGsgPSAwOyBrIDwgYW5pbWF0aW9uS2V5cy5sZW5ndGg7IGsgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBhbmltYXRpb25LZXlzWyBrIF0ubW9ycGhUYXJnZXRzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBtID0gMDsgbSA8IGFuaW1hdGlvbktleXNbIGsgXS5tb3JwaFRhcmdldHMubGVuZ3RoOyBtICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG1vcnBoVGFyZ2V0TmFtZXNbIGFuaW1hdGlvbktleXNbIGsgXS5tb3JwaFRhcmdldHNbIG0gXSBdID0gLSAxO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdC8vIGNyZWF0ZSBhIHRyYWNrIGZvciBlYWNoIG1vcnBoIHRhcmdldCB3aXRoIGFsbCB6ZXJvXFxuXFx0XFx0XFx0XFx0XFx0Ly8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGV4Y2VwdCBmb3IgdGhlIGtleXMgaW4gd2hpY2hcXG5cXHRcXHRcXHRcXHRcXHQvLyB0aGUgbW9ycGhUYXJnZXQgaXMgbmFtZWQuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIG1vcnBoVGFyZ2V0TmFtZSBpbiBtb3JwaFRhcmdldE5hbWVzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciB0aW1lcyA9IFtdO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZhciB2YWx1ZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgbSA9IDA7IG0gIT09IGFuaW1hdGlvbktleXNbIGsgXS5tb3JwaFRhcmdldHMubGVuZ3RoOyArKyBtICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBhbmltYXRpb25LZXkgPSBhbmltYXRpb25LZXlzWyBrIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGltZXMucHVzaCggYW5pbWF0aW9uS2V5LnRpbWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YWx1ZXMucHVzaCggKCBhbmltYXRpb25LZXkubW9ycGhUYXJnZXQgPT09IG1vcnBoVGFyZ2V0TmFtZSApID8gMSA6IDAgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dHJhY2tzLnB1c2goIG5ldyBOdW1iZXJLZXlmcmFtZVRyYWNrKCAnLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWycgKyBtb3JwaFRhcmdldE5hbWUgKyAnXScsIHRpbWVzLCB2YWx1ZXMgKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiA9IG1vcnBoVGFyZ2V0TmFtZXMubGVuZ3RoICogKCBmcHMgfHwgMS4wICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyAuLi5hc3N1bWUgc2tlbGV0YWwgYW5pbWF0aW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGJvbmVOYW1lID0gJy5ib25lc1snICsgYm9uZXNbIGggXS5uYW1lICsgJ10nO1xcblxcblxcdFxcdFxcdFxcdFxcdGFkZE5vbmVtcHR5VHJhY2soXFxuXFx0XFx0XFx0XFx0XFx0XFx0VmVjdG9yS2V5ZnJhbWVUcmFjaywgYm9uZU5hbWUgKyAnLnBvc2l0aW9uJyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRhbmltYXRpb25LZXlzLCAncG9zJywgdHJhY2tzICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YWRkTm9uZW1wdHlUcmFjayhcXG5cXHRcXHRcXHRcXHRcXHRcXHRRdWF0ZXJuaW9uS2V5ZnJhbWVUcmFjaywgYm9uZU5hbWUgKyAnLnF1YXRlcm5pb24nLFxcblxcdFxcdFxcdFxcdFxcdFxcdGFuaW1hdGlvbktleXMsICdyb3QnLCB0cmFja3MgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRhZGROb25lbXB0eVRyYWNrKFxcblxcdFxcdFxcdFxcdFxcdFxcdFZlY3RvcktleWZyYW1lVHJhY2ssIGJvbmVOYW1lICsgJy5zY2FsZScsXFxuXFx0XFx0XFx0XFx0XFx0XFx0YW5pbWF0aW9uS2V5cywgJ3NjbCcsIHRyYWNrcyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB0cmFja3MubGVuZ3RoID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBudWxsO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgY2xpcCA9IG5ldyBBbmltYXRpb25DbGlwKCBjbGlwTmFtZSwgZHVyYXRpb24sIHRyYWNrcyApO1xcblxcblxcdFxcdFxcdHJldHVybiBjbGlwO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggQW5pbWF0aW9uQ2xpcC5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRyZXNldER1cmF0aW9uOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRyYWNrcyA9IHRoaXMudHJhY2tzLCBkdXJhdGlvbiA9IDA7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gdHJhY2tzLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdHJhY2sgPSB0aGlzLnRyYWNrc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdGR1cmF0aW9uID0gTWF0aC5tYXgoIGR1cmF0aW9uLCB0cmFjay50aW1lc1sgdHJhY2sudGltZXMubGVuZ3RoIC0gMSBdICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuZHVyYXRpb24gPSBkdXJhdGlvbjtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRyaW06IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCB0aGlzLnRyYWNrcy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy50cmFja3NbIGkgXS50cmltKCAwLCB0aGlzLmR1cmF0aW9uICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0b3B0aW1pemU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCB0aGlzLnRyYWNrcy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy50cmFja3NbIGkgXS5vcHRpbWl6ZSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gTWF0ZXJpYWxMb2FkZXIoIG1hbmFnZXIgKSB7XFxuXFxuXFx0XFx0dGhpcy5tYW5hZ2VyID0gKCBtYW5hZ2VyICE9PSB1bmRlZmluZWQgKSA/IG1hbmFnZXIgOiBEZWZhdWx0TG9hZGluZ01hbmFnZXI7XFxuXFx0XFx0dGhpcy50ZXh0dXJlcyA9IHt9O1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBNYXRlcmlhbExvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0XFx0dmFyIGxvYWRlciA9IG5ldyBGaWxlTG9hZGVyKCBzY29wZS5tYW5hZ2VyICk7XFxuXFx0XFx0XFx0bG9hZGVyLmxvYWQoIHVybCwgZnVuY3Rpb24gKCB0ZXh0ICkge1xcblxcblxcdFxcdFxcdFxcdG9uTG9hZCggc2NvcGUucGFyc2UoIEpTT04ucGFyc2UoIHRleHQgKSApICk7XFxuXFxuXFx0XFx0XFx0fSwgb25Qcm9ncmVzcywgb25FcnJvciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0VGV4dHVyZXM6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy50ZXh0dXJlcyA9IHZhbHVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cGFyc2U6IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGV4dHVyZXMgPSB0aGlzLnRleHR1cmVzO1xcblxcblxcdFxcdFxcdGZ1bmN0aW9uIGdldFRleHR1cmUoIG5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0ZXh0dXJlc1sgbmFtZSBdID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTWF0ZXJpYWxMb2FkZXI6IFVuZGVmaW5lZCB0ZXh0dXJlJywgbmFtZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGV4dHVyZXNbIG5hbWUgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIG1hdGVyaWFsID0gbmV3IE1hdGVyaWFsc1sganNvbi50eXBlIF0oKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24udXVpZCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwudXVpZCA9IGpzb24udXVpZDtcXG5cXHRcXHRcXHRpZiAoIGpzb24ubmFtZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwubmFtZSA9IGpzb24ubmFtZTtcXG5cXHRcXHRcXHRpZiAoIGpzb24uY29sb3IgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLmNvbG9yLnNldEhleCgganNvbi5jb2xvciApO1xcblxcdFxcdFxcdGlmICgganNvbi5yb3VnaG5lc3MgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLnJvdWdobmVzcyA9IGpzb24ucm91Z2huZXNzO1xcblxcdFxcdFxcdGlmICgganNvbi5tZXRhbG5lc3MgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLm1ldGFsbmVzcyA9IGpzb24ubWV0YWxuZXNzO1xcblxcdFxcdFxcdGlmICgganNvbi5lbWlzc2l2ZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuZW1pc3NpdmUuc2V0SGV4KCBqc29uLmVtaXNzaXZlICk7XFxuXFx0XFx0XFx0aWYgKCBqc29uLnNwZWN1bGFyICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5zcGVjdWxhci5zZXRIZXgoIGpzb24uc3BlY3VsYXIgKTtcXG5cXHRcXHRcXHRpZiAoIGpzb24uc2hpbmluZXNzICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5zaGluaW5lc3MgPSBqc29uLnNoaW5pbmVzcztcXG5cXHRcXHRcXHRpZiAoIGpzb24uY2xlYXJDb2F0ICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5jbGVhckNvYXQgPSBqc29uLmNsZWFyQ29hdDtcXG5cXHRcXHRcXHRpZiAoIGpzb24uY2xlYXJDb2F0Um91Z2huZXNzICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5jbGVhckNvYXRSb3VnaG5lc3MgPSBqc29uLmNsZWFyQ29hdFJvdWdobmVzcztcXG5cXHRcXHRcXHRpZiAoIGpzb24udW5pZm9ybXMgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLnVuaWZvcm1zID0ganNvbi51bmlmb3JtcztcXG5cXHRcXHRcXHRpZiAoIGpzb24udmVydGV4U2hhZGVyICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC52ZXJ0ZXhTaGFkZXIgPSBqc29uLnZlcnRleFNoYWRlcjtcXG5cXHRcXHRcXHRpZiAoIGpzb24uZnJhZ21lbnRTaGFkZXIgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLmZyYWdtZW50U2hhZGVyID0ganNvbi5mcmFnbWVudFNoYWRlcjtcXG5cXHRcXHRcXHRpZiAoIGpzb24udmVydGV4Q29sb3JzICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC52ZXJ0ZXhDb2xvcnMgPSBqc29uLnZlcnRleENvbG9ycztcXG5cXHRcXHRcXHRpZiAoIGpzb24uZm9nICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5mb2cgPSBqc29uLmZvZztcXG5cXHRcXHRcXHRpZiAoIGpzb24uZmxhdFNoYWRpbmcgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLmZsYXRTaGFkaW5nID0ganNvbi5mbGF0U2hhZGluZztcXG5cXHRcXHRcXHRpZiAoIGpzb24uYmxlbmRpbmcgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLmJsZW5kaW5nID0ganNvbi5ibGVuZGluZztcXG5cXHRcXHRcXHRpZiAoIGpzb24uc2lkZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuc2lkZSA9IGpzb24uc2lkZTtcXG5cXHRcXHRcXHRpZiAoIGpzb24ub3BhY2l0eSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwub3BhY2l0eSA9IGpzb24ub3BhY2l0eTtcXG5cXHRcXHRcXHRpZiAoIGpzb24udHJhbnNwYXJlbnQgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLnRyYW5zcGFyZW50ID0ganNvbi50cmFuc3BhcmVudDtcXG5cXHRcXHRcXHRpZiAoIGpzb24uYWxwaGFUZXN0ICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5hbHBoYVRlc3QgPSBqc29uLmFscGhhVGVzdDtcXG5cXHRcXHRcXHRpZiAoIGpzb24uZGVwdGhUZXN0ICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5kZXB0aFRlc3QgPSBqc29uLmRlcHRoVGVzdDtcXG5cXHRcXHRcXHRpZiAoIGpzb24uZGVwdGhXcml0ZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuZGVwdGhXcml0ZSA9IGpzb24uZGVwdGhXcml0ZTtcXG5cXHRcXHRcXHRpZiAoIGpzb24uY29sb3JXcml0ZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuY29sb3JXcml0ZSA9IGpzb24uY29sb3JXcml0ZTtcXG5cXHRcXHRcXHRpZiAoIGpzb24ud2lyZWZyYW1lICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC53aXJlZnJhbWUgPSBqc29uLndpcmVmcmFtZTtcXG5cXHRcXHRcXHRpZiAoIGpzb24ud2lyZWZyYW1lTGluZXdpZHRoICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC53aXJlZnJhbWVMaW5ld2lkdGggPSBqc29uLndpcmVmcmFtZUxpbmV3aWR0aDtcXG5cXHRcXHRcXHRpZiAoIGpzb24ud2lyZWZyYW1lTGluZWNhcCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwud2lyZWZyYW1lTGluZWNhcCA9IGpzb24ud2lyZWZyYW1lTGluZWNhcDtcXG5cXHRcXHRcXHRpZiAoIGpzb24ud2lyZWZyYW1lTGluZWpvaW4gIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLndpcmVmcmFtZUxpbmVqb2luID0ganNvbi53aXJlZnJhbWVMaW5lam9pbjtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24ucm90YXRpb24gIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLnJvdGF0aW9uID0ganNvbi5yb3RhdGlvbjtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24ubGluZXdpZHRoICE9PSAxICkgbWF0ZXJpYWwubGluZXdpZHRoID0ganNvbi5saW5ld2lkdGg7XFxuXFx0XFx0XFx0aWYgKCBqc29uLmRhc2hTaXplICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5kYXNoU2l6ZSA9IGpzb24uZGFzaFNpemU7XFxuXFx0XFx0XFx0aWYgKCBqc29uLmdhcFNpemUgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLmdhcFNpemUgPSBqc29uLmdhcFNpemU7XFxuXFx0XFx0XFx0aWYgKCBqc29uLnNjYWxlICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5zY2FsZSA9IGpzb24uc2NhbGU7XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLnNraW5uaW5nICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5za2lubmluZyA9IGpzb24uc2tpbm5pbmc7XFxuXFx0XFx0XFx0aWYgKCBqc29uLm1vcnBoVGFyZ2V0cyAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwubW9ycGhUYXJnZXRzID0ganNvbi5tb3JwaFRhcmdldHM7XFxuXFx0XFx0XFx0aWYgKCBqc29uLmRpdGhlcmluZyAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuZGl0aGVyaW5nID0ganNvbi5kaXRoZXJpbmc7XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLnZpc2libGUgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLnZpc2libGUgPSBqc29uLnZpc2libGU7XFxuXFx0XFx0XFx0aWYgKCBqc29uLnVzZXJEYXRhICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC51c2VyRGF0YSA9IGpzb24udXNlckRhdGE7XFxuXFxuXFx0XFx0XFx0Ly8gRGVwcmVjYXRlZFxcblxcblxcdFxcdFxcdGlmICgganNvbi5zaGFkaW5nICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5mbGF0U2hhZGluZyA9IGpzb24uc2hhZGluZyA9PT0gMTsgLy8gVEhSRUUuRmxhdFNoYWRpbmdcXG5cXG5cXHRcXHRcXHQvLyBmb3IgUG9pbnRzTWF0ZXJpYWxcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24uc2l6ZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuc2l6ZSA9IGpzb24uc2l6ZTtcXG5cXHRcXHRcXHRpZiAoIGpzb24uc2l6ZUF0dGVudWF0aW9uICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5zaXplQXR0ZW51YXRpb24gPSBqc29uLnNpemVBdHRlbnVhdGlvbjtcXG5cXG5cXHRcXHRcXHQvLyBtYXBzXFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLm1hcCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwubWFwID0gZ2V0VGV4dHVyZSgganNvbi5tYXAgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24uYWxwaGFNYXAgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRtYXRlcmlhbC5hbHBoYU1hcCA9IGdldFRleHR1cmUoIGpzb24uYWxwaGFNYXAgKTtcXG5cXHRcXHRcXHRcXHRtYXRlcmlhbC50cmFuc3BhcmVudCA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICgganNvbi5idW1wTWFwICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5idW1wTWFwID0gZ2V0VGV4dHVyZSgganNvbi5idW1wTWFwICk7XFxuXFx0XFx0XFx0aWYgKCBqc29uLmJ1bXBTY2FsZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuYnVtcFNjYWxlID0ganNvbi5idW1wU2NhbGU7XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLm5vcm1hbE1hcCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwubm9ybWFsTWFwID0gZ2V0VGV4dHVyZSgganNvbi5ub3JtYWxNYXAgKTtcXG5cXHRcXHRcXHRpZiAoIGpzb24ubm9ybWFsU2NhbGUgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbm9ybWFsU2NhbGUgPSBqc29uLm5vcm1hbFNjYWxlO1xcblxcblxcdFxcdFxcdFxcdGlmICggQXJyYXkuaXNBcnJheSggbm9ybWFsU2NhbGUgKSA9PT0gZmFsc2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gQmxlbmRlciBleHBvcnRlciB1c2VkIHRvIGV4cG9ydCBhIHNjYWxhci4gU2VlICM3NDU5XFxuXFxuXFx0XFx0XFx0XFx0XFx0bm9ybWFsU2NhbGUgPSBbIG5vcm1hbFNjYWxlLCBub3JtYWxTY2FsZSBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRtYXRlcmlhbC5ub3JtYWxTY2FsZSA9IG5ldyBWZWN0b3IyKCkuZnJvbUFycmF5KCBub3JtYWxTY2FsZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24uZGlzcGxhY2VtZW50TWFwICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRNYXAgPSBnZXRUZXh0dXJlKCBqc29uLmRpc3BsYWNlbWVudE1hcCApO1xcblxcdFxcdFxcdGlmICgganNvbi5kaXNwbGFjZW1lbnRTY2FsZSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuZGlzcGxhY2VtZW50U2NhbGUgPSBqc29uLmRpc3BsYWNlbWVudFNjYWxlO1xcblxcdFxcdFxcdGlmICgganNvbi5kaXNwbGFjZW1lbnRCaWFzICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5kaXNwbGFjZW1lbnRCaWFzID0ganNvbi5kaXNwbGFjZW1lbnRCaWFzO1xcblxcblxcdFxcdFxcdGlmICgganNvbi5yb3VnaG5lc3NNYXAgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLnJvdWdobmVzc01hcCA9IGdldFRleHR1cmUoIGpzb24ucm91Z2huZXNzTWFwICk7XFxuXFx0XFx0XFx0aWYgKCBqc29uLm1ldGFsbmVzc01hcCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwubWV0YWxuZXNzTWFwID0gZ2V0VGV4dHVyZSgganNvbi5tZXRhbG5lc3NNYXAgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24uZW1pc3NpdmVNYXAgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLmVtaXNzaXZlTWFwID0gZ2V0VGV4dHVyZSgganNvbi5lbWlzc2l2ZU1hcCApO1xcblxcdFxcdFxcdGlmICgganNvbi5lbWlzc2l2ZUludGVuc2l0eSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuZW1pc3NpdmVJbnRlbnNpdHkgPSBqc29uLmVtaXNzaXZlSW50ZW5zaXR5O1xcblxcblxcdFxcdFxcdGlmICgganNvbi5zcGVjdWxhck1hcCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuc3BlY3VsYXJNYXAgPSBnZXRUZXh0dXJlKCBqc29uLnNwZWN1bGFyTWFwICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLmVudk1hcCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuZW52TWFwID0gZ2V0VGV4dHVyZSgganNvbi5lbnZNYXAgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24ucmVmbGVjdGl2aXR5ICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5yZWZsZWN0aXZpdHkgPSBqc29uLnJlZmxlY3Rpdml0eTtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24ubGlnaHRNYXAgIT09IHVuZGVmaW5lZCApIG1hdGVyaWFsLmxpZ2h0TWFwID0gZ2V0VGV4dHVyZSgganNvbi5saWdodE1hcCApO1xcblxcdFxcdFxcdGlmICgganNvbi5saWdodE1hcEludGVuc2l0eSAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwubGlnaHRNYXBJbnRlbnNpdHkgPSBqc29uLmxpZ2h0TWFwSW50ZW5zaXR5O1xcblxcblxcdFxcdFxcdGlmICgganNvbi5hb01hcCAhPT0gdW5kZWZpbmVkICkgbWF0ZXJpYWwuYW9NYXAgPSBnZXRUZXh0dXJlKCBqc29uLmFvTWFwICk7XFxuXFx0XFx0XFx0aWYgKCBqc29uLmFvTWFwSW50ZW5zaXR5ICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5hb01hcEludGVuc2l0eSA9IGpzb24uYW9NYXBJbnRlbnNpdHk7XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLmdyYWRpZW50TWFwICE9PSB1bmRlZmluZWQgKSBtYXRlcmlhbC5ncmFkaWVudE1hcCA9IGdldFRleHR1cmUoIGpzb24uZ3JhZGllbnRNYXAgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbWF0ZXJpYWw7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEJ1ZmZlckdlb21ldHJ5TG9hZGVyKCBtYW5hZ2VyICkge1xcblxcblxcdFxcdHRoaXMubWFuYWdlciA9ICggbWFuYWdlciAhPT0gdW5kZWZpbmVkICkgPyBtYW5hZ2VyIDogRGVmYXVsdExvYWRpbmdNYW5hZ2VyO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBCdWZmZXJHZW9tZXRyeUxvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0XFx0dmFyIGxvYWRlciA9IG5ldyBGaWxlTG9hZGVyKCBzY29wZS5tYW5hZ2VyICk7XFxuXFx0XFx0XFx0bG9hZGVyLmxvYWQoIHVybCwgZnVuY3Rpb24gKCB0ZXh0ICkge1xcblxcblxcdFxcdFxcdFxcdG9uTG9hZCggc2NvcGUucGFyc2UoIEpTT04ucGFyc2UoIHRleHQgKSApICk7XFxuXFxuXFx0XFx0XFx0fSwgb25Qcm9ncmVzcywgb25FcnJvciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cGFyc2U6IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXG5cXHRcXHRcXHR2YXIgaW5kZXggPSBqc29uLmRhdGEuaW5kZXg7XFxuXFxuXFx0XFx0XFx0aWYgKCBpbmRleCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHZhciB0eXBlZEFycmF5ID0gbmV3IFRZUEVEX0FSUkFZU1sgaW5kZXgudHlwZSBdKCBpbmRleC5hcnJheSApO1xcblxcdFxcdFxcdFxcdGdlb21ldHJ5LnNldEluZGV4KCBuZXcgQnVmZmVyQXR0cmlidXRlKCB0eXBlZEFycmF5LCAxICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIGF0dHJpYnV0ZXMgPSBqc29uLmRhdGEuYXR0cmlidXRlcztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIga2V5IGluIGF0dHJpYnV0ZXMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXNbIGtleSBdO1xcblxcdFxcdFxcdFxcdHZhciB0eXBlZEFycmF5ID0gbmV3IFRZUEVEX0FSUkFZU1sgYXR0cmlidXRlLnR5cGUgXSggYXR0cmlidXRlLmFycmF5ICk7XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCBrZXksIG5ldyBCdWZmZXJBdHRyaWJ1dGUoIHR5cGVkQXJyYXksIGF0dHJpYnV0ZS5pdGVtU2l6ZSwgYXR0cmlidXRlLm5vcm1hbGl6ZWQgKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgZ3JvdXBzID0ganNvbi5kYXRhLmdyb3VwcyB8fCBqc29uLmRhdGEuZHJhd2NhbGxzIHx8IGpzb24uZGF0YS5vZmZzZXRzO1xcblxcblxcdFxcdFxcdGlmICggZ3JvdXBzICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gZ3JvdXBzLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZ3JvdXAgPSBncm91cHNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5hZGRHcm91cCggZ3JvdXAuc3RhcnQsIGdyb3VwLmNvdW50LCBncm91cC5tYXRlcmlhbEluZGV4ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgYm91bmRpbmdTcGhlcmUgPSBqc29uLmRhdGEuYm91bmRpbmdTcGhlcmU7XFxuXFxuXFx0XFx0XFx0aWYgKCBib3VuZGluZ1NwaGVyZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjZW50ZXIgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdFxcdGlmICggYm91bmRpbmdTcGhlcmUuY2VudGVyICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2VudGVyLmZyb21BcnJheSggYm91bmRpbmdTcGhlcmUuY2VudGVyICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlID0gbmV3IFNwaGVyZSggY2VudGVyLCBib3VuZGluZ1NwaGVyZS5yYWRpdXMgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGdlb21ldHJ5O1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0dmFyIFRZUEVEX0FSUkFZUyA9IHtcXG5cXHRcXHRJbnQ4QXJyYXk6IEludDhBcnJheSxcXG5cXHRcXHRVaW50OEFycmF5OiBVaW50OEFycmF5LFxcblxcdFxcdC8vIFdvcmthcm91bmQgZm9yIElFMTEgcHJlIEtCMjkyOTQzNy4gU2VlICMxMTQ0MFxcblxcdFxcdFVpbnQ4Q2xhbXBlZEFycmF5OiB0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhDbGFtcGVkQXJyYXkgOiBVaW50OEFycmF5LFxcblxcdFxcdEludDE2QXJyYXk6IEludDE2QXJyYXksXFxuXFx0XFx0VWludDE2QXJyYXk6IFVpbnQxNkFycmF5LFxcblxcdFxcdEludDMyQXJyYXk6IEludDMyQXJyYXksXFxuXFx0XFx0VWludDMyQXJyYXk6IFVpbnQzMkFycmF5LFxcblxcdFxcdEZsb2F0MzJBcnJheTogRmxvYXQzMkFycmF5LFxcblxcdFxcdEZsb2F0NjRBcnJheTogRmxvYXQ2NEFycmF5XFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIExvYWRlcigpIHtcXG5cXG5cXHRcXHR0aGlzLm9uTG9hZFN0YXJ0ID0gZnVuY3Rpb24gKCkge307XFxuXFx0XFx0dGhpcy5vbkxvYWRQcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHt9O1xcblxcdFxcdHRoaXMub25Mb2FkQ29tcGxldGUgPSBmdW5jdGlvbiAoKSB7fTtcXG5cXG5cXHR9XFxuXFxuXFx0TG9hZGVyLkhhbmRsZXJzID0ge1xcblxcblxcdFxcdGhhbmRsZXJzOiBbXSxcXG5cXG5cXHRcXHRhZGQ6IGZ1bmN0aW9uICggcmVnZXgsIGxvYWRlciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmhhbmRsZXJzLnB1c2goIHJlZ2V4LCBsb2FkZXIgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldDogZnVuY3Rpb24gKCBmaWxlICkge1xcblxcblxcdFxcdFxcdHZhciBoYW5kbGVycyA9IHRoaXMuaGFuZGxlcnM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gaGFuZGxlcnMubGVuZ3RoOyBpIDwgbDsgaSArPSAyICkge1xcblxcblxcdFxcdFxcdFxcdHZhciByZWdleCA9IGhhbmRsZXJzWyBpIF07XFxuXFx0XFx0XFx0XFx0dmFyIGxvYWRlciA9IGhhbmRsZXJzWyBpICsgMSBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggcmVnZXgudGVzdCggZmlsZSApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBsb2FkZXI7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBMb2FkZXIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Y3Jvc3NPcmlnaW46IHVuZGVmaW5lZCxcXG5cXG5cXHRcXHRpbml0TWF0ZXJpYWxzOiBmdW5jdGlvbiAoIG1hdGVyaWFscywgdGV4dHVyZVBhdGgsIGNyb3NzT3JpZ2luICkge1xcblxcblxcdFxcdFxcdHZhciBhcnJheSA9IFtdO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IG1hdGVyaWFscy5sZW5ndGg7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YXJyYXlbIGkgXSA9IHRoaXMuY3JlYXRlTWF0ZXJpYWwoIG1hdGVyaWFsc1sgaSBdLCB0ZXh0dXJlUGF0aCwgY3Jvc3NPcmlnaW4gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGFycmF5O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y3JlYXRlTWF0ZXJpYWw6ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBCbGVuZGluZ01vZGUgPSB7XFxuXFx0XFx0XFx0XFx0Tm9CbGVuZGluZzogTm9CbGVuZGluZyxcXG5cXHRcXHRcXHRcXHROb3JtYWxCbGVuZGluZzogTm9ybWFsQmxlbmRpbmcsXFxuXFx0XFx0XFx0XFx0QWRkaXRpdmVCbGVuZGluZzogQWRkaXRpdmVCbGVuZGluZyxcXG5cXHRcXHRcXHRcXHRTdWJ0cmFjdGl2ZUJsZW5kaW5nOiBTdWJ0cmFjdGl2ZUJsZW5kaW5nLFxcblxcdFxcdFxcdFxcdE11bHRpcGx5QmxlbmRpbmc6IE11bHRpcGx5QmxlbmRpbmcsXFxuXFx0XFx0XFx0XFx0Q3VzdG9tQmxlbmRpbmc6IEN1c3RvbUJsZW5kaW5nXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHR2YXIgY29sb3IgPSBuZXcgQ29sb3IoKTtcXG5cXHRcXHRcXHR2YXIgdGV4dHVyZUxvYWRlciA9IG5ldyBUZXh0dXJlTG9hZGVyKCk7XFxuXFx0XFx0XFx0dmFyIG1hdGVyaWFsTG9hZGVyID0gbmV3IE1hdGVyaWFsTG9hZGVyKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZU1hdGVyaWFsKCBtLCB0ZXh0dXJlUGF0aCwgY3Jvc3NPcmlnaW4gKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gY29udmVydCBmcm9tIG9sZCBtYXRlcmlhbCBmb3JtYXRcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdGV4dHVyZXMgPSB7fTtcXG5cXG5cXHRcXHRcXHRcXHRmdW5jdGlvbiBsb2FkVGV4dHVyZSggcGF0aCwgcmVwZWF0LCBvZmZzZXQsIHdyYXAsIGFuaXNvdHJvcHkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGZ1bGxQYXRoID0gdGV4dHVyZVBhdGggKyBwYXRoO1xcblxcdFxcdFxcdFxcdFxcdHZhciBsb2FkZXIgPSBMb2FkZXIuSGFuZGxlcnMuZ2V0KCBmdWxsUGF0aCApO1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB0ZXh0dXJlO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggbG9hZGVyICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRleHR1cmUgPSBsb2FkZXIubG9hZCggZnVsbFBhdGggKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRleHR1cmVMb2FkZXIuc2V0Q3Jvc3NPcmlnaW4oIGNyb3NzT3JpZ2luICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dGV4dHVyZSA9IHRleHR1cmVMb2FkZXIubG9hZCggZnVsbFBhdGggKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCByZXBlYXQgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLnJlcGVhdC5mcm9tQXJyYXkoIHJlcGVhdCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggcmVwZWF0WyAwIF0gIT09IDEgKSB0ZXh0dXJlLndyYXBTID0gUmVwZWF0V3JhcHBpbmc7XFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCByZXBlYXRbIDEgXSAhPT0gMSApIHRleHR1cmUud3JhcFQgPSBSZXBlYXRXcmFwcGluZztcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBvZmZzZXQgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLm9mZnNldC5mcm9tQXJyYXkoIG9mZnNldCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHdyYXAgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHdyYXBbIDAgXSA9PT0gJ3JlcGVhdCcgKSB0ZXh0dXJlLndyYXBTID0gUmVwZWF0V3JhcHBpbmc7XFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB3cmFwWyAwIF0gPT09ICdtaXJyb3InICkgdGV4dHVyZS53cmFwUyA9IE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB3cmFwWyAxIF0gPT09ICdyZXBlYXQnICkgdGV4dHVyZS53cmFwVCA9IFJlcGVhdFdyYXBwaW5nO1xcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggd3JhcFsgMSBdID09PSAnbWlycm9yJyApIHRleHR1cmUud3JhcFQgPSBNaXJyb3JlZFJlcGVhdFdyYXBwaW5nO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGFuaXNvdHJvcHkgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0ZXh0dXJlLmFuaXNvdHJvcHkgPSBhbmlzb3Ryb3B5O1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdXVpZCA9IF9NYXRoLmdlbmVyYXRlVVVJRCgpO1xcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmVzWyB1dWlkIF0gPSB0ZXh0dXJlO1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB1dWlkO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdFxcdHZhciBqc29uID0ge1xcblxcdFxcdFxcdFxcdFxcdHV1aWQ6IF9NYXRoLmdlbmVyYXRlVVVJRCgpLFxcblxcdFxcdFxcdFxcdFxcdHR5cGU6ICdNZXNoTGFtYmVydE1hdGVyaWFsJ1xcblxcdFxcdFxcdFxcdH07XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIG5hbWUgaW4gbSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgdmFsdWUgPSBtWyBuYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3dpdGNoICggbmFtZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdEYmdDb2xvcic6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnRGJnSW5kZXgnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ29wdGljYWxEZW5zaXR5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdpbGx1bWluYXRpb24nOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ0RiZ05hbWUnOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGpzb24ubmFtZSA9IHZhbHVlO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ2JsZW5kaW5nJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLmJsZW5kaW5nID0gQmxlbmRpbmdNb2RlWyB2YWx1ZSBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ2NvbG9yQW1iaWVudCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwQW1iaWVudCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTG9hZGVyLmNyZWF0ZU1hdGVyaWFsOicsIG5hbWUsICdpcyBubyBsb25nZXIgc3VwcG9ydGVkLicgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdjb2xvckRpZmZ1c2UnOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGpzb24uY29sb3IgPSBjb2xvci5mcm9tQXJyYXkoIHZhbHVlICkuZ2V0SGV4KCk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnY29sb3JTcGVjdWxhcic6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0anNvbi5zcGVjdWxhciA9IGNvbG9yLmZyb21BcnJheSggdmFsdWUgKS5nZXRIZXgoKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdjb2xvckVtaXNzaXZlJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLmVtaXNzaXZlID0gY29sb3IuZnJvbUFycmF5KCB2YWx1ZSApLmdldEhleCgpO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ3NwZWN1bGFyQ29lZic6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0anNvbi5zaGluaW5lc3MgPSB2YWx1ZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdzaGFkaW5nJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICdiYXNpYycgKSBqc29uLnR5cGUgPSAnTWVzaEJhc2ljTWF0ZXJpYWwnO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3Bob25nJyApIGpzb24udHlwZSA9ICdNZXNoUGhvbmdNYXRlcmlhbCc7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnc3RhbmRhcmQnICkganNvbi50eXBlID0gJ01lc2hTdGFuZGFyZE1hdGVyaWFsJztcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBEaWZmdXNlJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLm1hcCA9IGxvYWRUZXh0dXJlKCB2YWx1ZSwgbS5tYXBEaWZmdXNlUmVwZWF0LCBtLm1hcERpZmZ1c2VPZmZzZXQsIG0ubWFwRGlmZnVzZVdyYXAsIG0ubWFwRGlmZnVzZUFuaXNvdHJvcHkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBEaWZmdXNlUmVwZWF0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBEaWZmdXNlT2Zmc2V0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBEaWZmdXNlV3JhcCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwRGlmZnVzZUFuaXNvdHJvcHknOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcEVtaXNzaXZlJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLmVtaXNzaXZlTWFwID0gbG9hZFRleHR1cmUoIHZhbHVlLCBtLm1hcEVtaXNzaXZlUmVwZWF0LCBtLm1hcEVtaXNzaXZlT2Zmc2V0LCBtLm1hcEVtaXNzaXZlV3JhcCwgbS5tYXBFbWlzc2l2ZUFuaXNvdHJvcHkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBFbWlzc2l2ZVJlcGVhdCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwRW1pc3NpdmVPZmZzZXQnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcEVtaXNzaXZlV3JhcCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwRW1pc3NpdmVBbmlzb3Ryb3B5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBMaWdodCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0anNvbi5saWdodE1hcCA9IGxvYWRUZXh0dXJlKCB2YWx1ZSwgbS5tYXBMaWdodFJlcGVhdCwgbS5tYXBMaWdodE9mZnNldCwgbS5tYXBMaWdodFdyYXAsIG0ubWFwTGlnaHRBbmlzb3Ryb3B5ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwTGlnaHRSZXBlYXQnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcExpZ2h0T2Zmc2V0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBMaWdodFdyYXAnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcExpZ2h0QW5pc290cm9weSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwQU8nOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGpzb24uYW9NYXAgPSBsb2FkVGV4dHVyZSggdmFsdWUsIG0ubWFwQU9SZXBlYXQsIG0ubWFwQU9PZmZzZXQsIG0ubWFwQU9XcmFwLCBtLm1hcEFPQW5pc290cm9weSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcEFPUmVwZWF0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBBT09mZnNldCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwQU9XcmFwJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBBT0FuaXNvdHJvcHknOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcEJ1bXAnOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGpzb24uYnVtcE1hcCA9IGxvYWRUZXh0dXJlKCB2YWx1ZSwgbS5tYXBCdW1wUmVwZWF0LCBtLm1hcEJ1bXBPZmZzZXQsIG0ubWFwQnVtcFdyYXAsIG0ubWFwQnVtcEFuaXNvdHJvcHkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBCdW1wU2NhbGUnOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGpzb24uYnVtcFNjYWxlID0gdmFsdWU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwQnVtcFJlcGVhdCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwQnVtcE9mZnNldCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwQnVtcFdyYXAnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcEJ1bXBBbmlzb3Ryb3B5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBOb3JtYWwnOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGpzb24ubm9ybWFsTWFwID0gbG9hZFRleHR1cmUoIHZhbHVlLCBtLm1hcE5vcm1hbFJlcGVhdCwgbS5tYXBOb3JtYWxPZmZzZXQsIG0ubWFwTm9ybWFsV3JhcCwgbS5tYXBOb3JtYWxBbmlzb3Ryb3B5ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwTm9ybWFsRmFjdG9yJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLm5vcm1hbFNjYWxlID0gWyB2YWx1ZSwgdmFsdWUgXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBOb3JtYWxSZXBlYXQnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcE5vcm1hbE9mZnNldCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwTm9ybWFsV3JhcCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwTm9ybWFsQW5pc290cm9weSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwU3BlY3VsYXInOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGpzb24uc3BlY3VsYXJNYXAgPSBsb2FkVGV4dHVyZSggdmFsdWUsIG0ubWFwU3BlY3VsYXJSZXBlYXQsIG0ubWFwU3BlY3VsYXJPZmZzZXQsIG0ubWFwU3BlY3VsYXJXcmFwLCBtLm1hcFNwZWN1bGFyQW5pc290cm9weSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcFNwZWN1bGFyUmVwZWF0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBTcGVjdWxhck9mZnNldCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwU3BlY3VsYXJXcmFwJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBTcGVjdWxhckFuaXNvdHJvcHknOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcE1ldGFsbmVzcyc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0anNvbi5tZXRhbG5lc3NNYXAgPSBsb2FkVGV4dHVyZSggdmFsdWUsIG0ubWFwTWV0YWxuZXNzUmVwZWF0LCBtLm1hcE1ldGFsbmVzc09mZnNldCwgbS5tYXBNZXRhbG5lc3NXcmFwLCBtLm1hcE1ldGFsbmVzc0FuaXNvdHJvcHkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBNZXRhbG5lc3NSZXBlYXQnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcE1ldGFsbmVzc09mZnNldCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwTWV0YWxuZXNzV3JhcCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwTWV0YWxuZXNzQW5pc290cm9weSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwUm91Z2huZXNzJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLnJvdWdobmVzc01hcCA9IGxvYWRUZXh0dXJlKCB2YWx1ZSwgbS5tYXBSb3VnaG5lc3NSZXBlYXQsIG0ubWFwUm91Z2huZXNzT2Zmc2V0LCBtLm1hcFJvdWdobmVzc1dyYXAsIG0ubWFwUm91Z2huZXNzQW5pc290cm9weSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcFJvdWdobmVzc1JlcGVhdCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwUm91Z2huZXNzT2Zmc2V0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBSb3VnaG5lc3NXcmFwJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBSb3VnaG5lc3NBbmlzb3Ryb3B5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBBbHBoYSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0anNvbi5hbHBoYU1hcCA9IGxvYWRUZXh0dXJlKCB2YWx1ZSwgbS5tYXBBbHBoYVJlcGVhdCwgbS5tYXBBbHBoYU9mZnNldCwgbS5tYXBBbHBoYVdyYXAsIG0ubWFwQWxwaGFBbmlzb3Ryb3B5ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWFwQWxwaGFSZXBlYXQnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcEFscGhhT2Zmc2V0JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdtYXBBbHBoYVdyYXAnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ21hcEFscGhhQW5pc290cm9weSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnZmxpcFNpZGVkJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLnNpZGUgPSBCYWNrU2lkZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdkb3VibGVTaWRlZCc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0anNvbi5zaWRlID0gRG91YmxlU2lkZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICd0cmFuc3BhcmVuY3knOlxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkxvYWRlci5jcmVhdGVNYXRlcmlhbDogdHJhbnNwYXJlbmN5IGhhcyBiZWVuIHJlbmFtZWQgdG8gb3BhY2l0eScgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRqc29uLm9wYWNpdHkgPSB2YWx1ZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdkZXB0aFRlc3QnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ2RlcHRoV3JpdGUnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ2NvbG9yV3JpdGUnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ29wYWNpdHknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ3JlZmxlY3Rpdml0eSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAndHJhbnNwYXJlbnQnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ3Zpc2libGUnOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ3dpcmVmcmFtZSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0anNvblsgbmFtZSBdID0gdmFsdWU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAndmVydGV4Q29sb3JzJzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHZhbHVlID09PSB0cnVlICkganNvbi52ZXJ0ZXhDb2xvcnMgPSBWZXJ0ZXhDb2xvcnM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB2YWx1ZSA9PT0gJ2ZhY2UnICkganNvbi52ZXJ0ZXhDb2xvcnMgPSBGYWNlQ29sb3JzO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcdFxcdFxcdFxcdFxcdFxcdGRlZmF1bHQ6XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLkxvYWRlci5jcmVhdGVNYXRlcmlhbDogVW5zdXBwb3J0ZWQnLCBuYW1lLCB2YWx1ZSApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBqc29uLnR5cGUgPT09ICdNZXNoQmFzaWNNYXRlcmlhbCcgKSBkZWxldGUganNvbi5lbWlzc2l2ZTtcXG5cXHRcXHRcXHRcXHRpZiAoIGpzb24udHlwZSAhPT0gJ01lc2hQaG9uZ01hdGVyaWFsJyApIGRlbGV0ZSBqc29uLnNwZWN1bGFyO1xcblxcblxcdFxcdFxcdFxcdGlmICgganNvbi5vcGFjaXR5IDwgMSApIGpzb24udHJhbnNwYXJlbnQgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdG1hdGVyaWFsTG9hZGVyLnNldFRleHR1cmVzKCB0ZXh0dXJlcyApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBtYXRlcmlhbExvYWRlci5wYXJzZSgganNvbiApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSApKClcXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBEb24gTWNDdXJkeSAvIGh0dHBzOi8vd3d3LmRvbm1jY3VyZHkuY29tXFxuXFx0ICovXFxuXFxuXFx0dmFyIExvYWRlclV0aWxzID0ge1xcblxcblxcdFxcdGRlY29kZVRleHQ6IGZ1bmN0aW9uICggYXJyYXkgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0eXBlb2YgVGV4dERlY29kZXIgIT09ICd1bmRlZmluZWQnICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoIGFycmF5ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIEF2b2lkIHRoZSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGFycmF5KSBzaG9ydGN1dCwgd2hpY2hcXG5cXHRcXHRcXHQvLyB0aHJvd3MgYSBcXFwibWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcXFwiIGVycm9yIGZvciBsYXJnZSBhcnJheXMuXFxuXFxuXFx0XFx0XFx0dmFyIHMgPSAnJztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGlsID0gYXJyYXkubGVuZ3RoOyBpIDwgaWw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gSW1wbGljaXRseSBhc3N1bWVzIGxpdHRsZS1lbmRpYW4uXFxuXFx0XFx0XFx0XFx0cyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCBhcnJheVsgaSBdICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZXh0cmFjdFVybEJhc2U6IGZ1bmN0aW9uICggdXJsICkge1xcblxcblxcdFxcdFxcdHZhciBwYXJ0cyA9IHVybC5zcGxpdCggJy8nICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBwYXJ0cy5sZW5ndGggPT09IDEgKSByZXR1cm4gJy4vJztcXG5cXG5cXHRcXHRcXHRwYXJ0cy5wb3AoKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gcGFydHMuam9pbiggJy8nICkgKyAnLyc7XFxuXFxuXFx0XFx0fVxcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEpTT05Mb2FkZXIoIG1hbmFnZXIgKSB7XFxuXFxuXFx0XFx0aWYgKCB0eXBlb2YgbWFuYWdlciA9PT0gJ2Jvb2xlYW4nICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkpTT05Mb2FkZXI6IHNob3dTdGF0dXMgcGFyYW1ldGVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBjb25zdHJ1Y3Rvci4nICk7XFxuXFx0XFx0XFx0bWFuYWdlciA9IHVuZGVmaW5lZDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0dGhpcy5tYW5hZ2VyID0gKCBtYW5hZ2VyICE9PSB1bmRlZmluZWQgKSA/IG1hbmFnZXIgOiBEZWZhdWx0TG9hZGluZ01hbmFnZXI7XFxuXFxuXFx0XFx0dGhpcy53aXRoQ3JlZGVudGlhbHMgPSBmYWxzZTtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggSlNPTkxvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0XFx0dmFyIHRleHR1cmVQYXRoID0gdGhpcy50ZXh0dXJlUGF0aCAmJiAoIHR5cGVvZiB0aGlzLnRleHR1cmVQYXRoID09PSAnc3RyaW5nJyApID8gdGhpcy50ZXh0dXJlUGF0aCA6IExvYWRlclV0aWxzLmV4dHJhY3RVcmxCYXNlKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHR2YXIgbG9hZGVyID0gbmV3IEZpbGVMb2FkZXIoIHRoaXMubWFuYWdlciApO1xcblxcdFxcdFxcdGxvYWRlci5zZXRXaXRoQ3JlZGVudGlhbHMoIHRoaXMud2l0aENyZWRlbnRpYWxzICk7XFxuXFx0XFx0XFx0bG9hZGVyLmxvYWQoIHVybCwgZnVuY3Rpb24gKCB0ZXh0ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBqc29uID0gSlNPTi5wYXJzZSggdGV4dCApO1xcblxcdFxcdFxcdFxcdHZhciBtZXRhZGF0YSA9IGpzb24ubWV0YWRhdGE7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBtZXRhZGF0YSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB0eXBlID0gbWV0YWRhdGEudHlwZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHR5cGUgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ29iamVjdCcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLkpTT05Mb2FkZXI6ICcgKyB1cmwgKyAnIHNob3VsZCBiZSBsb2FkZWQgd2l0aCBUSFJFRS5PYmplY3RMb2FkZXIgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ3NjZW5lJyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuSlNPTkxvYWRlcjogJyArIHVybCArICcgc2hvdWxkIGJlIGxvYWRlZCB3aXRoIFRIUkVFLlNjZW5lTG9hZGVyIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR2YXIgb2JqZWN0ID0gc2NvcGUucGFyc2UoIGpzb24sIHRleHR1cmVQYXRoICk7XFxuXFx0XFx0XFx0XFx0b25Mb2FkKCBvYmplY3QuZ2VvbWV0cnksIG9iamVjdC5tYXRlcmlhbHMgKTtcXG5cXG5cXHRcXHRcXHR9LCBvblByb2dyZXNzLCBvbkVycm9yICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRUZXh0dXJlUGF0aDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnRleHR1cmVQYXRoID0gdmFsdWU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwYXJzZTogKCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gcGFyc2VNb2RlbCgganNvbiwgZ2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gaXNCaXRTZXQoIHZhbHVlLCBwb3NpdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gdmFsdWUgJiAoIDEgPDwgcG9zaXRpb24gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGksIGosIGZpLFxcblxcblxcdFxcdFxcdFxcdFxcdG9mZnNldCwgekxlbmd0aCxcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb2xvckluZGV4LCBub3JtYWxJbmRleCwgdXZJbmRleCwgbWF0ZXJpYWxJbmRleCxcXG5cXG5cXHRcXHRcXHRcXHRcXHR0eXBlLFxcblxcdFxcdFxcdFxcdFxcdGlzUXVhZCxcXG5cXHRcXHRcXHRcXHRcXHRoYXNNYXRlcmlhbCxcXG5cXHRcXHRcXHRcXHRcXHRoYXNGYWNlVmVydGV4VXYsXFxuXFx0XFx0XFx0XFx0XFx0aGFzRmFjZU5vcm1hbCwgaGFzRmFjZVZlcnRleE5vcm1hbCxcXG5cXHRcXHRcXHRcXHRcXHRoYXNGYWNlQ29sb3IsIGhhc0ZhY2VWZXJ0ZXhDb2xvcixcXG5cXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXgsIGZhY2UsIGZhY2VBLCBmYWNlQiwgaGV4LCBub3JtYWwsXFxuXFxuXFx0XFx0XFx0XFx0XFx0dXZMYXllciwgdXYsIHUsIHYsXFxuXFxuXFx0XFx0XFx0XFx0XFx0ZmFjZXMgPSBqc29uLmZhY2VzLFxcblxcdFxcdFxcdFxcdFxcdHZlcnRpY2VzID0ganNvbi52ZXJ0aWNlcyxcXG5cXHRcXHRcXHRcXHRcXHRub3JtYWxzID0ganNvbi5ub3JtYWxzLFxcblxcdFxcdFxcdFxcdFxcdGNvbG9ycyA9IGpzb24uY29sb3JzLFxcblxcblxcdFxcdFxcdFxcdFxcdHNjYWxlID0ganNvbi5zY2FsZSxcXG5cXG5cXHRcXHRcXHRcXHRcXHRuVXZMYXllcnMgPSAwO1xcblxcblxcblxcdFxcdFxcdFxcdGlmICgganNvbi51dnMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBkaXNyZWdhcmQgZW1wdHkgYXJyYXlzXFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPCBqc29uLnV2cy5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBqc29uLnV2c1sgaSBdLmxlbmd0aCApIG5VdkxheWVycyArKztcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPCBuVXZMYXllcnM7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkuZmFjZVZlcnRleFV2c1sgaSBdID0gW107XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRvZmZzZXQgPSAwO1xcblxcdFxcdFxcdFxcdHpMZW5ndGggPSB2ZXJ0aWNlcy5sZW5ndGg7XFxuXFxuXFx0XFx0XFx0XFx0d2hpbGUgKCBvZmZzZXQgPCB6TGVuZ3RoICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZlcnRleCA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmVydGV4LnggPSB2ZXJ0aWNlc1sgb2Zmc2V0ICsrIF0gKiBzY2FsZTtcXG5cXHRcXHRcXHRcXHRcXHR2ZXJ0ZXgueSA9IHZlcnRpY2VzWyBvZmZzZXQgKysgXSAqIHNjYWxlO1xcblxcdFxcdFxcdFxcdFxcdHZlcnRleC56ID0gdmVydGljZXNbIG9mZnNldCArKyBdICogc2NhbGU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkudmVydGljZXMucHVzaCggdmVydGV4ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdG9mZnNldCA9IDA7XFxuXFx0XFx0XFx0XFx0ekxlbmd0aCA9IGZhY2VzLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHR3aGlsZSAoIG9mZnNldCA8IHpMZW5ndGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dHlwZSA9IGZhY2VzWyBvZmZzZXQgKysgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpc1F1YWQgPSBpc0JpdFNldCggdHlwZSwgMCApO1xcblxcdFxcdFxcdFxcdFxcdGhhc01hdGVyaWFsID0gaXNCaXRTZXQoIHR5cGUsIDEgKTtcXG5cXHRcXHRcXHRcXHRcXHRoYXNGYWNlVmVydGV4VXYgPSBpc0JpdFNldCggdHlwZSwgMyApO1xcblxcdFxcdFxcdFxcdFxcdGhhc0ZhY2VOb3JtYWwgPSBpc0JpdFNldCggdHlwZSwgNCApO1xcblxcdFxcdFxcdFxcdFxcdGhhc0ZhY2VWZXJ0ZXhOb3JtYWwgPSBpc0JpdFNldCggdHlwZSwgNSApO1xcblxcdFxcdFxcdFxcdFxcdGhhc0ZhY2VDb2xvciA9IGlzQml0U2V0KCB0eXBlLCA2ICk7XFxuXFx0XFx0XFx0XFx0XFx0aGFzRmFjZVZlcnRleENvbG9yID0gaXNCaXRTZXQoIHR5cGUsIDcgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBjb25zb2xlLmxvZyhcXFwidHlwZVxcXCIsIHR5cGUsIFxcXCJiaXRzXFxcIiwgaXNRdWFkLCBoYXNNYXRlcmlhbCwgaGFzRmFjZVZlcnRleFV2LCBoYXNGYWNlTm9ybWFsLCBoYXNGYWNlVmVydGV4Tm9ybWFsLCBoYXNGYWNlQ29sb3IsIGhhc0ZhY2VWZXJ0ZXhDb2xvcik7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBpc1F1YWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZUEgPSBuZXcgRmFjZTMoKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRmYWNlQS5hID0gZmFjZXNbIG9mZnNldCBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdGZhY2VBLmIgPSBmYWNlc1sgb2Zmc2V0ICsgMSBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdGZhY2VBLmMgPSBmYWNlc1sgb2Zmc2V0ICsgMyBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZhY2VCID0gbmV3IEZhY2UzKCk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZUIuYSA9IGZhY2VzWyBvZmZzZXQgKyAxIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZUIuYiA9IGZhY2VzWyBvZmZzZXQgKyAyIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZUIuYyA9IGZhY2VzWyBvZmZzZXQgKyAzIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0b2Zmc2V0ICs9IDQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBoYXNNYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRtYXRlcmlhbEluZGV4ID0gZmFjZXNbIG9mZnNldCArKyBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2VBLm1hdGVyaWFsSW5kZXggPSBtYXRlcmlhbEluZGV4O1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2VCLm1hdGVyaWFsSW5kZXggPSBtYXRlcmlhbEluZGV4O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyB0byBnZXQgZmFjZSA8PT4gdXYgaW5kZXggY29ycmVzcG9uZGVuY2VcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmaSA9IGdlb21ldHJ5LmZhY2VzLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGhhc0ZhY2VWZXJ0ZXhVdiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IG5VdkxheWVyczsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR1dkxheWVyID0ganNvbi51dnNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5mYWNlVmVydGV4VXZzWyBpIF1bIGZpIF0gPSBbXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5mYWNlVmVydGV4VXZzWyBpIF1bIGZpICsgMSBdID0gW107XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggaiA9IDA7IGogPCA0OyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHV2SW5kZXggPSBmYWNlc1sgb2Zmc2V0ICsrIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dSA9IHV2TGF5ZXJbIHV2SW5kZXggKiAyIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0diA9IHV2TGF5ZXJbIHV2SW5kZXggKiAyICsgMSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHV2ID0gbmV3IFZlY3RvcjIoIHUsIHYgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGogIT09IDIgKSBnZW9tZXRyeS5mYWNlVmVydGV4VXZzWyBpIF1bIGZpIF0ucHVzaCggdXYgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGogIT09IDAgKSBnZW9tZXRyeS5mYWNlVmVydGV4VXZzWyBpIF1bIGZpICsgMSBdLnB1c2goIHV2ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBoYXNGYWNlTm9ybWFsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbEluZGV4ID0gZmFjZXNbIG9mZnNldCArKyBdICogMztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmYWNlQS5ub3JtYWwuc2V0KFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIG5vcm1hbEluZGV4ICsrIF0sXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgbm9ybWFsSW5kZXggKysgXSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBub3JtYWxJbmRleCBdXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmYWNlQi5ub3JtYWwuY29weSggZmFjZUEubm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggaGFzRmFjZVZlcnRleE5vcm1hbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IDQ7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsSW5kZXggPSBmYWNlc1sgb2Zmc2V0ICsrIF0gKiAzO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbCA9IG5ldyBWZWN0b3IzKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIG5vcm1hbEluZGV4ICsrIF0sXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgbm9ybWFsSW5kZXggKysgXSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBub3JtYWxJbmRleCBdXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0KTtcXG5cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGkgIT09IDIgKSBmYWNlQS52ZXJ0ZXhOb3JtYWxzLnB1c2goIG5vcm1hbCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggaSAhPT0gMCApIGZhY2VCLnZlcnRleE5vcm1hbHMucHVzaCggbm9ybWFsICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGhhc0ZhY2VDb2xvciApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb2xvckluZGV4ID0gZmFjZXNbIG9mZnNldCArKyBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGhleCA9IGNvbG9yc1sgY29sb3JJbmRleCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2VBLmNvbG9yLnNldEhleCggaGV4ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZmFjZUIuY29sb3Iuc2V0SGV4KCBoZXggKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBoYXNGYWNlVmVydGV4Q29sb3IgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggaSA9IDA7IGkgPCA0OyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbG9ySW5kZXggPSBmYWNlc1sgb2Zmc2V0ICsrIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aGV4ID0gY29sb3JzWyBjb2xvckluZGV4IF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBpICE9PSAyICkgZmFjZUEudmVydGV4Q29sb3JzLnB1c2goIG5ldyBDb2xvciggaGV4ICkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGkgIT09IDAgKSBmYWNlQi52ZXJ0ZXhDb2xvcnMucHVzaCggbmV3IENvbG9yKCBoZXggKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkuZmFjZXMucHVzaCggZmFjZUEgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5mYWNlcy5wdXNoKCBmYWNlQiApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZSA9IG5ldyBGYWNlMygpO1xcblxcdFxcdFxcdFxcdFxcdFxcdGZhY2UuYSA9IGZhY2VzWyBvZmZzZXQgKysgXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRmYWNlLmIgPSBmYWNlc1sgb2Zmc2V0ICsrIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZmFjZS5jID0gZmFjZXNbIG9mZnNldCArKyBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggaGFzTWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0bWF0ZXJpYWxJbmRleCA9IGZhY2VzWyBvZmZzZXQgKysgXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmYWNlLm1hdGVyaWFsSW5kZXggPSBtYXRlcmlhbEluZGV4O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyB0byBnZXQgZmFjZSA8PT4gdXYgaW5kZXggY29ycmVzcG9uZGVuY2VcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmaSA9IGdlb21ldHJ5LmZhY2VzLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGhhc0ZhY2VWZXJ0ZXhVdiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCBpID0gMDsgaSA8IG5VdkxheWVyczsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR1dkxheWVyID0ganNvbi51dnNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5mYWNlVmVydGV4VXZzWyBpIF1bIGZpIF0gPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCBqID0gMDsgaiA8IDM7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dXZJbmRleCA9IGZhY2VzWyBvZmZzZXQgKysgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR1ID0gdXZMYXllclsgdXZJbmRleCAqIDIgXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2ID0gdXZMYXllclsgdXZJbmRleCAqIDIgKyAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dXYgPSBuZXcgVmVjdG9yMiggdSwgdiApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5LmZhY2VWZXJ0ZXhVdnNbIGkgXVsgZmkgXS5wdXNoKCB1diApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggaGFzRmFjZU5vcm1hbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxJbmRleCA9IGZhY2VzWyBvZmZzZXQgKysgXSAqIDM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZmFjZS5ub3JtYWwuc2V0KFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIG5vcm1hbEluZGV4ICsrIF0sXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgbm9ybWFsSW5kZXggKysgXSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBub3JtYWxJbmRleCBdXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBoYXNGYWNlVmVydGV4Tm9ybWFsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIGkgPSAwOyBpIDwgMzsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxJbmRleCA9IGZhY2VzWyBvZmZzZXQgKysgXSAqIDM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsID0gbmV3IFZlY3RvcjMoXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bm9ybWFsc1sgbm9ybWFsSW5kZXggKysgXSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRub3JtYWxzWyBub3JtYWxJbmRleCArKyBdLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG5vcm1hbHNbIG5vcm1hbEluZGV4IF1cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2UudmVydGV4Tm9ybWFscy5wdXNoKCBub3JtYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggaGFzRmFjZUNvbG9yICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbG9ySW5kZXggPSBmYWNlc1sgb2Zmc2V0ICsrIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZmFjZS5jb2xvci5zZXRIZXgoIGNvbG9yc1sgY29sb3JJbmRleCBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggaGFzRmFjZVZlcnRleENvbG9yICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIGkgPSAwOyBpIDwgMzsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjb2xvckluZGV4ID0gZmFjZXNbIG9mZnNldCArKyBdO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGZhY2UudmVydGV4Q29sb3JzLnB1c2goIG5ldyBDb2xvciggY29sb3JzWyBjb2xvckluZGV4IF0gKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkuZmFjZXMucHVzaCggZmFjZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZ1bmN0aW9uIHBhcnNlU2tpbigganNvbiwgZ2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGluZmx1ZW5jZXNQZXJWZXJ0ZXggPSAoIGpzb24uaW5mbHVlbmNlc1BlclZlcnRleCAhPT0gdW5kZWZpbmVkICkgPyBqc29uLmluZmx1ZW5jZXNQZXJWZXJ0ZXggOiAyO1xcblxcblxcdFxcdFxcdFxcdGlmICgganNvbi5za2luV2VpZ2h0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBqc29uLnNraW5XZWlnaHRzLmxlbmd0aDsgaSA8IGw7IGkgKz0gaW5mbHVlbmNlc1BlclZlcnRleCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgeCA9IGpzb24uc2tpbldlaWdodHNbIGkgXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgeSA9ICggaW5mbHVlbmNlc1BlclZlcnRleCA+IDEgKSA/IGpzb24uc2tpbldlaWdodHNbIGkgKyAxIF0gOiAwO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZhciB6ID0gKCBpbmZsdWVuY2VzUGVyVmVydGV4ID4gMiApID8ganNvbi5za2luV2VpZ2h0c1sgaSArIDIgXSA6IDA7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHcgPSAoIGluZmx1ZW5jZXNQZXJWZXJ0ZXggPiAzICkgPyBqc29uLnNraW5XZWlnaHRzWyBpICsgMyBdIDogMDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5za2luV2VpZ2h0cy5wdXNoKCBuZXcgVmVjdG9yNCggeCwgeSwgeiwgdyApICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGpzb24uc2tpbkluZGljZXMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0ganNvbi5za2luSW5kaWNlcy5sZW5ndGg7IGkgPCBsOyBpICs9IGluZmx1ZW5jZXNQZXJWZXJ0ZXggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGEgPSBqc29uLnNraW5JbmRpY2VzWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGIgPSAoIGluZmx1ZW5jZXNQZXJWZXJ0ZXggPiAxICkgPyBqc29uLnNraW5JbmRpY2VzWyBpICsgMSBdIDogMDtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgYyA9ICggaW5mbHVlbmNlc1BlclZlcnRleCA+IDIgKSA/IGpzb24uc2tpbkluZGljZXNbIGkgKyAyIF0gOiAwO1xcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBkID0gKCBpbmZsdWVuY2VzUGVyVmVydGV4ID4gMyApID8ganNvbi5za2luSW5kaWNlc1sgaSArIDMgXSA6IDA7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkuc2tpbkluZGljZXMucHVzaCggbmV3IFZlY3RvcjQoIGEsIGIsIGMsIGQgKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkuYm9uZXMgPSBqc29uLmJvbmVzO1xcblxcblxcdFxcdFxcdFxcdGlmICggZ2VvbWV0cnkuYm9uZXMgJiYgZ2VvbWV0cnkuYm9uZXMubGVuZ3RoID4gMCAmJiAoIGdlb21ldHJ5LnNraW5XZWlnaHRzLmxlbmd0aCAhPT0gZ2VvbWV0cnkuc2tpbkluZGljZXMubGVuZ3RoIHx8IGdlb21ldHJ5LnNraW5JbmRpY2VzLmxlbmd0aCAhPT0gZ2VvbWV0cnkudmVydGljZXMubGVuZ3RoICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnV2hlbiBza2lubmluZywgbnVtYmVyIG9mIHZlcnRpY2VzICgnICsgZ2VvbWV0cnkudmVydGljZXMubGVuZ3RoICsgJyksIHNraW5JbmRpY2VzICgnICtcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5za2luSW5kaWNlcy5sZW5ndGggKyAnKSwgYW5kIHNraW5XZWlnaHRzICgnICsgZ2VvbWV0cnkuc2tpbldlaWdodHMubGVuZ3RoICsgJykgc2hvdWxkIG1hdGNoLicgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZ1bmN0aW9uIHBhcnNlTW9ycGhpbmcoIGpzb24sIGdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBzY2FsZSA9IGpzb24uc2NhbGU7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBqc29uLm1vcnBoVGFyZ2V0cyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGpzb24ubW9ycGhUYXJnZXRzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkubW9ycGhUYXJnZXRzWyBpIF0gPSB7fTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeS5tb3JwaFRhcmdldHNbIGkgXS5uYW1lID0ganNvbi5tb3JwaFRhcmdldHNbIGkgXS5uYW1lO1xcblxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5Lm1vcnBoVGFyZ2V0c1sgaSBdLnZlcnRpY2VzID0gW107XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGRzdFZlcnRpY2VzID0gZ2VvbWV0cnkubW9ycGhUYXJnZXRzWyBpIF0udmVydGljZXM7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIHNyY1ZlcnRpY2VzID0ganNvbi5tb3JwaFRhcmdldHNbIGkgXS52ZXJ0aWNlcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgdiA9IDAsIHZsID0gc3JjVmVydGljZXMubGVuZ3RoOyB2IDwgdmw7IHYgKz0gMyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgdmVydGV4ID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2ZXJ0ZXgueCA9IHNyY1ZlcnRpY2VzWyB2IF0gKiBzY2FsZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2ZXJ0ZXgueSA9IHNyY1ZlcnRpY2VzWyB2ICsgMSBdICogc2NhbGU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmVydGV4LnogPSBzcmNWZXJ0aWNlc1sgdiArIDIgXSAqIHNjYWxlO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGRzdFZlcnRpY2VzLnB1c2goIHZlcnRleCApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICgganNvbi5tb3JwaENvbG9ycyAhPT0gdW5kZWZpbmVkICYmIGpzb24ubW9ycGhDb2xvcnMubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5KU09OTG9hZGVyOiBcXFwibW9ycGhDb2xvcnNcXFwiIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFVzaW5nIHRoZW0gYXMgZmFjZSBjb2xvcnMuJyApO1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBmYWNlcyA9IGdlb21ldHJ5LmZhY2VzO1xcblxcdFxcdFxcdFxcdFxcdHZhciBtb3JwaENvbG9ycyA9IGpzb24ubW9ycGhDb2xvcnNbIDAgXS5jb2xvcnM7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gZmFjZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmYWNlc1sgaSBdLmNvbG9yLmZyb21BcnJheSggbW9ycGhDb2xvcnMsIGkgKiAzICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gcGFyc2VBbmltYXRpb25zKCBqc29uLCBnZW9tZXRyeSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgb3V0cHV0QW5pbWF0aW9ucyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdC8vIHBhcnNlIG9sZCBzdHlsZSBCb25lL0hpZXJhcmNoeSBhbmltYXRpb25zXFxuXFx0XFx0XFx0XFx0dmFyIGFuaW1hdGlvbnMgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGpzb24uYW5pbWF0aW9uICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YW5pbWF0aW9ucy5wdXNoKCBqc29uLmFuaW1hdGlvbiApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGpzb24uYW5pbWF0aW9ucyAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICgganNvbi5hbmltYXRpb25zLmxlbmd0aCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRhbmltYXRpb25zID0gYW5pbWF0aW9ucy5jb25jYXQoIGpzb24uYW5pbWF0aW9ucyApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YW5pbWF0aW9ucy5wdXNoKCBqc29uLmFuaW1hdGlvbnMgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGFuaW1hdGlvbnMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBjbGlwID0gQW5pbWF0aW9uQ2xpcC5wYXJzZUFuaW1hdGlvbiggYW5pbWF0aW9uc1sgaSBdLCBnZW9tZXRyeS5ib25lcyApO1xcblxcdFxcdFxcdFxcdFxcdGlmICggY2xpcCApIG91dHB1dEFuaW1hdGlvbnMucHVzaCggY2xpcCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBwYXJzZSBpbXBsaWNpdCBtb3JwaCBhbmltYXRpb25zXFxuXFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyeS5tb3JwaFRhcmdldHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gVE9ETzogRmlndXJlIG91dCB3aGF0IGFuIGFwcHJvcHJhaXRlIEZQUyBpcyBmb3IgbW9ycGggdGFyZ2V0IGFuaW1hdGlvbnMgLS0gZGVmYXVsdGluZyB0byAxMCwgYnV0IHJlYWxseSBpdCBpcyBjb21wbGV0ZWx5IGFyYml0cmFyeS5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgbW9ycGhBbmltYXRpb25DbGlwcyA9IEFuaW1hdGlvbkNsaXAuQ3JlYXRlQ2xpcHNGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZXMoIGdlb21ldHJ5Lm1vcnBoVGFyZ2V0cywgMTAgKTtcXG5cXHRcXHRcXHRcXHRcXHRvdXRwdXRBbmltYXRpb25zID0gb3V0cHV0QW5pbWF0aW9ucy5jb25jYXQoIG1vcnBoQW5pbWF0aW9uQ2xpcHMgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvdXRwdXRBbmltYXRpb25zLmxlbmd0aCA+IDAgKSBnZW9tZXRyeS5hbmltYXRpb25zID0gb3V0cHV0QW5pbWF0aW9ucztcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uICgganNvbiwgdGV4dHVyZVBhdGggKSB7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBqc29uLmRhdGEgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBHZW9tZXRyeSA0LjAgc3BlY1xcblxcdFxcdFxcdFxcdFxcdGpzb24gPSBqc29uLmRhdGE7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICgganNvbi5zY2FsZSAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGpzb24uc2NhbGUgPSAxLjAgLyBqc29uLnNjYWxlO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0anNvbi5zY2FsZSA9IDEuMDtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGdlb21ldHJ5ID0gbmV3IEdlb21ldHJ5KCk7XFxuXFxuXFx0XFx0XFx0XFx0cGFyc2VNb2RlbCgganNvbiwgZ2VvbWV0cnkgKTtcXG5cXHRcXHRcXHRcXHRwYXJzZVNraW4oIGpzb24sIGdlb21ldHJ5ICk7XFxuXFx0XFx0XFx0XFx0cGFyc2VNb3JwaGluZygganNvbiwgZ2VvbWV0cnkgKTtcXG5cXHRcXHRcXHRcXHRwYXJzZUFuaW1hdGlvbnMoIGpzb24sIGdlb21ldHJ5ICk7XFxuXFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkuY29tcHV0ZUZhY2VOb3JtYWxzKCk7XFxuXFx0XFx0XFx0XFx0Z2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBqc29uLm1hdGVyaWFscyA9PT0gdW5kZWZpbmVkIHx8IGpzb24ubWF0ZXJpYWxzLmxlbmd0aCA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4geyBnZW9tZXRyeTogZ2VvbWV0cnkgfTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBtYXRlcmlhbHMgPSBMb2FkZXIucHJvdG90eXBlLmluaXRNYXRlcmlhbHMoIGpzb24ubWF0ZXJpYWxzLCB0ZXh0dXJlUGF0aCwgdGhpcy5jcm9zc09yaWdpbiApO1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiB7IGdlb21ldHJ5OiBnZW9tZXRyeSwgbWF0ZXJpYWxzOiBtYXRlcmlhbHMgfTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9ICkoKVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIE9iamVjdExvYWRlciggbWFuYWdlciApIHtcXG5cXG5cXHRcXHR0aGlzLm1hbmFnZXIgPSAoIG1hbmFnZXIgIT09IHVuZGVmaW5lZCApID8gbWFuYWdlciA6IERlZmF1bHRMb2FkaW5nTWFuYWdlcjtcXG5cXHRcXHR0aGlzLnRleHR1cmVQYXRoID0gJyc7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIE9iamVjdExvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy50ZXh0dXJlUGF0aCA9PT0gJycgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy50ZXh0dXJlUGF0aCA9IHVybC5zdWJzdHJpbmcoIDAsIHVybC5sYXN0SW5kZXhPZiggJy8nICkgKyAxICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0XFx0dmFyIGxvYWRlciA9IG5ldyBGaWxlTG9hZGVyKCBzY29wZS5tYW5hZ2VyICk7XFxuXFx0XFx0XFx0bG9hZGVyLmxvYWQoIHVybCwgZnVuY3Rpb24gKCB0ZXh0ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBqc29uID0gbnVsbDtcXG5cXG5cXHRcXHRcXHRcXHR0cnkge1xcblxcblxcdFxcdFxcdFxcdFxcdGpzb24gPSBKU09OLnBhcnNlKCB0ZXh0ICk7XFxuXFxuXFx0XFx0XFx0XFx0fSBjYXRjaCAoIGVycm9yICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggb25FcnJvciAhPT0gdW5kZWZpbmVkICkgb25FcnJvciggZXJyb3IgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUU6T2JqZWN0TG9hZGVyOiBDYW5cXFxcJ3QgcGFyc2UgJyArIHVybCArICcuJywgZXJyb3IubWVzc2FnZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG1ldGFkYXRhID0ganNvbi5tZXRhZGF0YTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG1ldGFkYXRhID09PSB1bmRlZmluZWQgfHwgbWV0YWRhdGEudHlwZSA9PT0gdW5kZWZpbmVkIHx8IG1ldGFkYXRhLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ2dlb21ldHJ5JyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuT2JqZWN0TG9hZGVyOiBDYW5cXFxcJ3QgbG9hZCAnICsgdXJsICsgJy4gVXNlIFRIUkVFLkpTT05Mb2FkZXIgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRzY29wZS5wYXJzZSgganNvbiwgb25Mb2FkICk7XFxuXFxuXFx0XFx0XFx0fSwgb25Qcm9ncmVzcywgb25FcnJvciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0VGV4dHVyZVBhdGg6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy50ZXh0dXJlUGF0aCA9IHZhbHVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q3Jvc3NPcmlnaW46IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jcm9zc09yaWdpbiA9IHZhbHVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cGFyc2U6IGZ1bmN0aW9uICgganNvbiwgb25Mb2FkICkge1xcblxcblxcdFxcdFxcdHZhciBzaGFwZXMgPSB0aGlzLnBhcnNlU2hhcGUoIGpzb24uc2hhcGVzICk7XFxuXFx0XFx0XFx0dmFyIGdlb21ldHJpZXMgPSB0aGlzLnBhcnNlR2VvbWV0cmllcygganNvbi5nZW9tZXRyaWVzLCBzaGFwZXMgKTtcXG5cXG5cXHRcXHRcXHR2YXIgaW1hZ2VzID0gdGhpcy5wYXJzZUltYWdlcygganNvbi5pbWFnZXMsIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9uTG9hZCAhPT0gdW5kZWZpbmVkICkgb25Mb2FkKCBvYmplY3QgKTtcXG5cXG5cXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0dmFyIHRleHR1cmVzID0gdGhpcy5wYXJzZVRleHR1cmVzKCBqc29uLnRleHR1cmVzLCBpbWFnZXMgKTtcXG5cXHRcXHRcXHR2YXIgbWF0ZXJpYWxzID0gdGhpcy5wYXJzZU1hdGVyaWFscygganNvbi5tYXRlcmlhbHMsIHRleHR1cmVzICk7XFxuXFxuXFx0XFx0XFx0dmFyIG9iamVjdCA9IHRoaXMucGFyc2VPYmplY3QoIGpzb24ub2JqZWN0LCBnZW9tZXRyaWVzLCBtYXRlcmlhbHMgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24uYW5pbWF0aW9ucyApIHtcXG5cXG5cXHRcXHRcXHRcXHRvYmplY3QuYW5pbWF0aW9ucyA9IHRoaXMucGFyc2VBbmltYXRpb25zKCBqc29uLmFuaW1hdGlvbnMgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uLmltYWdlcyA9PT0gdW5kZWZpbmVkIHx8IGpzb24uaW1hZ2VzLmxlbmd0aCA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9uTG9hZCAhPT0gdW5kZWZpbmVkICkgb25Mb2FkKCBvYmplY3QgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG9iamVjdDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHBhcnNlU2hhcGU6IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgc2hhcGVzID0ge307XFxuXFxuXFx0XFx0XFx0aWYgKCBqc29uICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0ganNvbi5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBzaGFwZSA9IG5ldyBTaGFwZSgpLmZyb21KU09OKCBqc29uWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzaGFwZXNbIHNoYXBlLnV1aWQgXSA9IHNoYXBlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHNoYXBlcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHBhcnNlR2VvbWV0cmllczogZnVuY3Rpb24gKCBqc29uLCBzaGFwZXMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGdlb21ldHJpZXMgPSB7fTtcXG5cXG5cXHRcXHRcXHRpZiAoIGpzb24gIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZ2VvbWV0cnlMb2FkZXIgPSBuZXcgSlNPTkxvYWRlcigpO1xcblxcdFxcdFxcdFxcdHZhciBidWZmZXJHZW9tZXRyeUxvYWRlciA9IG5ldyBCdWZmZXJHZW9tZXRyeUxvYWRlcigpO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGpzb24ubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZ2VvbWV0cnk7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGRhdGEgPSBqc29uWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0c3dpdGNoICggZGF0YS50eXBlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ1BsYW5lR2VvbWV0cnknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ1BsYW5lQnVmZmVyR2VvbWV0cnknOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gbmV3IEdlb21ldHJpZXNbIGRhdGEudHlwZSBdKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEud2lkdGgsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5oZWlnaHQsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS53aWR0aFNlZ21lbnRzLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuaGVpZ2h0U2VnbWVudHNcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ0JveEdlb21ldHJ5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdCb3hCdWZmZXJHZW9tZXRyeSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnQ3ViZUdlb21ldHJ5JzogLy8gYmFja3dhcmRzIGNvbXBhdGlibGVcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeSA9IG5ldyBHZW9tZXRyaWVzWyBkYXRhLnR5cGUgXShcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLndpZHRoLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuaGVpZ2h0LFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuZGVwdGgsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS53aWR0aFNlZ21lbnRzLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuaGVpZ2h0U2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5kZXB0aFNlZ21lbnRzXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdDaXJjbGVHZW9tZXRyeSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnQ2lyY2xlQnVmZmVyR2VvbWV0cnknOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gbmV3IEdlb21ldHJpZXNbIGRhdGEudHlwZSBdKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaXVzLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuc2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS50aGV0YVN0YXJ0LFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEudGhldGFMZW5ndGhcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ0N5bGluZGVyR2VvbWV0cnknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ0N5bGluZGVyQnVmZmVyR2VvbWV0cnknOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gbmV3IEdlb21ldHJpZXNbIGRhdGEudHlwZSBdKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaXVzVG9wLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaXVzQm90dG9tLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuaGVpZ2h0LFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5oZWlnaHRTZWdtZW50cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLm9wZW5FbmRlZCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnRoZXRhU3RhcnQsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS50aGV0YUxlbmd0aFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnQ29uZUdlb21ldHJ5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdDb25lQnVmZmVyR2VvbWV0cnknOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gbmV3IEdlb21ldHJpZXNbIGRhdGEudHlwZSBdKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaXVzLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuaGVpZ2h0LFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5oZWlnaHRTZWdtZW50cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLm9wZW5FbmRlZCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnRoZXRhU3RhcnQsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS50aGV0YUxlbmd0aFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnU3BoZXJlR2VvbWV0cnknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ1NwaGVyZUJ1ZmZlckdlb21ldHJ5JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeSA9IG5ldyBHZW9tZXRyaWVzWyBkYXRhLnR5cGUgXShcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnJhZGl1cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLndpZHRoU2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5oZWlnaHRTZWdtZW50cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnBoaVN0YXJ0LFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucGhpTGVuZ3RoLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEudGhldGFTdGFydCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnRoZXRhTGVuZ3RoXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdEb2RlY2FoZWRyb25HZW9tZXRyeSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ0ljb3NhaGVkcm9uR2VvbWV0cnknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ0ljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ09jdGFoZWRyb25HZW9tZXRyeSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdUZXRyYWhlZHJvbkdlb21ldHJ5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRnZW9tZXRyeSA9IG5ldyBHZW9tZXRyaWVzWyBkYXRhLnR5cGUgXShcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnJhZGl1cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLmRldGFpbFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnUmluZ0dlb21ldHJ5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdSaW5nQnVmZmVyR2VvbWV0cnknOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gbmV3IEdlb21ldHJpZXNbIGRhdGEudHlwZSBdKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuaW5uZXJSYWRpdXMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5vdXRlclJhZGl1cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnRoZXRhU2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5waGlTZWdtZW50cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnRoZXRhU3RhcnQsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS50aGV0YUxlbmd0aFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnVG9ydXNHZW9tZXRyeSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnVG9ydXNCdWZmZXJHZW9tZXRyeSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkgPSBuZXcgR2VvbWV0cmllc1sgZGF0YS50eXBlIF0oXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5yYWRpdXMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS50dWJlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS50dWJ1bGFyU2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5hcmNcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ1RvcnVzS25vdEdlb21ldHJ5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdUb3J1c0tub3RCdWZmZXJHZW9tZXRyeSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkgPSBuZXcgR2VvbWV0cmllc1sgZGF0YS50eXBlIF0oXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5yYWRpdXMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS50dWJlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEudHVidWxhclNlZ21lbnRzLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucmFkaWFsU2VnbWVudHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5wLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnTGF0aGVHZW9tZXRyeSc6XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnTGF0aGVCdWZmZXJHZW9tZXRyeSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkgPSBuZXcgR2VvbWV0cmllc1sgZGF0YS50eXBlIF0oXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5wb2ludHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5zZWdtZW50cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLnBoaVN0YXJ0LFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEucGhpTGVuZ3RoXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdQb2x5aGVkcm9uR2VvbWV0cnknOlxcblxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ1BvbHloZWRyb25CdWZmZXJHZW9tZXRyeSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkgPSBuZXcgR2VvbWV0cmllc1sgZGF0YS50eXBlIF0oXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS52ZXJ0aWNlcyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkYXRhLmluZGljZXMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5yYWRpdXMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGF0YS5kZXRhaWxzXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0KTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdTaGFwZUdlb21ldHJ5JzpcXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdTaGFwZUJ1ZmZlckdlb21ldHJ5JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgZ2VvbWV0cnlTaGFwZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBkYXRhLnNoYXBlcy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBzaGFwZSA9IHNoYXBlc1sgZGF0YS5zaGFwZXNbIGkgXSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5U2hhcGVzLnB1c2goIHNoYXBlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gbmV3IEdlb21ldHJpZXNbIGRhdGEudHlwZSBdKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5U2hhcGVzLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGRhdGEuY3VydmVTZWdtZW50c1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnQnVmZmVyR2VvbWV0cnknOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5ID0gYnVmZmVyR2VvbWV0cnlMb2FkZXIucGFyc2UoIGRhdGEgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdHZW9tZXRyeSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Z2VvbWV0cnkgPSBnZW9tZXRyeUxvYWRlci5wYXJzZSggZGF0YSwgdGhpcy50ZXh0dXJlUGF0aCApLmdlb21ldHJ5O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGRlZmF1bHQ6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuT2JqZWN0TG9hZGVyOiBVbnN1cHBvcnRlZCBnZW9tZXRyeSB0eXBlIFxcXCInICsgZGF0YS50eXBlICsgJ1xcXCInICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGdlb21ldHJ5LnV1aWQgPSBkYXRhLnV1aWQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLm5hbWUgIT09IHVuZGVmaW5lZCApIGdlb21ldHJ5Lm5hbWUgPSBkYXRhLm5hbWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Z2VvbWV0cmllc1sgZGF0YS51dWlkIF0gPSBnZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBnZW9tZXRyaWVzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cGFyc2VNYXRlcmlhbHM6IGZ1bmN0aW9uICgganNvbiwgdGV4dHVyZXMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG1hdGVyaWFscyA9IHt9O1xcblxcblxcdFxcdFxcdGlmICgganNvbiAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBsb2FkZXIgPSBuZXcgTWF0ZXJpYWxMb2FkZXIoKTtcXG5cXHRcXHRcXHRcXHRsb2FkZXIuc2V0VGV4dHVyZXMoIHRleHR1cmVzICk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0ganNvbi5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBkYXRhID0ganNvblsgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS50eXBlID09PSAnTXVsdGlNYXRlcmlhbCcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gRGVwcmVjYXRlZFxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBhcnJheSA9IFtdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMDsgaiA8IGRhdGEubWF0ZXJpYWxzLmxlbmd0aDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRhcnJheS5wdXNoKCBsb2FkZXIucGFyc2UoIGRhdGEubWF0ZXJpYWxzWyBqIF0gKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRtYXRlcmlhbHNbIGRhdGEudXVpZCBdID0gYXJyYXk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRtYXRlcmlhbHNbIGRhdGEudXVpZCBdID0gbG9hZGVyLnBhcnNlKCBkYXRhICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG1hdGVyaWFscztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHBhcnNlQW5pbWF0aW9uczogZnVuY3Rpb24gKCBqc29uICkge1xcblxcblxcdFxcdFxcdHZhciBhbmltYXRpb25zID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwganNvbi5sZW5ndGg7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGNsaXAgPSBBbmltYXRpb25DbGlwLnBhcnNlKCBqc29uWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHRhbmltYXRpb25zLnB1c2goIGNsaXAgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGFuaW1hdGlvbnM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwYXJzZUltYWdlczogZnVuY3Rpb24gKCBqc29uLCBvbkxvYWQgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHNjb3BlID0gdGhpcztcXG5cXHRcXHRcXHR2YXIgaW1hZ2VzID0ge307XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gbG9hZEltYWdlKCB1cmwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtU3RhcnQoIHVybCApO1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBsb2FkZXIubG9hZCggdXJsLCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9LCB1bmRlZmluZWQsIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzY29wZS5tYW5hZ2VyLml0ZW1FbmQoIHVybCApO1xcblxcdFxcdFxcdFxcdFxcdHNjb3BlLm1hbmFnZXIuaXRlbUVycm9yKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICgganNvbiAhPT0gdW5kZWZpbmVkICYmIGpzb24ubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbWFuYWdlciA9IG5ldyBMb2FkaW5nTWFuYWdlciggb25Mb2FkICk7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGxvYWRlciA9IG5ldyBJbWFnZUxvYWRlciggbWFuYWdlciApO1xcblxcdFxcdFxcdFxcdGxvYWRlci5zZXRDcm9zc09yaWdpbiggdGhpcy5jcm9zc09yaWdpbiApO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGpzb24ubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgaW1hZ2UgPSBqc29uWyBpIF07XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHBhdGggPSAvXihcXFxcL1xcXFwvKXwoW2Etel0rOihcXFxcL1xcXFwvKT8pL2kudGVzdCggaW1hZ2UudXJsICkgPyBpbWFnZS51cmwgOiBzY29wZS50ZXh0dXJlUGF0aCArIGltYWdlLnVybDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbWFnZXNbIGltYWdlLnV1aWQgXSA9IGxvYWRJbWFnZSggcGF0aCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGltYWdlcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHBhcnNlVGV4dHVyZXM6IGZ1bmN0aW9uICgganNvbiwgaW1hZ2VzICkge1xcblxcblxcdFxcdFxcdGZ1bmN0aW9uIHBhcnNlQ29uc3RhbnQoIHZhbHVlLCB0eXBlICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyApIHJldHVybiB2YWx1ZTtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5PYmplY3RMb2FkZXIucGFyc2VUZXh0dXJlOiBDb25zdGFudCBzaG91bGQgYmUgaW4gbnVtZXJpYyBmb3JtLicsIHZhbHVlICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHR5cGVbIHZhbHVlIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciB0ZXh0dXJlcyA9IHt9O1xcblxcblxcdFxcdFxcdGlmICgganNvbiAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGpzb24ubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZGF0YSA9IGpzb25bIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEuaW1hZ2UgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5PYmplY3RMb2FkZXI6IE5vIFxcXCJpbWFnZVxcXCIgc3BlY2lmaWVkIGZvcicsIGRhdGEudXVpZCApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGltYWdlc1sgZGF0YS5pbWFnZSBdID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgaW1hZ2UnLCBkYXRhLmltYWdlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdHZhciB0ZXh0dXJlID0gbmV3IFRleHR1cmUoIGltYWdlc1sgZGF0YS5pbWFnZSBdICk7XFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZS5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGV4dHVyZS51dWlkID0gZGF0YS51dWlkO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5uYW1lICE9PSB1bmRlZmluZWQgKSB0ZXh0dXJlLm5hbWUgPSBkYXRhLm5hbWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLm1hcHBpbmcgIT09IHVuZGVmaW5lZCApIHRleHR1cmUubWFwcGluZyA9IHBhcnNlQ29uc3RhbnQoIGRhdGEubWFwcGluZywgVEVYVFVSRV9NQVBQSU5HICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLm9mZnNldCAhPT0gdW5kZWZpbmVkICkgdGV4dHVyZS5vZmZzZXQuZnJvbUFycmF5KCBkYXRhLm9mZnNldCApO1xcblxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5yZXBlYXQgIT09IHVuZGVmaW5lZCApIHRleHR1cmUucmVwZWF0LmZyb21BcnJheSggZGF0YS5yZXBlYXQgKTtcXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEuY2VudGVyICE9PSB1bmRlZmluZWQgKSB0ZXh0dXJlLmNlbnRlci5mcm9tQXJyYXkoIGRhdGEuY2VudGVyICk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLnJvdGF0aW9uICE9PSB1bmRlZmluZWQgKSB0ZXh0dXJlLnJvdGF0aW9uID0gZGF0YS5yb3RhdGlvbjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEud3JhcCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRleHR1cmUud3JhcFMgPSBwYXJzZUNvbnN0YW50KCBkYXRhLndyYXBbIDAgXSwgVEVYVFVSRV9XUkFQUElORyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHRleHR1cmUud3JhcFQgPSBwYXJzZUNvbnN0YW50KCBkYXRhLndyYXBbIDEgXSwgVEVYVFVSRV9XUkFQUElORyApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEubWluRmlsdGVyICE9PSB1bmRlZmluZWQgKSB0ZXh0dXJlLm1pbkZpbHRlciA9IHBhcnNlQ29uc3RhbnQoIGRhdGEubWluRmlsdGVyLCBURVhUVVJFX0ZJTFRFUiApO1xcblxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5tYWdGaWx0ZXIgIT09IHVuZGVmaW5lZCApIHRleHR1cmUubWFnRmlsdGVyID0gcGFyc2VDb25zdGFudCggZGF0YS5tYWdGaWx0ZXIsIFRFWFRVUkVfRklMVEVSICk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLmFuaXNvdHJvcHkgIT09IHVuZGVmaW5lZCApIHRleHR1cmUuYW5pc290cm9weSA9IGRhdGEuYW5pc290cm9weTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEuZmxpcFkgIT09IHVuZGVmaW5lZCApIHRleHR1cmUuZmxpcFkgPSBkYXRhLmZsaXBZO1xcblxcblxcdFxcdFxcdFxcdFxcdHRleHR1cmVzWyBkYXRhLnV1aWQgXSA9IHRleHR1cmU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGV4dHVyZXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwYXJzZU9iamVjdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBtYXRyaXggPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiBwYXJzZU9iamVjdCggZGF0YSwgZ2VvbWV0cmllcywgbWF0ZXJpYWxzICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBvYmplY3Q7XFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gZ2V0R2VvbWV0cnkoIG5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBnZW9tZXRyaWVzWyBuYW1lIF0gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBnZW9tZXRyeScsIG5hbWUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGdlb21ldHJpZXNbIG5hbWUgXTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gZ2V0TWF0ZXJpYWwoIG5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBuYW1lID09PSB1bmRlZmluZWQgKSByZXR1cm4gdW5kZWZpbmVkO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggQXJyYXkuaXNBcnJheSggbmFtZSApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBhcnJheSA9IFtdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IG5hbWUubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgdXVpZCA9IG5hbWVbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIG1hdGVyaWFsc1sgdXVpZCBdID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgbWF0ZXJpYWwnLCB1dWlkICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGFycmF5LnB1c2goIG1hdGVyaWFsc1sgdXVpZCBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBhcnJheTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBtYXRlcmlhbHNbIG5hbWUgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsJywgbmFtZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gbWF0ZXJpYWxzWyBuYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHN3aXRjaCAoIGRhdGEudHlwZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdTY2VuZSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0ID0gbmV3IFNjZW5lKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLmJhY2tncm91bmQgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIE51bWJlci5pc0ludGVnZXIoIGRhdGEuYmFja2dyb3VuZCApICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdC5iYWNrZ3JvdW5kID0gbmV3IENvbG9yKCBkYXRhLmJhY2tncm91bmQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5mb2cgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEuZm9nLnR5cGUgPT09ICdGb2cnICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdC5mb2cgPSBuZXcgRm9nKCBkYXRhLmZvZy5jb2xvciwgZGF0YS5mb2cubmVhciwgZGF0YS5mb2cuZmFyICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIGlmICggZGF0YS5mb2cudHlwZSA9PT0gJ0ZvZ0V4cDInICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdC5mb2cgPSBuZXcgRm9nRXhwMiggZGF0YS5mb2cuY29sb3IsIGRhdGEuZm9nLmRlbnNpdHkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ1BlcnNwZWN0aXZlQ2FtZXJhJzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgUGVyc3BlY3RpdmVDYW1lcmEoIGRhdGEuZm92LCBkYXRhLmFzcGVjdCwgZGF0YS5uZWFyLCBkYXRhLmZhciApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5mb2N1cyAhPT0gdW5kZWZpbmVkICkgb2JqZWN0LmZvY3VzID0gZGF0YS5mb2N1cztcXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEuem9vbSAhPT0gdW5kZWZpbmVkICkgb2JqZWN0Lnpvb20gPSBkYXRhLnpvb207XFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLmZpbG1HYXVnZSAhPT0gdW5kZWZpbmVkICkgb2JqZWN0LmZpbG1HYXVnZSA9IGRhdGEuZmlsbUdhdWdlO1xcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5maWxtT2Zmc2V0ICE9PSB1bmRlZmluZWQgKSBvYmplY3QuZmlsbU9mZnNldCA9IGRhdGEuZmlsbU9mZnNldDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEudmlldyAhPT0gdW5kZWZpbmVkICkgb2JqZWN0LnZpZXcgPSBPYmplY3QuYXNzaWduKCB7fSwgZGF0YS52aWV3ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnT3J0aG9ncmFwaGljQ2FtZXJhJzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgT3J0aG9ncmFwaGljQ2FtZXJhKCBkYXRhLmxlZnQsIGRhdGEucmlnaHQsIGRhdGEudG9wLCBkYXRhLmJvdHRvbSwgZGF0YS5uZWFyLCBkYXRhLmZhciApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ0FtYmllbnRMaWdodCc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0ID0gbmV3IEFtYmllbnRMaWdodCggZGF0YS5jb2xvciwgZGF0YS5pbnRlbnNpdHkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdEaXJlY3Rpb25hbExpZ2h0JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgRGlyZWN0aW9uYWxMaWdodCggZGF0YS5jb2xvciwgZGF0YS5pbnRlbnNpdHkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdQb2ludExpZ2h0JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgUG9pbnRMaWdodCggZGF0YS5jb2xvciwgZGF0YS5pbnRlbnNpdHksIGRhdGEuZGlzdGFuY2UsIGRhdGEuZGVjYXkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdSZWN0QXJlYUxpZ2h0JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgUmVjdEFyZWFMaWdodCggZGF0YS5jb2xvciwgZGF0YS5pbnRlbnNpdHksIGRhdGEud2lkdGgsIGRhdGEuaGVpZ2h0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnU3BvdExpZ2h0JzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgU3BvdExpZ2h0KCBkYXRhLmNvbG9yLCBkYXRhLmludGVuc2l0eSwgZGF0YS5kaXN0YW5jZSwgZGF0YS5hbmdsZSwgZGF0YS5wZW51bWJyYSwgZGF0YS5kZWNheSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ0hlbWlzcGhlcmVMaWdodCc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0ID0gbmV3IEhlbWlzcGhlcmVMaWdodCggZGF0YS5jb2xvciwgZGF0YS5ncm91bmRDb2xvciwgZGF0YS5pbnRlbnNpdHkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdTa2lubmVkTWVzaCc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlT2JqZWN0KCkgZG9lcyBub3Qgc3VwcG9ydCBTa2lubmVkTWVzaCB5ZXQuJyApO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ01lc2gnOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IGdldEdlb21ldHJ5KCBkYXRhLmdlb21ldHJ5ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIG1hdGVyaWFsID0gZ2V0TWF0ZXJpYWwoIGRhdGEubWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGdlb21ldHJ5LmJvbmVzICYmIGdlb21ldHJ5LmJvbmVzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0ID0gbmV3IFNraW5uZWRNZXNoKCBnZW9tZXRyeSwgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdCA9IG5ldyBNZXNoKCBnZW9tZXRyeSwgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnTE9EJzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgTE9EKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnTGluZSc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0ID0gbmV3IExpbmUoIGdldEdlb21ldHJ5KCBkYXRhLmdlb21ldHJ5ICksIGdldE1hdGVyaWFsKCBkYXRhLm1hdGVyaWFsICksIGRhdGEubW9kZSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ0xpbmVMb29wJzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgTGluZUxvb3AoIGdldEdlb21ldHJ5KCBkYXRhLmdlb21ldHJ5ICksIGdldE1hdGVyaWFsKCBkYXRhLm1hdGVyaWFsICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdMaW5lU2VnbWVudHMnOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdCA9IG5ldyBMaW5lU2VnbWVudHMoIGdldEdlb21ldHJ5KCBkYXRhLmdlb21ldHJ5ICksIGdldE1hdGVyaWFsKCBkYXRhLm1hdGVyaWFsICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdQb2ludENsb3VkJzpcXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdQb2ludHMnOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdCA9IG5ldyBQb2ludHMoIGdldEdlb21ldHJ5KCBkYXRhLmdlb21ldHJ5ICksIGdldE1hdGVyaWFsKCBkYXRhLm1hdGVyaWFsICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdTcHJpdGUnOlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdCA9IG5ldyBTcHJpdGUoIGdldE1hdGVyaWFsKCBkYXRhLm1hdGVyaWFsICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRjYXNlICdHcm91cCc6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0ID0gbmV3IEdyb3VwKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZGVmYXVsdDpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3QgPSBuZXcgT2JqZWN0M0QoKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0b2JqZWN0LnV1aWQgPSBkYXRhLnV1aWQ7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBkYXRhLm5hbWUgIT09IHVuZGVmaW5lZCApIG9iamVjdC5uYW1lID0gZGF0YS5uYW1lO1xcblxcdFxcdFxcdFxcdGlmICggZGF0YS5tYXRyaXggIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRtYXRyaXguZnJvbUFycmF5KCBkYXRhLm1hdHJpeCApO1xcblxcdFxcdFxcdFxcdFxcdG1hdHJpeC5kZWNvbXBvc2UoIG9iamVjdC5wb3NpdGlvbiwgb2JqZWN0LnF1YXRlcm5pb24sIG9iamVjdC5zY2FsZSApO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLnBvc2l0aW9uICE9PSB1bmRlZmluZWQgKSBvYmplY3QucG9zaXRpb24uZnJvbUFycmF5KCBkYXRhLnBvc2l0aW9uICk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLnJvdGF0aW9uICE9PSB1bmRlZmluZWQgKSBvYmplY3Qucm90YXRpb24uZnJvbUFycmF5KCBkYXRhLnJvdGF0aW9uICk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLnF1YXRlcm5pb24gIT09IHVuZGVmaW5lZCApIG9iamVjdC5xdWF0ZXJuaW9uLmZyb21BcnJheSggZGF0YS5xdWF0ZXJuaW9uICk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLnNjYWxlICE9PSB1bmRlZmluZWQgKSBvYmplY3Quc2NhbGUuZnJvbUFycmF5KCBkYXRhLnNjYWxlICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGlmICggZGF0YS5jYXN0U2hhZG93ICE9PSB1bmRlZmluZWQgKSBvYmplY3QuY2FzdFNoYWRvdyA9IGRhdGEuY2FzdFNoYWRvdztcXG5cXHRcXHRcXHRcXHRpZiAoIGRhdGEucmVjZWl2ZVNoYWRvdyAhPT0gdW5kZWZpbmVkICkgb2JqZWN0LnJlY2VpdmVTaGFkb3cgPSBkYXRhLnJlY2VpdmVTaGFkb3c7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBkYXRhLnNoYWRvdyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGRhdGEuc2hhZG93LmJpYXMgIT09IHVuZGVmaW5lZCApIG9iamVjdC5zaGFkb3cuYmlhcyA9IGRhdGEuc2hhZG93LmJpYXM7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkYXRhLnNoYWRvdy5yYWRpdXMgIT09IHVuZGVmaW5lZCApIG9iamVjdC5zaGFkb3cucmFkaXVzID0gZGF0YS5zaGFkb3cucmFkaXVzO1xcblxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5zaGFkb3cubWFwU2l6ZSAhPT0gdW5kZWZpbmVkICkgb2JqZWN0LnNoYWRvdy5tYXBTaXplLmZyb21BcnJheSggZGF0YS5zaGFkb3cubWFwU2l6ZSApO1xcblxcdFxcdFxcdFxcdFxcdGlmICggZGF0YS5zaGFkb3cuY2FtZXJhICE9PSB1bmRlZmluZWQgKSBvYmplY3Quc2hhZG93LmNhbWVyYSA9IHRoaXMucGFyc2VPYmplY3QoIGRhdGEuc2hhZG93LmNhbWVyYSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGRhdGEudmlzaWJsZSAhPT0gdW5kZWZpbmVkICkgb2JqZWN0LnZpc2libGUgPSBkYXRhLnZpc2libGU7XFxuXFx0XFx0XFx0XFx0aWYgKCBkYXRhLnVzZXJEYXRhICE9PSB1bmRlZmluZWQgKSBvYmplY3QudXNlckRhdGEgPSBkYXRhLnVzZXJEYXRhO1xcblxcblxcdFxcdFxcdFxcdGlmICggZGF0YS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBjaGlsZHJlbiA9IGRhdGEuY2hpbGRyZW47XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdC5hZGQoIHRoaXMucGFyc2VPYmplY3QoIGNoaWxkcmVuWyBpIF0sIGdlb21ldHJpZXMsIG1hdGVyaWFscyApICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGRhdGEudHlwZSA9PT0gJ0xPRCcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGxldmVscyA9IGRhdGEubGV2ZWxzO1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBsID0gMDsgbCA8IGxldmVscy5sZW5ndGg7IGwgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGxldmVsID0gbGV2ZWxzWyBsIF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNoaWxkID0gb2JqZWN0LmdldE9iamVjdEJ5UHJvcGVydHkoICd1dWlkJywgbGV2ZWwub2JqZWN0ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBjaGlsZCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdC5hZGRMZXZlbCggY2hpbGQsIGxldmVsLmRpc3RhbmNlICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIG9iamVjdDtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKVxcblxcblxcdH0gKTtcXG5cXG5cXHR2YXIgVEVYVFVSRV9NQVBQSU5HID0ge1xcblxcdFxcdFVWTWFwcGluZzogVVZNYXBwaW5nLFxcblxcdFxcdEN1YmVSZWZsZWN0aW9uTWFwcGluZzogQ3ViZVJlZmxlY3Rpb25NYXBwaW5nLFxcblxcdFxcdEN1YmVSZWZyYWN0aW9uTWFwcGluZzogQ3ViZVJlZnJhY3Rpb25NYXBwaW5nLFxcblxcdFxcdEVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nOiBFcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZyxcXG5cXHRcXHRFcXVpcmVjdGFuZ3VsYXJSZWZyYWN0aW9uTWFwcGluZzogRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmcsXFxuXFx0XFx0U3BoZXJpY2FsUmVmbGVjdGlvbk1hcHBpbmc6IFNwaGVyaWNhbFJlZmxlY3Rpb25NYXBwaW5nLFxcblxcdFxcdEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nOiBDdWJlVVZSZWZsZWN0aW9uTWFwcGluZyxcXG5cXHRcXHRDdWJlVVZSZWZyYWN0aW9uTWFwcGluZzogQ3ViZVVWUmVmcmFjdGlvbk1hcHBpbmdcXG5cXHR9O1xcblxcblxcdHZhciBURVhUVVJFX1dSQVBQSU5HID0ge1xcblxcdFxcdFJlcGVhdFdyYXBwaW5nOiBSZXBlYXRXcmFwcGluZyxcXG5cXHRcXHRDbGFtcFRvRWRnZVdyYXBwaW5nOiBDbGFtcFRvRWRnZVdyYXBwaW5nLFxcblxcdFxcdE1pcnJvcmVkUmVwZWF0V3JhcHBpbmc6IE1pcnJvcmVkUmVwZWF0V3JhcHBpbmdcXG5cXHR9O1xcblxcblxcdHZhciBURVhUVVJFX0ZJTFRFUiA9IHtcXG5cXHRcXHROZWFyZXN0RmlsdGVyOiBOZWFyZXN0RmlsdGVyLFxcblxcdFxcdE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyOiBOZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlcixcXG5cXHRcXHROZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyOiBOZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyLFxcblxcdFxcdExpbmVhckZpbHRlcjogTGluZWFyRmlsdGVyLFxcblxcdFxcdExpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXI6IExpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXIsXFxuXFx0XFx0TGluZWFyTWlwTWFwTGluZWFyRmlsdGVyOiBMaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXJcXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgdGhlc3BpdGUgLyBodHRwOi8vY2xpY2t0b3JlbGVhc2UuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEltYWdlQml0bWFwTG9hZGVyKCBtYW5hZ2VyICkge1xcblxcblxcdFxcdGlmICggdHlwZW9mIGNyZWF0ZUltYWdlQml0bWFwID09PSAndW5kZWZpbmVkJyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogY3JlYXRlSW1hZ2VCaXRtYXAoKSBub3Qgc3VwcG9ydGVkLicgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0aWYgKCB0eXBlb2YgZmV0Y2ggPT09ICd1bmRlZmluZWQnICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBmZXRjaCgpIG5vdCBzdXBwb3J0ZWQuJyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyICE9PSB1bmRlZmluZWQgPyBtYW5hZ2VyIDogRGVmYXVsdExvYWRpbmdNYW5hZ2VyO1xcblxcdFxcdHRoaXMub3B0aW9ucyA9IHVuZGVmaW5lZDtcXG5cXG5cXHR9XFxuXFxuXFx0SW1hZ2VCaXRtYXBMb2FkZXIucHJvdG90eXBlID0ge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBJbWFnZUJpdG1hcExvYWRlcixcXG5cXG5cXHRcXHRzZXRPcHRpb25zOiBmdW5jdGlvbiBzZXRPcHRpb25zKCBvcHRpb25zICkge1xcblxcblxcdFxcdFxcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiBsb2FkKCB1cmwsIG9uTG9hZCwgb25Qcm9ncmVzcywgb25FcnJvciApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHVybCA9PT0gdW5kZWZpbmVkICkgdXJsID0gJyc7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnBhdGggIT09IHVuZGVmaW5lZCApIHVybCA9IHRoaXMucGF0aCArIHVybDtcXG5cXG5cXHRcXHRcXHR2YXIgc2NvcGUgPSB0aGlzO1xcblxcblxcdFxcdFxcdHZhciBjYWNoZWQgPSBDYWNoZS5nZXQoIHVybCApO1xcblxcblxcdFxcdFxcdGlmICggY2FjaGVkICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtU3RhcnQoIHVybCApO1xcblxcblxcdFxcdFxcdFxcdHNldFRpbWVvdXQoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIG9uTG9hZCApIG9uTG9hZCggY2FjaGVkICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHRcXHR9LCAwICk7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGNhY2hlZDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0ZmV0Y2goIHVybCApLnRoZW4oIGZ1bmN0aW9uICggcmVzICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiByZXMuYmxvYigpO1xcblxcblxcdFxcdFxcdH0gKS50aGVuKCBmdW5jdGlvbiAoIGJsb2IgKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKCBibG9iLCBzY29wZS5vcHRpb25zICk7XFxuXFxuXFx0XFx0XFx0fSApLnRoZW4oIGZ1bmN0aW9uICggaW1hZ2VCaXRtYXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Q2FjaGUuYWRkKCB1cmwsIGltYWdlQml0bWFwICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBvbkxvYWQgKSBvbkxvYWQoIGltYWdlQml0bWFwICk7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXG5cXHRcXHRcXHR9ICkuY2F0Y2goIGZ1bmN0aW9uICggZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9uRXJyb3IgKSBvbkVycm9yKCBlICk7XFxuXFxuXFx0XFx0XFx0XFx0c2NvcGUubWFuYWdlci5pdGVtRW5kKCB1cmwgKTtcXG5cXHRcXHRcXHRcXHRzY29wZS5tYW5hZ2VyLml0ZW1FcnJvciggdXJsICk7XFxuXFxuXFx0XFx0XFx0fSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Q3Jvc3NPcmlnaW46IGZ1bmN0aW9uICggLyogdmFsdWUgKi8gKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRQYXRoOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMucGF0aCA9IHZhbHVlO1xcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igeno4NSAvIGh0dHA6Ly93d3cubGFiNGdhbWVzLm5ldC96ejg1L2Jsb2dcXG5cXHQgKiBtaW5pbWFsIGNsYXNzIGZvciBwcm94aW5nIGZ1bmN0aW9ucyB0byBQYXRoLiBSZXBsYWNlcyBvbGQgXFxcImV4dHJhY3RTdWJwYXRocygpXFxcIlxcblxcdCAqKi9cXG5cXG5cXHRmdW5jdGlvbiBTaGFwZVBhdGgoKSB7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1NoYXBlUGF0aCc7XFxuXFxuXFx0XFx0dGhpcy5zdWJQYXRocyA9IFtdO1xcblxcdFxcdHRoaXMuY3VycmVudFBhdGggPSBudWxsO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBTaGFwZVBhdGgucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0bW92ZVRvOiBmdW5jdGlvbiAoIHgsIHkgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jdXJyZW50UGF0aCA9IG5ldyBQYXRoKCk7XFxuXFx0XFx0XFx0dGhpcy5zdWJQYXRocy5wdXNoKCB0aGlzLmN1cnJlbnRQYXRoICk7XFxuXFx0XFx0XFx0dGhpcy5jdXJyZW50UGF0aC5tb3ZlVG8oIHgsIHkgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGxpbmVUbzogZnVuY3Rpb24gKCB4LCB5ICkge1xcblxcblxcdFxcdFxcdHRoaXMuY3VycmVudFBhdGgubGluZVRvKCB4LCB5ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRxdWFkcmF0aWNDdXJ2ZVRvOiBmdW5jdGlvbiAoIGFDUHgsIGFDUHksIGFYLCBhWSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmN1cnJlbnRQYXRoLnF1YWRyYXRpY0N1cnZlVG8oIGFDUHgsIGFDUHksIGFYLCBhWSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YmV6aWVyQ3VydmVUbzogZnVuY3Rpb24gKCBhQ1AxeCwgYUNQMXksIGFDUDJ4LCBhQ1AyeSwgYVgsIGFZICkge1xcblxcblxcdFxcdFxcdHRoaXMuY3VycmVudFBhdGguYmV6aWVyQ3VydmVUbyggYUNQMXgsIGFDUDF5LCBhQ1AyeCwgYUNQMnksIGFYLCBhWSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3BsaW5lVGhydTogZnVuY3Rpb24gKCBwdHMgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KCBwdHMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHRvU2hhcGVzOiBmdW5jdGlvbiAoIGlzQ0NXLCBub0hvbGVzICkge1xcblxcblxcdFxcdFxcdGZ1bmN0aW9uIHRvU2hhcGVzTm9Ib2xlcyggaW5TdWJwYXRocyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgc2hhcGVzID0gW107XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gaW5TdWJwYXRocy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB0bXBQYXRoID0gaW5TdWJwYXRoc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciB0bXBTaGFwZSA9IG5ldyBTaGFwZSgpO1xcblxcdFxcdFxcdFxcdFxcdHRtcFNoYXBlLmN1cnZlcyA9IHRtcFBhdGguY3VydmVzO1xcblxcblxcdFxcdFxcdFxcdFxcdHNoYXBlcy5wdXNoKCB0bXBTaGFwZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gc2hhcGVzO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmdW5jdGlvbiBpc1BvaW50SW5zaWRlUG9seWdvbiggaW5QdCwgaW5Qb2x5Z29uICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBwb2x5TGVuID0gaW5Qb2x5Z29uLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHQvLyBpblB0IG9uIHBvbHlnb24gY29udG91ciA9PiBpbW1lZGlhdGUgc3VjY2VzcyAgICBvclxcblxcdFxcdFxcdFxcdC8vIHRvZ2dsaW5nIG9mIGluc2lkZS9vdXRzaWRlIGF0IGV2ZXJ5IHNpbmdsZSEgaW50ZXJzZWN0aW9uIHBvaW50IG9mIGFuIGVkZ2VcXG5cXHRcXHRcXHRcXHQvLyAgd2l0aCB0aGUgaG9yaXpvbnRhbCBsaW5lIHRocm91Z2ggaW5QdCwgbGVmdCBvZiBpblB0XFxuXFx0XFx0XFx0XFx0Ly8gIG5vdCBjb3VudGluZyBsb3dlclkgZW5kcG9pbnRzIG9mIGVkZ2VzIGFuZCB3aG9sZSBlZGdlcyBvbiB0aGF0IGxpbmVcXG5cXHRcXHRcXHRcXHR2YXIgaW5zaWRlID0gZmFsc2U7XFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIHAgPSBwb2x5TGVuIC0gMSwgcSA9IDA7IHEgPCBwb2x5TGVuOyBwID0gcSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZWRnZUxvd1B0ID0gaW5Qb2x5Z29uWyBwIF07XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGVkZ2VIaWdoUHQgPSBpblBvbHlnb25bIHEgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZWRnZUR4ID0gZWRnZUhpZ2hQdC54IC0gZWRnZUxvd1B0Lng7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGVkZ2VEeSA9IGVkZ2VIaWdoUHQueSAtIGVkZ2VMb3dQdC55O1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggTWF0aC5hYnMoIGVkZ2VEeSApID4gTnVtYmVyLkVQU0lMT04gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gbm90IHBhcmFsbGVsXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBlZGdlRHkgPCAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGVkZ2VMb3dQdCA9IGluUG9seWdvblsgcSBdOyBlZGdlRHggPSAtIGVkZ2VEeDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRlZGdlSGlnaFB0ID0gaW5Qb2x5Z29uWyBwIF07IGVkZ2VEeSA9IC0gZWRnZUR5O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoICggaW5QdC55IDwgZWRnZUxvd1B0LnkgKSB8fCAoIGluUHQueSA+IGVkZ2VIaWdoUHQueSApICkgXFx0XFx0Y29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBpblB0LnkgPT09IGVkZ2VMb3dQdC55ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggaW5QdC54ID09PSBlZGdlTG93UHQueCApXFx0XFx0cmV0dXJuXFx0dHJ1ZTtcXHRcXHQvLyBpblB0IGlzIG9uIGNvbnRvdXIgP1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIGNvbnRpbnVlO1xcdFxcdFxcdFxcdC8vIG5vIGludGVyc2VjdGlvbiBvciBlZGdlTG93UHQgPT4gZG9lc24ndCBjb3VudCAhISFcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBwZXJwRWRnZSA9IGVkZ2VEeSAqICggaW5QdC54IC0gZWRnZUxvd1B0LnggKSAtIGVkZ2VEeCAqICggaW5QdC55IC0gZWRnZUxvd1B0LnkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHBlcnBFZGdlID09PSAwIClcXHRcXHRcXHRcXHRyZXR1cm5cXHR0cnVlO1xcdFxcdC8vIGluUHQgaXMgb24gY29udG91ciA/XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBwZXJwRWRnZSA8IDAgKSBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpbnNpZGUgPSAhIGluc2lkZTtcXHRcXHQvLyB0cnVlIGludGVyc2VjdGlvbiBsZWZ0IG9mIGluUHRcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBwYXJhbGxlbCBvciBjb2xsaW5lYXJcXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGluUHQueSAhPT0gZWRnZUxvd1B0LnkgKSBcXHRcXHRjb250aW51ZTtcXHRcXHRcXHQvLyBwYXJhbGxlbFxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIGVkZ2UgbGllcyBvbiB0aGUgc2FtZSBob3Jpem9udGFsIGxpbmUgYXMgaW5QdFxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggKCAoIGVkZ2VIaWdoUHQueCA8PSBpblB0LnggKSAmJiAoIGluUHQueCA8PSBlZGdlTG93UHQueCApICkgfHxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQgKCAoIGVkZ2VMb3dQdC54IDw9IGluUHQueCApICYmICggaW5QdC54IDw9IGVkZ2VIaWdoUHQueCApICkgKVxcdFxcdHJldHVyblxcdHRydWU7XFx0Ly8gaW5QdDogUG9pbnQgb24gY29udG91ciAhXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gY29udGludWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm5cXHRpbnNpZGU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBpc0Nsb2NrV2lzZSA9IFNoYXBlVXRpbHMuaXNDbG9ja1dpc2U7XFxuXFxuXFx0XFx0XFx0dmFyIHN1YlBhdGhzID0gdGhpcy5zdWJQYXRocztcXG5cXHRcXHRcXHRpZiAoIHN1YlBhdGhzLmxlbmd0aCA9PT0gMCApIHJldHVybiBbXTtcXG5cXG5cXHRcXHRcXHRpZiAoIG5vSG9sZXMgPT09IHRydWUgKVxcdHJldHVyblxcdHRvU2hhcGVzTm9Ib2xlcyggc3ViUGF0aHMgKTtcXG5cXG5cXG5cXHRcXHRcXHR2YXIgc29saWQsIHRtcFBhdGgsIHRtcFNoYXBlLCBzaGFwZXMgPSBbXTtcXG5cXG5cXHRcXHRcXHRpZiAoIHN1YlBhdGhzLmxlbmd0aCA9PT0gMSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0bXBQYXRoID0gc3ViUGF0aHNbIDAgXTtcXG5cXHRcXHRcXHRcXHR0bXBTaGFwZSA9IG5ldyBTaGFwZSgpO1xcblxcdFxcdFxcdFxcdHRtcFNoYXBlLmN1cnZlcyA9IHRtcFBhdGguY3VydmVzO1xcblxcdFxcdFxcdFxcdHNoYXBlcy5wdXNoKCB0bXBTaGFwZSApO1xcblxcdFxcdFxcdFxcdHJldHVybiBzaGFwZXM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBob2xlc0ZpcnN0ID0gISBpc0Nsb2NrV2lzZSggc3ViUGF0aHNbIDAgXS5nZXRQb2ludHMoKSApO1xcblxcdFxcdFxcdGhvbGVzRmlyc3QgPSBpc0NDVyA/ICEgaG9sZXNGaXJzdCA6IGhvbGVzRmlyc3Q7XFxuXFxuXFx0XFx0XFx0Ly8gY29uc29sZS5sb2coXFxcIkhvbGVzIGZpcnN0XFxcIiwgaG9sZXNGaXJzdCk7XFxuXFxuXFx0XFx0XFx0dmFyIGJldHRlclNoYXBlSG9sZXMgPSBbXTtcXG5cXHRcXHRcXHR2YXIgbmV3U2hhcGVzID0gW107XFxuXFx0XFx0XFx0dmFyIG5ld1NoYXBlSG9sZXMgPSBbXTtcXG5cXHRcXHRcXHR2YXIgbWFpbklkeCA9IDA7XFxuXFx0XFx0XFx0dmFyIHRtcFBvaW50cztcXG5cXG5cXHRcXHRcXHRuZXdTaGFwZXNbIG1haW5JZHggXSA9IHVuZGVmaW5lZDtcXG5cXHRcXHRcXHRuZXdTaGFwZUhvbGVzWyBtYWluSWR4IF0gPSBbXTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBzdWJQYXRocy5sZW5ndGg7IGkgPCBsOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdHRtcFBhdGggPSBzdWJQYXRoc1sgaSBdO1xcblxcdFxcdFxcdFxcdHRtcFBvaW50cyA9IHRtcFBhdGguZ2V0UG9pbnRzKCk7XFxuXFx0XFx0XFx0XFx0c29saWQgPSBpc0Nsb2NrV2lzZSggdG1wUG9pbnRzICk7XFxuXFx0XFx0XFx0XFx0c29saWQgPSBpc0NDVyA/ICEgc29saWQgOiBzb2xpZDtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHNvbGlkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggKCAhIGhvbGVzRmlyc3QgKSAmJiAoIG5ld1NoYXBlc1sgbWFpbklkeCBdICkgKVxcdG1haW5JZHggKys7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bmV3U2hhcGVzWyBtYWluSWR4IF0gPSB7IHM6IG5ldyBTaGFwZSgpLCBwOiB0bXBQb2ludHMgfTtcXG5cXHRcXHRcXHRcXHRcXHRuZXdTaGFwZXNbIG1haW5JZHggXS5zLmN1cnZlcyA9IHRtcFBhdGguY3VydmVzO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggaG9sZXNGaXJzdCApXFx0bWFpbklkeCArKztcXG5cXHRcXHRcXHRcXHRcXHRuZXdTaGFwZUhvbGVzWyBtYWluSWR4IF0gPSBbXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvL2NvbnNvbGUubG9nKCdjdycsIGkpO1xcblxcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0bmV3U2hhcGVIb2xlc1sgbWFpbklkeCBdLnB1c2goIHsgaDogdG1wUGF0aCwgcDogdG1wUG9pbnRzWyAwIF0gfSApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vY29uc29sZS5sb2coJ2NjdycsIGkpO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gb25seSBIb2xlcz8gLT4gcHJvYmFibHkgYWxsIFNoYXBlcyB3aXRoIHdyb25nIG9yaWVudGF0aW9uXFxuXFx0XFx0XFx0aWYgKCAhIG5ld1NoYXBlc1sgMCBdIClcXHRyZXR1cm5cXHR0b1NoYXBlc05vSG9sZXMoIHN1YlBhdGhzICk7XFxuXFxuXFxuXFx0XFx0XFx0aWYgKCBuZXdTaGFwZXMubGVuZ3RoID4gMSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYW1iaWd1b3VzID0gZmFsc2U7XFxuXFx0XFx0XFx0XFx0dmFyIHRvQ2hhbmdlID0gW107XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIHNJZHggPSAwLCBzTGVuID0gbmV3U2hhcGVzLmxlbmd0aDsgc0lkeCA8IHNMZW47IHNJZHggKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YmV0dGVyU2hhcGVIb2xlc1sgc0lkeCBdID0gW107XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBzSWR4ID0gMCwgc0xlbiA9IG5ld1NoYXBlcy5sZW5ndGg7IHNJZHggPCBzTGVuOyBzSWR4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBzaG8gPSBuZXdTaGFwZUhvbGVzWyBzSWR4IF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGhJZHggPSAwOyBoSWR4IDwgc2hvLmxlbmd0aDsgaElkeCArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgaG8gPSBzaG9bIGhJZHggXTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgaG9sZV91bmFzc2lnbmVkID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgczJJZHggPSAwOyBzMklkeCA8IG5ld1NoYXBlcy5sZW5ndGg7IHMySWR4ICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggaXNQb2ludEluc2lkZVBvbHlnb24oIGhvLnAsIG5ld1NoYXBlc1sgczJJZHggXS5wICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBzSWR4ICE9PSBzMklkeCApXFx0dG9DaGFuZ2UucHVzaCggeyBmcm9tczogc0lkeCwgdG9zOiBzMklkeCwgaG9sZTogaElkeCB9ICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBob2xlX3VuYXNzaWduZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aG9sZV91bmFzc2lnbmVkID0gZmFsc2U7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YmV0dGVyU2hhcGVIb2xlc1sgczJJZHggXS5wdXNoKCBobyApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YW1iaWd1b3VzID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGhvbGVfdW5hc3NpZ25lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRiZXR0ZXJTaGFwZUhvbGVzWyBzSWR4IF0ucHVzaCggaG8gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHQvLyBjb25zb2xlLmxvZyhcXFwiYW1iaWd1b3VzOiBcXFwiLCBhbWJpZ3VvdXMpO1xcblxcdFxcdFxcdFxcdGlmICggdG9DaGFuZ2UubGVuZ3RoID4gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBjb25zb2xlLmxvZyhcXFwidG8gY2hhbmdlOiBcXFwiLCB0b0NoYW5nZSk7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKCAhIGFtYmlndW91cyApXFx0bmV3U2hhcGVIb2xlcyA9IGJldHRlclNoYXBlSG9sZXM7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgdG1wSG9sZXM7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBpbCA9IG5ld1NoYXBlcy5sZW5ndGg7IGkgPCBpbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0bXBTaGFwZSA9IG5ld1NoYXBlc1sgaSBdLnM7XFxuXFx0XFx0XFx0XFx0c2hhcGVzLnB1c2goIHRtcFNoYXBlICk7XFxuXFx0XFx0XFx0XFx0dG1wSG9sZXMgPSBuZXdTaGFwZUhvbGVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwLCBqbCA9IHRtcEhvbGVzLmxlbmd0aDsgaiA8IGpsOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRtcFNoYXBlLmhvbGVzLnB1c2goIHRtcEhvbGVzWyBqIF0uaCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly9jb25zb2xlLmxvZyhcXFwic2hhcGVcXFwiLCBzaGFwZXMpO1xcblxcblxcdFxcdFxcdHJldHVybiBzaGFwZXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIHp6ODUgLyBodHRwOi8vd3d3LmxhYjRnYW1lcy5uZXQveno4NS9ibG9nXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBGb250KCBkYXRhICkge1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdGb250JztcXG5cXG5cXHRcXHR0aGlzLmRhdGEgPSBkYXRhO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBGb250LnByb3RvdHlwZSwge1xcblxcblxcdFxcdGlzRm9udDogdHJ1ZSxcXG5cXG5cXHRcXHRnZW5lcmF0ZVNoYXBlczogZnVuY3Rpb24gKCB0ZXh0LCBzaXplLCBkaXZpc2lvbnMgKSB7XFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gY3JlYXRlUGF0aHMoIHRleHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGNoYXJzID0gU3RyaW5nKCB0ZXh0ICkuc3BsaXQoICcnICk7XFxuXFx0XFx0XFx0XFx0dmFyIHNjYWxlID0gc2l6ZSAvIGRhdGEucmVzb2x1dGlvbjtcXG5cXHRcXHRcXHRcXHR2YXIgbGluZV9oZWlnaHQgPSAoIGRhdGEuYm91bmRpbmdCb3gueU1heCAtIGRhdGEuYm91bmRpbmdCb3gueU1pbiArIGRhdGEudW5kZXJsaW5lVGhpY2tuZXNzICkgKiBzY2FsZTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgb2Zmc2V0WCA9IDAsIG9mZnNldFkgPSAwO1xcblxcblxcdFxcdFxcdFxcdHZhciBwYXRocyA9IFtdO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgY2hhciA9IGNoYXJzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBjaGFyID09PSAnXFxcXG4nICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdG9mZnNldFggPSAwO1xcblxcdFxcdFxcdFxcdFxcdFxcdG9mZnNldFkgLT0gbGluZV9oZWlnaHQ7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgcmV0ID0gY3JlYXRlUGF0aCggY2hhciwgc2NhbGUsIG9mZnNldFgsIG9mZnNldFkgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRvZmZzZXRYICs9IHJldC5vZmZzZXRYO1xcblxcdFxcdFxcdFxcdFxcdFxcdHBhdGhzLnB1c2goIHJldC5wYXRoICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gcGF0aHM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZ1bmN0aW9uIGNyZWF0ZVBhdGgoIGMsIHNjYWxlLCBvZmZzZXRYLCBvZmZzZXRZICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBnbHlwaCA9IGRhdGEuZ2x5cGhzWyBjIF0gfHwgZGF0YS5nbHlwaHNbICc/JyBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggISBnbHlwaCApIHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcGF0aCA9IG5ldyBTaGFwZVBhdGgoKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcHRzID0gW107XFxuXFx0XFx0XFx0XFx0dmFyIHgsIHksIGNweCwgY3B5LCBjcHgwLCBjcHkwLCBjcHgxLCBjcHkxLCBjcHgyLCBjcHkyLCBsYXN0ZTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGdseXBoLm8gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIG91dGxpbmUgPSBnbHlwaC5fY2FjaGVkT3V0bGluZSB8fCAoIGdseXBoLl9jYWNoZWRPdXRsaW5lID0gZ2x5cGguby5zcGxpdCggJyAnICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBvdXRsaW5lLmxlbmd0aDsgaSA8IGw7ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBhY3Rpb24gPSBvdXRsaW5lWyBpICsrIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0c3dpdGNoICggYWN0aW9uICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNhc2UgJ20nOiAvLyBtb3ZlVG9cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR4ID0gb3V0bGluZVsgaSArKyBdICogc2NhbGUgKyBvZmZzZXRYO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHkgPSBvdXRsaW5lWyBpICsrIF0gKiBzY2FsZSArIG9mZnNldFk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGF0aC5tb3ZlVG8oIHgsIHkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXNlICdsJzogLy8gbGluZVRvXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0eCA9IG91dGxpbmVbIGkgKysgXSAqIHNjYWxlICsgb2Zmc2V0WDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR5ID0gb3V0bGluZVsgaSArKyBdICogc2NhbGUgKyBvZmZzZXRZO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHBhdGgubGluZVRvKCB4LCB5ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAncSc6IC8vIHF1YWRyYXRpY0N1cnZlVG9cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjcHggPSBvdXRsaW5lWyBpICsrIF0gKiBzY2FsZSArIG9mZnNldFg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3B5ID0gb3V0bGluZVsgaSArKyBdICogc2NhbGUgKyBvZmZzZXRZO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNweDEgPSBvdXRsaW5lWyBpICsrIF0gKiBzY2FsZSArIG9mZnNldFg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3B5MSA9IG91dGxpbmVbIGkgKysgXSAqIHNjYWxlICsgb2Zmc2V0WTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRwYXRoLnF1YWRyYXRpY0N1cnZlVG8oIGNweDEsIGNweTEsIGNweCwgY3B5ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bGFzdGUgPSBwdHNbIHB0cy5sZW5ndGggLSAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBsYXN0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjcHgwID0gbGFzdGUueDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjcHkwID0gbGFzdGUueTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2FzZSAnYic6IC8vIGJlemllckN1cnZlVG9cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjcHggPSBvdXRsaW5lWyBpICsrIF0gKiBzY2FsZSArIG9mZnNldFg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3B5ID0gb3V0bGluZVsgaSArKyBdICogc2NhbGUgKyBvZmZzZXRZO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNweDEgPSBvdXRsaW5lWyBpICsrIF0gKiBzY2FsZSArIG9mZnNldFg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3B5MSA9IG91dGxpbmVbIGkgKysgXSAqIHNjYWxlICsgb2Zmc2V0WTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjcHgyID0gb3V0bGluZVsgaSArKyBdICogc2NhbGUgKyBvZmZzZXRYO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNweTIgPSBvdXRsaW5lWyBpICsrIF0gKiBzY2FsZSArIG9mZnNldFk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cGF0aC5iZXppZXJDdXJ2ZVRvKCBjcHgxLCBjcHkxLCBjcHgyLCBjcHkyLCBjcHgsIGNweSApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGxhc3RlID0gcHRzWyBwdHMubGVuZ3RoIC0gMSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggbGFzdGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3B4MCA9IGxhc3RlLng7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y3B5MCA9IGxhc3RlLnk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHJldHVybiB7IG9mZnNldFg6IGdseXBoLmhhICogc2NhbGUsIHBhdGg6IHBhdGggfTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly9cXG5cXG5cXHRcXHRcXHRpZiAoIHNpemUgPT09IHVuZGVmaW5lZCApIHNpemUgPSAxMDA7XFxuXFx0XFx0XFx0aWYgKCBkaXZpc2lvbnMgPT09IHVuZGVmaW5lZCApIGRpdmlzaW9ucyA9IDQ7XFxuXFxuXFx0XFx0XFx0dmFyIGRhdGEgPSB0aGlzLmRhdGE7XFxuXFxuXFx0XFx0XFx0dmFyIHBhdGhzID0gY3JlYXRlUGF0aHMoIHRleHQgKTtcXG5cXHRcXHRcXHR2YXIgc2hhcGVzID0gW107XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIHAgPSAwLCBwbCA9IHBhdGhzLmxlbmd0aDsgcCA8IHBsOyBwICsrICkge1xcblxcblxcdFxcdFxcdFxcdEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KCBzaGFwZXMsIHBhdGhzWyBwIF0udG9TaGFwZXMoKSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gc2hhcGVzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBGb250TG9hZGVyKCBtYW5hZ2VyICkge1xcblxcblxcdFxcdHRoaXMubWFuYWdlciA9ICggbWFuYWdlciAhPT0gdW5kZWZpbmVkICkgPyBtYW5hZ2VyIDogRGVmYXVsdExvYWRpbmdNYW5hZ2VyO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBGb250TG9hZGVyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGxvYWQ6IGZ1bmN0aW9uICggdXJsLCBvbkxvYWQsIG9uUHJvZ3Jlc3MsIG9uRXJyb3IgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHNjb3BlID0gdGhpcztcXG5cXG5cXHRcXHRcXHR2YXIgbG9hZGVyID0gbmV3IEZpbGVMb2FkZXIoIHRoaXMubWFuYWdlciApO1xcblxcdFxcdFxcdGxvYWRlci5zZXRQYXRoKCB0aGlzLnBhdGggKTtcXG5cXHRcXHRcXHRsb2FkZXIubG9hZCggdXJsLCBmdW5jdGlvbiAoIHRleHQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGpzb247XFxuXFxuXFx0XFx0XFx0XFx0dHJ5IHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRqc29uID0gSlNPTi5wYXJzZSggdGV4dCApO1xcblxcblxcdFxcdFxcdFxcdH0gY2F0Y2ggKCBlICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkZvbnRMb2FkZXI6IHR5cGVmYWNlLmpzIHN1cHBvcnQgaXMgYmVpbmcgZGVwcmVjYXRlZC4gVXNlIHR5cGVmYWNlLmpzb24gaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0XFx0XFx0anNvbiA9IEpTT04ucGFyc2UoIHRleHQuc3Vic3RyaW5nKCA2NSwgdGV4dC5sZW5ndGggLSAyICkgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGZvbnQgPSBzY29wZS5wYXJzZSgganNvbiApO1xcblxcblxcdFxcdFxcdFxcdGlmICggb25Mb2FkICkgb25Mb2FkKCBmb250ICk7XFxuXFxuXFx0XFx0XFx0fSwgb25Qcm9ncmVzcywgb25FcnJvciApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cGFyc2U6IGZ1bmN0aW9uICgganNvbiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IEZvbnQoIGpzb24gKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFBhdGg6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5wYXRoID0gdmFsdWU7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdHZhciBjb250ZXh0O1xcblxcblxcdHZhciBBdWRpb0NvbnRleHQgPSB7XFxuXFxuXFx0XFx0Z2V0Q29udGV4dDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGlmICggY29udGV4dCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnRleHQgPSBuZXcgKCB3aW5kb3cuQXVkaW9Db250ZXh0IHx8IHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQgKSgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gY29udGV4dDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldENvbnRleHQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0Y29udGV4dCA9IHZhbHVlO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgUmVlY2UgQWFyb24gTGVjcml2YWluIC8gaHR0cDovL3JlZWNlbm90ZXMuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEF1ZGlvTG9hZGVyKCBtYW5hZ2VyICkge1xcblxcblxcdFxcdHRoaXMubWFuYWdlciA9ICggbWFuYWdlciAhPT0gdW5kZWZpbmVkICkgPyBtYW5hZ2VyIDogRGVmYXVsdExvYWRpbmdNYW5hZ2VyO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBBdWRpb0xvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRsb2FkOiBmdW5jdGlvbiAoIHVybCwgb25Mb2FkLCBvblByb2dyZXNzLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdHZhciBsb2FkZXIgPSBuZXcgRmlsZUxvYWRlciggdGhpcy5tYW5hZ2VyICk7XFxuXFx0XFx0XFx0bG9hZGVyLnNldFJlc3BvbnNlVHlwZSggJ2FycmF5YnVmZmVyJyApO1xcblxcdFxcdFxcdGxvYWRlci5sb2FkKCB1cmwsIGZ1bmN0aW9uICggYnVmZmVyICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBjb250ZXh0ID0gQXVkaW9Db250ZXh0LmdldENvbnRleHQoKTtcXG5cXG5cXHRcXHRcXHRcXHRjb250ZXh0LmRlY29kZUF1ZGlvRGF0YSggYnVmZmVyLCBmdW5jdGlvbiAoIGF1ZGlvQnVmZmVyICkge1xcblxcblxcdFxcdFxcdFxcdFxcdG9uTG9hZCggYXVkaW9CdWZmZXIgKTtcXG5cXG5cXHRcXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0fSwgb25Qcm9ncmVzcywgb25FcnJvciApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBTdGVyZW9DYW1lcmEoKSB7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ1N0ZXJlb0NhbWVyYSc7XFxuXFxuXFx0XFx0dGhpcy5hc3BlY3QgPSAxO1xcblxcblxcdFxcdHRoaXMuZXllU2VwID0gMC4wNjQ7XFxuXFxuXFx0XFx0dGhpcy5jYW1lcmFMID0gbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCk7XFxuXFx0XFx0dGhpcy5jYW1lcmFMLmxheWVycy5lbmFibGUoIDEgKTtcXG5cXHRcXHR0aGlzLmNhbWVyYUwubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuY2FtZXJhUiA9IG5ldyBQZXJzcGVjdGl2ZUNhbWVyYSgpO1xcblxcdFxcdHRoaXMuY2FtZXJhUi5sYXllcnMuZW5hYmxlKCAyICk7XFxuXFx0XFx0dGhpcy5jYW1lcmFSLm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggU3RlcmVvQ2FtZXJhLnByb3RvdHlwZSwge1xcblxcblxcdFxcdHVwZGF0ZTogKCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGluc3RhbmNlLCBmb2N1cywgZm92LCBhc3BlY3QsIG5lYXIsIGZhciwgem9vbSwgZXllU2VwO1xcblxcblxcdFxcdFxcdHZhciBleWVSaWdodCA9IG5ldyBNYXRyaXg0KCk7XFxuXFx0XFx0XFx0dmFyIGV5ZUxlZnQgPSBuZXcgTWF0cml4NCgpO1xcblxcblxcdFxcdFxcdHJldHVybiBmdW5jdGlvbiB1cGRhdGUoIGNhbWVyYSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbmVlZHNVcGRhdGUgPSBpbnN0YW5jZSAhPT0gdGhpcyB8fCBmb2N1cyAhPT0gY2FtZXJhLmZvY3VzIHx8IGZvdiAhPT0gY2FtZXJhLmZvdiB8fFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGFzcGVjdCAhPT0gY2FtZXJhLmFzcGVjdCAqIHRoaXMuYXNwZWN0IHx8IG5lYXIgIT09IGNhbWVyYS5uZWFyIHx8XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZmFyICE9PSBjYW1lcmEuZmFyIHx8IHpvb20gIT09IGNhbWVyYS56b29tIHx8IGV5ZVNlcCAhPT0gdGhpcy5leWVTZXA7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBuZWVkc1VwZGF0ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbnN0YW5jZSA9IHRoaXM7XFxuXFx0XFx0XFx0XFx0XFx0Zm9jdXMgPSBjYW1lcmEuZm9jdXM7XFxuXFx0XFx0XFx0XFx0XFx0Zm92ID0gY2FtZXJhLmZvdjtcXG5cXHRcXHRcXHRcXHRcXHRhc3BlY3QgPSBjYW1lcmEuYXNwZWN0ICogdGhpcy5hc3BlY3Q7XFxuXFx0XFx0XFx0XFx0XFx0bmVhciA9IGNhbWVyYS5uZWFyO1xcblxcdFxcdFxcdFxcdFxcdGZhciA9IGNhbWVyYS5mYXI7XFxuXFx0XFx0XFx0XFx0XFx0em9vbSA9IGNhbWVyYS56b29tO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIE9mZi1heGlzIHN0ZXJlb3Njb3BpYyBlZmZlY3QgYmFzZWQgb25cXG5cXHRcXHRcXHRcXHRcXHQvLyBodHRwOi8vcGF1bGJvdXJrZS5uZXQvc3RlcmVvZ3JhcGhpY3Mvc3RlcmVvcmVuZGVyL1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBwcm9qZWN0aW9uTWF0cml4ID0gY2FtZXJhLnByb2plY3Rpb25NYXRyaXguY2xvbmUoKTtcXG5cXHRcXHRcXHRcXHRcXHRleWVTZXAgPSB0aGlzLmV5ZVNlcCAvIDI7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGV5ZVNlcE9uUHJvamVjdGlvbiA9IGV5ZVNlcCAqIG5lYXIgLyBmb2N1cztcXG5cXHRcXHRcXHRcXHRcXHR2YXIgeW1heCA9ICggbmVhciAqIE1hdGgudGFuKCBfTWF0aC5ERUcyUkFEICogZm92ICogMC41ICkgKSAvIHpvb207XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHhtaW4sIHhtYXg7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdHJhbnNsYXRlIHhPZmZzZXRcXG5cXG5cXHRcXHRcXHRcXHRcXHRleWVMZWZ0LmVsZW1lbnRzWyAxMiBdID0gLSBleWVTZXA7XFxuXFx0XFx0XFx0XFx0XFx0ZXllUmlnaHQuZWxlbWVudHNbIDEyIF0gPSBleWVTZXA7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gZm9yIGxlZnQgZXllXFxuXFxuXFx0XFx0XFx0XFx0XFx0eG1pbiA9IC0geW1heCAqIGFzcGVjdCArIGV5ZVNlcE9uUHJvamVjdGlvbjtcXG5cXHRcXHRcXHRcXHRcXHR4bWF4ID0geW1heCAqIGFzcGVjdCArIGV5ZVNlcE9uUHJvamVjdGlvbjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWyAwIF0gPSAyICogbmVhciAvICggeG1heCAtIHhtaW4gKTtcXG5cXHRcXHRcXHRcXHRcXHRwcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzWyA4IF0gPSAoIHhtYXggKyB4bWluICkgLyAoIHhtYXggLSB4bWluICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5jYW1lcmFMLnByb2plY3Rpb25NYXRyaXguY29weSggcHJvamVjdGlvbk1hdHJpeCApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGZvciByaWdodCBleWVcXG5cXG5cXHRcXHRcXHRcXHRcXHR4bWluID0gLSB5bWF4ICogYXNwZWN0IC0gZXllU2VwT25Qcm9qZWN0aW9uO1xcblxcdFxcdFxcdFxcdFxcdHhtYXggPSB5bWF4ICogYXNwZWN0IC0gZXllU2VwT25Qcm9qZWN0aW9uO1xcblxcblxcdFxcdFxcdFxcdFxcdHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbIDAgXSA9IDIgKiBuZWFyIC8gKCB4bWF4IC0geG1pbiApO1xcblxcdFxcdFxcdFxcdFxcdHByb2plY3Rpb25NYXRyaXguZWxlbWVudHNbIDggXSA9ICggeG1heCArIHhtaW4gKSAvICggeG1heCAtIHhtaW4gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmNhbWVyYVIucHJvamVjdGlvbk1hdHJpeC5jb3B5KCBwcm9qZWN0aW9uTWF0cml4ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMuY2FtZXJhTC5tYXRyaXhXb3JsZC5jb3B5KCBjYW1lcmEubWF0cml4V29ybGQgKS5tdWx0aXBseSggZXllTGVmdCApO1xcblxcdFxcdFxcdFxcdHRoaXMuY2FtZXJhUi5tYXRyaXhXb3JsZC5jb3B5KCBjYW1lcmEubWF0cml4V29ybGQgKS5tdWx0aXBseSggZXllUmlnaHQgKTtcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0gKSgpXFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIENhbWVyYSBmb3IgcmVuZGVyaW5nIGN1YmUgbWFwc1xcblxcdCAqXFx0LSByZW5kZXJzIHNjZW5lIGludG8gYXhpcy1hbGlnbmVkIGN1YmVcXG5cXHQgKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ3ViZUNhbWVyYSggbmVhciwgZmFyLCBjdWJlUmVzb2x1dGlvbiApIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0N1YmVDYW1lcmEnO1xcblxcblxcdFxcdHZhciBmb3YgPSA5MCwgYXNwZWN0ID0gMTtcXG5cXG5cXHRcXHR2YXIgY2FtZXJhUFggPSBuZXcgUGVyc3BlY3RpdmVDYW1lcmEoIGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIgKTtcXG5cXHRcXHRjYW1lcmFQWC51cC5zZXQoIDAsIC0gMSwgMCApO1xcblxcdFxcdGNhbWVyYVBYLmxvb2tBdCggbmV3IFZlY3RvcjMoIDEsIDAsIDAgKSApO1xcblxcdFxcdHRoaXMuYWRkKCBjYW1lcmFQWCApO1xcblxcblxcdFxcdHZhciBjYW1lcmFOWCA9IG5ldyBQZXJzcGVjdGl2ZUNhbWVyYSggZm92LCBhc3BlY3QsIG5lYXIsIGZhciApO1xcblxcdFxcdGNhbWVyYU5YLnVwLnNldCggMCwgLSAxLCAwICk7XFxuXFx0XFx0Y2FtZXJhTlgubG9va0F0KCBuZXcgVmVjdG9yMyggLSAxLCAwLCAwICkgKTtcXG5cXHRcXHR0aGlzLmFkZCggY2FtZXJhTlggKTtcXG5cXG5cXHRcXHR2YXIgY2FtZXJhUFkgPSBuZXcgUGVyc3BlY3RpdmVDYW1lcmEoIGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIgKTtcXG5cXHRcXHRjYW1lcmFQWS51cC5zZXQoIDAsIDAsIDEgKTtcXG5cXHRcXHRjYW1lcmFQWS5sb29rQXQoIG5ldyBWZWN0b3IzKCAwLCAxLCAwICkgKTtcXG5cXHRcXHR0aGlzLmFkZCggY2FtZXJhUFkgKTtcXG5cXG5cXHRcXHR2YXIgY2FtZXJhTlkgPSBuZXcgUGVyc3BlY3RpdmVDYW1lcmEoIGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIgKTtcXG5cXHRcXHRjYW1lcmFOWS51cC5zZXQoIDAsIDAsIC0gMSApO1xcblxcdFxcdGNhbWVyYU5ZLmxvb2tBdCggbmV3IFZlY3RvcjMoIDAsIC0gMSwgMCApICk7XFxuXFx0XFx0dGhpcy5hZGQoIGNhbWVyYU5ZICk7XFxuXFxuXFx0XFx0dmFyIGNhbWVyYVBaID0gbmV3IFBlcnNwZWN0aXZlQ2FtZXJhKCBmb3YsIGFzcGVjdCwgbmVhciwgZmFyICk7XFxuXFx0XFx0Y2FtZXJhUFoudXAuc2V0KCAwLCAtIDEsIDAgKTtcXG5cXHRcXHRjYW1lcmFQWi5sb29rQXQoIG5ldyBWZWN0b3IzKCAwLCAwLCAxICkgKTtcXG5cXHRcXHR0aGlzLmFkZCggY2FtZXJhUFogKTtcXG5cXG5cXHRcXHR2YXIgY2FtZXJhTlogPSBuZXcgUGVyc3BlY3RpdmVDYW1lcmEoIGZvdiwgYXNwZWN0LCBuZWFyLCBmYXIgKTtcXG5cXHRcXHRjYW1lcmFOWi51cC5zZXQoIDAsIC0gMSwgMCApO1xcblxcdFxcdGNhbWVyYU5aLmxvb2tBdCggbmV3IFZlY3RvcjMoIDAsIDAsIC0gMSApICk7XFxuXFx0XFx0dGhpcy5hZGQoIGNhbWVyYU5aICk7XFxuXFxuXFx0XFx0dmFyIG9wdGlvbnMgPSB7IGZvcm1hdDogUkdCRm9ybWF0LCBtYWdGaWx0ZXI6IExpbmVhckZpbHRlciwgbWluRmlsdGVyOiBMaW5lYXJGaWx0ZXIgfTtcXG5cXG5cXHRcXHR0aGlzLnJlbmRlclRhcmdldCA9IG5ldyBXZWJHTFJlbmRlclRhcmdldEN1YmUoIGN1YmVSZXNvbHV0aW9uLCBjdWJlUmVzb2x1dGlvbiwgb3B0aW9ucyApO1xcblxcdFxcdHRoaXMucmVuZGVyVGFyZ2V0LnRleHR1cmUubmFtZSA9IFxcXCJDdWJlQ2FtZXJhXFxcIjtcXG5cXG5cXHRcXHR0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uICggcmVuZGVyZXIsIHNjZW5lICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5wYXJlbnQgPT09IG51bGwgKSB0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XFxuXFxuXFx0XFx0XFx0dmFyIHJlbmRlclRhcmdldCA9IHRoaXMucmVuZGVyVGFyZ2V0O1xcblxcdFxcdFxcdHZhciBnZW5lcmF0ZU1pcG1hcHMgPSByZW5kZXJUYXJnZXQudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM7XFxuXFxuXFx0XFx0XFx0cmVuZGVyVGFyZ2V0LnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmFjdGl2ZUN1YmVGYWNlID0gMDtcXG5cXHRcXHRcXHRyZW5kZXJlci5yZW5kZXIoIHNjZW5lLCBjYW1lcmFQWCwgcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmFjdGl2ZUN1YmVGYWNlID0gMTtcXG5cXHRcXHRcXHRyZW5kZXJlci5yZW5kZXIoIHNjZW5lLCBjYW1lcmFOWCwgcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmFjdGl2ZUN1YmVGYWNlID0gMjtcXG5cXHRcXHRcXHRyZW5kZXJlci5yZW5kZXIoIHNjZW5lLCBjYW1lcmFQWSwgcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmFjdGl2ZUN1YmVGYWNlID0gMztcXG5cXHRcXHRcXHRyZW5kZXJlci5yZW5kZXIoIHNjZW5lLCBjYW1lcmFOWSwgcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0cmVuZGVyVGFyZ2V0LmFjdGl2ZUN1YmVGYWNlID0gNDtcXG5cXHRcXHRcXHRyZW5kZXJlci5yZW5kZXIoIHNjZW5lLCBjYW1lcmFQWiwgcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0cmVuZGVyVGFyZ2V0LnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzID0gZ2VuZXJhdGVNaXBtYXBzO1xcblxcblxcdFxcdFxcdHJlbmRlclRhcmdldC5hY3RpdmVDdWJlRmFjZSA9IDU7XFxuXFx0XFx0XFx0cmVuZGVyZXIucmVuZGVyKCBzY2VuZSwgY2FtZXJhTlosIHJlbmRlclRhcmdldCApO1xcblxcblxcdFxcdFxcdHJlbmRlcmVyLnNldFJlbmRlclRhcmdldCggbnVsbCApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5jbGVhciA9IGZ1bmN0aW9uICggcmVuZGVyZXIsIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcmVuZGVyVGFyZ2V0ID0gdGhpcy5yZW5kZXJUYXJnZXQ7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgNjsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZW5kZXJUYXJnZXQuYWN0aXZlQ3ViZUZhY2UgPSBpO1xcblxcdFxcdFxcdFxcdHJlbmRlcmVyLnNldFJlbmRlclRhcmdldCggcmVuZGVyVGFyZ2V0ICk7XFxuXFxuXFx0XFx0XFx0XFx0cmVuZGVyZXIuY2xlYXIoIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQoIG51bGwgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHRDdWJlQ2FtZXJhLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApO1xcblxcdEN1YmVDYW1lcmEucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ3ViZUNhbWVyYTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEF1ZGlvTGlzdGVuZXIoKSB7XFxuXFxuXFx0XFx0T2JqZWN0M0QuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdBdWRpb0xpc3RlbmVyJztcXG5cXG5cXHRcXHR0aGlzLmNvbnRleHQgPSBBdWRpb0NvbnRleHQuZ2V0Q29udGV4dCgpO1xcblxcblxcdFxcdHRoaXMuZ2FpbiA9IHRoaXMuY29udGV4dC5jcmVhdGVHYWluKCk7XFxuXFx0XFx0dGhpcy5nYWluLmNvbm5lY3QoIHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiApO1xcblxcblxcdFxcdHRoaXMuZmlsdGVyID0gbnVsbDtcXG5cXG5cXHR9XFxuXFxuXFx0QXVkaW9MaXN0ZW5lci5wcm90b3R5cGUgPSBPYmplY3QuYXNzaWduKCBPYmplY3QuY3JlYXRlKCBPYmplY3QzRC5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBBdWRpb0xpc3RlbmVyLFxcblxcblxcdFxcdGdldElucHV0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2FpbjtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJlbW92ZUZpbHRlcjogZnVuY3Rpb24gKCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZmlsdGVyICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZ2Fpbi5kaXNjb25uZWN0KCB0aGlzLmZpbHRlciApO1xcblxcdFxcdFxcdFxcdHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QoIHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiApO1xcblxcdFxcdFxcdFxcdHRoaXMuZ2Fpbi5jb25uZWN0KCB0aGlzLmNvbnRleHQuZGVzdGluYXRpb24gKTtcXG5cXHRcXHRcXHRcXHR0aGlzLmZpbHRlciA9IG51bGw7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0RmlsdGVyOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZmlsdGVyO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RmlsdGVyOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5maWx0ZXIgIT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5nYWluLmRpc2Nvbm5lY3QoIHRoaXMuZmlsdGVyICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5maWx0ZXIuZGlzY29ubmVjdCggdGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmdhaW4uZGlzY29ubmVjdCggdGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuZmlsdGVyID0gdmFsdWU7XFxuXFx0XFx0XFx0dGhpcy5nYWluLmNvbm5lY3QoIHRoaXMuZmlsdGVyICk7XFxuXFx0XFx0XFx0dGhpcy5maWx0ZXIuY29ubmVjdCggdGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRNYXN0ZXJWb2x1bWU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRNYXN0ZXJWb2x1bWU6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5nYWluLmdhaW4udmFsdWUgPSB2YWx1ZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHVwZGF0ZU1hdHJpeFdvcmxkOiAoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgcG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdFxcdHZhciBxdWF0ZXJuaW9uID0gbmV3IFF1YXRlcm5pb24oKTtcXG5cXHRcXHRcXHR2YXIgc2NhbGUgPSBuZXcgVmVjdG9yMygpO1xcblxcblxcdFxcdFxcdHZhciBvcmllbnRhdGlvbiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZU1hdHJpeFdvcmxkKCBmb3JjZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRPYmplY3QzRC5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCggdGhpcywgZm9yY2UgKTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbGlzdGVuZXIgPSB0aGlzLmNvbnRleHQubGlzdGVuZXI7XFxuXFx0XFx0XFx0XFx0dmFyIHVwID0gdGhpcy51cDtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZSggcG9zaXRpb24sIHF1YXRlcm5pb24sIHNjYWxlICk7XFxuXFxuXFx0XFx0XFx0XFx0b3JpZW50YXRpb24uc2V0KCAwLCAwLCAtIDEgKS5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24gKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGxpc3RlbmVyLnBvc2l0aW9uWCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRsaXN0ZW5lci5wb3NpdGlvblguc2V0VmFsdWVBdFRpbWUoIHBvc2l0aW9uLngsIHRoaXMuY29udGV4dC5jdXJyZW50VGltZSApO1xcblxcdFxcdFxcdFxcdFxcdGxpc3RlbmVyLnBvc2l0aW9uWS5zZXRWYWx1ZUF0VGltZSggcG9zaXRpb24ueSwgdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lICk7XFxuXFx0XFx0XFx0XFx0XFx0bGlzdGVuZXIucG9zaXRpb25aLnNldFZhbHVlQXRUaW1lKCBwb3NpdGlvbi56LCB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRsaXN0ZW5lci5mb3J3YXJkWC5zZXRWYWx1ZUF0VGltZSggb3JpZW50YXRpb24ueCwgdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lICk7XFxuXFx0XFx0XFx0XFx0XFx0bGlzdGVuZXIuZm9yd2FyZFkuc2V0VmFsdWVBdFRpbWUoIG9yaWVudGF0aW9uLnksIHRoaXMuY29udGV4dC5jdXJyZW50VGltZSApO1xcblxcdFxcdFxcdFxcdFxcdGxpc3RlbmVyLmZvcndhcmRaLnNldFZhbHVlQXRUaW1lKCBvcmllbnRhdGlvbi56LCB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgKTtcXG5cXHRcXHRcXHRcXHRcXHRsaXN0ZW5lci51cFguc2V0VmFsdWVBdFRpbWUoIHVwLngsIHRoaXMuY29udGV4dC5jdXJyZW50VGltZSApO1xcblxcdFxcdFxcdFxcdFxcdGxpc3RlbmVyLnVwWS5zZXRWYWx1ZUF0VGltZSggdXAueSwgdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lICk7XFxuXFx0XFx0XFx0XFx0XFx0bGlzdGVuZXIudXBaLnNldFZhbHVlQXRUaW1lKCB1cC56LCB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdGxpc3RlbmVyLnNldFBvc2l0aW9uKCBwb3NpdGlvbi54LCBwb3NpdGlvbi55LCBwb3NpdGlvbi56ICk7XFxuXFx0XFx0XFx0XFx0XFx0bGlzdGVuZXIuc2V0T3JpZW50YXRpb24oIG9yaWVudGF0aW9uLngsIG9yaWVudGF0aW9uLnksIG9yaWVudGF0aW9uLnosIHVwLngsIHVwLnksIHVwLnogKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9ICkoKVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgUmVlY2UgQWFyb24gTGVjcml2YWluIC8gaHR0cDovL3JlZWNlbm90ZXMuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEF1ZGlvKCBsaXN0ZW5lciApIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy50eXBlID0gJ0F1ZGlvJztcXG5cXG5cXHRcXHR0aGlzLmNvbnRleHQgPSBsaXN0ZW5lci5jb250ZXh0O1xcblxcblxcdFxcdHRoaXMuZ2FpbiA9IHRoaXMuY29udGV4dC5jcmVhdGVHYWluKCk7XFxuXFx0XFx0dGhpcy5nYWluLmNvbm5lY3QoIGxpc3RlbmVyLmdldElucHV0KCkgKTtcXG5cXG5cXHRcXHR0aGlzLmF1dG9wbGF5ID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5idWZmZXIgPSBudWxsO1xcblxcdFxcdHRoaXMubG9vcCA9IGZhbHNlO1xcblxcdFxcdHRoaXMuc3RhcnRUaW1lID0gMDtcXG5cXHRcXHR0aGlzLm9mZnNldCA9IDA7XFxuXFx0XFx0dGhpcy5wbGF5YmFja1JhdGUgPSAxO1xcblxcdFxcdHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XFxuXFx0XFx0dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wgPSB0cnVlO1xcblxcdFxcdHRoaXMuc291cmNlVHlwZSA9ICdlbXB0eSc7XFxuXFxuXFx0XFx0dGhpcy5maWx0ZXJzID0gW107XFxuXFxuXFx0fVxcblxcblxcdEF1ZGlvLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEF1ZGlvLFxcblxcblxcdFxcdGdldE91dHB1dDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmdhaW47XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXROb2RlU291cmNlOiBmdW5jdGlvbiAoIGF1ZGlvTm9kZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmhhc1BsYXliYWNrQ29udHJvbCA9IGZhbHNlO1xcblxcdFxcdFxcdHRoaXMuc291cmNlVHlwZSA9ICdhdWRpb05vZGUnO1xcblxcdFxcdFxcdHRoaXMuc291cmNlID0gYXVkaW9Ob2RlO1xcblxcdFxcdFxcdHRoaXMuY29ubmVjdCgpO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0QnVmZmVyOiBmdW5jdGlvbiAoIGF1ZGlvQnVmZmVyICkge1xcblxcblxcdFxcdFxcdHRoaXMuYnVmZmVyID0gYXVkaW9CdWZmZXI7XFxuXFx0XFx0XFx0dGhpcy5zb3VyY2VUeXBlID0gJ2J1ZmZlcic7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmF1dG9wbGF5ICkgdGhpcy5wbGF5KCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwbGF5OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmlzUGxheWluZyA9PT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5oYXNQbGF5YmFja0NvbnRyb2wgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBzb3VyY2UgPSB0aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7XFxuXFxuXFx0XFx0XFx0c291cmNlLmJ1ZmZlciA9IHRoaXMuYnVmZmVyO1xcblxcdFxcdFxcdHNvdXJjZS5sb29wID0gdGhpcy5sb29wO1xcblxcdFxcdFxcdHNvdXJjZS5vbmVuZGVkID0gdGhpcy5vbkVuZGVkLmJpbmQoIHRoaXMgKTtcXG5cXHRcXHRcXHRzb3VyY2UucGxheWJhY2tSYXRlLnNldFZhbHVlQXRUaW1lKCB0aGlzLnBsYXliYWNrUmF0ZSwgdGhpcy5zdGFydFRpbWUgKTtcXG5cXHRcXHRcXHR0aGlzLnN0YXJ0VGltZSA9IHRoaXMuY29udGV4dC5jdXJyZW50VGltZTtcXG5cXHRcXHRcXHRzb3VyY2Uuc3RhcnQoIHRoaXMuc3RhcnRUaW1lLCB0aGlzLm9mZnNldCApO1xcblxcblxcdFxcdFxcdHRoaXMuaXNQbGF5aW5nID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHR0aGlzLnNvdXJjZSA9IHNvdXJjZTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5jb25uZWN0KCk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwYXVzZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5oYXNQbGF5YmFja0NvbnRyb2wgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5pc1BsYXlpbmcgPT09IHRydWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5zb3VyY2Uuc3RvcCgpO1xcblxcdFxcdFxcdFxcdHRoaXMub2Zmc2V0ICs9ICggdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lIC0gdGhpcy5zdGFydFRpbWUgKSAqIHRoaXMucGxheWJhY2tSYXRlO1xcblxcdFxcdFxcdFxcdHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3RvcDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5oYXNQbGF5YmFja0NvbnRyb2wgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuc291cmNlLnN0b3AoKTtcXG5cXHRcXHRcXHR0aGlzLm9mZnNldCA9IDA7XFxuXFx0XFx0XFx0dGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvbm5lY3Q6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuZmlsdGVycy5sZW5ndGggPiAwICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuc291cmNlLmNvbm5lY3QoIHRoaXMuZmlsdGVyc1sgMCBdICk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAxLCBsID0gdGhpcy5maWx0ZXJzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5maWx0ZXJzWyBpIC0gMSBdLmNvbm5lY3QoIHRoaXMuZmlsdGVyc1sgaSBdICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMuZmlsdGVyc1sgdGhpcy5maWx0ZXJzLmxlbmd0aCAtIDEgXS5jb25uZWN0KCB0aGlzLmdldE91dHB1dCgpICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnNvdXJjZS5jb25uZWN0KCB0aGlzLmdldE91dHB1dCgpICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGlzY29ubmVjdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5maWx0ZXJzLmxlbmd0aCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5zb3VyY2UuZGlzY29ubmVjdCggdGhpcy5maWx0ZXJzWyAwIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDEsIGwgPSB0aGlzLmZpbHRlcnMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLmZpbHRlcnNbIGkgLSAxIF0uZGlzY29ubmVjdCggdGhpcy5maWx0ZXJzWyBpIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5maWx0ZXJzWyB0aGlzLmZpbHRlcnMubGVuZ3RoIC0gMSBdLmRpc2Nvbm5lY3QoIHRoaXMuZ2V0T3V0cHV0KCkgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuc291cmNlLmRpc2Nvbm5lY3QoIHRoaXMuZ2V0T3V0cHV0KCkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRGaWx0ZXJzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZmlsdGVycztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldEZpbHRlcnM6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCAhIHZhbHVlICkgdmFsdWUgPSBbXTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuaXNQbGF5aW5nID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZGlzY29ubmVjdCgpO1xcblxcdFxcdFxcdFxcdHRoaXMuZmlsdGVycyA9IHZhbHVlO1xcblxcdFxcdFxcdFxcdHRoaXMuY29ubmVjdCgpO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5maWx0ZXJzID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0RmlsdGVyOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWyAwIF07XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGaWx0ZXI6IGZ1bmN0aW9uICggZmlsdGVyICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnNldEZpbHRlcnMoIGZpbHRlciA/IFsgZmlsdGVyIF0gOiBbXSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0UGxheWJhY2tSYXRlOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5oYXNQbGF5YmFja0NvbnRyb2wgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMucGxheWJhY2tSYXRlID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmlzUGxheWluZyA9PT0gdHJ1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VmFsdWVBdFRpbWUoIHRoaXMucGxheWJhY2tSYXRlLCB0aGlzLmNvbnRleHQuY3VycmVudFRpbWUgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRQbGF5YmFja1JhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRvbkVuZGVkOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldExvb3A6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuaGFzUGxheWJhY2tDb250cm9sID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5sb29wO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0TG9vcDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuaGFzUGxheWJhY2tDb250cm9sID09PSBmYWxzZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLmxvb3AgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuaXNQbGF5aW5nID09PSB0cnVlICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuc291cmNlLmxvb3AgPSB0aGlzLmxvb3A7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0Vm9sdW1lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnZhbHVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0Vm9sdW1lOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMuZ2Fpbi5nYWluLnZhbHVlID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFBvc2l0aW9uYWxBdWRpbyggbGlzdGVuZXIgKSB7XFxuXFxuXFx0XFx0QXVkaW8uY2FsbCggdGhpcywgbGlzdGVuZXIgKTtcXG5cXG5cXHRcXHR0aGlzLnBhbm5lciA9IHRoaXMuY29udGV4dC5jcmVhdGVQYW5uZXIoKTtcXG5cXHRcXHR0aGlzLnBhbm5lci5jb25uZWN0KCB0aGlzLmdhaW4gKTtcXG5cXG5cXHR9XFxuXFxuXFx0UG9zaXRpb25hbEF1ZGlvLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEF1ZGlvLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IFBvc2l0aW9uYWxBdWRpbyxcXG5cXG5cXHRcXHRnZXRPdXRwdXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5wYW5uZXI7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRSZWZEaXN0YW5jZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnBhbm5lci5yZWZEaXN0YW5jZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFJlZkRpc3RhbmNlOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMucGFubmVyLnJlZkRpc3RhbmNlID0gdmFsdWU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRSb2xsb2ZmRmFjdG9yOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3I7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRSb2xsb2ZmRmFjdG9yOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3IgPSB2YWx1ZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldERpc3RhbmNlTW9kZWw6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldERpc3RhbmNlTW9kZWw6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbCA9IHZhbHVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0TWF4RGlzdGFuY2U6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5wYW5uZXIubWF4RGlzdGFuY2U7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRNYXhEaXN0YW5jZTogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnBhbm5lci5tYXhEaXN0YW5jZSA9IHZhbHVlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dXBkYXRlTWF0cml4V29ybGQ6ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZU1hdHJpeFdvcmxkKCBmb3JjZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRPYmplY3QzRC5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCggdGhpcywgZm9yY2UgKTtcXG5cXG5cXHRcXHRcXHRcXHRwb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oIHRoaXMubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnBhbm5lci5zZXRQb3NpdGlvbiggcG9zaXRpb24ueCwgcG9zaXRpb24ueSwgcG9zaXRpb24ueiApO1xcblxcblxcdFxcdFxcdH07XFxuXFxuXFx0XFx0fSApKClcXG5cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBBdWRpb0FuYWx5c2VyKCBhdWRpbywgZmZ0U2l6ZSApIHtcXG5cXG5cXHRcXHR0aGlzLmFuYWx5c2VyID0gYXVkaW8uY29udGV4dC5jcmVhdGVBbmFseXNlcigpO1xcblxcdFxcdHRoaXMuYW5hbHlzZXIuZmZ0U2l6ZSA9IGZmdFNpemUgIT09IHVuZGVmaW5lZCA/IGZmdFNpemUgOiAyMDQ4O1xcblxcblxcdFxcdHRoaXMuZGF0YSA9IG5ldyBVaW50OEFycmF5KCB0aGlzLmFuYWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50ICk7XFxuXFxuXFx0XFx0YXVkaW8uZ2V0T3V0cHV0KCkuY29ubmVjdCggdGhpcy5hbmFseXNlciApO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBBdWRpb0FuYWx5c2VyLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGdldEZyZXF1ZW5jeURhdGE6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKCB0aGlzLmRhdGEgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kYXRhO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0QXZlcmFnZUZyZXF1ZW5jeTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciB2YWx1ZSA9IDAsIGRhdGEgPSB0aGlzLmdldEZyZXF1ZW5jeURhdGEoKTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YWx1ZSArPSBkYXRhWyBpIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB2YWx1ZSAvIGRhdGEubGVuZ3RoO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICpcXG5cXHQgKiBCdWZmZXJlZCBzY2VuZSBncmFwaCBwcm9wZXJ0eSB0aGF0IGFsbG93cyB3ZWlnaHRlZCBhY2N1bXVsYXRpb24uXFxuXFx0ICpcXG5cXHQgKlxcblxcdCAqIEBhdXRob3IgQmVuIEhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW8vXFxuXFx0ICogQGF1dGhvciBEYXZpZCBTYXJubyAvIGh0dHA6Ly9saWdodGhhdXMudXMvXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFByb3BlcnR5TWl4ZXIoIGJpbmRpbmcsIHR5cGVOYW1lLCB2YWx1ZVNpemUgKSB7XFxuXFxuXFx0XFx0dGhpcy5iaW5kaW5nID0gYmluZGluZztcXG5cXHRcXHR0aGlzLnZhbHVlU2l6ZSA9IHZhbHVlU2l6ZTtcXG5cXG5cXHRcXHR2YXIgYnVmZmVyVHlwZSA9IEZsb2F0NjRBcnJheSxcXG5cXHRcXHRcXHRtaXhGdW5jdGlvbjtcXG5cXG5cXHRcXHRzd2l0Y2ggKCB0eXBlTmFtZSApIHtcXG5cXG5cXHRcXHRcXHRjYXNlICdxdWF0ZXJuaW9uJzpcXG5cXHRcXHRcXHRcXHRtaXhGdW5jdGlvbiA9IHRoaXMuX3NsZXJwO1xcblxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdGNhc2UgJ3N0cmluZyc6XFxuXFx0XFx0XFx0Y2FzZSAnYm9vbCc6XFxuXFx0XFx0XFx0XFx0YnVmZmVyVHlwZSA9IEFycmF5O1xcblxcdFxcdFxcdFxcdG1peEZ1bmN0aW9uID0gdGhpcy5fc2VsZWN0O1xcblxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdGRlZmF1bHQ6XFxuXFx0XFx0XFx0XFx0bWl4RnVuY3Rpb24gPSB0aGlzLl9sZXJwO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLmJ1ZmZlciA9IG5ldyBidWZmZXJUeXBlKCB2YWx1ZVNpemUgKiA0ICk7XFxuXFx0XFx0Ly8gbGF5b3V0OiBbIGluY29taW5nIHwgYWNjdTAgfCBhY2N1MSB8IG9yaWcgXVxcblxcdFxcdC8vXFxuXFx0XFx0Ly8gaW50ZXJwb2xhdG9ycyBjYW4gdXNlIC5idWZmZXIgYXMgdGhlaXIgLnJlc3VsdFxcblxcdFxcdC8vIHRoZSBkYXRhIHRoZW4gZ29lcyB0byAnaW5jb21pbmcnXFxuXFx0XFx0Ly9cXG5cXHRcXHQvLyAnYWNjdTAnIGFuZCAnYWNjdTEnIGFyZSB1c2VkIGZyYW1lLWludGVybGVhdmVkIGZvclxcblxcdFxcdC8vIHRoZSBjdW11bGF0aXZlIHJlc3VsdCBhbmQgYXJlIGNvbXBhcmVkIHRvIGRldGVjdFxcblxcdFxcdC8vIGNoYW5nZXNcXG5cXHRcXHQvL1xcblxcdFxcdC8vICdvcmlnJyBzdG9yZXMgdGhlIG9yaWdpbmFsIHN0YXRlIG9mIHRoZSBwcm9wZXJ0eVxcblxcblxcdFxcdHRoaXMuX21peEJ1ZmZlclJlZ2lvbiA9IG1peEZ1bmN0aW9uO1xcblxcblxcdFxcdHRoaXMuY3VtdWxhdGl2ZVdlaWdodCA9IDA7XFxuXFxuXFx0XFx0dGhpcy51c2VDb3VudCA9IDA7XFxuXFx0XFx0dGhpcy5yZWZlcmVuY2VDb3VudCA9IDA7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIFByb3BlcnR5TWl4ZXIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Ly8gYWNjdW11bGF0ZSBkYXRhIGluIHRoZSAnaW5jb21pbmcnIHJlZ2lvbiBpbnRvICdhY2N1PGk+J1xcblxcdFxcdGFjY3VtdWxhdGU6IGZ1bmN0aW9uICggYWNjdUluZGV4LCB3ZWlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0Ly8gbm90ZTogaGFwcGlseSBhY2N1bXVsYXRpbmcgbm90aGluZyB3aGVuIHdlaWdodCA9IDAsIHRoZSBjYWxsZXIga25vd3NcXG5cXHRcXHRcXHQvLyB0aGUgd2VpZ2h0IGFuZCBzaG91bGRuJ3QgaGF2ZSBtYWRlIHRoZSBjYWxsIGluIHRoZSBmaXJzdCBwbGFjZVxcblxcblxcdFxcdFxcdHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcixcXG5cXHRcXHRcXHRcXHRzdHJpZGUgPSB0aGlzLnZhbHVlU2l6ZSxcXG5cXHRcXHRcXHRcXHRvZmZzZXQgPSBhY2N1SW5kZXggKiBzdHJpZGUgKyBzdHJpZGUsXFxuXFxuXFx0XFx0XFx0XFx0Y3VycmVudFdlaWdodCA9IHRoaXMuY3VtdWxhdGl2ZVdlaWdodDtcXG5cXG5cXHRcXHRcXHRpZiAoIGN1cnJlbnRXZWlnaHQgPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gYWNjdU4gOj0gaW5jb21pbmcgKiB3ZWlnaHRcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgIT09IHN0cmlkZTsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRidWZmZXJbIG9mZnNldCArIGkgXSA9IGJ1ZmZlclsgaSBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRjdXJyZW50V2VpZ2h0ID0gd2VpZ2h0O1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gYWNjdU4gOj0gYWNjdU4gKyBpbmNvbWluZyAqIHdlaWdodFxcblxcblxcdFxcdFxcdFxcdGN1cnJlbnRXZWlnaHQgKz0gd2VpZ2h0O1xcblxcdFxcdFxcdFxcdHZhciBtaXggPSB3ZWlnaHQgLyBjdXJyZW50V2VpZ2h0O1xcblxcdFxcdFxcdFxcdHRoaXMuX21peEJ1ZmZlclJlZ2lvbiggYnVmZmVyLCBvZmZzZXQsIDAsIG1peCwgc3RyaWRlICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuY3VtdWxhdGl2ZVdlaWdodCA9IGN1cnJlbnRXZWlnaHQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBhcHBseSB0aGUgc3RhdGUgb2YgJ2FjY3U8aT4nIHRvIHRoZSBiaW5kaW5nIHdoZW4gYWNjdXMgZGlmZmVyXFxuXFx0XFx0YXBwbHk6IGZ1bmN0aW9uICggYWNjdUluZGV4ICkge1xcblxcblxcdFxcdFxcdHZhciBzdHJpZGUgPSB0aGlzLnZhbHVlU2l6ZSxcXG5cXHRcXHRcXHRcXHRidWZmZXIgPSB0aGlzLmJ1ZmZlcixcXG5cXHRcXHRcXHRcXHRvZmZzZXQgPSBhY2N1SW5kZXggKiBzdHJpZGUgKyBzdHJpZGUsXFxuXFxuXFx0XFx0XFx0XFx0d2VpZ2h0ID0gdGhpcy5jdW11bGF0aXZlV2VpZ2h0LFxcblxcblxcdFxcdFxcdFxcdGJpbmRpbmcgPSB0aGlzLmJpbmRpbmc7XFxuXFxuXFx0XFx0XFx0dGhpcy5jdW11bGF0aXZlV2VpZ2h0ID0gMDtcXG5cXG5cXHRcXHRcXHRpZiAoIHdlaWdodCA8IDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gYWNjdU4gOj0gYWNjdU4gKyBvcmlnaW5hbCAqICggMSAtIGN1bXVsYXRpdmVXZWlnaHQgKVxcblxcblxcdFxcdFxcdFxcdHZhciBvcmlnaW5hbFZhbHVlT2Zmc2V0ID0gc3RyaWRlICogMztcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl9taXhCdWZmZXJSZWdpb24oXFxuXFx0XFx0XFx0XFx0XFx0YnVmZmVyLCBvZmZzZXQsIG9yaWdpbmFsVmFsdWVPZmZzZXQsIDEgLSB3ZWlnaHQsIHN0cmlkZSApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IHN0cmlkZSwgZSA9IHN0cmlkZSArIHN0cmlkZTsgaSAhPT0gZTsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGJ1ZmZlclsgaSBdICE9PSBidWZmZXJbIGkgKyBzdHJpZGUgXSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyB2YWx1ZSBoYXMgY2hhbmdlZCAtPiB1cGRhdGUgc2NlbmUgZ3JhcGhcXG5cXG5cXHRcXHRcXHRcXHRcXHRiaW5kaW5nLnNldFZhbHVlKCBidWZmZXIsIG9mZnNldCApO1xcblxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyByZW1lbWJlciB0aGUgc3RhdGUgb2YgdGhlIGJvdW5kIHByb3BlcnR5IGFuZCBjb3B5IGl0IHRvIGJvdGggYWNjdXNcXG5cXHRcXHRzYXZlT3JpZ2luYWxTdGF0ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBiaW5kaW5nID0gdGhpcy5iaW5kaW5nO1xcblxcblxcdFxcdFxcdHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcixcXG5cXHRcXHRcXHRcXHRzdHJpZGUgPSB0aGlzLnZhbHVlU2l6ZSxcXG5cXG5cXHRcXHRcXHRcXHRvcmlnaW5hbFZhbHVlT2Zmc2V0ID0gc3RyaWRlICogMztcXG5cXG5cXHRcXHRcXHRiaW5kaW5nLmdldFZhbHVlKCBidWZmZXIsIG9yaWdpbmFsVmFsdWVPZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHQvLyBhY2N1WzAuLjFdIDo9IG9yaWcgLS0gaW5pdGlhbGx5IGRldGVjdCBjaGFuZ2VzIGFnYWluc3QgdGhlIG9yaWdpbmFsXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSBzdHJpZGUsIGUgPSBvcmlnaW5hbFZhbHVlT2Zmc2V0OyBpICE9PSBlOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdGJ1ZmZlclsgaSBdID0gYnVmZmVyWyBvcmlnaW5hbFZhbHVlT2Zmc2V0ICsgKCBpICUgc3RyaWRlICkgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy5jdW11bGF0aXZlV2VpZ2h0ID0gMDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIGFwcGx5IHRoZSBzdGF0ZSBwcmV2aW91c2x5IHRha2VuIHZpYSAnc2F2ZU9yaWdpbmFsU3RhdGUnIHRvIHRoZSBiaW5kaW5nXFxuXFx0XFx0cmVzdG9yZU9yaWdpbmFsU3RhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgb3JpZ2luYWxWYWx1ZU9mZnNldCA9IHRoaXMudmFsdWVTaXplICogMztcXG5cXHRcXHRcXHR0aGlzLmJpbmRpbmcuc2V0VmFsdWUoIHRoaXMuYnVmZmVyLCBvcmlnaW5hbFZhbHVlT2Zmc2V0ICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXG5cXHRcXHQvLyBtaXggZnVuY3Rpb25zXFxuXFxuXFx0XFx0X3NlbGVjdDogZnVuY3Rpb24gKCBidWZmZXIsIGRzdE9mZnNldCwgc3JjT2Zmc2V0LCB0LCBzdHJpZGUgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCB0ID49IDAuNSApIHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgIT09IHN0cmlkZTsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRidWZmZXJbIGRzdE9mZnNldCArIGkgXSA9IGJ1ZmZlclsgc3JjT2Zmc2V0ICsgaSBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRfc2xlcnA6IGZ1bmN0aW9uICggYnVmZmVyLCBkc3RPZmZzZXQsIHNyY09mZnNldCwgdCApIHtcXG5cXG5cXHRcXHRcXHRRdWF0ZXJuaW9uLnNsZXJwRmxhdCggYnVmZmVyLCBkc3RPZmZzZXQsIGJ1ZmZlciwgZHN0T2Zmc2V0LCBidWZmZXIsIHNyY09mZnNldCwgdCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X2xlcnA6IGZ1bmN0aW9uICggYnVmZmVyLCBkc3RPZmZzZXQsIHNyY09mZnNldCwgdCwgc3RyaWRlICkge1xcblxcblxcdFxcdFxcdHZhciBzID0gMSAtIHQ7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpICE9PSBzdHJpZGU7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGogPSBkc3RPZmZzZXQgKyBpO1xcblxcblxcdFxcdFxcdFxcdGJ1ZmZlclsgaiBdID0gYnVmZmVyWyBqIF0gKiBzICsgYnVmZmVyWyBzcmNPZmZzZXQgKyBpIF0gKiB0O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqXFxuXFx0ICogQSByZWZlcmVuY2UgdG8gYSByZWFsIHByb3BlcnR5IGluIHRoZSBzY2VuZSBncmFwaC5cXG5cXHQgKlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciBCZW4gSG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pby9cXG5cXHQgKiBAYXV0aG9yIERhdmlkIFNhcm5vIC8gaHR0cDovL2xpZ2h0aGF1cy51cy9cXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ29tcG9zaXRlKCB0YXJnZXRHcm91cCwgcGF0aCwgb3B0aW9uYWxQYXJzZWRQYXRoICkge1xcblxcblxcdFxcdHZhciBwYXJzZWRQYXRoID0gb3B0aW9uYWxQYXJzZWRQYXRoIHx8IFByb3BlcnR5QmluZGluZy5wYXJzZVRyYWNrTmFtZSggcGF0aCApO1xcblxcblxcdFxcdHRoaXMuX3RhcmdldEdyb3VwID0gdGFyZ2V0R3JvdXA7XFxuXFx0XFx0dGhpcy5fYmluZGluZ3MgPSB0YXJnZXRHcm91cC5zdWJzY3JpYmVfKCBwYXRoLCBwYXJzZWRQYXRoICk7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIENvbXBvc2l0ZS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRnZXRWYWx1ZTogZnVuY3Rpb24gKCBhcnJheSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdHRoaXMuYmluZCgpOyAvLyBiaW5kIGFsbCBiaW5kaW5nXFxuXFxuXFx0XFx0XFx0dmFyIGZpcnN0VmFsaWRJbmRleCA9IHRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxcXG5cXHRcXHRcXHRcXHRiaW5kaW5nID0gdGhpcy5fYmluZGluZ3NbIGZpcnN0VmFsaWRJbmRleCBdO1xcblxcblxcdFxcdFxcdC8vIGFuZCBvbmx5IGNhbGwgLmdldFZhbHVlIG9uIHRoZSBmaXJzdFxcblxcdFxcdFxcdGlmICggYmluZGluZyAhPT0gdW5kZWZpbmVkICkgYmluZGluZy5nZXRWYWx1ZSggYXJyYXksIG9mZnNldCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0VmFsdWU6IGZ1bmN0aW9uICggYXJyYXksIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYmluZGluZ3MgPSB0aGlzLl9iaW5kaW5ncztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IHRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxcXG5cXHRcXHRcXHRcXHRcXHQgIG4gPSBiaW5kaW5ncy5sZW5ndGg7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YmluZGluZ3NbIGkgXS5zZXRWYWx1ZSggYXJyYXksIG9mZnNldCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGJpbmQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgYmluZGluZ3MgPSB0aGlzLl9iaW5kaW5ncztcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IHRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxcXG5cXHRcXHRcXHRcXHRcXHQgIG4gPSBiaW5kaW5ncy5sZW5ndGg7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YmluZGluZ3NbIGkgXS5iaW5kKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dW5iaW5kOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGJpbmRpbmdzID0gdGhpcy5fYmluZGluZ3M7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSB0aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sXFxuXFx0XFx0XFx0XFx0XFx0ICBuID0gYmluZGluZ3MubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdGJpbmRpbmdzWyBpIF0udW5iaW5kKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFxuXFx0ZnVuY3Rpb24gUHJvcGVydHlCaW5kaW5nKCByb290Tm9kZSwgcGF0aCwgcGFyc2VkUGF0aCApIHtcXG5cXG5cXHRcXHR0aGlzLnBhdGggPSBwYXRoO1xcblxcdFxcdHRoaXMucGFyc2VkUGF0aCA9IHBhcnNlZFBhdGggfHwgUHJvcGVydHlCaW5kaW5nLnBhcnNlVHJhY2tOYW1lKCBwYXRoICk7XFxuXFxuXFx0XFx0dGhpcy5ub2RlID0gUHJvcGVydHlCaW5kaW5nLmZpbmROb2RlKCByb290Tm9kZSwgdGhpcy5wYXJzZWRQYXRoLm5vZGVOYW1lICkgfHwgcm9vdE5vZGU7XFxuXFxuXFx0XFx0dGhpcy5yb290Tm9kZSA9IHJvb3ROb2RlO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBQcm9wZXJ0eUJpbmRpbmcsIHtcXG5cXG5cXHRcXHRDb21wb3NpdGU6IENvbXBvc2l0ZSxcXG5cXG5cXHRcXHRjcmVhdGU6IGZ1bmN0aW9uICggcm9vdCwgcGF0aCwgcGFyc2VkUGF0aCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoICEgKCByb290ICYmIHJvb3QuaXNBbmltYXRpb25PYmplY3RHcm91cCApICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBuZXcgUHJvcGVydHlCaW5kaW5nKCByb290LCBwYXRoLCBwYXJzZWRQYXRoICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gbmV3IFByb3BlcnR5QmluZGluZy5Db21wb3NpdGUoIHJvb3QsIHBhdGgsIHBhcnNlZFBhdGggKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvKipcXG5cXHRcXHQgKiBSZXBsYWNlcyBzcGFjZXMgd2l0aCB1bmRlcnNjb3JlcyBhbmQgcmVtb3ZlcyB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIGZyb21cXG5cXHRcXHQgKiBub2RlIG5hbWVzLCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIHBhcnNlVHJhY2tOYW1lKCkuXFxuXFx0XFx0ICpcXG5cXHRcXHQgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgTm9kZSBuYW1lIHRvIGJlIHNhbml0aXplZC5cXG5cXHRcXHQgKiBAcmV0dXJuIHtzdHJpbmd9XFxuXFx0XFx0ICovXFxuXFx0XFx0c2FuaXRpemVOb2RlTmFtZTogZnVuY3Rpb24gKCBuYW1lICkge1xcblxcblxcdFxcdFxcdHJldHVybiBuYW1lLnJlcGxhY2UoIC9cXFxccy9nLCAnXycgKS5yZXBsYWNlKCAvW15cXFxcdy1dL2csICcnICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRwYXJzZVRyYWNrTmFtZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdC8vIFBhcmVudCBkaXJlY3RvcmllcywgZGVsaW1pdGVkIGJ5ICcvJyBvciAnOicuIEN1cnJlbnRseSB1bnVzZWQsIGJ1dCBtdXN0XFxuXFx0XFx0XFx0Ly8gYmUgbWF0Y2hlZCB0byBwYXJzZSB0aGUgcmVzdCBvZiB0aGUgdHJhY2sgbmFtZS5cXG5cXHRcXHRcXHR2YXIgZGlyZWN0b3J5UmUgPSAvKCg/OltcXFxcdy1dK1tcXFxcLzpdKSopLztcXG5cXG5cXHRcXHRcXHQvLyBUYXJnZXQgbm9kZS4gTWF5IGNvbnRhaW4gd29yZCBjaGFyYWN0ZXJzIChhLXpBLVowLTlfKSBhbmQgJy4nIG9yICctJy5cXG5cXHRcXHRcXHR2YXIgbm9kZVJlID0gLyhbXFxcXHctXFxcXC5dKyk/LztcXG5cXG5cXHRcXHRcXHQvLyBPYmplY3Qgb24gdGFyZ2V0IG5vZGUsIGFuZCBhY2Nlc3Nvci4gTmFtZSBtYXkgY29udGFpbiBvbmx5IHdvcmRcXG5cXHRcXHRcXHQvLyBjaGFyYWN0ZXJzLiBBY2Nlc3NvciBtYXkgY29udGFpbiBhbnkgY2hhcmFjdGVyIGV4Y2VwdCBjbG9zaW5nIGJyYWNrZXQuXFxuXFx0XFx0XFx0dmFyIG9iamVjdFJlID0gLyg/OlxcXFwuKFtcXFxcdy1dKykoPzpcXFxcWyguKylcXFxcXSk/KT8vO1xcblxcblxcdFxcdFxcdC8vIFByb3BlcnR5IGFuZCBhY2Nlc3Nvci4gTWF5IGNvbnRhaW4gb25seSB3b3JkIGNoYXJhY3RlcnMuIEFjY2Vzc29yIG1heVxcblxcdFxcdFxcdC8vIGNvbnRhaW4gYW55IG5vbi1icmFja2V0IGNoYXJhY3RlcnMuXFxuXFx0XFx0XFx0dmFyIHByb3BlcnR5UmUgPSAvXFxcXC4oW1xcXFx3LV0rKSg/OlxcXFxbKC4rKVxcXFxdKT8vO1xcblxcblxcdFxcdFxcdHZhciB0cmFja1JlID0gbmV3IFJlZ0V4cCggJydcXG5cXHRcXHRcXHRcXHQrICdeJ1xcblxcdFxcdFxcdFxcdCsgZGlyZWN0b3J5UmUuc291cmNlXFxuXFx0XFx0XFx0XFx0KyBub2RlUmUuc291cmNlXFxuXFx0XFx0XFx0XFx0KyBvYmplY3RSZS5zb3VyY2VcXG5cXHRcXHRcXHRcXHQrIHByb3BlcnR5UmUuc291cmNlXFxuXFx0XFx0XFx0XFx0KyAnJCdcXG5cXHRcXHRcXHQpO1xcblxcblxcdFxcdFxcdHZhciBzdXBwb3J0ZWRPYmplY3ROYW1lcyA9IFsgJ21hdGVyaWFsJywgJ21hdGVyaWFscycsICdib25lcycgXTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZnVuY3Rpb24gKCB0cmFja05hbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG1hdGNoZXMgPSB0cmFja1JlLmV4ZWMoIHRyYWNrTmFtZSApO1xcblxcblxcdFxcdFxcdFxcdGlmICggISBtYXRjaGVzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRocm93IG5ldyBFcnJvciggJ1Byb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogJyArIHRyYWNrTmFtZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR2YXIgcmVzdWx0cyA9IHtcXG5cXHRcXHRcXHRcXHRcXHQvLyBkaXJlY3RvcnlOYW1lOiBtYXRjaGVzWyAxIF0sIC8vICh0c2NodykgY3VycmVudGx5IHVudXNlZFxcblxcdFxcdFxcdFxcdFxcdG5vZGVOYW1lOiBtYXRjaGVzWyAyIF0sXFxuXFx0XFx0XFx0XFx0XFx0b2JqZWN0TmFtZTogbWF0Y2hlc1sgMyBdLFxcblxcdFxcdFxcdFxcdFxcdG9iamVjdEluZGV4OiBtYXRjaGVzWyA0IF0sXFxuXFx0XFx0XFx0XFx0XFx0cHJvcGVydHlOYW1lOiBtYXRjaGVzWyA1IF0sIC8vIHJlcXVpcmVkXFxuXFx0XFx0XFx0XFx0XFx0cHJvcGVydHlJbmRleDogbWF0Y2hlc1sgNiBdXFxuXFx0XFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgbGFzdERvdCA9IHJlc3VsdHMubm9kZU5hbWUgJiYgcmVzdWx0cy5ub2RlTmFtZS5sYXN0SW5kZXhPZiggJy4nICk7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBsYXN0RG90ICE9PSB1bmRlZmluZWQgJiYgbGFzdERvdCAhPT0gLSAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBvYmplY3ROYW1lID0gcmVzdWx0cy5ub2RlTmFtZS5zdWJzdHJpbmcoIGxhc3REb3QgKyAxICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gT2JqZWN0IG5hbWVzIG11c3QgYmUgY2hlY2tlZCBhZ2FpbnN0IGEgd2hpdGVsaXN0LiBPdGhlcndpc2UsIHRoZXJlXFxuXFx0XFx0XFx0XFx0XFx0Ly8gaXMgbm8gd2F5IHRvIHBhcnNlICdmb28uYmFyLmJheic6ICdiYXonIG11c3QgYmUgYSBwcm9wZXJ0eSwgYnV0XFxuXFx0XFx0XFx0XFx0XFx0Ly8gJ2JhcicgY291bGQgYmUgdGhlIG9iamVjdE5hbWUsIG9yIHBhcnQgb2YgYSBub2RlTmFtZSAod2hpY2ggY2FuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gaW5jbHVkZSAnLicgY2hhcmFjdGVycykuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBzdXBwb3J0ZWRPYmplY3ROYW1lcy5pbmRleE9mKCBvYmplY3ROYW1lICkgIT09IC0gMSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXN1bHRzLm5vZGVOYW1lID0gcmVzdWx0cy5ub2RlTmFtZS5zdWJzdHJpbmcoIDAsIGxhc3REb3QgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXN1bHRzLm9iamVjdE5hbWUgPSBvYmplY3ROYW1lO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCByZXN1bHRzLnByb3BlcnR5TmFtZSA9PT0gbnVsbCB8fCByZXN1bHRzLnByb3BlcnR5TmFtZS5sZW5ndGggPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhyb3cgbmV3IEVycm9yKCAnUHJvcGVydHlCaW5kaW5nOiBjYW4gbm90IHBhcnNlIHByb3BlcnR5TmFtZSBmcm9tIHRyYWNrTmFtZTogJyArIHRyYWNrTmFtZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gcmVzdWx0cztcXG5cXG5cXHRcXHRcXHR9O1xcblxcblxcdFxcdH0oKSxcXG5cXG5cXHRcXHRmaW5kTm9kZTogZnVuY3Rpb24gKCByb290LCBub2RlTmFtZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoICEgbm9kZU5hbWUgfHwgbm9kZU5hbWUgPT09IFxcXCJcXFwiIHx8IG5vZGVOYW1lID09PSBcXFwicm9vdFxcXCIgfHwgbm9kZU5hbWUgPT09IFxcXCIuXFxcIiB8fCBub2RlTmFtZSA9PT0gLSAxIHx8IG5vZGVOYW1lID09PSByb290Lm5hbWUgfHwgbm9kZU5hbWUgPT09IHJvb3QudXVpZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gcm9vdDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gc2VhcmNoIGludG8gc2tlbGV0b24gYm9uZXMuXFxuXFx0XFx0XFx0aWYgKCByb290LnNrZWxldG9uICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBzZWFyY2hTa2VsZXRvbiA9IGZ1bmN0aW9uICggc2tlbGV0b24gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgc2tlbGV0b24uYm9uZXMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBib25lID0gc2tlbGV0b24uYm9uZXNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGJvbmUubmFtZSA9PT0gbm9kZU5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIGJvbmU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHRcXHR9O1xcblxcblxcdFxcdFxcdFxcdHZhciBib25lID0gc2VhcmNoU2tlbGV0b24oIHJvb3Quc2tlbGV0b24gKTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGJvbmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGJvbmU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBzZWFyY2ggaW50byBub2RlIHN1YnRyZWUuXFxuXFx0XFx0XFx0aWYgKCByb290LmNoaWxkcmVuICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBzZWFyY2hOb2RlU3VidHJlZSA9IGZ1bmN0aW9uICggY2hpbGRyZW4gKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBjaGlsZE5vZGUgPSBjaGlsZHJlblsgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggY2hpbGROb2RlLm5hbWUgPT09IG5vZGVOYW1lIHx8IGNoaWxkTm9kZS51dWlkID09PSBub2RlTmFtZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gY2hpbGROb2RlO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgcmVzdWx0ID0gc2VhcmNoTm9kZVN1YnRyZWUoIGNoaWxkTm9kZS5jaGlsZHJlbiApO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGlmICggcmVzdWx0ICkgcmV0dXJuIHJlc3VsdDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIG51bGw7XFxuXFxuXFx0XFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgc3ViVHJlZU5vZGUgPSBzZWFyY2hOb2RlU3VidHJlZSggcm9vdC5jaGlsZHJlbiApO1xcblxcblxcdFxcdFxcdFxcdGlmICggc3ViVHJlZU5vZGUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIHN1YlRyZWVOb2RlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG51bGw7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBQcm9wZXJ0eUJpbmRpbmcucHJvdG90eXBlLCB7IC8vIHByb3RvdHlwZSwgY29udGludWVkXFxuXFxuXFx0XFx0Ly8gdGhlc2UgYXJlIHVzZWQgdG8gXFxcImJpbmRcXFwiIGEgbm9uZXhpc3RlbnQgcHJvcGVydHlcXG5cXHRcXHRfZ2V0VmFsdWVfdW5hdmFpbGFibGU6IGZ1bmN0aW9uICgpIHt9LFxcblxcdFxcdF9zZXRWYWx1ZV91bmF2YWlsYWJsZTogZnVuY3Rpb24gKCkge30sXFxuXFxuXFx0XFx0QmluZGluZ1R5cGU6IHtcXG5cXHRcXHRcXHREaXJlY3Q6IDAsXFxuXFx0XFx0XFx0RW50aXJlQXJyYXk6IDEsXFxuXFx0XFx0XFx0QXJyYXlFbGVtZW50OiAyLFxcblxcdFxcdFxcdEhhc0Zyb21Ub0FycmF5OiAzXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRWZXJzaW9uaW5nOiB7XFxuXFx0XFx0XFx0Tm9uZTogMCxcXG5cXHRcXHRcXHROZWVkc1VwZGF0ZTogMSxcXG5cXHRcXHRcXHRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlOiAyXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRHZXR0ZXJCeUJpbmRpbmdUeXBlOiBbXFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gZ2V0VmFsdWVfZGlyZWN0KCBidWZmZXIsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRcXHRidWZmZXJbIG9mZnNldCBdID0gdGhpcy5ub2RlWyB0aGlzLnByb3BlcnR5TmFtZSBdO1xcblxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gZ2V0VmFsdWVfYXJyYXkoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBzb3VyY2UgPSB0aGlzLnJlc29sdmVkUHJvcGVydHk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gc291cmNlLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRidWZmZXJbIG9mZnNldCArKyBdID0gc291cmNlWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0ZnVuY3Rpb24gZ2V0VmFsdWVfYXJyYXlFbGVtZW50KCBidWZmZXIsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRcXHRidWZmZXJbIG9mZnNldCBdID0gdGhpcy5yZXNvbHZlZFByb3BlcnR5WyB0aGlzLnByb3BlcnR5SW5kZXggXTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdGZ1bmN0aW9uIGdldFZhbHVlX3RvQXJyYXkoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMucmVzb2x2ZWRQcm9wZXJ0eS50b0FycmF5KCBidWZmZXIsIG9mZnNldCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRdLFxcblxcblxcdFxcdFNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nOiBbXFxuXFxuXFx0XFx0XFx0W1xcblxcdFxcdFxcdFxcdC8vIERpcmVjdFxcblxcblxcdFxcdFxcdFxcdGZ1bmN0aW9uIHNldFZhbHVlX2RpcmVjdCggYnVmZmVyLCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy50YXJnZXRPYmplY3RbIHRoaXMucHJvcGVydHlOYW1lIF0gPSBidWZmZXJbIG9mZnNldCBdO1xcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gc2V0VmFsdWVfZGlyZWN0X3NldE5lZWRzVXBkYXRlKCBidWZmZXIsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnRhcmdldE9iamVjdFsgdGhpcy5wcm9wZXJ0eU5hbWUgXSA9IGJ1ZmZlclsgb2Zmc2V0IF07XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMudGFyZ2V0T2JqZWN0WyB0aGlzLnByb3BlcnR5TmFtZSBdID0gYnVmZmVyWyBvZmZzZXQgXTtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XSwgW1xcblxcblxcdFxcdFxcdFxcdC8vIEVudGlyZUFycmF5XFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gc2V0VmFsdWVfYXJyYXkoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBkZXN0ID0gdGhpcy5yZXNvbHZlZFByb3BlcnR5O1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbiA9IGRlc3QubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGRlc3RbIGkgXSA9IGJ1ZmZlclsgb2Zmc2V0ICsrIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gc2V0VmFsdWVfYXJyYXlfc2V0TmVlZHNVcGRhdGUoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBkZXN0ID0gdGhpcy5yZXNvbHZlZFByb3BlcnR5O1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbiA9IGRlc3QubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGRlc3RbIGkgXSA9IGJ1ZmZlclsgb2Zmc2V0ICsrIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdGZ1bmN0aW9uIHNldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBkZXN0ID0gdGhpcy5yZXNvbHZlZFByb3BlcnR5O1xcblxcblxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbiA9IGRlc3QubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGRlc3RbIGkgXSA9IGJ1ZmZlclsgb2Zmc2V0ICsrIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRdLCBbXFxuXFxuXFx0XFx0XFx0XFx0Ly8gQXJyYXlFbGVtZW50XFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gc2V0VmFsdWVfYXJyYXlFbGVtZW50KCBidWZmZXIsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLnJlc29sdmVkUHJvcGVydHlbIHRoaXMucHJvcGVydHlJbmRleCBdID0gYnVmZmVyWyBvZmZzZXQgXTtcXG5cXG5cXHRcXHRcXHRcXHR9LFxcblxcblxcdFxcdFxcdFxcdGZ1bmN0aW9uIHNldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSggYnVmZmVyLCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5yZXNvbHZlZFByb3BlcnR5WyB0aGlzLnByb3BlcnR5SW5kZXggXSA9IGJ1ZmZlclsgb2Zmc2V0IF07XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMucmVzb2x2ZWRQcm9wZXJ0eVsgdGhpcy5wcm9wZXJ0eUluZGV4IF0gPSBidWZmZXJbIG9mZnNldCBdO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRdLCBbXFxuXFxuXFx0XFx0XFx0XFx0Ly8gSGFzVG9Gcm9tQXJyYXlcXG5cXG5cXHRcXHRcXHRcXHRmdW5jdGlvbiBzZXRWYWx1ZV9mcm9tQXJyYXkoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkoIGJ1ZmZlciwgb2Zmc2V0ICk7XFxuXFxuXFx0XFx0XFx0XFx0fSxcXG5cXG5cXHRcXHRcXHRcXHRmdW5jdGlvbiBzZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkoIGJ1ZmZlciwgb2Zmc2V0ICk7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdFxcdH0sXFxuXFxuXFx0XFx0XFx0XFx0ZnVuY3Rpb24gc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUoIGJ1ZmZlciwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkoIGJ1ZmZlciwgb2Zmc2V0ICk7XFxuXFx0XFx0XFx0XFx0XFx0dGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdF1cXG5cXG5cXHRcXHRdLFxcblxcblxcdFxcdGdldFZhbHVlOiBmdW5jdGlvbiBnZXRWYWx1ZV91bmJvdW5kKCB0YXJnZXRBcnJheSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdHRoaXMuYmluZCgpO1xcblxcdFxcdFxcdHRoaXMuZ2V0VmFsdWUoIHRhcmdldEFycmF5LCBvZmZzZXQgKTtcXG5cXG5cXHRcXHRcXHQvLyBOb3RlOiBUaGlzIGNsYXNzIHVzZXMgYSBTdGF0ZSBwYXR0ZXJuIG9uIGEgcGVyLW1ldGhvZCBiYXNpczpcXG5cXHRcXHRcXHQvLyAnYmluZCcgc2V0cyAndGhpcy5nZXRWYWx1ZScgLyAnc2V0VmFsdWUnIGFuZCBzaGFkb3dzIHRoZVxcblxcdFxcdFxcdC8vIHByb3RvdHlwZSB2ZXJzaW9uIG9mIHRoZXNlIG1ldGhvZHMgd2l0aCBvbmUgdGhhdCByZXByZXNlbnRzXFxuXFx0XFx0XFx0Ly8gdGhlIGJvdW5kIHN0YXRlLiBXaGVuIHRoZSBwcm9wZXJ0eSBpcyBub3QgZm91bmQsIHRoZSBtZXRob2RzXFxuXFx0XFx0XFx0Ly8gYmVjb21lIG5vLW9wcy5cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFZhbHVlOiBmdW5jdGlvbiBnZXRWYWx1ZV91bmJvdW5kKCBzb3VyY2VBcnJheSwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdHRoaXMuYmluZCgpO1xcblxcdFxcdFxcdHRoaXMuc2V0VmFsdWUoIHNvdXJjZUFycmF5LCBvZmZzZXQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIGNyZWF0ZSBnZXR0ZXIgLyBzZXR0ZXIgcGFpciBmb3IgYSBwcm9wZXJ0eSBpbiB0aGUgc2NlbmUgZ3JhcGhcXG5cXHRcXHRiaW5kOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHRhcmdldE9iamVjdCA9IHRoaXMubm9kZSxcXG5cXHRcXHRcXHRcXHRwYXJzZWRQYXRoID0gdGhpcy5wYXJzZWRQYXRoLFxcblxcblxcdFxcdFxcdFxcdG9iamVjdE5hbWUgPSBwYXJzZWRQYXRoLm9iamVjdE5hbWUsXFxuXFx0XFx0XFx0XFx0cHJvcGVydHlOYW1lID0gcGFyc2VkUGF0aC5wcm9wZXJ0eU5hbWUsXFxuXFx0XFx0XFx0XFx0cHJvcGVydHlJbmRleCA9IHBhcnNlZFBhdGgucHJvcGVydHlJbmRleDtcXG5cXG5cXHRcXHRcXHRpZiAoICEgdGFyZ2V0T2JqZWN0ICkge1xcblxcblxcdFxcdFxcdFxcdHRhcmdldE9iamVjdCA9IFByb3BlcnR5QmluZGluZy5maW5kTm9kZSggdGhpcy5yb290Tm9kZSwgcGFyc2VkUGF0aC5ub2RlTmFtZSApIHx8IHRoaXMucm9vdE5vZGU7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5ub2RlID0gdGFyZ2V0T2JqZWN0O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBzZXQgZmFpbCBzdGF0ZSBzbyB3ZSBjYW4ganVzdCAncmV0dXJuJyBvbiBlcnJvclxcblxcdFxcdFxcdHRoaXMuZ2V0VmFsdWUgPSB0aGlzLl9nZXRWYWx1ZV91bmF2YWlsYWJsZTtcXG5cXHRcXHRcXHR0aGlzLnNldFZhbHVlID0gdGhpcy5fc2V0VmFsdWVfdW5hdmFpbGFibGU7XFxuXFxuXFx0XFx0XFx0Ly8gZW5zdXJlIHRoZXJlIGlzIGEgdmFsdWUgbm9kZVxcblxcdFxcdFxcdGlmICggISB0YXJnZXRPYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBub2RlIGZvciB0cmFjazogJyArIHRoaXMucGF0aCArICcgYnV0IGl0IHdhc25cXFxcJ3QgZm91bmQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCBvYmplY3ROYW1lICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBvYmplY3RJbmRleCA9IHBhcnNlZFBhdGgub2JqZWN0SW5kZXg7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gc3BlY2lhbCBjYXNlcyB3ZXJlIHdlIG5lZWQgdG8gcmVhY2ggZGVlcGVyIGludG8gdGhlIGhpZXJhcmNoeSB0byBnZXQgdGhlIGZhY2UgbWF0ZXJpYWxzLi4uLlxcblxcdFxcdFxcdFxcdHN3aXRjaCAoIG9iamVjdE5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y2FzZSAnbWF0ZXJpYWxzJzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoICEgdGFyZ2V0T2JqZWN0Lm1hdGVyaWFsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbCBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbC4nLCB0aGlzICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoICEgdGFyZ2V0T2JqZWN0Lm1hdGVyaWFsLm1hdGVyaWFscyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwubWF0ZXJpYWxzIGFzIG5vZGUubWF0ZXJpYWwgZG9lcyBub3QgaGF2ZSBhIG1hdGVyaWFscyBhcnJheS4nLCB0aGlzICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0YXJnZXRPYmplY3QgPSB0YXJnZXRPYmplY3QubWF0ZXJpYWwubWF0ZXJpYWxzO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGNhc2UgJ2JvbmVzJzpcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoICEgdGFyZ2V0T2JqZWN0LnNrZWxldG9uICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBib25lcyBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBza2VsZXRvbi4nLCB0aGlzICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBwb3RlbnRpYWwgZnV0dXJlIG9wdGltaXphdGlvbjogc2tpcCB0aGlzIGlmIHByb3BlcnR5SW5kZXggaXMgYWxyZWFkeSBhbiBpbnRlZ2VyXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gYW5kIGNvbnZlcnQgdGhlIGludGVnZXIgc3RyaW5nIHRvIGEgdHJ1ZSBpbnRlZ2VyLlxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRhcmdldE9iamVjdCA9IHRhcmdldE9iamVjdC5za2VsZXRvbi5ib25lcztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBzdXBwb3J0IHJlc29sdmluZyBtb3JwaFRhcmdldCBuYW1lcyBpbnRvIGluZGljZXMuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgdGFyZ2V0T2JqZWN0Lmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHRhcmdldE9iamVjdFsgaSBdLm5hbWUgPT09IG9iamVjdEluZGV4ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdEluZGV4ID0gaTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRicmVhaztcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdGRlZmF1bHQ6XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0YXJnZXRPYmplY3RbIG9iamVjdE5hbWUgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBvYmplY3ROYW1lIG9mIG5vZGUgdW5kZWZpbmVkLicsIHRoaXMgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRhcmdldE9iamVjdCA9IHRhcmdldE9iamVjdFsgb2JqZWN0TmFtZSBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIG9iamVjdEluZGV4ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCB0YXJnZXRPYmplY3RbIG9iamVjdEluZGV4IF0gPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gYmluZCB0byBvYmplY3RJbmRleCBvZiBvYmplY3ROYW1lLCBidXQgaXMgdW5kZWZpbmVkLicsIHRoaXMsIHRhcmdldE9iamVjdCApO1xcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGFyZ2V0T2JqZWN0ID0gdGFyZ2V0T2JqZWN0WyBvYmplY3RJbmRleCBdO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gcmVzb2x2ZSBwcm9wZXJ0eVxcblxcdFxcdFxcdHZhciBub2RlUHJvcGVydHkgPSB0YXJnZXRPYmplY3RbIHByb3BlcnR5TmFtZSBdO1xcblxcblxcdFxcdFxcdGlmICggbm9kZVByb3BlcnR5ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG5vZGVOYW1lID0gcGFyc2VkUGF0aC5ub2RlTmFtZTtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIHByb3BlcnR5IGZvciB0cmFjazogJyArIG5vZGVOYW1lICtcXG5cXHRcXHRcXHRcXHRcXHQnLicgKyBwcm9wZXJ0eU5hbWUgKyAnIGJ1dCBpdCB3YXNuXFxcXCd0IGZvdW5kLicsIHRhcmdldE9iamVjdCApO1xcblxcdFxcdFxcdFxcdHJldHVybjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gZGV0ZXJtaW5lIHZlcnNpb25pbmcgc2NoZW1lXFxuXFx0XFx0XFx0dmFyIHZlcnNpb25pbmcgPSB0aGlzLlZlcnNpb25pbmcuTm9uZTtcXG5cXG5cXHRcXHRcXHRpZiAoIHRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZSAhPT0gdW5kZWZpbmVkICkgeyAvLyBtYXRlcmlhbFxcblxcblxcdFxcdFxcdFxcdHZlcnNpb25pbmcgPSB0aGlzLlZlcnNpb25pbmcuTmVlZHNVcGRhdGU7XFxuXFx0XFx0XFx0XFx0dGhpcy50YXJnZXRPYmplY3QgPSB0YXJnZXRPYmplY3Q7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggdGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUgIT09IHVuZGVmaW5lZCApIHsgLy8gbm9kZSB0cmFuc2Zvcm1cXG5cXG5cXHRcXHRcXHRcXHR2ZXJzaW9uaW5nID0gdGhpcy5WZXJzaW9uaW5nLk1hdHJpeFdvcmxkTmVlZHNVcGRhdGU7XFxuXFx0XFx0XFx0XFx0dGhpcy50YXJnZXRPYmplY3QgPSB0YXJnZXRPYmplY3Q7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGRldGVybWluZSBob3cgdGhlIHByb3BlcnR5IGdldHMgYm91bmRcXG5cXHRcXHRcXHR2YXIgYmluZGluZ1R5cGUgPSB0aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtcXG5cXG5cXHRcXHRcXHRpZiAoIHByb3BlcnR5SW5kZXggIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBhY2Nlc3MgYSBzdWIgZWxlbWVudCBvZiB0aGUgcHJvcGVydHkgYXJyYXkgKG9ubHkgcHJpbWl0aXZlcyBhcmUgc3VwcG9ydGVkIHJpZ2h0IG5vdylcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHByb3BlcnR5TmFtZSA9PT0gXFxcIm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1xcXCIgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gcG90ZW50aWFsIG9wdGltaXphdGlvbiwgc2tpcCB0aGlzIGlmIHByb3BlcnR5SW5kZXggaXMgYWxyZWFkeSBhbiBpbnRlZ2VyLCBhbmQgY29udmVydCB0aGUgaW50ZWdlciBzdHJpbmcgdG8gYSB0cnVlIGludGVnZXIuXFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gc3VwcG9ydCByZXNvbHZpbmcgbW9ycGhUYXJnZXQgbmFtZXMgaW50byBpbmRpY2VzLlxcblxcdFxcdFxcdFxcdFxcdGlmICggISB0YXJnZXRPYmplY3QuZ2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5LicsIHRoaXMgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdGlmICggdGFyZ2V0T2JqZWN0Lmdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCAhIHRhcmdldE9iamVjdC5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy4nLCB0aGlzICk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCB0aGlzLm5vZGUuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHRhcmdldE9iamVjdC5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb25bIGkgXS5uYW1lID09PSBwcm9wZXJ0eUluZGV4ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHByb3BlcnR5SW5kZXggPSBpO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoICEgdGFyZ2V0T2JqZWN0Lmdlb21ldHJ5Lm1vcnBoVGFyZ2V0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkubW9ycGhUYXJnZXRzLicsIHRoaXMgKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IHRoaXMubm9kZS5nZW9tZXRyeS5tb3JwaFRhcmdldHMubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGlmICggdGFyZ2V0T2JqZWN0Lmdlb21ldHJ5Lm1vcnBoVGFyZ2V0c1sgaSBdLm5hbWUgPT09IHByb3BlcnR5SW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0cHJvcGVydHlJbmRleCA9IGk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGJpbmRpbmdUeXBlID0gdGhpcy5CaW5kaW5nVHlwZS5BcnJheUVsZW1lbnQ7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5yZXNvbHZlZFByb3BlcnR5ID0gbm9kZVByb3BlcnR5O1xcblxcdFxcdFxcdFxcdHRoaXMucHJvcGVydHlJbmRleCA9IHByb3BlcnR5SW5kZXg7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggbm9kZVByb3BlcnR5LmZyb21BcnJheSAhPT0gdW5kZWZpbmVkICYmIG5vZGVQcm9wZXJ0eS50b0FycmF5ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gbXVzdCB1c2UgY29weSBmb3IgT2JqZWN0M0QuRXVsZXIvUXVhdGVybmlvblxcblxcblxcdFxcdFxcdFxcdGJpbmRpbmdUeXBlID0gdGhpcy5CaW5kaW5nVHlwZS5IYXNGcm9tVG9BcnJheTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnJlc29sdmVkUHJvcGVydHkgPSBub2RlUHJvcGVydHk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggbm9kZVByb3BlcnR5ICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0YmluZGluZ1R5cGUgPSB0aGlzLkJpbmRpbmdUeXBlLkVudGlyZUFycmF5O1xcblxcblxcdFxcdFxcdFxcdHRoaXMucmVzb2x2ZWRQcm9wZXJ0eSA9IG5vZGVQcm9wZXJ0eTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHRoaXMucHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHQvLyBzZWxlY3QgZ2V0dGVyIC8gc2V0dGVyXFxuXFx0XFx0XFx0dGhpcy5nZXRWYWx1ZSA9IHRoaXMuR2V0dGVyQnlCaW5kaW5nVHlwZVsgYmluZGluZ1R5cGUgXTtcXG5cXHRcXHRcXHR0aGlzLnNldFZhbHVlID0gdGhpcy5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZ1sgYmluZGluZ1R5cGUgXVsgdmVyc2lvbmluZyBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0dW5iaW5kOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5ub2RlID0gbnVsbDtcXG5cXG5cXHRcXHRcXHQvLyBiYWNrIHRvIHRoZSBwcm90b3R5cGUgdmVyc2lvbiBvZiBnZXRWYWx1ZSAvIHNldFZhbHVlXFxuXFx0XFx0XFx0Ly8gbm90ZTogYXZvaWRpbmcgdG8gbXV0YXRlIHRoZSBzaGFwZSBvZiAndGhpcycgdmlhICdkZWxldGUnXFxuXFx0XFx0XFx0dGhpcy5nZXRWYWx1ZSA9IHRoaXMuX2dldFZhbHVlX3VuYm91bmQ7XFxuXFx0XFx0XFx0dGhpcy5zZXRWYWx1ZSA9IHRoaXMuX3NldFZhbHVlX3VuYm91bmQ7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvLyFcXFxcIERFQ0xBUkUgQUxJQVMgQUZURVIgYXNzaWduIHByb3RvdHlwZSAhXFxuXFx0T2JqZWN0LmFzc2lnbiggUHJvcGVydHlCaW5kaW5nLnByb3RvdHlwZSwge1xcblxcblxcdFxcdC8vIGluaXRpYWwgc3RhdGUgb2YgdGhlc2UgbWV0aG9kcyB0aGF0IGNhbGxzICdiaW5kJ1xcblxcdFxcdF9nZXRWYWx1ZV91bmJvdW5kOiBQcm9wZXJ0eUJpbmRpbmcucHJvdG90eXBlLmdldFZhbHVlLFxcblxcdFxcdF9zZXRWYWx1ZV91bmJvdW5kOiBQcm9wZXJ0eUJpbmRpbmcucHJvdG90eXBlLnNldFZhbHVlLFxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKlxcblxcdCAqIEEgZ3JvdXAgb2Ygb2JqZWN0cyB0aGF0IHJlY2VpdmVzIGEgc2hhcmVkIGFuaW1hdGlvbiBzdGF0ZS5cXG5cXHQgKlxcblxcdCAqIFVzYWdlOlxcblxcdCAqXFxuXFx0ICogXFx0LVxcdEFkZCBvYmplY3RzIHlvdSB3b3VsZCBvdGhlcndpc2UgcGFzcyBhcyAncm9vdCcgdG8gdGhlXFxuXFx0ICogXFx0XFx0Y29uc3RydWN0b3Igb3IgdGhlIC5jbGlwQWN0aW9uIG1ldGhvZCBvZiBBbmltYXRpb25NaXhlci5cXG5cXHQgKlxcblxcdCAqIFxcdC1cXHRJbnN0ZWFkIHBhc3MgdGhpcyBvYmplY3QgYXMgJ3Jvb3QnLlxcblxcdCAqXFxuXFx0ICogXFx0LVxcdFlvdSBjYW4gYWxzbyBhZGQgYW5kIHJlbW92ZSBvYmplY3RzIGxhdGVyIHdoZW4gdGhlIG1peGVyXFxuXFx0ICogXFx0XFx0aXMgcnVubmluZy5cXG5cXHQgKlxcblxcdCAqIE5vdGU6XFxuXFx0ICpcXG5cXHQgKiAgXFx0T2JqZWN0cyBvZiB0aGlzIGNsYXNzIGFwcGVhciBhcyBvbmUgb2JqZWN0IHRvIHRoZSBtaXhlcixcXG5cXHQgKiAgXFx0c28gY2FjaGUgY29udHJvbCBvZiB0aGUgaW5kaXZpZHVhbCBvYmplY3RzIG11c3QgYmUgZG9uZVxcblxcdCAqICBcXHRvbiB0aGUgZ3JvdXAuXFxuXFx0ICpcXG5cXHQgKiBMaW1pdGF0aW9uOlxcblxcdCAqXFxuXFx0ICogXFx0LSBcXHRUaGUgYW5pbWF0ZWQgcHJvcGVydGllcyBtdXN0IGJlIGNvbXBhdGlibGUgYW1vbmcgdGhlXFxuXFx0ICogXFx0XFx0YWxsIG9iamVjdHMgaW4gdGhlIGdyb3VwLlxcblxcdCAqXFxuXFx0ICogIC1cXHRBIHNpbmdsZSBwcm9wZXJ0eSBjYW4gZWl0aGVyIGJlIGNvbnRyb2xsZWQgdGhyb3VnaCBhXFxuXFx0ICogIFxcdHRhcmdldCBncm91cCBvciBkaXJlY3RseSwgYnV0IG5vdCBib3RoLlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciB0c2Nod1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEFuaW1hdGlvbk9iamVjdEdyb3VwKCkge1xcblxcblxcdFxcdHRoaXMudXVpZCA9IF9NYXRoLmdlbmVyYXRlVVVJRCgpO1xcblxcblxcdFxcdC8vIGNhY2hlZCBvYmplY3RzIGZvbGxvd2VkIGJ5IHRoZSBhY3RpdmUgb25lc1xcblxcdFxcdHRoaXMuX29iamVjdHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXJndW1lbnRzICk7XFxuXFxuXFx0XFx0dGhpcy5uQ2FjaGVkT2JqZWN0c18gPSAwO1xcdFxcdFxcdC8vIHRocmVzaG9sZFxcblxcdFxcdC8vIG5vdGU6IHJlYWQgYnkgUHJvcGVydHlCaW5kaW5nLkNvbXBvc2l0ZVxcblxcblxcdFxcdHZhciBpbmRpY2VzID0ge307XFxuXFx0XFx0dGhpcy5faW5kaWNlc0J5VVVJRCA9IGluZGljZXM7XFx0XFx0Ly8gZm9yIGJvb2trZWVwaW5nXFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRpbmRpY2VzWyBhcmd1bWVudHNbIGkgXS51dWlkIF0gPSBpO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLl9wYXRocyA9IFtdO1xcdFxcdFxcdFxcdFxcdC8vIGluc2lkZTogc3RyaW5nXFxuXFx0XFx0dGhpcy5fcGFyc2VkUGF0aHMgPSBbXTtcXHRcXHRcXHRcXHQvLyBpbnNpZGU6IHsgd2UgZG9uJ3QgY2FyZSwgaGVyZSB9XFxuXFx0XFx0dGhpcy5fYmluZGluZ3MgPSBbXTsgXFx0XFx0XFx0XFx0Ly8gaW5zaWRlOiBBcnJheTwgUHJvcGVydHlCaW5kaW5nID5cXG5cXHRcXHR0aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGggPSB7fTsgXFx0Ly8gaW5zaWRlOiBpbmRpY2VzIGluIHRoZXNlIGFycmF5c1xcblxcblxcdFxcdHZhciBzY29wZSA9IHRoaXM7XFxuXFxuXFx0XFx0dGhpcy5zdGF0cyA9IHtcXG5cXG5cXHRcXHRcXHRvYmplY3RzOiB7XFxuXFx0XFx0XFx0XFx0Z2V0IHRvdGFsKCkge1xcblxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBzY29wZS5fb2JqZWN0cy5sZW5ndGg7XFxuXFxuXFx0XFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRcXHRnZXQgaW5Vc2UoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudG90YWwgLSBzY29wZS5uQ2FjaGVkT2JqZWN0c187XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0Z2V0IGJpbmRpbmdzUGVyT2JqZWN0KCkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBzY29wZS5fYmluZGluZ3MubGVuZ3RoO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9O1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBBbmltYXRpb25PYmplY3RHcm91cC5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRpc0FuaW1hdGlvbk9iamVjdEdyb3VwOiB0cnVlLFxcblxcblxcdFxcdGFkZDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBvYmplY3RzID0gdGhpcy5fb2JqZWN0cyxcXG5cXHRcXHRcXHRcXHRuT2JqZWN0cyA9IG9iamVjdHMubGVuZ3RoLFxcblxcdFxcdFxcdFxcdG5DYWNoZWRPYmplY3RzID0gdGhpcy5uQ2FjaGVkT2JqZWN0c18sXFxuXFx0XFx0XFx0XFx0aW5kaWNlc0J5VVVJRCA9IHRoaXMuX2luZGljZXNCeVVVSUQsXFxuXFx0XFx0XFx0XFx0cGF0aHMgPSB0aGlzLl9wYXRocyxcXG5cXHRcXHRcXHRcXHRwYXJzZWRQYXRocyA9IHRoaXMuX3BhcnNlZFBhdGhzLFxcblxcdFxcdFxcdFxcdGJpbmRpbmdzID0gdGhpcy5fYmluZGluZ3MsXFxuXFx0XFx0XFx0XFx0bkJpbmRpbmdzID0gYmluZGluZ3MubGVuZ3RoO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG9iamVjdCA9IGFyZ3VtZW50c1sgaSBdLFxcblxcdFxcdFxcdFxcdFxcdHV1aWQgPSBvYmplY3QudXVpZCxcXG5cXHRcXHRcXHRcXHRcXHRpbmRleCA9IGluZGljZXNCeVVVSURbIHV1aWQgXSxcXG5cXHRcXHRcXHRcXHRcXHRrbm93bk9iamVjdCA9IHVuZGVmaW5lZDtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGluZGV4ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8gdW5rbm93biBvYmplY3QgLT4gYWRkIGl0IHRvIHRoZSBBQ1RJVkUgcmVnaW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0aW5kZXggPSBuT2JqZWN0cyArKztcXG5cXHRcXHRcXHRcXHRcXHRpbmRpY2VzQnlVVUlEWyB1dWlkIF0gPSBpbmRleDtcXG5cXHRcXHRcXHRcXHRcXHRvYmplY3RzLnB1c2goIG9iamVjdCApO1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGFjY291bnRpbmcgaXMgZG9uZSwgbm93IGRvIHRoZSBzYW1lIGZvciBhbGwgYmluZGluZ3NcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaiA9IDAsIG0gPSBuQmluZGluZ3M7IGogIT09IG07ICsrIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YmluZGluZ3NbIGogXS5wdXNoKCBuZXcgUHJvcGVydHlCaW5kaW5nKCBvYmplY3QsIHBhdGhzWyBqIF0sIHBhcnNlZFBhdGhzWyBqIF0gKSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2UgaWYgKCBpbmRleCA8IG5DYWNoZWRPYmplY3RzICkge1xcblxcblxcdFxcdFxcdFxcdFxcdGtub3duT2JqZWN0ID0gb2JqZWN0c1sgaW5kZXggXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBtb3ZlIGV4aXN0aW5nIG9iamVjdCB0byB0aGUgQUNUSVZFIHJlZ2lvblxcblxcblxcdFxcdFxcdFxcdFxcdHZhciBmaXJzdEFjdGl2ZUluZGV4ID0gLS0gbkNhY2hlZE9iamVjdHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0bGFzdENhY2hlZE9iamVjdCA9IG9iamVjdHNbIGZpcnN0QWN0aXZlSW5kZXggXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpbmRpY2VzQnlVVUlEWyBsYXN0Q2FjaGVkT2JqZWN0LnV1aWQgXSA9IGluZGV4O1xcblxcdFxcdFxcdFxcdFxcdG9iamVjdHNbIGluZGV4IF0gPSBsYXN0Q2FjaGVkT2JqZWN0O1xcblxcblxcdFxcdFxcdFxcdFxcdGluZGljZXNCeVVVSURbIHV1aWQgXSA9IGZpcnN0QWN0aXZlSW5kZXg7XFxuXFx0XFx0XFx0XFx0XFx0b2JqZWN0c1sgZmlyc3RBY3RpdmVJbmRleCBdID0gb2JqZWN0O1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGFjY291bnRpbmcgaXMgZG9uZSwgbm93IGRvIHRoZSBzYW1lIGZvciBhbGwgYmluZGluZ3NcXG5cXG5cXHRcXHRcXHRcXHRcXHRmb3IgKCB2YXIgaiA9IDAsIG0gPSBuQmluZGluZ3M7IGogIT09IG07ICsrIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGJpbmRpbmdzRm9yUGF0aCA9IGJpbmRpbmdzWyBqIF0sXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0bGFzdENhY2hlZCA9IGJpbmRpbmdzRm9yUGF0aFsgZmlyc3RBY3RpdmVJbmRleCBdLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJpbmRpbmcgPSBiaW5kaW5nc0ZvclBhdGhbIGluZGV4IF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0YmluZGluZ3NGb3JQYXRoWyBpbmRleCBdID0gbGFzdENhY2hlZDtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGJpbmRpbmcgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyBzaW5jZSB3ZSBkbyBub3QgYm90aGVyIHRvIGNyZWF0ZSBuZXcgYmluZGluZ3NcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyBmb3Igb2JqZWN0cyB0aGF0IGFyZSBjYWNoZWQsIHRoZSBiaW5kaW5nIG1heVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIG9yIG1heSBub3QgZXhpc3RcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRiaW5kaW5nID0gbmV3IFByb3BlcnR5QmluZGluZyggb2JqZWN0LCBwYXRoc1sgaiBdLCBwYXJzZWRQYXRoc1sgaiBdICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJpbmRpbmdzRm9yUGF0aFsgZmlyc3RBY3RpdmVJbmRleCBdID0gYmluZGluZztcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIGlmICggb2JqZWN0c1sgaW5kZXggXSAhPT0ga25vd25PYmplY3QgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLkFuaW1hdGlvbk9iamVjdEdyb3VwOiBEaWZmZXJlbnQgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIFVVSUQgJyArXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0J2RldGVjdGVkLiBDbGVhbiB0aGUgY2FjaGVzIG9yIHJlY3JlYXRlIHlvdXIgaW5mcmFzdHJ1Y3R1cmUgd2hlbiByZWxvYWRpbmcgc2NlbmVzLicgKTtcXG5cXG5cXHRcXHRcXHRcXHR9IC8vIGVsc2UgdGhlIG9iamVjdCBpcyBhbHJlYWR5IHdoZXJlIHdlIHdhbnQgaXQgdG8gYmVcXG5cXG5cXHRcXHRcXHR9IC8vIGZvciBhcmd1bWVudHNcXG5cXG5cXHRcXHRcXHR0aGlzLm5DYWNoZWRPYmplY3RzXyA9IG5DYWNoZWRPYmplY3RzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0cmVtb3ZlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIG9iamVjdHMgPSB0aGlzLl9vYmplY3RzLFxcblxcdFxcdFxcdFxcdG5DYWNoZWRPYmplY3RzID0gdGhpcy5uQ2FjaGVkT2JqZWN0c18sXFxuXFx0XFx0XFx0XFx0aW5kaWNlc0J5VVVJRCA9IHRoaXMuX2luZGljZXNCeVVVSUQsXFxuXFx0XFx0XFx0XFx0YmluZGluZ3MgPSB0aGlzLl9iaW5kaW5ncyxcXG5cXHRcXHRcXHRcXHRuQmluZGluZ3MgPSBiaW5kaW5ncy5sZW5ndGg7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgb2JqZWN0ID0gYXJndW1lbnRzWyBpIF0sXFxuXFx0XFx0XFx0XFx0XFx0dXVpZCA9IG9iamVjdC51dWlkLFxcblxcdFxcdFxcdFxcdFxcdGluZGV4ID0gaW5kaWNlc0J5VVVJRFsgdXVpZCBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggaW5kZXggIT09IHVuZGVmaW5lZCAmJiBpbmRleCA+PSBuQ2FjaGVkT2JqZWN0cyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBtb3ZlIGV4aXN0aW5nIG9iamVjdCBpbnRvIHRoZSBDQUNIRUQgcmVnaW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGxhc3RDYWNoZWRJbmRleCA9IG5DYWNoZWRPYmplY3RzICsrLFxcblxcdFxcdFxcdFxcdFxcdFxcdGZpcnN0QWN0aXZlT2JqZWN0ID0gb2JqZWN0c1sgbGFzdENhY2hlZEluZGV4IF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aW5kaWNlc0J5VVVJRFsgZmlyc3RBY3RpdmVPYmplY3QudXVpZCBdID0gaW5kZXg7XFxuXFx0XFx0XFx0XFx0XFx0b2JqZWN0c1sgaW5kZXggXSA9IGZpcnN0QWN0aXZlT2JqZWN0O1xcblxcblxcdFxcdFxcdFxcdFxcdGluZGljZXNCeVVVSURbIHV1aWQgXSA9IGxhc3RDYWNoZWRJbmRleDtcXG5cXHRcXHRcXHRcXHRcXHRvYmplY3RzWyBsYXN0Q2FjaGVkSW5kZXggXSA9IG9iamVjdDtcXG5cXG5cXHRcXHRcXHRcXHRcXHQvLyBhY2NvdW50aW5nIGlzIGRvbmUsIG5vdyBkbyB0aGUgc2FtZSBmb3IgYWxsIGJpbmRpbmdzXFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwLCBtID0gbkJpbmRpbmdzOyBqICE9PSBtOyArKyBqICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBiaW5kaW5nc0ZvclBhdGggPSBiaW5kaW5nc1sgaiBdLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGZpcnN0QWN0aXZlID0gYmluZGluZ3NGb3JQYXRoWyBsYXN0Q2FjaGVkSW5kZXggXSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRiaW5kaW5nID0gYmluZGluZ3NGb3JQYXRoWyBpbmRleCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJpbmRpbmdzRm9yUGF0aFsgaW5kZXggXSA9IGZpcnN0QWN0aXZlO1xcblxcdFxcdFxcdFxcdFxcdFxcdGJpbmRpbmdzRm9yUGF0aFsgbGFzdENhY2hlZEluZGV4IF0gPSBiaW5kaW5nO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSAvLyBmb3IgYXJndW1lbnRzXFxuXFxuXFx0XFx0XFx0dGhpcy5uQ2FjaGVkT2JqZWN0c18gPSBuQ2FjaGVkT2JqZWN0cztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIHJlbW92ZSAmIGZvcmdldFxcblxcdFxcdHVuY2FjaGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgb2JqZWN0cyA9IHRoaXMuX29iamVjdHMsXFxuXFx0XFx0XFx0XFx0bk9iamVjdHMgPSBvYmplY3RzLmxlbmd0aCxcXG5cXHRcXHRcXHRcXHRuQ2FjaGVkT2JqZWN0cyA9IHRoaXMubkNhY2hlZE9iamVjdHNfLFxcblxcdFxcdFxcdFxcdGluZGljZXNCeVVVSUQgPSB0aGlzLl9pbmRpY2VzQnlVVUlELFxcblxcdFxcdFxcdFxcdGJpbmRpbmdzID0gdGhpcy5fYmluZGluZ3MsXFxuXFx0XFx0XFx0XFx0bkJpbmRpbmdzID0gYmluZGluZ3MubGVuZ3RoO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG9iamVjdCA9IGFyZ3VtZW50c1sgaSBdLFxcblxcdFxcdFxcdFxcdFxcdHV1aWQgPSBvYmplY3QudXVpZCxcXG5cXHRcXHRcXHRcXHRcXHRpbmRleCA9IGluZGljZXNCeVVVSURbIHV1aWQgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGluZGV4ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0ZGVsZXRlIGluZGljZXNCeVVVSURbIHV1aWQgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGluZGV4IDwgbkNhY2hlZE9iamVjdHMgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gb2JqZWN0IGlzIGNhY2hlZCwgc2hyaW5rIHRoZSBDQUNIRUQgcmVnaW9uXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIGZpcnN0QWN0aXZlSW5kZXggPSAtLSBuQ2FjaGVkT2JqZWN0cyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRsYXN0Q2FjaGVkT2JqZWN0ID0gb2JqZWN0c1sgZmlyc3RBY3RpdmVJbmRleCBdLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGxhc3RJbmRleCA9IC0tIG5PYmplY3RzLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGxhc3RPYmplY3QgPSBvYmplY3RzWyBsYXN0SW5kZXggXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBsYXN0IGNhY2hlZCBvYmplY3QgdGFrZXMgdGhpcyBvYmplY3QncyBwbGFjZVxcblxcdFxcdFxcdFxcdFxcdFxcdGluZGljZXNCeVVVSURbIGxhc3RDYWNoZWRPYmplY3QudXVpZCBdID0gaW5kZXg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0c1sgaW5kZXggXSA9IGxhc3RDYWNoZWRPYmplY3Q7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gbGFzdCBvYmplY3QgZ29lcyB0byB0aGUgYWN0aXZhdGVkIHNsb3QgYW5kIHBvcFxcblxcdFxcdFxcdFxcdFxcdFxcdGluZGljZXNCeVVVSURbIGxhc3RPYmplY3QudXVpZCBdID0gZmlyc3RBY3RpdmVJbmRleDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRvYmplY3RzWyBmaXJzdEFjdGl2ZUluZGV4IF0gPSBsYXN0T2JqZWN0O1xcblxcdFxcdFxcdFxcdFxcdFxcdG9iamVjdHMucG9wKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gYWNjb3VudGluZyBpcyBkb25lLCBub3cgZG8gdGhlIHNhbWUgZm9yIGFsbCBiaW5kaW5nc1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMCwgbSA9IG5CaW5kaW5nczsgaiAhPT0gbTsgKysgaiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgYmluZGluZ3NGb3JQYXRoID0gYmluZGluZ3NbIGogXSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRsYXN0Q2FjaGVkID0gYmluZGluZ3NGb3JQYXRoWyBmaXJzdEFjdGl2ZUluZGV4IF0sXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0bGFzdCA9IGJpbmRpbmdzRm9yUGF0aFsgbGFzdEluZGV4IF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YmluZGluZ3NGb3JQYXRoWyBpbmRleCBdID0gbGFzdENhY2hlZDtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRiaW5kaW5nc0ZvclBhdGhbIGZpcnN0QWN0aXZlSW5kZXggXSA9IGxhc3Q7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YmluZGluZ3NGb3JQYXRoLnBvcCgpO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdC8vIG9iamVjdCBpcyBhY3RpdmUsIGp1c3Qgc3dhcCB3aXRoIHRoZSBsYXN0IGFuZCBwb3BcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgbGFzdEluZGV4ID0gLS0gbk9iamVjdHMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0bGFzdE9iamVjdCA9IG9iamVjdHNbIGxhc3RJbmRleCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGluZGljZXNCeVVVSURbIGxhc3RPYmplY3QudXVpZCBdID0gaW5kZXg7XFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0c1sgaW5kZXggXSA9IGxhc3RPYmplY3Q7XFxuXFx0XFx0XFx0XFx0XFx0XFx0b2JqZWN0cy5wb3AoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBhY2NvdW50aW5nIGlzIGRvbmUsIG5vdyBkbyB0aGUgc2FtZSBmb3IgYWxsIGJpbmRpbmdzXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwLCBtID0gbkJpbmRpbmdzOyBqICE9PSBtOyArKyBqICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBiaW5kaW5nc0ZvclBhdGggPSBiaW5kaW5nc1sgaiBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGJpbmRpbmdzRm9yUGF0aFsgaW5kZXggXSA9IGJpbmRpbmdzRm9yUGF0aFsgbGFzdEluZGV4IF07XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0YmluZGluZ3NGb3JQYXRoLnBvcCgpO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR9IC8vIGNhY2hlZCBvciBhY3RpdmVcXG5cXG5cXHRcXHRcXHRcXHR9IC8vIGlmIG9iamVjdCBpcyBrbm93blxcblxcblxcdFxcdFxcdH0gLy8gZm9yIGFyZ3VtZW50c1xcblxcblxcdFxcdFxcdHRoaXMubkNhY2hlZE9iamVjdHNfID0gbkNhY2hlZE9iamVjdHM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBJbnRlcm5hbCBpbnRlcmZhY2UgdXNlZCBieSBiZWZyaWVuZGVkIFByb3BlcnR5QmluZGluZy5Db21wb3NpdGU6XFxuXFxuXFx0XFx0c3Vic2NyaWJlXzogZnVuY3Rpb24gKCBwYXRoLCBwYXJzZWRQYXRoICkge1xcblxcblxcdFxcdFxcdC8vIHJldHVybnMgYW4gYXJyYXkgb2YgYmluZGluZ3MgZm9yIHRoZSBnaXZlbiBwYXRoIHRoYXQgaXMgY2hhbmdlZFxcblxcdFxcdFxcdC8vIGFjY29yZGluZyB0byB0aGUgY29udGFpbmVkIG9iamVjdHMgaW4gdGhlIGdyb3VwXFxuXFxuXFx0XFx0XFx0dmFyIGluZGljZXNCeVBhdGggPSB0aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGgsXFxuXFx0XFx0XFx0XFx0aW5kZXggPSBpbmRpY2VzQnlQYXRoWyBwYXRoIF0sXFxuXFx0XFx0XFx0XFx0YmluZGluZ3MgPSB0aGlzLl9iaW5kaW5ncztcXG5cXG5cXHRcXHRcXHRpZiAoIGluZGV4ICE9PSB1bmRlZmluZWQgKSByZXR1cm4gYmluZGluZ3NbIGluZGV4IF07XFxuXFxuXFx0XFx0XFx0dmFyIHBhdGhzID0gdGhpcy5fcGF0aHMsXFxuXFx0XFx0XFx0XFx0cGFyc2VkUGF0aHMgPSB0aGlzLl9wYXJzZWRQYXRocyxcXG5cXHRcXHRcXHRcXHRvYmplY3RzID0gdGhpcy5fb2JqZWN0cyxcXG5cXHRcXHRcXHRcXHRuT2JqZWN0cyA9IG9iamVjdHMubGVuZ3RoLFxcblxcdFxcdFxcdFxcdG5DYWNoZWRPYmplY3RzID0gdGhpcy5uQ2FjaGVkT2JqZWN0c18sXFxuXFx0XFx0XFx0XFx0YmluZGluZ3NGb3JQYXRoID0gbmV3IEFycmF5KCBuT2JqZWN0cyApO1xcblxcblxcdFxcdFxcdGluZGV4ID0gYmluZGluZ3MubGVuZ3RoO1xcblxcblxcdFxcdFxcdGluZGljZXNCeVBhdGhbIHBhdGggXSA9IGluZGV4O1xcblxcblxcdFxcdFxcdHBhdGhzLnB1c2goIHBhdGggKTtcXG5cXHRcXHRcXHRwYXJzZWRQYXRocy5wdXNoKCBwYXJzZWRQYXRoICk7XFxuXFx0XFx0XFx0YmluZGluZ3MucHVzaCggYmluZGluZ3NGb3JQYXRoICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSBuQ2FjaGVkT2JqZWN0cywgbiA9IG9iamVjdHMubGVuZ3RoOyBpICE9PSBuOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBvYmplY3QgPSBvYmplY3RzWyBpIF07XFxuXFx0XFx0XFx0XFx0YmluZGluZ3NGb3JQYXRoWyBpIF0gPSBuZXcgUHJvcGVydHlCaW5kaW5nKCBvYmplY3QsIHBhdGgsIHBhcnNlZFBhdGggKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGJpbmRpbmdzRm9yUGF0aDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHVuc3Vic2NyaWJlXzogZnVuY3Rpb24gKCBwYXRoICkge1xcblxcblxcdFxcdFxcdC8vIHRlbGxzIHRoZSBncm91cCB0byBmb3JnZXQgYWJvdXQgYSBwcm9wZXJ0eSBwYXRoIGFuZCBubyBsb25nZXJcXG5cXHRcXHRcXHQvLyB1cGRhdGUgdGhlIGFycmF5IHByZXZpb3VzbHkgb2J0YWluZWQgd2l0aCAnc3Vic2NyaWJlXydcXG5cXG5cXHRcXHRcXHR2YXIgaW5kaWNlc0J5UGF0aCA9IHRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxcXG5cXHRcXHRcXHRcXHRpbmRleCA9IGluZGljZXNCeVBhdGhbIHBhdGggXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGluZGV4ICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHBhdGhzID0gdGhpcy5fcGF0aHMsXFxuXFx0XFx0XFx0XFx0XFx0cGFyc2VkUGF0aHMgPSB0aGlzLl9wYXJzZWRQYXRocyxcXG5cXHRcXHRcXHRcXHRcXHRiaW5kaW5ncyA9IHRoaXMuX2JpbmRpbmdzLFxcblxcdFxcdFxcdFxcdFxcdGxhc3RCaW5kaW5nc0luZGV4ID0gYmluZGluZ3MubGVuZ3RoIC0gMSxcXG5cXHRcXHRcXHRcXHRcXHRsYXN0QmluZGluZ3MgPSBiaW5kaW5nc1sgbGFzdEJpbmRpbmdzSW5kZXggXSxcXG5cXHRcXHRcXHRcXHRcXHRsYXN0QmluZGluZ3NQYXRoID0gcGF0aFsgbGFzdEJpbmRpbmdzSW5kZXggXTtcXG5cXG5cXHRcXHRcXHRcXHRpbmRpY2VzQnlQYXRoWyBsYXN0QmluZGluZ3NQYXRoIF0gPSBpbmRleDtcXG5cXG5cXHRcXHRcXHRcXHRiaW5kaW5nc1sgaW5kZXggXSA9IGxhc3RCaW5kaW5ncztcXG5cXHRcXHRcXHRcXHRiaW5kaW5ncy5wb3AoKTtcXG5cXG5cXHRcXHRcXHRcXHRwYXJzZWRQYXRoc1sgaW5kZXggXSA9IHBhcnNlZFBhdGhzWyBsYXN0QmluZGluZ3NJbmRleCBdO1xcblxcdFxcdFxcdFxcdHBhcnNlZFBhdGhzLnBvcCgpO1xcblxcblxcdFxcdFxcdFxcdHBhdGhzWyBpbmRleCBdID0gcGF0aHNbIGxhc3RCaW5kaW5nc0luZGV4IF07XFxuXFx0XFx0XFx0XFx0cGF0aHMucG9wKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICpcXG5cXHQgKiBBY3Rpb24gcHJvdmlkZWQgYnkgQW5pbWF0aW9uTWl4ZXIgZm9yIHNjaGVkdWxpbmcgY2xpcCBwbGF5YmFjayBvbiBzcGVjaWZpY1xcblxcdCAqIG9iamVjdHMuXFxuXFx0ICpcXG5cXHQgKiBAYXV0aG9yIEJlbiBIb3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvL1xcblxcdCAqIEBhdXRob3IgRGF2aWQgU2Fybm8gLyBodHRwOi8vbGlnaHRoYXVzLnVzL1xcblxcdCAqIEBhdXRob3IgdHNjaHdcXG5cXHQgKlxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEFuaW1hdGlvbkFjdGlvbiggbWl4ZXIsIGNsaXAsIGxvY2FsUm9vdCApIHtcXG5cXG5cXHRcXHR0aGlzLl9taXhlciA9IG1peGVyO1xcblxcdFxcdHRoaXMuX2NsaXAgPSBjbGlwO1xcblxcdFxcdHRoaXMuX2xvY2FsUm9vdCA9IGxvY2FsUm9vdCB8fCBudWxsO1xcblxcblxcdFxcdHZhciB0cmFja3MgPSBjbGlwLnRyYWNrcyxcXG5cXHRcXHRcXHRuVHJhY2tzID0gdHJhY2tzLmxlbmd0aCxcXG5cXHRcXHRcXHRpbnRlcnBvbGFudHMgPSBuZXcgQXJyYXkoIG5UcmFja3MgKTtcXG5cXG5cXHRcXHR2YXIgaW50ZXJwb2xhbnRTZXR0aW5ncyA9IHtcXG5cXHRcXHRcXHRlbmRpbmdTdGFydDogWmVyb0N1cnZhdHVyZUVuZGluZyxcXG5cXHRcXHRcXHRlbmRpbmdFbmQ6IFplcm9DdXJ2YXR1cmVFbmRpbmdcXG5cXHRcXHR9O1xcblxcblxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gblRyYWNrczsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW50ZXJwb2xhbnQgPSB0cmFja3NbIGkgXS5jcmVhdGVJbnRlcnBvbGFudCggbnVsbCApO1xcblxcdFxcdFxcdGludGVycG9sYW50c1sgaSBdID0gaW50ZXJwb2xhbnQ7XFxuXFx0XFx0XFx0aW50ZXJwb2xhbnQuc2V0dGluZ3MgPSBpbnRlcnBvbGFudFNldHRpbmdzO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzID0gaW50ZXJwb2xhbnRTZXR0aW5ncztcXG5cXG5cXHRcXHR0aGlzLl9pbnRlcnBvbGFudHMgPSBpbnRlcnBvbGFudHM7XFx0Ly8gYm91bmQgYnkgdGhlIG1peGVyXFxuXFxuXFx0XFx0Ly8gaW5zaWRlOiBQcm9wZXJ0eU1peGVyIChtYW5hZ2VkIGJ5IHRoZSBtaXhlcilcXG5cXHRcXHR0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzID0gbmV3IEFycmF5KCBuVHJhY2tzICk7XFxuXFxuXFx0XFx0dGhpcy5fY2FjaGVJbmRleCA9IG51bGw7XFx0XFx0XFx0Ly8gZm9yIHRoZSBtZW1vcnkgbWFuYWdlclxcblxcdFxcdHRoaXMuX2J5Q2xpcENhY2hlSW5kZXggPSBudWxsO1xcdFxcdC8vIGZvciB0aGUgbWVtb3J5IG1hbmFnZXJcXG5cXG5cXHRcXHR0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudCA9IG51bGw7XFxuXFx0XFx0dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQgPSBudWxsO1xcblxcblxcdFxcdHRoaXMubG9vcCA9IExvb3BSZXBlYXQ7XFxuXFx0XFx0dGhpcy5fbG9vcENvdW50ID0gLSAxO1xcblxcblxcdFxcdC8vIGdsb2JhbCBtaXhlciB0aW1lIHdoZW4gdGhlIGFjdGlvbiBpcyB0byBiZSBzdGFydGVkXFxuXFx0XFx0Ly8gaXQncyBzZXQgYmFjayB0byAnbnVsbCcgdXBvbiBzdGFydCBvZiB0aGUgYWN0aW9uXFxuXFx0XFx0dGhpcy5fc3RhcnRUaW1lID0gbnVsbDtcXG5cXG5cXHRcXHQvLyBzY2FsZWQgbG9jYWwgdGltZSBvZiB0aGUgYWN0aW9uXFxuXFx0XFx0Ly8gZ2V0cyBjbGFtcGVkIG9yIHdyYXBwZWQgdG8gMC4uY2xpcC5kdXJhdGlvbiBhY2NvcmRpbmcgdG8gbG9vcFxcblxcdFxcdHRoaXMudGltZSA9IDA7XFxuXFxuXFx0XFx0dGhpcy50aW1lU2NhbGUgPSAxO1xcblxcdFxcdHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZSA9IDE7XFxuXFxuXFx0XFx0dGhpcy53ZWlnaHQgPSAxO1xcblxcdFxcdHRoaXMuX2VmZmVjdGl2ZVdlaWdodCA9IDE7XFxuXFxuXFx0XFx0dGhpcy5yZXBldGl0aW9ucyA9IEluZmluaXR5OyBcXHRcXHQvLyBuby4gb2YgcmVwZXRpdGlvbnMgd2hlbiBsb29waW5nXFxuXFxuXFx0XFx0dGhpcy5wYXVzZWQgPSBmYWxzZTtcXHRcXHRcXHRcXHQvLyB0cnVlIC0+IHplcm8gZWZmZWN0aXZlIHRpbWUgc2NhbGVcXG5cXHRcXHR0aGlzLmVuYWJsZWQgPSB0cnVlO1xcdFxcdFxcdFxcdC8vIGZhbHNlIC0+IHplcm8gZWZmZWN0aXZlIHdlaWdodFxcblxcblxcdFxcdHRoaXMuY2xhbXBXaGVuRmluaXNoZWQgXFx0PSBmYWxzZTtcXHQvLyBrZWVwIGZlZWRpbmcgdGhlIGxhc3QgZnJhbWU/XFxuXFxuXFx0XFx0dGhpcy56ZXJvU2xvcGVBdFN0YXJ0IFxcdD0gdHJ1ZTtcXHRcXHQvLyBmb3Igc21vb3RoIGludGVycG9sYXRpb24gdy9vIHNlcGFyYXRlXFxuXFx0XFx0dGhpcy56ZXJvU2xvcGVBdEVuZFxcdFxcdD0gdHJ1ZTtcXHRcXHQvLyBjbGlwcyBmb3Igc3RhcnQsIGxvb3AgYW5kIGVuZFxcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBBbmltYXRpb25BY3Rpb24ucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Ly8gU3RhdGUgJiBTY2hlZHVsaW5nXFxuXFxuXFx0XFx0cGxheTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuX21peGVyLl9hY3RpdmF0ZUFjdGlvbiggdGhpcyApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3RvcDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKCB0aGlzICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMucmVzZXQoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHJlc2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5wYXVzZWQgPSBmYWxzZTtcXG5cXHRcXHRcXHR0aGlzLmVuYWJsZWQgPSB0cnVlO1xcblxcblxcdFxcdFxcdHRoaXMudGltZSA9IDA7XFx0XFx0XFx0Ly8gcmVzdGFydCBjbGlwXFxuXFx0XFx0XFx0dGhpcy5fbG9vcENvdW50ID0gLSAxO1xcdC8vIGZvcmdldCBwcmV2aW91cyBsb29wc1xcblxcdFxcdFxcdHRoaXMuX3N0YXJ0VGltZSA9IG51bGw7XFx0Ly8gZm9yZ2V0IHNjaGVkdWxpbmdcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zdG9wRmFkaW5nKCkuc3RvcFdhcnBpbmcoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGlzUnVubmluZzogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmVuYWJsZWQgJiYgISB0aGlzLnBhdXNlZCAmJiB0aGlzLnRpbWVTY2FsZSAhPT0gMCAmJlxcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3N0YXJ0VGltZSA9PT0gbnVsbCAmJiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24oIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIHJldHVybiB0cnVlIHdoZW4gcGxheSBoYXMgYmVlbiBjYWxsZWRcXG5cXHRcXHRpc1NjaGVkdWxlZDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24oIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHN0YXJ0QXQ6IGZ1bmN0aW9uICggdGltZSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLl9zdGFydFRpbWUgPSB0aW1lO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0TG9vcDogZnVuY3Rpb24gKCBtb2RlLCByZXBldGl0aW9ucyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmxvb3AgPSBtb2RlO1xcblxcdFxcdFxcdHRoaXMucmVwZXRpdGlvbnMgPSByZXBldGl0aW9ucztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIFdlaWdodFxcblxcblxcdFxcdC8vIHNldCB0aGUgd2VpZ2h0IHN0b3BwaW5nIGFueSBzY2hlZHVsZWQgZmFkaW5nXFxuXFx0XFx0Ly8gYWx0aG91Z2ggLmVuYWJsZWQgPSBmYWxzZSB5aWVsZHMgYW4gZWZmZWN0aXZlIHdlaWdodCBvZiB6ZXJvLCB0aGlzXFxuXFx0XFx0Ly8gbWV0aG9kIGRvZXMgKm5vdCogY2hhbmdlIC5lbmFibGVkLCBiZWNhdXNlIGl0IHdvdWxkIGJlIGNvbmZ1c2luZ1xcblxcdFxcdHNldEVmZmVjdGl2ZVdlaWdodDogZnVuY3Rpb24gKCB3ZWlnaHQgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy53ZWlnaHQgPSB3ZWlnaHQ7XFxuXFxuXFx0XFx0XFx0Ly8gbm90ZTogc2FtZSBsb2dpYyBhcyB3aGVuIHVwZGF0ZWQgYXQgcnVudGltZVxcblxcdFxcdFxcdHRoaXMuX2VmZmVjdGl2ZVdlaWdodCA9IHRoaXMuZW5hYmxlZCA/IHdlaWdodCA6IDA7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuc3RvcEZhZGluZygpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gcmV0dXJuIHRoZSB3ZWlnaHQgY29uc2lkZXJpbmcgZmFkaW5nIGFuZCAuZW5hYmxlZFxcblxcdFxcdGdldEVmZmVjdGl2ZVdlaWdodDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHQ7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRmYWRlSW46IGZ1bmN0aW9uICggZHVyYXRpb24gKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKCBkdXJhdGlvbiwgMCwgMSApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZmFkZU91dDogZnVuY3Rpb24gKCBkdXJhdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcoIGR1cmF0aW9uLCAxLCAwICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjcm9zc0ZhZGVGcm9tOiBmdW5jdGlvbiAoIGZhZGVPdXRBY3Rpb24sIGR1cmF0aW9uLCB3YXJwICkge1xcblxcblxcdFxcdFxcdGZhZGVPdXRBY3Rpb24uZmFkZU91dCggZHVyYXRpb24gKTtcXG5cXHRcXHRcXHR0aGlzLmZhZGVJbiggZHVyYXRpb24gKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHdhcnAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGZhZGVJbkR1cmF0aW9uID0gdGhpcy5fY2xpcC5kdXJhdGlvbixcXG5cXHRcXHRcXHRcXHRcXHRmYWRlT3V0RHVyYXRpb24gPSBmYWRlT3V0QWN0aW9uLl9jbGlwLmR1cmF0aW9uLFxcblxcblxcdFxcdFxcdFxcdFxcdHN0YXJ0RW5kUmF0aW8gPSBmYWRlT3V0RHVyYXRpb24gLyBmYWRlSW5EdXJhdGlvbixcXG5cXHRcXHRcXHRcXHRcXHRlbmRTdGFydFJhdGlvID0gZmFkZUluRHVyYXRpb24gLyBmYWRlT3V0RHVyYXRpb247XFxuXFxuXFx0XFx0XFx0XFx0ZmFkZU91dEFjdGlvbi53YXJwKCAxLjAsIHN0YXJ0RW5kUmF0aW8sIGR1cmF0aW9uICk7XFxuXFx0XFx0XFx0XFx0dGhpcy53YXJwKCBlbmRTdGFydFJhdGlvLCAxLjAsIGR1cmF0aW9uICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y3Jvc3NGYWRlVG86IGZ1bmN0aW9uICggZmFkZUluQWN0aW9uLCBkdXJhdGlvbiwgd2FycCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gZmFkZUluQWN0aW9uLmNyb3NzRmFkZUZyb20oIHRoaXMsIGR1cmF0aW9uLCB3YXJwICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzdG9wRmFkaW5nOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHdlaWdodEludGVycG9sYW50ID0gdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7XFxuXFxuXFx0XFx0XFx0aWYgKCB3ZWlnaHRJbnRlcnBvbGFudCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLl93ZWlnaHRJbnRlcnBvbGFudCA9IG51bGw7XFxuXFx0XFx0XFx0XFx0dGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KCB3ZWlnaHRJbnRlcnBvbGFudCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIFRpbWUgU2NhbGUgQ29udHJvbFxcblxcblxcdFxcdC8vIHNldCB0aGUgdGltZSBzY2FsZSBzdG9wcGluZyBhbnkgc2NoZWR1bGVkIHdhcnBpbmdcXG5cXHRcXHQvLyBhbHRob3VnaCAucGF1c2VkID0gdHJ1ZSB5aWVsZHMgYW4gZWZmZWN0aXZlIHRpbWUgc2NhbGUgb2YgemVybywgdGhpc1xcblxcdFxcdC8vIG1ldGhvZCBkb2VzICpub3QqIGNoYW5nZSAucGF1c2VkLCBiZWNhdXNlIGl0IHdvdWxkIGJlIGNvbmZ1c2luZ1xcblxcdFxcdHNldEVmZmVjdGl2ZVRpbWVTY2FsZTogZnVuY3Rpb24gKCB0aW1lU2NhbGUgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy50aW1lU2NhbGUgPSB0aW1lU2NhbGU7XFxuXFx0XFx0XFx0dGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlID0gdGhpcy5wYXVzZWQgPyAwIDogdGltZVNjYWxlO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLnN0b3BXYXJwaW5nKCk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyByZXR1cm4gdGhlIHRpbWUgc2NhbGUgY29uc2lkZXJpbmcgd2FycGluZyBhbmQgLnBhdXNlZFxcblxcdFxcdGdldEVmZmVjdGl2ZVRpbWVTY2FsZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXREdXJhdGlvbjogZnVuY3Rpb24gKCBkdXJhdGlvbiApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnRpbWVTY2FsZSA9IHRoaXMuX2NsaXAuZHVyYXRpb24gLyBkdXJhdGlvbjtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zdG9wV2FycGluZygpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3luY1dpdGg6IGZ1bmN0aW9uICggYWN0aW9uICkge1xcblxcblxcdFxcdFxcdHRoaXMudGltZSA9IGFjdGlvbi50aW1lO1xcblxcdFxcdFxcdHRoaXMudGltZVNjYWxlID0gYWN0aW9uLnRpbWVTY2FsZTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zdG9wV2FycGluZygpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0aGFsdDogZnVuY3Rpb24gKCBkdXJhdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy53YXJwKCB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGUsIDAsIGR1cmF0aW9uICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHR3YXJwOiBmdW5jdGlvbiAoIHN0YXJ0VGltZVNjYWxlLCBlbmRUaW1lU2NhbGUsIGR1cmF0aW9uICkge1xcblxcblxcdFxcdFxcdHZhciBtaXhlciA9IHRoaXMuX21peGVyLCBub3cgPSBtaXhlci50aW1lLFxcblxcdFxcdFxcdFxcdGludGVycG9sYW50ID0gdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQsXFxuXFxuXFx0XFx0XFx0XFx0dGltZVNjYWxlID0gdGhpcy50aW1lU2NhbGU7XFxuXFxuXFx0XFx0XFx0aWYgKCBpbnRlcnBvbGFudCA9PT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRpbnRlcnBvbGFudCA9IG1peGVyLl9sZW5kQ29udHJvbEludGVycG9sYW50KCk7XFxuXFx0XFx0XFx0XFx0dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQgPSBpbnRlcnBvbGFudDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dmFyIHRpbWVzID0gaW50ZXJwb2xhbnQucGFyYW1ldGVyUG9zaXRpb25zLFxcblxcdFxcdFxcdFxcdHZhbHVlcyA9IGludGVycG9sYW50LnNhbXBsZVZhbHVlcztcXG5cXG5cXHRcXHRcXHR0aW1lc1sgMCBdID0gbm93O1xcblxcdFxcdFxcdHRpbWVzWyAxIF0gPSBub3cgKyBkdXJhdGlvbjtcXG5cXG5cXHRcXHRcXHR2YWx1ZXNbIDAgXSA9IHN0YXJ0VGltZVNjYWxlIC8gdGltZVNjYWxlO1xcblxcdFxcdFxcdHZhbHVlc1sgMSBdID0gZW5kVGltZVNjYWxlIC8gdGltZVNjYWxlO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3RvcFdhcnBpbmc6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdGltZVNjYWxlSW50ZXJwb2xhbnQgPSB0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtcXG5cXG5cXHRcXHRcXHRpZiAoIHRpbWVTY2FsZUludGVycG9sYW50ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50ID0gbnVsbDtcXG5cXHRcXHRcXHRcXHR0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQoIHRpbWVTY2FsZUludGVycG9sYW50ICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gT2JqZWN0IEFjY2Vzc29yc1xcblxcblxcdFxcdGdldE1peGVyOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuX21peGVyO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0Q2xpcDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLl9jbGlwO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0Um9vdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLl9sb2NhbFJvb3QgfHwgdGhpcy5fbWl4ZXIuX3Jvb3Q7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBJbnRlcm5hXFxuXFxuXFx0XFx0X3VwZGF0ZTogZnVuY3Rpb24gKCB0aW1lLCBkZWx0YVRpbWUsIHRpbWVEaXJlY3Rpb24sIGFjY3VJbmRleCApIHtcXG5cXG5cXHRcXHRcXHQvLyBjYWxsZWQgYnkgdGhlIG1peGVyXFxuXFxuXFx0XFx0XFx0aWYgKCAhIHRoaXMuZW5hYmxlZCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBjYWxsIC5fdXBkYXRlV2VpZ2h0KCkgdG8gdXBkYXRlIC5fZWZmZWN0aXZlV2VpZ2h0XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5fdXBkYXRlV2VpZ2h0KCB0aW1lICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR2YXIgc3RhcnRUaW1lID0gdGhpcy5fc3RhcnRUaW1lO1xcblxcblxcdFxcdFxcdGlmICggc3RhcnRUaW1lICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdC8vIGNoZWNrIGZvciBzY2hlZHVsZWQgc3RhcnQgb2YgYWN0aW9uXFxuXFxuXFx0XFx0XFx0XFx0dmFyIHRpbWVSdW5uaW5nID0gKCB0aW1lIC0gc3RhcnRUaW1lICkgKiB0aW1lRGlyZWN0aW9uO1xcblxcdFxcdFxcdFxcdGlmICggdGltZVJ1bm5pbmcgPCAwIHx8IHRpbWVEaXJlY3Rpb24gPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuOyAvLyB5ZXQgdG8gY29tZSAvIGRvbid0IGRlY2lkZSB3aGVuIGRlbHRhID0gMFxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyBzdGFydFxcblxcblxcdFxcdFxcdFxcdHRoaXMuX3N0YXJ0VGltZSA9IG51bGw7IC8vIHVuc2NoZWR1bGVcXG5cXHRcXHRcXHRcXHRkZWx0YVRpbWUgPSB0aW1lRGlyZWN0aW9uICogdGltZVJ1bm5pbmc7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdC8vIGFwcGx5IHRpbWUgc2NhbGUgYW5kIGFkdmFuY2UgdGltZVxcblxcblxcdFxcdFxcdGRlbHRhVGltZSAqPSB0aGlzLl91cGRhdGVUaW1lU2NhbGUoIHRpbWUgKTtcXG5cXHRcXHRcXHR2YXIgY2xpcFRpbWUgPSB0aGlzLl91cGRhdGVUaW1lKCBkZWx0YVRpbWUgKTtcXG5cXG5cXHRcXHRcXHQvLyBub3RlOiBfdXBkYXRlVGltZSBtYXkgZGlzYWJsZSB0aGUgYWN0aW9uIHJlc3VsdGluZyBpblxcblxcdFxcdFxcdC8vIGFuIGVmZmVjdGl2ZSB3ZWlnaHQgb2YgMFxcblxcblxcdFxcdFxcdHZhciB3ZWlnaHQgPSB0aGlzLl91cGRhdGVXZWlnaHQoIHRpbWUgKTtcXG5cXG5cXHRcXHRcXHRpZiAoIHdlaWdodCA+IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGludGVycG9sYW50cyA9IHRoaXMuX2ludGVycG9sYW50cztcXG5cXHRcXHRcXHRcXHR2YXIgcHJvcGVydHlNaXhlcnMgPSB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzO1xcblxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBqID0gMCwgbSA9IGludGVycG9sYW50cy5sZW5ndGg7IGogIT09IG07ICsrIGogKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aW50ZXJwb2xhbnRzWyBqIF0uZXZhbHVhdGUoIGNsaXBUaW1lICk7XFxuXFx0XFx0XFx0XFx0XFx0cHJvcGVydHlNaXhlcnNbIGogXS5hY2N1bXVsYXRlKCBhY2N1SW5kZXgsIHdlaWdodCApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRfdXBkYXRlV2VpZ2h0OiBmdW5jdGlvbiAoIHRpbWUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHdlaWdodCA9IDA7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmVuYWJsZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0d2VpZ2h0ID0gdGhpcy53ZWlnaHQ7XFxuXFx0XFx0XFx0XFx0dmFyIGludGVycG9sYW50ID0gdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBpbnRlcnBvbGFudCAhPT0gbnVsbCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgaW50ZXJwb2xhbnRWYWx1ZSA9IGludGVycG9sYW50LmV2YWx1YXRlKCB0aW1lIClbIDAgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR3ZWlnaHQgKj0gaW50ZXJwb2xhbnRWYWx1ZTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIHRpbWUgPiBpbnRlcnBvbGFudC5wYXJhbWV0ZXJQb3NpdGlvbnNbIDEgXSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0aGlzLnN0b3BGYWRpbmcoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIGludGVycG9sYW50VmFsdWUgPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Ly8gZmFkZWQgb3V0LCBkaXNhYmxlXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5lbmFibGVkID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuX2VmZmVjdGl2ZVdlaWdodCA9IHdlaWdodDtcXG5cXHRcXHRcXHRyZXR1cm4gd2VpZ2h0O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X3VwZGF0ZVRpbWVTY2FsZTogZnVuY3Rpb24gKCB0aW1lICkge1xcblxcblxcdFxcdFxcdHZhciB0aW1lU2NhbGUgPSAwO1xcblxcblxcdFxcdFxcdGlmICggISB0aGlzLnBhdXNlZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aW1lU2NhbGUgPSB0aGlzLnRpbWVTY2FsZTtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaW50ZXJwb2xhbnQgPSB0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGludGVycG9sYW50ICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBpbnRlcnBvbGFudFZhbHVlID0gaW50ZXJwb2xhbnQuZXZhbHVhdGUoIHRpbWUgKVsgMCBdO1xcblxcblxcdFxcdFxcdFxcdFxcdHRpbWVTY2FsZSAqPSBpbnRlcnBvbGFudFZhbHVlO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggdGltZSA+IGludGVycG9sYW50LnBhcmFtZXRlclBvc2l0aW9uc1sgMSBdICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuc3RvcFdhcnBpbmcoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZiAoIHRpbWVTY2FsZSA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyBtb3Rpb24gaGFzIGhhbHRlZCwgcGF1c2VcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0aGlzLnBhdXNlZCA9IHRydWU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQvLyB3YXJwIGRvbmUgLSBhcHBseSBmaW5hbCB0aW1lIHNjYWxlXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGhpcy50aW1lU2NhbGUgPSB0aW1lU2NhbGU7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZSA9IHRpbWVTY2FsZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGltZVNjYWxlO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X3VwZGF0ZVRpbWU6IGZ1bmN0aW9uICggZGVsdGFUaW1lICkge1xcblxcblxcdFxcdFxcdHZhciB0aW1lID0gdGhpcy50aW1lICsgZGVsdGFUaW1lO1xcblxcblxcdFxcdFxcdGlmICggZGVsdGFUaW1lID09PSAwICkgcmV0dXJuIHRpbWU7XFxuXFxuXFx0XFx0XFx0dmFyIGR1cmF0aW9uID0gdGhpcy5fY2xpcC5kdXJhdGlvbixcXG5cXG5cXHRcXHRcXHRcXHRsb29wID0gdGhpcy5sb29wLFxcblxcdFxcdFxcdFxcdGxvb3BDb3VudCA9IHRoaXMuX2xvb3BDb3VudDtcXG5cXG5cXHRcXHRcXHRpZiAoIGxvb3AgPT09IExvb3BPbmNlICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggbG9vcENvdW50ID09PSAtIDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8ganVzdCBzdGFydGVkXFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5fbG9vcENvdW50ID0gMDtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl9zZXRFbmRpbmdzKCB0cnVlLCB0cnVlLCBmYWxzZSApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRoYW5kbGVfc3RvcDoge1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggdGltZSA+PSBkdXJhdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0aW1lID0gZHVyYXRpb247XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIGlmICggdGltZSA8IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGltZSA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIGJyZWFrIGhhbmRsZV9zdG9wO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggdGhpcy5jbGFtcFdoZW5GaW5pc2hlZCApIHRoaXMucGF1c2VkID0gdHJ1ZTtcXG5cXHRcXHRcXHRcXHRcXHRlbHNlIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHR0eXBlOiAnZmluaXNoZWQnLCBhY3Rpb246IHRoaXMsXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZGlyZWN0aW9uOiBkZWx0YVRpbWUgPCAwID8gLSAxIDogMVxcblxcdFxcdFxcdFxcdFxcdH0gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHsgLy8gcmVwZXRpdGl2ZSBSZXBlYXQgb3IgUGluZ1BvbmdcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcGluZ1BvbmcgPSAoIGxvb3AgPT09IExvb3BQaW5nUG9uZyApO1xcblxcblxcdFxcdFxcdFxcdGlmICggbG9vcENvdW50ID09PSAtIDEgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ly8ganVzdCBzdGFydGVkXFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCBkZWx0YVRpbWUgPj0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRsb29wQ291bnQgPSAwO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuX3NldEVuZGluZ3MoIHRydWUsIHRoaXMucmVwZXRpdGlvbnMgPT09IDAsIHBpbmdQb25nICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyB3aGVuIGxvb3BpbmcgaW4gcmV2ZXJzZSBkaXJlY3Rpb24sIHRoZSBpbml0aWFsXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gdHJhbnNpdGlvbiB0aHJvdWdoIHplcm8gY291bnRzIGFzIGEgcmVwZXRpdGlvbixcXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBzbyBsZWF2ZSBsb29wQ291bnQgYXQgLTFcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0aGlzLl9zZXRFbmRpbmdzKCB0aGlzLnJlcGV0aXRpb25zID09PSAwLCB0cnVlLCBwaW5nUG9uZyApO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCB0aW1lID49IGR1cmF0aW9uIHx8IHRpbWUgPCAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHdyYXAgYXJvdW5kXFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGxvb3BEZWx0YSA9IE1hdGguZmxvb3IoIHRpbWUgLyBkdXJhdGlvbiApOyAvLyBzaWduZWRcXG5cXHRcXHRcXHRcXHRcXHR0aW1lIC09IGR1cmF0aW9uICogbG9vcERlbHRhO1xcblxcblxcdFxcdFxcdFxcdFxcdGxvb3BDb3VudCArPSBNYXRoLmFicyggbG9vcERlbHRhICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHBlbmRpbmcgPSB0aGlzLnJlcGV0aXRpb25zIC0gbG9vcENvdW50O1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggcGVuZGluZyA8IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8gaGF2ZSB0byBzdG9wIChzd2l0Y2ggc3RhdGUsIGNsYW1wIHRpbWUsIGZpcmUgZXZlbnQpXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCB0aGlzLmNsYW1wV2hlbkZpbmlzaGVkICkgdGhpcy5wYXVzZWQgPSB0cnVlO1xcblxcdFxcdFxcdFxcdFxcdFxcdGVsc2UgdGhpcy5lbmFibGVkID0gZmFsc2U7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGltZSA9IGRlbHRhVGltZSA+IDAgPyBkdXJhdGlvbiA6IDA7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCgge1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHR5cGU6ICdmaW5pc2hlZCcsIGFjdGlvbjogdGhpcyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRkaXJlY3Rpb246IGRlbHRhVGltZSA+IDAgPyAxIDogLSAxXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSApO1xcblxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0Ly8ga2VlcCBydW5uaW5nXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBwZW5kaW5nID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC8vIGVudGVyaW5nIHRoZSBsYXN0IHJvdW5kXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGF0U3RhcnQgPSBkZWx0YVRpbWUgPCAwO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuX3NldEVuZGluZ3MoIGF0U3RhcnQsICEgYXRTdGFydCwgcGluZ1BvbmcgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuX3NldEVuZGluZ3MoIGZhbHNlLCBmYWxzZSwgcGluZ1BvbmcgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5fbG9vcENvdW50ID0gbG9vcENvdW50O1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0eXBlOiAnbG9vcCcsIGFjdGlvbjogdGhpcywgbG9vcERlbHRhOiBsb29wRGVsdGFcXG5cXHRcXHRcXHRcXHRcXHRcXHR9ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRpZiAoIHBpbmdQb25nICYmICggbG9vcENvdW50ICYgMSApID09PSAxICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIGludmVydCB0aW1lIGZvciB0aGUgXFxcInBvbmcgcm91bmRcXFwiXFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy50aW1lID0gdGltZTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gZHVyYXRpb24gLSB0aW1lO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0dGhpcy50aW1lID0gdGltZTtcXG5cXHRcXHRcXHRyZXR1cm4gdGltZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdF9zZXRFbmRpbmdzOiBmdW5jdGlvbiAoIGF0U3RhcnQsIGF0RW5kLCBwaW5nUG9uZyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgc2V0dGluZ3MgPSB0aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzO1xcblxcblxcdFxcdFxcdGlmICggcGluZ1BvbmcgKSB7XFxuXFxuXFx0XFx0XFx0XFx0c2V0dGluZ3MuZW5kaW5nU3RhcnQgXFx0PSBaZXJvU2xvcGVFbmRpbmc7XFxuXFx0XFx0XFx0XFx0c2V0dGluZ3MuZW5kaW5nRW5kXFx0XFx0PSBaZXJvU2xvcGVFbmRpbmc7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBhc3N1bWluZyBmb3IgTG9vcE9uY2UgYXRTdGFydCA9PSBhdEVuZCA9PSB0cnVlXFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBhdFN0YXJ0ICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHNldHRpbmdzLmVuZGluZ1N0YXJ0ID0gdGhpcy56ZXJvU2xvcGVBdFN0YXJ0ID8gWmVyb1Nsb3BlRW5kaW5nIDogWmVyb0N1cnZhdHVyZUVuZGluZztcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHNldHRpbmdzLmVuZGluZ1N0YXJ0ID0gV3JhcEFyb3VuZEVuZGluZztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBhdEVuZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRzZXR0aW5ncy5lbmRpbmdFbmQgPSB0aGlzLnplcm9TbG9wZUF0RW5kID8gWmVyb1Nsb3BlRW5kaW5nIDogWmVyb0N1cnZhdHVyZUVuZGluZztcXG5cXG5cXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdFxcdHNldHRpbmdzLmVuZGluZ0VuZCBcXHQgPSBXcmFwQXJvdW5kRW5kaW5nO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRfc2NoZWR1bGVGYWRpbmc6IGZ1bmN0aW9uICggZHVyYXRpb24sIHdlaWdodE5vdywgd2VpZ2h0VGhlbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgbWl4ZXIgPSB0aGlzLl9taXhlciwgbm93ID0gbWl4ZXIudGltZSxcXG5cXHRcXHRcXHRcXHRpbnRlcnBvbGFudCA9IHRoaXMuX3dlaWdodEludGVycG9sYW50O1xcblxcblxcdFxcdFxcdGlmICggaW50ZXJwb2xhbnQgPT09IG51bGwgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aW50ZXJwb2xhbnQgPSBtaXhlci5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpO1xcblxcdFxcdFxcdFxcdHRoaXMuX3dlaWdodEludGVycG9sYW50ID0gaW50ZXJwb2xhbnQ7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciB0aW1lcyA9IGludGVycG9sYW50LnBhcmFtZXRlclBvc2l0aW9ucyxcXG5cXHRcXHRcXHRcXHR2YWx1ZXMgPSBpbnRlcnBvbGFudC5zYW1wbGVWYWx1ZXM7XFxuXFxuXFx0XFx0XFx0dGltZXNbIDAgXSA9IG5vdzsgXFx0XFx0XFx0XFx0dmFsdWVzWyAwIF0gPSB3ZWlnaHROb3c7XFxuXFx0XFx0XFx0dGltZXNbIDEgXSA9IG5vdyArIGR1cmF0aW9uO1xcdHZhbHVlc1sgMSBdID0gd2VpZ2h0VGhlbjtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqXFxuXFx0ICogUGxheWVyIGZvciBBbmltYXRpb25DbGlwcy5cXG5cXHQgKlxcblxcdCAqXFxuXFx0ICogQGF1dGhvciBCZW4gSG91c3RvbiAvIGh0dHA6Ly9jbGFyYS5pby9cXG5cXHQgKiBAYXV0aG9yIERhdmlkIFNhcm5vIC8gaHR0cDovL2xpZ2h0aGF1cy51cy9cXG5cXHQgKiBAYXV0aG9yIHRzY2h3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQW5pbWF0aW9uTWl4ZXIoIHJvb3QgKSB7XFxuXFxuXFx0XFx0dGhpcy5fcm9vdCA9IHJvb3Q7XFxuXFx0XFx0dGhpcy5faW5pdE1lbW9yeU1hbmFnZXIoKTtcXG5cXHRcXHR0aGlzLl9hY2N1SW5kZXggPSAwO1xcblxcblxcdFxcdHRoaXMudGltZSA9IDA7XFxuXFxuXFx0XFx0dGhpcy50aW1lU2NhbGUgPSAxLjA7XFxuXFxuXFx0fVxcblxcblxcdEFuaW1hdGlvbk1peGVyLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUgKSwge1xcblxcblxcdFxcdGNvbnN0cnVjdG9yOiBBbmltYXRpb25NaXhlcixcXG5cXG5cXHRcXHRfYmluZEFjdGlvbjogZnVuY3Rpb24gKCBhY3Rpb24sIHByb3RvdHlwZUFjdGlvbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcm9vdCA9IGFjdGlvbi5fbG9jYWxSb290IHx8IHRoaXMuX3Jvb3QsXFxuXFx0XFx0XFx0XFx0dHJhY2tzID0gYWN0aW9uLl9jbGlwLnRyYWNrcyxcXG5cXHRcXHRcXHRcXHRuVHJhY2tzID0gdHJhY2tzLmxlbmd0aCxcXG5cXHRcXHRcXHRcXHRiaW5kaW5ncyA9IGFjdGlvbi5fcHJvcGVydHlCaW5kaW5ncyxcXG5cXHRcXHRcXHRcXHRpbnRlcnBvbGFudHMgPSBhY3Rpb24uX2ludGVycG9sYW50cyxcXG5cXHRcXHRcXHRcXHRyb290VXVpZCA9IHJvb3QudXVpZCxcXG5cXHRcXHRcXHRcXHRiaW5kaW5nc0J5Um9vdCA9IHRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxcXG5cXHRcXHRcXHRcXHRiaW5kaW5nc0J5TmFtZSA9IGJpbmRpbmdzQnlSb290WyByb290VXVpZCBdO1xcblxcblxcdFxcdFxcdGlmICggYmluZGluZ3NCeU5hbWUgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRiaW5kaW5nc0J5TmFtZSA9IHt9O1xcblxcdFxcdFxcdFxcdGJpbmRpbmdzQnlSb290WyByb290VXVpZCBdID0gYmluZGluZ3NCeU5hbWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gblRyYWNrczsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgdHJhY2sgPSB0cmFja3NbIGkgXSxcXG5cXHRcXHRcXHRcXHRcXHR0cmFja05hbWUgPSB0cmFjay5uYW1lLFxcblxcdFxcdFxcdFxcdFxcdGJpbmRpbmcgPSBiaW5kaW5nc0J5TmFtZVsgdHJhY2tOYW1lIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBiaW5kaW5nICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YmluZGluZ3NbIGkgXSA9IGJpbmRpbmc7XFxuXFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRiaW5kaW5nID0gYmluZGluZ3NbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZiAoIGJpbmRpbmcgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHQvLyBleGlzdGluZyBiaW5kaW5nLCBtYWtlIHN1cmUgdGhlIGNhY2hlIGtub3dzXFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKCBiaW5kaW5nLl9jYWNoZUluZGV4ID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdCsrIGJpbmRpbmcucmVmZXJlbmNlQ291bnQ7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKCBiaW5kaW5nLCByb290VXVpZCwgdHJhY2tOYW1lICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgcGF0aCA9IHByb3RvdHlwZUFjdGlvbiAmJiBwcm90b3R5cGVBY3Rpb24uXFxuXFx0XFx0XFx0XFx0XFx0XFx0X3Byb3BlcnR5QmluZGluZ3NbIGkgXS5iaW5kaW5nLnBhcnNlZFBhdGg7XFxuXFxuXFx0XFx0XFx0XFx0XFx0YmluZGluZyA9IG5ldyBQcm9wZXJ0eU1peGVyKFxcblxcdFxcdFxcdFxcdFxcdFxcdFByb3BlcnR5QmluZGluZy5jcmVhdGUoIHJvb3QsIHRyYWNrTmFtZSwgcGF0aCApLFxcblxcdFxcdFxcdFxcdFxcdFxcdHRyYWNrLlZhbHVlVHlwZU5hbWUsIHRyYWNrLmdldFZhbHVlU2l6ZSgpICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0KysgYmluZGluZy5yZWZlcmVuY2VDb3VudDtcXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl9hZGRJbmFjdGl2ZUJpbmRpbmcoIGJpbmRpbmcsIHJvb3RVdWlkLCB0cmFja05hbWUgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRiaW5kaW5nc1sgaSBdID0gYmluZGluZztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0aW50ZXJwb2xhbnRzWyBpIF0ucmVzdWx0QnVmZmVyID0gYmluZGluZy5idWZmZXI7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X2FjdGl2YXRlQWN0aW9uOiBmdW5jdGlvbiAoIGFjdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRpZiAoICEgdGhpcy5faXNBY3RpdmVBY3Rpb24oIGFjdGlvbiApICkge1xcblxcblxcdFxcdFxcdFxcdGlmICggYWN0aW9uLl9jYWNoZUluZGV4ID09PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdFxcdC8vIHRoaXMgYWN0aW9uIGhhcyBiZWVuIGZvcmdvdHRlbiBieSB0aGUgY2FjaGUsIGJ1dCB0aGUgdXNlclxcblxcdFxcdFxcdFxcdFxcdC8vIGFwcGVhcnMgdG8gYmUgc3RpbGwgdXNpbmcgaXQgLT4gcmViaW5kXFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJvb3RVdWlkID0gKCBhY3Rpb24uX2xvY2FsUm9vdCB8fCB0aGlzLl9yb290ICkudXVpZCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRjbGlwVXVpZCA9IGFjdGlvbi5fY2xpcC51dWlkLFxcblxcdFxcdFxcdFxcdFxcdFxcdGFjdGlvbnNGb3JDbGlwID0gdGhpcy5fYWN0aW9uc0J5Q2xpcFsgY2xpcFV1aWQgXTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl9iaW5kQWN0aW9uKCBhY3Rpb24sXFxuXFx0XFx0XFx0XFx0XFx0XFx0YWN0aW9uc0ZvckNsaXAgJiYgYWN0aW9uc0ZvckNsaXAua25vd25BY3Rpb25zWyAwIF0gKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbiggYWN0aW9uLCBjbGlwVXVpZCwgcm9vdFV1aWQgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGJpbmRpbmdzID0gYWN0aW9uLl9wcm9wZXJ0eUJpbmRpbmdzO1xcblxcblxcdFxcdFxcdFxcdC8vIGluY3JlbWVudCByZWZlcmVuY2UgY291bnRzIC8gc29ydCBvdXQgc3RhdGVcXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIG4gPSBiaW5kaW5ncy5sZW5ndGg7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGJpbmRpbmcgPSBiaW5kaW5nc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdFxcdGlmICggYmluZGluZy51c2VDb3VudCArKyA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR0aGlzLl9sZW5kQmluZGluZyggYmluZGluZyApO1xcblxcdFxcdFxcdFxcdFxcdFxcdGJpbmRpbmcuc2F2ZU9yaWdpbmFsU3RhdGUoKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMuX2xlbmRBY3Rpb24oIGFjdGlvbiApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdF9kZWFjdGl2YXRlQWN0aW9uOiBmdW5jdGlvbiAoIGFjdGlvbiApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHRoaXMuX2lzQWN0aXZlQWN0aW9uKCBhY3Rpb24gKSApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYmluZGluZ3MgPSBhY3Rpb24uX3Byb3BlcnR5QmluZGluZ3M7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZGVjcmVtZW50IHJlZmVyZW5jZSBjb3VudHMgLyBzb3J0IG91dCBzdGF0ZVxcblxcdFxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbiA9IGJpbmRpbmdzLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgYmluZGluZyA9IGJpbmRpbmdzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWYgKCAtLSBiaW5kaW5nLnVzZUNvdW50ID09PSAwICkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdGJpbmRpbmcucmVzdG9yZU9yaWdpbmFsU3RhdGUoKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHR0aGlzLl90YWtlQmFja0JpbmRpbmcoIGJpbmRpbmcgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdHRoaXMuX3Rha2VCYWNrQWN0aW9uKCBhY3Rpb24gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBNZW1vcnkgbWFuYWdlclxcblxcblxcdFxcdF9pbml0TWVtb3J5TWFuYWdlcjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHRoaXMuX2FjdGlvbnMgPSBbXTsgLy8gJ25BY3RpdmVBY3Rpb25zJyBmb2xsb3dlZCBieSBpbmFjdGl2ZSBvbmVzXFxuXFx0XFx0XFx0dGhpcy5fbkFjdGl2ZUFjdGlvbnMgPSAwO1xcblxcblxcdFxcdFxcdHRoaXMuX2FjdGlvbnNCeUNsaXAgPSB7fTtcXG5cXHRcXHRcXHQvLyBpbnNpZGU6XFxuXFx0XFx0XFx0Ly8ge1xcblxcdFxcdFxcdC8vIFxcdFxcdGtub3duQWN0aW9uczogQXJyYXk8IEFuaW1hdGlvbkFjdGlvbiA+XFx0LSB1c2VkIGFzIHByb3RvdHlwZXNcXG5cXHRcXHRcXHQvLyBcXHRcXHRhY3Rpb25CeVJvb3Q6IEFuaW1hdGlvbkFjdGlvblxcdFxcdFxcdC0gbG9va3VwXFxuXFx0XFx0XFx0Ly8gfVxcblxcblxcblxcdFxcdFxcdHRoaXMuX2JpbmRpbmdzID0gW107IC8vICduQWN0aXZlQmluZGluZ3MnIGZvbGxvd2VkIGJ5IGluYWN0aXZlIG9uZXNcXG5cXHRcXHRcXHR0aGlzLl9uQWN0aXZlQmluZGluZ3MgPSAwO1xcblxcblxcdFxcdFxcdHRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSA9IHt9OyAvLyBpbnNpZGU6IE1hcDwgbmFtZSwgUHJvcGVydHlNaXhlciA+XFxuXFxuXFxuXFx0XFx0XFx0dGhpcy5fY29udHJvbEludGVycG9sYW50cyA9IFtdOyAvLyBzYW1lIGdhbWUgYXMgYWJvdmVcXG5cXHRcXHRcXHR0aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyA9IDA7XFxuXFxuXFx0XFx0XFx0dmFyIHNjb3BlID0gdGhpcztcXG5cXG5cXHRcXHRcXHR0aGlzLnN0YXRzID0ge1xcblxcblxcdFxcdFxcdFxcdGFjdGlvbnM6IHtcXG5cXHRcXHRcXHRcXHRcXHRnZXQgdG90YWwoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHNjb3BlLl9hY3Rpb25zLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9LFxcblxcdFxcdFxcdFxcdFxcdGdldCBpblVzZSgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gc2NvcGUuX25BY3RpdmVBY3Rpb25zO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHR9LFxcblxcdFxcdFxcdFxcdGJpbmRpbmdzOiB7XFxuXFx0XFx0XFx0XFx0XFx0Z2V0IHRvdGFsKCkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBzY29wZS5fYmluZGluZ3MubGVuZ3RoO1xcblxcblxcdFxcdFxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0XFx0XFx0Z2V0IGluVXNlKCkge1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBzY29wZS5fbkFjdGl2ZUJpbmRpbmdzO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHR9LFxcblxcdFxcdFxcdFxcdGNvbnRyb2xJbnRlcnBvbGFudHM6IHtcXG5cXHRcXHRcXHRcXHRcXHRnZXQgdG90YWwoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHNjb3BlLl9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aDtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9LFxcblxcdFxcdFxcdFxcdFxcdGdldCBpblVzZSgpIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gc2NvcGUuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzO1xcblxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIE1lbW9yeSBtYW5hZ2VtZW50IGZvciBBbmltYXRpb25BY3Rpb24gb2JqZWN0c1xcblxcblxcdFxcdF9pc0FjdGl2ZUFjdGlvbjogZnVuY3Rpb24gKCBhY3Rpb24gKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGluZGV4ID0gYWN0aW9uLl9jYWNoZUluZGV4O1xcblxcdFxcdFxcdHJldHVybiBpbmRleCAhPT0gbnVsbCAmJiBpbmRleCA8IHRoaXMuX25BY3RpdmVBY3Rpb25zO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X2FkZEluYWN0aXZlQWN0aW9uOiBmdW5jdGlvbiAoIGFjdGlvbiwgY2xpcFV1aWQsIHJvb3RVdWlkICkge1xcblxcblxcdFxcdFxcdHZhciBhY3Rpb25zID0gdGhpcy5fYWN0aW9ucyxcXG5cXHRcXHRcXHRcXHRhY3Rpb25zQnlDbGlwID0gdGhpcy5fYWN0aW9uc0J5Q2xpcCxcXG5cXHRcXHRcXHRcXHRhY3Rpb25zRm9yQ2xpcCA9IGFjdGlvbnNCeUNsaXBbIGNsaXBVdWlkIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBhY3Rpb25zRm9yQ2xpcCA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGFjdGlvbnNGb3JDbGlwID0ge1xcblxcblxcdFxcdFxcdFxcdFxcdGtub3duQWN0aW9uczogWyBhY3Rpb24gXSxcXG5cXHRcXHRcXHRcXHRcXHRhY3Rpb25CeVJvb3Q6IHt9XFxuXFxuXFx0XFx0XFx0XFx0fTtcXG5cXG5cXHRcXHRcXHRcXHRhY3Rpb24uX2J5Q2xpcENhY2hlSW5kZXggPSAwO1xcblxcblxcdFxcdFxcdFxcdGFjdGlvbnNCeUNsaXBbIGNsaXBVdWlkIF0gPSBhY3Rpb25zRm9yQ2xpcDtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHZhciBrbm93bkFjdGlvbnMgPSBhY3Rpb25zRm9yQ2xpcC5rbm93bkFjdGlvbnM7XFxuXFxuXFx0XFx0XFx0XFx0YWN0aW9uLl9ieUNsaXBDYWNoZUluZGV4ID0ga25vd25BY3Rpb25zLmxlbmd0aDtcXG5cXHRcXHRcXHRcXHRrbm93bkFjdGlvbnMucHVzaCggYWN0aW9uICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGFjdGlvbi5fY2FjaGVJbmRleCA9IGFjdGlvbnMubGVuZ3RoO1xcblxcdFxcdFxcdGFjdGlvbnMucHVzaCggYWN0aW9uICk7XFxuXFxuXFx0XFx0XFx0YWN0aW9uc0ZvckNsaXAuYWN0aW9uQnlSb290WyByb290VXVpZCBdID0gYWN0aW9uO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X3JlbW92ZUluYWN0aXZlQWN0aW9uOiBmdW5jdGlvbiAoIGFjdGlvbiApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMsXFxuXFx0XFx0XFx0XFx0bGFzdEluYWN0aXZlQWN0aW9uID0gYWN0aW9uc1sgYWN0aW9ucy5sZW5ndGggLSAxIF0sXFxuXFx0XFx0XFx0XFx0Y2FjaGVJbmRleCA9IGFjdGlvbi5fY2FjaGVJbmRleDtcXG5cXG5cXHRcXHRcXHRsYXN0SW5hY3RpdmVBY3Rpb24uX2NhY2hlSW5kZXggPSBjYWNoZUluZGV4O1xcblxcdFxcdFxcdGFjdGlvbnNbIGNhY2hlSW5kZXggXSA9IGxhc3RJbmFjdGl2ZUFjdGlvbjtcXG5cXHRcXHRcXHRhY3Rpb25zLnBvcCgpO1xcblxcblxcdFxcdFxcdGFjdGlvbi5fY2FjaGVJbmRleCA9IG51bGw7XFxuXFxuXFxuXFx0XFx0XFx0dmFyIGNsaXBVdWlkID0gYWN0aW9uLl9jbGlwLnV1aWQsXFxuXFx0XFx0XFx0XFx0YWN0aW9uc0J5Q2xpcCA9IHRoaXMuX2FjdGlvbnNCeUNsaXAsXFxuXFx0XFx0XFx0XFx0YWN0aW9uc0ZvckNsaXAgPSBhY3Rpb25zQnlDbGlwWyBjbGlwVXVpZCBdLFxcblxcdFxcdFxcdFxcdGtub3duQWN0aW9uc0ZvckNsaXAgPSBhY3Rpb25zRm9yQ2xpcC5rbm93bkFjdGlvbnMsXFxuXFxuXFx0XFx0XFx0XFx0bGFzdEtub3duQWN0aW9uID1cXG5cXHRcXHRcXHRcXHRcXHRrbm93bkFjdGlvbnNGb3JDbGlwWyBrbm93bkFjdGlvbnNGb3JDbGlwLmxlbmd0aCAtIDEgXSxcXG5cXG5cXHRcXHRcXHRcXHRieUNsaXBDYWNoZUluZGV4ID0gYWN0aW9uLl9ieUNsaXBDYWNoZUluZGV4O1xcblxcblxcdFxcdFxcdGxhc3RLbm93bkFjdGlvbi5fYnlDbGlwQ2FjaGVJbmRleCA9IGJ5Q2xpcENhY2hlSW5kZXg7XFxuXFx0XFx0XFx0a25vd25BY3Rpb25zRm9yQ2xpcFsgYnlDbGlwQ2FjaGVJbmRleCBdID0gbGFzdEtub3duQWN0aW9uO1xcblxcdFxcdFxcdGtub3duQWN0aW9uc0ZvckNsaXAucG9wKCk7XFxuXFxuXFx0XFx0XFx0YWN0aW9uLl9ieUNsaXBDYWNoZUluZGV4ID0gbnVsbDtcXG5cXG5cXG5cXHRcXHRcXHR2YXIgYWN0aW9uQnlSb290ID0gYWN0aW9uc0ZvckNsaXAuYWN0aW9uQnlSb290LFxcblxcdFxcdFxcdFxcdHJvb3RVdWlkID0gKCBhY3Rpb24uX2xvY2FsUm9vdCB8fCB0aGlzLl9yb290ICkudXVpZDtcXG5cXG5cXHRcXHRcXHRkZWxldGUgYWN0aW9uQnlSb290WyByb290VXVpZCBdO1xcblxcblxcdFxcdFxcdGlmICgga25vd25BY3Rpb25zRm9yQ2xpcC5sZW5ndGggPT09IDAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0ZGVsZXRlIGFjdGlvbnNCeUNsaXBbIGNsaXBVdWlkIF07XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24oIGFjdGlvbiApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb246IGZ1bmN0aW9uICggYWN0aW9uICkge1xcblxcblxcdFxcdFxcdHZhciBiaW5kaW5ncyA9IGFjdGlvbi5fcHJvcGVydHlCaW5kaW5ncztcXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIG4gPSBiaW5kaW5ncy5sZW5ndGg7IGkgIT09IG47ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGJpbmRpbmcgPSBiaW5kaW5nc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdGlmICggLS0gYmluZGluZy5yZWZlcmVuY2VDb3VudCA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcoIGJpbmRpbmcgKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X2xlbmRBY3Rpb246IGZ1bmN0aW9uICggYWN0aW9uICkge1xcblxcblxcdFxcdFxcdC8vIFsgYWN0aXZlIGFjdGlvbnMgfCAgaW5hY3RpdmUgYWN0aW9ucyAgXVxcblxcdFxcdFxcdC8vIFsgIGFjdGl2ZSBhY3Rpb25zID58IGluYWN0aXZlIGFjdGlvbnMgXVxcblxcdFxcdFxcdC8vICAgICAgICAgICAgICAgICBzICAgICAgICBhXFxuXFx0XFx0XFx0Ly8gICAgICAgICAgICAgICAgICA8LXN3YXAtPlxcblxcdFxcdFxcdC8vICAgICAgICAgICAgICAgICBhICAgICAgICBzXFxuXFxuXFx0XFx0XFx0dmFyIGFjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLFxcblxcdFxcdFxcdFxcdHByZXZJbmRleCA9IGFjdGlvbi5fY2FjaGVJbmRleCxcXG5cXG5cXHRcXHRcXHRcXHRsYXN0QWN0aXZlSW5kZXggPSB0aGlzLl9uQWN0aXZlQWN0aW9ucyArKyxcXG5cXG5cXHRcXHRcXHRcXHRmaXJzdEluYWN0aXZlQWN0aW9uID0gYWN0aW9uc1sgbGFzdEFjdGl2ZUluZGV4IF07XFxuXFxuXFx0XFx0XFx0YWN0aW9uLl9jYWNoZUluZGV4ID0gbGFzdEFjdGl2ZUluZGV4O1xcblxcdFxcdFxcdGFjdGlvbnNbIGxhc3RBY3RpdmVJbmRleCBdID0gYWN0aW9uO1xcblxcblxcdFxcdFxcdGZpcnN0SW5hY3RpdmVBY3Rpb24uX2NhY2hlSW5kZXggPSBwcmV2SW5kZXg7XFxuXFx0XFx0XFx0YWN0aW9uc1sgcHJldkluZGV4IF0gPSBmaXJzdEluYWN0aXZlQWN0aW9uO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0X3Rha2VCYWNrQWN0aW9uOiBmdW5jdGlvbiAoIGFjdGlvbiApIHtcXG5cXG5cXHRcXHRcXHQvLyBbICBhY3RpdmUgYWN0aW9ucyAgfCBpbmFjdGl2ZSBhY3Rpb25zIF1cXG5cXHRcXHRcXHQvLyBbIGFjdGl2ZSBhY3Rpb25zIHw8IGluYWN0aXZlIGFjdGlvbnMgIF1cXG5cXHRcXHRcXHQvLyAgICAgICAgYSAgICAgICAgc1xcblxcdFxcdFxcdC8vICAgICAgICAgPC1zd2FwLT5cXG5cXHRcXHRcXHQvLyAgICAgICAgcyAgICAgICAgYVxcblxcblxcdFxcdFxcdHZhciBhY3Rpb25zID0gdGhpcy5fYWN0aW9ucyxcXG5cXHRcXHRcXHRcXHRwcmV2SW5kZXggPSBhY3Rpb24uX2NhY2hlSW5kZXgsXFxuXFxuXFx0XFx0XFx0XFx0Zmlyc3RJbmFjdGl2ZUluZGV4ID0gLS0gdGhpcy5fbkFjdGl2ZUFjdGlvbnMsXFxuXFxuXFx0XFx0XFx0XFx0bGFzdEFjdGl2ZUFjdGlvbiA9IGFjdGlvbnNbIGZpcnN0SW5hY3RpdmVJbmRleCBdO1xcblxcblxcdFxcdFxcdGFjdGlvbi5fY2FjaGVJbmRleCA9IGZpcnN0SW5hY3RpdmVJbmRleDtcXG5cXHRcXHRcXHRhY3Rpb25zWyBmaXJzdEluYWN0aXZlSW5kZXggXSA9IGFjdGlvbjtcXG5cXG5cXHRcXHRcXHRsYXN0QWN0aXZlQWN0aW9uLl9jYWNoZUluZGV4ID0gcHJldkluZGV4O1xcblxcdFxcdFxcdGFjdGlvbnNbIHByZXZJbmRleCBdID0gbGFzdEFjdGl2ZUFjdGlvbjtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIE1lbW9yeSBtYW5hZ2VtZW50IGZvciBQcm9wZXJ0eU1peGVyIG9iamVjdHNcXG5cXG5cXHRcXHRfYWRkSW5hY3RpdmVCaW5kaW5nOiBmdW5jdGlvbiAoIGJpbmRpbmcsIHJvb3RVdWlkLCB0cmFja05hbWUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGJpbmRpbmdzQnlSb290ID0gdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLFxcblxcdFxcdFxcdFxcdGJpbmRpbmdCeU5hbWUgPSBiaW5kaW5nc0J5Um9vdFsgcm9vdFV1aWQgXSxcXG5cXG5cXHRcXHRcXHRcXHRiaW5kaW5ncyA9IHRoaXMuX2JpbmRpbmdzO1xcblxcblxcdFxcdFxcdGlmICggYmluZGluZ0J5TmFtZSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGJpbmRpbmdCeU5hbWUgPSB7fTtcXG5cXHRcXHRcXHRcXHRiaW5kaW5nc0J5Um9vdFsgcm9vdFV1aWQgXSA9IGJpbmRpbmdCeU5hbWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGJpbmRpbmdCeU5hbWVbIHRyYWNrTmFtZSBdID0gYmluZGluZztcXG5cXG5cXHRcXHRcXHRiaW5kaW5nLl9jYWNoZUluZGV4ID0gYmluZGluZ3MubGVuZ3RoO1xcblxcdFxcdFxcdGJpbmRpbmdzLnB1c2goIGJpbmRpbmcgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdF9yZW1vdmVJbmFjdGl2ZUJpbmRpbmc6IGZ1bmN0aW9uICggYmluZGluZyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYmluZGluZ3MgPSB0aGlzLl9iaW5kaW5ncyxcXG5cXHRcXHRcXHRcXHRwcm9wQmluZGluZyA9IGJpbmRpbmcuYmluZGluZyxcXG5cXHRcXHRcXHRcXHRyb290VXVpZCA9IHByb3BCaW5kaW5nLnJvb3ROb2RlLnV1aWQsXFxuXFx0XFx0XFx0XFx0dHJhY2tOYW1lID0gcHJvcEJpbmRpbmcucGF0aCxcXG5cXHRcXHRcXHRcXHRiaW5kaW5nc0J5Um9vdCA9IHRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxcXG5cXHRcXHRcXHRcXHRiaW5kaW5nQnlOYW1lID0gYmluZGluZ3NCeVJvb3RbIHJvb3RVdWlkIF0sXFxuXFxuXFx0XFx0XFx0XFx0bGFzdEluYWN0aXZlQmluZGluZyA9IGJpbmRpbmdzWyBiaW5kaW5ncy5sZW5ndGggLSAxIF0sXFxuXFx0XFx0XFx0XFx0Y2FjaGVJbmRleCA9IGJpbmRpbmcuX2NhY2hlSW5kZXg7XFxuXFxuXFx0XFx0XFx0bGFzdEluYWN0aXZlQmluZGluZy5fY2FjaGVJbmRleCA9IGNhY2hlSW5kZXg7XFxuXFx0XFx0XFx0YmluZGluZ3NbIGNhY2hlSW5kZXggXSA9IGxhc3RJbmFjdGl2ZUJpbmRpbmc7XFxuXFx0XFx0XFx0YmluZGluZ3MucG9wKCk7XFxuXFxuXFx0XFx0XFx0ZGVsZXRlIGJpbmRpbmdCeU5hbWVbIHRyYWNrTmFtZSBdO1xcblxcblxcdFxcdFxcdHJlbW92ZV9lbXB0eV9tYXA6IHtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgXyBpbiBiaW5kaW5nQnlOYW1lICkgYnJlYWsgcmVtb3ZlX2VtcHR5X21hcDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xcblxcblxcdFxcdFxcdFxcdGRlbGV0ZSBiaW5kaW5nc0J5Um9vdFsgcm9vdFV1aWQgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRfbGVuZEJpbmRpbmc6IGZ1bmN0aW9uICggYmluZGluZyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYmluZGluZ3MgPSB0aGlzLl9iaW5kaW5ncyxcXG5cXHRcXHRcXHRcXHRwcmV2SW5kZXggPSBiaW5kaW5nLl9jYWNoZUluZGV4LFxcblxcblxcdFxcdFxcdFxcdGxhc3RBY3RpdmVJbmRleCA9IHRoaXMuX25BY3RpdmVCaW5kaW5ncyArKyxcXG5cXG5cXHRcXHRcXHRcXHRmaXJzdEluYWN0aXZlQmluZGluZyA9IGJpbmRpbmdzWyBsYXN0QWN0aXZlSW5kZXggXTtcXG5cXG5cXHRcXHRcXHRiaW5kaW5nLl9jYWNoZUluZGV4ID0gbGFzdEFjdGl2ZUluZGV4O1xcblxcdFxcdFxcdGJpbmRpbmdzWyBsYXN0QWN0aXZlSW5kZXggXSA9IGJpbmRpbmc7XFxuXFxuXFx0XFx0XFx0Zmlyc3RJbmFjdGl2ZUJpbmRpbmcuX2NhY2hlSW5kZXggPSBwcmV2SW5kZXg7XFxuXFx0XFx0XFx0YmluZGluZ3NbIHByZXZJbmRleCBdID0gZmlyc3RJbmFjdGl2ZUJpbmRpbmc7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRfdGFrZUJhY2tCaW5kaW5nOiBmdW5jdGlvbiAoIGJpbmRpbmcgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGJpbmRpbmdzID0gdGhpcy5fYmluZGluZ3MsXFxuXFx0XFx0XFx0XFx0cHJldkluZGV4ID0gYmluZGluZy5fY2FjaGVJbmRleCxcXG5cXG5cXHRcXHRcXHRcXHRmaXJzdEluYWN0aXZlSW5kZXggPSAtLSB0aGlzLl9uQWN0aXZlQmluZGluZ3MsXFxuXFxuXFx0XFx0XFx0XFx0bGFzdEFjdGl2ZUJpbmRpbmcgPSBiaW5kaW5nc1sgZmlyc3RJbmFjdGl2ZUluZGV4IF07XFxuXFxuXFx0XFx0XFx0YmluZGluZy5fY2FjaGVJbmRleCA9IGZpcnN0SW5hY3RpdmVJbmRleDtcXG5cXHRcXHRcXHRiaW5kaW5nc1sgZmlyc3RJbmFjdGl2ZUluZGV4IF0gPSBiaW5kaW5nO1xcblxcblxcdFxcdFxcdGxhc3RBY3RpdmVCaW5kaW5nLl9jYWNoZUluZGV4ID0gcHJldkluZGV4O1xcblxcdFxcdFxcdGJpbmRpbmdzWyBwcmV2SW5kZXggXSA9IGxhc3RBY3RpdmVCaW5kaW5nO1xcblxcblxcdFxcdH0sXFxuXFxuXFxuXFx0XFx0Ly8gTWVtb3J5IG1hbmFnZW1lbnQgb2YgSW50ZXJwb2xhbnRzIGZvciB3ZWlnaHQgYW5kIHRpbWUgc2NhbGVcXG5cXG5cXHRcXHRfbGVuZENvbnRyb2xJbnRlcnBvbGFudDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHZhciBpbnRlcnBvbGFudHMgPSB0aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzLFxcblxcdFxcdFxcdFxcdGxhc3RBY3RpdmVJbmRleCA9IHRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzICsrLFxcblxcdFxcdFxcdFxcdGludGVycG9sYW50ID0gaW50ZXJwb2xhbnRzWyBsYXN0QWN0aXZlSW5kZXggXTtcXG5cXG5cXHRcXHRcXHRpZiAoIGludGVycG9sYW50ID09PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aW50ZXJwb2xhbnQgPSBuZXcgTGluZWFySW50ZXJwb2xhbnQoXFxuXFx0XFx0XFx0XFx0XFx0bmV3IEZsb2F0MzJBcnJheSggMiApLCBuZXcgRmxvYXQzMkFycmF5KCAyICksXFxuXFx0XFx0XFx0XFx0XFx0MSwgdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciApO1xcblxcblxcdFxcdFxcdFxcdGludGVycG9sYW50Ll9fY2FjaGVJbmRleCA9IGxhc3RBY3RpdmVJbmRleDtcXG5cXHRcXHRcXHRcXHRpbnRlcnBvbGFudHNbIGxhc3RBY3RpdmVJbmRleCBdID0gaW50ZXJwb2xhbnQ7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHJldHVybiBpbnRlcnBvbGFudDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdF90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudDogZnVuY3Rpb24gKCBpbnRlcnBvbGFudCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW50ZXJwb2xhbnRzID0gdGhpcy5fY29udHJvbEludGVycG9sYW50cyxcXG5cXHRcXHRcXHRcXHRwcmV2SW5kZXggPSBpbnRlcnBvbGFudC5fX2NhY2hlSW5kZXgsXFxuXFxuXFx0XFx0XFx0XFx0Zmlyc3RJbmFjdGl2ZUluZGV4ID0gLS0gdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMsXFxuXFxuXFx0XFx0XFx0XFx0bGFzdEFjdGl2ZUludGVycG9sYW50ID0gaW50ZXJwb2xhbnRzWyBmaXJzdEluYWN0aXZlSW5kZXggXTtcXG5cXG5cXHRcXHRcXHRpbnRlcnBvbGFudC5fX2NhY2hlSW5kZXggPSBmaXJzdEluYWN0aXZlSW5kZXg7XFxuXFx0XFx0XFx0aW50ZXJwb2xhbnRzWyBmaXJzdEluYWN0aXZlSW5kZXggXSA9IGludGVycG9sYW50O1xcblxcblxcdFxcdFxcdGxhc3RBY3RpdmVJbnRlcnBvbGFudC5fX2NhY2hlSW5kZXggPSBwcmV2SW5kZXg7XFxuXFx0XFx0XFx0aW50ZXJwb2xhbnRzWyBwcmV2SW5kZXggXSA9IGxhc3RBY3RpdmVJbnRlcnBvbGFudDtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdF9jb250cm9sSW50ZXJwb2xhbnRzUmVzdWx0QnVmZmVyOiBuZXcgRmxvYXQzMkFycmF5KCAxICksXFxuXFxuXFx0XFx0Ly8gcmV0dXJuIGFuIGFjdGlvbiBmb3IgYSBjbGlwIG9wdGlvbmFsbHkgdXNpbmcgYSBjdXN0b20gcm9vdCB0YXJnZXRcXG5cXHRcXHQvLyBvYmplY3QgKHRoaXMgbWV0aG9kIGFsbG9jYXRlcyBhIGxvdCBvZiBkeW5hbWljIG1lbW9yeSBpbiBjYXNlIGFcXG5cXHRcXHQvLyBwcmV2aW91c2x5IHVua25vd24gY2xpcC9yb290IGNvbWJpbmF0aW9uIGlzIHNwZWNpZmllZClcXG5cXHRcXHRjbGlwQWN0aW9uOiBmdW5jdGlvbiAoIGNsaXAsIG9wdGlvbmFsUm9vdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcm9vdCA9IG9wdGlvbmFsUm9vdCB8fCB0aGlzLl9yb290LFxcblxcdFxcdFxcdFxcdHJvb3RVdWlkID0gcm9vdC51dWlkLFxcblxcblxcdFxcdFxcdFxcdGNsaXBPYmplY3QgPSB0eXBlb2YgY2xpcCA9PT0gJ3N0cmluZycgP1xcblxcdFxcdFxcdFxcdFxcdEFuaW1hdGlvbkNsaXAuZmluZEJ5TmFtZSggcm9vdCwgY2xpcCApIDogY2xpcCxcXG5cXG5cXHRcXHRcXHRcXHRjbGlwVXVpZCA9IGNsaXBPYmplY3QgIT09IG51bGwgPyBjbGlwT2JqZWN0LnV1aWQgOiBjbGlwLFxcblxcblxcdFxcdFxcdFxcdGFjdGlvbnNGb3JDbGlwID0gdGhpcy5fYWN0aW9uc0J5Q2xpcFsgY2xpcFV1aWQgXSxcXG5cXHRcXHRcXHRcXHRwcm90b3R5cGVBY3Rpb24gPSBudWxsO1xcblxcblxcdFxcdFxcdGlmICggYWN0aW9uc0ZvckNsaXAgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgZXhpc3RpbmdBY3Rpb24gPVxcblxcdFxcdFxcdFxcdFxcdFxcdGFjdGlvbnNGb3JDbGlwLmFjdGlvbkJ5Um9vdFsgcm9vdFV1aWQgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGV4aXN0aW5nQWN0aW9uICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIGV4aXN0aW5nQWN0aW9uO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRcXHQvLyB3ZSBrbm93IHRoZSBjbGlwLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHBhcnNlIGFsbFxcblxcdFxcdFxcdFxcdC8vIHRoZSBiaW5kaW5ncyBhZ2FpbiBidXQgY2FuIGp1c3QgY29weVxcblxcdFxcdFxcdFxcdHByb3RvdHlwZUFjdGlvbiA9IGFjdGlvbnNGb3JDbGlwLmtub3duQWN0aW9uc1sgMCBdO1xcblxcblxcdFxcdFxcdFxcdC8vIGFsc28sIHRha2UgdGhlIGNsaXAgZnJvbSB0aGUgcHJvdG90eXBlIGFjdGlvblxcblxcdFxcdFxcdFxcdGlmICggY2xpcE9iamVjdCA9PT0gbnVsbCApXFxuXFx0XFx0XFx0XFx0XFx0Y2xpcE9iamVjdCA9IHByb3RvdHlwZUFjdGlvbi5fY2xpcDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gY2xpcCBtdXN0IGJlIGtub3duIHdoZW4gc3BlY2lmaWVkIHZpYSBzdHJpbmdcXG5cXHRcXHRcXHRpZiAoIGNsaXBPYmplY3QgPT09IG51bGwgKSByZXR1cm4gbnVsbDtcXG5cXG5cXHRcXHRcXHQvLyBhbGxvY2F0ZSBhbGwgcmVzb3VyY2VzIHJlcXVpcmVkIHRvIHJ1biBpdFxcblxcdFxcdFxcdHZhciBuZXdBY3Rpb24gPSBuZXcgQW5pbWF0aW9uQWN0aW9uKCB0aGlzLCBjbGlwT2JqZWN0LCBvcHRpb25hbFJvb3QgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLl9iaW5kQWN0aW9uKCBuZXdBY3Rpb24sIHByb3RvdHlwZUFjdGlvbiApO1xcblxcblxcdFxcdFxcdC8vIGFuZCBtYWtlIHRoZSBhY3Rpb24ga25vd24gdG8gdGhlIG1lbW9yeSBtYW5hZ2VyXFxuXFx0XFx0XFx0dGhpcy5fYWRkSW5hY3RpdmVBY3Rpb24oIG5ld0FjdGlvbiwgY2xpcFV1aWQsIHJvb3RVdWlkICk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ld0FjdGlvbjtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIGdldCBhbiBleGlzdGluZyBhY3Rpb25cXG5cXHRcXHRleGlzdGluZ0FjdGlvbjogZnVuY3Rpb24gKCBjbGlwLCBvcHRpb25hbFJvb3QgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIHJvb3QgPSBvcHRpb25hbFJvb3QgfHwgdGhpcy5fcm9vdCxcXG5cXHRcXHRcXHRcXHRyb290VXVpZCA9IHJvb3QudXVpZCxcXG5cXG5cXHRcXHRcXHRcXHRjbGlwT2JqZWN0ID0gdHlwZW9mIGNsaXAgPT09ICdzdHJpbmcnID9cXG5cXHRcXHRcXHRcXHRcXHRBbmltYXRpb25DbGlwLmZpbmRCeU5hbWUoIHJvb3QsIGNsaXAgKSA6IGNsaXAsXFxuXFxuXFx0XFx0XFx0XFx0Y2xpcFV1aWQgPSBjbGlwT2JqZWN0ID8gY2xpcE9iamVjdC51dWlkIDogY2xpcCxcXG5cXG5cXHRcXHRcXHRcXHRhY3Rpb25zRm9yQ2xpcCA9IHRoaXMuX2FjdGlvbnNCeUNsaXBbIGNsaXBVdWlkIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBhY3Rpb25zRm9yQ2xpcCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiBhY3Rpb25zRm9yQ2xpcC5hY3Rpb25CeVJvb3RbIHJvb3RVdWlkIF0gfHwgbnVsbDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG51bGw7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBkZWFjdGl2YXRlcyBhbGwgcHJldmlvdXNseSBzY2hlZHVsZWQgYWN0aW9uc1xcblxcdFxcdHN0b3BBbGxBY3Rpb246IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMsXFxuXFx0XFx0XFx0XFx0bkFjdGlvbnMgPSB0aGlzLl9uQWN0aXZlQWN0aW9ucyxcXG5cXHRcXHRcXHRcXHRiaW5kaW5ncyA9IHRoaXMuX2JpbmRpbmdzLFxcblxcdFxcdFxcdFxcdG5CaW5kaW5ncyA9IHRoaXMuX25BY3RpdmVCaW5kaW5ncztcXG5cXG5cXHRcXHRcXHR0aGlzLl9uQWN0aXZlQWN0aW9ucyA9IDA7XFxuXFx0XFx0XFx0dGhpcy5fbkFjdGl2ZUJpbmRpbmdzID0gMDtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgIT09IG5BY3Rpb25zOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdGFjdGlvbnNbIGkgXS5yZXNldCgpO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgIT09IG5CaW5kaW5nczsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRiaW5kaW5nc1sgaSBdLnVzZUNvdW50ID0gMDtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyBhZHZhbmNlIHRoZSB0aW1lIGFuZCB1cGRhdGUgYXBwbHkgdGhlIGFuaW1hdGlvblxcblxcdFxcdHVwZGF0ZTogZnVuY3Rpb24gKCBkZWx0YVRpbWUgKSB7XFxuXFxuXFx0XFx0XFx0ZGVsdGFUaW1lICo9IHRoaXMudGltZVNjYWxlO1xcblxcblxcdFxcdFxcdHZhciBhY3Rpb25zID0gdGhpcy5fYWN0aW9ucyxcXG5cXHRcXHRcXHRcXHRuQWN0aW9ucyA9IHRoaXMuX25BY3RpdmVBY3Rpb25zLFxcblxcblxcdFxcdFxcdFxcdHRpbWUgPSB0aGlzLnRpbWUgKz0gZGVsdGFUaW1lLFxcblxcdFxcdFxcdFxcdHRpbWVEaXJlY3Rpb24gPSBNYXRoLnNpZ24oIGRlbHRhVGltZSApLFxcblxcblxcdFxcdFxcdFxcdGFjY3VJbmRleCA9IHRoaXMuX2FjY3VJbmRleCBePSAxO1xcblxcblxcdFxcdFxcdC8vIHJ1biBhY3RpdmUgYWN0aW9uc1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gbkFjdGlvbnM7ICsrIGkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFjdGlvbiA9IGFjdGlvbnNbIGkgXTtcXG5cXG5cXHRcXHRcXHRcXHRhY3Rpb24uX3VwZGF0ZSggdGltZSwgZGVsdGFUaW1lLCB0aW1lRGlyZWN0aW9uLCBhY2N1SW5kZXggKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Ly8gdXBkYXRlIHNjZW5lIGdyYXBoXFxuXFxuXFx0XFx0XFx0dmFyIGJpbmRpbmdzID0gdGhpcy5fYmluZGluZ3MsXFxuXFx0XFx0XFx0XFx0bkJpbmRpbmdzID0gdGhpcy5fbkFjdGl2ZUJpbmRpbmdzO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMDsgaSAhPT0gbkJpbmRpbmdzOyArKyBpICkge1xcblxcblxcdFxcdFxcdFxcdGJpbmRpbmdzWyBpIF0uYXBwbHkoIGFjY3VJbmRleCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIHJldHVybiB0aGlzIG1peGVyJ3Mgcm9vdCB0YXJnZXQgb2JqZWN0XFxuXFx0XFx0Z2V0Um9vdDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLl9yb290O1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Ly8gZnJlZSBhbGwgcmVzb3VyY2VzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjbGlwXFxuXFx0XFx0dW5jYWNoZUNsaXA6IGZ1bmN0aW9uICggY2xpcCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMsXFxuXFx0XFx0XFx0XFx0Y2xpcFV1aWQgPSBjbGlwLnV1aWQsXFxuXFx0XFx0XFx0XFx0YWN0aW9uc0J5Q2xpcCA9IHRoaXMuX2FjdGlvbnNCeUNsaXAsXFxuXFx0XFx0XFx0XFx0YWN0aW9uc0ZvckNsaXAgPSBhY3Rpb25zQnlDbGlwWyBjbGlwVXVpZCBdO1xcblxcblxcdFxcdFxcdGlmICggYWN0aW9uc0ZvckNsaXAgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHQvLyBub3RlOiBqdXN0IGNhbGxpbmcgX3JlbW92ZUluYWN0aXZlQWN0aW9uIHdvdWxkIG1lc3MgdXAgdGhlXFxuXFx0XFx0XFx0XFx0Ly8gaXRlcmF0aW9uIHN0YXRlIGFuZCBhbHNvIHJlcXVpcmUgdXBkYXRpbmcgdGhlIHN0YXRlIHdlIGNhblxcblxcdFxcdFxcdFxcdC8vIGp1c3QgdGhyb3cgYXdheVxcblxcblxcdFxcdFxcdFxcdHZhciBhY3Rpb25zVG9SZW1vdmUgPSBhY3Rpb25zRm9yQ2xpcC5rbm93bkFjdGlvbnM7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBuID0gYWN0aW9uc1RvUmVtb3ZlLmxlbmd0aDsgaSAhPT0gbjsgKysgaSApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgYWN0aW9uID0gYWN0aW9uc1RvUmVtb3ZlWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbiggYWN0aW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dmFyIGNhY2hlSW5kZXggPSBhY3Rpb24uX2NhY2hlSW5kZXgsXFxuXFx0XFx0XFx0XFx0XFx0XFx0bGFzdEluYWN0aXZlQWN0aW9uID0gYWN0aW9uc1sgYWN0aW9ucy5sZW5ndGggLSAxIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0YWN0aW9uLl9jYWNoZUluZGV4ID0gbnVsbDtcXG5cXHRcXHRcXHRcXHRcXHRhY3Rpb24uX2J5Q2xpcENhY2hlSW5kZXggPSBudWxsO1xcblxcblxcdFxcdFxcdFxcdFxcdGxhc3RJbmFjdGl2ZUFjdGlvbi5fY2FjaGVJbmRleCA9IGNhY2hlSW5kZXg7XFxuXFx0XFx0XFx0XFx0XFx0YWN0aW9uc1sgY2FjaGVJbmRleCBdID0gbGFzdEluYWN0aXZlQWN0aW9uO1xcblxcdFxcdFxcdFxcdFxcdGFjdGlvbnMucG9wKCk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0dGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbiggYWN0aW9uICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGRlbGV0ZSBhY3Rpb25zQnlDbGlwWyBjbGlwVXVpZCBdO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdC8vIGZyZWUgYWxsIHJlc291cmNlcyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgcm9vdCB0YXJnZXQgb2JqZWN0XFxuXFx0XFx0dW5jYWNoZVJvb3Q6IGZ1bmN0aW9uICggcm9vdCApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcm9vdFV1aWQgPSByb290LnV1aWQsXFxuXFx0XFx0XFx0XFx0YWN0aW9uc0J5Q2xpcCA9IHRoaXMuX2FjdGlvbnNCeUNsaXA7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGNsaXBVdWlkIGluIGFjdGlvbnNCeUNsaXAgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGFjdGlvbkJ5Um9vdCA9IGFjdGlvbnNCeUNsaXBbIGNsaXBVdWlkIF0uYWN0aW9uQnlSb290LFxcblxcdFxcdFxcdFxcdFxcdGFjdGlvbiA9IGFjdGlvbkJ5Um9vdFsgcm9vdFV1aWQgXTtcXG5cXG5cXHRcXHRcXHRcXHRpZiAoIGFjdGlvbiAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24oIGFjdGlvbiApO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKCBhY3Rpb24gKTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHZhciBiaW5kaW5nc0J5Um9vdCA9IHRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxcXG5cXHRcXHRcXHRcXHRiaW5kaW5nQnlOYW1lID0gYmluZGluZ3NCeVJvb3RbIHJvb3RVdWlkIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBiaW5kaW5nQnlOYW1lICE9PSB1bmRlZmluZWQgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIHRyYWNrTmFtZSBpbiBiaW5kaW5nQnlOYW1lICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHZhciBiaW5kaW5nID0gYmluZGluZ0J5TmFtZVsgdHJhY2tOYW1lIF07XFxuXFx0XFx0XFx0XFx0XFx0YmluZGluZy5yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpO1xcblxcdFxcdFxcdFxcdFxcdHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZyggYmluZGluZyApO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyByZW1vdmUgYSB0YXJnZXRlZCBjbGlwIGZyb20gdGhlIGNhY2hlXFxuXFx0XFx0dW5jYWNoZUFjdGlvbjogZnVuY3Rpb24gKCBjbGlwLCBvcHRpb25hbFJvb3QgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGFjdGlvbiA9IHRoaXMuZXhpc3RpbmdBY3Rpb24oIGNsaXAsIG9wdGlvbmFsUm9vdCApO1xcblxcblxcdFxcdFxcdGlmICggYWN0aW9uICE9PSBudWxsICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24oIGFjdGlvbiApO1xcblxcdFxcdFxcdFxcdHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKCBhY3Rpb24gKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFVuaWZvcm0oIHZhbHVlICkge1xcblxcblxcdFxcdGlmICggdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Vbmlmb3JtOiBUeXBlIHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVlZGVkLicgKTtcXG5cXHRcXHRcXHR2YWx1ZSA9IGFyZ3VtZW50c1sgMSBdO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLnZhbHVlID0gdmFsdWU7XFxuXFxuXFx0fVxcblxcblxcdFVuaWZvcm0ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdHJldHVybiBuZXcgVW5pZm9ybSggdGhpcy52YWx1ZS5jbG9uZSA9PT0gdW5kZWZpbmVkID8gdGhpcy52YWx1ZSA6IHRoaXMudmFsdWUuY2xvbmUoKSApO1xcblxcblxcdH07XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBiZW5hYWRhbXMgLyBodHRwczovL3R3aXR0ZXIuY29tL2Jlbl9hX2FkYW1zXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkoKSB7XFxuXFxuXFx0XFx0QnVmZmVyR2VvbWV0cnkuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMudHlwZSA9ICdJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSc7XFxuXFx0XFx0dGhpcy5tYXhJbnN0YW5jZWRDb3VudCA9IHVuZGVmaW5lZDtcXG5cXG5cXHR9XFxuXFxuXFx0SW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggQnVmZmVyR2VvbWV0cnkucHJvdG90eXBlICksIHtcXG5cXG5cXHRcXHRjb25zdHJ1Y3RvcjogSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnksXFxuXFxuXFx0XFx0aXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeTogdHJ1ZSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHRCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUuY29weS5jYWxsKCB0aGlzLCBzb3VyY2UgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLm1heEluc3RhbmNlZENvdW50ID0gc291cmNlLm1heEluc3RhbmNlZENvdW50O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGJlbmFhZGFtcyAvIGh0dHBzOi8vdHdpdHRlci5jb20vYmVuX2FfYWRhbXNcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSggaW50ZXJsZWF2ZWRCdWZmZXIsIGl0ZW1TaXplLCBvZmZzZXQsIG5vcm1hbGl6ZWQgKSB7XFxuXFxuXFx0XFx0dGhpcy51dWlkID0gX01hdGguZ2VuZXJhdGVVVUlEKCk7XFxuXFxuXFx0XFx0dGhpcy5kYXRhID0gaW50ZXJsZWF2ZWRCdWZmZXI7XFxuXFx0XFx0dGhpcy5pdGVtU2l6ZSA9IGl0ZW1TaXplO1xcblxcdFxcdHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xcblxcblxcdFxcdHRoaXMubm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQgPT09IHRydWU7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRjb3VudDoge1xcblxcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmRhdGEuY291bnQ7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0YXJyYXk6IHtcXG5cXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5kYXRhLmFycmF5O1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5hc3NpZ24oIEludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6IHRydWUsXFxuXFxuXFx0XFx0c2V0WDogZnVuY3Rpb24gKCBpbmRleCwgeCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmRhdGEuYXJyYXlbIGluZGV4ICogdGhpcy5kYXRhLnN0cmlkZSArIHRoaXMub2Zmc2V0IF0gPSB4O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WTogZnVuY3Rpb24gKCBpbmRleCwgeSApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmRhdGEuYXJyYXlbIGluZGV4ICogdGhpcy5kYXRhLnN0cmlkZSArIHRoaXMub2Zmc2V0ICsgMSBdID0geTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFo6IGZ1bmN0aW9uICggaW5kZXgsIHogKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5kYXRhLmFycmF5WyBpbmRleCAqIHRoaXMuZGF0YS5zdHJpZGUgKyB0aGlzLm9mZnNldCArIDIgXSA9IHo7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRXOiBmdW5jdGlvbiAoIGluZGV4LCB3ICkge1xcblxcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKiB0aGlzLmRhdGEuc3RyaWRlICsgdGhpcy5vZmZzZXQgKyAzIF0gPSB3O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0WDogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kYXRhLmFycmF5WyBpbmRleCAqIHRoaXMuZGF0YS5zdHJpZGUgKyB0aGlzLm9mZnNldCBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0WTogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5kYXRhLmFycmF5WyBpbmRleCAqIHRoaXMuZGF0YS5zdHJpZGUgKyB0aGlzLm9mZnNldCArIDEgXTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldFo6IGZ1bmN0aW9uICggaW5kZXggKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKiB0aGlzLmRhdGEuc3RyaWRlICsgdGhpcy5vZmZzZXQgKyAyIF07XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRnZXRXOiBmdW5jdGlvbiAoIGluZGV4ICkge1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzLmRhdGEuYXJyYXlbIGluZGV4ICogdGhpcy5kYXRhLnN0cmlkZSArIHRoaXMub2Zmc2V0ICsgMyBdO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WFk6IGZ1bmN0aW9uICggaW5kZXgsIHgsIHkgKSB7XFxuXFxuXFx0XFx0XFx0aW5kZXggPSBpbmRleCAqIHRoaXMuZGF0YS5zdHJpZGUgKyB0aGlzLm9mZnNldDtcXG5cXG5cXHRcXHRcXHR0aGlzLmRhdGEuYXJyYXlbIGluZGV4ICsgMCBdID0geDtcXG5cXHRcXHRcXHR0aGlzLmRhdGEuYXJyYXlbIGluZGV4ICsgMSBdID0geTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHNldFhZWjogZnVuY3Rpb24gKCBpbmRleCwgeCwgeSwgeiApIHtcXG5cXG5cXHRcXHRcXHRpbmRleCA9IGluZGV4ICogdGhpcy5kYXRhLnN0cmlkZSArIHRoaXMub2Zmc2V0O1xcblxcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKyAwIF0gPSB4O1xcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKyAxIF0gPSB5O1xcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKyAyIF0gPSB6O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0WFlaVzogZnVuY3Rpb24gKCBpbmRleCwgeCwgeSwgeiwgdyApIHtcXG5cXG5cXHRcXHRcXHRpbmRleCA9IGluZGV4ICogdGhpcy5kYXRhLnN0cmlkZSArIHRoaXMub2Zmc2V0O1xcblxcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKyAwIF0gPSB4O1xcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKyAxIF0gPSB5O1xcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKyAyIF0gPSB6O1xcblxcdFxcdFxcdHRoaXMuZGF0YS5hcnJheVsgaW5kZXggKyAzIF0gPSB3O1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBiZW5hYWRhbXMgLyBodHRwczovL3R3aXR0ZXIuY29tL2Jlbl9hX2FkYW1zXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gSW50ZXJsZWF2ZWRCdWZmZXIoIGFycmF5LCBzdHJpZGUgKSB7XFxuXFxuXFx0XFx0dGhpcy51dWlkID0gX01hdGguZ2VuZXJhdGVVVUlEKCk7XFxuXFxuXFx0XFx0dGhpcy5hcnJheSA9IGFycmF5O1xcblxcdFxcdHRoaXMuc3RyaWRlID0gc3RyaWRlO1xcblxcdFxcdHRoaXMuY291bnQgPSBhcnJheSAhPT0gdW5kZWZpbmVkID8gYXJyYXkubGVuZ3RoIC8gc3RyaWRlIDogMDtcXG5cXG5cXHRcXHR0aGlzLmR5bmFtaWMgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLnVwZGF0ZVJhbmdlID0geyBvZmZzZXQ6IDAsIGNvdW50OiAtIDEgfTtcXG5cXG5cXHRcXHR0aGlzLm9uVXBsb2FkQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7fTtcXG5cXG5cXHRcXHR0aGlzLnZlcnNpb24gPSAwO1xcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIEludGVybGVhdmVkQnVmZmVyLnByb3RvdHlwZSwgJ25lZWRzVXBkYXRlJywge1xcblxcblxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIHZhbHVlID09PSB0cnVlICkgdGhpcy52ZXJzaW9uICsrO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggSW50ZXJsZWF2ZWRCdWZmZXIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0aXNJbnRlcmxlYXZlZEJ1ZmZlcjogdHJ1ZSxcXG5cXG5cXHRcXHRzZXRBcnJheTogZnVuY3Rpb24gKCBhcnJheSApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIEFycmF5LmlzQXJyYXkoIGFycmF5ICkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhyb3cgbmV3IFR5cGVFcnJvciggJ1RIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuJyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR0aGlzLmNvdW50ID0gYXJyYXkgIT09IHVuZGVmaW5lZCA/IGFycmF5Lmxlbmd0aCAvIHRoaXMuc3RyaWRlIDogMDtcXG5cXHRcXHRcXHR0aGlzLmFycmF5ID0gYXJyYXk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXREeW5hbWljOiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdHRoaXMuZHluYW1pYyA9IHZhbHVlO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5hcnJheSA9IG5ldyBzb3VyY2UuYXJyYXkuY29uc3RydWN0b3IoIHNvdXJjZS5hcnJheSApO1xcblxcdFxcdFxcdHRoaXMuY291bnQgPSBzb3VyY2UuY291bnQ7XFxuXFx0XFx0XFx0dGhpcy5zdHJpZGUgPSBzb3VyY2Uuc3RyaWRlO1xcblxcdFxcdFxcdHRoaXMuZHluYW1pYyA9IHNvdXJjZS5keW5hbWljO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weUF0OiBmdW5jdGlvbiAoIGluZGV4MSwgYXR0cmlidXRlLCBpbmRleDIgKSB7XFxuXFxuXFx0XFx0XFx0aW5kZXgxICo9IHRoaXMuc3RyaWRlO1xcblxcdFxcdFxcdGluZGV4MiAqPSBhdHRyaWJ1dGUuc3RyaWRlO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMuc3RyaWRlOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmFycmF5WyBpbmRleDEgKyBpIF0gPSBhdHRyaWJ1dGUuYXJyYXlbIGluZGV4MiArIGkgXTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9mZnNldCA9PT0gdW5kZWZpbmVkICkgb2Zmc2V0ID0gMDtcXG5cXG5cXHRcXHRcXHR0aGlzLmFycmF5LnNldCggdmFsdWUsIG9mZnNldCApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2xvbmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRvblVwbG9hZDogZnVuY3Rpb24gKCBjYWxsYmFjayApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm9uVXBsb2FkQ2FsbGJhY2sgPSBjYWxsYmFjaztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYmVuYWFkYW1zIC8gaHR0cHM6Ly90d2l0dGVyLmNvbS9iZW5fYV9hZGFtc1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEluc3RhbmNlZEludGVybGVhdmVkQnVmZmVyKCBhcnJheSwgc3RyaWRlLCBtZXNoUGVyQXR0cmlidXRlICkge1xcblxcblxcdFxcdEludGVybGVhdmVkQnVmZmVyLmNhbGwoIHRoaXMsIGFycmF5LCBzdHJpZGUgKTtcXG5cXG5cXHRcXHR0aGlzLm1lc2hQZXJBdHRyaWJ1dGUgPSBtZXNoUGVyQXR0cmlidXRlIHx8IDE7XFxuXFxuXFx0fVxcblxcblxcdEluc3RhbmNlZEludGVybGVhdmVkQnVmZmVyLnByb3RvdHlwZSA9IE9iamVjdC5hc3NpZ24oIE9iamVjdC5jcmVhdGUoIEludGVybGVhdmVkQnVmZmVyLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEluc3RhbmNlZEludGVybGVhdmVkQnVmZmVyLFxcblxcblxcdFxcdGlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI6IHRydWUsXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBzb3VyY2UgKSB7XFxuXFxuXFx0XFx0XFx0SW50ZXJsZWF2ZWRCdWZmZXIucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5tZXNoUGVyQXR0cmlidXRlID0gc291cmNlLm1lc2hQZXJBdHRyaWJ1dGU7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGJlbmFhZGFtcyAvIGh0dHBzOi8vdHdpdHRlci5jb20vYmVuX2FfYWRhbXNcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSwgbWVzaFBlckF0dHJpYnV0ZSApIHtcXG5cXG5cXHRcXHRCdWZmZXJBdHRyaWJ1dGUuY2FsbCggdGhpcywgYXJyYXksIGl0ZW1TaXplICk7XFxuXFxuXFx0XFx0dGhpcy5tZXNoUGVyQXR0cmlidXRlID0gbWVzaFBlckF0dHJpYnV0ZSB8fCAxO1xcblxcblxcdH1cXG5cXG5cXHRJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUucHJvdG90eXBlID0gT2JqZWN0LmFzc2lnbiggT2JqZWN0LmNyZWF0ZSggQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSApLCB7XFxuXFxuXFx0XFx0Y29uc3RydWN0b3I6IEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSxcXG5cXG5cXHRcXHRpc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogdHJ1ZSxcXG5cXG5cXHRcXHRjb3B5OiBmdW5jdGlvbiAoIHNvdXJjZSApIHtcXG5cXG5cXHRcXHRcXHRCdWZmZXJBdHRyaWJ1dGUucHJvdG90eXBlLmNvcHkuY2FsbCggdGhpcywgc291cmNlICk7XFxuXFxuXFx0XFx0XFx0dGhpcy5tZXNoUGVyQXR0cmlidXRlID0gc291cmNlLm1lc2hQZXJBdHRyaWJ1dGU7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgYmhvdXN0b24gLyBodHRwOi8vY2xhcmEuaW8vXFxuXFx0ICogQGF1dGhvciBzdGVwaG9taSAvIGh0dHA6Ly9zdGVwaGFuZWdpbmllci5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gUmF5Y2FzdGVyKCBvcmlnaW4sIGRpcmVjdGlvbiwgbmVhciwgZmFyICkge1xcblxcblxcdFxcdHRoaXMucmF5ID0gbmV3IFJheSggb3JpZ2luLCBkaXJlY3Rpb24gKTtcXG5cXHRcXHQvLyBkaXJlY3Rpb24gaXMgYXNzdW1lZCB0byBiZSBub3JtYWxpemVkIChmb3IgYWNjdXJhdGUgZGlzdGFuY2UgY2FsY3VsYXRpb25zKVxcblxcblxcdFxcdHRoaXMubmVhciA9IG5lYXIgfHwgMDtcXG5cXHRcXHR0aGlzLmZhciA9IGZhciB8fCBJbmZpbml0eTtcXG5cXG5cXHRcXHR0aGlzLnBhcmFtcyA9IHtcXG5cXHRcXHRcXHRNZXNoOiB7fSxcXG5cXHRcXHRcXHRMaW5lOiB7fSxcXG5cXHRcXHRcXHRMT0Q6IHt9LFxcblxcdFxcdFxcdFBvaW50czogeyB0aHJlc2hvbGQ6IDEgfSxcXG5cXHRcXHRcXHRTcHJpdGU6IHt9XFxuXFx0XFx0fTtcXG5cXG5cXHRcXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggdGhpcy5wYXJhbXMsIHtcXG5cXHRcXHRcXHRQb2ludENsb3VkOiB7XFxuXFx0XFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuUmF5Y2FzdGVyOiBwYXJhbXMuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIHBhcmFtcy5Qb2ludHMuJyApO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiB0aGlzLlBvaW50cztcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcdFxcdH0gKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gYXNjU29ydCggYSwgYiApIHtcXG5cXG5cXHRcXHRyZXR1cm4gYS5kaXN0YW5jZSAtIGIuZGlzdGFuY2U7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIGludGVyc2VjdE9iamVjdCggb2JqZWN0LCByYXljYXN0ZXIsIGludGVyc2VjdHMsIHJlY3Vyc2l2ZSApIHtcXG5cXG5cXHRcXHRpZiAoIG9iamVjdC52aXNpYmxlID09PSBmYWxzZSApIHJldHVybjtcXG5cXG5cXHRcXHRvYmplY3QucmF5Y2FzdCggcmF5Y2FzdGVyLCBpbnRlcnNlY3RzICk7XFxuXFxuXFx0XFx0aWYgKCByZWN1cnNpdmUgPT09IHRydWUgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGNoaWxkcmVuID0gb2JqZWN0LmNoaWxkcmVuO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0aW50ZXJzZWN0T2JqZWN0KCBjaGlsZHJlblsgaSBdLCByYXljYXN0ZXIsIGludGVyc2VjdHMsIHRydWUgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcblxcdH1cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBSYXljYXN0ZXIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0bGluZVByZWNpc2lvbjogMSxcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggb3JpZ2luLCBkaXJlY3Rpb24gKSB7XFxuXFxuXFx0XFx0XFx0Ly8gZGlyZWN0aW9uIGlzIGFzc3VtZWQgdG8gYmUgbm9ybWFsaXplZCAoZm9yIGFjY3VyYXRlIGRpc3RhbmNlIGNhbGN1bGF0aW9ucylcXG5cXG5cXHRcXHRcXHR0aGlzLnJheS5zZXQoIG9yaWdpbiwgZGlyZWN0aW9uICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tQ2FtZXJhOiBmdW5jdGlvbiAoIGNvb3JkcywgY2FtZXJhICkge1xcblxcblxcdFxcdFxcdGlmICggKCBjYW1lcmEgJiYgY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnJheS5vcmlnaW4uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBjYW1lcmEubWF0cml4V29ybGQgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnJheS5kaXJlY3Rpb24uc2V0KCBjb29yZHMueCwgY29vcmRzLnksIDAuNSApLnVucHJvamVjdCggY2FtZXJhICkuc3ViKCB0aGlzLnJheS5vcmlnaW4gKS5ub3JtYWxpemUoKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2UgaWYgKCAoIGNhbWVyYSAmJiBjYW1lcmEuaXNPcnRob2dyYXBoaWNDYW1lcmEgKSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnJheS5vcmlnaW4uc2V0KCBjb29yZHMueCwgY29vcmRzLnksICggY2FtZXJhLm5lYXIgKyBjYW1lcmEuZmFyICkgLyAoIGNhbWVyYS5uZWFyIC0gY2FtZXJhLmZhciApICkudW5wcm9qZWN0KCBjYW1lcmEgKTsgLy8gc2V0IG9yaWdpbiBpbiBwbGFuZSBvZiBjYW1lcmFcXG5cXHRcXHRcXHRcXHR0aGlzLnJheS5kaXJlY3Rpb24uc2V0KCAwLCAwLCAtIDEgKS50cmFuc2Zvcm1EaXJlY3Rpb24oIGNhbWVyYS5tYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlJheWNhc3RlcjogVW5zdXBwb3J0ZWQgY2FtZXJhIHR5cGUuJyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdE9iamVjdDogZnVuY3Rpb24gKCBvYmplY3QsIHJlY3Vyc2l2ZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgaW50ZXJzZWN0cyA9IFtdO1xcblxcblxcdFxcdFxcdGludGVyc2VjdE9iamVjdCggb2JqZWN0LCB0aGlzLCBpbnRlcnNlY3RzLCByZWN1cnNpdmUgKTtcXG5cXG5cXHRcXHRcXHRpbnRlcnNlY3RzLnNvcnQoIGFzY1NvcnQgKTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gaW50ZXJzZWN0cztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGludGVyc2VjdE9iamVjdHM6IGZ1bmN0aW9uICggb2JqZWN0cywgcmVjdXJzaXZlICkge1xcblxcblxcdFxcdFxcdHZhciBpbnRlcnNlY3RzID0gW107XFxuXFxuXFx0XFx0XFx0aWYgKCBBcnJheS5pc0FycmF5KCBvYmplY3RzICkgPT09IGZhbHNlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlJheWNhc3Rlci5pbnRlcnNlY3RPYmplY3RzOiBvYmplY3RzIGlzIG5vdCBhbiBBcnJheS4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIGludGVyc2VjdHM7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IG9iamVjdHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRpbnRlcnNlY3RPYmplY3QoIG9iamVjdHNbIGkgXSwgdGhpcywgaW50ZXJzZWN0cywgcmVjdXJzaXZlICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGludGVyc2VjdHMuc29ydCggYXNjU29ydCApO1xcblxcblxcdFxcdFxcdHJldHVybiBpbnRlcnNlY3RzO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBDbG9jayggYXV0b1N0YXJ0ICkge1xcblxcblxcdFxcdHRoaXMuYXV0b1N0YXJ0ID0gKCBhdXRvU3RhcnQgIT09IHVuZGVmaW5lZCApID8gYXV0b1N0YXJ0IDogdHJ1ZTtcXG5cXG5cXHRcXHR0aGlzLnN0YXJ0VGltZSA9IDA7XFxuXFx0XFx0dGhpcy5vbGRUaW1lID0gMDtcXG5cXHRcXHR0aGlzLmVsYXBzZWRUaW1lID0gMDtcXG5cXG5cXHRcXHR0aGlzLnJ1bm5pbmcgPSBmYWxzZTtcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggQ2xvY2sucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0c3RhcnQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnN0YXJ0VGltZSA9ICggdHlwZW9mIHBlcmZvcm1hbmNlID09PSAndW5kZWZpbmVkJyA/IERhdGUgOiBwZXJmb3JtYW5jZSApLm5vdygpOyAvLyBzZWUgIzEwNzMyXFxuXFxuXFx0XFx0XFx0dGhpcy5vbGRUaW1lID0gdGhpcy5zdGFydFRpbWU7XFxuXFx0XFx0XFx0dGhpcy5lbGFwc2VkVGltZSA9IDA7XFxuXFx0XFx0XFx0dGhpcy5ydW5uaW5nID0gdHJ1ZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdHN0b3A6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmdldEVsYXBzZWRUaW1lKCk7XFxuXFx0XFx0XFx0dGhpcy5ydW5uaW5nID0gZmFsc2U7XFxuXFx0XFx0XFx0dGhpcy5hdXRvU3RhcnQgPSBmYWxzZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldEVsYXBzZWRUaW1lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5nZXREZWx0YSgpO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmVsYXBzZWRUaW1lO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Z2V0RGVsdGE6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgZGlmZiA9IDA7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLmF1dG9TdGFydCAmJiAhIHRoaXMucnVubmluZyApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnN0YXJ0KCk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdGlmICggdGhpcy5ydW5uaW5nICkge1xcblxcblxcdFxcdFxcdFxcdHZhciBuZXdUaW1lID0gKCB0eXBlb2YgcGVyZm9ybWFuY2UgPT09ICd1bmRlZmluZWQnID8gRGF0ZSA6IHBlcmZvcm1hbmNlICkubm93KCk7XFxuXFxuXFx0XFx0XFx0XFx0ZGlmZiA9ICggbmV3VGltZSAtIHRoaXMub2xkVGltZSApIC8gMTAwMDtcXG5cXHRcXHRcXHRcXHR0aGlzLm9sZFRpbWUgPSBuZXdUaW1lO1xcblxcblxcdFxcdFxcdFxcdHRoaXMuZWxhcHNlZFRpbWUgKz0gZGlmZjtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGRpZmY7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGJob3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICpcXG5cXHQgKiBSZWY6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NwaGVyaWNhbF9jb29yZGluYXRlX3N5c3RlbVxcblxcdCAqXFxuXFx0ICogVGhlIHBvbGVzIChwaGkpIGFyZSBhdCB0aGUgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHkgYXhpcy5cXG5cXHQgKiBUaGUgZXF1YXRvciBzdGFydHMgYXQgcG9zaXRpdmUgei5cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBTcGhlcmljYWwoIHJhZGl1cywgcGhpLCB0aGV0YSApIHtcXG5cXG5cXHRcXHR0aGlzLnJhZGl1cyA9ICggcmFkaXVzICE9PSB1bmRlZmluZWQgKSA/IHJhZGl1cyA6IDEuMDtcXG5cXHRcXHR0aGlzLnBoaSA9ICggcGhpICE9PSB1bmRlZmluZWQgKSA/IHBoaSA6IDA7IC8vIHVwIC8gZG93biB0b3dhcmRzIHRvcCBhbmQgYm90dG9tIHBvbGVcXG5cXHRcXHR0aGlzLnRoZXRhID0gKCB0aGV0YSAhPT0gdW5kZWZpbmVkICkgPyB0aGV0YSA6IDA7IC8vIGFyb3VuZCB0aGUgZXF1YXRvciBvZiB0aGUgc3BoZXJlXFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fVxcblxcblxcdE9iamVjdC5hc3NpZ24oIFNwaGVyaWNhbC5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggcmFkaXVzLCBwaGksIHRoZXRhICkge1xcblxcblxcdFxcdFxcdHRoaXMucmFkaXVzID0gcmFkaXVzO1xcblxcdFxcdFxcdHRoaXMucGhpID0gcGhpO1xcblxcdFxcdFxcdHRoaXMudGhldGEgPSB0aGV0YTtcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNsb25lOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSggdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y29weTogZnVuY3Rpb24gKCBvdGhlciApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnJhZGl1cyA9IG90aGVyLnJhZGl1cztcXG5cXHRcXHRcXHR0aGlzLnBoaSA9IG90aGVyLnBoaTtcXG5cXHRcXHRcXHR0aGlzLnRoZXRhID0gb3RoZXIudGhldGE7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHQvLyByZXN0cmljdCBwaGkgdG8gYmUgYmV0d2VlIEVQUyBhbmQgUEktRVBTXFxuXFx0XFx0bWFrZVNhZmU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgRVBTID0gMC4wMDAwMDE7XFxuXFx0XFx0XFx0dGhpcy5waGkgPSBNYXRoLm1heCggRVBTLCBNYXRoLm1pbiggTWF0aC5QSSAtIEVQUywgdGhpcy5waGkgKSApO1xcblxcblxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2V0RnJvbVZlY3RvcjM6IGZ1bmN0aW9uICggdmVjMyApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLnJhZGl1cyA9IHZlYzMubGVuZ3RoKCk7XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLnJhZGl1cyA9PT0gMCApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnRoZXRhID0gMDtcXG5cXHRcXHRcXHRcXHR0aGlzLnBoaSA9IDA7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnRoZXRhID0gTWF0aC5hdGFuMiggdmVjMy54LCB2ZWMzLnogKTsgLy8gZXF1YXRvciBhbmdsZSBhcm91bmQgeS11cCBheGlzXFxuXFx0XFx0XFx0XFx0dGhpcy5waGkgPSBNYXRoLmFjb3MoIF9NYXRoLmNsYW1wKCB2ZWMzLnkgLyB0aGlzLnJhZGl1cywgLSAxLCAxICkgKTsgLy8gcG9sYXIgYW5nbGVcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqXFxuXFx0ICogUmVmOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DeWxpbmRyaWNhbF9jb29yZGluYXRlX3N5c3RlbVxcblxcdCAqXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gQ3lsaW5kcmljYWwoIHJhZGl1cywgdGhldGEsIHkgKSB7XFxuXFxuXFx0XFx0dGhpcy5yYWRpdXMgPSAoIHJhZGl1cyAhPT0gdW5kZWZpbmVkICkgPyByYWRpdXMgOiAxLjA7IC8vIGRpc3RhbmNlIGZyb20gdGhlIG9yaWdpbiB0byBhIHBvaW50IGluIHRoZSB4LXogcGxhbmVcXG5cXHRcXHR0aGlzLnRoZXRhID0gKCB0aGV0YSAhPT0gdW5kZWZpbmVkICkgPyB0aGV0YSA6IDA7IC8vIGNvdW50ZXJjbG9ja3dpc2UgYW5nbGUgaW4gdGhlIHgteiBwbGFuZSBtZWFzdXJlZCBpbiByYWRpYW5zIGZyb20gdGhlIHBvc2l0aXZlIHotYXhpc1xcblxcdFxcdHRoaXMueSA9ICggeSAhPT0gdW5kZWZpbmVkICkgPyB5IDogMDsgLy8gaGVpZ2h0IGFib3ZlIHRoZSB4LXogcGxhbmVcXG5cXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggQ3lsaW5kcmljYWwucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0c2V0OiBmdW5jdGlvbiAoIHJhZGl1cywgdGhldGEsIHkgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5yYWRpdXMgPSByYWRpdXM7XFxuXFx0XFx0XFx0dGhpcy50aGV0YSA9IHRoZXRhO1xcblxcdFxcdFxcdHRoaXMueSA9IHk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRjbG9uZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdHJldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkoIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNvcHk6IGZ1bmN0aW9uICggb3RoZXIgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5yYWRpdXMgPSBvdGhlci5yYWRpdXM7XFxuXFx0XFx0XFx0dGhpcy50aGV0YSA9IG90aGVyLnRoZXRhO1xcblxcdFxcdFxcdHRoaXMueSA9IG90aGVyLnk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRzZXRGcm9tVmVjdG9yMzogZnVuY3Rpb24gKCB2ZWMzICkge1xcblxcblxcdFxcdFxcdHRoaXMucmFkaXVzID0gTWF0aC5zcXJ0KCB2ZWMzLnggKiB2ZWMzLnggKyB2ZWMzLnogKiB2ZWMzLnogKTtcXG5cXHRcXHRcXHR0aGlzLnRoZXRhID0gTWF0aC5hdGFuMiggdmVjMy54LCB2ZWMzLnogKTtcXG5cXHRcXHRcXHR0aGlzLnkgPSB2ZWMzLnk7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEltbWVkaWF0ZVJlbmRlck9iamVjdCggbWF0ZXJpYWwgKSB7XFxuXFxuXFx0XFx0T2JqZWN0M0QuY2FsbCggdGhpcyApO1xcblxcblxcdFxcdHRoaXMubWF0ZXJpYWwgPSBtYXRlcmlhbDtcXG5cXHRcXHR0aGlzLnJlbmRlciA9IGZ1bmN0aW9uICggLyogcmVuZGVyQ2FsbGJhY2sgKi8gKSB7fTtcXG5cXG5cXHR9XFxuXFxuXFx0SW1tZWRpYXRlUmVuZGVyT2JqZWN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApO1xcblxcdEltbWVkaWF0ZVJlbmRlck9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBJbW1lZGlhdGVSZW5kZXJPYmplY3Q7XFxuXFxuXFx0SW1tZWRpYXRlUmVuZGVyT2JqZWN0LnByb3RvdHlwZS5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdCA9IHRydWU7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBWZXJ0ZXhOb3JtYWxzSGVscGVyKCBvYmplY3QsIHNpemUsIGhleCwgbGluZXdpZHRoICkge1xcblxcblxcdFxcdHRoaXMub2JqZWN0ID0gb2JqZWN0O1xcblxcblxcdFxcdHRoaXMuc2l6ZSA9ICggc2l6ZSAhPT0gdW5kZWZpbmVkICkgPyBzaXplIDogMTtcXG5cXG5cXHRcXHR2YXIgY29sb3IgPSAoIGhleCAhPT0gdW5kZWZpbmVkICkgPyBoZXggOiAweGZmMDAwMDtcXG5cXG5cXHRcXHR2YXIgd2lkdGggPSAoIGxpbmV3aWR0aCAhPT0gdW5kZWZpbmVkICkgPyBsaW5ld2lkdGggOiAxO1xcblxcblxcdFxcdC8vXFxuXFxuXFx0XFx0dmFyIG5Ob3JtYWxzID0gMDtcXG5cXG5cXHRcXHR2YXIgb2JqR2VvbWV0cnkgPSB0aGlzLm9iamVjdC5nZW9tZXRyeTtcXG5cXG5cXHRcXHRpZiAoIG9iakdlb21ldHJ5ICYmIG9iakdlb21ldHJ5LmlzR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0bk5vcm1hbHMgPSBvYmpHZW9tZXRyeS5mYWNlcy5sZW5ndGggKiAzO1xcblxcblxcdFxcdH0gZWxzZSBpZiAoIG9iakdlb21ldHJ5ICYmIG9iakdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0bk5vcm1hbHMgPSBvYmpHZW9tZXRyeS5hdHRyaWJ1dGVzLm5vcm1hbC5jb3VudDtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXG5cXHRcXHR2YXIgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5Ob3JtYWxzICogMiAqIDMsIDMgKTtcXG5cXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIHBvc2l0aW9ucyApO1xcblxcblxcdFxcdExpbmVTZWdtZW50cy5jYWxsKCB0aGlzLCBnZW9tZXRyeSwgbmV3IExpbmVCYXNpY01hdGVyaWFsKCB7IGNvbG9yOiBjb2xvciwgbGluZXdpZHRoOiB3aWR0aCB9ICkgKTtcXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMudXBkYXRlKCk7XFxuXFxuXFx0fVxcblxcblxcdFZlcnRleE5vcm1hbHNIZWxwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggTGluZVNlZ21lbnRzLnByb3RvdHlwZSApO1xcblxcdFZlcnRleE5vcm1hbHNIZWxwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVmVydGV4Tm9ybWFsc0hlbHBlcjtcXG5cXG5cXHRWZXJ0ZXhOb3JtYWxzSGVscGVyLnByb3RvdHlwZS51cGRhdGUgPSAoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciB2MiA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIG5vcm1hbE1hdHJpeCA9IG5ldyBNYXRyaXgzKCk7XFxuXFxuXFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcXG5cXG5cXHRcXHRcXHR2YXIga2V5cyA9IFsgJ2EnLCAnYicsICdjJyBdO1xcblxcblxcdFxcdFxcdHRoaXMub2JqZWN0LnVwZGF0ZU1hdHJpeFdvcmxkKCB0cnVlICk7XFxuXFxuXFx0XFx0XFx0bm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeCggdGhpcy5vYmplY3QubWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHR2YXIgbWF0cml4V29ybGQgPSB0aGlzLm9iamVjdC5tYXRyaXhXb3JsZDtcXG5cXG5cXHRcXHRcXHR2YXIgcG9zaXRpb24gPSB0aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb247XFxuXFxuXFx0XFx0XFx0Ly9cXG5cXG5cXHRcXHRcXHR2YXIgb2JqR2VvbWV0cnkgPSB0aGlzLm9iamVjdC5nZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHRpZiAoIG9iakdlb21ldHJ5ICYmIG9iakdlb21ldHJ5LmlzR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZlcnRpY2VzID0gb2JqR2VvbWV0cnkudmVydGljZXM7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGZhY2VzID0gb2JqR2VvbWV0cnkuZmFjZXM7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGlkeCA9IDA7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gZmFjZXMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgZmFjZSA9IGZhY2VzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwLCBqbCA9IGZhY2UudmVydGV4Tm9ybWFscy5sZW5ndGg7IGogPCBqbDsgaiArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgdmVydGV4ID0gdmVydGljZXNbIGZhY2VbIGtleXNbIGogXSBdIF07XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0dmFyIG5vcm1hbCA9IGZhY2UudmVydGV4Tm9ybWFsc1sgaiBdO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHYxLmNvcHkoIHZlcnRleCApLmFwcGx5TWF0cml4NCggbWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHR2Mi5jb3B5KCBub3JtYWwgKS5hcHBseU1hdHJpeDMoIG5vcm1hbE1hdHJpeCApLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKCB0aGlzLnNpemUgKS5hZGQoIHYxICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0cG9zaXRpb24uc2V0WFlaKCBpZHgsIHYxLngsIHYxLnksIHYxLnogKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRcXHRpZHggPSBpZHggKyAxO1xcblxcblxcdFxcdFxcdFxcdFxcdFxcdHBvc2l0aW9uLnNldFhZWiggaWR4LCB2Mi54LCB2Mi55LCB2Mi56ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWR4ID0gaWR4ICsgMTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH0gZWxzZSBpZiAoIG9iakdlb21ldHJ5ICYmIG9iakdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG9ialBvcyA9IG9iakdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb247XFxuXFxuXFx0XFx0XFx0XFx0dmFyIG9iak5vcm0gPSBvYmpHZW9tZXRyeS5hdHRyaWJ1dGVzLm5vcm1hbDtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgaWR4ID0gMDtcXG5cXG5cXHRcXHRcXHRcXHQvLyBmb3Igc2ltcGxpY2l0eSwgaWdub3JlIGluZGV4IGFuZCBkcmF3Y2FsbHMsIGFuZCByZW5kZXIgZXZlcnkgbm9ybWFsXFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGogPSAwLCBqbCA9IG9ialBvcy5jb3VudDsgaiA8IGpsOyBqICsrICkge1xcblxcblxcdFxcdFxcdFxcdFxcdHYxLnNldCggb2JqUG9zLmdldFgoIGogKSwgb2JqUG9zLmdldFkoIGogKSwgb2JqUG9zLmdldFooIGogKSApLmFwcGx5TWF0cml4NCggbWF0cml4V29ybGQgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2Mi5zZXQoIG9iak5vcm0uZ2V0WCggaiApLCBvYmpOb3JtLmdldFkoIGogKSwgb2JqTm9ybS5nZXRaKCBqICkgKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2Mi5hcHBseU1hdHJpeDMoIG5vcm1hbE1hdHJpeCApLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKCB0aGlzLnNpemUgKS5hZGQoIHYxICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0cG9zaXRpb24uc2V0WFlaKCBpZHgsIHYxLngsIHYxLnksIHYxLnogKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRpZHggPSBpZHggKyAxO1xcblxcblxcdFxcdFxcdFxcdFxcdHBvc2l0aW9uLnNldFhZWiggaWR4LCB2Mi54LCB2Mi55LCB2Mi56ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aWR4ID0gaWR4ICsgMTtcXG5cXG5cXHRcXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHBvc2l0aW9uLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdH0oKSApO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBTcG90TGlnaHRIZWxwZXIoIGxpZ2h0LCBjb2xvciApIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy5saWdodCA9IGxpZ2h0O1xcblxcdFxcdHRoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtcXG5cXG5cXHRcXHR0aGlzLm1hdHJpeCA9IGxpZ2h0Lm1hdHJpeFdvcmxkO1xcblxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSBjb2xvcjtcXG5cXG5cXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXG5cXHRcXHR2YXIgcG9zaXRpb25zID0gW1xcblxcdFxcdFxcdDAsIDAsIDAsIFxcdDAsIDAsIDEsXFxuXFx0XFx0XFx0MCwgMCwgMCwgXFx0MSwgMCwgMSxcXG5cXHRcXHRcXHQwLCAwLCAwLFxcdC0gMSwgMCwgMSxcXG5cXHRcXHRcXHQwLCAwLCAwLCBcXHQwLCAxLCAxLFxcblxcdFxcdFxcdDAsIDAsIDAsIFxcdDAsIC0gMSwgMVxcblxcdFxcdF07XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBqID0gMSwgbCA9IDMyOyBpIDwgbDsgaSArKywgaiArKyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgcDEgPSAoIGkgLyBsICkgKiBNYXRoLlBJICogMjtcXG5cXHRcXHRcXHR2YXIgcDIgPSAoIGogLyBsICkgKiBNYXRoLlBJICogMjtcXG5cXG5cXHRcXHRcXHRwb3NpdGlvbnMucHVzaChcXG5cXHRcXHRcXHRcXHRNYXRoLmNvcyggcDEgKSwgTWF0aC5zaW4oIHAxICksIDEsXFxuXFx0XFx0XFx0XFx0TWF0aC5jb3MoIHAyICksIE1hdGguc2luKCBwMiApLCAxXFxuXFx0XFx0XFx0KTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggcG9zaXRpb25zLCAzICkgKTtcXG5cXG5cXHRcXHR2YXIgbWF0ZXJpYWwgPSBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgZm9nOiBmYWxzZSB9ICk7XFxuXFxuXFx0XFx0dGhpcy5jb25lID0gbmV3IExpbmVTZWdtZW50cyggZ2VvbWV0cnksIG1hdGVyaWFsICk7XFxuXFx0XFx0dGhpcy5hZGQoIHRoaXMuY29uZSApO1xcblxcblxcdFxcdHRoaXMudXBkYXRlKCk7XFxuXFxuXFx0fVxcblxcblxcdFNwb3RMaWdodEhlbHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBPYmplY3QzRC5wcm90b3R5cGUgKTtcXG5cXHRTcG90TGlnaHRIZWxwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3BvdExpZ2h0SGVscGVyO1xcblxcblxcdFNwb3RMaWdodEhlbHBlci5wcm90b3R5cGUuZGlzcG9zZSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR0aGlzLmNvbmUuZ2VvbWV0cnkuZGlzcG9zZSgpO1xcblxcdFxcdHRoaXMuY29uZS5tYXRlcmlhbC5kaXNwb3NlKCk7XFxuXFxuXFx0fTtcXG5cXG5cXHRTcG90TGlnaHRIZWxwZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgdmVjdG9yID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgdmVjdG9yMiA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCk7XFxuXFxuXFx0XFx0XFx0dmFyIGNvbmVMZW5ndGggPSB0aGlzLmxpZ2h0LmRpc3RhbmNlID8gdGhpcy5saWdodC5kaXN0YW5jZSA6IDEwMDA7XFxuXFx0XFx0XFx0dmFyIGNvbmVXaWR0aCA9IGNvbmVMZW5ndGggKiBNYXRoLnRhbiggdGhpcy5saWdodC5hbmdsZSApO1xcblxcblxcdFxcdFxcdHRoaXMuY29uZS5zY2FsZS5zZXQoIGNvbmVXaWR0aCwgY29uZVdpZHRoLCBjb25lTGVuZ3RoICk7XFxuXFxuXFx0XFx0XFx0dmVjdG9yLnNldEZyb21NYXRyaXhQb3NpdGlvbiggdGhpcy5saWdodC5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdHZlY3RvcjIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCB0aGlzLmxpZ2h0LnRhcmdldC5tYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdHRoaXMuY29uZS5sb29rQXQoIHZlY3RvcjIuc3ViKCB2ZWN0b3IgKSApO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5jb2xvciAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQoIHRoaXMuY29sb3IgKTtcXG5cXG5cXHRcXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdFxcdHRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5jb3B5KCB0aGlzLmxpZ2h0LmNvbG9yICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH07XFxuXFxuXFx0fSgpO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgU2VhbiBHcmlmZmluIC8gaHR0cDovL3R3aXR0ZXIuY29tL3NncmlmXFxuXFx0ICogQGF1dGhvciBNaWNoYWVsIEd1ZXJyZXJvIC8gaHR0cDovL3JlYWxpdHltZWx0ZG93bi5jb21cXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqIEBhdXRob3IgaWtlcnIgLyBodHRwOi8vdmVyb2xkLmNvbVxcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gZ2V0Qm9uZUxpc3QoIG9iamVjdCApIHtcXG5cXG5cXHRcXHR2YXIgYm9uZUxpc3QgPSBbXTtcXG5cXG5cXHRcXHRpZiAoIG9iamVjdCAmJiBvYmplY3QuaXNCb25lICkge1xcblxcblxcdFxcdFxcdGJvbmVMaXN0LnB1c2goIG9iamVjdCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBvYmplY3QuY2hpbGRyZW4ubGVuZ3RoOyBpICsrICkge1xcblxcblxcdFxcdFxcdGJvbmVMaXN0LnB1c2guYXBwbHkoIGJvbmVMaXN0LCBnZXRCb25lTGlzdCggb2JqZWN0LmNoaWxkcmVuWyBpIF0gKSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRyZXR1cm4gYm9uZUxpc3Q7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIFNrZWxldG9uSGVscGVyKCBvYmplY3QgKSB7XFxuXFxuXFx0XFx0dmFyIGJvbmVzID0gZ2V0Qm9uZUxpc3QoIG9iamVjdCApO1xcblxcblxcdFxcdHZhciBnZW9tZXRyeSA9IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciBjb2xvcnMgPSBbXTtcXG5cXG5cXHRcXHR2YXIgY29sb3IxID0gbmV3IENvbG9yKCAwLCAwLCAxICk7XFxuXFx0XFx0dmFyIGNvbG9yMiA9IG5ldyBDb2xvciggMCwgMSwgMCApO1xcblxcblxcdFxcdGZvciAoIHZhciBpID0gMDsgaSA8IGJvbmVzLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYm9uZSA9IGJvbmVzWyBpIF07XFxuXFxuXFx0XFx0XFx0aWYgKCBib25lLnBhcmVudCAmJiBib25lLnBhcmVudC5pc0JvbmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggMCwgMCwgMCApO1xcblxcdFxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIDAsIDAsIDAgKTtcXG5cXHRcXHRcXHRcXHRjb2xvcnMucHVzaCggY29sb3IxLnIsIGNvbG9yMS5nLCBjb2xvcjEuYiApO1xcblxcdFxcdFxcdFxcdGNvbG9ycy5wdXNoKCBjb2xvcjIuciwgY29sb3IyLmcsIGNvbG9yMi5iICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB2ZXJ0aWNlcywgMyApICk7XFxuXFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAnY29sb3InLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggY29sb3JzLCAzICkgKTtcXG5cXG5cXHRcXHR2YXIgbWF0ZXJpYWwgPSBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgdmVydGV4Q29sb3JzOiBWZXJ0ZXhDb2xvcnMsIGRlcHRoVGVzdDogZmFsc2UsIGRlcHRoV3JpdGU6IGZhbHNlLCB0cmFuc3BhcmVudDogdHJ1ZSB9ICk7XFxuXFxuXFx0XFx0TGluZVNlZ21lbnRzLmNhbGwoIHRoaXMsIGdlb21ldHJ5LCBtYXRlcmlhbCApO1xcblxcblxcdFxcdHRoaXMucm9vdCA9IG9iamVjdDtcXG5cXHRcXHR0aGlzLmJvbmVzID0gYm9uZXM7XFxuXFxuXFx0XFx0dGhpcy5tYXRyaXggPSBvYmplY3QubWF0cml4V29ybGQ7XFxuXFx0XFx0dGhpcy5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0fVxcblxcblxcdFNrZWxldG9uSGVscGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIExpbmVTZWdtZW50cy5wcm90b3R5cGUgKTtcXG5cXHRTa2VsZXRvbkhlbHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTa2VsZXRvbkhlbHBlcjtcXG5cXG5cXHRTa2VsZXRvbkhlbHBlci5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIHZlY3RvciA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0dmFyIGJvbmVNYXRyaXggPSBuZXcgTWF0cml4NCgpO1xcblxcdFxcdHZhciBtYXRyaXhXb3JsZEludiA9IG5ldyBNYXRyaXg0KCk7XFxuXFxuXFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZU1hdHJpeFdvcmxkKCBmb3JjZSApIHtcXG5cXG5cXHRcXHRcXHR2YXIgYm9uZXMgPSB0aGlzLmJvbmVzO1xcblxcblxcdFxcdFxcdHZhciBnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnk7XFxuXFx0XFx0XFx0dmFyIHBvc2l0aW9uID0gZ2VvbWV0cnkuZ2V0QXR0cmlidXRlKCAncG9zaXRpb24nICk7XFxuXFxuXFx0XFx0XFx0bWF0cml4V29ybGRJbnYuZ2V0SW52ZXJzZSggdGhpcy5yb290Lm1hdHJpeFdvcmxkICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBqID0gMDsgaSA8IGJvbmVzLmxlbmd0aDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgYm9uZSA9IGJvbmVzWyBpIF07XFxuXFxuXFx0XFx0XFx0XFx0aWYgKCBib25lLnBhcmVudCAmJiBib25lLnBhcmVudC5pc0JvbmUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0XFx0Ym9uZU1hdHJpeC5tdWx0aXBseU1hdHJpY2VzKCBtYXRyaXhXb3JsZEludiwgYm9uZS5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdFxcdHZlY3Rvci5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGJvbmVNYXRyaXggKTtcXG5cXHRcXHRcXHRcXHRcXHRwb3NpdGlvbi5zZXRYWVooIGosIHZlY3Rvci54LCB2ZWN0b3IueSwgdmVjdG9yLnogKTtcXG5cXG5cXHRcXHRcXHRcXHRcXHRib25lTWF0cml4Lm11bHRpcGx5TWF0cmljZXMoIG1hdHJpeFdvcmxkSW52LCBib25lLnBhcmVudC5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdFxcdFxcdHZlY3Rvci5zZXRGcm9tTWF0cml4UG9zaXRpb24oIGJvbmVNYXRyaXggKTtcXG5cXHRcXHRcXHRcXHRcXHRwb3NpdGlvbi5zZXRYWVooIGogKyAxLCB2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci56ICk7XFxuXFxuXFx0XFx0XFx0XFx0XFx0aiArPSAyO1xcblxcblxcdFxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Z2VvbWV0cnkuZ2V0QXR0cmlidXRlKCAncG9zaXRpb24nICkubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdFxcdE9iamVjdDNELnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKCB0aGlzLCBmb3JjZSApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0fSgpO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBQb2ludExpZ2h0SGVscGVyKCBsaWdodCwgc3BoZXJlU2l6ZSwgY29sb3IgKSB7XFxuXFxuXFx0XFx0dGhpcy5saWdodCA9IGxpZ2h0O1xcblxcdFxcdHRoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtcXG5cXG5cXHRcXHR0aGlzLmNvbG9yID0gY29sb3I7XFxuXFxuXFx0XFx0dmFyIGdlb21ldHJ5ID0gbmV3IFNwaGVyZUJ1ZmZlckdlb21ldHJ5KCBzcGhlcmVTaXplLCA0LCAyICk7XFxuXFx0XFx0dmFyIG1hdGVyaWFsID0gbmV3IE1lc2hCYXNpY01hdGVyaWFsKCB7IHdpcmVmcmFtZTogdHJ1ZSwgZm9nOiBmYWxzZSB9ICk7XFxuXFxuXFx0XFx0TWVzaC5jYWxsKCB0aGlzLCBnZW9tZXRyeSwgbWF0ZXJpYWwgKTtcXG5cXG5cXHRcXHR0aGlzLm1hdHJpeCA9IHRoaXMubGlnaHQubWF0cml4V29ybGQ7XFxuXFx0XFx0dGhpcy5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy51cGRhdGUoKTtcXG5cXG5cXG5cXHRcXHQvKlxcblxcdFxcdHZhciBkaXN0YW5jZUdlb21ldHJ5ID0gbmV3IFRIUkVFLkljb3NhaGVkcm9uR2VvbWV0cnkoIDEsIDIgKTtcXG5cXHRcXHR2YXIgZGlzdGFuY2VNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCggeyBjb2xvcjogaGV4Q29sb3IsIGZvZzogZmFsc2UsIHdpcmVmcmFtZTogdHJ1ZSwgb3BhY2l0eTogMC4xLCB0cmFuc3BhcmVudDogdHJ1ZSB9ICk7XFxuXFxuXFx0XFx0dGhpcy5saWdodFNwaGVyZSA9IG5ldyBUSFJFRS5NZXNoKCBidWxiR2VvbWV0cnksIGJ1bGJNYXRlcmlhbCApO1xcblxcdFxcdHRoaXMubGlnaHREaXN0YW5jZSA9IG5ldyBUSFJFRS5NZXNoKCBkaXN0YW5jZUdlb21ldHJ5LCBkaXN0YW5jZU1hdGVyaWFsICk7XFxuXFxuXFx0XFx0dmFyIGQgPSBsaWdodC5kaXN0YW5jZTtcXG5cXG5cXHRcXHRpZiAoIGQgPT09IDAuMCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmxpZ2h0RGlzdGFuY2UudmlzaWJsZSA9IGZhbHNlO1xcblxcblxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5saWdodERpc3RhbmNlLnNjYWxlLnNldCggZCwgZCwgZCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLmFkZCggdGhpcy5saWdodERpc3RhbmNlICk7XFxuXFx0XFx0Ki9cXG5cXG5cXHR9XFxuXFxuXFx0UG9pbnRMaWdodEhlbHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBNZXNoLnByb3RvdHlwZSApO1xcblxcdFBvaW50TGlnaHRIZWxwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUG9pbnRMaWdodEhlbHBlcjtcXG5cXG5cXHRQb2ludExpZ2h0SGVscGVyLnByb3RvdHlwZS5kaXNwb3NlID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdHRoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpO1xcblxcdFxcdHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpO1xcblxcblxcdH07XFxuXFxuXFx0UG9pbnRMaWdodEhlbHBlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdGlmICggdGhpcy5jb2xvciAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdHRoaXMubWF0ZXJpYWwuY29sb3Iuc2V0KCB0aGlzLmNvbG9yICk7XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHR0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkoIHRoaXMubGlnaHQuY29sb3IgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0LypcXG5cXHRcXHR2YXIgZCA9IHRoaXMubGlnaHQuZGlzdGFuY2U7XFxuXFxuXFx0XFx0aWYgKCBkID09PSAwLjAgKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5saWdodERpc3RhbmNlLnZpc2libGUgPSBmYWxzZTtcXG5cXG5cXHRcXHR9IGVsc2Uge1xcblxcblxcdFxcdFxcdHRoaXMubGlnaHREaXN0YW5jZS52aXNpYmxlID0gdHJ1ZTtcXG5cXHRcXHRcXHR0aGlzLmxpZ2h0RGlzdGFuY2Uuc2NhbGUuc2V0KCBkLCBkLCBkICk7XFxuXFxuXFx0XFx0fVxcblxcdFxcdCovXFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFiZWxuYXRpb24gLyBodHRwOi8vZ2l0aHViLmNvbS9hYmVsbmF0aW9uXFxuXFx0ICogQGF1dGhvciBNdWdlbjg3IC8gaHR0cDovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIFJlY3RBcmVhTGlnaHRIZWxwZXIoIGxpZ2h0LCBjb2xvciApIHtcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0dGhpcy5saWdodCA9IGxpZ2h0O1xcblxcdFxcdHRoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtcXG5cXG5cXHRcXHR0aGlzLm1hdHJpeCA9IGxpZ2h0Lm1hdHJpeFdvcmxkO1xcblxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMuY29sb3IgPSBjb2xvcjtcXG5cXG5cXHRcXHR2YXIgbWF0ZXJpYWwgPSBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgZm9nOiBmYWxzZSB9ICk7XFxuXFxuXFx0XFx0dmFyIGdlb21ldHJ5ID0gbmV3IEJ1ZmZlckdlb21ldHJ5KCk7XFxuXFxuXFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgQnVmZmVyQXR0cmlidXRlKCBuZXcgRmxvYXQzMkFycmF5KCA1ICogMyApLCAzICkgKTtcXG5cXG5cXHRcXHR0aGlzLmxpbmUgPSBuZXcgTGluZSggZ2VvbWV0cnksIG1hdGVyaWFsICk7XFxuXFx0XFx0dGhpcy5hZGQoIHRoaXMubGluZSApO1xcblxcblxcblxcdFxcdHRoaXMudXBkYXRlKCk7XFxuXFxuXFx0fVxcblxcblxcdFJlY3RBcmVhTGlnaHRIZWxwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggT2JqZWN0M0QucHJvdG90eXBlICk7XFxuXFx0UmVjdEFyZWFMaWdodEhlbHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBSZWN0QXJlYUxpZ2h0SGVscGVyO1xcblxcblxcdFJlY3RBcmVhTGlnaHRIZWxwZXIucHJvdG90eXBlLmRpc3Bvc2UgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dGhpcy5jaGlsZHJlblsgMCBdLmdlb21ldHJ5LmRpc3Bvc2UoKTtcXG5cXHRcXHR0aGlzLmNoaWxkcmVuWyAwIF0ubWF0ZXJpYWwuZGlzcG9zZSgpO1xcblxcblxcdH07XFxuXFxuXFx0UmVjdEFyZWFMaWdodEhlbHBlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdC8vIGNhbGN1bGF0ZSBuZXcgZGltZW5zaW9ucyBvZiB0aGUgaGVscGVyXFxuXFxuXFx0XFx0dmFyIGh4ID0gdGhpcy5saWdodC53aWR0aCAqIDAuNTtcXG5cXHRcXHR2YXIgaHkgPSB0aGlzLmxpZ2h0LmhlaWdodCAqIDAuNTtcXG5cXG5cXHRcXHR2YXIgcG9zaXRpb24gPSB0aGlzLmxpbmUuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXHRcXHR2YXIgYXJyYXkgPSBwb3NpdGlvbi5hcnJheTtcXG5cXG5cXHRcXHQvLyB1cGRhdGUgdmVydGljZXNcXG5cXG5cXHRcXHRhcnJheVsgMCBdID0gaHg7IGFycmF5WyAxIF0gPSAtIGh5OyBhcnJheVsgMiBdID0gMDtcXG5cXHRcXHRhcnJheVsgMyBdID0gaHg7IGFycmF5WyA0IF0gPSBoeTsgYXJyYXlbIDUgXSA9IDA7XFxuXFx0XFx0YXJyYXlbIDYgXSA9IC0gaHg7IGFycmF5WyA3IF0gPSBoeTsgYXJyYXlbIDggXSA9IDA7XFxuXFx0XFx0YXJyYXlbIDkgXSA9IC0gaHg7IGFycmF5WyAxMCBdID0gLSBoeTsgYXJyYXlbIDExIF0gPSAwO1xcblxcdFxcdGFycmF5WyAxMiBdID0gaHg7IGFycmF5WyAxMyBdID0gLSBoeTsgYXJyYXlbIDE0IF0gPSAwO1xcblxcblxcdFxcdHBvc2l0aW9uLm5lZWRzVXBkYXRlID0gdHJ1ZTtcXG5cXG5cXHRcXHRpZiAoIHRoaXMuY29sb3IgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KCB0aGlzLmNvbG9yICk7XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHR0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3IuY29weSggdGhpcy5saWdodC5jb2xvciApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgYWx0ZXJlZHEgLyBodHRwOi8vYWx0ZXJlZHF1YWxpYS5jb20vXFxuXFx0ICogQGF1dGhvciBtcmRvb2IgLyBodHRwOi8vbXJkb29iLmNvbS9cXG5cXHQgKiBAYXV0aG9yIE11Z2VuODcgLyBodHRwczovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEhlbWlzcGhlcmVMaWdodEhlbHBlciggbGlnaHQsIHNpemUsIGNvbG9yICkge1xcblxcblxcdFxcdE9iamVjdDNELmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLmxpZ2h0ID0gbGlnaHQ7XFxuXFx0XFx0dGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpO1xcblxcblxcdFxcdHRoaXMubWF0cml4ID0gbGlnaHQubWF0cml4V29ybGQ7XFxuXFx0XFx0dGhpcy5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5jb2xvciA9IGNvbG9yO1xcblxcblxcdFxcdHZhciBnZW9tZXRyeSA9IG5ldyBPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnkoIHNpemUgKTtcXG5cXHRcXHRnZW9tZXRyeS5yb3RhdGVZKCBNYXRoLlBJICogMC41ICk7XFxuXFxuXFx0XFx0dGhpcy5tYXRlcmlhbCA9IG5ldyBNZXNoQmFzaWNNYXRlcmlhbCggeyB3aXJlZnJhbWU6IHRydWUsIGZvZzogZmFsc2UgfSApO1xcblxcdFxcdGlmICggdGhpcy5jb2xvciA9PT0gdW5kZWZpbmVkICkgdGhpcy5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnMgPSBWZXJ0ZXhDb2xvcnM7XFxuXFxuXFx0XFx0dmFyIHBvc2l0aW9uID0gZ2VvbWV0cnkuZ2V0QXR0cmlidXRlKCAncG9zaXRpb24nICk7XFxuXFx0XFx0dmFyIGNvbG9ycyA9IG5ldyBGbG9hdDMyQXJyYXkoIHBvc2l0aW9uLmNvdW50ICogMyApO1xcblxcblxcdFxcdGdlb21ldHJ5LmFkZEF0dHJpYnV0ZSggJ2NvbG9yJywgbmV3IEJ1ZmZlckF0dHJpYnV0ZSggY29sb3JzLCAzICkgKTtcXG5cXG5cXHRcXHR0aGlzLmFkZCggbmV3IE1lc2goIGdlb21ldHJ5LCB0aGlzLm1hdGVyaWFsICkgKTtcXG5cXG5cXHRcXHR0aGlzLnVwZGF0ZSgpO1xcblxcblxcdH1cXG5cXG5cXHRIZW1pc3BoZXJlTGlnaHRIZWxwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggT2JqZWN0M0QucHJvdG90eXBlICk7XFxuXFx0SGVtaXNwaGVyZUxpZ2h0SGVscGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEhlbWlzcGhlcmVMaWdodEhlbHBlcjtcXG5cXG5cXHRIZW1pc3BoZXJlTGlnaHRIZWxwZXIucHJvdG90eXBlLmRpc3Bvc2UgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dGhpcy5jaGlsZHJlblsgMCBdLmdlb21ldHJ5LmRpc3Bvc2UoKTtcXG5cXHRcXHR0aGlzLmNoaWxkcmVuWyAwIF0ubWF0ZXJpYWwuZGlzcG9zZSgpO1xcblxcblxcdH07XFxuXFxuXFx0SGVtaXNwaGVyZUxpZ2h0SGVscGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIHZlY3RvciA9IG5ldyBWZWN0b3IzKCk7XFxuXFxuXFx0XFx0dmFyIGNvbG9yMSA9IG5ldyBDb2xvcigpO1xcblxcdFxcdHZhciBjb2xvcjIgPSBuZXcgQ29sb3IoKTtcXG5cXG5cXHRcXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlKCkge1xcblxcblxcdFxcdFxcdHZhciBtZXNoID0gdGhpcy5jaGlsZHJlblsgMCBdO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5jb2xvciAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMubWF0ZXJpYWwuY29sb3Iuc2V0KCB0aGlzLmNvbG9yICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgY29sb3JzID0gbWVzaC5nZW9tZXRyeS5nZXRBdHRyaWJ1dGUoICdjb2xvcicgKTtcXG5cXG5cXHRcXHRcXHRcXHRjb2xvcjEuY29weSggdGhpcy5saWdodC5jb2xvciApO1xcblxcdFxcdFxcdFxcdGNvbG9yMi5jb3B5KCB0aGlzLmxpZ2h0Lmdyb3VuZENvbG9yICk7XFxuXFxuXFx0XFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gY29sb3JzLmNvdW50OyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHR2YXIgY29sb3IgPSAoIGkgPCAoIGwgLyAyICkgKSA/IGNvbG9yMSA6IGNvbG9yMjtcXG5cXG5cXHRcXHRcXHRcXHRcXHRjb2xvcnMuc2V0WFlaKCBpLCBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdFxcdGNvbG9ycy5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdG1lc2gubG9va0F0KCB2ZWN0b3Iuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCB0aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkICkubmVnYXRlKCkgKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdH0oKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEdyaWRIZWxwZXIoIHNpemUsIGRpdmlzaW9ucywgY29sb3IxLCBjb2xvcjIgKSB7XFxuXFxuXFx0XFx0c2l6ZSA9IHNpemUgfHwgMTA7XFxuXFx0XFx0ZGl2aXNpb25zID0gZGl2aXNpb25zIHx8IDEwO1xcblxcdFxcdGNvbG9yMSA9IG5ldyBDb2xvciggY29sb3IxICE9PSB1bmRlZmluZWQgPyBjb2xvcjEgOiAweDQ0NDQ0NCApO1xcblxcdFxcdGNvbG9yMiA9IG5ldyBDb2xvciggY29sb3IyICE9PSB1bmRlZmluZWQgPyBjb2xvcjIgOiAweDg4ODg4OCApO1xcblxcblxcdFxcdHZhciBjZW50ZXIgPSBkaXZpc2lvbnMgLyAyO1xcblxcdFxcdHZhciBzdGVwID0gc2l6ZSAvIGRpdmlzaW9ucztcXG5cXHRcXHR2YXIgaGFsZlNpemUgPSBzaXplIC8gMjtcXG5cXG5cXHRcXHR2YXIgdmVydGljZXMgPSBbXSwgY29sb3JzID0gW107XFxuXFxuXFx0XFx0Zm9yICggdmFyIGkgPSAwLCBqID0gMCwgayA9IC0gaGFsZlNpemU7IGkgPD0gZGl2aXNpb25zOyBpICsrLCBrICs9IHN0ZXAgKSB7XFxuXFxuXFx0XFx0XFx0dmVydGljZXMucHVzaCggLSBoYWxmU2l6ZSwgMCwgaywgaGFsZlNpemUsIDAsIGsgKTtcXG5cXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCBrLCAwLCAtIGhhbGZTaXplLCBrLCAwLCBoYWxmU2l6ZSApO1xcblxcblxcdFxcdFxcdHZhciBjb2xvciA9IGkgPT09IGNlbnRlciA/IGNvbG9yMSA6IGNvbG9yMjtcXG5cXG5cXHRcXHRcXHRjb2xvci50b0FycmF5KCBjb2xvcnMsIGogKTsgaiArPSAzO1xcblxcdFxcdFxcdGNvbG9yLnRvQXJyYXkoIGNvbG9ycywgaiApOyBqICs9IDM7XFxuXFx0XFx0XFx0Y29sb3IudG9BcnJheSggY29sb3JzLCBqICk7IGogKz0gMztcXG5cXHRcXHRcXHRjb2xvci50b0FycmF5KCBjb2xvcnMsIGogKTsgaiArPSAzO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB2ZXJ0aWNlcywgMyApICk7XFxuXFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAnY29sb3InLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggY29sb3JzLCAzICkgKTtcXG5cXG5cXHRcXHR2YXIgbWF0ZXJpYWwgPSBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgdmVydGV4Q29sb3JzOiBWZXJ0ZXhDb2xvcnMgfSApO1xcblxcblxcdFxcdExpbmVTZWdtZW50cy5jYWxsKCB0aGlzLCBnZW9tZXRyeSwgbWF0ZXJpYWwgKTtcXG5cXG5cXHR9XFxuXFxuXFx0R3JpZEhlbHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBMaW5lU2VnbWVudHMucHJvdG90eXBlICk7XFxuXFx0R3JpZEhlbHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBHcmlkSGVscGVyO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBNdWdlbjg3IC8gaHR0cDovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqIEBhdXRob3IgSGVjdGF0ZSAvIGh0dHA6Ly93d3cuZ2l0aHViLmNvbS9IZWN0YXRlXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gUG9sYXJHcmlkSGVscGVyKCByYWRpdXMsIHJhZGlhbHMsIGNpcmNsZXMsIGRpdmlzaW9ucywgY29sb3IxLCBjb2xvcjIgKSB7XFxuXFxuXFx0XFx0cmFkaXVzID0gcmFkaXVzIHx8IDEwO1xcblxcdFxcdHJhZGlhbHMgPSByYWRpYWxzIHx8IDE2O1xcblxcdFxcdGNpcmNsZXMgPSBjaXJjbGVzIHx8IDg7XFxuXFx0XFx0ZGl2aXNpb25zID0gZGl2aXNpb25zIHx8IDY0O1xcblxcdFxcdGNvbG9yMSA9IG5ldyBDb2xvciggY29sb3IxICE9PSB1bmRlZmluZWQgPyBjb2xvcjEgOiAweDQ0NDQ0NCApO1xcblxcdFxcdGNvbG9yMiA9IG5ldyBDb2xvciggY29sb3IyICE9PSB1bmRlZmluZWQgPyBjb2xvcjIgOiAweDg4ODg4OCApO1xcblxcblxcdFxcdHZhciB2ZXJ0aWNlcyA9IFtdO1xcblxcdFxcdHZhciBjb2xvcnMgPSBbXTtcXG5cXG5cXHRcXHR2YXIgeCwgejtcXG5cXHRcXHR2YXIgdiwgaSwgaiwgciwgY29sb3I7XFxuXFxuXFx0XFx0Ly8gY3JlYXRlIHRoZSByYWRpYWxzXFxuXFxuXFx0XFx0Zm9yICggaSA9IDA7IGkgPD0gcmFkaWFsczsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHR2ID0gKCBpIC8gcmFkaWFscyApICogKCBNYXRoLlBJICogMiApO1xcblxcblxcdFxcdFxcdHggPSBNYXRoLnNpbiggdiApICogcmFkaXVzO1xcblxcdFxcdFxcdHogPSBNYXRoLmNvcyggdiApICogcmFkaXVzO1xcblxcblxcdFxcdFxcdHZlcnRpY2VzLnB1c2goIDAsIDAsIDAgKTtcXG5cXHRcXHRcXHR2ZXJ0aWNlcy5wdXNoKCB4LCAwLCB6ICk7XFxuXFxuXFx0XFx0XFx0Y29sb3IgPSAoIGkgJiAxICkgPyBjb2xvcjEgOiBjb2xvcjI7XFxuXFxuXFx0XFx0XFx0Y29sb3JzLnB1c2goIGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIgKTtcXG5cXHRcXHRcXHRjb2xvcnMucHVzaCggY29sb3IuciwgY29sb3IuZywgY29sb3IuYiApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHQvLyBjcmVhdGUgdGhlIGNpcmNsZXNcXG5cXG5cXHRcXHRmb3IgKCBpID0gMDsgaSA8PSBjaXJjbGVzOyBpICsrICkge1xcblxcblxcdFxcdFxcdGNvbG9yID0gKCBpICYgMSApID8gY29sb3IxIDogY29sb3IyO1xcblxcblxcdFxcdFxcdHIgPSByYWRpdXMgLSAoIHJhZGl1cyAvIGNpcmNsZXMgKiBpICk7XFxuXFxuXFx0XFx0XFx0Zm9yICggaiA9IDA7IGogPCBkaXZpc2lvbnM7IGogKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gZmlyc3QgdmVydGV4XFxuXFxuXFx0XFx0XFx0XFx0diA9ICggaiAvIGRpdmlzaW9ucyApICogKCBNYXRoLlBJICogMiApO1xcblxcblxcdFxcdFxcdFxcdHggPSBNYXRoLnNpbiggdiApICogcjtcXG5cXHRcXHRcXHRcXHR6ID0gTWF0aC5jb3MoIHYgKSAqIHI7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggeCwgMCwgeiApO1xcblxcdFxcdFxcdFxcdGNvbG9ycy5wdXNoKCBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iICk7XFxuXFxuXFx0XFx0XFx0XFx0Ly8gc2Vjb25kIHZlcnRleFxcblxcblxcdFxcdFxcdFxcdHYgPSAoICggaiArIDEgKSAvIGRpdmlzaW9ucyApICogKCBNYXRoLlBJICogMiApO1xcblxcblxcdFxcdFxcdFxcdHggPSBNYXRoLnNpbiggdiApICogcjtcXG5cXHRcXHRcXHRcXHR6ID0gTWF0aC5jb3MoIHYgKSAqIHI7XFxuXFxuXFx0XFx0XFx0XFx0dmVydGljZXMucHVzaCggeCwgMCwgeiApO1xcblxcdFxcdFxcdFxcdGNvbG9ycy5wdXNoKCBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB2ZXJ0aWNlcywgMyApICk7XFxuXFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAnY29sb3InLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggY29sb3JzLCAzICkgKTtcXG5cXG5cXHRcXHR2YXIgbWF0ZXJpYWwgPSBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgdmVydGV4Q29sb3JzOiBWZXJ0ZXhDb2xvcnMgfSApO1xcblxcblxcdFxcdExpbmVTZWdtZW50cy5jYWxsKCB0aGlzLCBnZW9tZXRyeSwgbWF0ZXJpYWwgKTtcXG5cXG5cXHR9XFxuXFxuXFx0UG9sYXJHcmlkSGVscGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIExpbmVTZWdtZW50cy5wcm90b3R5cGUgKTtcXG5cXHRQb2xhckdyaWRIZWxwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUG9sYXJHcmlkSGVscGVyO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gRmFjZU5vcm1hbHNIZWxwZXIoIG9iamVjdCwgc2l6ZSwgaGV4LCBsaW5ld2lkdGggKSB7XFxuXFxuXFx0XFx0Ly8gRmFjZU5vcm1hbHNIZWxwZXIgb25seSBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeVxcblxcblxcdFxcdHRoaXMub2JqZWN0ID0gb2JqZWN0O1xcblxcblxcdFxcdHRoaXMuc2l6ZSA9ICggc2l6ZSAhPT0gdW5kZWZpbmVkICkgPyBzaXplIDogMTtcXG5cXG5cXHRcXHR2YXIgY29sb3IgPSAoIGhleCAhPT0gdW5kZWZpbmVkICkgPyBoZXggOiAweGZmZmYwMDtcXG5cXG5cXHRcXHR2YXIgd2lkdGggPSAoIGxpbmV3aWR0aCAhPT0gdW5kZWZpbmVkICkgPyBsaW5ld2lkdGggOiAxO1xcblxcblxcdFxcdC8vXFxuXFxuXFx0XFx0dmFyIG5Ob3JtYWxzID0gMDtcXG5cXG5cXHRcXHR2YXIgb2JqR2VvbWV0cnkgPSB0aGlzLm9iamVjdC5nZW9tZXRyeTtcXG5cXG5cXHRcXHRpZiAoIG9iakdlb21ldHJ5ICYmIG9iakdlb21ldHJ5LmlzR2VvbWV0cnkgKSB7XFxuXFxuXFx0XFx0XFx0bk5vcm1hbHMgPSBvYmpHZW9tZXRyeS5mYWNlcy5sZW5ndGg7XFxuXFxuXFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5GYWNlTm9ybWFsc0hlbHBlcjogb25seSBUSFJFRS5HZW9tZXRyeSBpcyBzdXBwb3J0ZWQuIFVzZSBUSFJFRS5WZXJ0ZXhOb3JtYWxzSGVscGVyLCBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXG5cXHRcXHR2YXIgcG9zaXRpb25zID0gbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIG5Ob3JtYWxzICogMiAqIDMsIDMgKTtcXG5cXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIHBvc2l0aW9ucyApO1xcblxcblxcdFxcdExpbmVTZWdtZW50cy5jYWxsKCB0aGlzLCBnZW9tZXRyeSwgbmV3IExpbmVCYXNpY01hdGVyaWFsKCB7IGNvbG9yOiBjb2xvciwgbGluZXdpZHRoOiB3aWR0aCB9ICkgKTtcXG5cXG5cXHRcXHQvL1xcblxcblxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMudXBkYXRlKCk7XFxuXFxuXFx0fVxcblxcblxcdEZhY2VOb3JtYWxzSGVscGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIExpbmVTZWdtZW50cy5wcm90b3R5cGUgKTtcXG5cXHRGYWNlTm9ybWFsc0hlbHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBGYWNlTm9ybWFsc0hlbHBlcjtcXG5cXG5cXHRGYWNlTm9ybWFsc0hlbHBlci5wcm90b3R5cGUudXBkYXRlID0gKCBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIHYxID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgdjIgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciBub3JtYWxNYXRyaXggPSBuZXcgTWF0cml4MygpO1xcblxcblxcdFxcdHJldHVybiBmdW5jdGlvbiB1cGRhdGUoKSB7XFxuXFxuXFx0XFx0XFx0dGhpcy5vYmplY3QudXBkYXRlTWF0cml4V29ybGQoIHRydWUgKTtcXG5cXG5cXHRcXHRcXHRub3JtYWxNYXRyaXguZ2V0Tm9ybWFsTWF0cml4KCB0aGlzLm9iamVjdC5tYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdHZhciBtYXRyaXhXb3JsZCA9IHRoaXMub2JqZWN0Lm1hdHJpeFdvcmxkO1xcblxcblxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IHRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXG5cXHRcXHRcXHQvL1xcblxcblxcdFxcdFxcdHZhciBvYmpHZW9tZXRyeSA9IHRoaXMub2JqZWN0Lmdlb21ldHJ5O1xcblxcblxcdFxcdFxcdHZhciB2ZXJ0aWNlcyA9IG9iakdlb21ldHJ5LnZlcnRpY2VzO1xcblxcblxcdFxcdFxcdHZhciBmYWNlcyA9IG9iakdlb21ldHJ5LmZhY2VzO1xcblxcblxcdFxcdFxcdHZhciBpZHggPSAwO1xcblxcblxcdFxcdFxcdGZvciAoIHZhciBpID0gMCwgbCA9IGZhY2VzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIGZhY2UgPSBmYWNlc1sgaSBdO1xcblxcblxcdFxcdFxcdFxcdHZhciBub3JtYWwgPSBmYWNlLm5vcm1hbDtcXG5cXG5cXHRcXHRcXHRcXHR2MS5jb3B5KCB2ZXJ0aWNlc1sgZmFjZS5hIF0gKVxcblxcdFxcdFxcdFxcdFxcdC5hZGQoIHZlcnRpY2VzWyBmYWNlLmIgXSApXFxuXFx0XFx0XFx0XFx0XFx0LmFkZCggdmVydGljZXNbIGZhY2UuYyBdIClcXG5cXHRcXHRcXHRcXHRcXHQuZGl2aWRlU2NhbGFyKCAzIClcXG5cXHRcXHRcXHRcXHRcXHQuYXBwbHlNYXRyaXg0KCBtYXRyaXhXb3JsZCApO1xcblxcblxcdFxcdFxcdFxcdHYyLmNvcHkoIG5vcm1hbCApLmFwcGx5TWF0cml4Myggbm9ybWFsTWF0cml4ICkubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoIHRoaXMuc2l6ZSApLmFkZCggdjEgKTtcXG5cXG5cXHRcXHRcXHRcXHRwb3NpdGlvbi5zZXRYWVooIGlkeCwgdjEueCwgdjEueSwgdjEueiApO1xcblxcblxcdFxcdFxcdFxcdGlkeCA9IGlkeCArIDE7XFxuXFxuXFx0XFx0XFx0XFx0cG9zaXRpb24uc2V0WFlaKCBpZHgsIHYyLngsIHYyLnksIHYyLnogKTtcXG5cXG5cXHRcXHRcXHRcXHRpZHggPSBpZHggKyAxO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRwb3NpdGlvbi5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0fTtcXG5cXG5cXHR9KCkgKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBXZXN0TGFuZ2xleSAvIGh0dHA6Ly9naXRodWIuY29tL1dlc3RMYW5nbGV5XFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gRGlyZWN0aW9uYWxMaWdodEhlbHBlciggbGlnaHQsIHNpemUsIGNvbG9yICkge1xcblxcblxcdFxcdE9iamVjdDNELmNhbGwoIHRoaXMgKTtcXG5cXG5cXHRcXHR0aGlzLmxpZ2h0ID0gbGlnaHQ7XFxuXFx0XFx0dGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpO1xcblxcblxcdFxcdHRoaXMubWF0cml4ID0gbGlnaHQubWF0cml4V29ybGQ7XFxuXFx0XFx0dGhpcy5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7XFxuXFxuXFx0XFx0dGhpcy5jb2xvciA9IGNvbG9yO1xcblxcblxcdFxcdGlmICggc2l6ZSA9PT0gdW5kZWZpbmVkICkgc2l6ZSA9IDE7XFxuXFxuXFx0XFx0dmFyIGdlb21ldHJ5ID0gbmV3IEJ1ZmZlckdlb21ldHJ5KCk7XFxuXFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggW1xcblxcdFxcdFxcdC0gc2l6ZSwgc2l6ZSwgMCxcXG5cXHRcXHRcXHRzaXplLCBzaXplLCAwLFxcblxcdFxcdFxcdHNpemUsIC0gc2l6ZSwgMCxcXG5cXHRcXHRcXHQtIHNpemUsIC0gc2l6ZSwgMCxcXG5cXHRcXHRcXHQtIHNpemUsIHNpemUsIDBcXG5cXHRcXHRdLCAzICkgKTtcXG5cXG5cXHRcXHR2YXIgbWF0ZXJpYWwgPSBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgZm9nOiBmYWxzZSB9ICk7XFxuXFxuXFx0XFx0dGhpcy5saWdodFBsYW5lID0gbmV3IExpbmUoIGdlb21ldHJ5LCBtYXRlcmlhbCApO1xcblxcdFxcdHRoaXMuYWRkKCB0aGlzLmxpZ2h0UGxhbmUgKTtcXG5cXG5cXHRcXHRnZW9tZXRyeSA9IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcdFxcdGdlb21ldHJ5LmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIFsgMCwgMCwgMCwgMCwgMCwgMSBdLCAzICkgKTtcXG5cXG5cXHRcXHR0aGlzLnRhcmdldExpbmUgPSBuZXcgTGluZSggZ2VvbWV0cnksIG1hdGVyaWFsICk7XFxuXFx0XFx0dGhpcy5hZGQoIHRoaXMudGFyZ2V0TGluZSApO1xcblxcblxcdFxcdHRoaXMudXBkYXRlKCk7XFxuXFxuXFx0fVxcblxcblxcdERpcmVjdGlvbmFsTGlnaHRIZWxwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggT2JqZWN0M0QucHJvdG90eXBlICk7XFxuXFx0RGlyZWN0aW9uYWxMaWdodEhlbHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEaXJlY3Rpb25hbExpZ2h0SGVscGVyO1xcblxcblxcdERpcmVjdGlvbmFsTGlnaHRIZWxwZXIucHJvdG90eXBlLmRpc3Bvc2UgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dGhpcy5saWdodFBsYW5lLmdlb21ldHJ5LmRpc3Bvc2UoKTtcXG5cXHRcXHR0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuZGlzcG9zZSgpO1xcblxcdFxcdHRoaXMudGFyZ2V0TGluZS5nZW9tZXRyeS5kaXNwb3NlKCk7XFxuXFx0XFx0dGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmRpc3Bvc2UoKTtcXG5cXG5cXHR9O1xcblxcblxcdERpcmVjdGlvbmFsTGlnaHRIZWxwZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgdjEgPSBuZXcgVmVjdG9yMygpO1xcblxcdFxcdHZhciB2MiA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIHYzID0gbmV3IFZlY3RvcjMoKTtcXG5cXG5cXHRcXHRyZXR1cm4gZnVuY3Rpb24gdXBkYXRlKCkge1xcblxcblxcdFxcdFxcdHYxLnNldEZyb21NYXRyaXhQb3NpdGlvbiggdGhpcy5saWdodC5tYXRyaXhXb3JsZCApO1xcblxcdFxcdFxcdHYyLnNldEZyb21NYXRyaXhQb3NpdGlvbiggdGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQgKTtcXG5cXHRcXHRcXHR2My5zdWJWZWN0b3JzKCB2MiwgdjEgKTtcXG5cXG5cXHRcXHRcXHR0aGlzLmxpZ2h0UGxhbmUubG9va0F0KCB2MyApO1xcblxcblxcdFxcdFxcdGlmICggdGhpcy5jb2xvciAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHRoaXMubGlnaHRQbGFuZS5tYXRlcmlhbC5jb2xvci5zZXQoIHRoaXMuY29sb3IgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KCB0aGlzLmNvbG9yICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3IuY29weSggdGhpcy5saWdodC5jb2xvciApO1xcblxcdFxcdFxcdFxcdHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5jb2xvci5jb3B5KCB0aGlzLmxpZ2h0LmNvbG9yICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHRoaXMudGFyZ2V0TGluZS5sb29rQXQoIHYzICk7XFxuXFx0XFx0XFx0dGhpcy50YXJnZXRMaW5lLnNjYWxlLnogPSB2My5sZW5ndGgoKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdH0oKTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIGFsdGVyZWRxIC8gaHR0cDovL2FsdGVyZWRxdWFsaWEuY29tL1xcblxcdCAqIEBhdXRob3IgTXVnZW44NyAvIGh0dHBzOi8vZ2l0aHViLmNvbS9NdWdlbjg3XFxuXFx0ICpcXG5cXHQgKlxcdC0gc2hvd3MgZnJ1c3R1bSwgbGluZSBvZiBzaWdodCBhbmQgdXAgb2YgdGhlIGNhbWVyYVxcblxcdCAqXFx0LSBzdWl0YWJsZSBmb3IgZmFzdCB1cGRhdGVzXFxuXFx0ICogXFx0LSBiYXNlZCBvbiBmcnVzdHVtIHZpc3VhbGl6YXRpb24gaW4gbGlnaHRnbC5qcyBzaGFkb3dtYXAgZXhhbXBsZVxcblxcdCAqXFx0XFx0aHR0cDovL2V2YW53LmdpdGh1Yi5jb20vbGlnaHRnbC5qcy90ZXN0cy9zaGFkb3dtYXAuaHRtbFxcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIENhbWVyYUhlbHBlciggY2FtZXJhICkge1xcblxcblxcdFxcdHZhciBnZW9tZXRyeSA9IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcdFxcdHZhciBtYXRlcmlhbCA9IG5ldyBMaW5lQmFzaWNNYXRlcmlhbCggeyBjb2xvcjogMHhmZmZmZmYsIHZlcnRleENvbG9yczogRmFjZUNvbG9ycyB9ICk7XFxuXFxuXFx0XFx0dmFyIHZlcnRpY2VzID0gW107XFxuXFx0XFx0dmFyIGNvbG9ycyA9IFtdO1xcblxcblxcdFxcdHZhciBwb2ludE1hcCA9IHt9O1xcblxcblxcdFxcdC8vIGNvbG9yc1xcblxcblxcdFxcdHZhciBjb2xvckZydXN0dW0gPSBuZXcgQ29sb3IoIDB4ZmZhYTAwICk7XFxuXFx0XFx0dmFyIGNvbG9yQ29uZSA9IG5ldyBDb2xvciggMHhmZjAwMDAgKTtcXG5cXHRcXHR2YXIgY29sb3JVcCA9IG5ldyBDb2xvciggMHgwMGFhZmYgKTtcXG5cXHRcXHR2YXIgY29sb3JUYXJnZXQgPSBuZXcgQ29sb3IoIDB4ZmZmZmZmICk7XFxuXFx0XFx0dmFyIGNvbG9yQ3Jvc3MgPSBuZXcgQ29sb3IoIDB4MzMzMzMzICk7XFxuXFxuXFx0XFx0Ly8gbmVhclxcblxcblxcdFxcdGFkZExpbmUoICduMScsICduMicsIGNvbG9yRnJ1c3R1bSApO1xcblxcdFxcdGFkZExpbmUoICduMicsICduNCcsIGNvbG9yRnJ1c3R1bSApO1xcblxcdFxcdGFkZExpbmUoICduNCcsICduMycsIGNvbG9yRnJ1c3R1bSApO1xcblxcdFxcdGFkZExpbmUoICduMycsICduMScsIGNvbG9yRnJ1c3R1bSApO1xcblxcblxcdFxcdC8vIGZhclxcblxcblxcdFxcdGFkZExpbmUoICdmMScsICdmMicsIGNvbG9yRnJ1c3R1bSApO1xcblxcdFxcdGFkZExpbmUoICdmMicsICdmNCcsIGNvbG9yRnJ1c3R1bSApO1xcblxcdFxcdGFkZExpbmUoICdmNCcsICdmMycsIGNvbG9yRnJ1c3R1bSApO1xcblxcdFxcdGFkZExpbmUoICdmMycsICdmMScsIGNvbG9yRnJ1c3R1bSApO1xcblxcblxcdFxcdC8vIHNpZGVzXFxuXFxuXFx0XFx0YWRkTGluZSggJ24xJywgJ2YxJywgY29sb3JGcnVzdHVtICk7XFxuXFx0XFx0YWRkTGluZSggJ24yJywgJ2YyJywgY29sb3JGcnVzdHVtICk7XFxuXFx0XFx0YWRkTGluZSggJ24zJywgJ2YzJywgY29sb3JGcnVzdHVtICk7XFxuXFx0XFx0YWRkTGluZSggJ240JywgJ2Y0JywgY29sb3JGcnVzdHVtICk7XFxuXFxuXFx0XFx0Ly8gY29uZVxcblxcblxcdFxcdGFkZExpbmUoICdwJywgJ24xJywgY29sb3JDb25lICk7XFxuXFx0XFx0YWRkTGluZSggJ3AnLCAnbjInLCBjb2xvckNvbmUgKTtcXG5cXHRcXHRhZGRMaW5lKCAncCcsICduMycsIGNvbG9yQ29uZSApO1xcblxcdFxcdGFkZExpbmUoICdwJywgJ240JywgY29sb3JDb25lICk7XFxuXFxuXFx0XFx0Ly8gdXBcXG5cXG5cXHRcXHRhZGRMaW5lKCAndTEnLCAndTInLCBjb2xvclVwICk7XFxuXFx0XFx0YWRkTGluZSggJ3UyJywgJ3UzJywgY29sb3JVcCApO1xcblxcdFxcdGFkZExpbmUoICd1MycsICd1MScsIGNvbG9yVXAgKTtcXG5cXG5cXHRcXHQvLyB0YXJnZXRcXG5cXG5cXHRcXHRhZGRMaW5lKCAnYycsICd0JywgY29sb3JUYXJnZXQgKTtcXG5cXHRcXHRhZGRMaW5lKCAncCcsICdjJywgY29sb3JDcm9zcyApO1xcblxcblxcdFxcdC8vIGNyb3NzXFxuXFxuXFx0XFx0YWRkTGluZSggJ2NuMScsICdjbjInLCBjb2xvckNyb3NzICk7XFxuXFx0XFx0YWRkTGluZSggJ2NuMycsICdjbjQnLCBjb2xvckNyb3NzICk7XFxuXFxuXFx0XFx0YWRkTGluZSggJ2NmMScsICdjZjInLCBjb2xvckNyb3NzICk7XFxuXFx0XFx0YWRkTGluZSggJ2NmMycsICdjZjQnLCBjb2xvckNyb3NzICk7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gYWRkTGluZSggYSwgYiwgY29sb3IgKSB7XFxuXFxuXFx0XFx0XFx0YWRkUG9pbnQoIGEsIGNvbG9yICk7XFxuXFx0XFx0XFx0YWRkUG9pbnQoIGIsIGNvbG9yICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdFxcdGZ1bmN0aW9uIGFkZFBvaW50KCBpZCwgY29sb3IgKSB7XFxuXFxuXFx0XFx0XFx0dmVydGljZXMucHVzaCggMCwgMCwgMCApO1xcblxcdFxcdFxcdGNvbG9ycy5wdXNoKCBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBwb2ludE1hcFsgaWQgXSA9PT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdHBvaW50TWFwWyBpZCBdID0gW107XFxuXFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdHBvaW50TWFwWyBpZCBdLnB1c2goICggdmVydGljZXMubGVuZ3RoIC8gMyApIC0gMSApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCB2ZXJ0aWNlcywgMyApICk7XFxuXFx0XFx0Z2VvbWV0cnkuYWRkQXR0cmlidXRlKCAnY29sb3InLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggY29sb3JzLCAzICkgKTtcXG5cXG5cXHRcXHRMaW5lU2VnbWVudHMuY2FsbCggdGhpcywgZ2VvbWV0cnksIG1hdGVyaWFsICk7XFxuXFxuXFx0XFx0dGhpcy5jYW1lcmEgPSBjYW1lcmE7XFxuXFx0XFx0aWYgKCB0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4ICkgdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xcblxcblxcdFxcdHRoaXMubWF0cml4ID0gY2FtZXJhLm1hdHJpeFdvcmxkO1xcblxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMucG9pbnRNYXAgPSBwb2ludE1hcDtcXG5cXG5cXHRcXHR0aGlzLnVwZGF0ZSgpO1xcblxcblxcdH1cXG5cXG5cXHRDYW1lcmFIZWxwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggTGluZVNlZ21lbnRzLnByb3RvdHlwZSApO1xcblxcdENhbWVyYUhlbHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDYW1lcmFIZWxwZXI7XFxuXFxuXFx0Q2FtZXJhSGVscGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0dmFyIGdlb21ldHJ5LCBwb2ludE1hcDtcXG5cXG5cXHRcXHR2YXIgdmVjdG9yID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHR2YXIgY2FtZXJhID0gbmV3IENhbWVyYSgpO1xcblxcblxcdFxcdGZ1bmN0aW9uIHNldFBvaW50KCBwb2ludCwgeCwgeSwgeiApIHtcXG5cXG5cXHRcXHRcXHR2ZWN0b3Iuc2V0KCB4LCB5LCB6ICkudW5wcm9qZWN0KCBjYW1lcmEgKTtcXG5cXG5cXHRcXHRcXHR2YXIgcG9pbnRzID0gcG9pbnRNYXBbIHBvaW50IF07XFxuXFxuXFx0XFx0XFx0aWYgKCBwb2ludHMgIT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcG9zaXRpb24gPSBnZW9tZXRyeS5nZXRBdHRyaWJ1dGUoICdwb3NpdGlvbicgKTtcXG5cXG5cXHRcXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBwb2ludHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHRcXHRwb3NpdGlvbi5zZXRYWVooIHBvaW50c1sgaSBdLCB2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci56ICk7XFxuXFxuXFx0XFx0XFx0XFx0fVxcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9XFxuXFxuXFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcXG5cXG5cXHRcXHRcXHRnZW9tZXRyeSA9IHRoaXMuZ2VvbWV0cnk7XFxuXFx0XFx0XFx0cG9pbnRNYXAgPSB0aGlzLnBvaW50TWFwO1xcblxcblxcdFxcdFxcdHZhciB3ID0gMSwgaCA9IDE7XFxuXFxuXFx0XFx0XFx0Ly8gd2UgbmVlZCBqdXN0IGNhbWVyYSBwcm9qZWN0aW9uIG1hdHJpeFxcblxcdFxcdFxcdC8vIHdvcmxkIG1hdHJpeCBtdXN0IGJlIGlkZW50aXR5XFxuXFxuXFx0XFx0XFx0Y2FtZXJhLnByb2plY3Rpb25NYXRyaXguY29weSggdGhpcy5jYW1lcmEucHJvamVjdGlvbk1hdHJpeCApO1xcblxcblxcdFxcdFxcdC8vIGNlbnRlciAvIHRhcmdldFxcblxcblxcdFxcdFxcdHNldFBvaW50KCAnYycsIDAsIDAsIC0gMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAndCcsIDAsIDAsIDEgKTtcXG5cXG5cXHRcXHRcXHQvLyBuZWFyXFxuXFxuXFx0XFx0XFx0c2V0UG9pbnQoICduMScsIC0gdywgLSBoLCAtIDEgKTtcXG5cXHRcXHRcXHRzZXRQb2ludCggJ24yJywgdywgLSBoLCAtIDEgKTtcXG5cXHRcXHRcXHRzZXRQb2ludCggJ24zJywgLSB3LCBoLCAtIDEgKTtcXG5cXHRcXHRcXHRzZXRQb2ludCggJ240JywgdywgaCwgLSAxICk7XFxuXFxuXFx0XFx0XFx0Ly8gZmFyXFxuXFxuXFx0XFx0XFx0c2V0UG9pbnQoICdmMScsIC0gdywgLSBoLCAxICk7XFxuXFx0XFx0XFx0c2V0UG9pbnQoICdmMicsIHcsIC0gaCwgMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAnZjMnLCAtIHcsIGgsIDEgKTtcXG5cXHRcXHRcXHRzZXRQb2ludCggJ2Y0JywgdywgaCwgMSApO1xcblxcblxcdFxcdFxcdC8vIHVwXFxuXFxuXFx0XFx0XFx0c2V0UG9pbnQoICd1MScsIHcgKiAwLjcsIGggKiAxLjEsIC0gMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAndTInLCAtIHcgKiAwLjcsIGggKiAxLjEsIC0gMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAndTMnLCAwLCBoICogMiwgLSAxICk7XFxuXFxuXFx0XFx0XFx0Ly8gY3Jvc3NcXG5cXG5cXHRcXHRcXHRzZXRQb2ludCggJ2NmMScsIC0gdywgMCwgMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAnY2YyJywgdywgMCwgMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAnY2YzJywgMCwgLSBoLCAxICk7XFxuXFx0XFx0XFx0c2V0UG9pbnQoICdjZjQnLCAwLCBoLCAxICk7XFxuXFxuXFx0XFx0XFx0c2V0UG9pbnQoICdjbjEnLCAtIHcsIDAsIC0gMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAnY24yJywgdywgMCwgLSAxICk7XFxuXFx0XFx0XFx0c2V0UG9pbnQoICdjbjMnLCAwLCAtIGgsIC0gMSApO1xcblxcdFxcdFxcdHNldFBvaW50KCAnY240JywgMCwgaCwgLSAxICk7XFxuXFxuXFx0XFx0XFx0Z2VvbWV0cnkuZ2V0QXR0cmlidXRlKCAncG9zaXRpb24nICkubmVlZHNVcGRhdGUgPSB0cnVlO1xcblxcblxcdFxcdH07XFxuXFxuXFx0fSgpO1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICogQGF1dGhvciBNdWdlbjg3IC8gaHR0cDovL2dpdGh1Yi5jb20vTXVnZW44N1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEJveEhlbHBlciggb2JqZWN0LCBjb2xvciApIHtcXG5cXG5cXHRcXHR0aGlzLm9iamVjdCA9IG9iamVjdDtcXG5cXG5cXHRcXHRpZiAoIGNvbG9yID09PSB1bmRlZmluZWQgKSBjb2xvciA9IDB4ZmZmZjAwO1xcblxcblxcdFxcdHZhciBpbmRpY2VzID0gbmV3IFVpbnQxNkFycmF5KCBbIDAsIDEsIDEsIDIsIDIsIDMsIDMsIDAsIDQsIDUsIDUsIDYsIDYsIDcsIDcsIDQsIDAsIDQsIDEsIDUsIDIsIDYsIDMsIDcgXSApO1xcblxcdFxcdHZhciBwb3NpdGlvbnMgPSBuZXcgRmxvYXQzMkFycmF5KCA4ICogMyApO1xcblxcblxcdFxcdHZhciBnZW9tZXRyeSA9IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcdFxcdGdlb21ldHJ5LnNldEluZGV4KCBuZXcgQnVmZmVyQXR0cmlidXRlKCBpbmRpY2VzLCAxICkgKTtcXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBCdWZmZXJBdHRyaWJ1dGUoIHBvc2l0aW9ucywgMyApICk7XFxuXFxuXFx0XFx0TGluZVNlZ21lbnRzLmNhbGwoIHRoaXMsIGdlb21ldHJ5LCBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgY29sb3I6IGNvbG9yIH0gKSApO1xcblxcblxcdFxcdHRoaXMubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcblxcdFxcdHRoaXMudXBkYXRlKCk7XFxuXFxuXFx0fVxcblxcblxcdEJveEhlbHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBMaW5lU2VnbWVudHMucHJvdG90eXBlICk7XFxuXFx0Qm94SGVscGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJveEhlbHBlcjtcXG5cXG5cXHRCb3hIZWxwZXIucHJvdG90eXBlLnVwZGF0ZSA9ICggZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdHZhciBib3ggPSBuZXcgQm94MygpO1xcblxcblxcdFxcdHJldHVybiBmdW5jdGlvbiB1cGRhdGUoIG9iamVjdCApIHtcXG5cXG5cXHRcXHRcXHRpZiAoIG9iamVjdCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJveEhlbHBlcjogLnVwZGF0ZSgpIGhhcyBubyBsb25nZXIgYXJndW1lbnRzLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0aWYgKCB0aGlzLm9iamVjdCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGJveC5zZXRGcm9tT2JqZWN0KCB0aGlzLm9iamVjdCApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHRcXHRpZiAoIGJveC5pc0VtcHR5KCkgKSByZXR1cm47XFxuXFxuXFx0XFx0XFx0dmFyIG1pbiA9IGJveC5taW47XFxuXFx0XFx0XFx0dmFyIG1heCA9IGJveC5tYXg7XFxuXFxuXFx0XFx0XFx0LypcXG5cXHRcXHRcXHQgIDVfX19fNFxcblxcdFxcdFxcdDEvX19fMC98XFxuXFx0XFx0XFx0fCA2X198XzdcXG5cXHRcXHRcXHQyL19fXzMvXFxuXFxuXFx0XFx0XFx0MDogbWF4LngsIG1heC55LCBtYXguelxcblxcdFxcdFxcdDE6IG1pbi54LCBtYXgueSwgbWF4LnpcXG5cXHRcXHRcXHQyOiBtaW4ueCwgbWluLnksIG1heC56XFxuXFx0XFx0XFx0MzogbWF4LngsIG1pbi55LCBtYXguelxcblxcdFxcdFxcdDQ6IG1heC54LCBtYXgueSwgbWluLnpcXG5cXHRcXHRcXHQ1OiBtaW4ueCwgbWF4LnksIG1pbi56XFxuXFx0XFx0XFx0NjogbWluLngsIG1pbi55LCBtaW4uelxcblxcdFxcdFxcdDc6IG1heC54LCBtaW4ueSwgbWluLnpcXG5cXHRcXHRcXHQqL1xcblxcblxcdFxcdFxcdHZhciBwb3NpdGlvbiA9IHRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbjtcXG5cXHRcXHRcXHR2YXIgYXJyYXkgPSBwb3NpdGlvbi5hcnJheTtcXG5cXG5cXHRcXHRcXHRhcnJheVsgMCBdID0gbWF4Lng7IGFycmF5WyAxIF0gPSBtYXgueTsgYXJyYXlbIDIgXSA9IG1heC56O1xcblxcdFxcdFxcdGFycmF5WyAzIF0gPSBtaW4ueDsgYXJyYXlbIDQgXSA9IG1heC55OyBhcnJheVsgNSBdID0gbWF4Lno7XFxuXFx0XFx0XFx0YXJyYXlbIDYgXSA9IG1pbi54OyBhcnJheVsgNyBdID0gbWluLnk7IGFycmF5WyA4IF0gPSBtYXguejtcXG5cXHRcXHRcXHRhcnJheVsgOSBdID0gbWF4Lng7IGFycmF5WyAxMCBdID0gbWluLnk7IGFycmF5WyAxMSBdID0gbWF4Lno7XFxuXFx0XFx0XFx0YXJyYXlbIDEyIF0gPSBtYXgueDsgYXJyYXlbIDEzIF0gPSBtYXgueTsgYXJyYXlbIDE0IF0gPSBtaW4uejtcXG5cXHRcXHRcXHRhcnJheVsgMTUgXSA9IG1pbi54OyBhcnJheVsgMTYgXSA9IG1heC55OyBhcnJheVsgMTcgXSA9IG1pbi56O1xcblxcdFxcdFxcdGFycmF5WyAxOCBdID0gbWluLng7IGFycmF5WyAxOSBdID0gbWluLnk7IGFycmF5WyAyMCBdID0gbWluLno7XFxuXFx0XFx0XFx0YXJyYXlbIDIxIF0gPSBtYXgueDsgYXJyYXlbIDIyIF0gPSBtaW4ueTsgYXJyYXlbIDIzIF0gPSBtaW4uejtcXG5cXG5cXHRcXHRcXHRwb3NpdGlvbi5uZWVkc1VwZGF0ZSA9IHRydWU7XFxuXFxuXFx0XFx0XFx0dGhpcy5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtcXG5cXG5cXHRcXHR9O1xcblxcblxcdH0gKSgpO1xcblxcblxcdEJveEhlbHBlci5wcm90b3R5cGUuc2V0RnJvbU9iamVjdCA9IGZ1bmN0aW9uICggb2JqZWN0ICkge1xcblxcblxcdFxcdHRoaXMub2JqZWN0ID0gb2JqZWN0O1xcblxcdFxcdHRoaXMudXBkYXRlKCk7XFxuXFxuXFx0XFx0cmV0dXJuIHRoaXM7XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBCb3gzSGVscGVyKCBib3gsIGhleCApIHtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnQm94M0hlbHBlcic7XFxuXFxuXFx0XFx0dGhpcy5ib3ggPSBib3g7XFxuXFxuXFx0XFx0dmFyIGNvbG9yID0gKCBoZXggIT09IHVuZGVmaW5lZCApID8gaGV4IDogMHhmZmZmMDA7XFxuXFxuXFx0XFx0dmFyIGluZGljZXMgPSBuZXcgVWludDE2QXJyYXkoIFsgMCwgMSwgMSwgMiwgMiwgMywgMywgMCwgNCwgNSwgNSwgNiwgNiwgNywgNywgNCwgMCwgNCwgMSwgNSwgMiwgNiwgMywgNyBdICk7XFxuXFxuXFx0XFx0dmFyIHBvc2l0aW9ucyA9IFsgMSwgMSwgMSwgLSAxLCAxLCAxLCAtIDEsIC0gMSwgMSwgMSwgLSAxLCAxLCAxLCAxLCAtIDEsIC0gMSwgMSwgLSAxLCAtIDEsIC0gMSwgLSAxLCAxLCAtIDEsIC0gMSBdO1xcblxcblxcdFxcdHZhciBnZW9tZXRyeSA9IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcblxcdFxcdGdlb21ldHJ5LnNldEluZGV4KCBuZXcgQnVmZmVyQXR0cmlidXRlKCBpbmRpY2VzLCAxICkgKTtcXG5cXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBwb3NpdGlvbnMsIDMgKSApO1xcblxcblxcdFxcdExpbmVTZWdtZW50cy5jYWxsKCB0aGlzLCBnZW9tZXRyeSwgbmV3IExpbmVCYXNpY01hdGVyaWFsKCB7IGNvbG9yOiBjb2xvciB9ICkgKTtcXG5cXG5cXHRcXHR0aGlzLmdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpO1xcblxcblxcdH1cXG5cXG5cXHRCb3gzSGVscGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIExpbmVTZWdtZW50cy5wcm90b3R5cGUgKTtcXG5cXHRCb3gzSGVscGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJveDNIZWxwZXI7XFxuXFxuXFx0Qm94M0hlbHBlci5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQgPSBmdW5jdGlvbiAoIGZvcmNlICkge1xcblxcblxcdFxcdHZhciBib3ggPSB0aGlzLmJveDtcXG5cXG5cXHRcXHRpZiAoIGJveC5pc0VtcHR5KCkgKSByZXR1cm47XFxuXFxuXFx0XFx0Ym94LmdldENlbnRlciggdGhpcy5wb3NpdGlvbiApO1xcblxcblxcdFxcdGJveC5nZXRTaXplKCB0aGlzLnNjYWxlICk7XFxuXFxuXFx0XFx0dGhpcy5zY2FsZS5tdWx0aXBseVNjYWxhciggMC41ICk7XFxuXFxuXFx0XFx0T2JqZWN0M0QucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkLmNhbGwoIHRoaXMsIGZvcmNlICk7XFxuXFxuXFx0fTtcXG5cXG5cXHQvKipcXG5cXHQgKiBAYXV0aG9yIFdlc3RMYW5nbGV5IC8gaHR0cDovL2dpdGh1Yi5jb20vV2VzdExhbmdsZXlcXG5cXHQgKi9cXG5cXG5cXHRmdW5jdGlvbiBQbGFuZUhlbHBlciggcGxhbmUsIHNpemUsIGhleCApIHtcXG5cXG5cXHRcXHR0aGlzLnR5cGUgPSAnUGxhbmVIZWxwZXInO1xcblxcblxcdFxcdHRoaXMucGxhbmUgPSBwbGFuZTtcXG5cXG5cXHRcXHR0aGlzLnNpemUgPSAoIHNpemUgPT09IHVuZGVmaW5lZCApID8gMSA6IHNpemU7XFxuXFxuXFx0XFx0dmFyIGNvbG9yID0gKCBoZXggIT09IHVuZGVmaW5lZCApID8gaGV4IDogMHhmZmZmMDA7XFxuXFxuXFx0XFx0dmFyIHBvc2l0aW9ucyA9IFsgMSwgLSAxLCAxLCAtIDEsIDEsIDEsIC0gMSwgLSAxLCAxLCAxLCAxLCAxLCAtIDEsIDEsIDEsIC0gMSwgLSAxLCAxLCAxLCAtIDEsIDEsIDEsIDEsIDEsIDAsIDAsIDEsIDAsIDAsIDAgXTtcXG5cXG5cXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdwb3NpdGlvbicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBwb3NpdGlvbnMsIDMgKSApO1xcblxcdFxcdGdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpO1xcblxcblxcdFxcdExpbmUuY2FsbCggdGhpcywgZ2VvbWV0cnksIG5ldyBMaW5lQmFzaWNNYXRlcmlhbCggeyBjb2xvcjogY29sb3IgfSApICk7XFxuXFxuXFx0XFx0Ly9cXG5cXG5cXHRcXHR2YXIgcG9zaXRpb25zMiA9IFsgMSwgMSwgMSwgLSAxLCAxLCAxLCAtIDEsIC0gMSwgMSwgMSwgMSwgMSwgLSAxLCAtIDEsIDEsIDEsIC0gMSwgMSBdO1xcblxcblxcdFxcdHZhciBnZW9tZXRyeTIgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXHRcXHRnZW9tZXRyeTIuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggcG9zaXRpb25zMiwgMyApICk7XFxuXFx0XFx0Z2VvbWV0cnkyLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpO1xcblxcblxcdFxcdHRoaXMuYWRkKCBuZXcgTWVzaCggZ2VvbWV0cnkyLCBuZXcgTWVzaEJhc2ljTWF0ZXJpYWwoIHsgY29sb3I6IGNvbG9yLCBvcGFjaXR5OiAwLjIsIHRyYW5zcGFyZW50OiB0cnVlLCBkZXB0aFdyaXRlOiBmYWxzZSB9ICkgKSApO1xcblxcblxcdH1cXG5cXG5cXHRQbGFuZUhlbHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBMaW5lLnByb3RvdHlwZSApO1xcblxcdFBsYW5lSGVscGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFBsYW5lSGVscGVyO1xcblxcblxcdFBsYW5lSGVscGVyLnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZCA9IGZ1bmN0aW9uICggZm9yY2UgKSB7XFxuXFxuXFx0XFx0dmFyIHNjYWxlID0gLSB0aGlzLnBsYW5lLmNvbnN0YW50O1xcblxcblxcdFxcdGlmICggTWF0aC5hYnMoIHNjYWxlICkgPCAxZS04ICkgc2NhbGUgPSAxZS04OyAvLyBzaWduIGRvZXMgbm90IG1hdHRlclxcblxcblxcdFxcdHRoaXMuc2NhbGUuc2V0KCAwLjUgKiB0aGlzLnNpemUsIDAuNSAqIHRoaXMuc2l6ZSwgc2NhbGUgKTtcXG5cXG5cXHRcXHR0aGlzLmxvb2tBdCggdGhpcy5wbGFuZS5ub3JtYWwgKTtcXG5cXG5cXHRcXHRPYmplY3QzRC5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCggdGhpcywgZm9yY2UgKTtcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgV2VzdExhbmdsZXkgLyBodHRwOi8vZ2l0aHViLmNvbS9XZXN0TGFuZ2xleVxcblxcdCAqIEBhdXRob3Igeno4NSAvIGh0dHA6Ly9naXRodWIuY29tL3p6ODVcXG5cXHQgKiBAYXV0aG9yIGJob3VzdG9uIC8gaHR0cDovL2NsYXJhLmlvXFxuXFx0ICpcXG5cXHQgKiBDcmVhdGVzIGFuIGFycm93IGZvciB2aXN1YWxpemluZyBkaXJlY3Rpb25zXFxuXFx0ICpcXG5cXHQgKiBQYXJhbWV0ZXJzOlxcblxcdCAqICBkaXIgLSBWZWN0b3IzXFxuXFx0ICogIG9yaWdpbiAtIFZlY3RvcjNcXG5cXHQgKiAgbGVuZ3RoIC0gTnVtYmVyXFxuXFx0ICogIGNvbG9yIC0gY29sb3IgaW4gaGV4IHZhbHVlXFxuXFx0ICogIGhlYWRMZW5ndGggLSBOdW1iZXJcXG5cXHQgKiAgaGVhZFdpZHRoIC0gTnVtYmVyXFxuXFx0ICovXFxuXFxuXFx0dmFyIGxpbmVHZW9tZXRyeTtcXG5cXHR2YXIgY29uZUdlb21ldHJ5O1xcblxcblxcdGZ1bmN0aW9uIEFycm93SGVscGVyKCBkaXIsIG9yaWdpbiwgbGVuZ3RoLCBjb2xvciwgaGVhZExlbmd0aCwgaGVhZFdpZHRoICkge1xcblxcblxcdFxcdC8vIGRpciBpcyBhc3N1bWVkIHRvIGJlIG5vcm1hbGl6ZWRcXG5cXG5cXHRcXHRPYmplY3QzRC5jYWxsKCB0aGlzICk7XFxuXFxuXFx0XFx0aWYgKCBjb2xvciA9PT0gdW5kZWZpbmVkICkgY29sb3IgPSAweGZmZmYwMDtcXG5cXHRcXHRpZiAoIGxlbmd0aCA9PT0gdW5kZWZpbmVkICkgbGVuZ3RoID0gMTtcXG5cXHRcXHRpZiAoIGhlYWRMZW5ndGggPT09IHVuZGVmaW5lZCApIGhlYWRMZW5ndGggPSAwLjIgKiBsZW5ndGg7XFxuXFx0XFx0aWYgKCBoZWFkV2lkdGggPT09IHVuZGVmaW5lZCApIGhlYWRXaWR0aCA9IDAuMiAqIGhlYWRMZW5ndGg7XFxuXFxuXFx0XFx0aWYgKCBsaW5lR2VvbWV0cnkgPT09IHVuZGVmaW5lZCApIHtcXG5cXG5cXHRcXHRcXHRsaW5lR2VvbWV0cnkgPSBuZXcgQnVmZmVyR2VvbWV0cnkoKTtcXG5cXHRcXHRcXHRsaW5lR2VvbWV0cnkuYWRkQXR0cmlidXRlKCAncG9zaXRpb24nLCBuZXcgRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSggWyAwLCAwLCAwLCAwLCAxLCAwIF0sIDMgKSApO1xcblxcblxcdFxcdFxcdGNvbmVHZW9tZXRyeSA9IG5ldyBDeWxpbmRlckJ1ZmZlckdlb21ldHJ5KCAwLCAwLjUsIDEsIDUsIDEgKTtcXG5cXHRcXHRcXHRjb25lR2VvbWV0cnkudHJhbnNsYXRlKCAwLCAtIDAuNSwgMCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHRcXHR0aGlzLnBvc2l0aW9uLmNvcHkoIG9yaWdpbiApO1xcblxcblxcdFxcdHRoaXMubGluZSA9IG5ldyBMaW5lKCBsaW5lR2VvbWV0cnksIG5ldyBMaW5lQmFzaWNNYXRlcmlhbCggeyBjb2xvcjogY29sb3IgfSApICk7XFxuXFx0XFx0dGhpcy5saW5lLm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcXG5cXHRcXHR0aGlzLmFkZCggdGhpcy5saW5lICk7XFxuXFxuXFx0XFx0dGhpcy5jb25lID0gbmV3IE1lc2goIGNvbmVHZW9tZXRyeSwgbmV3IE1lc2hCYXNpY01hdGVyaWFsKCB7IGNvbG9yOiBjb2xvciB9ICkgKTtcXG5cXHRcXHR0aGlzLmNvbmUubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xcblxcdFxcdHRoaXMuYWRkKCB0aGlzLmNvbmUgKTtcXG5cXG5cXHRcXHR0aGlzLnNldERpcmVjdGlvbiggZGlyICk7XFxuXFx0XFx0dGhpcy5zZXRMZW5ndGgoIGxlbmd0aCwgaGVhZExlbmd0aCwgaGVhZFdpZHRoICk7XFxuXFxuXFx0fVxcblxcblxcdEFycm93SGVscGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIE9iamVjdDNELnByb3RvdHlwZSApO1xcblxcdEFycm93SGVscGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEFycm93SGVscGVyO1xcblxcblxcdEFycm93SGVscGVyLnByb3RvdHlwZS5zZXREaXJlY3Rpb24gPSAoIGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHR2YXIgYXhpcyA9IG5ldyBWZWN0b3IzKCk7XFxuXFx0XFx0dmFyIHJhZGlhbnM7XFxuXFxuXFx0XFx0cmV0dXJuIGZ1bmN0aW9uIHNldERpcmVjdGlvbiggZGlyICkge1xcblxcblxcdFxcdFxcdC8vIGRpciBpcyBhc3N1bWVkIHRvIGJlIG5vcm1hbGl6ZWRcXG5cXG5cXHRcXHRcXHRpZiAoIGRpci55ID4gMC45OTk5OSApIHtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnF1YXRlcm5pb24uc2V0KCAwLCAwLCAwLCAxICk7XFxuXFxuXFx0XFx0XFx0fSBlbHNlIGlmICggZGlyLnkgPCAtIDAuOTk5OTkgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dGhpcy5xdWF0ZXJuaW9uLnNldCggMSwgMCwgMCwgMCApO1xcblxcblxcdFxcdFxcdH0gZWxzZSB7XFxuXFxuXFx0XFx0XFx0XFx0YXhpcy5zZXQoIGRpci56LCAwLCAtIGRpci54ICkubm9ybWFsaXplKCk7XFxuXFxuXFx0XFx0XFx0XFx0cmFkaWFucyA9IE1hdGguYWNvcyggZGlyLnkgKTtcXG5cXG5cXHRcXHRcXHRcXHR0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUF4aXNBbmdsZSggYXhpcywgcmFkaWFucyApO1xcblxcblxcdFxcdFxcdH1cXG5cXG5cXHRcXHR9O1xcblxcblxcdH0oKSApO1xcblxcblxcdEFycm93SGVscGVyLnByb3RvdHlwZS5zZXRMZW5ndGggPSBmdW5jdGlvbiAoIGxlbmd0aCwgaGVhZExlbmd0aCwgaGVhZFdpZHRoICkge1xcblxcblxcdFxcdGlmICggaGVhZExlbmd0aCA9PT0gdW5kZWZpbmVkICkgaGVhZExlbmd0aCA9IDAuMiAqIGxlbmd0aDtcXG5cXHRcXHRpZiAoIGhlYWRXaWR0aCA9PT0gdW5kZWZpbmVkICkgaGVhZFdpZHRoID0gMC4yICogaGVhZExlbmd0aDtcXG5cXG5cXHRcXHR0aGlzLmxpbmUuc2NhbGUuc2V0KCAxLCBNYXRoLm1heCggMCwgbGVuZ3RoIC0gaGVhZExlbmd0aCApLCAxICk7XFxuXFx0XFx0dGhpcy5saW5lLnVwZGF0ZU1hdHJpeCgpO1xcblxcblxcdFxcdHRoaXMuY29uZS5zY2FsZS5zZXQoIGhlYWRXaWR0aCwgaGVhZExlbmd0aCwgaGVhZFdpZHRoICk7XFxuXFx0XFx0dGhpcy5jb25lLnBvc2l0aW9uLnkgPSBsZW5ndGg7XFxuXFx0XFx0dGhpcy5jb25lLnVwZGF0ZU1hdHJpeCgpO1xcblxcblxcdH07XFxuXFxuXFx0QXJyb3dIZWxwZXIucHJvdG90eXBlLnNldENvbG9yID0gZnVuY3Rpb24gKCBjb2xvciApIHtcXG5cXG5cXHRcXHR0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3IuY29weSggY29sb3IgKTtcXG5cXHRcXHR0aGlzLmNvbmUubWF0ZXJpYWwuY29sb3IuY29weSggY29sb3IgKTtcXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3Igc3JvdWNoZXJheSAvIGh0dHA6Ly9zcm91Y2hlcmF5Lm9yZy9cXG5cXHQgKiBAYXV0aG9yIG1yZG9vYiAvIGh0dHA6Ly9tcmRvb2IuY29tL1xcblxcdCAqL1xcblxcblxcdGZ1bmN0aW9uIEF4ZXNIZWxwZXIoIHNpemUgKSB7XFxuXFxuXFx0XFx0c2l6ZSA9IHNpemUgfHwgMTtcXG5cXG5cXHRcXHR2YXIgdmVydGljZXMgPSBbXFxuXFx0XFx0XFx0MCwgMCwgMCxcXHRzaXplLCAwLCAwLFxcblxcdFxcdFxcdDAsIDAsIDAsXFx0MCwgc2l6ZSwgMCxcXG5cXHRcXHRcXHQwLCAwLCAwLFxcdDAsIDAsIHNpemVcXG5cXHRcXHRdO1xcblxcblxcdFxcdHZhciBjb2xvcnMgPSBbXFxuXFx0XFx0XFx0MSwgMCwgMCxcXHQxLCAwLjYsIDAsXFxuXFx0XFx0XFx0MCwgMSwgMCxcXHQwLjYsIDEsIDAsXFxuXFx0XFx0XFx0MCwgMCwgMSxcXHQwLCAwLjYsIDFcXG5cXHRcXHRdO1xcblxcblxcdFxcdHZhciBnZW9tZXRyeSA9IG5ldyBCdWZmZXJHZW9tZXRyeSgpO1xcblxcdFxcdGdlb21ldHJ5LmFkZEF0dHJpYnV0ZSggJ3Bvc2l0aW9uJywgbmV3IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoIHZlcnRpY2VzLCAzICkgKTtcXG5cXHRcXHRnZW9tZXRyeS5hZGRBdHRyaWJ1dGUoICdjb2xvcicsIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBjb2xvcnMsIDMgKSApO1xcblxcblxcdFxcdHZhciBtYXRlcmlhbCA9IG5ldyBMaW5lQmFzaWNNYXRlcmlhbCggeyB2ZXJ0ZXhDb2xvcnM6IFZlcnRleENvbG9ycyB9ICk7XFxuXFxuXFx0XFx0TGluZVNlZ21lbnRzLmNhbGwoIHRoaXMsIGdlb21ldHJ5LCBtYXRlcmlhbCApO1xcblxcblxcdH1cXG5cXG5cXHRBeGVzSGVscGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIExpbmVTZWdtZW50cy5wcm90b3R5cGUgKTtcXG5cXHRBeGVzSGVscGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEF4ZXNIZWxwZXI7XFxuXFxuXFx0LyoqXFxuXFx0ICogQGF1dGhvciBhbHRlcmVkcSAvIGh0dHA6Ly9hbHRlcmVkcXVhbGlhLmNvbS9cXG5cXHQgKi9cXG5cXG5cXHR2YXIgU2NlbmVVdGlscyA9IHtcXG5cXG5cXHRcXHRjcmVhdGVNdWx0aU1hdGVyaWFsT2JqZWN0OiBmdW5jdGlvbiAoIGdlb21ldHJ5LCBtYXRlcmlhbHMgKSB7XFxuXFxuXFx0XFx0XFx0dmFyIGdyb3VwID0gbmV3IEdyb3VwKCk7XFxuXFxuXFx0XFx0XFx0Zm9yICggdmFyIGkgPSAwLCBsID0gbWF0ZXJpYWxzLmxlbmd0aDsgaSA8IGw7IGkgKysgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Z3JvdXAuYWRkKCBuZXcgTWVzaCggZ2VvbWV0cnksIG1hdGVyaWFsc1sgaSBdICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGdyb3VwO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0ZGV0YWNoOiBmdW5jdGlvbiAoIGNoaWxkLCBwYXJlbnQsIHNjZW5lICkge1xcblxcblxcdFxcdFxcdGNoaWxkLmFwcGx5TWF0cml4KCBwYXJlbnQubWF0cml4V29ybGQgKTtcXG5cXHRcXHRcXHRwYXJlbnQucmVtb3ZlKCBjaGlsZCApO1xcblxcdFxcdFxcdHNjZW5lLmFkZCggY2hpbGQgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGF0dGFjaDogZnVuY3Rpb24gKCBjaGlsZCwgc2NlbmUsIHBhcmVudCApIHtcXG5cXG5cXHRcXHRcXHRjaGlsZC5hcHBseU1hdHJpeCggbmV3IE1hdHJpeDQoKS5nZXRJbnZlcnNlKCBwYXJlbnQubWF0cml4V29ybGQgKSApO1xcblxcblxcdFxcdFxcdHNjZW5lLnJlbW92ZSggY2hpbGQgKTtcXG5cXHRcXHRcXHRwYXJlbnQuYWRkKCBjaGlsZCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9O1xcblxcblxcdC8qKlxcblxcdCAqIEBhdXRob3IgbXJkb29iIC8gaHR0cDovL21yZG9vYi5jb20vXFxuXFx0ICovXFxuXFxuXFx0ZnVuY3Rpb24gRmFjZTQoIGEsIGIsIGMsIGQsIG5vcm1hbCwgY29sb3IsIG1hdGVyaWFsSW5kZXggKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuRmFjZTQgaGFzIGJlZW4gcmVtb3ZlZC4gQSBUSFJFRS5GYWNlMyB3aWxsIGJlIGNyZWF0ZWQgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBGYWNlMyggYSwgYiwgYywgbm9ybWFsLCBjb2xvciwgbWF0ZXJpYWxJbmRleCApO1xcblxcblxcdH1cXG5cXG5cXHR2YXIgTGluZVN0cmlwID0gMDtcXG5cXG5cXHR2YXIgTGluZVBpZWNlcyA9IDE7XFxuXFxuXFx0ZnVuY3Rpb24gTWVzaEZhY2VNYXRlcmlhbCggbWF0ZXJpYWxzICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk1lc2hGYWNlTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuJyApO1xcblxcdFxcdHJldHVybiBtYXRlcmlhbHM7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIE11bHRpTWF0ZXJpYWwoIG1hdGVyaWFscyApIHtcXG5cXG5cXHRcXHRpZiAoIG1hdGVyaWFscyA9PT0gdW5kZWZpbmVkICkgbWF0ZXJpYWxzID0gW107XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTXVsdGlNYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYW4gQXJyYXkgaW5zdGVhZC4nICk7XFxuXFx0XFx0bWF0ZXJpYWxzLmlzTXVsdGlNYXRlcmlhbCA9IHRydWU7XFxuXFx0XFx0bWF0ZXJpYWxzLm1hdGVyaWFscyA9IG1hdGVyaWFscztcXG5cXHRcXHRtYXRlcmlhbHMuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIG1hdGVyaWFscy5zbGljZSgpO1xcblxcblxcdFxcdH07XFxuXFx0XFx0cmV0dXJuIG1hdGVyaWFscztcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gUG9pbnRDbG91ZCggZ2VvbWV0cnksIG1hdGVyaWFsICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlBvaW50Q2xvdWQgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHMuJyApO1xcblxcdFxcdHJldHVybiBuZXcgUG9pbnRzKCBnZW9tZXRyeSwgbWF0ZXJpYWwgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gUGFydGljbGUoIG1hdGVyaWFsICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlBhcnRpY2xlIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuU3ByaXRlLicgKTtcXG5cXHRcXHRyZXR1cm4gbmV3IFNwcml0ZSggbWF0ZXJpYWwgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gUGFydGljbGVTeXN0ZW0oIGdlb21ldHJ5LCBtYXRlcmlhbCApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5QYXJ0aWNsZVN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBQb2ludHMoIGdlb21ldHJ5LCBtYXRlcmlhbCApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBQb2ludENsb3VkTWF0ZXJpYWwoIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuUG9pbnRDbG91ZE1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuJyApO1xcblxcdFxcdHJldHVybiBuZXcgUG9pbnRzTWF0ZXJpYWwoIHBhcmFtZXRlcnMgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gUGFydGljbGVCYXNpY01hdGVyaWFsKCBwYXJhbWV0ZXJzICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlBhcnRpY2xlQmFzaWNNYXRlcmlhbCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50c01hdGVyaWFsLicgKTtcXG5cXHRcXHRyZXR1cm4gbmV3IFBvaW50c01hdGVyaWFsKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIFBhcnRpY2xlU3lzdGVtTWF0ZXJpYWwoIHBhcmFtZXRlcnMgKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuUGFydGljbGVTeXN0ZW1NYXRlcmlhbCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50c01hdGVyaWFsLicgKTtcXG5cXHRcXHRyZXR1cm4gbmV3IFBvaW50c01hdGVyaWFsKCBwYXJhbWV0ZXJzICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIFZlcnRleCggeCwgeSwgeiApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZXJ0ZXggaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLlZlY3RvcjMgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBWZWN0b3IzKCB4LCB5LCB6ICk7XFxuXFxuXFx0fVxcblxcblxcdC8vXFxuXFxuXFx0ZnVuY3Rpb24gRHluYW1pY0J1ZmZlckF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkR5bmFtaWNCdWZmZXJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUoKS5zZXREeW5hbWljKCB0cnVlICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBCdWZmZXJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSApLnNldER5bmFtaWMoIHRydWUgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gSW50OEF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQ4QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBJbnQ4QnVmZmVyQXR0cmlidXRlKCBhcnJheSwgaXRlbVNpemUgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gVWludDhBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5VaW50OEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBVaW50OEJ1ZmZlckF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuJyApO1xcblxcdFxcdHJldHVybiBuZXcgVWludDhDbGFtcGVkQnVmZmVyQXR0cmlidXRlKCBhcnJheSwgaXRlbVNpemUgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gSW50MTZBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5JbnQxNkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDE2QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBJbnQxNkJ1ZmZlckF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIFVpbnQxNkF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlVpbnQxNkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQxNkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuJyApO1xcblxcdFxcdHJldHVybiBuZXcgVWludDE2QnVmZmVyQXR0cmlidXRlKCBhcnJheSwgaXRlbVNpemUgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gSW50MzJBdHRyaWJ1dGUoIGFycmF5LCBpdGVtU2l6ZSApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5JbnQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBJbnQzMkJ1ZmZlckF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIFVpbnQzMkF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlVpbnQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuJyApO1xcblxcdFxcdHJldHVybiBuZXcgVWludDMyQnVmZmVyQXR0cmlidXRlKCBhcnJheSwgaXRlbVNpemUgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gRmxvYXQzMkF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkZsb2F0MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5GbG9hdDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBGbG9hdDMyQnVmZmVyQXR0cmlidXRlKCBhcnJheSwgaXRlbVNpemUgKTtcXG5cXG5cXHR9XFxuXFxuXFx0ZnVuY3Rpb24gRmxvYXQ2NEF0dHJpYnV0ZSggYXJyYXksIGl0ZW1TaXplICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkZsb2F0NjRBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5GbG9hdDY0QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBGbG9hdDY0QnVmZmVyQXR0cmlidXRlKCBhcnJheSwgaXRlbVNpemUgKTtcXG5cXG5cXHR9XFxuXFxuXFx0Ly9cXG5cXG5cXHRDdXJ2ZS5jcmVhdGUgPSBmdW5jdGlvbiAoIGNvbnN0cnVjdCwgZ2V0UG9pbnQgKSB7XFxuXFxuXFx0XFx0Y29uc29sZS5sb2coICdUSFJFRS5DdXJ2ZS5jcmVhdGUoKSBoYXMgYmVlbiBkZXByZWNhdGVkJyApO1xcblxcblxcdFxcdGNvbnN0cnVjdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBDdXJ2ZS5wcm90b3R5cGUgKTtcXG5cXHRcXHRjb25zdHJ1Y3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0O1xcblxcdFxcdGNvbnN0cnVjdC5wcm90b3R5cGUuZ2V0UG9pbnQgPSBnZXRQb2ludDtcXG5cXG5cXHRcXHRyZXR1cm4gY29uc3RydWN0O1xcblxcblxcdH07XFxuXFxuXFx0Ly9cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBDdXJ2ZVBhdGgucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Y3JlYXRlUG9pbnRzR2VvbWV0cnk6IGZ1bmN0aW9uICggZGl2aXNpb25zICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkN1cnZlUGF0aDogLmNyZWF0ZVBvaW50c0dlb21ldHJ5KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5HZW9tZXRyeSgpLnNldEZyb21Qb2ludHMoIHBvaW50cyApIGluc3RlYWQuJyApO1xcblxcblxcdFxcdFxcdC8vIGdlbmVyYXRlIGdlb21ldHJ5IGZyb20gcGF0aCBwb2ludHMgKGZvciBMaW5lIG9yIFBvaW50cyBvYmplY3RzKVxcblxcblxcdFxcdFxcdHZhciBwdHMgPSB0aGlzLmdldFBvaW50cyggZGl2aXNpb25zICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuY3JlYXRlR2VvbWV0cnkoIHB0cyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y3JlYXRlU3BhY2VkUG9pbnRzR2VvbWV0cnk6IGZ1bmN0aW9uICggZGl2aXNpb25zICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkN1cnZlUGF0aDogLmNyZWF0ZVNwYWNlZFBvaW50c0dlb21ldHJ5KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5HZW9tZXRyeSgpLnNldEZyb21Qb2ludHMoIHBvaW50cyApIGluc3RlYWQuJyApO1xcblxcblxcdFxcdFxcdC8vIGdlbmVyYXRlIGdlb21ldHJ5IGZyb20gZXF1aWRpc3RhbnQgc2FtcGxpbmcgYWxvbmcgdGhlIHBhdGhcXG5cXG5cXHRcXHRcXHR2YXIgcHRzID0gdGhpcy5nZXRTcGFjZWRQb2ludHMoIGRpdmlzaW9ucyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmNyZWF0ZUdlb21ldHJ5KCBwdHMgKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGNyZWF0ZUdlb21ldHJ5OiBmdW5jdGlvbiAoIHBvaW50cyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5DdXJ2ZVBhdGg6IC5jcmVhdGVHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuR2VvbWV0cnkoKS5zZXRGcm9tUG9pbnRzKCBwb2ludHMgKSBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHRcXHR2YXIgZ2VvbWV0cnkgPSBuZXcgR2VvbWV0cnkoKTtcXG5cXG5cXHRcXHRcXHRmb3IgKCB2YXIgaSA9IDAsIGwgPSBwb2ludHMubGVuZ3RoOyBpIDwgbDsgaSArKyApIHtcXG5cXG5cXHRcXHRcXHRcXHR2YXIgcG9pbnQgPSBwb2ludHNbIGkgXTtcXG5cXHRcXHRcXHRcXHRnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKCBuZXcgVmVjdG9yMyggcG9pbnQueCwgcG9pbnQueSwgcG9pbnQueiB8fCAwICkgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGdlb21ldHJ5O1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0Ly9cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBQYXRoLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGZyb21Qb2ludHM6IGZ1bmN0aW9uICggcG9pbnRzICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlBhdGg6IC5mcm9tUG9pbnRzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVBvaW50cygpLicgKTtcXG5cXHRcXHRcXHR0aGlzLnNldEZyb21Qb2ludHMoIHBvaW50cyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0Ly9cXG5cXG5cXHRmdW5jdGlvbiBDbG9zZWRTcGxpbmVDdXJ2ZTMoIHBvaW50cyApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5DbG9zZWRTcGxpbmVDdXJ2ZTMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkNhdG11bGxSb21DdXJ2ZTMgaW5zdGVhZC4nICk7XFxuXFxuXFx0XFx0Q2F0bXVsbFJvbUN1cnZlMy5jYWxsKCB0aGlzLCBwb2ludHMgKTtcXG5cXHRcXHR0aGlzLnR5cGUgPSAnY2F0bXVsbHJvbSc7XFxuXFx0XFx0dGhpcy5jbG9zZWQgPSB0cnVlO1xcblxcblxcdH1cXG5cXG5cXHRDbG9zZWRTcGxpbmVDdXJ2ZTMucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSggQ2F0bXVsbFJvbUN1cnZlMy5wcm90b3R5cGUgKTtcXG5cXG5cXHQvL1xcblxcblxcdGZ1bmN0aW9uIFNwbGluZUN1cnZlMyggcG9pbnRzICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlNwbGluZUN1cnZlMyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ2F0bXVsbFJvbUN1cnZlMyBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHRDYXRtdWxsUm9tQ3VydmUzLmNhbGwoIHRoaXMsIHBvaW50cyApO1xcblxcdFxcdHRoaXMudHlwZSA9ICdjYXRtdWxscm9tJztcXG5cXG5cXHR9XFxuXFxuXFx0U3BsaW5lQ3VydmUzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoIENhdG11bGxSb21DdXJ2ZTMucHJvdG90eXBlICk7XFxuXFxuXFx0Ly9cXG5cXG5cXHRmdW5jdGlvbiBTcGxpbmUoIHBvaW50cyApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5TcGxpbmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkNhdG11bGxSb21DdXJ2ZTMgaW5zdGVhZC4nICk7XFxuXFxuXFx0XFx0Q2F0bXVsbFJvbUN1cnZlMy5jYWxsKCB0aGlzLCBwb2ludHMgKTtcXG5cXHRcXHR0aGlzLnR5cGUgPSAnY2F0bXVsbHJvbSc7XFxuXFxuXFx0fVxcblxcblxcdFNwbGluZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKCBDYXRtdWxsUm9tQ3VydmUzLnByb3RvdHlwZSApO1xcblxcblxcdE9iamVjdC5hc3NpZ24oIFNwbGluZS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRpbml0RnJvbUFycmF5OiBmdW5jdGlvbiAoIC8qIGEgKi8gKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlNwbGluZTogLmluaXRGcm9tQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGdldENvbnRyb2xQb2ludHNBcnJheTogZnVuY3Rpb24gKCAvKiBvcHRpb25hbFRhcmdldCAqLyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuU3BsaW5lOiAuZ2V0Q29udHJvbFBvaW50c0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRyZXBhcmFtZXRyaXplQnlBcmNMZW5ndGg6IGZ1bmN0aW9uICggLyogc2FtcGxpbmdDb2VmICovICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5TcGxpbmU6IC5yZXBhcmFtZXRyaXplQnlBcmNMZW5ndGgoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8vXFxuXFxuXFx0ZnVuY3Rpb24gQXhpc0hlbHBlciggc2l6ZSApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5BeGlzSGVscGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuQXhlc0hlbHBlci4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBBeGVzSGVscGVyKCBzaXplICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIEJvdW5kaW5nQm94SGVscGVyKCBvYmplY3QsIGNvbG9yICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJvdW5kaW5nQm94SGVscGVyIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIENyZWF0aW5nIGEgVEhSRUUuQm94SGVscGVyIGluc3RlYWQuJyApO1xcblxcdFxcdHJldHVybiBuZXcgQm94SGVscGVyKCBvYmplY3QsIGNvbG9yICk7XFxuXFxuXFx0fVxcblxcblxcdGZ1bmN0aW9uIEVkZ2VzSGVscGVyKCBvYmplY3QsIGhleCApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5FZGdlc0hlbHBlciBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRWRnZXNHZW9tZXRyeSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRyZXR1cm4gbmV3IExpbmVTZWdtZW50cyggbmV3IEVkZ2VzR2VvbWV0cnkoIG9iamVjdC5nZW9tZXRyeSApLCBuZXcgTGluZUJhc2ljTWF0ZXJpYWwoIHsgY29sb3I6IGhleCAhPT0gdW5kZWZpbmVkID8gaGV4IDogMHhmZmZmZmYgfSApICk7XFxuXFxuXFx0fVxcblxcblxcdEdyaWRIZWxwZXIucHJvdG90eXBlLnNldENvbG9ycyA9IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuR3JpZEhlbHBlcjogc2V0Q29sb3JzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgcGFzcyB0aGVtIGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkLicgKTtcXG5cXG5cXHR9O1xcblxcblxcdFNrZWxldG9uSGVscGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlNrZWxldG9uSGVscGVyOiB1cGRhdGUoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgY2FsbGVkLicgKTtcXG5cXG5cXHR9O1xcblxcblxcdGZ1bmN0aW9uIFdpcmVmcmFtZUhlbHBlciggb2JqZWN0LCBoZXggKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2lyZWZyYW1lSGVscGVyIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5XaXJlZnJhbWVHZW9tZXRyeSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRyZXR1cm4gbmV3IExpbmVTZWdtZW50cyggbmV3IFdpcmVmcmFtZUdlb21ldHJ5KCBvYmplY3QuZ2VvbWV0cnkgKSwgbmV3IExpbmVCYXNpY01hdGVyaWFsKCB7IGNvbG9yOiBoZXggIT09IHVuZGVmaW5lZCA/IGhleCA6IDB4ZmZmZmZmIH0gKSApO1xcblxcblxcdH1cXG5cXG5cXHQvL1xcblxcblxcdE9iamVjdC5hc3NpZ24oIExvYWRlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRleHRyYWN0VXJsQmFzZTogZnVuY3Rpb24gKCB1cmwgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTG9hZGVyOiAuZXh0cmFjdFVybEJhc2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoKSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoIHVybCApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0ZnVuY3Rpb24gWEhSTG9hZGVyKCBtYW5hZ2VyICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlhIUkxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkZpbGVMb2FkZXIuJyApO1xcblxcdFxcdHJldHVybiBuZXcgRmlsZUxvYWRlciggbWFuYWdlciApO1xcblxcblxcdH1cXG5cXG5cXHRmdW5jdGlvbiBCaW5hcnlUZXh0dXJlTG9hZGVyKCBtYW5hZ2VyICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJpbmFyeVRleHR1cmVMb2FkZXIgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5EYXRhVGV4dHVyZUxvYWRlci4nICk7XFxuXFx0XFx0cmV0dXJuIG5ldyBEYXRhVGV4dHVyZUxvYWRlciggbWFuYWdlciApO1xcblxcblxcdH1cXG5cXG5cXHQvL1xcblxcblxcdE9iamVjdC5hc3NpZ24oIEJveDIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Y2VudGVyOiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJveDI6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0ZW1wdHk6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Cb3gyOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmlzRW1wdHkoKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGlzSW50ZXJzZWN0aW9uQm94OiBmdW5jdGlvbiAoIGJveCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Cb3gyOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmludGVyc2VjdHNCb3goIGJveCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0c2l6ZTogZnVuY3Rpb24gKCBvcHRpb25hbFRhcmdldCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Cb3gyOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2V0U2l6ZSggb3B0aW9uYWxUYXJnZXQgKTtcXG5cXG5cXHRcXHR9XFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5hc3NpZ24oIEJveDMucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Y2VudGVyOiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJveDM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0ZW1wdHk6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Cb3gzOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmlzRW1wdHkoKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGlzSW50ZXJzZWN0aW9uQm94OiBmdW5jdGlvbiAoIGJveCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmludGVyc2VjdHNCb3goIGJveCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0aXNJbnRlcnNlY3Rpb25TcGhlcmU6IGZ1bmN0aW9uICggc3BoZXJlICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuaW50ZXJzZWN0c1NwaGVyZSggc3BoZXJlICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRzaXplOiBmdW5jdGlvbiAoIG9wdGlvbmFsVGFyZ2V0ICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJveDM6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5nZXRTaXplKCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdFxcdH1cXG5cXHR9ICk7XFxuXFxuXFx0TGluZTMucHJvdG90eXBlLmNlbnRlciA9IGZ1bmN0aW9uICggb3B0aW9uYWxUYXJnZXQgKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGluZTM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4nICk7XFxuXFx0XFx0cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKCBvcHRpb25hbFRhcmdldCApO1xcblxcblxcdH07XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggX01hdGgsIHtcXG5cXG5cXHRcXHRyYW5kb20xNjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk1hdGg6IC5yYW5kb20xNigpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBNYXRoLnJhbmRvbSgpIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdHJldHVybiBNYXRoLnJhbmRvbSgpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bmVhcmVzdFBvd2VyT2ZUd286IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTWF0aDogLm5lYXJlc3RQb3dlck9mVHdvKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZmxvb3JQb3dlck9mVHdvKCkuJyApO1xcblxcdFxcdFxcdHJldHVybiBfTWF0aC5mbG9vclBvd2VyT2ZUd28oIHZhbHVlICk7XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRuZXh0UG93ZXJPZlR3bzogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRoOiAubmV4dFBvd2VyT2ZUd28oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5jZWlsUG93ZXJPZlR3bygpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gX01hdGguY2VpbFBvd2VyT2ZUd28oIHZhbHVlICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBNYXRyaXgzLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGZsYXR0ZW5Ub0FycmF5T2Zmc2V0OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCBcXFwiVEhSRUUuTWF0cml4MzogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC5cXFwiICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMudG9BcnJheSggYXJyYXksIG9mZnNldCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0bXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbiAoIHZlY3RvciApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdHJldHVybiB2ZWN0b3IuYXBwbHlNYXRyaXgzKCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRtdWx0aXBseVZlY3RvcjNBcnJheTogZnVuY3Rpb24gKCAvKiBhICovICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGFwcGx5VG9CdWZmZXI6IGZ1bmN0aW9uICggYnVmZmVyIC8qLCBvZmZzZXQsIGxlbmd0aCAqLyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb0J1ZmZlcigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXguYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSggYXR0cmlidXRlICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSggYnVmZmVyICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRhcHBseVRvVmVjdG9yM0FycmF5OiBmdW5jdGlvbiAoIC8qIGFycmF5LCBvZmZzZXQsIGxlbmd0aCAqLyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5hc3NpZ24oIE1hdHJpeDQucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0ZXh0cmFjdFBvc2l0aW9uOiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5jb3B5UG9zaXRpb24oIG0gKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGZsYXR0ZW5Ub0FycmF5T2Zmc2V0OiBmdW5jdGlvbiAoIGFycmF5LCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCBcXFwiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC5cXFwiICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMudG9BcnJheSggYXJyYXksIG9mZnNldCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0Z2V0UG9zaXRpb246IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHR2YXIgdjE7XFxuXFxuXFx0XFx0XFx0cmV0dXJuIGZ1bmN0aW9uIGdldFBvc2l0aW9uKCkge1xcblxcblxcdFxcdFxcdFxcdGlmICggdjEgPT09IHVuZGVmaW5lZCApIHYxID0gbmV3IFZlY3RvcjMoKTtcXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRyaXg0OiAuZ2V0UG9zaXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy5zZXRGcm9tTWF0cml4UG9zaXRpb24oIG1hdHJpeCApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB2MS5zZXRGcm9tTWF0cml4Q29sdW1uKCB0aGlzLCAzICk7XFxuXFxuXFx0XFx0XFx0fTtcXG5cXG5cXHRcXHR9KCksXFxuXFx0XFx0c2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbjogZnVuY3Rpb24gKCBxICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk1hdHJpeDQ6IC5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oIHEgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdG11bHRpcGx5VG9BcnJheTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVRvQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdG11bHRpcGx5VmVjdG9yMzogZnVuY3Rpb24gKCB2ZWN0b3IgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdmVjdG9yLmFwcGx5TWF0cml4NCggdGhpcyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0bXVsdGlwbHlWZWN0b3I0OiBmdW5jdGlvbiAoIHZlY3RvciApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdHJldHVybiB2ZWN0b3IuYXBwbHlNYXRyaXg0KCB0aGlzICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRtdWx0aXBseVZlY3RvcjNBcnJheTogZnVuY3Rpb24gKCAvKiBhICovICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdHJvdGF0ZUF4aXM6IGZ1bmN0aW9uICggdiApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRyaXg0OiAucm90YXRlQXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnRyYW5zZm9ybURpcmVjdGlvbiggbWF0cml4ICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0di50cmFuc2Zvcm1EaXJlY3Rpb24oIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGNyb3NzVmVjdG9yOiBmdW5jdGlvbiAoIHZlY3RvciApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHZlY3Rvci5hcHBseU1hdHJpeDQoIHRoaXMgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdHRyYW5zbGF0ZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRyb3RhdGVYOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLk1hdHJpeDQ6IC5yb3RhdGVYKCkgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRyb3RhdGVZOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLk1hdHJpeDQ6IC5yb3RhdGVZKCkgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRyb3RhdGVaOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRyb3RhdGVCeUF4aXM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuTWF0cml4NDogLnJvdGF0ZUJ5QXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuJyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0YXBwbHlUb0J1ZmZlcjogZnVuY3Rpb24gKCBidWZmZXIgLyosIG9mZnNldCwgbGVuZ3RoICovICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCBhdHRyaWJ1dGUgKSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCBidWZmZXIgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGFwcGx5VG9WZWN0b3IzQXJyYXk6IGZ1bmN0aW9uICggLyogYXJyYXksIG9mZnNldCwgbGVuZ3RoICovICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuJyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0bWFrZUZydXN0dW06IGZ1bmN0aW9uICggbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBuZWFyLCBmYXIgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTWF0cml4NDogLm1ha2VGcnVzdHVtKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5tYWtlUGVyc3BlY3RpdmUoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubWFrZVBlcnNwZWN0aXZlKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0UGxhbmUucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZSA9IGZ1bmN0aW9uICggbGluZSApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuJyApO1xcblxcdFxcdHJldHVybiB0aGlzLmludGVyc2VjdHNMaW5lKCBsaW5lICk7XFxuXFxuXFx0fTtcXG5cXG5cXHRRdWF0ZXJuaW9uLnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjMgPSBmdW5jdGlvbiAoIHZlY3RvciApIHtcXG5cXG5cXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGlzIG5vdyB2ZWN0b3IuYXBwbHlRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0cmV0dXJuIHZlY3Rvci5hcHBseVF1YXRlcm5pb24oIHRoaXMgKTtcXG5cXG5cXHR9O1xcblxcblxcdE9iamVjdC5hc3NpZ24oIFJheS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRpc0ludGVyc2VjdGlvbkJveDogZnVuY3Rpb24gKCBib3ggKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmludGVyc2VjdHNCb3goIGJveCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0aXNJbnRlcnNlY3Rpb25QbGFuZTogZnVuY3Rpb24gKCBwbGFuZSApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1BsYW5lKCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmludGVyc2VjdHNQbGFuZSggcGxhbmUgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGlzSW50ZXJzZWN0aW9uU3BoZXJlOiBmdW5jdGlvbiAoIHNwaGVyZSApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuaW50ZXJzZWN0c1NwaGVyZSggc3BoZXJlICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBTaGFwZS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRleHRyYWN0QWxsUG9pbnRzOiBmdW5jdGlvbiAoIGRpdmlzaW9ucyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5leHRyYWN0UG9pbnRzKCBkaXZpc2lvbnMgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGV4dHJ1ZGU6IGZ1bmN0aW9uICggb3B0aW9ucyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5TaGFwZTogLmV4dHJ1ZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXh0cnVkZUdlb21ldHJ5KCkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIG5ldyBFeHRydWRlR2VvbWV0cnkoIHRoaXMsIG9wdGlvbnMgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdG1ha2VHZW9tZXRyeTogZnVuY3Rpb24gKCBvcHRpb25zICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlNoYXBlOiAubWFrZUdlb21ldHJ5KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFNoYXBlR2VvbWV0cnkoKSBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gbmV3IFNoYXBlR2VvbWV0cnkoIHRoaXMsIG9wdGlvbnMgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5hc3NpZ24oIFZlY3RvcjIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0ZnJvbUF0dHJpYnV0ZTogZnVuY3Rpb24gKCBhdHRyaWJ1dGUsIGluZGV4LCBvZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMjogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUoIGF0dHJpYnV0ZSwgaW5kZXgsIG9mZnNldCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0ZGlzdGFuY2VUb01hbmhhdHRhbjogZnVuY3Rpb24gKCB2ICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjI6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKCB2ICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRsZW5ndGhNYW5oYXR0YW46IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IyOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLm1hbmhhdHRhbkxlbmd0aCgpO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggVmVjdG9yMy5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRzZXRFdWxlckZyb21Sb3RhdGlvbk1hdHJpeDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRzZXRFdWxlckZyb21RdWF0ZXJuaW9uOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21RdWF0ZXJuaW9uKCkgaW5zdGVhZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRnZXRQb3NpdGlvbkZyb21NYXRyaXg6IGZ1bmN0aW9uICggbSApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbSApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0Z2V0U2NhbGVGcm9tTWF0cml4OiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMzogLmdldFNjYWxlRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhTY2FsZSgpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4U2NhbGUoIG0gKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGdldENvbHVtbkZyb21NYXRyaXg6IGZ1bmN0aW9uICggaW5kZXgsIG1hdHJpeCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAuZ2V0Q29sdW1uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhDb2x1bW4oKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbiggbWF0cml4LCBpbmRleCApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0YXBwbHlQcm9qZWN0aW9uOiBmdW5jdGlvbiAoIG0gKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMzogLmFwcGx5UHJvamVjdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuYXBwbHlNYXRyaXg0KCBtICkgaW5zdGVhZC4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KCBtICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRmcm9tQXR0cmlidXRlOiBmdW5jdGlvbiAoIGF0dHJpYnV0ZSwgaW5kZXgsIG9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5WZWN0b3IzOiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSggYXR0cmlidXRlLCBpbmRleCwgb2Zmc2V0ICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRkaXN0YW5jZVRvTWFuaGF0dGFuOiBmdW5jdGlvbiAoIHYgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVmVjdG9yMzogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8oIHYgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGxlbmd0aE1hbmhhdHRhbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjM6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubWFuaGF0dGFuTGVuZ3RoKCk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBWZWN0b3I0LnByb3RvdHlwZSwge1xcblxcblxcdFxcdGZyb21BdHRyaWJ1dGU6IGZ1bmN0aW9uICggYXR0cmlidXRlLCBpbmRleCwgb2Zmc2V0ICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjQ6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKCBhdHRyaWJ1dGUsIGluZGV4LCBvZmZzZXQgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGxlbmd0aE1hbmhhdHRhbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMubWFuaGF0dGFuTGVuZ3RoKCk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvL1xcblxcblxcdEdlb21ldHJ5LnByb3RvdHlwZS5jb21wdXRlVGFuZ2VudHMgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuR2VvbWV0cnk6IC5jb21wdXRlVGFuZ2VudHMoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHR9O1xcblxcblxcdE9iamVjdC5hc3NpZ24oIE9iamVjdDNELnByb3RvdHlwZSwge1xcblxcblxcdFxcdGdldENoaWxkQnlOYW1lOiBmdW5jdGlvbiAoIG5hbWUgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuT2JqZWN0M0Q6IC5nZXRDaGlsZEJ5TmFtZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE9iamVjdEJ5TmFtZSgpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5nZXRPYmplY3RCeU5hbWUoIG5hbWUgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdHJlbmRlckRlcHRoOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdHRyYW5zbGF0ZTogZnVuY3Rpb24gKCBkaXN0YW5jZSwgYXhpcyApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5PYmplY3QzRDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAudHJhbnNsYXRlT25BeGlzKCBheGlzLCBkaXN0YW5jZSApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyggYXhpcywgZGlzdGFuY2UgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBPYmplY3QzRC5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRldWxlck9yZGVyOiB7XFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnJvdGF0aW9uLm9yZGVyO1xcblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnJvdGF0aW9uLm9yZGVyID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0dXNlUXVhdGVybmlvbjoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LicgKTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggTE9ELnByb3RvdHlwZSwge1xcblxcblxcdFxcdG9iamVjdHM6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5MT0Q6IC5vYmplY3RzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmxldmVscy4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMubGV2ZWxzO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggU2tlbGV0b24ucHJvdG90eXBlLCAndXNlVmVydGV4VGV4dHVyZScsIHtcXG5cXG5cXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5Ta2VsZXRvbjogdXNlVmVydGV4VGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdHNldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlNrZWxldG9uOiB1c2VWZXJ0ZXhUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuJyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KCBDdXJ2ZS5wcm90b3R5cGUsICdfX2FyY0xlbmd0aERpdmlzaW9ucycsIHtcXG5cXG5cXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5DdXJ2ZTogLl9fYXJjTGVuZ3RoRGl2aXNpb25zIGlzIG5vdyAuYXJjTGVuZ3RoRGl2aXNpb25zLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQ3VydmU6IC5fX2FyY0xlbmd0aERpdmlzaW9ucyBpcyBub3cgLmFyY0xlbmd0aERpdmlzaW9ucy4nICk7XFxuXFx0XFx0XFx0dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMgPSB2YWx1ZTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8vXFxuXFxuXFx0UGVyc3BlY3RpdmVDYW1lcmEucHJvdG90eXBlLnNldExlbnMgPSBmdW5jdGlvbiAoIGZvY2FsTGVuZ3RoLCBmaWxtR2F1Z2UgKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCBcXFwiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBcXFwiICtcXG5cXHRcXHRcXHRcXHRcXFwiVXNlIC5zZXRGb2NhbExlbmd0aCBhbmQgLmZpbG1HYXVnZSBmb3IgYSBwaG90b2dyYXBoaWMgc2V0dXAuXFxcIiApO1xcblxcblxcdFxcdGlmICggZmlsbUdhdWdlICE9PSB1bmRlZmluZWQgKSB0aGlzLmZpbG1HYXVnZSA9IGZpbG1HYXVnZTtcXG5cXHRcXHR0aGlzLnNldEZvY2FsTGVuZ3RoKCBmb2NhbExlbmd0aCApO1xcblxcblxcdH07XFxuXFxuXFx0Ly9cXG5cXG5cXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggTGlnaHQucHJvdG90eXBlLCB7XFxuXFx0XFx0b25seVNoYWRvdzoge1xcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkxpZ2h0OiAub25seVNoYWRvdyBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRzaGFkb3dDYW1lcmFGb3Y6IHtcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGb3YgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZvdi4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5zaGFkb3cuY2FtZXJhLmZvdiA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdFxcdHNoYWRvd0NhbWVyYUxlZnQ6IHtcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFMZWZ0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5sZWZ0LicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnNoYWRvdy5jYW1lcmEubGVmdCA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdFxcdHNoYWRvd0NhbWVyYVJpZ2h0OiB7XFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhUmlnaHQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnJpZ2h0LicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnNoYWRvdy5jYW1lcmEucmlnaHQgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRzaGFkb3dDYW1lcmFUb3A6IHtcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFUb3AgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnRvcC4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5zaGFkb3cuY2FtZXJhLnRvcCA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdFxcdHNoYWRvd0NhbWVyYUJvdHRvbToge1xcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUJvdHRvbSBpcyBub3cgLnNoYWRvdy5jYW1lcmEuYm90dG9tLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnNoYWRvdy5jYW1lcmEuYm90dG9tID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0c2hhZG93Q2FtZXJhTmVhcjoge1xcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYU5lYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLm5lYXIuJyApO1xcblxcdFxcdFxcdFxcdHRoaXMuc2hhZG93LmNhbWVyYS5uZWFyID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0c2hhZG93Q2FtZXJhRmFyOiB7XFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRmFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mYXIuJyApO1xcblxcdFxcdFxcdFxcdHRoaXMuc2hhZG93LmNhbWVyYS5mYXIgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRzaGFkb3dDYW1lcmFWaXNpYmxlOiB7XFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFWaXNpYmxlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQ2FtZXJhSGVscGVyKCBsaWdodC5zaGFkb3cuY2FtZXJhICkgaW5zdGVhZC4nICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0c2hhZG93Qmlhczoge1xcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5MaWdodDogLnNoYWRvd0JpYXMgaXMgbm93IC5zaGFkb3cuYmlhcy4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5zaGFkb3cuYmlhcyA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdFxcdHNoYWRvd0RhcmtuZXNzOiB7XFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGlnaHQ6IC5zaGFkb3dEYXJrbmVzcyBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRzaGFkb3dNYXBXaWR0aDoge1xcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5MaWdodDogLnNoYWRvd01hcFdpZHRoIGlzIG5vdyAuc2hhZG93Lm1hcFNpemUud2lkdGguJyApO1xcblxcdFxcdFxcdFxcdHRoaXMuc2hhZG93Lm1hcFNpemUud2lkdGggPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRzaGFkb3dNYXBIZWlnaHQ6IHtcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBIZWlnaHQgaXMgbm93IC5zaGFkb3cubWFwU2l6ZS5oZWlnaHQuJyApO1xcblxcdFxcdFxcdFxcdHRoaXMuc2hhZG93Lm1hcFNpemUuaGVpZ2h0ID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXHR9ICk7XFxuXFxuXFx0Ly9cXG5cXG5cXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggQnVmZmVyQXR0cmlidXRlLnByb3RvdHlwZSwge1xcblxcblxcdFxcdGxlbmd0aDoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmFycmF5Lmxlbmd0aDtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuYXNzaWduKCBCdWZmZXJHZW9tZXRyeS5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRhZGRJbmRleDogZnVuY3Rpb24gKCBpbmRleCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEluZGV4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0SW5kZXgoKS4nICk7XFxuXFx0XFx0XFx0dGhpcy5zZXRJbmRleCggaW5kZXggKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGFkZERyYXdDYWxsOiBmdW5jdGlvbiAoIHN0YXJ0LCBjb3VudCwgaW5kZXhPZmZzZXQgKSB7XFxuXFxuXFx0XFx0XFx0aWYgKCBpbmRleE9mZnNldCAhPT0gdW5kZWZpbmVkICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuJyApO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgaXMgbm93IC5hZGRHcm91cCgpLicgKTtcXG5cXHRcXHRcXHR0aGlzLmFkZEdyb3VwKCBzdGFydCwgY291bnQgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGNsZWFyRHJhd0NhbGxzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jbGVhckRyYXdDYWxscygpIGlzIG5vdyAuY2xlYXJHcm91cHMoKS4nICk7XFxuXFx0XFx0XFx0dGhpcy5jbGVhckdyb3VwcygpO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0Y29tcHV0ZVRhbmdlbnRzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlVGFuZ2VudHMoKSBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHR9LFxcblxcdFxcdGNvbXB1dGVPZmZzZXRzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlT2Zmc2V0cygpIGhhcyBiZWVuIHJlbW92ZWQuJyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIEJ1ZmZlckdlb21ldHJ5LnByb3RvdHlwZSwge1xcblxcblxcdFxcdGRyYXdjYWxsczoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmRyYXdjYWxscyBoYXMgYmVlbiByZW5hbWVkIHRvIC5ncm91cHMuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmdyb3VwcztcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRvZmZzZXRzOiB7XFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuZ3JvdXBzO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8vXFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFVuaWZvcm0ucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0ZHluYW1pYzoge1xcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlVuaWZvcm06IC5keW5hbWljIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBvYmplY3Qub25CZWZvcmVSZW5kZXIoKSBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRvblVwZGF0ZToge1xcblxcdFxcdFxcdHZhbHVlOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuVW5pZm9ybTogLm9uVXBkYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8vXFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIE1hdGVyaWFsLnByb3RvdHlwZSwge1xcblxcblxcdFxcdHdyYXBBcm91bmQ6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NYXRlcmlhbDogLndyYXBBcm91bmQgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0d3JhcFJHQjoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gbmV3IENvbG9yKCk7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c2hhZGluZzoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS4nICsgdGhpcy50eXBlICsgJzogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS4nICsgdGhpcy50eXBlICsgJzogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLmZsYXRTaGFkaW5nID0gKCB2YWx1ZSA9PT0gRmxhdFNoYWRpbmcgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggTWVzaFBob25nTWF0ZXJpYWwucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0bWV0YWw6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbDogLm1ldGFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCBpbnN0ZWFkLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbDogLm1ldGFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCBpbnN0ZWFkJyApO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBTaGFkZXJNYXRlcmlhbC5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRkZXJpdmF0aXZlczoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXM7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuJyApO1xcblxcdFxcdFxcdFxcdHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcyA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFxuXFx0fSApO1xcblxcblxcdC8vXFxuXFxuXFx0T2JqZWN0LmFzc2lnbiggV2ViR0xSZW5kZXJlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRnZXRDdXJyZW50UmVuZGVyVGFyZ2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5nZXRSZW5kZXJUYXJnZXQoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldE1heEFuaXNvdHJvcHk6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0TWF4QW5pc290cm9weSgpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGdldFByZWNpc2lvbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRQcmVjaXNpb24oKSBpcyBub3cgLmNhcGFiaWxpdGllcy5wcmVjaXNpb24uJyApO1xcblxcdFxcdFxcdHJldHVybiB0aGlzLmNhcGFiaWxpdGllcy5wcmVjaXNpb247XFxuXFxuXFx0XFx0fSxcXG5cXG5cXHRcXHRyZXNldEdMU3RhdGU6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5zdGF0ZS5yZXNldCgpO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0c3VwcG9ydHNGbG9hdFRleHR1cmVzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoIFxcXFwnT0VTX3RleHR1cmVfZmxvYXRcXFxcJyApLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0JyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0c3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlczogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggXFxcXCdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0XFxcXCcgKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0c3VwcG9ydHNTdGFuZGFyZERlcml2YXRpdmVzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoIFxcXFwnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzXFxcXCcgKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoICdPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMnICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRzdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQzogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoIFxcXFwnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGNcXFxcJyApLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0c3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoIFxcXFwnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjXFxcXCcgKS4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRzdXBwb3J0c0JsZW5kTWluTWF4OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQmxlbmRNaW5NYXgoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCBcXFxcJ0VYVF9ibGVuZF9taW5tYXhcXFxcJyApLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRzdXBwb3J0c1ZlcnRleFRleHR1cmVzOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMoKSBpcyBub3cgLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlcy4nICk7XFxuXFx0XFx0XFx0cmV0dXJuIHRoaXMuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0c3VwcG9ydHNJbnN0YW5jZWRBcnJheXM6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNJbnN0YW5jZWRBcnJheXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCBcXFxcJ0FOR0xFX2luc3RhbmNlZF9hcnJheXNcXFxcJyApLicgKTtcXG5cXHRcXHRcXHRyZXR1cm4gdGhpcy5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHRlbmFibGVTY2lzc29yVGVzdDogZnVuY3Rpb24gKCBib29sZWFuICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IC5lbmFibGVTY2lzc29yVGVzdCgpIGlzIG5vdyAuc2V0U2Npc3NvclRlc3QoKS4nICk7XFxuXFx0XFx0XFx0dGhpcy5zZXRTY2lzc29yVGVzdCggYm9vbGVhbiApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0aW5pdE1hdGVyaWFsOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLmluaXRNYXRlcmlhbCgpIGhhcyBiZWVuIHJlbW92ZWQuJyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0YWRkUHJlUGx1Z2luOiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFkZFByZVBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuJyApO1xcblxcblxcdFxcdH0sXFxuXFx0XFx0YWRkUG9zdFBsdWdpbjogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0fSxcXG5cXHRcXHR1cGRhdGVTaGFkb3dNYXA6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiAudXBkYXRlU2hhZG93TWFwKCkgaGFzIGJlZW4gcmVtb3ZlZC4nICk7XFxuXFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyggV2ViR0xSZW5kZXJlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRzaGFkb3dNYXBFbmFibGVkOiB7XFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMuc2hhZG93TWFwLmVuYWJsZWQ7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5zaGFkb3dNYXAuZW5hYmxlZCA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdFxcdHNoYWRvd01hcFR5cGU6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwVHlwZSBpcyBub3cgLnNoYWRvd01hcC50eXBlLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnNoYWRvd01hcC50eXBlID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0c2hhZG93TWFwQ3VsbEZhY2U6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy5zaGFkb3dNYXAuY3VsbEZhY2U7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEN1bGxGYWNlIGlzIG5vdyAuc2hhZG93TWFwLmN1bGxGYWNlLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnNoYWRvd01hcC5jdWxsRmFjZSA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0fSApO1xcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBXZWJHTFNoYWRvd01hcC5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRjdWxsRmFjZToge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnJlbmRlclJldmVyc2VTaWRlZCA/IEN1bGxGYWNlRnJvbnQgOiBDdWxsRmFjZUJhY2s7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggY3VsbEZhY2UgKSB7XFxuXFxuXFx0XFx0XFx0XFx0dmFyIHZhbHVlID0gKCBjdWxsRmFjZSAhPT0gQ3VsbEZhY2VCYWNrICk7XFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCBcXFwiV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBpcyBkZXByZWNhdGVkLiBTZXQgLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgdG8gXFxcIiArIHZhbHVlICsgXFxcIi5cXFwiICk7XFxuXFx0XFx0XFx0XFx0dGhpcy5yZW5kZXJSZXZlcnNlU2lkZWQgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvL1xcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBXZWJHTFJlbmRlclRhcmdldC5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHR3cmFwUzoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy50ZXh0dXJlLndyYXBTO1xcblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnRleHR1cmUud3JhcFMgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHR3cmFwVDoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy50ZXh0dXJlLndyYXBUO1xcblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnRleHR1cmUud3JhcFQgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRtYWdGaWx0ZXI6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcjtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnRleHR1cmUubWFnRmlsdGVyID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0bWluRmlsdGVyOiB7XFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudGV4dHVyZS5taW5GaWx0ZXI7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy50ZXh0dXJlLm1pbkZpbHRlciA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdFxcdGFuaXNvdHJvcHk6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmFuaXNvdHJvcHkgaXMgbm93IC50ZXh0dXJlLmFuaXNvdHJvcHkuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnRleHR1cmUuYW5pc290cm9weTtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmFuaXNvdHJvcHkgaXMgbm93IC50ZXh0dXJlLmFuaXNvdHJvcHkuJyApO1xcblxcdFxcdFxcdFxcdHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5ID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0b2Zmc2V0OiB7XFxuXFx0XFx0XFx0Z2V0OiBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudGV4dHVyZS5vZmZzZXQ7XFxuXFxuXFx0XFx0XFx0fSxcXG5cXHRcXHRcXHRzZXQ6IGZ1bmN0aW9uICggdmFsdWUgKSB7XFxuXFxuXFx0XFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy50ZXh0dXJlLm9mZnNldCA9IHZhbHVlO1xcblxcblxcdFxcdFxcdH1cXG5cXHRcXHR9LFxcblxcdFxcdHJlcGVhdDoge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuJyApO1xcblxcdFxcdFxcdFxcdHJldHVybiB0aGlzLnRleHR1cmUucmVwZWF0O1xcblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuJyApO1xcblxcdFxcdFxcdFxcdHRoaXMudGV4dHVyZS5yZXBlYXQgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRmb3JtYXQ6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy50ZXh0dXJlLmZvcm1hdDtcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnRleHR1cmUuZm9ybWF0ID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0sXFxuXFx0XFx0dHlwZToge1xcblxcdFxcdFxcdGdldDogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4nICk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIHRoaXMudGV4dHVyZS50eXBlO1xcblxcblxcdFxcdFxcdH0sXFxuXFx0XFx0XFx0c2V0OiBmdW5jdGlvbiAoIHZhbHVlICkge1xcblxcblxcdFxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4nICk7XFxuXFx0XFx0XFx0XFx0dGhpcy50ZXh0dXJlLnR5cGUgPSB2YWx1ZTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSxcXG5cXHRcXHRnZW5lcmF0ZU1pcG1hcHM6IHtcXG5cXHRcXHRcXHRnZXQ6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLicgKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztcXG5cXG5cXHRcXHRcXHR9LFxcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCB2YWx1ZSApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLicgKTtcXG5cXHRcXHRcXHRcXHR0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzID0gdmFsdWU7XFxuXFxuXFx0XFx0XFx0fVxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0Ly9cXG5cXG5cXHRPYmplY3QuYXNzaWduKCBXZWJWUk1hbmFnZXIucHJvdG90eXBlLCB7XFxuXFxuXFx0XFx0Z2V0U3RhbmRpbmdNYXRyaXg6IGZ1bmN0aW9uICgpIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJWUk1hbmFnZXI6IC5nZXRTdGFuZGluZ01hdHJpeCgpIGhhcyBiZWVuIHJlbW92ZWQuJyApO1xcblxcblxcdFxcdH1cXG5cXG5cXHR9ICk7XFxuXFxuXFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoIFdlYlZSTWFuYWdlci5wcm90b3R5cGUsIHtcXG5cXG5cXHRcXHRzdGFuZGluZzoge1xcblxcdFxcdFxcdHNldDogZnVuY3Rpb24gKCAvKiB2YWx1ZSAqLyApIHtcXG5cXG5cXHRcXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5XZWJWUk1hbmFnZXI6IC5zdGFuZGluZyBoYXMgYmVlbiByZW1vdmVkLicgKTtcXG5cXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcblxcdH0gKTtcXG5cXG5cXHQvL1xcblxcblxcdEF1ZGlvLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24gKCBmaWxlICkge1xcblxcblxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4nICk7XFxuXFx0XFx0dmFyIHNjb3BlID0gdGhpcztcXG5cXHRcXHR2YXIgYXVkaW9Mb2FkZXIgPSBuZXcgQXVkaW9Mb2FkZXIoKTtcXG5cXHRcXHRhdWRpb0xvYWRlci5sb2FkKCBmaWxlLCBmdW5jdGlvbiAoIGJ1ZmZlciApIHtcXG5cXG5cXHRcXHRcXHRzY29wZS5zZXRCdWZmZXIoIGJ1ZmZlciApO1xcblxcblxcdFxcdH0gKTtcXG5cXHRcXHRyZXR1cm4gdGhpcztcXG5cXG5cXHR9O1xcblxcblxcdEF1ZGlvQW5hbHlzZXIucHJvdG90eXBlLmdldERhdGEgPSBmdW5jdGlvbiAoKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQXVkaW9BbmFseXNlcjogLmdldERhdGEoKSBpcyBub3cgLmdldEZyZXF1ZW5jeURhdGEoKS4nICk7XFxuXFx0XFx0cmV0dXJuIHRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpO1xcblxcblxcdH07XFxuXFxuXFx0Ly9cXG5cXG5cXHRDdWJlQ2FtZXJhLnByb3RvdHlwZS51cGRhdGVDdWJlTWFwID0gZnVuY3Rpb24gKCByZW5kZXJlciwgc2NlbmUgKSB7XFxuXFxuXFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLicgKTtcXG5cXHRcXHRyZXR1cm4gdGhpcy51cGRhdGUoIHJlbmRlcmVyLCBzY2VuZSApO1xcblxcblxcdH07XFxuXFxuXFx0Ly9cXG5cXG5cXHR2YXIgR2VvbWV0cnlVdGlscyA9IHtcXG5cXG5cXHRcXHRtZXJnZTogZnVuY3Rpb24gKCBnZW9tZXRyeTEsIGdlb21ldHJ5MiwgbWF0ZXJpYWxJbmRleE9mZnNldCApIHtcXG5cXG5cXHRcXHRcXHRjb25zb2xlLndhcm4oICdUSFJFRS5HZW9tZXRyeVV0aWxzOiAubWVyZ2UoKSBoYXMgYmVlbiBtb3ZlZCB0byBHZW9tZXRyeS4gVXNlIGdlb21ldHJ5Lm1lcmdlKCBnZW9tZXRyeTIsIG1hdHJpeCwgbWF0ZXJpYWxJbmRleE9mZnNldCApIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdHZhciBtYXRyaXg7XFxuXFxuXFx0XFx0XFx0aWYgKCBnZW9tZXRyeTIuaXNNZXNoICkge1xcblxcblxcdFxcdFxcdFxcdGdlb21ldHJ5Mi5tYXRyaXhBdXRvVXBkYXRlICYmIGdlb21ldHJ5Mi51cGRhdGVNYXRyaXgoKTtcXG5cXG5cXHRcXHRcXHRcXHRtYXRyaXggPSBnZW9tZXRyeTIubWF0cml4O1xcblxcdFxcdFxcdFxcdGdlb21ldHJ5MiA9IGdlb21ldHJ5Mi5nZW9tZXRyeTtcXG5cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0XFx0Z2VvbWV0cnkxLm1lcmdlKCBnZW9tZXRyeTIsIG1hdHJpeCwgbWF0ZXJpYWxJbmRleE9mZnNldCApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0Y2VudGVyOiBmdW5jdGlvbiAoIGdlb21ldHJ5ICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkdlb21ldHJ5VXRpbHM6IC5jZW50ZXIoKSBoYXMgYmVlbiBtb3ZlZCB0byBHZW9tZXRyeS4gVXNlIGdlb21ldHJ5LmNlbnRlcigpIGluc3RlYWQuJyApO1xcblxcdFxcdFxcdHJldHVybiBnZW9tZXRyeS5jZW50ZXIoKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fTtcXG5cXG5cXHR2YXIgSW1hZ2VVdGlscyA9IHtcXG5cXG5cXHRcXHRjcm9zc09yaWdpbjogdW5kZWZpbmVkLFxcblxcblxcdFxcdGxvYWRUZXh0dXJlOiBmdW5jdGlvbiAoIHVybCwgbWFwcGluZywgb25Mb2FkLCBvbkVycm9yICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLlRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHRcXHR2YXIgbG9hZGVyID0gbmV3IFRleHR1cmVMb2FkZXIoKTtcXG5cXHRcXHRcXHRsb2FkZXIuc2V0Q3Jvc3NPcmlnaW4oIHRoaXMuY3Jvc3NPcmlnaW4gKTtcXG5cXG5cXHRcXHRcXHR2YXIgdGV4dHVyZSA9IGxvYWRlci5sb2FkKCB1cmwsIG9uTG9hZCwgdW5kZWZpbmVkLCBvbkVycm9yICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXBwaW5nICkgdGV4dHVyZS5tYXBwaW5nID0gbWFwcGluZztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGV4dHVyZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGxvYWRUZXh0dXJlQ3ViZTogZnVuY3Rpb24gKCB1cmxzLCBtYXBwaW5nLCBvbkxvYWQsIG9uRXJyb3IgKSB7XFxuXFxuXFx0XFx0XFx0Y29uc29sZS53YXJuKCAnVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZUN1YmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkN1YmVUZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4nICk7XFxuXFxuXFx0XFx0XFx0dmFyIGxvYWRlciA9IG5ldyBDdWJlVGV4dHVyZUxvYWRlcigpO1xcblxcdFxcdFxcdGxvYWRlci5zZXRDcm9zc09yaWdpbiggdGhpcy5jcm9zc09yaWdpbiApO1xcblxcblxcdFxcdFxcdHZhciB0ZXh0dXJlID0gbG9hZGVyLmxvYWQoIHVybHMsIG9uTG9hZCwgdW5kZWZpbmVkLCBvbkVycm9yICk7XFxuXFxuXFx0XFx0XFx0aWYgKCBtYXBwaW5nICkgdGV4dHVyZS5tYXBwaW5nID0gbWFwcGluZztcXG5cXG5cXHRcXHRcXHRyZXR1cm4gdGV4dHVyZTtcXG5cXG5cXHRcXHR9LFxcblxcblxcdFxcdGxvYWRDb21wcmVzc2VkVGV4dHVyZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuJyApO1xcblxcblxcdFxcdH0sXFxuXFxuXFx0XFx0bG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZTogZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLicgKTtcXG5cXG5cXHRcXHR9XFxuXFxuXFx0fTtcXG5cXG5cXHQvL1xcblxcblxcdGZ1bmN0aW9uIFByb2plY3RvcigpIHtcXG5cXG5cXHRcXHRjb25zb2xlLmVycm9yKCAnVEhSRUUuUHJvamVjdG9yIGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qcy9yZW5kZXJlcnMvUHJvamVjdG9yLmpzLicgKTtcXG5cXG5cXHRcXHR0aGlzLnByb2plY3RWZWN0b3IgPSBmdW5jdGlvbiAoIHZlY3RvciwgY2FtZXJhICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlByb2plY3RvcjogLnByb2plY3RWZWN0b3IoKSBpcyBub3cgdmVjdG9yLnByb2plY3QoKS4nICk7XFxuXFx0XFx0XFx0dmVjdG9yLnByb2plY3QoIGNhbWVyYSApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy51bnByb2plY3RWZWN0b3IgPSBmdW5jdGlvbiAoIHZlY3RvciwgY2FtZXJhICkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUud2FybiggJ1RIUkVFLlByb2plY3RvcjogLnVucHJvamVjdFZlY3RvcigpIGlzIG5vdyB2ZWN0b3IudW5wcm9qZWN0KCkuJyApO1xcblxcdFxcdFxcdHZlY3Rvci51bnByb2plY3QoIGNhbWVyYSApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0XFx0dGhpcy5waWNraW5nUmF5ID0gZnVuY3Rpb24gKCkge1xcblxcblxcdFxcdFxcdGNvbnNvbGUuZXJyb3IoICdUSFJFRS5Qcm9qZWN0b3I6IC5waWNraW5nUmF5KCkgaXMgbm93IHJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKCkuJyApO1xcblxcblxcdFxcdH07XFxuXFxuXFx0fVxcblxcblxcdC8vXFxuXFxuXFx0ZnVuY3Rpb24gQ2FudmFzUmVuZGVyZXIoKSB7XFxuXFxuXFx0XFx0Y29uc29sZS5lcnJvciggJ1RIUkVFLkNhbnZhc1JlbmRlcmVyIGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qcy9yZW5kZXJlcnMvQ2FudmFzUmVuZGVyZXIuanMnICk7XFxuXFxuXFx0XFx0dGhpcy5kb21FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdjYW52YXMnICk7XFxuXFx0XFx0dGhpcy5jbGVhciA9IGZ1bmN0aW9uICgpIHt9O1xcblxcdFxcdHRoaXMucmVuZGVyID0gZnVuY3Rpb24gKCkge307XFxuXFx0XFx0dGhpcy5zZXRDbGVhckNvbG9yID0gZnVuY3Rpb24gKCkge307XFxuXFx0XFx0dGhpcy5zZXRTaXplID0gZnVuY3Rpb24gKCkge307XFxuXFxuXFx0fVxcblxcblxcdGV4cG9ydHMuV2ViR0xSZW5kZXJUYXJnZXRDdWJlID0gV2ViR0xSZW5kZXJUYXJnZXRDdWJlO1xcblxcdGV4cG9ydHMuV2ViR0xSZW5kZXJUYXJnZXQgPSBXZWJHTFJlbmRlclRhcmdldDtcXG5cXHRleHBvcnRzLldlYkdMUmVuZGVyZXIgPSBXZWJHTFJlbmRlcmVyO1xcblxcdGV4cG9ydHMuU2hhZGVyTGliID0gU2hhZGVyTGliO1xcblxcdGV4cG9ydHMuVW5pZm9ybXNMaWIgPSBVbmlmb3Jtc0xpYjtcXG5cXHRleHBvcnRzLlVuaWZvcm1zVXRpbHMgPSBVbmlmb3Jtc1V0aWxzO1xcblxcdGV4cG9ydHMuU2hhZGVyQ2h1bmsgPSBTaGFkZXJDaHVuaztcXG5cXHRleHBvcnRzLkZvZ0V4cDIgPSBGb2dFeHAyO1xcblxcdGV4cG9ydHMuRm9nID0gRm9nO1xcblxcdGV4cG9ydHMuU2NlbmUgPSBTY2VuZTtcXG5cXHRleHBvcnRzLkxlbnNGbGFyZSA9IExlbnNGbGFyZTtcXG5cXHRleHBvcnRzLlNwcml0ZSA9IFNwcml0ZTtcXG5cXHRleHBvcnRzLkxPRCA9IExPRDtcXG5cXHRleHBvcnRzLlNraW5uZWRNZXNoID0gU2tpbm5lZE1lc2g7XFxuXFx0ZXhwb3J0cy5Ta2VsZXRvbiA9IFNrZWxldG9uO1xcblxcdGV4cG9ydHMuQm9uZSA9IEJvbmU7XFxuXFx0ZXhwb3J0cy5NZXNoID0gTWVzaDtcXG5cXHRleHBvcnRzLkxpbmVTZWdtZW50cyA9IExpbmVTZWdtZW50cztcXG5cXHRleHBvcnRzLkxpbmVMb29wID0gTGluZUxvb3A7XFxuXFx0ZXhwb3J0cy5MaW5lID0gTGluZTtcXG5cXHRleHBvcnRzLlBvaW50cyA9IFBvaW50cztcXG5cXHRleHBvcnRzLkdyb3VwID0gR3JvdXA7XFxuXFx0ZXhwb3J0cy5WaWRlb1RleHR1cmUgPSBWaWRlb1RleHR1cmU7XFxuXFx0ZXhwb3J0cy5EYXRhVGV4dHVyZSA9IERhdGFUZXh0dXJlO1xcblxcdGV4cG9ydHMuQ29tcHJlc3NlZFRleHR1cmUgPSBDb21wcmVzc2VkVGV4dHVyZTtcXG5cXHRleHBvcnRzLkN1YmVUZXh0dXJlID0gQ3ViZVRleHR1cmU7XFxuXFx0ZXhwb3J0cy5DYW52YXNUZXh0dXJlID0gQ2FudmFzVGV4dHVyZTtcXG5cXHRleHBvcnRzLkRlcHRoVGV4dHVyZSA9IERlcHRoVGV4dHVyZTtcXG5cXHRleHBvcnRzLlRleHR1cmUgPSBUZXh0dXJlO1xcblxcdGV4cG9ydHMuQ29tcHJlc3NlZFRleHR1cmVMb2FkZXIgPSBDb21wcmVzc2VkVGV4dHVyZUxvYWRlcjtcXG5cXHRleHBvcnRzLkRhdGFUZXh0dXJlTG9hZGVyID0gRGF0YVRleHR1cmVMb2FkZXI7XFxuXFx0ZXhwb3J0cy5DdWJlVGV4dHVyZUxvYWRlciA9IEN1YmVUZXh0dXJlTG9hZGVyO1xcblxcdGV4cG9ydHMuVGV4dHVyZUxvYWRlciA9IFRleHR1cmVMb2FkZXI7XFxuXFx0ZXhwb3J0cy5PYmplY3RMb2FkZXIgPSBPYmplY3RMb2FkZXI7XFxuXFx0ZXhwb3J0cy5NYXRlcmlhbExvYWRlciA9IE1hdGVyaWFsTG9hZGVyO1xcblxcdGV4cG9ydHMuQnVmZmVyR2VvbWV0cnlMb2FkZXIgPSBCdWZmZXJHZW9tZXRyeUxvYWRlcjtcXG5cXHRleHBvcnRzLkRlZmF1bHRMb2FkaW5nTWFuYWdlciA9IERlZmF1bHRMb2FkaW5nTWFuYWdlcjtcXG5cXHRleHBvcnRzLkxvYWRpbmdNYW5hZ2VyID0gTG9hZGluZ01hbmFnZXI7XFxuXFx0ZXhwb3J0cy5KU09OTG9hZGVyID0gSlNPTkxvYWRlcjtcXG5cXHRleHBvcnRzLkltYWdlTG9hZGVyID0gSW1hZ2VMb2FkZXI7XFxuXFx0ZXhwb3J0cy5JbWFnZUJpdG1hcExvYWRlciA9IEltYWdlQml0bWFwTG9hZGVyO1xcblxcdGV4cG9ydHMuRm9udExvYWRlciA9IEZvbnRMb2FkZXI7XFxuXFx0ZXhwb3J0cy5GaWxlTG9hZGVyID0gRmlsZUxvYWRlcjtcXG5cXHRleHBvcnRzLkxvYWRlciA9IExvYWRlcjtcXG5cXHRleHBvcnRzLkxvYWRlclV0aWxzID0gTG9hZGVyVXRpbHM7XFxuXFx0ZXhwb3J0cy5DYWNoZSA9IENhY2hlO1xcblxcdGV4cG9ydHMuQXVkaW9Mb2FkZXIgPSBBdWRpb0xvYWRlcjtcXG5cXHRleHBvcnRzLlNwb3RMaWdodFNoYWRvdyA9IFNwb3RMaWdodFNoYWRvdztcXG5cXHRleHBvcnRzLlNwb3RMaWdodCA9IFNwb3RMaWdodDtcXG5cXHRleHBvcnRzLlBvaW50TGlnaHQgPSBQb2ludExpZ2h0O1xcblxcdGV4cG9ydHMuUmVjdEFyZWFMaWdodCA9IFJlY3RBcmVhTGlnaHQ7XFxuXFx0ZXhwb3J0cy5IZW1pc3BoZXJlTGlnaHQgPSBIZW1pc3BoZXJlTGlnaHQ7XFxuXFx0ZXhwb3J0cy5EaXJlY3Rpb25hbExpZ2h0U2hhZG93ID0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdztcXG5cXHRleHBvcnRzLkRpcmVjdGlvbmFsTGlnaHQgPSBEaXJlY3Rpb25hbExpZ2h0O1xcblxcdGV4cG9ydHMuQW1iaWVudExpZ2h0ID0gQW1iaWVudExpZ2h0O1xcblxcdGV4cG9ydHMuTGlnaHRTaGFkb3cgPSBMaWdodFNoYWRvdztcXG5cXHRleHBvcnRzLkxpZ2h0ID0gTGlnaHQ7XFxuXFx0ZXhwb3J0cy5TdGVyZW9DYW1lcmEgPSBTdGVyZW9DYW1lcmE7XFxuXFx0ZXhwb3J0cy5QZXJzcGVjdGl2ZUNhbWVyYSA9IFBlcnNwZWN0aXZlQ2FtZXJhO1xcblxcdGV4cG9ydHMuT3J0aG9ncmFwaGljQ2FtZXJhID0gT3J0aG9ncmFwaGljQ2FtZXJhO1xcblxcdGV4cG9ydHMuQ3ViZUNhbWVyYSA9IEN1YmVDYW1lcmE7XFxuXFx0ZXhwb3J0cy5BcnJheUNhbWVyYSA9IEFycmF5Q2FtZXJhO1xcblxcdGV4cG9ydHMuQ2FtZXJhID0gQ2FtZXJhO1xcblxcdGV4cG9ydHMuQXVkaW9MaXN0ZW5lciA9IEF1ZGlvTGlzdGVuZXI7XFxuXFx0ZXhwb3J0cy5Qb3NpdGlvbmFsQXVkaW8gPSBQb3NpdGlvbmFsQXVkaW87XFxuXFx0ZXhwb3J0cy5BdWRpb0NvbnRleHQgPSBBdWRpb0NvbnRleHQ7XFxuXFx0ZXhwb3J0cy5BdWRpb0FuYWx5c2VyID0gQXVkaW9BbmFseXNlcjtcXG5cXHRleHBvcnRzLkF1ZGlvID0gQXVkaW87XFxuXFx0ZXhwb3J0cy5WZWN0b3JLZXlmcmFtZVRyYWNrID0gVmVjdG9yS2V5ZnJhbWVUcmFjaztcXG5cXHRleHBvcnRzLlN0cmluZ0tleWZyYW1lVHJhY2sgPSBTdHJpbmdLZXlmcmFtZVRyYWNrO1xcblxcdGV4cG9ydHMuUXVhdGVybmlvbktleWZyYW1lVHJhY2sgPSBRdWF0ZXJuaW9uS2V5ZnJhbWVUcmFjaztcXG5cXHRleHBvcnRzLk51bWJlcktleWZyYW1lVHJhY2sgPSBOdW1iZXJLZXlmcmFtZVRyYWNrO1xcblxcdGV4cG9ydHMuQ29sb3JLZXlmcmFtZVRyYWNrID0gQ29sb3JLZXlmcmFtZVRyYWNrO1xcblxcdGV4cG9ydHMuQm9vbGVhbktleWZyYW1lVHJhY2sgPSBCb29sZWFuS2V5ZnJhbWVUcmFjaztcXG5cXHRleHBvcnRzLlByb3BlcnR5TWl4ZXIgPSBQcm9wZXJ0eU1peGVyO1xcblxcdGV4cG9ydHMuUHJvcGVydHlCaW5kaW5nID0gUHJvcGVydHlCaW5kaW5nO1xcblxcdGV4cG9ydHMuS2V5ZnJhbWVUcmFjayA9IEtleWZyYW1lVHJhY2s7XFxuXFx0ZXhwb3J0cy5BbmltYXRpb25VdGlscyA9IEFuaW1hdGlvblV0aWxzO1xcblxcdGV4cG9ydHMuQW5pbWF0aW9uT2JqZWN0R3JvdXAgPSBBbmltYXRpb25PYmplY3RHcm91cDtcXG5cXHRleHBvcnRzLkFuaW1hdGlvbk1peGVyID0gQW5pbWF0aW9uTWl4ZXI7XFxuXFx0ZXhwb3J0cy5BbmltYXRpb25DbGlwID0gQW5pbWF0aW9uQ2xpcDtcXG5cXHRleHBvcnRzLlVuaWZvcm0gPSBVbmlmb3JtO1xcblxcdGV4cG9ydHMuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgPSBJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkJ1ZmZlckdlb21ldHJ5ID0gQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5HZW9tZXRyeSA9IEdlb21ldHJ5O1xcblxcdGV4cG9ydHMuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUgPSBJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLkluc3RhbmNlZEludGVybGVhdmVkQnVmZmVyID0gSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI7XFxuXFx0ZXhwb3J0cy5JbnRlcmxlYXZlZEJ1ZmZlciA9IEludGVybGVhdmVkQnVmZmVyO1xcblxcdGV4cG9ydHMuSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlID0gSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlO1xcblxcdGV4cG9ydHMuRmFjZTMgPSBGYWNlMztcXG5cXHRleHBvcnRzLk9iamVjdDNEID0gT2JqZWN0M0Q7XFxuXFx0ZXhwb3J0cy5SYXljYXN0ZXIgPSBSYXljYXN0ZXI7XFxuXFx0ZXhwb3J0cy5MYXllcnMgPSBMYXllcnM7XFxuXFx0ZXhwb3J0cy5FdmVudERpc3BhdGNoZXIgPSBFdmVudERpc3BhdGNoZXI7XFxuXFx0ZXhwb3J0cy5DbG9jayA9IENsb2NrO1xcblxcdGV4cG9ydHMuUXVhdGVybmlvbkxpbmVhckludGVycG9sYW50ID0gUXVhdGVybmlvbkxpbmVhckludGVycG9sYW50O1xcblxcdGV4cG9ydHMuTGluZWFySW50ZXJwb2xhbnQgPSBMaW5lYXJJbnRlcnBvbGFudDtcXG5cXHRleHBvcnRzLkRpc2NyZXRlSW50ZXJwb2xhbnQgPSBEaXNjcmV0ZUludGVycG9sYW50O1xcblxcdGV4cG9ydHMuQ3ViaWNJbnRlcnBvbGFudCA9IEN1YmljSW50ZXJwb2xhbnQ7XFxuXFx0ZXhwb3J0cy5JbnRlcnBvbGFudCA9IEludGVycG9sYW50O1xcblxcdGV4cG9ydHMuVHJpYW5nbGUgPSBUcmlhbmdsZTtcXG5cXHRleHBvcnRzLk1hdGggPSBfTWF0aDtcXG5cXHRleHBvcnRzLlNwaGVyaWNhbCA9IFNwaGVyaWNhbDtcXG5cXHRleHBvcnRzLkN5bGluZHJpY2FsID0gQ3lsaW5kcmljYWw7XFxuXFx0ZXhwb3J0cy5QbGFuZSA9IFBsYW5lO1xcblxcdGV4cG9ydHMuRnJ1c3R1bSA9IEZydXN0dW07XFxuXFx0ZXhwb3J0cy5TcGhlcmUgPSBTcGhlcmU7XFxuXFx0ZXhwb3J0cy5SYXkgPSBSYXk7XFxuXFx0ZXhwb3J0cy5NYXRyaXg0ID0gTWF0cml4NDtcXG5cXHRleHBvcnRzLk1hdHJpeDMgPSBNYXRyaXgzO1xcblxcdGV4cG9ydHMuQm94MyA9IEJveDM7XFxuXFx0ZXhwb3J0cy5Cb3gyID0gQm94MjtcXG5cXHRleHBvcnRzLkxpbmUzID0gTGluZTM7XFxuXFx0ZXhwb3J0cy5FdWxlciA9IEV1bGVyO1xcblxcdGV4cG9ydHMuVmVjdG9yNCA9IFZlY3RvcjQ7XFxuXFx0ZXhwb3J0cy5WZWN0b3IzID0gVmVjdG9yMztcXG5cXHRleHBvcnRzLlZlY3RvcjIgPSBWZWN0b3IyO1xcblxcdGV4cG9ydHMuUXVhdGVybmlvbiA9IFF1YXRlcm5pb247XFxuXFx0ZXhwb3J0cy5Db2xvciA9IENvbG9yO1xcblxcdGV4cG9ydHMuSW1tZWRpYXRlUmVuZGVyT2JqZWN0ID0gSW1tZWRpYXRlUmVuZGVyT2JqZWN0O1xcblxcdGV4cG9ydHMuVmVydGV4Tm9ybWFsc0hlbHBlciA9IFZlcnRleE5vcm1hbHNIZWxwZXI7XFxuXFx0ZXhwb3J0cy5TcG90TGlnaHRIZWxwZXIgPSBTcG90TGlnaHRIZWxwZXI7XFxuXFx0ZXhwb3J0cy5Ta2VsZXRvbkhlbHBlciA9IFNrZWxldG9uSGVscGVyO1xcblxcdGV4cG9ydHMuUG9pbnRMaWdodEhlbHBlciA9IFBvaW50TGlnaHRIZWxwZXI7XFxuXFx0ZXhwb3J0cy5SZWN0QXJlYUxpZ2h0SGVscGVyID0gUmVjdEFyZWFMaWdodEhlbHBlcjtcXG5cXHRleHBvcnRzLkhlbWlzcGhlcmVMaWdodEhlbHBlciA9IEhlbWlzcGhlcmVMaWdodEhlbHBlcjtcXG5cXHRleHBvcnRzLkdyaWRIZWxwZXIgPSBHcmlkSGVscGVyO1xcblxcdGV4cG9ydHMuUG9sYXJHcmlkSGVscGVyID0gUG9sYXJHcmlkSGVscGVyO1xcblxcdGV4cG9ydHMuRmFjZU5vcm1hbHNIZWxwZXIgPSBGYWNlTm9ybWFsc0hlbHBlcjtcXG5cXHRleHBvcnRzLkRpcmVjdGlvbmFsTGlnaHRIZWxwZXIgPSBEaXJlY3Rpb25hbExpZ2h0SGVscGVyO1xcblxcdGV4cG9ydHMuQ2FtZXJhSGVscGVyID0gQ2FtZXJhSGVscGVyO1xcblxcdGV4cG9ydHMuQm94SGVscGVyID0gQm94SGVscGVyO1xcblxcdGV4cG9ydHMuQm94M0hlbHBlciA9IEJveDNIZWxwZXI7XFxuXFx0ZXhwb3J0cy5QbGFuZUhlbHBlciA9IFBsYW5lSGVscGVyO1xcblxcdGV4cG9ydHMuQXJyb3dIZWxwZXIgPSBBcnJvd0hlbHBlcjtcXG5cXHRleHBvcnRzLkF4ZXNIZWxwZXIgPSBBeGVzSGVscGVyO1xcblxcdGV4cG9ydHMuU2hhcGUgPSBTaGFwZTtcXG5cXHRleHBvcnRzLlBhdGggPSBQYXRoO1xcblxcdGV4cG9ydHMuU2hhcGVQYXRoID0gU2hhcGVQYXRoO1xcblxcdGV4cG9ydHMuRm9udCA9IEZvbnQ7XFxuXFx0ZXhwb3J0cy5DdXJ2ZVBhdGggPSBDdXJ2ZVBhdGg7XFxuXFx0ZXhwb3J0cy5DdXJ2ZSA9IEN1cnZlO1xcblxcdGV4cG9ydHMuU2hhcGVVdGlscyA9IFNoYXBlVXRpbHM7XFxuXFx0ZXhwb3J0cy5TY2VuZVV0aWxzID0gU2NlbmVVdGlscztcXG5cXHRleHBvcnRzLldlYkdMVXRpbHMgPSBXZWJHTFV0aWxzO1xcblxcdGV4cG9ydHMuV2lyZWZyYW1lR2VvbWV0cnkgPSBXaXJlZnJhbWVHZW9tZXRyeTtcXG5cXHRleHBvcnRzLlBhcmFtZXRyaWNHZW9tZXRyeSA9IFBhcmFtZXRyaWNHZW9tZXRyeTtcXG5cXHRleHBvcnRzLlBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeSA9IFBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLlRldHJhaGVkcm9uR2VvbWV0cnkgPSBUZXRyYWhlZHJvbkdlb21ldHJ5O1xcblxcdGV4cG9ydHMuVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeSA9IFRldHJhaGVkcm9uQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5PY3RhaGVkcm9uR2VvbWV0cnkgPSBPY3RhaGVkcm9uR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5PY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnkgPSBPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5JY29zYWhlZHJvbkdlb21ldHJ5ID0gSWNvc2FoZWRyb25HZW9tZXRyeTtcXG5cXHRleHBvcnRzLkljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnkgPSBJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5O1xcblxcdGV4cG9ydHMuRG9kZWNhaGVkcm9uR2VvbWV0cnkgPSBEb2RlY2FoZWRyb25HZW9tZXRyeTtcXG5cXHRleHBvcnRzLkRvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5ID0gRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5Qb2x5aGVkcm9uR2VvbWV0cnkgPSBQb2x5aGVkcm9uR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5Qb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnkgPSBQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5UdWJlR2VvbWV0cnkgPSBUdWJlR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5UdWJlQnVmZmVyR2VvbWV0cnkgPSBUdWJlQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5Ub3J1c0tub3RHZW9tZXRyeSA9IFRvcnVzS25vdEdlb21ldHJ5O1xcblxcdGV4cG9ydHMuVG9ydXNLbm90QnVmZmVyR2VvbWV0cnkgPSBUb3J1c0tub3RCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLlRvcnVzR2VvbWV0cnkgPSBUb3J1c0dlb21ldHJ5O1xcblxcdGV4cG9ydHMuVG9ydXNCdWZmZXJHZW9tZXRyeSA9IFRvcnVzQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5UZXh0R2VvbWV0cnkgPSBUZXh0R2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5UZXh0QnVmZmVyR2VvbWV0cnkgPSBUZXh0QnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5TcGhlcmVHZW9tZXRyeSA9IFNwaGVyZUdlb21ldHJ5O1xcblxcdGV4cG9ydHMuU3BoZXJlQnVmZmVyR2VvbWV0cnkgPSBTcGhlcmVCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLlJpbmdHZW9tZXRyeSA9IFJpbmdHZW9tZXRyeTtcXG5cXHRleHBvcnRzLlJpbmdCdWZmZXJHZW9tZXRyeSA9IFJpbmdCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLlBsYW5lR2VvbWV0cnkgPSBQbGFuZUdlb21ldHJ5O1xcblxcdGV4cG9ydHMuUGxhbmVCdWZmZXJHZW9tZXRyeSA9IFBsYW5lQnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5MYXRoZUdlb21ldHJ5ID0gTGF0aGVHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkxhdGhlQnVmZmVyR2VvbWV0cnkgPSBMYXRoZUJ1ZmZlckdlb21ldHJ5O1xcblxcdGV4cG9ydHMuU2hhcGVHZW9tZXRyeSA9IFNoYXBlR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5TaGFwZUJ1ZmZlckdlb21ldHJ5ID0gU2hhcGVCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkV4dHJ1ZGVHZW9tZXRyeSA9IEV4dHJ1ZGVHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeSA9IEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkVkZ2VzR2VvbWV0cnkgPSBFZGdlc0dlb21ldHJ5O1xcblxcdGV4cG9ydHMuQ29uZUdlb21ldHJ5ID0gQ29uZUdlb21ldHJ5O1xcblxcdGV4cG9ydHMuQ29uZUJ1ZmZlckdlb21ldHJ5ID0gQ29uZUJ1ZmZlckdlb21ldHJ5O1xcblxcdGV4cG9ydHMuQ3lsaW5kZXJHZW9tZXRyeSA9IEN5bGluZGVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5DeWxpbmRlckJ1ZmZlckdlb21ldHJ5ID0gQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkNpcmNsZUdlb21ldHJ5ID0gQ2lyY2xlR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5DaXJjbGVCdWZmZXJHZW9tZXRyeSA9IENpcmNsZUJ1ZmZlckdlb21ldHJ5O1xcblxcdGV4cG9ydHMuQm94R2VvbWV0cnkgPSBCb3hHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkJveEJ1ZmZlckdlb21ldHJ5ID0gQm94QnVmZmVyR2VvbWV0cnk7XFxuXFx0ZXhwb3J0cy5TaGFkb3dNYXRlcmlhbCA9IFNoYWRvd01hdGVyaWFsO1xcblxcdGV4cG9ydHMuU3ByaXRlTWF0ZXJpYWwgPSBTcHJpdGVNYXRlcmlhbDtcXG5cXHRleHBvcnRzLlJhd1NoYWRlck1hdGVyaWFsID0gUmF3U2hhZGVyTWF0ZXJpYWw7XFxuXFx0ZXhwb3J0cy5TaGFkZXJNYXRlcmlhbCA9IFNoYWRlck1hdGVyaWFsO1xcblxcdGV4cG9ydHMuUG9pbnRzTWF0ZXJpYWwgPSBQb2ludHNNYXRlcmlhbDtcXG5cXHRleHBvcnRzLk1lc2hQaHlzaWNhbE1hdGVyaWFsID0gTWVzaFBoeXNpY2FsTWF0ZXJpYWw7XFxuXFx0ZXhwb3J0cy5NZXNoU3RhbmRhcmRNYXRlcmlhbCA9IE1lc2hTdGFuZGFyZE1hdGVyaWFsO1xcblxcdGV4cG9ydHMuTWVzaFBob25nTWF0ZXJpYWwgPSBNZXNoUGhvbmdNYXRlcmlhbDtcXG5cXHRleHBvcnRzLk1lc2hUb29uTWF0ZXJpYWwgPSBNZXNoVG9vbk1hdGVyaWFsO1xcblxcdGV4cG9ydHMuTWVzaE5vcm1hbE1hdGVyaWFsID0gTWVzaE5vcm1hbE1hdGVyaWFsO1xcblxcdGV4cG9ydHMuTWVzaExhbWJlcnRNYXRlcmlhbCA9IE1lc2hMYW1iZXJ0TWF0ZXJpYWw7XFxuXFx0ZXhwb3J0cy5NZXNoRGVwdGhNYXRlcmlhbCA9IE1lc2hEZXB0aE1hdGVyaWFsO1xcblxcdGV4cG9ydHMuTWVzaERpc3RhbmNlTWF0ZXJpYWwgPSBNZXNoRGlzdGFuY2VNYXRlcmlhbDtcXG5cXHRleHBvcnRzLk1lc2hCYXNpY01hdGVyaWFsID0gTWVzaEJhc2ljTWF0ZXJpYWw7XFxuXFx0ZXhwb3J0cy5MaW5lRGFzaGVkTWF0ZXJpYWwgPSBMaW5lRGFzaGVkTWF0ZXJpYWw7XFxuXFx0ZXhwb3J0cy5MaW5lQmFzaWNNYXRlcmlhbCA9IExpbmVCYXNpY01hdGVyaWFsO1xcblxcdGV4cG9ydHMuTWF0ZXJpYWwgPSBNYXRlcmlhbDtcXG5cXHRleHBvcnRzLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGUgPSBGbG9hdDY0QnVmZmVyQXR0cmlidXRlO1xcblxcdGV4cG9ydHMuRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSA9IEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU7XFxuXFx0ZXhwb3J0cy5VaW50MzJCdWZmZXJBdHRyaWJ1dGUgPSBVaW50MzJCdWZmZXJBdHRyaWJ1dGU7XFxuXFx0ZXhwb3J0cy5JbnQzMkJ1ZmZlckF0dHJpYnV0ZSA9IEludDMyQnVmZmVyQXR0cmlidXRlO1xcblxcdGV4cG9ydHMuVWludDE2QnVmZmVyQXR0cmlidXRlID0gVWludDE2QnVmZmVyQXR0cmlidXRlO1xcblxcdGV4cG9ydHMuSW50MTZCdWZmZXJBdHRyaWJ1dGUgPSBJbnQxNkJ1ZmZlckF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLlVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZSA9IFVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLlVpbnQ4QnVmZmVyQXR0cmlidXRlID0gVWludDhCdWZmZXJBdHRyaWJ1dGU7XFxuXFx0ZXhwb3J0cy5JbnQ4QnVmZmVyQXR0cmlidXRlID0gSW50OEJ1ZmZlckF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLkJ1ZmZlckF0dHJpYnV0ZSA9IEJ1ZmZlckF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLkFyY0N1cnZlID0gQXJjQ3VydmU7XFxuXFx0ZXhwb3J0cy5DYXRtdWxsUm9tQ3VydmUzID0gQ2F0bXVsbFJvbUN1cnZlMztcXG5cXHRleHBvcnRzLkN1YmljQmV6aWVyQ3VydmUgPSBDdWJpY0JlemllckN1cnZlO1xcblxcdGV4cG9ydHMuQ3ViaWNCZXppZXJDdXJ2ZTMgPSBDdWJpY0JlemllckN1cnZlMztcXG5cXHRleHBvcnRzLkVsbGlwc2VDdXJ2ZSA9IEVsbGlwc2VDdXJ2ZTtcXG5cXHRleHBvcnRzLkxpbmVDdXJ2ZSA9IExpbmVDdXJ2ZTtcXG5cXHRleHBvcnRzLkxpbmVDdXJ2ZTMgPSBMaW5lQ3VydmUzO1xcblxcdGV4cG9ydHMuUXVhZHJhdGljQmV6aWVyQ3VydmUgPSBRdWFkcmF0aWNCZXppZXJDdXJ2ZTtcXG5cXHRleHBvcnRzLlF1YWRyYXRpY0JlemllckN1cnZlMyA9IFF1YWRyYXRpY0JlemllckN1cnZlMztcXG5cXHRleHBvcnRzLlNwbGluZUN1cnZlID0gU3BsaW5lQ3VydmU7XFxuXFx0ZXhwb3J0cy5SRVZJU0lPTiA9IFJFVklTSU9OO1xcblxcdGV4cG9ydHMuTU9VU0UgPSBNT1VTRTtcXG5cXHRleHBvcnRzLkN1bGxGYWNlTm9uZSA9IEN1bGxGYWNlTm9uZTtcXG5cXHRleHBvcnRzLkN1bGxGYWNlQmFjayA9IEN1bGxGYWNlQmFjaztcXG5cXHRleHBvcnRzLkN1bGxGYWNlRnJvbnQgPSBDdWxsRmFjZUZyb250O1xcblxcdGV4cG9ydHMuQ3VsbEZhY2VGcm9udEJhY2sgPSBDdWxsRmFjZUZyb250QmFjaztcXG5cXHRleHBvcnRzLkZyb250RmFjZURpcmVjdGlvbkNXID0gRnJvbnRGYWNlRGlyZWN0aW9uQ1c7XFxuXFx0ZXhwb3J0cy5Gcm9udEZhY2VEaXJlY3Rpb25DQ1cgPSBGcm9udEZhY2VEaXJlY3Rpb25DQ1c7XFxuXFx0ZXhwb3J0cy5CYXNpY1NoYWRvd01hcCA9IEJhc2ljU2hhZG93TWFwO1xcblxcdGV4cG9ydHMuUENGU2hhZG93TWFwID0gUENGU2hhZG93TWFwO1xcblxcdGV4cG9ydHMuUENGU29mdFNoYWRvd01hcCA9IFBDRlNvZnRTaGFkb3dNYXA7XFxuXFx0ZXhwb3J0cy5Gcm9udFNpZGUgPSBGcm9udFNpZGU7XFxuXFx0ZXhwb3J0cy5CYWNrU2lkZSA9IEJhY2tTaWRlO1xcblxcdGV4cG9ydHMuRG91YmxlU2lkZSA9IERvdWJsZVNpZGU7XFxuXFx0ZXhwb3J0cy5GbGF0U2hhZGluZyA9IEZsYXRTaGFkaW5nO1xcblxcdGV4cG9ydHMuU21vb3RoU2hhZGluZyA9IFNtb290aFNoYWRpbmc7XFxuXFx0ZXhwb3J0cy5Ob0NvbG9ycyA9IE5vQ29sb3JzO1xcblxcdGV4cG9ydHMuRmFjZUNvbG9ycyA9IEZhY2VDb2xvcnM7XFxuXFx0ZXhwb3J0cy5WZXJ0ZXhDb2xvcnMgPSBWZXJ0ZXhDb2xvcnM7XFxuXFx0ZXhwb3J0cy5Ob0JsZW5kaW5nID0gTm9CbGVuZGluZztcXG5cXHRleHBvcnRzLk5vcm1hbEJsZW5kaW5nID0gTm9ybWFsQmxlbmRpbmc7XFxuXFx0ZXhwb3J0cy5BZGRpdGl2ZUJsZW5kaW5nID0gQWRkaXRpdmVCbGVuZGluZztcXG5cXHRleHBvcnRzLlN1YnRyYWN0aXZlQmxlbmRpbmcgPSBTdWJ0cmFjdGl2ZUJsZW5kaW5nO1xcblxcdGV4cG9ydHMuTXVsdGlwbHlCbGVuZGluZyA9IE11bHRpcGx5QmxlbmRpbmc7XFxuXFx0ZXhwb3J0cy5DdXN0b21CbGVuZGluZyA9IEN1c3RvbUJsZW5kaW5nO1xcblxcdGV4cG9ydHMuQWRkRXF1YXRpb24gPSBBZGRFcXVhdGlvbjtcXG5cXHRleHBvcnRzLlN1YnRyYWN0RXF1YXRpb24gPSBTdWJ0cmFjdEVxdWF0aW9uO1xcblxcdGV4cG9ydHMuUmV2ZXJzZVN1YnRyYWN0RXF1YXRpb24gPSBSZXZlcnNlU3VidHJhY3RFcXVhdGlvbjtcXG5cXHRleHBvcnRzLk1pbkVxdWF0aW9uID0gTWluRXF1YXRpb247XFxuXFx0ZXhwb3J0cy5NYXhFcXVhdGlvbiA9IE1heEVxdWF0aW9uO1xcblxcdGV4cG9ydHMuWmVyb0ZhY3RvciA9IFplcm9GYWN0b3I7XFxuXFx0ZXhwb3J0cy5PbmVGYWN0b3IgPSBPbmVGYWN0b3I7XFxuXFx0ZXhwb3J0cy5TcmNDb2xvckZhY3RvciA9IFNyY0NvbG9yRmFjdG9yO1xcblxcdGV4cG9ydHMuT25lTWludXNTcmNDb2xvckZhY3RvciA9IE9uZU1pbnVzU3JjQ29sb3JGYWN0b3I7XFxuXFx0ZXhwb3J0cy5TcmNBbHBoYUZhY3RvciA9IFNyY0FscGhhRmFjdG9yO1xcblxcdGV4cG9ydHMuT25lTWludXNTcmNBbHBoYUZhY3RvciA9IE9uZU1pbnVzU3JjQWxwaGFGYWN0b3I7XFxuXFx0ZXhwb3J0cy5Ec3RBbHBoYUZhY3RvciA9IERzdEFscGhhRmFjdG9yO1xcblxcdGV4cG9ydHMuT25lTWludXNEc3RBbHBoYUZhY3RvciA9IE9uZU1pbnVzRHN0QWxwaGFGYWN0b3I7XFxuXFx0ZXhwb3J0cy5Ec3RDb2xvckZhY3RvciA9IERzdENvbG9yRmFjdG9yO1xcblxcdGV4cG9ydHMuT25lTWludXNEc3RDb2xvckZhY3RvciA9IE9uZU1pbnVzRHN0Q29sb3JGYWN0b3I7XFxuXFx0ZXhwb3J0cy5TcmNBbHBoYVNhdHVyYXRlRmFjdG9yID0gU3JjQWxwaGFTYXR1cmF0ZUZhY3RvcjtcXG5cXHRleHBvcnRzLk5ldmVyRGVwdGggPSBOZXZlckRlcHRoO1xcblxcdGV4cG9ydHMuQWx3YXlzRGVwdGggPSBBbHdheXNEZXB0aDtcXG5cXHRleHBvcnRzLkxlc3NEZXB0aCA9IExlc3NEZXB0aDtcXG5cXHRleHBvcnRzLkxlc3NFcXVhbERlcHRoID0gTGVzc0VxdWFsRGVwdGg7XFxuXFx0ZXhwb3J0cy5FcXVhbERlcHRoID0gRXF1YWxEZXB0aDtcXG5cXHRleHBvcnRzLkdyZWF0ZXJFcXVhbERlcHRoID0gR3JlYXRlckVxdWFsRGVwdGg7XFxuXFx0ZXhwb3J0cy5HcmVhdGVyRGVwdGggPSBHcmVhdGVyRGVwdGg7XFxuXFx0ZXhwb3J0cy5Ob3RFcXVhbERlcHRoID0gTm90RXF1YWxEZXB0aDtcXG5cXHRleHBvcnRzLk11bHRpcGx5T3BlcmF0aW9uID0gTXVsdGlwbHlPcGVyYXRpb247XFxuXFx0ZXhwb3J0cy5NaXhPcGVyYXRpb24gPSBNaXhPcGVyYXRpb247XFxuXFx0ZXhwb3J0cy5BZGRPcGVyYXRpb24gPSBBZGRPcGVyYXRpb247XFxuXFx0ZXhwb3J0cy5Ob1RvbmVNYXBwaW5nID0gTm9Ub25lTWFwcGluZztcXG5cXHRleHBvcnRzLkxpbmVhclRvbmVNYXBwaW5nID0gTGluZWFyVG9uZU1hcHBpbmc7XFxuXFx0ZXhwb3J0cy5SZWluaGFyZFRvbmVNYXBwaW5nID0gUmVpbmhhcmRUb25lTWFwcGluZztcXG5cXHRleHBvcnRzLlVuY2hhcnRlZDJUb25lTWFwcGluZyA9IFVuY2hhcnRlZDJUb25lTWFwcGluZztcXG5cXHRleHBvcnRzLkNpbmVvblRvbmVNYXBwaW5nID0gQ2luZW9uVG9uZU1hcHBpbmc7XFxuXFx0ZXhwb3J0cy5VVk1hcHBpbmcgPSBVVk1hcHBpbmc7XFxuXFx0ZXhwb3J0cy5DdWJlUmVmbGVjdGlvbk1hcHBpbmcgPSBDdWJlUmVmbGVjdGlvbk1hcHBpbmc7XFxuXFx0ZXhwb3J0cy5DdWJlUmVmcmFjdGlvbk1hcHBpbmcgPSBDdWJlUmVmcmFjdGlvbk1hcHBpbmc7XFxuXFx0ZXhwb3J0cy5FcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZyA9IEVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nO1xcblxcdGV4cG9ydHMuRXF1aXJlY3Rhbmd1bGFyUmVmcmFjdGlvbk1hcHBpbmcgPSBFcXVpcmVjdGFuZ3VsYXJSZWZyYWN0aW9uTWFwcGluZztcXG5cXHRleHBvcnRzLlNwaGVyaWNhbFJlZmxlY3Rpb25NYXBwaW5nID0gU3BoZXJpY2FsUmVmbGVjdGlvbk1hcHBpbmc7XFxuXFx0ZXhwb3J0cy5DdWJlVVZSZWZsZWN0aW9uTWFwcGluZyA9IEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nO1xcblxcdGV4cG9ydHMuQ3ViZVVWUmVmcmFjdGlvbk1hcHBpbmcgPSBDdWJlVVZSZWZyYWN0aW9uTWFwcGluZztcXG5cXHRleHBvcnRzLlJlcGVhdFdyYXBwaW5nID0gUmVwZWF0V3JhcHBpbmc7XFxuXFx0ZXhwb3J0cy5DbGFtcFRvRWRnZVdyYXBwaW5nID0gQ2xhbXBUb0VkZ2VXcmFwcGluZztcXG5cXHRleHBvcnRzLk1pcnJvcmVkUmVwZWF0V3JhcHBpbmcgPSBNaXJyb3JlZFJlcGVhdFdyYXBwaW5nO1xcblxcdGV4cG9ydHMuTmVhcmVzdEZpbHRlciA9IE5lYXJlc3RGaWx0ZXI7XFxuXFx0ZXhwb3J0cy5OZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlciA9IE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyO1xcblxcdGV4cG9ydHMuTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlciA9IE5lYXJlc3RNaXBNYXBMaW5lYXJGaWx0ZXI7XFxuXFx0ZXhwb3J0cy5MaW5lYXJGaWx0ZXIgPSBMaW5lYXJGaWx0ZXI7XFxuXFx0ZXhwb3J0cy5MaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyID0gTGluZWFyTWlwTWFwTmVhcmVzdEZpbHRlcjtcXG5cXHRleHBvcnRzLkxpbmVhck1pcE1hcExpbmVhckZpbHRlciA9IExpbmVhck1pcE1hcExpbmVhckZpbHRlcjtcXG5cXHRleHBvcnRzLlVuc2lnbmVkQnl0ZVR5cGUgPSBVbnNpZ25lZEJ5dGVUeXBlO1xcblxcdGV4cG9ydHMuQnl0ZVR5cGUgPSBCeXRlVHlwZTtcXG5cXHRleHBvcnRzLlNob3J0VHlwZSA9IFNob3J0VHlwZTtcXG5cXHRleHBvcnRzLlVuc2lnbmVkU2hvcnRUeXBlID0gVW5zaWduZWRTaG9ydFR5cGU7XFxuXFx0ZXhwb3J0cy5JbnRUeXBlID0gSW50VHlwZTtcXG5cXHRleHBvcnRzLlVuc2lnbmVkSW50VHlwZSA9IFVuc2lnbmVkSW50VHlwZTtcXG5cXHRleHBvcnRzLkZsb2F0VHlwZSA9IEZsb2F0VHlwZTtcXG5cXHRleHBvcnRzLkhhbGZGbG9hdFR5cGUgPSBIYWxmRmxvYXRUeXBlO1xcblxcdGV4cG9ydHMuVW5zaWduZWRTaG9ydDQ0NDRUeXBlID0gVW5zaWduZWRTaG9ydDQ0NDRUeXBlO1xcblxcdGV4cG9ydHMuVW5zaWduZWRTaG9ydDU1NTFUeXBlID0gVW5zaWduZWRTaG9ydDU1NTFUeXBlO1xcblxcdGV4cG9ydHMuVW5zaWduZWRTaG9ydDU2NVR5cGUgPSBVbnNpZ25lZFNob3J0NTY1VHlwZTtcXG5cXHRleHBvcnRzLlVuc2lnbmVkSW50MjQ4VHlwZSA9IFVuc2lnbmVkSW50MjQ4VHlwZTtcXG5cXHRleHBvcnRzLkFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXQ7XFxuXFx0ZXhwb3J0cy5SR0JGb3JtYXQgPSBSR0JGb3JtYXQ7XFxuXFx0ZXhwb3J0cy5SR0JBRm9ybWF0ID0gUkdCQUZvcm1hdDtcXG5cXHRleHBvcnRzLkx1bWluYW5jZUZvcm1hdCA9IEx1bWluYW5jZUZvcm1hdDtcXG5cXHRleHBvcnRzLkx1bWluYW5jZUFscGhhRm9ybWF0ID0gTHVtaW5hbmNlQWxwaGFGb3JtYXQ7XFxuXFx0ZXhwb3J0cy5SR0JFRm9ybWF0ID0gUkdCRUZvcm1hdDtcXG5cXHRleHBvcnRzLkRlcHRoRm9ybWF0ID0gRGVwdGhGb3JtYXQ7XFxuXFx0ZXhwb3J0cy5EZXB0aFN0ZW5jaWxGb3JtYXQgPSBEZXB0aFN0ZW5jaWxGb3JtYXQ7XFxuXFx0ZXhwb3J0cy5SR0JfUzNUQ19EWFQxX0Zvcm1hdCA9IFJHQl9TM1RDX0RYVDFfRm9ybWF0O1xcblxcdGV4cG9ydHMuUkdCQV9TM1RDX0RYVDFfRm9ybWF0ID0gUkdCQV9TM1RDX0RYVDFfRm9ybWF0O1xcblxcdGV4cG9ydHMuUkdCQV9TM1RDX0RYVDNfRm9ybWF0ID0gUkdCQV9TM1RDX0RYVDNfRm9ybWF0O1xcblxcdGV4cG9ydHMuUkdCQV9TM1RDX0RYVDVfRm9ybWF0ID0gUkdCQV9TM1RDX0RYVDVfRm9ybWF0O1xcblxcdGV4cG9ydHMuUkdCX1BWUlRDXzRCUFBWMV9Gb3JtYXQgPSBSR0JfUFZSVENfNEJQUFYxX0Zvcm1hdDtcXG5cXHRleHBvcnRzLlJHQl9QVlJUQ18yQlBQVjFfRm9ybWF0ID0gUkdCX1BWUlRDXzJCUFBWMV9Gb3JtYXQ7XFxuXFx0ZXhwb3J0cy5SR0JBX1BWUlRDXzRCUFBWMV9Gb3JtYXQgPSBSR0JBX1BWUlRDXzRCUFBWMV9Gb3JtYXQ7XFxuXFx0ZXhwb3J0cy5SR0JBX1BWUlRDXzJCUFBWMV9Gb3JtYXQgPSBSR0JBX1BWUlRDXzJCUFBWMV9Gb3JtYXQ7XFxuXFx0ZXhwb3J0cy5SR0JfRVRDMV9Gb3JtYXQgPSBSR0JfRVRDMV9Gb3JtYXQ7XFxuXFx0ZXhwb3J0cy5Mb29wT25jZSA9IExvb3BPbmNlO1xcblxcdGV4cG9ydHMuTG9vcFJlcGVhdCA9IExvb3BSZXBlYXQ7XFxuXFx0ZXhwb3J0cy5Mb29wUGluZ1BvbmcgPSBMb29wUGluZ1Bvbmc7XFxuXFx0ZXhwb3J0cy5JbnRlcnBvbGF0ZURpc2NyZXRlID0gSW50ZXJwb2xhdGVEaXNjcmV0ZTtcXG5cXHRleHBvcnRzLkludGVycG9sYXRlTGluZWFyID0gSW50ZXJwb2xhdGVMaW5lYXI7XFxuXFx0ZXhwb3J0cy5JbnRlcnBvbGF0ZVNtb290aCA9IEludGVycG9sYXRlU21vb3RoO1xcblxcdGV4cG9ydHMuWmVyb0N1cnZhdHVyZUVuZGluZyA9IFplcm9DdXJ2YXR1cmVFbmRpbmc7XFxuXFx0ZXhwb3J0cy5aZXJvU2xvcGVFbmRpbmcgPSBaZXJvU2xvcGVFbmRpbmc7XFxuXFx0ZXhwb3J0cy5XcmFwQXJvdW5kRW5kaW5nID0gV3JhcEFyb3VuZEVuZGluZztcXG5cXHRleHBvcnRzLlRyaWFuZ2xlc0RyYXdNb2RlID0gVHJpYW5nbGVzRHJhd01vZGU7XFxuXFx0ZXhwb3J0cy5UcmlhbmdsZVN0cmlwRHJhd01vZGUgPSBUcmlhbmdsZVN0cmlwRHJhd01vZGU7XFxuXFx0ZXhwb3J0cy5UcmlhbmdsZUZhbkRyYXdNb2RlID0gVHJpYW5nbGVGYW5EcmF3TW9kZTtcXG5cXHRleHBvcnRzLkxpbmVhckVuY29kaW5nID0gTGluZWFyRW5jb2Rpbmc7XFxuXFx0ZXhwb3J0cy5zUkdCRW5jb2RpbmcgPSBzUkdCRW5jb2Rpbmc7XFxuXFx0ZXhwb3J0cy5HYW1tYUVuY29kaW5nID0gR2FtbWFFbmNvZGluZztcXG5cXHRleHBvcnRzLlJHQkVFbmNvZGluZyA9IFJHQkVFbmNvZGluZztcXG5cXHRleHBvcnRzLkxvZ0x1dkVuY29kaW5nID0gTG9nTHV2RW5jb2Rpbmc7XFxuXFx0ZXhwb3J0cy5SR0JNN0VuY29kaW5nID0gUkdCTTdFbmNvZGluZztcXG5cXHRleHBvcnRzLlJHQk0xNkVuY29kaW5nID0gUkdCTTE2RW5jb2Rpbmc7XFxuXFx0ZXhwb3J0cy5SR0JERW5jb2RpbmcgPSBSR0JERW5jb2Rpbmc7XFxuXFx0ZXhwb3J0cy5CYXNpY0RlcHRoUGFja2luZyA9IEJhc2ljRGVwdGhQYWNraW5nO1xcblxcdGV4cG9ydHMuUkdCQURlcHRoUGFja2luZyA9IFJHQkFEZXB0aFBhY2tpbmc7XFxuXFx0ZXhwb3J0cy5DdWJlR2VvbWV0cnkgPSBCb3hHZW9tZXRyeTtcXG5cXHRleHBvcnRzLkZhY2U0ID0gRmFjZTQ7XFxuXFx0ZXhwb3J0cy5MaW5lU3RyaXAgPSBMaW5lU3RyaXA7XFxuXFx0ZXhwb3J0cy5MaW5lUGllY2VzID0gTGluZVBpZWNlcztcXG5cXHRleHBvcnRzLk1lc2hGYWNlTWF0ZXJpYWwgPSBNZXNoRmFjZU1hdGVyaWFsO1xcblxcdGV4cG9ydHMuTXVsdGlNYXRlcmlhbCA9IE11bHRpTWF0ZXJpYWw7XFxuXFx0ZXhwb3J0cy5Qb2ludENsb3VkID0gUG9pbnRDbG91ZDtcXG5cXHRleHBvcnRzLlBhcnRpY2xlID0gUGFydGljbGU7XFxuXFx0ZXhwb3J0cy5QYXJ0aWNsZVN5c3RlbSA9IFBhcnRpY2xlU3lzdGVtO1xcblxcdGV4cG9ydHMuUG9pbnRDbG91ZE1hdGVyaWFsID0gUG9pbnRDbG91ZE1hdGVyaWFsO1xcblxcdGV4cG9ydHMuUGFydGljbGVCYXNpY01hdGVyaWFsID0gUGFydGljbGVCYXNpY01hdGVyaWFsO1xcblxcdGV4cG9ydHMuUGFydGljbGVTeXN0ZW1NYXRlcmlhbCA9IFBhcnRpY2xlU3lzdGVtTWF0ZXJpYWw7XFxuXFx0ZXhwb3J0cy5WZXJ0ZXggPSBWZXJ0ZXg7XFxuXFx0ZXhwb3J0cy5EeW5hbWljQnVmZmVyQXR0cmlidXRlID0gRHluYW1pY0J1ZmZlckF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLkludDhBdHRyaWJ1dGUgPSBJbnQ4QXR0cmlidXRlO1xcblxcdGV4cG9ydHMuVWludDhBdHRyaWJ1dGUgPSBVaW50OEF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLlVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSA9IFVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLkludDE2QXR0cmlidXRlID0gSW50MTZBdHRyaWJ1dGU7XFxuXFx0ZXhwb3J0cy5VaW50MTZBdHRyaWJ1dGUgPSBVaW50MTZBdHRyaWJ1dGU7XFxuXFx0ZXhwb3J0cy5JbnQzMkF0dHJpYnV0ZSA9IEludDMyQXR0cmlidXRlO1xcblxcdGV4cG9ydHMuVWludDMyQXR0cmlidXRlID0gVWludDMyQXR0cmlidXRlO1xcblxcdGV4cG9ydHMuRmxvYXQzMkF0dHJpYnV0ZSA9IEZsb2F0MzJBdHRyaWJ1dGU7XFxuXFx0ZXhwb3J0cy5GbG9hdDY0QXR0cmlidXRlID0gRmxvYXQ2NEF0dHJpYnV0ZTtcXG5cXHRleHBvcnRzLkNsb3NlZFNwbGluZUN1cnZlMyA9IENsb3NlZFNwbGluZUN1cnZlMztcXG5cXHRleHBvcnRzLlNwbGluZUN1cnZlMyA9IFNwbGluZUN1cnZlMztcXG5cXHRleHBvcnRzLlNwbGluZSA9IFNwbGluZTtcXG5cXHRleHBvcnRzLkF4aXNIZWxwZXIgPSBBeGlzSGVscGVyO1xcblxcdGV4cG9ydHMuQm91bmRpbmdCb3hIZWxwZXIgPSBCb3VuZGluZ0JveEhlbHBlcjtcXG5cXHRleHBvcnRzLkVkZ2VzSGVscGVyID0gRWRnZXNIZWxwZXI7XFxuXFx0ZXhwb3J0cy5XaXJlZnJhbWVIZWxwZXIgPSBXaXJlZnJhbWVIZWxwZXI7XFxuXFx0ZXhwb3J0cy5YSFJMb2FkZXIgPSBYSFJMb2FkZXI7XFxuXFx0ZXhwb3J0cy5CaW5hcnlUZXh0dXJlTG9hZGVyID0gQmluYXJ5VGV4dHVyZUxvYWRlcjtcXG5cXHRleHBvcnRzLkdlb21ldHJ5VXRpbHMgPSBHZW9tZXRyeVV0aWxzO1xcblxcdGV4cG9ydHMuSW1hZ2VVdGlscyA9IEltYWdlVXRpbHM7XFxuXFx0ZXhwb3J0cy5Qcm9qZWN0b3IgPSBQcm9qZWN0b3I7XFxuXFx0ZXhwb3J0cy5DYW52YXNSZW5kZXJlciA9IENhbnZhc1JlbmRlcmVyO1xcblxcblxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XFxuXFxufSkpKTtcXG5cIiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///621\n")},642:module=>{eval('/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== "undefined")\n\t\t&& (console.error || console.log)("[Script Loader]", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== "undefined" && typeof addEventListener === "undefined";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== "undefined" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== "undefined") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog("EvalError: No eval function available");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjQyLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoLy4vbm9kZV9tb2R1bGVzL3NjcmlwdC1sb2FkZXIvYWRkU2NyaXB0LmpzP2YyYjUiXSwic291cmNlc0NvbnRlbnQiOlsiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oc3JjKSB7XG5cdGZ1bmN0aW9uIGxvZyhlcnJvcikge1xuXHRcdCh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIilcblx0XHQmJiAoY29uc29sZS5lcnJvciB8fCBjb25zb2xlLmxvZykoXCJbU2NyaXB0IExvYWRlcl1cIiwgZXJyb3IpO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIElFID08IDhcblx0ZnVuY3Rpb24gaXNJRSgpIHtcblx0XHRyZXR1cm4gdHlwZW9mIGF0dGFjaEV2ZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBhZGRFdmVudExpc3RlbmVyID09PSBcInVuZGVmaW5lZFwiO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRpZiAodHlwZW9mIGV4ZWNTY3JpcHQgIT09IFwidW5kZWZpbmVkXCIgJiYgaXNJRSgpKSB7XG5cdFx0XHRleGVjU2NyaXB0KHNyYyk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgZXZhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdFx0ZXZhbC5jYWxsKG51bGwsIHNyYyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZyhcIkV2YWxFcnJvcjogTm8gZXZhbCBmdW5jdGlvbiBhdmFpbGFibGVcIik7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGxvZyhlcnJvcik7XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///642\n')},172:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("__webpack_require__(642)(__webpack_require__(585))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsR0FBNkUsRUFBRSxtQkFBTyxDQUFDLEdBQW9IIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZGFzaC8uL2pzL1V0aWxzLmpzPzdiNWYiXSwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZShcIiEhL1VzZXJzL2xuZHN0b2wvRGV2L2Rhc2gvc2ltdWxhdG9yL25vZGVfbW9kdWxlcy9zY3JpcHQtbG9hZGVyL2FkZFNjcmlwdC5qc1wiKShyZXF1aXJlKFwiISEvVXNlcnMvbG5kc3RvbC9EZXYvZGFzaC9zaW11bGF0b3Ivbm9kZV9tb2R1bGVzL3Jhdy1sb2FkZXIvaW5kZXguanMhL1VzZXJzL2xuZHN0b2wvRGV2L2Rhc2gvc2ltdWxhdG9yL2pzL1V0aWxzLmpzXCIpKSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///172\n")},680:(__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("__webpack_require__(642)(__webpack_require__(621))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjgwLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUFPLENBQUMsR0FBNkUsRUFBRSxtQkFBTyxDQUFDLEdBQXdIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZGFzaC8uL3ZlbmRvci90aHJlZS5qcz9jOTJhIl0sInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoXCIhIS9Vc2Vycy9sbmRzdG9sL0Rldi9kYXNoL3NpbXVsYXRvci9ub2RlX21vZHVsZXMvc2NyaXB0LWxvYWRlci9hZGRTY3JpcHQuanNcIikocmVxdWlyZShcIiEhL1VzZXJzL2xuZHN0b2wvRGV2L2Rhc2gvc2ltdWxhdG9yL25vZGVfbW9kdWxlcy9yYXctbG9hZGVyL2luZGV4LmpzIS9Vc2Vycy9sbmRzdG9sL0Rldi9kYXNoL3NpbXVsYXRvci92ZW5kb3IvdGhyZWUuanNcIikpIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///680\n")},691:(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";eval("\n// EXTERNAL MODULE: ./node_modules/script-loader/index.js!./vendor/three.js\nvar three = __webpack_require__(680);\n// EXTERNAL MODULE: ./node_modules/script-loader/index.js!./js/Utils.js\nvar Utils = __webpack_require__(172);\n;// CONCATENATED MODULE: ./js/physics/Car.js\nclass Car {\n constructor(x = 0, y = 0, rotation = 0) {\n this.setPose(x, y, rotation);\n }\n\n static getFrontAxlePosition(pos, rot) {\n return THREE.Vector2.fromAngle(rot).multiplyScalar(Car.WHEEL_BASE).add(pos);\n }\n\n static getFakeAxlePosition(pos, rot) {\n return Car.frontToRearAxlePosition(pos, rot);\n }\n\n static centerToRearAxlePosition(pos, rot) {\n return THREE.Vector2.fromAngle(rot).multiplyScalar(Car.REAR_AXLE_POS).add(pos);\n }\n\n static frontToRearAxlePosition(pos, rot) {\n return THREE.Vector2.fromAngle(rot).multiplyScalar(-Car.WHEEL_BASE).add(pos);\n }\n\n get pose() {\n return { pos: this.rearAxlePosition.clone(), rot: this.rotation, velocity: this.velocity, curv: this.curvature, dCurv: this.dCurv, ddCurv: this.ddCurv };\n }\n\n get curvature() {\n return Math.tan(this.wheelAngle) / Car.WHEEL_BASE;\n }\n\n get rearAxlePosition() {\n const { x, y } = this.position;\n const rot = this.rotation;\n return new THREE.Vector2(x + Math.cos(rot) * Car.REAR_AXLE_POS, y + Math.sin(rot) * Car.REAR_AXLE_POS);\n }\n\n get frontAxlePosition() {\n const { x, y } = this.position;\n const rot = this.rotation;\n return new THREE.Vector2(x + Math.cos(rot) * Car.FRONT_AXLE_POS, y + Math.sin(rot) * Car.FRONT_AXLE_POS);\n }\n\n setPose(x, y, rotation) {\n // Translate so that x and y become the center of the vehicle (instead of the center of the rear axle)\n x -= Car.REAR_AXLE_POS * Math.cos(rotation);\n y -= Car.REAR_AXLE_POS * Math.sin(rotation);\n\n this.position = new THREE.Vector2(x, y);\n this.rotation = Math.wrapAngle(rotation);\n this.velocity = 0;\n this.acceleration = 0;\n this.wheelAngle = 0;\n this.wheelAngularVelocity = 0;\n this.dCurv = 0; // derivative with respect to arc length\n this.ddCurv = 0; // derivative with respect to arc length\n }\n\n step(dt) {\n const curvPrev = this.curvature;\n const dCurvPrev = this.dCurv;\n\n const drag = (0.5 * Car.DRAG_COEFF * Car.FRONTAL_AREA * Car.DENSITY_OF_AIR * Math.abs(this.velocity) + Car.ROLL_RESIST) * -this.velocity;\n this.velocity += (this.acceleration + drag / Car.MASS) * dt;\n\n const velocitySq = this.velocity * this.velocity;\n const maxWheelAngle = Math.clamp(Math.atan(Car.MAX_LATERAL_ACCEL * Car.WHEEL_BASE / velocitySq), 0.07, Car.MAX_WHEEL_ANGLE);\n this.wheelAngle = Math.clamp(Math.wrapAngle(this.wheelAngle + this.wheelAngularVelocity * dt), -maxWheelAngle, maxWheelAngle);\n\n const angularVelocity = this.velocity * this.curvature;\n this.rotation = Math.wrapAngle(this.rotation + angularVelocity * dt);\n\n const dist = this.velocity * dt;\n this.position = THREE.Vector2.fromAngle(this.rotation).multiplyScalar(dist).add(this.position);\n\n this.dCurv = dist > 0.1 ? (this.curvature - curvPrev) / dist : 0;\n this.ddCurv = dist > 0.1 ? (this.dCurv - dCurvPrev) / dist : 0;\n }\n\n update(controls, dt) {\n const gas = Math.clamp(controls.gas, -1, +1);\n const brake = Math.clamp(controls.brake, 0, 1);\n const steer = Math.clamp(controls.steer, -1, +1);\n\n if (brake > 0) {\n this.acceleration = -Math.sign(this.velocity) * Car.MAX_BRAKE_DECEL * brake;\n const newVelocity = this.velocity + this.acceleration * dt;\n\n // If applying the braking deceleration at the next step would cause the velocity\n // to change directions, then just set the car as stopped.\n if (Math.sign(newVelocity) != Math.sign(this.velocity)) {\n this.velocity = 0;\n this.acceleration = 0;\n }\n } else {\n this.acceleration = Car.MAX_GAS_ACCEL * gas;\n }\n\n if (steer != 0) {\n this.wheelAngularVelocity = steer * Car.MAX_STEER_SPEED;\n } else {\n this.wheelAngularVelocity = Math.clamp(-this.wheelAngle / Car.MAX_WHEEL_ANGLE * this.velocity * this.velocity * dt, -Car.MAX_STEER_SPEED, Car.MAX_STEER_SPEED);\n }\n }\n}\n\nCar.HALF_CAR_LENGTH = 2.5; // meters\nCar.HALF_CAR_WIDTH = 1; // meters\nCar.HALF_WHEEL_LENGTH = 0.38; // meters\nCar.HALF_WHEEL_WIDTH = 0.12; // meters\nCar.MAX_WHEEL_ANGLE = 32 / 180 * Math.PI; // radians\nCar.MASS = 1600; // kg\nCar.DRAG_COEFF = 0.7;\nCar.DENSITY_OF_AIR = 1.8580608; // (kg/m^3)\nCar.FRONTAL_AREA = 1.85; // m^2\nCar.ROLL_RESIST = 0;\nCar.MAX_STEER_SPEED = 0.8;//1.2; // Radians per second\nCar.MAX_GAS_ACCEL = 3.0; // m / s^2\nCar.MAX_BRAKE_DECEL = 3.0; // m / s^2\nCar.WHEEL_LATERAL_POS = 0.843; // meters\nCar.FRONT_AXLE_POS = 1.6; // meters\nCar.REAR_AXLE_POS = -1.43; // meters\nCar.WHEEL_BASE = Car.FRONT_AXLE_POS - Car.REAR_AXLE_POS; // meters\nCar.MAX_LATERAL_ACCEL = 5.81; // m / s^2\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/CubicPath.js\nconst SIMPSONS_INTERVALS = 8;\nconst NEWTON_ITERATIONS = 16;\nconst RELAXATION_ITERATIONS = 32;\nconst CONVERGENCE_ERROR = 0.01;\n\nconst jacobian = new THREE.Matrix3();\nconst invJacobian = new THREE.Matrix3();\n\n// Alternate reference implementation: https://github.com/ApolloAuto/apollo/blob/master/modules/planning/math/spiral_curve/cubic_spiral_curve.cc\nclass CubicPath_CubicPath {\n constructor(start, end, params = null) {\n this.start = Object.assign({}, start);\n this.end = Object.assign({}, end);\n\n if (start.pos) {\n this.start.x = start.pos.x;\n this.start.y = start.pos.y\n }\n\n if (end.pos) {\n this.end.x = end.pos.x;\n this.end.y = end.pos.y\n }\n\n const diffX = this.end.x - this.start.x;\n const diffY = this.end.y - this.start.y;\n const sinRot = Math.sin(this.start.rot);\n const cosRot = Math.cos(this.start.rot);\n\n this.goal = {\n x: cosRot * diffX + sinRot * diffY,\n y: -sinRot * diffX + cosRot * diffY,\n rot: Math.wrapAngle(this.end.rot - this.start.rot),\n curv: this.end.curv\n };\n\n if (params)\n this.params = Object.assign({}, params, { p0: this.start.curv, p3: this.end.curv });\n else\n this.guessInitialParams();\n\n this.converged = false;\n }\n\n guessInitialParams() {\n const originalGoal = this.goal;\n const dStartCurv = this.start.curv / RELAXATION_ITERATIONS;\n const dGoalY = originalGoal.y / RELAXATION_ITERATIONS;\n const dGoalRot = originalGoal.rot / RELAXATION_ITERATIONS;\n const dGoalCurv = originalGoal.curv / RELAXATION_ITERATIONS;\n\n this.goal = {\n x: originalGoal.x,\n y: 0,\n rot: 0,\n curv: 0\n };\n\n this.params = {\n p0: 0,\n p1: 0,\n p2: 0,\n p3: 0,\n sG: originalGoal.x\n };\n\n for (let i = 0; i < RELAXATION_ITERATIONS; i++) {\n this.params.p0 += dStartCurv;\n this.params.p3 += dGoalCurv;\n this.goal.y += dGoalY;\n this.goal.rot += dGoalRot;\n this.goal.curv += dGoalCurv;\n\n this.iterate();\n }\n\n this.goal = originalGoal;\n }\n\n optimize() {\n for (let i = 0; i < NEWTON_ITERATIONS; i++) {\n if (this.iterate()) {\n this.converged = true;\n return true;\n }\n }\n\n this.converged = false;\n return false;\n }\n\n iterate() {\n const { p0, p1, p2, p3, sG } = this.params;\n\n const ds = sG / SIMPSONS_INTERVALS;\n const sG_2 = sG * sG;\n const sG_3 = sG_2 * sG;\n\n let dX_p1 = 0;\n let dX_p2 = 0;\n let dX_sG = 0;\n let dY_p1 = 0;\n let dY_p2 = 0;\n let dY_sG = 0;\n let guessX = 0;\n let guessY = 0;\n\n let theta, cosTheta, sinTheta, dT_p1, dT_p2, dT_sG;\n\n for (let i = 0, s = 0; i <= SIMPSONS_INTERVALS; i++, s += ds) {\n const coeff = i == 0 || i == SIMPSONS_INTERVALS ? 1 : i % 2 == 0 ? 2 : 4;\n\n const a = p0;\n const b = (-5.5 * p0 + 9 * p1 - 4.5 * p2 + p3) / sG;\n const c = (9 * p0 - 22.5 * p1 + 18 * p2 - 4.5 * p3) / sG_2;\n const d = (-4.5 * (p0 - 3 * p1 + 3 * p2 - p3)) / sG_3;\n\n theta = (((d * s / 4 + c / 3) * s + b / 2) * s + a) * s;\n cosTheta = Math.cos(theta);\n sinTheta = Math.sin(theta);\n\n const s_sG = s / sG;\n dT_p1 = ((3.375 * s_sG - 7.5) * s_sG + 4.5) * s_sG * s;\n dT_p2 = ((-3.375 * s_sG + 6) * s_sG - 2.25) * s_sG * s;\n dT_sG = ((3.375 * (p0 - 3 * p1 + 3 * p2 - p3) * s_sG - 3 * (2 * p0 - 5 * p1 + 4 * p2 - p3)) * s_sG + 0.25 * (11 * p0 - 18 * p1 + 9 * p2 - 2 * p3)) * s_sG * s_sG;\n\n dX_p1 -= coeff * sinTheta * dT_p1;\n dX_p2 -= coeff * sinTheta * dT_p2;\n dX_sG -= coeff * sinTheta * dT_sG;\n\n dY_p1 += coeff * cosTheta * dT_p1;\n dY_p2 += coeff * cosTheta * dT_p2;\n dY_sG += coeff * cosTheta * dT_sG;\n\n guessX += coeff * cosTheta;\n guessY += coeff * sinTheta;\n }\n\n // After the Simpson's integration loop, `theta`, `cosTheta`, `sinTheta`,\n // `dT_p1`, `dT_p2`, and `dT_sG` hold the appropriate values for `sG`.\n\n const hOver3 = sG / SIMPSONS_INTERVALS / 3;\n\n const deltaX = this.goal.x - guessX * hOver3;\n const deltaY = this.goal.y - guessY * hOver3;\n const deltaRot = Math.wrapAngle(this.goal.rot - theta);\n\n if (Math.abs(deltaX) + Math.abs(deltaY) + Math.abs(deltaRot) < CONVERGENCE_ERROR)\n return true;\n\n jacobian.set(\n dX_p1 * hOver3, dX_p2 * hOver3, cosTheta + dX_sG * hOver3,\n dY_p1 * hOver3, dY_p2 * hOver3, sinTheta + dY_sG * hOver3,\n dT_p1, dT_p2, dT_sG\n );\n\n const [m11, m21, m31, m12, m22, m32, m13, m23, m33] = invJacobian.getInverse(jacobian).elements;\n\n this.params.p1 += m11 * deltaX + m12 * deltaY + m13 * deltaRot;\n this.params.p2 += m21 * deltaX + m22 * deltaY + m23 * deltaRot;\n this.params.sG += m31 * deltaX + m32 * deltaY + m33 * deltaRot;\n\n return false;\n }\n\n buildPath(num) {\n const { p0, p1, p2, p3, sG } = this.params;\n\n const sG_2 = sG * sG;\n const sG_3 = sG_2 * sG;\n\n const a = p0;\n const b = (-5.5 * p0 + 9 * p1 - 4.5 * p2 + p3) / sG;\n const c = (9 * p0 - 22.5 * p1 + 18 * p2 - 4.5 * p3) / sG_2;\n const d = (-4.5 * (p0 - 3 * p1 + 3 * p2 - p3)) / sG_3;\n\n const path = [{ pos: new THREE.Vector2(this.start.x, this.start.y), rot: this.start.rot, curv: this.start.curv }];\n const ds = sG / (num - 1);\n let s = ds;\n let dx = 0;\n let dy = 0;\n let prevCosRot = Math.cos(path[0].rot);\n let prevSinRot = Math.sin(path[0].rot);\n\n for (let i = 1; i < num - 1; i++) {\n const rot = (((d * s / 4 + c / 3) * s + b / 2) * s + a) * s + this.start.rot;\n const curv = ((d * s + c) * s + b) * s + a;\n const cosRot = Math.cos(rot);\n const sinRot = Math.sin(rot);\n\n dx = dx * (i - 1) / i + (cosRot + prevCosRot) / (2 * i);\n dy = dy * (i - 1) / i + (sinRot + prevSinRot) / (2 * i);\n\n path.push({ pos: new THREE.Vector2(s * dx + this.start.x, s * dy + this.start.y), rot: rot, curv: curv });\n\n s += ds;\n prevCosRot = cosRot;\n prevSinRot = sinRot;\n }\n\n path.push({ pos: new THREE.Vector2(this.end.x, this.end.y), rot: this.end.rot, curv: this.end.curv });\n\n return path;\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/xyObstacleGrid.js\nconst OBSTACLE_VERTEX_SHADER = `#version 300 es\nuniform mat3 xform;\nin vec2 position;\n\nvoid main(void) {\n gl_Position = vec4((xform * vec3(position, 1)).xy, 0, 1);\n}\n`;\n\nconst OBSTACLE_KERNEL = `\n vec4 kernel() {\n return vec4(1, 0, 0, 1);\n }\n`;\n\nlet obstacleVertices;\nlet obstacleXform;\n\n// Draw obstacle triangles to XY-space obstacle grid\n/* harmony default export */ const gpgpu_programs_xyObstacleGrid = ({\n setUp() {\n return {\n kernel: OBSTACLE_KERNEL,\n vertexShader: OBSTACLE_VERTEX_SHADER,\n output: { name: 'xyObstacleGrid' },\n draw: (gpgpu, program) => {\n const gl = gpgpu.gl;\n\n gl.clearColor(0, 0, 0, 0);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n if (obstacleVertices.length > 0) {\n const buf = gl.createBuffer();\n\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, obstacleVertices, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(program.positionLocation);\n gl.vertexAttribPointer(program.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n const xformLocation = gl.getUniformLocation(program.glProgram, 'xform');\n gl.uniformMatrix3fv(xformLocation, false, obstacleXform.elements);\n\n gl.drawArrays(gl.TRIANGLES, 0, obstacleVertices.length / 2);\n\n gl.deleteBuffer(buf);\n }\n }\n };\n },\n\n update(config, xyWidth, xyHeight, xyCenterPoint, vehicleXform, obstacles) {\n obstacleVertices = new Float32Array(Array.prototype.concat.apply([], obstacles.map(o => o.vertices)));\n\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -xyCenterPoint.x,\n 0, 1, -xyCenterPoint.y,\n 0, 0, 1\n );\n\n const scale = new THREE.Matrix3();\n scale.set(\n 2 / (xyWidth * config.xyGridCellSize), 0, 0,\n 0, 2 / (xyHeight * config.xyGridCellSize), 0,\n 0, 0, 1\n );\n\n obstacleXform = scale.multiply(translate).multiply(vehicleXform);\n\n return {\n width: xyWidth,\n height: xyHeight\n }\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/slObstacleGrid.js\nconst SL_OBSTACLE_KERNEL = `\n\nvec4 kernel() {\n float centerlineWidth = float(textureSize(centerline, 0).x);\n\n vec2 sl = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(slGridCellSize) + slCenterPoint;\n float centerlineCoord = sl.x / centerlineStationInterval / centerlineWidth * (centerlineWidth - 1.0) / centerlineWidth + (0.5 / centerlineWidth);\n if (centerlineCoord < 0.0 || centerlineCoord > 1.0) return vec4(0);\n\n vec3 centerlineSample = texture(centerline, vec2(centerlineCoord, 0)).xyz;\n float perpindicular = centerlineSample.z + radians(90.0);\n vec2 xy = centerlineSample.xy + sl.yy * vec2(cos(perpindicular), sin(perpindicular));\n\n vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyObstacleGrid, 0)) / vec2(xyGridCellSize) + 0.5;\n return texture(xyObstacleGrid, xyTexCoords);\n}\n\n`;\n\n// Convert XY-space obstacle grid to SL-space obstacle grid\n/* harmony default export */ const gpgpu_programs_slObstacleGrid = ({\n setUp() {\n return {\n kernel: SL_OBSTACLE_KERNEL,\n output: { name: 'slObstacleGrid' },\n uniforms: {\n xyObstacleGrid: { type: 'outputTexture' },\n slGridCellSize: { type: 'float' },\n xyGridCellSize: { type: 'float' },\n slCenterPoint: { type: 'vec2' },\n xyCenterPoint: { type: 'vec2' },\n centerlineStationInterval: { type: 'float' },\n centerline: { type: 'sharedTexture' }\n }\n }\n },\n\n update(config, slWidth, slHeight, slCenterPoint, xyCenterPoint) {\n return {\n width: slWidth,\n height: slHeight,\n uniforms: {\n slGridCellSize: config.slGridCellSize,\n xyGridCellSize: config.xyGridCellSize,\n slCenterPoint: [slCenterPoint.x, slCenterPoint.y],\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n centerlineStationInterval: config.centerlineStationInterval\n }\n }\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/slObstacleGridDilation.js\nconst SL_OBSTACLE_DILATION_KERNEL = `\n\n// TODO: test performance of returning early if non-zero pixel found\nvec4 kernel() {\n float val = 0.0;\n\n for (int d = 0; d <= collisionDilation; d++) {\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(d)).r);\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(-d)).r);\n }\n\n for (int d = collisionDilation + 1; d <= collisionDilation + hazardDilation; d++) {\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(d)).r * 0.5);\n val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(-d)).r * 0.5);\n }\n\n val = max(val, step(0.1, val) * 0.5);\n\n return vec4(val, 0, 0, 1);\n}\n\n`;\n\n/* harmony default export */ const gpgpu_programs_slObstacleGridDilation = ({\n setUp() {\n return [\n { // SL-space obstacle grid S dilation\n kernel: SL_OBSTACLE_DILATION_KERNEL,\n output: { name: 'slObstacleGridStationDilated' },\n uniforms: {\n slObstacleGrid: { type: 'outputTexture' },\n delta: { type: 'vec2' },\n collisionDilation: { type: 'int' },\n hazardDilation: { type: 'int' }\n }\n },\n { // SL-space obstacle grid L dilation\n kernel: SL_OBSTACLE_DILATION_KERNEL,\n output: { name: 'slObstacleGridDilated' },\n uniforms: {\n slObstacleGrid: { type: 'outputTexture', name: 'slObstacleGridStationDilated' },\n delta: { type: 'vec2' },\n collisionDilation: { type: 'int' },\n hazardDilation: { type: 'int' }\n }\n }\n ];\n },\n\n update(config, slWidth, slHeight) {\n return [\n { // SL-space obstacle grid S dilation\n width: slWidth,\n height: slHeight,\n uniforms: {\n delta: [1 / slWidth, 0],\n collisionDilation: Math.ceil(config.collisionDilationS / config.slGridCellSize),\n hazardDilation: Math.ceil(config.hazardDilationS / config.slGridCellSize)\n }\n },\n { // SL-space obstacle grid L dilation\n width: slWidth,\n height: slHeight,\n uniforms: {\n delta: [0, 1 / slHeight],\n collisionDilation: Math.ceil(config.collisionDilationL / config.slGridCellSize),\n hazardDilation: Math.ceil(config.hazardDilationL / config.slGridCellSize)\n }\n }\n ];\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/slDynamicObstacleGrid.js\nconst DYNAMIC_OBSTACLE_VERTEX_SHADER = `#version 300 es\nuniform mat3 xform;\nin vec3 position;\nout float color;\n\nvoid main(void) {\n gl_Position = vec4((xform * vec3(position.xy, 1)).xy, position.z, 1);\n\n // The z coordinate is 0.25 for collision zone and 0.75 for hazard zone,\n // so that the collision zone is drawn on top.\n // Convert this to 1.0 for collision zone, 0.5 for hazard zone\n color = (1.0 - step(0.5, position.z)) * 0.5 + 0.5;\n}\n`;\n\nconst DYNAMIC_OBSTACLE_KERNEL = `\n in float color;\n\n vec4 kernel() {\n return vec4(color, 0, 0, 1);\n }\n`;\n\nlet slDynamicObstacleGrid_obstacleVertices;\nlet slDynamicObstacleGrid_obstacleXform;\nconst numDynamicFrames = 20;\n\n// Draw dynamic obstacle triangles to SL-space obstacle grid\n/* harmony default export */ const gpgpu_programs_slDynamicObstacleGrid = ({\n setUp() {\n return {\n kernel: DYNAMIC_OBSTACLE_KERNEL,\n vertexShader: DYNAMIC_OBSTACLE_VERTEX_SHADER,\n output: { name: 'slDynamicObstacleGrid', textureType: '2DArray', depth: numDynamicFrames },\n draw: (gpgpu, program) => {\n const gl = gpgpu.gl;\n\n gl.enable(gl.DEPTH_TEST);\n\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, program.inputWidth, program.inputHeight);\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuffer);\n\n for (let frame = 0; frame < numDynamicFrames; frame++) {\n gl.framebufferTextureLayer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, program.outputTexture, 0, frame);\n const frameBufferStatus = (gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_COMPLETE);\n if (!frameBufferStatus)\n throw new Error('Error attaching float texture to framebuffer. Your device is probably incompatible.');\n\n gl.clearColor(0, 0, 0, 0);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n if (slDynamicObstacleGrid_obstacleVertices[frame].length > 0) {\n const buf = gl.createBuffer();\n\n gl.bindBuffer(gl.ARRAY_BUFFER, buf);\n gl.bufferData(gl.ARRAY_BUFFER, slDynamicObstacleGrid_obstacleVertices[frame], gl.STATIC_DRAW);\n gl.enableVertexAttribArray(program.positionLocation);\n gl.vertexAttribPointer(program.positionLocation, 3, gl.FLOAT, false, 0, 0);\n\n const xformLocation = gl.getUniformLocation(program.glProgram, 'xform');\n gl.uniformMatrix3fv(xformLocation, false, slDynamicObstacleGrid_obstacleXform.elements);\n\n gl.drawArrays(gl.TRIANGLES, 0, slDynamicObstacleGrid_obstacleVertices[frame].length / 3);\n\n if (frame == 0) {\n const obstacleGrid = new Float32Array(program.inputWidth * program.inputHeight * 4);\n gl.readPixels(0, 0, program.inputWidth, program.inputHeight, gl.RGBA, gl.FLOAT, obstacleGrid);\n gpgpu._dynamicObstacleGrid = obstacleGrid;\n }\n\n gl.deleteBuffer(buf);\n }\n }\n\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n gl.deleteRenderbuffer(renderbuffer);\n gl.disable(gl.DEPTH_TEST);\n }\n };\n },\n\n update(config, slWidth, slHeight, slCenterPoint, vehicleStation, startTime, dynamicFrameTime, dynamicObstacles) {\n slDynamicObstacleGrid_obstacleVertices = [];\n\n let time = startTime;\n for (let frame = 0; frame < numDynamicFrames; frame++) {\n const vertices = Array.prototype.concat.apply([], dynamicObstacles.map(o => o.verticesInTimeRange(time, time + dynamicFrameTime, config)));\n slDynamicObstacleGrid_obstacleVertices.push(new Float32Array(vertices));\n time += dynamicFrameTime;\n }\n\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -slCenterPoint.x - vehicleStation,\n 0, 1, -slCenterPoint.y,\n 0, 0, 1\n );\n\n const scale = new THREE.Matrix3();\n scale.set(\n 2 / (slWidth * config.slGridCellSize), 0, 0,\n 0, 2 / (slHeight * config.slGridCellSize), 0,\n 0, 0, 1\n );\n\n slDynamicObstacleGrid_obstacleXform = scale.multiply(translate);\n\n return {\n width: slWidth,\n height: slHeight\n }\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/xyslMap.js\nconst XYSL_MAP_KERNEL = `\n\nvec4 kernel() {\n vec2 xy = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(xyGridCellSize) + xyCenterPoint;\n\n int numSamples = textureSize(centerline, 0).x;\n int closest = 0;\n float closestDist = distance(xy, texelFetch(centerline, ivec2(0, 0), 0).xy);\n for (int i = 1; i < numSamples; i++) {\n float dist = distance(xy, texelFetch(centerline, ivec2(i, 0), 0).xy);\n if (dist < closestDist) {\n closestDist = dist;\n closest = i;\n }\n }\n\n vec2 closestPos = texelFetch(centerline, ivec2(closest, 0), 0).xy;\n vec2 prev, next;\n int prevIndex, nextIndex;\n\n if (closest == 0) {\n prevIndex = 0;\n nextIndex = 1;\n prev = closestPos;\n next = texelFetch(centerline, ivec2(1, 0), 0).xy;\n } else if (closest == numSamples - 1) {\n prevIndex = closest - 1;\n nextIndex = closest;\n prev = texelFetch(centerline, ivec2(prevIndex, 0), 0).xy;\n next = closestPos;\n } else {\n vec2 before = texelFetch(centerline, ivec2(closest - 1, 0), 0).xy;\n vec2 after = texelFetch(centerline, ivec2(closest + 1, 0), 0).xy;\n\n if (distance(before, xy) < distance(after, xy)) {\n prevIndex = closest - 1;\n nextIndex = closest;\n prev = before;\n next = closestPos;\n } else {\n prevIndex = closest;\n nextIndex = closest + 1;\n prev = closestPos;\n next = after;\n }\n }\n\n float dist = distance(prev, next);\n float progress = clamp(dot(xy - prev, next - prev) / dist / dist, 0.0, 1.0);\n vec2 projectedPos = (next - prev) * vec2(progress) + prev;\n\n return vec4(\n (float(prevIndex) + progress) * centerlineStationInterval,\n sign(determinant(mat2(next - prev, xy - prev))) * distance(xy, projectedPos),\n 0,\n 0\n );\n}\n\n`;\n\n// Build XY-SL map\n/* harmony default export */ const gpgpu_programs_xyslMap = ({\n setUp() {\n return {\n kernel: XYSL_MAP_KERNEL,\n output: { name: 'xyslMap', filter: 'linear' },\n uniforms: {\n centerline: { type: 'sharedTexture' },\n xyCenterPoint: { type: 'vec2' },\n xyGridCellSize: { type: 'float'},\n centerlineStationInterval: { type: 'float'}\n }\n };\n },\n\n update(config, xyWidth, xyHeight, xyCenterPoint) {\n return {\n width: xyWidth,\n height: xyHeight,\n uniforms: {\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n xyGridCellSize: config.xyGridCellSize,\n centerlineStationInterval: config.centerlineStationInterval\n }\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/optimizeCubicPaths.js\n// Config:\n// num stations\n// num latitudes\n// station connectivity\n// latitude connectivity\n//\n// Shared:\n// lattice\n\nconst OPTIMIZE_CUBIC_SHARED = `\n\nconst int NEWTON_ITERATIONS = 16;\nconst int RELAXATION_ITERATIONS = 16;\nconst float CONVERGENCE_ERROR = 0.01;\n\n// These two consts must stay in sync.\nconst int SIMPSONS_INTERVALS = 8;\n//const float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0);\nconst float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0);\n\nconst float PI = 3.1415926535897932384626433832795;\nconst float TWO_PI = PI + PI;\n\nconst float RELAXATION_ITERATIONS_F = float(RELAXATION_ITERATIONS);\nconst float SIMPSONS_INTERVALS_F = float(SIMPSONS_INTERVALS);\n\nfloat wrapAngle(float angle) {\n angle = mod(angle, TWO_PI);\n if (angle <= -PI) return angle + TWO_PI;\n else if (angle > PI) return angle - TWO_PI;\n return angle;\n}\n\nvec4 iterate(vec4 goal, float p0, float p1, float p2, float p3, float sG) {\n float ds = sG / SIMPSONS_INTERVALS_F;\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n vec3 dX_p = vec3(0.0);\n vec3 dY_p = vec3(0.0);\n vec2 guess = vec2(0.0);\n float s = 0.0;\n\n float theta, cosTheta, sinTheta;\n vec3 dT_p;\n\n for (int i = 0; i <= SIMPSONS_INTERVALS; i++) {\n float coeff = SIMPSONS_COEFFS[i];\n\n float a = p0;\n float b = (-5.5 * p0 + 9.0 * p1 - 4.5 * p2 + p3) / sG;\n float c = (9.0 * p0 - 22.5 * p1 + 18.0 * p2 - 4.5 * p3) / sG_2;\n float d = (-4.5 * (p0 - 3.0 * p1 + 3.0 * p2 - p3)) / sG_3;\n\n theta = (((d * s / 4.0 + c / 3.0) * s + b / 2.0) * s + a) * s;\n cosTheta = cos(theta);\n sinTheta = sin(theta);\n\n float s_sG = s / sG;\n\n dT_p = vec3(\n // p1\n ((3.375 * s_sG - 7.5) * s_sG + 4.5) * s_sG * s,\n\n // p2\n ((-3.375 * s_sG + 6.0) * s_sG - 2.25) * s_sG * s,\n\n // sG\n ((3.375 * (p0 - 3.0 * p1 + 3.0 * p2 - p3) * s_sG - 3.0 * (2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3)) * s_sG + 0.25 * (11.0 * p0 - 18.0 * p1 + 9.0 * p2 - 2.0 * p3)) * s_sG * s_sG\n );\n\n dX_p -= coeff * sinTheta * dT_p;\n dY_p += coeff * cosTheta * dT_p;\n\n guess += coeff * vec2(cosTheta, sinTheta);\n\n s += ds;\n }\n\n float hOver3 = sG / SIMPSONS_INTERVALS_F / 3.0;\n\n vec3 delta;\n delta.xy = goal.xy - guess * hOver3;\n delta.z = wrapAngle(goal.z - theta);\n\n if (abs(delta.x) + abs(delta.y) + abs(delta.z) < CONVERGENCE_ERROR)\n return vec4(p1, p2, sG, 1.0);\n\n dX_p.xyz *= hOver3;\n dY_p.xyz *= hOver3;\n dX_p.z += cosTheta;\n dY_p.z += sinTheta;\n\n mat3 invJacobian = inverse(transpose(mat3(dX_p, dY_p, dT_p)));\n\n vec3 deltaP = invJacobian * delta;\n vec4 params = vec4(p1, p2, sG, 0.0);\n params.xyz += deltaP;\n\n return params;\n}\n\n/* Input:\n * start: (vec4)\n * x: x position,\n * y: y position,\n * z: theta rotation,\n * w: k curvature\n * end: (vec4)\n * x: x position,\n * y: y position,\n * z: theta rotation,\n * w: k curvature\n *\n * Output: (vec4)\n * x: p1,\n * y: p2,\n * z: sG,\n * w: 1 if converged, 0 if not\n */\n\nvec4 optimize(vec4 start, vec4 end) {\n // Translate and rotate start and end so that start is at the origin\n float sinRot = sin(start.z);\n float cosRot = cos(start.z);\n\n vec4 diff = end - start;\n vec4 goal;\n goal.xy = mat2(cosRot, -sinRot, sinRot, cosRot) * diff.xy;\n goal.z = wrapAngle(diff.z);\n goal.w = end.w;\n\n vec4 originalGoal = goal;\n vec4 dGoal;\n dGoal.x = 0.0;\n dGoal.yzw = goal.yzw / RELAXATION_ITERATIONS_F;\n float dK0 = start.w / RELAXATION_ITERATIONS_F;\n\n // Relax the goal to (x, 0, 0, 0)\n goal.yzw = vec3(0, 0, 0);\n\n // Relax the params to (0, 0, 0, 0, goal.x)\n float p0 = 0.0;\n float p1 = 0.0;\n float p2 = 0.0;\n float p3 = 0.0;\n float sG = goal.x;\n\n if (sG < 0.1) return vec4(0.0);\n\n for (int i = 0; i < RELAXATION_ITERATIONS; i++) {\n p0 += dK0;\n p3 += dGoal.w;\n goal += dGoal;\n \n vec4 result = iterate(goal, p0, p1, p2, p3, sG);\n p1 = result.x;\n p2 = result.y;\n sG = result.z;\n }\n\n goal = originalGoal;\n\n for (int i = 0; i < NEWTON_ITERATIONS; i++) {\n vec4 result = iterate(goal, p0, p1, p2, p3, sG);\n if (result.w == 1.0) {\n result.w = step(0.0, result.z);\n return result;\n }\n\n p1 = result.x;\n p2 = result.y;\n sG = result.z;\n }\n\n return vec4(p1, p2, sG, 0.0);\n}\n\n`;\n\nconst OPTIMIZE_CUBIC_KERNEL = OPTIMIZE_CUBIC_SHARED + `\n\n// width: station * latitude index\n// height: station_conn * lattice_conn\n//\n// lattice:\n// width: latitudes\n// height: stations\n\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n int endStation = indexes.x / numLatitudes;\n int endLatitude = int(mod(float(indexes.x), float(numLatitudes)));\n\n int startStation = endStation - stationConnectivity + indexes.y / latitudeConnectivity;\n int startLatitude = endLatitude - latitudeConnectivity / 2 + int(mod(float(indexes.y), float(latitudeConnectivity)));\n\n if (startStation < 0 || startStation >= numStations || startLatitude < 0 || startLatitude >= numLatitudes)\n return vec4(0.0);\n\n vec4 start = texelFetch(lattice, ivec2(startLatitude, startStation), 0);\n vec4 end = texelFetch(lattice, ivec2(endLatitude, endStation), 0);\n\n return optimize(start, end);\n}\n\n`;\n\nconst OPTIMIZE_CUBIC_FROM_VEHICLE_KERNEL = OPTIMIZE_CUBIC_SHARED + `\n\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n vec4 start = vec4(0, 0, 0, curvVehicle);\n vec4 end = texelFetch(lattice, indexes, 0);\n\n return optimize(start, end);\n}\n\n`;\n\n/* harmony default export */ const gpgpu_programs_optimizeCubicPaths = ({\n setUp() {\n return [\n { // Cubic paths between lattice nodes\n kernel: OPTIMIZE_CUBIC_KERNEL,\n output: { name: 'cubicPaths', read: true },\n uniforms: {\n lattice: { type: 'sharedTexture' },\n numStations: { type: 'int' },\n numLatitudes: { type: 'int' },\n stationConnectivity: { type: 'int' },\n latitudeConnectivity: { type: 'int' }\n }\n },\n { // Cubic paths from vehicle to lattice nodes\n kernel: OPTIMIZE_CUBIC_FROM_VEHICLE_KERNEL,\n output: { name: 'cubicPathsFromVehicle', read: true },\n uniforms: {\n lattice: { type: 'sharedTexture' },\n curvVehicle: { type: 'float' }\n }\n }\n ]\n },\n\n update(config, pose) {\n return [\n { // Cubic paths between lattice nodes\n width: config.lattice.numStations * config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity * config.lattice.latitudeConnectivity,\n uniforms: {\n numStations: config.lattice.numStations,\n numLatitudes: config.lattice.numLatitudes,\n stationConnectivity: config.lattice.stationConnectivity,\n latitudeConnectivity: config.lattice.latitudeConnectivity,\n }\n },\n { // Cubic paths from vehicle to lattice nodes\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity,\n uniforms: {\n curvVehicle: pose.curv\n }\n }\n ];\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/optimizeQuinticPaths.js\nconst OPTIMIZE_KERNEL = `\n\nconst int NEWTON_ITERATIONS = 32;\nconst int RELAXATION_ITERATIONS = 32;\nconst float CONVERGENCE_ERROR = 0.01;\n\n// These two consts must stay in sync.\nconst int SIMPSONS_INTERVALS = 8;\nconst float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0);\n\nconst float PI = 3.1415926535897932384626433832795;\nconst float TWO_PI = PI + PI;\n\nconst float RELAXATION_ITERATIONS_F = float(RELAXATION_ITERATIONS);\nconst float SIMPSONS_INTERVALS_F = float(SIMPSONS_INTERVALS);\n\nfloat wrapAngle(float angle) {\n angle = mod(angle, TWO_PI);\n if (angle <= -PI) return angle + TWO_PI;\n else if (angle > PI) return angle - TWO_PI;\n return angle;\n}\n\nvec4 iterate(vec4 goal, float p0, float p1, float p2, float p3, float p4, float p5, float sG) {\n float ds = sG / SIMPSONS_INTERVALS_F;\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n vec3 dX_p = vec3(0.0);\n vec3 dY_p = vec3(0.0);\n vec2 guess = vec2(0.0);\n float s = 0.0;\n\n float theta, cosTheta, sinTheta;\n vec3 dT_p;\n\n for (int i = 0; i <= SIMPSONS_INTERVALS; i++) {\n float coeff = SIMPSONS_COEFFS[i];\n\n float a = p0;\n float b = p1;\n float c = p2 / 2.0;\n float d = (-71.875 * p0 + 81.0 * p3 - 10.125 * p4 + p5 - 21.25 * p1 * sG - 2.75 * p2 * sG_2) / sG_3;\n float e = (166.5 * p0 - 202.5 * p3 + 40.5 * p4 - 4.5 * p5 + 45.0 * p1 * sG + 4.5 * p2 * sG_2) / (sG_2 * sG_2);\n float f = (-95.625 * p0 + 121.5 * p3 - 30.375 * p4 + 4.5 * p5 - 24.75 * p1 * sG - 2.25 * p2 * sG_2) / (sG_2 * sG_3);\n\n theta = (((((f * s / 6.0 + e / 5.0) * s + d / 4.0) * s + c / 3.0) * s + b / 2.0) * s + a) * s;\n cosTheta = cos(theta);\n sinTheta = sin(theta);\n\n float s_2 = s * s;\n float s_sG = s / sG;\n float s_sG_2 = s_sG * s_sG;\n float s_sG_3 = s_sG_2 * s_sG;\n float s_sG_4 = s_sG_3 * s_sG;\n float s_sG_5 = s_sG_4 * s_sG;\n\n dT_p = vec3(\n // p3\n ((20.25 * s_sG - 40.5) * s_sG + 20.25) * s_sG_3 * s,\n\n // p4\n ((-5.0625 * s_sG + 8.1) * s_sG - 2.53125) * s_sG_3 * s,\n\n // sG\n (53.90625 * p0 - 60.75 * p3 + 7.59375 * p4 - 0.75 * p5) * s_sG_4 + 10.625 * p1 * s * s_sG_3 + 0.6875 * p2 * s_2 * s_sG_2 + (-133.2 * p0 + 162.0 * p3 - 32.4 * p4 + 3.6 * p5) * s_sG_5 + (-27.0) * p1 * s * s_sG_4 - 1.8 * p2 * s_2 * s_sG_3 + (79.6875 * p0 - 101.25 * p3 + 25.3125 * p4 - 3.75 * p5) * s_sG_5 * s_sG + 16.5 * p1 * s * s_sG_5 + 1.125 * p2 * s_2 * s_sG_4\n );\n\n dX_p -= coeff * sinTheta * dT_p;\n dY_p += coeff * cosTheta * dT_p;\n\n guess += coeff * vec2(cosTheta, sinTheta);\n\n s += ds;\n }\n\n float hOver3 = sG / SIMPSONS_INTERVALS_F / 3.0;\n\n vec3 delta;\n delta.xy = goal.xy - guess * hOver3;\n delta.z = wrapAngle(goal.z - theta);\n\n if (abs(delta.x) + abs(delta.y) + abs(delta.z) < CONVERGENCE_ERROR)\n return vec4(p3, p4, sG, 1.0);\n\n dX_p.xyz *= hOver3;\n dY_p.xyz *= hOver3;\n dX_p.z += cosTheta;\n dY_p.z += sinTheta;\n\n mat3 invJacobian = inverse(transpose(mat3(dX_p, dY_p, dT_p)));\n\n vec3 deltaP = invJacobian * delta;\n vec4 params = vec4(p3, p4, sG, 0.0);\n params.xyz += deltaP;\n\n return params;\n}\n\nvec4 optimize(vec4 start, vec4 end) {\n // Translate and rotate start and end so that start is at the origin\n float sinRot = sin(start.z);\n float cosRot = cos(start.z);\n\n vec4 diff = end - start;\n vec4 goal;\n goal.xy = mat2(cosRot, -sinRot, sinRot, cosRot) * diff.xy;\n goal.z = wrapAngle(diff.z);\n goal.w = end.w;\n\n vec4 originalGoal = goal;\n vec4 dGoal;\n dGoal.x = 0.0;\n dGoal.yzw = goal.yzw / RELAXATION_ITERATIONS_F;\n float d_K0 = start.w / RELAXATION_ITERATIONS_F;\n float d_dK0 = dCurvVehicle / RELAXATION_ITERATIONS_F;\n float d_ddK0 = ddCurvVehicle / RELAXATION_ITERATIONS_F;\n\n // Relax the goal to (x, 0, 0, 0)\n goal.yzw = vec3(0, 0, 0);\n\n // Relax the params to (0, 0, 0, 0, goal.x)\n float p0 = 0.0;\n float p1 = 0.0;\n float p2 = 0.0;\n float p3 = 0.0;\n float p4 = 0.0;\n float p5 = 0.0;\n float sG = goal.x;\n\n if (sG < 0.1) return vec4(0.0);\n\n for (int i = 0; i < RELAXATION_ITERATIONS; i++) {\n p0 += d_K0;\n p1 += d_dK0;\n p2 += d_ddK0;\n p5 += dGoal.w;\n goal += dGoal;\n \n vec4 result = iterate(goal, p0, p1, p2, p3, p4, p5, sG);\n p3 = result.x;\n p4 = result.y;\n sG = result.z;\n }\n\n goal = originalGoal;\n\n for (int i = 0; i < NEWTON_ITERATIONS; i++) {\n vec4 result = iterate(goal, p0, p1, p2, p3, p4, p5, sG);\n if (result.w == 1.0) {\n result.w = step(0.0, result.z);\n return result;\n }\n\n p3 = result.x;\n p4 = result.y;\n sG = result.z;\n }\n\n return vec4(p3, p4, sG, 0.0);\n}\n\nvec4 kernel() {\n ivec2 latticeIndexes = ivec2(kernelPosition * vec2(kernelSize));\n\n vec4 start = vec4(0, 0, 0, curvVehicle);\n vec4 end = texelFetch(lattice, latticeIndexes, 0);\n\n return optimize(start, end);\n}\n\n`;\n\n// Quintic spiral path optimizer\n// * Start of paths is the vehicle pose\n// * x-pos, y-pos, and rotation aren't needed, since the lattice origin is the vehicle pose\n// * So assume position and rotation are 0\n// * Ends of paths are all latitudes within the first (stationConnectivity) stations\n/* harmony default export */ const gpgpu_programs_optimizeQuinticPaths = ({\n setUp() {\n return {\n kernel: OPTIMIZE_KERNEL,\n output: { name: 'quinticPathsFromVehicle', read: true },\n uniforms: {\n lattice: { type: 'sharedTexture' },\n curvVehicle: { type: 'float' },\n dCurvVehicle: { type: 'float' },\n ddCurvVehicle: { type: 'float' }\n }\n };\n },\n\n update(config, pose) {\n return {\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity,\n uniforms: {\n curvVehicle: pose.curv,\n dCurvVehicle: pose.dCurv,\n ddCurvVehicle: pose.ddCurv\n }\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/graphSearchShared.js\nconst SHARED_SHADER = `\n\nconst float smallV = 0.01;\nvec4 pathSamples[128];\nfloat pathSampleCurvRates[128];\n\nfloat calculateAcceleration(int index, float initialVelocitySq, float distance) {\n if (index <= 4) {\n // [aMaxHard, aMinHard, aMaxSoft, aMinSoft, 0]\n return accelerationProfiles[index];\n } else {\n float finalVelocity = finalVelocityProfiles[index - 5];\n if (distance < 0.001) return 0.0;\n return clamp((finalVelocity * finalVelocity - initialVelocitySq) / (2.0 * distance), accelerationProfiles[1], accelerationProfiles[0]);\n }\n}\n\nvec2 xy2sl(vec4 xytk) {\n vec2 xy = xytk.xy + rearAxleToCenter * vec2(cos(xytk.z), sin(xytk.z));\n vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyslMap, 0)) / vec2(xyGridCellSize) + 0.5;\n return texture(xyslMap, xyTexCoords).xy;\n}\n\nfloat sampleStaticCost(vec4 xytk) {\n vec2 sl = xy2sl(xytk);\n vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slObstacleGrid, 0)) / vec2(slGridCellSize) + 0.5;\n float obstacleCost = texture(slObstacleGrid, slTexCoords).r;\n\n if (obstacleCost >= 0.75) return -1.0; // Infinite cost\n\n obstacleCost = step(0.25, obstacleCost) * obstacleHazardCost;\n\n float absLatitude = abs(sl.y);\n if (absLatitude >= laneShoulderLatitude) return -1.0;\n\n float laneCost = abs(absLatitude - laneCenterLatitude) * laneCostSlope + step(0.0, -sl.y * sign(lanePreference)) * lanePreferenceDiscount;\n\n return obstacleCost + laneCost;\n}\n\nfloat sampleDynamicCost(vec4 xytk, float time, float velocity, float acceleration) {\n vec2 sl = xy2sl(xytk);\n vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slDynamicObstacleGrid, 0).xy) / vec2(slGridCellSize) + 0.5;\n float dynamicFrame = floor(time / dynamicFrameTime);\n\n float obstacleCost = texture(slDynamicObstacleGrid, vec3(slTexCoords, dynamicFrame)).r;\n\n if (obstacleCost > 0.75) return -1.0; // Infinite cost\n\n return step(0.25, obstacleCost) * obstacleHazardCost;\n}\n\nfloat calculateAverageStaticCost(int numSamples) {\n float averageStaticCost = 0.0;\n\n for (int i = 0; i < numSamples; i++) {\n float cost = sampleStaticCost(pathSamples[i]);\n\n if (cost < 0.0) return cost;\n\n averageStaticCost += cost;\n }\n\n averageStaticCost /= float(numSamples);\n\n return averageStaticCost;\n}\n\nfloat calculateAverageDynamicCost(int numSamples, float pathLength, float initialTime, float initialVelocity, float acceleration, float abandonThreshold) {\n float s = 0.0;\n float ds = pathLength / float(numSamples - 1);\n float averageDynamicCost = 0.0;\n float maxVelocity = 0.0;\n float maxLateralAcceleration = 0.0;\n float numSamples_f = float(numSamples);\n\n for (int i = 0; i < numSamples; i++) {\n vec4 pathSample = pathSamples[i]; // vec4(x-pos, y-pos, theta (rotation), kappa (curvature))\n\n float velocitySq = 2.0 * acceleration * s + initialVelocity * initialVelocity;\n float velocity = max(smallV, sqrt(max(0.0, velocitySq)));\n maxVelocity = max(maxVelocity, velocity);\n maxLateralAcceleration = max(maxLateralAcceleration, abs(pathSample.w * velocity * velocity));\n\n float time = 2.0 * s / (initialVelocity + velocity) + initialTime;\n\n float dCurv = pathSampleCurvRates[i] * velocity;\n if (dCurv > dCurvatureMax) return -1.0;\n\n float cost = sampleDynamicCost(pathSample, time, velocity, acceleration);\n if (cost < 0.0) return cost;\n\n averageDynamicCost += cost;\n if (averageDynamicCost / numSamples_f >= abandonThreshold) return -1.0;\n\n s += ds;\n }\n\n averageDynamicCost /= numSamples_f;\n\n // Apply speeding penality if any velocity along the trajectory is over the speed limit\n averageDynamicCost += step(speedLimit, maxVelocity) * speedLimitPenalty;\n\n // Apply hard acceleration/deceleration penalties if the acceleration/deceleration exceeds the soft limits\n averageDynamicCost += step(accelerationProfiles[2] + 0.0001, acceleration) * hardAccelerationPenalty;\n averageDynamicCost += (1.0 - step(accelerationProfiles[3], acceleration)) * hardDecelerationPenalty;\n\n // Penalize lateral acceleration\n averageDynamicCost += step(softLateralAccelerationLimit, maxLateralAcceleration) * softLateralAccelerationPenalty;\n averageDynamicCost += linearLateralAccelerationPenalty * maxLateralAcceleration;\n\n return averageDynamicCost;\n}\n\nvec3 calculateAVT(int accelerationIndex, float initialVelocity, float initialTime, float pathLength) {\n float initialVelocitySq = initialVelocity * initialVelocity;\n float acceleration = calculateAcceleration(accelerationIndex, initialVelocitySq, pathLength);\n\n float finalVelocitySq = 2.0 * acceleration * pathLength + initialVelocitySq;\n float finalVelocity = max(smallV, sqrt(max(0.0, finalVelocitySq)));\n\n float finalTime = initialTime;\n\n if (acceleration == 0.0) {\n finalTime += pathLength / finalVelocity;\n } else if (finalVelocitySq <= 0.0) { // Calculate final time if the vehicle stops before the end of the trajectory\n float distanceLeft = pathLength - (smallV * smallV - initialVelocitySq) / (2.0 * acceleration);\n finalTime += (finalVelocity - initialVelocity) / acceleration + distanceLeft / smallV;\n } else {\n finalTime += 2.0 * pathLength / (finalVelocity + initialVelocity);\n }\n\n return vec3(acceleration, finalVelocity, finalTime);\n}\n\n`;\n\nconst SAMPLE_CUBIC_PATH_FN = `\n\nint sampleCubicPath(vec4 start, vec4 end, vec4 cubicPathParams) {\n float p0 = start.w;\n float p1 = cubicPathParams.x;\n float p2 = cubicPathParams.y;\n float p3 = end.w;\n float sG = cubicPathParams.z;\n\n if (sG <= 0.0) return 0;\n\n int numSamples = int(ceil(sG / pathSamplingStep)) + 1;\n\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n float a = p0;\n float b = (-5.5 * p0 + 9.0 * p1 - 4.5 * p2 + p3) / sG;\n float c = (9.0 * p0 - 22.5 * p1 + 18.0 * p2 - 4.5 * p3) / sG_2;\n float d = (-4.5 * (p0 - 3.0 * p1 + 3.0 * p2 - p3)) / sG_3;\n\n pathSamples[0] = start;\n\n float ds = sG / float(numSamples - 1);\n float s = ds;\n vec2 dxy = vec2(0);\n vec2 prevCosSin = vec2(cos(start.z), sin(start.z));\n\n for (int i = 1; i < numSamples; i++) {\n float rot = (((d * s / 4.0 + c / 3.0) * s + b / 2.0) * s + a) * s + start.z;\n float curv = ((d * s + c) * s + b) * s + a;\n\n vec2 cosSin = vec2(cos(rot), sin(rot));\n dxy = dxy * vec2(float(i - 1) / float(i)) + (cosSin + prevCosSin) / vec2(2 * i);\n\n pathSamples[i] = vec4(dxy * vec2(s) + start.xy, rot, curv);\n pathSampleCurvRates[i] = b + s * (2.0 * c + 3.0 * d * s);\n\n s += ds;\n prevCosSin = cosSin;\n }\n\n return numSamples;\n}\n\n`;\n\nconst SAMPLE_QUINTIC_PATH_FN = `\n\nint sampleQuinticPath(vec4 start, vec4 end, vec4 quinticPathParams) {\n float p0 = start.w;\n float p1 = dCurvVehicle;\n float p2 = ddCurvVehicle;\n float p3 = quinticPathParams.x;\n float p4 = quinticPathParams.y;\n float p5 = end.w;\n float sG = quinticPathParams.z;\n\n if (sG <= 0.0) return 0;\n\n int numSamples = int(ceil(sG / pathSamplingStep)) + 1;\n\n float sG_2 = sG * sG;\n float sG_3 = sG_2 * sG;\n\n float a = p0;\n float b = p1;\n float c = p2 / 2.0;\n float d = (-71.875 * p0 + 81.0 * p3 - 10.125 * p4 + p5 - 21.25 * p1 * sG - 2.75 * p2 * sG_2) / sG_3;\n float e = (166.5 * p0 - 202.5 * p3 + 40.5 * p4 - 4.5 * p5 + 45.0 * p1 * sG + 4.5 * p2 * sG_2) / (sG_2 * sG_2);\n float f = (-95.625 * p0 + 121.5 * p3 - 30.375 * p4 + 4.5 * p5 - 24.75 * p1 * sG - 2.25 * p2 * sG_2) / (sG_2 * sG_3);\n\n pathSamples[0] = start;\n\n float ds = sG / float(numSamples - 1);\n float s = ds;\n vec2 dxy = vec2(0);\n vec2 prevCosSin = vec2(cos(start.z), sin(start.z));\n\n for (int i = 1; i < numSamples; i++) {\n float rot = (((((f * s / 6.0 + e / 5.0) * s + d / 4.0) * s + c / 3.0) * s + b / 2.0) * s + a) * s + start.z;\n float curv = ((((f * s + e) * s + d) * s + c) * s + b) * s + a;\n\n vec2 cosSin = vec2(cos(rot), sin(rot));\n dxy = dxy * vec2(float(i - 1) / float(i)) + (cosSin + prevCosSin) / vec2(2 * i);\n\n pathSamples[i] = vec4(dxy * vec2(s) + start.xy, rot, curv);\n pathSampleCurvRates[i] = b + s * (2.0 * c + s * (3.0 * d + s * (4.0 * e + 5.0 * f * s)));\n\n s += ds;\n prevCosSin = cosSin;\n }\n\n return numSamples;\n}\n\n`;\n\nconst NUM_ACCELERATION_PROFILES = 8;\nconst NUM_VELOCITY_RANGES = 4;\nconst NUM_TIME_RANGES = 2;\n\nconst SHARED_UNIFORMS = {\n xyslMap: { type: 'outputTexture' },\n slObstacleGrid: { type: 'outputTexture', name: 'slObstacleGridDilated' },\n slDynamicObstacleGrid: { type: 'outputTexture', name: 'slDynamicObstacleGrid', textureType: '2DArray' },\n accelerationProfiles: { type: 'float', length: 5 },\n finalVelocityProfiles: { type: 'float', length: 3 },\n xyCenterPoint: { type: 'vec2' },\n xyGridCellSize: { type: 'float' },\n slCenterPoint: { type: 'vec2' },\n slGridCellSize: { type: 'float'},\n laneCenterLatitude: { type: 'float'},\n laneShoulderLatitude: { type: 'float'},\n laneCostSlope: { type: 'float'},\n lanePreference: { type: 'float' },\n lanePreferenceDiscount: { type: 'float' },\n obstacleHazardCost: { type: 'float' },\n speedLimit: { type: 'float' },\n speedLimitPenalty: { type: 'float' },\n hardAccelerationPenalty: { type: 'float' },\n hardDecelerationPenalty: { type: 'float' },\n softLateralAccelerationLimit: { type: 'float' },\n softLateralAccelerationPenalty: { type: 'float' },\n linearLateralAccelerationPenalty: { type: 'float' },\n dCurvatureMax: { type: 'float' },\n pathSamplingStep: { type: 'float' },\n rearAxleToCenter: { type: 'float' },\n dynamicFrameTime: { type: 'float' }\n};\n\nfunction buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime) {\n return {\n accelerationProfiles: [3.5, -6.5, 2.0, -3.0, 0],\n finalVelocityProfiles: [0.999 * config.speedLimit, 1.0, 0.01],\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n xyGridCellSize: config.xyGridCellSize,\n slCenterPoint: [slCenterPoint.x, slCenterPoint.y],\n slGridCellSize: config.slGridCellSize,\n laneCenterLatitude: config.laneCenterLatitude,\n laneShoulderLatitude: config.laneShoulderLatitude,\n laneCostSlope: config.laneCostSlope,\n lanePreference: config.lanePreference,\n lanePreferenceDiscount: config.lanePreferenceDiscount,\n obstacleHazardCost: config.obstacleHazardCost,\n speedLimit: config.speedLimit,\n speedLimitPenalty: config.speedLimitPenalty,\n hardAccelerationPenalty: config.hardAccelerationPenalty,\n hardDecelerationPenalty: config.hardDecelerationPenalty,\n softLateralAccelerationLimit: config.softLateralAccelerationLimit,\n softLateralAccelerationPenalty: config.softLateralAccelerationPenalty,\n linearLateralAccelerationPenalty: config.linearLateralAccelerationPenalty,\n dCurvatureMax: config.dCurvatureMax,\n pathSamplingStep: config.pathSamplingStep,\n rearAxleToCenter: config.rearAxleToCenter,\n dynamicFrameTime: dynamicFrameTime\n };\n}\n\n\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/pathFromVehicleCosts.js\n\n\nfunction fromVehiclePathCostsKernel(pathType) {\n return SHARED_SHADER + (pathType == 'cubic' ? SAMPLE_CUBIC_PATH_FN : SAMPLE_QUINTIC_PATH_FN) +\n\n`\n\n/* Calculate cost of a {cubic|quintic} path from vehicle to (stationConnectivity * numLatitudes * numAccelerations) nodes\n * width: numLatitudes\n * height: station * numAccelerations\n */\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n int latitude = indexes.x;\n int station = indexes.y / numAccelerations;\n int accelerationIndex = int(mod(float(indexes.y), float(numAccelerations)));\n\n vec4 pathStart = vec4(0, 0, 0, curvVehicle);\n vec4 pathEnd = texelFetch(lattice, ivec2(latitude, station), 0);\n\n vec4 pathParams = texelFetch(pathsFromVehicle, ivec2(latitude, station), 0);\n\n // If the path didn't converge\n if (pathParams.w == 0.0) return vec4(-1);\n\n int numSamples = ${pathType == 'cubic' ? 'sampleCubicPath' : 'sampleQuinticPath'}(pathStart, pathEnd, pathParams);\n float pathLength = pathParams.z;\n\n if (numSamples < 2) return vec4(-1);\n\n float averageStaticCost = calculateAverageStaticCost(numSamples);\n if (averageStaticCost < 0.0) return vec4(-1);\n\n int slIndex = station * kernelSize.x + latitude;\n float hysteresisAdjustment = (slIndex == firstLatticePoint || slIndex == secondLatticePoint) ? 0.0 : hysteresisDiscount;\n averageStaticCost += hysteresisAdjustment;\n\n vec3 avt = calculateAVT(accelerationIndex, velocityVehicle, 0.0, pathLength);\n float acceleration = avt.x;\n float finalVelocity = avt.y;\n float finalTime = avt.z;\n\n float averageDynamicCost = calculateAverageDynamicCost(numSamples, pathLength, 0.0, velocityVehicle, acceleration, 1.0 / 0.0);\n if (averageDynamicCost < 0.0) return vec4(-1);\n\n averageDynamicCost += accelerationChangePenalty;\n\n // The cost of a trajectory is the average sample cost scaled by the path length\n float totalCost = (averageStaticCost + averageDynamicCost + ${pathType == 'cubic' ? '(cubicPathPenalty * velocityVehicle * velocityVehicle)' : '0.0'}) * pathLength;\n ${pathType != 'cubic' ? 'totalCost = -1.0;' : ''}\n\n return vec4(totalCost, finalVelocity, finalTime, ${pathType == 'cubic' ? '-2' : '-1'});\n}\n\n`;\n}\n\n/* harmony default export */ const gpgpu_programs_pathFromVehicleCosts = ({\n setUp() {\n return [\n {\n kernel: fromVehiclePathCostsKernel('cubic'),\n output: { name: 'cubicPathFromVehicleCosts' },\n uniforms: Object.assign({}, SHARED_UNIFORMS, {\n lattice: { type: 'sharedTexture' },\n pathsFromVehicle: { type: 'outputTexture', name: 'cubicPathsFromVehicle' },\n firstLatticePoint: { type: 'int' },\n secondLatticePoint: { type: 'int' },\n velocityVehicle: { type: 'float' },\n curvVehicle: { type: 'float' },\n numAccelerations: { type: 'int' },\n cubicPathPenalty: { type: 'float' },\n hysteresisDiscount: { type: 'float' },\n accelerationChangePenalty: { type: 'float' }\n })\n },\n {\n kernel: fromVehiclePathCostsKernel('quintic'),\n output: { name: 'quinticPathFromVehicleCosts' },\n uniforms: Object.assign({}, SHARED_UNIFORMS, {\n lattice: { type: 'sharedTexture' },\n pathsFromVehicle: { type: 'outputTexture', name: 'quinticPathsFromVehicle' },\n firstLatticePoint: { type: 'int' },\n secondLatticePoint: { type: 'int' },\n velocityVehicle: { type: 'float' },\n curvVehicle: { type: 'float' },\n dCurvVehicle: { type: 'float' },\n ddCurvVehicle: { type: 'float' },\n numAccelerations: { type: 'int' },\n hysteresisDiscount: { type: 'float' },\n accelerationChangePenalty: { type: 'float' }\n })\n }\n ];\n },\n\n update(config, pose, xyCenterPoint, slCenterPoint, firstLatticePoint, secondLatticePoint, dynamicFrameTime) {\n return [\n {\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity * NUM_ACCELERATION_PROFILES,\n uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), {\n firstLatticePoint: firstLatticePoint,\n secondLatticePoint: secondLatticePoint,\n velocityVehicle: pose.velocity,\n curvVehicle: pose.curv,\n numAccelerations: NUM_ACCELERATION_PROFILES,\n cubicPathPenalty: config.cubicPathPenalty,\n hysteresisDiscount: config.hysteresisDiscount,\n accelerationChangePenalty: config.accelerationChangePenalty\n })\n },\n {\n width: config.lattice.numLatitudes,\n height: config.lattice.stationConnectivity * NUM_ACCELERATION_PROFILES,\n uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), {\n firstLatticePoint: firstLatticePoint,\n secondLatticePoint: secondLatticePoint,\n velocityVehicle: pose.velocity,\n curvVehicle: pose.curv,\n dCurvVehicle: pose.dCurv,\n ddCurvVehicle: pose.ddCurv,\n numAccelerations: NUM_ACCELERATION_PROFILES,\n hysteresisDiscount: config.hysteresisDiscount,\n accelerationChangePenalty: config.accelerationChangePenalty\n })\n }\n ];\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/graphSearch.js\n/* State Lattice Cost Map\n * \n * 5-dimensional node: station, latitude, acceleration profile, velocity, time\n *\n * A draw call per station s\n * * Input to kernel: latitude l, acceleration profile a, velocity range v, time range t\n * * Find all SL vertices that can connect to this node\n * * For each of those vertices, check if any terminate in this specific velocity and time range\n * * Based on initial velocity, initial time, and acceleration\n * * Each connected SL vertex should have a * v * t nodes that could possibly terminate at this node\n * * For all valid edges, find the one with the lowest cost\n *\n * Input:\n * * 2D texture array cost map\n * * Height: num of latitudes (~20)\n * * Width: num of acceleration profiles * num of time ranges * num of velocity ranges (8 * 2 * 4 = ~64)\n * * A flattened 3D array:\n * d1: acceleration\n * d2: velocity\n * d3: time\n * * Layer: num of stations (~10)\n * \n * Output:\n * * 2D texture slice of the next station in the input 2D texture array cost map\n *\n * Cost Map Elements:\n * * Traversal cost so far\n * * Ending velocity\n * * Ending time\n * * Index of parent node\n *\n * Since one cubic path can be shared between multiple trajectories, they need to be pre-optimized.\n *\n * Quintic Paths:\n * Stations 0 through (numStations - 1) correspond to the stations on the lattice; however,\n * a new station (station -1) will be used to signifiy the single vehicle pose node. Either\n * a cubic path or quintic path can be used to connect this single node to the lattice\n * (depending on vehicle velocity). At station -1, latitude 0 will correspond to a cubic path,\n * and latitude 1 will correspond to a quintic path. All other latitudes will be skipped.\n */\n\n\n\nconst SOLVE_STATION_KERNEL =\n SHARED_SHADER +\n SAMPLE_CUBIC_PATH_FN +\n SAMPLE_QUINTIC_PATH_FN +\n\n`\n\nvec4 kernel() {\n ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize));\n\n int latitude = indexes.y;\n\n int numPerTime = numAccelerations * numVelocities;\n int timeIndex = indexes.x / numPerTime;\n indexes.x -= timeIndex * numPerTime;\n int velocityIndex = indexes.x / numAccelerations;\n int accelerationIndex = int(mod(float(indexes.x), float(numAccelerations)));\n\n int minLatitude = max(latitude - latitudeConnectivity / 2, 0);\n int maxLatitude = min(latitude + latitudeConnectivity / 2, numLatitudes - 1);\n\n int slIndex = station * numLatitudes + latitude;\n\n vec4 pathEnd = texelFetch(lattice, ivec2(latitude, station), 0);\n\n float minVelocity = velocityRanges[velocityIndex];\n float maxVelocity = velocityRanges[velocityIndex + 1];\n\n float minTime = timeRanges[timeIndex];\n float maxTime = timeRanges[timeIndex + 1];\n\n vec4 bestTrajectory = vec4(-1); // -1 means infinite cost\n float bestTerminalCost = 1.0 / 0.0;\n\n float hysteresisAdjustment = (slIndex == firstLatticePoint || slIndex == secondLatticePoint) ? 0.0 : hysteresisDiscount;\n\n for (int prevStation = max(station - stationConnectivity, 0); prevStation < station; prevStation++) {\n int stationConnectivityIndex = prevStation - station + stationConnectivity;\n\n for (int prevLatitude = minLatitude; prevLatitude <= maxLatitude; prevLatitude++) {\n int latitudeConnectivityIndex = prevLatitude - latitude + latitudeConnectivity / 2;\n int connectivityIndex = stationConnectivityIndex * latitudeConnectivity + latitudeConnectivityIndex;\n\n vec4 pathStart = texelFetch(lattice, ivec2(prevLatitude, prevStation), 0);\n vec4 cubicPathParams = texelFetch(cubicPaths, ivec2(slIndex, connectivityIndex), 0);\n\n // If the path didn't converge\n if (cubicPathParams.w == 0.0) continue;\n\n int numSamples = sampleCubicPath(pathStart, pathEnd, cubicPathParams);\n float pathLength = cubicPathParams.z;\n\n if (numSamples < 2) continue;\n\n float averageStaticCost = calculateAverageStaticCost(numSamples);\n if (averageStaticCost < 0.0) continue;\n\n averageStaticCost += hysteresisAdjustment;\n\n if (averageStaticCost * pathLength >= bestTerminalCost) continue;\n\n for (int prevVelocity = 0; prevVelocity < numVelocities; prevVelocity++) {\n for (int prevTime = 0; prevTime < numTimes; prevTime++) {\n for (int prevAccel = 0; prevAccel < numAccelerations; prevAccel++) {\n int avtIndex = prevTime * numPerTime + prevVelocity * numAccelerations + prevAccel;\n\n // Cost table entry:\n // x: cost so far\n // y: end velocity\n // z: end time\n // w: parent index\n vec4 costTableEntry = texelFetch(costTable, ivec3(avtIndex, prevLatitude, prevStation), 0);\n\n // If cost entry is infinity\n if (costTableEntry.x < 0.0 || averageStaticCost * pathLength + costTableEntry.x >= bestTerminalCost) continue;\n\n vec3 avt = calculateAVT(accelerationIndex, costTableEntry.y, costTableEntry.z, pathLength);\n float acceleration = avt.x;\n float finalVelocity = avt.y;\n float finalTime = avt.z;\n\n if (averageStaticCost * pathLength + costTableEntry.x + extraTimePenalty * finalTime >= bestTerminalCost) continue;\n\n // If the calculated final velocity does not match this fragment's velocity range, then skip this trajectory\n if (finalVelocity < minVelocity || finalVelocity >= maxVelocity) continue;\n\n // If the calculated final time does not match this fragment's time range, then skip this trajectory\n if (finalTime < minTime || finalTime >= maxTime) continue;\n\n float abandonThreshold = (bestTerminalCost - extraTimePenalty * finalTime - costTableEntry.x) / pathLength - averageStaticCost;\n float averageDynamicCost = calculateAverageDynamicCost(numSamples, pathLength, costTableEntry.z, costTableEntry.y, acceleration, abandonThreshold);\n if (averageDynamicCost < 0.0) continue;\n\n if (accelerationIndex != prevAccel)\n averageDynamicCost += accelerationChangePenalty;\n\n // The cost of a trajectory is the average sample cost scaled by the path length\n float totalCost = (averageStaticCost + averageDynamicCost) * pathLength + costTableEntry.x;\n\n float terminalCost = totalCost + extraTimePenalty * finalTime;\n if (terminalCost >= bestTerminalCost) continue;\n bestTerminalCost = terminalCost;\n\n int incomingIndex = avtIndex + numPerTime * numTimes * (prevLatitude + numLatitudes * prevStation);\n bestTrajectory = vec4(totalCost, finalVelocity, finalTime, incomingIndex);\n }\n }\n }\n }\n }\n\n if (station < stationConnectivity) {\n ivec2 slaIndex = ivec2(latitude, station * numAccelerations + accelerationIndex);\n\n vec4 costTableEntry = texelFetch(cubicPathFromVehicleCosts, slaIndex, 0);\n float terminalCost;\n\n if (costTableEntry.x >= 0.0) {\n terminalCost = costTableEntry.x + extraTimePenalty * costTableEntry.z;\n\n if (terminalCost < bestTerminalCost) {\n bestTerminalCost = terminalCost;\n bestTrajectory = costTableEntry;\n }\n }\n\n costTableEntry = texelFetch(quinticPathFromVehicleCosts, slaIndex, 0);\n\n if (costTableEntry.x >= 0.0) {\n terminalCost = costTableEntry.x + extraTimePenalty * costTableEntry.z;\n\n if (terminalCost < bestTerminalCost) {\n bestTerminalCost = terminalCost;\n bestTrajectory = costTableEntry;\n }\n }\n }\n\n return bestTrajectory;\n}\n\n`;\n\n/* harmony default export */ const gpgpu_programs_graphSearch = ({\n setUp() {\n return {\n kernel: SOLVE_STATION_KERNEL,\n output: { name: 'graphSearch' },\n uniforms: Object.assign({}, SHARED_UNIFORMS, {\n lattice: { type: 'sharedTexture' },\n costTable: { type: 'sharedTexture', textureType: '2DArray' },\n cubicPaths: { type: 'outputTexture' },\n cubicPathFromVehicleCosts: { type: 'outputTexture' },\n quinticPathFromVehicleCosts: { type: 'outputTexture' },\n firstLatticePoint: { type: 'int' },\n secondLatticePoint: { type: 'int' },\n velocityVehicle: { type: 'float' },\n curvVehicle: { type: 'float' },\n dCurvVehicle: { type: 'float' },\n ddCurvVehicle: { type: 'float' },\n extraTimePenalty: { type: 'float' },\n hysteresisDiscount: { type: 'float' },\n accelerationChangePenalty: { type: 'float' },\n numStations: { type: 'int' },\n numLatitudes: { type: 'int' },\n numAccelerations: { type: 'int' },\n numVelocities: { type: 'int' },\n numTimes: { type: 'int' },\n stationConnectivity: { type: 'int' },\n latitudeConnectivity: { type: 'int' },\n velocityRanges: { type: 'float', length: NUM_VELOCITY_RANGES + 1 },\n timeRanges: { type: 'float', length: NUM_TIME_RANGES + 1 },\n station: { type: 'int' } // Updated in `drawProxy`\n }),\n drawProxy: (gpgpu, program, draw) => {\n const width = NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES * NUM_TIME_RANGES;\n const height = program.meta.lattice.numLatitudes;\n const costTable = new Float32Array(width * height * program.meta.lattice.numStations * 4);\n\n for (let s = 0; s < program.meta.lattice.numStations; s++) {\n gpgpu.updateProgramUniforms(program, { station: s });\n draw();\n\n gpgpu.gl.readPixels(0, 0, width, height, gpgpu.gl.RGBA, gpgpu.gl.FLOAT, costTable, s * width * height * 4);\n\n gpgpu.gl.bindTexture(gpgpu.gl.TEXTURE_2D_ARRAY, gpgpu.sharedTextures.costTable);\n gpgpu.gl.copyTexSubImage3D(gpgpu.gl.TEXTURE_2D_ARRAY, 0, 0, 0, s, 0, 0, width, height);\n }\n\n gpgpu._graphSearchCostTable = costTable;\n }\n };\n },\n\n update(config, pose, xyCenterPoint, slCenterPoint, firstLatticePoint, secondLatticePoint, dynamicFrameTime) {\n return {\n width: NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES * NUM_TIME_RANGES,\n height: config.lattice.numLatitudes,\n meta: {\n lattice: config.lattice\n },\n uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), {\n firstLatticePoint: firstLatticePoint,\n secondLatticePoint: secondLatticePoint,\n velocityVehicle: pose.velocity,\n curvVehicle: pose.curv,\n dCurvVehicle: pose.dCurv,\n ddCurvVehicle: pose.ddCurv,\n extraTimePenalty: config.extraTimePenalty,\n hysteresisDiscount: config.hysteresisDiscount,\n accelerationChangePenalty: config.accelerationChangePenalty,\n numStations: config.lattice.numStations,\n numLatitudes: config.lattice.numLatitudes,\n numAccelerations: NUM_ACCELERATION_PROFILES,\n numVelocities: NUM_VELOCITY_RANGES,\n numTimes: NUM_TIME_RANGES,\n stationConnectivity: config.lattice.stationConnectivity,\n latitudeConnectivity: config.lattice.latitudeConnectivity,\n velocityRanges: [0, config.speedLimit / 3, config.speedLimit * 2 / 3, config.speedLimit, 1000000],\n timeRanges: [0, 10, 1000000]\n })\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/gpgpu-programs/xyObstacleCostGrid.js\nconst XY_OBSTACLE_COST_KERNEL = `\n\nvec4 kernel() {\n vec2 xy = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(xyGridCellSize) + xyCenterPoint;\n\n vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyslMap, 0)) / vec2(xyGridCellSize) + 0.5;\n vec2 sl = texture(xyslMap, xyTexCoords).xy;\n\n vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slObstacleGrid, 0)) / vec2(slGridCellSize) + 0.5;\n return texture(slObstacleGrid, slTexCoords);\n}\n\n`;\n\n// Build XY obstacle costs using XYSL map\n/* harmony default export */ const xyObstacleCostGrid = ({\n setUp() {\n return {\n kernel: XY_OBSTACLE_COST_KERNEL,\n output: { name: 'xyObstacleCostGrid', read: true },\n uniforms: {\n xyslMap: { type: 'outputTexture' },\n slObstacleGrid: { type: 'outputTexture', name: 'slObstacleGridDilated' },\n xyCenterPoint: { type: 'vec2' },\n xyGridCellSize: { type: 'float'},\n slCenterPoint: { type: 'vec2' },\n slGridCellSize: { type: 'float'}\n }\n };\n },\n\n update(config, xyWidth, xyHeight, xyCenterPoint, slCenterPoint) {\n return {\n width: xyWidth,\n height: xyHeight,\n uniforms: {\n xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y],\n xyGridCellSize: config.xyGridCellSize,\n slCenterPoint: [slCenterPoint.x, slCenterPoint.y],\n slGridCellSize: config.slGridCellSize\n }\n };\n }\n});\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/PathPlanner.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst PathPlanner_NUM_ACCELERATION_PROFILES = 8;\nconst PathPlanner_NUM_VELOCITY_RANGES = 4;\nconst PathPlanner_NUM_TIME_RANGES = 2;\n\n/* Obstacle cost map:\n *\n * 1. Rasterize triangles from polygonal obstacles into XY-space occupancy grid\n * 2. Convert occupancy grid to SL-space\n * * Width is spatial horizon of the state lattice\n * * Height is lane width\n * * Resolution should be higher than XY-grid\n * * Get XY position from centerline texture\n * * Lookup XY in XY occupancy grid (nearest)\n * 3. Dilate SL-space grid using two passes (along station, then along latitude)\n * * collision area: half car size + 0.3m\n * * high cost area: 1 meter\n * 4. Convert back to XY-space using XYSL map\n */\n\nclass PathPlanner {\n constructor() {\n this.previousStartStation = null;\n this.previousFirstLatticePoint = -1;\n this.previousSecondLatticePoint = -1;\n this.previousFirstAcceleration = -1;\n this.previousSecondLatticePoint = -1;\n\n let start = performance.now();\n const programs = [\n xyObstacleGrid.setUp(),\n slObstacleGrid.setUp(),\n ...slObstacleGridDilation.setUp(),\n slDynamicObstacleGrid.setUp(),\n xyslMap.setUp(),\n ...optimizeCubicPaths.setUp(),\n optimizeQuinticPaths.setUp(),\n ...pathFromVehicleCosts.setUp(),\n graphSearch.setUp(),\n ].map(p => Object.assign({}, p, { width: 1, height: 1 }));\n\n this.gpgpu = new GPGPU(programs);\n }\n\n reset() {\n this.previousStartStation = null;\n this.previousFirstLatticePoint = -1;\n this.previousSecondLatticePoint = -1;\n this.previousFirstAcceleration = -1;\n this.previousSecondLatticePoint = -1;\n }\n\n plan(vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles) {\n const latticeStationInterval = this._latticeStationInterval();\n\n const centerlineRaw = lanePath.sampleStations(vehicleStation, Math.ceil((this.config.spatialHorizon + latticeStationInterval) / this.config.centerlineStationInterval) + 1, this.config.centerlineStationInterval);\n\n // Transform all centerline points into vehicle frame\n const vehicleXform = vehicleTransform(vehiclePose);\n const centerline = centerlineRaw.map(c => { return { pos: c.pos.clone().applyMatrix3(vehicleXform), rot: c.rot - vehiclePose.rot, curv: c.curv } });\n\n const centerlineData = new Float32Array(centerline.length * 3);\n const maxPoint = new THREE.Vector2(0, 0);\n const minPoint = new THREE.Vector2(0, 0);\n\n for (let i = 0; i < centerline.length; i++) {\n const sample = centerline[i];\n const pos = sample.pos;\n centerlineData[i * 3 + 0] = pos.x;\n centerlineData[i * 3 + 1] = pos.y;\n centerlineData[i * 3 + 2] = sample.rot;\n\n maxPoint.max(pos);\n minPoint.min(pos);\n }\n\n const diff = maxPoint.clone().sub(minPoint);\n const xyCenterPoint = minPoint.clone().add(maxPoint).divideScalar(2);\n\n // Sizes of the xy grids (in pixels, not meters)\n const xyWidth = Math.ceil((diff.x + this.config.gridMargin * 2) / this.config.xyGridCellSize);\n const xyHeight = Math.ceil((diff.y + this.config.gridMargin * 2) / this.config.xyGridCellSize);\n\n const stationWidth = this.config.spatialHorizon + latticeStationInterval * 2;\n const slCenterPoint = new THREE.Vector2(this.config.spatialHorizon / 2, 0);\n\n // Sizes of the sl grids (in pixels, not meters)\n const slWidth = Math.ceil(stationWidth / this.config.slGridCellSize);\n const slHeight = Math.ceil((this.config.roadWidth + this.config.gridMargin * 2) / this.config.slGridCellSize);\n\n let startStation;\n\n if (this.previousStartStation === null || vehicleStation + latticeStationInterval / 2 > this.previousStartStation) {\n startStation = (this.previousStartStation === null ? vehicleStation : this.previousStartStation) + latticeStationInterval;\n this.previousStartStation = startStation;\n this.previousFirstLatticePoint -= this.config.lattice.numLatitudes;\n this.previousSecondLatticePoint -= this.config.lattice.numLatitudes;\n } else {\n startStation = this.previousStartStation;\n }\n\n const lattice = this._buildLattice(lanePath, startStation, vehiclePose.rot, vehicleXform);\n\n const temporalHorizon = this.config.spatialHorizon / this.config.speedLimit;\n const dynamicFrameTime = temporalHorizon / this.config.numDynamicFrames;\n\n for (const [i, p] of [\n xyObstacleGrid.update(this.config, xyWidth, xyHeight, xyCenterPoint, vehicleXform, staticObstacles),\n slObstacleGrid.update(this.config, slWidth, slHeight, slCenterPoint, xyCenterPoint),\n ...slObstacleGridDilation.update(this.config, slWidth, slHeight),\n slDynamicObstacleGrid.update(this.config, slWidth, slHeight, slCenterPoint, vehicleStation, startTime, dynamicFrameTime, dynamicObstacles),\n xyslMap.update(this.config, xyWidth, xyHeight, xyCenterPoint),\n ...optimizeCubicPaths.update(this.config, vehiclePose),\n optimizeQuinticPaths.update(this.config, vehiclePose),\n ...pathFromVehicleCosts.update(this.config, vehiclePose, xyCenterPoint, slCenterPoint, this.previousFirstLatticePoint, this.previousSecondLatticePoint, dynamicFrameTime),\n graphSearch.update(this.config, vehiclePose, xyCenterPoint, slCenterPoint, this.previousFirstLatticePoint, this.previousSecondLatticePoint, dynamicFrameTime)\n ].entries()) {\n this.gpgpu.updateProgram(i, p);\n }\n\n this.gpgpu.updateSharedTextures({\n centerline: {\n width: centerline.length,\n height: 1,\n channels: 3,\n filter: 'linear',\n data: centerlineData\n },\n costTable: {\n width: PathPlanner_NUM_ACCELERATION_PROFILES * PathPlanner_NUM_VELOCITY_RANGES * PathPlanner_NUM_TIME_RANGES,\n height: this.config.lattice.numLatitudes,\n depth: this.config.lattice.numStations,\n channels: 4,\n textureType: '2DArray'\n },\n lattice: {\n width: this.config.lattice.numLatitudes,\n height: this.config.lattice.numStations,\n channels: 4,\n data: lattice\n }\n });\n\n this.gpgpu._graphSearchCostTable = null;\n this.gpgpu._dynamicObstacleGrid = null;\n\n let start = performance.now();\n const outputs = this.gpgpu.run();\n const costTable = this.gpgpu._graphSearchCostTable;\n const cubicPathParams = outputs[6];\n const cubicPathFromVehicleParams = outputs[7];\n const quinticPathFromVehicleParams = outputs[8];\n\n let bestEntry = [Number.POSITIVE_INFINITY];\n let bestEntryIndex;\n const numEntries = costTable.length / 4;\n\n for (let i = 0; i < numEntries; i++) {\n const entryUnpacked = this._unpackCostTableIndex(i);\n const entry = [\n costTable[i * 4],\n costTable[i * 4 + 1],\n costTable[i * 4 + 2],\n costTable[i * 4 + 3]\n ];\n\n if (entry[0] < 0) continue;\n\n entry[0] += this._terminalCost(entryUnpacked, entry);\n\n if (entry[0] < bestEntry[0]) {\n bestEntryIndex = i;\n bestEntry = entry;\n }\n }\n\n const inverseVehicleXform = (new THREE.Matrix3()).getInverse(vehicleXform);\n let bestTrajectory = null;\n let fromVehicleSegment = null;\n let fromVehicleParams = null;\n let firstLatticePoint = -1;\n let firstAcceleration = -1;\n let secondLatticePoint = -1;\n let secondAcceleration = -1;\n\n if (isFinite(bestEntry[0])) {\n [bestTrajectory, fromVehicleSegment, fromVehicleParams, firstLatticePoint, firstAcceleration, secondLatticePoint, secondAcceleration] = this._reconstructTrajectory(\n bestEntryIndex,\n costTable,\n cubicPathParams,\n cubicPathFromVehicleParams,\n quinticPathFromVehicleParams,\n vehiclePose,\n lattice\n );\n\n fromVehicleSegment.forEach(p => {\n p.pos = p.pos.applyMatrix3(inverseVehicleXform);\n p.rot += vehiclePose.rot;\n });\n\n bestTrajectory.forEach(p => {\n p.pos = p.pos.applyMatrix3(inverseVehicleXform);\n p.rot += vehiclePose.rot;\n });\n }\n\n this.previousFirstLatticePoint = firstLatticePoint;\n this.previousFirstAcceleration = firstAcceleration;\n this.previousSecondLatticePoint = secondLatticePoint;\n this.previousSecondAcceleration = secondAcceleration;\n\n return {\n path: bestTrajectory,\n fromVehicleSegment: fromVehicleSegment,\n fromVehicleParams: fromVehicleParams,\n latticeStartStation: this.previousStartStation,\n dynamicObstacleGrid: { data: this.gpgpu._dynamicObstacleGrid, width: slWidth, height: slHeight }\n };\n }\n\n _buildLattice(lanePath, startStation, vehicleRot, vehicleXform) {\n const centerline = lanePath.sampleStations(startStation, this.config.lattice.numStations, this._latticeStationInterval());\n const offset = Math.floor(this.config.lattice.numLatitudes / 2);\n const lattice = new Float32Array(this.config.lattice.numStations * this.config.lattice.numLatitudes * 4);\n let index = 0;\n\n for (let s = 0; s < centerline.length; s++) {\n const sample = centerline[s];\n\n for (let l = 0; l < this.config.lattice.numLatitudes; l++) {\n const latitude = (l - offset) / offset * this.config.roadWidth / 2;\n const rot = sample.rot - vehicleRot;\n const pos = THREE.Vector2.fromAngle(rot + Math.PI / 2).multiplyScalar(latitude).add(sample.pos.clone().applyMatrix3(vehicleXform));\n const curv = sample.curv == 0 ? 0 : 1 / (1 / sample.curv - latitude);\n\n lattice[index++] = pos.x;\n lattice[index++] = pos.y;\n lattice[index++] = rot;\n lattice[index++] = curv;\n }\n }\n\n return lattice;\n }\n\n _latticeStationInterval() {\n return this.config.spatialHorizon / this.config.lattice.numStations;\n }\n\n _terminalCost([stationIndex, latitudeIndex, timeIndex, velocityIndex, accelerationIndex], [cost, finalVelocity, finalTime, incomingIndex]) {\n // Only consider vertices that reach the end of the spatial or temporal horizon\n if (stationIndex != this.config.lattice.numStations - 1 && finalVelocity > 0.05)\n return Number.POSITIVE_INFINITY;\n\n const station = (this.config.spatialHorizon / this.config.lattice.numStations) * (stationIndex + 1);\n\n return station * -this.config.stationReachDiscount + finalTime * this.config.extraTimePenalty;\n }\n\n _unpackCostTableIndex(index) {\n if (index < 0) return [-1, index + 2, null, null, null];\n\n const numPerTime = PathPlanner_NUM_ACCELERATION_PROFILES * PathPlanner_NUM_VELOCITY_RANGES;\n const numPerLatitude = numPerTime * PathPlanner_NUM_TIME_RANGES;\n const numPerStation = this.config.lattice.numLatitudes * numPerLatitude;\n\n const stationIndex = Math.floor(index / numPerStation);\n index -= stationIndex * numPerStation;\n\n const latitudeIndex = Math.floor(index / numPerLatitude);\n index -= latitudeIndex * numPerLatitude;\n\n const timeIndex = Math.floor(index / numPerTime);\n index -= timeIndex * numPerTime;\n\n const velocityIndex = Math.floor(index / PathPlanner_NUM_ACCELERATION_PROFILES);\n const accelerationIndex = index % PathPlanner_NUM_ACCELERATION_PROFILES;\n\n return [stationIndex, latitudeIndex, timeIndex, velocityIndex, accelerationIndex];\n }\n\n _reconstructTrajectory(index, costTable, cubicPathParams, cubicPathFromVehicleParams, quinticPathFromVehicleParams, vehiclePose, lattice) {\n let unpacked = this._unpackCostTableIndex(index);\n unpacked.push(costTable[index * 4 + 1]);\n const nodes = [unpacked];\n\n let count = 0;\n while (unpacked[0] >= 0 && count++ < 100) {\n index = costTable[index * 4 + 3];\n unpacked = this._unpackCostTableIndex(index);\n\n const finalVelocity = unpacked[0] >= 0 ? costTable[index * 4 + 1] : vehiclePose.velocity;\n unpacked.push(finalVelocity);\n\n nodes.unshift(unpacked);\n }\n if (count >= 100) throw new Error('Infinite loop encountered while reconstructing trajectory.');\n\n const points = [];\n let fromVehicleSegment = [];\n let fromVehicleParams = null;\n\n for (let i = 0; i < nodes.length - 1; i++) {\n const [prevStation, prevLatitude, _pt, _pv, _pa, prevVelocity] = nodes[i];\n const [station, latitude, _t, _v, _a, velocity] = nodes[i + 1];\n\n let length;\n let pathBuilder;\n\n if (prevStation < 0) {\n const start = {\n pos: new THREE.Vector2(0, 0),\n rot: 0,\n curv: vehiclePose.curv\n };\n\n const endIndex = (station * this.config.lattice.numLatitudes + latitude) * 4;\n const end = {\n pos: new THREE.Vector2(lattice[endIndex], lattice[endIndex + 1]),\n rot: lattice[endIndex + 2],\n curv: lattice[endIndex + 3]\n };\n\n if (prevLatitude == 0) { // Cubic path from vehicle to lattice node\n length = cubicPathFromVehicleParams[endIndex + 2];\n\n const params = {\n p1: cubicPathFromVehicleParams[endIndex],\n p2: cubicPathFromVehicleParams[endIndex + 1],\n sG: length\n };\n\n pathBuilder = new CubicPath(start, end, params);\n\n fromVehicleParams = { type: 'cubic', params: params };\n } else { // Quintic path from vehicle to lattice node\n length = quinticPathFromVehicleParams[endIndex + 2];\n\n const params = {\n p3: quinticPathFromVehicleParams[endIndex],\n p4: quinticPathFromVehicleParams[endIndex + 1],\n sG: length\n };\n\n pathBuilder = new QuinticPath(start, end, params);\n\n fromVehicleParams = { type: 'quintic', params: params };\n }\n } else {\n const startIndex = (prevStation * this.config.lattice.numLatitudes + prevLatitude) * 4;\n const endIndex = (station * this.config.lattice.numLatitudes + latitude) * 4;\n\n const start = {\n pos: new THREE.Vector2(lattice[startIndex], lattice[startIndex + 1]),\n rot: lattice[startIndex + 2],\n curv: lattice[startIndex + 3]\n };\n\n const end = {\n pos: new THREE.Vector2(lattice[endIndex], lattice[endIndex + 1]),\n rot: lattice[endIndex + 2],\n curv: lattice[endIndex + 3]\n };\n\n const slIndex = station * this.config.lattice.numLatitudes + latitude;\n const connectivityIndex = (prevStation - station + this.config.lattice.stationConnectivity) * this.config.lattice.latitudeConnectivity + prevLatitude - latitude + Math.floor(this.config.lattice.latitudeConnectivity / 2);\n const cubicPathIndex = (connectivityIndex * this.config.lattice.numStations * this.config.lattice.numLatitudes + slIndex) * 4;\n\n length = cubicPathParams[cubicPathIndex + 2];\n\n pathBuilder = new CubicPath(start, end, {\n p1: cubicPathParams[cubicPathIndex],\n p2: cubicPathParams[cubicPathIndex + 1],\n sG: length\n });\n }\n\n const path = pathBuilder.buildPath(Math.ceil(length / 0.25));\n\n const prevVelocitySq = prevVelocity * prevVelocity;\n const accel = (velocity * velocity - prevVelocitySq) / 2 / length;\n const ds = length / (path.length - 1);\n let s = 0;\n\n for (let p = 0; p < path.length; p++) {\n path[p].velocity = Math.sqrt(2 * accel * s + prevVelocitySq);\n path[p].acceleration = accel;\n s += ds;\n }\n\n if (prevStation < 0) {\n fromVehicleSegment = path;\n } else {\n if (i > 0) path.shift();\n points.push(...path);\n }\n }\n\n let firstLatticePoint = null\n let firstAcceleration = null;\n let secondLatticePoint = null;\n let secondAcceleration = null;\n\n if (nodes.length >= 2) {\n firstLatticePoint = nodes[1][0] * this.config.lattice.numLatitudes + nodes[1][1];\n firstAcceleration = nodes[1][4];\n }\n\n if (nodes.length >= 3) {\n secondLatticePoint = nodes[2][0] * this.config.lattice.numLatitudes + nodes[2][1];\n secondAcceleration = nodes[2][4];\n }\n\n return [points, fromVehicleSegment, fromVehicleParams, firstLatticePoint, firstAcceleration, secondLatticePoint, secondAcceleration];\n }\n}\n\nfunction vehicleTransform({ pos, rot }) {\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -pos.x,\n 0, 1, -pos.y,\n 0, 0, 1\n );\n\n const cosRot = Math.cos(rot);\n const sinRot = Math.sin(rot);\n\n const rotate = new THREE.Matrix3();\n rotate.set(\n cosRot, sinRot, 0,\n -sinRot, cosRot, 0,\n 0, 0, 1\n );\n\n return rotate.multiply(translate);\n}\n\nfunction obstacleTransform(vehicleXform, xyCenterPoint, width, height) {\n const translate = new THREE.Matrix3();\n translate.set(\n 1, 0, -xyCenterPoint.x,\n 0, 1, -xyCenterPoint.y,\n 0, 0, 1\n );\n\n const scale = new THREE.Matrix3();\n scale.set(\n 2 / width, 0, 0,\n 0, 2 / height, 0,\n 0, 0, 1\n );\n\n return scale.multiply(translate).multiply(vehicleXform);\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/path-planning/ExternalPlanner.js\n\nclass ExternalPathPlanner {\n _PLANNING_SERVER_URL = 'http://127.0.0.1:9999/'\n\n plan(vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles) {\n const state = {\n vehiclePose: vehiclePose,\n vehicleStation: vehicleStation,\n lanePath: lanePath,\n startTime: startTime,\n staticObstacles: staticObstacles,\n dynamicObstacles: dynamicObstacles,\n };\n\n var jsonToSend = JSON.stringify(state);\n const response = this._send_request(jsonToSend, 'plan');\n const path = JSON.parse(response)['states'];\n\n return {\n planner_state: \"ok\",\n path: path,\n fromVehicleSegment: [],\n fromVehicleParams: { type:'null' },\n latticeStartStation: null,\n dynamicObstacleGrid: null\n };\n }\n\n reset() {\n //this.notify_scenario_status({status: \"restart\"});\n }\n\n notify_scenario_status(status) {\n var jsonToSend = JSON.stringify(status);\n this._send_request(jsonToSend, 'notify_case_status');\n }\n\n _send_request(jsonToSend, request_name) {\n var url = this._PLANNING_SERVER_URL + request_name;\n\n var xhr = new XMLHttpRequest();\n xhr.timeout = 5000;\n xhr.open('POST', url, false); // the 'false' makes the request synchronous\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.send(jsonToSend);\n\n if (xhr.status === 200) {\n return xhr.responseText;\n } else {\n console.error('There was an error with the request');\n }\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/LanePath.js\nconst halfLaneWidth = 3.7;\n\nconst centerlineGeometry = new THREE.Geometry();\nconst leftBoundaryGeometry = new THREE.Geometry();\nconst rightBoundaryGeometry = new THREE.Geometry();\n\nclass LanePath {\n static hydrate(obj) {\n Object.setPrototypeOf(obj, LanePath.prototype);\n }\n\n constructor() {\n this.anchors = [];\n this.centerlines = [];\n this.sampleLengths = [];\n this.arcLengths = [];\n this.leftBoundaries = [];\n this.rightBoundaries = [];\n }\n\n get centerline() {\n return [].concat(...this.centerlines);\n }\n\n get leftBoundary() {\n return [].concat(...this.leftBoundaries);\n }\n\n get rightBoundary() {\n return [].concat(...this.rightBoundaries);\n }\n\n get arcLength() {\n return this.arcLengths.reduce((sum, l) => sum + l, 0);\n }\n\n sampleStations(startStation, num, interval) {\n const samples = [];\n let anchorIndex = 0;\n let sampleIndex = 0;\n let totalLength = 0;\n let nextStation = startStation;\n\n while (totalLength + this.arcLengths[anchorIndex] < nextStation) {\n totalLength += this.arcLengths[anchorIndex];\n\n if (++anchorIndex >= this.arcLengths.length)\n return samples;\n }\n\n for (let i = 0; i < num; i++) {\n let length = this.sampleLengths[anchorIndex][sampleIndex];\n while (totalLength + length < nextStation) {\n totalLength += length;\n\n if (++sampleIndex >= this.sampleLengths[anchorIndex].length) {\n sampleIndex = 0;\n\n if (++anchorIndex >= this.sampleLengths.length)\n return samples;\n }\n\n length = this.sampleLengths[anchorIndex][sampleIndex];\n }\n\n const [p0, p1, p2, p3] = this.anchorsForSplineIndex(anchorIndex);\n const weight = (sampleIndex + (nextStation - totalLength) / length) / this.sampleLengths[anchorIndex].length;\n const pos = catmullRomVec(weight, p0, p1, p2, p3);\n const tangent = tangentAt(weight, p0, p1, p2, p3);\n const rot = Math.atan2(tangent.y, tangent.x);\n const curv = curvatureAt(weight, p0, p1, p2, p3);\n\n samples.push({ pos, rot, curv });\n nextStation += interval;\n }\n\n return samples;\n }\n\n stationLatitudeFromPosition(position, aroundAnchorIndex = null) {\n const [anchorIndex, sampleIndex, sampleStation, prevSampleStation] = this._findClosestSample(position, aroundAnchorIndex);\n\n if (anchorIndex === undefined) return [0, 0, 0];\n\n let prevPoint;\n let nextPoint;\n let prevStation;\n let nextStation;\n\n if (anchorIndex == 0 && sampleIndex == 0) {\n prevPoint = this.centerlines[anchorIndex][sampleIndex];\n nextPoint = this.centerlines[anchorIndex][sampleIndex + 1];\n prevStation = 0;\n nextStation = this.sampleLengths[anchorIndex][sampleIndex];\n } else if (anchorIndex == this.centerlines.length - 1 && sampleIndex == this.centerlines[anchorIndex].length - 1) {\n prevPoint = this.centerlines[anchorIndex][sampleIndex - 1];\n nextPoint = this.centerlines[anchorIndex][sampleIndex];\n prevStation = prevSampleStation;\n nextStation = sampleStation;\n } else {\n prevPoint = sampleIndex == 0 ? this.centerlines[anchorIndex - 1][this.centerlines[anchorIndex - 1].length - 1] : this.centerlines[anchorIndex][sampleIndex - 1];\n nextPoint = sampleIndex == this.centerlines[anchorIndex].length - 1 ? this.centerlines[anchorIndex + 1][0] : this.centerlines[anchorIndex][sampleIndex + 1];\n\n const possibleNext = this.centerlines[anchorIndex][sampleIndex];\n const possibleProgress = position.clone().sub(prevPoint).dot(possibleNext.clone().sub(prevPoint)) / prevPoint.distanceToSquared(possibleNext);\n\n if (possibleProgress < 1) {\n nextPoint = possibleNext;\n prevStation = prevSampleStation;\n nextStation = sampleStation;\n } else {\n prevPoint = possibleNext;\n prevStation = sampleStation;\n nextStation = sampleStation + this.sampleLengths[anchorIndex][sampleIndex];\n }\n }\n\n const progress = Math.clamp(position.clone().sub(prevPoint).dot(nextPoint.clone().sub(prevPoint)) / prevPoint.distanceToSquared(nextPoint), 0, 1);\n const projectedPosition = nextPoint.clone().sub(prevPoint).multiplyScalar(progress).add(prevPoint);\n\n const station = prevStation + (nextStation - prevStation) * progress;\n const latitude = Math.sign((nextPoint.x - prevPoint.x) * (position.y - prevPoint.y) - (nextPoint.y - prevPoint.y) * (position.x - prevPoint.x)) * position.distanceTo(projectedPosition);\n\n return [station, latitude, anchorIndex];\n }\n\n _findClosestSample(position, aroundAnchorIndex = null) {\n let closest = Number.POSITIVE_INFINITY;\n let bestAnchorIndex;\n let bestSampleIndex;\n let bestStation;\n let bestPrevStation;\n\n let currStation = 0;\n let prevStation = 0;\n\n let startAnchorIndex = 0;\n let endAnchorIndex = this.centerlines.length - 1;\n\n if (aroundAnchorIndex !== null) {\n startAnchorIndex = Math.max(0, aroundAnchorIndex - 2);\n endAnchorIndex = Math.min(this.centerlines.length - 1, aroundAnchorIndex + 2);\n }\n\n if (startAnchorIndex > 0) {\n for (let anchorIndex = 0; anchorIndex < startAnchorIndex; anchorIndex++) {\n currStation += this.arcLengths[anchorIndex];\n }\n\n prevStation = currStation - this.sampleLengths[startAnchorIndex - 1][this.sampleLengths[startAnchorIndex - 1].length - 1];\n }\n\n for (let anchorIndex = startAnchorIndex; anchorIndex <= endAnchorIndex; anchorIndex++) {\n const centerline = this.centerlines[anchorIndex];\n for (let sampleIndex = 0; sampleIndex < centerline.length; sampleIndex++) {\n const distSq = position.distanceToSquared(centerline[sampleIndex]);\n if (distSq < closest) {\n closest = distSq;\n bestAnchorIndex = anchorIndex;\n bestSampleIndex = sampleIndex;\n bestStation = currStation;\n bestPrevStation = prevStation;\n }\n\n prevStation = currStation;\n currStation += this.sampleLengths[anchorIndex][sampleIndex];\n }\n }\n\n return [bestAnchorIndex, bestSampleIndex, bestStation, bestPrevStation];\n }\n\n addAnchor(position, resample = true) {\n const index = this.anchors.push(position) - 1;\n\n if (resample) {\n for (let i = index - 2; i < index; i++)\n this.resample(i);\n }\n }\n\n updateAnchor(index, position) {\n this.anchors[index] = position;\n\n for (let i = index - 2; i <= index + 1; i++)\n this.resample(i);\n }\n\n removeAnchor(index) {\n if (index < 0 || index >= this.anchors.length) return;\n\n this.anchors.splice(index, 1);\n\n const segmentIndex = index < this.anchors.length ? index : index - 1;\n this.centerlines.splice(segmentIndex, 1);\n this.sampleLengths.splice(segmentIndex, 1);\n this.leftBoundaries.splice(segmentIndex, 1);\n this.rightBoundaries.splice(segmentIndex, 1);\n this.arcLengths.splice(segmentIndex, 1);\n\n for (let i = segmentIndex - 2; i <= segmentIndex; i++)\n this.resample(i);\n }\n\n resample(index) {\n if (index < 0 || index > this.anchors.length - 2) return;\n\n const [p0, p1, p2, p3] = this.anchorsForSplineIndex(index);\n const points = [];\n const lengths = [];\n const leftBoundary = [];\n const rightBoundary = [];\n let prevPoint = null;\n\n const pointsPerSegment = Math.max(10, Math.ceil(p1.distanceTo(p2) / 1));\n const numPoints = index == this.anchors.length - 2 ? pointsPerSegment + 1 : pointsPerSegment;\n\n for (let i = 0; i < numPoints; i++) {\n const t = i / pointsPerSegment;\n const point = catmullRomVec(t, p0, p1, p2, p3);\n points.push(point);\n\n if (prevPoint != null)\n lengths.push(prevPoint.distanceTo(point));\n prevPoint = point;\n\n const tangent = tangentAt(t, p0, p1, p2, p3);\n const normal = new THREE.Vector2(-tangent.y, tangent.x);\n\n leftBoundary.push(normal.clone().multiplyScalar(-halfLaneWidth).add(point));\n rightBoundary.push(normal.clone().multiplyScalar(halfLaneWidth).add(point));\n }\n\n lengths.push(prevPoint.distanceTo(p2));\n\n this.centerlines[index] = points;\n this.sampleLengths[index] = lengths;\n this.leftBoundaries[index] = leftBoundary;\n this.rightBoundaries[index] = rightBoundary;\n this.arcLengths[index] = lengths.reduce((sum, l) => sum + l, 0);\n }\n\n resampleAll() {\n for (let i = 0; i < this.anchors.length; i++)\n this.resample(i);\n }\n\n anchorsForSplineIndex(index) {\n let p;\n if (index == 0)\n p = [this.anchors[0]].concat(this.anchors.slice(0, 3));\n else\n p = this.anchors.slice(index - 1, index + 3);\n\n if (p[3] === undefined)\n p[3] = p[2];\n\n return p;\n }\n}\n\nfunction catmullRom(t, p0, p1, p2, p3) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction catmullRomVec(t, p0, p1, p2, p3) {\n return new THREE.Vector2(catmullRom(t, p0.x, p1.x, p2.x, p3.x), catmullRom(t, p0.y, p1.y, p2.y, p3.y));\n}\n\nfunction tangentAt(t, p0, p1, p2, p3) {\n const delta = 0.0001;\n let t1 = t - delta;\n let t2 = t + delta;\n\n if (t1 < 0) t1 = 0;\n if (t2 > 1) t2 = 1;\n\n const prev = catmullRomVec(t1, p0, p1, p2, p3);\n const next = catmullRomVec(t2, p0, p1, p2, p3);\n\n return next.sub(prev).normalize();\n}\n\nfunction curvatureAt(t2, p0, p1, p2, p3) {\n const delta = 0.0001;\n\n // If we're estimating curvature at one of the endpoints of the spline,\n // slightly shift it inwards to avoid infinite curvature.\n if (t2 == 0) t2 = delta;\n if (t2 == 1) t2 = 1 - delta;\n\n let t1 = t2 - delta;\n let t3 = t2 + delta;\n\n if (t1 < 0) t1 = 0;\n if (t3 > 1) t3 = 1;\n\n const pt1 = catmullRomVec(t1, p0, p1, p2, p3);\n const pt2 = catmullRomVec(t2, p0, p1, p2, p3);\n const pt3 = catmullRomVec(t3, p0, p1, p2, p3);\n\n return (Math.atan2(pt3.y - pt2.y, pt3.x - pt2.x) - Math.atan2(pt2.y - pt1.y, pt2.x - pt1.x)) / pt2.distanceTo(pt1);\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/StaticObstacle.js\nclass StaticObstacle {\n static hydrate(obj) {\n Object.setPrototypeOf(obj, StaticObstacle.prototype);\n Object.setPrototypeOf(obj.pos, THREE.Vector2.prototype);\n }\n\n static fromJSON(json) {\n return new StaticObstacle(new THREE.Vector2(json.p[0], json.p[1]), json.r, json.w, json.h);\n }\n\n constructor(pos, rot, width, height) {\n this.pos = pos;\n this.rot = rot;\n this.width = width;\n this.height = height;\n\n this.updateVertices();\n }\n\n toJSON() {\n const trunc = n => +n.toFixed(5);\n\n return {\n p: [trunc(this.pos.x), trunc(this.pos.y)],\n r: trunc(this.rot),\n w: trunc(this.width),\n h: trunc(this.height)\n };\n }\n\n updateVertices() {\n this.vertices = [];\n\n const cosRot = Math.cos(this.rot);\n const sinRot = Math.sin(this.rot);\n const halfWidth = this.width / 2;\n const halfHeight = this.height / 2;\n\n const hWcR = halfWidth * cosRot;\n const hWsR = halfWidth * sinRot;\n const hHcR = halfHeight * cosRot;\n const hHsR = halfHeight * sinRot;\n\n const v1 = [-hWcR - hHsR + this.pos.x, -hWsR + hHcR + this.pos.y];\n const v2 = [-hWcR + hHsR + this.pos.x, -hWsR - hHcR + this.pos.y];\n const v3 = [hWcR + hHsR + this.pos.x, hWsR - hHcR + this.pos.y];\n const v4 = [hWcR - hHsR + this.pos.x, hWsR + hHcR + this.pos.y];\n\n this.vertices = [\n v1[0], v1[1],\n v2[0], v2[1],\n v3[0], v3[1],\n v3[0], v3[1],\n v4[0], v4[1],\n v1[0], v1[1]\n ];\n }\n}\n\n;// CONCATENATED MODULE: ./js/autonomy/DynamicObstacle.js\n// Half width and half height\nconst VEHICLE_SIZE = { w: 2.5, h: 1 };\nconst CYCLIST_SIZE = { w: 1.2, h: 0.6 };\nconst PEDESTRIAN_SIZE = { w: 0.6, h: 0.6 };\n\nclass DynamicObstacle {\n static hydrate(obj) {\n Object.setPrototypeOf(obj, DynamicObstacle.prototype);\n Object.setPrototypeOf(obj.startPos, THREE.Vector2.prototype);\n Object.setPrototypeOf(obj.velocity, THREE.Vector2.prototype);\n }\n\n constructor(type, startPos, velocity, parallel) {\n this.type = type;\n this.startPos = startPos;\n this.velocity = velocity;\n this.parallel = parallel;\n\n switch (type) {\n case 'cyclist':\n this.size = Object.assign({}, CYCLIST_SIZE);\n break;\n\n case 'pedestrian':\n this.size = Object.assign({}, PEDESTRIAN_SIZE);\n break;\n\n default:\n this.size = Object.assign({}, VEHICLE_SIZE);\n }\n\n if (!parallel)\n [this.size.w, this.size.h] = [this.size.h, this.size.w];\n }\n\n positionAtTime(time) {\n return this.velocity.clone().multiplyScalar(time).add(this.startPos);\n }\n\n positionsInTimeRange(startTime, endTime, numFrames) {\n const dt = (endTime - startTime) / numFrames;\n const positions = [];\n let time = startTime;\n\n for (let i = 0; i <= numFrames; i++) {\n positions.push(this.positionAtTime(time));\n time += dt;\n }\n\n return positions;\n }\n\n verticesInTimeRange(startTime, endTime, config) {\n const positions = this.positionsInTimeRange(startTime, endTime, config.numDynamicSubframes);\n const vertices = [];\n\n // Hazard dilation (drawn behind, z = 0.75)\n const hazardHalfWidth = this.size.w + config.dynamicHazardDilationS + config.collisionDilationS;\n const hazardHalfHeight = this.size.h + config.dynamicHazardDilationL + config.collisionDilationL;\n\n positions.forEach(p => {\n const v1 = [-hazardHalfWidth + p.x, hazardHalfHeight + p.y];\n const v2 = [hazardHalfWidth + p.x, hazardHalfHeight + p.y];\n const v3 = [hazardHalfWidth + p.x, -hazardHalfHeight + p.y];\n const v4 = [-hazardHalfWidth + p.x, -hazardHalfHeight + p.y];\n\n vertices.push(\n v1[0], v1[1], 0.75,\n v2[0], v2[1], 0.75,\n v3[0], v3[1], 0.75,\n v3[0], v3[1], 0.75,\n v4[0], v4[1], 0.75,\n v1[0], v1[1], 0.75\n );\n });\n\n // Collision dilation (drawn in front, z = 0.25)\n const collisionHalfWidth = this.size.w + config.collisionDilationS;\n const collisionHalfHeight = this.size.h + config.collisionDilationL;\n\n positions.forEach(p => {\n const v1 = [-collisionHalfWidth + p.x, collisionHalfHeight + p.y];\n const v2 = [collisionHalfWidth + p.x, collisionHalfHeight + p.y];\n const v3 = [collisionHalfWidth + p.x, -collisionHalfHeight + p.y];\n const v4 = [-collisionHalfWidth + p.x, -collisionHalfHeight + p.y];\n\n vertices.push(\n v1[0], v1[1], 0.25,\n v2[0], v2[1], 0.25,\n v3[0], v3[1], 0.25,\n v3[0], v3[1], 0.25,\n v4[0], v4[1], 0.25,\n v1[0], v1[1], 0.25\n );\n });\n\n return vertices;\n }\n}\n\n;// CONCATENATED MODULE: ./workers/PathPlannerWorker.js\n\n\n\n\n\n\n\n\nfunction init() {\n let pathPlanner;\n try {\n // pathPlanner = new PathPlanner();\n pathPlanner = new ExternalPathPlanner()\n } catch (e) {\n console.log('Error initializing path planner:');\n console.log(e);\n self.postMessage({ error: \"initialization_failed\" });\n return;\n }\n\n self.onmessage = function(event) {\n if (event.data.type === 'notify_case_status') {\n pathPlanner.notify_scenario_status(event.data.status);\n return;\n }\n if (event.data.type != 'plan') {\n console.log(\"unkonwn posted message type: \" + event);\n return;\n }\n\n const { config, vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles, reset } = event.data;\n\n LanePath.hydrate(lanePath);\n staticObstacles.forEach(o => StaticObstacle.hydrate(o));\n dynamicObstacles.forEach(o => DynamicObstacle.hydrate(o));\n\n if (reset) pathPlanner.reset();\n\n pathPlanner.config = config;\n\n let should_retry = true;\n while (should_retry) {\n let planner_result;\n try {\n planner_result = pathPlanner.plan(vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles);\n should_retry = planner_result.planner_state == \"unavailable\";\n } catch (error) {\n if (error.name != \"TimeoutError\" && error.name != \"NetworkError\") {\n console.log('Planning request error: ');\n console.log(error);\n self.postMessage({ error: error.toString() });\n should_retry = false;\n break;\n }\n }\n\n if (should_retry) {\n self.postMessage({ error: \"planner_unavailable\" });\n } else {\n const {\n path,\n fromVehicleSegment,\n fromVehicleParams,\n latticeStartStation,\n dynamicObstacleGrid\n } = planner_result;\n\n self.postMessage({\n path,\n fromVehicleSegment,\n fromVehicleParams,\n vehiclePose,\n vehicleStation,\n latticeStartStation,\n config,\n dynamicObstacleGrid });\n }\n }\n };\n}\n\nif (typeof(window) === 'undefined') {\n init();\n} else {\n window.dash_initPathPlannerWorker = init;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBRUg7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7O0FDNVFEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQix5QkFBeUI7QUFDM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxrQkFBa0IsMkJBQTJCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCLHVCQUF1QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7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Q0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7OztBQ2xHcUQ7QUFDSjtBQUNxQjtBQUNZO0FBQ2hDO0FBQ1k7QUFDRTs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbUJBQW1CO0FBQ3pDLElBQUk7QUFDSjtBQUNBO0FBQ0EsdUJBQXVCLGdDQUFnQztBQUN2RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLHFHQUFxRzs7QUFFakgsSUFBSSxRQUFRO0FBQ1osaUNBQWlDLGNBQWM7QUFDL0Msa0NBQWtDLGVBQWU7O0FBRWpEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIseUJBQXlCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCLDhCQUE4QjtBQUN6RCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2Rhc2gvLi9qcy9waHlzaWNzL0Nhci5qcz8yYzBlIiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL0N1YmljUGF0aC5qcz85NDBjIiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL3h5T2JzdGFjbGVHcmlkLmpzP2Q3OGMiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMvc2xPYnN0YWNsZUdyaWQuanM/ZTU0YiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvcGF0aC1wbGFubmluZy9ncGdwdS1wcm9ncmFtcy9zbE9ic3RhY2xlR3JpZERpbGF0aW9uLmpzPzE3NDkiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMvc2xEeW5hbWljT2JzdGFjbGVHcmlkLmpzPzZjMGUiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMveHlzbE1hcC5qcz81YmE5Iiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL29wdGltaXplQ3ViaWNQYXRocy5qcz8xNTNkIiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL29wdGltaXplUXVpbnRpY1BhdGhzLmpzP2MwNWQiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMvZ3JhcGhTZWFyY2hTaGFyZWQuanM/MjA1MiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvcGF0aC1wbGFubmluZy9ncGdwdS1wcm9ncmFtcy9wYXRoRnJvbVZlaGljbGVDb3N0cy5qcz9lNTBjIiwid2VicGFjazovL2Rhc2gvLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL2dwZ3B1LXByb2dyYW1zL2dyYXBoU2VhcmNoLmpzPzRjODgiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvZ3BncHUtcHJvZ3JhbXMveHlPYnN0YWNsZUNvc3RHcmlkLmpzP2M5NzQiLCJ3ZWJwYWNrOi8vZGFzaC8uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvUGF0aFBsYW5uZXIuanM/ZDMyNiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvcGF0aC1wbGFubmluZy9FeHRlcm5hbFBsYW5uZXIuanM/YzBiOSIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvTGFuZVBhdGguanM/MGZhNCIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvU3RhdGljT2JzdGFjbGUuanM/ODkwNiIsIndlYnBhY2s6Ly9kYXNoLy4vanMvYXV0b25vbXkvRHluYW1pY09ic3RhY2xlLmpzPzJlNzAiLCJ3ZWJwYWNrOi8vZGFzaC8uL3dvcmtlcnMvUGF0aFBsYW5uZXJXb3JrZXIuanM/NGU3NiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBDYXIge1xuICBjb25zdHJ1Y3Rvcih4ID0gMCwgeSA9IDAsIHJvdGF0aW9uID0gMCkge1xuICAgIHRoaXMuc2V0UG9zZSh4LCB5LCByb3RhdGlvbik7XG4gIH1cblxuICBzdGF0aWMgZ2V0RnJvbnRBeGxlUG9zaXRpb24ocG9zLCByb3QpIHtcbiAgICByZXR1cm4gVEhSRUUuVmVjdG9yMi5mcm9tQW5nbGUocm90KS5tdWx0aXBseVNjYWxhcihDYXIuV0hFRUxfQkFTRSkuYWRkKHBvcyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmFrZUF4bGVQb3NpdGlvbihwb3MsIHJvdCkge1xuICAgIHJldHVybiBDYXIuZnJvbnRUb1JlYXJBeGxlUG9zaXRpb24ocG9zLCByb3QpO1xuICB9XG5cbiAgc3RhdGljIGNlbnRlclRvUmVhckF4bGVQb3NpdGlvbihwb3MsIHJvdCkge1xuICAgIHJldHVybiBUSFJFRS5WZWN0b3IyLmZyb21BbmdsZShyb3QpLm11bHRpcGx5U2NhbGFyKENhci5SRUFSX0FYTEVfUE9TKS5hZGQocG9zKTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9udFRvUmVhckF4bGVQb3NpdGlvbihwb3MsIHJvdCkge1xuICAgIHJldHVybiBUSFJFRS5WZWN0b3IyLmZyb21BbmdsZShyb3QpLm11bHRpcGx5U2NhbGFyKC1DYXIuV0hFRUxfQkFTRSkuYWRkKHBvcyk7XG4gIH1cblxuICBnZXQgcG9zZSgpIHtcbiAgICByZXR1cm4geyBwb3M6IHRoaXMucmVhckF4bGVQb3NpdGlvbi5jbG9uZSgpLCByb3Q6IHRoaXMucm90YXRpb24sIHZlbG9jaXR5OiB0aGlzLnZlbG9jaXR5LCBjdXJ2OiB0aGlzLmN1cnZhdHVyZSwgZEN1cnY6IHRoaXMuZEN1cnYsIGRkQ3VydjogdGhpcy5kZEN1cnYgfTtcbiAgfVxuXG4gIGdldCBjdXJ2YXR1cmUoKSB7XG4gICAgcmV0dXJuIE1hdGgudGFuKHRoaXMud2hlZWxBbmdsZSkgLyBDYXIuV0hFRUxfQkFTRTtcbiAgfVxuXG4gIGdldCByZWFyQXhsZVBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHsgeCwgeSB9ID0gdGhpcy5wb3NpdGlvbjtcbiAgICBjb25zdCByb3QgPSB0aGlzLnJvdGF0aW9uO1xuICAgIHJldHVybiBuZXcgVEhSRUUuVmVjdG9yMih4ICsgTWF0aC5jb3Mocm90KSAqIENhci5SRUFSX0FYTEVfUE9TLCB5ICsgTWF0aC5zaW4ocm90KSAqIENhci5SRUFSX0FYTEVfUE9TKTtcbiAgfVxuXG4gIGdldCBmcm9udEF4bGVQb3NpdGlvbigpIHtcbiAgICBjb25zdCB7IHgsIHkgfSA9IHRoaXMucG9zaXRpb247XG4gICAgY29uc3Qgcm90ID0gdGhpcy5yb3RhdGlvbjtcbiAgICByZXR1cm4gbmV3IFRIUkVFLlZlY3RvcjIoeCArIE1hdGguY29zKHJvdCkgKiBDYXIuRlJPTlRfQVhMRV9QT1MsIHkgKyBNYXRoLnNpbihyb3QpICogQ2FyLkZST05UX0FYTEVfUE9TKTtcbiAgfVxuXG4gIHNldFBvc2UoeCwgeSwgcm90YXRpb24pIHtcbiAgICAvLyBUcmFuc2xhdGUgc28gdGhhdCB4IGFuZCB5IGJlY29tZSB0aGUgY2VudGVyIG9mIHRoZSB2ZWhpY2xlIChpbnN0ZWFkIG9mIHRoZSBjZW50ZXIgb2YgdGhlIHJlYXIgYXhsZSlcbiAgICB4IC09IENhci5SRUFSX0FYTEVfUE9TICogTWF0aC5jb3Mocm90YXRpb24pO1xuICAgIHkgLT0gQ2FyLlJFQVJfQVhMRV9QT1MgKiBNYXRoLnNpbihyb3RhdGlvbik7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gbmV3IFRIUkVFLlZlY3RvcjIoeCwgeSk7XG4gICAgdGhpcy5yb3RhdGlvbiA9IE1hdGgud3JhcEFuZ2xlKHJvdGF0aW9uKTtcbiAgICB0aGlzLnZlbG9jaXR5ID0gMDtcbiAgICB0aGlzLmFjY2VsZXJhdGlvbiA9IDA7XG4gICAgdGhpcy53aGVlbEFuZ2xlID0gMDtcbiAgICB0aGlzLndoZWVsQW5ndWxhclZlbG9jaXR5ID0gMDtcbiAgICB0aGlzLmRDdXJ2ID0gMDsgLy8gZGVyaXZhdGl2ZSB3aXRoIHJlc3BlY3QgdG8gYXJjIGxlbmd0aFxuICAgIHRoaXMuZGRDdXJ2ID0gMDsgLy8gZGVyaXZhdGl2ZSB3aXRoIHJlc3BlY3QgdG8gYXJjIGxlbmd0aFxuICB9XG5cbiAgc3RlcChkdCkge1xuICAgIGNvbnN0IGN1cnZQcmV2ID0gdGhpcy5jdXJ2YXR1cmU7XG4gICAgY29uc3QgZEN1cnZQcmV2ID0gdGhpcy5kQ3VydjtcblxuICAgIGNvbnN0IGRyYWcgPSAoMC41ICogQ2FyLkRSQUdfQ09FRkYgKiBDYXIuRlJPTlRBTF9BUkVBICogQ2FyLkRFTlNJVFlfT0ZfQUlSICogTWF0aC5hYnModGhpcy52ZWxvY2l0eSkgKyBDYXIuUk9MTF9SRVNJU1QpICogLXRoaXMudmVsb2NpdHk7XG4gICAgdGhpcy52ZWxvY2l0eSArPSAodGhpcy5hY2NlbGVyYXRpb24gKyBkcmFnIC8gQ2FyLk1BU1MpICogZHQ7XG5cbiAgICBjb25zdCB2ZWxvY2l0eVNxID0gdGhpcy52ZWxvY2l0eSAqIHRoaXMudmVsb2NpdHk7XG4gICAgY29uc3QgbWF4V2hlZWxBbmdsZSA9IE1hdGguY2xhbXAoTWF0aC5hdGFuKENhci5NQVhfTEFURVJBTF9BQ0NFTCAqIENhci5XSEVFTF9CQVNFIC8gdmVsb2NpdHlTcSksIDAuMDcsIENhci5NQVhfV0hFRUxfQU5HTEUpO1xuICAgIHRoaXMud2hlZWxBbmdsZSA9IE1hdGguY2xhbXAoTWF0aC53cmFwQW5nbGUodGhpcy53aGVlbEFuZ2xlICsgdGhpcy53aGVlbEFuZ3VsYXJWZWxvY2l0eSAqIGR0KSwgLW1heFdoZWVsQW5nbGUsIG1heFdoZWVsQW5nbGUpO1xuXG4gICAgY29uc3QgYW5ndWxhclZlbG9jaXR5ID0gdGhpcy52ZWxvY2l0eSAqIHRoaXMuY3VydmF0dXJlO1xuICAgIHRoaXMucm90YXRpb24gPSBNYXRoLndyYXBBbmdsZSh0aGlzLnJvdGF0aW9uICsgYW5ndWxhclZlbG9jaXR5ICogZHQpO1xuXG4gICAgY29uc3QgZGlzdCA9IHRoaXMudmVsb2NpdHkgKiBkdDtcbiAgICB0aGlzLnBvc2l0aW9uID0gVEhSRUUuVmVjdG9yMi5mcm9tQW5nbGUodGhpcy5yb3RhdGlvbikubXVsdGlwbHlTY2FsYXIoZGlzdCkuYWRkKHRoaXMucG9zaXRpb24pO1xuXG4gICAgdGhpcy5kQ3VydiA9IGRpc3QgPiAwLjEgPyAodGhpcy5jdXJ2YXR1cmUgLSBjdXJ2UHJldikgLyBkaXN0IDogMDtcbiAgICB0aGlzLmRkQ3VydiA9IGRpc3QgPiAwLjEgPyAodGhpcy5kQ3VydiAtIGRDdXJ2UHJldikgLyBkaXN0IDogMDtcbiAgfVxuXG4gIHVwZGF0ZShjb250cm9scywgZHQpIHtcbiAgICBjb25zdCBnYXMgPSBNYXRoLmNsYW1wKGNvbnRyb2xzLmdhcywgLTEsICsxKTtcbiAgICBjb25zdCBicmFrZSA9IE1hdGguY2xhbXAoY29udHJvbHMuYnJha2UsIDAsIDEpO1xuICAgIGNvbnN0IHN0ZWVyID0gTWF0aC5jbGFtcChjb250cm9scy5zdGVlciwgLTEsICsxKTtcblxuICAgIGlmIChicmFrZSA+IDApIHtcbiAgICAgIHRoaXMuYWNjZWxlcmF0aW9uID0gLU1hdGguc2lnbih0aGlzLnZlbG9jaXR5KSAqIENhci5NQVhfQlJBS0VfREVDRUwgKiBicmFrZTtcbiAgICAgIGNvbnN0IG5ld1ZlbG9jaXR5ID0gdGhpcy52ZWxvY2l0eSArIHRoaXMuYWNjZWxlcmF0aW9uICogZHQ7XG5cbiAgICAgIC8vIElmIGFwcGx5aW5nIHRoZSBicmFraW5nIGRlY2VsZXJhdGlvbiBhdCB0aGUgbmV4dCBzdGVwIHdvdWxkIGNhdXNlIHRoZSB2ZWxvY2l0eVxuICAgICAgLy8gdG8gY2hhbmdlIGRpcmVjdGlvbnMsIHRoZW4ganVzdCBzZXQgdGhlIGNhciBhcyBzdG9wcGVkLlxuICAgICAgaWYgKE1hdGguc2lnbihuZXdWZWxvY2l0eSkgIT0gTWF0aC5zaWduKHRoaXMudmVsb2NpdHkpKSB7XG4gICAgICAgIHRoaXMudmVsb2NpdHkgPSAwO1xuICAgICAgICB0aGlzLmFjY2VsZXJhdGlvbiA9IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWNjZWxlcmF0aW9uID0gQ2FyLk1BWF9HQVNfQUNDRUwgKiBnYXM7XG4gICAgfVxuXG4gICAgaWYgKHN0ZWVyICE9IDApIHtcbiAgICAgIHRoaXMud2hlZWxBbmd1bGFyVmVsb2NpdHkgPSBzdGVlciAqIENhci5NQVhfU1RFRVJfU1BFRUQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2hlZWxBbmd1bGFyVmVsb2NpdHkgPSBNYXRoLmNsYW1wKC10aGlzLndoZWVsQW5nbGUgLyBDYXIuTUFYX1dIRUVMX0FOR0xFICogdGhpcy52ZWxvY2l0eSAqIHRoaXMudmVsb2NpdHkgKiBkdCwgLUNhci5NQVhfU1RFRVJfU1BFRUQsIENhci5NQVhfU1RFRVJfU1BFRUQpO1xuICAgIH1cbiAgfVxufVxuXG5DYXIuSEFMRl9DQVJfTEVOR1RIID0gMi41OyAvLyBtZXRlcnNcbkNhci5IQUxGX0NBUl9XSURUSCA9IDE7IC8vIG1ldGVyc1xuQ2FyLkhBTEZfV0hFRUxfTEVOR1RIID0gMC4zODsgLy8gbWV0ZXJzXG5DYXIuSEFMRl9XSEVFTF9XSURUSCA9IDAuMTI7IC8vIG1ldGVyc1xuQ2FyLk1BWF9XSEVFTF9BTkdMRSA9IDMyIC8gMTgwICogTWF0aC5QSTsgLy8gcmFkaWFuc1xuQ2FyLk1BU1MgPSAxNjAwOyAvLyBrZ1xuQ2FyLkRSQUdfQ09FRkYgPSAwLjc7XG5DYXIuREVOU0lUWV9PRl9BSVIgPSAxLjg1ODA2MDg7IC8vIChrZy9tXjMpXG5DYXIuRlJPTlRBTF9BUkVBID0gMS44NTsgLy8gbV4yXG5DYXIuUk9MTF9SRVNJU1QgPSAwO1xuQ2FyLk1BWF9TVEVFUl9TUEVFRCA9IDAuODsvLzEuMjsgLy8gUmFkaWFucyBwZXIgc2Vjb25kXG5DYXIuTUFYX0dBU19BQ0NFTCA9IDMuMDsgLy8gbSAvIHNeMlxuQ2FyLk1BWF9CUkFLRV9ERUNFTCA9IDMuMDsgLy8gbSAvIHNeMlxuQ2FyLldIRUVMX0xBVEVSQUxfUE9TID0gMC44NDM7IC8vIG1ldGVyc1xuQ2FyLkZST05UX0FYTEVfUE9TID0gMS42OyAvLyBtZXRlcnNcbkNhci5SRUFSX0FYTEVfUE9TID0gLTEuNDM7IC8vIG1ldGVyc1xuQ2FyLldIRUVMX0JBU0UgPSBDYXIuRlJPTlRfQVhMRV9QT1MgLSBDYXIuUkVBUl9BWExFX1BPUzsgLy8gbWV0ZXJzXG5DYXIuTUFYX0xBVEVSQUxfQUNDRUwgPSA1LjgxOyAvLyBtIC8gc14yXG4iLCJjb25zdCBTSU1QU09OU19JTlRFUlZBTFMgPSA4O1xuY29uc3QgTkVXVE9OX0lURVJBVElPTlMgPSAxNjtcbmNvbnN0IFJFTEFYQVRJT05fSVRFUkFUSU9OUyA9IDMyO1xuY29uc3QgQ09OVkVSR0VOQ0VfRVJST1IgPSAwLjAxO1xuXG5jb25zdCBqYWNvYmlhbiA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG5jb25zdCBpbnZKYWNvYmlhbiA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG5cbi8vIEFsdGVybmF0ZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb246IGh0dHBzOi8vZ2l0aHViLmNvbS9BcG9sbG9BdXRvL2Fwb2xsby9ibG9iL21hc3Rlci9tb2R1bGVzL3BsYW5uaW5nL21hdGgvc3BpcmFsX2N1cnZlL2N1YmljX3NwaXJhbF9jdXJ2ZS5jY1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3ViaWNQYXRoIHtcbiAgY29uc3RydWN0b3Ioc3RhcnQsIGVuZCwgcGFyYW1zID0gbnVsbCkge1xuICAgIHRoaXMuc3RhcnQgPSBPYmplY3QuYXNzaWduKHt9LCBzdGFydCk7XG4gICAgdGhpcy5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBlbmQpO1xuXG4gICAgaWYgKHN0YXJ0LnBvcykge1xuICAgICAgdGhpcy5zdGFydC54ID0gc3RhcnQucG9zLng7XG4gICAgICB0aGlzLnN0YXJ0LnkgPSBzdGFydC5wb3MueVxuICAgIH1cblxuICAgIGlmIChlbmQucG9zKSB7XG4gICAgICB0aGlzLmVuZC54ID0gZW5kLnBvcy54O1xuICAgICAgdGhpcy5lbmQueSA9IGVuZC5wb3MueVxuICAgIH1cblxuICAgIGNvbnN0IGRpZmZYID0gdGhpcy5lbmQueCAtIHRoaXMuc3RhcnQueDtcbiAgICBjb25zdCBkaWZmWSA9IHRoaXMuZW5kLnkgLSB0aGlzLnN0YXJ0Lnk7XG4gICAgY29uc3Qgc2luUm90ID0gTWF0aC5zaW4odGhpcy5zdGFydC5yb3QpO1xuICAgIGNvbnN0IGNvc1JvdCA9IE1hdGguY29zKHRoaXMuc3RhcnQucm90KTtcblxuICAgIHRoaXMuZ29hbCA9IHtcbiAgICAgIHg6IGNvc1JvdCAqIGRpZmZYICsgc2luUm90ICogZGlmZlksXG4gICAgICB5OiAtc2luUm90ICogZGlmZlggKyBjb3NSb3QgKiBkaWZmWSxcbiAgICAgIHJvdDogTWF0aC53cmFwQW5nbGUodGhpcy5lbmQucm90IC0gdGhpcy5zdGFydC5yb3QpLFxuICAgICAgY3VydjogdGhpcy5lbmQuY3VydlxuICAgIH07XG5cbiAgICBpZiAocGFyYW1zKVxuICAgICAgdGhpcy5wYXJhbXMgPSBPYmplY3QuYXNzaWduKHt9LCBwYXJhbXMsIHsgcDA6IHRoaXMuc3RhcnQuY3VydiwgcDM6IHRoaXMuZW5kLmN1cnYgfSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5ndWVzc0luaXRpYWxQYXJhbXMoKTtcblxuICAgIHRoaXMuY29udmVyZ2VkID0gZmFsc2U7XG4gIH1cblxuICBndWVzc0luaXRpYWxQYXJhbXMoKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxHb2FsID0gdGhpcy5nb2FsO1xuICAgIGNvbnN0IGRTdGFydEN1cnYgPSB0aGlzLnN0YXJ0LmN1cnYgLyBSRUxBWEFUSU9OX0lURVJBVElPTlM7XG4gICAgY29uc3QgZEdvYWxZID0gb3JpZ2luYWxHb2FsLnkgLyBSRUxBWEFUSU9OX0lURVJBVElPTlM7XG4gICAgY29uc3QgZEdvYWxSb3QgPSBvcmlnaW5hbEdvYWwucm90IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TO1xuICAgIGNvbnN0IGRHb2FsQ3VydiA9IG9yaWdpbmFsR29hbC5jdXJ2IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TO1xuXG4gICAgdGhpcy5nb2FsID0ge1xuICAgICAgeDogb3JpZ2luYWxHb2FsLngsXG4gICAgICB5OiAwLFxuICAgICAgcm90OiAwLFxuICAgICAgY3VydjogMFxuICAgIH07XG5cbiAgICB0aGlzLnBhcmFtcyA9IHtcbiAgICAgIHAwOiAwLFxuICAgICAgcDE6IDAsXG4gICAgICBwMjogMCxcbiAgICAgIHAzOiAwLFxuICAgICAgc0c6IG9yaWdpbmFsR29hbC54XG4gICAgfTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgUkVMQVhBVElPTl9JVEVSQVRJT05TOyBpKyspIHtcbiAgICAgIHRoaXMucGFyYW1zLnAwICs9IGRTdGFydEN1cnY7XG4gICAgICB0aGlzLnBhcmFtcy5wMyArPSBkR29hbEN1cnY7XG4gICAgICB0aGlzLmdvYWwueSArPSBkR29hbFk7XG4gICAgICB0aGlzLmdvYWwucm90ICs9IGRHb2FsUm90O1xuICAgICAgdGhpcy5nb2FsLmN1cnYgKz0gZEdvYWxDdXJ2O1xuXG4gICAgICB0aGlzLml0ZXJhdGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmdvYWwgPSBvcmlnaW5hbEdvYWw7XG4gIH1cblxuICBvcHRpbWl6ZSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE5FV1RPTl9JVEVSQVRJT05TOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLml0ZXJhdGUoKSkge1xuICAgICAgICB0aGlzLmNvbnZlcmdlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29udmVyZ2VkID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXRlcmF0ZSgpIHtcbiAgICBjb25zdCB7IHAwLCBwMSwgcDIsIHAzLCBzRyB9ID0gdGhpcy5wYXJhbXM7XG5cbiAgICBjb25zdCBkcyA9IHNHIC8gU0lNUFNPTlNfSU5URVJWQUxTO1xuICAgIGNvbnN0IHNHXzIgPSBzRyAqIHNHO1xuICAgIGNvbnN0IHNHXzMgPSBzR18yICogc0c7XG5cbiAgICBsZXQgZFhfcDEgPSAwO1xuICAgIGxldCBkWF9wMiA9IDA7XG4gICAgbGV0IGRYX3NHID0gMDtcbiAgICBsZXQgZFlfcDEgPSAwO1xuICAgIGxldCBkWV9wMiA9IDA7XG4gICAgbGV0IGRZX3NHID0gMDtcbiAgICBsZXQgZ3Vlc3NYID0gMDtcbiAgICBsZXQgZ3Vlc3NZID0gMDtcblxuICAgIGxldCB0aGV0YSwgY29zVGhldGEsIHNpblRoZXRhLCBkVF9wMSwgZFRfcDIsIGRUX3NHO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIHMgPSAwOyBpIDw9IFNJTVBTT05TX0lOVEVSVkFMUzsgaSsrLCBzICs9IGRzKSB7XG4gICAgICBjb25zdCBjb2VmZiA9IGkgPT0gMCB8fCBpID09IFNJTVBTT05TX0lOVEVSVkFMUyA/IDEgOiBpICUgMiA9PSAwID8gMiA6IDQ7XG5cbiAgICAgIGNvbnN0IGEgPSBwMDtcbiAgICAgIGNvbnN0IGIgPSAoLTUuNSAqIHAwICsgOSAqIHAxIC0gNC41ICogcDIgKyBwMykgLyBzRztcbiAgICAgIGNvbnN0IGMgPSAoOSAqIHAwIC0gMjIuNSAqIHAxICsgMTggKiBwMiAtIDQuNSAqIHAzKSAvIHNHXzI7XG4gICAgICBjb25zdCBkID0gKC00LjUgKiAocDAgLSAzICogcDEgKyAzICogcDIgLSBwMykpIC8gc0dfMztcblxuICAgICAgdGhldGEgPSAoKChkICogcyAvIDQgKyBjIC8gMykgKiBzICsgYiAvIDIpICogcyArIGEpICogcztcbiAgICAgIGNvc1RoZXRhID0gTWF0aC5jb3ModGhldGEpO1xuICAgICAgc2luVGhldGEgPSBNYXRoLnNpbih0aGV0YSk7XG5cbiAgICAgIGNvbnN0IHNfc0cgPSBzIC8gc0c7XG4gICAgICBkVF9wMSA9ICgoMy4zNzUgKiBzX3NHIC0gNy41KSAqIHNfc0cgKyA0LjUpICogc19zRyAqIHM7XG4gICAgICBkVF9wMiA9ICgoLTMuMzc1ICogc19zRyArIDYpICogc19zRyAtIDIuMjUpICogc19zRyAqIHM7XG4gICAgICBkVF9zRyA9ICgoMy4zNzUgKiAocDAgLSAzICogcDEgKyAzICogcDIgLSBwMykgKiBzX3NHIC0gMyAqICgyICogcDAgLSA1ICogcDEgKyA0ICogcDIgLSBwMykpICogc19zRyArIDAuMjUgKiAoMTEgKiBwMCAtIDE4ICogcDEgKyA5ICogcDIgLSAyICogcDMpKSAqIHNfc0cgKiBzX3NHO1xuXG4gICAgICBkWF9wMSAtPSBjb2VmZiAqIHNpblRoZXRhICogZFRfcDE7XG4gICAgICBkWF9wMiAtPSBjb2VmZiAqIHNpblRoZXRhICogZFRfcDI7XG4gICAgICBkWF9zRyAtPSBjb2VmZiAqIHNpblRoZXRhICogZFRfc0c7XG5cbiAgICAgIGRZX3AxICs9IGNvZWZmICogY29zVGhldGEgKiBkVF9wMTtcbiAgICAgIGRZX3AyICs9IGNvZWZmICogY29zVGhldGEgKiBkVF9wMjtcbiAgICAgIGRZX3NHICs9IGNvZWZmICogY29zVGhldGEgKiBkVF9zRztcblxuICAgICAgZ3Vlc3NYICs9IGNvZWZmICogY29zVGhldGE7XG4gICAgICBndWVzc1kgKz0gY29lZmYgKiBzaW5UaGV0YTtcbiAgICB9XG5cbiAgICAvLyBBZnRlciB0aGUgU2ltcHNvbidzIGludGVncmF0aW9uIGxvb3AsIGB0aGV0YWAsIGBjb3NUaGV0YWAsIGBzaW5UaGV0YWAsXG4gICAgLy8gYGRUX3AxYCwgYGRUX3AyYCwgYW5kIGBkVF9zR2AgaG9sZCB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzIGZvciBgc0dgLlxuXG4gICAgY29uc3QgaE92ZXIzID0gc0cgLyBTSU1QU09OU19JTlRFUlZBTFMgLyAzO1xuXG4gICAgY29uc3QgZGVsdGFYID0gdGhpcy5nb2FsLnggLSBndWVzc1ggKiBoT3ZlcjM7XG4gICAgY29uc3QgZGVsdGFZID0gdGhpcy5nb2FsLnkgLSBndWVzc1kgKiBoT3ZlcjM7XG4gICAgY29uc3QgZGVsdGFSb3QgPSBNYXRoLndyYXBBbmdsZSh0aGlzLmdvYWwucm90IC0gdGhldGEpO1xuXG4gICAgaWYgKE1hdGguYWJzKGRlbHRhWCkgKyBNYXRoLmFicyhkZWx0YVkpICsgTWF0aC5hYnMoZGVsdGFSb3QpIDwgQ09OVkVSR0VOQ0VfRVJST1IpXG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGphY29iaWFuLnNldChcbiAgICAgIGRYX3AxICogaE92ZXIzLCBkWF9wMiAqIGhPdmVyMywgY29zVGhldGEgKyBkWF9zRyAqIGhPdmVyMyxcbiAgICAgIGRZX3AxICogaE92ZXIzLCBkWV9wMiAqIGhPdmVyMywgc2luVGhldGEgKyBkWV9zRyAqIGhPdmVyMyxcbiAgICAgIGRUX3AxLCBkVF9wMiwgZFRfc0dcbiAgICApO1xuXG4gICAgY29uc3QgW20xMSwgbTIxLCBtMzEsIG0xMiwgbTIyLCBtMzIsIG0xMywgbTIzLCBtMzNdID0gaW52SmFjb2JpYW4uZ2V0SW52ZXJzZShqYWNvYmlhbikuZWxlbWVudHM7XG5cbiAgICB0aGlzLnBhcmFtcy5wMSArPSBtMTEgKiBkZWx0YVggKyBtMTIgKiBkZWx0YVkgKyBtMTMgKiBkZWx0YVJvdDtcbiAgICB0aGlzLnBhcmFtcy5wMiArPSBtMjEgKiBkZWx0YVggKyBtMjIgKiBkZWx0YVkgKyBtMjMgKiBkZWx0YVJvdDtcbiAgICB0aGlzLnBhcmFtcy5zRyArPSBtMzEgKiBkZWx0YVggKyBtMzIgKiBkZWx0YVkgKyBtMzMgKiBkZWx0YVJvdDtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGJ1aWxkUGF0aChudW0pIHtcbiAgICBjb25zdCB7IHAwLCBwMSwgcDIsIHAzLCBzRyB9ID0gdGhpcy5wYXJhbXM7XG5cbiAgICBjb25zdCBzR18yID0gc0cgKiBzRztcbiAgICBjb25zdCBzR18zID0gc0dfMiAqIHNHO1xuXG4gICAgY29uc3QgYSA9IHAwO1xuICAgIGNvbnN0IGIgPSAoLTUuNSAqIHAwICsgOSAqIHAxIC0gNC41ICogcDIgKyBwMykgLyBzRztcbiAgICBjb25zdCBjID0gKDkgKiBwMCAtIDIyLjUgKiBwMSArIDE4ICogcDIgLSA0LjUgKiBwMykgLyBzR18yO1xuICAgIGNvbnN0IGQgPSAoLTQuNSAqIChwMCAtIDMgKiBwMSArIDMgKiBwMiAtIHAzKSkgLyBzR18zO1xuXG4gICAgY29uc3QgcGF0aCA9IFt7IHBvczogbmV3IFRIUkVFLlZlY3RvcjIodGhpcy5zdGFydC54LCB0aGlzLnN0YXJ0LnkpLCByb3Q6IHRoaXMuc3RhcnQucm90LCBjdXJ2OiB0aGlzLnN0YXJ0LmN1cnYgfV07XG4gICAgY29uc3QgZHMgPSBzRyAvIChudW0gLSAxKTtcbiAgICBsZXQgcyA9IGRzO1xuICAgIGxldCBkeCA9IDA7XG4gICAgbGV0IGR5ID0gMDtcbiAgICBsZXQgcHJldkNvc1JvdCA9IE1hdGguY29zKHBhdGhbMF0ucm90KTtcbiAgICBsZXQgcHJldlNpblJvdCA9IE1hdGguc2luKHBhdGhbMF0ucm90KTtcblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbnVtIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCByb3QgPSAoKChkICogcyAvIDQgKyBjIC8gMykgKiBzICsgYiAvIDIpICogcyArIGEpICogcyArIHRoaXMuc3RhcnQucm90O1xuICAgICAgY29uc3QgY3VydiA9ICgoZCAqIHMgKyBjKSAqIHMgKyBiKSAqIHMgKyBhO1xuICAgICAgY29uc3QgY29zUm90ID0gTWF0aC5jb3Mocm90KTtcbiAgICAgIGNvbnN0IHNpblJvdCA9IE1hdGguc2luKHJvdCk7XG5cbiAgICAgIGR4ID0gZHggKiAoaSAtIDEpIC8gaSArIChjb3NSb3QgKyBwcmV2Q29zUm90KSAvICgyICogaSk7XG4gICAgICBkeSA9IGR5ICogKGkgLSAxKSAvIGkgKyAoc2luUm90ICsgcHJldlNpblJvdCkgLyAoMiAqIGkpO1xuXG4gICAgICBwYXRoLnB1c2goeyBwb3M6IG5ldyBUSFJFRS5WZWN0b3IyKHMgKiBkeCArIHRoaXMuc3RhcnQueCwgcyAqIGR5ICsgdGhpcy5zdGFydC55KSwgcm90OiByb3QsIGN1cnY6IGN1cnYgfSk7XG5cbiAgICAgIHMgKz0gZHM7XG4gICAgICBwcmV2Q29zUm90ID0gY29zUm90O1xuICAgICAgcHJldlNpblJvdCA9IHNpblJvdDtcbiAgICB9XG5cbiAgICBwYXRoLnB1c2goeyBwb3M6IG5ldyBUSFJFRS5WZWN0b3IyKHRoaXMuZW5kLngsIHRoaXMuZW5kLnkpLCByb3Q6IHRoaXMuZW5kLnJvdCwgY3VydjogdGhpcy5lbmQuY3VydiB9KTtcblxuICAgIHJldHVybiBwYXRoO1xuICB9XG59XG4iLCJjb25zdCBPQlNUQUNMRV9WRVJURVhfU0hBREVSID0gYCN2ZXJzaW9uIDMwMCBlc1xudW5pZm9ybSBtYXQzIHhmb3JtO1xuaW4gdmVjMiBwb3NpdGlvbjtcblxudm9pZCBtYWluKHZvaWQpIHtcbiAgZ2xfUG9zaXRpb24gPSB2ZWM0KCh4Zm9ybSAqIHZlYzMocG9zaXRpb24sIDEpKS54eSwgMCwgMSk7XG59XG5gO1xuXG5jb25zdCBPQlNUQUNMRV9LRVJORUwgPSBgXG4gIHZlYzQga2VybmVsKCkge1xuICAgIHJldHVybiB2ZWM0KDEsIDAsIDAsIDEpO1xuICB9XG5gO1xuXG5sZXQgb2JzdGFjbGVWZXJ0aWNlcztcbmxldCBvYnN0YWNsZVhmb3JtO1xuXG4vLyBEcmF3IG9ic3RhY2xlIHRyaWFuZ2xlcyB0byBYWS1zcGFjZSBvYnN0YWNsZSBncmlkXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldFVwKCkge1xuICAgIHJldHVybiB7XG4gICAgICBrZXJuZWw6IE9CU1RBQ0xFX0tFUk5FTCxcbiAgICAgIHZlcnRleFNoYWRlcjogT0JTVEFDTEVfVkVSVEVYX1NIQURFUixcbiAgICAgIG91dHB1dDogeyBuYW1lOiAneHlPYnN0YWNsZUdyaWQnIH0sXG4gICAgICBkcmF3OiAoZ3BncHUsIHByb2dyYW0pID0+IHtcbiAgICAgICAgY29uc3QgZ2wgPSBncGdwdS5nbDtcblxuICAgICAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDApO1xuICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUKTtcblxuICAgICAgICBpZiAob2JzdGFjbGVWZXJ0aWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgYnVmID0gZ2wuY3JlYXRlQnVmZmVyKCk7XG5cbiAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmKTtcbiAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgb2JzdGFjbGVWZXJ0aWNlcywgZ2wuU1RBVElDX0RSQVcpO1xuICAgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbik7XG4gICAgICAgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnBvc2l0aW9uTG9jYXRpb24sIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7XG5cbiAgICAgICAgICBjb25zdCB4Zm9ybUxvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0uZ2xQcm9ncmFtLCAneGZvcm0nKTtcbiAgICAgICAgICBnbC51bmlmb3JtTWF0cml4M2Z2KHhmb3JtTG9jYXRpb24sIGZhbHNlLCBvYnN0YWNsZVhmb3JtLmVsZW1lbnRzKTtcblxuICAgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCBvYnN0YWNsZVZlcnRpY2VzLmxlbmd0aCAvIDIpO1xuXG4gICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHh5V2lkdGgsIHh5SGVpZ2h0LCB4eUNlbnRlclBvaW50LCB2ZWhpY2xlWGZvcm0sIG9ic3RhY2xlcykge1xuICAgIG9ic3RhY2xlVmVydGljZXMgPSBuZXcgRmxvYXQzMkFycmF5KEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sIG9ic3RhY2xlcy5tYXAobyA9PiBvLnZlcnRpY2VzKSkpO1xuXG4gICAgY29uc3QgdHJhbnNsYXRlID0gbmV3IFRIUkVFLk1hdHJpeDMoKTtcbiAgICB0cmFuc2xhdGUuc2V0KFxuICAgICAgMSwgMCwgLXh5Q2VudGVyUG9pbnQueCxcbiAgICAgIDAsIDEsIC14eUNlbnRlclBvaW50LnksXG4gICAgICAwLCAwLCAxXG4gICAgKTtcblxuICAgIGNvbnN0IHNjYWxlID0gbmV3IFRIUkVFLk1hdHJpeDMoKTtcbiAgICBzY2FsZS5zZXQoXG4gICAgICAyIC8gKHh5V2lkdGggKiBjb25maWcueHlHcmlkQ2VsbFNpemUpLCAwLCAwLFxuICAgICAgMCwgMiAvICh4eUhlaWdodCAqIGNvbmZpZy54eUdyaWRDZWxsU2l6ZSksIDAsXG4gICAgICAwLCAwLCAxXG4gICAgKTtcblxuICAgIG9ic3RhY2xlWGZvcm0gPSBzY2FsZS5tdWx0aXBseSh0cmFuc2xhdGUpLm11bHRpcGx5KHZlaGljbGVYZm9ybSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHh5V2lkdGgsXG4gICAgICBoZWlnaHQ6IHh5SGVpZ2h0XG4gICAgfVxuICB9XG59XG4iLCJjb25zdCBTTF9PQlNUQUNMRV9LRVJORUwgPSBgXG5cbnZlYzQga2VybmVsKCkge1xuICBmbG9hdCBjZW50ZXJsaW5lV2lkdGggPSBmbG9hdCh0ZXh0dXJlU2l6ZShjZW50ZXJsaW5lLCAwKS54KTtcblxuICB2ZWMyIHNsID0gKGtlcm5lbFBvc2l0aW9uIC0gMC41KSAqIHZlYzIoa2VybmVsU2l6ZSkgKiB2ZWMyKHNsR3JpZENlbGxTaXplKSArIHNsQ2VudGVyUG9pbnQ7XG4gIGZsb2F0IGNlbnRlcmxpbmVDb29yZCA9IHNsLnggLyBjZW50ZXJsaW5lU3RhdGlvbkludGVydmFsIC8gY2VudGVybGluZVdpZHRoICogKGNlbnRlcmxpbmVXaWR0aCAtIDEuMCkgLyBjZW50ZXJsaW5lV2lkdGggKyAoMC41IC8gY2VudGVybGluZVdpZHRoKTtcbiAgaWYgKGNlbnRlcmxpbmVDb29yZCA8IDAuMCB8fCBjZW50ZXJsaW5lQ29vcmQgPiAxLjApIHJldHVybiB2ZWM0KDApO1xuXG4gIHZlYzMgY2VudGVybGluZVNhbXBsZSA9IHRleHR1cmUoY2VudGVybGluZSwgdmVjMihjZW50ZXJsaW5lQ29vcmQsIDApKS54eXo7XG4gIGZsb2F0IHBlcnBpbmRpY3VsYXIgPSBjZW50ZXJsaW5lU2FtcGxlLnogKyByYWRpYW5zKDkwLjApO1xuICB2ZWMyIHh5ID0gY2VudGVybGluZVNhbXBsZS54eSArIHNsLnl5ICogdmVjMihjb3MocGVycGluZGljdWxhciksIHNpbihwZXJwaW5kaWN1bGFyKSk7XG5cbiAgdmVjMiB4eVRleENvb3JkcyA9ICh4eSAtIHh5Q2VudGVyUG9pbnQpIC8gdmVjMih0ZXh0dXJlU2l6ZSh4eU9ic3RhY2xlR3JpZCwgMCkpIC8gdmVjMih4eUdyaWRDZWxsU2l6ZSkgKyAwLjU7XG4gIHJldHVybiB0ZXh0dXJlKHh5T2JzdGFjbGVHcmlkLCB4eVRleENvb3Jkcyk7XG59XG5cbmA7XG5cbi8vIENvbnZlcnQgWFktc3BhY2Ugb2JzdGFjbGUgZ3JpZCB0byBTTC1zcGFjZSBvYnN0YWNsZSBncmlkXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldFVwKCkge1xuICAgIHJldHVybiB7XG4gICAgICBrZXJuZWw6IFNMX09CU1RBQ0xFX0tFUk5FTCxcbiAgICAgIG91dHB1dDogeyBuYW1lOiAnc2xPYnN0YWNsZUdyaWQnIH0sXG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICB4eU9ic3RhY2xlR3JpZDogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScgfSxcbiAgICAgICAgc2xHcmlkQ2VsbFNpemU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICB4eUdyaWRDZWxsU2l6ZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgIHNsQ2VudGVyUG9pbnQ6IHsgdHlwZTogJ3ZlYzInIH0sXG4gICAgICAgIHh5Q2VudGVyUG9pbnQ6IHsgdHlwZTogJ3ZlYzInIH0sXG4gICAgICAgIGNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWw6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBjZW50ZXJsaW5lOiB7IHR5cGU6ICdzaGFyZWRUZXh0dXJlJyB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHNsV2lkdGgsIHNsSGVpZ2h0LCBzbENlbnRlclBvaW50LCB4eUNlbnRlclBvaW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiBzbFdpZHRoLFxuICAgICAgaGVpZ2h0OiBzbEhlaWdodCxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIHNsR3JpZENlbGxTaXplOiBjb25maWcuc2xHcmlkQ2VsbFNpemUsXG4gICAgICAgIHh5R3JpZENlbGxTaXplOiBjb25maWcueHlHcmlkQ2VsbFNpemUsXG4gICAgICAgIHNsQ2VudGVyUG9pbnQ6IFtzbENlbnRlclBvaW50LngsIHNsQ2VudGVyUG9pbnQueV0sXG4gICAgICAgIHh5Q2VudGVyUG9pbnQ6IFt4eUNlbnRlclBvaW50LngsIHh5Q2VudGVyUG9pbnQueV0sXG4gICAgICAgIGNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWw6IGNvbmZpZy5jZW50ZXJsaW5lU3RhdGlvbkludGVydmFsXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJjb25zdCBTTF9PQlNUQUNMRV9ESUxBVElPTl9LRVJORUwgPSBgXG5cbi8vIFRPRE86IHRlc3QgcGVyZm9ybWFuY2Ugb2YgcmV0dXJuaW5nIGVhcmx5IGlmIG5vbi16ZXJvIHBpeGVsIGZvdW5kXG52ZWM0IGtlcm5lbCgpIHtcbiAgZmxvYXQgdmFsID0gMC4wO1xuXG4gIGZvciAoaW50IGQgPSAwOyBkIDw9IGNvbGxpc2lvbkRpbGF0aW9uOyBkKyspIHtcbiAgICB2YWwgPSBtYXgodmFsLCB0ZXh0dXJlKHNsT2JzdGFjbGVHcmlkLCBrZXJuZWxQb3NpdGlvbiArIGRlbHRhICogdmVjMihkKSkucik7XG4gICAgdmFsID0gbWF4KHZhbCwgdGV4dHVyZShzbE9ic3RhY2xlR3JpZCwga2VybmVsUG9zaXRpb24gKyBkZWx0YSAqIHZlYzIoLWQpKS5yKTtcbiAgfVxuXG4gIGZvciAoaW50IGQgPSBjb2xsaXNpb25EaWxhdGlvbiArIDE7IGQgPD0gY29sbGlzaW9uRGlsYXRpb24gKyBoYXphcmREaWxhdGlvbjsgZCsrKSB7XG4gICAgdmFsID0gbWF4KHZhbCwgdGV4dHVyZShzbE9ic3RhY2xlR3JpZCwga2VybmVsUG9zaXRpb24gKyBkZWx0YSAqIHZlYzIoZCkpLnIgKiAwLjUpO1xuICAgIHZhbCA9IG1heCh2YWwsIHRleHR1cmUoc2xPYnN0YWNsZUdyaWQsIGtlcm5lbFBvc2l0aW9uICsgZGVsdGEgKiB2ZWMyKC1kKSkuciAqIDAuNSk7XG4gIH1cblxuICB2YWwgPSBtYXgodmFsLCBzdGVwKDAuMSwgdmFsKSAqIDAuNSk7XG5cbiAgcmV0dXJuIHZlYzQodmFsLCAwLCAwLCAxKTtcbn1cblxuYDtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRVcCgpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyAvLyBTTC1zcGFjZSBvYnN0YWNsZSBncmlkIFMgZGlsYXRpb25cbiAgICAgICAga2VybmVsOiBTTF9PQlNUQUNMRV9ESUxBVElPTl9LRVJORUwsXG4gICAgICAgIG91dHB1dDogeyBuYW1lOiAnc2xPYnN0YWNsZUdyaWRTdGF0aW9uRGlsYXRlZCcgfSxcbiAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICBzbE9ic3RhY2xlR3JpZDogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScgfSxcbiAgICAgICAgICBkZWx0YTogeyB0eXBlOiAndmVjMicgfSxcbiAgICAgICAgICBjb2xsaXNpb25EaWxhdGlvbjogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgIGhhemFyZERpbGF0aW9uOiB7IHR5cGU6ICdpbnQnIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgLy8gU0wtc3BhY2Ugb2JzdGFjbGUgZ3JpZCBMIGRpbGF0aW9uXG4gICAgICAgIGtlcm5lbDogU0xfT0JTVEFDTEVfRElMQVRJT05fS0VSTkVMLFxuICAgICAgICBvdXRwdXQ6IHsgbmFtZTogJ3NsT2JzdGFjbGVHcmlkRGlsYXRlZCcgfSxcbiAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICBzbE9ic3RhY2xlR3JpZDogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScsIG5hbWU6ICdzbE9ic3RhY2xlR3JpZFN0YXRpb25EaWxhdGVkJyB9LFxuICAgICAgICAgIGRlbHRhOiB7IHR5cGU6ICd2ZWMyJyB9LFxuICAgICAgICAgIGNvbGxpc2lvbkRpbGF0aW9uOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgaGF6YXJkRGlsYXRpb246IHsgdHlwZTogJ2ludCcgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcbiAgfSxcblxuICB1cGRhdGUoY29uZmlnLCBzbFdpZHRoLCBzbEhlaWdodCkge1xuICAgIHJldHVybiBbXG4gICAgICB7IC8vIFNMLXNwYWNlIG9ic3RhY2xlIGdyaWQgUyBkaWxhdGlvblxuICAgICAgICB3aWR0aDogc2xXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzbEhlaWdodCxcbiAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICBkZWx0YTogWzEgLyBzbFdpZHRoLCAwXSxcbiAgICAgICAgICBjb2xsaXNpb25EaWxhdGlvbjogTWF0aC5jZWlsKGNvbmZpZy5jb2xsaXNpb25EaWxhdGlvblMgLyBjb25maWcuc2xHcmlkQ2VsbFNpemUpLFxuICAgICAgICAgIGhhemFyZERpbGF0aW9uOiBNYXRoLmNlaWwoY29uZmlnLmhhemFyZERpbGF0aW9uUyAvIGNvbmZpZy5zbEdyaWRDZWxsU2l6ZSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgLy8gU0wtc3BhY2Ugb2JzdGFjbGUgZ3JpZCBMIGRpbGF0aW9uXG4gICAgICAgIHdpZHRoOiBzbFdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHNsSGVpZ2h0LFxuICAgICAgICB1bmlmb3Jtczoge1xuICAgICAgICAgIGRlbHRhOiBbMCwgMSAvIHNsSGVpZ2h0XSxcbiAgICAgICAgICBjb2xsaXNpb25EaWxhdGlvbjogTWF0aC5jZWlsKGNvbmZpZy5jb2xsaXNpb25EaWxhdGlvbkwgLyBjb25maWcuc2xHcmlkQ2VsbFNpemUpLFxuICAgICAgICAgIGhhemFyZERpbGF0aW9uOiBNYXRoLmNlaWwoY29uZmlnLmhhemFyZERpbGF0aW9uTCAvIGNvbmZpZy5zbEdyaWRDZWxsU2l6ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG4gIH1cbn1cbiIsImNvbnN0IERZTkFNSUNfT0JTVEFDTEVfVkVSVEVYX1NIQURFUiA9IGAjdmVyc2lvbiAzMDAgZXNcbnVuaWZvcm0gbWF0MyB4Zm9ybTtcbmluIHZlYzMgcG9zaXRpb247XG5vdXQgZmxvYXQgY29sb3I7XG5cbnZvaWQgbWFpbih2b2lkKSB7XG4gIGdsX1Bvc2l0aW9uID0gdmVjNCgoeGZvcm0gKiB2ZWMzKHBvc2l0aW9uLnh5LCAxKSkueHksIHBvc2l0aW9uLnosIDEpO1xuXG4gIC8vIFRoZSB6IGNvb3JkaW5hdGUgaXMgMC4yNSBmb3IgY29sbGlzaW9uIHpvbmUgYW5kIDAuNzUgZm9yIGhhemFyZCB6b25lLFxuICAvLyBzbyB0aGF0IHRoZSBjb2xsaXNpb24gem9uZSBpcyBkcmF3biBvbiB0b3AuXG4gIC8vIENvbnZlcnQgdGhpcyB0byAxLjAgZm9yIGNvbGxpc2lvbiB6b25lLCAwLjUgZm9yIGhhemFyZCB6b25lXG4gIGNvbG9yID0gKDEuMCAtIHN0ZXAoMC41LCBwb3NpdGlvbi56KSkgKiAwLjUgKyAwLjU7XG59XG5gO1xuXG5jb25zdCBEWU5BTUlDX09CU1RBQ0xFX0tFUk5FTCA9IGBcbiAgaW4gZmxvYXQgY29sb3I7XG5cbiAgdmVjNCBrZXJuZWwoKSB7XG4gICAgcmV0dXJuIHZlYzQoY29sb3IsIDAsIDAsIDEpO1xuICB9XG5gO1xuXG5sZXQgb2JzdGFjbGVWZXJ0aWNlcztcbmxldCBvYnN0YWNsZVhmb3JtO1xuY29uc3QgbnVtRHluYW1pY0ZyYW1lcyA9IDIwO1xuXG4vLyBEcmF3IGR5bmFtaWMgb2JzdGFjbGUgdHJpYW5nbGVzIHRvIFNMLXNwYWNlIG9ic3RhY2xlIGdyaWRcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtlcm5lbDogRFlOQU1JQ19PQlNUQUNMRV9LRVJORUwsXG4gICAgICB2ZXJ0ZXhTaGFkZXI6IERZTkFNSUNfT0JTVEFDTEVfVkVSVEVYX1NIQURFUixcbiAgICAgIG91dHB1dDogeyBuYW1lOiAnc2xEeW5hbWljT2JzdGFjbGVHcmlkJywgdGV4dHVyZVR5cGU6ICcyREFycmF5JywgZGVwdGg6IG51bUR5bmFtaWNGcmFtZXMgfSxcbiAgICAgIGRyYXc6IChncGdwdSwgcHJvZ3JhbSkgPT4ge1xuICAgICAgICBjb25zdCBnbCA9IGdwZ3B1LmdsO1xuXG4gICAgICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTtcblxuICAgICAgICBjb25zdCByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTtcbiAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7XG4gICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgcHJvZ3JhbS5pbnB1dFdpZHRoLCBwcm9ncmFtLmlucHV0SGVpZ2h0KTtcbiAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTtcblxuICAgICAgICBmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgbnVtRHluYW1pY0ZyYW1lczsgZnJhbWUrKykge1xuICAgICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgcHJvZ3JhbS5vdXRwdXRUZXh0dXJlLCAwLCBmcmFtZSk7XG4gICAgICAgICAgY29uc3QgZnJhbWVCdWZmZXJTdGF0dXMgPSAoZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpO1xuICAgICAgICAgIGlmICghZnJhbWVCdWZmZXJTdGF0dXMpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGF0dGFjaGluZyBmbG9hdCB0ZXh0dXJlIHRvIGZyYW1lYnVmZmVyLiBZb3VyIGRldmljZSBpcyBwcm9iYWJseSBpbmNvbXBhdGlibGUuJyk7XG5cbiAgICAgICAgICBnbC5jbGVhckNvbG9yKDAsIDAsIDAsIDApO1xuICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTtcblxuICAgICAgICAgIGlmIChvYnN0YWNsZVZlcnRpY2VzW2ZyYW1lXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBidWYgPSBnbC5jcmVhdGVCdWZmZXIoKTtcblxuICAgICAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1Zik7XG4gICAgICAgICAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgb2JzdGFjbGVWZXJ0aWNlc1tmcmFtZV0sIGdsLlNUQVRJQ19EUkFXKTtcbiAgICAgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbik7XG4gICAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbiwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTtcblxuICAgICAgICAgICAgY29uc3QgeGZvcm1Mb2NhdGlvbiA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLmdsUHJvZ3JhbSwgJ3hmb3JtJyk7XG4gICAgICAgICAgICBnbC51bmlmb3JtTWF0cml4M2Z2KHhmb3JtTG9jYXRpb24sIGZhbHNlLCBvYnN0YWNsZVhmb3JtLmVsZW1lbnRzKTtcblxuICAgICAgICAgICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIG9ic3RhY2xlVmVydGljZXNbZnJhbWVdLmxlbmd0aCAvIDMpO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWUgPT0gMCkge1xuICAgICAgICAgICAgICBjb25zdCBvYnN0YWNsZUdyaWQgPSBuZXcgRmxvYXQzMkFycmF5KHByb2dyYW0uaW5wdXRXaWR0aCAqIHByb2dyYW0uaW5wdXRIZWlnaHQgKiA0KTtcbiAgICAgICAgICAgICAgZ2wucmVhZFBpeGVscygwLCAwLCBwcm9ncmFtLmlucHV0V2lkdGgsIHByb2dyYW0uaW5wdXRIZWlnaHQsIGdsLlJHQkEsIGdsLkZMT0FULCBvYnN0YWNsZUdyaWQpO1xuICAgICAgICAgICAgICBncGdwdS5fZHluYW1pY09ic3RhY2xlR3JpZCA9IG9ic3RhY2xlR3JpZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ2wuZGVsZXRlQnVmZmVyKGJ1Zik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIG51bGwpO1xuICAgICAgICBnbC5kZWxldGVSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTtcbiAgICAgICAgZ2wuZGlzYWJsZShnbC5ERVBUSF9URVNUKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHNsV2lkdGgsIHNsSGVpZ2h0LCBzbENlbnRlclBvaW50LCB2ZWhpY2xlU3RhdGlvbiwgc3RhcnRUaW1lLCBkeW5hbWljRnJhbWVUaW1lLCBkeW5hbWljT2JzdGFjbGVzKSB7XG4gICAgb2JzdGFjbGVWZXJ0aWNlcyA9IFtdO1xuXG4gICAgbGV0IHRpbWUgPSBzdGFydFRpbWU7XG4gICAgZm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IG51bUR5bmFtaWNGcmFtZXM7IGZyYW1lKyspIHtcbiAgICAgIGNvbnN0IHZlcnRpY2VzID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgZHluYW1pY09ic3RhY2xlcy5tYXAobyA9PiBvLnZlcnRpY2VzSW5UaW1lUmFuZ2UodGltZSwgdGltZSArIGR5bmFtaWNGcmFtZVRpbWUsIGNvbmZpZykpKTtcbiAgICAgIG9ic3RhY2xlVmVydGljZXMucHVzaChuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzKSk7XG4gICAgICB0aW1lICs9IGR5bmFtaWNGcmFtZVRpbWU7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNsYXRlID0gbmV3IFRIUkVFLk1hdHJpeDMoKTtcbiAgICB0cmFuc2xhdGUuc2V0KFxuICAgICAgMSwgMCwgLXNsQ2VudGVyUG9pbnQueCAtIHZlaGljbGVTdGF0aW9uLFxuICAgICAgMCwgMSwgLXNsQ2VudGVyUG9pbnQueSxcbiAgICAgIDAsIDAsIDFcbiAgICApO1xuXG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgVEhSRUUuTWF0cml4MygpO1xuICAgIHNjYWxlLnNldChcbiAgICAgIDIgLyAoc2xXaWR0aCAqIGNvbmZpZy5zbEdyaWRDZWxsU2l6ZSksIDAsIDAsXG4gICAgICAwLCAyIC8gKHNsSGVpZ2h0ICogY29uZmlnLnNsR3JpZENlbGxTaXplKSwgMCxcbiAgICAgIDAsIDAsIDFcbiAgICApO1xuXG4gICAgb2JzdGFjbGVYZm9ybSA9IHNjYWxlLm11bHRpcGx5KHRyYW5zbGF0ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHNsV2lkdGgsXG4gICAgICBoZWlnaHQ6IHNsSGVpZ2h0XG4gICAgfVxuICB9XG59XG4iLCJjb25zdCBYWVNMX01BUF9LRVJORUwgPSBgXG5cbnZlYzQga2VybmVsKCkge1xuICB2ZWMyIHh5ID0gKGtlcm5lbFBvc2l0aW9uIC0gMC41KSAqIHZlYzIoa2VybmVsU2l6ZSkgKiB2ZWMyKHh5R3JpZENlbGxTaXplKSArIHh5Q2VudGVyUG9pbnQ7XG5cbiAgaW50IG51bVNhbXBsZXMgPSB0ZXh0dXJlU2l6ZShjZW50ZXJsaW5lLCAwKS54O1xuICBpbnQgY2xvc2VzdCA9IDA7XG4gIGZsb2F0IGNsb3Nlc3REaXN0ID0gZGlzdGFuY2UoeHksIHRleGVsRmV0Y2goY2VudGVybGluZSwgaXZlYzIoMCwgMCksIDApLnh5KTtcbiAgZm9yIChpbnQgaSA9IDE7IGkgPCBudW1TYW1wbGVzOyBpKyspIHtcbiAgICBmbG9hdCBkaXN0ID0gZGlzdGFuY2UoeHksIHRleGVsRmV0Y2goY2VudGVybGluZSwgaXZlYzIoaSwgMCksIDApLnh5KTtcbiAgICBpZiAoZGlzdCA8IGNsb3Nlc3REaXN0KSB7XG4gICAgICBjbG9zZXN0RGlzdCA9IGRpc3Q7XG4gICAgICBjbG9zZXN0ID0gaTtcbiAgICB9XG4gIH1cblxuICB2ZWMyIGNsb3Nlc3RQb3MgPSB0ZXhlbEZldGNoKGNlbnRlcmxpbmUsIGl2ZWMyKGNsb3Nlc3QsIDApLCAwKS54eTtcbiAgdmVjMiBwcmV2LCBuZXh0O1xuICBpbnQgcHJldkluZGV4LCBuZXh0SW5kZXg7XG5cbiAgaWYgKGNsb3Nlc3QgPT0gMCkge1xuICAgIHByZXZJbmRleCA9IDA7XG4gICAgbmV4dEluZGV4ID0gMTtcbiAgICBwcmV2ID0gY2xvc2VzdFBvcztcbiAgICBuZXh0ID0gdGV4ZWxGZXRjaChjZW50ZXJsaW5lLCBpdmVjMigxLCAwKSwgMCkueHk7XG4gIH0gZWxzZSBpZiAoY2xvc2VzdCA9PSBudW1TYW1wbGVzIC0gMSkge1xuICAgIHByZXZJbmRleCA9IGNsb3Nlc3QgLSAxO1xuICAgIG5leHRJbmRleCA9IGNsb3Nlc3Q7XG4gICAgcHJldiA9IHRleGVsRmV0Y2goY2VudGVybGluZSwgaXZlYzIocHJldkluZGV4LCAwKSwgMCkueHk7XG4gICAgbmV4dCA9IGNsb3Nlc3RQb3M7XG4gIH0gZWxzZSB7XG4gICAgdmVjMiBiZWZvcmUgPSB0ZXhlbEZldGNoKGNlbnRlcmxpbmUsIGl2ZWMyKGNsb3Nlc3QgLSAxLCAwKSwgMCkueHk7XG4gICAgdmVjMiBhZnRlciA9IHRleGVsRmV0Y2goY2VudGVybGluZSwgaXZlYzIoY2xvc2VzdCArIDEsIDApLCAwKS54eTtcblxuICAgIGlmIChkaXN0YW5jZShiZWZvcmUsIHh5KSA8IGRpc3RhbmNlKGFmdGVyLCB4eSkpIHtcbiAgICAgIHByZXZJbmRleCA9IGNsb3Nlc3QgLSAxO1xuICAgICAgbmV4dEluZGV4ID0gY2xvc2VzdDtcbiAgICAgIHByZXYgPSBiZWZvcmU7XG4gICAgICBuZXh0ID0gY2xvc2VzdFBvcztcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldkluZGV4ID0gY2xvc2VzdDtcbiAgICAgIG5leHRJbmRleCA9IGNsb3Nlc3QgKyAxO1xuICAgICAgcHJldiA9IGNsb3Nlc3RQb3M7XG4gICAgICBuZXh0ID0gYWZ0ZXI7XG4gICAgfVxuICB9XG5cbiAgZmxvYXQgZGlzdCA9IGRpc3RhbmNlKHByZXYsIG5leHQpO1xuICBmbG9hdCBwcm9ncmVzcyA9IGNsYW1wKGRvdCh4eSAtIHByZXYsIG5leHQgLSBwcmV2KSAvIGRpc3QgLyBkaXN0LCAwLjAsIDEuMCk7XG4gIHZlYzIgcHJvamVjdGVkUG9zID0gKG5leHQgLSBwcmV2KSAqIHZlYzIocHJvZ3Jlc3MpICsgcHJldjtcblxuICByZXR1cm4gdmVjNChcbiAgICAoZmxvYXQocHJldkluZGV4KSArIHByb2dyZXNzKSAqIGNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWwsXG4gICAgc2lnbihkZXRlcm1pbmFudChtYXQyKG5leHQgLSBwcmV2LCB4eSAtIHByZXYpKSkgKiBkaXN0YW5jZSh4eSwgcHJvamVjdGVkUG9zKSxcbiAgICAwLFxuICAgIDBcbiAgKTtcbn1cblxuYDtcblxuLy8gQnVpbGQgWFktU0wgbWFwXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldFVwKCkge1xuICAgIHJldHVybiB7XG4gICAgICBrZXJuZWw6IFhZU0xfTUFQX0tFUk5FTCxcbiAgICAgIG91dHB1dDogeyBuYW1lOiAneHlzbE1hcCcsIGZpbHRlcjogJ2xpbmVhcicgfSxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIGNlbnRlcmxpbmU6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH0sXG4gICAgICAgIHh5Q2VudGVyUG9pbnQ6IHsgdHlwZTogJ3ZlYzInIH0sXG4gICAgICAgIHh5R3JpZENlbGxTaXplOiB7IHR5cGU6ICdmbG9hdCd9LFxuICAgICAgICBjZW50ZXJsaW5lU3RhdGlvbkludGVydmFsOiB7IHR5cGU6ICdmbG9hdCd9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcblxuICB1cGRhdGUoY29uZmlnLCB4eVdpZHRoLCB4eUhlaWdodCwgeHlDZW50ZXJQb2ludCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogeHlXaWR0aCxcbiAgICAgIGhlaWdodDogeHlIZWlnaHQsXG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICB4eUNlbnRlclBvaW50OiBbeHlDZW50ZXJQb2ludC54LCB4eUNlbnRlclBvaW50LnldLFxuICAgICAgICB4eUdyaWRDZWxsU2l6ZTogY29uZmlnLnh5R3JpZENlbGxTaXplLFxuICAgICAgICBjZW50ZXJsaW5lU3RhdGlvbkludGVydmFsOiBjb25maWcuY2VudGVybGluZVN0YXRpb25JbnRlcnZhbFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbiIsIi8vIENvbmZpZzpcbi8vIG51bSBzdGF0aW9uc1xuLy8gbnVtIGxhdGl0dWRlc1xuLy8gc3RhdGlvbiBjb25uZWN0aXZpdHlcbi8vIGxhdGl0dWRlIGNvbm5lY3Rpdml0eVxuLy9cbi8vIFNoYXJlZDpcbi8vIGxhdHRpY2VcblxuY29uc3QgT1BUSU1JWkVfQ1VCSUNfU0hBUkVEID0gYFxuXG5jb25zdCBpbnQgTkVXVE9OX0lURVJBVElPTlMgPSAxNjtcbmNvbnN0IGludCBSRUxBWEFUSU9OX0lURVJBVElPTlMgPSAxNjtcbmNvbnN0IGZsb2F0IENPTlZFUkdFTkNFX0VSUk9SID0gMC4wMTtcblxuLy8gVGhlc2UgdHdvIGNvbnN0cyBtdXN0IHN0YXkgaW4gc3luYy5cbmNvbnN0IGludCBTSU1QU09OU19JTlRFUlZBTFMgPSA4O1xuLy9jb25zdCBmbG9hdCBTSU1QU09OU19DT0VGRlNbU0lNUFNPTlNfSU5URVJWQUxTICsgMV0gPSBmbG9hdFtdKDEuMCwgNC4wLCAyLjAsIDQuMCwgMi4wLCA0LjAsIDIuMCwgNC4wLCAyLjAsIDQuMCwgMi4wLCA0LjAsIDIuMCwgNC4wLCAyLjAsIDQuMCwgMS4wKTtcbmNvbnN0IGZsb2F0IFNJTVBTT05TX0NPRUZGU1tTSU1QU09OU19JTlRFUlZBTFMgKyAxXSA9IGZsb2F0W10oMS4wLCA0LjAsIDIuMCwgNC4wLCAyLjAsIDQuMCwgMi4wLCA0LjAsIDEuMCk7XG5cbmNvbnN0IGZsb2F0IFBJID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1O1xuY29uc3QgZmxvYXQgVFdPX1BJID0gUEkgKyBQSTtcblxuY29uc3QgZmxvYXQgUkVMQVhBVElPTl9JVEVSQVRJT05TX0YgPSBmbG9hdChSRUxBWEFUSU9OX0lURVJBVElPTlMpO1xuY29uc3QgZmxvYXQgU0lNUFNPTlNfSU5URVJWQUxTX0YgPSBmbG9hdChTSU1QU09OU19JTlRFUlZBTFMpO1xuXG5mbG9hdCB3cmFwQW5nbGUoZmxvYXQgYW5nbGUpIHtcbiAgYW5nbGUgPSBtb2QoYW5nbGUsIFRXT19QSSk7XG4gIGlmIChhbmdsZSA8PSAtUEkpIHJldHVybiBhbmdsZSArIFRXT19QSTtcbiAgZWxzZSBpZiAoYW5nbGUgPiBQSSkgcmV0dXJuIGFuZ2xlIC0gVFdPX1BJO1xuICByZXR1cm4gYW5nbGU7XG59XG5cbnZlYzQgaXRlcmF0ZSh2ZWM0IGdvYWwsIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IHAzLCBmbG9hdCBzRykge1xuICBmbG9hdCBkcyA9IHNHIC8gU0lNUFNPTlNfSU5URVJWQUxTX0Y7XG4gIGZsb2F0IHNHXzIgPSBzRyAqIHNHO1xuICBmbG9hdCBzR18zID0gc0dfMiAqIHNHO1xuXG4gIHZlYzMgZFhfcCA9IHZlYzMoMC4wKTtcbiAgdmVjMyBkWV9wID0gdmVjMygwLjApO1xuICB2ZWMyIGd1ZXNzID0gdmVjMigwLjApO1xuICBmbG9hdCBzID0gMC4wO1xuXG4gIGZsb2F0IHRoZXRhLCBjb3NUaGV0YSwgc2luVGhldGE7XG4gIHZlYzMgZFRfcDtcblxuICBmb3IgKGludCBpID0gMDsgaSA8PSBTSU1QU09OU19JTlRFUlZBTFM7IGkrKykge1xuICAgIGZsb2F0IGNvZWZmID0gU0lNUFNPTlNfQ09FRkZTW2ldO1xuXG4gICAgZmxvYXQgYSA9IHAwO1xuICAgIGZsb2F0IGIgPSAoLTUuNSAqIHAwICsgOS4wICogcDEgLSA0LjUgKiBwMiArIHAzKSAvIHNHO1xuICAgIGZsb2F0IGMgPSAoOS4wICogcDAgLSAyMi41ICogcDEgKyAxOC4wICogcDIgLSA0LjUgKiBwMykgLyBzR18yO1xuICAgIGZsb2F0IGQgPSAoLTQuNSAqIChwMCAtIDMuMCAqIHAxICsgMy4wICogcDIgLSBwMykpIC8gc0dfMztcblxuICAgIHRoZXRhID0gKCgoZCAqIHMgLyA0LjAgKyBjIC8gMy4wKSAqIHMgKyBiIC8gMi4wKSAqIHMgKyBhKSAqIHM7XG4gICAgY29zVGhldGEgPSBjb3ModGhldGEpO1xuICAgIHNpblRoZXRhID0gc2luKHRoZXRhKTtcblxuICAgIGZsb2F0IHNfc0cgPSBzIC8gc0c7XG5cbiAgICBkVF9wID0gdmVjMyhcbiAgICAgIC8vIHAxXG4gICAgICAoKDMuMzc1ICogc19zRyAtIDcuNSkgKiBzX3NHICsgNC41KSAqIHNfc0cgKiBzLFxuXG4gICAgICAvLyBwMlxuICAgICAgKCgtMy4zNzUgKiBzX3NHICsgNi4wKSAqIHNfc0cgLSAyLjI1KSAqIHNfc0cgKiBzLFxuXG4gICAgICAvLyBzR1xuICAgICAgKCgzLjM3NSAqIChwMCAtIDMuMCAqIHAxICsgMy4wICogcDIgLSBwMykgKiBzX3NHIC0gMy4wICogKDIuMCAqIHAwIC0gNS4wICogcDEgKyA0LjAgKiBwMiAtIHAzKSkgKiBzX3NHICsgMC4yNSAqICgxMS4wICogcDAgLSAxOC4wICogcDEgKyA5LjAgKiBwMiAtIDIuMCAqIHAzKSkgKiBzX3NHICogc19zR1xuICAgICk7XG5cbiAgICBkWF9wIC09IGNvZWZmICogc2luVGhldGEgKiBkVF9wO1xuICAgIGRZX3AgKz0gY29lZmYgKiBjb3NUaGV0YSAqIGRUX3A7XG5cbiAgICBndWVzcyArPSBjb2VmZiAqIHZlYzIoY29zVGhldGEsIHNpblRoZXRhKTtcblxuICAgIHMgKz0gZHM7XG4gIH1cblxuICBmbG9hdCBoT3ZlcjMgPSBzRyAvIFNJTVBTT05TX0lOVEVSVkFMU19GIC8gMy4wO1xuXG4gIHZlYzMgZGVsdGE7XG4gIGRlbHRhLnh5ID0gZ29hbC54eSAtIGd1ZXNzICogaE92ZXIzO1xuICBkZWx0YS56ID0gd3JhcEFuZ2xlKGdvYWwueiAtIHRoZXRhKTtcblxuICBpZiAoYWJzKGRlbHRhLngpICsgYWJzKGRlbHRhLnkpICsgYWJzKGRlbHRhLnopIDwgQ09OVkVSR0VOQ0VfRVJST1IpXG4gICAgcmV0dXJuIHZlYzQocDEsIHAyLCBzRywgMS4wKTtcblxuICBkWF9wLnh5eiAqPSBoT3ZlcjM7XG4gIGRZX3AueHl6ICo9IGhPdmVyMztcbiAgZFhfcC56ICs9IGNvc1RoZXRhO1xuICBkWV9wLnogKz0gc2luVGhldGE7XG5cbiAgbWF0MyBpbnZKYWNvYmlhbiA9IGludmVyc2UodHJhbnNwb3NlKG1hdDMoZFhfcCwgZFlfcCwgZFRfcCkpKTtcblxuICB2ZWMzIGRlbHRhUCA9IGludkphY29iaWFuICogZGVsdGE7XG4gIHZlYzQgcGFyYW1zID0gdmVjNChwMSwgcDIsIHNHLCAwLjApO1xuICBwYXJhbXMueHl6ICs9IGRlbHRhUDtcblxuICByZXR1cm4gcGFyYW1zO1xufVxuXG4vKiBJbnB1dDpcbiAqICAgc3RhcnQ6ICh2ZWM0KVxuICogICAgIHg6IHggcG9zaXRpb24sXG4gKiAgICAgeTogeSBwb3NpdGlvbixcbiAqICAgICB6OiB0aGV0YSByb3RhdGlvbixcbiAqICAgICB3OiBrIGN1cnZhdHVyZVxuICogICBlbmQ6ICh2ZWM0KVxuICogICAgIHg6IHggcG9zaXRpb24sXG4gKiAgICAgeTogeSBwb3NpdGlvbixcbiAqICAgICB6OiB0aGV0YSByb3RhdGlvbixcbiAqICAgICB3OiBrIGN1cnZhdHVyZVxuICpcbiAqIE91dHB1dDogKHZlYzQpXG4gKiAgIHg6IHAxLFxuICogICB5OiBwMixcbiAqICAgejogc0csXG4gKiAgIHc6IDEgaWYgY29udmVyZ2VkLCAwIGlmIG5vdFxuICovXG5cbnZlYzQgb3B0aW1pemUodmVjNCBzdGFydCwgdmVjNCBlbmQpIHtcbiAgLy8gVHJhbnNsYXRlIGFuZCByb3RhdGUgc3RhcnQgYW5kIGVuZCBzbyB0aGF0IHN0YXJ0IGlzIGF0IHRoZSBvcmlnaW5cbiAgZmxvYXQgc2luUm90ID0gc2luKHN0YXJ0LnopO1xuICBmbG9hdCBjb3NSb3QgPSBjb3Moc3RhcnQueik7XG5cbiAgdmVjNCBkaWZmID0gZW5kIC0gc3RhcnQ7XG4gIHZlYzQgZ29hbDtcbiAgZ29hbC54eSA9IG1hdDIoY29zUm90LCAtc2luUm90LCBzaW5Sb3QsIGNvc1JvdCkgKiBkaWZmLnh5O1xuICBnb2FsLnogPSB3cmFwQW5nbGUoZGlmZi56KTtcbiAgZ29hbC53ID0gZW5kLnc7XG5cbiAgdmVjNCBvcmlnaW5hbEdvYWwgPSBnb2FsO1xuICB2ZWM0IGRHb2FsO1xuICBkR29hbC54ID0gMC4wO1xuICBkR29hbC55encgPSBnb2FsLnl6dyAvIFJFTEFYQVRJT05fSVRFUkFUSU9OU19GO1xuICBmbG9hdCBkSzAgPSBzdGFydC53IC8gUkVMQVhBVElPTl9JVEVSQVRJT05TX0Y7XG5cbiAgLy8gUmVsYXggdGhlIGdvYWwgdG8gKHgsIDAsIDAsIDApXG4gIGdvYWwueXp3ID0gdmVjMygwLCAwLCAwKTtcblxuICAvLyBSZWxheCB0aGUgcGFyYW1zIHRvICgwLCAwLCAwLCAwLCBnb2FsLngpXG4gIGZsb2F0IHAwID0gMC4wO1xuICBmbG9hdCBwMSA9IDAuMDtcbiAgZmxvYXQgcDIgPSAwLjA7XG4gIGZsb2F0IHAzID0gMC4wO1xuICBmbG9hdCBzRyA9IGdvYWwueDtcblxuICBpZiAoc0cgPCAwLjEpIHJldHVybiB2ZWM0KDAuMCk7XG5cbiAgZm9yIChpbnQgaSA9IDA7IGkgPCBSRUxBWEFUSU9OX0lURVJBVElPTlM7IGkrKykge1xuICAgIHAwICs9IGRLMDtcbiAgICBwMyArPSBkR29hbC53O1xuICAgIGdvYWwgKz0gZEdvYWw7XG4gICAgXG4gICAgdmVjNCByZXN1bHQgPSBpdGVyYXRlKGdvYWwsIHAwLCBwMSwgcDIsIHAzLCBzRyk7XG4gICAgcDEgPSByZXN1bHQueDtcbiAgICBwMiA9IHJlc3VsdC55O1xuICAgIHNHID0gcmVzdWx0Lno7XG4gIH1cblxuICBnb2FsID0gb3JpZ2luYWxHb2FsO1xuXG4gIGZvciAoaW50IGkgPSAwOyBpIDwgTkVXVE9OX0lURVJBVElPTlM7IGkrKykge1xuICAgIHZlYzQgcmVzdWx0ID0gaXRlcmF0ZShnb2FsLCBwMCwgcDEsIHAyLCBwMywgc0cpO1xuICAgIGlmIChyZXN1bHQudyA9PSAxLjApIHtcbiAgICAgIHJlc3VsdC53ID0gc3RlcCgwLjAsIHJlc3VsdC56KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcDEgPSByZXN1bHQueDtcbiAgICBwMiA9IHJlc3VsdC55O1xuICAgIHNHID0gcmVzdWx0Lno7XG4gIH1cblxuICByZXR1cm4gdmVjNChwMSwgcDIsIHNHLCAwLjApO1xufVxuXG5gO1xuXG5jb25zdCBPUFRJTUlaRV9DVUJJQ19LRVJORUwgPSBPUFRJTUlaRV9DVUJJQ19TSEFSRUQgKyBgXG5cbi8vIHdpZHRoOiBzdGF0aW9uICogbGF0aXR1ZGUgaW5kZXhcbi8vIGhlaWdodDogc3RhdGlvbl9jb25uICogbGF0dGljZV9jb25uXG4vL1xuLy8gbGF0dGljZTpcbi8vIHdpZHRoOiBsYXRpdHVkZXNcbi8vIGhlaWdodDogc3RhdGlvbnNcblxudmVjNCBrZXJuZWwoKSB7XG4gIGl2ZWMyIGluZGV4ZXMgPSBpdmVjMihrZXJuZWxQb3NpdGlvbiAqIHZlYzIoa2VybmVsU2l6ZSkpO1xuXG4gIGludCBlbmRTdGF0aW9uID0gaW5kZXhlcy54IC8gbnVtTGF0aXR1ZGVzO1xuICBpbnQgZW5kTGF0aXR1ZGUgPSBpbnQobW9kKGZsb2F0KGluZGV4ZXMueCksIGZsb2F0KG51bUxhdGl0dWRlcykpKTtcblxuICBpbnQgc3RhcnRTdGF0aW9uID0gZW5kU3RhdGlvbiAtIHN0YXRpb25Db25uZWN0aXZpdHkgKyBpbmRleGVzLnkgLyBsYXRpdHVkZUNvbm5lY3Rpdml0eTtcbiAgaW50IHN0YXJ0TGF0aXR1ZGUgPSBlbmRMYXRpdHVkZSAtIGxhdGl0dWRlQ29ubmVjdGl2aXR5IC8gMiArIGludChtb2QoZmxvYXQoaW5kZXhlcy55KSwgZmxvYXQobGF0aXR1ZGVDb25uZWN0aXZpdHkpKSk7XG5cbiAgaWYgKHN0YXJ0U3RhdGlvbiA8IDAgfHwgc3RhcnRTdGF0aW9uID49IG51bVN0YXRpb25zIHx8IHN0YXJ0TGF0aXR1ZGUgPCAwIHx8IHN0YXJ0TGF0aXR1ZGUgPj0gbnVtTGF0aXR1ZGVzKVxuICAgIHJldHVybiB2ZWM0KDAuMCk7XG5cbiAgdmVjNCBzdGFydCA9IHRleGVsRmV0Y2gobGF0dGljZSwgaXZlYzIoc3RhcnRMYXRpdHVkZSwgc3RhcnRTdGF0aW9uKSwgMCk7XG4gIHZlYzQgZW5kID0gdGV4ZWxGZXRjaChsYXR0aWNlLCBpdmVjMihlbmRMYXRpdHVkZSwgZW5kU3RhdGlvbiksIDApO1xuXG4gIHJldHVybiBvcHRpbWl6ZShzdGFydCwgZW5kKTtcbn1cblxuYDtcblxuY29uc3QgT1BUSU1JWkVfQ1VCSUNfRlJPTV9WRUhJQ0xFX0tFUk5FTCA9IE9QVElNSVpFX0NVQklDX1NIQVJFRCArIGBcblxudmVjNCBrZXJuZWwoKSB7XG4gIGl2ZWMyIGluZGV4ZXMgPSBpdmVjMihrZXJuZWxQb3NpdGlvbiAqIHZlYzIoa2VybmVsU2l6ZSkpO1xuXG4gIHZlYzQgc3RhcnQgPSB2ZWM0KDAsIDAsIDAsIGN1cnZWZWhpY2xlKTtcbiAgdmVjNCBlbmQgPSB0ZXhlbEZldGNoKGxhdHRpY2UsIGluZGV4ZXMsIDApO1xuXG4gIHJldHVybiBvcHRpbWl6ZShzdGFydCwgZW5kKTtcbn1cblxuYDtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRVcCgpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyAvLyBDdWJpYyBwYXRocyBiZXR3ZWVuIGxhdHRpY2Ugbm9kZXNcbiAgICAgICAga2VybmVsOiBPUFRJTUlaRV9DVUJJQ19LRVJORUwsXG4gICAgICAgIG91dHB1dDogeyBuYW1lOiAnY3ViaWNQYXRocycsIHJlYWQ6IHRydWUgfSxcbiAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICBsYXR0aWNlOiB7IHR5cGU6ICdzaGFyZWRUZXh0dXJlJyB9LFxuICAgICAgICAgIG51bVN0YXRpb25zOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgbnVtTGF0aXR1ZGVzOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgc3RhdGlvbkNvbm5lY3Rpdml0eTogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgIGxhdGl0dWRlQ29ubmVjdGl2aXR5OiB7IHR5cGU6ICdpbnQnIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgLy8gQ3ViaWMgcGF0aHMgZnJvbSB2ZWhpY2xlIHRvIGxhdHRpY2Ugbm9kZXNcbiAgICAgICAga2VybmVsOiBPUFRJTUlaRV9DVUJJQ19GUk9NX1ZFSElDTEVfS0VSTkVMLFxuICAgICAgICBvdXRwdXQ6IHsgbmFtZTogJ2N1YmljUGF0aHNGcm9tVmVoaWNsZScsIHJlYWQ6IHRydWUgfSxcbiAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICBsYXR0aWNlOiB7IHR5cGU6ICdzaGFyZWRUZXh0dXJlJyB9LFxuICAgICAgICAgIGN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHBvc2UpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyAvLyBDdWJpYyBwYXRocyBiZXR3ZWVuIGxhdHRpY2Ugbm9kZXNcbiAgICAgICAgd2lkdGg6IGNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zICogY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzLFxuICAgICAgICBoZWlnaHQ6IGNvbmZpZy5sYXR0aWNlLnN0YXRpb25Db25uZWN0aXZpdHkgKiBjb25maWcubGF0dGljZS5sYXRpdHVkZUNvbm5lY3Rpdml0eSxcbiAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICBudW1TdGF0aW9uczogY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMsXG4gICAgICAgICAgbnVtTGF0aXR1ZGVzOiBjb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMsXG4gICAgICAgICAgc3RhdGlvbkNvbm5lY3Rpdml0eTogY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSxcbiAgICAgICAgICBsYXRpdHVkZUNvbm5lY3Rpdml0eTogY29uZmlnLmxhdHRpY2UubGF0aXR1ZGVDb25uZWN0aXZpdHksXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IC8vIEN1YmljIHBhdGhzIGZyb20gdmVoaWNsZSB0byBsYXR0aWNlIG5vZGVzXG4gICAgICAgIHdpZHRoOiBjb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMsXG4gICAgICAgIGhlaWdodDogY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSxcbiAgICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgICBjdXJ2VmVoaWNsZTogcG9zZS5jdXJ2XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuICB9XG59XG4iLCJjb25zdCBPUFRJTUlaRV9LRVJORUwgPSBgXG5cbmNvbnN0IGludCBORVdUT05fSVRFUkFUSU9OUyA9IDMyO1xuY29uc3QgaW50IFJFTEFYQVRJT05fSVRFUkFUSU9OUyA9IDMyO1xuY29uc3QgZmxvYXQgQ09OVkVSR0VOQ0VfRVJST1IgPSAwLjAxO1xuXG4vLyBUaGVzZSB0d28gY29uc3RzIG11c3Qgc3RheSBpbiBzeW5jLlxuY29uc3QgaW50IFNJTVBTT05TX0lOVEVSVkFMUyA9IDg7XG5jb25zdCBmbG9hdCBTSU1QU09OU19DT0VGRlNbU0lNUFNPTlNfSU5URVJWQUxTICsgMV0gPSBmbG9hdFtdKDEuMCwgNC4wLCAyLjAsIDQuMCwgMi4wLCA0LjAsIDIuMCwgNC4wLCAxLjApO1xuXG5jb25zdCBmbG9hdCBQSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTtcbmNvbnN0IGZsb2F0IFRXT19QSSA9IFBJICsgUEk7XG5cbmNvbnN0IGZsb2F0IFJFTEFYQVRJT05fSVRFUkFUSU9OU19GID0gZmxvYXQoUkVMQVhBVElPTl9JVEVSQVRJT05TKTtcbmNvbnN0IGZsb2F0IFNJTVBTT05TX0lOVEVSVkFMU19GID0gZmxvYXQoU0lNUFNPTlNfSU5URVJWQUxTKTtcblxuZmxvYXQgd3JhcEFuZ2xlKGZsb2F0IGFuZ2xlKSB7XG4gIGFuZ2xlID0gbW9kKGFuZ2xlLCBUV09fUEkpO1xuICBpZiAoYW5nbGUgPD0gLVBJKSByZXR1cm4gYW5nbGUgKyBUV09fUEk7XG4gIGVsc2UgaWYgKGFuZ2xlID4gUEkpIHJldHVybiBhbmdsZSAtIFRXT19QSTtcbiAgcmV0dXJuIGFuZ2xlO1xufVxuXG52ZWM0IGl0ZXJhdGUodmVjNCBnb2FsLCBmbG9hdCBwMCwgZmxvYXQgcDEsIGZsb2F0IHAyLCBmbG9hdCBwMywgZmxvYXQgcDQsIGZsb2F0IHA1LCBmbG9hdCBzRykge1xuICBmbG9hdCBkcyA9IHNHIC8gU0lNUFNPTlNfSU5URVJWQUxTX0Y7XG4gIGZsb2F0IHNHXzIgPSBzRyAqIHNHO1xuICBmbG9hdCBzR18zID0gc0dfMiAqIHNHO1xuXG4gIHZlYzMgZFhfcCA9IHZlYzMoMC4wKTtcbiAgdmVjMyBkWV9wID0gdmVjMygwLjApO1xuICB2ZWMyIGd1ZXNzID0gdmVjMigwLjApO1xuICBmbG9hdCBzID0gMC4wO1xuXG4gIGZsb2F0IHRoZXRhLCBjb3NUaGV0YSwgc2luVGhldGE7XG4gIHZlYzMgZFRfcDtcblxuICBmb3IgKGludCBpID0gMDsgaSA8PSBTSU1QU09OU19JTlRFUlZBTFM7IGkrKykge1xuICAgIGZsb2F0IGNvZWZmID0gU0lNUFNPTlNfQ09FRkZTW2ldO1xuXG4gICAgZmxvYXQgYSA9IHAwO1xuICAgIGZsb2F0IGIgPSBwMTtcbiAgICBmbG9hdCBjID0gcDIgLyAyLjA7XG4gICAgZmxvYXQgZCA9ICgtNzEuODc1ICogcDAgKyA4MS4wICogcDMgLSAxMC4xMjUgKiBwNCArIHA1IC0gMjEuMjUgKiBwMSAqIHNHIC0gMi43NSAqIHAyICogc0dfMikgLyBzR18zO1xuICAgIGZsb2F0IGUgPSAoMTY2LjUgKiBwMCAtIDIwMi41ICogcDMgKyA0MC41ICogcDQgLSA0LjUgKiBwNSArIDQ1LjAgKiBwMSAqIHNHICsgNC41ICogcDIgKiBzR18yKSAvIChzR18yICogc0dfMik7XG4gICAgZmxvYXQgZiA9ICgtOTUuNjI1ICogcDAgKyAxMjEuNSAqIHAzIC0gMzAuMzc1ICogcDQgKyA0LjUgKiBwNSAtIDI0Ljc1ICogcDEgKiBzRyAtIDIuMjUgKiBwMiAqIHNHXzIpIC8gKHNHXzIgKiBzR18zKTtcblxuICAgIHRoZXRhID0gKCgoKChmICogcyAvIDYuMCArIGUgLyA1LjApICogcyArIGQgLyA0LjApICogcyArIGMgLyAzLjApICogcyArIGIgLyAyLjApICogcyArIGEpICogcztcbiAgICBjb3NUaGV0YSA9IGNvcyh0aGV0YSk7XG4gICAgc2luVGhldGEgPSBzaW4odGhldGEpO1xuXG4gICAgZmxvYXQgc18yID0gcyAqIHM7XG4gICAgZmxvYXQgc19zRyA9IHMgLyBzRztcbiAgICBmbG9hdCBzX3NHXzIgPSBzX3NHICogc19zRztcbiAgICBmbG9hdCBzX3NHXzMgPSBzX3NHXzIgKiBzX3NHO1xuICAgIGZsb2F0IHNfc0dfNCA9IHNfc0dfMyAqIHNfc0c7XG4gICAgZmxvYXQgc19zR181ID0gc19zR180ICogc19zRztcblxuICAgIGRUX3AgPSB2ZWMzKFxuICAgICAgLy8gcDNcbiAgICAgICgoMjAuMjUgKiBzX3NHIC0gNDAuNSkgKiBzX3NHICsgMjAuMjUpICogc19zR18zICogcyxcblxuICAgICAgLy8gcDRcbiAgICAgICgoLTUuMDYyNSAqIHNfc0cgKyA4LjEpICogc19zRyAtIDIuNTMxMjUpICogc19zR18zICogcyxcblxuICAgICAgLy8gc0dcbiAgICAgICg1My45MDYyNSAqIHAwIC0gNjAuNzUgKiBwMyArIDcuNTkzNzUgKiBwNCAtIDAuNzUgKiBwNSkgKiBzX3NHXzQgKyAxMC42MjUgKiBwMSAqIHMgKiBzX3NHXzMgKyAwLjY4NzUgKiBwMiAqIHNfMiAqIHNfc0dfMiArICgtMTMzLjIgKiBwMCArIDE2Mi4wICogcDMgLSAzMi40ICogcDQgKyAzLjYgKiBwNSkgKiBzX3NHXzUgKyAoLTI3LjApICogcDEgKiBzICogc19zR180IC0gMS44ICogcDIgKiBzXzIgKiBzX3NHXzMgKyAoNzkuNjg3NSAqIHAwIC0gMTAxLjI1ICogcDMgKyAyNS4zMTI1ICogcDQgLSAzLjc1ICogcDUpICogc19zR181ICogc19zRyArIDE2LjUgKiBwMSAqIHMgKiBzX3NHXzUgKyAxLjEyNSAqIHAyICogc18yICogc19zR180XG4gICAgKTtcblxuICAgIGRYX3AgLT0gY29lZmYgKiBzaW5UaGV0YSAqIGRUX3A7XG4gICAgZFlfcCArPSBjb2VmZiAqIGNvc1RoZXRhICogZFRfcDtcblxuICAgIGd1ZXNzICs9IGNvZWZmICogdmVjMihjb3NUaGV0YSwgc2luVGhldGEpO1xuXG4gICAgcyArPSBkcztcbiAgfVxuXG4gIGZsb2F0IGhPdmVyMyA9IHNHIC8gU0lNUFNPTlNfSU5URVJWQUxTX0YgLyAzLjA7XG5cbiAgdmVjMyBkZWx0YTtcbiAgZGVsdGEueHkgPSBnb2FsLnh5IC0gZ3Vlc3MgKiBoT3ZlcjM7XG4gIGRlbHRhLnogPSB3cmFwQW5nbGUoZ29hbC56IC0gdGhldGEpO1xuXG4gIGlmIChhYnMoZGVsdGEueCkgKyBhYnMoZGVsdGEueSkgKyBhYnMoZGVsdGEueikgPCBDT05WRVJHRU5DRV9FUlJPUilcbiAgICByZXR1cm4gdmVjNChwMywgcDQsIHNHLCAxLjApO1xuXG4gIGRYX3AueHl6ICo9IGhPdmVyMztcbiAgZFlfcC54eXogKj0gaE92ZXIzO1xuICBkWF9wLnogKz0gY29zVGhldGE7XG4gIGRZX3AueiArPSBzaW5UaGV0YTtcblxuICBtYXQzIGludkphY29iaWFuID0gaW52ZXJzZSh0cmFuc3Bvc2UobWF0MyhkWF9wLCBkWV9wLCBkVF9wKSkpO1xuXG4gIHZlYzMgZGVsdGFQID0gaW52SmFjb2JpYW4gKiBkZWx0YTtcbiAgdmVjNCBwYXJhbXMgPSB2ZWM0KHAzLCBwNCwgc0csIDAuMCk7XG4gIHBhcmFtcy54eXogKz0gZGVsdGFQO1xuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbnZlYzQgb3B0aW1pemUodmVjNCBzdGFydCwgdmVjNCBlbmQpIHtcbiAgLy8gVHJhbnNsYXRlIGFuZCByb3RhdGUgc3RhcnQgYW5kIGVuZCBzbyB0aGF0IHN0YXJ0IGlzIGF0IHRoZSBvcmlnaW5cbiAgZmxvYXQgc2luUm90ID0gc2luKHN0YXJ0LnopO1xuICBmbG9hdCBjb3NSb3QgPSBjb3Moc3RhcnQueik7XG5cbiAgdmVjNCBkaWZmID0gZW5kIC0gc3RhcnQ7XG4gIHZlYzQgZ29hbDtcbiAgZ29hbC54eSA9IG1hdDIoY29zUm90LCAtc2luUm90LCBzaW5Sb3QsIGNvc1JvdCkgKiBkaWZmLnh5O1xuICBnb2FsLnogPSB3cmFwQW5nbGUoZGlmZi56KTtcbiAgZ29hbC53ID0gZW5kLnc7XG5cbiAgdmVjNCBvcmlnaW5hbEdvYWwgPSBnb2FsO1xuICB2ZWM0IGRHb2FsO1xuICBkR29hbC54ID0gMC4wO1xuICBkR29hbC55encgPSBnb2FsLnl6dyAvIFJFTEFYQVRJT05fSVRFUkFUSU9OU19GO1xuICBmbG9hdCBkX0swID0gc3RhcnQudyAvIFJFTEFYQVRJT05fSVRFUkFUSU9OU19GO1xuICBmbG9hdCBkX2RLMCA9IGRDdXJ2VmVoaWNsZSAvIFJFTEFYQVRJT05fSVRFUkFUSU9OU19GO1xuICBmbG9hdCBkX2RkSzAgPSBkZEN1cnZWZWhpY2xlIC8gUkVMQVhBVElPTl9JVEVSQVRJT05TX0Y7XG5cbiAgLy8gUmVsYXggdGhlIGdvYWwgdG8gKHgsIDAsIDAsIDApXG4gIGdvYWwueXp3ID0gdmVjMygwLCAwLCAwKTtcblxuICAvLyBSZWxheCB0aGUgcGFyYW1zIHRvICgwLCAwLCAwLCAwLCBnb2FsLngpXG4gIGZsb2F0IHAwID0gMC4wO1xuICBmbG9hdCBwMSA9IDAuMDtcbiAgZmxvYXQgcDIgPSAwLjA7XG4gIGZsb2F0IHAzID0gMC4wO1xuICBmbG9hdCBwNCA9IDAuMDtcbiAgZmxvYXQgcDUgPSAwLjA7XG4gIGZsb2F0IHNHID0gZ29hbC54O1xuXG4gIGlmIChzRyA8IDAuMSkgcmV0dXJuIHZlYzQoMC4wKTtcblxuICBmb3IgKGludCBpID0gMDsgaSA8IFJFTEFYQVRJT05fSVRFUkFUSU9OUzsgaSsrKSB7XG4gICAgcDAgKz0gZF9LMDtcbiAgICBwMSArPSBkX2RLMDtcbiAgICBwMiArPSBkX2RkSzA7XG4gICAgcDUgKz0gZEdvYWwudztcbiAgICBnb2FsICs9IGRHb2FsO1xuICAgIFxuICAgIHZlYzQgcmVzdWx0ID0gaXRlcmF0ZShnb2FsLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBzRyk7XG4gICAgcDMgPSByZXN1bHQueDtcbiAgICBwNCA9IHJlc3VsdC55O1xuICAgIHNHID0gcmVzdWx0Lno7XG4gIH1cblxuICBnb2FsID0gb3JpZ2luYWxHb2FsO1xuXG4gIGZvciAoaW50IGkgPSAwOyBpIDwgTkVXVE9OX0lURVJBVElPTlM7IGkrKykge1xuICAgIHZlYzQgcmVzdWx0ID0gaXRlcmF0ZShnb2FsLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBzRyk7XG4gICAgaWYgKHJlc3VsdC53ID09IDEuMCkge1xuICAgICAgcmVzdWx0LncgPSBzdGVwKDAuMCwgcmVzdWx0LnopO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwMyA9IHJlc3VsdC54O1xuICAgIHA0ID0gcmVzdWx0Lnk7XG4gICAgc0cgPSByZXN1bHQuejtcbiAgfVxuXG4gIHJldHVybiB2ZWM0KHAzLCBwNCwgc0csIDAuMCk7XG59XG5cbnZlYzQga2VybmVsKCkge1xuICBpdmVjMiBsYXR0aWNlSW5kZXhlcyA9IGl2ZWMyKGtlcm5lbFBvc2l0aW9uICogdmVjMihrZXJuZWxTaXplKSk7XG5cbiAgdmVjNCBzdGFydCA9IHZlYzQoMCwgMCwgMCwgY3VydlZlaGljbGUpO1xuICB2ZWM0IGVuZCA9IHRleGVsRmV0Y2gobGF0dGljZSwgbGF0dGljZUluZGV4ZXMsIDApO1xuXG4gIHJldHVybiBvcHRpbWl6ZShzdGFydCwgZW5kKTtcbn1cblxuYDtcblxuLy8gUXVpbnRpYyBzcGlyYWwgcGF0aCBvcHRpbWl6ZXJcbi8vICAgKiBTdGFydCBvZiBwYXRocyBpcyB0aGUgdmVoaWNsZSBwb3NlXG4vLyAgICAgKiB4LXBvcywgeS1wb3MsIGFuZCByb3RhdGlvbiBhcmVuJ3QgbmVlZGVkLCBzaW5jZSB0aGUgbGF0dGljZSBvcmlnaW4gaXMgdGhlIHZlaGljbGUgcG9zZVxuLy8gICAgICogU28gYXNzdW1lIHBvc2l0aW9uIGFuZCByb3RhdGlvbiBhcmUgMFxuLy8gICAqIEVuZHMgb2YgcGF0aHMgYXJlIGFsbCBsYXRpdHVkZXMgd2l0aGluIHRoZSBmaXJzdCAoc3RhdGlvbkNvbm5lY3Rpdml0eSkgc3RhdGlvbnNcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtlcm5lbDogT1BUSU1JWkVfS0VSTkVMLFxuICAgICAgb3V0cHV0OiB7IG5hbWU6ICdxdWludGljUGF0aHNGcm9tVmVoaWNsZScsIHJlYWQ6IHRydWUgfSxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIGxhdHRpY2U6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH0sXG4gICAgICAgIGN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgZEN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgZGRDdXJ2VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHBvc2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IGNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyxcbiAgICAgIGhlaWdodDogY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIGN1cnZWZWhpY2xlOiBwb3NlLmN1cnYsXG4gICAgICAgIGRDdXJ2VmVoaWNsZTogcG9zZS5kQ3VydixcbiAgICAgICAgZGRDdXJ2VmVoaWNsZTogcG9zZS5kZEN1cnZcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iLCJjb25zdCBTSEFSRURfU0hBREVSID0gYFxuXG5jb25zdCBmbG9hdCBzbWFsbFYgPSAwLjAxO1xudmVjNCBwYXRoU2FtcGxlc1sxMjhdO1xuZmxvYXQgcGF0aFNhbXBsZUN1cnZSYXRlc1sxMjhdO1xuXG5mbG9hdCBjYWxjdWxhdGVBY2NlbGVyYXRpb24oaW50IGluZGV4LCBmbG9hdCBpbml0aWFsVmVsb2NpdHlTcSwgZmxvYXQgZGlzdGFuY2UpIHtcbiAgaWYgKGluZGV4IDw9IDQpIHtcbiAgICAvLyBbYU1heEhhcmQsIGFNaW5IYXJkLCBhTWF4U29mdCwgYU1pblNvZnQsIDBdXG4gICAgcmV0dXJuIGFjY2VsZXJhdGlvblByb2ZpbGVzW2luZGV4XTtcbiAgfSBlbHNlIHtcbiAgICBmbG9hdCBmaW5hbFZlbG9jaXR5ID0gZmluYWxWZWxvY2l0eVByb2ZpbGVzW2luZGV4IC0gNV07XG4gICAgaWYgKGRpc3RhbmNlIDwgMC4wMDEpIHJldHVybiAwLjA7XG4gICAgcmV0dXJuIGNsYW1wKChmaW5hbFZlbG9jaXR5ICogZmluYWxWZWxvY2l0eSAtIGluaXRpYWxWZWxvY2l0eVNxKSAvICgyLjAgKiBkaXN0YW5jZSksIGFjY2VsZXJhdGlvblByb2ZpbGVzWzFdLCBhY2NlbGVyYXRpb25Qcm9maWxlc1swXSk7XG4gIH1cbn1cblxudmVjMiB4eTJzbCh2ZWM0IHh5dGspIHtcbiAgdmVjMiB4eSA9IHh5dGsueHkgKyByZWFyQXhsZVRvQ2VudGVyICogdmVjMihjb3MoeHl0ay56KSwgc2luKHh5dGsueikpO1xuICB2ZWMyIHh5VGV4Q29vcmRzID0gKHh5IC0geHlDZW50ZXJQb2ludCkgLyB2ZWMyKHRleHR1cmVTaXplKHh5c2xNYXAsIDApKSAvIHZlYzIoeHlHcmlkQ2VsbFNpemUpICsgMC41O1xuICByZXR1cm4gdGV4dHVyZSh4eXNsTWFwLCB4eVRleENvb3JkcykueHk7XG59XG5cbmZsb2F0IHNhbXBsZVN0YXRpY0Nvc3QodmVjNCB4eXRrKSB7XG4gIHZlYzIgc2wgPSB4eTJzbCh4eXRrKTtcbiAgdmVjMiBzbFRleENvb3JkcyA9IChzbCAtIHNsQ2VudGVyUG9pbnQpIC8gdmVjMih0ZXh0dXJlU2l6ZShzbE9ic3RhY2xlR3JpZCwgMCkpIC8gdmVjMihzbEdyaWRDZWxsU2l6ZSkgKyAwLjU7XG4gIGZsb2F0IG9ic3RhY2xlQ29zdCA9IHRleHR1cmUoc2xPYnN0YWNsZUdyaWQsIHNsVGV4Q29vcmRzKS5yO1xuXG4gIGlmIChvYnN0YWNsZUNvc3QgPj0gMC43NSkgcmV0dXJuIC0xLjA7IC8vIEluZmluaXRlIGNvc3RcblxuICBvYnN0YWNsZUNvc3QgPSBzdGVwKDAuMjUsIG9ic3RhY2xlQ29zdCkgKiBvYnN0YWNsZUhhemFyZENvc3Q7XG5cbiAgZmxvYXQgYWJzTGF0aXR1ZGUgPSBhYnMoc2wueSk7XG4gIGlmIChhYnNMYXRpdHVkZSA+PSBsYW5lU2hvdWxkZXJMYXRpdHVkZSkgcmV0dXJuIC0xLjA7XG5cbiAgZmxvYXQgbGFuZUNvc3QgPSBhYnMoYWJzTGF0aXR1ZGUgLSBsYW5lQ2VudGVyTGF0aXR1ZGUpICogbGFuZUNvc3RTbG9wZSArIHN0ZXAoMC4wLCAtc2wueSAqIHNpZ24obGFuZVByZWZlcmVuY2UpKSAqIGxhbmVQcmVmZXJlbmNlRGlzY291bnQ7XG5cbiAgcmV0dXJuIG9ic3RhY2xlQ29zdCArIGxhbmVDb3N0O1xufVxuXG5mbG9hdCBzYW1wbGVEeW5hbWljQ29zdCh2ZWM0IHh5dGssIGZsb2F0IHRpbWUsIGZsb2F0IHZlbG9jaXR5LCBmbG9hdCBhY2NlbGVyYXRpb24pIHtcbiAgdmVjMiBzbCA9IHh5MnNsKHh5dGspO1xuICB2ZWMyIHNsVGV4Q29vcmRzID0gKHNsIC0gc2xDZW50ZXJQb2ludCkgLyB2ZWMyKHRleHR1cmVTaXplKHNsRHluYW1pY09ic3RhY2xlR3JpZCwgMCkueHkpIC8gdmVjMihzbEdyaWRDZWxsU2l6ZSkgKyAwLjU7XG4gIGZsb2F0IGR5bmFtaWNGcmFtZSA9IGZsb29yKHRpbWUgLyBkeW5hbWljRnJhbWVUaW1lKTtcblxuICBmbG9hdCBvYnN0YWNsZUNvc3QgPSB0ZXh0dXJlKHNsRHluYW1pY09ic3RhY2xlR3JpZCwgdmVjMyhzbFRleENvb3JkcywgZHluYW1pY0ZyYW1lKSkucjtcblxuICBpZiAob2JzdGFjbGVDb3N0ID4gMC43NSkgcmV0dXJuIC0xLjA7IC8vIEluZmluaXRlIGNvc3RcblxuICByZXR1cm4gc3RlcCgwLjI1LCBvYnN0YWNsZUNvc3QpICogb2JzdGFjbGVIYXphcmRDb3N0O1xufVxuXG5mbG9hdCBjYWxjdWxhdGVBdmVyYWdlU3RhdGljQ29zdChpbnQgbnVtU2FtcGxlcykge1xuICBmbG9hdCBhdmVyYWdlU3RhdGljQ29zdCA9IDAuMDtcblxuICBmb3IgKGludCBpID0gMDsgaSA8IG51bVNhbXBsZXM7IGkrKykge1xuICAgIGZsb2F0IGNvc3QgPSBzYW1wbGVTdGF0aWNDb3N0KHBhdGhTYW1wbGVzW2ldKTtcblxuICAgIGlmIChjb3N0IDwgMC4wKSByZXR1cm4gY29zdDtcblxuICAgIGF2ZXJhZ2VTdGF0aWNDb3N0ICs9IGNvc3Q7XG4gIH1cblxuICBhdmVyYWdlU3RhdGljQ29zdCAvPSBmbG9hdChudW1TYW1wbGVzKTtcblxuICByZXR1cm4gYXZlcmFnZVN0YXRpY0Nvc3Q7XG59XG5cbmZsb2F0IGNhbGN1bGF0ZUF2ZXJhZ2VEeW5hbWljQ29zdChpbnQgbnVtU2FtcGxlcywgZmxvYXQgcGF0aExlbmd0aCwgZmxvYXQgaW5pdGlhbFRpbWUsIGZsb2F0IGluaXRpYWxWZWxvY2l0eSwgZmxvYXQgYWNjZWxlcmF0aW9uLCBmbG9hdCBhYmFuZG9uVGhyZXNob2xkKSB7XG4gIGZsb2F0IHMgPSAwLjA7XG4gIGZsb2F0IGRzID0gcGF0aExlbmd0aCAvIGZsb2F0KG51bVNhbXBsZXMgLSAxKTtcbiAgZmxvYXQgYXZlcmFnZUR5bmFtaWNDb3N0ID0gMC4wO1xuICBmbG9hdCBtYXhWZWxvY2l0eSA9IDAuMDtcbiAgZmxvYXQgbWF4TGF0ZXJhbEFjY2VsZXJhdGlvbiA9IDAuMDtcbiAgZmxvYXQgbnVtU2FtcGxlc19mID0gZmxvYXQobnVtU2FtcGxlcyk7XG5cbiAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1TYW1wbGVzOyBpKyspIHtcbiAgICB2ZWM0IHBhdGhTYW1wbGUgPSBwYXRoU2FtcGxlc1tpXTsgLy8gdmVjNCh4LXBvcywgeS1wb3MsIHRoZXRhIChyb3RhdGlvbiksIGthcHBhIChjdXJ2YXR1cmUpKVxuXG4gICAgZmxvYXQgdmVsb2NpdHlTcSA9IDIuMCAqIGFjY2VsZXJhdGlvbiAqIHMgKyBpbml0aWFsVmVsb2NpdHkgKiBpbml0aWFsVmVsb2NpdHk7XG4gICAgZmxvYXQgdmVsb2NpdHkgPSBtYXgoc21hbGxWLCBzcXJ0KG1heCgwLjAsIHZlbG9jaXR5U3EpKSk7XG4gICAgbWF4VmVsb2NpdHkgPSBtYXgobWF4VmVsb2NpdHksIHZlbG9jaXR5KTtcbiAgICBtYXhMYXRlcmFsQWNjZWxlcmF0aW9uID0gbWF4KG1heExhdGVyYWxBY2NlbGVyYXRpb24sIGFicyhwYXRoU2FtcGxlLncgKiB2ZWxvY2l0eSAqIHZlbG9jaXR5KSk7XG5cbiAgICBmbG9hdCB0aW1lID0gMi4wICogcyAvIChpbml0aWFsVmVsb2NpdHkgKyB2ZWxvY2l0eSkgKyBpbml0aWFsVGltZTtcblxuICAgIGZsb2F0IGRDdXJ2ID0gcGF0aFNhbXBsZUN1cnZSYXRlc1tpXSAqIHZlbG9jaXR5O1xuICAgIGlmIChkQ3VydiA+IGRDdXJ2YXR1cmVNYXgpIHJldHVybiAtMS4wO1xuXG4gICAgZmxvYXQgY29zdCA9IHNhbXBsZUR5bmFtaWNDb3N0KHBhdGhTYW1wbGUsIHRpbWUsIHZlbG9jaXR5LCBhY2NlbGVyYXRpb24pO1xuICAgIGlmIChjb3N0IDwgMC4wKSByZXR1cm4gY29zdDtcblxuICAgIGF2ZXJhZ2VEeW5hbWljQ29zdCArPSBjb3N0O1xuICAgIGlmIChhdmVyYWdlRHluYW1pY0Nvc3QgLyBudW1TYW1wbGVzX2YgPj0gYWJhbmRvblRocmVzaG9sZCkgcmV0dXJuIC0xLjA7XG5cbiAgICBzICs9IGRzO1xuICB9XG5cbiAgYXZlcmFnZUR5bmFtaWNDb3N0IC89IG51bVNhbXBsZXNfZjtcblxuICAvLyBBcHBseSBzcGVlZGluZyBwZW5hbGl0eSBpZiBhbnkgdmVsb2NpdHkgYWxvbmcgdGhlIHRyYWplY3RvcnkgaXMgb3ZlciB0aGUgc3BlZWQgbGltaXRcbiAgYXZlcmFnZUR5bmFtaWNDb3N0ICs9IHN0ZXAoc3BlZWRMaW1pdCwgbWF4VmVsb2NpdHkpICogc3BlZWRMaW1pdFBlbmFsdHk7XG5cbiAgLy8gQXBwbHkgaGFyZCBhY2NlbGVyYXRpb24vZGVjZWxlcmF0aW9uIHBlbmFsdGllcyBpZiB0aGUgYWNjZWxlcmF0aW9uL2RlY2VsZXJhdGlvbiBleGNlZWRzIHRoZSBzb2Z0IGxpbWl0c1xuICBhdmVyYWdlRHluYW1pY0Nvc3QgKz0gc3RlcChhY2NlbGVyYXRpb25Qcm9maWxlc1syXSArIDAuMDAwMSwgYWNjZWxlcmF0aW9uKSAqIGhhcmRBY2NlbGVyYXRpb25QZW5hbHR5O1xuICBhdmVyYWdlRHluYW1pY0Nvc3QgKz0gKDEuMCAtIHN0ZXAoYWNjZWxlcmF0aW9uUHJvZmlsZXNbM10sIGFjY2VsZXJhdGlvbikpICogaGFyZERlY2VsZXJhdGlvblBlbmFsdHk7XG5cbiAgLy8gUGVuYWxpemUgbGF0ZXJhbCBhY2NlbGVyYXRpb25cbiAgYXZlcmFnZUR5bmFtaWNDb3N0ICs9IHN0ZXAoc29mdExhdGVyYWxBY2NlbGVyYXRpb25MaW1pdCwgbWF4TGF0ZXJhbEFjY2VsZXJhdGlvbikgKiBzb2Z0TGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHk7XG4gIGF2ZXJhZ2VEeW5hbWljQ29zdCArPSBsaW5lYXJMYXRlcmFsQWNjZWxlcmF0aW9uUGVuYWx0eSAqIG1heExhdGVyYWxBY2NlbGVyYXRpb247XG5cbiAgcmV0dXJuIGF2ZXJhZ2VEeW5hbWljQ29zdDtcbn1cblxudmVjMyBjYWxjdWxhdGVBVlQoaW50IGFjY2VsZXJhdGlvbkluZGV4LCBmbG9hdCBpbml0aWFsVmVsb2NpdHksIGZsb2F0IGluaXRpYWxUaW1lLCBmbG9hdCBwYXRoTGVuZ3RoKSB7XG4gIGZsb2F0IGluaXRpYWxWZWxvY2l0eVNxID0gaW5pdGlhbFZlbG9jaXR5ICogaW5pdGlhbFZlbG9jaXR5O1xuICBmbG9hdCBhY2NlbGVyYXRpb24gPSBjYWxjdWxhdGVBY2NlbGVyYXRpb24oYWNjZWxlcmF0aW9uSW5kZXgsIGluaXRpYWxWZWxvY2l0eVNxLCBwYXRoTGVuZ3RoKTtcblxuICBmbG9hdCBmaW5hbFZlbG9jaXR5U3EgPSAyLjAgKiBhY2NlbGVyYXRpb24gKiBwYXRoTGVuZ3RoICsgaW5pdGlhbFZlbG9jaXR5U3E7XG4gIGZsb2F0IGZpbmFsVmVsb2NpdHkgPSBtYXgoc21hbGxWLCBzcXJ0KG1heCgwLjAsIGZpbmFsVmVsb2NpdHlTcSkpKTtcblxuICBmbG9hdCBmaW5hbFRpbWUgPSBpbml0aWFsVGltZTtcblxuICBpZiAoYWNjZWxlcmF0aW9uID09IDAuMCkge1xuICAgIGZpbmFsVGltZSArPSBwYXRoTGVuZ3RoIC8gZmluYWxWZWxvY2l0eTtcbiAgfSBlbHNlIGlmIChmaW5hbFZlbG9jaXR5U3EgPD0gMC4wKSB7IC8vIENhbGN1bGF0ZSBmaW5hbCB0aW1lIGlmIHRoZSB2ZWhpY2xlIHN0b3BzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSB0cmFqZWN0b3J5XG4gICAgZmxvYXQgZGlzdGFuY2VMZWZ0ID0gcGF0aExlbmd0aCAtIChzbWFsbFYgKiBzbWFsbFYgLSBpbml0aWFsVmVsb2NpdHlTcSkgLyAoMi4wICogYWNjZWxlcmF0aW9uKTtcbiAgICBmaW5hbFRpbWUgKz0gKGZpbmFsVmVsb2NpdHkgLSBpbml0aWFsVmVsb2NpdHkpIC8gYWNjZWxlcmF0aW9uICsgZGlzdGFuY2VMZWZ0IC8gc21hbGxWO1xuICB9IGVsc2Uge1xuICAgIGZpbmFsVGltZSArPSAyLjAgKiBwYXRoTGVuZ3RoIC8gKGZpbmFsVmVsb2NpdHkgKyBpbml0aWFsVmVsb2NpdHkpO1xuICB9XG5cbiAgcmV0dXJuIHZlYzMoYWNjZWxlcmF0aW9uLCBmaW5hbFZlbG9jaXR5LCBmaW5hbFRpbWUpO1xufVxuXG5gO1xuXG5jb25zdCBTQU1QTEVfQ1VCSUNfUEFUSF9GTiA9IGBcblxuaW50IHNhbXBsZUN1YmljUGF0aCh2ZWM0IHN0YXJ0LCB2ZWM0IGVuZCwgdmVjNCBjdWJpY1BhdGhQYXJhbXMpIHtcbiAgZmxvYXQgcDAgPSBzdGFydC53O1xuICBmbG9hdCBwMSA9IGN1YmljUGF0aFBhcmFtcy54O1xuICBmbG9hdCBwMiA9IGN1YmljUGF0aFBhcmFtcy55O1xuICBmbG9hdCBwMyA9IGVuZC53O1xuICBmbG9hdCBzRyA9IGN1YmljUGF0aFBhcmFtcy56O1xuXG4gIGlmIChzRyA8PSAwLjApIHJldHVybiAwO1xuXG4gIGludCBudW1TYW1wbGVzID0gaW50KGNlaWwoc0cgLyBwYXRoU2FtcGxpbmdTdGVwKSkgKyAxO1xuXG4gIGZsb2F0IHNHXzIgPSBzRyAqIHNHO1xuICBmbG9hdCBzR18zID0gc0dfMiAqIHNHO1xuXG4gIGZsb2F0IGEgPSBwMDtcbiAgZmxvYXQgYiA9ICgtNS41ICogcDAgKyA5LjAgKiBwMSAtIDQuNSAqIHAyICsgcDMpIC8gc0c7XG4gIGZsb2F0IGMgPSAoOS4wICogcDAgLSAyMi41ICogcDEgKyAxOC4wICogcDIgLSA0LjUgKiBwMykgLyBzR18yO1xuICBmbG9hdCBkID0gKC00LjUgKiAocDAgLSAzLjAgKiBwMSArIDMuMCAqIHAyIC0gcDMpKSAvIHNHXzM7XG5cbiAgcGF0aFNhbXBsZXNbMF0gPSBzdGFydDtcblxuICBmbG9hdCBkcyA9IHNHIC8gZmxvYXQobnVtU2FtcGxlcyAtIDEpO1xuICBmbG9hdCBzID0gZHM7XG4gIHZlYzIgZHh5ID0gdmVjMigwKTtcbiAgdmVjMiBwcmV2Q29zU2luID0gdmVjMihjb3Moc3RhcnQueiksIHNpbihzdGFydC56KSk7XG5cbiAgZm9yIChpbnQgaSA9IDE7IGkgPCBudW1TYW1wbGVzOyBpKyspIHtcbiAgICBmbG9hdCByb3QgPSAoKChkICogcyAvIDQuMCArIGMgLyAzLjApICogcyArIGIgLyAyLjApICogcyArIGEpICogcyArIHN0YXJ0Lno7XG4gICAgZmxvYXQgY3VydiA9ICgoZCAqIHMgKyBjKSAqIHMgKyBiKSAqIHMgKyBhO1xuXG4gICAgdmVjMiBjb3NTaW4gPSB2ZWMyKGNvcyhyb3QpLCBzaW4ocm90KSk7XG4gICAgZHh5ID0gZHh5ICogdmVjMihmbG9hdChpIC0gMSkgLyBmbG9hdChpKSkgKyAoY29zU2luICsgcHJldkNvc1NpbikgLyB2ZWMyKDIgKiBpKTtcblxuICAgIHBhdGhTYW1wbGVzW2ldID0gdmVjNChkeHkgKiB2ZWMyKHMpICsgc3RhcnQueHksIHJvdCwgY3Vydik7XG4gICAgcGF0aFNhbXBsZUN1cnZSYXRlc1tpXSA9IGIgKyBzICogKDIuMCAqIGMgKyAzLjAgKiBkICogcyk7XG5cbiAgICBzICs9IGRzO1xuICAgIHByZXZDb3NTaW4gPSBjb3NTaW47XG4gIH1cblxuICByZXR1cm4gbnVtU2FtcGxlcztcbn1cblxuYDtcblxuY29uc3QgU0FNUExFX1FVSU5USUNfUEFUSF9GTiA9IGBcblxuaW50IHNhbXBsZVF1aW50aWNQYXRoKHZlYzQgc3RhcnQsIHZlYzQgZW5kLCB2ZWM0IHF1aW50aWNQYXRoUGFyYW1zKSB7XG4gIGZsb2F0IHAwID0gc3RhcnQudztcbiAgZmxvYXQgcDEgPSBkQ3VydlZlaGljbGU7XG4gIGZsb2F0IHAyID0gZGRDdXJ2VmVoaWNsZTtcbiAgZmxvYXQgcDMgPSBxdWludGljUGF0aFBhcmFtcy54O1xuICBmbG9hdCBwNCA9IHF1aW50aWNQYXRoUGFyYW1zLnk7XG4gIGZsb2F0IHA1ID0gZW5kLnc7XG4gIGZsb2F0IHNHID0gcXVpbnRpY1BhdGhQYXJhbXMuejtcblxuICBpZiAoc0cgPD0gMC4wKSByZXR1cm4gMDtcblxuICBpbnQgbnVtU2FtcGxlcyA9IGludChjZWlsKHNHIC8gcGF0aFNhbXBsaW5nU3RlcCkpICsgMTtcblxuICBmbG9hdCBzR18yID0gc0cgKiBzRztcbiAgZmxvYXQgc0dfMyA9IHNHXzIgKiBzRztcblxuICBmbG9hdCBhID0gcDA7XG4gIGZsb2F0IGIgPSBwMTtcbiAgZmxvYXQgYyA9IHAyIC8gMi4wO1xuICBmbG9hdCBkID0gKC03MS44NzUgKiBwMCArIDgxLjAgKiBwMyAtIDEwLjEyNSAqIHA0ICsgcDUgLSAyMS4yNSAqIHAxICogc0cgLSAyLjc1ICogcDIgKiBzR18yKSAvIHNHXzM7XG4gIGZsb2F0IGUgPSAoMTY2LjUgKiBwMCAtIDIwMi41ICogcDMgKyA0MC41ICogcDQgLSA0LjUgKiBwNSArIDQ1LjAgKiBwMSAqIHNHICsgNC41ICogcDIgKiBzR18yKSAvIChzR18yICogc0dfMik7XG4gIGZsb2F0IGYgPSAoLTk1LjYyNSAqIHAwICsgMTIxLjUgKiBwMyAtIDMwLjM3NSAqIHA0ICsgNC41ICogcDUgLSAyNC43NSAqIHAxICogc0cgLSAyLjI1ICogcDIgKiBzR18yKSAvIChzR18yICogc0dfMyk7XG5cbiAgcGF0aFNhbXBsZXNbMF0gPSBzdGFydDtcblxuICBmbG9hdCBkcyA9IHNHIC8gZmxvYXQobnVtU2FtcGxlcyAtIDEpO1xuICBmbG9hdCBzID0gZHM7XG4gIHZlYzIgZHh5ID0gdmVjMigwKTtcbiAgdmVjMiBwcmV2Q29zU2luID0gdmVjMihjb3Moc3RhcnQueiksIHNpbihzdGFydC56KSk7XG5cbiAgZm9yIChpbnQgaSA9IDE7IGkgPCBudW1TYW1wbGVzOyBpKyspIHtcbiAgICBmbG9hdCByb3QgPSAoKCgoKGYgKiBzIC8gNi4wICsgZSAvIDUuMCkgKiBzICsgZCAvIDQuMCkgKiBzICsgYyAvIDMuMCkgKiBzICsgYiAvIDIuMCkgKiBzICsgYSkgKiBzICsgc3RhcnQuejtcbiAgICBmbG9hdCBjdXJ2ID0gKCgoKGYgKiBzICsgZSkgKiBzICsgZCkgKiBzICsgYykgKiBzICsgYikgKiBzICsgYTtcblxuICAgIHZlYzIgY29zU2luID0gdmVjMihjb3Mocm90KSwgc2luKHJvdCkpO1xuICAgIGR4eSA9IGR4eSAqIHZlYzIoZmxvYXQoaSAtIDEpIC8gZmxvYXQoaSkpICsgKGNvc1NpbiArIHByZXZDb3NTaW4pIC8gdmVjMigyICogaSk7XG5cbiAgICBwYXRoU2FtcGxlc1tpXSA9IHZlYzQoZHh5ICogdmVjMihzKSArIHN0YXJ0Lnh5LCByb3QsIGN1cnYpO1xuICAgIHBhdGhTYW1wbGVDdXJ2UmF0ZXNbaV0gPSBiICsgcyAqICgyLjAgKiBjICsgcyAqICgzLjAgKiBkICsgcyAqICg0LjAgKiBlICsgNS4wICogZiAqIHMpKSk7XG5cbiAgICBzICs9IGRzO1xuICAgIHByZXZDb3NTaW4gPSBjb3NTaW47XG4gIH1cblxuICByZXR1cm4gbnVtU2FtcGxlcztcbn1cblxuYDtcblxuY29uc3QgTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyA9IDg7XG5jb25zdCBOVU1fVkVMT0NJVFlfUkFOR0VTID0gNDtcbmNvbnN0IE5VTV9USU1FX1JBTkdFUyA9IDI7XG5cbmNvbnN0IFNIQVJFRF9VTklGT1JNUyA9IHtcbiAgeHlzbE1hcDogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScgfSxcbiAgc2xPYnN0YWNsZUdyaWQ6IHsgdHlwZTogJ291dHB1dFRleHR1cmUnLCBuYW1lOiAnc2xPYnN0YWNsZUdyaWREaWxhdGVkJyB9LFxuICBzbER5bmFtaWNPYnN0YWNsZUdyaWQ6IHsgdHlwZTogJ291dHB1dFRleHR1cmUnLCBuYW1lOiAnc2xEeW5hbWljT2JzdGFjbGVHcmlkJywgdGV4dHVyZVR5cGU6ICcyREFycmF5JyB9LFxuICBhY2NlbGVyYXRpb25Qcm9maWxlczogeyB0eXBlOiAnZmxvYXQnLCBsZW5ndGg6IDUgfSxcbiAgZmluYWxWZWxvY2l0eVByb2ZpbGVzOiB7IHR5cGU6ICdmbG9hdCcsIGxlbmd0aDogMyB9LFxuICB4eUNlbnRlclBvaW50OiB7IHR5cGU6ICd2ZWMyJyB9LFxuICB4eUdyaWRDZWxsU2l6ZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIHNsQ2VudGVyUG9pbnQ6IHsgdHlwZTogJ3ZlYzInIH0sXG4gIHNsR3JpZENlbGxTaXplOiB7IHR5cGU6ICdmbG9hdCd9LFxuICBsYW5lQ2VudGVyTGF0aXR1ZGU6IHsgdHlwZTogJ2Zsb2F0J30sXG4gIGxhbmVTaG91bGRlckxhdGl0dWRlOiB7IHR5cGU6ICdmbG9hdCd9LFxuICBsYW5lQ29zdFNsb3BlOiB7IHR5cGU6ICdmbG9hdCd9LFxuICBsYW5lUHJlZmVyZW5jZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIGxhbmVQcmVmZXJlbmNlRGlzY291bnQ6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICBvYnN0YWNsZUhhemFyZENvc3Q6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICBzcGVlZExpbWl0OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgc3BlZWRMaW1pdFBlbmFsdHk6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICBoYXJkQWNjZWxlcmF0aW9uUGVuYWx0eTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIGhhcmREZWNlbGVyYXRpb25QZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgc29mdExhdGVyYWxBY2NlbGVyYXRpb25MaW1pdDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIHNvZnRMYXRlcmFsQWNjZWxlcmF0aW9uUGVuYWx0eTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIGxpbmVhckxhdGVyYWxBY2NlbGVyYXRpb25QZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgZEN1cnZhdHVyZU1heDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gIHBhdGhTYW1wbGluZ1N0ZXA6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICByZWFyQXhsZVRvQ2VudGVyOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgZHluYW1pY0ZyYW1lVGltZTogeyB0eXBlOiAnZmxvYXQnIH1cbn07XG5cbmZ1bmN0aW9uIGJ1aWxkVW5pZm9ybVZhbHVlcyhjb25maWcsIHh5Q2VudGVyUG9pbnQsIHNsQ2VudGVyUG9pbnQsIGR5bmFtaWNGcmFtZVRpbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBhY2NlbGVyYXRpb25Qcm9maWxlczogWzMuNSwgLTYuNSwgMi4wLCAtMy4wLCAwXSxcbiAgICBmaW5hbFZlbG9jaXR5UHJvZmlsZXM6IFswLjk5OSAqIGNvbmZpZy5zcGVlZExpbWl0LCAxLjAsIDAuMDFdLFxuICAgIHh5Q2VudGVyUG9pbnQ6IFt4eUNlbnRlclBvaW50LngsIHh5Q2VudGVyUG9pbnQueV0sXG4gICAgeHlHcmlkQ2VsbFNpemU6IGNvbmZpZy54eUdyaWRDZWxsU2l6ZSxcbiAgICBzbENlbnRlclBvaW50OiBbc2xDZW50ZXJQb2ludC54LCBzbENlbnRlclBvaW50LnldLFxuICAgIHNsR3JpZENlbGxTaXplOiBjb25maWcuc2xHcmlkQ2VsbFNpemUsXG4gICAgbGFuZUNlbnRlckxhdGl0dWRlOiBjb25maWcubGFuZUNlbnRlckxhdGl0dWRlLFxuICAgIGxhbmVTaG91bGRlckxhdGl0dWRlOiBjb25maWcubGFuZVNob3VsZGVyTGF0aXR1ZGUsXG4gICAgbGFuZUNvc3RTbG9wZTogY29uZmlnLmxhbmVDb3N0U2xvcGUsXG4gICAgbGFuZVByZWZlcmVuY2U6IGNvbmZpZy5sYW5lUHJlZmVyZW5jZSxcbiAgICBsYW5lUHJlZmVyZW5jZURpc2NvdW50OiBjb25maWcubGFuZVByZWZlcmVuY2VEaXNjb3VudCxcbiAgICBvYnN0YWNsZUhhemFyZENvc3Q6IGNvbmZpZy5vYnN0YWNsZUhhemFyZENvc3QsXG4gICAgc3BlZWRMaW1pdDogY29uZmlnLnNwZWVkTGltaXQsXG4gICAgc3BlZWRMaW1pdFBlbmFsdHk6IGNvbmZpZy5zcGVlZExpbWl0UGVuYWx0eSxcbiAgICBoYXJkQWNjZWxlcmF0aW9uUGVuYWx0eTogY29uZmlnLmhhcmRBY2NlbGVyYXRpb25QZW5hbHR5LFxuICAgIGhhcmREZWNlbGVyYXRpb25QZW5hbHR5OiBjb25maWcuaGFyZERlY2VsZXJhdGlvblBlbmFsdHksXG4gICAgc29mdExhdGVyYWxBY2NlbGVyYXRpb25MaW1pdDogY29uZmlnLnNvZnRMYXRlcmFsQWNjZWxlcmF0aW9uTGltaXQsXG4gICAgc29mdExhdGVyYWxBY2NlbGVyYXRpb25QZW5hbHR5OiBjb25maWcuc29mdExhdGVyYWxBY2NlbGVyYXRpb25QZW5hbHR5LFxuICAgIGxpbmVhckxhdGVyYWxBY2NlbGVyYXRpb25QZW5hbHR5OiBjb25maWcubGluZWFyTGF0ZXJhbEFjY2VsZXJhdGlvblBlbmFsdHksXG4gICAgZEN1cnZhdHVyZU1heDogY29uZmlnLmRDdXJ2YXR1cmVNYXgsXG4gICAgcGF0aFNhbXBsaW5nU3RlcDogY29uZmlnLnBhdGhTYW1wbGluZ1N0ZXAsXG4gICAgcmVhckF4bGVUb0NlbnRlcjogY29uZmlnLnJlYXJBeGxlVG9DZW50ZXIsXG4gICAgZHluYW1pY0ZyYW1lVGltZTogZHluYW1pY0ZyYW1lVGltZVxuICB9O1xufVxuXG5leHBvcnQge1xuICBTSEFSRURfU0hBREVSLFxuICBTQU1QTEVfQ1VCSUNfUEFUSF9GTixcbiAgU0FNUExFX1FVSU5USUNfUEFUSF9GTixcblxuICBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTLFxuICBOVU1fVkVMT0NJVFlfUkFOR0VTLFxuICBOVU1fVElNRV9SQU5HRVMsXG5cbiAgU0hBUkVEX1VOSUZPUk1TLFxuICBidWlsZFVuaWZvcm1WYWx1ZXNcbn1cbiIsImltcG9ydCB7IFNIQVJFRF9TSEFERVIsIFNBTVBMRV9DVUJJQ19QQVRIX0ZOLCBTQU1QTEVfUVVJTlRJQ19QQVRIX0ZOLCBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTLCBTSEFSRURfVU5JRk9STVMsIGJ1aWxkVW5pZm9ybVZhbHVlcyB9IGZyb20gXCIuL2dyYXBoU2VhcmNoU2hhcmVkLmpzXCI7XG5cbmZ1bmN0aW9uIGZyb21WZWhpY2xlUGF0aENvc3RzS2VybmVsKHBhdGhUeXBlKSB7XG4gIHJldHVybiBTSEFSRURfU0hBREVSICsgKHBhdGhUeXBlID09ICdjdWJpYycgPyBTQU1QTEVfQ1VCSUNfUEFUSF9GTiA6IFNBTVBMRV9RVUlOVElDX1BBVEhfRk4pICtcblxuYFxuXG4vKiBDYWxjdWxhdGUgY29zdCBvZiBhIHtjdWJpY3xxdWludGljfSBwYXRoIGZyb20gdmVoaWNsZSB0byAoc3RhdGlvbkNvbm5lY3Rpdml0eSAqIG51bUxhdGl0dWRlcyAqIG51bUFjY2VsZXJhdGlvbnMpIG5vZGVzXG4gKiAgIHdpZHRoOiBudW1MYXRpdHVkZXNcbiAqICAgaGVpZ2h0OiBzdGF0aW9uICogbnVtQWNjZWxlcmF0aW9uc1xuICovXG52ZWM0IGtlcm5lbCgpIHtcbiAgaXZlYzIgaW5kZXhlcyA9IGl2ZWMyKGtlcm5lbFBvc2l0aW9uICogdmVjMihrZXJuZWxTaXplKSk7XG5cbiAgaW50IGxhdGl0dWRlID0gaW5kZXhlcy54O1xuICBpbnQgc3RhdGlvbiA9IGluZGV4ZXMueSAvIG51bUFjY2VsZXJhdGlvbnM7XG4gIGludCBhY2NlbGVyYXRpb25JbmRleCA9IGludChtb2QoZmxvYXQoaW5kZXhlcy55KSwgZmxvYXQobnVtQWNjZWxlcmF0aW9ucykpKTtcblxuICB2ZWM0IHBhdGhTdGFydCA9IHZlYzQoMCwgMCwgMCwgY3VydlZlaGljbGUpO1xuICB2ZWM0IHBhdGhFbmQgPSB0ZXhlbEZldGNoKGxhdHRpY2UsIGl2ZWMyKGxhdGl0dWRlLCBzdGF0aW9uKSwgMCk7XG5cbiAgdmVjNCBwYXRoUGFyYW1zID0gdGV4ZWxGZXRjaChwYXRoc0Zyb21WZWhpY2xlLCBpdmVjMihsYXRpdHVkZSwgc3RhdGlvbiksIDApO1xuXG4gIC8vIElmIHRoZSBwYXRoIGRpZG4ndCBjb252ZXJnZVxuICBpZiAocGF0aFBhcmFtcy53ID09IDAuMCkgcmV0dXJuIHZlYzQoLTEpO1xuXG4gIGludCBudW1TYW1wbGVzID0gJHtwYXRoVHlwZSA9PSAnY3ViaWMnID8gJ3NhbXBsZUN1YmljUGF0aCcgOiAnc2FtcGxlUXVpbnRpY1BhdGgnfShwYXRoU3RhcnQsIHBhdGhFbmQsIHBhdGhQYXJhbXMpO1xuICBmbG9hdCBwYXRoTGVuZ3RoID0gcGF0aFBhcmFtcy56O1xuXG4gIGlmIChudW1TYW1wbGVzIDwgMikgcmV0dXJuIHZlYzQoLTEpO1xuXG4gIGZsb2F0IGF2ZXJhZ2VTdGF0aWNDb3N0ID0gY2FsY3VsYXRlQXZlcmFnZVN0YXRpY0Nvc3QobnVtU2FtcGxlcyk7XG4gIGlmIChhdmVyYWdlU3RhdGljQ29zdCA8IDAuMCkgcmV0dXJuIHZlYzQoLTEpO1xuXG4gIGludCBzbEluZGV4ID0gc3RhdGlvbiAqIGtlcm5lbFNpemUueCArIGxhdGl0dWRlO1xuICBmbG9hdCBoeXN0ZXJlc2lzQWRqdXN0bWVudCA9IChzbEluZGV4ID09IGZpcnN0TGF0dGljZVBvaW50IHx8IHNsSW5kZXggPT0gc2Vjb25kTGF0dGljZVBvaW50KSA/ICAwLjAgOiBoeXN0ZXJlc2lzRGlzY291bnQ7XG4gIGF2ZXJhZ2VTdGF0aWNDb3N0ICs9IGh5c3RlcmVzaXNBZGp1c3RtZW50O1xuXG4gIHZlYzMgYXZ0ID0gY2FsY3VsYXRlQVZUKGFjY2VsZXJhdGlvbkluZGV4LCB2ZWxvY2l0eVZlaGljbGUsIDAuMCwgcGF0aExlbmd0aCk7XG4gIGZsb2F0IGFjY2VsZXJhdGlvbiA9IGF2dC54O1xuICBmbG9hdCBmaW5hbFZlbG9jaXR5ID0gYXZ0Lnk7XG4gIGZsb2F0IGZpbmFsVGltZSA9IGF2dC56O1xuXG4gIGZsb2F0IGF2ZXJhZ2VEeW5hbWljQ29zdCA9IGNhbGN1bGF0ZUF2ZXJhZ2VEeW5hbWljQ29zdChudW1TYW1wbGVzLCBwYXRoTGVuZ3RoLCAwLjAsIHZlbG9jaXR5VmVoaWNsZSwgYWNjZWxlcmF0aW9uLCAxLjAgLyAwLjApO1xuICBpZiAoYXZlcmFnZUR5bmFtaWNDb3N0IDwgMC4wKSByZXR1cm4gdmVjNCgtMSk7XG5cbiAgYXZlcmFnZUR5bmFtaWNDb3N0ICs9IGFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHk7XG5cbiAgLy8gVGhlIGNvc3Qgb2YgYSB0cmFqZWN0b3J5IGlzIHRoZSBhdmVyYWdlIHNhbXBsZSBjb3N0IHNjYWxlZCBieSB0aGUgcGF0aCBsZW5ndGhcbiAgZmxvYXQgdG90YWxDb3N0ID0gKGF2ZXJhZ2VTdGF0aWNDb3N0ICsgYXZlcmFnZUR5bmFtaWNDb3N0ICsgJHtwYXRoVHlwZSA9PSAnY3ViaWMnID8gJyhjdWJpY1BhdGhQZW5hbHR5ICogdmVsb2NpdHlWZWhpY2xlICogdmVsb2NpdHlWZWhpY2xlKScgOiAnMC4wJ30pICogcGF0aExlbmd0aDtcbiAgJHtwYXRoVHlwZSAhPSAnY3ViaWMnID8gJ3RvdGFsQ29zdCA9IC0xLjA7JyA6ICcnfVxuXG4gIHJldHVybiB2ZWM0KHRvdGFsQ29zdCwgZmluYWxWZWxvY2l0eSwgZmluYWxUaW1lLCAke3BhdGhUeXBlID09ICdjdWJpYycgPyAnLTInIDogJy0xJ30pO1xufVxuXG5gO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldFVwKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGtlcm5lbDogZnJvbVZlaGljbGVQYXRoQ29zdHNLZXJuZWwoJ2N1YmljJyksXG4gICAgICAgIG91dHB1dDogeyBuYW1lOiAnY3ViaWNQYXRoRnJvbVZlaGljbGVDb3N0cycgfSxcbiAgICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIFNIQVJFRF9VTklGT1JNUywge1xuICAgICAgICAgIGxhdHRpY2U6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH0sXG4gICAgICAgICAgcGF0aHNGcm9tVmVoaWNsZTogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScsIG5hbWU6ICdjdWJpY1BhdGhzRnJvbVZlaGljbGUnIH0sXG4gICAgICAgICAgZmlyc3RMYXR0aWNlUG9pbnQ6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICBzZWNvbmRMYXR0aWNlUG9pbnQ6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICB2ZWxvY2l0eVZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICAgIGN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgICBudW1BY2NlbGVyYXRpb25zOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgICAgY3ViaWNQYXRoUGVuYWx0eTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgICAgaHlzdGVyZXNpc0Rpc2NvdW50OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgICBhY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfVxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2VybmVsOiBmcm9tVmVoaWNsZVBhdGhDb3N0c0tlcm5lbCgncXVpbnRpYycpLFxuICAgICAgICBvdXRwdXQ6IHsgbmFtZTogJ3F1aW50aWNQYXRoRnJvbVZlaGljbGVDb3N0cycgfSxcbiAgICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIFNIQVJFRF9VTklGT1JNUywge1xuICAgICAgICAgIGxhdHRpY2U6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnIH0sXG4gICAgICAgICAgcGF0aHNGcm9tVmVoaWNsZTogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScsIG5hbWU6ICdxdWludGljUGF0aHNGcm9tVmVoaWNsZScgfSxcbiAgICAgICAgICBmaXJzdExhdHRpY2VQb2ludDogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgIHNlY29uZExhdHRpY2VQb2ludDogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgIHZlbG9jaXR5VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgICAgY3VydlZlaGljbGU6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICAgIGRDdXJ2VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgICAgZGRDdXJ2VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgICAgbnVtQWNjZWxlcmF0aW9uczogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgIGh5c3RlcmVzaXNEaXNjb3VudDogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgICAgYWNjZWxlcmF0aW9uQ2hhbmdlUGVuYWx0eTogeyB0eXBlOiAnZmxvYXQnIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICBdO1xuICB9LFxuXG4gIHVwZGF0ZShjb25maWcsIHBvc2UsIHh5Q2VudGVyUG9pbnQsIHNsQ2VudGVyUG9pbnQsIGZpcnN0TGF0dGljZVBvaW50LCBzZWNvbmRMYXR0aWNlUG9pbnQsIGR5bmFtaWNGcmFtZVRpbWUpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB3aWR0aDogY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzLFxuICAgICAgICBoZWlnaHQ6IGNvbmZpZy5sYXR0aWNlLnN0YXRpb25Db25uZWN0aXZpdHkgKiBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTLFxuICAgICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgYnVpbGRVbmlmb3JtVmFsdWVzKGNvbmZpZywgeHlDZW50ZXJQb2ludCwgc2xDZW50ZXJQb2ludCwgZHluYW1pY0ZyYW1lVGltZSksIHtcbiAgICAgICAgICBmaXJzdExhdHRpY2VQb2ludDogZmlyc3RMYXR0aWNlUG9pbnQsXG4gICAgICAgICAgc2Vjb25kTGF0dGljZVBvaW50OiBzZWNvbmRMYXR0aWNlUG9pbnQsXG4gICAgICAgICAgdmVsb2NpdHlWZWhpY2xlOiBwb3NlLnZlbG9jaXR5LFxuICAgICAgICAgIGN1cnZWZWhpY2xlOiBwb3NlLmN1cnYsXG4gICAgICAgICAgbnVtQWNjZWxlcmF0aW9uczogTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyxcbiAgICAgICAgICBjdWJpY1BhdGhQZW5hbHR5OiBjb25maWcuY3ViaWNQYXRoUGVuYWx0eSxcbiAgICAgICAgICBoeXN0ZXJlc2lzRGlzY291bnQ6IGNvbmZpZy5oeXN0ZXJlc2lzRGlzY291bnQsXG4gICAgICAgICAgYWNjZWxlcmF0aW9uQ2hhbmdlUGVuYWx0eTogY29uZmlnLmFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHlcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHdpZHRoOiBjb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMsXG4gICAgICAgIGhlaWdodDogY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSAqIE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMsXG4gICAgICAgIHVuaWZvcm1zOiBPYmplY3QuYXNzaWduKHt9LCBidWlsZFVuaWZvcm1WYWx1ZXMoY29uZmlnLCB4eUNlbnRlclBvaW50LCBzbENlbnRlclBvaW50LCBkeW5hbWljRnJhbWVUaW1lKSwge1xuICAgICAgICAgIGZpcnN0TGF0dGljZVBvaW50OiBmaXJzdExhdHRpY2VQb2ludCxcbiAgICAgICAgICBzZWNvbmRMYXR0aWNlUG9pbnQ6IHNlY29uZExhdHRpY2VQb2ludCxcbiAgICAgICAgICB2ZWxvY2l0eVZlaGljbGU6IHBvc2UudmVsb2NpdHksXG4gICAgICAgICAgY3VydlZlaGljbGU6IHBvc2UuY3VydixcbiAgICAgICAgICBkQ3VydlZlaGljbGU6IHBvc2UuZEN1cnYsXG4gICAgICAgICAgZGRDdXJ2VmVoaWNsZTogcG9zZS5kZEN1cnYsXG4gICAgICAgICAgbnVtQWNjZWxlcmF0aW9uczogTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyxcbiAgICAgICAgICBoeXN0ZXJlc2lzRGlzY291bnQ6IGNvbmZpZy5oeXN0ZXJlc2lzRGlzY291bnQsXG4gICAgICAgICAgYWNjZWxlcmF0aW9uQ2hhbmdlUGVuYWx0eTogY29uZmlnLmFjY2VsZXJhdGlvbkNoYW5nZVBlbmFsdHlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICBdO1xuICB9XG59XG4iLCIvKiBTdGF0ZSBMYXR0aWNlIENvc3QgTWFwXG4gKiBcbiAqIDUtZGltZW5zaW9uYWwgbm9kZTogc3RhdGlvbiwgbGF0aXR1ZGUsIGFjY2VsZXJhdGlvbiBwcm9maWxlLCB2ZWxvY2l0eSwgdGltZVxuICpcbiAqIEEgZHJhdyBjYWxsIHBlciBzdGF0aW9uIHNcbiAqICAgKiBJbnB1dCB0byBrZXJuZWw6IGxhdGl0dWRlIGwsIGFjY2VsZXJhdGlvbiBwcm9maWxlIGEsIHZlbG9jaXR5IHJhbmdlIHYsIHRpbWUgcmFuZ2UgdFxuICogICAqIEZpbmQgYWxsIFNMIHZlcnRpY2VzIHRoYXQgY2FuIGNvbm5lY3QgdG8gdGhpcyBub2RlXG4gKiAgICogRm9yIGVhY2ggb2YgdGhvc2UgdmVydGljZXMsIGNoZWNrIGlmIGFueSB0ZXJtaW5hdGUgaW4gdGhpcyBzcGVjaWZpYyB2ZWxvY2l0eSBhbmQgdGltZSByYW5nZVxuICogICAgICogQmFzZWQgb24gaW5pdGlhbCB2ZWxvY2l0eSwgaW5pdGlhbCB0aW1lLCBhbmQgYWNjZWxlcmF0aW9uXG4gKiAgICAgKiBFYWNoIGNvbm5lY3RlZCBTTCB2ZXJ0ZXggc2hvdWxkIGhhdmUgYSAqIHYgKiB0IG5vZGVzIHRoYXQgY291bGQgcG9zc2libHkgdGVybWluYXRlIGF0IHRoaXMgbm9kZVxuICogICAqIEZvciBhbGwgdmFsaWQgZWRnZXMsIGZpbmQgdGhlIG9uZSB3aXRoIHRoZSBsb3dlc3QgY29zdFxuICpcbiAqIElucHV0OlxuICogICAqIDJEIHRleHR1cmUgYXJyYXkgY29zdCBtYXBcbiAqICAgICAqIEhlaWdodDogbnVtIG9mIGxhdGl0dWRlcyAofjIwKVxuICogICAgICogV2lkdGg6IG51bSBvZiBhY2NlbGVyYXRpb24gcHJvZmlsZXMgKiBudW0gb2YgdGltZSByYW5nZXMgKiBudW0gb2YgdmVsb2NpdHkgcmFuZ2VzICg4ICogMiAqIDQgPSB+NjQpXG4gKiAgICAgICAqIEEgZmxhdHRlbmVkIDNEIGFycmF5OlxuICogICAgICAgICBkMTogYWNjZWxlcmF0aW9uXG4gKiAgICAgICAgIGQyOiB2ZWxvY2l0eVxuICogICAgICAgICBkMzogdGltZVxuICogICAgICogTGF5ZXI6IG51bSBvZiBzdGF0aW9ucyAofjEwKVxuICogICBcbiAqIE91dHB1dDpcbiAqICAgKiAyRCB0ZXh0dXJlIHNsaWNlIG9mIHRoZSBuZXh0IHN0YXRpb24gaW4gdGhlIGlucHV0IDJEIHRleHR1cmUgYXJyYXkgY29zdCBtYXBcbiAqXG4gKiBDb3N0IE1hcCBFbGVtZW50czpcbiAqICAgKiBUcmF2ZXJzYWwgY29zdCBzbyBmYXJcbiAqICAgKiBFbmRpbmcgdmVsb2NpdHlcbiAqICAgKiBFbmRpbmcgdGltZVxuICogICAqIEluZGV4IG9mIHBhcmVudCBub2RlXG4gKlxuICogU2luY2Ugb25lIGN1YmljIHBhdGggY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIG11bHRpcGxlIHRyYWplY3RvcmllcywgdGhleSBuZWVkIHRvIGJlIHByZS1vcHRpbWl6ZWQuXG4gKlxuICogUXVpbnRpYyBQYXRoczpcbiAqICAgU3RhdGlvbnMgMCB0aHJvdWdoIChudW1TdGF0aW9ucyAtIDEpIGNvcnJlc3BvbmQgdG8gdGhlIHN0YXRpb25zIG9uIHRoZSBsYXR0aWNlOyBob3dldmVyLFxuICogICBhIG5ldyBzdGF0aW9uIChzdGF0aW9uIC0xKSB3aWxsIGJlIHVzZWQgdG8gc2lnbmlmaXkgdGhlIHNpbmdsZSB2ZWhpY2xlIHBvc2Ugbm9kZS4gRWl0aGVyXG4gKiAgIGEgY3ViaWMgcGF0aCBvciBxdWludGljIHBhdGggY2FuIGJlIHVzZWQgdG8gY29ubmVjdCB0aGlzIHNpbmdsZSBub2RlIHRvIHRoZSBsYXR0aWNlXG4gKiAgIChkZXBlbmRpbmcgb24gdmVoaWNsZSB2ZWxvY2l0eSkuIEF0IHN0YXRpb24gLTEsIGxhdGl0dWRlIDAgd2lsbCBjb3JyZXNwb25kIHRvIGEgY3ViaWMgcGF0aCxcbiAqICAgYW5kIGxhdGl0dWRlIDEgd2lsbCBjb3JyZXNwb25kIHRvIGEgcXVpbnRpYyBwYXRoLiBBbGwgb3RoZXIgbGF0aXR1ZGVzIHdpbGwgYmUgc2tpcHBlZC5cbiAqL1xuXG5pbXBvcnQgeyBTSEFSRURfU0hBREVSLCBTQU1QTEVfQ1VCSUNfUEFUSF9GTiwgU0FNUExFX1FVSU5USUNfUEFUSF9GTiwgTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUywgTlVNX1ZFTE9DSVRZX1JBTkdFUywgTlVNX1RJTUVfUkFOR0VTLCBTSEFSRURfVU5JRk9STVMsIGJ1aWxkVW5pZm9ybVZhbHVlcyB9IGZyb20gXCIuL2dyYXBoU2VhcmNoU2hhcmVkLmpzXCI7XG5cbmNvbnN0IFNPTFZFX1NUQVRJT05fS0VSTkVMID1cbiAgU0hBUkVEX1NIQURFUiArXG4gIFNBTVBMRV9DVUJJQ19QQVRIX0ZOICtcbiAgU0FNUExFX1FVSU5USUNfUEFUSF9GTiArXG5cbmBcblxudmVjNCBrZXJuZWwoKSB7XG4gIGl2ZWMyIGluZGV4ZXMgPSBpdmVjMihrZXJuZWxQb3NpdGlvbiAqIHZlYzIoa2VybmVsU2l6ZSkpO1xuXG4gIGludCBsYXRpdHVkZSA9IGluZGV4ZXMueTtcblxuICBpbnQgbnVtUGVyVGltZSA9IG51bUFjY2VsZXJhdGlvbnMgKiBudW1WZWxvY2l0aWVzO1xuICBpbnQgdGltZUluZGV4ID0gaW5kZXhlcy54IC8gbnVtUGVyVGltZTtcbiAgaW5kZXhlcy54IC09IHRpbWVJbmRleCAqIG51bVBlclRpbWU7XG4gIGludCB2ZWxvY2l0eUluZGV4ID0gaW5kZXhlcy54IC8gbnVtQWNjZWxlcmF0aW9ucztcbiAgaW50IGFjY2VsZXJhdGlvbkluZGV4ID0gaW50KG1vZChmbG9hdChpbmRleGVzLngpLCBmbG9hdChudW1BY2NlbGVyYXRpb25zKSkpO1xuXG4gIGludCBtaW5MYXRpdHVkZSA9IG1heChsYXRpdHVkZSAtIGxhdGl0dWRlQ29ubmVjdGl2aXR5IC8gMiwgMCk7XG4gIGludCBtYXhMYXRpdHVkZSA9IG1pbihsYXRpdHVkZSArIGxhdGl0dWRlQ29ubmVjdGl2aXR5IC8gMiwgbnVtTGF0aXR1ZGVzIC0gMSk7XG5cbiAgaW50IHNsSW5kZXggPSBzdGF0aW9uICogbnVtTGF0aXR1ZGVzICsgbGF0aXR1ZGU7XG5cbiAgdmVjNCBwYXRoRW5kID0gdGV4ZWxGZXRjaChsYXR0aWNlLCBpdmVjMihsYXRpdHVkZSwgc3RhdGlvbiksIDApO1xuXG4gIGZsb2F0IG1pblZlbG9jaXR5ID0gdmVsb2NpdHlSYW5nZXNbdmVsb2NpdHlJbmRleF07XG4gIGZsb2F0IG1heFZlbG9jaXR5ID0gdmVsb2NpdHlSYW5nZXNbdmVsb2NpdHlJbmRleCArIDFdO1xuXG4gIGZsb2F0IG1pblRpbWUgPSB0aW1lUmFuZ2VzW3RpbWVJbmRleF07XG4gIGZsb2F0IG1heFRpbWUgPSB0aW1lUmFuZ2VzW3RpbWVJbmRleCArIDFdO1xuXG4gIHZlYzQgYmVzdFRyYWplY3RvcnkgPSB2ZWM0KC0xKTsgLy8gLTEgbWVhbnMgaW5maW5pdGUgY29zdFxuICBmbG9hdCBiZXN0VGVybWluYWxDb3N0ID0gMS4wIC8gMC4wO1xuXG4gIGZsb2F0IGh5c3RlcmVzaXNBZGp1c3RtZW50ID0gKHNsSW5kZXggPT0gZmlyc3RMYXR0aWNlUG9pbnQgfHwgc2xJbmRleCA9PSBzZWNvbmRMYXR0aWNlUG9pbnQpID8gIDAuMCA6IGh5c3RlcmVzaXNEaXNjb3VudDtcblxuICBmb3IgKGludCBwcmV2U3RhdGlvbiA9IG1heChzdGF0aW9uIC0gc3RhdGlvbkNvbm5lY3Rpdml0eSwgMCk7IHByZXZTdGF0aW9uIDwgc3RhdGlvbjsgcHJldlN0YXRpb24rKykge1xuICAgIGludCBzdGF0aW9uQ29ubmVjdGl2aXR5SW5kZXggPSBwcmV2U3RhdGlvbiAtIHN0YXRpb24gKyBzdGF0aW9uQ29ubmVjdGl2aXR5O1xuXG4gICAgZm9yIChpbnQgcHJldkxhdGl0dWRlID0gbWluTGF0aXR1ZGU7IHByZXZMYXRpdHVkZSA8PSBtYXhMYXRpdHVkZTsgcHJldkxhdGl0dWRlKyspIHtcbiAgICAgIGludCBsYXRpdHVkZUNvbm5lY3Rpdml0eUluZGV4ID0gcHJldkxhdGl0dWRlIC0gbGF0aXR1ZGUgKyBsYXRpdHVkZUNvbm5lY3Rpdml0eSAvIDI7XG4gICAgICBpbnQgY29ubmVjdGl2aXR5SW5kZXggPSBzdGF0aW9uQ29ubmVjdGl2aXR5SW5kZXggKiBsYXRpdHVkZUNvbm5lY3Rpdml0eSArIGxhdGl0dWRlQ29ubmVjdGl2aXR5SW5kZXg7XG5cbiAgICAgIHZlYzQgcGF0aFN0YXJ0ID0gdGV4ZWxGZXRjaChsYXR0aWNlLCBpdmVjMihwcmV2TGF0aXR1ZGUsIHByZXZTdGF0aW9uKSwgMCk7XG4gICAgICB2ZWM0IGN1YmljUGF0aFBhcmFtcyA9IHRleGVsRmV0Y2goY3ViaWNQYXRocywgaXZlYzIoc2xJbmRleCwgY29ubmVjdGl2aXR5SW5kZXgpLCAwKTtcblxuICAgICAgLy8gSWYgdGhlIHBhdGggZGlkbid0IGNvbnZlcmdlXG4gICAgICBpZiAoY3ViaWNQYXRoUGFyYW1zLncgPT0gMC4wKSBjb250aW51ZTtcblxuICAgICAgaW50IG51bVNhbXBsZXMgPSBzYW1wbGVDdWJpY1BhdGgocGF0aFN0YXJ0LCBwYXRoRW5kLCBjdWJpY1BhdGhQYXJhbXMpO1xuICAgICAgZmxvYXQgcGF0aExlbmd0aCA9IGN1YmljUGF0aFBhcmFtcy56O1xuXG4gICAgICBpZiAobnVtU2FtcGxlcyA8IDIpIGNvbnRpbnVlO1xuXG4gICAgICBmbG9hdCBhdmVyYWdlU3RhdGljQ29zdCA9IGNhbGN1bGF0ZUF2ZXJhZ2VTdGF0aWNDb3N0KG51bVNhbXBsZXMpO1xuICAgICAgaWYgKGF2ZXJhZ2VTdGF0aWNDb3N0IDwgMC4wKSBjb250aW51ZTtcblxuICAgICAgYXZlcmFnZVN0YXRpY0Nvc3QgKz0gaHlzdGVyZXNpc0FkanVzdG1lbnQ7XG5cbiAgICAgIGlmIChhdmVyYWdlU3RhdGljQ29zdCAqIHBhdGhMZW5ndGggPj0gYmVzdFRlcm1pbmFsQ29zdCkgY29udGludWU7XG5cbiAgICAgIGZvciAoaW50IHByZXZWZWxvY2l0eSA9IDA7IHByZXZWZWxvY2l0eSA8IG51bVZlbG9jaXRpZXM7IHByZXZWZWxvY2l0eSsrKSB7XG4gICAgICAgIGZvciAoaW50IHByZXZUaW1lID0gMDsgcHJldlRpbWUgPCBudW1UaW1lczsgcHJldlRpbWUrKykge1xuICAgICAgICAgIGZvciAoaW50IHByZXZBY2NlbCA9IDA7IHByZXZBY2NlbCA8IG51bUFjY2VsZXJhdGlvbnM7IHByZXZBY2NlbCsrKSB7XG4gICAgICAgICAgICBpbnQgYXZ0SW5kZXggPSBwcmV2VGltZSAqIG51bVBlclRpbWUgKyBwcmV2VmVsb2NpdHkgKiBudW1BY2NlbGVyYXRpb25zICsgcHJldkFjY2VsO1xuXG4gICAgICAgICAgICAvLyBDb3N0IHRhYmxlIGVudHJ5OlxuICAgICAgICAgICAgLy8gICB4OiBjb3N0IHNvIGZhclxuICAgICAgICAgICAgLy8gICB5OiBlbmQgdmVsb2NpdHlcbiAgICAgICAgICAgIC8vICAgejogZW5kIHRpbWVcbiAgICAgICAgICAgIC8vICAgdzogcGFyZW50IGluZGV4XG4gICAgICAgICAgICB2ZWM0IGNvc3RUYWJsZUVudHJ5ID0gdGV4ZWxGZXRjaChjb3N0VGFibGUsIGl2ZWMzKGF2dEluZGV4LCBwcmV2TGF0aXR1ZGUsIHByZXZTdGF0aW9uKSwgMCk7XG5cbiAgICAgICAgICAgIC8vIElmIGNvc3QgZW50cnkgaXMgaW5maW5pdHlcbiAgICAgICAgICAgIGlmIChjb3N0VGFibGVFbnRyeS54IDwgMC4wIHx8IGF2ZXJhZ2VTdGF0aWNDb3N0ICogcGF0aExlbmd0aCArIGNvc3RUYWJsZUVudHJ5LnggPj0gYmVzdFRlcm1pbmFsQ29zdCkgY29udGludWU7XG5cbiAgICAgICAgICAgIHZlYzMgYXZ0ID0gY2FsY3VsYXRlQVZUKGFjY2VsZXJhdGlvbkluZGV4LCBjb3N0VGFibGVFbnRyeS55LCBjb3N0VGFibGVFbnRyeS56LCBwYXRoTGVuZ3RoKTtcbiAgICAgICAgICAgIGZsb2F0IGFjY2VsZXJhdGlvbiA9IGF2dC54O1xuICAgICAgICAgICAgZmxvYXQgZmluYWxWZWxvY2l0eSA9IGF2dC55O1xuICAgICAgICAgICAgZmxvYXQgZmluYWxUaW1lID0gYXZ0Lno7XG5cbiAgICAgICAgICAgIGlmIChhdmVyYWdlU3RhdGljQ29zdCAqIHBhdGhMZW5ndGggKyBjb3N0VGFibGVFbnRyeS54ICsgZXh0cmFUaW1lUGVuYWx0eSAqIGZpbmFsVGltZSA+PSBiZXN0VGVybWluYWxDb3N0KSBjb250aW51ZTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGN1bGF0ZWQgZmluYWwgdmVsb2NpdHkgZG9lcyBub3QgbWF0Y2ggdGhpcyBmcmFnbWVudCdzIHZlbG9jaXR5IHJhbmdlLCB0aGVuIHNraXAgdGhpcyB0cmFqZWN0b3J5XG4gICAgICAgICAgICBpZiAoZmluYWxWZWxvY2l0eSA8IG1pblZlbG9jaXR5IHx8IGZpbmFsVmVsb2NpdHkgPj0gbWF4VmVsb2NpdHkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgY2FsY3VsYXRlZCBmaW5hbCB0aW1lIGRvZXMgbm90IG1hdGNoIHRoaXMgZnJhZ21lbnQncyB0aW1lIHJhbmdlLCB0aGVuIHNraXAgdGhpcyB0cmFqZWN0b3J5XG4gICAgICAgICAgICBpZiAoZmluYWxUaW1lIDwgbWluVGltZSB8fCBmaW5hbFRpbWUgPj0gbWF4VGltZSkgY29udGludWU7XG5cbiAgICAgICAgICAgIGZsb2F0IGFiYW5kb25UaHJlc2hvbGQgPSAoYmVzdFRlcm1pbmFsQ29zdCAtIGV4dHJhVGltZVBlbmFsdHkgKiBmaW5hbFRpbWUgLSBjb3N0VGFibGVFbnRyeS54KSAvIHBhdGhMZW5ndGggLSBhdmVyYWdlU3RhdGljQ29zdDtcbiAgICAgICAgICAgIGZsb2F0IGF2ZXJhZ2VEeW5hbWljQ29zdCA9IGNhbGN1bGF0ZUF2ZXJhZ2VEeW5hbWljQ29zdChudW1TYW1wbGVzLCBwYXRoTGVuZ3RoLCBjb3N0VGFibGVFbnRyeS56LCBjb3N0VGFibGVFbnRyeS55LCBhY2NlbGVyYXRpb24sIGFiYW5kb25UaHJlc2hvbGQpO1xuICAgICAgICAgICAgaWYgKGF2ZXJhZ2VEeW5hbWljQ29zdCA8IDAuMCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGlmIChhY2NlbGVyYXRpb25JbmRleCAhPSBwcmV2QWNjZWwpXG4gICAgICAgICAgICAgIGF2ZXJhZ2VEeW5hbWljQ29zdCArPSBhY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5O1xuXG4gICAgICAgICAgICAvLyBUaGUgY29zdCBvZiBhIHRyYWplY3RvcnkgaXMgdGhlIGF2ZXJhZ2Ugc2FtcGxlIGNvc3Qgc2NhbGVkIGJ5IHRoZSBwYXRoIGxlbmd0aFxuICAgICAgICAgICAgZmxvYXQgdG90YWxDb3N0ID0gKGF2ZXJhZ2VTdGF0aWNDb3N0ICsgYXZlcmFnZUR5bmFtaWNDb3N0KSAqIHBhdGhMZW5ndGggKyBjb3N0VGFibGVFbnRyeS54O1xuXG4gICAgICAgICAgICBmbG9hdCB0ZXJtaW5hbENvc3QgPSB0b3RhbENvc3QgKyBleHRyYVRpbWVQZW5hbHR5ICogZmluYWxUaW1lO1xuICAgICAgICAgICAgaWYgKHRlcm1pbmFsQ29zdCA+PSBiZXN0VGVybWluYWxDb3N0KSBjb250aW51ZTtcbiAgICAgICAgICAgIGJlc3RUZXJtaW5hbENvc3QgPSB0ZXJtaW5hbENvc3Q7XG5cbiAgICAgICAgICAgIGludCBpbmNvbWluZ0luZGV4ID0gYXZ0SW5kZXggKyBudW1QZXJUaW1lICogbnVtVGltZXMgKiAocHJldkxhdGl0dWRlICsgbnVtTGF0aXR1ZGVzICogcHJldlN0YXRpb24pO1xuICAgICAgICAgICAgYmVzdFRyYWplY3RvcnkgPSB2ZWM0KHRvdGFsQ29zdCwgZmluYWxWZWxvY2l0eSwgZmluYWxUaW1lLCBpbmNvbWluZ0luZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGlvbiA8IHN0YXRpb25Db25uZWN0aXZpdHkpIHtcbiAgICBpdmVjMiBzbGFJbmRleCA9IGl2ZWMyKGxhdGl0dWRlLCBzdGF0aW9uICogbnVtQWNjZWxlcmF0aW9ucyArIGFjY2VsZXJhdGlvbkluZGV4KTtcblxuICAgIHZlYzQgY29zdFRhYmxlRW50cnkgPSB0ZXhlbEZldGNoKGN1YmljUGF0aEZyb21WZWhpY2xlQ29zdHMsIHNsYUluZGV4LCAwKTtcbiAgICBmbG9hdCB0ZXJtaW5hbENvc3Q7XG5cbiAgICBpZiAoY29zdFRhYmxlRW50cnkueCA+PSAwLjApIHtcbiAgICAgIHRlcm1pbmFsQ29zdCA9IGNvc3RUYWJsZUVudHJ5LnggKyBleHRyYVRpbWVQZW5hbHR5ICogY29zdFRhYmxlRW50cnkuejtcblxuICAgICAgaWYgKHRlcm1pbmFsQ29zdCA8IGJlc3RUZXJtaW5hbENvc3QpIHtcbiAgICAgICAgYmVzdFRlcm1pbmFsQ29zdCA9IHRlcm1pbmFsQ29zdDtcbiAgICAgICAgYmVzdFRyYWplY3RvcnkgPSBjb3N0VGFibGVFbnRyeTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb3N0VGFibGVFbnRyeSA9IHRleGVsRmV0Y2gocXVpbnRpY1BhdGhGcm9tVmVoaWNsZUNvc3RzLCBzbGFJbmRleCwgMCk7XG5cbiAgICBpZiAoY29zdFRhYmxlRW50cnkueCA+PSAwLjApIHtcbiAgICAgIHRlcm1pbmFsQ29zdCA9IGNvc3RUYWJsZUVudHJ5LnggKyBleHRyYVRpbWVQZW5hbHR5ICogY29zdFRhYmxlRW50cnkuejtcblxuICAgICAgaWYgKHRlcm1pbmFsQ29zdCA8IGJlc3RUZXJtaW5hbENvc3QpIHtcbiAgICAgICAgYmVzdFRlcm1pbmFsQ29zdCA9IHRlcm1pbmFsQ29zdDtcbiAgICAgICAgYmVzdFRyYWplY3RvcnkgPSBjb3N0VGFibGVFbnRyeTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYmVzdFRyYWplY3Rvcnk7XG59XG5cbmA7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtlcm5lbDogU09MVkVfU1RBVElPTl9LRVJORUwsXG4gICAgICBvdXRwdXQ6IHsgbmFtZTogJ2dyYXBoU2VhcmNoJyB9LFxuICAgICAgdW5pZm9ybXM6IE9iamVjdC5hc3NpZ24oe30sIFNIQVJFRF9VTklGT1JNUywge1xuICAgICAgICBsYXR0aWNlOiB7IHR5cGU6ICdzaGFyZWRUZXh0dXJlJyB9LFxuICAgICAgICBjb3N0VGFibGU6IHsgdHlwZTogJ3NoYXJlZFRleHR1cmUnLCB0ZXh0dXJlVHlwZTogJzJEQXJyYXknIH0sXG4gICAgICAgIGN1YmljUGF0aHM6IHsgdHlwZTogJ291dHB1dFRleHR1cmUnIH0sXG4gICAgICAgIGN1YmljUGF0aEZyb21WZWhpY2xlQ29zdHM6IHsgdHlwZTogJ291dHB1dFRleHR1cmUnIH0sXG4gICAgICAgIHF1aW50aWNQYXRoRnJvbVZlaGljbGVDb3N0czogeyB0eXBlOiAnb3V0cHV0VGV4dHVyZScgfSxcbiAgICAgICAgZmlyc3RMYXR0aWNlUG9pbnQ6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgc2Vjb25kTGF0dGljZVBvaW50OiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgIHZlbG9jaXR5VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgIGN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgZEN1cnZWZWhpY2xlOiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgZGRDdXJ2VmVoaWNsZTogeyB0eXBlOiAnZmxvYXQnIH0sXG4gICAgICAgIGV4dHJhVGltZVBlbmFsdHk6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBoeXN0ZXJlc2lzRGlzY291bnQ6IHsgdHlwZTogJ2Zsb2F0JyB9LFxuICAgICAgICBhY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5OiB7IHR5cGU6ICdmbG9hdCcgfSxcbiAgICAgICAgbnVtU3RhdGlvbnM6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgbnVtTGF0aXR1ZGVzOiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgIG51bUFjY2VsZXJhdGlvbnM6IHsgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgbnVtVmVsb2NpdGllczogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICBudW1UaW1lczogeyB0eXBlOiAnaW50JyB9LFxuICAgICAgICBzdGF0aW9uQ29ubmVjdGl2aXR5OiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgIGxhdGl0dWRlQ29ubmVjdGl2aXR5OiB7IHR5cGU6ICdpbnQnIH0sXG4gICAgICAgIHZlbG9jaXR5UmFuZ2VzOiB7IHR5cGU6ICdmbG9hdCcsIGxlbmd0aDogTlVNX1ZFTE9DSVRZX1JBTkdFUyArIDEgfSxcbiAgICAgICAgdGltZVJhbmdlczogeyB0eXBlOiAnZmxvYXQnLCBsZW5ndGg6IE5VTV9USU1FX1JBTkdFUyArIDEgfSxcbiAgICAgICAgc3RhdGlvbjogeyB0eXBlOiAnaW50JyB9IC8vIFVwZGF0ZWQgaW4gYGRyYXdQcm94eWBcbiAgICAgIH0pLFxuICAgICAgZHJhd1Byb3h5OiAoZ3BncHUsIHByb2dyYW0sIGRyYXcpID0+IHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTICogTlVNX1ZFTE9DSVRZX1JBTkdFUyAqIE5VTV9USU1FX1JBTkdFUztcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gcHJvZ3JhbS5tZXRhLmxhdHRpY2UubnVtTGF0aXR1ZGVzO1xuICAgICAgICBjb25zdCBjb3N0VGFibGUgPSBuZXcgRmxvYXQzMkFycmF5KHdpZHRoICogaGVpZ2h0ICogcHJvZ3JhbS5tZXRhLmxhdHRpY2UubnVtU3RhdGlvbnMgKiA0KTtcblxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IHByb2dyYW0ubWV0YS5sYXR0aWNlLm51bVN0YXRpb25zOyBzKyspIHtcbiAgICAgICAgICBncGdwdS51cGRhdGVQcm9ncmFtVW5pZm9ybXMocHJvZ3JhbSwgeyBzdGF0aW9uOiBzIH0pO1xuICAgICAgICAgIGRyYXcoKTtcblxuICAgICAgICAgIGdwZ3B1LmdsLnJlYWRQaXhlbHMoMCwgMCwgd2lkdGgsIGhlaWdodCwgZ3BncHUuZ2wuUkdCQSwgZ3BncHUuZ2wuRkxPQVQsIGNvc3RUYWJsZSwgcyAqIHdpZHRoICogaGVpZ2h0ICogNCk7XG5cbiAgICAgICAgICBncGdwdS5nbC5iaW5kVGV4dHVyZShncGdwdS5nbC5URVhUVVJFXzJEX0FSUkFZLCBncGdwdS5zaGFyZWRUZXh0dXJlcy5jb3N0VGFibGUpO1xuICAgICAgICAgIGdwZ3B1LmdsLmNvcHlUZXhTdWJJbWFnZTNEKGdwZ3B1LmdsLlRFWFRVUkVfMkRfQVJSQVksIDAsIDAsIDAsIHMsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3BncHUuX2dyYXBoU2VhcmNoQ29zdFRhYmxlID0gY29zdFRhYmxlO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG5cbiAgdXBkYXRlKGNvbmZpZywgcG9zZSwgeHlDZW50ZXJQb2ludCwgc2xDZW50ZXJQb2ludCwgZmlyc3RMYXR0aWNlUG9pbnQsIHNlY29uZExhdHRpY2VQb2ludCwgZHluYW1pY0ZyYW1lVGltZSkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyAqIE5VTV9WRUxPQ0lUWV9SQU5HRVMgKiBOVU1fVElNRV9SQU5HRVMsXG4gICAgICBoZWlnaHQ6IGNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgbGF0dGljZTogY29uZmlnLmxhdHRpY2VcbiAgICAgIH0sXG4gICAgICB1bmlmb3JtczogT2JqZWN0LmFzc2lnbih7fSwgYnVpbGRVbmlmb3JtVmFsdWVzKGNvbmZpZywgeHlDZW50ZXJQb2ludCwgc2xDZW50ZXJQb2ludCwgZHluYW1pY0ZyYW1lVGltZSksIHtcbiAgICAgICAgZmlyc3RMYXR0aWNlUG9pbnQ6IGZpcnN0TGF0dGljZVBvaW50LFxuICAgICAgICBzZWNvbmRMYXR0aWNlUG9pbnQ6IHNlY29uZExhdHRpY2VQb2ludCxcbiAgICAgICAgdmVsb2NpdHlWZWhpY2xlOiBwb3NlLnZlbG9jaXR5LFxuICAgICAgICBjdXJ2VmVoaWNsZTogcG9zZS5jdXJ2LFxuICAgICAgICBkQ3VydlZlaGljbGU6IHBvc2UuZEN1cnYsXG4gICAgICAgIGRkQ3VydlZlaGljbGU6IHBvc2UuZGRDdXJ2LFxuICAgICAgICBleHRyYVRpbWVQZW5hbHR5OiBjb25maWcuZXh0cmFUaW1lUGVuYWx0eSxcbiAgICAgICAgaHlzdGVyZXNpc0Rpc2NvdW50OiBjb25maWcuaHlzdGVyZXNpc0Rpc2NvdW50LFxuICAgICAgICBhY2NlbGVyYXRpb25DaGFuZ2VQZW5hbHR5OiBjb25maWcuYWNjZWxlcmF0aW9uQ2hhbmdlUGVuYWx0eSxcbiAgICAgICAgbnVtU3RhdGlvbnM6IGNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zLFxuICAgICAgICBudW1MYXRpdHVkZXM6IGNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyxcbiAgICAgICAgbnVtQWNjZWxlcmF0aW9uczogTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyxcbiAgICAgICAgbnVtVmVsb2NpdGllczogTlVNX1ZFTE9DSVRZX1JBTkdFUyxcbiAgICAgICAgbnVtVGltZXM6IE5VTV9USU1FX1JBTkdFUyxcbiAgICAgICAgc3RhdGlvbkNvbm5lY3Rpdml0eTogY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSxcbiAgICAgICAgbGF0aXR1ZGVDb25uZWN0aXZpdHk6IGNvbmZpZy5sYXR0aWNlLmxhdGl0dWRlQ29ubmVjdGl2aXR5LFxuICAgICAgICB2ZWxvY2l0eVJhbmdlczogWzAsIGNvbmZpZy5zcGVlZExpbWl0IC8gMywgY29uZmlnLnNwZWVkTGltaXQgKiAyIC8gMywgY29uZmlnLnNwZWVkTGltaXQsIDEwMDAwMDBdLFxuICAgICAgICB0aW1lUmFuZ2VzOiBbMCwgMTAsIDEwMDAwMDBdXG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cbiIsImNvbnN0IFhZX09CU1RBQ0xFX0NPU1RfS0VSTkVMID0gYFxuXG52ZWM0IGtlcm5lbCgpIHtcbiAgdmVjMiB4eSA9IChrZXJuZWxQb3NpdGlvbiAtIDAuNSkgKiB2ZWMyKGtlcm5lbFNpemUpICogdmVjMih4eUdyaWRDZWxsU2l6ZSkgKyB4eUNlbnRlclBvaW50O1xuXG4gIHZlYzIgeHlUZXhDb29yZHMgPSAoeHkgLSB4eUNlbnRlclBvaW50KSAvIHZlYzIodGV4dHVyZVNpemUoeHlzbE1hcCwgMCkpIC8gdmVjMih4eUdyaWRDZWxsU2l6ZSkgKyAwLjU7XG4gIHZlYzIgc2wgPSB0ZXh0dXJlKHh5c2xNYXAsIHh5VGV4Q29vcmRzKS54eTtcblxuICB2ZWMyIHNsVGV4Q29vcmRzID0gKHNsIC0gc2xDZW50ZXJQb2ludCkgLyB2ZWMyKHRleHR1cmVTaXplKHNsT2JzdGFjbGVHcmlkLCAwKSkgLyB2ZWMyKHNsR3JpZENlbGxTaXplKSArIDAuNTtcbiAgcmV0dXJuIHRleHR1cmUoc2xPYnN0YWNsZUdyaWQsIHNsVGV4Q29vcmRzKTtcbn1cblxuYDtcblxuLy8gQnVpbGQgWFkgb2JzdGFjbGUgY29zdHMgdXNpbmcgWFlTTCBtYXBcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0VXAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtlcm5lbDogWFlfT0JTVEFDTEVfQ09TVF9LRVJORUwsXG4gICAgICBvdXRwdXQ6IHsgbmFtZTogJ3h5T2JzdGFjbGVDb3N0R3JpZCcsIHJlYWQ6IHRydWUgfSxcbiAgICAgIHVuaWZvcm1zOiB7XG4gICAgICAgIHh5c2xNYXA6IHsgdHlwZTogJ291dHB1dFRleHR1cmUnIH0sXG4gICAgICAgIHNsT2JzdGFjbGVHcmlkOiB7IHR5cGU6ICdvdXRwdXRUZXh0dXJlJywgbmFtZTogJ3NsT2JzdGFjbGVHcmlkRGlsYXRlZCcgfSxcbiAgICAgICAgeHlDZW50ZXJQb2ludDogeyB0eXBlOiAndmVjMicgfSxcbiAgICAgICAgeHlHcmlkQ2VsbFNpemU6IHsgdHlwZTogJ2Zsb2F0J30sXG4gICAgICAgIHNsQ2VudGVyUG9pbnQ6IHsgdHlwZTogJ3ZlYzInIH0sXG4gICAgICAgIHNsR3JpZENlbGxTaXplOiB7IHR5cGU6ICdmbG9hdCd9XG4gICAgICB9XG4gICAgfTtcbiAgfSxcblxuICB1cGRhdGUoY29uZmlnLCB4eVdpZHRoLCB4eUhlaWdodCwgeHlDZW50ZXJQb2ludCwgc2xDZW50ZXJQb2ludCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogeHlXaWR0aCxcbiAgICAgIGhlaWdodDogeHlIZWlnaHQsXG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICB4eUNlbnRlclBvaW50OiBbeHlDZW50ZXJQb2ludC54LCB4eUNlbnRlclBvaW50LnldLFxuICAgICAgICB4eUdyaWRDZWxsU2l6ZTogY29uZmlnLnh5R3JpZENlbGxTaXplLFxuICAgICAgICBzbENlbnRlclBvaW50OiBbc2xDZW50ZXJQb2ludC54LCBzbENlbnRlclBvaW50LnldLFxuICAgICAgICBzbEdyaWRDZWxsU2l6ZTogY29uZmlnLnNsR3JpZENlbGxTaXplXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIiwiaW1wb3J0IEdQR1BVIGZyb20gXCIuLi8uLi9HUEdQVS5qc1wiO1xuaW1wb3J0IENhciBmcm9tIFwiLi4vLi4vcGh5c2ljcy9DYXIuanNcIjtcbmltcG9ydCBDdWJpY1BhdGggZnJvbSBcIi4vQ3ViaWNQYXRoLmpzXCI7XG5pbXBvcnQgUXVpbnRpY1BhdGggZnJvbSBcIi4vUXVpbnRpY1BhdGguanNcIjtcbmltcG9ydCB4eU9ic3RhY2xlR3JpZCBmcm9tIFwiLi9ncGdwdS1wcm9ncmFtcy94eU9ic3RhY2xlR3JpZC5qc1wiO1xuaW1wb3J0IHNsT2JzdGFjbGVHcmlkIGZyb20gXCIuL2dwZ3B1LXByb2dyYW1zL3NsT2JzdGFjbGVHcmlkLmpzXCI7XG5pbXBvcnQgc2xPYnN0YWNsZUdyaWREaWxhdGlvbiBmcm9tIFwiLi9ncGdwdS1wcm9ncmFtcy9zbE9ic3RhY2xlR3JpZERpbGF0aW9uLmpzXCI7XG5pbXBvcnQgc2xEeW5hbWljT2JzdGFjbGVHcmlkIGZyb20gXCIuL2dwZ3B1LXByb2dyYW1zL3NsRHluYW1pY09ic3RhY2xlR3JpZC5qc1wiO1xuaW1wb3J0IHh5c2xNYXAgZnJvbSBcIi4vZ3BncHUtcHJvZ3JhbXMveHlzbE1hcC5qc1wiO1xuaW1wb3J0IG9wdGltaXplQ3ViaWNQYXRocyBmcm9tIFwiLi9ncGdwdS1wcm9ncmFtcy9vcHRpbWl6ZUN1YmljUGF0aHMuanNcIjtcbmltcG9ydCBvcHRpbWl6ZVF1aW50aWNQYXRocyBmcm9tIFwiLi9ncGdwdS1wcm9ncmFtcy9vcHRpbWl6ZVF1aW50aWNQYXRocy5qc1wiO1xuaW1wb3J0IHBhdGhGcm9tVmVoaWNsZUNvc3RzIGZyb20gXCIuL2dwZ3B1LXByb2dyYW1zL3BhdGhGcm9tVmVoaWNsZUNvc3RzLmpzXCI7XG5pbXBvcnQgZ3JhcGhTZWFyY2ggZnJvbSBcIi4vZ3BncHUtcHJvZ3JhbXMvZ3JhcGhTZWFyY2guanNcIjtcbmltcG9ydCB4eU9ic3RhY2xlQ29zdEdyaWQgZnJvbSBcIi4vZ3BncHUtcHJvZ3JhbXMveHlPYnN0YWNsZUNvc3RHcmlkLmpzXCI7XG5cbmNvbnN0IE5VTV9BQ0NFTEVSQVRJT05fUFJPRklMRVMgPSA4O1xuY29uc3QgTlVNX1ZFTE9DSVRZX1JBTkdFUyA9IDQ7XG5jb25zdCBOVU1fVElNRV9SQU5HRVMgPSAyO1xuXG4vKiBPYnN0YWNsZSBjb3N0IG1hcDpcbiAqXG4gKiAxLiBSYXN0ZXJpemUgdHJpYW5nbGVzIGZyb20gcG9seWdvbmFsIG9ic3RhY2xlcyBpbnRvIFhZLXNwYWNlIG9jY3VwYW5jeSBncmlkXG4gKiAyLiBDb252ZXJ0IG9jY3VwYW5jeSBncmlkIHRvIFNMLXNwYWNlXG4gKiAgICAqIFdpZHRoIGlzIHNwYXRpYWwgaG9yaXpvbiBvZiB0aGUgc3RhdGUgbGF0dGljZVxuICogICAgKiBIZWlnaHQgaXMgbGFuZSB3aWR0aFxuICogICAgKiBSZXNvbHV0aW9uIHNob3VsZCBiZSBoaWdoZXIgdGhhbiBYWS1ncmlkXG4gKiAgICAqIEdldCBYWSBwb3NpdGlvbiBmcm9tIGNlbnRlcmxpbmUgdGV4dHVyZVxuICogICAgKiBMb29rdXAgWFkgaW4gWFkgb2NjdXBhbmN5IGdyaWQgKG5lYXJlc3QpXG4gKiAzLiBEaWxhdGUgU0wtc3BhY2UgZ3JpZCB1c2luZyB0d28gcGFzc2VzIChhbG9uZyBzdGF0aW9uLCB0aGVuIGFsb25nIGxhdGl0dWRlKVxuICogICAgKiBjb2xsaXNpb24gYXJlYTogaGFsZiBjYXIgc2l6ZSArIDAuM21cbiAqICAgICogaGlnaCBjb3N0IGFyZWE6IDEgbWV0ZXJcbiAqIDQuIENvbnZlcnQgYmFjayB0byBYWS1zcGFjZSB1c2luZyBYWVNMIG1hcFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdGhQbGFubmVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wcmV2aW91c1N0YXJ0U3RhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5wcmV2aW91c0ZpcnN0TGF0dGljZVBvaW50ID0gLTE7XG4gICAgdGhpcy5wcmV2aW91c1NlY29uZExhdHRpY2VQb2ludCA9IC0xO1xuICAgIHRoaXMucHJldmlvdXNGaXJzdEFjY2VsZXJhdGlvbiA9IC0xO1xuICAgIHRoaXMucHJldmlvdXNTZWNvbmRMYXR0aWNlUG9pbnQgPSAtMTtcblxuICAgIGxldCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IHByb2dyYW1zID0gW1xuICAgICAgeHlPYnN0YWNsZUdyaWQuc2V0VXAoKSxcbiAgICAgIHNsT2JzdGFjbGVHcmlkLnNldFVwKCksXG4gICAgICAuLi5zbE9ic3RhY2xlR3JpZERpbGF0aW9uLnNldFVwKCksXG4gICAgICBzbER5bmFtaWNPYnN0YWNsZUdyaWQuc2V0VXAoKSxcbiAgICAgIHh5c2xNYXAuc2V0VXAoKSxcbiAgICAgIC4uLm9wdGltaXplQ3ViaWNQYXRocy5zZXRVcCgpLFxuICAgICAgb3B0aW1pemVRdWludGljUGF0aHMuc2V0VXAoKSxcbiAgICAgIC4uLnBhdGhGcm9tVmVoaWNsZUNvc3RzLnNldFVwKCksXG4gICAgICBncmFwaFNlYXJjaC5zZXRVcCgpLFxuICAgIF0ubWFwKHAgPT4gT2JqZWN0LmFzc2lnbih7fSwgcCwgeyB3aWR0aDogMSwgaGVpZ2h0OiAxIH0pKTtcblxuICAgIHRoaXMuZ3BncHUgPSBuZXcgR1BHUFUocHJvZ3JhbXMpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5wcmV2aW91c1N0YXJ0U3RhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5wcmV2aW91c0ZpcnN0TGF0dGljZVBvaW50ID0gLTE7XG4gICAgdGhpcy5wcmV2aW91c1NlY29uZExhdHRpY2VQb2ludCA9IC0xO1xuICAgIHRoaXMucHJldmlvdXNGaXJzdEFjY2VsZXJhdGlvbiA9IC0xO1xuICAgIHRoaXMucHJldmlvdXNTZWNvbmRMYXR0aWNlUG9pbnQgPSAtMTtcbiAgfVxuXG4gIHBsYW4odmVoaWNsZVBvc2UsIHZlaGljbGVTdGF0aW9uLCBsYW5lUGF0aCwgc3RhcnRUaW1lLCBzdGF0aWNPYnN0YWNsZXMsIGR5bmFtaWNPYnN0YWNsZXMpIHtcbiAgICBjb25zdCBsYXR0aWNlU3RhdGlvbkludGVydmFsID0gdGhpcy5fbGF0dGljZVN0YXRpb25JbnRlcnZhbCgpO1xuXG4gICAgY29uc3QgY2VudGVybGluZVJhdyA9IGxhbmVQYXRoLnNhbXBsZVN0YXRpb25zKHZlaGljbGVTdGF0aW9uLCBNYXRoLmNlaWwoKHRoaXMuY29uZmlnLnNwYXRpYWxIb3Jpem9uICsgbGF0dGljZVN0YXRpb25JbnRlcnZhbCkgLyB0aGlzLmNvbmZpZy5jZW50ZXJsaW5lU3RhdGlvbkludGVydmFsKSArIDEsIHRoaXMuY29uZmlnLmNlbnRlcmxpbmVTdGF0aW9uSW50ZXJ2YWwpO1xuXG4gICAgLy8gVHJhbnNmb3JtIGFsbCBjZW50ZXJsaW5lIHBvaW50cyBpbnRvIHZlaGljbGUgZnJhbWVcbiAgICBjb25zdCB2ZWhpY2xlWGZvcm0gPSB2ZWhpY2xlVHJhbnNmb3JtKHZlaGljbGVQb3NlKTtcbiAgICBjb25zdCBjZW50ZXJsaW5lID0gY2VudGVybGluZVJhdy5tYXAoYyA9PiB7IHJldHVybiB7IHBvczogYy5wb3MuY2xvbmUoKS5hcHBseU1hdHJpeDModmVoaWNsZVhmb3JtKSwgcm90OiBjLnJvdCAtIHZlaGljbGVQb3NlLnJvdCwgY3VydjogYy5jdXJ2IH0gfSk7XG5cbiAgICBjb25zdCBjZW50ZXJsaW5lRGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkoY2VudGVybGluZS5sZW5ndGggKiAzKTtcbiAgICBjb25zdCBtYXhQb2ludCA9IG5ldyBUSFJFRS5WZWN0b3IyKDAsIDApO1xuICAgIGNvbnN0IG1pblBvaW50ID0gbmV3IFRIUkVFLlZlY3RvcjIoMCwgMCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNlbnRlcmxpbmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHNhbXBsZSA9IGNlbnRlcmxpbmVbaV07XG4gICAgICBjb25zdCBwb3MgPSBzYW1wbGUucG9zO1xuICAgICAgY2VudGVybGluZURhdGFbaSAqIDMgKyAwXSA9IHBvcy54O1xuICAgICAgY2VudGVybGluZURhdGFbaSAqIDMgKyAxXSA9IHBvcy55O1xuICAgICAgY2VudGVybGluZURhdGFbaSAqIDMgKyAyXSA9IHNhbXBsZS5yb3Q7XG5cbiAgICAgIG1heFBvaW50Lm1heChwb3MpO1xuICAgICAgbWluUG9pbnQubWluKHBvcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGlmZiA9IG1heFBvaW50LmNsb25lKCkuc3ViKG1pblBvaW50KTtcbiAgICBjb25zdCB4eUNlbnRlclBvaW50ID0gbWluUG9pbnQuY2xvbmUoKS5hZGQobWF4UG9pbnQpLmRpdmlkZVNjYWxhcigyKTtcblxuICAgIC8vIFNpemVzIG9mIHRoZSB4eSBncmlkcyAoaW4gcGl4ZWxzLCBub3QgbWV0ZXJzKVxuICAgIGNvbnN0IHh5V2lkdGggPSBNYXRoLmNlaWwoKGRpZmYueCArIHRoaXMuY29uZmlnLmdyaWRNYXJnaW4gKiAyKSAvIHRoaXMuY29uZmlnLnh5R3JpZENlbGxTaXplKTtcbiAgICBjb25zdCB4eUhlaWdodCA9IE1hdGguY2VpbCgoZGlmZi55ICsgdGhpcy5jb25maWcuZ3JpZE1hcmdpbiAqIDIpIC8gdGhpcy5jb25maWcueHlHcmlkQ2VsbFNpemUpO1xuXG4gICAgY29uc3Qgc3RhdGlvbldpZHRoID0gdGhpcy5jb25maWcuc3BhdGlhbEhvcml6b24gKyBsYXR0aWNlU3RhdGlvbkludGVydmFsICogMjtcbiAgICBjb25zdCBzbENlbnRlclBvaW50ID0gbmV3IFRIUkVFLlZlY3RvcjIodGhpcy5jb25maWcuc3BhdGlhbEhvcml6b24gLyAyLCAwKTtcblxuICAgIC8vIFNpemVzIG9mIHRoZSBzbCBncmlkcyAoaW4gcGl4ZWxzLCBub3QgbWV0ZXJzKVxuICAgIGNvbnN0IHNsV2lkdGggPSBNYXRoLmNlaWwoc3RhdGlvbldpZHRoIC8gdGhpcy5jb25maWcuc2xHcmlkQ2VsbFNpemUpO1xuICAgIGNvbnN0IHNsSGVpZ2h0ID0gTWF0aC5jZWlsKCh0aGlzLmNvbmZpZy5yb2FkV2lkdGggKyB0aGlzLmNvbmZpZy5ncmlkTWFyZ2luICogMikgLyB0aGlzLmNvbmZpZy5zbEdyaWRDZWxsU2l6ZSk7XG5cbiAgICBsZXQgc3RhcnRTdGF0aW9uO1xuXG4gICAgaWYgKHRoaXMucHJldmlvdXNTdGFydFN0YXRpb24gPT09IG51bGwgfHwgdmVoaWNsZVN0YXRpb24gKyBsYXR0aWNlU3RhdGlvbkludGVydmFsIC8gMiA+IHRoaXMucHJldmlvdXNTdGFydFN0YXRpb24pIHtcbiAgICAgIHN0YXJ0U3RhdGlvbiA9ICh0aGlzLnByZXZpb3VzU3RhcnRTdGF0aW9uID09PSBudWxsID8gdmVoaWNsZVN0YXRpb24gOiB0aGlzLnByZXZpb3VzU3RhcnRTdGF0aW9uKSArIGxhdHRpY2VTdGF0aW9uSW50ZXJ2YWw7XG4gICAgICB0aGlzLnByZXZpb3VzU3RhcnRTdGF0aW9uID0gc3RhcnRTdGF0aW9uO1xuICAgICAgdGhpcy5wcmV2aW91c0ZpcnN0TGF0dGljZVBvaW50IC09IHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzO1xuICAgICAgdGhpcy5wcmV2aW91c1NlY29uZExhdHRpY2VQb2ludCAtPSB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRTdGF0aW9uID0gdGhpcy5wcmV2aW91c1N0YXJ0U3RhdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBsYXR0aWNlID0gdGhpcy5fYnVpbGRMYXR0aWNlKGxhbmVQYXRoLCBzdGFydFN0YXRpb24sIHZlaGljbGVQb3NlLnJvdCwgdmVoaWNsZVhmb3JtKTtcblxuICAgIGNvbnN0IHRlbXBvcmFsSG9yaXpvbiA9IHRoaXMuY29uZmlnLnNwYXRpYWxIb3Jpem9uIC8gdGhpcy5jb25maWcuc3BlZWRMaW1pdDtcbiAgICBjb25zdCBkeW5hbWljRnJhbWVUaW1lID0gdGVtcG9yYWxIb3Jpem9uIC8gdGhpcy5jb25maWcubnVtRHluYW1pY0ZyYW1lcztcblxuICAgIGZvciAoY29uc3QgW2ksIHBdIG9mIFtcbiAgICAgIHh5T2JzdGFjbGVHcmlkLnVwZGF0ZSh0aGlzLmNvbmZpZywgeHlXaWR0aCwgeHlIZWlnaHQsIHh5Q2VudGVyUG9pbnQsIHZlaGljbGVYZm9ybSwgc3RhdGljT2JzdGFjbGVzKSxcbiAgICAgIHNsT2JzdGFjbGVHcmlkLnVwZGF0ZSh0aGlzLmNvbmZpZywgc2xXaWR0aCwgc2xIZWlnaHQsIHNsQ2VudGVyUG9pbnQsIHh5Q2VudGVyUG9pbnQpLFxuICAgICAgLi4uc2xPYnN0YWNsZUdyaWREaWxhdGlvbi51cGRhdGUodGhpcy5jb25maWcsIHNsV2lkdGgsIHNsSGVpZ2h0KSxcbiAgICAgIHNsRHluYW1pY09ic3RhY2xlR3JpZC51cGRhdGUodGhpcy5jb25maWcsIHNsV2lkdGgsIHNsSGVpZ2h0LCBzbENlbnRlclBvaW50LCB2ZWhpY2xlU3RhdGlvbiwgc3RhcnRUaW1lLCBkeW5hbWljRnJhbWVUaW1lLCBkeW5hbWljT2JzdGFjbGVzKSxcbiAgICAgIHh5c2xNYXAudXBkYXRlKHRoaXMuY29uZmlnLCB4eVdpZHRoLCB4eUhlaWdodCwgeHlDZW50ZXJQb2ludCksXG4gICAgICAuLi5vcHRpbWl6ZUN1YmljUGF0aHMudXBkYXRlKHRoaXMuY29uZmlnLCB2ZWhpY2xlUG9zZSksXG4gICAgICBvcHRpbWl6ZVF1aW50aWNQYXRocy51cGRhdGUodGhpcy5jb25maWcsIHZlaGljbGVQb3NlKSxcbiAgICAgIC4uLnBhdGhGcm9tVmVoaWNsZUNvc3RzLnVwZGF0ZSh0aGlzLmNvbmZpZywgdmVoaWNsZVBvc2UsIHh5Q2VudGVyUG9pbnQsIHNsQ2VudGVyUG9pbnQsIHRoaXMucHJldmlvdXNGaXJzdExhdHRpY2VQb2ludCwgdGhpcy5wcmV2aW91c1NlY29uZExhdHRpY2VQb2ludCwgZHluYW1pY0ZyYW1lVGltZSksXG4gICAgICBncmFwaFNlYXJjaC51cGRhdGUodGhpcy5jb25maWcsIHZlaGljbGVQb3NlLCB4eUNlbnRlclBvaW50LCBzbENlbnRlclBvaW50LCB0aGlzLnByZXZpb3VzRmlyc3RMYXR0aWNlUG9pbnQsIHRoaXMucHJldmlvdXNTZWNvbmRMYXR0aWNlUG9pbnQsIGR5bmFtaWNGcmFtZVRpbWUpXG4gICAgXS5lbnRyaWVzKCkpIHtcbiAgICAgIHRoaXMuZ3BncHUudXBkYXRlUHJvZ3JhbShpLCBwKTtcbiAgICB9XG5cbiAgICB0aGlzLmdwZ3B1LnVwZGF0ZVNoYXJlZFRleHR1cmVzKHtcbiAgICAgIGNlbnRlcmxpbmU6IHtcbiAgICAgICAgd2lkdGg6IGNlbnRlcmxpbmUubGVuZ3RoLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIGNoYW5uZWxzOiAzLFxuICAgICAgICBmaWx0ZXI6ICdsaW5lYXInLFxuICAgICAgICBkYXRhOiBjZW50ZXJsaW5lRGF0YVxuICAgICAgfSxcbiAgICAgIGNvc3RUYWJsZToge1xuICAgICAgICB3aWR0aDogTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUyAqIE5VTV9WRUxPQ0lUWV9SQU5HRVMgKiBOVU1fVElNRV9SQU5HRVMsXG4gICAgICAgIGhlaWdodDogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMsXG4gICAgICAgIGRlcHRoOiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zLFxuICAgICAgICBjaGFubmVsczogNCxcbiAgICAgICAgdGV4dHVyZVR5cGU6ICcyREFycmF5J1xuICAgICAgfSxcbiAgICAgIGxhdHRpY2U6IHtcbiAgICAgICAgd2lkdGg6IHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzLFxuICAgICAgICBoZWlnaHQ6IHRoaXMuY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMsXG4gICAgICAgIGNoYW5uZWxzOiA0LFxuICAgICAgICBkYXRhOiBsYXR0aWNlXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmdwZ3B1Ll9ncmFwaFNlYXJjaENvc3RUYWJsZSA9IG51bGw7XG4gICAgdGhpcy5ncGdwdS5fZHluYW1pY09ic3RhY2xlR3JpZCA9IG51bGw7XG5cbiAgICBsZXQgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBvdXRwdXRzID0gdGhpcy5ncGdwdS5ydW4oKTtcbiAgICBjb25zdCBjb3N0VGFibGUgPSB0aGlzLmdwZ3B1Ll9ncmFwaFNlYXJjaENvc3RUYWJsZTtcbiAgICBjb25zdCBjdWJpY1BhdGhQYXJhbXMgPSBvdXRwdXRzWzZdO1xuICAgIGNvbnN0IGN1YmljUGF0aEZyb21WZWhpY2xlUGFyYW1zID0gb3V0cHV0c1s3XTtcbiAgICBjb25zdCBxdWludGljUGF0aEZyb21WZWhpY2xlUGFyYW1zID0gb3V0cHV0c1s4XTtcblxuICAgIGxldCBiZXN0RW50cnkgPSBbTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXTtcbiAgICBsZXQgYmVzdEVudHJ5SW5kZXg7XG4gICAgY29uc3QgbnVtRW50cmllcyA9IGNvc3RUYWJsZS5sZW5ndGggLyA0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyBpKyspIHtcbiAgICAgIGNvbnN0IGVudHJ5VW5wYWNrZWQgPSB0aGlzLl91bnBhY2tDb3N0VGFibGVJbmRleChpKTtcbiAgICAgIGNvbnN0IGVudHJ5ID0gW1xuICAgICAgICBjb3N0VGFibGVbaSAqIDRdLFxuICAgICAgICBjb3N0VGFibGVbaSAqIDQgKyAxXSxcbiAgICAgICAgY29zdFRhYmxlW2kgKiA0ICsgMl0sXG4gICAgICAgIGNvc3RUYWJsZVtpICogNCArIDNdXG4gICAgICBdO1xuXG4gICAgICBpZiAoZW50cnlbMF0gPCAwKSBjb250aW51ZTtcblxuICAgICAgZW50cnlbMF0gKz0gdGhpcy5fdGVybWluYWxDb3N0KGVudHJ5VW5wYWNrZWQsIGVudHJ5KTtcblxuICAgICAgaWYgKGVudHJ5WzBdIDwgYmVzdEVudHJ5WzBdKSB7XG4gICAgICAgIGJlc3RFbnRyeUluZGV4ID0gaTtcbiAgICAgICAgYmVzdEVudHJ5ID0gZW50cnk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW52ZXJzZVZlaGljbGVYZm9ybSA9IChuZXcgVEhSRUUuTWF0cml4MygpKS5nZXRJbnZlcnNlKHZlaGljbGVYZm9ybSk7XG4gICAgbGV0IGJlc3RUcmFqZWN0b3J5ID0gbnVsbDtcbiAgICBsZXQgZnJvbVZlaGljbGVTZWdtZW50ID0gbnVsbDtcbiAgICBsZXQgZnJvbVZlaGljbGVQYXJhbXMgPSBudWxsO1xuICAgIGxldCBmaXJzdExhdHRpY2VQb2ludCA9IC0xO1xuICAgIGxldCBmaXJzdEFjY2VsZXJhdGlvbiA9IC0xO1xuICAgIGxldCBzZWNvbmRMYXR0aWNlUG9pbnQgPSAtMTtcbiAgICBsZXQgc2Vjb25kQWNjZWxlcmF0aW9uID0gLTE7XG5cbiAgICBpZiAoaXNGaW5pdGUoYmVzdEVudHJ5WzBdKSkge1xuICAgICAgW2Jlc3RUcmFqZWN0b3J5LCBmcm9tVmVoaWNsZVNlZ21lbnQsIGZyb21WZWhpY2xlUGFyYW1zLCBmaXJzdExhdHRpY2VQb2ludCwgZmlyc3RBY2NlbGVyYXRpb24sIHNlY29uZExhdHRpY2VQb2ludCwgc2Vjb25kQWNjZWxlcmF0aW9uXSA9IHRoaXMuX3JlY29uc3RydWN0VHJhamVjdG9yeShcbiAgICAgICAgYmVzdEVudHJ5SW5kZXgsXG4gICAgICAgIGNvc3RUYWJsZSxcbiAgICAgICAgY3ViaWNQYXRoUGFyYW1zLFxuICAgICAgICBjdWJpY1BhdGhGcm9tVmVoaWNsZVBhcmFtcyxcbiAgICAgICAgcXVpbnRpY1BhdGhGcm9tVmVoaWNsZVBhcmFtcyxcbiAgICAgICAgdmVoaWNsZVBvc2UsXG4gICAgICAgIGxhdHRpY2VcbiAgICAgICk7XG5cbiAgICAgIGZyb21WZWhpY2xlU2VnbWVudC5mb3JFYWNoKHAgPT4ge1xuICAgICAgICBwLnBvcyA9IHAucG9zLmFwcGx5TWF0cml4MyhpbnZlcnNlVmVoaWNsZVhmb3JtKTtcbiAgICAgICAgcC5yb3QgKz0gdmVoaWNsZVBvc2Uucm90O1xuICAgICAgfSk7XG5cbiAgICAgIGJlc3RUcmFqZWN0b3J5LmZvckVhY2gocCA9PiB7XG4gICAgICAgIHAucG9zID0gcC5wb3MuYXBwbHlNYXRyaXgzKGludmVyc2VWZWhpY2xlWGZvcm0pO1xuICAgICAgICBwLnJvdCArPSB2ZWhpY2xlUG9zZS5yb3Q7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZpb3VzRmlyc3RMYXR0aWNlUG9pbnQgPSBmaXJzdExhdHRpY2VQb2ludDtcbiAgICB0aGlzLnByZXZpb3VzRmlyc3RBY2NlbGVyYXRpb24gPSBmaXJzdEFjY2VsZXJhdGlvbjtcbiAgICB0aGlzLnByZXZpb3VzU2Vjb25kTGF0dGljZVBvaW50ID0gc2Vjb25kTGF0dGljZVBvaW50O1xuICAgIHRoaXMucHJldmlvdXNTZWNvbmRBY2NlbGVyYXRpb24gPSBzZWNvbmRBY2NlbGVyYXRpb247XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogYmVzdFRyYWplY3RvcnksXG4gICAgICBmcm9tVmVoaWNsZVNlZ21lbnQ6IGZyb21WZWhpY2xlU2VnbWVudCxcbiAgICAgIGZyb21WZWhpY2xlUGFyYW1zOiBmcm9tVmVoaWNsZVBhcmFtcyxcbiAgICAgIGxhdHRpY2VTdGFydFN0YXRpb246IHRoaXMucHJldmlvdXNTdGFydFN0YXRpb24sXG4gICAgICBkeW5hbWljT2JzdGFjbGVHcmlkOiB7IGRhdGE6IHRoaXMuZ3BncHUuX2R5bmFtaWNPYnN0YWNsZUdyaWQsIHdpZHRoOiBzbFdpZHRoLCBoZWlnaHQ6IHNsSGVpZ2h0IH1cbiAgICB9O1xuICB9XG5cbiAgX2J1aWxkTGF0dGljZShsYW5lUGF0aCwgc3RhcnRTdGF0aW9uLCB2ZWhpY2xlUm90LCB2ZWhpY2xlWGZvcm0pIHtcbiAgICBjb25zdCBjZW50ZXJsaW5lID0gbGFuZVBhdGguc2FtcGxlU3RhdGlvbnMoc3RhcnRTdGF0aW9uLCB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zLCB0aGlzLl9sYXR0aWNlU3RhdGlvbkludGVydmFsKCkpO1xuICAgIGNvbnN0IG9mZnNldCA9IE1hdGguZmxvb3IodGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgLyAyKTtcbiAgICBjb25zdCBsYXR0aWNlID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zICogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKiA0KTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgZm9yIChsZXQgcyA9IDA7IHMgPCBjZW50ZXJsaW5lLmxlbmd0aDsgcysrKSB7XG4gICAgICBjb25zdCBzYW1wbGUgPSBjZW50ZXJsaW5lW3NdO1xuXG4gICAgICBmb3IgKGxldCBsID0gMDsgbCA8IHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzOyBsKyspIHtcbiAgICAgICAgY29uc3QgbGF0aXR1ZGUgPSAobCAtIG9mZnNldCkgLyBvZmZzZXQgKiB0aGlzLmNvbmZpZy5yb2FkV2lkdGggLyAyO1xuICAgICAgICBjb25zdCByb3QgPSBzYW1wbGUucm90IC0gdmVoaWNsZVJvdDtcbiAgICAgICAgY29uc3QgcG9zID0gVEhSRUUuVmVjdG9yMi5mcm9tQW5nbGUocm90ICsgTWF0aC5QSSAvIDIpLm11bHRpcGx5U2NhbGFyKGxhdGl0dWRlKS5hZGQoc2FtcGxlLnBvcy5jbG9uZSgpLmFwcGx5TWF0cml4Myh2ZWhpY2xlWGZvcm0pKTtcbiAgICAgICAgY29uc3QgY3VydiA9IHNhbXBsZS5jdXJ2ID09IDAgPyAwIDogMSAvICgxIC8gc2FtcGxlLmN1cnYgLSBsYXRpdHVkZSk7XG5cbiAgICAgICAgbGF0dGljZVtpbmRleCsrXSA9IHBvcy54O1xuICAgICAgICBsYXR0aWNlW2luZGV4KytdID0gcG9zLnk7XG4gICAgICAgIGxhdHRpY2VbaW5kZXgrK10gPSByb3Q7XG4gICAgICAgIGxhdHRpY2VbaW5kZXgrK10gPSBjdXJ2O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYXR0aWNlO1xuICB9XG5cbiAgX2xhdHRpY2VTdGF0aW9uSW50ZXJ2YWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnNwYXRpYWxIb3Jpem9uIC8gdGhpcy5jb25maWcubGF0dGljZS5udW1TdGF0aW9ucztcbiAgfVxuXG4gIF90ZXJtaW5hbENvc3QoW3N0YXRpb25JbmRleCwgbGF0aXR1ZGVJbmRleCwgdGltZUluZGV4LCB2ZWxvY2l0eUluZGV4LCBhY2NlbGVyYXRpb25JbmRleF0sIFtjb3N0LCBmaW5hbFZlbG9jaXR5LCBmaW5hbFRpbWUsIGluY29taW5nSW5kZXhdKSB7XG4gICAgLy8gT25seSBjb25zaWRlciB2ZXJ0aWNlcyB0aGF0IHJlYWNoIHRoZSBlbmQgb2YgdGhlIHNwYXRpYWwgb3IgdGVtcG9yYWwgaG9yaXpvblxuICAgIGlmIChzdGF0aW9uSW5kZXggIT0gdGhpcy5jb25maWcubGF0dGljZS5udW1TdGF0aW9ucyAtIDEgJiYgZmluYWxWZWxvY2l0eSA+IDAuMDUpXG4gICAgICByZXR1cm4gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuXG4gICAgY29uc3Qgc3RhdGlvbiA9ICh0aGlzLmNvbmZpZy5zcGF0aWFsSG9yaXpvbiAvIHRoaXMuY29uZmlnLmxhdHRpY2UubnVtU3RhdGlvbnMpICogKHN0YXRpb25JbmRleCArIDEpO1xuXG4gICAgcmV0dXJuIHN0YXRpb24gKiAtdGhpcy5jb25maWcuc3RhdGlvblJlYWNoRGlzY291bnQgKyBmaW5hbFRpbWUgKiB0aGlzLmNvbmZpZy5leHRyYVRpbWVQZW5hbHR5O1xuICB9XG5cbiAgX3VucGFja0Nvc3RUYWJsZUluZGV4KGluZGV4KSB7XG4gICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIFstMSwgaW5kZXggKyAyLCBudWxsLCBudWxsLCBudWxsXTtcblxuICAgIGNvbnN0IG51bVBlclRpbWUgPSBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTICogTlVNX1ZFTE9DSVRZX1JBTkdFUztcbiAgICBjb25zdCBudW1QZXJMYXRpdHVkZSA9IG51bVBlclRpbWUgKiBOVU1fVElNRV9SQU5HRVM7XG4gICAgY29uc3QgbnVtUGVyU3RhdGlvbiA9IHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzICogbnVtUGVyTGF0aXR1ZGU7XG5cbiAgICBjb25zdCBzdGF0aW9uSW5kZXggPSBNYXRoLmZsb29yKGluZGV4IC8gbnVtUGVyU3RhdGlvbik7XG4gICAgaW5kZXggLT0gc3RhdGlvbkluZGV4ICogbnVtUGVyU3RhdGlvbjtcblxuICAgIGNvbnN0IGxhdGl0dWRlSW5kZXggPSBNYXRoLmZsb29yKGluZGV4IC8gbnVtUGVyTGF0aXR1ZGUpO1xuICAgIGluZGV4IC09IGxhdGl0dWRlSW5kZXggKiBudW1QZXJMYXRpdHVkZTtcblxuICAgIGNvbnN0IHRpbWVJbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyBudW1QZXJUaW1lKTtcbiAgICBpbmRleCAtPSB0aW1lSW5kZXggKiBudW1QZXJUaW1lO1xuXG4gICAgY29uc3QgdmVsb2NpdHlJbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyBOVU1fQUNDRUxFUkFUSU9OX1BST0ZJTEVTKTtcbiAgICBjb25zdCBhY2NlbGVyYXRpb25JbmRleCA9IGluZGV4ICUgTlVNX0FDQ0VMRVJBVElPTl9QUk9GSUxFUztcblxuICAgIHJldHVybiBbc3RhdGlvbkluZGV4LCBsYXRpdHVkZUluZGV4LCB0aW1lSW5kZXgsIHZlbG9jaXR5SW5kZXgsIGFjY2VsZXJhdGlvbkluZGV4XTtcbiAgfVxuXG4gIF9yZWNvbnN0cnVjdFRyYWplY3RvcnkoaW5kZXgsIGNvc3RUYWJsZSwgY3ViaWNQYXRoUGFyYW1zLCBjdWJpY1BhdGhGcm9tVmVoaWNsZVBhcmFtcywgcXVpbnRpY1BhdGhGcm9tVmVoaWNsZVBhcmFtcywgdmVoaWNsZVBvc2UsIGxhdHRpY2UpIHtcbiAgICBsZXQgdW5wYWNrZWQgPSB0aGlzLl91bnBhY2tDb3N0VGFibGVJbmRleChpbmRleCk7XG4gICAgdW5wYWNrZWQucHVzaChjb3N0VGFibGVbaW5kZXggKiA0ICsgMV0pO1xuICAgIGNvbnN0IG5vZGVzID0gW3VucGFja2VkXTtcblxuICAgIGxldCBjb3VudCA9IDA7XG4gICAgd2hpbGUgKHVucGFja2VkWzBdID49IDAgJiYgY291bnQrKyA8IDEwMCkge1xuICAgICAgaW5kZXggPSBjb3N0VGFibGVbaW5kZXggKiA0ICsgM107XG4gICAgICB1bnBhY2tlZCA9IHRoaXMuX3VucGFja0Nvc3RUYWJsZUluZGV4KGluZGV4KTtcblxuICAgICAgY29uc3QgZmluYWxWZWxvY2l0eSA9IHVucGFja2VkWzBdID49IDAgPyBjb3N0VGFibGVbaW5kZXggKiA0ICsgMV0gOiB2ZWhpY2xlUG9zZS52ZWxvY2l0eTtcbiAgICAgIHVucGFja2VkLnB1c2goZmluYWxWZWxvY2l0eSk7XG5cbiAgICAgIG5vZGVzLnVuc2hpZnQodW5wYWNrZWQpO1xuICAgIH1cbiAgICBpZiAoY291bnQgPj0gMTAwKSB0aHJvdyBuZXcgRXJyb3IoJ0luZmluaXRlIGxvb3AgZW5jb3VudGVyZWQgd2hpbGUgcmVjb25zdHJ1Y3RpbmcgdHJhamVjdG9yeS4nKTtcblxuICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgIGxldCBmcm9tVmVoaWNsZVNlZ21lbnQgPSBbXTtcbiAgICBsZXQgZnJvbVZlaGljbGVQYXJhbXMgPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IFtwcmV2U3RhdGlvbiwgcHJldkxhdGl0dWRlLCBfcHQsIF9wdiwgX3BhLCBwcmV2VmVsb2NpdHldID0gbm9kZXNbaV07XG4gICAgICBjb25zdCBbc3RhdGlvbiwgbGF0aXR1ZGUsIF90LCBfdiwgX2EsIHZlbG9jaXR5XSA9IG5vZGVzW2kgKyAxXTtcblxuICAgICAgbGV0IGxlbmd0aDtcbiAgICAgIGxldCBwYXRoQnVpbGRlcjtcblxuICAgICAgaWYgKHByZXZTdGF0aW9uIDwgMCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHtcbiAgICAgICAgICBwb3M6IG5ldyBUSFJFRS5WZWN0b3IyKDAsIDApLFxuICAgICAgICAgIHJvdDogMCxcbiAgICAgICAgICBjdXJ2OiB2ZWhpY2xlUG9zZS5jdXJ2XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSAoc3RhdGlvbiAqIHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzICsgbGF0aXR1ZGUpICogNDtcbiAgICAgICAgY29uc3QgZW5kID0ge1xuICAgICAgICAgIHBvczogbmV3IFRIUkVFLlZlY3RvcjIobGF0dGljZVtlbmRJbmRleF0sIGxhdHRpY2VbZW5kSW5kZXggKyAxXSksXG4gICAgICAgICAgcm90OiBsYXR0aWNlW2VuZEluZGV4ICsgMl0sXG4gICAgICAgICAgY3VydjogbGF0dGljZVtlbmRJbmRleCArIDNdXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHByZXZMYXRpdHVkZSA9PSAwKSB7IC8vIEN1YmljIHBhdGggZnJvbSB2ZWhpY2xlIHRvIGxhdHRpY2Ugbm9kZVxuICAgICAgICAgIGxlbmd0aCA9IGN1YmljUGF0aEZyb21WZWhpY2xlUGFyYW1zW2VuZEluZGV4ICsgMl07XG5cbiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBwMTogY3ViaWNQYXRoRnJvbVZlaGljbGVQYXJhbXNbZW5kSW5kZXhdLFxuICAgICAgICAgICAgcDI6IGN1YmljUGF0aEZyb21WZWhpY2xlUGFyYW1zW2VuZEluZGV4ICsgMV0sXG4gICAgICAgICAgICBzRzogbGVuZ3RoXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHBhdGhCdWlsZGVyID0gbmV3IEN1YmljUGF0aChzdGFydCwgZW5kLCBwYXJhbXMpO1xuXG4gICAgICAgICAgZnJvbVZlaGljbGVQYXJhbXMgPSB7IHR5cGU6ICdjdWJpYycsIHBhcmFtczogcGFyYW1zIH07XG4gICAgICAgIH0gZWxzZSB7IC8vIFF1aW50aWMgcGF0aCBmcm9tIHZlaGljbGUgdG8gbGF0dGljZSBub2RlXG4gICAgICAgICAgbGVuZ3RoID0gcXVpbnRpY1BhdGhGcm9tVmVoaWNsZVBhcmFtc1tlbmRJbmRleCArIDJdO1xuXG4gICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgcDM6IHF1aW50aWNQYXRoRnJvbVZlaGljbGVQYXJhbXNbZW5kSW5kZXhdLFxuICAgICAgICAgICAgcDQ6IHF1aW50aWNQYXRoRnJvbVZlaGljbGVQYXJhbXNbZW5kSW5kZXggKyAxXSxcbiAgICAgICAgICAgIHNHOiBsZW5ndGhcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcGF0aEJ1aWxkZXIgPSBuZXcgUXVpbnRpY1BhdGgoc3RhcnQsIGVuZCwgcGFyYW1zKTtcblxuICAgICAgICAgIGZyb21WZWhpY2xlUGFyYW1zID0geyB0eXBlOiAncXVpbnRpYycsIHBhcmFtczogcGFyYW1zIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSAocHJldlN0YXRpb24gKiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bUxhdGl0dWRlcyArIHByZXZMYXRpdHVkZSkgKiA0O1xuICAgICAgICBjb25zdCBlbmRJbmRleCA9IChzdGF0aW9uICogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKyBsYXRpdHVkZSkgKiA0O1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0ge1xuICAgICAgICAgIHBvczogbmV3IFRIUkVFLlZlY3RvcjIobGF0dGljZVtzdGFydEluZGV4XSwgbGF0dGljZVtzdGFydEluZGV4ICsgMV0pLFxuICAgICAgICAgIHJvdDogbGF0dGljZVtzdGFydEluZGV4ICsgMl0sXG4gICAgICAgICAgY3VydjogbGF0dGljZVtzdGFydEluZGV4ICsgM11cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBlbmQgPSB7XG4gICAgICAgICAgcG9zOiBuZXcgVEhSRUUuVmVjdG9yMihsYXR0aWNlW2VuZEluZGV4XSwgbGF0dGljZVtlbmRJbmRleCArIDFdKSxcbiAgICAgICAgICByb3Q6IGxhdHRpY2VbZW5kSW5kZXggKyAyXSxcbiAgICAgICAgICBjdXJ2OiBsYXR0aWNlW2VuZEluZGV4ICsgM11cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzbEluZGV4ID0gc3RhdGlvbiAqIHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzICsgbGF0aXR1ZGU7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpdml0eUluZGV4ID0gKHByZXZTdGF0aW9uIC0gc3RhdGlvbiArIHRoaXMuY29uZmlnLmxhdHRpY2Uuc3RhdGlvbkNvbm5lY3Rpdml0eSkgKiB0aGlzLmNvbmZpZy5sYXR0aWNlLmxhdGl0dWRlQ29ubmVjdGl2aXR5ICsgcHJldkxhdGl0dWRlIC0gbGF0aXR1ZGUgKyBNYXRoLmZsb29yKHRoaXMuY29uZmlnLmxhdHRpY2UubGF0aXR1ZGVDb25uZWN0aXZpdHkgLyAyKTtcbiAgICAgICAgY29uc3QgY3ViaWNQYXRoSW5kZXggPSAoY29ubmVjdGl2aXR5SW5kZXggKiB0aGlzLmNvbmZpZy5sYXR0aWNlLm51bVN0YXRpb25zICogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKyBzbEluZGV4KSAqIDQ7XG5cbiAgICAgICAgbGVuZ3RoID0gY3ViaWNQYXRoUGFyYW1zW2N1YmljUGF0aEluZGV4ICsgMl07XG5cbiAgICAgICAgcGF0aEJ1aWxkZXIgPSBuZXcgQ3ViaWNQYXRoKHN0YXJ0LCBlbmQsIHtcbiAgICAgICAgICBwMTogY3ViaWNQYXRoUGFyYW1zW2N1YmljUGF0aEluZGV4XSxcbiAgICAgICAgICBwMjogY3ViaWNQYXRoUGFyYW1zW2N1YmljUGF0aEluZGV4ICsgMV0sXG4gICAgICAgICAgc0c6IGxlbmd0aFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF0aCA9IHBhdGhCdWlsZGVyLmJ1aWxkUGF0aChNYXRoLmNlaWwobGVuZ3RoIC8gMC4yNSkpO1xuXG4gICAgICBjb25zdCBwcmV2VmVsb2NpdHlTcSA9IHByZXZWZWxvY2l0eSAqIHByZXZWZWxvY2l0eTtcbiAgICAgIGNvbnN0IGFjY2VsID0gKHZlbG9jaXR5ICogdmVsb2NpdHkgLSBwcmV2VmVsb2NpdHlTcSkgLyAyIC8gbGVuZ3RoO1xuICAgICAgY29uc3QgZHMgPSBsZW5ndGggLyAocGF0aC5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBzID0gMDtcblxuICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCBwYXRoLmxlbmd0aDsgcCsrKSB7XG4gICAgICAgIHBhdGhbcF0udmVsb2NpdHkgPSBNYXRoLnNxcnQoMiAqIGFjY2VsICogcyArIHByZXZWZWxvY2l0eVNxKTtcbiAgICAgICAgcGF0aFtwXS5hY2NlbGVyYXRpb24gPSBhY2NlbDtcbiAgICAgICAgcyArPSBkcztcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZTdGF0aW9uIDwgMCkge1xuICAgICAgICBmcm9tVmVoaWNsZVNlZ21lbnQgPSBwYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGkgPiAwKSBwYXRoLnNoaWZ0KCk7XG4gICAgICAgIHBvaW50cy5wdXNoKC4uLnBhdGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBmaXJzdExhdHRpY2VQb2ludCA9IG51bGxcbiAgICBsZXQgZmlyc3RBY2NlbGVyYXRpb24gPSBudWxsO1xuICAgIGxldCBzZWNvbmRMYXR0aWNlUG9pbnQgPSBudWxsO1xuICAgIGxldCBzZWNvbmRBY2NlbGVyYXRpb24gPSBudWxsO1xuXG4gICAgaWYgKG5vZGVzLmxlbmd0aCA+PSAyKSB7XG4gICAgICBmaXJzdExhdHRpY2VQb2ludCA9IG5vZGVzWzFdWzBdICogdGhpcy5jb25maWcubGF0dGljZS5udW1MYXRpdHVkZXMgKyBub2Rlc1sxXVsxXTtcbiAgICAgIGZpcnN0QWNjZWxlcmF0aW9uID0gbm9kZXNbMV1bNF07XG4gICAgfVxuXG4gICAgaWYgKG5vZGVzLmxlbmd0aCA+PSAzKSB7XG4gICAgICBzZWNvbmRMYXR0aWNlUG9pbnQgPSBub2Rlc1syXVswXSAqIHRoaXMuY29uZmlnLmxhdHRpY2UubnVtTGF0aXR1ZGVzICsgbm9kZXNbMl1bMV07XG4gICAgICBzZWNvbmRBY2NlbGVyYXRpb24gPSBub2Rlc1syXVs0XTtcbiAgICB9XG5cbiAgICByZXR1cm4gW3BvaW50cywgZnJvbVZlaGljbGVTZWdtZW50LCBmcm9tVmVoaWNsZVBhcmFtcywgZmlyc3RMYXR0aWNlUG9pbnQsIGZpcnN0QWNjZWxlcmF0aW9uLCBzZWNvbmRMYXR0aWNlUG9pbnQsIHNlY29uZEFjY2VsZXJhdGlvbl07XG4gIH1cbn1cblxuZnVuY3Rpb24gdmVoaWNsZVRyYW5zZm9ybSh7IHBvcywgcm90IH0pIHtcbiAgY29uc3QgdHJhbnNsYXRlID0gbmV3IFRIUkVFLk1hdHJpeDMoKTtcbiAgdHJhbnNsYXRlLnNldChcbiAgICAxLCAwLCAtcG9zLngsXG4gICAgMCwgMSwgLXBvcy55LFxuICAgIDAsIDAsIDFcbiAgKTtcblxuICBjb25zdCBjb3NSb3QgPSBNYXRoLmNvcyhyb3QpO1xuICBjb25zdCBzaW5Sb3QgPSBNYXRoLnNpbihyb3QpO1xuXG4gIGNvbnN0IHJvdGF0ZSA9IG5ldyBUSFJFRS5NYXRyaXgzKCk7XG4gIHJvdGF0ZS5zZXQoXG4gICAgY29zUm90LCBzaW5Sb3QsIDAsXG4gICAgLXNpblJvdCwgY29zUm90LCAwLFxuICAgIDAsIDAsIDFcbiAgKTtcblxuICByZXR1cm4gcm90YXRlLm11bHRpcGx5KHRyYW5zbGF0ZSk7XG59XG5cbmZ1bmN0aW9uIG9ic3RhY2xlVHJhbnNmb3JtKHZlaGljbGVYZm9ybSwgeHlDZW50ZXJQb2ludCwgd2lkdGgsIGhlaWdodCkge1xuICBjb25zdCB0cmFuc2xhdGUgPSBuZXcgVEhSRUUuTWF0cml4MygpO1xuICB0cmFuc2xhdGUuc2V0KFxuICAgIDEsIDAsIC14eUNlbnRlclBvaW50LngsXG4gICAgMCwgMSwgLXh5Q2VudGVyUG9pbnQueSxcbiAgICAwLCAwLCAxXG4gICk7XG5cbiAgY29uc3Qgc2NhbGUgPSBuZXcgVEhSRUUuTWF0cml4MygpO1xuICBzY2FsZS5zZXQoXG4gICAgMiAvIHdpZHRoLCAwLCAwLFxuICAgIDAsIDIgLyBoZWlnaHQsIDAsXG4gICAgMCwgMCwgMVxuICApO1xuXG4gIHJldHVybiBzY2FsZS5tdWx0aXBseSh0cmFuc2xhdGUpLm11bHRpcGx5KHZlaGljbGVYZm9ybSk7XG59XG4iLCJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4dGVybmFsUGF0aFBsYW5uZXIge1xuICBfUExBTk5JTkdfU0VSVkVSX1VSTCA9ICdodHRwOi8vMTI3LjAuMC4xOjk5OTkvJ1xuXG4gIHBsYW4odmVoaWNsZVBvc2UsIHZlaGljbGVTdGF0aW9uLCBsYW5lUGF0aCwgc3RhcnRUaW1lLCBzdGF0aWNPYnN0YWNsZXMsIGR5bmFtaWNPYnN0YWNsZXMpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgIHZlaGljbGVQb3NlOiB2ZWhpY2xlUG9zZSxcbiAgICAgIHZlaGljbGVTdGF0aW9uOiB2ZWhpY2xlU3RhdGlvbixcbiAgICAgIGxhbmVQYXRoOiBsYW5lUGF0aCxcbiAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lLFxuICAgICAgc3RhdGljT2JzdGFjbGVzOiBzdGF0aWNPYnN0YWNsZXMsXG4gICAgICBkeW5hbWljT2JzdGFjbGVzOiBkeW5hbWljT2JzdGFjbGVzLFxuICAgIH07XG5cbiAgICB2YXIganNvblRvU2VuZCA9IEpTT04uc3RyaW5naWZ5KHN0YXRlKTtcbiAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuX3NlbmRfcmVxdWVzdChqc29uVG9TZW5kLCAncGxhbicpO1xuICAgIGNvbnN0IHBhdGggPSBKU09OLnBhcnNlKHJlc3BvbnNlKVsnc3RhdGVzJ107XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGxhbm5lcl9zdGF0ZTogXCJva1wiLFxuICAgICAgcGF0aDogcGF0aCxcbiAgICAgIGZyb21WZWhpY2xlU2VnbWVudDogW10sXG4gICAgICBmcm9tVmVoaWNsZVBhcmFtczogeyB0eXBlOidudWxsJyB9LFxuICAgICAgbGF0dGljZVN0YXJ0U3RhdGlvbjogbnVsbCxcbiAgICAgIGR5bmFtaWNPYnN0YWNsZUdyaWQ6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgLy90aGlzLm5vdGlmeV9zY2VuYXJpb19zdGF0dXMoe3N0YXR1czogXCJyZXN0YXJ0XCJ9KTtcbiAgfVxuXG4gIG5vdGlmeV9zY2VuYXJpb19zdGF0dXMoc3RhdHVzKSB7XG4gICAgdmFyIGpzb25Ub1NlbmQgPSBKU09OLnN0cmluZ2lmeShzdGF0dXMpO1xuICAgIHRoaXMuX3NlbmRfcmVxdWVzdChqc29uVG9TZW5kLCAnbm90aWZ5X2Nhc2Vfc3RhdHVzJyk7XG4gIH1cblxuICBfc2VuZF9yZXF1ZXN0KGpzb25Ub1NlbmQsIHJlcXVlc3RfbmFtZSkge1xuICAgIHZhciB1cmwgPSB0aGlzLl9QTEFOTklOR19TRVJWRVJfVVJMICsgcmVxdWVzdF9uYW1lO1xuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHhoci50aW1lb3V0ID0gNTAwMDtcbiAgICB4aHIub3BlbignUE9TVCcsIHVybCwgZmFsc2UpOyAvLyB0aGUgJ2ZhbHNlJyBtYWtlcyB0aGUgcmVxdWVzdCBzeW5jaHJvbm91c1xuICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgIHhoci5zZW5kKGpzb25Ub1NlbmQpO1xuXG4gICAgaWYgKHhoci5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIHdhcyBhbiBlcnJvciB3aXRoIHRoZSByZXF1ZXN0Jyk7XG4gICAgfVxuICB9XG59XG4iLCJjb25zdCBoYWxmTGFuZVdpZHRoID0gMy43O1xuXG5jb25zdCBjZW50ZXJsaW5lR2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnkoKTtcbmNvbnN0IGxlZnRCb3VuZGFyeUdlb21ldHJ5ID0gbmV3IFRIUkVFLkdlb21ldHJ5KCk7XG5jb25zdCByaWdodEJvdW5kYXJ5R2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnkoKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGFuZVBhdGgge1xuICBzdGF0aWMgaHlkcmF0ZShvYmopIHtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLCBMYW5lUGF0aC5wcm90b3R5cGUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hbmNob3JzID0gW107XG4gICAgdGhpcy5jZW50ZXJsaW5lcyA9IFtdO1xuICAgIHRoaXMuc2FtcGxlTGVuZ3RocyA9IFtdO1xuICAgIHRoaXMuYXJjTGVuZ3RocyA9IFtdO1xuICAgIHRoaXMubGVmdEJvdW5kYXJpZXMgPSBbXTtcbiAgICB0aGlzLnJpZ2h0Qm91bmRhcmllcyA9IFtdO1xuICB9XG5cbiAgZ2V0IGNlbnRlcmxpbmUoKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi50aGlzLmNlbnRlcmxpbmVzKTtcbiAgfVxuXG4gIGdldCBsZWZ0Qm91bmRhcnkoKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi50aGlzLmxlZnRCb3VuZGFyaWVzKTtcbiAgfVxuXG4gIGdldCByaWdodEJvdW5kYXJ5KCkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4udGhpcy5yaWdodEJvdW5kYXJpZXMpO1xuICB9XG5cbiAgZ2V0IGFyY0xlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcmNMZW5ndGhzLnJlZHVjZSgoc3VtLCBsKSA9PiBzdW0gKyBsLCAwKTtcbiAgfVxuXG4gIHNhbXBsZVN0YXRpb25zKHN0YXJ0U3RhdGlvbiwgbnVtLCBpbnRlcnZhbCkge1xuICAgIGNvbnN0IHNhbXBsZXMgPSBbXTtcbiAgICBsZXQgYW5jaG9ySW5kZXggPSAwO1xuICAgIGxldCBzYW1wbGVJbmRleCA9IDA7XG4gICAgbGV0IHRvdGFsTGVuZ3RoID0gMDtcbiAgICBsZXQgbmV4dFN0YXRpb24gPSBzdGFydFN0YXRpb247XG5cbiAgICB3aGlsZSAodG90YWxMZW5ndGggKyB0aGlzLmFyY0xlbmd0aHNbYW5jaG9ySW5kZXhdIDwgbmV4dFN0YXRpb24pIHtcbiAgICAgIHRvdGFsTGVuZ3RoICs9IHRoaXMuYXJjTGVuZ3Roc1thbmNob3JJbmRleF07XG5cbiAgICAgIGlmICgrK2FuY2hvckluZGV4ID49IHRoaXMuYXJjTGVuZ3Rocy5sZW5ndGgpXG4gICAgICAgIHJldHVybiBzYW1wbGVzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtOyBpKyspIHtcbiAgICAgIGxldCBsZW5ndGggPSB0aGlzLnNhbXBsZUxlbmd0aHNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4XTtcbiAgICAgIHdoaWxlICh0b3RhbExlbmd0aCArIGxlbmd0aCA8IG5leHRTdGF0aW9uKSB7XG4gICAgICAgIHRvdGFsTGVuZ3RoICs9IGxlbmd0aDtcblxuICAgICAgICBpZiAoKytzYW1wbGVJbmRleCA+PSB0aGlzLnNhbXBsZUxlbmd0aHNbYW5jaG9ySW5kZXhdLmxlbmd0aCkge1xuICAgICAgICAgIHNhbXBsZUluZGV4ID0gMDtcblxuICAgICAgICAgIGlmICgrK2FuY2hvckluZGV4ID49IHRoaXMuc2FtcGxlTGVuZ3Rocy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gc2FtcGxlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGxlbmd0aCA9IHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBbcDAsIHAxLCBwMiwgcDNdID0gdGhpcy5hbmNob3JzRm9yU3BsaW5lSW5kZXgoYW5jaG9ySW5kZXgpO1xuICAgICAgY29uc3Qgd2VpZ2h0ID0gKHNhbXBsZUluZGV4ICsgKG5leHRTdGF0aW9uIC0gdG90YWxMZW5ndGgpIC8gbGVuZ3RoKSAvIHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF0ubGVuZ3RoO1xuICAgICAgY29uc3QgcG9zID0gY2F0bXVsbFJvbVZlYyh3ZWlnaHQsIHAwLCBwMSwgcDIsIHAzKTtcbiAgICAgIGNvbnN0IHRhbmdlbnQgPSB0YW5nZW50QXQod2VpZ2h0LCBwMCwgcDEsIHAyLCBwMyk7XG4gICAgICBjb25zdCByb3QgPSBNYXRoLmF0YW4yKHRhbmdlbnQueSwgdGFuZ2VudC54KTtcbiAgICAgIGNvbnN0IGN1cnYgPSBjdXJ2YXR1cmVBdCh3ZWlnaHQsIHAwLCBwMSwgcDIsIHAzKTtcblxuICAgICAgc2FtcGxlcy5wdXNoKHsgcG9zLCByb3QsIGN1cnYgfSk7XG4gICAgICBuZXh0U3RhdGlvbiArPSBpbnRlcnZhbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2FtcGxlcztcbiAgfVxuXG4gIHN0YXRpb25MYXRpdHVkZUZyb21Qb3NpdGlvbihwb3NpdGlvbiwgYXJvdW5kQW5jaG9ySW5kZXggPSBudWxsKSB7XG4gICAgY29uc3QgW2FuY2hvckluZGV4LCBzYW1wbGVJbmRleCwgc2FtcGxlU3RhdGlvbiwgcHJldlNhbXBsZVN0YXRpb25dID0gdGhpcy5fZmluZENsb3Nlc3RTYW1wbGUocG9zaXRpb24sIGFyb3VuZEFuY2hvckluZGV4KTtcblxuICAgIGlmIChhbmNob3JJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gWzAsIDAsIDBdO1xuXG4gICAgbGV0IHByZXZQb2ludDtcbiAgICBsZXQgbmV4dFBvaW50O1xuICAgIGxldCBwcmV2U3RhdGlvbjtcbiAgICBsZXQgbmV4dFN0YXRpb247XG5cbiAgICBpZiAoYW5jaG9ySW5kZXggPT0gMCAmJiBzYW1wbGVJbmRleCA9PSAwKSB7XG4gICAgICBwcmV2UG9pbnQgPSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleF07XG4gICAgICBuZXh0UG9pbnQgPSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleCArIDFdO1xuICAgICAgcHJldlN0YXRpb24gPSAwO1xuICAgICAgbmV4dFN0YXRpb24gPSB0aGlzLnNhbXBsZUxlbmd0aHNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4XTtcbiAgICB9IGVsc2UgaWYgKGFuY2hvckluZGV4ID09IHRoaXMuY2VudGVybGluZXMubGVuZ3RoIC0gMSAmJiBzYW1wbGVJbmRleCA9PSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XS5sZW5ndGggLSAxKSB7XG4gICAgICBwcmV2UG9pbnQgPSB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleCAtIDFdO1xuICAgICAgbmV4dFBvaW50ID0gdGhpcy5jZW50ZXJsaW5lc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgcHJldlN0YXRpb24gPSBwcmV2U2FtcGxlU3RhdGlvbjtcbiAgICAgIG5leHRTdGF0aW9uID0gc2FtcGxlU3RhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldlBvaW50ID0gc2FtcGxlSW5kZXggPT0gMCA/IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXggLSAxXVt0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4IC0gMV0ubGVuZ3RoIC0gMV0gOiB0aGlzLmNlbnRlcmxpbmVzW2FuY2hvckluZGV4XVtzYW1wbGVJbmRleCAtIDFdO1xuICAgICAgbmV4dFBvaW50ID0gc2FtcGxlSW5kZXggPT0gdGhpcy5jZW50ZXJsaW5lc1thbmNob3JJbmRleF0ubGVuZ3RoIC0gMSA/IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXggKyAxXVswXSA6IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4ICsgMV07XG5cbiAgICAgIGNvbnN0IHBvc3NpYmxlTmV4dCA9IHRoaXMuY2VudGVybGluZXNbYW5jaG9ySW5kZXhdW3NhbXBsZUluZGV4XTtcbiAgICAgIGNvbnN0IHBvc3NpYmxlUHJvZ3Jlc3MgPSBwb3NpdGlvbi5jbG9uZSgpLnN1YihwcmV2UG9pbnQpLmRvdChwb3NzaWJsZU5leHQuY2xvbmUoKS5zdWIocHJldlBvaW50KSkgLyBwcmV2UG9pbnQuZGlzdGFuY2VUb1NxdWFyZWQocG9zc2libGVOZXh0KTtcblxuICAgICAgaWYgKHBvc3NpYmxlUHJvZ3Jlc3MgPCAxKSB7XG4gICAgICAgIG5leHRQb2ludCA9IHBvc3NpYmxlTmV4dDtcbiAgICAgICAgcHJldlN0YXRpb24gPSBwcmV2U2FtcGxlU3RhdGlvbjtcbiAgICAgICAgbmV4dFN0YXRpb24gPSBzYW1wbGVTdGF0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJldlBvaW50ID0gcG9zc2libGVOZXh0O1xuICAgICAgICBwcmV2U3RhdGlvbiA9IHNhbXBsZVN0YXRpb247XG4gICAgICAgIG5leHRTdGF0aW9uID0gc2FtcGxlU3RhdGlvbiArIHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5jbGFtcChwb3NpdGlvbi5jbG9uZSgpLnN1YihwcmV2UG9pbnQpLmRvdChuZXh0UG9pbnQuY2xvbmUoKS5zdWIocHJldlBvaW50KSkgLyBwcmV2UG9pbnQuZGlzdGFuY2VUb1NxdWFyZWQobmV4dFBvaW50KSwgMCwgMSk7XG4gICAgY29uc3QgcHJvamVjdGVkUG9zaXRpb24gPSBuZXh0UG9pbnQuY2xvbmUoKS5zdWIocHJldlBvaW50KS5tdWx0aXBseVNjYWxhcihwcm9ncmVzcykuYWRkKHByZXZQb2ludCk7XG5cbiAgICBjb25zdCBzdGF0aW9uID0gcHJldlN0YXRpb24gKyAobmV4dFN0YXRpb24gLSBwcmV2U3RhdGlvbikgKiBwcm9ncmVzcztcbiAgICBjb25zdCBsYXRpdHVkZSA9IE1hdGguc2lnbigobmV4dFBvaW50LnggLSBwcmV2UG9pbnQueCkgKiAocG9zaXRpb24ueSAtIHByZXZQb2ludC55KSAtIChuZXh0UG9pbnQueSAtIHByZXZQb2ludC55KSAqIChwb3NpdGlvbi54IC0gcHJldlBvaW50LngpKSAqIHBvc2l0aW9uLmRpc3RhbmNlVG8ocHJvamVjdGVkUG9zaXRpb24pO1xuXG4gICAgcmV0dXJuIFtzdGF0aW9uLCBsYXRpdHVkZSwgYW5jaG9ySW5kZXhdO1xuICB9XG5cbiAgX2ZpbmRDbG9zZXN0U2FtcGxlKHBvc2l0aW9uLCBhcm91bmRBbmNob3JJbmRleCA9IG51bGwpIHtcbiAgICBsZXQgY2xvc2VzdCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICBsZXQgYmVzdEFuY2hvckluZGV4O1xuICAgIGxldCBiZXN0U2FtcGxlSW5kZXg7XG4gICAgbGV0IGJlc3RTdGF0aW9uO1xuICAgIGxldCBiZXN0UHJldlN0YXRpb247XG5cbiAgICBsZXQgY3VyclN0YXRpb24gPSAwO1xuICAgIGxldCBwcmV2U3RhdGlvbiA9IDA7XG5cbiAgICBsZXQgc3RhcnRBbmNob3JJbmRleCA9IDA7XG4gICAgbGV0IGVuZEFuY2hvckluZGV4ID0gdGhpcy5jZW50ZXJsaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgaWYgKGFyb3VuZEFuY2hvckluZGV4ICE9PSBudWxsKSB7XG4gICAgICBzdGFydEFuY2hvckluZGV4ID0gTWF0aC5tYXgoMCwgYXJvdW5kQW5jaG9ySW5kZXggLSAyKTtcbiAgICAgIGVuZEFuY2hvckluZGV4ID0gTWF0aC5taW4odGhpcy5jZW50ZXJsaW5lcy5sZW5ndGggLSAxLCBhcm91bmRBbmNob3JJbmRleCArIDIpO1xuICAgIH1cblxuICAgIGlmIChzdGFydEFuY2hvckluZGV4ID4gMCkge1xuICAgICAgZm9yIChsZXQgYW5jaG9ySW5kZXggPSAwOyBhbmNob3JJbmRleCA8IHN0YXJ0QW5jaG9ySW5kZXg7IGFuY2hvckluZGV4KyspIHtcbiAgICAgICAgY3VyclN0YXRpb24gKz0gdGhpcy5hcmNMZW5ndGhzW2FuY2hvckluZGV4XTtcbiAgICAgIH1cblxuICAgICAgcHJldlN0YXRpb24gPSBjdXJyU3RhdGlvbiAtIHRoaXMuc2FtcGxlTGVuZ3Roc1tzdGFydEFuY2hvckluZGV4IC0gMV1bdGhpcy5zYW1wbGVMZW5ndGhzW3N0YXJ0QW5jaG9ySW5kZXggLSAxXS5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBhbmNob3JJbmRleCA9IHN0YXJ0QW5jaG9ySW5kZXg7IGFuY2hvckluZGV4IDw9IGVuZEFuY2hvckluZGV4OyBhbmNob3JJbmRleCsrKSB7XG4gICAgICBjb25zdCBjZW50ZXJsaW5lID0gdGhpcy5jZW50ZXJsaW5lc1thbmNob3JJbmRleF07XG4gICAgICBmb3IgKGxldCBzYW1wbGVJbmRleCA9IDA7IHNhbXBsZUluZGV4IDwgY2VudGVybGluZS5sZW5ndGg7IHNhbXBsZUluZGV4KyspIHtcbiAgICAgICAgY29uc3QgZGlzdFNxID0gcG9zaXRpb24uZGlzdGFuY2VUb1NxdWFyZWQoY2VudGVybGluZVtzYW1wbGVJbmRleF0pO1xuICAgICAgICBpZiAoZGlzdFNxIDwgY2xvc2VzdCkge1xuICAgICAgICAgIGNsb3Nlc3QgPSBkaXN0U3E7XG4gICAgICAgICAgYmVzdEFuY2hvckluZGV4ID0gYW5jaG9ySW5kZXg7XG4gICAgICAgICAgYmVzdFNhbXBsZUluZGV4ID0gc2FtcGxlSW5kZXg7XG4gICAgICAgICAgYmVzdFN0YXRpb24gPSBjdXJyU3RhdGlvbjtcbiAgICAgICAgICBiZXN0UHJldlN0YXRpb24gPSBwcmV2U3RhdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZTdGF0aW9uID0gY3VyclN0YXRpb247XG4gICAgICAgIGN1cnJTdGF0aW9uICs9IHRoaXMuc2FtcGxlTGVuZ3Roc1thbmNob3JJbmRleF1bc2FtcGxlSW5kZXhdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbYmVzdEFuY2hvckluZGV4LCBiZXN0U2FtcGxlSW5kZXgsIGJlc3RTdGF0aW9uLCBiZXN0UHJldlN0YXRpb25dO1xuICB9XG5cbiAgYWRkQW5jaG9yKHBvc2l0aW9uLCByZXNhbXBsZSA9IHRydWUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYW5jaG9ycy5wdXNoKHBvc2l0aW9uKSAtIDE7XG5cbiAgICBpZiAocmVzYW1wbGUpIHtcbiAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDI7IGkgPCBpbmRleDsgaSsrKVxuICAgICAgICB0aGlzLnJlc2FtcGxlKGkpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUFuY2hvcihpbmRleCwgcG9zaXRpb24pIHtcbiAgICB0aGlzLmFuY2hvcnNbaW5kZXhdID0gcG9zaXRpb247XG5cbiAgICBmb3IgKGxldCBpID0gaW5kZXggLSAyOyBpIDw9IGluZGV4ICsgMTsgaSsrKVxuICAgICAgdGhpcy5yZXNhbXBsZShpKTtcbiAgfVxuXG4gIHJlbW92ZUFuY2hvcihpbmRleCkge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5hbmNob3JzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgdGhpcy5hbmNob3JzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICBjb25zdCBzZWdtZW50SW5kZXggPSBpbmRleCA8IHRoaXMuYW5jaG9ycy5sZW5ndGggPyBpbmRleCA6IGluZGV4IC0gMTtcbiAgICB0aGlzLmNlbnRlcmxpbmVzLnNwbGljZShzZWdtZW50SW5kZXgsIDEpO1xuICAgIHRoaXMuc2FtcGxlTGVuZ3Rocy5zcGxpY2Uoc2VnbWVudEluZGV4LCAxKTtcbiAgICB0aGlzLmxlZnRCb3VuZGFyaWVzLnNwbGljZShzZWdtZW50SW5kZXgsIDEpO1xuICAgIHRoaXMucmlnaHRCb3VuZGFyaWVzLnNwbGljZShzZWdtZW50SW5kZXgsIDEpO1xuICAgIHRoaXMuYXJjTGVuZ3Rocy5zcGxpY2Uoc2VnbWVudEluZGV4LCAxKTtcblxuICAgIGZvciAobGV0IGkgPSBzZWdtZW50SW5kZXggLSAyOyBpIDw9IHNlZ21lbnRJbmRleDsgaSsrKVxuICAgICAgdGhpcy5yZXNhbXBsZShpKTtcbiAgfVxuXG4gIHJlc2FtcGxlKGluZGV4KSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuYW5jaG9ycy5sZW5ndGggLSAyKSByZXR1cm47XG5cbiAgICBjb25zdCBbcDAsIHAxLCBwMiwgcDNdID0gdGhpcy5hbmNob3JzRm9yU3BsaW5lSW5kZXgoaW5kZXgpO1xuICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgIGNvbnN0IGxlbmd0aHMgPSBbXTtcbiAgICBjb25zdCBsZWZ0Qm91bmRhcnkgPSBbXTtcbiAgICBjb25zdCByaWdodEJvdW5kYXJ5ID0gW107XG4gICAgbGV0IHByZXZQb2ludCA9IG51bGw7XG5cbiAgICBjb25zdCBwb2ludHNQZXJTZWdtZW50ID0gTWF0aC5tYXgoMTAsIE1hdGguY2VpbChwMS5kaXN0YW5jZVRvKHAyKSAvIDEpKTtcbiAgICBjb25zdCBudW1Qb2ludHMgPSBpbmRleCA9PSB0aGlzLmFuY2hvcnMubGVuZ3RoIC0gMiA/IHBvaW50c1BlclNlZ21lbnQgKyAxIDogcG9pbnRzUGVyU2VnbWVudDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtUG9pbnRzOyBpKyspIHtcbiAgICAgIGNvbnN0IHQgPSBpIC8gcG9pbnRzUGVyU2VnbWVudDtcbiAgICAgIGNvbnN0IHBvaW50ID0gY2F0bXVsbFJvbVZlYyh0LCBwMCwgcDEsIHAyLCBwMyk7XG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XG5cbiAgICAgIGlmIChwcmV2UG9pbnQgIT0gbnVsbClcbiAgICAgICAgbGVuZ3Rocy5wdXNoKHByZXZQb2ludC5kaXN0YW5jZVRvKHBvaW50KSk7XG4gICAgICBwcmV2UG9pbnQgPSBwb2ludDtcblxuICAgICAgY29uc3QgdGFuZ2VudCA9IHRhbmdlbnRBdCh0LCBwMCwgcDEsIHAyLCBwMyk7XG4gICAgICBjb25zdCBub3JtYWwgPSBuZXcgVEhSRUUuVmVjdG9yMigtdGFuZ2VudC55LCB0YW5nZW50LngpO1xuXG4gICAgICBsZWZ0Qm91bmRhcnkucHVzaChub3JtYWwuY2xvbmUoKS5tdWx0aXBseVNjYWxhcigtaGFsZkxhbmVXaWR0aCkuYWRkKHBvaW50KSk7XG4gICAgICByaWdodEJvdW5kYXJ5LnB1c2gobm9ybWFsLmNsb25lKCkubXVsdGlwbHlTY2FsYXIoaGFsZkxhbmVXaWR0aCkuYWRkKHBvaW50KSk7XG4gICAgfVxuXG4gICAgbGVuZ3Rocy5wdXNoKHByZXZQb2ludC5kaXN0YW5jZVRvKHAyKSk7XG5cbiAgICB0aGlzLmNlbnRlcmxpbmVzW2luZGV4XSA9IHBvaW50cztcbiAgICB0aGlzLnNhbXBsZUxlbmd0aHNbaW5kZXhdID0gbGVuZ3RocztcbiAgICB0aGlzLmxlZnRCb3VuZGFyaWVzW2luZGV4XSA9IGxlZnRCb3VuZGFyeTtcbiAgICB0aGlzLnJpZ2h0Qm91bmRhcmllc1tpbmRleF0gPSByaWdodEJvdW5kYXJ5O1xuICAgIHRoaXMuYXJjTGVuZ3Roc1tpbmRleF0gPSBsZW5ndGhzLnJlZHVjZSgoc3VtLCBsKSA9PiBzdW0gKyBsLCAwKTtcbiAgfVxuXG4gIHJlc2FtcGxlQWxsKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hbmNob3JzLmxlbmd0aDsgaSsrKVxuICAgICAgdGhpcy5yZXNhbXBsZShpKTtcbiAgfVxuXG4gIGFuY2hvcnNGb3JTcGxpbmVJbmRleChpbmRleCkge1xuICAgIGxldCBwO1xuICAgIGlmIChpbmRleCA9PSAwKVxuICAgICAgcCA9IFt0aGlzLmFuY2hvcnNbMF1dLmNvbmNhdCh0aGlzLmFuY2hvcnMuc2xpY2UoMCwgMykpO1xuICAgIGVsc2VcbiAgICAgIHAgPSB0aGlzLmFuY2hvcnMuc2xpY2UoaW5kZXggLSAxLCBpbmRleCArIDMpO1xuXG4gICAgaWYgKHBbM10gPT09IHVuZGVmaW5lZClcbiAgICAgIHBbM10gPSBwWzJdO1xuXG4gICAgcmV0dXJuIHA7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2F0bXVsbFJvbSh0LCBwMCwgcDEsIHAyLCBwMykge1xuICBjb25zdCB2MCA9IChwMiAtIHAwKSAqIDAuNTtcbiAgY29uc3QgdjEgPSAocDMgLSBwMSkgKiAwLjU7XG4gIGNvbnN0IHQyID0gdCAqIHQ7XG4gIGNvbnN0IHQzID0gdCAqIHQyO1xuICByZXR1cm4gKDIgKiBwMSAtIDIgKiBwMiArIHYwICsgdjEpICogdDMgKyAoLTMgKiBwMSArIDMgKiBwMiAtIDIgKiB2MCAtIHYxKSAqIHQyICsgdjAgKiB0ICsgcDE7XG59XG5cbmZ1bmN0aW9uIGNhdG11bGxSb21WZWModCwgcDAsIHAxLCBwMiwgcDMpIHtcbiAgcmV0dXJuIG5ldyBUSFJFRS5WZWN0b3IyKGNhdG11bGxSb20odCwgcDAueCwgcDEueCwgcDIueCwgcDMueCksIGNhdG11bGxSb20odCwgcDAueSwgcDEueSwgcDIueSwgcDMueSkpO1xufVxuXG5mdW5jdGlvbiB0YW5nZW50QXQodCwgcDAsIHAxLCBwMiwgcDMpIHtcbiAgY29uc3QgZGVsdGEgPSAwLjAwMDE7XG4gIGxldCB0MSA9IHQgLSBkZWx0YTtcbiAgbGV0IHQyID0gdCArIGRlbHRhO1xuXG4gIGlmICh0MSA8IDApIHQxID0gMDtcbiAgaWYgKHQyID4gMSkgdDIgPSAxO1xuXG4gIGNvbnN0IHByZXYgPSBjYXRtdWxsUm9tVmVjKHQxLCBwMCwgcDEsIHAyLCBwMyk7XG4gIGNvbnN0IG5leHQgPSBjYXRtdWxsUm9tVmVjKHQyLCBwMCwgcDEsIHAyLCBwMyk7XG5cbiAgcmV0dXJuIG5leHQuc3ViKHByZXYpLm5vcm1hbGl6ZSgpO1xufVxuXG5mdW5jdGlvbiBjdXJ2YXR1cmVBdCh0MiwgcDAsIHAxLCBwMiwgcDMpIHtcbiAgY29uc3QgZGVsdGEgPSAwLjAwMDE7XG5cbiAgLy8gSWYgd2UncmUgZXN0aW1hdGluZyBjdXJ2YXR1cmUgYXQgb25lIG9mIHRoZSBlbmRwb2ludHMgb2YgdGhlIHNwbGluZSxcbiAgLy8gc2xpZ2h0bHkgc2hpZnQgaXQgaW53YXJkcyB0byBhdm9pZCBpbmZpbml0ZSBjdXJ2YXR1cmUuXG4gIGlmICh0MiA9PSAwKSB0MiA9IGRlbHRhO1xuICBpZiAodDIgPT0gMSkgdDIgPSAxIC0gZGVsdGE7XG5cbiAgbGV0IHQxID0gdDIgLSBkZWx0YTtcbiAgbGV0IHQzID0gdDIgKyBkZWx0YTtcblxuICBpZiAodDEgPCAwKSB0MSA9IDA7XG4gIGlmICh0MyA+IDEpIHQzID0gMTtcblxuICBjb25zdCBwdDEgPSBjYXRtdWxsUm9tVmVjKHQxLCBwMCwgcDEsIHAyLCBwMyk7XG4gIGNvbnN0IHB0MiA9IGNhdG11bGxSb21WZWModDIsIHAwLCBwMSwgcDIsIHAzKTtcbiAgY29uc3QgcHQzID0gY2F0bXVsbFJvbVZlYyh0MywgcDAsIHAxLCBwMiwgcDMpO1xuXG4gIHJldHVybiAoTWF0aC5hdGFuMihwdDMueSAtIHB0Mi55LCBwdDMueCAtIHB0Mi54KSAtIE1hdGguYXRhbjIocHQyLnkgLSBwdDEueSwgcHQyLnggLSBwdDEueCkpIC8gcHQyLmRpc3RhbmNlVG8ocHQxKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRpY09ic3RhY2xlIHtcbiAgc3RhdGljIGh5ZHJhdGUob2JqKSB7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG9iaiwgU3RhdGljT2JzdGFjbGUucHJvdG90eXBlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLnBvcywgVEhSRUUuVmVjdG9yMi5wcm90b3R5cGUpO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcbiAgICByZXR1cm4gbmV3IFN0YXRpY09ic3RhY2xlKG5ldyBUSFJFRS5WZWN0b3IyKGpzb24ucFswXSwganNvbi5wWzFdKSwganNvbi5yLCBqc29uLncsIGpzb24uaCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwb3MsIHJvdCwgd2lkdGgsIGhlaWdodCkge1xuICAgIHRoaXMucG9zID0gcG9zO1xuICAgIHRoaXMucm90ID0gcm90O1xuICAgIHRoaXMud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcblxuICAgIHRoaXMudXBkYXRlVmVydGljZXMoKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0cnVuYyA9IG4gPT4gK24udG9GaXhlZCg1KTtcblxuICAgIHJldHVybiB7XG4gICAgICBwOiBbdHJ1bmModGhpcy5wb3MueCksIHRydW5jKHRoaXMucG9zLnkpXSxcbiAgICAgIHI6IHRydW5jKHRoaXMucm90KSxcbiAgICAgIHc6IHRydW5jKHRoaXMud2lkdGgpLFxuICAgICAgaDogdHJ1bmModGhpcy5oZWlnaHQpXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVZlcnRpY2VzKCkge1xuICAgIHRoaXMudmVydGljZXMgPSBbXTtcblxuICAgIGNvbnN0IGNvc1JvdCA9IE1hdGguY29zKHRoaXMucm90KTtcbiAgICBjb25zdCBzaW5Sb3QgPSBNYXRoLnNpbih0aGlzLnJvdCk7XG4gICAgY29uc3QgaGFsZldpZHRoID0gdGhpcy53aWR0aCAvIDI7XG4gICAgY29uc3QgaGFsZkhlaWdodCA9IHRoaXMuaGVpZ2h0IC8gMjtcblxuICAgIGNvbnN0IGhXY1IgPSBoYWxmV2lkdGggKiBjb3NSb3Q7XG4gICAgY29uc3QgaFdzUiA9IGhhbGZXaWR0aCAqIHNpblJvdDtcbiAgICBjb25zdCBoSGNSID0gaGFsZkhlaWdodCAqIGNvc1JvdDtcbiAgICBjb25zdCBoSHNSID0gaGFsZkhlaWdodCAqIHNpblJvdDtcblxuICAgIGNvbnN0IHYxID0gWy1oV2NSIC0gaEhzUiArIHRoaXMucG9zLngsIC1oV3NSICsgaEhjUiArIHRoaXMucG9zLnldO1xuICAgIGNvbnN0IHYyID0gWy1oV2NSICsgaEhzUiArIHRoaXMucG9zLngsIC1oV3NSIC0gaEhjUiArIHRoaXMucG9zLnldO1xuICAgIGNvbnN0IHYzID0gW2hXY1IgKyBoSHNSICsgdGhpcy5wb3MueCwgaFdzUiAtIGhIY1IgKyB0aGlzLnBvcy55XTtcbiAgICBjb25zdCB2NCA9IFtoV2NSIC0gaEhzUiArIHRoaXMucG9zLngsIGhXc1IgKyBoSGNSICsgdGhpcy5wb3MueV07XG5cbiAgICB0aGlzLnZlcnRpY2VzID0gW1xuICAgICAgdjFbMF0sIHYxWzFdLFxuICAgICAgdjJbMF0sIHYyWzFdLFxuICAgICAgdjNbMF0sIHYzWzFdLFxuICAgICAgdjNbMF0sIHYzWzFdLFxuICAgICAgdjRbMF0sIHY0WzFdLFxuICAgICAgdjFbMF0sIHYxWzFdXG4gICAgXTtcbiAgfVxufVxuIiwiLy8gSGFsZiB3aWR0aCBhbmQgaGFsZiBoZWlnaHRcbmNvbnN0IFZFSElDTEVfU0laRSA9IHsgdzogMi41LCBoOiAxIH07XG5jb25zdCBDWUNMSVNUX1NJWkUgPSB7IHc6IDEuMiwgaDogMC42IH07XG5jb25zdCBQRURFU1RSSUFOX1NJWkUgPSB7IHc6IDAuNiwgaDogMC42IH07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIER5bmFtaWNPYnN0YWNsZSB7XG4gIHN0YXRpYyBoeWRyYXRlKG9iaikge1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmosIER5bmFtaWNPYnN0YWNsZS5wcm90b3R5cGUpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihvYmouc3RhcnRQb3MsIFRIUkVFLlZlY3RvcjIucHJvdG90eXBlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2Yob2JqLnZlbG9jaXR5LCBUSFJFRS5WZWN0b3IyLnByb3RvdHlwZSk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcih0eXBlLCBzdGFydFBvcywgdmVsb2NpdHksIHBhcmFsbGVsKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnN0YXJ0UG9zID0gc3RhcnRQb3M7XG4gICAgdGhpcy52ZWxvY2l0eSA9IHZlbG9jaXR5O1xuICAgIHRoaXMucGFyYWxsZWwgPSBwYXJhbGxlbDtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlICdjeWNsaXN0JzpcbiAgICAgICAgICB0aGlzLnNpemUgPSBPYmplY3QuYXNzaWduKHt9LCBDWUNMSVNUX1NJWkUpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3BlZGVzdHJpYW4nOlxuICAgICAgICAgIHRoaXMuc2l6ZSA9IE9iamVjdC5hc3NpZ24oe30sIFBFREVTVFJJQU5fU0laRSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLnNpemUgPSBPYmplY3QuYXNzaWduKHt9LCBWRUhJQ0xFX1NJWkUpO1xuICAgIH1cblxuICAgIGlmICghcGFyYWxsZWwpXG4gICAgICBbdGhpcy5zaXplLncsIHRoaXMuc2l6ZS5oXSA9IFt0aGlzLnNpemUuaCwgdGhpcy5zaXplLnddO1xuICB9XG5cbiAgcG9zaXRpb25BdFRpbWUodGltZSkge1xuICAgIHJldHVybiB0aGlzLnZlbG9jaXR5LmNsb25lKCkubXVsdGlwbHlTY2FsYXIodGltZSkuYWRkKHRoaXMuc3RhcnRQb3MpO1xuICB9XG5cbiAgcG9zaXRpb25zSW5UaW1lUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1lLCBudW1GcmFtZXMpIHtcbiAgICBjb25zdCBkdCA9IChlbmRUaW1lIC0gc3RhcnRUaW1lKSAvIG51bUZyYW1lcztcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBbXTtcbiAgICBsZXQgdGltZSA9IHN0YXJ0VGltZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG51bUZyYW1lczsgaSsrKSB7XG4gICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLnBvc2l0aW9uQXRUaW1lKHRpbWUpKTtcbiAgICAgIHRpbWUgKz0gZHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9ucztcbiAgfVxuXG4gIHZlcnRpY2VzSW5UaW1lUmFuZ2Uoc3RhcnRUaW1lLCBlbmRUaW1lLCBjb25maWcpIHtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLnBvc2l0aW9uc0luVGltZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSwgY29uZmlnLm51bUR5bmFtaWNTdWJmcmFtZXMpO1xuICAgIGNvbnN0IHZlcnRpY2VzID0gW107XG5cbiAgICAvLyBIYXphcmQgZGlsYXRpb24gKGRyYXduIGJlaGluZCwgeiA9IDAuNzUpXG4gICAgY29uc3QgaGF6YXJkSGFsZldpZHRoID0gdGhpcy5zaXplLncgKyBjb25maWcuZHluYW1pY0hhemFyZERpbGF0aW9uUyArIGNvbmZpZy5jb2xsaXNpb25EaWxhdGlvblM7XG4gICAgY29uc3QgaGF6YXJkSGFsZkhlaWdodCA9IHRoaXMuc2l6ZS5oICsgY29uZmlnLmR5bmFtaWNIYXphcmREaWxhdGlvbkwgKyBjb25maWcuY29sbGlzaW9uRGlsYXRpb25MO1xuXG4gICAgcG9zaXRpb25zLmZvckVhY2gocCA9PiB7XG4gICAgICBjb25zdCB2MSA9IFstaGF6YXJkSGFsZldpZHRoICsgcC54LCBoYXphcmRIYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHYyID0gW2hhemFyZEhhbGZXaWR0aCArIHAueCwgaGF6YXJkSGFsZkhlaWdodCArIHAueV07XG4gICAgICBjb25zdCB2MyA9IFtoYXphcmRIYWxmV2lkdGggKyBwLngsIC1oYXphcmRIYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHY0ID0gWy1oYXphcmRIYWxmV2lkdGggKyBwLngsIC1oYXphcmRIYWxmSGVpZ2h0ICsgcC55XTtcblxuICAgICAgdmVydGljZXMucHVzaChcbiAgICAgICAgdjFbMF0sIHYxWzFdLCAwLjc1LFxuICAgICAgICB2MlswXSwgdjJbMV0sIDAuNzUsXG4gICAgICAgIHYzWzBdLCB2M1sxXSwgMC43NSxcbiAgICAgICAgdjNbMF0sIHYzWzFdLCAwLjc1LFxuICAgICAgICB2NFswXSwgdjRbMV0sIDAuNzUsXG4gICAgICAgIHYxWzBdLCB2MVsxXSwgMC43NVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIENvbGxpc2lvbiBkaWxhdGlvbiAoZHJhd24gaW4gZnJvbnQsIHogPSAwLjI1KVxuICAgIGNvbnN0IGNvbGxpc2lvbkhhbGZXaWR0aCA9IHRoaXMuc2l6ZS53ICsgY29uZmlnLmNvbGxpc2lvbkRpbGF0aW9uUztcbiAgICBjb25zdCBjb2xsaXNpb25IYWxmSGVpZ2h0ID0gdGhpcy5zaXplLmggKyBjb25maWcuY29sbGlzaW9uRGlsYXRpb25MO1xuXG4gICAgcG9zaXRpb25zLmZvckVhY2gocCA9PiB7XG4gICAgICBjb25zdCB2MSA9IFstY29sbGlzaW9uSGFsZldpZHRoICsgcC54LCBjb2xsaXNpb25IYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHYyID0gW2NvbGxpc2lvbkhhbGZXaWR0aCArIHAueCwgY29sbGlzaW9uSGFsZkhlaWdodCArIHAueV07XG4gICAgICBjb25zdCB2MyA9IFtjb2xsaXNpb25IYWxmV2lkdGggKyBwLngsIC1jb2xsaXNpb25IYWxmSGVpZ2h0ICsgcC55XTtcbiAgICAgIGNvbnN0IHY0ID0gWy1jb2xsaXNpb25IYWxmV2lkdGggKyBwLngsIC1jb2xsaXNpb25IYWxmSGVpZ2h0ICsgcC55XTtcblxuICAgICAgdmVydGljZXMucHVzaChcbiAgICAgICAgdjFbMF0sIHYxWzFdLCAwLjI1LFxuICAgICAgICB2MlswXSwgdjJbMV0sIDAuMjUsXG4gICAgICAgIHYzWzBdLCB2M1sxXSwgMC4yNSxcbiAgICAgICAgdjNbMF0sIHYzWzFdLCAwLjI1LFxuICAgICAgICB2NFswXSwgdjRbMV0sIDAuMjUsXG4gICAgICAgIHYxWzBdLCB2MVsxXSwgMC4yNVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB2ZXJ0aWNlcztcbiAgfVxufVxuIiwiaW1wb3J0IFRIUkVFIGZyb20gXCJzY3JpcHQtbG9hZGVyIS4uL3ZlbmRvci90aHJlZS5qc1wiO1xuaW1wb3J0IFV0aWxzIGZyb20gXCJzY3JpcHQtbG9hZGVyIS4uL2pzL1V0aWxzLmpzXCI7XG5pbXBvcnQgUGF0aFBsYW5uZXIgZnJvbSBcIi4uL2pzL2F1dG9ub215L3BhdGgtcGxhbm5pbmcvUGF0aFBsYW5uZXIuanNcIjtcbmltcG9ydCBFeHRlcm5hbFBhdGhQbGFubmVyIGZyb20gXCIuLi9qcy9hdXRvbm9teS9wYXRoLXBsYW5uaW5nL0V4dGVybmFsUGxhbm5lci5qc1wiO1xuaW1wb3J0IExhbmVQYXRoIGZyb20gXCIuLi9qcy9hdXRvbm9teS9MYW5lUGF0aC5qc1wiO1xuaW1wb3J0IFN0YXRpY09ic3RhY2xlIGZyb20gXCIuLi9qcy9hdXRvbm9teS9TdGF0aWNPYnN0YWNsZS5qc1wiO1xuaW1wb3J0IER5bmFtaWNPYnN0YWNsZSBmcm9tIFwiLi4vanMvYXV0b25vbXkvRHluYW1pY09ic3RhY2xlLmpzXCI7XG5cbmZ1bmN0aW9uIGluaXQoKSB7XG4gIGxldCBwYXRoUGxhbm5lcjtcbiAgdHJ5IHtcbiAgICAvLyBwYXRoUGxhbm5lciA9IG5ldyBQYXRoUGxhbm5lcigpO1xuICAgIHBhdGhQbGFubmVyID0gbmV3IEV4dGVybmFsUGF0aFBsYW5uZXIoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coJ0Vycm9yIGluaXRpYWxpemluZyBwYXRoIHBsYW5uZXI6Jyk7XG4gICAgY29uc29sZS5sb2coZSk7XG4gICAgc2VsZi5wb3N0TWVzc2FnZSh7IGVycm9yOiBcImluaXRpYWxpemF0aW9uX2ZhaWxlZFwiIH0pO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuZGF0YS50eXBlID09PSAnbm90aWZ5X2Nhc2Vfc3RhdHVzJykge1xuICAgICAgcGF0aFBsYW5uZXIubm90aWZ5X3NjZW5hcmlvX3N0YXR1cyhldmVudC5kYXRhLnN0YXR1cyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5kYXRhLnR5cGUgIT0gJ3BsYW4nKSB7XG4gICAgICBjb25zb2xlLmxvZyhcInVua29ud24gcG9zdGVkIG1lc3NhZ2UgdHlwZTogXCIgKyBldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBjb25maWcsIHZlaGljbGVQb3NlLCB2ZWhpY2xlU3RhdGlvbiwgbGFuZVBhdGgsIHN0YXJ0VGltZSwgc3RhdGljT2JzdGFjbGVzLCBkeW5hbWljT2JzdGFjbGVzLCByZXNldCB9ID0gZXZlbnQuZGF0YTtcblxuICAgIExhbmVQYXRoLmh5ZHJhdGUobGFuZVBhdGgpO1xuICAgIHN0YXRpY09ic3RhY2xlcy5mb3JFYWNoKG8gPT4gU3RhdGljT2JzdGFjbGUuaHlkcmF0ZShvKSk7XG4gICAgZHluYW1pY09ic3RhY2xlcy5mb3JFYWNoKG8gPT4gRHluYW1pY09ic3RhY2xlLmh5ZHJhdGUobykpO1xuXG4gICAgaWYgKHJlc2V0KSBwYXRoUGxhbm5lci5yZXNldCgpO1xuXG4gICAgcGF0aFBsYW5uZXIuY29uZmlnID0gY29uZmlnO1xuXG4gICAgbGV0IHNob3VsZF9yZXRyeSA9IHRydWU7XG4gICAgd2hpbGUgKHNob3VsZF9yZXRyeSkge1xuICAgICAgbGV0IHBsYW5uZXJfcmVzdWx0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGxhbm5lcl9yZXN1bHQgPSBwYXRoUGxhbm5lci5wbGFuKHZlaGljbGVQb3NlLCB2ZWhpY2xlU3RhdGlvbiwgbGFuZVBhdGgsIHN0YXJ0VGltZSwgc3RhdGljT2JzdGFjbGVzLCBkeW5hbWljT2JzdGFjbGVzKTtcbiAgICAgICAgc2hvdWxkX3JldHJ5ID0gcGxhbm5lcl9yZXN1bHQucGxhbm5lcl9zdGF0ZSA9PSBcInVuYXZhaWxhYmxlXCI7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IubmFtZSAhPSBcIlRpbWVvdXRFcnJvclwiICYmIGVycm9yLm5hbWUgIT0gXCJOZXR3b3JrRXJyb3JcIikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdQbGFubmluZyByZXF1ZXN0IGVycm9yOiAnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7IGVycm9yOiBlcnJvci50b1N0cmluZygpIH0pO1xuICAgICAgICAgIHNob3VsZF9yZXRyeSA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRfcmV0cnkpIHtcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7IGVycm9yOiBcInBsYW5uZXJfdW5hdmFpbGFibGVcIiB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIGZyb21WZWhpY2xlU2VnbWVudCxcbiAgICAgICAgICBmcm9tVmVoaWNsZVBhcmFtcyxcbiAgICAgICAgICBsYXR0aWNlU3RhcnRTdGF0aW9uLFxuICAgICAgICAgIGR5bmFtaWNPYnN0YWNsZUdyaWRcbiAgICAgICAgfSA9IHBsYW5uZXJfcmVzdWx0O1xuXG4gICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgZnJvbVZlaGljbGVTZWdtZW50LFxuICAgICAgICAgIGZyb21WZWhpY2xlUGFyYW1zLFxuICAgICAgICAgIHZlaGljbGVQb3NlLFxuICAgICAgICAgIHZlaGljbGVTdGF0aW9uLFxuICAgICAgICAgIGxhdHRpY2VTdGFydFN0YXRpb24sXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGR5bmFtaWNPYnN0YWNsZUdyaWQgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5pZiAodHlwZW9mKHdpbmRvdykgPT09ICd1bmRlZmluZWQnKSB7XG4gIGluaXQoKTtcbn0gZWxzZSB7XG4gIHdpbmRvdy5kYXNoX2luaXRQYXRoUGxhbm5lcldvcmtlciA9IGluaXQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///691\n")}},__webpack_module_cache__={};function __webpack_require__(t){var c=__webpack_module_cache__[t];if(void 0!==c)return c.exports;var X=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](X,X.exports,__webpack_require__),X.exports}var __webpack_exports__=__webpack_require__(691)})()}void 0===typeof window&&dash_initPathPlannerWorker(); \ No newline at end of file diff --git a/seminar06-planning/simulator/images/examples/crosswalks.png b/seminar06-planning/simulator/images/examples/crosswalks.png new file mode 100644 index 0000000..2c25cfa Binary files /dev/null and b/seminar06-planning/simulator/images/examples/crosswalks.png differ diff --git a/seminar06-planning/simulator/images/examples/dodging_a_speeder.png b/seminar06-planning/simulator/images/examples/dodging_a_speeder.png new file mode 100644 index 0000000..5967327 Binary files /dev/null and b/seminar06-planning/simulator/images/examples/dodging_a_speeder.png differ diff --git a/seminar06-planning/simulator/images/examples/lane_blockage.png b/seminar06-planning/simulator/images/examples/lane_blockage.png new file mode 100644 index 0000000..0fcf256 Binary files /dev/null and b/seminar06-planning/simulator/images/examples/lane_blockage.png differ diff --git a/seminar06-planning/simulator/images/examples/merging.png b/seminar06-planning/simulator/images/examples/merging.png new file mode 100644 index 0000000..d8c3d17 Binary files /dev/null and b/seminar06-planning/simulator/images/examples/merging.png differ diff --git a/seminar06-planning/simulator/images/examples/one_car_overtake.png b/seminar06-planning/simulator/images/examples/one_car_overtake.png new file mode 100644 index 0000000..9d62ecc Binary files /dev/null and b/seminar06-planning/simulator/images/examples/one_car_overtake.png differ diff --git a/seminar06-planning/simulator/images/examples/peloton.png b/seminar06-planning/simulator/images/examples/peloton.png new file mode 100644 index 0000000..1b25ca3 Binary files /dev/null and b/seminar06-planning/simulator/images/examples/peloton.png differ diff --git a/seminar06-planning/simulator/images/examples/rough_road.png b/seminar06-planning/simulator/images/examples/rough_road.png new file mode 100644 index 0000000..c43cc81 Binary files /dev/null and b/seminar06-planning/simulator/images/examples/rough_road.png differ diff --git a/seminar06-planning/simulator/images/examples/two_car_overtake.png b/seminar06-planning/simulator/images/examples/two_car_overtake.png new file mode 100644 index 0000000..dadfa5a Binary files /dev/null and b/seminar06-planning/simulator/images/examples/two_car_overtake.png differ diff --git a/seminar06-planning/simulator/images/ladavaz.glb b/seminar06-planning/simulator/images/ladavaz.glb new file mode 100644 index 0000000..d2940a6 Binary files /dev/null and b/seminar06-planning/simulator/images/ladavaz.glb differ diff --git a/seminar06-planning/simulator/images/stone.jpg b/seminar06-planning/simulator/images/stone.jpg new file mode 100644 index 0000000..7d15098 Binary files /dev/null and b/seminar06-planning/simulator/images/stone.jpg differ diff --git a/seminar06-planning/simulator/images/wheel.png b/seminar06-planning/simulator/images/wheel.png new file mode 100644 index 0000000..4e18e5f Binary files /dev/null and b/seminar06-planning/simulator/images/wheel.png differ diff --git a/seminar06-planning/simulator/images/wheel.xcf b/seminar06-planning/simulator/images/wheel.xcf new file mode 100644 index 0000000..aa8f65b Binary files /dev/null and b/seminar06-planning/simulator/images/wheel.xcf differ diff --git a/seminar06-planning/simulator/index.html b/seminar06-planning/simulator/index.html new file mode 100644 index 0000000..0e515cc --- /dev/null +++ b/seminar06-planning/simulator/index.html @@ -0,0 +1,635 @@ + + + Dash - WebGL Self-Driving Car Simulator + + + + + +
+ + + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Speed
+
+
m/s
+
+
+
Station
+
+
meters
+
+
+
Latitude
+
+
meters
+
+
+
Plan Time
+
+
s
+
+
+
+
+
+ + + + +
+
+
+ + + +
+
+ Manual + Autonomous +
+
+
+
+
+
+
+
+ +   + +
+ +
+
+
+ + + +
+
+
+ + + + + + + + + + + +
+
+
+ Edit Scenario + Load Scenario +
+
+
+ + + + +
+
+ + + +
+
+ fps +
+
+
+
+ Chase + Top Down + Free +
+
+
+
+ 2D + 3D +
+
+
+
+
+ + + + + + + + + + + + + + + diff --git a/seminar06-planning/simulator/js/Dash.js b/seminar06-planning/simulator/js/Dash.js new file mode 100644 index 0000000..7f8e534 --- /dev/null +++ b/seminar06-planning/simulator/js/Dash.js @@ -0,0 +1,6 @@ +import Simulator from "./Simulator.js"; +import StaticObstacle from "./autonomy/StaticObstacle.js"; + +document.addEventListener('DOMContentLoaded', e => { + window.simulator = new Simulator(document.getElementById('container')); +}); diff --git a/seminar06-planning/simulator/js/GPGPU.js b/seminar06-planning/simulator/js/GPGPU.js new file mode 100644 index 0000000..e34045f --- /dev/null +++ b/seminar06-planning/simulator/js/GPGPU.js @@ -0,0 +1,542 @@ +/* Partially adapted from https://github.com/turbo/js/blob/master/turbo.js + * + * Turbo.js License: + * Copyright (c) 2016 minxomat + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +const vertexShaderCode = `#version 300 es +in vec2 position; +in vec2 texture; +out vec2 kernelPosition; + +void main(void) { + kernelPosition = texture; + gl_Position = vec4(position.xy, 0.0, 1.0); +} +`; + +const fragmentShaderHeader = `#version 300 es +precision highp float; +precision highp int; +precision highp sampler2D; +precision highp sampler2DArray; +precision highp sampler3D; +precision highp samplerCube; + +in vec2 kernelPosition; +out vec4 kernelOut; +uniform ivec2 kernelSize; +`; + +export default class GPGPU { + static alloc(size, stride) { + if (!Number.isInteger(stride) || stride < 1 || stride > 4) + throw new Error("Data stride must be an integer between 1 and 4."); + + // Find the smallest perfect square greater than or equal to size + const squareSize = Math.pow(Math.ceil(Math.sqrt(size)), 2); + + const data = new Float32Array(squareSize * stride); + data.gpgpuSize = size; + data.gpgpuStride = stride; + return data; + } + + constructor(configs, shared = {}) { + this._setUpGL(); + + this.outputTextures = {}; + this.sharedTextures = {}; + + this.programs = configs.map(c => this._prepareProgram(c)); + + for (const name in shared) { + const options = shared[name]; + const { width, height, channels, data } = options; + this.sharedTextures[name] = this._createTexture(data, width, height, channels, options); + } + } + + updateSharedTextures(shared) { + this.sharedTextures = {}; + + for (const name in shared) { + const options = shared[name]; + const { width, height, channels, data } = options; + if (this.sharedTextures[name]) this.gl.deleteTexture(this.sharedTextures[name]); + this.sharedTextures[name] = this._createTexture(data, width, height, channels, options); + } + } + + updateProgram(programOrProgramIndex, config) { + const program = typeof(programOrProgramIndex) == 'number' ? this.programs[programOrProgramIndex] : programOrProgramIndex; + + if (!program) + throw new Error(`Program with index ${programOrProgramIndex} does not exist.`); + + if (config.inputs) + throw new Error('The `updateProgram` function cannot be used to update inputs. Use `updateProgramInputs` instead.'); + + if (config.meta) + program.meta = Object.assign(program.meta, config.meta); + + if (config.width !== undefined && config.height !== undefined) + this.updateProgramSize(program, config.width, config.height); + + if (typeof(config.uniforms) == 'object') + this.updateProgramUniforms(program, config.uniforms); + } + + updateProgramInputs(programIndex, inputs) { + const program = this.programs[programIndex]; + + if (!program) + throw new Error(`Program with index ${programIndex} does not exist.`); + + if (program.inputTextures.length != inputs.length) + throw new Error(`You must provide the same number of inputs as when the program was set up: got ${inputs.length} but expected ${program.inputTextures.length}.`); + + const previousInputWidth = program.inputWidth; + const previousInputHeight = program.inputHeight; + + const config = program.config; + + if (config.width === undefined || config.height === undefined) { + program.inputWidth = undefined; + program.inputHeight = undefined; + program.inputDataSize = undefined; + } + + this._prepareProgramInputs(program, inputs); + + if (program.inputWidth != previousInputWidth || program.inputHeight != previousInputHeight) { + this.gl.useProgram(program.glProgram); + this.gl.uniform2i(program.kernelSizeLocation, program.inputWidth, program.inputHeight); + this._prepareProgramOutput(program); + } + } + + updateProgramSize(programOrProgramIndex, width, height) { + const program = typeof(programOrProgramIndex) == 'number' ? this.programs[programOrProgramIndex] : programOrProgramIndex; + + if (!program) + throw new Error(`Program with index ${programOrProgramIndex} does not exist.`); + + if (program.inputTextures.length != 0) + throw new Error(`Size can only be updated on programs with no inputs.`); + + if (width == program.inputWidth && height == program.inputHeight) return; + + program.inputWidth = width; + program.inputHeight = height; + program.inputDataSize = width * height; + + this.gl.useProgram(program.glProgram); + this.gl.uniform2i(program.kernelSizeLocation, program.inputWidth, program.inputHeight); + this._prepareProgramOutput(program); + } + + updateProgramUniforms(programOrProgramIndex, uniforms) { + const program = typeof(programOrProgramIndex) == 'number' ? this.programs[programOrProgramIndex] : programOrProgramIndex; + this.gl.useProgram(program.glProgram); + + if (!program) + throw new Error(`Program with index ${programOrProgramIndex} does not exist.`); + + for (const uniformName in uniforms) { + const value = uniforms[uniformName]; + let uniform; + + if (uniform = program.uniforms[uniformName]) { + this._setUniform(uniform.type, uniform.location, value) + } else if (uniform = program.uniformTextures[uniformName]) { + if (typeof(value) != 'object' || value.type != 'texture') + throw new Error(`Expected texture type for uniform ${uniformName}.`); + + const { width, height, channels, data } = uniform; + if (program.uniformTextures[uniformName].texture) this.gl.deleteTexture(program.uniformTextures[uniformName].texture); + program.uniformTextures[uniformName].texture = this._createTexture(data, width, height, channels, uniform); + } else { + throw new Error(`The uniform ${uniformName} does not exist in this program.`); + } + } + } + + run() { + const outputs = []; + + for (const program of this.programs) { + this.gl.useProgram(program.glProgram); + this.gl.viewport(0, 0, program.inputWidth, program.inputHeight); + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, program.frameBuffer); + + for (const [index, inputTexture] of program.inputTextures.entries()) { + this.gl.activeTexture(this.gl.TEXTURE0 + index); + this.gl.bindTexture(this.gl.TEXTURE_2D, inputTexture); + } + + for (const uniformName in program.uniformTextures) { + const uniformTexture = program.uniformTextures[uniformName]; + this.gl.activeTexture(this.gl.TEXTURE0 + uniformTexture.index); + this.gl.bindTexture(uniformTexture.target, uniformTexture.texture || this.sharedTextures[uniformTexture.name] || this.outputTextures[uniformTexture.name]); + } + + if (typeof(program.draw) == 'function') { + program.draw(this, program); + } else { + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.textureBuffer); + this.gl.enableVertexAttribArray(program.textureLocation); + this.gl.vertexAttribPointer(program.textureLocation, 2, this.gl.FLOAT, false, 0, 0); + this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.positionBuffer); + this.gl.enableVertexAttribArray(program.positionLocation); + this.gl.vertexAttribPointer(program.positionLocation, 2, this.gl.FLOAT, false, 0, 0); + this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + + if (program.drawProxy) { + const draw = (() => this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0)).bind(this); + program.drawProxy(this, program, draw); + } else { + this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0); + } + } + + if (program.output && program.output.name && !program.output.read) { + outputs.push(null); + } else { + const output = new Float32Array(program.inputWidth * program.inputHeight * 4); + this.gl.readPixels(0, 0, program.inputWidth, program.inputHeight, this.gl.RGBA, this.gl.FLOAT, output); + outputs.push(output.subarray(0, program.inputDataSize * 4)); + } + } + + return outputs; + } + + _setUpGL() { + let canvas; + + if (self.document) + canvas = document.createElement('canvas'); + else if (self.OffscreenCanvas) + canvas = new OffscreenCanvas(0, 0); + else + throw new Error('Could not create a canvas.'); + + const attr = { alpha: false, antialias: false }; + this.gl = canvas.getContext("webgl2", attr) || canvas.getContext("experimental-webgl2", attr); + + if (!this.gl) + throw new Error("Unable to initialize WebGL2. Your browser may not support it."); + + if (!this.gl.getExtension('EXT_color_buffer_float')) + throw new Error('Required WebGL extension EXT_color_buffer_float not supported.'); + + if (!this.gl.getExtension('OES_texture_float_linear')) + throw new Error('Required WebGL extension OES_texture_float_linear not supported.'); + + this.positionBuffer = this._newBuffer([-1, -1, 1, -1, 1, 1, -1, 1]); + this.textureBuffer = this._newBuffer([0, 0, 1, 0, 1, 1, 0, 1]); + this.indexBuffer = this._newBuffer([1, 2, 0, 3, 0, 2], Uint16Array, this.gl.ELEMENT_ARRAY_BUFFER); + } + + _prepareProgram(config) { + const program = { config }; + + program.draw = config.draw; + program.drawProxy = config.drawProxy; + program.meta = Object.assign({}, config.meta); + + if (config.width && config.height) { + program.inputWidth = config.width; + program.inputHeight = config.height; + program.inputDataSize = config.width * config.height; + } + + program.output = config.output; + + const kernel = config.kernel; + + if (typeof(kernel) != 'string' || kernel.length == 0) + throw new Error("Kernel code cannot be empty."); + + const inputs = config.inputs || []; + const uniforms = config.uniforms || {}; + + this._prepareProgramInputs(program, inputs); + + let fragmentShaderConfig = ""; + + for (const index in inputs) + fragmentShaderConfig += `uniform sampler2D _input${index};\n`; + + if (program.inputWidth === undefined || program.inputHeight === undefined) + throw new Error("Unknown kernel size. You must provide either an input or the `width` and `height` parameters in the kernel config."); + + program.uniformTextures = {}; + program.uniforms = {}; + + for (const uniformName in uniforms) { + const uniform = uniforms[uniformName]; + + if (typeof(uniform) == 'number') { + program.uniforms[uniformName] = { + type: 'float', + value: uniform + }; + fragmentShaderConfig += `uniform float ${uniformName};\n`; + } else if (Array.isArray(uniform)) { + if (uniform.length < 2 || uniform.length > 4) + throw new Error(`Array uniforms can only have lengths of 2, 3, or 4 elements (corresponding to vec2, vec3, and vec4).`); + + const type = ['vec2', 'vec3', 'vec4'][uniform.length - 2]; + program.uniforms[uniformName] = { + type: type, + value: uniform + }; + fragmentShaderConfig += `uniform ${type} ${uniformName};\n`; + } else { + const { type, width, height, channels, data, value, length, name } = uniform; + + if (type == 'texture' || type == 'outputTexture' || type == 'sharedTexture') { + let target, type; + + if (uniform.textureType == '3D') { + target = this.gl.TEXTURE_3D; + type = 'sampler3D'; + } else if (uniform.textureType == '2DArray') { + target = this.gl.TEXTURE_2D_ARRAY; + type = 'sampler2DArray'; + } else { + target = this.gl.TEXTURE_2D; + type = 'sampler2D'; + } + + if (type == 'texture') { + program.uniformTextures[uniformName] = { target, texture: data ? this._createTexture(data, width, height, channels, uniform) : null }; + } else { + program.uniformTextures[uniformName] = { target, texture: null, name: name || uniformName }; + } + + fragmentShaderConfig += `uniform ${type} ${uniformName};\n`; + } else { + program.uniforms[uniformName] = { type, value }; + if (length !== undefined) + fragmentShaderConfig += `uniform ${type} ${uniformName}[${length}];\n`; + else + fragmentShaderConfig += `uniform ${type} ${uniformName};\n`; + } + } + } + + const vertexShader = this.gl.createShader(this.gl.VERTEX_SHADER); + this.gl.shaderSource(vertexShader, config.vertexShader || vertexShaderCode); + this.gl.compileShader(vertexShader); + + if (!this.gl.getShaderParameter(vertexShader, this.gl.COMPILE_STATUS)) { + throw new Error( + "Could not build vertex shader (fatal).\n" + "\n" + + "--- CODE DUMP ---\n" + (config.vertexShader || vertexShaderCode) + "\n\n" + + "--- ERROR LOG ---\n" + this.gl.getShaderInfoLog(vertexShader) + ); + } + + const fragmentShaderMain = ` +void main() { + kernelOut = vec4(kernel(${[...Array(inputs.length).keys()].map(i => `texture(_input${i}, kernelPosition)`).join(', ')})); +} + `; + + const fragmentShader = this.gl.createShader(this.gl.FRAGMENT_SHADER); + const fragmentShaderSource = fragmentShaderHeader + fragmentShaderConfig + kernel + fragmentShaderMain; + this.gl.shaderSource(fragmentShader, fragmentShaderSource); + this.gl.compileShader(fragmentShader); + + if (!this.gl.getShaderParameter(fragmentShader, this.gl.COMPILE_STATUS)) { + const source = fragmentShaderSource.split('\n'); + let dbgMsg = "ERROR: Could not build shader (fatal).\n\n------------------ KERNEL CODE DUMP ------------------\n" + + for (let l = 0; l < source.length; l++) + dbgMsg += `${l + 1}> ${source[l]}\n`; + + dbgMsg += "\n--------------------- ERROR LOG ---------------------\n" + this.gl.getShaderInfoLog(fragmentShader); + + throw new Error(dbgMsg); + } + + program.glProgram = this.gl.createProgram(); + this.gl.attachShader(program.glProgram, vertexShader); + this.gl.attachShader(program.glProgram, fragmentShader); + this.gl.linkProgram(program.glProgram); + this.gl.useProgram(program.glProgram); + + if (!this.gl.getProgramParameter(program.glProgram, this.gl.LINK_STATUS)) + throw new Error('Failed to link GLSL program code.'); + + let textureIndex = 0; + + for (const input of program.inputTextures) { + const location = this.gl.getUniformLocation(program.glProgram, `_input${textureIndex}`); + this.gl.uniform1i(location, textureIndex); + textureIndex++; + } + + for (const uniformName in program.uniformTextures) { + program.uniformTextures[uniformName].index = textureIndex; + const location = this.gl.getUniformLocation(program.glProgram, uniformName); + this.gl.uniform1i(location, textureIndex); + textureIndex++; + } + + for (const uniformName in program.uniforms) { + const { type, value } = program.uniforms[uniformName]; + const location = program.uniforms[uniformName].location = this.gl.getUniformLocation(program.glProgram, uniformName); + + if (value !== undefined) + this._setUniform(type, location, value); + + delete program.uniforms[uniformName].value; + } + + program.kernelSizeLocation = this.gl.getUniformLocation(program.glProgram, 'kernelSize'); + this.gl.uniform2i(program.kernelSizeLocation, program.inputWidth, program.inputHeight); + + program.positionLocation = this.gl.getAttribLocation(program.glProgram, 'position'); + program.textureLocation = this.gl.getAttribLocation(program.glProgram, 'texture'); + + program.frameBuffer = this.gl.createFramebuffer(); + this._prepareProgramOutput(program); + + return program; + } + + _prepareProgramInputs(program, inputs) { + if (program.inputTextures) + program.inputTextures.forEach(t => this.gl.deleteTexture(t)); + + program.inputTextures = []; + + for (const [index, data] of inputs.entries()) { + if (data.gpgpuSize === undefined || data.gpgpuStride === undefined) + throw new Error('GPGPU inputs must be created by the `alloc` function.'); + + const size = Math.sqrt(data.length / data.gpgpuStride); + if (size <= 0 || size % 1 != 0) + throw new Error('GPGPU input size is expected to be a perfect square.'); + + if (program.inputWidth === undefined || program.inputHeight === undefined) { + program.inputWidth = size; + program.inputHeight = size; + program.inputDataSize = data.gpgpuSize; + } else if (size != program.inputWidth || size != program.inputHeight) { + throw new Error(`All GPGPU inputs must be of the same size. Received ${data.gpgpuSize} (internal ${size * size}) but expected ${program.inputDataSize} (internal ${program.inputWidth * program.inputHeight}).`); + } + + program.inputTextures.push(this._createTexture(data, size, size, data.gpgpuStride)); + } + } + + _prepareProgramOutput(program) { + this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, program.frameBuffer); + + const outputTexture = this._createTexture(null, program.inputWidth, program.inputHeight, 4, program.output); + + if (program.output && program.output.textureType !== '3D' && program.output.textureType !== '2DArray') { + this.gl.framebufferTexture2D(this.gl.FRAMEBUFFER, this.gl.COLOR_ATTACHMENT0, this.gl.TEXTURE_2D, outputTexture, 0); + const frameBufferStatus = (this.gl.checkFramebufferStatus(this.gl.FRAMEBUFFER) == this.gl.FRAMEBUFFER_COMPLETE); + if (!frameBufferStatus) + throw new Error('Error attaching float texture to framebuffer. Your device is probably incompatible.'); + } + + if (program.outputTexture !== undefined) + this.gl.deleteTexture(program.outputTexture); + program.outputTexture = outputTexture; + + if (program.output && program.output.name) + this.outputTextures[program.output.name] = outputTexture; + } + + _setUniform(type, location, value) { + switch (type) { + case 'int': this.gl.uniform1i(location, value); break; + case 'float': Array.isArray(value) ? this.gl.uniform1fv(location, value) : this.gl.uniform1f(location, value); break; + case 'vec2': this.gl.uniform2fv(location, value); break; + case 'vec3': this.gl.uniform3fv(location, value); break; + case 'vec4': this.gl.uniform4fv(location, value); break; + case 'mat3': this.gl.uniformMatrix3fv(location, value); break; + default: throw new Error(`Unknown uniform type ${type}.`); + } + } + + _newBuffer(data, klass, target) { + const buf = this.gl.createBuffer(); + + this.gl.bindBuffer((target || this.gl.ARRAY_BUFFER), buf); + this.gl.bufferData((target || this.gl.ARRAY_BUFFER), new (klass || Float32Array)(data), this.gl.STATIC_DRAW); + + return buf; + } + + _createTexture(data, width, height, channels, options = {}) { + const texture = this.gl.createTexture(); + + let internalFormat, format; + + switch (channels) { + case 1: + internalFormat = this.gl.R32F; + format = this.gl.RED; + break; + case 2: + internalFormat = this.gl.RG32F; + format = this.gl.RG; + break; + case 3: + internalFormat = this.gl.RGB32F; + format = this.gl.RGB; + break; + case 4: + internalFormat = this.gl.RGBA32F; + format = this.gl.RGBA; + break; + default: + throw("Texture channels must between 1 and 4."); + } + + const target = options.textureType == '3D' ? this.gl.TEXTURE_3D : options.textureType == '2DArray' ? this.gl.TEXTURE_2D_ARRAY : this.gl.TEXTURE_2D; + + this.gl.bindTexture(target, texture); + this.gl.texParameteri(target, this.gl.TEXTURE_WRAP_S, this.gl.CLAMP_TO_EDGE); + this.gl.texParameteri(target, this.gl.TEXTURE_WRAP_T, this.gl.CLAMP_TO_EDGE); + this.gl.texParameteri(target, this.gl.TEXTURE_WRAP_R, this.gl.CLAMP_TO_EDGE); + this.gl.texParameteri(target, this.gl.TEXTURE_MIN_FILTER, options.filter == 'linear' ? this.gl.LINEAR : this.gl.NEAREST); + this.gl.texParameteri(target, this.gl.TEXTURE_MAG_FILTER, options.filter == 'linear' ? this.gl.LINEAR : this.gl.NEAREST); + + if (options.textureType == '3D' || options.textureType == '2DArray') { + this.gl.texImage3D(target, 0, internalFormat, width, height, options.depth, 0, format, this.gl.FLOAT, data); + } else { + this.gl.texImage2D(target, 0, internalFormat, width, height, 0, format, this.gl.FLOAT, data); + } + + this.gl.bindTexture(target, null); + + return texture; + } +} diff --git a/seminar06-planning/simulator/js/Helpers.js b/seminar06-planning/simulator/js/Helpers.js new file mode 100644 index 0000000..813084d --- /dev/null +++ b/seminar06-planning/simulator/js/Helpers.js @@ -0,0 +1,5 @@ +function formatDate(date) { + return date && date.toLocaleDateString(undefined, {month: 'short', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric', hour12: true}); +} + +export { formatDate }; diff --git a/seminar06-planning/simulator/js/Simulator.js b/seminar06-planning/simulator/js/Simulator.js new file mode 100644 index 0000000..0458c61 --- /dev/null +++ b/seminar06-planning/simulator/js/Simulator.js @@ -0,0 +1,939 @@ +import Physics from "./physics/Physics.js"; +import Path from "./autonomy/Path.js"; +import CubicPath from "./autonomy/path-planning/CubicPath.js"; +import AutonomousController from "./autonomy/control/AutonomousController.js"; +import FollowController from "./autonomy/control/FollowController.js"; +import ManualController from "./autonomy/control/ManualController.js"; +import MapObject from "./objects/MapObject.js"; +import CarObject from "./objects/CarObject.js"; +import StaticObstacleObject from "./objects/StaticObstacleObject.js"; +import DynamicObstacleObject from "./objects/DynamicObstacleObject.js"; +import Editor from "./simulator/Editor.js"; +import OrbitControls from "./simulator/OrbitControls.js"; +import TopDownCameraControls from "./simulator/TopDownCameraControls.js"; +import Dashboard from "./simulator/Dashboard.js"; +import GPGPU from "./GPGPU.js"; +import RoadLattice from "./autonomy/path-planning/RoadLattice.js"; +import PathPlanner from "./autonomy/path-planning/PathPlanner.js"; +import StaticObstacle from "./autonomy/StaticObstacle.js"; +import DynamicObstacle from "./autonomy/DynamicObstacle.js"; +import MovingAverage from "./autonomy/MovingAverage.js"; +import PathPlannerConfigEditor from "./simulator/PathPlannerConfigEditor.js"; +import Car from "./physics/Car.js"; + +import Utils from "script-loader!./Utils.js"; + +const WELCOME_MODAL_KEY = 'dash_WelcomeModal'; + +import EXAMPLES from "./simulator/examples.js"; + +export default class Simulator { + constructor(domElement) { + this.pathPlannerWorker = new Worker(URL.createObjectURL(new Blob([`(${dash_initPathPlannerWorker.toString()})()`], { type: 'text/javascript' }))); + this.pathPlannerWorker.onmessage = this.receivePlannedPath.bind(this); + this.pathPlannerConfigEditor = new PathPlannerConfigEditor(); + + this.physics = new Physics(); + this.car = this.physics.createCar(); + + this.renderer = new THREE.WebGLRenderer({ antialias: true }); + this.renderer.setPixelRatio(window.devicePixelRatio); + this.renderer.setSize(domElement.clientWidth, domElement.clientHeight); + this.renderer.shadowMap.enabled = true; + domElement.appendChild(this.renderer.domElement); + + this.lastPlanParams = null; + this.renderer.context.canvas.addEventListener('webglcontextlost', event => { + console.log('Simulator: webgl context lost'); + console.log(event); + console.log(this.lastPlanParams); + }); + + this._setUpCameras(this.renderer.domElement); + + this.scene = new THREE.Scene(); + this.sceneFog = null;//new THREE.FogExp2(0x111111, 0.0025); + this.scene.fog = this.sceneFog; + this.scene.background = new THREE.Color(0x111111); + + this.editor = new Editor(this.renderer.domElement, this.editorCamera, this.scene); + + const geolocation = null;//[33.523900, -111.908756]; + const map = new MapObject(geolocation); + this.scene.add(map); + + this.carObject = new CarObject(this.car); + this.scene.add(this.carObject); + + this.scene.add(new THREE.AmbientLight(0x666666)); + const light = new THREE.DirectionalLight(0xffffff, 0.75); + light.position.set(1, 1, 1).normalize(); + this.scene.add(light); + + this.manualCarController = new ManualController(); + this.autonomousCarController = null; + + this.dashboard = new Dashboard(this.car); + + this.plannerReady = false; + this.plannerRunning = false; + this.plannerReset = false; + this.carStation = null; + this.plannedPathGroup = new THREE.Group(); + this.scene.add(this.plannedPathGroup); + + this.staticObstaclesGroup = new THREE.Group(); + this.scene.add(this.staticObstaclesGroup); + this.dynamicObstaclesGroup = new THREE.Group(); + this.scene.add(this.dynamicObstaclesGroup); + + this.paused = false; + this.prevTimestamp = null; + this.frameCounter = 0; + this.fpsTime = 0; + this.fps = 0; + this.simulatedTime = 0; + this.lastPlanRequestTime = null; + this.latestPlanTimestamp = null; + this.averagePlanTime = new MovingAverage(20); + + window.addEventListener('resize', e => { + this._updateCameraAspects(domElement.clientWidth / domElement.clientHeight); + this.renderer.setSize(domElement.clientWidth, domElement.clientHeight); + }); + + window.addEventListener('hashchange', e => { + if (window.location.hash.startsWith('#/s/')) + window.location.reload(); + }); + + this.manualModeButton = document.getElementById('mode-manual'); + this.manualModeButton.addEventListener('click', this.enableManualMode.bind(this)); + this.autonomousModeButton = document.getElementById('mode-autonomous'); + this.autonomousModeButton.addEventListener('click', this.enableAutonomousMode.bind(this)); + + document.getElementById('editor-enable').addEventListener('click', this.enableEditor.bind(this)); + document.getElementById('editor-finalize').addEventListener('click', this.finalizeEditor.bind(this)); + document.getElementById('simulator-load').addEventListener('click', this.loadScenario.bind(this)); + + this.scenarioPlayButton = document.getElementById('scenario-play'); + this.scenarioPlayButton.addEventListener('click', this.playScenario.bind(this)); + this.scenarioPauseButton = document.getElementById('scenario-pause'); + this.scenarioPauseButton.addEventListener('click', this.pauseScenario.bind(this)); + for (const btn of document.querySelectorAll('[id=scenario-restart]')) { + btn.addEventListener('click', this.restartScenario.bind(this)); + } + + this.welcomeModal = document.getElementById('welcome-modal'); + document.getElementById('show-welcome-modal').addEventListener('click', e => this.welcomeModal.classList.add('is-active')); + + // if (window.localStorage.getItem(WELCOME_MODAL_KEY) !== 'hide') { + // this.welcomeModal.classList.add('is-active'); + // } + + this.collisionMessage = document.getElementById('collision-message'); + this.successMessage = document.getElementById('success-message'); + // If the click was outside the div, hide it + document.addEventListener("click", this.setHideCollisionMessageOnClickOutside.bind(this)); + + document.getElementById('welcome-modal-background').addEventListener('click', this.hideWelcomeModal.bind(this)); + document.getElementById('welcome-modal-close').addEventListener('click', this.hideWelcomeModal.bind(this)); + + document.getElementById('welcome-modal-examples').addEventListener('click', e => { + this.welcomeModal.classList.remove('is-active'); + this.loadScenario(); + this.editor.scenarioManager.switchTab(this.editor.scenarioManager.examplesTab); + }); + + document.getElementById('welcome-modal-create').addEventListener('click', e => { + this.welcomeModal.classList.remove('is-active'); + this.enableEditor(); + }); + + this.simModeBoxes = Array.prototype.slice.call(document.getElementsByClassName('sim-mode-box'), 0); + this.editModeBoxes = Array.prototype.slice.call(document.getElementsByClassName('edit-mode-box'), 0); + + this.fpsBox = document.getElementById('fps'); + + this.enableManualMode(); + this.changeCamera('chase'); + + this.aroundAnchorIndex = null; + this.staticObstacles = []; + this.dynamicObstacles = []; + + this._checkHashScenario(); + + requestAnimationFrame(this.step.bind(this)); + + this.editor.scenarioManager._loadScenario(EXAMPLES[2]); + this.finalizeEditor(); + } + + toss() { + const pose = this.car.pose; + const rotVec = THREE.Vector2.fromAngle(pose.rot); + const pos = rotVec.clone().multiplyScalar(50).add(new THREE.Vector2(rotVec.y, rotVec.x)).add(pose.pos); + const obstacle = new StaticObstacle(pos, 0, 1.0, 1.0); + + const obsGeom = new THREE.PlaneGeometry(obstacle.width, obstacle.height); + const obsMat = new THREE.MeshBasicMaterial({ color: 0x0000ff, depthTest: false, transparent: true, opacity: 0.5 }); + const obsObj = new THREE.Mesh(obsGeom, obsMat); + obsObj.rotation.x = -Math.PI / 2; + obsObj.rotation.z = -obstacle.rot; + obsObj.position.set(obstacle.pos.x, 0, obstacle.pos.y); + this.scene.add(obsObj); + + this.staticObstacles.push(obstacle); + } + + _checkHashScenario() { + if (!window.location.hash.startsWith('#/s/')) return; + + const [_hash, _s, code] = window.location.hash.split('/'); + + try { + const json = JSON.parse(atob(decodeURIComponent(code))); + this.editor.loadJSON(json); + this.finalizeEditor(); + this.welcomeModal.classList.remove('is-active'); + window.location.hash = ''; + } catch (e) { + console.log('Error importing scenario code:'); + console.log(code); + console.log(e); + } + } + + _setUpCameras(domElement) { + this.chaseCamera = new THREE.PerspectiveCamera(55, domElement.clientWidth / domElement.clientHeight, 1, 10000); + this.chaseCameraControls = new OrbitControls(this.chaseCamera, domElement); + this.chaseCameraControls.minDistance = 4; + this.chaseCameraControls.maxDistance = 5000; + this.chaseCameraControls.maxPolarAngle = Math.PI / 2.02; + this.chaseCameraControls.enablePan = false; + this.chaseCameraControls.enabled = false; + this._resetChaseCamera(); + + this.freeCamera = new THREE.PerspectiveCamera(55, domElement.clientWidth / domElement.clientHeight, 1, 10000); + this.freeCameraControls = new OrbitControls(this.freeCamera, domElement); + this.freeCameraControls.minDistance = 5; + this.freeCameraControls.maxDistance = 5000; + this.freeCameraControls.maxPolarAngle = Math.PI / 2.02; + this.freeCameraControls.enabled = true; + this._resetFreeCamera(); + + this.topDownCamera = new THREE.PerspectiveCamera(55, domElement.clientWidth / domElement.clientHeight, 1, 10000); + this.topDownCamera.position.set(0, 50, 0); + this.topDownCamera.lookAt(0, 0, 0); + this.topDownControls = new TopDownCameraControls(domElement, this.topDownCamera); + this.topDownControls.enabled = false; + this.topDownControls.minAltitude = 5; + this.topDownControls.maxAltitude = 10000; + + this.editorCamera = new THREE.PerspectiveCamera(45, domElement.clientWidth / domElement.clientHeight, 1, 10000); + this.editorCamera.layers.enable(2); + this.editorCamera.position.set(0, 200, 0); + this.editorCamera.lookAt(0, 0, 0); + this.editorCameraControls = new TopDownCameraControls(domElement, this.editorCamera); + this.editorCameraControls.enabled = false; + this.editorCameraControls.enablePanning = true; + this.editorCameraControls.minAltitude = 10; + this.editorCameraControls.maxAltitude = 10000; + + this.cameraButtons = {}; + + ['free', 'chase', 'topDown'].forEach(c => { + const cameraButton = document.getElementById(`camera-${c}`); + cameraButton.addEventListener('click', () => this.changeCamera(c)); + this.cameraButtons[c] = cameraButton; + }); + + this.switchTo2DButton = document.getElementById('camera-2D'); + this.switchTo2DButton.addEventListener('click', this.switchTo2D.bind(this)); + this.switchTo3DButton = document.getElementById('camera-3D'); + this.switchTo3DButton.addEventListener('click', this.switchTo3D.bind(this)); + + this.switchTo3D(); + } + + _resetFreeCamera() { + this.freeCameraControls.position0.copy(this.chaseCamera.position); + const carPosition = this.car.position; + this.freeCameraControls.target0.set(carPosition.x, 0, carPosition.y); + this.freeCameraControls.reset(); + } + + _resetChaseCamera() { + const pos = this.car.position; + const dirVector = THREE.Vector2.fromAngle(this.car.rotation).multiplyScalar(-20); + this.chaseCamera.position.set(pos.x + dirVector.x, 8, pos.y + dirVector.y); + this.chaseCamera.lookAt(pos.x, 0, pos.y); + } + + _resetTopDownCamera() { + const carPosition = this.car.position; + this.topDownCamera.position.set(carPosition.x, 50, carPosition.y); + this.topDownCamera.rotation.z = -this.car.rotation - Math.PI / 2 + } + + _updateCameraAspects(aspect) { + this.freeCamera.aspect = aspect; + this.freeCamera.updateProjectionMatrix(); + this.chaseCamera.aspect = aspect; + this.chaseCamera.updateProjectionMatrix(); + this.topDownCamera.aspect = aspect; + this.topDownCamera.updateProjectionMatrix(); + this.editorCamera.aspect = aspect; + this.editorCamera.updateProjectionMatrix(); + } + + enableEditor() { + this.editor.enabled = true; + this.plannerRunning = false; + + this.previousCamera = this.camera; + this.camera = this.editorCamera; + this.editorCameraControls.enabled = true; + this.chaseCameraControls.enabled = false; + this.topDownControls.enabled = false; + this.freeCameraControls.enabled = false; + + this.scene.fog = null; + this.carObject.visible = false; + if (this.plannedPathGroup) this.plannedPathGroup.visible = false; + this.staticObstaclesGroup.visible = false; + this.dynamicObstaclesGroup.visible = false; + + this.simModeBoxes.forEach(el => el.classList.add('is-hidden')); + this.editModeBoxes.forEach(el => el.classList.remove('is-hidden')); + + this.showPlannerUnavailable(false); + } + + finalizeEditor(replaceCamera = true) { + this.editor.enabled = false; + this.editorCameraControls.enabled = false; + + this.latestPlanTimestamp = null; + this.prevTimestamp = null; + + this.scene.fog = this.sceneFog; + this.carObject.visible = true; + + this.simModeBoxes.forEach(el => el.classList.remove('is-hidden')); + this.editModeBoxes.forEach(el => el.classList.add('is-hidden')); + + if (this.editor.lanePath.anchors.length > 1) { + const centerline = this.editor.lanePath.centerline; + const pos = centerline[0].clone(); + const dir = centerline[1].clone().sub(centerline[0]); + const rot = Math.atan2(dir.y, dir.x); + const perpindicular = rot + Math.PI / 2 * (Math.sign(this.editor.lanePreference) || 0); + const latitude = this.pathPlannerConfigEditor.config.roadWidth / 4; + + this.car.setPose(pos.x + Math.cos(perpindicular) * latitude, pos.y + Math.sin(perpindicular) * latitude, rot); + this.car.velocity = this.editor.initialSpeed; + + this.dynamicObstacles = this.editor.dynamicObstacles; + + // The `false` value means the controller is waiting to be created after the first planning cycle. + // This signals the simulator to use neutral controls instead of the hard brake used for the `null` value. + this.autonomousCarController = false; + this.enableAutonomousMode(); + + if (!this.plannerRunning) { + this.plannerReady = true; + this.plannerRunning = true; + } + this.plannerReset = true; + this.simulatedTime = 0; + this.carStation = 0; + this.aroundAnchorIndex = null; + + this.pauseScenario(); + this.autonomousModeButton.classList.add('is-loading'); + this.waitingForFirstPlan = true; + } else { + this.dynamicObstacles = []; + } + + this.staticObstacles = this.editor.staticObstacles; + this.recreateStaticObstacleObjects(); + this.recreateDynamicObstacleObjects(); + + this.dashboard.update({ steer: 0, brake: 0, gas: 0 }, this.car.velocity, null, null, 0, this.averagePlanTime.average); + + if (replaceCamera) { + this.camera = this.previousCamera; + + if (this.previousCamera == this.chaseCamera) + this.chaseCameraControls.enabled = true; + else if (this.previousCamera == this.topDownCamera) + this.topDownControls.enabled = true; + else if (this.previousCamera == this.freeCamera) + this.freeCameraControls.enabled = true; + else + this.changeCamera('chase'); + } + + this._resetFreeCamera(); + this._resetChaseCamera(); + this._resetTopDownCamera(); + } + + recreateStaticObstacleObjects() { + this.scene.remove(this.staticObstaclesGroup); + this.staticObstaclesGroup = new THREE.Group(); + this.scene.add(this.staticObstaclesGroup); + + this.staticObstacles.forEach(o => { + const obstacleObject = new StaticObstacleObject(o); + this.staticObstaclesGroup.add(obstacleObject); + }); + } + + recreateDynamicObstacleObjects() { + this.scene.remove(this.dynamicObstaclesGroup); + this.dynamicObstaclesGroup = new THREE.Group(); + this.scene.add(this.dynamicObstaclesGroup); + + this.dynamicObstacles.forEach(o => { + const obstacleObject = new DynamicObstacleObject(o, this.editor.lanePath); + this.dynamicObstaclesGroup.add(obstacleObject); + }); + + this.updateDynamicObjects(this.simulatedTime); + } + + updateDynamicObjects(time) { + this.dynamicObstaclesGroup.children.forEach(o => o.update(time)); + } + + playScenario() { + this.paused = false; + this.scenarioPlayButton.classList.add('is-hidden'); + this.scenarioPauseButton.classList.remove('is-hidden'); + this.showPlannerUnavailable(false); + } + + pauseScenario() { + this.paused = true; + this.scenarioPlayButton.classList.remove('is-hidden'); + this.scenarioPauseButton.classList.add('is-hidden'); + + this.showPlannerUnavailable(false); + this.waitingForFirstPlan = false; + } + + restartScenario() { + if (this.editor.enabled) return; + + if (this.plannedPathGroup) + this.scene.remove(this.plannedPathGroup); + + this.finalizeEditor(false); + + this.successMessage.classList.remove('is-active'); + this.collisionMessage.classList.remove('is-active'); + + this.latestPlanTimestamp = null; + this.showPlannerUnavailable(false); + } + + loadScenario() { + if (this.editor.enabled) return; + + this.editor.scenarioManager.showModal(this.finalizeEditor.bind(this)); + } + + enableManualMode() { + this.manualModeButton.classList.remove('is-outlined'); + this.manualModeButton.classList.add('is-selected'); + this.autonomousModeButton.classList.add('is-outlined', 'is-inverted'); + this.autonomousModeButton.classList.remove('is-selected', 'is-link'); + + this.carControllerMode = 'manual'; + + this.showPlannerUnavailable(false); + } + + enableAutonomousMode() { + this.autonomousModeButton.classList.remove('is-outlined', 'is-inverted'); + this.autonomousModeButton.classList.add('is-selected', 'is-link'); + this.manualModeButton.classList.add('is-outlined'); + this.manualModeButton.classList.remove('is-selected'); + + this.carControllerMode = 'autonomous'; + } + + changeCamera(mode) { + if (this.editor.enabled) return; + + switch (mode) { + case "free": + this.chaseCameraControls.enabled = false; + this.topDownControls.enabled = false; + this.freeCameraControls.enabled = true; + + if (this.camera == this.freeCamera) + this._resetFreeCamera(); + else + this.camera = this.freeCamera; + + break; + case "chase": + this.freeCameraControls.enabled = false; + this.topDownControls.enabled = false; + this.chaseCameraControls.enabled = true; + + if (this.camera == this.chaseCamera) + this._resetChaseCamera(); + else + this.camera = this.chaseCamera; + + break; + case "topDown": + this.freeCameraControls.enabled = false; + this.chaseCameraControls.enabled = false; + this.topDownControls.enabled = true; + + if (this.camera == this.topDownCamera) + this._resetTopDownCamera(); + else + this.camera = this.topDownCamera; + + break; + default: + console.log(`Unknown camera mode: ${mode}`); + return; + } + + for (const c in this.cameraButtons) { + const classes = this.cameraButtons[c].classList; + if (c == mode) { + classes.remove('is-outlined'); + classes.add('is-selected'); + } else { + classes.add('is-outlined'); + classes.remove('is-selected'); + } + } + } + + switchTo2D() { + this.switchTo2DButton.classList.remove('is-outlined'); + this.switchTo2DButton.classList.add('is-selected'); + this.switchTo3DButton.classList.add('is-outlined'); + this.switchTo3DButton.classList.remove('is-selected'); + + this.chaseCamera.layers.enable(2); + this.topDownCamera.layers.enable(2); + this.freeCamera.layers.enable(2); + this.chaseCamera.layers.disable(3); + this.topDownCamera.layers.disable(3); + this.freeCamera.layers.disable(3); + } + + switchTo3D() { + this.switchTo3DButton.classList.remove('is-outlined'); + this.switchTo3DButton.classList.add('is-selected'); + this.switchTo2DButton.classList.add('is-outlined'); + this.switchTo2DButton.classList.remove('is-selected'); + + this.chaseCamera.layers.enable(3); + this.topDownCamera.layers.enable(3); + this.freeCamera.layers.enable(3); + this.chaseCamera.layers.disable(2); + this.topDownCamera.layers.disable(2); + this.freeCamera.layers.disable(2); + } + + hideWelcomeModal() { + this.welcomeModal.classList.remove('is-active'); + window.localStorage.setItem(WELCOME_MODAL_KEY, 'hide'); + } + + showPlannerUnavailable(show) { + const message = document.getElementById("planner-unavailable-message"); + if (show) { + message.classList.add('is-active'); + this.autonomousModeButton.classList.add('is-loading'); + } else { + message.classList.remove('is-active'); + this.autonomousModeButton.classList.remove('is-loading'); + } + } + + setHideCollisionMessageOnClickOutside() { + if (!this.collisionMessage.contains(event.target)) { + this.collisionMessage.classList.remove('is-active'); + } + if (!this.successMessage.contains(event.target)) { + this.successMessage.classList.remove('is-active'); + } + } + + startPlanner(pose, station) { + this.plannerReady = false; + this.lastPlanRequestTime = performance.now(); + + // In order to create a stable trajectory between successive planning + // cycles, we must compensate for the latency between when a planning cycle + // starts and when it ends. The average planning time is used to forward + // simulate the vehicle to the pose it is expected to have when the + // planning actually finishes. + + let predictedPose = pose; + let predictedStation = station; + let startTime = this.simulatedTime; + + if (!this.plannerReset && !this.paused && this.autonomousCarController && this.carControllerMode == 'autonomous') { + const latency = this.averagePlanTime.average; + predictedPose = this.autonomousCarController.predictPoseAfterTime(pose, latency); + predictedStation = this.editor.lanePath.stationLatitudeFromPosition(predictedPose.pos, this.aroundAnchorIndex)[0]; + startTime += latency; + } + + const reset = this.plannerReset; + this.plannerReset = false; + + this.lastPlanParams = { + type: 'plan', + config: Object.assign({}, this.pathPlannerConfigEditor.config, { speedLimit: this.editor.speedLimit, lanePreference: this.editor.lanePreference }), + vehiclePose: predictedPose, + vehicleStation: predictedStation, + lanePath: this.editor.lanePath, + startTime: startTime, + staticObstacles: this.staticObstacles, + dynamicObstacles: this.dynamicObstacles.filter(o => o.positionAtTime(startTime).x >= 0), + reset: reset + }; + + this.pathPlannerWorker.postMessage(this.lastPlanParams); + } + + receivePlannedPath(event) { + if (event.data.error) { + if (event.data.error === "planner_unavailable" && !this.paused) { + this.showPlannerUnavailable(true); + } + //document.getElementById('planner-error').classList.remove('is-hidden') + return; + } + + this.showPlannerUnavailable(false); + + this.latestPlanTimestamp = performance.now(); + + if (this.waitingForFirstPlan && !this.plannerReset) { + this.waitingForFirstPlan = false; + this.autonomousModeButton.classList.remove('is-loading'); + this.playScenario(); + } + + if (this.editor.enabled) return; + + const { fromVehicleParams, vehiclePose, vehicleStation, latticeStartStation, config, dynamicObstacleGrid } = event.data; + let { path, fromVehicleSegment } = event.data; + + const planningDuration = Math.min((this.latestPlanTimestamp - this.lastPlanRequestTime) / 1000, 0.3); + this.averagePlanTime.addSample(planningDuration); + this.plannerReady = true; + + if (this.plannerReset) return; + + if (this.plannedPathGroup) + this.scene.remove(this.plannedPathGroup); + this.plannedPathGroup = new THREE.Group(); + this.scene.add(this.plannedPathGroup); + + const circleGeom = new THREE.CircleGeometry(0.1, 32); + const circleMat = new THREE.MeshBasicMaterial({ color: 0x00ff80, transparent: true, opacity: 0.7 }); + + if (latticeStartStation) { + const lattice = new RoadLattice(this.editor.lanePath, latticeStartStation, config); + lattice.lattice.forEach(cells => { + cells.forEach(c => { + const circle = new THREE.Mesh(circleGeom, circleMat); + circle.position.set(c.pos.x, 0, c.pos.y); + circle.rotation.x = -Math.PI / 2; + this.plannedPathGroup.add(circle); + }); + }); + } + + // TODO: clear this up or just remove it + if (false && dynamicObstacleGrid) { + const dynamicGridTex = new THREE.DataTexture(dynamicObstacleGrid.data, dynamicObstacleGrid.width, dynamicObstacleGrid.height, THREE.RGBAFormat, THREE.FloatType); + dynamicGridTex.flipY = true; + dynamicGridTex.needsUpdate = true; + + const [gridStart] = this.editor.lanePath.sampleStations(vehicleStation, 1, 0); + if (gridStart) { + const dynamicGridGeom = new THREE.PlaneGeometry(dynamicObstacleGrid.width * config.slGridCellSize, dynamicObstacleGrid.height * config.slGridCellSize); + const dynamicGridMat = new THREE.MeshBasicMaterial({ map: dynamicGridTex, depthTest: false, transparent: true, opacity: 0.5 }); + const dynamicGridObj = new THREE.Mesh(dynamicGridGeom, dynamicGridMat); + dynamicGridObj.rotation.x = -Math.PI / 2; + dynamicGridObj.rotation.z = -gridStart.rot; + const offset = THREE.Vector2.fromAngle(gridStart.rot).multiplyScalar(dynamicObstacleGrid.width * config.slGridCellSize / 2 - config.spatialHorizon / config.lattice.numStations); + dynamicGridObj.position.set(gridStart.pos.x + offset.x, 0, gridStart.pos.y + offset.y); + + this.plannedPathGroup.add(dynamicGridObj); + } + } + + if (path === null) { + this.autonomousCarController = null; + return; + } + + if (fromVehicleParams.type == 'cubic') { + const start = this.car.pose; + const end = fromVehicleSegment[fromVehicleSegment.length - 1]; + + const pathBuilder = new CubicPath(start, end, fromVehicleParams.params); + + if (pathBuilder.optimize()) { + fromVehicleSegment = pathBuilder.buildPath(Math.ceil(pathBuilder.params.sG / 0.25)); + + const prevVelocitySq = this.car.velocity * this.car.velocity; + const accel = (end.velocity * end.velocity - prevVelocitySq) / 2 / pathBuilder.params.sG; + const ds = pathBuilder.params.sG / (fromVehicleSegment.length - 1); + let s = 0; + + for (let p = 0; p < fromVehicleSegment.length; p++) { + fromVehicleSegment[p].velocity = Math.sqrt(2 * accel * s + prevVelocitySq); + fromVehicleSegment[p].acceleration = accel; + s += ds; + } + } + } + + if (fromVehicleSegment.length > 0) { + path = fromVehicleSegment.concat(path); + } + + path.forEach(p => Object.setPrototypeOf(p.pos, THREE.Vector2.prototype)); + const followPath = new Path(path); + + if (this.autonomousCarController) + this.autonomousCarController.replacePath(followPath); + else + this.autonomousCarController = new FollowController(followPath, this.car); + + const pathGeometry = new THREE.Geometry(); + pathGeometry.setFromPoints(path.map(p => new THREE.Vector3(p.pos.x, 0, p.pos.y))); + const pathLine = new MeshLine(); + pathLine.setGeometry(pathGeometry); + + const color = fromVehicleParams.type == 'cubic' ? new THREE.Color(0xff8800) : new THREE.Color(0xffff40); + const pathObject = new THREE.Mesh( + pathLine.geometry, + new MeshLineMaterial({ + color: color, + lineWidth: 0.15, + resolution: new THREE.Vector2(this.renderer.domElement.clientWidth, this.renderer.domElement.clientHeight) + }) + ); + pathObject.renderOrder = 1; + this.plannedPathGroup.add(pathObject); + } + + _hasCarStaticObstacleCollision(carRectangle) { + for (const obstacle of this.staticObstacles) { + const obstacleRectangle = { + x: obstacle.pos.x, + y: obstacle.pos.y, + width: obstacle.width, + height: obstacle.height, + angle: obstacle.rot, + }; + if (areRectanglesColliding(carRectangle, obstacleRectangle)) { + return true; + } + } + } + + _hasCarDynamicObstacleCollision(carRectangle) { + for (const obstacle of this.dynamicObstaclesGroup.children) { + const positoin_at_time = obstacle.position + const obstacleRectangle = { + x: positoin_at_time.x, + y: positoin_at_time.z, + width: obstacle.size.w + 0.4, // 30 cm is collision buffer + height: obstacle.size.h + 0.4, + angle: obstacle.rotation.y, + }; + if (areRectanglesColliding(carRectangle, obstacleRectangle)) { + return true; + } + } + } + + _hasCarOutOfRoadCollision(carRectangle) { + for (const left_boundary of this.editor.lanePath.leftBoundaries) { + if (checkRectanglePolylineIntersection(carRectangle, left_boundary)) { + return true; + } + } + + for (const right_boundary of this.editor.lanePath.rightBoundaries) { + if (checkRectanglePolylineIntersection(carRectangle, right_boundary)) { + return true; + } + } + + return false; + } + + hasAnyCollisions() { + const carRectangle = { + x: this.car.position.x, + y: this.car.position.y, + height: Car.HALF_CAR_WIDTH * 2, + width: Car.HALF_CAR_LENGTH * 2, + angle: this.car.pose.rot, + }; + + if (this._hasCarStaticObstacleCollision(carRectangle)) { + return "Collision with static object"; + } + if (this._hasCarDynamicObstacleCollision(carRectangle)) { + return "Collision with bot"; + } + if (this._hasCarOutOfRoadCollision(carRectangle)) { + return "Out of road"; + } + + return null; + } + + checkScenarioCompletion() { + return this.carStation >= this.editor.lanePath.arcLength - 5.0; + } + + step(timestamp) { + if (this.prevTimestamp == null) { + this.prevTimestamp = timestamp; + requestAnimationFrame(this.step.bind(this)); + return; + } + + // plan is outdated, should pause simulation + const planWaitingThreshold = 0.3; // path expected to be updated once in 300ms + const timeSinceLastPlanUpdate = + this.latestPlanTimestamp != null ? (performance.now() - this.latestPlanTimestamp) / 1000.0 : 0; // in ms + if (!this.editor.enabled && + (this.waitingForFirstPlan || (!this.paused && timeSinceLastPlanUpdate > planWaitingThreshold))) { + this.showPlannerUnavailable(true); + this.prevTimestamp = timestamp; + } + const dt = (timestamp - this.prevTimestamp) / 1000; + + this.editor.update(); + + // skip simulation when dt is not in valid expected range + if (!this.editor.enabled && !this.paused && dt > 1e-6 && dt < 0.5) { + this.showPlannerUnavailable(false); + + this.simulatedTime += dt; + + const prevCarPosition = this.car.position; + const prevCarRotation = this.car.rotation; + + const manualControls = this.manualCarController.control(this.car.pose, this.car.wheelAngle, this.car.velocity, dt); + if (manualControls.steer != 0 || manualControls.brake != 0 || manualControls.gas != 0) + this.enableManualMode(); + + let autonomousControls = { steer: 0, brake: 0, gas: 0}; + if (this.autonomousCarController) + autonomousControls = this.autonomousCarController.control(this.car.pose, this.car.wheelAngle, this.car.velocity, dt, this.carControllerMode == 'autonomous') ; + else if (this.autonomousCarController === null) + autonomousControls = { steer: 0, brake: 1, gas: 0 }; + + const controls = this.carControllerMode == 'autonomous' ? autonomousControls : manualControls; + + this.car.update(controls, dt); + this.physics.step(dt); + + this.updateDynamicObjects(this.simulatedTime); + + const carPosition = this.car.position; + const carRotation = this.car.rotation; + const carRearAxle = this.car.rearAxlePosition; + const carVelocity = this.car.velocity; + + const positionOffset = { x: carPosition.x - prevCarPosition.x, y: 0, z: carPosition.y - prevCarPosition.y }; + this.chaseCamera.position.add(positionOffset); + this.chaseCameraControls.target.set(carPosition.x, 0, carPosition.y); + this.chaseCameraControls.rotateLeft(carRotation - prevCarRotation); + this.chaseCameraControls.update(); + + this.topDownCamera.position.setX(carPosition.x); + this.topDownCamera.position.setZ(carPosition.y); + this.topDownCamera.rotation.z = -carRotation - Math.PI / 2 + + let latitude = null; + + if (this.editor.lanePath.anchors.length > 1) { + const [s, l, aroundAnchorIndex] = this.editor.lanePath.stationLatitudeFromPosition(carRearAxle, this.aroundAnchorIndex); + this.aroundAnchorIndex = aroundAnchorIndex; + + this.carStation = s; + latitude = l; + } + + const any_collision = this.hasAnyCollisions(); + if (any_collision != null) { + this.pauseScenario(); + this.collisionMessage.classList.add('is-active'); + document.getElementById('collision-message-text').innerText = "Case failed: " + any_collision; + + this.pathPlannerWorker.postMessage({ + type: 'notify_case_status', + status: {status: "failed", reason: any_collision} + }); + + } else if (this.checkScenarioCompletion()) { + this.pauseScenario(); + this.successMessage.classList.add('is-active'); + + this.pathPlannerWorker.postMessage({ + type: 'notify_case_status', + status: {status: "completed"} + }); + } + + this.dashboard.update( + controls, + carVelocity, + this.carStation, + latitude, + this.simulatedTime, + this.averagePlanTime.average); + } + + if (!this.editor.enabled && this.plannerReady) { + this.startPlanner(this.car.pose, this.carStation || 0); + this.dashboard.updatePlanTime(this.averagePlanTime.average); + } else if (!this.plannerReady) { + this.dashboard.updatePlanTime(timeSinceLastPlanUpdate); + } + + this.frameCounter++; + this.fpsTime += dt; + if (this.fpsTime >= 1) { + this.fps = this.frameCounter / this.fpsTime; + this.frameCounter = 0; + this.fpsTime = 0; + this.fpsBox.textContent = this.fps.toFixed(1); + } + + this.renderer.render(this.scene, this.camera); + + this.prevTimestamp = timestamp; + + requestAnimationFrame(this.step.bind(this)); + } +} diff --git a/seminar06-planning/simulator/js/Utils.js b/seminar06-planning/simulator/js/Utils.js new file mode 100644 index 0000000..9ddcbd9 --- /dev/null +++ b/seminar06-planning/simulator/js/Utils.js @@ -0,0 +1,151 @@ +Math.clamp = (number, min, max) => Math.max(min, Math.min(number, max)); + +Math.wrapAngle = (angle) => { + angle = angle % (Math.PI * 2); + if (angle <= -Math.PI) return angle + Math.PI * 2; + else if (angle > Math.PI) return angle - Math.PI * 2; + else return angle; +} + +THREE.Vector2.fromAngle = (angle) => new THREE.Vector2(Math.cos(angle), Math.sin(angle)); + +THREE.Curve.prototype.getCurvatureAt = function(u) { + let t2 = this.getUtoTmapping(u); + + const delta = 0.0001; + let t1 = t2 - delta; + let t3 = t2 + delta; + + if (t1 < 0) { + t1 = 0; + t2 = delta; + t3 = 2 * delta; + } + + if (t3 > 1) { + t3 = 1; + t2 = 1 - delta; + t1 = 1 - 2 * delta; + } + + const p1 = this.getPoint(t1); + const p2 = this.getPoint(t2); + const p3 = this.getPoint(t3); + + return (Math.atan2(p3.y - p2.y, p3.x - p2.x) - Math.atan2(p2.y - p1.y, p2.x - p1.x)) / p2.distanceTo(p1); +}; + + +function getOBBVertices(cx, cy, width, height, angle) { + const hw = width / 2; // half width + const hh = height / 2; // half height + const cos = Math.cos(angle); + const sin = Math.sin(angle); + + return [ + // Top-left + { x: cx - hw * cos + hh * sin, y: cy - hw * sin - hh * cos }, + // Top-right + { x: cx + hw * cos + hh * sin, y: cy + hw * sin - hh * cos }, + // Bottom-right + { x: cx + hw * cos - hh * sin, y: cy + hw * sin + hh * cos }, + // Bottom-left + { x: cx - hw * cos - hh * sin, y: cy - hw * sin + hh * cos } + ]; +} + +function getOOBBAxes(vertices) { + const axes = []; + for (let i = 0; i < vertices.length; i++) { + const p1 = vertices[i]; + const p2 = vertices[(i + 1) % vertices.length]; // Next vertex + const edge = { x: p1.x - p2.x, y: p1.y - p2.y }; // Get edge vector + const normal = { x: -edge.y, y: edge.x }; // Get normal (perpendicular) vector + const length = Math.sqrt(normal.x * normal.x + normal.y * normal.y); + axes.push({ x: normal.x / length, y: normal.y / length }); // Normalize vector + } + return axes; +} + +function projectOnAxis(vertices, axis) { + let min = Infinity; + let max = -Infinity; + for (const vertex of vertices) { + let projection = vertex.x * axis.x + vertex.y * axis.y; + min = Math.min(min, projection); + max = Math.max(max, projection); + } + return { min, max }; +} + +function segmentsOverlaps(projection1, projection2) { + return projection1.max >= projection2.min && projection2.max >= projection1.min; +} + +function areRectanglesColliding(rect1, rect2) { + const verticesA = getOBBVertices(rect1.x, rect1.y, rect1.width, rect1.height, rect1.angle); + const verticesB = getOBBVertices(rect2.x, rect2.y, rect2.width, rect2.height, rect2.angle); + + const axesA = getOOBBAxes(verticesA); + const axesB = getOOBBAxes(verticesB); + const axes = axesA.concat(axesB); + + for (const axis of axes) { + const projectionA = projectOnAxis(verticesA, axis); + const projectionB = projectOnAxis(verticesB, axis); + if (!segmentsOverlaps(projectionA, projectionB)) { + return false; // Found a separating axis, no collision + } + } + + return true; // No separating axis found, rectangles intersect +} + +function checkRectanglePolylineIntersection(rect, polylinePoints) { + const rectanglePoints = getOBBVertices(rect.x, rect.y, rect.width, rect.height, rect.angle) + + // Transform rectangle points into array of lines + const rectangleLines = []; + for (let i = 0; i < rectanglePoints.length; i++) { + rectangleLines.push([ + rectanglePoints[i], + rectanglePoints[(i + 1) % rectanglePoints.length] + ]); + } + + // Check each polyline segment for intersection with each rectangle line + for (let i = 0; i < polylinePoints.length - 1; i++) { + const polylineSegment = [ + polylinePoints[i], + polylinePoints[i + 1] + ]; + + for (const rectLine of rectangleLines) { + if (intersectSegment(rectLine[0], rectLine[1], polylineSegment[0], polylineSegment[1])) { + return true; // Found an intersection + } + } + } + + // No intersections found + return false; +} + +// Helper function to detect intersection between two line segments +function intersectSegment(p0, p1, p2, p3) { + let s1_x, s1_y, s2_x, s2_y; + s1_x = p1.x - p0.x; s1_y = p1.y - p0.y; + s2_x = p3.x - p2.x; s2_y = p3.y - p2.y; + + let s, t; + s = (-s1_y * (p0.x - p2.x) + s1_x * (p0.y - p2.y)) / (-s2_x * s1_y + s1_x * s2_y); + t = ( s2_x * (p0.y - p2.y) - s2_y * (p0.x - p2.x)) / (-s2_x * s1_y + s1_x * s2_y); + + // Collision detected + if (s >= 0 && s <= 1 && t >= 0 && t <= 1) { + // Intersection point is p0 + t * s1 + return true; + } + + return false; // No collision +} diff --git a/seminar06-planning/simulator/js/autonomy/DynamicObstacle.js b/seminar06-planning/simulator/js/autonomy/DynamicObstacle.js new file mode 100644 index 0000000..ddf5364 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/DynamicObstacle.js @@ -0,0 +1,99 @@ +// Half width and half height +const VEHICLE_SIZE = { w: 2.5, h: 1 }; +const CYCLIST_SIZE = { w: 1.2, h: 0.6 }; +const PEDESTRIAN_SIZE = { w: 0.6, h: 0.6 }; + +export default class DynamicObstacle { + static hydrate(obj) { + Object.setPrototypeOf(obj, DynamicObstacle.prototype); + Object.setPrototypeOf(obj.startPos, THREE.Vector2.prototype); + Object.setPrototypeOf(obj.velocity, THREE.Vector2.prototype); + } + + constructor(type, startPos, velocity, parallel) { + this.type = type; + this.startPos = startPos; + this.velocity = velocity; + this.parallel = parallel; + + switch (type) { + case 'cyclist': + this.size = Object.assign({}, CYCLIST_SIZE); + break; + + case 'pedestrian': + this.size = Object.assign({}, PEDESTRIAN_SIZE); + break; + + default: + this.size = Object.assign({}, VEHICLE_SIZE); + } + + if (!parallel) + [this.size.w, this.size.h] = [this.size.h, this.size.w]; + } + + positionAtTime(time) { + return this.velocity.clone().multiplyScalar(time).add(this.startPos); + } + + positionsInTimeRange(startTime, endTime, numFrames) { + const dt = (endTime - startTime) / numFrames; + const positions = []; + let time = startTime; + + for (let i = 0; i <= numFrames; i++) { + positions.push(this.positionAtTime(time)); + time += dt; + } + + return positions; + } + + verticesInTimeRange(startTime, endTime, config) { + const positions = this.positionsInTimeRange(startTime, endTime, config.numDynamicSubframes); + const vertices = []; + + // Hazard dilation (drawn behind, z = 0.75) + const hazardHalfWidth = this.size.w + config.dynamicHazardDilationS + config.collisionDilationS; + const hazardHalfHeight = this.size.h + config.dynamicHazardDilationL + config.collisionDilationL; + + positions.forEach(p => { + const v1 = [-hazardHalfWidth + p.x, hazardHalfHeight + p.y]; + const v2 = [hazardHalfWidth + p.x, hazardHalfHeight + p.y]; + const v3 = [hazardHalfWidth + p.x, -hazardHalfHeight + p.y]; + const v4 = [-hazardHalfWidth + p.x, -hazardHalfHeight + p.y]; + + vertices.push( + v1[0], v1[1], 0.75, + v2[0], v2[1], 0.75, + v3[0], v3[1], 0.75, + v3[0], v3[1], 0.75, + v4[0], v4[1], 0.75, + v1[0], v1[1], 0.75 + ); + }); + + // Collision dilation (drawn in front, z = 0.25) + const collisionHalfWidth = this.size.w + config.collisionDilationS; + const collisionHalfHeight = this.size.h + config.collisionDilationL; + + positions.forEach(p => { + const v1 = [-collisionHalfWidth + p.x, collisionHalfHeight + p.y]; + const v2 = [collisionHalfWidth + p.x, collisionHalfHeight + p.y]; + const v3 = [collisionHalfWidth + p.x, -collisionHalfHeight + p.y]; + const v4 = [-collisionHalfWidth + p.x, -collisionHalfHeight + p.y]; + + vertices.push( + v1[0], v1[1], 0.25, + v2[0], v2[1], 0.25, + v3[0], v3[1], 0.25, + v3[0], v3[1], 0.25, + v4[0], v4[1], 0.25, + v1[0], v1[1], 0.25 + ); + }); + + return vertices; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/LanePath.js b/seminar06-planning/simulator/js/autonomy/LanePath.js new file mode 100644 index 0000000..f75a0d0 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/LanePath.js @@ -0,0 +1,307 @@ +const halfLaneWidth = 3.7; + +const centerlineGeometry = new THREE.Geometry(); +const leftBoundaryGeometry = new THREE.Geometry(); +const rightBoundaryGeometry = new THREE.Geometry(); + +export default class LanePath { + static hydrate(obj) { + Object.setPrototypeOf(obj, LanePath.prototype); + } + + constructor() { + this.anchors = []; + this.centerlines = []; + this.sampleLengths = []; + this.arcLengths = []; + this.leftBoundaries = []; + this.rightBoundaries = []; + } + + get centerline() { + return [].concat(...this.centerlines); + } + + get leftBoundary() { + return [].concat(...this.leftBoundaries); + } + + get rightBoundary() { + return [].concat(...this.rightBoundaries); + } + + get arcLength() { + return this.arcLengths.reduce((sum, l) => sum + l, 0); + } + + sampleStations(startStation, num, interval) { + const samples = []; + let anchorIndex = 0; + let sampleIndex = 0; + let totalLength = 0; + let nextStation = startStation; + + while (totalLength + this.arcLengths[anchorIndex] < nextStation) { + totalLength += this.arcLengths[anchorIndex]; + + if (++anchorIndex >= this.arcLengths.length) + return samples; + } + + for (let i = 0; i < num; i++) { + let length = this.sampleLengths[anchorIndex][sampleIndex]; + while (totalLength + length < nextStation) { + totalLength += length; + + if (++sampleIndex >= this.sampleLengths[anchorIndex].length) { + sampleIndex = 0; + + if (++anchorIndex >= this.sampleLengths.length) + return samples; + } + + length = this.sampleLengths[anchorIndex][sampleIndex]; + } + + const [p0, p1, p2, p3] = this.anchorsForSplineIndex(anchorIndex); + const weight = (sampleIndex + (nextStation - totalLength) / length) / this.sampleLengths[anchorIndex].length; + const pos = catmullRomVec(weight, p0, p1, p2, p3); + const tangent = tangentAt(weight, p0, p1, p2, p3); + const rot = Math.atan2(tangent.y, tangent.x); + const curv = curvatureAt(weight, p0, p1, p2, p3); + + samples.push({ pos, rot, curv }); + nextStation += interval; + } + + return samples; + } + + stationLatitudeFromPosition(position, aroundAnchorIndex = null) { + const [anchorIndex, sampleIndex, sampleStation, prevSampleStation] = this._findClosestSample(position, aroundAnchorIndex); + + if (anchorIndex === undefined) return [0, 0, 0]; + + let prevPoint; + let nextPoint; + let prevStation; + let nextStation; + + if (anchorIndex == 0 && sampleIndex == 0) { + prevPoint = this.centerlines[anchorIndex][sampleIndex]; + nextPoint = this.centerlines[anchorIndex][sampleIndex + 1]; + prevStation = 0; + nextStation = this.sampleLengths[anchorIndex][sampleIndex]; + } else if (anchorIndex == this.centerlines.length - 1 && sampleIndex == this.centerlines[anchorIndex].length - 1) { + prevPoint = this.centerlines[anchorIndex][sampleIndex - 1]; + nextPoint = this.centerlines[anchorIndex][sampleIndex]; + prevStation = prevSampleStation; + nextStation = sampleStation; + } else { + prevPoint = sampleIndex == 0 ? this.centerlines[anchorIndex - 1][this.centerlines[anchorIndex - 1].length - 1] : this.centerlines[anchorIndex][sampleIndex - 1]; + nextPoint = sampleIndex == this.centerlines[anchorIndex].length - 1 ? this.centerlines[anchorIndex + 1][0] : this.centerlines[anchorIndex][sampleIndex + 1]; + + const possibleNext = this.centerlines[anchorIndex][sampleIndex]; + const possibleProgress = position.clone().sub(prevPoint).dot(possibleNext.clone().sub(prevPoint)) / prevPoint.distanceToSquared(possibleNext); + + if (possibleProgress < 1) { + nextPoint = possibleNext; + prevStation = prevSampleStation; + nextStation = sampleStation; + } else { + prevPoint = possibleNext; + prevStation = sampleStation; + nextStation = sampleStation + this.sampleLengths[anchorIndex][sampleIndex]; + } + } + + const progress = Math.clamp(position.clone().sub(prevPoint).dot(nextPoint.clone().sub(prevPoint)) / prevPoint.distanceToSquared(nextPoint), 0, 1); + const projectedPosition = nextPoint.clone().sub(prevPoint).multiplyScalar(progress).add(prevPoint); + + const station = prevStation + (nextStation - prevStation) * progress; + const latitude = Math.sign((nextPoint.x - prevPoint.x) * (position.y - prevPoint.y) - (nextPoint.y - prevPoint.y) * (position.x - prevPoint.x)) * position.distanceTo(projectedPosition); + + return [station, latitude, anchorIndex]; + } + + _findClosestSample(position, aroundAnchorIndex = null) { + let closest = Number.POSITIVE_INFINITY; + let bestAnchorIndex; + let bestSampleIndex; + let bestStation; + let bestPrevStation; + + let currStation = 0; + let prevStation = 0; + + let startAnchorIndex = 0; + let endAnchorIndex = this.centerlines.length - 1; + + if (aroundAnchorIndex !== null) { + startAnchorIndex = Math.max(0, aroundAnchorIndex - 2); + endAnchorIndex = Math.min(this.centerlines.length - 1, aroundAnchorIndex + 2); + } + + if (startAnchorIndex > 0) { + for (let anchorIndex = 0; anchorIndex < startAnchorIndex; anchorIndex++) { + currStation += this.arcLengths[anchorIndex]; + } + + prevStation = currStation - this.sampleLengths[startAnchorIndex - 1][this.sampleLengths[startAnchorIndex - 1].length - 1]; + } + + for (let anchorIndex = startAnchorIndex; anchorIndex <= endAnchorIndex; anchorIndex++) { + const centerline = this.centerlines[anchorIndex]; + for (let sampleIndex = 0; sampleIndex < centerline.length; sampleIndex++) { + const distSq = position.distanceToSquared(centerline[sampleIndex]); + if (distSq < closest) { + closest = distSq; + bestAnchorIndex = anchorIndex; + bestSampleIndex = sampleIndex; + bestStation = currStation; + bestPrevStation = prevStation; + } + + prevStation = currStation; + currStation += this.sampleLengths[anchorIndex][sampleIndex]; + } + } + + return [bestAnchorIndex, bestSampleIndex, bestStation, bestPrevStation]; + } + + addAnchor(position, resample = true) { + const index = this.anchors.push(position) - 1; + + if (resample) { + for (let i = index - 2; i < index; i++) + this.resample(i); + } + } + + updateAnchor(index, position) { + this.anchors[index] = position; + + for (let i = index - 2; i <= index + 1; i++) + this.resample(i); + } + + removeAnchor(index) { + if (index < 0 || index >= this.anchors.length) return; + + this.anchors.splice(index, 1); + + const segmentIndex = index < this.anchors.length ? index : index - 1; + this.centerlines.splice(segmentIndex, 1); + this.sampleLengths.splice(segmentIndex, 1); + this.leftBoundaries.splice(segmentIndex, 1); + this.rightBoundaries.splice(segmentIndex, 1); + this.arcLengths.splice(segmentIndex, 1); + + for (let i = segmentIndex - 2; i <= segmentIndex; i++) + this.resample(i); + } + + resample(index) { + if (index < 0 || index > this.anchors.length - 2) return; + + const [p0, p1, p2, p3] = this.anchorsForSplineIndex(index); + const points = []; + const lengths = []; + const leftBoundary = []; + const rightBoundary = []; + let prevPoint = null; + + const pointsPerSegment = Math.max(10, Math.ceil(p1.distanceTo(p2) / 1)); + const numPoints = index == this.anchors.length - 2 ? pointsPerSegment + 1 : pointsPerSegment; + + for (let i = 0; i < numPoints; i++) { + const t = i / pointsPerSegment; + const point = catmullRomVec(t, p0, p1, p2, p3); + points.push(point); + + if (prevPoint != null) + lengths.push(prevPoint.distanceTo(point)); + prevPoint = point; + + const tangent = tangentAt(t, p0, p1, p2, p3); + const normal = new THREE.Vector2(-tangent.y, tangent.x); + + leftBoundary.push(normal.clone().multiplyScalar(-halfLaneWidth).add(point)); + rightBoundary.push(normal.clone().multiplyScalar(halfLaneWidth).add(point)); + } + + lengths.push(prevPoint.distanceTo(p2)); + + this.centerlines[index] = points; + this.sampleLengths[index] = lengths; + this.leftBoundaries[index] = leftBoundary; + this.rightBoundaries[index] = rightBoundary; + this.arcLengths[index] = lengths.reduce((sum, l) => sum + l, 0); + } + + resampleAll() { + for (let i = 0; i < this.anchors.length; i++) + this.resample(i); + } + + anchorsForSplineIndex(index) { + let p; + if (index == 0) + p = [this.anchors[0]].concat(this.anchors.slice(0, 3)); + else + p = this.anchors.slice(index - 1, index + 3); + + if (p[3] === undefined) + p[3] = p[2]; + + return p; + } +} + +function catmullRom(t, p0, p1, p2, p3) { + const v0 = (p2 - p0) * 0.5; + const v1 = (p3 - p1) * 0.5; + const t2 = t * t; + const t3 = t * t2; + return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1; +} + +function catmullRomVec(t, p0, p1, p2, p3) { + return new THREE.Vector2(catmullRom(t, p0.x, p1.x, p2.x, p3.x), catmullRom(t, p0.y, p1.y, p2.y, p3.y)); +} + +function tangentAt(t, p0, p1, p2, p3) { + const delta = 0.0001; + let t1 = t - delta; + let t2 = t + delta; + + if (t1 < 0) t1 = 0; + if (t2 > 1) t2 = 1; + + const prev = catmullRomVec(t1, p0, p1, p2, p3); + const next = catmullRomVec(t2, p0, p1, p2, p3); + + return next.sub(prev).normalize(); +} + +function curvatureAt(t2, p0, p1, p2, p3) { + const delta = 0.0001; + + // If we're estimating curvature at one of the endpoints of the spline, + // slightly shift it inwards to avoid infinite curvature. + if (t2 == 0) t2 = delta; + if (t2 == 1) t2 = 1 - delta; + + let t1 = t2 - delta; + let t3 = t2 + delta; + + if (t1 < 0) t1 = 0; + if (t3 > 1) t3 = 1; + + const pt1 = catmullRomVec(t1, p0, p1, p2, p3); + const pt2 = catmullRomVec(t2, p0, p1, p2, p3); + const pt3 = catmullRomVec(t3, p0, p1, p2, p3); + + return (Math.atan2(pt3.y - pt2.y, pt3.x - pt2.x) - Math.atan2(pt2.y - pt1.y, pt2.x - pt1.x)) / pt2.distanceTo(pt1); +} diff --git a/seminar06-planning/simulator/js/autonomy/MovingAverage.js b/seminar06-planning/simulator/js/autonomy/MovingAverage.js new file mode 100644 index 0000000..a3da5ca --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/MovingAverage.js @@ -0,0 +1,25 @@ +export default class MovingAverage { + constructor(maxSamples) { + this.samples = new Array(maxSamples); + this.numSamples = 0; + this.nextIndex = 0; + this.average = null; + } + + addSample(sample) { + this.samples[this.nextIndex++] = sample; + this.nextIndex = this.nextIndex % this.samples.length; + this.numSamples = Math.min(this.numSamples + 1, this.samples.length); + + const k = 2 / (this.numSamples + 1); + let curr = this.nextIndex % this.numSamples; + let newAverage = this.samples[curr]; + + for (let i = 1; i < this.numSamples; i++) { + curr = (curr + 1) % this.numSamples; + newAverage = this.samples[curr] * k + newAverage * (1 - k); + } + + this.average = newAverage; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/Path.js b/seminar06-planning/simulator/js/autonomy/Path.js new file mode 100644 index 0000000..11b4757 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/Path.js @@ -0,0 +1,60 @@ +import Car from "../physics/Car.js" + +// input pose: { pos: Vector2 [, rot: radians] } +// pose: { pos: Vector2, frontPos: Vector2, fakePos: Vector2, rot: radians } +export default class Path { + constructor(poses, startRotation = 0, goalRotation = 0) { + this.poses = poses; + + for (let i = 0; i < poses.length; i++) { + const pose = poses[i]; + + if (pose.rot === undefined || pose.rot == null) { + let rot; + + if (i == 0) { + rot = startRotation; + } else if (i == poses.length - 1) { + rot = goalRotation; + } else { + const prev = poses[i - 1].pos; + const next = poses[i + 1].pos; + rot = Math.atan2(next.y - prev.y, next.x - prev.x); + } + + pose.rot = rot; + } + + if (pose.curv === undefined || pose.curv == null) { + if (i > 0 && i < poses.length - 1) { + const prev = poses[i - 1].pos; + const cur = poses[i].pos; + const next = poses[i + 1].pos; + + const dir1 = { x: cur.x - prev.x, y: cur.y - prev.y }; + const dir2 = { x: next.x - cur.x, y: next.y - cur.y }; + + const angle1 = Math.atan2(dir1.y, dir1.x); + const angle2 = Math.atan2(dir2.y, dir2.x); + + // Calculate the angular difference in a way that properly handles the wrap-around from -π to π + let deltaAngle = angle2 - angle1; + // Normalize the angle difference to be within the range [-π, π] + deltaAngle = (deltaAngle + Math.PI) % (2 * Math.PI) - Math.PI; + + // Assuming uniform segment lengths, the curvature (inverse radius of curvature) can be + // approximated as the change in angle. For non-uniform segment lengths, include arc length in calculation + const curvature = Math.abs(deltaAngle); // Using absolute value of angle difference + + pose.curv = curvature; + } else { + // Assign zero curvature for start and end points or handle as needed + pose.curv = 0; + } + } + + pose.frontPos = Car.getFrontAxlePosition(pose.pos, pose.rot); + pose.fakePos = Car.getFakeAxlePosition(pose.pos, pose.rot); + } + } +} diff --git a/seminar06-planning/simulator/js/autonomy/StaticObstacle.js b/seminar06-planning/simulator/js/autonomy/StaticObstacle.js new file mode 100644 index 0000000..db8ac07 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/StaticObstacle.js @@ -0,0 +1,58 @@ +export default class StaticObstacle { + static hydrate(obj) { + Object.setPrototypeOf(obj, StaticObstacle.prototype); + Object.setPrototypeOf(obj.pos, THREE.Vector2.prototype); + } + + static fromJSON(json) { + return new StaticObstacle(new THREE.Vector2(json.p[0], json.p[1]), json.r, json.w, json.h); + } + + constructor(pos, rot, width, height) { + this.pos = pos; + this.rot = rot; + this.width = width; + this.height = height; + + this.updateVertices(); + } + + toJSON() { + const trunc = n => +n.toFixed(5); + + return { + p: [trunc(this.pos.x), trunc(this.pos.y)], + r: trunc(this.rot), + w: trunc(this.width), + h: trunc(this.height) + }; + } + + updateVertices() { + this.vertices = []; + + const cosRot = Math.cos(this.rot); + const sinRot = Math.sin(this.rot); + const halfWidth = this.width / 2; + const halfHeight = this.height / 2; + + const hWcR = halfWidth * cosRot; + const hWsR = halfWidth * sinRot; + const hHcR = halfHeight * cosRot; + const hHsR = halfHeight * sinRot; + + const v1 = [-hWcR - hHsR + this.pos.x, -hWsR + hHcR + this.pos.y]; + const v2 = [-hWcR + hHsR + this.pos.x, -hWsR - hHcR + this.pos.y]; + const v3 = [hWcR + hHsR + this.pos.x, hWsR - hHcR + this.pos.y]; + const v4 = [hWcR - hHsR + this.pos.x, hWsR + hHcR + this.pos.y]; + + this.vertices = [ + v1[0], v1[1], + v2[0], v2[1], + v3[0], v3[1], + v3[0], v3[1], + v4[0], v4[1], + v1[0], v1[1] + ]; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/control/AutonomousController.js b/seminar06-planning/simulator/js/autonomy/control/AutonomousController.js new file mode 100644 index 0000000..0bfdafd --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/control/AutonomousController.js @@ -0,0 +1,181 @@ +import Car from "../../physics/Car.js" + +export default class AutonomousController { + constructor(path) { + this.path = path; + this.nextIndex = 1; + this.prevPhiError = 0; + this.prevVelocity = 0; + } + + reset() { + this.prevVelocity = 0; + } + + replacePath(path) { + this.path = path; + this.nextIndex = 1; + } + + predictPoseAfterTime(currentPose, predictionTime) { + const pathPoses = this.path.poses; + const frontAxlePos = Car.getFrontAxlePosition(currentPose.pos, currentPose.rot); + let [nextIndex, progress] = this.findNextIndex(frontAxlePos); + let currentVelocity = currentPose.velocity; + + if (currentVelocity <= 0.01) return currentPose; + + while (predictionTime > 0) { + const prevPose = pathPoses[nextIndex - 1]; + const nextPose = pathPoses[nextIndex]; + + const segmentDist = nextPose.pos.distanceTo(prevPose.pos); + const distLeft = segmentDist * (1 - progress); + const sumV = currentVelocity + nextPose.velocity; + const timeToNextIndex = 2 * distLeft / (sumV == 0 ? 0.01 : sumV); + //const timeToNextIndex = distLeft / currentVelocity; + + if (timeToNextIndex >= predictionTime || nextIndex + 1 >= pathPoses.length) { + const dist = sumV / 2 * predictionTime; + const newProgress = progress + dist / segmentDist; + + return { + pos: nextPose.pos.clone().sub(prevPose.pos).multiplyScalar(newProgress).add(nextPose.pos), + rot: prevPose.rot + (nextPose.rot - prevPose.rot) * newProgress, + curv: prevPose.curv + (nextPose.curv - prevPose.curv) * newProgress, + dCurv: 0, + ddCurv: 0, + velocity: nextPose.velocity + } + } + + //currentVelocity = nextPose.velocity; + predictionTime -= timeToNextIndex; + progress = 0; + nextIndex++; + } + } + + control(pose, wheelAngle, velocity, dt) { + const pathPoses = this.path.poses; + const frontAxlePos = Car.getFrontAxlePosition(pose.pos, pose.rot); + const [nextIndex, progress] = this.findNextIndex(frontAxlePos); + this.nextIndex = nextIndex; + + let gas = 0; + let brake = 0; + let phi = 0; // the desired wheel deflection + + if (nextIndex >= pathPoses.length - 1 && progress >= 1) { + gas = 0; + brake = 1; + phi = 0; + } else { + const kp_a = 4; + const kd_a = 0.5; + const kff_a = 0.5; + + const currentAccel = (velocity - this.prevVelocity) / dt; + const prevNextDist = pathPoses[this.nextIndex].pos.distanceTo(pathPoses[this.nextIndex - 1].pos); + const targetVelocity = Math.sqrt(2 * pathPoses[nextIndex].acceleration * prevNextDist * Math.clamp(progress, 0, 1) + pathPoses[this.nextIndex - 1].velocity * pathPoses[this.nextIndex - 1].velocity); + const diffVelocity = targetVelocity - velocity; + const diffAccel = pathPoses[this.nextIndex].acceleration - currentAccel; + const targetAccel = kp_a * diffVelocity + kd_a * diffAccel + kff_a * pathPoses[this.nextIndex].acceleration; + + if (targetAccel > 0) + gas = Math.min(targetAccel / Car.MAX_GAS_ACCEL, 1); + else + brake = Math.min(-targetAccel / Car.MAX_BRAKE_DECEL, 1); + + this.prevVelocity = velocity; + + const closestFrontPathPos = projectPointOnSegment(frontAxlePos, pathPoses[this.nextIndex - 1].frontPos, pathPoses[this.nextIndex].frontPos)[0]; + + // Determine the desired heading at the specific point on the front path by lerping between prevHeading and nextHeading using progress as the weight + const prevHeading = this.nextIndex > 1 ? pathPoses[nextIndex].frontPos.clone().sub(pathPoses[nextIndex - 2].frontPos).angle() : pathPoses[0].rot; + const nextHeading = this.nextIndex < pathPoses.length - 1 ? pathPoses[nextIndex + 1].frontPos.clone().sub(pathPoses[nextIndex - 1].frontPos).angle() : pathPoses[pathPoses.length - 1].rot; + const desiredHeading = prevHeading + (nextHeading - prevHeading) * progress; + + // Determine if the front axle is to the left or right of the front path + const pathVec = pathPoses[nextIndex].frontPos.clone().sub(pathPoses[nextIndex - 1].frontPos).normalize(); + const zero = new THREE.Vector2(0, 0); + const left = pathVec.clone().rotateAround(zero, Math.PI / 2).add(closestFrontPathPos); + const right = pathVec.clone().rotateAround(zero, -Math.PI / 2).add(closestFrontPathPos); + const dir = frontAxlePos.distanceToSquared(left) < frontAxlePos.distanceToSquared(right) ? -1 : 1; + + const k = 4; + const gain = 0.8; + const crossTrackError = frontAxlePos.distanceTo(closestFrontPathPos); + const headingError = Math.wrapAngle(pose.rot - desiredHeading); + + //phi = -headingError + gain * Math.atan(k * dir * crossTrackError / velocity); + + const curv = pathPoses[nextIndex - 1].curv + (pathPoses[nextIndex].curv - pathPoses[nextIndex - 1].curv) * progress; + + phi = Math.atan(curv * Car.WHEEL_BASE) + gain * Math.atan(k * dir * crossTrackError / Math.max(velocity, 0.01)); + + const checkSteer = Math.clamp((phi - wheelAngle) / dt / Car.MAX_STEER_SPEED, -1, 1); + } + + const phiError = phi - wheelAngle; + /* + const dPhiError = (phiError - this.prevPhiError) / dt; + this.prevPhiError = phiError; + + const steer = Math.clamp(12 * phiError + 0.8 * dPhiError, -1, 1); + */ + + const steer = Math.clamp(phiError / dt / Car.MAX_STEER_SPEED, -1, 1); + + return { gas, brake, steer }; + } + + // Finds the next point the vehicle is approaching and the progress between the prev point and the next point + // Returns [nextPointIndex, progress from (nextPointIndex - 1) to nextPointIndex, {0 - 1}] + findNextIndex(frontAxlePos) { + const pathPoses = this.path.poses; + + // Constrain the search to just a few points surrounding the current nextIndex + // for performance and to avoid problems with a path that crosses itself + const start = Math.max(0, this.nextIndex - 20); + const end = Math.min(pathPoses.length - 1, this.nextIndex + 20); + let closestDistSqr = frontAxlePos.distanceToSquared(pathPoses[start].frontPos); + let closestIndex = start; + + for (let i = start + 1; i < end; i++) { + const distSqr = frontAxlePos.distanceToSquared(pathPoses[i].frontPos); + if (distSqr < closestDistSqr) { + closestDistSqr = distSqr; + closestIndex = i; + } + } + + if (closestIndex == pathPoses.length - 1) { + const [_, progress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex - 1].frontPos, pathPoses[closestIndex].frontPos); + return [closestIndex, progress]; + } else if (closestIndex == 0) { + const [_, progress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex].frontPos, pathPoses[closestIndex + 1].frontPos); + return [closestIndex + 1, progress]; + } else { + // The nextPoint is either (closestPoint) or (closestPoint + 1). Project the frontAxlePos to both + // of those two line segments (the segment preceding closestPoint and the segment succeeding closestPoint) + // to determine which segment it's closest to. + const [precedingProjection, precedingProgress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex - 1].frontPos, pathPoses[closestIndex].frontPos); + const [succeedingProjection, succeedingProgress] = projectPointOnSegment(frontAxlePos, pathPoses[closestIndex].frontPos, pathPoses[closestIndex + 1].frontPos); + + if (frontAxlePos.distanceToSquared(precedingProjection) < frontAxlePos.distanceToSquared(succeedingProjection)) { + return [closestIndex, precedingProgress]; + } else { + return [closestIndex + 1, succeedingProgress]; + } + } + } +} + +// Returns [pointOnSegment, progressAlongSegment {0 - 1}] +function projectPointOnSegment(point, start, end) { + const distSqr = start.distanceToSquared(end); + //const progress = Math.clamp(point.clone().sub(start).dot(end.clone().sub(start)) / distSqr, 0, 1); + const progress = point.clone().sub(start).dot(end.clone().sub(start)) / distSqr; + return [end.clone().sub(start).multiplyScalar(progress).add(start), progress]; +} diff --git a/seminar06-planning/simulator/js/autonomy/control/FollowController.js b/seminar06-planning/simulator/js/autonomy/control/FollowController.js new file mode 100644 index 0000000..32bde1a --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/control/FollowController.js @@ -0,0 +1,177 @@ +import Car from "../../physics/Car.js" + +export default class FollowController { + constructor(path, car) { + this.path = path; + this.car = car; + this.nextIndex = 1; + this.prevVelocity = 0; + this.prevAccel = 0; + } + + reset() { + this.prevVelocity = 0; + this.prevAccel = 0; + } + + replacePath(path) { + this.path = path; + this.nextIndex = 1; + } + + predictPoseAfterTime(currentPose, predictionTime) { + const pathPoses = this.path.poses; + let [nextIndex, progress] = this.findNextIndex(currentPose.pos); + let currentVelocity = currentPose.velocity; + + if (currentVelocity <= 0.01) return currentPose; + + while (predictionTime > 0) { + const prevPose = pathPoses[nextIndex - 1]; + const nextPose = pathPoses[nextIndex]; + + const segmentDist = nextPose.pos.distanceTo(prevPose.pos); + const distLeft = segmentDist * (1 - progress); + const sumV = (currentVelocity + nextPose.velocity) / 2; + const timeToNextIndex = 2 * distLeft / (sumV == 0 ? 0.01 : sumV); + + if (timeToNextIndex >= predictionTime || nextIndex + 1 >= pathPoses.length) { + const dist = sumV / 2 * predictionTime; + const newProgress = progress + dist / segmentDist; + const newRotation = Math.wrapAngle(prevPose.rot + Math.wrapAngle(nextPose.rot - prevPose.rot) * newProgress); + + const pprevPose = nextIndex - 2 >= 0 ? pathPoses[nextIndex - 2] : prevPose; + const nnextPose = nextIndex + 1 < pathPoses.length ? pathPoses[nextIndex + 1] : nextPose; + + const dCurv = (nextPose.curv - prevPose.curv) / segmentDist; + const dCurvPrev = ((prevPose.curv - pprevPose.curv) / pprevPose.pos.distanceTo(prevPose.pos) + dCurv) / 2; + const dCurvNext = (dCurv + (nnextPose.curv - nextPose.curv) / nextPose.pos.distanceTo(nnextPose.pos)) / 2; + + const ddCurv = (dCurvNext - dCurvPrev) / segmentDist; + + return { + pos: nextPose.pos.clone().sub(prevPose.pos).multiplyScalar(newProgress).add(nextPose.pos), + rot: newRotation, + curv: prevPose.curv + (nextPose.curv - prevPose.curv) * newProgress, + dCurv: dCurv, + ddCurv: ddCurv, + velocity: nextPose.velocity + } + } + + currentVelocity = nextPose.velocity; + predictionTime -= timeToNextIndex; + progress = 0; + nextIndex++; + } + } + + control(pose, wheelAngle, velocity, dt, lockPath = false) { + const pathPoses = this.path.poses; + const [nextIndex, progress, projection] = this.findNextIndex(pose.pos); + this.nextIndex = nextIndex; + + const prevPose = pathPoses[nextIndex - 1]; + const nextPose = pathPoses[nextIndex]; + + let gas = 0; + let brake = 0; + let steer = 0; + + if (nextIndex >= pathPoses.length - 2 && progress >= 1 - 1e-6) { + brake = 1; + } else { + /* + const kp_a = 4; + const kd_a = 0.5; + const kff_a = 0.5; + + const currentAccel = (velocity - this.prevVelocity) / dt; + const prevNextDist = nextPose.pos.distanceTo(prevPose.pos); + const targetVelocity = Math.sqrt(2 * nextPose.acceleration * prevNextDist * Math.clamp(progress, 0, 1) + prevPose.velocity * prevPose.velocity); + const diffVelocity = targetVelocity - velocity; + const diffAccel = nextPose.acceleration - currentAccel; + const targetAccel = kp_a * diffVelocity + kd_a * diffAccel + kff_a * nextPose.acceleration; + */ + const accelDamping = 0.1; + const targetAccel = nextPose.acceleration; + const dampedAccel = this.prevAccel * (1 - accelDamping) + targetAccel * accelDamping; + + if (dampedAccel > 0) + gas = Math.min(dampedAccel / Car.MAX_GAS_ACCEL, Car.MAX_GAS_ACCEL); + else + brake = Math.min(-dampedAccel / Car.MAX_BRAKE_DECEL, Car.MAX_BRAKE_DECEL); + + this.prevVelocity = velocity; + this.prevAccel = dampedAccel; + + const curvature = prevPose.curv + (nextPose.curv - prevPose.curv) * progress; + const desiredWheelAngle = Math.atan(curvature * Car.WHEEL_BASE); + const wheelAngleError = desiredWheelAngle - wheelAngle; + steer = Math.clamp(wheelAngleError / dt / Car.MAX_STEER_SPEED, -1, 1); + + if (lockPath) { + const damping = 0.1; + const newRotation = Math.wrapAngle(prevPose.rot + Math.wrapAngle(nextPose.rot - prevPose.rot) * progress); + const newPosition = new THREE.Vector2(projection.x - Car.REAR_AXLE_POS * Math.cos(newRotation), projection.y - Car.REAR_AXLE_POS * Math.sin(newRotation)); + + if (Math.abs(Math.wrapAngle(newRotation - this.car.rotation)) > 0.5) { + console.log('wut'); + } + + this.car.rotation += damping * Math.wrapAngle(newRotation - this.car.rotation); + this.car.position = this.car.position.clone().multiplyScalar(1 - damping).add(newPosition.multiplyScalar(damping)); + } + } + + return { gas, brake, steer }; + } + + findNextIndex(pos) { + const pathPoses = this.path.poses; + + // Constrain the search to just a few points surrounding the current nextIndex + // for performance and to avoid problems with a path that crosses itself + const start = Math.max(0, this.nextIndex - 20); + const end = Math.min(pathPoses.length - 1, this.nextIndex + 20); + let closestDistSqr = pos.distanceToSquared(pathPoses[start].pos); + let closestIndex = start; + + for (let i = start + 1; i < end; i++) { + const distSqr = pos.distanceToSquared(pathPoses[i].pos); + if (distSqr < closestDistSqr) { + closestDistSqr = distSqr; + closestIndex = i; + } + } + + if (closestIndex == pathPoses.length - 1) { + const [projection, progress] = projectPointOnSegment(pos, pathPoses[closestIndex - 1].pos, pathPoses[closestIndex].pos); + return [closestIndex, progress, projection]; + } else if (closestIndex == 0) { + const [projection, progress] = projectPointOnSegment(pos, pathPoses[closestIndex].pos, pathPoses[closestIndex + 1].pos); + return [closestIndex + 1, progress, projection]; + } else { + // The nextPoint is either (closestPoint) or (closestPoint + 1). Project the pos to both + // of those two line segments (the segment preceding closestPoint and the segment succeeding closestPoint) + // to determine which segment it's closest to. + const [precedingProjection, precedingProgress] = projectPointOnSegment(pos, pathPoses[closestIndex - 1].pos, pathPoses[closestIndex].pos); + const [succeedingProjection, succeedingProgress] = projectPointOnSegment(pos, pathPoses[closestIndex].pos, pathPoses[closestIndex + 1].pos); + + if (pos.distanceToSquared(precedingProjection) < pos.distanceToSquared(succeedingProjection)) { + return [closestIndex, precedingProgress, precedingProjection]; + } else { + return [closestIndex + 1, succeedingProgress, succeedingProjection]; + } + } + } +} + +// Returns [pointOnSegment, progressAlongSegment {0 - 1}] +function projectPointOnSegment(point, start, end) { + const distSqr = start.distanceToSquared(end); + const progress = point.clone().sub(start).dot(end.clone().sub(start)) / distSqr; + + const clampedProgress = Math.max(0, Math.min(1, progress)); + return [end.clone().sub(start).multiplyScalar(clampedProgress).add(start), clampedProgress]; +} diff --git a/seminar06-planning/simulator/js/autonomy/control/ManualController.js b/seminar06-planning/simulator/js/autonomy/control/ManualController.js new file mode 100644 index 0000000..ed10fce --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/control/ManualController.js @@ -0,0 +1,39 @@ +export default class ManualController { + constructor() { + this.carKeys = { forward: false, backward: false, left: false, right: false, brake: false }; + + document.addEventListener('keydown', event => { + switch (event.key) { + case 'w': case 'W': this.carKeys.forward = true; break; + case 's': case 'S': this.carKeys.backward = true; break; + case 'a': case 'A': this.carKeys.left = true; break; + case 'd': case 'D': this.carKeys.right = true; break; + case ' ': this.carKeys.brake = true; break; + } + }); + + document.addEventListener('keyup', event => { + switch (event.key) { + case 'w': case 'W': this.carKeys.forward = false; break; + case 's': case 'S': this.carKeys.backward = false; break; + case 'a': case 'A': this.carKeys.left = false; break; + case 'd': case 'D': this.carKeys.right = false; break; + case ' ': this.carKeys.brake = false; break; + } + }); + } + + control() { + let gas = 0; + let brake = 0; + let steer = 0; + + if (this.carKeys.forward) gas += 1; + if (this.carKeys.backward) gas -= 1; + if (this.carKeys.left) steer -= 1; + if (this.carKeys.right) steer += 1; + if (this.carKeys.brake) brake += 1; + + return { gas, brake, steer }; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/CubicPath.js b/seminar06-planning/simulator/js/autonomy/path-planning/CubicPath.js new file mode 100644 index 0000000..136c39a --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/CubicPath.js @@ -0,0 +1,205 @@ +const SIMPSONS_INTERVALS = 8; +const NEWTON_ITERATIONS = 16; +const RELAXATION_ITERATIONS = 32; +const CONVERGENCE_ERROR = 0.01; + +const jacobian = new THREE.Matrix3(); +const invJacobian = new THREE.Matrix3(); + +// Alternate reference implementation: https://github.com/ApolloAuto/apollo/blob/master/modules/planning/math/spiral_curve/cubic_spiral_curve.cc +export default class CubicPath { + constructor(start, end, params = null) { + this.start = Object.assign({}, start); + this.end = Object.assign({}, end); + + if (start.pos) { + this.start.x = start.pos.x; + this.start.y = start.pos.y + } + + if (end.pos) { + this.end.x = end.pos.x; + this.end.y = end.pos.y + } + + const diffX = this.end.x - this.start.x; + const diffY = this.end.y - this.start.y; + const sinRot = Math.sin(this.start.rot); + const cosRot = Math.cos(this.start.rot); + + this.goal = { + x: cosRot * diffX + sinRot * diffY, + y: -sinRot * diffX + cosRot * diffY, + rot: Math.wrapAngle(this.end.rot - this.start.rot), + curv: this.end.curv + }; + + if (params) + this.params = Object.assign({}, params, { p0: this.start.curv, p3: this.end.curv }); + else + this.guessInitialParams(); + + this.converged = false; + } + + guessInitialParams() { + const originalGoal = this.goal; + const dStartCurv = this.start.curv / RELAXATION_ITERATIONS; + const dGoalY = originalGoal.y / RELAXATION_ITERATIONS; + const dGoalRot = originalGoal.rot / RELAXATION_ITERATIONS; + const dGoalCurv = originalGoal.curv / RELAXATION_ITERATIONS; + + this.goal = { + x: originalGoal.x, + y: 0, + rot: 0, + curv: 0 + }; + + this.params = { + p0: 0, + p1: 0, + p2: 0, + p3: 0, + sG: originalGoal.x + }; + + for (let i = 0; i < RELAXATION_ITERATIONS; i++) { + this.params.p0 += dStartCurv; + this.params.p3 += dGoalCurv; + this.goal.y += dGoalY; + this.goal.rot += dGoalRot; + this.goal.curv += dGoalCurv; + + this.iterate(); + } + + this.goal = originalGoal; + } + + optimize() { + for (let i = 0; i < NEWTON_ITERATIONS; i++) { + if (this.iterate()) { + this.converged = true; + return true; + } + } + + this.converged = false; + return false; + } + + iterate() { + const { p0, p1, p2, p3, sG } = this.params; + + const ds = sG / SIMPSONS_INTERVALS; + const sG_2 = sG * sG; + const sG_3 = sG_2 * sG; + + let dX_p1 = 0; + let dX_p2 = 0; + let dX_sG = 0; + let dY_p1 = 0; + let dY_p2 = 0; + let dY_sG = 0; + let guessX = 0; + let guessY = 0; + + let theta, cosTheta, sinTheta, dT_p1, dT_p2, dT_sG; + + for (let i = 0, s = 0; i <= SIMPSONS_INTERVALS; i++, s += ds) { + const coeff = i == 0 || i == SIMPSONS_INTERVALS ? 1 : i % 2 == 0 ? 2 : 4; + + const a = p0; + const b = (-5.5 * p0 + 9 * p1 - 4.5 * p2 + p3) / sG; + const c = (9 * p0 - 22.5 * p1 + 18 * p2 - 4.5 * p3) / sG_2; + const d = (-4.5 * (p0 - 3 * p1 + 3 * p2 - p3)) / sG_3; + + theta = (((d * s / 4 + c / 3) * s + b / 2) * s + a) * s; + cosTheta = Math.cos(theta); + sinTheta = Math.sin(theta); + + const s_sG = s / sG; + dT_p1 = ((3.375 * s_sG - 7.5) * s_sG + 4.5) * s_sG * s; + dT_p2 = ((-3.375 * s_sG + 6) * s_sG - 2.25) * s_sG * s; + dT_sG = ((3.375 * (p0 - 3 * p1 + 3 * p2 - p3) * s_sG - 3 * (2 * p0 - 5 * p1 + 4 * p2 - p3)) * s_sG + 0.25 * (11 * p0 - 18 * p1 + 9 * p2 - 2 * p3)) * s_sG * s_sG; + + dX_p1 -= coeff * sinTheta * dT_p1; + dX_p2 -= coeff * sinTheta * dT_p2; + dX_sG -= coeff * sinTheta * dT_sG; + + dY_p1 += coeff * cosTheta * dT_p1; + dY_p2 += coeff * cosTheta * dT_p2; + dY_sG += coeff * cosTheta * dT_sG; + + guessX += coeff * cosTheta; + guessY += coeff * sinTheta; + } + + // After the Simpson's integration loop, `theta`, `cosTheta`, `sinTheta`, + // `dT_p1`, `dT_p2`, and `dT_sG` hold the appropriate values for `sG`. + + const hOver3 = sG / SIMPSONS_INTERVALS / 3; + + const deltaX = this.goal.x - guessX * hOver3; + const deltaY = this.goal.y - guessY * hOver3; + const deltaRot = Math.wrapAngle(this.goal.rot - theta); + + if (Math.abs(deltaX) + Math.abs(deltaY) + Math.abs(deltaRot) < CONVERGENCE_ERROR) + return true; + + jacobian.set( + dX_p1 * hOver3, dX_p2 * hOver3, cosTheta + dX_sG * hOver3, + dY_p1 * hOver3, dY_p2 * hOver3, sinTheta + dY_sG * hOver3, + dT_p1, dT_p2, dT_sG + ); + + const [m11, m21, m31, m12, m22, m32, m13, m23, m33] = invJacobian.getInverse(jacobian).elements; + + this.params.p1 += m11 * deltaX + m12 * deltaY + m13 * deltaRot; + this.params.p2 += m21 * deltaX + m22 * deltaY + m23 * deltaRot; + this.params.sG += m31 * deltaX + m32 * deltaY + m33 * deltaRot; + + return false; + } + + buildPath(num) { + const { p0, p1, p2, p3, sG } = this.params; + + const sG_2 = sG * sG; + const sG_3 = sG_2 * sG; + + const a = p0; + const b = (-5.5 * p0 + 9 * p1 - 4.5 * p2 + p3) / sG; + const c = (9 * p0 - 22.5 * p1 + 18 * p2 - 4.5 * p3) / sG_2; + const d = (-4.5 * (p0 - 3 * p1 + 3 * p2 - p3)) / sG_3; + + const path = [{ pos: new THREE.Vector2(this.start.x, this.start.y), rot: this.start.rot, curv: this.start.curv }]; + const ds = sG / (num - 1); + let s = ds; + let dx = 0; + let dy = 0; + let prevCosRot = Math.cos(path[0].rot); + let prevSinRot = Math.sin(path[0].rot); + + for (let i = 1; i < num - 1; i++) { + const rot = (((d * s / 4 + c / 3) * s + b / 2) * s + a) * s + this.start.rot; + const curv = ((d * s + c) * s + b) * s + a; + const cosRot = Math.cos(rot); + const sinRot = Math.sin(rot); + + dx = dx * (i - 1) / i + (cosRot + prevCosRot) / (2 * i); + dy = dy * (i - 1) / i + (sinRot + prevSinRot) / (2 * i); + + path.push({ pos: new THREE.Vector2(s * dx + this.start.x, s * dy + this.start.y), rot: rot, curv: curv }); + + s += ds; + prevCosRot = cosRot; + prevSinRot = sinRot; + } + + path.push({ pos: new THREE.Vector2(this.end.x, this.end.y), rot: this.end.rot, curv: this.end.curv }); + + return path; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/ExternalPlanner.js b/seminar06-planning/simulator/js/autonomy/path-planning/ExternalPlanner.js new file mode 100644 index 0000000..c89e613 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/ExternalPlanner.js @@ -0,0 +1,53 @@ + +export default class ExternalPathPlanner { + _PLANNING_SERVER_URL = 'http://127.0.0.1:9999/' + + plan(vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles) { + const state = { + vehiclePose: vehiclePose, + vehicleStation: vehicleStation, + lanePath: lanePath, + startTime: startTime, + staticObstacles: staticObstacles, + dynamicObstacles: dynamicObstacles, + }; + + var jsonToSend = JSON.stringify(state); + const response = this._send_request(jsonToSend, 'plan'); + const path = JSON.parse(response)['states']; + + return { + planner_state: "ok", + path: path, + fromVehicleSegment: [], + fromVehicleParams: { type:'null' }, + latticeStartStation: null, + dynamicObstacleGrid: null + }; + } + + reset() { + //this.notify_scenario_status({status: "restart"}); + } + + notify_scenario_status(status) { + var jsonToSend = JSON.stringify(status); + this._send_request(jsonToSend, 'notify_case_status'); + } + + _send_request(jsonToSend, request_name) { + var url = this._PLANNING_SERVER_URL + request_name; + + var xhr = new XMLHttpRequest(); + xhr.timeout = 5000; + xhr.open('POST', url, false); // the 'false' makes the request synchronous + xhr.setRequestHeader('Content-Type', 'application/json'); + xhr.send(jsonToSend); + + if (xhr.status === 200) { + return xhr.responseText; + } else { + console.error('There was an error with the request'); + } + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/PathPlanner.js b/seminar06-planning/simulator/js/autonomy/path-planning/PathPlanner.js new file mode 100644 index 0000000..15ac571 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/PathPlanner.js @@ -0,0 +1,470 @@ +import GPGPU from "../../GPGPU.js"; +import Car from "../../physics/Car.js"; +import CubicPath from "./CubicPath.js"; +import QuinticPath from "./QuinticPath.js"; +import xyObstacleGrid from "./gpgpu-programs/xyObstacleGrid.js"; +import slObstacleGrid from "./gpgpu-programs/slObstacleGrid.js"; +import slObstacleGridDilation from "./gpgpu-programs/slObstacleGridDilation.js"; +import slDynamicObstacleGrid from "./gpgpu-programs/slDynamicObstacleGrid.js"; +import xyslMap from "./gpgpu-programs/xyslMap.js"; +import optimizeCubicPaths from "./gpgpu-programs/optimizeCubicPaths.js"; +import optimizeQuinticPaths from "./gpgpu-programs/optimizeQuinticPaths.js"; +import pathFromVehicleCosts from "./gpgpu-programs/pathFromVehicleCosts.js"; +import graphSearch from "./gpgpu-programs/graphSearch.js"; +import xyObstacleCostGrid from "./gpgpu-programs/xyObstacleCostGrid.js"; + +const NUM_ACCELERATION_PROFILES = 8; +const NUM_VELOCITY_RANGES = 4; +const NUM_TIME_RANGES = 2; + +/* Obstacle cost map: + * + * 1. Rasterize triangles from polygonal obstacles into XY-space occupancy grid + * 2. Convert occupancy grid to SL-space + * * Width is spatial horizon of the state lattice + * * Height is lane width + * * Resolution should be higher than XY-grid + * * Get XY position from centerline texture + * * Lookup XY in XY occupancy grid (nearest) + * 3. Dilate SL-space grid using two passes (along station, then along latitude) + * * collision area: half car size + 0.3m + * * high cost area: 1 meter + * 4. Convert back to XY-space using XYSL map + */ + +export default class PathPlanner { + constructor() { + this.previousStartStation = null; + this.previousFirstLatticePoint = -1; + this.previousSecondLatticePoint = -1; + this.previousFirstAcceleration = -1; + this.previousSecondLatticePoint = -1; + + let start = performance.now(); + const programs = [ + xyObstacleGrid.setUp(), + slObstacleGrid.setUp(), + ...slObstacleGridDilation.setUp(), + slDynamicObstacleGrid.setUp(), + xyslMap.setUp(), + ...optimizeCubicPaths.setUp(), + optimizeQuinticPaths.setUp(), + ...pathFromVehicleCosts.setUp(), + graphSearch.setUp(), + ].map(p => Object.assign({}, p, { width: 1, height: 1 })); + + this.gpgpu = new GPGPU(programs); + } + + reset() { + this.previousStartStation = null; + this.previousFirstLatticePoint = -1; + this.previousSecondLatticePoint = -1; + this.previousFirstAcceleration = -1; + this.previousSecondLatticePoint = -1; + } + + plan(vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles) { + const latticeStationInterval = this._latticeStationInterval(); + + const centerlineRaw = lanePath.sampleStations(vehicleStation, Math.ceil((this.config.spatialHorizon + latticeStationInterval) / this.config.centerlineStationInterval) + 1, this.config.centerlineStationInterval); + + // Transform all centerline points into vehicle frame + const vehicleXform = vehicleTransform(vehiclePose); + const centerline = centerlineRaw.map(c => { return { pos: c.pos.clone().applyMatrix3(vehicleXform), rot: c.rot - vehiclePose.rot, curv: c.curv } }); + + const centerlineData = new Float32Array(centerline.length * 3); + const maxPoint = new THREE.Vector2(0, 0); + const minPoint = new THREE.Vector2(0, 0); + + for (let i = 0; i < centerline.length; i++) { + const sample = centerline[i]; + const pos = sample.pos; + centerlineData[i * 3 + 0] = pos.x; + centerlineData[i * 3 + 1] = pos.y; + centerlineData[i * 3 + 2] = sample.rot; + + maxPoint.max(pos); + minPoint.min(pos); + } + + const diff = maxPoint.clone().sub(minPoint); + const xyCenterPoint = minPoint.clone().add(maxPoint).divideScalar(2); + + // Sizes of the xy grids (in pixels, not meters) + const xyWidth = Math.ceil((diff.x + this.config.gridMargin * 2) / this.config.xyGridCellSize); + const xyHeight = Math.ceil((diff.y + this.config.gridMargin * 2) / this.config.xyGridCellSize); + + const stationWidth = this.config.spatialHorizon + latticeStationInterval * 2; + const slCenterPoint = new THREE.Vector2(this.config.spatialHorizon / 2, 0); + + // Sizes of the sl grids (in pixels, not meters) + const slWidth = Math.ceil(stationWidth / this.config.slGridCellSize); + const slHeight = Math.ceil((this.config.roadWidth + this.config.gridMargin * 2) / this.config.slGridCellSize); + + let startStation; + + if (this.previousStartStation === null || vehicleStation + latticeStationInterval / 2 > this.previousStartStation) { + startStation = (this.previousStartStation === null ? vehicleStation : this.previousStartStation) + latticeStationInterval; + this.previousStartStation = startStation; + this.previousFirstLatticePoint -= this.config.lattice.numLatitudes; + this.previousSecondLatticePoint -= this.config.lattice.numLatitudes; + } else { + startStation = this.previousStartStation; + } + + const lattice = this._buildLattice(lanePath, startStation, vehiclePose.rot, vehicleXform); + + const temporalHorizon = this.config.spatialHorizon / this.config.speedLimit; + const dynamicFrameTime = temporalHorizon / this.config.numDynamicFrames; + + for (const [i, p] of [ + xyObstacleGrid.update(this.config, xyWidth, xyHeight, xyCenterPoint, vehicleXform, staticObstacles), + slObstacleGrid.update(this.config, slWidth, slHeight, slCenterPoint, xyCenterPoint), + ...slObstacleGridDilation.update(this.config, slWidth, slHeight), + slDynamicObstacleGrid.update(this.config, slWidth, slHeight, slCenterPoint, vehicleStation, startTime, dynamicFrameTime, dynamicObstacles), + xyslMap.update(this.config, xyWidth, xyHeight, xyCenterPoint), + ...optimizeCubicPaths.update(this.config, vehiclePose), + optimizeQuinticPaths.update(this.config, vehiclePose), + ...pathFromVehicleCosts.update(this.config, vehiclePose, xyCenterPoint, slCenterPoint, this.previousFirstLatticePoint, this.previousSecondLatticePoint, dynamicFrameTime), + graphSearch.update(this.config, vehiclePose, xyCenterPoint, slCenterPoint, this.previousFirstLatticePoint, this.previousSecondLatticePoint, dynamicFrameTime) + ].entries()) { + this.gpgpu.updateProgram(i, p); + } + + this.gpgpu.updateSharedTextures({ + centerline: { + width: centerline.length, + height: 1, + channels: 3, + filter: 'linear', + data: centerlineData + }, + costTable: { + width: NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES * NUM_TIME_RANGES, + height: this.config.lattice.numLatitudes, + depth: this.config.lattice.numStations, + channels: 4, + textureType: '2DArray' + }, + lattice: { + width: this.config.lattice.numLatitudes, + height: this.config.lattice.numStations, + channels: 4, + data: lattice + } + }); + + this.gpgpu._graphSearchCostTable = null; + this.gpgpu._dynamicObstacleGrid = null; + + let start = performance.now(); + const outputs = this.gpgpu.run(); + const costTable = this.gpgpu._graphSearchCostTable; + const cubicPathParams = outputs[6]; + const cubicPathFromVehicleParams = outputs[7]; + const quinticPathFromVehicleParams = outputs[8]; + + let bestEntry = [Number.POSITIVE_INFINITY]; + let bestEntryIndex; + const numEntries = costTable.length / 4; + + for (let i = 0; i < numEntries; i++) { + const entryUnpacked = this._unpackCostTableIndex(i); + const entry = [ + costTable[i * 4], + costTable[i * 4 + 1], + costTable[i * 4 + 2], + costTable[i * 4 + 3] + ]; + + if (entry[0] < 0) continue; + + entry[0] += this._terminalCost(entryUnpacked, entry); + + if (entry[0] < bestEntry[0]) { + bestEntryIndex = i; + bestEntry = entry; + } + } + + const inverseVehicleXform = (new THREE.Matrix3()).getInverse(vehicleXform); + let bestTrajectory = null; + let fromVehicleSegment = null; + let fromVehicleParams = null; + let firstLatticePoint = -1; + let firstAcceleration = -1; + let secondLatticePoint = -1; + let secondAcceleration = -1; + + if (isFinite(bestEntry[0])) { + [bestTrajectory, fromVehicleSegment, fromVehicleParams, firstLatticePoint, firstAcceleration, secondLatticePoint, secondAcceleration] = this._reconstructTrajectory( + bestEntryIndex, + costTable, + cubicPathParams, + cubicPathFromVehicleParams, + quinticPathFromVehicleParams, + vehiclePose, + lattice + ); + + fromVehicleSegment.forEach(p => { + p.pos = p.pos.applyMatrix3(inverseVehicleXform); + p.rot += vehiclePose.rot; + }); + + bestTrajectory.forEach(p => { + p.pos = p.pos.applyMatrix3(inverseVehicleXform); + p.rot += vehiclePose.rot; + }); + } + + this.previousFirstLatticePoint = firstLatticePoint; + this.previousFirstAcceleration = firstAcceleration; + this.previousSecondLatticePoint = secondLatticePoint; + this.previousSecondAcceleration = secondAcceleration; + + return { + path: bestTrajectory, + fromVehicleSegment: fromVehicleSegment, + fromVehicleParams: fromVehicleParams, + latticeStartStation: this.previousStartStation, + dynamicObstacleGrid: { data: this.gpgpu._dynamicObstacleGrid, width: slWidth, height: slHeight } + }; + } + + _buildLattice(lanePath, startStation, vehicleRot, vehicleXform) { + const centerline = lanePath.sampleStations(startStation, this.config.lattice.numStations, this._latticeStationInterval()); + const offset = Math.floor(this.config.lattice.numLatitudes / 2); + const lattice = new Float32Array(this.config.lattice.numStations * this.config.lattice.numLatitudes * 4); + let index = 0; + + for (let s = 0; s < centerline.length; s++) { + const sample = centerline[s]; + + for (let l = 0; l < this.config.lattice.numLatitudes; l++) { + const latitude = (l - offset) / offset * this.config.roadWidth / 2; + const rot = sample.rot - vehicleRot; + const pos = THREE.Vector2.fromAngle(rot + Math.PI / 2).multiplyScalar(latitude).add(sample.pos.clone().applyMatrix3(vehicleXform)); + const curv = sample.curv == 0 ? 0 : 1 / (1 / sample.curv - latitude); + + lattice[index++] = pos.x; + lattice[index++] = pos.y; + lattice[index++] = rot; + lattice[index++] = curv; + } + } + + return lattice; + } + + _latticeStationInterval() { + return this.config.spatialHorizon / this.config.lattice.numStations; + } + + _terminalCost([stationIndex, latitudeIndex, timeIndex, velocityIndex, accelerationIndex], [cost, finalVelocity, finalTime, incomingIndex]) { + // Only consider vertices that reach the end of the spatial or temporal horizon + if (stationIndex != this.config.lattice.numStations - 1 && finalVelocity > 0.05) + return Number.POSITIVE_INFINITY; + + const station = (this.config.spatialHorizon / this.config.lattice.numStations) * (stationIndex + 1); + + return station * -this.config.stationReachDiscount + finalTime * this.config.extraTimePenalty; + } + + _unpackCostTableIndex(index) { + if (index < 0) return [-1, index + 2, null, null, null]; + + const numPerTime = NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES; + const numPerLatitude = numPerTime * NUM_TIME_RANGES; + const numPerStation = this.config.lattice.numLatitudes * numPerLatitude; + + const stationIndex = Math.floor(index / numPerStation); + index -= stationIndex * numPerStation; + + const latitudeIndex = Math.floor(index / numPerLatitude); + index -= latitudeIndex * numPerLatitude; + + const timeIndex = Math.floor(index / numPerTime); + index -= timeIndex * numPerTime; + + const velocityIndex = Math.floor(index / NUM_ACCELERATION_PROFILES); + const accelerationIndex = index % NUM_ACCELERATION_PROFILES; + + return [stationIndex, latitudeIndex, timeIndex, velocityIndex, accelerationIndex]; + } + + _reconstructTrajectory(index, costTable, cubicPathParams, cubicPathFromVehicleParams, quinticPathFromVehicleParams, vehiclePose, lattice) { + let unpacked = this._unpackCostTableIndex(index); + unpacked.push(costTable[index * 4 + 1]); + const nodes = [unpacked]; + + let count = 0; + while (unpacked[0] >= 0 && count++ < 100) { + index = costTable[index * 4 + 3]; + unpacked = this._unpackCostTableIndex(index); + + const finalVelocity = unpacked[0] >= 0 ? costTable[index * 4 + 1] : vehiclePose.velocity; + unpacked.push(finalVelocity); + + nodes.unshift(unpacked); + } + if (count >= 100) throw new Error('Infinite loop encountered while reconstructing trajectory.'); + + const points = []; + let fromVehicleSegment = []; + let fromVehicleParams = null; + + for (let i = 0; i < nodes.length - 1; i++) { + const [prevStation, prevLatitude, _pt, _pv, _pa, prevVelocity] = nodes[i]; + const [station, latitude, _t, _v, _a, velocity] = nodes[i + 1]; + + let length; + let pathBuilder; + + if (prevStation < 0) { + const start = { + pos: new THREE.Vector2(0, 0), + rot: 0, + curv: vehiclePose.curv + }; + + const endIndex = (station * this.config.lattice.numLatitudes + latitude) * 4; + const end = { + pos: new THREE.Vector2(lattice[endIndex], lattice[endIndex + 1]), + rot: lattice[endIndex + 2], + curv: lattice[endIndex + 3] + }; + + if (prevLatitude == 0) { // Cubic path from vehicle to lattice node + length = cubicPathFromVehicleParams[endIndex + 2]; + + const params = { + p1: cubicPathFromVehicleParams[endIndex], + p2: cubicPathFromVehicleParams[endIndex + 1], + sG: length + }; + + pathBuilder = new CubicPath(start, end, params); + + fromVehicleParams = { type: 'cubic', params: params }; + } else { // Quintic path from vehicle to lattice node + length = quinticPathFromVehicleParams[endIndex + 2]; + + const params = { + p3: quinticPathFromVehicleParams[endIndex], + p4: quinticPathFromVehicleParams[endIndex + 1], + sG: length + }; + + pathBuilder = new QuinticPath(start, end, params); + + fromVehicleParams = { type: 'quintic', params: params }; + } + } else { + const startIndex = (prevStation * this.config.lattice.numLatitudes + prevLatitude) * 4; + const endIndex = (station * this.config.lattice.numLatitudes + latitude) * 4; + + const start = { + pos: new THREE.Vector2(lattice[startIndex], lattice[startIndex + 1]), + rot: lattice[startIndex + 2], + curv: lattice[startIndex + 3] + }; + + const end = { + pos: new THREE.Vector2(lattice[endIndex], lattice[endIndex + 1]), + rot: lattice[endIndex + 2], + curv: lattice[endIndex + 3] + }; + + const slIndex = station * this.config.lattice.numLatitudes + latitude; + const connectivityIndex = (prevStation - station + this.config.lattice.stationConnectivity) * this.config.lattice.latitudeConnectivity + prevLatitude - latitude + Math.floor(this.config.lattice.latitudeConnectivity / 2); + const cubicPathIndex = (connectivityIndex * this.config.lattice.numStations * this.config.lattice.numLatitudes + slIndex) * 4; + + length = cubicPathParams[cubicPathIndex + 2]; + + pathBuilder = new CubicPath(start, end, { + p1: cubicPathParams[cubicPathIndex], + p2: cubicPathParams[cubicPathIndex + 1], + sG: length + }); + } + + const path = pathBuilder.buildPath(Math.ceil(length / 0.25)); + + const prevVelocitySq = prevVelocity * prevVelocity; + const accel = (velocity * velocity - prevVelocitySq) / 2 / length; + const ds = length / (path.length - 1); + let s = 0; + + for (let p = 0; p < path.length; p++) { + path[p].velocity = Math.sqrt(2 * accel * s + prevVelocitySq); + path[p].acceleration = accel; + s += ds; + } + + if (prevStation < 0) { + fromVehicleSegment = path; + } else { + if (i > 0) path.shift(); + points.push(...path); + } + } + + let firstLatticePoint = null + let firstAcceleration = null; + let secondLatticePoint = null; + let secondAcceleration = null; + + if (nodes.length >= 2) { + firstLatticePoint = nodes[1][0] * this.config.lattice.numLatitudes + nodes[1][1]; + firstAcceleration = nodes[1][4]; + } + + if (nodes.length >= 3) { + secondLatticePoint = nodes[2][0] * this.config.lattice.numLatitudes + nodes[2][1]; + secondAcceleration = nodes[2][4]; + } + + return [points, fromVehicleSegment, fromVehicleParams, firstLatticePoint, firstAcceleration, secondLatticePoint, secondAcceleration]; + } +} + +function vehicleTransform({ pos, rot }) { + const translate = new THREE.Matrix3(); + translate.set( + 1, 0, -pos.x, + 0, 1, -pos.y, + 0, 0, 1 + ); + + const cosRot = Math.cos(rot); + const sinRot = Math.sin(rot); + + const rotate = new THREE.Matrix3(); + rotate.set( + cosRot, sinRot, 0, + -sinRot, cosRot, 0, + 0, 0, 1 + ); + + return rotate.multiply(translate); +} + +function obstacleTransform(vehicleXform, xyCenterPoint, width, height) { + const translate = new THREE.Matrix3(); + translate.set( + 1, 0, -xyCenterPoint.x, + 0, 1, -xyCenterPoint.y, + 0, 0, 1 + ); + + const scale = new THREE.Matrix3(); + scale.set( + 2 / width, 0, 0, + 0, 2 / height, 0, + 0, 0, 1 + ); + + return scale.multiply(translate).multiply(vehicleXform); +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/QuinticPath.js b/seminar06-planning/simulator/js/autonomy/path-planning/QuinticPath.js new file mode 100644 index 0000000..21d563e --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/QuinticPath.js @@ -0,0 +1,72 @@ +export default class QuinticPath { + constructor(start, end, params) { + this.start = Object.assign({}, start); + this.end = Object.assign({}, end); + + if (start.pos) { + this.start.x = start.pos.x; + this.start.y = start.pos.y + } + + if (end.pos) { + this.end.x = end.pos.x; + this.end.y = end.pos.y + } + + const diffX = this.end.x - this.start.x; + const diffY = this.end.y - this.start.y; + const sinRot = Math.sin(this.start.rot); + const cosRot = Math.cos(this.start.rot); + + this.goal = { + x: cosRot * diffX + sinRot * diffY, + y: -sinRot * diffX + cosRot * diffY, + rot: Math.wrapAngle(this.end.rot - this.start.rot), + curv: this.end.curv + }; + + this.params = Object.assign({}, params, { p0: this.start.curv, p1: this.start.dCurv || 0, p2: this.start.ddCurv || 0, p5: this.end.curv }); + } + + buildPath(num) { + const { p0, p1, p2, p3, p4, p5, sG } = this.params; + + const sG_2 = sG * sG; + const sG_3 = sG_2 * sG; + + const a = p0; + const b = p1; + const c = p2 / 2.0; + const d = (-71.875 * p0 + 81.0 * p3 - 10.125 * p4 + p5 - 21.25 * p1 * sG - 2.75 * p2 * sG_2) / sG_3; + const e = (166.5 * p0 - 202.5 * p3 + 40.5 * p4 - 4.5 * p5 + 45.0 * p1 * sG + 4.5 * p2 * sG_2) / (sG_2 * sG_2); + const f = (-95.625 * p0 + 121.5 * p3 - 30.375 * p4 + 4.5 * p5 - 24.75 * p1 * sG - 2.25 * p2 * sG_2) / (sG_2 * sG_3); + + const path = [{ pos: new THREE.Vector2(this.start.x, this.start.y), rot: this.start.rot, curv: this.start.curv }]; + const ds = sG / (num - 1); + let s = ds; + let dx = 0; + let dy = 0; + let prevCosRot = Math.cos(path[0].rot); + let prevSinRot = Math.sin(path[0].rot); + + for (let i = 1; i < num - 1; i++) { + const rot = (((((f * s / 6.0 + e / 5.0) * s + d / 4.0) * s + c / 3.0) * s + b / 2.0) * s + a) * s + this.start.rot; + const curv = ((((f * s + e) * s + d) * s + c) * s + b) * s + a; + const cosRot = Math.cos(rot); + const sinRot = Math.sin(rot); + + dx = dx * (i - 1) / i + (cosRot + prevCosRot) / (2 * i); + dy = dy * (i - 1) / i + (sinRot + prevSinRot) / (2 * i); + + path.push({ pos: new THREE.Vector2(s * dx + this.start.x, s * dy + this.start.y), rot: rot, curv: curv }); + + s += ds; + prevCosRot = cosRot; + prevSinRot = sinRot; + } + + path.push({ pos: new THREE.Vector2(this.end.x, this.end.y), rot: this.end.rot, curv: this.end.curv }); + + return path; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/RoadLattice.js b/seminar06-planning/simulator/js/autonomy/path-planning/RoadLattice.js new file mode 100644 index 0000000..0a62a46 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/RoadLattice.js @@ -0,0 +1,24 @@ +export default class RoadLattice { + constructor(lanePath, latticeStartStation, config) { + const stationInterval = config.spatialHorizon / config.lattice.numStations; + const centerline = lanePath.sampleStations(latticeStartStation, config.lattice.numStations, stationInterval); + const lattice = new Array(centerline.length); + const offset = Math.floor(config.lattice.numLatitudes / 2); + + for (let s = 0; s < centerline.length; s++) { + const sample = centerline[s]; + const latitudes = lattice[s] = new Array(config.lattice.numLatitudes); + + for (let l = 0; l < config.lattice.numLatitudes; l++) { + const latitude = (l - offset) / offset * config.roadWidth / 2; + const rot = sample.rot; + const pos = THREE.Vector2.fromAngle(rot + Math.PI / 2).multiplyScalar(latitude).add(sample.pos); + const curv = sample.curv == 0 ? 0 : 1 / (1 / sample.curv - latitude); + + latitudes[l] = { pos, rot, curv }; + } + } + + this.lattice = lattice; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/graphSearch.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/graphSearch.js new file mode 100644 index 0000000..74a45c2 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/graphSearch.js @@ -0,0 +1,267 @@ +/* State Lattice Cost Map + * + * 5-dimensional node: station, latitude, acceleration profile, velocity, time + * + * A draw call per station s + * * Input to kernel: latitude l, acceleration profile a, velocity range v, time range t + * * Find all SL vertices that can connect to this node + * * For each of those vertices, check if any terminate in this specific velocity and time range + * * Based on initial velocity, initial time, and acceleration + * * Each connected SL vertex should have a * v * t nodes that could possibly terminate at this node + * * For all valid edges, find the one with the lowest cost + * + * Input: + * * 2D texture array cost map + * * Height: num of latitudes (~20) + * * Width: num of acceleration profiles * num of time ranges * num of velocity ranges (8 * 2 * 4 = ~64) + * * A flattened 3D array: + * d1: acceleration + * d2: velocity + * d3: time + * * Layer: num of stations (~10) + * + * Output: + * * 2D texture slice of the next station in the input 2D texture array cost map + * + * Cost Map Elements: + * * Traversal cost so far + * * Ending velocity + * * Ending time + * * Index of parent node + * + * Since one cubic path can be shared between multiple trajectories, they need to be pre-optimized. + * + * Quintic Paths: + * Stations 0 through (numStations - 1) correspond to the stations on the lattice; however, + * a new station (station -1) will be used to signifiy the single vehicle pose node. Either + * a cubic path or quintic path can be used to connect this single node to the lattice + * (depending on vehicle velocity). At station -1, latitude 0 will correspond to a cubic path, + * and latitude 1 will correspond to a quintic path. All other latitudes will be skipped. + */ + +import { SHARED_SHADER, SAMPLE_CUBIC_PATH_FN, SAMPLE_QUINTIC_PATH_FN, NUM_ACCELERATION_PROFILES, NUM_VELOCITY_RANGES, NUM_TIME_RANGES, SHARED_UNIFORMS, buildUniformValues } from "./graphSearchShared.js"; + +const SOLVE_STATION_KERNEL = + SHARED_SHADER + + SAMPLE_CUBIC_PATH_FN + + SAMPLE_QUINTIC_PATH_FN + + +` + +vec4 kernel() { + ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize)); + + int latitude = indexes.y; + + int numPerTime = numAccelerations * numVelocities; + int timeIndex = indexes.x / numPerTime; + indexes.x -= timeIndex * numPerTime; + int velocityIndex = indexes.x / numAccelerations; + int accelerationIndex = int(mod(float(indexes.x), float(numAccelerations))); + + int minLatitude = max(latitude - latitudeConnectivity / 2, 0); + int maxLatitude = min(latitude + latitudeConnectivity / 2, numLatitudes - 1); + + int slIndex = station * numLatitudes + latitude; + + vec4 pathEnd = texelFetch(lattice, ivec2(latitude, station), 0); + + float minVelocity = velocityRanges[velocityIndex]; + float maxVelocity = velocityRanges[velocityIndex + 1]; + + float minTime = timeRanges[timeIndex]; + float maxTime = timeRanges[timeIndex + 1]; + + vec4 bestTrajectory = vec4(-1); // -1 means infinite cost + float bestTerminalCost = 1.0 / 0.0; + + float hysteresisAdjustment = (slIndex == firstLatticePoint || slIndex == secondLatticePoint) ? 0.0 : hysteresisDiscount; + + for (int prevStation = max(station - stationConnectivity, 0); prevStation < station; prevStation++) { + int stationConnectivityIndex = prevStation - station + stationConnectivity; + + for (int prevLatitude = minLatitude; prevLatitude <= maxLatitude; prevLatitude++) { + int latitudeConnectivityIndex = prevLatitude - latitude + latitudeConnectivity / 2; + int connectivityIndex = stationConnectivityIndex * latitudeConnectivity + latitudeConnectivityIndex; + + vec4 pathStart = texelFetch(lattice, ivec2(prevLatitude, prevStation), 0); + vec4 cubicPathParams = texelFetch(cubicPaths, ivec2(slIndex, connectivityIndex), 0); + + // If the path didn't converge + if (cubicPathParams.w == 0.0) continue; + + int numSamples = sampleCubicPath(pathStart, pathEnd, cubicPathParams); + float pathLength = cubicPathParams.z; + + if (numSamples < 2) continue; + + float averageStaticCost = calculateAverageStaticCost(numSamples); + if (averageStaticCost < 0.0) continue; + + averageStaticCost += hysteresisAdjustment; + + if (averageStaticCost * pathLength >= bestTerminalCost) continue; + + for (int prevVelocity = 0; prevVelocity < numVelocities; prevVelocity++) { + for (int prevTime = 0; prevTime < numTimes; prevTime++) { + for (int prevAccel = 0; prevAccel < numAccelerations; prevAccel++) { + int avtIndex = prevTime * numPerTime + prevVelocity * numAccelerations + prevAccel; + + // Cost table entry: + // x: cost so far + // y: end velocity + // z: end time + // w: parent index + vec4 costTableEntry = texelFetch(costTable, ivec3(avtIndex, prevLatitude, prevStation), 0); + + // If cost entry is infinity + if (costTableEntry.x < 0.0 || averageStaticCost * pathLength + costTableEntry.x >= bestTerminalCost) continue; + + vec3 avt = calculateAVT(accelerationIndex, costTableEntry.y, costTableEntry.z, pathLength); + float acceleration = avt.x; + float finalVelocity = avt.y; + float finalTime = avt.z; + + if (averageStaticCost * pathLength + costTableEntry.x + extraTimePenalty * finalTime >= bestTerminalCost) continue; + + // If the calculated final velocity does not match this fragment's velocity range, then skip this trajectory + if (finalVelocity < minVelocity || finalVelocity >= maxVelocity) continue; + + // If the calculated final time does not match this fragment's time range, then skip this trajectory + if (finalTime < minTime || finalTime >= maxTime) continue; + + float abandonThreshold = (bestTerminalCost - extraTimePenalty * finalTime - costTableEntry.x) / pathLength - averageStaticCost; + float averageDynamicCost = calculateAverageDynamicCost(numSamples, pathLength, costTableEntry.z, costTableEntry.y, acceleration, abandonThreshold); + if (averageDynamicCost < 0.0) continue; + + if (accelerationIndex != prevAccel) + averageDynamicCost += accelerationChangePenalty; + + // The cost of a trajectory is the average sample cost scaled by the path length + float totalCost = (averageStaticCost + averageDynamicCost) * pathLength + costTableEntry.x; + + float terminalCost = totalCost + extraTimePenalty * finalTime; + if (terminalCost >= bestTerminalCost) continue; + bestTerminalCost = terminalCost; + + int incomingIndex = avtIndex + numPerTime * numTimes * (prevLatitude + numLatitudes * prevStation); + bestTrajectory = vec4(totalCost, finalVelocity, finalTime, incomingIndex); + } + } + } + } + } + + if (station < stationConnectivity) { + ivec2 slaIndex = ivec2(latitude, station * numAccelerations + accelerationIndex); + + vec4 costTableEntry = texelFetch(cubicPathFromVehicleCosts, slaIndex, 0); + float terminalCost; + + if (costTableEntry.x >= 0.0) { + terminalCost = costTableEntry.x + extraTimePenalty * costTableEntry.z; + + if (terminalCost < bestTerminalCost) { + bestTerminalCost = terminalCost; + bestTrajectory = costTableEntry; + } + } + + costTableEntry = texelFetch(quinticPathFromVehicleCosts, slaIndex, 0); + + if (costTableEntry.x >= 0.0) { + terminalCost = costTableEntry.x + extraTimePenalty * costTableEntry.z; + + if (terminalCost < bestTerminalCost) { + bestTerminalCost = terminalCost; + bestTrajectory = costTableEntry; + } + } + } + + return bestTrajectory; +} + +`; + +export default { + setUp() { + return { + kernel: SOLVE_STATION_KERNEL, + output: { name: 'graphSearch' }, + uniforms: Object.assign({}, SHARED_UNIFORMS, { + lattice: { type: 'sharedTexture' }, + costTable: { type: 'sharedTexture', textureType: '2DArray' }, + cubicPaths: { type: 'outputTexture' }, + cubicPathFromVehicleCosts: { type: 'outputTexture' }, + quinticPathFromVehicleCosts: { type: 'outputTexture' }, + firstLatticePoint: { type: 'int' }, + secondLatticePoint: { type: 'int' }, + velocityVehicle: { type: 'float' }, + curvVehicle: { type: 'float' }, + dCurvVehicle: { type: 'float' }, + ddCurvVehicle: { type: 'float' }, + extraTimePenalty: { type: 'float' }, + hysteresisDiscount: { type: 'float' }, + accelerationChangePenalty: { type: 'float' }, + numStations: { type: 'int' }, + numLatitudes: { type: 'int' }, + numAccelerations: { type: 'int' }, + numVelocities: { type: 'int' }, + numTimes: { type: 'int' }, + stationConnectivity: { type: 'int' }, + latitudeConnectivity: { type: 'int' }, + velocityRanges: { type: 'float', length: NUM_VELOCITY_RANGES + 1 }, + timeRanges: { type: 'float', length: NUM_TIME_RANGES + 1 }, + station: { type: 'int' } // Updated in `drawProxy` + }), + drawProxy: (gpgpu, program, draw) => { + const width = NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES * NUM_TIME_RANGES; + const height = program.meta.lattice.numLatitudes; + const costTable = new Float32Array(width * height * program.meta.lattice.numStations * 4); + + for (let s = 0; s < program.meta.lattice.numStations; s++) { + gpgpu.updateProgramUniforms(program, { station: s }); + draw(); + + gpgpu.gl.readPixels(0, 0, width, height, gpgpu.gl.RGBA, gpgpu.gl.FLOAT, costTable, s * width * height * 4); + + gpgpu.gl.bindTexture(gpgpu.gl.TEXTURE_2D_ARRAY, gpgpu.sharedTextures.costTable); + gpgpu.gl.copyTexSubImage3D(gpgpu.gl.TEXTURE_2D_ARRAY, 0, 0, 0, s, 0, 0, width, height); + } + + gpgpu._graphSearchCostTable = costTable; + } + }; + }, + + update(config, pose, xyCenterPoint, slCenterPoint, firstLatticePoint, secondLatticePoint, dynamicFrameTime) { + return { + width: NUM_ACCELERATION_PROFILES * NUM_VELOCITY_RANGES * NUM_TIME_RANGES, + height: config.lattice.numLatitudes, + meta: { + lattice: config.lattice + }, + uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), { + firstLatticePoint: firstLatticePoint, + secondLatticePoint: secondLatticePoint, + velocityVehicle: pose.velocity, + curvVehicle: pose.curv, + dCurvVehicle: pose.dCurv, + ddCurvVehicle: pose.ddCurv, + extraTimePenalty: config.extraTimePenalty, + hysteresisDiscount: config.hysteresisDiscount, + accelerationChangePenalty: config.accelerationChangePenalty, + numStations: config.lattice.numStations, + numLatitudes: config.lattice.numLatitudes, + numAccelerations: NUM_ACCELERATION_PROFILES, + numVelocities: NUM_VELOCITY_RANGES, + numTimes: NUM_TIME_RANGES, + stationConnectivity: config.lattice.stationConnectivity, + latitudeConnectivity: config.lattice.latitudeConnectivity, + velocityRanges: [0, config.speedLimit / 3, config.speedLimit * 2 / 3, config.speedLimit, 1000000], + timeRanges: [0, 10, 1000000] + }) + }; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/graphSearchShared.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/graphSearchShared.js new file mode 100644 index 0000000..e48bb8b --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/graphSearchShared.js @@ -0,0 +1,308 @@ +const SHARED_SHADER = ` + +const float smallV = 0.01; +vec4 pathSamples[128]; +float pathSampleCurvRates[128]; + +float calculateAcceleration(int index, float initialVelocitySq, float distance) { + if (index <= 4) { + // [aMaxHard, aMinHard, aMaxSoft, aMinSoft, 0] + return accelerationProfiles[index]; + } else { + float finalVelocity = finalVelocityProfiles[index - 5]; + if (distance < 0.001) return 0.0; + return clamp((finalVelocity * finalVelocity - initialVelocitySq) / (2.0 * distance), accelerationProfiles[1], accelerationProfiles[0]); + } +} + +vec2 xy2sl(vec4 xytk) { + vec2 xy = xytk.xy + rearAxleToCenter * vec2(cos(xytk.z), sin(xytk.z)); + vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyslMap, 0)) / vec2(xyGridCellSize) + 0.5; + return texture(xyslMap, xyTexCoords).xy; +} + +float sampleStaticCost(vec4 xytk) { + vec2 sl = xy2sl(xytk); + vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slObstacleGrid, 0)) / vec2(slGridCellSize) + 0.5; + float obstacleCost = texture(slObstacleGrid, slTexCoords).r; + + if (obstacleCost >= 0.75) return -1.0; // Infinite cost + + obstacleCost = step(0.25, obstacleCost) * obstacleHazardCost; + + float absLatitude = abs(sl.y); + if (absLatitude >= laneShoulderLatitude) return -1.0; + + float laneCost = abs(absLatitude - laneCenterLatitude) * laneCostSlope + step(0.0, -sl.y * sign(lanePreference)) * lanePreferenceDiscount; + + return obstacleCost + laneCost; +} + +float sampleDynamicCost(vec4 xytk, float time, float velocity, float acceleration) { + vec2 sl = xy2sl(xytk); + vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slDynamicObstacleGrid, 0).xy) / vec2(slGridCellSize) + 0.5; + float dynamicFrame = floor(time / dynamicFrameTime); + + float obstacleCost = texture(slDynamicObstacleGrid, vec3(slTexCoords, dynamicFrame)).r; + + if (obstacleCost > 0.75) return -1.0; // Infinite cost + + return step(0.25, obstacleCost) * obstacleHazardCost; +} + +float calculateAverageStaticCost(int numSamples) { + float averageStaticCost = 0.0; + + for (int i = 0; i < numSamples; i++) { + float cost = sampleStaticCost(pathSamples[i]); + + if (cost < 0.0) return cost; + + averageStaticCost += cost; + } + + averageStaticCost /= float(numSamples); + + return averageStaticCost; +} + +float calculateAverageDynamicCost(int numSamples, float pathLength, float initialTime, float initialVelocity, float acceleration, float abandonThreshold) { + float s = 0.0; + float ds = pathLength / float(numSamples - 1); + float averageDynamicCost = 0.0; + float maxVelocity = 0.0; + float maxLateralAcceleration = 0.0; + float numSamples_f = float(numSamples); + + for (int i = 0; i < numSamples; i++) { + vec4 pathSample = pathSamples[i]; // vec4(x-pos, y-pos, theta (rotation), kappa (curvature)) + + float velocitySq = 2.0 * acceleration * s + initialVelocity * initialVelocity; + float velocity = max(smallV, sqrt(max(0.0, velocitySq))); + maxVelocity = max(maxVelocity, velocity); + maxLateralAcceleration = max(maxLateralAcceleration, abs(pathSample.w * velocity * velocity)); + + float time = 2.0 * s / (initialVelocity + velocity) + initialTime; + + float dCurv = pathSampleCurvRates[i] * velocity; + if (dCurv > dCurvatureMax) return -1.0; + + float cost = sampleDynamicCost(pathSample, time, velocity, acceleration); + if (cost < 0.0) return cost; + + averageDynamicCost += cost; + if (averageDynamicCost / numSamples_f >= abandonThreshold) return -1.0; + + s += ds; + } + + averageDynamicCost /= numSamples_f; + + // Apply speeding penality if any velocity along the trajectory is over the speed limit + averageDynamicCost += step(speedLimit, maxVelocity) * speedLimitPenalty; + + // Apply hard acceleration/deceleration penalties if the acceleration/deceleration exceeds the soft limits + averageDynamicCost += step(accelerationProfiles[2] + 0.0001, acceleration) * hardAccelerationPenalty; + averageDynamicCost += (1.0 - step(accelerationProfiles[3], acceleration)) * hardDecelerationPenalty; + + // Penalize lateral acceleration + averageDynamicCost += step(softLateralAccelerationLimit, maxLateralAcceleration) * softLateralAccelerationPenalty; + averageDynamicCost += linearLateralAccelerationPenalty * maxLateralAcceleration; + + return averageDynamicCost; +} + +vec3 calculateAVT(int accelerationIndex, float initialVelocity, float initialTime, float pathLength) { + float initialVelocitySq = initialVelocity * initialVelocity; + float acceleration = calculateAcceleration(accelerationIndex, initialVelocitySq, pathLength); + + float finalVelocitySq = 2.0 * acceleration * pathLength + initialVelocitySq; + float finalVelocity = max(smallV, sqrt(max(0.0, finalVelocitySq))); + + float finalTime = initialTime; + + if (acceleration == 0.0) { + finalTime += pathLength / finalVelocity; + } else if (finalVelocitySq <= 0.0) { // Calculate final time if the vehicle stops before the end of the trajectory + float distanceLeft = pathLength - (smallV * smallV - initialVelocitySq) / (2.0 * acceleration); + finalTime += (finalVelocity - initialVelocity) / acceleration + distanceLeft / smallV; + } else { + finalTime += 2.0 * pathLength / (finalVelocity + initialVelocity); + } + + return vec3(acceleration, finalVelocity, finalTime); +} + +`; + +const SAMPLE_CUBIC_PATH_FN = ` + +int sampleCubicPath(vec4 start, vec4 end, vec4 cubicPathParams) { + float p0 = start.w; + float p1 = cubicPathParams.x; + float p2 = cubicPathParams.y; + float p3 = end.w; + float sG = cubicPathParams.z; + + if (sG <= 0.0) return 0; + + int numSamples = int(ceil(sG / pathSamplingStep)) + 1; + + float sG_2 = sG * sG; + float sG_3 = sG_2 * sG; + + float a = p0; + float b = (-5.5 * p0 + 9.0 * p1 - 4.5 * p2 + p3) / sG; + float c = (9.0 * p0 - 22.5 * p1 + 18.0 * p2 - 4.5 * p3) / sG_2; + float d = (-4.5 * (p0 - 3.0 * p1 + 3.0 * p2 - p3)) / sG_3; + + pathSamples[0] = start; + + float ds = sG / float(numSamples - 1); + float s = ds; + vec2 dxy = vec2(0); + vec2 prevCosSin = vec2(cos(start.z), sin(start.z)); + + for (int i = 1; i < numSamples; i++) { + float rot = (((d * s / 4.0 + c / 3.0) * s + b / 2.0) * s + a) * s + start.z; + float curv = ((d * s + c) * s + b) * s + a; + + vec2 cosSin = vec2(cos(rot), sin(rot)); + dxy = dxy * vec2(float(i - 1) / float(i)) + (cosSin + prevCosSin) / vec2(2 * i); + + pathSamples[i] = vec4(dxy * vec2(s) + start.xy, rot, curv); + pathSampleCurvRates[i] = b + s * (2.0 * c + 3.0 * d * s); + + s += ds; + prevCosSin = cosSin; + } + + return numSamples; +} + +`; + +const SAMPLE_QUINTIC_PATH_FN = ` + +int sampleQuinticPath(vec4 start, vec4 end, vec4 quinticPathParams) { + float p0 = start.w; + float p1 = dCurvVehicle; + float p2 = ddCurvVehicle; + float p3 = quinticPathParams.x; + float p4 = quinticPathParams.y; + float p5 = end.w; + float sG = quinticPathParams.z; + + if (sG <= 0.0) return 0; + + int numSamples = int(ceil(sG / pathSamplingStep)) + 1; + + float sG_2 = sG * sG; + float sG_3 = sG_2 * sG; + + float a = p0; + float b = p1; + float c = p2 / 2.0; + float d = (-71.875 * p0 + 81.0 * p3 - 10.125 * p4 + p5 - 21.25 * p1 * sG - 2.75 * p2 * sG_2) / sG_3; + float e = (166.5 * p0 - 202.5 * p3 + 40.5 * p4 - 4.5 * p5 + 45.0 * p1 * sG + 4.5 * p2 * sG_2) / (sG_2 * sG_2); + float f = (-95.625 * p0 + 121.5 * p3 - 30.375 * p4 + 4.5 * p5 - 24.75 * p1 * sG - 2.25 * p2 * sG_2) / (sG_2 * sG_3); + + pathSamples[0] = start; + + float ds = sG / float(numSamples - 1); + float s = ds; + vec2 dxy = vec2(0); + vec2 prevCosSin = vec2(cos(start.z), sin(start.z)); + + for (int i = 1; i < numSamples; i++) { + float rot = (((((f * s / 6.0 + e / 5.0) * s + d / 4.0) * s + c / 3.0) * s + b / 2.0) * s + a) * s + start.z; + float curv = ((((f * s + e) * s + d) * s + c) * s + b) * s + a; + + vec2 cosSin = vec2(cos(rot), sin(rot)); + dxy = dxy * vec2(float(i - 1) / float(i)) + (cosSin + prevCosSin) / vec2(2 * i); + + pathSamples[i] = vec4(dxy * vec2(s) + start.xy, rot, curv); + pathSampleCurvRates[i] = b + s * (2.0 * c + s * (3.0 * d + s * (4.0 * e + 5.0 * f * s))); + + s += ds; + prevCosSin = cosSin; + } + + return numSamples; +} + +`; + +const NUM_ACCELERATION_PROFILES = 8; +const NUM_VELOCITY_RANGES = 4; +const NUM_TIME_RANGES = 2; + +const SHARED_UNIFORMS = { + xyslMap: { type: 'outputTexture' }, + slObstacleGrid: { type: 'outputTexture', name: 'slObstacleGridDilated' }, + slDynamicObstacleGrid: { type: 'outputTexture', name: 'slDynamicObstacleGrid', textureType: '2DArray' }, + accelerationProfiles: { type: 'float', length: 5 }, + finalVelocityProfiles: { type: 'float', length: 3 }, + xyCenterPoint: { type: 'vec2' }, + xyGridCellSize: { type: 'float' }, + slCenterPoint: { type: 'vec2' }, + slGridCellSize: { type: 'float'}, + laneCenterLatitude: { type: 'float'}, + laneShoulderLatitude: { type: 'float'}, + laneCostSlope: { type: 'float'}, + lanePreference: { type: 'float' }, + lanePreferenceDiscount: { type: 'float' }, + obstacleHazardCost: { type: 'float' }, + speedLimit: { type: 'float' }, + speedLimitPenalty: { type: 'float' }, + hardAccelerationPenalty: { type: 'float' }, + hardDecelerationPenalty: { type: 'float' }, + softLateralAccelerationLimit: { type: 'float' }, + softLateralAccelerationPenalty: { type: 'float' }, + linearLateralAccelerationPenalty: { type: 'float' }, + dCurvatureMax: { type: 'float' }, + pathSamplingStep: { type: 'float' }, + rearAxleToCenter: { type: 'float' }, + dynamicFrameTime: { type: 'float' } +}; + +function buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime) { + return { + accelerationProfiles: [3.5, -6.5, 2.0, -3.0, 0], + finalVelocityProfiles: [0.999 * config.speedLimit, 1.0, 0.01], + xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y], + xyGridCellSize: config.xyGridCellSize, + slCenterPoint: [slCenterPoint.x, slCenterPoint.y], + slGridCellSize: config.slGridCellSize, + laneCenterLatitude: config.laneCenterLatitude, + laneShoulderLatitude: config.laneShoulderLatitude, + laneCostSlope: config.laneCostSlope, + lanePreference: config.lanePreference, + lanePreferenceDiscount: config.lanePreferenceDiscount, + obstacleHazardCost: config.obstacleHazardCost, + speedLimit: config.speedLimit, + speedLimitPenalty: config.speedLimitPenalty, + hardAccelerationPenalty: config.hardAccelerationPenalty, + hardDecelerationPenalty: config.hardDecelerationPenalty, + softLateralAccelerationLimit: config.softLateralAccelerationLimit, + softLateralAccelerationPenalty: config.softLateralAccelerationPenalty, + linearLateralAccelerationPenalty: config.linearLateralAccelerationPenalty, + dCurvatureMax: config.dCurvatureMax, + pathSamplingStep: config.pathSamplingStep, + rearAxleToCenter: config.rearAxleToCenter, + dynamicFrameTime: dynamicFrameTime + }; +} + +export { + SHARED_SHADER, + SAMPLE_CUBIC_PATH_FN, + SAMPLE_QUINTIC_PATH_FN, + + NUM_ACCELERATION_PROFILES, + NUM_VELOCITY_RANGES, + NUM_TIME_RANGES, + + SHARED_UNIFORMS, + buildUniformValues +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/optimizeCubicPaths.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/optimizeCubicPaths.js new file mode 100644 index 0000000..ba27d9e --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/optimizeCubicPaths.js @@ -0,0 +1,269 @@ +// Config: +// num stations +// num latitudes +// station connectivity +// latitude connectivity +// +// Shared: +// lattice + +const OPTIMIZE_CUBIC_SHARED = ` + +const int NEWTON_ITERATIONS = 16; +const int RELAXATION_ITERATIONS = 16; +const float CONVERGENCE_ERROR = 0.01; + +// These two consts must stay in sync. +const int SIMPSONS_INTERVALS = 8; +//const float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0); +const float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0); + +const float PI = 3.1415926535897932384626433832795; +const float TWO_PI = PI + PI; + +const float RELAXATION_ITERATIONS_F = float(RELAXATION_ITERATIONS); +const float SIMPSONS_INTERVALS_F = float(SIMPSONS_INTERVALS); + +float wrapAngle(float angle) { + angle = mod(angle, TWO_PI); + if (angle <= -PI) return angle + TWO_PI; + else if (angle > PI) return angle - TWO_PI; + return angle; +} + +vec4 iterate(vec4 goal, float p0, float p1, float p2, float p3, float sG) { + float ds = sG / SIMPSONS_INTERVALS_F; + float sG_2 = sG * sG; + float sG_3 = sG_2 * sG; + + vec3 dX_p = vec3(0.0); + vec3 dY_p = vec3(0.0); + vec2 guess = vec2(0.0); + float s = 0.0; + + float theta, cosTheta, sinTheta; + vec3 dT_p; + + for (int i = 0; i <= SIMPSONS_INTERVALS; i++) { + float coeff = SIMPSONS_COEFFS[i]; + + float a = p0; + float b = (-5.5 * p0 + 9.0 * p1 - 4.5 * p2 + p3) / sG; + float c = (9.0 * p0 - 22.5 * p1 + 18.0 * p2 - 4.5 * p3) / sG_2; + float d = (-4.5 * (p0 - 3.0 * p1 + 3.0 * p2 - p3)) / sG_3; + + theta = (((d * s / 4.0 + c / 3.0) * s + b / 2.0) * s + a) * s; + cosTheta = cos(theta); + sinTheta = sin(theta); + + float s_sG = s / sG; + + dT_p = vec3( + // p1 + ((3.375 * s_sG - 7.5) * s_sG + 4.5) * s_sG * s, + + // p2 + ((-3.375 * s_sG + 6.0) * s_sG - 2.25) * s_sG * s, + + // sG + ((3.375 * (p0 - 3.0 * p1 + 3.0 * p2 - p3) * s_sG - 3.0 * (2.0 * p0 - 5.0 * p1 + 4.0 * p2 - p3)) * s_sG + 0.25 * (11.0 * p0 - 18.0 * p1 + 9.0 * p2 - 2.0 * p3)) * s_sG * s_sG + ); + + dX_p -= coeff * sinTheta * dT_p; + dY_p += coeff * cosTheta * dT_p; + + guess += coeff * vec2(cosTheta, sinTheta); + + s += ds; + } + + float hOver3 = sG / SIMPSONS_INTERVALS_F / 3.0; + + vec3 delta; + delta.xy = goal.xy - guess * hOver3; + delta.z = wrapAngle(goal.z - theta); + + if (abs(delta.x) + abs(delta.y) + abs(delta.z) < CONVERGENCE_ERROR) + return vec4(p1, p2, sG, 1.0); + + dX_p.xyz *= hOver3; + dY_p.xyz *= hOver3; + dX_p.z += cosTheta; + dY_p.z += sinTheta; + + mat3 invJacobian = inverse(transpose(mat3(dX_p, dY_p, dT_p))); + + vec3 deltaP = invJacobian * delta; + vec4 params = vec4(p1, p2, sG, 0.0); + params.xyz += deltaP; + + return params; +} + +/* Input: + * start: (vec4) + * x: x position, + * y: y position, + * z: theta rotation, + * w: k curvature + * end: (vec4) + * x: x position, + * y: y position, + * z: theta rotation, + * w: k curvature + * + * Output: (vec4) + * x: p1, + * y: p2, + * z: sG, + * w: 1 if converged, 0 if not + */ + +vec4 optimize(vec4 start, vec4 end) { + // Translate and rotate start and end so that start is at the origin + float sinRot = sin(start.z); + float cosRot = cos(start.z); + + vec4 diff = end - start; + vec4 goal; + goal.xy = mat2(cosRot, -sinRot, sinRot, cosRot) * diff.xy; + goal.z = wrapAngle(diff.z); + goal.w = end.w; + + vec4 originalGoal = goal; + vec4 dGoal; + dGoal.x = 0.0; + dGoal.yzw = goal.yzw / RELAXATION_ITERATIONS_F; + float dK0 = start.w / RELAXATION_ITERATIONS_F; + + // Relax the goal to (x, 0, 0, 0) + goal.yzw = vec3(0, 0, 0); + + // Relax the params to (0, 0, 0, 0, goal.x) + float p0 = 0.0; + float p1 = 0.0; + float p2 = 0.0; + float p3 = 0.0; + float sG = goal.x; + + if (sG < 0.1) return vec4(0.0); + + for (int i = 0; i < RELAXATION_ITERATIONS; i++) { + p0 += dK0; + p3 += dGoal.w; + goal += dGoal; + + vec4 result = iterate(goal, p0, p1, p2, p3, sG); + p1 = result.x; + p2 = result.y; + sG = result.z; + } + + goal = originalGoal; + + for (int i = 0; i < NEWTON_ITERATIONS; i++) { + vec4 result = iterate(goal, p0, p1, p2, p3, sG); + if (result.w == 1.0) { + result.w = step(0.0, result.z); + return result; + } + + p1 = result.x; + p2 = result.y; + sG = result.z; + } + + return vec4(p1, p2, sG, 0.0); +} + +`; + +const OPTIMIZE_CUBIC_KERNEL = OPTIMIZE_CUBIC_SHARED + ` + +// width: station * latitude index +// height: station_conn * lattice_conn +// +// lattice: +// width: latitudes +// height: stations + +vec4 kernel() { + ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize)); + + int endStation = indexes.x / numLatitudes; + int endLatitude = int(mod(float(indexes.x), float(numLatitudes))); + + int startStation = endStation - stationConnectivity + indexes.y / latitudeConnectivity; + int startLatitude = endLatitude - latitudeConnectivity / 2 + int(mod(float(indexes.y), float(latitudeConnectivity))); + + if (startStation < 0 || startStation >= numStations || startLatitude < 0 || startLatitude >= numLatitudes) + return vec4(0.0); + + vec4 start = texelFetch(lattice, ivec2(startLatitude, startStation), 0); + vec4 end = texelFetch(lattice, ivec2(endLatitude, endStation), 0); + + return optimize(start, end); +} + +`; + +const OPTIMIZE_CUBIC_FROM_VEHICLE_KERNEL = OPTIMIZE_CUBIC_SHARED + ` + +vec4 kernel() { + ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize)); + + vec4 start = vec4(0, 0, 0, curvVehicle); + vec4 end = texelFetch(lattice, indexes, 0); + + return optimize(start, end); +} + +`; + +export default { + setUp() { + return [ + { // Cubic paths between lattice nodes + kernel: OPTIMIZE_CUBIC_KERNEL, + output: { name: 'cubicPaths', read: true }, + uniforms: { + lattice: { type: 'sharedTexture' }, + numStations: { type: 'int' }, + numLatitudes: { type: 'int' }, + stationConnectivity: { type: 'int' }, + latitudeConnectivity: { type: 'int' } + } + }, + { // Cubic paths from vehicle to lattice nodes + kernel: OPTIMIZE_CUBIC_FROM_VEHICLE_KERNEL, + output: { name: 'cubicPathsFromVehicle', read: true }, + uniforms: { + lattice: { type: 'sharedTexture' }, + curvVehicle: { type: 'float' } + } + } + ] + }, + + update(config, pose) { + return [ + { // Cubic paths between lattice nodes + width: config.lattice.numStations * config.lattice.numLatitudes, + height: config.lattice.stationConnectivity * config.lattice.latitudeConnectivity, + uniforms: { + numStations: config.lattice.numStations, + numLatitudes: config.lattice.numLatitudes, + stationConnectivity: config.lattice.stationConnectivity, + latitudeConnectivity: config.lattice.latitudeConnectivity, + } + }, + { // Cubic paths from vehicle to lattice nodes + width: config.lattice.numLatitudes, + height: config.lattice.stationConnectivity, + uniforms: { + curvVehicle: pose.curv + } + } + ]; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/optimizeQuinticPaths.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/optimizeQuinticPaths.js new file mode 100644 index 0000000..35901ac --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/optimizeQuinticPaths.js @@ -0,0 +1,204 @@ +const OPTIMIZE_KERNEL = ` + +const int NEWTON_ITERATIONS = 32; +const int RELAXATION_ITERATIONS = 32; +const float CONVERGENCE_ERROR = 0.01; + +// These two consts must stay in sync. +const int SIMPSONS_INTERVALS = 8; +const float SIMPSONS_COEFFS[SIMPSONS_INTERVALS + 1] = float[](1.0, 4.0, 2.0, 4.0, 2.0, 4.0, 2.0, 4.0, 1.0); + +const float PI = 3.1415926535897932384626433832795; +const float TWO_PI = PI + PI; + +const float RELAXATION_ITERATIONS_F = float(RELAXATION_ITERATIONS); +const float SIMPSONS_INTERVALS_F = float(SIMPSONS_INTERVALS); + +float wrapAngle(float angle) { + angle = mod(angle, TWO_PI); + if (angle <= -PI) return angle + TWO_PI; + else if (angle > PI) return angle - TWO_PI; + return angle; +} + +vec4 iterate(vec4 goal, float p0, float p1, float p2, float p3, float p4, float p5, float sG) { + float ds = sG / SIMPSONS_INTERVALS_F; + float sG_2 = sG * sG; + float sG_3 = sG_2 * sG; + + vec3 dX_p = vec3(0.0); + vec3 dY_p = vec3(0.0); + vec2 guess = vec2(0.0); + float s = 0.0; + + float theta, cosTheta, sinTheta; + vec3 dT_p; + + for (int i = 0; i <= SIMPSONS_INTERVALS; i++) { + float coeff = SIMPSONS_COEFFS[i]; + + float a = p0; + float b = p1; + float c = p2 / 2.0; + float d = (-71.875 * p0 + 81.0 * p3 - 10.125 * p4 + p5 - 21.25 * p1 * sG - 2.75 * p2 * sG_2) / sG_3; + float e = (166.5 * p0 - 202.5 * p3 + 40.5 * p4 - 4.5 * p5 + 45.0 * p1 * sG + 4.5 * p2 * sG_2) / (sG_2 * sG_2); + float f = (-95.625 * p0 + 121.5 * p3 - 30.375 * p4 + 4.5 * p5 - 24.75 * p1 * sG - 2.25 * p2 * sG_2) / (sG_2 * sG_3); + + theta = (((((f * s / 6.0 + e / 5.0) * s + d / 4.0) * s + c / 3.0) * s + b / 2.0) * s + a) * s; + cosTheta = cos(theta); + sinTheta = sin(theta); + + float s_2 = s * s; + float s_sG = s / sG; + float s_sG_2 = s_sG * s_sG; + float s_sG_3 = s_sG_2 * s_sG; + float s_sG_4 = s_sG_3 * s_sG; + float s_sG_5 = s_sG_4 * s_sG; + + dT_p = vec3( + // p3 + ((20.25 * s_sG - 40.5) * s_sG + 20.25) * s_sG_3 * s, + + // p4 + ((-5.0625 * s_sG + 8.1) * s_sG - 2.53125) * s_sG_3 * s, + + // sG + (53.90625 * p0 - 60.75 * p3 + 7.59375 * p4 - 0.75 * p5) * s_sG_4 + 10.625 * p1 * s * s_sG_3 + 0.6875 * p2 * s_2 * s_sG_2 + (-133.2 * p0 + 162.0 * p3 - 32.4 * p4 + 3.6 * p5) * s_sG_5 + (-27.0) * p1 * s * s_sG_4 - 1.8 * p2 * s_2 * s_sG_3 + (79.6875 * p0 - 101.25 * p3 + 25.3125 * p4 - 3.75 * p5) * s_sG_5 * s_sG + 16.5 * p1 * s * s_sG_5 + 1.125 * p2 * s_2 * s_sG_4 + ); + + dX_p -= coeff * sinTheta * dT_p; + dY_p += coeff * cosTheta * dT_p; + + guess += coeff * vec2(cosTheta, sinTheta); + + s += ds; + } + + float hOver3 = sG / SIMPSONS_INTERVALS_F / 3.0; + + vec3 delta; + delta.xy = goal.xy - guess * hOver3; + delta.z = wrapAngle(goal.z - theta); + + if (abs(delta.x) + abs(delta.y) + abs(delta.z) < CONVERGENCE_ERROR) + return vec4(p3, p4, sG, 1.0); + + dX_p.xyz *= hOver3; + dY_p.xyz *= hOver3; + dX_p.z += cosTheta; + dY_p.z += sinTheta; + + mat3 invJacobian = inverse(transpose(mat3(dX_p, dY_p, dT_p))); + + vec3 deltaP = invJacobian * delta; + vec4 params = vec4(p3, p4, sG, 0.0); + params.xyz += deltaP; + + return params; +} + +vec4 optimize(vec4 start, vec4 end) { + // Translate and rotate start and end so that start is at the origin + float sinRot = sin(start.z); + float cosRot = cos(start.z); + + vec4 diff = end - start; + vec4 goal; + goal.xy = mat2(cosRot, -sinRot, sinRot, cosRot) * diff.xy; + goal.z = wrapAngle(diff.z); + goal.w = end.w; + + vec4 originalGoal = goal; + vec4 dGoal; + dGoal.x = 0.0; + dGoal.yzw = goal.yzw / RELAXATION_ITERATIONS_F; + float d_K0 = start.w / RELAXATION_ITERATIONS_F; + float d_dK0 = dCurvVehicle / RELAXATION_ITERATIONS_F; + float d_ddK0 = ddCurvVehicle / RELAXATION_ITERATIONS_F; + + // Relax the goal to (x, 0, 0, 0) + goal.yzw = vec3(0, 0, 0); + + // Relax the params to (0, 0, 0, 0, goal.x) + float p0 = 0.0; + float p1 = 0.0; + float p2 = 0.0; + float p3 = 0.0; + float p4 = 0.0; + float p5 = 0.0; + float sG = goal.x; + + if (sG < 0.1) return vec4(0.0); + + for (int i = 0; i < RELAXATION_ITERATIONS; i++) { + p0 += d_K0; + p1 += d_dK0; + p2 += d_ddK0; + p5 += dGoal.w; + goal += dGoal; + + vec4 result = iterate(goal, p0, p1, p2, p3, p4, p5, sG); + p3 = result.x; + p4 = result.y; + sG = result.z; + } + + goal = originalGoal; + + for (int i = 0; i < NEWTON_ITERATIONS; i++) { + vec4 result = iterate(goal, p0, p1, p2, p3, p4, p5, sG); + if (result.w == 1.0) { + result.w = step(0.0, result.z); + return result; + } + + p3 = result.x; + p4 = result.y; + sG = result.z; + } + + return vec4(p3, p4, sG, 0.0); +} + +vec4 kernel() { + ivec2 latticeIndexes = ivec2(kernelPosition * vec2(kernelSize)); + + vec4 start = vec4(0, 0, 0, curvVehicle); + vec4 end = texelFetch(lattice, latticeIndexes, 0); + + return optimize(start, end); +} + +`; + +// Quintic spiral path optimizer +// * Start of paths is the vehicle pose +// * x-pos, y-pos, and rotation aren't needed, since the lattice origin is the vehicle pose +// * So assume position and rotation are 0 +// * Ends of paths are all latitudes within the first (stationConnectivity) stations +export default { + setUp() { + return { + kernel: OPTIMIZE_KERNEL, + output: { name: 'quinticPathsFromVehicle', read: true }, + uniforms: { + lattice: { type: 'sharedTexture' }, + curvVehicle: { type: 'float' }, + dCurvVehicle: { type: 'float' }, + ddCurvVehicle: { type: 'float' } + } + }; + }, + + update(config, pose) { + return { + width: config.lattice.numLatitudes, + height: config.lattice.stationConnectivity, + uniforms: { + curvVehicle: pose.curv, + dCurvVehicle: pose.dCurv, + ddCurvVehicle: pose.ddCurv + } + }; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/pathFromVehicleCosts.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/pathFromVehicleCosts.js new file mode 100644 index 0000000..37d14b6 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/pathFromVehicleCosts.js @@ -0,0 +1,131 @@ +import { SHARED_SHADER, SAMPLE_CUBIC_PATH_FN, SAMPLE_QUINTIC_PATH_FN, NUM_ACCELERATION_PROFILES, SHARED_UNIFORMS, buildUniformValues } from "./graphSearchShared.js"; + +function fromVehiclePathCostsKernel(pathType) { + return SHARED_SHADER + (pathType == 'cubic' ? SAMPLE_CUBIC_PATH_FN : SAMPLE_QUINTIC_PATH_FN) + + +` + +/* Calculate cost of a {cubic|quintic} path from vehicle to (stationConnectivity * numLatitudes * numAccelerations) nodes + * width: numLatitudes + * height: station * numAccelerations + */ +vec4 kernel() { + ivec2 indexes = ivec2(kernelPosition * vec2(kernelSize)); + + int latitude = indexes.x; + int station = indexes.y / numAccelerations; + int accelerationIndex = int(mod(float(indexes.y), float(numAccelerations))); + + vec4 pathStart = vec4(0, 0, 0, curvVehicle); + vec4 pathEnd = texelFetch(lattice, ivec2(latitude, station), 0); + + vec4 pathParams = texelFetch(pathsFromVehicle, ivec2(latitude, station), 0); + + // If the path didn't converge + if (pathParams.w == 0.0) return vec4(-1); + + int numSamples = ${pathType == 'cubic' ? 'sampleCubicPath' : 'sampleQuinticPath'}(pathStart, pathEnd, pathParams); + float pathLength = pathParams.z; + + if (numSamples < 2) return vec4(-1); + + float averageStaticCost = calculateAverageStaticCost(numSamples); + if (averageStaticCost < 0.0) return vec4(-1); + + int slIndex = station * kernelSize.x + latitude; + float hysteresisAdjustment = (slIndex == firstLatticePoint || slIndex == secondLatticePoint) ? 0.0 : hysteresisDiscount; + averageStaticCost += hysteresisAdjustment; + + vec3 avt = calculateAVT(accelerationIndex, velocityVehicle, 0.0, pathLength); + float acceleration = avt.x; + float finalVelocity = avt.y; + float finalTime = avt.z; + + float averageDynamicCost = calculateAverageDynamicCost(numSamples, pathLength, 0.0, velocityVehicle, acceleration, 1.0 / 0.0); + if (averageDynamicCost < 0.0) return vec4(-1); + + averageDynamicCost += accelerationChangePenalty; + + // The cost of a trajectory is the average sample cost scaled by the path length + float totalCost = (averageStaticCost + averageDynamicCost + ${pathType == 'cubic' ? '(cubicPathPenalty * velocityVehicle * velocityVehicle)' : '0.0'}) * pathLength; + ${pathType != 'cubic' ? 'totalCost = -1.0;' : ''} + + return vec4(totalCost, finalVelocity, finalTime, ${pathType == 'cubic' ? '-2' : '-1'}); +} + +`; +} + +export default { + setUp() { + return [ + { + kernel: fromVehiclePathCostsKernel('cubic'), + output: { name: 'cubicPathFromVehicleCosts' }, + uniforms: Object.assign({}, SHARED_UNIFORMS, { + lattice: { type: 'sharedTexture' }, + pathsFromVehicle: { type: 'outputTexture', name: 'cubicPathsFromVehicle' }, + firstLatticePoint: { type: 'int' }, + secondLatticePoint: { type: 'int' }, + velocityVehicle: { type: 'float' }, + curvVehicle: { type: 'float' }, + numAccelerations: { type: 'int' }, + cubicPathPenalty: { type: 'float' }, + hysteresisDiscount: { type: 'float' }, + accelerationChangePenalty: { type: 'float' } + }) + }, + { + kernel: fromVehiclePathCostsKernel('quintic'), + output: { name: 'quinticPathFromVehicleCosts' }, + uniforms: Object.assign({}, SHARED_UNIFORMS, { + lattice: { type: 'sharedTexture' }, + pathsFromVehicle: { type: 'outputTexture', name: 'quinticPathsFromVehicle' }, + firstLatticePoint: { type: 'int' }, + secondLatticePoint: { type: 'int' }, + velocityVehicle: { type: 'float' }, + curvVehicle: { type: 'float' }, + dCurvVehicle: { type: 'float' }, + ddCurvVehicle: { type: 'float' }, + numAccelerations: { type: 'int' }, + hysteresisDiscount: { type: 'float' }, + accelerationChangePenalty: { type: 'float' } + }) + } + ]; + }, + + update(config, pose, xyCenterPoint, slCenterPoint, firstLatticePoint, secondLatticePoint, dynamicFrameTime) { + return [ + { + width: config.lattice.numLatitudes, + height: config.lattice.stationConnectivity * NUM_ACCELERATION_PROFILES, + uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), { + firstLatticePoint: firstLatticePoint, + secondLatticePoint: secondLatticePoint, + velocityVehicle: pose.velocity, + curvVehicle: pose.curv, + numAccelerations: NUM_ACCELERATION_PROFILES, + cubicPathPenalty: config.cubicPathPenalty, + hysteresisDiscount: config.hysteresisDiscount, + accelerationChangePenalty: config.accelerationChangePenalty + }) + }, + { + width: config.lattice.numLatitudes, + height: config.lattice.stationConnectivity * NUM_ACCELERATION_PROFILES, + uniforms: Object.assign({}, buildUniformValues(config, xyCenterPoint, slCenterPoint, dynamicFrameTime), { + firstLatticePoint: firstLatticePoint, + secondLatticePoint: secondLatticePoint, + velocityVehicle: pose.velocity, + curvVehicle: pose.curv, + dCurvVehicle: pose.dCurv, + ddCurvVehicle: pose.ddCurv, + numAccelerations: NUM_ACCELERATION_PROFILES, + hysteresisDiscount: config.hysteresisDiscount, + accelerationChangePenalty: config.accelerationChangePenalty + }) + } + ]; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slDynamicObstacleGrid.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slDynamicObstacleGrid.js new file mode 100644 index 0000000..5bdeaed --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slDynamicObstacleGrid.js @@ -0,0 +1,115 @@ +const DYNAMIC_OBSTACLE_VERTEX_SHADER = `#version 300 es +uniform mat3 xform; +in vec3 position; +out float color; + +void main(void) { + gl_Position = vec4((xform * vec3(position.xy, 1)).xy, position.z, 1); + + // The z coordinate is 0.25 for collision zone and 0.75 for hazard zone, + // so that the collision zone is drawn on top. + // Convert this to 1.0 for collision zone, 0.5 for hazard zone + color = (1.0 - step(0.5, position.z)) * 0.5 + 0.5; +} +`; + +const DYNAMIC_OBSTACLE_KERNEL = ` + in float color; + + vec4 kernel() { + return vec4(color, 0, 0, 1); + } +`; + +let obstacleVertices; +let obstacleXform; +const numDynamicFrames = 20; + +// Draw dynamic obstacle triangles to SL-space obstacle grid +export default { + setUp() { + return { + kernel: DYNAMIC_OBSTACLE_KERNEL, + vertexShader: DYNAMIC_OBSTACLE_VERTEX_SHADER, + output: { name: 'slDynamicObstacleGrid', textureType: '2DArray', depth: numDynamicFrames }, + draw: (gpgpu, program) => { + const gl = gpgpu.gl; + + gl.enable(gl.DEPTH_TEST); + + const renderbuffer = gl.createRenderbuffer(); + gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer); + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, program.inputWidth, program.inputHeight); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuffer); + + for (let frame = 0; frame < numDynamicFrames; frame++) { + gl.framebufferTextureLayer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, program.outputTexture, 0, frame); + const frameBufferStatus = (gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_COMPLETE); + if (!frameBufferStatus) + throw new Error('Error attaching float texture to framebuffer. Your device is probably incompatible.'); + + gl.clearColor(0, 0, 0, 0); + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + + if (obstacleVertices[frame].length > 0) { + const buf = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, buf); + gl.bufferData(gl.ARRAY_BUFFER, obstacleVertices[frame], gl.STATIC_DRAW); + gl.enableVertexAttribArray(program.positionLocation); + gl.vertexAttribPointer(program.positionLocation, 3, gl.FLOAT, false, 0, 0); + + const xformLocation = gl.getUniformLocation(program.glProgram, 'xform'); + gl.uniformMatrix3fv(xformLocation, false, obstacleXform.elements); + + gl.drawArrays(gl.TRIANGLES, 0, obstacleVertices[frame].length / 3); + + if (frame == 0) { + const obstacleGrid = new Float32Array(program.inputWidth * program.inputHeight * 4); + gl.readPixels(0, 0, program.inputWidth, program.inputHeight, gl.RGBA, gl.FLOAT, obstacleGrid); + gpgpu._dynamicObstacleGrid = obstacleGrid; + } + + gl.deleteBuffer(buf); + } + } + + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + gl.deleteRenderbuffer(renderbuffer); + gl.disable(gl.DEPTH_TEST); + } + }; + }, + + update(config, slWidth, slHeight, slCenterPoint, vehicleStation, startTime, dynamicFrameTime, dynamicObstacles) { + obstacleVertices = []; + + let time = startTime; + for (let frame = 0; frame < numDynamicFrames; frame++) { + const vertices = Array.prototype.concat.apply([], dynamicObstacles.map(o => o.verticesInTimeRange(time, time + dynamicFrameTime, config))); + obstacleVertices.push(new Float32Array(vertices)); + time += dynamicFrameTime; + } + + const translate = new THREE.Matrix3(); + translate.set( + 1, 0, -slCenterPoint.x - vehicleStation, + 0, 1, -slCenterPoint.y, + 0, 0, 1 + ); + + const scale = new THREE.Matrix3(); + scale.set( + 2 / (slWidth * config.slGridCellSize), 0, 0, + 0, 2 / (slHeight * config.slGridCellSize), 0, + 0, 0, 1 + ); + + obstacleXform = scale.multiply(translate); + + return { + width: slWidth, + height: slHeight + } + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slObstacleGrid.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slObstacleGrid.js new file mode 100644 index 0000000..2694146 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slObstacleGrid.js @@ -0,0 +1,51 @@ +const SL_OBSTACLE_KERNEL = ` + +vec4 kernel() { + float centerlineWidth = float(textureSize(centerline, 0).x); + + vec2 sl = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(slGridCellSize) + slCenterPoint; + float centerlineCoord = sl.x / centerlineStationInterval / centerlineWidth * (centerlineWidth - 1.0) / centerlineWidth + (0.5 / centerlineWidth); + if (centerlineCoord < 0.0 || centerlineCoord > 1.0) return vec4(0); + + vec3 centerlineSample = texture(centerline, vec2(centerlineCoord, 0)).xyz; + float perpindicular = centerlineSample.z + radians(90.0); + vec2 xy = centerlineSample.xy + sl.yy * vec2(cos(perpindicular), sin(perpindicular)); + + vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyObstacleGrid, 0)) / vec2(xyGridCellSize) + 0.5; + return texture(xyObstacleGrid, xyTexCoords); +} + +`; + +// Convert XY-space obstacle grid to SL-space obstacle grid +export default { + setUp() { + return { + kernel: SL_OBSTACLE_KERNEL, + output: { name: 'slObstacleGrid' }, + uniforms: { + xyObstacleGrid: { type: 'outputTexture' }, + slGridCellSize: { type: 'float' }, + xyGridCellSize: { type: 'float' }, + slCenterPoint: { type: 'vec2' }, + xyCenterPoint: { type: 'vec2' }, + centerlineStationInterval: { type: 'float' }, + centerline: { type: 'sharedTexture' } + } + } + }, + + update(config, slWidth, slHeight, slCenterPoint, xyCenterPoint) { + return { + width: slWidth, + height: slHeight, + uniforms: { + slGridCellSize: config.slGridCellSize, + xyGridCellSize: config.xyGridCellSize, + slCenterPoint: [slCenterPoint.x, slCenterPoint.y], + xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y], + centerlineStationInterval: config.centerlineStationInterval + } + } + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slObstacleGridDilation.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slObstacleGridDilation.js new file mode 100644 index 0000000..6c9acaa --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/slObstacleGridDilation.js @@ -0,0 +1,72 @@ +const SL_OBSTACLE_DILATION_KERNEL = ` + +// TODO: test performance of returning early if non-zero pixel found +vec4 kernel() { + float val = 0.0; + + for (int d = 0; d <= collisionDilation; d++) { + val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(d)).r); + val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(-d)).r); + } + + for (int d = collisionDilation + 1; d <= collisionDilation + hazardDilation; d++) { + val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(d)).r * 0.5); + val = max(val, texture(slObstacleGrid, kernelPosition + delta * vec2(-d)).r * 0.5); + } + + val = max(val, step(0.1, val) * 0.5); + + return vec4(val, 0, 0, 1); +} + +`; + +export default { + setUp() { + return [ + { // SL-space obstacle grid S dilation + kernel: SL_OBSTACLE_DILATION_KERNEL, + output: { name: 'slObstacleGridStationDilated' }, + uniforms: { + slObstacleGrid: { type: 'outputTexture' }, + delta: { type: 'vec2' }, + collisionDilation: { type: 'int' }, + hazardDilation: { type: 'int' } + } + }, + { // SL-space obstacle grid L dilation + kernel: SL_OBSTACLE_DILATION_KERNEL, + output: { name: 'slObstacleGridDilated' }, + uniforms: { + slObstacleGrid: { type: 'outputTexture', name: 'slObstacleGridStationDilated' }, + delta: { type: 'vec2' }, + collisionDilation: { type: 'int' }, + hazardDilation: { type: 'int' } + } + } + ]; + }, + + update(config, slWidth, slHeight) { + return [ + { // SL-space obstacle grid S dilation + width: slWidth, + height: slHeight, + uniforms: { + delta: [1 / slWidth, 0], + collisionDilation: Math.ceil(config.collisionDilationS / config.slGridCellSize), + hazardDilation: Math.ceil(config.hazardDilationS / config.slGridCellSize) + } + }, + { // SL-space obstacle grid L dilation + width: slWidth, + height: slHeight, + uniforms: { + delta: [0, 1 / slHeight], + collisionDilation: Math.ceil(config.collisionDilationL / config.slGridCellSize), + hazardDilation: Math.ceil(config.hazardDilationL / config.slGridCellSize) + } + } + ]; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyObstacleCostGrid.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyObstacleCostGrid.js new file mode 100644 index 0000000..0b4eb18 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyObstacleCostGrid.js @@ -0,0 +1,44 @@ +const XY_OBSTACLE_COST_KERNEL = ` + +vec4 kernel() { + vec2 xy = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(xyGridCellSize) + xyCenterPoint; + + vec2 xyTexCoords = (xy - xyCenterPoint) / vec2(textureSize(xyslMap, 0)) / vec2(xyGridCellSize) + 0.5; + vec2 sl = texture(xyslMap, xyTexCoords).xy; + + vec2 slTexCoords = (sl - slCenterPoint) / vec2(textureSize(slObstacleGrid, 0)) / vec2(slGridCellSize) + 0.5; + return texture(slObstacleGrid, slTexCoords); +} + +`; + +// Build XY obstacle costs using XYSL map +export default { + setUp() { + return { + kernel: XY_OBSTACLE_COST_KERNEL, + output: { name: 'xyObstacleCostGrid', read: true }, + uniforms: { + xyslMap: { type: 'outputTexture' }, + slObstacleGrid: { type: 'outputTexture', name: 'slObstacleGridDilated' }, + xyCenterPoint: { type: 'vec2' }, + xyGridCellSize: { type: 'float'}, + slCenterPoint: { type: 'vec2' }, + slGridCellSize: { type: 'float'} + } + }; + }, + + update(config, xyWidth, xyHeight, xyCenterPoint, slCenterPoint) { + return { + width: xyWidth, + height: xyHeight, + uniforms: { + xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y], + xyGridCellSize: config.xyGridCellSize, + slCenterPoint: [slCenterPoint.x, slCenterPoint.y], + slGridCellSize: config.slGridCellSize + } + }; + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyObstacleGrid.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyObstacleGrid.js new file mode 100644 index 0000000..2c43835 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyObstacleGrid.js @@ -0,0 +1,75 @@ +const OBSTACLE_VERTEX_SHADER = `#version 300 es +uniform mat3 xform; +in vec2 position; + +void main(void) { + gl_Position = vec4((xform * vec3(position, 1)).xy, 0, 1); +} +`; + +const OBSTACLE_KERNEL = ` + vec4 kernel() { + return vec4(1, 0, 0, 1); + } +`; + +let obstacleVertices; +let obstacleXform; + +// Draw obstacle triangles to XY-space obstacle grid +export default { + setUp() { + return { + kernel: OBSTACLE_KERNEL, + vertexShader: OBSTACLE_VERTEX_SHADER, + output: { name: 'xyObstacleGrid' }, + draw: (gpgpu, program) => { + const gl = gpgpu.gl; + + gl.clearColor(0, 0, 0, 0); + gl.clear(gl.COLOR_BUFFER_BIT); + + if (obstacleVertices.length > 0) { + const buf = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, buf); + gl.bufferData(gl.ARRAY_BUFFER, obstacleVertices, gl.STATIC_DRAW); + gl.enableVertexAttribArray(program.positionLocation); + gl.vertexAttribPointer(program.positionLocation, 2, gl.FLOAT, false, 0, 0); + + const xformLocation = gl.getUniformLocation(program.glProgram, 'xform'); + gl.uniformMatrix3fv(xformLocation, false, obstacleXform.elements); + + gl.drawArrays(gl.TRIANGLES, 0, obstacleVertices.length / 2); + + gl.deleteBuffer(buf); + } + } + }; + }, + + update(config, xyWidth, xyHeight, xyCenterPoint, vehicleXform, obstacles) { + obstacleVertices = new Float32Array(Array.prototype.concat.apply([], obstacles.map(o => o.vertices))); + + const translate = new THREE.Matrix3(); + translate.set( + 1, 0, -xyCenterPoint.x, + 0, 1, -xyCenterPoint.y, + 0, 0, 1 + ); + + const scale = new THREE.Matrix3(); + scale.set( + 2 / (xyWidth * config.xyGridCellSize), 0, 0, + 0, 2 / (xyHeight * config.xyGridCellSize), 0, + 0, 0, 1 + ); + + obstacleXform = scale.multiply(translate).multiply(vehicleXform); + + return { + width: xyWidth, + height: xyHeight + } + } +} diff --git a/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyslMap.js b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyslMap.js new file mode 100644 index 0000000..cb61ba1 --- /dev/null +++ b/seminar06-planning/simulator/js/autonomy/path-planning/gpgpu-programs/xyslMap.js @@ -0,0 +1,88 @@ +const XYSL_MAP_KERNEL = ` + +vec4 kernel() { + vec2 xy = (kernelPosition - 0.5) * vec2(kernelSize) * vec2(xyGridCellSize) + xyCenterPoint; + + int numSamples = textureSize(centerline, 0).x; + int closest = 0; + float closestDist = distance(xy, texelFetch(centerline, ivec2(0, 0), 0).xy); + for (int i = 1; i < numSamples; i++) { + float dist = distance(xy, texelFetch(centerline, ivec2(i, 0), 0).xy); + if (dist < closestDist) { + closestDist = dist; + closest = i; + } + } + + vec2 closestPos = texelFetch(centerline, ivec2(closest, 0), 0).xy; + vec2 prev, next; + int prevIndex, nextIndex; + + if (closest == 0) { + prevIndex = 0; + nextIndex = 1; + prev = closestPos; + next = texelFetch(centerline, ivec2(1, 0), 0).xy; + } else if (closest == numSamples - 1) { + prevIndex = closest - 1; + nextIndex = closest; + prev = texelFetch(centerline, ivec2(prevIndex, 0), 0).xy; + next = closestPos; + } else { + vec2 before = texelFetch(centerline, ivec2(closest - 1, 0), 0).xy; + vec2 after = texelFetch(centerline, ivec2(closest + 1, 0), 0).xy; + + if (distance(before, xy) < distance(after, xy)) { + prevIndex = closest - 1; + nextIndex = closest; + prev = before; + next = closestPos; + } else { + prevIndex = closest; + nextIndex = closest + 1; + prev = closestPos; + next = after; + } + } + + float dist = distance(prev, next); + float progress = clamp(dot(xy - prev, next - prev) / dist / dist, 0.0, 1.0); + vec2 projectedPos = (next - prev) * vec2(progress) + prev; + + return vec4( + (float(prevIndex) + progress) * centerlineStationInterval, + sign(determinant(mat2(next - prev, xy - prev))) * distance(xy, projectedPos), + 0, + 0 + ); +} + +`; + +// Build XY-SL map +export default { + setUp() { + return { + kernel: XYSL_MAP_KERNEL, + output: { name: 'xyslMap', filter: 'linear' }, + uniforms: { + centerline: { type: 'sharedTexture' }, + xyCenterPoint: { type: 'vec2' }, + xyGridCellSize: { type: 'float'}, + centerlineStationInterval: { type: 'float'} + } + }; + }, + + update(config, xyWidth, xyHeight, xyCenterPoint) { + return { + width: xyWidth, + height: xyHeight, + uniforms: { + xyCenterPoint: [xyCenterPoint.x, xyCenterPoint.y], + xyGridCellSize: config.xyGridCellSize, + centerlineStationInterval: config.centerlineStationInterval + } + }; + } +} diff --git a/seminar06-planning/simulator/js/objects/BufferGeometryUtils.js b/seminar06-planning/simulator/js/objects/BufferGeometryUtils.js new file mode 100644 index 0000000..f620433 --- /dev/null +++ b/seminar06-planning/simulator/js/objects/BufferGeometryUtils.js @@ -0,0 +1,1371 @@ +import { + BufferAttribute, + BufferGeometry, + Float32BufferAttribute, + InstancedBufferAttribute, + InterleavedBuffer, + InterleavedBufferAttribute, + TriangleFanDrawMode, + TriangleStripDrawMode, + TrianglesDrawMode, + Vector3, +} from 'three'; + +function computeMikkTSpaceTangents( geometry, MikkTSpace, negateSign = true ) { + + if ( ! MikkTSpace || ! MikkTSpace.isReady ) { + + throw new Error( 'BufferGeometryUtils: Initialized MikkTSpace library required.' ); + + } + + if ( ! geometry.hasAttribute( 'position' ) || ! geometry.hasAttribute( 'normal' ) || ! geometry.hasAttribute( 'uv' ) ) { + + throw new Error( 'BufferGeometryUtils: Tangents require "position", "normal", and "uv" attributes.' ); + + } + + function getAttributeArray( attribute ) { + + if ( attribute.normalized || attribute.isInterleavedBufferAttribute ) { + + const dstArray = new Float32Array( attribute.count * attribute.itemSize ); + + for ( let i = 0, j = 0; i < attribute.count; i ++ ) { + + dstArray[ j ++ ] = attribute.getX( i ); + dstArray[ j ++ ] = attribute.getY( i ); + + if ( attribute.itemSize > 2 ) { + + dstArray[ j ++ ] = attribute.getZ( i ); + + } + + } + + return dstArray; + + } + + if ( attribute.array instanceof Float32Array ) { + + return attribute.array; + + } + + return new Float32Array( attribute.array ); + + } + + // MikkTSpace algorithm requires non-indexed input. + + const _geometry = geometry.index ? geometry.toNonIndexed() : geometry; + + // Compute vertex tangents. + + const tangents = MikkTSpace.generateTangents( + + getAttributeArray( _geometry.attributes.position ), + getAttributeArray( _geometry.attributes.normal ), + getAttributeArray( _geometry.attributes.uv ) + + ); + + // Texture coordinate convention of glTF differs from the apparent + // default of the MikkTSpace library; .w component must be flipped. + + if ( negateSign ) { + + for ( let i = 3; i < tangents.length; i += 4 ) { + + tangents[ i ] *= - 1; + + } + + } + + // + + _geometry.setAttribute( 'tangent', new BufferAttribute( tangents, 4 ) ); + + if ( geometry !== _geometry ) { + + geometry.copy( _geometry ); + + } + + return geometry; + +} + +/** + * @param {Array} geometries + * @param {Boolean} useGroups + * @return {BufferGeometry} + */ +function mergeGeometries( geometries, useGroups = false ) { + + const isIndexed = geometries[ 0 ].index !== null; + + const attributesUsed = new Set( Object.keys( geometries[ 0 ].attributes ) ); + const morphAttributesUsed = new Set( Object.keys( geometries[ 0 ].morphAttributes ) ); + + const attributes = {}; + const morphAttributes = {}; + + const morphTargetsRelative = geometries[ 0 ].morphTargetsRelative; + + const mergedGeometry = new BufferGeometry(); + + let offset = 0; + + for ( let i = 0; i < geometries.length; ++ i ) { + + const geometry = geometries[ i ]; + let attributesCount = 0; + + // ensure that all geometries are indexed, or none + + if ( isIndexed !== ( geometry.index !== null ) ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.' ); + return null; + + } + + // gather attributes, exit early if they're different + + for ( const name in geometry.attributes ) { + + if ( ! attributesUsed.has( name ) ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. All geometries must have compatible attributes; make sure "' + name + '" attribute exists among all geometries, or in none of them.' ); + return null; + + } + + if ( attributes[ name ] === undefined ) attributes[ name ] = []; + + attributes[ name ].push( geometry.attributes[ name ] ); + + attributesCount ++; + + } + + // ensure geometries have the same number of attributes + + if ( attributesCount !== attributesUsed.size ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. Make sure all geometries have the same number of attributes.' ); + return null; + + } + + // gather morph attributes, exit early if they're different + + if ( morphTargetsRelative !== geometry.morphTargetsRelative ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphTargetsRelative must be consistent throughout all geometries.' ); + return null; + + } + + for ( const name in geometry.morphAttributes ) { + + if ( ! morphAttributesUsed.has( name ) ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. .morphAttributes must be consistent throughout all geometries.' ); + return null; + + } + + if ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = []; + + morphAttributes[ name ].push( geometry.morphAttributes[ name ] ); + + } + + if ( useGroups ) { + + let count; + + if ( isIndexed ) { + + count = geometry.index.count; + + } else if ( geometry.attributes.position !== undefined ) { + + count = geometry.attributes.position.count; + + } else { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index ' + i + '. The geometry must have either an index or a position attribute' ); + return null; + + } + + mergedGeometry.addGroup( offset, count, i ); + + offset += count; + + } + + } + + // merge indices + + if ( isIndexed ) { + + let indexOffset = 0; + const mergedIndex = []; + + for ( let i = 0; i < geometries.length; ++ i ) { + + const index = geometries[ i ].index; + + for ( let j = 0; j < index.count; ++ j ) { + + mergedIndex.push( index.getX( j ) + indexOffset ); + + } + + indexOffset += geometries[ i ].attributes.position.count; + + } + + mergedGeometry.setIndex( mergedIndex ); + + } + + // merge attributes + + for ( const name in attributes ) { + + const mergedAttribute = mergeAttributes( attributes[ name ] ); + + if ( ! mergedAttribute ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' attribute.' ); + return null; + + } + + mergedGeometry.setAttribute( name, mergedAttribute ); + + } + + // merge morph attributes + + for ( const name in morphAttributes ) { + + const numMorphTargets = morphAttributes[ name ][ 0 ].length; + + if ( numMorphTargets === 0 ) break; + + mergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {}; + mergedGeometry.morphAttributes[ name ] = []; + + for ( let i = 0; i < numMorphTargets; ++ i ) { + + const morphAttributesToMerge = []; + + for ( let j = 0; j < morphAttributes[ name ].length; ++ j ) { + + morphAttributesToMerge.push( morphAttributes[ name ][ j ][ i ] ); + + } + + const mergedMorphAttribute = mergeAttributes( morphAttributesToMerge ); + + if ( ! mergedMorphAttribute ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the ' + name + ' morphAttribute.' ); + return null; + + } + + mergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute ); + + } + + } + + return mergedGeometry; + +} + +/** + * @param {Array} attributes + * @return {BufferAttribute} + */ +function mergeAttributes( attributes ) { + + let TypedArray; + let itemSize; + let normalized; + let gpuType = - 1; + let arrayLength = 0; + + for ( let i = 0; i < attributes.length; ++ i ) { + + const attribute = attributes[ i ]; + + if ( TypedArray === undefined ) TypedArray = attribute.array.constructor; + if ( TypedArray !== attribute.array.constructor ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.' ); + return null; + + } + + if ( itemSize === undefined ) itemSize = attribute.itemSize; + if ( itemSize !== attribute.itemSize ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.' ); + return null; + + } + + if ( normalized === undefined ) normalized = attribute.normalized; + if ( normalized !== attribute.normalized ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.' ); + return null; + + } + + if ( gpuType === - 1 ) gpuType = attribute.gpuType; + if ( gpuType !== attribute.gpuType ) { + + console.error( 'THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes.' ); + return null; + + } + + arrayLength += attribute.count * itemSize; + + } + + const array = new TypedArray( arrayLength ); + const result = new BufferAttribute( array, itemSize, normalized ); + let offset = 0; + + for ( let i = 0; i < attributes.length; ++ i ) { + + const attribute = attributes[ i ]; + if ( attribute.isInterleavedBufferAttribute ) { + + const tupleOffset = offset / itemSize; + for ( let j = 0, l = attribute.count; j < l; j ++ ) { + + for ( let c = 0; c < itemSize; c ++ ) { + + const value = attribute.getComponent( j, c ); + result.setComponent( j + tupleOffset, c, value ); + + } + + } + + } else { + + array.set( attribute.array, offset ); + + } + + offset += attribute.count * itemSize; + + } + + if ( gpuType !== undefined ) { + + result.gpuType = gpuType; + + } + + return result; + +} + +/** + * @param {BufferAttribute} + * @return {BufferAttribute} + */ +export function deepCloneAttribute( attribute ) { + + if ( attribute.isInstancedInterleavedBufferAttribute || attribute.isInterleavedBufferAttribute ) { + + return deinterleaveAttribute( attribute ); + + } + + if ( attribute.isInstancedBufferAttribute ) { + + return new InstancedBufferAttribute().copy( attribute ); + + } + + return new BufferAttribute().copy( attribute ); + +} + +/** + * @param {Array} attributes + * @return {Array} + */ +function interleaveAttributes( attributes ) { + + // Interleaves the provided attributes into an InterleavedBuffer and returns + // a set of InterleavedBufferAttributes for each attribute + let TypedArray; + let arrayLength = 0; + let stride = 0; + + // calculate the length and type of the interleavedBuffer + for ( let i = 0, l = attributes.length; i < l; ++ i ) { + + const attribute = attributes[ i ]; + + if ( TypedArray === undefined ) TypedArray = attribute.array.constructor; + if ( TypedArray !== attribute.array.constructor ) { + + console.error( 'AttributeBuffers of different types cannot be interleaved' ); + return null; + + } + + arrayLength += attribute.array.length; + stride += attribute.itemSize; + + } + + // Create the set of buffer attributes + const interleavedBuffer = new InterleavedBuffer( new TypedArray( arrayLength ), stride ); + let offset = 0; + const res = []; + const getters = [ 'getX', 'getY', 'getZ', 'getW' ]; + const setters = [ 'setX', 'setY', 'setZ', 'setW' ]; + + for ( let j = 0, l = attributes.length; j < l; j ++ ) { + + const attribute = attributes[ j ]; + const itemSize = attribute.itemSize; + const count = attribute.count; + const iba = new InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, attribute.normalized ); + res.push( iba ); + + offset += itemSize; + + // Move the data for each attribute into the new interleavedBuffer + // at the appropriate offset + for ( let c = 0; c < count; c ++ ) { + + for ( let k = 0; k < itemSize; k ++ ) { + + iba[ setters[ k ] ]( c, attribute[ getters[ k ] ]( c ) ); + + } + + } + + } + + return res; + +} + +// returns a new, non-interleaved version of the provided attribute +export function deinterleaveAttribute( attribute ) { + + const cons = attribute.data.array.constructor; + const count = attribute.count; + const itemSize = attribute.itemSize; + const normalized = attribute.normalized; + + const array = new cons( count * itemSize ); + let newAttribute; + if ( attribute.isInstancedInterleavedBufferAttribute ) { + + newAttribute = new InstancedBufferAttribute( array, itemSize, normalized, attribute.meshPerAttribute ); + + } else { + + newAttribute = new BufferAttribute( array, itemSize, normalized ); + + } + + for ( let i = 0; i < count; i ++ ) { + + newAttribute.setX( i, attribute.getX( i ) ); + + if ( itemSize >= 2 ) { + + newAttribute.setY( i, attribute.getY( i ) ); + + } + + if ( itemSize >= 3 ) { + + newAttribute.setZ( i, attribute.getZ( i ) ); + + } + + if ( itemSize >= 4 ) { + + newAttribute.setW( i, attribute.getW( i ) ); + + } + + } + + return newAttribute; + +} + +// deinterleaves all attributes on the geometry +export function deinterleaveGeometry( geometry ) { + + const attributes = geometry.attributes; + const morphTargets = geometry.morphTargets; + const attrMap = new Map(); + + for ( const key in attributes ) { + + const attr = attributes[ key ]; + if ( attr.isInterleavedBufferAttribute ) { + + if ( ! attrMap.has( attr ) ) { + + attrMap.set( attr, deinterleaveAttribute( attr ) ); + + } + + attributes[ key ] = attrMap.get( attr ); + + } + + } + + for ( const key in morphTargets ) { + + const attr = morphTargets[ key ]; + if ( attr.isInterleavedBufferAttribute ) { + + if ( ! attrMap.has( attr ) ) { + + attrMap.set( attr, deinterleaveAttribute( attr ) ); + + } + + morphTargets[ key ] = attrMap.get( attr ); + + } + + } + +} + +/** + * @param {BufferGeometry} geometry + * @return {number} + */ +function estimateBytesUsed( geometry ) { + + // Return the estimated memory used by this geometry in bytes + // Calculate using itemSize, count, and BYTES_PER_ELEMENT to account + // for InterleavedBufferAttributes. + let mem = 0; + for ( const name in geometry.attributes ) { + + const attr = geometry.getAttribute( name ); + mem += attr.count * attr.itemSize * attr.array.BYTES_PER_ELEMENT; + + } + + const indices = geometry.getIndex(); + mem += indices ? indices.count * indices.itemSize * indices.array.BYTES_PER_ELEMENT : 0; + return mem; + +} + +/** + * @param {BufferGeometry} geometry + * @param {number} tolerance + * @return {BufferGeometry} + */ +function mergeVertices( geometry, tolerance = 1e-4 ) { + + tolerance = Math.max( tolerance, Number.EPSILON ); + + // Generate an index buffer if the geometry doesn't have one, or optimize it + // if it's already available. + const hashToIndex = {}; + const indices = geometry.getIndex(); + const positions = geometry.getAttribute( 'position' ); + const vertexCount = indices ? indices.count : positions.count; + + // next value for triangle indices + let nextIndex = 0; + + // attributes and new attribute arrays + const attributeNames = Object.keys( geometry.attributes ); + const tmpAttributes = {}; + const tmpMorphAttributes = {}; + const newIndices = []; + const getters = [ 'getX', 'getY', 'getZ', 'getW' ]; + const setters = [ 'setX', 'setY', 'setZ', 'setW' ]; + + // Initialize the arrays, allocating space conservatively. Extra + // space will be trimmed in the last step. + for ( let i = 0, l = attributeNames.length; i < l; i ++ ) { + + const name = attributeNames[ i ]; + const attr = geometry.attributes[ name ]; + + tmpAttributes[ name ] = new BufferAttribute( + new attr.array.constructor( attr.count * attr.itemSize ), + attr.itemSize, + attr.normalized + ); + + const morphAttr = geometry.morphAttributes[ name ]; + if ( morphAttr ) { + + tmpMorphAttributes[ name ] = new BufferAttribute( + new morphAttr.array.constructor( morphAttr.count * morphAttr.itemSize ), + morphAttr.itemSize, + morphAttr.normalized + ); + + } + + } + + // convert the error tolerance to an amount of decimal places to truncate to + const halfTolerance = tolerance * 0.5; + const exponent = Math.log10( 1 / tolerance ); + const hashMultiplier = Math.pow( 10, exponent ); + const hashAdditive = halfTolerance * hashMultiplier; + for ( let i = 0; i < vertexCount; i ++ ) { + + const index = indices ? indices.getX( i ) : i; + + // Generate a hash for the vertex attributes at the current index 'i' + let hash = ''; + for ( let j = 0, l = attributeNames.length; j < l; j ++ ) { + + const name = attributeNames[ j ]; + const attribute = geometry.getAttribute( name ); + const itemSize = attribute.itemSize; + + for ( let k = 0; k < itemSize; k ++ ) { + + // double tilde truncates the decimal value + hash += `${ ~ ~ ( attribute[ getters[ k ] ]( index ) * hashMultiplier + hashAdditive ) },`; + + } + + } + + // Add another reference to the vertex if it's already + // used by another index + if ( hash in hashToIndex ) { + + newIndices.push( hashToIndex[ hash ] ); + + } else { + + // copy data to the new index in the temporary attributes + for ( let j = 0, l = attributeNames.length; j < l; j ++ ) { + + const name = attributeNames[ j ]; + const attribute = geometry.getAttribute( name ); + const morphAttr = geometry.morphAttributes[ name ]; + const itemSize = attribute.itemSize; + const newarray = tmpAttributes[ name ]; + const newMorphArrays = tmpMorphAttributes[ name ]; + + for ( let k = 0; k < itemSize; k ++ ) { + + const getterFunc = getters[ k ]; + const setterFunc = setters[ k ]; + newarray[ setterFunc ]( nextIndex, attribute[ getterFunc ]( index ) ); + + if ( morphAttr ) { + + for ( let m = 0, ml = morphAttr.length; m < ml; m ++ ) { + + newMorphArrays[ m ][ setterFunc ]( nextIndex, morphAttr[ m ][ getterFunc ]( index ) ); + + } + + } + + } + + } + + hashToIndex[ hash ] = nextIndex; + newIndices.push( nextIndex ); + nextIndex ++; + + } + + } + + // generate result BufferGeometry + const result = geometry.clone(); + for ( const name in geometry.attributes ) { + + const tmpAttribute = tmpAttributes[ name ]; + + result.setAttribute( name, new BufferAttribute( + tmpAttribute.array.slice( 0, nextIndex * tmpAttribute.itemSize ), + tmpAttribute.itemSize, + tmpAttribute.normalized, + ) ); + + if ( ! ( name in tmpMorphAttributes ) ) continue; + + for ( let j = 0; j < tmpMorphAttributes[ name ].length; j ++ ) { + + const tmpMorphAttribute = tmpMorphAttributes[ name ][ j ]; + + result.morphAttributes[ name ][ j ] = new BufferAttribute( + tmpMorphAttribute.array.slice( 0, nextIndex * tmpMorphAttribute.itemSize ), + tmpMorphAttribute.itemSize, + tmpMorphAttribute.normalized, + ); + + } + + } + + // indices + + result.setIndex( newIndices ); + + return result; + +} + +/** + * @param {BufferGeometry} geometry + * @param {number} drawMode + * @return {BufferGeometry} + */ +function toTrianglesDrawMode( geometry, drawMode ) { + + if ( drawMode === TrianglesDrawMode ) { + + console.warn( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.' ); + return geometry; + + } + + if ( drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode ) { + + let index = geometry.getIndex(); + + // generate index if not present + + if ( index === null ) { + + const indices = []; + + const position = geometry.getAttribute( 'position' ); + + if ( position !== undefined ) { + + for ( let i = 0; i < position.count; i ++ ) { + + indices.push( i ); + + } + + geometry.setIndex( indices ); + index = geometry.getIndex(); + + } else { + + console.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' ); + return geometry; + + } + + } + + // + + const numberOfTriangles = index.count - 2; + const newIndices = []; + + if ( drawMode === TriangleFanDrawMode ) { + + // gl.TRIANGLE_FAN + + for ( let i = 1; i <= numberOfTriangles; i ++ ) { + + newIndices.push( index.getX( 0 ) ); + newIndices.push( index.getX( i ) ); + newIndices.push( index.getX( i + 1 ) ); + + } + + } else { + + // gl.TRIANGLE_STRIP + + for ( let i = 0; i < numberOfTriangles; i ++ ) { + + if ( i % 2 === 0 ) { + + newIndices.push( index.getX( i ) ); + newIndices.push( index.getX( i + 1 ) ); + newIndices.push( index.getX( i + 2 ) ); + + } else { + + newIndices.push( index.getX( i + 2 ) ); + newIndices.push( index.getX( i + 1 ) ); + newIndices.push( index.getX( i ) ); + + } + + } + + } + + if ( ( newIndices.length / 3 ) !== numberOfTriangles ) { + + console.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' ); + + } + + // build final geometry + + const newGeometry = geometry.clone(); + newGeometry.setIndex( newIndices ); + newGeometry.clearGroups(); + + return newGeometry; + + } else { + + console.error( 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', drawMode ); + return geometry; + + } + +} + +/** + * Calculates the morphed attributes of a morphed/skinned BufferGeometry. + * Helpful for Raytracing or Decals. + * @param {Mesh | Line | Points} object An instance of Mesh, Line or Points. + * @return {Object} An Object with original position/normal attributes and morphed ones. + */ +function computeMorphedAttributes( object ) { + + const _vA = new Vector3(); + const _vB = new Vector3(); + const _vC = new Vector3(); + + const _tempA = new Vector3(); + const _tempB = new Vector3(); + const _tempC = new Vector3(); + + const _morphA = new Vector3(); + const _morphB = new Vector3(); + const _morphC = new Vector3(); + + function _calculateMorphedAttributeData( + object, + attribute, + morphAttribute, + morphTargetsRelative, + a, + b, + c, + modifiedAttributeArray + ) { + + _vA.fromBufferAttribute( attribute, a ); + _vB.fromBufferAttribute( attribute, b ); + _vC.fromBufferAttribute( attribute, c ); + + const morphInfluences = object.morphTargetInfluences; + + if ( morphAttribute && morphInfluences ) { + + _morphA.set( 0, 0, 0 ); + _morphB.set( 0, 0, 0 ); + _morphC.set( 0, 0, 0 ); + + for ( let i = 0, il = morphAttribute.length; i < il; i ++ ) { + + const influence = morphInfluences[ i ]; + const morph = morphAttribute[ i ]; + + if ( influence === 0 ) continue; + + _tempA.fromBufferAttribute( morph, a ); + _tempB.fromBufferAttribute( morph, b ); + _tempC.fromBufferAttribute( morph, c ); + + if ( morphTargetsRelative ) { + + _morphA.addScaledVector( _tempA, influence ); + _morphB.addScaledVector( _tempB, influence ); + _morphC.addScaledVector( _tempC, influence ); + + } else { + + _morphA.addScaledVector( _tempA.sub( _vA ), influence ); + _morphB.addScaledVector( _tempB.sub( _vB ), influence ); + _morphC.addScaledVector( _tempC.sub( _vC ), influence ); + + } + + } + + _vA.add( _morphA ); + _vB.add( _morphB ); + _vC.add( _morphC ); + + } + + if ( object.isSkinnedMesh ) { + + object.applyBoneTransform( a, _vA ); + object.applyBoneTransform( b, _vB ); + object.applyBoneTransform( c, _vC ); + + } + + modifiedAttributeArray[ a * 3 + 0 ] = _vA.x; + modifiedAttributeArray[ a * 3 + 1 ] = _vA.y; + modifiedAttributeArray[ a * 3 + 2 ] = _vA.z; + modifiedAttributeArray[ b * 3 + 0 ] = _vB.x; + modifiedAttributeArray[ b * 3 + 1 ] = _vB.y; + modifiedAttributeArray[ b * 3 + 2 ] = _vB.z; + modifiedAttributeArray[ c * 3 + 0 ] = _vC.x; + modifiedAttributeArray[ c * 3 + 1 ] = _vC.y; + modifiedAttributeArray[ c * 3 + 2 ] = _vC.z; + + } + + const geometry = object.geometry; + const material = object.material; + + let a, b, c; + const index = geometry.index; + const positionAttribute = geometry.attributes.position; + const morphPosition = geometry.morphAttributes.position; + const morphTargetsRelative = geometry.morphTargetsRelative; + const normalAttribute = geometry.attributes.normal; + const morphNormal = geometry.morphAttributes.position; + + const groups = geometry.groups; + const drawRange = geometry.drawRange; + let i, j, il, jl; + let group; + let start, end; + + const modifiedPosition = new Float32Array( positionAttribute.count * positionAttribute.itemSize ); + const modifiedNormal = new Float32Array( normalAttribute.count * normalAttribute.itemSize ); + + if ( index !== null ) { + + // indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = index.getX( j ); + b = index.getX( j + 1 ); + c = index.getX( j + 2 ); + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = index.getX( i ); + b = index.getX( i + 1 ); + c = index.getX( i + 2 ); + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } else { + + // non-indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = j; + b = j + 1; + c = j + 2; + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = i; + b = i + 1; + c = i + 2; + + _calculateMorphedAttributeData( + object, + positionAttribute, + morphPosition, + morphTargetsRelative, + a, b, c, + modifiedPosition + ); + + _calculateMorphedAttributeData( + object, + normalAttribute, + morphNormal, + morphTargetsRelative, + a, b, c, + modifiedNormal + ); + + } + + } + + } + + const morphedPositionAttribute = new Float32BufferAttribute( modifiedPosition, 3 ); + const morphedNormalAttribute = new Float32BufferAttribute( modifiedNormal, 3 ); + + return { + + positionAttribute: positionAttribute, + normalAttribute: normalAttribute, + morphedPositionAttribute: morphedPositionAttribute, + morphedNormalAttribute: morphedNormalAttribute + + }; + +} + +function mergeGroups( geometry ) { + + if ( geometry.groups.length === 0 ) { + + console.warn( 'THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge.' ); + return geometry; + + } + + let groups = geometry.groups; + + // sort groups by material index + + groups = groups.sort( ( a, b ) => { + + if ( a.materialIndex !== b.materialIndex ) return a.materialIndex - b.materialIndex; + + return a.start - b.start; + + } ); + + // create index for non-indexed geometries + + if ( geometry.getIndex() === null ) { + + const positionAttribute = geometry.getAttribute( 'position' ); + const indices = []; + + for ( let i = 0; i < positionAttribute.count; i += 3 ) { + + indices.push( i, i + 1, i + 2 ); + + } + + geometry.setIndex( indices ); + + } + + // sort index + + const index = geometry.getIndex(); + + const newIndices = []; + + for ( let i = 0; i < groups.length; i ++ ) { + + const group = groups[ i ]; + + const groupStart = group.start; + const groupLength = groupStart + group.count; + + for ( let j = groupStart; j < groupLength; j ++ ) { + + newIndices.push( index.getX( j ) ); + + } + + } + + geometry.dispose(); // Required to force buffer recreation + geometry.setIndex( newIndices ); + + // update groups indices + + let start = 0; + + for ( let i = 0; i < groups.length; i ++ ) { + + const group = groups[ i ]; + + group.start = start; + start += group.count; + + } + + // merge groups + + let currentGroup = groups[ 0 ]; + + geometry.groups = [ currentGroup ]; + + for ( let i = 1; i < groups.length; i ++ ) { + + const group = groups[ i ]; + + if ( currentGroup.materialIndex === group.materialIndex ) { + + currentGroup.count += group.count; + + } else { + + currentGroup = group; + geometry.groups.push( currentGroup ); + + } + + } + + return geometry; + +} + + +/** + * Modifies the supplied geometry if it is non-indexed, otherwise creates a new, + * non-indexed geometry. Returns the geometry with smooth normals everywhere except + * faces that meet at an angle greater than the crease angle. + * + * @param {BufferGeometry} geometry + * @param {number} [creaseAngle] + * @return {BufferGeometry} + */ +function toCreasedNormals( geometry, creaseAngle = Math.PI / 3 /* 60 degrees */ ) { + + const creaseDot = Math.cos( creaseAngle ); + const hashMultiplier = ( 1 + 1e-10 ) * 1e2; + + // reusable vectors + const verts = [ new Vector3(), new Vector3(), new Vector3() ]; + const tempVec1 = new Vector3(); + const tempVec2 = new Vector3(); + const tempNorm = new Vector3(); + const tempNorm2 = new Vector3(); + + // hashes a vector + function hashVertex( v ) { + + const x = ~ ~ ( v.x * hashMultiplier ); + const y = ~ ~ ( v.y * hashMultiplier ); + const z = ~ ~ ( v.z * hashMultiplier ); + return `${x},${y},${z}`; + + } + + // BufferGeometry.toNonIndexed() warns if the geometry is non-indexed + // and returns the original geometry + const resultGeometry = geometry.index ? geometry.toNonIndexed() : geometry; + const posAttr = resultGeometry.attributes.position; + const vertexMap = {}; + + // find all the normals shared by commonly located vertices + for ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) { + + const i3 = 3 * i; + const a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 ); + const b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 ); + const c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 ); + + tempVec1.subVectors( c, b ); + tempVec2.subVectors( a, b ); + + // add the normal to the map for all vertices + const normal = new Vector3().crossVectors( tempVec1, tempVec2 ).normalize(); + for ( let n = 0; n < 3; n ++ ) { + + const vert = verts[ n ]; + const hash = hashVertex( vert ); + if ( ! ( hash in vertexMap ) ) { + + vertexMap[ hash ] = []; + + } + + vertexMap[ hash ].push( normal ); + + } + + } + + // average normals from all vertices that share a common location if they are within the + // provided crease threshold + const normalArray = new Float32Array( posAttr.count * 3 ); + const normAttr = new BufferAttribute( normalArray, 3, false ); + for ( let i = 0, l = posAttr.count / 3; i < l; i ++ ) { + + // get the face normal for this vertex + const i3 = 3 * i; + const a = verts[ 0 ].fromBufferAttribute( posAttr, i3 + 0 ); + const b = verts[ 1 ].fromBufferAttribute( posAttr, i3 + 1 ); + const c = verts[ 2 ].fromBufferAttribute( posAttr, i3 + 2 ); + + tempVec1.subVectors( c, b ); + tempVec2.subVectors( a, b ); + + tempNorm.crossVectors( tempVec1, tempVec2 ).normalize(); + + // average all normals that meet the threshold and set the normal value + for ( let n = 0; n < 3; n ++ ) { + + const vert = verts[ n ]; + const hash = hashVertex( vert ); + const otherNormals = vertexMap[ hash ]; + tempNorm2.set( 0, 0, 0 ); + + for ( let k = 0, lk = otherNormals.length; k < lk; k ++ ) { + + const otherNorm = otherNormals[ k ]; + if ( tempNorm.dot( otherNorm ) > creaseDot ) { + + tempNorm2.add( otherNorm ); + + } + + } + + tempNorm2.normalize(); + normAttr.setXYZ( i3 + n, tempNorm2.x, tempNorm2.y, tempNorm2.z ); + + } + + } + + resultGeometry.setAttribute( 'normal', normAttr ); + return resultGeometry; + +} + +export { + computeMikkTSpaceTangents, + mergeGeometries, + mergeAttributes, + interleaveAttributes, + estimateBytesUsed, + mergeVertices, + toTrianglesDrawMode, + computeMorphedAttributes, + mergeGroups, + toCreasedNormals +}; diff --git a/seminar06-planning/simulator/js/objects/CarObject.js b/seminar06-planning/simulator/js/objects/CarObject.js new file mode 100644 index 0000000..c35f368 --- /dev/null +++ b/seminar06-planning/simulator/js/objects/CarObject.js @@ -0,0 +1,122 @@ +import Car from "../physics/Car.js"; +import TDSLoader from "./TDSLoader.js"; +import suvModel from "../../models/suv.js"; + +const CAR_COLOR = 0x0088ff; +const WHEEL_COLOR = 0xff8800; + +export default class CarObject extends THREE.Object3D { + constructor(car) { + super(); + + this.car = car; + + this.buildCar2D(); + this.buildCar3D(); + } + + buildCar2D() { + const carMesh = new THREE.Mesh( + new THREE.PlaneGeometry(Car.HALF_CAR_LENGTH * 2, Car.HALF_CAR_WIDTH * 2), + new THREE.MeshBasicMaterial({ color: CAR_COLOR, depthTest: false, transparent: true, opacity: 0.7 }) + ); + carMesh.rotation.x = -Math.PI / 2; + carMesh.layers.set(2); + this.add(carMesh); + + const wheelGeometry = new THREE.PlaneGeometry(Car.HALF_WHEEL_LENGTH * 2, Car.HALF_WHEEL_WIDTH * 2); + const wheelMaterial = new THREE.MeshBasicMaterial({ color: WHEEL_COLOR, depthTest: false, transparent: true, opacity: 0.7 }) + + this.lfWheel2D = new THREE.Mesh(wheelGeometry, wheelMaterial); + this.lfWheel2D.renderOrder = 1; + this.lfWheel2D.position.set(Car.FRONT_AXLE_POS, 0, Car.WHEEL_LATERAL_POS); + this.lfWheel2D.rotation.x = -Math.PI / 2; + this.lfWheel2D.layers.set(2); + this.add(this.lfWheel2D); + + this.rfWheel2D = new THREE.Mesh(wheelGeometry, wheelMaterial); + this.rfWheel2D.renderOrder = 1; + this.rfWheel2D.position.set(Car.FRONT_AXLE_POS, 0, -Car.WHEEL_LATERAL_POS); + this.rfWheel2D.rotation.x = -Math.PI / 2; + this.rfWheel2D.layers.set(2); + this.add(this.rfWheel2D); + + const lrWheel = new THREE.Mesh(wheelGeometry, wheelMaterial); + lrWheel.renderOrder = 1; + lrWheel.position.set(Car.REAR_AXLE_POS, 0, Car.WHEEL_LATERAL_POS); + lrWheel.rotation.x = -Math.PI / 2; + lrWheel.layers.set(2); + this.add(lrWheel); + + const rrWheel = new THREE.Mesh(wheelGeometry, wheelMaterial); + rrWheel.renderOrder = 1; + rrWheel.position.set(Car.REAR_AXLE_POS, 0, -Car.WHEEL_LATERAL_POS); + rrWheel.rotation.x = -Math.PI / 2; + rrWheel.layers.set(2); + this.add(rrWheel); + } + + buildCar3D() { + const loader = new TDSLoader(); + loader.skipMaps = true; + + loader.load(suvModel, object => { + object.layers.set(3); + object.rotation.z = Math.PI / 2; + object.rotation.x = -Math.PI / 2; + + const box = (new THREE.Box3()).setFromObject(object); + const scaleLength = Car.HALF_CAR_LENGTH * 2 / (box.max.x - box.min.x); + const scaleWidth = Car.HALF_CAR_WIDTH * 2 / (box.max.z - box.min.z); + object.scale.set(scaleWidth, scaleLength, (scaleWidth + scaleLength) / 2); + + box.setFromObject(object); + object.position.setX(-(box.max.x + box.min.x) / 2); + object.position.setY(-box.min.y); + + this.add(object); + + const carMaterial = new THREE.MeshToonMaterial({ color: 0x0088ff }); + const wheelMaterial = new THREE.MeshToonMaterial({ color: 0xff8800 }); + + object.traverse(child => { + if (child instanceof THREE.Mesh) { + child.layers.set(3); + child.material = ['Toyota_RA7', 'Toyota_RA8', 'Toyota_RA9', 'Toyota_R10'].includes(child.name) ? wheelMaterial : carMaterial; + + if (child.name == 'Toyota_RA7') + this.lfWheel3D = child; + else if (child.name == 'Toyota_RA8') + this.rfWheel3D = child; + } + }); + + [this.lfWheel3D, this.rfWheel3D].forEach(wheel => { + wheel.geometry.computeBoundingBox(); + wheel.geometry.center(); + wheel.position.setY(wheel.position.y - 36); + wheel.position.setZ(wheel.position.z + 36); + }); + }); + } + + updateMatrix() { + this.updateCar(); + super.updateMatrix(); + } + + updateCar() { + const carPosition = this.car.position; + this.position.set(carPosition.x, 0, carPosition.y); + this.rotation.y = -this.car.rotation; + + const wheelAngle = this.car.wheelAngle; + + // Adding the wheels to the car object can trigger this function in some browsers + // before the other wheels are added, so check them first. + if (this.lfWheel2D) this.lfWheel2D.rotation.z = -wheelAngle; + if (this.rfWheel2D) this.rfWheel2D.rotation.z = -wheelAngle; + if (this.lfWheel3D) this.lfWheel3D.rotation.y = wheelAngle; + if (this.rfWheel3D) this.rfWheel3D.rotation.y = wheelAngle; + } +} diff --git a/seminar06-planning/simulator/js/objects/DynamicObstacleObject.js b/seminar06-planning/simulator/js/objects/DynamicObstacleObject.js new file mode 100644 index 0000000..b71d0b1 --- /dev/null +++ b/seminar06-planning/simulator/js/objects/DynamicObstacleObject.js @@ -0,0 +1,59 @@ +export default class DynamicObstacleObject extends THREE.Object3D { + constructor(dynamicObstacle, lanePath) { + super(); + + this.dynamicObstacle = dynamicObstacle; + this.lanePath = lanePath; + this.size = dynamicObstacle.size; + + const colors = { + vehicle: 0xff8800, + cyclist: 0x00ccff, + pedestrian: 0xffdd00 + }; + + const heights = { + vehicle: 2.0, + cyclist: 1.8, + pedestrian: 1.8 + }; + + const mesh2D = new THREE.Mesh( + new THREE.PlaneGeometry(dynamicObstacle.size.w * 2, dynamicObstacle.size.h * 2), + new THREE.MeshBasicMaterial({ color: colors[dynamicObstacle.type] || 0xff8800, depthTest: false, transparent: true, opacity: 0.7 }) + ); + mesh2D.rotation.x = -Math.PI / 2; + mesh2D.layers.set(2); + this.add(mesh2D); + + const mesh3D = new THREE.Mesh( + new THREE.BoxBufferGeometry(dynamicObstacle.size.w * 2, heights[dynamicObstacle.type] || 1.5, dynamicObstacle.size.h * 2), + new THREE.MeshToonMaterial({ color: colors[dynamicObstacle.type] || 0xff8800, transparent: true, opacity: 0.7 }) + ); + mesh3D.position.setY((heights[dynamicObstacle.type] || 1.5) / 2); + mesh3D.layers.set(3); + this.add(mesh3D); + } + + update(time) { + const slPos = this.dynamicObstacle.positionAtTime(time); + + // Sample just the station this dynamic obstacle is at + const [sample] = this.lanePath.sampleStations(slPos.x, 1, 0); + + if (sample === undefined) { + this.visible = false; + return; + } + + const rot = sample.rot; + const pos = THREE.Vector2.fromAngle(rot + Math.PI / 2).multiplyScalar(slPos.y).add(sample.pos); + + this.position.set(pos.x, 0, pos.y); + this.rotation.y = -rot; + + super.updateMatrix(); + + this.visible = slPos.x >= 0; + } +} diff --git a/seminar06-planning/simulator/js/objects/GLTFLoader.js b/seminar06-planning/simulator/js/objects/GLTFLoader.js new file mode 100644 index 0000000..fcc4832 --- /dev/null +++ b/seminar06-planning/simulator/js/objects/GLTFLoader.js @@ -0,0 +1,4669 @@ +import { + AnimationClip, + Bone, + Box3, + BufferAttribute, + BufferGeometry, + ClampToEdgeWrapping, + Color, + ColorManagement, + DirectionalLight, + DoubleSide, + FileLoader, + FrontSide, + Group, + ImageBitmapLoader, + InstancedMesh, + InterleavedBuffer, + InterleavedBufferAttribute, + Interpolant, + InterpolateDiscrete, + InterpolateLinear, + Line, + LineBasicMaterial, + LineLoop, + LineSegments, + LinearFilter, + LinearMipmapLinearFilter, + LinearMipmapNearestFilter, + LinearSRGBColorSpace, + Loader, + LoaderUtils, + Material, + MathUtils, + Matrix4, + Mesh, + MeshBasicMaterial, + MeshPhysicalMaterial, + MeshStandardMaterial, + MirroredRepeatWrapping, + NearestFilter, + NearestMipmapLinearFilter, + NearestMipmapNearestFilter, + NumberKeyframeTrack, + Object3D, + OrthographicCamera, + PerspectiveCamera, + PointLight, + Points, + PointsMaterial, + PropertyBinding, + Quaternion, + QuaternionKeyframeTrack, + RepeatWrapping, + Skeleton, + SkinnedMesh, + Sphere, + SpotLight, + Texture, + TextureLoader, + TriangleFanDrawMode, + TriangleStripDrawMode, + Vector2, + Vector3, + VectorKeyframeTrack, + SRGBColorSpace, + InstancedBufferAttribute +} from 'three'; +import { toTrianglesDrawMode } from './BufferGeometryUtils.js'; + +class GLTFLoader extends Loader { + + constructor( manager ) { + + super( manager ); + + this.dracoLoader = null; + this.ktx2Loader = null; + this.meshoptDecoder = null; + + this.pluginCallbacks = []; + + this.register( function ( parser ) { + + return new GLTFMaterialsClearcoatExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFTextureBasisUExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFTextureWebPExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFTextureAVIFExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsSheenExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsTransmissionExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsVolumeExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsIorExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsEmissiveStrengthExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsSpecularExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsIridescenceExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsAnisotropyExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMaterialsBumpExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFLightsExtension( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMeshoptCompression( parser ); + + } ); + + this.register( function ( parser ) { + + return new GLTFMeshGpuInstancing( parser ); + + } ); + + } + + load( url, onLoad, onProgress, onError ) { + + const scope = this; + + let resourcePath; + + if ( this.resourcePath !== '' ) { + + resourcePath = this.resourcePath; + + } else if ( this.path !== '' ) { + + // If a base path is set, resources will be relative paths from that plus the relative path of the gltf file + // Example path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf' + // resourcePath = 'https://my-cnd-server.com/assets/models/' + // referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin' + // referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png' + const relativeUrl = LoaderUtils.extractUrlBase( url ); + resourcePath = LoaderUtils.resolveURL( relativeUrl, this.path ); + + } else { + + resourcePath = LoaderUtils.extractUrlBase( url ); + + } + + // Tells the LoadingManager to track an extra item, which resolves after + // the model is fully loaded. This means the count of items loaded will + // be incorrect, but ensures manager.onLoad() does not fire early. + this.manager.itemStart( url ); + + const _onError = function ( e ) { + + if ( onError ) { + + onError( e ); + + } else { + + console.error( e ); + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }; + + const loader = new FileLoader( this.manager ); + + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + loader.setRequestHeader( this.requestHeader ); + loader.setWithCredentials( this.withCredentials ); + + loader.load( url, function ( data ) { + + try { + + scope.parse( data, resourcePath, function ( gltf ) { + + onLoad( gltf ); + + scope.manager.itemEnd( url ); + + }, _onError ); + + } catch ( e ) { + + _onError( e ); + + } + + }, onProgress, _onError ); + + } + + setDRACOLoader( dracoLoader ) { + + this.dracoLoader = dracoLoader; + return this; + + } + + setDDSLoader() { + + throw new Error( + + 'THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".' + + ); + + } + + setKTX2Loader( ktx2Loader ) { + + this.ktx2Loader = ktx2Loader; + return this; + + } + + setMeshoptDecoder( meshoptDecoder ) { + + this.meshoptDecoder = meshoptDecoder; + return this; + + } + + register( callback ) { + + if ( this.pluginCallbacks.indexOf( callback ) === - 1 ) { + + this.pluginCallbacks.push( callback ); + + } + + return this; + + } + + unregister( callback ) { + + if ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) { + + this.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 ); + + } + + return this; + + } + + parse( data, path, onLoad, onError ) { + + let json; + const extensions = {}; + const plugins = {}; + const textDecoder = new TextDecoder(); + + if ( typeof data === 'string' ) { + + json = JSON.parse( data ); + + } else if ( data instanceof ArrayBuffer ) { + + const magic = textDecoder.decode( new Uint8Array( data, 0, 4 ) ); + + if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) { + + try { + + extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); + + } catch ( error ) { + + if ( onError ) onError( error ); + return; + + } + + json = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content ); + + } else { + + json = JSON.parse( textDecoder.decode( data ) ); + + } + + } else { + + json = data; + + } + + if ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) { + + if ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) ); + return; + + } + + const parser = new GLTFParser( json, { + + path: path || this.resourcePath || '', + crossOrigin: this.crossOrigin, + requestHeader: this.requestHeader, + manager: this.manager, + ktx2Loader: this.ktx2Loader, + meshoptDecoder: this.meshoptDecoder + + } ); + + parser.fileLoader.setRequestHeader( this.requestHeader ); + + for ( let i = 0; i < this.pluginCallbacks.length; i ++ ) { + + const plugin = this.pluginCallbacks[ i ]( parser ); + + if ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' ); + + plugins[ plugin.name ] = plugin; + + // Workaround to avoid determining as unknown extension + // in addUnknownExtensionsToUserData(). + // Remove this workaround if we move all the existing + // extension handlers to plugin system + extensions[ plugin.name ] = true; + + } + + if ( json.extensionsUsed ) { + + for ( let i = 0; i < json.extensionsUsed.length; ++ i ) { + + const extensionName = json.extensionsUsed[ i ]; + const extensionsRequired = json.extensionsRequired || []; + + switch ( extensionName ) { + + case EXTENSIONS.KHR_MATERIALS_UNLIT: + extensions[ extensionName ] = new GLTFMaterialsUnlitExtension(); + break; + + case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: + extensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader ); + break; + + case EXTENSIONS.KHR_TEXTURE_TRANSFORM: + extensions[ extensionName ] = new GLTFTextureTransformExtension(); + break; + + case EXTENSIONS.KHR_MESH_QUANTIZATION: + extensions[ extensionName ] = new GLTFMeshQuantizationExtension(); + break; + + default: + + if ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) { + + console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' ); + + } + + } + + } + + } + + parser.setExtensions( extensions ); + parser.setPlugins( plugins ); + parser.parse( onLoad, onError ); + + } + + parseAsync( data, path ) { + + const scope = this; + + return new Promise( function ( resolve, reject ) { + + scope.parse( data, path, resolve, reject ); + + } ); + + } + +} + +/* GLTFREGISTRY */ + +function GLTFRegistry() { + + let objects = {}; + + return { + + get: function ( key ) { + + return objects[ key ]; + + }, + + add: function ( key, object ) { + + objects[ key ] = object; + + }, + + remove: function ( key ) { + + delete objects[ key ]; + + }, + + removeAll: function () { + + objects = {}; + + } + + }; + +} + +/*********************************/ +/********** EXTENSIONS ***********/ +/*********************************/ + +const EXTENSIONS = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', + KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', + KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat', + KHR_MATERIALS_IOR: 'KHR_materials_ior', + KHR_MATERIALS_SHEEN: 'KHR_materials_sheen', + KHR_MATERIALS_SPECULAR: 'KHR_materials_specular', + KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission', + KHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence', + KHR_MATERIALS_ANISOTROPY: 'KHR_materials_anisotropy', + KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', + KHR_MATERIALS_VOLUME: 'KHR_materials_volume', + KHR_TEXTURE_BASISU: 'KHR_texture_basisu', + KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', + KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization', + KHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength', + EXT_MATERIALS_BUMP: 'EXT_materials_bump', + EXT_TEXTURE_WEBP: 'EXT_texture_webp', + EXT_TEXTURE_AVIF: 'EXT_texture_avif', + EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression', + EXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing' +}; + +/** + * Punctual Lights Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual + */ +class GLTFLightsExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; + + // Object3D instance caches + this.cache = { refs: {}, uses: {} }; + + } + + _markDefs() { + + const parser = this.parser; + const nodeDefs = this.parser.json.nodes || []; + + for ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { + + const nodeDef = nodeDefs[ nodeIndex ]; + + if ( nodeDef.extensions + && nodeDef.extensions[ this.name ] + && nodeDef.extensions[ this.name ].light !== undefined ) { + + parser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light ); + + } + + } + + } + + _loadLight( lightIndex ) { + + const parser = this.parser; + const cacheKey = 'light:' + lightIndex; + let dependency = parser.cache.get( cacheKey ); + + if ( dependency ) return dependency; + + const json = parser.json; + const extensions = ( json.extensions && json.extensions[ this.name ] ) || {}; + const lightDefs = extensions.lights || []; + const lightDef = lightDefs[ lightIndex ]; + let lightNode; + + const color = new Color( 0xffffff ); + + if ( lightDef.color !== undefined ) color.setRGB( lightDef.color[ 0 ], lightDef.color[ 1 ], lightDef.color[ 2 ], LinearSRGBColorSpace ); + + const range = lightDef.range !== undefined ? lightDef.range : 0; + + switch ( lightDef.type ) { + + case 'directional': + lightNode = new DirectionalLight( color ); + lightNode.target.position.set( 0, 0, - 1 ); + lightNode.add( lightNode.target ); + break; + + case 'point': + lightNode = new PointLight( color ); + lightNode.distance = range; + break; + + case 'spot': + lightNode = new SpotLight( color ); + lightNode.distance = range; + // Handle spotlight properties. + lightDef.spot = lightDef.spot || {}; + lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0; + lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0; + lightNode.angle = lightDef.spot.outerConeAngle; + lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; + lightNode.target.position.set( 0, 0, - 1 ); + lightNode.add( lightNode.target ); + break; + + default: + throw new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type ); + + } + + // Some lights (e.g. spot) default to a position other than the origin. Reset the position + // here, because node-level parsing will only override position if explicitly specified. + lightNode.position.set( 0, 0, 0 ); + + lightNode.decay = 2; + + assignExtrasToUserData( lightNode, lightDef ); + + if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity; + + lightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) ); + + dependency = Promise.resolve( lightNode ); + + parser.cache.add( cacheKey, dependency ); + + return dependency; + + } + + getDependency( type, index ) { + + if ( type !== 'light' ) return; + + return this._loadLight( index ); + + } + + createNodeAttachment( nodeIndex ) { + + const self = this; + const parser = this.parser; + const json = parser.json; + const nodeDef = json.nodes[ nodeIndex ]; + const lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {}; + const lightIndex = lightDef.light; + + if ( lightIndex === undefined ) return null; + + return this._loadLight( lightIndex ).then( function ( light ) { + + return parser._getNodeRef( self.cache, lightIndex, light ); + + } ); + + } + +} + +/** + * Unlit Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit + */ +class GLTFMaterialsUnlitExtension { + + constructor() { + + this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; + + } + + getMaterialType() { + + return MeshBasicMaterial; + + } + + extendParams( materialParams, materialDef, parser ) { + + const pending = []; + + materialParams.color = new Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + const metallicRoughness = materialDef.pbrMetallicRoughness; + + if ( metallicRoughness ) { + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + const array = metallicRoughness.baseColorFactor; + + materialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) ); + + } + + } + + return Promise.all( pending ); + + } + +} + +/** + * Materials Emissive Strength Extension + * + * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md + */ +class GLTFMaterialsEmissiveStrengthExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength; + + if ( emissiveStrength !== undefined ) { + + materialParams.emissiveIntensity = emissiveStrength; + + } + + return Promise.resolve(); + + } + +} + +/** + * Clearcoat Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat + */ +class GLTFMaterialsClearcoatExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.clearcoatFactor !== undefined ) { + + materialParams.clearcoat = extension.clearcoatFactor; + + } + + if ( extension.clearcoatTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) ); + + } + + if ( extension.clearcoatRoughnessFactor !== undefined ) { + + materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor; + + } + + if ( extension.clearcoatRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) ); + + } + + if ( extension.clearcoatNormalTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) ); + + if ( extension.clearcoatNormalTexture.scale !== undefined ) { + + const scale = extension.clearcoatNormalTexture.scale; + + materialParams.clearcoatNormalScale = new Vector2( scale, scale ); + + } + + } + + return Promise.all( pending ); + + } + +} + +/** + * Iridescence Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence + */ +class GLTFMaterialsIridescenceExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.iridescenceFactor !== undefined ) { + + materialParams.iridescence = extension.iridescenceFactor; + + } + + if ( extension.iridescenceTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) ); + + } + + if ( extension.iridescenceIor !== undefined ) { + + materialParams.iridescenceIOR = extension.iridescenceIor; + + } + + if ( materialParams.iridescenceThicknessRange === undefined ) { + + materialParams.iridescenceThicknessRange = [ 100, 400 ]; + + } + + if ( extension.iridescenceThicknessMinimum !== undefined ) { + + materialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum; + + } + + if ( extension.iridescenceThicknessMaximum !== undefined ) { + + materialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum; + + } + + if ( extension.iridescenceThicknessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Sheen Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen + */ +class GLTFMaterialsSheenExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SHEEN; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + materialParams.sheenColor = new Color( 0, 0, 0 ); + materialParams.sheenRoughness = 0; + materialParams.sheen = 1; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.sheenColorFactor !== undefined ) { + + const colorFactor = extension.sheenColorFactor; + materialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace ); + + } + + if ( extension.sheenRoughnessFactor !== undefined ) { + + materialParams.sheenRoughness = extension.sheenRoughnessFactor; + + } + + if ( extension.sheenColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, SRGBColorSpace ) ); + + } + + if ( extension.sheenRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Transmission Materials Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission + * Draft: https://github.com/KhronosGroup/glTF/pull/1698 + */ +class GLTFMaterialsTransmissionExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.transmissionFactor !== undefined ) { + + materialParams.transmission = extension.transmissionFactor; + + } + + if ( extension.transmissionTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Materials Volume Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume + */ +class GLTFMaterialsVolumeExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_VOLUME; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + materialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0; + + if ( extension.thicknessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) ); + + } + + materialParams.attenuationDistance = extension.attenuationDistance || Infinity; + + const colorArray = extension.attenuationColor || [ 1, 1, 1 ]; + materialParams.attenuationColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace ); + + return Promise.all( pending ); + + } + +} + +/** + * Materials ior Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior + */ +class GLTFMaterialsIorExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_IOR; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const extension = materialDef.extensions[ this.name ]; + + materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5; + + return Promise.resolve(); + + } + +} + +/** + * Materials specular Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular + */ +class GLTFMaterialsSpecularExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + materialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0; + + if ( extension.specularTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) ); + + } + + const colorArray = extension.specularColorFactor || [ 1, 1, 1 ]; + materialParams.specularColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace ); + + if ( extension.specularColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) ); + + } + + return Promise.all( pending ); + + } + +} + + +/** + * Materials bump Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump + */ +class GLTFMaterialsBumpExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.EXT_MATERIALS_BUMP; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + materialParams.bumpScale = extension.bumpFactor !== undefined ? extension.bumpFactor : 1.0; + + if ( extension.bumpTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'bumpMap', extension.bumpTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * Materials anisotropy Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy + */ +class GLTFMaterialsAnisotropyExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY; + + } + + getMaterialType( materialIndex ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; + + return MeshPhysicalMaterial; + + } + + extendMaterialParams( materialIndex, materialParams ) { + + const parser = this.parser; + const materialDef = parser.json.materials[ materialIndex ]; + + if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { + + return Promise.resolve(); + + } + + const pending = []; + + const extension = materialDef.extensions[ this.name ]; + + if ( extension.anisotropyStrength !== undefined ) { + + materialParams.anisotropy = extension.anisotropyStrength; + + } + + if ( extension.anisotropyRotation !== undefined ) { + + materialParams.anisotropyRotation = extension.anisotropyRotation; + + } + + if ( extension.anisotropyTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'anisotropyMap', extension.anisotropyTexture ) ); + + } + + return Promise.all( pending ); + + } + +} + +/** + * BasisU Texture Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu + */ +class GLTFTextureBasisUExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.KHR_TEXTURE_BASISU; + + } + + loadTexture( textureIndex ) { + + const parser = this.parser; + const json = parser.json; + + const textureDef = json.textures[ textureIndex ]; + + if ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) { + + return null; + + } + + const extension = textureDef.extensions[ this.name ]; + const loader = parser.options.ktx2Loader; + + if ( ! loader ) { + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' ); + + } else { + + // Assumes that the extension is optional and that a fallback texture is present + return null; + + } + + } + + return parser.loadTextureImage( textureIndex, extension.source, loader ); + + } + +} + +/** + * WebP Texture Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp + */ +class GLTFTextureWebPExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_WEBP; + this.isSupported = null; + + } + + loadTexture( textureIndex ) { + + const name = this.name; + const parser = this.parser; + const json = parser.json; + + const textureDef = json.textures[ textureIndex ]; + + if ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) { + + return null; + + } + + const extension = textureDef.extensions[ name ]; + const source = json.images[ extension.source ]; + + let loader = parser.textureLoader; + if ( source.uri ) { + + const handler = parser.options.manager.getHandler( source.uri ); + if ( handler !== null ) loader = handler; + + } + + return this.detectSupport().then( function ( isSupported ) { + + if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader ); + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' ); + + } + + // Fall back to PNG or JPEG. + return parser.loadTexture( textureIndex ); + + } ); + + } + + detectSupport() { + + if ( ! this.isSupported ) { + + this.isSupported = new Promise( function ( resolve ) { + + const image = new Image(); + + // Lossy test image. Support for lossy images doesn't guarantee support for all + // WebP images, unfortunately. + image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'; + + image.onload = image.onerror = function () { + + resolve( image.height === 1 ); + + }; + + } ); + + } + + return this.isSupported; + + } + +} + +/** + * AVIF Texture Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif + */ +class GLTFTextureAVIFExtension { + + constructor( parser ) { + + this.parser = parser; + this.name = EXTENSIONS.EXT_TEXTURE_AVIF; + this.isSupported = null; + + } + + loadTexture( textureIndex ) { + + const name = this.name; + const parser = this.parser; + const json = parser.json; + + const textureDef = json.textures[ textureIndex ]; + + if ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) { + + return null; + + } + + const extension = textureDef.extensions[ name ]; + const source = json.images[ extension.source ]; + + let loader = parser.textureLoader; + if ( source.uri ) { + + const handler = parser.options.manager.getHandler( source.uri ); + if ( handler !== null ) loader = handler; + + } + + return this.detectSupport().then( function ( isSupported ) { + + if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader ); + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' ); + + } + + // Fall back to PNG or JPEG. + return parser.loadTexture( textureIndex ); + + } ); + + } + + detectSupport() { + + if ( ! this.isSupported ) { + + this.isSupported = new Promise( function ( resolve ) { + + const image = new Image(); + + // Lossy test image. + image.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI='; + image.onload = image.onerror = function () { + + resolve( image.height === 1 ); + + }; + + } ); + + } + + return this.isSupported; + + } + +} + +/** + * meshopt BufferView Compression Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression + */ +class GLTFMeshoptCompression { + + constructor( parser ) { + + this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION; + this.parser = parser; + + } + + loadBufferView( index ) { + + const json = this.parser.json; + const bufferView = json.bufferViews[ index ]; + + if ( bufferView.extensions && bufferView.extensions[ this.name ] ) { + + const extensionDef = bufferView.extensions[ this.name ]; + + const buffer = this.parser.getDependency( 'buffer', extensionDef.buffer ); + const decoder = this.parser.options.meshoptDecoder; + + if ( ! decoder || ! decoder.supported ) { + + if ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) { + + throw new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' ); + + } else { + + // Assumes that the extension is optional and that fallback buffer data is present + return null; + + } + + } + + return buffer.then( function ( res ) { + + const byteOffset = extensionDef.byteOffset || 0; + const byteLength = extensionDef.byteLength || 0; + + const count = extensionDef.count; + const stride = extensionDef.byteStride; + + const source = new Uint8Array( res, byteOffset, byteLength ); + + if ( decoder.decodeGltfBufferAsync ) { + + return decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) { + + return res.buffer; + + } ); + + } else { + + // Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync + return decoder.ready.then( function () { + + const result = new ArrayBuffer( count * stride ); + decoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter ); + return result; + + } ); + + } + + } ); + + } else { + + return null; + + } + + } + +} + +/** + * GPU Instancing Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing + * + */ +class GLTFMeshGpuInstancing { + + constructor( parser ) { + + this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING; + this.parser = parser; + + } + + createNodeMesh( nodeIndex ) { + + const json = this.parser.json; + const nodeDef = json.nodes[ nodeIndex ]; + + if ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] || + nodeDef.mesh === undefined ) { + + return null; + + } + + const meshDef = json.meshes[ nodeDef.mesh ]; + + // No Points or Lines + Instancing support yet + + for ( const primitive of meshDef.primitives ) { + + if ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && + primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && + primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && + primitive.mode !== undefined ) { + + return null; + + } + + } + + const extensionDef = nodeDef.extensions[ this.name ]; + const attributesDef = extensionDef.attributes; + + // @TODO: Can we support InstancedMesh + SkinnedMesh? + + const pending = []; + const attributes = {}; + + for ( const key in attributesDef ) { + + pending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => { + + attributes[ key ] = accessor; + return attributes[ key ]; + + } ) ); + + } + + if ( pending.length < 1 ) { + + return null; + + } + + pending.push( this.parser.createNodeMesh( nodeIndex ) ); + + return Promise.all( pending ).then( results => { + + const nodeObject = results.pop(); + const meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ]; + const count = results[ 0 ].count; // All attribute counts should be same + const instancedMeshes = []; + + for ( const mesh of meshes ) { + + // Temporal variables + const m = new Matrix4(); + const p = new Vector3(); + const q = new Quaternion(); + const s = new Vector3( 1, 1, 1 ); + + const instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count ); + + for ( let i = 0; i < count; i ++ ) { + + if ( attributes.TRANSLATION ) { + + p.fromBufferAttribute( attributes.TRANSLATION, i ); + + } + + if ( attributes.ROTATION ) { + + q.fromBufferAttribute( attributes.ROTATION, i ); + + } + + if ( attributes.SCALE ) { + + s.fromBufferAttribute( attributes.SCALE, i ); + + } + + instancedMesh.setMatrixAt( i, m.compose( p, q, s ) ); + + } + + // Add instance attributes to the geometry, excluding TRS. + for ( const attributeName in attributes ) { + + if ( attributeName === '_COLOR_0' ) { + + const attr = attributes[ attributeName ]; + instancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized ); + + } else if ( attributeName !== 'TRANSLATION' && + attributeName !== 'ROTATION' && + attributeName !== 'SCALE' ) { + + mesh.geometry.setAttribute( attributeName, attributes[ attributeName ] ); + + } + + } + + // Just in case + Object3D.prototype.copy.call( instancedMesh, mesh ); + + this.parser.assignFinalMaterial( instancedMesh ); + + instancedMeshes.push( instancedMesh ); + + } + + if ( nodeObject.isGroup ) { + + nodeObject.clear(); + + nodeObject.add( ... instancedMeshes ); + + return nodeObject; + + } + + return instancedMeshes[ 0 ]; + + } ); + + } + +} + +/* BINARY EXTENSION */ +const BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; +const BINARY_EXTENSION_HEADER_LENGTH = 12; +const BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; + +class GLTFBinaryExtension { + + constructor( data ) { + + this.name = EXTENSIONS.KHR_BINARY_GLTF; + this.content = null; + this.body = null; + + const headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); + const textDecoder = new TextDecoder(); + + this.header = { + magic: textDecoder.decode( new Uint8Array( data.slice( 0, 4 ) ) ), + version: headerView.getUint32( 4, true ), + length: headerView.getUint32( 8, true ) + }; + + if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { + + throw new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' ); + + } else if ( this.header.version < 2.0 ) { + + throw new Error( 'THREE.GLTFLoader: Legacy binary file detected.' ); + + } + + const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH; + const chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); + let chunkIndex = 0; + + while ( chunkIndex < chunkContentsLength ) { + + const chunkLength = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + const chunkType = chunkView.getUint32( chunkIndex, true ); + chunkIndex += 4; + + if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { + + const contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); + this.content = textDecoder.decode( contentArray ); + + } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { + + const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; + this.body = data.slice( byteOffset, byteOffset + chunkLength ); + + } + + // Clients must ignore chunks with unknown types. + + chunkIndex += chunkLength; + + } + + if ( this.content === null ) { + + throw new Error( 'THREE.GLTFLoader: JSON content not found.' ); + + } + + } + +} + +/** + * DRACO Mesh Compression Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression + */ +class GLTFDracoMeshCompressionExtension { + + constructor( json, dracoLoader ) { + + if ( ! dracoLoader ) { + + throw new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' ); + + } + + this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; + this.json = json; + this.dracoLoader = dracoLoader; + this.dracoLoader.preload(); + + } + + decodePrimitive( primitive, parser ) { + + const json = this.json; + const dracoLoader = this.dracoLoader; + const bufferViewIndex = primitive.extensions[ this.name ].bufferView; + const gltfAttributeMap = primitive.extensions[ this.name ].attributes; + const threeAttributeMap = {}; + const attributeNormalizedMap = {}; + const attributeTypeMap = {}; + + for ( const attributeName in gltfAttributeMap ) { + + const threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); + + threeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ]; + + } + + for ( const attributeName in primitive.attributes ) { + + const threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); + + if ( gltfAttributeMap[ attributeName ] !== undefined ) { + + const accessorDef = json.accessors[ primitive.attributes[ attributeName ] ]; + const componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + attributeTypeMap[ threeAttributeName ] = componentType.name; + attributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true; + + } + + } + + return parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) { + + return new Promise( function ( resolve, reject ) { + + dracoLoader.decodeDracoFile( bufferView, function ( geometry ) { + + for ( const attributeName in geometry.attributes ) { + + const attribute = geometry.attributes[ attributeName ]; + const normalized = attributeNormalizedMap[ attributeName ]; + + if ( normalized !== undefined ) attribute.normalized = normalized; + + } + + resolve( geometry ); + + }, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject ); + + } ); + + } ); + + } + +} + +/** + * Texture Transform Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform + */ +class GLTFTextureTransformExtension { + + constructor() { + + this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; + + } + + extendTexture( texture, transform ) { + + if ( ( transform.texCoord === undefined || transform.texCoord === texture.channel ) + && transform.offset === undefined + && transform.rotation === undefined + && transform.scale === undefined ) { + + // See https://github.com/mrdoob/three.js/issues/21819. + return texture; + + } + + texture = texture.clone(); + + if ( transform.texCoord !== undefined ) { + + texture.channel = transform.texCoord; + + } + + if ( transform.offset !== undefined ) { + + texture.offset.fromArray( transform.offset ); + + } + + if ( transform.rotation !== undefined ) { + + texture.rotation = transform.rotation; + + } + + if ( transform.scale !== undefined ) { + + texture.repeat.fromArray( transform.scale ); + + } + + texture.needsUpdate = true; + + return texture; + + } + +} + +/** + * Mesh Quantization Extension + * + * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization + */ +class GLTFMeshQuantizationExtension { + + constructor() { + + this.name = EXTENSIONS.KHR_MESH_QUANTIZATION; + + } + +} + +/*********************************/ +/********** INTERPOLATION ********/ +/*********************************/ + +// Spline Interpolation +// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation +class GLTFCubicSplineInterpolant extends Interpolant { + + constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + super( parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + copySampleValue_( index ) { + + // Copies a sample value to the result buffer. See description of glTF + // CUBICSPLINE values layout in interpolate_() function below. + + const result = this.resultBuffer, + values = this.sampleValues, + valueSize = this.valueSize, + offset = index * valueSize * 3 + valueSize; + + for ( let i = 0; i !== valueSize; i ++ ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + } + + interpolate_( i1, t0, t, t1 ) { + + const result = this.resultBuffer; + const values = this.sampleValues; + const stride = this.valueSize; + + const stride2 = stride * 2; + const stride3 = stride * 3; + + const td = t1 - t0; + + const p = ( t - t0 ) / td; + const pp = p * p; + const ppp = pp * p; + + const offset1 = i1 * stride3; + const offset0 = offset1 - stride3; + + const s2 = - 2 * ppp + 3 * pp; + const s3 = ppp - pp; + const s0 = 1 - s2; + const s1 = s3 - pp + p; + + // Layout of keyframe output values for CUBICSPLINE animations: + // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ] + for ( let i = 0; i !== stride; i ++ ) { + + const p0 = values[ offset0 + i + stride ]; // splineVertex_k + const m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k) + const p1 = values[ offset1 + i + stride ]; // splineVertex_k+1 + const m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k) + + result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; + + } + + return result; + + } + +} + +const _q = new Quaternion(); + +class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant { + + interpolate_( i1, t0, t, t1 ) { + + const result = super.interpolate_( i1, t0, t, t1 ); + + _q.fromArray( result ).normalize().toArray( result ); + + return result; + + } + +} + + +/*********************************/ +/********** INTERNALS ************/ +/*********************************/ + +/* CONSTANTS */ + +const WEBGL_CONSTANTS = { + FLOAT: 5126, + //FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123 +}; + +const WEBGL_COMPONENT_TYPES = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array +}; + +const WEBGL_FILTERS = { + 9728: NearestFilter, + 9729: LinearFilter, + 9984: NearestMipmapNearestFilter, + 9985: LinearMipmapNearestFilter, + 9986: NearestMipmapLinearFilter, + 9987: LinearMipmapLinearFilter +}; + +const WEBGL_WRAPPINGS = { + 33071: ClampToEdgeWrapping, + 33648: MirroredRepeatWrapping, + 10497: RepeatWrapping +}; + +const WEBGL_TYPE_SIZES = { + 'SCALAR': 1, + 'VEC2': 2, + 'VEC3': 3, + 'VEC4': 4, + 'MAT2': 4, + 'MAT3': 9, + 'MAT4': 16 +}; + +const ATTRIBUTES = { + POSITION: 'position', + NORMAL: 'normal', + TANGENT: 'tangent', + TEXCOORD_0: 'uv', + TEXCOORD_1: 'uv1', + TEXCOORD_2: 'uv2', + TEXCOORD_3: 'uv3', + COLOR_0: 'color', + WEIGHTS_0: 'skinWeight', + JOINTS_0: 'skinIndex', +}; + +const PATH_PROPERTIES = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion', + weights: 'morphTargetInfluences' +}; + +const INTERPOLATION = { + CUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each + // keyframe track will be initialized with a default interpolation type, then modified. + LINEAR: InterpolateLinear, + STEP: InterpolateDiscrete +}; + +const ALPHA_MODES = { + OPAQUE: 'OPAQUE', + MASK: 'MASK', + BLEND: 'BLEND' +}; + +/** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material + */ +function createDefaultMaterial( cache ) { + + if ( cache[ 'DefaultMaterial' ] === undefined ) { + + cache[ 'DefaultMaterial' ] = new MeshStandardMaterial( { + color: 0xFFFFFF, + emissive: 0x000000, + metalness: 1, + roughness: 1, + transparent: false, + depthTest: true, + side: FrontSide + } ); + + } + + return cache[ 'DefaultMaterial' ]; + +} + +function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) { + + // Add unknown glTF extensions to an object's userData. + + for ( const name in objectDef.extensions ) { + + if ( knownExtensions[ name ] === undefined ) { + + object.userData.gltfExtensions = object.userData.gltfExtensions || {}; + object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ]; + + } + + } + +} + +/** + * @param {Object3D|Material|BufferGeometry} object + * @param {GLTF.definition} gltfDef + */ +function assignExtrasToUserData( object, gltfDef ) { + + if ( gltfDef.extras !== undefined ) { + + if ( typeof gltfDef.extras === 'object' ) { + + Object.assign( object.userData, gltfDef.extras ); + + } else { + + console.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras ); + + } + + } + +} + +/** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets + * + * @param {BufferGeometry} geometry + * @param {Array} targets + * @param {GLTFParser} parser + * @return {Promise} + */ +function addMorphTargets( geometry, targets, parser ) { + + let hasMorphPosition = false; + let hasMorphNormal = false; + let hasMorphColor = false; + + for ( let i = 0, il = targets.length; i < il; i ++ ) { + + const target = targets[ i ]; + + if ( target.POSITION !== undefined ) hasMorphPosition = true; + if ( target.NORMAL !== undefined ) hasMorphNormal = true; + if ( target.COLOR_0 !== undefined ) hasMorphColor = true; + + if ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break; + + } + + if ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry ); + + const pendingPositionAccessors = []; + const pendingNormalAccessors = []; + const pendingColorAccessors = []; + + for ( let i = 0, il = targets.length; i < il; i ++ ) { + + const target = targets[ i ]; + + if ( hasMorphPosition ) { + + const pendingAccessor = target.POSITION !== undefined + ? parser.getDependency( 'accessor', target.POSITION ) + : geometry.attributes.position; + + pendingPositionAccessors.push( pendingAccessor ); + + } + + if ( hasMorphNormal ) { + + const pendingAccessor = target.NORMAL !== undefined + ? parser.getDependency( 'accessor', target.NORMAL ) + : geometry.attributes.normal; + + pendingNormalAccessors.push( pendingAccessor ); + + } + + if ( hasMorphColor ) { + + const pendingAccessor = target.COLOR_0 !== undefined + ? parser.getDependency( 'accessor', target.COLOR_0 ) + : geometry.attributes.color; + + pendingColorAccessors.push( pendingAccessor ); + + } + + } + + return Promise.all( [ + Promise.all( pendingPositionAccessors ), + Promise.all( pendingNormalAccessors ), + Promise.all( pendingColorAccessors ) + ] ).then( function ( accessors ) { + + const morphPositions = accessors[ 0 ]; + const morphNormals = accessors[ 1 ]; + const morphColors = accessors[ 2 ]; + + if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions; + if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals; + if ( hasMorphColor ) geometry.morphAttributes.color = morphColors; + geometry.morphTargetsRelative = true; + + return geometry; + + } ); + +} + +/** + * @param {Mesh} mesh + * @param {GLTF.Mesh} meshDef + */ +function updateMorphTargets( mesh, meshDef ) { + + mesh.updateMorphTargets(); + + if ( meshDef.weights !== undefined ) { + + for ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) { + + mesh.morphTargetInfluences[ i ] = meshDef.weights[ i ]; + + } + + } + + // .extras has user-defined data, so check that .extras.targetNames is an array. + if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) { + + const targetNames = meshDef.extras.targetNames; + + if ( mesh.morphTargetInfluences.length === targetNames.length ) { + + mesh.morphTargetDictionary = {}; + + for ( let i = 0, il = targetNames.length; i < il; i ++ ) { + + mesh.morphTargetDictionary[ targetNames[ i ] ] = i; + + } + + } else { + + console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' ); + + } + + } + +} + +function createPrimitiveKey( primitiveDef ) { + + let geometryKey; + + const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]; + + if ( dracoExtension ) { + + geometryKey = 'draco:' + dracoExtension.bufferView + + ':' + dracoExtension.indices + + ':' + createAttributesKey( dracoExtension.attributes ); + + } else { + + geometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode; + + } + + if ( primitiveDef.targets !== undefined ) { + + for ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) { + + geometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] ); + + } + + } + + return geometryKey; + +} + +function createAttributesKey( attributes ) { + + let attributesKey = ''; + + const keys = Object.keys( attributes ).sort(); + + for ( let i = 0, il = keys.length; i < il; i ++ ) { + + attributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';'; + + } + + return attributesKey; + +} + +function getNormalizedComponentScale( constructor ) { + + // Reference: + // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data + + switch ( constructor ) { + + case Int8Array: + return 1 / 127; + + case Uint8Array: + return 1 / 255; + + case Int16Array: + return 1 / 32767; + + case Uint16Array: + return 1 / 65535; + + default: + throw new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' ); + + } + +} + +function getImageURIMimeType( uri ) { + + if ( uri.search( /\.jpe?g($|\?)/i ) > 0 || uri.search( /^data\:image\/jpeg/ ) === 0 ) return 'image/jpeg'; + if ( uri.search( /\.webp($|\?)/i ) > 0 || uri.search( /^data\:image\/webp/ ) === 0 ) return 'image/webp'; + + return 'image/png'; + +} + +const _identityMatrix = new Matrix4(); + +/* GLTF PARSER */ + +class GLTFParser { + + constructor( json = {}, options = {} ) { + + this.json = json; + this.extensions = {}; + this.plugins = {}; + this.options = options; + + // loader object cache + this.cache = new GLTFRegistry(); + + // associations between Three.js objects and glTF elements + this.associations = new Map(); + + // BufferGeometry caching + this.primitiveCache = {}; + + // Node cache + this.nodeCache = {}; + + // Object3D instance caches + this.meshCache = { refs: {}, uses: {} }; + this.cameraCache = { refs: {}, uses: {} }; + this.lightCache = { refs: {}, uses: {} }; + + this.sourceCache = {}; + this.textureCache = {}; + + // Track node names, to ensure no duplicates + this.nodeNamesUsed = {}; + + // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the + // expensive work of uploading a texture to the GPU off the main thread. + + let isSafari = false; + let isFirefox = false; + let firefoxVersion = - 1; + + if ( typeof navigator !== 'undefined' ) { + + isSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true; + isFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1; + firefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\/([0-9]+)\./ )[ 1 ] : - 1; + + } + + if ( typeof createImageBitmap === 'undefined' || isSafari || ( isFirefox && firefoxVersion < 98 ) ) { + + this.textureLoader = new TextureLoader( this.options.manager ); + + } else { + + this.textureLoader = new ImageBitmapLoader( this.options.manager ); + + } + + this.textureLoader.setCrossOrigin( this.options.crossOrigin ); + this.textureLoader.setRequestHeader( this.options.requestHeader ); + + this.fileLoader = new FileLoader( this.options.manager ); + this.fileLoader.setResponseType( 'arraybuffer' ); + + if ( this.options.crossOrigin === 'use-credentials' ) { + + this.fileLoader.setWithCredentials( true ); + + } + + } + + setExtensions( extensions ) { + + this.extensions = extensions; + + } + + setPlugins( plugins ) { + + this.plugins = plugins; + + } + + parse( onLoad, onError ) { + + const parser = this; + const json = this.json; + const extensions = this.extensions; + + // Clear the loader cache + this.cache.removeAll(); + this.nodeCache = {}; + + // Mark the special nodes/meshes in json for efficient parse + this._invokeAll( function ( ext ) { + + return ext._markDefs && ext._markDefs(); + + } ); + + Promise.all( this._invokeAll( function ( ext ) { + + return ext.beforeRoot && ext.beforeRoot(); + + } ) ).then( function () { + + return Promise.all( [ + + parser.getDependencies( 'scene' ), + parser.getDependencies( 'animation' ), + parser.getDependencies( 'camera' ), + + ] ); + + } ).then( function ( dependencies ) { + + const result = { + scene: dependencies[ 0 ][ json.scene || 0 ], + scenes: dependencies[ 0 ], + animations: dependencies[ 1 ], + cameras: dependencies[ 2 ], + asset: json.asset, + parser: parser, + userData: {} + }; + + addUnknownExtensionsToUserData( extensions, result, json ); + + assignExtrasToUserData( result, json ); + + return Promise.all( parser._invokeAll( function ( ext ) { + + return ext.afterRoot && ext.afterRoot( result ); + + } ) ).then( function () { + + for ( const scene of result.scenes ) { + + scene.updateMatrixWorld(); + + } + + onLoad( result ); + + } ); + + } ).catch( onError ); + + } + + /** + * Marks the special nodes/meshes in json for efficient parse. + */ + _markDefs() { + + const nodeDefs = this.json.nodes || []; + const skinDefs = this.json.skins || []; + const meshDefs = this.json.meshes || []; + + // Nothing in the node definition indicates whether it is a Bone or an + // Object3D. Use the skins' joint references to mark bones. + for ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) { + + const joints = skinDefs[ skinIndex ].joints; + + for ( let i = 0, il = joints.length; i < il; i ++ ) { + + nodeDefs[ joints[ i ] ].isBone = true; + + } + + } + + // Iterate over all nodes, marking references to shared resources, + // as well as skeleton joints. + for ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { + + const nodeDef = nodeDefs[ nodeIndex ]; + + if ( nodeDef.mesh !== undefined ) { + + this._addNodeRef( this.meshCache, nodeDef.mesh ); + + // Nothing in the mesh definition indicates whether it is + // a SkinnedMesh or Mesh. Use the node's mesh reference + // to mark SkinnedMesh if node has skin. + if ( nodeDef.skin !== undefined ) { + + meshDefs[ nodeDef.mesh ].isSkinnedMesh = true; + + } + + } + + if ( nodeDef.camera !== undefined ) { + + this._addNodeRef( this.cameraCache, nodeDef.camera ); + + } + + } + + } + + /** + * Counts references to shared node / Object3D resources. These resources + * can be reused, or "instantiated", at multiple nodes in the scene + * hierarchy. Mesh, Camera, and Light instances are instantiated and must + * be marked. Non-scenegraph resources (like Materials, Geometries, and + * Textures) can be reused directly and are not marked here. + * + * Example: CesiumMilkTruck sample model reuses "Wheel" meshes. + */ + _addNodeRef( cache, index ) { + + if ( index === undefined ) return; + + if ( cache.refs[ index ] === undefined ) { + + cache.refs[ index ] = cache.uses[ index ] = 0; + + } + + cache.refs[ index ] ++; + + } + + /** Returns a reference to a shared resource, cloning it if necessary. */ + _getNodeRef( cache, index, object ) { + + if ( cache.refs[ index ] <= 1 ) return object; + + const ref = object.clone(); + + // Propagates mappings to the cloned object, prevents mappings on the + // original object from being lost. + const updateMappings = ( original, clone ) => { + + const mappings = this.associations.get( original ); + if ( mappings != null ) { + + this.associations.set( clone, mappings ); + + } + + for ( const [ i, child ] of original.children.entries() ) { + + updateMappings( child, clone.children[ i ] ); + + } + + }; + + updateMappings( object, ref ); + + ref.name += '_instance_' + ( cache.uses[ index ] ++ ); + + return ref; + + } + + _invokeOne( func ) { + + const extensions = Object.values( this.plugins ); + extensions.push( this ); + + for ( let i = 0; i < extensions.length; i ++ ) { + + const result = func( extensions[ i ] ); + + if ( result ) return result; + + } + + return null; + + } + + _invokeAll( func ) { + + const extensions = Object.values( this.plugins ); + extensions.unshift( this ); + + const pending = []; + + for ( let i = 0; i < extensions.length; i ++ ) { + + const result = func( extensions[ i ] ); + + if ( result ) pending.push( result ); + + } + + return pending; + + } + + /** + * Requests the specified dependency asynchronously, with caching. + * @param {string} type + * @param {number} index + * @return {Promise} + */ + getDependency( type, index ) { + + const cacheKey = type + ':' + index; + let dependency = this.cache.get( cacheKey ); + + if ( ! dependency ) { + + switch ( type ) { + + case 'scene': + dependency = this.loadScene( index ); + break; + + case 'node': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadNode && ext.loadNode( index ); + + } ); + break; + + case 'mesh': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadMesh && ext.loadMesh( index ); + + } ); + break; + + case 'accessor': + dependency = this.loadAccessor( index ); + break; + + case 'bufferView': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadBufferView && ext.loadBufferView( index ); + + } ); + break; + + case 'buffer': + dependency = this.loadBuffer( index ); + break; + + case 'material': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadMaterial && ext.loadMaterial( index ); + + } ); + break; + + case 'texture': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadTexture && ext.loadTexture( index ); + + } ); + break; + + case 'skin': + dependency = this.loadSkin( index ); + break; + + case 'animation': + dependency = this._invokeOne( function ( ext ) { + + return ext.loadAnimation && ext.loadAnimation( index ); + + } ); + break; + + case 'camera': + dependency = this.loadCamera( index ); + break; + + default: + dependency = this._invokeOne( function ( ext ) { + + return ext != this && ext.getDependency && ext.getDependency( type, index ); + + } ); + + if ( ! dependency ) { + + throw new Error( 'Unknown type: ' + type ); + + } + + break; + + } + + this.cache.add( cacheKey, dependency ); + + } + + return dependency; + + } + + /** + * Requests all dependencies of the specified type asynchronously, with caching. + * @param {string} type + * @return {Promise>} + */ + getDependencies( type ) { + + let dependencies = this.cache.get( type ); + + if ( ! dependencies ) { + + const parser = this; + const defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || []; + + dependencies = Promise.all( defs.map( function ( def, index ) { + + return parser.getDependency( type, index ); + + } ) ); + + this.cache.add( type, dependencies ); + + } + + return dependencies; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferIndex + * @return {Promise} + */ + loadBuffer( bufferIndex ) { + + const bufferDef = this.json.buffers[ bufferIndex ]; + const loader = this.fileLoader; + + if ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) { + + throw new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' ); + + } + + // If present, GLB container is required to be the first buffer. + if ( bufferDef.uri === undefined && bufferIndex === 0 ) { + + return Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body ); + + } + + const options = this.options; + + return new Promise( function ( resolve, reject ) { + + loader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () { + + reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) ); + + } ); + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views + * @param {number} bufferViewIndex + * @return {Promise} + */ + loadBufferView( bufferViewIndex ) { + + const bufferViewDef = this.json.bufferViews[ bufferViewIndex ]; + + return this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) { + + const byteLength = bufferViewDef.byteLength || 0; + const byteOffset = bufferViewDef.byteOffset || 0; + return buffer.slice( byteOffset, byteOffset + byteLength ); + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors + * @param {number} accessorIndex + * @return {Promise} + */ + loadAccessor( accessorIndex ) { + + const parser = this; + const json = this.json; + + const accessorDef = this.json.accessors[ accessorIndex ]; + + if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) { + + const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; + const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + const normalized = accessorDef.normalized === true; + + const array = new TypedArray( accessorDef.count * itemSize ); + return Promise.resolve( new BufferAttribute( array, itemSize, normalized ) ); + + } + + const pendingBufferViews = []; + + if ( accessorDef.bufferView !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) ); + + } else { + + pendingBufferViews.push( null ); + + } + + if ( accessorDef.sparse !== undefined ) { + + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) ); + pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) ); + + } + + return Promise.all( pendingBufferViews ).then( function ( bufferViews ) { + + const bufferView = bufferViews[ 0 ]; + + const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; + const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; + + // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. + const elementBytes = TypedArray.BYTES_PER_ELEMENT; + const itemBytes = elementBytes * itemSize; + const byteOffset = accessorDef.byteOffset || 0; + const byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined; + const normalized = accessorDef.normalized === true; + let array, bufferAttribute; + + // The buffer is not interleaved if the stride is the item size in bytes. + if ( byteStride && byteStride !== itemBytes ) { + + // Each "slice" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer + // This makes sure that IBA.count reflects accessor.count properly + const ibSlice = Math.floor( byteOffset / byteStride ); + const ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count; + let ib = parser.cache.get( ibCacheKey ); + + if ( ! ib ) { + + array = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes ); + + // Integer parameters to IB/IBA are in array elements, not bytes. + ib = new InterleavedBuffer( array, byteStride / elementBytes ); + + parser.cache.add( ibCacheKey, ib ); + + } + + bufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized ); + + } else { + + if ( bufferView === null ) { + + array = new TypedArray( accessorDef.count * itemSize ); + + } else { + + array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize ); + + } + + bufferAttribute = new BufferAttribute( array, itemSize, normalized ); + + } + + // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors + if ( accessorDef.sparse !== undefined ) { + + const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; + const TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ]; + + const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; + const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; + + const sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices ); + const sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize ); + + if ( bufferView !== null ) { + + // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes. + bufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized ); + + } + + for ( let i = 0, il = sparseIndices.length; i < il; i ++ ) { + + const index = sparseIndices[ i ]; + + bufferAttribute.setX( index, sparseValues[ i * itemSize ] ); + if ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] ); + if ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] ); + if ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] ); + if ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' ); + + } + + } + + return bufferAttribute; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures + * @param {number} textureIndex + * @return {Promise} + */ + loadTexture( textureIndex ) { + + const json = this.json; + const options = this.options; + const textureDef = json.textures[ textureIndex ]; + const sourceIndex = textureDef.source; + const sourceDef = json.images[ sourceIndex ]; + + let loader = this.textureLoader; + + if ( sourceDef.uri ) { + + const handler = options.manager.getHandler( sourceDef.uri ); + if ( handler !== null ) loader = handler; + + } + + return this.loadTextureImage( textureIndex, sourceIndex, loader ); + + } + + loadTextureImage( textureIndex, sourceIndex, loader ) { + + const parser = this; + const json = this.json; + + const textureDef = json.textures[ textureIndex ]; + const sourceDef = json.images[ sourceIndex ]; + + const cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler; + + if ( this.textureCache[ cacheKey ] ) { + + // See https://github.com/mrdoob/three.js/issues/21559. + return this.textureCache[ cacheKey ]; + + } + + const promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) { + + texture.flipY = false; + + texture.name = textureDef.name || sourceDef.name || ''; + + if ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) { + + texture.name = sourceDef.uri; + + } + + const samplers = json.samplers || {}; + const sampler = samplers[ textureDef.sampler ] || {}; + + texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter; + texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter; + texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping; + texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping; + + parser.associations.set( texture, { textures: textureIndex } ); + + return texture; + + } ).catch( function () { + + return null; + + } ); + + this.textureCache[ cacheKey ] = promise; + + return promise; + + } + + loadImageSource( sourceIndex, loader ) { + + const parser = this; + const json = this.json; + const options = this.options; + + if ( this.sourceCache[ sourceIndex ] !== undefined ) { + + return this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() ); + + } + + const sourceDef = json.images[ sourceIndex ]; + + const URL = self.URL || self.webkitURL; + + let sourceURI = sourceDef.uri || ''; + let isObjectURL = false; + + if ( sourceDef.bufferView !== undefined ) { + + // Load binary image data from bufferView, if provided. + + sourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) { + + isObjectURL = true; + const blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } ); + sourceURI = URL.createObjectURL( blob ); + return sourceURI; + + } ); + + } else if ( sourceDef.uri === undefined ) { + + throw new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' ); + + } + + const promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) { + + return new Promise( function ( resolve, reject ) { + + let onLoad = resolve; + + if ( loader.isImageBitmapLoader === true ) { + + onLoad = function ( imageBitmap ) { + + const texture = new Texture( imageBitmap ); + texture.needsUpdate = true; + + resolve( texture ); + + }; + + } + + loader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject ); + + } ); + + } ).then( function ( texture ) { + + // Clean up resources and configure Texture. + + if ( isObjectURL === true ) { + + URL.revokeObjectURL( sourceURI ); + + } + + texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri ); + + return texture; + + } ).catch( function ( error ) { + + console.error( 'THREE.GLTFLoader: Couldn\'t load texture', sourceURI ); + throw error; + + } ); + + this.sourceCache[ sourceIndex ] = promise; + return promise; + + } + + /** + * Asynchronously assigns a texture to the given material parameters. + * @param {Object} materialParams + * @param {string} mapName + * @param {Object} mapDef + * @return {Promise} + */ + assignTexture( materialParams, mapName, mapDef, colorSpace ) { + + const parser = this; + + return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) { + + if ( ! texture ) return null; + + if ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) { + + texture = texture.clone(); + texture.channel = mapDef.texCoord; + + } + + if ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) { + + const transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined; + + if ( transform ) { + + const gltfReference = parser.associations.get( texture ); + texture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform ); + parser.associations.set( texture, gltfReference ); + + } + + } + + if ( colorSpace !== undefined ) { + + texture.colorSpace = colorSpace; + + } + + materialParams[ mapName ] = texture; + + return texture; + + } ); + + } + + /** + * Assigns final material to a Mesh, Line, or Points instance. The instance + * already has a material (generated from the glTF material options alone) + * but reuse of the same glTF material may require multiple threejs materials + * to accommodate different primitive types, defines, etc. New materials will + * be created if necessary, and reused from a cache. + * @param {Object3D} mesh Mesh, Line, or Points instance. + */ + assignFinalMaterial( mesh ) { + + const geometry = mesh.geometry; + let material = mesh.material; + + const useDerivativeTangents = geometry.attributes.tangent === undefined; + const useVertexColors = geometry.attributes.color !== undefined; + const useFlatShading = geometry.attributes.normal === undefined; + + if ( mesh.isPoints ) { + + const cacheKey = 'PointsMaterial:' + material.uuid; + + let pointsMaterial = this.cache.get( cacheKey ); + + if ( ! pointsMaterial ) { + + pointsMaterial = new PointsMaterial(); + Material.prototype.copy.call( pointsMaterial, material ); + pointsMaterial.color.copy( material.color ); + pointsMaterial.map = material.map; + pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px + + this.cache.add( cacheKey, pointsMaterial ); + + } + + material = pointsMaterial; + + } else if ( mesh.isLine ) { + + const cacheKey = 'LineBasicMaterial:' + material.uuid; + + let lineMaterial = this.cache.get( cacheKey ); + + if ( ! lineMaterial ) { + + lineMaterial = new LineBasicMaterial(); + Material.prototype.copy.call( lineMaterial, material ); + lineMaterial.color.copy( material.color ); + lineMaterial.map = material.map; + + this.cache.add( cacheKey, lineMaterial ); + + } + + material = lineMaterial; + + } + + // Clone the material if it will be modified + if ( useDerivativeTangents || useVertexColors || useFlatShading ) { + + let cacheKey = 'ClonedMaterial:' + material.uuid + ':'; + + if ( useDerivativeTangents ) cacheKey += 'derivative-tangents:'; + if ( useVertexColors ) cacheKey += 'vertex-colors:'; + if ( useFlatShading ) cacheKey += 'flat-shading:'; + + let cachedMaterial = this.cache.get( cacheKey ); + + if ( ! cachedMaterial ) { + + cachedMaterial = material.clone(); + + if ( useVertexColors ) cachedMaterial.vertexColors = true; + if ( useFlatShading ) cachedMaterial.flatShading = true; + + if ( useDerivativeTangents ) { + + // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995 + if ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1; + if ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1; + + } + + this.cache.add( cacheKey, cachedMaterial ); + + this.associations.set( cachedMaterial, this.associations.get( material ) ); + + } + + material = cachedMaterial; + + } + + mesh.material = material; + + } + + getMaterialType( /* materialIndex */ ) { + + return MeshStandardMaterial; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials + * @param {number} materialIndex + * @return {Promise} + */ + loadMaterial( materialIndex ) { + + const parser = this; + const json = this.json; + const extensions = this.extensions; + const materialDef = json.materials[ materialIndex ]; + + let materialType; + const materialParams = {}; + const materialExtensions = materialDef.extensions || {}; + + const pending = []; + + if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) { + + const kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ]; + materialType = kmuExtension.getMaterialType(); + pending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) ); + + } else { + + // Specification: + // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material + + const metallicRoughness = materialDef.pbrMetallicRoughness || {}; + + materialParams.color = new Color( 1.0, 1.0, 1.0 ); + materialParams.opacity = 1.0; + + if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { + + const array = metallicRoughness.baseColorFactor; + + materialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace ); + materialParams.opacity = array[ 3 ]; + + } + + if ( metallicRoughness.baseColorTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) ); + + } + + materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; + materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; + + if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { + + pending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) ); + pending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) ); + + } + + materialType = this._invokeOne( function ( ext ) { + + return ext.getMaterialType && ext.getMaterialType( materialIndex ); + + } ); + + pending.push( Promise.all( this._invokeAll( function ( ext ) { + + return ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams ); + + } ) ) ); + + } + + if ( materialDef.doubleSided === true ) { + + materialParams.side = DoubleSide; + + } + + const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; + + if ( alphaMode === ALPHA_MODES.BLEND ) { + + materialParams.transparent = true; + + // See: https://github.com/mrdoob/three.js/issues/17706 + materialParams.depthWrite = false; + + } else { + + materialParams.transparent = false; + + if ( alphaMode === ALPHA_MODES.MASK ) { + + materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5; + + } + + } + + if ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) ); + + materialParams.normalScale = new Vector2( 1, 1 ); + + if ( materialDef.normalTexture.scale !== undefined ) { + + const scale = materialDef.normalTexture.scale; + + materialParams.normalScale.set( scale, scale ); + + } + + } + + if ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) ); + + if ( materialDef.occlusionTexture.strength !== undefined ) { + + materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; + + } + + } + + if ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) { + + const emissiveFactor = materialDef.emissiveFactor; + materialParams.emissive = new Color().setRGB( emissiveFactor[ 0 ], emissiveFactor[ 1 ], emissiveFactor[ 2 ], LinearSRGBColorSpace ); + + } + + if ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) { + + pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, SRGBColorSpace ) ); + + } + + return Promise.all( pending ).then( function () { + + const material = new materialType( materialParams ); + + if ( materialDef.name ) material.name = materialDef.name; + + assignExtrasToUserData( material, materialDef ); + + parser.associations.set( material, { materials: materialIndex } ); + + if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef ); + + return material; + + } ); + + } + + /** When Object3D instances are targeted by animation, they need unique names. */ + createUniqueName( originalName ) { + + const sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' ); + + if ( sanitizedName in this.nodeNamesUsed ) { + + return sanitizedName + '_' + ( ++ this.nodeNamesUsed[ sanitizedName ] ); + + } else { + + this.nodeNamesUsed[ sanitizedName ] = 0; + + return sanitizedName; + + } + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry + * + * Creates BufferGeometries from primitives. + * + * @param {Array} primitives + * @return {Promise>} + */ + loadGeometries( primitives ) { + + const parser = this; + const extensions = this.extensions; + const cache = this.primitiveCache; + + function createDracoPrimitive( primitive ) { + + return extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] + .decodePrimitive( primitive, parser ) + .then( function ( geometry ) { + + return addPrimitiveAttributes( geometry, primitive, parser ); + + } ); + + } + + const pending = []; + + for ( let i = 0, il = primitives.length; i < il; i ++ ) { + + const primitive = primitives[ i ]; + const cacheKey = createPrimitiveKey( primitive ); + + // See if we've already created this geometry + const cached = cache[ cacheKey ]; + + if ( cached ) { + + // Use the cached geometry if it exists + pending.push( cached.promise ); + + } else { + + let geometryPromise; + + if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) { + + // Use DRACO geometry if available + geometryPromise = createDracoPrimitive( primitive ); + + } else { + + // Otherwise create a new geometry + geometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser ); + + } + + // Cache this geometry + cache[ cacheKey ] = { primitive: primitive, promise: geometryPromise }; + + pending.push( geometryPromise ); + + } + + } + + return Promise.all( pending ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes + * @param {number} meshIndex + * @return {Promise} + */ + loadMesh( meshIndex ) { + + const parser = this; + const json = this.json; + const extensions = this.extensions; + + const meshDef = json.meshes[ meshIndex ]; + const primitives = meshDef.primitives; + + const pending = []; + + for ( let i = 0, il = primitives.length; i < il; i ++ ) { + + const material = primitives[ i ].material === undefined + ? createDefaultMaterial( this.cache ) + : this.getDependency( 'material', primitives[ i ].material ); + + pending.push( material ); + + } + + pending.push( parser.loadGeometries( primitives ) ); + + return Promise.all( pending ).then( function ( results ) { + + const materials = results.slice( 0, results.length - 1 ); + const geometries = results[ results.length - 1 ]; + + const meshes = []; + + for ( let i = 0, il = geometries.length; i < il; i ++ ) { + + const geometry = geometries[ i ]; + const primitive = primitives[ i ]; + + // 1. create Mesh + + let mesh; + + const material = materials[ i ]; + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || + primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || + primitive.mode === undefined ) { + + // .isSkinnedMesh isn't in glTF spec. See ._markDefs() + mesh = meshDef.isSkinnedMesh === true + ? new SkinnedMesh( geometry, material ) + : new Mesh( geometry, material ); + + if ( mesh.isSkinnedMesh === true ) { + + // normalize skin weights to fix malformed assets (see #15319) + mesh.normalizeSkinWeights(); + + } + + if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) { + + mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) { + + mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode ); + + } + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { + + mesh = new LineSegments( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) { + + mesh = new Line( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) { + + mesh = new LineLoop( geometry, material ); + + } else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) { + + mesh = new Points( geometry, material ); + + } else { + + throw new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode ); + + } + + if ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) { + + updateMorphTargets( mesh, meshDef ); + + } + + mesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) ); + + assignExtrasToUserData( mesh, meshDef ); + + if ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive ); + + parser.assignFinalMaterial( mesh ); + + meshes.push( mesh ); + + } + + for ( let i = 0, il = meshes.length; i < il; i ++ ) { + + parser.associations.set( meshes[ i ], { + meshes: meshIndex, + primitives: i + } ); + + } + + if ( meshes.length === 1 ) { + + if ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, meshes[ 0 ], meshDef ); + + return meshes[ 0 ]; + + } + + const group = new Group(); + + if ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, group, meshDef ); + + parser.associations.set( group, { meshes: meshIndex } ); + + for ( let i = 0, il = meshes.length; i < il; i ++ ) { + + group.add( meshes[ i ] ); + + } + + return group; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras + * @param {number} cameraIndex + * @return {Promise} + */ + loadCamera( cameraIndex ) { + + let camera; + const cameraDef = this.json.cameras[ cameraIndex ]; + const params = cameraDef[ cameraDef.type ]; + + if ( ! params ) { + + console.warn( 'THREE.GLTFLoader: Missing camera parameters.' ); + return; + + } + + if ( cameraDef.type === 'perspective' ) { + + camera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 ); + + } else if ( cameraDef.type === 'orthographic' ) { + + camera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar ); + + } + + if ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name ); + + assignExtrasToUserData( camera, cameraDef ); + + return Promise.resolve( camera ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins + * @param {number} skinIndex + * @return {Promise} + */ + loadSkin( skinIndex ) { + + const skinDef = this.json.skins[ skinIndex ]; + + const pending = []; + + for ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) { + + pending.push( this._loadNodeShallow( skinDef.joints[ i ] ) ); + + } + + if ( skinDef.inverseBindMatrices !== undefined ) { + + pending.push( this.getDependency( 'accessor', skinDef.inverseBindMatrices ) ); + + } else { + + pending.push( null ); + + } + + return Promise.all( pending ).then( function ( results ) { + + const inverseBindMatrices = results.pop(); + const jointNodes = results; + + // Note that bones (joint nodes) may or may not be in the + // scene graph at this time. + + const bones = []; + const boneInverses = []; + + for ( let i = 0, il = jointNodes.length; i < il; i ++ ) { + + const jointNode = jointNodes[ i ]; + + if ( jointNode ) { + + bones.push( jointNode ); + + const mat = new Matrix4(); + + if ( inverseBindMatrices !== null ) { + + mat.fromArray( inverseBindMatrices.array, i * 16 ); + + } + + boneInverses.push( mat ); + + } else { + + console.warn( 'THREE.GLTFLoader: Joint "%s" could not be found.', skinDef.joints[ i ] ); + + } + + } + + return new Skeleton( bones, boneInverses ); + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations + * @param {number} animationIndex + * @return {Promise} + */ + loadAnimation( animationIndex ) { + + const json = this.json; + const parser = this; + + const animationDef = json.animations[ animationIndex ]; + const animationName = animationDef.name ? animationDef.name : 'animation_' + animationIndex; + + const pendingNodes = []; + const pendingInputAccessors = []; + const pendingOutputAccessors = []; + const pendingSamplers = []; + const pendingTargets = []; + + for ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) { + + const channel = animationDef.channels[ i ]; + const sampler = animationDef.samplers[ channel.sampler ]; + const target = channel.target; + const name = target.node; + const input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input; + const output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output; + + if ( target.node === undefined ) continue; + + pendingNodes.push( this.getDependency( 'node', name ) ); + pendingInputAccessors.push( this.getDependency( 'accessor', input ) ); + pendingOutputAccessors.push( this.getDependency( 'accessor', output ) ); + pendingSamplers.push( sampler ); + pendingTargets.push( target ); + + } + + return Promise.all( [ + + Promise.all( pendingNodes ), + Promise.all( pendingInputAccessors ), + Promise.all( pendingOutputAccessors ), + Promise.all( pendingSamplers ), + Promise.all( pendingTargets ) + + ] ).then( function ( dependencies ) { + + const nodes = dependencies[ 0 ]; + const inputAccessors = dependencies[ 1 ]; + const outputAccessors = dependencies[ 2 ]; + const samplers = dependencies[ 3 ]; + const targets = dependencies[ 4 ]; + + const tracks = []; + + for ( let i = 0, il = nodes.length; i < il; i ++ ) { + + const node = nodes[ i ]; + const inputAccessor = inputAccessors[ i ]; + const outputAccessor = outputAccessors[ i ]; + const sampler = samplers[ i ]; + const target = targets[ i ]; + + if ( node === undefined ) continue; + + if ( node.updateMatrix ) { + + node.updateMatrix(); + + } + + const createdTracks = parser._createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ); + + if ( createdTracks ) { + + for ( let k = 0; k < createdTracks.length; k ++ ) { + + tracks.push( createdTracks[ k ] ); + + } + + } + + } + + return new AnimationClip( animationName, undefined, tracks ); + + } ); + + } + + createNodeMesh( nodeIndex ) { + + const json = this.json; + const parser = this; + const nodeDef = json.nodes[ nodeIndex ]; + + if ( nodeDef.mesh === undefined ) return null; + + return parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) { + + const node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh ); + + // if weights are provided on the node, override weights on the mesh. + if ( nodeDef.weights !== undefined ) { + + node.traverse( function ( o ) { + + if ( ! o.isMesh ) return; + + for ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) { + + o.morphTargetInfluences[ i ] = nodeDef.weights[ i ]; + + } + + } ); + + } + + return node; + + } ); + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy + * @param {number} nodeIndex + * @return {Promise} + */ + loadNode( nodeIndex ) { + + const json = this.json; + const parser = this; + + const nodeDef = json.nodes[ nodeIndex ]; + + const nodePending = parser._loadNodeShallow( nodeIndex ); + + const childPending = []; + const childrenDef = nodeDef.children || []; + + for ( let i = 0, il = childrenDef.length; i < il; i ++ ) { + + childPending.push( parser.getDependency( 'node', childrenDef[ i ] ) ); + + } + + const skeletonPending = nodeDef.skin === undefined + ? Promise.resolve( null ) + : parser.getDependency( 'skin', nodeDef.skin ); + + return Promise.all( [ + nodePending, + Promise.all( childPending ), + skeletonPending + ] ).then( function ( results ) { + + const node = results[ 0 ]; + const children = results[ 1 ]; + const skeleton = results[ 2 ]; + + if ( skeleton !== null ) { + + // This full traverse should be fine because + // child glTF nodes have not been added to this node yet. + node.traverse( function ( mesh ) { + + if ( ! mesh.isSkinnedMesh ) return; + + mesh.bind( skeleton, _identityMatrix ); + + } ); + + } + + for ( let i = 0, il = children.length; i < il; i ++ ) { + + node.add( children[ i ] ); + + } + + return node; + + } ); + + } + + // ._loadNodeShallow() parses a single node. + // skin and child nodes are created and added in .loadNode() (no '_' prefix). + _loadNodeShallow( nodeIndex ) { + + const json = this.json; + const extensions = this.extensions; + const parser = this; + + // This method is called from .loadNode() and .loadSkin(). + // Cache a node to avoid duplication. + + if ( this.nodeCache[ nodeIndex ] !== undefined ) { + + return this.nodeCache[ nodeIndex ]; + + } + + const nodeDef = json.nodes[ nodeIndex ]; + + // reserve node's name before its dependencies, so the root has the intended name. + const nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : ''; + + const pending = []; + + const meshPromise = parser._invokeOne( function ( ext ) { + + return ext.createNodeMesh && ext.createNodeMesh( nodeIndex ); + + } ); + + if ( meshPromise ) { + + pending.push( meshPromise ); + + } + + if ( nodeDef.camera !== undefined ) { + + pending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) { + + return parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera ); + + } ) ); + + } + + parser._invokeAll( function ( ext ) { + + return ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex ); + + } ).forEach( function ( promise ) { + + pending.push( promise ); + + } ); + + this.nodeCache[ nodeIndex ] = Promise.all( pending ).then( function ( objects ) { + + let node; + + // .isBone isn't in glTF spec. See ._markDefs + if ( nodeDef.isBone === true ) { + + node = new Bone(); + + } else if ( objects.length > 1 ) { + + node = new Group(); + + } else if ( objects.length === 1 ) { + + node = objects[ 0 ]; + + } else { + + node = new Object3D(); + + } + + if ( node !== objects[ 0 ] ) { + + for ( let i = 0, il = objects.length; i < il; i ++ ) { + + node.add( objects[ i ] ); + + } + + } + + if ( nodeDef.name ) { + + node.userData.name = nodeDef.name; + node.name = nodeName; + + } + + assignExtrasToUserData( node, nodeDef ); + + if ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef ); + + if ( nodeDef.matrix !== undefined ) { + + const matrix = new Matrix4(); + matrix.fromArray( nodeDef.matrix ); + node.applyMatrix4( matrix ); + + } else { + + if ( nodeDef.translation !== undefined ) { + + node.position.fromArray( nodeDef.translation ); + + } + + if ( nodeDef.rotation !== undefined ) { + + node.quaternion.fromArray( nodeDef.rotation ); + + } + + if ( nodeDef.scale !== undefined ) { + + node.scale.fromArray( nodeDef.scale ); + + } + + } + + if ( ! parser.associations.has( node ) ) { + + parser.associations.set( node, {} ); + + } + + parser.associations.get( node ).nodes = nodeIndex; + + return node; + + } ); + + return this.nodeCache[ nodeIndex ]; + + } + + /** + * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes + * @param {number} sceneIndex + * @return {Promise} + */ + loadScene( sceneIndex ) { + + const extensions = this.extensions; + const sceneDef = this.json.scenes[ sceneIndex ]; + const parser = this; + + // Loader returns Group, not Scene. + // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172 + const scene = new Group(); + if ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name ); + + assignExtrasToUserData( scene, sceneDef ); + + if ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef ); + + const nodeIds = sceneDef.nodes || []; + + const pending = []; + + for ( let i = 0, il = nodeIds.length; i < il; i ++ ) { + + pending.push( parser.getDependency( 'node', nodeIds[ i ] ) ); + + } + + return Promise.all( pending ).then( function ( nodes ) { + + for ( let i = 0, il = nodes.length; i < il; i ++ ) { + + scene.add( nodes[ i ] ); + + } + + // Removes dangling associations, associations that reference a node that + // didn't make it into the scene. + const reduceAssociations = ( node ) => { + + const reducedAssociations = new Map(); + + for ( const [ key, value ] of parser.associations ) { + + if ( key instanceof Material || key instanceof Texture ) { + + reducedAssociations.set( key, value ); + + } + + } + + node.traverse( ( node ) => { + + const mappings = parser.associations.get( node ); + + if ( mappings != null ) { + + reducedAssociations.set( node, mappings ); + + } + + } ); + + return reducedAssociations; + + }; + + parser.associations = reduceAssociations( scene ); + + return scene; + + } ); + + } + + _createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ) { + + const tracks = []; + + const targetName = node.name ? node.name : node.uuid; + const targetNames = []; + + if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { + + node.traverse( function ( object ) { + + if ( object.morphTargetInfluences ) { + + targetNames.push( object.name ? object.name : object.uuid ); + + } + + } ); + + } else { + + targetNames.push( targetName ); + + } + + let TypedKeyframeTrack; + + switch ( PATH_PROPERTIES[ target.path ] ) { + + case PATH_PROPERTIES.weights: + + TypedKeyframeTrack = NumberKeyframeTrack; + break; + + case PATH_PROPERTIES.rotation: + + TypedKeyframeTrack = QuaternionKeyframeTrack; + break; + + case PATH_PROPERTIES.position: + case PATH_PROPERTIES.scale: + + TypedKeyframeTrack = VectorKeyframeTrack; + break; + + default: + + switch ( outputAccessor.itemSize ) { + + case 1: + TypedKeyframeTrack = NumberKeyframeTrack; + break; + case 2: + case 3: + default: + TypedKeyframeTrack = VectorKeyframeTrack; + break; + + } + + break; + + } + + const interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear; + + + const outputArray = this._getArrayFromAccessor( outputAccessor ); + + for ( let j = 0, jl = targetNames.length; j < jl; j ++ ) { + + const track = new TypedKeyframeTrack( + targetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ], + inputAccessor.array, + outputArray, + interpolation + ); + + // Override interpolation with custom factory method. + if ( sampler.interpolation === 'CUBICSPLINE' ) { + + this._createCubicSplineTrackInterpolant( track ); + + } + + tracks.push( track ); + + } + + return tracks; + + } + + _getArrayFromAccessor( accessor ) { + + let outputArray = accessor.array; + + if ( accessor.normalized ) { + + const scale = getNormalizedComponentScale( outputArray.constructor ); + const scaled = new Float32Array( outputArray.length ); + + for ( let j = 0, jl = outputArray.length; j < jl; j ++ ) { + + scaled[ j ] = outputArray[ j ] * scale; + + } + + outputArray = scaled; + + } + + return outputArray; + + } + + _createCubicSplineTrackInterpolant( track ) { + + track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) { + + // A CUBICSPLINE keyframe in glTF has three output values for each input value, + // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize() + // must be divided by three to get the interpolant's sampleSize argument. + + const interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant; + + return new interpolantType( this.times, this.values, this.getValueSize() / 3, result ); + + }; + + // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants. + track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; + + } + +} + +/** + * @param {BufferGeometry} geometry + * @param {GLTF.Primitive} primitiveDef + * @param {GLTFParser} parser + */ +function computeBounds( geometry, primitiveDef, parser ) { + + const attributes = primitiveDef.attributes; + + const box = new Box3(); + + if ( attributes.POSITION !== undefined ) { + + const accessor = parser.json.accessors[ attributes.POSITION ]; + + const min = accessor.min; + const max = accessor.max; + + // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement. + + if ( min !== undefined && max !== undefined ) { + + box.set( + new Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ), + new Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) + ); + + if ( accessor.normalized ) { + + const boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] ); + box.min.multiplyScalar( boxScale ); + box.max.multiplyScalar( boxScale ); + + } + + } else { + + console.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' ); + + return; + + } + + } else { + + return; + + } + + const targets = primitiveDef.targets; + + if ( targets !== undefined ) { + + const maxDisplacement = new Vector3(); + const vector = new Vector3(); + + for ( let i = 0, il = targets.length; i < il; i ++ ) { + + const target = targets[ i ]; + + if ( target.POSITION !== undefined ) { + + const accessor = parser.json.accessors[ target.POSITION ]; + const min = accessor.min; + const max = accessor.max; + + // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement. + + if ( min !== undefined && max !== undefined ) { + + // we need to get max of absolute components because target weight is [-1,1] + vector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) ); + vector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) ); + vector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) ); + + + if ( accessor.normalized ) { + + const boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] ); + vector.multiplyScalar( boxScale ); + + } + + // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative + // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets + // are used to implement key-frame animations and as such only two are active at a time - this results in very large + // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size. + maxDisplacement.max( vector ); + + } else { + + console.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' ); + + } + + } + + } + + // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets. + box.expandByVector( maxDisplacement ); + + } + + geometry.boundingBox = box; + + const sphere = new Sphere(); + + box.getCenter( sphere.center ); + sphere.radius = box.min.distanceTo( box.max ) / 2; + + geometry.boundingSphere = sphere; + +} + +/** + * @param {BufferGeometry} geometry + * @param {GLTF.Primitive} primitiveDef + * @param {GLTFParser} parser + * @return {Promise} + */ +function addPrimitiveAttributes( geometry, primitiveDef, parser ) { + + const attributes = primitiveDef.attributes; + + const pending = []; + + function assignAttributeAccessor( accessorIndex, attributeName ) { + + return parser.getDependency( 'accessor', accessorIndex ) + .then( function ( accessor ) { + + geometry.setAttribute( attributeName, accessor ); + + } ); + + } + + for ( const gltfAttributeName in attributes ) { + + const threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase(); + + // Skip attributes already provided by e.g. Draco extension. + if ( threeAttributeName in geometry.attributes ) continue; + + pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) ); + + } + + if ( primitiveDef.indices !== undefined && ! geometry.index ) { + + const accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) { + + geometry.setIndex( accessor ); + + } ); + + pending.push( accessor ); + + } + + if ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) { + + console.warn( `THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ColorManagement.workingColorSpace}" not supported.` ); + + } + + assignExtrasToUserData( geometry, primitiveDef ); + + computeBounds( geometry, primitiveDef, parser ); + + return Promise.all( pending ).then( function () { + + return primitiveDef.targets !== undefined + ? addMorphTargets( geometry, primitiveDef.targets, parser ) + : geometry; + + } ); + +} + +export { GLTFLoader }; diff --git a/seminar06-planning/simulator/js/objects/MapObject.js b/seminar06-planning/simulator/js/objects/MapObject.js new file mode 100644 index 0000000..e895f70 --- /dev/null +++ b/seminar06-planning/simulator/js/objects/MapObject.js @@ -0,0 +1,68 @@ +// geolocation = [33.523900, -111.908756]; +export default class MapObject extends THREE.Object3D { + constructor(geolocation = null) { + super(); + + this.geolocation = geolocation; + this.tilesGroup = null; + + const tileSize = geolocation ? this.tileSizeInMeters() : 10; + const grid = new THREE.GridHelper(MapObject.HALF_NUM_TILES * 8 * tileSize, MapObject.HALF_NUM_TILES * 8, 0x333333, 0x333333); + grid.renderOrder = -1; + grid.material.depthTest = false; + grid.position.add(new THREE.Vector3(-tileSize / 2, 0, -tileSize / 2)); + this.add(grid); + + if (geolocation) + this.drawTiles(); + } + + // Converts lat-long geolocation to Google Maps world coodinates + static geoToWorld(latlng) { + const latitudeRadians = latlng[0] * Math.PI / 180; + const x = (latlng[1] + 180) / 360 * 256; + const y = ((1 - Math.log(Math.tan(latitudeRadians) + 1 / Math.cos(latitudeRadians)) / Math.PI) / 2) * 256; + return [x, y]; + } + + // Calculates the x and y tile indices for the provided world coordinates + static worldToTile(worldCoordinates) { + return [Math.floor(worldCoordinates[0] * MapObject.SCALE / 256), Math.floor(worldCoordinates[1] * MapObject.SCALE / 256)]; + } + + drawTiles() { + if (this.tileGroup != null) this.remove(this.tilesGroup); + this.tileGroup = new THREE.Group(); + + const originTile = MapObject.worldToTile(MapObject.geoToWorld(this.geolocation)); + const tileSize = this.tileSizeInMeters(); + + for (let x = -MapObject.HALF_NUM_TILES, h = 0; x < MapObject.HALF_NUM_TILES; x++) { + for (let y = -MapObject.HALF_NUM_TILES; y < MapObject.HALF_NUM_TILES; y++, h++) { + const tileTexture = new THREE.TextureLoader().load(`https://khms${h % 4}.google.com/kh/v=748?x=${originTile[0] + x}&y=${originTile[1] + y}&z=${MapObject.ZOOM}`); + tileTexture.anisotropy = 16; + const tileGeometry = new THREE.PlaneBufferGeometry(tileSize, tileSize); + const tileMaterial = new THREE.MeshBasicMaterial({ map: tileTexture, color: 0xffffff }); + const tile = new THREE.Mesh(tileGeometry, tileMaterial); + tile.rotation.x = -Math.PI / 2; + tile.position.x = x * tileSize; + tile.position.z = y * tileSize; + + this.tileGroup.add(tile); + } + } + + this.add(this.tileGroup); + } + + tileSizeInMeters() { + // Because of the Mercator projection used to create the tile images, the size of a tile (in meters) depends on the latitude + return 2 * Math.PI * MapObject.EARTH_RADIUS * Math.cos(this.geolocation[0] * Math.PI / 180) / Math.pow(2, MapObject.ZOOM); + } +} + +MapObject.EARTH_RADIUS = 6378137; // meters +MapObject.TILE_PIXELS = 256; // pixels per tile +MapObject.ZOOM = 20; +MapObject.SCALE = 1 << MapObject.ZOOM; +MapObject.HALF_NUM_TILES = 20; diff --git a/seminar06-planning/simulator/js/objects/StaticObstacleObject.js b/seminar06-planning/simulator/js/objects/StaticObstacleObject.js new file mode 100644 index 0000000..3093662 --- /dev/null +++ b/seminar06-planning/simulator/js/objects/StaticObstacleObject.js @@ -0,0 +1,32 @@ +const COLOR = 0xdd0000; +const HEIGHT = 5; + +export default class StaticObstacleObject extends THREE.Object3D { + constructor(staticObstacle) { + super(); + + const mesh2D = new THREE.Mesh( + new THREE.PlaneGeometry(staticObstacle.width, staticObstacle.height), + new THREE.MeshBasicMaterial({ color: COLOR, depthTest: false, transparent: true, opacity: 0.5 }) + ); + mesh2D.rotation.x = -Math.PI / 2; + mesh2D.layers.set(2); + this.add(mesh2D); + + const stoneTexture = new THREE.TextureLoader().load('http://127.0.0.1:8008/images/stone.jpg'); + stoneTexture.wrapS = THREE.RepeatWrapping + stoneTexture.wrapT = THREE.RepeatWrapping + stoneTexture.magFilter = THREE.NearestFilter + + const mesh3D = new THREE.Mesh( + new THREE.BoxBufferGeometry(staticObstacle.width, HEIGHT, staticObstacle.height), + new THREE.MeshToonMaterial({ map: stoneTexture, transparent: true, opacity: 0.9 }) + ); + mesh3D.position.setY(HEIGHT / 2); + mesh3D.layers.set(3); + this.add(mesh3D); + + this.rotation.y = -staticObstacle.rot; + this.position.set(staticObstacle.pos.x, 0, staticObstacle.pos.y); + } +} diff --git a/seminar06-planning/simulator/js/objects/TDSLoader.js b/seminar06-planning/simulator/js/objects/TDSLoader.js new file mode 100644 index 0000000..9ab44db --- /dev/null +++ b/seminar06-planning/simulator/js/objects/TDSLoader.js @@ -0,0 +1,1145 @@ +/* + * Autodesk 3DS threee.js file loader, based on lib3ds. + * + * Loads geometry with uv and materials basic properties with texture support. + * + * @author @tentone + * @author @timknip + * @class TDSLoader + * @constructor + */ + +'use strict'; + +THREE.TDSLoader = function ( manager ) { + + this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager; + this.debug = false; + + this.group = null; + this.position = 0; + + this.materials = []; + this.meshes = []; + +}; + +THREE.TDSLoader.prototype = { + + constructor: THREE.TDSLoader, + + /** + * Load 3ds file from url. + * + * @method load + * @param {[type]} url URL for the file. + * @param {Function} onLoad onLoad callback, receives group Object3D as argument. + * @param {Function} onProgress onProgress callback. + * @param {Function} onError onError callback. + */ + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = this.path !== undefined ? this.path : THREE.LoaderUtils.extractUrlBase( url ); + + var loader = new THREE.FileLoader( this.manager ); + + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( data ) { + + onLoad( scope.parse( data, path ) ); + + }, onProgress, onError ); + + }, + + /** + * Parse arraybuffer data and load 3ds file. + * + * @method parse + * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded. + * @param {String} path Path for external resources. + * @return {Object3D} Group loaded from 3ds file. + */ + parse: function ( arraybuffer, path ) { + + this.group = new THREE.Group(); + this.position = 0; + this.materials = []; + this.meshes = []; + + this.readFile( arraybuffer, path ); + + for ( var i = 0; i < this.meshes.length; i ++ ) { + + this.group.add( this.meshes[ i ] ); + + } + + return this.group; + + }, + + /** + * Decode file content to read 3ds data. + * + * @method readFile + * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded. + */ + readFile: function ( arraybuffer, path ) { + + var data = new DataView( arraybuffer ); + var chunk = this.readChunk( data ); + + if ( chunk.id === MLIBMAGIC || chunk.id === CMAGIC || chunk.id === M3DMAGIC ) { + + var next = this.nextChunk( data, chunk ); + + while ( next !== 0 ) { + + if ( next === M3D_VERSION ) { + + var version = this.readDWord( data ); + this.debugMessage( '3DS file version: ' + version ); + + } else if ( next === MDATA ) { + + this.resetPosition( data ); + this.readMeshData( data, path ); + + } else { + + this.debugMessage( 'Unknown main chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + } + + this.debugMessage( 'Parsed ' + this.meshes.length + ' meshes' ); + + }, + + /** + * Read mesh data chunk. + * + * @method readMeshData + * @param {Dataview} data Dataview in use. + */ + readMeshData: function ( data, path ) { + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + + while ( next !== 0 ) { + + if ( next === MESH_VERSION ) { + + var version = + this.readDWord( data ); + this.debugMessage( 'Mesh Version: ' + version ); + + } else if ( next === MASTER_SCALE ) { + + var scale = this.readFloat( data ); + this.debugMessage( 'Master scale: ' + scale ); + this.group.scale.set( scale, scale, scale ); + + } else if ( next === NAMED_OBJECT ) { + + this.debugMessage( 'Named Object' ); + this.resetPosition( data ); + this.readNamedObject( data ); + + } else if ( next === MAT_ENTRY ) { + + this.debugMessage( 'Material' ); + this.resetPosition( data ); + this.readMaterialEntry( data, path ); + + } else { + + this.debugMessage( 'Unknown MDATA chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + }, + + /** + * Read named object chunk. + * + * @method readNamedObject + * @param {Dataview} data Dataview in use. + */ + readNamedObject: function ( data ) { + + var chunk = this.readChunk( data ); + var name = this.readString( data, 64 ); + chunk.cur = this.position; + + var next = this.nextChunk( data, chunk ); + while ( next !== 0 ) { + + if ( next === N_TRI_OBJECT ) { + + this.resetPosition( data ); + var mesh = this.readMesh( data ); + mesh.name = name; + this.meshes.push( mesh ); + + } else { + + this.debugMessage( 'Unknown named object chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + }, + + /** + * Read material data chunk and add it to the material list. + * + * @method readMaterialEntry + * @param {Dataview} data Dataview in use. + */ + readMaterialEntry: function ( data, path ) { + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + var material = new THREE.MeshPhongMaterial(); + + while ( next !== 0 ) { + + if ( next === MAT_NAME ) { + + material.name = this.readString( data, 64 ); + this.debugMessage( ' Name: ' + material.name ); + + } else if ( next === MAT_WIRE ) { + + this.debugMessage( ' Wireframe' ); + material.wireframe = true; + + } else if ( next === MAT_WIRE_SIZE ) { + + var value = this.readByte( data ); + material.wireframeLinewidth = value; + this.debugMessage( ' Wireframe Thickness: ' + value ); + + } else if ( next === MAT_TWO_SIDE ) { + + material.side = THREE.DoubleSide; + this.debugMessage( ' DoubleSided' ); + + } else if ( next === MAT_ADDITIVE ) { + + this.debugMessage( ' Additive Blending' ); + material.blending = THREE.AdditiveBlending; + + } else if ( next === MAT_DIFFUSE ) { + + this.debugMessage( ' Diffuse Color' ); + material.color = this.readColor( data ); + + } else if ( next === MAT_SPECULAR ) { + + this.debugMessage( ' Specular Color' ); + material.specular = this.readColor( data ); + + } else if ( next === MAT_AMBIENT ) { + + this.debugMessage( ' Ambient color' ); + material.color = this.readColor( data ); + + } else if ( next === MAT_SHININESS ) { + + var shininess = this.readWord( data ); + material.shininess = shininess; + this.debugMessage( ' Shininess : ' + shininess ); + + } else if ( next === MAT_TEXMAP ) { + + this.debugMessage( ' ColorMap' ); + this.resetPosition( data ); + material.map = this.readMap( data, path ); + + } else if ( next === MAT_BUMPMAP ) { + + this.debugMessage( ' BumpMap' ); + this.resetPosition( data ); + material.bumpMap = this.readMap( data, path ); + + } else if ( next === MAT_OPACMAP ) { + + this.debugMessage( ' OpacityMap' ); + this.resetPosition( data ); + material.alphaMap = this.readMap( data, path ); + + } else if ( next === MAT_SPECMAP ) { + + this.debugMessage( ' SpecularMap' ); + this.resetPosition( data ); + material.specularMap = this.readMap( data, path ); + + } else { + + this.debugMessage( ' Unknown material chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + this.materials[ material.name ] = material; + + }, + + /** + * Read mesh data chunk. + * + * @method readMesh + * @param {Dataview} data Dataview in use. + */ + readMesh: function ( data ) { + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + + var useBufferGeometry = false; + var geometry = null; + var uvs = []; + + if ( useBufferGeometry ) { + + geometry = new THREE.BufferGeometry(); + + } else { + + geometry = new THREE.Geometry(); + + } + + var material = new THREE.MeshPhongMaterial(); + var mesh = new THREE.Mesh( geometry, material ); + mesh.name = 'mesh'; + + while ( next !== 0 ) { + + if ( next === POINT_ARRAY ) { + + var points = this.readWord( data ); + + this.debugMessage( ' Vertex: ' + points ); + + //BufferGeometry + + if ( useBufferGeometry ) { + + var vertices = []; + for ( var i = 0; i < points; i ++ ) { + + vertices.push( this.readFloat( data ) ); + vertices.push( this.readFloat( data ) ); + vertices.push( this.readFloat( data ) ); + + } + + geometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( vertices ), 3 ) ); + + } else { //Geometry + + for ( var i = 0; i < points; i ++ ) { + + geometry.vertices.push( new THREE.Vector3( this.readFloat( data ), this.readFloat( data ), this.readFloat( data ) ) ); + + } + + } + + } else if ( next === FACE_ARRAY ) { + + this.resetPosition( data ); + this.readFaceArray( data, mesh ); + + } else if ( next === TEX_VERTS ) { + + var texels = this.readWord( data ); + + this.debugMessage( ' UV: ' + texels ); + + //BufferGeometry + + if ( useBufferGeometry ) { + + var uvs = []; + for ( var i = 0; i < texels; i ++ ) { + + uvs.push( this.readFloat( data ) ); + uvs.push( this.readFloat( data ) ); + + } + geometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( uvs ), 2 ) ); + + } else { //Geometry + + uvs = []; + for ( var i = 0; i < texels; i ++ ) { + + uvs.push( new THREE.Vector2( this.readFloat( data ), this.readFloat( data ) ) ); + + } + + } + + } else if ( next === MESH_MATRIX ) { + + this.debugMessage( ' Tranformation Matrix (TODO)' ); + + var values = []; + for ( var i = 0; i < 12; i ++ ) { + + values[ i ] = this.readFloat( data ); + + } + + var matrix = new THREE.Matrix4(); + + //X Line + matrix.elements[ 0 ] = values[ 0 ]; + matrix.elements[ 1 ] = values[ 6 ]; + matrix.elements[ 2 ] = values[ 3 ]; + matrix.elements[ 3 ] = values[ 9 ]; + + //Y Line + matrix.elements[ 4 ] = values[ 2 ]; + matrix.elements[ 5 ] = values[ 8 ]; + matrix.elements[ 6 ] = values[ 5 ]; + matrix.elements[ 7 ] = values[ 11 ]; + + //Z Line + matrix.elements[ 8 ] = values[ 1 ]; + matrix.elements[ 9 ] = values[ 7 ]; + matrix.elements[ 10 ] = values[ 4 ]; + matrix.elements[ 11 ] = values[ 10 ]; + + //W Line + matrix.elements[ 12 ] = 0; + matrix.elements[ 13 ] = 0; + matrix.elements[ 14 ] = 0; + matrix.elements[ 15 ] = 1; + + matrix.transpose(); + + var inverse = new THREE.Matrix4(); + inverse.getInverse( matrix, true ); + geometry.applyMatrix( inverse ); + + matrix.decompose( mesh.position, mesh.quaternion, mesh.scale ); + + } else { + + this.debugMessage( ' Unknown mesh chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + if ( ! useBufferGeometry ) { + + //geometry.faceVertexUvs[0][faceIndex][vertexIndex] + + if ( uvs.length > 0 ) { + + var faceUV = []; + + for ( var i = 0; i < geometry.faces.length; i ++ ) { + + faceUV.push( [ uvs[ geometry.faces[ i ].a ], uvs[ geometry.faces[ i ].b ], uvs[ geometry.faces[ i ].c ] ] ); + + } + + geometry.faceVertexUvs[ 0 ] = faceUV; + + } + + geometry.computeVertexNormals(); + + } + + return mesh; + + }, + + /** + * Read face array data chunk. + * + * @method readFaceArray + * @param {Dataview} data Dataview in use. + * @param {Mesh} mesh Mesh to be filled with the data read. + */ + readFaceArray: function ( data, mesh ) { + + var chunk = this.readChunk( data ); + var faces = this.readWord( data ); + + this.debugMessage( ' Faces: ' + faces ); + + for ( var i = 0; i < faces; ++ i ) { + + mesh.geometry.faces.push( new THREE.Face3( this.readWord( data ), this.readWord( data ), this.readWord( data ) ) ); + + var visibility = this.readWord( data ); + + } + + //The rest of the FACE_ARRAY chunk is subchunks + + while ( this.position < chunk.end ) { + + var chunk = this.readChunk( data ); + + if ( chunk.id === MSH_MAT_GROUP ) { + + this.debugMessage( ' Material Group' ); + + this.resetPosition( data ); + + var group = this.readMaterialGroup( data ); + + var material = this.materials[ group.name ]; + + if ( material !== undefined ) { + + mesh.material = material; + + if ( material.name === '' ) { + + material.name = mesh.name; + + } + + } + + } else { + + this.debugMessage( ' Unknown face array chunk: ' + chunk.toString( 16 ) ); + + } + + this.endChunk( chunk ); + + } + + this.endChunk( chunk ); + + }, + + /** + * Read texture map data chunk. + * + * @method readMap + * @param {Dataview} data Dataview in use. + * @return {Texture} Texture read from this data chunk. + */ + readMap: function ( data, path ) { + if (this.skipMaps) return null; + + var chunk = this.readChunk( data ); + var next = this.nextChunk( data, chunk ); + var texture = {}; + + var loader = new THREE.TextureLoader( this.manager ); + loader.setPath( path ); + + while ( next !== 0 ) { + + if ( next === MAT_MAPNAME ) { + + var name = this.readString( data, 128 ); + texture = loader.load( name ); + + this.debugMessage( ' File: ' + path + name ); + + } else if ( next === MAT_MAP_UOFFSET ) { + + texture.offset.x = this.readFloat( data ); + this.debugMessage( ' OffsetX: ' + texture.offset.x ); + + } else if ( next === MAT_MAP_VOFFSET ) { + + texture.offset.y = this.readFloat( data ); + this.debugMessage( ' OffsetY: ' + texture.offset.y ); + + } else if ( next === MAT_MAP_USCALE ) { + + texture.repeat.x = this.readFloat( data ); + this.debugMessage( ' RepeatX: ' + texture.repeat.x ); + + } else if ( next === MAT_MAP_VSCALE ) { + + texture.repeat.y = this.readFloat( data ); + this.debugMessage( ' RepeatY: ' + texture.repeat.y ); + + } else { + + this.debugMessage( ' Unknown map chunk: ' + next.toString( 16 ) ); + + } + + next = this.nextChunk( data, chunk ); + + } + + this.endChunk( chunk ); + + return texture; + + }, + + /** + * Read material group data chunk. + * + * @method readMaterialGroup + * @param {Dataview} data Dataview in use. + * @return {Object} Object with name and index of the object. + */ + readMaterialGroup: function ( data ) { + + var chunk = this.readChunk( data ); + var name = this.readString( data, 64 ); + var numFaces = this.readWord( data ); + + this.debugMessage( ' Name: ' + name ); + this.debugMessage( ' Faces: ' + numFaces ); + + var index = []; + for ( var i = 0; i < numFaces; ++ i ) { + + index.push( this.readWord( data ) ); + + } + + return { name: name, index: index }; + + }, + + /** + * Read a color value. + * + * @method readColor + * @param {DataView} data Dataview. + * @return {Color} Color value read.. + */ + readColor: function ( data ) { + + var chunk = this.readChunk( data ); + var color = new THREE.Color(); + + if ( chunk.id === COLOR_24 || chunk.id === LIN_COLOR_24 ) { + + var r = this.readByte( data ); + var g = this.readByte( data ); + var b = this.readByte( data ); + + color.setRGB( r / 255, g / 255, b / 255 ); + + this.debugMessage( ' Color: ' + color.r + ', ' + color.g + ', ' + color.b ); + + } else if ( chunk.id === COLOR_F || chunk.id === LIN_COLOR_F ) { + + var r = this.readFloat( data ); + var g = this.readFloat( data ); + var b = this.readFloat( data ); + + color.setRGB( r, g, b ); + + this.debugMessage( ' Color: ' + color.r + ', ' + color.g + ', ' + color.b ); + + } else { + + this.debugMessage( ' Unknown color chunk: ' + chunk.toString( 16 ) ); + + } + + this.endChunk( chunk ); + return color; + + }, + + /** + * Read next chunk of data. + * + * @method readChunk + * @param {DataView} data Dataview. + * @return {Object} Chunk of data read. + */ + readChunk: function ( data ) { + + var chunk = {}; + + chunk.cur = this.position; + chunk.id = this.readWord( data ); + chunk.size = this.readDWord( data ); + chunk.end = chunk.cur + chunk.size; + chunk.cur += 6; + + return chunk; + + }, + + /** + * Set position to the end of the current chunk of data. + * + * @method endChunk + * @param {Object} chunk Data chunk. + */ + endChunk: function ( chunk ) { + + this.position = chunk.end; + + }, + + /** + * Move to the next data chunk. + * + * @method nextChunk + * @param {DataView} data Dataview. + * @param {Object} chunk Data chunk. + */ + nextChunk: function ( data, chunk ) { + + if ( chunk.cur >= chunk.end ) { + + return 0; + + } + + this.position = chunk.cur; + + try { + + var next = this.readChunk( data ); + chunk.cur += next.size; + return next.id; + + } catch ( e ) { + + this.debugMessage( 'Unable to read chunk at ' + this.position ); + return 0; + + } + + }, + + /** + * Reset dataview position. + * + * @method resetPosition + * @param {DataView} data Dataview. + */ + resetPosition: function () { + + this.position -= 6; + + }, + + /** + * Read byte value. + * + * @method readByte + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readByte: function ( data ) { + + var v = data.getUint8( this.position, true ); + this.position += 1; + return v; + + }, + + /** + * Read 32 bit float value. + * + * @method readFloat + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readFloat: function ( data ) { + + try { + + var v = data.getFloat32( this.position, true ); + this.position += 4; + return v; + + } catch ( e ) { + + this.debugMessage( e + ' ' + this.position + ' ' + data.byteLength ); + + } + + }, + + /** + * Read 32 bit signed integer value. + * + * @method readInt + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readInt: function ( data ) { + + var v = data.getInt32( this.position, true ); + this.position += 4; + return v; + + }, + + /** + * Read 16 bit signed integer value. + * + * @method readShort + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readShort: function ( data ) { + + var v = data.getInt16( this.position, true ); + this.position += 2; + return v; + + }, + + /** + * Read 64 bit unsigned integer value. + * + * @method readDWord + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readDWord: function ( data ) { + + var v = data.getUint32( this.position, true ); + this.position += 4; + return v; + + }, + + /** + * Read 32 bit unsigned integer value. + * + * @method readWord + * @param {DataView} data Dataview to read data from. + * @return {Number} Data read from the dataview. + */ + readWord: function ( data ) { + + var v = data.getUint16( this.position, true ); + this.position += 2; + return v; + + }, + + /** + * Read string value. + * + * @method readString + * @param {DataView} data Dataview to read data from. + * @param {Number} maxLength Max size of the string to be read. + * @return {String} Data read from the dataview. + */ + readString: function ( data, maxLength ) { + + var s = ''; + + for ( var i = 0; i < maxLength; i ++ ) { + + var c = this.readByte( data ); + if ( ! c ) { + + break; + + } + + s += String.fromCharCode( c ); + + } + + return s; + + }, + + /** + * Set resource path used to determine the file path to attached resources. + * + * @method setPath + * @param {String} path Path to resources. + * @return Self for chaining. + */ + setPath: function ( path ) { + + this.path = path; + + return this; + + }, + + /** + * Print debug message to the console. + * + * Is controlled by a flag to show or hide debug messages. + * + * @method debugMessage + * @param {Object} message Debug message to print to the console. + */ + debugMessage: function ( message ) { + + if ( this.debug ) { + + console.log( message ); + + } + + } +}; + +var NULL_CHUNK = 0x0000; +var M3DMAGIC = 0x4D4D; +var SMAGIC = 0x2D2D; +var LMAGIC = 0x2D3D; +var MLIBMAGIC = 0x3DAA; +var MATMAGIC = 0x3DFF; +var CMAGIC = 0xC23D; +var M3D_VERSION = 0x0002; +var M3D_KFVERSION = 0x0005; +var COLOR_F = 0x0010; +var COLOR_24 = 0x0011; +var LIN_COLOR_24 = 0x0012; +var LIN_COLOR_F = 0x0013; +var INT_PERCENTAGE = 0x0030; +var FLOAT_PERCENTAGE = 0x0031; +var MDATA = 0x3D3D; +var MESH_VERSION = 0x3D3E; +var MASTER_SCALE = 0x0100; +var LO_SHADOW_BIAS = 0x1400; +var HI_SHADOW_BIAS = 0x1410; +var SHADOW_MAP_SIZE = 0x1420; +var SHADOW_SAMPLES = 0x1430; +var SHADOW_RANGE = 0x1440; +var SHADOW_FILTER = 0x1450; +var RAY_BIAS = 0x1460; +var O_CONSTS = 0x1500; +var AMBIENT_LIGHT = 0x2100; +var BIT_MAP = 0x1100; +var SOLID_BGND = 0x1200; +var V_GRADIENT = 0x1300; +var USE_BIT_MAP = 0x1101; +var USE_SOLID_BGND = 0x1201; +var USE_V_GRADIENT = 0x1301; +var FOG = 0x2200; +var FOG_BGND = 0x2210; +var LAYER_FOG = 0x2302; +var DISTANCE_CUE = 0x2300; +var DCUE_BGND = 0x2310; +var USE_FOG = 0x2201; +var USE_LAYER_FOG = 0x2303; +var USE_DISTANCE_CUE = 0x2301; +var MAT_ENTRY = 0xAFFF; +var MAT_NAME = 0xA000; +var MAT_AMBIENT = 0xA010; +var MAT_DIFFUSE = 0xA020; +var MAT_SPECULAR = 0xA030; +var MAT_SHININESS = 0xA040; +var MAT_SHIN2PCT = 0xA041; +var MAT_TRANSPARENCY = 0xA050; +var MAT_XPFALL = 0xA052; +var MAT_USE_XPFALL = 0xA240; +var MAT_REFBLUR = 0xA053; +var MAT_SHADING = 0xA100; +var MAT_USE_REFBLUR = 0xA250; +var MAT_SELF_ILLUM = 0xA084; +var MAT_TWO_SIDE = 0xA081; +var MAT_DECAL = 0xA082; +var MAT_ADDITIVE = 0xA083; +var MAT_WIRE = 0xA085; +var MAT_FACEMAP = 0xA088; +var MAT_TRANSFALLOFF_IN = 0xA08A; +var MAT_PHONGSOFT = 0xA08C; +var MAT_WIREABS = 0xA08E; +var MAT_WIRE_SIZE = 0xA087; +var MAT_TEXMAP = 0xA200; +var MAT_SXP_TEXT_DATA = 0xA320; +var MAT_TEXMASK = 0xA33E; +var MAT_SXP_TEXTMASK_DATA = 0xA32A; +var MAT_TEX2MAP = 0xA33A; +var MAT_SXP_TEXT2_DATA = 0xA321; +var MAT_TEX2MASK = 0xA340; +var MAT_SXP_TEXT2MASK_DATA = 0xA32C; +var MAT_OPACMAP = 0xA210; +var MAT_SXP_OPAC_DATA = 0xA322; +var MAT_OPACMASK = 0xA342; +var MAT_SXP_OPACMASK_DATA = 0xA32E; +var MAT_BUMPMAP = 0xA230; +var MAT_SXP_BUMP_DATA = 0xA324; +var MAT_BUMPMASK = 0xA344; +var MAT_SXP_BUMPMASK_DATA = 0xA330; +var MAT_SPECMAP = 0xA204; +var MAT_SXP_SPEC_DATA = 0xA325; +var MAT_SPECMASK = 0xA348; +var MAT_SXP_SPECMASK_DATA = 0xA332; +var MAT_SHINMAP = 0xA33C; +var MAT_SXP_SHIN_DATA = 0xA326; +var MAT_SHINMASK = 0xA346; +var MAT_SXP_SHINMASK_DATA = 0xA334; +var MAT_SELFIMAP = 0xA33D; +var MAT_SXP_SELFI_DATA = 0xA328; +var MAT_SELFIMASK = 0xA34A; +var MAT_SXP_SELFIMASK_DATA = 0xA336; +var MAT_REFLMAP = 0xA220; +var MAT_REFLMASK = 0xA34C; +var MAT_SXP_REFLMASK_DATA = 0xA338; +var MAT_ACUBIC = 0xA310; +var MAT_MAPNAME = 0xA300; +var MAT_MAP_TILING = 0xA351; +var MAT_MAP_TEXBLUR = 0xA353; +var MAT_MAP_USCALE = 0xA354; +var MAT_MAP_VSCALE = 0xA356; +var MAT_MAP_UOFFSET = 0xA358; +var MAT_MAP_VOFFSET = 0xA35A; +var MAT_MAP_ANG = 0xA35C; +var MAT_MAP_COL1 = 0xA360; +var MAT_MAP_COL2 = 0xA362; +var MAT_MAP_RCOL = 0xA364; +var MAT_MAP_GCOL = 0xA366; +var MAT_MAP_BCOL = 0xA368; +var NAMED_OBJECT = 0x4000; +var N_DIRECT_LIGHT = 0x4600; +var DL_OFF = 0x4620; +var DL_OUTER_RANGE = 0x465A; +var DL_INNER_RANGE = 0x4659; +var DL_MULTIPLIER = 0x465B; +var DL_EXCLUDE = 0x4654; +var DL_ATTENUATE = 0x4625; +var DL_SPOTLIGHT = 0x4610; +var DL_SPOT_ROLL = 0x4656; +var DL_SHADOWED = 0x4630; +var DL_LOCAL_SHADOW2 = 0x4641; +var DL_SEE_CONE = 0x4650; +var DL_SPOT_RECTANGULAR = 0x4651; +var DL_SPOT_ASPECT = 0x4657; +var DL_SPOT_PROJECTOR = 0x4653; +var DL_SPOT_OVERSHOOT = 0x4652; +var DL_RAY_BIAS = 0x4658; +var DL_RAYSHAD = 0x4627; +var N_CAMERA = 0x4700; +var CAM_SEE_CONE = 0x4710; +var CAM_RANGES = 0x4720; +var OBJ_HIDDEN = 0x4010; +var OBJ_VIS_LOFTER = 0x4011; +var OBJ_DOESNT_CAST = 0x4012; +var OBJ_DONT_RECVSHADOW = 0x4017; +var OBJ_MATTE = 0x4013; +var OBJ_FAST = 0x4014; +var OBJ_PROCEDURAL = 0x4015; +var OBJ_FROZEN = 0x4016; +var N_TRI_OBJECT = 0x4100; +var POINT_ARRAY = 0x4110; +var POINT_FLAG_ARRAY = 0x4111; +var FACE_ARRAY = 0x4120; +var MSH_MAT_GROUP = 0x4130; +var SMOOTH_GROUP = 0x4150; +var MSH_BOXMAP = 0x4190; +var TEX_VERTS = 0x4140; +var MESH_MATRIX = 0x4160; +var MESH_COLOR = 0x4165; +var MESH_TEXTURE_INFO = 0x4170; +var KFDATA = 0xB000; +var KFHDR = 0xB00A; +var KFSEG = 0xB008; +var KFCURTIME = 0xB009; +var AMBIENT_NODE_TAG = 0xB001; +var OBJECT_NODE_TAG = 0xB002; +var CAMERA_NODE_TAG = 0xB003; +var TARGET_NODE_TAG = 0xB004; +var LIGHT_NODE_TAG = 0xB005; +var L_TARGET_NODE_TAG = 0xB006; +var SPOTLIGHT_NODE_TAG = 0xB007; +var NODE_ID = 0xB030; +var NODE_HDR = 0xB010; +var PIVOT = 0xB013; +var INSTANCE_NAME = 0xB011; +var MORPH_SMOOTH = 0xB015; +var BOUNDBOX = 0xB014; +var POS_TRACK_TAG = 0xB020; +var COL_TRACK_TAG = 0xB025; +var ROT_TRACK_TAG = 0xB021; +var SCL_TRACK_TAG = 0xB022; +var MORPH_TRACK_TAG = 0xB026; +var FOV_TRACK_TAG = 0xB023; +var ROLL_TRACK_TAG = 0xB024; +var HOT_TRACK_TAG = 0xB027; +var FALL_TRACK_TAG = 0xB028; +var HIDE_TRACK_TAG = 0xB029; +var POLY_2D = 0x5000; +var SHAPE_OK = 0x5010; +var SHAPE_NOT_OK = 0x5011; +var SHAPE_HOOK = 0x5020; +var PATH_3D = 0x6000; +var PATH_MATRIX = 0x6005; +var SHAPE_2D = 0x6010; +var M_SCALE = 0x6020; +var M_TWIST = 0x6030; +var M_TEETER = 0x6040; +var M_FIT = 0x6050; +var M_BEVEL = 0x6060; +var XZ_CURVE = 0x6070; +var YZ_CURVE = 0x6080; +var INTERPCT = 0x6090; +var DEFORM_LIMIT = 0x60A0; +var USE_CONTOUR = 0x6100; +var USE_TWEEN = 0x6110; +var USE_SCALE = 0x6120; +var USE_TWIST = 0x6130; +var USE_TEETER = 0x6140; +var USE_FIT = 0x6150; +var USE_BEVEL = 0x6160; +var DEFAULT_VIEW = 0x3000; +var VIEW_TOP = 0x3010; +var VIEW_BOTTOM = 0x3020; +var VIEW_LEFT = 0x3030; +var VIEW_RIGHT = 0x3040; +var VIEW_FRONT = 0x3050; +var VIEW_BACK = 0x3060; +var VIEW_USER = 0x3070; +var VIEW_CAMERA = 0x3080; +var VIEW_WINDOW = 0x3090; +var VIEWPORT_LAYOUT_OLD = 0x7000; +var VIEWPORT_DATA_OLD = 0x7010; +var VIEWPORT_LAYOUT = 0x7001; +var VIEWPORT_DATA = 0x7011; +var VIEWPORT_DATA_3 = 0x7012; +var VIEWPORT_SIZE = 0x7020; +var NETWORK_VIEW = 0x7030; + +export default THREE.TDSLoader; diff --git a/seminar06-planning/simulator/js/physics/Car.js b/seminar06-planning/simulator/js/physics/Car.js new file mode 100644 index 0000000..9a50417 --- /dev/null +++ b/seminar06-planning/simulator/js/physics/Car.js @@ -0,0 +1,122 @@ +export default class Car { + constructor(x = 0, y = 0, rotation = 0) { + this.setPose(x, y, rotation); + } + + static getFrontAxlePosition(pos, rot) { + return THREE.Vector2.fromAngle(rot).multiplyScalar(Car.WHEEL_BASE).add(pos); + } + + static getFakeAxlePosition(pos, rot) { + return Car.frontToRearAxlePosition(pos, rot); + } + + static centerToRearAxlePosition(pos, rot) { + return THREE.Vector2.fromAngle(rot).multiplyScalar(Car.REAR_AXLE_POS).add(pos); + } + + static frontToRearAxlePosition(pos, rot) { + return THREE.Vector2.fromAngle(rot).multiplyScalar(-Car.WHEEL_BASE).add(pos); + } + + get pose() { + return { pos: this.rearAxlePosition.clone(), rot: this.rotation, velocity: this.velocity, curv: this.curvature, dCurv: this.dCurv, ddCurv: this.ddCurv }; + } + + get curvature() { + return Math.tan(this.wheelAngle) / Car.WHEEL_BASE; + } + + get rearAxlePosition() { + const { x, y } = this.position; + const rot = this.rotation; + return new THREE.Vector2(x + Math.cos(rot) * Car.REAR_AXLE_POS, y + Math.sin(rot) * Car.REAR_AXLE_POS); + } + + get frontAxlePosition() { + const { x, y } = this.position; + const rot = this.rotation; + return new THREE.Vector2(x + Math.cos(rot) * Car.FRONT_AXLE_POS, y + Math.sin(rot) * Car.FRONT_AXLE_POS); + } + + setPose(x, y, rotation) { + // Translate so that x and y become the center of the vehicle (instead of the center of the rear axle) + x -= Car.REAR_AXLE_POS * Math.cos(rotation); + y -= Car.REAR_AXLE_POS * Math.sin(rotation); + + this.position = new THREE.Vector2(x, y); + this.rotation = Math.wrapAngle(rotation); + this.velocity = 0; + this.acceleration = 0; + this.wheelAngle = 0; + this.wheelAngularVelocity = 0; + this.dCurv = 0; // derivative with respect to arc length + this.ddCurv = 0; // derivative with respect to arc length + } + + step(dt) { + const curvPrev = this.curvature; + const dCurvPrev = this.dCurv; + + const drag = (0.5 * Car.DRAG_COEFF * Car.FRONTAL_AREA * Car.DENSITY_OF_AIR * Math.abs(this.velocity) + Car.ROLL_RESIST) * -this.velocity; + this.velocity += (this.acceleration + drag / Car.MASS) * dt; + + const velocitySq = this.velocity * this.velocity; + const maxWheelAngle = Math.clamp(Math.atan(Car.MAX_LATERAL_ACCEL * Car.WHEEL_BASE / velocitySq), 0.07, Car.MAX_WHEEL_ANGLE); + this.wheelAngle = Math.clamp(Math.wrapAngle(this.wheelAngle + this.wheelAngularVelocity * dt), -maxWheelAngle, maxWheelAngle); + + const angularVelocity = this.velocity * this.curvature; + this.rotation = Math.wrapAngle(this.rotation + angularVelocity * dt); + + const dist = this.velocity * dt; + this.position = THREE.Vector2.fromAngle(this.rotation).multiplyScalar(dist).add(this.position); + + this.dCurv = dist > 0.1 ? (this.curvature - curvPrev) / dist : 0; + this.ddCurv = dist > 0.1 ? (this.dCurv - dCurvPrev) / dist : 0; + } + + update(controls, dt) { + const gas = Math.clamp(controls.gas, -1, +1); + const brake = Math.clamp(controls.brake, 0, 1); + const steer = Math.clamp(controls.steer, -1, +1); + + if (brake > 0) { + this.acceleration = -Math.sign(this.velocity) * Car.MAX_BRAKE_DECEL * brake; + const newVelocity = this.velocity + this.acceleration * dt; + + // If applying the braking deceleration at the next step would cause the velocity + // to change directions, then just set the car as stopped. + if (Math.sign(newVelocity) != Math.sign(this.velocity)) { + this.velocity = 0; + this.acceleration = 0; + } + } else { + this.acceleration = Car.MAX_GAS_ACCEL * gas; + } + + if (steer != 0) { + this.wheelAngularVelocity = steer * Car.MAX_STEER_SPEED; + } else { + this.wheelAngularVelocity = Math.clamp(-this.wheelAngle / Car.MAX_WHEEL_ANGLE * this.velocity * this.velocity * dt, -Car.MAX_STEER_SPEED, Car.MAX_STEER_SPEED); + } + } +} + +Car.HALF_CAR_LENGTH = 2.5; // meters +Car.HALF_CAR_WIDTH = 1; // meters +Car.HALF_WHEEL_LENGTH = 0.38; // meters +Car.HALF_WHEEL_WIDTH = 0.12; // meters +Car.MAX_WHEEL_ANGLE = 32 / 180 * Math.PI; // radians +Car.MASS = 1600; // kg +Car.DRAG_COEFF = 0.7; +Car.DENSITY_OF_AIR = 1.8580608; // (kg/m^3) +Car.FRONTAL_AREA = 1.85; // m^2 +Car.ROLL_RESIST = 0; +Car.MAX_STEER_SPEED = 0.8;//1.2; // Radians per second +Car.MAX_GAS_ACCEL = 3.0; // m / s^2 +Car.MAX_BRAKE_DECEL = 3.0; // m / s^2 +Car.WHEEL_LATERAL_POS = 0.843; // meters +Car.FRONT_AXLE_POS = 1.6; // meters +Car.REAR_AXLE_POS = -1.43; // meters +Car.WHEEL_BASE = Car.FRONT_AXLE_POS - Car.REAR_AXLE_POS; // meters +Car.MAX_LATERAL_ACCEL = 5.81; // m / s^2 diff --git a/seminar06-planning/simulator/js/physics/Physics.js b/seminar06-planning/simulator/js/physics/Physics.js new file mode 100644 index 0000000..7370a9a --- /dev/null +++ b/seminar06-planning/simulator/js/physics/Physics.js @@ -0,0 +1,18 @@ +import Car from "./Car.js"; + +export default class Physics { + constructor() { + this.cars = []; + } + + step(dt) { + this.cars.forEach(c => c.step(dt)); + } + + createCar() { + const newCar = new Car(); + this.cars.push(newCar); + + return newCar; + } +}; diff --git a/seminar06-planning/simulator/js/simulator/Dashboard.js b/seminar06-planning/simulator/js/simulator/Dashboard.js new file mode 100644 index 0000000..011909a --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/Dashboard.js @@ -0,0 +1,132 @@ +import Car from "../physics/Car.js"; + +const MPS_TO_MPH = 2.23694; +const METERS_TO_FEET = 3.28084; + +export default class Dashboard { + constructor(car) { + this.car = car; + this.units = 'metric'; + + if (document.readyState == 'complete') { + this.fetchDomElements.call(this); + } else { + document.addEventListener('readystatechange', event => { + if (event.target.readyState == 'complete') + this.fetchDomElements.call(this); + }); + } + } + + fetchDomElements() { + this.wheelDom = document.getElementById('wheel'); + this.wheelPieDom = document.getElementById('wheel-pie'); + this.wheelPieLeftDom = document.getElementById('wheel-pie-left'); + this.wheelPieRightDom = document.getElementById('wheel-pie-right'); + this.gearDom = document.getElementById('gear'); + this.gasDom = document.getElementById('gas'); + this.brakeDom = document.getElementById('brake'); + this.speedDom = document.getElementById('speed'); + this.stationDom = document.getElementById('station'); + this.latitudeDom = document.getElementById('latitude'); + this.planTimeDom = document.getElementById('plan-time'); + this.elapsedTimeDom = document.getElementById('elapsed-time'); + + this.speedUnitsDom = document.getElementById('speed-units'); + this.stationUnitsDom = document.getElementById('station-units'); + this.latitudeUnitsDom = document.getElementById('latitude-units'); + + [this.speedUnitsDom, this.stationUnitsDom, this.latitudeUnitsDom].forEach(el => { + el.addEventListener('click', event => { + this.toggleUnits(); + }); + }); + } + + toggleUnits() { + let speedUnits; + let distanceUnits; + + if (this.units == 'metric') { + this.units = 'imperial'; + speedUnits = 'mph'; + distanceUnits = 'feet'; + } else { + this.units = 'metric'; + speedUnits = 'm/s'; + distanceUnits = 'meters'; + } + + this.speedUnitsDom.textContent = speedUnits; + this.stationUnitsDom.textContent = distanceUnits; + this.latitudeUnitsDom.textContent = distanceUnits; + } + + updatePlanTime(planTime) { + if (!this.wheelDom) return; + + this.planTimeDom.textContent = planTime !== null ? (planTime).toLocaleString(undefined, { maximumFractionDigits: 3 }) : '—'; + } + + update(controls, speed, station, latitude, elapsedTime, planTime) { + if (!this.wheelDom) return; + + const wheelTurn = Math.clamp(this.car.wheelAngle / Car.MAX_WHEEL_ANGLE * 0.95, -1, +1); + + this.wheelDom.style.transform = `rotate(${wheelTurn}turn)`; + + if (wheelTurn >= 0) { + this.wheelPieRightDom.style.transform = `rotate(${wheelTurn}turn)`; + + if (wheelTurn <= 0.5) { + this.wheelPieDom.style.clipPath = "inset(0 0 0 50%)"; + this.wheelPieLeftDom.style.transform = "rotate(0)"; + } else { + this.wheelPieDom.style.clipPath = "inset(0 0 0 0)"; + this.wheelPieLeftDom.style.transform = "rotate(0.5turn)"; + } + } else { + this.wheelPieRightDom.style.transform = `rotate(${0.5 + wheelTurn}turn)`; + + if (wheelTurn >= -0.5) { + this.wheelPieDom.style.clipPath = "inset(0 50% 0 0)"; + this.wheelPieLeftDom.style.transform = "rotate(0.5turn)"; + } else { + this.wheelPieDom.style.clipPath = "inset(0 0 0 0)"; + this.wheelPieLeftDom.style.transform = "rotate(0)"; + } + } + + this.gearDom.innerText = controls.gas < 0 ? 'R' : 'D'; + this.brakeDom.style.clipPath = `inset(50% 50% 0 ${50 - controls.brake * 25}%)`; + this.gasDom.style.clipPath = `inset(50% ${50 - Math.abs(controls.gas) * 25}% 0 50%)`; + + if (this.units == 'imperial') { + speed *= MPS_TO_MPH; + station = station !== null ? station * METERS_TO_FEET : null; + latitude = latitude !== null ? latitude * METERS_TO_FEET : null; + } + + let latitudeText = latitude !== null ? latitude.toFixed(2) : '—'; + if (latitudeText == '-0.00') latitudeText = '0.00'; + + this.speedDom.textContent = speed.toFixed(1); + this.stationDom.textContent = station !== null ? station.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 }) : '—'; + this.latitudeDom.textContent = latitudeText; + this.updatePlanTime(planTime); + + let mins = Math.floor(elapsedTime / 60); + let seconds = elapsedTime % 60; + + if (mins == 0) { + this.elapsedTimeDom.textContent = seconds.toFixed(1); + } else { + if (seconds < 10) + seconds = '0' + seconds.toFixed(1); + else + seconds = seconds.toFixed(1); + + this.elapsedTimeDom.textContent = `${mins}:${seconds}`; + } + } +} diff --git a/seminar06-planning/simulator/js/simulator/DynamicObstacleEditor.js b/seminar06-planning/simulator/js/simulator/DynamicObstacleEditor.js new file mode 100644 index 0000000..bff5059 --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/DynamicObstacleEditor.js @@ -0,0 +1,185 @@ +import DynamicObstacle from "../autonomy/DynamicObstacle.js"; +import PathPlannerConfigEditor from "./PathPlannerConfigEditor.js"; + +export default class DynamicObstacleEditor { + constructor() { + this.editorDom = document.getElementById('editor-dynamic-obstacles-box'); + this.formsContainer = document.getElementById('editor-dynamic-obstacle-forms'); + this.statsDynamicObstacles = document.getElementById('editor-stats-dynamic-obstacles'); + + document.getElementById('editor-add-dynamic-obstacle').addEventListener('click', this.addDynamicObstacle.bind(this)); + } + + enable() { + this.editorDom.classList.remove('is-hidden'); + } + + disable() { + this.editorDom.classList.add('is-hidden'); + } + + toJSON() { + const forms = this.formsContainer.getElementsByTagName('form'); + const obstacles = []; + + for (let i = 0; i < forms.length; i++) { + const formData = new FormData(forms[i]); + const params = { parallel: false }; + + for (const [k, v] of formData.entries()) + params[k] = v; + + let type = 0; + if (params.type == 'cyclist') + type = 1; + else if (params.type == 'pedestrian') + type = 2; + + obstacles.push({ + p: [params.sPos, params.lPos], + v: [params.sVel, params.lVel], + l: !!params.parallel ? 1 : 0, + t: type + }); + } + + return obstacles; + } + + loadJSON(json) { + this.clearDynamicObstacles(); + + json.forEach(o => { + const form = this.addDynamicObstacle(); + + form['sPos'].value = o.p[0]; + form['lPos'].value = o.p[1]; + form['sVel'].value = o.v[0]; + form['lVel'].value = o.v[1]; + form['parallel'].checked = !!o.l; + form['type'].selectedIndex = o.t; + }); + } + + collectDynamicObstacles() { + const forms = this.formsContainer.getElementsByTagName('form'); + const obstacles = []; + + for (let i = 0; i < forms.length; i++) { + const formData = new FormData(forms[i]); + const params = { parallel: false }; + + for (const [k, v] of formData.entries()) + params[k] = v; + + const pos = new THREE.Vector2(Number(params.sPos) || 0, (Number(params.lPos) || 0) * PathPlannerConfigEditor.internalConfig.roadWidth / 2); + const vel = new THREE.Vector2(Number(params.sVel) || 0, Number(params.lVel) || 0); + const parallel = !!params.parallel; + + obstacles.push(new DynamicObstacle(params.type, pos, vel, parallel)); + } + + return obstacles; + } + + addDynamicObstacle() { + const index = this.formsContainer.getElementsByTagName('form').length + 1; + const form = this.buildForm(index); + + this.formsContainer.appendChild(form); + this.statsDynamicObstacles.textContent = this.formsContainer.getElementsByTagName('form').length; + + return form; + } + + removeDynamicObstacle(form) { + this.formsContainer.removeChild(form); + this.reindexForms(); + this.statsDynamicObstacles.textContent = this.formsContainer.getElementsByTagName('form').length; + } + + clearDynamicObstacles() { + this.formsContainer.innerHTML = ''; + this.statsDynamicObstacles.textContent = 0; + } + + reindexForms() { + const forms = this.formsContainer.getElementsByTagName('form'); + + for (let i = 0; i < forms.length; i++) { + forms[i].getElementsByClassName('dynamic-obstacle-index')[0].textContent = i + 1; + } + } + + buildForm(index) { + const html = + `
+
+
+
+
${index}
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ + + +
+
+
+
+
`; + + const template = document.createElement('template'); + template.innerHTML = html; + const form = template.content.firstChild; + + form.getElementsByClassName('editor-remove-dynamic-obstacle')[0].addEventListener('click', e => this.removeDynamicObstacle(form)); + + return form; + } +} diff --git a/seminar06-planning/simulator/js/simulator/Editor.js b/seminar06-planning/simulator/js/simulator/Editor.js new file mode 100644 index 0000000..586992b --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/Editor.js @@ -0,0 +1,672 @@ +import LanePath from "../autonomy/LanePath.js"; +import StaticObstacle from "../autonomy/StaticObstacle.js"; +import DynamicObstacleEditor from "./DynamicObstacleEditor.js"; +import ScenarioManager from "./ScenarioManager.js"; +import ShareManager from "./ShareManager.js"; +import { formatDate } from "../Helpers.js"; + +const GROUND_PLANE = new THREE.Plane(new THREE.Vector3(0, 1, 0)); + +const NORMAL_OPACITY = 0.7; +const HOVER_OPACITY = 1; +const NORMAL_POINT_COLOR = 0x0088ff; +const HOVER_POINT_COLOR = 0x33ccff; +const NORMAL_STATIC_OBSTACLE_COLOR = 0xdd0000; +const HOVER_STATIC_OBSTACLE_COLOR = 0xdd3333; +const NORMAL_DYNAMIC_OBSTACLE_COLOR = 0xff8800; +const HOVER_DYNAMIC_OBSTACLE_COLOR = 0xffcc33; + +const INITIAL_SPEED_FALLBACK = 20; +const SPEED_LIMIT_FALLBACK = 20; +const LANE_PREFERENCE_FALLBACK = +1; + +export default class Editor { + constructor(canvas, camera, scene) { + this.canvas = canvas; + this.camera = camera; + + this.isEnabled = false; + this.raycaster = new THREE.Raycaster(); + this.mouse = new THREE.Vector2(); + this.dragOffset = new THREE.Vector3(); + this.draggingPoint = null; + this.pointIndex = 0; + this.obstacleIndex = 0; + this.previousSavedName = null; + this.scenarioManager = new ScenarioManager(this); + this.shareManager = new ShareManager(); + + this.centerlineGeometry = new THREE.Geometry(); + this.leftBoundaryGeometry = new THREE.Geometry(); + this.rightBoundaryGeometry = new THREE.Geometry(); + this.draggingObstaclePreview = null; + + this.group = new THREE.Group(); + this.group.renderOrder = 1; + this.pointGroup = new THREE.Group(); + this.pointGroup.renderOrder = 2; + this.obstacleGroup = new THREE.Group(); + this.obstacleGroup.renderOrder = 1; + this.group.add(this.obstacleGroup); + this.group.add(this.pointGroup); + scene.add(this.group); + + this.lanePath = new LanePath(); + this.dynamicObstacleEditor = new DynamicObstacleEditor(); + + this.editorPathButton = document.getElementById('editor-path'); + this.editorPathButton.addEventListener('click', e => this.changeEditMode('path')); + this.editorObstaclesButton = document.getElementById('editor-obstacles'); + this.editorObstaclesButton.addEventListener('click', e => this.changeEditMode('staticObstacles')); + this.editorDynamicObstaclesButton = document.getElementById('editor-dynamic-obstacles'); + this.editorDynamicObstaclesButton.addEventListener('click', e => this.changeEditMode('dynamicObstacles')); + + this.editorRoadBox = document.getElementById('editor-road-box'); + this.initialSpeedDom = document.getElementById('editor-initial-speed'); + this.speedLimitDom = document.getElementById('editor-speed-limit'); + this.laneLeftDom = document.getElementById('editor-lane-left'); + this.laneRightDom = document.getElementById('editor-lane-right'); + + this.laneLeftDom.addEventListener('click', e => this._changeLanePreference(-1)); + this.laneRightDom.addEventListener('click', e => this._changeLanePreference(+1)); + + this.initialSpeedDom.value = INITIAL_SPEED_FALLBACK; + this.speedLimitDom.value = SPEED_LIMIT_FALLBACK; + this._changeLanePreference(LANE_PREFERENCE_FALLBACK); + + this.statsRoadLength = document.getElementById('editor-stats-road-length'); + this.statsStaticObstacles = document.getElementById('editor-stats-static-obstacles'); + this.statsStation = document.getElementById('editor-stats-station'); + this.statsLatitude = document.getElementById('editor-stats-latitude'); + this.scenarioNameDom = document.getElementById('editor-scenario-name'); + this.scenarioSavedAtDom = document.getElementById('editor-scenario-saved-at'); + + this.helpPath = document.getElementById('editor-help-path'); + this.helpStaticObstacles = document.getElementById('editor-help-static-obstacles'); + this.helpDynamicObstacles = document.getElementById('editor-help-dynamic-obstacles'); + + this.changeEditMode('path'); + this.removeMode = false; + + canvas.addEventListener('mousedown', this.mouseDown.bind(this)); + canvas.addEventListener('mousemove', this.mouseMove.bind(this)); + canvas.addEventListener('mouseup', this.mouseUp.bind(this)); + canvas.addEventListener('contextmenu', e => this.isEnabled && e.preventDefault()); + + const editorClearOptions = document.getElementById('editor-clear-options'); + document.getElementById('editor-clear').addEventListener('click', event => { + event.stopPropagation(); + editorClearOptions.classList.toggle('is-hidden'); + }); + document.addEventListener('click', () => editorClearOptions.classList.add('is-hidden')); + + document.getElementById('editor-clear-obstacles').addEventListener('click', this.clearStaticObstacles.bind(this)); + document.getElementById('editor-clear-dynamic-obstacles').addEventListener('click', this.dynamicObstacleEditor.clearDynamicObstacles.bind(this.dynamicObstacleEditor)); + document.getElementById('editor-clear-path').addEventListener('click', this.clearPath.bind(this)); + document.getElementById('editor-clear-all').addEventListener('click', this.clearAll.bind(this)); + + document.getElementById('editor-save').addEventListener('click', this.saveClicked.bind(this)); + document.getElementById('editor-load').addEventListener('click', this.loadClicked.bind(this)); + document.getElementById('editor-share').addEventListener('click', this.shareClicked.bind(this)); + + document.addEventListener('keydown', this.keyDown.bind(this)); + document.addEventListener('keyup', this.keyUp.bind(this)); + + const resolution = new THREE.Vector2(this.canvas.clientWidth, this.canvas.clientHeight); + this.centerlineObject = new THREE.Mesh( + new THREE.Geometry(), + new MeshLineMaterial({ + color: new THREE.Color(0x004488), + lineWidth: 8, + resolution: resolution, + sizeAttenuation: false, + near: camera.near, + far: camera.far, + depthWrite: false + }) + ); + this.centerlineObject.rotation.x = Math.PI / 2; + this.centerlineObject.renderOrder = 1; + this.group.add(this.centerlineObject); + + this.leftBoundaryObject = new THREE.Mesh( + new THREE.Geometry(), + new MeshLineMaterial({ + color: new THREE.Color(0xff40ff), + lineWidth: 0.15, + resolution: resolution, + transparent: true, + opacity: 0.7 + }) + ); + this.leftBoundaryObject.rotation.x = Math.PI / 2; + this.leftBoundaryObject.renderOrder = 1; + this.group.add(this.leftBoundaryObject); + + this.rightBoundaryObject = new THREE.Mesh( + new THREE.Geometry(), + new MeshLineMaterial({ + color: new THREE.Color(0xff40ff), + lineWidth: 0.15, + resolution: resolution, + transparent: true, + opacity: 0.7 + }) + ); + this.rightBoundaryObject.rotation.x = Math.PI / 2; + this.rightBoundaryObject.renderOrder = 1; + this.group.add(this.rightBoundaryObject); + + window.addEventListener('resize', () => { + // Use setTimeout to queue the resolution update after the canvas is reflowed. + // This gets around some weirdness noticed when opening and closing Chrome Developer Tools. + setTimeout(() => { + const resolution = new THREE.Vector2(this.canvas.clientWidth, this.canvas.clientHeight); + this.centerlineObject.material.uniforms.resolution.value = resolution; + this.leftBoundaryObject.material.uniforms.resolution.value = resolution; + this.rightBoundaryObject.material.uniforms.resolution.value = resolution; + }, 0); + }); + } + + get enabled() { + return this.isEnabled; + } + + set enabled(e) { + this.isEnabled = e; + this.pointGroup.visible = this.obstacleGroup.visible = !!this.isEnabled + } + + get staticObstacles() { + return this.obstacleGroup.children.map(o => new StaticObstacle(new THREE.Vector2(o.position.x, o.position.z), -o.rotation.z, o.userData.width, o.userData.height)); + } + + get dynamicObstacles() { + return this.dynamicObstacleEditor.collectDynamicObstacles(); + } + + get initialSpeed() { + let speed = parseFloat(this.initialSpeedDom.value); + if (Number.isNaN(speed) || speed < 0) + speed = 0; + + return Number.isNaN(speed) || speed < 0 ? INITIAL_SPEED_FALLBACK : speed; + } + + get speedLimit() { + let limit = parseFloat(this.speedLimitDom.value); + if (Number.isNaN(limit) || limit < 0) + limit = 0; + + return Number.isNaN(limit) || limit < 0 ? SPEED_LIMIT_FALLBACK : limit; + } + + scenarioToJSON() { + const trunc = n => +n.toFixed(5); + + const json = { + p: Array.prototype.concat.apply([], this.lanePath.anchors.map(a => [trunc(a.x), trunc(a.y)])), + s: this.staticObstacles.map(o => o.toJSON()), + d: this.dynamicObstacleEditor.toJSON(), + l: Number(this.lanePath.arcLength.toFixed(3)), + c: { + s: this.initialSpeedDom.value, + sl: this.speedLimitDom.value, + lp: this.lanePreference + }, + v: 1 + }; + + return json; + } + + loadJSON(json) { + if (json.p === undefined || json.p.length % 2 != 0) { + throw new Error('Incomplete lane path.'); + } + + this.clearAll(); + + this.lanePath = new LanePath(); + for (let i = 0; i < json.p.length; i += 2) { + this.addPoint(new THREE.Vector2(json.p[i], json.p[i + 1]), false); + } + this.lanePath.resampleAll(); + this.rebuildPathGeometry(); + + json.s.forEach(o => { + const staticObstacle = StaticObstacle.fromJSON(o); + this.addStaticObstacle(new THREE.Vector3(staticObstacle.pos.x, 0, staticObstacle.pos.y), staticObstacle.width, staticObstacle.height, staticObstacle.rot) + }); + + this.dynamicObstacleEditor.loadJSON(json.d); + + let initialSpeed = INITIAL_SPEED_FALLBACK; + let speedLimit = SPEED_LIMIT_FALLBACK; + try { initialSpeed = json.c.s; } catch (e) { } + try { speedLimit = json.c.sl; } catch (e) { } + + this.initialSpeedDom.value = initialSpeed; + this.speedLimitDom.value = speedLimit; + + let lanePreference = LANE_PREFERENCE_FALLBACK; + try { + if (typeof(json.c.lp) === 'number') + lanePreference = Math.sign(json.c.lp) || LANE_PREFERENCE_FALLBACK; + } catch (e) { } + + this._changeLanePreference(lanePreference); + } + + update() { + if (!this.isEnabled) return; + + this.raycaster.setFromCamera(this.mouse, this.camera); + const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE); + + const [station, latitude, _around] = this.lanePath.stationLatitudeFromPosition(new THREE.Vector2(intersection.x, intersection.z)); + this.statsStation.textContent = (station || 0).toFixed(1); + this.statsLatitude.textContent = (latitude || 0).toFixed(1); + + if (this.draggingPoint) { + if (intersection != null) { + this.updatePoint(this.draggingPoint, intersection.clone().add(this.dragOffset)); + this.rebuildPathGeometry(); + } + } else if (this.draggingObstacle) { + if (intersection !== null) { + if (this.draggingObstacle === true) { + if (this.draggingObstaclePreview) this.group.remove(this.draggingObstaclePreview); + + const [center, width, height] = this._dimensionsFromRect(this.dragOffset, intersection); + + this.draggingObstaclePreview = new THREE.Mesh( + new THREE.PlaneGeometry(width, height), + new THREE.MeshBasicMaterial({ color: NORMAL_STATIC_OBSTACLE_COLOR, depthTest: false, transparent: true, opacity: 0.4 }) + ); + this.draggingObstaclePreview.rotation.x = -Math.PI / 2; + this.draggingObstaclePreview.position.copy(center); + this.group.add(this.draggingObstaclePreview); + } else { + this.draggingObstacle.position.copy(intersection.clone().add(this.dragOffset)); + } + } + } else if (this.rotatingObstacle) { + const rotation = (this.dragOffset.x - this.mouse.x) * 2 * Math.PI; + this.rotatingObstacle.rotation.z = Math.wrapAngle(rotation + this.initialObstacleRotation); + } else { + this.pointGroup.children.forEach(p => { + p.material.color.set(NORMAL_POINT_COLOR) + p.material.opacity = NORMAL_OPACITY; + }); + + this.obstacleGroup.children.forEach(o => { + o.material.color.set(NORMAL_STATIC_OBSTACLE_COLOR) + o.material.opacity = NORMAL_OPACITY; + }); + + this.canvas.classList.remove('editor-grab', 'editor-grabbing', 'editor-removing'); + + if (this.editMode == 'path' && this.pointGroup.children.length > 0) { + let picked = null; + this.raycaster.intersectObjects(this.pointGroup.children).forEach(p => { + if (picked === null || p.object.userData.index > picked.object.userData.index) picked = p; + }); + + if (picked) { + picked.object.material.color.set(HOVER_POINT_COLOR); + picked.object.material.opacity = HOVER_OPACITY; + + if (this.removeMode) + this.canvas.classList.add('editor-removing'); + else + this.canvas.classList.add('editor-grab'); + } + } else if (this.editMode == 'staticObstacles' && this.obstacleGroup.children.length > 0) { + let picked = null; + this.raycaster.intersectObjects(this.obstacleGroup.children).forEach(o => { + if (picked === null || o.object.userData.index > picked.object.userData.index) picked = o; + }); + + if (picked) { + picked.object.material.color.set(HOVER_STATIC_OBSTACLE_COLOR); + picked.object.material.opacity = HOVER_OPACITY; + + if (this.removeMode) + this.canvas.classList.add('editor-removing'); + else + this.canvas.classList.add('editor-grab'); + } + } + } + } + + changeEditMode(mode) { + this.editorPathButton.classList.add('is-outlined'); + this.editorObstaclesButton.classList.add('is-outlined'); + this.editorDynamicObstaclesButton.classList.add('is-outlined'); + this.editorPathButton.classList.remove('is-selected'); + this.editorObstaclesButton.classList.remove('is-selected'); + this.editorDynamicObstaclesButton.classList.remove('is-selected'); + this.editorRoadBox.classList.add('is-hidden'); + this.helpPath.classList.add('is-hidden'); + this.helpStaticObstacles.classList.add('is-hidden'); + this.helpDynamicObstacles.classList.add('is-hidden'); + + if (mode == 'path') { + this.editMode = 'path'; + this.editorPathButton.classList.remove('is-outlined'); + this.editorPathButton.classList.add('is-selected'); + this.editorRoadBox.classList.remove('is-hidden'); + this.helpPath.classList.remove('is-hidden'); + this.dynamicObstacleEditor.disable(); + } else if (mode == 'staticObstacles') { + this.editMode = 'staticObstacles'; + this.editorObstaclesButton.classList.remove('is-outlined'); + this.editorObstaclesButton.classList.add('is-selected'); + this.helpStaticObstacles.classList.remove('is-hidden'); + this.dynamicObstacleEditor.disable(); + } else { + this.editMode = 'dynamicObstacles'; + this.editorDynamicObstaclesButton.classList.remove('is-outlined'); + this.editorDynamicObstaclesButton.classList.add('is-selected'); + this.helpDynamicObstacles.classList.remove('is-hidden'); + this.dynamicObstacleEditor.enable(); + } + } + + addStaticObstacle(center, width, height, rotation = 0) { + const obstacle = new THREE.Mesh( + new THREE.PlaneGeometry(width, height), + new THREE.MeshBasicMaterial({ color: NORMAL_STATIC_OBSTACLE_COLOR, depthTest: false, transparent: true, opacity: NORMAL_OPACITY }) + ); + obstacle.rotation.x = -Math.PI / 2; + obstacle.rotation.z = -Math.wrapAngle(rotation); + obstacle.position.copy(center); + obstacle.userData = { index: this.obstacleIndex++, width: width, height: height }; + + this.obstacleGroup.add(obstacle); + this.statsStaticObstacles.textContent = this.obstacleGroup.children.length; + } + + removeStaticObstacle(obstacle) { + this.obstacleGroup.remove(obstacle); + this.statsStaticObstacles.textContent = this.obstacleGroup.children.length; + } + + clearStaticObstacles() { + this.group.remove(this.obstacleGroup); + this.obstacleGroup = new THREE.Group(); + this.obstacleGroup.renderOrder = 1; + this.group.add(this.obstacleGroup); + this.obstacleIndex = 0; + this.statsStaticObstacles.textContent = 0; + } + + clearAll() { + this.clearPath(); + this.clearStaticObstacles(); + this.dynamicObstacleEditor.clearDynamicObstacles(); + } + + rebuildPathGeometry() { + if (this.lanePath.anchors.length > 1) { + this.centerlineGeometry.setFromPoints(this.lanePath.centerline); + const centerline = new MeshLine(); + centerline.setGeometry(this.centerlineGeometry); + this.centerlineObject.geometry = centerline.geometry; + + this.leftBoundaryGeometry.setFromPoints(this.lanePath.leftBoundary); + const leftBoundary = new MeshLine(); + leftBoundary.setGeometry(this.leftBoundaryGeometry); + this.leftBoundaryObject.geometry = leftBoundary.geometry; + + this.rightBoundaryGeometry.setFromPoints(this.lanePath.rightBoundary); + const rightBoundary = new MeshLine(); + rightBoundary.setGeometry(this.rightBoundaryGeometry); + this.rightBoundaryObject.geometry = rightBoundary.geometry; + } else { + this.centerlineObject.geometry.dispose(); + this.centerlineObject.geometry = new THREE.Geometry(); + + this.leftBoundaryObject.geometry.dispose(); + this.leftBoundaryObject.geometry = new THREE.Geometry(); + + this.rightBoundaryObject.geometry.dispose(); + this.rightBoundaryObject.geometry = new THREE.Geometry(); + } + + this.statsRoadLength.textContent = this.lanePath.arcLength.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 }); + } + + addPoint(pos, resample = true) { + const point = new THREE.Mesh( + new THREE.CircleGeometry(1, 32), + new THREE.MeshBasicMaterial({ + color: NORMAL_POINT_COLOR, + depthTest: false, + transparent: true, + opacity: NORMAL_OPACITY + }) + ); + point.rotation.x = -Math.PI / 2; + point.position.set(pos.x, 0, pos.y); + point.userData = { index: this.pointIndex++ }; + + this.lanePath.addAnchor(pos, resample); + this.pointGroup.add(point); + + return point; + } + + updatePoint(object, pos) { + object.position.copy(pos); + this.lanePath.updateAnchor(object.userData.index, new THREE.Vector2(pos.x, pos.z)); + } + + removePoint(object) { + const index = object.userData.index; + + this.pointGroup.remove(object); + this.pointGroup.children.forEach(p => { + if (p.userData.index > index) p.userData.index--; + }); + this.pointIndex--; + + this.lanePath.removeAnchor(index); + } + + clearPath() { + this.group.remove(this.pointGroup); + this.pointGroup = new THREE.Group(); + this.pointGroup.renderOrder = 2; + this.group.add(this.pointGroup); + this.pointIndex = 0; + + this.lanePath = new LanePath(); + this.rebuildPathGeometry(); + + this.initialSpeedDom.value = INITIAL_SPEED_FALLBACK; + this.speedLimitDom.value = SPEED_LIMIT_FALLBACK; + } + + keyDown(event) { + if (event.repeat || this.editMode != 'path' && this.editMode != 'staticObstacles') return; + + if (event.key == 'Shift') { + this.removeMode = true; + this.canvas.classList.add('editor-pointing'); + event.preventDefault(); + } else if (event.key == 'Control' && this.editMode == 'staticObstacles') { + this.rotateMode = true; + this.canvas.classList.add('editor-pointing'); + event.preventDefault(); + } + } + + keyUp(event) { + if (event.key == 'Shift') { + this.removeMode = false; + this.canvas.classList.remove('editor-pointing', 'editor-removing'); + } else if (event.key == 'Control') { + this.rotateMode = false; + this.canvas.classList.remove('editor-pointing', 'editor-grabbing'); + } + } + + mouseDown(event) { + if (!this.isEnabled || event.button != 0) return; + + this.mouse.x = (event.offsetX / this.canvas.clientWidth) * 2 - 1; + this.mouse.y = -(event.offsetY / this.canvas.clientHeight) * 2 + 1; + + this.raycaster.setFromCamera(this.mouse, this.camera); + + if (this.editMode == 'path') { + let picked = null; + this.raycaster.intersectObjects(this.pointGroup.children).forEach(p => { + if (picked === null || p.object.userData.index > picked.object.userData.index) picked = p; + }); + + if (picked) { + if (this.removeMode) { + this.removePoint(picked.object); + this.rebuildPathGeometry(); + } else { + this.canvas.classList.remove('editor-grab'); + this.canvas.classList.add('editor-grabbing'); + + this.draggingPoint = picked.object; + this.dragOffset.copy(picked.object.position).sub(picked.point); + } + } else if (!this.removeMode) { + const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE); + if (intersection != null) { + this.addPoint(new THREE.Vector2(intersection.x, intersection.z)); + this.rebuildPathGeometry(); + } + } + } else if (this.editMode == 'staticObstacles') { + let picked = null; + this.raycaster.intersectObjects(this.obstacleGroup.children).forEach(o => { + if (picked === null || o.object.userData.index > picked.object.userData.index) picked = o; + }); + + if (picked) { + if (this.removeMode) { + this.removeStaticObstacle(picked.object); + } else { + this.canvas.classList.remove('editor-grab'); + this.canvas.classList.add('editor-grabbing'); + + if (this.rotateMode) { + this.rotatingObstacle = picked.object; + this.initialObstacleRotation = picked.object.rotation.z; + this.dragOffset.set(this.mouse.x, this.mouse.y, 0); + } else { + this.draggingObstacle = picked.object; + this.dragOffset.copy(picked.object.position).sub(picked.point); + } + } + } else if (!this.removeMode && !this.rotateMode) { + const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE); + if (intersection != null) { + this.draggingObstacle = true; + this.dragOffset.copy(intersection); + } + } + } + } + + mouseMove(event) { + this.mouse.x = (event.offsetX / this.canvas.clientWidth) * 2 - 1; + this.mouse.y = -(event.offsetY / this.canvas.clientHeight) * 2 + 1; + } + + mouseUp(event) { + if (!this.isEnabled || event.button != 0) return; + + if (this.draggingObstacle === true) { + this.group.remove(this.draggingObstaclePreview); + this.draggingObstaclePreview = null; + + this.mouse.x = (event.offsetX / this.canvas.clientWidth) * 2 - 1; + this.mouse.y = -(event.offsetY / this.canvas.clientHeight) * 2 + 1; + + this.raycaster.setFromCamera(this.mouse, this.camera); + + const intersection = this.raycaster.ray.intersectPlane(GROUND_PLANE); + if (intersection != null) { + const [center, width, height] = this._dimensionsFromRect(this.dragOffset, intersection); + this.addStaticObstacle(center, width, height); + } + } + + this.draggingPoint = null; + this.draggingObstacle = null; + this.rotatingObstacle = null; + this.canvas.classList.remove('editor-grab', 'editor-grabbing'); + } + + updateSavedInfo(name, savedAt) { + this.previousSavedName = name || null; + + name = name || 'Untitled'; + savedAt = savedAt || 'Unsaved'; + + this.scenarioNameDom.textContent = name; + this.scenarioNameDom.title = name; + this.scenarioSavedAtDom.textContent = savedAt; + } + + _changeLanePreference(pref) { + this.lanePreference = pref; + + if (pref > 0) { + this.laneLeftDom.classList.add('is-outlined'); + this.laneLeftDom.classList.remove('is-selected'); + this.laneRightDom.classList.remove('is-outlined'); + this.laneRightDom.classList.add('is-selected'); + } else { + this.laneRightDom.classList.add('is-outlined'); + this.laneRightDom.classList.remove('is-selected'); + this.laneLeftDom.classList.remove('is-outlined'); + this.laneLeftDom.classList.add('is-selected'); + } + } + + saveClicked() { + const name = window.prompt('Name your scenario:', this.previousSavedName || ''); + if (name === null) return; + if (name === '') { + window.alert('The scenario name cannot be blank.'); + return; + } + + let [success, savedAt] = this.scenarioManager.saveScenario(name, this.scenarioToJSON(), name === this.previousSavedName); + const formattedSavedAt = formatDate(savedAt); + + if (success) { + this.updateSavedInfo(name, formattedSavedAt); + } else if (confirm(`A scenario named "${name}" already exists, last saved ${formattedSavedAt}. Do you want to overwrite it?`)) { + [success, savedAt] = this.scenarioManager.saveScenario(name, this.scenarioToJSON(), true); + this.updateSavedInfo(name, formatDate(savedAt)); + } + } + + loadClicked() { + this.scenarioManager.showModal(); + } + + shareClicked() { + this.shareManager.showModal(this.scenarioToJSON()); + } + + _dimensionsFromRect(from, to) { + const center = from.clone().add(to).divideScalar(2); + const width = Math.max(0.5, Math.abs(from.x - to.x)); + const height = Math.max(0.5, Math.abs(from.z - to.z)); + return [center, width, height]; + } +} diff --git a/seminar06-planning/simulator/js/simulator/OrbitControls.js b/seminar06-planning/simulator/js/simulator/OrbitControls.js new file mode 100644 index 0000000..0454fe3 --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/OrbitControls.js @@ -0,0 +1,1048 @@ +/** + * @author qiao / https://github.com/qiao + * @author mrdoob / http://mrdoob.com + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author erich666 / http://erichaines.com + */ + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// +// Orbit - left mouse / touch: one finger move +// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish +// Pan - right mouse, or arrow keys / touch: three finger swipe + +const OrbitControls = function ( object, domElement ) { + + this.object = object; + + this.domElement = ( domElement !== undefined ) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.25; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy( scope.target ); + scope.position0.copy( scope.object.position ); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + this.rotateLeft = function(angle) { + rotateLeft(angle); + } + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + + rotateLeft( getAutoRotationAngle() ); + + } + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + scope.target.add( panOffset ); + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + } + + scale = 1; + panOffset.set( 0, 0, 0 ); + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + window.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); // get Y column of objectMatrix + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if ( scope.object.isPerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we actually don't use screenWidth, since perspective camera is fixed to screen height + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object.isOrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + //console.log( 'handleMouseDownRotate' ); + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + //console.log( 'handleMouseDownDolly' ); + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + //console.log( 'handleMouseDownPan' ); + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + //console.log( 'handleMouseMoveRotate' ); + + rotateEnd.set( event.clientX, event.clientY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + //console.log( 'handleMouseMoveDolly' ); + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + //console.log( 'handleMouseMovePan' ); + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( event ) { + + // console.log( 'handleMouseUp' ); + + } + + function handleMouseWheel( event ) { + + // console.log( 'handleMouseWheel' ); + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + //console.log( 'handleKeyDown' ); + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + scope.update(); + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + scope.update(); + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + scope.update(); + break; + + } + + } + + function handleTouchStartRotate( event ) { + + //console.log( 'handleTouchStartRotate' ); + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchStartDolly( event ) { + + //console.log( 'handleTouchStartDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + function handleTouchStartPan( event ) { + + //console.log( 'handleTouchStartPan' ); + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } + + function handleTouchMoveRotate( event ) { + + //console.log( 'handleTouchMoveRotate' ); + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + rotateDelta.subVectors( rotateEnd, rotateStart ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + // rotating across whole screen goes 360 degrees around + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed ); + + // rotating up and down along whole screen attempts to go 360, but limited to 180 + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleTouchMoveDolly( event ) { + + //console.log( 'handleTouchMoveDolly' ); + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyIn( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleTouchMovePan( event ) { + + //console.log( 'handleTouchMovePan' ); + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + panDelta.subVectors( panEnd, panStart ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleTouchEnd( event ) { + + //console.log( 'handleTouchEnd' ); + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.button ) { + + case scope.mouseButtons.ORBIT: + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + break; + + case scope.mouseButtons.ZOOM: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + case scope.mouseButtons.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + event.preventDefault(); + event.stopPropagation(); + + handleMouseWheel( event ); + + scope.dispatchEvent( startEvent ); // not sure why these are here... + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + + handleTouchStartDolly( event ); + + state = STATE.TOUCH_DOLLY; + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( event.touches.length ) { + + case 1: // one-fingered touch: rotate + + if ( scope.enableRotate === false ) return; + if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed?... + + handleTouchMoveRotate( event ); + + break; + + case 2: // two-fingered touch: dolly + + if ( scope.enableZoom === false ) return; + if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?... + + handleTouchMoveDolly( event ); + + break; + + case 3: // three-fingered touch: pan + + if ( scope.enablePan === false ) return; + if ( state !== STATE.TOUCH_PAN ) return; // is this needed?... + + handleTouchMovePan( event ); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); + + window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +OrbitControls.prototype.constructor = OrbitControls; + +Object.defineProperties( OrbitControls.prototype, { + + center: { + + get: function () { + + console.warn( 'OrbitControls: .center has been renamed to .target' ); + return this.target; + + } + + }, + + // backward compatibility + + noZoom: { + + get: function () { + + console.warn( 'OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + return ! this.enableZoom; + + }, + + set: function ( value ) { + + console.warn( 'OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); + this.enableZoom = ! value; + + } + + }, + + noRotate: { + + get: function () { + + console.warn( 'OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + return ! this.enableRotate; + + }, + + set: function ( value ) { + + console.warn( 'OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); + this.enableRotate = ! value; + + } + + }, + + noPan: { + + get: function () { + + console.warn( 'OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + return ! this.enablePan; + + }, + + set: function ( value ) { + + console.warn( 'OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); + this.enablePan = ! value; + + } + + }, + + noKeys: { + + get: function () { + + console.warn( 'OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + return ! this.enableKeys; + + }, + + set: function ( value ) { + + console.warn( 'OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); + this.enableKeys = ! value; + + } + + }, + + staticMoving: { + + get: function () { + + console.warn( 'OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + return ! this.enableDamping; + + }, + + set: function ( value ) { + + console.warn( 'OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); + this.enableDamping = ! value; + + } + + }, + + dynamicDampingFactor: { + + get: function () { + + console.warn( 'OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + return this.dampingFactor; + + }, + + set: function ( value ) { + + console.warn( 'OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); + this.dampingFactor = value; + + } + + } + +} ); + +export default OrbitControls; diff --git a/seminar06-planning/simulator/js/simulator/PathPlannerConfigEditor.js b/seminar06-planning/simulator/js/simulator/PathPlannerConfigEditor.js new file mode 100644 index 0000000..721ba05 --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/PathPlannerConfigEditor.js @@ -0,0 +1,159 @@ +import Car from "../physics/Car.js"; + +const LOCAL_STORAGE_KEY = 'dash_PathPlannerConfig'; + +const internalConfig = { + lattice: { + numStations: 8, + numLatitudes: 17, + stationConnectivity: 3, + latitudeConnectivity: 7 + }, + + roadWidth: 3.7 * 2, // meters + + numDynamicFrames: 20, + numDynamicSubframes: 4, + + dCurvatureMax: Car.MAX_STEER_SPEED / Car.WHEEL_BASE, + rearAxleToCenter: -Car.REAR_AXLE_POS +}; + +const defaultConfig = { + spatialHorizon: 120, // meters + centerlineStationInterval: 0.5, // meters + + xyGridCellSize: 0.3, // meters + slGridCellSize: 0.15, // meters + gridMargin: 20, // meters + pathSamplingStep: 1, // meters + + cubicPathPenalty: 0, + + collisionDilationS: Car.HALF_CAR_LENGTH + 2, // meters + hazardDilationS: 8, // meters + collisionDilationL: Car.HALF_CAR_WIDTH + 0.5, //meters + hazardDilationL: 0.5, // meters + + dynamicHazardDilationS: 16, + dynamicHazardDilationL: 0.5, + + obstacleHazardCost: 200, + + laneCenterLatitude: internalConfig.roadWidth / 4, + laneShoulderLatitude: internalConfig.roadWidth / 2 * 1.1 - Car.HALF_CAR_WIDTH, + laneCostSlope: 20, // cost / meter + lanePreferenceDiscount: 55, + + stationReachDiscount: 400, + extraTimePenalty: 1000, + + hysteresisDiscount: 50, + + speedLimitPenalty: 200, + + hardAccelerationPenalty: 70, + hardDecelerationPenalty: 50, + + softLateralAccelerationLimit: 4, // m/s^2 + softLateralAccelerationPenalty: 100, + linearLateralAccelerationPenalty: 10, + + accelerationChangePenalty: 10 +}; + +export default class PathPlannerConfigEditor { + constructor() { + this._config = Object.assign({}, defaultConfig); + + this.showConfigBox = document.getElementById('show-config-box'); + this.configBox = document.getElementById('config-box-content'); + this.configForm = document.getElementById('config-form'); + + this._setUpButtons(); + + let storedConfig = {}; + try { + storedConfig = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY)) || {}; + } catch (e) {} + + for (const key of Object.keys(this._config).sort()) { + if (storedConfig[key] !== undefined) this._config[key] = storedConfig[key]; + this.configForm.appendChild(this._createConfigField(key, this._config[key])); + } + } + + get config() { + return Object.assign({}, this._config, internalConfig); + } + + _setUpButtons() { + document.getElementById('show-config-button').addEventListener('click', e => { + this.showConfigBox.classList.add('is-hidden'); + this.configBox.classList.remove('is-hidden'); + }); + + document.getElementById('hide-config-button').addEventListener('click', e => { + this.showConfigBox.classList.remove('is-hidden'); + this.configBox.classList.add('is-hidden'); + }); + + document.getElementById('save-config-button').addEventListener('click', this._saveConfigFields.bind(this)); + document.getElementById('restore-defaults-config-button').addEventListener('click', this._restoreDefaults.bind(this)); + } + + _createConfigField(key, value) { + const html = + `
+
+ +
+
+
+
+ +
+
+
+
`; + + const template = document.createElement('template'); + template.innerHTML = html; + return template.content.firstChild; + } + + _saveConfigFields() { + const formData = new FormData(this.configForm); + + for (const [k, v] of formData.entries()) { + const parsedValue = Number.parseFloat(v); + this._config[k] = parsedValue + + const fieldDom = document.getElementById(`config-field-${k}`); + if (parsedValue === defaultConfig[k]) + fieldDom.classList.remove('is-danger'); + else + fieldDom.classList.add('is-danger'); + } + + try { + window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(this._config)); + } catch (e) {} + } + + _restoreDefaults() { + this._config = Object.assign({}, defaultConfig); + + try { + window.localStorage.removeItem(LOCAL_STORAGE_KEY); + } catch (e) {} + + while (this.configForm.firstChild) + this.configForm.removeChild(this.configForm.firstChild); + + for (const key of Object.keys(this._config).sort()) + this.configForm.appendChild(this._createConfigField(key, this._config[key])); + } +} + +PathPlannerConfigEditor.internalConfig = internalConfig; diff --git a/seminar06-planning/simulator/js/simulator/ScenarioManager.js b/seminar06-planning/simulator/js/simulator/ScenarioManager.js new file mode 100644 index 0000000..eeab586 --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/ScenarioManager.js @@ -0,0 +1,252 @@ +import { formatDate } from "../Helpers.js"; +import EXAMPLES from "./examples.js"; + +const LOCAL_STORAGE_KEY = 'dash_Scenarios'; + +export default class ScenarioManager { + constructor(editor) { + this.editor = editor; + this.modal = document.getElementById('scenarios-modal'); + + document.getElementById('scenarios-modal-background').addEventListener('click', this._closeModal.bind(this)); + document.getElementById('scenarios-modal-close').addEventListener('click', this._closeModal.bind(this)); + + this.examplesTab = document.getElementById('scenarios-modal-examples-tab'); + this.savedTab = document.getElementById('scenarios-modal-saved-tab'); + this.importTab = document.getElementById('scenarios-modal-import-tab'); + + this.examplesTabButton = document.getElementById('scenarios-modal-examples-tab-button'); + this.savedTabButton = document.getElementById('scenarios-modal-saved-tab-button'); + this.importTabButton = document.getElementById('scenarios-modal-import-tab-button'); + this.examplesTabButton.addEventListener('click', e => this.switchTab(this.examplesTab)); + this.savedTabButton.addEventListener('click', e => this.switchTab(this.savedTab)); + this.importTabButton.addEventListener('click', e => this.switchTab(this.importTab)); + + this.itemsContainer = document.getElementById('scenarios-modal-items'); + + this.sortName = document.getElementById('scenarios-sort-name'); + this.sortName.addEventListener('click', e => this._buildScenarioItems('name')); + this.sortSavedAt = document.getElementById('scenarios-sort-saved-at'); + this.sortSavedAt.addEventListener('click', e => this._buildScenarioItems('savedAt')); + + this.importBox = document.getElementById('scenario-import-box'); + this.importInfo = document.getElementById('scenario-import-info'); + + this.importBox.addEventListener('input', this._importBoxChanged.bind(this)); + + for (let i = 0; i < EXAMPLES.length; i++) + document.getElementById(`example-${i}`).addEventListener('click', e => this._loadScenario(EXAMPLES[i])); + } + + switchTab(tab) { + this.examplesTab.classList.add('is-hidden') + this.savedTab.classList.add('is-hidden') + this.importTab.classList.add('is-hidden') + this.examplesTabButton.classList.remove('is-active'); + this.savedTabButton.classList.remove('is-active'); + this.importTabButton.classList.remove('is-active'); + + let button = this.savedTabButton; + if (tab == this.examplesTab) + button = this.examplesTabButton; + else if (tab == this.importTab) + button = this.importTabButton; + + tab.classList.remove('is-hidden'); + button.classList.add('is-active'); + + if (tab == this.importTab) + this.importBox.focus(); + } + + saveScenario(name, data, force = false) { + const scenarios = this.fetchScenarios(); + let scenario = scenarios[name]; + const now = new Date(); + + if (scenario) { + if (!force) return [false, scenario.savedAt]; + + scenario.data = data; + scenario.savedAt = now; + } else { + scenario = { + name: name, + data: data, + savedAt: now + }; + + scenarios[name] = scenario; + } + + const json = JSON.stringify(scenarios); + window.localStorage.setItem(LOCAL_STORAGE_KEY, json); + + return [true, scenario.savedAt]; + } + + fetchScenarios() { + const scenarios = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY)) || {}; + + for (const k in scenarios) + scenarios[k].savedAt = new Date(scenarios[k].savedAt); + + return scenarios; + } + + showModal(onLoadScenario = null) { + this.onLoadScenario = onLoadScenario; + + this.modal.classList.add('is-active'); + this.switchTab(this.savedTab); + + this._buildScenarioItems(); + this.itemsContainer.scrollTop = 0; + + this.importBox.value = ''; + this.importBox.dispatchEvent(new Event('input')); + } + + _closeModal() { + this.onLoadScenario = null; + this.modal.classList.remove('is-active'); + } + + _buildScenarioItems(sort = 'savedAt') { + this.itemsContainer.innerHTML = ''; + + this.sortName.classList.remove('is-underlined'); + this.sortSavedAt.classList.remove('is-underlined'); + if (sort == 'name') + this.sortName.classList.add('is-underlined'); + else if (sort == 'savedAt') + this.sortSavedAt.classList.add('is-underlined'); + + const scenarios = Object.values(this.fetchScenarios()); + + if (scenarios.length == 0) { + this._showEmptyMessage(); + } else { + scenarios.sort((a, b) => { + if (sort == 'savedAt') { + if (a.savedAt < b.savedAt) return +1; + else if (b.savedAt < a.savedAt) return -1; + } + + const nameA = a.name.toLowerCase(); + const nameB = b.name.toLowerCase(); + + if (nameA < nameB) return -1; + if (nameB < nameA) return +1; + return 0; + }); + + scenarios.forEach(s => this._addScenarioItem(s)); + } + } + + _showEmptyMessage() { + this.itemsContainer.innerHTML = "You don't have any saved scenarios."; + } + + _addScenarioItem(scenario) { + const html = + `
+
+
+
+
+

+ + + + + +

+
+
+
`; + + const template = document.createElement('template'); + template.innerHTML = html; + const item = template.content.firstChild; + + const nameDom = item.getElementsByClassName('scenario-item-name')[0]; + nameDom.textContent = scenario.name; + nameDom.title = scenario.name; + + item.getElementsByClassName('scenario-item-saved-at')[0].textContent = formatDate(scenario.savedAt); + + item.getElementsByClassName('scenario-item-load')[0].addEventListener('click', e => this._loadScenario(scenario)); + + item.getElementsByClassName('scenario-item-delete')[0].addEventListener('click', e => { + if (window.confirm(`Are you sure you want to delete the scenario "${scenario.name}"?`)) { + this._deleteScenario(scenario); + this.itemsContainer.removeChild(item); + + if (this.itemsContainer.children.length == 0) + this._showEmptyMessage(); + } + }); + + this.itemsContainer.appendChild(item); + } + + _loadScenario(scenario) { + this.editor.loadJSON(scenario.data); + this.editor.updateSavedInfo(scenario.name, formatDate(scenario.savedAt)); + + if (this.onLoadScenario) this.onLoadScenario(); + + this._closeModal(); + } + + _deleteScenario(scenario) { + const scenarios = this.fetchScenarios(); + delete scenarios[scenario.name]; + + const json = JSON.stringify(scenarios); + window.localStorage.setItem(LOCAL_STORAGE_KEY, json); + } + + _importBoxChanged() { + this.importBox.classList.remove('is-danger'); + this.importInfo.classList.add('is-hidden'); + + const encoded = this.importBox.value; + + if (encoded != '') { + try { + const json = JSON.parse(atob(this.importBox.value)); + + if (json.s === undefined || json.d === undefined || json.p === undefined || json.p.length % 2 != 0) + throw new Error(); + + this.importInfo.innerHTML = ` +
+ Road Length: ${json.l.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}m +
+   +
+ Static Obstacles: ${json.s.length} +
+   +
+ Dynamic Obstacles: ${json.d.length} +
+
+ + + + Import +
+ `; + + this.importInfo.getElementsByClassName('scenario-import-button')[0].addEventListener('click', e => this._loadScenario({ data: json })); + this.importInfo.classList.remove('is-hidden'); + } catch (e) { + this.importBox.classList.add('is-danger'); + } + } + } +} diff --git a/seminar06-planning/simulator/js/simulator/ShareManager.js b/seminar06-planning/simulator/js/simulator/ShareManager.js new file mode 100644 index 0000000..ddfe4ca --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/ShareManager.js @@ -0,0 +1,49 @@ +export default class ShareManager { + constructor() { + this.modal = document.getElementById('scenario-share-modal'); + this.linkDom = document.getElementById('scenario-share-link'); + this.boxDom = document.getElementById('scenario-share-box'); + this.clipboardButton = document.getElementById('scenario-share-clipboard'); + this.clipboardIcon = document.getElementById('scenario-share-clipboard-icon'); + this.clipboardSuccessIcon = document.getElementById('scenario-share-clipboard-success-icon'); + + document.getElementById('scenario-share-modal-background').addEventListener('click', this._closeModal.bind(this)); + document.getElementById('scenario-share-modal-close').addEventListener('click', this._closeModal.bind(this)); + this.clipboardButton.addEventListener('click', this._copyLinkToClipboard.bind(this)); + + this.linkDom.addEventListener('focus', e => this.linkDom.select()); + this.boxDom.addEventListener('focus', e => this.boxDom.select()); + } + + showModal(scenario) { + this.modal.classList.add('is-active'); + + this.clipboardIcon.classList.remove('is-hidden'); + this.clipboardSuccessIcon.classList.add('is-hidden'); + this.clipboardButton.classList.remove('is-success'); + + const code = btoa(JSON.stringify(scenario)); + + const url = new URL(window.location); + url.search = ''; + url.hash = '/s/' + encodeURIComponent(code); + + this.linkDom.value = url.href; + this.boxDom.value = code; + } + + _closeModal() { + this.modal.classList.remove('is-active'); + } + + _copyLinkToClipboard() { + this.linkDom.focus(); + this.linkDom.select(); + + if (document.execCommand('copy', false, null)) { + this.clipboardIcon.classList.add('is-hidden'); + this.clipboardSuccessIcon.classList.remove('is-hidden'); + this.clipboardButton.classList.add('is-success'); + } + } +} diff --git a/seminar06-planning/simulator/js/simulator/TopDownCameraControls.js b/seminar06-planning/simulator/js/simulator/TopDownCameraControls.js new file mode 100644 index 0000000..255fb54 --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/TopDownCameraControls.js @@ -0,0 +1,66 @@ +const groundPlane = new THREE.Plane(new THREE.Vector3(0, 1, 0)); +let panning = false; + +export default class TopDownCameraControls { + constructor(domElement, camera) { + this.domElement = domElement; + this.camera = camera; + this.enablePanning = false; + this.enabled = true; + + this.minAltitude = Number.NEGATIVE_INFINITY; + this.maxAltitude = Number.POSITIVE_INFINITY; + + this.mouseDown = this.mouseDown.bind(this); + this.mouseMove = this.mouseMove.bind(this); + this.mouseUp = this.mouseUp.bind(this); + this.wheel = this.wheel.bind(this); + + this.domElement.addEventListener('mousedown', this.mouseDown); + this.domElement.addEventListener('mousemove', this.mouseMove); + this.domElement.addEventListener('mouseup', this.mouseUp); + this.domElement.addEventListener('wheel', this.wheel); + } + + reset(prevCamera) { + const lookAt = new THREE.Vector3(0, 0, -1); + lookAt.applyQuaternion(prevCamera.quaternion); + + const ray = new THREE.Ray(prevCamera.position, lookAt); + const intersection = ray.intersectPlane(groundPlane); + + if (intersection) { + this.camera.position.set(intersection.x, 50, intersection.z); + } else { + this.camera.position.y = 50; + } + + this.camera.rotation.set(-Math.PI / 2, 0, 0); + } + + mouseDown(event) { + if (!this.enabled || !this.enablePanning || event.button != 2) return; + panning = true; + } + + mouseMove(event) { + if (panning) { + const distance = 2 * this.camera.position.y * Math.tan((this.camera.fov / 2) * Math.PI / 180) / this.domElement.clientHeight; + this.camera.position.x -= distance * event.movementX; + this.camera.position.z -= distance * event.movementY; + } + } + + mouseUp(event) { + if (event.button != 2) return; + panning = false; + } + + wheel(event) { + if (!this.enabled) return; + + event.preventDefault(); + + this.camera.position.y = Math.max(this.minAltitude, Math.min(this.maxAltitude, this.camera.position.y * Math.pow(0.995, -event.deltaY))); + } +} diff --git a/seminar06-planning/simulator/js/simulator/examples.js b/seminar06-planning/simulator/js/simulator/examples.js new file mode 100644 index 0000000..59b82dc --- /dev/null +++ b/seminar06-planning/simulator/js/simulator/examples.js @@ -0,0 +1,17 @@ +export default [ + { name: "One-car overtake", data: {"p":[-298.12979,357.51057,7.55497,136.89255,255.45446,-186.65063,586.66288,-494.5808],"s":[],"d":[{"p":["150","0.5"],"v":["15","0"],"l":1,"t":0}],"l":1238.129,"c":{"s":"25","sl":"25","lp":1},"v":1} }, + + { name: "Two-car overtake", data: {"p":[-276.4674,303.00865,44.88593,120.86712,305.10729,-435.99728],"s":[],"d":[{"p":["100","0.5"],"v":["5","0"],"l":1,"t":0},{"p":["100","-0.5"],"v":["6","0"],"l":1,"t":0}],"l":990.576,"c":{"s":"20","sl":"20","lp":1},"v":1} }, + + { name: "Rough road", data: {"p":[-102.46078,26.38513,-68.69821,25.79776,-55.94913,19.50427,-25.32284,12.6183,-16.6024,10.7739,-6.708,11.78013,31.36054,12.11554,47.04057,14.7988,56.85048,23.26776,56.84979,35.25828,46.95511,43.89463,25.48979,43.55924,8.13326,52.2799,-15.34437,64.10242],"s":[{"p":[-54.96429,21.2553],"r":-0.27612,"w":2.7671,"h":1.67703},{"p":[-36.09254,12.36963],"r":0.14726,"w":3.43791,"h":1.84475},{"p":[-13.41625,14.2537],"r":0.11658,"w":4.69568,"h":1.42549},{"p":[44.00931,18.38166],"r":0.25771,"w":4.94713,"h":4.27642},{"p":[62.74669,29.41331],"r":0,"w":4.10855,"h":5.86952},{"p":[46.71119,38.74469],"r":1.14742,"w":4.52775,"h":6.70794},{"p":[-14.26275,63.60006],"r":2.67526,"w":10.14584,"h":12.24173},{"p":[19.7351,9.40621],"r":0.65041,"w":1.97177,"h":1.07553},{"p":[28.99679,9.71727],"r":0.20862,"w":1.97175,"h":1.03072},{"p":[24.15205,9.93872],"r":-0.31907,"w":1.25476,"h":0.9859}],"d":[],"l":259.088,"c":{"s":"10","sl":"10","lp":1},"v":1} }, + + { name: "Dodging a speeder", data: {"p":[-226.14066,275.34941,21.32194,-6.2654,266.99958,-174.39559,466.42449,-427.95124],"s":[],"d":[{"p":["-250","-0.5"],"v":["40","0"],"l":1,"t":0}],"l":996.572,"c":{"s":"25","sl":"25","lp":-1},"v":1} }, + + { name: "Lane blockage with oncoming traffic", data: {"p":[-84.96318,-14.94973,374.91044,-14.7168],"s":[{"p":[-34.91024,-12.51359],"r":0,"w":2.76711,"h":2.68324}],"d":[{"p":["40","-0.5"],"v":["-10","0"],"l":1,"t":0},{"p":["150","-0.5"],"v":["-10","0"],"l":1,"t":0}],"l":459.874,"c":{"s":"20","sl":"20","lp":1},"v":1} }, + + { name: "Merging into slower traffic", data: {"p":[-629.09464,16.31589,281.97162,14.81565],"s":[{"p":[-440.00152,11.62602],"r":0,"w":3.1379,"h":3.13801},{"p":[-259.74036,11.98013],"r":0,"w":2.51556,"h":4.4441},{"p":[93.71013,11.27032],"r":0,"w":4.07947,"h":7.84501},{"p":[-94.72208,11.28172],"r":0,"w":3.76609,"h":7.53122}],"d":[{"p":["320","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["280","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["240","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["200","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["160","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["120","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["80","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["40","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["0","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-40","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-80","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-120","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-160","0.5"],"v":["12","0"],"l":1,"t":0},{"p":["-200","0.5"],"v":["12","0"],"l":1,"t":0}],"l":911.067,"c":{"s":"25","sl":"25","lp":-1},"v":1} }, + + { name: "Negotiating crosswalks", data: {"p":[-144.73574,55.4495,-104.89441,31.62755,-33.87479,61.57811,54.60631,46.34858,152.3728,-41.4335,219.90258,-113.95225],"s":[],"d":[{"p":["51","-2"],"v":["0","1.5"],"l":1,"t":2},{"p":["52","+2"],"v":["0","-1.6"],"l":1,"t":2},{"p":["53","-2"],"v":["0","1.5"],"l":1,"t":2},{"p":["54","+2"],"v":["0","-1.4"],"l":1,"t":2},{"p":["55","-2"],"v":["0","1.5"],"l":1,"t":2},{"p":["50","+3"],"v":["0","-1.5"],"l":1,"t":2},{"p":["51","-3"],"v":["0","1.7"],"l":1,"t":2},{"p":["52","+3"],"v":["0","-1.5"],"l":1,"t":2},{"p":["53","-3"],"v":["0","1.3"],"l":1,"t":2},{"p":["50","-4"],"v":["0","1.6"],"l":1,"t":2},{"p":["51","-4"],"v":["0","1.2"],"l":1,"t":2},{"p":["52","-5"],"v":["0","1.5"],"l":1,"t":2},{"p":["53","-5"],"v":["0","1.4"],"l":1,"t":2},{"p":["50","4.5"],"v":["0","-1.6"],"l":1,"t":2},{"p":["51","5"],"v":["0","-1.4"],"l":1,"t":2},{"p":["52","4"],"v":["0","-1.5"],"l":1,"t":2},{"p":["53","4.5"],"v":["0","-1.4"],"l":1,"t":2},{"p":["49","5.5"],"v":["0","-1.2"],"l":1,"t":2},{"p":["50","6"],"v":["0","-1.6"],"l":1,"t":2},{"p":["51","5.75"],"v":["0","-1.5"],"l":1,"t":2},{"p":["52","5"],"v":["0","-1.5"],"l":1,"t":2},{"p":["49","-6"],"v":["0","1.5"],"l":1,"t":2},{"p":["50","-5.5"],"v":["0","1.7"],"l":1,"t":2},{"p":["51","-5"],"v":["0","0.9"],"l":1,"t":2},{"p":["52","-5.75"],"v":["0","1.2"],"l":1,"t":2},{"p":["150","-75"],"v":["0","9"],"l":0,"t":1},{"p":["152","-80"],"v":["0","10"],"l":0,"t":1},{"p":["154","-85"],"v":["0","9.5"],"l":0,"t":1},{"p":["150","75"],"v":["0","-10"],"l":0,"t":1},{"p":["152","80"],"v":["0","-9"],"l":0,"t":1},{"p":["154","85"],"v":["0","-9.5"],"l":0,"t":1}],"l":447.535,"c":{"s":"5","sl":"20","lp":1},"v":1} }, + + { name: "Chasing the peloton", data: {"p":[-708.1093,561.67222,-657.73649,701.46772,-531.30212,736.41613,-332.91517,708.663,-201.34176,611.01215,-80.04523,477.38232,22.75082,341.69385,147.66174,176.73622,253.02371,-15.01574,448.31828,-335.71836,495.60932,-544.40048],"s":[],"d":[{"p":["50","0.4"],"v":["15.5","-0.1"],"l":1,"t":1},{"p":["52","0.6"],"v":["15.7","-0.15"],"l":1,"t":1},{"p":["54","0.3"],"v":["15.3","-0.13"],"l":1,"t":1},{"p":["56","0.7"],"v":["15.2","-0.1"],"l":1,"t":1},{"p":["58","0.3"],"v":["15.8","-0.12"],"l":1,"t":1},{"p":["60","0.7"],"v":["15.6","-0.17"],"l":1,"t":1},{"p":["62","0.1"],"v":["15.4","-0.14"],"l":1,"t":1},{"p":["64","-0.1"],"v":["15.5","0.13"],"l":1,"t":1},{"p":["66","0.3"],"v":["15.3","-0.13"],"l":1,"t":1},{"p":["68","0"],"v":["15.6","0.15"],"l":1,"t":1},{"p":["70","-0.3"],"v":["15.8","0.17"],"l":1,"t":1},{"p":["72","-0.7"],"v":["15.7","0.12"],"l":1,"t":1},{"p":["74","-0.5"],"v":["15.1","0.15"],"l":1,"t":1},{"p":["76","-0.7"],"v":["15.9","0.11"],"l":1,"t":1},{"p":["78","-0.3"],"v":["15.5","0.16"],"l":1,"t":1},{"p":["80","-0.5"],"v":["15.6","0.13"],"l":1,"t":1}],"l":2018.213,"c":{"s":"15","sl":"25","lp":1},"v":1} } +]; diff --git a/seminar06-planning/simulator/models/suv.js b/seminar06-planning/simulator/models/suv.js new file mode 100644 index 0000000..3953249 --- /dev/null +++ b/seminar06-planning/simulator/models/suv.js @@ -0,0 +1 @@ +export default 'data:text/plain;base64,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gMHVGFFBFEWOQYA5f8EkF0tBIAKSQcyBfcHBFEdBUamNQZkcbcG+cx1BN5+LQTp2ZsE67g1BVbeBQYkNYcF82vtADk94QXzeX8GTu/tA31pZQXzeX8GTu/tAp89OQZB7YcF4ngBBARo4QTp2ZsE67g1BywU0QZkcbcG+cx1BSG4oQcyBfcHBFEdBJaVoQXeyX8EvlPlAJaVoQdEBW8Fw+epAYEE2AAAACpPJPgAAAAAAAAAAAAAAAA2TyTINk8k+AAAAAA2Tyb4Nk8kyAAAAAKaZnUGV4cZAIEGipwEAQB4AAAEAAgAHAAAAAwABAAcABAACAAUABwAEAAAAAgAHAAYABwAIAAcABgAJAAcABwAKAAgACwAHAAoABgAIAAcADAAKAAsABwAMAA0ACgAHAA4ADQAMAAcADgAPAA0ABwAQAA8ADgAHABAAEQAPAAcAEgARABAABwASABMAEQAHABQAEwASAAcAFAAVABMABwAWABcAGAAHABYAGQAXAAcAGgAXABsABwAaABgAFwAHABYABQAZAAcAFgAEAAUABwAcAAEAAwAHABwAHQABAAcAHgAHAAkABwAeAB8ABwAHACAACAAHAAcAIAAhAAgABwAhAAsACAAHACEAIgALAAcACwAjAAwABwALACIAIwAHAAwAJAAOAAcADAAjACQABwAOACUAEAAHAA4AJAAlAAcAEAAmABIABwAQACUAJgAHABIAJwAUAAcAEgAmACcABwAfACAABwAHAB8AKAAgAAcAIAApACEABwAgACoAKQAHACEAKwAiAAcAIQApACsABwAiACwAIwAHACIAKwAsAAcAIwAtACQABwAjACwALQAHACQALgAlAAcAJAAtAC4ABwAlAC8AJgAHACUALgAvAAcAJgAwACcABwAmAC8AMAAHACgAKgAgAAcAKAAxACoABwAyAAAAMwAHADIAAwAAAAcAKgAzACkABwAqADIAMwAHADMABAA0AAcAMwAAAAQABwApADQAKwAHACkAMwA0AAcAKwA1ACwABwArADQANQAHABYANAAEAAcAFgA1ADQABwAsADYALQAHACwANQA2AAcAGAA1ABYABwAYADYANQAHADYAGgA3AAcANgAYABoABwAtADcALgAHAC0ANgA3AAcALgA4AC8ABwAuADcAOAAHADkAGgAbAAcAOQA6ABoABwAvADsAMAAHAC8AOAA7AAcAPAA6ADkABwA8AD0AOgAHADEAMgAqAAcAMQA+ADIABwADAD4AHAAHAAMAMgA+AAcAPwABAB0ABwA/AEAAAQAHAEEAGwAXAAcAQQBCABsABwBDAEQARQAHAEMARgBEAAcARwAXABkABwBHAEEAFwAHAEgAGQAFAAcASABHABkABwBJADwAOQAHAEkASgA8AAcAQgA5ABsABwBCAEkAOQAHAEsABQACAAcASwBIAAUABwBAAAIAAQAHAEAASwACAAcATAAfAB4ABwBMAE0AHwAHAE0AKAAfAAcATQBOACgABwBOADEAKAAHAE4ATwAxAAcATwA+ADEABwBPAFAAPgAHAFAAHAA+AAcAUABRABwABwBRAB0AHAAHAFEAUgAdAAcAUgA/AB0ABwBSAFMAPwAHAFQATQBMAAcAVABVAE0ABwBVAE4ATQAHAFUAVgBOAAcAVgBPAE4ABwBWAFcATwAHAFcAUABPAAcAVwBYAFAABwBYAFEAUAAHAFgAWQBRAAcAWQBSAFEABwBZAFoAUgAHAFoAUwBSAAcAWgBbAFMABwBcAFUAVAAHAFwAXQBVAAcAXQBWAFUABwBdAF4AVgAHAF4AVwBWAAcAXgBfAFcABwBfAFgAVwAHAF8AYABYAAcAYABZAFgABwBgAGEAWQAHAGEAWgBZAAcAYQBiAFoABwBiAFsAWgAHAGIAYwBbAAcAZABdAFwABwBkAGUAXQAHAGUAXgBdAAcAZQBmAF4ABwBmAF8AXgAHAGYAZwBfAAcAZwBgAF8ABwBnAGgAYAAHAGgAYQBgAAcAaABpAGEABwBpAGIAYQAHAGkAagBiAAcAagBjAGIABwBqAGsAYwAHAGwAYwBrAAcAbABtAGMABwBtAFsAYwAHAG0AbgBbAAcAbgBTAFsABwBuAG8AUwAHAG8APwBTAAcAbwBwAD8ABwBwAEAAPwAHAHAAcQBAAAcAcQBLAEAABwBxAHIASwAHAHIASABLAAcAcgBzAEgABwBzAEcASAAHAHMAdABHAAcAdABBAEcABwB0AHUAQQAHAHUAQgBBAAcAdQB2AEIABwB2AEkAQgAHAHYAdwBJAAcAdwBKAEkABwB3AHgASgAHAHkAbgBtAAcAeQB6AG4ABwB7AG0AbAAHAHsAeQBtAAcAegBvAG4ABwB6AHwAbwAHAH0AcwByAAcAfQB+AHMABwB/AHIAcQAHAH8AfQByAAcAgAB4AHcABwCAAIEAeAAHAIIAdwB2AAcAggCAAHcABwCDAHYAdQAHAIMAggB2AAcAhAB1AHQABwCEAIMAdQAHAH4AdABzAAcAfgCEAHQABwCFAHEAcAAHAIUAfwBxAAcAfABwAG8ABwB8AIUAcAAHAIYAeQB7AAcAhgCHAHkABwCHAHoAeQAHAIcAiAB6AAcAiQCHAIYABwCJAIoAhwAHAIoAiACHAAcAigCLAIgABwCMAIYAewAHAIwAjQCGAAcAjQCJAIYABwCNAI4AiQAHAI8AjQCMAAcAjwCQAI0ABwCQAI4AjQAHAJAAkQCOAAcAkgCQAI8ABwCSAJMAkAAHAJMAkQCQAAcAkwCUAJEABwCVAJQAkwAHAJUAlgCUAAcAlwCTAJIABwCXAJUAkwAHAJgAkgCPAAcAmACXAJIABwCZAI8AjAAHAJkAmACPAAcAmgCMAHsABwCaAJkAjAAHAJsAnACdAAcAmwCeAJwABwCdAJ8AoAAHAJ0AnACfAAcAoQCiAKMABwChAKQAogAHAKMApQCmAAcAowCiAKUABwClAKcApgAHAKUAqACnAAcAqACpAKcABwCoAKoAqQAHAKoAqwCpAAcAqgCsAKsABwCsAK0AqwAHAKwArgCtAAcArgAUAK0ABwCuABUAFAAHAK8AsACxAAcArwCyALAABwCzAK8AsQAHALMAtACvAAcAoACwALIABwCgAJ8AsAAHAJsAtQCeAAcAmwC2ALUABwChALcApAAHAKEAuAC3AAcAowC5AKEABwCjALoAuQAHAKYAugCjAAcApgC7ALoABwC8AKYApwAHALwAuwCmAAcAvQCnAKkABwC9ALwApwAHAL4AqQCrAAcAvgC9AKkABwC/AKsArQAHAL8AvgCrAAcAJwCtABQABwAnAL8ArQAHALkAuAChAAcAuQDAALgABwDBALkAugAHAMEAwgC5AAcAwwC6ALsABwDDAMEAugAHAMQAuwC8AAcAxADDALsABwDFALwAvQAHAMUAxAC8AAcAxgC9AL4ABwDGAMUAvQAHAMcAvgC/AAcAxwDGAL4ABwAwAL8AJwAHADAAxwC/AAcAwgDAALkABwDCAMgAwAAHAJwAyQDKAAcAnACeAMkABwDKAMIAwQAHAMoAyQDCAAcAnwDKAMsABwCfAJwAygAHAMsAwQDDAAcAywDKAMEABwDMAMMAxAAHAMwAywDDAAcAywCwAJ8ABwDLAMwAsAAHAM0AxADFAAcAzQDMAMQABwDMALEAsAAHAMwAzQCxAAcAswDNAM4ABwCzALEAzQAHAM4AxQDGAAcAzgDNAMUABwDPAMYAxwAHAM8AzgDGAAcAswDPANAABwCzAM4AzwAHADsAxwAwAAcAOwDPAMcABwDQADwA0QAHANAAPQA8AAcAyQDIAMIABwDJANIAyAAHANIAngC1AAcA0gDJAJ4ABwCbANMAtgAHAJsA1ADTAAcAtADVAK8ABwC0ANYA1QAHAEMA1wDYAAcAQwDZANcABwCvANoAsgAHAK8A1QDaAAcAsgDbAKAABwCyANoA2wAHADwA3ADRAAcAPABKANwABwDRANYAtAAHANEA3ADWAAcAoADdAJ0ABwCgANsA3QAHAJ0A1ACbAAcAnQDdANQABwC4AN4AtwAHALgA3wDeAAcAwADfALgABwDAAOAA3wAHAMgA4ADAAAcAyADhAOAABwDSAOEAyAAHANIA4gDhAAcAtQDiANIABwC1AOMA4gAHALYA4wC1AAcAtgDkAOMABwDTAOQAtgAHANMA5QDkAAcA3wDmAN4ABwDfAOcA5gAHAOAA5wDfAAcA4ADoAOcABwDhAOgA4AAHAOEA6QDoAAcA4gDpAOEABwDiAOoA6QAHAOMA6gDiAAcA4wDrAOoABwDkAOsA4wAHAOQA7ADrAAcA5QDsAOQABwDlAO0A7AAHAOcA7gDmAAcA5wDvAO4ABwDoAO8A5wAHAOgA8ADvAAcA6QDwAOgABwDpAPEA8AAHAOoA8QDpAAcA6gDyAPEABwDrAPIA6gAHAOsA8wDyAAcA7ADzAOsABwDsAPQA8wAHAO0A9ADsAAcA7QD1APQABwDvAPYA7gAHAO8A9wD2AAcA8AD3AO8ABwDwAPgA9wAHAPEA+ADwAAcA8QD5APgABwDyAPkA8QAHAPIA+gD5AAcA8wD6APIABwDzAPsA+gAHAPQA+wDzAAcA9AD8APsABwD1APwA9AAHAPUA/QD8AAcA9QD+AP0ABwD1AP8A/gAHAO0A/wD1AAcA7QAAAf8ABwDlAAAB7QAHAOUAAQEAAQcA0wABAeUABwDTAAIBAQEHANQAAgHTAAcA1AADAQIBBwDdAAMB1AAHAN0ABAEDAQcA2wAEAd0ABwDbAAUBBAEHANoABQHbAAcA2gAGAQUBBwDVAAYB2gAHANUABwEGAQcA1gAHAdUABwDWAAgBBwEHANwACAHWAAcA3AAJAQgBBwBKAAkB3AAHAEoAeAAJAQcAAAEKAf8ABwAAAQsBCgEHAP8ADAH+AAcA/wAKAQwBBwABAQsBAAEHAAEBDQELAQcABQEOAQQBBwAFAQ8BDgEHAAQBEAEDAQcABAEOARABBwB4ABEBCQEHAHgAgQARAQcACQESAQgBBwAJAREBEgEHAAgBEwEHAQcACAESARMBBwAHARQBBgEHAAcBEwEUAQcABgEPAQUBBwAGARQBDwEHAAMBFQECAQcAAwEQARUBBwACAQ0BAQEHAAIBFQENAQcACgEWAQwBBwAKARcBFgEHAAsBFwEKAQcACwEYARcBBwAXAYkAFgEHABcBigCJAAcAGAGKABcBBwAYAYsAigAHABYBGQEMAQcAFgEaARkBBwCJABoBFgEHAIkAjgAaAQcAGgEbARkBBwAaARwBGwEHAI4AHAEaAQcAjgCRABwBBwAcAR0BGwEHABwBHgEdAQcAkQAeARwBBwCRAJQAHgEHAJQAHwEeAQcAlACWAB8BBwAeASABHQEHAB4BHwEgAQcAHQEhARsBBwAdASABIQEHABsBIgEZAQcAGwEhASIBBwAZASMBDAEHABkBIgEjAQcAJAElASYBBwAkAScBJQEHACgBJgEpAQcAKAEkASYBBwAqASkBKwEHACoBKAEpAQcALAErAS0BBwAsASoBKwEHAC4BLQEvAQcALgEsAS0BBwAwAS8BMQEHADABLgEvAQcAMgExATMBBwAyATABMQEHADQBMwE1AQcANAEyATMBBwA2ATUBNwEHADYBNAE1AQcAOAE5AToBBwA4ATsBOQEHADsBPAE5AQcAOwE9ATwBBwA9ATcBPAEHAD0BNgE3AQcAPgEnASQBBwA+AT8BJwEHAEABJAEoAQcAQAE+ASQBBwBBASgBKgEHAEEBQAEoAQcAQgEqASwBBwBCAUEBKgEHAEMBLAEuAQcAQwFCASwBBwBEAS4BMAEHAEQBQwEuAQcARQEwATIBBwBFAUQBMAEHAEYBMgE0AQcARgFFATIBBwBHATsBOAEHAEcBSAE7AQcASQE0ATYBBwBJAUYBNAEHAEoBNgE9AQcASgFJATYBBwBIAT0BOwEHAEgBSgE9AQcAMwFLATUBBwAzAUwBSwEHADUBTQE3AQcANQFLAU0BBwArAU4BLQEHACsBTwFOAQcAKQFPASsBBwApAVABTwEHACYBUAEpAQcAJgFRAVABBwAlAVEBJgEHACUBUgFRAQcAUwFUAVUBBwBTAVYBVAEHAFcBVgFYAQcAVwFUAVYBBwBZAVYBUwEHAFkBWgFWAQcAWAFaAVsBBwBYAVYBWgEHAFwBWgFZAQcAXAFdAVoBBwBbAV0BXgEHAFsBWgFdAQcAXwFdAVwBBwBfAWABXQEHAF4BYAFhAQcAXgFdAWABBwBiAWMBZAEHAGIBZQFjAQcAZgFlAWcBBwBmAWMBZQEHAGgBZQFiAQcAaAFpAWUBBwBnAWkBagEHAGcBZQFpAQcAawFsAW0BBwBrAW4BbAEHAG8BbgFwAQcAbwFsAW4BBwBtAXEBcgEHAG0BbAFxAQcAcwFsAW8BBwBzAXEBbAEHAHIBdAF1AQcAcgFxAXQBBwB2AXEBcwEHAHYBdAFxAQcAdwFfAVwBBwB3AXgBXwEHAHkBXAFZAQcAeQF3AVwBBwB6AVMBVQEHAHoBewFTAQcAewFZAVMBBwB7AXkBWQEHAHwBeAF3AQcAfAF9AXgBBwB+AXcBeQEHAH4BfAF3AQcAfwF5AXsBBwB/AX4BeQEHAIABewF6AQcAgAF/AXsBBwCBAX0BfAEHAIEBggF9AQcAgwF8AX4BBwCDAYEBfAEHAIQBfgF/AQcAhAGDAX4BBwCFAX8BgAEHAIUBhAF/AQcAhgGCAYEBBwCGAYcBggEHAIgBgQGDAQcAiAGGAYEBBwCJAYMBhAEHAIkBiAGDAQcAigGEAYUBBwCKAYkBhAEHAIsBhwGGAQcAiwGMAYcBBwCNAYYBiAEHAI0BiwGGAQcAjgGIAYkBBwCOAY0BiAEHAI8BiQGKAQcAjwGOAYkBBwCQAYwBiwEHAJABkQGMAQcAkgGLAY0BBwCSAZABiwEHAJMBjQGOAQcAkwGSAY0BBwCUAY4BjwEHAJQBkwGOAQcAlQGWAZcBBwCVAZgBlgEHAJcBmQGaAQcAlwGWAZkBBwCaAZsBlwEHAJoBnAGbAQcAmQGcAZoBBwCZAZ0BnAEHAJcBngGVAQcAlwGbAZ4BBwCVAZ8BmAEHAJUBngGfAQcAmAGgAaEBBwCYAZ8BoAEHAKEBogGjAQcAoQGgAaIBBwCkAaUBpgEHAKQBpwGlAQcApgGoAakBBwCmAaUBqAEHAKkBqgGrAQcAqQGoAaoBBwCrAawBrQEHAKsBqgGsAQcArQGuAa8BBwCtAawBrgEHAJEBsAGMAQcAkQGxAbABBwCMAbIBhwEHAIwBsAGyAQcAhwGzAYIBBwCHAbIBswEHAIIBtAF9AQcAggGzAbQBBwB9AbUBeAEHAH0BtAG1AQcAeAG2AV8BBwB4AbUBtgEHAF8BtwG4AQcAXwG2AbcBBwC4AbkBugEHALgBtwG5AQcAugG7AWQBBwC6AbkBuwEHAGQBvAFiAQcAZAG7AbwBBwBiAb0BaAEHAGIBvAG9AQcAaAG+Ab8BBwBoAb0BvgEHAL8BwAHBAQcAvwG+AcABBwDBAcIBwwEHAMEBwAHCAQcAlgHEAZkBBwCWAcUBxAEHAMUBsQHEAQcAxQGwAbEBBwCYAcUBlgEHAJgBxgHFAQcAxgGwAcUBBwDGAbIBsAEHAKEBxgGYAQcAoQHHAcYBBwDHAbIBxgEHAMcBswGyAQcAowHHAaEBBwCjAcgBxwEHAMgBswHHAQcAyAG0AbMBBwDJAbQByAEHAMkBtQG0AQcAygG1AckBBwDKAbYBtQEHAMsBtgHKAQcAywG3AbYBBwDMAbcBywEHAMwBuQG3AQcAzQG5AcwBBwDNAbsBuQEHAKYBzQGkAQcApgHOAc0BBwDOAbsBzQEHAM4BvAG7AQcAqQHOAaYBBwCpAc8BzgEHAM8BvAHOAQcAzwG9AbwBBwCrAc8BqQEHAKsB0AHPAQcA0AG9Ac8BBwDQAb4BvQEHAK0B0AGrAQcArQHRAdABBwDRAb4B0AEHANEBwAG+AQcArwHRAa0BBwCvAdIB0QEHANIBwAHRAQcA0gHCAcABBwDTAdQB1QEHANMB1gHUAQcA1wHWAdMBBwDXAdgB1gEHAKUB1wGoAQcApQHZAdcBBwDZAdgB1wEHANkB2gHYAQcApwHZAaUBBwCnAdsB2QEHANsB2gHZAQcA2wHcAdoBBwDdAd4B3wEHAN0B4AHeAQcA4QHgAd0BBwDhAeIB4AEHAOMB4gHhAQcA4wHkAeIBBwDlAeQB4wEHAOUB5gHkAQcA5wHmAeUBBwDnAegB5gEHAOkB6AHnAQcA6QHqAegBBwDVAesB7AEHANUB1AHrAQcA0wHtAe4BBwDTAdUB7QEHAO8BqgHwAQcA7wGsAaoBBwDXAe4B8QEHANcB0wHuAQcA8gHXAfEBBwDyAagB1wEHAPABqAHyAQcA8AGqAagBBwDsAfMB9AEHAOwBrgHzAQcA1QH0Ae0BBwDVAewB9AEHAPMBrAHvAQcA8wGuAawBBwDuAfUB9gEHAO4B7QH1AQcA9wHwAfgBBwD3Ae8B8AEHAPEB9gH5AQcA8QHuAfYBBwD6AfEB+QEHAPoB8gHxAQcA+AHyAfoBBwD4AfAB8gEHAPQB+wH8AQcA9AHzAfsBBwDtAfwB9QEHAO0B9AH8AQcA+wHvAfcBBwD7AfMB7wEHAEsB/QFNAQcASwH+Af0BBwBMAf4BSwEHAEwB/wH+AQcATwEAAk4BBwBPAQECAAIHAAECYQEAAgcAAQJeAWEBBwBQAQECTwEHAFABAgIBAgcAAgJeAQECBwACAlsBXgEHAFEBAgJQAQcAUQEDAgICBwADAlsBAgIHAAMCWAFbAQcAUgEDAlEBBwBSAQQCAwIHAAQCWAEDAgcABAJXAVgBBwAFAk0BBgIHAAUCNwFNAQcABwI3AQUCBwAHAjwBNwEHAAgCPAEHAgcACAI5ATwBBwAJAgoCCwIHAAkCOgEKAgcACgI5AQgCBwAKAjoBOQEHAAwCCwINAgcADAIJAgsCBwAOAg0CDwIHAA4CDAINAgcAEAIPAhECBwAQAg4CDwIHAP0BEQISAgcA/QEQAhECBwAGAv0BEgIHAAYCTQH9AQcAEwIGAhQCBwATAgUCBgIHABUCBQITAgcAFQIHAgUCBwAWAgcCFQIHABYCCAIHAgcACwIXAhgCBwALAgoCFwIHABcCCAIWAgcAFwIKAggCBwANAhgCGQIHAA0CCwIYAgcADwIZAhoCBwAPAg0CGQIHABECGgIbAgcAEQIPAhoCBwASAhsCHAIHABICEQIbAgcAFAISAhwCBwAUAgYCEgIHAB0CMwEeAgcAHQJMATMBBwAeAjEBHwIHAB4CMwExAQcAIAIxAS8BBwAgAh8CMQEHACECLQFOAQcAIQIiAi0BBwAiAi8BLQEHACICIAIvAQcAIwJgAV8BBwAjAiQCYAEHALgBIwJfAQcAuAElAiMCBwAkAmEBYAEHACQCJgJhAQcAugElArgBBwC6AScCJQIHAGQBKAIpAgcAZAFjASgCBwC6ASkCJwIHALoBZAEpAgcAYwEqAigCBwBjAWYBKgIHAP8BHQIrAgcA/wFMAR0CBwAsAk4BAAIHACwCIQJOAQcAJgIAAmEBBwAmAiwCAAIHAMkBLQLKAQcAyQEuAi0CBwAuAi8CLQIHAC4CMAIvAgcAyAEuAskBBwDIATECLgIHADECMAIuAgcAMQIyAjACBwCjATECyAEHAKMBMwIxAgcAMwIyAjECBwAzAjQCMgIHAKIBMwKjAQcAogE1AjMCBwA1AjQCMwIHADUCNgI0AgcA3gE3At8BBwDeATgCNwIHADgCOQI3AgcAOAI6AjkCBwDKATsCywEHAMoBLQI7AgcALQI8AjsCBwAtAi8CPAIHAMsBPQLMAQcAywE7Aj0CBwA7Aj4CPQIHADsCPAI+AgcAzAE/As0BBwDMAT0CPwIHAD0CQAI/AgcAPQI+AkACBwDNAUECpAEHAM0BPwJBAgcAPwJCAkECBwA/AkACQgIHAKQBQwKnAQcApAFBAkMCBwBBAkQCQwIHAEECQgJEAgcApwFFAtsBBwCnAUMCRQIHAEMCRgJFAgcAQwJEAkYCBwDbAUcC3AEHANsBRQJHAgcARQJIAkcCBwBFAkYCSAIHAJABSQKRAQcAkAFKAkkCBwCSAUoCkAEHAJIBSwJKAgcASwJMAkoCBwBLAk0CTAIHAJMBSwKSAQcAkwFOAksCBwBOAk0CSwIHAE4CTwJNAgcAlAFOApMBBwCUAVACTgIHAFACTwJOAgcAUAJRAk8CBwCRAVICsQEHAJEBSQJSAgcAsQFTAsQBBwCxAVICUwIHAMQBVAKZAQcAxAFTAlQCBwCZAVUCnQEHAJkBVAJVAgcA6QFWAuoBBwDpAVcCVgIHAFgCSgJMAgcAWAJZAkoCBwBZAkkCSgIHAFkCWgJJAgcAWgJSAkkCBwBaAlsCUgIHAFsCUwJSAgcAWwJcAlMCBwBcAlQCUwIHAFwCXQJUAgcAXQJVAlQCBwBdAl4CVQIHAF8CVgJXAgcAXwJgAlYCBwBhAlkCWAIHAGECYgJZAgcAYgJaAlkCBwBiAmMCWgIHAGMCWwJaAgcAYwJkAlsCBwBkAlwCWwIHAGQCZQJcAgcAZQJdAlwCBwBlAmYCXQIHAGYCXgJdAgcAZgJnAl4CBwBoAmACXwIHAGgCaQJgAgcAagJiAmECBwBqAmsCYgIHAGsCYwJiAgcAawJsAmMCBwBsAmQCYwIHAGwCbQJkAgcAbQJlAmQCBwBtAm4CZQIHAG4CZgJlAgcAbgJvAmYCBwBvAmcCZgIHAG8CcAJnAgcAcQJpAmgCBwBxAnICaQIHAHMCawJqAgcAcwJ0AmsCBwB0AmwCawIHAHQCdQJsAgcAdQJtAmwCBwB1AnYCbQIHAHYCbgJtAgcAdgJ3Am4CBwB3Am8CbgIHAHcCeAJvAgcAeAJwAm8CBwB4AnkCcAIHAHoCcgJxAgcAegJ7AnICBwB8AnQCcwIHAHwCfQJ0AgcAfQJ1AnQCBwB9An4CdQIHAH4CdgJ1AgcAfgJ/AnYCBwB/AncCdgIHAH8CgAJ3AgcAgAJ4AncCBwCAAoECeAIHAIECeQJ4AgcAgQKCAnkCBwCDAnsCegIHAIMChAJ7AgcAhQKGAocCBwCFAogChgIHAIkCigKLAgcAiQKMAooCBwCNAosCjgIHAI0CiQKLAgcAjwKOApACBwCPAo0CjgIHAJECkAKSAgcAkQKPApACBwCTApIClAIHAJMCkQKSAgcAlQJ8AnMCBwCVApYCfAIHAJcCcwJqAgcAlwKVAnMCBwCYAmoCYQIHAJgClwJqAgcAmQJhAlgCBwCZApgCYQIHAJoCWAJMAgcAmgKZAlgCBwCbAkwCTQIHAJsCmgJMAgcAnAKdAp4CBwCcAp8CnQIHAJ8CoAKdAgcAnwKUAqACBwChAp8CnAIHAKECogKfAgcAogKUAp8CBwCiApMClAIHAKMCpAKlAgcAowKmAqQCBwCmAqcCpAIHAKYCqAKnAgcAqAKpAqcCBwCoAqoCqQIHAKoCqwKpAgcAqgKsAqsCBwCsAq0CqwIHAKwCrgKtAgcArgKvAq0CBwCuArACrwIHALACsQKvAgcAsAKyArECBwCzArQCtQIHALMCtgK0AgcAtwK4ArkCBwC3AroCuAIHALkCuwK8AgcAuQK4ArsCBwC8Ar0CvgIHALwCuwK9AgcAvgK/AsACBwC+Ar0CvwIHAMACwQLCAgcAwAK/AsECBwDCAsMCxAIHAMICwQLDAgcAxALFAsYCBwDEAsMCxQIHAMYCxwLIAgcAxgLFAscCBwDIAskCygIHAMgCxwLJAgcAywLMAs0CBwDLAs4CzAIHAM8CzgLLAgcAzwLQAs4CBwDKAtACzwIHAMoCyQLQAgcAugLRArgCBwC6AtIC0QIHALgC0wK7AgcAuALRAtMCBwC7AtQCvQIHALsC0wLUAgcAvQLVAr8CBwC9AtQC1QIHAL8C1gLBAgcAvwLVAtYCBwDBAtcCwwIHAMEC1gLXAgcAwwLYAsUCBwDDAtcC2AIHAMUC2QLHAgcAxQLYAtkCBwDOAtoCzAIHAM4C2wLaAgcAxwLcAskCBwDHAtkC3AIHAMkC3QLQAgcAyQLcAt0CBwDQAtsCzgIHANAC3QLbAgcA3gLGAsgCBwDeAt8CxgIHAOACyALKAgcA4ALeAsgCBwDhAr4CwAIHAOEC4gK+AgcA4gK8Ar4CBwDiAuMCvAIHAOMCuQK8AgcA4wLkArkCBwDkArcCuQIHAOQC5QK3AgcA5gLnAugCBwDmAukC5wIHAOkC6gLrAgcA6QLmAuoCBwDpAuwC5wIHAOkC7QLsAgcA7QLrAu4CBwDtAukC6wIHAO0C7wLsAgcA7QLwAu8CBwDwAu4C8QIHAPAC7QLuAgcA8ALyAu8CBwDwAvMC8gIHAPMC8QL0AgcA8wLwAvECBwD1AvYC9wIHAPUC+AL2AgcA+AL5AvoCBwD4AvUC+QIHAPgC+wL2AgcA+AL8AvsCBwD8AvoC/QIHAPwC+AL6AgcA/gL/AgADBwD+AgED/wIHAAEDAgMDAwcAAQP+AgIDBwAEAwADBQMHAAQD/gIAAwcA/gIGAwIDBwD+AgQDBgMHAPwCBQP7AgcA/AIEAwUDBwAEA/0CBgMHAAQD/AL9AgcA8gIHA+8CBwDyAggDBwMHAO8CCQPsAgcA7wIHAwkDBwDnAgoD6AIHAOcCCwMKAwcA7AILA+cCBwDsAgkDCwMHAAgDDAMHAwcACAMNAwwDBwAHAw4DCQMHAAcDDAMOAwcACQMPAwsDBwAJAw4DDwMHAAsDEAMKAwcACwMPAxADBwANAxEDDAMHAA0DEgMRAwcADAMTAw4DBwAMAxEDEwMHAA4DFAMPAwcADgMTAxQDBwAPAxUDEAMHAA8DFAMVAwcAEgMWAxEDBwASAxcDFgMHABEDGAMTAwcAEQMWAxgDBwATAxkDFAMHABMDGAMZAwcAFAMaAxUDBwAUAxkDGgMHABcDGwMWAwcAFwMcAxsDBwAWAx0DGAMHABYDGwMdAwcAGAMeAxkDBwAYAx0DHgMHABkDHwMaAwcAGQMeAx8DBwAcAyADGwMHABwDIQMgAwcAGwMiAx0DBwAbAyADIgMHAB0DIwMeAwcAHQMiAyMDBwAeAyQDHwMHAB4DIwMkAwcAJQMmAycDBwAlAygDJgMHACkDJwMqAwcAKQMlAycDBwArAyoDJwMHACsDLAMqAwcALAMpAyoDBwAsAy0DKQMHAC4DJwMmAwcALgMrAycDBwAvAyYDKAMHAC8DLgMmAwcAMAMoAzEDBwAwAy8DKAMHADIDMQMzAwcAMgMwAzEDBwA0AzUDNgMHADQDNwM1AwcAOAM2AzkDBwA4AzQDNgMHADoDOQM7AwcAOgM4AzkDBwA8AzsDPQMHADwDOgM7AwcAPgM9Az8DBwA+AzwDPQMHAEADIQMcAwcAQANBAyEDBwBCAxwDFwMHAEIDQAMcAwcAQwMXAxIDBwBDA0IDFwMHAEQDEgMNAwcARANDAxIDBwBFAw0DCAMHAEUDRAMNAwcARgMIA/ICBwBGA0UDCAMHAEcD8gJIAwcARwNGA/ICBwBJA0gDSgMHAEkDRwNIAwcASwNKA/cCBwBLA0kDSgMHAEwD9wL2AgcATANLA/cCBwBNA/YC+wIHAE0DTAP2AgcATgP7AgUDBwBOA00D+wIHAE8DBQMAAwcATwNOAwUDBwBQAwAD/wIHAFADTwMAAwcAUQMlAykDBwBRA1IDJQMHAEEDUgNRAwcAQQNAA1IDBwBSAygDJQMHAFIDUwMoAwcAQANTA1IDBwBAA0IDUwMHAFMDMQMoAwcAUwNUAzEDBwBCA1QDUwMHAEIDQwNUAwcAVAMzAzEDBwBUA1UDMwMHAEMDVQNUAwcAQwNEA1UDBwBEA1YDVQMHAEQDRQNWAwcARQNXA1YDBwBFA0YDVwMHAEYDWANXAwcARgNHA1gDBwBHA1kDWAMHAEcDSQNZAwcASQNaA1kDBwBJA0sDWgMHAFoDNgM1AwcAWgNbAzYDBwBLA1sDWgMHAEsDTANbAwcAWwM5AzYDBwBbA1wDOQMHAEwDXANbAwcATANNA1wDBwBcAzsDOQMHAFwDXQM7AwcATQNdA1wDBwBNA04DXQMHAF0DPQM7AwcAXQNeAz0DBwBOA14DXQMHAE4DTwNeAwcAXgM/Az0DBwBeA18DPwMHAE8DXwNeAwcATwNQA18DBwDUAWADYQMHANQB1gFgAwcA1gFiA2ADBwDWAdgBYgMHAGIDNAM4AwcAYgNjAzQDBwDYAWMDYgMHANgB2gFjAwcAYwM3AzQDBwBjA2QDNwMHANoBZANjAwcA2gHcAWQDBwDeAWUDZgMHAN4B4AFlAwcA4AFnA2UDBwDgAeIBZwMHAOIBaANnAwcA4gHkAWgDBwDkAWkDaAMHAOQB5gFpAwcA5gFqA2kDBwDmAegBagMHAOgBawNqAwcA6AHqAWsDBwDrAWEDbAMHAOsB1AFhAwcAbQNgA24DBwBtA2EDYAMHADoDbwNwAwcAOgM8A28DBwBuA2IDcQMHAG4DYANiAwcAYgNyA3EDBwBiAzgDcgMHADgDcANyAwcAOAM6A3ADBwBzA2wDdAMHAHMDPgNsAwcAdANhA20DBwB0A2wDYQMHADwDcwNvAwcAPAM+A3MDBwB1A24DdgMHAHUDbQNuAwcAcAN3A3gDBwBwA28DdwMHAHYDcQN5AwcAdgNuA3EDBwBxA3oDeQMHAHEDcgN6AwcAcgN4A3oDBwByA3ADeAMHAHsDdAN8AwcAewNzA3QDBwB8A20DdQMHAHwDdANtAwcAbwN7A3cDBwBvA3MDewMHAH0D3gLgAgcAfQN+A94CBwB+A98C3gIHAH4DfwPfAgcAgAPiAuECBwCAA4ED4gIHAPQCgQOAAwcA9ALxAoEDBwCBA+MC4gIHAIEDggPjAgcA8QKCA4EDBwDxAu4CggMHAIID5ALjAgcAggODA+QCBwDuAoMDggMHAO4C6wKDAwcAgwPlAuQCBwCDA4QD5QIHAOsChAODAwcA6wLqAoQDBwDgAoUDhgMHAOACygKFAwcAygKHA4UDBwDKAs8ChwMHAM8CiAOHAwcAzwLLAogDBwCJA4oDiwMHAIkDzQKKAwcAywKJA4gDBwDLAs0CiQMHAIsDjAONAwcAiwOKA4wDBwCNA44DjwMHAI0DjAOOAwcAjwOQA5EDBwCPA44DkAMHAJEDfQOSAwcAkQOQA30DBwB9A4YDkgMHAH0D4AKGAwcAhgOTA5QDBwCGA4UDkwMHAIUDlQOTAwcAhQOHA5UDBwCHA5YDlQMHAIcDiAOWAwcAlwOLA5gDBwCXA4kDiwMHAIgDlwOWAwcAiAOJA5cDBwCYA40DmQMHAJgDiwONAwcAmQOPA5oDBwCZA40DjwMHAJoDkQObAwcAmgOPA5EDBwCbA5IDnAMHAJsDkQOSAwcAkgOUA5wDBwCSA4YDlAMHAMYCnQOeAwcAxgLfAp0DBwDEAp4DnwMHAMQCxgKeAwcAxAKgA8ICBwDEAp8DoAMHAMACoQPhAgcAwAKiA6EDBwDCAqIDwAIHAMICoAOiAwcA8wKjA/ICBwDzAqQDowMHAKMDSAPyAgcAowOlA0gDBwD0AqQD8wIHAPQCpgOkAwcApQNKA0gDBwClA6cDSgMHAKgD9wKpAwcAqAP1AvcCBwCpA0oDpwMHAKkD9wJKAwcAqgP1AqgDBwCqA/kC9QIHAJ0DfwOrAwcAnQPfAn8DBwDhAqwDgAMHAOECoQOsAwcAgAOmA/QCBwCAA6wDpgMHAK0DVgNXAwcArQOuA1YDBwCvA64DrQMHAK8DsAOuAwcArgNVA1YDBwCuA7EDVQMHALADsQOuAwcAsAOyA7EDBwCxAzMDVQMHALEDswMzAwcAsgOzA7EDBwCyA7QDswMHALMDMgMzAwcAswO1AzIDBwC0A7UDswMHALQDtgO1AwcAtwPeAWYDBwC3AzgC3gEHALgDOAK3AwcAuAM6AjgCBwC5A1cDWAMHALkDrQNXAwcAugOtA7kDBwC6A68DrQMHALsDWANZAwcAuwO5A1gDBwC8A7kDuwMHALwDugO5AwcAvQNZA1oDBwC9A7sDWQMHAL4DuwO9AwcAvgO8A7sDBwC/A1oDNQMHAL8DvQNaAwcAwAO9A78DBwDAA74DvQMHAMEDNQM3AwcAwQO/AzUDBwDCA78DwQMHAMIDwAO/AwcAwwM3A2QDBwDDA8EDNwMHAMQDwQPDAwcAxAPCA8EDBwBHAmQD3AEHAEcCwwNkAwcASALDA0cCBwBIAsQDwwMHAMUDIAMhAwcAxQPGAyADBwDGAyIDIAMHAMYDxwMiAwcAyAPHA8YDBwDIA8kDxwMHAMcDIwMiAwcAxwPKAyMDBwDJA8oDxwMHAMkDywPKAwcAygMkAyMDBwDKA8wDJAMHAMsDzAPKAwcAywPNA8wDBwDOAyEDQQMHAM4DxQMhAwcAzwNBA1EDBwDPA84DQQMHANADUQMpAwcA0APPA1EDBwDRAykDLQMHANED0AMpAwcAVgJrA+oBBwBWAtIDawMHAMYD0wPIAwcAxgPUA9MDBwDFA9QDxgMHAMUD1QPUAwcAzgPVA8UDBwDOA9YD1QMHAM8D1gPOAwcAzwPXA9YDBwDQA9cDzwMHANAD2APXAwcA0QPYA9ADBwDRA9kD2AMHAFYC2gPSAwcAVgJgAtoDBwDUA9sD0wMHANQD3APbAwcA1QPcA9QDBwDVA90D3AMHANYD3QPVAwcA1gPeA90DBwDXA94D1gMHANcD3wPeAwcA2APfA9cDBwDYA+AD3wMHANkD4APYAwcA2QPhA+ADBwBgAuID2gMHAGACaQLiAwcA3APjA9sDBwDcA+QD4wMHAN0D5APcAwcA3QPlA+QDBwDeA+UD3QMHAN4D5gPlAwcA3wPmA94DBwDfA+cD5gMHAOAD5wPfAwcA4APoA+cDBwDhA+gD4AMHAOED6QPoAwcAaQLqA+IDBwBpAnIC6gMHAOQD6wPjAwcA5APsA+sDBwDlA+wD5AMHAOUD7QPsAwcA5gPtA+UDBwDmA+4D7QMHAOcD7gPmAwcA5wPvA+4DBwDoA+8D5wMHAOgD8APvAwcA6QPwA+gDBwDpA/ED8AMHAHIC8gPqAwcAcgJ7AvIDBwDsA/MD6wMHAOwD9APzAwcA7QP0A+wDBwDtA/UD9AMHAO4D9QPtAwcA7gP2A/UDBwDvA/YD7gMHAO8D9wP2AwcA8AP3A+8DBwDwA/gD9wMHAPED+APwAwcA8QP5A/gDBwB7AvoD8gMHAHsChAL6AwcAhgL7A/wDBwCGAogC+wMHAP0D/gP/AwcA/QMABP4DBwD/AwEEAgQHAP8D/gMBBAcAAgQDBAQEBwACBAEEAwQHAAQEBQQGBAcABAQDBAUEBwAGBAcECAQHAAYEBQQHBAcA8wMJBOsDBwDzAwoECQQHAOsDCwTjAwcA6wMJBAsEBwDjAwwE2wMHAOMDCwQMBAcA2wMNBNMDBwDbAwwEDQQHANMDDgTIAwcA0wMNBA4EBwDIAw8EyQMHAMgDDgQPBAcAEAQRBBIEBwAQBBMEEQQHABQEEwQQBAcAFAQIBBMEBwATBBUEEQQHABMEFgQVBAcACAQWBBMEBwAIBAcEFgQHABcEGAQZBAcAFwQaBBgEBwAbBBoEFwQHABsEHAQaBAcAHQQcBBsEBwAdBB4EHAQHAB8EHgQdBAcAHwQgBB4EBwAhBCAEHwQHACEEIgQgBAcAIwQiBCEEBwAjBCQEIgQHACUEJAQjBAcAJQQmBCQEBwC0AicEKAQHALQCtgInBAcAcwEpBHYBBwBzASoEKQQHACsE/QEsBAcAKwQQAv0BBwBvASoEcwEHAG8BLQQqBAcALgQQAisEBwAuBA4CEAIHAHABLQRvAQcAcAEvBC0EBwAwBA4CLgQHADAEDAIOAgcAagExBGcBBwBqASwEMQQHACwE/gExBAcALAT9Af4BBwBnATIEZgEHAGcBMQQyBAcAMQT/ATIEBwAxBP4B/wEHAGYBMwQqAgcAZgEyBDMEBwAyBCsCMwQHADIE/wErAgcANAQ1BDYEBwA0BDcENQQHADgEOQQ6BAcAOAQ7BDkEBwA8BDcENAQHADwEPQQ3BAcAPgQ7BDgEBwA+BD8EOwQHAEAEPQQ8BAcAQARBBD0EBwBCBD8EPgQHAEIEQwQ/BAcARARCBEUEBwBEBEYEQgQHAEYEQwRCBAcARgRHBEMEBwBIBEYERAQHAEgESQRGBAcASQRHBEYEBwBJBEoERwQHAEsESQRIBAcASwRMBEkEBwBMBEoESQQHAEwETQRKBAcATgRMBEsEBwBOBE8ETAQHAE8ETQRMBAcATwRQBE0EBwBRBE8ETgQHAFEEUgRPBAcAUgRQBE8EBwBSBFMEUAQHAFQEUgRRBAcAVARVBFIEBwBVBFMEUgQHAFUEVgRTBAcAVwRVBFQEBwBXBFgEVQQHAFgEVgRVBAcAWARZBFYEBwBaBFgEVwQHAFoEWwRYBAcAWwRZBFgEBwBbBFwEWQQHAF0EWwRaBAcAXQReBFsEBwBeBFwEWwQHAF4EXwRcBAcAYAReBF0EBwBgBGEEXgQHAGEEXwReBAcAYQRiBF8EBwBjBGEEYAQHAGMEZARhBAcAZARiBGEEBwBkBGUEYgQHAGYEZARjBAcAZgRnBGQEBwBnBGUEZAQHAGcEaARlBAcAaQRqBGsEBwBpBGwEagQHAG0EaARnBAcAbQRuBGgEBwBvBGwEaQQHAG8EcARsBAcAcQRuBG0EBwBxBHIEbgQHAHMEdAR1BAcAcwR2BHQEBwB2BHcEdAQHAHYEeAR3BAcAeQR2BHMEBwB5BHoEdgQHAHoEeAR2BAcAegR7BHgEBwB8BHoEeQQHAHwEfQR6BAcAfQR7BHoEBwB9BH4EewQHAH8EfQR8BAcAfwSABH0EBwCABH4EfQQHAIAEgQR+BAcAggSDBIQEBwCCBDoEgwQHADoEhQSDBAcAOgQ5BIUEBwCEBIYEhwQHAIQEgwSGBAcAgwSIBIYEBwCDBIUEiAQHAIcEiQSKBAcAhwSGBIkEBwCGBIsEiQQHAIYEiASLBAcAigSMBI0EBwCKBIkEjAQHAIkEjgSMBAcAiQSLBI4EBwCNBI8EkAQHAI0EjASPBAcAjASRBI8EBwCMBI4EkQQHAMEBawFtAQcAwQHDAWsBBwC/AW0BcgEHAL8BwQFtAQcAaAFyAXUBBwBoAb8BcgEHACoELAQpBAcAKgQrBCwEBwAtBCsEKgQHAC0ELgQrBAcALwQuBC0EBwAvBDAELgQHADoENgQ1BAcAOgSCBDYEBwA4BDUENwQHADgEOgQ1BAcAPgQ3BD0EBwA+BDgENwQHAEEEPgQ9BAcAQQRCBD4EBwBABEIEQQQHAEAERQRCBAcAaAGSBJMEBwBoAXUBkgQHAJQEaAGTBAcAlARpAWgBBwB1AZUEkgQHAHUBdAGVBAcAlARqAWkBBwCUBJYEagEHAHQBlwSVBAcAdAF2AZcEBwAsBJYEmAQHACwEagGWBAcAmQQsBJgEBwCZBCkELAQHAJcEKQSZBAcAlwR2ASkEBwCTBJoEmwQHAJMEkgSaBAcAnASTBJsEBwCcBJQEkwQHAJIEnQSaBAcAkgSVBJ0EBwCeBJQEnAQHAJ4ElgSUBAcAlQSfBJ0EBwCVBJcEnwQHAJgEngSgBAcAmASWBJ4EBwChBJgEoAQHAKEEmQSYBAcAnwSZBKEEBwCfBJcEmQQHAKIEhQQ5BAcAogSjBIUEBwCkBDkEOwQHAKQEogQ5BAcApQR3BHgEBwClBKYEdwQHAKcEWQRcBAcApwSoBFkEBwCoBFYEWQQHAKgEqQRWBAcAqgRiBGUEBwCqBKsEYgQHAKsEXwRiBAcAqwSsBF8EBwCtBGUEaAQHAK0EqgRlBAcArARcBF8EBwCsBKcEXAQHAK4EaARuBAcArgStBGgEBwCvBG4EcgQHAK8ErgRuBAcAsAR4BHsEBwCwBKUEeAQHALEEewR+BAcAsQSwBHsEBwCjBIgEhQQHAKMEsgSIBAcAswRQBFMEBwCzBLQEUAQHAKkEUwRWBAcAqQSzBFMEBwC1BEcESgQHALUEtgRHBAcAtwRKBE0EBwC3BLUESgQHALYEQwRHBAcAtgS4BEMEBwC0BE0EUAQHALQEtwRNBAcAuAQ/BEMEBwC4BLkEPwQHALkEOwQ/BAcAuQSkBDsEBwCyBIsEiAQHALIEugSLBAcAugSOBIsEBwC6BLsEjgQHALwEowSiBAcAvAS9BKMEBwC+BKIEpAQHAL4EvASiBAcAvQSyBKMEBwC9BL8EsgQHAMAEpAS5BAcAwAS+BKQEBwDBBKYEpQQHAMEEwgSmBAcAwwSlBLAEBwDDBMEEpQQHAMQErgSvBAcAxATFBK4EBwDGBKgEpwQHAMYExwSoBAcAxwSpBKgEBwDHBMgEqQQHAMkEpwSsBAcAyQTGBKcEBwDIBLMEqQQHAMgEygSzBAcAywSrBKoEBwDLBMwEqwQHAMwErASrBAcAzATJBKwEBwDNBKoErQQHAM0EywSqBAcAxQStBK4EBwDFBM0ErQQHAM4EsASxBAcAzgTDBLAEBwC/BLoEsgQHAL8EzwS6BAcAygS0BLMEBwDKBNAEtAQHANAEtwS0BAcA0ATRBLcEBwDSBLYEtQQHANIE0wS2BAcA0QS1BLcEBwDRBNIEtQQHANMEuAS2BAcA0wTUBLgEBwDUBLkEuAQHANQEwAS5BAcAzwS7BLoEBwDPBNUEuwQHAAED1gT/AgcAAQPXBNYEBwDYBGsE2QQHANgEaQRrBAcAAwPXBAEDBwADA9oE1wQHANsEaQTYBAcA2wRvBGkEBwCKA9wEjAMHAIoD3QTcBAcA3QR1BNwEBwDdBHMEdQQHAM0C3QSKAwcAzQLeBN0EBwDeBHME3QQHAN4EeQRzBAcAzALeBM0CBwDMAt8E3gQHAN8EeQTeBAcA3wR8BHkEBwDaAt8EzAIHANoC4ATfBAcA4AR8BN8EBwDgBH8EfAQHAP8C4QRQAwcA/wLWBOEEBwDWBGME4QQHANYEZgRjBAcAUAPiBF8DBwBQA+EE4gQHAOEEYATiBAcA4QRjBGAEBwBfA+MEPwMHAF8D4gTjBAcA4gRdBOMEBwDiBGAEXQQHAD8D5AQ+AwcAPwPjBOQEBwDjBFoE5AQHAOMEXQRaBAcAPgPlBGwDBwA+A+QE5QQHAOQEVwTlBAcA5ARaBFcEBwBsA+YE6wEHAGwD5QTmBAcA5QRUBOYEBwDlBFcEVAQHAOsB5wTsAQcA6wHmBOcEBwDmBFEE5wQHAOYEVARRBAcA7AHoBK4BBwDsAecE6AQHAOcETgToBAcA5wRRBE4EBwCuAekErwEHAK4B6ATpBAcA6ARLBOkEBwDoBE4ESwQHAK8B6gTSAQcArwHpBOoEBwDpBEgE6gQHAOkESwRIBAcA0gHrBMIBBwDSAeoE6wQHAOoERATrBAcA6gRIBEQEBwDCAewEwwEHAMIB6wTsBAcA6wRFBOwEBwDrBEQERQQHAMMB7QRrAQcAwwHsBO0EBwDsBEAE7QQHAOwERQRABAcAawHuBG4BBwBrAe0E7gQHAO0EPATuBAcA7QRABDwEBwBuAe8EcAEHAG4B7gTvBAcA7gQ0BO8EBwDuBDwENAQHAHAB8AQvBAcAcAHvBPAEBwDvBDYE8AQHAO8ENAQ2BAcALwTxBDAEBwAvBPAE8QQHAPAEggTxBAcA8AQ2BIIEBwAwBPIEDAIHADAE8QTyBAcA8QSEBPIEBwDxBIIEhAQHAAwC8wQJAgcADALyBPMEBwDyBIcE8wQHAPIEhASHBAcACQL0BDoBBwAJAvME9AQHAPMEigT0BAcA8wSHBIoEBwA6AfUEOAEHADoB9AT1BAcA9ASNBPUEBwD0BIoEjQQHADgB9gRHAQcAOAH1BPYEBwD1BJAE9gQHAPUEjQSQBAcAdQT3BNwEBwB1BPgE9wQHAPkE2wT6BAcA+QRvBNsEBwB0BPgEdQQHAHQE+wT4BAcA/ARvBPkEBwD8BHAEbwQHAHcE+wR0BAcAdwT9BPsEBwD9BHEE+wQHAP0EcgRxBAcApgT9BHcEBwCmBP4E/QQHAP4EcgT9BAcA/gSvBHIEBwDCBP4EpgQHAMIE/wT+BAcA/wSvBP4EBwD/BMQErwQHANwEAAWMAwcA3AT3BAAFBwD3BAMDAAUHAPcE2gQDAwcAjAMBBY4DBwCMAwAFAQUHAAAFAgMBBQcAAAUDAwIDBwCOAwIFkAMHAI4DAQUCBQcAAQUGAwIFBwABBQIDBgMHAJADAwV9AwcAkAMCBQMFBwACBf0CAwUHAAIFBgP9AgcAfQMEBX4DBwB9AwMFBAUHAAMF+gIEBQcAAwX9AvoCBwB+AwUFfwMHAH4DBAUFBQcABAX5AgUFBwAEBfoC+QIHAH8DBgWrAwcAfwMFBQYFBwAFBaoDBgUHAAUF+QKqAwcAagRmBGsEBwBqBGcEZgQHAGwEZwRqBAcAbARtBGcEBwBwBG0EbAQHAHAEcQRtBAcAZgTZBGsEBwBmBNYE2QQHANYE2ATZBAcA1gTXBNgEBwDXBNsE2AQHANcE2gTbBAcA2gT6BNsEBwDaBPcE+gQHAPoE+AT5BAcA+gT3BPgEBwD8BHEEcAQHAPwE+wRxBAcA+AT8BPkEBwD4BPsE/AQHAIQCBwX6AwcAhAIIBQcFBwAIBfwDBwUHAAgFhgL8AwcAgwIIBYQCBwCDAgkFCAUHAAkFhgIIBQcACQWHAoYCBwCBAkQAggIHAIECCgVEAAcACgWKAkQABwAKBYsCigIHAIACCgWBAgcAgAILBQoFBwALBYsCCgUHAAsFjgKLAgcAfwILBYACBwB/AgwFCwUHAAwFjgILBQcADAWQAo4CBwB+AgwFfwIHAH4CDQUMBQcADQWQAgwFBwANBZICkAIHAH0CDQV+AgcAfQIOBQ0FBwAOBZICDQUHAA4FlAKSAgcAfAIOBX0CBwB8Ag8FDgUHAA8FlAIOBQcADwWgApQCBwD5AxAF+AMHAPkDEQUQBQcAEQX/AxAFBwARBf0D/wMHAPgDEgX3AwcA+AMQBRIFBwAQBQIEEgUHABAF/wMCBAcA9wMTBfYDBwD3AxIFEwUHABIFBAQTBQcAEgUCBAQEBwD2AxQF9QMHAPYDEwUUBQcAEwUGBBQFBwATBQQEBgQHAPUDFQX0AwcA9QMUBRUFBwAUBQgEFQUHABQFBgQIBAcA9AMWBfMDBwD0AxUFFgUHABUFFAQWBQcAFQUIBBQEBwCIAhcF+wMHAIgCGAUXBQcAGAUoBBcFBwAYBbQCKAQHAIUCGAWIAgcAhQIZBRgFBwAZBbQCGAUHABkFtQK0AgcAiQIaBYwCBwCJAhsFGgUHABsFsQIaBQcAGwWvArECBwCNAhsFiQIHAI0CHAUbBQcAHAWvAhsFBwAcBa0CrwIHAI8CHAWNAgcAjwIdBRwFBwAdBa0CHAUHAB0FqwKtAgcAkQIdBY8CBwCRAh4FHQUHAB4FqwIdBQcAHgWpAqsCBwCTAh4FkQIHAJMCHwUeBQcAHwWpAh4FBwAfBacCqQIHAKICHwWTAgcAogIgBR8FBwAgBacCHwUHACAFpAKnAgcAoQIgBaICBwChAiEFIAUHACEFpAIgBQcAIQWlAqQCBwAABCIF/gMHAAAEIwUiBQcAIwUjBCIFBwAjBSUEIwQHAP4DJAUBBAcA/gMiBSQFBwAiBSEEJAUHACIFIwQhBAcAAQQlBQMEBwABBCQFJQUHACQFHwQlBQcAJAUhBB8EBwADBCYFBQQHAAMEJQUmBQcAJQUdBCYFBwAlBR8EHQQHAAUEJwUHBAcABQQmBScFBwAmBRsEJwUHACYFHQQbBAcABwQoBRYEBwAHBCcFKAUHACcFFwQoBQcAJwUbBBcEBwAWBCkFFQQHABYEKAUpBQcAKAUZBCkFBwAoBRcEGQQHACoFKwUsBQcAKgUtBSsFBwAsBS4FLwUHACwFKwUuBQcALwUwBTEFBwAvBS4FMAUHADAFMgUxBQcAMAUzBTIFBwAzBTQFMgUHADMFNQU0BQcANgU0BTUFBwA2BTcFNAUHADgFNwU2BQcAOAU5BTcFBwAqBTgFLQUHACoFOQU4BQcAKwU6BTsFBwArBS0FOgUHAC4FOwU8BQcALgUrBTsFBwAwBTwFPQUHADAFLgU8BQcAPgUwBT0FBwA+BTMFMAUHAD8FMwU+BQcAPwU1BTMFBwBABTUFPwUHAEAFNgU1BQcAQQU2BUAFBwBBBTgFNgUHAC0FQQU6BQcALQU4BUEFBwA7BUIFQwUHADsFOgVCBQcAPAVDBUQFBwA8BTsFQwUHAD0FRAVFBQcAPQU8BUQFBwBGBT0FRQUHAEYFPgU9BQcARwU+BUYFBwBHBT8FPgUHAEgFPwVHBQcASAVABT8FBwBJBUAFSAUHAEkFQQVABQcAOgVJBUIFBwA6BUEFSQUHAEMFSgVLBQcAQwVCBUoFBwBEBUsFTAUHAEQFQwVLBQcARQVMBU0FBwBFBUQFTAUHAE4FRQVNBQcATgVGBUUFBwBPBUYFTgUHAE8FRwVGBQcAUAVHBU8FBwBQBUgFRwUHAFEFSAVQBQcAUQVJBUgFBwBCBVEFSgUHAEIFSQVRBQcAUAVOBU0FBwBQBU8FTgUHAEwFUAVNBQcATAVRBVAFBwBLBVEFTAUHAEsFSgVRBQcAUgVTBVQFBwBSBVUFUwUHAFYFVAXXAAcAVgVSBVQFBwBXBdcA2QAHAFcFVgXXAAcAWAVXBdkABwBYBVkFVwUHAFoFWQVYBQcAWgVbBVkFBwBaBVwFWwUHAFoFXQVcBQcAXQVeBVwFBwBdBV8FXgUHAF4FUwVVBQcAXgVfBVMFBwBgBVIFYQUHAGAFVQVSBQcAYQVWBWIFBwBhBVIFVgUHAGIFVwVjBQcAYgVWBVcFBwBXBWQFYwUHAFcFWQVkBQcAWQVlBWQFBwBZBVsFZQUHAFsFZgVlBQcAWwVcBWYFBwBcBWcFZgUHAFwFXgVnBQcAZwVVBWAFBwBnBV4FVQUHAGgFYQVpBQcAaAVgBWEFBwBpBWIFagUHAGkFYQViBQcAagVjBWsFBwBqBWIFYwUHAGMFbAVrBQcAYwVkBWwFBwBkBW0FbAUHAGQFZQVtBQcAZQVuBW0FBwBlBWYFbgUHAGYFbwVuBQcAZgVnBW8FBwBvBWAFaAUHAG8FZwVgBQcAcAVpBXEFBwBwBWgFaQUHAHEFagVyBQcAcQVpBWoFBwByBWsFcwUHAHIFagVrBQcAawV0BXMFBwBrBWwFdAUHAGwFdQV0BQcAbAVtBXUFBwBtBXYFdQUHAG0FbgV2BQcAbgV3BXYFBwBuBW8FdwUHAHcFaAVwBQcAdwVvBWgFBwB0BXYFcwUHAHQFdQV2BQcAdgVyBXMFBwB2BXcFcgUHAHcFcQVyBQcAdwVwBXEFBwCDAkYACQUHAIMCeAVGAAcAeAVEAEYABwB4BYICRAAHAHoCeAWDAgcAegJ5BXgFBwB5BYICeAUHAHkFeQKCAgcAcQJ5BXoCBwBxAnoFeQUHAHoFeQJ5BQcAegVwAnkCBwBoAnoFcQIHAGgCewV6BQcAewVwAnoFBwB7BWcCcAIHAF8CewVoAgcAXwJ8BXsFBwB8BWcCewUHAHwFXgJnAgcAVwJ8BV8CBwBXAn0FfAUHAH0FXgJ8BQcAfQVVAl4CBwDpAX0FVwIHAOkBfgV9BQcAfgVVAn0FBwB+BZ0BVQIHAOcBfgXpAQcA5wF/BX4FBwB/BZ0BfgUHAH8FnAGdAQcA5QF/BecBBwDlAYAFfwUHAIAFnAF/BQcAgAWbAZwBBwDjAYAF5QEHAOMBgQWABQcAgQWbAYAFBwCBBZ4BmwEHAOEBgQXjAQcA4QGCBYEFBwCCBZ4BgQUHAIIFnwGeAQcA3QGCBeEBBwDdAYMFggUHAIMFnwGCBQcAgwWgAZ8BBwDfAYMF3QEHAN8BhAWDBQcAhAWgAYMFBwCEBaIBoAEHADcChAXfAQcANwKFBYQFBwCFBaIBhAUHAIUFNQKiAQcAOQKFBTcCBwA5AoYFhQUHAIYFNQKFBQcAhgU2AjUCBwD5A4cFEQUHAPkDiAWHBQcAiAUHBYcFBwCIBfoDBwUHAPEDiAX5AwcA8QOJBYgFBwCJBfoDiAUHAIkF8gP6AwcA6QOJBfEDBwDpA4oFiQUHAIoF8gOJBQcAigXqA/IDBwDhA4oF6QMHAOEDiwWKBQcAiwXqA4oFBwCLBeID6gMHANkDiwXhAwcA2QOMBYsFBwCMBeIDiwUHAIwF2gPiAwcA0QOMBdkDBwDRA40FjAUHAI0F2gOMBQcAjQXSA9oDBwAtA40F0QMHAC0DjgWNBQcAjgXSA40FBwCOBWsD0gMHACwDjgUtAwcALAOPBY4FBwCPBWsDjgUHAI8FagNrAwcAKwOPBSwDBwArA5AFjwUHAJAFagOPBQcAkAVpA2oDBwAuA5AFKwMHAC4DkQWQBQcAkQVpA5AFBwCRBWgDaQMHAC8DkQUuAwcALwOSBZEFBwCSBWgDkQUHAJIFZwNoAwcAMAOSBS8DBwAwA5MFkgUHAJMFZwOSBQcAkwVlA2cDBwAyA5MFMAMHADIDlAWTBQcAlAVlA5MFBwCUBWYDZQMHALUDlAUyAwcAtQOVBZQFBwCVBWYDlAUHAJUFtwNmAwcAtgOVBbUDBwC2A5YFlQUHAJYFtwOVBQcAlgW4A7cDBwDYAEYAQwAHANgACQVGAAcARQDZAEMABwBFAFgF2QAHANgAhwIJBQcA2ADXAIcCBwBFAIoCWAUHAEUARACKAgcAigJaBVgFBwCKAowCWgUHAIcCVAWFAgcAhwLXAFQFBwBTBYUCVAUHAFMFGQWFAgcAKASXBRcFBwAoBJgFlwUHAJgFIwWXBQcAmAUlBCMFBwAnBJgFKAQHACcEmQWYBQcAmQUlBJgFBwCZBSYEJQQHALUCmgWzAgcAtQKbBZoFBwCbBbICmgUHAJsFsQKyAgcAGQWbBbUCBwAZBZwFmwUHAJwFsQKbBQcAnAUaBbECBwBaBRoFXQUHAFoFjAIaBQcAGgVfBV0FBwAaBZwFXwUHABkFXwWcBQcAGQVTBV8FBwCdBTEFngUHAJ0FLwUxBQcAnQX8Ay8FBwCdBQcF/AMHAPwDLAUvBQcA/AP7AywFBwAXBSwF+wMHABcFKgUsBQcAlwUqBRcFBwCXBTkFKgUHACMFOQWXBQcAIwU3BTkFBwAABDcFIwUHAAAENAU3BQcA/QM0BQAEBwD9AzIFNAUHAJ8F/QMRBQcAnwUyBf0DBwCeBREFhwUHAJ4FnwURBQcAoAWfBKEEBwCgBaEFnwQHAKIFoQSgBAcAogWgBaEEBwChBZ0EnwQHAKEFowWdBAcAowWaBJ0EBwCjBaQFmgQHAKQFmwSaBAcApAWlBZsEBwClBZwEmwQHAKUFpgWcBAcApgWeBJwEBwCmBacFngQHAKcFoASeBAcApwWiBaAEBwCoBaEFoAUHAKgFqQWhBQcAqgWgBaIFBwCqBagFoAUHAKkFowWhBQcAqQWrBaMFBwCsBaIFpwUHAKwFqgWiBQcAqwWkBaMFBwCrBa0FpAUHAK0FpQWkBQcArQWuBaUFBwCuBaYFpQUHAK4FrwWmBQcArwWnBaYFBwCvBawFpwUHALAFsQWyBQcAsAWzBbEFBwCjArAFpgIHAKMCswWwBQcAtAWyBbUFBwC0BbAFsgUHAKYCtAWoAgcApgKwBbQFBwC2BbUFtwUHALYFtAW1BQcAqAK2BaoCBwCoArQFtgUHALgFtwW5BQcAuAW2BbcFBwCqArgFrAIHAKoCtgW4BQcAugW5BbsFBwC6BbgFuQUHAKwCugWuAgcArAK4BboFBwC8BbsFvQUHALwFugW7BQcArgK8BbACBwCuAroFvAUHAL4FvQW/BQcAvgW8Bb0FBwCwAr4FsgIHALACvAW+BQcAwAXBBcIFBwDABcMFwQUHALMCwAW2AgcAswLDBcAFBwDEBcUFxgUHAMQFxwXFBQcAGgTHBRgEBwAaBMUFxwUHAMYFyAXJBQcAxgXFBcgFBwAcBMUFGgQHABwEyAXFBQcAyQXKBcsFBwDJBcgFygUHAB4EyAUcBAcAHgTKBcgFBwDLBcwFzQUHAMsFygXMBQcAIATKBR4EBwAgBMwFygUHAM0FzgXPBQcAzQXMBc4FBwAiBMwFIAQHACIEzgXMBQcAzwXQBdEFBwDPBc4F0AUHACQEzgUiBAcAJATQBc4FBwDRBdIF0wUHANEF0AXSBQcAJgTQBSQEBwAmBNIF0AUHANQFwAXCBQcA1AXVBcAFBwC2AtUFJwQHALYCwAXVBQcA1gXUBdcFBwDWBdUF1AUHACcE1gWZBQcAJwTVBdYFBwDSBdcF0wUHANIF1gXXBQcAmQXSBSYEBwCZBdYF0gUHANgFswKaBQcA2AXDBbMCBwDBBdgF2QUHAMEFwwXYBQcAvgWaBbICBwC+BdgFmgUHANkFvgW/BQcA2QXYBb4FBwCxBdoFsgUHALEF2wXaBQcAsgXcBbUFBwCyBdoF3AUHALUF3QW3BQcAtQXcBd0FBwC3Bd4FuQUHALcF3QXeBQcAuQXfBbsFBwC5Bd4F3wUHALsF4AW9BQcAuwXfBeAFBwC9BeEFvwUHAL0F4AXhBQcAwQXiBcIFBwDBBeMF4gUHAMYF5AXEBQcAxgXlBeQFBwDJBeUFxgUHAMkF5gXlBQcAywXmBckFBwDLBecF5gUHAM0F5wXLBQcAzQXoBecFBwDPBegFzQUHAM8F6QXoBQcA0QXpBc8FBwDRBeoF6QUHANMF6gXRBQcA0wXrBeoFBwDCBewF1AUHAMIF4gXsBQcA1AXtBdcFBwDUBewF7QUHANcF6wXTBQcA1wXtBesFBwDuBcEF2QUHAO4F4wXBBQcA4QXZBb8FBwDhBe4F2QUHAO8F2gXbBQcA7wXwBdoFBwDxBe8F8gUHAPEF8AXvBQcA8AXcBdoFBwDwBfMF3AUHAPQF8AXxBQcA9AXzBfAFBwDzBd0F3AUHAPMF9QXdBQcA9gXzBfQFBwD2BfUF8wUHAPUF3gXdBQcA9QX3Bd4FBwD4BfUF9gUHAPgF9wX1BQcA9wXfBd4FBwD3BfkF3wUHAPoF9wX4BQcA+gX5BfcFBwD5BeAF3wUHAPkF+wXgBQcA/AX5BfoFBwD8BfsF+QUHAPsF4QXgBQcA+wX9BeEFBwD+BfsF/AUHAP4F/QX7BQcA/wXiBeMFBwD/BQAG4gUHAAEG/wUCBgcAAQYABv8FBwDlBQMG5AUHAOUFBAYDBgcABQYEBgYGBwAFBgMGBAYHAOYFBAblBQcA5gUHBgQGBwAGBgcGCAYHAAYGBAYHBgcA5wUHBuYFBwDnBQkGBwYHAAgGCQYKBgcACAYHBgkGBwDoBQkG5wUHAOgFCwYJBgcACgYLBgwGBwAKBgkGCwYHAOkFCwboBQcA6QUNBgsGBwAMBg0GDgYHAAwGCwYNBgcA6gUNBukFBwDqBQ8GDQYHAA4GDwYQBgcADgYNBg8GBwDrBQ8G6gUHAOsFEQYPBgcAEAYRBhIGBwAQBg8GEQYHAOIFEwbsBQcA4gUABhMGBwAUBgAGAQYHABQGEwYABgcAEwbtBewFBwATBhUG7QUHABYGEwYUBgcAFgYVBhMGBwAVBusF7QUHABUGEQbrBQcAEgYVBhYGBwASBhEGFQYHAO4F/wXjBQcA7gUXBv8FBwACBhcGGAYHAAIG/wUXBgcA4QUXBu4FBwDhBf0FFwYHABgG/QX+BQcAGAYXBv0FBwAZBgIGGAYHABkGGgYCBgcAGwYYBv4FBwAbBhkGGAYHABwGFgYUBgcAHAYdBhYGBwAdBhIGFgYHAB0GHgYSBgcAHwYUBgEGBwAfBhwGFAYHAB4GEAYSBgcAHgYgBhAGBwAgBg4GEAYHACAGIQYOBgcAIQYMBg4GBwAhBiIGDAYHACIGCgYMBgcAIgYjBgoGBwAjBggGCgYHACMGJAYIBgcAJAYGBggGBwAkBiUGBgYHACUGBQYGBgcAJQYmBgUGBwAaBgEGAgYHABoGHwYBBgcAJwb+BfwFBwAnBhsG/gUHACgG/AX6BQcAKAYnBvwFBwApBvoF+AUHACkGKAb6BQcAKgb4BfYFBwAqBikG+AUHACsG9gX0BQcAKwYqBvYFBwAsBvQF8QUHACwGKwb0BQcALQbxBfIFBwAtBiwG8QUHAC4GxAT/BAcALgYvBsQEBwAwBv8EwgQHADAGLgb/BAcAMQbVBM8EBwAxBjIG1QQHADMG1ATTBAcAMwY0BtQEBwA0BsAE1AQHADQGNQbABAcANgbTBNIEBwA2BjMG0wQHADcG0gTRBAcANwY2BtIEBwA4BtEE0AQHADgGNwbRBAcAOQbQBMoEBwA5BjgG0AQHADoGzwS/BAcAOgYxBs8EBwA7BsMEzgQHADsGPAbDBAcAPQbLBM0EBwA9Bj4GywQHAD8GzQTFBAcAPwY9Bs0EBwA+BswEywQHAD4GQAbMBAcAQAbJBMwEBwBABkEGyQQHAEIGygTIBAcAQgY5BsoEBwBBBsYEyQQHAEEGQwbGBAcARAbIBMcEBwBEBkIGyAQHAEMGxwTGBAcAQwZEBscEBwAvBsUExAQHAC8GPwbFBAcAPAbBBMMEBwA8BkUGwQQHAEUGwgTBBAcARQYwBsIEBwA1Br4EwAQHADUGRga+BAcARwa/BL0EBwBHBjoGvwQHAEYGvAS+BAcARgZIBrwEBwBIBr0EvAQHAEgGRwa9BAcASQYvBi4GBwBJBkoGLwYHAEsGLgYwBgcASwZJBi4GBwBKBj8GLwYHAEoGTAY/BgcATQYwBkUGBwBNBksGMAYHAE4GMgYxBgcATgZPBjIGBwBQBjEGOgYHAFAGTgYxBgcAUQY0BjMGBwBRBlIGNAYHAFIGNQY0BgcAUgZTBjUGBwBUBjMGNgYHAFQGUQYzBgcAUwZGBjUGBwBTBlUGRgYHAFYGNgY3BgcAVgZUBjYGBwBXBjcGOAYHAFcGVgY3BgcAWAY4BjkGBwBYBlcGOAYHAFkGOQZCBgcAWQZYBjkGBwBaBjoGRwYHAFoGUAY6BgcAWwY8BjsGBwBbBlwGPAYHAFwGRQY8BgcAXAZNBkUGBwBdBj4GPQYHAF0GXgY+BgcATAY9Bj8GBwBMBl0GPQYHAF4GQAY+BgcAXgZfBkAGBwBfBkEGQAYHAF8GYAZBBgcAYAZDBkEGBwBgBmEGQwYHAGIGQgZEBgcAYgZZBkIGBwBhBkQGQwYHAGEGYgZEBgcAVQZIBkYGBwBVBmMGSAYHAGMGRwZIBgcAYwZaBkcGBwBkBmUGZgYHAGQGZwZlBgcAaAZpBmoGBwBoBmsGaQYHAGwGbQZuBgcAbAZvBm0GBwBwBnEGcgYHAHAGcwZxBgcAdAZyBnUGBwB0BnAGcgYHAG8GdgZtBgcAbwZ3BnYGBwB4Bm4GeQYHAHgGbAZuBgcAegZuBm0GBwB6BnsGbgYHAHwGcgZxBgcAfAZ9BnIGBwB9BnUGcgYHAH0GfgZ1BgcAfwZtBnYGBwB/BnoGbQYHAHsGeQZuBgcAewaABnkGBwCBBm8GbAYHAIEGggZvBgcAggZqBmkGBwCCBoEGagYHAIMGcwZwBgcAgwaEBnMGBwCEBmQGZgYHAIQGgwZkBgcAhQZwBnQGBwCFBoMGcAYHAIMGZwZkBgcAgwaFBmcGBwCCBncGbwYHAIIGhgZ3BgcAhgZpBmsGBwCGBoIGaQYHAIcGbAZ4BgcAhwaBBmwGBwCBBmgGagYHAIEGhwZoBgcAiAaJBooGBwCIBosGiQYHAIwGjQaOBgcAjAaPBo0GBwCQBowGjgYHAJAGkQaMBgcAjwaSBo0GBwCPBpMGkgYHAJIGiAaKBgcAkgaTBogGBwCUBmsGaAYHAJQGlQZrBgcAlgZ2BncGBwCWBpcGdgYHAJcGfwZ2BgcAlwaYBn8GBwCZBncGhgYHAJkGlgZ3BgcAlQaGBmsGBwCVBpkGhgYHAJoGmwacBgcAmgadBpsGBwCaBogGnQYHAJoGiwaIBgcAngafBqAGBwCeBqEGnwYHAKEGjwaMBgcAoQaeBo8GBwChBqIGnwYHAKEGowaiBgcAowaMBpEGBwCjBqEGjAYHAKQGoAalBgcApAaeBqAGBwCkBo8GngYHAKQGkwaPBgcAnQalBpsGBwCdBqQGpQYHAKQGiAaTBgcApAadBogGBwCmBooGiQYHAKYGpwaKBgcApgZnBqcGBwCmBmUGZwYHAKgGjQapBgcAqAaOBo0GBwCoBnQGdQYHAKgGqQZ0BgcAqAaQBo4GBwCoBqoGkAYHAKoGdQZ+BgcAqgaoBnUGBwCSBqkGjQYHAJIGqwapBgcAqwZ0BqkGBwCrBoUGdAYHAKcGkgaKBgcApwarBpIGBwCrBmcGhQYHAKsGpwZnBgcArAatBq4GBwCsBq8GrQYHALAGsQayBgcAsAazBrEGBwC0BpcGlgYHALQGtQaXBgcAtga1BrQGBwC2BrcGtQYHALgGlgaZBgcAuAa0BpYGBwC5BrQGuAYHALkGtga0BgcAugaZBpUGBwC6BrgGmQYHALsGuAa6BgcAuwa5BrgGBwC8BpUGlAYHALwGugaVBgcAvQa6BrwGBwC9BrsGugYHAL4GvwbABgcAvgbBBr8GBwDCBsMGxAYHAMIGxQbDBgcAxga3BrYGBwDGBscGtwYHAKAGxwbGBgcAoAafBscGBwDIBrYGuQYHAMgGxga2BgcApQbGBsgGBwClBqAGxgYHAMkGuQa7BgcAyQbIBrkGBwCbBsgGyQYHAJsGpQbIBgcAyga7Br0GBwDKBskGuwYHAJwGyQbKBgcAnAabBskGBwC1Bq4GlwYHALUGrAauBgcArwa1BssGBwCvBqwGtQYHAJcGrQaYBgcAlwauBq0GBwC3BrIGtQYHALcGsAayBgcAswa3BswGBwCzBrAGtwYHALUGsQbLBgcAtQayBrEGBwDHBsAGtwYHAMcGvgbABgcAwQbHBs0GBwDBBr4GxwYHALcGvwbMBgcAtwbABr8GBwCfBsQGxwYHAJ8GwgbEBgcAxQafBqIGBwDFBsIGnwYHAMcGwwbNBgcAxwbEBsMGBwBxBs4GzwYHAHEGcwbOBgcA0AZxBs8GBwDQBnwGcQYHAM4GhAbRBgcAzgZzBoQGBwBmBtIG0wYHAGYGZQbSBgcAhAbTBtEGBwCEBmYG0wYHAIkG1AbVBgcAiQaLBtQGBwB4BtYG1wYHAHgGeQbWBgcAeQbYBtYGBwB5BoAG2AYHAIcG1wbZBgcAhwZ4BtcGBwBoBtkG2gYHAGgGhwbZBgcAlAbaBtsGBwCUBmgG2gYHAJoG3AbdBgcAmgacBtwGBwCLBt0G1AYHAIsGmgbdBgcApgbVBt4GBwCmBokG1QYHAGUG3gbSBgcAZQamBt4GBwC8BtsG3wYHALwGlAbbBgcAvQbfBuAGBwC9BrwG3wYHAMoG4AbhBgcAyga9BuAGBwCcBuEG3AYHAJwGygbhBgcAzwbiBuMGBwDPBs4G4gYHAOQGzwbjBgcA5AbQBs8GBwDiBtEG5QYHAOIGzgbRBgcA0wbmBucGBwDTBtIG5gYHANEG5wblBgcA0QbTBucGBwDVBugG6QYHANUG1AboBgcA1wbqBusGBwDXBtYG6gYHANYG7AbqBgcA1gbYBuwGBwDZBusG7QYHANkG1wbrBgcA2gbtBu4GBwDaBtkG7QYHANsG7gbvBgcA2wbaBu4GBwDdBvAG8QYHAN0G3AbwBgcA1AbxBugGBwDUBt0G8QYHAN4G6QbyBgcA3gbVBukGBwDSBvIG5gYHANIG3gbyBgcA3wbvBvMGBwDfBtsG7wYHAOAG8wb0BgcA4AbfBvMGBwDhBvQG9QYHAOEG4Ab0BgcA3Ab1BvAGBwDcBuEG9QYHAPYG7AbYBgcA9gb3BuwGBwD4BtAG5AYHAPgG+QbQBgcA+gbYBoAGBwD6BvYG2AYHAPkGfAbQBgcA+Qb7BnwGBwD8BsMGxQYHAPwG/QbDBgcA/QbNBsMGBwD9Bv4GzQYHAP8GxQaiBgcA/wb8BsUGBwAAB78GwQYHAAAHAQe/BgcAAQfMBr8GBwABBwIHzAYHAP4GwQbNBgcA/gYAB8EGBwADB7EGswYHAAMHBAexBgcABAfLBrEGBwAEBwUHywYHAAIHswbMBgcAAgcDB7MGBwAGB60GrwYHAAYHBwetBgcABweYBq0GBwAHBwgHmAYHAAUHrwbLBgcABQcGB68GBwAJB5AGqgYHAAkHCgeQBgcACweqBn4GBwALBwkHqgYHAAwHogajBgcADAf/BqIGBwANB6MGkQYHAA0HDAejBgcACAd/BpgGBwAIBw4HfwYHAAoHkQaQBgcACgcNB5EGBwAPB4AGewYHAA8H+gaABgcADgd6Bn8GBwAOBxAHegYHABEHfgZ9BgcAEQcLB34GBwD7Bn0GfAYHAPsGEQd9BgcAEAd7BnoGBwAQBw8HewYHABIHEwcUBwcAEgcVBxMHBwAWBxcHGAcHABYHGQcXBwcAGgcbBxwHBwAaBx0HGwcHAB4HHwcgBwcAHgchBx8HBwAgByIHIwcHACAHHwciBwcAJAcdBxoHBwAkByUHHQcHABwHJgcnBwcAHAcbByYHBwAcBygHGgcHABwHKQcoBwcAIAcqBx4HBwAgBysHKgcHACMHKwcgBwcAIwcsBysHBwAaBy0HJAcHABoHKActBwcAJwcpBxwHBwAnBy4HKQcHAB0HLwcbBwcAHQcwBy8HBwAYBzAHFgcHABgHLwcwBwcAIQcxBx8HBwAhBzIHMQcHABMHMgcUBwcAEwcxBzIHBwAfBzMHIgcHAB8HMQczBwcAFQcxBxMHBwAVBzMHMQcHACUHMAcdBwcAJQc0BzAHBwAWBzQHGQcHABYHMAc0BwcAGwc1ByYHBwAbBy8HNQcHABcHLwcYBwcAFwc1By8HBwA2BzcHOAcHADYHOQc3BwcAOgc7BzwHBwA6Bz0HOwcHADsHPgc8BwcAOwc/Bz4HBwBABz0HOgcHAEAHQQc9BwcANwdABzgHBwA3B0EHQAcHABkHQgcXBwcAGQdDB0IHBwAkB0QHJQcHACQHRQdEBwcALQdFByQHBwAtB0YHRQcHACUHRwc0BwcAJQdEB0cHBwA0B0MHGQcHADQHRwdDBwcASAdJB0oHBwBIB0sHSQcHADcHSQdLBwcANwc5B0kHBwBMB00HTgcHAEwHTwdNBwcAPQdPBzsHBwA9B00HTwcHAFAHTwdMBwcAUAdRB08HBwA7B1EHPwcHADsHTwdRBwcATgdSB1MHBwBOB00HUgcHAD0HUgdNBwcAPQdBB1IHBwBTB0sHSAcHAFMHUgdLBwcANwdSB0EHBwA3B0sHUgcHADgHVAc2BwcAOAdVB1QHBwAVB1QHVQcHABUHEgdUBwcAOgdWB1cHBwA6BzwHVgcHACIHVgcjBwcAIgdXB1YHBwA+B1YHPAcHAD4HWAdWBwcAIwdYBywHBwAjB1YHWAcHAFcHQAc6BwcAVwdZB0AHBwAiB1kHVwcHACIHMwdZBwcAQAdVBzgHBwBAB1kHVQcHABUHWQczBwcAFQdVB1kHBwBaB1sHXAcHAFoHXQdbBwcAXgdfB2AHBwBeB2EHXwcHAEUHYgdEBwcARQdjB2IHBwBjB2QHYgcHAGMHZQdkBwcARAdmB0cHBwBEB2IHZgcHAGIHZwdmBwcAYgdkB2cHBwBHB2gHQwcHAEcHZgdoBwcAZgdpB2gHBwBmB2cHaQcHAEMHagdCBwcAQwdoB2oHBwBoB2sHagcHAGgHaQdrBwcAbAdtB24HBwBsB28HbQcHAHAHcQdyBwcAcAdzB3EHBwBlB3QHZAcHAGUHdQd0BwcAdQdOB3QHBwB1B0wHTgcHAGQHdgdnBwcAZAd0B3YHBwB0B1MHdgcHAHQHTgdTBwcAZwd3B2kHBwBnB3YHdwcHAHYHSAd3BwcAdgdTB0gHBwBpB3gHawcHAGkHdwd4BwcAdwdKB3gHBwB3B0gHSgcHAFwHYwdFBwcAXAdbB2MHBwBjB10HeQcHAGMHWwddBwcAWgdFB0YHBwBaB1wHRQcHAGAHZQdjBwcAYAdfB2UHBwBlB2EHegcHAGUHXwdhBwcAXgdjB3kHBwBeB2AHYwcHAG4HdQdlBwcAbgdtB3UHBwB1B28HewcHAHUHbQdvBwcAbAdlB3oHBwBsB24HZQcHAHIHTAd1BwcAcgdxB0wHBwBMB3MHUAcHAEwHcQdzBwcAcAd1B3sHBwBwB3IHdQcHAHwHHgd9BwcAfAchBx4HBwAeB34HfQcHAB4HKgd+BwcAMgd8B38HBwAyByEHfAcHAIAHFAeBBwcAgAcSBxQHBwCBBzIHfwcHAIEHFAcyBwcAggc2B4MHBwCCBzkHNgcHAIQHJgeFBwcAhAcnByYHBwCGBycHhAcHAIYHLgcnBwcAhQc1B4cHBwCFByYHNQcHAIcHFweIBwcAhwc1BxcHBwCIB0IHiQcHAIgHFwdCBwcAigdJB4sHBwCKB0oHSQcHAIsHOQeCBwcAiwdJBzkHBwCDB1QHjAcHAIMHNgdUBwcAjAcSB4AHBwCMB1QHEgcHAIkHageNBwcAiQdCB2oHBwCNB2sHjgcHAI0HagdrBwcAjgd4B48HBwCOB2sHeAcHAI8HSgeKBwcAjwd4B0oHBwCQB30HkQcHAJAHfAd9BwcAfQeSB5EHBwB9B34HkgcHAH8HkAeTBwcAfwd8B5AHBwCUB4EHlQcHAJQHgAeBBwcAlQd/B5MHBwCVB4EHfwcHAJYHgweXBwcAlgeCB4MHBwCYB4UHmQcHAJgHhAeFBwcAmgeEB5gHBwCaB4YHhAcHAJkHhwebBwcAmQeFB4cHBwCbB4gHnAcHAJsHhweIBwcAnAeJB50HBwCcB4gHiQcHAJ4HiwefBwcAngeKB4sHBwCfB4IHlgcHAJ8HiweCBwcAlweMB6AHBwCXB4MHjAcHAKAHgAeUBwcAoAeMB4AHBwCdB40HoQcHAJ0HiQeNBwcAoQeOB6IHBwChB40HjgcHAKIHjwejBwcAogeOB48HBwCjB4oHngcHAKMHjweKBwcAmgf2BoYHBwCaB/cG9gYHAH4H+AaSBwcAfgf5BvgGBwCGB/oGLgcHAIYH9gb6BgcAKgf5Bn4HBwAqB/sG+QYHAHAH/AZzBwcAcAf9BvwGBwB7B/0GcAcHAHsH/gb9BgcAcwf/BlAHBwBzB/wG/wYHAGwHAAdvBwcAbAcBBwAHBwB6BwEHbAcHAHoHAgcBBwcAbwf+BnsHBwBvBwAH/gYHAF4HAwdhBwcAXgcEBwMHBwB5BwQHXgcHAHkHBQcEBwcAYQcCB3oHBwBhBwMHAgcHAFoHBgddBwcAWgcHBwYHBwBGBwcHWgcHAEYHCAcHBwcAXQcFB3kHBwBdBwYHBQcHAD4HCQdYBwcAPgcKBwkHBwBYBwsHLAcHAFgHCQcLBwcAUAcMB1EHBwBQB/8GDAcHAFEHDQc/BwcAUQcMBw0HBwAtBwgHRgcHAC0HDgcIBwcAPwcKBz4HBwA/Bw0HCgcHAC4HDwcpBwcALgf6Bg8HBwAoBw4HLQcHACgHEAcOBwcALAcRBysHBwAsBwsHEQcHACsH+wYqBwcAKwcRB/sGBwApBxAHKAcHACkHDwcQBwcApAelB6YHBwCkB6cHpQcHAKgHqQeqBwcAqAerB6kHBwCsB60HrgcHAKwHrwetBwcAsAexB7IHBwCwB7MHsQcHALIHtAe1BwcAsgexB7QHBwC2B68HrAcHALYHtwevBwcArge4B7kHBwCuB60HuAcHAK4HugesBwcArge7B7oHBwCyB7wHsAcHALIHvQe8BwcAtQe9B7IHBwC1B74HvQcHAKwHvwe2BwcArAe6B78HBwC5B7sHrgcHALkHwAe7BwcArwfBB60HBwCvB8IHwQcHAKoHwgeoBwcAqgfBB8IHBwCzB8MHsQcHALMHxAfDBwcApQfEB6YHBwClB8MHxAcHALEHxQe0BwcAsQfDB8UHBwCnB8MHpQcHAKcHxQfDBwcAtwfCB68HBwC3B8YHwgcHAKgHxgerBwcAqAfCB8YHBwCtB8cHuAcHAK0HwQfHBwcAqQfBB6oHBwCpB8cHwQcHAMgHyQfKBwcAyAfLB8kHBwDMB80HzgcHAMwHzwfNBwcAzQfQB84HBwDNB9EH0AcHANIHzwfMBwcA0gfTB88HBwDJB9IHygcHAMkH0wfSBwcAqwfUB6kHBwCrB9UH1AcHALYH1ge3BwcAtgfXB9YHBwC/B9cHtgcHAL8H2AfXBwcAtwfZB8YHBwC3B9YH2QcHAMYH1QerBwcAxgfZB9UHBwDaB9sH3AcHANoH3QfbBwcAyQfbB90HBwDJB8sH2wcHAN4H3wfgBwcA3gfhB98HBwDPB+EHzQcHAM8H3wfhBwcA4gfhB94HBwDiB+MH4QcHAM0H4wfRBwcAzQfhB+MHBwDgB+QH5QcHAOAH3wfkBwcAzwfkB98HBwDPB9MH5AcHAOUH3QfaBwcA5QfkB90HBwDJB+QH0wcHAMkH3QfkBwcAygfmB8gHBwDKB+cH5gcHAKcH5gfnBwcApwekB+YHBwDMB+gH6QcHAMwHzgfoBwcAtAfoB7UHBwC0B+kH6AcHANAH6AfOBwcA0AfqB+gHBwC1B+oHvgcHALUH6AfqBwcA6QfSB8wHBwDpB+sH0gcHALQH6wfpBwcAtAfFB+sHBwDSB+cHygcHANIH6wfnBwcApwfrB8UHBwCnB+cH6wcHAOwH7QfuBwcA7AfvB+0HBwDwB/EH8gcHAPAH8wfxBwcA1wf0B9YHBwDXB/UH9AcHAPUH9gf0BwcA9Qf3B/YHBwDWB/gH2QcHANYH9Af4BwcA9Af5B/gHBwD0B/YH+QcHANkH+gfVBwcA2Qf4B/oHBwD4B/sH+gcHAPgH+Qf7BwcA1Qf8B9QHBwDVB/oH/AcHAPoH/Qf8BwcA+gf7B/0HBwD+B/8HAAgHAP4HAQj/BwcAAggDCAQIBwACCAUIAwgHAPcHBgj2BwcA9wcHCAYIBwAHCOAHBggHAAcI3gfgBwcA9gcICPkHBwD2BwYICAgHAAYI5QcICAcABgjgB+UHBwD5BwkI+wcHAPkHCAgJCAcACAjaBwkIBwAICOUH2gcHAPsHCgj9BwcA+wcJCAoIBwAJCNwHCggHAAkI2gfcBwcA7gf1B9cHBwDuB+0H9QcHAPUH7wcLCAcA9QftB+8HBwDsB9cH2AcHAOwH7gfXBwcA8gf3B/UHBwDyB/EH9wcHAPcH8wcMCAcA9wfxB/MHBwDwB/UHCwgHAPAH8gf1BwcAAAgHCPcHBwAACP8HBwgHAAcIAQgNCAcABwj/BwEIBwD+B/cHDAgHAP4HAAj3BwcABAjeBwcIBwAECAMI3gcHAN4HBQjiBwcA3gcDCAUIBwACCAcIDQgHAAIIBAgHCAcADgiwBw8IBwAOCLMHsAcHALAHEAgPCAcAsAe8BxAIBwDEBw4IEQgHAMQHswcOCAcAEgimBxMIBwASCKQHpgcHABMIxAcRCAcAEwimB8QHBwAUCMgHFQgHABQIywfIBwcAFgi4BxcIBwAWCLkHuAcHABgIuQcWCAcAGAjAB7kHBwAXCMcHGQgHABcIuAfHBwcAGQipBxoIBwAZCMcHqQcHABoI1AcbCAcAGgipB9QHBwAcCNsHHQgHABwI3AfbBwcAHQjLBxQIBwAdCNsHywcHABUI5gceCAcAFQjIB+YHBwAeCKQHEggHAB4I5gekBwcAGwj8Bx8IBwAbCNQH/AcHAB8I/QcgCAcAHwj8B/0HBwAgCAoIIQgHACAI/QcKCAcAIQjcBxwIBwAhCAoI3AcHACIIDwgjCAcAIggOCA8IBwAPCCQIIwgHAA8IEAgkCAcAEQgiCCUIBwARCA4IIggHACYIEwgnCAcAJggSCBMIBwAnCBEIJQgHACcIEwgRCAcAKAgVCCkIBwAoCBQIFQgHACoIFwgrCAcAKggWCBcIBwAsCBYIKggHACwIGAgWCAcAKwgZCC0IBwArCBcIGQgHAC0IGgguCAcALQgZCBoIBwAuCBsILwgHAC4IGggbCAcAMAgdCDEIBwAwCBwIHQgHADEIFAgoCAcAMQgdCBQIBwApCB4IMggHACkIFQgeCAcAMggSCCYIBwAyCB4IEggHAC8IHwgzCAcALwgbCB8IBwAzCCAINAgHADMIHwggCAcANAghCDUIBwA0CCAIIQgHADUIHAgwCAcANQghCBwIBwAsCDYIGAgHACwINwg2CAcAEAg4CCQIBwAQCDkIOAgHABgIOgjABwcAGAg2CDoIBwC8BzkIEAgHALwHOwg5CAcAAgg8CAUIBwACCD0IPAgHAA0IPQgCCAcADQg+CD0IBwAFCD8I4gcHAAUIPAg/CAcA/gdACAEIBwD+B0EIQAgHAAwIQQj+BwcADAhCCEEIBwABCD4IDQgHAAEIQAg+CAcA8AdDCPMHBwDwB0QIQwgHAAsIRAjwBwcACwhFCEQIBwDzB0IIDAgHAPMHQwhCCAcA7AdGCO8HBwDsB0cIRggHANgHRwjsBwcA2AdICEcIBwDvB0UICwgHAO8HRghFCAcA0AdJCOoHBwDQB0oISQgHAOoHSwi+BwcA6gdJCEsIBwDiB0wI4wcHAOIHPwhMCAcA4wdNCNEHBwDjB0wITQgHAL8HSAjYBwcAvwdOCEgIBwDRB0oI0AcHANEHTQhKCAcAwAdPCLsHBwDABzoITwgHALoHTgi/BwcAugdQCE4IBwC+B1EIvQcHAL4HSwhRCAcAvQc7CLwHBwC9B1EIOwgHALsHUAi6BwcAuwdPCFAIBwBSCFMIVAgHAFIIVQhTCAcAVghXCFgIBwBWCFkIVwgHAFoIWwhcCAcAWghdCFsIBwBeCF8IYAgHAF4IYQhfCAcAYghgCGMIBwBiCF4IYAgHAF0IZAhbCAcAXQhlCGQIBwBmCFwIZwgHAGYIWghcCAcAaAhcCFsIBwBoCGkIXAgHAGoIYAhfCAcAaghrCGAIBwBrCGMIYAgHAGsIbAhjCAcAbQhbCGQIBwBtCGgIWwgHAGkIZwhcCAcAaQhuCGcIBwBvCF0IWggHAG8IcAhdCAcAcAhYCFcIBwBwCG8IWAgHAHEIYQheCAcAcQhyCGEIBwByCFIIVAgHAHIIcQhSCAcAcwheCGIIBwBzCHEIXggHAHEIVQhSCAcAcQhzCFUIBwBwCGUIXQgHAHAIdAhlCAcAdAhXCFkIBwB0CHAIVwgHAHUIWghmCAcAdQhvCFoIBwBvCFYIWAgHAG8IdQhWCAcAdgh3CHgIBwB2CHkIdwgHAHoIewh8CAcAegh9CHsIBwB+CHoIfAgHAH4Ifwh6CAcAfQiACHsIBwB9CIEIgAgHAIAIdgh4CAcAgAiBCHYIBwCCCFkIVggHAIIIgwhZCAcAhAhkCGUIBwCECIUIZAgHAIUIbQhkCAcAhQiGCG0IBwCHCGUIdAgHAIcIhAhlCAcAgwh0CFkIBwCDCIcIdAgHAIgIiQiKCAcAiAiLCIkIBwCICHYIiwgHAIgIeQh2CAcAjAiNCI4IBwCMCI8IjQgHAI8IfQh6CAcAjwiMCH0IBwCPCJAIjQgHAI8IkQiQCAcAkQh6CH8IBwCRCI8IeggHAJIIjgiTCAcAkgiMCI4IBwCSCH0IjAgHAJIIgQh9CAcAiwiTCIkIBwCLCJIIkwgHAJIIdgiBCAcAkgiLCHYIBwCUCHgIdwgHAJQIlQh4CAcAlAhVCJUIBwCUCFMIVQgHAJYIewiXCAcAlgh8CHsIBwCWCGIIYwgHAJYIlwhiCAcAlgh+CHwIBwCWCJgIfggHAJgIYwhsCAcAmAiWCGMIBwCACJcIewgHAIAImQiXCAcAmQhiCJcIBwCZCHMIYggHAJUIgAh4CAcAlQiZCIAIBwCZCFUIcwgHAJkIlQhVCAcAmgibCJwIBwCaCJ0ImwgHAJ4InwigCAcAngihCJ8IBwCiCIUIhAgHAKIIowiFCAcApAijCKIIBwCkCKUIowgHAKYIhAiHCAcApgiiCIQIBwCnCKIIpggHAKcIpAiiCAcAqAiHCIMIBwCoCKYIhwgHAKkIpgioCAcAqQinCKYIBwCqCIMIgggHAKoIqAiDCAcAqwioCKoIBwCrCKkIqAgHAKwIrQiuCAcArAivCK0IBwCwCLEIsggHALAIswixCAcAtAilCKQIBwC0CLUIpQgHAI4ItQi0CAcAjgiNCLUIBwC2CKQIpwgHALYItAikCAcAkwi0CLYIBwCTCI4ItAgHALcIpwipCAcAtwi2CKcIBwCJCLYItwgHAIkIkwi2CAcAuAipCKsIBwC4CLcIqQgHAIoItwi4CAcAigiJCLcIBwCjCJwIhQgHAKMImgicCAcAnQijCLkIBwCdCJoIowgHAIUImwiGCAcAhQicCJsIBwClCKAIowgHAKUIngigCAcAoQilCLoIBwChCJ4IpQgHAKMInwi5CAcAowigCJ8IBwC1CK4IpQgHALUIrAiuCAcArwi1CLsIBwCvCKwItQgHAKUIrQi6CAcApQiuCK0IBwCNCLIItQgHAI0IsAiyCAcAswiNCJAIBwCzCLAIjQgHALUIsQi7CAcAtQiyCLEIBwBfCLwIvQgHAF8IYQi8CAcAvghfCL0IBwC+CGoIXwgHALwIcgi/CAcAvAhhCHIIBwBUCMAIwQgHAFQIUwjACAcAcgjBCL8IBwByCFQIwQgHAHcIwgjDCAcAdwh5CMIIBwBmCMQIxQgHAGYIZwjECAcAZwjGCMQIBwBnCG4IxggHAHUIxQjHCAcAdQhmCMUIBwBWCMcIyAgHAFYIdQjHCAcAggjICMkIBwCCCFYIyAgHAIgIygjLCAcAiAiKCMoIBwB5CMsIwggHAHkIiAjLCAcAlAjDCMwIBwCUCHcIwwgHAFMIzAjACAcAUwiUCMwIBwCqCMkIzQgHAKoIggjJCAcAqwjNCM4IBwCrCKoIzQgHALgIzgjPCAcAuAirCM4IBwCKCM8IyggHAIoIuAjPCAcAvQjQCNEIBwC9CLwI0AgHANIIvQjRCAcA0gi+CL0IBwDQCL8I0wgHANAIvAi/CAcAwQjUCNUIBwDBCMAI1AgHAL8I1QjTCAcAvwjBCNUIBwDDCNYI1wgHAMMIwgjWCAcAxQjYCNkIBwDFCMQI2AgHAMQI2gjYCAcAxAjGCNoIBwDHCNkI2wgHAMcIxQjZCAcAyAjbCNwIBwDICMcI2wgHAMkI3AjdCAcAyQjICNwIBwDLCN4I3wgHAMsIygjeCAcAwgjfCNYIBwDCCMsI3wgHAMwI1wjgCAcAzAjDCNcIBwDACOAI1AgHAMAIzAjgCAcAzQjdCOEIBwDNCMkI3QgHAM4I4QjiCAcAzgjNCOEIBwDPCOII4wgHAM8IzgjiCAcAygjjCN4IBwDKCM8I4wgHADYI2gjGCAcANgg3CNoIBwA4CL4I0ggHADgIOQi+CAcAOgjGCG4IBwA6CDYIxggHADkIagi+CAcAOQg7CGoIBwA8CLEIswgHADwIPQixCAcAPQi7CLEIBwA9CD4IuwgHAD8IswiQCAcAPwg8CLMIBwBACK0IrwgHAEAIQQitCAcAQQi6CK0IBwBBCEIIuggHAD4Irwi7CAcAPghACK8IBwBDCJ8IoQgHAEMIRAifCAcARAi5CJ8IBwBECEUIuQgHAEIIoQi6CAcAQghDCKEIBwBGCJsInQgHAEYIRwibCAcARwiGCJsIBwBHCEgIhggHAEUInQi5CAcARQhGCJ0IBwBJCH4ImAgHAEkISgh+CAcASwiYCGwIBwBLCEkImAgHAEwIkAiRCAcATAg/CJAIBwBNCJEIfwgHAE0ITAiRCAcASAhtCIYIBwBICE4IbQgHAEoIfwh+CAcASghNCH8IBwBPCG4IaQgHAE8IOghuCAcATghoCG0IBwBOCFAIaAgHAFEIbAhrCAcAUQhLCGwIBwA7CGsIaggHADsIUQhrCAcAUAhpCGgIBwBQCE8IaQgHAOQI5QjmCAcA5AjnCOUIBwDoCOkI6ggHAOgI6wjpCAcA7AjtCO4IBwDsCO8I7QgHAO8I6gjpCAcA7wjsCOoIBwDwCPEI8ggHAPAI8wjxCAcA8wjmCOUIBwDzCPAI5ggHAPMI9AjxCAcA8wj1CPQIBwD1COUI5wgHAPUI8wjlCAcA9gjyCPcIBwD2CPAI8ggHAPAI5AjmCAcA8Aj2COQIBwD4CO4I+QgHAPgI7AjuCAcA7AjoCOoIBwDsCPgI6AgHAO8I+gjtCAcA7wj7CPoIBwD7COkI6wgHAPsI7wjpCAcA/AjrCOgIBwD8CP0I6wgHAP4I+Aj5CAcA/gj/CPgIBwD/COgI+AgHAP8I/AjoCAcAAAn6CPsIBwAACQEJ+ggHAP0I+wjrCAcA/QgACfsIBwACCf0I/AgHAAIJAwn9CAcABAn/CP4IBwAECQUJ/wgHAAUJ/Aj/CAcABQkCCfwIBwAGCQEJAAkHAAYJBwkBCQcAAwkACf0IBwADCQYJAAkHAAgJAwkCCQcACAkJCQMJBwAICQoJCQkHAAgJCwkKCQcADAkFCQQJBwAMCQ0JBQkHAAwJDgkNCQcADAkPCQ4JBwANCQIJBQkHAA0JCAkCCQcACAkOCQsJBwAICQ0JDgkHABAJBwkGCQcAEAkRCQcJBwARCRIJEwkHABEJEAkSCQcACQkGCQMJBwAJCRAJBgkHABAJCgkSCQcAEAkJCQoJBwAUCRUJFgkHABQJFwkVCQcAFAnkCBcJBwAUCecI5AgHABgJGQkaCQcAGAkbCRkJBwAYCfUIGwkHABgJ9Aj1CAcAGQkUCRYJBwAZCRsJFAkHABQJ9QjnCAcAFAkbCfUIBwAcCR0JHgkHABwJHwkdCQcAHQn2CPcIBwAdCR8J9ggHABcJHAkVCQcAFwkfCRwJBwAfCeQI9ggHAB8JFwnkCAcAIAkOCQ8JBwAgCSEJDgkHABoJIQkgCQcAGgkZCSEJBwAhCQsJDgkHACEJIgkLCQcAGQkiCSEJBwAZCRYJIgkHACIJCgkLCQcAIgkjCQoJBwAWCSMJIgkHABYJFQkjCQcAIwkSCQoJBwAjCSQJEgkHABUJJAkjCQcAFQkcCSQJBwAkCRMJEgkHACQJJQkTCQcAHAklCSQJBwAcCR4JJQkHACYJ+QjuCAcAJgknCfkIBwAoCe4I7QgHACgJJgnuCAcAJwn+CPkIBwAnCSkJ/ggHACoJAQkHCQcAKgkrCQEJBwArCfoIAQkHACsJLAn6CAcAKQkECf4IBwApCS0JBAkHAC0JDAkECQcALQkuCQwJBwAuCQ8JDAkHAC4JLwkPCQcALwkgCQ8JBwAvCTAJIAkHADAJGgkgCQcAMAkxCRoJBwAxCRgJGgkHADEJMgkYCQcAMgn0CBgJBwAyCTMJ9AgHADMJ8Qj0CAcAMwk0CfEIBwA0CfII8QgHADQJNQnyCAcANQn3CPIIBwA1CTYJ9wgHADYJHQn3CAcANgk3CR0JBwA3CR4JHQkHADcJOAkeCQcAOAklCR4JBwA4CTkJJQkHADkJEwklCQcAOQk6CRMJBwA6CREJEwkHADoJOwkRCQcAOwkHCREJBwA7CSoJBwkHACwJ7Qj6CAcALAkoCe0IBwA8CT0JPgkHADwJPwk9CQcAQAlBCUIJBwBACUMJQQkHAEQJRQlGCQcARAlHCUUJBwBCCUcJQAkHAEIJRQlHCQcASAlJCUoJBwBICUsJSQkHAD4JSwk8CQcAPglJCUsJBwBMCUsJSAkHAEwJTQlLCQcAPAlNCT8JBwA8CUsJTQkHAEoJTglPCQcASglJCU4JBwA9CUkJPgkHAD0JTglJCQcARglQCVEJBwBGCUUJUAkHAEEJRQlCCQcAQQlQCUUJBwBSCUcJRAkHAFIJUwlHCQcAQAlTCUMJBwBACUcJUwkHAEMJVAlBCQcAQwlVCVQJBwBQCVYJUQkHAFAJVwlWCQcAQQlXCVAJBwBBCVQJVwkHAFIJWAlTCQcAUglZCVgJBwBTCVUJQwkHAFMJWAlVCQcAVQlaCVQJBwBVCVsJWgkHAFcJXAlWCQcAVwldCVwJBwBUCV0JVwkHAFQJWgldCQcAWQleCVgJBwBZCV8JXgkHAFgJWwlVCQcAWAleCVsJBwBbCWAJWgkHAFsJYQlgCQcAYglgCWEJBwBiCWMJYAkHAF0JZAlcCQcAXQllCWQJBwBmCWQJZQkHAGYJZwlkCQcAWgllCV0JBwBaCWAJZQkHAGYJYAljCQcAZgllCWAJBwBfCWgJXgkHAF8JaQloCQcAaglpCWsJBwBqCWgJaQkHAF4JYQlbCQcAXgloCWEJBwBiCWgJagkHAGIJYQloCQcAbAltCW4JBwBsCW8JbQkHAD0JbQlvCQcAPQk/CW0JBwBwCXEJcgkHAHAJcwlxCQcATQlxCXMJBwBNCUwJcQkHAG0JcAluCQcAbQlzCXAJBwBNCW0JPwkHAE0JcwltCQcAdAl1CXYJBwB0CXcJdQkHAE4JdAlPCQcATgl3CXQJBwB1CW8JbAkHAHUJdwlvCQcAPQl3CU4JBwA9CW8JdwkHAGYJeAlnCQcAZgl5CXgJBwB5CXIJeAkHAHkJcAlyCQcAYwl5CWYJBwBjCXoJeQkHAHoJcAl5CQcAegluCXAJBwBiCXoJYwkHAGIJewl6CQcAewluCXoJBwB7CWwJbgkHAGoJewliCQcAagl8CXsJBwB8CWwJewkHAHwJdQlsCQcAawl8CWoJBwBrCX0JfAkHAH0JdQl8CQcAfQl2CXUJBwBRCSYJRgkHAFEJJwkmCQcARgkoCUQJBwBGCSYJKAkHAFYJJwlRCQcAVgkpCScJBwBZCSoJXwkHAFkJKwkqCQcAUgkrCVkJBwBSCSwJKwkHAFwJKQlWCQcAXAktCSkJBwBkCS0JXAkHAGQJLgktCQcAZwkuCWQJBwBnCS8JLgkHAHgJLwlnCQcAeAkwCS8JBwByCTAJeAkHAHIJMQkwCQcAcQkxCXIJBwBxCTIJMQkHAEwJMglxCQcATAkzCTIJBwBICTMJTAkHAEgJNAkzCQcASgk0CUgJBwBKCTUJNAkHAE8JNQlKCQcATwk2CTUJBwB0CTYJTwkHAHQJNwk2CQcAdgk3CXQJBwB2CTgJNwkHAH0JOAl2CQcAfQk5CTgJBwBrCTkJfQkHAGsJOgk5CQcAaQk6CWsJBwBpCTsJOgkHAF8JOwlpCQcAXwkqCTsJBwBECSwJUgkHAEQJKAksCQcAfgl/CYAJBwB+CYEJfwkHAIIJgwmECQcAggmFCYMJBwCGCYcJiAkHAIYJiQmHCQcAgAmKCX4JBwCACYsJigkHAH4JjAmBCQcAfgmKCYwJBwCNCYAJfwkHAI0JiwmACQcAjgmPCZAJBwCOCZEJjwkHAIQJkgmCCQcAhAmTCZIJBwCDCZMJhAkHAIMJlAmTCQcAggmVCYUJBwCCCZIJlQkHAJYJiAmXCQcAlgmGCYgJBwCBCZcJfwkHAIEJlgmXCQcAjgmYCZkJBwCOCZAJmAkHAIUJmAmDCQcAhQmZCZgJBwCGCZoJiQkHAIYJlgmaCQcAjAmWCYEJBwCMCZoJlgkHAJsJiAmHCQcAmwmXCYgJBwB/CZsJjQkHAH8JlwmbCQcAnAmQCY8JBwCcCZgJkAkHAIMJnAmUCQcAgwmYCZwJBwCdCYUJlQkHAJ0JmQmFCQcAjgmdCZEJBwCOCZkJnQkHAJ4JjwmRCQcAngmfCY8JBwCJCZ4JhwkHAIkJnwmeCQcAkwmgCZIJBwCTCaEJoAkHAKEJiwmgCQcAoQmKCYsJBwCUCaEJkwkHAJQJogmhCQcAogmKCaEJBwCiCYwJigkHAKMJkgmgCQcAowmVCZIJBwCNCaAJiwkHAI0JowmgCQcApAmMCaIJBwCkCZoJjAkHAJwJogmUCQcAnAmkCaIJBwCkCYkJmgkHAKQJnwmJCQcAjwmkCZwJBwCPCZ8JpAkHAIcJpQmbCQcAhwmeCaUJBwCeCZ0JpQkHAJ4JkQmdCQcAmwmjCY0JBwCbCaUJowkHAKUJlQmjCQcApQmdCZUJBwCmCacJqAkHAKYJqQmnCQcAqgmrCawJBwCqCa0JqwkHAK4JrwmwCQcArgmxCa8JBwCsCbEJqgkHAKwJrwmxCQcAsgmzCbQJBwCyCbUJswkHAKgJtQmmCQcAqAmzCbUJBwC2CbUJsgkHALYJtwm1CQcApgm3CakJBwCmCbUJtwkHALQJuAm5CQcAtAmzCbgJBwCnCbMJqAkHAKcJuAmzCQcAsAm6CbsJBwCwCa8JugkHAKsJrwmsCQcAqwm6Ca8JBwC8CbEJrgkHALwJvQmxCQcAqgm9Ca0JBwCqCbEJvQkHAK0JvgmrCQcArQm/Cb4JBwC6CcAJuwkHALoJwQnACQcAqwnBCboJBwCrCb4JwQkHALwJwgm9CQcAvAnDCcIJBwC9Cb8JrQkHAL0Jwgm/CQcAvwnECb4JBwC/CcUJxAkHAMEJxgnACQcAwQnHCcYJBwC+CccJwQkHAL4JxAnHCQcAwwnICcIJBwDDCckJyAkHAMIJxQm/CQcAwgnICcUJBwDFCcoJxAkHAMUJywnKCQcAzAnKCcsJBwDMCc0JygkHAMcJzgnGCQcAxwnPCc4JBwDQCc4JzwkHANAJ0QnOCQcAxAnPCccJBwDECcoJzwkHANAJygnNCQcA0AnPCcoJBwDJCdIJyAkHAMkJ0wnSCQcA1AnTCdUJBwDUCdIJ0wkHAMgJywnFCQcAyAnSCcsJBwDMCdIJ1AkHAMwJywnSCQcA1gnXCdgJBwDWCdkJ1wkHAKcJ1wnZCQcApwmpCdcJBwDaCdsJ3AkHANoJ3QnbCQcAtwnbCd0JBwC3CbYJ2wkHANcJ2gnYCQcA1wndCdoJBwC3CdcJqQkHALcJ3QnXCQcA3gnfCeAJBwDeCeEJ3wkHALgJ3gm5CQcAuAnhCd4JBwDfCdkJ1gkHAN8J4QnZCQcApwnhCbgJBwCnCdkJ4QkHANAJ4gnRCQcA0AnjCeIJBwDjCdwJ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TwoHAFAKUQpSCgcAUApTClEKBwBUCkYKRQoHAFQKVQpGCgcAVQpECkYKBwBVClYKRAoHAFcKRQpHCgcAVwpUCkUKBwBKClgKWQoHAEoKSQpYCgcAWQpDCkAKBwBZClgKQwoHAFoKUQpbCgcAWgpSClEKBwBaCkcKRAoHAFoKWwpHCgcAXApJCksKBwBcClgKSQoHAFgKTgpDCgcAWApcCk4KBwBKCl0KSAoHAEoKWQpdCgcAXQpACk8KBwBdClkKQAoHAFIKXgpQCgcAUgpaCl4KBwBeCkQKVgoHAF4KWgpECgcARwpfClcKBwBHClsKXwoHAF8KUQpTCgcAXwpbClEKBwBQCmAKUwoHAFAKYQpgCgcAYApLCkgKBwBgCmEKSwoHAGIKVQpUCgcAYgpjClUKBwBNCmMKYgoHAE0KTApjCgcAYwpWClUKBwBjCmQKVgoHAEwKZApjCgcATApOCmQKBwBUCmUKYgoHAFQKVwplCgcAYgpPCk0KBwBiCmUKTwoHAE4KZgpkCgcATgpcCmYKBwBkCl4KVgoHAGQKZgpeCgcASwpmClwKBwBLCmEKZgoHAGYKUApeCgcAZgphClAKBwBnCkgKXQoHAGcKYApICgcAXwpgCmcKBwBfClMKYAoHAGUKXQpPCgcAZQpnCl0KBwBXCmcKZQoHAFcKXwpnCgcAaAppCmoKBwBoCmsKaQoHAGwKbQpuCgcAbApvCm0KBwBwCnEKcgoHAHAKcwpxCgcAagp0CmgKBwBqCnUKdAoHAGgKdgprCgcAaAp0CnYKBwB3CmoKaQoHAHcKdQpqCgcAeAp5CnoKBwB4CnsKeQoHAG4KfApsCgcAbgp9CnwKBwBtCn0KbgoHAG0Kfgp9CgcAbAp/Cm8KBwBsCnwKfwoHAIAKcgqBCgcAgApwCnIKBwBrCoEKaQoHAGsKgAqBCgcAeAqCCoMKBwB4CnoKggoHAG8KggptCgcAbwqDCoIKBwBwCoQKcwoHAHAKgAqECgcAdgqACmsKBwB2CoQKgAoHAIUKcgpxCgcAhQqBCnIKBwBpCoUKdwoHAGkKgQqFCgcAhgp6CnkKBwCGCoIKegoHAG0Khgp+CgcAbQqCCoYKBwCHCm8KfwoHAIcKgwpvCgcAeAqHCnsKBwB4CoMKhwoHAIgKeQp7CgcAiAqJCnkKBwBzCogKcQoHAHMKiQqICgcA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MgsHAEYLJgs6CwcARgsyCyYLBwBDCzMLRwsHAEMLLwszCwcARws0C0gLBwBHCzMLNAsHAEgLNQtJCwcASAs0CzULBwBJCzALRAsHAEkLNQswCwcAQAtKCywLBwBAC0sLSgsHACQLTAs4CwcAJAtNC0wLBwAsC04L1AoHACwLSgtOCwcA0ApNCyQLBwDQCk8LTQsHABYLUAsZCwcAFgtRC1ALBwAhC1ELFgsHACELUgtRCwcAGQtTC/YKBwAZC1ALUwsHABILVAsVCwcAEgtVC1QLBwAgC1ULEgsHACALVgtVCwcAFQtSCyELBwAVC1QLUgsHAAQLVwsHCwcABAtYC1cLBwAfC1gLBAsHAB8LWQtYCwcABwtWCyALBwAHC1cLVgsHAAALWgsDCwcAAAtbC1oLBwDsClsLAAsHAOwKXAtbCwcAAwtZCx8LBwADC1oLWQsHAOQKXQv+CgcA5ApeC10LBwD+Cl8L0goHAP4KXQtfCwcA9gpgC/cKBwD2ClMLYAsHAPcKYQvlCgcA9wpgC2ELBwDTClwL7AoHANMKYgtcCwcA5QpeC+QKBwDlCmELXgsHANQKYwvPCgcA1ApOC2MLBwDOCmIL0woHAM4KZAtiCwcA0gplC9EKBwDSCl8LZQsHANEKTwvQCgcA0QplC08LBwDPCmQLzgoHAM8KYwtkCwcAZgtnC2gLBwBmC2kLZwsHAGoLawtsCwcAagttC2sLBwBuC28LcAsHAG4LcQtvCwcAbAtxC2oLBwBsC28LcQsHAHILcwt0CwcAcgt1C3MLBwBoC3ULZgsHAGgLcwt1CwcAdgt1C3ILBwB2C3cLdQsHAGYLdwtpCwcAZgt1C3cLBwB0C3gLeQsHAHQLcwt4CwcAZwtzC2gLBwBnC3gLcwsHAHALegt7CwcAcAtvC3oLBwBrC28LbAsHAGsLegtvCwcAfAtxC24LBwB8C30LcQsHAGoLfQttCwcAagtxC30LBwBtC34LawsHAG0Lfwt+CwcAeguAC3sLBwB6C4ELgAsHAGsLgQt6CwcAawt+C4ELBwB8C4ILfQsHAHwLgwuCCwcAfQt/C20LBwB9C4ILfwsHAH8LhAt+CwcAfwuFC4QLBwCBC4YLgAsHAIELhwuGCwcAfguHC4ELBwB+C4QLhwsHAIMLiAuCCwcAgwuJC4gLBwCCC4ULfwsHAIILiAuFCwcAhQuKC4QLBwCFC4sLigsHAIwLiguLCwcAjAuNC4oLBwCHC44LhgsHAIcLjwuOCwcAkAuOC48LBwCQC5ELjgsHAIQLjwuHCwcAhAuKC48LBwCQC4oLjQsHAJALjwuKCwcAiQuSC4gLBwCJC5MLkgsHAJQLkwuVCwcAlAuSC5MLBwCIC4sLhQsHAIgLkguLCwcAjAuSC5QLBwCMC4sLkgsHAJYLlwuYCwcAlguZC5cLBwBnC5cLmQsHAGcLaQuXCwcAmgubC5wLBwCaC50LmwsHAHcLmwudCwcAdwt2C5sLBwCXC5oLmAsHAJcLnQuaCwcAdwuXC2kLBwB3C50LlwsHAJ4LnwugCwcAnguhC58LBwB4C54LeQsHAHgLoQueCwcAnwuZC5YLBwCfC6ELmQsHAGcLoQt4CwcAZwuZC6ELBwCQC6ILkQsHAJALowuiCwcAowucC6ILBwCjC5oLnAsHAI0LowuQCwcAjQukC6MLBwCkC5oLowsHAKQLmAuaCwcAjAukC40LBwCMC6ULpAsHAKULmAukCwcApQuWC5gLBwCUC6ULjAsHAJQLpgulCwcApguWC6ULBwCmC58LlgsHAJULpguUCwcAlQunC6YLBwCnC58LpgsHAKcLoAufCwcAewuoC3ALBwB7C6kLqAsHAHALqgtuCwcAcAuoC6oLBwCAC6kLewsHAIALqwupCwcAgwusC4kLBwCDC60LrAsHAHwLrQuDCwcAfAuuC60LBwCGC6sLgAsHAIYLrwurCwcAjguvC4YLBwCOC7ALrwsHAJELsAuOCwcAkQuxC7ALBwCiC7ELkQsHAKILsguxCwcAnAuyC6ILBwCcC7MLsgsHAJsLswucCwcAmwu0C7MLBwB2C7QLmwsHAHYLtQu0CwcAcgu1C3YLBwByC7YLtQsHAHQLtgtyCwcAdAu3C7YLBwB5C7cLdAsHAHkLuAu3CwcAngu4C3kLBwCeC7kLuAsHAKALuQueCwcAoAu6C7kLBwCnC7oLoAsHAKcLuwu6CwcAlQu7C6cLBwCVC7wLuwsHAJMLvAuVCwcAkwu9C7wLBwCJC70LkwsHAIkLrAu9CwcAbguuC3wLBwBuC6oLrgsHAL4LvAu9CwcAvgu/C7wLBwDAC70LrAsHAMALvgu9CwcAvwu7C7wLBwC/C8ELuwsHAMELugu7CwcAwQvCC7oLBwDCC7kLugsHAMILwwu5CwcAwwu4C7kLBwDDC8QLuAsHAMQLtwu4CwcAxAvFC7cLBwDFC7YLtwsHAMULxgu2CwcAxgu1C7YLBwDGC8cLtQsHAMcLtAu1CwcAxwvIC7QLBwDIC7MLtAsHAMgLyQuzCwcAyQuyC7MLBwDJC8oLsgsHAMoLsQuyCwcAygvLC7ELBwDLC7ALsQsHAMsLzAuwCwcAzAuvC7ALBwDMC80LrwsHAM0LqwuvCwcAzQvOC6sLBwDPC60LrgsHAM8L0AutCwcA0QuuC6oLBwDRC88LrgsHANALrAutCwcA0AvAC6wLBwDOC6kLqwsHAM4L0gupCwcA0wuqC6gLBwDTC9ELqgsHANILqAupCwcA0gvTC6gLBwDUC2ULXwsHANQL1QtlCwcA1QtPC2ULBwDVC9YLTwsHANcLZAtjCwcA1wvYC2QLBwDYC2ILZAsHANgL2QtiCwcA2gtjC04LBwDaC9cLYwsHANkLXAtiCwcA2QvbC1wLBwDcC2ELYAsHANwL3QthCwcA3QteC2ELBwDdC94LXgsHAN8LYAtTCwcA3wvcC2ALBwDgC18LXQsHAOAL1AtfCwcA3gtdC14LBwDeC+ALXQsHANsLWwtcCwcA2wvhC1sLBwDhC1oLWwsHAOEL4gtaCwcA4gtZC1oLBwDiC+MLWQsHAOMLWAtZCwcA4wvkC1gLBwDkC1cLWAsHAOQL5QtXCwcA5QtWC1cLBwDlC+YLVgsHAOYLVQtWCwcA5gvnC1ULBwDnC1QLVQsHAOcL6AtUCwcA6AtSC1QLBwDoC+kLUgsHAOoLUwtQCwcA6gvfC1MLBwDpC1ELUgsHAOkL6wtRCwcA6wtQC1ELBwDrC+oLUAsHANYLTQtPCwcA1gvsC00LBwDtC04LSgsHAO0L2gtOCwcA7AtMC00LBwDsC+4LTAsHAO8LSgtLCwcA7wvtC0oLBwDwC/EL8gsHAPAL8wvxCwcA9Av1C/YLBwD0C/cL9QsHAPgL+Qv6CwcA+Av7C/kLBwD8C/0L/gsHAPwL/wv9CwcAAAz+CwEMBwAADPwL/gsHAPsLAgz5CwcA+wsDDAIMBwAEDPoLBQwHAAQM+Av6CwcABgz6C/kLBwAGDAcM+gsHAAgM/gv9CwcACAwJDP4LBwAJDAEM/gsHAAkMCgwBDAcACwz5CwIMBwALDAYM+QsHAAcMBQz6CwcABwwMDAUMBwANDPsL+AsHAA0MDgz7CwcADgz2C/ULBwAODA0M9gsHAA8M/wv8CwcADwwQDP8LBwAQDPAL8gsHABAMDwzwCwcAEQz8CwAMBwARDA8M/AsHAA8M8wvwCwcADwwRDPMLBwAODAMM+wsHAA4MEgwDDAcAEgz1C/cLBwASDA4M9QsHABMM+AsEDAcAEwwNDPgLBwANDPQL9gsHAA0MEwz0CwcAFAwVDBYMBwAUDBcMFQwHABgMGQwaDAcAGAwbDBkMBwAcDBgMGgwHABwMHQwYDAcAGwweDBkMBwAbDB8MHgwHAB4MFAwWDAcAHgwfDBQMBwAgDPcL9AsHACAMIQz3CwcAIgwCDAMMBwAiDCMMAgwHACMMCwwCDAcAIwwkDAsMBwAlDAMMEgwHACUMIgwDDAcAIQwSDPcLBwAhDCUMEgwHACYMJwwoDAcAJgwpDCcMBwAmDBQMKQwHACYMFwwUDAcAKgwrDCwMBwAqDC0MKwwHAC0MGwwYDAcALQwqDBsMBwAtDC4MKwwHAC0MLwwuDAcALwwYDB0MBwAvDC0MGAwHADAMLAwxDAcAMAwqDCwMBwAwDBsMKgwHADAMHwwbDAcAKQwxDCcMBwApDDAMMQwHADAMFAwfDAcAMAwpDBQMBwAyDBYMFQwHADIMMwwWDAcAMgzzCzMMBwAyDPEL8wsHADQMGQw1DAcANAwaDBkMBwA0DAAMAQwHADQMNQwADAcANAwcDBoMBwA0DDYMHAwHADYMAQwKDAcANgw0DAEMBwAeDDUMGQwHAB4MNww1DAcANwwADDUMBwA3DBEMAAwHADMMHgwWDAcAMww3DB4MBwA3DPMLEQwHADcMMwzzCwcAOAw5DDoMBwA4DDsMOQwHADwMPQw+DAcAPAw/DD0MBwBADCMMIgwHAEAMQQwjDAcAQgxBDEAMBwBCDEMMQQwHAEQMIgwlDAcARAxADCIMBwBFDEAMRAwHAEUMQgxADAcARgwlDCEMBwBGDEQMJQwHAEcMRAxGDAcARwxFDEQMBwBIDCEMIAwHAEgMRgwhDAcASQxGDEgMBwBJDEcMRgwHAEoMSwxMDAcASgxNDEsMBwBODE8MUAwHAE4MUQxPDAcAUgxDDEIMBwBSDFMMQwwHACwMUwxSDAcALAwrDFMMBwBUDEIMRQwHAFQMUgxCDAcAMQxSDFQMBwAxDCwMUgwHAFUMRQxHDAcAVQxUDEUMBwAnDFQMVQwHACcMMQxUDAcAVgxHDEkMBwBWDFUMRwwHACgMVQxWDAcAKAwnDFUMBwBBDDoMIwwHAEEMOAw6DAcAOwxBDFcMBwA7DDgMQQwHACMMOQwkDAcAIww6DDkMBwBDDD4MQQwHAEMMPAw+DAcAPwxDDFgMBwA/DDwMQwwHAEEMPQxXDAcAQQw+DD0MBwBTDEwMQwwHAFMMSgxMDAcATQxTDFkMBwBNDEoMUwwHAEMMSwxYDAcAQwxMDEsMBwArDFAMUwwHACsMTgxQDAcAUQwrDC4MBwBRDE4MKwwHAFMMTwxZDAcAUwxQDE8MBwD9C1oMWwwHAP0L/wtaDAcAXAz9C1sMBwBcDAgM/QsHAFoMEAxdDAcAWgz/CxAMBwDyC14MXwwHAPIL8QteDAcAEAxfDF0MBwAQDPILXwwHABUMYAxhDAcAFQwXDGAMBwAEDGIMYwwHAAQMBQxiDAcABQxkDGIMBwAFDAwMZAwHABMMYwxlDAcAEwwEDGMMBwD0C2UMZgwHAPQLEwxlDAcAIAxmDGcMBwAgDPQLZgwHACYMaAxpDAcAJgwoDGgMBwAXDGkMYAwHABcMJgxpDAcAMgxhDGoMBwAyDBUMYQwHAPELagxeDAcA8QsyDGoMBwBIDGcMawwHAEgMIAxnDAcASQxrDGwMBwBJDEgMawwHAFYMbAxtDAcAVgxJDGwMBwAoDG0MaAwHACgMVgxtDAcAWwxuDG8MBwBbDFoMbgwHAHAMWwxvDAcAcAxcDFsMBwBuDF0McQwHAG4MWgxdDAcAXwxyDHMMBwBfDF4McgwHAF0McwxxDAcAXQxfDHMMBwBhDHQMdQwHAGEMYAx0DAcAYwx2DHcMBwBjDGIMdgwHAGIMeAx2DAcAYgxkDHgMBwBlDHcMeQwHAGUMYwx3DAcAZgx5DHoMBwBmDGUMeQwHAGcMegx7DAcAZwxmDHoMBwBpDHwMfQwHAGkMaAx8DAcAYAx9DHQMBwBgDGkMfQwHAGoMdQx+DAcAagxhDHUMBwBeDH4McgwHAF4Magx+DAcAawx7DH8MBwBrDGcMewwHAGwMfwyADAcAbAxrDH8MBwBtDIAMgQwHAG0MbAyADAcAaAyBDHwMBwBoDG0MgQwHAIIMeAxkDAcAggyDDHgMBwCEDFwMcAwHAIQMhQxcDAcAhgxkDAwMBwCGDIIMZAwHAIUMCAxcDAcAhQyHDAgMBwCIDE8MUQwHAIgMiQxPDAcAiQxZDE8MBwCJDIoMWQwHAIsMUQwuDAcAiwyIDFEMBwCMDEsMTQwHAIwMjQxLDAcAjQxYDEsMBwCNDI4MWAwHAIoMTQxZDAcAigyMDE0MBwCPDD0MPwwHAI8MkAw9DAcAkAxXDD0MBwCQDJEMVwwHAI4MPwxYDAcAjgyPDD8MBwCSDDkMOwwHAJIMkww5DAcAkwwkDDkMBwCTDJQMJAwHAJEMOwxXDAcAkQySDDsMBwCVDBwMNgwHAJUMlgwcDAcAlww2DAoMBwCXDJUMNgwHAJgMLgwvDAcAmAyLDC4MBwCZDC8MHQwHAJkMmAwvDAcAlAwLDCQMBwCUDJoMCwwHAJYMHQwcDAcAlgyZDB0MBwCbDAwMBwwHAJsMhgwMDAcAmgwGDAsMBwCaDJwMBgwHAJ0MCgwJDAcAnQyXDAoMBwCHDAkMCAwHAIcMnQwJDAcAnAwHDAYMBwCcDJsMBwwHAJ4MnwygDAcAngyhDJ8MBwCiDKMMpAwHAKIMpQyjDAcApgynDKgMBwCmDKkMpwwHAKkMpAyjDAcAqQymDKQMBwCqDKsMrAwHAKoMrQyrDAcArQygDJ8MBwCtDKoMoAwHAK0MrgyrDAcArQyvDK4MBwCvDJ8MoQwHAK8MrQyfDAcAsAysDLEMBwCwDKoMrAwHAKoMngygDAcAqgywDJ4MBwCyDKgMswwHALIMpgyoDAcApgyiDKQMBwCmDLIMogwHAKkMtAynDAcAqQy1DLQMBwC1DKMMpQwHALUMqQyjDAcAtgylDKIMBwC2DLcMpQwHALgMsgyzDAcAuAy5DLIMBwC5DKIMsgwHALkMtgyiDAcAugy0DLUMBwC6DLsMtAwHALcMtQylDAcAtwy6DLUMBwC8DLcMtgwHALwMvQy3DAcAvgy5DLgMBwC+DL8MuQwHAL8Mtgy5DAcAvwy8DLYMBwDADLsMugwHAMAMwQy7DAcAvQy6DLcMBwC9DMAMugwHAMIMvQy8DAcAwgzDDL0MBwDCDMQMwwwHAMIMxQzEDAcAxgy/DL4MBwDGDMcMvwwHAMYMyAzHDAcAxgzJDMgMBwDHDLwMvwwHAMcMwgy8DAcAwgzIDMUMBwDCDMcMyAwHAMoMwQzADAcAygzLDMEMBwDLDMwMzQwHAMsMygzMDAcAwwzADL0MBwDDDMoMwAwHAMoMxAzMDAcAygzDDMQMBwDODM8M0AwHAM4M0QzPDAcAzgyeDNEMBwDODKEMngwHANIM0wzUDAcA0gzVDNMMBwDSDK8M1QwHANIMrgyvDAcA0wzODNAMBwDTDNUMzgwHAM4MrwyhDAcAzgzVDK8MBwDWDNcM2AwHANYM2QzXDAcA1wywDLEMBwDXDNkMsAwHANEM1gzPDAcA0QzZDNYMBwDZDJ4MsAwHANkM0QyeDAcA2gzIDMkMBwDaDNsMyAwHANQM2wzaDAcA1AzTDNsMBwDbDMUMyAwHANsM3AzFDAcA0wzcDNsMBwDTDNAM3AwHANwMxAzFDAcA3AzdDMQMBwDQDN0M3AwHANAMzwzdDAcA3QzMDMQMBwDdDN4MzAwHAM8M3gzdDAcAzwzWDN4MBwDeDM0MzAwHAN4M3wzNDAcA1gzfDN4MBwDWDNgM3wwHAOAMswyoDAcA4AzhDLMMBwDiDKgMpwwHAOIM4AyoDAcA4Qy4DLMMBwDhDOMMuAwHAOQMuwzBDAcA5AzlDLsMBwDlDLQMuwwHAOUM5gy0DAcA4wy+DLgMBwDjDOcMvgwHAOcMxgy+DAcA5wzoDMYMBwDoDMkMxgwHAOgM6QzJDAcA6QzaDMkMBwDpDOoM2gwHAOoM1AzaDAcA6gzrDNQMBwDrDNIM1AwHAOsM7AzSDAcA7AyuDNIMBwDsDO0MrgwHAO0MqwyuDAcA7QzuDKsMBwDuDKwMqwwHAO4M7wysDAcA7wyxDKwMBwDvDPAMsQwHAPAM1wyxDAcA8AzxDNcMBwDxDNgM1wwHAPEM8gzYDAcA8gzfDNgMBwDyDPMM3wwHAPMMzQzfDAcA8wz0DM0MBwD0DMsMzQwHAPQM9QzLDAcA9QzBDMsMBwD1DOQMwQwHAOYMpwy0DAcA5gziDKcMBwD0DL4L9QwHAPQMvwu+CwcA9QzAC+QMBwD1DL4LwAsHAPMMvwv0DAcA8wzBC78LBwDyDMEL8wwHAPIMwgvBCwcA8QzCC/IMBwDxDMMLwgsHAPAMwwvxDAcA8AzEC8MLBwDvDMQL8AwHAO8MxQvECwcA7gzFC+8MBwDuDMYLxQsHAO0MxgvuDAcA7QzHC8YLBwDsDMcL7QwHAOwMyAvHCwcA6wzIC+wMBwDrDMkLyAsHAOoMyQvrDAcA6gzKC8kLBwDpDMoL6gwHAOkMywvKCwcA6AzLC+kMBwDoDMwLywsHAOcMzAvoDAcA5wzNC8wLBwDjDM0L5wwHAOMMzgvNCwcA5QzPC+YMBwDlDNALzwsHAOYM0QviDAcA5gzPC9ELBwDkDNAL5QwHAOQMwAvQCwcA4QzOC+MMBwDhDNILzgsHAOIM0wvgDAcA4gzRC9MLBwDgDNIL4QwHAOAM0wvSCwcAnQzUC5cMBwCdDNUL1AsHAIcM1QudDAcAhwzWC9ULBwCcDNcLmwwHAJwM2AvXCwcAmgzYC5wMBwCaDNkL2AsHAJsM2guGDAcAmwzXC9oLBwCUDNkLmgwHAJQM2wvZCwcAmQzcC5gMBwCZDN0L3AsHAJYM3QuZDAcAlgzeC90LBwCYDN8LiwwHAJgM3AvfCwcAlwzgC5UMBwCXDNQL4AsHAJUM3guWDAcAlQzgC94LBwCTDNsLlAwHAJMM4QvbCwcAkgzhC5MMBwCSDOIL4QsHAJEM4guSDAcAkQzjC+ILBwCQDOMLkQwHAJAM5AvjCwcAjwzkC5AMBwCPDOUL5AsHAI4M5QuPDAcAjgzmC+ULBwCNDOYLjgwHAI0M5wvmCwcAjAznC40MBwCMDOgL5wsHAIoM6AuMDAcAigzpC+gLBwCLDOoLiAwHAIsM3wvqCwcAiQzpC4oMBwCJDOsL6QsHAIgM6wuJDAcAiAzqC+sLBwCFDNYLhwwHAIUM7AvWCwcAhgztC4IMBwCGDNoL7QsHAIQM7AuFDAcAhAzuC+wLBwCCDO8LgwwHAIIM7QvvCwcA9gz3DPgMBwD2DPkM9wwHAPoM+wz8DAcA+gz9DPsMBwD+DP8MAA0HAP4MAQ3/DAcA+AwCDfYMBwD4DAMNAg0HAPYMBA35DAcA9gwCDQQNBwAFDfgM9wwHAAUNAw34DAcABg0HDQgNBwAGDQkNBw0HAPwMCg36DAcA/AwLDQoNBwD7DAsN/AwHAPsMDA0LDQcA+gwNDf0MBwD6DAoNDQ0HAA4NAA0PDQcADg3+DAANBwD5DA8N9wwHAPkMDg0PDQcABg0QDRENBwAGDQgNEA0HAP0MEA37DAcA/QwRDRANBwD+DBINAQ0HAP4MDg0SDQcABA0ODfkMBwAEDRINDg0HABMNAA3/DAcAEw0PDQANBwD3DBMNBQ0HAPcMDw0TDQcAFA0IDQcNBwAUDRANCA0HAPsMFA0MDQcA+wwQDRQNBwAVDf0MDQ0HABUNEQ39DAcABg0VDQkNBwAGDRENFQ0HABYNBw0JDQcAFg0XDQcNBwABDRYN/wwHAAENFw0WDQcACw0YDQoNBwALDRkNGA0HABkNAw0YDQcAGQ0CDQMNBwAMDRkNCw0HAAwNGg0ZDQcAGg0CDRkNBwAaDQQNAg0HABsNCg0YDQcAGw0NDQoNBwAFDRgNAw0HAAUNGw0YDQcAHA0EDRoNBwAcDRINBA0HABQNGg0MDQcAFA0cDRoNBwAcDQENEg0HABwNFw0BDQcABw0cDRQNBwAHDRcNHA0HAP8MHQ0TDQcA/wwWDR0NBwAWDRUNHQ0HABYNCQ0VDQcAEw0bDQUNBwATDR0NGw0HAB0NDQ0bDQcAHQ0VDQ0NBwAeDR8NIA0HAB4NIQ0fDQcAIA0iDSMNBwAgDR8NIg0HACMNJA0lDQcAIw0iDSQNBwAlDSYNJw0HACUNJA0mDQcAJw0oDSkNBwAnDSYNKA0HACANKg0eDQcAIA0rDSoNBwAjDSsNIA0HACMNLA0rDQcAJQ0sDSMNBwAlDS0NLA0HACcNLQ0lDQcAJw0uDS0NBwApDS4NJw0HACkNLw0uDQcAJg0wDSgNBwAmDTENMA0HADENMg0wDQcAMQ0zDTINBwAkDTENJg0HACQNNA0xDQcANA0zDTENBwA0DTUNMw0HACINNA0kDQcAIg02DTQNBwA2DTUNNA0HADYNNw01DQcAHw02DSINBwAfDTgNNg0HADgNNw02DQcAOA05DTcNBwAhDTgNHw0HACENOg04DQcAOg05DTgNBwA6DTsNOQ0HACsNPA0qDQcAKw09DTwNBwA9DT4NPA0HAD0NPw0+DQcALA09DSsNBwAsDUANPQ0HAEANPw09DQcAQA1BDT8NBwAtDUANLA0HAC0NQg1ADQcAQg1BDUANBwBCDUMNQQ0HAC4NQg0tDQcALg1EDUINBwBEDUMNQg0HAEQNRQ1DDQcALw1EDS4NBwAvDUYNRA0HAEYNRQ1EDQcARg1HDUUNBwApDUYNLw0HACkNSA1GDQcASA1HDUYNBwBIDUkNRw0HACgNSA0pDQcAKA1KDUgNBwBKDUkNSA0HAEoNSw1JDQcAMA1KDSgNBwAwDUwNSg0HAEwNSw1KDQcATA1NDUsNBwAyDUwNMA0HADINTg1MDQcATg1NDUwNBwBODU8NTQ0HACoNUA0eDQcAKg08DVANBwA8DVENUA0HADwNPg1RDQcAHg1SDSENBwAeDVANUg0HAFANUw1SDQcAUA1RDVMNBwAhDVQNOg0HACENUg1UDQcAUg1VDVQNBwBSDVMNVQ0HADoNVg07DQcAOg1UDVYNBwBUDVcNVg0HAFQNVQ1XDQcAWA1ZDVoNBwBYDVsNWQ0HAFwNWw1YDQcAXA1dDVsNBwBeDV0NXA0HAF4NXw1dDQcAYA1hDWINBwBgDWMNYQ0HAGQNYw1lDQcAZA1hDWMNBwBmDWMNYA0HAGYNZw1jDQcAZQ1nDWgNBwBlDWMNZw0HAGkNZw1mDQcAaQ1qDWcNBwBoDWoNaw0HAGgNZw1qDQcAWw1sDVkNBwBbDW0NbA0HAG0Naw1sDQcAbQ1oDWsNBwBdDW0NWw0HAF0Nbg1tDQcAbg1oDW0NBwBuDWUNaA0HAF8Nbg1dDQcAXw1vDW4NBwBvDWUNbg0HAG8NZA1lDQcAaQ1wDWoNBwBpDXENcA0HAHENcg1wDQcAcQ1zDXINBwBmDXENaQ0HAGYNdA1xDQcAdA1zDXENBwB0DXUNcw0HAGANdA1mDQcAYA12DXQNBwB2DXUNdA0HAHYNdw11DQcAYg12DWANBwBiDXgNdg0HAHgNdw12DQcAeA15DXcNBwBhDXgNYg0HAGENeg14DQcAeg15DXgNBwB6DXsNeQ0HAGQNeg1hDQcAZA18DXoNBwB8DXsNeg0HAHwNfQ17DQcAbw18DWQNBwBvDX4NfA0HAH4NfQ18DQcAfg1/DX0NBwBfDX4Nbw0HAF8NgA1+DQcAgA1/DX4NBwCADYENfw0HAF4NgA1fDQcAXg2CDYANBwCCDYENgA0HAIINgw2BDQcAXA2CDV4NBwBcDYQNgg0HAIQNgw2CDQcAhA2FDYMNBwBYDYQNXA0HAFgNhg2EDQcAhg2FDYQNBwCGDYcNhQ0HAFoNhg1YDQcAWg2IDYYNBwCIDYcNhg0HAIgNiQ2HDQcAWQ2IDVoNBwBZDYoNiA0HAIoNiQ2IDQcAig2LDYkNBwBsDYoNWQ0HAGwNjA2KDQcAjA2LDYoNBwCMDY0Niw0HAGsNjA1sDQcAaw2ODYwNBwCODY0NjA0HAI4Njw2NDQcAag2ODWsNBwBqDXANjg0HAHANjw2ODQcAcA1yDY8NBwCQDZEN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IA4HACEOIg4jDgcAIQ4gDiIOBwAjDiQOJQ4HACMOIg4kDgcAJQ4mDicOBwAlDiQOJg4HACcOKA4pDgcAJw4mDigOBwAoDioOKQ4HACgOKw4qDgcAKg4sDi0OBwAqDisOLA4HACwOLg4tDgcALA4vDi4OBwAvDjAOLg4HAC8OMQ4wDgcAMQ4yDjAOBwAxDjMOMg4HADMONA4yDgcAMw41DjQOBwA1DjYONA4HADUONw42DgcANw4aDjYOBwA3DhgOGg4HAPgNOA77DQcA+A05DjgOBwAZDjkOGg4HABkOOA45DgcA+w06DvwNBwD7DTgOOg4HAB0OOA4ZDgcAHQ46DjgOBwD8DTsO/g0HAPwNOg47DgcAHw46Dh0OBwAfDjsOOg4HAP4NPA4ADgcA/g07DjwOBwAhDjsOHw4HACEOPA47DgcAAA49DgMOBwAADjwOPQ4HACMOPA4hDgcAIw49DjwOBwA+Dj8OQA4HAD4OQQ4/DgcAJQ49DiMOBwAlDkIOPQ4HAAUOQw4HDgcABQ5CDkMOBwAnDkIOJQ4HACcOQw5CDgcABw5EDgkOBwAHDkMORA4HACkOQw4nDgcAKQ5EDkMOBwAJDkUOCg4HAAkORA5FDgcAKg5EDikOBwAqDkUORA4HAAoORg4NDgcACg5FDkYOBwAtDkUOKg4HAC0ORg5FDgcADQ5HDg4OBwANDkYORw4HAC4ORg4tDgcALg5HDkYOBwAODkgOEA4HAA4ORw5IDgcAMA5HDi4OBwAwDkgORw4HAEkOSg5LDgcASQ5MDkoOBwAyDkgOMA4HADIOTQ5IDgcAEg5ODhQOBwASDk0OTg4HADQOTQ4yDgcANA5ODk0OBwAUDk8OFw4HABQOTg5PDgcANg5ODjQOBwA2Dk8OTg4HABcOOQ74DQcAFw5PDjkOBwAaDk8ONg4HABoOOQ5PDgcAGA5QDhsOBwAYDlEOUA4HAFIOUQ5TDgcAUg5QDlEOBwAbDlQOHA4HABsOUA5UDgcAVQ5QDlIOBwBVDlQOUA4HABwOVg4eDgcAHA5UDlYOBwBXDlQOVQ4HAFcOVg5UDgcAHg5YDiAOBwAeDlYOWA4HAFkOVg5XDgcAWQ5YDlYOBwAgDloOIg4HACAOWA5aDgcAWw5YDlkOBwBbDloOWA4HACIOXA4kDgcAIg5aDlwOBwBdDloOWw4HAF0OXA5aDgcA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EA8HABIPHA8eDwcAEg8RDxwPBwATDx4PHw8HABMPEg8eDwcAEw8gDxQPBwATDx8PIA8HABQPIQ8VDwcAFA8gDyEPBwAVDyIPFg8HABUPIQ8iDwcAFg8jDxcPBwAWDyIPIw8HACMPGA8XDwcAIw8kDxgPBwAkDxkPGA8HACQPJQ8ZDwcAJQ8aDxkPBwAlDyYPGg8HACcPGg8mDwcAJw8bDxoPBwAdDxsPJw8HAB0PEA8bDwcAKA8dDykPBwAoDxwPHQ8HAB4PKA8qDwcAHg8cDygPBwAfDyoPKw8HAB8PHg8qDwcAIA8rDywPBwAgDx8PKw8HACEPLA8tDwcAIQ8gDywPBwAiDy0PLg8HACIPIQ8tDwcAIw8uDy8PBwAjDyIPLg8HADAPIw8vDwcAMA8kDyMPBwAxDyQPMA8HADEPJQ8kDwcAMg8lDzEPBwAyDyYPJQ8HADMPJg8yDwcAMw8nDyYPBwApDycPMw8HACkPHQ8nDwcANA8pDzUPBwA0DygPKQ8HACoPNA82DwcAKg8oDzQPBwArDzYPNw8HACsPKg82DwcALA83DzgPBwAsDysPNw8HACwPOQ8tDwcALA84DzkPBwAtDzoPLg8HAC0POQ86DwcALg87Dy8PBwAuDzoPOw8HADsPMA8vDwcAOw88DzAPBwA8DzEPMA8HADwPPQ8xDwcAPQ8yDzEPBwA9Dz4PMg8HAD8PMg8+DwcAPw8zDzIPBwA1DzMPPw8HADUPKQ8zDwcAQA81D0EPBwBADzQPNQ8HADYPQA9CDwcANg80D0APBwA3D0IPQw8HADcPNg9CDwcAOA9DD0QPBwA4DzcPQw8HADkPRA9FDwcAOQ84D0QPBwA6D0UPRg8HADoPOQ9FDwcAOw9GD0cPBwA7DzoPRg8HAEgPOw9HDwcASA88DzsPBwBJDzwPSA8HAEkPPQ88DwcASg89D0kPBwBKDz4PPQ8HAEsPPg9KDwcASw8/Dz4PBwBBDz8PSw8HAEEPNQ8/DwcATA9ND04PBwBMD08PTQ8HAFAPTA9RDwcAUA9PD0wPBwBSD1EPUw8HAFIPUA9RDwcAVA9TD1UPBwBUD1IPUw8HAFYPVQ9XDwcAVg9UD1UPBwBYD1cPWQ8HAFgPVg9XDwcAWg9ZD1sPBwBaD1gPWQ8HAFwPWg9bDwcAXA9dD1oPBwBeD10PXA8HAF4PXw9dDwcAYA9fD14PBwBgD2EPXw8HAGIPYQ9gDwcAYg9jD2EPBwBOD2MPYg8HAE4PTQ9jDwcATw9kD00PBwBPD2UPZA8HAGYPTw9QDwcAZg9lD08PBwBnD1APUg8HAGcPZg9QDwcAaA9SD1QPBwBoD2cPUg8HAGkPVA9WDwcAaQ9oD1QPBwBqD1YPWA8HAGoPaQ9WDwcAaw9YD1oPBwBrD2oPWA8HAF0Paw9aDwcAXQ9sD2sPBwBfD2wPXQ8HAF8PbQ9sDwcAYQ9tD18PBwBhD24PbQ8HAGMPbg9hDwcAYw9vD24PBwBND28PYw8HAE0PZA9vDwcAZA9wD3EPBwBkD2UPcA8HAHAPZg9yDwcAcA9lD2YPBwByD2cPcw8HAHIPZg9nDwcAdA9nD2gPBwB0D3MPZw8HAHUPaA9pDwcAdQ90D2gPBwB2D2kPag8HAHYPdQ9pDwcAdw9qD2sPBwB3D3YPag8HAGwPdw9rDwcAbA94D3cPBwBtD3gPbA8HAG0PeQ94DwcAbg95D20PBwBuD3oPeQ8HAG4Pew96DwcAbg9vD3sPBwBvD3EPew8HAG8PZA9xDwcAcQ98D30PBwBxD3APfA8HAHwPcg9+DwcAfA9wD3IPBwB+D3MPfw8HAH4Pcg9zDwcAfw90D4APBwB/D3MPdA8HAIAPdQ+BDwcAgA90D3UPBwCBD3YPgg8HAIEPdQ92DwcAgg93D4MPBwCCD3YPdw8HAHcPhA+DDwcAdw94D4QPBwB4D4UPhA8HAHgPeQ+FDwcAeQ+GD4UPBwB5D3oPhg8HAHoPhw+GDwcAeg97D4cPBwB7D30Phw8HAHsPcQ99DwcAfQ+ID4kPBwB9D3wPiA8HAIgPfg+KDwcAiA98D34PBwCKD38Piw8HAIoPfg9/DwcAiw+AD4wPBwCLD38PgA8HAI0PgA+BDwcAjQ+MD4APBwCOD4EPgg8HAI4PjQ+BDwcAjw+CD4MPBwCPD44Pgg8HAIQPjw+DDwcAhA+QD48PBwCFD5APhA8HAIUPkQ+QDwcAhg+RD4UPBwCGD5IPkQ8HAIYPkw+SDwcAhg+HD5MPBwCHD4kPkw8HAIcPfQ+JDwcAiQ+UD5UPBwCJD4gPlA8HAJQPig+WDwcAlA+ID4oPBwCWD4sPlw8HAJYPig+LDwcAlw+MD5gPBwCXD4sPjA8HAJgPjQ+ZDwcAmA+MD40PBwCZD44P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nwUHAJ4FMQUyBQcAOgA3ABoABwA6ADgANwAHAD0AOAA6AAcAPQA7ADgABwDQALQAswAHANAA0QC0AAcA0AA7AD0ABwDQAM8AOwAHADBBlDwAAHJhdjQtaW5zaWRlAEAeAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AQACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wMABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BAAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8FAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wYABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQeuB68HsAexB7IHswe0B7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfzB/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/BwAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCQIJQgmCCcIKAgpCCoIKwgsCC0ILggvCDAIMQgyCDMINAg1CDYINwg4CDkIOgg7CDwIPQg+CD8IQAhBCEIIQwhECEUIRghHCEgISQhKCEsITAhNCE4ITwhQCFEIUghTCFQIVQhWCFcIWAhZCFoIWwhcCF0IXghfCGAIYQhiCGMIZAhlCGYIZwhoCGkIaghrCGwIbQhuCG8IcAhxCHIIcwh0CHUIdgh3CHgIeQh6CHsIfAh9CH4IfwiACIEIggiDCIQIhQiGCIcIiAiJCIoIiwiMCI0IjgiPCJAIkQiSCJMIlAiVCJYIlwiYCJkImgibCJwInQieCJ8IoAihCKIIowikCKUIpginCKgIqQiqCKsIrAitCK4IrwiwCLEIsgizCLQItQi2CLcIuAi5CLoIuwi8CL0Ivgi/CMAIwQjCCMMIxAjFCMYIxwjICMkIygjLCMwIzQjOCM8I0AjRCNII0wjUCNUI1gjXCNgI2QjaCNsI3AjdCN4I3wjgCOEI4gjjCOQI5QjmCOcI6AjpCOoI6wjsCO0I7gjvCPAI8QjyCPMI9Aj1CPYI9wj4CPkI+gj7CPwI/Qj+CP8IAAkBCQIJAwkECQUJBgkHCQgJCQkKCQsJDAkNCQ4JDwkQCREJEgkTCRQJFQkWCRcJGAkZCRoJGwkcCR0JHgkfCSAJIQkiCSMJJAklCSYJJwkoCSkJKgkrCSwJLQkuCS8JMAkxCTIJMwk0CTUJNgk3CTgJOQk6CTsJPAk9CT4JPwlACUEJQglDCUQJRQlGCUcJSAlJCUoJSwlMCU0JTglPCVAJUQlSCVMJVAlVCVYJVwlYCVkJWglbCVwJXQleCV8JYAlhCWIJYwlkCWUJZglnCWgJaQlqCWsJbAltCW4JbwlwCXEJcglzCXQJdQl2CXcJeAl5CXoJewl8CX0Jfgl/CYAJgQmCCYMJhAmFCYYJhwmICYkJigmLCYwJjQmOCY8JkAmRCZIJkwmUCZUJlgmXCZgJmQmaCZsJnAmdCZ4JnwmgCaEJogmjCaQJpQmmCacJqAmpCaoJqwmsCa0JrgmvCbAJsQmyCbMJtAm1CbYJtwm4CbkJugm7CbwJvQm+Cb8JwAnBCcIJwwnECcUJxgnHCcgJyQnKCcsJzAnNCc4JzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J3gnfCeAJ4QniCeMJ5AnlCeYJ5wnoCekJ6gnrCewJ7QnuCe8J8AnxCfIJ8wn0CfUJ9gn3CfgJ+Qn6CfsJ/An9Cf4J/wkACgEKAgoDCgQKBQoGCgcKCAoJCgoKCwoMCg0KDgoPChAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoeCh8KIAohCiIKIwokCiUKJgonCigKKQoqCisKLAotCi4KLwowCjEKMgozCjQKNQo2CjcKOAo5CjoKOwo8Cj0KPgo/CkAKQQpCCkMKRApFCkYKRwpICkkKSgpLCkwKTQpOCk8KUApRClIKUwpUClUKVgpXClgKWQpaClsKXApdCl4KXwpgCmEKYgpjCmQKZQpmCmcKaAppCmoKawpsCm0KbgpvCnAKcQpyCnMKdAp1CnYKdwp4CnkKegp7CnwKfQp+Cn8KgAqBCoIKgwqECoUKhgqHCogKiQqKCosKjAqNCo4KjwqQCpEKkgqTCpQKlQqWCpcKmAqZCpoKmwqcCp0KngqfCqAKoQqiCqMKpAqlCqYKpwqoCqkKqgqrCqwKrQquCq8KsAqxCrIKswq0CrUKtgq3CrgKuQq6CrsKvAq9Cr4KvwrACsEKwgrDCsQKxQrGCscKyArJCsoKywrMCs0KzgrPCtAK0QrSCtMK1ArVCtYK1wrYCtkK2grbCtwK3QreCt8K4ArhCuIK4wrkCuUK5grnCugK6QrqCusK7ArtCu4K7wrwCvEK8grzCvQK9Qr2CvcK+Ar5CvoK+wr8Cv0K/gr/CgALAQsCCwMLBAsFCwYLBwsICwkLCgsLCwwLDQsOCw8LEAsRCxILEwsUCxULFgsXCxgLGQsaCxsLHAsdCx4LHwsgCyELIgsjCyQLJQsmCycLKAspCyoLKwssCy0LLgsvCzALMQsyCzMLNAs1CzYLNws4CzkLOgs7CzwLPQs+Cz8LQAtBC0ILQwtEC0ULRgtHC0gLSQtKC0sLTAtNC04LTwtQC1ELUgtTC1QLVQtWC1cLWAtZC1oLWwtcC10LXgtfC2ALYQtiC2MLZAtlC2YLZwtoC2kLagtrC2wLbQtuC28LcAtxC3ILcwt0C3ULdgt3C3gLeQt6C3sLfAt9C34LfwuAC4ELgguDC4QLhQuGC4cLiAuJC4oLiwuMC40LjguPC5ALkQuSC5MLlAuVC5YLlwuYC5kLmgubC5wLnQueC58LoAuhC6ILowukC6ULpgunC6gLqQuqC6sLrAutC64LrwuwC7ELsguzC7QLtQu2C7cLuAu5C7oLuwu8C70Lvgu/C8ALwQvCC8MLxAvFC8YLxwvIC8kLygvLC8wLzQvOC88L0AvRC9IL0wvUC9UL1gvXC9gL2QvaC9sL3AvdC94L3wvgC+EL4gvjC+QL5QvmC+cL6AvpC+oL6wvsC+0L7gvvC/AL8QvyC/ML9Av1C/YL9wv4C/kL+gv7C/wL/Qv+C/8LAAwBDAIMAwwEDAUMBgwHDAgMCQwKDAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwlDCYMJwwoDCkMKgwrDCwMLQwuDC8MMAwxDDIMMww0DDUMNgw3DDgMOQw6DDsMPAw9DD4MPwxADEEMQgxDDEQMRQxGDEcMSAxJDEoMSwxMDE0MTgxPDFAMUQxSDFMMVAxVDFYMVwxYDFkMWgxbDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxnDGgMaQxqDGsMbAxtDG4MbwxwDHEMcgxzDHQMdQx2DHcMeAx5DHoMewx8DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyRDJIMkwyUDJUMlgyXDJgMmQyaDJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0MrgyvDLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MwAzBDMIMwwzEDMUMxgzHDMgMyQzKDMsMzAzNDM4MzwzQDNEM0gzTDNQM1QzWDNcM2AzZDNoM2wzcDN0M3gzfDOAM4QziDOMM5AzlDOYM5wzoDOkM6gzrDOwM7QzuDO8M8AzxDPIM8wz0DPUM9gz3DPgM+Qz6DPsM/Az9DP4M/wwADQENAg0DDQQNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0tDS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDUwNTQ1ODU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1pDWoNaw1sDW0Nbg1vDXANcQ1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NgA2BDYINgw2EDYUNhg2HDYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw3ADcENwg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDdwN3Q3eDd8N4A3hDeIN4w3kDeUN5g3nDegN6Q3qDesN7A3tDe4N7w3wDfEN8g3zDfQN9Q32DfcN+A35DfoN+w38Df0N/g3/DQAOAQ4CDgMOBA4FDgYOBw4IDgkOCg4LDgwODQ4ODg8OEA4RDhIOEw4UDhUOFg4XDhgOGQ4aDhsOHA4dDh4OHw4gDiEOIg4jDiQOJQ4mDicOKA4pDioOKw4sDi0OLg4vDjAOMQ4yDjMONA41DjYONw44DjkOOg47DjwOPQ4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcOWA5ZDloOWw5cDl0OXg5fDmAOYQ5iDmMOZA5lDmYOZw5oDmkOag5rDmwObQ5uDm8OcA5xDnIOcw50DnUOdg53DngOeQ56DnsOfA59Dn4Ofw6ADoEOgg6DDoQOhQ6GDocOiA6JDooOiw6MDo0Ojg6PDpAOkQ6SDpMOlA6VDpYOlw6YDpkOmg6bDpwOnQ6eDp8OoA6hDqIOow6kDqUOpg6nDqgOqQ6qDqsOrA6tDq4Orw6wDrEOsg6zDrQOtQ62DrcOuA65DroOuw68Dr0Ovg6/DsAOwQ7CDsMOxA7FDsYOxw7IDskOyg7LDswOzQ7ODs8O0A7RDtIO0w7UDtUO1g7XDtgO2Q7aDtsO3A7dDt4O3w7gDuEO4g7jDuQO5Q7mDucO6A7pDuoO6w7sDu0O7g7vDvAO8Q7yDvMO9A71DvYO9w74DvkO+g77DvwO/Q7+Dv8OAA8BDwIPAw8EDwUPBg8HDwgPCQ8KDwsPDA8NDw4PDw8QDxEPEg8TDxQPFQ8WDxcPGA8ZDxoPGw8cDx0PHg8fDyAPIQ8iDyMPJA8lDyYPJw8oDykPKg8rDywPLQ8uDy8PMA8xDzIPMw80DzUPNg83DzgPOQ86DzsPPA89Dz4PPw9AD0EPQg9DD0QPRQ9GD0cPSA9JD0oPSw9MD00PTg9PD1APUQ9SD1MPVA9VD1YPVw9YD1kPWg9bD1wPXQ9eD18PYA9hD2IPYw9kD2UPZg9nD2gPaQ9qD2sPbA9tD24Pbw9wD3EPcg9zD3QPdQ92D3cPeA95D3oPew98D30Pfg9/D4APgQ+CD4MPhA+FD4YPhw+ID4kPig+LD4wPjQ+OD48PkA+RD5IPkw+UD5UPlg+XD5gPmQ+aD5sPnA+dD54Pnw+gD6EP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6BTpFOoU6xTsFO0U7hTvFPAU8RTyFPMU9BT1FPYU9xT4FPkU+hT7FPwU/RT+FP8UABUBFQIVAxUEFQUVBhUHFQgVCRUKFQsVDBUNFQ4VDxUQFREVEhUTFRQVFRUWFRcVGBUZFRoVGxUcFR0VHhUfFSAVIRUiFSMVJBUlFSYVJxUoFSkVKhUrFSwVLRUuFS8VMBUxFTIVMxU0FTUVNhU3FTgVORU6FTsVPBU9FT4VPxVAFUEVQhVDFUQVRRVGFUcVSBVJFUoVSxVMFU0VThVPFVAVURVSFVMVVBVVFVYVVxVYFVkVWhVbFVwVXRVeFV8VYBVhFWIVYxVkFWUVZhVnFWgVaRVqFWsVbBVtFW4VbxVwFXEVchVzFXQVdRV2FXcVeBV5FXoVexV8FX0VfhV/FYAVgRWCFYMVhBWFFYYVhxWIFYkVihWLFYwVjRWOFY8VkBWRFZIVkxWUFZUVlhWXFZgVmRWaFZsVnBWdFZ4VnxWgFaEVohWjFaQVpRWmFacVqBWpFaoVqxWsFa0VrhWvFbAVsRWyFbMVtBW1FbYVtxW4FbkVuhW7FbwVvRW+Fb8VwBXBFcIVwxXEFcUVxhXHFcgVyRXKFcsVzBXNFc4VzxXQFdEV0hXTFdQV1RXWFdcV2BXZFdoV2xXcFd0V3hXfFeAV4RXiFeMV5BXlFeYV5xXoFekV6hXrFewV7RXuFe8V8BXxFfIV8xX0FfUV9hX3FfgV+RX6FfsV/BX9Ff4V/xUAFgEWAhYDFgQWBRYGFgcWCBYJFgoWCxYMFg0WDhYPFhAWERYSFhMWFBYVFhYWFxYYFhkWGhYbFhwWHRYeFh8WIBYhFiIWIxYkFiUWJhYnFigWKRYqFisWLBYtFi4WLxYwFjEWMhYzFjQWNRY2FjcWOBY5FjoWOxY8Fj0WPhY/FkAWQRZCFkMWRBZFFkYWRxZIFkkWShZLFkwWTRZOFk8WUBZRFlIWUxZUFlUWVhZXFlgWWRZaFlsWXBZdFl4WXxZgFmEWYhZjFmQWZRZmFmcWaBZpFmoWaxZsFm0WbhZvFnAWcRZyFnMWdBZ1FnYWdxZ4FnkWehZ7FnwWfRZ+Fn8WgBaBFoIWgxaEFoUWhhaHFogWiRaKFosWjBaNFo4WjxaQFpEWkhaTFpQWlRaWFpcWmBaZFpoWmxacFp0WnhafFqAWoRaiFqMWpBalFqYWpxaoFqkWqharFqwWrRauFq8WsBaxFrIWsxa0FrUWtha3FrgWuRa6FrsWvBa9Fr4WvxbAFsEWwhbDFsQWxRbGFscWyBbJFsoWyxbMFs0WzhbPFtAW0RbSFtMW1BbVFtYW1xbYFtkW2hbbFtwW3RbeFt8W4BbhFuIW4xbkFuUW5hbnFugW6RbqFusW7BbtFu4W7xbwFvEW8hbzFvQW9Rb2FvcW+Bb5FvoW+xb8Fv0W/hb/FgAXARcCFwMXBBcFFwYXBxcIFwkXChcLFwwXDRcOFw8XEBcRFxIXExcUFxUXFhcXFxgXGRcaFxsXHBcdFx4XHxcgFyEXIhcjFyQXJRcmFycXKBcpFyoXKxcsFy0XLhcvFzAXMRcyFzMXNBc1FzYXNxc4FzkXOhc7FzwXPRc+Fz8XQBdBF0IXQxdEF0UXRhdHF0gXSRdKF0sXTBdNF04XTxdQF1EXUhdTF1QXVRdWF1cXWBdZF1oXWxdcF10XXhdfF2AXYRdiF2MXZBdlF2YXZxdoF2kXahdrF2wXbRduF28XcBdxF3IXcxd0F3UXdhd3F3gXeRd6F3sXfBd9F34XfxeAF4EXgheDF4QXhReGF4cXiBeJF4oXixeMF40XjhePF5AXkReSF5MXlBeVF5YXlxeYF5kXmhebF5wXnReeF58XoBehF6IXoxekF6UXphenF6gXqReqF6sXrBetF64XrxewF7EXshezF7QXtRe2F7cXuBe5F7oXuxe8F70Xvhe/F8AXwRfCF8MXxBfFF8YXxxfIF8kXyhfLF8wXzRfOF88X0BfRF9IX0xfUF9UX1hfXF9gX2RfaF9sX3BfdF94X3xfgF+EX4hfjF+QX5RfmF+cX6BfpF+oX6xfsF+0X7hfvF/AX8RfyF/MX9Bf1F/YX9xf4F/kX+hf7F/wX/Rf+F/8XABgBGAIYAxgEGAUYBhgHGAgYCRgKGAsYDBgNGA4YDxgQGBEYEhgTGBQYFRgWGBcYGBgZGBoYGxgcGB0YHhgfGCAYIRgiGCMYJBglGCYYJxgoGCkYKhgrGCwYLRguGC8YMBgxGDIYMxg0GDUYNhg3GDgYORg6GDsYPBg9GD4YPxhAGEEYQhhDGEQYRRhGGEcYSBhJGEoYSxhMGE0YThhPGFAYURhSGFMYVBhVGFYYVxhYGFkYWhhbGFwYXRheGF8YYBhhGGIYYxhkGGUYZhhnGGgYaRhqGGsYbBhtGG4YbxhwGHEYchhzGHQYdRh2GHcYeBh5GHoYexh8GH0Yfhh/GIAYgRiCGIMYhBiFGIYYhxiIGIkYihiLGIwYjRiOGI8YkBiRGJIYkxiUGJUYlhiXGJgYmRiaGJsYnBidGJ4YnxigGKEYohijGKQYpRimGKcYqBipGKoYqxisGK0YrhivGLAYsRiyGLMYtBi1GLYYtxi4GLkYuhi7GLwYvRi+GL8YwBjBGMIYwxjEGMUYxhjHGMgYyRjKGMsYzBjNGM4YzxjQGNEY0hjTGNQY1RjWGNcY2BjZGNoY2xjcGN0Y3hjfGOAY4RjiGOMY5BjlGOYY5xjoGOkY6hjrGOwY7RjuGO8Y8BjxGPIY8xj0GPUY9hj3GPgY+Rj6GPsY/Bj9GP4Y/xgAGQEZAhkDGQQZBRkGGQcZCBkJGQoZCxkMGQ0ZDhkPGRAZERkSGRMZFBkVGRYZFxkYGRkZGhkbGRwZHRkeGR8ZIBkhGSIZIxkkGSUZJhknGSgZKRkqGSsZLBktGS4ZLxkwGTEZMhkzGTQZNRk2GTcZOBk5GToZOxk8GT0ZPhk/GUAZQRlCGUMZRBlFGUYZRxlIGUkZShlLGUwZTRlOGU8ZUBlRGVIZUxlUGVUZVhlXGVgZWRlaGVsZXBldGV4ZXxlgGWEZYhljGWQZZRlmGWcZaBlpGWoZaxlsGW0ZbhlvGXAZcRlyGXMZdBl1GXYZdxl4GXkZehl7GXwZfRl+GX8ZgBmBGYIZgxmEGYUZhhmHGYgZiRmKGYsZjBmNGY4ZjxmQGZEZkhmTGZQZlRmWGZcZmBmZGZoZmxmcGZ0ZnhmfGaAZoRmiGaMZpBmlGaYZpxmoGakZqhmrGawZrRmuGa8ZsBmxGbIZsxm0GbUZthm3GbgZuRm6GbsZvBm9Gb4ZvxnAGcEZwhnDGcQZxRnGGccZyBnJGcoZyxnMGc0ZzhnPGdAZ0RnSGdMZ1BnVGdYZ1xnYGdkZ2hnbGdwZ3RneGd8Z4BnhGeIZ4xnkGeUZ5hnnGegZ6RnqGesZ7BntGe4Z7xnwGfEZ8hnzGfQZ9Rn2GfcZ+Bn5GfoZ+xn8Gf0Z/hn/GQAaARoCGgMaBBoFGgYaBxoIGgkaChoLGgwaDRoOGg8aEBoRGhIaExoUGhUaFhoXGhgaGRoaGhsaHBodGh4aHxogGiEaIhojGiQaJRomGicaKBopGioaKxosGi0aLhovGjAaMRoyGjMaNBo1GjYaNxo4GjkaOho7GjwaPRo+Gj8aQBpBGkIaQxpEGkUaRhpHGkgaSRpKGksaTBpNGk4aTxpQGlEaUhpTGlQaVRpWGlcaWBpZGloaWxpcGl0aXhpfGmAaYRpiGmMaZBplGmYaZxpoGmkaahprGmwabRpuGm8acBpxGnIacxp0GnUadhp3GngaeRp6GnsafBp9Gn4afxqAGoEaghqDGoQahRqGGocaiBqJGooaixqMGo0ajhqPGpAakRqSGpMalBqVGpYalxqYGpkamhqbGpwanRqeGp8aoBqhGqIaoxqkGqUaphqnGqgaqRqqGqsarBqtGq4arxqwGrEashqzGrQatRq2GrcauBq5Groauxq8Gr0avhq/GsAawRrCGsMaxBrFGsYaxxrIGskayhrLGswazRrOGs8a0BrRGtIa0xrUGtUa1hrXGtga2RraGtsa3BrdGt4a3xrgGuEa4hrjGuQa5RrmGuca6BrpGuoa6xrsGu0a7hrvGvAa8RryGvMa9Br1GvYa9xr4Gvka+hr7Gvwa/Rr+Gv8aABsBGwIbAxsEGwUbBhsHGwgbCRsKGwsbDBsNGw4bDxsQGxEbEhsTGxQbFRsWGxcbGBsZGxobGxscGx0bHhsfGyAbIRsiGyMbJBslGyYbJxsoGykbKhsrGywbLRsuGy8bMBsxGzIbMxs0GzUbNhs3GzgbORs6GzsbPBs9Gz4bPxtAG0EbQhtDG0QbRRtGG0cbSBtJG0obSxtMG00bThtPG1AbURtSG1MbVBtVG1YbVxtYG1kbWhtbG1wbXRteG18bYBthG2IbYxtkG2UbZhtnG2gbaRtqG2sbbBttG24bbxtwG3EbchtzG3QbdRt2G3cbeBt5G3obext8G30bfht/G4AbgRuCG4MbhBuFG4YbhxuIG4kbihuLG4wbjRuOG48bkBuRG5IbkxuUG5UblhuXG5gbmRuaG5sbnBudG54bnxugG6EbohujG6QbpRumG6cbqBupG6obqxusG60brhuvG7AbsRuyG7MbtBu1G7Ybtxu4G7kbuhu7G7wbvRu+G78bwBvBG8IbwxvEG8UbxhvHG8gbyRvKG8sbzBvNG84bzxvQG9Eb0hvTG9Qb1RvWG9cb2BvZG9ob2xvcG90b3hvfG+Ab4RviG+Mb5BvlG+Yb5xvoG+kb6hvrG+wb7RvuG+8b8BvxG/Ib8xv0G/Ub9hv3G/gb+Rv6G/sb/Bv9G/4b/xsAHAEcAhwDHAQcBRwGHAccCBwJHAocCxwMHA0cDhwPHBAcERwSHBMcFBwVHBYcFxwYHBkcGhwbHBwcHRweHB8cIBwhHCIcIxwkHCUcJhwnHCgcKRwqHCscLBwtHC4cLxwwHDEcMhwzHDQcNRw2HDccOBw5HDocOxw8HD0cPhw/HEAcQRxCHEMcRBxFHEYcRxxIHEkcShxLHEwcTRxOHE8cUBxRHFIcUxxUHFUcVhxXHFgcWRxaHFscXBxdHF4cXxxgHGEcYhxjHGQcZRxmHGccaBxpHGocaxxsHG0cbhxvHHAccRxyHHMcdBx1HHYcdxx4HHkcehx7HHwcfRx+HH8cgByBHIIcgxyEHIUchhyHHIgciRyKHIscjByNHI4cjxyQHJEckhyTHJQclRyWHJccmByZHJocmxycHJ0cnhyfHKAcoRyiHKMcpBylHKYcpxyoHKkcqhyrHKwcrRyuHK8csByxHLIcsxy0HLUcthy3HLgcuRy6HLscvBy9HL4cvxzAHMEcwhzDHMQcxRzGHMccyBzJHMocyxzMHM0czhzPHNAc0RzSHNMc1BzVHNYc1xzYHNkc2hzbHNwc3RzeHN8c4BzhHOIc4xzkHOUc5hznHOgc6RzqHOsc7BztHO4c7xzwHPEc8hzzHPQc9Rz2HPcc+Bz5HPoc+xz8HP0c/hz/HAAdAR0CHQMdBB0FHQYdBx0IHQkdCh0LHQwdDR0OHQ8dEB0RHRIdEx0UHRUdFh0XHRgdGR0aHRsdHB0dHR4dHx0gHSEdIh0jHSQdJR0mHScdKB0pHSodKx0sHS0dLh0vHTAdMR0yHTMdNB01HTYdNx04HTkdOh07HTwdPR0+HT8dQB1BHUIdQx1EHUUdRh1HHUgdSR1KHUsdTB1NHU4dTx1QHVEdUh1THVQdVR1WHVcdWB1ZHVodWx1cHV0dXh1fHWAdYR1iHWMdZB1lHWYdZx1oHWkdah1rHWwdbR1uHW8dcB1xHXIdcx10HXUddh13HXgdeR16HXsdfB19HX4dfx2AHYEdgh2DHYQdhR2GHYcdiB2JHYodix2MHY0djh2PHZAdkR2SHZMdlB2VHZYdlx2YHZkdmh2bHZwdnR2eHZ8doB2hHaIdox2kHaUdph2nHagdqR2qHasdrB2tHa4drx2wHbEdsh2zHbQdtR22HbcduB25Hbodux28Hb0dvh2/HcAdwR3CHcMdxB3FHcYdxx3IHckdyh3LHcwdzR3OHc8d0B3RHdId0x3UHdUd1h3XHdgd2R3aHdsd3B3dHd4d3x3gHeEd4h3jHeQd5R3mHecd6B3pHeod6x3sHe0d7h3vHfAd8R3yHfMd9B31HfYd9x34Hfkd+h37Hfwd/R3+Hf8dAB4BHgIeAx4EHgUeBh4HHggeCR4KHgseDB4NHg4eDx4QHhEeEh4THhQeFR4WHhceGB4ZHhoeGx4cHh0eHh4fHiAeIR4iHiMeJB4lHiYeJx4oHikeKh4rHiweLR4uHi8eMB4xHjIeMx40HjUeNh43HjgeOR46HjsePB49Hj4ePx5QQQZ5AAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA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BwAwAD8AQAAHADAAQABBAAcAMABBAEIABwAwAEIAQwAHADAAQwBEAAcAMABEAEUABwAwAEUARgAHADAARgBHAAcASABJAEoABwBIAEoASwAHAEgASwBMAAcASABMAE0ABwBIAE0ATgAHAEgATgBPAAcASABPAFAABwBIAFAAUQAHAEgAUQBSAAcASABSAFMABwBIAFMAVAAHAEgAVABVAAcASABVAFYABwBIAFYAVwAHAEgAVwBYAAcASABYAFkABwBIAFkAWgAHAEgAWgBbAAcASABbAFwABwBIAFwAXQAHAEgAXQBeAAcASABeAF8ABwBgAGEAYgAHAGAAYgBjAAcAYABjAGQABwBgAGQAZQAHAGAAZQBmAAcAYABmAGcABwBgAGcAaAAHAGAAaABpAAcAYABpAGoABwBgAGoAawAHAGAAawBsAAcAYABsAG0ABwBgAG0AbgAHAGAAbgBvAAcAYABvAHAABwBgAHAAcQAHAGAAcQByAAcAYAByAHMABwBgAHMAdAAHAGAAdAB1AAcAYAB1AHYABwBgAHYAdwAHAHgAeQB6AAcAeAB6AHsABwB4AHsAfAAHAHgAfAB9AAcAeAB9AH4ABwB4AH4AfwAHAHgAfwCAAAcAeACAAIEABwB4AIEAggAHAHgAggCDAAcAeACDAIQABwB4AIQAhQAHAHgAhQCGAAcAeACGAIcABwB4AIcAiAAHAHgAiACJAAcAeACJAIoABwB4AIoAiwAHAHgAiwCMAAcAeACMAI0ABwB4AI0AjgAHAHgAjgCPAAcAkACRAJIABwCQAJIAkwAHAJAAkwCUAAcAkACUAJUABwCQAJUAlgAHAJAAlgCXAAcAkACXAJgABwCQAJgAmQAHAJAAmQCaAAcAkACaAJsABwCQAJsAnAAHAJAAnACdAAcAkACdAJ4ABwCQAJ4AnwAHAJAAnwCgAAcAkACgAKEABwCQAKEAogAHAJAAogCjAAcAkACjAKQABwCQAKQApQAHAJAApQCmAAcAkACmAKcABwCoAKkAqgAHAKgAqgCrAAcAqACrAKwABwCoAKwArQAHAKgArQCuAAcAqACuAK8ABwCoAK8AsAAHAKgAsACxAAcAqACxALIABwCoALIAswAHAKgAswC0AAcAqAC0ALUABwCoALUAtgAHAKgAtgC3AAcAqAC3ALgABwCoALgAuQAHAKgAuQC6AAcAqAC6ALsABwCoALsAvAAHAKgAvAC9AAcAqAC9AL4ABwCoAL4AvwAHAMAAwQDCAAcAwADCAMMABwDAAMMAxAAHAMAAxADFAAcAwADFAMYABwDAAMYAxwAHAMAAxwDIAAcAwADIAMkABwDAAMkAygAHAMAAygDLAAcAwADLAMwABwDAAMwAzQAHAMAAzQDOAAcAwADOAM8ABwDAAM8A0AAHAMAA0ADRAAcAwADRANIABwDAANIA0wAHAMAA0wDUAAcAwADUANUABwDAANUA1gAHAMAA1gDXAAcA2ADZANoABwDYANoA2wAHANgA2wDcAAcA2ADcAN0ABwDYAN0A3gAHANgA3gDfAAcA2ADfAOAABwDYAOAA4QAHANgA4QDiAAcA2ADiAOMABwDYAOMA5AAHANgA5ADlAAcA2ADlAOYABwDYAOYA5wAHANgA5wDoAAcA2ADoAOkABwDYAOkA6gAHANgA6gDrAAcA2ADrAOwABwDYAOwA7QAHANgA7QDuAAcA2ADuAO8ABwDwAPEA8gAHAPAA8gDzAAcA8ADzAPQABwDwAPQA9QAHAPAA9QD2AAcA8AD2APcABwDwAPcA+AAHAPAA+AD5AAcA8AD5APoABwDwAPoA+wAHAPAA+wD8AAcA8AD8AP0ABwDwAP0A/gAHAPAA/gD/AAcA8AD/AAABBwDwAAABAQEHAPAAAQECAQcA8AACAQMBBwDwAAMBBAEHAPAABAEFAQcA8AAFAQYBBwDwAAYBBwEHAAgBCQEKAQcACAEKAQsBBwAIAQsBDAEHAAgBDAENAQcACAENAQ4BBwAIAQ4BDwEHAAgBDwEQAQcACAEQAREBBwAIAREBEgEHAAgBEgETAQcACAETARQBBwAIARQBFQEHAAgBFQEWAQcACAEWARcBBwAIARcBGAEHAAgBGAEZAQcACAEZARoBBwAIARoBGwEHAAgBGwEcAQcACAEcAR0BBwAIAR0BHgEHAAgBHgEfAQcAIAEhASIBBwAiASMBIAEHACEBJAElAQcAJQEiASEBBwAkASYBJwEHACcBJQEkAQcAIgEoASkBBwApASMBIgEHACoBKwEsAQcALAEtASoBBwAnAS4BLwEHAC8BJQEnAQcAJgEwAS4BBwAuAScBJgEHADEBMAEmAQcAJgEkATEBBwAyATMBNAEHADQBNQEyAQcANgE3ASEBBwAhASABNgEHACkBNgEgAQcAIAEjASkBBwAoATcBNgEHADYBKQEoAQcALwExATcBBwA3ASgBLwEHAC4BMAExAQcAMQEvAS4BBwAhATgBOQEHADkBJAEhAQcAJAE5AToBBwA6ATEBJAEHADEBOgE7AQcAOwE3ATEBBwA3ATsBOAEHADgBIQE3AQcAIgE8AT0BBwA9ASgBIgEHACgBPQE+AQcAPgEvASgBBwAvAT4BPwEHAD8BJQEvAQcAJQE/ATwBBwA8ASIBJQEHACwBQAFBAQcAQQEtASwBBwArAUIBQAEHAEABLAErAQcAKgFDAUIBBwBCASsBKgEHAC0BQQFDAQcAQwEqAS0BBwBEAUUBQQEHAEEBQAFEAQcAPAFFAUQBBwBEAT0BPAEHAD4BPQFEAQcARAFGAT4BBwBCAUYBRAEHAEQBQAFCAQcAQwFHAUYBBwBGAUIBQwEHAD4BRgFHAQcARwE/AT4BBwA8AT8BRwEHAEcBRQE8AQcAQQFFAUcBBwBHAUMBQQEHADQBSAFJAQcASQE1ATQBBwAzAUoBSAEHAEgBNAEzAQcAMgFLAUoBBwBKATMBMgEHADUBSQFLAQcASwEyATUBBwA5ATgBTAEHAEwBTQE5AQcASAFNAUwBBwBMAUkBSAEHAE4BTQFIAQcASAFKAU4BBwA5AU0BTgEHAE4BOgE5AQcAOwE6AU4BBwBOAU8BOwEHAEsBTwFOAQcATgFKAUsBBwBJAUwBTwEHAE8BSwFJAQcAOwFPAUwBBwBMATgBOwEHAFABUQFSAQcAUgFTAVABBwBUAVUBVgEHAFYBVwFUAQcAUwFSAVgBBwBYAVkBUwEHAFoBVAFXAQcAVwFbAVoBBwBZAVgBXAEHAFwBXQFZAQcAXgFaAVsBBwBbAV8BXgEHAFwBYAFhAQcAYQFdAVwBBwBRAWIBYwEHAGMBUgFRAQcAUAFkAWIBBwBiAVEBUAEHAFMBZQFkAQcAZAFQAVMBBwBZAWYBZQEHAGUBUwFZAQcAZwFYAVIBBwBSAWMBZwEHAF0BYQFmAQcAZgFZAV0BBwBgAVwBWAEHAFgBZwFgAQcAaAFhAWABBwBgAWkBaAEHAGIBagFrAQcAawFjAWIBBwBsAWoBYgEHAGIBZAFsAQcAbQFsAWQBBwBkAWUBbQEHAGYBbgFtAQcAbQFlAWYBBwBjAWsBbwEHAG8BZwFjAQcAbgFmAWEBBwBhAWgBbgEHAGcBbwFpAQcAaQFgAWcBBwBpAXABcQEHAHEBaAFpAQcAXwFxAXABBwBwAV4BXwEHAGoBcgFzAQcAcwFrAWoBBwBUAXMBcgEHAHIBVQFUAQcAbAF0AXIBBwByAWoBbAEHAFUBcgF0AQcAdAFWAVUBBwBtAXUBdAEHAHQBbAFtAQcAVgF0AXUBBwB1AVcBVgEHAHYBWwFXAQcAVwF1AXYBBwB1AW0BbgEHAG4BdgF1AQcAawFzAXcBBwB3AW8BawEHAFoBdwFzAQcAcwFUAVoBBwBoAXEBdgEHAHYBbgFoAQcAcQFfAVsBBwBbAXYBcQEHAG8BdwFwAQcAcAFpAW8BBwBeAXABdwEHAHcBWgFeAQcAeAF5AXoBBwB6AXsBeAEHAHwBfQF+AQcAfgF/AXwBBwB7AYABgQEHAIEBeAF7AQcAeAGBAYIBBwCCAXkBeAEHAHoBgwGAAQcAgAF7AXoBBwB5AYIBgwEHAIMBegF5AQcAhAGFAYEBBwCBAYABhAEHAH4BhQGEAQcAhAF/AX4BBwCFAYYBggEHAIIBgQGFAQcAfQGGAYUBBwCFAX4BfQEHAIMBhwGEAQcAhAGAAYMBBwB/AYQBhwEHAIcBfAF/AQcAggGGAYcBBwCHAYMBggEHAHwBhwGGAQcAhgF9AXwBBwCIAYkBigEHAIoBiwGIAQcAjAGNAY4BBwCOAY8BjAEHAJABkQGSAQcAkgGTAZABBwCRAZQBlQEHAJUBkgGRAQcAlgGXAZABBwCQAZMBlgEHAJUBlAGXAQcAlwGWAZUBBwCQAZgBmQEHAJkBkQGQAQcAjgGZAZgBBwCYAY8BjgEHAJEBmQGaAQcAmgGUAZEBBwCNAZoBmQEHAJkBjgGNAQcAlwGbAZgBBwCYAZABlwEHAI8BmAGbAQcAmwGMAY8BBwCUAZoBmwEHAJsBlwGUAQcAjAGbAZoBBwCaAY0BjAEHAJIBnAGdAQcAnQGTAZIBBwCLAZ0BnAEHAJwBiAGLAQcAlQGeAZwBBwCcAZIBlQEHAIgBnAGeAQcAngGJAYgBBwCTAZ0BnwEHAJ8BlgGTAQcAigGfAZ0BBwCdAYsBigEHAJYBnwGeAQcAngGVAZYBBwCJAZ4BnwEHAJ8BigGJAQcAoAGhAaIBBwCiAaMBoAEHAKIBpAGlAQcApQGjAaIBBwChAaYBpAEHAKQBogGhAQcApwGmAaEBBwChAaABpwEHAKUBpwGgAQcAoAGjAaUBBwCkAaYBpwEHAKcBpQGkAQcAqAGpAaoBBwCqAasBqAEHAKoBrAGtAQcArQGrAaoBBwCpAa4BrAEHAKwBqgGpAQcArwGuAakBBwCpAagBrwEHAK0BrwGoAQcAqAGrAa0BBwCsAa4BrwEHAK8BrQGsAQcAsAGxAbIBBwCyAbMBsAEHALIBtAG1AQcAtQGzAbIBBwCxAbYBtAEHALQBsgGxAQcAtwG2AbEBBwCxAbABtwEHALUBtwGwAQcAsAGzAbUBBwC0AbYBtwEHALcBtQG0AQcAGAAvABcABwAXABYAGAAHABkAGAAWAAcAFgAVABkABwAaABkAFQAHABUAFAAaAAcAGwAaABQABwAUABMAGwAHABwAGwATAAcAEwASABwABwAdABwAEgAHABIAEQAdAAcAHgAdABEABwARABAAHgAHAB8AHgAQAAcAEAAPAB8ABwAgAB8ADwAHAA8ADgAgAAcAIQAgAA4ABwAOAA0AIQAHACIAIQANAAcADQAMACIABwAjACIADAAHAAwACwAjAAcACgAkACMABwAjAAsACgAHAAkAJQAkAAcAJAAKAAkABwAIACYAJQAHACUACQAIAAcABwAnACYABwAmAAgABwAHAAYAKAAnAAcAJwAHAAYABwAFACkAKAAHACgABgAFAAcABAAqACkABwApAAUABAAHAAMAKwAqAAcAKgAEAAMABwACACwAKwAHACsAAwACAAcAAQAtACwABwAsAAIAAQAHAAAALgAtAAcALQABAAAABwAXAC8ALgAHAC4AAAAXAAcASABfAEcABwBHAEYASAAHAEkASABGAAcARgBFAEkABwBKAEkARQAHAEUARABKAAcASwBKAEQABwBEAEMASwAHAEwASwBDAAcAQwBCAEwABwBNAEwAQgAHAEIAQQBNAAcATgBNAEEABwBBAEAATgAHAE8ATgBAAAcAQAA/AE8ABwBQAE8APwAHAD8APgBQAAcAUQBQAD4ABwA+AD0AUQAHAFIAUQA9AAcAPQA8AFIABwBTAFIAPAAHADwAOwBTAAcAOgBUAFMABwBTADsAOgAHADkAVQBUAAcAVAA6ADkABwA4AFYAVQAHAFUAOQA4AAcANwBXAFYABwBWADgANwAHADYAWABXAAcAVwA3ADYABwA1AFkAWAAHAFgANgA1AAcANABaAFkABwBZADUANAAHADMAWwBaAAcAWgA0ADMABwAyAFwAWwAHAFsAMwAyAAcAMQBdAFwABwBcADIAMQAHADAAXgBdAAcAXQAxADAABwBHAF8AXgAHAF4AMABHAAcAuAG5AboBBwC6AbsBuAEHALwBvQG+AQcAvgG/AbwBBwDAAcEBwgEHAMIBwwHAAQcAxAHFAcEBBwDBAcABxAEHAMIBxgHHAQcAxwHDAcIBBwDGAcUBxAEHAMQBxwHGAQcAyAHJAcIBBwDCAcEByAEHAMkByAG8AQcAvAG/AckBBwDKAcgBwQEHAMEBxQHKAQcAyAHKAb0BBwC9AbwByAEHAMkBywHGAQcAxgHCAckBBwDLAckBvwEHAL8BvgHLAQcAywHKAcUBBwDFAcYBywEHAMoBywG+AQcAvgG9AcoBBwDMAc0BwAEHAMABwwHMAQcAzQHMAbsBBwC7AboBzQEHAM0BzgHEAQcAxAHAAc0BBwDOAc0BugEHALoBuQHOAQcAzwHMAcMBBwDDAccBzwEHAMwBzwG4AQcAuAG7AcwBBwDOAc8BxwEHAMcBxAHOAQcAzwHOAbkBBwC5AbgBzwEHANAB0QHSAQcA0gHTAdABBwDUAdUB0AEHANAB0wHUAQcA1QHWAdEBBwDRAdAB1QEHANEB1gHXAQcA1wHSAdEBBwDSAdcB1AEHANQB0wHSAQcA1wHWAdUBBwDVAdQB1wEHANgB2QHaAQcA2gHbAdgBBwDcAd0B2AEHANgB2wHcAQcA3QHeAdkBBwDZAdgB3QEHANkB3gHfAQcA3wHaAdkBBwDaAd8B3AEHANwB2wHaAQcA3wHeAd0BBwDdAdwB3wEHAOAB4QHiAQcA4gHjAeABBwDkAeUB5gEHAOYB5wHkAQcA6AHpAeoBBwDqAesB6AEHAOkB7AHtAQcA7QHqAekBBwDuAe8B6AEHAOgB6wHuAQcA7QHsAe8BBwDvAe4B7QEHAOgB8AHxAQcA8QHpAegBBwDmAfEB8AEHAPAB5wHmAQcA6QHxAfIBBwDyAewB6QEHAOUB8gHxAQcA8QHmAeUBBwDvAfMB8AEHAPAB6AHvAQcA5wHwAfMBBwDzAeQB5wEHAOwB8gHzAQcA8wHvAewBBwDkAfMB8gEHAPIB5QHkAQcA6gH0AfUBBwD1AesB6gEHAOMB9QH0AQcA9AHgAeMBBwDtAfYB9AEHAPQB6gHtAQcA4AH0AfYBBwD2AeEB4AEHAOsB9QH3AQcA9wHuAesBBwDiAfcB9QEHAPUB4wHiAQcA7gH3AfYBBwD2Ae0B7gEHAOEB9gH3AQcA9wHiAeEBBwD4AfkB+gEHAPoB+wH4AQcA+gH8Af0BBwD9AfsB+gEHAPkB/gH8AQcA/AH6AfkBBwD/Af4B+QEHAPkB+AH/AQcA/QH/AfgBBwD4AfsB/QEHAPwB/gH/AQcA/wH9AfwBBwAAAgECAgIHAAICAwIAAgcAAgIEAgUCBwAFAgMCAgIHAAECBgIEAgcABAICAgECBwAHAgYCAQIHAAECAAIHAgcABQIHAgACBwAAAgMCBQIHAAQCBgIHAgcABwIFAgQCBwAIAgkCCgIHAAoCCwIIAgcADAINAg4CBwAOAg8CDAIHAAsCEAIRAgcAEQIIAgsCBwAIAhECEgIHABICCQIIAgcACgITAhACBwAQAgsCCgIHAAkCEgITAgcAEwIKAgkCBwAUAhUCEQIHABECEAIUAgcAFQIWAhICBwASAhECFQIHABMCFwIUAgcAFAIQAhMCBwASAhYCFwIHABcCEwISAgcAFAIYAhkCBwAZAhUCFAIHAA4CGQIYAgcAGAIPAg4CBwAVAhkCGgIHABoCFgIVAgcADQIaAhkCBwAZAg4CDQIHABcCGwIYAgcAGAIUAhcCBwAPAhgCGwIHABsCDAIPAgcAFgIaAhsCBwAbAhcCFgIHAAwCGwIaAgcAGgINAgwCBwAcAngAjwAHAI8AHQIcAgcAHgJ5AHgABwB4ABwCHgIHAB8CegB5AAcAeQAeAh8CBwAgAnsAegAHAHoAHwIgAgcAIQJ8AHsABwB7ACACIQIHACICfQB8AAcAfAAhAiICBwB+AH0AIgIHACICIwJ+AAcAfwB+ACMCBwAjAiQCfwAHAIAAfwAkAgcAJAIlAoAABwCBAIAAJQIHACUCJgKBAAcAggCBACYCBwAmAicCggAHAIMAggAnAgcAJwIoAoMABwCEAIMAKAIHACgCKQKEAAcAhQCEACkCBwApAioChQAHAIYAhQAqAgcAKgIrAoYABwCHAIYAKwIHACsCLAKHAAcAiACHACwCBwAsAi0CiAAHAIkAiAAtAgcALQIuAokABwAvAooAiQAHAIkALgIvAgcAMAKLAIoABwCKAC8CMAIHADECjACLAAcAiwAwAjECBwAyAo0AjAAHAIwAMQIyAgcAMwKOAI0ABwCNADICMwIHAB0CjwCOAAcAjgAzAh0CBwA0Ah0CMwIHADMCNQI0AgcANgIcAh0CBwAdAjQCNgIHADcCHgIcAgcAHAI2AjcCBwA4Ah8CHgIHAB4CNwI4AgcAOQIgAh8CBwAfAjgCOQIHADoCIQIgAgcAIAI5AjoCBwA7AiICIQIHACECOgI7AgcAIwIiAjsCBwA7AjwCIwIHACQCIwI8AgcAPAI9AiQCBwAlAiQCPQIHAD0CPgIlAgcAJgIlAj4CBwA+Aj8CJgIHACcCJgI/AgcAPwJAAicCBwAoAicCQAIHAEACQQIoAgcAKQIoAkECBwBBAkICKQIHACoCKQJCAgcAQgJDAioCBwArAioCQwIHAEMCRAIrAgcALAIrAkQCBwBEAkUCLAIHAC0CLAJFAgcARQJGAi0CBwAuAi0CRgIHAEYCRwIuAgcASAIvAi4CBwAuAkcCSAIHAEkCMAIvAgcALwJIAkkCBwBKAjECMAIHADACSQJKAgcASwIyAjECBwAxAkoCSwIHADUCMwIyAgcAMgJLAjUCBwBMAjQCNQIHADUCTQJMAgcATgI2AjQCBwA0AkwCTgIHAE8CNwI2AgcANgJOAk8CBwBQAjgCNwIHADcCTwJQAgcAUQI5AjgCBwA4AlACUQIHAFICOgI5AgcAOQJRAlICBwBTAjsCOgIHADoCUgJTAgcAPAI7AlMCBwBTAlQCPAIHAD0CPAJUAgcAVAJVAj0CBwA+Aj0CVQIHAFUCVgI+AgcAPwI+AlYCBwBWAlcCPwIHAEACPwJXAgcAVwJYAkACBwBBAkACWAIHAFgCWQJBAgcAQgJBAlkCBwBZAloCQgIHAEMCQgJaAgcAWgJbAkMCBwBEAkMCWwIHAFsCXAJEAgcARQJEAlwCBwBcAl0CRQIHAEYCRQJdAgcAXQJeAkYCBwBHAkYCXgIHAF4CXwJHAgcAYAJIAkcCBwBHAl8CYAIHAGECSQJIAgcASAJgAmECBwBiAkoCSQIHAEkCYQJiAgcAYwJLAkoCBwBKAmICYwIHAE0CNQJLAgcASwJjAk0CBwBkAkwCTQIHAE0CZQJkAgcAZgJOAkwCBwBMAmQCZgIHAGcCTwJOAgcATgJmAmcCBwBoAlACTwIHAE8CZwJoAgcAaQJRAlACBwBQAmgCaQIHAGoCUgJRAgcAUQJpAmoCBwBrAlMCUgIHAFICagJrAgcAVAJTAmsCBwBrAmwCVAIHAFUCVAJsAgcAbAJtAlUCBwBWAlUCbQIHAG0CbgJWAgcAVwJWAm4CBwBuAm8CVwIHAFgCVwJvAgcAbwJwAlgCBwBZAlgCcAIHAHACcQJZAgcAWgJZAnECBwBxAnICWgIHAFsCWgJyAgcAcgJzAlsCBwBcAlsCcwIHAHMCdAJcAgcAXQJcAnQCBwB0AnUCXQIHAF4CXQJ1AgcAdQJ2Al4CBwBfAl4CdgIHAHYCdwJfAgcAeAJgAl8CBwBfAncCeAIHAHkCYQJgAgcAYAJ4AnkCBwB6AmICYQIHAGECeQJ6AgcAewJjAmICBwBiAnoCewIHAGUCTQJjAgcAYwJ7AmUCBwB3AGQCZQIHAGUCYAB3AAcAdgBmAmQCBwBkAncAdgAHAHUAZwJmAgcAZgJ2AHUABwB0AGgCZwIHAGcCdQB0AAcAcwBpAmgCBwBoAnQAcwAHAHIAagJpAgcAaQJzAHIABwBxAGsCagIHAGoCcgBxAAcAbAJrAnEABwBxAHAAbAIHAG0CbAJwAAcAcABvAG0CBwBuAm0CbwAHAG8AbgBuAgcAbwJuAm4ABwBuAG0AbwIHAHACbwJtAAcAbQBsAHACBwBxAnACbAAHAGwAawBxAgcAcgJxAmsABwBrAGoAcgIHAHMCcgJqAAcAagBpAHMCBwB0AnMCaQAHAGkAaAB0AgcAdQJ0AmgABwBoAGcAdQIHAHYCdQJnAAcAZwBmAHYCBwB3AnYCZgAHAGYAZQB3AgcAZAB4AncCBwB3AmUAZAAHAGMAeQJ4AgcAeAJkAGMABwBiAHoCeQIHAHkCYwBiAAcAYQB7AnoCBwB6AmIAYQAHAGAAZQJ7AgcAewJhAGAABwB8An0CfgIHAH4CfwJ8AgcAfQKAAoECBwCBAn4CfQIHAIACggKDAgcAgwKBAoACBwB+AoQChQIHAIUCfwJ+AgcAhgKHAogCBwCIAokChgIHAIMCigKLAgcAiwKBAoMCBwCCAowCigIHAIoCgwKCAgcAjQKMAoICBwCCAoACjQIHAI4CjwKQAgcAkAKRAo4CBwCSApMCfQIHAH0CfAKSAgcAhQKSAnwCBwB8An8ChQIHAIQCkwKSAgcAkgKFAoQCBwCLAo0CkwIHAJMChAKLAgcAigKMAo0CBwCNAosCigIHAH0ClAKVAgcAlQKAAn0CBwCAApUClgIHAJYCjQKAAgcAjQKWApcCBwCXApMCjQIHAJMClwKUAgcAlAJ9ApMCBwB+ApgCmQIHAJkChAJ+AgcAhAKZApoCBwCaAosChAIHAIsCmgKbAgcAmwKBAosCBwCBApsCmAIHAJgCfgKBAgcAiAKcAp0CBwCdAokCiAIHAIcCngKcAgcAnAKIAocCBwCGAp8CngIHAJ4ChwKGAgcAiQKdAp8CBwCfAoYCiQIHAKACoQKdAgcAnQKcAqACBwCYAqECoAIHAKACmQKYAgcAmgKZAqACBwCgAqICmgIHAJ4CogKgAgcAoAKcAp4CBwCfAqMCogIHAKICngKfAgcAmgKiAqMCBwCjApsCmgIHAJgCmwKjAgcAowKhApgCBwCdAqECowIHAKMCnwKdAgcAkAKkAqUCBwClApECkAIHAI8CpgKkAgcApAKQAo8CBwCOAqcCpgIHAKYCjwKOAgcAkQKlAqcCBwCnAo4CkQIHAJUClAKoAgcAqAKpApUCBwCkAqkCqAIHAKgCpQKkAgcAqgKpAqQCBwCkAqYCqgIHAJUCqQKqAgcAqgKWApUCBwCXApYCqgIHAKoCqwKXAgcApwKrAqoCBwCqAqYCpwIHAKUCqAKrAgcAqwKnAqUCBwCXAqsCqAIHAKgClAKXAgcArAKtAq4CBwCuAq8CrAIHALACsQKyAgcAsgKzArACBwCvAq4CtAIHALQCtQKvAgcAtgKwArMCBwCzArcCtgIHALUCtAK4AgcAuAK5ArUCBwC6ArYCtwIHALcCuwK6AgcAuAK8Ar0CBwC9ArkCuAIHAK0CvgK/AgcAvwKuAq0CBwCsAsACvgIHAL4CrQKsAgcArwLBAsACBwDAAqwCrwIHALUCwgLBAgcAwQKvArUCBwDDArQCrgIHAK4CvwLDAgcAuQK9AsICBwDCArUCuQIHALwCuAK0AgcAtALDArwCBwDEAr0CvAIHALwCxQLEAgcAvgLGAscCBwDHAr8CvgIHAMgCxgK+AgcAvgLAAsgCBwDJAsgCwAIHAMACwQLJAgcAwgLKAskCBwDJAsECwgIHAL8CxwLLAgcAywLDAr8CBwDKAsICvQIHAL0CxALKAgcAwwLLAsUCBwDFArwCwwIHAMUCzALNAgcAzQLEAsUCBwC7As0CzAIHAMwCugK7AgcAxgLOAs8CBwDPAscCxgIHALACzwLOAgcAzgKxArACBwDIAtACzgIHAM4CxgLIAgcAsQLOAtACBwDQArICsQIHAMkC0QLQAgcA0ALIAskCBwCyAtAC0QIHANECswKyAgcA0gK3ArMCBwCzAtEC0gIHANECyQLKAgcAygLSAtECBwDHAs8C0wIHANMCywLHAgcAtgLTAs8CBwDPArACtgIHAMQCzQLSAgcA0gLKAsQCBwDNArsCtwIHALcC0gLNAgcAywLTAswCBwDMAsUCywIHALoCzALTAgcA0wK2AroCBwDUAtUC1gIHANYC1wLUAgcA2ALZAtoCBwDaAtsC2AIHANcC3ALdAgcA3QLUAtcCBwDUAt0C3gIHAN4C1QLUAgcA1gLfAtwCBwDcAtcC1gIHANUC3gLfAgcA3wLWAtUCBwDgAuEC3QIHAN0C3ALgAgcA2gLhAuACBwDgAtsC2gIHAOEC4gLeAgcA3gLdAuECBwDZAuIC4QIHAOEC2gLZAgcA3wLjAuACBwDgAtwC3wIHANsC4ALjAgcA4wLYAtsCBwDeAuIC4wIHAOMC3wLeAgcA2ALjAuICBwDiAtkC2AIHAOQC5QLmAgcA5gLnAuQCBwDoAukC6gIHAOoC6wLoAgcA7ALtAu4CBwDuAu8C7AIHAO0C8ALxAgcA8QLuAu0CBwDyAvMC7AIHAOwC7wLyAgcA8QLwAvMCBwDzAvIC8QIHAOwC9AL1AgcA9QLtAuwCBwDqAvUC9AIHAPQC6wLqAgcA7QL1AvYCBwD2AvAC7QIHAOkC9gL1AgcA9QLqAukCBwDzAvcC9AIHAPQC7ALzAgcA6wL0AvcCBwD3AugC6wIHAPAC9gL3AgcA9wLzAvACBwDoAvcC9gIHAPYC6QLoAgcA7gL4AvkCBwD5Au8C7gIHAOcC+QL4AgcA+ALkAucCBwDxAvoC+AIHAPgC7gLxAgcA5AL4AvoCBwD6AuUC5AIHAO8C+QL7AgcA+wLyAu8CBwDmAvsC+QIHAPkC5wLmAgcA8gL7AvoCBwD6AvEC8gIHAOUC+gL7AgcA+wLmAuUCBwD8Av0C/gIHAP4C/wL8AgcA/gIAAwEDBwABA/8C/gIHAP0CAgMAAwcAAAP+Av0CBwADAwID/QIHAP0C/AIDAwcAAQMDA/wCBwD8Av8CAQMHAAADAgMDAwcAAwMBAwADBwAEAwUDBgMHAAYDBwMEAwcABgMIAwkDBwAJAwcDBgMHAAUDCgMIAwcACAMGAwUDBwALAwoDBQMHAAUDBAMLAwcACQMLAwQDBwAEAwcDCQMHAAgDCgMLAwcACwMJAwgDBwAMAw0DDgMHAA4DDwMMAwcADgMQAxEDBwARAw8DDgMHAA0DEgMQAwcAEAMOAw0DBwATAxIDDQMHAA0DDAMTAwcAEQMTAwwDBwAMAw8DEQMHABADEgMTAwcAEwMRAxADBwCoAL8ApwAHAKcApgCoAAcAqQCoAKYABwCmAKUAqQAHAKoAqQClAAcApQCkAKoABwCrAKoApAAHAKQAowCrAAcArACrAKMABwCjAKIArAAHAK0ArACiAAcAogChAK0ABwCuAK0AoQAHAKEAoACuAAcArwCuAKAABwCgAJ8ArwAHALAArwCfAAcAnwCeALAABwCxALAAngAHAJ4AnQCxAAcAsgCxAJ0ABwCdAJwAsgAHALMAsgCcAAcAnACbALMABwCaALQAswAHALMAmwCaAAcAmQC1ALQABwC0AJoAmQAHAJgAtgC1AAcAtQCZAJgABwCXALcAtgAHALYAmACXAAcAlgC4ALcABwC3AJcAlgAHAJUAuQC4AAcAuACWAJUABwCUALoAuQAHALkAlQCUAAcAkwC7ALoABwC6AJQAkwAHAJIAvAC7AAcAuwCTAJIABwCRAL0AvAAHALwAkgCRAAcAkAC+AL0ABwC9AJEAkAAHAKcAvwC+AAcAvgCQAKcABwDYAO8A1wAHANcA1gDYAAcA2QDYANYABwDWANUA2QAHANoA2QDVAAcA1QDUANoABwDbANoA1AAHANQA0wDbAAcA3ADbANMABwDTANIA3AAHAN0A3ADSAAcA0gDRAN0ABwDeAN0A0QAHANEA0ADeAAcA3wDeANAABwDQAM8A3wAHAOAA3wDPAAcAzwDOAOAABwDhAOAAzgAHAM4AzQDhAAcA4gDhAM0ABwDNAMwA4gAHAOMA4gDMAAcAzADLAOMABwDKAOQA4wAHAOMAywDKAAcAyQDlAOQABwDkAMoAyQAHAMgA5gDlAAcA5QDJAMgABwDHAOcA5gAHAOYAyADHAAcAxgDoAOcABwDnAMcAxgAHAMUA6QDoAAcA6ADGAMUABwDEAOoA6QAHAOkAxQDEAAcAwwDrAOoABwDqAMQAwwAHAMIA7ADrAAcA6wDDAMIABwDBAO0A7AAHAOwAwgDBAAcAwADuAO0ABwDtAMEAwAAHANcA7wDuAAcA7gDAANcABwAUAxUDFgMHABYDFwMUAwcAGAMZAxoDBwAaAxsDGAMHABwDHQMeAwcAHgMfAxwDBwAgAyEDHQMHAB0DHAMgAwcAHgMiAyMDBwAjAx8DHgMHACIDIQMgAwcAIAMjAyIDBwAkAyUDHgMHAB4DHQMkAwcAJQMkAxgDBwAYAxsDJQMHACYDJAMdAwcAHQMhAyYDBwAkAyYDGQMHABkDGAMkAwcAJQMnAyIDBwAiAx4DJQMHACcDJQMbAwcAGwMaAycDBwAnAyYDIQMHACEDIgMnAwcAJgMnAxoDBwAaAxkDJgMHACgDKQMcAwcAHAMfAygDBwApAygDFwMHABcDFgMpAwcAKQMqAyADBwAgAxwDKQMHACoDKQMWAwcAFgMVAyoDBwArAygDHwMHAB8DIwMrAwcAKAMrAxQDBwAUAxcDKAMHACoDKwMjAwcAIwMgAyoDBwArAyoDFQMHABUDFAMrAwcALAMtAy4DBwAuAy8DLAMHADADMQMsAwcALAMvAzADBwAxAzIDLQMHAC0DLAMxAwcALQMyAzMDBwAzAy4DLQMHAC4DMwMwAwcAMAMvAy4DBwAzAzIDMQMHADEDMAMzAwcANAM1AzYDBwA2AzcDNAMHADgDOQM6AwcAOgM7AzgDBwA8Az0DPgMHAD4DPwM8AwcAPQNAA0EDBwBBAz4DPQMHAEIDQwM8AwcAPAM/A0IDBwBBA0ADQwMHAEMDQgNBAwcAPANEA0UDBwBFAz0DPAMHADoDRQNEAwcARAM7AzoDBwA9A0UDRgMHAEYDQAM9AwcAOQNGA0UDBwBFAzoDOQMHAEMDRwNEAwcARAM8A0MDBwA7A0QDRwMHAEcDOAM7AwcAQANGA0cDBwBHA0MDQAMHADgDRwNGAwcARgM5AzgDBwA+A0gDSQMHAEkDPwM+AwcANwNJA0gDBwBIAzQDNwMHAEEDSgNIAwcASAM+A0EDBwA0A0gDSgMHAEoDNQM0AwcAPwNJA0sDBwBLA0IDPwMHADYDSwNJAwcASQM3AzYDBwBCA0sDSgMHAEoDQQNCAwcANQNKA0sDBwBLAzYDNQMHAEwDTQNOAwcATgNPA0wDBwBOA1ADUQMHAFEDTwNOAwcATQNSA1ADBwBQA04DTQMHAFMDUgNNAwcATQNMA1MDBwBRA1MDTAMHAEwDTwNRAwcAUANSA1MDBwBTA1EDUAMHAFQDVQNWAwcAVgNXA1QDBwBWA1gDWQMHAFkDVwNWAwcAVQNaA1gDBwBYA1YDVQMHAFsDWgNVAwcAVQNUA1sDBwBZA1sDVAMHAFQDVwNZAwcAWANaA1sDBwBbA1kDWAMHAFwDXQNeAwcAXgNfA1wDBwBgA2EDYgMHAGIDYwNgAwcAXwNkA2UDBwBlA1wDXwMHAFwDZQNmAwcAZgNdA1wDBwBeA2cDZAMHAGQDXwNeAwcAXQNmA2cDBwBnA14DXQMHAGgDaQNlAwcAZQNkA2gDBwBpA2oDZgMHAGYDZQNpAwcAZwNrA2gDBwBoA2QDZwMHAGYDagNrAwcAawNnA2YDBwBoA2wDbQMHAG0DaQNoAwcAYgNtA2wDBwBsA2MDYgMHAGkDbQNuAwcAbgNqA2kDBwBhA24DbQMHAG0DYgNhAwcAawNvA2wDBwBsA2gDawMHAGMDbANvAwcAbwNgA2MDBwBqA24DbwMHAG8DawNqAwcAYANvA24DBwBuA2EDYAMHAHADCAEfAQcAHwFxA3ADBwByAwkBCAEHAAgBcANyAwcAcwMKAQkBBwAJAXIDcwMHAHQDCwEKAQcACgFzA3QDBwB1AwwBCwEHAAsBdAN1AwcAdgMNAQwBBwAMAXUDdgMHAA4BDQF2AwcAdgN3Aw4BBwAPAQ4BdwMHAHcDeAMPAQcAEAEPAXgDBwB4A3kDEAEHABEBEAF5AwcAeQN6AxEBBwASAREBegMHAHoDewMSAQcAEwESAXsDBwB7A3wDEwEHABQBEwF8AwcAfAN9AxQBBwAVARQBfQMHAH0DfgMVAQcAFgEVAX4DBwB+A38DFgEHABcBFgF/AwcAfwOAAxcBBwAYARcBgAMHAIADgQMYAQcAGQEYAYEDBwCBA4IDGQEHAIMDGgEZAQcAGQGCA4MDBwCEAxsBGgEHABoBgwOEAwcAhQMcARsBBwAbAYQDhQMHAIYDHQEcAQcAHAGFA4YDBwCHAx4BHQEHAB0BhgOHAwcAcQMfAR4BBwAeAYcDcQMHAIgDcQOHAwcAhwOJA4gDBwCKA3ADcQMHAHEDiAOKAwcAiwNyA3ADBwBwA4oDiwMHAIwDcwNyAwcAcgOLA4wDBwCNA3QDcwMHAHMDjAONAwcAjgN1A3QDBwB0A40DjgMHAI8DdgN1AwcAdQOOA48DBwB3A3YDjwMHAI8DkAN3AwcAeAN3A5ADBwCQA5EDeAMHAHkDeAORAwcAkQOSA3kDBwB6A3kDkgMHAJIDkwN6AwcAewN6A5MDBwCTA5QDewMHAHwDewOUAwcAlAOVA3wDBwB9A3wDlQMHAJUDlgN9AwcAfgN9A5YDBwCWA5cDfgMHAH8DfgOXAwcAlwOYA38DBwCAA38DmAMHAJgDmQOAAwcAgQOAA5kDBwCZA5oDgQMHAIIDgQOaAwcAmgObA4IDBwCcA4MDggMHAIIDmwOcAwcAnQOEA4MDBwCDA5wDnQMHAJ4DhQOEAwcAhAOdA54DBwCfA4YDhQMHAIUDngOfAwcAiQOHA4YDBwCGA58DiQMHAKADiAOJAwcAiQOhA6ADBwCiA4oDiAMHAIgDoAOiAwcAowOLA4oDBwCKA6IDowMHAKQDjAOLAwcAiwOjA6QDBwClA40DjAMHAIwDpAOlAwcApgOOA40DBwCNA6UDpgMHAKcDjwOOAwcAjgOmA6cDBwCQA48DpwMHAKcDqAOQAwcAkQOQA6gDBwCoA6kDkQMHAJIDkQOpAwcAqQOqA5IDBwCTA5IDqgMHAKoDqwOTAwcAlAOTA6sDBwCrA6wDlAMHAJUDlAOsAwcArAOtA5UDBwCWA5UDrQMHAK0DrgOWAwcAlwOWA64DBwCuA68DlwMHAJgDlwOvAwcArwOwA5gDBwCZA5gDsAMHALADsQOZAwcAmgOZA7EDBwCxA7IDmgMHAJsDmgOyAwcAsgOzA5sDBwC0A5wDmwMHAJsDswO0AwcAtQOdA5wDBwCcA7QDtQMHALYDngOdAwcAnQO1A7YDBwC3A58DngMHAJ4DtgO3AwcAoQOJA58DBwCfA7cDoQMHALgDoAOhAwcAoQO5A7gDBwC6A6IDoAMHAKADuAO6AwcAuwOjA6IDBwCiA7oDuwMHALwDpAOjAwcAowO7A7wDBwC9A6UDpAMHAKQDvAO9AwcAvgOmA6UDBwClA70DvgMHAL8DpwOmAwcApgO+A78DBwCoA6cDvwMHAL8DwAOoAwcAqQOoA8ADBwDAA8EDqQMHAKoDqQPBAwcAwQPCA6oDBwCrA6oDwgMHAMIDwwOrAwcArAOrA8MDBwDDA8QDrAMHAK0DrAPEAwcAxAPFA60DBwCuA60DxQMHAMUDxgOuAwcArwOuA8YDBwDGA8cDrwMHALADrwPHAwcAxwPIA7ADBwCxA7ADyAMHAMgDyQOxAwcAsgOxA8kDBwDJA8oDsgMHALMDsgPKAwcAygPLA7MDBwDMA7QDswMHALMDywPMAwcAzQO1A7QDBwC0A8wDzQMHAM4DtgO1AwcAtQPNA84DBwDPA7cDtgMHALYDzgPPAwcAuQOhA7cDBwC3A88DuQMHAAcBuAO5AwcAuQPwAAcBBwAGAboDuAMHALgDBwEGAQcABQG7A7oDBwC6AwYBBQEHAAQBvAO7AwcAuwMFAQQBBwADAb0DvAMHALwDBAEDAQcAAgG+A70DBwC9AwMBAgEHAAEBvwO+AwcAvgMCAQEBBwDAA78DAQEHAAEBAAHAAwcAwQPAAwABBwAAAf8AwQMHAMIDwQP/AAcA/wD+AMIDBwDDA8ID/gAHAP4A/QDDAwcAxAPDA/0ABwD9APwAxAMHAMUDxAP8AAcA/AD7AMUDBwDGA8UD+wAHAPsA+gDGAwcAxwPGA/oABwD6APkAxwMHAMgDxwP5AAcA+QD4AMgDBwDJA8gD+AAHAPgA9wDJAwcAygPJA/cABwD3APYAygMHAMsDygP2AAcA9gD1AMsDBwD0AMwDywMHAMsD9QD0AAcA8wDNA8wDBwDMA/QA8wAHAPIAzgPNAwcAzQPzAPIABwDxAM8DzgMHAM4D8gDxAAcA8AC5A88DBwDPA/EA8AAHADBBTQ4AAHJhdjQtc2hpZWxkcwAcBwAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwdQQXYcAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA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RGSAwvhlZ79apgfCRGSAwvhlZ7+Asf7BXzKMwoKenz9gQTYAAAAKk8k+AAAAAAAAAAAAAAAADZPJMg2TyT4AAAAADZPJvg2TyTIAAAAAgEX+QPlBIkEgQd3WAQCYIQAAAQACAAcAAAADAAEABwADAAQAAQAHAAMABQAEAAcABQAGAAQABwAFAAcABgAHAAcACAAGAAcABwAJAAgABwAJAAoACAAHAAkACwAKAAcACwAMAAoABwALAA0ADAAHAA0ADgAMAAcADQAPAA4ABwAPABAADgAHAA8AEQAQAAcAEQASABAABwARABMAEgAHABMAFAASAAcAEwAVABQABwAVABYAFAAHABUAFwAWAAcAGAAUABYABwAYABkAFAAHABkAEgAUAAcAGQAaABIABwAaABAAEgAHABoAGwAQAAcAGwAOABAABwAbABwADgAHABwADAAOAAcAHAAdAAwABwAdAAoADAAHAB0AHgAKAAcAHgAIAAoABwAeAB8ACAAHAB8ABgAIAAcAHwAgAAYABwAgAAQABgAHACAAIQAEAAcAIQABAAQABwAhACIAAQAHACIAAgABAAcAIgAjAAIABwAkABkAGAAHACQAJQAZAAcAJQAaABkABwAlACYAGgAHACYAGwAaAAcAJgAnABsABwAnABwAGwAHACcAKAAcAAcAKAAdABwABwAoACkAHQAHACkAHgAdAAcAKQAqAB4ABwAqAB8AHgAHACoAKwAfAAcAKwAgAB8ABwArACwAIAAHACwAIQAgAAcALAAtACEABwAtACIAIQAHAC0ALgAiAAcALgAjACIABwAuAC8AIwAHADAAJQAkAAcAMAAxACUABwAxACYAJQAHADEAMgAmAAcAMgAnACYABwAyADMAJwAHADMAKAAnAAcAMwA0ACgABwA0ACkAKAAHADQANQApAAcANQAqACkABwA1ADYAKgAHADYAKwAqAAcANgA3ACsABwA3ACwAKwAHADcAOAAsAAcAOAAtACwABwA4ADkALQAHADkALgAtAAcAOQA6AC4ABwA6AC8ALgAHADoAOwAvAAcAPAAxADAABwA8AD0AMQAHAD0AMgAxAAcAPQA+ADIABwA+ADMAMgAHAD4APwAzAAcAPwA0ADMABwA/AEAANAAHAEAANQA0AAcAQABBADUABwBBADYANQAHAEEAQgA2AAcAQgA3ADYABwBCAEMANwAHAEMAOAA3AAcAQwBEADgABwBEADkAOAAHAEQARQA5AAcARQA6ADkABwBFAEYAOgAHAEYAOwA6AAcARgBHADsABwBIAEkASgAHAEgASwBJAAcATABLAEgABwBMAE0ASwAHAE4ATQBMAAcATgBPAE0ABwBQAE8ATgAHAFAAUQBPAAcAUgBRAFAABwBSAFMAUQAHAFQAUwBSAAcAVABVAFMABwBWAFUAVAAHAFYAVwBVAAcAWABXAFYABwBYAFkAVwAHAFoAWQBYAAcAWgBbAFkABwBcAFsAWgAHAFwAXQBbAAcAXgBdAFwABwBeAF8AXQAHAFwAYABeAAcAXABhAGAABwBaAGEAXAAHAFoAYgBhAAcAWABiAFoABwBYAGMAYgAHAFYAYwBYAAcAVgBkAGMABwBUAGQAVgAHAFQAZQBkAAcAUgBlAFQABwBSAGYAZQAHAFAAZgBSAAcAUABnAGYABwBOAGcAUAAHAE4AaABnAAcATABoAE4ABwBMAGkAaAAHAEgAaQBMAAcASABqAGkABwBKAGoASAAHAEoAawBqAAcAYQBsAGAABwBhAG0AbAAHAGIAbQBhAAcAYgBuAG0ABwBjAG4AYgAHAGMAbwBuAAcAZABvAGMABwBkAHAAbwAHAGUAcABkAAcAZQBxAHAABwBmAHEAZQAHAGYAcgBxAAcAZwByAGYABwBnAHMAcgAHAGgAcwBnAAcAaAB0AHMABwBpAHQAaAAHAGkAdQB0AAcAagB1AGkABwBqAHYAdQAHAGsAdgBqAAcAawB3AHYABwBtAHgAbAAHAG0AeQB4AAcAbgB5AG0ABwBuAHoAeQAHAG8AegBuAAcAbwB7AHoABwBwAHsAbwAHAHAAfAB7AAcAcQB8AHAABwBxAH0AfAAHAHIAfQBxAAcAcgB+AH0ABwBzAH4AcgAHAHMAfwB+AAcAdAB/AHMABwB0AIAAfwAHAHUAgAB0AAcAdQCBAIAABwB2AIEAdQAHAHYAggCBAAcAdwCCAHYABwB3AIMAggAHAHkAhAB4AAcAeQCFAIQABwB6AIUAeQAHAHoAhgCFAAcAewCGAHoABwB7AIcAhgAHAHwAhwB7AAcAfACIAIcABwB9AIgAfAAHAH0AiQCIAAcAfgCJAH0ABwB+AIoAiQAHAH8AigB+AAcAfwCLAIoABwCAAIsAfwAHAIAAjACLAAcAgQCMAIAABwCBAI0AjAAHAIIAjQCBAAcAggCOAI0ABwCDAI4AggAHAIMAjwCOAAcAkACRAJIABwCQAJMAkQAHAJQAkgCVAAcAlACQAJIABwCWAJUAlwAHAJYAlACVAAcAmACXAJkABwCYAJYAlwAHAJoAmQCbAAcAmgCYAJkABwCcAJ0AngAHAJwAnwCdAAcAnwCgAJ0ABwCfAKEAoAAHAKIAowCkAAcAogClAKMABwClAKYAowAHAKUApwCmAAcAqAClAKIABwCoAKkApQAHAKkApwClAAcAqQCqAKcABwCrAKkAqAAHAKsArACpAAcArACqAKkABwCsAK0AqgAHAK4ArACrAAcArgCvAKwABwCvAK0ArAAHAK8AsACtAAcAsQCvAK4ABwCxALIArwAHALIAsACvAAcAsgCzALAABwCeALQAtQAHAJ4AnQC0AAcAnQC2ALQABwCdAKAAtgAHALUAtwC4AAcAtQC0ALcABwC0ALkAtwAHALQAtgC5AAcAuAC6ALsABwC4ALcAugAHALcAvAC6AAcAtwC5ALwABwC7AL0AvgAHALsAugC9AAcAugC/AL0ABwC6ALwAvwAHALYAwAC5AAcAtgDBAMAABwDBAMIAwAAHAMEAwwDCAAcAoADBALYABwCgAMQAwQAHAMQAwwDBAAcAxADFAMMABwChAMQAoAAHAKEAxgDEAAcAxgDFAMQABwDGAMcAxQAHAMgAyQDKAAcAyADLAMkABwDLAKYAyQAHAMsAowCmAAcAzADLAMgABwDMAM0AywAHAM0AowDLAAcAzQCkAKMABwC5AM4AvAAHALkAwADOAAcAwACRAM4ABwDAAMIAkQAHALwAzwC/AAcAvADOAM8ABwDOAJMAzwAHAM4AkQCTAAcA0ACtANEABwDQAKoArQAHANIAqgDQAAcA0gCnAKoABwDTAKcA0gAHANMApgCnAAcA1ACmANMABwDUAMkApgAHANUAyQDUAAcA1QDKAMkABwDWAMoA1QAHANYAyADKAAcA1wDIANYABwDXAMwAyAAHANEAsADYAAcA0QCtALAABwDYALMA2QAHANgAsACzAAcA2gDbANwABwDaAN0A2wAHANwA3gDfAAcA3ADbAN4ABwDfAOAA4QAHAN8A3gDgAAcA4QDiAOMABwDhAOAA4gAHAOMAmgCbAAcA4wDiAJoABwDkAOUA5gAHAOQA5wDlAAcA6ADnAOQABwDoAOkA5wAHAOoA6wDsAAcA6gDtAOsABwDuAO0A6gAHAO4A7wDtAAcA7QDwAOsABwDtAPEA8AAHAO8A8QDtAAcA7wDyAPEABwDxAPMA8AAHAPEA9ADzAAcA8gD0APEABwDyAPUA9AAHAPQA9gDzAAcA9AD3APYABwD1APcA9AAHAPUA+AD3AAcA9wCxAPYABwD3ALIAsQAHAPgAsgD3AAcA+ACzALIABwD5AOYA+gAHAPkA5ADmAAcA+wDkAPkABwD7AOgA5AAHAPwA+gD9AAcA/AD5APoABwD+APkA/AAHAP4A+wD5AAcA/wD9AAABBwD/APwA/QAHAAEB/AD/AAcAAQH+APwABwACAQABAwEHAAIB/wAAAQcABAH/AAIBBwAEAQEB/wAHAAUB+wD+AAcABQEGAfsABwAHAQYBBQEHAAcBCAEGAQcABgHoAPsABwAGAQkB6AAHAAgBCQEGAQcACAEKAQkBBwAJAekA6AAHAAkBCwHpAAcACgELAQkBBwAKAQwBCwEHAA0BDgEPAQcADQEQAQ4BBwDuABABDQEHAO4A6gAQAQcAEAERAQ4BBwAQARIBEQEHAOoAEgEQAQcA6gDsABIBBwATAf4AAQEHABMBBQH+AAcA2gAFARMBBwDaAAcBBQEHABQBAQEEAQcAFAETAQEBBwDdABMBFAEHAN0A2gATAQcA9QAVARYBBwD1APIAFQEHAPIAFwEVAQcA8gDvABcBBwDvABgBFwEHAO8A7gAYAQcA7gAZARgBBwDuAA0BGQEHAA0BGgEZAQcADQEPARoBBwAPARsBGgEHAA8BDgEbAQcADgEcARsBBwAOAREBHAEHAPgAFgEdAQcA+AD1ABYBBwCzAB0B2QAHALMA+AAdAQcAHgHdABQBBwAeAR8B3QAHACABFAEEAQcAIAEeARQBBwAhAQQBAgEHACEBIAEEAQcAIgHiAOAABwAiASMB4gAHACMBmgDiAAcAIwEkAZoABwAlAeAA3gAHACUBIgHgAAcAJgHeANsABwAmASUB3gAHAB8B2wDdAAcAHwEmAdsABwAnAc8AkwAHACcBKAHPAAcAKAG/AM8ABwAoASkBvwAHACkBvQC/AAcAKQEqAb0ABwAkAZgAmgAHACQBKwGYAAcAKwGWAJgABwArASwBlgAHACwBlACWAAcALAEtAZQABwAtAZAAlAAHAC0BLgGQAAcALgGTAJAABwAuAScBkwAHAC8BHwEeAQcALwEwAR8BBwAxAR4BIAEHADEBLwEeAQcAMAEmAR8BBwAwATIBJgEHADMBIAEhAQcAMwExASABBwA0ASMBIgEHADQBNQEjAQcANQEkASMBBwA1ATYBJAEHADcBIgElAQcANwE0ASIBBwA2ASsBJAEHADYBOAErAQcAMgElASYBBwAyATcBJQEHADkBKAEnAQcAOQE6ASgBBwA6ASkBKAEHADoBOwEpAQcAPAEnAS4BBwA8ATkBJwEHADsBKgEpAQcAOwE9ASoBBwA4ASwBKwEHADgBPgEsAQcAPgEtASwBBwA+AT8BLQEHAD8BLgEtAQcAPwE8AS4BBwBAATABLwEHAEABQQEwAQcAQgEvATEBBwBCAUABLwEHAEEBMgEwAQcAQQFDATIBBwBEATEBMwEHAEQBQgExAQcAQwE3ATIBBwBDAUUBNwEHAEYBNQE0AQcARgFHATUBBwBHATYBNQEHAEcBSAE2AQcARQE0ATcBBwBFAUYBNAEHAEgBOAE2AQcASAFJATgBBwBJAT4BOAEHAEkBSgE+AQcASwE6ATkBBwBLAUwBOgEHAEwBOwE6AQcATAFNATsBBwBOATkBPAEHAE4BSwE5AQcATQE9ATsBBwBNAU8BPQEHAFABPAE/AQcAUAFOATwBBwBKAT8BPgEHAEoBUAE/AQcAUQFSAVMBBwBRAVQBUgEHAFQBHQFSAQcAVAHZAB0BBwBVAVQBUQEHAFUBVgFUAQcAVgHZAFQBBwBWAdgA2QAHAFcBVgFVAQcAVwFYAVYBBwBYAdgAVgEHAFgB0QDYAAcAWQFYAVcBBwBZAVoBWAEHAFoB0QBYAQcAWgHQANEABwBbAVoBWQEHAFsBXAFaAQcAXAHQAFoBBwBcAdIA0AAHAMcAXAFbAQcAxwBdAVwBBwBdAdIAXAEHAF0B0wDSAAcAxgBdAccABwDGAF4BXQEHAF4B0wBdAQcAXgHUANMABwChAF4BxgAHAKEAXwFeAQcAXwHUAF4BBwBfAdUA1AAHAJ8AXwGhAAcAnwBgAV8BBwBgAdUAXwEHAGAB1gDVAAcAnABgAZ8ABwCcAGEBYAEHAGEB1gBgAQcAYQHXANYABwBTAWIBYwEHAFMBUgFiAQcAUgEWAWIBBwBSAR0BFgEHAGMBZAFlAQcAYwFiAWQBBwBiARUBZAEHAGIBFgEVAQcAZQFmAWcBBwBlAWQBZgEHAGQBFwFmAQcAZAEVARcBBwBnAWgBDAEHAGcBZgFoAQcAZgEYAWgBBwBmARcBGAEHAAwBaQELAQcADAFoAWkBBwBoARkBaQEHAGgBGAEZAQcACwFqAekABwALAWkBagEHAGkBGgFqAQcAaQEZARoBBwDpAGsB5wAHAOkAagFrAQcAagEbAWsBBwBqARoBGwEHAOcAbAHlAAcA5wBrAWwBBwBrARwBbAEHAGsBGwEcAQcAbQFuAW8BBwBtAXABbgEHAHEBcAFtAQcAcQFyAXABBwBzAXIBcQEHAHMBdAFyAQcAdQF2AXcBBwB1AXgBdgEHAHkBegF7AQcAeQF8AXoBBwBwAX0BbgEHAHABfgF9AQcAcgF+AXABBwByAX8BfgEHAHQBfwFyAQcAdAGAAX8BBwB4AYEBdgEHAHgBggGBAQcAfAGDAXoBBwB8AYQBgwEHAHQBdwF2AQcAdAFzAXcBBwCAAXYBgQEHAIABdAF2AQcAhQGGAYcBBwCFAYgBhgEHAIcBiQGKAQcAhwGGAYkBBwCLAYwBjQEHAIsBjgGMAQcAjQGPAZABBwCNAYwBjwEHAIsBkQGSAQcAiwGNAZEBBwCNAZMBkQEHAI0BkAGTAQcAkgGUAZUBBwCSAZEBlAEHAHkBlAF8AQcAeQGVAZQBBwCRAZYBlAEHAJEBkwGWAQcAfAGWAYQBBwB8AZQBlgEHAJcBeQF7AQcAlwGVAXkBBwCYAZUBlwEHAJgBkgGVAQcAmQGSAZgBBwCZAYsBkgEHAJoBiwGZAQcAmgGOAYsBBwCbAZwBnQEHAJsBngGcAQcAnwGeAZsBBwCfAaABngEHAKEBbwFuAQcAoQGiAW8BBwCKAaEBhwEHAIoBogGhAQcAowFuAX0BBwCjAaEBbgEHAIcBowGFAQcAhwGhAaMBBwCcAaQBpQEHAJwBngGkAQcAjgGkAYwBBwCOAaUBpAEHAKQBoAGmAQcApAGeAaABBwCkAY8BjAEHAKQBpgGPAQcAnAGnAZ0BBwCcAaUBpwEHAI4BpwGlAQcAjgGaAacBBwCoAXsBegEHAKgBqQF7AQcAdQGoAXgBBwB1AakBqAEHAKoBegGDAQcAqgGoAXoBBwB4AaoBggEHAHgBqAGqAQcAqwF7AakBBwCrAZcBewEHAKwBlwGrAQcArAGYAZcBBwCsAZkBmAEHAKwBrQGZAQcArQGaAZkBBwCtAa4BmgEHAJsBrwGwAQcAmwGdAa8BBwCGAa8BiQEHAIYBsAGvAQcAsQGbAbABBwCxAZ8BmwEHALEBhgGIAQcAsQGwAYYBBwCvAacBsgEHAK8BnQGnAQcArgGnAZoBBwCuAbIBpwEHALMBtAG1AQcAswG2AbQBBwC2AbcBtAEHALYBuAG3AQcAuAG5AbcBBwC4AboBuQEHALsBvAG9AQcAuwG+AbwBBwC/AcABwQEHAL8BwgHAAQcAwwG2AbMBBwDDAcQBtgEHAMQBuAG2AQcAxAHFAbgBBwDFAboBuAEHAMUBxgG6AQcAxwG+AbsBBwDHAcgBvgEHAMkBwgG/AQcAyQHKAcIBBwC9AboBuwEHAL0BuQG6AQcAuwHGAccBBwC7AboBxgEHAMsBzAHNAQcAywHOAcwBBwDPAc0B0AEHAM8BywHNAQcA0QHSAdMBBwDRAdQB0gEHANUB0wHWAQcA1QHRAdMBBwDXAdIB2AEHANcB0wHSAQcA2QHTAdcBBwDZAdYB0wEHANoB2AHbAQcA2gHXAdgBBwDaAcABwgEHANoB2wHAAQcA3AHXAdoBBwDcAdkB1wEHANwBwgHKAQcA3AHaAcIBBwDAAd0BwQEHAMAB2wHdAQcA2wHeAd0BBwDbAdgB3gEHANgB3wHeAQcA2AHSAd8BBwDSAeAB3wEHANIB1AHgAQcA4QHiAeMBBwDhAeQB4gEHAOQB5QHiAQcA5AHmAeUBBwC1AecBswEHALUB6AHnAQcA5wHQAc0BBwDnAegB0AEHALMB6QHDAQcAswHnAekBBwDpAc0BzAEHAOkB5wHNAQcA6gHhAesBBwDqAeQB4QEHAOoB1AHRAQcA6gHrAdQBBwDmAeoB7AEHAOYB5AHqAQcA1QHqAdEBBwDVAewB6gEHAO0B4QHjAQcA7QHrAeEBBwDtAdQB6wEHAO0B4AHUAQcAwQHuAb8BBwDBAe8B7gEHAO4BvAG+AQcA7gHvAbwBBwC/AfAByQEHAL8B7gHwAQcA8AG+AcgBBwDwAe4BvgEHAMEB8QHvAQcAwQHdAfEBBwDdAfIB8QEHAN0B3gHyAQcA3wHyAd4BBwDfAfMB8gEHAOAB8wHfAQcA4AH0AfMBBwD1AeIB9gEHAPUB4wHiAQcA9QHLAc8BBwD1AfYBywEHAOIB9wH2AQcA4gHlAfcBBwDLAfcBzgEHAMsB9gH3AQcA7QH1AfgBBwDtAeMB9QEHAO0B9AHgAQcA7QH4AfQBBwD5AfoB+wEHAPkB/AH6AQcA/QH7Af4BBwD9AfkB+wEHAP8BAAIBAgcA/wECAgACBwADAgECBAIHAAMC/wEBAgcABQIEAgYCBwAFAgMCBAIHAAcCBgIIAgcABwIFAgYCBwAJAgoCCwIHAAkCDAIKAgcABwINAg4CBwAHAggCDQIHAAwCDQIKAgcADAIOAg0CBwAPAg4CDAIHAA8CEAIOAgcAEQIMAgkCBwARAg8CDAIHABICEQIJAgcAEgITAhECBwAUAgkCCwIHABQCEgIJAgcAFQIWAhcCBwAVAhgCFgIHABgCGQIWAgcAGAIaAhkCBwAbAhgCFQIHABsCHAIYAgcAHAIaAhgCBwAcAh0CGgIHAB4CHwIgAgcAHgIhAh8CBwAhAiICHwIHACECIwIiAgcAJAIhAh4CBwAkAiUCIQIHACUCIwIhAgcAJQImAiMCBwAnAiUCJAIHACcCKAIlAgcAKAImAiUCBwAoAikCJgIHACoCKAInAgcAKgIrAigCBwArAikCKAIHACsCLAIpAgcALQIrAioCBwAtAi4CKwIHAC4CLAIrAgcALgIvAiwCBwAwAi4CLQIHADACMQIuAgcAMQIvAi4CBwAxAjICLwIHADMCMQIwAgcAMwI0AjECBwA0AjICMQIHADQCNQIyAgcANgI0AjMCBwA2AjcCNAIHADcCNQI0AgcANwI4AjUCBwD6ATkC+wEHAPoBOgI5AgcA+wE7Av4BBwD7ATkCOwIHAAACPAIBAgcAAAI9AjwCBwABAj4CBAIHAAECPAI+AgcABAI/AgYCBwAEAj4CPwIHAAYCQAIIAgcABgI/AkACBwAIAkECDQIHAAgCQAJBAgcADQJCAgoCBwANAkECQgIHAAoCQwILAgcACgJCAkMCBwALAkQCFAIHAAsCQwJEAgcAGgJFAhkCBwAaAkYCRQIHAEYCOgJFAgcARgI5AjoCBwAdAkYCGgIHAB0CRwJGAgcARwI5AkYCBwBHAjsCOQIHACMCSAIiAgcAIwJJAkgCBwBJAj0CSAIHAEkCPAI9AgcAJgJJAiMCBwAmAkoCSQIHAEoCPAJJAgcASgI+AjwCBwApAkoCJgIHACkCSwJKAgcASwI+AkoCBwBLAj8CPgIHACwCSwIpAgcALAJMAksCBwBMAj8CSwIHAEwCQAI/AgcALwJMAiwCBwAvAk0CTAIHAE0CQAJMAgcATQJBAkACBwAyAk0CLwIHADICTgJNAgcATgJBAk0CBwBOAkICQQIHADUCTgIyAgcANQJPAk4CBwBPAkICTgIHAE8CQwJCAgcAOAJPAjUCBwA4AlACTwIHAFACQwJPAgcAUAJEAkMCBwBRAlICUwIHAFECVAJSAgcAVAL8AVICBwBUAvoB/AEHAFUCVAJRAgcAVQJWAlQCBwBWAvoBVAIHAFYCOgL6AQcAVwJWAlUCBwBXAlgCVgIHAFgCOgJWAgcAWAJFAjoCBwBZAlgCVwIHAFkCWgJYAgcAWgJFAlgCBwBaAhkCRQIHAFsCWgJZAgcAWwJcAloCBwBcAhkCWgIHAFwCFgIZAgcAXQJcAlsCBwBdAl4CXAIHAF4CFgJcAgcAXgIXAhYCBwD5AV8C/AEHAPkBYAJfAgcAYAJhAl8CBwBgAmICYQIHAP0BYAL5AQcA/QFjAmACBwBjAmICYAIHAGMCZAJiAgcAZQJfAmECBwBlAmYCXwIHAPwBZgJSAgcA/AFfAmYCBwBnAmgCaQIHAGcCagJoAgcAagICAmgCBwBqAgACAgIHAGsCIAIfAgcAawJsAiACBwBtAmsCbgIHAG0CbAJrAgcAbwIfAiICBwBvAmsCHwIHAG4CbwJwAgcAbgJrAm8CBwBnAnECagIHAGcCcgJxAgcAAAJxAj0CBwAAAmoCcQIHAEgCbwIiAgcASAJzAm8CBwB0Am8CcwIHAHQCcAJvAgcAPQJzAkgCBwA9AnECcwIHAHICcwJxAgcAcgJ0AnMCBwB1AmgCAgIHAHUCdgJoAgcAdwJ4AnkCBwB3AnoCeAIHAHoCewJ4AgcAegJ8AnsCBwB9Av8BAwIHAH0CfgL/AQcAfwIDAgUCBwB/An0CAwIHAH4CAgL/AQcAfgJ1AgICBwCAAgUCBwIHAIACfwIFAgcAgQIHAg4CBwCBAoACBwIHAIICDgIQAgcAggKBAg4CBwCDAoICEAIHAIMChAKCAgcAhQIRAhMCBwCFAoYCEQIHAIYCDwIRAgcAhgKHAg8CBwCHAhACDwIHAIcCgwIQAgcAiAJ9An8CBwCIAokCfQIHAIkCfgJ9AgcAiQKKAn4CBwCLAn8CgAIHAIsCiAJ/AgcAjAKAAoECBwCMAosCgAIHAI0CgQKCAgcAjQKMAoECBwCOAoIChAIHAI4CjQKCAgcAjwKEAoMCBwCPAo4ChAIHAJACgwKHAgcAkAKPAoMCBwCRAocChgIHAJECkAKHAgcAkgKGAoUCBwCSApEChgIHAJMChQITAgcAkwKSAoUCBwCUAhMCEgIHAJQCkwITAgcAlQISAhQCBwCVApQCEgIHAJYCFAJEAgcAlgKVAhQCBwCXAkQCUAIHAJcClgJEAgcAmAJ7AnwCBwCYApkCewIHAJoCfAJ6AgcAmgKYAnwCBwCbAnoCdwIHAJsCmgJ6AgcAnAJ2AnUCBwCcAp0CdgIHAIoCdQJ+AgcAigKcAnUCBwCeAokCiAIHAJ4CnwKJAgcAnwKKAokCBwCfAqACigIHAKECiAKLAgcAoQKeAogCBwCgApwCigIHAKACogKcAgcAowKLAowCBwCjAqECiwIHAKQCjAKNAgcApAKjAowCBwClAo0CjgIHAKUCpAKNAgcApgKOAo8CBwCmAqUCjgIHAKcCjwKQAgcApwKmAo8CBwCoApACkQIHAKgCpwKQAgcAqQKRApICBwCpAqgCkQIHAKoCkgKTAgcAqgKpApICBwCrApMClAIHAKsCqgKTAgcArAKUApUCBwCsAqsClAIHAK0ClQKWAgcArQKsApUCBwCuApYClwIHAK4CrQKWAgcArwKZApgCBwCvArACmQIHALECmAKaAgcAsQKvApgCBwCyApoCmwIHALICsQKaAgcAogKdApwCBwCiArMCnQIHALQCUwJSAgcAtAK1AlMCBwC2ArUCtAIHALYCtwK1AgcAuAJRAlMCBwC4ArkCUQIHALoCXQJbAgcAugK7Al0CBwC8AlsCWQIHALwCugJbAgcAvQJRArkCBwC9AlUCUQIHALwCVwK+AgcAvAJZAlcCBwC+AlUCvQIHAL4CVwJVAgcAtQK4AlMCBwC1Ar8CuAIHALcCvwK1AgcAtwLAAr8CBwC4AsECuQIHALgCwgLBAgcAugLDArsCBwC6AsQCwwIHALwCxAK6AgcAvALFAsQCBwC9AsECxgIHAL0CuQLBAgcAvALHAsUCBwC8Ar4CxwIHAL4CxgLHAgcAvgK9AsYCBwC/AsICuAIHAL8CyALCAgcAwALIAr8CBwDAAskCyAIHAMoCywLMAgcAygLNAssCBwDOAswCzwIHAM4CygLMAgcAzQLQAssCBwDNAtEC0AIHANICzwLTAgcA0gLOAs8CBwDRAtQC0AIHANEC1QLUAgcA1gLTAtcCBwDWAtIC0wIHANgC2QLaAgcA2ALbAtkCBwDVAtoC1AIHANUC2ALaAgcA3ALKAs4CBwDcAt0CygIHAN0CzQLKAgcA3QLeAs0CBwDfAs4C0gIHAN8C3ALOAgcA4ALSAtYCBwDgAt8C0gIHAN4C0QLNAgcA3gLhAtECBwDiAtsC2AIHAOIC4wLbAgcA5ALYAtUCBwDkAuIC2AIHAOEC1QLRAgcA4QLkAtUCBwDlAuIC5AIHAOUC5gLiAgcA5gLjAuICBwDmAucC4wIHAOgCewLpAgcA6AJ4AnsCBwDqAngC6AIHAOoCeQJ4AgcA6wKZArACBwDrAuwCmQIHAOwCewKZAgcA7ALpAnsCBwDmAukC7AIHAOYC5QLpAgcA6wLmAuwCBwDrAucC5gIHAO0C7gLvAgcA7QLwAu4CBwDwAukC7gIHAPAC6ALpAgcAaQLwAu0CBwBpAvEC8AIHAPEC6ALwAgcA8QLqAugCBwBoAvECaQIHAGgC8gLxAgcA8gLqAvECBwDyAnkC6gIHAHYC8gJoAgcAdgLzAvICBwDzAnkC8gIHAPMCdwJ5AgcAnQLzAnYCBwCdAvQC8wIHAPQCdwLzAgcA9AKbAncCBwCzAvQCnQIHALMC9QL0AgcA9QKbAvQCBwD1ArICmwIHAO8C5ALhAgcA7wLuAuQCBwDkAukC5QIHAOQC7gLpAgcAYwL2AmQCBwBjAvcC9gIHAPcC7wL2AgcA9wLtAu8CBwD9AfcCYwIHAP0B+AL3AgcA+ALtAvcCBwD4AmkC7QIHAP4B+AL9AQcA/gH5AvgCBwD5AmkC+AIHAPkCZwJpAgcAOwL5Av4BBwA7AvoC+QIHAPoCZwL5AgcA+gJyAmcCBwBHAvoCOwIHAEcC+wL6AgcA+wJyAvoCBwD7AnQCcgIHAB0C+wJHAgcAHQL8AvsCBwD8AnQC+wIHAPwCcAJ0AgcAHAL8Ah0CBwAcAv0C/AIHAP0CcAL8AgcA/QJuAnACBwAbAv0CHAIHABsC/gL9AgcA/gJuAv0CBwD+Am0CbgIHAP8CAAMBAwcA/wLcAgADBwACA9wC/wIHAAID3QLcAgcA9gLhAgMDBwD2Au8C4QIHAAQD4QLeAgcABAMDA+ECBwDdAgQD3gIHAN0CAgMEAwcABQP2AgMDBwAFAwYD9gIHAAcDAwMEAwcABwMFAwMDBwAIAwQDAgMHAAgDBwMEAwcACQMCA/8CBwAJAwgDAgMHAAoD/wIBAwcACgMJA/8CBwALA2ICZAIHAAsDDANiAgcADANhAmICBwAMAw0DYQIHAAsD9gIGAwcACwNkAvYCBwAOAw0DDAMHAA4DDwMNAwcAEAMMAwsDBwAQAw4DDAMHABEDCwMGAwcAEQMQAwsDBwASAwYDBQMHABIDEQMGAwcAEwMFAwcDBwATAxIDBQMHABQDBwMIAwcAFAMTAwcDBwAVAwgDCQMHABUDFAMIAwcAFgMJAwoDBwAWAxUDCQMHAAADCgMBAwcAAAMWAwoDBwDfAgAD3AIHAN8CFwMAAwcAGAMPAw4DBwAYAxkDDwMHABoDDgMQAwcAGgMYAw4DBwAbAxADEQMHABsDGgMQAwcAHAMRAxIDBwAcAxsDEQMHAB0DEgMTAwcAHQMcAxIDBwAeAxMDFAMHAB4DHQMTAwcAHwMUAxUDBwAfAx4DFAMHACADFQMWAwcAIAMfAxUDBwAhAxYDAAMHACEDIAMWAwcAIgMAAxcDBwAiAyEDAAMHACMDJAMlAwcAIwMmAyQDBwDgAhcD3wIHAOACIgMXAwcAJwMNAw8DBwAnAygDDQMHACkDDwMZAwcAKQMnAw8DBwAoA2ECDQMHACgDZQJhAgcAKgNmAmUCBwAqAysDZgIHACwDKwMqAwcALAMtAysDBwAnA2UCKAMHACcDKgNlAgcAKQMqAycDBwApAywDKgMHAGYCtAJSAgcAZgIrA7QCBwArA7YCtAIHACsDLQO2AgcALgPPAswCBwAuAy8DzwIHADADzALLAgcAMAMuA8wCBwAvA9MCzwIHAC8DMQPTAgcAMQPXAtMCBwAxAzID1wIHADMDywLQAgcAMwMwA8sCBwA0A9AC1AIHADQDMwPQAgcANQPaAtkCBwA1AzYD2gIHADYD1ALaAgcANgM0A9QCBwA3Ay8DLgMHADcDOAMvAwcAOQMuAzADBwA5AzcDLgMHADgDMQMvAwcAOAM6AzEDBwA7AzADMwMHADsDOQMwAwcAOgMyAzEDBwA6AzwDMgMHAD0DMwM0AwcAPQM7AzMDBwA+AzQDNgMHAD4DPQM0AwcAPwM2AzUDBwA/Az4DNgMHAEADxgLBAgcAQANBA8YCBwBCA8ECwgIHAEIDQAPBAgcAQQPHAsYCBwBBA0MDxwIHAEMDxQLHAgcAQwNEA8UCBwBEA8QCxQIHAEQDRQPEAgcARQPDAsQCBwBFA0YDwwIHAEcDwgLIAgcARwNCA8ICBwBIA8gCyQIHAEgDRwPIAgcASQNBA0ADBwBJA0oDQQMHAEsDQANCAwcASwNJA0ADBwBKA0MDQQMHAEoDTANDAwcATQNCA0cDBwBNA0sDQgMHAEwDRANDAwcATANOA0QDBwBOA0UDRAMHAE4DTwNFAwcATwNGA0UDBwBPA1ADRgMHAFEDRwNIAwcAUQNNA0cDBwBSA1MDVAMHAFIDVQNTAwcAVgNUA1cDBwBWA1IDVAMHAFgDWQNaAwcAWANbA1kDBwBcA1oDXQMHAFwDWANaAwcAXgNdA18DBwBeA1wDXQMHAGADYQNiAwcAYANjA2EDBwBkA2IDZQMHAGQDYANiAwcAZgNnA1UDBwBmA2gDZwMHAGkDaANmAwcAaQNqA2gDBwBoA2sDZwMHAGgDbANrAwcAagNsA2gDBwBqA20DbAMHAG4DbwNwAwcAbgNxA28DBwByA3EDbgMHAHIDcwNxAwcAcQN0A28DBwBxA3UDdAMHAHMDdQNxAwcAcwN2A3UDBwB3AyYDIwMHAHcDeAMmAwcAeQN4A3cDBwB5A3oDeAMHAHsDVQNSAwcAewNmA1UDBwB8A2YDewMHAHwDaQNmAwcAfQNSA1YDBwB9A3sDUgMHAH4DewN9AwcAfgN8A3sDBwB/A1sDWAMHAH8DgANbAwcAgQOAA38DBwCBA4IDgAMHAIMDWANcAwcAgwN/A1gDBwCEA38DgwMHAIQDgQN/AwcAhQNcA14DBwCFA4MDXAMHAIYDgwOFAwcAhgOEA4MDBwCHA2MDYAMHAIcDiANjAwcAiQOIA4cDBwCJA4oDiAMHAIsDYANkAwcAiwOHA2ADBwCMA4cDiwMHAIwDiQOHAwcAJQONA44DBwAlA48DjQMHAI8DkAONAwcAjwORA5ADBwCRA5IDkAMHAJEDawOSAwcAawOTA5IDBwBrA2wDkwMHAGwDlAOTAwcAbANtA5QDBwBtA5UDlAMHAG0DlgOVAwcAlgOXA5UDBwCWA3kDlwMHAHkDmAOXAwcAeQN3A5gDBwB3A5kDmAMHAHcDIwOZAwcAIwOOA5kDBwAjAyUDjgMHAJoDjQOQAwcAmgObA40DBwCcA5sDmgMHAJwDnQObAwcAmwOOA40DBwCbA54DjgMHAJ0DngObAwcAnQOfA54DBwCeA5kDjgMHAJ4DoAOZAwcAnwOgA54DBwCfA3QDoAMHAKADmAOZAwcAoAOhA5gDBwB0A6EDoAMHAHQDdQOhAwcAoQOXA5gDBwChA6IDlwMHAHUDogOhAwcAdQN2A6IDBwCiA5UDlwMHAKIDowOVAwcAdgOjA6IDBwB2A3MDowMHAKMDlAOVAwcAowOkA5QDBwBzA6QDowMHAHMDcgOkAwcApAOTA5QDBwCkA6UDkwMHAHIDpQOkAwcAcgNuA6UDBwClA5IDkwMHAKUDpgOSAwcAbgOmA6UDBwBuA3ADpgMHAKYDkAOSAwcApgOaA5ADBwBwA5oDpgMHAHADnAOaAwcApwOoA6kDBwCnA6oDqAMHAKsDqgOnAwcAqwOsA6oDBwCtA6wDqwMHAK0DrgOsAwcArwOoA7ADBwCvA6kDqAMHAK0DsQOuAwcArQOyA7EDBwCzA7EDsgMHALMDtAOxAwcAtQO0A7MDBwC1A7YDtAMHAK8DtgO1AwcArwOwA7YDBwBlA7cDuAMHAGUDYgO3AwcAYgO5A7cDBwBiA2EDuQMHAGEDugO5AwcAYQNjA7oDBwBjA7sDugMHAGMDiAO7AwcAiAO8A7sDBwCIA4oDvAMHAIoDvQO8AwcAigOJA70DBwCJA74DvQMHAIkDjAO+AwcAjAO/A74DBwCMA4sDvwMHAIsDwAO/AwcAiwNkA8ADBwBkA7gDwAMHAGQDZQO4AwcAwQO3A7kDBwDBA8IDtwMHAF8DwgPBAwcAXwPDA8IDBwDCA7gDtwMHAMIDxAO4AwcAwwPEA8IDBwDDA8UDxAMHAMQDwAO4AwcAxAPGA8ADBwDFA8YDxAMHAMUDxwPGAwcAxgO/A8ADBwDGA8gDvwMHAMcDyAPGAwcAxwPJA8gDBwDIA74DvwMHAMgDygO+AwcAyQPKA8gDBwDJA8sDygMHAMoDvQO+AwcAygPMA70DBwDLA8wDygMHAMsDzQPMAwcAzAO8A70DBwDMA84DvAMHAM0DzgPMAwcAzQOGA84DBwDOA7sDvAMHAM4DzwO7AwcAhgPPA84DBwCGA4UDzwMHAM8DugO7AwcAzwPQA7oDBwCFA9ADzwMHAIUDXgPQAwcA0AO5A7oDBwDQA8EDuQMHAF4DwQPQAwcAXgNfA8EDBwDRA9ID0wMHANED1APSAwcA1QPWA9cDBwDVA9gD1gMHANgD2QPaAwcA2APVA9kDBwDbA9YD3AMHANsD1wPWAwcA2gPdA94DBwDaA9kD3QMHAN4D0gPUAwcA3gPdA9IDBwDfA9wD4AMHAN8D2wPcAwcA0wPgA9EDBwDTA98D4AMHAOEDywPiAwcA4QOCA8sDBwDFA+MD5AMHAMUDWQPjAwcAWwPjA1kDBwBbA+UD4wMHAMUD5gPHAwcAxQPkA+YDBwCAA+UDWwMHAIAD5wPlAwcAggPnA4ADBwCCA+ED5wMHAMcD6APJAwcAxwPmA+gDBwDJA+IDywMHAMkD6APiAwcA0wPpA+oDBwDTA9ID6QMHAOsD6QPsAwcA6wPqA+kDBwDVA+0D7gMHANUD1wPtAwcA7wPtA/ADBwDvA+4D7QMHAO4D2QPVAwcA7gPxA9kDBwDyA+4D7wMHAPID8QPuAwcA2wPtA9cDBwDbA/MD7QMHAPAD8wP0AwcA8APtA/MDBwDxA90D2QMHAPED9QPdAwcA9gPxA/IDBwD2A/UD8QMHAPUD0gPdAwcA9QPpA9IDBwDsA/UD9gMHAOwD6QP1AwcA3wPzA9sDBwDfA/cD8wMHAPQD9wP4AwcA9APzA/cDBwDTA/cD3wMHANMD6gP3AwcA+APqA+sDBwD4A/cD6gMHAOED+QP6AwcA4QPiA/kDBwCoA/kDsAMHAKgD+gP5AwcA5AP7A/wDBwDkA+MD+wMHALED+wOuAwcAsQP8A/sDBwDlA/sD4wMHAOUD/QP7AwcArgP9A6wDBwCuA/sD/QMHAOQD/gPmAwcA5AP8A/4DBwC0A/wDsQMHALQD/gP8AwcA5wP9A+UDBwDnA/8D/QMHAKwD/wOqAwcArAP9A/8DBwDhA/8D5wMHAOED+gP/AwcAqgP6A6gDBwCqA/8D+gMHAOYDAAToAwcA5gP+AwAEBwC2A/4DtAMHALYDAAT+AwcA6AP5A+IDBwDoAwAE+QMHALADAAS2AwcAsAP5AwAEBwABBAIEAwQHAAEEBAQCBAcABAQFBAIEBwAEBAYEBQQHAAYEBwQFBAcABgQIBAcE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BwB9BH4EegQHAH4EZwRmBAcAfgR9BGcEBwB/BHkEewQHAH8EfQR5BAcAfQRlBGcEBwB9BH8EZQQHAIAEewR8BAcAgAR/BHsEBwB/BGgEZQQHAH8EgARoBAcAfgR8BHoEBwB+BIAEfAQHAIAEZgRoBAcAgAR+BGYEBwCBBIIEgwQHAIEEhASCBAcAhQSGBIcEBwCFBIgEhgQHAIkEhwSKBAcAiQSFBIcEBwCLBIkEigQHAIsEjASJBAcAhgSMBIsEBwCGBIgEjAQHAIcEjQSOBAcAhwSGBI0EBwCKBI4EjwQHAIoEhwSOBAcAkASKBI8EBwCQBIsEigQHAI0EiwSQBAcAjQSGBIsEBwCOBHUEdgQHAI4EjQR1BAcAjwR2BHcEBwCPBI4EdgQHAHgEjwR3BAcAeASQBI8EBwB1BJAEeAQHAHUEjQSQBAcAhQSRBIgEBwCFBJIEkQQHAJEEjASIBAcAkQSTBIwEBwCTBIkEjAQHAJMElASJBAcAiQSSBIUEBwCJBJQEkgQHAJIElQSRBAcAkgSWBJUEBwCDBJYEgQQHAIMElQSWBAcAkQSXBJMEBwCRBJUElwQHAIIElQSDBAcAggSXBJUEBwCTBJgElAQHAJMElwSYBAcAhASXBIIEBwCEBJgElwQHAJQElgSSBAcAlASYBJYEBwCBBJgEhAQHAIEElgSYBAcAmQSaBJsEBwCZBJwEmgQHAJsEnQSeBAcAmwSaBJ0EBwCfBKAEoQQHAJ8EogSgBAcAoQScBJkEBwChBKAEnAQHAKMEogSfBAcAowSkBKIEBwClBKYEpwQHAKUEqASmBAcApgSpBKcEBwCmBKoEqQQHAKoEqwSpBAcAqgSsBKsEBwCsBK0EqwQHAKwErgStBAcArgSvBK0EBwCuBLAErwQHALEEpASjBAcAsQSyBKQEBwCwBLMErwQHALAEtASzBAcAtQSyBLEEBwC1BLYEsgQHALMEtwS4BAcAswS0BLcEBwC5BLUEugQHALkEtgS1BAcAuAS7BLwEBwC4BLcEuwQHAL0EugS+BAcAvQS5BLoEBwC/BL4EwAQHAL8EvQS+BAcAvATBBMIEBwC8BLsEwQQHAMMEwATEBAcAwwS/BMAEBwDFBMQExgQHAMUEwwTEBAcAwgTHBMgEBwDCBMEExwQHAMkEmwTKBAcAyQSZBJsEBwDKBJ4EywQHAMoE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BwB0BYIFgQUHAIMFgAV/BQcAgwWEBYAFBwCCBYUFgQUHAIIFhgWFBQcAhwWDBYgFBwCHBYQFgwUHAIUFiQWKBQcAhQWGBYkFBwCLBYgFjAUHAIsFhwWIBQcAigWNBY4FBwCKBYkFjQUHAI4FjwWQBQcAjgWNBY8FBwCRBYwFkgUHAJEFiwWMBQcAkAWTBZQFBwCQBY8FkwUHAJQFlQWWBQcAlAWTBZUFBwCXBZIFmAUHAJcFkQWSBQcAawWZBZoFBwBrBWoFmQUHAG4FmgWbBQcAbgVrBZoFBwBxBZwFnQUHAHEFcAWcBQcAagWdBZkFBwBqBXEFnQUHAHAFngWcBQcAcAVzBZ4FBwB3BZ8FoAUHAHcFdgWfBQcAoQV3BaAFBwChBXkFdwUHAKIFeQWhBQcAogV7BXkFBwCjBXsFogUHAKMFfQV7BQcApAV9BaMFBwCkBX8FfQUHAHMFpQWeBQcAcwWBBaUFBwCmBX8FpAUHAKYFgwV/BQcAgQWnBaUFBwCBBYUFpwUHAIgFpgWoBQcAiAWDBaYFBwCnBYoFqQUHAKcFhQWKBQcAjAWoBaoFBwCMBYgFqAUHAKkFjgWrBQcAqQWKBY4FBwCrBZAFrAUHAKsFjgWQBQcAkgWqBa0FBwCSBYwFqgUHAKwFlAWuBQcArAWQBZQFBwCuBZYFrwUHAK4FlAWWBQcAmAWtBbAFBwCYBZIFrQUHAJoFsQWyBQcAmgWZBbEFBwCbBbIFswUHAJsFmgWyBQcAnQW0BbUFBwCdBZwFtAUHAJkFtQWxBQcAmQWdBbUFBwCcBbYFtAUHAJwFngW2BQcAoAW3BbgFBwCgBZ8FtwUHALkFoAW4BQcAuQWhBaAFBwC6BaEFuQUHALoFogWhBQcAuwWiBboFBwC7BaMFogUHALwFowW7BQcAvAWkBaMFBwCeBb0FtgUHAJ4FpQW9BQcAvgWkBbwFBwC+BaYFpAUHAKUFvwW9BQcApQWnBb8FBwCoBb4FwAUHAKgFpgW+BQcAvwWpBcEFBwC/BacFqQUHAKoFwAXCBQcAqgWoBcAFBwDBBasFwwUHAMEFqQWrBQcAwwWsBcQFBwDDBasFrAUHAK0FwgXFBQcArQWqBcIFBwDEBa4FxgUHAMQFrAWuBQcAxgWvBccFBwDGBa4FrwUHALAFxQXIBQcAsAWtBcUFBwCyBfkE+gQHALIFsQX5BAcAswX6BPsEBwCzBbIF+gQHALUF/AT9BAcAtQW0BfwEBwCxBf0E+QQHALEFtQX9BAcAtAX+BPwEBwC0BbYF/gQHALgF/wQABQcAuAW3Bf8EBwABBbgFAAUHAAEFuQW4BQcAAgW5BQEFBwACBboFuQUHAAMFugUCBQcAAwW7BboFBwAEBbsFAwUHAAQFvAW7BQcAtgUFBf4EBwC2Bb0FBQUHAAYFvAUEBQcABgW+BbwFBwC9BQcFBQUHAL0FvwUHBQcAwAUGBQgFBwDABb4FBgUHAAcFwQUJBQcABwW/BcEFBwDCBQgFCgUHAMIFwAUIBQcACQXDBQsFBwAJBcEFwwUHAAsFxAUMBQcACwXDBcQFBwDFBQoFDQUHAMUFwgUKBQcADAXGBQ4FBwAMBcQFxgUHAA4FxwUPBQcADgXGBccFBwDIBQ0FEAUHAMgFxQUNBQcAyQXKBcsFBwDJBcwFygUHAM0FzAXJBQcAzQXOBcwFBwDPBdAF0QUHAM8F0gXQBQcA0QXOBc0FBwDRBdAFzgUHANMF0gXPBQcA0wXUBdIFBwDVBdYF1wUHANUF2AXWBQcA1gXZBdcFBwDWBdoF2QUHANoF2wXZBQcA2gXcBdsFBwDcBd0F2wUHANwF3gXdBQcA3gXfBd0FBwDeBeAF3wUHAOEF1AXTBQcA4QXiBdQFBwDgBeMF3wUHAOAF5AXjBQcA5QXiBeEFBwDlBeYF4gUHAOMF5wXoBQcA4wXkBecFBwDpBeUF6gUHAOkF5gXlBQcA6AXrBewFBwDoBecF6wUHAO0F6gXuBQcA7QXpBeoFBwDvBe4F8AUHAO8F7QXuBQcA7AXxBfIFBwDsBesF8QUHAPMF9AX1BQcA8wX2BfQFBwD2BfAF9AUHAPYF7wXwBQcA8gX3BfgFBwDyBfEF9wUHAPkF7wX2BQcA+QX6Be8FBwCTBfoF+QUHAJMFjwX6BQcA+gXtBe8FBwD6BfsF7QUHAI8F+wX6BQcAjwWNBfsFBwD7BekF7QUHAPsF/AXpBQcAjQX8BfsFBwCNBYkF/AUHAPwF5gXpBQcA/AX9BeYFBwCJBf0F/AUHAIkFhgX9BQcA/QXiBeYFBwD9Bf4F4gUHAIYF/gX9BQcAhgWCBf4FBwD+BdQF4gUHAP4F/wXUBQcAggX/Bf4FBwCCBXQF/wUHAP8F0gXUBQcA/wUABtIFBwB0BQAG/wUHAHQFcgUABgcAAAbQBdIFBwAABgEG0AUHAHIFAQYABgcAcgVvBQEGBwABBs4F0AUHAAEGAgbOBQcAbwUCBgEGBwBvBWwFAgYHAAIGzAXOBQcAAgYDBswFBwBsBQMGAgYHAGwFaQUDBgcAAwbKBcwFBwADBgQGygUHAGkFBAYDBgcAaQVtBQQGBwAFBtYF2AUHAAUGBgbWBQcAeAUGBgUGBwB4BXUFBgYHAAYG2gXWBQcABgYHBtoFBwB1BQcGBgYHAHUFegUHBgcABwbcBdoFBwAHBggG3AUHAHoFCAYHBgcAegV8BQgGBwAIBt4F3AUHAAgGCQbeBQcAfAUJBggGBwB8BX4FCQYHAAkG4AXeBQcACQYKBuAFBwB+BQoGCQYHAH4FgAUKBgcACgbkBeAFBwAKBgsG5AUHAIAFCwYKBgcAgAWEBQsGBwALBucF5AUHAAsGDAbnBQcAhAUMBgsGBwCEBYcFDAYHAAwG6wXnBQcADAYNBusFBwCHBQ0GDAYHAIcFiwUNBgcADQbxBesFBwANBg4G8QUHAIsFDgYNBgcAiwWRBQ4GBwAOBvcF8QUHAA4GDwb3BQcAkQUPBg4GBwCRBZcFDwYHABAG9gXzBQcAEAb5BfYFBwCVBfkFEAYHAJUFkwX5BQcAEQaXBZgFBwARBhIGlwUHAJYFEgYRBgcAlgWVBRIGBwASBg8GlwUHABIGEwYPBgcAlQUTBhIGBwCVBRAGEwYHABMG9wUPBgcAEwYUBvcFBwAQBhQGEwYHABAG8wUUBgcAFAb4BfcFBwAUBhUG+AUHAPMFFQYUBgcA8wX1BRUGBwAWBtgF1QUHABYGFwbYBQcAywUXBhYGBwDLBcoFFwYHABcGBQbYBQcAFwYYBgUGBwDKBRgGFwYHAMoFBAYYBgcAGAZ4BQUGBwAYBhkGeAUHAAQGGQYYBgcABAZtBRkGBwAZBnYFeAUHABkGGgZ2BQcAbQUaBhkGBwBtBW4FGgYHABoGnwV2BQcAGgYbBp8FBwBuBRsGGgYHAG4FmwUbBgcAGwa3BZ8FBwAbBhwGtwUHAJsFHAYbBgcAmwWzBRwGBwAcBv8EtwUHABwGZQX/BAcAswVlBRwGBwCzBfsEZQUHAB0GmAWwBQcAHQYRBpgFBwCvBREGHQYHAK8FlgURBgcAHgawBcgFBwAeBh0GsAUHAMcFHQYeBgcAxwWvBR0GBwBoBcgFEAUHAGgFHgbIBQcADwUeBmgFBwAPBccFHgYHAB8GIAYhBgcAHwYiBiAGBwAjBiEGJAYHACMGHwYhBgcAJQYkBiYGBwAlBiMGJAYHACcGJgYoBgcAJwYlBiYGBwApBiIGHwYHACkGKgYiBgcAKwYfBiMGBwArBikGHwYHACwGIwYlBgcALAYrBiMGBwAtBiUGJwYHAC0GLAYlBgcALgYsBi0GBwAuBi8GLAYHAC8GKwYsBgcALwYwBisGBwAwBikGKwYHADAGMQYpBgcAMQYqBikGBwAxBjIGKgYHADMGNAY1BgcAMwY2BjQGBwA3BjgGOQYHADcGOgY4BgcAOwY5BjwGBwA7BjcGOQYHAD0GPgY/BgcAPQZABj4GBwBBBj8GQgYHAEEGPQY/BgcAQwZCBkQGBwBDBkEGQgYHAEUGRgZHBgcARQZIBkYGBwA2BkgGRQYHADYGMwZIBgcASQZKBksGBwBJBkwGSgYHADoGTAZJBgcAOgY3BkwGBwBMBk0GSgYHAEwGTgZNBgcANwZOBkwGBwA3BjsGTgYHAE4GTwZNBgcATgZQBk8GBwBRBlIGUwYHAFEGVAZSBgcAVAZVBlIGBwBUBlYGVQYHAFYGVwZVBgcAVgZYBlcGBwBYBlkGVwYHAFgGWgZZBgcAWwZcBl0GBwBbBl4GXAYHAEAGXgZbBgcAQAY9Bl4GBwBeBl8GXAYHAF4GYAZfBgcAPQZgBl4GBwA9BkEGYAYHAGAGYQZfBgcAYAZiBmEGBwBBBmIGYAYHAEEGQwZiBgcAYwYzBjUGBwBjBmQGMwYHAGQGSAYzBgcAZAZlBkgGBwBlBkYGSAYHAGUGZgZGBgcAZwZRBlMGBwBnBmgGUQYHAGcGUAZoBgcAZwZPBlAGBwAvBkQGQgYHAC8GLgZEBgcAMAZCBj8GBwAwBi8GQgYHAGkGPgZABgcAaQZqBj4GBwBrBlsGXQYHAGsGbAZbBgcAaQZbBmwGBwBpBkAGWwYHADEGPwY+BgcAMQYwBj8GBwAyBj4GagYHADIGMQY+BgcAbQZuBm8GBwBtBnAGbgYHAHEGcgZzBgcAcQZ0BnIGBwBzBnUGdgYHAHMGcgZ1BgcAdwZxBngGBwB3BnQGcQYHAG8GeAZtBgcAbwZ3BngGBwB5BnoGewYHAHkGfAZ6BgcAfQZ+Bn8GBwB9BoAGfgYHAIEGfgaCBgcAgQZ/Bn4GBwCDBoQGhQYHAIMGhgaEBgcAdAaGBnIGBwB0BoQGhgYHAIMGhwaGBgcAgwaIBocGBwByBocGdQYHAHIGhgaHBgcAiQaKBosGBwCJBowGigYHAI0GigaOBgcAjQaLBooGBwCBBosGfwYHAIEGiQaLBgcAfQaLBo0GBwB9Bn8GiwYHAG4GjwaQBgcAbgaRBo8GBwCRBpIGjwYHAJEGkwaSBgcAcAaRBm4GBwBwBpQGkQYHAJQGkwaRBgcAlAaVBpMGBwCWBloGlwYHAJYGWQZaBgcAawaXBmwGBwBrBpYGlwYHAGkGlwaYBgcAaQZsBpcGBwCYBloGmQYHAJgGlwZaBgcAmgZYBlYGBwCaBpsGWAYHAJsGWgZYBgcAmwaZBloGBwCaBlQGnAYHAJoGVgZUBgcAnAZRBp0GBwCcBlQGUQYHAJ0GaAaeBgcAnQZRBmgGBwCeBlAGnwYHAJ4GaAZQBgcAUAagBp8GBwBQBk4GoAYHAKEGPAaiBgcAoQY7BjwGBwCjBpUGlAYHAKMGpAaVBgcApQaUBnAGBwClBqMGlAYHAKUGbQamBgcApQZwBm0GBwCmBngGpwYHAKYGbQZ4BgcApwZxBqgGBwCnBngGcQYHAKgGcwapBgcAqAZxBnMGBwCpBnYGqgYHAKkGcwZ2BgcAqwaYBpkGBwCrBqwGmAYHAK0GmQabBgcArQarBpkGBwCuBpsGmgYHAK4GrQabBgcArwaaBpwGBwCvBq4GmgYHALAGnAadBgcAsAavBpwGBwCxBp0GngYHALEGsAadBgcAsgaeBp8GBwCyBrEGngYHALMGoAahBgcAswa0BqAGBwC1BqEGogYHALUGswahBgcAtgakBqMGBwC2BrcGpAYHALgGowalBgcAuAa2BqMGBwC5BqUGpgYHALkGuAalBgcAugamBqcGBwC6BrkGpgYHALsGpwaoBgcAuwa6BqcGBwC8BqgGqQYHALwGuwaoBgcAvQapBqoGBwC9BrwGqQYHAGoGmAasBgcAagZpBpgGBwC+Bl8GYQYHAL4GvwZfBgcAvwZcBl8GBwC/BsAGXAYHAMAGXQZcBgcAwAbBBl0GBwDBBmsGXQYHAMEGwgZrBgcAwgaWBmsGBwDCBsMGlgYHAMMGWQaWBgcAwwbEBlkGBwDEBlcGWQYHAMQGxQZXBgcAxQZVBlcGBwDFBsYGVQYHAMYGUgZVBgcAxgbHBlIGBwDHBlMGUgYHAMcGyAZTBgcAyAZnBlMGBwDIBskGZwYHAMkGTwZnBgcAyQbKBk8GBwDKBk0GTwYHAMoGywZNBgcAywZKBk0GBwDLBswGSgYHAMwGSwZKBgcAzAbNBksGBwDOBkYGZgYHAM4GzwZGBgcAzwZHBkYGBwDPBtAGRwYHANEGvwa+BgcA0QbSBr8GBwDSBsAGvwYHANIG0wbABgcA0wbBBsAGBwDTBtQGwQYHANQGwgbBBgcA1AbVBsIGBwDVBsMGwgYHANUG1gbDBgcA1gbEBsMGBwDWBtcGxAYHANcGxQbEBgcA1wbYBsUGBwDYBsYGxQYHANgG2QbGBgcA2QbHBsYGBwDZBtoGxwYHANoGyAbHBgcA2gbbBsgGBwDbBskGyAYHANsG3AbJBgcA3AbKBskGBwDcBt0GygYHAN0GywbKBgcA3QbeBssGBwDeBswGywYHAN4G3wbMBgcA3wbNBswGBwDfBuAGzQYHAOEGzwbOBgcA4QbiBs8GBwDiBtAGzwYHAOIG4wbQBgcA5AY0BjYGBwDkBuUGNAYHAEUG5AY2BgcARQbmBuQGBwDnBkUGRwYHAOcG5gZFBgcA0AbnBkcGBwDQBugG5wYHAOMG6AbQBgcA4wbpBugGBwDqBuUG5AYHAOoG6wblBgcA5gbqBuQGBwDmBuwG6gYHAO0G5gbnBgcA7QbsBuYGBwDoBu0G5wYHAOgG7gbtBgcA6QbuBugGBwDpBu8G7gYHAPAGYwbxBgcA8AZkBmMGBwDyBmQG8AYHAPIGZQZkBgcA8wZlBvIGBwDzBmYGZQYHAGYG9AbOBgcAZgbzBvQGBwDOBvUG4QYHAM4G9Ab1BgcAjwY4BvYGBwCPBpIGOAYHAPcGjwb2BgcA9waQBo8GBwD4BvkG+gYHAPgG+wb5BgcA+wZ7BvkGBwD7BnkGewYHAPcG+wb4BgcA9wb8BvsGBwD8BnkG+wYHAPwG/QZ5BgcA9gb8BvcGBwD2Bv4G/AYHAP4G/Qb8BgcA/gb/Bv0GBwA4Bv4G9gYHADgGAAf+BgcAAAf/Bv4GBwAAB/EG/wYHADoGAAc4BgcAOgYBBwAHBwABB/EGAAcHAAEH8AbxBgcASQYBBzoGBwBJBgIHAQcHAAIH8AYBBwcAAgfyBvAGBwBLBgIHSQYHAEsGAwcCBwcAAwfyBgIHBwADB/MG8gYHAM0GAwdLBgcAzQYEBwMHBwAEB/MGAwcHAAQH9AbzBgcA4AYEB80GBwDgBgUHBAcHAAUH9AYEBwcABQf1BvQGBwD6BgYHhQYHAPoG+QYGBwcA+QYHBwYHBwD5BnsGBwcHAIUGCAeDBgcAhQYGBwgHBwAGBwkHCAcHAAYHBwcJBwcAgwYKB4gGBwCDBggHCgcHAAgHCwcKBwcACAcJBwsHBwAMBw0HDgcHAAwHDwcNBwcADwcQBw0HBwAPBxEHEAcHABIHDwcMBwcAEgcTBw8HBwATBxEHDwcHABMHFAcRBwcAFQcTBxIHBwAVBxYHEwcHABYHFAcTBwcAFgcXBxQHBwAYBxYHFQcHABgHGQcWBwcAGQcXBxYHBwAZBxoHFwcHABsHFwcaBwcAGwccBxcHBwAcBxQHFwcHABwHHQcUBwcAHgcQBxEHBwAeBx8HEAcHABQHHgcRBwcAFAcdBx4HBwB6BiAHIQcHAHoGfAYgBwcAfAb9BiAHBwB8BnkG/QYHACIH/QYjBwcAIgcgB/0GBwAeByMHHwcHAB4HIgcjBwcAHQciBx4HBwAdByQHIgcHACQHIAciBwcAJAchByAHBwA1BiUHYwYHADUGJgclBwcAJgcjByUHBwAmBx8HIwcHADQGJgc1BgcANAYnByYHBwAnBx8HJgcHACcHEAcfBwcA5QYnBzQGBwDlBigHJwcHACgHEAcnBwcAKAcNBxAHBwDrBigH5QYHAOsGKQcoBwcAKQcNBygHBwApBw4HDQcHAP8GYwYlBwcA/wbxBmMGBwD9BiUHIwcHAP0G/wYlBwcAKgeIBgoHBwAqBysHiAYHACwHCgcLBwcALAcqBwoHBwArB4cGiAYHACsHLQeHBgcALQd1BocGBwAtBy4HdQYHAC8HdQYuBwcALwd2BnUGBwAwBzEHMgcHADAHMwcxBwcANAc1BzYHBwA0BzcHNQcHADcHOAc1BwcANwc5BzgHBwA6BzgHOQcHADoHOwc4BwcANQc8Bz0HBwA1BzgHPAcHAD4HPwc2BwcAPgdABz8HBwA2Bz0HPgcHADYHNQc9BwcAOAdBBzwHBwA4BzsHQQcHAEIHQwdEBwcAQgdFB0MHBwBFB0AHQwcHAEUHPwdABwcARgdFB0IHBwBGB0cHRQcHAEcHPwdFBwcARwdIBz8HBwBJB0YHQgcHAEkHSgdGBwcASwdCB0QHBwBLB0kHQgcHAEwHOgc5BwcATAdNBzoHBwBOBzkHNwcHAE4HTAc5BwcATwc3BzQHBwBPB04HNwcHAFAHUQdSBwcAUAdTB1EHBwBUB1UHVgcHAFQHVwdVBwcAWAdVB08HBwBYB1YHVQcHAEgHTwc0BwcASAdYB08HBwBZB08HVQcHAFkHWgdPBwcAWgdOB08HBwBaB1sHTgcHAFwHVwddBwcAXAdeB1cHBwBbB0wHTgcHAFsHXwdMBwcAXwdNB0wHBwBfB2AHTQcHAGEHYAdfBwcAYQdiB2AHBwBjB18HWwcHAGMHYQdfBwcAZAdbB1oHBwBkB2MHWwcHAGUHWgdZBwcAZQdkB1oHBwBmB14HXAcHAGYHZwdeBwcAaAdgB2IHBwBoB2kHYAcHAGoHawdsBwcAagdtB2sHBwBuB2wHbwcHAG4HagdsBwcAbQdwB2sHBwBtB3EHcAcHAHIHbQdqBwcAcgdzB20HBwB0B2oHbgcHAHQHcgdqBwcAcwdxB20HBwBzB3UHcQcHAGsHdgdsBwcAawd3B3YHBwB3BxkHdgcHAHcHGgcZBwcAcAd3B2sHBwBwB3gHdwcHAHgHGgd3BwcAeAcbBxoHBwBxB3gHcAcHAHEHeQd4BwcAeQcbB3gHBwB5B3oHGwcHAHUHeQdxBwcAdQd7B3kHBwB7B3oHeQcHAHsHfAd6BwcAbAd9B28HBwBsB3YHfQcHAHYHGAd9BwcAdgcZBxgHBwBvB34HbgcHAG8HfQd+BwcAfQd/B34HBwB9BxgHfwcHAG4HgAd0BwcAbgd+B4AHBwB+B4EHgAcHAH4HfweBBwcAggciBioGBwCCB4MHIgYHAIQHKgYyBgcAhAeCByoGBwCDByAGIgYHAIMHhQcgBgcAhQchBiAGBwCFB4YHIQYHAIYHJAYhBgcAhgeHByQGBwCHByYGJAYHAIcHiAcmBgcAiAcoBiYGBwCIB4kHKAYHAIkHJwYoBgcAiQeKBycGBwCKBy0GJwYHAIoHiwctBgcAiwcuBi0GBwCLB4wHLgYHAIwHRAYuBgcAjAeNB0QGBwCNB0MGRAYHAI0HjgdDBgcAjgdiBkMGBwCOB48HYgYHAJAHTQdgBwcAkAeRB00HBwCRBzoHTQcHAJEHkgc6BwcAkgc7BzoHBwCSB5MHOwcHAJMHQQc7BwcAkweUB0EHBwCVBy8HLgcHAJUHlgcvBwcAlweqBnYGBwCXB5gHqgYHAJgHvQaqBgcAmAeZB70GBwCZB7wGvQYHAJkHmge8BgcAmge7BrwGBwCaB5sHuwYHAJsHuga7BgcAmwecB7oGBwCcB7kGugYHAJwHnQe5BgcAnQe4BrkGBwCdB54HuAYHAJ4Htga4BgcAngefB7YGBwCfB7cGtgYHAJ8HoAe3BgcAoQezBrUGBwChB6IHswYHAKIHtAazBgcAogejB7QGBwCkB7EGsgYHAKQHpQexBgcApQewBrEGBwClB6YHsAYHAKYHrwawBgcApgenB68GBwCnB64GrwYHAKcHqAeuBgcAqAetBq4GBwCoB6kHrQYHAKkHqwatBgcAqQeqB6sGBwCqB6wGqwYHAKoHqwesBgcAqwdqBqwGBwCrB6wHagYHAKwHMgZqBgcArAeEBzIGBwCtB4MHggcHAK0HrgeDBwcArweCB4QHBwCvB60HggcHAK4HhQeDBwcArgewB4UHBwCxB4QHrAcHALEHrweEBwcAsAeGB4UHBwCwB7IHhgcHALIHhweGBwcAsgezB4cHBwCzB4gHhwcHALMHtAeIBwcAtAeJB4gHBwC0B7UHiQcHALUHigeJBwcAtQe2B4oHBwC2B4sHigcHALYHtweLBwcAtweMB4sHBwC3B7gHjAcHALgHjQeMBwcAuAe5B40HBwC5B44HjQcHALkHugeOBwcAugePB44HBwC6B7sHjwcHALwHkQeQBwcAvAe9B5EHBwC9B5IHkQcHAL0HvgeSBwcAvgeTB5IHBwC+B78HkwcHAL8HlAeTBwcAvwfAB5QHBwDBB5YHlQcHAMEHwgeWBwcAwweYB5cHBwDDB8QHmAcHAMQHmQeYBwcAxAfFB5kHBwDFB5oHmQcHAMUHxgeaBwcAxgebB5oHBwDGB8cHmwcHAMcHnAebBwcAxwfIB5wHBwDIB50HnAcHAMgHyQedBwcAyQeeB50HBwDJB8oHngcHAMoHnweeBwcAygfLB58HBwDLB6AHnwcHAMsHzAegBwcAzQeiB6EHBwDNB84HogcHAM4HoweiBwcAzgfPB6MHBwDQB6UHpAcHANAH0QelBwcA0QemB6UHBwDRB9IHpgcHANIHpwemBwcA0gfTB6cHBwDTB6gHpwcHANMH1AeoBwcA1AepB6gHBwDUB9UHqQcHANUHqgepBwcA1QfWB6oHBwDWB6sHqgcHANYH1werBwcA1wesB6sHBwDXB7EHrAcHAGEGjwe+BgcAYQZiBo8HBwC7B74GjwcHALsH0Qa+BgcA2AcLBwkHBwDYB9kHCwcHANoHCQcHBwcA2gfYBwkHBwDZBywHCwcHANkH2wcsBwcA2wfcBywHBwDbB90H3AcHAN4HBwd7BgcA3gfaBwcHBwDfB3sGegYHAN8H3gd7BgcA4Ad6BiEHBwDgB98HegYHAOEHIQckBwcA4QfgByEHBwDiByQHHQcHAOIH4QckBwcA4wcdBxwHBwDjB+IHHQcHAOQH2QfYBwcA5AflB9kHBwDmB9gH2gcHAOYH5AfYBwcA5QfbB9kHBwDlB+cH2wcHAOgH2gfeBwcA6AfmB9oHBwDnB90H2wcHAOcH6QfdBwcA6gfeB98HBwDqB+gH3gcHAOsH3wfgBwcA6wfqB98HBwDsB+AH4QcHAOwH6wfgBwcA7QfhB+IHBwDtB+wH4QcHAO4H4gfjBwcA7gftB+IHBwAbB+MHHAcHABsHegfjBwcA7gd6B3wHBwDuB+MHegcHAO8H8AfxBwcA7wfyB/AHBwDzB0kHSwcHAPMH9AdJBwcA9QfyB+8HBwD1B/YH8gcHAPcH9AfzBwcA9wf4B/QHBwDcB+8H8QcHANwH3QfvBwcA3Qf1B+8HBwDdB+kH9QcHACwH+QcqBwcALAf6B/kHBwD6Bz4H+QcHAPoHQAc+BwcA3Af6BywHBwDcB/sH+gcHAPsHQAf6BwcA+wdDB0AHBwDxB/sH3AcHAPEH/Af7BwcA/AdDB/sHBwD8B0QHQwcHAPAH/AfxBwcA8Af9B/wHBwD9B0QH/AcHAP0HSwdEBwcA8gf9B/AHBwDyB/4H/QcHAP4HSwf9BwcA/gfzB0sHBwD2B/4H8gcHAPYH/wf+BwcA/wfzB/4HBwD/B/cH8wcHACoHAAgrBwcAKgf5BwAIBwD5Bz0HAAgHAPkHPgc9BwcAKwcBCC0HBwArBwAIAQgHAAAIPAcBCAcAAAg9BzwHBwAtBwIILgcHAC0HAQgCCAcAAQhBBwIIBwABCDwHQQcHAC4HAwiVBwcALgcCCAMIBwACCJQHAwgHAAIIQQeUBwcAlQcECMEHBwCVBwMIBAgHAAMIwAcECAcAAwiUB8AHBwAFCAYIBwgHAAUISgcGCAcACAhcB10HBwAICAkIXAcHAAkIZgdcBwcACQgKCGYHBwALCAgIBwgHAAsIDAgICAcADAgJCAgIBwAMCA0ICQgHAA0ICggJCAcADQgOCAoIBwBJBwYISgcHAEkH9AcGCAcADwj0B/gHBwAPCAYI9AcHABAIaAdiBwcAEAgRCGgHBwASCGIHYQcHABIIEAhiBwcAEwhhB2MHBwATCBIIYQcHABQIYwdkBwcAFAgTCGMHBwAVCAoIDggHABUIFggKCAcAFwhkB2UHBwAXCBQIZAcHABgIZwdmBwcAGAgZCGcHBwAWCGYHCggHABYIGAhmBwcAGgi8B5AHBwAaCBsIvAcHAGkHkAdgBwcAaQcaCJAHBwAcCB0IHggHABwIHwgdCAcAIAghCCIIBwAgCCMIIQgHAB8IIggdCAcAHwggCCIIBwAjCCQIIQgHACMIJQgkCAcAJggcCCcIBwAmCB8IHAgHACYIIAgfCAcAJggoCCAIBwAoCCMIIAgHACgIKQgjCAcAKQglCCMIBwApCCoIJQgHACsIHAgeCAcAKwgsCBwIBwAtCC4ILwgHAC0IMAguCAcAMAgxCDIIBwAwCC0IMQgHADMIJQgqCAcAMwg0CCUIBwA0CCQIJQgHADQINQgkCAcANggbCBoIBwA2CDcIGwgHADgIGghpBwcAOAg2CBoIBwA5CGgHEQgHADkIOghoBwcAOghpB2gHBwA6CDgIaQcHADsINAgzCAcAOwg8CDQIBwA8CDUINAgHADwIPQg1CAcAPgg3CDYIBwA+CD8INwgHAEAINgg4CAcAQAg+CDYIBwBBCDgIOggHAEEIQAg4CAcAQgg6CDkIBwBCCEEIOggHAEMIPAg7CAcAQwhECDwIBwBECD0IPAgHAEQIRQg9CAcARghBCEIIBwBGCEcIQQgHAEgIPwg+CAcASAhJCD8IBwBKCD4IQAgHAEoISAg+CAcARwhACEEIBwBHCEoIQAgHAEsIRAhDCAcASwhMCEQIBwBMCEUIRAgHAEwITQhFCAcATghHCEYIBwBOCE8IRwgHAE8ISghHCAcATwhQCEoIBwBRCEkISAgHAFEIUghJCAcAUAhICEoIBwBQCFEISAgHAFMIUghRCAcAUwhUCFIIBwBVCFEIUAgHAFUIUwhRCAcAVghQCE8IBwBWCFUIUAgHAFcITwhOCAcAVwhWCE8IBwBYCE0ITAgHAFgIWQhNCAcAWghMCEsIBwBaCFgITAgHAFsIXAhdCAcAWwheCFwIBwBTCFsIVAgHAFMIXghbCAcAXghfCFwIBwBeCGAIXwgHAFUIXghTCAcAVQhgCF4IBwBhCGAIYggHAGEIXwhgCAcAYghVCFYIBwBiCGAIVQgHAGMIYghkCAcAYwhhCGIIBwBkCFYIVwgHAGQIYghWCAcAZQhmCGcIBwBlCGgIZggHAFgIZwhZCAcAWAhlCGcIBwBpCGgIZQgHAGkIaghoCAcAWghlCFgIBwBaCGkIZQgHAGsIaAhqCAcAawhsCGgIBwBsCGYIaAgHAGwIbQhmCAcAbghhCGMIBwBuCG8IYQgHAG8IXwhhCAcAbwhwCF8IBwBwCFwIXwgHAHAIcQhcCAcAcQhdCFwIBwBxCHIIXQgHAHMIbAhrCAcAcwh0CGwIBwB0CG0IbAgHAHQIdQhtCAcAdghvCG4IBwB2CHcIbwgHAHcIcAhvCAcAdwh4CHAIBwB4CHEIcAgHAHgIeQhxCAcAeQhyCHEIBwB5CHoIcggHAHsIdAhzCAcAewh8CHQIBwB8CHUIdAgHAHwIfQh1CAcAfgh3CHYIBwB+CH8IdwgHAH8IeAh3CAcAfwiACHgIBwCACHkIeAgHAIAIgQh5CAcAgQh6CHkIBwCBCIIIeggHAIMIEgcMBwcAgwiECBIHBwCFCAwHDgcHAIUIgwgMBwcAhAgVBxIHBwCECIYIFQcHAIcIDgcpBwcAhwiFCA4HBwCICCkH6wYHAIgIhwgpBwcAiQjrBuoGBwCJCIgI6wYHAIoI6gbsBgcAigiJCOoGBwCLCIQIgwgHAIsIjAiECAcAjQiDCIUIBwCNCIsIgwgHAIwIhgiECAcAjAiOCIYIBwCPCIUIhwgHAI8IjQiFCAcAkAiHCIgIBwCQCI8IhwgHAJEIiAiJCAcAkQiQCIgIBwCSCIkIiggHAJIIkQiJCAcAFQd/BxgHBwAVB4YIfwcHAIYIgQd/BwcAhgiOCIEHBwCKCO0G7gYHAIoI7AbtBgcAigjvBpIIBwCKCO4G7wYHAB0IkwgeCAcAHQiUCJMIBwCUCBQIkwgHAJQIEwgUCAcAIgiUCB0IBwAiCJUIlAgHAJUIEwiUCAcAlQgSCBMIBwAhCJUIIggHACEIlgiVCAcAlggSCJUIBwCWCBAIEggHACQIlgghCAcAJAiXCJYIBwCXCBAIlggHAJcIEQgQCAcANQiXCCQIBwA1CJgIlwgHAJgIEQiXCAcAmAg5CBEIBwA9CJgINQgHAD0ImQiYCAcAmQg5CJgIBwCZCEIIOQgHAEUImQg9CAcARQiaCJkIBwCaCEIImQgHAJoIRghCCAcATQiaCEUIBwBNCJsImggHAJsIRgiaCAcAmwhOCEYIBwBZCJsITQgHAFkInAibCAcAnAhOCJsIBwCcCFcITggHAGcInAhZCAcAZwidCJwIBwCdCFcInAgHAJ0IZAhXCAcAZgidCGcIBwBmCJ4InQgHAJ4IZAidCAcAnghjCGQIBwBtCJ4IZggHAG0InwieCAcAnwhjCJ4IBwCfCG4IYwgHAHUInwhtCAcAdQigCJ8IBwCgCG4InwgHAKAIdghuCAcAfQigCHUIBwB9CKEIoAgHAKEIdgigCAcAoQh+CHYIBwAeCKIIKwgHAB4IkwiiCAcAkwgXCKIIBwCTCBQIFwgHACwIowgxCAcALAikCKMIBwCkCBcIGQgHAKQIoggXCAcAMQilCDIIBwAxCKMIpQgHAKMIFgilCAcAowgYCBYIBwAyCKYIMAgHADIIpQimCAcApQgVCKYIBwClCBYIFQgHAKcIfgihCAcApwioCH4IBwCpCKEIfQgHAKkIpwihCAcAqgiCCIEIBwCqCKsIgggHAKwIgQiACAcArAiqCIEIBwCtCIAIfwgHAK0IrAiACAcAqAh/CH4IBwCoCK0IfwgHAK4IfQh8CAcArgipCH0IBwCvCHwIewgHAK8Irgh8CAcAsAipCK4IBwCwCLEIqQgHALIIrgivCAcAsgiwCK4IBwCxCKcIqQgHALEIswinCAcAswioCKcIBwCzCLQIqAgHALQIrQioCAcAtAi1CK0IBwC1CKwIrQgHALUItgisCAcAtwirCKoIBwC3CLgIqwgHALYIqgisCAcAtgi3CKoIBwC5CLEIsAgHALkIugixCAcAuwiwCLIIBwC7CLkIsAgHALoIswixCAcAugi8CLMIBwC8CLQIswgHALwIvQi0CAcAvQi1CLQIBwC9CL4ItQgHAL4Itgi1CAcAvgi/CLYIBwC/CLcItggHAL8IwAi3CAcAwAi4CLcIBwDACMEIuAgHAMIIwwjECAcAwgjFCMMIBwDECMYIxwgHAMQIwwjGCAcAxwjICMkIBwDHCMYIyAgHAMkIygjLCAcAyQjICMoIBwDFCMwIwwgHAMUIzQjMCAcAwwjOCMYIBwDDCMwIzggHAMYIzwjICAcAxgjOCM8IBwDICNAIyggHAMgIzwjQCAcAzwjRCNAIBwDPCNII0QgHAM4I0gjPCAcAzgjTCNIIBwDMCNMIzggHAMwI1AjTCAcAzQjUCMwIBwDNCNUI1AgHANYI1wjYCAcA1gjZCNcIBwDaCNsI3AgHANoI3QjbCAcA3AjeCN8IBwDcCNsI3ggHAOAI4QjiCAcA4AjjCOEIBwDiCOQI5QgHAOII4QjkCAcA5QjmCOcIBwDlCOQI5ggHAOgI6QjqCAcA6AjrCOkIBwDrCNkI6QgHAOsI1wjZCAcA7AjtCO4IBwDsCO8I7QgHAO8I3QjtCAcA7wjbCN0IBwDwCO8I7AgHAPAI8QjvCAcA8QjbCO8IBwDxCN4I2wgHAPII8QjwCAcA8gjzCPEIBwD0CPUI9ggHAPQI9wj1CAcA+Aj3CPQIBwD4CPkI9wgHAPoI+Qj4CAcA+gj7CPkIBwD8CPsI+ggHAPwI/Qj7CAcA/gj/CAAJBwD+CAEJ/wgHAAEJ4wj/CAcAAQnhCOMIBwACCQEJ/ggHAAIJAwkBCQcAAwnhCAEJBwADCeQI4QgHAAQJAwkCCQcABAkFCQMJBwAFCeQIAwkHAAUJ5gjkCAcA1wgGCdgIBwDXCAcJBgkHAOsIBwnXCAcA6wgICQcJBwDoCAgJ6wgHAOgICQkICQcA9QgKCfYIBwD1CAsJCgkHAPMICgkLCQcA8wjyCAoJBwDnCNII5QgHAOcI0QjSCAcA5QjTCOIIBwDlCNII0wgHAOAIDAnjCAcA4AgNCQwJBwD/CA4JAAkHAP8IDwkOCQcA/wgMCQ8JBwD/COMIDAkHAOII1AjgCAcA4gjTCNQIBwDgCNUIDQkHAOAI1AjVCAcAEAkRCRIJBwAQCRMJEQkHABQJFQkWCQcAFAkXCRUJBwAYCRYJGQkHABgJFAkWCQcAFQkaCRsJBwAVCRcJGgkHABsJEgkRCQcAGwkaCRIJBwAcCR0JHgkHABwJHwkdCQcAIAkSCSEJBwAgCRAJEgkHACAJIgkjCQcAIAkhCSIJBwAkCSUJJgkHACQJJwklCQcAJwkXCRQJBwAnCSQJFwkHACgJJQknCQcAKAkpCSUJBwAoCRQJGAkHACgJJwkUCQcAJAkqCSsJBwAkCSYJKgkHACQJGgkXCQcAJAkrCRoJBwArCSIJIQkHACsJKgkiCQcAKwkSCRoJBwArCSEJEgkHACwJEAkgCQcALAktCRAJBwAuCdwILwkHAC4J2gjcCAcALQkTCRAJBwAtCTAJEwkHAC8J3wgxCQcALwncCN8IBwD9CDIJMwkHAP0I/AgyCQcAMwkOCQ8JBwAzCTIJDgkHADMJDAk0CQcAMwkPCQwJBwD9CDQJNQkHAP0IMwk0CQcA+wg2CfkIBwD7CDcJNgkHAP0INwn7CAcA/Qg1CTcJBwD3CDYJOAkHAPcI+Qg2CQcA9Qg4CTkJBwD1CPcIOAkHAAsJOQk6CQcACwn1CDkJBwDzCDoJOwkHAPMICwk6CQcAPAnzCDsJBwA8CfEI8wgHAN8IPQk+CQcA3wjeCD0JBwAxCT4JPwkHADEJ3wg+CQcAMAlACRMJBwAwCUEJQAkHABEJQAlCCQcAEQkTCUAJBwAbCUIJQwkHABsJEQlCCQcAFQlDCUQJBwAVCRsJQwkHABYJRAlFCQcAFgkVCUQJBwAZCUUJRgkHABkJFglFCQcANAlHCTUJBwA0CUgJRwkHADUJSQk3CQcANQlHCUkJBwA3CUoJNgkHADcJSQlKCQcANglLCTgJBwA2CUoJSwkHADgJTAk5CQcAOAlLCUwJBwA5CU0JOgkHADkJTAlNCQcAOglOCTsJBwA6CU0JTgkHADwJTglPCQcAPAk7CU4JBwA9CVAJPgkHAD0JUQlQCQcAPwlQCVIHBwA/CT4JUAkHAEEJUglACQcAQQlRB1IJBwBACVMJQgkHAEAJUglTCQcAQglUCUMJBwBCCVMJVAkHAEMJVQlECQcAQwlUCVUJBwBECVYJRQkHAEQJVQlWCQcARQlXCUYJBwBFCVYJVwkHADQJDQlICQcANAkMCQ0JBwBYCVkJWgkHAFgJWwlZCQcAAglcCQQJBwACCV0JXAkHAP4IXQkCCQcA/gheCV0JBwAACV4J/ggHAAAJXwleCQcADglfCQAJBwAOCWAJXwkHADIJYAkOCQcAMglhCWAJBwD8CGEJMgkHAPwIYglhCQcA+ghiCfwIBwD6CGMJYgkHAPgIYwn6CAcA+AhkCWMJBwD0CGQJ+AgHAPQIZQlkCQcA9ghlCfQIBwD2CGYJZQkHAAoJZgn2CAcACglnCWYJBwDyCGcJCgkHAPIIaAlnCQcA8AhoCfIIBwDwCGkJaAkHAOwIaQnwCAcA7AhqCWkJBwDuCGoJ7AgHAO4IawlqCQcA6AhsCQkJBwDoCG0JbAkHAOoIbQnoCAcA6ghuCW0JBwBdCW8JXAkHAF0JcAlvCQcAXglwCV0JBwBeCXEJcAkHAF8JcQleCQcAXwlyCXEJBwBgCXIJXwkHAGAJcwlyCQcAYQlzCWAJBwBhCXQJcwkHAGIJdAlhCQcAYgl1CXQJBwBjCXUJYgkHAGMJdgl1CQcAZAl2CWMJBwBkCXcJdgkHAGUJdwlkCQcAZQl4CXcJBwBmCXgJZQkHAGYJeQl4CQcAZwl5CWYJBwBnCXoJeQkHAGgJeglnCQcAaAl7CXoJBwBpCXsJaAkHAGkJfAl7CQcAagl8CWkJBwBqCX0JfAkHAGsJfQlqCQcAawl+CX0JBwBtCX8JbAkHAG0JgAl/CQcAbgmACW0JBwBuCYEJgAkHANYIggnZCAcA1giDCYIJBwCCCekI2QgHAIIJhAnpCAcA6QiFCeoIBwDpCIQJhQkHAIUJbgnqCAcAhQmGCW4JBwCGCYEJbgkHAIYJhwmBCQcAgwmICYIJBwCDCYkJiAkHAIgJhAmCCQcAiAmKCYQJBwCECYsJhQkHAIQJigmLCQcAiwmGCYUJBwCLCYwJhgkHAIwJhwmGCQcAjAmNCYcJBwAGCY4JjwkHAAYJBwmOCQcABwmQCY4JBwAHCQgJkAkHAAgJkQmQCQcACAkJCZEJBwCSCQkJbAkHAJIJkQkJCQcAkwlsCX8JBwCTCZIJbAkHANoILAmUCQcA2gguCSwJBwAsCSMJlAkHACwJIAkjCQcAlQkiCSoJBwCVCZYJIgkHAB4JlgmVCQcAHgkdCZYJBwCWCSMJIgkHAJYJlwkjCQcAHQmXCZYJBwAdCZgJlwkHAJcJlAkjCQcAlwmZCZQJBwCYCZkJlwkHAJgJmgmZCQcAmQnaCJQJBwCZCZsJ2ggHAJoJmwmZCQcAmgmPCZsJBwCbCd0I2ggHAJsJnAndCAcAjwmcCZsJBwCPCY4JnAkHAJwJ7QjdCAcAnAmdCe0IBwCOCZ0JnAkHAI4JkAmdCQcAnQnuCO0IBwCdCZ4J7ggHAJAJngmdCQcAkAmRCZ4JBwCeCWsJ7ggHAJ4JnwlrCQcAkQmfCZ4JBwCRCZIJnwkHAJ8JfglrCQcAnwmgCX4JBwCSCaAJnwkHAJIJkwmgCQcAoQkqCSYJBwChCZUJKgkHAKIJlQmhCQcAogkeCZUJBwCjCSYJJQkHAKMJoQkmCQcApAmhCaMJBwCkCaIJoQkHAKUJJQkpCQcApQmjCSUJBwCmCaMJpQkHAKYJpAmjCQcApwmoCakJBwCnCaoJqAkHAKsJqgmnCQcAqwmsCaoJBwCqCa0JqAkHAKoJrgmtCQcArAmuCaoJBwCsCa8JrgkHAK4JsAmtCQcArgmxCbAJBwCvCbEJrgkHAK8JsgmxCQcAsQmzCbAJBwCxCbQJswkHALIJtAmxCQcAsgm1CbQJBwCyCbYJtQkHALIJtwm2CQcArwm3CbIJBwCvCbgJtwkHAKsJuQmsCQcAqwm6CbkJBwC5Ca8JrAkHALkJuAmvCQcAuwkcCbwJBwC7CR8JHAkHAJgJHwm7CQcAmAkdCR8JBwCYCb0JvgkHAJgJuwm9CQcAvgm5CboJBwC+Cb0JuQkHAL0JuAm5CQcAvQm/CbgJBwC7Cb8JvQkHALsJvAm/CQcAwAnYCAYJBwDACcEJ2AgHAL4JwQnACQcAvgm6CcEJBwDBCdYI2AgHAMEJwgnWCAcAugnCCcEJBwC6CasJwgkHAMIJgwnWCAcAwgnDCYMJBwCrCcMJwgkHAKsJpwnDCQcAwwmJCYMJBwDDCcQJiQkHAKcJxAnDCQcApwmpCcQJBwAGCZoJwAkHAAYJjwmaCQcAwAmYCb4JBwDACZoJmAkHACkJxQmlCQcAKQnGCcUJBwClCccJpgkHAKUJxQnHCQcAKAnGCSkJBwAoCcgJxgkHABgJyAkoCQcAGAkxB8gJBwAYCTIHMQcHABgJGQkyBwcAyQnKCcsJBwDJCcwJygkHAM0JzgnPCQcAzQnQCc4JBwDLCc8JzgkHAMsJygnPCQcA0QnMCckJBwDRCdIJzAkHANMJ1AnVCQcA0wnWCdQJBwDQCdYJ0wkHANAJzQnWCQcA1AnXCdUJBwDUCdgJ1wkHANkJ2gnbCQcA2QncCdoJBwDbCd0J3gkHANsJ2gndCQcA3wncCdkJBwDfCeAJ3AkHANwJ4QnaCQcA3AniCeEJBwDaCeMJ3QkHANoJ4QnjCQcA4AniCdwJBwDgCeQJ4gkHAOUJ2QnbCQcA5QnmCdkJBwC0CeYJ5QkHALQJ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xwnFCQcAWQpaCscJBwDOCVoKWQoHAM4J0AlaCgcAWgo8CscJBwBaClsKPAoHANAJWwpaCgcA0AnTCVsKBwBbClEKPAoHAFsKXApRCgcA0wlcClsKBwDTCdUJXAoHAFwKTwpRCgcAXApdCk8KBwDVCV0KXAoHANUJ1wldCgcAXQpSCk8KBwBdCl4KUgoHANcJXgpdCgcA1wlTCl4KBwBeClYKUgoHAF4KXwpWCgcAUwpfCl4KBwBTClcKXwoHAGAKxQnGCQcAYApZCsUJBwDLCVkKYAoHAMsJzglZCgcAYQrGCcgJBwBhCmAKxgkHAMkJYAphCgcAyQnLCWAKBwBiCsgJMQcHAGIKYQrICQcA0QlhCmIKBwDRCckJYQoHAGMKMQczBwcAYwpiCjEHBwAACmIKYwoHAAAK0QliCgcAZAozB2UKBwBkCmMKMwcHACMKYwpkCgcAIwoACmMKBwCtCWYKqAkHAK0JZwpmCgcAqAloCqkJBwCoCWYKaAoHALAJZwqtCQcAsAlpCmcKBwCpCWoKxAkHAKkJaApqCgcAxAlrCokJBwDECWoKawoHAIkJbAqICQcAiQlrCmwKBwCICW0KigkHAIgJbAptCgcAZwpuCmYKBwBnCm8KbgoHAGYKcApoCgcAZgpuCnAKBwBpCm8KZwoHAGkKcQpvCgcAaApyCmoKBwBoCnAKcgoHAGoKcwprCgcAagpyCnMKBwBrCnQKbAoHAGsKcwp0CgcAbAp1Cm0KBwBsCnQKdQoHAO4JsAmzCQcA7glpCrAJBwDwCWkK7gkHAPAJcQppCgcAiwltCowJBwCLCYoJbQoHAI0JbQp1CgcAjQmMCW0KBwBuBnYKdwoHAG4GkAZ2CgcAeApuBncKBwB4Cm8GbgYHAJAGeQp2CgcAkAb3BnkKBwD3BnoKeQoHAPcG+AZ6CgcAewqEBnwKBwB7CoUGhAYHAPoGewp9CgcA+gaFBnsKBwB8CnQGfgoHAHwKhAZ0BgcAfgp3Bn8KBwB+CnQGdwYHAPgGfQp6CgcA+Ab6Bn0KBwB/Cm8GeAoHAH8KdwZvBgcAdwqACoEKBwB3CnYKgAoHAIIKdwqBCgcAggp4CncKBwB2CoMKgAoHAHYKeQqDCgcAeQqECoMKBwB5CnoKhAoHAIUKfAqGCgcAhQp7CnwKBwB9CoUKhwoHAH0KewqFCgcAhgp+CogK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BwD3Cv4K9goHAPcK/wr+CgcA+Ar/CvcKBwD4CgAL/woHAPwKAQv9CgcA/AoCCwELBwD6CgML+QoHAPoKBAsDCwcA+QoFC/sKBwD5CgMLBQsHAPsKAgv8CgcA+woFCwILBwD/CgYL/goHAP8KBwsGCwcAAAsHC/8KBwAACwgLBwsHAAILCQsBCwcAAgsKCwkLBwAFCwoLAgsHAAULCwsKCwcABAsMCwMLBwAECw0LDAsHAAMLCwsFCwcAAwsMCwsLBwANCw4LDAsHAA0LDwsOCwcADAsQCwsLBwAMCw4LEAsHAAsLEQsKCwcACwsQCxELBwAKCxILCQsHAAoLEQsSCwcACAsTCwcLBwAICxQLEwsHAAcLFQsGCwcABwsTCxULBwAWCxcLGAsHABYLGQsXCwcAFwsOCw8LBwAXCxkLDgsHABoLGQsWCwcAGgsbCxkLBwAZCxALDgsHABkLGwsQCwcAGwscCx0LBwAbCxoLHAsHABALHQsRCwcAEAsbCx0LBwAdCx4LHwsHAB0LHAseCwcAEQsfCxILBwARCx0LHwsHACALIQsiCwcAIAsjCyELBwAiCxMLFAsHACILIQsTCwcAIwskCyELBwAjCyULJAsHACELFQsTCwcAIQskCxULBwAjCyYLJQsHACMLJwsmCwcAIAsnCyMLBwAgCygLJwsHABwLKQseCwcAHAsqCykLBwAaCyoLHAsHABoLKwsqCwcAFgsrCxoLBwAWCywLKwsHABgLLAsWCwcAGAstCywLBwAnCy4LJgsHACcLLwsuCwcAKAsvCycLBwAoCzALLwsHACoLMQspCwcAKgsyCzELBwArCzILKgsHACsLMwsyCwcALAszCysLBwAsCzQLMwsHAC0LNAssCwcALQs1CzQLBwAvCzYLLgsHAC8LNws2CwcAMAs3Cy8LBwAwCzgLNwsHADILOQsxCwcAMgs6CzkLBwAzCzoLMgsHADMLOws6CwcANAs7CzMLBwA0CzwLOwsHADULPAs0CwcANQs9CzwLBwA+C9sK3QoHAD4LPwvbCgcA1Ao/Cz4LBwDUCtMKPwsHAD8L4QrbCgcAPwtAC+EKBwDTCkALPwsHANMK0gpACwcAQAvfCuEKBwBAC0EL3woHANIKQQtACwcA0grQCkELBwBBC+MK3woHAEELQgvjCgcA0ApCC0ELBwDQCtEKQgsHAEIL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nAubCwcApgvFAMcABwCmC8cAWwEHAKcLpgtbAQcApwtbAVkBBwCoC6cLWQEHAKgLWQFXAQcAqQuoC1cBBwCpC1cBVQEHAKoLqQtVAQcAqgtVAVEBBwCrC8MAxQAHAKsLxQCmCwcArAurC6YLBwCsC6YLpwsHAK0LrAunCwcArQunC6gLBwCuC60LqAsHAK4LqAupCwcArwuuC6kLBwCvC6kLqgsHALALwgDDAAcAsAvDAKsLBwCxC7ALqwsHALELqwusCwcAsguxC6wLBwCyC6wLrQsHALMLsgutCwcAswutC64LBwC0C7MLrgsHALQLrguvCwcAkgCRAMIABwCSAMIAsAsHAJUAkgCwCwcAlQCwC7ELBwCXAJUAsQsHAJcAsQuyCwcAmQCXALILBwCZALILswsHAJsAmQCzCwcAmwCzC7QLBwAMAQoBtQsHAAwBtQtnAQcAZwG1C7YLBwBnAbYLZQEHAGUBtgu3CwcAZQG3C2MBBwBjAbcLuAsHAGMBuAtTAQcAUwG4C6oLBwBTAaoLUQEHAAoBCAG5CwcACgG5C7ULBwC1C7kLugsHALULugu2CwcAtgu6C7sLBwC2C7sLtwsHALcLuwu8CwcAtwu8C7gLBwC4C7wLrwsHALgLrwuqCwcACAEHAb0LBwAIAb0LuQsHALkLvQu+CwcAuQu+C7oLBwC6C74LvwsHALoLvwu7CwcAuwu/C8ALBwC7C8ALvAsHALwLwAu0CwcAvAu0C68LBwAHAdoA3AAHAAcB3AC9CwcAvQvcAN8ABwC9C98AvgsHAL4L3wDhAAcAvgvhAL8LBwC/C+EA4wAHAL8L4wDACwcAwAvjAJsABwDAC5sAtAsHAMELwgvDCwcAwQvDC8QLBwDFC8YLwgsHAMULwgvBCwcAxwvIC8YLBwDHC8YLxQsHAMQLwwvJCwcAxAvJC8oLBwDKC8kLywsHAMoLywvMCwcAzAvLC80LBwDMC80LzgsHAM8L0AvRCwcAzwvRC9ILBwDQC8kLwwsHANALwwvRCwcA0wvUC9ALBwDTC9ALzwsHANQLywvJCwcA1AvJC9ALBwDVC9YL1AsHANUL1AvTCwcA1gvNC8sLBwDWC8sL1AsHANIL0QvXCwcA0gvXC9gLBwDRC8MLwgsHANELwgvXCwcA2AvXC9kLBwDYC9kL2gsHANcLwgvGCwcA1wvGC9kLBwDaC9kL2wsHANoL2wvcCwcA2QvGC8gLBwDZC8gL2wsHAN0L3gvfCwcA3QvfC+ALBwDeC+EL4gsHAN4L4gvfCwcA4QvjC+QLBwDhC+QL4gsHAOUL3QvgCwcA5QvgC+YLBwDnC+UL5gsHAOcL5gvoCwcA6QvnC+gLBwDpC+gL6gsHAOsL7AvtCwcA6wvtC+4LBwDdC+UL7AsHAN0L7AvrCwcA7AvvC/ALBwDsC/AL7QsHAOUL5wvvCwcA5QvvC+wLBwDvC/EL8gsHAO8L8gvwCwcA5wvpC/ELBwDnC/EL7wsHAPML6wvuCwcA8wvuC/QLBwDeC90L6wsHAN4L6wvzCwcA9QvzC/QLBwD1C/QL9gsHAOEL3gvzCwcA4QvzC/ULBwD3C/UL9gsHAPcL9gv4CwcA4wvhC/ULBwDjC/UL9wsHAPkL+gv7CwcA+Qv8C/oLBwD9C/4L/wsHAP0LAAz+CwcA/wv8C/kLBwD/C/4L/AsHAAEMAAz9CwcAAQwCDAAMBwABDAMMAgwHAAEMBAwDDAcABAwFDAMMBwAEDAYMBQwHAAYMBwwFDAcABgwIDAcMBwAIDAkMBwwHAAgMCgwJDAcACgwLDAkMBwAKDAwMCwwHAA0MCwwMDAcADQwODAsMBwATBQ8MEAwHABMFEgUPDAcAEgURDA8MBwASBRUFEQwHABkFEgwTDAcAGQUYBRIMBwAVBRMMEQwHABUFGQUTDAcAGAUUDBIMBwAYBRsFFAwHAB8FFQwWDAcAHwUeBRUMBwAXDB8FFgwHABcMIQUfBQcAGAwhBRcMBwAYDCMFIQUHABkMIwUYDAcAGQwlBSMFBwAaDCUFGQwHABoMJwUlBQcAGwUbDBQMBwAbBSkFGwwHABwMJwUaDAcAHAwrBScFBwApBR0MGwwHACkFLQUdDAcAMAUcDB4MBwAwBSsFHAwHAB0MMgUfDAcAHQwtBTIFBwA0BR4MIAwHADQFMAUeDAcAHww2BSEMBwAfDDIFNgUHACEMOAUiDAcAIQw2BTgFBwA6BSAMIwwHADoFNAUgDAcAJAw9BSUMBwAkDDsFPQUHACIMOwUkDAcAIgw4BTsFBwBABSMMJgwHAEAFOgUjDAcAJwwoDCkMBwAnDCoMKAwHACoMKwwoDAcAKgwsDCsMBwAtDC4MLwwHAC0MMAwuDAcALAwvDCsMBwAsDC0MLwwHADAMMQwuDAcAMAwyDDEMBwAzDDQMNQwHADMMNgw0DAcANwwzDDUMBwA3DDgMMwwHADkMOAw3DAcAOQw6DDgMBwA7DDoMOQwHADsMPAw6DAcAPQw8DDsMBwA9DD4MPAwHADIMPwwxDAcAMgxADD8MBwBBDD4MPQwHAEEMQgw+DAcAQAxDDD8MBwBADEQMQwwHAEUMQQxGDAcARQxCDEEMBwBDDEcMSAwHAEMMRAxHDAcASQxGDEoMBwBJDEUMRgwHAEgMSwxMDAcASAxHDEsMBwBMDE0MTgwHAEwMSwxNDAcATwxKDFAMBwBPDEkMSgwHAFEMUgxTDAcAUQxUDFIMBwBODFQMUQwHAE4MTQxUDAcAVQxQDFYMBwBVDE8MUAwHACkM+wv6CwcAKQwoDPsLBwAoDPkL+wsHACgMKwz5CwcALwz9C/8LBwAvDC4M/QsHACsM/wv5CwcAKwwvDP8LBwAuDAEM/QsHAC4MMQwBDAcANQxXDFgMBwA1DDQMVwwHAFkMNQxYDAcAWQw3DDUMBwBaDDcMWQwHAFoMOQw3DAcAWww5DFoMBwBbDDsMOQwHAFwMOwxbDAcAXAw9DDsMBwAxDAQMAQwHADEMPwwEDAcAXQw9DFwMBwBdDEEMPQwHAD8MBgwEDAcAPwxDDAYMBwBGDF0MXgwHAEYMQQxdDAcABgxIDAgMBwAGDEMMSAwHAEoMXgxfDAcASgxGDF4MBwAIDEwMCgwHAAgMSAxMDAcACgxODAwMBwAKDEwMTgwHAFAMXwxgDAcAUAxKDF8MBwANDFMMDgwHAA0MUQxTDAcADAxRDA0MBwAMDE4MUQwHAFYMYAxhDAcAVgxQDGAMBwAPDCcMEAwHAA8MKgwnDAcAEQwqDA8MBwARDCwMKgwHABIMLQwTDAcAEgwwDC0MBwATDCwMEQwHABMMLQwsDAcAFAwwDBIMBwAUDDIMMAwHABUMMwwWDAcAFQw2DDMMBwAzDBcMFgwHADMMOAwXDAcAOAwYDBcMBwA4DDoMGAwHADoMGQwYDAcAOgw8DBkMBwA8DBoMGQwHADwMPgwaDAcAGwwyDBQMBwAbDEAMMgwHAD4MHAwaDAcAPgxCDBwMBwAdDEAMGwwHAB0MRAxADAcAHAxFDB4MBwAcDEIMRQwHAEcMHQwfDAcARwxEDB0MBwAeDEkMIAwHAB4MRQxJDAcASwwfDCEMBwBLDEcMHwwHAE0MIQwiDAcATQxLDCEMBwAgDE8MIwwHACAMSQxPDAcAUgwkDCUMBwBSDFQMJAwHAFQMIgwkDAcAVAxNDCIMBwAjDFUMJgwHACMMTwxVDAcAJgxdBUAFBwAmDGIMXQUHAGIMPQVdBQcAYgwlDD0FBwBVDGIMJgwHAFUMYwxiDAcAYwwlDGIMBwBjDFIMJQwHAFYMYwxVDAcAVgxkDGMMBwBkDFIMYwwHAGQMUwxSDAcAYQxkDFYMBwBhDGUMZAwHAGUMUwxkDAcAZQwODFMMBwBgDGUMYQwHAGAMZgxlDAcAZgwODGUMBwBmDAsMDgwHAF8MZgxgDAcAXwxnDGYMBwBnDAsMZgwHAGcMCQwLDAcAXgxnDF8MBwBeDGgMZwwHAGgMCQxnDAcAaAwHDAkMBwBdDGgMXgwHAF0MaQxoDAcAaQwHDGgMBwBpDAUMBwwHAFwMaQxdDAcAXAxqDGkMBwBqDAUMaQwHAGoMAwwFDAcAWwxqDFwMBwBbDGsMagwHAGsMAwxqDAcAawwCDAMMBwBaDGsMWwwHAFoMbAxrDAcAbAwCDGsMBwBsDAAMAgwHAFkMbAxaDAcAWQxtDGwMBwBtDAAMbAwHAG0M/gsADAcAWAxtDFkMBwBYDG4MbQwHAG4M/gttDAcAbgz8C/4LBwBXDG4MWAwHAFcMbwxuDAcAbwz8C24MBwBvDPoL/AsHADQMbwxXDAcANAxwDG8MBwBwDPoLbwwHAHAMKQz6CwcANgxwDDQMBwA2DHEMcAwHAHEMKQxwDAcAcQwnDCkMBwAVDHEMNgwHABUMcgxxDAcAcgwnDHEMBwByDBAMJwwHAB4FcgwVDAcAHgVeBXIMBwBeBRAMcgwHAF4FEwUQDAcAcwx0DHUMBwBzDHYMdAwHAHcMeAx5DAcAdwx6DHgMBwB2DHkMdAwHAHYMdwx5DAcAegx7DHgMBwB6DHwMewwHAH0Mewx8DAcAfQx+DHsMBwB/DH4MfQwHAH8MgAx+DAcAgQyADH8MBwCBDIIMgAwHAIMMggyBDAcAgwyEDIIMBwCFDIQMgwwHAIUMhgyEDAcAhQyHDIYMBwCFDIgMhwwHAIkMywWKDAcAiQzJBcsFBwCLDMkFiQwHAIsMzQXJBQcAjAzRBY0MBwCMDM8F0QUHAI0MzQWLDAcAjQzRBc0FBwCODM8FjAwHAI4M0wXPBQcAjwzXBZAMBwCPDNUF1wUHANcFkQyQDAcA1wXZBZEMBwDZBZIMkQwHANkF2wWSDAcA2wWTDJIMBwDbBd0FkwwHAN0FlAyTDAcA3QXfBZQMBwCVDNMFjgwHAJUM4QXTBQcA3wWWDJQMBwDfBeMFlgwHAJcM4QWVDAcAlwzlBeEFBwCWDOgFmAwHAJYM4wXoBQcA6gWXDJkMBwDqBeUFlwwHAJgM7AWaDAcAmAzoBewFBwDuBZkMmwwHAO4F6gWZDAcA8AWbDJwMBwDwBe4FmwwHAJoM8gWdDAcAmgzsBfIFBwD1BZ4MnwwHAPUF9AWeDAcA9AWcDJ4MBwD0BfAFnAwHAJ0M+AWgDAcAnQzyBfgFBwChDKIMowwHAKEMpAyiDAcApQykDKEMBwClDKYMpAwHAKcMqAypDAcApwyqDKgMBwCpDKYMpQwHAKkMqAymDAcAqwyqDKcMBwCrDKwMqgwHAK0MrgyvDAcArQywDK4MBwCuDLEMrwwHAK4MsgyxDAcAsgyzDLEMBwCyDLQMswwHALQMtQyzDAcAtAy2DLUMBwC2DLcMtQwHALYMuAy3DAcAuQysDKsMBwC5DLoMrAwHALgMuwy3DAcAuAy8DLsMBwC9DLoMuQwHAL0Mvgy6DAcAuwy/DMAMBwC7DLwMvwwHAMEMvQzCDAcAwQy+DL0MBwDADMMMxAwHAMAMvwzDDAcAxQzCDMYMBwDFDMEMwgwHAMcMxgzIDAcAxwzFDMYMBwDEDMkMygwHAMQMwwzJDAcAywzMDM0MBwDLDM4MzAwHAM4MyAzMDAcAzgzHDMgMBwDKDM8M0AwHAMoMyQzPDAcAdQyjDHMMBwB1DKEMowwHAHQMoQx1DAcAdAylDKEMBwB4DKkMeQwHAHgMpwypDAcAeQylDHQMBwB5DKkMpQwHAHsMpwx4DAcAewyrDKcMBwDRDK8M0gwHANEMrQyvDAcArwzTDNIMBwCvDLEM0wwHALEM1AzTDAcAsQyzDNQMBwCzDNUM1AwHALMMtQzVDAcAtQzWDNUMBwC1DLcM1gwHAH4Mqwx7DAcAfgy5DKsMBwC3DNcM1gwHALcMuwzXDAcAgAy5DH4MBwCADL0MuQwHANcMwAzYDAcA1wy7DMAMBwDCDIAMggwHAMIMvQyADAcA2AzEDNkMBwDYDMAMxAwHAMYMggyEDAcAxgzCDIIMBwDIDIQMhgwHAMgMxgyEDAcA2QzKDNoMBwDZDMQMygwHAM0MhwyIDAcAzQzMDIcMBwDMDIYMhwwHAMwMyAyGDAcA2gzQDNsMBwDaDMoM0AwHAKIMiQyKDAcAogykDIkMBwCkDIsMiQwHAKQMpgyLDAcAqAyMDI0MBwCoDKoMjAwHAKYMjQyLDAcApgyoDI0MBwCqDI4MjAwHAKoMrAyODAcArgyPDJAMBwCuDLAMjwwHAJEMrgyQDAcAkQyyDK4MBwCSDLIMkQwHAJIMtAyyDAcAkwy0DJIMBwCTDLYMtAwHAJQMtgyTDAcAlAy4DLYMBwCsDJUMjgwHAKwMugyVDAcAlgy4DJQMBwCWDLwMuAwHALoMlwyVDAcAugy+DJcMBwC/DJYMmAwHAL8MvAyWDAcAlwzBDJkMBwCXDL4MwQwHAMMMmAyaDAcAwwy/DJgMBwCZDMUMmwwHAJkMwQzFDAcAmwzHDJwMBwCbDMUMxwwHAMkMmgydDAcAyQzDDJoMBwCeDMsMnwwHAJ4MzgzLDAcAnAzODJ4MBwCcDMcMzgwHAM8MnQygDAcAzwzJDJ0MBwAVBqAM+AUHABUG3AygDAcA9QXcDBUGBwD1BZ8M3AwHANwMzwygDAcA3AzdDM8MBwCfDN0M3AwHAJ8MywzdDAcA3QzQDM8MBwDdDN4M0AwHAMsM3gzdDAcAywzNDN4MBwDeDNsM0AwHAN4M3wzbDAcAzQzfDN4MBwDNDIgM3wwHAN8M2gzbDAcA3wzgDNoMBwCIDOAM3wwHAIgMhQzgDAcA4AzZDNoMBwDgDOEM2QwHAIUM4QzgDAcAhQyDDOEMBwDhDNgM2QwHAOEM4gzYDAcAgwziDOEMBwCDDIEM4gwHAOIM1wzYDAcA4gzjDNcMBwCBDOMM4gwHAIEMfwzjDAcA4wzWDNcMBwDjDOQM1gwHAH8M5AzjDAcAfwx9DOQMBwDkDNUM1gwHAOQM5QzVDAcAfQzlDOQMBwB9DHwM5QwHAOUM1AzVDAcA5QzmDNQMBwB8DOYM5QwHAHwMegzmDAcA5gzTDNQMBwDmDOcM0wwHAHoM5wzmDAcAegx3DOcMBwDnDNIM0wwHAOcM6AzSDAcAdwzoDOcMBwB3DHYM6AwHAOgM0QzSDAcA6AzpDNEMBwB2DOkM6AwHAHYMcwzpDAcA6QytDNEMBwDpDOoMrQwHAHMM6gzpDAcAcwyjDOoMBwDqDLAMrQwHAOoM6wywDAcAowzrDOoMBwCjDKIM6wwHAOsMjwywDAcA6wzsDI8MBwCiDOwM6wwHAKIMigzsDAcA7AzVBY8MBwDsDBYG1QUHAIoMFgbsDAcAigzLBRYGBwDtDO4M7wwHAO0M8AzuDAcA8QzvDPIMBwDxDO0M7wwHAPMM7gz0DAcA8wzvDO4MBwD1DO8M8wwHAPUM8gzvDAcA9gz0DPcMBwD2DPMM9AwHAPgM8wz2DAcA+Az1DPMMBwD5DPoM+wwHAPkM/Az6DAcA/Qz5DP4MBwD9DPwM+QwHAP8MAA0BDQcA/wwCDQANBwABDQMNBA0HAAENAA0DDQcABQ0GDQcNBwAFDQgNBg0HAAkNCg0LDQcACQ0MDQoNBwACDQ0NAA0HAAINDg0NDQcAAA0PDQMNBwAADQ0NDw0HAAgNEA0GDQcACA0RDRANBwAMDRINCg0HAAwNEw0SDQcAFA0VDRYNBwAUDRcNFQ0HABYNGA0ZDQcAFg0VDRgNBwAaDRsNHA0HABoNHQ0bDQcAGw0eDR8NBwAbDR0NHg0HACAN+gz8DAcAIA0hDfoMBwD9DCAN/AwHAP0MIg0gDQcAIw0kDSUNBwAjDSYNJA0HACcNJQ0kDQcAJw0oDSUNBwApDQQNAw0HACkNKg0EDQcAKw0DDQ8NBwArDSkNAw0HACcNLA0oDQcAJw0tDSwNBwAuDS8NMA0HAC4NMQ0vDQcAMQ0tDS8NBwAxDSwNLQ0HADINMw00DQcAMg01DTMNBwA1DR8NMw0HADUNGw0fDQcANg01DTINBwA2DTcNNQ0HADcNGw01DQcANw0cDRsNBwA4DSINOQ0HADgNIA0iDQcAIA06DSENBwAgDTgNOg0HAAkNOw0MDQcACQ08DTsNBwAMDT0NEw0HAAwNOw09DQcAPg0/DUANBwA+DUENPw0HAEEN8Aw/DQcAQQ3uDPAMBwBCDUENPg0HAEINQw1BDQcAQw3uDEENBwBDDfQM7gwHAEQNQw1CDQcARA1FDUMNBwBFDfQMQw0HAEUN9wz0DAcARg36DCENBwBGDfsM+gwHADoNRg0hDQcAOg1HDUYNBwBIDQsNCg0HAEgNSQ0LDQcAEg1IDQoNBwASDUoNSA0HAEsNCQ1MDQcASw08DQkNBwBMDQsNSQ0HAEwNCQ0LDQcAIw1NDU4NBwAjDSUNTQ0HACgNTQ0lDQcAKA1PDU0NBwBPDSwNUA0HAE8NKA0sDQcAUQ0xDS4NBwBRDVINMQ0HAFINLA0xDQcAUg1QDSwNBwD5DFMNVA0HAPkM+wxTDQcA7QxTDfAMBwDtDFQNUw0HAFUN+QxUDQcAVQ3+DPkMBwDxDFQN7QwHAPEMVQ1UDQcARw1WDUYNBwBHDVcNVg0HAD8NVw1ADQcAPw1WDVcNBwDwDFYNPw0HAPAMUw1WDQcA+wxWDVMNBwD7DEYNVg0HAFENWA1SDQcAUQ1ZDVgNBwBZDTMNWA0HAFkNNA0zDQcAWg1bDVwNBwBaDV0NWw0HAF0NGA1bDQcAXQ0ZDRgNBwBSDV4NUA0HAFINWA1eDQcAWA0fDV4NBwBYDTMNHw0HAFANXw1PDQcAUA1eDV8NBwBeDR4NXw0HAF4NHw0eDQcATw1gDU0NBwBPDV8NYA0HAF8NHQ1gDQcAXw0eDR0NBwBNDWENTg0HAE0NYA1hDQcAYA0aDWENBwBgDR0NGg0HAPYMYg1jDQcA9gz3DGINBwBIDWINSQ0HAEgNYw1iDQcA+AxjDWQNBwD4DPYMYw0HAGQNSA1KDQcAZA1jDUgNBwBlDUsNTA0HAGUNZg1LDQcAZg1FDUQNBwBmDWUNRQ0HAGINRQ1lDQcAYg33DEUNBwBiDUwNSQ0HAGINZQ1MDQcAJg1nDSQNBwAmDWgNZw0HACcNZw1pDQcAJw0kDWcNBwBqDS8Naw0HAGoNMA0vDQcAbA0vDS0NBwBsDWsNLw0HAGkNLQ0nDQcAaQ1sDS0NBwAqDW0NBA0HACoNbg1tDQcAbg1rDW0NBwBuDWoNaw0HAAcNbw0FDQcABw1wDW8NBwBwDXENbw0HAHANcg1xDQcABA1zDQENBwAEDW0Ncw0HAG0NbA1zDQcAbQ1rDWwNBwABDXQN/wwHAAENcw10DQcAcw1pDXQNBwBzDWwNaQ0HAP8MdQ0CDQcA/wx0DXUNBwB0DWcNdQ0HAHQNaQ1nDQcAAg12DQ4NBwACDXUNdg0HAHUNaA12DQcAdQ1nDWgNBwB3DWYNRA0HAHcNeA1mDQcAeQ1EDUINBwB5DXcNRA0HAHoNcQ1yDQcAeg17DXENBwB8DTANag0HAHwNfQ0wDQcAfQ0uDTANBwB9DX4NLg0HAH4NUQ0uDQcAfg1/DVENBwCADVoNXA0HAIAN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BwDlD+YPXBAHAOcPXRBeEAcA5w/lD10QBwDoD14QXxAHAOgP5w9eEAcA6Q9fEGAQBwDpD+gPXxAHAGEQWhBZEAcAYRBiEFoQBwBSEGIQYRAHAFIQURBiEAcAYxBcEFsQBwBjEGQQXBAHAFQQZBBjEAcAVBBTEGQQBwBkEF0QXBAHAGQQZRBdEAcAUxBlEGQQBwBTEFUQZRAHAGUQXhBdEAcAZRBmEF4QBwBVEGYQZRAHAFUQVhBmEAcAZhBfEF4QBwBmEGcQXxAHAFYQZxBmEAcAVhBXEGcQBwBnEGAQXxAHAGcQaBBgEAcAVxBoEGcQBwBXEFgQaBAHAGkQahBrEAcAaRBsEGoQBwBrEG0QbhAHAGsQahBtEAcAbxBwEHEQBwBvEHIQcBAHAHMQchBvEAcAcxB0EHIQBwBsEHUQdhAHAGwQaRB1EAcAdhB3EHgQBwB2EHUQdxAHAHkQcRBwEAcAeRB6EHEQBwB7EHoQeRAHAHsQfBB6EAcAeBB8EHsQBwB4EHcQfBAHAH0QfhB/EAcAfRCAEH4QBwCAEP8PABAHAIAQfRD/DwcAgBCBEH4QBwCAEIIQgRAHAIIQABABEAcAghCAEAAQBwA5EIMQOhAHADkQhBCDEAcAhBCFEIMQBwCEEIYQhRAHAD0QhBA5EAcAPRCHEIQQBwCEEIgQhhAHAIQQhxCIEAcAhxCJEIgQBwCHEIoQiRAHAIcQTxCKEAcAhxA9EE8QBwCKEIsQiRAHAIoQjBCLEAcAihBUEIwQBwCKEE8QVBAHAI0QfxCOEAcAjRB9EH8QBwCNEP8PfRAHAI0QWxD/DwcAjxBbEI0QBwCPEGMQWxAHAI8QjhCQEAcAjxCNEI4QBwCMEGMQjxAHAIwQVBBjEAcAjBCQEIsQBwCMEI8QkBAHAJEQkhCTEAcAkRCUEJIQBwCUEPMP9Q8HAJQQkRDzDwcAlBCVEJIQBwCUEJYQlRAHAJYQ9Q/4DwcAlhCUEPUPBwCXEJgQmRAHAJcQmhCYEAcAmhD7D/oPBwCaEJcQ+w8HAJsQmRCcEAcAmxCXEJkQBwCXEP4P+w8HAJcQmxD+DwcAkxCdEJEQBwCTEJ4QnRAHAPMPnRBMEAcA8w+REJ0QBwCeEJ8QnRAHAJ4QoBCfEAcATBCfEFEQBwBMEJ0QnxAHAKEQmhCiEAcAoRCYEJoQBwBaEJoQ+g8HAFoQohCaEAcAoxChEKIQBwCjEKQQoRAHAGIQohBaEAcAYhCjEKIQBwCfEKQQoxAHAJ8QoBCkEAcAURCjEGIQBwBREJ8QoxAHAIYQaRBrEAcAhhCIEGkQBwBsEJIQahAHAGwQkxCSEAcAhRBrEG4QBwCFEIYQaxAHAGoQlRBtEAcAahCSEJUQBwBtEIUQbhAHAG0QlRCFEAcAcRB+EG8QBwBxEH8QfhAHAJkQcBByEAcAmRCYEHAQBwBvEIEQcxAHAG8QfhCBEAcAgRB0EHMQBwCBEJwQdBAHAJwQchB0EAcAnBCZEHIQBwB2EJMQbBAHAHYQnhCTEAcAiBB1EGkQBwCIEIkQdRAHAHgQnhB2EAcAeBCgEJ4QBwCJEHcQdRAHAIkQixB3EAcAcBChEHkQBwBwEJgQoRAHAI4QcRB6EAcAjhB/EHEQBwB5EKQQexAHAHkQoRCkEAcAkBB6EHwQBwCQEI4QehAHAHsQoBB4EAcAexCkEKAQBwCLEHwQdxAHAIsQkBB8EAcApRCmEKcQBwClEKgQphAHAEEQqBClEAcAQRDeD6gQBwCoEKkQphAHAKgQqhCpEAcA3g+qEKgQBwDeD9wPqhAHAKoQqxCpEAcAqhCsEKsQBwDcD6wQqhAHANwP3Q+sEAcArBCtEKsQBwCsEK4QrRAHAN0PrhCsEAcA3Q/WD64QBwCuEK8QrRAHAK4QsBCvEAcA1g+wEK4QBwDWD9cPsBAHAKUQ/A9BEAcApRBZEPwPBwCnEFkQpRAHAKcQYRBZEAcASBCxEEoQBwBIELIQsRAHAEkQshBIEAcASRCzELIQBwBKELQQSxAHAEoQsRC0EAcAJBC1ECUQBwAkELYQtRAHACUQtxAqEAcAJRC1ELcQBwAqELgQLBAHACoQtxC4EAcArxC5EK0QBwCvELoQuRAHAK0QuxCrEAcArRC5ELsQBwCrELwQqRAHAKsQuxC8EAcAqRC9EKYQBwCpELwQvRAHAKYQvhCnEAcAphC9EL4QBwCnEL8QYRAHAKcQvhC/EAcAYRDAEFIQBwBhEL8QwBAHAFIQsxBJEAcAUhDAELMQBwCyEMEQsRAHALIQwhDBEAcAsxDCELIQBwCzEMMQwhAHALEQxBC0EAcAsRDBEMQQBwDAEMMQsxAHAMAQxRDDEAcAthDGELUQBwC2EMcQxhAHALUQyBC3EAcAtRDGEMgQ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AMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wAwQYkEAAByYXY0LWJsYWNrX2dsYXNzADgC3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMwQcohAAByYXY0LWJvZHkA3BAUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBa4HrwewB7EHsgezB7QHtQe2B7cHuAe5B7oHuwe8B70Hvge/B8AHwQfCB8MHxAfFB8YHxwfIB8kHygfLB8wHzQfOB88H0AfRB9IH0wfUB9UH1gfXB9gH2QfaB9sH3AfdB94H3wfgB+EH4gfjB+QH5QfmB+cH6AfpB+oH6wfsB+0H7gfvB/AH8QfyB/MH9Af1B/YH9wf4B/kH+gf7B/wH/Qf+B/8HAAgBCAIIAwgECAUIBggHCAgICQgKCAsIDAgNCA4IDwgQCBEIEggTCBQIFQgWCBcIGAgZCBoIGwgcCB0IHggfCCAIIQgiCCMIJAglCCYIJwgoCCkIKggrCCwILQguCC8IMAgxCDIIMwg0CDUINgg3CDgIOQg6CDsIPAg9CD4IPwhACEEIQghDCEQIRQhGCEcISAhJCEoISwhMCE0ITghPCFAIUQhSCFMIVAhVCFYIVwhYCFkIWghbCFwIXQheCF8IYAhhCGIIYwhkCGUIZghnCGgIaQhqCGsIbAhtCG4IbwhwCHEIcghzCHQIdQh2CHcIeAh5CHoIewh8CH0Ifgh/CIAIgQiCCIMIhAiFCIYIhwiICIkIigiLCIwIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJgImQiaCJsInAidCJ4InwigCKEIogijCKQIpQimCKcIqAipCKoIqwisCK0IrgivCLAIsQiyCLMItAi1CLYItwi4CLkIugi7CLwIvQi+CL8IwAjBCMIIwwjECMUIxgjHCMgIyQjKCMsIzAjNCM4IzwjQCNEI0gjTCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjfCOAI4QjiCOMI5AjlCOYI5wjoCOkI6gjrCOwI7QjuCO8I8AjxCPII8wj0CPUI9gj3CPgI+Qj6CPsI/Aj9CP4I/wgACQEJAgkDCQQJBQkGCQcJCAkJCQoJCwkMCQ0JDgkPCRAJEQkSCRMJFAkVCRYJFwkYCRkJGgkbCRwJHQkeCR8JIAkhCSIJIwkkCSUJJgknCSgJKQkqCSsJLAktCS4JLwkwCTEJMgkzCTQJNQk2CTcJOAk5CToJOwk8CT0JPgk/CUAJQQlCCUMJRAlFCUYJRwlICUkJSglLCUwJTQlOCU8JUAlRCVIJUwlUCVUJVglXCVgJWQlaCVsJXAldCV4JXwlgCWEJYgljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJdAl1CXYJdwl4CXkJegl7CXwJfQl+CX8JgAmBCYIJgwmECYUJhgmHCYgJiQmKCYsJjAmNCY4JjwmQCZEJkgmTCZQJlQmWCZcJmAmZCZoJmwmcCZ0JngmfCaAJoQmiCaMJpAmlCaYJpwmoCakJqgmrCawJrQmuCa8JsAmxCbIJswm0CbUJtgm3CbgJuQm6CbsJvAm9Cb4JvwnACcEJwgnDCcQJxQnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCdwJ3QneCd8J4AnhCeIJ4wnkCeUJ5gnnCegJ6QnqCesJ7AntCe4J7wnwCfEJ8gnzCfQJ9Qn2CfcJ+An5CfoJ+wn8Cf0J/gn/CQAKAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUKFgoXChgKGQoaChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoyCjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KQApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4KTwpQClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpfCmAKYQpiCmMKZAplCmYKZwpoCmkKagprCmwKbQpuCm8KcApxCnIKcwp0CnUKdgp3CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqGCocKiAqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqkCqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrgCuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ1WDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ82DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kP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6B/pH+of6x/sH+0f7h/vH/Af8R/yH/Mf9B/1H/Yf9x/4H/kf+h/7H/wf/R/+H/8fACABIAIgAyAEIAUgBiAHIAggCSAKIAsgDCANIA4gDyAQIBEgEiATIBQgFSAWIBcgGCAZIBogGyAcIB0gHiAfICAgISAiICMgJCAlICYgJyAoICkgKiArICwgLSAuIC8gMCAxIDIgMyA0IDUgNiA3IDggOSA6IDsgPCA9ID4gPyBAIEEgQiBDIEQgRSBGIEcgSCBJIEogSyBMIE0gTiBPIFAgUSBSIFMgVCBVIFYgVyBYIFkgWiBbIFwgXSBeIF8gYCBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0gfiB/IIAggSCCIIMghCCFIIYghyCIIIkgiiCLIIwgjSCOII8gkCCRIJIgkyCUIJUgliCXIJggmSCaIJsgnCCdIJ4gnyCgIKEgoiCjIKQgpSCmIKcgqCCpIKogqyCsIK0griCvILAgsSCyILMgtCC1ILYgtyC4ILkguiC7ILwgvSC+IL8gwCDBIMIgwyDEIMUgxiDHIMggySDKIMsgzCDNIM4gzyDQINEg0iDTINQg1SDWINcg2CDZINog2yDcIN0g3iDfIOAg4SDiIOMg5CDlIOYg5yDoIOkg6iDrIOwg7SDuIO8g8CDxIPIg8yD0IPUg9iD3IPgg+SD6IPsg/CD9IP4g/yAAIQEhAiEDIQQhBSEGIQchCCEJIQohCyEMIQ0hDiEPIRAhESESIRMhFCEVIRYhFyEYIRkhGiEbIRwhHSEeIR8hICEhISIhIyEkISUhJiEnISghKSEqISshLCEtIS4hLyEwITEhMiEzITQhNSE2ITchOCE5ITohOyE8IT0hPiE/IUAhQSFCIUMhRCFFIUYhRyFIIUkhSiFLIUwhTSFOIU8hUCFRIVIhUyFUIVUhViFXIVghWSFaIVshXCFdIV4hXyFgIWEhYiFjIWQhZSFmIWchaCFpIWohayFsIW0hbiFvIXAhcSFyIXMhdCF1IXYhdyF4IXkheiF7IXwhfSF+IX8hgCGBIYIhgyGEIYUhhiGHIYghiSGKIYshjCGNIY4hjyGQIZEhkiGTIZQhlSGWIZchMEFdGQAAcmF2NC1zaGllbGRzAKQMCgULBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8FAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wYABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQfEFMUUxhTHFMgUyRTKFMsUzBTNFM4UzxTQFNEU0hTTFNQU1RTWFNcU2BTZFNoU2xTcFN0U3hTfFOAU4RTiFOMU5BTlFOYU5xToFOkU6hTrFOwU7RTuFO8U8BTxFPIU8xT0FPUU9hT3FPgU+RT6FPsU/BT9FP4U/xQAFQEVAhUDFQQVBRUGFQcVCBUJFQoVCxUMFQ0VDhUPFRAVERUSFRMVFBUVFRYVFxUYFRkVGhUbFRwVHRUeFR8VIBUhFSIVIxUkFSUVJhUnFSgVKRUqFSsVLBUtFS4VLxUwFTEVMhUzFTQVNRU2FTcVOBU5FToVOxU8FT0VPhU/FUAVQRVCFUMVRBVFFUYVRxVIFUkVShVLFUwVTRVOFU8VUBVRFVIVUxVUFVUVVhVXFVgVWRVaFVsVXBVdFV4VXxVgFWEVYhVjFWQVZRVmFWcVaBVpFWoVaxVsFW0VbhVvFXAVcRVyFXMVdBV1FXYVdxV4FXkVehV7FXwVfRV+FX8VgBWBFYIVgxWEFYUVhhWHFYgViRWKFYsVjBWNFY4VjxWQFZEVkhWTFZQVlRWWFZcVmBWZFZoVmxWcFZ0VnhWfFaAVoRWiFaMVpBWlFaYVpxWoFakVqhWrFawVrRWuFa8VsBWxFbIVsxW0FbUVthW3FbgVuRW6FbsVvBW9Fb4VvxXAFcEVwhXDFcQVxRXGFccVyBXJFcoVyxXMFc0VzhXPFdAV0RXSFdMV1BXVFdYV1xXYFdkV2hXbFdwV3RXeFd8V4BXhFeIV4xXkFeUV5hXnFegV6RXqFesV7BXtFe4V7xXwFfEV8hXzFfQV9RX2FfcV+BX5FfoV+xX8Ff0V/hX/FQAWARYCFgMWBBYFFgYWBxYIFgkWChYLFgwWDRYOFg8WEBYRFhIWExYUFhUWFhYXFhgWGRYaFhsWHBYdFh4WHxYgFiEWIhYjFiQWJRYmFicWKBYpFioWKxYsFi0WLhYvFjAWMRYyFjMWNBY1FjYWNxY4FjkWOhY7FjwWPRY+Fj8WQBZBFkIWQxZEFkUWRhZHFkgWSRZKFksWTBZNFk4WTxZQFlEWUhZTFlQWVRZWFlcWWBZZFloWWxZcFl0WXhZfFmAWYRZiFmMWZBZlFmYWZxZoFmkWahZrFmwWbRZuFm8WcBZxFnIWcxZ0FnUWdhZ3FngWeRZ6FnsWfBZ9Fn4WfxaAFoEWghaDFoQWhRaGFocWiBaJFooWixaMFo0WjhaPFpAWkRaSFpMWlBaVFpYWlxaYFpkWmhabFpwWnRaeFp8WoBahFqIWoxakFqUWphanFqgWqRaqFqsWrBatFq4WrxawFrEWshazFrQWtRa2FrcWuBa5FroWuxa8Fr0Wvha/FsAWwRbCFsMWxBbFFsYWxxbIFskWyhbLFswWzRbOFs8W0BbRFtIW0xbUFtUW1hbXFtgW2RbaFtsW3BbdFt4W3xbgFuEW4hbjFuQW5RbmFucW6BbpFuoW6xbsFu0W7hbvFvAW8RbyFvMW9Bb1FvYW9xb4FvkW+hb7FvwW/Rb+Fv8WABcBFwIXAxcEFwUXBhcHFwgXCRcKFwsXDBcNFw4XDxcQFxEXEhcTFxQXFRcWFxcXGBcZFxoXGxccFx0XHhcfFyAXIRciFyMXJBclFyYXJxcoFykXKhcrFywXLRcuFy8XMBcxFzIXMxc0FzUXNhc3FzgXORc6FzsXPBc9Fz4XPxdAF0EXQhdDF0QXRRdGF0cXSBdJF0oXSxdMF00XThdPF1AXURdSF1MXVBdVF1YXVxdYF1kXWhdbF1wXXRdeF18XYBdhF2IXYxdkF2UXZhdnF2gXaRdqF2sXbBdtF24XbxdwF3EXchdzF3QXdRd2F3cXeBd5F3oXexd8F30Xfhd/F4AXgReCF4MXhBeFF4YXhxeIF4kXiheLF4wXjReOF48XkBeRF5IXkxeUF5UXlheXF5gXmReaF5sXnBedF54XnxegF6EXohejF6QXpRemF6cXqBepF6oXqxesF60XrhevF7AXsReyF7MXtBe1F7YXtxe4F7kXuhe7F7wXvRe+F78XwBfBF8IXwxfEF8UXxhfHF8gXyRfKF8sXzBfNF84XzxfQF9EX0hfTF9QX1RfWF9cX2BfZF9oX2xfcF90X3hffF+AX4RfiF+MX5BflF+YX5xfoF+kX6hfrF+wX7RfuF+8X8BfxF/IX8xf0F/UX9hf3F/gX+Rf6F/sX/Bf9F/4X/xcAGAEYAhgDGAQYBRgGGAcYCBgJGAoYCxgMGA0YDhgPGBAYERgSGBMYFBgVGBYYFxgYGBkYGhgbGBwYHRgeGB8YIBghGCIYIxgkGCUYJhgnGCgYKRgqGCsYLBgtGC4YLxgwGDEYMhgzGDQYNRg2GDcYOBg5GDoYOxg8GD0YPhg/GEAYQRhCGEMYRBhFGEYYRxhIGEkYShhLGEwYTRhOGE8YUBhRGFIYUxhUGFUYVhhXGFgYWRhaGFsYXBhdGF4YXxhgGGEYYhhjGGQYZRhmGGcYaBhpGGoYaxhsGG0YbhhvGHAYcRhyGHMYdBh1GHYYdxh4GHkYehh7GHwYfRh+GH8YgBiBGIIYgxiEGIUYhhiHGIgYiRiKGIsYjBiNGI4YjxiQGJEYkhiTGJQYlRiWGJcYmBiZGJoYmxicGJ0YnhifGKAYoRiiGKMYpBilGKYYpxioGKkYqhirGKwYrRiuGK8YsBixGLIYsxi0GLUYthi3GLgYuRi6GLsYvBi9GL4YvxjAGMEYwhjDGMQYxRjGGMcYyBjJGMoYyxjMGM0YzhjPGNAY0RjSGNMY1BjVGNYY1xjYGNkY2hjbGNwY3RjeGN8Y4BjhGOIY4xjkGOUY5hjnGOgY6RjqGOsY7BjtGO4Y7xjwGPEY8hjzGPQY9Rj2GPcY+Bj5GPoY+xj8GP0Y/hj/GAAZARkCGQMZBBkFGQYZBxkIGQkZChkLGQwZDRkOGQ8ZEBkRGRIZExkUGRUZFhkXGRgZGRkaGRsZHBkdGR4ZHxkgGSEZIhkjGSQZJRkmGScZKBkpGSoZKxksGS0ZLhkvGTAZMRkyGTMZNBk1GTYZNxk4GTkZOhk7GTwZPRk+GT8ZQBlBGUIZQxlEGUUZRhlHGUgZSRlKGUsZTBlNGU4ZTxlQGVEZUhlTGVQZVRlWGVcZWBlZGVoZWxlcGV0ZXhlfGWAZYRliGWMZZBllGWYZZxloGWkZahlrGWwZbRluGW8ZcBlxGXIZcxl0GXUZdhl3GXgZeRl6GXsZfBl9GX4ZfxmAGYEZghmDGYQZhRmGGYcZiBmJGYoZixmMGY0ZjhmPGZAZkRmSGZMZlBmVGZYZlxmYGZkZmhmbGZwZnRmeGZ8ZoBmhGaIZoxmkGaUZphmnGagZqRmqGasZrBmtGa4ZrxmwGbEZshmzGbQZtRm2GbcZuBm5GboZuxm8Gb0Zvhm/GcAZwRnCGcMZxBnFGcYZxxnIGckZyhnLGcwZzRnOGc8Z0BnRGdIZ0xnUGdUZ1hnXGdgZ2RnaGdsZ3BndGd4Z3xngGeEZ4hnjGeQZ5RnmGecZ6BnpGeoZ6xnsGe0Z7hnvGfAZ8RnyGfMZ9Bn1GfYZ9xn4GfkZ+hn7GfwZ/Rn+Gf8ZABoBGgIaAxoEGgUaBhoHGggaCRoKGgsaDBoNGg4aDxoQGhEaEhoTGhQaFRoWGhcaGBoZGhoaGxocGh0aHhofGiAaIRoiGiMaJBolGiYaJxooGikaKhorGiwaLRouGi8aMBoxGjIaMxo0GjUaNho3GjgaORo6GjsaPBo9Gj4aPxpAGkEaQhpDGkQaRRpGGkcaSBpJGkoaSxpMGk0aThpPGlAaURpSGlMaVBpVGlYaVxpYGlkaWhpbGlwaXRpeGl8aYBphGmIaYxpkGmUaZhpnGmgaaRpqGmsabBptGm4abxpwGnEachpzGnQadRp2GncaeBp5Gnoaexp8Gn0afhp/GoAagRqCGoMahBqFGoYahxqIGokaihqLGowajRqOGo8akBqRGpIakxqUGpUalhqXGpgamRqaGpsanBqdGp4anxqgGqEaohqjGqQapRqmGqcaqBqpGqoaqxqsGq0arhqvGrAasRqyGrMatBq1GrYatxq4Grkauhq7GrwavRq+Gr8awBrBGsIawxrEGsUaxhrHGsgayRrKGssazBrNGs4azxrQGtEa0hrTGtQa1RrWGtca2BrZGtoa2xrcGt0a3hrfGuAa4RriGuMa5BrlGuYa5xroGuka6hrrGuwa7RruGu8a8BrxGvIa8xr0GvUa9hr3Gvga+Rr6Gvsa/Br9Gv4a/xoAGwEbAhsDGwQbBRsGGwcbCBsJGwobCxsMGw0bDhsPGxAbERsSGxMbFBsVGxYbFxsYGxkbGhsbGxwbHRseGx8bIBshGyIbIxskGyUbJhsnGygbKRsqGysbLBstGy4bLxswGzEbMhszGzQbNRs2GzcbOBs5GzobOxs8Gz0bPhs/G0AbQRtCG0MbRBtFG0YbRxtIG0kbShtLG0wbTRtOG08bUBtRG1IbUxtUG1UbVhtXG1gbWRtaG1sbXBtdG14bXxtgG2EbYhtjG2QbZRtmG2cbaBtpG2obaxtsG20bbhtvG3AbcRtyG3MbdBt1G3Ybdxt4G3kbeht7G3wbfRt+G38bgBuBG4IbgxuEG4UbhhuHG4gbiRuKG4sbjBuNG44bjxuQG5EbkhuTG5QblRuWG5cbmBuZG5obmxucG50bnhufG6AboRuiG6MbpBulG6YbpxuoG6kbqhurG6wbrRuuG68bsBuxG7Ibsxu0G7Ubthu3G7gbuRu6G7sbvBu9G74bvxvAG8EbwhvDG8QbxRvGG8cbyBvJG8obyxvMG80bzhvPG9Ab0RvSG9Mb1BvVG9Yb1xvYG9kb2hvbG9wb3RveG98b4BvhG+Ib4xvkG+Ub5hvnG+gb6RvqG+sb7BvtG+4b7xvwG/Eb8hvzG/Qb9Rv2G/cb+Bv5G/ob+xv8G/0b/hv/GwAcARwCHAMcBBwFHAYcBxwIHAkcChwLHAwcDRwOHA8cEBwRHBIcExwUHBUcFhwXHBgcGRwaHBscHBwdHB4cHxwgHCEcIhwjHCQcJRwmHCccKBwpHCocKxwsHC0cLhwvHDAcMRwyHDMcNBw1HDYcNxw4HDkcOhw7HDwcPRw+HD8cQBxBHEIcQxxEHEUcRhxHHEgcSRxKHEscTBxNHE4cTxxQHFEcUhxTHFQcVRxWHFccWBxZHFocWxxcHF0cXhxfHGAcYRxiHGMcZBxlHGYcZxxoHGkcahxrHGwcbRxuHG8ccBxxHHIccxx0HHUcdhx3HHgceRx6HHscfBx9HH4cfxyAHIEcghyDHIQchRyGHIcciByJHIocixyMHI0cjhyPHJAckRySHJMclByVHJYclxyYHJkcmhybHJwcnRyeHJ8coByhHKIcoxykHKUcphynHKgcqRyqHKscrBytHK4crxywHLEcshyzHLQctRy2HLccuBy5HLocuxy8HL0cvhy/HMAcwRzCHMMcxBzFHMYcxxzIHMkcyhzLHMwczRzOHM8c0BzRHNIc0xzUHNUc1hzXHNgc2RzaHNsc3BzdHN4c3xzgHOEc4hzjHOQc5RzmHOcc6BzpHOoc6xzsHO0c7hzvHPAc8RzyHPMc9Bz1HPYc9xz4HPkc+hz7HPwc/Rz+HP8cAB0BHQIdAx0EHQUdBh0HHQgdCR0KHQsdDB0NHQ4dDx0QHREdEh0THRQdFR0WHRcdGB0ZHRodGx0cHR0dHh0fHSAdIR0iHSMdJB0lHSYdJx0oHSkdKh0rHSwdLR0uHS8dMB0xHTIdMx00HTUdNh03HTgdOR06HTsdPB09HT4dPx1AHUEdQh1DHUQdRR1GHUcdSB1JHUodSx1MHU0dTh1PHVAdUR1SHVMdVB1VHVYdVx1YHVkdWh1bHVwdXR1eHV8dYB1hHWIdYx1kHWUdZh1nHWgdaR1qHWsdbB1tHW4dbx1wHXEdch1zHXQddR12HXcdeB15HXodex18HX0dfh1/HYAdgR2CHYMdhB2FHYYdhx2IHYkdih2LHYwdjR2OHY8dkB2RHZIdkx2UHZUdlh2XHZgdmR2aHZsdnB2dHZ4dnx2gHaEdoh2jHaQdpR2mHacdqB2pHaodqx2sHa0drh2vHbAdsR2yHbMdtB21HbYdtx24Hbkduh27HbwdvR2+Hb8dwB3BHcIdwx3EHcUdxh3HHcgdyR3KHcsdzB3NHc4dzx3QHdEd0h3THdQd1R3WHdcd2B3ZHdod2x3cHd0d3h3fHeAd4R3iHeMd5B3lHeYd5x3oHekd6h3rHewd7R3uHe8d8B3xHfId8x30HfUd9h33Hfgd+R36Hfsd/B39Hf4d/x0AHgEeAh4DHgQeBR4GHgceCB4JHgoeCx4MHg0eDh4PHhAeER4SHhMeFB4VHhYeFx4YHhkeGh4bHhweHR4eHh8eIB4hHiIeIx4kHiUeJh4nHigeKR4qHiseLB4tHi4eLx4wHjEeMh4zHjQeNR42HjceOB45HjoeOx48Hj0ePh4/HkAeQR5CHkMeRB5FHkYeRx5IHkkeSh5LHkweTR5OHk8eUB5RHlIeUx5UHlUeVh5XHlgeWR5aHlseXB5dHl4eXx5gHmEeYh5jHmQeZR5mHmceaB5pHmoeax5sHm0ebh5vHnAecR5yHnMedB51HnYedx54Hnkeeh57HnwefR5+Hn8egB6BHoIegx6EHoUehh6HHogeiR6KHosejB6NHo4ejx6QHpEekh6THpQelR6WHpcemB6ZHpoemx6cHp0enh6fHqAeoR6iHqMepB6lHqYepx6oHqkeqh6rHqwerR6uHq8esB6xHrIesx60HrUeth63HrgeuR66HrsevB69Hr4evx7AHsEewh7DHsQexR7GHsceyB7JHsoeyx7MHs0ezh7PHtAe0R7SHtMe1B7VHtYe1x7YHtke2h7bHtwe3R7eHt8e4B7hHuIe4x7kHuUe5h7nHuge6R7qHuse7B7tHu4e7x7wHvEe8h7zHvQe9R72Hvce+B75Hvoe+x78Hv0e/h7/HgAfAR8CHwMfBB8FHwYfBx8IHwkfCh8LHwwfDR8OHw8fEB8RHxIfEx8UHxUfFh8XHzBB8QAAAHJhdjQtZGFya2VyX2dsYXMAbADAE8ETwhPDE8QTxRPGE8cTyBPJE8oTyxPME80TzhPPE9AT0RPSE9MT1BPVE9YT1xPYE9kT2hPbE9wT3RPeE98T4BPhE+IT4xPkE+UT5hPnE+gT6RPqE+sT7BPtE+4T7xPwE/ET8hPzE/QT9RP2E/cT+BP5E/oT+xP8E/0T/hP/EwAUARQCFAMUBBQFFAYUBxQIFAkUChQLFAwUDRQOFA8UEBQRFBIUExQUFBUUFhQXFBgUGRQaFBsUHBQdFB4UHxQgFCEUIhQjFCQUJRQmFCcUKBQpFCoUKxQwQUMBAAByYXY0LWdsYXNzAJgALBQtFC4ULxQwFDEUMhQzFDQUNRQ2FDcUOBQ5FDoUOxQ8FD0UPhQ/FEAUQRRCFEMURBRFFEYURxRIFEkUShRLFEwUTRROFE8UUBRRFFIUUxRUFFUUVhRXFFgUWRRaFFsUXBRdFF4UXxRgFGEUYhRjFGQUZRRmFGcUaBRpFGoUaxRsFG0UbhRvFHAUcRRyFHMUdBR1FHYUdxR4FHkUehR7FHwUfRR+FH8UgBSBFIIUgxSEFIUUhhSHFIgUiRSKFIsUjBSNFI4UjxSQFJEUkhSTFJQUlRSWFJcUmBSZFJoUmxScFJ0UnhSfFKAUoRSiFKMUpBSlFKYUpxSoFKkUqhSrFKwUrRSuFK8UsBSxFLIUsxS0FLUUthS3FLgUuRS6FLsUvBS9FL4UvxTAFMEUwhTDFFBBZoYAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACy1XI/GEOwPvjrZT/4OZE+kn5lP5yWmj7YrWY/6OqcPm8bZz8Iq5M+7LVmP6THkD7kR2Y/CImZPpxRZz/MqJs+y75nP1D9kj43wp4+UA04PlWDUz9n/CU/uU7WPlANOD4osjk/Z/wlP5kgdz+3yVE/Hl1PP7fJUT+ASTY/LWBwP5z6Iz8tYHA/w/IPP0iPST+BLDY/D3QwP8v1Jz8pgAw/DdO2PoAbKD4sVra9cstYP6IKWT869EI/a49JPjr0Qj8C3A8/cstYP09mfT/8yPo+9n6tPvzI+j7B62s/uKIiPvSJij64oiI+fEUDP1ANOD52/s4+UA04PnWhaz9n/CU/Y5+HP7fJUT+gZ04/LWBwP8gYPD8tYHA/oEpOPw90MD/wECg/SI9JP+sTQD8pgAw/TQ/nPoAbKD7s1TM+OvRCPyrJ4b1yy1g/om0KP3LLWD9CnFM/OvRCPzeioj78yPo+7/d3P/zI+j5oWn8+uKIiPmF9Zj+4oiI+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLoGj8YHaQ+0MshP4DOmD7QyyE/7DeZPiLoGj8UuaM+6+coP3Awjz7r5yg/DJ2PPhq5GT9gTaY+GrkZP6zqpT6i3xU/wEKsPqLfFT/046s+3vARP6y0sj7e8BE/rFqyPmaUDj+Qk7c+ZpQOP3w+tz62Rjo/mBGDPrZGOj8YgIM+lfQ5P2CUUz6/rzk/eNdMPiYcDT9YGac+LaQPP6zqnj4fdxA/XI2fPnlVDD9kp6Y+7O0TP9yVlT7EzxQ/oIOWPszOFz+YfY4+W7cYP1izjz6AIig/cBdtPsdJJz+gJGg+tfsYP6Dpiz7k5hk/mDiNPuzYID9kGIE+VuwfP1Bsfj7KGBo/QDqRPj8IIT9EQoU+N0koP5ildT5P6Rg/xKqTPtEEOj/oOFw+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWwQVP+Rbmj7evhA/LOuiPv9MDT+QF6k+sW0MP5iXqD7pwg0/5Me2Pja6DT/Ebrc+94UaP+yVmj5ybyE/TBWPPjadKD9MAIU+r1YZP7zpnD7TJzo/kAJxPqt3FT/ERaM+Zl4RP0y/qj7/AQ4/1L6wPk4qDT8YQ7A+boEaP5yWmj4IFBo/+DmRPihSGT/o6pw+keQYPwirkz4cuBk/CImZPhRKGT+kx5A+ZK4YP8yomz41QRg/UP2SPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhpMT8AyE4/CiosPQDITj8biKo8AMhOPwj7Kz8AyE4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBh6oBAGYeAAABAAIABwAAAAMAAQAHAAQAAwAFAAcABAABAAMABwAGAAAAAgAHAAYABwAAAAcAAQAGAAIABwABAAgABgAHAAQACAABAAcABAAJAAgABwAAAAoAAwAHAAAABwAKAAcACgAFAAMABwAKAAsABQAHAAYADAAHAAcABgANAAwABwAOAA0ADwAHAA4ADAANAAcACAANAAYABwAIABAADQAHAA8AEAARAAcADwANABAABwASAAgACQAHABIAEAAIAAcAEQASABMABwARABAAEgAHAAwACgAHAAcADAAUAAoABwAVAAwADgAHABUAFAAMAAcACgAWAAsABwAKABQAFgAHABcAFAAVAAcAFwAWABQABwAYABkAGgAHABgAGwAZAAcAHAAbAB0ABwAcABkAGwAHAB4AGAAaAAcAHgAfABgABwAZAB4AGgAHABkAIAAeAAcAHAAgABkABwAcACEAIAAHABgAIgAbAAcAGAAfACIABwAiAB0AGwAHACIAIwAdAAcAHgAkAB8ABwAeACUAJAAHACYAJQAnAAcAJgAkACUABwAgACUAHgAHACAAKAAlAAcAJwAoACkABwAnACUAKAAHACoAIAAhAAcAKgAoACAABwApACoAKwAHACkAKAAqAAcAJAAiAB8ABwAkACwAIgAHAC0AJAAmAAcALQAsACQABwAiAC4AIwAHACIALAAuAAcALwAsAC0ABwAvAC4ALAAHADAAMQAyAAcAMAAzADEABwA0ADMAMAAHADQANQAzAAcANQA2ADcABwA1ADQANgAHADgAOQA6AAcAOAA7ADkABwA7ADYAOQAHADsANwA2AAcAPAA7ADgABwA8AD0AOwAHAD0ANwA7AAcAPQA1ADcABwA+AD0APAAHAD4APwA9AAcAPwA1AD0ABwA/ADMANQAHAEAAPwA+AAcAQABBAD8ABwBBADMAPwAHAEEAMQAzAAcAOgBCAEMABwA6ADkAQgAHADkANABCAAcAOQA2ADQABwBDAEQARQAHAEMAQgBEAAcAQgAwAEQABwBCADQAMAAHAEUARgBHAAcARQBEAEYABwBEADIARgAHAEQAMAAyAAcASABJAEoABwBIAEsASQAHAEsATABNAAcASwBIAEwABwBJAE4ASgAHAEkATwBOAAcATgBIAEoABwBOAFAASAAHAFAATABIAAcAUABRAEwABwBSAEkASwAHAFIATwBJAAcATQBSAEsABwBNAFMAUgAHAFQATgBPAAcAVABVAE4ABwBVAA4ADwAHAFUAVAAOAAcAVQBQAE4ABwBVAFYAUAAHAFYADwARAAcAVgBVAA8ABwBQAFcAUQAHAFAAVgBXAAcAVwARABMABwBXAFYAEQAHAFIAVABPAAcAUgBYAFQABwBUABUADgAHAFQAWAAVAAcAWQBSAFMABwBZAFgAUgAHAFgAFwAVAAcAWABZABcABwBaAFsAXAAHAFoAXQBbAAcAXQBeAF8ABwBdAFoAXgAHAFsAYABcAAcAWwBhAGAABwBgAFoAXAAHAGAAYgBaAAcAYgBeAFoABwBiAGMAXgAHAGQAWwBdAAcAZABhAFsABwBfAGQAXQAHAF8AZQBkAAcAZgBgAGEABwBmAGcAYAAHAGcAJgAnAAcAZwBmACYABwBnAGIAYAAHAGcAaABiAAcAaAAnACkABwBoAGcAJwAHAGIAaQBjAAcAYgBoAGkABwBpACkAKwAHAGkAaAApAAcAZABmAGEABwBkAGoAZgAHAGYALQAmAAcAZgBqAC0ABwBrAGQAZQAHAGsAagBkAAcAagAvAC0ABwBqAGsALwAHADEAbAAyAAcAMQBtAGwABwBtAG4AbAAHAG0AbwBuAAcAcABvAHEABwBwAG4AbwAHAHIAcwB0AAcAcgB1AHMABwBwAHUAcgAHAHAAcQB1AAcAdQB2AHMABwB1AHcAdgAHAHEAdwB1AAcAcQBvAHcABwB3AHgAdgAHAHcAeQB4AAcAbwB5AHcABwBvAG0AeQAHAHkAQAB4AAcAeQBBAEAABwBtAEEAeQAHAG0AMQBBAAcAegB0AHsABwB6AHIAdAAHAG4AcgB6AAcAbgBwAHIABwB8AHsAfQAHAHwAegB7AAcAbAB6AHwABwBsAG4AegAHAEYAfQBHAAcARgB8AH0ABwAyAHwARgAHADIAbAB8AAcAfgB/AIAABwB+AIEAfwAHAIIAfgCDAAcAggCBAH4ABwCEAIMAhQAHAIQAggCDAAcAhgCFAIcABwCGAIQAhQAHAIgAhwCJAAcAiACGAIcABwCIAIoAiwAHAIgAiQCKAAcAiwCMAI0ABwCLAIoAjAAHAI0AjgCPAAcAjQCMAI4ABwCPAJAAkQAHAI8AjgCQAAcAkQCSAJMABwCRAJAAkgAHAJIAlACTAAcAkgCVAJQABwCVAJYAlAAHAJUAlwCWAAcAlwCYAJYABwCXAJkAmAAHAJkAmgCYAAcAmQCbAJoABwCbAJwAmgAHAJsAnQCcAAcAngCcAJ0ABwCeAJ8AnAAHAKAAnwCeAAcAoAChAJ8ABwCAAKEAoAAHAIAAfwChAAcAigCHAIwABwCKAIkAhwAHAIwAhQCOAAcAjACHAIUABwCFAJAAjgAHAIUAgwCQAAcAkAB+AJIABwCQAIMAfgAHAH4AlQCSAAcAfgCAAJUABwCAAJcAlQAHAIAAoACXAAcAoACZAJcABwCgAJ4AmQAHAJ4AmwCZAAcAngCdAJsABwCiAKMApAAHAKIApQCjAAcApgCnAKgABwCmAKkApwAHAKoAqACrAAcAqgCmAKgABwCsAK0ArgAHAKwAqwCtAAcArwCtALAABwCvAK4ArQAHALEAsgCzAAcAsQC0ALIABwC1ALYAtwAHALUAuAC2AAcAuAC5ALYABwC4ALoAuQAHALoAuwC5AAcAugC8ALsABwC8AL0AuwAHALwAvgC9AAcAvgC/AL0ABwC+AMAAvwAHAMEAtACxAAcAwQDCALQABwDDALgAtQAHAMMAxAC4AAcAxAC6ALgABwDEAMUAugAHAMUAvAC6AAcAxQDGALwABwDGAL4AvAAHAMYAxwC+AAcAxwDAAL4ABwDHAMgAwAAHALkAyQC2AAcAuQDKAMkABwDKAKgAyQAHAMoAqwCoAAcAuwDKALkABwC7AMsAygAHAMsAqwDKAAcAywCtAKsABwC9AMsAuwAHAL0AzADLAAcAzACtAMsABwDMALAArQAHAL8AzAC9AAcAvwDNAMwABwDNALAAzAAHAM0AzgCwAAcAzgDPANAABwDOAM0AzwAHALYA0QC3AAcAtgDJANEABwDJAKcA0QAHAMkAqACnAAcAsgDSALMABwCyANMA0gAHANMAowDSAAcA0wCkAKMABwDUALAAzgAHANQArwCwAAcA1QDOANAABwDVANYAzgAHANYA1ADOAAcA1gDXANQABwDYAK4ArwAHANgA2QCuAAcA2QDaAK4ABwDZANsA2gAHAKwA2gDcAAcArACuANoABwDdAN4A3wAHAN0A4ADeAAcA4QDfAOIABwDhAN0A3wAHANUA3gDgAAcA1QDQAN4ABwDjAN0A4QAHAOMA5ADdAAcA5ADgAN0ABwDkAOUA4AAHAOUA1QDgAAcA5QDmANUABwDmANYA1QAHAOYA5wDWAAcA5wDXANYABwDnAOgA1wAHAOkA2QDYAAcA6QDqANkABwDqANsA2QAHAOoA6wDbAAcA6wDaANsABwDrAOwA2gAHAOwA3ADaAAcA7ADtANwABwDuAKYAqgAHAO4A7wCmAAcA7wCpAKYABwDvAPAAqQAHAPEApQCiAAcA8QDyAKUABwDzAMgAxwAHAPMA9ADIAAcA9QDHAMYABwD1APMAxwAHAPYAxgDFAAcA9gD1AMYABwD3AMUAxAAHAPcA9gDFAAcA+ADEAMMABwD4APcAxAAHAPkAwgDBAAcA+QD6AMIABwD7APQA8wAHAPsA/AD0AAcA/QDzAPUABwD9APsA8wAHAP4A9QD2AAcA/gD9APUABwD/APYA9wAHAP8A/gD2AAcAAAH3APgABwAAAf8A9wAHAAEB+gD5AAcAAQECAfoABwADAQQBBQEHAAMBBgEEAQcABQEHAQgBBwAFAQQBBwEHAAkBBgEDAQcACQEKAQYBBwAIAQsBDAEHAAgBBwELAQcADAENAQ4BBwAMAQsBDQEHAA4BDwEQAQcADgENAQ8BBwAGAREBBAEHAAYBEgERAQcABAETAQcBBwAEAREBEwEHAAoBEgEGAQcACgEUARIBBwAHARUBCwEHAAcBEwEVAQcACwEWAQ0BBwALARUBFgEHAA0BFwEPAQcADQEWARcBBwAYARkBGgEHABgBGwEZAQcAAwEYAQkBBwADARsBGAEHABsBHAEZAQcAGwEdARwBBwAFARsBAwEHAAUBHQEbAQcAHgEdAR8BBwAeARwBHQEHAAUBHwEdAQcABQEIAR8BBwAfASABHgEHAB8BIQEgAQcACAEhAR8BBwAIAQwBIQEHACEBIgEgAQcAIQEjASIBBwAOASEBDAEHAA4BIwEhAQcAIwEkASIBBwAjASUBJAEHABABIwEOAQcAEAElASMBBwAmARkBHAEHACYBJwEZAQcAJwEaARkBBwAnASgBGgEHACkBJwEmAQcAKQEqAScBBwAqASgBJwEHACoBKwEoAQcALAEtAS4BBwAsAS8BLQEHAC8BMAEtAQcALwExATABBwAyAQIBAQEHADIBMwECAQcANAH/AAABBwA0ATUB/wAHADUB/gD/AAcANQE2Af4ABwA2Af0A/gAHADYBNwH9AAcANwH7AP0ABwA3ATgB+wAHADgB/AD7AAcAOAE5AfwABwAzASwBLgEHADMBMgEsAQcAKQE6ASoBBwApATsBOgEHACoBPAErAQcAKgE6ATwBBwA0ASkBNQEHADQBOwEpAQcANQEmATYBBwA1ASkBJgEHADYBHAE3AQcANgEmARwBBwA4ARwBHgEHADgBNwEcAQcAIAE4AR4BBwAgATkBOAEHAD0B4wDhAAcAPQE+AeMABwA/AeEA4gAHAD8BPQHhAAcAQAEgASIBBwBAAUEBIAEHAEIBIgEkAQcAQgFAASIBBwBDAUEBQAEHAEMBRAFBAQcARQFAAUIBBwBFAUMBQAEHAEYBRAFDAQcARgFHAUQBBwBIAUMBRQEHAEgBRgFDAQcAPgE/AUkBBwA+AT0BPwEHAEoBQQFEAQcASgFLAUEBBwA5AUEBSwEHADkBIAFBAQcARwFKAUQBBwBHAUwBSgEHAOIATQE/AQcA4gBOAU0BBwBOAfQATQEHAE4ByAD0AAcA3wBOAeIABwDfAE8BTgEHAE8ByABOAQcATwHAAMgABwDeAE8B3wAHAN4AUAFPAQcAUAHAAE8BBwBQAb8AwAAHANAAUAHeAAcA0ADPAFABBwDPAL8AUAEHAM8AzQC/AAcATQFMAT8BBwBNAUoBTAEHAPQASgFNAQcA9ABLAUoBBwD8AEsB9AAHAPwAOQFLAQcAPgFRAeMABwA+AVIBUQEHAFIBUwFRAQcAUgFUAVMBBwDjAFUB5AAHAOMAUQFVAQcAUQFWAVUBBwBRAVMBVgEHAOQAVwHlAAcA5ABVAVcBBwBVAVgBVwEHAFUBVgFYAQcA5QBZAeYABwDlAFcBWQEHAFcBWgFZAQcAVwFYAVoBBwDmAFsB5wAHAOYAWQFbAQcAWQFcAVsBBwBZAVoBXAEHAOgAWwFdAQcA6ADnAFsBBwBdAV4BXwEHAF0BYAFeAQcA6QBhAeoABwDpAF8BYQEHAF8BYgFhAQcAXwFeAWIBBwDqAGMB6wAHAOoAYQFjAQcAYQFkAWMBBwBhAWIBZAEHAOsAZQHsAAcA6wBjAWUBBwBjAWYBZQEHAGMBZAFmAQcA7QBlAWcBBwDtAOwAZQEHAGcBaAFpAQcAZwFqAWgBBwDuAGsB7wAHAO4AaQFrAQcAaQFsAWsBBwBpAWgBbAEHAO8AbQHwAAcA7wBrAW0BBwBrAW4BbQEHAGsBbAFuAQcA8QBvAfIABwDxAHABbwEHAHABcQFvAQcAcAFyAXEBBwBSAUkBcwEHAFIBPgFJAQcAdAFSAXMBBwB0AVQBUgEHAHUBtwDRAAcAdQF2AbcABwB3AdEApwAHAHcBdQHRAAcAeAH4AHkBBwB4AQAB+AAHAHoBPAE6AQcAegF7ATwBBwCpAHcBpwAHAKkAfAF3AQcAtwB9AbUABwC3AHYBfQEHAH4BtQB9AQcAfgHDALUABwB8AfAAfwEHAHwBqQDwAAcAeQHDAH4BBwB5AfgAwwAHAIABAAF4AQcAgAE0AQABBwCBAToBOwEHAIEBegE6AQcAgAE7ATQBBwCAAYEBOwEHAPAAggF/AQcA8ABtAYIBBwBtAYMBggEHAG0BbgGDAQcAogCEAYUBBwCiAKQAhAEHAHwBhAF3AQcAfAGFAYQBBwCyAIYBhwEHALIAtACGAQcAdgGGAX0BBwB2AYcBhgEHAIgBfQGGAQcAiAF+AX0BBwDCAIYBtAAHAMIAiAGGAQcAfwGFAXwBBwB/AYkBhQEHAKIAiQHxAAcAogCFAYkBBwB5AYgBigEHAHkBfgGIAQcA+gCIAcIABwD6AIoBiAEHAIsBeAGMAQcAiwGAAXgBBwAzAYwBAgEHADMBiwGMAQcAiwEuAY0BBwCLATMBLgEHAIABjQGBAQcAgAGLAY0BBwCCAYkBfwEHAIIBjgGJAQcA8QCOAXABBwDxAIkBjgEHAIMBjgGCAQcAgwGPAY4BBwBwAY8BcgEHAHABjgGPAQcA0wCHAZABBwDTALIAhwEHAJABdgF1AQcAkAGHAXYBBwCkAJABhAEHAKQA0wCQAQcAdwGQAXUBBwB3AYQBkAEHAHgBigGMAQcAeAF5AYoBBwACAYoB+gAHAAIBjAGKAQcAegGNAZEBBwB6AYEBjQEHAJEBLgEtAQcAkQGNAS4BBwB7AZEBkgEHAHsBegGRAQcAkgEtATABBwCSAZEBLQEHAJMBlAGVAQcAkwGVAZYBBwCXAZgBkwEHAJcBkwGWAQcAlwGWAZkBBwCXAZkBmgEHAJkBlgGbAQcAmQGbAZwBBwCWAZ0BngEHAJYBngGbAQcAlQGfAZ0BBwCVAZ0BlgEHAKABoQGUAQcAoAGUAZMBBwCiAaABkwEHAKIBkwGYAQcAowGiAZgBBwCjAZgBlwEHAKMBlwGaAQcAowGaAaQBBwCkAZoBmQEHAKQBmQGlAQcApQGZAZwBBwClAZwBpgEHAJwBmwGnAQcAnAGnAaYBBwCbAZ4BqAEHAJsBqAGnAQcAngGdAakBBwCeAakBqAEHAJ8BqgGpAQcAnwGpAZ0BBwCVAasBqgEHAJUBqgGfAQcAlAGhAasBBwCUAasBlQEHAKwBrQGhAQcArAGhAaABBwCuAawBoAEHAK4BoAGiAQcArwGuAaIBBwCvAaIBowEHAK8BowGkAQcArwGkAbABBwCwAaQBpQEHALABpQGxAQcAsQGlAaYBBwCxAaYBsgEHAKYBpwGzAQcApgGzAbIBBwCnAagBtAEHAKcBtAGzAQcAqAGpAbUBBwCoAbUBtAEHAKoBtgG1AQcAqgG1AakBBwCrAbcBtgEHAKsBtgGqAQcAoQGtAbcBBwChAbcBqwEHALgBrQGsAQcAuAGsAbkBBwC5AawBrgEHALkBrgG6AQcAuwG6Aa4BBwC7Aa4BrwEHALwBuwGvAQcAvAGvAbABBwC9AbwBsAEHAL0BsAGxAQcAvgG9AbEBBwC+AbEBsgEHALMBvwG+AQcAswG+AbIBBwC0AcABvwEHALQBvwGzAQcAtQHBAcABBwC1AcABtAEHALYBwgHBAQcAtgHBAbUBBwC2AbcBwwEHALYBwwHCAQcAtwGtAbgBBwC3AbgBwwEHAMQBuAG5AQcAxAG5AcUBBwDFAbkBugEHAMUBugHGAQcAxwHGAboBBwDHAboBuwEHAMgBxwG7AQcAyAG7AbwBBwDJAcgBvAEHAMkBvAG9AQcAygHJAb0BBwDKAb0BvgEHAL8BywHKAQcAvwHKAb4BBwDAAcwBywEHAMABywG/AQcAwQHNAcwBBwDBAcwBwAEHAMIBzgHNAQcAwgHNAcEBBwDCAcMBzwEHAMIBzwHOAQcAwwG4AcQBBwDDAcQBzwEHAMQBxQHGAQcAxAHGAdABBwDIAdABxgEHAMgBxgHHAQcAygHQAcgBBwDKAcgByQEHAMsBzAHQAQcAywHQAcoBBwDNAc4B0AEHAM0B0AHMAQcAzgHPAcQBBwDOAcQB0AEHANEB0gHTAQcA0QHUAdIBBwDVAdQB0QEHANUB1gHUAQcA1wHWAdUBBwDXAdgB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bgIHAG0CbAJpAgcAbwJwAnECBwBvAnICcAIHAG8CcwJ0AgcAbwJxAnMCBwB0AnUCdgIHAHQCcwJ1AgcAdgJ3AngCBwB2AnUCdwIHAHcCeQJ4AgcAdwJ6AnkCBwB6AnsCeQIHAHoCfAJ7AgcAawJ7AnwCBwBrAmoCewIHAH0CaQJrAgcAfQJ+AmkCBwBuAn8CcAIHAG4CgAJ/AgcAcAKBAnECBwBwAn8CgQIHAHECggJzAgcAcQKBAoICBwBzAoMCdQIHAHMCggKDAgcAhAKFAoYCBwCEAocChQIHAIgCiQKKAgcAiAKLAokCBwCMAo0CjgIHAIwCjwKNAgcAjwKQAo0CBwCPApECkAIHAJICkwKUAgcAkgKVApMCBwCVApYCkwIHAJUClwKWAgcAhQKYAoYCBwCFApkCmAIHAIkCmgKKAgcAiQKbApoCBwCRApwCkAIHAJECnQKcAgcAnQKbApwCBwCdApoCmwIHAJcCngKWAgcAlwKfAp4CBwCfApkCngIHAJ8CmAKZAgcAiAKgAosCBwCIAqECoAIHAKECogKgAgcAoQKjAqICBwCkAqUCpgIHAKQCpwKlAgcAqAKnAqQCBwCoAqkCpwIHAKoCqwKsAgcAqgKtAqsCBwCtAq4CqwIHAK0CrwKuAgcAsAKuArECBwCwAqsCrgIHALICqwKwAgcAsgKsAqsCBwCzArQCtQIHALMCtgK0AgcAtQK3ArgCBwC1ArQCtwIHALgCuQK6AgcAuAK3ArkCBwC6ArsCvAIHALoCuQK7AgcAvAK9Ar4CBwC8ArsCvQIHAL4CvwLAAgcAvgK9Ar8CBwDAAsECwgIHAMACvwLBAgcAwgLDAsQCBwDCAsECwwIHAMUCxgLHAgcAxQLIAsYCBwDJAsoCywIHAMkCzALKAgcAzQKHAoQCBwDNAs4ChwIHAM8C0ALRAgcAzwLSAtACBwDTAtAC1AIHANMC0QLQAgcA1QLDAsECBwDVAtYCwwIHANcC2ALZAgcA1wLaAtgCBwDbAtgC1QIHANsC3ALYAgcA2QLcAt0CBwDZAtgC3AIHANIC3gLQAgcA0gLfAt4CBwDUAt4C4AIHANQC0ALeAgcAvQLbAr8CBwC9AuEC2wIHAOIC3ALjAgcA4gLdAtwCBwDkAr0CuwIHAOQC4QK9AgcA5QLjAuYCBwDlAuIC4wIHAOcCpgKlAgcA5wLoAqYCBwCvAukCrgIHAK8C6gLpAgcA6QKxAq4CBwDpAusCsQIHAOwC7QLuAgcA7ALvAu0CBwDwAvEC8gIHAPAC8wLxAgcA8wKIAvECBwDzAqECiAIHAPQC8wLwAgcA9AL1AvMCBwD1AqEC8wIHAPUCowKhAgcA9gL3AvgCBwD2AvkC9wIHAPkC6AL3AgcA+QKmAugCBwD6AvkC9gIHAPoC+wL5AgcA+wKmAvkCBwD7AqQCpgIHAPwC+wL6AgcA/AL9AvsCBwD9AqQC+wIHAP0CqAKkAgcA8gL+Av8CBwDyAvEC/gIHAPECigL+AgcA8QKIAooCBwD/AgADAQMHAP8C/gIAAwcA/gKaAgADBwD+AooCmgIHAAEDAgMDAwcAAQMAAwIDBwAAA50CAgMHAAADmgKdAgcAAwMEAwUDBwADAwIDBAMHAAIDkQIEAwcAAgOdApECBwAFAwYDBwMHAAUDBAMGAwcABAOPAgYDBwAEA5ECjwIHAAcDCAMJAwcABwMGAwgDBwAGA4wCCAMHAAYDjwKMAgcACgMLAwwDBwAKAw0DCwMHAA0DDgMLAwcADQMPAw4DBwAPAxADDgMHAA8DEQMQAwcAEgMTAxQDBwASAxUDEwMHABUDFgMTAwcAFQMXAxYDBwAXAxgDFgMHABcDGQMYAwcAGgPrAhsDBwAaA7EC6wIHABwDsQIaAwcAHAOwArECBwAdA7ACHAMHAB0DsgKwAgcAHgOlAh8DBwAeA+cCpQIHAB8DpwIgAwcAHwOlAqcCBwAgA6kCIQMHACADpwKpAgcAHwMiAx4DBwAfAyMDIgMHACMDEAMiAwcAIwMOAxADBwAgAyMDHwMHACADJAMjAwcAJAMOAyMDBwAkAwsDDgMHACEDJAMgAwcAIQMlAyQDBwAlAwsDJAMHACUDDAMLAwcAGwMmAxoDBwAbAycDJgMHACcDEwMmAwcAJwMUAxMDBwAaAygDHAMHABoDJgMoAwcAJgMWAygDBwAmAxMDFgMHABwDKQMdAwcAHAMoAykDBwAoAxgDKQMHACgDFgMYAwcAKgMrAywDBwAqAy0DKwMHAC0DLgMrAwcALQMvAy4DBwAwAy0DKgMHADADMQMtAwcAMQMvAy0DBwAxAzIDLwMHALUCMwOzAgcAtQI0AzMDBwA0A6ICMwMHADQDoAKiAgcAuAI0A7UCBwC4AjUDNAMHADUDoAI0AwcANQOLAqACBwC6AjUDuAIHALoCNgM1AwcANgOLAjUDBwA2A4kCiwIHALwCNgO6AgcAvAI3AzYDBwA3A4kCNgMHADcDmwKJAgcAvgI3A7wCBwC+AjgDNwMHADgDmwI3AwcAOAOcApsCBwDAAjgDvgIHAMACOQM4AwcAOQOcAjgDBwA5A5ACnAIHAMICOQPAAgcAwgI6AzkDBwA6A5ACOQMHADoDjQKQAgcAxAI6A8ICBwDEAjsDOgMHADsDjQI6AwcAOwOOAo0CBwAsAzwDPQMHACwDKwM8AwcAKwM+AzwDBwArAy4DPgMHAD0DPwNAAwcAPQM8Az8DBwA8A0EDPwMHADwDPgNBAwcAQgPqAkMDBwBCA+kC6gIHAEQD6QJCAwcARAPrAukCBwBFA+sCRAMHAEUDGwPrAgcARgMbA0UDBwBGAycDGwMHAEcDJwNGAwcARwMUAycDBwBIAxQDRwMHAEgDEgMUAwcASQNKA0sDBwBJA0wDSgMHAE0DTANOAwcATQNKA0wDBwBPA1ADUQMHAE8DUgNQAwcAUgNTA1ADBwBSA1QDUwMHAFUDUgNPAwcAVQNWA1IDBwBWA1QDUgMHAFYDVwNUAwcAWANWA1UDBwBYA1kDVgMHAFkDVwNWAwcAWQNaA1cDBwBbA1kDWAMHAFsDXANZAwcAXANaA1kDBwBcA10DWgMHAF4DXANbAwcAXgNfA1wDBwBfA10DXAMHAF8DYANdAwcAYQNfA14DBwBhA2IDXwMHAGIDYANfAwcAYgNjA2ADBwBkA2UDZgMHAGQDZwNlAwcAZwPqAmUDBwBnA0MD6gIHAGYDaANpAwcAZgNlA2gDBwBlA68CaAMHAGUD6gKvAgcAaQNqA2sDBwBpA2gDagMHAGgDrQJqAwcAaAOvAq0CBwBrA2wDbQMHAGsDagNsAwcAagOqAmwDBwBqA60CqgIHAG4DYANvAwcAbgNdA2ADBwBwA10DbgMHAHADWgNdAwcAcQNaA3ADBwBxA1cDWgMHAHIDVwNxAwcAcgNUA1cDBwBzA3QDdQMHAHMDdgN0AwcAdwN2A3MDBwB3A3gDdgMHAHkDeAN3AwcAeQPlAngDBwB6A+UCeQMHAHoD4gLlAgcAewPiAnoDBwB7A90C4gIHAHwD3QJ7AwcAfAPZAt0CBwB9A9kCfAMHAH0D1wLZAgcAbwNjA34DBwBvA2ADYwMHAH8DMgOAAwcAfwOBAzIDBwB/A6ICowIHAH8DgAOiAgcAtgKCA4MDBwC2AoQDggMHAIQDUwOCAwcAhAOFA1MDBwCEAzADhQMHAIQDhgMwAwcAhAOzAoYDBwCEA7YCswIHAIMDhwN0AwcAgwOCA4cDBwBUA4IDUwMHAFQDhwOCAwcAzgKIA4kDBwDOAs0CiAMHAE0DiQOIAwcATQNOA4kDBwCKA4sDjAMHAIoDjQOLAwcAigP1AvQCBwCKA4wD9QIHAIwDgQN/AwcAjAOLA4EDBwB/A/UCjAMHAH8DowL1AgcAhgMzA44DBwCGA7MCMwMHAIYDMQMwAwcAhgOOAzEDBwCOA6ICgAMHAI4DMwOiAgcAjgMyAzEDBwCOA4ADMgMHAHQDjwN1AwcAdAOHA48DBwByA4cDVAMHAHIDjwOHAwcAzgKQA4cCBwDOApEDkAMHAJEDkgOQAwcAkQOTA5IDBwCJA5EDzgIHAIkDlAORAwcAlAOTA5EDBwCUA5UDkwMHAE4DlAOJAwcATgOWA5QDBwCWA5UDlAMHAJYDlwOVAwcATAOWA04DBwBMA5gDlgMHAJgDlwOWAwcAmAOZA5cDBwBJA5gDTAMHAEkDmgOYAwcAmgOZA5gDBwCaA5sDmQMHAOwCnAPvAgcA7AKdA5wDBwCdA54DnAMHAJ0DnwOeAwcAyQKgA8wCBwDJAqEDoAMHAKEDogOgAwcAoQOjA6IDBwDFAqQDyAIHAMUCpQOkAwcApQOmA6QDBwClA6cDpgMHAJkChwKQAwcAmQKFAocCBwCeApADkgMHAJ4CmQKQAwcAkwKeApIDBwCTApYCngIHAKgDqQOqAwcAqAOrA6kDBwDnAqsD6AIHAOcCqQOrAwcArAOtA64DBwCsA68DrQMHAPcCrgP4AgcA9wKsA64DBwD3AqsDrAMHAPcC6AKrAwcAqwOvA6wDBwCrA6gDrwMHALADsQOyAwcAsAOzA7EDBwARA7MDEAMHABEDsQOzAwcAqgO0A7UDBwCqA6kDtAMHAOcCtAOpAwcA5wIeA7QDBwAeA7YDtAMHAB4DIgO2AwcAtQO2A7cDBwC1A7QDtgMHACIDswO2AwcAIgMQA7MDBwC3A7MDsAMHALcDtgOzAwcAuAO5A7oDBwC4A7sDuQMHALsDvAO5AwcAuwO9A7wDBwC+A7oDvwMHAL4DuAO6AwcAwAP4Aq4DBwDAA8ED+AIHAMED9gL4AgcAwQPCA/YCBwDCA/oC9gIHAMIDwwP6AgcAwwP8AvoCBwDDA8QD/AIHAMUDuwO4AwcAxQPGA7sDBwDGA70DuwMHAMYDxwO9AwcAyAO4A74DBwDIA8UDuAMHAMkDwQPAAwcAyQPKA8EDBwDKA8IDwQMHAMoDywPCAwcAywPDA8IDBwDLA8wDwwMHAMwDxAPDAwcAzAPNA8QDBwDOA88D0AMHAM4D0QPPAwcA0gPQA9MDBwDSA84D0AMHANQD0wPVAwcA1APSA9MDBwDWA40DigMHANYD1wONAwcA2AOKA/QCBwDYA9YDigMHANkD0QPOAwcA2QPaA9EDBwDbA84D0gMHANsD2QPOAwcA3APSA9QDBwDcA9sD0gMHAN0D1wPWAwcA3QPeA9cDBwDfA9YD2AMHAN8D3QPWAwcArQPgA64DBwCtA+ED4AMHAOID4QO8AwcA4gPgA+EDBwCuA+MDwAMHAK4D4APjAwcAvQPiA7wDBwC9A+QD4gMHAMAD5QPJAwcAwAPjA+UDBwDHA+QDvQMHAMcD5gPkAwcA1QPnA9QDBwDVA+gD5wMHANcD6AONAwcA1wPnA+gDBwDUA+kD3AMHANQD5wPpAwcA3gPnA9cDBwDeA+kD5wMHALoD6gO/AwcAugPrA+oDBwDrA88D6gMHAOsD0APPAwcAuQPrA7oDBwC5A+wD6wMHAOwD0APrAwcA7APTA9ADBwC8A+wDuQMHALwD7QPsAwcA7QPTA+wDBwDtA9UD0wMHAOED7QO8AwcA4QPuA+0DBwDuA9UD7QMHAO4D6APVAwcArQPuA+EDBwCtA+8D7gMHAO8D6APuAwcA7wONA+gDBwCvA+8DrQMHAK8D8APvAwcA8AONA+8DBwDwA4sDjQMHAKgD8AOvAwcAqAPxA/ADBwDxA4sD8AMHAPEDgQOLAwcAqgPxA6gDBwCqA/ID8QMHAPIDgQPxAwcA8gMyA4EDBwC1A/IDqgMHALUD8wPyAwcA8wMyA/IDBwDzAy8DMgMHALcD8wO1AwcAtwP0A/MDBwD0Ay8D8wMHAPQDLgMvAwcAsAP0A7cDBwCwA/UD9AMHAPUDLgP0AwcA9QM+Ay4DBwCyA/UDsAMHALID9gP1AwcA9gM+A/UDBwD2A0EDPgMHAPcDvgO/AwcA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ZgRyBHQEBwBmBGQEcgQHAGcEdAR1BAcAZwRmBHQEBwBzBGcEdQQHAHMEZQRnBAcAbQTtAu8CBwBtBGwE7QIHAO4CbwTsAgcA7gJuBG8EBwB2BHEEdwQHAHYEcARxBAcAcgTvApwDBwByBG0E7wIHAOwCcwSdAwcA7AJvBHMEBwB0BJwDngMHAHQEcgScAwcAdQSeA58DBwB1BHQEngMHAJ0DdQSfAwcAnQNzBHUEBwCIA3gETQMHAIgDeQR4BAcAeQRyA3gEBwB5BI8DcgMHAM0CeQSIAwcAzQJ6BHkEBwB6BI8DeQQHAHoEdQOPAwcAhAJ6BM0CBwCEAnsEegQHAHsEdQN6BAcAewRzA3UDBwCGAnsEhAIHAIYCfAR7BAcAfARzA3sEBwB8BHcDcwMHAJgCfASGAgcAmAJ9BHwEBwB9BHcDfAQHAH0EeQN3AwcAnwJ9BJgCBwCfAn4EfQQHAH4EeQN9BAcAfgR6A3kDBwCXAn4EnwIHAJcCfwR+BAcAfwR6A34EBwB/BHsDegMHAJUCfwSXAgcAlQKABH8EBwCABHsDfwQHAIAEfAN7AwcAkgKABJUCBwCSAoEEgAQHAIEEfAOABAcAgQR9A3wDBwBNA4IESgMHAE0DeASCBAcAeARxA4IEBwB4BHIDcQMHAEoDgwRLAwcASgOCBIMEBwCCBHADgwQHAIIEcQNwAwcASwOEBFwEBwBLA4MEhAQHAIMEYASEBAcAgwRwA2AEBwBcBIUEbAQHAFwEhASFBAcAhARwBIUEBwCEBGAEcAQHAGwEhgTtAgcAbASFBIYEBwCFBHYEhgQHAIUEcAR2BAcA7QKHBO4CBwDtAoYEhwQHAIYEdwSHBAcAhgR2BHcEBwDuAogEbgQHAO4ChwSIBAcAhwRxBIgEBwCHBHcEcQQHAG4EiQReBAcAbgSIBIkEBwCIBGEEiQQHAIgEcQRhBAcAXgSKBMoCBwBeBIkEigQHAIkEbgOKBAcAiQRhBG4DBwDKAosEywIHAMoCigSLBAcAigRvA4sEBwCKBG4DbwMHAMsCjARaBAcAywKLBIwEBwCLBGIEjAQHAIsEbwNiBAcAxgKNBMcCBwDGAo4EjQQHAI4EjwSNBAcAjgSQBI8EBwBbBJEEkgQHAFsEWgSRBAcAaASSBJMEBwBoBFsEkgQHAGkEkwSUBAcAaQRoBJMEBwBrBJQE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DgUHAP4EDQX8BAcA/gQPBQ0FBwD9BBAFCwUHAP0EDgUQBQcA/wQPBf4EBwD/BBEFDwUHAAAFEQX/BAcAAAUSBREFBwABBRIFAAUHAAEFEwUSBQcAAgUTBQEFBwACBRQFEwUHAAMFFAUCBQcAAwUVBRQFBwAEBRUFAwUHAAQFFgUVBQcABQUWBQQFBwAFBRcFFgUHAAYFFwUFBQcABgUYBRcFBwAHBRgFBgUHAAcFGQUYBQcACAUZBQcFBwAIBRoFGQUHAAkFGgUIBQcACQUbBRoFBwAKBRsFCQUHAAoFHAUbBQcAHQUcBQoFBwAdBR4FHAUHAB8FHgUdBQcAHwUgBR4FBwALBSAFHwUHAAsFEAUgBQcAIQVDBEIEBwAhBSIFQwQHACMFQgREBAcAIwUhBUIEBwAiBUUEQwQHACIFJAVFBAcAJQVEBEcEBwAlBSMFRAQHACQFRgRFBAcAJAUmBUYEBwAmBUcERgQHACYFJQVHBAcAJwUiBSEFBwAnBSgFIgUHACkFIQUjBQcAKQUnBSEFBwAoBSQFIgUHACgFKgUkBQcAKwUjBSUFBwArBSkFIwUHACoFJgUkBQcAKgUsBSYFBwAsBSUFJgUHACwFKwUlBQcALQUoBScFBwAtBS4FKAUHAC8FJwUpBQcALwUtBScFBwAuBSoFKAUHAC4FMAUqBQcAMQUpBSsFBwAxBS8FKQUHADAFLAUqBQcAMAUyBSwFBwAyBSsFLAUHADIFMQUrBQcAMwUuBS0FBwAzBTQFLgUHADUFLQUvBQcANQUzBS0FBwA0BTAFLgUHADQFNgUwBQcANwUvBTEFBwA3BTUFLwUHADYFMgUwBQcANgU4BTIFBwA4BTEFMgUHADgFNwUxBQcAOQU0BTMFBwA5BToFNAUHADsFMwU1BQcAOwU5BTMFBwA6BTYFNAUHADoFPAU2BQcAPQU1BTcFBwA9BTsFNQUHADwFOAU2BQcAPAU+BTgFBwA+BTcFOAUHAD4FPQU3BQcAPwVABUEFBwA/BUIFQAUHAEMFQgU/BQcAQwVEBUIFBwBFBUQFQwUHAEUFRgVEBQcARwVEBUYFBwBHBUgFRAUHAEgFQgVEBQcASAVJBUIFBwBJBUAFQgUHAEkFSgVABQcASwVMBU0FBwBLBU4FTAUHAE8FUAVRBQcATwVSBVAFBwBTBVEFVAUHAFMFTwVRBQcAQAVVBUEFBwBABVYFVQUHAFUFPwVBBQcAVQVXBT8FBwBXBUMFPwUHAFcFWAVDBQcAWQVGBUUFBwBZBVoFRgUHAFgFRQVDBQcAWAVZBUUFBwBHBVsFSAUHAEcFXAVbBQcARgVcBUcFBwBGBVoFXAUHAEgFXQVJBQcASAVbBV0FBwBeBUAFSgUHAF4FVgVABQcASQVeBUoFBwBJBV0FXgUHAE0FXwVQBQcATQVgBV8FBwBOBWEFTAUHAE4FYgVhBQcAYwVOBUsFBwBjBWIFTgUHAFAFZAVRBQcAUAVfBWQFBwBlBVIFTwUHAGUFZgVSBQcAUQVnBVQFBwBRBWQFZwUHAGgFTwVTBQcAaAVlBU8FBwBnBVMFVAUHAGcFaAVTBQcAaQVqBWsFBwBpBWwFagUHAGsFbQVuBQcAawVqBW0FBwBuBW8FcAUHAG4FbQVvBQcAcAVxBXIFBwBwBW8FcQUHAHEFcwVyBQcAcQV0BXMFBwB1BXYFdwUHAHUFeAV2BQcAeQV4BXUFBwB5BXoFeAUHAHsFegV5BQcAewV8BXoFBwB9BXwFewUHAH0FfgV8BQcAfwV+BX0FBwB/BYAFfgUHAHgFgQV2BQcAeAWCBYEFBwCDBXgFegUHAIMFggV4BQcAhAV6BXwFBwCEBYMFegUHAIUFfAV+BQcAhQWEBXwFBwCABYUFfgUHAIAFhgWFBQcAggWHBYEFBwCCBYgFhwUHAGwFiAVqBQcAbAWHBYgFBwCDBYgFggUHAIMFiQWIBQcAagWJBW0FBwBqBYgFiQUHAIQFiQWDBQcAhAWKBYkFBwBtBYoFbwUHAG0FiQWKBQcAhQWKBYQFBwCFBYsFigUHAG8FiwVxBQcAbwWKBYsFBwCGBYsFhQUHAIYFjAWLBQcAcQWMBXQFBwBxBYsFjAUHAI0FbAVpBQcAjQWOBWwFBwCPBWkFawUHAI8FjQVpBQcAkAVrBW4FBwCQBY8FawUHAJEFbgVwBQcAkQWQBW4FBwCSBXAFcgUHAJIFkQVwBQcAkwVyBXMFBwCTBZIFcgUHAJQFdwV2BQcAlAWVBXcFBwB3BZYFdQUHAHcFlQWWBQcAdQWXBXkFBwB1BZYFlwUHAHkFmAV7BQcAeQWXBZgFBwB7BZkFfQUHAHsFmAWZBQcAfQWaBX8FBwB9BZkFmgUHAJsFdgWBBQcAmwWUBXYFBwCcBYEFhwUHAJwFmwWBBQcAjgWHBWwFBwCOBZwFhwUHAJ0FngWfBQcAnQWgBZ4FBwChBZ8FogUHAKEFnQWfBQcAowWiBaQFBwCjBaEFogUHAKUFpAWmBQcApQWjBaQFBwBzBaUFpgUHAHMFdAWlBQcApwWoBakFBwCnBaoFqAUHAKoFqwWoBQcAqgWsBasFBwCsBa0FqwUHAKwFrgWtBQcArgWvBa0FBwCuBbAFrwUHALAFfwWvBQcAsAWABX8FBwCxBaoFpwUHALEFsgWqBQcAqgWzBawFBwCqBbIFswUHAKwFtAWuBQcArAWzBbQFBwCuBbUFsAUHAK4FtAW1BQcAtQWABbAFBwC1BYYFgAUHALYFsgWxBQcAtgW3BbIFBwC3BaAFnQUHALcFtgWgBQcAtwWzBbIFBwC3BbgFswUHALgFnQWhBQcAuAW3BZ0FBwC4BbQFswUHALgFuQW0BQcAuQWhBaMFBwC5BbgFoQUHALkFtQW0BQcAuQW6BbUFBwC6BaMFpQUHALoFuQWjBQcAugWGBbUFBwC6BYwFhgUHAIwFpQV0BQcAjAW6BaUFBwCgBbsFngUHAKAFvAW7BQcAngW9BZ8FBwCeBbsFvQUHAJ8FvgWiBQcAnwW9Bb4FBwCiBb8FpAUHAKIFvgW/BQcApAXABaYFBwCkBb8FwAUHAKYFkwVzBQcApgXABZMFBwCpBcEFpwUHAKkFwgXBBQcAwwWpBagFBwDDBcIFqQUHAMQFqAWrBQcAxAXDBagFBwDFBasFrQUHAMUFxAWrBQcAxgWtBa8FBwDGBcUFrQUHAJoFrwV/BQcAmgXGBa8FBwCnBccFsQUHAKcFwQXHBQcAsQXIBbYFBwCxBccFyAUHALYFvAWgBQcAtgXIBbwFBwDJBcoFywUHAMkFzAXKBQcAzQXOBc8FBwDNBdAFzgUHAMkF0QXMBQcAyQXSBdEFBwDQBdMFzgUHANAF1AXTBQcA0gXVBdEFBwDSBdYF1QUHANQF1wXTBQcA1AXYBdcFBwDWBdkF1QUHANYF2gXZBQcA2wXaBdwFBwDbBdkF2gUHANgF3QXXBQcA2AXeBd0FBwDfBd4F4AUHAN8F3QXeBQcAzwXhBc0FBwDPBeIF4QUHAOMFzwXOBQcA4wXiBc8FBwDkBc4F0wUHAOQF4wXOBQcA5QXTBdcFBwDlBeQF0wUHAOYF1wXdBQcA5gXlBdcFBwDfBeYF3QUHAN8F5wXmBQcAygXoBcsFBwDKBekF6AUHAMsF6gXJBQcAywXoBeoFBwDJBesF0gUHAMkF6gXrBQcA0gXsBdYFBwDSBesF7AUHANYF7QXaBQcA1gXsBe0FBwDaBe4F3AUHANoF7QXuBQcA6QXvBegFBwDpBfAF7wUHAOgF8QXqBQcA6AXvBfEFBwDqBfIF6wUHAOoF8QXyBQcA6wXzBewFBwDrBfIF8wUHAOwF9AXtBQcA7AXzBfQFBwD0Be4F7QUHAPQF9QXuBQcA8AX2Be8FBwDwBfcF9gUHAOIF9wXhBQcA4gX2BfcFBwDvBfgF8QUHAO8F9gX4BQcA4wX2BeIFBwDjBfgF9gUHAPEF+QXyBQcA8QX4BfkFBwDkBfgF4wUHAOQF+QX4BQcA8gX6BfMFBwDyBfkF+gUHAOUF+QXkBQcA5QX6BfkFBwDzBfsF9AUHAPMF+gX7BQcA5gX6BeUFBwDmBfsF+gUHAPQF/AX1BQcA9AX7BfwFBwDnBfsF5gUHAOcF/AX7BQcAzQX9Bf4FBwDNBeEF/QUHANAF/gX/BQcA0AXNBf4FBwDUBf8FAAYHANQF0AX/BQcA2AUABgEGBwDYBdQFAAYHAN4FAQYCBgcA3gXYBQEGBwDgBQIGAwYHAOAF3gUCBgcA6QUEBgUGBwDpBcoFBAYHAAQGzAUGBgcABAbKBcwFBwAGBtEFBwYHAAYGzAXRBQcABwbVBQgGBwAHBtEF1QUHAAgG2QUJBgcACAbVBdkFBwAJBtsFCgYHAAkG2QXbBQcA8AUFBgsGBwDwBekFBQYHAPcFCwYMBgcA9wXwBQsGBwDhBQwG/QUHAOEF9wUMBgcA/gUNBg4GBwD+Bf0FDQYHAP8FDgYPBgcA/wX+BQ4GBwAABg8GEAYHAAAG/wUPBgcAAQYQBhEGBwABBgAGEAYHAAIGEQYSBgcAAgYBBhEGBwADBhIGEwYHAAMGAgYSBgcABQYUBhUGBwAFBgQGFAYHABQGBgYWBgcAFAYEBgYGBwAWBgcGFwYHABYGBgYHBgcAFwYIBhgGBwAXBgcGCAYHABgGCQYZBgcAGAYIBgkGBwAZBgoGGgYHABkGCQYKBgcACwYVBhsGBwALBgUGFQYHAAwGGwYcBgcADAYLBhsGBwD9BRwGDQYHAP0FDAYcBgcADgYdBh4GBwAOBg0GHQYHAA8GHgYfBgcADwYOBh4GBwAQBh8GIAYHABAGDwYfBgcAEQYgBiEGBwARBhAGIAYHABIGIQYiBgcAEgYRBiEGBwATBiIGIwYHABMGEgYiBgcAFQYkBiUGBwAVBhQGJAYHACQGFgYmBgcAJAYUBhYGBwAmBhcGJwYHACYGFgYXBgcAJwYYBigGBwAnBhcGGAYHACgGGQYpBgcAKAYYBhkGBwApBhoGKgYHACkGGQYaBgcAGwYlBisGBwAbBhUGJQYHABwGKwYsBgcAHAYbBisGBwANBiwGHQYHAA0GHAYsBgcAHgYtBi4GBwAeBh0GLQYHAB8GLgYvBgcAHwYeBi4GBwAgBi8GMAYHACAGHwYvBgcAIQYwBjEGBwAhBiAGMAYHACIGMQYyBgcAIgYhBjEGBwAjBjIGMwYHACMGIgYyBgcAJQY0BjUGBwAlBiQGNAYHADQGJgY2BgcANAYkBiYGBwA2BicGNwYHADYGJgYnBgcANwYoBjgGBwA3BicGKAYHADgGKQY5BgcAOAYoBikGBwA5BioGOgYHADkGKQYqBgcAKwY1BjsGBwArBiUGNQYHACwGOwY8BgcALAYrBjsGBwAdBjwGLQYHAB0GLAY8BgcALgY9Bj4GBwAuBi0GPQYHAC8GPgY/BgcALwYuBj4GBwAwBj8GQAYHADAGLwY/BgcAMQZABkEGBwAxBjAGQAYHADIGQQZCBgcAMgYxBkEGBwAzBkIGQwYHADMGMgZCBgcANQZEBkUGBwA1BjQGRAYHAEQGNgZGBgcARAY0BjYGBwBGBjcGRwYHAEYGNgY3BgcARwY4BkgGBwBHBjcGOAYHAEgGOQZJBgcASAY4BjkGBwBJBjoGSgYHAEkGOQY6BgcAOwZFBksGBwA7BjUGRQYHADwGSwZMBgcAPAY7BksGBwAtBkwGPQYHAC0GPAZMBgcATQZOBk8GBwBNBlAGTgYHAFEGUgZTBgcAUQZUBlIGBwBVBk4GUAYHAFUGVgZOBgcAVwZUBlEGBwBXBlgGVAYHAFkGVgZVBgcAWQZaBlYGBwBbBlgGVwYHAFsGXAZYBgcAXQZaBlkGBwBdBl4GWgYHAF4G2wXcBQcAXgZdBtsFBwBfBlwGWwYHAF8GYAZcBgcAYAbfBeAFBwBgBl8G3wUHAGEGUwZSBgcAYQZiBlMGBwBTBmMGUQYHAFMGYgZjBgcAUQZkBlcGBwBRBmMGZAYHAFcGZQZbBgcAVwZkBmUGBwBbBmYGXwYHAFsGZQZmBgcAZgbfBV8GBwBmBucF3wUHAGcGTQZPBgcAZwZoBk0GBwBpBk8GTgYHAGkGZwZPBgcAagZOBlYGBwBqBmkGTgYHAGsGVgZaBgcAawZqBlYGBwBsBloGXgYHAGwGawZaBgcA7gVeBtwFBwDuBWwGXgYHAG0GaAZnBgcAbQZuBmgGBwBvBmcGaQYHAG8GbQZnBgcAcAZpBmoGBwBwBm8GaQYHAHEGagZrBgcAcQZwBmoGBwByBmsGbAYHAHIGcQZrBgcA7gVyBmwGBwDuBfUFcgYHAHMGbgZtBgcAcwZ0Bm4GBwB0BmIGYQYHAHQGcwZiBgcAdQZtBm8GBwB1BnMGbQYHAHMGYwZiBgcAcwZ1BmMGBwB2Bm8GcAYHAHYGdQZvBgcAdQZkBmMGBwB1BnYGZAYHAHcGcAZxBgcAdwZ2BnAGBwB2BmUGZAYHAHYGdwZlBgcAeAZxBnIGBwB4BncGcQYHAHcGZgZlBgcAdwZ4BmYGBwD8BXIG9QUHAPwFeAZyBgcAeAbnBWYGBwB4BvwF5wUHAHkGUgZ6BgcAeQZhBlIGBwB6BlQGewYHAHoGUgZUBgcAewZYBnwGBwB7BlQGWAYHAHwGXAZ9BgcAfAZYBlwGBwB9BmAGfgYHAH0GXAZgBgcAfgbgBQMGBwB+BmAG4AUHAH8GaAaABgcAfwZNBmgGBwBQBn8GgQYHAFAGTQZ/BgcAVQaBBoIGBwBVBlAGgQYHAFkGggaDBgcAWQZVBoIGBwBdBoMGhAYHAF0GWQaDBgcA2wWEBgoGBwDbBV0GhAYHAIAGbgaFBgcAgAZoBm4GBwCFBnQGhgYHAIUGbgZ0BgcAhgZhBnkGBwCGBnQGYQYHAIcGegaIBgcAhwZ5BnoGBwCIBnsGiQYHAIgGegZ7BgcAiQZ8BooGBwCJBnsGfAYHAIoGfQaLBgcAigZ8Bn0GBwCLBn4GjAYHAIsGfQZ+BgcAjAYDBhMGBwCMBn4GAwYHAI0GgAaOBgcAjQZ/BoAGBwCBBo0GjwYHAIEGfwaNBgcAggaPBpAGBwCCBoEGjwYHAIMGkAaRBgcAgwaCBpAGBwCEBpEGkgYHAIQGgwaRBgcACgaSBhoGBwAKBoQGkgYHAI4GhQaTBgcAjgaABoUGBwCTBoYGlAYHAJMGhQaGBgcAlAZ5BocGBwCUBoYGeQYHAJUGiAaWBgcAlQaHBogGBwCWBokGlwYHAJYGiAaJBgcAlwaKBpgGBwCXBokGigYHAJgGiwaZBgcAmAaKBosGBwCZBowGmgYHAJkGiwaMBgcAmgYTBiMGBwCaBowGEwYHAJsGjgacBgcAmwaNBo4GBwCPBpsGnQYHAI8GjQabBgcAkAadBp4GBwCQBo8GnQYHAJEGngafBgcAkQaQBp4GBwCSBp8GoAYHAJIGkQafBgcAGgagBioGBwAaBpIGoAYHAJwGkwahBgcAnAaOBpMGBwChBpQGogYHAKEGkwaUBgcAogaHBpUGBwCiBpQGhwYHAKMGlgakBgcAowaVBpYGBwCkBpcGpQYHAKQGlgaXBgcApQaYBqYGBwClBpcGmAYHAKYGmQanBgcApgaYBpkGBwCnBpoGqAYHAKcGmQaaBgcAqAYjBjMGBwCoBpoGIwYHAKkGnAaqBgcAqQabBpwGBwCdBqkGqwYHAJ0GmwapBgcAngarBqwGBwCeBp0GqwYHAJ8GrAatBgcAnwaeBqwGBwCgBq0GrgYHAKAGnwatBgcAKgauBjoGBwAqBqAGrgYHAKoGoQavBgcAqgacBqEGBwCvBqIGsAYHAK8GoQaiBgcAsAaVBqMGBwCwBqIGlQYHALEGpAayBgcAsQajBqQGBwCyBqUGswYHALIGpAalBgcAswamBrQGBwCzBqUGpgYHALQGpwa1BgcAtAamBqcGBwC1BqgGtgYHALUGpwaoBgcAtgYzBkMGBwC2BqgGMwYHALcGqga4BgcAtwapBqoGBwCrBrcGuQYHAKsGqQa3BgcArAa5BroGBwCsBqsGuQYHAK0Guga7BgcArQasBroGBwCuBrsGvAYHAK4GrQa7BgcAOga8BkoGBwA6Bq4GvAYHALgGrwa9BgcAuAaqBq8GBwC9BrAGvgYHAL0GrwawBgcAvgajBrEGBwC+BrAGowYHAL8GwAbBBgcAvwbCBsAGBwDDBsIGvwYHAMMGxAbCBgcAxQbGBscGBwDFBsgGxgYHAMkGyAbFBgcAyQbKBsgGBwDLBsoGyQYHAMsGzAbKBgcAzQbMBssGBwDNBs4GzAYHAM8G0AbRBgcAzwbSBtAGBwDRBtMG1AYHANEG0AbTBgcA1AbVBtYGBwDUBtMG1QYHANYG1wbYBgcA1gbVBtcGBwDYBtkG2gYHANgG1wbZBgcA2gbbBtwGBwDaBtkG2wYHANwG3QbeBgcA3AbbBt0GBwDeBt8G4AYHAN4G3QbfBgcA4AbhBuIGBwDgBt8G4QYHAOEG4wbiBgcA4QbkBuMGBwDkBuUG4wYHAOQG5gblBgcA5gbnBuUGBwDmBugG5wYHAOgG6QbnBgcA6AbqBukGBwDqBusG6QYHAOoG7AbrBgcA7AbtBusGBwDsBu4G7QYHAO4G7wbtBgcA7gbwBu8GBwDwBvEG7wYHAPAG8gbxBgcA8gbzBvEGBwDyBvQG8wYHAPQG9QbzBgcA9Ab2BvUGBwD2BvcG9QYHAPYG+Ab3BgcA+Ab5BvcGBwD4BvoG+QYHAPoG+wb5BgcA+gb8BvsGBwD8Bv0G+wYHAPwG/gb9BgcA/gb/Bv0GBwD+BgAH/wYHAAAHAQf/BgcAAAcCBwEHBwABBwMHBAcHAAEHAgcDBwcABAcFBwYHBwAEBwMHBQcHAAYHBwcIBwcABgcFBwcHBwAIBwkHCgcHAAgHBwcJBwcACgcLBwwHBwAKBwkHCwcHAAwHDQcOBwcADAcLBw0HBwAOB9IGzwYHAA4HDQfSBgcA0gYPB9AGBwDSBhAHDwcHANAGEQfTBgcA0AYPBxEHBwDTBhIH1QYHANMGEQcSBwcA1QYTB9cGBwDVBhIHEwcHANcGFAfZBgcA1wYTBxQHBwDZBhUH2wYHANkGFAcVBwcA2wYWB90GBwDbBhUHFgcHAN0GFwffBgcA3QYWBxcHBwDfBhgH4QYHAN8GFwcYBwcAGAfkBuEGBwAYBxkH5AYHABkH5gbkBgcAGQcaB+YGBwAaB+gG5gYHABoHGwfoBgcAGwfqBugGBwAbBxwH6gYHABwH7AbqBgcAHAcdB+wGBwAdB+4G7AYHAB0HHgfuBgcAHgfwBu4GBwAeBx8H8AYHAB8H8gbwBgcAHwcgB/IGBwAgB/QG8gYHACAHIQf0BgcAIQf2BvQGBwAhByIH9gYHACIH+Ab2BgcAIgcjB/gGBwAjB/oG+AYHACMHJAf6BgcAJAf8BvoGBwAkByUH/AYHACUH/gb8BgcAJQcmB/4GBwAmBwAH/gYHACYHJwcABwcAJwcCBwAHBwAnBygHAgcHAAIHKQcDBwcAAgcoBykHBwADByoHBQcHAAMHKQcqBwcABQcrBwcHBwAFByoHKwcHAAcHLAcJBwcABwcrBywHBwAJBy0HCwcHAAkHLActBwcACwcuBw0HBwALBy0HLgcHAA0HEAfSBgcADQcuBxAHBwAQBy8HDwcHABAHMAcvBwcADwcxBxEHBwAPBy8HMQcHABEHMgcSBwcAEQcxBzIHBwASBzMHEwcHABIHMgczBwcAEwc0BxQHBwATBzMHNAcHABQHNQcVBwcAFAc0BzUHBwAVBzYHFgcHABUHNQc2BwcAFgc3BxcHBwAWBzYHNwcHABcHOAcYBwcAFwc3BzgHBwA4BxkHGAcHADgHOQcZBwcAOQcaBxkHBwA5BzoHGgcHADoHGwcaBwcAOgc7BxsHBwA7BxwHGwcHADsHPAccBwcAPAcdBxwHBwA8Bz0HHQcHAD0HHgcdBwcAPQc+Bx4HBwA+Bx8HHgcHAD4HPwcfBwcAPwcgBx8HBwA/B0AHIAcHAEEHIAdABwcAQQchByAHBwBCByEHQQcHAEIHIgchBwcAQwciB0IHBwBDByMHIgcHAEQHIwdDBwcARAckByMHBwBFByQHRAcHAEUHJQckBwcARgclB0UHBwBGByYHJQcHAEcHJgdGBwcARwcnByYHBwBIBycHRwcHAEgHKAcnBwcAKQdIB0kHBwApBygHSAcHACoHSQdKBwcAKgcpB0kHBwArB0oHSwcHACsHKgdKBwcALAdLB0wHBwAsBysHSwcHAC0HTAdNBwcALQcsB0wHBwAuB00HTgcHAC4HLQdNBwcAEAdOBzAHBwAQBy4HTgcHAC8HTwdQBwcALwcwB08HBwAxB1AHUQcHADEHLwdQBwcAMgdRB1IHBwAyBzEHUQcHADMHUgdTBwcAMwcyB1IHBwA0B1MHVAcHADQHMwdTBwcANQdUB1UHBwA1BzQHVAcHADYHVQdWBwcANgc1B1UHBwA3B1YHVwcHADcHNgdWBwcAOAdXB1gHBwA4BzcHVwcHAFkHOAdYBwcAWQc5BzgHBwBaBzkHWQcHAFoHOgc5BwcAWwc6B1oHBwBbBzsHOgcHAFwHOwdbBwcAXAc8BzsHBwBdBzwHXAcHAF0HPQc8BwcAXgc9B10HBwBeBz4HPQcHAF8HPgdeBwcAXwc/Bz4HBwBgBz8HXwcHAGAHQAc/BwcAYQdAB2AHBwBhB0EHQAcHAGIHQQdhBwcAYgdCB0EHBwBjB0IHYgcHAGMHQwdCBwcAZAdDB2MHBwBkB0QHQwcHAGUHRAdkBwcAZQdFB0QHBwBmB0UHZQcHAGYHRgdFBwcAZwdGB2YHBwBnB0cHRgcHAGgHRwdnBwcAaAdIB0cHBwBJB2gHaQcHAEkHSAdoBwcASgdpB2oHBwBKB0kHaQcHAEsHagdrBwcASwdKB2oHBwBMB2sHbAcHAEwHSwdrBwcATQdsB20HBwBNB0wHbAcHAE4HbQduBwcATgdNB20HBwAwB24HTwcHADAHTgduBwcAUAdvB3AHBwBQB08HbwcHAFEHcAdxBwcAUQdQB3AHBwBSB3EHcgcHAFIHUQdxBwcAUwdyB3MHBwBTB1IHcgcHAFQHcwd0BwcAVAdTB3MHBwBVB3QHdQcHAFUHVAd0BwcAVgd1B3YHBwBWB1UHdQcHAFcHdgd3BwcAVwdWB3YHBwBYB3cHeAcHAFgHVwd3BwcAeQdYB3gHBwB5B1kHWAcHAHoHWQd5BwcAegdaB1kHBwB7B1oHegcHAHsHWwdaBwcAfAdbB3sHBwB8B1wHWwcHAH0HXAd8BwcAfQddB1wHBwB+B10HfQcHAH4HXgddBwcAfwdeB34HBwB/B18HXgcHAIAHXwd/BwcAgAdgB18HBwCBB2AHgAcHAIEHYQdgBwcAggdhB4EHBwCCB2IHYQcHAIMHYgeCBwcAgwdjB2IHBwCEB2MHgwcHAIQHZAdjBwcAhQdkB4QHBwCFB2UHZAcHAIYHZQeFBwcAhgdmB2UHBwCHB2YHhgcHAIcHZwdmBwcAiAdnB4cHBwCIB2gHZwcHAGkHiAeJBwcAaQdoB4gHBwBqB4kHigcHAGoHaQeJBwcAaweKB4sHBwBrB2oHigcHAGwHiweMBwcAbAdrB4sHBwBtB4wHjQcHAG0HbAeMBwcAbgeNB44HBwBuB20HjQcHAE8HjgdvBwcATwduB44HBwCPB5AHkQcHAI8HkgeQBwcAkQeTB5QHBwCRB5AHkwcHAJQHlQeWBwcAlAeTB5UHBwCWB5cHmAcHAJYHlQeXBwcAmAeZB5oHBwCYB5cHmQcHAJoHmwecBwcAmgeZB5sHBwCcB50HngcHAJwHmwedBwcAngefB6AHBwCeB50HnwcHAKAHoQeiBwcAoAefB6EHBwChB6MHogcHAKEHpAejBwcApAelB6MHBwCkB6YHpQcHAKYHpwelBwcApgeoB6cHBwCoB6kHpwcHAKgHqgepBwcAqgerB6kHBwCqB6wHqwcHAKwHrQerBwcArAeuB60HBwCuB68HrQcHAK4HsAevBwcAsAexB68HBwCwB7IHsQcHALIHswexBwcAsge0B7MHBwC0B7UHswcHALQHtge1BwcAtge3B7UHBwC2B7gHtwcHALgHuQe3BwcAuAe6B7kHBwC6B7sHuQcHALoHvAe7BwcAvAe9B7sHBwC8B74HvQcHAL4Hvwe9BwcAvgfAB78HBwDAB8EHvwcHAMAHwgfBBwcAwQfDB8QHBwDBB8IHwwcHAMQHxQfGBwcAxAfDB8UHBwDGB8cHyAcHAMYHxQfHBwcAyAfJB8oHBwDIB8cHyQcHAMoHywfMBwcAygfJB8sHBwDMB80HzgcHAMwHywfNBwcAzgeSB48HBwDOB80HkgcHAJIHzweQBwcAkgfQB88HBwCQB9EHkwcHAJAHzwfRBwcAkwfSB5UHBwCTB9EH0gcHAJUH0weXBwcAlQfSB9MHBwCXB9QHmQcHAJcH0wfUBwcAmQfVB5sHBwCZB9QH1QcHAJsH1gedBwcAmwfVB9YHBwCdB9cHnwcHAJ0H1gfXBwcAnwfYB6EHBwCfB9cH2AcHANgHpAehBwcA2AfZB6QHBwDZB6YHpAcHANkH2gemBwcA2geoB6YHBwDaB9sHqAcHANsHqgeoBwcA2wfcB6oHBwDcB6wHqgcHANwH3QesBwcA3QeuB6wHBwDdB94HrgcHAN4HsAeuBwcA3gffB7AHBwDfB7IHsAcHAN8H4AeyBwcA4Ae0B7IHBwDgB+EHtAcHAOEHtge0BwcA4QfiB7YHBwDiB7gHtgcHAOIH4we4BwcA4we6B7gHBwDjB+QHugcHAOQHvAe6BwcA5AflB7wHBwDlB74HvAcHAOUH5ge+BwcA5gfAB74HBwDmB+cHwAcHAOcHwgfABwcA5wfoB8IHBwDCB+kHwwcHAMIH6AfpBwcAwwfqB8UHBwDDB+kH6gcHAMUH6wfHBwcAxQfqB+sHBwDHB+wHyQcHAMcH6wfsBwcAyQftB8sHBwDJB+wH7QcHAMsH7gfNBwcAywftB+4HBwDNB9AHkgcHAM0H7gfQBwcA0AfvB88HBwDQB/AH7wcHAM8H8QfRBwcAzwfvB/EHBwDRB/IH0gcHANEH8QfyBwcA0gfzB9MHBwDSB/IH8wcHANMH9AfUBwcA0wfzB/QHBwDUB/UH1QcHANQH9Af1BwcA1Qf2B9YHBwDVB/UH9gcHANYH9wfXBwcA1gf2B/cHBwDXB/gH2AcHANcH9wf4BwcA+AfZB9gHBwD4B/kH2QcHAPkH2gfZBwcA+Qf6B9oHBwD6B9sH2gcHAPoH+wfbBwcA+wfcB9sHBwD7B/wH3AcHAPwH3QfcBwcA/Af9B90HBwD9B94H3QcHAP0H/gfeBwcA/gffB94HBwD+B/8H3wcHAP8H4AffBwcA/wcACOAHBwABCOAHAAgHAAEI4QfgBwcAAgjhBwEIBwACCOIH4QcHAAMI4gcCCAcAAwjjB+IHBwAECOMHAwgHAAQI5AfjBwcABQjkBwQIBwAFCOUH5AcHAAYI5QcFCAcABgjmB+UHBwAHCOYHBggHAAcI5wfmBwcACAjnBwcIBwAICOgH5wcHAOkHCAgJCAcA6QfoBwgIBwDqBwkICggHAOoH6QcJCAcA6wcKCAsIBwDrB+oHCggHAOwHCwgMCAcA7AfrBwsIBwDtBwwIDQgHAO0H7AcMCAcA7gcNCA4IBwDuB+0HDQgHANAHDgjwBwcA0AfuBw4IBwDvBw8IEAgHAO8H8AcPCAcA8QcQCBEIBwDxB+8HEAgHAPIHEQgSCAcA8gfxBxEIBwDzBxIIEwgHAPMH8gcSCAcA9AcTCBQIBwD0B/MHEwgHAPUHFAgVCAcA9Qf0BxQIBwD2BxUIFggHAPYH9QcVCAcA9wcWCBcIBwD3B/YHFggHAPgHFwgYCAcA+Af3BxcIBwAZCPgHGAgHABkI+Qf4BwcAGgj5BxkIBwAaCPoH+QcHABsI+gcaCAcAGwj7B/oHBwAcCPsHGwgHABwI/Af7BwcAHQj8BxwIBwAdCP0H/AcHAB4I/QcdCAcAHgj+B/0HBwAfCP4HHggHAB8I/wf+BwcAIAj/Bx8IBwAgCAAI/wcHACEIAAggCAcAIQgBCAAIBwAiCAEIIQgHACIIAggBCAcAIwgCCCIIBwAjCAMIAggHACQIAwgjCAcAJAgECAMIBwAlCAQIJAgHACUIBQgECAcAJggFCCUIBwAmCAYIBQgHACcIBggmCAcAJwgHCAYIBwAoCAcIJwgHACgICAgHCAcACQgoCCkIBwAJCAgIKAgHAAoIKQgqCAcACggJCCkIBwALCCoIKwgHAAsICggqCAcADAgrCCwIBwAMCAsIKwgHAA0ILAgtCAcADQgMCCwIBwAOCC0ILggHAA4IDQgtCAcA8AcuCA8IBwDwBw4ILggHABAILwgwCAcAEAgPCC8IBwARCDAIMQgHABEIEAgwCAcAEggxCDIIBwASCBEIMQgHABMIMggzCAcAEwgSCDIIBwAUCDMINAgHABQIEwgzCAcAFQg0CDUIBwAVCBQINAgHABYINQg2CAcAFggVCDUIBwAXCDYINwgHABcIFgg2CAcAGAg3CDgIBwAYCBcINwgHADkIGAg4CAcAOQgZCBgIBwA6CBkIOQgHADoIGggZCAcAOwgaCDoIBwA7CBsIGggHADwIGwg7CAcAPAgcCBsIBwA9CBwIPAgHAD0IHQgcCAcAPggdCD0IBwA+CB4IHQgHAD8IHgg+CAcAPwgfCB4IBwBACB8IPwgHAEAIIAgfCAcAQQggCEAIBwBBCCEIIAgHAEIIIQhBCAcAQggiCCEIBwBDCCIIQggHAEMIIwgiCAcARAgjCEMIBwBECCQIIwgHAEUIJAhECAcARQglCCQIBwBGCCUIRQgHAEYIJgglCAcARwgmCEYIBwBHCCcIJggHAEgIJwhHCAcASAgoCCcIBwApCEgISQgHACkIKAhICAcAKghJCEoIBwAqCCkISQgHACsISghLCAcAKwgqCEoIBwAsCEsITAgHACwIKwhLCAcALQhMCE0IBwAtCCwITAgHAC4ITQhOCAcALggtCE0IBwAPCE4ILwgHAA8ILghOCAcATwhQCFEIBwBPCFIIUAgHAFEIUwhUCAcAUQhQCFMIBwBUCFUIVggHAFQIUwhVCAcAVghXCFgIBwBWCFUIVwgHAFgIWQhaCAcAWAhXCFkIBwBaCFsIXAgHAFoIWQhbCAcAXAhdCF4IBwBcCFsIXQgHAF4IXwhgCAcAXghdCF8IBwBgCGEIYggHAGAIXwhhCAcAYQhjCGIIBwBhCGQIYwgHAGQIZQhjCAcAZAhmCGUIBwBmCGcIZQgHAGYIaAhnCAcAaAhpCGcIBwBoCGoIaQgHAGoIawhpCAcAaghsCGsIBwBsCG0IawgHAGwIbghtCAcAbghvCG0IBwBuCHAIbwgHAHAIcQhvCAcAcAhyCHEIBwByCHMIcQgHAHIIdAhzCAcAdAh1CHMIBwB0CHYIdQgHAHYIdwh1CAcAdgh4CHcIBwB4CHkIdwgHAHgIegh5CAcAegh7CHkIBwB6CHwIewgHAHwIfQh7CAcAfAh+CH0IBwB+CH8IfQgHAH4IgAh/CAcAgAiBCH8IBwCACIIIgQgHAIEIgwiECAcAgQiCCIMIBwCECIUIhggHAIQIgwiFCAcAhgiHCIgIBwCGCIUIhwgHAIgIiQiKCAcAiAiHCIkIBwCKCIsIjAgHAIoIiQiLCAcAjAiNCI4IBwCMCIsIjQgHAI4IUghPCAcAjgiNCFIIBwBSCI8IUAgHAFIIkAiPCAcAUAiRCFMIBwBQCI8IkQgHAFMIkghVCAcAUwiRCJIIBwBVCJMIVwgHAFUIkgiTCAcAVwiUCFkIBwBXCJMIlAgHAFkIlQhbCAcAWQiUCJUIBwBbCJYIXQgHAFsIlQiWCAcAXQiXCF8IBwBdCJYIlwgHAF8ImAhhCAcAXwiXCJgIBwCYCGQIYQgHAJgImQhkCAcAmQhmCGQIBwCZCJoIZggHAJoIaAhmCAcAmgibCGgIBwCbCGoIaAgHAJsInAhqCAcAnAhsCGoIBwCcCJ0IbAgHAJ0IbghsCAcAnQieCG4IBwCeCHAIbggHAJ4InwhwCAcAnwhyCHAIBwCfCKAIcggHAKAIdAhyCAcAoAihCHQIBwChCHYIdAgHAKEIogh2CAcAogh4CHYIBwCiCKMIeAgHAKMIegh4CAcAowikCHoIBwCkCHwIeggHAKQIpQh8CAcApQh+CHwIBwClCKYIfggHAKYIgAh+CAcApginCIAIBwCnCIIIgAgHAKcIqAiCCAcAggipCIMIBwCCCKgIqQgHAIMIqgiFCAcAgwipCKoIBwCFCKsIhwgHAIUIqgirCAcAhwisCIkIBwCHCKsIrAgHAIkIrQiLCAcAiQisCK0IBwCLCK4IjQgHAIsIrQiuCAcAjQiQCFIIBwCNCK4IkAgHAJAIrwiPCAcAkAiwCK8IBwCPCLEIkQgHAI8IrwixCAcAkQiyCJIIBwCRCLEIsggHAJIIswiTCAcAkgiyCLMIBwCTCLQIlAgHAJMIswi0CAcAlAi1CJUIBwCUCLQItQgHAJUItgiWCAcAlQi1CLYIBwCWCLcIlwgHAJYItgi3CAcAlwi4CJgIBwCXCLcIuAgHALgImQiYCAcAuAi5CJkIBwC5CJoImQgHALkIugiaCAcAugibCJoIBwC6CLsImwgHALsInAibCAcAuwi8CJwIBwC8CJ0InAgHALwIvQidCAcAvQieCJ0IBwC9CL4InggHAL4InwieCAcAvgi/CJ8IBwC/CKAInwgHAL8IwAigCAcAwQigCMAIBwDBCKEIoAgHAMIIoQjBCAcAwgiiCKEIBwDDCKIIwggHAMMIowiiCAcAxAijCMMIBwDECKQIowgHAMUIpAjECAcAxQilCKQIBwDGCKUIxQgHAMYIpgilCAcAxwimCMYIBwDHCKcIpggHAMgIpwjHCAcAyAioCKcIBwCpCMgIyQgHAKkIqAjICAcAqgjJCMoIBwCqCKkIyQgHAKsIygjLCAcAqwiqCMoIBwCsCMsIzAgHAKwIqwjLCAcArQjMCM0IBwCtCKwIzAgHAK4IzQjOCAcArgitCM0IBwCQCM4IsAgHAJAIrgjOCAcArwjPCNAIBwCvCLAIzwgHALEI0AjRCAcAsQivCNAIBwCyCNEI0ggHALIIsQjRCAcAswjSCNMIBwCzCLII0ggHALQI0wjUCAcAtAizCNMIBwC1CNQI1QgHALUItAjUCAcAtgjVCNYIBwC2CLUI1QgHALcI1gjXCAcAtwi2CNYIBwC4CNcI2AgHALgItwjXCAcA2Qi4CNgIBwDZCLkIuAgHANoIuQjZCAcA2gi6CLkIBwDbCLoI2ggHANsIuwi6CAcA3Ai7CNsIBwDcCLwIuwgHAN0IvAjcCAcA3Qi9CLwIBwDeCL0I3QgHAN4Ivgi9CAcA3wi+CN4IBwDfCL8IvggHAOAIvwjfCAcA4AjACL8IBwDhCMAI4AgHAOEIwQjACAcA4gjBCOEIBwDiCMIIwQgHAOMIwgjiCAcA4wjDCMIIBwDkCMMI4wgHAOQIxAjDCAcA5QjECOQIBwDlCMUIxAgHAOYIxQjlCAcA5gjGCMUIBwDnCMYI5ggHAOcIxwjGCAcA6AjHCOcIBwDoCMgIxwgHAMkI6AjpCAcAyQjICOgIBwDKCOkI6ggHAMoIyQjpCAcAywjqCOsIBwDLCMoI6ggHAMwI6wjsCAcAzAjLCOsIBwDNCOwI7QgHAM0IzAjsCAcAzgjtCO4IBwDOCM0I7QgHALAI7gjPCAcAsAjOCO4IBwDQCO8I8AgHANAIzwjvCAcA0QjwCPEIBwDRCNAI8AgHANII8QjyCAcA0gjRCPEIBwDTCPII8wgHANMI0gjyCAcA1AjzCPQIBwDUCNMI8wgHANUI9Aj1CAcA1QjUCPQIBwDWCPUI9ggHANYI1Qj1CAcA1wj2CPcIBwDXCNYI9ggHANgI9wj4CAcA2AjXCPcIBwD5CNgI+AgHAPkI2QjYCAcA+gjZCPkIBwD6CNoI2QgHAPsI2gj6CAcA+wjbCNoIBwD8CNsI+wgHAPwI3AjbCAcA/QjcCPwIBwD9CN0I3AgHAP4I3Qj9CAcA/gjeCN0IBwD/CN4I/ggHAP8I3wjeCAcAAAnfCP8IBwAACeAI3wgHAAEJ4AgACQcAAQnhCOAIBwACCeEIAQkHAAIJ4gjhCAcAAwniCAIJBwADCeMI4ggHAAQJ4wgDCQcABAnkCOMIBwAFCeQIBAkHAAUJ5QjkCAcABgnlCAUJBwAGCeYI5QgHAAcJ5ggGCQcABwnnCOYIBwAICecIBwkHAAgJ6AjnCAcA6QgICQkJBwDpCOgICAkHAOoICQkKCQcA6gjpCAkJBwDrCAoJCwkHAOsI6ggKCQcA7AgLCQwJBwDsCOsICwkHAO0IDAkNCQcA7QjsCAwJBwDuCA0JDgkHAO4I7QgNCQcAzwgOCe8IBwDPCO4IDgkHAA8JEAkRCQcADwkSCRAJBwATCREJFAkHABMJDwkRCQcAFQkWCRcJBwAVCRgJFgkHABkJFwkaCQcAGQkVCRcJBwAbCRwJHQkHABsJHgkcCQcAHwkdCSAJBwAfCRsJHQkHACEJIAkiCQcAIQkfCSAJBwAjCSEJIgkHACMJJAkhCQcAJQkkCSMJBwAlCSYJJAkHACcJJgklCQcAJwkoCSYJBwApCSoJKwkHACkJLAkqCQcALQksCSkJBwAtCS4JLAkHAC8JMAkxCQcALwkyCTAJBwAQCTIJLwkHABAJEgkyCQcAMwkvCTQJBwAzCRAJLwkHABEJMwk1CQcAEQkQCTMJBwAUCTUJNgkHABQJEQk1CQcAFgk2CTcJBwAWCRQJNgkHABcJNwk4CQcAFwkWCTcJBwAaCTgJOQkHABoJFwk4CQcAHAk5CToJBwAcCRoJOQkHAB0JOgk7CQcAHQkcCToJBwAgCTsJPAkHACAJHQk7CQcAIgk8CT0JBwAiCSAJPAkHAD4JIgk9CQcAPgkjCSIJBwA/CSMJPgkHAD8JJQkjCQcAQAklCT8JBwBACScJJQkHAEEJJwlACQcAQQkrCScJBwBCCSsJQQkHAEIJKQkrCQcAQwkpCUIJBwBDCS0JKQkHAEQJLQlDCQcARAkxCS0JBwA0CTEJRAkHADQJLwkxCQcARQk0CUYJBwBFCTMJNAkHADUJRQlHCQcANQkzCUUJBwA2CUcJSAkHADYJNQlHCQcANwlICUkJBwA3CTYJSAkHADgJSQlKCQcAOAk3CUkJBwA4CUsJOQkHADgJSglLCQcAOQlMCToJBwA5CUsJTAkHADoJTQk7CQcAOglMCU0JBwA7CU4JPAkHADsJTQlOCQcAPAlPCT0JBwA8CU4JTwkHAE8JPgk9CQcATwlQCT4JBwBQCT8JPgkHAFAJUQk/CQcAUQlACT8JBwBRCVIJQAkHAFIJQQlACQcAUglTCUEJBwBTCUIJQQkHAFMJVAlCCQcAVQlCCVQJBwBVCUMJQgkHAFYJQwlVCQcAVglECUMJBwBGCUQJVgkHAEYJNAlECQcAVwlGCVgJBwBXCUUJRgkHAEcJVwlZCQcARwlFCVcJBwBICVkJWgkHAEgJRwlZCQcASQlaCVsJBwBJCUgJWgkHAEoJWwlcCQcASglJCVsJBwBKCV0JSwkHAEoJXAldCQcASwleCUwJBwBLCV0JXgkHAEwJXwlNCQcATAleCV8JBwBNCWAJTgkHAE0JXwlgCQcATglhCU8JBwBOCWAJYQkHAGEJUAlPCQcAYQliCVAJBwBiCVEJUAkHAGIJYwlRCQcAYwlSCVEJBwBjCWQJUgkHAGQJUwlSCQcAZAllCVMJBwBlCVQJUwkHAGUJZglUCQcAZwlUCWYJBwBnCVUJVAkHAGgJVQlnCQcAaAlWCVUJBwBYCVYJaAkHAFgJRglWCQcAgQBYCX8ABwCBAFcJWAkHAFkJgQCCAAcAWQlXCYEABwBaCYIAhAAHAFoJWQmCAAcAWwmEAIYABwBbCVoJhAAHAFwJhgCIAAcAXAlbCYYABwBcCYsAXQkHAFwJiACLAAcAXQmNAF4JBwBdCYsAjQAHAF4JjwBfCQcAXgmNAI8ABwBfCZEAYAkHAF8JjwCRAAcAYAmTAGEJBwBgCZEAkwAHAJMAYglhCQcAkwCUAGIJBwCUAGMJYgkHAJQAlgBjCQcAlgBkCWMJBwCWAJgAZAkHAJgAZQlkCQcAmACaAGUJBwCaAGYJZQkHAJoAnABmCQcAnwBmCZwABwCfAGcJZgkHAKEAZwmfAAcAoQBoCWcJBwB/AGgJoQAHAH8AWAloCQcAaQkWCWoJBwBpCRQJFgkHABMJaQlrCQcAEwkUCWkJBwAYCWsJbAkHABgJEwlrCQcAagkYCWwJBwBqCRYJGAkHAG0JHAluCQcAbQkaCRwJBwAZCW0JbwkHABkJGgltCQcAHglvCXAJBwAeCRkJbwkHAG4JHglwCQcAbgkcCR4JBwAoCXEJcgkHACgJJwlxCQcAcwkoCXIJBwBzCSoJKAkHAHQJKglzCQcAdAkrCSoJBwAnCXQJcQkHACcJKwl0CQcALgl1CXYJBwAuCS0JdQkHAHcJLgl2CQcAdwkwCS4JBwB4CTAJdwkHAHgJMQkwCQcALQl4CXUJBwAtCTEJeAkHAHkJagl6CQcAeQlpCWoJBwBrCXkJewkHAGsJaQl5CQcAbAl7CXwJBwBsCWsJewkHAHoJbAl8CQcAeglqCWwJBwB9CW4JfgkHAH0JbQluCQcAbwl9CX8JBwBvCW0JfQkHAHAJfwmACQcAcAlvCX8JBwB+CXAJgAkHAH4JbglwCQcAcgmBCYIJBwByCXEJgQkHAIMJcgmCCQcAgwlzCXIJBwCECXMJgwkHAIQJdAlzCQcAcQmECYEJBwBxCXQJhAkHAHYJhQmGCQcAdgl1CYUJBwCHCXYJhgkHAIcJdwl2CQcAiAl3CYcJBwCICXgJdwkHAHUJiAmFCQcAdQl4CYgJBwCJCXoJigkHAIkJeQl6CQcAewmJCYsJBwB7CXkJiQkHAHwJiwmMCQcAfAl7CYsJBwCKCXwJjAkHAIoJegl8CQcAjQl+CY4JBwCNCX0JfgkHAH8JjQmPCQcAfwl9CY0JBwCACY8JkAkHAIAJfwmPCQcAjgmACZAJBwCOCX4JgAkHAIIJkQmSCQcAggmBCZEJBwCTCYIJkgkHAJMJgwmCCQcAlAmDCZMJBwCUCYQJgwkHAIEJlAmRCQcAgQmECZQJBwCGCZUJlgkHAIYJhQmVCQcAlwmGCZYJBwCXCYcJhgkHAJgJhwmXCQcAmAmICYcJBwCFCZgJlQkHAIUJiAmYCQcAmQmKCZoJBwCZCYkJigkHAIsJmQmbCQcAiwmJCZkJBwCMCZsJnAkHAIwJiwmbCQcAmgmMCZwJBwCaCYoJjAkHAJ0JjgmeCQcAnQmNCY4JBwCPCZ0JnwkHAI8JjQmdCQcAkAmfCaAJBwCQCY8JnwkHAJ4JkAmgCQcAngmOCZAJBwCSCaEJogkHAJIJkQmhCQcAowmSCaIJBwCjCZMJkgkHAKQJkwmjCQcApAmUCZMJBwCRCaQJoQkHAJEJlAmkCQcAlgmlCaYJBwCWCZUJpQkHAKcJlgmmCQcApwmXCZYJBwCoCZcJpwkHAKgJmAmXCQcAlQmoCaUJBwCVCZgJqAkHAKkJmgmqCQcAqQmZCZoJBwCbCakJqwkHAJsJmQmpCQcAnAmrCawJBwCcCZsJqwkHAKoJnAmsCQcAqgmaCZwJBwCtCZ4JrgkHAK0JnQmeCQcAnwmtCa8JBwCfCZ0JrQkHAKAJrwmwCQcAoAmfCa8JBwCuCaAJsAkHAK4JngmgCQcAogmxCbIJBwCiCaEJsQkHALMJogmyCQcAswmjCaIJBwC0CaMJswkHALQJpAmjCQcAoQm0CbEJBwChCaQJtAkHAKYJtQm2CQcApgmlCbUJBwC3CaYJtgkHALcJpwmmCQcAuAmnCbcJBwC4CagJpwkHAKUJuAm1CQcApQmoCbgJBwC5CUwCugkHALkJSwJMAgcATgK7CbwJBwBOAk0CuwkHAE8CvAm9CQcATwJOArwJBwBPAr4JUAIHAE8CvQm+CQcAUAK/CVECBwBQAr4JvwkHAFECwAlSAgcAUQK/CcAJBwDACVMCUgIHAMAJwQlTAgcAwQlUAlMCBwDBCcIJVAIHALoJVALCCQcAuglMAlQCBwDDCboJxAkHAMMJuQm6CQcAuwnDCcUJBwC7CbkJwwkHAL0JxgnHCQcAvQm8CcYJBwC+CccJyAkHAL4JvQnHCQcAvwnICckJBwC/Cb4JyAkHAMAJyQnKCQcAwAm/CckJBwDLCcAJygkHAMsJwQnACQcAzAnBCcsJBwDMCcIJwQkHAMQJwgnMCQcAxAm6CcIJBwDNCcMJxAkHAM0JzgnDCQcAxQnPCcYJBwDFCdAJzwkHAMYJ0QnHCQcAxgnPCdEJBwDICdEJ0gkHAMgJxwnRCQcAyQnSCdMJBwDJCcgJ0gkHAMoJ0wnUCQcAygnJCdMJBwDVCcoJ1AkHANUJywnKCQcA1gnLCdUJBwDWCcwJywkHANYJxAnMCQcA1gnNCcQJBwDXCc0J2AkHANcJzgnNCQcA0AnXCdkJBwDQCc4J1wkHANEJ2gnbCQcA0QnPCdoJBwDSCdsJ3AkHANIJ0QnbCQcA0wncCd0JBwDTCdIJ3AkHANQJ3QneCQcA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VAtCC0ALBwBUC1YLQgsHAFULVgtUCwcAVQtXC1YLBwBWCyMLQgsHAFYLWAsjCwcAVwtYC1YLBwBXC1kLWAsHAFgLIAsjCwcAWAtaCyALBwBZC1oLWAsHAFkLWwtaCwcAWgseCyALBwBaC1wLHgsHAFsLXAtaCwcAWwtdC1wLBwBcCyQLHgsHAFwLXgskCwcAXQteC1wLBwBdC18LXgsHAF4LJgskCwcAXgtgCyYLBwBfC2ALXgsHAF8LYQtgCwcAYAsoCyYLBwBgC2ILKAsHAGELYgtgCwcAYQtjC2ILBwBiCyoLKAsHAGILZAsqCwcAYwtkC2ILBwBjC2ULZAsHAGQLLAsqCwcAZAtmCywLBwBlC2YLZAsHAGULZwtmCwcAZgsuCywLBwBmC2gLLgsHAGcLaAtmCwcAZwtpC2gLBwBoCzALLgsHAGgLagswCwcAaQtqC2gLBwBpC2sLagsHAGoLMgswCwcAagtGCzILBwBrC0YLagsHAGsLSAtGCwcAbAttC24LBwBsC24LbwsHAG0LcAtxCwcAbQtxC24LBwByC3MLbQsHAHILbQtsCwcAcwt0C3ALBwBzC3ALbQsHAHULdgtzCwcAdQtzC3ILBwB2C3cLdAsHAHYLdAtzCwcAeAt5C3YLBwB4C3YLdQsHAHkLegt3CwcAeQt3C3YLBwB7C3wLeQsHAHsLeQt4CwcAfAt9C3oLBwB8C3oLeQsHAH4Lfwt8CwcAfgt8C3sLBwB/C4ALfQsHAH8LfQt8CwcAgQuCC38LBwCBC38LfgsHAIILgwuACwcAgguAC38LBwCEC4ULggsHAIQLgguBCwcAhQuGC4MLBwCFC4MLggsHAIcLiAuFCwcAhwuFC4QLBwCIC4kLhgsHAIgLhguFCwcAiguLC4gLBwCKC4gLhwsHAIsLjAuJCwcAiwuJC4gLBwCNC44LiwsHAI0LiwuKCwcAjguPC4wLBwCOC4wLiwsHAJALkQuOCwcAkAuOC40LBwCRC5ILjwsHAJELjwuOCwcAkwuUC5ELBwCTC5ELkAsHAJQLlQuSCwcAlAuSC5ELBwCWC5cLlAsHAJYLlAuTCwcAlwuYC5ULBwCXC5ULlAsHAJkLmguXCwcAmQuXC5YLBwCaC5sLmAsHAJoLmAuXCwcAnAudC5oLBwCcC5oLmQsHAJ0LngubCwcAnQubC5oLBwCfC6ALoQsHAJ8LoQuiCwcAogujC54LBwCiC54LnQsHAKQLpQuhCwcApAuhC6ALBwClC6YLpwsHAKULpwuhCwcAbwtuC6ULBwBvC6ULpAsHAG4LcQumCwcAbgumC6ULBwCjC6cLqAsHAKMLqAupCwcAqQuqC6sLBwCpC6sLrAsHAKYLrQuoCwcApguoC6cLBwCtC64LrwsHAK0LrwuoCwcAcQuwC60LBwBxC60LpgsHALALsQuuCwcAsAuuC60LBwBwC7ILsAsHAHALsAtxCwcAsguzC7ELBwCyC7ELsAsHAHQLtAuyCwcAdAuyC3ALBwC0C7ULswsHALQLswuyCwcAdwu2C7QLBwB3C7QLdAsHALYLtwu1CwcAtgu1C7QLBwB6C7gLtgsHAHoLtgt3CwcAuAu5C7cLBwC4C7cLtgsHAH0Lugu4CwcAfQu4C3oLBwC6C7sLuQsHALoLuQu4CwcAgAu8C7oLBwCAC7oLfQsHALwLvQu7CwcAvAu7C7oLBwCDC74LvAsHAIMLvAuACwcAvgu/C70LBwC+C70LvAsHAIYLwAu+CwcAhgu+C4MLBwDAC8ELvwsHAMALvwu+CwcAiQvCC8ALBwCJC8ALhgsHAMILwwvBCwcAwgvBC8ALBwCMC8QLwgsHAIwLwguJCwcAxAvFC8MLBwDEC8MLwgsHAI8LxgvECwcAjwvEC4wLBwDGC8cLxQsHAMYLxQvECwcAkgvIC8YLBwCSC8YLjwsHAMgLyQvHCwcAyAvHC8YLBwCVC8oLyAsHAJULyAuSCwcAygvLC8kLBwDKC8kLyAsHAJgLzAvKCwcAmAvKC5ULBwDMC80LywsHAMwLywvKCwcAmwvOC8wLBwCbC8wLmAsHAM4LzwvNCwcAzgvNC8wLBwCeC6wLzgsHAJ4LzgubCwcArAurC88LBwCsC88LzgsHALcLuQvQCwcAtwvQC9ELBwC5C7sL0gsHALkL0gvQCwcA0QvTC7ULBwDRC7ULtwsHANQLswu1CwcA1Au1C9MLBwCuC7ELswsHAK4LswvUCwcAvQu/C9ILBwC9C9ILuwsHANUL0QvQCwcA1QvQC9YLBwDVC9YLywsHANULywvNCwcA1gvQC9ILBwDWC9IL1wsHANYL1wvJCwcA1gvJC8sLBwDNC88L2AsHAM0L2AvVCwcA1QvYC9MLBwDVC9ML0QsHANkL1AvTCwcA2QvTC9gLBwCrC9kL2AsHAKsL2AvPCwcArwuuC9QLBwCvC9QL2QsHAKoLrwvZCwcAqgvZC6sLBwDFC8cLyQsHAMULyQvXCwcAvwvBC9cLBwC/C9cL0gsHAMELwwvFCwcAwQvFC9cLBwCVCssKkwoHAJUKzwrLCgcAkgraC8UKBwCSCs4K2gsHAMQKzgrCCgcAxAraC84KBwDbC8cKqQoHANsL3AvHCgcA3AvKCscKBwDcC90LygoHAMoK3gusCgcAygrdC94LBwCsCtsLqQoHAKwK3gvbCwcA3wvcC9sLBwDfC+AL3AsHAOEL3AvgCwcA4QvdC9wLBwDdC+IL3gsHAN0L4QviCwcA3gvfC9sLBwDeC+IL3wsHAOML5AvlCwcA4wvmC+QLBwDmC+cL5AsHAOYL6AvnCwcA6AvpC+cLBwDoC+oL6QsHAOgL6wvqCwcA6AvsC+sLBwDmC+wL6AsHAOYL7QvsCwcA4wvtC+YLBwDjC+4L7QsHAO8L8AvxCwcA7wvyC/ALBwDxC/ML9AsHAPEL8AvzCwcA9Av1C/YLBwD0C/ML9QsHAPcL4wvlCwcA9wv4C+MLBwDkC/cL5QsHAOQL+Qv3CwcA5wv5C+QLBwDnC/oL+QsHAOoL+wvpCwcA6gv8C/sLBwDpC/oL5wsHAOkL+wv6CwcA/QvrC+wLBwD9C/4L6wsHAP4L6gvrCwcA/gv8C+oLBwD/C+wL7QsHAP8L/QvsCwcA4wsADO4LBwDjC/gLAAwHAAAM7QvuCwcAAAz/C+0LBwABDO8L8QsHAAEMAgzvCwcAAgzyC+8LBwACDAMM8gsHAPILBAzwCwcA8gsDDAQMBwAFDPEL9AsHAAUMAQzxCwcA8AsGDPMLBwDwCwQMBgwHAAcM9Av2CwcABwwFDPQLBwDzCwgM9QsHAPMLBgwIDAcA9QsHDPYLBwD1CwgMBwwHAAkMCgwLDAcACQwLDAwMBwALDA0MDgwHAAsMDgwMDAcADwwMDA4MBwAPDA4MEAwHABEMDAwPDAcAEQwPDBIMBwATDBQMDAwHABMMDAwRDAcAFAwVDAkMBwAUDAkMDAwHAAoMFgwXDAcACgwXDAsMBwALDBcMGAwHAAsMGAwNDAcADQwYDBkMBwANDBkMDgwHABAMDgwZDAcAEAwZDBoMBwAPDBAMGgwHAA8MGgwbDAcAEgwPDBsMBwASDBsMHAwHAB0MEQwSDAcAHQwSDBwMBwAeDBMMEQwHAB4MEQwdDAcAHwwUDBMMBwAfDBMMHgwHAB8MIAwVDAcAHwwVDBQMBwAgDCEMCQwHACAMCQwVDAcAIQwWDAoMBwAhDAoMCQwHABYMIgwjDAcAFgwjDBcMBwAXDCMMJAwHABcMJAwYDAcAGAwkDCUMBwAYDCUMGQwHABoMGQwlDAcAGgwlDCYMBwAbDBoMJgwHABsMJgwnDAcAHAwbDCcMBwAcDCcMKAwHACkMHQwcDAcAKQwcDCgMBwAqDB4MHQwHACoMHQwpDAcAKwwfDB4MBwArDB4MKgwHACsMLAwgDAcAKwwgDB8MBwAsDC0MIQwHACwMIQwgDAcALQwiDBYMBwAtDBYMIQwHACMMIgwuDAcAIwwuDC8MBwAkDCMMLwwHACQMLwwwDAcAJAwwDDEMBwAkDDEMJQwHACUMMQwyDAcAJQwyDCYMBwAmDDIMMwwHACYMMwwnDAcAJwwzDDQMBwAnDDQMKAwHADQMNQwpDAcANAwpDCgMBwA1DDYMKgwHADUMKgwpDAcANgw3DCsMBwA2DCsMKgwHADcMOAwsDAcANwwsDCsMBwA5DC0MLAwHADkMLAw4DAcALgwiDC0MBwAuDC0MOQwHAC8MLgw6DAcALww6DDsMBwAwDC8MOwwHADAMOww8DAcAMAw8DD0MBwAwDD0MMQwHADEMPQw+DAcAMQw+DDIMBwAyDD4MPwwHADIMPwwzDAcAMww/DEAMBwAzDEAMNAwHAEAMQQw1DAcAQAw1DDQMBwBBDEIMNgwHAEEMNgw1DAcAQgxDDDcMBwBCDDcMNgwHAEMMRAw4DAcAQww4DDcMBwBFDDkMOAwHAEUMOAxEDAcAOgwuDDkMBwA6DDkMRQwHADwMOww6DAcAPAw6DEYMBwA8DEYMPgwHADwMPgw9DAcAPgxGDEAMBwA+DEAMPwwHAEYMQgxBDAcARgxBDEAMBwBGDEQMQwwHAEYMQwxCDAcAOgxFDEQMBwA6DEQMRgwHAKILnQucCwcAogucC58LBwCiC6ELpwsHAKILpwujCwcAqQusC54LBwCpC54LowsHAKkLqAuvCwcAqQuvC6oLBwBHDEgMSQwHAEcMSQxKDAcASwxMDEgMBwBLDEgMRwwHAEgMTQxODAcASAxODEkMBwBMDE8MTQwHAEwMTQxIDAcATQxQDFEMBwBNDFEMTgwHAE8MUgxQDAcATwxQDE0MBwBQDFMMVAwHAFAMVAxRDAcAUgxVDFMMBwBSDFMMUAwHAFMMVgxXDAcAUwxXDFQMBwBVDFgMVgwHAFUMVgxTDAcAVgxZDFoMBwBWDFoMVwwHAFgMWwxZDAcAWAxZDFYMBwBZDFwMXQwHAFkMXQxaDAcAWwxeDFwMBwBbDFwMWQwHAFwMXwxgDAcAXAxgDF0MBwBeDGEMXwwHAF4MXwxcDAcAXwxiDGMMBwBfDGMMYAwHAGEMZAxiDAcAYQxiDF8MBwBiDGUMZgwHAGIMZgxjDAcAZAxnDGUMBwBkDGUMYgwHAGUMaAxpDAcAZQxpDGYMBwBnDGoMaAwHAGcMaAxlDAcAaAxrDGwMBwBoDGwMaQwHAGoMbQxrDAcAagxrDGgMBwBrDG4MbwwHAGsMbwxsDAcAbQxwDG4MBwBtDG4MawwHAG4McQxyDAcAbgxyDG8MBwBwDHMMcQwHAHAMcQxuDAcAcQx0DHUMBwBxDHUMcgwHAHMMdgx0DAcAcwx0DHEMBwB0DHcMeAwHAHQMeAx1DAcAdgx5DHcMBwB2DHcMdAwHAHoMewx8DAcAegx8DH0MBwB5DH4MfQwHAHkMfQx3DAcAegx/DIAMBwB6DIAMewwHAIEMggx/DAcAgQx/DHoMBwB/DEcMSgwHAH8MSgyADAcAggxLDEcMBwCCDEcMfwwHAIMMgQx+DAcAgwx+DIQMBwCFDIYMhAwHAIUMhAyHDAcAgwyIDIIMBwCDDIIMgQwHAIkMigyIDAcAiQyIDIMMBwCIDIsMSwwHAIgMSwyCDAcAigyMDIsMBwCKDIsMiAwHAIsMjQxMDAcAiwxMDEsMBwCMDI4MjQwHAIwMjQyLDAcAjQyPDE8MBwCNDE8MTAwHAI4MkAyPDAcAjgyPDI0MBwCPDJEMUgwHAI8MUgxPDAcAkAySDJEMBwCQDJEMjwwHAJEMkwxVDAcAkQxVDFIMBwCSDJQMkwwHAJIMkwyRDAcAkwyVDFgMBwCTDFgMVQwHAJQMlgyVDAcAlAyVDJMMBwCVDJcMWwwHAJUMWwxYDAcAlgyYDJcMBwCWDJcMlQwHAJcMmQxeDAcAlwxeDFsMBwCYDJoMmQwHAJgMmQyXDAcAmQybDGEMBwCZDGEMXgwHAJoMnAybDAcAmgybDJkMBwCbDJ0MZAwHAJsMZAxhDAcAnAyeDJ0MBwCcDJ0MmwwHAJ0MnwxnDAcAnQxnDGQMBwCeDKAMnwwHAJ4MnwydDAcAnwyhDGoMBwCfDGoMZwwHAKAMogyhDAcAoAyhDJ8MBwChDKMMbQwHAKEMbQxqDAcAogykDKMMBwCiDKMMoQwHAKMMpQxwDAcAowxwDG0MBwCkDKYMpQwHAKQMpQyjDAcApQynDHMMBwClDHMMcAwHAKYMqAynDAcApgynDKUMBwCnDKkMdgwHAKcMdgxzDAcAqAyqDKkMBwCoDKkMpwwHAKkMhwx5DAcAqQx5DHYMBwCqDIUMhwwHAKoMhwypDAcAqwyUDJIMBwCrDJIMrAwHAK0MlgyUDAcArQyUDKsMBwCQDK4MrAwHAJAMrAySDAcAkAyODK8MBwCQDK8MrgwHAI4MjAyKDAcAjgyKDK8MBwCtDJoMmAwHAK0MmAyWDAcAqwysDLAMBwCrDLAMsQwHAKYMsQywDAcApgywDKgMBwCtDKsMsQwHAK0MsQyyDAcApAyyDLEMBwCkDLEMpgwHALMMqgyoDAcAswyoDLAMBwCuDLMMsAwHAK4MsAysDAcArgyvDLQMBwCuDLQMswwHALMMtAyFDAcAswyFDKoMBwCvDIoMiQwHAK8MiQy0DAcAtAyJDIYMBwC0DIYMhQwHAKQMogygDAcApAygDLIMBwCyDJwMmgwHALIMmgytDAcAoAyeDJwMBwCgDJwMsgwHAHgMdwx9DAcAeAx9DHwMBwCBDHoMfQwHAIEMfQx+DAcAeQyHDIQMBwB5DIQMfgwHAIkMgwyEDAcAiQyEDIYMBwBGAUkBRwEHAEYBcwFJAQcASAFzAUYBBwBIAXQBcwEHAEcBPwFMAQcARwFJAT8BBwDXAK8A1AAHANcA2ACvAAcA6ADYANcABwDoAOkA2AAHAF0B6QDoAAcAXQFfAekABwBdAVwBYAEHAF0BWwFcAQcA3ACrAKwABwDcAKoAqwAHAO0AqgDcAAcA7QDuAKoABwBnAe4A7QAHAGcBaQHuAAcAZwFmAWoBBwBnAWUBZgEHAKMAtQy2DAcAowClALUMBwC3DLgMuQwHALcMugy4DAcAuQy7DLwMBwC5DLgMuwwHAL0Mvgy/DAcAvQy8DL4MBwC9DMAMwQwHAL0MvwzADAcAwgyxALMABwDCDMMMsQAHAMQMxQzGDAcAxAzHDMUMBwDIDMcMxAwHAMgMyQzHDAcAygzJDMgMBwDKDMsMyQwHAMwMywzKDAcAzAzNDMsMBwDODM0MzAwHAM4MzwzNDAcAwwzBALEABwDDDNAMwQAHAMcM0QzFDAcAxwzSDNEMBwDJDNIMxwwHAMkM0wzSDAcAywzTDMkMBwDLDNQM0wwHAM0M1AzLDAcAzQzVDNQMBwDPDNUMzQwHAM8M1gzVDAcA1wzIDMQMBwDXDNgMyAwHALkM2AzXDAcAuQy8DNgMBwDYDMoMyAwHANgM2QzKDAcAvAzZDNgMBwC8DL0M2QwHANkMzAzKDAcA2QzaDMwMBwC9DNoM2QwHAL0MwQzaDAcA2gzODMwMBwDaDNsMzgwHAMEM2wzaDAcAwQzcDNsMBwDdDNwM3gwHAN0M2wzcDAcA3wzEDMYMBwDfDNcMxAwHALcM1wzfDAcAtwy5DNcMBwDSAMIMswAHANIA4AzCDAcAowDgDNIABwCjALYM4AwHAMEM4QzcDAcAwQzADOEMBwDcDOIM3gwHANwM4wziDAcA4QzjDNwMBwDhDOQM4wwHAL8M5QzADAcAvwzmDOUMBwDnDOYMvwwHAOcM6AzmDAcA5wy+DOkMBwDnDL8MvgwHAOoM6wzsDAcA6gztDOsMBwDsDO4M7wwHAOwM6wzuDAcA6gziDO0MBwDqDN4M4gwHAOsM8AzuDAcA6wzxDPAMBwDtDPEM6wwHAO0M8gzxDAcA4gzyDO0MBwDiDPMM8gwHAOMM8wziDAcA4wz0DPMMBwDkDPQM4wwHAOQM9Qz0DAcA5gz2DOUMBwDmDPcM9gwHAOgM9wzmDAcA6Az4DPcMBwDnDPgM6AwHAOcM+Qz4DAcA6Qz5DOcMBwDpDPoM+QwHALgM+wy7DAcAuAz8DPsMBwC6DPwMuAwHALoM/Qz8DAcApQD+DLUMBwClAPIA/gwHANYM/wzVDAcA1gwADf8MBwDVDAEN1AwHANUM/wwBDQcA1AwCDdMMBwDUDAENAg0HANMMAw3SDAcA0wwCDQMNBwDSDAQN0QwHANIMAw0EDQcA0Az5AMEABwDQDAUN+QAHAAANBg3/DAcAAA0HDQYNBwD/DAgNAQ0HAP8MBg0IDQcAAQ0JDQINBwABDQgNCQ0HAAINCg0DDQcAAg0JDQoNBwADDQsNBA0HAAMNCg0LDQcABQ0BAfkABwAFDQwNAQEHAA0NDg0PDQcADQ0QDQ4NBwARDQ8NEg0HABENDQ0PDQcAEA0TDQ4NBwAQDRQNEw0HABUNEg0WDQcAFQ0RDRINBwAXDRYNGA0HABcNFQ0WDQcAGQ0YDRoNBwAZDRcNGA0HABsNEA0NDQcAGw0cDRANBwAdDQ0NEQ0HAB0NGw0NDQcAHA0UDRANBwAcDR4NFA0HAB8NEQ0VDQcAHw0dDRENBwAgDRUNFw0HACANHw0VDQcAIQ0XDRkNBwAhDSANFw0HACINIw0kDQcAIg0lDSMNBwAjDQ4NEw0HACMNJQ0ODQcAJg0lDSINBwAmDScNJQ0HACUNDw0ODQcAJQ0nDQ8NBwAnDSgNKQ0HACcNJg0oDQcAKQ0PDScNBwApDRINDw0HACoNKQ0oDQcAKg0rDSkNBwArDRINKQ0HACsNFg0SDQcALA0rDSoNBwAsDS0NKw0HACsNGA0WDQcAKw0tDRgNBwAuDS0NLA0HAC4NLw0tDQcALQ0aDRgNBwAtDS8NGg0HACINMA0mDQcAIg0xDTANBwAkDTENIg0HACQNMg0xDQcAMQ0zDTANBwAxDTQNMw0HADINNA0xDQcAMg01DTQNBwA2DSwBNw0HADYNLwEsAQcAOA0vATYNBwA4DTEBLwEHAAwNMgEBAQcADA05DTIBBwAKDToNCw0HAAoNOw06DQcACQ07DQoNBwAJDTwNOw0HAAgNPA0JDQcACA09DTwNBwAGDT0NCA0HAAYNPg09DQcABw0+DQYNBwAHDT8NPg0HACwBOQ03DQcALAEyATkNBwBADTMNNA0HAEANQQ0zDQcAQg00DTUNBwBCDUANNA0HADMNOg07DQcAMw1BDToNBwAwDTsNPA0HADANMw07DQcAJg08DT0NBwAmDTANPA0HACYNPg0oDQcAJg09DT4NBwA+DSoNKA0HAD4NPw0qDQcA8AxDDe4MBwDwDEQNQw0HAO4MRQ3vDAcA7gxDDUUNBwAqDUYNLA0HACoNRw1GDQcALA1IDS4NBwAsDUYNSA0HAEcNSQ1GDQcARw1KDUkNBwBGDUsNSA0HAEYNSQ1LDQcASg1MDUkNBwBKDU0NTA0HAEkNTg1LDQcASQ1MDU4NBwBFDUQNTw0HAEUNQw1EDQcARw1QDUoNBwBHDVENUA0HAEcNPw1RDQcARw0qDT8NBwBQDU0NSg0HAFANUg1NDQcAUw3vDEUNBwBTDVQN7wwHAAANVA1TDQcAAA3WDFQNBwBUDewM7wwHAFQNVQ3sDAcA1gxVDVQNBwDWDM8MVQ0HAFUN6gzsDAcAVQ1WDeoMBwDPDFYNVQ0HAM8MzgxWDQcAVg3eDOoMBwBWDd0M3gwHAM4M3QxWDQcAzgzbDN0MBwBSDVMNRQ0HAFINUA1TDQcAUA0ADVMNBwBQDVENAA0HAFENBw0ADQcAUQ0/DQcNBwBXDUQN8AwHAFcNWA1EDQcAWQ1YDVcNBwBZDVoNWA0HAFsN8AzxDAcAWw1XDfAMBwBcDVcNWw0HAFwNWQ1XDQcAXQ3xDPIMBwBdDVsN8QwHAF4NWw1dDQcAXg1cDVsNBwBfDfIM8wwHAF8NXQ3yDAcAYA1dDV8NBwBgDV4NXQ0HAGEN8wz0DAcAYQ1fDfMMBwBiDV8NYQ0HAGINYA1fDQcAYQ31DGMNBwBhDfQM9QwHAGQNYw1lDQcAZA1mDWMNBwBnDfYM9wwHAGcNZQ32DAcAaA1lDWcNBwBoDWQNZQ0HAGkN9wz4DAcAaQ1nDfcMBwBqDWcNaQ0HAGoNaA1nDQcAaw34DPkMBwBrDWkN+AwHAGwNaQ1rDQcAbA1qDWkNBwBrDfoMbQ0HAGsN+Qz6DAcAbg1tDW8NBwBuDXANbQ0HAHEN+wz8DAcAcQ1vDfsMBwByDW8NcQ0HAHINbg1vDQcAcw38DP0MBwBzDXEN/AwHAHQNcQ1zDQcAdA1yDXENBwBvAf4M8gAHAG8BdQ3+DAcAcQF1DW8BBwBxAXYNdQ0HAE8NWA13DQcATw1EDVgNBwBYDXgNdw0HAFgNWg14DQcAxgx5Dd8MBwDGDHoNeQ0HAN8Mew23DAcA3wx5DXsNBwAEDXwNfQ0HAAQNCw18DQcAQg1+DUANBwBCDX8Nfg0HAHsNugy3DAcAew2ADboMBwCBDcYMxQwHAIENeg3GDAcAxQyCDYENBwDFDNEMgg0HAP0MgA2DDQcA/Qy6DIANBwDRDH0Ngg0HANEMBA19DQcACw2EDXwNBwALDToNhA0HAEANhQ1BDQcAQA1+DYUNBwBBDYQNOg0HAEENhQ2EDQcAhg39DIMNBwCGDXMN/QwHAIcNcw2GDQcAhw10DXMNBwCIDbUMiQ0HAIgNtgy1DAcAiA2ADXsNBwCIDYkNgA0HAIoNwgyLDQcAig3DDMIMBwCKDXoNgQ0HAIoNiw16DQcAgQ2MDYoNBwCBDYINjA0HAIoN0AzDDAcAig2MDdAMBwCJDYMNgA0HAIkNjQ2DDQcAjQ21DP4MBwCNDYkNtQwHAIwNfQ2ODQcAjA2CDX0NBwCMDQUN0AwHAIwNjg0FDQcAfA2PDZANBwB8DYQNjw0HAJANOQ0MDQcAkA2PDTkNBwA3DY8NkQ0HADcNOQ2PDQcAkQ2EDYUNBwCRDY8NhA0HAI0Nhg2DDQcAjQ2SDYYNBwCSDf4MdQ0HAJINjQ3+DAcAkg2HDYYNBwCSDZMNhw0HAJMNdQ12DQcAkw2SDXUNBwCLDeAMlA0HAIsNwgzgDAcAeg2UDXkNBwB6DYsNlA0HAJQNtgyIDQcAlA3gDLYMBwCUDXsNeQ0HAJQNiA17DQcAjg18DZANBwCODX0NfA0HAI4NDA0FDQcAjg2QDQwNBwCRDX4NlQ0HAJENhQ1+DQcANw2VDTYNBwA3DZENlQ0HAJUNfw2WDQcAlQ1+DX8NBwA2DZYNOA0HADYNlQ2WDQcATw1MDU0NBwBPDXcNTA0HAHcNTg1MDQcAdw14DU4NBwBFDU0NUg0HAEUNTw1NDQcAwAzkDOEMBwDADOUM5AwHAOUM9QzkDAcA5Qz2DPUMBwD2DGMN9QwHAPYMZQ1jDQcAYg1jDWYNBwBiDWENYw0HALwM6Qy+DAcAvAy7DOkMBwC7DPoM6QwHALsM+wz6DAcA+wxtDfoMBwD7DG8NbQ0HAGwNbQ1wDQcAbA1rDW0NBwDkA+AD4gMHAOQD4wPgAwcA5gPjA+QDBwDmA+UD4wMHAB0EFATTAgcAHQQbBBQEBwDUAh0E0wIHANQCpQQdBAcA1QLaAtYCBwDVAtgC2gIHANUCvwLbAgcA1QLBAr8CBwDgAqUE1AIHAOACmgSlBAcA4QLcAtsCBwDhAuMC3AIHAOQC4wLhAgcA5ALmAuMCBwDgApwEmwQHAOAC3gKcBAcAmwTmAuQCBwCbBJwE5gIHAJcNmA2ZDQcAlw2aDZgNBwCbDZwNnQ0HAJsNng2cDQcAnw2gDaENBwCfDaINoA0HAKMNog2fDQcAow2kDaINBwClDaYNpw0HAKUNqA2mDQcAqQ2oDaUNBwCpDaoNqA0HAKsNlw2ZDQcAqw2sDZcNBwCtDZsNnQ0HAK0Nrg2bDQcArw2kDaMNBwCvDbANpA0HAK4NsA2vDQcArg2tDbANBwCxDaoNqQ0HALENsg2qDQcArA2yDbENBwCsDasNsg0HALMNnA2eDQcAsw20DZwNBwC1DbQNsw0HALUNtg20DQcAtw24DbkNBwC3DboNuA0HALoNqAK4DQcAug2pAqgCBwC7DaoCrAIHALsNvA2qAgcAvQ28DbsNBwC9Db4NvA0HAL0Nvw3ADQcAvQ27Db8NBwC7DbICvw0HALsNrAKyAgcAwQ3CDcMNBwDBDcQNwg0HAMUNww3GDQcAxQ3BDcMNBwDHDcYNyA0HAMcNxQ3GDQcAyQ3IDcoNBwDJDccNyA0HAMsNyg3MDQcAyw3JDcoNBwDNDcwNzg0HAM0Nyw3MDQcAzw3ODdANBwDPDc0Nzg0HANEN0A3SDQcA0Q3PDdANBwDTDcUCxwIHANMN1A3FAgcA1Q3WDdcNBwDVDdgN1g0HAJoN2Q2YDQcAmg3aDdkNBwDbDdwN3Q0HANsN3g3cDQcA2w3fDeANBwDbDd0N3w0HANEN4Q3PDQcA0Q3iDeENBwDjDeQN5Q0HAOMN5g3kDQcA4w3nDeENBwDjDegN5w0HAOgN5Q3pDQcA6A3jDeUNBwDqDd4N2w0HAOoN6w3eDQcA6g3gDewNBwDqDdsN4A0HAOcNyw3NDQcA5w3tDcsNBwDoDe4N7w0HAOgN6Q3uDQcAyw3wDckNBwDLDe0N8A0HAO8N8Q3yDQcA7w3uDfENBwC5DfMNtw0HALkN9A3zDQcA9Q2+Db0NBwD1DfYNvg0HAMAN9Q29DQcAwA33DfUNBwD4DfkN+g0HAPgN+w35DQcA/A39Df4NBwD8Df8N/Q0HAJwN/w38DQcAnA20Df8NBwD/DQAO/Q0HAP8NAQ4ADgcAtA0BDv8NBwC0DbYNAQ4HAAIOAw4EDgcAAg4FDgMOBwD0DQUOAg4HAPQNuQ0FDgcABQ4GDgMOBwAFDgcOBg4HALkNBw4FDgcAuQ24DQcOBwAHDvwCBg4HAAcO/QL8AgcAuA39AgcOBwC4DagC/QIHAAgO/g0JDgcACA78Df4NBwCdDfwNCA4HAJ0NnA38DQcACg4JDgsOBwAKDggOCQ4HAK0NCA4KDgcArQ2dDQgOBwAMDgsODQ4HAAwOCg4LDgcAsA0KDgwOBwCwDa0NCg4HAA4ODQ4PDgcADg4MDg0OBwCkDQwODg4HAKQNsA0MDgcAEA4PDhEOBwAQDg4ODw4HAKINDg4QDgcAog2kDQ4OBwASDhEOEw4HABIOEA4RDgcAoA0QDhIOBwCgDaINEA4HABQOCgMMAwcAFA4VDgoDBwAWDhUOFA4HABYOFw4VDgcAGA4XDhYOBwAYDhkOFw4HABoOGw4cDgcAGg4dDhsOBwAeDh0OGg4HAB4OHw4dDgcAGAMfDh4OBwAYAxkDHw4HAPcNIA4hDgcA9w3ADSAOBwDADSIOIA4HAMANvw0iDgcAvw0dAyIOBwC/DbICHQMHALcNIw4kDgcAtw3zDSMOBwC6DSQOJQ4HALoNtw0kDgcAqQIlDiEDBwCpAroNJQ4HACYOJA4jDgcAJg4nDiQOBwAYDicOJg4HABgOFg4nDgcAJw4lDiQOBwAnDigOJQ4HABYOKA4nDgcAFg4UDigOBwAoDiEDJQ4HACgOJQMhAwcAFA4lAygOBwAUDgwDJQMHACkOIQ4gDgcAKQ4qDiEOBwAaDioOKQ4HABoOHA4qDgcAKw4gDiIOBwArDikOIA4HAB4OKQ4rDgcAHg4aDikOBwApAyIOHQMHACkDKw4iDgcAGAMrDikDBwAYAx4OKw4HACwOLQ4uDgcALA4vDi0OBwAwDi8OLA4HADAOMQ4vDgcALw4yDi0OBwAvDjMOMg4HADEOMw4vDgcAMQ40DjMOBwA1DsMNwg0HADUONg7DDQcAtQ02DjUOBwC1DbMNNg4HADYOxg3DDQcANg43DsYNBwCzDTcONg4HALMNng03DgcANw7IDcYNBwA3DjgOyA0HAJ4NOA43DgcAng2bDTgOBwA4DsoNyA0HADgOOQ7KDQcAmw05DjgOBwCbDa4NOQ4HADkOzA3KDQcAOQ46DswNBwCuDToOOQ4HAK4Nrw06DgcAOg7ODcwNBwA6DjsOzg0HAK8NOw46DgcArw2jDTsOBwA7DtANzg0HADsOPA7QDQcAow08DjsOBwCjDZ8NPA4HADwO0g3QDQcAPA49DtINBwCfDT0OPA4HAJ8NoQ09DgcAPg4uDj8OBwA+DiwOLg4HAEAOLA4+DgcAQA4wDiwOBwBBDj8OQg4HAEEOPg4/DgcAQw4+DkEOBwBDDkAOPg4HAPYNRA5FDgcA9g31DUQOBwD1DUYORA4HAPUN9w1GDgcA9w1HDkYOBwD3DSEORw4HACEOSA5HDgcAIQ4qDkgOBwAqDkkOSA4HACoOHA5JDgcAHA5KDkkOBwAcDhsOSg4HAEsOTA5NDgcASw5ODkwOBwBODk8OUA4HAE4OSw5PDgcAUQ5SDlMOBwBRDlQOUg4HAFUOVA5RDgcAVQ5WDlQOBwBUDlcOUg4HAFQOWA5XDgcAVg5YDlQOBwBWDlkOWA4HAFgOWg5XDgcAWA5bDloOBwBZDlsOWA4HAFkOXA5bDgcAWw5dDloOBwBbDl4OXQ4HAFwOXg5bDgcAXA5fDl4OBwBeDmAOXQ4HAF4OYQ5gDgcAXw5hDl4OBwBfDmIOYQ4HAGEOYQNgDgcAYQ5iA2EDBwBiDmIDYQ4HAGIOYwNiAwcAYw5kDmUOBwBjDmYOZA4HAPYNZg5jDgcA9g1FDmYOBwBnDmUOaA4HAGcOYw5lDgcAvg1jDmcOBwC+DfYNYw4HAGkOaA5qDgcAaQ5nDmgOBwC8DWcOaQ4HALwNvg1nDgcAbANqDm0DBwBsA2kOag4HAKoCaQ5sAwcAqgK8DWkOBwBiDmsObA4HAGIOXw5rDgcAXw5tDmsOBwBfDlwObQ4HAFwObg5tDgcAXA5ZDm4OBwBZDm8Obg4HAFkOVg5vDgcAcA5xDnIOBwBwDnMOcQ4HAHMOdA5xDgcAcw51DnQOBwB1DnYOdA4HAHUO8Q12DgcA8Q13DnYOBwDxDe4Ndw4HAO4NeA53DgcA7g3pDXgOBwDpDXkOeA4HAOkN5Q15DgcA5Q16DnkOBwDlDeQNeg4HAGMDbA5+AwcAYwNiDmwOBwA0DnsOfA4HADQOfQ57DgcAtQ17DrYNBwC1DXwOew4HAH4OxA1/DgcAfg6ADsQNBwBVDoAOfg4HAFUOgQ6ADgcAMg6ADoEOBwAyDoIOgA4HAMINgA6CDgcAwg3EDYAOBwCDDn8OcA4HAIMOfg5/DgcAfg5WDlUOBwB+DoMOVg4HAIQO2g2FDgcAhA7ZDdoNBwCFDk8OhA4HAIUOUA5PDgcAhg6HDogOBwCGDokOhw4HAAEOhw4ADgcAAQ6IDocOBwB9DogOew4HAH0Ohg6IDgcAAQ57DogOBwABDrYNew4HADUOgg6KDgcANQ7CDYIOBwAzDoIOMg4HADMOig6CDgcAtQ2KDnwOBwC1DTUOig4HADQOig4zDgcANA58DooOBwCLDnAOcg4HAIsOgw5wDgcAgw5vDlYOBwCDDosObw4HAIwO2g2aDQcAjA6NDtoNBwCODo0OjA4HAI4Ojw6NDgcAjQ6FDtoNBwCNDpAOhQ4HAI8OkA6NDgcAjw6RDpAOBwCQDlAOhQ4HAJAOkg5QDgcAkQ6SDpAOBwCRDpMOkg4HAJIOTg5QDgcAkg6UDk4OBwCTDpQOkg4HAJMOlQ6UDgcAlA5MDk4OBwCUDpYOTA4HAJUOlg6UDgcAlQ6XDpYOBwCYDvkN+w0HAJgOmQ75DQcAmg6ZDpgOBwCaDpsOmQ4HAJwO1g3YDQcAnA6dDtYNBwCeDp0OnA4HAJ4Onw6dDgcAoA7FAtQNBwCgDqUDxQIHAKEOpQOgDgcAoQ6nA6UDBwCaDawNjA4HAJoNlw2sDQcAjA6xDY4OBwCMDqwNsQ0HALENpQ2ODgcAsQ2pDaUNBwCiDqMOpA4HAKIOpQ6jDgcApQ7zDfQNBwClDqIO8w0HAKYOpw6oDgcApg6pDqcOBwCoDgIOBA4HAKgOpw4CDgcApQ4CDqcOBwClDvQNAg4HAKkOpQ6nDgcAqQ6jDqUOBwCqDqsOrA4HAKoOrQ6rDgcArQ4ZDhgOBwCtDqoOGQ4HAK4OpA6vDgcArg6iDqQOBwCuDvMNog4HAK4OIw7zDQcAsA4jDq4OBwCwDiYOIw4HALAOrw6xDgcAsA6uDq8OBwCtDiYOsA4HAK0OGA4mDgcArQ6xDqsOBwCtDrAOsQ4HALIOsw60DgcAsg61DrMOBwC2DrUOsg4HALYOtw61DgcAtA64DrkOBwC0DrMOuA4HAAQOug6oDgcABA67DroOBwADDrsOBA4HAAMOvA67DgcABg68DgMOBwAGDr0OvA4HAPwCvQ4GDgcA/ALEA70OBwC1Dr4Osw4HALUOvw6+DgcAtw6/DrUOBwC3DsAOvw4HALMOwQ64DgcAsw6+DsEOBwC7DsIOug4HALsOww7CDgcAvA7DDrsOBwC8DsQOww4HAL0OxA68DgcAvQ7FDsQOBwDEA8UOvQ4HAMQDzQPFDgcAxg7HDsgOBwDGDskOxw4HAMgOyg7LDgcAyA7HDsoOBwDLDswOzQ4HAMsOyg7MDgcAiQ7ODocOBwCJDs8Ozg4HAIcO0A4ADgcAhw7ODtAOBwDJDtEOxw4HAMkO0g7RDgcAxw7TDsoOBwDHDtEO0w4HAMoO1A7MDgcAyg7TDtQOBwDPDtUOzg4HAM8O1g7VDgcAzg7XDtAOBwDODtUO1w4HANgOpg6oDgcA2A7ZDqYOBwDZDtoOtg4HANkO2A7aDgcA2w6oDroOBwDbDtgOqA4HANoOtw62DgcA2g7cDrcOBwDdDroOwg4HAN0O2w66DgcA3A7ADrcOBwDcDt4OwA4HAN8OzQ7MDgcA3w7gDs0OBwDgDs8OiQ4HAOAO3w7PDgcA4Q7MDtQOBwDhDt8OzA4HAN8O1g7PDgcA3w7hDtYOBwDiDrQOuQ4HAOIO4w60DgcAxg7jDuIOBwDGDsgO4w4HAOMOsg60DgcA4w7kDrIOBwDIDuQO4w4HAMgOyw7kDgcA5A62DrIOBwDkDuUOtg4HAMsO5Q7kDgcAyw7NDuUOBwDlDtkOtg4HAOUO5g7ZDgcAzQ7mDuUOBwDNDuAO5g4HAOYOpg7ZDgcA5g7nDqYOBwDgDucO5g4HAOAOiQ7nDgcA5w6pDqYOBwDnDugOqQ4HAIkO6A7nDgcAiQ6GDugOBwDoDqMOqQ4HAOgO6Q6jDgcAhg7pDugOBwCGDn0O6Q4HAOkOpA6jDgcA6Q7qDqQOBwB9DuoO6Q4HAH0ONA7qDgcA6g6vDqQOBwDqDusOrw4HADQO6w7qDgcANA4xDusOBwDrDrEOrw4HAOsO7A6xDgcAMQ7sDusOBwAxDjAO7A4HAOwOqw6xDgcA7A7tDqsOBwAwDu0O7A4HADAOQA7tDgcA7Q6sDqsOBwDtDu4OrA4HAEAO7g7tDgcAQA5DDu4OBwC4Du8OuQ4HALgO8A7vDgcAuQ7xDuIOBwC5Du8O8Q4HAMEO8A64DgcAwQ7yDvAOBwDiDvMOxg4HAOIO8Q7zDgcAxg70DskOBwDGDvMO9A4HAMkO9Q7SDgcAyQ70DvUOBwDwDvYO7w4HAPAO9w72DgcA7w74DvEOBwDvDvYO+A4HAPIO9w7wDgcA8g75DvcOBwDxDvoO8w4HAPEO+A76DgcA8w77DvQOBwDzDvoO+w4HAPQO/A71DgcA9A77DvwOBwD9Df0O/g0HAP0N/g79DgcA/g7/Dv0OBwD+DgAP/w4HAP0N0A7+DgcA/Q0ADtAOBwD+DtcOAA8HAP4O0A7XDgcAAQ/+DQIPBwABDwkO/g0HAAMPEw4RDgcAAw8EDxMOBwAFDxEODw4HAAUPAw8RDgcACQ4GDwsOBwAJDgEPBg8HAA0OBQ8PDgcADQ4HDwUPBwALDgcPDQ4HAAsOBg8HDwcACA/+Df0OBwAIDwIP/g0HAAkP/Q7/DgcACQ8ID/0OBwAKD90N3A0HAAoPCw/dDQcACw/fDd0NBwALDwwP3w0HANwNDQ8KDwcA3A0ODw0PBwAODw8PDQ8HAA4PEA8PDwcAEA8RDw8PBwAQDxIPEQ8HABEPEw8MDwcAEQ8SDxMPBwAUDxMPEg8HABQPFQ8TDwcACQ8WDwgPBwAJDxcPFg8HAAgPGA8CDwcACA8WDxgPBwACDxkPAQ8HAAIPGA8ZDwcAAQ8aDwYPBwABDxkPGg8HAAYPGw8HDwcABg8aDxsPBwAHDxwPBQ8HAAcPGw8cDwcABQ8dDwMPBwAFDxwPHQ8HAAMPHg8EDwcAAw8dDx4PBwAXDx8PFg8HABcPIA8fDwcAFg8hDxgPBwAWDx8PIQ8HABgPIg8ZDwcAGA8hDyIPBwAZDyMPGg8HABkPIg8jDwcAGg8kDxsPBwAaDyMPJA8HABsPJQ8cDwcAGw8kDyUPBwAcDyYPHQ8HABwPJQ8mDwcAHQ8nDx4PBwAdDyYPJw8HAA8PKA8NDwcADw8pDygPBwANDyoPCg8HAA0PKA8qDwcAEQ8pDw8PBwARDysPKQ8HAAwPKw8RDwcADA8sDysPBwALDywPDA8HAAsPLQ8sDwcACg8tDwsPBwAKDyoPLQ8HACkPLg8oDwcAKQ8vDy4PBwAoDzAPKg8HACgPLg8wDwcAKw8vDykPBwArDzEPLw8HACoPMg8tDwcAKg8wDzIPBwAsDzEPKw8HACwPMw8xDwcALQ8zDywPBwAtDzIPMw8HAC8PNA8uDwcALw81DzQPBwAuDzYPMA8HAC4PNA82DwcAMQ81Dy8PBwAxDzcPNQ8HADAPOA8yDwcAMA82DzgPBwAzDzcPMQ8HADMPOQ83DwcAMg85DzMPBwAyDzgPOQ8HADYPOg84DwcANg87DzoPBwA4DzwPOQ8HADgPOg88DwcANA87DzYPBwA0Dz0POw8HADUPPQ80DwcANQ8+Dz0PBwA3Dz4PNQ8HADcPPw8+DwcAOQ8/DzcPBwA5DzwPPw8HAEAPRA5GDgcAQA9BD0QOBwBBD0UORA4HAEEPQg9FDgcAQg9mDkUOBwBCD0MPZg4HAEMPZA5mDgcAQw9ED2QOBwBFD0YORw4HAEUPQA9GDgcARg9HDkgOBwBGD0UPRw4HAEcPSA5JDgcARw9GD0gOBwBID0kOSg4HAEgPRw9JDgcA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GhAHACUQGhAcEAcAJxAlEBwQBwAnEBwQHRAHACgQJxAdEAcAKBAdEB4QBwApECgQHhAHACkQHhAfEAcAIBAqECkQBwAgECkQHxAHACEQKxAqEAcAIRAqECAQBwAZECMQKxAHABkQKxAhEAcAIxAiECwQBwAjECwQLRAHAC4QJBAmEAcALhAmEC8QBwAvECYQJRAHAC8QJRAwEAcAMRAwECUQBwAxECUQJxAHADIQMRAnEAcAMhAnECgQBwAzEDIQKBAHADMQKBApEAcAKhA0EDMQBwAqEDMQKRAHACsQNRA0EAcAKxA0ECoQBwArECMQLRAHACsQLRA1EAcALRAsEDYQBwAtEDYQNxAHADYQLBAuEAcANhAuEDgQBwA5EC8QMBAHADkQMBA6EAcAOxA6EDAQBwA7EDAQMRAHADwQOxAxEAcAPBAxEDIQBwA9EDwQMhAHAD0QMhAzEAcANBA+ED0QBwA0ED0QMxAHADUQPxA+EAcANRA+EDQQBwA1EC0QNxAHADUQNxA/EAcAFhBAEEEQBwAWEEEQBBAHABQQQhBAEAcAFBBAEBYQBwAEEEEQQxAHAAQQQxAFEAcACBBEEEUQBwAIEEUQCxAHAAsQRRBGEAcACxBGEAwQBwAMEEYQRxAHAAwQRxAPEAcADxBHEEgQBwAPEEgQERAHABEQSBBJEAcAERBJEBMQBwATEEkQQhAHABMQQhAUEAcAQBBKEEsQBwBAEEsQQRAHAEIQTBBKEAcAQhBKEEAQBwBBEEsQTRAHAEEQTRBDEAcASRBOEEwQBwBJEEwQQhAHAEQQTxBQEAcARBBQEEUQBwBFEFAQURAHAEUQURBGEAcARhBREFIQBwBGEFIQRxAHAEcQUhBTEAcARxBTEEgQBwBIEFMQThAHAEgQThBJEAcANxA2EFQQBwA3EFQQVRAHAFYQOBA5EAcAVhA5EFcQBwBXEDkQOhAHAFcQOhBYEAcAWRBYEDoQBwBZEDoQOxAHAFoQWRA7EAcAWhA7EDwQBwBbEFoQPBAHAFsQPBA9EAcAPhBcEFsQBwA+EFsQPRAHAD8QXRBcEAcAPxBcED4QBwA/EDcQVRAHAD8QVRBdEAcAVRBUEF4QBwBVEF4QXxAHAF4QVBBWEAcAXhBWEGAQBwBhEFcQWBAHAGEQWBBiEAcAYhBYEFkQBwBiEFkQYxAHAGMQWRBaEAcAYxBaEGQQBwBkEFoQWxAHAGQQWxBlEAcAWxBcEGYQBwBbEGYQZRAHAFwQXRBnEAcAXBBnEGYQBwBdEFUQXxAHAF0QXxBnEAcAXhBoEGkQBwBeEGkQXxAHAGoQaxBgEAcAahBgEGEQBwBsEGoQYRAHAGwQYRBiEAcAbBBiEGMQBwBsEGMQbRAHAG0QYxBkEAcAbRBkEG4QBwBuEGQQZRAHAG4QZRBvEAcAZRBmEHAQBwBlEHAQbxAHAGYQZxBxEAcAZhBxEHAQBwBfEGkQcRAHAF8QcRBnEAcAaRBoEHIQBwBpEHIQcxAHAHIQaBBrEAcAchBrEHQQBwB1EGoQbBAHAHUQbBB2EAcAdhBsEG0QBwB2EG0QdxAHAHcQbRBuEAcAdxBuEHgQBwB4EG4QbxAHAHgQbxB5EAcAbxBwEHoQBwBvEHoQeRAHAHAQcRB7EAcAcBB7EHoQBwBxEGkQcxAHAHEQcxB7EAcAcxByEHwQBwBzEHwQfRAHAH4QdBB1EAcAfhB1EH8QBwB/EHUQdhAHAH8QdhCAEAcAgRCAEHYQBwCBEHYQdxAHAIIQgRB3EAcAghB3EHgQBwCDEIIQeBAHAIMQeBB5EAcAehCEEIMQBwB6EIMQeRAHAHsQhRCEEAcAexCEEHoQBwB7EHMQfRAHAHsQfRCFEAcAfRB8EH4QBwB9EH4QfxAHAIUQfRCDEAcAhRCDEIQQBwB9EH8QghAHAH0QghCDEAcAghB/EIAQBwCCEIAQgRAHAAsQChAJEAcACxAJEAgQBwAYEAYQCRAHABgQCRAbEAcAGhAmECQQBwAaECQQGxAHACwQIhAkEAcALBAkEC4QBwAvEDkQOBAHAC8QOBAuEAcABRBDEEQQBwAFEEQQCBAHAEMQTRBPEAcAQxBPEEQQBwBUEDYQOBAHAFQQOBBWEAcAVxBhEGAQBwBXEGAQVhAHAGgQXhBgEAcAaBBgEGsQBwBqEHUQdBAHAGoQdBBrEAcAfBByEHQQBwB8EHQQfhAHAIYQhxCIEAcAhhCIEIkQBwCIEIcQihAHAIgQihCLEAcAjBCNEI4QBwCMEI4QjxAHAJAQjxCOEAcAkBCOEJEQBwCSEJAQkRAHAJIQkRCTEAcAlBCSEJMQBwCUEJMQlRAHAJYQlxCUEAcAlhCUEJUQBwCYEJkQlxAHAJgQlxCWEAcAmBCGEIkQBwCYEIkQmRAHAIgQmhCbEAcAiBCbEIkQBwCcEJ0QixAHAJwQixCMEAcAnhCcEIwQBwCeEIwQjxAHAJ8QnhCPEAcAnxCPEJAQBwCgEJ8QkBAHAKAQkBCSEAcAoRCgEJIQBwChEJIQlBAHAJcQohChEAcAlxChEJQQBwCZEKMQohAHAJkQohCXEAcAiRCbEKMQBwCJEKMQmRAHAJoQpBClEAcAmhClEJsQBwCkEJoQnRAHAKQQnRCmEAcApxCoEJwQBwCnEJwQnhAHAKkQpxCeEAcAqRCeEJ8QBwCqEKkQnxAHAKoQnxCgEAcAqxCqEKAQBwCrEKAQoRAHAKIQrBCrEAcAohCrEKEQBwCjEK0QrBAHAKMQrBCiEAcAmxClEK0QBwCbEK0QoxAHAKUQpBCuEAcApRCuEK8QBwCwEKYQqBAHALAQqBCxEAcAsRCoEKcQBwCxEKcQshAHALMQshCnEAcAsxCnEKkQBwC0ELMQqRAHALQQqRCqEAcAtRC0EKoQBwC1EKoQqxAHAKwQthC1EAcArBC1EKsQBwCtELcQthAHAK0QthCsEAcArRClEK8QBwCtEK8QtxAHAK8QrhC4EAcArxC4ELkQBwC4EK4QsBAHALgQsBC6EAcAuxCxELIQBwC7ELIQvBAHAL0QvBCyEAcAvRCyELMQBwC+EL0QsxAHAL4QsxC0EAcAvxC+ELQQBwC/ELQQtRAHALYQwBC/EAcAthC/ELUQBwC3EMEQwBAHALcQwBC2EAcAtxCvELkQBwC3ELkQwRAHAJgQwhDDEAcAmBDDEIYQBwCWEMQQwhAHAJYQwhCYEAcAhhDDEMUQBwCGEMUQhxAHAIoQxhDHEAcAihDHEI0QBwCNEMcQyBAHAI0QyBCOEAcAjhDIEMkQBwCOEMkQkRAHAJEQyRDKEAcAkRDKEJMQBwCTEMoQyxAHAJMQyxCVEAcAlRDLEMQQBwCVEMQQlhAHAMIQzBDNEAcAwhDNEMMQBwDEEM4QzBAHAMQQzBDCEAcAwxDNEM8QBwDDEM8QxRAHAMsQ0BDOEAcAyxDOEMQQBwDJENEQ0hAHAMkQ0hDKEAcAyhDSENAQBwDKENAQyxAHAO8L8gvTEAcA7wvTENQQBwDxC/AL8wsHAPEL8wv0CwcA9AvzC/ULBwD0C/UL9gsHAAEM1RDUEAcAAQzUEPELBwACDAMM8gsHAAIM8gvvCwcA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AUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwIIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBOEE4gTjBOQE5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8EAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUlBSYFJwUoBSkFKgUrBSwFLQUuBS8FMAUxBTIFMwU0BTUFNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFZgVnBWgFaQVqBWsFbAVtBW4FbwVwBXEFcgVzBXQFdQV2BXcFeAV5BXoFewV8BX0FfgV/BYAFgQWCBYMFhAWFBYYFhwWIBYkFigWLBYwFjQWOBY8FkAWRBZIFkwWUBZUFlgWXBZgFmQWaBZsFnAWdBZ4FnwWgBaEFogWjBaQFpQWmBacFqAWpBaoFqwWsBa0FrgWvBbAFsQWyBbMFtAW1BbYFtwW4BbkFugW7BbwFvQW+Bb8FwAXBBcIFwwXEBcUFxgXHBcgFyQXKBcsFzAXNBc4FzwXQBdEF0gXTBdQF1QXWBdcF2AXZBdoF2wXcBd0F3gXfBeAF4QXiBeMF5AXlBeYF5wXoBekF6gXrBewF7QXuBe8F8AXxBfIF8wX0BfUF9gX3BfgF+QX6BfsF/AX9Bf4F/wUABgEGAgYDBgQGBQYGBgcGCAYJBgoGCwYMBg0GDgYPBhAGEQYSBhMGFAYVBhYGFwYYBhkGGgYbBhwGHQYeBh8GIAYhBiIGIwYkBiUGJgYnBigGKQYqBisGLAYtBi4GLwYwBjEGMgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGWQZaBlsGXAZdBl4GXwZgBmEGYgZjBmQGZQZmBmcGaAZpBmoGawZsBm0GbgZvBnAGcQZyBnMGdAZ1BnYGdwZ4BnkGegZ7BnwGfQZ+Bn8GgAaBBoIGgwaEBoUGhgaHBogGiQaKBosGjAaNBo4GjwaQBpEGkgaTBpQGlQaWBpcGmAaZBpoGmwacBp0GngafBqAGoQaiBqMGpAalBqYGpwaoBqkGqgarBqwGrQauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6BrsGvAa9Br4GvwbABsEGwgbDBsQGxQbGBscGyAbJBsoGywbMBs0GzgbPBtAG0QbSBtMG1AbVBtYG1wbYBtkG2gbbBtwG3QbeBt8G4AbhBuIG4wbkBuUG5gbnBugG6QbqBusG7AbtBu4G7wbwBvEG8gbzBvQG9Qb2BvcG+Ab5BvoG+wb8Bv0G/gb/BgAHAQcCBwMHBAcFBwYHBwcIBwkHCgcLBwwHDQcOBw8HEAcRBxIHEwcUBxUHFgcXBxgHGQcaBxsHHAcdBx4HHwcgByEHIgcjByQHJQcmBycHKAcpByoHKwcsBy0HLgcvBzAHMQcyBzMHNAc1BzYHNwc4BzkHOgc7BzwHPQc+Bz8HQAdBB0IHQwdEB0UHRgdHB0gHSQdKB0sHTAdNB04HTwdQB1EHUgdTB1QHVQdWB1cHWAdZB1oHWwdcB10HXgdfB2AHYQdiB2MHZAdlB2YHZwdoB2kHagdrB2wHbQduB28HcAdxB3IHcwd0B3UHdgd3B3gHeQd6B3sHfAd9B34HfweAB4EHggeDB4QHhQeGB4cHiAeJB4oHiweMB40HjgePB5AHkQeSB5MHlAeVB5YHlweYB5kHmgebB5wHnQeeB58HoAehB6IHowekB6UHpgenB6gHqQeqB6sHrAetB64HrwewB7EHsgezB9AV0RXSFdMV1BXVFdYV1xXYFdkV2hXbFdwV3RXeFd8V4BXhFeIV4xXkFeUV5hXnFegV6RXqFesV7BXtFe4V7xXwFfEV8hXzFfQV9RX2FfcV+BX5FfoV+xX8Ff0V/hX/FQAWARYCFgMWBBYFFgYWBxYIFgkWChYLFgwWDRYOFg8WEBYRFhIWExYUFhUWFhYXFhgWGRYaFhsWHBYdFh4WHxYgFiEWIhYjFiQWJRYmFicWKBYpFioWKxYsFi0WLhYvFjAWMRYyFjMWNBY1FjYWNxY4FjkWOhY7FjwWPRY+Fj8WQBZBFkIWQxZEFkUWRhZHFkgWSRZKFksWTBZNFk4WTxZQFlEWUhZTFlQWVRZWFlcWWBZZFloWWxZcFl0WXhZfFmAWYRZiFmMWZBZlFmYWZxZoFmkWahZrFmwWbRZuFm8WcBZxFnIWcxZ0FnUWdhZ3FngWeRZ6FnsWfBZ9Fn4WfxaAFoEWghaDFoQWhRaGFocWiBaJFooWixaMFo0WjhaPFpAWkRaSFpMWlBaVFpYWlxaYFpkWmhabFpwWnRaeFp8WoBahFqIWoxakFqUWphanFqgWqRaqFqsWrBatFq4WrxawFrEWshazFrQWtRa2FrcWuBa5FroWuxa8Fr0Wvha/FsAWwRbCFsMWxBbFFsYWxxbIFskWyhbLFswWzRbOFs8W0BbRFtIW0xbUFtUW1hbXFtgW2RbaFtsW3BbdFt4W3xbgFuEW4hbjFuQW5RbmFucW6BbpFuoW6xbsFu0W7hbvFvAW8RbyFvMW9Bb1FvYW9xb4FvkW+hb7FvwW/Rb+Fv8WABcBFwIXAxcEFwUXBhcHFwgXCRcKFwsXDBcNFw4XDxcQFxEXEhcTFxQXFRcWFxcXGBcZFxoXGxccFx0XHhcfFyAXIRciFyMXJBclFyYXJxcoFykXKhcrFywXLRcuFy8XMBcxFzIXMxc0FzUXNhc3FzgXORc6FzsXPBc9Fz4XPxdAF0EXQhdDF0QXRRdGF0cXSBdJF0oXSxdMF00XThdPF1AXURdSF1MXVBdVF1YXVxdYF1kXWhdbF1wXXRdeF18XYBdhF2IXYxdkF2UXZhdnF2gXaRdqF2sXbBdtF24XbxdwF3EXchdzF3QXdRd2F3cXeBd5F3oXexd8F30Xfhd/F4AXgReCF4MXhBeFF4YXhxeIF4kXiheLF4wXjReOF48XkBeRF5IXkxeUF5UXlheXF5gXmReaF5sXnBedF54XnxegF6EXohejF6QXpRemF6cXqBepF6oXqxesF60XrhevF7AXsReyF7MXtBe1F7YXtxe4F7kXuhe7F7wXvRe+F78XwBfBF8IXwxfEF8UXxhfHF8gXyRfKF8sXzBfNF84XzxfQF9EX0hfTF9QX1RfWF9cX2BfZF9oX2xfcF90X3hffF+AX4RfiF+MX5BflF+YX5xfoF+kX6hfrF+wX7RfuF+8X8BfxF/IX8xf0F/UX9hf3F/gX+Rf6F/sX/Bf9F/4X/xcAGAEYAhgDGAQYBRgGGAcYCBgJGAoYCxgMGA0YDhgPGBAYERgSGBMYFBgVGBYYFxgYGBkYGhgbGBwYHRgeGB8YIBghGCIYIxgkGCUYJhgnGCgYKRgqGCsYLBgtGC4YLxgwGDEYMhgzGDQYNRg2GDcYOBg5GDoYOxg8GD0YPhg/GEAYQRhCGEMYRBhFGEYYRxhIGEkYShhLGEwYTRhOGE8YUBhRGFIYUxhUGFUYVhhXGFgYWRhaGFsYXBhdGF4YXxhgGGEYYhhjGGQYZRhmGGcYaBhpGGoYaxhsGG0YbhhvGHAYcRhyGHMYdBh1GHYYdxh4GHkYehh7GHwYfRh+GH8YgBiBGIIYgxiEGIUYhhiHGIgYiRiKGIsYjBiNGI4YjxiQGJEYkhiTGJQYlRiWGJcYmBiZGJoYmxicGJ0YnhifGKAYoRiiGKMYpBilGKYYpxioGKkYqhirGKwYrRiuGK8YsBixGLIYsxi0GLUYthi3GLgYuRi6GLsYvBi9GL4YvxjAGMEYwhjDGMQYxRjGGMcYyBjJGMoYyxjMGM0YzhjPGNAY0RjSGNMY1BjVGNYY1xjYGNkY2hjbGNwY3RjeGN8Y4BjhGOIY4xjkGOUY5hjnGOgY6RjqGOsY7BjtGO4Y7xjwGPEY8hjzGPQY9Rj2GPcY+Bj5GPoY+xj8GP0Y/hj/GAAZARkCGQMZBBkFGQYZBxkIGQkZChkLGQwZDRkOGQ8ZEBkRGRIZExkUGRUZFhkXGRgZGRkaGRsZHBkdGR4ZHxkgGSEZIhkjGSQZJRkmGScZKBkpGSoZKxksGS0ZLhkvGTAZMRkyGTMZNBk1GTYZNxk4GTkZOhk7GTwZPRk+GT8ZQBlBGUIZQxlEGUUZRhlHGUgZSRlKGUsZTBlNGU4ZTxlQGVEZUhlTGVQZVRlWGVcZWBlZGVoZWxlcGV0ZXhlfGWAZYRliGWMZZBllGWYZZxloGWkZahlrGWwZbRluGW8ZcBlxGXIZcxl0GXUZdhl3GXgZeRl6GXsZfBl9GX4ZfxmAGYEZghmDGYQZhRmGGYcZiBmJGYoZixmMGY0ZjhmPGZAZkRmSGZMZlBmVGZYZlxmYGZkZmhmbGZwZnRmeGZ8ZoBmhGaIZoxmkGaUZphmnGagZqRmqGasZrBmtGa4ZrxmwGbEZshmzGbQZtRm2GbcZuBm5GboZuxm8Gb0Zvhm/GcAZwRnCGcMZxBnFGcYZxxnIGckZyhnLGcwZzRnOGc8Z0BnRGdIZ0xnUGdUZ1hnXGdgZ2RnaGdsZ3BndGd4Z3xngGeEZ4hnjGeQZ5RnmGecZ6BnpGeoZ6xnsGe0Z7hnvGfAZ8RnyGfMZ9Bn1GfYZ9xn4GfkZ+hn7GfwZ/Rn+Gf8ZABoBGgIaAxoEGgUaBhoHGggaCRoKGgsaDBoNGg4aDxoQGhEaEhoTGhQaFRoWGhcaGBoZGhoaGxocGh0aHhofGiAaIRoiGiMaJBolGiYaJxooGikaKhorGiwaLRouGi8aMBoxGjIaMxo0GjUaNho3GjgaORo6GjsaPBo9Gj4aPxpAGkEaQhpDGkQaRRpGGkcaSBpJGkoaSxpMGk0aThpPGlAaURpSGlMaVBpVGlYaVxpYGlkaWhpbGlwaXRpeGl8aYBphGmIaYxpkGmUaZhpnGmgaaRpqGmsabBptGm4abxpwGnEachpzGnQadRp2GncaeBp5Gnoaexp8Gn0afhp/GoAagRqCGoMahBqFGoYahxqIGokaihqLGowajRqOGo8akBqRGpIakxqUGpUalhqXGpgamRqaGpsanBqdGp4anxqgGqEaohqjGqQapRqmGqcaqBqpGqoaqxqsGq0arhqvGrAasRqyGrMatBq1GrYatxq4Grkauhq7GrwavRq+Gr8awBrBGsIawxrEGsUaxhrHGsgayRrKGssazBrNGs4azxrQGtEa0hrTGtQa1RrWGtca2BrZGtoa2xrcGt0a3hrfGuAa4RriGuMa5BrlGuYa5xroGuka6hrrGuwa7RruGu8a8BrxGvIa8xr0GvUa9hr3Gvga+Rr6Gvsa/Br9Gv4a/xoAGwEbAhsDGwQbBRsGGwcbCBsJGwobCxsMGw0bDhsPGxAbERsSGxMbFBsVGxYbFxsYGxkbGhsbGxwbHRseGx8bIBshGyIbIxskGyUbJhsnGygbKRsqGysbLBstGy4bLxswGzEbMhszGzQbNRs2GzcbOBs5GzobOxs8Gz0bPhs/G0AbQRtCG0MbRBtFG0YbRxtIG0kbShtLG0wbTRsYHBkcGhwbHBwcHRweHB8cIBwhHCIcIxwkHCUcJhwnHCgcKRwqHCscLBwtHDBB9QEAAHJhdjQtZmwtbGVucwDwAJACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CAAMBAwIDAwMEAwUDBgMHA4oUixSMFI0UjhSPFJAUkRSSFJMUlBSVFJYUlxSYFJkUmhSbFJwUnRSeFJ8UoBShFKIUoxSkFKUUphSnFKgUqRSqFKsUrBStFK4UrxSwFLEUshSzFLQUtRS2FLcUuBS5FLoUuxS8FL0UvhS/FMAUwRTCFMMUxBTFFMYUxxTIFMkUyhTLFMwUzRTOFM8U0BTRFNIU0xTUFNUU1hTXFNgU2RTaFNsU3BTdFN4U3xTgFOEU4hTjFOQU5RTmFOcU6BTpFOoU6xTsFO0U7hTvFPAU8RTyFPMU9BT1FPYU9xT4FPkU+hT7FPwU/RT+FP8UABUBFTBB3wYAAHJhdjQtZmwtbWlycm9yAGQDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/AwAEAQQCBAMEBAQFBAYEBwS0B7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfzB/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/BwAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCQIJQgmCCcIKAgpCCoIKwgsCC0ILggvCDAIMQgyCDMINAg1CDYINwg4CDkIOgg7CDwIPQg+CD8IQAhBCEIIQwhECEUIRghHCEgISQhKCEsITAhNCE4ITwhQCFEIUghTCFQIVQhWCFcIWAhZCFoIWwhcCF0IXghfCGAIYQhiCGMIZAhlCGYIZwhoCGkIaghrCGwIbQhuCG8IcAhxCHIIcwh0CHUIdgh3CHgIeQh6CHsIfAh9CH4IfwiACIEIggiDCIQIhQiGCIcIiAiJCIoIiwiMCI0IjgiPCJAIkQiSCJMIlAiVCJYIlwiYCJkImgibCJwInQieCJ8IoAihCKIIowikCKUIpginCKgIqQiqCKsIrAitCK4IrwiwCLEIThtPG1AbURtSG1MbVBtVG1YbVxtYG1kbWhtbG1wbXRteG18bYBthG2IbYxtkG2UbZhtnG2gbaRtqG2sbbBttG24bbxtwG3EbchtzG3QbdRt2G3cbeBt5G3obext8G30bfht/G4AbgRuCG4MbhBuFG4YbhxuIG4kbLhwvHDAcMRwyHDMcNBw1HDYcNxw4HDkcOhw7HEYcRxxIHEkcShxLHEwcTRxOHE8cUBxRHGIcYxxkHGUcZhxnHGgcaRxqHGscbBxtHG4cbxxwHHEcchxzHHQcdRx2HHcceBx5HHocexx8HH0cfhx/HIAcgRyCHIMchByFHIYchxyIHIkcihyLHIwcjRyOHI8ckByRHJIckxyUHJUclhyXHJgcmRyaHJscnBydHJ4cnxygHKEcohyjHKQcpRymHKccqBypHKocqxysHK0crhyvHLAcsRyyHLMctBy1HLYctxy4HLkcuhy7HLwcvRy+HL8cwBzBHMIcwxzEHMUcxhzHHMgcyRzKHMsczBzNHM4czxzQHNEc0hzTHNQc1RzWHNcc2BzZHNoc2xzcHN0c3hzfHEIdQx1EHUUdRh1HHUgdSR1KHUsdTB1NHU4dTx1aHVsdXB1dHV4dXx1gHWEdYh1jHWQdZR1mHWcdaB1pHWodax1sHW0dbh1vHXAdcR1yHXMddB11HXYddx14HXkdeh17HXwdfR1+HX8dgB2BHYIdgx2EHYUdhh2HHYgdiR2KHYsdjB2NHY4djx2QHZEdkh2THZQdlR2WHZcdmB2ZHZodmx2cHZ0dnh2fHaAdoR2iHaMdpB2lHaYdpx2oHakdqh2rHawdrR2uHa8dsB2xHbIdsx20HbUdth23HbgduR26HbsdvB29Hb4dvx3AHcEdwh3DHcQdxR3GHccdyB3JHcodyx3MHc0dzh3PHdAd0R1KHkseTB5NHk4eTx5QHlEeUh5THlQeVR4wQTMBAAByYXY0LWZsLW9yYW5nZQCOALIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCFQUVRRWFFcUWBRZFFoUWxRcFF0UXhRfFGAUYRRiFGMUZBRlFGYUZxRoFGkUahRrFGwUbRRuFG8UcBRxFHIUcxR0FHUUdhR3FHgUeRR6FHsUfBR9FH4UfxSAFIEUghSDFIQUhRSGFIcUiBSJFFIcUxxUHFUcVhxXHNId0x3UHdUd1h3XHdgd2R3aHdsd3B3dHd4d3x3gHeEd4h3jHeQd5R3mHecdVh5XHlgeWR5aHlseMEFTAQAAcmF2NC1wbGF0ZQCgAOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJMEGtBgAAcmF2NC1zaGllbGRzAEwDiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCuYK5wroCukK6grrCuwK7QruCu8K8ArxCvIK8wr0CvUK9gr3CvgK+Qr6CvsK/Ar9Cv4K/woACwELAgsDCwQLBQsGCwcLCAsJCwoLCwsMCw0LDgsPCxALEQsSCxMLFAsVCxYLFwsYCxkLGgsbCxwLHQseCx8LIAshCyILIwskCyULJgsnCygLKQsqCysLLAstCy4LLwswCzELMgszCzQLNQs2CzcLOAs5CzoLOws8Cz0LPgs/C0ALQQtCC0MLRAtFC0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtXC1gLWQtaC1sLXAtdC14LXwswETERMhEzETQRNRE2ETcROBE5EToROxE8ET0RPhE/EUARQRFCEUMRRBFFEUYRRxFIEUkRShFLEUwRTRFOEU8RUBFREVIRUxFUEVURVhFXEVgRWRFaEVsRXBFdEV4RXxFgEWERYhFjEWQRZRFmEWcRaBFpEWoRaxFsEW0RbhFvEXARcRFyEXMRdBF1EXYRdxF4EXkRehF7EXwRfRF+EX8RgBGBEYIRgxGEEYURhhGHEYgRiRGKEYsRjBGNEY4RjxGQEZERkhGTEZQRlRGWEZcRmBGZEZoRmxGcEZ0RnhGfEaARoRGiEaMRpBGlEaYRpxGoEakRqhGrEawRrRGuEa8RsBGxEbIRsxG0EbURthG3EbgRuRG6EbsRvBG9Eb4RvxHAEcERwhHDEcQRxRHGEccRyBHJEcoRyxHMEc0RzhHPEdAR0RHSEdMR1BHVEdYR1xHYEdkR2hHbEdwR3RHeEd8R4BHhEeIR4xHkEeUR5hHnEegR6RHqEesR7BHtEe4R7xHwEfER8hHzEfQR9RH2EfcR+BH5EfoR+xH8Ef0R/hH/ESgSKRIqEisSLBItEi4SLxIwEjESMhIzEjQSNRI2EjcSOBI5EjoSOxI8Ej0SPhI/EkASQRJCEkMSRBJFEkYSRxJIEkkSShJLEkwSTRJOEk8SPhQ/FEAUQRRCFEMURBRFFEYURxRIFEkUShRLFEwUTRROFE8UUBRRFFIUUxSKG4sbjBuNG44bjxuQG5EbkhuTG5QblRuWG5cbmBuZG5obmxucG50bnhufG6AboRuiG6MbpBulG6YbpxuoG6kbqhurG6wbrRuuG68bsBuxG9ob2xvcG90b3hvfG+Ab4RviG+Mb5BvlG+Yb5xvoG+kb6hvrG+wb7RvuG+8b8BvxG/Ib8xv0G/Ub9hv3G/gb+Rv6G/sb/Bv9G/4b/xsAHAEcAhwDHAQcBRwGHAccCBwJHAocCxwMHA0cDhwPHBAcERwSHBMcFBwVHBYcFxwwQSwKAAByYXY0LWNocm9tZQAMBWALYQtiC2MLZAtlC2YLZwtoC2kLagtrC2wLbQtuC28LcAtxC3ILcwt0C3ULdgt3C3gLeQt6C3sLfAt9C34LfwuAC4ELgguDC4QLhQuGC4cLiAuJC4oLiwuMC40LjguPC5ALkQuSC5MLlAuVC5YLlwuYC5kLmgubC5wLnQueC58LoAuhC6ILowukC6ULpgunC6gLqQuqC6sLrAutC64LrwuwC7ELsguzC7QLtQu2C7cLuAu5C7oLuwu8C70Lvgu/C8ALwQvCC8MLxAvFC8YLxwvIC8kLygvLC8wLzQvOC88L0AvRC9IL0wvUC9UL1gvXC9gL2QvaC9sL3AvdC94L3wvgC+EL4gvjC+QL5QvmC+cL6AvpC+oL6wvsC+0L7gvvC/AL8QvyC/ML9Av1C/YL9wv4C/kL+gv7C/wL/Qv+C/8LAAwBDAIMAwwEDAUMBgwHDAgMCQwKDAsMDAwNDA4MDwwQDBEMEgwTDBQMFQwWDBcMGAwZDBoMGwwcDB0MHgwfDCAMIQwiDCMMJAwlDCYMJwwoDCkMKgwrDCwMLQwuDC8MMAwxDDIMMww0DDUMNgw3DDgMOQw6DDsMPAw9DD4MPwxADEEMQgxDDEQMRQxGDEcMSAxJDEoMSwxMDE0MTgxPDFAMUQxSDFMMVAxVDFYMVwxYDFkMWgxbDFwMXQxeDF8MYAxhDGIMYwxkDGUMZgxnDGgMaQxqDGsMbAxtDG4MbwxwDHEMcgxzDHQMdQx2DHcMeAx5DHoMewx8DH0Mfgx/DIAMgQyCDIMMhAyFDIYMhwyIDIkMigyLDIwMjQyODI8MkAyRDJIMkwyUDJUMlgyXDJgMmQyaDJsMnAydDJ4MnwygDKEMogyjDKQMpQymDKcMqAypDKoMqwysDK0MrgyvDLAMsQyyDLMMtAy1DLYMtwy4DLkMugy7DLwMvQy+DL8MwAzBDMIMwwzEDMUMxgzHDMgMyQzKDMsMzAzNDM4MzwzQDNEM0gzTDNQM1QzWDNcM2AzZDNoM2wzcDN0M3gzfDOAM4QziDOMM5AzlDOYM5wzoDOkM6gzrDOwM7QzuDO8M8AzxDPIM8wz0DPUM9gz3DPgM+Qz6DPsM/Az9DP4M/wwADQENAg0DDQQNBQ0GDQcNCA0JDQoNCw0MDQ0NDg0PDRANEQ0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0tDS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDUwNTQ1ODU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1pDWoNaw1sDW0Nbg1vDXANcQ1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NgA2BDYINgw2EDYUNhg2HDYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw3ADcENwg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDdwN3Q3eDd8N4A3hDeIN4w3kDeUN5g3nDegN6Q3qDesN7A3tDe4N7w3wDfEN8g3zDfQN9Q32DfcN+A35DfoN+w38Df0N/g3/DQAOAQ4CDgMOBA4FDgYOBw4IDgkOCg4LDgwODQ4ODg8OEA4RDhIOEw4UDhUOFg4XDhgOGQ4aDhsOHA4dDh4OHw4gDiEOIg4jDiQOJQ4mDicOKA4pDioOKw4sDi0OLg4vDjAOMQ4yDjMONA41DjYONw44DjkOOg47DjwOPQ4+Dj8OQA5BDkIOQw5EDkUORg5HDkgOSQ5KDksOTA5NDk4OTw5QDlEOUg5TDlQOVQ5WDlcOWA5ZDloOWw5cDl0OXg5fDmAOYQ5iDmMOZA5lDmYOZw5oDmkOag5rDmwObQ5uDm8OcA5xDnIOcw50DnUOdg53DngOeQ56DnsOfA59Dn4Ofw6ADoEOgg6DDoQOhQ6GDocOiA6JDooOiw6MDo0Ojg6PDpAOkQ6SDpMOlA6VDpYOlw6YDpkOmg6bDpwOnQ6eDp8OoA6hDqIOow6kDqUO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AAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAAGAAAABgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAYAAAAGAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAAAABAAAAAQAAAAEAAAABAAAAAQAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAGAAAABgAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAGAAAABgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAcAAAAHAAAAAQAAAAEAAAAHAAAABQAAAAEAAAABAAAABQAAAAUAAAABAAAAAQAAAAUAAAAFAAAAAQAAAAEAAAAFAAAABQAAAAEAAAABAAAABwAAAAcAAAABAAAAAQAAAAcAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAADAAAAAQAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAADAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABwAAAAcAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAGAAAAAgAAAAYAAAAGAAAABAAAAAYAAAAEAAAABAAAAAQAAAABAAAAAQAAAAEAAAABAAAABQAAAAUAAAAEAAAABAAAAAEAAAABAAAAAQAAAAEAAAACAAAAAwAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAHAAAABwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAQAAAAEAAAABQAAAAUAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAAAAAQAAAAUAAAAFAAAABQAAAAEAAAABAAAAAQAAAAEAAAAEAAAABAAAAAUAAAAFAAAABAAAAAQAAAAFAAAABAAAAAUAAAAFAAAABQAAAAUAAAABAAAAAQAAAAEAAAABAAAABQAAAAUAAAABAAAAAQAAAAUAAAAFAAAAAQAAAAUAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAEAAAABAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAkAAAABAAAACgAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAABAAAAAQAAAAMAAAADAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAQAAAAEAAAADAAAAAwAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAABAAAAAgAAAAIAAAADAAAAAwAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAB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GAAXABYABwAYABkAFwAHABoAEQAbAAcAGgAQABEABwAcABsAHQAHABwAGgAbAAcAHgAcAB0ABwAeAB8AHAAHACAAGQAYAAcAIAAhABkABwAiACEAIAAHACIAIwAhAAcAJAAfAB4ABwAkAAYAHwAHACUABgAkAAcAJQAJAAYABwAUAAMAAAAHABQAEwADAAcAAgAUAAAABwACABYAFAAHAAQAFgACAAcABAAYABYABwALAAkAJQAHAAsADQAJAAcADAAmACcABwAMAAsAJgAHABEAJwAoAAcAEQAMACcABwAOABgABAAHAA4AIAAYAAcADwAgAA4ABwAPACIAIAAHABsAKAApAAcAGwARACgABwAdACkAKgAHAB0AGwApAAcAKwAsAC0ABwArAC4ALAAHAC8ALgArAAcALwAwAC4ABwAxADAALwAHADEAMgAwAAcAMwA0ADUABwAzADYANAAHADYAMgA0AAcANgAwADIABwA3ADYAMwAHADcAOAA2AAcAOAAwADYABwA4AC4AMAAHADkAOAA3AAcAOQA6ADgABwA6AC4AOAAHADoALAAuAAcAOwA8AD0ABwA7AD4APAAHAD4APwA8AAcAPgBAAD8ABwBBAD4AOwAHAEEAQgA+AAcAQgBAAD4ABwBCAEMAQAAHAEQAQgBBAAcARABFAEIABwBFAEMAQgAHAEUARgBDAAcARwBFAEQABwBHAEgARQAHAEgARgBFAAcASABJAEYABwBKAEgARwAHAEoASwBIAAcASwBJAEgABwBLAEwASQAHAE0ASwBKAAcATQBOAEsABwBOAEwASwAHAE4ATwBMAAcAUABOAE0ABwBQAFEATgAHAFEATwBOAAcAUQBSAE8ABwBDAFMAQAAHAEMAVABTAAcAVAAtAFMABwBUAFUALQAHAEYAVABDAAcARgBWAFQABwBWAFUAVAAHAFYAVwBVAAcASQBWAEYABwBJAFgAVgAHAFgAVwBWAAcAWABZAFcABwBMAFgASQAHAEwAWgBYAAcAWgBZAFgABwBaAFsAWQAHAE8AWgBMAAcATwBcAFoABwBcAFsAWgAHAFwAXQBbAAcAUgBcAE8ABwBSAF4AXAAHAF4AXQBcAAcAXgBfAF0ABwBAAGAAPwAHAEAAUwBgAAcAUwAsAGAABwBTAC0ALAAHAD8AYQA8AAcAPwBgAGEABwBgADoAYQAHAGAALAA6AAcAPABiAD0ABwA8AGEAYgAHAGEAOQBiAAcAYQA6ADkABwBjAGQAZQAHAGMAZgBkAAcAZwBlAGgABwBnAGMAZQAHAGkAaABqAAcAaQBnAGgABwBrAGoAbAAHAGsAaQBqAAcAbQBsAG4ABwBtAGsAbAAHAG8AbgBwAAcAbwBtAG4ABwBxAGYAYwAHAHEAcgBmAAcAcwBjAGcABwBzAHEAYwAHAHQAZwBpAAcAdABzAGcABwB1AGkAawAHAHUAdABpAAcAdgBrAG0ABwB2AHUAawAHAHcAbQBvAAcAdwB2AG0ABwB4AGQAZgAHAHgAeQBkAAcAZgB6AHgABwBmAHIAegAHAHsAbgB8AAcAewBwAG4ABwB8AGwAfQAHAHwAbgBsAAcAfQBqAH4ABwB9AGwAagAHAH4AaAB/AAcAfgBqAGgABwB/AGUAgAAHAH8AaABlAAcAgABkAIEABwCAAGUAZAAHAIEAeQCCAAcAgQBkAHkABwCCAHgAgwAHAIIAeQB4AAcAgwB6AIQABwCDAHgAegAHAIUAgQCGAAcAhQCAAIEABwCHAIAAhQAHAIcAfwCAAAcAiAB/AIcABwCIAH4AfwAHAIkAfgCIAAcAiQB9AH4ABwCKAH0AiQAHAIoAfAB9AAcAiwB8AIoABwCLAHsAfAAHADEAjAAyAAcAMQCGAIwABwCGAIIAjAAHAIYAgQCCAAcAMgCNADQABwAyAIwAjQAHAIwAgwCNAAcAjACCAIMABwA0AI4ANQAHADQAjQCOAAcAjQCEAI4ABwCNAIMAhAAHAI8AkACRAAcAjwCSAJAABwCSAJMAkAAHAJIAlACTAAcAlACVAJMABwCUAJYAlQAHAJcAmACZAAcAlwCaAJgABwCWAJoAlwAHAJYAlACaAAcAmgCbAJgABwCaAJwAmwAHAJQAnACaAAcAlACSAJwABwCcAJ0AmwAHAJwAngCdAAcAkgCeAJwABwCSAI8AngAHAJ8AoAChAAcAnwCiAKAABwCjAKIAnwAHAKMApACiAAcAogClAKAABwCiAKYApQAHAKQApgCiAAcApACnAKYABwCmAKgApQAHAKYAqQCoAAcApwCpAKYABwCnAKoAqQAHAKkAqwCoAAcAqQCsAKsABwCqAKwAqQAHAKoArQCsAAcArACuAKsABwCsAK8ArgAHAK0ArwCsAAcArQCwAK8ABwCvALEArgAHAK8AsgCxAAcAsACyAK8ABwCwALMAsgAHALIAUACxAAcAsgBRAFAABwCzAFEAsgAHALMAUgBRAAcAtACnAKQABwC0ALUApwAHAJEAtQC0AAcAkQC2ALUABwC1AKoApwAHALUAtwCqAAcAtgC3ALUABwC2ALgAtwAHALcArQCqAAcAtwC5AK0ABwC4ALkAtwAHALgAugC5AAcAuQCwAK0ABwC5ALsAsAAHALoAuwC5AAcAugC8ALsABwC7ALMAsAAHALsAvQCzAAcAvAC9ALsABwC8AL4AvQAHAL0AUgCzAAcAvQBeAFIABwC+AF4AvQAHAL4AXwBeAAcAvwCkAKMABwC/ALQApAAHAI8AtAC/AAcAjwCRALQABwDAAKMAnwAHAMAAvwCjAAcAngC/AMAABwCeAI8AvwAHAMEAnwChAAcAwQDAAJ8ABwCdAMAAwQAHAJ0AngDAAAcAwgDDAMQABwDCAMUAwwAHAMQAxgDHAAcAxADDAMYABwDHAMgAyQAHAMcAxgDIAAcAyQDKAMsABwDJAMgAygAHAMsAzADNAAcAywDKAMwABwDNAG8AcAAHAM0AzABvAAcAxQDOAMMABwDFAM8AzgAHAMMA0ADGAAcAwwDOANAABwDGANEAyAAHAMYA0ADRAAcAyADSAMoABwDIANEA0gAHAMoA0wDMAAcAygDSANMABwDMAHcAbwAHAMwA0wB3AAcAwgDUAMUABwDCANUA1AAHANYAxQDUAAcA1gDPAMUABwDNAHsA1wAHAM0AcAB7AAcAywDXANgABwDLAM0A1wAHAMkA2ADZAAcAyQDLANgABwDHANkA2gAHAMcAyQDZAAcAxADaANsABwDEAMcA2gAHAMIA2wDcAAcAwgDEANsABwDVANwA3QAHANUAwgDcAAcA1ADdAN4ABwDUANUA3QAHANYA3gDfAAcA1gDUAN4ABwDcAOAA4QAHANwA2wDgAAcA2wDiAOAABwDbANoA4gAHANoA4wDiAAcA2gDZAOMABwDZAOQA4wAHANkA2ADkAAcA2ADlAOQABwDYANcA5QAHANcAiwDlAAcA1wB7AIsABwDmAJUAlgAHAOYA4QCVAAcA3QDhAOYABwDdANwA4QAHAOcAlgCXAAcA5wDmAJYABwDeAOYA5wAHAN4A3QDmAAcA6ACXAJkABwDoAOcAlwAHAN8A5wDoAAcA3wDeAOcABwDpAOoA6wAHAOkA7ADqAAcA7QDsAOkABwDtAO4A7AAHAO8A8ADxAAcA7wDyAPAABwDzAPQA9QAHAPMA9gD0AAcA9wDvAPEABwD3APgA7wAHAPkA6gDsAAcA+QD6AOoABwD7AOwA7gAHAPsA+QDsAAcA/ADuAO0ABwD8APsA7gAHAP0A9gDzAAcA/QD+APYABwD/APgA9wAHAP8AAAH4AAcAAQH6APkABwABAQIB+gAHAAMB+QD7AAcAAwEBAfkABwAEAfsA/AAHAAQBAwH7AAcABQH+AP0ABwAFAQYB/gAHAAcBAAH/AAcABwEIAQABBwAJAQIBAQEHAAkBCgECAQcACwEBAQMBBwALAQkBAQEHAAwBAwEEAQcADAELAQMBBwANAQYBBQEHAA0BDgEGAQcADwEIAQcBBwAPARABCAEHABEBCgEJAQcAEQESAQoBBwATAQkBCwEHABMBEQEJAQcAFAELAQwBBwAUARMBCwEHABUBFgEXAQcAFQEYARYBBwAZARUBFwEHABkBGgEVAQcAGwEaARkBBwAbARwBGgEHAB0BHAEbAQcAHQEeARwBBwAfAR4BHQEHAB8BIAEeAQcAFgEhARcBBwAWASIBIQEHABcBIwEZAQcAFwEhASMBBwAZASQBGwEHABkBIwEkAQcAGwElAR0BBwAbASQBJQEHAB0BJgEfAQcAHQElASYBBwAnASgBKQEHACcBKgEoAQcAKwEqAScBBwArASwBKgEHAC0BLAErAQcALQEuASwBBwAvAS4BLQEHAC8BMAEuAQcAMQEwAS8BBwAxATIBMAEHADMBNAE1AQcAMwE2ATQBBwA3ATMBOAEHADcBNgEzAQcAOQEzATUBBwA5AToBMwEHADgBOgE7AQcAOAEzAToBBwA8AToBOQEHADwBPQE6AQcAOwE9AT4BBwA7AToBPQEHAD8BPQE8AQcAPwFAAT0BBwA+AUABQQEHAD4BPQFAAQcAQgFAAT8BBwBCAUMBQAEHAEEBQwFEAQcAQQFAAUMBBwAVAUUBGAEHABUBRgFFAQcARwFIAUkBBwBHAUoBSAEHABoBRgEVAQcAGgFLAUYBBwBJAUwBTQEHAEkBSAFMAQcAHAFLARoBBwAcAU4BSwEHAE0BTwFQAQcATQFMAU8BBwAeAU4BHAEHAB4BUQFOAQcAUAFSAVMBBwBQAU8BUgEHACABUQEeAQcAIAFUAVEBBwBTAVUBVgEHAFMBUgFVAQcAKgE0ASgBBwAqATUBNAEHAEcBJwEpAQcARwFJAScBBwBXAVgBWQEHAFcBWgFYAQcALAE1ASoBBwAsATkBNQEHAEkBKwEnAQcASQFNASsBBwAuATkBLAEHAC4BPAE5AQcATQEtASsBBwBNAVABLQEHADABPAEuAQcAMAE/ATwBBwBQAS8BLQEHAFABUwEvAQcAMgE/ATABBwAyAUIBPwEHAFMBMQEvAQcAUwFWATEBBwBbAVwBXQEHAFsBXgFcAQcAXgFfAVwBBwBeAWABXwEHAGEBXgFbAQcAYQFiAV4BBwBiAWABXgEHAGIBYwFgAQcAZAFiAWEBBwBkAWUBYgEHAGUBYwFiAQcAZQFmAWMBBwBdAWcBaAEHAF0BXAFnAQcAXAFpAWcBBwBcAV8BaQEHAGgBagFrAQcAaAFnAWoBBwBnAWwBagEHAGcBaQFsAQcA+ABtAe8ABwD4AG4BbQEHAAABbgH4AAcAAAFvAW4BBwAIAW8BAAEHAAgBcAFvAQcAEAFwAQgBBwAQAXEBcAEHAO8AcgHyAAcA7wBtAXIBBwD3AHMB/wAHAPcAdAFzAQcAdAE+AXMBBwB0ATsBPgEHAPEAdAH3AAcA8QB1AXQBBwB1ATsBdAEHAHUBOAE7AQcA8AB1AfEABwDwAHYBdQEHAHYBOAF1AQcAdgE3ATgBBwD/AHcBBwEHAP8AcwF3AQcAcwFBAXcBBwBzAT4BQQEHAAcBeAEPAQcABwF3AXgBBwB3AUQBeAEHAHcBQQFEAQcAeQF6AXsBBwB5AXwBegEHAHsBfQF+AQcAewF6AX0BBwB/AYABgQEHAH8BggGAAQcAggGDAYABBwCCAYQBgwEHAIUBhgGHAQcAhQGIAYYBBwCIAYkBhgEHAIgBigGJAQcAiwGMAY0BBwCLAY4BjAEHAI8BkAGRAQcAjwGSAZABBwCMAZMBjQEHAIwBlAGTAQcAhQGVAYgBBwCFAZYBlQEHAIgBlwGKAQcAiAGVAZcBBwCKAZgBiQEHAIoBlwGYAQcAkgGZAZABBwCSAZoBmQEHAJQBmwGTAQcAlAGcAZsBBwCWAZ0BlQEHAJYBngGdAQcAlQGfAZcBBwCVAZ0BnwEHAJcBoAGYAQcAlwGfAaABBwChAaIBowEHAKEBpAGiAQcAogGlAaMBBwCiAaYBpQEHAKYBpwGlAQcApgGoAacBBwCpAaEBowEHAKkBqgGhAQcAqwGjAaUBBwCrAakBowEHAKwBpQGnAQcArAGrAaUBBwCtAa4BrwEHAK0BsAGuAQcAsAGxAa4BBwCwAbIBsQEHALIBswGxAQcAsgG0AbMBBwC1AbYBtwEHALUBuAG2AQcAtgG5AboBBwC2AbgBuQEHALYBuwG3AQcAtgG8AbsBBwC8AboBvQEHALwBtgG6AQcAvAG+AbsBBwC8Ab8BvgEHAL8BvQHAAQcAvwG8Ab0BBwDBAaIBpAEHAMEBwgGiAQcAwgHDAcQBBwDCAcEBwwEHAMIBpgGiAQcAwgHFAaYBBwDFAcQBxgEHAMUBwgHEAQcAxQGoAaYBBwDFAccBqAEHAMcBxgHIAQcAxwHFAcYBBwC1AbABrQEHALUBtwGwAQcArgHDAa8BBwCuAcQBwwEHAMkBygHLAQcAyQHMAcoBBwC3AbIBsAEHALcBuwGyAQcAsQHEAa4BBwCxAcYBxAEHALsBtAGyAQcAuwG+AbQBBwCzAcYBsQEHALMByAHGAQcAzQHOAc8BBwDNAdABzgEHANEB0AHNAQcA0QHSAdABBwDTAc8B1AEHANMBzQHPAQcA1QHNAdMBBwDVAdEBzQEHANYB1AHXAQcA1gHTAdQBBwDYAdMB1gEHANgB1QHTAQcA2QGUAYwBBwDZAdoBlAEHANoBnAGUAQcA2gHbAZwBBwDcAYwBjgEHANwB2QGMAQcA3QGTAZsBBwDdAd4BkwEHAMAB3gHdAQcAwAG9Ad4BBwDeAY0BkwEHAN4B3wGNAQcAvQHfAd4BBwC9AboB3wEHAN8BiwGNAQcA3wHgAYsBBwC6AeAB3wEHALoBuQHgAQcA4QHiAeMBBwDhAeQB4gEHAOEBgQHlAQcA4QHmAYEBBwDnAeMB4gEHAOcB6AHjAQcAEwHnAeIBBwATARQB5wEHABEB4gHkAQcAEQETAeIBBwASAeQB6QEHABIBEQHkAQcAJQHqASYBBwAlAesB6gEHAOsBEgHqAQcA6wEKARIBBwAkAesBJQEHACQB7AHrAQcA7AEKAesBBwDsAQIBCgEHACMB7AEkAQcAIwHtAewBBwDtAQIB7AEHAO0B+gACAQcAIQHtASMBBwAhAe4B7QEHAO4B+gDtAQcA7gHqAPoABwAiAe4BIQEHACIB7wHuAQcA7wHqAO4BBwDvAesA6gAHABIB8AHqAQcAEgHpAfABBwDxAeoB8AEHAPEBJgHqAQcA8gHzAfQBBwDyAfUB8wEHAPQB9gH3AQcA9AHzAfYBBwBlAfgB+QEHAGUBZAH4AQcAZgH5AfoBBwBmAWUB+QEHAPQB+wHyAQcA9AH8AfsBBwD3AfwB9AEHAPcB/QH8AQcAggH+AYQBBwCCAf8B/gEHAH8B/wGCAQcAfwEAAv8BBwABAgICAwIHAAECBAICAgcADgEFAgYCBwAOAQ0BBQIHAAcC8AEIAgcABwLxAfABBwAIAukB5QEHAAgC8AHpAQcA5AHlAekBBwDkAeEB5QEHAAkCCgILAgcACQIMAgoCBwANAgkCDgIHAA0CDAIJAgcAcQEPAhACBwBxARABDwIHAIQBEQKDAQcAhAESAhECBwATAoQB/gEHABMCEgKEAQcAFALxAQcCBwAUAhUC8QEHABYCEgIXAgcAFgIRAhICBwAWAhgCGQIHABYCFwIYAgcAGgIXAhsCBwAaAhgCFwIHABMCFwISAgcAEwIbAhcCBwAcAhUCFAIHABwCHQIVAgcAHgIcAh8CBwAeAh0CHAIHACYBFQIfAQcAJgHxARUCBwAfAR0CIAEHAB8BFQIdAgcAHgIgAR0CBwAeAlQBIAEHACACIQIiAgcAIAIjAiECBwAhAiQCIgIHACECJQIkAgcAGQImAicCBwAZAhgCJgIHACgCKQIqAgcAKAIrAikCBwAqAiwCLQIHACoCKQIsAgcAGgImAhgCBwAaAi4CJgIHACsCJgIpAgcAKwInAiYCBwAhAigCKgIHACECIwIoAgcAKQIuAiwCBwApAiYCLgIHACUCKgItAgcAJQIhAioCBwAvAiICMAIHAC8CIAIiAgcAJAIwAiICBwAkAjECMAIHAC8CMgIzAgcALwIwAjICBwAxAjICMAIHADECNAIyAgcANQIyAjYCBwA1AjMCMgIHAAsCNgIJAgcACwI1AjYCBwA0AjYCMgIHADQCNwI2AgcACQI3Ag4CBwAJAjYCNwIHAEQBOAI5AgcARAFDATgCBwB4ATkCOgIHAHgBRAE5AgcADwE6AjsCBwAPAXgBOgIHABABOwIPAgcAEAEPATsCBwAPAjwCEAIHAA8CPQI8AgcAPQIKAjwCBwA9AgsCCgIHADsCPQIPAgcAOwI+Aj0CBwA+AgsCPQIHAD4CNQILAgcAOgI+AjsCBwA6Aj8CPgIHAD8CNQI+AgcAPwIzAjUCBwA5Aj8COgIHADkCQAI/AgcAQAIzAj8CBwBAAi8CMwIHADgCQAI5AgcAOAJBAkACBwBBAi8CQAIHAEECIAIvAgcAQgJBAjgCBwBCAkMCQQIHAEMCIAJBAgcAQwIjAiACBwBEAkMCQgIHAEQCRQJDAgcARQIjAkMCBwBFAigCIwIHAEYCRQJEAgcARgJHAkUCBwBHAigCRQIHAEcCKwIoAgcASAJHAkYCBwBIAkkCRwIHAEkCKwJHAgcASQInAisCBwAfAkkCSAIHAB8CSgJJAgcASgInAkkCBwBKAhkCJwIHABwCSgIfAgcAHAJLAkoCBwBLAhkCSgIHAEsCFgIZAgcAFAJLAhwCBwAUAkwCSwIHAEwCFgJLAgcATAIRAhYCBwAHAkwCFAIHAAcCTQJMAgcATQIRAkwCBwBNAoMBEQIHAAgCTQIHAgcACAJOAk0CBwBOAoMBTQIHAE4CgAGDAQcA5QFOAggCBwDlAU8CTgIHAE8CgAFOAgcATwKBAYABBwD4AVAC+QEHAPgBUQJQAgcAUQLzAVACBwBRAvYB8wEHAPkBUgL6AQcA+QFQAlICBwBQAvUBUgIHAFAC8wH1AQcABQJTAgYCBwAFAlQCUwIHAFQCAQJTAgcAVAIEAgECBwBWAR8CSAIHAFYBVQEfAgcAMQFIAkYCBwAxAVYBSAIHADIBRgJEAgcAMgExAUYCBwBCAUQCQgIHAEIBMgFEAgcAQwFCAjgCBwBDAUIBQgIHAFUCzgHQAQcAVQJWAs4BBwBXAtAB0gEHAFcCVQLQAQcAWAKZAZoBBwBYAlkCmQEHAFoCfAFbAgcAWgJ6AXwBBwBcAnoBWgIHAFwCfQF6AQcAXQJeAl8CBwBdAmACXgIHAGACWQJYAgcAYAJdAlkCBwBhAmICYwIHAGECZAJiAgcAYgJlAmMCBwBiAmYCZQIHAGcCYQJjAgcAZwJoAmECBwBlAmcCYwIHAGUCaQJnAgcAYQJWAlUCBwBhAmgCVgIHAFcCYQJVAgcAVwJkAmECBwBXAmoCZAIHAFcCawJqAgcAawJdAmoCBwBrAlkCXQIHANIBawJXAgcA0gFsAmsCBwBsAlkCawIHAGwCmQFZAgcA0QFsAtIBBwDRAW0CbAIHAG0CmQFsAgcAbQKQAZkBBwDVAW0C0QEHANUBbgJtAgcAbgKQAW0CBwBuApEBkAEHANgBbgLVAQcA2AFvAm4CBwBvApEBbgIHAG8CjwGRAQcAZAJwAmICBwBkAmoCcAIHAGoCXwJwAgcAagJdAl8CBwBiAnECZgIHAGICcAJxAgcAcAJeAnECBwBwAl8CXgIHAFQCcgIEAgcAVAJzAnICBwBzAvUBcgIHAHMCUgL1AQcABQJzAlQCBwAFAnQCcwIHAHQCUgJzAgcAdAL6AVICBwANAXQCBQIHAA0BdQJ0AgcAdQL6AXQCBwB1AmYB+gEHAAUBdQINAQcABQF2AnUCBwB2AmYBdQIHAHYCYwFmAQcA/QB2AgUBBwD9AHcCdgIHAHcCYwF2AgcAdwJgAWMBBwDzAHcC/QAHAPMAeAJ3AgcAeAJgAXcCBwB4Al8BYAEHAPUAeALzAAcA9QB5AngCBwB5Al8BeAIHAHkCaQFfAQcA9AB5AvUABwD0AHoCeQIHAHoCaQF5AgcAegJsAWkBBwAEAnsCAgIHAAQCcgJ7AgcAcgLyAXsCBwByAvUB8gEHAAICfAIDAgcAAgJ7AnwCBwB7AvsBfAIHAHsC8gH7AQcAfQJ+An8CBwB9AoACfgIHAIECgAJ9AgcAgQKCAoACBwCCAp8BnQEHAIICgQKfAQcAgwKAAoICBwCDAoQCgAIHAJ4BggKdAQcAngGDAoICBwB+AYAChAIHAH4BfgKAAgcAhQKBAn0CBwCFAoYCgQIHAIcCfQJ/AgcAhwKFAn0CBwCIAokCigIHAIgCiwKJAgcAjAKKAo0CBwCMAogCigIHAIwCjgKPAgcAjAKNAo4CBwCQApECkgIHAJACkwKRAgcAlAKTApACBwCUApUCkwIHAJIClgKXAgcAkgKRApYCBwCYApECkwIHAJgCmQKRAgcAlQKYApMCBwCVApoCmAIHAJECmwKWAgcAkQKZApsCBwCYApwCmQIHAJgCnQKcAgcAngKdAp8CBwCeApwCnQIHAJoCnQKYAgcAmgKgAp0CBwCfAqACoQIHAJ8CnQKgAgcAogKeAqMCBwCiApwCngIHAJkCogKbAgcAmQKcAqICBwDdAaMCwAEHAN0BogKjAgcA3QGbAqICBwDdAZsBmwIHAJsBlgKbAgcAmwGcAZYCBwCcAZcClgIHAJwB2wGXAgcApAKlAqYCBwCkAqcCpQIHAKcCqAKpAgcApwKkAqgCBwClAqoCpgIHAKUCqwKqAgcArAKtAq4CBwCsAq8CrQIHAK4CsAKsAgcArgKxArACBwCyAq0CrwIHALICswKtAgcAtAK1ArYCBwC0ArcCtQIHAJ8CtQKeAgcAnwK2ArUCBwC0ArgCuQIHALQCtgK4AgcAoQK2Ap8CBwChArgCtgIHAKMCtQK6AgcAowKeArUCBwC7ArUCtwIHALsCugK1AgcArQK0Aq4CBwCtArcCtAIHAKQCrwKsAgcApAKmAq8CBwCoAqwCsAIHAKgCpAKsAgcArgK5ArECBwCuArQCuQIHALsCrQKzAgcAuwK3Aq0CBwCvAqoCsgIHAK8CpgKqAgcAwAG6Ar8BBwDAAaMCugIHAL4BugK7AgcAvgG/AboCBwC7ArQBvgEHALsCswK0AQcAswKzAbQBBwCzArICswEHALICyAGzAQcAsgKqAsgBBwCqAscByAEHAKoCqwLHAQcAvAKsAacBBwC8Ar0CrAEHAL4CpwGoAQcAvgK8AqcBBwDHAb4CqAEHAMcBqwK+AgcAvwJ8AXkBBwC/AsACfAEHAMACWwJ8AQcAwALBAlsCBwDCAqcCwwIHAMICpQKnAgcAwgLAAr8CBwDCAsMCwAIHAKcCxALDAgcApwKpAsQCBwDAAsQCwQIHAMACwwLEAgcAvwK+AsICBwC/ArwCvgIHAHkBvAK/AgcAeQG9ArwCBwC+AqUCwgIHAL4CqwKlAgcAgwLFAoQCBwCDAsYCxQIHAMYCxwLFAgcAxgLIAscCBwCeAcYCgwIHAJ4ByQLGAgcAyQLIAsYCBwDJAsoCyAIHAJYByQKeAQcAlgHLAskCBwDLAsoCyQIHAMsCzALKAgcAhQHLApYBBwCFAc0CywIHAM0CzALLAgcAzQLOAswCBwCHAc0ChQEHAIcBzwLNAgcAzwLOAs0CBwDPAtACzgIHAMUCfgGEAgcAxQJ7AX4BBwDHAnsBxQIHAMcCeQF7AQcA0QLSAtMCBwDRAtQC0gIHANUC0wLWAgcA1QLRAtMCBwDXAtUC1gIHANcC2ALVAgcA2QKBAdoCBwDZAn8BgQEHANgC2gLVAgcA2ALZAtoCBwDRAtoC2wIHANEC1QLaAgcA5gHaAoEBBwDmAdsC2gIHANEC3ALUAgcA0QLbAtwCBwDdAtsC5gEHAN0C3ALbAgcA1ALeAtICBwDUAtwC3gIHAN8C3ALdAgcA3wLeAtwCBwDgAtgC1wIHAOAC2QLYAgcAfwHgAgACBwB/AdkC4AIHAI0C4QKOAgcAjQLiAuECBwB9AeICfgEHAH0B4QLiAgcAfgHjAn4CBwB+AeIC4wIHAI0C4wLiAgcAjQKKAuMCBwB+AuQCfwIHAH4C4wLkAgcAiQLjAooCBwCJAuQC4wIHAOECjwKOAgcA4QLlAo8CBwBcAuECfQEHAFwC5QLhAgcAfwLmAocCBwB/AuQC5gIHAIsC5AKJAgcAiwLmAuQCBwCBAqABnwEHAIEChgKgAQcA5wLoAukCBwDnAuoC6AIHAOoC6wLoAgcA6gLsAusCBwDsAu0C6wIHAOwC7gLtAgcA7gLvAu0CBwDuAvAC7wIHAPAC8QLvAgcA8ALyAvECBwDyAvMC8QIHAPIC9ALzAgcA9AL1AvMCBwD0AvYC9QIHAPYC9wL1AgcA9gL4AvcCBwD4AvkC9wIHAPgC+gL5AgcA+gL7AvkCBwD6AvwC+wIHAPwC/QL7AgcA/AL+Av0CBwD/AgADAQMHAP8CAgMAAwcAAgMDAwADBwACAwQDAwMHAAQDBQMDAwcABAMGAwUDBwAGAwcDBQMHAAYDCAMHAwcACAMJAwcDBwAIAwoDCQMHAAoDCwMJAwcACgMMAwsDBwANAw4DDwMHAA0DEAMOAwcAEAMRAw4DBwAQAxIDEQMHABIDEwMRAwcAEgMUAxMDBwAUAxUDEwMHABQDFgMVAwcAFwP9AgEDBwAXAxgD/QIHAP4CAQP9AgcA/gL/AgEDBwD/ARkD/gEHAP8BGgMZAwcAGgP1AhkDBwAaA/MC9QIHAAACGgP/AQcAAAIbAxoDBwAbA/MCGgMHABsD8QLzAgcA4AIbAwACBwDgAhwDGwMHABwD8QIbAwcAHAPvAvECBwDXAhwD4AIHANcCHQMcAwcAHQPvAhwDBwAdA+0C7wIHANYCHQPXAgcA1gIeAx0DBwAeA+0CHQMHAB4D6wLtAgcA0wIeA9YCBwDTAh8DHgMHAB8D6wIeAwcAHwPoAusCBwDSAh8D0wIHANICIAMfAwcAIAPoAh8DBwAgA+kC6AIHAN4CIAPSAgcA3gIhAyADBwAhA+kCIAMHACEDIgPpAgcA3wIhA94CBwDfAiMDIQMHACMDIgMhAwcAIwMkAyIDBwDoASUDJgMHAOgB5wElAwcAJgMkAyMDBwAmAycDJAMHABQBJQPnAQcAFAEoAyUDBwAoAykDJQMHACgDKgMpAwcADAEoAxQBBwAMASsDKAMHACsDKgMoAwcAKwMsAyoDBwAEASsDDAEHAAQBLQMrAwcALQMsAysDBwAtAy4DLAMHAPwALQMEAQcA/AAvAy0DBwAvAy4DLQMHAC8DMAMuAwcA7QAvA/wABwDtADEDLwMHADEDMAMvAwcAMQMyAzADBwDpADED7QAHAOkAMwMxAwcAMwMyAzEDBwAzAzQDMgMHAOsAMwPpAAcA6wA1AzMDBwA1AzQDMwMHADUDNgM0AwcA7wE1A+sABwDvATcDNQMHADcDNgM1AwcANwM4AzYDBwAiATcD7wEHACIBOQM3AwcAOQM4AzcDBwA5AzoDOAMHABYBOQMiAQcAFgE7AzkDBwA7AzoDOQMHADsDPAM6AwcAGAE7AxYBBwAYAT0DOwMHAD0DPAM7AwcAPQM+AzwDBwBFAT8DQAMHAEUBSgE/AwcAQAM+Az0DBwBAA0EDPgMHAEcBPwNKAQcARwFCAz8DBwBCA0MDPwMHAEIDWAFDAwcAKQFCA0cBBwApAUQDQgMHAEQDWAFCAwcARANZAVgBBwAoAUQDKQEHACgBRQNEAwcARQNZAUQDBwBFA1cBWQEHADQBRQMoAQcANAFGA0UDBwBGA1cBRQMHAEYDWgFXAQcANgFGAzQBBwA2AUcDRgMHAEcDWgFGAwcARwNIA1oBBwA3AUcDNgEHADcBSQNHAwcASQNIA0cDBwBJA0oDSAMHAHYBSQM3AQcAdgFLA0kDBwBLA0oDSQMHAEsDTANKAwcA8ABLA3YBBwDwAE0DSwMHAE0DTANLAwcATQNOA0wDBwDyAE0D8AAHAPIATwNNAwcATwNOA00DBwBPA1ADTgMHAHIBTwPyAAcAcgFRA08DBwBRA1ADTwMHAFEDUgNQAwcAagFTA2sBBwBqAVQDUwMHAFQDVQNTAwcAVANWA1UDBwBsAVQDagEHAGwBVwNUAwcAVwNWA1QDBwBXA1gDVgMHAHoCVwNsAQcAegJZA1cDBwBZA1gDVwMHAFkDWgNYAwcA9ABZA3oCBwD0AFsDWQMHAFsDWgNZAwcAWwNcA1oDBwD2AFsD9AAHAPYAXQNbAwcAXQNcA1sDBwBdA14DXAMHAP4AXQP2AAcA/gBfA10DBwBfA14DXQMHAF8DYANeAwcABgFfA/4ABwAGAWEDXwMHAGEDYANfAwcAYQNiA2ADBwAOAWEDBgEHAA4BYwNhAwcAYwNiA2EDBwBjA2QDYgMHAAYCYwMOAQcABgJlA2MDBwBlA2QDYwMHAGUDZgNkAwcAUwJlAwYCBwBTAmcDZQMHAGcDZgNlAwcAZwNoA2YDBwABAmcDUwIHAAECaQNnAwcAaQNoA2cDBwBpA2oDaAMHAAMCaQMBAgcAAwJrA2kDBwBrA2oDaQMHAGsDFQNqAwcAfAJrAwMCBwB8AmwDawMHAGwDFQNrAwcAbAMTAxUDBwD7AWwDfAIHAPsBbQNsAwcAbQMTA2wDBwBtAxEDEwMHAPwBbQP7AQcA/AFuA20DBwBuAxEDbQMHAG4DDgMRAwcA/QFuA/wBBwD9AW8DbgMHAG8DDgNuAwcAbwMPAw4DBwAOAnADDQIHAA4CcQNwAwcAcQMLA3ADBwBxAwkDCwMHADcCcQMOAgcANwJyA3EDBwByAwkDcQMHAHIDBwMJAwcANAJyAzcCBwA0AnMDcgMHAHMDBwNyAwcAcwMFAwcDBwAxAnMDNAIHADECdANzAwcAdAMFA3MDBwB0AwMDBQMHACQCdAMxAgcAJAJ1A3QDBwB1AwMDdAMHAHUDAAMDAwcAJQJ1AyQCBwAlAnYDdQMHAHYDAAN1AwcAdgMBAwADBwAtAnYDJQIHAC0CdwN2AwcAdwMBA3YDBwB3AxcDAQMHACwCdwMtAgcALAJ4A3cDBwB4AxcDdwMHAHgDGAMXAwcALgJ4AywCBwAuAnkDeAMHAHkDGAN4AwcAeQP9AhgDBwAaAnkDLgIHABoCegN5AwcAegP9AnkDBwB6A/sC/QIHABsCegMaAgcAGwJ7A3oDBwB7A/sCegMHAHsD+QL7AgcAEwJ7AxsCBwATAnwDewMHAHwD+QJ7AwcAfAP3AvkCBwD+AXwDEwIHAP4BGQN8AwcAGQP3AnwDBwAZA/UC9wIHAH0DfgN/AwcAfQOAA34DBwCBA38DggMHAIEDfQN/AwcAgAODA34DBwCAA4QDgwMHAIUDggOGAwcAhQOBA4IDBwCEA4cDgwMHAIQDiAOHAwcAiQOGA4oDBwCJA4UDhgMHAIsDigOMAwcAiwOJA4oDBwCNA4wDjgMHAI0DiwOMAwcAjwOOA5ADBwCPA40DjgMHAJEDkAOSAwcAkQOPA5ADBwCTA5IDlAMHAJMDkQOSAwcAlQOWA5cDBwCVA5gDlgMHAJkDlwOaAwcAmQOVA5cDBwCbA5oDnAMHAJsDmQOaAwcAnQOcA54DBwCdA5sDnAMHAJ8DoAOhAwcAnwOiA6ADBwCiA54DoAMHAKIDnQOeAwcAowOkA6UDBwCjA6YDpAMHAKcDpQOoAwcApwOjA6UDBwCpA6gDqgMHAKkDpwOoAwcAqwOqA6wDBwCrA6kDqgMHAJQDmAOTAwcAlAOWA5gDBwCtA5YDlAMHAK0DrgOWAwcAlwOvA5oDBwCXA7ADrwMHALADoQKvAwcAsAO4AqECBwCWA7ADlwMHAJYDsQOwAwcAsQO4ArADBwCxA7kCuAIHAK4DsQOWAwcArgOyA7EDBwCyA7kCsQMHALIDsQK5AgcArQOyA64DBwCtA7MDsgMHALMDsQKyAwcAswOwArECBwCUA7MDrQMHAJQDtAOzAwcAtAOwArMDBwC0A6gCsAIHAJIDtAOUAwcAkgO1A7QDBwC1A6gCtAMHALUDqQKoAgcAkAO1A5IDBwCQA7YDtQMHALYDqQK1AwcAtgPEAqkCBwCOA7YDkAMHAI4DtwO2AwcAtwPEArYDBwC3A8ECxAIHAIwDtwOOAwcAjAO4A7cDBwC4A8ECtwMHALgDWwLBAgcAigO4A4wDBwCKA7kDuAMHALkDWwK4AwcAuQNaAlsCBwCGA7kDigMHAIYDugO5AwcAugNaArkDBwC6A1wCWgIHAIIDugOGAwcAggO7A7oDBwC7A1wCugMHALsD5QJcAgcAfwO7A4IDBwB/A7wDuwMHALwD5QK7AwcAvAOPAuUCBwB+A7wDfwMHAH4DvQO8AwcAvQOPArwDBwC9A4wCjwIHAIMDvQN+AwcAgwO+A70DBwC+A4wCvQMHAL4DiAKMAgcAhwO+A4MDBwCHA78DvgMHAL8DiAK+AwcAvwOLAogCBwDAA78DhwMHAMADwQO/AwcAwQOLAr8DBwDBA+YCiwIHAMIDwQPAAwcAwgPDA8EDBwDDA+YCwQMHAMMDhwLmAgcAxAPDA8IDBwDEA8UDwwMHAMUDhwLDAwcAxQOFAocCBwDGA8UDxAMHAMYDxwPFAwcAxwOFAsUDBwDHA4YChQIHAMgDxwPGAwcAyAPJA8cDBwDJA4YCxwMHAMkDoAGGAgcAygPJA8gDBwDKA8sDyQMHAMsDoAHJAwcAywOYAaABBwDMA8sDygMHAMwDzQPLAwcAzQOYAcsDBwDNA4kBmAEHAM4DzQPMAwcAzgPPA80DBwDPA4kBzQMHAM8DhgGJAQcA0APPA84DBwDQA9EDzwMHANEDhgHPAwcA0QOHAYYBBwDSA9ED0AMHANID0wPRAwcA0wOHAdEDBwDTA88ChwEHANQD1QPWAwcA1APXA9UDBwDWA88C0wMHANYD0ALPAgcA2APVA9cDBwDYA9kD1QMHANkDqgHVAwcA2QOhAaoBBwDaA9kD2AMHANoD2wPZAwcA2wOhAdkDBwDbA6QBoQEHANwD2wPaAwcA3APdA9sDBwDdA6QB2wMHAN0DwQGkAQcAyQHdA9wDBwDJAd4D3QMHAN4DwQHdAwcA3gPDAcEBBwDLAd4DyQEHAMsB3wPeAwcA3wPDAd4DBwDfA68BwwEHAMoB3wPLAQcAygHgA98DBwDgA68B3wMHAOADrQGvAQcAzAHgA8oBBwDMAeED4AMHAOEDrQHgAwcA4QO1Aa0BBwDiA+EDzAEHAOID4wPhAwcA4wO1AeEDBwDjA7gBtQEHAOQD4wPiAwcA5APlA+MDBwDlA7gB4wMHAOUDuQG4AQcA5gPlA+QDBwDmA+cD5QMHAOcDuQHlAwcA5wPgAbkBBwDoA+cD5gMHAOgD6QPnAwcA6QPgAecDBwDpA4sB4AEHAOoD6QPoAwcA6gPrA+kDBwDrA4sB6QMHAOsDjgGLAQcA7APrA+oDBwDsA+0D6wMHAO0DjgHrAwcA7QPcAY4BBwDuA+8D8AMHAO4D8QPvAwcA8QPXAe8DBwDxA9YB1wEHAPID8QPuAwcA8gPzA/EDBwDzA9YB8QMHAPMD2AHWAQcA9APzA/IDBwD0A/UD8wMHAPUD2AHzAwcA9QNvAtgBBwD2A/UD9AMHAPYD9wP1AwcA9wNvAvUDBwD3A48BbwIHAPgD9wP2AwcA+AP5A/cDBwD5A48B9wMHAPkDkgGPAQcA+gP5A/gDBwD6A/sD+QMHAPsDkgH5AwcA+wOaAZIBBwD8A/sD+gMHAPwD/QP7AwcA/QOaAfsDBwD9A1gCmgEHAP4D/QP8AwcA/gP/A/0DBwD/A1gC/QMHAP8DYAJYAgcArAP/A/4DBwCsAwAE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WwQHAFkEWgRcBAcAUQJdBPYBBwBRAlsEXQQHAFsEXgRdBAcAWwRcBF4EBwD2AV8E9wEHAPYBXQRfBAcAXQRgBF8EBwBdBF4EYAQHAPcBYQT9AQcA9wFfBGEEBwBfBGIEYQQHAF8EYARiBAcA/QFjBG8DBwD9AWEEYwQHAGEEZARjBAcAYQRiBGQEBwBvA2UEDwMHAG8DYwRlBAcAYwRmBGUEBwBjBGQEZgQHAA8DZwQNAwcADwNlBGcEBwBlBGgEZwQHAGUEZgRoBAcADQNpBKYDBwANA2cEaQQHAGcEagRpBAcAZwRoBGoEBwCmA2sEpAMHAKYDaQRrBAcAaQRsBGsEBwBpBGoEbAQHAKQDbQQEBAcApANrBG0EBwBrBG4EbQQHAGsEbARuBAcABARvBGkCBwAEBG0EbwQHAG0EcARvBAcAbQRuBHAEBwBpAnEEZwIHAGkCbwRxBAcAbwRyBHEEBwBvBHAEcgQHAGcCcwRoAgcAZwJxBHMEBwBxBHQEcwQHAHEEcgR0BAcAaAJ1BFYCBwBoAnMEdQQHAHMEdgR1BAcAcwR0BHYEBwBWAncEzgEHAFYCdQR3BAcAdQR4BHcEBwB1BHYEeAQHAM4BeQTPAQcAzgF3BHkEBwB3BHoEeQQHAHcEeAR6BAcAzwF7BNQBBwDPAXkEewQHAHkEfAR7BAcAeQR6BHwEBwDUAX0E1wEHANQBewR9BAcAewR+BH0EBwB7BHwEfgQHANcBfwTvAwcA1wF9BH8EBwB9BIAEfwQHAH0EfgSABAcA7wOBBPADBwDvA38EgQQHAH8EggSBBAcAfwSABIIEBwBIBIMERwQHAEgEhASDBAcAhARxAYMEBwCEBHABcQEHAE0EhQRLBAcATQSGBIUEBwCHBHABhAQHAIcEbwFwAQcAUASHBE8EBwBQBIgEhwQHAIgEbwGHBAcAiARuAW8BBwBSBIgEUAQHAFIEiQSIBAcAiQRuAYgEBwCJBG0BbgEHAFQEiQRSBAcAVASKBIkEBwCKBG0BiQQHAIoEcgFtAQcAVgSKBFQEBwBWBIsEigQHAIsEcgGKBAcAiwRRA3IBBwBYBIsEVgQHAFgEjASLBAcAjARRA4sEBwCMBFIDUQMHAEcEjQRaBAcARwSDBI0EBwCDBBACjQQHAIMEcQEQAgcAWgSOBFwEBwBaBI0EjgQHAI0EPAKOBAcA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PgUHAD0FRQVGBQcAPgVHBT8FBwA+BUYFRwUHAD8FSAVABQcAPwVHBUgFBwBIBUEFQAUHAEgFSQVBBQcASQVCBUEFBwBJBUoFQgUHAEoFOwVCBQcASgVDBTsFBwBFBUsFTAUHAEUFRAVLBQcARgVMBU0FBwBGBUUFTAUHAEcFTQVOBQcARwVGBU0FBwBIBU4FTwUHAEgFRwVOBQcAUAVIBU8FBwBQBUkFSAUHAFEFSQVQBQcAUQVKBUkFBwBSBUoFUQUHAFIFQwVKBQcASwVDBVIFBwBLBUQFQwUHAFMFVAVVBQcAUwVWBVQFBwBUBVcFWAUHAFQFVgVXBQcAWAVZBVoFBwBYBVcFWQUHAFoFWwVcBQcAWgVZBVsFBwBcBV0FXgUHAFwFWwVdBQcAXgVfBWAFBwBeBV0FXwUHAGAFYQViBQcAYAVfBWEFBwBhBWMFYgUHAGEFZAVjBQcAZAVlBWMFBwBkBWYFZQUHAGYFZwVlBQcAZgVoBWcFBwBoBWkFZwUHAGgFagVpBQcAagVVBWkFBwBqBVMFVQUHAGsFVgVTBQcAawVsBVYFBwBWBW0FVwUHAFYFbAVtBQcAVwVuBVkFBwBXBW0FbgUHAFkFbwVbBQcAWQVuBW8FBwBbBXAFXQUHAFsFbwVwBQcAXQVxBV8FBwBdBXAFcQUHAF8FcgVhBQcAXwVxBXIFBwByBWQFYQUHAHIFcwVkBQcAcwVmBWQFBwBzBXQFZgUHAHQFaAVmBQcAdAV1BWgFBwB1BWoFaAUHAHUFdgVqBQcAdgVTBWoFBwB2BWsFUwUHAHcFbAVrBQcAdwV4BWwFBwBsBXkFbQUHAGwFeAV5BQcAbQV6BW4FBwBtBXkFegUHAG4FewVvBQcAbgV6BXsFBwBvBXwFcAUHAG8FewV8BQcAcAV9BXEFBwBwBXwFfQUHAHEFfgVyBQcAcQV9BX4FBwB+BXMFcgUHAH4FfwVzBQcAfwV0BXMFBwB/BYAFdAUHAIAFdQV0BQcAgAWBBXUFBwCBBXYFdQUHAIEFggV2BQcAggVrBXYFBwCCBXcFawUHAIMFdwWEBQcAgwV4BXcFBwB5BYMFhQUHAHkFeAWDBQcAegWFBYYFBwB6BXkFhQUHAHoFhwV7BQcAegWGBYcFBwB7BYgFfAUHAHsFhwWIBQcAfAWJBX0FBwB8BYgFiQUHAH0FigV+BQcAfQWJBYoFBwCKBX8FfgUHAIoFiwV/BQcAjAUeBY0FBwCMBR8FHgUHAIsFgAV/BQcAiwWOBYAFBwCOBYEFgAUHAI4FjwWBBQcAjwWCBYEFBwCPBZAFggUHAIQFggWQBQcAhAV3BYIFBwCRBYQFkgUHAJEFgwWEBQcAhQWRBZMFBwCFBYMFkQUHAIYFkwWUBQcAhgWFBZMFBwCHBZQFlQUHAIcFhgWUBQcAhwWWBYgFBwCHBZUFlgUHAIgFlwWJBQcAiAWWBZcFBwCJBZgFigUHAIkFlwWYBQcAmAWLBYoFBwCYBZkFiwUHAJkFjgWLBQcAmQWaBY4FBwCaBY8FjgUHAJoFmwWPBQcAnAWPBZsFBwCcBZAFjwUHAJIFkAWcBQcAkgWEBZAFBwCdBZIFngUHAJ0FkQWSBQcAkwWdBZ8FBwCTBZEFnQUHAJQFnwWgBQcAlAWTBZ8FBwCVBaAFoQUHAJUFlAWgBQcAlQWiBZYFBwCVBaEFogUHAJYFowWXBQcAlgWiBaMFBwCXBaQFmAUHAJcFowWkBQcAEQWlBRAFBwARBY0FpQUHAI0FHQWlBQcAjQUeBR0FBwAQBaYFDwUHABAFpQWmBQcApQUcBaYFBwClBR0FHAUHAA8FpwUOBQcADwWmBacFBwCmBRsFpwUHAKYFHAUbBQcADgWoBQ0FBwAOBacFqAUHAKcFEwWoBQcApwUbBRMFBwANBakFDAUHAA0FqAWpBQcAqAUUBakFBwCoBRMFFAUHAAwFqgULBQcADAWpBaoFBwCpBRUFqgUHAKkFFAUVBQcACwWrBQoFBwALBaoFqwUHAKoFFgWrBQcAqgUVBRYFBwAKBawFEgUHAAoFqwWsBQcAqwUXBawFBwCrBRYFFwUHABIFrQXdBAcAEgWsBa0FBwCsBRgFrQUHAKwFFwUYBQcA3QSuBdsEBwDdBK0FrgUHAK0FGQWuBQcArQUYBRkFBwDbBK8F3AQHANsErgWvBQcArgUaBa8FBwCuBRkFGgUHALAFsQWyBQcAsAWzBbEFBwC0BbAFsgUHALQFtQWwBQcAtgW1BbQFBwC2BbcFtQUHAKQFmQWYBQcApAW4BZkFBwC4BZoFmQUHALgFuQWaBQcAuQWbBZoFBwC5BboFmwUHALsFtwW2BQcAuwW8BbcFBwC9BbwFuwUHAL0FvgW8BQcAvwWbBboFBwC/BZwFmwUHAJ4FnAW/BQcAngWSBZwFBwCyBcAFwQUHALIFsQXABQcAwgWyBcEFBwDCBbQFsgUHAMMFtAXCBQcAwwW2BbQFBwDEBZ0FngUHAMQFxQWdBQcAnQXGBZ8FBwCdBcUFxgUHAJ8FxwWgBQcAnwXGBccFBwDIBbYFwwUHAMgFuwW2BQcAyQW7BcgFBwDJBb0FuwUHAKAFygWhBQcAoAXHBcoFBwChBcsFogUHAKEFygXLBQcAwQXMBc0FBwDBBcAFzAUHAM4FwQXNBQcAzgXCBcEFBwDPBcIFzgUHAM8FwwXCBQcAogXQBaMFBwCiBcsF0AUHAKMF0QWkBQcAowXQBdEFBwDRBbgFpAUHANEF0gW4BQcA0wXDBc8FBwDTBcgFwwUHANQFyAXTBQcA1AXJBcgFBwDSBbkFuAUHANIF1QW5BQcA1QW6BbkFBwDVBdYFugUHAM0F1wXYBQcAzQXMBdcFBwDZBc0F2AUHANkFzgXNBQcA2gXOBdkFBwDaBc8FzgUHANYFvwW6BQcA1gXbBb8FBwDbBZ4FvwUHANsFxAWeBQcA3AXFBcQFBwDcBd0FxQUHAN4FzwXaBQcA3gXTBc8FBwDfBdMF3gUHAN8F1AXTBQcAxQXgBcYFBwDFBd0F4AUHAMYF4QXHBQcAxgXgBeEFBwDHBeIFygUHAMcF4QXiBQcAywXiBeMFBwDLBcoF4gUHANAF4wXkBQcA0AXLBeMFBwDRBeQF5QUHANEF0AXkBQcAjQXmBYwFBwCNBecF5gUHABEF5wWNBQcAEQXoBecFBwD8BOgFEQUHAPwE6QXoBQcA/QTpBfwEBwD9BOoF6QUHAP4E6gX9BAcA/gTrBeoFBwDsBdEF5QUHAOwF0gXRBQcA7QXSBewFBwDtBdUF0gUHAO4F1QXtBQcA7gXWBdUFBwDuBdsF1gUHAO4F7wXbBQcA7wXEBdsFBwDvBdwFxAUHAPAF3QXcBQcA8AXxBd0FBwDdBfIF4AUHAN0F8QXyBQcA4AXzBeEFBwDgBfIF8wUHAOIF8wX0BQcA4gXhBfMFBwDnBfUF5gUHAOcF9gX1BQcA9gW+BfUFBwD2BbwFvgUHAOgF9gXnBQcA6AX3BfYFBwD3BbwF9gUHAPcFtwW8BQcA6QX3BegFBwDpBfgF9wUHAPgFtwX3BQcA+AW1BbcFBwDqBfgF6QUHAOoF+QX4BQcA+QW1BfgFBwD5BbAFtQUHAOsF+QXqBQcA6wX6BfkFBwD6BbAF+QUHAPoFswWwBQcA4wX0BfsFBwDjBeIF9AUHAOQF+wX8BQcA5AXjBfsFBwD9Bf4F/wUHAP0FAAb+BQcA/wUBBgIGBwD/Bf4FAQYHAAIGAwYEBgcAAgYBBgMGBwAEBgUGBgYHAAQGAwYFBgcABgYHBggGBwAGBgUGBwYHAAgGCQYKBgcACAYHBgkGBwAKBgsGDAYHAAoGCQYLBgcADAYNBg4GBwAMBgsGDQYHAA4GDwYQBgcADgYNBg8GBwAQBhEGEgYHABAGDwYRBgcAEgYTBhQGBwASBhEGEwYHABQGFQYWBgcAFAYTBhUGBwAVBhcGFgYHABUGGAYXBgcAGAYZBhcGBwAYBhoGGQYHABoGGwYZBgcAGgYcBhsGBwAcBh0GGwYHABwGHgYdBgcAHgYfBh0GBwAeBiAGHwYHACEGIgYjBgcAIQYkBiIGBwAkBiUGIgYHACQGJgYlBgcAJgYnBiUGBwAmBigGJwYHACgGKQYnBgcAKAYqBikGBwAqBv0FKQYHACoGAAb9BQcAAAYrBv4FBwAABiwGKwYHAC0GAAYqBgcALQYsBgAGBwAuBioGKAYHAC4GLQYqBgcALwYoBiYGBwAvBi4GKAYHADAGJgYkBgcAMAYvBiYGBwAxBiQGIQYHADEGMAYkBgcAMgYhBjMGBwAyBjEGIQYHADQGMwYgBgcANAYyBjMGBwA1BiAGHgYHADUGNAYgBgcANgYeBhwGBwA2BjUGHgYHADcGHAYaBgcANwY2BhwGBwA4BhoGGAYHADgGNwYaBgcAOQYYBhUGBwA5BjgGGAYHABMGOQYVBgcAEwY6BjkGBwARBjoGEwYHABEGOwY6BgcADwY7BhEGBwAPBjwGOwYHAA0GPAYPBgcADQY9BjwGBwALBj0GDQYHAAsGPgY9BgcACQY+BgsGBwAJBj8GPgYHAAcGPwYJBgcABwZABj8GBwAFBkAGBwYHAAUGQQZABgcAAwZBBgUGBwADBkIGQQYHAAEGQgYDBgcAAQZDBkIGBwD+BUMGAQYHAP4FKwZDBgcAKwZEBkUGBwArBiwGRAYHAEQGLQZGBgcARAYsBi0GBwBGBi4GRwYHAEYGLQYuBgcARwYvBkgGBwBHBi4GLwYHAEgGMAZJBgcASAYvBjAGBwBJBjEGSgYHAEkGMAYxBgcASwYxBjIGBwBLBkoGMQYHAEwGMgY0BgcATAZLBjIGBwBNBjQGNQYHAE0GTAY0BgcATgY1BjYGBwBOBk0GNQYHAE8GNgY3BgcATwZOBjYGBwBQBjcGOAYHAFAGTwY3BgcAUQY4BjkGBwBRBlAGOAYHADoGUQY5BgcAOgZSBlEGBwA7BlIGOgYHADsGUwZSBgcAPAZTBjsGBwA8BlQGUwYHAD0GVAY8BgcAPQZVBlQGBwA+BlUGPQYHAD4GVgZVBgcAPwZWBj4GBwA/BlcGVgYHAEAGVwY/BgcAQAZYBlcGBwBABlkGWAYHAEAGQQZZBgcAQQZaBlkGBwBBBkIGWgYHAEIGWwZaBgcAQgZDBlsGBwBDBkUGWwYHAEMGKwZFBgcARQZcBl0GBwBFBkQGXAYHAFwGRgZeBgcAXAZEBkYGBwBeBkcGXwYHAF4GRgZHBgcAXwZIBmAGBwBfBkcGSAYHAGAGSQZhBgcAYAZIBkkGBwBhBkoGYgYHAGEGSQZKBgcAYgZLBmMGBwBiBkoGSwYHAGQGSwZMBgcAZAZjBksGBwBlBkwGTQYHAGUGZAZMBgcAZgZNBk4GBwBmBmUGTQYHAGcGTgZPBgcAZwZmBk4GBwBoBk8GUAYHAGgGZwZPBgcAaQZQBlEGBwBpBmgGUAYHAFIGaQZRBgcAUgZqBmkGBwBTBmoGUgYHAFMGawZqBgcAVAZrBlMGBwBUBmwGawYHAFUGbAZUBgcAVQZtBmwGBwBWBm0GVQYHAFYGbgZtBgcAVwZuBlYGBwBXBm8GbgYHAFcGcAZvBgcAVwZYBnAGBwBYBnEGcAYHAFgGWQZxBgcAWQZyBnEGBwBZBloGcgYHAFoGcwZyBgcAWgZbBnMGBwBbBl0GcwYHAFsGRQZdBgcAXQZ0BnUGBwBdBlwGdAYHAHQGXgZ2BgcAdAZcBl4GBwB2Bl8GdwYHAHYGXgZfBgcAdwZgBngGBwB3Bl8GYAYHAHgGYQZ5BgcAeAZgBmEGBwB5BmIGegYHAHkGYQZiBgcAegZjBnsGBwB6BmIGYwYHAHwGYwZkBgcAfAZ7BmMGBwB9BmQGZQYHAH0GfAZkBgcAfgZlBmYGBwB+Bn0GZQYHAH8GZgZnBgcAfwZ+BmYGBwCABmcGaAYHAIAGfwZnBgcAgQZoBmkGBwCBBoAGaAYHAGoGgQZpBgcAagaCBoEGBwBrBoIGagYHAGsGgwaCBgcAbAaDBmsGBwBsBoQGgwYHAG0GhAZsBgcAbQaFBoQGBwBuBoUGbQYHAG4GhgaFBgcAbwaGBm4GBwBvBocGhgYHAG8GiAaHBgcAbwZwBogGBwBwBokGiAYHAHAGcQaJBgcAcQaKBokGBwBxBnIGigYHAHIGiwaKBgcAcgZzBosGBwBzBnUGiwYHAHMGXQZ1BgcAKQaMBo0GBwApBv0FjAYHAIwG/wWOBgcAjAb9Bf8FBwCOBgIGjwYHAI4G/wUCBgcAjwYEBpAGBwCPBgIGBAYHAJAGBgaRBgcAkAYEBgYGBwCRBggGkgYHAJEGBgYIBgcAkgYKBpMGBwCSBggGCgYHAJMGDAaUBgcAkwYKBgwGBwCUBg4GlQYHAJQGDAYOBgcAlQYQBpYGBwCVBg4GEAYHAJYGEgaXBgcAlgYQBhIGBwCXBhQGmAYHAJcGEgYUBgcAmAYWBpkGBwCYBhQGFgYHABYGmgaZBgcAFgYXBpoGBwAXBpsGmgYHABcGGQabBgcAGQacBpsGBwAZBhsGnAYHABsGnQacBgcAGwYdBp0GBwAdBp4GnQYHAB0GHwaeBgcAHwafBp4GBwAfBqAGnwYHAKAGoQafBgcAoAYjBqEGBwAjBqIGoQYHACMGIgaiBgcAIgajBqIGBwAiBiUGowYHACUGpAajBgcAJQYnBqQGBwAnBo0GpAYHACcGKQaNBgcAjQalBqYGBwCNBowGpQYHAKUGjganBgcApQaMBo4GBwCnBo8GqAYHAKcGjgaPBgcAqAaQBqkGBwCoBo8GkAYHAKkGkQaqBgcAqQaQBpEGBwCqBpIGqwYHAKoGkQaSBgcAqwaTBqwGBwCrBpIGkwYHAK0GkwaUBgcArQasBpMGBwCuBpQGlQYHAK4GrQaUBgcArwaVBpYGBwCvBq4GlQYHALAGlgaXBgcAsAavBpYGBwCxBpcGmAYHALEGsAaXBgcAsgaYBpkGBwCyBrEGmAYHAJoGsgaZBgcAmgazBrIGBwCbBrMGmgYHAJsGtAazBgcAnAa0BpsGBwCcBrUGtAYHAJ0GtQacBgcAnQa2BrUGBwCeBrYGnQYHAJ4Gtwa2BgcAnwa3Bp4GBwCfBrgGtwYHAJ8GuQa4BgcAnwahBrkGBwChBroGuQYHAKEGoga6BgcAoga7BroGBwCiBqMGuwYHAKMGvAa7BgcAowakBrwGBwCkBqYGvAYHAKQGjQamBgcApQa9BqYGBwClBr4GvQYHAL8GpQanBgcAvwa+BqUGBwDABqcGqAYHAMAGvwanBgcAwQaoBqkGBwDBBsAGqAYHAMIGqQaqBgcAwgbBBqkGBwDDBqoGqwYHAMMGwgaqBgcAxAarBqwGBwDEBsMGqwYHAMUGrAatBgcAxQbEBqwGBwDGBq0GrgYHAMYGxQatBgcAxwauBq8GBwDHBsYGrgYHAMgGrwawBgcAyAbHBq8GBwDJBrAGsQYHAMkGyAawBgcAygaxBrIGBwDKBskGsQYHALMGygayBgcAswbLBsoGBwC0BssGswYHALQGzAbLBgcAtQbMBrQGBwC1Bs0GzAYHALYGzQa1BgcAtgbOBs0GBwC3Bs4GtgYHALcGzwbOBgcAuAbPBrcGBwC4BtAGzwYHALkG0Aa4BgcAuQbRBtAGBwC6BtEGuQYHALoG0gbRBgcAuwbSBroGBwC7BtMG0gYHALwG0wa7BgcAvAbUBtMGBwCmBtQGvAYHAKYGvQbUBgcAvgbVBr0GBwC+BtYG1QYHANcGvga/BgcA1wbWBr4GBwDYBr8GwAYHANgG1wa/BgcA2QbABsEGBwDZBtgGwAYHANoGwQbCBgcA2gbZBsEGBwDbBsIGwwYHANsG2gbCBgcA3AbDBsQGBwDcBtsGwwYHAN0GxAbFBgcA3QbcBsQGBwDeBsUGxgYHAN4G3QbFBgcA3wbGBscGBwDfBt4GxgYHAOAGxwbIBgcA4AbfBscGBwDhBsgGyQYHAOEG4AbIBgcA4gbJBsoGBwDiBuEGyQYHAMsG4gbKBgcAywbjBuIGBwDMBuMGywYHAMwG5AbjBgcAzQbkBswGBwDNBuUG5AYHAM4G5QbNBgcAzgbmBuUGBwDPBuYGzgYHAM8G5wbmBgcA0AbnBs8GBwDQBugG5wYHANEG6AbQBgcA0QbpBugGBwDSBukG0QYHANIG6gbpBgcA0wbqBtIGBwDTBusG6gYHANQG6wbTBgcA1AbsBusGBwC9BuwG1AYHAL0G1QbsBgcA7QaKBu4GBwDtBokGigYHAIkG7waIBgcAiQbtBu8GBwCIBvAGhwYHAIgG7wbwBgcAhwbxBoYGBwCHBvAG8QYHAIYG8gaFBgcAhgbxBvIGBwCFBvMGhAYHAIUG8gbzBgcAhAb0BoMGBwCEBvMG9AYHAIMG9QaCBgcAgwb0BvUGBwCCBvYGgQYHAIIG9Qb2BgcAgQb3BoAGBwCBBvYG9wYHAIAG+AZ/BgcAgAb3BvgGBwB/BvkGfgYHAH8G+Ab5BgcAfgb6Bn0GBwB+BvkG+gYHAH0G+wZ8BgcAfQb6BvsGBwD8Bv0G/gYHAPwG/wb9BgcAAAf/BvwGBwAABwEH/wYHAP4GAgfuBgcA/gb9BgIHBwADBwEHAAcHAAMHBAcBBwcA7gYFB+0GBwDuBgIHBQcHAO0GBgfvBgcA7QYFBwYHBwDvBgcH8AYHAO8GBgcHBwcA8AYIB/EGBwDwBgcHCAcHAPEGCQfyBgcA8QYIBwkHBwDyBgoH8wYHAPIGCQcKBwcA8wYLB/QGBwDzBgoHCwcHAPQGDAf1BgcA9AYLBwwHBwD1Bg0H9gYHAPUGDAcNBwcA9gYOB/cGBwD2Bg0HDgcHAPcGDwf4BgcA9wYOBw8HBwD4BhAH+QYHAPgGDwcQBwcA+QYRB/oGBwD5BhAHEQcHAPoGEgf7BgcA+gYRBxIHBwD7BhMHFAcHAPsGEgcTBwcAFAcVBxYHBwAUBxMHFQcHABYHFwcYBwcAFgcVBxcHBwAYBxkHGgcHABgHFwcZBwcAGgcbBxwHBwAaBxkHGwcHABwHBAcDBwcAHAcbBwQHBwCLBh0HigYHAIsGHgcdBwcAHgd1Bh8HBwAeB4sGdQYHAB8HIAchBwcAHwciByAHBwAiB3YGIwcHACIHdAZ2BgcAIwckByUHBwAjByYHJAcHACYHeAYnBwcAJgd3BngGBwAnBygHKQcHACcHKgcoBwcAKgd6BisHBwAqB3kGegYHACwHfAYtBwcALAd7BnwGBwArBy0HLgcHACsHLActBwcA/gaKBi8HBwD+Bu4GigYHAPwGLwcwBwcA/Ab+Bi8HBwAABzAHMQcHAAAH/AYwBwcAAwcxBzIHBwADBwAHMQcHABwHMgczBwcAHAcDBzIHBwAaBzMHNAcHABoHHAczBwcAGAc0BzUHBwAYBxoHNAcHABYHNQc2BwcAFgcYBzUHBwD7BjcHfAYHAPsGFAc3BwcAFAc2BzcHBwAUBxYHNgcHAIoGOAc5BwcAigYdBzgHBwA6B3wGOwcHADoHLQd8BgcAMAc8Bz0HBwAwBy8HPAcHADkHPQc8BwcAOQc+Bz0HBwAxBz0HPwcHADEHMAc9BwcAPgc/Bz0HBwA+B0AHPwcHADIHPwdBBwcAMgcxBz8HBwBAB0EHPwcHAEAHQgdBBwcAQwcyB0EHBwBDBzMHMgcHAEIHQwdBBwcAQgdEB0MHBwBFBzMHQwcHAEUHNAczBwcARAdFB0MHBwBEB0YHRQcHAEcHNAdFBwcARwc1BzQHBwBGB0cHRQcHAEYHSAdHBwcASQc1B0cHBwBJBzYHNQcHAEgHSQdHBwcASAdKB0kHBwBLBzYHSQcHAEsHNwc2BwcASgdLB0kHBwBKBzsHSwcHADwHigY5BwcAPAcvB4oGBwA3BzsHfAYHADcHSwc7BwcATAdABz4HBwBMB00HQAcHACEHTQdMBwcAIQcgB00HBwBNB0IHQAcHAE0HTgdCBwcAIAdOB00HBwAgByUHTgcHAE4HRAdCBwcATgdPB0QHBwAlB08HTgcHACUHJAdPBwcATwdGB0QHBwBPB1AHRgcHACQHUAdPBwcAJAcpB1AHBwBQB0gHRgcHAFAHUQdIBwcAKQdRB1AHBwApBygHUQcHAFEHSgdIBwcAUQdSB0oHBwAoB1IHUQcHACgHLgdSBwcAUgc7B0oHBwBSBzoHOwcHAC4HOgdSBwcALgctBzoHBwA4Bz4HOQcHADgHTAc+BwcAHQdMBzgHBwAdByEHTAcHAP8GBAdTBwcA/wYBBwQHBwDlBfwFVAcHAOUF5AX8BQcABAcZB1MHBwAEBxsHGQcHABkHFQdTBwcAGQcXBxUHBwAVBxIHUwcHABUHEwcSBwcAEgcQB1MHBwASBxEHEAcHABAHDgdTBwcAEAcPBw4HBwAOBwwHUwcHAA4HDQcMBwcADAcKB1MHBwAMBwsHCgcHAAkHUwcKBwcACQcIB1MHBwAIBwYHUwcHAAgHBwcGBwcABQdTBwYHBwAFBwIHUwcHAP0GUwcCBwcA/Qb/BlMHBwAhBqAGMwYHACEGIwagBgcAHwYzBqAGBwAfBiAGMwYHAFUHVgdXBwcAVQdYB1YHBwBZB1oHWwcHAFkHXAdaBwcAWAdcB1kHBwBYB1UHXAcHAF0HXgdfBwcAXQdgB14HBwBhB2IHYwcHAGEHZAdiBwcAYgddB18HBwBiB2QHXQcHAFUHZQdmBwcAVQdXB2UHBwBcB2YHZwcHAFwHVQdmBwcAWgdnB2gHBwBaB1wHZwcHAGkHagdrBwcAaQdsB2oHBwBsB20HagcHAGwHbgdtBwcAbgdvB20HBwBuB3AHbwcHAF8HWQdiBwcAXwdYB1kHBwBWB18HXgcHAFYHWAdfBwcAWQdjB2IHBwBZB1sHYwcHAHEHWgdoBwcAcQdyB1oHBwByB1sHWgcHAHIHcwdbBwcAcwdjB1sHBwBzB3QHYwcHAHQHYQdjBwcAdAd1B2EHBwB2B28HcAcHAHYHdwdvBwcAeAdyB3EHBwB4B3kHcgcHAHkHcwdyBwcAeQd6B3MHBwB6B3QHcwcHAHoHewd0BwcAewd1B3QHBwB7B3wHdQcHAH0Hdwd2BwcAfQd+B3cHBwB/B4AHgQcHAH8HggeABwcAgweBB4QHBwCDB38HgQcHAIUHgweEBwcAhQeGB4MHBwCGB4cHiAcHAIYHhQeHBwcAiAeJB4oHBwCIB4cHiQcHAIsHgAeCBwcAiweMB4AHBwCNB4wHiwcHAI0HjgeMBwcAjweOB40HBwCPB5AHjgcHAJEHkAePBwcAkQeSB5AHBwCTB5IHkQcHAJMHlAeSBwcAlQeWB5cHBwCVB5gHlgcHAJkHlweaBwcAmQeVB5cHBwCbB5oHnAcHAJsHmQeaBwcAnQecB54HBwCdB5sHnAcHAJ4HVwedBwcAngdlB1cHBwCLB58HjQcHAIsHoAefBwcAoAecB58HBwCgB54HnAcHAIIHoAeLBwcAggehB6AHBwChB54HoAcHAKEHZQeeBwcAfwehB4IHBwB/B6IHoQcHAKIHZQehBwcAogdmB2UHBwCDB6IHfwcHAIMHoweiBwcAowdmB6IHBwCjB2cHZgcHAIYHoweDBwcAhgekB6MHBwCkB2cHowcHAKQHaAdnBwcAiAekB4YHBwCIB6UHpAcHAKUHaAekBwcApQdxB2gHBwCKB6UHiAcHAIoHpgelBwcApgdxB6UHBwCmB3gHcQcHAI0HpwePBwcAjQefB6cHBwCfB5oHpwcHAJ8HnAeaBwcAjweoB5EHBwCPB6cHqAcHAKcHlweoBwcApweaB5cHBwCRB6kHkwcHAJEHqAepBwcAqAeWB6kHBwCoB5cHlgcHAKoHmwedBwcAqgerB5sHBwCsB6sHqgcHAKwHrQerBwcArQeuB6sHBwCtB68HrgcHAK8HsAeuBwcArwexB7AHBwCxB7IHsAcHALEHsweyBwcAnQdWB6oHBwCdB1cHVgcHAF4HqgdWBwcAXgesB6oHBwC0B7MHsQcHALQHtQezBwcAtgexB68HBwC2B7QHsQcHALcHrwetBwcAtwe2B68HBwC4B7kHugcHALgHuwe5BwcAvAe7B7gHBwC8B70HuwcHAL4HvwfABwcAvgfBB78HBwCsB2AHwgcHAKwHXgdgBwcAtwesB8IHBwC3B60HrAcHAMMHxAfFBwcAwwfGB8QHBwDHB8gHyQcHAMcHygfIBwcAywfJB8wHBwDLB8cHyQcHAMYHzAfEBwcAxgfLB8wHBwDNB84HzwcHAM0H0AfOBwcA0QfSB9MHBwDRB9QH0gcHAMUHawfDBwcAxQdpB2sHBwDVB9YH1wcHANUH2AfWBwcA2AfZB9YHBwDYB9oH2QcHANsH2AfVBwcA2wfcB9gHBwDcB9oH2AcHANwH3QfaBwcA3gfcB9sHBwDeB98H3AcHAN8H3QfcBwcA3wfgB90HBwDhB98H3gcHAOEH4gffBwcA4gfgB98HBwDiB+MH4AcHALkH4gfhBwcAuQfkB+IHBwDkB+MH4gcHAOQH5QfjBwcAuwfkB7kHBwC7B+YH5AcHAOYH5QfkBwcA5gfnB+UHBwC9B+YHuwcHAL0H6AfmBwcA6AfnB+YHBwDoB+kH5wcHAMEH6ge/BwcAwQfrB+oHBwDrB+wH6gcHAOsH7QfsBwcA1wfuB+8HBwDXB9YH7gcHANYH8AfuBwcA1gfZB/AHBwDXB/EH1QcHANcH8gfxBwcA7wfyB9cHBwDvB/MH8gcHANUH9AfbBwcA1QfxB/QHBwDbB/UH3gcHANsH9Af1BwcA3gf2B+EHBwDeB/UH9gcHAOEH9we5BwcA4Qf2B/cHBwC5B/gHugcHALkH9wf4BwcAzwf5B80HBwDPB/oH+QcHAJgH+weWBwcAmAf8B/sHBwD8B/QH+wcHAPwH9Qf0BwcA/Qf1B/wHBwD9B/YH9QcHALMH/QeyBwcAswf+B/0HBwD+B/YH/QcHAP4H9wf2BwcAtQf+B7MHBwC1B/8H/gcHAP8H9wf+BwcA/wf4B/cHBwDKBwAIyAcHAMoHAQgACAcAAQj6BwAIBwABCPkH+gcHAJYHAgipBwcAlgf7BwIIBwD7B/EHAggHAPsH9AfxBwcAqQcDCJMHBwCpBwIIAwgHAAII8gcDCAcAAgjxB/IHBwCTBwQIlAcHAJMHAwgECAcAAwjzBwQIBwADCPIH8wcHAAUIqweuBwcABQibB6sHBwAGCAcICAgHAAYICQgHCAcACggLCAwIBwAKCA0ICwgHAA4ICQgGCAcADggPCAkIBwALCBAIDAgHAAsIEQgQCAcAEggPCA4IBwASCBMIDwgHABEIFAgQCAcAEQgVCBQIBwAWCBMIEggHABYIFwgTCAcAGAgWCBkIBwAYCBcIFggHABUIGQgUCAcAFQgYCBkIBwAYCBoIFwgHABgIGwgaCAcAFQgbCBgIBwAVCBwIGwgHABEIHAgVCAcAEQgdCBwIBwALCB0IEQgHAAsIHggdCAcADQgfCCAIBwANCAcIHwgHAAkIHwgHCAcACQghCB8IBwAPCCEICQgHAA8IIgghCAcAEwgiCA8IBwATCCMIIggHABcIIwgTCAcAFwgaCCMIBwD9ByQIsgcHAP0HJQgkCAcAJQgcCCQIBwAlCBsIHAgHAPwHJQj9BwcA/AcmCCUIBwAmCBsIJQgHACYIGggbCAcAmAcmCPwHBwCYBycIJggHACcIGggmCAcAJwgjCBoIBwCVBycImAcHAJUHKAgnCAcAKAgjCCcIBwAoCCIIIwgHAJkHKAiVBwcAmQcpCCgIBwApCCIIKAgHACkIIQgiCAcAmwcpCJkHBwCbByoIKQgHACoIIQgpCAcAKggfCCEIBwAFCCsILAgHAAUIrgcrCAcALAgfCCoIBwAsCCAIHwgHALAHKwiuBwcAsActCCsIBwAtCB4IKwgHAC0IHQgeCAcAsgctCLAHBwCyByQILQgHACQIHQgtCAcAJAgcCB0IBwAuCIQHgQcHAC4ILwiEBwcAMAiBB4AHBwAwCC4IgQcHADEIgAeMBwcAMQgwCIAHBwAyCIwHjgcHADIIMQiMBwcAMwiOB5AHBwAzCDIIjgcHADQILwguCAcANAg1CC8IBwA2CC4IMAgHADYINAguCAcANwgwCDEIBwA3CDYIMAgHADgIMQgyCAcAOAg3CDEIBwA5CDIIMwgHADkIOAgyCAcAhweEBy8IBwCHB4UHhAcHADUIhwcvCAcANQiJB4cHBwA6CJIHlAcHADoIOwiSBwcAPAiUBwQIBwA8CDoIlAcHAD0IBAjzBwcAPQg8CAQIBwA+CO8H7gcHAD4IPwjvBwcAPwjzB+8HBwA/CD0I8wcHAEAI7gfwBwcAQAg+CO4HBwBBCDsIOggHAEEIQgg7CAcAQwg6CDwIBwBDCEEIOggHAEQIPAg9CAcARAhDCDwIBwBFCD0IPwgHAEUIRAg9CAcARgg/CD4IBwBGCEUIPwgHAEcIPghACAcARwhGCD4IBwAzCJIHOwgHADMIkAeSBwcAOQg7CEIIBwA5CDMIOwgHAEgIwAdJCAcASAi+B8AHBwBKCEsITAgHAEoITQhLCAcATghJCE8IBwBOCEgISQgHAFAITAhRCAcAUAhKCEwIBwBSCMAHvwcHAFIIUwjABwcAVAhSCFUIBwBUCFMIUggHAFYIvwfqBwcAVghSCL8HBwBSCFcIVQgHAFIIVghXCAcA6gdYCFYIBwDqB+wHWAgHAFYIWQhXCAcAVghYCFkIBwBTCEkIwAcHAFMIWghJCAcAWwhTCFQIBwBbCFoIUwgHAFoITwhJCAcAWghcCE8IBwBdCFoIWwgHAF0IXAhaCAcAXghfCGAIBwBeCGEIXwgHAGEI0gdfCAcAYQjTB9IHBwC6B2IIuAcHALoHYwhiCAcAYwjOB2IIBwBjCM8HzgcHAPgHYwi6BwcA+AdkCGMIBwBkCM8HYwgHAGQI+gfPBwcA/wdkCPgHBwD/B2UIZAgHAGUI+gdkCAcAZQgACPoHBwC1B2UI/wcHALUHZghlCAcAZggACGUIBwBmCMgHAAgHALQHZgi1BwcAtAdnCGYIBwBnCMgHZggHAGcIyQfIBwcAtgdnCLQHBwC2B2gIZwgHAGgIyQdnCAcAaAjMB8kHBwC3B2gItgcHALcHaQhoCAcAaQjMB2gIBwBpCMQHzAcHAMIHaQi3BwcAwgdqCGkIBwBqCMQHaQgHAGoIxQfEBwcAYAdqCMIHBwBgB2sIaggHAGsIxQdqCAcAawhpB8UHBwBdB2sIYAcHAF0HbAhrCAcAbAhpB2sIBwBsCGwHaQcHAGQHbAhdBwcAZAdtCGwIBwBtCGwHbAgHAG0IbgdsBwcAYQdtCGQHBwBhB24IbQgHAG4IbgdtCAcAbghwB24HBwB1B24IYQcHAHUHbwhuCAcAbwhwB24IBwBvCHYHcAcHAHwHbwh1BwcAfAdwCG8IBwBwCHYHbwgHAHAIfQd2BwcAVAhxCFsIBwBUCHIIcQgHAHIISghxCAcAcghNCEoIBwBbCHMIXQgHAFsIcQhzCAcAcQhQCHMIBwBxCEoIUAgHAFUIdAhUCAcAVQh1CHQIBwBNCHYISwgHAE0Idwh2CAcAdQhXCHgIBwB1CFUIVwgHAHgIWQh5CAcAeAhXCFkIBwBUCHoIcggHAFQIdAh6CAcAcgh3CE0IBwByCHoIdwgHAHUIewh0CAcAdQh8CHsIBwB9CHwIfggHAH0Iewh8CAcAfwiACIEIBwB/CIIIgAgHAIMIhAiFCAcAgwiGCIQIBwB1CIcIfAgHAHUIeAiHCAcAfAiICH4IBwB8CIcIiAgHAHgIiQiHCAcAeAh5CIkIBwCHCIoIiAgHAIcIiQiKCAcAiwiMCI0IBwCLCI4IjAgHAI8Iewh9CAcAjwiQCHsIBwCNCIYIgwgHAI0IjAiGCAcAfwiQCI8IBwB/CIEIkAgHAH4IkQh9CAcAfgiSCJEIBwB/CJMIgggHAH8IlAiTCAcAkgiICJUIBwCSCH4IiAgHAJUIigiWCAcAlQiICIoIBwB9CJcIjwgHAH0IkQiXCAcAjwiUCH8IBwCPCJcIlAgHAJIImAiRCAcAkgiZCJgIBwC8B5kIvQcHALwHmAiZCAcAmgibCJwIBwCaCJ0ImwgHAJQImwiTCAcAlAicCJsIBwCSCJ4ImQgHAJIIlQieCAcAmQjoB70HBwCZCJ4I6AcHAJUInwieCAcAlQiWCJ8IBwCeCOkH6AcHAJ4InwjpBwcAkQigCJcIBwCRCJgIoAgHAKEImAi8BwcAoQigCJgIBwCXCJwIlAgHAJcIoAicCAcAmgigCKEIBwCaCJwIoAgHAJ0I0gfUBwcAnQiaCNIHBwDQB9QH0QcHANAHnQjUBwcA0wfQB9EHBwDTB84H0AcHAKEIYAhfCAcAoQi8B2AIBwBeCGIIYQgHAF4IuAdiCAcAYAi4B14IBwBgCLwHuAcHAJoIXwjSBwcAmgihCF8IBwBhCM4H0wcHAGEIYgjOBwcAgAiFCIQIBwCACHYIhQgHAIYIgAiECAcAhgiBCIAIBwB2CIMIhQgHAHYIdwiDCAcAjgiQCIwIBwCOCHsIkAgHAIsIewiOCAcAiwh0CHsIBwB6CIsIjQgHAHoIdAiLCAcAjAiBCIYIBwCMCJAIgQgHAHcIjQiDCAcAdwh6CI0IBwCiCOUFVAcHAKII7AXlBQcAowjsBaIIBwCjCO0F7AUHAKQI7QWjCAcApAjuBe0FBwClCO4FpAgHAKUI7wXuBQcApQjcBe8FBwClCPAF3AUHAKYI8QXwBQcApginCPEFBwDxBagI8gUHAPEFpwioCAcA8gWpCPMFBwDyBagIqQgHAPMFqgj0BQcA8wWpCKoIBwD7BaoIqwgHAPsF9AWqCAcA/AWrCKwIBwD8BfsFqwgHAFQHrAitCAcAVAf8BawIBwCuCFQHrQgHAK4IoghUBwcArwiiCK4IBwCvCKMIoggHALAIowivCAcAsAikCKMIBwCwCKUIpAgHALAIsQilCAcAsQjwBaUIBwCxCKYI8AUHALIIpwimCAcAsgizCKcIBwCnCLQIqAgHAKcIswi0CAcAqAi1CKkIBwCoCLQItQgHAKkItgiqCAcAqQi1CLYIBwCqCLcIqwgHAKoItgi3CAcAqwi4CKwIBwCrCLcIuAgHAKwIuQitCAcArAi4CLkIBwC5CK4IrQgHALkIugiuCAcAugivCK4IBwC6CLsIrwgHALsIsAivCAcAuwi8CLAIBwC8CLEIsAgHALwIvQixCAcAvQimCLEIBwC9CLIIpggHAL4IvwjACAcAvgjBCL8IBwC/CMIIwwgHAL8IwQjCCAcAwwjECMUIBwDDCMIIxAgHAMUIxgjHCAcAxQjECMYIBwDHCMgIyQgHAMcIxgjICAcAyQjKCMsIBwDJCMgIyggHAMsIzAjNCAcAywjKCMwIBwDMCM4IzQgHAMwIzwjOCAcAzwjQCM4IBwDPCNEI0AgHANEI0gjQCAcA0QjTCNIIBwDTCNQI0ggHANMI1QjUCAcA1QjACNQIBwDVCL4IwAgHANYIvgjXCAcA1gjBCL4IBwDCCNYI2AgHAMIIwQjWCAcAxAjYCNkIBwDECMII2AgHAMQI2gjGCAcAxAjZCNoIBwDGCNsIyAgHAMYI2gjbCAcAyAjcCMoIBwDICNsI3AgHAMoI3QjMCAcAygjcCN0IBwDdCM8IzAgHAN0I3gjPCAcA3gjRCM8IBwDeCN8I0QgHAN8I0wjRCAcA3wjgCNMIBwDgCNUI0wgHAOAI4QjVCAcA1wjVCOEIBwDXCL4I1QgHANkI1gjXCAcA2QjYCNYIBwDaCNcI4QgHANoI2QjXCAcA2wjhCOAIBwDbCNoI4QgHANsI3QjcCAcA2wjgCN0IBwDgCN4I3QgHAOAI3wjeCAcA4gjjCOQIBwDiCOUI4wgHALkI5gi6CAcAuQjnCOYIBwC4COcIuQgHALgI6AjnCAcAtwjoCLgIBwC3COkI6AgHALYI6Qi3CAcAtgjqCOkIBwC1COoItggHALUI6wjqCAcAtAjrCLUIBwC0COwI6wgHALMI7Ai0CAcAswjtCOwIBwCyCO0IswgHALII7gjtCAcA7wjwCPEIBwDvCPII8AgHAPMI8gjvCAcA8wj0CPIIBwDkCPQI8wgHAOQI4wj0CAcA5Qj1COMIBwDlCPYI9QgHAPYI9wj1CAcA9gj4CPcIBwDnCPkI5ggHAOcI+gj5CAcA+gjOCPkIBwD6CM0IzggHAOgI+gjnCAcA6Aj7CPoIBwD7CM0I+ggHAPsIywjNCAcA6Qj7COgIBwDpCPwI+wgHAPwIywj7CAcA/AjJCMsIBwDqCPwI6QgHAOoI/Qj8CAcA/QjJCPwIBwD9CMcIyQgHAOsI/QjqCAcA6wj+CP0IBwD+CMcI/QgHAP4IxQjHCAcA7Aj+COsIBwDsCP8I/ggHAP8IxQj+CAcA/wjDCMUIBwDtCP8I7AgHAO0IAAn/CAcAAAnDCP8IBwAACb8IwwgHAO4IAAntCAcA7ggBCQAJBwABCb8IAAkHAAEJwAi/CAcA8ggCCfAIBwDyCAMJAgkHAAMJBAkCCQcAAwkFCQQJBwD0CAMJ8ggHAPQIBgkDCQcABgkFCQMJBwAGCQcJBQkHAOMIBgn0CAcA4wj1CAYJBwD1CAcJBgkHAPUI9wgHCQcA4ggICQkJBwDiCOQICAkHAPcICgkLCQcA9wj4CAoJBwDkCAwJCAkHAOQI8wgMCQcABwkLCQ0JBwAHCfcICwkHAPMIDgkMCQcA8wjvCA4JBwAFCQ0JDwkHAAUJBwkNCQcA7wgQCQ4JBwDvCPEIEAkHAAQJDwkRCQcABAkFCQ8JBwDiCBIJ5QgHAOIICQkSCQcAEwnxCPAIBwATCRAJ8QgHAOUIFAn2CAcA5QgSCRQJBwD2CAoJ+AgHAPYIFAkKCQcAFQnwCAIJBwAVCRMJ8AgHABEJAgkECQcAEQkVCQIJBwAWCbsIuggHABYJFwm7CAcA0AgYCc4IBwDQCBkJGAkHABcJvAi7CAcAFwkaCbwIBwDSCBkJ0AgHANIIGwkZCQcAvAgcCb0IBwC8CBoJHAkHAB0J0gjUCAcAHQkbCdIIBwC9CB4JsggHAL0IHAkeCQcAHwnUCMAIBwAfCR0J1AgHAOYIFgm6CAcA5gggCRYJBwCyCCEJ7ggHALIIHgkhCQcA+QggCeYIBwD5CCIJIAkHAM4IIgn5CAcAzggYCSIJBwDuCCMJAQkHAO4IIQkjCQcAAQkfCcAIBwABCSMJHwkHAAkJJAklCQcACQkICSQJBwAWCSQJFwkHABYJJQkkCQcAJgkKCScJBwAmCQsJCgkHABkJJwkYCQcAGQkmCScJBwAICSgJJAkHAAgJDAkoCQcAFwkoCRoJBwAXCSQJKAkHAA0JJgkpCQcADQkLCSYJBwAbCSYJGQkHABsJKQkmCQcADAkqCSgJBwAMCQ4JKgkHABoJKgkcCQcAGgkoCSoJBwAPCSkJKwkHAA8JDQkpCQcAHQkpCRsJBwAdCSsJKQkHACoJEAksCQcAKgkOCRAJBwAcCSwJHgkHABwJKgksCQcAEQkrCS0JBwARCQ8JKwkHAB8JKwkdCQcAHwktCSsJBwAuCRYJIAkHAC4JJQkWCQcACQkuCRIJBwAJCSUJLgkHAB4JLwkhCQcAHgksCS8JBwATCSwJEAkHABMJLwksCQcAMAkgCSIJBwAwCS4JIAkHABIJMAkUCQcAEgkuCTAJBwAnCSIJGAkHACcJMAkiCQcAFAknCQoJBwAUCTAJJwkHACEJMQkjCQcAIQkvCTEJBwAVCS8JEwkHABUJMQkvCQcAIwktCR8JBwAjCTEJLQkHABEJMQkVCQcAEQktCTEJBwAyCTMJNAkHADIJNQkzCQcANgk3CTgJBwA2CTkJNwkHADoJNAk7CQcAOgkyCTQJBwA8CToJOwkHADwJPQk6CQcAOAk+CT8JBwA4CTcJPgkHAD4JQAk/CQcAPglBCUAJBwAyCUIJNQkHADIJQwlCCQcAOQlECTcJBwA5CUUJRAkHADoJQwkyCQcAOglGCUMJBwBHCToJPQkHAEcJRgk6CQcARAk+CTcJBwBECUgJPgkHAD4JSQlBCQcAPglICUkJBwBDCUoJQgkHAEMJSwlKCQcARQlMCUQJBwBFCU0JTAkHAEYJSwlDCQcARglOCUsJBwBHCU4JRgkHAEcJTwlOCQcARAlQCUgJBwBECUwJUAkHAEgJUQlJCQcASAlQCVEJBwBLCVIJSgkHAEsJUwlSCQcATQlUCUwJBwBNCVUJVAkHAE4JUwlLCQcATglWCVMJBwBPCVYJTgkHAE8JVwlWCQcATAlYCVAJBwBMCVQJWAkHAFAJWQlRCQcAUAlYCVkJBwBTCVoJUgkHAFMJWwlaCQcAVQlcCVQJBwBVCV0JXAkHAFYJWwlTCQcAVgleCVsJBwBXCV4JVgkHAFcJXwleCQcAVAlgCVgJBwBUCVwJYAkHAFgJYQlZCQcAWAlgCWEJBwBiCWMJZAkHAGIJZQljCQcAZglnCWgJBwBmCWkJZwkHAGQJaglrCQcAZAljCWoJBwBrCWwJbQkHAGsJaglsCQcAbglpCWYJBwBuCW8JaQkHAHAJbwluCQcAcAlxCW8JBwByCTgJcwkHAHIJNgk4CQcAdAk2CXIJBwB0CTkJNgkHAHUJOQl0CQcAdQlFCTkJBwB2CUUJdQkHAHYJTQlFCQcAdwlNCXYJBwB3CVUJTQkHAHgJVQl3CQcAeAldCVUJBwB5CWcJegkHAHkJaAlnCQcAewloCXkJBwB7CWYJaAkHAHwJZgl7CQcAfAluCWYJBwB9CW4JfAkHAH0JcAluCQcAfglwCX0JBwB+CXEJcAkHAH8JYQmACQcAfwlZCWEJBwCBCVkJfwkHAIEJUQlZCQcAgglRCYEJBwCCCUkJUQkHAIMJSQmCCQcAgwlBCUkJBwCECUEJgwkHAIQJQAlBCQcAhQlACYQJBwCFCT8JQAkHAHMJPwmFCQcAcwk4CT8JBwAzCYYJNAkHADMJhwmGCQcAhwlzCYYJBwCHCXIJcwkHADUJhwkzCQcANQmICYcJBwCICXIJhwkHAIgJdAlyCQcAQgmICTUJBwBCCYkJiAkHAIkJdAmICQcAiQl1CXQJBwBKCYkJQgkHAEoJigmJCQcAigl1CYkJBwCKCXYJdQkHAFIJiglKCQcAUgmLCYoJBwCLCXYJigkHAIsJdwl2CQcAWgmLCVIJBwBaCYwJiwkHAIwJdwmLCQcAjAl4CXcJBwBiCY0JZQkHAGIJjgmNCQcAjgl6CY0JBwCOCXkJegkHAGQJjgliCQcAZAmPCY4JBwCPCXkJjgkHAI8Jewl5CQcAawmPCWQJBwBrCZAJjwkHAJAJewmPCQcAkAl8CXsJBwBtCZAJawkHAG0JkQmQCQcAkQl8CZAJBwCRCX0JfAkHAGwJkQltCQcAbAmSCZEJBwCSCX0JkQkHAJIJfgl9CQcAVwmTCV8JBwBXCZQJkwkHAJQJgAmTCQcAlAl/CYAJBwBPCZQJVwkHAE8JlQmUCQcAlQl/CZQJBwCVCYEJfwkHAEcJlQlPCQcARwmWCZUJBwCWCYEJlQkHAJYJggmBCQcAPQmWCUcJBwA9CZcJlgkHAJcJggmWCQcAlwmDCYIJBwA8CZcJPQkHADwJmAmXCQcAmAmDCZcJBwCYCYQJgwkHADsJmAk8CQcAOwmZCZgJBwCZCYQJmAkHAJkJhQmECQcANAmZCTsJBwA0CYYJmQkHAIYJhQmZCQcAhglzCYUJBwCaCVoJWwkHAJoJmwlaCQcAXAmcCZ0JBwBcCV0JnAkHAJoJXgmeCQcAmglbCV4JBwCeCV8JnwkHAJ4JXglfCQcAYAmdCaAJBwBgCVwJnQkHAGEJoAmhCQcAYQlgCaAJBwBdCaIJnAkHAF0JeAmiCQcAowlhCaEJBwCjCYAJYQkHAIwJmwmkCQcAjAlaCZsJBwCMCaIJeAkHAIwJpAmiCQcAnwmTCaUJBwCfCV8JkwkHAKMJkwmACQcAowmlCZMJBwCmCZsJmgkHAKYJpwmbCQcApwljCWUJBwCnCaYJYwkHAGcJqAmpCQcAZwlpCagJBwCcCagJnQkHAJwJqQmoCQcAqgljCaYJBwCqCWoJYwkHAJ4JpgmaCQcAngmqCaYJBwCqCZ8JqwkHAKoJngmfCQcAqwlqCaoJBwCrCWwJagkHAGkJrAmoCQcAaQlvCawJBwCdCawJoAkHAJ0JqAmsCQcArQmgCawJBwCtCaEJoAkHAHEJrAlvCQcAcQmtCawJBwBnCa4JegkHAGcJqQmuCQcAogmpCZwJBwCiCa4JqQkHAK0JfgmvCQcArQlxCX4JBwCtCaMJoQkHAK0JrwmjCQcAZQmwCacJBwBlCY0JsAkHAJsJsAmkCQcAmwmnCbAJBwCuCaQJsAkHAK4JogmkCQcAjQmuCbAJBwCNCXoJrgkHALEJbAmrCQcAsQmSCWwJBwClCasJnwkHAKUJsQmrCQcApQmvCbEJBwClCaMJrwkHALEJfgmSCQcAsQmvCX4JBwCyCbMJtAkHALIJtQmzCQcAtgm3CbgJBwC2CbkJtwkHALQJugm7CQcAtAmzCboJBwC8CboJvQkHALwJuwm6CQcAuAm+Cb8JBwC4CbcJvgkHAMAJvgnBCQcAwAm/Cb4JBwC2CcIJuQkHALYJwwnCCQcAwQnECcAJBwDBCcUJxAkHAMYJtgm4CQcAxgnDCbYJBwC5CccJtwkHALkJwgnHCQcAyAnJCcoJBwDICcsJyQkHAMwJzQnOCQcAzAnPCc0JBwDQCdEJ0gkHANAJ0wnRCQcA1AnVCdYJBwDUCdcJ1QkHANgJygnZCQcA2AnICcoJBwDOCdoJ2wkHAM4JzQnaCQcA0gncCd0JBwDSCdEJ3AkHAN4J1gnfCQcA3gnUCdYJBwDLCeAJyQkHAMsJ4QngCQcA4gnjCeQJBwDiCeUJ4wkHAOEJ5gngCQcA4QnnCeYJBwDQCecJ0wkHANAJ5gnnCQcA6AnjCeUJBwDoCekJ4wkHAOoJ6AnrCQcA6gnpCegJBwDkCewJ4gkHAOQJ7QnsCQcA7gntCe8JBwDuCewJ7QkHAPAJygnJCQcA8AnxCcoJBwDOCfAJzAkHAM4J8QnwCQcAyAnyCcsJBwDICfMJ8gkHAM8J8wnNCQcAzwnyCfMJBwDxCdkJygkHAPEJ9AnZCQcA2wnxCc4JBwDbCfQJ8QkHANgJ8wnICQcA2An1CfMJBwDNCfUJ2gkHAM0J8wn1CQcA6wn2CeoJBwDrCfcJ9gkHANMJ+AnRCQcA0wn5CfgJBwDSCfoJ0AkHANIJ+wn6CQcA0Qn8CdwJBwDRCfgJ/AkHAN0J+wnSCQcA3Qn9CfsJBwD+Cf8JAAoHAP4JAQr/CQcAAQrXCf8JBwABCtUJ1wkHAOsJAgr3CQcA6wkDCgIKBwADCvoJAgoHAAMK0An6CQcA6AkDCusJBwDoCQQKAwoHAAQK0AkDCgcABArmCdAJBwDlCQQK6AkHAOUJBQoECgcABQrmCQQKBwAFCuAJ5gkHAOIJBQrlCQcA4gkGCgUKBwAGCuAJBQoHAAYKyQngCQcA7AkGCuIJBwDsCQcKBgoHAAcKyQkGCgcABwrwCckJBwDuCQcK7AkHAO4JCAoHCgcACArwCQcKBwAICswJ8AkHAO8JCAruCQcA7wkJCggKBwAJCswJCAoHAAkKzwnMCQcA7QkJCu8JBwDtCQoKCQoHAAoKzwkJCgcACgryCc8JBwDkCQoK7QkHAOQJCwoKCgcACwryCQoKBwALCssJ8gkHAOMJCwrkCQcA4wkMCgsKBwAMCssJCwoHAAwK4QnLCQcA6QkMCuMJBwDpCQ0KDAoHAA0K4QkMCgcADQrnCeEJBwDqCQ0K6QkHAOoJDgoNCgcADgrnCQ0KBwAOCtMJ5wkHAPYJDgrqCQcA9gkPCg4KBwAPCtMJDgoHAA8K+QnTCQcAEAoRChIKBwAQChMKEQoHABQKFQoWCgcAFAoXChUKBwAYChkKGgoHABgKGwoZCgcAFQocCh0KBwAVChcKHAoHAB4KGwoYCgcAHgofChsKBwAgChMKEAoHACAKIQoTCgcAGgohCiAKBwAaChkKIQoHABIKIgojCgcAEgoRCiIKBwAWCiIKFAoHABYKIwoiCgcAJAoRChMKBwAkCiUKEQoHABIKJgoQCgcAEgonCiYKBwAoChYKFQoHACgKKQoWCgcAFAoqChcKBwAUCisKKgoHACwKGQobCgcALAotChkKBwAaCi4KGAoHABoKLwouCgcAHAowCh0KBwAcCjEKMAoHABcKMQocCgcAFwoqCjEKBwAwChUKHQoHADAKKAoVCgcAMgobCh8KBwAyCiwKGwoHADMKHwoeCgcAMwoyCh8KBwAYCjMKHgoHABgKLgozCgcANAoTCiEKBwA0CiQKEwoHABAKNQogCgcAEAomCjUKBwAtCiEKGQoHAC0KNAohCgcAIAovChoKBwAgCjUKLwoHABEKNgoiCgcAEQolCjYKBwA3ChIKIwoHADcKJwoSCgcAIgorChQKBwAiCjYKKwoHACkKIwoWCgcAKQo3CiMKBwD2CTgKOQoHAPYJ9wk4CgcAJgo5CjgKBwAmCicKOQoHADoKKQooCgcAOgo7CikKBwA7CvgJ+QkHADsKOgr4CQcALwo8Ci4KBwAvCj0KPAoHAPsJPQr6CQcA+wk8Cj0KBwA+CvgJOgoHAD4K/An4CQcAMAo6CigKBwAwCj4KOgoHAC4KPwozCgcALgo8Cj8KBwD9CTwK+wkHAP0JPwo8CgcA9wlACjgKBwD3CQIKQAoHACYKQAo1CgcAJgo4CkAKBwACCj0KQAoHAAIK+gk9CgcANQo9Ci8KBwA1CkAKPQoHAEEK9gk5CgcAQQoPCvYJBwA3CjkKJwoHADcKQQo5CgcAOwo3CikKBwA7CkEKNwoHAEEK+QkPCgcAQQo7CvkJBwBCCkMKRAoHAEIKRQpDCgcAJApDCiUKBwAkCkQKQwoHAEYKKgorCgcARgpHCioKBwBHCkgKSQoHAEcKRgpICgcALApKCi0KBwAsCksKSgoHAEwKSwpNCgcATApKCksKBwBHCk4KTwoHAEcKSQpOCgcAKgpPCjEKBwAqCkcKTwoHADIKSwosCgcA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1woHAPAK7wrUCgcA8QrXCtkKBwDxCvAK1woHAPIK2QrbCgcA8grxCtkKBwDGCtsKqwoHAMYK8grbCgcA0wrzCt0KBwDTCu0K8woHAN0K9AriCgcA3QrzCvQKBwDiCugKzAoHAOIK9AroCgcA9Qr2CvcKBwD1CvgK9goHAPgK+Qr2CgcA+Ar6CvkKBwD7CvcK/AoHAPsK9Qr3CgcA/Qr8Cv4KBwD9CvsK/AoHAP8K/goACwcA/wr9Cv4KBwABCwALAgsHAAEL/woACwcAAwsCCwQLBwADCwELAgsHAAULBAsGCwcABQsDCwQLBwAHCwYLCAsHAAcLBQsGCwcACQsICwoLBwAJCwcLCAsHAAsLCgsMCwcACwsJCwoLBwANCwwLDgsHAA0LCwsMCwcADwsOCxALBwAPCw0LDgsHABELEAsSCwcAEQsPCxALBwATCxILFAsHABMLEQsSCwcAFQsUCxYLBwAVCxMLFAsHABcLFgsYCwcAFwsVCxYLBwAZCxgLGgsHABkLFwsYCwcAGwsaCxwLBwAbCxkLGgsHAB0LHAseCwcAHQsbCxwLBwAfCx4LIAsHAB8LHQseCwcAIQsgCyILBwAhCx8LIAsHACMLIgskCwcAIwshCyILBwAlCyQLJgsHACULIwskCwcAJwsmCygLBwAnCyULJgsHAPoKKAv5CgcA+gonCygLBwAmCykLKAsHACYLKgspCwcAKgsrCykLBwAqCywLKwsHACQLKgsmCwcAJAstCyoLBwAtCywLKgsHAC0LLgssCwcAIgstCyQLBwAiCy8LLQsHAC8LLgstCwcALwswCy4LBwAgCy8LIgsHACALMQsvCwcAMQswCy8LBwAxCzILMAsHAB4LMQsgCwcAHgszCzELBwAzCzILMQsHADMLNAsyCwcAHAszCx4LBwAcCzULMwsHADULNAszCwcANQs2CzQLBwAaCzULHAsHABoLNws1CwcANws2CzULBwA3CzgLNgsHABgLNwsaCwcAGAs5CzcLBwA5CzgLNwsHADkLOgs4CwcAFgs5CxgLBwAWCzsLOQsHADsLOgs5CwcAOws8CzoLBwAUCzsLFgsHABQLPQs7CwcAPQs8CzsLBwA9Cz4LPAsHABILPQsUCwcAEgs/Cz0LBwA/Cz4LPQsHAD8LQAs+CwcAEAs/CxILBwAQC0ELPwsHAEELQAs/CwcAQQtCC0ALBwAOC0ELEAsHAA4LQwtBCwcAQwtCC0ELBwBDC0QLQgsHAAwLQwsOCwcADAtFC0MLBwBFC0QLQwsHAEULRgtECwcACgtFCwwLBwAKC0cLRQsHAEcLRgtFCwcARwtIC0YLBwAIC0cLCgsHAAgLSQtHCwcASQtIC0cLBwBJC0oLSAsHAAYLSQsICwcABgtLC0kLBwBLC0oLSQsHAEsLTAtKCwcABAtLCwYLBwAEC00LSwsHAE0LTAtLCwcATQtOC0wLBwACC00LBAsHAAILTwtNCwcATwtOC00LBwBPC1ALTgsHAAALTwsCCwcAAAtRC08LBwBRC1ALTwsHAFELUgtQCwcA/gpRCwALBwD+ClMLUQsHAFMLUgtRCwcAUwtUC1ILBwD8ClML/goHAPwKVQtTCwcAVQtUC1MLBwBVC1YLVAsHAPcKVQv8CgcA9wpXC1ULBwBXC1YLVQsHAFcLWAtWCwcA9gpXC/cKBwD2ClkLVwsHAFkLWAtXCwcAWQtaC1gLBwD5ClkL9goHAPkKWwtZCwcAWwtaC1kLBwBbC1wLWgsHACgLWwv5CgcAKAspC1sLBwApC1wLWwsHACkLKwtcCwcAXQsVCxcLBwBdC14LFQsHAF4LEwsVCwcAXgtfCxMLBwBfCxELEwsHAF8LYAsRCwcAYAsPCxELBwBgC2ELDwsHAGILXgtdCwcAYgtjC14LBwBjC18LXgsHAGMLZAtfCwcAZAtgC18LBwBkC2ULYAsHAGULYQtgCwcAZQtmC2ELBwBnC2MLYgsHAGcLaAtjCwcAaAtkC2MLBwBoC2kLZAsHAGkLZQtkCwcAaQtqC2ULBwBqC2YLZQsHAGoLawtmCwcA9QppC2gLBwD1CvsKaQsHAP0KaQv7CgcA/QpqC2kLBwD/CmoL/QoHAP8KawtqCwcAbAsBCwMLBwBsC20LAQsHAG4LAwsFCwcAbgtsCwMLBwD/Cm0LawsHAP8KAQttCwcAbwsFCwcLBwBvC24LBQsHAAcLCwsNCwcABwsJCwsLBwAPCwcLDQsHAA8LbwsHCwcA+ApoC2cLBwD4CvUKaAsHAHALJwv6CgcAcAtxCycLBwAlC3ELIwsHACULJwtxCwcA+gpnC3ALBwD6CvgKZwsHAHILGwsdCwcAcgtzCxsLBwBzCxkLGwsHAHMLdAsZCwcAHwtyCx0LBwAfCyELcgsHAF0LGQt0CwcAXQsXCxkLBwAjC3ILIQsHACMLcQtyCwcAcAt0C3MLBwBwC2cLdAsHAHELcwtyCwcAcQtwC3MLBwBnC10LdAsHAGcLYgtdCwcAvwnGCbgJBwC/CXULxgkHAMAJdQu/CQcAwAnECXULBwC3CXYLvgkHALcJxwl2CwcAdgvBCb4JBwB2C8UJwQkHALIJdwu1CQcAsgl4C3cLBwC9CXkLvAkHAL0Jegt5CwcAtQl7C7MJBwC1CXcLewsHALQJeAuyCQcAtAl8C3gLBwCzCX0LugkHALMJewt9CwcAugl6C70JBwC6CX0LegsHALsJfAu0CQcAuwl+C3wLBwC8CX4LuwkHALwJeQt+CwcAwwl/C8IJBwDDCYALfwsHAMUJgQvECQcAxQmCC4ELBwDGCYALwwkHAMYJgwuACwcAwgmEC8cJBwDCCX8LhAsHAHULgwvGCQcAdQuFC4MLBwDECYULdQsHAMQJgQuFCwcAxwmGC3YLBwDHCYQLhgsHAHYLggvFCQcAdguGC4ILBwCHC38LgAsHAIcLiAt/CwcAhwuJC4gLBwCHC4oLiQsHAIELiwuMCwcAgQuCC4sLBwCNC4wLiwsHAI0LjguMCwcAhwuDC48LBwCHC4ALgwsHAI8LiguHCwcAjwuQC4oLBwCIC4QLfwsHAIgLkQuECwcAkQuJC5ILBwCRC4gLiQsHAJMLgwuFCwcAkwuPC4MLBwCPC5QLkAsHAI8LkwuUCwcAjAuFC4ELBwCMC5MLhQsHAIwLlAuTCwcAjAuOC5QLBwCVC4QLkQsHAJULhguECwcAkQuWC5ULBwCRC5ILlgsHAJULgguGCwcAlQuLC4ILBwCLC5YLjQsHAIsLlQuWCwcAlwuKC5gLBwCXC4kLigsHAJgLeAuXCwcAmAt3C3gLBwCOC5kLmgsHAI4LjQuZCwcAeQuaC5kLBwB5C3oLmgsHAJsLiguQCwcAmwuYC4oLBwCYC3sLdwsHAJgLmwt7CwcAlwuSC4kLBwCXC5wLkgsHAJwLeAt8CwcAnAuXC3gLBwCdC5ALlAsHAJ0LmwuQCwcAmwt9C3sLBwCbC50LfQsHAJ0LjguaCwcAnQuUC44LBwCdC3oLfQsHAJ0Lmgt6CwcAnAuWC5ILBwCcC54LlgsHAJ4LfAt+CwcAngucC3wLBwCeC40LlgsHAJ4LmQuNCwcAmQt+C3kLBwCZC54LfgsHAJ8LoAuhCwcAnwuiC6ALBwCjC6QLpQsHAKMLpgukCwcApwuhC6gLBwCnC58LoQsHAKYLqQukCwcApguqC6kLBwCrC6gLrAsHAKsLpwuoCwcAqgutC6kLBwCqC64LrQsHAK4LrwutCwcArguwC68LBwCwC7ELrwsHALALsguxCwcAsgusC7ELBwCyC6sLrAsHALALqwuyCwcAsAuuC6sLBwCnC64LqgsHAKcLqwuuCwcAnwuqC6YLBwCfC6cLqgsHAKYLogufCwcApgujC6ILBwCpC7MLpAsHAKkLtAuzCwcAtAu1C7MLBwC0C7YLtQsHAK0LtAupCwcArQu3C7QLBwC3C7YLtAsHALcLuAu2CwcArwu3C60LBwCvC7kLtwsHALkLuAu3CwcAuQu6C7gLBwCxC7kLrwsHALELuwu5CwcAuwu6C7kLBwC7C7wLugsHAKwLuwuxCwcArAu9C7sLBwC9C7wLuwsHAL0Lvgu8CwcAqAu9C6wLBwCoC78LvQsHAL8Lvgu9CwcAvwvAC74LBwChC78LqAsHAKELwQu/CwcAwQvAC78LBwDBC8ILwAsHAKALwwvECwcAoAulC8MLBwDEC8ILwQsHAMQLxQvCCwcApAvDC6ULBwCkC7MLwwsHALMLxgvDCwcAswu1C8YLBwAfBx0HHgcHAB8HIQcdBwcAHwd0BiIHBwAfB3UGdAYHACMHIAciBwcAIwclByAHBwAjB3cGJgcHACMHdgZ3BgcAJwckByYHBwAnBykHJAcHACcHeQYqBwcAJwd4BnkGBwArBygHKgcHACsHLgcoBwcAKwd7BiwHBwArB3oGewYHAMgCeQHHAgcAyAK9AnkBBwDKAr0CyAIHAMoCrAG9AgcAzAKsAcoCBwDMAqsBrAEHAM4CqwHMAgcAzgKpAasBBwDQAqkBzgIHANACqgGpAQcA1gPSA9QDBwDWA9MD0gMHANYDqgHQAgcA1gPVA6oBBwDjAeYB4QEHAOMB3QLmAQcA6AHdAuMBBwDoAd8C3QIHACYD3wLoAQcAJgMjA98CBwAmAykDJwMHACYDJQMpAwcAQAQkAycDBwBABEEEJAMHAEYBSgFFAQcARgFIAUoBBwBLAUgBRgEHAEsBTAFIAQcATgFMAUsBBwBOAU8BTAEHAFEBTwFOAQcAUQFSAU8BBwBUAVIBUQEHAFQBVQFSAQcAHgJVAVQBBwAeAh8CVQEHAEADGAFFAQcAQAM9AxgBBwBAA0MDQQMHAEADPwNDAwcAxwvIC8kLBwDHC8oLyAsHAMsLzAvNCwcAywvOC8wLBwDKC88LyAsHAMoL0AvPCwcA0QvOC8sLBwDRC9ILzgsHANAL0wvPCwcA0AvUC9MLBwDVC9EL1gsHANUL0gvRCwcA1AvXC9MLBwDUC9gL1wsHANkL1QvWCwcA2QvaC9ULBwDYC9sL1wsHANgL3AvbCwcA3QvaC9kLBwDdC94L2gsHAN8L4AvhCwcA3wviC+ALBwDcC+ML2wsHANwL5AvjCwcAzQvlC8sLBwDNC+YL5QsHAMgL5gvJCwcAyAvlC+YLBwDnC8wLzgsHAOcL6AvMCwcAxwvnC8oLBwDHC+gL5wsHAMsL6QvRCwcAywvlC+kLBwDPC+ULyAsHAM8L6QvlCwcA6gvOC9ILBwDqC+cLzgsHAMoL6gvQCwcAygvnC+oLBwDrC9EL6QsHAOsL1gvRCwcA0wvpC88LBwDTC+sL6QsHANUL6gvSCwcA1QvsC+oLBwDsC9AL6gsHAOwL1AvQCwcA1gvtC9kLBwDWC+sL7QsHANcL6wvTCwcA1wvtC+sLBwDuC9UL2gsHAO4L7AvVCwcA1AvuC9gLBwDUC+wL7gsHAOML2QvtCwcA4wvdC9kLBwDbC+0L1wsHANsL4wvtCwcA3gvuC9oLBwDeC+QL7gsHAOQL2AvuCwcA5AvcC9gLBwDkC+8L8AsHAOQL3gvvCwcA4wvwC/ELBwDjC+QL8AsHAPIL4wvxCwcA8gvdC+MLBwDvC90L8gsHAO8L3gvdCwcA8AvzC/QLBwDwC+8L8wsHAPEL9Av1CwcA8QvwC/QLBwD2C/EL9QsHAPYL8gvxCwcA8wvyC/YLBwDzC+8L8gsHAPcL8wv2CwcA9wv4C/MLBwDzC/kL9AsHAPML+Av5CwcA9Av6C/ULBwD0C/kL+gsHAPoL9gv1CwcA+gv3C/YLBwD7C/gL9wsHAPsL/Av4CwcA+Av9C/kLBwD4C/wL/QsHAPkL/gv6CwcA+Qv9C/4LBwD+C/cL+gsHAP4L+wv3CwcA/Qv/CwAMBwD9C/wL/wsHAP4LAQwCDAcA/gv9CwEMBwADDP4LBAwHAAMM+wv+CwcA/wv7CwMMBwD/C/wL+wsHAAUM/wsDDAcABQwGDP8LBwD/CwcMCAwHAP8LBgwHDAcACQwKDAsMBwAJDAwMCgwHAA0MAwwODAcADQwFDAMMBwAPDAYMBQwHAA8MEAwGDAcABgwRDBIMBwAGDBAMEQwHAAwMEwwKDAcADAwUDBMMBwAVDAUMFgwHABUMDwwFDAcAFwwQDA8MBwAXDBgMEAwHABAMGQwaDAcAEAwYDBkMBwAUDBsMEwwHABQMHAwbDAcAHQwPDB4MBwAdDBcMDwwHAB8MGAwXDAcAHwwgDBgMBwAYDCEMIgwHABgMIAwhDAcAHAziCxsMBwAcDOAL4gsHACMMFwwdDAcAIwwkDBcMBwAlDCYMJwwHACUMKAwmDAcAKQwoDCUMBwApDCoMKAwHACsMKQwsDAcAKwwqDCkMBwAtDCsMLAwHAC0MLgwrDAcALwwwDDEMBwAvDDIMMAwHACcMMgwlDAcAJwwwDDIMBwAzDDQMNQwHADMMNgw0DAcANww2DDgMBwA3DDQMNgwHADkMLww6DAcAOQwyDC8MBwAlDDkMKQwHACUMMgw5DAcANQw7DDwMBwA1DDQMOwwHAD0MNAw3DAcAPQw7DDQMBwA+DDkMOgwHAD4MPww5DAcAKQw/DCwMBwApDDkMPwwHAEAMPgxBDAcAQAw/DD4MBwAsDEAMLQwHACwMPwxADAcAOwxCDDwMBwA7DEMMQgwHAEQMOww9DAcARAxDDDsMBwBCDEUMRgwHAEIMQwxFDAcARwxDDEQMBwBHDEUMQwwHAEgMQQxJDAcASAxADEEMBwAtDEgMLgwHAC0MQAxIDAcASgwnDCYMBwBKDDAMJwwHADEMSgxLDAcAMQwwDEoMBwA9DEwMRAwHAD0MTQxMDAcATQwrDEwMBwBNDCoMKwwHADcMTQw9DAcANwxODE0MBwBODCoMTQwHAE4MKAwqDAcAOAxODDcMBwA4DE8MTgwHAE8MKAxODAcATwwmDCgMBwA2DE8MOAwHADYMUAxPDAcAUAwmDE8MBwBQDEoMJgwHADMMUAw2DAcAMwxRDFAMBwBRDEoMUAwHAFEMSwxKDAcARAxSDEcMBwBEDEwMUgwHAEwMLgxSDAcATAwrDC4MBwBHDFMMRQwHAEcMUgxTDAcAUgxIDFMMBwBSDC4MSAwHAEUMVAxGDAcARQxTDFQMBwBTDEkMVAwHAFMMSAxJDAcAVQxWDFcMBwBVDFgMVgwHAFgMWQxWDAcAWAxaDFkMBwBZDFsMXAwHAFkMWgxbDAcAWwxdDFwMBwBbDF4MXQwHAF8MLwwxDAcAXwxgDC8MBwBgDFcMVgwHAGAMXwxXDAcAYQwzDDUMBwBhDGIMMwwHAGIMYwxkDAcAYgxhDGMMBwAvDGUMOgwHAC8MYAxlDAcAZQxWDFkMBwBlDGAMVgwHAGYMNQw8DAcAZgxhDDUMBwBhDGcMYwwHAGEMZgxnDAcAZQw+DDoMBwBlDGgMPgwHAGgMWQxcDAcAaAxlDFkMBwA+DGkMQQwHAD4MaAxpDAcAaQxcDF0MBwBpDGgMXAwHAEIMZgw8DAcAQgxqDGYMBwBmDGsMZwwHAGYMagxrDAcAbAxCDEYMBwBsDGoMQgwHAGoMbQxrDAcAagxsDG0MBwBBDG4MSQwHAEEMaQxuDAcAbgxdDF4MBwBuDGkMXQwHAFcMbwxVDAcAVwxfDG8MBwBvDDEMSwwHAG8MXwwxDAcAcAxnDGsMBwBwDHEMZwwHAFsMcQxwDAcAWwxaDHEMBwBxDGMMZwwHAHEMcgxjDAcAWgxyDHEMBwBaDFgMcgwHAHIMZAxjDAcAcgxzDGQMBwBYDHMMcgwHAFgMVQxzDAcAcwxiDGQMBwBzDHQMYgwHAFUMdAxzDAcAVQxvDHQMBwB0DDMMYgwHAHQMUQwzDAcAbwxRDHQMBwBvDEsMUQwHAHUMawxtDAcAdQxwDGsMBwBeDHAMdQwHAF4MWwxwDAcAdgxtDGwMBwB2DHUMbQwHAG4MdQx2DAcAbgxeDHUMBwBUDGwMRgwHAFQMdgxsDAcASQx2DFQMBwBJDG4MdgwHAHcMeAx5DAcAdwx6DHgMBwB7DHwMfQwHAHsMfgx8DAcAdwx/DHoMBwB3DIAMfwwHAH4MgQx8DAcAfgyCDIEMBwCADIMMfwwHAIAMhAyDDAcAggyFDIEMBwCCDIYMhQwHAIQMhwyDDAcAhAyIDIcMBwCJDIgMigwHAIkMhwyIDAcAhgyLDIUMBwCGDIwMiwwHAI0MjAyODAcAjQyLDIwMBwB9DI8MewwHAH0MkAyPDAcAkQx9DHwMBwCRDJAMfQwHAJIMfAyBDAcAkgyRDHwMBwCTDIEMhQwHAJMMkgyBDAcAlAyFDIsMBwCUDJMMhQwHAI0MlAyLDAcAjQyVDJQMBwB4DJYMeQwHAHgMlwyWDAcAeQyYDHcMBwB5DJYMmAwHAHcMmQyADAcAdwyYDJkMBwCADJoMhAwHAIAMmQyaDAcAhAybDIgMBwCEDJoMmwwHAIgMnAyKDAcAiAybDJwMBwCXDJ0MlgwHAJcMngydDAcAlgyfDJgMBwCWDJ0MnwwHAJgMoAyZDAcAmAyfDKAMBwCZDKEMmgwHAJkMoAyhDAcAmgyiDJsMBwCaDKEMogwHAKIMnAybDAcAogyjDJwMBwCeDKQMnQwHAJ4MpQykDAcAkAylDI8MBwCQDKQMpQwHAJ0MpgyfDAcAnQykDKYMBwCRDKQMkAwHAJEMpgykDAcAnwynDKAMBwCfDKYMpwwHAJIMpgyRDAcAkgynDKYMBwCgDKgMoQwHAKAMpwyoDAcAkwynDJIMBwCTDKgMpwwHAKEMqQyiDAcAoQyoDKkMBwCUDKgMkwwHAJQMqQyoDAcAogyqDKMMBwCiDKkMqgwHAJUMqQyUDAcAlQyqDKkMBwB7DKsMrAwHAHsMjwyrDAcAfgysDK0MBwB+DHsMrAwHAIIMrQyuDAcAggx+DK0MBwCGDK4MrwwHAIYMggyuDAcAjAyvDLAMBwCMDIYMrwwHAI4MsAyxDAcAjgyMDLAMBwCXDLIMswwHAJcMeAyyDAcAsgx6DLQMBwCyDHgMegwHALQMfwy1DAcAtAx6DH8MBwC1DIMMtgwHALUMfwyDDAcAtgyHDLcMBwC2DIMMhwwHALcMiQy4DAcAtwyHDIkMBwCeDLMMuQwHAJ4MlwyzDAcApQy5DLoMBwClDJ4MuQwHAI8MugyrDAcAjwylDLoMBwCsDLsMvAwHAKwMqwy7DAcArQy8DL0MBwCtDKwMvAwHAK4MvQy+DAcArgytDL0MBwCvDL4MvwwHAK8Mrgy+DAcAsAy/DMAMBwCwDK8MvwwHALEMwAzBDAcAsQywDMAMBwCzDMIMwwwHALMMsgzCDAcAwgy0DMQMBwDCDLIMtAwHAMQMtQzFDAcAxAy0DLUMBwDFDLYMxgwHAMUMtQy2DAcAxgy3DMcMBwDGDLYMtwwHAMcMuAzIDAcAxwy3DLgMBwC5DMMMyQwHALkMswzDDAcAugzJDMoMBwC6DLkMyQwHAKsMygy7DAcAqwy6DMoMBwC8DMsMzAwHALwMuwzLDAcAvQzMDM0MBwC9DLwMzAwHAL4MzQzODAcAvgy9DM0MBwC/DM4MzwwHAL8MvgzODAcAwAzPDNAMBwDADL8MzwwHAMEM0AzRDAcAwQzADNAMBwDDDNIM0wwHAMMMwgzSDAcA0gzEDNQMBwDSDMIMxAwHANQMxQzVDAcA1AzEDMUMBwDVDMYM1gwHANUMxQzGDAcA1gzHDNcMBwDWDMYMxwwHANcMyAzYDAcA1wzHDMgMBwDJDNMM2QwHAMkMwwzTDAcAygzZDNoMBwDKDMkM2QwHALsM2gzLDAcAuwzKDNoMBwDMDNsM3AwHAMwMywzbDAcAzQzcDN0MBwDNDMwM3AwHAM4M3QzeDAcAzgzNDN0MBwDPDN4M3wwHAM8MzgzeDAcA0AzfDOAMBwDQDM8M3wwHANEM4AzhDAcA0QzQDOAMBwDTDOIM4wwHANMM0gziDAcA4gzUDOQMBwDiDNIM1AwHAOQM1QzlDAcA5AzUDNUMBwDlDNYM5gwHAOUM1QzWDAcA5gzXDOcMBwDmDNYM1wwHAOcM2AzoDAcA5wzXDNgMBwDZDOMM6QwHANkM0wzjDAcA2gzpDOoMBwDaDNkM6QwHAMsM6gzbDAcAywzaDOoMBwDcDOsM7AwHANwM2wzrDAcA3QzsDO0MBwDdDNwM7AwHAN4M7QzuDAcA3gzdDO0MBwDfDO4M7wwHAN8M3gzuDAcA4AzvDPAMBwDgDN8M7wwHAOEM8AzxDAcA4QzgDPAMBwDjDPIM8wwHAOMM4gzyDAcA8gzkDPQMBwDyDOIM5AwHAPQM5Qz1DAcA9AzkDOUMBwD1DOYM9gwHAPUM5QzmDAcA9gznDPcMBwD2DOYM5wwHAPcM6Az4DAcA9wznDOgMBwDpDPMM+QwHAOkM4wzzDAcA6gz5DPoMBwDqDOkM+QwHANsM+gzrDAcA2wzqDPoMBwD7DPwM/QwHAPsM/gz8DAcA/wwADQENBwD/DAINAA0HAAMN/Az+DAcAAw0EDfwMBwAFDQIN/wwHAAUNBg0CDQcABw0EDQMNBwAHDQgNBA0HAAkNBg0FDQcACQ0KDQYNBwALDQgNBw0HAAsNDA0IDQcADA2JDIoMBwAMDQsNiQwHAA0NCg0JDQcADQ0ODQoNBwAODY0MjgwHAA4NDQ2NDAcADw0BDQANBwAPDRANAQ0HAAENEQ3/DAcAAQ0QDRENBwD/DBINBQ0HAP8MEQ0SDQcABQ0TDQkNBwAFDRINEw0HAAkNFA0NDQcACQ0TDRQNBwAUDY0MDQ0HABQNlQyNDAcAFQ37DP0MBwAVDRYN+wwHABcN/Qz8DAcAFw0VDf0MBwAYDfwMBA0HABgNFw38DAcAGQ0EDQgNBwAZDRgNBA0HABoNCA0MDQcAGg0ZDQgNBwCcDAwNigwHAJwMGg0MDQcAGw0WDRUNBwAbDRwNFg0HAB0NFQ0XDQcAHQ0bDRUNBwAeDRcNGA0HAB4NHQ0XDQcAHw0YDRkNBwAfDR4NGA0HACANGQ0aDQcAIA0fDRkNBwCcDCANGg0HAJwMowwgDQcAIQ0cDRsNBwAhDSINHA0HACINEA0PDQcAIg0hDRANBwAjDRsNHQ0HACMNIQ0bDQcAIQ0RDRANBwAhDSMNEQ0HACQNHQ0eDQcAJA0jDR0NBwAjDRINEQ0HACMNJA0SDQcAJQ0eDR8NBwAlDSQNHg0HACQNEw0SDQcAJA0lDRMNBwAmDR8NIA0HACYNJQ0fDQcAJQ0UDRMNBwAlDSYNFA0HAKoMIA2jDAcAqgwmDSANBwAmDZUMFA0HACYNqgyVDAcAJw0ADSgNBwAnDQ8NAA0HACgNAg0pDQcAKA0ADQINBwApDQYNKg0HACkNAg0GDQcAKg0KDSsNBwAqDQYNCg0HACsNDg0sDQcAKw0KDQ4NBwAsDY4MsQwHACwNDg2ODAcALQ0WDS4NBwAtDfsMFg0HAP4MLQ0vDQcA/gz7DC0NBwADDS8NMA0HAAMN/gwvDQcABw0wDTENBwAHDQMNMA0HAAsNMQ0yDQcACw0HDTENBwCJDDINuAwHAIkMCw0yDQcALg0cDTMNBwAuDRYNHA0HADMNIg00DQcAMw0cDSINBwA0DQ8NJw0HADQNIg0PDQcANQ0oDTYNBwA1DScNKA0HADYNKQ03DQcANg0oDSkNBwA3DSoNOA0HADcNKQ0qDQcAOA0rDTkNBwA4DSoNKw0HADkNLA06DQcAOQ0rDSwNBwA6DbEMwQwHADoNLA2xDAcAOw0uDTwNBwA7DS0NLg0HAC8NOw09DQcALw0tDTsNBwAwDT0NPg0HADANLw09DQcAMQ0+DT8NBwAxDTANPg0HADINPw1ADQcAMg0xDT8NBwC4DEANyAwHALgMMg1ADQcAPA0zDUENBwA8DS4NMw0HAEENNA1CDQcAQQ0zDTQNBwBCDScNNQ0HAEINNA0nDQcAQw02DUQNBwBDDTUNNg0HAEQNNw1FDQcARA02DTcNBwBFDTgNRg0HAEUNNw04DQcARg05DUcNBwBGDTgNOQ0HAEcNOg1IDQcARw05DToNBwBIDcEM0QwHAEgNOg3BDAcASQ08DUoNBwBJDTsNPA0HAD0NSQ1LDQcAPQ07DUkNBwA+DUsNTA0HAD4NPQ1LDQcAPw1MDU0NBwA/DT4NTA0HAEANTQ1ODQcAQA0/DU0NBwDIDE4N2AwHAMgMQA1ODQcASg1BDU8NBwBKDTwNQQ0HAE8NQg1QDQcATw1BDUINBwBQDTUNQw0HAFANQg01DQcAUQ1EDVINBwBRDUMNRA0HAFINRQ1TDQcAUg1EDUUNBwBTDUYNVA0HAFMNRQ1GDQcAVA1HDVUNBwBUDUYNRw0HAFUNSA1WDQcAVQ1HDUgNBwBWDdEM4QwHAFYNSA3RDAcAVw1KDVgNBwBXDUkNSg0HAEsNVw1ZDQcASw1JDVcNBwBMDVkNWg0HAEwNSw1ZDQcATQ1aDVsNBwBNDUwNWg0HAE4NWw1cDQcATg1NDVsNBwDYDFwN6AwHANgMTg1cDQcAWA1PDV0NBwBYDUoNTw0HAF0NUA1eDQcAXQ1PDVANBwBeDUMNUQ0HAF4NUA1DDQcAXw1SDWANBwBfDVENUg0HAGANUw1hDQcAYA1SDVMNBwBhDVQNYg0HAGENUw1UDQcAYg1VDWMNBwBiDVQNVQ0HAGMNVg1kDQcAYw1VDVYNBwBkDeEM8QwHAGQNVg3hDAcAZQ1YDWYNBwBlDVcNWA0HAFkNZQ1nDQcAWQ1XDWUNBwBaDWcNaA0HAFoNWQ1nDQcAWw1oDWkNBwBbDVoNaA0HAFwNaQ1qDQcAXA1bDWkNBwDoDGoN+AwHAOgMXA1qDQcAZg1dDWsNBwBmDVgNXQ0HAGsNXg1sDQcAaw1dDV4NBwBsDVENXw0HAGwNXg1RDQcAbQ1uDW8NBwBtDXANbg0HAG4NcQ1yDQcAbg1wDXENBwByDXMNdA0HAHINcQ1zDQcAdA11DXYNBwB0DXMNdQ0HAHYNdw14DQcAdg11DXcNBwB4DXkNeg0HAHgNdw15DQcAeg17DXwNBwB6DXkNew0HAH0New1+DQcAfQ18DXsNBwB/DX4NgA0HAH8NfQ1+DQcAgQ2ADYINBwCBDX8NgA0HAIMNgg2EDQcAgw2BDYINBwCFDYQNhg0HAIUNgw2EDQcA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Ag4rBS0FBwADDisFAg4HAAMOKQUrBQcABA4pBQMOBwAEDicFKQUHAP0NJwUEDgcA/Q0mBScFBwAFDv0NBA4HAAUOBg79DQcA/Q0HDv4NBwD9DQYOBw4HAP4NCA7/DQcA/g0HDggOBwD/DQkOAA4HAP8NCA4JDgcAAA4KDgEOBwAADgkOCg4HAAoOAg4BDgcACg4LDgIOBwALDgMOAg4HAAsODA4DDgcADA4EDgMOBwAMDgUOBA4HAAcODQ4ODgcABw4GDg0OBwAIDg4ODw4HAAgOBw4ODgcACQ4PDhAOBwAJDggODw4HAAoOEA4RDgcACg4JDhAOBwASDgoOEQ4HABIOCw4KDgcAEw4LDhIOBwATDgwOCw4HABQODA4TDgcAFA4FDgwOBwANDgUOFA4HAA0OBg4FDgcADg4VDhYOBwAODg0OFQ4HAA8OFg4XDgcADw4ODhYOBwAQDhcOGA4HABAODw4XDgcAEQ4YDhkOBwARDhAOGA4HABoOEQ4ZDgcAGg4SDhEOBwAbDhIOGg4HABsOEw4SDgcAHA4TDhsOBwAcDhQOEw4HABUOFA4cDgcAFQ4NDhQOBwAdDhUOHA4HAB0OHg4VDgcAFQ4fDhYOBwAVDh4OHw4HABYOIA4XDgcAFg4fDiAOBwAYDiAOIQ4HABgOFw4gDgcAGQ4hDiIOBwAZDhgOIQ4HACMOGQ4iDgcAIw4aDhkOBwAkDhoOIw4HACQOGw4aDgcAJA4cDhsOBwAkDh0OHA4HACUOHQ4mDgcAJQ4eDh0OBwAfDiUOJw4HAB8OHg4lDgcAIA4nDigOBwAgDh8OJw4HACEOKA4pDgcAIQ4gDigOBwAiDikOKg4HACIOIQ4pDgcAKw4iDioOBwArDiMOIg4HACwOIw4rDgcALA4kDiMOBwAmDiQOLA4HACYOHQ4kDgcABwAlDiYOBwAHAC0OJQ4HACUOLg4nDgcAJQ4tDi4OBwAnDi8OKA4HACcOLg4vDgcAKQ4vDjAOBwApDigOLw4HACoOMA4xDgcAKg4pDjAOBwAyDioOMQ4HADIOKw4qDgcACAArDjIOBwAIACwOKw4HAAcALA4IAAcABwAmDiwOBwAJAC0OBwAHAAkADQAtDgcALQ4KAC4OBwAtDg0ACgAHAC4OEAAvDgcALg4KABAABwAvDhoAMA4HAC8OEAAaAAcAMA4cADEOBwAwDhoA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rg8HAAQFBQUDBQcABAUGBQUFBwAIBQYFBAUHAAgFBwUGBQcACQXMBAMFBwAJBf8EzAQHAAEAIhAjEAcAAQADACIQBwAkEAEAIxAHACQQBQABAAcAJRAFACQQBwAlEA8ABQAHABMAJhAnEAcAEwAVACYQBwAmECgQJxAHACYQKRAoEAcAKRAqECgQBwApECsQKhAHACsQLBAqEAcAKxAtECwQBwAtECIALBAHAC0QIwAiAAcAAwAnECIQBwADABMAJxAHACcQIxAiEAcAJxAoECMQBwAoECQQIxAHACgQKhAkEAcAKhAlECQQBwAqECwQJRAHACwQDwAlEAcALBAiAA8ABwAuEC8QMBAHAC4QMRAvEAcAMhAwEDMQBwAyEC4QMBAHADQQMxA1EAcANBAyEDMQBwCwBDUQsQQHALAENBA1EAcANhAxEDcQBwA2EC8QMRAHADgQNhA5EAcAOBAvEDYQBwA6EC8QOBAHADoQMBAvEAcAOxAwEDoQBwA7EDMQMBAHADwQMxA7EAcAPBA1EDMQBwC5BDUQPBAHALkEsQQ1EAcAPRA+ED8QBwA9EEAQPhAHAEEQPxBCEAcAQRA9ED8QBwBDEEIQRBAHAEMQQRBCEAcARRBEEEYQBwBFEEMQRBAHAMQERhDFBAcAxARFEEYQBwBHEEAQPRAHAEcQSBBAEAcASRA9EEEQBwBJEEcQPRAHAEoQQRBDEAcAShBJEEEQBwBLEEMQRRAHAEsQShBDEAcAywRFEMQEBwDLBEsQRRAHAEwQTRBOEAcATBBPEE0QBwBOEFAQTBAHAE4QURBQEAcAUhBTEFQQBwBSEFUQUxAHAFYQVRBSEAcAVhBXEFUQBwBVEFgQUxAHAFUQWRBYEAcAVxBZEFUQBwBXEFoQWRAHAFsQUBBcEAcAWxBMEFAQBwBdEEwQWxAHAF0QTxBMEAcAUhA3EFYQBwBSEDYQNxAHAFQQNhBSEAcAVBA5EDYQBwCwBF4QNBAHALAE3wReEAcANBBfEDIQBwA0EF4QXxAHADIQYBAuEAcAMhBfEGAQBwAuEGEQMRAHAC4QYBBhEAcAMRBiEDcQBwAxEGEQYhAHADcQYxBWEAcANxBiEGMQBwBWEGQQVxAHAFYQYxBkEAcAVxBlEFoQBwBXEGQQZRAHAN8EZhBeEAcA3wToBGYQBwBeEGcQXxAHAF4QZhBnEAcAXxBoEGAQBwBfEGcQaBAHAGAQaRBhEAcAYBBoEGkQBwBhEGoQYhAHAGEQaRBqEAcAYhBrEGMQBwBiEGoQaxAHAGMQbBBkEAcAYxBrEGwQBwBkEG0QZRAHAGQQbBBtEAcAbhBvEHAQBwBuEHEQbxAHAHIQcRBuEAcAchBzEHEQBwB0EHMQchAHAHQQdRBzEAcAdhB1EHQQBwB2EHcQdRAHAHgQdxB2EAcAeBB5EHcQBwB6EHkQeBAHAHoQexB5EAcAxQR7EP4EBwDFBEYQexAHAEYQeRB7EAcARhBEEHkQBwBEEHcQeRAHAEQQQhB3EAcAPxB3EEIQBwA/EHUQdxAHAHMQPxA+EAcAcxB1ED8QBwBdEE0QTxAHAF0QfBBNEAcAPhB9EH4QBwA+EEAQfRAHAEgQfRBAEAcASBB/EH0QBwBOEIAQgRAHAE4QTRCAEAcAghB9EIMQBwCCEH4QfRAHAIQQfRB/EAcAhBCDEH0QBwCBEFEQThAHAIEQhRBREAcAghBxEH4QBwCCEG8QcRAHAHEQPhB+EAcAcRBzED4QBwCCEIYQbxAHAIIQgBCGEAcAcBCGEHwQBwBwEG8QhhAHAIcQcBB8EAcAhxCIEHAQBwCIEG4QcBAHAIgQiRBuEAcAiRByEG4QBwCJEIoQchAHAIoQdBByEAcAihCLEHQQBwCLEHYQdBAHAIsQjBB2EAcAjBB4EHYQBwCMEI0QeBAHAI0QehB4EAcAjRCOEHoQBwCPEHwQXRAHAI8QhxB8EAcAkBBrEGoQBwCQEJEQaxAHAJEQbBBrEAcAkRCSEGwQBwCSEG0QbBAHAJIQkxBtEAcAkxBlEG0QBwCTEJQQZRAHAJQQWhBlEAcAlBCVEFoQBwCVEFkQWhAHAJUQlhBZEAcAlhBYEFkQBwCWEJcQWBAHAJgQahBpEAcAmBCQEGoQBwCZEGkQaBAHAJkQmBBpEAcAmhBoEGcQBwCaEJkQaBAHAJsQZxBmEAcAmxCaEGcQBwAfBWYQ6AQHAB8FmxBmEAcAmxCMBZwQBwCbEB8FjAUHAJ0QjhCNEAcAnRCcEI4QBwCaEJwQnRAHAJoQmxCcEAcAnhCNEIwQBwCeEJ0QjRAHAJkQnRCeEAcAmRCaEJ0QBwCfEIwQixAHAJ8QnhCMEAcAmBCeEJ8QBwCYEJkQnhAHAKAQixCKEAcAoBCfEIsQBwCQEJ8QoBAHAJAQmBCfEAcAoRCKEIkQBwChEKAQihAHAJEQoBChEAcAkRCQEKAQBwCiEIkQiBAHAKIQoRCJEAcAkhChEKIQBwCSEJEQoRAHAKMQohCIEAcAoxCIEIcQBwCTEJIQohAHAJMQohCjEAcApBCjEIcQBwCkEIcQjxAHAJQQkxCjEAcAlBCjEKQQBwClEKQQjxAHAKUQjxBdEAcAlRCUEKQQBwCVEKQQpRAHAKYQpRBdEAcAphBdEFsQBwCWEJUQpRAHAJYQpRCmEAcApxCmEFsQBwCnEFsQXBAHAJcQlhCmEAcAlxCmEKcQBwCxBbMFqBAHALEFqBCpEAcAqBCqEKsQBwCoEKsQqRAHAKoQrBCtEAcAqhCtEKsQBwCsEK4QrxAHAKwQrxCtEAcArhC+Bb0FBwCuEL0FrxAHAMAFsQWpEAcAwAWpELAQBwCpEKsQsRAHAKkQsRCwEAcAqxCtELIQBwCrELIQsRAHAK0QrxCzEAcArRCzELIQBwCvEL0FyQUHAK8QyQWzEAcAzAXABbAQBwDMBbAQtBAHALAQsRC1EAcAsBC1ELQQBwCxELIQthAHALEQthC1EAcAshCzELcQBwCyELcQthAHALMQyQXUBQcAsxDUBbcQBwDXBcwFtBAHANcFtBC4EAcAtBC1ELkQBwC0ELkQuBAHALUQthC6EAcAtRC6ELkQBwC2ELcQuxAHALYQuxC6EAcAtxDUBd8FBwC3EN8FuxAHAOYFvBCcEAcA5gWcEIwFBwC8EL0QjhAHALwQjhCcEAcAvRC+EHoQBwC9EHoQjhAHAL4QvxB7EAcAvhB7EHoQBwC/EOsF/gQHAL8Q/gR7EAcA9QXAELwQBwD1BbwQ5gUHAL4FrhDAEAcAvgXAEPUFBwDAEMEQvRAHAMAQvRC8EAcArhCsEMEQBwCuEMEQwBAHAMEQwhC+EAcAwRC+EL0QBwCsEKoQwhAHAKwQwhDBEAcAwhDDEL8QBwDCEL8QvhAHAKoQqBDDEAcAqhDDEMIQBwDDEPoF6wUHAMMQ6wW/EAcAqBCzBfoFBwCoEPoFwxAHAIIQgxCBEAcAghCBEIAQBwCDEIQQhRAHAIMQhRCBEAcATRB8EIYQBwBNEIYQgBAHADBBewAAAHJhdjQtM3N0b3AANAAAAAEAAgADAAgACQAMAA0ADgAPABAAEQAYABkAGgAbACAAIQAiACMAJAAlACwALQAuAC8AiB2JHYodix2MHY0djh2PHZAdkR2SHZMdlB2VHZYdlx2YHZkdmh2bHZwdnR2eHZ8doB2hHTBBoRAAAHJhdjQtc2hpZWxkcwBGCAQABQAGAAcACgALABIAEwAUABUAFgAXABwAHQAeAB8AJgAnACgAKQAqACsAMAAxADIAMwAOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0JwAnBCcIJwwnECcUJxgnHCcgJyQnKCcsJzAnNCc4JzwnQCdEJ0gnTCdQJ1QnWCdcJ2AnZCdoJ2wncCd0J3gnfCeAJ4QniCeMJ5AnlCeYJ5wnoCekJ6gnrCewJ7QkgCiEKIgojCiQKJQoqCisKLAotCjQKNQo2CjcKOAo5Cj4KPwpACkEKSApJCkoKSwpMCk0KUgpTClQKVQpcCl0KXgpfCmAKYQpmCmcKaAppCmoKawpsCm0KbgpvCnAKcQp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqiCqMKpAqlChANEQ1oD2kPag9rD2wPbQ9uD28PcA9xD3IPcw90D3UPdg93D3gPeQ96D3sPfA99D34Pfw+AD4EPgg+DD4QPhQ+GD4cPiA+JD4oPiw+MD40Pjg+PD5APkQ+SD5MPlA+VD5YPlw+YD5kPmg+bD5wPnQ+eD58PoA+hD6IPow+kD6UPpg+nD6gPqQ+qD6sPrA+tD64Prw+wD7EPsg+zD7QPtQ+2D7cPuA+5D7oPuw+8D70Pvg+/D8APwQ/CD8MPxA/FD8YPxw/ID8kPyg/LD8wPzQ/OD88P0A/RD9IP0w/UD9UP1g/XD9gP2Q/aD9sP3A/dD94P3w/gD+EP4g/jD+QP5Q/mD+cP6A/pD+oP6w/sD+0P7g/vD/AP8Q/yD/MP9A/1D/YP9w/4D/kP+g/7D/wP/Q/+D/8PABABEAIQAxAEEAUQBhAHEAgQCRAKEAsQDBANEA4QDxAQEBEQEhATEBQQFRAWEBcQGBAZEBoQGxAcEB0QHhAfECAQIRAiECMQJBAlECYQJxAoECkQKhArECwQLRAuEC8QMBAxEDIQMxA0EDUQNhA3EDgQORA6EDsQPBA9ED4QPxBAEEEQQhBDEEQQRRBGEEcQSBBJEEoQSxBMEE0QThBPEFAQURBSEFMQVBBVEFYQVxBYEFkQWhBbEFwQXRBeEF8QYBBhEGIQYxBkEGUQZhBnEGgQaRBqEGsQbBBtEG4QbxBwEHEQchBzEHQQdRB2EHcQeBB5EHoQexB8EH0QfhB/EIAQgRCCEIMQhBCFEIYQhxCIEIkQihCLEIwQjRCOEI8QkBCREJIQkxCUEJUQlhCXEJgQmRCaEJsQnBCdEJ4QnxCgEKEQohCjEKQQpRCmEKcQqBCpEKoQqxCsEK0QrhCvELAQsRCyELMQtBC1ELYQtxC4ELkQuhC7ELwQvRC+EL8QwBDBEMIQwxDEEMUQxhDHEMgQyRDKEMsQzBDNEM4QzxDQENEQ0hDTENQQ1RDWENcQ2BDZENoQ2xDcEN0Q3hDfEOAQ4RDiEOMQ5BDlEOYQ5xDoEOkQ6hDrEOwQ7RDuEO8Q8BDxEPIQ8xD0EPUQ9hD3EPgQ+RD6EPsQ/BD9EP4Q/xAAEQERAhEDEQQRBREGEQcRCBEJEQoRCxEMEQ0RDhEPERARERESERMRFBEVERYRFxEYERkRGhEbERwRHREeER8RIBEhESIRIxEkESURJhEnESgRKREqESsRLBEtES4RLxEwETERMhEzETQRNRE2ETcROBE5EToROxE8ET0RPhE/EUARQRFCEUMRRBFFEUYRRxFIEUkRShFLEUwRTRFOEU8RUBFREVIRUxFUEVURVhFXEVgRWRFaEVsRXBFdEV4RXxFgEWERYhFjEWQRZRFmEWcRaBFpEWoRaxFsEW0RbhFvEXARcRFyEXMRdBF1EXYRdxF4EXkRehF7EXwRfRF+EX8RgBGBEYIRgxGEEYURhhGHEYgRiRGKEYsRjBGNEY4RjxGQEZERkhGTEZQRlRGWEZcRmBGZEZoRmxGcEZ0RnhGfEaARoRGiEaMRwhTDFMQUxRTGFMcUyBTJFMoUyxTMFM0UzhTPFNAU0RTSFNMU1BTVFNYU1xTYFNkU2hTbFNwU3RTeFN8U4BThFOIU4xTkFOUU5hTnFOgU6RTqFOsU7BTtFO4U7xTwFPEU8hTzFPQU9RT2FPcU+BT5FPoU+xT8FP0U/hT/FAAVARUCFQMVBBUFFQYVBxUIFQkVChULFQwVDRUOFQ8VEBURFRIVExUUFRUVFhUXFRgVGRUaFRsVHBUdFR4VHxUgFSEVIhUjFSQVJRUmFScVKBUpFaAVoRWiFaMVpBWlFaYVpxWoFakVqhWrFawVrRWuFa8VsBWxFbIVsxW0FbUVthW3FbgVuRW6FbsVvBW9Fb4VvxXAFcEVwhXDFcQVxRXGFccVyBXJFcoVyxXMFc0VzhXPFdAV0RXSFdMV1BXVFdYV1xXYFdkV2hXbFdwV3RXeFd8V4BXhFeIV4xXkFeUV5hXnFegV6RXqFesV7BXtFe4V7xXwFfEV8hXzFfQV9RX2FfcV+BX5FfoV+xX8Ff0V/hX/FQAWARYCFgMWBBYFFgYWBxYIFgkWChYLFgwWDRYOFg8WEBYRFhIWExYUFhUWFhYXFhgWGRYaFhsWHBYdFh4WHxYgFiEWIhYjFiQWJRYmFicWKBYpFioWKxYsFi0WLhYvFjAWMRYyFjMWNBY1FjYWNxY4FjkWOhY7FjwWPRY+Fj8WQBZBFkIWQxZEFkUWRhZHFkgWSRZKFksWTBZNFk4WTxZQFlEWUhZTFlQWVRZWFlcWWBZZFloWWxZcFl0WXhZfFmAWYRZiFmMWZBZlFmYWZxZoFmkWahZrFmwWbRZuFm8WcBZxFnIWcxZ0FnUWdhZ3FngWeRZ6FnsWfBZ9Fn4WfxaAFoEWghaDFoQWhRaGFocWiBaJFooWixaMFo0WjhaPFpAWkRaSFpMWlBaVFpYWlxaYFpkWmhabFpwWnRaeFp8WoBahFqIWoxakFqUWphanFqgWqRaqFqsWrBatFq4WrxawFrEWshazFrQWtRa2FrcWuBa5FroWuxa8Fr0Wvha/FsAWwRbCFsMWxBbFFsYWxxbIFskWyhbLFswWzRbOFs8W0BbRFtIW0xbUFtUW1hbXFtgW2RbaFtsW3BbdFt4W3xbgFuEW4hbjFuQW5RbmFucW6BbpFuoW6xbsFu0W7hbvFvAW8RbyFvMW9Bb1FvYW9xb4FvkW+hb7FvwW/Rb+Fv8WABcBFwIXAxcEFwUXBhcHFwgXCRcKFwsXDBcNFw4XDxcQFxEXEhcTFxQXFRcWFxcXGBcZFxoXGxccFx0XHhcfFyAXIRciFyMXJBclFyYXJxcoFykXKhcrFywXLRcuFy8XMBcxFzIXMxc0FzUXNhc3FzgXORc6FzsXPBc9Fz4XPxdAF0EXQhdDF0QXRRdGF0cXSBdJF0oXSxdMF00XThdPF1AXURdSF1MXVBdVF1YXVxdYF1kXWhdbF1wXXRdeF18XYBdhF2IXYxdkF2UXZhdnF2gXaRdqF2sXbBdtF24XbxdwF3EXchdzF3QXdRd2F3cXeBd5F3oXexd8F30Xfhd/F4AXgReCF4MXhBeFF4YXhxeIF4kXiheLF4wXjReOF48XkBeRF5IXkxeUF5UXlheXF5gXmReaF5sXnBedF54XnxegF6EXohejF6QXpRemF6cXqBepF6oXqxesF60XrhevF7AXsReyF7MXtBe1F7YXtxe4F7kXuhe7F7wXvRe+F78XwBfBF8IXwxfEF8UXxhfHF8gXyRfKF8sXzBfNF84XzxfQF9EX0hfTF9QX1RfWF9cX2BfZF9oX2xfcF90X3hffF+AX4RfiF+MX5BflF+YX5xfoF+kX6hfrF+wX7RfuF+8X8BfxF/IX8xf0F/UX9hf3F/gX+Rf6F/sX/Bf9F/4X/xcAGAEYAhgDGAQYBRgGGAcYCBgJGAoYCxgMGA0YDhgPGBAYERgSGBMYFBgVGBYYFxgYGBkYGhgbGBwYHRgeGB8YIBghGCIYIxgkGCUYJhgnGCgYKRgqGCsYLBgtGC4YLxgwGDEYMhgzGDQYNRg2GDcYOBg5GDoYOxg8GD0YPhg/GEAYQRhCGEMYRBhFGEYYRxhIGEkYShhLGEwYTRhOGE8YUBhRGFIYUxhUGFUYVhhXGFgYWRhaGFsYXBhdGF4YXxhgGGEYYhhjGGQYZRhmGGcYaBhpGGoYaxhsGG0YbhhvGHAYcRhyGHMYdBh1GHYYdxh4GHkYehh7GHwYfRh+GH8YgBiBGIIYgxiEGIUYhhiHGIgYiRiKGIsYjBiNGI4YjxiQGJEYkhiTGJQYlRiWGJcYmBiZGJoYmxicGJ0YnhifGKAYoRiiGKMYpBilGKYYpxioGKkYqhirGKwYrRiuGK8YsBixGLIYsxi0GLUYthi3GLgYuRi6GLsYvBi9GL4YvxjAGMEYwhjDGMQYxRjGGMcYyBjJGMoYyxjMGM0YzhjPGNAY0RjSGNMY1BjVGNYY1xjYGNkY2hjbGNwY3RjeGN8Y4BjhGOIY4xjkGOUY5hjnGOgY6RjqGOsY7BjtGO4Y7xjwGPEY8hjzGPQY9Rj2GPcY+Bj5GPoY+xj8GP0Y/hj/GAAZARkCGQMZBBkFGQYZBxkIGQkZChkLGQwZDRkOGQ8ZEBkRGRIZExkUGRUZFhkXGRgZGRkaGRsZHBkdGR4ZHxkgGSEZIhkjGSQZJRkmGScZKBkpGSoZKxksGS0ZLhkvGTAZMRkyGTMZNBk1GTYZNxk4GTkZOhk7GTwZPRk+GT8ZQBlBGUIZQxlEGUUZRhlHGUgZSRlKGUsZTBlNGU4ZTxlQGVEZUhlTGVQZVRlWGVcZWBlZGVoZWxlcGV0ZXhlfGWAZYRliGWMZZBllGWYZZxloGWkZahlrGWwZbRluGW8ZcBlxGXIZcxl0GXUZdhl3GXgZeRl6GXsZfBl9GX4ZfxmAGYEZghmDGYQZhRmGGYcZiBmJGYoZixmMGY0ZjhmPGZAZkRmSGZMZlBmVGZYZlxmYGZkZmhmbGZwZnRmeGZ8ZoBmhGaIZoxmkGaUZphmnGagZqRmqGasZrBmtGa4ZrxmwGbEZshmzGbQZtRm2GbcZuBm5GboZuxm8Gb0Zvhm/GcAZwRnCGcMZxBnFGcYZxxnIGckZyhnLGcwZzRnOGc8Z0BnRGdIZ0xnUGdUZ1hnXGdgZ2RnaGdsZ3BndGd4Z3xngGeEZ4hnjGeQZ5RnmGecZ6BnpGeoZ6xnsGe0Z7hnvGfAZ8RnyGfMZ9Bn1GfYZ9xn4GfkZ+hn7GfwZ/Rn+Gf8ZABoBGjBBeQIAAHJhdjQtYmxhY2tfZ2xhc3MAMAE0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjATBBtiMAAHJhdjQtYm9keQDSEWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AQACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8CAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPiA+MD5APlA+YD5wPoA+kD6gPrA+wD7QPuA+8D8APxA/ID8wP0A/UD9gP3A/gD+QP6A/sD/AP9A/4D/wMABAEEAgQDBAQEBQQGBAcECAQJBAoECwQMBA0EDgQPBBAEEQQSBBMEFAQVBBYEFwQYBBkEGgQbBBwEHQQeBB8EIAQhBCIEIwQkBCUEJgQnBCgEKQQqBCsELAQtBC4ELwQwBDEEMgQzBDQENQQ2BDcEOAQ5BDoEOwQ8BD0EPgQ/BEAEQQRCBEMERARFBEYERwRIBEkESgRLBEwETQROBE8EUARRBFIEUwRUBFUEVgRXBFgEWQRaBFsEXARdBF4EXwRgBGEEYgRjBGQEZQRmBGcEaARpBGoEawRsBG0EbgRvBHAEcQRyBHMEdAR1BHYEdwR4BHkEegR7BHwEfQR+BH8EgASBBIIEgwSEBIUEhgSHBIgEiQSKBIsEjASNBI4EjwSQBJEEkgSTBJQElQSWBJcEmASZBJoEmwScBJ0EngSfBKAEoQSiBKMEpASlBKYEpwSoBKkEqgSrBKwErQSuBK8EsASxBLIEswS0BLUEtgS3BLgEuQS6BLsEvAS9BL4EvwTABMEEwgTDBMQExQTGBMcEyATJBMoEywTMBM0EzgTPBNAE0QTSBNME1ATVBNYE1wTYBNkE2gTbBNwE3QTeBN8E4AThBOIE4wTkBOUE5gTnBOgE6QTqBOsE7ATtBO4E7wTwBPEE8gTzBPQE9QT2BPcE+AT5BPoE+wT8BP0E/gT/BAAFAQUCBQMFBAUFBQYFBwUIBQkFCgULBQwFDQUOBQ8FEAURBRIFEwUUBRUFFgUXBRgFGQUaBRsFHAUdBR4FHwUgBSEFIgUjBSQFJQUmBScFKAUpBSoFKwUsBS0FLgUvBTAFMQUyBTMFNAU1BTYFNwU4BTkFOgU7BTwFPQU+BT8FQAVBBUIFQwVEBUUFRgVHBUgFSQVKBUsFTAVNBU4FTwVQBVEFUgVTBVQFVQVWBVcFWAVZBVoFWwVcBV0FXgVfBWAFYQViBWMFZAVlBWYFZwVoBWkFagVrBWwFbQVuBW8FcAVxBXIFcwV0BXUFdgV3BXgFeQV6BXsFfAV9BX4FfwWABYEFggWDBYQFhQWGBYcFiAWJBYoFiwWMBY0FjgWPBZAFkQWSBZMFlAWVBZYFlwWYBZkFmgWbBZwFnQWeBZ8FoAWhBaIFowWkBaUFpgWnBagFqQWqBasFrAWtBa4FrwWwBbEFsgWzBbQFtQW2BbcFuAW5BboFuwW8Bb0FvgW/BcAFwQXCBcMFxAXFBcYFxwXIBckFygXLBcwFzQXOBc8F0AXRBdIF0wXUBdUF1gXXBdgF2QXaBdsF3AXdBd4F3wXgBeEF4gXjBeQF5QXmBecF6AXpBeoF6wXsBe0F7gXvBfAF8QXyBfMF9AX1BfYF9wX4BfkF+gX7BfwF/QX+Bf8FAAYBBgIGAwYEBgUGBgYHBggGCQYKBgsGDAYNBg4GDwYQBhEGEgYTBhQGFQYWBhcGGAYZBhoGGwYcBh0GHgYfBiAGIQYiBiMGJAYlBiYGJwYoBikGKgYrBiwGLQYuBi8GMAYxBjIGMwY0BjUGNgY3BjgGOQY6BjsGPAY9Bj4GPwZABkEGQgZDBkQGRQZGBkcGSAZJBkoGSwZMBk0GTgZPBlAGUQZSBlMGVAZVBlYGVwZYBlkGWgZbBlwGXQZeBl8GYAZhBmIGYwZkBmUGZgZnBmgGaQZqBmsGbAZtBm4GbwZwBnEGcgZzBnQGdQZ2BncGeAZ5BnoGewZ8Bn0GfgZ/BoAGgQaCBoMGhAaFBoYGhwaIBokGigaLBowGjQaOBo8GkAaRBpIGkwaUBpUGlgaXBpgGmQaaBpsGnAadBp4GnwagBqEGogajBqQGpQamBqcGqAapBqoGqwasBq0GrgavBrAGsQayBrMGtAa1BrYGtwa4BrkGuga7BrwGvQa+Br8GwAbBBsIGwwbEBsUGxgbHBsgGyQbKBssGzAbNBs4GzwbQBtEG0gbTBtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wYABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQceBx8HIAchByIHIwckByUHJgcnBygHKQcqBysHLActBy4HLwcwBzEHMgczBzQHNQc2BzcHOAc5BzoHOwc8Bz0HPgc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvB3AHcQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAeBB4IHgweEB4UHhgeHB4gHiQeKB4sHjAeNB44HjweQB5EHkgeTB5QHlQeWB5cHmAeZB5oHmwecB50HngefB6AHoQeiB6MHpAelB6YHpweoB6kHqgerB6wHrQeuB68HsAexB7IHswe0B7UHtge3B7gHuQe6B7sHvAe9B74HvwfAB8EHwgfDB8QHxQfGB8cHyAfJB8oHywfMB80HzgfPB9AH0QfSB9MH1AfVB9YH1wfYB9kH2gfbB9wH3QfeB98H4AfhB+IH4wfkB+UH5gfnB+gH6QfqB+sH7AftB+4H7wfwB/EH8gfzB/QH9Qf2B/cH+Af5B/oH+wf8B/0H/gf/BwAIAQgCCAMIBAgFCAYIBwgICAkICggLCAwIDQgOCA8IEAgRCBIIEwgUCBUIFggXCBgIGQgaCBsIHAgdCB4IHwggCCEIIggjCCQIJQgmCCcIKAgpCCoIKwgsCC0ILggvCDAIMQgyCDMINAg1CDYINwg4CDkIOgg7CDwIPQg+CD8IQAhBCEIIQwhECEUIRghHCEgISQhKCEsITAhNCE4ITwhQCFEIUghTCFQIVQhWCFcIWAhZCFoIWwhcCF0IXghfCGAIYQhiCGMIZAhlCGYIZwhoCGkIaghrCGwIbQhuCG8IcAhxCHIIcwh0CHUIdgh3CHgIeQh6CHsIfAh9CH4IfwiACIEIggiDCIQIhQiGCIcIiAiJCIoIiwiMCI0IjgiPCJAIkQiSCJMIlAiVCJYIlwiYCJkImgibCJwInQieCJ8IoAihCKIIowikCKUIpginCKgIqQiqCKsIrAitCK4IrwiwCLEIsgizCLQItQi2CLcIuAi5CLoIuwi8CL0Ivgi/CMAIwQjCCMMIxAjFCMYIxwjICMkIygjLCMwIzQjOCM8I0AjRCNII0wjUCNUI1gjXCNgI2QjaCNsI3AjdCN4I3wjgCOEI4gjjCOQI5QjmCOcI6AjpCOoI6wjsCO0I7gjvCPAI8QjyCPMI9Aj1CPYI9wj4CPkI+gj7CPwI/Qj+CP8IAAkBCQIJAwkECQUJBgkHCQgJCQkKCQsJDAkNCb4JvwnuCe8J8AnxCfIJ8wn0CfUJ9gn3CfgJ+Qn6CfsJ/An9Cf4J/wkACgEKAgoDCgQKBQoGCgcKCAoJCgoKCwoMCg0KDgoPChAKEQoSChMKFAoVChYKFwoYChkKGgobChwKHQoeCh8KJgonCigKKQouCi8KMAoxCjIKMwo6CjsKPAo9CkIKQwpECkUKRgpHCk4KTwpQClEKVgpXClgKWQpaClsKYgpjCmQKZQpyCnMKdAp1CnYKdwp4CnkKegp7Co4KjwqQCpEKkgqTCpQKlQqWCpcKmAqZCpoKmwqcCp0KngqfCqAKoQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCuYK5wroCukK6grrCuwK7QruCu8K8ArxCvIK8wr0CvUK9gr3CvgK+Qr6CvsK/Ar9Cv4K/woACwELAgsDCwQLBQsGCwcLCAsJCwoLCwsMCw0LDgsPCxALEQsSCxMLFAsVCxYLFwsYCxkLGgsbCxwLHQseCx8LIAshCyILIwskCyULJgsnCygLKQsqCysLLAstCy4LLwswCzELMgszCzQLNQs2CzcLOAs5CzoLOws8Cz0LPgs/C0ALQQtCC0MLRAtFC0YLRwtIC0kLSgtLC0wLTQtOC08LUAtRC1ILUwtUC1ULVgtXC1gLWQtaC1sLXAtdC14LXwtgC2ELYgtjC2QLZQtmC2cLaAtpC2oLawtsC20LbgtvC3ALcQtyC3MLdAt1C3YLdwt4C3kLegt7C3wLfQt+C38LgAuBC4ILgwuEC4ULhguHC4gLiQuKC4sLjAuNC44LjwuQC5ELkguTC5QLlQuWC5cLmAuZC5oLmwucC50LngufC6ALoQuiC6MLpAulC6YLpwuoC6kLqgurC6wLrQuuC68LsAuxC7ILswu0C7ULtgu3C7gLuQu6C7sLvAu9C74LvwvAC8ELwgvDC8QLxQvGC8cLyAvJC8oLywvMC80LzgvPC9AL0QvSC9ML1AvVC9YL1wvYC9kL2gvbC9wL3QveC98L4AvhC+IL4wvkC+UL5gvnC+gL6QvqC+sL7AvtC+4L7wvwC/EL8gvzC/QL9Qv2C/cL+Av5C/oL+wv8C/0L/gv/CwAMAQwCDAMMBAwFDAYMBwwIDAkMCgwLDAwMDQwODA8MEAwRDBIMEwwUDBUMFgwXDBgMGQwaDBsMHAwdDB4MHwwgDCEMIgwjDCQMJQwmDCcMKAwpDCoMKwwsDC0MLgwvDDAMMQwyDDMMNAw1DDYMNww4DDkMOgw7DDwMPQw+DD8MQAxBDEIMQwxEDEUMRgxHDEgMSQxKDEsMTAxNDE4MTwxQDFEMUgxTDFQMVQxWDFcMWAxZDFoMWwxcDF0MXgxfDGAMYQxiDGMMZAxlDGYMZwxoDGkMagxrDGwMbQxuDG8McAxxDHIMcwx0DHUMdgx3DHgMeQx6DHsMfAx9DH4MfwyADIEMggyDDIQMhQyGDIcMiAyJDIoMiwyMDI0MjgyPDJAMkQySDJMMlAyVDJYMlwyYDJkMmgybDJwMnQyeDJ8MoAyhDKIMowykDKUMpgynDKgMqQyqDKsMrAytDK4MrwywDLEMsgyzDLQMtQy2DLcMuAy5DLoMuwy8DL0Mvgy/DMAMwQzCDMMMxAzFDMYMxwzIDMkMygzLDMwMzQzODM8M0AzRDNIM0wzUDNUM1gzXDNgM2QzaDNsM3AzdDN4M3wzgDOEM4gzjDOQM5QzmDOcM6AzpDOoM6wzsDO0M7gzvDPAM8QzyDPMM9Az1DPYM9wz4DPkM+gz7DPwM/Qz+DP8MAA0BDQINAw0EDQUNBg0HDQgNCQ0KDQsNDA0NDQ4NDw0SDRMNFA0VDRYNFw0YDRkNGg0bDRwNHQ0eDR8NIA0hDSINIw0kDSUNJg0nDSgNKQ0qDSsNLA0tDS4NLw0wDTENMg0zDTQNNQ02DTcNOA05DToNOw08DT0NPg0/DUANQQ1CDUMNRA1FDUYNRw1IDUkNSg1LDUwNTQ1ODU8NUA1RDVINUw1UDVUNVg1XDVgNWQ1aDVsNXA1dDV4NXw1gDWENYg1jDWQNZQ1mDWcNaA1pDWoNaw1sDW0Nbg1vDXANcQ1yDXMNdA11DXYNdw14DXkNeg17DXwNfQ1+DX8NgA2BDYINgw2EDYUNhg2HDYgNiQ2KDYsNjA2NDY4Njw2QDZENkg2TDZQNlQ2WDZcNmA2ZDZoNmw2cDZ0Nng2fDaANoQ2iDaMNpA2lDaYNpw2oDakNqg2rDawNrQ2uDa8NsA2xDbINsw20DbUNtg23DbgNuQ26DbsNvA29Db4Nvw3ADcENwg3DDcQNxQ3GDccNyA3JDcoNyw3MDc0Nzg3PDdAN0Q3SDdMN1A3VDdYN1w3YDdkN2g3bDdwN3Q3eDd8N4A3hDeIN4w3kDeUN5g3nDegN6Q3q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G8UbxhvHG8gbyRvKG8sbzBvNG84bzxvQG9Eb0hvTG9Qb1RvWG9cb2BvZG9ob2xvcG90b3hvfG+Ab4RviG+Mb5BvlG+Yb5xvoG+kb6hvrG+wb7RvuG+8b8BvxG/Ib8xv0G/Ub9hv3G/gb+Rv6G/sb/Bv9G/4b/xsAHAEcAhwDHAQcBRwGHAccCBwJHAocCxwMHA0cDhwPHBAcERwSHBMcFBwVHBYcFxwYHBkcGhwbHBwcHRweHB8cIBwhHCIcIxwkHCUcJhwnHCgcKRwqHCscLBwtHC4cLxwwHDEcMhwzHDQcNRw2HDccOBw5HDocOxw8HD0cPhw/HEAcQRxCHEMcRBxFHEYcRxxIHEkcShxLHEwcTRxOHE8cUBxRHFIcUxxUHFUcVhxXHFgcWRxaHFscXBxdHF4cXxxgHGEcYhxjHGQcZRxmHGccaBxpHGocaxxsHG0cbhxvHHAccRxyHHMcdBx1HHYcdxx4HHkcehx7HHwcfRx+HH8cgByBHIIcgxyEHIUchhyHHIgciRyKHIscjByNHI4cjxyQHJEckhyTHJQclRyWHJccmByZHJocmxycHJ0cnhyfHKAcoRyiHKMcpBylHKYcpxyoHKkcqhyrHKwcrRyuHK8csByxHLIcsxy0HLUcthy3HLgcuRy6HLscvBy9HL4cvxzAHMEcwhzDHMQcxRzGHMccyBzJHMocyxzMHM0czhzPHNAc0RzSHNMc1BzVHNYc1xzYHNkc2hzbHNwc3RzeHN8c4BzhHOIc4xzkHOUc5hznHOgc6RzqHOsc7BztHO4c7xzwHPEc8hzzHPQc9Rz2HPcc+Bz5HPoc+xz8HP0c/hz/HAAdAR0CHQMdBB0FHQYdBx0IHQkdCh0LHQwdDR0OHQ8dEB0RHRIdEx0UHRUdFh0XHRgdGR0aHRsdHB0dHR4dHx0gHSEdIh0jHSQdJR0mHScdKB0pHSodKx0sHS0dLh0vHTAdMR0yHTMdNB01HTYdNx04HTkdOh07HTwdPR0+HT8dQB1BHUIdQx1EHUUdRh1HHUgdSR1KHUsdTB1NHU4dTx1QHVEdUh1THVQdVR1WHVcdWB1ZHVodWx1cHV0dXh1fHWAdYR1iHWMdZB1lHWYdZx1oHWkdah1rHWwdbR1uHW8dcB1xHXIdcx10HXUddh13HXgdeR16HXsdfB19HX4dfx2AHYEdgh2DHYQdhR2G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AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA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JgAbAAcAHAAnACYABwAdACcAHAAHAB0AKAAnAAcAHgAoAB0ABwAeACkAKAAHAB8AKQAeAAcAHwAqACkABwAgACoAHwAHACAAKwAqAAcAIgAsACEABwAiAC0ALAAHACMALQAiAAcAIwAuAC0ABwAkAC4AIwAHACQALwAuAAcAJQAvACQABwAlADAALwAHACYAMAAlAAcAJgAxADAABwAnADEAJgAHACcAMgAxAAcAKAAyACcABwAoADMAMgAHACkAMwAoAAcAKQA0ADMABwAqADQAKQAHACoANQA0AAcAKwA1ACoABwArADYANQAHAC0ANwAsAAcALQA4ADcABwAuADgALQAHAC4AOQA4AAcALwA5AC4ABwAvADoAOQAHADAAOgAvAAcAMAA7ADoABwAxADsAMAAHADEAPAA7AAcAMgA8ADEABwAyAD0APAAHADMAPQAyAAcAMwA+AD0ABwA0AD4AMwAHADQAPwA+AAcANQA/ADQABwA1AEAAPwAHADYAQAA1AAcANgBBAEAABwBCAAIAAQAHAEIAQwACAAcARABDAEIABwBEAEUAQwAHAEYARQBHAAcARgBDAEUABwACAEYAIAAHAAIAQwBGAAcASABGAEcABwBIAEkARgAHAEkAIABGAAcASQArACAABwBKAEgASwAHAEoASQBIAAcAKwBKADYABwArAEkASgAHAEwASwBNAAcATABKAEsABwA2AEwAQQAHADYASgBMAAcATgBPAFAABwBOAFEATwAHAFEAUgBPAAcAUQBTAFIABwBTAFQAUgAHAFMAVQBUAAcAVQBWAFQABwBVAFcAVgAHAFcAWABWAAcAVwBZAFgABwBZAFoAWAAHAFkAWwBaAAcAWwBcAFoABwBbAF0AXAAHAF0AXgBcAAcAXQBfAF4ABwBfAGAAXgAHAF8AYQBgAAcAYQBiAGAABwBhAGMAYgAHAGQAYABiAAcAZABlAGAABwBlAF4AYAAHAGUAZgBeAAcAZgBcAF4ABwBmAGcAXAAHAGcAWgBcAAcAZwBoAFoABwBoAFgAWgAHAGgAaQBYAAcAaQBWAFgABwBpAGoAVgAHAGoAVABWAAcAagBrAFQABwBrAFIAVAAHAGsAbABSAAcAbABPAFIABwBsAG0ATwAHAG0AUABPAAcAbQBuAFAABwBvAGUAZAAHAG8AcABlAAcAcABmAGUABwBwAHEAZgAHAHEAZwBmAAcAcQByAGcABwByAGgAZwAHAHIAcwBoAAcAcwBpAGgABwBzAHQAaQAHAHQAagBpAAcAdAB1AGoABwB1AGsAagAHAHUAdgBrAAcAdgBsAGsABwB2AHcAbAAHAHcAbQBsAAcAdwB4AG0ABwB4AG4AbQAHAHgAeQBuAAcAegBwAG8ABwB6AHsAcAAHAHsAcQBwAAcAewB8AHEABwB8AHIAcQAHAHwAfQByAAcAfQBzAHIABwB9AH4AcwAHAH4AdABzAAcAfgB/AHQABwB/AHUAdAAHAH8AgAB1AAcAgAB2AHUABwCAAIEAdgAHAIEAdwB2AAcAgQCCAHcABwCCAHgAdwAHAIIAgwB4AAcAgwB5AHgABwCDAIQAeQAHAIUAewB6AAcAhQCGAHsABwCGAHwAewAHAIYAhwB8AAcAhwB9AHwABwCHAIgAfQAHAIgAfgB9AAcAiACJAH4ABwCJAH8AfgAHAIkAigB/AAcAigCAAH8ABwCKAIsAgAAHAIsAgQCAAAcAiwCMAIEABwCMAIIAgQAHAIwAjQCCAAcAjQCDAIIABwCNAI4AgwAHAI4AhACDAAcAjgCPAIQABwBQAJAATgAHAFAAkQCQAAcAkQCSAJAABwCRAJMAkgAHAJMAlACVAAcAkwCRAJQABwCUAFAAbgAHAJQAkQBQAAcAlACWAJUABwCUAJcAlgAHAG4AlwCUAAcAbgB5AJcABwCWAJgAmQAHAJYAlwCYAAcAmAB5AIQABwCYAJcAeQAHAJkAmgCbAAcAmQCYAJoABwCaAIQAjwAHAJoAmACEAAcAnACdAJ4ABwCcAJ8AnQAHAKAAoQCiAAcAoACjAKEABwCjAKQAoQAHAKMApQCkAAcApQCmAKQABwClAKcApgAHAKcAqACmAAcApwCpAKgABwCqAKsArAAHAKoArQCrAAcArQCuAKsABwCtAK8ArgAHALAAnwCcAAcAsACxAJ8ABwCyAKMAoAAHALIAswCjAAcAswClAKMABwCzALQApQAHALQApwClAAcAtAC1AKcABwC1AKkApwAHALUAtgCpAAcAtwCtAKoABwC3ALgArQAHALgArwCtAAcAuAC5AK8ABwC6ALAAnAAHALoAuwCwAAcAvAC7ALoABwC8AL0AuwAHAJwAvAC6AAcAnACeALwABwC4AL4AuQAHALgAvwC+AAcAtwC/ALgABwC3AMAAvwAHALYAwQDCAAcAtgC1AMEABwC1AMMAwQAHALUAtADDAAcAtADEAMMABwC0ALMAxAAHALMAxQDEAAcAswCyAMUABwCxAMYAxwAHALEAsADGAAcAsADIAMYABwCwALsAyAAHALsAyQDIAAcAuwC9AMkABwDKALIAywAHAMoAxQCyAAcAywCgAMwABwDLALIAoAAHAMwAogDNAAcAzACgAKIABwDLAM4AygAHAMsAzwDOAAcAzwDHAM4ABwDPALEAxwAHAMwAzwDLAAcAzADQAM8ABwDQALEAzwAHANAAnwCxAAcAzQDQAMwABwDNANEA0AAHANEAnwDQAAcA0QCdAJ8ABwDSANMA1AAHANIA1QDTAAcA1ADWANcABwDUANMA1gAHANgA1QDSAAcA2ADZANUABwDaANsA3AAHANoA3QDbAAcA3gDdANoABwDeAN8A3QAHANcA3wDeAAcA1wDWAN8ABwDgANkA2AAHAOAA4QDZAAcA4gDhAOAABwDiAOMA4QAHAOQA4wDiAAcA5ADlAOMABwDmAOUA5AAHAOYA5wDlAAcA6ADpAOoABwDoAOsA6QAHAOsA7ADtAAcA6wDoAOwABwDqAO4A7wAHAOoA6QDuAAcA7wDnAOYABwDvAO4A5wAHALcA8ADAAAcAtwDxAPAABwDxAMIA8AAHAPEAtgDCAAcAqgDxALcABwCqAPIA8QAHAPIAtgDxAAcA8gCpALYABwCsAPIAqgAHAKwA8wDyAAcA8wCpAPIABwDzAKgAqQAHAPQA4AD1AAcA9ADiAOAABwD2AOIA9AAHAPYA5ADiAAcA9wDkAPYABwD3AOYA5AAHAPgA5gD3AAcA+ADvAOYABwD5AO8A+AAHAPkA6gDvAAcA+gDqAPkABwD6AOgA6gAHAPsA6AD6AAcA+wDsAOgABwD1ANgA/AAHAPUA4ADYAAcA/ADSAP0ABwD8ANgA0gAHAP0A1AD+AAcA/QDSANQABwD+ANcA/wAHAP4A1ADXAAcA/wDeAAABBwD/ANcA3gAHAAAB2gABAQcAAAHeANoABwABAdwAAgEHAAEB2gDcAAcAAwG5AL4ABwADAQQBuQAHAAUB7QDsAAcABQEGAe0ABwAHAewA+wAHAAcBBQHsAAcACAH7APoABwAIAQcB+wAHAAkB+gD5AAcACQEIAfoABwAKAfkA+AAHAAoBCQH5AAcACwH4APcABwALAQoB+AAHAAwB9wD2AAcADAELAfcABwANAfYA9AAHAA0BDAH2AAcADgH0APUABwAOAQ0B9AAHAA8B9QD8AAcADwEOAfUABwAQAfwA/QAHABABDwH8AAcAEQH9AP4ABwARARAB/QAHABIB/gD/AAcAEgERAf4ABwATAf8AAAEHABMBEgH/AAcAFAEAAQEBBwAUARMBAAEHABUBAQECAQcAFQEUAQEBBwAWAQIB3AAHABYBFQECAQcAFwHcANsABwAXARYB3AAHABgByQC9AAcAGAEZAckABwAaAb0AvAAHABoBGAG9AAcAGwG8AJ4ABwAbARoBvAAHABwBngCdAAcAHAEbAZ4ABwAdAZ0A0QAHAB0BHAGdAAcAHgHRAM0ABwAeAR0B0QAHAB8BzQCiAAcAHwEeAc0ABwAgAaIAoQAHACABHwGiAAcAIQGhAKQABwAhASABoQAHACIBpACmAAcAIgEhAaQABwAjAaYAqAAHACMBIgGmAAcAJAGoAPMABwAkASMBqAAHACUB8wCsAAcAJQEkAfMABwAmAawAqwAHACYBJQGsAAcAJwGrAK4ABwAnASYBqwAHACgBrgCvAAcAKAEnAa4ABwAEAa8AuQAHAAQBKAGvAAcAKQEEAQMBBwApASoBBAEHACsBBgEFAQcAKwEsAQYBBwAqASgBBAEHACoBLQEoAQcALgEFAQcBBwAuASsBBQEHAC8BBwEIAQcALwEuAQcBBwAwAQgBCQEHADABLwEIAQcAMQEJAQoBBwAxATABCQEHADIBCgELAQcAMgExAQoBBwAzAQsBDAEHADMBMgELAQcANAEMAQ0BBwA0ATMBDAEHADUBDQEOAQcANQE0AQ0BBwA2AQ4BDwEHADYBNQEOAQcANwEPARABBwA3ATYBDwEHADgBEAERAQcAOAE3ARABBwA5AREBEgEHADkBOAERAQcAOgESARMBBwA6ATkBEgEHADsBEwEUAQcAOwE6ARMBBwA8ARQBFQEHADwBOwEUAQcAPQEVARYBBwA9ATwBFQEHAD4BFgEXAQcAPgE9ARYBBwA/ARkBGAEHAD8BQAEZAQcAQQEYARoBBwBBAT8BGAEHAEIBGgEbAQcAQgFBARoBBwBDARsBHAEHAEMBQgEbAQcARAEcAR0BBwBEAUMBHAEHAEUBHQEeAQcARQFEAR0BBwBGAR4BHwEHAEYBRQEeAQcARwEfASABBwBHAUYBHwEHAEgBIAEhAQcASAFHASABBwBJASEBIgEHAEkBSAEhAQcASgEiASMBBwBKAUkBIgEHAEsBIwEkAQcASwFKASMBBwBMASQBJQEHAEwBSwEkAQcATQElASYBBwBNAUwBJQEHAE4BJgEnAQcATgFNASYBBwAtAScBKAEHAC0BTgEnAQcATwFQAVEBBwBPAVIBUAEHAFMBVAFVAQcAUwFWAVQBBwBXAVUBWAEHAFcBUwFVAQcAWQFYAVoBBwBZAVcBWAEHAFsBWgFcAQcAWwFZAVoBBwBdAVABXgEHAF0BUQFQAQcAXwFTAWABBwBfAVYBUwEHAGABVwFhAQcAYAFTAVcBBwBhAVkBYgEHAGEBVwFZAQcAYgFbAWMBBwBiAVkBWwEHAGQBUgFlAQcAZAFQAVIBBwBkAVQBVgEHAGQBZQFUAQcAZgFWAV8BBwBmAWQBVgEHAF4BZAFmAQcAXgFQAWQBBwBnAWgBaQEHAGcBagFoAQcAawFpAWwBBwBrAWcBaQEHAG0BbgFvAQcAbQFwAW4BBwBxAWcBcgEHAHEBagFnAQcAcgFrAXMBBwByAWcBawEHAHQBdQF2AQcAdAF3AXUBBwBzAXgBeQEHAHMBawF4AQcAeQF3AXQBBwB5AXgBdwEHAGwBeAFrAQcAbAF6AXgBBwB7AXABfAEHAHsBbgFwAQcAfQF+AX8BBwB9AYABfgEHAIEBgAF9AQcAgQGCAYABBwCDAYEBhAEHAIMBggGBAQcAdQGEAYUBBwB1AYMBhAEHAHYBhgGHAQcAdgF1AYYBBwCHAVIBTwEHAIcBhgFSAQcAhQGGAXUBBwCFAYgBhgEHAIgBUgGGAQcAiAFlAVIBBwCEAYgBhQEHAIQBiQGIAQcAiQFlAYgBBwCJAVQBZQEHAIEBiQGEAQcAgQGKAYkBBwCKAVQBiQEHAIoBVQFUAQcAfQGKAYEBBwB9AYsBigEHAIsBVQGKAQcAiwFYAVUBBwB/AYsBfQEHAH8BjAGLAQcAjAFYAYsBBwCMAVoBWAEHAI0BjgGPAQcAjQGQAY4BBwBaAZABjQEHAFoBjAGQAQcAWgGRAVwBBwBaAY0BkQEHAJIBXAGTAQcAkgFbAVwBBwCRAY8BlAEHAJEBjQGPAQcAkQGTAVwBBwCRAZUBkwEHAIwBjgGQAQcAjAGWAY4BBwB+AYwBfwEHAH4BlgGMAQcAlwGTAZgBBwCXAZIBkwEHAJIBYwFbAQcAkgGZAWMBBwCaAZMBlQEHAJoBmAGTAQcAmwFjAZkBBwCbAZwBYwEHAJwBYgFjAQcAnAGdAWIBBwCdAWEBYgEHAJ0BngFhAQcAngFgAWEBBwCeAZ8BYAEHAJ8BXwFgAQcAnwGgAV8BBwCgAWYBXwEHAKABoQFmAQcAoQFeAWYBBwChAaIBXgEHAKIBXQFeAQcAogGjAV0BBwCkAU8BUQEHAKQBpQFPAQcApQGHAU8BBwClAaYBhwEHAKYBdgGHAQcApgGnAXYBBwCnAXQBdgEHAKcBqAF0AQcAqAF5AXQBBwCoAakBeQEHAKkBcwF5AQcAqQGqAXMBBwCqAXIBcwEHAKoBqwFyAQcAqwFxAXIBBwCrAawBcQEHAJIBmwGZAQcAkgGXAZsBBwCtAa4BrwEHAK0BsAGuAQcAsQGyAYMBBwCxAbMBsgEHALMBtAGyAQcAswG1AbQBBwB6AbMBsQEHAHoBtgGzAQcAtgG1AbMBBwC2AbcBtQEHAGwBtgF6AQcAbAG4AbYBBwC4AbcBtgEHALgBuQG3AQcAaQG4AWwBBwBpAboBuAEHALoBuQG4AQcAugG7AbkBBwBoAboBaQEHAGgBvAG6AQcAvAG7AboBBwC8Ab0BuwEHAIMBvgGCAQcAgwGyAb4BBwCyAb8BvgEHALIBtAG/AQcAggHAAYABBwCCAb4BwAEHAL4BwQHAAQcAvgG/AcEBBwCAAcIBfgEHAIABwAHCAQcAwAHDAcIBBwDAAcEBwwEHAH4BxAGWAQcAfgHCAcQBBwDCAcUBxAEHAMIBwwHFAQcAlgHGAY4BBwCWAcQBxgEHAMQBxwHGAQcAxAHFAccBBwCOAcgBjwEHAI4BxgHIAQcAxgHJAcgBBwDGAccByQEHAI8BygGUAQcAjwHIAcoBBwDIAcsBygEHAMgByQHLAQcAlAHMAc0BBwCUAcoBzAEHAMoBzgHMAQcAygHLAc4BBwDNAc8B0AEHAM0BzAHPAQcAzAHRAc8BBwDMAc4B0QEHANIBvQHTAQcA0gG7Ab0BBwDSAbkBuwEHANIB1AG5AQcA1AG3AbkBBwDUAdUBtwEHANUBtQG3AQcA1QHWAbUBBwDWAbQBtQEHANYB1wG0AQcA2AHFAcMBBwDYAdkBxQEHANkBxwHFAQcA2QHaAccBBwDaAckBxwEHANoB2wHJAQcA2wHLAckBBwDbAdwBywEHANwBzgHLAQcA3AHdAc4BBwDdAdEBzgEHAN0B3gHRAQcA1wG/AbQBBwDXAd8BvwEHAN8BwQG/AQcA3wHgAcEBBwDgAcMBwQEHAOAB2AHDAQcA2gHhAdsBBwDaAeIB4QEHANkB4gHaAQcA2QHjAeIBBwDYAeMB2QEHANgB5AHjAQcA4AHkAdgBBwDgAeUB5AEHAN8B5QHgAQcA3wHmAeUBBwDXAeYB3wEHANcB5wHmAQcA1gHnAdcBBwDWAegB5wEHANUB6AHWAQcA1QHpAegBBwDUAekB1QEHANQB6gHpAQcA0gHqAdQBBwDSAesB6gEHANMB6wHSAQcA0wHsAesBBwDbAe0B3AEHANsB4QHtAQcA3AHuAd0BBwDcAe0B7gEHAN0B7wHeAQcA3QHuAe8BBwDwAesB7AEHAPAB8QHrAQcA8QHqAesBBwDxAfIB6gEHAPMB7AHTAQcA8wHwAewBBwD0AdMBvQEHAPQB8wHTAQcA9QG9AbwBBwD1AfQBvQEHAPYBvAFoAQcA9gH1AbwBBwD3AWgBagEHAPcB9gFoAQcA+AFqAXEBBwD4AfcBagEHAPkBcQGsAQcA+QH4AXEBBwD6AawBqwEHAPoB+QGsAQcA+wGrAaoBBwD7AfoBqwEHAPwBqgGpAQcA/AH7AaoBBwD9AakBqAEHAP0B/AGpAQcA/gGoAacBBwD+Af0BqAEHAP8BpwGmAQcA/wH+AacBBwAAAqYBpQEHAAAC/wGmAQcAAQKlAaQBBwABAgACpQEHAAICowGiAQcAAgIDAqMBBwAEAqIBoQEHAAQCAgKiAQcABQKhAaABBwAFAgQCoQEHAAYCoAGfAQcABgIFAqABBwAHAp8BngEHAAcCBgKfAQcACAKeAZ0BBwAIAgcCngEHAAkCnQGcAQcACQIIAp0BBwAKApwBmwEHAAoCCQKcAQcACwKbAZcBBwALAgoCmwEHAAwClwGYAQcADAILApcBBwANApoB0AEHAA0CDgKaAQcADwLQAc8BBwAPAg0C0AEHABACzwHRAQcAEAIPAs8BBwARAtEB3gEHABECEALRAQcAEgLeAe8BBwASAhEC3gEHABMC7wHuAQcAEwISAu8BBwAUAu4B7QEHABQCEwLuAQcAFQLtAeEBBwAVAhQC7QEHABYC4QHiAQcAFgIVAuEBBwAXAuIB4wEHABcCFgLiAQcAGALjAeQBBwAYAhcC4wEHABkC5AHlAQcAGQIYAuQBBwAaAuUB5gEHABoCGQLlAQcAGwLmAecBBwAbAhoC5gEHABwC5wHoAQcAHAIbAucBBwAdAugB6QEHAB0CHALoAQcA8gHpAeoBBwDyAR0C6QEHAB4C8QHwAQcAHgIfAvEBBwAfAvIB8QEHAB8CIALyAQcAIQLwAfMBBwAhAh4C8AEHACACHQLyAQcAIAIiAh0CBwAjAvMB9AEHACMCIQLzAQcAJAL0AfUBBwAkAiMC9AEHACUC9QH2AQcAJQIkAvUBBwAmAvYB9wEHACYCJQL2AQcAJwL3AfgBBwAnAiYC9wEHACgC+AH5AQcAKAInAvgBBwApAvkB+gEHACkCKAL5AQcAKgL6AfsBBwAqAikC+gEHACsC+wH8AQcAKwIqAvsBBwAsAvwB/QEHACwCKwL8AQcALQL9Af4BBwAtAiwC/QEHAC4C/gH/AQcALgItAv4BBwAvAv8BAAIHAC8CLgL/AQcAMAIAAgECBwAwAi8CAAIHADECAwICAgcAMQIyAgMCBwAzAgICBAIHADMCMQICAgcANAIEAgUCBwA0AjMCBAIHADUCBQIGAgcANQI0AgUCBwA2AgYCBwIHADYCNQIGAgcANwIHAggCBwA3AjYCBwIHADgCCAIJAgcAOAI3AggCBwA5AgkCCgIHADkCOAIJAgcAOgIKAgsCBwA6AjkCCgIHADsCCwIMAgcAOwI6AgsCBwA8Ag4CDQIHADwCPQIOAgcAPgINAg8CBwA+AjwCDQIHAD8CDwIQAgcAPwI+Ag8CBwBAAhACEQIHAEACPwIQAgcAQQIRAhICBwBBAkACEQIHAEICEgITAgcAQgJBAhICBwBDAhMCFAIHAEMCQgITAgcARAIUAhUCBwBEAkMCFAIHAEUCFQIWAgcARQJEAhUCBwBGAhYCFwIHAEYCRQIWAgcARwIXAhgCBwBHAkYCFwIHAEgCGAIZAgcASAJHAhgCBwBJAhkCGgIHAEkCSAIZAgcASgIaAhsCBwBKAkkCGgIHAEsCGwIcAgcASwJKAhsCBwAiAhwCHQIHACICSwIcAgcAwwBMAsEABwDDAE0CTAIHAMQATQLDAAcAxABOAk0CBwDFAE4CxAAHAMUATwJOAgcAygBPAsUABwDKAFACTwIHAM4AUALKAAcAzgBRAlACBwDHAFECzgAHAMcAUgJRAgcAxgBSAscABwDGAFMCUgIHAMgAUwLGAAcAyABUAlMCBwDJAFQCyAAHAMkAVQJUAgcAGQFVAskABwAZAVYCVQIHAEABVgIZAQcAQAFXAlYCBwDBAFgCwgAHAMEATAJYAgcAwgBZAvAABwDCAFgCWQIHAPAAWgLAAAcA8ABZAloCBwDAAFsCvwAHAMAAWgJbAgcAvwBcAr4ABwC/AFsCXAIHAL4AXQIDAQcAvgBcAl0CBwADAV4CKQEHAAMBXQJeAgcAXwJgAmECBwBfAmICYAIHAGMC5wBkAgcAYwLlAOcABwBNAmMCTAIHAE0CZQJjAgcAZQLlAGMCBwBlAuMA5QAHAE4CZQJNAgcATgJmAmUCBwBmAuMAZQIHAGYC4QDjAAcATwJmAk4CBwBPAmcCZgIHAGcC4QBmAgcAZwLZAOEABwBQAmcCTwIHAFACaAJnAgcAaALZAGcCBwBoAtUA2QAHAFECaAJQAgcAUQJpAmgCBwBpAtUAaAIHAGkC0wDVAAcAUgJpAlECBwBSAmoCaQIHAGoC0wBpAgcAagLWANMABwBTAmoCUgIHAFMCawJqAgcAawLWAGoCBwBrAt8A1gAHAFQCawJTAgcAVAJsAmsCBwBsAt8AawIHAGwC3QDfAAcAVQJsAlQCBwBVAm0CbAIHAG0C3QBsAgcAbQLbAN0ABwBWAm0CVQIHAFYCbgJtAgcAbgLbAG0CBwBuAhcB2wAHAFcCbgJWAgcAVwJvAm4CBwBvAhcBbgIHAG8CPgEXAQcAYQJwAnECBwBhAmACcAIHAGQC7gByAgcAZALnAO4ABwBZAnMCWgIHAFkCcgJzAgcAcgLpAHMCBwByAu4A6QAHAFoCdAJbAgcAWgJzAnQCBwBzAusAdAIHAHMC6QDrAAcAWwJ1AlwCBwBbAnQCdQIHAHQC7QB1AgcAdALrAO0ABwBcAnYCXQIHAFwCdQJ2AgcAdQIGAXYCBwB1Au0ABgEHAF0CdwJeAgcAXQJ2AncCBwB2AiwBdwIHAHYCBgEsAQcAYAJ4AnACBwBgAnkCeAIHAHkCcgJ4AgcAeQJkAnICBwBiAnkCYAIHAGICegJ5AgcAegJkAnkCBwB6AmMCZAIHAF8CegJiAgcAXwJ7AnoCBwB7AmMCegIHAHsCTAJjAgcAYQJ7Al8CBwBhAnwCewIHAHwCTAJ7AgcAfAJYAkwCBwBxAnwCYQIHAHECfQJ8AgcAfQJYAnwCBwB9AlkCWAIHAHACfQJxAgcAcAJ4An0CBwB4AlkCfQIHAHgCcgJZAgcAdwF+AnUBBwB3AX8CfgIHAH8CbQF+AgcAfwJwAW0BBwB4AX8CdwEHAHgBgAJ/AgcAgAJwAX8CBwCAAnwBcAEHAHoBgAJ4AQcAegGBAoACBwCBAnwBgAIHAIECewF8AQcAsQGBAnoBBwCxAYICgQIHAIICewGBAgcAggJuAXsBBwCDAYICsQEHAIMBgwKCAgcAgwJuAYICBwCDAm8BbgEHAHUBgwKDAQcAdQF+AoMCBwB+Am8BgwIHAH4CbQFvAQcAhAKFAoYCBwCEAocChQIHAIgCiQKKAgcAiAKLAokCBwCMAosCiAIHAIwCjQKLAgcAjgKNAowCBwCOAo8CjQIHAJACjwKOAgcAkAKRAo8CBwCSApMClAIHAJIClQKTAgcAlgKVApICBwCWApcClQIHAIcCmAKFAgcAhwKZApgCBwCLApoCiQIHAIsCmwKaAgcAjQKbAosCBwCNApwCmwIHAI8CnAKNAgcAjwKdApwCBwCRAp0CjwIHAJECngKdAgcAlQKfApMCBwCVAqACnwIHAJcCoAKVAgcAlwKhAqACBwCYAqIChQIHAJgCowKiAgcAowKkAqICBwCjAqUCpAIHAKQChQKiAgcApAKGAoUCBwCmAqACoQIHAKYCpwKgAgcApwKfAqACBwCnAqgCnwIHAKkCngKqAgcAqQKdAp4CBwCrAp0CqQIHAKsCnAKdAgcArAKcAqsCBwCsApsCnAIHAK0CmwKsAgcArQKaApsCBwCuApkCrwIHAK4CmAKZAgcAsAKYAq4CBwCwAqMCmAIHALECowKwAgcAsQKlAqMCBwCaArICswIHAJoCrQKyAgcAiQKzArQCBwCJApoCswIHAIoCtAK1AgcAigKJArQCBwC2ArMCsgIHALYCtwKzAgcArwK3ArYCBwCvApkCtwIHALcCtAKzAgcAtwK4ArQCBwCZArgCtwIHAJkChwK4AgcAuAK1ArQCBwC4ArkCtQIHAIcCuQK4AgcAhwKEArkCBwC6ArsCvAIHALoCvQK7AgcAvgK8Ar8CBwC+AroCvAIHAL0CwAK7AgcAvQLBAsACBwDCAsMCxAIHAMICxQLDAgcAxQLGAsMCBwDFAscCxgIHAMcCvwLGAgcAxwK+Ar8CBwDBAsgCwAIHAMECyQLIAgcAyQLKAsgCBwDJAssCygIHAMsCzALKAgcAywLNAswCBwDNAs4CzAIHAM0CzwLOAgcA0ALRAtICBwDQAtMC0QIHANQC0wLVAgcA1ALRAtMCBwDWAtIC1wIHANYC0ALSAgcAzwLXAs4CBwDPAtYC1wIHANgCnwKoAgcA2ALZAp8CBwCqAtkC2AIHAKoCngLZAgcA2QKTAp8CBwDZAtoCkwIHAJ4C2gLZAgcAngKRAtoCBwDaApQCkwIHANoC2wKUAgcAkQLbAtoCBwCRApAC2wIHAMgC3ALdAgcAyALKAtwCBwDKAt4C3AIHAMoCzALeAgcAzALfAt4CBwDMAs4C3wIHAM4C4ALfAgcAzgLXAuACBwDXAuEC4AIHANcC0gLhAgcA0gLiAuECBwDSAtEC4gIHANEC4wLiAgcA0QLUAuMCBwDAAt0C5AIHAMACyALdAgcAuwLkAuUCBwC7AsAC5AIHALwC5QLmAgcAvAK7AuUCBwC/AuYC5wIHAL8CvALmAgcAxgLnAugCBwDGAr8C5wIHAMMC6ALpAgcAwwLGAugCBwDEAukC6gIHAMQCwwLpAgcAoQLrAqYCBwChAuwC6wIHANUC7QLUAgcA1QLuAu0CBwDUAu8C4wIHANQC7QLvAgcA4wLwAuICBwDjAu8C8AIHAOIC8QLhAgcA4gLwAvECBwDhAvIC4AIHAOEC8QLyAgcA4ALzAt8CBwDgAvIC8wIHAN8C9ALeAgcA3wLzAvQCBwDeAvUC3AIHAN4C9AL1AgcA3AL2At0CBwDcAvUC9gIHAN0C9wLkAgcA3QL2AvcCBwDkAvgC5QIHAOQC9wL4AgcA5QL5AuYCBwDlAvgC+QIHAOYC+gLnAgcA5gL5AvoCBwDnAvsC6AIHAOcC+gL7AgcA6AL8AukCBwDoAvsC/AIHAOkC/QLqAgcA6QL8Av0CBwDqAv4CxAIHAOoC/QL+AgcAxAL/AsICBwDEAv4C/wIHALECAAOlAgcAsQIBAwADBwClAgIDpAIHAKUCAAMCAwcApAIDA4YCBwCkAgIDAwMHAIYCBAOEAgcAhgIDAwQDBwCEAgUDuQIHAIQCBAMFAwcAuQIGA7UCBwC5AgUDBgMHALUCBwOKAgcAtQIGAwcDBwCKAggDiAIHAIoCBwMIAwcAiAIJA4wCBwCIAggDCQMHAIwCCgOOAgcAjAIJAwoDBwCOAgsDkAIHAI4CCgMLAwcAkAIMA9sCBwCQAgsDDAMHANsCDQOUAgcA2wIMAw0DBwCUAg4DkgIHAJQCDQMOAwcAkgIPA5YCBwCSAg4DDwMHAJYCEAOXAgcAlgIPAxADBwCXAuwCoQIHAJcCEAPsAgcA7AIRA+sCBwDsAhIDEQMHAO4CEwPtAgcA7gIUAxMDBwAQAxID7AIHABADFQMSAwcA7QIWA+8CBwDtAhMDFgMHAO8CFwPwAgcA7wIWAxcDBwDwAhgD8QIHAPACFwMYAwcA8QIZA/ICBwDxAhgDGQMHAPICGgPzAgcA8gIZAxoDBwDzAhsD9AIHAPMCGgMbAwcA9AIcA/UCBwD0AhsDHAMHAPUCHQP2AgcA9QIcAx0DBwD2Ah4D9wIHAPYCHQMeAwcA9wIfA/gCBwD3Ah4DHwMHAPgCIAP5AgcA+AIfAyADBwD5AiED+gIHAPkCIAMhAwcA+gIiA/sCBwD6AiEDIgMHAPsCIwP8AgcA+wIiAyMDBwD8AiQD/QIHAPwCIwMkAwcA/QIlA/4CBwD9AiQDJQMHAP4CJgP/AgcA/gIlAyYDBwABAycDAAMHAAEDKAMnAwcAAAMpAwIDBwAAAycDKQMHAAIDKgMDAwcAAgMpAyoDBwADAysDBAMHAAMDKgMrAwcABAMsAwUDBwAEAysDLAMHAAUDLQMGAwcABQMsAy0DBwAGAy4DBwMHAAYDLQMuAwcABwMvAwgDBwAHAy4DLwMHAAgDMAMJAwcACAMvAzADBwAJAzEDCgMHAAkDMAMxAwcACgMyAwsDBwAKAzEDMgMHAAsDMwMMAwcACwMyAzMDBwAMAzQDDQMHAAwDMwM0AwcADQM1Aw4DBwANAzQDNQMHAA4DNgMPAwcADgM1AzYDBwAPAxUDEAMHAA8DNgMVAwcArgE3A68BBwCuATgDNwMHADgDOQM3AwcAOAM6AzkDBwA7AzwDPQMHADsDPgM8AwcArQE+AzkDBwCtATwDPgMHAD0DPwNAAwcAPQM8Az8DBwCvATwDrQEHAK8BPwM8AwcAPwNBA0ADBwA/A0IDQQMHADcDPwOvAQcANwNCAz8DBwBCAzsDQQMHAEIDPgM7AwcAOQNCAzcDBwA5Az4DQgMHAEMDRANFAwcAQwNGA0QDBwBHA0UDSAMHAEcDQwNFAwcARANJA0oDBwBEA0YDSQMHAEoDRwNIAwcASgNJA0cDBwBDA0sDRgMHAEMDTANLAwcATQNMA04DBwBNA0sDTAMHAE4DTwNQAwcATgNMA08DBwBGA1EDSQMHAEYDSwNRAwcAUgNLA00DBwBSA1EDSwMHAEkDTwNHAwcASQNRA08DBwBQA1EDUgMHAFADTwNRAwcAUwNUA1UDBwBTA1YDVAMHAFUDVwNYAwcAVQNUA1cDBwBZA1UDWAMHAFkDUwNVAwcAWgNTA1kDBwBaA1YDUwMHAFYDVwNUAwcAVgNaA1cDBwBbA1wDXQMHAFsDXgNcAwcAXgNfA1wDBwBeA2ADXwMHAF8DYQNiAwcAXwNgA2EDBwBiA1sDXQMHAGIDYQNbAwcAYwNkA2UDBwBjA2YDZAMHAGcDZQNoAwcAZwNjA2UDBwBpA2cDaAMHAGkDagNnAwcAZANqA2kDBwBkA2YDagMHAGsDXQNcAwcAawNsA10DBwBsA2UDZAMHAGwDawNlAwcAbQNcA18DBwBtA2sDXAMHAGsDaANlAwcAawNtA2gDBwBiA20DXwMHAGIDbgNtAwcAbQNpA2gDBwBtA24DaQMHAF0DbgNiAwcAXQNsA24DBwBuA2QDaQMHAG4DbANkAwcAWwNvA14DBwBbA3ADbwMHAF4DcQNgAwcAXgNvA3EDBwByA1sDYQMHAHIDcANbAwcAcQNhA2ADBwBxA3IDYQMHAHMDbwNwAwcAcwN0A28DBwB0A1gDVwMHAHQDcwNYAwcAdQNXA1oDBwB1A3QDVwMHAHYDcANyAwcAdgNzA3ADBwBzA1kDWAMHAHMDdgNZAwcAdQNyA3EDBwB1A3YDcgMHAHYDWgNZAwcAdgN1A1oDBwB3A0MDeAMHAHcDTANDAwcAeQNMA3cDBwB5A08DTAMHAEcDeQN6AwcARwNPA3kDBwBDA3oDeAMHAEMDRwN6AwcAcQN7A3wDBwBxA28DewMHAHUDfAN9AwcAdQNxA3wDBwB+A3UDfQMHAH4DdAN1AwcAewN0A34DBwB7A28DdAMHAH8DeAOAAwcAfwN3A3gDBwCBA3cDfwMHAIEDeQN3AwcAegOBA4IDBwB6A3kDgQMHAHgDggOAAwcAeAN6A4IDBwB8A4MDhAMHAHwDewODAwcAfQOEA4UDBwB9A3wDhAMHAIYDfQOFAwcAhgN+A30DBwCDA34DhgMHAIMDewN+AwcAOgOHA7ABBwA6A4gDhwMHALABiQOuAQcAsAGHA4kDBwCuAYoDOAMHAK4BiQOKAwcAOAOIAzoDBwA4A4oDiAMHAGMDiwNmAwcAYwOMA4sDBwBnA4wDYwMHAGcDjQOMAwcAagONA2cDBwBqA44DjQMHAGYDjgNqAwcAZgOLA44DBwCIA48DhwMHAIgDkAOPAwcAkQOQA5IDBwCRA48DkAMHAJMDjwORAwcAkwOUA48DBwCJA5UDigMHAIkDlAOVAwcAlgOUA5MDBwCWA5UDlAMHAIoDkAOIAwcAigOVA5ADBwCSA5UDlgMHAJIDkAOVAwcAlwOLA4wDBwCXA5gDiwMHAJkDlwOaAwcAmQOYA5cDBwCaA5sDnAMHAJoDlwObAwcAnQONA44DBwCdA5sDjQMHAJwDnQOeAwcAnAObA50DBwCYA44DiwMHAJgDnQOOAwcAngOYA5kDBwCeA50DmAMHAJQDnwOgAwcAlAOJA58DBwCPA6ADoQMHAI8DlAOgAwcAogOPA6EDBwCiA4cDjwMHAJ8DhwOiAwcAnwOJA4cDBwCjA40DpAMHAKMDjAONAwcAlwOjA6UDBwCXA4wDowMHAJsDpQOmAwcAmwOXA6UDBwCkA5sDpgMHAKQDjQObAwcAoAOnA6gDBwCgA58DpwMHAKEDqAOpAwcAoQOgA6gDBwCqA6EDqQMHAKoDogOhAwcApwOiA6oDBwCnA58DogMHAKsDpAOsAwcAqwOjA6QDBwClA6sDrQMHAKUDowOrAwcApgOtA64DBwCmA6UDrQMHAKwDpgOuAwcArAOkA6YDBwCvA7ADsQMHAK8DsgOwAwcAsQOzA7QDBwCxA7ADswMHALUDsQO0AwcAtQOvA7EDBwC2A68DtQMHALYDsgOvAwcAsgOzA7ADBwCyA7YDswMHALcDuAO5AwcAtwO6A7gDBwC6A7sDuAMHALoDvAO7AwcAuwO9A74DBwC7A7wDvQMHAL4DtwO5AwcAvgO9A7cDBwC/A8ADwQMHAL8DwgPAAwcAwwPBA8QDBwDDA78DwQMHAMUDwwPEAwcAxQPGA8MDBwDAA8YDxQMHAMADwgPGAwcAxwO5A7gDBwDHA8gDuQMHAMgDwQPAAwcAyAPHA8EDBwDJA7gDuwMHAMkDxwO4AwcAxwPEA8EDBwDHA8kDxAMHAL4DyQO7AwcAvgPKA8kDBwDJA8UDxAMHAMkDygPFAwcAuQPKA74DBwC5A8gDygMHAMoDwAPFAwcAygPIA8ADBwC3A8sDugMHALcDzAPLAwcAugPNA7wDBwC6A8sDzQMHAM4DtwO9AwcAzgPMA7cDBwDNA70DvAMHAM0DzgO9AwcAzwPLA8wDBwDPA9ADywMHANADtAOzAwcA0APPA7QDBwDRA7MDtgMHANED0AOzAwcA0gPMA84DBwDSA88DzAMHAM8DtQO0AwcAzwPSA7UDBwDRA84DzQMHANED0gPOAwcA0gO2A7UDBwDSA9EDtgMHANMD1APVAwcA0wPWA9QDBwDXA9UD2AMHANcD0wPVAwcA1QPZA9gDBwDVA9QD2QMHANQD2gPZAwcA1APWA9oDBwDXA9YD0wMHANcD2gPWAwcA2wPcA90DBwDbA94D3AMHAN8D3gPbAwcA3wPgA94DBwDhA98D4gMHAOED4APfAwcA3APiA90DBwDcA+ED4gMHAOMD5APlAwcA4wPmA+QDBwDlA+cD6AMHAOUD5APnAwcA5wPpA+gDBwDnA+oD6QMHAOoD4wPpAwcA6gPmA+MDBwDdA+sD2wMHAN0D7APrAwcA5QPsA+MDBwDlA+sD7AMHANsD7QPfAwcA2wPrA+0DBwDoA+sD5QMHAOgD7QPrAwcA7QPiA98DBwDtA+4D4gMHAOkD7QPoAwcA6QPuA+0DBwDuA90D4gMHAO4D7APdAwcA4wPuA+kDBwDjA+wD7gMHAO8D3APeAwcA7wPwA9wDBwDxA94D4AMHAPED7wPeAwcA3APyA+EDBwDcA/AD8gMHAOED8QPgAwcA4QPyA/EDBwDvA/MD8AMHAO8D9APzAwcA2AP0A9cDBwDYA/MD9AMHANcD9QPaAwcA1wP0A/UDBwDwA/YD8gMHAPAD8wP2AwcA2QPzA9gDBwDZA/YD8wMHAPID9QPxAwcA8gP2A/UDBwDaA/YD2QMHANoD9QP2AwcAywP3A/gDBwDLA9AD9wMHANAD+QP3AwcA0APRA/kDBwD5A80D+gMHAPkD0QPNAwcA+gPLA/gDBwD6A80DywMHAPsD8QP8AwcA+wPvA/ED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BwBVBE0ETwQHAFcEUARYBAcAVwRPBFAEBwBQBFYEWAQHAFAETgRWBAcAWQRaBFsEBwBZBFwEWgQHAF0EXgRfBAcAXQRgBF4EBwBhBGIEYwQHAGEEZARiBAcAZQRmBGcEBwBlBGgEZgQHAGkEWwRqBAcAaQRZBFsEBwBfBGsEbAQHAF8EXgRrBAcAYwRtBG4EBwBjBGIEbQQHAG8EZwRwBAcAbwRlBGcEBwBcBHEEWgQHAFwEcgRxBAcAcwR0BHUEBwBzBHYEdAQHAHIEdwRxBAcAcgR4BHcEBwBhBHgEZAQHAGEEdwR4BAcAeQR0BHYEBwB5BHoEdAQHAHsEeQR8BAcAewR6BHkEBwB1BH0EcwQHAHUEfgR9BAcAfwR+BIAEBwB/BH0EfgQHAIEEWwRaBAcAgQSCBFsEBwBfBIEEXQQHAF8EggSBBAcAWQSDBFwEBwBZBIQEgwQHAGAEhAReBAcAYASDBIQEBwCCBGoEWwQHAIIEhQRqBAcAbASCBF8EBwBsBIUEggQHAGkEhARZBAcAaQSGBIQEBwBeBIYEawQHAF4EhASGBAcAfASHBHsEBwB8BIgEhwQHAGQEiQRiBAcAZASKBIkEBwBjBIsEYQQHAGMEjASLBAcAYgSNBG0EBwBiBIkEjQQHAG4EjARjBAcAbgSOBIwEBwCPBJAEkQQHAI8EkgSQBAcAkgRoBJAEBwCSBGYEaAQHAHwEkwSIBAcAfASUBJMEBwCUBIsEkwQHAJQEYQSLBAcAeQSUBHwEBwB5BJUElAQHAJUEYQSUBAcAlQR3BGEEBwB2BJUEeQQHAHYElgSVBAcAlgR3BJUEBwCWBHEEdwQHAHMElgR2BAcAcwSXBJYEBwCXBHEElgQHAJcEWgRxBAcAfQSXBHMEBwB9BJgElwQHAJgEWgSXBAcAmASBBFoEBwB/BJgEfQQHAH8EmQSYBAcAmQSBBJgEBwCZBF0EgQQHAIAEmQR/BAcAgASaBJkEBwCaBF0EmQQHAJoEYARdBAcAfgSaBIAEBwB+BJsEmgQHAJsEYASaBAcAmwSDBGAEBwB1BJsEfgQHAHUEnASbBAcAnASDBJsEBwCcBFwEgwQHAHQEnAR1BAcAdASdBJwEBwCdBFwEnAQHAJ0EcgRcBAcAegSdBHQEBwB6BJ4EnQQHAJ4EcgSdBAcAngR4BHIEBwB7BJ4EegQHAHsE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IwX5BAcA+wQkBSMFBwD6BCUFBQUHAPoEIQUlBQcABgUkBfsEBwAGBSYFJAUHACcFKAUpBQcAJwUqBSgFBwAqBQAFKAUHACoF/gQABQcAFAUrBSAFBwAUBSwFKwUHACwFIwUrBQcALAX5BCMFBwARBSwFFAUHABEFLQUsBQcALQX5BCwFBwAtBQ8F+QQHAA4FLQURBQcADgUuBS0FBwAuBQ8FLQUHAC4FCQUPBQcACwUuBQ4FBwALBS8FLgUHAC8FCQUuBQcALwXyBAkFBwAVBS8FCwUHABUFMAUvBQcAMAXyBC8FBwAwBRkF8gQHABcFMAUVBQcAFwUxBTAFBwAxBRkFMAUHADEF9QQZBQcAGAUxBRcFBwAYBTIFMQUHADIF9QQxBQcAMgX4BPUEBwAWBTIFGAUHABYFMwUyBQcAMwX4BDIFBwAzBRsF+AQHAA0FMwUWBQcADQU0BTMFBwA0BRsFMwUHADQF9AQbBQcADAU0BQ0FBwAMBTUFNAUHADUF9AQ0BQcANQUKBfQEBwASBTUFDAUHABIFNgU1BQcANgUKBTUFBwA2BRAFCgUHABMFNgUSBQcAEwU3BTYFBwA3BRAFNgUHADcF/AQQBQcAHwU3BRMFBwAfBTgFNwUHADgF/AQ3BQcAOAUiBfwEBwA5BToFOwUHADkFPAU6BQcAPQU+BT8FBwA9BUAFPgUHAEEFQgVDBQcAQQVEBUIFBwA+BUUFRgUHAD4FQAVFBQcARwVEBUEFBwBHBUgFRAUHAEkFPAU5BQcASQVKBTwFBwBDBUoFSQUHAEMFQgVKBQcAOwVLBUwFBwA7BToFSwUHAD8FSwU9BQcAPwVMBUsFBwBNBToFPAUHAE0FTgU6BQcAOwVPBTkFBwA7BVAFTwUHAFEFPwU+BQcAUQVSBT8FBwA9BVMFQAUHAD0FVAVTBQcAVQVCBUQFBwBVBVYFQgUHAEMFVwVBBQcAQwVYBVcFBwBFBVkFRgUHAEUFWgVZBQcAQAVaBUUFBwBABVMFWgUHAFkFPgVGBQcAWQVRBT4FBwBbBUQFSAUHAFsFVQVEBQcAXAVIBUcFBwBcBVsFSAUHAEEFXAVHBQcAQQVXBVwFBwBdBTwFSgUHAF0FTQU8BQcAOQVeBUkFBwA5BU8FXgUHAFYFSgVCBQcAVgVdBUoFBwBJBVgFQwUHAEkFXgVYBQcAOgVfBUsFBwA6BU4FXwUHAGAFOwVMBQcAYAVQBTsFBwBLBVQFPQUHAEsFXwVUBQcAUgVMBT8FBwBSBWAFTAUHAB8FYQViBQcAHwUgBWEFBwBPBWIFYQUHAE8FUAViBQcAYwVSBVEFBwBjBWQFUgUHAGQFIQUiBQcAZAVjBSEFBwBYBWUFVwUHAFgFZgVlBQcAJAVmBSMFBwAkBWUFZgUHAGcFIQVjBQcAZwUlBSEFBwBZBWMFUQUHAFkFZwVjBQcAVwVoBVwFBwBXBWUFaAUHACYFZQUkBQcAJgVoBWUFBwAgBWkFYQUHACAFKwVpBQcATwVpBV4FBwBPBWEFaQUHACsFZgVpBQcAKwUjBWYFBwBeBWYFWAUHAF4FaQVmBQcAagUfBWIFBwBqBTgFHwUHAGAFYgVQBQcAYAVqBWIFBwBkBWAFUgUHAGQFagVgBQcAagUiBTgFBwBqBWQFIgUHAGsFbAVtBQcAawVuBWwFBwBNBWwFTgUHAE0FbQVsBQcAbwVTBVQFBwBvBXAFUwUHAHAFcQVyBQcAcAVvBXEFBwBVBXMFVgUHAFUFdAVzBQcAdQV0BXYFBwB1BXMFdAUHAHAFdwV4BQcAcAVyBXcFBwBTBXgFWgUHAFMFcAV4BQcAWwV0BVUFBwBbBXkFdAUHAHYFeQV6BQcAdgV0BXkFBwB7BW0FfAUHAHsFawVtBQcAXQVtBU0FBwBdBXwFbQUHAHUFfAVzBQcAdQV7BXwFBwBWBXwFXQUHAFYFcwV8BQcAbAVfBU4FBwBsBX0FXwUHAH0FbgV+BQcAfQVsBW4FBwB9BXEFbwUHAH0FfgVxBQcAXwVvBVQFBwBfBX0FbwUHAH8FgAWBBQcAfwWCBYAFBwApBYMFJwUHACkFhAWDBQcAhQVyBXEFBwCFBYYFcgUHAIYFAAX9BAcAhgWFBQAFBwB1BYcFiAUHAHUFdgWHBQcA/wSIBYcFBwD/BP4EiAUHAIYFdwVyBQcAhgWJBXcFBwCJBf0EBwUHAIkFhgX9BAcAegWHBXYFBwB6BYoFhwUHAP8EigUIBQcA/wSHBYoFBwCLBSkFKAUHAIsFhAUpBQcAhAV+BW4FBwCEBYsFfgUHAIsFAAWFBQcAiwUoBQAFBwCFBX4FiwUHAIUFcQV+BQcAawWMBYMFBwBrBXsFjAUHACoFgwWMBQcAKgUnBYMFBwB1BYwFewUHAHUFiAWMBQcAKgWIBf4EBwAqBYwFiAUHAI0FbgVrBQcAjQWOBW4FBwCPBW4FjgUHAI8FhAVuBQcAhAWQBYMFBwCEBY8FkAUHAIMFjQVrBQcAgwWQBY0FBwCRBY0FkgUHAJEFjgWNBQcAkwWOBZEFBwCTBY8FjgUHAJAFkwWUBQcAkAWPBZMFBwCNBZQFkgUHAI0FkAWUBQcAlQWRBZIFBwCVBZYFkQUHAJcFkQWWBQcAlwWTBZEFBwCTBZgFlAUHAJMFlwWYBQcAlAWVBZIFBwCUBZgFlQUHAJkFlgWVBQcAmQWaBZYFBwCaBZcFlgUHAJoFmwWXBQcAlwWcBZgFBwCXBZsFnAUHAJgFmQWVBQcAmAWcBZkFBwB/BZoFmQUHAH8FgQWaBQcAgQWbBZoFBwCBBYAFmwUHAJsFggWcBQcAmwWABYIFBwCcBX8FmQUHAJwFggV/BQcAnQWeBZ8FBwCdBaAFngUHAKEFogWjBQcAoQWkBaIFBwClBaYFpwUHAKUFqAWmBQcAqQWqBasFBwCpBawFqgUHAJ8FrQWuBQcAnwWeBa0FBwCvBaMFsAUHAK8FoQWjBQcAsQWnBbIFBwCxBaUFpwUHAKsFswW0BQcAqwWqBbMFBwC1BaAFnQUHALUFtgWgBQcAtwW4BbkFBwC3BboFuAUHALsFtgW1BQcAuwW8BbYFBwC8BaYFqAUHALwFuwWmBQcAtwW9BboFBwC3Bb4FvQUHAL0FvwXABQcAvQW+Bb8FBwDBBbkFuAUHAMEFwgW5BQcAwgXDBcQFBwDCBcEFwwUHAJ8FxQWdBQcAnwXGBcUFBwDFBaMFogUHAMUFxgWjBQcAxwWeBaAFBwDHBcgFngUHAMgFpAWhBQcAyAXHBaQFBwCuBcYFnwUHAK4FyQXGBQcAxgWwBaMFBwDGBckFsAUHAMgFrQWeBQcAyAXKBa0FBwDKBaEFrwUHAMoFyAWhBQcAywXABb8FBwDLBcwFwAUHAM0FqAWlBQcAzQXOBagFBwDPBacFpgUHAM8F0AWnBQcA0QWlBbEFBwDRBc0FpQUHANAFsgWnBQcA0AXSBbIFBwDTBdQF1QUHANMF1gXUBQcArAXWBdMFBwCsBakF1gUHANcFwAXMBQcA1wXYBcAFBwDPBdgF1wUHAM8FpgXYBQcA2AW9BcAFBwDYBdkFvQUHAKYF2QXYBQcApgW7BdkFBwDZBboFvQUHANkF2gW6BQcAuwXaBdkFBwC7BbUF2gUHANoFuAW6BQcA2gXbBbgFBwC1BdsF2gUHALUFnQXbBQcA2wXBBbgFBwDbBdwFwQUHAJ0F3AXbBQcAnQXFBdwFBwDcBcMFwQUHANwF3QXDBQcAxQXdBdwFBwDFBaIF3QUHAN0FxAXDBQcA3QXeBcQFBwCiBd4F3QUHAKIFpAXeBQcA3gXCBcQFBwDeBd8FwgUHAKQF3wXeBQcApAXHBd8FBwDfBbkFwgUHAN8F4AW5BQcAxwXgBd8FBwDHBaAF4AUHAOAFtwW5BQcA4AXhBbcFBwCgBeEF4AUHAKAFtgXhBQcA4QW+BbcFBwDhBeIFvgUHALYF4gXhBQcAtgW8BeIFBwDiBb8FvgUHAOIF4wW/BQcAvAXjBeIFBwC8BagF4wUHAOMFywW/BQcA4wXkBcsFBwCoBeQF4wUHAKgFzgXkBQcA5QXmBecFBwDlBegF5gUHAOkF6gXrBQcA6QXsBeoFBwDtBe4F7wUHAO0F8AXuBQcA8QXpBfIFBwDxBewF6QUHAPAF8wXuBQcA8AX0BfMFBwDoBfUF5gUHAOgF9gX1BQcA9gXvBfUFBwD2Be0F7wUHAPcF5wX4BQcA9wXlBecFBwD3BesF6gUHAPcF+AXrBQcA5QX5BegFBwDlBfoF+QUHAPsF5wXmBQcA+wX8BecFBwDrBf0F6QUHAOsF/gX9BQcA/wXqBewFBwD/BQAG6gUHAO0FAQbwBQcA7QUCBgEGBwADBu8F7gUHAAMGBAbvBQcABQbxBfIFBwAFBgYG8QUHAAYG7AXxBQcABgb/BewFBwDpBQUG8gUHAOkF/QUFBgcA8AUHBvQFBwDwBQEGBwYHAPQFCAbzBQcA9AUHBggGBwAIBu4F8wUHAAgGAwbuBQcA6AUJBvYFBwDoBfkFCQYHAAoG5gX1BQcACgb7BeYFBwD2BQIG7QUHAPYFCQYCBgcABAb1Be8FBwAEBgoG9QUHAAsG5QX3BQcACwb6BeUFBwDnBQwG+AUHAOcF/AUMBgcAAAb3BeoFBwAABgsG9wUHAPgF/gXrBQcA+AUMBv4FBwANBssFDgYHAA0GzAXLBQcADgb7BQ0GBwAOBvwF+wUHAP4FDwb9BQcA/gUQBg8GBwDNBRAGzgUHAM0FDwYQBgcAEQYEBgMGBwARBhIGBAYHABIG0AXPBQcAEgYRBtAFBwDNBRMGDwYHAM0F0QUTBgcADwYFBv0FBwAPBhMGBQYHABQGAwYIBgcAFAYRBgMGBwARBtIF0AUHABEGFAbSBQcAFQbMBQ0GBwAVBtcFzAUHABUG+wUKBgcAFQYNBvsFBwASBtcFFQYHABIGzwXXBQcAEgYKBgQGBwASBhUGCgYHAMsFFgYOBgcAywXkBRYGBwAOBgwG/AUHAA4GFgYMBgcADAYQBv4FBwAMBhYGEAYHAM4FFgbkBQcAzgUQBhYGBwAXBhgGGQYHABcGGgYYBgcAFwb5BfoFBwAXBhkG+QUHAP8FGwYABgcA/wUcBhsGBwAdBhwGHgYHAB0GGwYcBgcAHwYBBgIGBwAfBiAGAQYHACAGIQYiBgcAIAYfBiEGBwAjBhwGJAYHACMGHgYcBgcAJAb/BQYGBwAkBhwG/wUHACAGBwYBBgcAIAYlBgcGBwAlBiIGJgYHACUGIAYiBgcAGQYnBigGBwAZBhgGJwYHABkGCQb5BQcAGQYoBgkGBwAoBiEGHwYHACgGJwYhBgcAKAYCBgkGBwAoBh8GAgYHAAsGFwb6BQcACwYpBhcGBwAaBikGKgYHABoGFwYpBgcAHQYpBhsGBwAdBioGKQYHABsGCwYABgcAGwYpBgsGBwArBtUF1AUHACsGLAbVBQcAHgYtBh0GBwAeBi4GLQYHAKwFLgaqBQcArAUtBi4GBwAvBiEGMAYHAC8GIgYhBgcAMAarBS8GBwAwBqkFqwUHACMGLgYeBgcAIwYxBi4GBwCqBTEGswUHAKoFLgYxBgcALwYmBiIGBwAvBjIGJgYHADIGqwW0BQcAMgYvBqsFBwDVBTMG0wUHANUFLAYzBgcAKgYsBhoGBwAqBjMGLAYHAKwFMwYtBgcArAXTBTMGBwAqBi0GMwYHACoGHQYtBgcANAYYBisGBwA0BicGGAYHACsG1gU0BgcAKwbUBdYFBwA0BiEGJwYHADQGMAYhBgcAMAbWBakFBwAwBjQG1gUHACwGGAYaBgcALAYrBhgGBwA1BjYGNwYHADUGOAY2BgcAOQY6BjsGBwA5BjwGOgYHAD0GPgY/BgcAPQZABj4GBwBBBkIGQwYHAEEGRAZCBgcANwZFBkYGBwA3BjYGRQYHAEcGOwZIBgcARwY5BjsGBwBJBj8GSgYHAEkGPQY/BgcAQwZLBkwGBwBDBkIGSwYHAE0GOAY1BgcATQZOBjgGBwBPBlAGUQYHAE8GUgZQBgcAUwZOBk0GBwBTBlQGTgYHAFQGPgZABgcAVAZTBj4GBwBPBlUGUgYHAE8GVgZVBgcAVQZXBlgGBwBVBlYGVwYHAFkGUQZQBgcAWQZaBlEGBwBaBlsGXAYHAFoGWQZbBgcANwZdBjUGBwA3Bl4GXQYHAF0GOwY6BgcAXQZeBjsGBwBfBjYGOAYHAF8GYAY2BgcAYAY8BjkGBwBgBl8GPAYHAEYGXgY3BgcARgZhBl4GBwBeBkgGOwYHAF4GYQZIBgcAYAZFBjYGBwBgBmIGRQYHAGIGOQZHBgcAYgZgBjkGBwBjBlgGVwYHAGMGZAZYBgcAZQZABj0GBwBlBmYGQAYHAGcGPwY+BgcAZwZoBj8GBwBpBj0GSQYHAGkGZQY9BgcAaAZKBj8GBwBoBmoGSgYHAGsGbAZtBgcAawZuBmwGBwBEBm4GawYHAEQGQQZuBgcAbwZYBmQGBwBvBnAGWAYHAGcGcAZvBgcAZwY+BnAGBwBwBlUGWAYHAHAGcQZVBgcAPgZxBnAGBwA+BlMGcQYHAHEGUgZVBgcAcQZyBlIGBwBTBnIGcQYHAFMGTQZyBgcAcgZQBlIGBwByBnMGUAYHAE0GcwZyBgcATQY1BnMGBwBzBlkGUAYHAHMGdAZZBgcANQZ0BnMGBwA1Bl0GdAYHAHQGWwZZBgcAdAZ1BlsGBwBdBnUGdAYHAF0GOgZ1BgcAdQZcBlsGBwB1BnYGXAYHADoGdgZ1BgcAOgY8BnYGBwB2BloGXAYHAHYGdwZaBgcAPAZ3BnYGBwA8Bl8GdwYHAHcGUQZaBgcAdwZ4BlEGBwBfBngGdwYHAF8GOAZ4BgcAeAZPBlEGBwB4BnkGTwYHADgGeQZ4BgcAOAZOBnkGBwB5BlYGTwYHAHkGegZWBgcATgZ6BnkGBwBOBlQGegYHAHoGVwZWBgcAegZ7BlcGBwBUBnsGegYHAFQGQAZ7BgcAewZjBlcGBwB7BnwGYwYHAEAGfAZ7BgcAQAZmBnwGBwB9Bn4GfwYHAH0GgAZ+BgcAgQaCBoMGBwCBBoQGggYHAIUGhgaHBgcAhQaIBoYGBwCJBoEGigYHAIkGhAaBBgcAiAaLBoYGBwCIBowGiwYHAIAGjQZ+BgcAgAaOBo0GBwCOBocGjQYHAI4GhQaHBgcAjwZ/BpAGBwCPBn0GfwYHAI8GgwaCBgcAjwaQBoMGBwB9BpEGgAYHAH0GkgaRBgcAkwZ/Bn4GBwCTBpQGfwYHAIMGlQaBBgcAgwaWBpUGBwCXBoIGhAYHAJcGmAaCBgcAhQaZBogGBwCFBpoGmQYHAJsGhwaGBgcAmwacBocGBwCdBokGigYHAJ0GngaJBgcAngaEBokGBwCeBpcGhAYHAIEGnQaKBgcAgQaVBp0GBwCIBp8GjAYHAIgGmQafBgcAjAagBosGBwCMBp8GoAYHAKAGhgaLBgcAoAabBoYGBwCABqEGjgYHAIAGkQahBgcAogZ+Bo0GBwCiBpMGfgYHAI4GmgaFBgcAjgahBpoGBwCcBo0GhwYHAJwGogaNBgcAowZ9Bo8GBwCjBpIGfQYHAH8GpAaQBgcAfwaUBqQGBwCYBo8GggYHAJgGowaPBgcAkAaWBoMGBwCQBqQGlgYHAKUGYwamBgcApQZkBmMGBwCmBpMGpQYHAKYGlAaTBgcAlganBpUGBwCWBqgGpwYHAGUGqAZmBgcAZQanBqgGBwCpBpwGmwYHAKkGqgacBgcAqgZoBmcGBwCqBqkGaAYHAGUGqwanBgcAZQZpBqsGBwCnBp0GlQYHAKcGqwadBgcArAabBqAGBwCsBqkGmwYHAKkGagZoBgcAqQasBmoGBwCtBmQGpQYHAK0GbwZkBgcArQaTBqIGBwCtBqUGkwYHAKoGbwatBgcAqgZnBm8GBwCqBqIGnAYHAKoGrQaiBgcAYwauBqYGBwBjBnwGrgYHAKYGpAaUBgcApgauBqQGBwCkBqgGlgYHAKQGrgaoBgcAZgauBnwGBwBmBqgGrgYHAK8GsAaxBgcArwayBrAGBwCvBpEGkgYHAK8GsQaRBgcAlwazBpgGBwCXBrQGswYHALUGtAa2BgcAtQazBrQGBwC3BpkGmgYHALcGuAaZBgcAuAa5BroGBwC4BrcGuQYHALsGtAa8BgcAuwa2BrQGBwC8BpcGngYHALwGtAaXBgcAuAafBpkGBwC4Br0GnwYHAL0Guga+BgcAvQa4BroGBwCxBr8GwAYHALEGsAa/BgcAsQahBpEGBwCxBsAGoQYHAMAGuQa3BgcAwAa/BrkGBwDABpoGoQYHAMAGtwaaBgcAowavBpIGBwCjBsEGrwYHALIGwQbCBgcAsgavBsEGBwC1BsEGswYHALUGwgbBBgcAswajBpgGBwCzBsEGowYHAMMGxAbFBgcAwwbGBsQGBwDHBm0GbAYHAMcGyAZtBgcAtgbJBrUGBwC2BsoGyQYHAEQGygZCBgcARAbJBsoGBwDLBrkGzAYHAMsGuga5BgcAzAZDBssGBwDMBkEGQwYHALsGyga2BgcAuwbNBsoGBwBCBs0GSwYHAEIGygbNBgcAywa+BroGBwDLBs4GvgYHAM4GQwZMBgcAzgbLBkMGBwBtBs8GawYHAG0GyAbPBgcAwgbIBrIGBwDCBs8GyAYHAEQGzwbJBgcARAZrBs8GBwDCBskGzwYHAMIGtQbJBgcA0AawBscGBwDQBr8GsAYHAMcGbgbQBgcAxwZsBm4GBwDQBrkGvwYHANAGzAa5BgcAzAZuBkEGBwDMBtAGbgYHALIG0QawBgcAsgbSBtEGBwCyBtMG0gYHALIGyAbTBgcA1AbIBscGBwDUBtMGyAYHANEGxwawBgcA0QbUBscGBwDRBtUG1gYHANEG0gbVBgcA0gbXBtUGBwDSBtMG1wYHANcG1AbYBgcA1wbTBtQGBwDYBtEG1gYHANgG1AbRBgcA1QbZBtYGBwDVBtoG2QYHANUG2wbaBgcA1QbXBtsGBwDcBtcG2AYHANwG2wbXBgcA2QbYBtYGBwDZBtwG2AYHANoG3QbZBgcA2gbeBt0GBwDbBt4G2gYHANsG3wbeBgcA4AbbBtwGBwDgBt8G2wYHAN0G3AbZBgcA3QbgBtwGBwDeBsQG3QYHAN4GxQbEBgcA3wbFBt4GBwDfBsMGxQYHAMYG3wbgBgcAxgbDBt8GBwDEBuAG3QYHAMQGxgbgBgcA4QbiBuMGBwDhBuQG4gYHAOUG5gbnBgcA5QboBuYGBwDmBukG6gYHAOYG6AbpBgcA6gbrBuwGBwDqBukG6wYHAO0G6wbuBgcA7QbsBusGBwDvBu4G8AYHAO8G7QbuBgcA8QbyBvMGBwDxBvQG8gYHAOUG9AbxBgcA5QbnBvQGBwDnBuMG4gYHAOcG5gbjBgcA4wbqBuEGBwDjBuYG6gYHAOEG7AbkBgcA4QbqBuwGBwD1BuwG7QYHAPUG5AbsBgcA9gbtBu8GBwD2BvUG7QYHAPQG9wbyBgcA9Ab4BvcGBwDnBvgG9AYHAOcG4gb4BgcA+QbxBvMGBwD5BvoG8QYHAPoG5QbxBgcA+gb7BuUGBwD7BugG5QYHAPsG/AboBgcA6Ab9BukGBwDoBvwG/QYHAOkG/gbrBgcA6Qb9Bv4GBwDrBv8G7gYHAOsG/gb/BgcA7gYAB/AGBwDuBv8GAAcHAAEH+gb5BgcAAQcCB/oGBwACB/sG+gYHAAIHAwf7BgcABAf7BgMHBwAEB/wG+wYHAP0GBAcFBwcA/Qb8BgQHBwD+BgUHBgcHAP4G/QYFBwcA/gYHB/8GBwD+BgYHBwcHAP8GCAcABwcA/wYHBwgHBwAJBwEHCgcHAAkHAgcBBwcACwcCBwkHBwALBwMHAgcHAAwHAwcLBwcADAcEBwMHBwAFBwwHDQcHAAUHBAcMBwcABgcNBw4HBwAGBwUHDQcHAAcHDgcPBwcABwcGBw4HBwAIBw8HEAcHAAgHBwcPBwcAEQcJBwoHBwARBxIHCQcHABIHCwcJBwcAEgcTBwsHBwAUBwsHEwcHABQHDAcLBwcADQcUBxUHBwANBwwHFAcHAA4HFQcWBwcADgcNBxUHBwAOBxcHDwcHAA4HFgcXBwcADwcYBxAHBwAPBxcHGAcHABkHEgcRBwcAGQcaBxIHBwAaBxMHEgcHABoHGwcTBwcAHAcTBxsHBwAcBxQHEwcHABUHHAcdBwcAFQcUBxwHBwAWBx0HHgcHABYHFQcdBwcAFgcfBxcHBwAWBx4HHwcHABcHIAcYBwcAFwcfByAHBwAhBxoHGQcHACEHIgcaBwcAIgcbBxoHBwAiByMHGwcHACMHHAcbBwcAIwckBxwHBwAcByUHHQcHABwHJAclBwcAHQcmBx4HBwAdByUHJgcHAB4HJwcfBwcAHgcmBycHBwAfBygHIAcHAB8HJwcoBwcA5Ab4BuIGBwDkBvUG+AYHAPUG9wb4BgcA9Qb2BvcGBwApByoHKwcHACkHLAcqBwcALQcuBy8HBwAtBzAHLgcHADEHLQcyBwcAMQcwBy0HBwAzBzIHNAcHADMHMQcyBwcAMwc1BzYHBwAzBzQHNQcHADYHNwc4BwcANgc1BzcHBwA5BzoHOwcHADkHPAc6BwcAPAcuBzoHBwA8By8HLgcHACsHLwcpBwcAKwctBy8HBwAyBysHKgcHADIHLQcrBwcANAcqBywHBwA0BzIHKgcHADQHPQc1BwcANAcsBz0HBwA1Bz4HNwcHADUHPQc+BwcAPwc8BzkHBwA/B0AHPAcHAEAHLwc8BwcAQAcpBy8HBwA6B0EHOwcHADoHQgdBBwcALgdCBzoHBwAuB0MHQgcHADAHQwcuBwcAMAdEB0MHBwBFBzAHMQcHAEUHRAcwBwcARgcxBzMHBwBGB0UHMQcHAEcHMwc2BwcARwdGBzMHBwBIBzYHOAcHAEgHRwc2BwcAQgdJB0EHBwBCB0oHSQcHAEMHSgdCBwcAQwdLB0oHBwBDB0wHSwcHAEMHRAdMBwcATAdFB00HBwBMB0QHRQcHAE0HRgdOBwcATQdFB0YHBwBPB0YHRwcHAE8HTgdGBwcAUAdHB0gHBwBQB08HRwcHAEkHUQdSBwcASQdKB1EHBwBKB1MHUQcHAEoHSwdTBwcASwdUB1MHBwBLB0wHVAcHAFQHTQdVBwcAVAdMB00HBwBVB04HVgcHAFUHTQdOBwcAVgdPB1cHBwBWB04HTwcHAFcHUAdYBwcAVwdPB1AHBwBRB1kHUgcHAFEHWgdZBwcAUwdaB1EHBwBTB1sHWgcHAFMHXAdbBwcAUwdUB1wHBwBcB1UHXQcHAFwHVAdVBwcAXQdWB14HBwBdB1UHVgcHAF8HVgdXBwcAXwdeB1YHBwBgB1cHWAcHAGAHXwdXBwcAWgdhB1kHBwBaB2IHYQcHAFsHYgdaBwcAWwdjB2IHBwBbB2QHYwcHAFsHXAdkBwcAZAddB2UHBwBkB1wHXQcHAGUHXgdmBwcAZQddB14HBwBnB14HXwcHAGcHZgdeBwcAaAdfB2AHBwBoB2cHXwcHAGIHaQdhBwcAYgdqB2kHBwBjB2oHYgcHAGMHawdqBwcAZAdrB2MHBwBkB2wHawcHAG0HZAdlBwcAbQdsB2QHBwBuB2UHZgcHAG4HbQdlBwcAbwdmB2cHBwBvB24HZgcHAHAHZwdoBwcAcAdvB2cHBwBABywHKQcHAEAHPQcsBwcAPwc9B0AHBwA/Bz4HPQcHAHEHcgdzBwcAcQd0B3IHBwB1B3YHdwcHAHUHeAd2BwcAeQd4B3UHBwB5ByEHeAcHAHoHIQd5BwcAegciByEHBwB7ByIHegcHAHsHIwciBwcAewckByMHBwB7B3wHJAcHACQHfQclBwcAJAd8B30HBwAlB34HJgcHACUHfQd+BwcAJwd+B38HBwAnByYHfgcHACgHfweABwcAKAcnB38HBwB2B4AHdwcHAHYHKAeABwcAgQd1B3cHBwCBB4IHdQcHAIIHeQd1BwcAggeDB3kHBwCDB3oHeQcHAIMHhAd6BwcAhAd7B3oHBwCEB4UHewcHAIUHfAd7BwcAhQeGB3wHBwB8B4cHfQcHAHwHhgeHBwcAfQeIB34HBwB9B4cHiAcHAH4HiQd/BwcAfgeIB4kHBwB/B4oHgAcHAH8HiQeKBwcAgAeBB3cHBwCAB4oHgQcHAHIHggeBBwcAcgd0B4IHBwB0B4MHggcHAHQHcQeDBwcAcQeEB4MHBwBxB4sHhAcHAIsHhQeEBwcAiweMB4UHBwCNB4UHjAcHAI0HhgeFBwcAhweNB44HBwCHB4YHjQcHAIgHjgePBwcAiAeHB44HBwCIB5AHiQcHAIgHjweQBwcAiQdzB4oHBwCJB5AHcwcHAIoHcgeBBwcAigdzB3IHBwCLB3MHkAcHAIsHcQdzBwcAjweNB4wHBwCPB44HjQcHAIwHkAePBwcAjAeLB5AHBwCRB5IHkwcHAJEHlAeSBwcAlQeWB5cHBwCVB5gHlgcHAJgHmQeWBwcAmAdpB5kHBwBpB5oHmQcHAGkHageaBwcAagebB5oHBwBqB2sHmwcHAGwHmwdrBwcAbAecB5sHBwCdB2wHbQcHAJ0HnAdsBwcAngdtB24HBwCeB50HbQcHAJ4HbwefBwcAngduB28HBwCfB3AHoAcHAJ8HbwdwBwcAoAeVB5cHBwCgB3AHlQcHAJYHoQeXBwcAlgeiB6EHBwCZB6IHlgcHAJkHoweiBwcAmgejB5kHBwCaB6QHowcHAJsHpAeaBwcAmwelB6QHBwCcB6UHmwcHAJwHpgelBwcApwecB50HBwCnB6YHnAcHAKgHnQeeBwcAqAenB50HBwCpB54HnwcHAKkHqAeeBwcAqgefB6AHBwCqB6kHnwcHAKEHoAeXBwcAoQeqB6AHBwCiB5EHoQcHAKIHlAeRBwcAoweUB6IHBwCjB5IHlAcHAKQHkgejBwcApAerB5IHBwClB6sHpAcHAKUHrAerBwcApQetB6wHBwClB6YHrQcHAK0HpweuBwcArQemB6cHBwCuB6gHrwcHAK4HpweoBwcAsAeoB6kHBwCwB68HqAcHAJMHqQeqBwcAkwewB6kHBwCRB6oHoQcHAJEHkweqBwcAkwerB7AHBwCTB5IHqwcHAK0HrwesBwcArQeuB68HBwCwB6wHrwcHALAHqwesBwcAsQeyB7MHBwCxB7QHsgcHAPMGtAexBwcA8wbyBrQHBwC0B7UHsgcHALQHtge1BwcA8ga2B7QHBwDyBvcGtgcHALcHsQezBwcAtwe4B7EHBwC4B/MGsQcHALgH+QbzBgcA8Aa3B7MHBwDwBgAHtwcHALkHuAe3BwcAuQe6B7gHBwC6B/kGuAcHALoHAQf5BgcAAAe5B7cHBwAABwgHuQcHALsHuQe8BwcAuwe6B7kHBwAKB7oHuwcHAAoHAQe6BwcAuQcQB7wHBwC5BwgHEAcHAL0Huwe8BwcAvQe+B7sHBwC+BwoHuwcHAL4HEQcKBwcAEAe9B7wHBwAQBxgHvQcHAL8Hvge9BwcAvwfAB74HBwDABxEHvgcHAMAHGQcRBwcAGAe/B70HBwAYByAHvwcHAHYHwAe/BwcAdgd4B8AHBwB4BxkHwAcHAHgHIQcZBwcAIAd2B78HBwAgBygHdgcHAPYGtgf3BgcA9ga1B7YHBwDBB7MHwgcHAMEH8AazBwcAwwfwBsEHBwDDB+8G8AYHALMHxAfCBwcAsweyB8QHBwDFB+8GwwcHAMUH9gbvBgcAtQfFB8YHBwC1B/YGxQcHALIHxgfEBwcAsge1B8YHBwDHB8IHyAcHAMcHwQfCBwcAxwfDB8EHBwDHB8kHwwcHAMQHyAfCBwcAxAfKB8gHBwDFB8kHywcHAMUHwwfJBwcAxQfMB8YHBwDFB8sHzAcHAMYHygfEBwcAxgfMB8oHBwDNB84HzwcHAM0H0AfOBwcA0Ac7B84HBwDQBzkHOwcHANEH0AfNBwcA0QfSB9AHBwDSBzkH0AcHANIHPwc5BwcAzgfTB88HBwDOB9QH0wcHADsH1AfOBwcAOwdBB9QHBwDTBzgHzwcHANMHSAc4BwcA1AfVB9MHBwDUB9YH1QcHAEEH1gfUBwcAQQdJB9YHBwDVB0gH0wcHANUHUAdIBwcA1QfXB9gHBwDVB9YH1wcHANYHUgfXBwcA1gdJB1IHBwBYB9UH2AcHAFgHUAfVBwcA1wfZB9gHBwDXB9oH2QcHAFIH2gfXBwcAUgdZB9oHBwDZB1gH2AcHANkHYAdYBwcA2gfbB9kHBwDaB9wH2wcHAFkH3AfaBwcAWQdhB9wHBwDbB2AH2QcHANsHaAdgBwcA3AeVB9sHBwDcB5gHlQcHAGEHmAfcBwcAYQdpB5gHBwCVB2gH2wcHAJUHcAdoBwcA0gc+Bz8HBwDSB9EHPgcHAM8H3QfeBwcAzwc4B90HBwA4B98H3QcHADgHNwffBwcA4AfPB94HBwDgB80HzwcHADcH4QffBwcANwc+B+EHBwDhB9EH4gcHAOEHPgfRBwcA4gfNB+AHBwDiB9EHzQcHAN4H4wfkBwcA3gfdB+MHBwDfB+MH3QcHAN8H5QfjBwcA5AfgB94HBwDkB+YH4AcHAOUH4QfnBwcA5QffB+EHBwDoB+EH4gcHAOgH5wfhBwcA5gfiB+AHBwDmB+gH4gcHAOkH6gfrBwcA6QfsB+oHBwDtB+sH7gcHAO0H6QfrBwcA6wfvB+4HBwDrB+oH7wcHAOoH8AfvBwcA6gfsB/AHBwDtB+wH6QcHAO0H8AfsBwcA8QfyB/MHBwDxB/QH8gcHAPUH9AfxBwcA9Qf2B/QHBwD3B/UH+AcHAPcH9gf1BwcA8gf4B/MHBwDyB/cH+AcHAPkH+gf7BwcA+Qf8B/oHBwD7B/0H/gcHAPsH+gf9BwcA/Qf/B/4HBwD9BwAI/wcHAAAI+Qf/BwcAAAj8B/kHBwDzBwEI8QcHAPMHAggBCAcA+wcCCPkHBwD7BwEIAggHAPEHAwj1BwcA8QcBCAMIBwD+BwEI+wcHAP4HAwgBCAcAAwj4B/UHBwADCAQI+AcHAP8HAwj+BwcA/wcECAMIBwAECPMH+AcHAAQIAgjzBwcA+QcECP8HBwD5BwIIBAgHAAUI8gf0BwcABQgGCPIHBwAHCPQH9gcHAAcIBQj0BwcA8gcICPcHBwDyBwYICAgHAPcHBwj2BwcA9wcICAcIBwAFCAkIBggHAAUICggJCAcA7gcKCO0HBwDuBwkICggHAO0HCwjwBwcA7QcKCAsIBwAGCAwICAgHAAYICQgMCAcA7wcJCO4HBwDvBwwICQgHAAgICwgHCAcACAgMCAsIBwDwBwwI7wcHAPAHCwgMCAcADQgOCA8IBwANCBAIDggHAA8IEQgSCAcADwgOCBEIBwATCA8IEggHABMIDQgPCAcAFAgNCBMIBwAUCBAIDQgHABAIEQgOCAcAEAgUCBEIBwAVCBYIFwgHABUIGAgWCAcAGAgZCBYIBwAYCBoIGQgHABkIGwgcCAcAGQgaCBsIBwAcCBUIFwgHABwIGwgVCAcAHQgeCB8IBwAdCCAIHggHACEIHwgiCAcAIQgdCB8IBwAjCCEIIggHACMIJAghCAcAHggkCCMIBwAeCCAIJAgHACUIFwgWCAcAJQgmCBcIBwAmCB8IHggHACYIJQgfCAcAJwgWCBkIBwAnCCUIFggHACUIIggfCAcAJQgnCCIIBwAcCCcIGQgHABwIKAgnCAcAJwgjCCIIBwAnCCgIIwgHABcIKAgcCAcAFwgmCCgIBwAoCB4IIwgHACgIJggeCAcAFQgpCBgIBwAVCCoIKQgHABgIKwgaCAcAGAgpCCsIBwAsCBUIGwgHACwIKggVCAcAKwgbCBoIBwArCCwIGwgHAC0IKQgqCAcALQguCCkIBwAuCBIIEQgHAC4ILQgSCAcALwgRCBQIBwAvCC4IEQgHADAIKggsCAcAMAgtCCoIBwAtCBMIEggHAC0IMAgTCAcALwgsCCsIBwAvCDAILAgHADAIFAgTCAcAMAgvCBQIBwAxCAUIMggHADEICggFCAcAMwgKCDEIBwAzCAsICggHAAcIMwg0CAcABwgLCDMIBwAFCDQIMggHAAUIBwg0CAcAKwg1CDYIBwArCCkINQgHAC8INgg3CAcALwgrCDYIBwA4CC8INwgHADgILggvCAcANQguCDgIBwA1CCkILggHADkIMgg6CAcAOQgxCDIIBwA7CDEIOQgHADsIMwgxCAcANAg7CDwIBwA0CDMIOwgHADIIPAg6CAcAMgg0CDwIBwA2CD0IPggHADYINQg9CAcANwg+CD8IBwA3CDYIPggHAEAINwg/CAcAQAg4CDcIBwA9CDgIQAgHAD0INQg4CAcA/AdBCPoHBwD8B0IIQQgHAPoHQwj9BwcA+gdBCEMIBwD9B0QIAAgHAP0HQwhECAcAAAhCCPwHBwAACEQIQggHAB0IRQggCAcAHQhGCEUIBwAhCEYIHQgHACEIRwhGCAcAJAhHCCEIBwAkCEgIRwgHACAISAgkCAcAIAhFCEgIBwBCCEkIQQgHAEIISghJCAcASwhKCEwIBwBLCEkISggHAE0ISQhLCAcATQhOCEkIBwBDCE8IRAgHAEMITghPCAcAUAhOCE0IBwBQCE8ITggHAEQISghCCAcARAhPCEoIBwBMCE8IUAgHAEwISghPCAcAUQhFCEYIBwBRCFIIRQgHAFMIUQhUCAcAUwhSCFEIBwBUCFUIVggHAFQIUQhVCAcAVwhHCEgIBwBXCFUIRwgHAFYIVwhYCAcAVghVCFcIBwBSCEgIRQgHAFIIVwhICAcAWAhSCFMIBwBYCFcIUggHAE4IWQhaCAcATghDCFkIBwBJCFoIWwgHAEkITghaCAcAXAhJCFsIBwBcCEEISQgHAFkIQQhcCAcAWQhDCEEIBwBdCEcIXggHAF0IRghHCAcAUQhdCF8IBwBRCEYIXQgHAFUIXwhgCAcAVQhRCF8IBwBeCFUIYAgHAF4IRwhVCAcAWghhCGIIBwBaCFkIYQgHAFsIYghjCAcAWwhaCGIIBwBkCFsIYwgHAGQIXAhbCAcAYQhcCGQIBwBhCFkIXAgHAGUIXghmCAcAZQhdCF4IBwBfCGUIZwgHAF8IXQhlCAcAYAhnCGgIBwBgCF8IZwgHAGYIYAhoCAcAZgheCGAIBwBpCGoIawgHAGkIbAhqCAcAawhtCG4IBwBrCGoIbQgHAG8IawhuCAcAbwhpCGsIBwBwCGkIbwgHAHAIbAhpCAcAbAhtCGoIBwBsCHAIbQgHAHEIcghzCAcAcQh0CHIIBwB0CHUIcggHAHQIdgh1CAcAdQh3CHgIBwB1CHYIdwgHAHgIcQhzCAcAeAh3CHEIBwB5CHoIewgHAHkIfAh6CAcAfQh7CH4IBwB9CHkIewgHAH8IfQh+CAcAfwiACH0IBwB6CIAIfwgHAHoIfAiACAcAgQhzCHIIBwCBCIIIcwgHAIIIewh6CAcAggiBCHsIBwCDCHIIdQgHAIMIgQhyCAcAgQh+CHsIBwCBCIMIfggHAHgIgwh1CAcAeAiECIMIBwCDCH8IfggHAIMIhAh/CAcAcwiECHgIBwBzCIIIhAgHAIQIegh/CAcAhAiCCHoIBwBxCIUIdAgHAHEIhgiFCAcAdAiHCHYIBwB0CIUIhwgHAIgIcQh3CAcAiAiGCHEIBwCHCHcIdggHAIcIiAh3CAcAiQiFCIYIBwCJCIoIhQgHAIoIbghtCAcAigiJCG4IBwCLCG0IcAgHAIsIightCAcAjAiGCIgIBwCMCIkIhggHAIkIbwhuCAcAiQiMCG8IBwCLCIgIhwgHAIsIjAiICAcAjAhwCG8IBwCMCIsIcAgHAI0IjgiPCAcAjQiQCI4IBwCRCI8IkggHAJEIjQiPCAcAjwiTCJIIBwCPCI4IkwgHAI4IlAiTCAcAjgiQCJQIBwCRCJAIjQgHAJEIlAiQCAcAlQiWCJcIBwCVCJgIlggHAJkImAiVCAcAmQiaCJgIBwCbCJkInAgHAJsImgiZCAcAlgicCJcIBwCWCJsInAgHAJ0IngifCAcAnQigCJ4IBwCfCKEIoggHAJ8IngihCAcAoQijCKIIBwChCKQIowgHAKQInQijCAcApAigCJ0IBwCXCKUIlQgHAJcIpgilCAcAnwimCJ0IBwCfCKUIpggHAJUIpwiZCAcAlQilCKcIBwCiCKUInwgHAKIIpwilCAcApwicCJkIBwCnCKgInAgHAKMIpwiiCAcAowioCKcIBwCoCJcInAgHAKgIpgiXCAcAnQioCKMIBwCdCKYIqAgHAKkIlgiYCAcAqQiqCJYIBwCrCJgImggHAKsIqQiYCAcAlgisCJsIBwCWCKoIrAgHAJsIqwiaCAcAmwisCKsIBwCpCK0IqggHAKkIrgitCAcAkgiuCJEIBwCSCK0IrggHAJEIrwiUCAcAkQiuCK8IBwCqCLAIrAgHAKoIrQiwCAcAkwitCJIIBwCTCLAIrQgHAKwIrwirCAcArAiwCK8IBwCUCLAIkwgHAJQIrwiwCAcAhQixCLIIBwCFCIoIsQgHAIoIswixCAcAigiLCLMIBwCzCIcItAgHALMIiwiHCAcAtAiFCLIIBwC0CIcIhQgHALUIqwi2CAcAtQipCKsIBwC2CK8ItwgHALYIqwivCAcArwi4CLcIBwCvCK4IuAgHAK4ItQi4CAcArgipCLUIBwCyCLkIuggHALIIsQi5CAcAsQi7CLkIBwCxCLMIuwgHALsItAi8CAcAuwizCLQIBwC8CLIIuggHALwItAiyCAcAvQi2CL4IBwC9CLUItggHAL4Itwi/CAcAvgi2CLcIBwC3CMAIvwgHALcIuAjACAcAuAi9CMAIBwC4CLUIvQgHAMEIfAh5CAcAwQjCCHwIBwDDCHkIfQgHAMMIwQh5CAcAxAh9CIAIBwDECMMIfQgHAMIIgAh8CAcAwgjECIAIBwDFCJ4IoAgHAMUIxgieCAcAxgihCJ4IBwDGCMcIoQgHAMcIpAihCAcAxwjICKQIBwDICKAIpAgHAMgIxQigCAcAyQjCCMEIBwDJCMoIwggHAMoISwhMCAcAygjJCEsIBwDJCE0ISwgHAMkIywhNCAcAzAjDCMQIBwDMCMsIwwgHAMsIUAhNCAcAywjMCFAIBwDKCMQIwggHAMoIzAjECAcAzAhMCFAIBwDMCMoITAgHAMUIzQjGCAcAxQjOCM0IBwDNCFMIVAgHAM0IzghTCAcAzwhUCFYIBwDPCM0IVAgHAMcI0AjICAcAxwjPCNAIBwDQCFYIWAgHANAIzwhWCAcAyAjOCMUIBwDICNAIzggHAM4IWAhTCAcAzgjQCFgIBwDRCMsI0ggHANEIwwjLCAcA0gjJCNMIBwDSCMsIyQgHAMkI1AjTCAcAyQjBCNQIBwDBCNEI1AgHAMEIwwjRCAcAxwjVCNYIBwDHCMYI1QgHANUIzQjXCAcA1QjGCM0IBwDXCM8I2AgHANcIzQjPCAcAzwjWCNgIBwDPCMcI1ggHANkI0gjaCAcA2QjRCNIIBwDaCNMI2wgHANoI0gjTCAcA0wjcCNsIBwDTCNQI3AgHANQI2QjcCAcA1AjRCNkIBwDWCN0I3ggHANYI1QjdCAcA3QjXCN8IBwDdCNUI1wgHAN8I2AjgCAcA3wjXCNgIBwDYCN4I4AgHANgI1gjeCAcA4QjiCOMIBwDhCOQI4ggHAE4D4whNAwcATgPhCOMIBwDjCFIDTQMHAOMI4ghSAwcA4ghQA1IDBwDiCOQIUAMHAE4D5AjhCAcATgNQA+QIBwA9A0QDOwMHAD0DRQNEAwcAQANFAz0DBwBAA0gDRQMHAEoDQANBAwcASgNIA0ADBwBEA0EDOwMHAEQDSgNBAwcAOQOwAa0BBwA5AzoDsAEHAKMBUQFdAQcAowGkAVEBBwADAqQBowEHAAMCAQKkAQcAMgIBAgMCBwAyAjACAQIHAD0CDAIOAgcAPQI7AgwCBwCRAc0BlQEHAJEBlAHNAQcAlQHQAZoBBwCVAc0B0AEHAA4CmAGaAQcADgIMApgBBwDlCOYI5wgHAOUI6AjmCAcA6QjqCOsIBwDpCOwI6ggHAOsI7QjuCAcA6wjqCO0IBwDuCO8I8AgHAO4I7QjvCAcA8AjxCPIIBwDwCO8I8QgHAOUI8wj0CAcA5QjnCPMIBwDqCPUI9ggHAOoI7Aj1CAcA7Qj2CPcIBwDtCOoI9ggHAO8I9wj4CAcA7wjtCPcIBwDxCPgI+QgHAPEI7wj4CAcA6Aj6CPsIBwDoCOUI+ggHAOkI+gjsCAcA6Qj7CPoIBwDsCPwI9QgHAOwI+gj8CAcA+gj0CPwIBwD6COUI9AgHAP0I/gj/CAcA/QgACf4IBwD/CAEJAgkHAP8I/ggBCQcAAwkECQUJBwADCQYJBAkHAP4IBwkICQcA/ggACQcJBwABCQgJCQkHAAEJ/ggICQcACgkLCQwJBwAKCQ0JCwkHAA4JCQkPCQcADgkBCQkJBwANCQ8JCwkHAA0JDgkPCQcADgkCCQEJBwAOCRAJAgkHAAYJEQkSCQcABgkDCREJBwATCRQJFQkHABMJFgkUCQcAFgkXCRQJBwAWCRgJFwkHABcJGQkaCQcAFwkYCRkJBwAaCQoJGwkHABoJGQkKCQcAHAkMCR0JBwAcCQoJDAkHAOgIHQnmCAcA6AgcCR0JBwAcCRsJCgkHABwJHgkbCQcA6AgeCRwJBwDoCPsIHgkHAB4JGgkbCQcAHgkfCRoJBwD7CB8JHgkHAPsI6QgfCQcAHwkXCRoJBwAfCSAJFwkHAOkIIAkfCQcA6QjrCCAJBwAgCRQJFwkHACAJIQkUCQcA6wghCSAJBwDrCO4IIQkHACEJFQkUCQcAIQkiCRUJBwDuCCIJIQkHAO4I8AgiCQcAIwkkCSUJBwAjCSYJJAkHACYJ8AgkCQcAJgkiCfAIBwAnCfAI8ggHACcJJAnwCAcA8ggoCSkJBwDyCPEIKAkHACUJJwkqCQcAJQkkCScJBwApCScJ8ggHACkJKwknCQcAIwkiCSYJBwAjCSwJIgkHACIJEwkVCQcAIgksCRMJBwApCS0JLgkHACkJKAktCQcA+QgoCfEIBwD5CC8JKAkHACkJMAkrCQcAKQkuCTAJBwD5CDEJLwkHAPkIMgkxCQcA+AgyCfkIBwD4CDMJMgkHAPcIMwn4CAcA9wg0CTMJBwD2CDQJ9wgHAPYINQk0CQcA9Qg1CfYIBwD1CDYJNQkHAPwINgn1CAcA/Ag3CTYJBwD0CDcJ/AgHAPQIOAk3CQcA8wg4CfQIBwDzCDkJOAkHAOYIOgnnCAcA5gg7CToJBwAdCTsJ5ggHAB0JPAk7CQcADAk8CR0JBwAMCT0JPAkHAAsJPQkMCQcACwk+CT0JBwAPCT4JCwkHAA8JPwk+CQcACQk/CQ8JBwAJCUAJPwkHAAgJQAkJCQcACAlBCUAJBwAHCUEJCAkHAAcJQglBCQcAMQkoCS8JBwAxCS0JKAkHAEMJRAkZCQcAQwlFCUQJBwBGCUUJQwkHAEYJRwlFCQcARQkQCUQJBwBFCUgJEAkHAEcJSAlFCQcARwlJCUgJBwBICQIJEAkHAEgJSgkCCQcASQlKCUgJBwBJCUsJSgkHAEoJ/wgCCQcASglMCf8IBwBLCUwJSgkHAEsJTQlMCQcATAn9CP8IBwBMCU4J/QgHAE0JTglMCQcATQlPCU4JBwBQCRkJGAkHAFAJQwkZCQcAUQlDCVAJBwBRCUYJQwkHAFIJGAkWCQcAUglQCRgJBwBTCVAJUgkHAFMJUQlQCQcAVAkWCRMJBwBUCVIJFgkHAFUJUglUCQcAVQlTCVIJBwBWCRMJLAkHAFYJVAkTCQcAVwlUCVYJBwBXCVUJVAkHAFgJLAkjCQcAWAlWCSwJBwBZCVYJWAkHAFkJVwlWCQcAWgkjCSUJBwBaCVgJIwkHAFsJWAlaCQcAWwlZCVgJBwBcCSUJKgkHAFwJWgklCQcAXQlaCVwJBwBdCVsJWgkHAF4JKglfCQcAXglcCSoJBwBgCVwJXgkHAGAJXQlcCQcAYQlfCWIJBwBhCV4JXwkHAGMJXglhCQcAYwlgCV4JBwBPCWQJZQkHAE8JTQlkCQcASwlkCU0JBwBLCWYJZAkHAEkJZglLCQcASQlnCWYJBwBHCWcJSQkHAEcJaAlnCQcARgloCUcJBwBGCWkJaAkHAFcJaglVCQcAVwlrCWoJBwBZCWsJVwkHAFkJbAlrCQcAWwlsCVkJBwBbCW0JbAkHAF0JbQlbCQcAXQluCW0JBwBgCW4JXQkHAGAJbwluCQcAYwlvCWAJBwBjCXAJbwkHAFEJaQlGCQcAUQlxCWkJBwBTCXEJUQkHAFMJcglxCQcAVQlyCVMJBwBVCWoJcgkHAHMJbAltCQcAcwl0CWwJBwB0CWsJbAkHAHQJdQlrCQcAdQlqCWsJBwB1CXYJagkHAHYJcglqCQcAdgl3CXIJBwB3CXEJcgkHAHcJeAlxCQcAeAlpCXEJBwB4CXkJaQkHAHkJaAlpCQcAeQl6CWgJBwB6CWcJaAkHAHoJewlnCQcAewlmCWcJBwB7CXwJZgkHAHwJZAlmCQcAfAl9CWQJBwB9CWUJZAkHAH0JfgllCQcAfwltCW4JBwB/CXMJbQkHAIAJbglvCQcAgAl/CW4JBwCBCW8JcAkHAIEJgAlvCQcAfQmCCX4JBwB9CYMJggkHAHwJgwl9CQcAfAmECYMJBwB+CYUJZQkHAH4JggmFCQcAZQmGCU8JBwBlCYUJhgkHAE8JhwlOCQcATwmGCYcJBwBOCYgJ/QgHAE4JhwmICQcA/QiJCQAJBwD9CIgJiQkHAAAJigkHCQcAAAmJCYoJBwAHCYsJQgkHAAcJigmLCQcAQgmMCUEJBwBCCYsJjAkHAEEJjQlACQcAQQmMCY0JBwBACY4JPwkHAEAJjQmOCQcAPwmPCT4JBwA/CY4JjwkHAD4JkAk9CQcAPgmPCZAJBwA9CZEJPAkHAD0JkAmRCQcAPAmSCTsJBwA8CZEJkgkHADsJkwk6CQcAOwmSCZMJBwA5CZQJOAkHADkJlQmUCQcAOAmWCTcJBwA4CZQJlgkHADcJlwk2CQcANwmWCZcJBwA2CZgJNQkHADYJlwmYCQcANQmZCTQJBwA1CZgJmQkHADQJmgkzCQcANAmZCZoJBwAzCZsJMgkHADMJmgmbCQcAMgmcCTEJBwAyCZsJnAkHADEJnQktCQcAMQmcCZ0JBwAtCZ4JLgkHAC0JnQmeCQcAMAmfCWIJBwAwCaAJnwkHAGIJoQlhCQcAYgmfCaEJBwBhCaIJYwkHAGEJoQmiCQcAYwmjCXAJBwBjCaIJowkHAHAJpAmBCQcAcAmjCaQJBwCBCaUJgAkHAIEJpAmlCQcAgAmmCX8JBwCACaUJpgkHAH8JpwlzCQcAfwmmCacJBwBzCagJdAkHAHMJpwmoCQcAdAmpCXUJBwB0CagJqQkHAHUJqgl2CQcAdQmpCaoJBwB2CasJdwkHAHYJqgmrCQcAdwmsCXgJBwB3CasJrAkHAHgJrQl5CQcAeAmsCa0JBwB5Ca4JegkHAHkJrQmuCQcAegmvCXsJBwB6Ca4JrwkHAHsJhAl8CQcAewmvCYQJBwCDCbAJggkHAIMJsQmwCQcAhAmxCYMJBwCECbIJsQkHAIIJswmFCQcAggmwCbMJBwCvCbIJhAkHAK8JtAmyCQcAhQm1CYYJBwCFCbMJtQkHAIYJtgmHCQcAhgm1CbYJBwCHCbcJiAkHAIcJtgm3CQcAiAm4CYkJBwCICbcJuAkHAIkJuQmKCQcAiQm4CbkJBwCKCboJiwkHAIoJuQm6CQcAiwm7CYwJBwCLCboJuwkHAIwJvAmNCQcAjAm7CbwJBwCNCb0JjgkHAI0JvAm9CQcAjgm+CY8JBwCOCb0JvgkHAI8JvwmQCQcAjwm+Cb8JBwCQCcAJkQkHAJAJvwnACQcAkQnBCZIJBwCRCcAJwQkHAJIJwgmTCQcAkgnBCcIJBwCVCcMJlAkHAJUJxAnDCQcAlAnFCZYJBwCUCcMJxQkHAJYJxgmXCQcAlgnFCcYJBwCXCccJmAkHAJcJxgnHCQcAmAnICZkJBwCYCccJyAkHAJkJyQmaCQcAmQnICckJBwCaCcoJmwkHAJoJyQnKCQcAmwnLCZwJBwCbCcoJywkHAJwJzAmdCQcAnAnLCcwJBwCdCc0JngkHAJ0JzAnNCQcAoAnOCZ8JBwCgCc8JzgkHAJ8J0AmhCQcAnwnOCdAJBwChCdEJogkHAKEJ0AnRCQcAognSCaMJBwCiCdEJ0gkHAKMJ0wmkCQcAownSCdMJBwCkCdQJpQkHAKQJ0wnUCQcApQnVCaYJBwClCdQJ1QkHAKYJ1gmnCQcApgnVCdYJBwCnCdcJqAkHAKcJ1gnXCQcAqAnYCakJBwCoCdcJ2AkHAKkJ2QmqCQcAqQnYCdkJBwCqCdoJqwkHAKoJ2QnaCQcAqwnbCawJBwCrCdoJ2wkHAKwJ3AmtCQcArAnbCdwJBwCtCd0JrgkHAK0J3AndCQcArgm0Ca8JBwCuCd0JtAkHAN4JDQkKCQcA3gnfCQ0JBwAECd8J3gkHAAQJBgnfCQcA3wkOCQ0JBwDfCeAJDgkHAAYJ4AnfCQcABgkSCeAJBwDgCRAJDgkHAOAJ4QkQCQcAEgnhCeAJBwASCREJ4QkHAOEJRAkQCQcA4QniCUQJBwARCeIJ4QkHABEJAwniCQcA4gkZCUQJBwDiCeMJGQkHAAMJ4wniCQcAAwkFCeMJBwDjCQoJGQkHAOMJ3gkKCQcABQneCeMJBwAFCQQJ3gkHAOcIOQnzCAcA5wg6CTkJBwA6CZUJOQkHADoJkwmVCQcAkwnECZUJBwCTCcIJxAkHAJ4JzwmgCQcAngnNCc8JBwBfCScJKwkHAF8JKgknCQcAYgkrCTAJBwBiCV8JKwkHAC4JoAkwCQcALgmeCaAJBwAwQfMBAAByYXY0LWJsYWNrAPAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgB/AIAAgQCCAIMAhACFAIYAhwCIAIkAigCLAIwAjQCOAI8AkACRAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8AMEH6GAAAcmF2NC1ib2R5AHQM8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AQACAQICAgMCBAIFAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wIAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPDA8QDxQPGA8cDyAPJA8oDywPMA80DzgPPA9AD0QPSA9MD1APVA9YD1wPYA9kD2gPbA9wD3QPeA98D4APhA+ID4wPkA+UD5gPnA+gD6QPqA+sD7APtA+4D7wPwA/ED8gPzA/QD9QP2A/cD+AP5A/oD+wP8A/0D/gP/AwAEAQQCBAMEBAQFBAYEBwQIBAkECgQLBAwEDQQOBA8EEAQRBBIEEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQpBCoEKwQsBC0ELgQvBDAEMQQyBDMENAQ1BDYENwQ4BDkEOgQ7BDwEPQQ+BD8EQARBBEIEQwREBEUERgRHBEgESQRKBEsETARNBE4ETwRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEmgSbBJwEnQSeBJ8EoAShBKIEowSkBKUEpgSnBKgEqQSqBKsErAStBK4ErwSwBLEEsgSzBLQEtQS2BLcEuAS5BLoEuwS8BL0EvgS/BMAEwQTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBOEE4gTjBOQE5QTmBOcE6ATpBOoE6wTsBO0E7gTvBPAE8QTyBPME9AT1BPYE9wT4BPkE+gT7BPwE/QT+BP8EAAUBBQIFAwUEBQUFBgUHBQgFCQUKBQsFDAUNBQ4FDwUQBREFEgUTBRQFFQUWBRcFGAUZBRoFGwUcBR0FHgUfBSAFIQUiBSMFJAUlBSYFJwUoBSkFKgUrBSwFLQUuBS8FMAUxBTIFMwU0BTUFNgU3BTgFOQU6BTsFPAU9BT4FPwVABUEFQgVDBUQFRQVGBUcFSAVJBUoFSwVMBU0FTgVPBVAFUQVSBVMFVAVVBVYFVwVYBVkFWgVbBVwFXQVeBV8FYAVhBWIFYwVkBWUFZgVnBWgFaQUUBxUHFgcXBxgHGQcaBxsHHAcdBx4HHwcgByEHIgcjByQHJQcmBycHKAcpByoHKwcsBy0HLgcvBzAHMQcyBzMHNAc1BzYHNwc4BzkHOgc7BzwHPQc+Bz8HQAdBB0IHQwdEB0UHRgdHB0gHSQdKB0sHTAdNB04HTwdQB1EHUgdTB1QHVQdWB1cHWAdZB1oHWwdcB10HXgdfB2AHYQdiB2MHZAdlB2YHZwdoB2kHagdrB2wHbQduB28HcAdxB3IHcwd0B3UHdgd3B3gHeQd6B3sHfAd9B34HfweAB4EHggeDB4QHhQeGB4cHiAeJB4oHiweMB40HjgePB5AHkQeSB5MHlAeVB5YHlwewB7EHsgezB7QHtQe2B7cHuAe5B7oHuwe8B70Hvge/B8AHwQfCB8MHxAfFB8YHxwfIB8kHygfLB8wHzQfOB88H0AfRB9IH0wfUB9UH1gfXB9gH2QfaB9sH3AfdB94H3wfgB+EH4gfjB+QH5QfmB+cH6AfpB+oH6wfsB+0H7gfvB/AH8QfyB/MH9Af1B/YH9wf4B/kH+gf7B/wH/Qf+B/8HAAgBCAIIAwgECAUIBggHCAgICQgKCAsIDAgNCA4IDwgQCBEIEggTCBQIFQgWCBcIGAgZCBoIGwgcCB0IHggfCCAIIQgiCCMIJAglCCYIJwgoCCkIKggrCCwILQguCC8IMAgxCDIIMwg0CDUINgg3CDgIOQg6CDsIPAg9CD4IPwhACEEIQghDCEQIRQhGCEcISAhJCEoISwhMCE0ITghPCFAIUQhSCFMIVAhVCFYIVwhYCFkIWghbCFwIXQheCF8IYAhhCGIIYwhkCGUIZghnCGgIaQhqCGsIbAhtCG4IbwhwCHEIcghzCHQIdQh2CHcIeAh5CHoIewh8CH0Ifgh/CIAIgQiCCIMIhAiFCIYIhwiICIkIigiLCIwIjQiOCI8IkAiRCJIIkwiUCJUIlgiXCJgImQiaCJsInAidCJ4InwigCKEIogijCKQIpQimCKcIqAipCKoIqwisCK0IrgivCLAIsQiyCLMItAi1CLYItwi4CLkIugi7CLwIvQi+CL8IwAjBCMIIwwjECMUIxgjHCMgIyQjKCMsIzAjNCM4IzwjQCNEI0gjTCNQI1QjWCNcI2AjZCNoI2wjcCN0I3gjfCOAI4QjiCOMI5AjlCOYI5wjoCOkI6gjrCOwI7QjuCO8I8AjxCPII8wj0CPUI9gj3CPgI+Qj6CPsI/Aj9CP4I/wgACQEJAgkDCQQJBQkGCQcJCAkJCQoJCwkMCQ0JDgkPCRAJEQkSCRMJFAkVCRYJFwkYCRkJGgkbCRwJHQkeCR8JIAkhCSIJIwkkCSUJJgknCSgJKQkqCSsJLAktCS4JLwkwCTEJMgkzCTQJNQk2CTcJOAk5CToJOwk8CT0JPgk/CUAJQQlCCUMJRAlFCUYJRwlICUkJSglLCUwJTQlOCU8JUAlRCVIJUwlUCVUJVglXCVgJWQlaCVsJXAldCV4JXwlgCWEJYgljCWQJZQlmCWcJaAlpCWoJawlsCW0JbglvCXAJcQlyCXMJdAl1CXYJdwl4CXkJegl7CXwJfQl+CX8JgAmBCYIJgwmECYUJhgmHCYgJiQmKCYsJjAmNCY4JjwmQCZEJkgmTCZQJlQmWCZcJmAmZCZoJmwmcCZ0JngmfCaAJoQmiCaMJpAmlCaYJpwmoCakJqgmrCawJrQmuCa8JsAmxCbIJswm0CbUJtgm3CbgJuQm6CbsJvAm9Cb4JvwnACcEJwgnDCcQJxQnGCccJyAnJCcoJywnMCc0JzgnPCdAJ0QnSCdMJ1AnVCdYJ1wnYCdkJ2gnbCdwJ3QneCd8J4AnhCeIJ4wnkCeUJ5gnnCegJ6QnqCesJ7AntCe4J7wnwCfEJ8gnzCfQJ9Qn2CfcJ+An5CfoJ+wn8Cf0J/gn/CQAKAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUKFgoXChgKGQoaChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoyCjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KQApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4KTwpQClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpfCmAKYQpiCmMKZAplCmYKZwpoCmkKagprCmwKbQpuCm8KcApxCnIKcwp0CnUKdgp3CngKeQp6CnsKfAp9Cn4KfwqACoEKggqDCoQKhQqGCocKiAqJCooKiwqMCo0KjgqPCpAKkQqSCpMKlAqVCpYKlwqYCpkKmgqbCpwKnQqeCp8KoAqhCqIKowqkCqUKpgqnCqgKqQqqCqsKrAqtCq4KrwqwCrEKsgqzCrQKtQq2CrcKuAq5CroKuwq8Cr0Kvgq/CsAKwQrCCsMKxArFCsYKxwrICskKygrLCswKzQrOCs8K0ArRCtIK0wrUCtUK1grXCtgK2QraCtsK3ArdCt4K3wrgCuEK4grjCuQK5QrmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4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MgYzBjQGNQY2BjcGOAY5BjoGOwY8Bj0GPgY/BkAGQQZCBkMGRAZFBkYGRwZIBkkGSgZLBkwGTQZOBk8GUAZRBlIGUwZUBlUGVgZXBlgGWQZaBlsGXAZdBl4GXwZgBmEGYgZjBmQGZQZmBmcGaAZpBmoGawZsBm0GbgZvBnAGcQZyBnMGdAZ1BnYGdwZ4BnkGegZ7BnwGfQZ+Bn8GgAaBBoIGgwaEBoUGhgaHBogGiQaKBosGjAaNBo4GjwaQBpEGkgaTBpQGlQaWBpcGmAaZBpoGmwacBp0GngafBqAGoQaiBqMGpAalBqYGpwaoBqkGqgarBqwGrQauBq8GsAaxBrIGswa0BrUGtga3BrgGuQa6BrsGvAa9Br4GvwbABsEGwgbDBsQGxQbGBscGyAbJBsoGywbMBs0GzgbPBtAG0QbSBtMG1AbVBtYG1wbYBtkG2gbbBtwG3QbeBt8G4AbhBuIG4wbkBuUG5gbnBugG6QbqBusG7AbtBu4G7wbwBvEG8gbzBvQG9Qb2BvcG+Ab5BvoG+wb8Bv0G/gb/BgAHAQcCBwMHBAcFBwYHBwcIBwkHCgcLBwwHDQcOBw8HEAcRBxIHEweYB5kHmgebB5wHnQeeB58HoAehB6IHowekB6UHpgenB6gHqQeqB6sHrAetB64HrwfUDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsO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AAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAQOafAQBUb3lvdGFfUkE3AABB1Z8BABBBrGoAAOMI5DD9QSWPX8K798fBvHEJ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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA9AAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAIABAAFAAcAAgABAAQABwAFAAYABwAHAAUABAAGAAcABwAIAAkABwAHAAYACAAHAAkACgALAAcACQAIAAoABwALAAwADQAHAAsACgAMAAcADQAOAA8ABwANAAwADgAHAA8AEAARAAcADwAOABAABwARABIAEwAHABEAEAASAAcAEwAUABUABwATABIAFAAHABUAFgAXAAcAFQAUABYABwAXABgAGQAHABcAFgAYAAcAGQAaABsABwAZABgAGgAHABsAHAAdAAcAGwAaABwABwAcAB4AHQAHABwAHwAeAAcAHwAgAB4ABwAfACEAIAAHACEAIgAgAAcAIQAjACIABwAjACQAIgAHACMAJQAkAAcAJQAmACQABwAlACcAJgAHACcAKAAmAAcAJwApACgABwApACoAKAAHACkAKwAqAAcAKwAsACoABwArAC0ALAAHAC0ALgAsAAcALQAvAC4ABwAvADAALgAHAC8AMQAwAAcAMQAyADAABwAxADMAMgAHADMANAAyAAcAMwA1ADQABwA1ADYANAAHADUANwA2AAcANwA4ADYABwA3ADkAOAAHADkAOgA4AAcAOQA7ADoABwA7ADwAOgAHADsAPQA8AAcAPQA+ADwABwA9AD8APgAHAD8AQAA+AAcAPwBBAEAABwBBAEIAQAAHAEEAQwBCAAcAQwBEAEIABwBDAEUARAAHAEUARgBEAAcARQBHAEYABwBHAEgARgAHAEcASQBIAAcASQBKAEgABwBJAEsASgAHAEsATABKAAcASwBNAEwABwBNAE4ATAAHAE0ATwBOAAcATgBQAFEABwBOAE8AUAAHAFEAUgBTAAcAUQBQAFIABwBTAFQAVQAHAFMAUgBUAAcAVQBWAFcABwBVAFQAVgAHAFcAWABZAAcAVwBWAFgABwBZAFoAWwAHAFkAWABaAAcAWwBcAF0ABwBbAFoAXAAHAF0AXgBfAAcAXQBcAF4ABwBfAGAAYQAHAF8AXgBgAAcAYQBiAGMABwBhAGAAYgAHAGMAAwAAAAcAYwBiAAMABwADAGQAAQAHAAMAZQBkAAcAAQBmAAQABwABAGQAZgAHAAQAZwAGAAcABABmAGcABwAGAGgACAAHAAYAZwBoAAcACABpAAoABwAIAGgAaQAHAAoAagAMAAcACgBpAGoABwAMAGsADgAHAAwAagBrAAcADgBsABAABwAOAGsAbAAHABAAbQASAAcAEABsAG0ABwASAG4AFAAHABIAbQBuAAcAFABvABYABwAUAG4AbwAHABYAcAAYAAcAFgBvAHAABwAYAHEAGgAHABgAcABxAAcAGgByABwABwAaAHEAcgAHAHIAHwAcAAcAcgBzAB8ABwBzACEAHwAHAHMAdAAhAAcAdAAjACEABwB0AHUAIwAHAHUAJQAjAAcAdQB2ACUABwB2ACcAJQAHAHYAdwAnAAcAdwApACcABwB3AHgAKQAHAHgAKwApAAcAeAB5ACsABwB5AC0AKwAHAHkAegAtAAcAegAvAC0ABwB6AHsALwAHAHsAMQAvAAcAewB8ADEABwB8ADMAMQAHAHwAfQAzAAcAfQA1ADMABwB9AH4ANQAHAH4ANwA1AAcAfgB/ADcABwB/ADkANwAHAH8AgAA5AAcAgAA7ADkABwCAAIEAOwAHAIEAPQA7AAcAgQCCAD0ABwCCAD8APQAHAIIAgwA/AAcAgwBBAD8ABwCDAIQAQQAHAIQAQwBBAAcAhACFAEMABwCFAEUAQwAHAIUAhgBFAAcAhgBHAEUABwCGAIcARwAHAIcASQBHAAcAhwCIAEkABwCIAEsASQAHAIgAiQBLAAcAiQBNAEsABwCJAIoATQAHAIoATwBNAAcAigCLAE8ABwBPAIwAUAAHAE8AiwCMAAcAUACNAFIABwBQAIwAjQAHAFIAjgBUAAcAUgCNAI4ABwBUAI8AVgAHAFQAjgCPAAcAVgCQAFgABwBWAI8AkAAHAFgAkQBaAAcAWACQAJEABwBaAJIAXAAHAFoAkQCSAAcAXACTAF4ABwBcAJIAkwAHAF4AlABgAAcAXgCTAJQABwBgAJUAYgAHAGAAlACVAAcAYgBlAAMABwBiAJUAZQAHAGQAlgCXAAcAZABlAJYABwBkAJgAZgAHAGQAlwCYAAcAZgCZAGcABwBmAJgAmQAHAGcAmgBoAAcAZwCZAJoABwBoAJsAaQAHAGgAmgCbAAcAaQCcAGoABwBpAJsAnAAHAGoAnQBrAAcAagCcAJ0ABwBrAJ4AbAAHAGsAnQCeAAcAbACfAG0ABwBsAJ4AnwAHAG0AoABuAAcAbQCfAKAABwBuAKEAbwAHAG4AoAChAAcAbwCiAHAABwBvAKEAogAHAHAAowBxAAcAcACiAKMABwBxAKQAcgAHAHEAowCkAAcApABzAHIABwCkAKUAcwAHAKUAdABzAAcApQCmAHQABwCmAHUAdAAHAKYApwB1AAcApwB2AHUABwCnAKgAdgAHAKgAdwB2AAcAqACpAHcABwCpAHgAdwAHAKkAqgB4AAcAqgB5AHgABwCqAKsAeQAHAKsAegB5AAcAqwCsAHoABwCsAHsAegAHAKwArQB7AAcArQB8AHsABwCtAK4AfAAHAK4AfQB8AAcArgCvAH0ABwCvAH4AfQAHAK8AsAB+AAcAsAB/AH4ABwCwALEAfwAHALIAfwCxAAcAsgCAAH8ABwCzAIAAsgAHALMAgQCAAAcAtACBALMABwC0AIIAgQAHALUAggC0AAcAtQCDAIIABwC2AIMAtQAHALYAhACDAAcAtwCEALYABwC3AIUAhAAHALgAhQC3AAcAuACGAIUABwC5AIYAuAAHALkAhwCGAAcAugCHALkABwC6AIgAhwAHALsAiAC6AAcAuwCJAIgABwC8AIkAuwAHALwAigCJAAcAvQCKALwABwC9AIsAigAHAIwAvQC+AAcAjACLAL0ABwCNAL4AvwAHAI0AjAC+AAcAjgC/AMAABwCOAI0AvwAHAI8AwADBAAcAjwCOAMAABwCQAMEAwgAHAJAAjwDBAAcAkQDCAMMABwCRAJAAwgAHAJIAwwDEAAcAkgCRAMMABwCTAMQAxQAHAJMAkgDEAAcAlADFAMYABwCUAJMAxQAHAJUAxgDHAAcAlQCUAMYABwBlAMcAlgAHAGUAlQDHAAcAxADIAMUABwDEAMkAyAAHAMgAxgDFAAcAyADKAMYABwDKAMcAxgAHAMoAywDHAAcAzACYAJcABwDMAM0AmAAHAM0AmQCYAAcAzQDOAJkABwDOAJoAmQAHAM4AzwCaAAcA0ACdAJwABwDQANEAnQAHANEAngCdAAcA0QDSAJ4ABwDSAJ8AngAHANIA0wCfAAcA1AChANUABwDUAKIAoQAHANYAogDUAAcA1gCjAKIABwDXAKMA1gAHANcApACjAAcA2ACmANkABwDYAKcApgAHANoApwDYAAcA2gCoAKcABwDbAKgA2gAHANsAqQCoAAcA3ACrAN0ABwDcAKwAqwAHAK0A3ADeAAcArQCsANwABwCuAN4A3wAHAK4ArQDeAAcAsQDgAOEABwCxALAA4AAHALIA4QDiAAcAsgCxAOEABwCzAOIA4wAHALMAsgDiAAcAtgDkAOUABwC2ALUA5AAHALcA5QDmAAcAtwC2AOUABwC4AOYA5wAHALgAtwDmAAcAugDoALsABwC6AOkA6AAHALsA6gC8AAcAuwDoAOoABwC8AOsAvQAHALwA6gDrAAcAvwDsAMAABwC/AO0A7AAHAMAA7gDBAAcAwADsAO4ABwDBAO8AwgAHAMEA7gDvAAcAyQDwAMgABwDJAPEA8AAHAPAAygDIAAcA8ADyAMoABwDyAMsAygAHAPIA8wDLAAcA9ADNAMwABwD0APUAzQAHAPUAzgDNAAcA9QD2AM4ABwD2AM8AzgAHAPYA9wDPAAcA+ADRANAABwD4APkA0QAHAPkA0gDRAAcA+QD6ANIABwD6ANMA0gAHAPoA+wDTAAcA/ADVAP0ABwD8ANQA1QAHAP4A1AD8AAcA/gDWANQABwD/ANYA/gAHAP8A1wDWAAcAAAHZAAEBBwAAAdgA2QAHAAIB2AAAAQcAAgHaANgABwADAdoAAgEHAAMB2wDaAAcABAHdAAUBBwAEAdwA3QAHAN4ABAEGAQcA3gDcAAQBBwDfAAYBBwEHAN8A3gAGAQcA4QAIAQkBBwDhAOAACAEHAOIACQEKAQcA4gDhAAkBBwDjAAoBCwEHAOMA4gAKAQcA5QAMAQ0BBwDlAOQADAEHAOYADQEOAQcA5gDlAA0BBwDnAA4BDwEHAOcA5gAOAQcA6QAQAegABwDpABEBEAEHAOgAEgHqAAcA6AAQARIBBwDqABMB6wAHAOoAEgETAQcA7QAUAewABwDtABUBFAEHAOwAFgHuAAcA7AAUARYBBwDuABcB7wAHAO4AFgEXAQcAGAEZAfEABwAYARoBGQEHAPEAGwHwAAcA8QAZARsBBwAbAfIA8AAHABsBHAHyAAcAHAHzAPIABwAcAR0B8wAHAB0BHgHzAAcAHQEfAR4BBwAfAfQAHgEHAB8BIAH0AAcAIAH1APQABwAgASEB9QAHACEB9gD1AAcAIQEiAfYABwAiAfcA9gAHACIBIwH3AAcAIwEkAfcABwAjASUBJAEHACUB+AAkAQcAJQEmAfgABwAmAfkA+AAHACYBJwH5AAcAJwH6APkABwAnASgB+gAHACgB+wD6AAcAKAEpAfsABwApASoB+wAHACkBKwEqAQcALAEqASsBBwAsAf0AKgEHAC0B/QAsAQcALQH8AP0ABwAuAfwALQEHAC4B/gD8AAcALwH+AC4BBwAvAf8A/gAHADAB/wAvAQcAMAExAf8ABwAyATEBMAEHADIBAQExAQcAMwEBATIBBwAzAQABAQEHADQBAAEzAQcANAECAQABBwA1AQIBNAEHADUBAwECAQcANgEDATUBBwA2ATcBAwEHADgBNwE2AQcAOAEFATcBBwA5AQUBOAEHADkBBAEFAQcABgE5AToBBwAGAQQBOQEHAAcBOgE7AQcABwEGAToBBwA8ATsBPQEHADwBBwE7AQcACAE9AT4BBwAIATwBPQEHAAkBPgE/AQcACQEIAT4BBwAKAT8BQAEHAAoBCQE/AQcACwFAAUEBBwALAQoBQAEHAEIBQQFDAQcAQgELAUEBBwAMAUMBRAEHAAwBQgFDAQcADQFEAUUBBwANAQwBRAEHAA4BRQFGAQcADgENAUUBBwAPAUYBRwEHAA8BDgFGAQcADwFIAUkBBwAPAUcBSAEHAEkBSgERAQcASQFIAUoBBwARAUsBEAEHABEBSgFLAQcAEAFMARIBBwAQAUsBTAEHABIBTQETAQcAEgFMAU0BBwATAU4BTwEHABMBTQFOAQcATwFQARUBBwBPAU4BUAEHABUBUQEUAQcAFQFQAVEBBwAUAVIBFgEHABQBUQFSAQcAFgFTARcBBwAWAVIBUwEHABcBGgEYAQcAFwFTARoBBwAZAVQBVQEHABkBGgFUAQcAGwFVAVYBBwAbARkBVQEHAFcBGwFWAQcAVwEcARsBBwBYARwBVwEHAFgBHQEcAQcAWQEdAVgBBwBZAR8BHQEHAFoBHwFZAQcAWgEgAR8BBwBbASABWgEHAFsBIQEgAQcAXAEhAVsBBwBcASIBIQEHAF0BIgFcAQcAXQEjASIBBwBeASMBXQEHAF4BJQEjAQcAXwElAV4BBwBfASYBJQEHAGABJgFfAQcAYAEnASYBBwBhAScBYAEHAGEBKAEnAQcAYgEoAWEBBwBiASkBKAEHAGMBKQFiAQcAYwErASkBBwBjASwBKwEHAGMBZAEsAQcAZAEtASwBBwBkAWUBLQEHAGUBLgEtAQcAZQFmAS4BBwBmAS8BLgEHAGYBZwEvAQcAZwEwAS8BBwBnAWgBMAEHAGgBMgEwAQcAaAFpATIBBwBpATMBMgEHAGkBagEzAQcAagE0ATMBBwBqAWsBNAEHAGsBNQE0AQcAawFsATUBBwBsATYBNQEHAGwBbQE2AQcAbQE4ATYBBwBtAW4BOAEHAG4BOQE4AQcAbgFvATkBBwA5AXABOgEHADkBbwFwAQcAOgFxATsBBwA6AXABcQEHADsBcgE9AQcAOwFxAXIBBwA9AXMBPgEHAD0BcgFzAQcAPgF0AT8BBwA+AXMBdAEHAD8BdQFAAQcAPwF0AXUBBwBAAXYBQQEHAEABdQF2AQcAQQF3AUMBBwBBAXYBdwEHAEMBeAFEAQcAQwF3AXgBBwBEAXkBRQEHAEQBeAF5AQcARQF6AUYBBwBFAXkBegEHAEYBewFHAQcARgF6AXsBBwBIAXsBfAEHAEgBRwF7AQcASgF8AX0BBwBKAUgBfAEHAEsBfQF+AQcASwFKAX0BBwBMAX4BfwEHAEwBSwF+AQcATQF/AYABBwBNAUwBfwEHAE4BgAGBAQcATgFNAYABBwBQAYEBggEHAFABTgGBAQcAUQGCAYMBBwBRAVABggEHAFIBgwGEAQcAUgFRAYMBBwBTAYQBhQEHAFMBUgGEAQcAGgGFAVQBBwAaAVMBhQEHAFUBhgGHAQcAVQFUAYYBBwBWAYcBiAEHAFYBVQGHAQcAiQFWAYgBBwCJAVcBVgEHAIoBVwGJAQcAigFYAVcBBwCLAVgBigEHAIsBWQFYAQcAjAFZAYsBBwCMAVoBWQEHAI0BWgGMAQcAjQFbAVoBBwCOAVsBjQEHAI4BXAFbAQcAjwFcAY4BBwCPAV0BXAEHAJABXQGPAQcAkAFeAV0BBwCRAV4BkAEHAJEBXwFeAQcAkgFfAZEBBwCSAWABXwEHAJMBYAGSAQcAkwFhAWABBwCUAWEBkwEHAJQBYgFhAQcAlQFiAZQBBwCVAWMBYgEHAJUBZAFjAQcAlQGWAWQBBwCWAWUBZAEHAJYBlwFlAQcAlwFmAWUBBwCXAZgBZgEHAJgBZwFmAQcAmAGZAWcBBwCZAWgBZwEHAJkBmgFoAQcAmgFpAWgBBwCaAZsBaQEHAJsBagFpAQcAmwGcAWoBBwCcAWsBagEHAJwBnQFrAQcAnQFsAWsBBwCdAZ4BbAEHAJ4BbQFsAQcAngGfAW0BBwCfAW4BbQEHAJ8BoAFuAQcAoAFvAW4BBwCgAaEBbwEHAG8BogFwAQcAbwGhAaIBBwBwAaMBcQEHAHABogGjAQcAcQGkAXIBBwBxAaMBpAEHAHIBpQFzAQcAcgGkAaUBBwBzAaYBdAEHAHMBpQGmAQcAdAGnAXUBBwB0AaYBpwEHAHUBqAF2AQcAdQGnAagBBwB2AakBdwEHAHYBqAGpAQcAdwGqAXgBBwB3AakBqgEHAHgBqwF5AQcAeAGqAasBBwB5AawBegEHAHkBqwGsAQcAegGtAXsBBwB6AawBrQEHAHwBrQGuAQcAfAF7Aa0BBwB9Aa4BrwEHAH0BfAGuAQcAfgGvAbABBwB+AX0BrwEHAH8BsAGxAQcAfwF+AbABBwCAAbEBsgEHAIABfwGxAQcAgQGyAbMBBwCBAYABsgEHAIIBswG0AQcAggGBAbMBBwCDAbQBtQEHAIMBggG0AQcAhAG1AbYBBwCEAYMBtQEHAIUBtgG3AQcAhQGEAbYBBwBUAbcBhgEHAFQBhQG3AQcAhwG4AbkBBwCHAYYBuAEHAIgBuQG6AQcAiAGHAbkBBwC7AYgBugEHALsBiQGIAQcAvAGJAbsBBwC8AYoBiQEHAL0BigG8AQcAvQGLAYoBBwC+AYsBvQEHAL4BjAGLAQcAvwGMAb4BBwC/AY0BjAEHAMABjQG/AQcAwAGOAY0BBwDBAY4BwAEHAMEBjwGOAQcAwgGPAcEBBwDCAZABjwEHAMMBkAHCAQcAwwGRAZABBwDEAZEBwwEHAMQBkgGRAQcAxQGSAcQBBwDFAZMBkgEHAMYBkwHFAQcAxgGUAZMBBwDHAZQBxgEHAMcBlQGUAQcAxwGWAZUBBwDHAcgBlgEHAMgBlwGWAQcAyAHJAZcBBwDJAZgBlwEHAMkBygGYAQcAygGZAZgBBwDKAcsBmQEHAMsBmgGZAQcAywHMAZoBBwDMAZsBmgEHAMwBzQGbAQcAzQGcAZsBBwDNAc4BnAEHAM4BnQGcAQcAzgHPAZ0BBwDPAZ4BnQEHAM8B0AGeAQcA0AGfAZ4BBwDQAdEBnwEHANEBoAGfAQcA0QHSAaABBwDSAaEBoAEHANIB0wGhAQcAoQHUAaIBBwChAdMB1AEHAKIB1QGjAQcAogHUAdUBBwCjAdYBpAEHAKMB1QHWAQcApAHXAaUBBwCkAdYB1wEHAKUB2AGmAQcApQHXAdgBBwCmAdkBpwEHAKYB2AHZAQcApwHaAagBBwCnAdkB2gEHAKgB2wGpAQcAqAHaAdsBBwCpAdwBqgEHAKkB2wHcAQcAqgHdAasBBwCqAdwB3QEHAKsB3gGsAQcAqwHdAd4BBwCsAd8BrQEHAKwB3gHfAQcArgHfAeABBwCuAa0B3wEHAK8B4AHhAQcArwGuAeABBwCwAeEB4gEHALABrwHhAQcAsQHiAeMBBwCxAbAB4gEHALIB4wHkAQcAsgGxAeMBBwCzAeQB5QEHALMBsgHkAQcAtAHlAeYBBwC0AbMB5QEHALUB5gHnAQcAtQG0AeYBBwC2AecB6AEHALYBtQHnAQcAtwHoAekBBwC3AbYB6AEHAIYB6QG4AQcAhgG3AekBBwC4AeoBuQEHALgB6wHqAQcAuQHsAboBBwC5AeoB7AEHAOwBuwG6AQcA7AHtAbsBBwDtAbwBuwEHAO0B7gG8AQcA7gG9AbwBBwDuAe8BvQEHAO8BvgG9AQcA7wHwAb4BBwDwAb8BvgEHAPAB8QG/AQcA8QHAAb8BBwDxAfIBwAEHAPIBwQHAAQcA8gHzAcEBBwDzAcIBwQEHAPMB9AHCAQcA9AHDAcIBBwD0AfUBwwEHAPUBxAHDAQcA9QH2AcQBBwD2AcUBxAEHAPYB9wHFAQcA9wHGAcUBBwD3AfgBxgEHAPgBxwHGAQcA+AH5AccBBwD5AcgBxwEHAPkB+gHIAQcA+gHJAcgBBwD6AfsByQEHAPsBygHJAQcA+wH8AcoBBwD8AcsBygEHAPwB/QHLAQcA/QHMAcsBBwD9Af4BzAEHAP4BzQHMAQcA/gH/Ac0BBwD/Ac4BzQEHAP8BAALOAQcAAALPAc4BBwAAAgECzwEHAAEC0AHPAQcAAQICAtABBwACAtEB0AEHAAICAwLRAQcAAwLSAdEBBwADAgQC0gEHAAQC0wHSAQcABAIFAtMBBwDTAQYC1AEHANMBBQIGAgcA1AEHAtUBBwDUAQYCBwIHANUBCALWAQcA1QEHAggCBwDWAQkC1wEHANYBCAIJAgcA1wEKAtgBBwDXAQkCCgIHANgBCwLZAQcA2AEKAgsCBwDZAQwC2gEHANkBCwIMAgcA2gENAtsBBwDaAQwCDQIHANsBDgLcAQcA2wENAg4CBwDcAQ8C3QEHANwBDgIPAgcA3QEQAt4BBwDdAQ8CEAIHAN4BEQLfAQcA3gEQAhECBwDfARIC4AEHAN8BEQISAgcA4AETAuEBBwDgARICEwIHAOEBFALiAQcA4QETAhQCBwDiARUC4wEHAOIBFAIVAgcA4wEWAuQBBwDjARUCFgIHAOQBFwLlAQcA5AEWAhcCBwDlARgC5gEHAOUBFwIYAgcA5gEZAucBBwDmARgCGQIHAOcBGgLoAQcA5wEZAhoCBwDoARsC6QEHAOgBGgIbAgcA6QHrAbgBBwDpARsC6wEHABwCxAAdAgcAHALJAMQABwDEAB4CHQIHAMQAwwAeAgcAHwLHACACBwAfApYAxwAHAMcAIQIgAgcAxwDLACECBwAiApYAHwIHACIClwCWAAcAIwKXACICBwAjAswAlwAHACQCmgAlAgcAJAKbAJoABwCaACYCJQIHAJoAzwAmAgcAJwKbACQCBwAnApwAmwAHACgCnAAnAgcAKALQAJwABwApAp8AKgIHACkCoACfAAcAnwArAioCBwCfANMAKwIHACwCoAApAgcALAKhAKAABwDVACwCLQIHANUAoQAsAgcALgLXAC8CBwAuAqQA1wAHADACpAAuAgcAMAKlAKQABwAxAqUAMAIHADECpgClAAcA2QAxAjICBwDZAKYAMQIHADMC2wA0AgcAMwKpANsABwA1AqkAMwIHADUCqgCpAAcANgKqADUCBwA2AqsAqgAHAN0ANgI3AgcA3QCrADYCBwA4At8AOQIHADgCrgDfAAcArwA4AjoCBwCvAK4AOAIHALAAOgI7AgcAsACvADoCBwDgADsCPAIHAOAAsAA7AgcAPQLjAD4CBwA9ArMA4wAHALQAPQI/AgcAtACzAD0CBwC1AD8CQAIHALUAtAA/AgcA5ABAAkECBwDkALUAQAIHAEIC5wBDAgcAQgK4AOcABwC5AEICRAIHALkAuABCAgcARQK6AEYCBwBFAukAugAHALoARAJGAgcAugC5AEQCBwC9AEcCSAIHAL0A6wBHAgcAvgBIAkkCBwC+AL0ASAIHAEoCvwBLAgcASgLtAL8ABwC/AEkCSwIHAL8AvgBJAgcAwgBMAk0CBwDCAO8ATAIHAMMATQIeAgcAwwDCAE0CBwBOAskAHAIHAE4C8QDJAAcATwLxAE4CBwBPAhgB8QAHAPMAUAJRAgcA8wAeAVACBwDLAFECIQIHAMsA8wBRAgcAUgLMACMCBwBSAvQAzAAHAB4BUgJQAgcAHgH0AFICBwD3AFMCVAIHAPcAJAFTAgcAzwBUAiYCBwDPAPcAVAIHAFUC0AAoAgcAVQL4ANAABwAkAVUCUwIHACQB+ABVAgcA+wBWAlcCBwD7ACoBVgIHANMAVwIrAgcA0wD7AFcCBwD9AC0CWAIHAP0A1QAtAgcAKgFYAlYCBwAqAf0AWAIHAC8C/wBZAgcALwLXAP8ABwD/AFoCWQIHAP8AMQFaAgcAAQEyAlsCBwABAdkAMgIHADEBWwJaAgcAMQEBAVsCBwA0AgMBXAIHADQC2wADAQcAAwFdAlwCBwADATcBXQIHAAUBNwJeAgcABQHdADcCBwA3AV4CXQIHADcBBQFeAgcAXwI8AWACBwBfAgcBPAEHADkCBwFfAgcAOQLfAAcBBwBgAggBYQIHAGACPAEIAQcACAE8AmECBwAIAeAAPAIHAGICQgFjAgcAYgILAUIBBwA+AgsBYgIHAD4C4wALAQcAYwIMAWQCBwBjAkIBDAEHAAwBQQJkAgcADAHkAEECBwBlAkkBZgIHAGUCDwFJAQcAQwIPAWUCBwBDAucADwEHAGcC6QBFAgcAZwIRAekABwBmAhEBZwIHAGYCSQERAQcAaAJPAWkCBwBoAhMBTwEHAOsAaAJHAgcA6wATAWgCBwBqAu0ASgIHAGoCFQHtAAcAaQIVAWoCBwBpAk8BFQEHAGsCGAFPAgcAawIXARgBBwDvAGsCTAIHAO8AFwFrAgcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHwCdwJ0AgcAfAJ9AncCBwB7An4CeQIHAHsCfwJ+AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCIAoMCgAIHAIgCiQKDAgcAhwKKAoUCBwCHAosCigIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAjgKUApUCBwCOAo0ClAIHAJYCkgKXAgcAlgKQApICBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAJoCoAKhAgcAmgKZAqACBwCiAp4CowIHAKICnAKeAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCmAqwCrQIHAKYCpQKsAgcArgKqAq8CBwCuAqgCqgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAsgK4ArkCBwCyArECuAIHALoCtgK7AgcAugK0ArYCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAL4CxALFAgcAvgK9AsQCBwDGAsICxwIHAMYCwALCAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDQAssCyAIHANAC0QLLAgcAzwLSAs0CBwDPAtMC0gIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA3ALXAtQCBwDcAt0C1wIHANsC3gLZAgcA2wLfAt4CBwBuAuAC4QIHAG4CbQLgAgcA4gJyAuMCBwDiAnACcgIHAOQC4gLlAgcA5AJwAuICBwDmAnAC5AIHAOYCcwJwAgcA5wJzAuYCBwDnAngCcwIHAOgCeALnAgcA6AJ7AngCBwDpAnsC6AIHAOkCfwJ7AgcA6gJ/AukCBwDqAoQCfwIHAOsChALqAgcA6wKHAoQCBwDsAocC6wIHAOwCiwKHAgcA7QKLAuwCBwDtAo8CiwIHAI0C7QLuAgcAjQKPAu0CBwCUAu4C7wIHAJQCjQLuAgcAmwLvAvACBwCbApQC7wIHAJkC8ALxAgcAmQKbAvACBwCgAvEC8gIHAKACmQLxAgcApwLyAvMCBwCnAqAC8gIHAKUC8wL0AgcApQKnAvMCBwCsAvQC9QIHAKwCpQL0AgcAswL1AvYCBwCzAqwC9QIHALEC9gL3AgcAsQKzAvYCBwC4AvcC+AIHALgCsQL3AgcAvwL4AvkCBwC/ArgC+AIHAL0C+QL6AgcAvQK/AvkCBwDEAvoC+wIHAMQCvQL6AgcAzAL7AvwCBwDMAsQC+wIHAP0CzAL8AgcA/QLPAswCBwD+As8C/QIHAP4C0wLPAgcA/wLTAv4CBwD/AtgC0wIHAAAD2AL/AgcAAAPbAtgCBwABA9sCAAMHAAED3wLbAgcA5QLfAgEDBwDlAuIC3wIHAAID5ALlAgcAAgMDA+QCBwADA+YC5AIHAAMDBAPmAgcABQPmAgQDBwAFA+cC5gIHAAYD5wIFAwcABgPoAucCBwAHA+gCBgMHAAcD6QLoAgcACAPpAgcDBwAIA+oC6QIHAAkD6gIIAwcACQPrAuoCBwAKA+sCCQMHAAoD7ALrAgcACwPsAgoDBwALA+0C7AIHAO4CCwMMAwcA7gLtAgsDBwDvAgwDDQMHAO8C7gIMAwcA8AINAw4DBwDwAu8CDQMHAPECDgMPAwcA8QLwAg4DBwDyAg8DEAMHAPIC8QIPAwcA8wIQAxEDBwDzAvICEAMHAPQCEQMSAwcA9ALzAhEDBwD0AhMD9QIHAPQCEgMTAwcA9QIUA/YCBwD1AhMDFAMHAPYCFQP3AgcA9gIUAxUDBwD3AhYD+AIHAPcCFQMWAwcA+AIXA/kCBwD4AhYDFwMHAPkCGAP6AgcA+QIXAxgDBwD6AhkD+wIHAPoCGAMZAwcA+wIaA/wCBwD7AhkDGgMHABoD/QL8AgcAGgMbA/0CBwAbA/4C/QIHABsDHAP+AgcAHAP/Av4CBwAcAx0D/wIHAB0DAAP/AgcAHQMeAwADBwAeAwEDAAMHAB4DHwMBAwcAHwPlAgEDBwAfAwID5QIHACADAgMhAwcAIAMDAwIDBwAiAwMDIAMHACIDBAMDAwcAIwMEAyIDBwAjAwUDBAMHACQDBQMjAwcAJAMGAwUDBwAlAwYDJAMHACUDBwMGAwcAJgMHAyUDBwAmAwgDBwMHACcDCAMmAwcAJwMJAwgDBwAoAwkDJwMHACgDCgMJAwcAKQMKAygDBwApAwsDCgMHAAwDKQMqAwcADAMLAykDBwANAyoDKwMHAA0DDAMqAwcADgMrAywDBwAOAw0DKwMHAA8DLAMtAwcADwMOAywDBwAQAy0DLgMHABADDwMtAwcAEQMuAy8DBwARAxADLgMHABIDLwMwAwcAEgMRAy8DBwATAzADMQMHABMDEgMwAwcAFAMxAzIDBwAUAxMDMQMHABUDMgMzAwcAFQMUAzIDBwAWAzMDNAMHABYDFQMzAwcAFwM0AzUDBwAXAxYDNAMHABgDNQM2AwcAGAMXAzUDBwAZAzYDNwMHABkDGAM2AwcAGgM3AzgDBwAaAxkDNwMHADkDGgM4AwcAOQMbAxoDBwA6AxsDOQMHADoDHAMbAwcAOwMcAzoDBwA7Ax0DHAMHADwDHQM7AwcAPAMeAx0DBwA9Ax4DPAMHAD0DHwMeAwcAIQMfAz0DBwAhAwIDHwMHAD4DIQM/AwcAPgMgAyEDBwBAAyADPgMHAEADIgMgAwcAQQMiA0ADBwBBAyMDIgMHAEIDIwNBAwcAQgMkAyMDBwBDAyQDQgMHAEMDJQMkAwcARAMlA0MDBwBEAyYDJQMHAEUDJgNEAwcARQMnAyYDBwBGAycDRQMHAEYDKAMnAwcARwMoA0YDBwBHAykDKAMHACoDRwNIAwcAKgMpA0cDBwArA0gDSQMHACsDKgNIAwcALANJA0oDBwAsAysDSQMHAC0DSgNLAwcALQMsA0oDBwAuA0sDTAMHAC4DLQNLAwcALwNMA00DBwAvAy4DTAMHADADTQNOAwcAMAMvA00DBwAxA04DTwMHADEDMANOAwcAMgNPA1ADBwAyAzEDTwMHADMDUANRAwcAMwMyA1ADBwA0A1EDUgMHADQDMwNRAwcANQNSA1MDBwA1AzQDUgMHADYDUwNUAwcANgM1A1MDBwA3A1QDVQMHADcDNgNUAwcAOANVA1YDBwA4AzcDVQMHAFcDOANWAwcAVwM5AzgDBwBYAzkDVwMHAFgDOgM5AwcAWQM6A1gDBwBZAzsDOgMHAFoDOwNZAwcAWgM8AzsDBwBbAzwDWgMHAFsDPQM8AwcAPwM9A1sDBwA/AyEDPQMHAFwDXQNeAwcAXANfA10DBwBeA2ADYQMHAF4DXQNgAwcAYQNiA2MDBwBhA2ADYgMHAGMDZANlAwcAYwNiA2QDBwBlA2YDZwMHAGUDZANmAwcAZwNoA2kDBwBnA2YDaAMHAGkDagNrAwcAaQNoA2oDBwBrA2wDbQMHAGsDagNsAwcAbANuA20DBwBsA28DbgMHAG8DcANuAwcAbwNxA3ADBwBxA3IDcAMHAHEDcwNyAwcAcwN0A3IDBwBzA3UDdAMHAHUDdgN0AwcAdQN3A3YDBwB3A3gDdgMHAHcDeQN4AwcAeQN6A3gDBwB5A3sDegMHAHsDfAN6AwcAewN9A3wDBwB+A3wDfQMHAH4DfwN8AwcAgAN/A34DBwCAA4EDfwMHAIIDgQOAAwcAggODA4EDBwCEA4MDggMHAIQDhQODAwcAhgOFA4QDBwCGA4cDhQMHAIgDhwOGAwcAiAOJA4cDBwCKA4kDiAMHAIoDiwOJAwcAjAOKA40DBwCMA4sDigMHAI4DjQOPAwcAjgOMA40DBwCQA48DkQMHAJADjgOPAwcAkgORA5MDBwCSA5ADkQMHAJQDkwOVAwcAlAOSA5MDBwCWA5UDlwMHAJYDlAOVAwcAXAOXA18DBwBcA5YDlwMHAF8DmANdAwcAXwOZA5gDBwBdA5oDYAMHAF0DmAOaAwcAYAObA2IDBwBgA5oDmwMHAGYDnANoAwcAZgOdA5wDBwBoA54DagMHAGgDnAOeAwcAagOfA2wDBwBqA54DnwMHAJ8DbwNsAwcAnwOgA28DBwChA3UDcwMHAKEDogN1AwcAogN3A3UDBwCiA6MDdwMHAKMDeQN3AwcAowOkA3kDBwCkA3sDeQMHAKQDpQN7AwcApgN+A6cDBwCmA4ADfgMHAKgDgAOmAwcAqAOCA4ADBwCpA4IDqAMHAKkDhAOCAwcAqgOEA6kDBwCqA4YDhAMHAI0DqwOsAwcAjQOKA6sDBwCPA6wDrQMHAI8DjQOsAwcAkQOtA64DBwCRA48DrQMHAJMDrgOvAwcAkwORA64DBwBfA7ADmQMHAF8DlwOwAwcAmQOxA5gDBwCZA7IDsQMHAJgDswOaAwcAmAOxA7MDBwCaA7QDmwMHAJoDswO0AwcAmwO1A7YDBwCbA7QDtQMHALYDtwOdAwcAtgO1A7cDBwCdA7gDnAMHAJ0DtwO4AwcAnAO5A54DBwCcA7gDuQMHAJ4DugOfAwcAngO5A7oDBwC6A6ADnwMHALoDuwOgAwcAuwO8A6ADBwC7A70DvAMHAL0DoQO8AwcAvQO+A6EDBwC+A6IDoQMHAL4DvwOiAwcAvwOjA6IDBwC/A8ADowMHAMADpAOjAwcAwAPBA6QDBwDBA6UDpAMHAMEDwgOlAwcAwgPDA6UDBwDCA8QDwwMHAMUDwwPEAwcAxQOnA8MDBwDGA6cDxQMHAMYDpgOnAwcAxwOmA8YDBwDHA6gDpgMHAMgDqAPHAwcAyAOpA6gDBwDJA6kDyAMHAMkDqgOpAwcAygOqA8kDBwDKA8sDqgMHAMwDywPKAwcAzAOrA8sDBwCsA8wDzQMHAKwDqwPMAwcArQPNA84DBwCtA6wDzQMHAK4DzgPPAwcArgOtA84DBwCvA88D0AMHAK8DrgPPAwcA0QPQA9IDBwDRA68D0AMHALAD0gPTAwcAsAPRA9IDBwCZA9MDsgMHAJkDsAPTAwcAsgPUA7EDBwCyA9UD1AMHALED1gOzAwcAsQPUA9YDBwCzA9cDtAMHALMD1gPXAwcAtAPYA7UDBwC0A9cD2AMHALUD2QO3AwcAtQPYA9kDBwC3A9oDuAMHALcD2QPaAwcAuAPbA7kDBwC4A9oD2wMHALkD3AO6AwcAuQPbA9wDBwDcA7sDugMHANwD3QO7AwcA3QO9A7sDBwDdA94DvQMHAN4DvgO9AwcA3gPfA74DBwDfA78DvgMHAN8D4AO/AwcA4APAA78DBwDgA+EDwAMHAOEDwQPAAwcA4QPiA8EDBwDiA8IDwQMHAOID4wPCAwcA4wPEA8IDBwDjA+QDxAMHAOUDxAPkAwcA5QPFA8QDBwDmA8UD5QMHAOYDxgPFAwcA5wPGA+YDBwDnA8cDxgMHAOgDxwPnAwcA6APIA8cDBwDpA8gD6AMHAOkDyQPIAwcA6gPJA+kDBwDqA8oDyQMHAOsDygPqAwcA6wPMA8oDBwDNA+sD7AMHAM0DzAPrAwcAzgPsA+0DBwDOA80D7AMHAM8D7QPuAwcAzwPOA+0DBwDQA+4D7wMHANADzwPuAwcA0gPvA/ADBwDSA9AD7wMHANMD8APxAwcA0wPSA/ADBwCyA/ED1QMHALID0wPxAwcA1APyA/MDBwDUA9UD8gMHANYD8wP0AwcA1gPUA/MDBwDXA/QD9QMHANcD1gP0AwcA2AP1A/YDBwDYA9cD9QMHANkD9gP3AwcA2QPYA/YDBwDaA/cD+AMHANoD2QP3AwcA2wP4A/kDBwDbA9oD+AMHANwD+QP6AwcA3APbA/kDBwD7A9wD+gMHAPsD3QPcAwcA/APdA/sDBwD8A94D3QMHAP0D3gP8AwcA/QPfA94DBwD+A98D/QMHAP4D4APfAwcA/wPgA/4DBwD/A+ED4AMHAAAE4QP/AwcAAATiA+EDBwABBOIDAAQHAAEE4wPiAwcAAgTjAwEEBwACBOQD4wMHAAME5AMCBAcAAwTlA+QDBwAEBOUDAwQHAAQE5gPlAwcABQTmAwQEBwAFBOcD5gMHAAYE5wMFBAcABgToA+cDBwAHBOgDBgQHAAcE6QPoAwcACATpAwcEBwAIBOoD6QMHAAkE6gMIBAcACQTrA+oDBwDsAwkECgQHAOwD6wMJBAcA7QMKBAsEBwDtA+wDCgQHAO4DCwQMBAcA7gPtAwsEBwDvAwwEDQQHAO8D7gMMBAcA8AMNBA4EBwDwA+8DDQQHAPEDDgQPBAcA8QPwAw4EBwDVAw8E8gMHANUD8QMPBAcA8wMQBBEEBwDzA/IDEAQHAPQDEQQSBAcA9APzAxEEBwD1AxIEEwQHAPUD9AMSBAcA9gMTBBQEBwD2A/UDEwQHAPcDFAQVBAcA9wP2AxQEBwD4AxUEFgQHAPgD9wMVBAcA+QMWBBcEBwD5A/gDFgQHAPoDFwQYBAcA+gP5AxcEBwAZBPoDGAQHABkE+wP6AwcAGgT7AxkEBwAaBPwD+wMHABsE/AMaBAcAGwT9A/wDBwAcBP0DGwQHABwE/gP9AwcAHQT+AxwEBwAdBP8D/gMHAB4E/wMdBAcAHgQABP8DBwAfBAAEHgQHAB8EAQQABAcAIAQBBB8EBwAgBAIEAQQHACEEAgQgBAcAIQQDBAIEBwAiBAMEIQQHACIEBAQDBAcAIwQEBCIEBwAjBAUEBAQHACQEBQQjBAcAJAQGBAUEBwAlBAYEJAQHACUEBwQGBAcAJgQHBCUEBwAmBAgEBwQHACcECAQmBAcAJwQJBAgEBwAKBCcEKAQHAAoECQQnBAcACwQoBCkEBwALBAoEKAQHAAwEKQQqBAcADAQLBCkEBwANBCoEKwQHAA0EDAQqBAcADgQrBCwEBwAOBA0EKwQHAA8ELAQtBAcADwQOBCwEBwDyAy0EEAQHAPIDDwQtBAcAEAQuBBEEBwAQBC8ELgQHABEEMAQSBAcAEQQuBDAEBwASBDEEEwQHABIEMAQxBAcAEwQyBBQEBwATBDEEMgQHABQEMwQVBAcAFAQyBDMEBwAVBDQEFgQHABUEMwQ0BAcAFgQ1BBcEBwAWBDQENQQHABcENgQYBAcAFwQ1BDYEBwA2BBkEGAQHADYENwQZBAcANwQaBBkEBwA3BDgEGgQHADgEGwQaBAcAOAQ5BBsEBwA5BBwEGwQHADkEOgQcBAcAOgQdBBwEBwA6BDsEHQQHADsEHgQdBAcAOwQ8BB4EBwA8BB8EHgQHADwEPQQfBAcAPQQgBB8EBwA9BD4EIAQHAD8EIAQ+BAcAPwQhBCAEBwBABCEEPwQHAEAEIgQhBAcAQQQiBEAEBwBBBCMEIgQHAEIEIwRBBAcAQgQkBCMEBwBDBCQEQgQHAEMEJQQkBAcARAQlBEMEBwBEBCYEJQQHAEUEJgREBAcARQQnBCYEBwAoBEUERgQHACgEJwRFBAcAKQRGBEcEBwApBCgERgQHACoERwRIBAcAKgQpBEcEBwArBEgESQQHACsEKgRIBAcALARJBEoEBwAsBCsESQQHAC0ESgRLBAcALQQsBEoEBwAQBEsELwQHABAELQRLBAcAeANMBHYDBwB4A00ETAQHAHoDTQR4AwcAegNOBE0EBwB8A04EegMHAHwDTwROBAcAfwNPBHwDBwB/A1AETwQHAIEDUAR/AwcAgQNRBFAEBwCDA1EEgQMHAIMDUgRRBAcAhQNSBIMDBwCFA1MEUgQHAIcDUwSFAwcAhwNUBFMEBwCJA1QEhwMHAIkDVQRUBAcAiwNVBIkDBwCLA1YEVQQHAIwDVgSLAwcAjANXBFYEBwCOA1cEjAMHAI4DWARXBAcAkANYBI4DBwCQA1kEWAQHAJIDWQSQAwcAkgNaBFkEBwCUA1oEkgMHAJQDWwRaBAcAlgNbBJQDBwCWA1wEWwQHAFwDXASWAwcAXANdBFwEBwBeA10EXAMHAF4DXgRdBAcAYQNeBF4DBwBhA18EXgQHAGMDXwRhAwcAYwNgBF8EBwBlA2AEYwMHAGUDYQRgBAcAZwNhBGUDBwBnA2IEYQQHAGkDYgRnAwcAaQNjBGIEBwBrA2MEaQMHAGsDZARjBAcAbQNkBGsDBwBtA2UEZAQHAG4DZQRtAwcAbgNmBGUEBwBwA2YEbgMHAHADZwRmBAcAcgNnBHADBwByA2gEZwQHAHQDaARyAwcAdANpBGgEBwB2A2kEdAMHAHYDTARpBAcAtwJqBK4CBwC3AmsEagQHAGsETgRqBAcAawRNBE4EBwC0AmsEtwIHALQCbARrBAcAbARNBGsEBwBsBEwETQQHALoCbAS0AgcAugJtBGwEBwBtBEwEbAQHAG0EaQRMBAcAwwJtBLoCBwDDAm4EbQQHAG4EaQRtBAcAbgRoBGkEBwDAAm4EwwIHAMACbwRuBAcAbwRoBG4EBwBvBGcEaAQHAMYCbwTAAgcAxgJwBG8EBwBwBGcEbwQHAHAEZgRnBAcAyQJwBMYCBwDJAnEEcAQHAHEEZgRwBAcAcQRlBGYEBwDLAnEEyQIHAMsCcgRxBAcAcgRlBHEEBwByBGQEZQQHANECcgTLAgcA0QJzBHIEBwBzBGQEcgQHAHMEYwRkBAcA1QJzBNECBwDVAnQEcwQHAHQEYwRzBAcAdARiBGMEBwDXAnQE1QIHANcCdQR0BAcAdQRiBHQEBwB1BGEEYgQHAN0CdQTXAgcA3QJ2BHUEBwB2BGEEdQQHAHYEYARhBAcA4AJ2BN0CBwDgAncEdgQHAHcEYAR2BAcAdwRfBGAEBwBtAncE4AIHAG0CeAR3BAcAeARfBHcEBwB4BF4EXwQHAG8CeARtAgcAbwJ5BHgEBwB5BF4EeAQHAHkEXQReBAcAdQJ5BG8CBwB1AnoEeQQHAHoEXQR5BAcAegRcBF0EBwB3AnoEdQIHAHcCewR6BAcAewRcBHoEBwB7BFsEXAQHAH0CewR3AgcAfQJ8BHsEBwB8BFsEewQHAHwEWgRbBAcAgQJ8BH0CBwCBAn0EfAQHAH0EWgR8BAcAfQRZBFoEBwCDAn0EgQIHAIMCfgR9BAcAfgRZBH0EBwB+BFgEWQQHAIkCfgSDAgcAiQJ/BH4EBwB/BFgEfgQHAH8EVwRYBAcAkwJ/BIkCBwCTAoAEfwQHAIAEVwR/BAcAgARWBFcEBwCQAoAEkwIHAJACgQSABAcAgQRWBIAEBwCBBFUEVgQHAJYCgQSQAgcAlgKCBIEEBwCCBFUEgQQHAIIEVARVBAcAnwKCBJYCBwCfAoMEggQHAIMEVASCBAcAgwRTBFQEBwCcAoMEnwIHAJwChASDBAcAhARTBIMEBwCEBFIEUwQHAKIChAScAgcAogKFBIQEBwCFBFIEhAQHAIUEUQRSBAcAqwKFBKICBwCrAoYEhQQHAIYEUQSFBAcAhgRQBFEEBwCoAoYEqwIHAKgChwSGBAcAhwRQBIYEBwCHBE8EUAQHAK4ChwSoAgcArgJqBIcEBwBqBE8EhwQHAGoETgRPBAcAiARzAngCBwCIBIkEcwIHAG8CiAR1AgcAbwKJBIgEBwCKBH8ChAIHAIoEiwR/AgcAfQKKBIECBwB9AosEigQHAI8CjASLAgcAjwKNBIwEBwCJAo0EkwIHAIkCjASNBAcAmwKOBJQCBwCbAo8EjgQHAJYCjwSfAgcAlgKOBI8EBwCnApAEoAIHAKcCkQSQBAcAogKRBKsCBwCiApAEkQQHALMCkgSsAgcAswKTBJIEBwCuApMEtwIHAK4CkgSTBAcAvwKUBLgCBwC/ApUElAQHALoClQTDAgcAugKUBJUEBwCWBMQCzAIHAJYElwTEAgcAxgKWBMkCBwDGApcElgQHAJgE0wLYAgcAmASZBNMCBwDRApgE1QIHANECmQSYBAcAmgTfAuICBwCaBJsE3wIHAN0CmgTgAgcA3QKbBJoEBwCJBGwCnAQHAIkEbwJsAgcAcwKcBHECBwBzAokEnAQHAHUCnQR2AgcAdQKIBJ0EBwCIBHoCnQQHAIgEeAJ6AgcAiwR8Ap4EBwCLBH0CfAIHAH8CngR+AgcAfwKLBJ4EBwCBAp8EggIHAIECigSfBAcAigSGAp8EBwCKBIQChgIHAIwEiAKgBAcAjASJAogCBwCLAqAEigIHAIsCjASgBAcAkwKhBJECBwCTAo0EoQQHAI0EjAKhBAcAjQSPAowCBwCOBJcCogQHAI4ElgKXAgcAlAKiBJUCBwCUAo4EogQHAJ8CowSdAgcAnwKPBKMEBwCPBJgCowQHAI8EmwKYAgcAkASjAqQEBwCQBKICowIHAKACpAShAgcAoAKQBKQEBwCrAqUEqQIHAKsCkQSlBAcAkQSkAqUEBwCRBKcCpAIHAJIErwKmBAcAkgSuAq8CBwCsAqYErQIHAKwCkgSmBAcAtwKnBLUCBwC3ApMEpwQHAJMEsAKnBAcAkwSzArACBwCUBLsCqAQHAJQEugK7AgcAuAKoBLkCBwC4ApQEqAQHAMMCqQTBAgcAwwKVBKkEBwCVBLwCqQQHAJUEvwK8AgcAlwTHAqoEBwCXBMYCxwIHAMQCqgTFAgcAxAKXBKoEBwDJAqsEygIHAMkClgSrBAcAlgTOAqsEBwCWBMwCzgIHAJkE0AKsBAcAmQTRAtACBwDTAqwE0gIHANMCmQSsBAcA1QKtBNYCBwDVApgErQQHAJgE2gKtBAcAmATYAtoCBwCbBNwCrgQHAJsE3QLcAgcA3wKuBN4CBwDfApsErgQHAOACrwThAgcA4AKaBK8EBwCaBOMCrwQHAJoE4gLjAgcAqgQgAiECBwCqBMcCIAIHAMcCHwIgAgcAxwLCAh8CBwAiAsICwQIHACICHwLCAgcAIQLFAqoEBwAhAlECxQIHACMCwQKpBAcAIwIiAsECBwBSAqkEvAIHAFICIwKpBAcAUQK+AsUCBwBRAlACvgIHALwCUAJSAgcAvAK+AlACBwAdAsgCygIHAB0CHgLIAgcAHgLQAsgCBwAeAk0C0AIHAE0CrATQAgcATQJMAqwEBwBrAqwETAIHAGsC0gKsBAcAHALKAqsEBwAcAh0CygIHAKsETgIcAgcAqwTOAk4CBwBPAs4CzQIHAE8CTgLOAgcAawLNAtICBwBrAk8CzQIHANoCaQJqAgcA2gLZAmkCBwDeAmkC2QIHAN4CaAJpAgcArQRqAkoCBwCtBNoCagIHANYCSgJLAgcA1gKtBEoCBwDUAksCSQIHANQC1gJLAgcA3AJJAkgCBwDcAtQCSQIHAK4ESAJHAgcArgTcAkgCBwDeAkcCaAIHAN4CrgRHAgcAbAJEAkICBwBsAm4CRAIHAG4CRgJEAgcAbgLhAkYCBwDhAkUCRgIHAOECrwRFAgcArwRnAkUCBwCvBOMCZwIHAJwEQgJDAgcAnARsAkICBwBxAkMCZQIHAHECnARDAgcAZQJyAnECBwBlAmYCcgIHAGYC4wJyAgcAZgJnAuMCBwBjAnoCeQIHAGMCZAJ6AgcAYgJ5An4CBwBiAmMCeQIHAD4CfgKeBAcAPgJiAn4CBwA9Ap4EfAIHAD0CPgKeBAcAfAI/Aj0CBwB8AnQCPwIHAHQCQAI/AgcAdAJ2AkACBwB2AkECQAIHAHYCnQRBAgcAnQRkAkECBwCdBHoCZAIHAGECnwSGAgcAYQI8Ap8EBwCCAjwCOwIHAIICnwQ8AgcAgAI7AjoCBwCAAoICOwIHAIgCOgI4AgcAiAKAAjoCBwCgBDgCOQIHAKAEiAI4AgcAigI5Al8CBwCKAqAEOQIHAF8ChQKKAgcAXwJgAoUCBwCGAmACYQIHAIYChQJgAgcAXQKMAo4CBwBdAl4CjAIHAI4CXAJdAgcAjgKVAlwCBwCiBDMCNAIHAKIElwIzAgcAlwI1AjMCBwCXApICNQIHAJICNgI1AgcAkgKRAjYCBwCRAjcCNgIHAJECoQQ3AgcAXgKhBIwCBwBeAjcCoQQHAJUCNAJcAgcAlQKiBDQCBwAuAqQEowIHAC4CLwKkBAcAMAKjAp4CBwAwAi4CowIHADECngKdAgcAMQIwAp4CBwAvAqECpAQHAC8CWQKhAgcAMgKdAqMEBwAyAjECnQIHAFsCowSYAgcAWwIyAqMEBwCYAloCWwIHAJgCmgJaAgcAmgJZAloCBwCaAqECWQIHAC0CqQKlBAcALQIsAqkCBwBYAqUEpAIHAFgCLQKlBAcALAKqAqkCBwAsAikCqgIHACkCrwKqAgcAKQIqAq8CBwAqAqYErwIHACoCKwKmBAcAKwKtAqYEBwArAlcCrQIHAKQCVgJYAgcApAKmAlYCBwCmAlcCVgIHAKYCrQJXAgcAJwK2ArUCBwAnAiQCtgIHACQCuwK2AgcAJAIlArsCBwAoArUCpwQHACgCJwK1AgcAVQKnBLACBwBVAigCpwQHACUCqAS7AgcAJQImAqgEBwAmArkCqAQHACYCVAK5AgcAsAJTAlUCBwCwArICUwIHALICVAJTAgcAsgK5AlQCBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDEBMgEyQQHAMQExgTIBAcAyQTKBMsEBwDJBMgEygQHAMoEzATLBAcAygTNBMwEBwDNBM4EzAQHAM0EzwTOBAcAxQTOBM8EBwDFBMcEzgQHANAE0QTSBAcA0ATTBNEEBwDSBNQE1QQHANIE0QTUBAcA1ATWBNUEBwDUBNcE1gQHANcE2ATWBAcA1wTZBNgEBwDaBNgE2QQHANoE2wTYBAcA0ATaBNMEBwDQBNsE2gQHANwE3QTeBAcA3ATfBN0EBwDdBOAE3gQHAN0E4QTgBAcA4QTiBOAEBwDhBOME4gQHAOQE4gTjBAcA5ATlBOIEBwDmBOQE5wQHAOYE5QTkBAcA5gTfBNwEBwDmBOcE3wQHAOgE6QTqBAcA6ATrBOkEBwDrBOwE6QQHAOsE7QTsBAcA7gTsBO0EBwDuBO8E7AQHAPAE7gTxBAcA8ATvBO4EBwDwBPIE8wQHAPAE8QTyBAcA8wToBOoEBwDzBPIE6AQHAPQE9QT2BAcA9AT3BPUEBwD4BPUE9wQHAPgE+QT1BAcA+gT4BPsEBwD6BPkE+AQHAPoE/AT9BAcA+gT7BPwEBwD9BP4E/wQHAP0E/AT+BAcA/gT2BP8EBwD+BPQE9gQHAMYEAAUBBQcAxgTFBAAFBwDIBAEFAgUHAMgExgQBBQcAygQCBQMFBwDKBMgEAgUHAAQFygQDBQcABAXNBMoEBwAFBc0EBAUHAAUFzwTNBAcAAAXPBAUFBwAABcUEzwQHANEEBgUHBQcA0QTTBAYFBwDUBAcFCAUHANQE0QQHBQcACQXUBAgFBwAJBdcE1AQHAAoF1wQJBQcACgXZBNcEBwALBdkECgUHAAsF2gTZBAcA0wQLBQYFBwDTBNoECwUHAN0EDAUNBQcA3QTfBAwFBwAOBd0EDQUHAA4F4QTdBAcADwXhBA4FBwAPBeME4QQHABAF4wQPBQcAEAXkBOMEBwDnBBAFEQUHAOcE5AQQBQcA3wQRBQwFBwDfBOcEEQUHABIF6AQTBQcAEgXrBOgEBwAUBesEEgUHABQF7QTrBAcAFQXtBBQFBwAVBe4E7QQHAPEEFQUWBQcA8QTuBBUFBwDyBBYFFwUHAPIE8QQWBQcA6AQXBRMFBwDoBPIEFwUHABgF9AQZBQcAGAX3BPQEBwAaBfcEGAUHABoF+AT3BAcA+wQaBRsFBwD7BPgEGgUHAPwEGwUcBQcA/AT7BBsFBwD+BBwFHQUHAP4E/AQcBQcAGQX+BB0FBwAZBfQE/gQHAAEFHgUfBQcAAQUABR4FBwACBR8FIAUHAAIFAQUfBQcAAwUgBSEFBwADBQIFIAUHACIFAwUhBQcAIgUEBQMFBwAjBQQFIgUHACMFBQUEBQcAHgUFBSMFBwAeBQAFBQUHAAcFJAUlBQcABwUGBSQFBwAIBSUFJgUHAAgFBwUlBQcAJwUIBSYFBwAnBQkFCAUHACgFCQUnBQcAKAUKBQkFBwApBQoFKAUHACkFCwUKBQcABgUpBSQFBwAGBQsFKQUHAA0FKgUrBQcADQUMBSoFBwAsBQ0FKwUHACwFDgUNBQcALQUOBSwFBwAtBQ8FDgUHAC4FDwUtBQcALgUQBQ8FBwARBS4FLwUHABEFEAUuBQcADAUvBSoFBwAMBREFLwUHADAFEwUxBQcAMAUSBRMFBwAyBRIFMAUHADIFFAUSBQcAMwUUBTIFBwAzBRUFFAUHABYFMwU0BQcAFgUVBTMFBwAXBTQFNQUHABcFFgU0BQcAEwU1BTEFBwATBRcFNQUHADYFGQU3BQcANgUYBRkFBwA4BRgFNgUHADgFGgUYBQcAGwU4BTkFBwAbBRoFOAUHABwFOQU6BQcAHAUbBTkFBwAdBToFOwUHAB0FHAU6BQcANwUdBTsFBwA3BRkFHQUHAB8FsQSzBAcAHwUeBbEEBwAfBbAEIAUHAB8FswSwBAcAIAU8BSEFBwAgBbAEPAUHADwFIgUhBQcAPAU9BSIFBwA9BSMFIgUHAD0FsgQjBQcAsQQjBbIEBwCxBB4FIwUHACQFtAQlBQcAJAW3BLQEBwAlBT4FJgUHACUFtAQ+BQcAPgUnBSYFBwA+BT8FJwUHAD8FKAUnBQcAPwW2BCgFBwC1BCgFtgQHALUEKQUoBQcAJAW1BLcEBwAkBSkFtQQHACoFQAUrBQcAKgW4BEAFBwBABSwFKwUHAEAFQQUsBQcAQQUtBSwFBwBBBboELQUHALkELQW6BAcAuQQuBS0FBwAvBbkEuwQHAC8FLgW5BAcALwW4BCoFBwAvBbsEuAQHAEIFMAUxBQcAQgVDBTAFBwBDBTIFMAUHAEMFvgQyBQcAvQQyBb4EBwC9BDMFMgUHADQFvQS/BAcANAUzBb0EBwA0BbwENQUHADQFvwS8BAcANQVCBTEFBwA1BbwEQgUHAMEENgU3BQcAwQTDBDYFBwDABDYFwwQHAMAEOAU2BQcAOQXABEQFBwA5BTgFwAQHADkFRQU6BQcAOQVEBUUFBwA6BcIEOwUHADoFRQXCBAcAwgQ3BTsFBwDCBMEENwUHALIEPAWwBAcAsgQ9BTwFBwC2BD4FtAQHALYEPwU+BQcAugRABbgEBwC6BEEFQAUHAMIERAXABAcAwgRFBUQFBwC+BEIFvAQHAL4EQwVCBQcA6gRkA/MEBwDqBGYDZAMHAGID8wRkAwcAYgPwBPMEBwCdA+wEtgMHAJ0D6QTsBAcAZgPpBJ0DBwBmA+oE6QQHAJsD8ARiAwcAmwPvBPAEBwCbA+wE7wQHAJsDtgPsBAcA3gTRA7ADBwDeBOAE0QMHAJcD3gSwAwcAlwPcBN4EBwCVA9wElwMHAJUD5gTcBAcAkwPmBJUDBwCTA+UE5gQHAK8D5QSTAwcArwPiBOUEBwCvA+AE4gQHAK8D0QPgBAcA1gTLA9UEBwDWBKoDywMHAKsD1QTLAwcAqwPSBNUEBwCKA9IEqwMHAIoD0ATSBAcAiAPQBIoDBwCIA9sE0AQHAIYD2wSIAwcAhgPYBNsEBwCqA9gEhgMHAKoD1gTYBAcApQPMBHsDBwClA8sEzAQHAMMDywSlAwcAwwPJBMsEBwCnA8kEwwMHAKcDxATJBAcAzgR7A8wEBwDOBH0DewMHAMcEfQPOBAcAxwR+A30DBwDEBH4DxwQHAMQEpwN+AwcAbwP/BHEDBwBvA/0E/wQHAKAD/QRvAwcAoAP6BP0EBwCgA/kE+gQHAKADvAP5BAcAoQP5BLwDBwChA/UE+QQHAHMD9QShAwcAcwP2BPUEBwBxA/YEcwMHAHED/wT2BAcARgVHBUgFBwBGBUkFRwUHAEgFSgVLBQcASAVHBUoFBwBLBUwFTQUHAEsFSgVMBQcATQVOBU8FBwBNBUwFTgUHAE8FUAVRBQcATwVOBVAFBwBRBVIFUwUHAFEFUAVSBQcAUwVUBVUFBwBTBVIFVAUHAFUFVgVXBQcAVQVUBVYFBwBWBVgFVwUHAFYFWQVYBQcAWQVaBVgFBwBZBVsFWgUHAFsFXAVaBQcAWwVdBVwFBwBdBV4FXAUHAF0FXwVeBQcAXwVgBV4FBwBfBWEFYAUHAGEFYgVgBQcAYQVjBWIFBwBjBWQFYgUHAGMFZQVkBQcAZQVmBWQFBwBlBWcFZgUHAGgFZgVnBQcAaAVpBWYFBwBqBWkFaAUHAGoFawVpBQcAbAVrBWoFBwBsBW0FawUHAG4FbQVsBQcAbgVvBW0FBwBwBW8FbgUHAHAFcQVvBQcAcgVxBXAFBwByBXMFcQUHAHQFcwVyBQcAdAV1BXMFBwB2BXQFdwUHAHYFdQV0BQcAeAV3BXkFBwB4BXYFdwUHAHoFeQV7BQcAegV4BXkFBwB8BXsFfQUHAHwFegV7BQcAfgV9BX8FBwB+BXwFfQUHAIAFfwWBBQcAgAV+BX8FBwBGBYEFSQUHAEYFgAWBBQcAdwVyBYIFBwB3BXQFcgUHAHsFdwWCBQcAewV5BXcFBwB/BXsFggUHAH8FfQV7BQcASQV/BYIFBwBJBYEFfwUHAEoFSQWCBQcASgVHBUkFBwBOBUoFggUHAE4FTAVKBQcAUgVOBYIFBwBSBVAFTgUHAFYFUgWCBQcAVgVUBVIFBwBbBVYFggUHAFsFWQVWBQcAXwVbBYIFBwBfBV0FWwUHAGMFXwWCBQcAYwVhBV8FBwBnBWMFggUHAGcFZQVjBQcAagVnBYIFBwBqBWgFZwUHAG4FagWCBQcAbgVsBWoFBwByBW4FggUHAHIFcAVuBQcAgwWABUYFBwCDBYQFgAUHAIUFRgVIBQcAhQWDBUYFBwCEBX4FgAUHAIQFhgV+BQcAhgV8BX4FBwCGBYcFfAUHAIcFegV8BQcAhwWIBXoFBwCIBXgFegUHAIgFiQV4BQcAiQV2BXgFBwCJBYoFdgUHAIoFdQV2BQcAigWLBXUFBwCMBVcFWAUHAIwFjQVXBQcAjgVYBVoFBwCOBYwFWAUHAI0FVQVXBQcAjQWPBVUFBwCPBVMFVQUHAI8FkAVTBQcAkAVRBVMFBwCQBZEFUQUHAJEFTwVRBQcAkQWSBU8FBwCSBU0FTwUHAJIFkwVNBQcAkwVLBU0FBwCTBZQFSwUHAJQFSAVLBQcAlAWFBUgFBwCLBXMFdQUHAIsFlQVzBQcAlQVxBXMFBwCVBZYFcQUHAJYFbwVxBQcAlgWXBW8FBwCXBW0FbwUHAJcFmAVtBQcAmAVrBW0FBwCYBZkFawUHAJkFaQVrBQcAmQWaBWkFBwCaBWYFaQUHAJoFmwVmBQcAmwVkBWYFBwCbBZwFZAUHAJwFYgVkBQcAnAWdBWIFBwCdBWAFYgUHAJ0FngVgBQcAngVeBWAFBwCeBZ8FXgUHAJ8FXAVeBQcAnwWgBVwFBwCgBVoFXAUHAKAFjgVaBQcAoQWEBYMFBwChBaIFhAUHAKMFgwWFBQcAowWhBYMFBwCiBYYFhAUHAKIFpAWGBQcApQWFBZQFBwClBaMFhQUHAKQFhwWGBQcApAWmBYcFBwCmBYgFhwUHAKYFpwWIBQcApwWJBYgFBwCnBagFiQUHAKgFigWJBQcAqAWpBYoFBwCpBYsFigUHAKkFqgWLBQcAqgWVBYsFBwCqBasFlQUHAKwFjQWMBQcArAWtBY0FBwCuBYwFjgUHAK4FrAWMBQcArQWPBY0FBwCtBa8FjwUHALAFjgWgBQcAsAWuBY4FBwCvBZAFjwUHAK8FsQWQBQcAsQWRBZAFBwCxBbIFkQUHALIFkgWRBQcAsgWzBZIFBwCzBZMFkgUHALMFtAWTBQcAtAWUBZMFBwC0BaUFlAUHAKsFlgWVBQcAqwW1BZYFBwC1BZcFlgUHALUFtgWXBQcAtgWYBZcFBwC2BbcFmAUHALcFmQWYBQcAtwW4BZkFBwC4BZoFmQUHALgFuQWaBQcAuQWbBZoFBwC5BboFmwUHALoFnAWbBQcAugW7BZwFBwC7BZ0FnAUHALsFvAWdBQcAvAWeBZ0FBwC8Bb0FngUHAL0FnwWeBQcAvQW+BZ8FBwC+BaAFnwUHAL4FsAWgBQcAvwXABcEFBwC/BcIFwAUHAL8FwwXCBQcAvwXEBcMFBwDEBcUFwwUHAMQFxgXFBQcAxgXHBcUFBwDGBcgFxwUHAMgFyQXHBQcAyAXKBckFBwDKBcsFyQUHAMoFzAXLBQcAzAXNBcsFBwDMBc4FzQUHAM0FzwXQBQcAzQXOBc8FBwDQBdEF0gUHANAFzwXRBQcA0gXTBdQFBwDSBdEF0wUHANQF1QXWBQcA1AXTBdUFBwDWBdcF2AUHANYF1QXXBQcA2QXXBdoFBwDZBdgF1wUHANsF2gXcBQcA2wXZBdoFBwDdBdwF3gUHAN0F2wXcBQcA3wXeBeAFBwDfBd0F3gUHAOEF4AXiBQcA4QXfBeAFBwDjBeIF5AUHAOMF4QXiBQcA5QXkBeYFBwDlBeMF5AUHAOcF5QXmBQcA5wXoBeUFBwDpBegF5wUHAOkF6gXoBQcA6wXqBekFBwDrBewF6gUHAO0F7AXrBQcA7QXuBewFBwDBBe4F7QUHAMEFwAXuBQcA7wXBBfAFBwDvBb8FwQUHAPEFvwXvBQcA8QXEBb8FBwDyBcQF8QUHAPIFxgXEBQcA8wXGBfIFBwDzBcgFxgUHAPQFyAXzBQcA9AXKBcgFBwD1BcoF9AUHAPUFzAXKBQcA9gXMBfUFBwD2Bc4FzAUHAM8F9gX3BQcAzwXOBfYFBwDRBfcF+AUHANEFzwX3BQcA0wX4BfkFBwDTBdEF+AUHANUF+QX6BQcA1QXTBfkFBwDXBfoF+wUHANcF1QX6BQcA2gX7BfwFBwDaBdcF+wUHANwF/AX9BQcA3AXaBfwFBwDeBf0F/gUHAN4F3AX9BQcA4AX+Bf8FBwDgBd4F/gUHAOIF/wUABgcA4gXgBf8FBwDkBQAGAQYHAOQF4gUABgcA5gUBBgIGBwDmBeQFAQYHAAMG5gUCBgcAAwbnBeYFBwAEBucFAwYHAAQG6QXnBQcABQbpBQQGBwAFBusF6QUHAAYG6wUFBgcABgbtBesFBwDwBe0FBgYHAPAFwQXtBQcABwbwBQgGBwAHBu8F8AUHAAcG8QXvBQcABwYJBvEFBwAJBvIF8QUHAAkGCgbyBQcACgbzBfIFBwAKBgsG8wUHAAsG9AXzBQcACwYMBvQFBwAMBvUF9AUHAAwGDQb1BQcADQb2BfUFBwANBg4G9gUHAPYFDwb3BQcA9gUOBg8GBwD3BRAG+AUHAPcFDwYQBgcA+AURBvkFBwD4BRAGEQYHAPkFEgb6BQcA+QURBhIGBwD6BRMG+wUHAPoFEgYTBgcA/AUTBhQGBwD8BfsFEwYHAP0FFAYVBgcA/QX8BRQGBwD+BRUGFgYHAP4F/QUVBgcA/wUWBhcGBwD/Bf4FFgYHAAAGFwYYBgcAAAb/BRcGBwABBhgGGQYHAAEGAAYYBgcAAgYZBhoGBwACBgEGGQYHABsGAgYaBgcAGwYDBgIGBwAcBgMGGwYHABwGBAYDBgcAHQYEBhwGBwAdBgUGBAYHAB4GBQYdBgcAHgYGBgUGBwAIBgYGHgYHAAgG8AUGBgcAHwYHBggGBwAfBiAGBwYHACAGCQYHBgcAIAYhBgkGBwAhBgoGCQYHACEGIgYKBgcAIgYLBgoGBwAiBiMGCwYHACMGDAYLBgcAIwYkBgwGBwAkBg0GDAYHACQGJQYNBgcAJQYOBg0GBwAlBiYGDgYHAA4GJwYPBgcADgYmBicGBwAPBigGEAYHAA8GJwYoBgcAEAYpBhEGBwAQBigGKQYHABEGKgYSBgcAEQYpBioGBwASBisGEwYHABIGKgYrBgcAEwYsBhQGBwATBisGLAYHABQGLQYVBgcAFAYsBi0GBwAVBi4GFgYHABUGLQYuBgcAFgYvBhcGBwAWBi4GLwYHABcGMAYYBgcAFwYvBjAGBwAYBjEGGQYHABgGMAYxBgcAGQYyBhoGBwAZBjEGMgYHADIGGwYaBgcAMgYzBhsGBwAzBhwGGwYHADMGNAYcBgcANAYdBhwGBwA0BjUGHQYHADUGHgYdBgcANQY2Bh4GBwA2BggGHgYHADYGHwYIBgcANwY4BjkGBwA3BjoGOAYHADsGOgY3BgcAOwY8BjoGBwA9BjwGOwYHAD0GPgY8BgcAPwY+Bj0GBwA/BkAGPgYHAEEGQAY/BgcAQQZCBkAGBwBDBkIGQQYHAEMGRAZCBgcARQZEBkMGBwBFBkYGRAYHAEcGRQZIBgcARwZGBkUGBwBJBkgGSgYHAEkGRwZIBgcASwZKBkwGBwBLBkkGSgYHAE0GTAZOBgcATQZLBkwGBwBPBk4GUAYHAE8GTQZOBgcAUQZQBlIGBwBRBk8GUAYHAFMGUgZUBgcAUwZRBlIGBwBVBlQGVgYHAFUGUwZUBgcAVwZWBlgGBwBXBlUGVgYHAFkGWAZaBgcAWQZXBlgGBwBbBloGXAYHAFsGWQZaBgcAXQZcBl4GBwBdBlsGXAYHAF8GXQZeBgcAXwZgBl0GBwBhBmAGXwYHAGEGYgZgBgcAYwZiBmEGBwBjBmQGYgYHAGUGZAZjBgcAZQZmBmQGBwA5BmYGZQYHADkGOAZmBgcAZwY3BjkGBwBnBmgGNwYHAGkGNwZoBgcAaQY7BjcGBwBqBjsGaQYHAGoGPQY7BgcAawY9BmoGBwBrBj8GPQYHAGwGPwZrBgcAbAZBBj8GBwBtBkEGbAYHAG0GQwZBBgcAbgZDBm0GBwBuBkUGQwYHAEgGbgZvBgcASAZFBm4GBwBKBm8GcAYHAEoGSAZvBgcATAZwBnEGBwBMBkoGcAYHAE4GcQZyBgcATgZMBnEGBwBQBnIGcwYHAFAGTgZyBgcAUAZ0BlIGBwBQBnMGdAYHAFIGdQZUBgcAUgZ0BnUGBwBUBnYGVgYHAFQGdQZ2BgcAVgZ3BlgGBwBWBnYGdwYHAFgGeAZaBgcAWAZ3BngGBwBaBnkGXAYHAFoGeAZ5BgcAXAZ6Bl4GBwBcBnkGegYHAHoGXwZeBgcAegZ7Bl8GBwB7BmEGXwYHAHsGfAZhBgcAfAZjBmEGBwB8Bn0GYwYHAH0GZQZjBgcAfQZ+BmUGBwB+BjkGZQYHAH4GZwY5BgcAfwZnBoAGBwB/BmgGZwYHAIEGaAZ/BgcAgQZpBmgGBwCCBmkGgQYHAIIGagZpBgcAgwZqBoIGBwCDBmsGagYHAIQGawaDBgcAhAZsBmsGBwCFBmwGhAYHAIUGbQZsBgcAhgZtBoUGBwCGBm4GbQYHAG8GhgaHBgcAbwZuBoYGBwBwBocGiAYHAHAGbwaHBgcAcQaIBokGBwBxBnAGiAYHAHIGiQaKBgcAcgZxBokGBwBzBooGiwYHAHMGcgaKBgcAdAaLBowGBwB0BnMGiwYHAHUGjAaNBgcAdQZ0BowGBwB2Bo0GjgYHAHYGdQaNBgcAdwaOBo8GBwB3BnYGjgYHAHgGjwaQBgcAeAZ3Bo8GBwB5BpAGkQYHAHkGeAaQBgcAegaRBpIGBwB6BnkGkQYHAJMGegaSBgcAkwZ7BnoGBwCUBnsGkwYHAJQGfAZ7BgcAlQZ8BpQGBwCVBn0GfAYHAJYGfQaVBgcAlgZ+Bn0GBwCABn4GlgYHAIAGZwZ+BgcAlwaABpgGBwCXBn8GgAYHAJcGgQZ/BgcAlwaZBoEGBwCZBoIGgQYHAJkGmgaCBgcAmgaDBoIGBwCaBpsGgwYHAJsGhAaDBgcAmwacBoQGBwCcBoUGhAYHAJwGnQaFBgcAnQaGBoUGBwCdBp4GhgYHAIYGnwaHBgcAhgaeBp8GBwCHBqAGiAYHAIcGnwagBgcAiAahBokGBwCIBqAGoQYHAIkGogaKBgcAiQahBqIGBwCKBqMGiwYHAIoGogajBgcAjAajBqQGBwCMBosGowYHAI0GpAalBgcAjQaMBqQGBwCOBqUGpgYHAI4GjQalBgcAjwamBqcGBwCPBo4GpgYHAJAGpwaoBgcAkAaPBqcGBwCRBqgGqQYHAJEGkAaoBgcAkgapBqoGBwCSBpEGqQYHAKsGkgaqBgcAqwaTBpIGBwCsBpMGqwYHAKwGlAaTBgcArQaUBqwGBwCtBpUGlAYHAK4GlQatBgcArgaWBpUGBwCYBpYGrgYHAJgGgAaWBgcArwaYBrAGBwCvBpcGmAYHALEGlwavBgcAsQaZBpcGBwCyBpkGsQYHALIGmgaZBgcAswaaBrIGBwCzBpsGmgYHALQGmwazBgcAtAacBpsGBwC1BpwGtAYHALUGnQacBgcAtgadBrUGBwC2Bp4GnQYHAJ8Gtga3BgcAnwaeBrYGBwCgBrcGuAYHAKAGnwa3BgcAoQa4BrkGBwChBqAGuAYHAKIGuQa6BgcAogahBrkGBwCjBroGuwYHAKMGoga6BgcApAa7BrwGBwCkBqMGuwYHAKUGvAa9BgcApQakBrwGBwCmBr0GvgYHAKYGpQa9BgcApwa+Br8GBwCnBqYGvgYHAKgGvwbABgcAqAanBr8GBwCpBsAGwQYHAKkGqAbABgcAqgbBBsIGBwCqBqkGwQYHAMMGqgbCBgcAwwarBqoGBwDEBqsGwwYHAMQGrAarBgcAxQasBsQGBwDFBq0GrAYHAMYGrQbFBgcAxgauBq0GBwCwBq4GxgYHALAGmAauBgcAxwavBrAGBwDHBsgGrwYHAMkGrwbIBgcAyQaxBq8GBwDKBrEGyQYHAMoGsgaxBgcAywayBsoGBwDLBrMGsgYHAMwGswbLBgcAzAa0BrMGBwDNBrQGzAYHAM0GtQa0BgcAzga1Bs0GBwDOBrYGtQYHALcGzgbPBgcAtwa2Bs4GBwC4Bs8G0AYHALgGtwbPBgcAuQbQBtEGBwC5BrgG0AYHALoG0QbSBgcAuga5BtEGBwC7BtIG0wYHALsGugbSBgcAuwbUBrwGBwC7BtMG1AYHALwG1Qa9BgcAvAbUBtUGBwC9BtYGvgYHAL0G1QbWBgcAvgbXBr8GBwC+BtYG1wYHAL8G2AbABgcAvwbXBtgGBwDABtkGwQYHAMAG2AbZBgcAwQbaBsIGBwDBBtkG2gYHANoGwwbCBgcA2gbbBsMGBwDbBsQGwwYHANsG3AbEBgcA3AbFBsQGBwDcBt0GxQYHAN0GxgbFBgcA3QbeBsYGBwDeBrAGxgYHAN4GxwawBgcAKwbfBiwGBwArBuAG3wYHACoG4AYrBgcAKgbhBuAGBwApBuEGKgYHACkG4gbhBgcAKAbiBikGBwAoBuMG4gYHACcG4wYoBgcAJwbkBuMGBwAmBuQGJwYHACYG5QbkBgcAJQblBiYGBwAlBuYG5QYHACQG5gYlBgcAJAbnBuYGBwAjBucGJAYHACMG6AbnBgcAIgboBiMGBwAiBukG6AYHACEG6QYiBgcAIQbqBukGBwAgBuoGIQYHACAG6wbqBgcAHwbrBiAGBwAfBuwG6wYHADYG7AYfBgcANgbtBuwGBwA1Bu0GNgYHADUG7gbtBgcANAbuBjUGBwA0Bu8G7gYHADMG7wY0BgcAMwbwBu8GBwAyBvAGMwYHADIG8QbwBgcAMQbxBjIGBwAxBvIG8QYHADAG8gYxBgcAMAbzBvIGBwAvBvMGMAYHAC8G9AbzBgcALgb0Bi8GBwAuBvUG9AYHAC0G9QYuBgcALQb2BvUGBwAsBvYGLQYHACwG3wb2BgcAUQb3Bk8GBwBRBvgG9wYHAPgG4Ab3BgcA+AbfBuAGBwBTBvgGUQYHAFMG+Qb4BgcA+QbfBvgGBwD5BvYG3wYHAFUG+QZTBgcAVQb6BvkGBwD6BvYG+QYHAPoG9Qb2BgcAVwb6BlUGBwBXBvsG+gYHAPsG9Qb6BgcA+wb0BvUGBwBZBvsGVwYHAFkG/Ab7BgcA/Ab0BvsGBwD8BvMG9AYHAFsG/AZZBgcAWwb9BvwGBwD9BvMG/AYHAP0G8gbzBgcAXQb9BlsGBwBdBv4G/QYHAP4G8gb9BgcA/gbxBvIGBwBgBv4GXQYHAGAG/wb+BgcA/wbxBv4GBwD/BvAG8QYHAGIG/wZgBgcAYgYAB/8GBwAAB/AG/wYHAAAH7wbwBgcAZAYAB2IGBwBkBgEHAAcHAAEH7wYABwcAAQfuBu8GBwBmBgEHZAYHAGYGAgcBBwcAAgfuBgEHBwACB+0G7gYHADgGAgdmBgcAOAYDBwIHBwADB+0GAgcHAAMH7AbtBgcAOgYDBzgGBwA6BgQHAwcHAAQH7AYDBwcABAfrBuwGBwA8BgQHOgYHADwGBQcEBwcABQfrBgQHBwAFB+oG6wYHAD4GBQc8BgcAPgYGBwUHBwAGB+oGBQcHAAYH6QbqBgcAQAYGBz4GBwBABgcHBgcHAAcH6QYGBwcABwfoBukGBwBCBgcHQAYHAEIGCAcHBwcACAfoBgcHBwAIB+cG6AYHAEQGCAdCBgcARAYJBwgHBwAJB+cGCAcHAAkH5gbnBgcARgYJB0QGBwBGBgoHCQcHAAoH5gYJBwcACgflBuYGBwBHBgoHRgYHAEcGCwcKBwcACwflBgoHBwALB+QG5QYHAEkGCwdHBgcASQYMBwsHBwAMB+QGCwcHAAwH4wbkBgcASwYMB0kGBwBLBg0HDAcHAA0H4wYMBwcADQfiBuMGBwBNBg0HSwYHAE0GDgcNBwcADgfiBg0HBwAOB+EG4gYHAE8GDgdNBgcATwb3Bg4HBwD3BuEGDgcHAPcG4AbhBgcADwcQBxEHBwAPBxIHEAcHABIHEwcQBwcAEgcUBxMHBwAUBxUHEwcHABQHFgcVBwcAFgcXBxUHBwAWBxgHFwcHABgHGQcXBwcAGAcaBxkHBwAaBxsHGQcHABoHHAcbBwcAGwcdBx4HBwAbBxwHHQcHAB4HHwcgBwcAHgcdBx8HBwAgByEHIgcHACAHHwchBwcAIgcjByQHBwAiByEHIwcHACQHJQcmBwcAJAcjByUHBwAmBycHKAcHACYHJQcnBwcAKAcpByoHBwAoBycHKQcHACoHKwcsBwcAKgcpBysHBwAsBy0HLgcHACwHKwctBwcALgcvBzAHBwAuBy0HLwcHADAHMQcyBwcAMAcvBzEHBwAyBzMHNAcHADIHMQczBwcAMwc1BzQHBwAzBzYHNQcHADYHNwc1BwcANgc4BzcHBwA4BzkHNwcHADgHOgc5BwcAOgc7BzkHBwA6BzwHOwcHADwHPQc7BwcAPAc+Bz0HBwA+BxEHPQcHAD4HDwcRBwcAPwc+B0AHBwA/Bw8HPgcHAD8HEgcPBwcAPwdBBxIHBwBBBxQHEgcHAEEHQgcUBwcAQgcWBxQHBwBCB0MHFgcHAEMHGAcWBwcAQwdEBxgHBwBEBxoHGAcHAEQHRQcaBwcARQccBxoHBwBFB0YHHAcHABwHRwcdBwcAHAdGB0cHBwAdB0gHHwcHAB0HRwdIBwcAHwdJByEHBwAfB0gHSQcHACEHSgcjBwcAIQdJB0oHBwAjB0sHJQcHACMHSgdLBwcAJwdLB0wHBwAnByUHSwcHACkHTAdNBwcAKQcnB0wHBwArB00HTgcHACsHKQdNBwcALQdOB08HBwAtBysHTgcHAC8HTwdQBwcALwctB08HBwAxB1AHUQcHADEHLwdQBwcAMwdRB1IHBwAzBzEHUQcHAFMHMwdSBwcAUwc2BzMHBwBUBzYHUwcHAFQHOAc2BwcAVQc4B1QHBwBVBzoHOAcHAFYHOgdVBwcAVgc8BzoHBwBABzwHVgcHAEAHPgc8BwcAVwdAB1gHBwBXBz8HQAcHAFkHPwdXBwcAWQdBBz8HBwBaB0EHWQcHAFoHQgdBBwcAWwdCB1oHBwBbB0MHQgcHAFwHQwdbBwcAXAdEB0MHBwBdB0QHXAcHAF0HRQdEBwcAXgdFB10HBwBeB0YHRQcHAEcHXgdfBwcARwdGB14HBwBIB18HYAcHAEgHRwdfBwcASQdgB2EHBwBJB0gHYAcHAEoHYQdiBwcASgdJB2EHBwBLB2IHYwcHAEsHSgdiBwcATAdjB2QHBwBMB0sHYwcHAE0HZAdlBwcATQdMB2QHBwBOB2UHZgcHAE4HTQdlBwcATwdmB2cHBwBPB04HZgcHAFAHZwdoBwcAUAdPB2cHBwBRB2gHaQcHAFEHUAdoBwcAUgdpB2oHBwBSB1EHaQcHAGsHUgdqBwcAawdTB1IHBwBsB1MHawcHAGwHVAdTBwcAbQdUB2wHBwBtB1UHVAcHAG4HVQdtBwcAbgdWB1UHBwBYB1YHbgcHAFgHQAdWBwcAbwdYB3AHBwBvB1cHWAcHAG8HWQdXBwcAbwdxB1kHBwBxB1oHWQcHAHEHcgdaBwcAcgdbB1oHBwByB3MHWwcHAHMHXAdbBwcAcwd0B1wHBwB0B10HXAcHAHQHdQddBwcAdQdeB10HBwB1B3YHXgcHAF4HdwdfBwcAXgd2B3cHBwBfB3gHYAcHAF8Hdwd4BwcAYAd5B2EHBwBgB3gHeQcHAGEHegdiBwcAYQd5B3oHBwBiB3sHYwcHAGIHegd7BwcAZAd7B3wHBwBkB2MHewcHAGUHfAd9BwcAZQdkB3wHBwBmB30HfgcHAGYHZQd9BwcAZwd+B38HBwBnB2YHfgcHAGgHfweABwcAaAdnB38HBwBpB4AHgQcHAGkHaAeABwcAageBB4IHBwBqB2kHgQcHAIMHageCBwcAgwdrB2oHBwCEB2sHgwcHAIQHbAdrBwcAhQdsB4QHBwCFB20HbAcHAIYHbQeFBwcAhgduB20HBwBwB24HhgcHAHAHWAduBwcAhwdwB4gHBwCHB28HcAcHAIkHbweHBwcAiQdxB28HBwCKB3EHiQcHAIoHcgdxBwcAiwdyB4oHBwCLB3MHcgcHAIwHcweLBwcAjAd0B3MHBwCNB3QHjAcHAI0HdQd0BwcAjgd1B40HBwCOB3YHdQcHAHcHjgePBwcAdwd2B44HBwB4B48HkAcHAHgHdwePBwcAeQeQB5EHBwB5B3gHkAcHAHoHkQeSBwcAegd5B5EHBwB7B5IHkwcHAHsHegeSBwcAfAeTB5QHBwB8B3sHkwcHAH0HlAeVBwcAfQd8B5QHBwB+B5UHlgcHAH4HfQeVBwcAfweWB5cHBwB/B34HlgcHAIAHlweYBwcAgAd/B5cHBwCBB5gHmQcHAIEHgAeYBwcAggeZB5oHBwCCB4EHmQcHAJsHggeaBwcAmweDB4IHBwCcB4MHmwcHAJwHhAeDBwcAnQeEB5wHBwCdB4UHhAcHAJ4HhQedBwcAngeGB4UHBwCIB4YHngcHAIgHcAeGBwcAnweHB4gHBwCfB6AHhwcHAKEHhwegBwcAoQeJB4cHBwCiB4kHoQcHAKIHigeJBwcAoweKB6IHBwCjB4sHigcHAKQHiwejBwcApAeMB4sHBwClB4wHpAcHAKUHjQeMBwcApgeNB6UHBwCmB44HjQcHAI8HpgenBwcAjweOB6YHBwCQB6cHqAcHAJAHjwenBwcAkQeoB6kHBwCRB5AHqAcHAJIHqQeqBwcAkgeRB6kHBwCTB6oHqwcHAJMHkgeqBwcAkwesB5QHBwCTB6sHrAcHAJQHrQeVBwcAlAesB60HBwCVB64HlgcHAJUHrQeuBwcAlgevB5cHBwCWB64HrwcHAJcHsAeYBwcAlwevB7AHBwCYB7EHmQcHAJgHsAexBwcAmQeyB5oHBwCZB7EHsgcHALIHmweaBwcAsgezB5sHBwCzB5wHmwcHALMHtAecBwcAtAedB5wHBwC0B7UHnQcHALUHngedBwcAtQe2B54HBwC2B4gHngcHALYHnweIBwcAwgWfB8AFBwDCBaAHnwcHAMMFoAfCBQcAwwWhB6AHBwDFBaEHwwUHAMUFogehBwcAxwWiB8UFBwDHBaMHogcHAMkFowfHBQcAyQWkB6MHBwDLBaQHyQUHAMsFpQekBwcAzQWlB8sFBwDNBaYHpQcHAKcHzQXQBQcApwemB80FBwCoB9AF0gUHAKgHpwfQBQcAqQfSBdQFBwCpB6gH0gUHAKoH1AXWBQcAqgepB9QFBwCrB9YF2AUHAKsHqgfWBQcArAfYBdkFBwCsB6sH2AUHAK0H2QXbBQcArQesB9kFBwCuB9sF3QUHAK4HrQfbBQcArwfdBd8FBwCvB64H3QUHALAH3wXhBQcAsAevB98FBwCxB+EF4wUHALEHsAfhBQcAsgfjBeUFBwCyB7EH4wUHAOgFsgflBQcA6AWzB7IHBwDqBbMH6AUHAOoFtAezBwcA7AW0B+oFBwDsBbUHtAcHAO4FtQfsBQcA7gW2B7UHBwDABbYH7gUHAMAFnwe2BwcAtwfHBrgHBwC3B8gGxwYHALkHyAa3BwcAuQfJBsgGBwC6B8kGuQcHALoHygbJBgcAuwfKBroHBwC7B8sGygYHALwHywa7BwcAvAfMBssGBwC9B8wGvAcHAL0HzQbMBgcAvgfNBr0HBwC+B84GzQYHAM8Gvge/BwcAzwbOBr4HBwDQBr8HwAcHANAGzwa/BwcA0QbAB8EHBwDRBtAGwAcHANIGwQfCBwcA0gbRBsEHBwDTBsIHwwcHANMG0gbCBwcA1AbDB8QHBwDUBtMGwwcHANUGxAfFBwcA1QbUBsQHBwDWBsUHxgcHANYG1QbFBwcA1wbGB8cHBwDXBtYGxgcHANgGxwfIBwcA2AbXBscHBwDZBsgHyQcHANkG2AbIBwcA2gbJB8oHBwDaBtkGyQcHAMsH2gbKBwcAywfbBtoGBwDMB9sGywcHAMwH3AbbBgcAzQfcBswHBwDNB90G3AYHAM4H3QbNBwcAzgfeBt0GBwC4B94GzgcHALgHxwbeBgcAzwe3B7gHBwDPB9AHtwcHANEHtwfQBwcA0Qe5B7cHBwDSB7kH0QcHANIHuge5BwcA0we6B9IHBwDTB7sHugcHANQHuwfTBwcA1Ae8B7sHBwDVB7wH1AcHANUHvQe8BwcA1ge9B9UHBwDWB74HvQcHAL8H1gfXBwcAvwe+B9YHBwDAB9cH2AcHAMAHvwfXBwcAwQfYB9kHBwDBB8AH2AcHAMIH2QfaBwcAwgfBB9kHBwDDB9oH2wcHAMMHwgfaBwcAwwfcB8QHBwDDB9sH3AcHAMQH3QfFBwcAxAfcB90HBwDFB94HxgcHAMUH3QfeBwcAxgffB8cHBwDGB94H3wcHAMcH4AfIBwcAxwffB+AHBwDIB+EHyQcHAMgH4AfhBwcAyQfiB8oHBwDJB+EH4gcHAOIHywfKBwcA4gfjB8sHBwDjB8wHywcHAOMH5AfMBwcA5AfNB8wHBwDkB+UHzQcHAOUHzgfNBwcA5QfmB84HBwDmB7gHzgcHAOYHzwe4BwcA5wfPB+gHBwDnB9AHzwcHAOkH0AfnBwcA6QfRB9AHBwDqB9EH6QcHAOoH0gfRBwcA6wfSB+oHBwDrB9MH0gcHAOwH0wfrBwcA7AfUB9MHBwDtB9QH7AcHAO0H1QfUBwcA7gfVB+0HBwDuB9YH1QcHANcH7gfvBwcA1wfWB+4HBwDYB+8H8AcHANgH1wfvBwcA2QfwB/EHBwDZB9gH8AcHANoH8QfyBwcA2gfZB/EHBwDbB/IH8wcHANsH2gfyBwcA3AfzB/QHBwDcB9sH8wcHAN0H9Af1BwcA3QfcB/QHBwDeB/UH9gcHAN4H3Qf1BwcA3wf2B/cHBwDfB94H9gcHAOAH9wf4BwcA4AffB/cHBwDhB/gH+QcHAOEH4Af4BwcA4gf5B/oHBwDiB+EH+QcHAPsH4gf6BwcA+wfjB+IHBwD8B+MH+wcHAPwH5AfjBwcA/QfkB/wHBwD9B+UH5AcHAP4H5Qf9BwcA/gfmB+UHBwDoB+YH/gcHAOgHzwfmBwcA/wcACAEIBwD/BwIIAAgHAAMIAgj/BwcAAwgECAIIBwABCAUIBggHAAEIAAgFCAcABwgICAkIBwAHCAoICAgHAAsICggHCAcACwgMCAoIBwAJCA0IDggHAAkICAgNCAcADwgMCAsIBwAPCBAIDAgHAA4IEQgSCAcADggNCBEIBwATCBAIDwgHABMIFAgQCAcAEggVCBYIBwASCBEIFQgHABcIFAgTCAcAFwgYCBQIBwAWCBkIGggHABYIFQgZCAcAGggECAMIBwAaCBkIBAgHAAYIGAgXCAcABggFCBgIBwAbCAAIAggHABsIHAgACAcABAgbCAIIBwAECB0IGwgHABwIBQgACAcAHAgeCAUIBwAKCB8ICAgHAAoIIAgfCAcAIQgKCAwIBwAhCCAICggHAAgIIggNCAcACAgfCCIIBwAjCAwIEAgHACMIIQgMCAcADQgkCBEIBwANCCIIJAgHACUIEAgUCAcAJQgjCBAIBwARCCYIFQgHABEIJAgmCAcAJwgUCBgIBwAnCCUIFAgHABUIKAgZCAcAFQgmCCgIBwAZCB0IBAgHABkIKAgdCAcAHggYCAUIBwAeCCcIGAgHABsIKQgcCAcAGwgqCCkIBwAdCCoIGwgHAB0IKwgqCAcAHAgsCB4IBwAcCCkILAgHACAILQgfCAcAIAguCC0IBwAhCC4IIAgHACEILwguCAcAHwgwCCIIBwAfCC0IMAgHACMILwghCAcAIwgxCC8IBwAiCDIIJAgHACIIMAgyCAcAJQgxCCMIBwAlCDMIMQgHACQINAgmCAcAJAgyCDQIBwAnCDMIJQgHACcINQgzCAcAJgg2CCgIBwAmCDQINggHACgIKwgdCAcAKAg2CCsIBwAeCDUIJwgHAB4ILAg1CAcAKgg3CCkIBwAqCDgINwgHACsIOAgqCAcAKwg5CDgIBwApCDoILAgHACkINwg6CAcALgg7CC0IBwAuCDwIOwgHAC8IPAguCAcALwg9CDwIBwAtCD4IMAgHAC0IOwg+CAcAMQg9CC8IBwAxCD8IPQgHADAIQAgyCAcAMAg+CEAIBwAzCD8IMQgHADMIQQg/CAcAMghCCDQIBwAyCEAIQggHADUIQQgzCAcANQhDCEEIBwA0CEQINggHADQIQghECAcANgg5CCsIBwA2CEQIOQgHACwIQwg1CAcALAg6CEMIBwA4CEUINwgHADgIRghFCAcAOQhGCDgIBwA5CEcIRggHADcISAg6CAcANwhFCEgIBwA8CEkIOwgHADwISghJCAcAPQhKCDwIBwA9CEsISggHADsITAg+CAcAOwhJCEwIBwA/CEsIPQgHAD8ITQhLCAcAPghOCEAIBwA+CEwITggHAEEITQg/CAcAQQhPCE0IBwBACFAIQggHAEAITghQCAcAQwhPCEEIBwBDCFEITwgHAEIIUghECAcAQghQCFIIBwBECEcIOQgHAEQIUghHCAcAOghRCEMIBwA6CEgIUQgHAEYIUwhFCAcARghUCFMIBwBHCFQIRggHAEcIVQhUCAcARQhWCEgIBwBFCFMIVggHAEoIVwhJCAcASghYCFcIBwBLCFgISggHAEsIWQhYCAcASQhaCEwIBwBJCFcIWggHAE0IWQhLCAcATQhbCFkIBwBMCFwITggHAEwIWghcCAcATwhbCE0IBwBPCF0IWwgHAE4IXghQCAcATghcCF4IBwBRCF0ITwgHAFEIXwhdCAcAUAhgCFIIBwBQCF4IYAgHAFIIVQhHCAcAUghgCFUIBwBICF8IUQgHAEgIVghfCAcAVAhhCFMIBwBUCGIIYQgHAFUIYghUCAcAVQhjCGIIBwBTCGQIVggHAFMIYQhkCAcAWAhlCFcIBwBYCGYIZQgHAFkIZghYCAcAWQhnCGYIBwBXCGgIWggHAFcIZQhoCAcAWwhnCFkIBwBbCGkIZwgHAFoIaghcCAcAWghoCGoIBwBdCGkIWwgHAF0IawhpCAcAXAhsCF4IBwBcCGoIbAgHAF8IawhdCAcAXwhtCGsIBwBeCG4IYAgHAF4IbAhuCAcAYAhjCFUIBwBgCG4IYwgHAFYIbQhfCAcAVghkCG0IBwBiCG8IYQgHAGIIcAhvCAcAYwhwCGIIBwBjCHEIcAgHAGEIcghkCAcAYQhvCHIIBwBmCHMIZQgHAGYIdAhzCAcAZwh0CGYIBwBnCHUIdAgHAGUIdghoCAcAZQhzCHYIBwBpCHUIZwgHAGkIdwh1CAcAaAh4CGoIBwBoCHYIeAgHAGsIdwhpCAcAawh5CHcIBwBqCHoIbAgHAGoIeAh6CAcAbQh5CGsIBwBtCHsIeQgHAGwIfAhuCAcAbAh6CHwIBwBuCHEIYwgHAG4IfAhxCAcAZAh7CG0IBwBkCHIIewgHAHAIfQhvCAcAcAh+CH0IBwBxCH4IcAgHAHEIfwh+CAcAbwiACHIIBwBvCH0IgAgHAHQIgQhzCAcAdAiCCIEIBwB1CIIIdAgHAHUIgwiCCAcAcwiECHYIBwBzCIEIhAgHAHcIgwh1CAcAdwiFCIMIBwB2CIYIeAgHAHYIhAiGCAcAeQiFCHcIBwB5CIcIhQgHAHgIiAh6CAcAeAiGCIgIBwB7CIcIeQgHAHsIiQiHCAcAegiKCHwIBwB6CIgIiggHAHwIfwhxCAcAfAiKCH8IBwByCIkIewgHAHIIgAiJCAcAfgiLCH0IBwB+CIwIiwgHAH8IjAh+CAcAfwiNCIwIBwB9CI4IgAgHAH0IiwiOCAcAggiPCIEIBwCCCJAIjwgHAIMIkAiCCAcAgwiRCJAIBwCBCJIIhAgHAIEIjwiSCAcAhQiRCIMIBwCFCJMIkQgHAIQIlAiGCAcAhAiSCJQIBwCHCJMIhQgHAIcIlQiTCAcAhgiWCIgIBwCGCJQIlggHAIkIlQiHCAcAiQiXCJUIBwCICJgIiggHAIgIlgiYCAcAigiNCH8IBwCKCJgIjQgHAIAIlwiJCAcAgAiOCJcIBwCMCJkIiwgHAIwImgiZCAcAjQiaCIwIBwCNCJsImggHAIsInAiOCAcAiwiZCJwIBwCQCJ0IjwgHAJAIngidCAcAkQieCJAIBwCRCJ8InggHAI8IoAiSCAcAjwidCKAIBwCTCJ8IkQgHAJMIoQifCAcAkgiiCJQIBwCSCKAIoggHAJUIoQiTCAcAlQijCKEIBwCUCKQIlggHAJQIogikCAcAlwijCJUIBwCXCKUIowgHAJYIpgiYCAcAlgikCKYIBwCYCJsIjQgHAJgIpgibCAcAjgilCJcIBwCOCJwIpQgHAJoIpwiZCAcAmgioCKcIBwCbCKgImggHAJsIqQioCAcAmQiqCJwIBwCZCKcIqggHAJ4IqwidCAcAngisCKsIBwCfCKwInggHAJ8IrQisCAcAnQiuCKAIBwCdCKsIrggHAKEIrQifCAcAoQivCK0IBwCgCLAIoggHAKAIrgiwCAcAowivCKEIBwCjCLEIrwgHAKIIsgikCAcAogiwCLIIBwClCLEIowgHAKUIswixCAcApAi0CKYIBwCkCLIItAgHAKYIqQibCAcApgi0CKkIBwCcCLMIpQgHAJwIqgizCAcAqAi1CKcIBwCoCLYItQgHAKkItgioCAcAqQi3CLYIBwCnCLgIqggHAKcItQi4CAcArAi5CKsIBwCsCLoIuQgHAK0IugisCAcArQi7CLoIBwCrCLwIrggHAKsIuQi8CAcArwi7CK0IBwCvCL0IuwgHAK4IvgiwCAcArgi8CL4IBwCxCL0IrwgHALEIvwi9CAcAsAjACLIIBwCwCL4IwAgHALMIvwixCAcAswjBCL8IBwCyCMIItAgHALIIwAjCCAcAtAi3CKkIBwC0CMIItwgHAKoIwQizCAcAqgi4CMEIBwC2CMMItQgHALYIxAjDCAcAtwjECLYIBwC3CMUIxAgHALUIxgi4CAcAtQjDCMYIBwC6CMcIuQgHALoIyAjHCAcAuwjICLoIBwC7CMkIyAgHALkIygi8CAcAuQjHCMoIBwC9CMkIuwgHAL0IywjJCAcAvAjMCL4IBwC8CMoIzAgHAL8Iywi9CAcAvwjNCMsIBwC+CM4IwAgHAL4IzAjOCAcAwQjNCL8IBwDBCM8IzQgHAMAI0AjCCAcAwAjOCNAIBwDCCMUItwgHAMII0AjFCAcAuAjPCMEIBwC4CMYIzwgHAMQI0QjDCAcAxAjSCNEIBwABCNII/wcHAAEI0QjSCAcAxQjSCMQIBwDFCNMI0ggHAP8H0wgDCAcA/wfSCNMIBwDDCNQIxggHAMMI0QjUCAcABgjRCAEIBwAGCNQI0QgHAMgI1QjHCAcAyAjWCNUIBwDXCNYI2AgHANcI1QjWCAcAyQjWCMgIBwDJCNkI1ggHANgI2QjaCAcA2AjWCNkIBwDHCNsIyggHAMcI1QjbCAcA3AjVCNcIBwDcCNsI1QgHAMsI2QjJCAcAywjdCNkIBwDaCN0IDwgHANoI2QjdCAcAygjeCMwIBwDKCNsI3ggHABII2wjcCAcAEgjeCNsIBwDNCN0IywgHAM0I3wjdCAcADwjfCBMIBwAPCN0I3wgHAMwI4AjOCAcAzAjeCOAIBwAWCN4IEggHABYI4AjeCAcAzwjfCM0IBwDPCOEI3wgHABMI4QgXCAcAEwjfCOEIBwDOCOII0AgHAM4I4AjiCAcAGgjgCBYIBwAaCOII4AgHANAI0wjFCAcA0AjiCNMIBwADCOIIGggHAAMI0wjiCAcAxgjhCM8IBwDGCNQI4QgHABcI1AgGCAcAFwjhCNQIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ0wQdUDAAByYXY0LXNoaWVsZHMA4AFWDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ8wQZIDAAByYXY0LXRpcmUAwAE2DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kPSg9LD0wPTQ9OD08PUA9RD1IPUw9UD1UPVg9XD1gPWQ9aD1sPXA9dD14PXw9gD2EPYg9jD2QPZQ9mD2cPaA9pD2oPaw9sD20Pbg9vD3APcQ9yD3MPdA91D3YPdw94D3kPeg97D3wPfQ9+D38PgA+BD4IPgw+ED4UPhg+HD4gPiQ+KD4sPjA+ND44Pjw+QD5EPkg+TD5QPlQ+WD5cPmA+ZD5oPmw+cD50Png+fD6APoQ+iD6MPpA+lD6YPpw+oD6kPqg+rD6wPrQ+uD68PsA+xD7IPsw+0D7UPtg+3D7gPuQ+6D7sPvA+9D74Pvw/AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MP1A/VD9YP1w/YD9kP2g/bD9wP3Q/eD98P4A/hD+IP4w/kD+UP5g/nD+gP6Q/qD+sP7A/tD+4P7w/wD/EP8g/zD/QP9Q/2D/cP+A/5D/oP+w/8D/0P/g//DwAQARACEAMQBBAFEAYQBxAIEAkQChALEAwQDRAOEA8QEBAREBIQExAUEBUQFhAXEBgQGRAaEBsQHBAdEB4QHxAgECEQIhAjECQQJRAmECcQKBApECoQKxAsEC0QLhAvEDAQMRAyEDMQNBA1EDYQNxA4EDkQOhA7EDwQPRA+ED8QQBBBEEIQQxBEEEUQRhBHEEgQSRBKEEsQTBBNEE4QTxBQEFEQUhBTEFQQVRBWEFcQWBBZEFoQWxBcEF0QXhBfEGAQYRBiEGMQZBBlEGYQZxBoEGkQahBrEGwQbRBuEG8QcBBxEHIQcxB0EHUQdhB3EHgQeRB6EHsQfBB9EH4QfxCAEIEQghCDEIQQhRCGEIcQiBCJEIoQixCMEI0QjhCPEJAQkRCSEJMQlBCVEJYQlxCYEJkQmhCbEJwQnRCeEJ8QoBChEKIQoxCkEKUQphCnEKgQqRCqEKsQrBCtEK4QrxCwELEQshCzELQQtRC2ELcQuBC5ELoQuxC8EL0QvhC/EMAQwRDCEMMQxBDFEMYQxxDIEMkQyhDLEMwQzRDOEM8Q0BDRENIQ0xDUENUQ1hDXENgQ2RDaENsQ3BDdEN4Q3xDgEOEQ4hDjEOQQ5RDmEOcQ6BDpEOoQ6xDsEO0Q7hDvEPAQ8RDyEPMQ9BD1EFBB3kMAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPQAAgD8AAAAAAAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAQAAgAFAAcABAAAAAIABwAGAAUABwAHAAYABAAFAAcACAAHAAkABwAIAAYABwAHAAoACQALAAcACgAIAAkABwAMAAsADQAHAAwACgALAAcADgANAA8ABwAOAAwADQAHABAADwARAAcAEAAOAA8ABwASABEAEwAHABIAEAARAAcAFAATABUABwAUABIAEwAHABYAFQAXAAcAFgAUABUABwAYABcAGQAHABgAFgAXAAcAGgAZABsABwAaABgAGQAHABwAGwAdAAcAHAAaABsABwAeABwAHQAHAB4AHwAcAAcAIAAfAB4ABwAgACEAHwAHACIAIQAgAAcAIgAjACEABwAkACMAIgAHACQAJQAjAAcAJgAlACQABwAmACcAJQAHACgAJwAmAAcAKAApACcABwAqACkAKAAHACoAKwApAAcALAArACoABwAsAC0AKwAHAC4ALQAsAAcALgAvAC0ABwAwAC8ALgAHADAAMQAvAAcAMgAxADAABwAyADMAMQAHADQAMwAyAAcANAA1ADMABwA2ADUANAAHADYANwA1AAcAOAA3ADYABwA4ADkANwAHADoAOQA4AAcAOgA7ADkABwA8ADsAOgAHADwAPQA7AAcAPgA9ADwABwA+AD8APQAHAEAAPwA+AAcAQABBAD8ABwBCAEEAQAAHAEIAQwBBAAcARABDAEIABwBEAEUAQwAHAEYARQBEAAcARgBHAEUABwBIAEcARgAHAEgASQBHAAcASgBJAEgABwBKAEsASQAHAEwASwBKAAcATABNAEsABwBOAE0ATAAHAE4ATwBNAAcAUABOAFEABwBQAE8ATgAHAFIAUQBTAAcAUgBQAFEABwBUAFMAVQAHAFQAUgBTAAcAVgBVAFcABwBWAFQAVQAHAFgAVwBZAAcAWABWAFcABwBaAFkAWwAHAFoAWABZAAcAXABbAF0ABwBcAFoAWwAHAF4AXQBfAAcAXgBcAF0ABwBgAF8AYQAHAGAAXgBfAAcAYgBhAGMABwBiAGAAYQAHAAMAYwABAAcAAwBiAGMABwBkAAMAAAAHAGQAZQADAAcAZgAAAAQABwBmAGQAAAAHAGcABAAGAAcAZwBmAAQABwBoAAYACAAHAGgAZwAGAAcAaQAIAAoABwBpAGgACAAHAGoACgAMAAcAagBpAAoABwBrAAwADgAHAGsAagAMAAcAbAAOABAABwBsAGsADgAHAG0AEAASAAcAbQBsABAABwBuABIAFAAHAG4AbQASAAcAbwAUABYABwBvAG4AFAAHAHAAFgAYAAcAcABvABYABwBxABgAGgAHAHEAcAAYAAcAcgAaABwABwByAHEAGgAHAB8AcgAcAAcAHwBzAHIABwAhAHMAHwAHACEAdABzAAcAIwB0ACEABwAjAHUAdAAHACUAdQAjAAcAJQB2AHUABwAnAHYAJQAHACcAdwB2AAcAKQB3ACcABwApAHgAdwAHACsAeAApAAcAKwB5AHgABwAtAHkAKwAHAC0AegB5AAcALwB6AC0ABwAvAHsAegAHADEAewAvAAcAMQB8AHsABwAzAHwAMQAHADMAfQB8AAcANQB9ADMABwA1AH4AfQAHADcAfgA1AAcANwB/AH4ABwA5AH8ANwAHADkAgAB/AAcAOwCAADkABwA7AIEAgAAHAD0AgQA7AAcAPQCCAIEABwA/AIIAPQAHAD8AgwCCAAcAQQCDAD8ABwBBAIQAgwAHAEMAhABBAAcAQwCFAIQABwBFAIUAQwAHAEUAhgCFAAcARwCGAEUABwBHAIcAhgAHAEkAhwBHAAcASQCIAIcABwBLAIgASQAHAEsAiQCIAAcATQCJAEsABwBNAIoAiQAHAE8AigBNAAcATwCLAIoABwCMAE8AUAAHAIwAiwBPAAcAjQBQAFIABwCNAIwAUAAHAI4AUgBUAAcAjgCNAFIABwCPAFQAVgAHAI8AjgBUAAcAkABWAFgABwCQAI8AVgAHAJEAWABaAAcAkQCQAFgABwCSAFoAXAAHAJIAkQBaAAcAkwBcAF4ABwCTAJIAXAAHAJQAXgBgAAcAlACTAF4ABwCVAGAAYgAHAJUAlABgAAcAZQBiAAMABwBlAJUAYgAHAJYAZACXAAcAlgBlAGQABwCYAGQAZgAHAJgAlwBkAAcAmQBmAGcABwCZAJgAZgAHAJoAZwBoAAcAmgCZAGcABwCbAGgAaQAHAJsAmgBoAAcAnABpAGoABwCcAJsAaQAHAJ0AagBrAAcAnQCcAGoABwCeAGsAbAAHAJ4AnQBrAAcAnwBsAG0ABwCfAJ4AbAAHAKAAbQBuAAcAoACfAG0ABwChAG4AbwAHAKEAoABuAAcAogBvAHAABwCiAKEAbwAHAKMAcABxAAcAowCiAHAABwCkAHEAcgAHAKQAowBxAAcAcwCkAHIABwBzAKUApAAHAHQApQBzAAcAdACmAKUABwB1AKYAdAAHAHUApwCmAAcAdgCnAHUABwB2AKgApwAHAHcAqAB2AAcAdwCpAKgABwB4AKkAdwAHAHgAqgCpAAcAeQCqAHgABwB5AKsAqgAHAHoAqwB5AAcAegCsAKsABwB7AKwAegAHAHsArQCsAAcAfACtAHsABwB8AK4ArQAHAH0ArgB8AAcAfQCvAK4ABwB+AK8AfQAHAH4AsACvAAcAfwCwAH4ABwB/ALEAsAAHAH8AsgCxAAcAfwCAALIABwCAALMAsgAHAIAAgQCzAAcAgQC0ALMABwCBAIIAtAAHAIIAtQC0AAcAggCDALUABwCDALYAtQAHAIMAhAC2AAcAhAC3ALYABwCEAIUAtwAHAIUAuAC3AAcAhQCGALgABwCGALkAuAAHAIYAhwC5AAcAhwC6ALkABwCHAIgAugAHAIgAuwC6AAcAiACJALsABwCJALwAuwAHAIkAigC8AAcAigC9ALwABwCKAIsAvQAHAL0AjAC+AAcAvQCLAIwABwC+AI0AvwAHAL4AjACNAAcAvwCOAMAABwC/AI0AjgAHAMAAjwDBAAcAwACOAI8ABwDBAJAAwgAHAMEAjwCQAAcAwgCRAMMABwDCAJAAkQAHAMMAkgDEAAcAwwCRAJIABwDEAJMAxQAHAMQAkgCTAAcAxQCUAMYABwDFAJMAlAAHAMYAlQDHAAcAxgCUAJUABwDHAGUAlgAHAMcAlQBlAAcAyADEAMUABwDIAMkAxAAHAMYAyADFAAcAxgDKAMgABwDHAMoAxgAHAMcAywDKAAcAmADMAJcABwCYAM0AzAAHAJkAzQCYAAcAmQDOAM0ABwCaAM4AmQAHAJoAzwDOAAcAnQDQAJwABwCdANEA0AAHAJ4A0QCdAAcAngDSANEABwCfANIAngAHAJ8A0wDSAAcAoQDUANUABwChAKIA1AAHAKIA1gDUAAcAogCjANYABwCjANcA1gAHAKMApADXAAcApgDYANkABwCmAKcA2AAHAKcA2gDYAAcApwCoANoABwCoANsA2gAHAKgAqQDbAAcAqwDcAN0ABwCrAKwA3AAHANwArQDeAAcA3ACsAK0ABwDeAK4A3wAHAN4ArQCuAAcA4ACxAOEABwDgALAAsQAHAOEAsgDiAAcA4QCxALIABwDiALMA4wAHAOIAsgCzAAcA5AC2AOUABwDkALUAtgAHAOUAtwDmAAcA5QC2ALcABwDmALgA5wAHAOYAtwC4AAcA6AC6ALsABwDoAOkAugAHAOoAuwC8AAcA6gDoALsABwDrALwAvQAHAOsA6gC8AAcA7AC/AMAABwDsAO0AvwAHAO4AwADBAAcA7gDsAMAABwDvAMEAwgAHAO8A7gDBAAcA8ADJAMgABwDwAPEAyQAHAMoA8ADIAAcAygDyAPAABwDLAPIAygAHAMsA8wDyAAcAzQD0AMwABwDNAPUA9AAHAM4A9QDNAAcAzgD2APUABwDPAPYAzgAHAM8A9wD2AAcA0QD4ANAABwDRAPkA+AAHANIA+QDRAAcA0gD6APkABwDTAPoA0gAHANMA+wD6AAcA1QD8AP0ABwDVANQA/AAHANQA/gD8AAcA1ADWAP4ABwDWAP8A/gAHANYA1wD/AAcA2QAAAQEBBwDZANgAAAEHANgAAgEAAQcA2ADaAAIBBwDaAAMBAgEHANoA2wADAQcA3QAEAQUBBwDdANwABAEHAAQB3gAGAQcABAHcAN4ABwAGAd8ABwEHAAYB3gDfAAcACAHhAAkBBwAIAeAA4QAHAAkB4gAKAQcACQHhAOIABwAKAeMACwEHAAoB4gDjAAcADAHlAA0BBwAMAeQA5QAHAA0B5gAOAQcADQHlAOYABwAOAecADwEHAA4B5gDnAAcAEAHpAOgABwAQAREB6QAHABIB6ADqAAcAEgEQAegABwATAeoA6wAHABMBEgHqAAcAFAHtAOwABwAUARUB7QAHABYB7ADuAAcAFgEUAewABwAXAe4A7wAHABcBFgHuAAcAGAEZAfEABwAYARoBGQEHABsB8QDwAAcAGwEYAfEABwDyABsB8AAHAPIAHAEbAQcA8wAcAfIABwDzAB0BHAEHAB4BHQHzAAcAHgEfAR0BBwD0AB8BHgEHAPQAIAEfAQcA9QAgAfQABwD1ACEBIAEHAPYAIQH1AAcA9gAiASEBBwD3ACIB9gAHAPcAIwEiAQcAJAEjAfcABwAkASUBIwEHAPgAJQEkAQcA+AAmASUBBwD5ACYB+AAHAPkAJwEmAQcA+gAnAfkABwD6ACgBJwEHAPsAKAH6AAcA+wApASgBBwAqASkB+wAHACoBKwEpAQcAKgEsASsBBwAqAf0ALAEHAP0ALQEsAQcA/QD8AC0BBwD8AC4BLQEHAPwA/gAuAQcA/gAvAS4BBwD+AP8ALwEHAP8AMAEvAQcA/wAxATABBwAxATIBMAEHADEBAQEyAQcAAQEzATIBBwABAQABMwEHAAABNAEzAQcAAAECATQBBwACATUBNAEHAAIBAwE1AQcAAwE2ATUBBwADATcBNgEHADcBOAE2AQcANwEFATgBBwAFATkBOAEHAAUBBAE5AQcAOQEGAToBBwA5AQQBBgEHADoBBwE7AQcAOgEGAQcBBwA7ATwBPQEHADsBBwE8AQcAPQEIAT4BBwA9ATwBCAEHAD4BCQE/AQcAPgEIAQkBBwA/AQoBQAEHAD8BCQEKAQcAQAELAUEBBwBAAQoBCwEHAEEBQgFDAQcAQQELAUIBBwBDAQwBRAEHAEMBQgEMAQcARAENAUUBBwBEAQwBDQEHAEUBDgFGAQcARQENAQ4BBwBGAQ8BRwEHAEYBDgEPAQcASAEPAUkBBwBIAUcBDwEHAEoBSQERAQcASgFIAUkBBwBLAREBEAEHAEsBSgERAQcATAEQARIBBwBMAUsBEAEHAE0BEgETAQcATQFMARIBBwBOARMBTwEHAE4BTQETAQcAUAFPARUBBwBQAU4BTwEHAFEBFQEUAQcAUQFQARUBBwBSARQBFgEHAFIBUQEUAQcAUwEWARcBBwBTAVIBFgEHABoBFwEZAQcAGgFTARcBBwBUARgBVQEHAFQBGgEYAQcAVQEbAVYBBwBVARgBGwEHABsBVwFWAQcAGwEcAVcBBwAcAVgBVwEHABwBHQFYAQcAHQFZAVgBBwAdAR8BWQEHAB8BWgFZAQcAHwEgAVoBBwAgAVsBWgEHACABIQFbAQcAIQFcAVsBBwAhASIBXAEHACIBXQFcAQcAIgEjAV0BBwAjAV4BXQEHACMBJQFeAQcAJQFfAV4BBwAlASYBXwEHACYBYAFfAQcAJgEnAWABBwAnAWEBYAEHACcBKAFhAQcAKAFiAWEBBwAoASkBYgEHACkBYwFiAQcAKQErAWMBBwAsAWMBKwEHACwBZAFjAQcALQFkASwBBwAtAWUBZAEHAC4BZQEtAQcALgFmAWUBBwAvAWYBLgEHAC8BZwFmAQcAMAFnAS8BBwAwAWgBZwEHADIBaAEwAQcAMgFpAWgBBwAzAWkBMgEHADMBagFpAQcANAFqATMBBwA0AWsBagEHADUBawE0AQcANQFsAWsBBwA2AWwBNQEHADYBbQFsAQcAOAFtATYBBwA4AW4BbQEHADkBbgE4AQcAOQFvAW4BBwBwATkBOgEHAHABbwE5AQcAcQE6ATsBBwBxAXABOgEHAHIBOwE9AQcAcgFxATsBBwBzAT0BPgEHAHMBcgE9AQcAdAE+AT8BBwB0AXMBPgEHAHUBPwFAAQcAdQF0AT8BBwB2AUABQQEHAHYBdQFAAQcAdwFBAUMBBwB3AXYBQQEHAHgBQwFEAQcAeAF3AUMBBwB5AUQBRQEHAHkBeAFEAQcAegFFAUYBBwB6AXkBRQEHAHsBRgFHAQcAewF6AUYBBwB7AUgBfAEHAHsBRwFIAQcAfAFKAX0BBwB8AUgBSgEHAH0BSwF+AQcAfQFKAUsBBwB+AUwBfwEHAH4BSwFMAQcAfwFNAYABBwB/AUwBTQEHAIABTgGBAQcAgAFNAU4BBwCBAVABggEHAIEBTgFQAQcAggFRAYMBBwCCAVABUQEHAIMBUgGEAQcAgwFRAVIBBwCEAVMBhQEHAIQBUgFTAQcAhQEaAVQBBwCFAVMBGgEHAIYBVQGHAQcAhgFUAVUBBwCHAVYBiAEHAIcBVQFWAQcAVgGJAYgBBwBWAVcBiQEHAFcBigGJAQcAVwFYAYoBBwBYAYsBigEHAFgBWQGLAQcAWQGMAYsBBwBZAVoBjAEHAFoBjQGMAQcAWgFbAY0BBwBbAY4BjQEHAFsBXAGOAQcAXAGPAY4BBwBcAV0BjwEHAF0BkAGPAQcAXQFeAZABBwBeAZEBkAEHAF4BXwGRAQcAXwGSAZEBBwBfAWABkgEHAGABkwGSAQcAYAFhAZMBBwBhAZQBkwEHAGEBYgGUAQcAYgGVAZQBBwBiAWMBlQEHAGQBlQFjAQcAZAGWAZUBBwBlAZYBZAEHAGUBlwGWAQcAZgGXAWUBBwBmAZgBlwEHAGcBmAFmAQcAZwGZAZgBBwBoAZkBZwEHAGgBmgGZAQcAaQGaAWgBBwBpAZsBmgEHAGoBmwFpAQcAagGcAZsBBwBrAZwBagEHAGsBnQGcAQcAbAGdAWsBBwBsAZ4BnQEHAG0BngFsAQcAbQGfAZ4BBwBuAZ8BbQEHAG4BoAGfAQcAbwGgAW4BBwBvAaEBoAEHAKIBbwFwAQcAogGhAW8BBwCjAXABcQEHAKMBogFwAQcApAFxAXIBBwCkAaMBcQEHAKUBcgFzAQcApQGkAXIBBwCmAXMBdAEHAKYBpQFzAQcApwF0AXUBBwCnAaYBdAEHAKgBdQF2AQcAqAGnAXUBBwCpAXYBdwEHAKkBqAF2AQcAqgF3AXgBBwCqAakBdwEHAKsBeAF5AQcAqwGqAXgBBwCsAXkBegEHAKwBqwF5AQcArQF6AXsBBwCtAawBegEHAK0BfAGuAQcArQF7AXwBBwCuAX0BrwEHAK4BfAF9AQcArwF+AbABBwCvAX0BfgEHALABfwGxAQcAsAF+AX8BBwCxAYABsgEHALEBfwGAAQcAsgGBAbMBBwCyAYABgQEHALMBggG0AQcAswGBAYIBBwC0AYMBtQEHALQBggGDAQcAtQGEAbYBBwC1AYMBhAEHALYBhQG3AQcAtgGEAYUBBwC3AVQBhgEHALcBhQFUAQcAuAGHAbkBBwC4AYYBhwEHALkBiAG6AQcAuQGHAYgBBwCIAbsBugEHAIgBiQG7AQcAiQG8AbsBBwCJAYoBvAEHAIoBvQG8AQcAigGLAb0BBwCLAb4BvQEHAIsBjAG+AQcAjAG/Ab4BBwCMAY0BvwEHAI0BwAG/AQcAjQGOAcABBwCOAcEBwAEHAI4BjwHBAQcAjwHCAcEBBwCPAZABwgEHAJABwwHCAQcAkAGRAcMBBwCRAcQBwwEHAJEBkgHEAQcAkgHFAcQBBwCSAZMBxQEHAJMBxgHFAQcAkwGUAcYBBwCUAccBxgEHAJQBlQHHAQcAlgHHAZUBBwCWAcgBxwEHAJcByAGWAQcAlwHJAcgBBwCYAckBlwEHAJgBygHJAQcAmQHKAZgBBwCZAcsBygEHAJoBywGZAQcAmgHMAcsBBwCbAcwBmgEHAJsBzQHMAQcAnAHNAZsBBwCcAc4BzQEHAJ0BzgGcAQcAnQHPAc4BBwCeAc8BnQEHAJ4B0AHPAQcAnwHQAZ4BBwCfAdEB0AEHAKAB0QGfAQcAoAHSAdEBBwChAdIBoAEHAKEB0wHSAQcA1AGhAaIBBwDUAdMBoQEHANUBogGjAQcA1QHUAaIBBwDWAaMBpAEHANYB1QGjAQcA1wGkAaUBBwDXAdYBpAEHANgBpQGmAQcA2AHXAaUBBwDZAaYBpwEHANkB2AGmAQcA2gGnAagBBwDaAdkBpwEHANsBqAGpAQcA2wHaAagBBwDcAakBqgEHANwB2wGpAQcA3QGqAasBBwDdAdwBqgEHAN4BqwGsAQcA3gHdAasBBwDfAawBrQEHAN8B3gGsAQcA3wGuAeABBwDfAa0BrgEHAOABrwHhAQcA4AGuAa8BBwDhAbAB4gEHAOEBrwGwAQcA4gGxAeMBBwDiAbABsQEHAOMBsgHkAQcA4wGxAbIBBwDkAbMB5QEHAOQBsgGzAQcA5QG0AeYBBwDlAbMBtAEHAOYBtQHnAQcA5gG0AbUBBwDnAbYB6AEHAOcBtQG2AQcA6AG3AekBBwDoAbYBtwEHAOkBhgG4AQcA6QG3AYYBBwDqAbgBuQEHAOoB6wG4AQcA7AG5AboBBwDsAeoBuQEHALsB7AG6AQcAuwHtAewBBwC8Ae0BuwEHALwB7gHtAQcAvQHuAbwBBwC9Ae8B7gEHAL4B7wG9AQcAvgHwAe8BBwC/AfABvgEHAL8B8QHwAQcAwAHxAb8BBwDAAfIB8QEHAMEB8gHAAQcAwQHzAfIBBwDCAfMBwQEHAMIB9AHzAQcAwwH0AcIBBwDDAfUB9AEHAMQB9QHDAQcAxAH2AfUBBwDFAfYBxAEHAMUB9wH2AQcAxgH3AcUBBwDGAfgB9wEHAMcB+AHGAQcAxwH5AfgBBwDIAfkBxwEHAMgB+gH5AQcAyQH6AcgBBwDJAfsB+gEHAMoB+wHJAQcAygH8AfsBBwDLAfwBygEHAMsB/QH8AQcAzAH9AcsBBwDMAf4B/QEHAM0B/gHMAQcAzQH/Af4BBwDOAf8BzQEHAM4BAAL/AQcAzwEAAs4BBwDPAQECAAIHANABAQLPAQcA0AECAgECBwDRAQIC0AEHANEBAwICAgcA0gEDAtEBBwDSAQQCAwIHANMBBALSAQcA0wEFAgQCBwAGAtMB1AEHAAYCBQLTAQcABwLUAdUBBwAHAgYC1AEHAAgC1QHWAQcACAIHAtUBBwAJAtYB1wEHAAkCCALWAQcACgLXAdgBBwAKAgkC1wEHAAsC2AHZAQcACwIKAtgBBwAMAtkB2gEHAAwCCwLZAQcADQLaAdsBBwANAgwC2gEHAA4C2wHcAQcADgINAtsBBwAPAtwB3QEHAA8CDgLcAQcAEALdAd4BBwAQAg8C3QEHABEC3gHfAQcAEQIQAt4BBwASAt8B4AEHABICEQLfAQcAEwLgAeEBBwATAhIC4AEHABQC4QHiAQcAFAITAuEBBwAVAuIB4wEHABUCFALiAQcAFgLjAeQBBwAWAhUC4wEHABcC5AHlAQcAFwIWAuQBBwAYAuUB5gEHABgCFwLlAQcAGQLmAecBBwAZAhgC5gEHABoC5wHoAQcAGgIZAucBBwAbAugB6QEHABsCGgLoAQcA6wHpAbgBBwDrARsC6QEHAMQAHAIdAgcAxADJABwCBwAeAsQAHQIHAB4CwwDEAAcAxwAfAiACBwDHAJYAHwIHACECxwAgAgcAIQLLAMcABwCWACICHwIHAJYAlwAiAgcAlwAjAiICBwCXAMwAIwIHAJoAJAIlAgcAmgCbACQCBwAmApoAJQIHACYCzwCaAAcAmwAnAiQCBwCbAJwAJwIHAJwAKAInAgcAnADQACgCBwCfACkCKgIHAJ8AoAApAgcAKwKfACoCBwArAtMAnwAHAKAALAIpAgcAoAChACwCBwAsAtUALQIHACwCoQDVAAcA1wAuAi8CBwDXAKQALgIHAKQAMAIuAgcApAClADACBwClADECMAIHAKUApgAxAgcAMQLZADICBwAxAqYA2QAHANsAMwI0AgcA2wCpADMCBwCpADUCMwIHAKkAqgA1AgcAqgA2AjUCBwCqAKsANgIHADYC3QA3AgcANgKrAN0ABwDfADgCOQIHAN8ArgA4AgcAOAKvADoCBwA4Aq4ArwAHADoCsAA7AgcAOgKvALAABwA7AuAAPAIHADsCsADgAAcA4wA9Aj4CBwDjALMAPQIHAD0CtAA/AgcAPQKzALQABwA/ArUAQAIHAD8CtAC1AAcAQALkAEECBwBAArUA5AAHAOcAQgJDAgcA5wC4AEICBwBCArkARAIHAEICuAC5AAcAugBFAkYCBwC6AOkARQIHAEQCugBGAgcARAK5ALoABwBHAr0ASAIHAEcC6wC9AAcASAK+AEkCBwBIAr0AvgAHAL8ASgJLAgcAvwDtAEoCBwBJAr8ASwIHAEkCvgC/AAcATALCAE0CBwBMAu8AwgAHAE0CwwAeAgcATQLCAMMABwDJAE4CHAIHAMkA8QBOAgcA8QBPAk4CBwDxABkBTwIHAFAC8wBRAgcAUAIeAfMABwBRAssAIQIHAFEC8wDLAAcAzABSAiMCBwDMAPQAUgIHAFICHgFQAgcAUgL0AB4BBwBTAvcAVAIHAFMCJAH3AAcAVALPACYCBwBUAvcAzwAHANAAVQIoAgcA0AD4AFUCBwBVAiQBUwIHAFUC+AAkAQcAVgL7AFcCBwBWAioB+wAHAFcC0wArAgcAVwL7ANMABwAtAv0AWAIHAC0C1QD9AAcAWAIqAVYCBwBYAv0AKgEHAP8ALwJZAgcA/wDXAC8CBwBaAv8AWQIHAFoCMQH/AAcAMgIBAVsCBwAyAtkAAQEHAFsCMQFaAgcAWwIBATEBBwADATQCXAIHAAMB2wA0AgcAXQIDAVwCBwBdAjcBAwEHADcCBQFeAgcANwLdAAUBBwBeAjcBXQIHAF4CBQE3AQcAPAFfAmACBwA8AQcBXwIHAAcBOQJfAgcABwHfADkCBwAIAWACYQIHAAgBPAFgAgcAPAIIAWECBwA8AuAACAEHAEIBYgJjAgcAQgELAWICBwALAT4CYgIHAAsB4wA+AgcADAFjAmQCBwAMAUIBYwIHAEECDAFkAgcAQQLkAAwBBwBJAWUCZgIHAEkBDwFlAgcADwFDAmUCBwAPAecAQwIHAOkAZwJFAgcA6QARAWcCBwARAWYCZwIHABEBSQFmAgcATwFoAmkCBwBPARMBaAIHAGgC6wBHAgcAaAITAesABwDtAGoCSgIHAO0AFQFqAgcAFQFpAmoCBwAVAU8BaQIHABkBawJPAgcAGQEXAWsCBwBrAu8ATAIHAGsCFwHvAAcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHcCfAJ1AgcAdwJ9AnwCBwB+AnsCeAIHAH4CfwJ7AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCDAogCgQIHAIMCiQKIAgcAigKHAoQCBwCKAosChwIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAlAKOApUCBwCUAowCjgIHAJIClgKXAgcAkgKRApYCBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAKACmgKhAgcAoAKYApoCBwCeAqICowIHAJ4CnQKiAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCsAqYCrQIHAKwCpAKmAgcAqgKuAq8CBwCqAqkCrgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAuAKyArkCBwC4ArACsgIHALYCugK7AgcAtgK1AroCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAMQCvgLFAgcAxAK8Ar4CBwDCAsYCxwIHAMICwQLGAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDLAtACyQIHAMsC0QLQAgcA0gLPAswCBwDSAtMCzwIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA1wLcAtUCBwDXAt0C3AIHAN4C2wLYAgcA3gLfAtsCBwDgAm4C4QIHAOACbAJuAgcAcgLiAuMCBwByAnEC4gIHAOIC5ALlAgcA4gJxAuQCBwBxAuYC5AIHAHECcwLmAgcAcwLnAuYCBwBzAnkC5wIHAHkC6ALnAgcAeQJ7AugCBwB7AukC6AIHAHsCfwLpAgcAfwLqAukCBwB/AoUC6gIHAIUC6wLqAgcAhQKHAusCBwCHAuwC6wIHAIcCiwLsAgcAiwLtAuwCBwCLAo8C7QIHAO0CjALuAgcA7QKPAowCBwDuApQC7wIHAO4CjAKUAgcA7wKbAvACBwDvApQCmwIHAPACmALxAgcA8AKbApgCBwDxAqAC8gIHAPECmAKgAgcA8gKnAvMCBwDyAqACpwIHAPMCpAL0AgcA8wKnAqQCBwD0AqwC9QIHAPQCpAKsAgcA9QKzAvYCBwD1AqwCswIHAPYCsAL3AgcA9gKzArACBwD3ArgC+AIHAPcCsAK4AgcA+AK/AvkCBwD4ArgCvwIHAPkCvAL6AgcA+QK/ArwCBwD6AsQC+wIHAPoCvALEAgcA+wLNAvwCBwD7AsQCzQIHAM0C/QL8AgcAzQLPAv0CBwDPAv4C/QIHAM8C0wL+AgcA0wL/Av4CBwDTAtkC/wIHANkCAAP/AgcA2QLbAgADBwDbAgEDAAMHANsC3wIBAwcA3wLlAgEDBwDfAuIC5QIHAOQCAgPlAgcA5AIDAwIDBwDmAgMD5AIHAOYCBAMDAwcA5gIFAwQDBwDmAucCBQMHAOcCBgMFAwcA5wLoAgYDBwDoAgcDBgMHAOgC6QIHAwcA6QIIAwcDBwDpAuoCCAMHAOoCCQMIAwcA6gLrAgkDBwDrAgoDCQMHAOsC7AIKAwcA7AILAwoDBwDsAu0CCwMHAAsD7gIMAwcACwPtAu4CBwAMA+8CDQMHAAwD7gLvAgcADQPwAg4DBwANA+8C8AIHAA4D8QIPAwcADgPwAvECBwAPA/ICEAMHAA8D8QLyAgcAEAPzAhEDBwAQA/IC8wIHABED9AISAwcAEQPzAvQCBwATA/QC9QIHABMDEgP0AgcAFAP1AvYCBwAUAxMD9QIHABUD9gL3AgcAFQMUA/YCBwAWA/cC+AIHABYDFQP3AgcAFwP4AvkCBwAXAxYD+AIHABgD+QL6AgcAGAMXA/kCBwAZA/oC+wIHABkDGAP6AgcAGgP7AvwCBwAaAxkD+wIHAP0CGgP8AgcA/QIbAxoDBwD+AhsD/QIHAP4CHAMbAwcA/wIcA/4CBwD/Ah0DHAMHAAADHQP/AgcAAAMeAx0DBwABAx4DAAMHAAEDHwMeAwcA5QIfAwEDBwDlAgIDHwMHAAIDIAMhAwcAAgMDAyADBwADAyIDIAMHAAMDBAMiAwcABAMjAyIDBwAEAwUDIwMHAAUDJAMjAwcABQMGAyQDBwAGAyUDJAMHAAYDBwMlAwcABwMmAyUDBwAHAwgDJgMHAAgDJwMmAwcACAMJAycDBwAJAygDJwMHAAkDCgMoAwcACgMpAygDBwAKAwsDKQMHACkDDAMqAwcAKQMLAwwDBwAqAw0DKwMHACoDDAMNAwcAKwMOAywDBwArAw0DDgMHACwDDwMtAwcALAMOAw8DBwAtAxADLgMHAC0DDwMQAwcALgMRAy8DBwAuAxADEQMHAC8DEgMwAwcALwMRAxIDBwAwAxMDMQMHADADEgMTAwcAMQMUAzIDBwAxAxMDFAMHADIDFQMzAwcAMgMUAxUDBwAzAxYDNAMHADMDFQMWAwcANAMXAzUDBwA0AxYDFwMHADUDGAM2AwcANQMXAxgDBwA2AxkDNwMHADYDGAMZAwcANwMaAzgDBwA3AxkDGgMHABoDOQM4AwcAGgMbAzkDBwAbAzoDOQMHABsDHAM6AwcAHAM7AzoDBwAcAx0DOwMHAB0DPAM7AwcAHQMeAzwDBwAeAz0DPAMHAB4DHwM9AwcAHwMhAz0DBwAfAwIDIQMHACEDPgM/AwcAIQMgAz4DBwAgA0ADPgMHACADIgNAAwcAIgNBA0ADBwAiAyMDQQMHACMDQgNBAwcAIwMkA0IDBwAkA0MDQgMHACQDJQNDAwcAJQNEA0MDBwAlAyYDRAMHACYDRQNEAwcAJgMnA0UDBwAnA0YDRQMHACcDKANGAwcAKANHA0YDBwAoAykDRwMHAEcDKgNIAwcARwMpAyoDBwBIAysDSQMHAEgDKgMrAwcASQMsA0oDBwBJAysDLAMHAEoDLQNLAwcASgMsAy0DBwBLAy4DTAMHAEsDLQMuAwcATAMvA00DBwBMAy4DLwMHAE0DMANOAwcATQMvAzADBwBOAzEDTwMHAE4DMAMxAwcATwMyA1ADBwBPAzEDMgMHAFADMwNRAwcAUAMyAzMDBwBRAzQDUgMHAFEDMwM0AwcAUgM1A1MDBwBSAzQDNQMHAFMDNgNUAwcAUwM1AzYDBwBUAzcDVQMHAFQDNgM3AwcAVQM4A1YDBwBVAzcDOAMHADgDVwNWAwcAOAM5A1cDBwA5A1gDVwMHADkDOgNYAwcAOgNZA1gDBwA6AzsDWQMHADsDWgNZAwcAOwM8A1oDBwA8A1sDWgMHADwDPQNbAwcAPQM/A1sDBwA9AyEDPwMHAFwDXQNeAwcAXANfA10DBwBgA14DYQMHAGADXANeAwcAYgNhA2MDBwBiA2ADYQMHAGQDYwNlAwcAZANiA2MDBwBmA2UDZwMHAGYDZANlAwcAaANnA2kDBwBoA2YDZwMHAGoDaQNrAwcAagNoA2kDBwBsA2sDbQMHAGwDagNrAwcAbgNsA20DBwBuA28DbAMHAHADbwNuAwcAcANxA28DBwByA3EDcAMHAHIDcwNxAwcAdANzA3IDBwB0A3UDcwMHAHYDdQN0AwcAdgN3A3UDBwB4A3cDdgMHAHgDeQN3AwcAegN5A3gDBwB6A3sDeQMHAHwDewN6AwcAfAN9A3sDBwB8A34DfQMHAHwDfwN+AwcAfwOAA34DBwB/A4EDgAMHAIEDggOAAwcAgQODA4IDBwCDA4QDggMHAIMDhQOEAwcAhQOGA4QDBwCFA4cDhgMHAIcDiAOGAwcAhwOJA4gDBwCJA4oDiAMHAIkDiwOKAwcAigOMA40DBwCKA4sDjAMHAI0DjgOPAwcAjQOMA44DBwCPA5ADkQMHAI8DjgOQAwcAkQOSA5MDBwCRA5ADkgMHAJMDlAOVAwcAkwOSA5QDBwCVA5YDlwMHAJUDlAOWAwcAlwNdA18DBwCXA5YDXQMHAJgDXwNcAwcAmAOZA18DBwCaA1wDYAMHAJoDmANcAwcAmwNgA2IDBwCbA5oDYAMHAJwDZgNoAwcAnAOdA2YDBwCeA2gDagMHAJ4DnANoAwcAnwNqA2wDBwCfA54DagMHAG8DnwNsAwcAbwOgA58DBwB1A6EDcwMHAHUDogOhAwcAdwOiA3UDBwB3A6MDogMHAHkDowN3AwcAeQOkA6MDBwB7A6QDeQMHAHsDpQOkAwcAfgOmA6cDBwB+A4ADpgMHAIADqAOmAwcAgAOCA6gDBwCCA6kDqAMHAIIDhAOpAwcAhAOqA6kDBwCEA4YDqgMHAKsDjQOsAwcAqwOKA40DBwCsA48DrQMHAKwDjQOPAwcArQORA64DBwCtA48DkQMHAK4DkwOvAwcArgORA5MDBwCwA18DmQMHALADlwNfAwcAsQOZA5gDBwCxA7IDmQMHALMDmAOaAwcAswOxA5gDBwC0A5oDmwMHALQDswOaAwcAtQObA7YDBwC1A7QDmwMHALcDtgOdAwcAtwO1A7YDBwC4A50DnAMHALgDtwOdAwcAuQOcA54DBwC5A7gDnAMHALoDngOfAwcAugO5A54DBwCgA7oDnwMHAKADuwO6AwcAvAO7A6ADBwC8A70DuwMHAKEDvQO8AwcAoQO+A70DBwCiA74DoQMHAKIDvwO+AwcAowO/A6IDBwCjA8ADvwMHAKQDwAOjAwcApAPBA8ADBwClA8EDpAMHAKUDwgPBAwcAwwPCA6UDBwDDA8QDwgMHAMMDxQPEAwcAwwOnA8UDBwCnA8YDxQMHAKcDpgPGAwcApgPHA8YDBwCmA6gDxwMHAKgDyAPHAwcAqAOpA8gDBwCpA8kDyAMHAKkDqgPJAwcAqgPKA8kDBwCqA8sDygMHAMsDzAPKAwcAywOrA8wDBwDMA6wDzQMHAMwDqwOsAwcAzQOtA84DBwDNA6wDrQMHAM4DrgPPAwcAzgOtA64DBwDPA68D0AMHAM8DrgOvAwcA0APRA9IDBwDQA68D0QMHANIDsAPTAwcA0gPRA7ADBwDTA5kDsgMHANMDsAOZAwcA1AOyA7EDBwDUA9UDsgMHANYDsQOzAwcA1gPUA7EDBwDXA7MDtAMHANcD1gOzAwcA2AO0A7UDBwDYA9cDtAMHANkDtQO3AwcA2QPYA7UDBwDaA7cDuAMHANoD2QO3AwcA2wO4A7kDBwDbA9oDuAMHANwDuQO6AwcA3APbA7kDBwC7A9wDugMHALsD3QPcAwcAvQPdA7sDBwC9A94D3QMHAL4D3gO9AwcAvgPfA94DBwC/A98DvgMHAL8D4APfAwcAwAPgA78DBwDAA+ED4AMHAMED4QPAAwcAwQPiA+EDBwDCA+IDwQMHAMID4wPiAwcAxAPjA8IDBwDEA+QD4wMHAMQD5QPkAwcAxAPFA+UDBwDFA+YD5QMHAMUDxgPmAwcAxgPnA+YDBwDGA8cD5wMHAMcD6APnAwcAxwPIA+gDBwDIA+kD6AMHAMgDyQPpAwcAyQPqA+kDBwDJA8oD6gMHAMoD6wPqAwcAygPMA+sDBwDrA80D7AMHAOsDzAPNAwcA7APOA+0DBwDsA80DzgMHAO0DzwPuAwcA7QPOA88DBwDuA9AD7wMHAO4DzwPQAwcA7wPSA/ADBwDvA9AD0gMHAPAD0wPxAwcA8APSA9MDBwDxA7ID1QMHAPED0wOyAwcA8gPUA/MDBwDyA9UD1AMHAPMD1gP0AwcA8wPUA9YDBwD0A9cD9QMHAPQD1gPXAwcA9QPYA/YDBwD1A9cD2AMHAPYD2QP3AwcA9gPYA9kDBwD3A9oD+AMHAPcD2QPaAwcA+APbA/kDBwD4A9oD2wMHAPkD3AP6AwcA+QPbA9wDBwDcA/sD+gMHANwD3QP7AwcA3QP8A/sDBwDdA94D/AMHAN4D/QP8AwcA3gPfA/0DBwDfA/4D/QMHAN8D4AP+AwcA4AP/A/4DBwDgA+ED/wMHAOEDAAT/AwcA4QPiAwAEBwDiAwEEAAQHAOID4wMBBAcA4wMCBAEEBwDjA+QDAgQHAOQDAwQCBAcA5APlAwMEBwDlAwQEAwQHAOUD5gMEBAcA5gMFBAQEBwDmA+cDBQQHAOcDBgQFBAcA5wPoAwYEBwDoAwcEBgQHAOgD6QMHBAcA6QMIBAcEBwDpA+oDCAQHAOoDCQQIBAcA6gPrAwkEBwAJBOwDCgQHAAkE6wPsAwcACgTtAwsEBwAKBOwD7QMHAAsE7gMMBAcACwTtA+4DBwAMBO8DDQQHAAwE7gPvAwcADQTwAw4EBwANBO8D8AMHAA4E8QMPBAcADgTwA/EDBwAPBNUD8gMHAA8E8QPVAwcAEATzAxEEBwAQBPID8wMHABEE9AMSBAcAEQTzA/QDBwASBPUDEwQHABIE9AP1AwcAEwT2AxQEBwATBPUD9gMHABQE9wMVBAcAFAT2A/cDBwAVBPgDFgQHABUE9wP4AwcAFgT5AxcEBwAWBPgD+QMHABcE+gMYBAcAFwT5A/oDBwD6AxkEGAQHAPoD+wMZBAcA+wMaBBkEBwD7A/wDGgQHAPwDGwQaBAcA/AP9AxsEBwD9AxwEGwQHAP0D/gMcBAcA/gMdBBwEBwD+A/8DHQQHAP8DHgQdBAcA/wMABB4EBwAABB8EHgQHAAAEAQQfBAcAAQQgBB8EBwABBAIEIAQHAAIEIQQgBAcAAgQDBCEEBwADBCIEIQQHAAMEBAQiBAcABAQjBCIEBwAEBAUEIwQHAAUEJAQjBAcABQQGBCQEBwAGBCUEJAQHAAYEBwQlBAcABwQmBCUEBwAHBAgEJgQHAAgEJwQmBAcACAQJBCcEBwAnBAoEKAQHACcECQQKBAcAKAQLBCkEBwAoBAoECwQHACkEDAQqBAcAKQQLBAwEBwAqBA0EKwQHACoEDAQNBAcAKwQOBCwEBwArBA0EDgQHACwEDwQtBAcALAQOBA8EBwAtBPIDEAQHAC0EDwTyAwcALgQQBBEEBwAuBC8EEAQHADAEEQQSBAcAMAQuBBEEBwAxBBIEEwQHADEEMAQSBAcAMgQTBBQEBwAyBDEEEwQHADMEFAQVBAcAMwQyBBQEBwA0BBUEFgQHADQEMwQVBAcANQQWBBcEBwA1BDQEFgQHADYEFwQYBAcANgQ1BBcEBwAZBDYEGAQHABkENwQ2BAcAGgQ3BBkEBwAaBDgENwQHABsEOAQaBAcAGwQ5BDgEBwAcBDkEGwQHABwEOgQ5BAcAHQQ6BBwEBwAdBDsEOgQHAB4EOwQdBAcAHgQ8BDsEBwAfBDwEHgQHAB8EPQQ8BAcAIAQ9BB8EBwAgBD4EPQQHACAEPwQ+BAcAIAQhBD8EBwAhBEAEPwQHACEEIgRABAcAIgRBBEAEBwAiBCMEQQQHACMEQgRBBAcAIwQkBEIEBwAkBEMEQgQHACQEJQRDBAcAJQREBEMEBwAlBCYERAQHACYERQREBAcAJgQnBEUEBwBFBCgERgQHAEUEJwQoBAcARgQpBEcEBwBGBCgEKQQHAEcEKgRIBAcARwQpBCoEBwBIBCsESQQHAEgEKgQrBAcASQQsBEoEBwBJBCsELAQHAEoELQRLBAcASgQsBC0EBwBLBBAELwQHAEsELQQQBAcATAR4A3YDBwBMBE0EeAMHAE0EegN4AwcATQROBHoDBwBOBHwDegMHAE4ETwR8AwcATwR/A3wDBwBPBFAEfwMHAFAEgQN/AwcAUARRBIEDBwBRBIMDgQMHAFEEUgSDAwcAUgSFA4MDBwBSBFMEhQMHAFMEhwOFAwcAUwRUBIcDBwBUBIkDhwMHAFQEVQSJAwcAVQSLA4kDBwBVBFYEiwMHAFYEjAOLAwcAVgRXBIwDBwBXBI4DjAMHAFcEWASOAwcAWASQA44DBwBYBFkEkAMHAFkEkgOQAwcAWQRaBJIDBwBaBJQDkgMHAFoEWwSUAwcAWwSWA5QDBwBbBFwElgMHAFwEXQOWAwcAXARdBF0DBwBdBF4DXQMHAF0EXgReAwcAXgRhA14DBwBeBF8EYQMHAF8EYwNhAwcAXwRgBGMDBwBgBGUDYwMHAGAEYQRlAwcAYQRnA2UDBwBhBGIEZwMHAGIEaQNnAwcAYgRjBGkDBwBjBGsDaQMHAGMEZARrAwcAZARtA2sDBwBkBGUEbQMHAGUEbgNtAwcAZQRmBG4DBwBmBHADbgMHAGYEZwRwAwcAZwRyA3ADBwBnBGgEcgMHAGgEdANyAwcAaARpBHQDBwBpBHYDdAMHAGkETAR2AwcAagS3Aq4CBwBqBGsEtwIHAE4EawRqBAcATgRNBGsEBwBrBLUCtwIHAGsEbAS1AgcATQRsBGsEBwBNBEwEbAQHAGwEugK1AgcAbARtBLoCBwBMBG0EbAQHAEwEaQRtBAcAbQTDAroCBwBtBG4EwwIHAGkEbgRtBAcAaQRoBG4EBwBuBMECwwIHAG4EbwTBAgcAaARvBG4EBwBoBGcEbwQHAG8ExgLBAgcAbwRwBMYCBwBnBHAEbwQHAGcEZgRwBAcAcATIAsYCBwBwBHEEyAIHAGYEcQRwBAcAZgRlBHEEBwBxBMsCyAIHAHEEcgTLAgcAZQRyBHEEBwBlBGQEcgQHAHIE0QLLAgcAcgRzBNECBwBkBHMEcgQHAGQEYwRzBAcAcwTUAtECBwBzBHQE1AIHAGMEdARzBAcAYwRiBHQEBwB0BNcC1AIHAHQEdQTXAgcAYgR1BHQEBwBiBGEEdQQHAHUE3QLXAgcAdQR2BN0CBwBhBHYEdQQHAGEEYAR2BAcAdgTgAt0CBwB2BHcE4AIHAGAEdwR2BAcAYARfBHcEBwB3BGwC4AIHAHcEeARsAgcAXwR4BHcEBwBfBF4EeAQHAHgEbwJsAgcAeAR5BG8CBwBeBHkEeAQHAF4EXQR5BAcAeQR0Am8CBwB5BHoEdAIHAF0EegR5BAcAXQRcBHoEBwB6BHcCdAIHAHoEewR3AgcAXAR7BHoEBwBcBFsEewQHAHsEfQJ3AgcAewR8BH0CBwBbBHwEewQHAFsEWgR8BAcAfASAAn0CBwB8BH0EgAIHAFoEfQR8BAcAWgRZBH0EBwB9BIMCgAIHAH0EfgSDAgcAWQR+BH0EBwBZBFgEfgQHAH4EiQKDAgcAfgR/BIkCBwBYBH8EfgQHAFgEVwR/BAcAfwSTAokCBwB/BIAEkwIHAFcEgAR/BAcAVwRWBIAEBwCABJECkwIHAIAEgQSRAgcAVgSBBIAEBwBWBFUEgQQHAIEElgKRAgcAgQSCBJYCBwBVBIIEgQQHAFUEVASCBAcAggSfApYCBwCCBIMEnwIHAFQEgwSCBAcAVARTBIMEBwCDBJ0CnwIHAIMEhASdAgcAUwSEBIMEBwBTBFIEhAQHAIQEogKdAgcAhASFBKICBwBSBIUEhAQHAFIEUQSFBAcAhQSrAqICBwCFBIYEqwIHAFEEhgSFBAcAUQRQBIYEBwCGBKkCqwIHAIYEhwSpAgcAUASHBIYEBwBQBE8EhwQHAIcErgKpAgcAhwRqBK4CBwBPBGoEhwQHAE8ETgRqBAcAcwKIBHkCBwBzAokEiAQHAIgEbwJ0AgcAiASJBG8CBwB/AooEhQIHAH8CiwSKBAcAigR9AoACBwCKBIsEfQIHAIwEjwKLAgcAjASNBI8CBwCNBIkCkwIHAI0EjASJAgcAjgSbApQCBwCOBI8EmwIHAI8ElgKfAgcAjwSOBJYCBwCQBKcCoAIHAJAEkQSnAgcAkQSiAqsCBwCRBJAEogIHAJIEswKsAgcAkgSTBLMCBwCTBK4CtwIHAJMEkgSuAgcAlAS/ArgCBwCUBJUEvwIHAJUEugLDAgcAlQSUBLoCBwDEApYEzQIHAMQClwSWBAcAlgTGAsgCBwCWBJcExgIHANMCmATZAgcA0wKZBJgEBwCYBNEC1AIHAJgEmQTRAgcA3wKaBOICBwDfApsEmgQHAJoE3QLgAgcAmgSbBN0CBwBtAokEnAQHAG0CbwKJBAcAnARzAnACBwCcBIkEcwIHAJ0EdAJ2AgcAnQSIBHQCBwB6AogEnQQHAHoCeQKIBAcAfAKLBJ4EBwB8An0CiwQHAJ4EfwJ+AgcAngSLBH8CBwCfBIACggIHAJ8EigSAAgcAhgKKBJ8EBwCGAoUCigQHAIgCjASgBAcAiAKJAowEBwCgBIsCigIHAKAEjASLAgcAoQSTApACBwChBI0EkwIHAI0CjQShBAcAjQKPAo0EBwCXAo4EogQHAJcClgKOBAcAogSUApUCBwCiBI4ElAIHAKMEnwKcAgcAowSPBJ8CBwCZAo8EowQHAJkCmwKPBAcAowKQBKQEBwCjAqICkAQHAKQEoAKhAgcApASQBKACBwClBKsCqAIHAKUEkQSrAgcApQKRBKUEBwClAqcCkQQHAK8CkgSmBAcArwKuApIEBwCmBKwCrQIHAKYEkgSsAgcApwS3ArQCBwCnBJMEtwIHALECkwSnBAcAsQKzApMEBwC7ApQEqAQHALsCugKUBAcAqAS4ArkCBwCoBJQEuAIHAKkEwwLAAgcAqQSVBMMCBwC9ApUEqQQHAL0CvwKVBAcAxwKXBKoEBwDHAsYClwQHAKoExALFAgcAqgSXBMQCBwCrBMgCygIHAKsElgTIAgcAzgKWBKsEBwDOAs0ClgQHANACmQSsBAcA0ALRApkEBwCsBNMC0gIHAKwEmQTTAgcArQTUAtYCBwCtBJgE1AIHANoCmAStBAcA2gLZApgEBwDcApsErgQHANwC3QKbBAcArgTfAt4CBwCuBJsE3wIHAK8E4ALhAgcArwSaBOACBwDjApoErwQHAOMC4gKaBAcAIAKqBCECBwAgAscCqgQHAB8CxwIgAgcAHwLCAscCBwDCAiICwAIHAMICHwIiAgcAxQIhAqoEBwDFAlECIQIHAMACIwKpBAcAwAIiAiMCBwCpBFICvQIHAKkEIwJSAgcAvgJRAsUCBwC+AlACUQIHAFACvQJSAgcAUAK+Ar0CBwDJAh0CygIHAMkCHgIdAgcA0AIeAskCBwDQAk0CHgIHAKwETQLQAgcArARMAk0CBwCsBGsCTAIHAKwE0gJrAgcAygIcAqsEBwDKAh0CHAIHAE4CqwQcAgcATgLOAqsEBwDOAk8CzAIHAM4CTgJPAgcAzAJrAtICBwDMAk8CawIHAGkC2gJqAgcAaQLYAtoCBwBpAt4C2AIHAGkCaALeAgcAagKtBEoCBwBqAtoCrQQHAEoC1gJLAgcASgKtBNYCBwBLAtUCSQIHAEsC1gLVAgcASQLcAkgCBwBJAtUC3AIHAEgCrgRHAgcASALcAq4EBwBHAt4CaAIHAEcCrgTeAgcARAJtAkICBwBEAm4CbQIHAEYCbgJEAgcARgLhAm4CBwBFAuECRgIHAEUCrwThAgcAZwKvBEUCBwBnAuMCrwQHAEICnARDAgcAQgJtApwEBwBDAnACZQIHAEMCnARwAgcAcgJlAnACBwByAmYCZQIHAOMCZgJyAgcA4wJnAmYCBwB6AmMCeAIHAHoCZAJjAgcAeAJiAn4CBwB4AmMCYgIHAH4CPgKeBAcAfgJiAj4CBwCeBD0CfAIHAJ4EPgI9AgcAPwJ8Aj0CBwA/AnUCfAIHAEACdQI/AgcAQAJ2AnUCBwBBAnYCQAIHAEECnQR2AgcAZAKdBEECBwBkAnoCnQQHAJ8EYQKGAgcAnwQ8AmECBwA8AoICOwIHADwCnwSCAgcAOwKBAjoCBwA7AoICgQIHADoCiAI4AgcAOgKBAogCBwA4AqAEOQIHADgCiAKgBAcAOQKKAl8CBwA5AqAEigIHAIQCXwKKAgcAhAJgAl8CBwBgAoYCYQIHAGAChAKGAgcAjQJdAo4CBwCNAl4CXQIHAFwCjgJdAgcAXAKVAo4CBwAzAqIENAIHADMClwKiBAcANQKXAjMCBwA1ApIClwIHADYCkgI1AgcANgKQApICBwA3ApACNgIHADcCoQSQAgcAoQReAo0CBwChBDcCXgIHADQClQJcAgcANAKiBJUCBwCkBC4CowIHAKQELwIuAgcAowIwAp4CBwCjAi4CMAIHAJ4CMQKcAgcAngIwAjECBwChAi8CpAQHAKECWQIvAgcAnAIyAqMEBwCcAjECMgIHAKMEWwKZAgcAowQyAlsCBwBaApkCWwIHAFoCmgKZAgcAWQKaAloCBwBZAqECmgIHAKgCLQKlBAcAqAIsAi0CBwClBFgCpQIHAKUELQJYAgcAqgIsAqgCBwCqAikCLAIHAK8CKQKqAgcArwIqAikCBwCmBCoCrwIHAKYEKwIqAgcArQIrAqYEBwCtAlcCKwIHAFYCpQJYAgcAVgKmAqUCBwBXAqYCVgIHAFcCrQKmAgcAtgInArQCBwC2AiQCJwIHALsCJAK2AgcAuwIlAiQCBwC0AigCpwQHALQCJwIoAgcApwRVArECBwCnBCgCVQIHAKgEJQK7AgcAqAQmAiUCBwC5AiYCqAQHALkCVAImAgcAUwKxAlUCBwBTArICsQIHAFQCsgJTAgcAVAK5ArICBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDIBMUEyQQHAMgExgTFBAcAygTJBMsEBwDKBMgEyQQHAMwEygTLBAcAzATNBMoEBwDOBM0EzAQHAM4EzwTNBAcAzgTEBM8EBwDOBMcExAQHANAE0QTSBAcA0ATTBNEEBwDUBNIE1QQHANQE0ATSBAcA1gTUBNUEBwDWBNcE1AQHANgE1wTWBAcA2ATZBNcEBwDYBNoE2QQHANgE2wTaBAcA2gTRBNMEBwDaBNsE0QQHANwE3QTeBAcA3ATfBN0EBwDgBNwE3gQHAOAE4QTcBAcA4gThBOAEBwDiBOME4QQHAOIE5ATjBAcA4gTlBOQEBwDkBOYE5wQHAOQE5QTmBAcA3wTmBN0EBwDfBOcE5gQHAOgE6QTqBAcA6ATrBOkEBwDsBOsE6AQHAOwE7QTrBAcA7ATuBO0EBwDsBO8E7gQHAO4E8ATxBAcA7gTvBPAEBwDyBPAE8wQHAPIE8QTwBAcA6QTzBOoEBwDpBPIE8wQHAPQE9QT2BAcA9AT3BPUEBwD0BPgE9wQHAPQE+QT4BAcA+AT6BPsEBwD4BPkE+gQHAPwE+gT9BAcA/AT7BPoEBwD+BP0E/wQHAP4E/AT9BAcA9gT+BP8EBwD2BPUE/gQHAAAFxgQBBQcAAAXEBMYEBwABBcgEAgUHAAEFxgTIBAcAAgXKBAMFBwACBcgEygQHAMoEBAUDBQcAygTNBAQFBwDNBAUFBAUHAM0EzwQFBQcAzwQABQUFBwDPBMQEAAUHAAYF0AQHBQcABgXTBNAEBwAHBdQECAUHAAcF0ATUBAcA1AQJBQgFBwDUBNcECQUHANcECgUJBQcA1wTZBAoFBwDZBAsFCgUHANkE2gQLBQcACwXTBAYFBwALBdoE0wQHAAwF3AQNBQcADAXfBNwEBwDcBA4FDQUHANwE4QQOBQcA4QQPBQ4FBwDhBOMEDwUHAOMEEAUPBQcA4wTkBBAFBwAQBecEEQUHABAF5ATnBAcAEQXfBAwFBwARBecE3wQHAOkEEgUTBQcA6QTrBBIFBwDrBBQFEgUHAOsE7QQUBQcA7QQVBRQFBwDtBO4EFQUHABUF8QQWBQcAFQXuBPEEBwAWBfIEFwUHABYF8QTyBAcAFwXpBBMFBwAXBfIE6QQHAPUEGAUZBQcA9QT3BBgFBwD3BBoFGAUHAPcE+AQaBQcAGgX7BBsFBwAaBfgE+wQHABsF/AQcBQcAGwX7BPwEBwAcBf4EHQUHABwF/AT+BAcA/gQZBR0FBwD+BPUEGQUHAB4FAQUfBQcAHgUABQEFBwAfBQIFIAUHAB8FAQUCBQcAIAUDBSEFBwAgBQIFAwUHAAMFIgUhBQcAAwUEBSIFBwAEBSMFIgUHAAQFBQUjBQcABQUeBSMFBwAFBQAFHgUHACQFBwUlBQcAJAUGBQcFBwAlBQgFJgUHACUFBwUIBQcACAUnBSYFBwAIBQkFJwUHAAkFKAUnBQcACQUKBSgFBwAKBSkFKAUHAAoFCwUpBQcAKQUGBSQFBwApBQsFBgUHACoFDQUrBQcAKgUMBQ0FBwANBSwFKwUHAA0FDgUsBQcADgUtBSwFBwAOBQ8FLQUHAA8FLgUtBQcADwUQBS4FBwAuBREFLwUHAC4FEAURBQcALwUMBSoFBwAvBREFDAUHABMFMAUxBQcAEwUSBTAFBwASBTIFMAUHABIFFAUyBQcAFAUzBTIFBwAUBRUFMwUHADMFFgU0BQcAMwUVBRYFBwA0BRcFNQUHADQFFgUXBQcANQUTBTEFBwA1BRcFEwUHABkFNgU3BQcAGQUYBTYFBwAYBTgFNgUHABgFGgU4BQcAOAUbBTkFBwA4BRoFGwUHADkFHAU6BQcAOQUbBRwFBwA6BR0FOwUHADoFHAUdBQcAHQU3BTsFBwAdBRkFNwUHALAEHwWzBAcAsAQeBR8FBwCxBB8FIAUHALEEswQfBQcAPAUgBSEFBwA8BbEEIAUHACIFPAUhBQcAIgU9BTwFBwAjBT0FIgUHACMFsgQ9BQcAIwWwBLIEBwAjBR4FsAQHALUEJAUlBQcAtQS3BCQFBwA+BSUFJgUHAD4FtQQlBQcAJwU+BSYFBwAnBT8FPgUHACgFPwUnBQcAKAW2BD8FBwAoBbQEtgQHACgFKQW0BAcAtAQkBbcEBwC0BCkFJAUHAEAFKgUrBQcAQAW5BCoFBwAsBUAFKwUHACwFQQVABQcALQVBBSwFBwAtBboEQQUHAC0FuAS6BAcALQUuBbgEBwC4BC8FuwQHALgELgUvBQcAuQQvBSoFBwC5BLsELwUHADAFQgUxBQcAMAVDBUIFBwAyBUMFMAUHADIFvgRDBQcAMgW8BL4EBwAyBTMFvAQHALwENAW/BAcAvAQzBTQFBwC9BDQFNQUHAL0EvwQ0BQcAQgU1BTEFBwBCBb0ENQUHADYFwAQ3BQcANgXDBMAEBwA2BcEEwwQHADYFOAXBBAcAwQQ5BUQFBwDBBDgFOQUHAEUFOQU6BQcARQVEBTkFBwDCBDoFOwUHAMIERQU6BQcANwXCBDsFBwA3BcAEwgQHADwFsgSxBAcAPAU9BbIEBwA+BbYEtQQHAD4FPwW2BAcAQAW6BLkEBwBABUEFugQHAEQFwgTBBAcARAVFBcIEBwBCBb4EvQQHAEIFQwW+BAcAZAPqBPMEBwBkA2YD6gQHAPMEYgNkAwcA8wTwBGIDBwDsBJ0DtgMHAOwE6ASdAwcA6ARmA50DBwDoBOoEZgMHAPAEmwNiAwcA8ATvBJsDBwDsBJsD7wQHAOwEtgObAwcA0QPeBLADBwDRA+AE3gQHAN4ElwOwAwcA3gTdBJcDBwDdBJUDlwMHAN0E5gSVAwcA5gSTA5UDBwDmBOUEkwMHAOUErwOTAwcA5QTiBK8DBwDgBK8D4gQHAOAE0QOvAwcAywPWBNUEBwDLA6oD1gQHANUEqwPLAwcA1QTSBKsDBwDSBIoDqwMHANIE0QSKAwcA0QSIA4oDBwDRBNsEiAMHANsEhgOIAwcA2wTYBIYDBwDYBKoDhgMHANgE1gSqAwcAzASlA3sDBwDMBMsEpQMHAMsEwwOlAwcAywTJBMMDBwDJBKcDwwMHAMkExQSnAwcAewPOBMwEBwB7A30DzgQHAH0DxwTOBAcAfQN+A8cEBwB+A8UExwQHAH4DpwPFBAcA/wRvA3EDBwD/BP0EbwMHAP0EoANvAwcA/QT6BKADBwD5BKAD+gQHAPkEvAOgAwcA+QShA7wDBwD5BPQEoQMHAPQEcwOhAwcA9AT2BHMDBwD2BHEDcwMHAPYE/wRxAwcARgVHBUgFBwBGBUkFRwUHAEoFSAVLBQcASgVGBUgFBwBMBUsFTQUHAEwFSgVLBQcATgVNBU8FBwBOBUwFTQUHAFAFTwVRBQcAUAVOBU8FBwBSBVEFUwUHAFIFUAVRBQcAVAVTBVUFBwBUBVIFUwUHAFYFVQVXBQcAVgVUBVUFBwBYBVYFVwUHAFgFWQVWBQcAWgVZBVgFBwBaBVsFWQUHAFwFWwVaBQcAXAVdBVsFBwBeBV0FXAUHAF4FXwVdBQcAYAVfBV4FBwBgBWEFXwUHAGIFYQVgBQcAYgVjBWEFBwBkBWMFYgUHAGQFZQVjBQcAZgVlBWQFBwBmBWcFZQUHAGYFaAVnBQcAZgVpBWgFBwBpBWoFaAUHAGkFawVqBQcAawVsBWoFBwBrBW0FbAUHAG0FbgVsBQcAbQVvBW4FBwBvBXAFbgUHAG8FcQVwBQcAcQVyBXAFBwBxBXMFcgUHAHMFdAVyBQcAcwV1BXQFBwB0BXYFdwUHAHQFdQV2BQcAdwV4BXkFBwB3BXYFeAUHAHkFegV7BQcAeQV4BXoFBwB7BXwFfQUHAHsFegV8BQcAfQV+BX8FBwB9BXwFfgUHAH8FgAWBBQcAfwV+BYAFBwCBBUcFSQUHAIEFgAVHBQcAcgV3BYIFBwByBXQFdwUHAHcFewWCBQcAdwV5BXsFBwB7BX8FggUHAHsFfQV/BQcAfwVJBYIFBwB/BYEFSQUHAEkFSgWCBQcASQVGBUoFBwBKBU4FggUHAEoFTAVOBQcATgVSBYIFBwBOBVAFUgUHAFIFVgWCBQcAUgVUBVYFBwBWBVsFggUHAFYFWQVbBQcAWwVfBYIFBwBbBV0FXwUHAF8FYwWCBQcAXwVhBWMFBwBjBWcFggUHAGMFZQVnBQcAZwVqBYIFBwBnBWgFagUHAGoFbgWCBQcAagVsBW4FBwBuBXIFggUHAG4FcAVyBQcAgAWDBUcFBwCABYQFgwUHAEcFhQVIBQcARwWDBYUFBwB+BYQFgAUHAH4FhgWEBQcAfAWGBX4FBwB8BYcFhgUHAHoFhwV8BQcAegWIBYcFBwB4BYgFegUHAHgFiQWIBQcAdgWJBXgFBwB2BYoFiQUHAHUFigV2BQcAdQWLBYoFBwBXBYwFWAUHAFcFjQWMBQcAWAWOBVoFBwBYBYwFjgUHAFUFjQVXBQcAVQWPBY0FBwBTBY8FVQUHAFMFkAWPBQcAUQWQBVMFBwBRBZEFkAUHAE8FkQVRBQcATwWSBZEFBwBNBZIFTwUHAE0FkwWSBQcASwWTBU0FBwBLBZQFkwUHAEgFlAVLBQcASAWFBZQFBwBzBYsFdQUHAHMFlQWLBQcAcQWVBXMFBwBxBZYFlQUHAG8FlgVxBQcAbwWXBZYFBwBtBZcFbwUHAG0FmAWXBQcAawWYBW0FBwBrBZkFmAUHAGkFmQVrBQcAaQWaBZkFBwBmBZoFaQUHAGYFmwWaBQcAZAWbBWYFBwBkBZwFmwUHAGIFnAVkBQcAYgWdBZwFBwBgBZ0FYgUHAGAFngWdBQcAXgWeBWAFBwBeBZ8FngUHAFwFnwVeBQcAXAWgBZ8FBwBaBaAFXAUHAFoFjgWgBQcAhAWhBYMFBwCEBaIFoQUHAIMFowWFBQcAgwWhBaMFBwCGBaIFhAUHAIYFpAWiBQcAhQWlBZQFBwCFBaMFpQUHAIcFpAWGBQcAhwWmBaQFBwCIBaYFhwUHAIgFpwWmBQcAiQWnBYgFBwCJBagFpwUHAIoFqAWJBQcAigWpBagFBwCLBakFigUHAIsFqgWpBQcAlQWqBYsFBwCVBasFqgUHAI0FrAWMBQcAjQWtBawFBwCMBa4FjgUHAIwFrAWuBQcAjwWtBY0FBwCPBa8FrQUHAI4FsAWgBQcAjgWuBbAFBwCQBa8FjwUHAJAFsQWvBQcAkQWxBZAFBwCRBbIFsQUHAJIFsgWRBQcAkgWzBbIFBwCTBbMFkgUHAJMFtAWzBQcAlAW0BZMFBwCUBaUFtAUHAJYFqwWVBQcAlgW1BasFBwCXBbUFlgUHAJcFtgW1BQcAmAW2BZcFBwCYBbcFtgUHAJkFtwWYBQcAmQW4BbcFBwCaBbgFmQUHAJoFuQW4BQcAmwW5BZoFBwCbBboFuQUHAJwFugWbBQcAnAW7BboFBwCdBbsFnAUHAJ0FvAW7BQcAngW8BZ0FBwCeBb0FvAUHAJ8FvQWeBQcAnwW+Bb0FBwCgBb4FnwUHAKAFsAW+BQcAvwXABcEFBwC/BcIFwAUHAMMFwAXCBQcAwwXEBcAFBwDFBcQFwwUHAMUFxgXEBQcAxwXGBcUFBwDHBcgFxgUHAMkFyAXHBQcAyQXKBcgFBwDLBcoFyQUHAMsFzAXKBQcAzQXMBcsFBwDNBc4FzAUHAM8FzQXQBQcAzwXOBc0FBwDRBdAF0gUHANEFzwXQBQcA0wXSBdQFBwDTBdEF0gUHANUF1AXWBQcA1QXTBdQFBwDXBdYF2AUHANcF1QXWBQcA1wXZBdoFBwDXBdgF2QUHANoF2wXcBQcA2gXZBdsFBwDcBd0F3gUHANwF2wXdBQcA3gXfBeAFBwDeBd0F3wUHAOAF4QXiBQcA4AXfBeEFBwDiBeMF5AUHAOIF4QXjBQcA5AXlBeYFBwDkBeMF5QUHAOUF5wXmBQcA5QXoBecFBwDoBekF5wUHAOgF6gXpBQcA6gXrBekFBwDqBewF6wUHAOwF7QXrBQcA7AXuBe0FBwDuBcEF7QUHAO4FvwXBBQcAwQXvBfAFBwDBBcAF7wUHAMAF8QXvBQcAwAXEBfEFBwDEBfIF8QUHAMQFxgXyBQcAxgXzBfIFBwDGBcgF8wUHAMgF9AXzBQcAyAXKBfQFBwDKBfUF9AUHAMoFzAX1BQcAzAX2BfUFBwDMBc4F9gUHAPYFzwX3BQcA9gXOBc8FBwD3BdEF+AUHAPcFzwXRBQcA+AXTBfkFBwD4BdEF0wUHAPkF1QX6BQcA+QXTBdUFBwD6BdcF+wUHAPoF1QXXBQcA+wXaBfwFBwD7BdcF2gUHAPwF3AX9BQcA/AXaBdwFBwD9Bd4F/gUHAP0F3AXeBQcA/gXgBf8FBwD+Bd4F4AUHAP8F4gUABgcA/wXgBeIFBwAABuQFAQYHAAAG4gXkBQcAAQbmBQIGBwABBuQF5gUHAOYFAwYCBgcA5gXnBQMGBwDnBQQGAwYHAOcF6QUEBgcA6QUFBgQGBwDpBesFBQYHAOsFBgYFBgcA6wXtBQYGBwDtBfAFBgYHAO0FwQXwBQcA8AUHBggGBwDwBe8FBwYHAPEFBwbvBQcA8QUJBgcGBwDyBQkG8QUHAPIFCgYJBgcA8wUKBvIFBwDzBQsGCgYHAPQFCwbzBQcA9AUMBgsGBwD1BQwG9AUHAPUFDQYMBgcA9gUNBvUFBwD2BQ4GDQYHAA8G9gX3BQcADwYOBvYFBwAQBvcF+AUHABAGDwb3BQcAEQb4BfkFBwARBhAG+AUHABIG+QX6BQcAEgYRBvkFBwATBvoF+wUHABMGEgb6BQcAEwb8BRQGBwATBvsF/AUHABQG/QUVBgcAFAb8Bf0FBwAVBv4FFgYHABUG/QX+BQcAFgb/BRcGBwAWBv4F/wUHABcGAAYYBgcAFwb/BQAGBwAYBgEGGQYHABgGAAYBBgcAGQYCBhoGBwAZBgEGAgYHAAIGGwYaBgcAAgYDBhsGBwADBhwGGwYHAAMGBAYcBgcABAYdBhwGBwAEBgUGHQYHAAUGHgYdBgcABQYGBh4GBwAGBggGHgYHAAYG8AUIBgcABwYfBggGBwAHBiAGHwYHAAkGIAYHBgcACQYhBiAGBwAKBiEGCQYHAAoGIgYhBgcACwYiBgoGBwALBiMGIgYHAAwGIwYLBgcADAYkBiMGBwANBiQGDAYHAA0GJQYkBgcADgYlBg0GBwAOBiYGJQYHACcGDgYPBgcAJwYmBg4GBwAoBg8GEAYHACgGJwYPBgcAKQYQBhEGBwApBigGEAYHACoGEQYSBgcAKgYpBhEGBwArBhIGEwYHACsGKgYSBgcALAYTBhQGBwAsBisGEwYHAC0GFAYVBgcALQYsBhQGBwAuBhUGFgYHAC4GLQYVBgcALwYWBhcGBwAvBi4GFgYHADAGFwYYBgcAMAYvBhcGBwAxBhgGGQYHADEGMAYYBgcAMgYZBhoGBwAyBjEGGQYHABsGMgYaBgcAGwYzBjIGBwAcBjMGGwYHABwGNAYzBgcAHQY0BhwGBwAdBjUGNAYHAB4GNQYdBgcAHgY2BjUGBwAIBjYGHgYHAAgGHwY2BgcANwY4BjkGBwA3BjoGOAYHADoGOwY4BgcAOgY8BjsGBwA8Bj0GOwYHADwGPgY9BgcAPgY/Bj0GBwA+BkAGPwYHAEAGQQY/BgcAQAZCBkEGBwBCBkMGQQYHAEIGRAZDBgcARAZFBkMGBwBEBkYGRQYHAEUGRwZIBgcARQZGBkcGBwBIBkkGSgYHAEgGRwZJBgcASgZLBkwGBwBKBkkGSwYHAEwGTQZOBgcATAZLBk0GBwBOBk8GUAYHAE4GTQZPBgcAUAZRBlIGBwBQBk8GUQYHAFIGUwZUBgcAUgZRBlMGBwBUBlUGVgYHAFQGUwZVBgcAVgZXBlgGBwBWBlUGVwYHAFgGWQZaBgcAWAZXBlkGBwBaBlsGXAYHAFoGWQZbBgcAXAZdBl4GBwBcBlsGXQYHAF0GXwZeBgcAXQZgBl8GBwBgBmEGXwYHAGAGYgZhBgcAYgZjBmEGBwBiBmQGYwYHAGQGZQZjBgcAZAZmBmUGBwBmBjkGZQYHAGYGNwY5BgcAOAZnBjkGBwA4BmgGZwYHADgGaQZoBgcAOAY7BmkGBwA7BmoGaQYHADsGPQZqBgcAPQZrBmoGBwA9Bj8GawYHAD8GbAZrBgcAPwZBBmwGBwBBBm0GbAYHAEEGQwZtBgcAQwZuBm0GBwBDBkUGbgYHAG4GSAZvBgcAbgZFBkgGBwBvBkoGcAYHAG8GSAZKBgcAcAZMBnEGBwBwBkoGTAYHAHEGTgZyBgcAcQZMBk4GBwByBlAGcwYHAHIGTgZQBgcAdAZQBlIGBwB0BnMGUAYHAHUGUgZUBgcAdQZ0BlIGBwB2BlQGVgYHAHYGdQZUBgcAdwZWBlgGBwB3BnYGVgYHAHgGWAZaBgcAeAZ3BlgGBwB5BloGXAYHAHkGeAZaBgcAegZcBl4GBwB6BnkGXAYHAF8GegZeBgcAXwZ7BnoGBwBhBnsGXwYHAGEGfAZ7BgcAYwZ8BmEGBwBjBn0GfAYHAGUGfQZjBgcAZQZ+Bn0GBwA5Bn4GZQYHADkGZwZ+BgcAZwZ/BoAGBwBnBmgGfwYHAGgGgQZ/BgcAaAZpBoEGBwBpBoIGgQYHAGkGagaCBgcAagaDBoIGBwBqBmsGgwYHAGsGhAaDBgcAawZsBoQGBwBsBoUGhAYHAGwGbQaFBgcAbQaGBoUGBwBtBm4GhgYHAIYGbwaHBgcAhgZuBm8GBwCHBnAGiAYHAIcGbwZwBgcAiAZxBokGBwCIBnAGcQYHAIkGcgaKBgcAiQZxBnIGBwCKBnMGiwYHAIoGcgZzBgcAiwZ0BowGBwCLBnMGdAYHAIwGdQaNBgcAjAZ0BnUGBwCNBnYGjgYHAI0GdQZ2BgcAjgZ3Bo8GBwCOBnYGdwYHAI8GeAaQBgcAjwZ3BngGBwCQBnkGkQYHAJAGeAZ5BgcAkQZ6BpIGBwCRBnkGegYHAHoGkwaSBgcAegZ7BpMGBwB7BpQGkwYHAHsGfAaUBgcAfAaVBpQGBwB8Bn0GlQYHAH0GlgaVBgcAfQZ+BpYGBwB+BoAGlgYHAH4GZwaABgcAgAaXBpgGBwCABn8GlwYHAIEGlwZ/BgcAgQaZBpcGBwCCBpkGgQYHAIIGmgaZBgcAgwaaBoIGBwCDBpsGmgYHAIQGmwaDBgcAhAacBpsGBwCFBpwGhAYHAIUGnQacBgcAhgadBoUGBwCGBp4GnQYHAJ8GhgaHBgcAnwaeBoYGBwCgBocGiAYHAKAGnwaHBgcAoQaIBokGBwChBqAGiAYHAKIGiQaKBgcAogahBokGBwCjBooGiwYHAKMGogaKBgcAowaMBqQGBwCjBosGjAYHAKQGjQalBgcApAaMBo0GBwClBo4GpgYHAKUGjQaOBgcApgaPBqcGBwCmBo4GjwYHAKcGkAaoBgcApwaPBpAGBwCoBpEGqQYHAKgGkAaRBgcAqQaSBqoGBwCpBpEGkgYHAJIGqwaqBgcAkgaTBqsGBwCTBqwGqwYHAJMGlAasBgcAlAatBqwGBwCUBpUGrQYHAJUGrgatBgcAlQaWBq4GBwCWBpgGrgYHAJYGgAaYBgcAmAavBrAGBwCYBpcGrwYHAJcGsQavBgcAlwaZBrEGBwCZBrIGsQYHAJkGmgayBgcAmgazBrIGBwCaBpsGswYHAJsGtAazBgcAmwacBrQGBwCcBrUGtAYHAJwGnQa1BgcAnQa2BrUGBwCdBp4GtgYHALYGnwa3BgcAtgaeBp8GBwC3BqAGuAYHALcGnwagBgcAuAahBrkGBwC4BqAGoQYHALkGoga6BgcAuQahBqIGBwC6BqMGuwYHALoGogajBgcAuwakBrwGBwC7BqMGpAYHALwGpQa9BgcAvAakBqUGBwC9BqYGvgYHAL0GpQamBgcAvganBr8GBwC+BqYGpwYHAL8GqAbABgcAvwanBqgGBwDABqkGwQYHAMAGqAapBgcAwQaqBsIGBwDBBqkGqgYHAKoGwwbCBgcAqgarBsMGBwCrBsQGwwYHAKsGrAbEBgcArAbFBsQGBwCsBq0GxQYHAK0GxgbFBgcArQauBsYGBwCuBrAGxgYHAK4GmAawBgcArwbHBrAGBwCvBsgGxwYHAK8GyQbIBgcArwaxBskGBwCxBsoGyQYHALEGsgbKBgcAsgbLBsoGBwCyBrMGywYHALMGzAbLBgcAswa0BswGBwC0Bs0GzAYHALQGtQbNBgcAtQbOBs0GBwC1BrYGzgYHAM4GtwbPBgcAzga2BrcGBwDPBrgG0AYHAM8Gtwa4BgcA0Aa5BtEGBwDQBrgGuQYHANEGugbSBgcA0Qa5BroGBwDSBrsG0wYHANIGuga7BgcA1Aa7BrwGBwDUBtMGuwYHANUGvAa9BgcA1QbUBrwGBwDWBr0GvgYHANYG1Qa9BgcA1wa+Br8GBwDXBtYGvgYHANgGvwbABgcA2AbXBr8GBwDZBsAGwQYHANkG2AbABgcA2gbBBsIGBwDaBtkGwQYHAMMG2gbCBgcAwwbbBtoGBwDEBtsGwwYHAMQG3AbbBgcAxQbcBsQGBwDFBt0G3AYHAMYG3QbFBgcAxgbeBt0GBwCwBt4GxgYHALAGxwbeBgcA3wYrBiwGBwDfBuAGKwYHAOAGKgYrBgcA4AbhBioGBwDhBikGKgYHAOEG4gYpBgcA4gYoBikGBwDiBuMGKAYHAOMGJwYoBgcA4wbkBicGBwDkBiYGJwYHAOQG5QYmBgcA5QYlBiYGBwDlBuYGJQYHAOYGJAYlBgcA5gbnBiQGBwDnBiMGJAYHAOcG6AYjBgcA6AYiBiMGBwDoBukGIgYHAOkGIQYiBgcA6QbqBiEGBwDqBiAGIQYHAOoG6wYgBgcA6wYfBiAGBwDrBuwGHwYHAOwGNgYfBgcA7AbtBjYGBwDtBjUGNgYHAO0G7gY1BgcA7gY0BjUGBwDuBu8GNAYHAO8GMwY0BgcA7wbwBjMGBwDwBjIGMwYHAPAG8QYyBgcA8QYxBjIGBwDxBvIGMQYHAPIGMAYxBgcA8gbzBjAGBwDzBi8GMAYHAPMG9AYvBgcA9AYuBi8GBwD0BvUGLgYHAPUGLQYuBgcA9Qb2Bi0GBwD2BiwGLQYHAPYG3wYsBgcA9wZRBk8GBwD3BvgGUQYHAOAG+Ab3BgcA4AbfBvgGBwD4BlMGUQYHAPgG+QZTBgcA3wb5BvgGBwDfBvYG+QYHAPkGVQZTBgcA+Qb6BlUGBwD2BvoG+QYHAPYG9Qb6BgcA+gZXBlUGBwD6BvsGVwYHAPUG+wb6BgcA9Qb0BvsGBwD7BlkGVwYHAPsG/AZZBgcA9Ab8BvsGBwD0BvMG/AYHAPwGWwZZBgcA/Ab9BlsGBwDzBv0G/AYHAPMG8gb9BgcA/QZdBlsGBwD9Bv4GXQYHAPIG/gb9BgcA8gbxBv4GBwD+BmAGXQYHAP4G/wZgBgcA8Qb/Bv4GBwDxBvAG/wYHAP8GYgZgBgcA/wYAB2IGBwDwBgAH/wYHAPAG7wYABwcAAAdkBmIGBwAABwEHZAYHAO8GAQcABwcA7wbuBgEHBwABB2YGZAYHAAEHAgdmBgcA7gYCBwEHBwDuBu0GAgcHAAIHNwZmBgcAAgcDBzcGBwDtBgMHAgcHAO0G7AYDBwcAAwc6BjcGBwADBwQHOgYHAOwGBAcDBwcA7AbrBgQHBwAEBzwGOgYHAAQHBQc8BgcA6wYFBwQHBwDrBuoGBQcHAAUHPgY8BgcABQcGBz4GBwDqBgYHBQcHAOoG6QYGBwcABgdABj4GBwAGBwcHQAYHAOkGBwcGBwcA6QboBgcHBwAHB0IGQAYHAAcHCAdCBgcA6AYIBwcHBwDoBucGCAcHAAgHRAZCBgcACAcJB0QGBwDnBgkHCAcHAOcG5gYJBwcACQdGBkQGBwAJBwoHRgYHAOYGCgcJBwcA5gblBgoHBwAKB0cGRgYHAAoHCwdHBgcA5QYLBwoHBwDlBuQGCwcHAAsHSQZHBgcACwcMB0kGBwDkBgwHCwcHAOQG4wYMBwcADAdLBkkGBwAMBw0HSwYHAOMGDQcMBwcA4wbiBg0HBwANB00GSwYHAA0HDgdNBgcA4gYOBw0HBwDiBuEGDgcHAA4HTwZNBgcADgf3Bk8GBwDhBvcGDgcHAOEG4Ab3BgcADwcQBxEHBwAPBxIHEAcHABMHEgcPBwcAEwcUBxIHBwAVBxQHEwcHABUHFgcUBwcAFwcWBxUHBwAXBxgHFgcHABkHGAcXBwcAGQcaBxgHBwAbBxoHGQcHABsHHAcaBwcAHQcbBx4HBwAdBxwHGwcHAB8HHgcgBwcAHwcdBx4HBwAhByAHIgcHACEHHwcgBwcAIwciByQHBwAjByEHIgcHACUHJAcmBwcAJQcjByQHBwAnByYHKAcHACcHJQcmBwcAKQcoByoHBwApBycHKAcHACsHKgcsBwcAKwcpByoHBwAtBywHLgcHAC0HKwcsBwcALwcuBzAHBwAvBy0HLgcHADEHMAcyBwcAMQcvBzAHBwAzBzIHNAcHADMHMQcyBwcANQczBzQHBwA1BzYHMwcHADcHNgc1BwcANwc4BzYHBwA5BzgHNwcHADkHOgc4BwcAOwc6BzkHBwA7BzwHOgcHAD0HPAc7BwcAPQc+BzwHBwARBz4HPQcHABEHEAc+BwcAPgc/B0AHBwA+BxAHPwcHABIHPwcQBwcAEgdBBz8HBwAUB0EHEgcHABQHQgdBBwcAFgdCBxQHBwAWB0MHQgcHABgHQwcWBwcAGAdEB0MHBwAaB0QHGAcHABoHRQdEBwcAHAdFBxoHBwAcB0YHRQcHAEcHHAcdBwcARwdGBxwHBwBIBx0HHwcHAEgHRwcdBwcASQcfByEHBwBJB0gHHwcHAEoHIQcjBwcASgdJByEHBwBLByMHJQcHAEsHSgcjBwcASwcnB0wHBwBLByUHJwcHAEwHKQdNBwcATAcnBykHBwBNBysHTgcHAE0HKQcrBwcATgctB08HBwBOBysHLQcHAE8HLwdQBwcATwctBy8HBwBQBzEHUQcHAFAHLwcxBwcAUQczB1IHBwBRBzEHMwcHADMHUwdSBwcAMwc2B1MHBwA2B1QHUwcHADYHOAdUBwcAOAdVB1QHBwA4BzoHVQcHADoHVgdVBwcAOgc8B1YHBwA8B0AHVgcHADwHPgdABwcAQAdXB1gHBwBABz8HVwcHAD8HWQdXBwcAPwdBB1kHBwBBB1oHWQcHAEEHQgdaBwcAQgdbB1oHBwBCB0MHWwcHAEMHXAdbBwcAQwdEB1wHBwBEB10HXAcHAEQHRQddBwcARQdeB10HBwBFB0YHXgcHAF4HRwdfBwcAXgdGB0cHBwBfB0gHYAcHAF8HRwdIBwcAYAdJB2EHBwBgB0gHSQcHAGEHSgdiBwcAYQdJB0oHBwBiB0sHYwcHAGIHSgdLBwcAYwdMB2QHBwBjB0sHTAcHAGQHTQdlBwcAZAdMB00HBwBlB04HZgcHAGUHTQdOBwcAZgdPB2cHBwBmB04HTwcHAGcHUAdoBwcAZwdPB1AHBwBoB1EHaQcHAGgHUAdRBwcAaQdSB2oHBwBpB1EHUgcHAFIHawdqBwcAUgdTB2sHBwBTB2wHawcHAFMHVAdsBwcAVAdtB2wHBwBUB1UHbQcHAFUHbgdtBwcAVQdWB24HBwBWB1gHbgcHAFYHQAdYBwcAWAdvB3AHBwBYB1cHbwcHAFkHbwdXBwcAWQdxB28HBwBaB3EHWQcHAFoHcgdxBwcAWwdyB1oHBwBbB3MHcgcHAFwHcwdbBwcAXAd0B3MHBwBdB3QHXAcHAF0HdQd0BwcAXgd1B10HBwBeB3YHdQcHAHcHXgdfBwcAdwd2B14HBwB4B18HYAcHAHgHdwdfBwcAeQdgB2EHBwB5B3gHYAcHAHoHYQdiBwcAegd5B2EHBwB7B2IHYwcHAHsHegdiBwcAewdkB3wHBwB7B2MHZAcHAHwHZQd9BwcAfAdkB2UHBwB9B2YHfgcHAH0HZQdmBwcAfgdnB38HBwB+B2YHZwcHAH8HaAeABwcAfwdnB2gHBwCAB2kHgQcHAIAHaAdpBwcAgQdqB4IHBwCBB2kHagcHAGoHgweCBwcAagdrB4MHBwBrB4QHgwcHAGsHbAeEBwcAbAeFB4QHBwBsB20HhQcHAG0HhgeFBwcAbQduB4YHBwBuB3AHhgcHAG4HWAdwBwcAcAeHB4gHBwBwB28HhwcHAG8HiQeHBwcAbwdxB4kHBwBxB4oHiQcHAHEHcgeKBwcAcgeLB4oHBwByB3MHiwcHAHMHjAeLBwcAcwd0B4wHBwB0B40HjAcHAHQHdQeNBwcAdQeOB40HBwB1B3YHjgcHAI4HdwePBwcAjgd2B3cHBwCPB3gHkAcHAI8Hdwd4BwcAkAd5B5EHBwCQB3gHeQcHAJEHegeSBwcAkQd5B3oHBwCSB3sHkwcHAJIHegd7BwcAkwd8B5QHBwCTB3sHfAcHAJQHfQeVBwcAlAd8B30HBwCVB34HlgcHAJUHfQd+BwcAlgd/B5cHBwCWB34HfwcHAJcHgAeYBwcAlwd/B4AHBwCYB4EHmQcHAJgHgAeBBwcAmQeCB5oHBwCZB4EHggcHAIIHmweaBwcAggeDB5sHBwCDB5wHmwcHAIMHhAecBwcAhAedB5wHBwCEB4UHnQcHAIUHngedBwcAhQeGB54HBwCGB4gHngcHAIYHcAeIBwcAhwefB4gHBwCHB6AHnwcHAIcHoQegBwcAhweJB6EHBwCJB6IHoQcHAIkHigeiBwcAigejB6IHBwCKB4sHowcHAIsHpAejBwcAiweMB6QHBwCMB6UHpAcHAIwHjQelBwcAjQemB6UHBwCNB44HpgcHAKYHjwenBwcApgeOB48HBwCnB5AHqAcHAKcHjweQBwcAqAeRB6kHBwCoB5AHkQcHAKkHkgeqBwcAqQeRB5IHBwCqB5MHqwcHAKoHkgeTBwcArAeTB5QHBwCsB6sHkwcHAK0HlAeVBwcArQesB5QHBwCuB5UHlgcHAK4HrQeVBwcArweWB5cHBwCvB64HlgcHALAHlweYBwcAsAevB5cHBwCxB5gHmQcHALEHsAeYBwcAsgeZB5oHBwCyB7EHmQcHAJsHsgeaBwcAmwezB7IHBwCcB7MHmwcHAJwHtAezBwcAnQe0B5wHBwCdB7UHtAcHAJ4HtQedBwcAnge2B7UHBwCIB7YHngcHAIgHnwe2BwcAnwfCBb8FBwCfB6AHwgUHAKAHwwXCBQcAoAehB8MFBwChB8UFwwUHAKEHogfFBQcAogfHBcUFBwCiB6MHxwUHAKMHyQXHBQcAowekB8kFBwCkB8sFyQUHAKQHpQfLBQcApQfNBcsFBwClB6YHzQUHAM0FpwfQBQcAzQWmB6cHBwDQBagH0gUHANAFpweoBwcA0gWpB9QFBwDSBagHqQcHANQFqgfWBQcA1AWpB6oHBwDWBasH2AUHANYFqgerBwcA2AWsB9kFBwDYBasHrAcHANkFrQfbBQcA2QWsB60HBwDbBa4H3QUHANsFrQeuBwcA3QWvB98FBwDdBa4HrwcHAN8FsAfhBQcA3wWvB7AHBwDhBbEH4wUHAOEFsAexBwcA4wWyB+UFBwDjBbEHsgcHALIH6AXlBQcAsgezB+gFBwCzB+oF6AUHALMHtAfqBQcAtAfsBeoFBwC0B7UH7AUHALUH7gXsBQcAtQe2B+4FBwC2B78F7gUHALYHnwe/BQcAxwa3B7gHBwDHBsgGtwcHAMgGuQe3BwcAyAbJBrkHBwDJBroHuQcHAMkGyga6BwcAyga7B7oHBwDKBssGuwcHAMsGvAe7BwcAywbMBrwHBwDMBr0HvAcHAMwGzQa9BwcAzQa+B70HBwDNBs4GvgcHAL4Hzwa/BwcAvgfOBs8GBwC/B9AGwAcHAL8HzwbQBgcAwAfRBsEHBwDAB9AG0QYHAMEH0gbCBwcAwQfRBtIGBwDCB9MGwwcHAMIH0gbTBgcAwwfUBsQHBwDDB9MG1AYHAMQH1QbFBwcAxAfUBtUGBwDFB9YGxgcHAMUH1QbWBgcAxgfXBscHBwDGB9YG1wYHAMcH2AbIBwcAxwfXBtgGBwDIB9kGyQcHAMgH2AbZBgcAyQfaBsoHBwDJB9kG2gYHANoGywfKBwcA2gbbBssHBwDbBswHywcHANsG3AbMBwcA3AbNB8wHBwDcBt0GzQcHAN0GzgfNBwcA3QbeBs4HBwDeBrgHzgcHAN4Gxwa4BwcAtwfPB7gHBwC3B9AHzwcHALcH0QfQBwcAtwe5B9EHBwC5B9IH0QcHALkHugfSBwcAugfTB9IHBwC6B7sH0wcHALsH1AfTBwcAuwe8B9QHBwC8B9UH1AcHALwHvQfVBwcAvQfWB9UHBwC9B74H1gcHANYHvwfXBwcA1ge+B78HBwDXB8AH2AcHANcHvwfABwcA2AfBB9kHBwDYB8AHwQcHANkHwgfaBwcA2QfBB8IHBwDaB8MH2wcHANoHwgfDBwcA3AfDB8QHBwDcB9sHwwcHAN0HxAfFBwcA3QfcB8QHBwDeB8UHxgcHAN4H3QfFBwcA3wfGB8cHBwDfB94HxgcHAOAHxwfIBwcA4AffB8cHBwDhB8gHyQcHAOEH4AfIBwcA4gfJB8oHBwDiB+EHyQcHAMsH4gfKBwcAywfjB+IHBwDMB+MHywcHAMwH5AfjBwcAzQfkB8wHBwDNB+UH5AcHAM4H5QfNBwcAzgfmB+UHBwC4B+YHzgcHALgHzwfmBwcAzwfnB+gHBwDPB9AH5wcHANAH6QfnBwcA0AfRB+kHBwDRB+oH6QcHANEH0gfqBwcA0gfrB+oHBwDSB9MH6wcHANMH7AfrBwcA0wfUB+wHBwDUB+0H7AcHANQH1QftBwcA1QfuB+0HBwDVB9YH7gcHAO4H1wfvBwcA7gfWB9cHBwDvB9gH8AcHAO8H1wfYBwcA8AfZB/EHBwDwB9gH2QcHAPEH2gfyBwcA8QfZB9oHBwDyB9sH8wcHAPIH2gfbBwcA8wfcB/QHBwDzB9sH3AcHAPQH3Qf1BwcA9AfcB90HBwD1B94H9gcHAPUH3QfeBwcA9gffB/cHBwD2B94H3wcHAPcH4Af4BwcA9wffB+AHBwD4B+EH+QcHAPgH4AfhBwcA+QfiB/oHBwD5B+EH4gcHAOIH+wf6BwcA4gfjB/sHBwDjB/wH+wcHAOMH5Af8BwcA5Af9B/wHBwDkB+UH/QcHAOUH/gf9BwcA5QfmB/4HBwDmB+gH/gcHAOYHzwfoBwcA/wcACAEIBwD/BwIIAAgHAAIIAwgACAcAAggECAMIBwAFCAEIBggHAAUI/wcBCAcABwgICAkIBwAHCAoICAgHAAoICwgICAcACggMCAsIBwANCAkIDggHAA0IBwgJCAcADAgPCAsIBwAMCBAIDwgHABEIDggSCAcAEQgNCA4IBwAQCBMIDwgHABAIFAgTCAcAFQgSCBYIBwAVCBEIEggHABQIFwgTCAcAFAgYCBcIBwAZCBYIGggHABkIFQgWCAcABAgaCAMIBwAECBkIGggHABgIBggXCAcAGAgFCAYIBwD/BxsIAggHAP8HHAgbCAcAGwgECAIIBwAbCB0IBAgHAAUIHAj/BwcABQgeCBwIBwAfCAoIBwgHAB8IIAgKCAcACgghCAwIBwAKCCAIIQgHACIIBwgNCAcAIggfCAcIBwAMCCMIEAgHAAwIIQgjCAcAJAgNCBEIBwAkCCIIDQgHABAIJQgUCAcAEAgjCCUIBwAmCBEIFQgHACYIJAgRCAcAFAgnCBgIBwAUCCUIJwgHACgIFQgZCAcAKAgmCBUIBwAdCBkIBAgHAB0IKAgZCAcAGAgeCAUIBwAYCCcIHggHACkIGwgcCAcAKQgqCBsIBwAqCB0IGwgHACoIKwgdCAcALAgcCB4IBwAsCCkIHAgHAC0IIAgfCAcALQguCCAIBwAuCCEIIAgHAC4ILwghCAcAMAgfCCIIBwAwCC0IHwgHAC8IIwghCAcALwgxCCMIBwAyCCIIJAgHADIIMAgiCAcAMQglCCMIBwAxCDMIJQgHADQIJAgmCAcANAgyCCQIBwAzCCcIJQgHADMINQgnCAcANggmCCgIBwA2CDQIJggHACsIKAgdCAcAKwg2CCgIBwA1CB4IJwgHADUILAgeCAcANwgqCCkIBwA3CDgIKggHADgIKwgqCAcAOAg5CCsIBwA6CCkILAgHADoINwgpCAcAOwguCC0IBwA7CDwILggHADwILwguCAcAPAg9CC8IBwA+CC0IMAgHAD4IOwgtCAcAPQgxCC8IBwA9CD8IMQgHAEAIMAgyCAcAQAg+CDAIBwA/CDMIMQgHAD8IQQgzCAcAQggyCDQIBwBCCEAIMggHAEEINQgzCAcAQQhDCDUIBwBECDQINggHAEQIQgg0CAcAOQg2CCsIBwA5CEQINggHAEMILAg1CAcAQwg6CCwIBwBFCDgINwgHAEUIRgg4CAcARgg5CDgIBwBGCEcIOQgHAEgINwg6CAcASAhFCDcIBwBJCDwIOwgHAEkISgg8CAcASgg9CDwIBwBKCEsIPQgHAEwIOwg+CAcATAhJCDsIBwBLCD8IPQgHAEsITQg/CAcATgg+CEAIBwBOCEwIPggHAE0IQQg/CAcATQhPCEEIBwBQCEAIQggHAFAITghACAcATwhDCEEIBwBPCFEIQwgHAFIIQghECAcAUghQCEIIBwBHCEQIOQgHAEcIUghECAcAUQg6CEMIBwBRCEgIOggHAFMIRghFCAcAUwhUCEYIBwBUCEcIRggHAFQIVQhHCAcAVghFCEgIBwBWCFMIRQgHAFcISghJCAcAVwhYCEoIBwBYCEsISggHAFgIWQhLCAcAWghJCEwIBwBaCFcISQgHAFkITQhLCAcAWQhbCE0IBwBcCEwITggHAFwIWghMCAcAWwhPCE0IBwBbCF0ITwgHAF4ITghQCAcAXghcCE4IBwBdCFEITwgHAF0IXwhRCAcAYAhQCFIIBwBgCF4IUAgHAFUIUghHCAcAVQhgCFIIBwBfCEgIUQgHAF8IVghICAcAYQhUCFMIBwBhCGIIVAgHAGIIVQhUCAcAYghjCFUIBwBkCFMIVggHAGQIYQhTCAcAZQhYCFcIBwBlCGYIWAgHAGYIWQhYCAcAZghnCFkIBwBoCFcIWggHAGgIZQhXCAcAZwhbCFkIBwBnCGkIWwgHAGoIWghcCAcAaghoCFoIBwBpCF0IWwgHAGkIawhdCAcAbAhcCF4IBwBsCGoIXAgHAGsIXwhdCAcAawhtCF8IBwBuCF4IYAgHAG4IbAheCAcAYwhgCFUIBwBjCG4IYAgHAG0IVghfCAcAbQhkCFYIBwBvCGIIYQgHAG8IcAhiCAcAcAhjCGIIBwBwCHEIYwgHAHIIYQhkCAcAcghvCGEIBwBzCGYIZQgHAHMIdAhmCAcAdAhnCGYIBwB0CHUIZwgHAHYIZQhoCAcAdghzCGUIBwB1CGkIZwgHAHUIdwhpCAcAeAhoCGoIBwB4CHYIaAgHAHcIawhpCAcAdwh5CGsIBwB6CGoIbAgHAHoIeAhqCAcAeQhtCGsIBwB5CHsIbQgHAHwIbAhuCAcAfAh6CGwIBwBxCG4IYwgHAHEIfAhuCAcAewhkCG0IBwB7CHIIZAgHAH0IcAhvCAcAfQh+CHAIBwB+CHEIcAgHAH4IfwhxCAcAgAhvCHIIBwCACH0IbwgHAIEIdAhzCAcAgQiCCHQIBwCCCHUIdAgHAIIIgwh1CAcAhAhzCHYIBwCECIEIcwgHAIMIdwh1CAcAgwiFCHcIBwCGCHYIeAgHAIYIhAh2CAcAhQh5CHcIBwCFCIcIeQgHAIgIeAh6CAcAiAiGCHgIBwCHCHsIeQgHAIcIiQh7CAcAigh6CHwIBwCKCIgIeggHAH8IfAhxCAcAfwiKCHwIBwCJCHIIewgHAIkIgAhyCAcAiwh+CH0IBwCLCIwIfggHAIwIfwh+CAcAjAiNCH8IBwCOCH0IgAgHAI4Iiwh9CAcAjwiCCIEIBwCPCJAIgggHAJAIgwiCCAcAkAiRCIMIBwCSCIEIhAgHAJIIjwiBCAcAkQiFCIMIBwCRCJMIhQgHAJQIhAiGCAcAlAiSCIQIBwCTCIcIhQgHAJMIlQiHCAcAlgiGCIgIBwCWCJQIhggHAJUIiQiHCAcAlQiXCIkIBwCYCIgIiggHAJgIlgiICAcAjQiKCH8IBwCNCJgIiggHAJcIgAiJCAcAlwiOCIAIBwCZCIwIiwgHAJkImgiMCAcAmgiNCIwIBwCaCJsIjQgHAJwIiwiOCAcAnAiZCIsIBwCdCJAIjwgHAJ0IngiQCAcAngiRCJAIBwCeCJ8IkQgHAKAIjwiSCAcAoAidCI8IBwCfCJMIkQgHAJ8IoQiTCAcAogiSCJQIBwCiCKAIkggHAKEIlQiTCAcAoQijCJUIBwCkCJQIlggHAKQIogiUCAcAowiXCJUIBwCjCKUIlwgHAKYIlgiYCAcApgikCJYIBwCbCJgIjQgHAJsIpgiYCAcApQiOCJcIBwClCJwIjggHAKcImgiZCAcApwioCJoIBwCoCJsImggHAKgIqQibCAcAqgiZCJwIBwCqCKcImQgHAKsIngidCAcAqwisCJ4IBwCsCJ8InggHAKwIrQifCAcArgidCKAIBwCuCKsInQgHAK0IoQifCAcArQivCKEIBwCwCKAIoggHALAIrgigCAcArwijCKEIBwCvCLEIowgHALIIogikCAcAsgiwCKIIBwCxCKUIowgHALEIswilCAcAtAikCKYIBwC0CLIIpAgHAKkIpgibCAcAqQi0CKYIBwCzCJwIpQgHALMIqgicCAcAtQioCKcIBwC1CLYIqAgHALYIqQioCAcAtgi3CKkIBwC4CKcIqggHALgItQinCAcAuQisCKsIBwC5CLoIrAgHALoIrQisCAcAugi7CK0IBwC8CKsIrggHALwIuQirCAcAuwivCK0IBwC7CL0IrwgHAL4IrgiwCAcAvgi8CK4IBwC9CLEIrwgHAL0IvwixCAcAwAiwCLIIBwDACL4IsAgHAL8IswixCAcAvwjBCLMIBwDCCLIItAgHAMIIwAiyCAcAtwi0CKkIBwC3CMIItAgHAMEIqgizCAcAwQi4CKoIBwDDCLYItQgHAMMIxAi2CAcAxAi3CLYIBwDECMUItwgHAMYItQi4CAcAxgjDCLUIBwDHCLoIuQgHAMcIyAi6CAcAyAi7CLoIBwDICMkIuwgHAMoIuQi8CAcAygjHCLkIBwDJCL0IuwgHAMkIywi9CAcAzAi8CL4IBwDMCMoIvAgHAMsIvwi9CAcAywjNCL8IBwDOCL4IwAgHAM4IzAi+CAcAzQjBCL8IBwDNCM8IwQgHANAIwAjCCAcA0AjOCMAIBwDFCMIItwgHAMUI0AjCCAcAzwi4CMEIBwDPCMYIuAgHANEIxAjDCAcA0QjSCMQIBwDSCAEIAAgHANII0QgBCAcA0gjFCMQIBwDSCNMIxQgHANMIAAgDCAcA0wjSCAAIBwDUCMMIxggHANQI0QjDCAcA0QgGCAEIBwDRCNQIBggHANUIyAjHCAcA1QjWCMgIBwDWCNcI2AgHANYI1QjXCAcA1gjJCMgIBwDWCNkIyQgHANkI2AjaCAcA2QjWCNgIBwDbCMcIyggHANsI1QjHCAcA1QjcCNcIBwDVCNsI3AgHANkIywjJCAcA2QjdCMsIBwDdCNoIDwgHAN0I2QjaCAcA3gjKCMwIBwDeCNsIyggHANsIEgjcCAcA2wjeCBIIBwDdCM0IywgHAN0I3wjNCAcA3wgPCBMIBwDfCN0IDwgHAOAIzAjOCAcA4AjeCMwIBwDeCBYIEggHAN4I4AgWCAcA3wjPCM0IBwDfCOEIzwgHAOEIEwgXCAcA4QjfCBMIBwDiCM4I0AgHAOII4AjOCAcA4AgaCBYIBwDgCOIIGggHANMI0AjFCAcA0wjiCNAIBwDiCAMIGggHAOII0wgDCAcA4QjGCM8IBwDhCNQIxggHANQIFwgGCAcA1AjhCBcIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ0wQdUDAAByYXY0LXNoaWVsZHMA4AFWDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ8wQZIDAAByYXY0LXRpcmUAwAE2DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kPSg9LD0wPTQ9OD08PUA9RD1IPUw9UD1UPVg9XD1gPWQ9aD1sPXA9dD14PXw9gD2EPYg9jD2QPZQ9mD2cPaA9pD2oPaw9sD20Pbg9vD3APcQ9yD3MPdA91D3YPdw94D3kPeg97D3wPfQ9+D38PgA+BD4IPgw+ED4UPhg+HD4gPiQ+KD4sPjA+ND44Pjw+QD5EPkg+TD5QPlQ+WD5cPmA+ZD5oPmw+cD50Png+fD6APoQ+iD6MPpA+lD6YPpw+oD6kPqg+rD6wPrQ+uD68PsA+xD7IPsw+0D7UPtg+3D7gPuQ+6D7sPvA+9D74Pvw/AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MP1A/VD9YP1w/YD9kP2g/bD9wP3Q/eD98P4A/hD+IP4w/kD+UP5g/nD+gP6Q/qD+sP7A/tD+4P7w/wD/EP8g/zD/QP9Q/2D/cP+A/5D/oP+w/8D/0P/g//DwAQARACEAMQBBAFEAYQBxAIEAkQChALEAwQDRAOEA8QEBAREBIQExAUEBUQFhAXEBgQGRAaEBsQHBAdEB4QHxAgECEQIhAjECQQJRAmECcQKBApECoQKxAsEC0QLhAvEDAQMRAyEDMQNBA1EDYQNxA4EDkQOhA7EDwQPRA+ED8QQBBBEEIQQxBEEEUQRhBHEEgQSRBKEEsQTBBNEE4QTxBQEFEQUhBTEFQQVRBWEFcQWBBZEFoQWxBcEF0QXhBfEGAQYRBiEGMQZBBlEGYQZxBoEGkQahBrEGwQbRBuEG8QcBBxEHIQcxB0EHUQdhB3EHgQeRB6EHsQfBB9EH4QfxCAEIEQghCDEIQQhRCGEIcQiBCJEIoQixCMEI0QjhCPEJAQkRCSEJMQlBCVEJYQlxCYEJkQmhCbEJwQnRCeEJ8QoBChEKIQoxCkEKUQphCnEKgQqRCqEKsQrBCtEK4QrxCwELEQshCzELQQtRC2ELcQuBC5ELoQuxC8EL0QvhC/EMAQwRDCEMMQxBDFEMYQxxDIEMkQyhDLEMwQzRDOEM8Q0BDRENIQ0xDUENUQ1hDXENgQ2RDaENsQ3BDdEN4Q3xDgEOEQ4hDjEOQQ5RDmEOcQ6BDpEOoQ6xDsEO0Q7hDvEPAQ8RDyEPMQ9BD1EFBB3kMAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA9AAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAIABAAFAAcAAgABAAQABwAFAAYABwAHAAUABAAGAAcABwAIAAkABwAHAAYACAAHAAkACgALAAcACQAIAAoABwALAAwADQAHAAsACgAMAAcADQAOAA8ABwANAAwADgAHAA8AEAARAAcADwAOABAABwARABIAEwAHABEAEAASAAcAEwAUABUABwATABIAFAAHABUAFgAXAAcAFQAUABYABwAXABgAGQAHABcAFgAYAAcAGQAaABsABwAZABgAGgAHABsAHAAdAAcAGwAaABwABwAcAB4AHQAHABwAHwAeAAcAHwAgAB4ABwAfACEAIAAHACEAIgAgAAcAIQAjACIABwAjACQAIgAHACMAJQAkAAcAJQAmACQABwAlACcAJgAHACcAKAAmAAcAJwApACgABwApACoAKAAHACkAKwAqAAcAKwAsACoABwArAC0ALAAHAC0ALgAsAAcALQAvAC4ABwAvADAALgAHAC8AMQAwAAcAMQAyADAABwAxADMAMgAHADMANAAyAAcAMwA1ADQABwA1ADYANAAHADUANwA2AAcANwA4ADYABwA3ADkAOAAHADkAOgA4AAcAOQA7ADoABwA7ADwAOgAHADsAPQA8AAcAPQA+ADwABwA9AD8APgAHAD8AQAA+AAcAPwBBAEAABwBBAEIAQAAHAEEAQwBCAAcAQwBEAEIABwBDAEUARAAHAEUARgBEAAcARQBHAEYABwBHAEgARgAHAEcASQBIAAcASQBKAEgABwBJAEsASgAHAEsATABKAAcASwBNAEwABwBNAE4ATAAHAE0ATwBOAAcATgBQAFEABwBOAE8AUAAHAFEAUgBTAAcAUQBQAFIABwBTAFQAVQAHAFMAUgBUAAcAVQBWAFcABwBVAFQAVgAHAFcAWABZAAcAVwBWAFgABwBZAFoAWwAHAFkAWABaAAcAWwBcAF0ABwBbAFoAXAAHAF0AXgBfAAcAXQBcAF4ABwBfAGAAYQAHAF8AXgBgAAcAYQBiAGMABwBhAGAAYgAHAGMAAwAAAAcAYwBiAAMABwADAGQAAQAHAAMAZQBkAAcAAQBmAAQABwABAGQAZgAHAAQAZwAGAAcABABmAGcABwAGAGgACAAHAAYAZwBoAAcACABpAAoABwAIAGgAaQAHAAoAagAMAAcACgBpAGoABwAMAGsADgAHAAwAagBrAAcADgBsABAABwAOAGsAbAAHABAAbQASAAcAEABsAG0ABwASAG4AFAAHABIAbQBuAAcAFABvABYABwAUAG4AbwAHABYAcAAYAAcAFgBvAHAABwAYAHEAGgAHABgAcABxAAcAGgByABwABwAaAHEAcgAHAHIAHwAcAAcAcgBzAB8ABwBzACEAHwAHAHMAdAAhAAcAdAAjACEABwB0AHUAIwAHAHUAJQAjAAcAdQB2ACUABwB2ACcAJQAHAHYAdwAnAAcAdwApACcABwB3AHgAKQAHAHgAKwApAAcAeAB5ACsABwB5AC0AKwAHAHkAegAtAAcAegAvAC0ABwB6AHsALwAHAHsAMQAvAAcAewB8ADEABwB8ADMAMQAHAHwAfQAzAAcAfQA1ADMABwB9AH4ANQAHAH4ANwA1AAcAfgB/ADcABwB/ADkANwAHAH8AgAA5AAcAgAA7ADkABwCAAIEAOwAHAIEAPQA7AAcAgQCCAD0ABwCCAD8APQAHAIIAgwA/AAcAgwBBAD8ABwCDAIQAQQAHAIQAQwBBAAcAhACFAEMABwCFAEUAQwAHAIUAhgBFAAcAhgBHAEUABwCGAIcARwAHAIcASQBHAAcAhwCIAEkABwCIAEsASQAHAIgAiQBLAAcAiQBNAEsABwCJAIoATQAHAIoATwBNAAcAigCLAE8ABwBPAIwAUAAHAE8AiwCMAAcAUACNAFIABwBQAIwAjQAHAFIAjgBUAAcAUgCNAI4ABwBUAI8AVgAHAFQAjgCPAAcAVgCQAFgABwBWAI8AkAAHAFgAkQBaAAcAWACQAJEABwBaAJIAXAAHAFoAkQCSAAcAXACTAF4ABwBcAJIAkwAHAF4AlABgAAcAXgCTAJQABwBgAJUAYgAHAGAAlACVAAcAYgBlAAMABwBiAJUAZQAHAGQAlgCXAAcAZABlAJYABwBkAJgAZgAHAGQAlwCYAAcAZgCZAGcABwBmAJgAmQAHAGcAmgBoAAcAZwCZAJoABwBoAJsAaQAHAGgAmgCbAAcAaQCcAGoABwBpAJsAnAAHAGoAnQBrAAcAagCcAJ0ABwBrAJ4AbAAHAGsAnQCeAAcAbACfAG0ABwBsAJ4AnwAHAG0AoABuAAcAbQCfAKAABwBuAKEAbwAHAG4AoAChAAcAbwCiAHAABwBvAKEAogAHAHAAowBxAAcAcACiAKMABwBxAKQAcgAHAHEAowCkAAcApABzAHIABwCkAKUAcwAHAKUAdABzAAcApQCmAHQABwCmAHUAdAAHAKYApwB1AAcApwB2AHUABwCnAKgAdgAHAKgAdwB2AAcAqACpAHcABwCpAHgAdwAHAKkAqgB4AAcAqgB5AHgABwCqAKsAeQAHAKsAegB5AAcAqwCsAHoABwCsAHsAegAHAKwArQB7AAcArQB8AHsABwCtAK4AfAAHAK4AfQB8AAcArgCvAH0ABwCvAH4AfQAHAK8AsAB+AAcAsAB/AH4ABwCwALEAfwAHALIAfwCxAAcAsgCAAH8ABwCzAIAAsgAHALMAgQCAAAcAtACBALMABwC0AIIAgQAHALUAggC0AAcAtQCDAIIABwC2AIMAtQAHALYAhACDAAcAtwCEALYABwC3AIUAhAAHALgAhQC3AAcAuACGAIUABwC5AIYAuAAHALkAhwCGAAcAugCHALkABwC6AIgAhwAHALsAiAC6AAcAuwCJAIgABwC8AIkAuwAHALwAigCJAAcAvQCKALwABwC9AIsAigAHAIwAvQC+AAcAjACLAL0ABwCNAL4AvwAHAI0AjAC+AAcAjgC/AMAABwCOAI0AvwAHAI8AwADBAAcAjwCOAMAABwCQAMEAwgAHAJAAjwDBAAcAkQDCAMMABwCRAJAAwgAHAJIAwwDEAAcAkgCRAMMABwCTAMQAxQAHAJMAkgDEAAcAlADFAMYABwCUAJMAxQAHAJUAxgDHAAcAlQCUAMYABwBlAMcAlgAHAGUAlQDHAAcAxADIAMUABwDEAMkAyAAHAMgAxgDFAAcAyADKAMYABwDKAMcAxgAHAMoAywDHAAcAzACYAJcABwDMAM0AmAAHAM0AmQCYAAcAzQDOAJkABwDOAJoAmQAHAM4AzwCaAAcA0ACdAJwABwDQANEAnQAHANEAngCdAAcA0QDSAJ4ABwDSAJ8AngAHANIA0wCfAAcA1AChANUABwDUAKIAoQAHANYAogDUAAcA1gCjAKIABwDXAKMA1gAHANcApACjAAcA2ACmANkABwDYAKcApgAHANoApwDYAAcA2gCoAKcABwDbAKgA2gAHANsAqQCoAAcA3ACrAN0ABwDcAKwAqwAHAK0A3ADeAAcArQCsANwABwCuAN4A3wAHAK4ArQDeAAcAsQDgAOEABwCxALAA4AAHALIA4QDiAAcAsgCxAOEABwCzAOIA4wAHALMAsgDiAAcAtgDkAOUABwC2ALUA5AAHALcA5QDmAAcAtwC2AOUABwC4AOYA5wAHALgAtwDmAAcAugDoALsABwC6AOkA6AAHALsA6gC8AAcAuwDoAOoABwC8AOsAvQAHALwA6gDrAAcAvwDsAMAABwC/AO0A7AAHAMAA7gDBAAcAwADsAO4ABwDBAO8AwgAHAMEA7gDvAAcAyQDwAMgABwDJAPEA8AAHAPAAygDIAAcA8ADyAMoABwDyAMsAygAHAPIA8wDLAAcA9ADNAMwABwD0APUAzQAHAPUAzgDNAAcA9QD2AM4ABwD2AM8AzgAHAPYA9wDPAAcA+ADRANAABwD4APkA0QAHAPkA0gDRAAcA+QD6ANIABwD6ANMA0gAHAPoA+wDTAAcA/ADVAP0ABwD8ANQA1QAHAP4A1AD8AAcA/gDWANQABwD/ANYA/gAHAP8A1wDWAAcAAAHZAAEBBwAAAdgA2QAHAAIB2AAAAQcAAgHaANgABwADAdoAAgEHAAMB2wDaAAcABAHdAAUBBwAEAdwA3QAHAN4ABAEGAQcA3gDcAAQBBwDfAAYBBwEHAN8A3gAGAQcA4QAIAQkBBwDhAOAACAEHAOIACQEKAQcA4gDhAAkBBwDjAAoBCwEHAOMA4gAKAQcA5QAMAQ0BBwDlAOQADAEHAOYADQEOAQcA5gDlAA0BBwDnAA4BDwEHAOcA5gAOAQcA6QAQAegABwDpABEBEAEHAOgAEgHqAAcA6AAQARIBBwDqABMB6wAHAOoAEgETAQcA7QAUAewABwDtABUBFAEHAOwAFgHuAAcA7AAUARYBBwDuABcB7wAHAO4AFgEXAQcAGAEZAfEABwAYARoBGQEHAPEAGwHwAAcA8QAZARsBBwAbAfIA8AAHABsBHAHyAAcAHAHzAPIABwAcAR0B8wAHAB0BHgHzAAcAHQEfAR4BBwAfAfQAHgEHAB8BIAH0AAcAIAH1APQABwAgASEB9QAHACEB9gD1AAcAIQEiAfYABwAiAfcA9gAHACIBIwH3AAcAIwEkAfcABwAjASUBJAEHACUB+AAkAQcAJQEmAfgABwAmAfkA+AAHACYBJwH5AAcAJwH6APkABwAnASgB+gAHACgB+wD6AAcAKAEpAfsABwApASoB+wAHACkBKwEqAQcALAEqASsBBwAsAf0AKgEHAC0B/QAsAQcALQH8AP0ABwAuAfwALQEHAC4B/gD8AAcALwH+AC4BBwAvAf8A/gAHADAB/wAvAQcAMAExAf8ABwAyATEBMAEHADIBAQExAQcAMwEBATIBBwAzAQABAQEHADQBAAEzAQcANAECAQABBwA1AQIBNAEHADUBAwECAQcANgEDATUBBwA2ATcBAwEHADgBNwE2AQcAOAEFATcBBwA5AQUBOAEHADkBBAEFAQcABgE5AToBBwAGAQQBOQEHAAcBOgE7AQcABwEGAToBBwA8ATsBPQEHADwBBwE7AQcACAE9AT4BBwAIATwBPQEHAAkBPgE/AQcACQEIAT4BBwAKAT8BQAEHAAoBCQE/AQcACwFAAUEBBwALAQoBQAEHAEIBQQFDAQcAQgELAUEBBwAMAUMBRAEHAAwBQgFDAQcADQFEAUUBBwANAQwBRAEHAA4BRQFGAQcADgENAUUBBwAPAUYBRwEHAA8BDgFGAQcADwFIAUkBBwAPAUcBSAEHAEkBSgERAQcASQFIAUoBBwARAUsBEAEHABEBSgFLAQcAEAFMARIBBwAQAUsBTAEHABIBTQETAQcAEgFMAU0BBwATAU4BTwEHABMBTQFOAQcATwFQARUBBwBPAU4BUAEHABUBUQEUAQcAFQFQAVEBBwAUAVIBFgEHABQBUQFSAQcAFgFTARcBBwAWAVIBUwEHABcBGgEYAQcAFwFTARoBBwAZAVQBVQEHABkBGgFUAQcAGwFVAVYBBwAbARkBVQEHAFcBGwFWAQcAVwEcARsBBwBYARwBVwEHAFgBHQEcAQcAWQEdAVgBBwBZAR8BHQEHAFoBHwFZAQcAWgEgAR8BBwBbASABWgEHAFsBIQEgAQcAXAEhAVsBBwBcASIBIQEHAF0BIgFcAQcAXQEjASIBBwBeASMBXQEHAF4BJQEjAQcAXwElAV4BBwBfASYBJQEHAGABJgFfAQcAYAEnASYBBwBhAScBYAEHAGEBKAEnAQcAYgEoAWEBBwBiASkBKAEHAGMBKQFiAQcAYwErASkBBwBjASwBKwEHAGMBZAEsAQcAZAEtASwBBwBkAWUBLQEHAGUBLgEtAQcAZQFmAS4BBwBmAS8BLgEHAGYBZwEvAQcAZwEwAS8BBwBnAWgBMAEHAGgBMgEwAQcAaAFpATIBBwBpATMBMgEHAGkBagEzAQcAagE0ATMBBwBqAWsBNAEHAGsBNQE0AQcAawFsATUBBwBsATYBNQEHAGwBbQE2AQcAbQE4ATYBBwBtAW4BOAEHAG4BOQE4AQcAbgFvATkBBwA5AXABOgEHADkBbwFwAQcAOgFxATsBBwA6AXABcQEHADsBcgE9AQcAOwFxAXIBBwA9AXMBPgEHAD0BcgFzAQcAPgF0AT8BBwA+AXMBdAEHAD8BdQFAAQcAPwF0AXUBBwBAAXYBQQEHAEABdQF2AQcAQQF3AUMBBwBBAXYBdwEHAEMBeAFEAQcAQwF3AXgBBwBEAXkBRQEHAEQBeAF5AQcARQF6AUYBBwBFAXkBegEHAEYBewFHAQcARgF6AXsBBwBIAXsBfAEHAEgBRwF7AQcASgF8AX0BBwBKAUgBfAEHAEsBfQF+AQcASwFKAX0BBwBMAX4BfwEHAEwBSwF+AQcATQF/AYABBwBNAUwBfwEHAE4BgAGBAQcATgFNAYABBwBQAYEBggEHAFABTgGBAQcAUQGCAYMBBwBRAVABggEHAFIBgwGEAQcAUgFRAYMBBwBTAYQBhQEHAFMBUgGEAQcAGgGFAVQBBwAaAVMBhQEHAFUBhgGHAQcAVQFUAYYBBwBWAYcBiAEHAFYBVQGHAQcAiQFWAYgBBwCJAVcBVgEHAIoBVwGJAQcAigFYAVcBBwCLAVgBigEHAIsBWQFYAQcAjAFZAYsBBwCMAVoBWQEHAI0BWgGMAQcAjQFbAVoBBwCOAVsBjQEHAI4BXAFbAQcAjwFcAY4BBwCPAV0BXAEHAJABXQGPAQcAkAFeAV0BBwCRAV4BkAEHAJEBXwFeAQcAkgFfAZEBBwCSAWABXwEHAJMBYAGSAQcAkwFhAWABBwCUAWEBkwEHAJQBYgFhAQcAlQFiAZQBBwCVAWMBYgEHAJUBZAFjAQcAlQGWAWQBBwCWAWUBZAEHAJYBlwFlAQcAlwFmAWUBBwCXAZgBZgEHAJgBZwFmAQcAmAGZAWcBBwCZAWgBZwEHAJkBmgFoAQcAmgFpAWgBBwCaAZsBaQEHAJsBagFpAQcAmwGcAWoBBwCcAWsBagEHAJwBnQFrAQcAnQFsAWsBBwCdAZ4BbAEHAJ4BbQFsAQcAngGfAW0BBwCfAW4BbQEHAJ8BoAFuAQcAoAFvAW4BBwCgAaEBbwEHAG8BogFwAQcAbwGhAaIBBwBwAaMBcQEHAHABogGjAQcAcQGkAXIBBwBxAaMBpAEHAHIBpQFzAQcAcgGkAaUBBwBzAaYBdAEHAHMBpQGmAQcAdAGnAXUBBwB0AaYBpwEHAHUBqAF2AQcAdQGnAagBBwB2AakBdwEHAHYBqAGpAQcAdwGqAXgBBwB3AakBqgEHAHgBqwF5AQcAeAGqAasBBwB5AawBegEHAHkBqwGsAQcAegGtAXsBBwB6AawBrQEHAHwBrQGuAQcAfAF7Aa0BBwB9Aa4BrwEHAH0BfAGuAQcAfgGvAbABBwB+AX0BrwEHAH8BsAGxAQcAfwF+AbABBwCAAbEBsgEHAIABfwGxAQcAgQGyAbMBBwCBAYABsgEHAIIBswG0AQcAggGBAbMBBwCDAbQBtQEHAIMBggG0AQcAhAG1AbYBBwCEAYMBtQEHAIUBtgG3AQcAhQGEAbYBBwBUAbcBhgEHAFQBhQG3AQcAhwG4AbkBBwCHAYYBuAEHAIgBuQG6AQcAiAGHAbkBBwC7AYgBugEHALsBiQGIAQcAvAGJAbsBBwC8AYoBiQEHAL0BigG8AQcAvQGLAYoBBwC+AYsBvQEHAL4BjAGLAQcAvwGMAb4BBwC/AY0BjAEHAMABjQG/AQcAwAGOAY0BBwDBAY4BwAEHAMEBjwGOAQcAwgGPAcEBBwDCAZABjwEHAMMBkAHCAQcAwwGRAZABBwDEAZEBwwEHAMQBkgGRAQcAxQGSAcQBBwDFAZMBkgEHAMYBkwHFAQcAxgGUAZMBBwDHAZQBxgEHAMcBlQGUAQcAxwGWAZUBBwDHAcgBlgEHAMgBlwGWAQcAyAHJAZcBBwDJAZgBlwEHAMkBygGYAQcAygGZAZgBBwDKAcsBmQEHAMsBmgGZAQcAywHMAZoBBwDMAZsBmgEHAMwBzQGbAQcAzQGcAZsBBwDNAc4BnAEHAM4BnQGcAQcAzgHPAZ0BBwDPAZ4BnQEHAM8B0AGeAQcA0AGfAZ4BBwDQAdEBnwEHANEBoAGfAQcA0QHSAaABBwDSAaEBoAEHANIB0wGhAQcAoQHUAaIBBwChAdMB1AEHAKIB1QGjAQcAogHUAdUBBwCjAdYBpAEHAKMB1QHWAQcApAHXAaUBBwCkAdYB1wEHAKUB2AGmAQcApQHXAdgBBwCmAdkBpwEHAKYB2AHZAQcApwHaAagBBwCnAdkB2gEHAKgB2wGpAQcAqAHaAdsBBwCpAdwBqgEHAKkB2wHcAQcAqgHdAasBBwCqAdwB3QEHAKsB3gGsAQcAqwHdAd4BBwCsAd8BrQEHAKwB3gHfAQcArgHfAeABBwCuAa0B3wEHAK8B4AHhAQcArwGuAeABBwCwAeEB4gEHALABrwHhAQcAsQHiAeMBBwCxAbAB4gEHALIB4wHkAQcAsgGxAeMBBwCzAeQB5QEHALMBsgHkAQcAtAHlAeYBBwC0AbMB5QEHALUB5gHnAQcAtQG0AeYBBwC2AecB6AEHALYBtQHnAQcAtwHoAekBBwC3AbYB6AEHAIYB6QG4AQcAhgG3AekBBwC4AeoBuQEHALgB6wHqAQcAuQHsAboBBwC5AeoB7AEHAOwBuwG6AQcA7AHtAbsBBwDtAbwBuwEHAO0B7gG8AQcA7gG9AbwBBwDuAe8BvQEHAO8BvgG9AQcA7wHwAb4BBwDwAb8BvgEHAPAB8QG/AQcA8QHAAb8BBwDxAfIBwAEHAPIBwQHAAQcA8gHzAcEBBwDzAcIBwQEHAPMB9AHCAQcA9AHDAcIBBwD0AfUBwwEHAPUBxAHDAQcA9QH2AcQBBwD2AcUBxAEHAPYB9wHFAQcA9wHGAcUBBwD3AfgBxgEHAPgBxwHGAQcA+AH5AccBBwD5AcgBxwEHAPkB+gHIAQcA+gHJAcgBBwD6AfsByQEHAPsBygHJAQcA+wH8AcoBBwD8AcsBygEHAPwB/QHLAQcA/QHMAcsBBwD9Af4BzAEHAP4BzQHMAQcA/gH/Ac0BBwD/Ac4BzQEHAP8BAALOAQcAAALPAc4BBwAAAgECzwEHAAEC0AHPAQcAAQICAtABBwACAtEB0AEHAAICAwLRAQcAAwLSAdEBBwADAgQC0gEHAAQC0wHSAQcABAIFAtMBBwDTAQYC1AEHANMBBQIGAgcA1AEHAtUBBwDUAQYCBwIHANUBCALWAQcA1QEHAggCBwDWAQkC1wEHANYBCAIJAgcA1wEKAtgBBwDXAQkCCgIHANgBCwLZAQcA2AEKAgsCBwDZAQwC2gEHANkBCwIMAgcA2gENAtsBBwDaAQwCDQIHANsBDgLcAQcA2wENAg4CBwDcAQ8C3QEHANwBDgIPAgcA3QEQAt4BBwDdAQ8CEAIHAN4BEQLfAQcA3gEQAhECBwDfARIC4AEHAN8BEQISAgcA4AETAuEBBwDgARICEwIHAOEBFALiAQcA4QETAhQCBwDiARUC4wEHAOIBFAIVAgcA4wEWAuQBBwDjARUCFgIHAOQBFwLlAQcA5AEWAhcCBwDlARgC5gEHAOUBFwIYAgcA5gEZAucBBwDmARgCGQIHAOcBGgLoAQcA5wEZAhoCBwDoARsC6QEHAOgBGgIbAgcA6QHrAbgBBwDpARsC6wEHABwCxAAdAgcAHALJAMQABwDEAB4CHQIHAMQAwwAeAgcAHwLHACACBwAfApYAxwAHAMcAIQIgAgcAxwDLACECBwAiApYAHwIHACIClwCWAAcAIwKXACICBwAjAswAlwAHACQCmgAlAgcAJAKbAJoABwCaACYCJQIHAJoAzwAmAgcAJwKbACQCBwAnApwAmwAHACgCnAAnAgcAKALQAJwABwApAp8AKgIHACkCoACfAAcAnwArAioCBwCfANMAKwIHACwCoAApAgcALAKhAKAABwDVACwCLQIHANUAoQAsAgcALgLXAC8CBwAuAqQA1wAHADACpAAuAgcAMAKlAKQABwAxAqUAMAIHADECpgClAAcA2QAxAjICBwDZAKYAMQIHADMC2wA0AgcAMwKpANsABwA1AqkAMwIHADUCqgCpAAcANgKqADUCBwA2AqsAqgAHAN0ANgI3AgcA3QCrADYCBwA4At8AOQIHADgCrgDfAAcArwA4AjoCBwCvAK4AOAIHALAAOgI7AgcAsACvADoCBwDgADsCPAIHAOAAsAA7AgcAPQLjAD4CBwA9ArMA4wAHALQAPQI/AgcAtACzAD0CBwC1AD8CQAIHALUAtAA/AgcA5ABAAkECBwDkALUAQAIHAEIC5wBDAgcAQgK4AOcABwC5AEICRAIHALkAuABCAgcARQK6AEYCBwBFAukAugAHALoARAJGAgcAugC5AEQCBwC9AEcCSAIHAL0A6wBHAgcAvgBIAkkCBwC+AL0ASAIHAEoCvwBLAgcASgLtAL8ABwC/AEkCSwIHAL8AvgBJAgcAwgBMAk0CBwDCAO8ATAIHAMMATQIeAgcAwwDCAE0CBwBOAskAHAIHAE4C8QDJAAcATwLxAE4CBwBPAhgB8QAHAPMAUAJRAgcA8wAeAVACBwDLAFECIQIHAMsA8wBRAgcAUgLMACMCBwBSAvQAzAAHAB4BUgJQAgcAHgH0AFICBwD3AFMCVAIHAPcAJAFTAgcAzwBUAiYCBwDPAPcAVAIHAFUC0AAoAgcAVQL4ANAABwAkAVUCUwIHACQB+ABVAgcA+wBWAlcCBwD7ACoBVgIHANMAVwIrAgcA0wD7AFcCBwD9AC0CWAIHAP0A1QAtAgcAKgFYAlYCBwAqAf0AWAIHAC8C/wBZAgcALwLXAP8ABwD/AFoCWQIHAP8AMQFaAgcAAQEyAlsCBwABAdkAMgIHADEBWwJaAgcAMQEBAVsCBwA0AgMBXAIHADQC2wADAQcAAwFdAlwCBwADATcBXQIHAAUBNwJeAgcABQHdADcCBwA3AV4CXQIHADcBBQFeAgcAXwI8AWACBwBfAgcBPAEHADkCBwFfAgcAOQLfAAcBBwBgAggBYQIHAGACPAEIAQcACAE8AmECBwAIAeAAPAIHAGICQgFjAgcAYgILAUIBBwA+AgsBYgIHAD4C4wALAQcAYwIMAWQCBwBjAkIBDAEHAAwBQQJkAgcADAHkAEECBwBlAkkBZgIHAGUCDwFJAQcAQwIPAWUCBwBDAucADwEHAGcC6QBFAgcAZwIRAekABwBmAhEBZwIHAGYCSQERAQcAaAJPAWkCBwBoAhMBTwEHAOsAaAJHAgcA6wATAWgCBwBqAu0ASgIHAGoCFQHtAAcAaQIVAWoCBwBpAk8BFQEHAGsCGAFPAgcAawIXARgBBwDvAGsCTAIHAO8AFwFrAgcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHwCdwJ0AgcAfAJ9AncCBwB7An4CeQIHAHsCfwJ+AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCIAoMCgAIHAIgCiQKDAgcAhwKKAoUCBwCHAosCigIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAjgKUApUCBwCOAo0ClAIHAJYCkgKXAgcAlgKQApICBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAJoCoAKhAgcAmgKZAqACBwCiAp4CowIHAKICnAKeAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCmAqwCrQIHAKYCpQKsAgcArgKqAq8CBwCuAqgCqgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAsgK4ArkCBwCyArECuAIHALoCtgK7AgcAugK0ArYCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAL4CxALFAgcAvgK9AsQCBwDGAsICxwIHAMYCwALCAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDQAssCyAIHANAC0QLLAgcAzwLSAs0CBwDPAtMC0gIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA3ALXAtQCBwDcAt0C1wIHANsC3gLZAgcA2wLfAt4CBwBuAuAC4QIHAG4CbQLgAgcA4gJyAuMCBwDiAnACcgIHAOQC4gLlAgcA5AJwAuICBwDmAnAC5AIHAOYCcwJwAgcA5wJzAuYCBwDnAngCcwIHAOgCeALnAgcA6AJ7AngCBwDpAnsC6AIHAOkCfwJ7AgcA6gJ/AukCBwDqAoQCfwIHAOsChALqAgcA6wKHAoQCBwDsAocC6wIHAOwCiwKHAgcA7QKLAuwCBwDtAo8CiwIHAI0C7QLuAgcAjQKPAu0CBwCUAu4C7wIHAJQCjQLuAgcAmwLvAvACBwCbApQC7wIHAJkC8ALxAgcAmQKbAvACBwCgAvEC8gIHAKACmQLxAgcApwLyAvMCBwCnAqAC8gIHAKUC8wL0AgcApQKnAvMCBwCsAvQC9QIHAKwCpQL0AgcAswL1AvYCBwCzAqwC9QIHALEC9gL3AgcAsQKzAvYCBwC4AvcC+AIHALgCsQL3AgcAvwL4AvkCBwC/ArgC+AIHAL0C+QL6AgcAvQK/AvkCBwDEAvoC+wIHAMQCvQL6AgcAzAL7AvwCBwDMAsQC+wIHAP0CzAL8AgcA/QLPAswCBwD+As8C/QIHAP4C0wLPAgcA/wLTAv4CBwD/AtgC0wIHAAAD2AL/AgcAAAPbAtgCBwABA9sCAAMHAAED3wLbAgcA5QLfAgEDBwDlAuIC3wIHAAID5ALlAgcAAgMDA+QCBwADA+YC5AIHAAMDBAPmAgcABQPmAgQDBwAFA+cC5gIHAAYD5wIFAwcABgPoAucCBwAHA+gCBgMHAAcD6QLoAgcACAPpAgcDBwAIA+oC6QIHAAkD6gIIAwcACQPrAuoCBwAKA+sCCQMHAAoD7ALrAgcACwPsAgoDBwALA+0C7AIHAO4CCwMMAwcA7gLtAgsDBwDvAgwDDQMHAO8C7gIMAwcA8AINAw4DBwDwAu8CDQMHAPECDgMPAwcA8QLwAg4DBwDyAg8DEAMHAPIC8QIPAwcA8wIQAxEDBwDzAvICEAMHAPQCEQMSAwcA9ALzAhEDBwD0AhMD9QIHAPQCEgMTAwcA9QIUA/YCBwD1AhMDFAMHAPYCFQP3AgcA9gIUAxUDBwD3AhYD+AIHAPcCFQMWAwcA+AIXA/kCBwD4AhYDFwMHAPkCGAP6AgcA+QIXAxgDBwD6AhkD+wIHAPoCGAMZAwcA+wIaA/wCBwD7AhkDGgMHABoD/QL8AgcAGgMbA/0CBwAbA/4C/QIHABsDHAP+AgcAHAP/Av4CBwAcAx0D/wIHAB0DAAP/AgcAHQMeAwADBwAeAwEDAAMHAB4DHwMBAwcAHwPlAgEDBwAfAwID5QIHACADAgMhAwcAIAMDAwIDBwAiAwMDIAMHACIDBAMDAwcAIwMEAyIDBwAjAwUDBAMHACQDBQMjAwcAJAMGAwUDBwAlAwYDJAMHACUDBwMGAwcAJgMHAyUDBwAmAwgDBwMHACcDCAMmAwcAJwMJAwgDBwAoAwkDJwMHACgDCgMJAwcAKQMKAygDBwApAwsDCgMHAAwDKQMqAwcADAMLAykDBwANAyoDKwMHAA0DDAMqAwcADgMrAywDBwAOAw0DKwMHAA8DLAMtAwcADwMOAywDBwAQAy0DLgMHABADDwMtAwcAEQMuAy8DBwARAxADLgMHABIDLwMwAwcAEgMRAy8DBwATAzADMQMHABMDEgMwAwcAFAMxAzIDBwAUAxMDMQMHABUDMgMzAwcAFQMUAzIDBwAWAzMDNAMHABYDFQMzAwcAFwM0AzUDBwAXAxYDNAMHABgDNQM2AwcAGAMXAzUDBwAZAzYDNwMHABkDGAM2AwcAGgM3AzgDBwAaAxkDNwMHADkDGgM4AwcAOQMbAxoDBwA6AxsDOQMHADoDHAMbAwcAOwMcAzoDBwA7Ax0DHAMHADwDHQM7AwcAPAMeAx0DBwA9Ax4DPAMHAD0DHwMeAwcAIQMfAz0DBwAhAwIDHwMHAD4DIQM/AwcAPgMgAyEDBwBAAyADPgMHAEADIgMgAwcAQQMiA0ADBwBBAyMDIgMHAEIDIwNBAwcAQgMkAyMDBwBDAyQDQgMHAEMDJQMkAwcARAMlA0MDBwBEAyYDJQMHAEUDJgNEAwcARQMnAyYDBwBGAycDRQMHAEYDKAMnAwcARwMoA0YDBwBHAykDKAMHACoDRwNIAwcAKgMpA0cDBwArA0gDSQMHACsDKgNIAwcALANJA0oDBwAsAysDSQMHAC0DSgNLAwcALQMsA0oDBwAuA0sDTAMHAC4DLQNLAwcALwNMA00DBwAvAy4DTAMHADADTQNOAwcAMAMvA00DBwAxA04DTwMHADEDMANOAwcAMgNPA1ADBwAyAzEDTwMHADMDUANRAwcAMwMyA1ADBwA0A1EDUgMHADQDMwNRAwcANQNSA1MDBwA1AzQDUgMHADYDUwNUAwcANgM1A1MDBwA3A1QDVQMHADcDNgNUAwcAOANVA1YDBwA4AzcDVQMHAFcDOANWAwcAVwM5AzgDBwBYAzkDVwMHAFgDOgM5AwcAWQM6A1gDBwBZAzsDOgMHAFoDOwNZAwcAWgM8AzsDBwBbAzwDWgMHAFsDPQM8AwcAPwM9A1sDBwA/AyEDPQMHAFwDXQNeAwcAXANfA10DBwBeA2ADYQMHAF4DXQNgAwcAYQNiA2MDBwBhA2ADYgMHAGMDZANlAwcAYwNiA2QDBwBlA2YDZwMHAGUDZANmAwcAZwNoA2kDBwBnA2YDaAMHAGkDagNrAwcAaQNoA2oDBwBrA2wDbQMHAGsDagNsAwcAbANuA20DBwBsA28DbgMHAG8DcANuAwcAbwNxA3ADBwBxA3IDcAMHAHEDcwNyAwcAcwN0A3IDBwBzA3UDdAMHAHUDdgN0AwcAdQN3A3YDBwB3A3gDdgMHAHcDeQN4AwcAeQN6A3gDBwB5A3sDegMHAHsDfAN6AwcAewN9A3wDBwB+A3wDfQMHAH4DfwN8AwcAgAN/A34DBwCAA4EDfwMHAIIDgQOAAwcAggODA4EDBwCEA4MDggMHAIQDhQODAwcAhgOFA4QDBwCGA4cDhQMHAIgDhwOGAwcAiAOJA4cDBwCKA4kDiAMHAIoDiwOJAwcAjAOKA40DBwCMA4sDigMHAI4DjQOPAwcAjgOMA40DBwCQA48DkQMHAJADjgOPAwcAkgORA5MDBwCSA5ADkQMHAJQDkwOVAwcAlAOSA5MDBwCWA5UDlwMHAJYDlAOVAwcAXAOXA18DBwBcA5YDlwMHAF8DmANdAwcAXwOZA5gDBwBdA5oDYAMHAF0DmAOaAwcAYAObA2IDBwBgA5oDmwMHAGYDnANoAwcAZgOdA5wDBwBoA54DagMHAGgDnAOeAwcAagOfA2wDBwBqA54DnwMHAJ8DbwNsAwcAnwOgA28DBwChA3UDcwMHAKEDogN1AwcAogN3A3UDBwCiA6MDdwMHAKMDeQN3AwcAowOkA3kDBwCkA3sDeQMHAKQDpQN7AwcApgN+A6cDBwCmA4ADfgMHAKgDgAOmAwcAqAOCA4ADBwCpA4IDqAMHAKkDhAOCAwcAqgOEA6kDBwCqA4YDhAMHAI0DqwOsAwcAjQOKA6sDBwCPA6wDrQMHAI8DjQOsAwcAkQOtA64DBwCRA48DrQMHAJMDrgOvAwcAkwORA64DBwBfA7ADmQMHAF8DlwOwAwcAmQOxA5gDBwCZA7IDsQMHAJgDswOaAwcAmAOxA7MDBwCaA7QDmwMHAJoDswO0AwcAmwO1A7YDBwCbA7QDtQMHALYDtwOdAwcAtgO1A7cDBwCdA7gDnAMHAJ0DtwO4AwcAnAO5A54DBwCcA7gDuQMHAJ4DugOfAwcAngO5A7oDBwC6A6ADnwMHALoDuwOgAwcAuwO8A6ADBwC7A70DvAMHAL0DoQO8AwcAvQO+A6EDBwC+A6IDoQMHAL4DvwOiAwcAvwOjA6IDBwC/A8ADowMHAMADpAOjAwcAwAPBA6QDBwDBA6UDpAMHAMEDwgOlAwcAwgPDA6UDBwDCA8QDwwMHAMUDwwPEAwcAxQOnA8MDBwDGA6cDxQMHAMYDpgOnAwcAxwOmA8YDBwDHA6gDpgMHAMgDqAPHAwcAyAOpA6gDBwDJA6kDyAMHAMkDqgOpAwcAygOqA8kDBwDKA8sDqgMHAMwDywPKAwcAzAOrA8sDBwCsA8wDzQMHAKwDqwPMAwcArQPNA84DBwCtA6wDzQMHAK4DzgPPAwcArgOtA84DBwCvA88D0AMHAK8DrgPPAwcA0QPQA9IDBwDRA68D0AMHALAD0gPTAwcAsAPRA9IDBwCZA9MDsgMHAJkDsAPTAwcAsgPUA7EDBwCyA9UD1AMHALED1gOzAwcAsQPUA9YDBwCzA9cDtAMHALMD1gPXAwcAtAPYA7UDBwC0A9cD2AMHALUD2QO3AwcAtQPYA9kDBwC3A9oDuAMHALcD2QPaAwcAuAPbA7kDBwC4A9oD2wMHALkD3AO6AwcAuQPbA9wDBwDcA7sDugMHANwD3QO7AwcA3QO9A7sDBwDdA94DvQMHAN4DvgO9AwcA3gPfA74DBwDfA78DvgMHAN8D4AO/AwcA4APAA78DBwDgA+EDwAMHAOEDwQPAAwcA4QPiA8EDBwDiA8IDwQMHAOID4wPCAwcA4wPEA8IDBwDjA+QDxAMHAOUDxAPkAwcA5QPFA8QDBwDmA8UD5QMHAOYDxgPFAwcA5wPGA+YDBwDnA8cDxgMHAOgDxwPnAwcA6APIA8cDBwDpA8gD6AMHAOkDyQPIAwcA6gPJA+kDBwDqA8oDyQMHAOsDygPqAwcA6wPMA8oDBwDNA+sD7AMHAM0DzAPrAwcAzgPsA+0DBwDOA80D7AMHAM8D7QPuAwcAzwPOA+0DBwDQA+4D7wMHANADzwPuAwcA0gPvA/ADBwDSA9AD7wMHANMD8APxAwcA0wPSA/ADBwCyA/ED1QMHALID0wPxAwcA1APyA/MDBwDUA9UD8gMHANYD8wP0AwcA1gPUA/MDBwDXA/QD9QMHANcD1gP0AwcA2AP1A/YDBwDYA9cD9QMHANkD9gP3AwcA2QPYA/YDBwDaA/cD+AMHANoD2QP3AwcA2wP4A/kDBwDbA9oD+AMHANwD+QP6AwcA3APbA/kDBwD7A9wD+gMHAPsD3QPcAwcA/APdA/sDBwD8A94D3QMHAP0D3gP8AwcA/QPfA94DBwD+A98D/QMHAP4D4APfAwcA/wPgA/4DBwD/A+ED4AMHAAAE4QP/AwcAAATiA+EDBwABBOIDAAQHAAEE4wPiAwcAAgTjAwEEBwACBOQD4wMHAAME5AMCBAcAAwTlA+QDBwAEBOUDAwQHAAQE5gPlAwcABQTmAwQEBwAFBOcD5gMHAAYE5wMFBAcABgToA+cDBwAHBOgDBgQHAAcE6QPoAwcACATpAwcEBwAIBOoD6QMHAAkE6gMIBAcACQTrA+oDBwDsAwkECgQHAOwD6wMJBAcA7QMKBAsEBwDtA+wDCgQHAO4DCwQMBAcA7gPtAwsEBwDvAwwEDQQHAO8D7gMMBAcA8AMNBA4EBwDwA+8DDQQHAPEDDgQPBAcA8QPwAw4EBwDVAw8E8gMHANUD8QMPBAcA8wMQBBEEBwDzA/IDEAQHAPQDEQQSBAcA9APzAxEEBwD1AxIEEwQHAPUD9AMSBAcA9gMTBBQEBwD2A/UDEwQHAPcDFAQVBAcA9wP2AxQEBwD4AxUEFgQHAPgD9wMVBAcA+QMWBBcEBwD5A/gDFgQHAPoDFwQYBAcA+gP5AxcEBwAZBPoDGAQHABkE+wP6AwcAGgT7AxkEBwAaBPwD+wMHABsE/AMaBAcAGwT9A/wDBwAcBP0DGwQHABwE/gP9AwcAHQT+AxwEBwAdBP8D/gMHAB4E/wMdBAcAHgQABP8DBwAfBAAEHgQHAB8EAQQABAcAIAQBBB8EBwAgBAIEAQQHACEEAgQgBAcAIQQDBAIEBwAiBAMEIQQHACIEBAQDBAcAIwQEBCIEBwAjBAUEBAQHACQEBQQjBAcAJAQGBAUEBwAlBAYEJAQHACUEBwQGBAcAJgQHBCUEBwAmBAgEBwQHACcECAQmBAcAJwQJBAgEBwAKBCcEKAQHAAoECQQnBAcACwQoBCkEBwALBAoEKAQHAAwEKQQqBAcADAQLBCkEBwANBCoEKwQHAA0EDAQqBAcADgQrBCwEBwAOBA0EKwQHAA8ELAQtBAcADwQOBCwEBwDyAy0EEAQHAPIDDwQtBAcAEAQuBBEEBwAQBC8ELgQHABEEMAQSBAcAEQQuBDAEBwASBDEEEwQHABIEMAQxBAcAEwQyBBQEBwATBDEEMgQHABQEMwQVBAcAFAQyBDMEBwAVBDQEFgQHABUEMwQ0BAcAFgQ1BBcEBwAWBDQENQQHABcENgQYBAcAFwQ1BDYEBwA2BBkEGAQHADYENwQZBAcANwQaBBkEBwA3BDgEGgQHADgEGwQaBAcAOAQ5BBsEBwA5BBwEGwQHADkEOgQcBAcAOgQdBBwEBwA6BDsEHQQHADsEHgQdBAcAOwQ8BB4EBwA8BB8EHgQHADwEPQQfBAcAPQQgBB8EBwA9BD4EIAQHAD8EIAQ+BAcAPwQhBCAEBwBABCEEPwQHAEAEIgQhBAcAQQQiBEAEBwBBBCMEIgQHAEIEIwRBBAcAQgQkBCMEBwBDBCQEQgQHAEMEJQQkBAcARAQlBEMEBwBEBCYEJQQHAEUEJgREBAcARQQnBCYEBwAoBEUERgQHACgEJwRFBAcAKQRGBEcEBwApBCgERgQHACoERwRIBAcAKgQpBEcEBwArBEgESQQHACsEKgRIBAcALARJBEoEBwAsBCsESQQHAC0ESgRLBAcALQQsBEoEBwAQBEsELwQHABAELQRLBAcAeANMBHYDBwB4A00ETAQHAHoDTQR4AwcAegNOBE0EBwB8A04EegMHAHwDTwROBAcAfwNPBHwDBwB/A1AETwQHAIEDUAR/AwcAgQNRBFAEBwCDA1EEgQMHAIMDUgRRBAcAhQNSBIMDBwCFA1MEUgQHAIcDUwSFAwcAhwNUBFMEBwCJA1QEhwMHAIkDVQRUBAcAiwNVBIkDBwCLA1YEVQQHAIwDVgSLAwcAjANXBFYEBwCOA1cEjAMHAI4DWARXBAcAkANYBI4DBwCQA1kEWAQHAJIDWQSQAwcAkgNaBFkEBwCUA1oEkgMHAJQDWwRaBAcAlgNbBJQDBwCWA1wEWwQHAFwDXASWAwcAXANdBFwEBwBeA10EXAMHAF4DXgRdBAcAYQNeBF4DBwBhA18EXgQHAGMDXwRhAwcAYwNgBF8EBwBlA2AEYwMHAGUDYQRgBAcAZwNhBGUDBwBnA2IEYQQHAGkDYgRnAwcAaQNjBGIEBwBrA2MEaQMHAGsDZARjBAcAbQNkBGsDBwBtA2UEZAQHAG4DZQRtAwcAbgNmBGUEBwBwA2YEbgMHAHADZwRmBAcAcgNnBHADBwByA2gEZwQHAHQDaARyAwcAdANpBGgEBwB2A2kEdAMHAHYDTARpBAcAtwJqBK4CBwC3AmsEagQHAGsETgRqBAcAawRNBE4EBwC0AmsEtwIHALQCbARrBAcAbARNBGsEBwBsBEwETQQHALoCbAS0AgcAugJtBGwEBwBtBEwEbAQHAG0EaQRMBAcAwwJtBLoCBwDDAm4EbQQHAG4EaQRtBAcAbgRoBGkEBwDAAm4EwwIHAMACbwRuBAcAbwRoBG4EBwBvBGcEaAQHAMYCbwTAAgcAxgJwBG8EBwBwBGcEbwQHAHAEZgRnBAcAyQJwBMYCBwDJAnEEcAQHAHEEZgRwBAcAcQRlBGYEBwDLAnEEyQIHAMsCcgRxBAcAcgRlBHEEBwByBGQEZQQHANECcgTLAgcA0QJzBHIEBwBzBGQEcgQHAHMEYwRkBAcA1QJzBNECBwDVAnQEcwQHAHQEYwRzBAcAdARiBGMEBwDXAnQE1QIHANcCdQR0BAcAdQRiBHQEBwB1BGEEYgQHAN0CdQTXAgcA3QJ2BHUEBwB2BGEEdQQHAHYEYARhBAcA4AJ2BN0CBwDgAncEdgQHAHcEYAR2BAcAdwRfBGAEBwBtAncE4AIHAG0CeAR3BAcAeARfBHcEBwB4BF4EXwQHAG8CeARtAgcAbwJ5BHgEBwB5BF4EeAQHAHkEXQReBAcAdQJ5BG8CBwB1AnoEeQQHAHoEXQR5BAcAegRcBF0EBwB3AnoEdQIHAHcCewR6BAcAewRcBHoEBwB7BFsEXAQHAH0CewR3AgcAfQJ8BHsEBwB8BFsEewQHAHwEWgRbBAcAgQJ8BH0CBwCBAn0EfAQHAH0EWgR8BAcAfQRZBFoEBwCDAn0EgQIHAIMCfgR9BAcAfgRZBH0EBwB+BFgEWQQHAIkCfgSDAgcAiQJ/BH4EBwB/BFgEfgQHAH8EVwRYBAcAkwJ/BIkCBwCTAoAEfwQHAIAEVwR/BAcAgARWBFcEBwCQAoAEkwIHAJACgQSABAcAgQRWBIAEBwCBBFUEVgQHAJYCgQSQAgcAlgKCBIEEBwCCBFUEgQQHAIIEVARVBAcAnwKCBJYCBwCfAoMEggQHAIMEVASCBAcAgwRTBFQEBwCcAoMEnwIHAJwChASDBAcAhARTBIMEBwCEBFIEUwQHAKIChAScAgcAogKFBIQEBwCFBFIEhAQHAIUEUQRSBAcAqwKFBKICBwCrAoYEhQQHAIYEUQSFBAcAhgRQBFEEBwCoAoYEqwIHAKgChwSGBAcAhwRQBIYEBwCHBE8EUAQHAK4ChwSoAgcArgJqBIcEBwBqBE8EhwQHAGoETgRPBAcAiARzAngCBwCIBIkEcwIHAG8CiAR1AgcAbwKJBIgEBwCKBH8ChAIHAIoEiwR/AgcAfQKKBIECBwB9AosEigQHAI8CjASLAgcAjwKNBIwEBwCJAo0EkwIHAIkCjASNBAcAmwKOBJQCBwCbAo8EjgQHAJYCjwSfAgcAlgKOBI8EBwCnApAEoAIHAKcCkQSQBAcAogKRBKsCBwCiApAEkQQHALMCkgSsAgcAswKTBJIEBwCuApMEtwIHAK4CkgSTBAcAvwKUBLgCBwC/ApUElAQHALoClQTDAgcAugKUBJUEBwCWBMQCzAIHAJYElwTEAgcAxgKWBMkCBwDGApcElgQHAJgE0wLYAgcAmASZBNMCBwDRApgE1QIHANECmQSYBAcAmgTfAuICBwCaBJsE3wIHAN0CmgTgAgcA3QKbBJoEBwCJBGwCnAQHAIkEbwJsAgcAcwKcBHECBwBzAokEnAQHAHUCnQR2AgcAdQKIBJ0EBwCIBHoCnQQHAIgEeAJ6AgcAiwR8Ap4EBwCLBH0CfAIHAH8CngR+AgcAfwKLBJ4EBwCBAp8EggIHAIECigSfBAcAigSGAp8EBwCKBIQChgIHAIwEiAKgBAcAjASJAogCBwCLAqAEigIHAIsCjASgBAcAkwKhBJECBwCTAo0EoQQHAI0EjAKhBAcAjQSPAowCBwCOBJcCogQHAI4ElgKXAgcAlAKiBJUCBwCUAo4EogQHAJ8CowSdAgcAnwKPBKMEBwCPBJgCowQHAI8EmwKYAgcAkASjAqQEBwCQBKICowIHAKACpAShAgcAoAKQBKQEBwCrAqUEqQIHAKsCkQSlBAcAkQSkAqUEBwCRBKcCpAIHAJIErwKmBAcAkgSuAq8CBwCsAqYErQIHAKwCkgSmBAcAtwKnBLUCBwC3ApMEpwQHAJMEsAKnBAcAkwSzArACBwCUBLsCqAQHAJQEugK7AgcAuAKoBLkCBwC4ApQEqAQHAMMCqQTBAgcAwwKVBKkEBwCVBLwCqQQHAJUEvwK8AgcAlwTHAqoEBwCXBMYCxwIHAMQCqgTFAgcAxAKXBKoEBwDJAqsEygIHAMkClgSrBAcAlgTOAqsEBwCWBMwCzgIHAJkE0AKsBAcAmQTRAtACBwDTAqwE0gIHANMCmQSsBAcA1QKtBNYCBwDVApgErQQHAJgE2gKtBAcAmATYAtoCBwCbBNwCrgQHAJsE3QLcAgcA3wKuBN4CBwDfApsErgQHAOACrwThAgcA4AKaBK8EBwCaBOMCrwQHAJoE4gLjAgcAqgQgAiECBwCqBMcCIAIHAMcCHwIgAgcAxwLCAh8CBwAiAsICwQIHACICHwLCAgcAIQLFAqoEBwAhAlECxQIHACMCwQKpBAcAIwIiAsECBwBSAqkEvAIHAFICIwKpBAcAUQK+AsUCBwBRAlACvgIHALwCUAJSAgcAvAK+AlACBwAdAsgCygIHAB0CHgLIAgcAHgLQAsgCBwAeAk0C0AIHAE0CrATQAgcATQJMAqwEBwBrAqwETAIHAGsC0gKsBAcAHALKAqsEBwAcAh0CygIHAKsETgIcAgcAqwTOAk4CBwBPAs4CzQIHAE8CTgLOAgcAawLNAtICBwBrAk8CzQIHANoCaQJqAgcA2gLZAmkCBwDeAmkC2QIHAN4CaAJpAgcArQRqAkoCBwCtBNoCagIHANYCSgJLAgcA1gKtBEoCBwDUAksCSQIHANQC1gJLAgcA3AJJAkgCBwDcAtQCSQIHAK4ESAJHAgcArgTcAkgCBwDeAkcCaAIHAN4CrgRHAgcAbAJEAkICBwBsAm4CRAIHAG4CRgJEAgcAbgLhAkYCBwDhAkUCRgIHAOECrwRFAgcArwRnAkUCBwCvBOMCZwIHAJwEQgJDAgcAnARsAkICBwBxAkMCZQIHAHECnARDAgcAZQJyAnECBwBlAmYCcgIHAGYC4wJyAgcAZgJnAuMCBwBjAnoCeQIHAGMCZAJ6AgcAYgJ5An4CBwBiAmMCeQIHAD4CfgKeBAcAPgJiAn4CBwA9Ap4EfAIHAD0CPgKeBAcAfAI/Aj0CBwB8AnQCPwIHAHQCQAI/AgcAdAJ2AkACBwB2AkECQAIHAHYCnQRBAgcAnQRkAkECBwCdBHoCZAIHAGECnwSGAgcAYQI8Ap8EBwCCAjwCOwIHAIICnwQ8AgcAgAI7AjoCBwCAAoICOwIHAIgCOgI4AgcAiAKAAjoCBwCgBDgCOQIHAKAEiAI4AgcAigI5Al8CBwCKAqAEOQIHAF8ChQKKAgcAXwJgAoUCBwCGAmACYQIHAIYChQJgAgcAXQKMAo4CBwBdAl4CjAIHAI4CXAJdAgcAjgKVAlwCBwCiBDMCNAIHAKIElwIzAgcAlwI1AjMCBwCXApICNQIHAJICNgI1AgcAkgKRAjYCBwCRAjcCNgIHAJECoQQ3AgcAXgKhBIwCBwBeAjcCoQQHAJUCNAJcAgcAlQKiBDQCBwAuAqQEowIHAC4CLwKkBAcAMAKjAp4CBwAwAi4CowIHADECngKdAgcAMQIwAp4CBwAvAqECpAQHAC8CWQKhAgcAMgKdAqMEBwAyAjECnQIHAFsCowSYAgcAWwIyAqMEBwCYAloCWwIHAJgCmgJaAgcAmgJZAloCBwCaAqECWQIHAC0CqQKlBAcALQIsAqkCBwBYAqUEpAIHAFgCLQKlBAcALAKqAqkCBwAsAikCqgIHACkCrwKqAgcAKQIqAq8CBwAqAqYErwIHACoCKwKmBAcAKwKtAqYEBwArAlcCrQIHAKQCVgJYAgcApAKmAlYCBwCmAlcCVgIHAKYCrQJXAgcAJwK2ArUCBwAnAiQCtgIHACQCuwK2AgcAJAIlArsCBwAoArUCpwQHACgCJwK1AgcAVQKnBLACBwBVAigCpwQHACUCqAS7AgcAJQImAqgEBwAmArkCqAQHACYCVAK5AgcAsAJTAlUCBwCwArICUwIHALICVAJTAgcAsgK5AlQCBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDEBMgEyQQHAMQExgTIBAcAyQTKBMsEBwDJBMgEygQHAMoEzATLBAcAygTNBMwEBwDNBM4EzAQHAM0EzwTOBAcAxQTOBM8EBwDFBMcEzgQHANAE0QTSBAcA0ATTBNEEBwDSBNQE1QQHANIE0QTUBAcA1ATWBNUEBwDUBNcE1gQHANcE2ATWBAcA1wTZBNgEBwDaBNgE2QQHANoE2wTYBAcA0ATaBNMEBwDQBNsE2gQHANwE3QTeBAcA3ATfBN0EBwDdBOAE3gQHAN0E4QTgBAcA4QTiBOAEBwDhBOME4gQHAOQE4gTjBAcA5ATlBOIEBwDmBOQE5wQHAOYE5QTkBAcA5gTfBNwEBwDmBOcE3wQHAOgE6QTqBAcA6ATrBOkEBwDrBOwE6QQHAOsE7QTsBAcA7gTsBO0EBwDuBO8E7AQHAPAE7gTxBAcA8ATvBO4EBwDwBPIE8wQHAPAE8QTyBAcA8wToBOoEBwDzBPIE6AQHAPQE9QT2BAcA9AT3BPUEBwD4BPUE9wQHAPgE+QT1BAcA+gT4BPsEBwD6BPkE+AQHAPoE/AT9BAcA+gT7BPwEBwD9BP4E/wQHAP0E/AT+BAcA/gT2BP8EBwD+BPQE9gQHAMYEAAUBBQcAxgTFBAAFBwDIBAEFAgUHAMgExgQBBQcAygQCBQMFBwDKBMgEAgUHAAQFygQDBQcABAXNBMoEBwAFBc0EBAUHAAUFzwTNBAcAAAXPBAUFBwAABcUEzwQHANEEBgUHBQcA0QTTBAYFBwDUBAcFCAUHANQE0QQHBQcACQXUBAgFBwAJBdcE1AQHAAoF1wQJBQcACgXZBNcEBwALBdkECgUHAAsF2gTZBAcA0wQLBQYFBwDTBNoECwUHAN0EDAUNBQcA3QTfBAwFBwAOBd0EDQUHAA4F4QTdBAcADwXhBA4FBwAPBeME4QQHABAF4wQPBQcAEAXkBOMEBwDnBBAFEQUHAOcE5AQQBQcA3wQRBQwFBwDfBOcEEQUHABIF6AQTBQcAEgXrBOgEBwAUBesEEgUHABQF7QTrBAcAFQXtBBQFBwAVBe4E7QQHAPEEFQUWBQcA8QTuBBUFBwDyBBYFFwUHAPIE8QQWBQcA6AQXBRMFBwDoBPIEFwUHABgF9AQZBQcAGAX3BPQEBwAaBfcEGAUHABoF+AT3BAcA+wQaBRsFBwD7BPgEGgUHAPwEGwUcBQcA/AT7BBsFBwD+BBwFHQUHAP4E/AQcBQcAGQX+BB0FBwAZBfQE/gQHAAEFHgUfBQcAAQUABR4FBwACBR8FIAUHAAIFAQUfBQcAAwUgBSEFBwADBQIFIAUHACIFAwUhBQcAIgUEBQMFBwAjBQQFIgUHACMFBQUEBQcAHgUFBSMFBwAeBQAFBQUHAAcFJAUlBQcABwUGBSQFBwAIBSUFJgUHAAgFBwUlBQcAJwUIBSYFBwAnBQkFCAUHACgFCQUnBQcAKAUKBQkFBwApBQoFKAUHACkFCwUKBQcABgUpBSQFBwAGBQsFKQUHAA0FKgUrBQcADQUMBSoFBwAsBQ0FKwUHACwFDgUNBQcALQUOBSwFBwAtBQ8FDgUHAC4FDwUtBQcALgUQBQ8FBwARBS4FLwUHABEFEAUuBQcADAUvBSoFBwAMBREFLwUHADAFEwUxBQcAMAUSBRMFBwAyBRIFMAUHADIFFAUSBQcAMwUUBTIFBwAzBRUFFAUHABYFMwU0BQcAFgUVBTMFBwAXBTQFNQUHABcFFgU0BQcAEwU1BTEFBwATBRcFNQUHADYFGQU3BQcANgUYBRkFBwA4BRgFNgUHADgFGgUYBQcAGwU4BTkFBwAbBRoFOAUHABwFOQU6BQcAHAUbBTkFBwAdBToFOwUHAB0FHAU6BQcANwUdBTsFBwA3BRkFHQUHAB8FsQSzBAcAHwUeBbEEBwAfBbAEIAUHAB8FswSwBAcAIAU8BSEFBwAgBbAEPAUHADwFIgUhBQcAPAU9BSIFBwA9BSMFIgUHAD0FsgQjBQcAsQQjBbIEBwCxBB4FIwUHACQFtAQlBQcAJAW3BLQEBwAlBT4FJgUHACUFtAQ+BQcAPgUnBSYFBwA+BT8FJwUHAD8FKAUnBQcAPwW2BCgFBwC1BCgFtgQHALUEKQUoBQcAJAW1BLcEBwAkBSkFtQQHACoFQAUrBQcAKgW4BEAFBwBABSwFKwUHAEAFQQUsBQcAQQUtBSwFBwBBBboELQUHALkELQW6BAcAuQQuBS0FBwAvBbkEuwQHAC8FLgW5BAcALwW4BCoFBwAvBbsEuAQHAEIFMAUxBQcAQgVDBTAFBwBDBTIFMAUHAEMFvgQyBQcAvQQyBb4EBwC9BDMFMgUHADQFvQS/BAcANAUzBb0EBwA0BbwENQUHADQFvwS8BAcANQVCBTEFBwA1BbwEQgUHAMEENgU3BQcAwQTDBDYFBwDABDYFwwQHAMAEOAU2BQcAOQXABEQFBwA5BTgFwAQHADkFRQU6BQcAOQVEBUUFBwA6BcIEOwUHADoFRQXCBAcAwgQ3BTsFBwDCBMEENwUHALIEPAWwBAcAsgQ9BTwFBwC2BD4FtAQHALYEPwU+BQcAugRABbgEBwC6BEEFQAUHAMIERAXABAcAwgRFBUQFBwC+BEIFvAQHAL4EQwVCBQcA6gRkA/MEBwDqBGYDZAMHAGID8wRkAwcAYgPwBPMEBwCdA+wEtgMHAJ0D6QTsBAcAZgPpBJ0DBwBmA+oE6QQHAJsD8ARiAwcAmwPvBPAEBwCbA+wE7wQHAJsDtgPsBAcA3gTRA7ADBwDeBOAE0QMHAJcD3gSwAwcAlwPcBN4EBwCVA9wElwMHAJUD5gTcBAcAkwPmBJUDBwCTA+UE5gQHAK8D5QSTAwcArwPiBOUEBwCvA+AE4gQHAK8D0QPgBAcA1gTLA9UEBwDWBKoDywMHAKsD1QTLAwcAqwPSBNUEBwCKA9IEqwMHAIoD0ATSBAcAiAPQBIoDBwCIA9sE0AQHAIYD2wSIAwcAhgPYBNsEBwCqA9gEhgMHAKoD1gTYBAcApQPMBHsDBwClA8sEzAQHAMMDywSlAwcAwwPJBMsEBwCnA8kEwwMHAKcDxATJBAcAzgR7A8wEBwDOBH0DewMHAMcEfQPOBAcAxwR+A30DBwDEBH4DxwQHAMQEpwN+AwcAbwP/BHEDBwBvA/0E/wQHAKAD/QRvAwcAoAP6BP0EBwCgA/kE+gQHAKADvAP5BAcAoQP5BLwDBwChA/UE+QQHAHMD9QShAwcAcwP2BPUEBwBxA/YEcwMHAHED/wT2BAcARgVHBUgFBwBGBUkFRwUHAEgFSgVLBQcASAVHBUoFBwBLBUwFTQUHAEsFSgVMBQcATQVOBU8FBwBNBUwFTgUHAE8FUAVRBQcATwVOBVAFBwBRBVIFUwUHAFEFUAVSBQcAUwVUBVUFBwBTBVIFVAUHAFUFVgVXBQcAVQVUBVYFBwBWBVgFVwUHAFYFWQVYBQcAWQVaBVgFBwBZBVsFWgUHAFsFXAVaBQcAWwVdBVwFBwBdBV4FXAUHAF0FXwVeBQcAXwVgBV4FBwBfBWEFYAUHAGEFYgVgBQcAYQVjBWIFBwBjBWQFYgUHAGMFZQVkBQcAZQVmBWQFBwBlBWcFZgUHAGgFZgVnBQcAaAVpBWYFBwBqBWkFaAUHAGoFawVpBQcAbAVrBWoFBwBsBW0FawUHAG4FbQVsBQcAbgVvBW0FBwBwBW8FbgUHAHAFcQVvBQcAcgVxBXAFBwByBXMFcQUHAHQFcwVyBQcAdAV1BXMFBwB2BXQFdwUHAHYFdQV0BQcAeAV3BXkFBwB4BXYFdwUHAHoFeQV7BQcAegV4BXkFBwB8BXsFfQUHAHwFegV7BQcAfgV9BX8FBwB+BXwFfQUHAIAFfwWBBQcAgAV+BX8FBwBGBYEFSQUHAEYFgAWBBQcAdwVyBYIFBwB3BXQFcgUHAHsFdwWCBQcAewV5BXcFBwB/BXsFggUHAH8FfQV7BQcASQV/BYIFBwBJBYEFfwUHAEoFSQWCBQcASgVHBUkFBwBOBUoFggUHAE4FTAVKBQcAUgVOBYIFBwBSBVAFTgUHAFYFUgWCBQcAVgVUBVIFBwBbBVYFggUHAFsFWQVWBQcAXwVbBYIFBwBfBV0FWwUHAGMFXwWCBQcAYwVhBV8FBwBnBWMFggUHAGcFZQVjBQcAagVnBYIFBwBqBWgFZwUHAG4FagWCBQcAbgVsBWoFBwByBW4FggUHAHIFcAVuBQcAgwWABUYFBwCDBYQFgAUHAIUFRgVIBQcAhQWDBUYFBwCEBX4FgAUHAIQFhgV+BQcAhgV8BX4FBwCGBYcFfAUHAIcFegV8BQcAhwWIBXoFBwCIBXgFegUHAIgFiQV4BQcAiQV2BXgFBwCJBYoFdgUHAIoFdQV2BQcAigWLBXUFBwCMBVcFWAUHAIwFjQVXBQcAjgVYBVoFBwCOBYwFWAUHAI0FVQVXBQcAjQWPBVUFBwCPBVMFVQUHAI8FkAVTBQcAkAVRBVMFBwCQBZEFUQUHAJEFTwVRBQcAkQWSBU8FBwCSBU0FTwUHAJIFkwVNBQcAkwVLBU0FBwCTBZQFSwUHAJQFSAVLBQcAlAWFBUgFBwCLBXMFdQUHAIsFlQVzBQcAlQVxBXMFBwCVBZYFcQUHAJYFbwVxBQcAlgWXBW8FBwCXBW0FbwUHAJcFmAVtBQcAmAVrBW0FBwCYBZkFawUHAJkFaQVrBQcAmQWaBWkFBwCaBWYFaQUHAJoFmwVmBQcAmwVkBWYFBwCbBZwFZAUHAJwFYgVkBQcAnAWdBWIFBwCdBWAFYgUHAJ0FngVgBQcAngVeBWAFBwCeBZ8FXgUHAJ8FXAVeBQcAnwWgBVwFBwCgBVoFXAUHAKAFjgVaBQcAoQWEBYMFBwChBaIFhAUHAKMFgwWFBQcAowWhBYMFBwCiBYYFhAUHAKIFpAWGBQcApQWFBZQFBwClBaMFhQUHAKQFhwWGBQcApAWmBYcFBwCmBYgFhwUHAKYFpwWIBQcApwWJBYgFBwCnBagFiQUHAKgFigWJBQcAqAWpBYoFBwCpBYsFigUHAKkFqgWLBQcAqgWVBYsFBwCqBasFlQUHAKwFjQWMBQcArAWtBY0FBwCuBYwFjgUHAK4FrAWMBQcArQWPBY0FBwCtBa8FjwUHALAFjgWgBQcAsAWuBY4FBwCvBZAFjwUHAK8FsQWQBQcAsQWRBZAFBwCxBbIFkQUHALIFkgWRBQcAsgWzBZIFBwCzBZMFkgUHALMFtAWTBQcAtAWUBZMFBwC0BaUFlAUHAKsFlgWVBQcAqwW1BZYFBwC1BZcFlgUHALUFtgWXBQcAtgWYBZcFBwC2BbcFmAUHALcFmQWYBQcAtwW4BZkFBwC4BZoFmQUHALgFuQWaBQcAuQWbBZoFBwC5BboFmwUHALoFnAWbBQcAugW7BZwFBwC7BZ0FnAUHALsFvAWdBQcAvAWeBZ0FBwC8Bb0FngUHAL0FnwWeBQcAvQW+BZ8FBwC+BaAFnwUHAL4FsAWgBQcAvwXABcEFBwC/BcIFwAUHAL8FwwXCBQcAvwXEBcMFBwDEBcUFwwUHAMQFxgXFBQcAxgXHBcUFBwDGBcgFxwUHAMgFyQXHBQcAyAXKBckFBwDKBcsFyQUHAMoFzAXLBQcAzAXNBcsFBwDMBc4FzQUHAM0FzwXQBQcAzQXOBc8FBwDQBdEF0gUHANAFzwXRBQcA0gXTBdQFBwDSBdEF0wUHANQF1QXWBQcA1AXTBdUFBwDWBdcF2AUHANYF1QXXBQcA2QXXBdoFBwDZBdgF1wUHANsF2gXcBQcA2wXZBdoFBwDdBdwF3gUHAN0F2wXcBQcA3wXeBeAFBwDfBd0F3gUHAOEF4AXiBQcA4QXfBeAFBwDjBeIF5AUHAOMF4QXiBQcA5QXkBeYFBwDlBeMF5AUHAOcF5QXmBQcA5wXoBeUFBwDpBegF5wUHAOkF6gXoBQcA6wXqBekFBwDrBewF6gUHAO0F7AXrBQcA7QXuBewFBwDBBe4F7QUHAMEFwAXuBQcA7wXBBfAFBwDvBb8FwQUHAPEFvwXvBQcA8QXEBb8FBwDyBcQF8QUHAPIFxgXEBQcA8wXGBfIFBwDzBcgFxgUHAPQFyAXzBQcA9AXKBcgFBwD1BcoF9AUHAPUFzAXKBQcA9gXMBfUFBwD2Bc4FzAUHAM8F9gX3BQcAzwXOBfYFBwDRBfcF+AUHANEFzwX3BQcA0wX4BfkFBwDTBdEF+AUHANUF+QX6BQcA1QXTBfkFBwDXBfoF+wUHANcF1QX6BQcA2gX7BfwFBwDaBdcF+wUHANwF/AX9BQcA3AXaBfwFBwDeBf0F/gUHAN4F3AX9BQcA4AX+Bf8FBwDgBd4F/gUHAOIF/wUABgcA4gXgBf8FBwDkBQAGAQYHAOQF4gUABgcA5gUBBgIGBwDmBeQFAQYHAAMG5gUCBgcAAwbnBeYFBwAEBucFAwYHAAQG6QXnBQcABQbpBQQGBwAFBusF6QUHAAYG6wUFBgcABgbtBesFBwDwBe0FBgYHAPAFwQXtBQcABwbwBQgGBwAHBu8F8AUHAAcG8QXvBQcABwYJBvEFBwAJBvIF8QUHAAkGCgbyBQcACgbzBfIFBwAKBgsG8wUHAAsG9AXzBQcACwYMBvQFBwAMBvUF9AUHAAwGDQb1BQcADQb2BfUFBwANBg4G9gUHAPYFDwb3BQcA9gUOBg8GBwD3BRAG+AUHAPcFDwYQBgcA+AURBvkFBwD4BRAGEQYHAPkFEgb6BQcA+QURBhIGBwD6BRMG+wUHAPoFEgYTBgcA/AUTBhQGBwD8BfsFEwYHAP0FFAYVBgcA/QX8BRQGBwD+BRUGFgYHAP4F/QUVBgcA/wUWBhcGBwD/Bf4FFgYHAAAGFwYYBgcAAAb/BRcGBwABBhgGGQYHAAEGAAYYBgcAAgYZBhoGBwACBgEGGQYHABsGAgYaBgcAGwYDBgIGBwAcBgMGGwYHABwGBAYDBgcAHQYEBhwGBwAdBgUGBAYHAB4GBQYdBgcAHgYGBgUGBwAIBgYGHgYHAAgG8AUGBgcAHwYHBggGBwAfBiAGBwYHACAGCQYHBgcAIAYhBgkGBwAhBgoGCQYHACEGIgYKBgcAIgYLBgoGBwAiBiMGCwYHACMGDAYLBgcAIwYkBgwGBwAkBg0GDAYHACQGJQYNBgcAJQYOBg0GBwAlBiYGDgYHAA4GJwYPBgcADgYmBicGBwAPBigGEAYHAA8GJwYoBgcAEAYpBhEGBwAQBigGKQYHABEGKgYSBgcAEQYpBioGBwASBisGEwYHABIGKgYrBgcAEwYsBhQGBwATBisGLAYHABQGLQYVBgcAFAYsBi0GBwAVBi4GFgYHABUGLQYuBgcAFgYvBhcGBwAWBi4GLwYHABcGMAYYBgcAFwYvBjAGBwAYBjEGGQYHABgGMAYxBgcAGQYyBhoGBwAZBjEGMgYHADIGGwYaBgcAMgYzBhsGBwAzBhwGGwYHADMGNAYcBgcANAYdBhwGBwA0BjUGHQYHADUGHgYdBgcANQY2Bh4GBwA2BggGHgYHADYGHwYIBgcANwY4BjkGBwA3BjoGOAYHADsGOgY3BgcAOwY8BjoGBwA9BjwGOwYHAD0GPgY8BgcAPwY+Bj0GBwA/BkAGPgYHAEEGQAY/BgcAQQZCBkAGBwBDBkIGQQYHAEMGRAZCBgcARQZEBkMGBwBFBkYGRAYHAEcGRQZIBgcARwZGBkUGBwBJBkgGSgYHAEkGRwZIBgcASwZKBkwGBwBLBkkGSgYHAE0GTAZOBgcATQZLBkwGBwBPBk4GUAYHAE8GTQZOBgcAUQZQBlIGBwBRBk8GUAYHAFMGUgZUBgcAUwZRBlIGBwBVBlQGVgYHAFUGUwZUBgcAVwZWBlgGBwBXBlUGVgYHAFkGWAZaBgcAWQZXBlgGBwBbBloGXAYHAFsGWQZaBgcAXQZcBl4GBwBdBlsGXAYHAF8GXQZeBgcAXwZgBl0GBwBhBmAGXwYHAGEGYgZgBgcAYwZiBmEGBwBjBmQGYgYHAGUGZAZjBgcAZQZmBmQGBwA5BmYGZQYHADkGOAZmBgcAZwY3BjkGBwBnBmgGNwYHAGkGNwZoBgcAaQY7BjcGBwBqBjsGaQYHAGoGPQY7BgcAawY9BmoGBwBrBj8GPQYHAGwGPwZrBgcAbAZBBj8GBwBtBkEGbAYHAG0GQwZBBgcAbgZDBm0GBwBuBkUGQwYHAEgGbgZvBgcASAZFBm4GBwBKBm8GcAYHAEoGSAZvBgcATAZwBnEGBwBMBkoGcAYHAE4GcQZyBgcATgZMBnEGBwBQBnIGcwYHAFAGTgZyBgcAUAZ0BlIGBwBQBnMGdAYHAFIGdQZUBgcAUgZ0BnUGBwBUBnYGVgYHAFQGdQZ2BgcAVgZ3BlgGBwBWBnYGdwYHAFgGeAZaBgcAWAZ3BngGBwBaBnkGXAYHAFoGeAZ5BgcAXAZ6Bl4GBwBcBnkGegYHAHoGXwZeBgcAegZ7Bl8GBwB7BmEGXwYHAHsGfAZhBgcAfAZjBmEGBwB8Bn0GYwYHAH0GZQZjBgcAfQZ+BmUGBwB+BjkGZQYHAH4GZwY5BgcAfwZnBoAGBwB/BmgGZwYHAIEGaAZ/BgcAgQZpBmgGBwCCBmkGgQYHAIIGagZpBgcAgwZqBoIGBwCDBmsGagYHAIQGawaDBgcAhAZsBmsGBwCFBmwGhAYHAIUGbQZsBgcAhgZtBoUGBwCGBm4GbQYHAG8GhgaHBgcAbwZuBoYGBwBwBocGiAYHAHAGbwaHBgcAcQaIBokGBwBxBnAGiAYHAHIGiQaKBgcAcgZxBokGBwBzBooGiwYHAHMGcgaKBgcAdAaLBowGBwB0BnMGiwYHAHUGjAaNBgcAdQZ0BowGBwB2Bo0GjgYHAHYGdQaNBgcAdwaOBo8GBwB3BnYGjgYHAHgGjwaQBgcAeAZ3Bo8GBwB5BpAGkQYHAHkGeAaQBgcAegaRBpIGBwB6BnkGkQYHAJMGegaSBgcAkwZ7BnoGBwCUBnsGkwYHAJQGfAZ7BgcAlQZ8BpQGBwCVBn0GfAYHAJYGfQaVBgcAlgZ+Bn0GBwCABn4GlgYHAIAGZwZ+BgcAlwaABpgGBwCXBn8GgAYHAJcGgQZ/BgcAlwaZBoEGBwCZBoIGgQYHAJkGmgaCBgcAmgaDBoIGBwCaBpsGgwYHAJsGhAaDBgcAmwacBoQGBwCcBoUGhAYHAJwGnQaFBgcAnQaGBoUGBwCdBp4GhgYHAIYGnwaHBgcAhgaeBp8GBwCHBqAGiAYHAIcGnwagBgcAiAahBokGBwCIBqAGoQYHAIkGogaKBgcAiQahBqIGBwCKBqMGiwYHAIoGogajBgcAjAajBqQGBwCMBosGowYHAI0GpAalBgcAjQaMBqQGBwCOBqUGpgYHAI4GjQalBgcAjwamBqcGBwCPBo4GpgYHAJAGpwaoBgcAkAaPBqcGBwCRBqgGqQYHAJEGkAaoBgcAkgapBqoGBwCSBpEGqQYHAKsGkgaqBgcAqwaTBpIGBwCsBpMGqwYHAKwGlAaTBgcArQaUBqwGBwCtBpUGlAYHAK4GlQatBgcArgaWBpUGBwCYBpYGrgYHAJgGgAaWBgcArwaYBrAGBwCvBpcGmAYHALEGlwavBgcAsQaZBpcGBwCyBpkGsQYHALIGmgaZBgcAswaaBrIGBwCzBpsGmgYHALQGmwazBgcAtAacBpsGBwC1BpwGtAYHALUGnQacBgcAtgadBrUGBwC2Bp4GnQYHAJ8Gtga3BgcAnwaeBrYGBwCgBrcGuAYHAKAGnwa3BgcAoQa4BrkGBwChBqAGuAYHAKIGuQa6BgcAogahBrkGBwCjBroGuwYHAKMGoga6BgcApAa7BrwGBwCkBqMGuwYHAKUGvAa9BgcApQakBrwGBwCmBr0GvgYHAKYGpQa9BgcApwa+Br8GBwCnBqYGvgYHAKgGvwbABgcAqAanBr8GBwCpBsAGwQYHAKkGqAbABgcAqgbBBsIGBwCqBqkGwQYHAMMGqgbCBgcAwwarBqoGBwDEBqsGwwYHAMQGrAarBgcAxQasBsQGBwDFBq0GrAYHAMYGrQbFBgcAxgauBq0GBwCwBq4GxgYHALAGmAauBgcAxwavBrAGBwDHBsgGrwYHAMkGrwbIBgcAyQaxBq8GBwDKBrEGyQYHAMoGsgaxBgcAywayBsoGBwDLBrMGsgYHAMwGswbLBgcAzAa0BrMGBwDNBrQGzAYHAM0GtQa0BgcAzga1Bs0GBwDOBrYGtQYHALcGzgbPBgcAtwa2Bs4GBwC4Bs8G0AYHALgGtwbPBgcAuQbQBtEGBwC5BrgG0AYHALoG0QbSBgcAuga5BtEGBwC7BtIG0wYHALsGugbSBgcAuwbUBrwGBwC7BtMG1AYHALwG1Qa9BgcAvAbUBtUGBwC9BtYGvgYHAL0G1QbWBgcAvgbXBr8GBwC+BtYG1wYHAL8G2AbABgcAvwbXBtgGBwDABtkGwQYHAMAG2AbZBgcAwQbaBsIGBwDBBtkG2gYHANoGwwbCBgcA2gbbBsMGBwDbBsQGwwYHANsG3AbEBgcA3AbFBsQGBwDcBt0GxQYHAN0GxgbFBgcA3QbeBsYGBwDeBrAGxgYHAN4GxwawBgcAKwbfBiwGBwArBuAG3wYHACoG4AYrBgcAKgbhBuAGBwApBuEGKgYHACkG4gbhBgcAKAbiBikGBwAoBuMG4gYHACcG4wYoBgcAJwbkBuMGBwAmBuQGJwYHACYG5QbkBgcAJQblBiYGBwAlBuYG5QYHACQG5gYlBgcAJAbnBuYGBwAjBucGJAYHACMG6AbnBgcAIgboBiMGBwAiBukG6AYHACEG6QYiBgcAIQbqBukGBwAgBuoGIQYHACAG6wbqBgcAHwbrBiAGBwAfBuwG6wYHADYG7AYfBgcANgbtBuwGBwA1Bu0GNgYHADUG7gbtBgcANAbuBjUGBwA0Bu8G7gYHADMG7wY0BgcAMwbwBu8GBwAyBvAGMwYHADIG8QbwBgcAMQbxBjIGBwAxBvIG8QYHADAG8gYxBgcAMAbzBvIGBwAvBvMGMAYHAC8G9AbzBgcALgb0Bi8GBwAuBvUG9AYHAC0G9QYuBgcALQb2BvUGBwAsBvYGLQYHACwG3wb2BgcAUQb3Bk8GBwBRBvgG9wYHAPgG4Ab3BgcA+AbfBuAGBwBTBvgGUQYHAFMG+Qb4BgcA+QbfBvgGBwD5BvYG3wYHAFUG+QZTBgcAVQb6BvkGBwD6BvYG+QYHAPoG9Qb2BgcAVwb6BlUGBwBXBvsG+gYHAPsG9Qb6BgcA+wb0BvUGBwBZBvsGVwYHAFkG/Ab7BgcA/Ab0BvsGBwD8BvMG9AYHAFsG/AZZBgcAWwb9BvwGBwD9BvMG/AYHAP0G8gbzBgcAXQb9BlsGBwBdBv4G/QYHAP4G8gb9BgcA/gbxBvIGBwBgBv4GXQYHAGAG/wb+BgcA/wbxBv4GBwD/BvAG8QYHAGIG/wZgBgcAYgYAB/8GBwAAB/AG/wYHAAAH7wbwBgcAZAYAB2IGBwBkBgEHAAcHAAEH7wYABwcAAQfuBu8GBwBmBgEHZAYHAGYGAgcBBwcAAgfuBgEHBwACB+0G7gYHADgGAgdmBgcAOAYDBwIHBwADB+0GAgcHAAMH7AbtBgcAOgYDBzgGBwA6BgQHAwcHAAQH7AYDBwcABAfrBuwGBwA8BgQHOgYHADwGBQcEBwcABQfrBgQHBwAFB+oG6wYHAD4GBQc8BgcAPgYGBwUHBwAGB+oGBQcHAAYH6QbqBgcAQAYGBz4GBwBABgcHBgcHAAcH6QYGBwcABwfoBukGBwBCBgcHQAYHAEIGCAcHBwcACAfoBgcHBwAIB+cG6AYHAEQGCAdCBgcARAYJBwgHBwAJB+cGCAcHAAkH5gbnBgcARgYJB0QGBwBGBgoHCQcHAAoH5gYJBwcACgflBuYGBwBHBgoHRgYHAEcGCwcKBwcACwflBgoHBwALB+QG5QYHAEkGCwdHBgcASQYMBwsHBwAMB+QGCwcHAAwH4wbkBgcASwYMB0kGBwBLBg0HDAcHAA0H4wYMBwcADQfiBuMGBwBNBg0HSwYHAE0GDgcNBwcADgfiBg0HBwAOB+EG4gYHAE8GDgdNBgcATwb3Bg4HBwD3BuEGDgcHAPcG4AbhBgcADwcQBxEHBwAPBxIHEAcHABIHEwcQBwcAEgcUBxMHBwAUBxUHEwcHABQHFgcVBwcAFgcXBxUHBwAWBxgHFwcHABgHGQcXBwcAGAcaBxkHBwAaBxsHGQcHABoHHAcbBwcAGwcdBx4HBwAbBxwHHQcHAB4HHwcgBwcAHgcdBx8HBwAgByEHIgcHACAHHwchBwcAIgcjByQHBwAiByEHIwcHACQHJQcmBwcAJAcjByUHBwAmBycHKAcHACYHJQcnBwcAKAcpByoHBwAoBycHKQcHACoHKwcsBwcAKgcpBysHBwAsBy0HLgcHACwHKwctBwcALgcvBzAHBwAuBy0HLwcHADAHMQcyBwcAMAcvBzEHBwAyBzMHNAcHADIHMQczBwcAMwc1BzQHBwAzBzYHNQcHADYHNwc1BwcANgc4BzcHBwA4BzkHNwcHADgHOgc5BwcAOgc7BzkHBwA6BzwHOwcHADwHPQc7BwcAPAc+Bz0HBwA+BxEHPQcHAD4HDwcRBwcAPwc+B0AHBwA/Bw8HPgcHAD8HEgcPBwcAPwdBBxIHBwBBBxQHEgcHAEEHQgcUBwcAQgcWBxQHBwBCB0MHFgcHAEMHGAcWBwcAQwdEBxgHBwBEBxoHGAcHAEQHRQcaBwcARQccBxoHBwBFB0YHHAcHABwHRwcdBwcAHAdGB0cHBwAdB0gHHwcHAB0HRwdIBwcAHwdJByEHBwAfB0gHSQcHACEHSgcjBwcAIQdJB0oHBwAjB0sHJQcHACMHSgdLBwcAJwdLB0wHBwAnByUHSwcHACkHTAdNBwcAKQcnB0wHBwArB00HTgcHACsHKQdNBwcALQdOB08HBwAtBysHTgcHAC8HTwdQBwcALwctB08HBwAxB1AHUQcHADEHLwdQBwcAMwdRB1IHBwAzBzEHUQcHAFMHMwdSBwcAUwc2BzMHBwBUBzYHUwcHAFQHOAc2BwcAVQc4B1QHBwBVBzoHOAcHAFYHOgdVBwcAVgc8BzoHBwBABzwHVgcHAEAHPgc8BwcAVwdAB1gHBwBXBz8HQAcHAFkHPwdXBwcAWQdBBz8HBwBaB0EHWQcHAFoHQgdBBwcAWwdCB1oHBwBbB0MHQgcHAFwHQwdbBwcAXAdEB0MHBwBdB0QHXAcHAF0HRQdEBwcAXgdFB10HBwBeB0YHRQcHAEcHXgdfBwcARwdGB14HBwBIB18HYAcHAEgHRwdfBwcASQdgB2EHBwBJB0gHYAcHAEoHYQdiBwcASgdJB2EHBwBLB2IHYwcHAEsHSgdiBwcATAdjB2QHBwBMB0sHYwcHAE0HZAdlBwcATQdMB2QHBwBOB2UHZgcHAE4HTQdlBwcATwdmB2cHBwBPB04HZgcHAFAHZwdoBwcAUAdPB2cHBwBRB2gHaQcHAFEHUAdoBwcAUgdpB2oHBwBSB1EHaQcHAGsHUgdqBwcAawdTB1IHBwBsB1MHawcHAGwHVAdTBwcAbQdUB2wHBwBtB1UHVAcHAG4HVQdtBwcAbgdWB1UHBwBYB1YHbgcHAFgHQAdWBwcAbwdYB3AHBwBvB1cHWAcHAG8HWQdXBwcAbwdxB1kHBwBxB1oHWQcHAHEHcgdaBwcAcgdbB1oHBwByB3MHWwcHAHMHXAdbBwcAcwd0B1wHBwB0B10HXAcHAHQHdQddBwcAdQdeB10HBwB1B3YHXgcHAF4HdwdfBwcAXgd2B3cHBwBfB3gHYAcHAF8Hdwd4BwcAYAd5B2EHBwBgB3gHeQcHAGEHegdiBwcAYQd5B3oHBwBiB3sHYwcHAGIHegd7BwcAZAd7B3wHBwBkB2MHewcHAGUHfAd9BwcAZQdkB3wHBwBmB30HfgcHAGYHZQd9BwcAZwd+B38HBwBnB2YHfgcHAGgHfweABwcAaAdnB38HBwBpB4AHgQcHAGkHaAeABwcAageBB4IHBwBqB2kHgQcHAIMHageCBwcAgwdrB2oHBwCEB2sHgwcHAIQHbAdrBwcAhQdsB4QHBwCFB20HbAcHAIYHbQeFBwcAhgduB20HBwBwB24HhgcHAHAHWAduBwcAhwdwB4gHBwCHB28HcAcHAIkHbweHBwcAiQdxB28HBwCKB3EHiQcHAIoHcgdxBwcAiwdyB4oHBwCLB3MHcgcHAIwHcweLBwcAjAd0B3MHBwCNB3QHjAcHAI0HdQd0BwcAjgd1B40HBwCOB3YHdQcHAHcHjgePBwcAdwd2B44HBwB4B48HkAcHAHgHdwePBwcAeQeQB5EHBwB5B3gHkAcHAHoHkQeSBwcAegd5B5EHBwB7B5IHkwcHAHsHegeSBwcAfAeTB5QHBwB8B3sHkwcHAH0HlAeVBwcAfQd8B5QHBwB+B5UHlgcHAH4HfQeVBwcAfweWB5cHBwB/B34HlgcHAIAHlweYBwcAgAd/B5cHBwCBB5gHmQcHAIEHgAeYBwcAggeZB5oHBwCCB4EHmQcHAJsHggeaBwcAmweDB4IHBwCcB4MHmwcHAJwHhAeDBwcAnQeEB5wHBwCdB4UHhAcHAJ4HhQedBwcAngeGB4UHBwCIB4YHngcHAIgHcAeGBwcAnweHB4gHBwCfB6AHhwcHAKEHhwegBwcAoQeJB4cHBwCiB4kHoQcHAKIHigeJBwcAoweKB6IHBwCjB4sHigcHAKQHiwejBwcApAeMB4sHBwClB4wHpAcHAKUHjQeMBwcApgeNB6UHBwCmB44HjQcHAI8HpgenBwcAjweOB6YHBwCQB6cHqAcHAJAHjwenBwcAkQeoB6kHBwCRB5AHqAcHAJIHqQeqBwcAkgeRB6kHBwCTB6oHqwcHAJMHkgeqBwcAkwesB5QHBwCTB6sHrAcHAJQHrQeVBwcAlAesB60HBwCVB64HlgcHAJUHrQeuBwcAlgevB5cHBwCWB64HrwcHAJcHsAeYBwcAlwevB7AHBwCYB7EHmQcHAJgHsAexBwcAmQeyB5oHBwCZB7EHsgcHALIHmweaBwcAsgezB5sHBwCzB5wHmwcHALMHtAecBwcAtAedB5wHBwC0B7UHnQcHALUHngedBwcAtQe2B54HBwC2B4gHngcHALYHnweIBwcAwgWfB8AFBwDCBaAHnwcHAMMFoAfCBQcAwwWhB6AHBwDFBaEHwwUHAMUFogehBwcAxwWiB8UFBwDHBaMHogcHAMkFowfHBQcAyQWkB6MHBwDLBaQHyQUHAMsFpQekBwcAzQWlB8sFBwDNBaYHpQcHAKcHzQXQBQcApwemB80FBwCoB9AF0gUHAKgHpwfQBQcAqQfSBdQFBwCpB6gH0gUHAKoH1AXWBQcAqgepB9QFBwCrB9YF2AUHAKsHqgfWBQcArAfYBdkFBwCsB6sH2AUHAK0H2QXbBQcArQesB9kFBwCuB9sF3QUHAK4HrQfbBQcArwfdBd8FBwCvB64H3QUHALAH3wXhBQcAsAevB98FBwCxB+EF4wUHALEHsAfhBQcAsgfjBeUFBwCyB7EH4wUHAOgFsgflBQcA6AWzB7IHBwDqBbMH6AUHAOoFtAezBwcA7AW0B+oFBwDsBbUHtAcHAO4FtQfsBQcA7gW2B7UHBwDABbYH7gUHAMAFnwe2BwcAtwfHBrgHBwC3B8gGxwYHALkHyAa3BwcAuQfJBsgGBwC6B8kGuQcHALoHygbJBgcAuwfKBroHBwC7B8sGygYHALwHywa7BwcAvAfMBssGBwC9B8wGvAcHAL0HzQbMBgcAvgfNBr0HBwC+B84GzQYHAM8Gvge/BwcAzwbOBr4HBwDQBr8HwAcHANAGzwa/BwcA0QbAB8EHBwDRBtAGwAcHANIGwQfCBwcA0gbRBsEHBwDTBsIHwwcHANMG0gbCBwcA1AbDB8QHBwDUBtMGwwcHANUGxAfFBwcA1QbUBsQHBwDWBsUHxgcHANYG1QbFBwcA1wbGB8cHBwDXBtYGxgcHANgGxwfIBwcA2AbXBscHBwDZBsgHyQcHANkG2AbIBwcA2gbJB8oHBwDaBtkGyQcHAMsH2gbKBwcAywfbBtoGBwDMB9sGywcHAMwH3AbbBgcAzQfcBswHBwDNB90G3AYHAM4H3QbNBwcAzgfeBt0GBwC4B94GzgcHALgHxwbeBgcAzwe3B7gHBwDPB9AHtwcHANEHtwfQBwcA0Qe5B7cHBwDSB7kH0QcHANIHuge5BwcA0we6B9IHBwDTB7sHugcHANQHuwfTBwcA1Ae8B7sHBwDVB7wH1AcHANUHvQe8BwcA1ge9B9UHBwDWB74HvQcHAL8H1gfXBwcAvwe+B9YHBwDAB9cH2AcHAMAHvwfXBwcAwQfYB9kHBwDBB8AH2AcHAMIH2QfaBwcAwgfBB9kHBwDDB9oH2wcHAMMHwgfaBwcAwwfcB8QHBwDDB9sH3AcHAMQH3QfFBwcAxAfcB90HBwDFB94HxgcHAMUH3QfeBwcAxgffB8cHBwDGB94H3wcHAMcH4AfIBwcAxwffB+AHBwDIB+EHyQcHAMgH4AfhBwcAyQfiB8oHBwDJB+EH4gcHAOIHywfKBwcA4gfjB8sHBwDjB8wHywcHAOMH5AfMBwcA5AfNB8wHBwDkB+UHzQcHAOUHzgfNBwcA5QfmB84HBwDmB7gHzgcHAOYHzwe4BwcA5wfPB+gHBwDnB9AHzwcHAOkH0AfnBwcA6QfRB9AHBwDqB9EH6QcHAOoH0gfRBwcA6wfSB+oHBwDrB9MH0gcHAOwH0wfrBwcA7AfUB9MHBwDtB9QH7AcHAO0H1QfUBwcA7gfVB+0HBwDuB9YH1QcHANcH7gfvBwcA1wfWB+4HBwDYB+8H8AcHANgH1wfvBwcA2QfwB/EHBwDZB9gH8AcHANoH8QfyBwcA2gfZB/EHBwDbB/IH8wcHANsH2gfyBwcA3AfzB/QHBwDcB9sH8wcHAN0H9Af1BwcA3QfcB/QHBwDeB/UH9gcHAN4H3Qf1BwcA3wf2B/cHBwDfB94H9gcHAOAH9wf4BwcA4AffB/cHBwDhB/gH+QcHAOEH4Af4BwcA4gf5B/oHBwDiB+EH+QcHAPsH4gf6BwcA+wfjB+IHBwD8B+MH+wcHAPwH5AfjBwcA/QfkB/wHBwD9B+UH5AcHAP4H5Qf9BwcA/gfmB+UHBwDoB+YH/gcHAOgHzwfmBwcA/wcACAEIBwD/BwIIAAgHAAMIAgj/BwcAAwgECAIIBwABCAUIBggHAAEIAAgFCAcABwgICAkIBwAHCAoICAgHAAsICggHCAcACwgMCAoIBwAJCA0IDggHAAkICAgNCAcADwgMCAsIBwAPCBAIDAgHAA4IEQgSCAcADggNCBEIBwATCBAIDwgHABMIFAgQCAcAEggVCBYIBwASCBEIFQgHABcIFAgTCAcAFwgYCBQIBwAWCBkIGggHABYIFQgZCAcAGggECAMIBwAaCBkIBAgHAAYIGAgXCAcABggFCBgIBwAbCAAIAggHABsIHAgACAcABAgbCAIIBwAECB0IGwgHABwIBQgACAcAHAgeCAUIBwAKCB8ICAgHAAoIIAgfCAcAIQgKCAwIBwAhCCAICggHAAgIIggNCAcACAgfCCIIBwAjCAwIEAgHACMIIQgMCAcADQgkCBEIBwANCCIIJAgHACUIEAgUCAcAJQgjCBAIBwARCCYIFQgHABEIJAgmCAcAJwgUCBgIBwAnCCUIFAgHABUIKAgZCAcAFQgmCCgIBwAZCB0IBAgHABkIKAgdCAcAHggYCAUIBwAeCCcIGAgHABsIKQgcCAcAGwgqCCkIBwAdCCoIGwgHAB0IKwgqCAcAHAgsCB4IBwAcCCkILAgHACAILQgfCAcAIAguCC0IBwAhCC4IIAgHACEILwguCAcAHwgwCCIIBwAfCC0IMAgHACMILwghCAcAIwgxCC8IBwAiCDIIJAgHACIIMAgyCAcAJQgxCCMIBwAlCDMIMQgHACQINAgmCAcAJAgyCDQIBwAnCDMIJQgHACcINQgzCAcAJgg2CCgIBwAmCDQINggHACgIKwgdCAcAKAg2CCsIBwAeCDUIJwgHAB4ILAg1CAcAKgg3CCkIBwAqCDgINwgHACsIOAgqCAcAKwg5CDgIBwApCDoILAgHACkINwg6CAcALgg7CC0IBwAuCDwIOwgHAC8IPAguCAcALwg9CDwIBwAtCD4IMAgHAC0IOwg+CAcAMQg9CC8IBwAxCD8IPQgHADAIQAgyCAcAMAg+CEAIBwAzCD8IMQgHADMIQQg/CAcAMghCCDQIBwAyCEAIQggHADUIQQgzCAcANQhDCEEIBwA0CEQINggHADQIQghECAcANgg5CCsIBwA2CEQIOQgHACwIQwg1CAcALAg6CEMIBwA4CEUINwgHADgIRghFCAcAOQhGCDgIBwA5CEcIRggHADcISAg6CAcANwhFCEgIBwA8CEkIOwgHADwISghJCAcAPQhKCDwIBwA9CEsISggHADsITAg+CAcAOwhJCEwIBwA/CEsIPQgHAD8ITQhLCAcAPghOCEAIBwA+CEwITggHAEEITQg/CAcAQQhPCE0IBwBACFAIQggHAEAITghQCAcAQwhPCEEIBwBDCFEITwgHAEIIUghECAcAQghQCFIIBwBECEcIOQgHAEQIUghHCAcAOghRCEMIBwA6CEgIUQgHAEYIUwhFCAcARghUCFMIBwBHCFQIRggHAEcIVQhUCAcARQhWCEgIBwBFCFMIVggHAEoIVwhJCAcASghYCFcIBwBLCFgISggHAEsIWQhYCAcASQhaCEwIBwBJCFcIWggHAE0IWQhLCAcATQhbCFkIBwBMCFwITggHAEwIWghcCAcATwhbCE0IBwBPCF0IWwgHAE4IXghQCAcATghcCF4IBwBRCF0ITwgHAFEIXwhdCAcAUAhgCFIIBwBQCF4IYAgHAFIIVQhHCAcAUghgCFUIBwBICF8IUQgHAEgIVghfCAcAVAhhCFMIBwBUCGIIYQgHAFUIYghUCAcAVQhjCGIIBwBTCGQIVggHAFMIYQhkCAcAWAhlCFcIBwBYCGYIZQgHAFkIZghYCAcAWQhnCGYIBwBXCGgIWggHAFcIZQhoCAcAWwhnCFkIBwBbCGkIZwgHAFoIaghcCAcAWghoCGoIBwBdCGkIWwgHAF0IawhpCAcAXAhsCF4IBwBcCGoIbAgHAF8IawhdCAcAXwhtCGsIBwBeCG4IYAgHAF4IbAhuCAcAYAhjCFUIBwBgCG4IYwgHAFYIbQhfCAcAVghkCG0IBwBiCG8IYQgHAGIIcAhvCAcAYwhwCGIIBwBjCHEIcAgHAGEIcghkCAcAYQhvCHIIBwBmCHMIZQgHAGYIdAhzCAcAZwh0CGYIBwBnCHUIdAgHAGUIdghoCAcAZQhzCHYIBwBpCHUIZwgHAGkIdwh1CAcAaAh4CGoIBwBoCHYIeAgHAGsIdwhpCAcAawh5CHcIBwBqCHoIbAgHAGoIeAh6CAcAbQh5CGsIBwBtCHsIeQgHAGwIfAhuCAcAbAh6CHwIBwBuCHEIYwgHAG4IfAhxCAcAZAh7CG0IBwBkCHIIewgHAHAIfQhvCAcAcAh+CH0IBwBxCH4IcAgHAHEIfwh+CAcAbwiACHIIBwBvCH0IgAgHAHQIgQhzCAcAdAiCCIEIBwB1CIIIdAgHAHUIgwiCCAcAcwiECHYIBwBzCIEIhAgHAHcIgwh1CAcAdwiFCIMIBwB2CIYIeAgHAHYIhAiGCAcAeQiFCHcIBwB5CIcIhQgHAHgIiAh6CAcAeAiGCIgIBwB7CIcIeQgHAHsIiQiHCAcAegiKCHwIBwB6CIgIiggHAHwIfwhxCAcAfAiKCH8IBwByCIkIewgHAHIIgAiJCAcAfgiLCH0IBwB+CIwIiwgHAH8IjAh+CAcAfwiNCIwIBwB9CI4IgAgHAH0IiwiOCAcAggiPCIEIBwCCCJAIjwgHAIMIkAiCCAcAgwiRCJAIBwCBCJIIhAgHAIEIjwiSCAcAhQiRCIMIBwCFCJMIkQgHAIQIlAiGCAcAhAiSCJQIBwCHCJMIhQgHAIcIlQiTCAcAhgiWCIgIBwCGCJQIlggHAIkIlQiHCAcAiQiXCJUIBwCICJgIiggHAIgIlgiYCAcAigiNCH8IBwCKCJgIjQgHAIAIlwiJCAcAgAiOCJcIBwCMCJkIiwgHAIwImgiZCAcAjQiaCIwIBwCNCJsImggHAIsInAiOCAcAiwiZCJwIBwCQCJ0IjwgHAJAIngidCAcAkQieCJAIBwCRCJ8InggHAI8IoAiSCAcAjwidCKAIBwCTCJ8IkQgHAJMIoQifCAcAkgiiCJQIBwCSCKAIoggHAJUIoQiTCAcAlQijCKEIBwCUCKQIlggHAJQIogikCAcAlwijCJUIBwCXCKUIowgHAJYIpgiYCAcAlgikCKYIBwCYCJsIjQgHAJgIpgibCAcAjgilCJcIBwCOCJwIpQgHAJoIpwiZCAcAmgioCKcIBwCbCKgImggHAJsIqQioCAcAmQiqCJwIBwCZCKcIqggHAJ4IqwidCAcAngisCKsIBwCfCKwInggHAJ8IrQisCAcAnQiuCKAIBwCdCKsIrggHAKEIrQifCAcAoQivCK0IBwCgCLAIoggHAKAIrgiwCAcAowivCKEIBwCjCLEIrwgHAKIIsgikCAcAogiwCLIIBwClCLEIowgHAKUIswixCAcApAi0CKYIBwCkCLIItAgHAKYIqQibCAcApgi0CKkIBwCcCLMIpQgHAJwIqgizCAcAqAi1CKcIBwCoCLYItQgHAKkItgioCAcAqQi3CLYIBwCnCLgIqggHAKcItQi4CAcArAi5CKsIBwCsCLoIuQgHAK0IugisCAcArQi7CLoIBwCrCLwIrggHAKsIuQi8CAcArwi7CK0IBwCvCL0IuwgHAK4IvgiwCAcArgi8CL4IBwCxCL0IrwgHALEIvwi9CAcAsAjACLIIBwCwCL4IwAgHALMIvwixCAcAswjBCL8IBwCyCMIItAgHALIIwAjCCAcAtAi3CKkIBwC0CMIItwgHAKoIwQizCAcAqgi4CMEIBwC2CMMItQgHALYIxAjDCAcAtwjECLYIBwC3CMUIxAgHALUIxgi4CAcAtQjDCMYIBwC6CMcIuQgHALoIyAjHCAcAuwjICLoIBwC7CMkIyAgHALkIygi8CAcAuQjHCMoIBwC9CMkIuwgHAL0IywjJCAcAvAjMCL4IBwC8CMoIzAgHAL8Iywi9CAcAvwjNCMsIBwC+CM4IwAgHAL4IzAjOCAcAwQjNCL8IBwDBCM8IzQgHAMAI0AjCCAcAwAjOCNAIBwDCCMUItwgHAMII0AjFCAcAuAjPCMEIBwC4CMYIzwgHAMQI0QjDCAcAxAjSCNEIBwABCNII/wcHAAEI0QjSCAcAxQjSCMQIBwDFCNMI0ggHAP8H0wgDCAcA/wfSCNMIBwDDCNQIxggHAMMI0QjUCAcABgjRCAEIBwAGCNQI0QgHAMgI1QjHCAcAyAjWCNUIBwDXCNYI2AgHANcI1QjWCAcAyQjWCMgIBwDJCNkI1ggHANgI2QjaCAcA2AjWCNkIBwDHCNsIyggHAMcI1QjbCAcA3AjVCNcIBwDcCNsI1QgHAMsI2QjJCAcAywjdCNkIBwDaCN0IDwgHANoI2QjdCAcAygjeCMwIBwDKCNsI3ggHABII2wjcCAcAEgjeCNsIBwDNCN0IywgHAM0I3wjdCAcADwjfCBMIBwAPCN0I3wgHAMwI4AjOCAcAzAjeCOAIBwAWCN4IEggHABYI4AjeCAcAzwjfCM0IBwDPCOEI3wgHABMI4QgXCAcAEwjfCOEIBwDOCOII0AgHAM4I4AjiCAcAGgjgCBYIBwAaCOII4AgHANAI0wjFCAcA0AjiCNMIBwADCOIIGggHAAMI0wjiCAcAxgjhCM8IBwDGCNQI4QgHABcI1AgGCAcAFwjhCNQIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ0wQdUDAAByYXY0LXNoaWVsZHMA4AFWDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ8wQZIDAAByYXY0LXRpcmUAwAE2DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kPSg9LD0wPTQ9OD08PUA9RD1IPUw9UD1UPVg9XD1gPWQ9aD1sPXA9dD14PXw9gD2EPYg9jD2QPZQ9mD2cPaA9pD2oPaw9sD20Pbg9vD3APcQ9yD3MPdA91D3YPdw94D3kPeg97D3wPfQ9+D38PgA+BD4IPgw+ED4UPhg+HD4gPiQ+KD4sPjA+ND44Pjw+QD5EPkg+TD5QPlQ+WD5cPmA+ZD5oPmw+cD50Png+fD6APoQ+iD6MPpA+lD6YPpw+oD6kPqg+rD6wPrQ+uD68PsA+xD7IPsw+0D7UPtg+3D7gPuQ+6D7sPvA+9D74Pvw/AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MP1A/VD9YP1w/YD9kP2g/bD9wP3Q/eD98P4A/hD+IP4w/kD+UP5g/nD+gP6Q/qD+sP7A/tD+4P7w/wD/EP8g/zD/QP9Q/2D/cP+A/5D/oP+w/8D/0P/g//DwAQARACEAMQBBAFEAYQBxAIEAkQChALEAwQDRAOEA8QEBAREBIQExAUEBUQFhAXEBgQGRAaEBsQHBAdEB4QHxAgECEQIhAjECQQJRAmECcQKBApECoQKxAsEC0QLhAvEDAQMRAyEDMQNBA1EDYQNxA4EDkQOhA7EDwQPRA+ED8QQBBBEEIQQxBEEEUQRhBHEEgQSRBKEEsQTBBNEE4QTxBQEFEQUhBTEFQQVRBWEFcQWBBZEFoQWxBcEF0QXhBfEGAQYRBiEGMQZBBlEGYQZxBoEGkQahBrEGwQbRBuEG8QcBBxEHIQcxB0EHUQdhB3EHgQeRB6EHsQfBB9EH4QfxCAEIEQghCDEIQQhRCGEIcQiBCJEIoQixCMEI0QjhCPEJAQkRCSEJMQlBCVEJYQlxCYEJkQmhCbEJwQnRCeEJ8QoBChEKIQoxCkEKUQphCnEKgQqRCqEKsQrBCtEK4QrxCwELEQshCzELQQtRC2ELcQuBC5ELoQuxC8EL0QvhC/EMAQwRDCEMMQxBDFEMYQxxDIEMkQyhDLEMwQzRDOEM8Q0BDRENIQ0xDUENUQ1hDXENgQ2RDaENsQ3BDdEN4Q3xDgEOEQ4hDjEOQQ5RDmEOcQ6BDpEOoQ6xDsEO0Q7hDvEPAQ8RDyEPMQ9BD1EFBB3kMAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAPQAAgD8AAAAAAAAAAAAAAAAAAIA/AACAPQAAgD8AAAAAAACAPwAAgD0AAAAAAACAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAgD8AAAA+AACAPwAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD4AAIA/AABAPgAAgD8AAEA+AAAAAAAAQD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIA+AACAPwAAgD4AAIA/AACAPgAAAAAAAIA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgPgAAgD8AAKA+AACAPwAAoD4AAAAAAACgPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwD4AAIA/AADAPgAAgD8AAMA+AAAAAAAAwD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA+AACAPwAA4D4AAIA/AADgPgAAAAAAAOA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPwAAgD8AAAA/AACAPwAAAD8AAAAAAAAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Dz8AAIA///8PPwAAgD///w8/AAAAAP//Dz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/AACAPwAAID8AAIA/AAAgPwAAAAAAACA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwPwAAgD8AADA/AACAPwAAMD8AAAAAAAAwPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQD8AAIA/AABAPwAAgD8AAEA/AAAAAAAAQD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//08/AACAP///Tz8AAIA///9PPwAAAAD//08/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//9fPwAAgD///18/AACAP///Xz8AAAAA//9fPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcD8AAIA/AABwPwAAAAAAAIA/AACAPwAAgD8AAIA/AABwPwAAgD8AAIA/AAAAAAAAcD8AAAAAAACAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBBze0AAPYQAAABAAIABwAAAAMAAQAHAAQAAgAFAAcABAAAAAIABwAGAAUABwAHAAYABAAFAAcACAAHAAkABwAIAAYABwAHAAoACQALAAcACgAIAAkABwAMAAsADQAHAAwACgALAAcADgANAA8ABwAOAAwADQAHABAADwARAAcAEAAOAA8ABwASABEAEwAHABIAEAARAAcAFAATABUABwAUABIAEwAHABYAFQAXAAcAFgAUABUABwAYABcAGQAHABgAFgAXAAcAGgAZABsABwAaABgAGQAHABwAGwAdAAcAHAAaABsABwAeABwAHQAHAB4AHwAcAAcAIAAfAB4ABwAgACEAHwAHACIAIQAgAAcAIgAjACEABwAkACMAIgAHACQAJQAjAAcAJgAlACQABwAmACcAJQAHACgAJwAmAAcAKAApACcABwAqACkAKAAHACoAKwApAAcALAArACoABwAsAC0AKwAHAC4ALQAsAAcALgAvAC0ABwAwAC8ALgAHADAAMQAvAAcAMgAxADAABwAyADMAMQAHADQAMwAyAAcANAA1ADMABwA2ADUANAAHADYANwA1AAcAOAA3ADYABwA4ADkANwAHADoAOQA4AAcAOgA7ADkABwA8ADsAOgAHADwAPQA7AAcAPgA9ADwABwA+AD8APQAHAEAAPwA+AAcAQABBAD8ABwBCAEEAQAAHAEIAQwBBAAcARABDAEIABwBEAEUAQwAHAEYARQBEAAcARgBHAEUABwBIAEcARgAHAEgASQBHAAcASgBJAEgABwBKAEsASQAHAEwASwBKAAcATABNAEsABwBOAE0ATAAHAE4ATwBNAAcAUABOAFEABwBQAE8ATgAHAFIAUQBTAAcAUgBQAFEABwBUAFMAVQAHAFQAUgBTAAcAVgBVAFcABwBWAFQAVQAHAFgAVwBZAAcAWABWAFcABwBaAFkAWwAHAFoAWABZAAcAXABbAF0ABwBcAFoAWwAHAF4AXQBfAAcAXgBcAF0ABwBgAF8AYQAHAGAAXgBfAAcAYgBhAGMABwBiAGAAYQAHAAMAYwABAAcAAwBiAGMABwBkAAMAAAAHAGQAZQADAAcAZgAAAAQABwBmAGQAAAAHAGcABAAGAAcAZwBmAAQABwBoAAYACAAHAGgAZwAGAAcAaQAIAAoABwBpAGgACAAHAGoACgAMAAcAagBpAAoABwBrAAwADgAHAGsAagAMAAcAbAAOABAABwBsAGsADgAHAG0AEAASAAcAbQBsABAABwBuABIAFAAHAG4AbQASAAcAbwAUABYABwBvAG4AFAAHAHAAFgAYAAcAcABvABYABwBxABgAGgAHAHEAcAAYAAcAcgAaABwABwByAHEAGgAHAB8AcgAcAAcAHwBzAHIABwAhAHMAHwAHACEAdABzAAcAIwB0ACEABwAjAHUAdAAHACUAdQAjAAcAJQB2AHUABwAnAHYAJQAHACcAdwB2AAcAKQB3ACcABwApAHgAdwAHACsAeAApAAcAKwB5AHgABwAtAHkAKwAHAC0AegB5AAcALwB6AC0ABwAvAHsAegAHADEAewAvAAcAMQB8AHsABwAzAHwAMQAHADMAfQB8AAcANQB9ADMABwA1AH4AfQAHADcAfgA1AAcANwB/AH4ABwA5AH8ANwAHADkAgAB/AAcAOwCAADkABwA7AIEAgAAHAD0AgQA7AAcAPQCCAIEABwA/AIIAPQAHAD8AgwCCAAcAQQCDAD8ABwBBAIQAgwAHAEMAhABBAAcAQwCFAIQABwBFAIUAQwAHAEUAhgCFAAcARwCGAEUABwBHAIcAhgAHAEkAhwBHAAcASQCIAIcABwBLAIgASQAHAEsAiQCIAAcATQCJAEsABwBNAIoAiQAHAE8AigBNAAcATwCLAIoABwCMAE8AUAAHAIwAiwBPAAcAjQBQAFIABwCNAIwAUAAHAI4AUgBUAAcAjgCNAFIABwCPAFQAVgAHAI8AjgBUAAcAkABWAFgABwCQAI8AVgAHAJEAWABaAAcAkQCQAFgABwCSAFoAXAAHAJIAkQBaAAcAkwBcAF4ABwCTAJIAXAAHAJQAXgBgAAcAlACTAF4ABwCVAGAAYgAHAJUAlABgAAcAZQBiAAMABwBlAJUAYgAHAJYAZACXAAcAlgBlAGQABwCYAGQAZgAHAJgAlwBkAAcAmQBmAGcABwCZAJgAZgAHAJoAZwBoAAcAmgCZAGcABwCbAGgAaQAHAJsAmgBoAAcAnABpAGoABwCcAJsAaQAHAJ0AagBrAAcAnQCcAGoABwCeAGsAbAAHAJ4AnQBrAAcAnwBsAG0ABwCfAJ4AbAAHAKAAbQBuAAcAoACfAG0ABwChAG4AbwAHAKEAoABuAAcAogBvAHAABwCiAKEAbwAHAKMAcABxAAcAowCiAHAABwCkAHEAcgAHAKQAowBxAAcAcwCkAHIABwBzAKUApAAHAHQApQBzAAcAdACmAKUABwB1AKYAdAAHAHUApwCmAAcAdgCnAHUABwB2AKgApwAHAHcAqAB2AAcAdwCpAKgABwB4AKkAdwAHAHgAqgCpAAcAeQCqAHgABwB5AKsAqgAHAHoAqwB5AAcAegCsAKsABwB7AKwAegAHAHsArQCsAAcAfACtAHsABwB8AK4ArQAHAH0ArgB8AAcAfQCvAK4ABwB+AK8AfQAHAH4AsACvAAcAfwCwAH4ABwB/ALEAsAAHAH8AsgCxAAcAfwCAALIABwCAALMAsgAHAIAAgQCzAAcAgQC0ALMABwCBAIIAtAAHAIIAtQC0AAcAggCDALUABwCDALYAtQAHAIMAhAC2AAcAhAC3ALYABwCEAIUAtwAHAIUAuAC3AAcAhQCGALgABwCGALkAuAAHAIYAhwC5AAcAhwC6ALkABwCHAIgAugAHAIgAuwC6AAcAiACJALsABwCJALwAuwAHAIkAigC8AAcAigC9ALwABwCKAIsAvQAHAL0AjAC+AAcAvQCLAIwABwC+AI0AvwAHAL4AjACNAAcAvwCOAMAABwC/AI0AjgAHAMAAjwDBAAcAwACOAI8ABwDBAJAAwgAHAMEAjwCQAAcAwgCRAMMABwDCAJAAkQAHAMMAkgDEAAcAwwCRAJIABwDEAJMAxQAHAMQAkgCTAAcAxQCUAMYABwDFAJMAlAAHAMYAlQDHAAcAxgCUAJUABwDHAGUAlgAHAMcAlQBlAAcAyADEAMUABwDIAMkAxAAHAMYAyADFAAcAxgDKAMgABwDHAMoAxgAHAMcAywDKAAcAmADMAJcABwCYAM0AzAAHAJkAzQCYAAcAmQDOAM0ABwCaAM4AmQAHAJoAzwDOAAcAnQDQAJwABwCdANEA0AAHAJ4A0QCdAAcAngDSANEABwCfANIAngAHAJ8A0wDSAAcAoQDUANUABwChAKIA1AAHAKIA1gDUAAcAogCjANYABwCjANcA1gAHAKMApADXAAcApgDYANkABwCmAKcA2AAHAKcA2gDYAAcApwCoANoABwCoANsA2gAHAKgAqQDbAAcAqwDcAN0ABwCrAKwA3AAHANwArQDeAAcA3ACsAK0ABwDeAK4A3wAHAN4ArQCuAAcA4ACxAOEABwDgALAAsQAHAOEAsgDiAAcA4QCxALIABwDiALMA4wAHAOIAsgCzAAcA5AC2AOUABwDkALUAtgAHAOUAtwDmAAcA5QC2ALcABwDmALgA5wAHAOYAtwC4AAcA6AC6ALsABwDoAOkAugAHAOoAuwC8AAcA6gDoALsABwDrALwAvQAHAOsA6gC8AAcA7AC/AMAABwDsAO0AvwAHAO4AwADBAAcA7gDsAMAABwDvAMEAwgAHAO8A7gDBAAcA8ADJAMgABwDwAPEAyQAHAMoA8ADIAAcAygDyAPAABwDLAPIAygAHAMsA8wDyAAcAzQD0AMwABwDNAPUA9AAHAM4A9QDNAAcAzgD2APUABwDPAPYAzgAHAM8A9wD2AAcA0QD4ANAABwDRAPkA+AAHANIA+QDRAAcA0gD6APkABwDTAPoA0gAHANMA+wD6AAcA1QD8AP0ABwDVANQA/AAHANQA/gD8AAcA1ADWAP4ABwDWAP8A/gAHANYA1wD/AAcA2QAAAQEBBwDZANgAAAEHANgAAgEAAQcA2ADaAAIBBwDaAAMBAgEHANoA2wADAQcA3QAEAQUBBwDdANwABAEHAAQB3gAGAQcABAHcAN4ABwAGAd8ABwEHAAYB3gDfAAcACAHhAAkBBwAIAeAA4QAHAAkB4gAKAQcACQHhAOIABwAKAeMACwEHAAoB4gDjAAcADAHlAA0BBwAMAeQA5QAHAA0B5gAOAQcADQHlAOYABwAOAecADwEHAA4B5gDnAAcAEAHpAOgABwAQAREB6QAHABIB6ADqAAcAEgEQAegABwATAeoA6wAHABMBEgHqAAcAFAHtAOwABwAUARUB7QAHABYB7ADuAAcAFgEUAewABwAXAe4A7wAHABcBFgHuAAcAGAEZAfEABwAYARoBGQEHABsB8QDwAAcAGwEYAfEABwDyABsB8AAHAPIAHAEbAQcA8wAcAfIABwDzAB0BHAEHAB4BHQHzAAcAHgEfAR0BBwD0AB8BHgEHAPQAIAEfAQcA9QAgAfQABwD1ACEBIAEHAPYAIQH1AAcA9gAiASEBBwD3ACIB9gAHAPcAIwEiAQcAJAEjAfcABwAkASUBIwEHAPgAJQEkAQcA+AAmASUBBwD5ACYB+AAHAPkAJwEmAQcA+gAnAfkABwD6ACgBJwEHAPsAKAH6AAcA+wApASgBBwAqASkB+wAHACoBKwEpAQcAKgEsASsBBwAqAf0ALAEHAP0ALQEsAQcA/QD8AC0BBwD8AC4BLQEHAPwA/gAuAQcA/gAvAS4BBwD+AP8ALwEHAP8AMAEvAQcA/wAxATABBwAxATIBMAEHADEBAQEyAQcAAQEzATIBBwABAQABMwEHAAABNAEzAQcAAAECATQBBwACATUBNAEHAAIBAwE1AQcAAwE2ATUBBwADATcBNgEHADcBOAE2AQcANwEFATgBBwAFATkBOAEHAAUBBAE5AQcAOQEGAToBBwA5AQQBBgEHADoBBwE7AQcAOgEGAQcBBwA7ATwBPQEHADsBBwE8AQcAPQEIAT4BBwA9ATwBCAEHAD4BCQE/AQcAPgEIAQkBBwA/AQoBQAEHAD8BCQEKAQcAQAELAUEBBwBAAQoBCwEHAEEBQgFDAQcAQQELAUIBBwBDAQwBRAEHAEMBQgEMAQcARAENAUUBBwBEAQwBDQEHAEUBDgFGAQcARQENAQ4BBwBGAQ8BRwEHAEYBDgEPAQcASAEPAUkBBwBIAUcBDwEHAEoBSQERAQcASgFIAUkBBwBLAREBEAEHAEsBSgERAQcATAEQARIBBwBMAUsBEAEHAE0BEgETAQcATQFMARIBBwBOARMBTwEHAE4BTQETAQcAUAFPARUBBwBQAU4BTwEHAFEBFQEUAQcAUQFQARUBBwBSARQBFgEHAFIBUQEUAQcAUwEWARcBBwBTAVIBFgEHABoBFwEZAQcAGgFTARcBBwBUARgBVQEHAFQBGgEYAQcAVQEbAVYBBwBVARgBGwEHABsBVwFWAQcAGwEcAVcBBwAcAVgBVwEHABwBHQFYAQcAHQFZAVgBBwAdAR8BWQEHAB8BWgFZAQcAHwEgAVoBBwAgAVsBWgEHACABIQFbAQcAIQFcAVsBBwAhASIBXAEHACIBXQFcAQcAIgEjAV0BBwAjAV4BXQEHACMBJQFeAQcAJQFfAV4BBwAlASYBXwEHACYBYAFfAQcAJgEnAWABBwAnAWEBYAEHACcBKAFhAQcAKAFiAWEBBwAoASkBYgEHACkBYwFiAQcAKQErAWMBBwAsAWMBKwEHACwBZAFjAQcALQFkASwBBwAtAWUBZAEHAC4BZQEtAQcALgFmAWUBBwAvAWYBLgEHAC8BZwFmAQcAMAFnAS8BBwAwAWgBZwEHADIBaAEwAQcAMgFpAWgBBwAzAWkBMgEHADMBagFpAQcANAFqATMBBwA0AWsBagEHADUBawE0AQcANQFsAWsBBwA2AWwBNQEHADYBbQFsAQcAOAFtATYBBwA4AW4BbQEHADkBbgE4AQcAOQFvAW4BBwBwATkBOgEHAHABbwE5AQcAcQE6ATsBBwBxAXABOgEHAHIBOwE9AQcAcgFxATsBBwBzAT0BPgEHAHMBcgE9AQcAdAE+AT8BBwB0AXMBPgEHAHUBPwFAAQcAdQF0AT8BBwB2AUABQQEHAHYBdQFAAQcAdwFBAUMBBwB3AXYBQQEHAHgBQwFEAQcAeAF3AUMBBwB5AUQBRQEHAHkBeAFEAQcAegFFAUYBBwB6AXkBRQEHAHsBRgFHAQcAewF6AUYBBwB7AUgBfAEHAHsBRwFIAQcAfAFKAX0BBwB8AUgBSgEHAH0BSwF+AQcAfQFKAUsBBwB+AUwBfwEHAH4BSwFMAQcAfwFNAYABBwB/AUwBTQEHAIABTgGBAQcAgAFNAU4BBwCBAVABggEHAIEBTgFQAQcAggFRAYMBBwCCAVABUQEHAIMBUgGEAQcAgwFRAVIBBwCEAVMBhQEHAIQBUgFTAQcAhQEaAVQBBwCFAVMBGgEHAIYBVQGHAQcAhgFUAVUBBwCHAVYBiAEHAIcBVQFWAQcAVgGJAYgBBwBWAVcBiQEHAFcBigGJAQcAVwFYAYoBBwBYAYsBigEHAFgBWQGLAQcAWQGMAYsBBwBZAVoBjAEHAFoBjQGMAQcAWgFbAY0BBwBbAY4BjQEHAFsBXAGOAQcAXAGPAY4BBwBcAV0BjwEHAF0BkAGPAQcAXQFeAZABBwBeAZEBkAEHAF4BXwGRAQcAXwGSAZEBBwBfAWABkgEHAGABkwGSAQcAYAFhAZMBBwBhAZQBkwEHAGEBYgGUAQcAYgGVAZQBBwBiAWMBlQEHAGQBlQFjAQcAZAGWAZUBBwBlAZYBZAEHAGUBlwGWAQcAZgGXAWUBBwBmAZgBlwEHAGcBmAFmAQcAZwGZAZgBBwBoAZkBZwEHAGgBmgGZAQcAaQGaAWgBBwBpAZsBmgEHAGoBmwFpAQcAagGcAZsBBwBrAZwBagEHAGsBnQGcAQcAbAGdAWsBBwBsAZ4BnQEHAG0BngFsAQcAbQGfAZ4BBwBuAZ8BbQEHAG4BoAGfAQcAbwGgAW4BBwBvAaEBoAEHAKIBbwFwAQcAogGhAW8BBwCjAXABcQEHAKMBogFwAQcApAFxAXIBBwCkAaMBcQEHAKUBcgFzAQcApQGkAXIBBwCmAXMBdAEHAKYBpQFzAQcApwF0AXUBBwCnAaYBdAEHAKgBdQF2AQcAqAGnAXUBBwCpAXYBdwEHAKkBqAF2AQcAqgF3AXgBBwCqAakBdwEHAKsBeAF5AQcAqwGqAXgBBwCsAXkBegEHAKwBqwF5AQcArQF6AXsBBwCtAawBegEHAK0BfAGuAQcArQF7AXwBBwCuAX0BrwEHAK4BfAF9AQcArwF+AbABBwCvAX0BfgEHALABfwGxAQcAsAF+AX8BBwCxAYABsgEHALEBfwGAAQcAsgGBAbMBBwCyAYABgQEHALMBggG0AQcAswGBAYIBBwC0AYMBtQEHALQBggGDAQcAtQGEAbYBBwC1AYMBhAEHALYBhQG3AQcAtgGEAYUBBwC3AVQBhgEHALcBhQFUAQcAuAGHAbkBBwC4AYYBhwEHALkBiAG6AQcAuQGHAYgBBwCIAbsBugEHAIgBiQG7AQcAiQG8AbsBBwCJAYoBvAEHAIoBvQG8AQcAigGLAb0BBwCLAb4BvQEHAIsBjAG+AQcAjAG/Ab4BBwCMAY0BvwEHAI0BwAG/AQcAjQGOAcABBwCOAcEBwAEHAI4BjwHBAQcAjwHCAcEBBwCPAZABwgEHAJABwwHCAQcAkAGRAcMBBwCRAcQBwwEHAJEBkgHEAQcAkgHFAcQBBwCSAZMBxQEHAJMBxgHFAQcAkwGUAcYBBwCUAccBxgEHAJQBlQHHAQcAlgHHAZUBBwCWAcgBxwEHAJcByAGWAQcAlwHJAcgBBwCYAckBlwEHAJgBygHJAQcAmQHKAZgBBwCZAcsBygEHAJoBywGZAQcAmgHMAcsBBwCbAcwBmgEHAJsBzQHMAQcAnAHNAZsBBwCcAc4BzQEHAJ0BzgGcAQcAnQHPAc4BBwCeAc8BnQEHAJ4B0AHPAQcAnwHQAZ4BBwCfAdEB0AEHAKAB0QGfAQcAoAHSAdEBBwChAdIBoAEHAKEB0wHSAQcA1AGhAaIBBwDUAdMBoQEHANUBogGjAQcA1QHUAaIBBwDWAaMBpAEHANYB1QGjAQcA1wGkAaUBBwDXAdYBpAEHANgBpQGmAQcA2AHXAaUBBwDZAaYBpwEHANkB2AGmAQcA2gGnAagBBwDaAdkBpwEHANsBqAGpAQcA2wHaAagBBwDcAakBqgEHANwB2wGpAQcA3QGqAasBBwDdAdwBqgEHAN4BqwGsAQcA3gHdAasBBwDfAawBrQEHAN8B3gGsAQcA3wGuAeABBwDfAa0BrgEHAOABrwHhAQcA4AGuAa8BBwDhAbAB4gEHAOEBrwGwAQcA4gGxAeMBBwDiAbABsQEHAOMBsgHkAQcA4wGxAbIBBwDkAbMB5QEHAOQBsgGzAQcA5QG0AeYBBwDlAbMBtAEHAOYBtQHnAQcA5gG0AbUBBwDnAbYB6AEHAOcBtQG2AQcA6AG3AekBBwDoAbYBtwEHAOkBhgG4AQcA6QG3AYYBBwDqAbgBuQEHAOoB6wG4AQcA7AG5AboBBwDsAeoBuQEHALsB7AG6AQcAuwHtAewBBwC8Ae0BuwEHALwB7gHtAQcAvQHuAbwBBwC9Ae8B7gEHAL4B7wG9AQcAvgHwAe8BBwC/AfABvgEHAL8B8QHwAQcAwAHxAb8BBwDAAfIB8QEHAMEB8gHAAQcAwQHzAfIBBwDCAfMBwQEHAMIB9AHzAQcAwwH0AcIBBwDDAfUB9AEHAMQB9QHDAQcAxAH2AfUBBwDFAfYBxAEHAMUB9wH2AQcAxgH3AcUBBwDGAfgB9wEHAMcB+AHGAQcAxwH5AfgBBwDIAfkBxwEHAMgB+gH5AQcAyQH6AcgBBwDJAfsB+gEHAMoB+wHJAQcAygH8AfsBBwDLAfwBygEHAMsB/QH8AQcAzAH9AcsBBwDMAf4B/QEHAM0B/gHMAQcAzQH/Af4BBwDOAf8BzQEHAM4BAAL/AQcAzwEAAs4BBwDPAQECAAIHANABAQLPAQcA0AECAgECBwDRAQIC0AEHANEBAwICAgcA0gEDAtEBBwDSAQQCAwIHANMBBALSAQcA0wEFAgQCBwAGAtMB1AEHAAYCBQLTAQcABwLUAdUBBwAHAgYC1AEHAAgC1QHWAQcACAIHAtUBBwAJAtYB1wEHAAkCCALWAQcACgLXAdgBBwAKAgkC1wEHAAsC2AHZAQcACwIKAtgBBwAMAtkB2gEHAAwCCwLZAQcADQLaAdsBBwANAgwC2gEHAA4C2wHcAQcADgINAtsBBwAPAtwB3QEHAA8CDgLcAQcAEALdAd4BBwAQAg8C3QEHABEC3gHfAQcAEQIQAt4BBwASAt8B4AEHABICEQLfAQcAEwLgAeEBBwATAhIC4AEHABQC4QHiAQcAFAITAuEBBwAVAuIB4wEHABUCFALiAQcAFgLjAeQBBwAWAhUC4wEHABcC5AHlAQcAFwIWAuQBBwAYAuUB5gEHABgCFwLlAQcAGQLmAecBBwAZAhgC5gEHABoC5wHoAQcAGgIZAucBBwAbAugB6QEHABsCGgLoAQcA6wHpAbgBBwDrARsC6QEHAMQAHAIdAgcAxADJABwCBwAeAsQAHQIHAB4CwwDEAAcAxwAfAiACBwDHAJYAHwIHACECxwAgAgcAIQLLAMcABwCWACICHwIHAJYAlwAiAgcAlwAjAiICBwCXAMwAIwIHAJoAJAIlAgcAmgCbACQCBwAmApoAJQIHACYCzwCaAAcAmwAnAiQCBwCbAJwAJwIHAJwAKAInAgcAnADQACgCBwCfACkCKgIHAJ8AoAApAgcAKwKfACoCBwArAtMAnwAHAKAALAIpAgcAoAChACwCBwAsAtUALQIHACwCoQDVAAcA1wAuAi8CBwDXAKQALgIHAKQAMAIuAgcApAClADACBwClADECMAIHAKUApgAxAgcAMQLZADICBwAxAqYA2QAHANsAMwI0AgcA2wCpADMCBwCpADUCMwIHAKkAqgA1AgcAqgA2AjUCBwCqAKsANgIHADYC3QA3AgcANgKrAN0ABwDfADgCOQIHAN8ArgA4AgcAOAKvADoCBwA4Aq4ArwAHADoCsAA7AgcAOgKvALAABwA7AuAAPAIHADsCsADgAAcA4wA9Aj4CBwDjALMAPQIHAD0CtAA/AgcAPQKzALQABwA/ArUAQAIHAD8CtAC1AAcAQALkAEECBwBAArUA5AAHAOcAQgJDAgcA5wC4AEICBwBCArkARAIHAEICuAC5AAcAugBFAkYCBwC6AOkARQIHAEQCugBGAgcARAK5ALoABwBHAr0ASAIHAEcC6wC9AAcASAK+AEkCBwBIAr0AvgAHAL8ASgJLAgcAvwDtAEoCBwBJAr8ASwIHAEkCvgC/AAcATALCAE0CBwBMAu8AwgAHAE0CwwAeAgcATQLCAMMABwDJAE4CHAIHAMkA8QBOAgcA8QBPAk4CBwDxABkBTwIHAFAC8wBRAgcAUAIeAfMABwBRAssAIQIHAFEC8wDLAAcAzABSAiMCBwDMAPQAUgIHAFICHgFQAgcAUgL0AB4BBwBTAvcAVAIHAFMCJAH3AAcAVALPACYCBwBUAvcAzwAHANAAVQIoAgcA0AD4AFUCBwBVAiQBUwIHAFUC+AAkAQcAVgL7AFcCBwBWAioB+wAHAFcC0wArAgcAVwL7ANMABwAtAv0AWAIHAC0C1QD9AAcAWAIqAVYCBwBYAv0AKgEHAP8ALwJZAgcA/wDXAC8CBwBaAv8AWQIHAFoCMQH/AAcAMgIBAVsCBwAyAtkAAQEHAFsCMQFaAgcAWwIBATEBBwADATQCXAIHAAMB2wA0AgcAXQIDAVwCBwBdAjcBAwEHADcCBQFeAgcANwLdAAUBBwBeAjcBXQIHAF4CBQE3AQcAPAFfAmACBwA8AQcBXwIHAAcBOQJfAgcABwHfADkCBwAIAWACYQIHAAgBPAFgAgcAPAIIAWECBwA8AuAACAEHAEIBYgJjAgcAQgELAWICBwALAT4CYgIHAAsB4wA+AgcADAFjAmQCBwAMAUIBYwIHAEECDAFkAgcAQQLkAAwBBwBJAWUCZgIHAEkBDwFlAgcADwFDAmUCBwAPAecAQwIHAOkAZwJFAgcA6QARAWcCBwARAWYCZwIHABEBSQFmAgcATwFoAmkCBwBPARMBaAIHAGgC6wBHAgcAaAITAesABwDtAGoCSgIHAO0AFQFqAgcAFQFpAmoCBwAVAU8BaQIHABkBawJPAgcAGQEXAWsCBwBrAu8ATAIHAGsCFwHvAAcAbAJtAm4CBwBsAm8CbQIHAHACcQJyAgcAcAJzAnECBwB0AnUCdgIHAHQCdwJ1AgcAeAJ5AnoCBwB4AnsCeQIHAHcCfAJ1AgcAdwJ9AnwCBwB+AnsCeAIHAH4CfwJ7AgcAgAKBAoICBwCAAoMCgQIHAIQChQKGAgcAhAKHAoUCBwCDAogCgQIHAIMCiQKIAgcAigKHAoQCBwCKAosChwIHAIwCjQKOAgcAjAKPAo0CBwCQApECkgIHAJACkwKRAgcAlAKOApUCBwCUAowCjgIHAJIClgKXAgcAkgKRApYCBwCYApkCmgIHAJgCmwKZAgcAnAKdAp4CBwCcAp8CnQIHAKACmgKhAgcAoAKYApoCBwCeAqICowIHAJ4CnQKiAgcApAKlAqYCBwCkAqcCpQIHAKgCqQKqAgcAqAKrAqkCBwCsAqYCrQIHAKwCpAKmAgcAqgKuAq8CBwCqAqkCrgIHALACsQKyAgcAsAKzArECBwC0ArUCtgIHALQCtwK1AgcAuAKyArkCBwC4ArACsgIHALYCugK7AgcAtgK1AroCBwC8Ar0CvgIHALwCvwK9AgcAwALBAsICBwDAAsMCwQIHAMQCvgLFAgcAxAK8Ar4CBwDCAsYCxwIHAMICwQLGAgcAyALJAsoCBwDIAssCyQIHAMwCzQLOAgcAzALPAs0CBwDLAtACyQIHAMsC0QLQAgcA0gLPAswCBwDSAtMCzwIHANQC1QLWAgcA1ALXAtUCBwDYAtkC2gIHANgC2wLZAgcA1wLcAtUCBwDXAt0C3AIHAN4C2wLYAgcA3gLfAtsCBwDgAm4C4QIHAOACbAJuAgcAcgLiAuMCBwByAnEC4gIHAOIC5ALlAgcA4gJxAuQCBwBxAuYC5AIHAHECcwLmAgcAcwLnAuYCBwBzAnkC5wIHAHkC6ALnAgcAeQJ7AugCBwB7AukC6AIHAHsCfwLpAgcAfwLqAukCBwB/AoUC6gIHAIUC6wLqAgcAhQKHAusCBwCHAuwC6wIHAIcCiwLsAgcAiwLtAuwCBwCLAo8C7QIHAO0CjALuAgcA7QKPAowCBwDuApQC7wIHAO4CjAKUAgcA7wKbAvACBwDvApQCmwIHAPACmALxAgcA8AKbApgCBwDxAqAC8gIHAPECmAKgAgcA8gKnAvMCBwDyAqACpwIHAPMCpAL0AgcA8wKnAqQCBwD0AqwC9QIHAPQCpAKsAgcA9QKzAvYCBwD1AqwCswIHAPYCsAL3AgcA9gKzArACBwD3ArgC+AIHAPcCsAK4AgcA+AK/AvkCBwD4ArgCvwIHAPkCvAL6AgcA+QK/ArwCBwD6AsQC+wIHAPoCvALEAgcA+wLNAvwCBwD7AsQCzQIHAM0C/QL8AgcAzQLPAv0CBwDPAv4C/QIHAM8C0wL+AgcA0wL/Av4CBwDTAtkC/wIHANkCAAP/AgcA2QLbAgADBwDbAgEDAAMHANsC3wIBAwcA3wLlAgEDBwDfAuIC5QIHAOQCAgPlAgcA5AIDAwIDBwDmAgMD5AIHAOYCBAMDAwcA5gIFAwQDBwDmAucCBQMHAOcCBgMFAwcA5wLoAgYDBwDoAgcDBgMHAOgC6QIHAwcA6QIIAwcDBwDpAuoCCAMHAOoCCQMIAwcA6gLrAgkDBwDrAgoDCQMHAOsC7AIKAwcA7AILAwoDBwDsAu0CCwMHAAsD7gIMAwcACwPtAu4CBwAMA+8CDQMHAAwD7gLvAgcADQPwAg4DBwANA+8C8AIHAA4D8QIPAwcADgPwAvECBwAPA/ICEAMHAA8D8QLyAgcAEAPzAhEDBwAQA/IC8wIHABED9AISAwcAEQPzAvQCBwATA/QC9QIHABMDEgP0AgcAFAP1AvYCBwAUAxMD9QIHABUD9gL3AgcAFQMUA/YCBwAWA/cC+AIHABYDFQP3AgcAFwP4AvkCBwAXAxYD+AIHABgD+QL6AgcAGAMXA/kCBwAZA/oC+wIHABkDGAP6AgcAGgP7AvwCBwAaAxkD+wIHAP0CGgP8AgcA/QIbAxoDBwD+AhsD/QIHAP4CHAMbAwcA/wIcA/4CBwD/Ah0DHAMHAAADHQP/AgcAAAMeAx0DBwABAx4DAAMHAAEDHwMeAwcA5QIfAwEDBwDlAgIDHwMHAAIDIAMhAwcAAgMDAyADBwADAyIDIAMHAAMDBAMiAwcABAMjAyIDBwAEAwUDIwMHAAUDJAMjAwcABQMGAyQDBwAGAyUDJAMHAAYDBwMlAwcABwMmAyUDBwAHAwgDJgMHAAgDJwMmAwcACAMJAycDBwAJAygDJwMHAAkDCgMoAwcACgMpAygDBwAKAwsDKQMHACkDDAMqAwcAKQMLAwwDBwAqAw0DKwMHACoDDAMNAwcAKwMOAywDBwArAw0DDgMHACwDDwMtAwcALAMOAw8DBwAtAxADLgMHAC0DDwMQAwcALgMRAy8DBwAuAxADEQMHAC8DEgMwAwcALwMRAxIDBwAwAxMDMQMHADADEgMTAwcAMQMUAzIDBwAxAxMDFAMHADIDFQMzAwcAMgMUAxUDBwAzAxYDNAMHADMDFQMWAwcANAMXAzUDBwA0AxYDFwMHADUDGAM2AwcANQMXAxgDBwA2AxkDNwMHADYDGAMZAwcANwMaAzgDBwA3AxkDGgMHABoDOQM4AwcAGgMbAzkDBwAbAzoDOQMHABsDHAM6AwcAHAM7AzoDBwAcAx0DOwMHAB0DPAM7AwcAHQMeAzwDBwAeAz0DPAMHAB4DHwM9AwcAHwMhAz0DBwAfAwIDIQMHACEDPgM/AwcAIQMgAz4DBwAgA0ADPgMHACADIgNAAwcAIgNBA0ADBwAiAyMDQQMHACMDQgNBAwcAIwMkA0IDBwAkA0MDQgMHACQDJQNDAwcAJQNEA0MDBwAlAyYDRAMHACYDRQNEAwcAJgMnA0UDBwAnA0YDRQMHACcDKANGAwcAKANHA0YDBwAoAykDRwMHAEcDKgNIAwcARwMpAyoDBwBIAysDSQMHAEgDKgMrAwcASQMsA0oDBwBJAysDLAMHAEoDLQNLAwcASgMsAy0DBwBLAy4DTAMHAEsDLQMuAwcATAMvA00DBwBMAy4DLwMHAE0DMANOAwcATQMvAzADBwBOAzEDTwMHAE4DMAMxAwcATwMyA1ADBwBPAzEDMgMHAFADMwNRAwcAUAMyAzMDBwBRAzQDUgMHAFEDMwM0AwcAUgM1A1MDBwBSAzQDNQMHAFMDNgNUAwcAUwM1AzYDBwBUAzcDVQMHAFQDNgM3AwcAVQM4A1YDBwBVAzcDOAMHADgDVwNWAwcAOAM5A1cDBwA5A1gDVwMHADkDOgNYAwcAOgNZA1gDBwA6AzsDWQMHADsDWgNZAwcAOwM8A1oDBwA8A1sDWgMHADwDPQNbAwcAPQM/A1sDBwA9AyEDPwMHAFwDXQNeAwcAXANfA10DBwBgA14DYQMHAGADXANeAwcAYgNhA2MDBwBiA2ADYQMHAGQDYwNlAwcAZANiA2MDBwBmA2UDZwMHAGYDZANlAwcAaANnA2kDBwBoA2YDZwMHAGoDaQNrAwcAagNoA2kDBwBsA2sDbQMHAGwDagNrAwcAbgNsA20DBwBuA28DbAMHAHADbwNuAwcAcANxA28DBwByA3EDcAMHAHIDcwNxAwcAdANzA3IDBwB0A3UDcwMHAHYDdQN0AwcAdgN3A3UDBwB4A3cDdgMHAHgDeQN3AwcAegN5A3gDBwB6A3sDeQMHAHwDewN6AwcAfAN9A3sDBwB8A34DfQMHAHwDfwN+AwcAfwOAA34DBwB/A4EDgAMHAIEDggOAAwcAgQODA4IDBwCDA4QDggMHAIMDhQOEAwcAhQOGA4QDBwCFA4cDhgMHAIcDiAOGAwcAhwOJA4gDBwCJA4oDiAMHAIkDiwOKAwcAigOMA40DBwCKA4sDjAMHAI0DjgOPAwcAjQOMA44DBwCPA5ADkQMHAI8DjgOQAwcAkQOSA5MDBwCRA5ADkgMHAJMDlAOVAwcAkwOSA5QDBwCVA5YDlwMHAJUDlAOWAwcAlwNdA18DBwCXA5YDXQMHAJgDXwNcAwcAmAOZA18DBwCaA1wDYAMHAJoDmANcAwcAmwNgA2IDBwCbA5oDYAMHAJwDZgNoAwcAnAOdA2YDBwCeA2gDagMHAJ4DnANoAwcAnwNqA2wDBwCfA54DagMHAG8DnwNsAwcAbwOgA58DBwB1A6EDcwMHAHUDogOhAwcAdwOiA3UDBwB3A6MDogMHAHkDowN3AwcAeQOkA6MDBwB7A6QDeQMHAHsDpQOkAwcAfgOmA6cDBwB+A4ADpgMHAIADqAOmAwcAgAOCA6gDBwCCA6kDqAMHAIIDhAOpAwcAhAOqA6kDBwCEA4YDqgMHAKsDjQOsAwcAqwOKA40DBwCsA48DrQMHAKwDjQOPAwcArQORA64DBwCtA48DkQMHAK4DkwOvAwcArgORA5MDBwCwA18DmQMHALADlwNfAwcAsQOZA5gDBwCxA7IDmQMHALMDmAOaAwcAswOxA5gDBwC0A5oDmwMHALQDswOaAwcAtQObA7YDBwC1A7QDmwMHALcDtgOdAwcAtwO1A7YDBwC4A50DnAMHALgDtwOdAwcAuQOcA54DBwC5A7gDnAMHALoDngOfAwcAugO5A54DBwCgA7oDnwMHAKADuwO6AwcAvAO7A6ADBwC8A70DuwMHAKEDvQO8AwcAoQO+A70DBwCiA74DoQMHAKIDvwO+AwcAowO/A6IDBwCjA8ADvwMHAKQDwAOjAwcApAPBA8ADBwClA8EDpAMHAKUDwgPBAwcAwwPCA6UDBwDDA8QDwgMHAMMDxQPEAwcAwwOnA8UDBwCnA8YDxQMHAKcDpgPGAwcApgPHA8YDBwCmA6gDxwMHAKgDyAPHAwcAqAOpA8gDBwCpA8kDyAMHAKkDqgPJAwcAqgPKA8kDBwCqA8sDygMHAMsDzAPKAwcAywOrA8wDBwDMA6wDzQMHAMwDqwOsAwcAzQOtA84DBwDNA6wDrQMHAM4DrgPPAwcAzgOtA64DBwDPA68D0AMHAM8DrgOvAwcA0APRA9IDBwDQA68D0QMHANIDsAPTAwcA0gPRA7ADBwDTA5kDsgMHANMDsAOZAwcA1AOyA7EDBwDUA9UDsgMHANYDsQOzAwcA1gPUA7EDBwDXA7MDtAMHANcD1gOzAwcA2AO0A7UDBwDYA9cDtAMHANkDtQO3AwcA2QPYA7UDBwDaA7cDuAMHANoD2QO3AwcA2wO4A7kDBwDbA9oDuAMHANwDuQO6AwcA3APbA7kDBwC7A9wDugMHALsD3QPcAwcAvQPdA7sDBwC9A94D3QMHAL4D3gO9AwcAvgPfA94DBwC/A98DvgMHAL8D4APfAwcAwAPgA78DBwDAA+ED4AMHAMED4QPAAwcAwQPiA+EDBwDCA+IDwQMHAMID4wPiAwcAxAPjA8IDBwDEA+QD4wMHAMQD5QPkAwcAxAPFA+UDBwDFA+YD5QMHAMUDxgPmAwcAxgPnA+YDBwDGA8cD5wMHAMcD6APnAwcAxwPIA+gDBwDIA+kD6AMHAMgDyQPpAwcAyQPqA+kDBwDJA8oD6gMHAMoD6wPqAwcAygPMA+sDBwDrA80D7AMHAOsDzAPNAwcA7APOA+0DBwDsA80DzgMHAO0DzwPuAwcA7QPOA88DBwDuA9AD7wMHAO4DzwPQAwcA7wPSA/ADBwDvA9AD0gMHAPAD0wPxAwcA8APSA9MDBwDxA7ID1QMHAPED0wOyAwcA8gPUA/MDBwDyA9UD1AMHAPMD1gP0AwcA8wPUA9YDBwD0A9cD9QMHAPQD1gPXAwcA9QPYA/YDBwD1A9cD2AMHAPYD2QP3AwcA9gPYA9kDBwD3A9oD+AMHAPcD2QPaAwcA+APbA/kDBwD4A9oD2wMHAPkD3AP6AwcA+QPbA9wDBwDcA/sD+gMHANwD3QP7AwcA3QP8A/sDBwDdA94D/AMHAN4D/QP8AwcA3gPfA/0DBwDfA/4D/QMHAN8D4AP+AwcA4AP/A/4DBwDgA+ED/wMHAOEDAAT/AwcA4QPiAwAEBwDiAwEEAAQHAOID4wMBBAcA4wMCBAEEBwDjA+QDAgQHAOQDAwQCBAcA5APlAwMEBwDlAwQEAwQHAOUD5gMEBAcA5gMFBAQEBwDmA+cDBQQHAOcDBgQFBAcA5wPoAwYEBwDoAwcEBgQHAOgD6QMHBAcA6QMIBAcEBwDpA+oDCAQHAOoDCQQIBAcA6gPrAwkEBwAJBOwDCgQHAAkE6wPsAwcACgTtAwsEBwAKBOwD7QMHAAsE7gMMBAcACwTtA+4DBwAMBO8DDQQHAAwE7gPvAwcADQTwAw4EBwANBO8D8AMHAA4E8QMPBAcADgTwA/EDBwAPBNUD8gMHAA8E8QPVAwcAEATzAxEEBwAQBPID8wMHABEE9AMSBAcAEQTzA/QDBwASBPUDEwQHABIE9AP1AwcAEwT2AxQEBwATBPUD9gMHABQE9wMVBAcAFAT2A/cDBwAVBPgDFgQHABUE9wP4AwcAFgT5AxcEBwAWBPgD+QMHABcE+gMYBAcAFwT5A/oDBwD6AxkEGAQHAPoD+wMZBAcA+wMaBBkEBwD7A/wDGgQHAPwDGwQaBAcA/AP9AxsEBwD9AxwEGwQHAP0D/gMcBAcA/gMdBBwEBwD+A/8DHQQHAP8DHgQdBAcA/wMABB4EBwAABB8EHgQHAAAEAQQfBAcAAQQgBB8EBwABBAIEIAQHAAIEIQQgBAcAAgQDBCEEBwADBCIEIQQHAAMEBAQiBAcABAQjBCIEBwAEBAUEIwQHAAUEJAQjBAcABQQGBCQEBwAGBCUEJAQHAAYEBwQlBAcABwQmBCUEBwAHBAgEJgQHAAgEJwQmBAcACAQJBCcEBwAnBAoEKAQHACcECQQKBAcAKAQLBCkEBwAoBAoECwQHACkEDAQqBAcAKQQLBAwEBwAqBA0EKwQHACoEDAQNBAcAKwQOBCwEBwArBA0EDgQHACwEDwQtBAcALAQOBA8EBwAtBPIDEAQHAC0EDwTyAwcALgQQBBEEBwAuBC8EEAQHADAEEQQSBAcAMAQuBBEEBwAxBBIEEwQHADEEMAQSBAcAMgQTBBQEBwAyBDEEEwQHADMEFAQVBAcAMwQyBBQEBwA0BBUEFgQHADQEMwQVBAcANQQWBBcEBwA1BDQEFgQHADYEFwQYBAcANgQ1BBcEBwAZBDYEGAQHABkENwQ2BAcAGgQ3BBkEBwAaBDgENwQHABsEOAQaBAcAGwQ5BDgEBwAcBDkEGwQHABwEOgQ5BAcAHQQ6BBwEBwAdBDsEOgQHAB4EOwQdBAcAHgQ8BDsEBwAfBDwEHgQHAB8EPQQ8BAcAIAQ9BB8EBwAgBD4EPQQHACAEPwQ+BAcAIAQhBD8EBwAhBEAEPwQHACEEIgRABAcAIgRBBEAEBwAiBCMEQQQHACMEQgRBBAcAIwQkBEIEBwAkBEMEQgQHACQEJQRDBAcAJQREBEMEBwAlBCYERAQHACYERQREBAcAJgQnBEUEBwBFBCgERgQHAEUEJwQoBAcARgQpBEcEBwBGBCgEKQQHAEcEKgRIBAcARwQpBCoEBwBIBCsESQQHAEgEKgQrBAcASQQsBEoEBwBJBCsELAQHAEoELQRLBAcASgQsBC0EBwBLBBAELwQHAEsELQQQBAcATAR4A3YDBwBMBE0EeAMHAE0EegN4AwcATQROBHoDBwBOBHwDegMHAE4ETwR8AwcATwR/A3wDBwBPBFAEfwMHAFAEgQN/AwcAUARRBIEDBwBRBIMDgQMHAFEEUgSDAwcAUgSFA4MDBwBSBFMEhQMHAFMEhwOFAwcAUwRUBIcDBwBUBIkDhwMHAFQEVQSJAwcAVQSLA4kDBwBVBFYEiwMHAFYEjAOLAwcAVgRXBIwDBwBXBI4DjAMHAFcEWASOAwcAWASQA44DBwBYBFkEkAMHAFkEkgOQAwcAWQRaBJIDBwBaBJQDkgMHAFoEWwSUAwcAWwSWA5QDBwBbBFwElgMHAFwEXQOWAwcAXARdBF0DBwBdBF4DXQMHAF0EXgReAwcAXgRhA14DBwBeBF8EYQMHAF8EYwNhAwcAXwRgBGMDBwBgBGUDYwMHAGAEYQRlAwcAYQRnA2UDBwBhBGIEZwMHAGIEaQNnAwcAYgRjBGkDBwBjBGsDaQMHAGMEZARrAwcAZARtA2sDBwBkBGUEbQMHAGUEbgNtAwcAZQRmBG4DBwBmBHADbgMHAGYEZwRwAwcAZwRyA3ADBwBnBGgEcgMHAGgEdANyAwcAaARpBHQDBwBpBHYDdAMHAGkETAR2AwcAagS3Aq4CBwBqBGsEtwIHAE4EawRqBAcATgRNBGsEBwBrBLUCtwIHAGsEbAS1AgcATQRsBGsEBwBNBEwEbAQHAGwEugK1AgcAbARtBLoCBwBMBG0EbAQHAEwEaQRtBAcAbQTDAroCBwBtBG4EwwIHAGkEbgRtBAcAaQRoBG4EBwBuBMECwwIHAG4EbwTBAgcAaARvBG4EBwBoBGcEbwQHAG8ExgLBAgcAbwRwBMYCBwBnBHAEbwQHAGcEZgRwBAcAcATIAsYCBwBwBHEEyAIHAGYEcQRwBAcAZgRlBHEEBwBxBMsCyAIHAHEEcgTLAgcAZQRyBHEEBwBlBGQEcgQHAHIE0QLLAgcAcgRzBNECBwBkBHMEcgQHAGQEYwRzBAcAcwTUAtECBwBzBHQE1AIHAGMEdARzBAcAYwRiBHQEBwB0BNcC1AIHAHQEdQTXAgcAYgR1BHQEBwBiBGEEdQQHAHUE3QLXAgcAdQR2BN0CBwBhBHYEdQQHAGEEYAR2BAcAdgTgAt0CBwB2BHcE4AIHAGAEdwR2BAcAYARfBHcEBwB3BGwC4AIHAHcEeARsAgcAXwR4BHcEBwBfBF4EeAQHAHgEbwJsAgcAeAR5BG8CBwBeBHkEeAQHAF4EXQR5BAcAeQR0Am8CBwB5BHoEdAIHAF0EegR5BAcAXQRcBHoEBwB6BHcCdAIHAHoEewR3AgcAXAR7BHoEBwBcBFsEewQHAHsEfQJ3AgcAewR8BH0CBwBbBHwEewQHAFsEWgR8BAcAfASAAn0CBwB8BH0EgAIHAFoEfQR8BAcAWgRZBH0EBwB9BIMCgAIHAH0EfgSDAgcAWQR+BH0EBwBZBFgEfgQHAH4EiQKDAgcAfgR/BIkCBwBYBH8EfgQHAFgEVwR/BAcAfwSTAokCBwB/BIAEkwIHAFcEgAR/BAcAVwRWBIAEBwCABJECkwIHAIAEgQSRAgcAVgSBBIAEBwBWBFUEgQQHAIEElgKRAgcAgQSCBJYCBwBVBIIEgQQHAFUEVASCBAcAggSfApYCBwCCBIMEnwIHAFQEgwSCBAcAVARTBIMEBwCDBJ0CnwIHAIMEhASdAgcAUwSEBIMEBwBTBFIEhAQHAIQEogKdAgcAhASFBKICBwBSBIUEhAQHAFIEUQSFBAcAhQSrAqICBwCFBIYEqwIHAFEEhgSFBAcAUQRQBIYEBwCGBKkCqwIHAIYEhwSpAgcAUASHBIYEBwBQBE8EhwQHAIcErgKpAgcAhwRqBK4CBwBPBGoEhwQHAE8ETgRqBAcAcwKIBHkCBwBzAokEiAQHAIgEbwJ0AgcAiASJBG8CBwB/AooEhQIHAH8CiwSKBAcAigR9AoACBwCKBIsEfQIHAIwEjwKLAgcAjASNBI8CBwCNBIkCkwIHAI0EjASJAgcAjgSbApQCBwCOBI8EmwIHAI8ElgKfAgcAjwSOBJYCBwCQBKcCoAIHAJAEkQSnAgcAkQSiAqsCBwCRBJAEogIHAJIEswKsAgcAkgSTBLMCBwCTBK4CtwIHAJMEkgSuAgcAlAS/ArgCBwCUBJUEvwIHAJUEugLDAgcAlQSUBLoCBwDEApYEzQIHAMQClwSWBAcAlgTGAsgCBwCWBJcExgIHANMCmATZAgcA0wKZBJgEBwCYBNEC1AIHAJgEmQTRAgcA3wKaBOICBwDfApsEmgQHAJoE3QLgAgcAmgSbBN0CBwBtAokEnAQHAG0CbwKJBAcAnARzAnACBwCcBIkEcwIHAJ0EdAJ2AgcAnQSIBHQCBwB6AogEnQQHAHoCeQKIBAcAfAKLBJ4EBwB8An0CiwQHAJ4EfwJ+AgcAngSLBH8CBwCfBIACggIHAJ8EigSAAgcAhgKKBJ8EBwCGAoUCigQHAIgCjASgBAcAiAKJAowEBwCgBIsCigIHAKAEjASLAgcAoQSTApACBwChBI0EkwIHAI0CjQShBAcAjQKPAo0EBwCXAo4EogQHAJcClgKOBAcAogSUApUCBwCiBI4ElAIHAKMEnwKcAgcAowSPBJ8CBwCZAo8EowQHAJkCmwKPBAcAowKQBKQEBwCjAqICkAQHAKQEoAKhAgcApASQBKACBwClBKsCqAIHAKUEkQSrAgcApQKRBKUEBwClAqcCkQQHAK8CkgSmBAcArwKuApIEBwCmBKwCrQIHAKYEkgSsAgcApwS3ArQCBwCnBJMEtwIHALECkwSnBAcAsQKzApMEBwC7ApQEqAQHALsCugKUBAcAqAS4ArkCBwCoBJQEuAIHAKkEwwLAAgcAqQSVBMMCBwC9ApUEqQQHAL0CvwKVBAcAxwKXBKoEBwDHAsYClwQHAKoExALFAgcAqgSXBMQCBwCrBMgCygIHAKsElgTIAgcAzgKWBKsEBwDOAs0ClgQHANACmQSsBAcA0ALRApkEBwCsBNMC0gIHAKwEmQTTAgcArQTUAtYCBwCtBJgE1AIHANoCmAStBAcA2gLZApgEBwDcApsErgQHANwC3QKbBAcArgTfAt4CBwCuBJsE3wIHAK8E4ALhAgcArwSaBOACBwDjApoErwQHAOMC4gKaBAcAIAKqBCECBwAgAscCqgQHAB8CxwIgAgcAHwLCAscCBwDCAiICwAIHAMICHwIiAgcAxQIhAqoEBwDFAlECIQIHAMACIwKpBAcAwAIiAiMCBwCpBFICvQIHAKkEIwJSAgcAvgJRAsUCBwC+AlACUQIHAFACvQJSAgcAUAK+Ar0CBwDJAh0CygIHAMkCHgIdAgcA0AIeAskCBwDQAk0CHgIHAKwETQLQAgcArARMAk0CBwCsBGsCTAIHAKwE0gJrAgcAygIcAqsEBwDKAh0CHAIHAE4CqwQcAgcATgLOAqsEBwDOAk8CzAIHAM4CTgJPAgcAzAJrAtICBwDMAk8CawIHAGkC2gJqAgcAaQLYAtoCBwBpAt4C2AIHAGkCaALeAgcAagKtBEoCBwBqAtoCrQQHAEoC1gJLAgcASgKtBNYCBwBLAtUCSQIHAEsC1gLVAgcASQLcAkgCBwBJAtUC3AIHAEgCrgRHAgcASALcAq4EBwBHAt4CaAIHAEcCrgTeAgcARAJtAkICBwBEAm4CbQIHAEYCbgJEAgcARgLhAm4CBwBFAuECRgIHAEUCrwThAgcAZwKvBEUCBwBnAuMCrwQHAEICnARDAgcAQgJtApwEBwBDAnACZQIHAEMCnARwAgcAcgJlAnACBwByAmYCZQIHAOMCZgJyAgcA4wJnAmYCBwB6AmMCeAIHAHoCZAJjAgcAeAJiAn4CBwB4AmMCYgIHAH4CPgKeBAcAfgJiAj4CBwCeBD0CfAIHAJ4EPgI9AgcAPwJ8Aj0CBwA/AnUCfAIHAEACdQI/AgcAQAJ2AnUCBwBBAnYCQAIHAEECnQR2AgcAZAKdBEECBwBkAnoCnQQHAJ8EYQKGAgcAnwQ8AmECBwA8AoICOwIHADwCnwSCAgcAOwKBAjoCBwA7AoICgQIHADoCiAI4AgcAOgKBAogCBwA4AqAEOQIHADgCiAKgBAcAOQKKAl8CBwA5AqAEigIHAIQCXwKKAgcAhAJgAl8CBwBgAoYCYQIHAGAChAKGAgcAjQJdAo4CBwCNAl4CXQIHAFwCjgJdAgcAXAKVAo4CBwAzAqIENAIHADMClwKiBAcANQKXAjMCBwA1ApIClwIHADYCkgI1AgcANgKQApICBwA3ApACNgIHADcCoQSQAgcAoQReAo0CBwChBDcCXgIHADQClQJcAgcANAKiBJUCBwCkBC4CowIHAKQELwIuAgcAowIwAp4CBwCjAi4CMAIHAJ4CMQKcAgcAngIwAjECBwChAi8CpAQHAKECWQIvAgcAnAIyAqMEBwCcAjECMgIHAKMEWwKZAgcAowQyAlsCBwBaApkCWwIHAFoCmgKZAgcAWQKaAloCBwBZAqECmgIHAKgCLQKlBAcAqAIsAi0CBwClBFgCpQIHAKUELQJYAgcAqgIsAqgCBwCqAikCLAIHAK8CKQKqAgcArwIqAikCBwCmBCoCrwIHAKYEKwIqAgcArQIrAqYEBwCtAlcCKwIHAFYCpQJYAgcAVgKmAqUCBwBXAqYCVgIHAFcCrQKmAgcAtgInArQCBwC2AiQCJwIHALsCJAK2AgcAuwIlAiQCBwC0AigCpwQHALQCJwIoAgcApwRVArECBwCnBCgCVQIHAKgEJQK7AgcAqAQmAiUCBwC5AiYCqAQHALkCVAImAgcAUwKxAlUCBwBTArICsQIHAFQCsgJTAgcAVAK5ArICBwCwBLEEsgQHALAEswSxBAcAtAS1BLYEBwC0BLcEtQQHALgEuQS6BAcAuAS7BLkEBwC8BL0EvgQHALwEvwS9BAcAwATBBMIEBwDABMMEwQQHAMQExQTGBAcAxATHBMUEBwDIBMUEyQQHAMgExgTFBAcAygTJBMsEBwDKBMgEyQQHAMwEygTLBAcAzATNBMoEBwDOBM0EzAQHAM4EzwTNBAcAzgTEBM8EBwDOBMcExAQHANAE0QTSBAcA0ATTBNEEBwDUBNIE1QQHANQE0ATSBAcA1gTUBNUEBwDWBNcE1AQHANgE1wTWBAcA2ATZBNcEBwDYBNoE2QQHANgE2wTaBAcA2gTRBNMEBwDaBNsE0QQHANwE3QTeBAcA3ATfBN0EBwDgBNwE3gQHAOAE4QTcBAcA4gThBOAEBwDiBOME4QQHAOIE5ATjBAcA4gTlBOQEBwDkBOYE5wQHAOQE5QTmBAcA3wTmBN0EBwDfBOcE5gQHAOgE6QTqBAcA6ATrBOkEBwDsBOsE6AQHAOwE7QTrBAcA7ATuBO0EBwDsBO8E7gQHAO4E8ATxBAcA7gTvBPAEBwDyBPAE8wQHAPIE8QTwBAcA6QTzBOoEBwDpBPIE8wQHAPQE9QT2BAcA9AT3BPUEBwD0BPgE9wQHAPQE+QT4BAcA+AT6BPsEBwD4BPkE+gQHAPwE+gT9BAcA/AT7BPoEBwD+BP0E/wQHAP4E/AT9BAcA9gT+BP8EBwD2BPUE/gQHAAAFxgQBBQcAAAXEBMYEBwABBcgEAgUHAAEFxgTIBAcAAgXKBAMFBwACBcgEygQHAMoEBAUDBQcAygTNBAQFBwDNBAUFBAUHAM0EzwQFBQcAzwQABQUFBwDPBMQEAAUHAAYF0AQHBQcABgXTBNAEBwAHBdQECAUHAAcF0ATUBAcA1AQJBQgFBwDUBNcECQUHANcECgUJBQcA1wTZBAoFBwDZBAsFCgUHANkE2gQLBQcACwXTBAYFBwALBdoE0wQHAAwF3AQNBQcADAXfBNwEBwDcBA4FDQUHANwE4QQOBQcA4QQPBQ4FBwDhBOMEDwUHAOMEEAUPBQcA4wTkBBAFBwAQBecEEQUHABAF5ATnBAcAEQXfBAwFBwARBecE3wQHAOkEEgUTBQcA6QTrBBIFBwDrBBQFEgUHAOsE7QQUBQcA7QQVBRQFBwDtBO4EFQUHABUF8QQWBQcAFQXuBPEEBwAWBfIEFwUHABYF8QTyBAcAFwXpBBMFBwAXBfIE6QQHAPUEGAUZBQcA9QT3BBgFBwD3BBoFGAUHAPcE+AQaBQcAGgX7BBsFBwAaBfgE+wQHABsF/AQcBQcAGwX7BPwEBwAcBf4EHQUHABwF/AT+BAcA/gQZBR0FBwD+BPUEGQUHAB4FAQUfBQcAHgUABQEFBwAfBQIFIAUHAB8FAQUCBQcAIAUDBSEFBwAgBQIFAwUHAAMFIgUhBQcAAwUEBSIFBwAEBSMFIgUHAAQFBQUjBQcABQUeBSMFBwAFBQAFHgUHACQFBwUlBQcAJAUGBQcFBwAlBQgFJgUHACUFBwUIBQcACAUnBSYFBwAIBQkFJwUHAAkFKAUnBQcACQUKBSgFBwAKBSkFKAUHAAoFCwUpBQcAKQUGBSQFBwApBQsFBgUHACoFDQUrBQcAKgUMBQ0FBwANBSwFKwUHAA0FDgUsBQcADgUtBSwFBwAOBQ8FLQUHAA8FLgUtBQcADwUQBS4FBwAuBREFLwUHAC4FEAURBQcALwUMBSoFBwAvBREFDAUHABMFMAUxBQcAEwUSBTAFBwASBTIFMAUHABIFFAUyBQcAFAUzBTIFBwAUBRUFMwUHADMFFgU0BQcAMwUVBRYFBwA0BRcFNQUHADQFFgUXBQcANQUTBTEFBwA1BRcFEwUHABkFNgU3BQcAGQUYBTYFBwAYBTgFNgUHABgFGgU4BQcAOAUbBTkFBwA4BRoFGwUHADkFHAU6BQcAOQUbBRwFBwA6BR0FOwUHADoFHAUdBQcAHQU3BTsFBwAdBRkFNwUHALAEHwWzBAcAsAQeBR8FBwCxBB8FIAUHALEEswQfBQcAPAUgBSEFBwA8BbEEIAUHACIFPAUhBQcAIgU9BTwFBwAjBT0FIgUHACMFsgQ9BQcAIwWwBLIEBwAjBR4FsAQHALUEJAUlBQcAtQS3BCQFBwA+BSUFJgUHAD4FtQQlBQcAJwU+BSYFBwAnBT8FPgUHACgFPwUnBQcAKAW2BD8FBwAoBbQEtgQHACgFKQW0BAcAtAQkBbcEBwC0BCkFJAUHAEAFKgUrBQcAQAW5BCoFBwAsBUAFKwUHACwFQQVABQcALQVBBSwFBwAtBboEQQUHAC0FuAS6BAcALQUuBbgEBwC4BC8FuwQHALgELgUvBQcAuQQvBSoFBwC5BLsELwUHADAFQgUxBQcAMAVDBUIFBwAyBUMFMAUHADIFvgRDBQcAMgW8BL4EBwAyBTMFvAQHALwENAW/BAcAvAQzBTQFBwC9BDQFNQUHAL0EvwQ0BQcAQgU1BTEFBwBCBb0ENQUHADYFwAQ3BQcANgXDBMAEBwA2BcEEwwQHADYFOAXBBAcAwQQ5BUQFBwDBBDgFOQUHAEUFOQU6BQcARQVEBTkFBwDCBDoFOwUHAMIERQU6BQcANwXCBDsFBwA3BcAEwgQHADwFsgSxBAcAPAU9BbIEBwA+BbYEtQQHAD4FPwW2BAcAQAW6BLkEBwBABUEFugQHAEQFwgTBBAcARAVFBcIEBwBCBb4EvQQHAEIFQwW+BAcAZAPqBPMEBwBkA2YD6gQHAPMEYgNkAwcA8wTwBGIDBwDsBJ0DtgMHAOwE6ASdAwcA6ARmA50DBwDoBOoEZgMHAPAEmwNiAwcA8ATvBJsDBwDsBJsD7wQHAOwEtgObAwcA0QPeBLADBwDRA+AE3gQHAN4ElwOwAwcA3gTdBJcDBwDdBJUDlwMHAN0E5gSVAwcA5gSTA5UDBwDmBOUEkwMHAOUErwOTAwcA5QTiBK8DBwDgBK8D4gQHAOAE0QOvAwcAywPWBNUEBwDLA6oD1gQHANUEqwPLAwcA1QTSBKsDBwDSBIoDqwMHANIE0QSKAwcA0QSIA4oDBwDRBNsEiAMHANsEhgOIAwcA2wTYBIYDBwDYBKoDhgMHANgE1gSqAwcAzASlA3sDBwDMBMsEpQMHAMsEwwOlAwcAywTJBMMDBwDJBKcDwwMHAMkExQSnAwcAewPOBMwEBwB7A30DzgQHAH0DxwTOBAcAfQN+A8cEBwB+A8UExwQHAH4DpwPFBAcA/wRvA3EDBwD/BP0EbwMHAP0EoANvAwcA/QT6BKADBwD5BKAD+gQHAPkEvAOgAwcA+QShA7wDBwD5BPQEoQMHAPQEcwOhAwcA9AT2BHMDBwD2BHEDcwMHAPYE/wRxAwcARgVHBUgFBwBGBUkFRwUHAEoFSAVLBQcASgVGBUgFBwBMBUsFTQUHAEwFSgVLBQcATgVNBU8FBwBOBUwFTQUHAFAFTwVRBQcAUAVOBU8FBwBSBVEFUwUHAFIFUAVRBQcAVAVTBVUFBwBUBVIFUwUHAFYFVQVXBQcAVgVUBVUFBwBYBVYFVwUHAFgFWQVWBQcAWgVZBVgFBwBaBVsFWQUHAFwFWwVaBQcAXAVdBVsFBwBeBV0FXAUHAF4FXwVdBQcAYAVfBV4FBwBgBWEFXwUHAGIFYQVgBQcAYgVjBWEFBwBkBWMFYgUHAGQFZQVjBQcAZgVlBWQFBwBmBWcFZQUHAGYFaAVnBQcAZgVpBWgFBwBpBWoFaAUHAGkFawVqBQcAawVsBWoFBwBrBW0FbAUHAG0FbgVsBQcAbQVvBW4FBwBvBXAFbgUHAG8FcQVwBQcAcQVyBXAFBwBxBXMFcgUHAHMFdAVyBQcAcwV1BXQFBwB0BXYFdwUHAHQFdQV2BQcAdwV4BXkFBwB3BXYFeAUHAHkFegV7BQcAeQV4BXoFBwB7BXwFfQUHAHsFegV8BQcAfQV+BX8FBwB9BXwFfgUHAH8FgAWBBQcAfwV+BYAFBwCBBUcFSQUHAIEFgAVHBQcAcgV3BYIFBwByBXQFdwUHAHcFewWCBQcAdwV5BXsFBwB7BX8FggUHAHsFfQV/BQcAfwVJBYIFBwB/BYEFSQUHAEkFSgWCBQcASQVGBUoFBwBKBU4FggUHAEoFTAVOBQcATgVSBYIFBwBOBVAFUgUHAFIFVgWCBQcAUgVUBVYFBwBWBVsFggUHAFYFWQVbBQcAWwVfBYIFBwBbBV0FXwUHAF8FYwWCBQcAXwVhBWMFBwBjBWcFggUHAGMFZQVnBQcAZwVqBYIFBwBnBWgFagUHAGoFbgWCBQcAagVsBW4FBwBuBXIFggUHAG4FcAVyBQcAgAWDBUcFBwCABYQFgwUHAEcFhQVIBQcARwWDBYUFBwB+BYQFgAUHAH4FhgWEBQcAfAWGBX4FBwB8BYcFhgUHAHoFhwV8BQcAegWIBYcFBwB4BYgFegUHAHgFiQWIBQcAdgWJBXgFBwB2BYoFiQUHAHUFigV2BQcAdQWLBYoFBwBXBYwFWAUHAFcFjQWMBQcAWAWOBVoFBwBYBYwFjgUHAFUFjQVXBQcAVQWPBY0FBwBTBY8FVQUHAFMFkAWPBQcAUQWQBVMFBwBRBZEFkAUHAE8FkQVRBQcATwWSBZEFBwBNBZIFTwUHAE0FkwWSBQcASwWTBU0FBwBLBZQFkwUHAEgFlAVLBQcASAWFBZQFBwBzBYsFdQUHAHMFlQWLBQcAcQWVBXMFBwBxBZYFlQUHAG8FlgVxBQcAbwWXBZYFBwBtBZcFbwUHAG0FmAWXBQcAawWYBW0FBwBrBZkFmAUHAGkFmQVrBQcAaQWaBZkFBwBmBZoFaQUHAGYFmwWaBQcAZAWbBWYFBwBkBZwFmwUHAGIFnAVkBQcAYgWdBZwFBwBgBZ0FYgUHAGAFngWdBQcAXgWeBWAFBwBeBZ8FngUHAFwFnwVeBQcAXAWgBZ8FBwBaBaAFXAUHAFoFjgWgBQcAhAWhBYMFBwCEBaIFoQUHAIMFowWFBQcAgwWhBaMFBwCGBaIFhAUHAIYFpAWiBQcAhQWlBZQFBwCFBaMFpQUHAIcFpAWGBQcAhwWmBaQFBwCIBaYFhwUHAIgFpwWmBQcAiQWnBYgFBwCJBagFpwUHAIoFqAWJBQcAigWpBagFBwCLBakFigUHAIsFqgWpBQcAlQWqBYsFBwCVBasFqgUHAI0FrAWMBQcAjQWtBawFBwCMBa4FjgUHAIwFrAWuBQcAjwWtBY0FBwCPBa8FrQUHAI4FsAWgBQcAjgWuBbAFBwCQBa8FjwUHAJAFsQWvBQcAkQWxBZAFBwCRBbIFsQUHAJIFsgWRBQcAkgWzBbIFBwCTBbMFkgUHAJMFtAWzBQcAlAW0BZMFBwCUBaUFtAUHAJYFqwWVBQcAlgW1BasFBwCXBbUFlgUHAJcFtgW1BQcAmAW2BZcFBwCYBbcFtgUHAJkFtwWYBQcAmQW4BbcFBwCaBbgFmQUHAJoFuQW4BQcAmwW5BZoFBwCbBboFuQUHAJwFugWbBQcAnAW7BboFBwCdBbsFnAUHAJ0FvAW7BQcAngW8BZ0FBwCeBb0FvAUHAJ8FvQWeBQcAnwW+Bb0FBwCgBb4FnwUHAKAFsAW+BQcAvwXABcEFBwC/BcIFwAUHAMMFwAXCBQcAwwXEBcAFBwDFBcQFwwUHAMUFxgXEBQcAxwXGBcUFBwDHBcgFxgUHAMkFyAXHBQcAyQXKBcgFBwDLBcoFyQUHAMsFzAXKBQcAzQXMBcsFBwDNBc4FzAUHAM8FzQXQBQcAzwXOBc0FBwDRBdAF0gUHANEFzwXQBQcA0wXSBdQFBwDTBdEF0gUHANUF1AXWBQcA1QXTBdQFBwDXBdYF2AUHANcF1QXWBQcA1wXZBdoFBwDXBdgF2QUHANoF2wXcBQcA2gXZBdsFBwDcBd0F3gUHANwF2wXdBQcA3gXfBeAFBwDeBd0F3wUHAOAF4QXiBQcA4AXfBeEFBwDiBeMF5AUHAOIF4QXjBQcA5AXlBeYFBwDkBeMF5QUHAOUF5wXmBQcA5QXoBecFBwDoBekF5wUHAOgF6gXpBQcA6gXrBekFBwDqBewF6wUHAOwF7QXrBQcA7AXuBe0FBwDuBcEF7QUHAO4FvwXBBQcAwQXvBfAFBwDBBcAF7wUHAMAF8QXvBQcAwAXEBfEFBwDEBfIF8QUHAMQFxgXyBQcAxgXzBfIFBwDGBcgF8wUHAMgF9AXzBQcAyAXKBfQFBwDKBfUF9AUHAMoFzAX1BQcAzAX2BfUFBwDMBc4F9gUHAPYFzwX3BQcA9gXOBc8FBwD3BdEF+AUHAPcFzwXRBQcA+AXTBfkFBwD4BdEF0wUHAPkF1QX6BQcA+QXTBdUFBwD6BdcF+wUHAPoF1QXXBQcA+wXaBfwFBwD7BdcF2gUHAPwF3AX9BQcA/AXaBdwFBwD9Bd4F/gUHAP0F3AXeBQcA/gXgBf8FBwD+Bd4F4AUHAP8F4gUABgcA/wXgBeIFBwAABuQFAQYHAAAG4gXkBQcAAQbmBQIGBwABBuQF5gUHAOYFAwYCBgcA5gXnBQMGBwDnBQQGAwYHAOcF6QUEBgcA6QUFBgQGBwDpBesFBQYHAOsFBgYFBgcA6wXtBQYGBwDtBfAFBgYHAO0FwQXwBQcA8AUHBggGBwDwBe8FBwYHAPEFBwbvBQcA8QUJBgcGBwDyBQkG8QUHAPIFCgYJBgcA8wUKBvIFBwDzBQsGCgYHAPQFCwbzBQcA9AUMBgsGBwD1BQwG9AUHAPUFDQYMBgcA9gUNBvUFBwD2BQ4GDQYHAA8G9gX3BQcADwYOBvYFBwAQBvcF+AUHABAGDwb3BQcAEQb4BfkFBwARBhAG+AUHABIG+QX6BQcAEgYRBvkFBwATBvoF+wUHABMGEgb6BQcAEwb8BRQGBwATBvsF/AUHABQG/QUVBgcAFAb8Bf0FBwAVBv4FFgYHABUG/QX+BQcAFgb/BRcGBwAWBv4F/wUHABcGAAYYBgcAFwb/BQAGBwAYBgEGGQYHABgGAAYBBgcAGQYCBhoGBwAZBgEGAgYHAAIGGwYaBgcAAgYDBhsGBwADBhwGGwYHAAMGBAYcBgcABAYdBhwGBwAEBgUGHQYHAAUGHgYdBgcABQYGBh4GBwAGBggGHgYHAAYG8AUIBgcABwYfBggGBwAHBiAGHwYHAAkGIAYHBgcACQYhBiAGBwAKBiEGCQYHAAoGIgYhBgcACwYiBgoGBwALBiMGIgYHAAwGIwYLBgcADAYkBiMGBwANBiQGDAYHAA0GJQYkBgcADgYlBg0GBwAOBiYGJQYHACcGDgYPBgcAJwYmBg4GBwAoBg8GEAYHACgGJwYPBgcAKQYQBhEGBwApBigGEAYHACoGEQYSBgcAKgYpBhEGBwArBhIGEwYHACsGKgYSBgcALAYTBhQGBwAsBisGEwYHAC0GFAYVBgcALQYsBhQGBwAuBhUGFgYHAC4GLQYVBgcALwYWBhcGBwAvBi4GFgYHADAGFwYYBgcAMAYvBhcGBwAxBhgGGQYHADEGMAYYBgcAMgYZBhoGBwAyBjEGGQYHABsGMgYaBgcAGwYzBjIGBwAcBjMGGwYHABwGNAYzBgcAHQY0BhwGBwAdBjUGNAYHAB4GNQYdBgcAHgY2BjUGBwAIBjYGHgYHAAgGHwY2BgcANwY4BjkGBwA3BjoGOAYHADoGOwY4BgcAOgY8BjsGBwA8Bj0GOwYHADwGPgY9BgcAPgY/Bj0GBwA+BkAGPwYHAEAGQQY/BgcAQAZCBkEGBwBCBkMGQQYHAEIGRAZDBgcARAZFBkMGBwBEBkYGRQYHAEUGRwZIBgcARQZGBkcGBwBIBkkGSgYHAEgGRwZJBgcASgZLBkwGBwBKBkkGSwYHAEwGTQZOBgcATAZLBk0GBwBOBk8GUAYHAE4GTQZPBgcAUAZRBlIGBwBQBk8GUQYHAFIGUwZUBgcAUgZRBlMGBwBUBlUGVgYHAFQGUwZVBgcAVgZXBlgGBwBWBlUGVwYHAFgGWQZaBgcAWAZXBlkGBwBaBlsGXAYHAFoGWQZbBgcAXAZdBl4GBwBcBlsGXQYHAF0GXwZeBgcAXQZgBl8GBwBgBmEGXwYHAGAGYgZhBgcAYgZjBmEGBwBiBmQGYwYHAGQGZQZjBgcAZAZmBmUGBwBmBjkGZQYHAGYGNwY5BgcAOAZnBjkGBwA4BmgGZwYHADgGaQZoBgcAOAY7BmkGBwA7BmoGaQYHADsGPQZqBgcAPQZrBmoGBwA9Bj8GawYHAD8GbAZrBgcAPwZBBmwGBwBBBm0GbAYHAEEGQwZtBgcAQwZuBm0GBwBDBkUGbgYHAG4GSAZvBgcAbgZFBkgGBwBvBkoGcAYHAG8GSAZKBgcAcAZMBnEGBwBwBkoGTAYHAHEGTgZyBgcAcQZMBk4GBwByBlAGcwYHAHIGTgZQBgcAdAZQBlIGBwB0BnMGUAYHAHUGUgZUBgcAdQZ0BlIGBwB2BlQGVgYHAHYGdQZUBgcAdwZWBlgGBwB3BnYGVgYHAHgGWAZaBgcAeAZ3BlgGBwB5BloGXAYHAHkGeAZaBgcAegZcBl4GBwB6BnkGXAYHAF8GegZeBgcAXwZ7BnoGBwBhBnsGXwYHAGEGfAZ7BgcAYwZ8BmEGBwBjBn0GfAYHAGUGfQZjBgcAZQZ+Bn0GBwA5Bn4GZQYHADkGZwZ+BgcAZwZ/BoAGBwBnBmgGfwYHAGgGgQZ/BgcAaAZpBoEGBwBpBoIGgQYHAGkGagaCBgcAagaDBoIGBwBqBmsGgwYHAGsGhAaDBgcAawZsBoQGBwBsBoUGhAYHAGwGbQaFBgcAbQaGBoUGBwBtBm4GhgYHAIYGbwaHBgcAhgZuBm8GBwCHBnAGiAYHAIcGbwZwBgcAiAZxBokGBwCIBnAGcQYHAIkGcgaKBgcAiQZxBnIGBwCKBnMGiwYHAIoGcgZzBgcAiwZ0BowGBwCLBnMGdAYHAIwGdQaNBgcAjAZ0BnUGBwCNBnYGjgYHAI0GdQZ2BgcAjgZ3Bo8GBwCOBnYGdwYHAI8GeAaQBgcAjwZ3BngGBwCQBnkGkQYHAJAGeAZ5BgcAkQZ6BpIGBwCRBnkGegYHAHoGkwaSBgcAegZ7BpMGBwB7BpQGkwYHAHsGfAaUBgcAfAaVBpQGBwB8Bn0GlQYHAH0GlgaVBgcAfQZ+BpYGBwB+BoAGlgYHAH4GZwaABgcAgAaXBpgGBwCABn8GlwYHAIEGlwZ/BgcAgQaZBpcGBwCCBpkGgQYHAIIGmgaZBgcAgwaaBoIGBwCDBpsGmgYHAIQGmwaDBgcAhAacBpsGBwCFBpwGhAYHAIUGnQacBgcAhgadBoUGBwCGBp4GnQYHAJ8GhgaHBgcAnwaeBoYGBwCgBocGiAYHAKAGnwaHBgcAoQaIBokGBwChBqAGiAYHAKIGiQaKBgcAogahBokGBwCjBooGiwYHAKMGogaKBgcAowaMBqQGBwCjBosGjAYHAKQGjQalBgcApAaMBo0GBwClBo4GpgYHAKUGjQaOBgcApgaPBqcGBwCmBo4GjwYHAKcGkAaoBgcApwaPBpAGBwCoBpEGqQYHAKgGkAaRBgcAqQaSBqoGBwCpBpEGkgYHAJIGqwaqBgcAkgaTBqsGBwCTBqwGqwYHAJMGlAasBgcAlAatBqwGBwCUBpUGrQYHAJUGrgatBgcAlQaWBq4GBwCWBpgGrgYHAJYGgAaYBgcAmAavBrAGBwCYBpcGrwYHAJcGsQavBgcAlwaZBrEGBwCZBrIGsQYHAJkGmgayBgcAmgazBrIGBwCaBpsGswYHAJsGtAazBgcAmwacBrQGBwCcBrUGtAYHAJwGnQa1BgcAnQa2BrUGBwCdBp4GtgYHALYGnwa3BgcAtgaeBp8GBwC3BqAGuAYHALcGnwagBgcAuAahBrkGBwC4BqAGoQYHALkGoga6BgcAuQahBqIGBwC6BqMGuwYHALoGogajBgcAuwakBrwGBwC7BqMGpAYHALwGpQa9BgcAvAakBqUGBwC9BqYGvgYHAL0GpQamBgcAvganBr8GBwC+BqYGpwYHAL8GqAbABgcAvwanBqgGBwDABqkGwQYHAMAGqAapBgcAwQaqBsIGBwDBBqkGqgYHAKoGwwbCBgcAqgarBsMGBwCrBsQGwwYHAKsGrAbEBgcArAbFBsQGBwCsBq0GxQYHAK0GxgbFBgcArQauBsYGBwCuBrAGxgYHAK4GmAawBgcArwbHBrAGBwCvBsgGxwYHAK8GyQbIBgcArwaxBskGBwCxBsoGyQYHALEGsgbKBgcAsgbLBsoGBwCyBrMGywYHALMGzAbLBgcAswa0BswGBwC0Bs0GzAYHALQGtQbNBgcAtQbOBs0GBwC1BrYGzgYHAM4GtwbPBgcAzga2BrcGBwDPBrgG0AYHAM8Gtwa4BgcA0Aa5BtEGBwDQBrgGuQYHANEGugbSBgcA0Qa5BroGBwDSBrsG0wYHANIGuga7BgcA1Aa7BrwGBwDUBtMGuwYHANUGvAa9BgcA1QbUBrwGBwDWBr0GvgYHANYG1Qa9BgcA1wa+Br8GBwDXBtYGvgYHANgGvwbABgcA2AbXBr8GBwDZBsAGwQYHANkG2AbABgcA2gbBBsIGBwDaBtkGwQYHAMMG2gbCBgcAwwbbBtoGBwDEBtsGwwYHAMQG3AbbBgcAxQbcBsQGBwDFBt0G3AYHAMYG3QbFBgcAxgbeBt0GBwCwBt4GxgYHALAGxwbeBgcA3wYrBiwGBwDfBuAGKwYHAOAGKgYrBgcA4AbhBioGBwDhBikGKgYHAOEG4gYpBgcA4gYoBikGBwDiBuMGKAYHAOMGJwYoBgcA4wbkBicGBwDkBiYGJwYHAOQG5QYmBgcA5QYlBiYGBwDlBuYGJQYHAOYGJAYlBgcA5gbnBiQGBwDnBiMGJAYHAOcG6AYjBgcA6AYiBiMGBwDoBukGIgYHAOkGIQYiBgcA6QbqBiEGBwDqBiAGIQYHAOoG6wYgBgcA6wYfBiAGBwDrBuwGHwYHAOwGNgYfBgcA7AbtBjYGBwDtBjUGNgYHAO0G7gY1BgcA7gY0BjUGBwDuBu8GNAYHAO8GMwY0BgcA7wbwBjMGBwDwBjIGMwYHAPAG8QYyBgcA8QYxBjIGBwDxBvIGMQYHAPIGMAYxBgcA8gbzBjAGBwDzBi8GMAYHAPMG9AYvBgcA9AYuBi8GBwD0BvUGLgYHAPUGLQYuBgcA9Qb2Bi0GBwD2BiwGLQYHAPYG3wYsBgcA9wZRBk8GBwD3BvgGUQYHAOAG+Ab3BgcA4AbfBvgGBwD4BlMGUQYHAPgG+QZTBgcA3wb5BvgGBwDfBvYG+QYHAPkGVQZTBgcA+Qb6BlUGBwD2BvoG+QYHAPYG9Qb6BgcA+gZXBlUGBwD6BvsGVwYHAPUG+wb6BgcA9Qb0BvsGBwD7BlkGVwYHAPsG/AZZBgcA9Ab8BvsGBwD0BvMG/AYHAPwGWwZZBgcA/Ab9BlsGBwDzBv0G/AYHAPMG8gb9BgcA/QZdBlsGBwD9Bv4GXQYHAPIG/gb9BgcA8gbxBv4GBwD+BmAGXQYHAP4G/wZgBgcA8Qb/Bv4GBwDxBvAG/wYHAP8GYgZgBgcA/wYAB2IGBwDwBgAH/wYHAPAG7wYABwcAAAdkBmIGBwAABwEHZAYHAO8GAQcABwcA7wbuBgEHBwABB2YGZAYHAAEHAgdmBgcA7gYCBwEHBwDuBu0GAgcHAAIHNwZmBgcAAgcDBzcGBwDtBgMHAgcHAO0G7AYDBwcAAwc6BjcGBwADBwQHOgYHAOwGBAcDBwcA7AbrBgQHBwAEBzwGOgYHAAQHBQc8BgcA6wYFBwQHBwDrBuoGBQcHAAUHPgY8BgcABQcGBz4GBwDqBgYHBQcHAOoG6QYGBwcABgdABj4GBwAGBwcHQAYHAOkGBwcGBwcA6QboBgcHBwAHB0IGQAYHAAcHCAdCBgcA6AYIBwcHBwDoBucGCAcHAAgHRAZCBgcACAcJB0QGBwDnBgkHCAcHAOcG5gYJBwcACQdGBkQGBwAJBwoHRgYHAOYGCgcJBwcA5gblBgoHBwAKB0cGRgYHAAoHCwdHBgcA5QYLBwoHBwDlBuQGCwcHAAsHSQZHBgcACwcMB0kGBwDkBgwHCwcHAOQG4wYMBwcADAdLBkkGBwAMBw0HSwYHAOMGDQcMBwcA4wbiBg0HBwANB00GSwYHAA0HDgdNBgcA4gYOBw0HBwDiBuEGDgcHAA4HTwZNBgcADgf3Bk8GBwDhBvcGDgcHAOEG4Ab3BgcADwcQBxEHBwAPBxIHEAcHABMHEgcPBwcAEwcUBxIHBwAVBxQHEwcHABUHFgcUBwcAFwcWBxUHBwAXBxgHFgcHABkHGAcXBwcAGQcaBxgHBwAbBxoHGQcHABsHHAcaBwcAHQcbBx4HBwAdBxwHGwcHAB8HHgcgBwcAHwcdBx4HBwAhByAHIgcHACEHHwcgBwcAIwciByQHBwAjByEHIgcHACUHJAcmBwcAJQcjByQHBwAnByYHKAcHACcHJQcmBwcAKQcoByoHBwApBycHKAcHACsHKgcsBwcAKwcpByoHBwAtBywHLgcHAC0HKwcsBwcALwcuBzAHBwAvBy0HLgcHADEHMAcyBwcAMQcvBzAHBwAzBzIHNAcHADMHMQcyBwcANQczBzQHBwA1BzYHMwcHADcHNgc1BwcANwc4BzYHBwA5BzgHNwcHADkHOgc4BwcAOwc6BzkHBwA7BzwHOgcHAD0HPAc7BwcAPQc+BzwHBwARBz4HPQcHABEHEAc+BwcAPgc/B0AHBwA+BxAHPwcHABIHPwcQBwcAEgdBBz8HBwAUB0EHEgcHABQHQgdBBwcAFgdCBxQHBwAWB0MHQgcHABgHQwcWBwcAGAdEB0MHBwAaB0QHGAcHABoHRQdEBwcAHAdFBxoHBwAcB0YHRQcHAEcHHAcdBwcARwdGBxwHBwBIBx0HHwcHAEgHRwcdBwcASQcfByEHBwBJB0gHHwcHAEoHIQcjBwcASgdJByEHBwBLByMHJQcHAEsHSgcjBwcASwcnB0wHBwBLByUHJwcHAEwHKQdNBwcATAcnBykHBwBNBysHTgcHAE0HKQcrBwcATgctB08HBwBOBysHLQcHAE8HLwdQBwcATwctBy8HBwBQBzEHUQcHAFAHLwcxBwcAUQczB1IHBwBRBzEHMwcHADMHUwdSBwcAMwc2B1MHBwA2B1QHUwcHADYHOAdUBwcAOAdVB1QHBwA4BzoHVQcHADoHVgdVBwcAOgc8B1YHBwA8B0AHVgcHADwHPgdABwcAQAdXB1gHBwBABz8HVwcHAD8HWQdXBwcAPwdBB1kHBwBBB1oHWQcHAEEHQgdaBwcAQgdbB1oHBwBCB0MHWwcHAEMHXAdbBwcAQwdEB1wHBwBEB10HXAcHAEQHRQddBwcARQdeB10HBwBFB0YHXgcHAF4HRwdfBwcAXgdGB0cHBwBfB0gHYAcHAF8HRwdIBwcAYAdJB2EHBwBgB0gHSQcHAGEHSgdiBwcAYQdJB0oHBwBiB0sHYwcHAGIHSgdLBwcAYwdMB2QHBwBjB0sHTAcHAGQHTQdlBwcAZAdMB00HBwBlB04HZgcHAGUHTQdOBwcAZgdPB2cHBwBmB04HTwcHAGcHUAdoBwcAZwdPB1AHBwBoB1EHaQcHAGgHUAdRBwcAaQdSB2oHBwBpB1EHUgcHAFIHawdqBwcAUgdTB2sHBwBTB2wHawcHAFMHVAdsBwcAVAdtB2wHBwBUB1UHbQcHAFUHbgdtBwcAVQdWB24HBwBWB1gHbgcHAFYHQAdYBwcAWAdvB3AHBwBYB1cHbwcHAFkHbwdXBwcAWQdxB28HBwBaB3EHWQcHAFoHcgdxBwcAWwdyB1oHBwBbB3MHcgcHAFwHcwdbBwcAXAd0B3MHBwBdB3QHXAcHAF0HdQd0BwcAXgd1B10HBwBeB3YHdQcHAHcHXgdfBwcAdwd2B14HBwB4B18HYAcHAHgHdwdfBwcAeQdgB2EHBwB5B3gHYAcHAHoHYQdiBwcAegd5B2EHBwB7B2IHYwcHAHsHegdiBwcAewdkB3wHBwB7B2MHZAcHAHwHZQd9BwcAfAdkB2UHBwB9B2YHfgcHAH0HZQdmBwcAfgdnB38HBwB+B2YHZwcHAH8HaAeABwcAfwdnB2gHBwCAB2kHgQcHAIAHaAdpBwcAgQdqB4IHBwCBB2kHagcHAGoHgweCBwcAagdrB4MHBwBrB4QHgwcHAGsHbAeEBwcAbAeFB4QHBwBsB20HhQcHAG0HhgeFBwcAbQduB4YHBwBuB3AHhgcHAG4HWAdwBwcAcAeHB4gHBwBwB28HhwcHAG8HiQeHBwcAbwdxB4kHBwBxB4oHiQcHAHEHcgeKBwcAcgeLB4oHBwByB3MHiwcHAHMHjAeLBwcAcwd0B4wHBwB0B40HjAcHAHQHdQeNBwcAdQeOB40HBwB1B3YHjgcHAI4HdwePBwcAjgd2B3cHBwCPB3gHkAcHAI8Hdwd4BwcAkAd5B5EHBwCQB3gHeQcHAJEHegeSBwcAkQd5B3oHBwCSB3sHkwcHAJIHegd7BwcAkwd8B5QHBwCTB3sHfAcHAJQHfQeVBwcAlAd8B30HBwCVB34HlgcHAJUHfQd+BwcAlgd/B5cHBwCWB34HfwcHAJcHgAeYBwcAlwd/B4AHBwCYB4EHmQcHAJgHgAeBBwcAmQeCB5oHBwCZB4EHggcHAIIHmweaBwcAggeDB5sHBwCDB5wHmwcHAIMHhAecBwcAhAedB5wHBwCEB4UHnQcHAIUHngedBwcAhQeGB54HBwCGB4gHngcHAIYHcAeIBwcAhwefB4gHBwCHB6AHnwcHAIcHoQegBwcAhweJB6EHBwCJB6IHoQcHAIkHigeiBwcAigejB6IHBwCKB4sHowcHAIsHpAejBwcAiweMB6QHBwCMB6UHpAcHAIwHjQelBwcAjQemB6UHBwCNB44HpgcHAKYHjwenBwcApgeOB48HBwCnB5AHqAcHAKcHjweQBwcAqAeRB6kHBwCoB5AHkQcHAKkHkgeqBwcAqQeRB5IHBwCqB5MHqwcHAKoHkgeTBwcArAeTB5QHBwCsB6sHkwcHAK0HlAeVBwcArQesB5QHBwCuB5UHlgcHAK4HrQeVBwcArweWB5cHBwCvB64HlgcHALAHlweYBwcAsAevB5cHBwCxB5gHmQcHALEHsAeYBwcAsgeZB5oHBwCyB7EHmQcHAJsHsgeaBwcAmwezB7IHBwCcB7MHmwcHAJwHtAezBwcAnQe0B5wHBwCdB7UHtAcHAJ4HtQedBwcAnge2B7UHBwCIB7YHngcHAIgHnwe2BwcAnwfCBb8FBwCfB6AHwgUHAKAHwwXCBQcAoAehB8MFBwChB8UFwwUHAKEHogfFBQcAogfHBcUFBwCiB6MHxwUHAKMHyQXHBQcAowekB8kFBwCkB8sFyQUHAKQHpQfLBQcApQfNBcsFBwClB6YHzQUHAM0FpwfQBQcAzQWmB6cHBwDQBagH0gUHANAFpweoBwcA0gWpB9QFBwDSBagHqQcHANQFqgfWBQcA1AWpB6oHBwDWBasH2AUHANYFqgerBwcA2AWsB9kFBwDYBasHrAcHANkFrQfbBQcA2QWsB60HBwDbBa4H3QUHANsFrQeuBwcA3QWvB98FBwDdBa4HrwcHAN8FsAfhBQcA3wWvB7AHBwDhBbEH4wUHAOEFsAexBwcA4wWyB+UFBwDjBbEHsgcHALIH6AXlBQcAsgezB+gFBwCzB+oF6AUHALMHtAfqBQcAtAfsBeoFBwC0B7UH7AUHALUH7gXsBQcAtQe2B+4FBwC2B78F7gUHALYHnwe/BQcAxwa3B7gHBwDHBsgGtwcHAMgGuQe3BwcAyAbJBrkHBwDJBroHuQcHAMkGyga6BwcAyga7B7oHBwDKBssGuwcHAMsGvAe7BwcAywbMBrwHBwDMBr0HvAcHAMwGzQa9BwcAzQa+B70HBwDNBs4GvgcHAL4Hzwa/BwcAvgfOBs8GBwC/B9AGwAcHAL8HzwbQBgcAwAfRBsEHBwDAB9AG0QYHAMEH0gbCBwcAwQfRBtIGBwDCB9MGwwcHAMIH0gbTBgcAwwfUBsQHBwDDB9MG1AYHAMQH1QbFBwcAxAfUBtUGBwDFB9YGxgcHAMUH1QbWBgcAxgfXBscHBwDGB9YG1wYHAMcH2AbIBwcAxwfXBtgGBwDIB9kGyQcHAMgH2AbZBgcAyQfaBsoHBwDJB9kG2gYHANoGywfKBwcA2gbbBssHBwDbBswHywcHANsG3AbMBwcA3AbNB8wHBwDcBt0GzQcHAN0GzgfNBwcA3QbeBs4HBwDeBrgHzgcHAN4Gxwa4BwcAtwfPB7gHBwC3B9AHzwcHALcH0QfQBwcAtwe5B9EHBwC5B9IH0QcHALkHugfSBwcAugfTB9IHBwC6B7sH0wcHALsH1AfTBwcAuwe8B9QHBwC8B9UH1AcHALwHvQfVBwcAvQfWB9UHBwC9B74H1gcHANYHvwfXBwcA1ge+B78HBwDXB8AH2AcHANcHvwfABwcA2AfBB9kHBwDYB8AHwQcHANkHwgfaBwcA2QfBB8IHBwDaB8MH2wcHANoHwgfDBwcA3AfDB8QHBwDcB9sHwwcHAN0HxAfFBwcA3QfcB8QHBwDeB8UHxgcHAN4H3QfFBwcA3wfGB8cHBwDfB94HxgcHAOAHxwfIBwcA4AffB8cHBwDhB8gHyQcHAOEH4AfIBwcA4gfJB8oHBwDiB+EHyQcHAMsH4gfKBwcAywfjB+IHBwDMB+MHywcHAMwH5AfjBwcAzQfkB8wHBwDNB+UH5AcHAM4H5QfNBwcAzgfmB+UHBwC4B+YHzgcHALgHzwfmBwcAzwfnB+gHBwDPB9AH5wcHANAH6QfnBwcA0AfRB+kHBwDRB+oH6QcHANEH0gfqBwcA0gfrB+oHBwDSB9MH6wcHANMH7AfrBwcA0wfUB+wHBwDUB+0H7AcHANQH1QftBwcA1QfuB+0HBwDVB9YH7gcHAO4H1wfvBwcA7gfWB9cHBwDvB9gH8AcHAO8H1wfYBwcA8AfZB/EHBwDwB9gH2QcHAPEH2gfyBwcA8QfZB9oHBwDyB9sH8wcHAPIH2gfbBwcA8wfcB/QHBwDzB9sH3AcHAPQH3Qf1BwcA9AfcB90HBwD1B94H9gcHAPUH3QfeBwcA9gffB/cHBwD2B94H3wcHAPcH4Af4BwcA9wffB+AHBwD4B+EH+QcHAPgH4AfhBwcA+QfiB/oHBwD5B+EH4gcHAOIH+wf6BwcA4gfjB/sHBwDjB/wH+wcHAOMH5Af8BwcA5Af9B/wHBwDkB+UH/QcHAOUH/gf9BwcA5QfmB/4HBwDmB+gH/gcHAOYHzwfoBwcA/wcACAEIBwD/BwIIAAgHAAIIAwgACAcAAggECAMIBwAFCAEIBggHAAUI/wcBCAcABwgICAkIBwAHCAoICAgHAAoICwgICAcACggMCAsIBwANCAkIDggHAA0IBwgJCAcADAgPCAsIBwAMCBAIDwgHABEIDggSCAcAEQgNCA4IBwAQCBMIDwgHABAIFAgTCAcAFQgSCBYIBwAVCBEIEggHABQIFwgTCAcAFAgYCBcIBwAZCBYIGggHABkIFQgWCAcABAgaCAMIBwAECBkIGggHABgIBggXCAcAGAgFCAYIBwD/BxsIAggHAP8HHAgbCAcAGwgECAIIBwAbCB0IBAgHAAUIHAj/BwcABQgeCBwIBwAfCAoIBwgHAB8IIAgKCAcACgghCAwIBwAKCCAIIQgHACIIBwgNCAcAIggfCAcIBwAMCCMIEAgHAAwIIQgjCAcAJAgNCBEIBwAkCCIIDQgHABAIJQgUCAcAEAgjCCUIBwAmCBEIFQgHACYIJAgRCAcAFAgnCBgIBwAUCCUIJwgHACgIFQgZCAcAKAgmCBUIBwAdCBkIBAgHAB0IKAgZCAcAGAgeCAUIBwAYCCcIHggHACkIGwgcCAcAKQgqCBsIBwAqCB0IGwgHACoIKwgdCAcALAgcCB4IBwAsCCkIHAgHAC0IIAgfCAcALQguCCAIBwAuCCEIIAgHAC4ILwghCAcAMAgfCCIIBwAwCC0IHwgHAC8IIwghCAcALwgxCCMIBwAyCCIIJAgHADIIMAgiCAcAMQglCCMIBwAxCDMIJQgHADQIJAgmCAcANAgyCCQIBwAzCCcIJQgHADMINQgnCAcANggmCCgIBwA2CDQIJggHACsIKAgdCAcAKwg2CCgIBwA1CB4IJwgHADUILAgeCAcANwgqCCkIBwA3CDgIKggHADgIKwgqCAcAOAg5CCsIBwA6CCkILAgHADoINwgpCAcAOwguCC0IBwA7CDwILggHADwILwguCAcAPAg9CC8IBwA+CC0IMAgHAD4IOwgtCAcAPQgxCC8IBwA9CD8IMQgHAEAIMAgyCAcAQAg+CDAIBwA/CDMIMQgHAD8IQQgzCAcAQggyCDQIBwBCCEAIMggHAEEINQgzCAcAQQhDCDUIBwBECDQINggHAEQIQgg0CAcAOQg2CCsIBwA5CEQINggHAEMILAg1CAcAQwg6CCwIBwBFCDgINwgHAEUIRgg4CAcARgg5CDgIBwBGCEcIOQgHAEgINwg6CAcASAhFCDcIBwBJCDwIOwgHAEkISgg8CAcASgg9CDwIBwBKCEsIPQgHAEwIOwg+CAcATAhJCDsIBwBLCD8IPQgHAEsITQg/CAcATgg+CEAIBwBOCEwIPggHAE0IQQg/CAcATQhPCEEIBwBQCEAIQggHAFAITghACAcATwhDCEEIBwBPCFEIQwgHAFIIQghECAcAUghQCEIIBwBHCEQIOQgHAEcIUghECAcAUQg6CEMIBwBRCEgIOggHAFMIRghFCAcAUwhUCEYIBwBUCEcIRggHAFQIVQhHCAcAVghFCEgIBwBWCFMIRQgHAFcISghJCAcAVwhYCEoIBwBYCEsISggHAFgIWQhLCAcAWghJCEwIBwBaCFcISQgHAFkITQhLCAcAWQhbCE0IBwBcCEwITggHAFwIWghMCAcAWwhPCE0IBwBbCF0ITwgHAF4ITghQCAcAXghcCE4IBwBdCFEITwgHAF0IXwhRCAcAYAhQCFIIBwBgCF4IUAgHAFUIUghHCAcAVQhgCFIIBwBfCEgIUQgHAF8IVghICAcAYQhUCFMIBwBhCGIIVAgHAGIIVQhUCAcAYghjCFUIBwBkCFMIVggHAGQIYQhTCAcAZQhYCFcIBwBlCGYIWAgHAGYIWQhYCAcAZghnCFkIBwBoCFcIWggHAGgIZQhXCAcAZwhbCFkIBwBnCGkIWwgHAGoIWghcCAcAaghoCFoIBwBpCF0IWwgHAGkIawhdCAcAbAhcCF4IBwBsCGoIXAgHAGsIXwhdCAcAawhtCF8IBwBuCF4IYAgHAG4IbAheCAcAYwhgCFUIBwBjCG4IYAgHAG0IVghfCAcAbQhkCFYIBwBvCGIIYQgHAG8IcAhiCAcAcAhjCGIIBwBwCHEIYwgHAHIIYQhkCAcAcghvCGEIBwBzCGYIZQgHAHMIdAhmCAcAdAhnCGYIBwB0CHUIZwgHAHYIZQhoCAcAdghzCGUIBwB1CGkIZwgHAHUIdwhpCAcAeAhoCGoIBwB4CHYIaAgHAHcIawhpCAcAdwh5CGsIBwB6CGoIbAgHAHoIeAhqCAcAeQhtCGsIBwB5CHsIbQgHAHwIbAhuCAcAfAh6CGwIBwBxCG4IYwgHAHEIfAhuCAcAewhkCG0IBwB7CHIIZAgHAH0IcAhvCAcAfQh+CHAIBwB+CHEIcAgHAH4IfwhxCAcAgAhvCHIIBwCACH0IbwgHAIEIdAhzCAcAgQiCCHQIBwCCCHUIdAgHAIIIgwh1CAcAhAhzCHYIBwCECIEIcwgHAIMIdwh1CAcAgwiFCHcIBwCGCHYIeAgHAIYIhAh2CAcAhQh5CHcIBwCFCIcIeQgHAIgIeAh6CAcAiAiGCHgIBwCHCHsIeQgHAIcIiQh7CAcAigh6CHwIBwCKCIgIeggHAH8IfAhxCAcAfwiKCHwIBwCJCHIIewgHAIkIgAhyCAcAiwh+CH0IBwCLCIwIfggHAIwIfwh+CAcAjAiNCH8IBwCOCH0IgAgHAI4Iiwh9CAcAjwiCCIEIBwCPCJAIgggHAJAIgwiCCAcAkAiRCIMIBwCSCIEIhAgHAJIIjwiBCAcAkQiFCIMIBwCRCJMIhQgHAJQIhAiGCAcAlAiSCIQIBwCTCIcIhQgHAJMIlQiHCAcAlgiGCIgIBwCWCJQIhggHAJUIiQiHCAcAlQiXCIkIBwCYCIgIiggHAJgIlgiICAcAjQiKCH8IBwCNCJgIiggHAJcIgAiJCAcAlwiOCIAIBwCZCIwIiwgHAJkImgiMCAcAmgiNCIwIBwCaCJsIjQgHAJwIiwiOCAcAnAiZCIsIBwCdCJAIjwgHAJ0IngiQCAcAngiRCJAIBwCeCJ8IkQgHAKAIjwiSCAcAoAidCI8IBwCfCJMIkQgHAJ8IoQiTCAcAogiSCJQIBwCiCKAIkggHAKEIlQiTCAcAoQijCJUIBwCkCJQIlggHAKQIogiUCAcAowiXCJUIBwCjCKUIlwgHAKYIlgiYCAcApgikCJYIBwCbCJgIjQgHAJsIpgiYCAcApQiOCJcIBwClCJwIjggHAKcImgiZCAcApwioCJoIBwCoCJsImggHAKgIqQibCAcAqgiZCJwIBwCqCKcImQgHAKsIngidCAcAqwisCJ4IBwCsCJ8InggHAKwIrQifCAcArgidCKAIBwCuCKsInQgHAK0IoQifCAcArQivCKEIBwCwCKAIoggHALAIrgigCAcArwijCKEIBwCvCLEIowgHALIIogikCAcAsgiwCKIIBwCxCKUIowgHALEIswilCAcAtAikCKYIBwC0CLIIpAgHAKkIpgibCAcAqQi0CKYIBwCzCJwIpQgHALMIqgicCAcAtQioCKcIBwC1CLYIqAgHALYIqQioCAcAtgi3CKkIBwC4CKcIqggHALgItQinCAcAuQisCKsIBwC5CLoIrAgHALoIrQisCAcAugi7CK0IBwC8CKsIrggHALwIuQirCAcAuwivCK0IBwC7CL0IrwgHAL4IrgiwCAcAvgi8CK4IBwC9CLEIrwgHAL0IvwixCAcAwAiwCLIIBwDACL4IsAgHAL8IswixCAcAvwjBCLMIBwDCCLIItAgHAMIIwAiyCAcAtwi0CKkIBwC3CMIItAgHAMEIqgizCAcAwQi4CKoIBwDDCLYItQgHAMMIxAi2CAcAxAi3CLYIBwDECMUItwgHAMYItQi4CAcAxgjDCLUIBwDHCLoIuQgHAMcIyAi6CAcAyAi7CLoIBwDICMkIuwgHAMoIuQi8CAcAygjHCLkIBwDJCL0IuwgHAMkIywi9CAcAzAi8CL4IBwDMCMoIvAgHAMsIvwi9CAcAywjNCL8IBwDOCL4IwAgHAM4IzAi+CAcAzQjBCL8IBwDNCM8IwQgHANAIwAjCCAcA0AjOCMAIBwDFCMIItwgHAMUI0AjCCAcAzwi4CMEIBwDPCMYIuAgHANEIxAjDCAcA0QjSCMQIBwDSCAEIAAgHANII0QgBCAcA0gjFCMQIBwDSCNMIxQgHANMIAAgDCAcA0wjSCAAIBwDUCMMIxggHANQI0QjDCAcA0QgGCAEIBwDRCNQIBggHANUIyAjHCAcA1QjWCMgIBwDWCNcI2AgHANYI1QjXCAcA1gjJCMgIBwDWCNkIyQgHANkI2AjaCAcA2QjWCNgIBwDbCMcIyggHANsI1QjHCAcA1QjcCNcIBwDVCNsI3AgHANkIywjJCAcA2QjdCMsIBwDdCNoIDwgHAN0I2QjaCAcA3gjKCMwIBwDeCNsIyggHANsIEgjcCAcA2wjeCBIIBwDdCM0IywgHAN0I3wjNCAcA3wgPCBMIBwDfCN0IDwgHAOAIzAjOCAcA4AjeCMwIBwDeCBYIEggHAN4I4AgWCAcA3wjPCM0IBwDfCOEIzwgHAOEIEwgXCAcA4QjfCBMIBwDiCM4I0AgHAOII4AjOCAcA4AgaCBYIBwDgCOIIGggHANMI0AjFCAcA0wjiCNAIBwDiCAMIGggHAOII0wgDCAcA4QjGCM8IBwDhCNQIxggHANQIFwgGCAcA1AjhCBcIBwAwQd0VAAByYXY0LWFsdQDmCgAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCeAJ8AoAChAKIAowCkAKUApgCnAKgAqQCqAKsArACtAK4ArwCwALEAsgCzALQAtQC2ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAOcA6ADpAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8AAAEBAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFnAWgBaQFqAWsBbAFtAW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AgADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8DAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wQABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BQAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEGsgazBrQGtQa2BrcGuAa5BroGuwa8Br0Gvga/BsAGwQbCBsMGxAbFBsYGxwbIBskGygbLBswGzQbOBs8G0AbRBtIG0wbUBtUG1gbXBtgG2QbaBtsG3AbdBt4G3wbgBuEG4gbjBuQG5QbmBucG6AbpBuoG6wbsBu0G7gbvBvAG8QbyBvMG9Ab1BvYG9wb4BvkG+gb7BvwG/Qb+Bv8GAAcBBwIHAwcEBwUHBgcHBwgHCQcKBwsHDAcNBw4HDwcQBxEHEgcTBxQHFQcWBxcHGAcZBxoHGwccBx0HHgcfByAHIQciByMHJAclByYHJwcoBykHKgcrBywHLQcuBy8HMAcxBzIHMwc0BzUHNgc3BzgHOQc6BzsHPAc9Bz4HPwdAB0EHQgdDB0QHRQdGB0cHSAdJB0oHSwdMB00HTgdPB1AHUQdSB1MHVAdVB1YHVwdYB1kHWgdbB1wHXQdeB18HYAdhB2IHYwdkB2UHZgdnB2gHaQdqB2sHbAdtB24HbwdwB3EHcgdzB3QHdQd2B3cHeAd5B3oHewd8B30Hfgd/B4AHgQeCB4MHhAeFB4YHhweIB4kHigeLB4wHjQeOB48HkAeRB5IHkweUB5UHlgeXB5gHmQeaB5sHnAedB54HnwegB6EHogejB6QHpQemB6cHqAepB6oHqwesB60HrgevB7AHsQeyB7MHtAe1B7YHtwe4B7kHuge7B7wHvQe+B78HwAfBB8IHwwfEB8UHxgfHB8gHyQfKB8sHzAfNB84HzwfQB9EH0gfTB9QH1QfWB9cH2AfZB9oH2wfcB90H3gffB+AH4QfiB+MH5AflB+YH5wfoB+kH6gfrB+wH7QfuB+8H8AfxB/IH8wf0B/UH9gf3B/gH+Qf6B/sH/Af9B/4H/wcACAEIAggDCAQIBQgGCAcICAgJCAoICwgMCA0IDggPCBAIEQgSCBMIFAgVCBYIFwgYCBkIGggbCBwIHQgeCB8IIAghCCIIIwgkCCUIJggnCCgIKQgqCCsILAgtCC4ILwgwCDEIMggzCDQINQg2CDcIOAg5CDoIOwg8CD0IPgg/CEAIQQhCCEMIRAhFCEYIRwhICEkISghLCEwITQhOCE8IUAhRCFIIUwhUCFUIVghXCFgIWQhaCFsIXAhdCF4IXwhgCGEIYghjCGQIZQhmCGcIaAhpCGoIawhsCG0IbghvCHAIcQhyCHMIdAh1CHYIdwh4CHkIegh7CHwIfQh+CH8IgAiBCIIIgwiECIUIhgiHCIgIiQiKCIsIjAiNCI4IjwiQCJEIkgiTCJQIlQiWCJcImAiZCJoImwicCJ0IngifCKAIoQiiCKMIpAilCKYIpwioCKkIqgirCKwIrQiuCK8IsAixCLIIswi0CLUItgi3CLgIuQi6CLsIvAi9CL4IvwjACMEIwgjDCMQIxQjGCMcIyAjJCMoIywjMCM0IzgjPCNAI0QjSCNMI1AjVCNYI1wjYCNkI2gjbCNwI3QjeCN8I4AjhCOII4wjkCOUI5gjnCOgI6QjqCOsI7AjtCO4I7wjwCPEI8gjzCPQI9Qj2CPcI+Aj5CPoI+wj8CP0I/gj/CAAJAQkCCQMJBAkFCQYJBwkICQkJCgkLCQwJDQkOCQ8JEAkRCRIJEwkUCRUJFgkXCRgJGQkaCRsJHAkdCR4JHwkgCSEJIgkjCSQJJQkmCScJKAkpCSoJKwksCS0JLgkvCTAJMQkyCTMJNAk1CTYJNwk4CTkJOgk7CTwJPQk+CT8JQAlBCUIJQwlECUUJRglHCUgJSQlKCUsJTAlNCU4JTwlQCVEJUglTCVQJVQlWCVcJWAlZCVoJWwlcCV0JXglfCWAJYQliCWMJZAllCWYJZwloCWkJaglrCWwJbQluCW8JcAlxCXIJcwl0CXUJdgl3CXgJeQl6CXsJfAl9CX4JfwmACYEJggmDCYQJhQmGCYcJiAmJCYoJiwmMCY0JjgmPCZAJkQmSCZMJlAmVCZYJlwmYCZkJmgmbCZwJnQmeCZ8JoAmhCaIJowmkCaUJpgmnCagJqQmqCasJrAmtCa4JrwmwCbEJsgmzCbQJtQm2CbcJuAm5CboJuwm8Cb0Jvgm/CcAJwQnCCcMJxAnFCcYJxwnICckJygnLCcwJzQnOCc8J0AnRCdIJ0wnUCdUJ1gnXCdgJ2QnaCdsJ3AndCd4J3wngCeEJ4gnjCeQJ5QnmCecJ6AnpCeoJ6wnsCe0J7gnvCfAJ8QnyCfMJ9An1CfYJ9wn4CfkJ+gn7CfwJ/Qn+Cf8JAAoBCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4KDwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgorCiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcKSApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpkCmUKZgpnCmgKaQpqCmsKbAptCm4KbwpwCnEKcgpzCnQKdQp2CncKeAp5CnoKewp8Cn0Kfgp/CoAKgQqCCoMKhAqFCoYKhwqICokKigqLCowKjQqOCo8KkAqRCpIKkwqUCpUKlgqXCpgKmQqaCpsKnAqdCp4KnwqgCqEKogqjCqQKpQqmCqcKqAqpCqoKqwqsCq0KrgqvCrAKsQqyCrMKtAq1CrYKtwq4CrkKugq7CrwKvQq+Cr8KwArBCsIKwwrECsUKxgrHCsgKyQrKCssKzArNCs4KzwrQCtEK0grTCtQK1QrWCtcK2ArZCtoK2wrcCt0K3grfCuAK4QriCuMK5ArlCjBB8wQAAHJhdjQtZGlzY3MAcALmCucK6ArpCuoK6wrsCu0K7grvCvAK8QryCvMK9Ar1CvYK9wr4CvkK+gr7CvwK/Qr+Cv8KAAsBCwILAwsECwULBgsHCwgLCQsKCwsLDAsNCw4LDwsQCxELEgsTCxQLFQsWCxcLGAsZCxoLGwscCx0LHgsfCyALIQsiCyMLJAslCyYLJwsoCykLKgsrCywLLQsuCy8LMAsxCzILMws0CzULNgs3CzgLOQs6CzsLPAs9Cz4LPwtAC0ELQgtDC0QLRQtGC0cLSAtJC0oLSwtMC00LTgtPC1ALUQtSC1MLVAtVC1YLVwtYC1kLWgtbC1wLXQteC18LYAthC2ILYwtkC2ULZgtnC2gLaQtqC2sLbAttC24LbwtwC3ELcgtzC3QLdQt2C3cLeAt5C3oLewt8C30Lfgt/C4ALgQuCC4MLhAuFC4YLhwuIC4kLiguLC4wLjQuOC48LkAuRC5ILkwuUC5ULlguXC5gLmQuaC5sLnAudC54LnwugC6ELogujC6QLpQumC6cLqAupC6oLqwusC60LrguvC7ALsQuyC7MLtAu1C7YLtwu4C7kLugu7C7wLvQu+C78LwAvBC8ILwwvEC8ULxgvHC8gLyQvKC8sLzAvNC84LzwvQC9EL0gvTC9QL1QvWC9cL2AvZC9oL2wvcC90L3gvfC+AL4QviC+ML5AvlC+YL5wvoC+kL6gvrC+wL7QvuC+8L8AvxC/IL8wv0C/UL9gv3C/gL+Qv6C/sL/Av9C/4L/wsADAEMAgwDDAQMBQwGDAcMCAwJDAoMCwwMDA0MDgwPDBAMEQwSDBMMFAwVDBYMFwwYDBkMGgwbDBwMHQweDB8MIAwhDCIMIwwkDCUMJgwnDCgMKQwqDCsMLAwtDC4MLwwwDDEMMgwzDDQMNQw2DDcMOAw5DDoMOww8DD0MPgw/DEAMQQxCDEMMRAxFDEYMRwxIDEkMSgxLDEwMTQxODE8MUAxRDFIMUwxUDFUMVgxXDFgMWQxaDFsMXAxdDF4MXwxgDGEMYgxjDGQMZQxmDGcMaAxpDGoMawxsDG0MbgxvDHAMcQxyDHMMdAx1DHYMdwx4DHkMegx7DHwMfQx+DH8MgAyBDIIMgwyEDIUMhgyHDIgMiQyKDIsMjAyNDI4MjwyQDJEMkgyTDJQMlQyWDJcMmAyZDJoMmwycDJ0MngyfDKAMoQyiDKMMpAylDKYMpwyoDKkMqgyrDKwMrQyuDK8MsAyxDLIMswy0DLUMtgy3DLgMuQy6DLsMvAy9DL4MvwzADMEMwgzDDMQMxQzGDMcMyAzJDMoMywzMDM0MzgzPDNAM0QzSDNMM1AzVDNYM1wzYDNkM2gzbDNwM3QzeDN8M4AzhDOIM4wzkDOUM5gznDOgM6QzqDOsM7AztDO4M7wzwDPEM8gzzDPQM9Qz2DPcM+Az5DPoM+wz8DP0M/gz/DAANAQ0CDQMNBA0FDQYNBw0IDQkNCg0LDQwNDQ0ODQ8NEA0RDRINEw0UDRUNFg0XDRgNGQ0aDRsNHA0dDR4NHw0gDSENIg0jDSQNJQ0mDScNKA0pDSoNKw0sDS0NLg0vDTANMQ0yDTMNNA01DTYNNw04DTkNOg07DTwNPQ0+DT8NQA1BDUINQw1EDUUNRg1HDUgNSQ1KDUsNTA1NDU4NTw1QDVENUg1TDVQNVQ0wQdUDAAByYXY0LXNoaWVsZHMA4AFWDVcNWA1ZDVoNWw1cDV0NXg1fDWANYQ1iDWMNZA1lDWYNZw1oDWkNag1rDWwNbQ1uDW8NcA1xDXINcw10DXUNdg13DXgNeQ16DXsNfA19DX4Nfw2ADYENgg2DDYQNhQ2GDYcNiA2JDYoNiw2MDY0Njg2PDZANkQ2SDZMNlA2VDZYNlw2YDZkNmg2bDZwNnQ2eDZ8NoA2hDaINow2kDaUNpg2nDagNqQ2qDasNrA2tDa4Nrw2wDbENsg2zDbQNtQ22DbcNuA25DboNuw28Db0Nvg2/DcANwQ3CDcMNxA3FDcYNxw3IDckNyg3LDcwNzQ3ODc8N0A3RDdIN0w3UDdUN1g3XDdgN2Q3aDdsN3A3dDd4N3w3gDeEN4g3jDeQN5Q3mDecN6A3pDeoN6w3sDe0N7g3vDfAN8Q3yDfMN9A31DfYN9w34DfkN+g37DfwN/Q3+Df8NAA4BDgIOAw4EDgUOBg4HDggOCQ4KDgsODA4NDg4ODw4QDhEOEg4TDhQOFQ4WDhcOGA4ZDhoOGw4cDh0OHg4fDiAOIQ4iDiMOJA4lDiYOJw4oDikOKg4rDiwOLQ4uDi8OMA4xDjIOMw40DjUONg43DjgOOQ46DjsOPA49Dj4OPw5ADkEOQg5DDkQORQ5GDkcOSA5JDkoOSw5MDk0OTg5PDlAOUQ5SDlMOVA5VDlYOVw5YDlkOWg5bDlwOXQ5eDl8OYA5hDmIOYw5kDmUOZg5nDmgOaQ5qDmsObA5tDm4Obw5wDnEOcg5zDnQOdQ52DncOeA55DnoOew58Dn0Ofg5/DoAOgQ6CDoMOhA6FDoYOhw6IDokOig6LDowOjQ6ODo8OkA6RDpIOkw6UDpUOlg6XDpgOmQ6aDpsOnA6dDp4Onw6gDqEOog6jDqQOpQ6mDqcOqA6pDqoOqw6sDq0Org6vDrAOsQ6yDrMOtA61DrYOtw64DrkOug67DrwOvQ6+Dr8OwA7BDsIOww7EDsUOxg7HDsgOyQ7KDssOzA7NDs4Ozw7QDtEO0g7TDtQO1Q7WDtcO2A7ZDtoO2w7cDt0O3g7fDuAO4Q7iDuMO5A7lDuYO5w7oDukO6g7rDuwO7Q7uDu8O8A7xDvIO8w70DvUO9g73DvgO+Q76DvsO/A79Dv4O/w4ADwEPAg8DDwQPBQ8GDwcPCA8JDwoPCw8MDw0PDg8PDxAPEQ8SDxMPFA8VDxYPFw8YDxkPGg8bDxwPHQ8eDx8PIA8hDyIPIw8kDyUPJg8nDygPKQ8qDysPLA8tDy4PLw8wDzEPMg8zDzQPNQ8wQZIDAAByYXY0LXRpcmUAwAE2DzcPOA85DzoPOw88Dz0PPg8/D0APQQ9CD0MPRA9FD0YPRw9ID0kPSg9LD0wPTQ9OD08PUA9RD1IPUw9UD1UPVg9XD1gPWQ9aD1sPXA9dD14PXw9gD2EPYg9jD2QPZQ9mD2cPaA9pD2oPaw9sD20Pbg9vD3APcQ9yD3MPdA91D3YPdw94D3kPeg97D3wPfQ9+D38PgA+BD4IPgw+ED4UPhg+HD4gPiQ+KD4sPjA+ND44Pjw+QD5EPkg+TD5QPlQ+WD5cPmA+ZD5oPmw+cD50Png+fD6APoQ+iD6MPpA+lD6YPpw+oD6kPqg+rD6wPrQ+uD68PsA+xD7IPsw+0D7UPtg+3D7gPuQ+6D7sPvA+9D74Pvw/AD8EPwg/DD8QPxQ/GD8cPyA/JD8oPyw/MD80Pzg/PD9AP0Q/SD9MP1A/VD9YP1w/YD9kP2g/bD9wP3Q/eD98P4A/hD+IP4w/kD+UP5g/nD+gP6Q/qD+sP7A/tD+4P7w/wD/EP8g/zD/QP9Q/2D/cP+A/5D/oP+w/8D/0P/g//DwAQARACEAMQBBAFEAYQBxAIEAkQChALEAwQDRAOEA8QEBAREBIQExAUEBUQFhAXEBgQGRAaEBsQHBAdEB4QHxAgECEQIhAjECQQJRAmECcQKBApECoQKxAsEC0QLhAvEDAQMRAyEDMQNBA1EDYQNxA4EDkQOhA7EDwQPRA+ED8QQBBBEEIQQxBEEEUQRhBHEEgQSRBKEEsQTBBNEE4QTxBQEFEQUhBTEFQQVRBWEFcQWBBZEFoQWxBcEF0QXhBfEGAQYRBiEGMQZBBlEGYQZxBoEGkQahBrEGwQbRBuEG8QcBBxEHIQcxB0EHUQdhB3EHgQeRB6EHsQfBB9EH4QfxCAEIEQghCDEIQQhRCGEIcQiBCJEIoQixCMEI0QjhCPEJAQkRCSEJMQlBCVEJYQlxCYEJkQmhCbEJwQnRCeEJ8QoBChEKIQoxCkEKUQphCnEKgQqRCqEKsQrBCtEK4QrxCwELEQshCzELQQtRC2ELcQuBC5ELoQuxC8EL0QvhC/EMAQwRDCEMMQxBDFEMYQxxDIEMkQyhDLEMwQzRDOEM8Q0BDRENIQ0xDUENUQ1hDXENgQ2RDaENsQ3BDdEN4Q3xDgEOEQ4hDjEOQQ5RDmEOcQ6BDpEOoQ6xDsEO0Q7hDvEPAQ8RDyEPMQ9BD1EFBB3kMAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEA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'; diff --git a/seminar06-planning/simulator/package-lock.json b/seminar06-planning/simulator/package-lock.json new file mode 100644 index 0000000..3ddbdaf --- /dev/null +++ b/seminar06-planning/simulator/package-lock.json @@ -0,0 +1,14441 @@ +{ + "name": "dash", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "dash", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "ncu": "^0.2.1", + "npm": "^10.5.2", + "npm-check-updates": "^16.14.17" + }, + "devDependencies": { + "script-loader": "^0.7.2", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4", + "wrapper-webpack-plugin": "2.2.2" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", + "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.28.tgz", + "integrity": "sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001598", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001598.tgz", + "integrity": "sha512-j8mQRDziG94uoBfeFuqsJUNECW37DXpnvhcMJMdlH2u3MRkq1sAI0LJcXP1i/Py0KbSIC4UDj8YHPrTn5YsL+Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "dependencies": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "dependencies": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "node_modules/css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "engines": { + "node": "*" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dependencies": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.708", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.708.tgz", + "integrity": "sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-glob/node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/fast-glob/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/fast-glob/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/fp-and-or": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz", + "integrity": "sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/htmlparser2/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/htmlparser2/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "dependencies": { + "jju": "^1.1.0" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==" + }, + "node_modules/lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" + }, + "node_modules/lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" + }, + "node_modules/lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==" + }, + "node_modules/lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==" + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/ncu": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ncu/-/ncu-0.2.1.tgz", + "integrity": "sha512-uEOi3lTWbpR2ScjGbg3gRfmIMQjdGh/15bXUBC7MBcUkf4TbB+ozIDWBfpGnEhDUs7lFTYMDERBHFssD2HJM4A==", + "deprecated": "This package has been deprecated, and this is not npm-check-updates", + "dependencies": { + "cheerio": "^0.22.0", + "request": "^2.79.0" + }, + "bin": { + "ncu": "cli.js", + "ncu-weather": "cli.js" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.2.tgz", + "integrity": "sha512-cHVG7QEJwJdZyOrK0dKX5uf3R5Fd0E8AcmSES1jLtO52UT1enUKZ96Onw/xwq4CbrTZEnDuu2Vf9kCQh/Sd12w==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/redact", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.0.2", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/redact": "^1.1.0", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.2", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.2", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.4", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.3.12", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.1", + "ini": "^4.1.2", + "init-package-json": "^6.0.2", + "is-cidr": "^5.0.5", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", + "libnpmhook": "^10.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", + "libnpmsearch": "^7.0.0", + "libnpmteam": "^6.0.0", + "libnpmversion": "^5.0.1", + "make-fetch-happen": "^13.0.0", + "minimatch": "^9.0.4", + "minipass": "^7.0.4", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.1.0", + "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-profile": "^9.0.0", + "npm-registry-fetch": "^16.2.0", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^17.0.6", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^3.0.1", + "semver": "^7.6.0", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.5", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates": { + "version": "16.14.17", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.17.tgz", + "integrity": "sha512-ElnDdXKe60f8S6RhzFeaGuH2TFJmt2cU2HjLdowldabdm27nWFCxV2ebeP3xGbQkzp2+RPDQNdW9HqU1lcY8ag==", + "dependencies": { + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "commander": "^10.0.1", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.4", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^5.1.0", + "ini": "^4.1.1", + "js-yaml": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "lodash": "^4.17.21", + "make-fetch-happen": "^11.1.1", + "minimatch": "^9.0.3", + "p-map": "^4.0.0", + "pacote": "15.2.0", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts-ncu": "^3.0.0", + "rc-config-loader": "^4.1.3", + "remote-git-tags": "^3.0.0", + "rimraf": "^5.0.5", + "semver": "^7.5.4", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^2.0.2", + "strip-ansi": "^7.1.0", + "strip-json-comments": "^5.0.1", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" + }, + "bin": { + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/npm-check-updates/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/npm-check-updates/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-check-updates/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-check-updates/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-check-updates/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.4.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^1.1.0", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.4", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.2.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.2.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "7.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.3.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.1", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.3.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.2", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "5.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "18.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.0.5", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/gauge": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.3.12", + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.0.5", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^4.0.4" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.13.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "2.3.6", + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.0.9", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4", + "tar": "^6.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "7.0.10", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.1", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "proc-log": "^3.0.0", + "read": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "6.0.9", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.0", + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.2.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^16.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "5.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.3", + "@npmcli/run-script": "^7.0.2", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.2.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.0.4", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "10.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "16.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npmlog": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "17.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.10.2", + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.16", + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "2.3.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.17", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/pacote/node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/pacote/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pacote/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/pacote/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pacote/node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/ssri/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/pacote/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts-ncu": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", + "dependencies": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc-config-loader/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/rc-config-loader/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/script-loader": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz", + "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==", + "dev": true, + "dependencies": { + "raw-loader": "~0.5.1" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==" + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sigstore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-please": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.2.tgz", + "integrity": "sha512-KM8coezO6ISQ89c1BzyWNtcn2V2kAVtwIXd3cN/V5a0xPYc1F/vydrRc01wsKFEQ/p+V1a4sw4z2yMITIXrgGw==", + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/terser": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", + "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tuf-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/tuf-js/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/webpack-cli/node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/webpack-cli/node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrapper-webpack-plugin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/wrapper-webpack-plugin/-/wrapper-webpack-plugin-2.2.2.tgz", + "integrity": "sha512-twLGZw0b2AEnz3LmsM/uCFRzGxE+XUlUPlJkCuHY3sI+uGO4dTJsgYee3ufWJaynAZYkpgQSKMSr49n9Yxalzg==", + "dev": true, + "peerDependencies": { + "webpack": ">=2" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", + "requires": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + }, + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "requires": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==" + }, + "@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "requires": { + "which": "^3.0.0" + }, + "dependencies": { + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "dependencies": { + "which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, + "@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==" + }, + "@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "requires": { + "graceful-fs": "4.2.10" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + } + } + }, + "@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "requires": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + } + }, + "@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "requires": { + "@sigstore/protobuf-specs": "^0.2.0" + } + }, + "@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==" + }, + "@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "requires": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + } + }, + "@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "requires": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + } + }, + "@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==" + }, + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + }, + "@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==" + }, + "@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "requires": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@types/eslint": { + "version": "8.56.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", + "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/node": { + "version": "20.11.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.28.tgz", + "integrity": "sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "requires": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "requires": { + "semver": "^7.0.0" + } + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==" + }, + "cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "requires": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + } + }, + "camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==" + }, + "caniuse-lite": { + "version": "1.0.30001598", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001598.tgz", + "integrity": "sha512-j8mQRDziG94uoBfeFuqsJUNECW37DXpnvhcMJMdlH2u3MRkq1sAI0LJcXP1i/Py0KbSIC4UDj8YHPrTn5YsL+Q==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" + }, + "cheerio": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", + "integrity": "sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==", + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash.assignin": "^4.0.9", + "lodash.bind": "^4.1.4", + "lodash.defaults": "^4.0.1", + "lodash.filter": "^4.4.0", + "lodash.flatten": "^4.2.0", + "lodash.foreach": "^4.3.0", + "lodash.map": "^4.4.0", + "lodash.merge": "^4.4.0", + "lodash.pick": "^4.2.1", + "lodash.reduce": "^4.4.0", + "lodash.reject": "^4.4.0", + "lodash.some": "^4.4.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==" + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + } + } + }, + "configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "requires": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + } + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron-to-chromium": { + "version": "1.4.708", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.708.tgz", + "integrity": "sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true + }, + "escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==" + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "requires": { + "reusify": "^1.0.4" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==" + }, + "fp-and-or": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz", + "integrity": "sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw==" + }, + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "requires": { + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==" + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + } + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "requires": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==" + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==" + }, + "ignore-walk": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "requires": { + "minimatch": "^9.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==" + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==" + }, + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true + }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + } + } + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" + }, + "json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "requires": { + "jju": "^1.1.0" + } + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" + }, + "latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "requires": { + "package-json": "^8.1.0" + } + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==" + }, + "lodash.bind": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", + "integrity": "sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==" + }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" + }, + "lodash.reject": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", + "integrity": "sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==" + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==" + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + }, + "make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "requires": { + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "requires": { + "imurmurhash": "^0.1.4" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "requires": { + "encoding": "^0.1.13", + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ncu": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ncu/-/ncu-0.2.1.tgz", + "integrity": "sha512-uEOi3lTWbpR2ScjGbg3gRfmIMQjdGh/15bXUBC7MBcUkf4TbB+ozIDWBfpGnEhDUs7lFTYMDERBHFssD2HJM4A==", + "requires": { + "cheerio": "^0.22.0", + "request": "^2.79.0" + } + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "requires": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "requires": { + "minipass": "^3.1.1" + } + }, + "unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "requires": { + "abbrev": "^1.0.0" + } + }, + "normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "dependencies": { + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "requires": { + "lru-cache": "^7.5.1" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + } + } + }, + "normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==" + }, + "npm": { + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.2.tgz", + "integrity": "sha512-cHVG7QEJwJdZyOrK0dKX5uf3R5Fd0E8AcmSES1jLtO52UT1enUKZ96Onw/xwq4CbrTZEnDuu2Vf9kCQh/Sd12w==", + "requires": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.0.2", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/redact": "^1.1.0", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.2", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.2", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.4", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.3.12", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.1", + "ini": "^4.1.2", + "init-package-json": "^6.0.2", + "is-cidr": "^5.0.5", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", + "libnpmhook": "^10.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", + "libnpmsearch": "^7.0.0", + "libnpmteam": "^6.0.0", + "libnpmversion": "^5.0.1", + "make-fetch-happen": "^13.0.0", + "minimatch": "^9.0.4", + "minipass": "^7.0.4", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.1.0", + "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-profile": "^9.0.0", + "npm-registry-fetch": "^16.2.0", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^17.0.6", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^3.0.1", + "semver": "^7.6.0", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.5", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "bundled": true, + "optional": true + }, + "@isaacs/cliui": { + "version": "8.0.2", + "bundled": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "bundled": true + }, + "emoji-regex": { + "version": "9.2.2", + "bundled": true + }, + "string-width": { + "version": "5.1.2", + "bundled": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "bundled": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "bundled": true + }, + "@npmcli/agent": { + "version": "2.2.2", + "bundled": true, + "requires": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + } + }, + "@npmcli/arborist": { + "version": "7.4.2", + "bundled": true, + "requires": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^1.1.0", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.4", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.2.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + } + }, + "@npmcli/config": { + "version": "8.2.2", + "bundled": true, + "requires": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + } + }, + "@npmcli/disparity-colors": { + "version": "3.0.0", + "bundled": true, + "requires": { + "ansi-styles": "^4.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "@npmcli/fs": { + "version": "3.1.0", + "bundled": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "5.0.5", + "bundled": true, + "requires": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + } + }, + "@npmcli/installed-package-contents": { + "version": "2.0.2", + "bundled": true, + "requires": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "@npmcli/map-workspaces": { + "version": "3.0.6", + "bundled": true, + "requires": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + } + }, + "@npmcli/metavuln-calculator": { + "version": "7.0.0", + "bundled": true, + "requires": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" + } + }, + "@npmcli/name-from-folder": { + "version": "2.0.0", + "bundled": true + }, + "@npmcli/node-gyp": { + "version": "3.0.0", + "bundled": true + }, + "@npmcli/package-json": { + "version": "5.0.2", + "bundled": true, + "requires": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + } + }, + "@npmcli/promise-spawn": { + "version": "7.0.1", + "bundled": true, + "requires": { + "which": "^4.0.0" + } + }, + "@npmcli/query": { + "version": "3.1.0", + "bundled": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "@npmcli/redact": { + "version": "1.1.0", + "bundled": true + }, + "@npmcli/run-script": { + "version": "7.0.4", + "bundled": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "bundled": true, + "optional": true + }, + "@sigstore/bundle": { + "version": "2.3.1", + "bundled": true, + "requires": { + "@sigstore/protobuf-specs": "^0.3.1" + } + }, + "@sigstore/core": { + "version": "1.1.0", + "bundled": true + }, + "@sigstore/protobuf-specs": { + "version": "0.3.1", + "bundled": true + }, + "@sigstore/sign": { + "version": "2.3.0", + "bundled": true, + "requires": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.0" + } + }, + "@sigstore/tuf": { + "version": "2.3.2", + "bundled": true, + "requires": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" + } + }, + "@sigstore/verify": { + "version": "1.2.0", + "bundled": true, + "requires": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + } + }, + "@tufjs/canonical-json": { + "version": "2.0.0", + "bundled": true + }, + "@tufjs/models": { + "version": "2.0.0", + "bundled": true, + "requires": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + } + }, + "abbrev": { + "version": "2.0.0", + "bundled": true + }, + "agent-base": { + "version": "7.1.1", + "bundled": true, + "requires": { + "debug": "^4.3.4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "bundled": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "bundled": true + }, + "ansi-styles": { + "version": "6.2.1", + "bundled": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "4.0.2", + "bundled": true + }, + "balanced-match": { + "version": "1.0.2", + "bundled": true + }, + "bin-links": { + "version": "4.0.3", + "bundled": true, + "requires": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + } + }, + "binary-extensions": { + "version": "2.3.0", + "bundled": true + }, + "brace-expansion": { + "version": "2.0.1", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "builtins": { + "version": "5.1.0", + "bundled": true, + "requires": { + "semver": "^7.0.0" + } + }, + "cacache": { + "version": "18.0.2", + "bundled": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + } + }, + "chalk": { + "version": "5.3.0", + "bundled": true + }, + "chownr": { + "version": "2.0.0", + "bundled": true + }, + "ci-info": { + "version": "4.0.0", + "bundled": true + }, + "cidr-regex": { + "version": "4.0.5", + "bundled": true, + "requires": { + "ip-regex": "^5.0.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "bundled": true + }, + "cli-columns": { + "version": "4.0.0", + "bundled": true, + "requires": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + } + }, + "cli-table3": { + "version": "0.6.4", + "bundled": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "cmd-shim": { + "version": "6.0.2", + "bundled": true + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true + }, + "color-support": { + "version": "1.1.3", + "bundled": true + }, + "columnify": { + "version": "1.6.0", + "bundled": true, + "requires": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + } + }, + "common-ancestor-path": { + "version": "1.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "cross-spawn": { + "version": "7.0.3", + "bundled": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cssesc": { + "version": "3.0.0", + "bundled": true + }, + "debug": { + "version": "4.3.4", + "bundled": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "bundled": true + } + } + }, + "defaults": { + "version": "1.0.4", + "bundled": true, + "requires": { + "clone": "^1.0.2" + } + }, + "diff": { + "version": "5.2.0", + "bundled": true + }, + "eastasianwidth": { + "version": "0.2.0", + "bundled": true + }, + "emoji-regex": { + "version": "8.0.0", + "bundled": true + }, + "encoding": { + "version": "0.1.13", + "bundled": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "bundled": true + }, + "err-code": { + "version": "2.0.3", + "bundled": true + }, + "exponential-backoff": { + "version": "3.1.1", + "bundled": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "bundled": true + }, + "foreground-child": { + "version": "3.1.1", + "bundled": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "fs-minipass": { + "version": "3.0.3", + "bundled": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "function-bind": { + "version": "1.1.2", + "bundled": true + }, + "gauge": { + "version": "5.0.1", + "bundled": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "glob": { + "version": "10.3.12", + "bundled": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + } + }, + "graceful-fs": { + "version": "4.2.11", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hasown": { + "version": "2.0.2", + "bundled": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "bundled": true, + "requires": { + "lru-cache": "^10.0.1" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "bundled": true + }, + "http-proxy-agent": { + "version": "7.0.2", + "bundled": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.4", + "bundled": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.6.3", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore-walk": { + "version": "6.0.4", + "bundled": true, + "requires": { + "minimatch": "^9.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "4.0.0", + "bundled": true + }, + "ini": { + "version": "4.1.2", + "bundled": true + }, + "init-package-json": { + "version": "6.0.2", + "bundled": true, + "requires": { + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + } + }, + "ip-address": { + "version": "9.0.5", + "bundled": true, + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.3", + "bundled": true + } + } + }, + "ip-regex": { + "version": "5.0.0", + "bundled": true + }, + "is-cidr": { + "version": "5.0.5", + "bundled": true, + "requires": { + "cidr-regex": "^4.0.4" + } + }, + "is-core-module": { + "version": "2.13.1", + "bundled": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true + }, + "is-lambda": { + "version": "1.0.1", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "jackspeak": { + "version": "2.3.6", + "bundled": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jsbn": { + "version": "1.1.0", + "bundled": true + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "bundled": true + }, + "json-stringify-nice": { + "version": "1.1.4", + "bundled": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "just-diff": { + "version": "6.0.2", + "bundled": true + }, + "just-diff-apply": { + "version": "5.5.0", + "bundled": true + }, + "libnpmaccess": { + "version": "8.0.3", + "bundled": true, + "requires": { + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.2.0" + } + }, + "libnpmdiff": { + "version": "6.0.9", + "bundled": true, + "requires": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4", + "tar": "^6.2.1" + } + }, + "libnpmexec": { + "version": "7.0.10", + "bundled": true, + "requires": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.1", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "proc-log": "^3.0.0", + "read": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + } + }, + "libnpmfund": { + "version": "5.0.7", + "bundled": true, + "requires": { + "@npmcli/arborist": "^7.2.1" + } + }, + "libnpmhook": { + "version": "10.0.2", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.2.0" + } + }, + "libnpmorg": { + "version": "6.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.2.0" + } + }, + "libnpmpack": { + "version": "6.0.9", + "bundled": true, + "requires": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4" + } + }, + "libnpmpublish": { + "version": "9.0.5", + "bundled": true, + "requires": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.0", + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.2.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.5" + } + }, + "libnpmsearch": { + "version": "7.0.2", + "bundled": true, + "requires": { + "npm-registry-fetch": "^16.2.0" + } + }, + "libnpmteam": { + "version": "6.0.2", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.2.0" + } + }, + "libnpmversion": { + "version": "5.0.2", + "bundled": true, + "requires": { + "@npmcli/git": "^5.0.3", + "@npmcli/run-script": "^7.0.2", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + } + }, + "lru-cache": { + "version": "10.2.0", + "bundled": true + }, + "make-fetch-happen": { + "version": "13.0.0", + "bundled": true, + "requires": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "bundled": true + }, + "minipass-collect": { + "version": "2.0.1", + "bundled": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "minipass-fetch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minizlib": { + "version": "2.1.2", + "bundled": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "bundled": true + }, + "ms": { + "version": "2.1.3", + "bundled": true + }, + "mute-stream": { + "version": "1.0.0", + "bundled": true + }, + "negotiator": { + "version": "0.6.3", + "bundled": true + }, + "node-gyp": { + "version": "10.1.0", + "bundled": true, + "requires": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + } + }, + "nopt": { + "version": "7.2.0", + "bundled": true, + "requires": { + "abbrev": "^2.0.0" + } + }, + "normalize-package-data": { + "version": "6.0.0", + "bundled": true, + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-audit-report": { + "version": "5.0.0", + "bundled": true + }, + "npm-bundled": { + "version": "3.0.0", + "bundled": true, + "requires": { + "npm-normalize-package-bin": "^3.0.0" + } + }, + "npm-install-checks": { + "version": "6.3.0", + "bundled": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "3.0.1", + "bundled": true + }, + "npm-package-arg": { + "version": "11.0.1", + "bundled": true, + "requires": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-packlist": { + "version": "8.0.2", + "bundled": true, + "requires": { + "ignore-walk": "^6.0.4" + } + }, + "npm-pick-manifest": { + "version": "9.0.0", + "bundled": true, + "requires": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + } + }, + "npm-profile": { + "version": "9.0.0", + "bundled": true, + "requires": { + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0" + } + }, + "npm-registry-fetch": { + "version": "16.2.0", + "bundled": true, + "requires": { + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" + } + }, + "npm-user-validate": { + "version": "2.0.0", + "bundled": true + }, + "npmlog": { + "version": "7.0.1", + "bundled": true, + "requires": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + } + }, + "p-map": { + "version": "4.0.0", + "bundled": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pacote": { + "version": "17.0.6", + "bundled": true, + "requires": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + } + }, + "parse-conflict-json": { + "version": "3.0.1", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + } + }, + "path-key": { + "version": "3.1.1", + "bundled": true + }, + "path-scurry": { + "version": "1.10.2", + "bundled": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.16", + "bundled": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "proc-log": { + "version": "3.0.0", + "bundled": true + }, + "promise-all-reject-late": { + "version": "1.0.1", + "bundled": true + }, + "promise-call-limit": { + "version": "3.0.1", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "promise-retry": { + "version": "2.0.1", + "bundled": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "promzard": { + "version": "1.0.1", + "bundled": true, + "requires": { + "read": "^3.0.1" + } + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true + }, + "read": { + "version": "3.0.1", + "bundled": true, + "requires": { + "mute-stream": "^1.0.0" + } + }, + "read-cmd-shim": { + "version": "4.0.0", + "bundled": true + }, + "read-package-json": { + "version": "7.0.0", + "bundled": true, + "requires": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "read-package-json-fast": { + "version": "3.0.2", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "retry": { + "version": "0.12.0", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "semver": { + "version": "7.6.0", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "shebang-command": { + "version": "2.0.0", + "bundled": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "bundled": true + }, + "signal-exit": { + "version": "4.1.0", + "bundled": true + }, + "sigstore": { + "version": "2.3.0", + "bundled": true, + "requires": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + } + }, + "smart-buffer": { + "version": "4.2.0", + "bundled": true + }, + "socks": { + "version": "2.8.3", + "bundled": true, + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.3", + "bundled": true, + "requires": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + } + }, + "spdx-correct": { + "version": "3.2.0", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + }, + "dependencies": { + "spdx-expression-parse": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + } + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "4.0.0", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.17", + "bundled": true + }, + "ssri": { + "version": "10.0.5", + "bundled": true, + "requires": { + "minipass": "^7.0.3" + } + }, + "string-width": { + "version": "4.2.3", + "bundled": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "bundled": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "9.4.0", + "bundled": true + }, + "tar": { + "version": "6.2.1", + "bundled": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass": { + "version": "5.0.0", + "bundled": true + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true + }, + "treeverse": { + "version": "3.0.0", + "bundled": true + }, + "tuf-js": { + "version": "2.2.0", + "bundled": true, + "requires": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + } + }, + "unique-filename": { + "version": "3.0.0", + "bundled": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + }, + "dependencies": { + "spdx-expression-parse": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + } + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "bundled": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "walk-up-path": { + "version": "3.0.1", + "bundled": true + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "4.0.0", + "bundled": true, + "requires": { + "isexe": "^3.1.1" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "bundled": true + } + } + }, + "wide-align": { + "version": "1.1.5", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "bundled": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "bundled": true + }, + "emoji-regex": { + "version": "9.2.2", + "bundled": true + }, + "string-width": { + "version": "5.1.2", + "bundled": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "bundled": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "bundled": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "requires": { + "color-convert": "^2.0.1" + } + } + } + }, + "write-file-atomic": { + "version": "5.0.1", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "requires": { + "npm-normalize-package-bin": "^3.0.0" + } + }, + "npm-check-updates": { + "version": "16.14.17", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.17.tgz", + "integrity": "sha512-ElnDdXKe60f8S6RhzFeaGuH2TFJmt2cU2HjLdowldabdm27nWFCxV2ebeP3xGbQkzp2+RPDQNdW9HqU1lcY8ag==", + "requires": { + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "commander": "^10.0.1", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.4", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^5.1.0", + "ini": "^4.1.1", + "js-yaml": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "lodash": "^4.17.21", + "make-fetch-happen": "^11.1.1", + "minimatch": "^9.0.3", + "p-map": "^4.0.0", + "pacote": "15.2.0", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts-ncu": "^3.0.0", + "rc-config-loader": "^4.1.3", + "remote-git-tags": "^3.0.0", + "rimraf": "^5.0.5", + "semver": "^7.5.4", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^2.0.2", + "strip-ansi": "^7.1.0", + "strip-json-comments": "^5.0.1", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "requires": { + "glob": "^10.3.7" + } + } + } + }, + "npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==" + }, + "npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "requires": { + "lru-cache": "^7.5.1" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + } + } + }, + "npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "requires": { + "ignore-walk": "^6.0.0" + } + }, + "npm-pick-manifest": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", + "requires": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + } + }, + "npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "requires": { + "boolbase": "~1.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "requires": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + } + }, + "pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "requires": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "requires": { + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } + } + }, + "unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "requires": { + "imurmurhash": "^0.1.4" + } + } + } + }, + "parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" + } + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "prompts-ncu": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", + "requires": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "requires": { + "escape-goat": "^4.0.0" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + } + } + }, + "rc-config-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", + "requires": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", + "requires": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "requires": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "requires": { + "resolve": "^1.20.0" + } + }, + "registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "requires": { + "@pnpm/npm-conf": "^2.1.0" + } + }, + "registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "requires": { + "rc": "1.2.8" + } + }, + "remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "requires": { + "lowercase-keys": "^3.0.0" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "script-loader": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz", + "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==", + "dev": true, + "requires": { + "raw-loader": "~0.5.1" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "requires": { + "semver": "^7.3.5" + } + }, + "semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==" + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "sigstore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "requires": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "spawn-please": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.2.tgz", + "integrity": "sha512-KM8coezO6ISQ89c1BzyWNtcn2V2kAVtwIXd3cN/V5a0xPYc1F/vydrRc01wsKFEQ/p+V1a4sw4z2yMITIXrgGw==", + "requires": { + "cross-spawn": "^7.0.3" + } + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + }, + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + } + } + }, + "strip-json-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "terser": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", + "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + } + } + }, + "tuf-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", + "requires": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "requires": { + "crypto-random-string": "^4.0.0" + } + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "requires": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "requires": { + "builtins": "^5.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "requires": {} + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "requires": { + "string-width": "^5.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + } + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrapper-webpack-plugin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/wrapper-webpack-plugin/-/wrapper-webpack-plugin-2.2.2.tgz", + "integrity": "sha512-twLGZw0b2AEnz3LmsM/uCFRzGxE+XUlUPlJkCuHY3sI+uGO4dTJsgYee3ufWJaynAZYkpgQSKMSr49n9Yxalzg==", + "dev": true, + "requires": {} + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + } + } +} diff --git a/seminar06-planning/simulator/package.json b/seminar06-planning/simulator/package.json new file mode 100644 index 0000000..fd569d4 --- /dev/null +++ b/seminar06-planning/simulator/package.json @@ -0,0 +1,22 @@ +{ + "name": "dash", + "version": "1.0.0", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "webpack", + "watch": "webpack --watch" + }, + "author": "Matt Bradley", + "license": "MIT", + "devDependencies": { + "script-loader": "^0.7.2", + "webpack": "^5.90.3", + "webpack-cli": "^5.1.4", + "wrapper-webpack-plugin": "2.2.2" + }, + "dependencies": { + "ncu": "^0.2.1", + "npm": "^10.5.2", + "npm-check-updates": "^16.14.17" + } +} diff --git a/seminar06-planning/simulator/vendor/THREE.MeshLine.js b/seminar06-planning/simulator/vendor/THREE.MeshLine.js new file mode 100644 index 0000000..30cd068 --- /dev/null +++ b/seminar06-planning/simulator/vendor/THREE.MeshLine.js @@ -0,0 +1,477 @@ +;(function() { + +"use strict"; + +var root = this + +var has_require = typeof require !== 'undefined' + +var THREE = root.THREE || has_require && require('three') +if( !THREE ) + throw new Error( 'MeshLine requires three.js' ) + +function MeshLine() { + + this.positions = []; + + this.previous = []; + this.next = []; + this.side = []; + this.width = []; + this.indices_array = []; + this.uvs = []; + this.counters = []; + this.geometry = new THREE.BufferGeometry(); + + this.widthCallback = null; + +} + +MeshLine.prototype.setGeometry = function( g, c ) { + + this.widthCallback = c; + + this.positions = []; + this.counters = []; + + if( g instanceof THREE.Geometry ) { + for( var j = 0; j < g.vertices.length; j++ ) { + var v = g.vertices[ j ]; + var c = j/g.vertices.length; + this.positions.push( v.x, v.y, v.z ); + this.positions.push( v.x, v.y, v.z ); + this.counters.push(c); + this.counters.push(c); + } + } + + if( g instanceof THREE.BufferGeometry ) { + // read attribute positions ? + } + + if( g instanceof Float32Array || g instanceof Array ) { + for( var j = 0; j < g.length; j += 3 ) { + var c = j/g.length; + this.positions.push( g[ j ], g[ j + 1 ], g[ j + 2 ] ); + this.positions.push( g[ j ], g[ j + 1 ], g[ j + 2 ] ); + this.counters.push(c); + this.counters.push(c); + } + } + + this.process(); + +} + +MeshLine.prototype.compareV3 = function( a, b ) { + + var aa = a * 6; + var ab = b * 6; + return ( this.positions[ aa ] === this.positions[ ab ] ) && ( this.positions[ aa + 1 ] === this.positions[ ab + 1 ] ) && ( this.positions[ aa + 2 ] === this.positions[ ab + 2 ] ); + +} + +MeshLine.prototype.copyV3 = function( a ) { + + var aa = a * 6; + return [ this.positions[ aa ], this.positions[ aa + 1 ], this.positions[ aa + 2 ] ]; + +} + +MeshLine.prototype.process = function() { + + var l = this.positions.length / 6; + + this.previous = []; + this.next = []; + this.side = []; + this.width = []; + this.indices_array = []; + this.uvs = []; + + for( var j = 0; j < l; j++ ) { + this.side.push( 1 ); + this.side.push( -1 ); + } + + var w; + for( var j = 0; j < l; j++ ) { + if( this.widthCallback ) w = this.widthCallback( j / ( l -1 ) ); + else w = 1; + this.width.push( w ); + this.width.push( w ); + } + + for( var j = 0; j < l; j++ ) { + this.uvs.push( j / ( l - 1 ), 0 ); + this.uvs.push( j / ( l - 1 ), 1 ); + } + + var v; + + if( this.compareV3( 0, l - 1 ) ){ + v = this.copyV3( l - 2 ); + } else { + v = this.copyV3( 0 ); + } + this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + for( var j = 0; j < l - 1; j++ ) { + v = this.copyV3( j ); + this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + } + + for( var j = 1; j < l; j++ ) { + v = this.copyV3( j ); + this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + } + + if( this.compareV3( l - 1, 0 ) ){ + v = this.copyV3( 1 ); + } else { + v = this.copyV3( l - 1 ); + } + this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); + + for( var j = 0; j < l - 1; j++ ) { + var n = j * 2; + this.indices_array.push( n, n + 1, n + 2 ); + this.indices_array.push( n + 2, n + 1, n + 3 ); + } + + if (!this.attributes) { + this.attributes = { + position: new THREE.BufferAttribute( new Float32Array( this.positions ), 3 ), + previous: new THREE.BufferAttribute( new Float32Array( this.previous ), 3 ), + next: new THREE.BufferAttribute( new Float32Array( this.next ), 3 ), + side: new THREE.BufferAttribute( new Float32Array( this.side ), 1 ), + width: new THREE.BufferAttribute( new Float32Array( this.width ), 1 ), + uv: new THREE.BufferAttribute( new Float32Array( this.uvs ), 2 ), + index: new THREE.BufferAttribute( new Uint16Array( this.indices_array ), 1 ), + counters: new THREE.BufferAttribute( new Float32Array( this.counters ), 1 ) + } + } else { + this.attributes.position.copyArray(new Float32Array(this.positions)); + this.attributes.position.needsUpdate = true; + this.attributes.previous.copyArray(new Float32Array(this.previous)); + this.attributes.previous.needsUpdate = true; + this.attributes.next.copyArray(new Float32Array(this.next)); + this.attributes.next.needsUpdate = true; + this.attributes.side.copyArray(new Float32Array(this.side)); + this.attributes.side.needsUpdate = true; + this.attributes.width.copyArray(new Float32Array(this.width)); + this.attributes.width.needsUpdate = true; + this.attributes.uv.copyArray(new Float32Array(this.uvs)); + this.attributes.uv.needsUpdate = true; + this.attributes.index.copyArray(new Uint16Array(this.indices_array)); + this.attributes.index.needsUpdate = true; + } + + this.geometry.addAttribute( 'position', this.attributes.position ); + this.geometry.addAttribute( 'previous', this.attributes.previous ); + this.geometry.addAttribute( 'next', this.attributes.next ); + this.geometry.addAttribute( 'side', this.attributes.side ); + this.geometry.addAttribute( 'width', this.attributes.width ); + this.geometry.addAttribute( 'uv', this.attributes.uv ); + this.geometry.addAttribute( 'counters', this.attributes.counters ); + + this.geometry.setIndex( this.attributes.index ); + +} + +function memcpy (src, srcOffset, dst, dstOffset, length) { + var i + + src = src.subarray || src.slice ? src : src.buffer + dst = dst.subarray || dst.slice ? dst : dst.buffer + + src = srcOffset ? src.subarray ? + src.subarray(srcOffset, length && srcOffset + length) : + src.slice(srcOffset, length && srcOffset + length) : src + + if (dst.set) { + dst.set(src, dstOffset) + } else { + for (i=0; i.control{-ms-flex-negative:0;flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.field.is-grouped.is-grouped-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.field.is-grouped.is-grouped-multiline{-ms-flex-wrap:wrap;flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width:769px),print{.field.is-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width:769px),print{.field-label{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width:769px),print{.field-body{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:5;-ms-flex-positive:5;flex-grow:5;-ms-flex-negative:1;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{-ms-flex-negative:1;flex-shrink:1}.field-body>.field:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{font-size:1rem;position:relative;text-align:left}.control.has-icon .icon{color:#dbdbdb;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icon .input:focus+.icon{color:#7a7a7a}.control.has-icon .input.is-small+.icon{font-size:.75rem}.control.has-icon .input.is-medium+.icon{font-size:1.25rem}.control.has-icon .input.is-large+.icon{font-size:1.5rem}.control.has-icon:not(.has-icon-right) .icon{left:0}.control.has-icon:not(.has-icon-right) .input{padding-left:2.25em}.control.has-icon.has-icon-right .icon{right:0}.control.has-icon.has-icon-right .input{padding-right:2.25em}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#7a7a7a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.25em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.25em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em;position:absolute!important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:290486px}.image.is-16by9 img,.image.is-1by1 img,.image.is-2by1 img,.image.is-3by2 img,.image.is-4by3 img,.image.is-square img{bottom:0;left:0;position:absolute;right:0;top:0;height:100%;width:100%}.image.is-1by1,.image.is-square{padding-top:100%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:3px;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.notification:not(:last-child){margin-bottom:1.5rem}.notification a:not(.button){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:0 0}.notification>.delete{position:absolute;right:.5rem;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:#363636}.notification.is-dark{background-color:#363636;color:#f5f5f5}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-link{background-color:#3273dc;color:#fff}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-success{background-color:#23d160;color:#fff}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.notification.is-danger{background-color:#ff3860;color:#fff}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress:not(:last-child){margin-bottom:1.5rem}.progress::-webkit-progress-bar{background-color:#dbdbdb}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-link::-webkit-progress-value{background-color:#3273dc}.progress.is-link::-moz-progress-bar{background-color:#3273dc}.progress.is-link::-ms-fill{background-color:#3273dc}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-success::-webkit-progress-value{background-color:#23d160}.progress.is-success::-moz-progress-bar{background-color:#23d160}.progress.is-success::-ms-fill{background-color:#23d160}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-danger::-webkit-progress-value{background-color:#ff3860}.progress.is-danger::-moz-progress-bar{background-color:#ff3860}.progress.is-danger::-ms-fill{background-color:#ff3860}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}.table{background-color:#fff;color:#363636;margin-bottom:1.5rem}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#f5f5f5}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#3273dc;border-color:#3273dc;color:#fff}.table td.is-info,.table th.is-info{background-color:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#23d160;border-color:#23d160;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#ff3860;border-color:#ff3860;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table th{color:#363636;text-align:left}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.tags{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.tags.has-addons .tag:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.tags.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tag:not(body){-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:3px;color:#4a4a4a;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:.75rem;height:2em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25em;margin-right:-.375em}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:#363636}.tag:not(body).is-dark{background-color:#363636;color:#f5f5f5}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body).is-info{background-color:#209cee;color:#fff}.tag:not(body).is-success{background-color:#23d160;color:#fff}.tag:not(body).is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.tag:not(body).is-danger{background-color:#ff3860;color:#fff}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete:after,.tag:not(body).is-delete:before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.tag:not(body).is-delete:before{height:1px;width:50%}.tag:not(body).is-delete:after{height:50%;width:1px}.tag:not(body).is-delete:focus,.tag:not(body).is-delete:hover{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:290486px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle sup,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title+.highlight{margin-top:-.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.5rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.5rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.block:not(:last-child){margin-bottom:1.5rem}.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:0;position:relative;vertical-align:top;width:20px}.delete:after,.delete:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:focus,.delete:hover{background-color:rgba(10,10,10,.3)}.delete:active{background-color:rgba(10,10,10,.4)}.delete.is-small{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.delete.is-medium{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.delete.is-large{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight:not(:last-child){margin-bottom:1.5rem}.highlight pre{overflow:auto;max-width:100%}.loader{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.number{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:290486px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1.25rem;height:2em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.breadcrumb{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1rem;overflow:hidden;overflow-x:auto;white-space:nowrap}.breadcrumb:not(:last-child){margin-bottom:1.5rem}.breadcrumb a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#3273dc;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.5em .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#4a4a4a;content:"\0002f"}.breadcrumb ol,.breadcrumb ul{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;-webkit-box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);color:#4a4a4a;max-width:100%;position:relative}.card-header{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-shadow:0 1px 2px rgba(10,10,10,.1);box-shadow:0 1px 2px rgba(10,10,10,.1);display:-webkit-box;display:-ms-flexbox;display:flex}.card-header-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#363636;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-weight:700;padding:.75rem}.card-header-title.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.card-header-icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.75rem}.card-image{display:block;position:relative}.card-content{padding:1.5rem}.card-footer{border-top:1px solid #dbdbdb;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex}.card-footer-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #dbdbdb}.card .media:not(:last-child){margin-bottom:.75rem}.dropdown{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:unset;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item{padding-right:3rem;white-space:nowrap}a.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active{background-color:#3273dc;color:#fff}.dropdown-divider{background-color:#dbdbdb;border:none;display:block;height:1px;margin:.5rem 0}.level{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.level:not(:last-child){margin-bottom:1.5rem}.level code{border-radius:3px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:-webkit-box;display:-ms-flexbox;display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:-webkit-box;display:-ms-flexbox;display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item{margin-right:.75rem}.level.is-mobile .level-item:not(:last-child){margin-bottom:0}.level.is-mobile .level-item:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (min-width:769px),print{.level{display:-webkit-box;display:-ms-flexbox;display:flex}.level>.level-item:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}}.level-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (min-width:769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width:769px),print{.level-left{display:-webkit-box;display:-ms-flexbox;display:flex}}.level-right{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width:769px),print{.level-right{display:-webkit-box;display:-ms-flexbox;display:flex}}.media{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;overflow:auto;text-align:left}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#3273dc;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:3px;font-size:1rem}.message:not(:last-child){margin-bottom:1.5rem}.message strong{color:currentColor}.message a:not(.button):not(.tag){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:#363636}.message.is-light .message-body{border-color:#f5f5f5;color:#505050}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#f5f5f5}.message.is-dark .message-body{border-color:#363636;color:#2a2a2a}.message.is-primary{background-color:#f5fffd}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#021310}.message.is-link{background-color:#f6f9fe}.message.is-link .message-header{background-color:#3273dc;color:#fff}.message.is-link .message-body{border-color:#3273dc;color:#22509a}.message.is-info{background-color:#f6fbfe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#12537e}.message.is-success{background-color:#f6fef9}.message.is-success .message-header{background-color:#23d160;color:#fff}.message.is-success .message-body{border-color:#23d160;color:#0e301a}.message.is-warning{background-color:#fffdf5}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#3b3108}.message.is-danger{background-color:#fff5f7}.message.is-danger .message-header{background-color:#ff3860;color:#fff}.message.is-danger .message-body{border-color:#ff3860;color:#cd0930}.message-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#4a4a4a;border-radius:3px 3px 0 0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1.25;padding:.5em .75em;position:relative}.message-header .delete{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-top-left-radius:0;border-top-right-radius:0;border-top:none}.message-body{border:1px solid #dbdbdb;border-radius:3px;color:#4a4a4a;padding:1em 1.25em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:-webkit-box;display:-ms-flexbox;display:flex}.modal-background{bottom:0;left:0;position:absolute;right:0;top:0;background-color:rgba(10,10,10,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width:769px),print{.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:0;position:relative;vertical-align:top;width:20px;background:0 0;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-close:after,.modal-close:before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.modal-close:before{height:2px;width:50%}.modal-close:after{height:50%;width:2px}.modal-close:focus,.modal-close:hover{background-color:rgba(10,10,10,.3)}.modal-close:active{background-color:rgba(10,10,10,.4)}.modal-close.is-small{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.modal-close.is-medium{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.modal-close.is-large{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.modal-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden}.modal-card-foot,.modal-card-head{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:5px;border-top-right-radius:5px}.modal-card-title{color:#363636;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:10px}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link,.navbar.is-white .navbar-brand>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link.is-active,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}@media screen and (min-width:1024px){.navbar.is-white .navbar-end .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-start>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link.is-active,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link::after,.navbar.is-white .navbar-start .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand .navbar-link,.navbar.is-black .navbar-brand>.navbar-item{color:#fff}.navbar.is-black .navbar-brand .navbar-link.is-active,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width:1024px){.navbar.is-black .navbar-end .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-start>.navbar-item{color:#fff}.navbar.is-black .navbar-end .navbar-link.is-active,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-end .navbar-link::after,.navbar.is-black .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:#363636}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:#363636}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-brand .navbar-link::after{border-color:#363636}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:#363636}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:#363636}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#363636}}.navbar.is-dark{background-color:#363636;color:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item{color:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link.is-active,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand>a.navbar-item:hover{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#f5f5f5}@media screen and (min-width:1024px){.navbar.is-dark .navbar-end .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-start>.navbar-item{color:#f5f5f5}.navbar.is-dark .navbar-end .navbar-link.is-active,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start>a.navbar-item:hover{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#f5f5f5}.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#f5f5f5}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link::after,.navbar.is-primary .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#3273dc;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand .navbar-link.is-active,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end .navbar-link.is-active,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-end .navbar-link::after,.navbar.is-link .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#3273dc;color:#fff}}.navbar.is-info{background-color:#209cee;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#118fe4;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#118fe4;color:#fff}.navbar.is-info .navbar-end .navbar-link::after,.navbar.is-info .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#118fe4;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#23d160;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#20bc56;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#20bc56;color:#fff}.navbar.is-success .navbar-end .navbar-link::after,.navbar.is-success .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#20bc56;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#23d160;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd83d;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#ff3860;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ff1f4b;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ff1f4b;color:#fff}.navbar.is-danger .navbar-end .navbar-link::after,.navbar.is-danger .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ff1f4b;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#ff3860;color:#fff}}.navbar>.container{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{-webkit-box-shadow:0 2px 3px rgba(10,10,10,.1);box-shadow:0 2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{-webkit-box-shadow:0 -2px 3px rgba(10,10,10,.1);box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;min-height:3.25rem}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;-webkit-transform-origin:center;transform-origin:center;-webkit-transition-duration:86ms;transition-duration:86ms;-webkit-transition-property:background-color,opacity,-webkit-transform;transition-property:background-color,opacity,-webkit-transform;transition-property:background-color,opacity,transform;transition-property:background-color,opacity,transform,-webkit-transform;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:nth-child(1){-webkit-transform:translateY(5px) rotate(45deg);transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:translateY(-5px) rotate(-45deg);transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem 1rem;position:relative}a.navbar-item.is-active,a.navbar-item:hover,a.navbar-link.is-active,a.navbar-link:hover{background-color:#f5f5f5;color:#3273dc}.navbar-item{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#3273dc}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#3273dc;border-bottom-style:solid;border-bottom-width:3px;color:#3273dc;padding-bottom:calc(.5rem - 3px)}.navbar-content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.navbar-link{padding-right:2.5em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#dbdbdb;border:none;display:none;height:1px;margin:.5rem 0}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-menu{background-color:#fff;-webkit-box-shadow:0 8px 16px rgba(10,10,10,.1);box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{-webkit-box-shadow:0 -2px 3px rgba(10,10,10,.1);box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar{min-height:3.25rem}.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-link.is-active,.navbar.is-transparent a.navbar-link:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-burger{display:none}.navbar-item,.navbar-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-item.has-dropdown{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{-webkit-transform:rotate(135deg) translate(.25em,-.25em);transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid #dbdbdb;border-radius:5px 5px 0 0;border-top:none;bottom:100%;-webkit-box-shadow:0 -8px 8px rgba(10,10,10,.1);box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;-webkit-transform:translateY(0);transform:translateY(0)}.navbar-link::after{border:1px solid #3273dc;border-right:0;border-top:0;content:" ";display:block;height:.5em;pointer-events:none;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:center;transform-origin:center;width:.5em;margin-top:-.375em;right:1.125em;top:50%}.navbar-menu{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.navbar-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin-right:auto}.navbar-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:1px solid #dbdbdb;-webkit-box-shadow:0 8px 8px rgba(10,10,10,.1);box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#3273dc}.navbar-dropdown.is-boxed{border-radius:5px;border-top:none;-webkit-box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));-webkit-transform:translateY(-5px);transform:translateY(-5px);-webkit-transition-duration:86ms;transition-duration:86ms;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-1rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-1rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{-webkit-box-shadow:0 -2px 3px rgba(10,10,10,.1);box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}a.navbar-item.is-active,a.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:hover),a.navbar-link.is-active:not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#f5f5f5}}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link{border-radius:290486px}.pagination,.pagination-list{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.375em - 1px);padding-left:calc(.625em - 1px);padding-right:calc(.625em - 1px);padding-top:calc(.375em - 1px);position:relative;vertical-align:top;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1em;padding-left:.5em;padding-right:.5em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:.25rem;text-align:center}.pagination-ellipsis.is-active,.pagination-ellipsis.is-focused,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link.is-active,.pagination-link.is-focused,.pagination-link:active,.pagination-link:focus,.pagination-next.is-active,.pagination-next.is-focused,.pagination-next:active,.pagination-next:focus,.pagination-previous.is-active,.pagination-previous.is-focused,.pagination-previous:active,.pagination-previous:focus{outline:0}.pagination-ellipsis[disabled],.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{cursor:not-allowed}.pagination-link,.pagination-next,.pagination-previous{border-color:#dbdbdb;color:#363636;min-width:2.25em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#3273dc}.pagination-link:active,.pagination-next:active,.pagination-previous:active{-webkit-box-shadow:inset 0 1px 2px rgba(10,10,10,.2);box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;-webkit-box-shadow:none;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#3273dc;border-color:#3273dc;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{-ms-flex-wrap:wrap;flex-wrap:wrap}@media screen and (max-width:768px){.pagination{-ms-flex-wrap:wrap;flex-wrap:wrap}.pagination-next,.pagination-previous{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.pagination-list li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:769px),print{.pagination-list{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination-previous{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination-next{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.pagination{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.pagination.is-centered .pagination-previous{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination.is-centered .pagination-list{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination.is-centered .pagination-next{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.pagination.is-right .pagination-previous{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination.is-right .pagination-next{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination.is-right .pagination-list{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}}.panel{font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-block,.panel-heading,.panel-tabs{border-bottom:1px solid #dbdbdb;border-left:1px solid #dbdbdb;border-right:1px solid #dbdbdb}.panel-block:first-child,.panel-heading:first-child,.panel-tabs:first-child{border-top:1px solid #dbdbdb}.panel-heading{background-color:#f5f5f5;border-radius:3px 3px 0 0;color:#363636;font-size:1.25em;font-weight:300;line-height:1.25;padding:.5em .75em}.panel-tabs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.875em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#3273dc}.panel-block{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#363636;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{-ms-flex-wrap:wrap;flex-wrap:wrap}.panel-block.is-active{border-left-color:#3273dc;color:#363636}.panel-block.is-active .panel-icon{color:#3273dc}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs:not(:last-child){margin-bottom:1.5rem}.tabs a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#3273dc;color:#3273dc}.tabs ul{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{-webkit-box-flex:0;-ms-flex:none;flex:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tabs.is-right ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:3px 3px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-radius:3px 0 0 3px}.tabs.is-toggle li:last-child a{border-radius:0 3px 3px 0}.tabs.is-toggle li.is-active a{background-color:#3273dc;border-color:#3273dc;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{-webkit-box-flex:0;-ms-flex:none;flex:none}.columns.is-mobile>.column.is-full{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.columns.is-mobile>.column.is-one-third{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-1{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-1-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width:769px),print{.column.is-narrow,.column.is-narrow-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full,.column.is-full-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-1,.column.is-1-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-1-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-1-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-1-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-one-fifth-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:20%}.column.is-two-fifths-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:40%}.column.is-three-fifths-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:60%}.column.is-four-fifths-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-1-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:-webkit-box;display:-ms-flexbox;display:flex}.columns.is-multiline{-ms-flex-wrap:wrap;flex-wrap:wrap}.columns.is-vcentered{-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (min-width:769px),print{.columns:not(.is-desktop){display:-webkit-box;display:-ms-flexbox;display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:-webkit-box;display:-ms-flexbox;display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0rem}.columns.is-variable.is-1{--columnGap:0.25rem}.columns.is-variable.is-2{--columnGap:0.5rem}.columns.is-variable.is-3{--columnGap:0.75rem}.columns.is-variable.is-4{--columnGap:1rem}.columns.is-variable.is-5{--columnGap:1.25rem}.columns.is-variable.is-6{--columnGap:1.5rem}.columns.is-variable.is-7{--columnGap:1.75rem}.columns.is-variable.is-8{--columnGap:2rem}.tile{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:block;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media screen and (min-width:769px),print{.tile:not(.is-child){display:-webkit-box;display:-ms-flexbox;display:flex}.tile.is-1{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.tile.is-2{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.tile.is-3{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.tile.is-4{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.tile.is-5{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.tile.is-6{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.tile.is-7{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.tile.is-8{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.tile.is-9{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.tile.is-10{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.tile.is-11{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.tile.is-12{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}}.hero{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.hero .navbar{background:0 0}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width:1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:#363636}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag),.hero.is-light strong{color:inherit}.hero.is-light .title{color:#363636}.hero.is-light .subtitle{color:rgba(54,54,54,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:#363636}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(54,54,54,.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:#363636}.hero.is-light .tabs a{color:#363636;opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:#363636}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:#363636;border-color:#363636;color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}}.hero.is-dark{background-color:#363636;color:#f5f5f5}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#f5f5f5}.hero.is-dark .subtitle{color:rgba(245,245,245,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#f5f5f5}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(245,245,245,.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:#f5f5f5}.hero.is-dark .tabs a{color:#f5f5f5;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#f5f5f5}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}}.hero.is-link{background-color:#3273dc;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-link .navbar-menu{background-color:#3273dc}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#2366d1;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3273dc}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1577c6 0,#3273dc 71%,#4366e5 100%)}}.hero.is-info{background-color:#209cee;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-info .navbar-menu{background-color:#209cee}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#118fe4;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#04a6d7 0,#209cee 71%,#3287f5 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#04a6d7 0,#209cee 71%,#3287f5 100%)}}.hero.is-success{background-color:#23d160;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-success .navbar-menu{background-color:#23d160}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#20bc56;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#23d160}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#12af2f 0,#23d160 71%,#2ce28a 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#12af2f 0,#23d160 71%,#2ce28a 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd83d;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ffaf24 0,#ffdd57 71%,#fffa70 100%)}}.hero.is-danger{background-color:#ff3860;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-danger .navbar-menu{background-color:#ff3860}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ff1f4b;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ff3860}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#ff0561 0,#ff3860 71%,#ff5257 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ff0561 0,#ff3860 71%,#ff5257 100%)}}.hero.is-small .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width:769px),print{.hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}.hero.is-fullheight .hero-body,.hero.is-halfheight .hero-body{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.hero.is-fullheight .hero-body>.container,.hero.is-halfheight .hero-body>.container{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{bottom:0;left:0;position:absolute;right:0;top:0;overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:-webkit-box;display:-ms-flexbox;display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width:769px),print{.hero-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.hero-body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;padding:3rem 1.5rem}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:#f5f5f5;padding:3rem 1.5rem 6rem} +/*# sourceMappingURL=bulma.min.css.map */ \ No newline at end of file diff --git a/seminar06-planning/simulator/vendor/fontawesome-all.js b/seminar06-planning/simulator/vendor/fontawesome-all.js new file mode 100644 index 0000000..cfce431 --- /dev/null +++ b/seminar06-planning/simulator/vendor/fontawesome-all.js @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.0.8 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +!function(){"use strict";var c={};try{"undefined"!=typeof window&&(c=window)}catch(c){}var l=(c.navigator||{}).userAgent,h=void 0===l?"":l,v=c,z=(~h.indexOf("MSIE")||h.indexOf("Trident/"),"___FONT_AWESOME___"),e=function(){try{return!0}catch(c){return!1}}(),a=[1,2,3,4,5,6,7,8,9,10],m=a.concat([11,12,13,14,15,16,17,18,19,20]);["xs","sm","lg","fw","ul","li","border","pull-left","pull-right","spin","pulse","rotate-90","rotate-180","rotate-270","flip-horizontal","flip-vertical","stack","stack-1x","stack-2x","inverse","layers","layers-text","layers-counter"].concat(a.map(function(c){return c+"x"})).concat(m.map(function(c){return"w-"+c}));var t=v||{};t[z]||(t[z]={}),t[z].styles||(t[z].styles={}),t[z].hooks||(t[z].hooks={}),t[z].shims||(t[z].shims=[]);var s=t[z],r=Object.assign||function(c){for(var l=1;l1&&void 0!==arguments[1]?arguments[1]:{}).asNewDefault,h=void 0!==l&&l,v=Object.keys(O),z=h?function(c){return~v.indexOf(c)&&!~A.indexOf(c)}:function(c){return~v.indexOf(c)};Object.keys(c).forEach(function(l){z(l)&&(O[l]=c[l])})}m.FontAwesomeConfig=O;var N=m||{};N[n]||(N[n]={}),N[n].styles||(N[n].styles={}),N[n].hooks||(N[n].hooks={}),N[n].shims||(N[n].shims=[]);var E=N[n],P=[],_=!1;M&&((_=(t.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(t.readyState))||t.addEventListener("DOMContentLoaded",function c(){t.removeEventListener("DOMContentLoaded",c),_=1,P.map(function(c){return c()})}));var T=function(c){M&&(_?setTimeout(c,0):P.push(c))},F=H,I={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function R(c){if(c&&M){var l=t.createElement("style");l.setAttribute("type","text/css"),l.innerHTML=c;for(var h=t.head.childNodes,v=null,z=h.length-1;z>-1;z--){var e=h[z],a=(e.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(v=e)}return t.head.insertBefore(l,v),c}}var W=0;function B(){return++W}function D(c){for(var l=[],h=(c||[]).length>>>0;h--;)l[h]=c[h];return l}function X(c){return c.classList?D(c.classList):(c.getAttribute("class")||"").split(" ").filter(function(c){return c})}function Y(c,l){var h,v=l.split("-"),z=v[0],e=v.slice(1).join("-");return z!==c||""===e||(h=e,~g.indexOf(h))?null:e}function U(c){return(""+c).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function K(c){return Object.keys(c||{}).reduce(function(l,h){return l+(h+": ")+c[h]+";"},"")}function G(c){return c.size!==I.size||c.x!==I.x||c.y!==I.y||c.rotate!==I.rotate||c.flipX||c.flipY}function J(c){var l=c.transform,h=c.containerWidth,v=c.iconWidth;return{outer:{transform:"translate("+h/2+" 256)"},inner:{transform:"translate("+32*l.x+", "+32*l.y+") "+" "+("scale("+l.size/16*(l.flipX?-1:1)+", "+l.size/16*(l.flipY?-1:1)+") ")+" "+("rotate("+l.rotate+" 0 0)")},path:{transform:"translate("+v/2*-1+" -256)"}}}var Q={x:0,y:0,width:"100%",height:"100%"},Z=function(c){var l=c.children,h=c.attributes,v=c.main,z=c.mask,e=c.transform,a=v.width,m=v.icon,t=z.width,s=z.icon,r=J({transform:e,containerWidth:t,iconWidth:a}),f={tag:"rect",attributes:k({},Q,{fill:"white"})},M={tag:"g",attributes:k({},r.inner),children:[{tag:"path",attributes:k({},m.attributes,r.path,{fill:"black"})}]},i={tag:"g",attributes:k({},r.outer),children:[M]},n="mask-"+B(),H="clip-"+B(),o={tag:"defs",children:[{tag:"clipPath",attributes:{id:H},children:[s]},{tag:"mask",attributes:k({},Q,{id:n,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[f,i]}]};return l.push(o,{tag:"rect",attributes:k({fill:"currentColor","clip-path":"url(#"+H+")",mask:"url(#"+n+")"},Q)}),{children:l,attributes:h}},$=function(c){var l=c.children,h=c.attributes,v=c.main,z=c.transform,e=K(c.styles);if(e.length>0&&(h.style=e),G(z)){var a=J({transform:z,containerWidth:v.width,iconWidth:v.width});l.push({tag:"g",attributes:k({},a.outer),children:[{tag:"g",attributes:k({},a.inner),children:[{tag:v.icon.tag,children:v.icon.children,attributes:k({},v.icon.attributes,a.path)}]}]})}else l.push(v.icon);return{children:l,attributes:h}},cc=function(c){var l=c.children,h=c.main,v=c.mask,z=c.attributes,e=c.styles,a=c.transform;if(G(a)&&h.found&&!v.found){var m=h.width/h.height/2,t=.5;z.style=K(k({},e,{"transform-origin":m+a.x/16+"em "+(t+a.y/16)+"em"}))}return[{tag:"svg",attributes:z,children:l}]},lc=function(c){var l=c.prefix,h=c.iconName,v=c.children,z=c.attributes,e=c.symbol,a=!0===e?l+"-"+O.familyPrefix+"-"+h:e;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:k({},z,{id:a}),children:v}]}]};function hc(c){var l=c.icons,h=l.main,v=l.mask,z=c.prefix,e=c.iconName,a=c.transform,m=c.symbol,t=c.title,s=c.extra,r=c.watchable,f=void 0!==r&&r,M=v.found?v:h,i=M.width,n=M.height,H="fa-w-"+Math.ceil(i/n*16),o=[O.replacementClass,e?O.familyPrefix+"-"+e:"",H].concat(s.classes).join(" "),C={children:[],attributes:k({},s.attributes,{"data-prefix":z,"data-icon":e,class:o,role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 "+i+" "+n})};f&&(C.attributes[V]=""),t&&C.children.push({tag:"title",attributes:{id:C.attributes["aria-labelledby"]||"title-"+B()},children:[t]});var L=k({},C,{prefix:z,iconName:e,main:h,mask:v,transform:a,symbol:m,styles:s.styles}),u=v.found&&h.found?Z(L):$(L),d=u.children,p=u.attributes;return L.children=d,L.attributes=p,m?lc(L):cc(L)}function vc(c){var l=c.content,h=c.width,v=c.height,z=c.transform,e=c.title,a=c.extra,m=c.watchable,t=void 0!==m&&m,s=k({},a.attributes,e?{title:e}:{},{class:a.classes.join(" ")});t&&(s[V]="");var r,f,M,n,o,C,L,u,d,p=k({},a.styles);G(z)&&(p.transform=(f=(r={transform:z,startCentered:!0,width:h,height:v}).transform,M=r.width,n=void 0===M?H:M,o=r.height,C=void 0===o?H:o,L=r.startCentered,d="",d+=(u=void 0!==L&&L)&&i?"translate("+(f.x/F-n/2)+"em, "+(f.y/F-C/2)+"em) ":u?"translate(calc(-50% + "+f.x/F+"em), calc(-50% + "+f.y/F+"em)) ":"translate("+f.x/F+"em, "+f.y/F+"em) ",d+="scale("+f.size/F*(f.flipX?-1:1)+", "+f.size/F*(f.flipY?-1:1)+") ",d+="rotate("+f.rotate+"deg) "),p["-webkit-transform"]=p.transform);var b=K(p);b.length>0&&(s.style=b);var g=[];return g.push({tag:"span",attributes:s,children:[l]}),e&&g.push({tag:"span",attributes:{class:"sr-only"},children:[e]}),g}var zc=function(){},ec=O.measurePerformance&&r&&r.mark&&r.measure?r:{mark:zc,measure:zc},ac='FA "5.0.8"',mc=function(c){ec.mark(ac+" "+c+" ends"),ec.measure(ac+" "+c,ac+" "+c+" begins",ac+" "+c+" ends")},tc={begin:function(c){return ec.mark(ac+" "+c+" begins"),function(){return mc(c)}},end:mc},sc=function(c,l,h,v){var z,e,a,m,t,s=Object.keys(c),r=s.length,f=void 0!==v?(m=l,t=v,function(c,l,h,v){return m.call(t,c,l,h,v)}):l;for(void 0===h?(z=1,a=c[s[0]]):(z=0,a=h);z"+a.map(uc).join("")+""}var dc=function(){};function pc(c){return"string"==typeof(c.getAttribute?c.getAttribute(V):null)}var bc={replace:function(c){var l=c[0],h=c[1].map(function(c){return uc(c)}).join("\n");if(l.parentNode&&l.outerHTML)l.outerHTML=h+(O.keepOriginalSource&&"svg"!==l.tagName.toLowerCase()?"\x3c!-- "+l.outerHTML+" --\x3e":"");else if(l.parentNode){var v=document.createElement("span");l.parentNode.replaceChild(v,l),v.outerHTML=h}},nest:function(c){var l=c[0],h=c[1];if(~X(l).indexOf(O.replacementClass))return bc.replace(c);var v=new RegExp(O.familyPrefix+"-.*");delete h[0].attributes.style;var z=h[0].attributes.class.split(" ").reduce(function(c,l){return l===O.replacementClass||l.match(v)?c.toSvg.push(l):c.toNode.push(l),c},{toNode:[],toSvg:[]});h[0].attributes.class=z.toSvg.join(" ");var e=h.map(function(c){return uc(c)}).join("\n");l.setAttribute("class",z.toNode.join(" ")),l.setAttribute(V,""),l.innerHTML=e}};function gc(c,l){var h="function"==typeof l?l:dc;0===c.length?h():(m.requestAnimationFrame||function(c){return c()})(function(){var l=!0===O.autoReplaceSvg?bc.replace:bc[O.autoReplaceSvg]||bc.replace,v=tc.begin("mutate");c.map(l),v(),h()})}var yc=!1;var wc=null;var kc=function(c){var l=c.getAttribute("style"),h=[];return l&&(h=l.split(";").reduce(function(c,l){var h=l.split(":"),v=h[0],z=h.slice(1);return v&&z.length>0&&(c[v]=z.join(":").trim()),c},{})),h};var Sc=function(c){var l,h,v,z,e=c.getAttribute("data-prefix"),a=c.getAttribute("data-icon"),m=void 0!==c.innerText?c.innerText.trim():"",t=Cc(X(c));return e&&a&&(t.prefix=e,t.iconName=a),t.prefix&&m.length>1?t.iconName=(v=t.prefix,z=c.innerText,ic[v][z]):t.prefix&&1===m.length&&(t.iconName=(l=t.prefix,h=function(c){for(var l="",h=0;h-1&&Yc(z.nextSibling),Yc(z),z=null),v&&!z){var e=h.getPropertyValue("content"),a=t.createElement("i");a.setAttribute("class",""+Bc[v[1]]),a.setAttribute(C,l),a.innerText=3===e.length?e.substr(1,1):e,":before"===l?c.insertBefore(a,c.firstChild):c.appendChild(a)}})})}(),yc=!1,l()}}function Kc(c){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(M){var h=t.documentElement.classList,v=function(c){return h.add(L+"-"+c)},z=function(c){return h.remove(L+"-"+c)},e=Object.keys(Ic),a=["."+Rc+":not(["+V+"])"].concat(e.map(function(c){return"."+c+":not(["+V+"])"})).join(", ");if(0!==a.length){var m=D(c.querySelectorAll(a));if(m.length>0){v("pending"),z("complete");var s=tc.begin("onTree"),r=m.reduce(function(c,l){try{var h=Xc(l);h&&c.push(h)}catch(c){u||c instanceof Nc&&console.error(c)}return c},[]);s(),gc(r,function(){v("active"),v("complete"),z("pending"),"function"==typeof l&&l()})}}}}function Gc(c){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,h=Xc(c);h&&gc([h],l)}var Jc=function(){var c=o,l=O.familyPrefix,h=O.replacementClass,v="svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;-webkit-transform:scale(.25);transform:scale(.25);-webkit-transform-origin:top left;transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1em}.svg-inline--fa.fa-stack-2x{height:2em;width:2em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}";if("fa"!==l||h!==c){var z=new RegExp("\\.fa\\-","g"),e=new RegExp("\\."+c,"g");v=v.replace(z,"."+l+"-").replace(e,"."+h)}return v};var Qc=function(){function c(){y(this,c),this.definitions={}}return w(c,[{key:"add",value:function(){for(var c=this,l=arguments.length,h=Array(l),v=0;v1&&void 0!==arguments[1]?arguments[1]:{},h=l.transform,v=void 0===h?I:h,z=l.symbol,e=void 0!==z&&z,a=l.mask,m=void 0===a?null:a,t=l.title,s=void 0===t?null:t,r=l.classes,f=void 0===r?[]:r,M=l.attributes,i=void 0===M?{}:M,n=l.styles,H=void 0===n?{}:n;if(c){var o=c.prefix,V=c.iconName,C=c.icon;return ll(k({type:"icon"},c),function(){return cl(),O.autoA11y&&(s?i["aria-labelledby"]=O.replacementClass+"-title-"+B():i["aria-hidden"]="true"),hc({icons:{main:Zc(C),mask:m?Zc(m.icon):{found:!1,width:null,height:null,icon:{}}},prefix:o,iconName:V,transform:k({},I,v),symbol:e,title:s,extra:{attributes:i,styles:H,classes:f}})})}},function(c){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=(c||{}).icon?c:hl(c||{}),v=l.mask;return v&&(v=(v||{}).icon?v:hl(v||{})),vl(h,k({},l,{mask:v}))}),al={noAuto:function(){var c;j({autoReplaceSvg:c=!1,observeMutations:c}),wc&&wc.disconnect()},dom:{i2svg:function(){var c=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(M){cl();var l=c.node,h=void 0===l?t:l,v=c.callback,z=void 0===v?function(){}:v;O.searchPseudoElements&&Uc(h),Kc(h,z)}},css:Jc,insertCss:function(){R(Jc())}},library:zl,parse:{transform:function(c){return xc(c)}},findIconDefinition:hl,icon:el,text:function(c){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},h=l.transform,v=void 0===h?I:h,z=l.title,e=void 0===z?null:z,a=l.classes,m=void 0===a?[]:a,t=l.attributes,s=void 0===t?{}:t,r=l.styles,f=void 0===r?{}:r;return ll({type:"text",content:c},function(){return cl(),vc({content:c,transform:k({},I,v),title:e,extra:{attributes:s,styles:f,classes:[O.familyPrefix+"-layers-text"].concat(S(m))}})})},layer:function(c){return ll({type:"layer"},function(){cl();var l=[];return c(function(c){Array.isArray(c)?c.map(function(c){l=l.concat(c.abstract)}):l=l.concat(c.abstract)}),[{tag:"span",attributes:{class:O.familyPrefix+"-layers"},children:l}]})}},ml=function(){M&&O.autoReplaceSvg&&al.dom.i2svg({node:t})};Object.defineProperty(al,"config",{get:function(){return O},set:function(c){j(c)}}),function(c){try{c()}catch(c){if(!u)throw c}}(function(){f&&(m.FontAwesome||(m.FontAwesome=al),T(function(){Object.keys(E.styles).length>0&&ml(),O.observeMutations&&"function"==typeof MutationObserver&&function(c){if(s){var l=c.treeCallback,h=c.nodeCallback,v=c.pseudoElementsCallback;wc=new s(function(c){yc||D(c).forEach(function(c){if("childList"===c.type&&c.addedNodes.length>0&&!pc(c.addedNodes[0])&&(O.searchPseudoElements&&v(c.target),l(c.target)),"attributes"===c.type&&c.target.parentNode&&O.searchPseudoElements&&v(c.target.parentNode),"attributes"===c.type&&pc(c.target)&&~b.indexOf(c.attributeName))if("class"===c.attributeName){var z=Cc(X(c.target)),e=z.prefix,a=z.iconName;e&&c.target.setAttribute("data-prefix",e),a&&c.target.setAttribute("data-icon",a)}else h(c.target)})}),M&&wc.observe(t.getElementsByTagName("body")[0],{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}({treeCallback:Kc,nodeCallback:Gc,pseudoElementsCallback:Uc})})),E.hooks=k({},E.hooks,{addPack:function(c,l){E.styles[c]=k({},E.styles[c]||{},l),Hc(),ml()},addShims:function(c){var l;(l=E.shims).push.apply(l,S(c)),Hc(),ml()}})})}(); \ No newline at end of file diff --git a/seminar06-planning/simulator/vendor/three.js b/seminar06-planning/simulator/vendor/three.js new file mode 100644 index 0000000..1b795a6 --- /dev/null +++ b/seminar06-planning/simulator/vendor/three.js @@ -0,0 +1,45983 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.THREE = {}))); +}(this, (function (exports) { 'use strict'; + + // Polyfills + + if ( Number.EPSILON === undefined ) { + + Number.EPSILON = Math.pow( 2, - 52 ); + + } + + if ( Number.isInteger === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger + + Number.isInteger = function ( value ) { + + return typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value; + + }; + + } + + // + + if ( Math.sign === undefined ) { + + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign + + Math.sign = function ( x ) { + + return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x; + + }; + + } + + if ( 'name' in Function.prototype === false ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name + + Object.defineProperty( Function.prototype, 'name', { + + get: function () { + + return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ]; + + } + + } ); + + } + + if ( Object.assign === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + + ( function () { + + Object.assign = function ( target ) { + + if ( target === undefined || target === null ) { + + throw new TypeError( 'Cannot convert undefined or null to object' ); + + } + + var output = Object( target ); + + for ( var index = 1; index < arguments.length; index ++ ) { + + var source = arguments[ index ]; + + if ( source !== undefined && source !== null ) { + + for ( var nextKey in source ) { + + if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) { + + output[ nextKey ] = source[ nextKey ]; + + } + + } + + } + + } + + return output; + + }; + + } )(); + + } + + /** + * https://github.com/mrdoob/eventdispatcher.js/ + */ + + function EventDispatcher() {} + + Object.assign( EventDispatcher.prototype, { + + addEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) this._listeners = {}; + + var listeners = this._listeners; + + if ( listeners[ type ] === undefined ) { + + listeners[ type ] = []; + + } + + if ( listeners[ type ].indexOf( listener ) === - 1 ) { + + listeners[ type ].push( listener ); + + } + + }, + + hasEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return false; + + var listeners = this._listeners; + + return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; + + }, + + removeEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ type ]; + + if ( listenerArray !== undefined ) { + + var index = listenerArray.indexOf( listener ); + + if ( index !== - 1 ) { + + listenerArray.splice( index, 1 ); + + } + + } + + }, + + dispatchEvent: function ( event ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ event.type ]; + + if ( listenerArray !== undefined ) { + + event.target = this; + + var array = listenerArray.slice( 0 ); + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + array[ i ].call( this, event ); + + } + + } + + } + + } ); + + var REVISION = '89'; + var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 }; + var CullFaceNone = 0; + var CullFaceBack = 1; + var CullFaceFront = 2; + var CullFaceFrontBack = 3; + var FrontFaceDirectionCW = 0; + var FrontFaceDirectionCCW = 1; + var BasicShadowMap = 0; + var PCFShadowMap = 1; + var PCFSoftShadowMap = 2; + var FrontSide = 0; + var BackSide = 1; + var DoubleSide = 2; + var FlatShading = 1; + var SmoothShading = 2; + var NoColors = 0; + var FaceColors = 1; + var VertexColors = 2; + var NoBlending = 0; + var NormalBlending = 1; + var AdditiveBlending = 2; + var SubtractiveBlending = 3; + var MultiplyBlending = 4; + var CustomBlending = 5; + var AddEquation = 100; + var SubtractEquation = 101; + var ReverseSubtractEquation = 102; + var MinEquation = 103; + var MaxEquation = 104; + var ZeroFactor = 200; + var OneFactor = 201; + var SrcColorFactor = 202; + var OneMinusSrcColorFactor = 203; + var SrcAlphaFactor = 204; + var OneMinusSrcAlphaFactor = 205; + var DstAlphaFactor = 206; + var OneMinusDstAlphaFactor = 207; + var DstColorFactor = 208; + var OneMinusDstColorFactor = 209; + var SrcAlphaSaturateFactor = 210; + var NeverDepth = 0; + var AlwaysDepth = 1; + var LessDepth = 2; + var LessEqualDepth = 3; + var EqualDepth = 4; + var GreaterEqualDepth = 5; + var GreaterDepth = 6; + var NotEqualDepth = 7; + var MultiplyOperation = 0; + var MixOperation = 1; + var AddOperation = 2; + var NoToneMapping = 0; + var LinearToneMapping = 1; + var ReinhardToneMapping = 2; + var Uncharted2ToneMapping = 3; + var CineonToneMapping = 4; + var UVMapping = 300; + var CubeReflectionMapping = 301; + var CubeRefractionMapping = 302; + var EquirectangularReflectionMapping = 303; + var EquirectangularRefractionMapping = 304; + var SphericalReflectionMapping = 305; + var CubeUVReflectionMapping = 306; + var CubeUVRefractionMapping = 307; + var RepeatWrapping = 1000; + var ClampToEdgeWrapping = 1001; + var MirroredRepeatWrapping = 1002; + var NearestFilter = 1003; + var NearestMipMapNearestFilter = 1004; + var NearestMipMapLinearFilter = 1005; + var LinearFilter = 1006; + var LinearMipMapNearestFilter = 1007; + var LinearMipMapLinearFilter = 1008; + var UnsignedByteType = 1009; + var ByteType = 1010; + var ShortType = 1011; + var UnsignedShortType = 1012; + var IntType = 1013; + var UnsignedIntType = 1014; + var FloatType = 1015; + var HalfFloatType = 1016; + var UnsignedShort4444Type = 1017; + var UnsignedShort5551Type = 1018; + var UnsignedShort565Type = 1019; + var UnsignedInt248Type = 1020; + var AlphaFormat = 1021; + var RGBFormat = 1022; + var RGBAFormat = 1023; + var LuminanceFormat = 1024; + var LuminanceAlphaFormat = 1025; + var RGBEFormat = RGBAFormat; + var DepthFormat = 1026; + var DepthStencilFormat = 1027; + var RGB_S3TC_DXT1_Format = 2001; + var RGBA_S3TC_DXT1_Format = 2002; + var RGBA_S3TC_DXT3_Format = 2003; + var RGBA_S3TC_DXT5_Format = 2004; + var RGB_PVRTC_4BPPV1_Format = 2100; + var RGB_PVRTC_2BPPV1_Format = 2101; + var RGBA_PVRTC_4BPPV1_Format = 2102; + var RGBA_PVRTC_2BPPV1_Format = 2103; + var RGB_ETC1_Format = 2151; + var LoopOnce = 2200; + var LoopRepeat = 2201; + var LoopPingPong = 2202; + var InterpolateDiscrete = 2300; + var InterpolateLinear = 2301; + var InterpolateSmooth = 2302; + var ZeroCurvatureEnding = 2400; + var ZeroSlopeEnding = 2401; + var WrapAroundEnding = 2402; + var TrianglesDrawMode = 0; + var TriangleStripDrawMode = 1; + var TriangleFanDrawMode = 2; + var LinearEncoding = 3000; + var sRGBEncoding = 3001; + var GammaEncoding = 3007; + var RGBEEncoding = 3002; + var LogLuvEncoding = 3003; + var RGBM7Encoding = 3004; + var RGBM16Encoding = 3005; + var RGBDEncoding = 3006; + var BasicDepthPacking = 3200; + var RGBADepthPacking = 3201; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var _Math = { + + DEG2RAD: Math.PI / 180, + RAD2DEG: 180 / Math.PI, + + generateUUID: ( function () { + + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 + + var lut = []; + + for ( var i = 0; i < 256; i ++ ) { + + lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ).toUpperCase(); + + } + + return function () { + + var d0 = Math.random() * 0xffffffff | 0; + var d1 = Math.random() * 0xffffffff | 0; + var d2 = Math.random() * 0xffffffff | 0; + var d3 = Math.random() * 0xffffffff | 0; + return lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' + + lut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' + + lut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] + + lut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ]; + + }; + + } )(), + + clamp: function ( value, min, max ) { + + return Math.max( min, Math.min( max, value ) ); + + }, + + // compute euclidian modulo of m % n + // https://en.wikipedia.org/wiki/Modulo_operation + + euclideanModulo: function ( n, m ) { + + return ( ( n % m ) + m ) % m; + + }, + + // Linear mapping from range to range + + mapLinear: function ( x, a1, a2, b1, b2 ) { + + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + + }, + + // https://en.wikipedia.org/wiki/Linear_interpolation + + lerp: function ( x, y, t ) { + + return ( 1 - t ) * x + t * y; + + }, + + // http://en.wikipedia.org/wiki/Smoothstep + + smoothstep: function ( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * ( 3 - 2 * x ); + + }, + + smootherstep: function ( x, min, max ) { + + if ( x <= min ) return 0; + if ( x >= max ) return 1; + + x = ( x - min ) / ( max - min ); + + return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); + + }, + + // Random integer from interval + + randInt: function ( low, high ) { + + return low + Math.floor( Math.random() * ( high - low + 1 ) ); + + }, + + // Random float from interval + + randFloat: function ( low, high ) { + + return low + Math.random() * ( high - low ); + + }, + + // Random float from <-range/2, range/2> interval + + randFloatSpread: function ( range ) { + + return range * ( 0.5 - Math.random() ); + + }, + + degToRad: function ( degrees ) { + + return degrees * _Math.DEG2RAD; + + }, + + radToDeg: function ( radians ) { + + return radians * _Math.RAD2DEG; + + }, + + isPowerOfTwo: function ( value ) { + + return ( value & ( value - 1 ) ) === 0 && value !== 0; + + }, + + ceilPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); + + }, + + floorPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author philogb / http://blog.thejit.org/ + * @author egraether / http://egraether.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + function Vector2( x, y ) { + + this.x = x || 0; + this.y = y || 0; + + } + + Object.defineProperties( Vector2.prototype, { + + "width": { + + get: function () { + + return this.x; + + }, + + set: function ( value ) { + + this.x = value; + + } + + }, + + "height": { + + get: function () { + + return this.y; + + }, + + set: function ( value ) { + + this.y = value; + + } + + } + + } ); + + Object.assign( Vector2.prototype, { + + isVector2: true, + + set: function ( x, y ) { + + this.x = x; + this.y = y; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + + return this; + + }, + + multiply: function ( v ) { + + this.x *= v.x; + this.y *= v.y; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + + return this; + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + + return this; + + }, + + clampScalar: function () { + + var min = new Vector2(); + var max = new Vector2(); + + return function clampScalar( minVal, maxVal ) { + + min.set( minVal, minVal ); + max.set( maxVal, maxVal ); + + return this.clamp( min, max ); + + }; + + }(), + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + angle: function () { + + // computes the angle in radians with respect to the positive x-axis + + var angle = Math.atan2( this.y, this.x ); + + if ( angle < 0 ) angle += 2 * Math.PI; + + return angle; + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y; + return dx * dx + dy * dy; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + + return this; + + }, + + rotateAround: function ( center, angle ) { + + var c = Math.cos( angle ), s = Math.sin( angle ); + + var x = this.x - center.x; + var y = this.y - center.y; + + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author jordi_ros / http://plattsoft.com + * @author D1plo1d / http://github.com/D1plo1d + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author timknip / http://www.floorplanner.com/ + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Matrix4() { + + this.elements = [ + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix4.prototype, { + + isMatrix4: true, + + set: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; + te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; + te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; + te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new Matrix4().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; + te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; + te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; + te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; + + return this; + + }, + + copyPosition: function ( m ) { + + var te = this.elements, me = m.elements; + + te[ 12 ] = me[ 12 ]; + te[ 13 ] = me[ 13 ]; + te[ 14 ] = me[ 14 ]; + + return this; + + }, + + extractBasis: function ( xAxis, yAxis, zAxis ) { + + xAxis.setFromMatrixColumn( this, 0 ); + yAxis.setFromMatrixColumn( this, 1 ); + zAxis.setFromMatrixColumn( this, 2 ); + + return this; + + }, + + makeBasis: function ( xAxis, yAxis, zAxis ) { + + this.set( + xAxis.x, yAxis.x, zAxis.x, 0, + xAxis.y, yAxis.y, zAxis.y, 0, + xAxis.z, yAxis.z, zAxis.z, 0, + 0, 0, 0, 1 + ); + + return this; + + }, + + extractRotation: function () { + + var v1 = new Vector3(); + + return function extractRotation( m ) { + + var te = this.elements; + var me = m.elements; + + var scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length(); + var scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length(); + var scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length(); + + te[ 0 ] = me[ 0 ] * scaleX; + te[ 1 ] = me[ 1 ] * scaleX; + te[ 2 ] = me[ 2 ] * scaleX; + + te[ 4 ] = me[ 4 ] * scaleY; + te[ 5 ] = me[ 5 ] * scaleY; + te[ 6 ] = me[ 6 ] * scaleY; + + te[ 8 ] = me[ 8 ] * scaleZ; + te[ 9 ] = me[ 9 ] * scaleZ; + te[ 10 ] = me[ 10 ] * scaleZ; + + return this; + + }; + + }(), + + makeRotationFromEuler: function ( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); + + } + + var te = this.elements; + + var x = euler.x, y = euler.y, z = euler.z; + var a = Math.cos( x ), b = Math.sin( x ); + var c = Math.cos( y ), d = Math.sin( y ); + var e = Math.cos( z ), f = Math.sin( z ); + + if ( euler.order === 'XYZ' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = - c * f; + te[ 8 ] = d; + + te[ 1 ] = af + be * d; + te[ 5 ] = ae - bf * d; + te[ 9 ] = - b * c; + + te[ 2 ] = bf - ae * d; + te[ 6 ] = be + af * d; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YXZ' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce + df * b; + te[ 4 ] = de * b - cf; + te[ 8 ] = a * d; + + te[ 1 ] = a * f; + te[ 5 ] = a * e; + te[ 9 ] = - b; + + te[ 2 ] = cf * b - de; + te[ 6 ] = df + ce * b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZXY' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce - df * b; + te[ 4 ] = - a * f; + te[ 8 ] = de + cf * b; + + te[ 1 ] = cf + de * b; + te[ 5 ] = a * e; + te[ 9 ] = df - ce * b; + + te[ 2 ] = - a * d; + te[ 6 ] = b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZYX' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = be * d - af; + te[ 8 ] = ae * d + bf; + + te[ 1 ] = c * f; + te[ 5 ] = bf * d + ae; + te[ 9 ] = af * d - be; + + te[ 2 ] = - d; + te[ 6 ] = b * c; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YZX' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = bd - ac * f; + te[ 8 ] = bc * f + ad; + + te[ 1 ] = f; + te[ 5 ] = a * e; + te[ 9 ] = - b * e; + + te[ 2 ] = - d * e; + te[ 6 ] = ad * f + bc; + te[ 10 ] = ac - bd * f; + + } else if ( euler.order === 'XZY' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = - f; + te[ 8 ] = d * e; + + te[ 1 ] = ac * f + bd; + te[ 5 ] = a * e; + te[ 9 ] = ad * f - bc; + + te[ 2 ] = bc * f - ad; + te[ 6 ] = b * e; + te[ 10 ] = bd * f + ac; + + } + + // last column + te[ 3 ] = 0; + te[ 7 ] = 0; + te[ 11 ] = 0; + + // bottom row + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }, + + makeRotationFromQuaternion: function ( q ) { + + var te = this.elements; + + var x = q._x, y = q._y, z = q._z, w = q._w; + var x2 = x + x, y2 = y + y, z2 = z + z; + var xx = x * x2, xy = x * y2, xz = x * z2; + var yy = y * y2, yz = y * z2, zz = z * z2; + var wx = w * x2, wy = w * y2, wz = w * z2; + + te[ 0 ] = 1 - ( yy + zz ); + te[ 4 ] = xy - wz; + te[ 8 ] = xz + wy; + + te[ 1 ] = xy + wz; + te[ 5 ] = 1 - ( xx + zz ); + te[ 9 ] = yz - wx; + + te[ 2 ] = xz - wy; + te[ 6 ] = yz + wx; + te[ 10 ] = 1 - ( xx + yy ); + + // last column + te[ 3 ] = 0; + te[ 7 ] = 0; + te[ 11 ] = 0; + + // bottom row + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }, + + lookAt: function () { + + var x = new Vector3(); + var y = new Vector3(); + var z = new Vector3(); + + return function lookAt( eye, target, up ) { + + var te = this.elements; + + z.subVectors( eye, target ); + + if ( z.lengthSq() === 0 ) { + + // eye and target are in the same position + + z.z = 1; + + } + + z.normalize(); + x.crossVectors( up, z ); + + if ( x.lengthSq() === 0 ) { + + // up and z are parallel + + if ( Math.abs( up.z ) === 1 ) { + + z.x += 0.0001; + + } else { + + z.z += 0.0001; + + } + + z.normalize(); + x.crossVectors( up, z ); + + } + + x.normalize(); + y.crossVectors( z, x ); + + te[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x; + te[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y; + te[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z; + + return this; + + }; + + }(), + + multiply: function ( m, n ) { + + if ( n !== undefined ) { + + console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); + return this.multiplyMatrices( m, n ); + + } + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; + var a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; + var a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; + var a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; + + var b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; + var b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; + var b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; + var b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + + te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; + te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; + te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; + te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; + + return this; + + }, + + applyToBufferAttribute: function () { + + var v1 = new Vector3(); + + return function applyToBufferAttribute( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + v1.x = attribute.getX( i ); + v1.y = attribute.getY( i ); + v1.z = attribute.getZ( i ); + + v1.applyMatrix4( this ); + + attribute.setXYZ( i, v1.x, v1.y, v1.z ); + + } + + return attribute; + + }; + + }(), + + determinant: function () { + + var te = this.elements; + + var n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; + var n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; + var n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; + var n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; + + //TODO: make this more efficient + //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) + + return ( + n41 * ( + + n14 * n23 * n32 + - n13 * n24 * n32 + - n14 * n22 * n33 + + n12 * n24 * n33 + + n13 * n22 * n34 + - n12 * n23 * n34 + ) + + n42 * ( + + n11 * n23 * n34 + - n11 * n24 * n33 + + n14 * n21 * n33 + - n13 * n21 * n34 + + n13 * n24 * n31 + - n14 * n23 * n31 + ) + + n43 * ( + + n11 * n24 * n32 + - n11 * n22 * n34 + - n14 * n21 * n32 + + n12 * n21 * n34 + + n14 * n22 * n31 + - n12 * n24 * n31 + ) + + n44 * ( + - n13 * n22 * n31 + - n11 * n23 * n32 + + n11 * n22 * n33 + + n13 * n21 * n32 + - n12 * n21 * n33 + + n12 * n23 * n31 + ) + + ); + + }, + + transpose: function () { + + var te = this.elements; + var tmp; + + tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; + tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; + tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; + + tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; + tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; + tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; + + return this; + + }, + + setPosition: function ( v ) { + + var te = this.elements; + + te[ 12 ] = v.x; + te[ 13 ] = v.y; + te[ 14 ] = v.z; + + return this; + + }, + + getInverse: function ( m, throwOnDegenerate ) { + + // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm + var te = this.elements, + me = m.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], + n12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ], + n13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ], + n14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ], + + t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, + t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, + t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, + t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + + var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + + if ( det === 0 ) { + + var msg = "THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; + te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; + te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; + + te[ 4 ] = t12 * detInv; + te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; + te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; + te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; + + te[ 8 ] = t13 * detInv; + te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; + te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; + te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; + + te[ 12 ] = t14 * detInv; + te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; + te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; + te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; + + return this; + + }, + + scale: function ( v ) { + + var te = this.elements; + var x = v.x, y = v.y, z = v.z; + + te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; + te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; + te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; + te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; + + return this; + + }, + + getMaxScaleOnAxis: function () { + + var te = this.elements; + + var scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; + var scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; + var scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; + + return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); + + }, + + makeTranslation: function ( x, y, z ) { + + this.set( + + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationX: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + 1, 0, 0, 0, + 0, c, - s, 0, + 0, s, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationY: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, 0, s, 0, + 0, 1, 0, 0, + - s, 0, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationZ: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, - s, 0, 0, + s, c, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationAxis: function ( axis, angle ) { + + // Based on http://www.gamedev.net/reference/articles/article1199.asp + + var c = Math.cos( angle ); + var s = Math.sin( angle ); + var t = 1 - c; + var x = axis.x, y = axis.y, z = axis.z; + var tx = t * x, ty = t * y; + + this.set( + + tx * x + c, tx * y - s * z, tx * z + s * y, 0, + tx * y + s * z, ty * y + c, ty * z - s * x, 0, + tx * z - s * y, ty * z + s * x, t * z * z + c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeScale: function ( x, y, z ) { + + this.set( + + x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeShear: function ( x, y, z ) { + + this.set( + + 1, y, z, 0, + x, 1, z, 0, + x, y, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + compose: function ( position, quaternion, scale ) { + + this.makeRotationFromQuaternion( quaternion ); + this.scale( scale ); + this.setPosition( position ); + + return this; + + }, + + decompose: function () { + + var vector = new Vector3(); + var matrix = new Matrix4(); + + return function decompose( position, quaternion, scale ) { + + var te = this.elements; + + var sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); + var sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); + var sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); + + // if determine is negative, we need to invert one scale + var det = this.determinant(); + if ( det < 0 ) sx = - sx; + + position.x = te[ 12 ]; + position.y = te[ 13 ]; + position.z = te[ 14 ]; + + // scale the rotation part + matrix.copy( this ); + + var invSX = 1 / sx; + var invSY = 1 / sy; + var invSZ = 1 / sz; + + matrix.elements[ 0 ] *= invSX; + matrix.elements[ 1 ] *= invSX; + matrix.elements[ 2 ] *= invSX; + + matrix.elements[ 4 ] *= invSY; + matrix.elements[ 5 ] *= invSY; + matrix.elements[ 6 ] *= invSY; + + matrix.elements[ 8 ] *= invSZ; + matrix.elements[ 9 ] *= invSZ; + matrix.elements[ 10 ] *= invSZ; + + quaternion.setFromRotationMatrix( matrix ); + + scale.x = sx; + scale.y = sy; + scale.z = sz; + + return this; + + }; + + }(), + + makePerspective: function ( left, right, top, bottom, near, far ) { + + if ( far === undefined ) { + + console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' ); + + } + + var te = this.elements; + var x = 2 * near / ( right - left ); + var y = 2 * near / ( top - bottom ); + + var a = ( right + left ) / ( right - left ); + var b = ( top + bottom ) / ( top - bottom ); + var c = - ( far + near ) / ( far - near ); + var d = - 2 * far * near / ( far - near ); + + te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; + te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0; + + return this; + + }, + + makeOrthographic: function ( left, right, top, bottom, near, far ) { + + var te = this.elements; + var w = 1.0 / ( right - left ); + var h = 1.0 / ( top - bottom ); + var p = 1.0 / ( far - near ); + + var x = ( right + left ) * w; + var y = ( top + bottom ) * h; + var z = ( far + near ) * p; + + te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; + te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = - 2 * p; te[ 14 ] = - z; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 16; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + for ( var i = 0; i < 16; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + array[ offset + 3 ] = te[ 3 ]; + + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + + array[ offset + 8 ] = te[ 8 ]; + array[ offset + 9 ] = te[ 9 ]; + array[ offset + 10 ] = te[ 10 ]; + array[ offset + 11 ] = te[ 11 ]; + + array[ offset + 12 ] = te[ 12 ]; + array[ offset + 13 ] = te[ 13 ]; + array[ offset + 14 ] = te[ 14 ]; + array[ offset + 15 ] = te[ 15 ]; + + return array; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + function Quaternion( x, y, z, w ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._w = ( w !== undefined ) ? w : 1; + + } + + Object.assign( Quaternion, { + + slerp: function ( qa, qb, qm, t ) { + + return qm.copy( qa ).slerp( qb, t ); + + }, + + slerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { + + // fuzz-free, array-based Quaternion SLERP operation + + var x0 = src0[ srcOffset0 + 0 ], + y0 = src0[ srcOffset0 + 1 ], + z0 = src0[ srcOffset0 + 2 ], + w0 = src0[ srcOffset0 + 3 ], + + x1 = src1[ srcOffset1 + 0 ], + y1 = src1[ srcOffset1 + 1 ], + z1 = src1[ srcOffset1 + 2 ], + w1 = src1[ srcOffset1 + 3 ]; + + if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { + + var s = 1 - t, + + cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, + + dir = ( cos >= 0 ? 1 : - 1 ), + sqrSin = 1 - cos * cos; + + // Skip the Slerp for tiny steps to avoid numeric problems: + if ( sqrSin > Number.EPSILON ) { + + var sin = Math.sqrt( sqrSin ), + len = Math.atan2( sin, cos * dir ); + + s = Math.sin( s * len ) / sin; + t = Math.sin( t * len ) / sin; + + } + + var tDir = t * dir; + + x0 = x0 * s + x1 * tDir; + y0 = y0 * s + y1 * tDir; + z0 = z0 * s + z1 * tDir; + w0 = w0 * s + w1 * tDir; + + // Normalize in case we just did a lerp: + if ( s === 1 - t ) { + + var f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); + + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + + } + + } + + dst[ dstOffset ] = x0; + dst[ dstOffset + 1 ] = y0; + dst[ dstOffset + 2 ] = z0; + dst[ dstOffset + 3 ] = w0; + + } + + } ); + + Object.defineProperties( Quaternion.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this.onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this.onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this.onChangeCallback(); + + } + + }, + + w: { + + get: function () { + + return this._w; + + }, + + set: function ( value ) { + + this._w = value; + this.onChangeCallback(); + + } + + } + + } ); + + Object.assign( Quaternion.prototype, { + + set: function ( x, y, z, w ) { + + this._x = x; + this._y = y; + this._z = z; + this._w = w; + + this.onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._w ); + + }, + + copy: function ( quaternion ) { + + this._x = quaternion.x; + this._y = quaternion.y; + this._z = quaternion.z; + this._w = quaternion.w; + + this.onChangeCallback(); + + return this; + + }, + + setFromEuler: function ( euler, update ) { + + if ( ! ( euler && euler.isEuler ) ) { + + throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + var x = euler._x, y = euler._y, z = euler._z, order = euler.order; + + // http://www.mathworks.com/matlabcentral/fileexchange/ + // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ + // content/SpinCalc.m + + var cos = Math.cos; + var sin = Math.sin; + + var c1 = cos( x / 2 ); + var c2 = cos( y / 2 ); + var c3 = cos( z / 2 ); + + var s1 = sin( x / 2 ); + var s2 = sin( y / 2 ); + var s3 = sin( z / 2 ); + + if ( order === 'XYZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'YXZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'ZXY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'ZYX' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'YZX' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'XZY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } + + if ( update !== false ) this.onChangeCallback(); + + return this; + + }, + + setFromAxisAngle: function ( axis, angle ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm + + // assumes axis is normalized + + var halfAngle = angle / 2, s = Math.sin( halfAngle ); + + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos( halfAngle ); + + this.onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], + + trace = m11 + m22 + m33, + s; + + if ( trace > 0 ) { + + s = 0.5 / Math.sqrt( trace + 1.0 ); + + this._w = 0.25 / s; + this._x = ( m32 - m23 ) * s; + this._y = ( m13 - m31 ) * s; + this._z = ( m21 - m12 ) * s; + + } else if ( m11 > m22 && m11 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); + + this._w = ( m32 - m23 ) / s; + this._x = 0.25 * s; + this._y = ( m12 + m21 ) / s; + this._z = ( m13 + m31 ) / s; + + } else if ( m22 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); + + this._w = ( m13 - m31 ) / s; + this._x = ( m12 + m21 ) / s; + this._y = 0.25 * s; + this._z = ( m23 + m32 ) / s; + + } else { + + s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); + + this._w = ( m21 - m12 ) / s; + this._x = ( m13 + m31 ) / s; + this._y = ( m23 + m32 ) / s; + this._z = 0.25 * s; + + } + + this.onChangeCallback(); + + return this; + + }, + + setFromUnitVectors: function () { + + // assumes direction vectors vFrom and vTo are normalized + + var v1 = new Vector3(); + var r; + + var EPS = 0.000001; + + return function setFromUnitVectors( vFrom, vTo ) { + + if ( v1 === undefined ) v1 = new Vector3(); + + r = vFrom.dot( vTo ) + 1; + + if ( r < EPS ) { + + r = 0; + + if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { + + v1.set( - vFrom.y, vFrom.x, 0 ); + + } else { + + v1.set( 0, - vFrom.z, vFrom.y ); + + } + + } else { + + v1.crossVectors( vFrom, vTo ); + + } + + this._x = v1.x; + this._y = v1.y; + this._z = v1.z; + this._w = r; + + return this.normalize(); + + }; + + }(), + + inverse: function () { + + return this.conjugate().normalize(); + + }, + + conjugate: function () { + + this._x *= - 1; + this._y *= - 1; + this._z *= - 1; + + this.onChangeCallback(); + + return this; + + }, + + dot: function ( v ) { + + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + + }, + + lengthSq: function () { + + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + + }, + + length: function () { + + return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); + + }, + + normalize: function () { + + var l = this.length(); + + if ( l === 0 ) { + + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + + } else { + + l = 1 / l; + + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + + } + + this.onChangeCallback(); + + return this; + + }, + + multiply: function ( q, p ) { + + if ( p !== undefined ) { + + console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); + return this.multiplyQuaternions( q, p ); + + } + + return this.multiplyQuaternions( this, q ); + + }, + + premultiply: function ( q ) { + + return this.multiplyQuaternions( q, this ); + + }, + + multiplyQuaternions: function ( a, b ) { + + // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm + + var qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; + var qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; + + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + this.onChangeCallback(); + + return this; + + }, + + slerp: function ( qb, t ) { + + if ( t === 0 ) return this; + if ( t === 1 ) return this.copy( qb ); + + var x = this._x, y = this._y, z = this._z, w = this._w; + + // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ + + var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; + + if ( cosHalfTheta < 0 ) { + + this._w = - qb._w; + this._x = - qb._x; + this._y = - qb._y; + this._z = - qb._z; + + cosHalfTheta = - cosHalfTheta; + + } else { + + this.copy( qb ); + + } + + if ( cosHalfTheta >= 1.0 ) { + + this._w = w; + this._x = x; + this._y = y; + this._z = z; + + return this; + + } + + var sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta ); + + if ( Math.abs( sinHalfTheta ) < 0.001 ) { + + this._w = 0.5 * ( w + this._w ); + this._x = 0.5 * ( x + this._x ); + this._y = 0.5 * ( y + this._y ); + this._z = 0.5 * ( z + this._z ); + + return this; + + } + + var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); + var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, + ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; + + this._w = ( w * ratioA + this._w * ratioB ); + this._x = ( x * ratioA + this._x * ratioB ); + this._y = ( y * ratioA + this._y * ratioB ); + this._z = ( z * ratioA + this._z * ratioB ); + + this.onChangeCallback(); + + return this; + + }, + + equals: function ( quaternion ) { + + return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this._x = array[ offset ]; + this._y = array[ offset + 1 ]; + this._z = array[ offset + 2 ]; + this._w = array[ offset + 3 ]; + + this.onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._w; + + return array; + + }, + + onChange: function ( callback ) { + + this.onChangeCallback = callback; + + return this; + + }, + + onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Vector3( x, y, z ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + + } + + Object.assign( Vector3.prototype, { + + isVector3: true, + + set: function ( x, y, z ) { + + this.x = x; + this.y = y; + this.z = z; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + + return this; + + }, + + multiply: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); + return this.multiplyVectors( v, w ); + + } + + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + + return this; + + }, + + multiplyVectors: function ( a, b ) { + + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + + return this; + + }, + + applyEuler: function () { + + var quaternion = new Quaternion(); + + return function applyEuler( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + return this.applyQuaternion( quaternion.setFromEuler( euler ) ); + + }; + + }(), + + applyAxisAngle: function () { + + var quaternion = new Quaternion(); + + return function applyAxisAngle( axis, angle ) { + + return this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) ); + + }; + + }(), + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; + this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + var w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); + + this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; + this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; + this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; + + return this; + + }, + + applyQuaternion: function ( q ) { + + var x = this.x, y = this.y, z = this.z; + var qx = q.x, qy = q.y, qz = q.z, qw = q.w; + + // calculate quat * vector + + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = - qx * x - qy * y - qz * z; + + // calculate result * inverse quat + + this.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; + this.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; + this.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; + + return this; + + }, + + project: function () { + + var matrix = new Matrix4(); + + return function project( camera ) { + + matrix.multiplyMatrices( camera.projectionMatrix, matrix.getInverse( camera.matrixWorld ) ); + return this.applyMatrix4( matrix ); + + }; + + }(), + + unproject: function () { + + var matrix = new Matrix4(); + + return function unproject( camera ) { + + matrix.multiplyMatrices( camera.matrixWorld, matrix.getInverse( camera.projectionMatrix ) ); + return this.applyMatrix4( matrix ); + + }; + + }(), + + transformDirection: function ( m ) { + + // input: THREE.Matrix4 affine matrix + // vector interpreted as a direction + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; + + return this.normalize(); + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + + return this; + + }, + + clampScalar: function () { + + var min = new Vector3(); + var max = new Vector3(); + + return function clampScalar( minVal, maxVal ) { + + min.set( minVal, minVal, minVal ); + max.set( maxVal, maxVal, maxVal ); + + return this.clamp( min, max ); + + }; + + }(), + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z; + + }, + + // TODO lengthSquared? + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + cross: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); + return this.crossVectors( v, w ); + + } + + return this.crossVectors( this, v ); + + }, + + crossVectors: function ( a, b ) { + + var ax = a.x, ay = a.y, az = a.z; + var bx = b.x, by = b.y, bz = b.z; + + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + + return this; + + }, + + projectOnVector: function ( vector ) { + + var scalar = vector.dot( this ) / vector.lengthSq(); + + return this.copy( vector ).multiplyScalar( scalar ); + + }, + + projectOnPlane: function () { + + var v1 = new Vector3(); + + return function projectOnPlane( planeNormal ) { + + v1.copy( this ).projectOnVector( planeNormal ); + + return this.sub( v1 ); + + }; + + }(), + + reflect: function () { + + // reflect incident vector off plane orthogonal to normal + // normal is assumed to have unit length + + var v1 = new Vector3(); + + return function reflect( normal ) { + + return this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); + + }; + + }(), + + angleTo: function ( v ) { + + var theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) ); + + // clamp, to handle numerical problems + + return Math.acos( _Math.clamp( theta, - 1, 1 ) ); + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; + + return dx * dx + dy * dy + dz * dz; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); + + }, + + setFromSpherical: function ( s ) { + + var sinPhiRadius = Math.sin( s.phi ) * s.radius; + + this.x = sinPhiRadius * Math.sin( s.theta ); + this.y = Math.cos( s.phi ) * s.radius; + this.z = sinPhiRadius * Math.cos( s.theta ); + + return this; + + }, + + setFromCylindrical: function ( c ) { + + this.x = c.radius * Math.sin( c.theta ); + this.y = c.y; + this.z = c.radius * Math.cos( c.theta ); + + return this; + + }, + + setFromMatrixPosition: function ( m ) { + + var e = m.elements; + + this.x = e[ 12 ]; + this.y = e[ 13 ]; + this.z = e[ 14 ]; + + return this; + + }, + + setFromMatrixScale: function ( m ) { + + var sx = this.setFromMatrixColumn( m, 0 ).length(); + var sy = this.setFromMatrixColumn( m, 1 ).length(); + var sz = this.setFromMatrixColumn( m, 2 ).length(); + + this.x = sx; + this.y = sy; + this.z = sz; + + return this; + + }, + + setFromMatrixColumn: function ( m, index ) { + + return this.fromArray( m.elements, index * 4 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + * @author tschw + */ + + function Matrix3() { + + this.elements = [ + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix3.prototype, { + + isMatrix3: true, + + set: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; + te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; + te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new this.constructor().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; + te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; + te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; + + return this; + + }, + + setFromMatrix4: function ( m ) { + + var me = m.elements; + + this.set( + + me[ 0 ], me[ 4 ], me[ 8 ], + me[ 1 ], me[ 5 ], me[ 9 ], + me[ 2 ], me[ 6 ], me[ 10 ] + + ); + + return this; + + }, + + applyToBufferAttribute: function () { + + var v1 = new Vector3(); + + return function applyToBufferAttribute( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + v1.x = attribute.getX( i ); + v1.y = attribute.getY( i ); + v1.z = attribute.getZ( i ); + + v1.applyMatrix3( this ); + + attribute.setXYZ( i, v1.x, v1.y, v1.z ); + + } + + return attribute; + + }; + + }(), + + multiply: function ( m ) { + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; + var a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; + var a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; + + var b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; + var b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; + var b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; + te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; + te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; + te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; + te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; + te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; + te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; + te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; + te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; + + return this; + + }, + + determinant: function () { + + var te = this.elements; + + var a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], + d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], + g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; + + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + + }, + + getInverse: function ( matrix, throwOnDegenerate ) { + + if ( matrix && matrix.isMatrix4 ) { + + console.error( "THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument." ); + + } + + var me = matrix.elements, + te = this.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], + n12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ], + n13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ], + + t11 = n33 * n22 - n32 * n23, + t12 = n32 * n13 - n33 * n12, + t13 = n23 * n12 - n22 * n13, + + det = n11 * t11 + n21 * t12 + n31 * t13; + + if ( det === 0 ) { + + var msg = "THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; + te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; + + te[ 3 ] = t12 * detInv; + te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; + te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; + + te[ 6 ] = t13 * detInv; + te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; + te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; + + return this; + + }, + + transpose: function () { + + var tmp, m = this.elements; + + tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; + tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; + tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; + + return this; + + }, + + getNormalMatrix: function ( matrix4 ) { + + return this.setFromMatrix4( matrix4 ).getInverse( this ).transpose(); + + }, + + transposeIntoArray: function ( r ) { + + var m = this.elements; + + r[ 0 ] = m[ 0 ]; + r[ 1 ] = m[ 3 ]; + r[ 2 ] = m[ 6 ]; + r[ 3 ] = m[ 1 ]; + r[ 4 ] = m[ 4 ]; + r[ 5 ] = m[ 7 ]; + r[ 6 ] = m[ 2 ]; + r[ 7 ] = m[ 5 ]; + r[ 8 ] = m[ 8 ]; + + return this; + + }, + + setUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) { + + var c = Math.cos( rotation ); + var s = Math.sin( rotation ); + + this.set( + sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, + - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, + 0, 0, 1 + ); + + }, + + scale: function ( sx, sy ) { + + var te = this.elements; + + te[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx; + te[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy; + + return this; + + }, + + rotate: function ( theta ) { + + var c = Math.cos( theta ); + var s = Math.sin( theta ); + + var te = this.elements; + + var a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ]; + var a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ]; + + te[ 0 ] = c * a11 + s * a21; + te[ 3 ] = c * a12 + s * a22; + te[ 6 ] = c * a13 + s * a23; + + te[ 1 ] = - s * a11 + c * a21; + te[ 4 ] = - s * a12 + c * a22; + te[ 7 ] = - s * a13 + c * a23; + + return this; + + }, + + translate: function ( tx, ty ) { + + var te = this.elements; + + te[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ]; + te[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ]; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 9; i ++ ) { + + if ( te[ i ] !== me[ i ] ) return false; + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + for ( var i = 0; i < 9; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + + array[ offset + 3 ] = te[ 3 ]; + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + array[ offset + 8 ] = te[ 8 ]; + + return array; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + */ + + var textureId = 0; + + function Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + Object.defineProperty( this, 'id', { value: textureId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + + this.image = image !== undefined ? image : Texture.DEFAULT_IMAGE; + this.mipmaps = []; + + this.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING; + + this.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping; + this.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping; + + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + this.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter; + + this.anisotropy = anisotropy !== undefined ? anisotropy : 1; + + this.format = format !== undefined ? format : RGBAFormat; + this.type = type !== undefined ? type : UnsignedByteType; + + this.offset = new Vector2( 0, 0 ); + this.repeat = new Vector2( 1, 1 ); + this.center = new Vector2( 0, 0 ); + this.rotation = 0; + + this.matrixAutoUpdate = true; + this.matrix = new Matrix3(); + + this.generateMipmaps = true; + this.premultiplyAlpha = false; + this.flipY = true; + this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) + + // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap. + // + // Also changing the encoding after already used by a Material will not automatically make the Material + // update. You need to explicitly call Material.needsUpdate to trigger it to recompile. + this.encoding = encoding !== undefined ? encoding : LinearEncoding; + + this.version = 0; + this.onUpdate = null; + + } + + Texture.DEFAULT_IMAGE = undefined; + Texture.DEFAULT_MAPPING = UVMapping; + + Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Texture, + + isTexture: true, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.image = source.image; + this.mipmaps = source.mipmaps.slice( 0 ); + + this.mapping = source.mapping; + + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + + this.anisotropy = source.anisotropy; + + this.format = source.format; + this.type = source.type; + + this.offset.copy( source.offset ); + this.repeat.copy( source.repeat ); + this.center.copy( source.center ); + this.rotation = source.rotation; + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy( source.matrix ); + + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.encoding = source.encoding; + + return this; + + }, + + toJSON: function ( meta ) { + + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { + + return meta.textures[ this.uuid ]; + + } + + function getDataURL( image ) { + + var canvas; + + if ( image instanceof HTMLCanvasElement ) { + + canvas = image; + + } else { + + canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + canvas.width = image.width; + canvas.height = image.height; + + var context = canvas.getContext( '2d' ); + + if ( image instanceof ImageData ) { + + context.putImageData( image, 0, 0 ); + + } else { + + context.drawImage( image, 0, 0, image.width, image.height ); + + } + + } + + if ( canvas.width > 2048 || canvas.height > 2048 ) { + + return canvas.toDataURL( 'image/jpeg', 0.6 ); + + } else { + + return canvas.toDataURL( 'image/png' ); + + } + + } + + var output = { + metadata: { + version: 4.5, + type: 'Texture', + generator: 'Texture.toJSON' + }, + + uuid: this.uuid, + name: this.name, + + mapping: this.mapping, + + repeat: [ this.repeat.x, this.repeat.y ], + offset: [ this.offset.x, this.offset.y ], + center: [ this.center.x, this.center.y ], + rotation: this.rotation, + + wrap: [ this.wrapS, this.wrapT ], + + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + + flipY: this.flipY + }; + + if ( this.image !== undefined ) { + + // TODO: Move to THREE.Image + + var image = this.image; + + if ( image.uuid === undefined ) { + + image.uuid = _Math.generateUUID(); // UGH + + } + + if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) { + + meta.images[ image.uuid ] = { + uuid: image.uuid, + url: getDataURL( image ) + }; + + } + + output.image = image.uuid; + + } + + if ( ! isRootObject ) { + + meta.textures[ this.uuid ] = output; + + } + + return output; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + }, + + transformUv: function ( uv ) { + + if ( this.mapping !== UVMapping ) return; + + uv.applyMatrix3( this.matrix ); + + if ( uv.x < 0 || uv.x > 1 ) { + + switch ( this.wrapS ) { + + case RepeatWrapping: + + uv.x = uv.x - Math.floor( uv.x ); + break; + + case ClampToEdgeWrapping: + + uv.x = uv.x < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { + + uv.x = Math.ceil( uv.x ) - uv.x; + + } else { + + uv.x = uv.x - Math.floor( uv.x ); + + } + break; + + } + + } + + if ( uv.y < 0 || uv.y > 1 ) { + + switch ( this.wrapT ) { + + case RepeatWrapping: + + uv.y = uv.y - Math.floor( uv.y ); + break; + + case ClampToEdgeWrapping: + + uv.y = uv.y < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { + + uv.y = Math.ceil( uv.y ) - uv.y; + + } else { + + uv.y = uv.y - Math.floor( uv.y ); + + } + break; + + } + + } + + if ( this.flipY ) { + + uv.y = 1 - uv.y; + + } + + } + + } ); + + Object.defineProperty( Texture.prototype, "needsUpdate", { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Vector4( x, y, z, w ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = ( w !== undefined ) ? w : 1; + + } + + Object.assign( Vector4.prototype, { + + isVector4: true, + + set: function ( x, y, z, w ) { + + this.x = x; + this.y = y; + this.z = z; + this.w = w; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setW: function ( w ) { + + this.w = w; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + case 3: this.w = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + case 3: return this.w; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z, this.w ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = ( v.w !== undefined ) ? v.w : 1; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + this.w += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z, w = this.w; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; + this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + setAxisAngleFromQuaternion: function ( q ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm + + // q is assumed to be normalized + + this.w = 2 * Math.acos( q.w ); + + var s = Math.sqrt( 1 - q.w * q.w ); + + if ( s < 0.0001 ) { + + this.x = 1; + this.y = 0; + this.z = 0; + + } else { + + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + + } + + return this; + + }, + + setAxisAngleFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var angle, x, y, z, // variables for result + epsilon = 0.01, // margin to allow for rounding errors + epsilon2 = 0.1, // margin to distinguish between 0 and 180 degrees + + te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + if ( ( Math.abs( m12 - m21 ) < epsilon ) && + ( Math.abs( m13 - m31 ) < epsilon ) && + ( Math.abs( m23 - m32 ) < epsilon ) ) { + + // singularity found + // first check for identity matrix which must have +1 for all terms + // in leading diagonal and zero in other terms + + if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && + ( Math.abs( m13 + m31 ) < epsilon2 ) && + ( Math.abs( m23 + m32 ) < epsilon2 ) && + ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { + + // this singularity is identity matrix so angle = 0 + + this.set( 1, 0, 0, 0 ); + + return this; // zero angle, arbitrary axis + + } + + // otherwise this singularity is angle = 180 + + angle = Math.PI; + + var xx = ( m11 + 1 ) / 2; + var yy = ( m22 + 1 ) / 2; + var zz = ( m33 + 1 ) / 2; + var xy = ( m12 + m21 ) / 4; + var xz = ( m13 + m31 ) / 4; + var yz = ( m23 + m32 ) / 4; + + if ( ( xx > yy ) && ( xx > zz ) ) { + + // m11 is the largest diagonal term + + if ( xx < epsilon ) { + + x = 0; + y = 0.707106781; + z = 0.707106781; + + } else { + + x = Math.sqrt( xx ); + y = xy / x; + z = xz / x; + + } + + } else if ( yy > zz ) { + + // m22 is the largest diagonal term + + if ( yy < epsilon ) { + + x = 0.707106781; + y = 0; + z = 0.707106781; + + } else { + + y = Math.sqrt( yy ); + x = xy / y; + z = yz / y; + + } + + } else { + + // m33 is the largest diagonal term so base result on this + + if ( zz < epsilon ) { + + x = 0.707106781; + y = 0.707106781; + z = 0; + + } else { + + z = Math.sqrt( zz ); + x = xz / z; + y = yz / z; + + } + + } + + this.set( x, y, z, angle ); + + return this; // return 180 deg rotation + + } + + // as we have reached here there are no singularities so we can handle normally + + var s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + + ( m13 - m31 ) * ( m13 - m31 ) + + ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize + + if ( Math.abs( s ) < 0.001 ) s = 1; + + // prevent divide by zero, should not happen if matrix is orthogonal and should be + // caught by singularity test above, but I've left it in just in case + + this.x = ( m32 - m23 ) / s; + this.y = ( m13 - m31 ) / s; + this.z = ( m21 - m12 ) / s; + this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + this.w = Math.min( this.w, v.w ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + this.w = Math.max( this.w, v.w ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + this.w = Math.max( min.w, Math.min( max.w, this.w ) ); + + return this; + + }, + + clampScalar: function () { + + var min, max; + + return function clampScalar( minVal, maxVal ) { + + if ( min === undefined ) { + + min = new Vector4(); + max = new Vector4(); + + } + + min.set( minVal, minVal, minVal, minVal ); + max.set( maxVal, maxVal, maxVal, maxVal ); + + return this.clamp( min, max ); + + }; + + }(), + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + this.w = Math.floor( this.w ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + this.w = Math.ceil( this.w ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + this.w = Math.round( this.w ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + this.w = - this.w; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + this.w += ( v.w - this.w ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + this.w = array[ offset + 3 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + array[ offset + 3 ] = this.w; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + this.w = attribute.getW( index ); + + return this; + + } + + } ); + + /** + * @author szimek / https://github.com/szimek/ + * @author alteredq / http://alteredqualia.com/ + * @author Marius Kintel / https://github.com/kintel + */ + + /* + In options, we can specify: + * Texture parameters for an auto-generated target texture + * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers + */ + function WebGLRenderTarget( width, height, options ) { + + this.uuid = _Math.generateUUID(); + + this.width = width; + this.height = height; + + this.scissor = new Vector4( 0, 0, width, height ); + this.scissorTest = false; + + this.viewport = new Vector4( 0, 0, width, height ); + + options = options || {}; + + if ( options.minFilter === undefined ) options.minFilter = LinearFilter; + + this.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding ); + + this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true; + this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true; + this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null; + + } + + WebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: WebGLRenderTarget, + + isWebGLRenderTarget: true, + + setSize: function ( width, height ) { + + if ( this.width !== width || this.height !== height ) { + + this.width = width; + this.height = height; + + this.dispose(); + + } + + this.viewport.set( 0, 0, width, height ); + this.scissor.set( 0, 0, width, height ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.width = source.width; + this.height = source.height; + + this.viewport.copy( source.viewport ); + + this.texture = source.texture.clone(); + + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + this.depthTexture = source.depthTexture; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com + */ + + function WebGLRenderTargetCube( width, height, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + this.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5 + this.activeMipMapLevel = 0; + + } + + WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); + WebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube; + + WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { data: data, width: width, height: height }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + + } + + DataTexture.prototype = Object.create( Texture.prototype ); + DataTexture.prototype.constructor = DataTexture; + + DataTexture.prototype.isDataTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + images = images !== undefined ? images : []; + mapping = mapping !== undefined ? mapping : CubeReflectionMapping; + + Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.flipY = false; + + } + + CubeTexture.prototype = Object.create( Texture.prototype ); + CubeTexture.prototype.constructor = CubeTexture; + + CubeTexture.prototype.isCubeTexture = true; + + Object.defineProperty( CubeTexture.prototype, 'images', { + + get: function () { + + return this.image; + + }, + + set: function ( value ) { + + this.image = value; + + } + + } ); + + /** + * @author tschw + * + * Uniforms of a program. + * Those form a tree structure with a special top-level container for the root, + * which you get by calling 'new WebGLUniforms( gl, program, renderer )'. + * + * + * Properties of inner nodes including the top-level container: + * + * .seq - array of nested uniforms + * .map - nested uniforms by name + * + * + * Methods of all nodes except the top-level container: + * + * .setValue( gl, value, [renderer] ) + * + * uploads a uniform value(s) + * the 'renderer' parameter is needed for sampler uniforms + * + * + * Static methods of the top-level container (renderer factorizations): + * + * .upload( gl, seq, values, renderer ) + * + * sets uniforms in 'seq' to 'values[id].value' + * + * .seqWithValue( seq, values ) : filteredSeq + * + * filters 'seq' entries with corresponding entry in values + * + * + * Methods of the top-level container (renderer factorizations): + * + * .setValue( gl, name, value ) + * + * sets uniform with name 'name' to 'value' + * + * .set( gl, obj, prop ) + * + * sets uniform from object and property with same name than uniform + * + * .setOptional( gl, obj, prop ) + * + * like .set for an optional property of the object + * + */ + + var emptyTexture = new Texture(); + var emptyCubeTexture = new CubeTexture(); + + // --- Base for inner nodes (including the root) --- + + function UniformContainer() { + + this.seq = []; + this.map = {}; + + } + + // --- Utilities --- + + // Array Caches (provide typed arrays for temporary by size) + + var arrayCacheF32 = []; + var arrayCacheI32 = []; + + // Float32Array caches used for uploading Matrix uniforms + + var mat4array = new Float32Array( 16 ); + var mat3array = new Float32Array( 9 ); + + // Flattening for arrays of vectors and matrices + + function flatten( array, nBlocks, blockSize ) { + + var firstElem = array[ 0 ]; + + if ( firstElem <= 0 || firstElem > 0 ) return array; + // unoptimized: ! isNaN( firstElem ) + // see http://jacksondunstan.com/articles/983 + + var n = nBlocks * blockSize, + r = arrayCacheF32[ n ]; + + if ( r === undefined ) { + + r = new Float32Array( n ); + arrayCacheF32[ n ] = r; + + } + + if ( nBlocks !== 0 ) { + + firstElem.toArray( r, 0 ); + + for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) { + + offset += blockSize; + array[ i ].toArray( r, offset ); + + } + + } + + return r; + + } + + // Texture unit allocation + + function allocTexUnits( renderer, n ) { + + var r = arrayCacheI32[ n ]; + + if ( r === undefined ) { + + r = new Int32Array( n ); + arrayCacheI32[ n ] = r; + + } + + for ( var i = 0; i !== n; ++ i ) + r[ i ] = renderer.allocTextureUnit(); + + return r; + + } + + // --- Setters --- + + // Note: Defining these methods externally, because they come in a bunch + // and this way their names minify. + + // Single scalar + + function setValue1f( gl, v ) { + + gl.uniform1f( this.addr, v ); + + } + + function setValue1i( gl, v ) { + + gl.uniform1i( this.addr, v ); + + } + + // Single float vector (from flat array or THREE.VectorN) + + function setValue2fv( gl, v ) { + + if ( v.x === undefined ) { + + gl.uniform2fv( this.addr, v ); + + } else { + + gl.uniform2f( this.addr, v.x, v.y ); + + } + + } + + function setValue3fv( gl, v ) { + + if ( v.x !== undefined ) { + + gl.uniform3f( this.addr, v.x, v.y, v.z ); + + } else if ( v.r !== undefined ) { + + gl.uniform3f( this.addr, v.r, v.g, v.b ); + + } else { + + gl.uniform3fv( this.addr, v ); + + } + + } + + function setValue4fv( gl, v ) { + + if ( v.x === undefined ) { + + gl.uniform4fv( this.addr, v ); + + } else { + + gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); + + } + + } + + // Single matrix (from flat array or MatrixN) + + function setValue2fm( gl, v ) { + + gl.uniformMatrix2fv( this.addr, false, v.elements || v ); + + } + + function setValue3fm( gl, v ) { + + if ( v.elements === undefined ) { + + gl.uniformMatrix3fv( this.addr, false, v ); + + } else { + + mat3array.set( v.elements ); + gl.uniformMatrix3fv( this.addr, false, mat3array ); + + } + + } + + function setValue4fm( gl, v ) { + + if ( v.elements === undefined ) { + + gl.uniformMatrix4fv( this.addr, false, v ); + + } else { + + mat4array.set( v.elements ); + gl.uniformMatrix4fv( this.addr, false, mat4array ); + + } + + } + + // Single texture (2D / Cube) + + function setValueT1( gl, v, renderer ) { + + var unit = renderer.allocTextureUnit(); + gl.uniform1i( this.addr, unit ); + renderer.setTexture2D( v || emptyTexture, unit ); + + } + + function setValueT6( gl, v, renderer ) { + + var unit = renderer.allocTextureUnit(); + gl.uniform1i( this.addr, unit ); + renderer.setTextureCube( v || emptyCubeTexture, unit ); + + } + + // Integer / Boolean vectors or arrays thereof (always flat arrays) + + function setValue2iv( gl, v ) { + + gl.uniform2iv( this.addr, v ); + + } + + function setValue3iv( gl, v ) { + + gl.uniform3iv( this.addr, v ); + + } + + function setValue4iv( gl, v ) { + + gl.uniform4iv( this.addr, v ); + + } + + // Helper to pick the right setter for the singular case + + function getSingularSetter( type ) { + + switch ( type ) { + + case 0x1406: return setValue1f; // FLOAT + case 0x8b50: return setValue2fv; // _VEC2 + case 0x8b51: return setValue3fv; // _VEC3 + case 0x8b52: return setValue4fv; // _VEC4 + + case 0x8b5a: return setValue2fm; // _MAT2 + case 0x8b5b: return setValue3fm; // _MAT3 + case 0x8b5c: return setValue4fm; // _MAT4 + + case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES + case 0x8b60: return setValueT6; // SAMPLER_CUBE + + case 0x1404: case 0x8b56: return setValue1i; // INT, BOOL + case 0x8b53: case 0x8b57: return setValue2iv; // _VEC2 + case 0x8b54: case 0x8b58: return setValue3iv; // _VEC3 + case 0x8b55: case 0x8b59: return setValue4iv; // _VEC4 + + } + + } + + // Array of scalars + + function setValue1fv( gl, v ) { + + gl.uniform1fv( this.addr, v ); + + } + function setValue1iv( gl, v ) { + + gl.uniform1iv( this.addr, v ); + + } + + // Array of vectors (flat or from THREE classes) + + function setValueV2a( gl, v ) { + + gl.uniform2fv( this.addr, flatten( v, this.size, 2 ) ); + + } + + function setValueV3a( gl, v ) { + + gl.uniform3fv( this.addr, flatten( v, this.size, 3 ) ); + + } + + function setValueV4a( gl, v ) { + + gl.uniform4fv( this.addr, flatten( v, this.size, 4 ) ); + + } + + // Array of matrices (flat or from THREE clases) + + function setValueM2a( gl, v ) { + + gl.uniformMatrix2fv( this.addr, false, flatten( v, this.size, 4 ) ); + + } + + function setValueM3a( gl, v ) { + + gl.uniformMatrix3fv( this.addr, false, flatten( v, this.size, 9 ) ); + + } + + function setValueM4a( gl, v ) { + + gl.uniformMatrix4fv( this.addr, false, flatten( v, this.size, 16 ) ); + + } + + // Array of textures (2D / Cube) + + function setValueT1a( gl, v, renderer ) { + + var n = v.length, + units = allocTexUnits( renderer, n ); + + gl.uniform1iv( this.addr, units ); + + for ( var i = 0; i !== n; ++ i ) { + + renderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] ); + + } + + } + + function setValueT6a( gl, v, renderer ) { + + var n = v.length, + units = allocTexUnits( renderer, n ); + + gl.uniform1iv( this.addr, units ); + + for ( var i = 0; i !== n; ++ i ) { + + renderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); + + } + + } + + // Helper to pick the right setter for a pure (bottom-level) array + + function getPureArraySetter( type ) { + + switch ( type ) { + + case 0x1406: return setValue1fv; // FLOAT + case 0x8b50: return setValueV2a; // _VEC2 + case 0x8b51: return setValueV3a; // _VEC3 + case 0x8b52: return setValueV4a; // _VEC4 + + case 0x8b5a: return setValueM2a; // _MAT2 + case 0x8b5b: return setValueM3a; // _MAT3 + case 0x8b5c: return setValueM4a; // _MAT4 + + case 0x8b5e: return setValueT1a; // SAMPLER_2D + case 0x8b60: return setValueT6a; // SAMPLER_CUBE + + case 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL + case 0x8b53: case 0x8b57: return setValue2iv; // _VEC2 + case 0x8b54: case 0x8b58: return setValue3iv; // _VEC3 + case 0x8b55: case 0x8b59: return setValue4iv; // _VEC4 + + } + + } + + // --- Uniform Classes --- + + function SingleUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.setValue = getSingularSetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + function PureArrayUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.size = activeInfo.size; + this.setValue = getPureArraySetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + function StructuredUniform( id ) { + + this.id = id; + + UniformContainer.call( this ); // mix-in + + } + + StructuredUniform.prototype.setValue = function ( gl, value ) { + + // Note: Don't need an extra 'renderer' parameter, since samplers + // are not allowed in structured uniforms. + + var seq = this.seq; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + u.setValue( gl, value[ u.id ] ); + + } + + }; + + // --- Top-level --- + + // Parser - builds up the property tree from the path strings + + var RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g; + + // extracts + // - the identifier (member name or array index) + // - followed by an optional right bracket (found when array index) + // - followed by an optional left bracket or dot (type of subscript) + // + // Note: These portions can be read in a non-overlapping fashion and + // allow straightforward parsing of the hierarchy that WebGL encodes + // in the uniform names. + + function addUniform( container, uniformObject ) { + + container.seq.push( uniformObject ); + container.map[ uniformObject.id ] = uniformObject; + + } + + function parseUniform( activeInfo, addr, container ) { + + var path = activeInfo.name, + pathLength = path.length; + + // reset RegExp object, because of the early exit of a previous run + RePathPart.lastIndex = 0; + + for ( ; ; ) { + + var match = RePathPart.exec( path ), + matchEnd = RePathPart.lastIndex, + + id = match[ 1 ], + idIsIndex = match[ 2 ] === ']', + subscript = match[ 3 ]; + + if ( idIsIndex ) id = id | 0; // convert to integer + + if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { + + // bare name or "pure" bottom-level array "[0]" suffix + + addUniform( container, subscript === undefined ? + new SingleUniform( id, activeInfo, addr ) : + new PureArrayUniform( id, activeInfo, addr ) ); + + break; + + } else { + + // step into inner node / create it in case it doesn't exist + + var map = container.map, next = map[ id ]; + + if ( next === undefined ) { + + next = new StructuredUniform( id ); + addUniform( container, next ); + + } + + container = next; + + } + + } + + } + + // Root Container + + function WebGLUniforms( gl, program, renderer ) { + + UniformContainer.call( this ); + + this.renderer = renderer; + + var n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS ); + + for ( var i = 0; i < n; ++ i ) { + + var info = gl.getActiveUniform( program, i ), + path = info.name, + addr = gl.getUniformLocation( program, path ); + + parseUniform( info, addr, this ); + + } + + } + + WebGLUniforms.prototype.setValue = function ( gl, name, value ) { + + var u = this.map[ name ]; + + if ( u !== undefined ) u.setValue( gl, value, this.renderer ); + + }; + + WebGLUniforms.prototype.setOptional = function ( gl, object, name ) { + + var v = object[ name ]; + + if ( v !== undefined ) this.setValue( gl, name, v ); + + }; + + + // Static interface + + WebGLUniforms.upload = function ( gl, seq, values, renderer ) { + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ], + v = values[ u.id ]; + + if ( v.needsUpdate !== false ) { + + // note: always updating when .needsUpdate is undefined + u.setValue( gl, v.value, renderer ); + + } + + } + + }; + + WebGLUniforms.seqWithValue = function ( seq, values ) { + + var r = []; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + if ( u.id in values ) r.push( u ); + + } + + return r; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, + 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, + 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, + 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, + 'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B, + 'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F, + 'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3, + 'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222, + 'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700, + 'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4, + 'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00, + 'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3, + 'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA, + 'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32, + 'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3, + 'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC, + 'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD, + 'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6, + 'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9, + 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F, + 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, + 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, + 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, + 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; + + function Color( r, g, b ) { + + if ( g === undefined && b === undefined ) { + + // r is THREE.Color, hex or string + return this.set( r ); + + } + + return this.setRGB( r, g, b ); + + } + + Object.assign( Color.prototype, { + + isColor: true, + + r: 1, g: 1, b: 1, + + set: function ( value ) { + + if ( value && value.isColor ) { + + this.copy( value ); + + } else if ( typeof value === 'number' ) { + + this.setHex( value ); + + } else if ( typeof value === 'string' ) { + + this.setStyle( value ); + + } + + return this; + + }, + + setScalar: function ( scalar ) { + + this.r = scalar; + this.g = scalar; + this.b = scalar; + + return this; + + }, + + setHex: function ( hex ) { + + hex = Math.floor( hex ); + + this.r = ( hex >> 16 & 255 ) / 255; + this.g = ( hex >> 8 & 255 ) / 255; + this.b = ( hex & 255 ) / 255; + + return this; + + }, + + setRGB: function ( r, g, b ) { + + this.r = r; + this.g = g; + this.b = b; + + return this; + + }, + + setHSL: function () { + + function hue2rgb( p, q, t ) { + + if ( t < 0 ) t += 1; + if ( t > 1 ) t -= 1; + if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t; + if ( t < 1 / 2 ) return q; + if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t ); + return p; + + } + + return function setHSL( h, s, l ) { + + // h,s,l ranges are in 0.0 - 1.0 + h = _Math.euclideanModulo( h, 1 ); + s = _Math.clamp( s, 0, 1 ); + l = _Math.clamp( l, 0, 1 ); + + if ( s === 0 ) { + + this.r = this.g = this.b = l; + + } else { + + var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); + var q = ( 2 * l ) - p; + + this.r = hue2rgb( q, p, h + 1 / 3 ); + this.g = hue2rgb( q, p, h ); + this.b = hue2rgb( q, p, h - 1 / 3 ); + + } + + return this; + + }; + + }(), + + setStyle: function ( style ) { + + function handleAlpha( string ) { + + if ( string === undefined ) return; + + if ( parseFloat( string ) < 1 ) { + + console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); + + } + + } + + + var m; + + if ( m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec( style ) ) { + + // rgb / hsl + + var color; + var name = m[ 1 ]; + var components = m[ 2 ]; + + switch ( name ) { + + case 'rgb': + case 'rgba': + + if ( color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(255,0,0) rgba(255,0,0,0.5) + this.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255; + this.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255; + this.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + if ( color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) + this.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100; + this.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100; + this.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + break; + + case 'hsl': + case 'hsla': + + if ( color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // hsl(120,50%,50%) hsla(120,50%,50%,0.5) + var h = parseFloat( color[ 1 ] ) / 360; + var s = parseInt( color[ 2 ], 10 ) / 100; + var l = parseInt( color[ 3 ], 10 ) / 100; + + handleAlpha( color[ 5 ] ); + + return this.setHSL( h, s, l ); + + } + + break; + + } + + } else if ( m = /^\#([A-Fa-f0-9]+)$/.exec( style ) ) { + + // hex color + + var hex = m[ 1 ]; + var size = hex.length; + + if ( size === 3 ) { + + // #ff0 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255; + + return this; + + } else if ( size === 6 ) { + + // #ff0000 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255; + + return this; + + } + + } + + if ( style && style.length > 0 ) { + + // color keywords + var hex = ColorKeywords[ style ]; + + if ( hex !== undefined ) { + + // red + this.setHex( hex ); + + } else { + + // unknown color + console.warn( 'THREE.Color: Unknown color ' + style ); + + } + + } + + return this; + + }, + + clone: function () { + + return new this.constructor( this.r, this.g, this.b ); + + }, + + copy: function ( color ) { + + this.r = color.r; + this.g = color.g; + this.b = color.b; + + return this; + + }, + + copyGammaToLinear: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; + + this.r = Math.pow( color.r, gammaFactor ); + this.g = Math.pow( color.g, gammaFactor ); + this.b = Math.pow( color.b, gammaFactor ); + + return this; + + }, + + copyLinearToGamma: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) gammaFactor = 2.0; + + var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; + + this.r = Math.pow( color.r, safeInverse ); + this.g = Math.pow( color.g, safeInverse ); + this.b = Math.pow( color.b, safeInverse ); + + return this; + + }, + + convertGammaToLinear: function () { + + var r = this.r, g = this.g, b = this.b; + + this.r = r * r; + this.g = g * g; + this.b = b * b; + + return this; + + }, + + convertLinearToGamma: function () { + + this.r = Math.sqrt( this.r ); + this.g = Math.sqrt( this.g ); + this.b = Math.sqrt( this.b ); + + return this; + + }, + + getHex: function () { + + return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0; + + }, + + getHexString: function () { + + return ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 ); + + }, + + getHSL: function ( optionalTarget ) { + + // h,s,l ranges are in 0.0 - 1.0 + + var hsl = optionalTarget || { h: 0, s: 0, l: 0 }; + + var r = this.r, g = this.g, b = this.b; + + var max = Math.max( r, g, b ); + var min = Math.min( r, g, b ); + + var hue, saturation; + var lightness = ( min + max ) / 2.0; + + if ( min === max ) { + + hue = 0; + saturation = 0; + + } else { + + var delta = max - min; + + saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); + + switch ( max ) { + + case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; + case g: hue = ( b - r ) / delta + 2; break; + case b: hue = ( r - g ) / delta + 4; break; + + } + + hue /= 6; + + } + + hsl.h = hue; + hsl.s = saturation; + hsl.l = lightness; + + return hsl; + + }, + + getStyle: function () { + + return 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')'; + + }, + + offsetHSL: function ( h, s, l ) { + + var hsl = this.getHSL(); + + hsl.h += h; hsl.s += s; hsl.l += l; + + this.setHSL( hsl.h, hsl.s, hsl.l ); + + return this; + + }, + + add: function ( color ) { + + this.r += color.r; + this.g += color.g; + this.b += color.b; + + return this; + + }, + + addColors: function ( color1, color2 ) { + + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + + return this; + + }, + + addScalar: function ( s ) { + + this.r += s; + this.g += s; + this.b += s; + + return this; + + }, + + sub: function ( color ) { + + this.r = Math.max( 0, this.r - color.r ); + this.g = Math.max( 0, this.g - color.g ); + this.b = Math.max( 0, this.b - color.b ); + + return this; + + }, + + multiply: function ( color ) { + + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + + return this; + + }, + + multiplyScalar: function ( s ) { + + this.r *= s; + this.g *= s; + this.b *= s; + + return this; + + }, + + lerp: function ( color, alpha ) { + + this.r += ( color.r - this.r ) * alpha; + this.g += ( color.g - this.g ) * alpha; + this.b += ( color.b - this.b ) * alpha; + + return this; + + }, + + equals: function ( c ) { + + return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) offset = 0; + + this.r = array[ offset ]; + this.g = array[ offset + 1 ]; + this.b = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this.r; + array[ offset + 1 ] = this.g; + array[ offset + 2 ] = this.b; + + return array; + + }, + + toJSON: function () { + + return this.getHex(); + + } + + } ); + + /** + * Uniforms library for shared webgl shaders + */ + + var UniformsLib = { + + common: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + + map: { value: null }, + uvTransform: { value: new Matrix3() }, + + alphaMap: { value: null }, + + }, + + specularmap: { + + specularMap: { value: null }, + + }, + + envmap: { + + envMap: { value: null }, + flipEnvMap: { value: - 1 }, + reflectivity: { value: 1.0 }, + refractionRatio: { value: 0.98 } + + }, + + aomap: { + + aoMap: { value: null }, + aoMapIntensity: { value: 1 } + + }, + + lightmap: { + + lightMap: { value: null }, + lightMapIntensity: { value: 1 } + + }, + + emissivemap: { + + emissiveMap: { value: null } + + }, + + bumpmap: { + + bumpMap: { value: null }, + bumpScale: { value: 1 } + + }, + + normalmap: { + + normalMap: { value: null }, + normalScale: { value: new Vector2( 1, 1 ) } + + }, + + displacementmap: { + + displacementMap: { value: null }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + + }, + + roughnessmap: { + + roughnessMap: { value: null } + + }, + + metalnessmap: { + + metalnessMap: { value: null } + + }, + + gradientmap: { + + gradientMap: { value: null } + + }, + + fog: { + + fogDensity: { value: 0.00025 }, + fogNear: { value: 1 }, + fogFar: { value: 2000 }, + fogColor: { value: new Color( 0xffffff ) } + + }, + + lights: { + + ambientLightColor: { value: [] }, + + directionalLights: { value: [], properties: { + direction: {}, + color: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + spotShadowMap: { value: [] }, + spotShadowMatrix: { value: [] }, + + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } } + + }, + + points: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + size: { value: 1.0 }, + scale: { value: 1.0 }, + map: { value: null }, + uvTransform: { value: new Matrix3() } + + } + + }; + + /** + * Uniform Utilities + */ + + var UniformsUtils = { + + merge: function ( uniforms ) { + + var merged = {}; + + for ( var u = 0; u < uniforms.length; u ++ ) { + + var tmp = this.clone( uniforms[ u ] ); + + for ( var p in tmp ) { + + merged[ p ] = tmp[ p ]; + + } + + } + + return merged; + + }, + + clone: function ( uniforms_src ) { + + var uniforms_dst = {}; + + for ( var u in uniforms_src ) { + + uniforms_dst[ u ] = {}; + + for ( var p in uniforms_src[ u ] ) { + + var parameter_src = uniforms_src[ u ][ p ]; + + if ( parameter_src && ( parameter_src.isColor || + parameter_src.isMatrix3 || parameter_src.isMatrix4 || + parameter_src.isVector2 || parameter_src.isVector3 || parameter_src.isVector4 || + parameter_src.isTexture ) ) { + + uniforms_dst[ u ][ p ] = parameter_src.clone(); + + } else if ( Array.isArray( parameter_src ) ) { + + uniforms_dst[ u ][ p ] = parameter_src.slice(); + + } else { + + uniforms_dst[ u ][ p ] = parameter_src; + + } + + } + + } + + return uniforms_dst; + + } + + }; + + var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif\n"; + + var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif\n"; + + var alphatest_fragment = "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif\n"; + + var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif\n"; + + var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; + + var begin_vertex = "\nvec3 transformed = vec3( position );\n"; + + var beginnormal_vertex = "\nvec3 objectNormal = vec3( normal );\n"; + + var bsdfs = "float punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\tif( decayExponent > 0.0 ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\treturn distanceFalloff * maxDistanceCutoffFactor;\n#else\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n#endif\n\t}\n\treturn 1.0;\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat theta = acos( dot( N, V ) );\n\tvec2 uv = vec2(\n\t\tsqrt( saturate( roughness ) ),\n\t\tsaturate( theta / ( 0.5 * PI ) ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.86267 + (0.49788 + 0.01436 * y ) * y;\n\tfloat b = 3.45068 + (4.18814 + y) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = (x > 0.0) ? v : 0.5 * inversesqrt( 1.0 - x * x ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tvec3 result = vec3( LTC_ClippedSphereFormFactor( vectorFormFactor ) );\n\treturn result;\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\n\treturn specularColor * AB.x + AB.y;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n"; + + var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif\n"; + + var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; ++ i ) {\n\t\tvec4 plane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t\t\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; ++ i ) {\n\t\t\tvec4 plane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t\n\t#endif\n#endif\n"; + + var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif\n"; + + var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvarying vec3 vViewPosition;\n#endif\n"; + + var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n"; + + var color_fragment = "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif"; + + var color_pars_fragment = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif\n"; + + var color_pars_vertex = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; + + var color_vertex = "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif"; + + var common = "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\n"; + + var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif\n"; + + var defaultnormal_vertex = "vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n"; + + var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif\n"; + + var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif\n"; + + var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif\n"; + + var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif\n"; + + var encodings_fragment = " gl_FragColor = linearToOutputTexel( gl_FragColor );\n"; + + var encodings_pars_fragment = "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.xyz * value.w * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\n\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract(Le);\n\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\n\treturn vec4( max(vRGB, 0.0), 1.0 );\n}\n"; + + var envmap_fragment = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif\n"; + + var envmap_pars_fragment = "#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif\n"; + + var envmap_pars_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif\n"; + + var envmap_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif\n"; + + var fog_vertex = "\n#ifdef USE_FOG\nfogDepth = -mvPosition.z;\n#endif"; + + var fog_pars_vertex = "#ifdef USE_FOG\n varying float fogDepth;\n#endif\n"; + + var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif\n"; + + var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif\n"; + + var gradientmap_pars_fragment = "#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif\n"; + + var lightmap_fragment = "#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif\n"; + + var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; + + var lights_lambert_vertex = "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif\n"; + + var lights_pars = "uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltcMat;\tuniform sampler2D ltcMag;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif\n#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif\n"; + + var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;\n"; + + var lights_phong_pars_fragment = "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)\n"; + + var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif\n"; + + var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tfloat norm = texture2D( ltcMag, uv ).a;\n\t\tvec4 t = texture2D( ltcMat, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( 1, 0, t.y ),\n\t\t\tvec3( 0, t.z, 0 ),\n\t\t\tvec3( t.w, 0, t.x )\n\t\t);\n\t\treflectedLight.directSpecular += lightColor * material.specularColor * norm * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}\n"; + + var lights_template = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, 8 );\n\t#endif\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tvec3 radiance = getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), 8 );\n\t#ifndef STANDARD\n\t\tvec3 clearCoatRadiance = getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 8 );\n\t#else\n\t\tvec3 clearCoatRadiance = vec3( 0.0 );\n\t#endif\n\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif\n"; + + var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif"; + + var logdepthbuf_pars_fragment = "#ifdef USE_LOGDEPTHBUF\n\tuniform float logDepthBufFC;\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n#endif\n"; + + var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n\tuniform float logDepthBufFC;\n#endif"; + + var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif\n"; + + var map_fragment = "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n"; + + var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n"; + + var map_particle_fragment = "#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n"; + + var map_particle_pars_fragment = "#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif\n"; + + var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif\n"; + + var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; + + var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif\n"; + + var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif"; + + var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif\n"; + + var normal_fragment = "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n#endif\n#ifdef USE_NORMALMAP\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif\n"; + + var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n\t\tvec3 N = normalize( surf_norm );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif\n"; + + var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}\n"; + + var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif\n"; + + var project_vertex = "vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;\n"; + + var dithering_fragment = "#if defined( DITHERING )\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif\n"; + + var dithering_pars_fragment = "#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif\n"; + + var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif\n"; + + var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; + + var shadowmap_pars_fragment = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif\n"; + + var shadowmap_pars_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif\n"; + + var shadowmap_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif\n"; + + var shadowmask_pars_fragment = "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}\n"; + + var skinbase_vertex = "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; + + var skinning_pars_vertex = "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif\n"; + + var skinning_vertex = "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif\n"; + + var skinnormal_vertex = "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n#endif\n"; + + var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif"; + + var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; + + var tonemapping_fragment = "#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif\n"; + + var tonemapping_pars_fragment = "#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\n"; + + var uv_pars_fragment = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif"; + + var uv_pars_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\n"; + + var uv_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif"; + + var uv2_pars_fragment = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_pars_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif"; + + var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif\n"; + + var cube_frag = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldPosition;\nvoid main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\n\tgl_FragColor.a *= opacity;\n}\n"; + + var cube_vert = "varying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}\n"; + + var depth_frag = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}\n"; + + var depth_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var distanceRGBA_frag = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}\n"; + + var distanceRGBA_vert = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}\n"; + + var equirect_frag = "uniform sampler2D tEquirect;\nvarying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldPosition );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n}\n"; + + var equirect_vert = "varying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}\n"; + + var linedashed_frag = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var linedashed_vert = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}\n"; + + var meshbasic_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var meshbasic_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var meshlambert_frag = "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var meshlambert_vert = "#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var meshphong_frag = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var meshphong_vert = "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var meshphysical_frag = "#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var meshphysical_vert = "#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}\n"; + + var normal_frag = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}\n"; + + var normal_vert = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}\n"; + + var points_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var points_vert = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#ifdef USE_SIZEATTENUATION\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var shadow_frag = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}\n"; + + var shadow_vert = "#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n"; + + var ShaderChunk = { + alphamap_fragment: alphamap_fragment, + alphamap_pars_fragment: alphamap_pars_fragment, + alphatest_fragment: alphatest_fragment, + aomap_fragment: aomap_fragment, + aomap_pars_fragment: aomap_pars_fragment, + begin_vertex: begin_vertex, + beginnormal_vertex: beginnormal_vertex, + bsdfs: bsdfs, + bumpmap_pars_fragment: bumpmap_pars_fragment, + clipping_planes_fragment: clipping_planes_fragment, + clipping_planes_pars_fragment: clipping_planes_pars_fragment, + clipping_planes_pars_vertex: clipping_planes_pars_vertex, + clipping_planes_vertex: clipping_planes_vertex, + color_fragment: color_fragment, + color_pars_fragment: color_pars_fragment, + color_pars_vertex: color_pars_vertex, + color_vertex: color_vertex, + common: common, + cube_uv_reflection_fragment: cube_uv_reflection_fragment, + defaultnormal_vertex: defaultnormal_vertex, + displacementmap_pars_vertex: displacementmap_pars_vertex, + displacementmap_vertex: displacementmap_vertex, + emissivemap_fragment: emissivemap_fragment, + emissivemap_pars_fragment: emissivemap_pars_fragment, + encodings_fragment: encodings_fragment, + encodings_pars_fragment: encodings_pars_fragment, + envmap_fragment: envmap_fragment, + envmap_pars_fragment: envmap_pars_fragment, + envmap_pars_vertex: envmap_pars_vertex, + envmap_vertex: envmap_vertex, + fog_vertex: fog_vertex, + fog_pars_vertex: fog_pars_vertex, + fog_fragment: fog_fragment, + fog_pars_fragment: fog_pars_fragment, + gradientmap_pars_fragment: gradientmap_pars_fragment, + lightmap_fragment: lightmap_fragment, + lightmap_pars_fragment: lightmap_pars_fragment, + lights_lambert_vertex: lights_lambert_vertex, + lights_pars: lights_pars, + lights_phong_fragment: lights_phong_fragment, + lights_phong_pars_fragment: lights_phong_pars_fragment, + lights_physical_fragment: lights_physical_fragment, + lights_physical_pars_fragment: lights_physical_pars_fragment, + lights_template: lights_template, + logdepthbuf_fragment: logdepthbuf_fragment, + logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, + logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, + logdepthbuf_vertex: logdepthbuf_vertex, + map_fragment: map_fragment, + map_pars_fragment: map_pars_fragment, + map_particle_fragment: map_particle_fragment, + map_particle_pars_fragment: map_particle_pars_fragment, + metalnessmap_fragment: metalnessmap_fragment, + metalnessmap_pars_fragment: metalnessmap_pars_fragment, + morphnormal_vertex: morphnormal_vertex, + morphtarget_pars_vertex: morphtarget_pars_vertex, + morphtarget_vertex: morphtarget_vertex, + normal_fragment: normal_fragment, + normalmap_pars_fragment: normalmap_pars_fragment, + packing: packing, + premultiplied_alpha_fragment: premultiplied_alpha_fragment, + project_vertex: project_vertex, + dithering_fragment: dithering_fragment, + dithering_pars_fragment: dithering_pars_fragment, + roughnessmap_fragment: roughnessmap_fragment, + roughnessmap_pars_fragment: roughnessmap_pars_fragment, + shadowmap_pars_fragment: shadowmap_pars_fragment, + shadowmap_pars_vertex: shadowmap_pars_vertex, + shadowmap_vertex: shadowmap_vertex, + shadowmask_pars_fragment: shadowmask_pars_fragment, + skinbase_vertex: skinbase_vertex, + skinning_pars_vertex: skinning_pars_vertex, + skinning_vertex: skinning_vertex, + skinnormal_vertex: skinnormal_vertex, + specularmap_fragment: specularmap_fragment, + specularmap_pars_fragment: specularmap_pars_fragment, + tonemapping_fragment: tonemapping_fragment, + tonemapping_pars_fragment: tonemapping_pars_fragment, + uv_pars_fragment: uv_pars_fragment, + uv_pars_vertex: uv_pars_vertex, + uv_vertex: uv_vertex, + uv2_pars_fragment: uv2_pars_fragment, + uv2_pars_vertex: uv2_pars_vertex, + uv2_vertex: uv2_vertex, + worldpos_vertex: worldpos_vertex, + + cube_frag: cube_frag, + cube_vert: cube_vert, + depth_frag: depth_frag, + depth_vert: depth_vert, + distanceRGBA_frag: distanceRGBA_frag, + distanceRGBA_vert: distanceRGBA_vert, + equirect_frag: equirect_frag, + equirect_vert: equirect_vert, + linedashed_frag: linedashed_frag, + linedashed_vert: linedashed_vert, + meshbasic_frag: meshbasic_frag, + meshbasic_vert: meshbasic_vert, + meshlambert_frag: meshlambert_frag, + meshlambert_vert: meshlambert_vert, + meshphong_frag: meshphong_frag, + meshphong_vert: meshphong_vert, + meshphysical_frag: meshphysical_frag, + meshphysical_vert: meshphysical_vert, + normal_frag: normal_frag, + normal_vert: normal_vert, + points_frag: points_frag, + points_vert: points_vert, + shadow_frag: shadow_frag, + shadow_vert: shadow_vert + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + */ + + var ShaderLib = { + + basic: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.meshbasic_vert, + fragmentShader: ShaderChunk.meshbasic_frag + + }, + + lambert: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) } + } + ] ), + + vertexShader: ShaderChunk.meshlambert_vert, + fragmentShader: ShaderChunk.meshlambert_frag + + }, + + phong: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.gradientmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + specular: { value: new Color( 0x111111 ) }, + shininess: { value: 30 } + } + ] ), + + vertexShader: ShaderChunk.meshphong_vert, + fragmentShader: ShaderChunk.meshphong_frag + + }, + + standard: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.roughnessmap, + UniformsLib.metalnessmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + roughness: { value: 0.5 }, + metalness: { value: 0.5 }, + envMapIntensity: { value: 1 } // temporary + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }, + + points: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.points, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.points_vert, + fragmentShader: ShaderChunk.points_frag + + }, + + dashed: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ] ), + + vertexShader: ShaderChunk.linedashed_vert, + fragmentShader: ShaderChunk.linedashed_frag + + }, + + depth: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.displacementmap + ] ), + + vertexShader: ShaderChunk.depth_vert, + fragmentShader: ShaderChunk.depth_frag + + }, + + normal: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + { + opacity: { value: 1.0 } + } + ] ), + + vertexShader: ShaderChunk.normal_vert, + fragmentShader: ShaderChunk.normal_frag + + }, + + /* ------------------------------------------------------------------------- + // Cube map shader + ------------------------------------------------------------------------- */ + + cube: { + + uniforms: { + tCube: { value: null }, + tFlip: { value: - 1 }, + opacity: { value: 1.0 } + }, + + vertexShader: ShaderChunk.cube_vert, + fragmentShader: ShaderChunk.cube_frag + + }, + + equirect: { + + uniforms: { + tEquirect: { value: null }, + }, + + vertexShader: ShaderChunk.equirect_vert, + fragmentShader: ShaderChunk.equirect_frag + + }, + + distanceRGBA: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.common, + UniformsLib.displacementmap, + { + referencePosition: { value: new Vector3() }, + nearDistance: { value: 1 }, + farDistance: { value: 1000 } + } + ] ), + + vertexShader: ShaderChunk.distanceRGBA_vert, + fragmentShader: ShaderChunk.distanceRGBA_frag + + }, + + shadow: { + + uniforms: UniformsUtils.merge( [ + UniformsLib.lights, + UniformsLib.fog, + { + color: { value: new Color( 0x00000 ) }, + opacity: { value: 1.0 } + }, + ] ), + + vertexShader: ShaderChunk.shadow_vert, + fragmentShader: ShaderChunk.shadow_frag + + } + + }; + + ShaderLib.physical = { + + uniforms: UniformsUtils.merge( [ + ShaderLib.standard.uniforms, + { + clearCoat: { value: 0 }, + clearCoatRoughness: { value: 0 } + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }; + + /** + * @author bhouston / http://clara.io + */ + + function Box2( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity ); + + } + + Object.assign( Box2.prototype, { + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function () { + + var v1 = new Vector2(); + + return function setFromCenterAndSize( center, size ) { + + var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = + Infinity; + this.max.x = this.max.y = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); + + }, + + getCenter: function ( optionalTarget ) { + + var result = optionalTarget || new Vector2(); + return this.isEmpty() ? result.set( 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( optionalTarget ) { + + var result = optionalTarget || new Vector2(); + return this.isEmpty() ? result.set( 0, 0 ) : result.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y; + + }, + + getParameter: function ( point, optionalTarget ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + var result = optionalTarget || new Vector2(); + + return result.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 4 splitting planes to rule out intersections + + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y ? false : true; + + }, + + clampPoint: function ( point, optionalTarget ) { + + var result = optionalTarget || new Vector2(); + return result.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function () { + + var v1 = new Vector2(); + + return function distanceToPoint( point ) { + + var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); + return clampedPoint.sub( point ).length(); + + }; + + }(), + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + */ + + function WebGLFlareRenderer( renderer, gl, state, textures, capabilities ) { + + var vertexBuffer, elementBuffer; + var shader, program, attributes, uniforms; + + var tempTexture, occlusionTexture; + + function init() { + + var vertices = new Float32Array( [ + - 1, - 1, 0, 0, + 1, - 1, 1, 0, + 1, 1, 1, 1, + - 1, 1, 0, 1 + ] ); + + var faces = new Uint16Array( [ + 0, 1, 2, + 0, 2, 3 + ] ); + + // buffers + + vertexBuffer = gl.createBuffer(); + elementBuffer = gl.createBuffer(); + + gl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer ); + gl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW ); + + gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer ); + gl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW ); + + // textures + + tempTexture = gl.createTexture(); + occlusionTexture = gl.createTexture(); + + state.bindTexture( gl.TEXTURE_2D, tempTexture ); + gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGB, 16, 16, 0, gl.RGB, gl.UNSIGNED_BYTE, null ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST ); + + state.bindTexture( gl.TEXTURE_2D, occlusionTexture ); + gl.texImage2D( gl.TEXTURE_2D, 0, gl.RGBA, 16, 16, 0, gl.RGBA, gl.UNSIGNED_BYTE, null ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST ); + gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST ); + + shader = { + + vertexShader: [ + + 'uniform lowp int renderType;', + + 'uniform vec3 screenPosition;', + 'uniform vec2 scale;', + 'uniform float rotation;', + + 'uniform sampler2D occlusionMap;', + + 'attribute vec2 position;', + 'attribute vec2 uv;', + + 'varying vec2 vUV;', + 'varying float vVisibility;', + + 'void main() {', + + ' vUV = uv;', + + ' vec2 pos = position;', + + ' if ( renderType == 2 ) {', + + ' vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );', + ' visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );', + + ' vVisibility = visibility.r / 9.0;', + ' vVisibility *= 1.0 - visibility.g / 9.0;', + ' vVisibility *= visibility.b / 9.0;', + ' vVisibility *= 1.0 - visibility.a / 9.0;', + + ' pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;', + ' pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;', + + ' }', + + ' gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );', + + '}' + + ].join( '\n' ), + + fragmentShader: [ + + 'uniform lowp int renderType;', + + 'uniform sampler2D map;', + 'uniform float opacity;', + 'uniform vec3 color;', + + 'varying vec2 vUV;', + 'varying float vVisibility;', + + 'void main() {', + + // pink square + + ' if ( renderType == 0 ) {', + + ' gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );', + + // restore + + ' } else if ( renderType == 1 ) {', + + ' gl_FragColor = texture2D( map, vUV );', + + // flare + + ' } else {', + + ' vec4 texture = texture2D( map, vUV );', + ' texture.a *= opacity * vVisibility;', + ' gl_FragColor = texture;', + ' gl_FragColor.rgb *= color;', + + ' }', + + '}' + + ].join( '\n' ) + + }; + + program = createProgram( shader ); + + attributes = { + vertex: gl.getAttribLocation( program, 'position' ), + uv: gl.getAttribLocation( program, 'uv' ) + }; + + uniforms = { + renderType: gl.getUniformLocation( program, 'renderType' ), + map: gl.getUniformLocation( program, 'map' ), + occlusionMap: gl.getUniformLocation( program, 'occlusionMap' ), + opacity: gl.getUniformLocation( program, 'opacity' ), + color: gl.getUniformLocation( program, 'color' ), + scale: gl.getUniformLocation( program, 'scale' ), + rotation: gl.getUniformLocation( program, 'rotation' ), + screenPosition: gl.getUniformLocation( program, 'screenPosition' ) + }; + + } + + /* + * Render lens flares + * Method: renders 16x16 0xff00ff-colored points scattered over the light source area, + * reads these back and calculates occlusion. + */ + + this.render = function ( flares, scene, camera, viewport ) { + + if ( flares.length === 0 ) return; + + var tempPosition = new Vector3(); + + var invAspect = viewport.w / viewport.z, + halfViewportWidth = viewport.z * 0.5, + halfViewportHeight = viewport.w * 0.5; + + var size = 16 / viewport.w, + scale = new Vector2( size * invAspect, size ); + + var screenPosition = new Vector3( 1, 1, 0 ), + screenPositionPixels = new Vector2( 1, 1 ); + + var validArea = new Box2(); + + validArea.min.set( viewport.x, viewport.y ); + validArea.max.set( viewport.x + ( viewport.z - 16 ), viewport.y + ( viewport.w - 16 ) ); + + if ( program === undefined ) { + + init(); + + } + + state.useProgram( program ); + + state.initAttributes(); + state.enableAttribute( attributes.vertex ); + state.enableAttribute( attributes.uv ); + state.disableUnusedAttributes(); + + // loop through all lens flares to update their occlusion and positions + // setup gl and common used attribs/uniforms + + gl.uniform1i( uniforms.occlusionMap, 0 ); + gl.uniform1i( uniforms.map, 1 ); + + gl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer ); + gl.vertexAttribPointer( attributes.vertex, 2, gl.FLOAT, false, 2 * 8, 0 ); + gl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 ); + + gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer ); + + state.disable( gl.CULL_FACE ); + state.buffers.depth.setMask( false ); + + for ( var i = 0, l = flares.length; i < l; i ++ ) { + + size = 16 / viewport.w; + scale.set( size * invAspect, size ); + + // calc object screen position + + var flare = flares[ i ]; + + tempPosition.set( flare.matrixWorld.elements[ 12 ], flare.matrixWorld.elements[ 13 ], flare.matrixWorld.elements[ 14 ] ); + + tempPosition.applyMatrix4( camera.matrixWorldInverse ); + tempPosition.applyMatrix4( camera.projectionMatrix ); + + // setup arrays for gl programs + + screenPosition.copy( tempPosition ); + + // horizontal and vertical coordinate of the lower left corner of the pixels to copy + + screenPositionPixels.x = viewport.x + ( screenPosition.x * halfViewportWidth ) + halfViewportWidth - 8; + screenPositionPixels.y = viewport.y + ( screenPosition.y * halfViewportHeight ) + halfViewportHeight - 8; + + // screen cull + + if ( validArea.containsPoint( screenPositionPixels ) === true ) { + + // save current RGB to temp texture + + state.activeTexture( gl.TEXTURE0 ); + state.bindTexture( gl.TEXTURE_2D, null ); + state.activeTexture( gl.TEXTURE1 ); + state.bindTexture( gl.TEXTURE_2D, tempTexture ); + gl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGB, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 ); + + + // render pink quad + + gl.uniform1i( uniforms.renderType, 0 ); + gl.uniform2f( uniforms.scale, scale.x, scale.y ); + gl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z ); + + state.disable( gl.BLEND ); + state.enable( gl.DEPTH_TEST ); + + gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); + + + // copy result to occlusionMap + + state.activeTexture( gl.TEXTURE0 ); + state.bindTexture( gl.TEXTURE_2D, occlusionTexture ); + gl.copyTexImage2D( gl.TEXTURE_2D, 0, gl.RGBA, screenPositionPixels.x, screenPositionPixels.y, 16, 16, 0 ); + + + // restore graphics + + gl.uniform1i( uniforms.renderType, 1 ); + state.disable( gl.DEPTH_TEST ); + + state.activeTexture( gl.TEXTURE1 ); + state.bindTexture( gl.TEXTURE_2D, tempTexture ); + gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); + + + // update object positions + + flare.positionScreen.copy( screenPosition ); + + if ( flare.customUpdateCallback ) { + + flare.customUpdateCallback( flare ); + + } else { + + flare.updateLensFlares(); + + } + + // render flares + + gl.uniform1i( uniforms.renderType, 2 ); + state.enable( gl.BLEND ); + + for ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) { + + var sprite = flare.lensFlares[ j ]; + + if ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) { + + screenPosition.x = sprite.x; + screenPosition.y = sprite.y; + screenPosition.z = sprite.z; + + size = sprite.size * sprite.scale / viewport.w; + + scale.x = size * invAspect; + scale.y = size; + + gl.uniform3f( uniforms.screenPosition, screenPosition.x, screenPosition.y, screenPosition.z ); + gl.uniform2f( uniforms.scale, scale.x, scale.y ); + gl.uniform1f( uniforms.rotation, sprite.rotation ); + + gl.uniform1f( uniforms.opacity, sprite.opacity ); + gl.uniform3f( uniforms.color, sprite.color.r, sprite.color.g, sprite.color.b ); + + state.setBlending( sprite.blending, sprite.blendEquation, sprite.blendSrc, sprite.blendDst ); + + textures.setTexture2D( sprite.texture, 1 ); + + gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); + + } + + } + + } + + } + + // restore gl + + state.enable( gl.CULL_FACE ); + state.enable( gl.DEPTH_TEST ); + state.buffers.depth.setMask( true ); + + state.reset(); + + }; + + function createProgram( shader ) { + + var program = gl.createProgram(); + + var fragmentShader = gl.createShader( gl.FRAGMENT_SHADER ); + var vertexShader = gl.createShader( gl.VERTEX_SHADER ); + + var prefix = 'precision ' + capabilities.precision + ' float;\n'; + + gl.shaderSource( fragmentShader, prefix + shader.fragmentShader ); + gl.shaderSource( vertexShader, prefix + shader.vertexShader ); + + gl.compileShader( fragmentShader ); + gl.compileShader( vertexShader ); + + gl.attachShader( program, fragmentShader ); + gl.attachShader( program, vertexShader ); + + gl.linkProgram( program ); + + return program; + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.needsUpdate = true; + + } + + CanvasTexture.prototype = Object.create( Texture.prototype ); + CanvasTexture.prototype.constructor = CanvasTexture; + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + */ + + function WebGLSpriteRenderer( renderer, gl, state, textures, capabilities ) { + + var vertexBuffer, elementBuffer; + var program, attributes, uniforms; + + var texture; + + // decompose matrixWorld + + var spritePosition = new Vector3(); + var spriteRotation = new Quaternion(); + var spriteScale = new Vector3(); + + function init() { + + var vertices = new Float32Array( [ + - 0.5, - 0.5, 0, 0, + 0.5, - 0.5, 1, 0, + 0.5, 0.5, 1, 1, + - 0.5, 0.5, 0, 1 + ] ); + + var faces = new Uint16Array( [ + 0, 1, 2, + 0, 2, 3 + ] ); + + vertexBuffer = gl.createBuffer(); + elementBuffer = gl.createBuffer(); + + gl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer ); + gl.bufferData( gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW ); + + gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer ); + gl.bufferData( gl.ELEMENT_ARRAY_BUFFER, faces, gl.STATIC_DRAW ); + + program = createProgram(); + + attributes = { + position: gl.getAttribLocation( program, 'position' ), + uv: gl.getAttribLocation( program, 'uv' ) + }; + + uniforms = { + uvOffset: gl.getUniformLocation( program, 'uvOffset' ), + uvScale: gl.getUniformLocation( program, 'uvScale' ), + + rotation: gl.getUniformLocation( program, 'rotation' ), + scale: gl.getUniformLocation( program, 'scale' ), + + color: gl.getUniformLocation( program, 'color' ), + map: gl.getUniformLocation( program, 'map' ), + opacity: gl.getUniformLocation( program, 'opacity' ), + + modelViewMatrix: gl.getUniformLocation( program, 'modelViewMatrix' ), + projectionMatrix: gl.getUniformLocation( program, 'projectionMatrix' ), + + fogType: gl.getUniformLocation( program, 'fogType' ), + fogDensity: gl.getUniformLocation( program, 'fogDensity' ), + fogNear: gl.getUniformLocation( program, 'fogNear' ), + fogFar: gl.getUniformLocation( program, 'fogFar' ), + fogColor: gl.getUniformLocation( program, 'fogColor' ), + fogDepth: gl.getUniformLocation( program, 'fogDepth' ), + + alphaTest: gl.getUniformLocation( program, 'alphaTest' ) + }; + + var canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + canvas.width = 8; + canvas.height = 8; + + var context = canvas.getContext( '2d' ); + context.fillStyle = 'white'; + context.fillRect( 0, 0, 8, 8 ); + + texture = new CanvasTexture( canvas ); + + } + + this.render = function ( sprites, scene, camera ) { + + if ( sprites.length === 0 ) return; + + // setup gl + + if ( program === undefined ) { + + init(); + + } + + state.useProgram( program ); + + state.initAttributes(); + state.enableAttribute( attributes.position ); + state.enableAttribute( attributes.uv ); + state.disableUnusedAttributes(); + + state.disable( gl.CULL_FACE ); + state.enable( gl.BLEND ); + + gl.bindBuffer( gl.ARRAY_BUFFER, vertexBuffer ); + gl.vertexAttribPointer( attributes.position, 2, gl.FLOAT, false, 2 * 8, 0 ); + gl.vertexAttribPointer( attributes.uv, 2, gl.FLOAT, false, 2 * 8, 8 ); + + gl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, elementBuffer ); + + gl.uniformMatrix4fv( uniforms.projectionMatrix, false, camera.projectionMatrix.elements ); + + state.activeTexture( gl.TEXTURE0 ); + gl.uniform1i( uniforms.map, 0 ); + + var oldFogType = 0; + var sceneFogType = 0; + var fog = scene.fog; + + if ( fog ) { + + gl.uniform3f( uniforms.fogColor, fog.color.r, fog.color.g, fog.color.b ); + + if ( fog.isFog ) { + + gl.uniform1f( uniforms.fogNear, fog.near ); + gl.uniform1f( uniforms.fogFar, fog.far ); + + gl.uniform1i( uniforms.fogType, 1 ); + oldFogType = 1; + sceneFogType = 1; + + } else if ( fog.isFogExp2 ) { + + gl.uniform1f( uniforms.fogDensity, fog.density ); + + gl.uniform1i( uniforms.fogType, 2 ); + oldFogType = 2; + sceneFogType = 2; + + } + + } else { + + gl.uniform1i( uniforms.fogType, 0 ); + oldFogType = 0; + sceneFogType = 0; + + } + + + // update positions and sort + + for ( var i = 0, l = sprites.length; i < l; i ++ ) { + + var sprite = sprites[ i ]; + + sprite.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, sprite.matrixWorld ); + sprite.z = - sprite.modelViewMatrix.elements[ 14 ]; + + } + + sprites.sort( painterSortStable ); + + // render all sprites + + var scale = []; + + for ( var i = 0, l = sprites.length; i < l; i ++ ) { + + var sprite = sprites[ i ]; + var material = sprite.material; + + if ( material.visible === false ) continue; + + sprite.onBeforeRender( renderer, scene, camera, undefined, material, undefined ); + + gl.uniform1f( uniforms.alphaTest, material.alphaTest ); + gl.uniformMatrix4fv( uniforms.modelViewMatrix, false, sprite.modelViewMatrix.elements ); + + sprite.matrixWorld.decompose( spritePosition, spriteRotation, spriteScale ); + + scale[ 0 ] = spriteScale.x; + scale[ 1 ] = spriteScale.y; + + var fogType = 0; + + if ( scene.fog && material.fog ) { + + fogType = sceneFogType; + + } + + if ( oldFogType !== fogType ) { + + gl.uniform1i( uniforms.fogType, fogType ); + oldFogType = fogType; + + } + + if ( material.map !== null ) { + + gl.uniform2f( uniforms.uvOffset, material.map.offset.x, material.map.offset.y ); + gl.uniform2f( uniforms.uvScale, material.map.repeat.x, material.map.repeat.y ); + + } else { + + gl.uniform2f( uniforms.uvOffset, 0, 0 ); + gl.uniform2f( uniforms.uvScale, 1, 1 ); + + } + + gl.uniform1f( uniforms.opacity, material.opacity ); + gl.uniform3f( uniforms.color, material.color.r, material.color.g, material.color.b ); + + gl.uniform1f( uniforms.rotation, material.rotation ); + gl.uniform2fv( uniforms.scale, scale ); + + state.setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ); + state.buffers.depth.setTest( material.depthTest ); + state.buffers.depth.setMask( material.depthWrite ); + state.buffers.color.setMask( material.colorWrite ); + + textures.setTexture2D( material.map || texture, 0 ); + + gl.drawElements( gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); + + sprite.onAfterRender( renderer, scene, camera, undefined, material, undefined ); + + } + + // restore gl + + state.enable( gl.CULL_FACE ); + + state.reset(); + + }; + + function createProgram() { + + var program = gl.createProgram(); + + var vertexShader = gl.createShader( gl.VERTEX_SHADER ); + var fragmentShader = gl.createShader( gl.FRAGMENT_SHADER ); + + gl.shaderSource( vertexShader, [ + + 'precision ' + capabilities.precision + ' float;', + + '#define SHADER_NAME ' + 'SpriteMaterial', + + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform float rotation;', + 'uniform vec2 scale;', + 'uniform vec2 uvOffset;', + 'uniform vec2 uvScale;', + + 'attribute vec2 position;', + 'attribute vec2 uv;', + + 'varying vec2 vUV;', + 'varying float fogDepth;', + + 'void main() {', + + ' vUV = uvOffset + uv * uvScale;', + + ' vec2 alignedPosition = position * scale;', + + ' vec2 rotatedPosition;', + ' rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;', + ' rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;', + + ' vec4 mvPosition;', + + ' mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );', + ' mvPosition.xy += rotatedPosition;', + + ' gl_Position = projectionMatrix * mvPosition;', + + ' fogDepth = - mvPosition.z;', + + '}' + + ].join( '\n' ) ); + + gl.shaderSource( fragmentShader, [ + + 'precision ' + capabilities.precision + ' float;', + + '#define SHADER_NAME ' + 'SpriteMaterial', + + 'uniform vec3 color;', + 'uniform sampler2D map;', + 'uniform float opacity;', + + 'uniform int fogType;', + 'uniform vec3 fogColor;', + 'uniform float fogDensity;', + 'uniform float fogNear;', + 'uniform float fogFar;', + 'uniform float alphaTest;', + + 'varying vec2 vUV;', + 'varying float fogDepth;', + + 'void main() {', + + ' vec4 texture = texture2D( map, vUV );', + + ' gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );', + + ' if ( gl_FragColor.a < alphaTest ) discard;', + + ' if ( fogType > 0 ) {', + + ' float fogFactor = 0.0;', + + ' if ( fogType == 1 ) {', + + ' fogFactor = smoothstep( fogNear, fogFar, fogDepth );', + + ' } else {', + + ' const float LOG2 = 1.442695;', + ' fogFactor = exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 );', + ' fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );', + + ' }', + + ' gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );', + + ' }', + + '}' + + ].join( '\n' ) ); + + gl.compileShader( vertexShader ); + gl.compileShader( fragmentShader ); + + gl.attachShader( program, vertexShader ); + gl.attachShader( program, fragmentShader ); + + gl.linkProgram( program ); + + return program; + + } + + function painterSortStable( a, b ) { + + if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.z !== b.z ) { + + return b.z - a.z; + + } else { + + return b.id - a.id; + + } + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + var materialId = 0; + + function Material() { + + Object.defineProperty( this, 'id', { value: materialId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Material'; + + this.fog = true; + this.lights = true; + + this.blending = NormalBlending; + this.side = FrontSide; + this.flatShading = false; + this.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors + + this.opacity = 1; + this.transparent = false; + + this.blendSrc = SrcAlphaFactor; + this.blendDst = OneMinusSrcAlphaFactor; + this.blendEquation = AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; + + this.depthFunc = LessEqualDepth; + this.depthTest = true; + this.depthWrite = true; + + this.clippingPlanes = null; + this.clipIntersection = false; + this.clipShadows = false; + + this.colorWrite = true; + + this.precision = null; // override the renderer's default precision for this material + + this.polygonOffset = false; + this.polygonOffsetFactor = 0; + this.polygonOffsetUnits = 0; + + this.dithering = false; + + this.alphaTest = 0; + this.premultipliedAlpha = false; + + this.overdraw = 0; // Overdrawn pixels (typically between 0 and 1) for fixing antialiasing gaps in CanvasRenderer + + this.visible = true; + + this.userData = {}; + + this.needsUpdate = true; + + } + + Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Material, + + isMaterial: true, + + onBeforeCompile: function () {}, + + setValues: function ( values ) { + + if ( values === undefined ) return; + + for ( var key in values ) { + + var newValue = values[ key ]; + + if ( newValue === undefined ) { + + console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); + continue; + + } + + // for backward compatability if shading is set in the constructor + if ( key === 'shading' ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( newValue === FlatShading ) ? true : false; + continue; + + } + + var currentValue = this[ key ]; + + if ( currentValue === undefined ) { + + console.warn( "THREE." + this.type + ": '" + key + "' is not a property of this material." ); + continue; + + } + + if ( currentValue && currentValue.isColor ) { + + currentValue.set( newValue ); + + } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { + + currentValue.copy( newValue ); + + } else if ( key === 'overdraw' ) { + + // ensure overdraw is backwards-compatible with legacy boolean type + this[ key ] = Number( newValue ); + + } else { + + this[ key ] = newValue; + + } + + } + + }, + + toJSON: function ( meta ) { + + var isRoot = ( meta === undefined || typeof meta === 'string' ); + + if ( isRoot ) { + + meta = { + textures: {}, + images: {} + }; + + } + + var data = { + metadata: { + version: 4.5, + type: 'Material', + generator: 'Material.toJSON' + } + }; + + // standard Material serialization + data.uuid = this.uuid; + data.type = this.type; + + if ( this.name !== '' ) data.name = this.name; + + if ( this.color && this.color.isColor ) data.color = this.color.getHex(); + + if ( this.roughness !== undefined ) data.roughness = this.roughness; + if ( this.metalness !== undefined ) data.metalness = this.metalness; + + if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex(); + if ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity; + + if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex(); + if ( this.shininess !== undefined ) data.shininess = this.shininess; + if ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat; + if ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness; + + if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid; + if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid; + if ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid; + if ( this.bumpMap && this.bumpMap.isTexture ) { + + data.bumpMap = this.bumpMap.toJSON( meta ).uuid; + data.bumpScale = this.bumpScale; + + } + if ( this.normalMap && this.normalMap.isTexture ) { + + data.normalMap = this.normalMap.toJSON( meta ).uuid; + data.normalScale = this.normalScale.toArray(); + + } + if ( this.displacementMap && this.displacementMap.isTexture ) { + + data.displacementMap = this.displacementMap.toJSON( meta ).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + + } + if ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; + if ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; + + if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; + if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid; + + if ( this.envMap && this.envMap.isTexture ) { + + data.envMap = this.envMap.toJSON( meta ).uuid; + data.reflectivity = this.reflectivity; // Scale behind envMap + + } + + if ( this.gradientMap && this.gradientMap.isTexture ) { + + data.gradientMap = this.gradientMap.toJSON( meta ).uuid; + + } + + if ( this.size !== undefined ) data.size = this.size; + if ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation; + + if ( this.blending !== NormalBlending ) data.blending = this.blending; + if ( this.flatShading === true ) data.flatShading = this.flatShading; + if ( this.side !== FrontSide ) data.side = this.side; + if ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors; + + if ( this.opacity < 1 ) data.opacity = this.opacity; + if ( this.transparent === true ) data.transparent = this.transparent; + + data.depthFunc = this.depthFunc; + data.depthTest = this.depthTest; + data.depthWrite = this.depthWrite; + + // rotation (SpriteMaterial) + if ( this.rotation !== 0 ) data.rotation = this.rotation; + + if ( this.linewidth !== 1 ) data.linewidth = this.linewidth; + if ( this.dashSize !== undefined ) data.dashSize = this.dashSize; + if ( this.gapSize !== undefined ) data.gapSize = this.gapSize; + if ( this.scale !== undefined ) data.scale = this.scale; + + if ( this.dithering === true ) data.dithering = true; + + if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest; + if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha; + + if ( this.wireframe === true ) data.wireframe = this.wireframe; + if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth; + if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap; + if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin; + + if ( this.morphTargets === true ) data.morphTargets = true; + if ( this.skinning === true ) data.skinning = true; + + if ( this.visible === false ) data.visible = false; + if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData; + + // TODO: Copied from Object3D.toJSON + + function extractFromCache( cache ) { + + var values = []; + + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + + return values; + + } + + if ( isRoot ) { + + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + + if ( textures.length > 0 ) data.textures = textures; + if ( images.length > 0 ) data.images = images; + + } + + return data; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.fog = source.fog; + this.lights = source.lights; + + this.blending = source.blending; + this.side = source.side; + this.flatShading = source.flatShading; + this.vertexColors = source.vertexColors; + + this.opacity = source.opacity; + this.transparent = source.transparent; + + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + + this.colorWrite = source.colorWrite; + + this.precision = source.precision; + + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + + this.dithering = source.dithering; + + this.alphaTest = source.alphaTest; + this.premultipliedAlpha = source.premultipliedAlpha; + + this.overdraw = source.overdraw; + + this.visible = source.visible; + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + this.clipShadows = source.clipShadows; + this.clipIntersection = source.clipIntersection; + + var srcPlanes = source.clippingPlanes, + dstPlanes = null; + + if ( srcPlanes !== null ) { + + var n = srcPlanes.length; + dstPlanes = new Array( n ); + + for ( var i = 0; i !== n; ++ i ) + dstPlanes[ i ] = srcPlanes[ i ].clone(); + + } + + this.clippingPlanes = dstPlanes; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / https://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * opacity: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * } + */ + + function MeshDepthMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDepthMaterial'; + + this.depthPacking = BasicDepthPacking; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + this.lights = false; + + this.setValues( parameters ); + + } + + MeshDepthMaterial.prototype = Object.create( Material.prototype ); + MeshDepthMaterial.prototype.constructor = MeshDepthMaterial; + + MeshDepthMaterial.prototype.isMeshDepthMaterial = true; + + MeshDepthMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.depthPacking = source.depthPacking; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * referencePosition: , + * nearDistance: , + * farDistance: , + * + * skinning: , + * morphTargets: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: + * + * } + */ + + function MeshDistanceMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDistanceMaterial'; + + this.referencePosition = new Vector3(); + this.nearDistance = 1; + this.farDistance = 1000; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.fog = false; + this.lights = false; + + this.setValues( parameters ); + + } + + MeshDistanceMaterial.prototype = Object.create( Material.prototype ); + MeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial; + + MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; + + MeshDistanceMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.referencePosition.copy( source.referencePosition ); + this.nearDistance = source.nearDistance; + this.farDistance = source.farDistance; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + return this; + + }; + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity ); + + } + + Object.assign( Box3.prototype, { + + isBox3: true, + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromArray: function ( array ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var x = array[ i ]; + var y = array[ i + 1 ]; + var z = array[ i + 2 ]; + + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( z < minZ ) minZ = z; + + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + if ( z > maxZ ) maxZ = z; + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromBufferAttribute: function ( attribute ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + var x = attribute.getX( i ); + var y = attribute.getY( i ); + var z = attribute.getZ( i ); + + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( z < minZ ) minZ = z; + + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + if ( z > maxZ ) maxZ = z; + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function () { + + var v1 = new Vector3(); + + return function setFromCenterAndSize( center, size ) { + + var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); + + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }; + + }(), + + setFromObject: function ( object ) { + + this.makeEmpty(); + + return this.expandByObject( object ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = this.min.z = + Infinity; + this.max.x = this.max.y = this.max.z = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); + + }, + + getCenter: function ( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + return this.isEmpty() ? result.set( 0, 0, 0 ) : result.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + return this.isEmpty() ? result.set( 0, 0, 0 ) : result.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + expandByObject: function () { + + // Computes the world-axis-aligned bounding box of an object (including its children), + // accounting for both the object's, and children's, world transforms + + var scope, i, l; + + var v1 = new Vector3(); + + function traverse( node ) { + + var geometry = node.geometry; + + if ( geometry !== undefined ) { + + if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + + for ( i = 0, l = vertices.length; i < l; i ++ ) { + + v1.copy( vertices[ i ] ); + v1.applyMatrix4( node.matrixWorld ); + + scope.expandByPoint( v1 ); + + } + + } else if ( geometry.isBufferGeometry ) { + + var attribute = geometry.attributes.position; + + if ( attribute !== undefined ) { + + for ( i = 0, l = attribute.count; i < l; i ++ ) { + + v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld ); + + scope.expandByPoint( v1 ); + + } + + } + + } + + } + + } + + return function expandByObject( object ) { + + scope = this; + + object.updateMatrixWorld( true ); + + object.traverse( traverse ); + + return this; + + }; + + }(), + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y || + point.z < this.min.z || point.z > this.max.z ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y && + this.min.z <= box.min.z && box.max.z <= this.max.z; + + }, + + getParameter: function ( point, optionalTarget ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + var result = optionalTarget || new Vector3(); + + return result.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ), + ( point.z - this.min.z ) / ( this.max.z - this.min.z ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 6 splitting planes to rule out intersections. + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y || + box.max.z < this.min.z || box.min.z > this.max.z ? false : true; + + }, + + intersectsSphere: ( function () { + + var closestPoint = new Vector3(); + + return function intersectsSphere( sphere ) { + + // Find the point on the AABB closest to the sphere center. + this.clampPoint( sphere.center, closestPoint ); + + // If that point is inside the sphere, the AABB and sphere intersect. + return closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); + + }; + + } )(), + + intersectsPlane: function ( plane ) { + + // We compute the minimum and maximum dot product values. If those values + // are on the same side (back or front) of the plane, then there is no intersection. + + var min, max; + + if ( plane.normal.x > 0 ) { + + min = plane.normal.x * this.min.x; + max = plane.normal.x * this.max.x; + + } else { + + min = plane.normal.x * this.max.x; + max = plane.normal.x * this.min.x; + + } + + if ( plane.normal.y > 0 ) { + + min += plane.normal.y * this.min.y; + max += plane.normal.y * this.max.y; + + } else { + + min += plane.normal.y * this.max.y; + max += plane.normal.y * this.min.y; + + } + + if ( plane.normal.z > 0 ) { + + min += plane.normal.z * this.min.z; + max += plane.normal.z * this.max.z; + + } else { + + min += plane.normal.z * this.max.z; + max += plane.normal.z * this.min.z; + + } + + return ( min <= plane.constant && max >= plane.constant ); + + }, + + clampPoint: function ( point, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + return result.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function () { + + var v1 = new Vector3(); + + return function distanceToPoint( point ) { + + var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); + return clampedPoint.sub( point ).length(); + + }; + + }(), + + getBoundingSphere: function () { + + var v1 = new Vector3(); + + return function getBoundingSphere( optionalTarget ) { + + var result = optionalTarget || new Sphere(); + + this.getCenter( result.center ); + + result.radius = this.getSize( v1 ).length() * 0.5; + + return result; + + }; + + }(), + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. + if ( this.isEmpty() ) this.makeEmpty(); + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + applyMatrix4: function () { + + var points = [ + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3() + ]; + + return function applyMatrix4( matrix ) { + + // transform of empty box is an empty box. + if ( this.isEmpty() ) return this; + + // NOTE: I am using a binary pattern to specify all 2^3 combinations below + points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 + points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 + points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 + points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 + points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 + points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 + points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 + points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 + + this.setFromPoints( points ); + + return this; + + }; + + }(), + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + function Sphere( center, radius ) { + + this.center = ( center !== undefined ) ? center : new Vector3(); + this.radius = ( radius !== undefined ) ? radius : 0; + + } + + Object.assign( Sphere.prototype, { + + set: function ( center, radius ) { + + this.center.copy( center ); + this.radius = radius; + + return this; + + }, + + setFromPoints: function () { + + var box = new Box3(); + + return function setFromPoints( points, optionalCenter ) { + + var center = this.center; + + if ( optionalCenter !== undefined ) { + + center.copy( optionalCenter ); + + } else { + + box.setFromPoints( points ).getCenter( center ); + + } + + var maxRadiusSq = 0; + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); + + } + + this.radius = Math.sqrt( maxRadiusSq ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( sphere ) { + + this.center.copy( sphere.center ); + this.radius = sphere.radius; + + return this; + + }, + + empty: function () { + + return ( this.radius <= 0 ); + + }, + + containsPoint: function ( point ) { + + return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); + + }, + + distanceToPoint: function ( point ) { + + return ( point.distanceTo( this.center ) - this.radius ); + + }, + + intersectsSphere: function ( sphere ) { + + var radiusSum = this.radius + sphere.radius; + + return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsSphere( this ); + + }, + + intersectsPlane: function ( plane ) { + + return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; + + }, + + clampPoint: function ( point, optionalTarget ) { + + var deltaLengthSq = this.center.distanceToSquared( point ); + + var result = optionalTarget || new Vector3(); + + result.copy( point ); + + if ( deltaLengthSq > ( this.radius * this.radius ) ) { + + result.sub( this.center ).normalize(); + result.multiplyScalar( this.radius ).add( this.center ); + + } + + return result; + + }, + + getBoundingBox: function ( optionalTarget ) { + + var box = optionalTarget || new Box3(); + + box.set( this.center, this.center ); + box.expandByScalar( this.radius ); + + return box; + + }, + + applyMatrix4: function ( matrix ) { + + this.center.applyMatrix4( matrix ); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + + return this; + + }, + + translate: function ( offset ) { + + this.center.add( offset ); + + return this; + + }, + + equals: function ( sphere ) { + + return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Plane( normal, constant ) { + + // normal is assumed to be normalized + + this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 ); + this.constant = ( constant !== undefined ) ? constant : 0; + + } + + Object.assign( Plane.prototype, { + + set: function ( normal, constant ) { + + this.normal.copy( normal ); + this.constant = constant; + + return this; + + }, + + setComponents: function ( x, y, z, w ) { + + this.normal.set( x, y, z ); + this.constant = w; + + return this; + + }, + + setFromNormalAndCoplanarPoint: function ( normal, point ) { + + this.normal.copy( normal ); + this.constant = - point.dot( this.normal ); + + return this; + + }, + + setFromCoplanarPoints: function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function setFromCoplanarPoints( a, b, c ) { + + var normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize(); + + // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? + + this.setFromNormalAndCoplanarPoint( normal, a ); + + return this; + + }; + + }(), + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( plane ) { + + this.normal.copy( plane.normal ); + this.constant = plane.constant; + + return this; + + }, + + normalize: function () { + + // Note: will lead to a divide by zero if the plane is invalid. + + var inverseNormalLength = 1.0 / this.normal.length(); + this.normal.multiplyScalar( inverseNormalLength ); + this.constant *= inverseNormalLength; + + return this; + + }, + + negate: function () { + + this.constant *= - 1; + this.normal.negate(); + + return this; + + }, + + distanceToPoint: function ( point ) { + + return this.normal.dot( point ) + this.constant; + + }, + + distanceToSphere: function ( sphere ) { + + return this.distanceToPoint( sphere.center ) - sphere.radius; + + }, + + projectPoint: function ( point, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + return result.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point ); + + }, + + intersectLine: function () { + + var v1 = new Vector3(); + + return function intersectLine( line, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + var direction = line.delta( v1 ); + + var denominator = this.normal.dot( direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( this.distanceToPoint( line.start ) === 0 ) { + + return result.copy( line.start ); + + } + + // Unsure if this is the correct method to handle this case. + return undefined; + + } + + var t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; + + if ( t < 0 || t > 1 ) { + + return undefined; + + } + + return result.copy( direction ).multiplyScalar( t ).add( line.start ); + + }; + + }(), + + intersectsLine: function ( line ) { + + // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. + + var startSign = this.distanceToPoint( line.start ); + var endSign = this.distanceToPoint( line.end ); + + return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsPlane( this ); + + }, + + intersectsSphere: function ( sphere ) { + + return sphere.intersectsPlane( this ); + + }, + + coplanarPoint: function ( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + return result.copy( this.normal ).multiplyScalar( - this.constant ); + + }, + + applyMatrix4: function () { + + var v1 = new Vector3(); + var m1 = new Matrix3(); + + return function applyMatrix4( matrix, optionalNormalMatrix ) { + + var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix ); + + var referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix ); + + var normal = this.normal.applyMatrix3( normalMatrix ).normalize(); + + this.constant = - referencePoint.dot( normal ); + + return this; + + }; + + }(), + + translate: function ( offset ) { + + this.constant -= offset.dot( this.normal ); + + return this; + + }, + + equals: function ( plane ) { + + return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / http://clara.io + */ + + function Frustum( p0, p1, p2, p3, p4, p5 ) { + + this.planes = [ + + ( p0 !== undefined ) ? p0 : new Plane(), + ( p1 !== undefined ) ? p1 : new Plane(), + ( p2 !== undefined ) ? p2 : new Plane(), + ( p3 !== undefined ) ? p3 : new Plane(), + ( p4 !== undefined ) ? p4 : new Plane(), + ( p5 !== undefined ) ? p5 : new Plane() + + ]; + + } + + Object.assign( Frustum.prototype, { + + set: function ( p0, p1, p2, p3, p4, p5 ) { + + var planes = this.planes; + + planes[ 0 ].copy( p0 ); + planes[ 1 ].copy( p1 ); + planes[ 2 ].copy( p2 ); + planes[ 3 ].copy( p3 ); + planes[ 4 ].copy( p4 ); + planes[ 5 ].copy( p5 ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( frustum ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + planes[ i ].copy( frustum.planes[ i ] ); + + } + + return this; + + }, + + setFromMatrix: function ( m ) { + + var planes = this.planes; + var me = m.elements; + var me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; + var me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; + var me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; + var me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; + + planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); + planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); + planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); + planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); + planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); + planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); + + return this; + + }, + + intersectsObject: function () { + + var sphere = new Sphere(); + + return function intersectsObject( object ) { + + var geometry = object.geometry; + + if ( geometry.boundingSphere === null ) + geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ) + .applyMatrix4( object.matrixWorld ); + + return this.intersectsSphere( sphere ); + + }; + + }(), + + intersectsSprite: function () { + + var sphere = new Sphere(); + + return function intersectsSprite( sprite ) { + + sphere.center.set( 0, 0, 0 ); + sphere.radius = 0.7071067811865476; + sphere.applyMatrix4( sprite.matrixWorld ); + + return this.intersectsSphere( sphere ); + + }; + + }(), + + intersectsSphere: function ( sphere ) { + + var planes = this.planes; + var center = sphere.center; + var negRadius = - sphere.radius; + + for ( var i = 0; i < 6; i ++ ) { + + var distance = planes[ i ].distanceToPoint( center ); + + if ( distance < negRadius ) { + + return false; + + } + + } + + return true; + + }, + + intersectsBox: function () { + + var p1 = new Vector3(), + p2 = new Vector3(); + + return function intersectsBox( box ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + var plane = planes[ i ]; + + p1.x = plane.normal.x > 0 ? box.min.x : box.max.x; + p2.x = plane.normal.x > 0 ? box.max.x : box.min.x; + p1.y = plane.normal.y > 0 ? box.min.y : box.max.y; + p2.y = plane.normal.y > 0 ? box.max.y : box.min.y; + p1.z = plane.normal.z > 0 ? box.min.z : box.max.z; + p2.z = plane.normal.z > 0 ? box.max.z : box.min.z; + + var d1 = plane.distanceToPoint( p1 ); + var d2 = plane.distanceToPoint( p2 ); + + // if both outside plane, no intersection + + if ( d1 < 0 && d2 < 0 ) { + + return false; + + } + + } + + return true; + + }; + + }(), + + containsPoint: function ( point ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + if ( planes[ i ].distanceToPoint( point ) < 0 ) { + + return false; + + } + + } + + return true; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLShadowMap( _renderer, _objects, maxTextureSize ) { + + var _frustum = new Frustum(), + _projScreenMatrix = new Matrix4(), + + _shadowMapSize = new Vector2(), + _maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ), + + _lookTarget = new Vector3(), + _lightPositionWorld = new Vector3(), + + _MorphingFlag = 1, + _SkinningFlag = 2, + + _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1, + + _depthMaterials = new Array( _NumberOfMaterialVariants ), + _distanceMaterials = new Array( _NumberOfMaterialVariants ), + + _materialCache = {}; + + var cubeDirections = [ + new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ), + new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 ) + ]; + + var cubeUps = [ + new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), + new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 ) + ]; + + var cube2DViewPorts = [ + new Vector4(), new Vector4(), new Vector4(), + new Vector4(), new Vector4(), new Vector4() + ]; + + // init + + for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) { + + var useMorphing = ( i & _MorphingFlag ) !== 0; + var useSkinning = ( i & _SkinningFlag ) !== 0; + + var depthMaterial = new MeshDepthMaterial( { + + depthPacking: RGBADepthPacking, + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _depthMaterials[ i ] = depthMaterial; + + // + + var distanceMaterial = new MeshDistanceMaterial( { + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _distanceMaterials[ i ] = distanceMaterial; + + } + + // + + var scope = this; + + this.enabled = false; + + this.autoUpdate = true; + this.needsUpdate = false; + + this.type = PCFShadowMap; + + this.renderReverseSided = true; + this.renderSingleSided = true; + + this.render = function ( lights, scene, camera ) { + + if ( scope.enabled === false ) return; + if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; + + if ( lights.length === 0 ) return; + + // TODO Clean up (needed in case of contextlost) + var _gl = _renderer.context; + var _state = _renderer.state; + + // Set GL state for depth map. + _state.disable( _gl.BLEND ); + _state.buffers.color.setClear( 1, 1, 1, 1 ); + _state.buffers.depth.setTest( true ); + _state.setScissorTest( false ); + + // render depth map + + var faceCount; + + for ( var i = 0, il = lights.length; i < il; i ++ ) { + + var light = lights[ i ]; + var shadow = light.shadow; + var isPointLight = light && light.isPointLight; + + if ( shadow === undefined ) { + + console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); + continue; + + } + + var shadowCamera = shadow.camera; + + _shadowMapSize.copy( shadow.mapSize ); + _shadowMapSize.min( _maxShadowMapSize ); + + if ( isPointLight ) { + + var vpWidth = _shadowMapSize.x; + var vpHeight = _shadowMapSize.y; + + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + + // positive X + cube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight ); + // negative X + cube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight ); + // positive Z + cube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight ); + // negative Z + cube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight ); + // positive Y + cube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight ); + // negative Y + cube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight ); + + _shadowMapSize.x *= 4.0; + _shadowMapSize.y *= 2.0; + + } + + if ( shadow.map === null ) { + + var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat }; + + shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + shadow.map.texture.name = light.name + ".shadowMap"; + + shadowCamera.updateProjectionMatrix(); + + } + + if ( shadow.isSpotLightShadow ) { + + shadow.update( light ); + + } + + var shadowMap = shadow.map; + var shadowMatrix = shadow.matrix; + + _lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); + shadowCamera.position.copy( _lightPositionWorld ); + + if ( isPointLight ) { + + faceCount = 6; + + // for point lights we set the shadow matrix to be a translation-only matrix + // equal to inverse of the light's position + + shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z ); + + } else { + + faceCount = 1; + + _lookTarget.setFromMatrixPosition( light.target.matrixWorld ); + shadowCamera.lookAt( _lookTarget ); + shadowCamera.updateMatrixWorld(); + + // compute shadow matrix + + shadowMatrix.set( + 0.5, 0.0, 0.0, 0.5, + 0.0, 0.5, 0.0, 0.5, + 0.0, 0.0, 0.5, 0.5, + 0.0, 0.0, 0.0, 1.0 + ); + + shadowMatrix.multiply( shadowCamera.projectionMatrix ); + shadowMatrix.multiply( shadowCamera.matrixWorldInverse ); + + } + + _renderer.setRenderTarget( shadowMap ); + _renderer.clear(); + + // render shadow map for each cube face (if omni-directional) or + // run a single pass if not + + for ( var face = 0; face < faceCount; face ++ ) { + + if ( isPointLight ) { + + _lookTarget.copy( shadowCamera.position ); + _lookTarget.add( cubeDirections[ face ] ); + shadowCamera.up.copy( cubeUps[ face ] ); + shadowCamera.lookAt( _lookTarget ); + shadowCamera.updateMatrixWorld(); + + var vpDimensions = cube2DViewPorts[ face ]; + _state.viewport( vpDimensions ); + + } + + // update camera matrices and frustum + + _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); + _frustum.setFromMatrix( _projScreenMatrix ); + + // set object matrices & frustum culling + + renderObject( scene, camera, shadowCamera, isPointLight ); + + } + + } + + scope.needsUpdate = false; + + }; + + function getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) { + + var geometry = object.geometry; + + var result = null; + + var materialVariants = _depthMaterials; + var customMaterial = object.customDepthMaterial; + + if ( isPointLight ) { + + materialVariants = _distanceMaterials; + customMaterial = object.customDistanceMaterial; + + } + + if ( ! customMaterial ) { + + var useMorphing = false; + + if ( material.morphTargets ) { + + if ( geometry && geometry.isBufferGeometry ) { + + useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0; + + } else if ( geometry && geometry.isGeometry ) { + + useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0; + + } + + } + + if ( object.isSkinnedMesh && material.skinning === false ) { + + console.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object ); + + } + + var useSkinning = object.isSkinnedMesh && material.skinning; + + var variantIndex = 0; + + if ( useMorphing ) variantIndex |= _MorphingFlag; + if ( useSkinning ) variantIndex |= _SkinningFlag; + + result = materialVariants[ variantIndex ]; + + } else { + + result = customMaterial; + + } + + if ( _renderer.localClippingEnabled && + material.clipShadows === true && + material.clippingPlanes.length !== 0 ) { + + // in this case we need a unique material instance reflecting the + // appropriate state + + var keyA = result.uuid, keyB = material.uuid; + + var materialsForVariant = _materialCache[ keyA ]; + + if ( materialsForVariant === undefined ) { + + materialsForVariant = {}; + _materialCache[ keyA ] = materialsForVariant; + + } + + var cachedMaterial = materialsForVariant[ keyB ]; + + if ( cachedMaterial === undefined ) { + + cachedMaterial = result.clone(); + materialsForVariant[ keyB ] = cachedMaterial; + + } + + result = cachedMaterial; + + } + + result.visible = material.visible; + result.wireframe = material.wireframe; + + var side = material.side; + + if ( scope.renderSingleSided && side == DoubleSide ) { + + side = FrontSide; + + } + + if ( scope.renderReverseSided ) { + + if ( side === FrontSide ) side = BackSide; + else if ( side === BackSide ) side = FrontSide; + + } + + result.side = side; + + result.clipShadows = material.clipShadows; + result.clippingPlanes = material.clippingPlanes; + result.clipIntersection = material.clipIntersection; + + result.wireframeLinewidth = material.wireframeLinewidth; + result.linewidth = material.linewidth; + + if ( isPointLight && result.isMeshDistanceMaterial ) { + + result.referencePosition.copy( lightPositionWorld ); + result.nearDistance = shadowCameraNear; + result.farDistance = shadowCameraFar; + + } + + return result; + + } + + function renderObject( object, camera, shadowCamera, isPointLight ) { + + if ( object.visible === false ) return; + + var visible = object.layers.test( camera.layers ); + + if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { + + if ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { + + object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); + + var geometry = _objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var k = 0, kl = groups.length; k < kl; k ++ ) { + + var group = groups[ k ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + var depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); + + } + + } + + } else if ( material.visible ) { + + var depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + renderObject( children[ i ], camera, shadowCamera, isPointLight ); + + } + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLAttributes( gl ) { + + var buffers = {}; + + function createBuffer( attribute, bufferType ) { + + var array = attribute.array; + var usage = attribute.dynamic ? gl.DYNAMIC_DRAW : gl.STATIC_DRAW; + + var buffer = gl.createBuffer(); + + gl.bindBuffer( bufferType, buffer ); + gl.bufferData( bufferType, array, usage ); + + attribute.onUploadCallback(); + + var type = gl.FLOAT; + + if ( array instanceof Float32Array ) { + + type = gl.FLOAT; + + } else if ( array instanceof Float64Array ) { + + console.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' ); + + } else if ( array instanceof Uint16Array ) { + + type = gl.UNSIGNED_SHORT; + + } else if ( array instanceof Int16Array ) { + + type = gl.SHORT; + + } else if ( array instanceof Uint32Array ) { + + type = gl.UNSIGNED_INT; + + } else if ( array instanceof Int32Array ) { + + type = gl.INT; + + } else if ( array instanceof Int8Array ) { + + type = gl.BYTE; + + } else if ( array instanceof Uint8Array ) { + + type = gl.UNSIGNED_BYTE; + + } + + return { + buffer: buffer, + type: type, + bytesPerElement: array.BYTES_PER_ELEMENT, + version: attribute.version + }; + + } + + function updateBuffer( buffer, attribute, bufferType ) { + + var array = attribute.array; + var updateRange = attribute.updateRange; + + gl.bindBuffer( bufferType, buffer ); + + if ( attribute.dynamic === false ) { + + gl.bufferData( bufferType, array, gl.STATIC_DRAW ); + + } else if ( updateRange.count === - 1 ) { + + // Not using update ranges + + gl.bufferSubData( bufferType, 0, array ); + + } else if ( updateRange.count === 0 ) { + + console.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' ); + + } else { + + gl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, + array.subarray( updateRange.offset, updateRange.offset + updateRange.count ) ); + + updateRange.count = - 1; // reset range + + } + + } + + // + + function get( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + return buffers[ attribute.uuid ]; + + } + + function remove( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + var data = buffers[ attribute.uuid ]; + + if ( data ) { + + gl.deleteBuffer( data.buffer ); + + delete buffers[ attribute.uuid ]; + + } + + } + + function update( attribute, bufferType ) { + + if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; + + var data = buffers[ attribute.uuid ]; + + if ( data === undefined ) { + + buffers[ attribute.uuid ] = createBuffer( attribute, bufferType ); + + } else if ( data.version < attribute.version ) { + + updateBuffer( data.buffer, attribute, bufferType ); + + data.version = attribute.version; + + } + + } + + return { + + get: get, + remove: remove, + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + function Euler( x, y, z, order ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._order = order || Euler.DefaultOrder; + + } + + Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ]; + + Euler.DefaultOrder = 'XYZ'; + + Object.defineProperties( Euler.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this.onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this.onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this.onChangeCallback(); + + } + + }, + + order: { + + get: function () { + + return this._order; + + }, + + set: function ( value ) { + + this._order = value; + this.onChangeCallback(); + + } + + } + + } ); + + Object.assign( Euler.prototype, { + + isEuler: true, + + set: function ( x, y, z, order ) { + + this._x = x; + this._y = y; + this._z = z; + this._order = order || this._order; + + this.onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._order ); + + }, + + copy: function ( euler ) { + + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + + this.onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m, order, update ) { + + var clamp = _Math.clamp; + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements; + var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; + var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; + var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + order = order || this._order; + + if ( order === 'XYZ' ) { + + this._y = Math.asin( clamp( m13, - 1, 1 ) ); + + if ( Math.abs( m13 ) < 0.99999 ) { + + this._x = Math.atan2( - m23, m33 ); + this._z = Math.atan2( - m12, m11 ); + + } else { + + this._x = Math.atan2( m32, m22 ); + this._z = 0; + + } + + } else if ( order === 'YXZ' ) { + + this._x = Math.asin( - clamp( m23, - 1, 1 ) ); + + if ( Math.abs( m23 ) < 0.99999 ) { + + this._y = Math.atan2( m13, m33 ); + this._z = Math.atan2( m21, m22 ); + + } else { + + this._y = Math.atan2( - m31, m11 ); + this._z = 0; + + } + + } else if ( order === 'ZXY' ) { + + this._x = Math.asin( clamp( m32, - 1, 1 ) ); + + if ( Math.abs( m32 ) < 0.99999 ) { + + this._y = Math.atan2( - m31, m33 ); + this._z = Math.atan2( - m12, m22 ); + + } else { + + this._y = 0; + this._z = Math.atan2( m21, m11 ); + + } + + } else if ( order === 'ZYX' ) { + + this._y = Math.asin( - clamp( m31, - 1, 1 ) ); + + if ( Math.abs( m31 ) < 0.99999 ) { + + this._x = Math.atan2( m32, m33 ); + this._z = Math.atan2( m21, m11 ); + + } else { + + this._x = 0; + this._z = Math.atan2( - m12, m22 ); + + } + + } else if ( order === 'YZX' ) { + + this._z = Math.asin( clamp( m21, - 1, 1 ) ); + + if ( Math.abs( m21 ) < 0.99999 ) { + + this._x = Math.atan2( - m23, m22 ); + this._y = Math.atan2( - m31, m11 ); + + } else { + + this._x = 0; + this._y = Math.atan2( m13, m33 ); + + } + + } else if ( order === 'XZY' ) { + + this._z = Math.asin( - clamp( m12, - 1, 1 ) ); + + if ( Math.abs( m12 ) < 0.99999 ) { + + this._x = Math.atan2( m32, m22 ); + this._y = Math.atan2( m13, m11 ); + + } else { + + this._x = Math.atan2( - m23, m33 ); + this._y = 0; + + } + + } else { + + console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ); + + } + + this._order = order; + + if ( update !== false ) this.onChangeCallback(); + + return this; + + }, + + setFromQuaternion: function () { + + var matrix = new Matrix4(); + + return function setFromQuaternion( q, order, update ) { + + matrix.makeRotationFromQuaternion( q ); + + return this.setFromRotationMatrix( matrix, order, update ); + + }; + + }(), + + setFromVector3: function ( v, order ) { + + return this.set( v.x, v.y, v.z, order || this._order ); + + }, + + reorder: function () { + + // WARNING: this discards revolution information -bhouston + + var q = new Quaternion(); + + return function reorder( newOrder ) { + + q.setFromEuler( this ); + + return this.setFromQuaternion( q, newOrder ); + + }; + + }(), + + equals: function ( euler ) { + + return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); + + }, + + fromArray: function ( array ) { + + this._x = array[ 0 ]; + this._y = array[ 1 ]; + this._z = array[ 2 ]; + if ( array[ 3 ] !== undefined ) this._order = array[ 3 ]; + + this.onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) array = []; + if ( offset === undefined ) offset = 0; + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._order; + + return array; + + }, + + toVector3: function ( optionalResult ) { + + if ( optionalResult ) { + + return optionalResult.set( this._x, this._y, this._z ); + + } else { + + return new Vector3( this._x, this._y, this._z ); + + } + + }, + + onChange: function ( callback ) { + + this.onChangeCallback = callback; + + return this; + + }, + + onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Layers() { + + this.mask = 1 | 0; + + } + + Object.assign( Layers.prototype, { + + set: function ( channel ) { + + this.mask = 1 << channel | 0; + + }, + + enable: function ( channel ) { + + this.mask |= 1 << channel | 0; + + }, + + toggle: function ( channel ) { + + this.mask ^= 1 << channel | 0; + + }, + + disable: function ( channel ) { + + this.mask &= ~ ( 1 << channel | 0 ); + + }, + + test: function ( layers ) { + + return ( this.mask & layers.mask ) !== 0; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author elephantatwork / www.elephantatwork.ch + */ + + var object3DId = 0; + + function Object3D() { + + Object.defineProperty( this, 'id', { value: object3DId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Object3D'; + + this.parent = null; + this.children = []; + + this.up = Object3D.DefaultUp.clone(); + + var position = new Vector3(); + var rotation = new Euler(); + var quaternion = new Quaternion(); + var scale = new Vector3( 1, 1, 1 ); + + function onRotationChange() { + + quaternion.setFromEuler( rotation, false ); + + } + + function onQuaternionChange() { + + rotation.setFromQuaternion( quaternion, undefined, false ); + + } + + rotation.onChange( onRotationChange ); + quaternion.onChange( onQuaternionChange ); + + Object.defineProperties( this, { + position: { + enumerable: true, + value: position + }, + rotation: { + enumerable: true, + value: rotation + }, + quaternion: { + enumerable: true, + value: quaternion + }, + scale: { + enumerable: true, + value: scale + }, + modelViewMatrix: { + value: new Matrix4() + }, + normalMatrix: { + value: new Matrix3() + } + } ); + + this.matrix = new Matrix4(); + this.matrixWorld = new Matrix4(); + + this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate; + this.matrixWorldNeedsUpdate = false; + + this.layers = new Layers(); + this.visible = true; + + this.castShadow = false; + this.receiveShadow = false; + + this.frustumCulled = true; + this.renderOrder = 0; + + this.userData = {}; + + } + + Object3D.DefaultUp = new Vector3( 0, 1, 0 ); + Object3D.DefaultMatrixAutoUpdate = true; + + Object3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Object3D, + + isObject3D: true, + + onBeforeRender: function () {}, + onAfterRender: function () {}, + + applyMatrix: function ( matrix ) { + + this.matrix.multiplyMatrices( matrix, this.matrix ); + + this.matrix.decompose( this.position, this.quaternion, this.scale ); + + }, + + applyQuaternion: function ( q ) { + + this.quaternion.premultiply( q ); + + return this; + + }, + + setRotationFromAxisAngle: function ( axis, angle ) { + + // assumes axis is normalized + + this.quaternion.setFromAxisAngle( axis, angle ); + + }, + + setRotationFromEuler: function ( euler ) { + + this.quaternion.setFromEuler( euler, true ); + + }, + + setRotationFromMatrix: function ( m ) { + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + this.quaternion.setFromRotationMatrix( m ); + + }, + + setRotationFromQuaternion: function ( q ) { + + // assumes q is normalized + + this.quaternion.copy( q ); + + }, + + rotateOnAxis: function () { + + // rotate object on axis in object space + // axis is assumed to be normalized + + var q1 = new Quaternion(); + + return function rotateOnAxis( axis, angle ) { + + q1.setFromAxisAngle( axis, angle ); + + this.quaternion.multiply( q1 ); + + return this; + + }; + + }(), + + rotateOnWorldAxis: function () { + + // rotate object on axis in world space + // axis is assumed to be normalized + // method assumes no rotated parent + + var q1 = new Quaternion(); + + return function rotateOnWorldAxis( axis, angle ) { + + q1.setFromAxisAngle( axis, angle ); + + this.quaternion.premultiply( q1 ); + + return this; + + }; + + }(), + + rotateX: function () { + + var v1 = new Vector3( 1, 0, 0 ); + + return function rotateX( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + rotateY: function () { + + var v1 = new Vector3( 0, 1, 0 ); + + return function rotateY( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + rotateZ: function () { + + var v1 = new Vector3( 0, 0, 1 ); + + return function rotateZ( angle ) { + + return this.rotateOnAxis( v1, angle ); + + }; + + }(), + + translateOnAxis: function () { + + // translate object by distance along axis in object space + // axis is assumed to be normalized + + var v1 = new Vector3(); + + return function translateOnAxis( axis, distance ) { + + v1.copy( axis ).applyQuaternion( this.quaternion ); + + this.position.add( v1.multiplyScalar( distance ) ); + + return this; + + }; + + }(), + + translateX: function () { + + var v1 = new Vector3( 1, 0, 0 ); + + return function translateX( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + translateY: function () { + + var v1 = new Vector3( 0, 1, 0 ); + + return function translateY( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + translateZ: function () { + + var v1 = new Vector3( 0, 0, 1 ); + + return function translateZ( distance ) { + + return this.translateOnAxis( v1, distance ); + + }; + + }(), + + localToWorld: function ( vector ) { + + return vector.applyMatrix4( this.matrixWorld ); + + }, + + worldToLocal: function () { + + var m1 = new Matrix4(); + + return function worldToLocal( vector ) { + + return vector.applyMatrix4( m1.getInverse( this.matrixWorld ) ); + + }; + + }(), + + lookAt: function () { + + // This method does not support objects with rotated and/or translated parent(s) + + var m1 = new Matrix4(); + var vector = new Vector3(); + + return function lookAt( x, y, z ) { + + if ( x.isVector3 ) { + + vector.copy( x ); + + } else { + + vector.set( x, y, z ); + + } + + if ( this.isCamera ) { + + m1.lookAt( this.position, vector, this.up ); + + } else { + + m1.lookAt( vector, this.position, this.up ); + + } + + this.quaternion.setFromRotationMatrix( m1 ); + + }; + + }(), + + add: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.add( arguments[ i ] ); + + } + + return this; + + } + + if ( object === this ) { + + console.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); + return this; + + } + + if ( ( object && object.isObject3D ) ) { + + if ( object.parent !== null ) { + + object.parent.remove( object ); + + } + + object.parent = this; + object.dispatchEvent( { type: 'added' } ); + + this.children.push( object ); + + } else { + + console.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); + + } + + return this; + + }, + + remove: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.remove( arguments[ i ] ); + + } + + return this; + + } + + var index = this.children.indexOf( object ); + + if ( index !== - 1 ) { + + object.parent = null; + + object.dispatchEvent( { type: 'removed' } ); + + this.children.splice( index, 1 ); + + } + + return this; + + }, + + getObjectById: function ( id ) { + + return this.getObjectByProperty( 'id', id ); + + }, + + getObjectByName: function ( name ) { + + return this.getObjectByProperty( 'name', name ); + + }, + + getObjectByProperty: function ( name, value ) { + + if ( this[ name ] === value ) return this; + + for ( var i = 0, l = this.children.length; i < l; i ++ ) { + + var child = this.children[ i ]; + var object = child.getObjectByProperty( name, value ); + + if ( object !== undefined ) { + + return object; + + } + + } + + return undefined; + + }, + + getWorldPosition: function ( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + this.updateMatrixWorld( true ); + + return result.setFromMatrixPosition( this.matrixWorld ); + + }, + + getWorldQuaternion: function () { + + var position = new Vector3(); + var scale = new Vector3(); + + return function getWorldQuaternion( optionalTarget ) { + + var result = optionalTarget || new Quaternion(); + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( position, result, scale ); + + return result; + + }; + + }(), + + getWorldRotation: function () { + + var quaternion = new Quaternion(); + + return function getWorldRotation( optionalTarget ) { + + var result = optionalTarget || new Euler(); + + this.getWorldQuaternion( quaternion ); + + return result.setFromQuaternion( quaternion, this.rotation.order, false ); + + }; + + }(), + + getWorldScale: function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + + return function getWorldScale( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( position, quaternion, result ); + + return result; + + }; + + }(), + + getWorldDirection: function () { + + var quaternion = new Quaternion(); + + return function getWorldDirection( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + this.getWorldQuaternion( quaternion ); + + return result.set( 0, 0, 1 ).applyQuaternion( quaternion ); + + }; + + }(), + + raycast: function () {}, + + traverse: function ( callback ) { + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverse( callback ); + + } + + }, + + traverseVisible: function ( callback ) { + + if ( this.visible === false ) return; + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverseVisible( callback ); + + } + + }, + + traverseAncestors: function ( callback ) { + + var parent = this.parent; + + if ( parent !== null ) { + + callback( parent ); + + parent.traverseAncestors( callback ); + + } + + }, + + updateMatrix: function () { + + this.matrix.compose( this.position, this.quaternion, this.scale ); + + this.matrixWorldNeedsUpdate = true; + + }, + + updateMatrixWorld: function ( force ) { + + if ( this.matrixAutoUpdate ) this.updateMatrix(); + + if ( this.matrixWorldNeedsUpdate || force ) { + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + this.matrixWorldNeedsUpdate = false; + + force = true; + + } + + // update children + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateMatrixWorld( force ); + + } + + }, + + toJSON: function ( meta ) { + + // meta is a string when called from JSON.stringify + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + var output = {}; + + // meta is a hash used to collect geometries, materials. + // not providing it implies that this is the root object + // being serialized. + if ( isRootObject ) { + + // initialize meta obj + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {} + }; + + output.metadata = { + version: 4.5, + type: 'Object', + generator: 'Object3D.toJSON' + }; + + } + + // standard Object3D serialization + + var object = {}; + + object.uuid = this.uuid; + object.type = this.type; + + if ( this.name !== '' ) object.name = this.name; + if ( this.castShadow === true ) object.castShadow = true; + if ( this.receiveShadow === true ) object.receiveShadow = true; + if ( this.visible === false ) object.visible = false; + if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData; + + object.matrix = this.matrix.toArray(); + + // + + function serialize( library, element ) { + + if ( library[ element.uuid ] === undefined ) { + + library[ element.uuid ] = element.toJSON( meta ); + + } + + return element.uuid; + + } + + if ( this.geometry !== undefined ) { + + object.geometry = serialize( meta.geometries, this.geometry ); + + var parameters = this.geometry.parameters; + + if ( parameters !== undefined && parameters.shapes !== undefined ) { + + var shapes = parameters.shapes; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + serialize( meta.shapes, shape ); + + } + + } else { + + serialize( meta.shapes, shapes ); + + } + + } + + } + + if ( this.material !== undefined ) { + + if ( Array.isArray( this.material ) ) { + + var uuids = []; + + for ( var i = 0, l = this.material.length; i < l; i ++ ) { + + uuids.push( serialize( meta.materials, this.material[ i ] ) ); + + } + + object.material = uuids; + + } else { + + object.material = serialize( meta.materials, this.material ); + + } + + } + + // + + if ( this.children.length > 0 ) { + + object.children = []; + + for ( var i = 0; i < this.children.length; i ++ ) { + + object.children.push( this.children[ i ].toJSON( meta ).object ); + + } + + } + + if ( isRootObject ) { + + var geometries = extractFromCache( meta.geometries ); + var materials = extractFromCache( meta.materials ); + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + var shapes = extractFromCache( meta.shapes ); + + if ( geometries.length > 0 ) output.geometries = geometries; + if ( materials.length > 0 ) output.materials = materials; + if ( textures.length > 0 ) output.textures = textures; + if ( images.length > 0 ) output.images = images; + if ( shapes.length > 0 ) output.shapes = shapes; + + } + + output.object = object; + + return output; + + // extract data from the cache hash + // remove metadata on each item + // and return as array + function extractFromCache( cache ) { + + var values = []; + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + return values; + + } + + }, + + clone: function ( recursive ) { + + return new this.constructor().copy( this, recursive ); + + }, + + copy: function ( source, recursive ) { + + if ( recursive === undefined ) recursive = true; + + this.name = source.name; + + this.up.copy( source.up ); + + this.position.copy( source.position ); + this.quaternion.copy( source.quaternion ); + this.scale.copy( source.scale ); + + this.matrix.copy( source.matrix ); + this.matrixWorld.copy( source.matrixWorld ); + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + + this.layers.mask = source.layers.mask; + this.visible = source.visible; + + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + if ( recursive === true ) { + + for ( var i = 0; i < source.children.length; i ++ ) { + + var child = source.children[ i ]; + this.add( child.clone() ); + + } + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Camera() { + + Object3D.call( this ); + + this.type = 'Camera'; + + this.matrixWorldInverse = new Matrix4(); + this.projectionMatrix = new Matrix4(); + + } + + Camera.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Camera, + + isCamera: true, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + this.matrixWorldInverse.copy( source.matrixWorldInverse ); + this.projectionMatrix.copy( source.projectionMatrix ); + + return this; + + }, + + getWorldDirection: function () { + + var quaternion = new Quaternion(); + + return function getWorldDirection( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + this.getWorldQuaternion( quaternion ); + + return result.set( 0, 0, - 1 ).applyQuaternion( quaternion ); + + }; + + }(), + + updateMatrixWorld: function ( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + this.matrixWorldInverse.getInverse( this.matrixWorld ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author arose / http://github.com/arose + */ + + function OrthographicCamera( left, right, top, bottom, near, far ) { + + Camera.call( this ); + + this.type = 'OrthographicCamera'; + + this.zoom = 1; + this.view = null; + + this.left = left; + this.right = right; + this.top = top; + this.bottom = bottom; + + this.near = ( near !== undefined ) ? near : 0.1; + this.far = ( far !== undefined ) ? far : 2000; + + this.updateProjectionMatrix(); + + } + + OrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: OrthographicCamera, + + isOrthographicCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + this.near = source.near; + this.far = source.far; + + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + return this; + + }, + + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var dx = ( this.right - this.left ) / ( 2 * this.zoom ); + var dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); + var cx = ( this.right + this.left ) / 2; + var cy = ( this.top + this.bottom ) / 2; + + var left = cx - dx; + var right = cx + dx; + var top = cy + dy; + var bottom = cy - dy; + + if ( this.view !== null && this.view.enabled ) { + + var zoomW = this.zoom / ( this.view.width / this.view.fullWidth ); + var zoomH = this.zoom / ( this.view.height / this.view.fullHeight ); + var scaleW = ( this.right - this.left ) / this.view.width; + var scaleH = ( this.top - this.bottom ) / this.view.height; + + left += scaleW * ( this.view.offsetX / zoomW ); + right = left + scaleW * ( this.view.width / zoomW ); + top -= scaleH * ( this.view.offsetY / zoomH ); + bottom = top - scaleH * ( this.view.height / zoomH ); + + } + + this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.zoom = this.zoom; + data.object.left = this.left; + data.object.right = this.right; + data.object.top = this.top; + data.object.bottom = this.bottom; + data.object.near = this.near; + data.object.far = this.far; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Face3( a, b, c, normal, color, materialIndex ) { + + this.a = a; + this.b = b; + this.c = c; + + this.normal = ( normal && normal.isVector3 ) ? normal : new Vector3(); + this.vertexNormals = Array.isArray( normal ) ? normal : []; + + this.color = ( color && color.isColor ) ? color : new Color(); + this.vertexColors = Array.isArray( color ) ? color : []; + + this.materialIndex = materialIndex !== undefined ? materialIndex : 0; + + } + + Object.assign( Face3.prototype, { + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.a = source.a; + this.b = source.b; + this.c = source.c; + + this.normal.copy( source.normal ); + this.color.copy( source.color ); + + this.materialIndex = source.materialIndex; + + for ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) { + + this.vertexNormals[ i ] = source.vertexNormals[ i ].clone(); + + } + + for ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) { + + this.vertexColors[ i ] = source.vertexColors[ i ].clone(); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author bhouston / http://clara.io + */ + + var geometryId = 0; // Geometry uses even numbers as Id + + function Geometry() { + + Object.defineProperty( this, 'id', { value: geometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Geometry'; + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + + this.morphTargets = []; + this.morphNormals = []; + + this.skinWeights = []; + this.skinIndices = []; + + this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.elementsNeedUpdate = false; + this.verticesNeedUpdate = false; + this.uvsNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.lineDistancesNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Geometry, + + isGeometry: true, + + applyMatrix: function ( matrix ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + for ( var i = 0, il = this.vertices.length; i < il; i ++ ) { + + var vertex = this.vertices[ i ]; + vertex.applyMatrix4( matrix ); + + } + + for ( var i = 0, il = this.faces.length; i < il; i ++ ) { + + var face = this.faces[ i ]; + face.normal.applyMatrix3( normalMatrix ).normalize(); + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + face.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize(); + + } + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + this.verticesNeedUpdate = true; + this.normalsNeedUpdate = true; + + return this; + + }, + + rotateX: function () { + + // rotate geometry around world x-axis + + var m1 = new Matrix4(); + + return function rotateX( angle ) { + + m1.makeRotationX( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateY: function () { + + // rotate geometry around world y-axis + + var m1 = new Matrix4(); + + return function rotateY( angle ) { + + m1.makeRotationY( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateZ: function () { + + // rotate geometry around world z-axis + + var m1 = new Matrix4(); + + return function rotateZ( angle ) { + + m1.makeRotationZ( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + translate: function () { + + // translate geometry + + var m1 = new Matrix4(); + + return function translate( x, y, z ) { + + m1.makeTranslation( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + scale: function () { + + // scale geometry + + var m1 = new Matrix4(); + + return function scale( x, y, z ) { + + m1.makeScale( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + lookAt: function () { + + var obj = new Object3D(); + + return function lookAt( vector ) { + + obj.lookAt( vector ); + + obj.updateMatrix(); + + this.applyMatrix( obj.matrix ); + + }; + + }(), + + fromBufferGeometry: function ( geometry ) { + + var scope = this; + + var indices = geometry.index !== null ? geometry.index.array : undefined; + var attributes = geometry.attributes; + + var positions = attributes.position.array; + var normals = attributes.normal !== undefined ? attributes.normal.array : undefined; + var colors = attributes.color !== undefined ? attributes.color.array : undefined; + var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined; + var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined; + + if ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = []; + + var tempNormals = []; + var tempUVs = []; + var tempUVs2 = []; + + for ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) { + + scope.vertices.push( new Vector3( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] ) ); + + if ( normals !== undefined ) { + + tempNormals.push( new Vector3( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] ) ); + + } + + if ( colors !== undefined ) { + + scope.colors.push( new Color( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] ) ); + + } + + if ( uvs !== undefined ) { + + tempUVs.push( new Vector2( uvs[ j ], uvs[ j + 1 ] ) ); + + } + + if ( uvs2 !== undefined ) { + + tempUVs2.push( new Vector2( uvs2[ j ], uvs2[ j + 1 ] ) ); + + } + + } + + function addFace( a, b, c, materialIndex ) { + + var vertexNormals = normals !== undefined ? [ tempNormals[ a ].clone(), tempNormals[ b ].clone(), tempNormals[ c ].clone() ] : []; + var vertexColors = colors !== undefined ? [ scope.colors[ a ].clone(), scope.colors[ b ].clone(), scope.colors[ c ].clone() ] : []; + + var face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex ); + + scope.faces.push( face ); + + if ( uvs !== undefined ) { + + scope.faceVertexUvs[ 0 ].push( [ tempUVs[ a ].clone(), tempUVs[ b ].clone(), tempUVs[ c ].clone() ] ); + + } + + if ( uvs2 !== undefined ) { + + scope.faceVertexUvs[ 1 ].push( [ tempUVs2[ a ].clone(), tempUVs2[ b ].clone(), tempUVs2[ c ].clone() ] ); + + } + + } + + var groups = geometry.groups; + + if ( groups.length > 0 ) { + + for ( var i = 0; i < groups.length; i ++ ) { + + var group = groups[ i ]; + + var start = group.start; + var count = group.count; + + for ( var j = start, jl = start + count; j < jl; j += 3 ) { + + if ( indices !== undefined ) { + + addFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex ); + + } else { + + addFace( j, j + 1, j + 2, group.materialIndex ); + + } + + } + + } + + } else { + + if ( indices !== undefined ) { + + for ( var i = 0; i < indices.length; i += 3 ) { + + addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); + + } + + } else { + + for ( var i = 0; i < positions.length / 3; i += 3 ) { + + addFace( i, i + 1, i + 2 ); + + } + + } + + } + + this.computeFaceNormals(); + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + return this; + + }, + + center: function () { + + this.computeBoundingBox(); + + var offset = this.boundingBox.getCenter().negate(); + + this.translate( offset.x, offset.y, offset.z ); + + return offset; + + }, + + normalize: function () { + + this.computeBoundingSphere(); + + var center = this.boundingSphere.center; + var radius = this.boundingSphere.radius; + + var s = radius === 0 ? 1 : 1.0 / radius; + + var matrix = new Matrix4(); + matrix.set( + s, 0, 0, - s * center.x, + 0, s, 0, - s * center.y, + 0, 0, s, - s * center.z, + 0, 0, 0, 1 + ); + + this.applyMatrix( matrix ); + + return this; + + }, + + computeFaceNormals: function () { + + var cb = new Vector3(), ab = new Vector3(); + + for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) { + + var face = this.faces[ f ]; + + var vA = this.vertices[ face.a ]; + var vB = this.vertices[ face.b ]; + var vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + cb.normalize(); + + face.normal.copy( cb ); + + } + + }, + + computeVertexNormals: function ( areaWeighted ) { + + if ( areaWeighted === undefined ) areaWeighted = true; + + var v, vl, f, fl, face, vertices; + + vertices = new Array( this.vertices.length ); + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ] = new Vector3(); + + } + + if ( areaWeighted ) { + + // vertex normals weighted by triangle areas + // http://www.iquilezles.org/www/articles/normals/normals.htm + + var vA, vB, vC; + var cb = new Vector3(), ab = new Vector3(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vA = this.vertices[ face.a ]; + vB = this.vertices[ face.b ]; + vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + vertices[ face.a ].add( cb ); + vertices[ face.b ].add( cb ); + vertices[ face.c ].add( cb ); + + } + + } else { + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vertices[ face.a ].add( face.normal ); + vertices[ face.b ].add( face.normal ); + vertices[ face.c ].add( face.normal ); + + } + + } + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ].normalize(); + + } + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( vertices[ face.a ] ); + vertexNormals[ 1 ].copy( vertices[ face.b ] ); + vertexNormals[ 2 ].copy( vertices[ face.c ] ); + + } else { + + vertexNormals[ 0 ] = vertices[ face.a ].clone(); + vertexNormals[ 1 ] = vertices[ face.b ].clone(); + vertexNormals[ 2 ] = vertices[ face.c ].clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeFlatVertexNormals: function () { + + var f, fl, face; + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( face.normal ); + vertexNormals[ 1 ].copy( face.normal ); + vertexNormals[ 2 ].copy( face.normal ); + + } else { + + vertexNormals[ 0 ] = face.normal.clone(); + vertexNormals[ 1 ] = face.normal.clone(); + vertexNormals[ 2 ] = face.normal.clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeMorphNormals: function () { + + var i, il, f, fl, face; + + // save original normals + // - create temp variables on first access + // otherwise just copy (for faster repeated calls) + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + if ( ! face.__originalFaceNormal ) { + + face.__originalFaceNormal = face.normal.clone(); + + } else { + + face.__originalFaceNormal.copy( face.normal ); + + } + + if ( ! face.__originalVertexNormals ) face.__originalVertexNormals = []; + + for ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) { + + if ( ! face.__originalVertexNormals[ i ] ) { + + face.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone(); + + } else { + + face.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] ); + + } + + } + + } + + // use temp geometry to compute face and vertex normals for each morph + + var tmpGeo = new Geometry(); + tmpGeo.faces = this.faces; + + for ( i = 0, il = this.morphTargets.length; i < il; i ++ ) { + + // create on first access + + if ( ! this.morphNormals[ i ] ) { + + this.morphNormals[ i ] = {}; + this.morphNormals[ i ].faceNormals = []; + this.morphNormals[ i ].vertexNormals = []; + + var dstNormalsFace = this.morphNormals[ i ].faceNormals; + var dstNormalsVertex = this.morphNormals[ i ].vertexNormals; + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + faceNormal = new Vector3(); + vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() }; + + dstNormalsFace.push( faceNormal ); + dstNormalsVertex.push( vertexNormals ); + + } + + } + + var morphNormals = this.morphNormals[ i ]; + + // set vertices to morph target + + tmpGeo.vertices = this.morphTargets[ i ].vertices; + + // compute morph normals + + tmpGeo.computeFaceNormals(); + tmpGeo.computeVertexNormals(); + + // store morph normals + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + faceNormal = morphNormals.faceNormals[ f ]; + vertexNormals = morphNormals.vertexNormals[ f ]; + + faceNormal.copy( face.normal ); + + vertexNormals.a.copy( face.vertexNormals[ 0 ] ); + vertexNormals.b.copy( face.vertexNormals[ 1 ] ); + vertexNormals.c.copy( face.vertexNormals[ 2 ] ); + + } + + } + + // restore original normals + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + face.normal = face.__originalFaceNormal; + face.vertexNormals = face.__originalVertexNormals; + + } + + }, + + computeLineDistances: function () { + + var d = 0; + var vertices = this.vertices; + + for ( var i = 0, il = vertices.length; i < il; i ++ ) { + + if ( i > 0 ) { + + d += vertices[ i ].distanceTo( vertices[ i - 1 ] ); + + } + + this.lineDistances[ i ] = d; + + } + + }, + + computeBoundingBox: function () { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + this.boundingBox.setFromPoints( this.vertices ); + + }, + + computeBoundingSphere: function () { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + this.boundingSphere.setFromPoints( this.vertices ); + + }, + + merge: function ( geometry, matrix, materialIndexOffset ) { + + if ( ! ( geometry && geometry.isGeometry ) ) { + + console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); + return; + + } + + var normalMatrix, + vertexOffset = this.vertices.length, + vertices1 = this.vertices, + vertices2 = geometry.vertices, + faces1 = this.faces, + faces2 = geometry.faces, + uvs1 = this.faceVertexUvs[ 0 ], + uvs2 = geometry.faceVertexUvs[ 0 ], + colors1 = this.colors, + colors2 = geometry.colors; + + if ( materialIndexOffset === undefined ) materialIndexOffset = 0; + + if ( matrix !== undefined ) { + + normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + } + + // vertices + + for ( var i = 0, il = vertices2.length; i < il; i ++ ) { + + var vertex = vertices2[ i ]; + + var vertexCopy = vertex.clone(); + + if ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix ); + + vertices1.push( vertexCopy ); + + } + + // colors + + for ( var i = 0, il = colors2.length; i < il; i ++ ) { + + colors1.push( colors2[ i ].clone() ); + + } + + // faces + + for ( i = 0, il = faces2.length; i < il; i ++ ) { + + var face = faces2[ i ], faceCopy, normal, color, + faceVertexNormals = face.vertexNormals, + faceVertexColors = face.vertexColors; + + faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset ); + faceCopy.normal.copy( face.normal ); + + if ( normalMatrix !== undefined ) { + + faceCopy.normal.applyMatrix3( normalMatrix ).normalize(); + + } + + for ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) { + + normal = faceVertexNormals[ j ].clone(); + + if ( normalMatrix !== undefined ) { + + normal.applyMatrix3( normalMatrix ).normalize(); + + } + + faceCopy.vertexNormals.push( normal ); + + } + + faceCopy.color.copy( face.color ); + + for ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) { + + color = faceVertexColors[ j ]; + faceCopy.vertexColors.push( color.clone() ); + + } + + faceCopy.materialIndex = face.materialIndex + materialIndexOffset; + + faces1.push( faceCopy ); + + } + + // uvs + + for ( i = 0, il = uvs2.length; i < il; i ++ ) { + + var uv = uvs2[ i ], uvCopy = []; + + if ( uv === undefined ) { + + continue; + + } + + for ( var j = 0, jl = uv.length; j < jl; j ++ ) { + + uvCopy.push( uv[ j ].clone() ); + + } + + uvs1.push( uvCopy ); + + } + + }, + + mergeMesh: function ( mesh ) { + + if ( ! ( mesh && mesh.isMesh ) ) { + + console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); + return; + + } + + mesh.matrixAutoUpdate && mesh.updateMatrix(); + + this.merge( mesh.geometry, mesh.matrix ); + + }, + + /* + * Checks for duplicate vertices with hashmap. + * Duplicated vertices are removed + * and faces' vertices are updated. + */ + + mergeVertices: function () { + + var verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique) + var unique = [], changes = []; + + var v, key; + var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001 + var precision = Math.pow( 10, precisionPoints ); + var i, il, face; + var indices, j, jl; + + for ( i = 0, il = this.vertices.length; i < il; i ++ ) { + + v = this.vertices[ i ]; + key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision ); + + if ( verticesMap[ key ] === undefined ) { + + verticesMap[ key ] = i; + unique.push( this.vertices[ i ] ); + changes[ i ] = unique.length - 1; + + } else { + + //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]); + changes[ i ] = changes[ verticesMap[ key ] ]; + + } + + } + + + // if faces are completely degenerate after merging vertices, we + // have to remove them from the geometry. + var faceIndicesToRemove = []; + + for ( i = 0, il = this.faces.length; i < il; i ++ ) { + + face = this.faces[ i ]; + + face.a = changes[ face.a ]; + face.b = changes[ face.b ]; + face.c = changes[ face.c ]; + + indices = [ face.a, face.b, face.c ]; + + // if any duplicate vertices are found in a Face3 + // we have to remove the face as nothing can be saved + for ( var n = 0; n < 3; n ++ ) { + + if ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) { + + faceIndicesToRemove.push( i ); + break; + + } + + } + + } + + for ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) { + + var idx = faceIndicesToRemove[ i ]; + + this.faces.splice( idx, 1 ); + + for ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) { + + this.faceVertexUvs[ j ].splice( idx, 1 ); + + } + + } + + // Use unique set of vertices + + var diff = this.vertices.length - unique.length; + this.vertices = unique; + return diff; + + }, + + setFromPoints: function ( points ) { + + this.vertices = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + this.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return this; + + }, + + sortFacesByMaterialIndex: function () { + + var faces = this.faces; + var length = faces.length; + + // tag faces + + for ( var i = 0; i < length; i ++ ) { + + faces[ i ]._id = i; + + } + + // sort faces + + function materialIndexSort( a, b ) { + + return a.materialIndex - b.materialIndex; + + } + + faces.sort( materialIndexSort ); + + // sort uvs + + var uvs1 = this.faceVertexUvs[ 0 ]; + var uvs2 = this.faceVertexUvs[ 1 ]; + + var newUvs1, newUvs2; + + if ( uvs1 && uvs1.length === length ) newUvs1 = []; + if ( uvs2 && uvs2.length === length ) newUvs2 = []; + + for ( var i = 0; i < length; i ++ ) { + + var id = faces[ i ]._id; + + if ( newUvs1 ) newUvs1.push( uvs1[ id ] ); + if ( newUvs2 ) newUvs2.push( uvs2[ id ] ); + + } + + if ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1; + if ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Geometry', + generator: 'Geometry.toJSON' + } + }; + + // standard Geometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) data.name = this.name; + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + + } + + return data; + + } + + var vertices = []; + + for ( var i = 0; i < this.vertices.length; i ++ ) { + + var vertex = this.vertices[ i ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + var faces = []; + var normals = []; + var normalsHash = {}; + var colors = []; + var colorsHash = {}; + var uvs = []; + var uvsHash = {}; + + for ( var i = 0; i < this.faces.length; i ++ ) { + + var face = this.faces[ i ]; + + var hasMaterial = true; + var hasFaceUv = false; // deprecated + var hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined; + var hasFaceNormal = face.normal.length() > 0; + var hasFaceVertexNormal = face.vertexNormals.length > 0; + var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1; + var hasFaceVertexColor = face.vertexColors.length > 0; + + var faceType = 0; + + faceType = setBit( faceType, 0, 0 ); // isQuad + faceType = setBit( faceType, 1, hasMaterial ); + faceType = setBit( faceType, 2, hasFaceUv ); + faceType = setBit( faceType, 3, hasFaceVertexUv ); + faceType = setBit( faceType, 4, hasFaceNormal ); + faceType = setBit( faceType, 5, hasFaceVertexNormal ); + faceType = setBit( faceType, 6, hasFaceColor ); + faceType = setBit( faceType, 7, hasFaceVertexColor ); + + faces.push( faceType ); + faces.push( face.a, face.b, face.c ); + faces.push( face.materialIndex ); + + if ( hasFaceVertexUv ) { + + var faceVertexUvs = this.faceVertexUvs[ 0 ][ i ]; + + faces.push( + getUvIndex( faceVertexUvs[ 0 ] ), + getUvIndex( faceVertexUvs[ 1 ] ), + getUvIndex( faceVertexUvs[ 2 ] ) + ); + + } + + if ( hasFaceNormal ) { + + faces.push( getNormalIndex( face.normal ) ); + + } + + if ( hasFaceVertexNormal ) { + + var vertexNormals = face.vertexNormals; + + faces.push( + getNormalIndex( vertexNormals[ 0 ] ), + getNormalIndex( vertexNormals[ 1 ] ), + getNormalIndex( vertexNormals[ 2 ] ) + ); + + } + + if ( hasFaceColor ) { + + faces.push( getColorIndex( face.color ) ); + + } + + if ( hasFaceVertexColor ) { + + var vertexColors = face.vertexColors; + + faces.push( + getColorIndex( vertexColors[ 0 ] ), + getColorIndex( vertexColors[ 1 ] ), + getColorIndex( vertexColors[ 2 ] ) + ); + + } + + } + + function setBit( value, position, enabled ) { + + return enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) ); + + } + + function getNormalIndex( normal ) { + + var hash = normal.x.toString() + normal.y.toString() + normal.z.toString(); + + if ( normalsHash[ hash ] !== undefined ) { + + return normalsHash[ hash ]; + + } + + normalsHash[ hash ] = normals.length / 3; + normals.push( normal.x, normal.y, normal.z ); + + return normalsHash[ hash ]; + + } + + function getColorIndex( color ) { + + var hash = color.r.toString() + color.g.toString() + color.b.toString(); + + if ( colorsHash[ hash ] !== undefined ) { + + return colorsHash[ hash ]; + + } + + colorsHash[ hash ] = colors.length; + colors.push( color.getHex() ); + + return colorsHash[ hash ]; + + } + + function getUvIndex( uv ) { + + var hash = uv.x.toString() + uv.y.toString(); + + if ( uvsHash[ hash ] !== undefined ) { + + return uvsHash[ hash ]; + + } + + uvsHash[ hash ] = uvs.length / 2; + uvs.push( uv.x, uv.y ); + + return uvsHash[ hash ]; + + } + + data.data = {}; + + data.data.vertices = vertices; + data.data.normals = normals; + if ( colors.length > 0 ) data.data.colors = colors; + if ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility + data.data.faces = faces; + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new Geometry().copy( this ); + + }, + + copy: function ( source ) { + + var i, il, j, jl, k, kl; + + // reset + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + this.morphTargets = []; + this.morphNormals = []; + this.skinWeights = []; + this.skinIndices = []; + this.lineDistances = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // vertices + + var vertices = source.vertices; + + for ( i = 0, il = vertices.length; i < il; i ++ ) { + + this.vertices.push( vertices[ i ].clone() ); + + } + + // colors + + var colors = source.colors; + + for ( i = 0, il = colors.length; i < il; i ++ ) { + + this.colors.push( colors[ i ].clone() ); + + } + + // faces + + var faces = source.faces; + + for ( i = 0, il = faces.length; i < il; i ++ ) { + + this.faces.push( faces[ i ].clone() ); + + } + + // face vertex uvs + + for ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) { + + var faceVertexUvs = source.faceVertexUvs[ i ]; + + if ( this.faceVertexUvs[ i ] === undefined ) { + + this.faceVertexUvs[ i ] = []; + + } + + for ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) { + + var uvs = faceVertexUvs[ j ], uvsCopy = []; + + for ( k = 0, kl = uvs.length; k < kl; k ++ ) { + + var uv = uvs[ k ]; + + uvsCopy.push( uv.clone() ); + + } + + this.faceVertexUvs[ i ].push( uvsCopy ); + + } + + } + + // morph targets + + var morphTargets = source.morphTargets; + + for ( i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = {}; + morphTarget.name = morphTargets[ i ].name; + + // vertices + + if ( morphTargets[ i ].vertices !== undefined ) { + + morphTarget.vertices = []; + + for ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) { + + morphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() ); + + } + + } + + // normals + + if ( morphTargets[ i ].normals !== undefined ) { + + morphTarget.normals = []; + + for ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) { + + morphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() ); + + } + + } + + this.morphTargets.push( morphTarget ); + + } + + // morph normals + + var morphNormals = source.morphNormals; + + for ( i = 0, il = morphNormals.length; i < il; i ++ ) { + + var morphNormal = {}; + + // vertex normals + + if ( morphNormals[ i ].vertexNormals !== undefined ) { + + morphNormal.vertexNormals = []; + + for ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) { + + var srcVertexNormal = morphNormals[ i ].vertexNormals[ j ]; + var destVertexNormal = {}; + + destVertexNormal.a = srcVertexNormal.a.clone(); + destVertexNormal.b = srcVertexNormal.b.clone(); + destVertexNormal.c = srcVertexNormal.c.clone(); + + morphNormal.vertexNormals.push( destVertexNormal ); + + } + + } + + // face normals + + if ( morphNormals[ i ].faceNormals !== undefined ) { + + morphNormal.faceNormals = []; + + for ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) { + + morphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() ); + + } + + } + + this.morphNormals.push( morphNormal ); + + } + + // skin weights + + var skinWeights = source.skinWeights; + + for ( i = 0, il = skinWeights.length; i < il; i ++ ) { + + this.skinWeights.push( skinWeights[ i ].clone() ); + + } + + // skin indices + + var skinIndices = source.skinIndices; + + for ( i = 0, il = skinIndices.length; i < il; i ++ ) { + + this.skinIndices.push( skinIndices[ i ].clone() ); + + } + + // line distances + + var lineDistances = source.lineDistances; + + for ( i = 0, il = lineDistances.length; i < il; i ++ ) { + + this.lineDistances.push( lineDistances[ i ] ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // update flags + + this.elementsNeedUpdate = source.elementsNeedUpdate; + this.verticesNeedUpdate = source.verticesNeedUpdate; + this.uvsNeedUpdate = source.uvsNeedUpdate; + this.normalsNeedUpdate = source.normalsNeedUpdate; + this.colorsNeedUpdate = source.colorsNeedUpdate; + this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate; + this.groupsNeedUpdate = source.groupsNeedUpdate; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferAttribute( array, itemSize, normalized ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.uuid = _Math.generateUUID(); + this.name = ''; + + this.array = array; + this.itemSize = itemSize; + this.count = array !== undefined ? array.length / itemSize : 0; + this.normalized = normalized === true; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.onUploadCallback = function () {}; + + this.version = 0; + + } + + Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + Object.assign( BufferAttribute.prototype, { + + isBufferAttribute: true, + + setArray: function ( array ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.count = array !== undefined ? array.length / this.itemSize : 0; + this.array = array; + + }, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.array = new source.array.constructor( source.array ); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.itemSize; + index2 *= attribute.itemSize; + + for ( var i = 0, l = this.itemSize; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + copyArray: function ( array ) { + + this.array.set( array ); + + return this; + + }, + + copyColorsArray: function ( colors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = colors.length; i < l; i ++ ) { + + var color = colors[ i ]; + + if ( color === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); + color = new Color(); + + } + + array[ offset ++ ] = color.r; + array[ offset ++ ] = color.g; + array[ offset ++ ] = color.b; + + } + + return this; + + }, + + copyIndicesArray: function ( indices ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = indices.length; i < l; i ++ ) { + + var index = indices[ i ]; + + array[ offset ++ ] = index.a; + array[ offset ++ ] = index.b; + array[ offset ++ ] = index.c; + + } + + return this; + + }, + + copyVector2sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); + vector = new Vector2(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + + } + + return this; + + }, + + copyVector3sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); + vector = new Vector3(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + + } + + return this; + + }, + + copyVector4sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); + vector = new Vector4(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + array[ offset ++ ] = vector.w; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) offset = 0; + + this.array.set( value, offset ); + + return this; + + }, + + getX: function ( index ) { + + return this.array[ index * this.itemSize ]; + + }, + + setX: function ( index, x ) { + + this.array[ index * this.itemSize ] = x; + + return this; + + }, + + getY: function ( index ) { + + return this.array[ index * this.itemSize + 1 ]; + + }, + + setY: function ( index, y ) { + + this.array[ index * this.itemSize + 1 ] = y; + + return this; + + }, + + getZ: function ( index ) { + + return this.array[ index * this.itemSize + 2 ]; + + }, + + setZ: function ( index, z ) { + + this.array[ index * this.itemSize + 2 ] = z; + + return this; + + }, + + getW: function ( index ) { + + return this.array[ index * this.itemSize + 3 ]; + + }, + + setW: function ( index, w ) { + + this.array[ index * this.itemSize + 3 ] = w; + + return this; + + }, + + setXY: function ( index, x, y ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + this.array[ index + 3 ] = w; + + return this; + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + }, + + clone: function () { + + return new this.constructor( this.array, this.itemSize ).copy( this ); + + } + + } ); + + // + + function Int8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); + + } + + Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; + + + function Uint8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); + + } + + Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; + + + function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); + + } + + Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; + + + function Int16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); + + } + + Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; + + + function Uint16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); + + } + + Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; + + + function Int32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); + + } + + Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; + + + function Uint32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); + + } + + Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; + + + function Float32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); + + } + + Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; + + + function Float64BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); + + } + + Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectGeometry() { + + this.indices = []; + this.vertices = []; + this.normals = []; + this.colors = []; + this.uvs = []; + this.uvs2 = []; + + this.groups = []; + + this.morphTargets = {}; + + this.skinWeights = []; + this.skinIndices = []; + + // this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.verticesNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.uvsNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Object.assign( DirectGeometry.prototype, { + + computeGroups: function ( geometry ) { + + var group; + var groups = []; + var materialIndex = undefined; + + var faces = geometry.faces; + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + // materials + + if ( face.materialIndex !== materialIndex ) { + + materialIndex = face.materialIndex; + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + group = { + start: i * 3, + materialIndex: materialIndex + }; + + } + + } + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + this.groups = groups; + + }, + + fromGeometry: function ( geometry ) { + + var faces = geometry.faces; + var vertices = geometry.vertices; + var faceVertexUvs = geometry.faceVertexUvs; + + var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0; + var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0; + + // morphs + + var morphTargets = geometry.morphTargets; + var morphTargetsLength = morphTargets.length; + + var morphTargetsPosition; + + if ( morphTargetsLength > 0 ) { + + morphTargetsPosition = []; + + for ( var i = 0; i < morphTargetsLength; i ++ ) { + + morphTargetsPosition[ i ] = []; + + } + + this.morphTargets.position = morphTargetsPosition; + + } + + var morphNormals = geometry.morphNormals; + var morphNormalsLength = morphNormals.length; + + var morphTargetsNormal; + + if ( morphNormalsLength > 0 ) { + + morphTargetsNormal = []; + + for ( var i = 0; i < morphNormalsLength; i ++ ) { + + morphTargetsNormal[ i ] = []; + + } + + this.morphTargets.normal = morphTargetsNormal; + + } + + // skins + + var skinIndices = geometry.skinIndices; + var skinWeights = geometry.skinWeights; + + var hasSkinIndices = skinIndices.length === vertices.length; + var hasSkinWeights = skinWeights.length === vertices.length; + + // + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + this.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] ); + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + this.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] ); + + } else { + + var normal = face.normal; + + this.normals.push( normal, normal, normal ); + + } + + var vertexColors = face.vertexColors; + + if ( vertexColors.length === 3 ) { + + this.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] ); + + } else { + + var color = face.color; + + this.colors.push( color, color, color ); + + } + + if ( hasFaceVertexUv === true ) { + + var vertexUvs = faceVertexUvs[ 0 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i ); + + this.uvs.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + if ( hasFaceVertexUv2 === true ) { + + var vertexUvs = faceVertexUvs[ 1 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i ); + + this.uvs2.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + // morphs + + for ( var j = 0; j < morphTargetsLength; j ++ ) { + + var morphTarget = morphTargets[ j ].vertices; + + morphTargetsPosition[ j ].push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] ); + + } + + for ( var j = 0; j < morphNormalsLength; j ++ ) { + + var morphNormal = morphNormals[ j ].vertexNormals[ i ]; + + morphTargetsNormal[ j ].push( morphNormal.a, morphNormal.b, morphNormal.c ); + + } + + // skins + + if ( hasSkinIndices ) { + + this.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] ); + + } + + if ( hasSkinWeights ) { + + this.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] ); + + } + + } + + this.computeGroups( geometry ); + + this.verticesNeedUpdate = geometry.verticesNeedUpdate; + this.normalsNeedUpdate = geometry.normalsNeedUpdate; + this.colorsNeedUpdate = geometry.colorsNeedUpdate; + this.uvsNeedUpdate = geometry.uvsNeedUpdate; + this.groupsNeedUpdate = geometry.groupsNeedUpdate; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function arrayMax( array ) { + + if ( array.length === 0 ) return - Infinity; + + var max = array[ 0 ]; + + for ( var i = 1, l = array.length; i < l; ++ i ) { + + if ( array[ i ] > max ) max = array[ i ]; + + } + + return max; + + } + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id + + function BufferGeometry() { + + Object.defineProperty( this, 'id', { value: bufferGeometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'BufferGeometry'; + + this.index = null; + this.attributes = {}; + + this.morphAttributes = {}; + + this.groups = []; + + this.boundingBox = null; + this.boundingSphere = null; + + this.drawRange = { start: 0, count: Infinity }; + + } + + BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: BufferGeometry, + + isBufferGeometry: true, + + getIndex: function () { + + return this.index; + + }, + + setIndex: function ( index ) { + + if ( Array.isArray( index ) ) { + + this.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); + + } else { + + this.index = index; + + } + + }, + + addAttribute: function ( name, attribute ) { + + if ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) { + + console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); + + this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) ); + + return; + + } + + if ( name === 'index' ) { + + console.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' ); + this.setIndex( attribute ); + + return; + + } + + this.attributes[ name ] = attribute; + + return this; + + }, + + getAttribute: function ( name ) { + + return this.attributes[ name ]; + + }, + + removeAttribute: function ( name ) { + + delete this.attributes[ name ]; + + return this; + + }, + + addGroup: function ( start, count, materialIndex ) { + + this.groups.push( { + + start: start, + count: count, + materialIndex: materialIndex !== undefined ? materialIndex : 0 + + } ); + + }, + + clearGroups: function () { + + this.groups = []; + + }, + + setDrawRange: function ( start, count ) { + + this.drawRange.start = start; + this.drawRange.count = count; + + }, + + applyMatrix: function ( matrix ) { + + var position = this.attributes.position; + + if ( position !== undefined ) { + + matrix.applyToBufferAttribute( position ); + position.needsUpdate = true; + + } + + var normal = this.attributes.normal; + + if ( normal !== undefined ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + normalMatrix.applyToBufferAttribute( normal ); + normal.needsUpdate = true; + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + return this; + + }, + + rotateX: function () { + + // rotate geometry around world x-axis + + var m1 = new Matrix4(); + + return function rotateX( angle ) { + + m1.makeRotationX( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateY: function () { + + // rotate geometry around world y-axis + + var m1 = new Matrix4(); + + return function rotateY( angle ) { + + m1.makeRotationY( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + rotateZ: function () { + + // rotate geometry around world z-axis + + var m1 = new Matrix4(); + + return function rotateZ( angle ) { + + m1.makeRotationZ( angle ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + translate: function () { + + // translate geometry + + var m1 = new Matrix4(); + + return function translate( x, y, z ) { + + m1.makeTranslation( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + scale: function () { + + // scale geometry + + var m1 = new Matrix4(); + + return function scale( x, y, z ) { + + m1.makeScale( x, y, z ); + + this.applyMatrix( m1 ); + + return this; + + }; + + }(), + + lookAt: function () { + + var obj = new Object3D(); + + return function lookAt( vector ) { + + obj.lookAt( vector ); + + obj.updateMatrix(); + + this.applyMatrix( obj.matrix ); + + }; + + }(), + + center: function () { + + this.computeBoundingBox(); + + var offset = this.boundingBox.getCenter().negate(); + + this.translate( offset.x, offset.y, offset.z ); + + return offset; + + }, + + setFromObject: function ( object ) { + + // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this ); + + var geometry = object.geometry; + + if ( object.isPoints || object.isLine ) { + + var positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 ); + var colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 ); + + this.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) ); + this.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) ); + + if ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) { + + var lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 ); + + this.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) ); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + } else if ( object.isMesh ) { + + if ( geometry && geometry.isGeometry ) { + + this.fromGeometry( geometry ); + + } + + } + + return this; + + }, + + setFromPoints: function ( points ) { + + var position = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + position.push( point.x, point.y, point.z || 0 ); + + } + + this.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); + + return this; + + }, + + updateFromObject: function ( object ) { + + var geometry = object.geometry; + + if ( object.isMesh ) { + + var direct = geometry.__directGeometry; + + if ( geometry.elementsNeedUpdate === true ) { + + direct = undefined; + geometry.elementsNeedUpdate = false; + + } + + if ( direct === undefined ) { + + return this.fromGeometry( geometry ); + + } + + direct.verticesNeedUpdate = geometry.verticesNeedUpdate; + direct.normalsNeedUpdate = geometry.normalsNeedUpdate; + direct.colorsNeedUpdate = geometry.colorsNeedUpdate; + direct.uvsNeedUpdate = geometry.uvsNeedUpdate; + direct.groupsNeedUpdate = geometry.groupsNeedUpdate; + + geometry.verticesNeedUpdate = false; + geometry.normalsNeedUpdate = false; + geometry.colorsNeedUpdate = false; + geometry.uvsNeedUpdate = false; + geometry.groupsNeedUpdate = false; + + geometry = direct; + + } + + var attribute; + + if ( geometry.verticesNeedUpdate === true ) { + + attribute = this.attributes.position; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.vertices ); + attribute.needsUpdate = true; + + } + + geometry.verticesNeedUpdate = false; + + } + + if ( geometry.normalsNeedUpdate === true ) { + + attribute = this.attributes.normal; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.normals ); + attribute.needsUpdate = true; + + } + + geometry.normalsNeedUpdate = false; + + } + + if ( geometry.colorsNeedUpdate === true ) { + + attribute = this.attributes.color; + + if ( attribute !== undefined ) { + + attribute.copyColorsArray( geometry.colors ); + attribute.needsUpdate = true; + + } + + geometry.colorsNeedUpdate = false; + + } + + if ( geometry.uvsNeedUpdate ) { + + attribute = this.attributes.uv; + + if ( attribute !== undefined ) { + + attribute.copyVector2sArray( geometry.uvs ); + attribute.needsUpdate = true; + + } + + geometry.uvsNeedUpdate = false; + + } + + if ( geometry.lineDistancesNeedUpdate ) { + + attribute = this.attributes.lineDistance; + + if ( attribute !== undefined ) { + + attribute.copyArray( geometry.lineDistances ); + attribute.needsUpdate = true; + + } + + geometry.lineDistancesNeedUpdate = false; + + } + + if ( geometry.groupsNeedUpdate ) { + + geometry.computeGroups( object.geometry ); + this.groups = geometry.groups; + + geometry.groupsNeedUpdate = false; + + } + + return this; + + }, + + fromGeometry: function ( geometry ) { + + geometry.__directGeometry = new DirectGeometry().fromGeometry( geometry ); + + return this.fromDirectGeometry( geometry.__directGeometry ); + + }, + + fromDirectGeometry: function ( geometry ) { + + var positions = new Float32Array( geometry.vertices.length * 3 ); + this.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) ); + + if ( geometry.normals.length > 0 ) { + + var normals = new Float32Array( geometry.normals.length * 3 ); + this.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) ); + + } + + if ( geometry.colors.length > 0 ) { + + var colors = new Float32Array( geometry.colors.length * 3 ); + this.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) ); + + } + + if ( geometry.uvs.length > 0 ) { + + var uvs = new Float32Array( geometry.uvs.length * 2 ); + this.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) ); + + } + + if ( geometry.uvs2.length > 0 ) { + + var uvs2 = new Float32Array( geometry.uvs2.length * 2 ); + this.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) ); + + } + + if ( geometry.indices.length > 0 ) { + + var TypeArray = arrayMax( geometry.indices ) > 65535 ? Uint32Array : Uint16Array; + var indices = new TypeArray( geometry.indices.length * 3 ); + this.setIndex( new BufferAttribute( indices, 1 ).copyIndicesArray( geometry.indices ) ); + + } + + // groups + + this.groups = geometry.groups; + + // morphs + + for ( var name in geometry.morphTargets ) { + + var array = []; + var morphTargets = geometry.morphTargets[ name ]; + + for ( var i = 0, l = morphTargets.length; i < l; i ++ ) { + + var morphTarget = morphTargets[ i ]; + + var attribute = new Float32BufferAttribute( morphTarget.length * 3, 3 ); + + array.push( attribute.copyVector3sArray( morphTarget ) ); + + } + + this.morphAttributes[ name ] = array; + + } + + // skinning + + if ( geometry.skinIndices.length > 0 ) { + + var skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 ); + this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) ); + + } + + if ( geometry.skinWeights.length > 0 ) { + + var skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 ); + this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) ); + + } + + // + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + return this; + + }, + + computeBoundingBox: function () { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + var position = this.attributes.position; + + if ( position !== undefined ) { + + this.boundingBox.setFromBufferAttribute( position ); + + } else { + + this.boundingBox.makeEmpty(); + + } + + if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); + + } + + }, + + computeBoundingSphere: function () { + + var box = new Box3(); + var vector = new Vector3(); + + return function computeBoundingSphere() { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + var position = this.attributes.position; + + if ( position ) { + + var center = this.boundingSphere.center; + + box.setFromBufferAttribute( position ); + box.getCenter( center ); + + // hoping to find a boundingSphere with a radius smaller than the + // boundingSphere of the boundingBox: sqrt(3) smaller in the best case + + var maxRadiusSq = 0; + + for ( var i = 0, il = position.count; i < il; i ++ ) { + + vector.x = position.getX( i ); + vector.y = position.getY( i ); + vector.z = position.getZ( i ); + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); + + } + + this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); + + if ( isNaN( this.boundingSphere.radius ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); + + } + + } + + }; + + }(), + + computeFaceNormals: function () { + + // backwards compatibility + + }, + + computeVertexNormals: function () { + + var index = this.index; + var attributes = this.attributes; + var groups = this.groups; + + if ( attributes.position ) { + + var positions = attributes.position.array; + + if ( attributes.normal === undefined ) { + + this.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) ); + + } else { + + // reset existing normals to zero + + var array = attributes.normal.array; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + array[ i ] = 0; + + } + + } + + var normals = attributes.normal.array; + + var vA, vB, vC; + var pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); + var cb = new Vector3(), ab = new Vector3(); + + // indexed elements + + if ( index ) { + + var indices = index.array; + + if ( groups.length === 0 ) { + + this.addGroup( 0, indices.length ); + + } + + for ( var j = 0, jl = groups.length; j < jl; ++ j ) { + + var group = groups[ j ]; + + var start = group.start; + var count = group.count; + + for ( var i = start, il = start + count; i < il; i += 3 ) { + + vA = indices[ i + 0 ] * 3; + vB = indices[ i + 1 ] * 3; + vC = indices[ i + 2 ] * 3; + + pA.fromArray( positions, vA ); + pB.fromArray( positions, vB ); + pC.fromArray( positions, vC ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ vA ] += cb.x; + normals[ vA + 1 ] += cb.y; + normals[ vA + 2 ] += cb.z; + + normals[ vB ] += cb.x; + normals[ vB + 1 ] += cb.y; + normals[ vB + 2 ] += cb.z; + + normals[ vC ] += cb.x; + normals[ vC + 1 ] += cb.y; + normals[ vC + 2 ] += cb.z; + + } + + } + + } else { + + // non-indexed elements (unconnected triangle soup) + + for ( var i = 0, il = positions.length; i < il; i += 9 ) { + + pA.fromArray( positions, i ); + pB.fromArray( positions, i + 3 ); + pC.fromArray( positions, i + 6 ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ i ] = cb.x; + normals[ i + 1 ] = cb.y; + normals[ i + 2 ] = cb.z; + + normals[ i + 3 ] = cb.x; + normals[ i + 4 ] = cb.y; + normals[ i + 5 ] = cb.z; + + normals[ i + 6 ] = cb.x; + normals[ i + 7 ] = cb.y; + normals[ i + 8 ] = cb.z; + + } + + } + + this.normalizeNormals(); + + attributes.normal.needsUpdate = true; + + } + + }, + + merge: function ( geometry, offset ) { + + if ( ! ( geometry && geometry.isBufferGeometry ) ) { + + console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); + return; + + } + + if ( offset === undefined ) offset = 0; + + var attributes = this.attributes; + + for ( var key in attributes ) { + + if ( geometry.attributes[ key ] === undefined ) continue; + + var attribute1 = attributes[ key ]; + var attributeArray1 = attribute1.array; + + var attribute2 = geometry.attributes[ key ]; + var attributeArray2 = attribute2.array; + + var attributeSize = attribute2.itemSize; + + for ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) { + + attributeArray1[ j ] = attributeArray2[ i ]; + + } + + } + + return this; + + }, + + normalizeNormals: function () { + + var vector = new Vector3(); + + return function normalizeNormals() { + + var normals = this.attributes.normal; + + for ( var i = 0, il = normals.count; i < il; i ++ ) { + + vector.x = normals.getX( i ); + vector.y = normals.getY( i ); + vector.z = normals.getZ( i ); + + vector.normalize(); + + normals.setXYZ( i, vector.x, vector.y, vector.z ); + + } + + }; + + }(), + + toNonIndexed: function () { + + if ( this.index === null ) { + + console.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' ); + return this; + + } + + var geometry2 = new BufferGeometry(); + + var indices = this.index.array; + var attributes = this.attributes; + + for ( var name in attributes ) { + + var attribute = attributes[ name ]; + + var array = attribute.array; + var itemSize = attribute.itemSize; + + var array2 = new array.constructor( indices.length * itemSize ); + + var index = 0, index2 = 0; + + for ( var i = 0, l = indices.length; i < l; i ++ ) { + + index = indices[ i ] * itemSize; + + for ( var j = 0; j < itemSize; j ++ ) { + + array2[ index2 ++ ] = array[ index ++ ]; + + } + + } + + geometry2.addAttribute( name, new BufferAttribute( array2, itemSize ) ); + + } + + return geometry2; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'BufferGeometry', + generator: 'BufferGeometry.toJSON' + } + }; + + // standard BufferGeometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) data.name = this.name; + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; + + } + + return data; + + } + + data.data = { attributes: {} }; + + var index = this.index; + + if ( index !== null ) { + + var array = Array.prototype.slice.call( index.array ); + + data.data.index = { + type: index.array.constructor.name, + array: array + }; + + } + + var attributes = this.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + + var array = Array.prototype.slice.call( attribute.array ); + + data.data.attributes[ key ] = { + itemSize: attribute.itemSize, + type: attribute.array.constructor.name, + array: array, + normalized: attribute.normalized + }; + + } + + var groups = this.groups; + + if ( groups.length > 0 ) { + + data.data.groups = JSON.parse( JSON.stringify( groups ) ); + + } + + var boundingSphere = this.boundingSphere; + + if ( boundingSphere !== null ) { + + data.data.boundingSphere = { + center: boundingSphere.center.toArray(), + radius: boundingSphere.radius + }; + + } + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new BufferGeometry().copy( this ); + + }, + + copy: function ( source ) { + + var name, i, l; + + // reset + + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // index + + var index = source.index; + + if ( index !== null ) { + + this.setIndex( index.clone() ); + + } + + // attributes + + var attributes = source.attributes; + + for ( name in attributes ) { + + var attribute = attributes[ name ]; + this.addAttribute( name, attribute.clone() ); + + } + + // morph attributes + + var morphAttributes = source.morphAttributes; + + for ( name in morphAttributes ) { + + var array = []; + var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( i = 0, l = morphAttribute.length; i < l; i ++ ) { + + array.push( morphAttribute[ i ].clone() ); + + } + + this.morphAttributes[ name ] = array; + + } + + // groups + + var groups = source.groups; + + for ( i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + this.addGroup( group.start, group.count, group.materialIndex ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // draw range + + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // BoxGeometry + + function BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + Geometry.call( this ); + + this.type = 'BoxGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + this.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) ); + this.mergeVertices(); + + } + + BoxGeometry.prototype = Object.create( Geometry.prototype ); + BoxGeometry.prototype.constructor = BoxGeometry; + + // BoxBufferGeometry + + function BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + BufferGeometry.call( this ); + + this.type = 'BoxBufferGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + var scope = this; + + width = width || 1; + height = height || 1; + depth = depth || 1; + + // segments + + widthSegments = Math.floor( widthSegments ) || 1; + heightSegments = Math.floor( heightSegments ) || 1; + depthSegments = Math.floor( depthSegments ) || 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var numberOfVertices = 0; + var groupStart = 0; + + // build each side of the box geometry + + buildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px + buildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx + buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py + buildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny + buildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz + buildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { + + var segmentWidth = width / gridX; + var segmentHeight = height / gridY; + + var widthHalf = width / 2; + var heightHalf = height / 2; + var depthHalf = depth / 2; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var vertexCounter = 0; + var groupCount = 0; + + var ix, iy; + + var vector = new Vector3(); + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segmentHeight - heightHalf; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segmentWidth - widthHalf; + + // set values to correct vector component + + vector[ u ] = x * udir; + vector[ v ] = y * vdir; + vector[ w ] = depthHalf; + + // now apply vector to vertex buffer + + vertices.push( vector.x, vector.y, vector.z ); + + // set values to correct vector component + + vector[ u ] = 0; + vector[ v ] = 0; + vector[ w ] = depth > 0 ? 1 : - 1; + + // now apply vector to normal buffer + + normals.push( vector.x, vector.y, vector.z ); + + // uvs + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + // counters + + vertexCounter += 1; + + } + + } + + // indices + + // 1. you need three indices to draw a single face + // 2. a single segment consists of two faces + // 3. so we need to generate six (2*3) indices per segment + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = numberOfVertices + ix + gridX1 * iy; + var b = numberOfVertices + ix + gridX1 * ( iy + 1 ); + var c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // increase counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, materialIndex ); + + // calculate new start value for groups + + groupStart += groupCount; + + // update total number of vertices + + numberOfVertices += vertexCounter; + + } + + } + + BoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + BoxBufferGeometry.prototype.constructor = BoxBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PlaneGeometry + + function PlaneGeometry( width, height, widthSegments, heightSegments ) { + + Geometry.call( this ); + + this.type = 'PlaneGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + this.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); + this.mergeVertices(); + + } + + PlaneGeometry.prototype = Object.create( Geometry.prototype ); + PlaneGeometry.prototype.constructor = PlaneGeometry; + + // PlaneBufferGeometry + + function PlaneBufferGeometry( width, height, widthSegments, heightSegments ) { + + BufferGeometry.call( this ); + + this.type = 'PlaneBufferGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + width = width || 1; + height = height || 1; + + var width_half = width / 2; + var height_half = height / 2; + + var gridX = Math.floor( widthSegments ) || 1; + var gridY = Math.floor( heightSegments ) || 1; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var segment_width = width / gridX; + var segment_height = height / gridY; + + var ix, iy; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segment_height - height_half; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segment_width - width_half; + + vertices.push( x, - y, 0 ); + + normals.push( 0, 0, 1 ); + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + } + + } + + // indices + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = ix + gridX1 * iy; + var b = ix + gridX1 * ( iy + 1 ); + var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + PlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * depthTest: , + * depthWrite: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: + * } + */ + + function MeshBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshBasicMaterial'; + + this.color = new Color( 0xffffff ); // emissive + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + + this.lights = false; + + this.setValues( parameters ); + + } + + MeshBasicMaterial.prototype = Object.create( Material.prototype ); + MeshBasicMaterial.prototype.constructor = MeshBasicMaterial; + + MeshBasicMaterial.prototype.isMeshBasicMaterial = true; + + MeshBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * defines: { "label" : "value" }, + * uniforms: { "parameter1": { value: 1.0 }, "parameter2": { value2: 2 } }, + * + * fragmentShader: , + * vertexShader: , + * + * wireframe: , + * wireframeLinewidth: , + * + * lights: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function ShaderMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShaderMaterial'; + + this.defines = {}; + this.uniforms = {}; + + this.vertexShader = 'void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}'; + this.fragmentShader = 'void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}'; + + this.linewidth = 1; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; // set to use scene fog + this.lights = false; // set to use scene lights + this.clipping = false; // set to use user-defined clipping planes + + this.skinning = false; // set to use skinning attribute streams + this.morphTargets = false; // set to use morph targets + this.morphNormals = false; // set to use morph normals + + this.extensions = { + derivatives: false, // set to use derivatives + fragDepth: false, // set to use fragment depth values + drawBuffers: false, // set to use draw buffers + shaderTextureLOD: false // set to use shader texture LOD + }; + + // When rendered geometry doesn't include these attributes but the material does, + // use these default values in WebGL. This avoids errors when buffer data is missing. + this.defaultAttributeValues = { + 'color': [ 1, 1, 1 ], + 'uv': [ 0, 0 ], + 'uv2': [ 0, 0 ] + }; + + this.index0AttributeName = undefined; + + if ( parameters !== undefined ) { + + if ( parameters.attributes !== undefined ) { + + console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' ); + + } + + this.setValues( parameters ); + + } + + } + + ShaderMaterial.prototype = Object.create( Material.prototype ); + ShaderMaterial.prototype.constructor = ShaderMaterial; + + ShaderMaterial.prototype.isShaderMaterial = true; + + ShaderMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.fragmentShader = source.fragmentShader; + this.vertexShader = source.vertexShader; + + this.uniforms = UniformsUtils.clone( source.uniforms ); + + this.defines = source.defines; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.lights = source.lights; + this.clipping = source.clipping; + + this.skinning = source.skinning; + + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + this.extensions = source.extensions; + + return this; + + }; + + ShaderMaterial.prototype.toJSON = function ( meta ) { + + var data = Material.prototype.toJSON.call( this, meta ); + + data.uniforms = this.uniforms; + data.vertexShader = this.vertexShader; + data.fragmentShader = this.fragmentShader; + + return data; + + }; + + /** + * @author bhouston / http://clara.io + */ + + function Ray( origin, direction ) { + + this.origin = ( origin !== undefined ) ? origin : new Vector3(); + this.direction = ( direction !== undefined ) ? direction : new Vector3(); + + } + + Object.assign( Ray.prototype, { + + set: function ( origin, direction ) { + + this.origin.copy( origin ); + this.direction.copy( direction ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( ray ) { + + this.origin.copy( ray.origin ); + this.direction.copy( ray.direction ); + + return this; + + }, + + at: function ( t, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + return result.copy( this.direction ).multiplyScalar( t ).add( this.origin ); + + }, + + lookAt: function ( v ) { + + this.direction.copy( v ).sub( this.origin ).normalize(); + + return this; + + }, + + recast: function () { + + var v1 = new Vector3(); + + return function recast( t ) { + + this.origin.copy( this.at( t, v1 ) ); + + return this; + + }; + + }(), + + closestPointToPoint: function ( point, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + result.subVectors( point, this.origin ); + var directionDistance = result.dot( this.direction ); + + if ( directionDistance < 0 ) { + + return result.copy( this.origin ); + + } + + return result.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + }, + + distanceToPoint: function ( point ) { + + return Math.sqrt( this.distanceSqToPoint( point ) ); + + }, + + distanceSqToPoint: function () { + + var v1 = new Vector3(); + + return function distanceSqToPoint( point ) { + + var directionDistance = v1.subVectors( point, this.origin ).dot( this.direction ); + + // point behind the ray + + if ( directionDistance < 0 ) { + + return this.origin.distanceToSquared( point ); + + } + + v1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + return v1.distanceToSquared( point ); + + }; + + }(), + + distanceSqToSegment: function () { + + var segCenter = new Vector3(); + var segDir = new Vector3(); + var diff = new Vector3(); + + return function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h + // It returns the min distance between the ray and the segment + // defined by v0 and v1 + // It can also set two optional targets : + // - The closest point on the ray + // - The closest point on the segment + + segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); + segDir.copy( v1 ).sub( v0 ).normalize(); + diff.copy( this.origin ).sub( segCenter ); + + var segExtent = v0.distanceTo( v1 ) * 0.5; + var a01 = - this.direction.dot( segDir ); + var b0 = diff.dot( this.direction ); + var b1 = - diff.dot( segDir ); + var c = diff.lengthSq(); + var det = Math.abs( 1 - a01 * a01 ); + var s0, s1, sqrDist, extDet; + + if ( det > 0 ) { + + // The ray and segment are not parallel. + + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + + if ( s0 >= 0 ) { + + if ( s1 >= - extDet ) { + + if ( s1 <= extDet ) { + + // region 0 + // Minimum at interior points of ray and segment. + + var invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; + + } else { + + // region 1 + + s1 = segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + // region 5 + + s1 = - segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + if ( s1 <= - extDet ) { + + // region 4 + + s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } else if ( s1 <= extDet ) { + + // region 3 + + s0 = 0; + s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = s1 * ( s1 + 2 * b1 ) + c; + + } else { + + // region 2 + + s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } + + } else { + + // Ray and segment are parallel. + + s1 = ( a01 > 0 ) ? - segExtent : segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + if ( optionalPointOnRay ) { + + optionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin ); + + } + + if ( optionalPointOnSegment ) { + + optionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter ); + + } + + return sqrDist; + + }; + + }(), + + intersectSphere: function () { + + var v1 = new Vector3(); + + return function intersectSphere( sphere, optionalTarget ) { + + v1.subVectors( sphere.center, this.origin ); + var tca = v1.dot( this.direction ); + var d2 = v1.dot( v1 ) - tca * tca; + var radius2 = sphere.radius * sphere.radius; + + if ( d2 > radius2 ) return null; + + var thc = Math.sqrt( radius2 - d2 ); + + // t0 = first intersect point - entrance on front of sphere + var t0 = tca - thc; + + // t1 = second intersect point - exit point on back of sphere + var t1 = tca + thc; + + // test to see if both t0 and t1 are behind the ray - if so, return null + if ( t0 < 0 && t1 < 0 ) return null; + + // test to see if t0 is behind the ray: + // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, + // in order to always return an intersect point that is in front of the ray. + if ( t0 < 0 ) return this.at( t1, optionalTarget ); + + // else t0 is in front of the ray, so return the first collision point scaled by t0 + return this.at( t0, optionalTarget ); + + }; + + }(), + + intersectsSphere: function ( sphere ) { + + return this.distanceToPoint( sphere.center ) <= sphere.radius; + + }, + + distanceToPlane: function ( plane ) { + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( plane.distanceToPoint( this.origin ) === 0 ) { + + return 0; + + } + + // Null is preferable to undefined since undefined means.... it is undefined + + return null; + + } + + var t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; + + // Return if the ray never intersects the plane + + return t >= 0 ? t : null; + + }, + + intersectPlane: function ( plane, optionalTarget ) { + + var t = this.distanceToPlane( plane ); + + if ( t === null ) { + + return null; + + } + + return this.at( t, optionalTarget ); + + }, + + intersectsPlane: function ( plane ) { + + // check if the ray lies on the plane first + + var distToPoint = plane.distanceToPoint( this.origin ); + + if ( distToPoint === 0 ) { + + return true; + + } + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator * distToPoint < 0 ) { + + return true; + + } + + // ray origin is behind the plane (and is pointing behind it) + + return false; + + }, + + intersectBox: function ( box, optionalTarget ) { + + var tmin, tmax, tymin, tymax, tzmin, tzmax; + + var invdirx = 1 / this.direction.x, + invdiry = 1 / this.direction.y, + invdirz = 1 / this.direction.z; + + var origin = this.origin; + + if ( invdirx >= 0 ) { + + tmin = ( box.min.x - origin.x ) * invdirx; + tmax = ( box.max.x - origin.x ) * invdirx; + + } else { + + tmin = ( box.max.x - origin.x ) * invdirx; + tmax = ( box.min.x - origin.x ) * invdirx; + + } + + if ( invdiry >= 0 ) { + + tymin = ( box.min.y - origin.y ) * invdiry; + tymax = ( box.max.y - origin.y ) * invdiry; + + } else { + + tymin = ( box.max.y - origin.y ) * invdiry; + tymax = ( box.min.y - origin.y ) * invdiry; + + } + + if ( ( tmin > tymax ) || ( tymin > tmax ) ) return null; + + // These lines also handle the case where tmin or tmax is NaN + // (result of 0 * Infinity). x !== x returns true if x is NaN + + if ( tymin > tmin || tmin !== tmin ) tmin = tymin; + + if ( tymax < tmax || tmax !== tmax ) tmax = tymax; + + if ( invdirz >= 0 ) { + + tzmin = ( box.min.z - origin.z ) * invdirz; + tzmax = ( box.max.z - origin.z ) * invdirz; + + } else { + + tzmin = ( box.max.z - origin.z ) * invdirz; + tzmax = ( box.min.z - origin.z ) * invdirz; + + } + + if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null; + + if ( tzmin > tmin || tmin !== tmin ) tmin = tzmin; + + if ( tzmax < tmax || tmax !== tmax ) tmax = tzmax; + + //return point closest to the ray (positive side) + + if ( tmax < 0 ) return null; + + return this.at( tmin >= 0 ? tmin : tmax, optionalTarget ); + + }, + + intersectsBox: ( function () { + + var v = new Vector3(); + + return function intersectsBox( box ) { + + return this.intersectBox( box, v ) !== null; + + }; + + } )(), + + intersectTriangle: function () { + + // Compute the offset origin, edges, and normal. + var diff = new Vector3(); + var edge1 = new Vector3(); + var edge2 = new Vector3(); + var normal = new Vector3(); + + return function intersectTriangle( a, b, c, backfaceCulling, optionalTarget ) { + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h + + edge1.subVectors( b, a ); + edge2.subVectors( c, a ); + normal.crossVectors( edge1, edge2 ); + + // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, + // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by + // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) + // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) + // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) + var DdN = this.direction.dot( normal ); + var sign; + + if ( DdN > 0 ) { + + if ( backfaceCulling ) return null; + sign = 1; + + } else if ( DdN < 0 ) { + + sign = - 1; + DdN = - DdN; + + } else { + + return null; + + } + + diff.subVectors( this.origin, a ); + var DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) ); + + // b1 < 0, no intersection + if ( DdQxE2 < 0 ) { + + return null; + + } + + var DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) ); + + // b2 < 0, no intersection + if ( DdE1xQ < 0 ) { + + return null; + + } + + // b1+b2 > 1, no intersection + if ( DdQxE2 + DdE1xQ > DdN ) { + + return null; + + } + + // Line intersects triangle, check if ray does. + var QdN = - sign * diff.dot( normal ); + + // t < 0, no intersection + if ( QdN < 0 ) { + + return null; + + } + + // Ray intersects triangle. + return this.at( QdN / DdN, optionalTarget ); + + }; + + }(), + + applyMatrix4: function ( matrix4 ) { + + this.origin.applyMatrix4( matrix4 ); + this.direction.transformDirection( matrix4 ); + + return this; + + }, + + equals: function ( ray ) { + + return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + function Line3( start, end ) { + + this.start = ( start !== undefined ) ? start : new Vector3(); + this.end = ( end !== undefined ) ? end : new Vector3(); + + } + + Object.assign( Line3.prototype, { + + set: function ( start, end ) { + + this.start.copy( start ); + this.end.copy( end ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( line ) { + + this.start.copy( line.start ); + this.end.copy( line.end ); + + return this; + + }, + + getCenter: function ( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + return result.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); + + }, + + delta: function ( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + return result.subVectors( this.end, this.start ); + + }, + + distanceSq: function () { + + return this.start.distanceToSquared( this.end ); + + }, + + distance: function () { + + return this.start.distanceTo( this.end ); + + }, + + at: function ( t, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + return this.delta( result ).multiplyScalar( t ).add( this.start ); + + }, + + closestPointToPointParameter: function () { + + var startP = new Vector3(); + var startEnd = new Vector3(); + + return function closestPointToPointParameter( point, clampToLine ) { + + startP.subVectors( point, this.start ); + startEnd.subVectors( this.end, this.start ); + + var startEnd2 = startEnd.dot( startEnd ); + var startEnd_startP = startEnd.dot( startP ); + + var t = startEnd_startP / startEnd2; + + if ( clampToLine ) { + + t = _Math.clamp( t, 0, 1 ); + + } + + return t; + + }; + + }(), + + closestPointToPoint: function ( point, clampToLine, optionalTarget ) { + + var t = this.closestPointToPointParameter( point, clampToLine ); + + var result = optionalTarget || new Vector3(); + + return this.delta( result ).multiplyScalar( t ).add( this.start ); + + }, + + applyMatrix4: function ( matrix ) { + + this.start.applyMatrix4( matrix ); + this.end.applyMatrix4( matrix ); + + return this; + + }, + + equals: function ( line ) { + + return line.start.equals( this.start ) && line.end.equals( this.end ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + function Triangle( a, b, c ) { + + this.a = ( a !== undefined ) ? a : new Vector3(); + this.b = ( b !== undefined ) ? b : new Vector3(); + this.c = ( c !== undefined ) ? c : new Vector3(); + + } + + Object.assign( Triangle, { + + normal: function () { + + var v0 = new Vector3(); + + return function normal( a, b, c, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + + result.subVectors( c, b ); + v0.subVectors( a, b ); + result.cross( v0 ); + + var resultLengthSq = result.lengthSq(); + if ( resultLengthSq > 0 ) { + + return result.multiplyScalar( 1 / Math.sqrt( resultLengthSq ) ); + + } + + return result.set( 0, 0, 0 ); + + }; + + }(), + + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + barycoordFromPoint: function () { + + var v0 = new Vector3(); + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function barycoordFromPoint( point, a, b, c, optionalTarget ) { + + v0.subVectors( c, a ); + v1.subVectors( b, a ); + v2.subVectors( point, a ); + + var dot00 = v0.dot( v0 ); + var dot01 = v0.dot( v1 ); + var dot02 = v0.dot( v2 ); + var dot11 = v1.dot( v1 ); + var dot12 = v1.dot( v2 ); + + var denom = ( dot00 * dot11 - dot01 * dot01 ); + + var result = optionalTarget || new Vector3(); + + // collinear or singular triangle + if ( denom === 0 ) { + + // arbitrary location outside of triangle? + // not sure if this is the best idea, maybe should be returning undefined + return result.set( - 2, - 1, - 1 ); + + } + + var invDenom = 1 / denom; + var u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; + var v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; + + // barycentric coordinates must always sum to 1 + return result.set( 1 - u - v, v, u ); + + }; + + }(), + + containsPoint: function () { + + var v1 = new Vector3(); + + return function containsPoint( point, a, b, c ) { + + var result = Triangle.barycoordFromPoint( point, a, b, c, v1 ); + + return ( result.x >= 0 ) && ( result.y >= 0 ) && ( ( result.x + result.y ) <= 1 ); + + }; + + }() + + } ); + + Object.assign( Triangle.prototype, { + + set: function ( a, b, c ) { + + this.a.copy( a ); + this.b.copy( b ); + this.c.copy( c ); + + return this; + + }, + + setFromPointsAndIndices: function ( points, i0, i1, i2 ) { + + this.a.copy( points[ i0 ] ); + this.b.copy( points[ i1 ] ); + this.c.copy( points[ i2 ] ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( triangle ) { + + this.a.copy( triangle.a ); + this.b.copy( triangle.b ); + this.c.copy( triangle.c ); + + return this; + + }, + + area: function () { + + var v0 = new Vector3(); + var v1 = new Vector3(); + + return function area() { + + v0.subVectors( this.c, this.b ); + v1.subVectors( this.a, this.b ); + + return v0.cross( v1 ).length() * 0.5; + + }; + + }(), + + midpoint: function ( optionalTarget ) { + + var result = optionalTarget || new Vector3(); + return result.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); + + }, + + normal: function ( optionalTarget ) { + + return Triangle.normal( this.a, this.b, this.c, optionalTarget ); + + }, + + plane: function ( optionalTarget ) { + + var result = optionalTarget || new Plane(); + + return result.setFromCoplanarPoints( this.a, this.b, this.c ); + + }, + + barycoordFromPoint: function ( point, optionalTarget ) { + + return Triangle.barycoordFromPoint( point, this.a, this.b, this.c, optionalTarget ); + + }, + + containsPoint: function ( point ) { + + return Triangle.containsPoint( point, this.a, this.b, this.c ); + + }, + + closestPointToPoint: function () { + + var plane = new Plane(); + var edgeList = [ new Line3(), new Line3(), new Line3() ]; + var projectedPoint = new Vector3(); + var closestPoint = new Vector3(); + + return function closestPointToPoint( point, optionalTarget ) { + + var result = optionalTarget || new Vector3(); + var minDistance = Infinity; + + // project the point onto the plane of the triangle + + plane.setFromCoplanarPoints( this.a, this.b, this.c ); + plane.projectPoint( point, projectedPoint ); + + // check if the projection lies within the triangle + + if ( this.containsPoint( projectedPoint ) === true ) { + + // if so, this is the closest point + + result.copy( projectedPoint ); + + } else { + + // if not, the point falls outside the triangle. the result is the closest point to the triangle's edges or vertices + + edgeList[ 0 ].set( this.a, this.b ); + edgeList[ 1 ].set( this.b, this.c ); + edgeList[ 2 ].set( this.c, this.a ); + + for ( var i = 0; i < edgeList.length; i ++ ) { + + edgeList[ i ].closestPointToPoint( projectedPoint, true, closestPoint ); + + var distance = projectedPoint.distanceToSquared( closestPoint ); + + if ( distance < minDistance ) { + + minDistance = distance; + + result.copy( closestPoint ); + + } + + } + + } + + return result; + + }; + + }(), + + equals: function ( triangle ) { + + return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author jonobr1 / http://jonobr1.com/ + */ + + function Mesh( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Mesh'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } ); + + this.drawMode = TrianglesDrawMode; + + this.updateMorphTargets(); + + } + + Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Mesh, + + isMesh: true, + + setDrawMode: function ( value ) { + + this.drawMode = value; + + }, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.drawMode = source.drawMode; + + if ( source.morphTargetInfluences !== undefined ) { + + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + + } + + if ( source.morphTargetDictionary !== undefined ) { + + this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); + + } + + return this; + + }, + + updateMorphTargets: function () { + + var geometry = this.geometry; + var m, ml, name; + + if ( geometry.isBufferGeometry ) { + + var morphAttributes = geometry.morphAttributes; + var keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + var morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } else { + + var morphTargets = geometry.morphTargets; + + if ( morphTargets !== undefined && morphTargets.length > 0 ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( m = 0, ml = morphTargets.length; m < ml; m ++ ) { + + name = morphTargets[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + }, + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + var vA = new Vector3(); + var vB = new Vector3(); + var vC = new Vector3(); + + var tempA = new Vector3(); + var tempB = new Vector3(); + var tempC = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + var barycoord = new Vector3(); + + var intersectionPoint = new Vector3(); + var intersectionPointWorld = new Vector3(); + + function uvIntersection( point, p1, p2, p3, uv1, uv2, uv3 ) { + + Triangle.barycoordFromPoint( point, p1, p2, p3, barycoord ); + + uv1.multiplyScalar( barycoord.x ); + uv2.multiplyScalar( barycoord.y ); + uv3.multiplyScalar( barycoord.z ); + + uv1.add( uv2 ).add( uv3 ); + + return uv1.clone(); + + } + + function checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) { + + var intersect; + + if ( material.side === BackSide ) { + + intersect = ray.intersectTriangle( pC, pB, pA, true, point ); + + } else { + + intersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point ); + + } + + if ( intersect === null ) return null; + + intersectionPointWorld.copy( point ); + intersectionPointWorld.applyMatrix4( object.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( intersectionPointWorld ); + + if ( distance < raycaster.near || distance > raycaster.far ) return null; + + return { + distance: distance, + point: intersectionPointWorld.clone(), + object: object + }; + + } + + function checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) { + + vA.fromBufferAttribute( position, a ); + vB.fromBufferAttribute( position, b ); + vC.fromBufferAttribute( position, c ); + + var intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint ); + + if ( intersection ) { + + if ( uv ) { + + uvA.fromBufferAttribute( uv, a ); + uvB.fromBufferAttribute( uv, b ); + uvC.fromBufferAttribute( uv, c ); + + intersection.uv = uvIntersection( intersectionPoint, vA, vB, vC, uvA, uvB, uvC ); + + } + + intersection.face = new Face3( a, b, c, Triangle.normal( vA, vB, vC ) ); + intersection.faceIndex = a; + + } + + return intersection; + + } + + return function raycast( raycaster, intersects ) { + + var geometry = this.geometry; + var material = this.material; + var matrixWorld = this.matrixWorld; + + if ( material === undefined ) return; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + // Check boundingBox before continuing + + if ( geometry.boundingBox !== null ) { + + if ( ray.intersectsBox( geometry.boundingBox ) === false ) return; + + } + + var intersection; + + if ( geometry.isBufferGeometry ) { + + var a, b, c; + var index = geometry.index; + var position = geometry.attributes.position; + var uv = geometry.attributes.uv; + var i, l; + + if ( index !== null ) { + + // indexed buffer geometry + + for ( i = 0, l = index.count; i < l; i += 3 ) { + + a = index.getX( i ); + b = index.getX( i + 1 ); + c = index.getX( i + 2 ); + + intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indices buffer semantics + intersects.push( intersection ); + + } + + } + + } else if ( position !== undefined ) { + + // non-indexed buffer geometry + + for ( i = 0, l = position.count; i < l; i += 3 ) { + + a = i; + b = i + 1; + c = i + 2; + + intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c ); + + if ( intersection ) { + + intersection.index = a; // triangle number in positions buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } else if ( geometry.isGeometry ) { + + var fvA, fvB, fvC; + var isMultiMaterial = Array.isArray( material ); + + var vertices = geometry.vertices; + var faces = geometry.faces; + var uvs; + + var faceVertexUvs = geometry.faceVertexUvs[ 0 ]; + if ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs; + + for ( var f = 0, fl = faces.length; f < fl; f ++ ) { + + var face = faces[ f ]; + var faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material; + + if ( faceMaterial === undefined ) continue; + + fvA = vertices[ face.a ]; + fvB = vertices[ face.b ]; + fvC = vertices[ face.c ]; + + if ( faceMaterial.morphTargets === true ) { + + var morphTargets = geometry.morphTargets; + var morphInfluences = this.morphTargetInfluences; + + vA.set( 0, 0, 0 ); + vB.set( 0, 0, 0 ); + vC.set( 0, 0, 0 ); + + for ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) { + + var influence = morphInfluences[ t ]; + + if ( influence === 0 ) continue; + + var targets = morphTargets[ t ].vertices; + + vA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence ); + vB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence ); + vC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence ); + + } + + vA.add( fvA ); + vB.add( fvB ); + vC.add( fvC ); + + fvA = vA; + fvB = vB; + fvC = vC; + + } + + intersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint ); + + if ( intersection ) { + + if ( uvs && uvs[ f ] ) { + + var uvs_f = uvs[ f ]; + uvA.copy( uvs_f[ 0 ] ); + uvB.copy( uvs_f[ 1 ] ); + uvC.copy( uvs_f[ 2 ] ); + + intersection.uv = uvIntersection( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC ); + + } + + intersection.face = face; + intersection.faceIndex = f; + intersects.push( intersection ); + + } + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBackground( renderer, state, geometries, premultipliedAlpha ) { + + var clearColor = new Color( 0x000000 ); + var clearAlpha = 0; + + var planeCamera, planeMesh; + var boxMesh; + + function render( renderList, scene, camera, forceClear ) { + + var background = scene.background; + + if ( background === null ) { + + setClear( clearColor, clearAlpha ); + + } else if ( background && background.isColor ) { + + setClear( background, 1 ); + forceClear = true; + + } + + if ( renderer.autoClear || forceClear ) { + + renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + + } + + if ( background && background.isCubeTexture ) { + + if ( boxMesh === undefined ) { + + boxMesh = new Mesh( + new BoxBufferGeometry( 1, 1, 1 ), + new ShaderMaterial( { + uniforms: ShaderLib.cube.uniforms, + vertexShader: ShaderLib.cube.vertexShader, + fragmentShader: ShaderLib.cube.fragmentShader, + side: BackSide, + depthTest: true, + depthWrite: false, + fog: false + } ) + ); + + boxMesh.geometry.removeAttribute( 'normal' ); + boxMesh.geometry.removeAttribute( 'uv' ); + + boxMesh.onBeforeRender = function ( renderer, scene, camera ) { + + this.matrixWorld.copyPosition( camera.matrixWorld ); + + }; + + geometries.update( boxMesh.geometry ); + + } + + boxMesh.material.uniforms.tCube.value = background; + + renderList.push( boxMesh, boxMesh.geometry, boxMesh.material, 0, null ); + + } else if ( background && background.isTexture ) { + + if ( planeCamera === undefined ) { + + planeCamera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); + + planeMesh = new Mesh( + new PlaneBufferGeometry( 2, 2 ), + new MeshBasicMaterial( { depthTest: false, depthWrite: false, fog: false } ) + ); + + geometries.update( planeMesh.geometry ); + + } + + planeMesh.material.map = background; + + // TODO Push this to renderList + + renderer.renderBufferDirect( planeCamera, null, planeMesh.geometry, planeMesh.material, planeMesh, null ); + + } + + } + + function setClear( color, alpha ) { + + state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha ); + + } + + return { + + getClearColor: function () { + + return clearColor; + + }, + setClearColor: function ( color, alpha ) { + + clearColor.set( color ); + clearAlpha = alpha !== undefined ? alpha : 1; + setClear( clearColor, clearAlpha ); + + }, + getClearAlpha: function () { + + return clearAlpha; + + }, + setClearAlpha: function ( alpha ) { + + clearAlpha = alpha; + setClear( clearColor, clearAlpha ); + + }, + render: render + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function painterSortStable( a, b ) { + + if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.program && b.program && a.program !== b.program ) { + + return a.program.id - b.program.id; + + } else if ( a.material.id !== b.material.id ) { + + return a.material.id - b.material.id; + + } else if ( a.z !== b.z ) { + + return a.z - b.z; + + } else { + + return a.id - b.id; + + } + + } + + function reversePainterSortStable( a, b ) { + + if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } if ( a.z !== b.z ) { + + return b.z - a.z; + + } else { + + return a.id - b.id; + + } + + } + + function WebGLRenderList() { + + var renderItems = []; + var renderItemsIndex = 0; + + var opaque = []; + var transparent = []; + + function init() { + + renderItemsIndex = 0; + + opaque.length = 0; + transparent.length = 0; + + } + + function push( object, geometry, material, z, group ) { + + var renderItem = renderItems[ renderItemsIndex ]; + + if ( renderItem === undefined ) { + + renderItem = { + id: object.id, + object: object, + geometry: geometry, + material: material, + program: material.program, + renderOrder: object.renderOrder, + z: z, + group: group + }; + + renderItems[ renderItemsIndex ] = renderItem; + + } else { + + renderItem.id = object.id; + renderItem.object = object; + renderItem.geometry = geometry; + renderItem.material = material; + renderItem.program = material.program; + renderItem.renderOrder = object.renderOrder; + renderItem.z = z; + renderItem.group = group; + + } + + ( material.transparent === true ? transparent : opaque ).push( renderItem ); + + renderItemsIndex ++; + + } + + function sort() { + + if ( opaque.length > 1 ) opaque.sort( painterSortStable ); + if ( transparent.length > 1 ) transparent.sort( reversePainterSortStable ); + + } + + return { + opaque: opaque, + transparent: transparent, + + init: init, + push: push, + + sort: sort + }; + + } + + function WebGLRenderLists() { + + var lists = {}; + + function get( scene, camera ) { + + var hash = scene.id + ',' + camera.id; + var list = lists[ hash ]; + + if ( list === undefined ) { + + // console.log( 'THREE.WebGLRenderLists:', hash ); + + list = new WebGLRenderList(); + lists[ hash ] = list; + + } + + return list; + + } + + function dispose() { + + lists = {}; + + } + + return { + get: get, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function absNumericalSort( a, b ) { + + return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] ); + + } + + function WebGLMorphtargets( gl ) { + + var influencesList = {}; + var morphInfluences = new Float32Array( 8 ); + + function update( object, geometry, material, program ) { + + var objectInfluences = object.morphTargetInfluences; + + var length = objectInfluences.length; + + var influences = influencesList[ geometry.id ]; + + if ( influences === undefined ) { + + // initialise list + + influences = []; + + for ( var i = 0; i < length; i ++ ) { + + influences[ i ] = [ i, 0 ]; + + } + + influencesList[ geometry.id ] = influences; + + } + + var morphTargets = material.morphTargets && geometry.morphAttributes.position; + var morphNormals = material.morphNormals && geometry.morphAttributes.normal; + + // Remove current morphAttributes + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + if ( influence[ 1 ] !== 0 ) { + + if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i ); + if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i ); + + } + + } + + // Collect influences + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + influence[ 0 ] = i; + influence[ 1 ] = objectInfluences[ i ]; + + } + + influences.sort( absNumericalSort ); + + // Add morphAttributes + + for ( var i = 0; i < 8; i ++ ) { + + var influence = influences[ i ]; + + if ( influence ) { + + var index = influence[ 0 ]; + var value = influence[ 1 ]; + + if ( value ) { + + if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] ); + if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] ); + + morphInfluences[ i ] = value; + continue; + + } + + } + + morphInfluences[ i ] = 0; + + } + + program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences ); + + } + + return { + + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLIndexedBufferRenderer( gl, extensions, infoRender ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + var type, bytesPerElement; + + function setIndex( value ) { + + type = value.type; + bytesPerElement = value.bytesPerElement; + + } + + function render( start, count ) { + + gl.drawElements( mode, count, type, start * bytesPerElement ); + + infoRender.calls ++; + infoRender.vertices += count; + + if ( mode === gl.TRIANGLES ) infoRender.faces += count / 3; + else if ( mode === gl.POINTS ) infoRender.points += count; + + } + + function renderInstances( geometry, start, count ) { + + var extension = extensions.get( 'ANGLE_instanced_arrays' ); + + if ( extension === null ) { + + console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + extension.drawElementsInstancedANGLE( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount ); + + infoRender.calls ++; + infoRender.vertices += count * geometry.maxInstancedCount; + + if ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3; + else if ( mode === gl.POINTS ) infoRender.points += geometry.maxInstancedCount * count; + + } + + // + + this.setMode = setMode; + this.setIndex = setIndex; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBufferRenderer( gl, extensions, infoRender ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + function render( start, count ) { + + gl.drawArrays( mode, start, count ); + + infoRender.calls ++; + infoRender.vertices += count; + + if ( mode === gl.TRIANGLES ) infoRender.faces += count / 3; + else if ( mode === gl.POINTS ) infoRender.points += count; + + } + + function renderInstances( geometry, start, count ) { + + var extension = extensions.get( 'ANGLE_instanced_arrays' ); + + if ( extension === null ) { + + console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + var position = geometry.attributes.position; + + if ( position.isInterleavedBufferAttribute ) { + + count = position.data.count; + + extension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount ); + + } else { + + extension.drawArraysInstancedANGLE( mode, start, count, geometry.maxInstancedCount ); + + } + + infoRender.calls ++; + infoRender.vertices += count * geometry.maxInstancedCount; + + if ( mode === gl.TRIANGLES ) infoRender.faces += geometry.maxInstancedCount * count / 3; + else if ( mode === gl.POINTS ) infoRender.points += geometry.maxInstancedCount * count; + + } + + // + + this.setMode = setMode; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLGeometries( gl, attributes, infoMemory ) { + + var geometries = {}; + var wireframeAttributes = {}; + + function onGeometryDispose( event ) { + + var geometry = event.target; + var buffergeometry = geometries[ geometry.id ]; + + if ( buffergeometry.index !== null ) { + + attributes.remove( buffergeometry.index ); + + } + + for ( var name in buffergeometry.attributes ) { + + attributes.remove( buffergeometry.attributes[ name ] ); + + } + + geometry.removeEventListener( 'dispose', onGeometryDispose ); + + delete geometries[ geometry.id ]; + + // TODO Remove duplicate code + + var attribute = wireframeAttributes[ geometry.id ]; + + if ( attribute ) { + + attributes.remove( attribute ); + delete wireframeAttributes[ geometry.id ]; + + } + + attribute = wireframeAttributes[ buffergeometry.id ]; + + if ( attribute ) { + + attributes.remove( attribute ); + delete wireframeAttributes[ buffergeometry.id ]; + + } + + // + + infoMemory.geometries --; + + } + + function get( object, geometry ) { + + var buffergeometry = geometries[ geometry.id ]; + + if ( buffergeometry ) return buffergeometry; + + geometry.addEventListener( 'dispose', onGeometryDispose ); + + if ( geometry.isBufferGeometry ) { + + buffergeometry = geometry; + + } else if ( geometry.isGeometry ) { + + if ( geometry._bufferGeometry === undefined ) { + + geometry._bufferGeometry = new BufferGeometry().setFromObject( object ); + + } + + buffergeometry = geometry._bufferGeometry; + + } + + geometries[ geometry.id ] = buffergeometry; + + infoMemory.geometries ++; + + return buffergeometry; + + } + + function update( geometry ) { + + var index = geometry.index; + var geometryAttributes = geometry.attributes; + + if ( index !== null ) { + + attributes.update( index, gl.ELEMENT_ARRAY_BUFFER ); + + } + + for ( var name in geometryAttributes ) { + + attributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER ); + + } + + // morph targets + + var morphAttributes = geometry.morphAttributes; + + for ( var name in morphAttributes ) { + + var array = morphAttributes[ name ]; + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + attributes.update( array[ i ], gl.ARRAY_BUFFER ); + + } + + } + + } + + function getWireframeAttribute( geometry ) { + + var attribute = wireframeAttributes[ geometry.id ]; + + if ( attribute ) return attribute; + + var indices = []; + + var geometryIndex = geometry.index; + var geometryAttributes = geometry.attributes; + + // console.time( 'wireframe' ); + + if ( geometryIndex !== null ) { + + var array = geometryIndex.array; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var a = array[ i + 0 ]; + var b = array[ i + 1 ]; + var c = array[ i + 2 ]; + + indices.push( a, b, b, c, c, a ); + + } + + } else { + + var array = geometryAttributes.position.array; + + for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { + + var a = i + 0; + var b = i + 1; + var c = i + 2; + + indices.push( a, b, b, c, c, a ); + + } + + } + + // console.timeEnd( 'wireframe' ); + + attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); + + attributes.update( attribute, gl.ELEMENT_ARRAY_BUFFER ); + + wireframeAttributes[ geometry.id ] = attribute; + + return attribute; + + } + + return { + + get: get, + update: update, + + getWireframeAttribute: getWireframeAttribute + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function UniformsCache() { + + var lights = {}; + + return { + + get: function ( light ) { + + if ( lights[ light.id ] !== undefined ) { + + return lights[ light.id ]; + + } + + var uniforms; + + switch ( light.type ) { + + case 'DirectionalLight': + uniforms = { + direction: new Vector3(), + color: new Color(), + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'SpotLight': + uniforms = { + position: new Vector3(), + direction: new Vector3(), + color: new Color(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'PointLight': + uniforms = { + position: new Vector3(), + color: new Color(), + distance: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2(), + shadowCameraNear: 1, + shadowCameraFar: 1000 + }; + break; + + case 'HemisphereLight': + uniforms = { + direction: new Vector3(), + skyColor: new Color(), + groundColor: new Color() + }; + break; + + case 'RectAreaLight': + uniforms = { + color: new Color(), + position: new Vector3(), + halfWidth: new Vector3(), + halfHeight: new Vector3() + // TODO (abelnation): set RectAreaLight shadow uniforms + }; + break; + + } + + lights[ light.id ] = uniforms; + + return uniforms; + + } + + }; + + } + + function WebGLLights() { + + var cache = new UniformsCache(); + + var state = { + + hash: '', + + ambient: [ 0, 0, 0 ], + directional: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotShadowMap: [], + spotShadowMatrix: [], + rectArea: [], + point: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [] + + }; + + var vector3 = new Vector3(); + var matrix4 = new Matrix4(); + var matrix42 = new Matrix4(); + + function setup( lights, shadows, camera ) { + + var r = 0, g = 0, b = 0; + + var directionalLength = 0; + var pointLength = 0; + var spotLength = 0; + var rectAreaLength = 0; + var hemiLength = 0; + + var viewMatrix = camera.matrixWorldInverse; + + for ( var i = 0, l = lights.length; i < l; i ++ ) { + + var light = lights[ i ]; + + var color = light.color; + var intensity = light.intensity; + var distance = light.distance; + + var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; + + if ( light.isAmbientLight ) { + + r += color.r * intensity; + g += color.g * intensity; + b += color.b * intensity; + + } else if ( light.isDirectionalLight ) { + + var uniforms = cache.get( light ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + } + + state.directionalShadowMap[ directionalLength ] = shadowMap; + state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; + state.directional[ directionalLength ] = uniforms; + + directionalLength ++; + + } else if ( light.isSpotLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( color ).multiplyScalar( intensity ); + uniforms.distance = distance; + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.coneCos = Math.cos( light.angle ); + uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); + uniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + } + + state.spotShadowMap[ spotLength ] = shadowMap; + state.spotShadowMatrix[ spotLength ] = light.shadow.matrix; + state.spot[ spotLength ] = uniforms; + + spotLength ++; + + } else if ( light.isRectAreaLight ) { + + var uniforms = cache.get( light ); + + // (a) intensity controls irradiance of entire light + uniforms.color + .copy( color ) + .multiplyScalar( intensity / ( light.width * light.height ) ); + + // (b) intensity controls the radiance per light area + // uniforms.color.copy( color ).multiplyScalar( intensity ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + // extract local rotation of light to derive width/height half vectors + matrix42.identity(); + matrix4.copy( light.matrixWorld ); + matrix4.premultiply( viewMatrix ); + matrix42.extractRotation( matrix4 ); + + uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); + uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); + + uniforms.halfWidth.applyMatrix4( matrix42 ); + uniforms.halfHeight.applyMatrix4( matrix42 ); + + // TODO (abelnation): RectAreaLight distance? + // uniforms.distance = distance; + + state.rectArea[ rectAreaLength ] = uniforms; + + rectAreaLength ++; + + } else if ( light.isPointLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.distance = light.distance; + uniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + uniforms.shadowCameraNear = shadow.camera.near; + uniforms.shadowCameraFar = shadow.camera.far; + + } + + state.pointShadowMap[ pointLength ] = shadowMap; + state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; + state.point[ pointLength ] = uniforms; + + pointLength ++; + + } else if ( light.isHemisphereLight ) { + + var uniforms = cache.get( light ); + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + uniforms.direction.transformDirection( viewMatrix ); + uniforms.direction.normalize(); + + uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); + uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); + + state.hemi[ hemiLength ] = uniforms; + + hemiLength ++; + + } + + } + + state.ambient[ 0 ] = r; + state.ambient[ 1 ] = g; + state.ambient[ 2 ] = b; + + state.directional.length = directionalLength; + state.spot.length = spotLength; + state.rectArea.length = rectAreaLength; + state.point.length = pointLength; + state.hemi.length = hemiLength; + + // TODO (sam-g-steel) why aren't we using join + state.hash = directionalLength + ',' + pointLength + ',' + spotLength + ',' + rectAreaLength + ',' + hemiLength + ',' + shadows.length; + + } + + return { + setup: setup, + state: state + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLObjects( geometries, infoRender ) { + + var updateList = {}; + + function update( object ) { + + var frame = infoRender.frame; + + var geometry = object.geometry; + var buffergeometry = geometries.get( object, geometry ); + + // Update once per frame + + if ( updateList[ buffergeometry.id ] !== frame ) { + + if ( geometry.isGeometry ) { + + buffergeometry.updateFromObject( object ); + + } + + geometries.update( buffergeometry ); + + updateList[ buffergeometry.id ] = frame; + + } + + return buffergeometry; + + } + + function clear() { + + updateList = {}; + + } + + return { + + update: update, + clear: clear + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function addLineNumbers( string ) { + + var lines = string.split( '\n' ); + + for ( var i = 0; i < lines.length; i ++ ) { + + lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; + + } + + return lines.join( '\n' ); + + } + + function WebGLShader( gl, type, string ) { + + var shader = gl.createShader( type ); + + gl.shaderSource( shader, string ); + gl.compileShader( shader ); + + if ( gl.getShaderParameter( shader, gl.COMPILE_STATUS ) === false ) { + + console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); + + } + + if ( gl.getShaderInfoLog( shader ) !== '' ) { + + console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === gl.VERTEX_SHADER ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); + + } + + // --enable-privileged-webgl-extension + // console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); + + return shader; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var programIdCount = 0; + + function getEncodingComponents( encoding ) { + + switch ( encoding ) { + + case LinearEncoding: + return [ 'Linear', '( value )' ]; + case sRGBEncoding: + return [ 'sRGB', '( value )' ]; + case RGBEEncoding: + return [ 'RGBE', '( value )' ]; + case RGBM7Encoding: + return [ 'RGBM', '( value, 7.0 )' ]; + case RGBM16Encoding: + return [ 'RGBM', '( value, 16.0 )' ]; + case RGBDEncoding: + return [ 'RGBD', '( value, 256.0 )' ]; + case GammaEncoding: + return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ]; + default: + throw new Error( 'unsupported encoding: ' + encoding ); + + } + + } + + function getTexelDecodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }'; + + } + + function getTexelEncodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }'; + + } + + function getToneMappingFunction( functionName, toneMapping ) { + + var toneMappingName; + + switch ( toneMapping ) { + + case LinearToneMapping: + toneMappingName = 'Linear'; + break; + + case ReinhardToneMapping: + toneMappingName = 'Reinhard'; + break; + + case Uncharted2ToneMapping: + toneMappingName = 'Uncharted2'; + break; + + case CineonToneMapping: + toneMappingName = 'OptimizedCineon'; + break; + + default: + throw new Error( 'unsupported toneMapping: ' + toneMapping ); + + } + + return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; + + } + + function generateExtensions( extensions, parameters, rendererExtensions ) { + + extensions = extensions || {}; + + var chunks = [ + ( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.normalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', + ( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '', + ( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '', + ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '' + ]; + + return chunks.filter( filterEmptyLine ).join( '\n' ); + + } + + function generateDefines( defines ) { + + var chunks = []; + + for ( var name in defines ) { + + var value = defines[ name ]; + + if ( value === false ) continue; + + chunks.push( '#define ' + name + ' ' + value ); + + } + + return chunks.join( '\n' ); + + } + + function fetchAttributeLocations( gl, program ) { + + var attributes = {}; + + var n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES ); + + for ( var i = 0; i < n; i ++ ) { + + var info = gl.getActiveAttrib( program, i ); + var name = info.name; + + // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); + + attributes[ name ] = gl.getAttribLocation( program, name ); + + } + + return attributes; + + } + + function filterEmptyLine( string ) { + + return string !== ''; + + } + + function replaceLightNums( string, parameters ) { + + return string + .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) + .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) + .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) + .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) + .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ); + + } + + function parseIncludes( string ) { + + var pattern = /^[ \t]*#include +<([\w\d.]+)>/gm; + + function replace( match, include ) { + + var replace = ShaderChunk[ include ]; + + if ( replace === undefined ) { + + throw new Error( 'Can not resolve #include <' + include + '>' ); + + } + + return parseIncludes( replace ); + + } + + return string.replace( pattern, replace ); + + } + + function unrollLoops( string ) { + + var pattern = /for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; + + function replace( match, start, end, snippet ) { + + var unroll = ''; + + for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) { + + unroll += snippet.replace( /\[ i \]/g, '[ ' + i + ' ]' ); + + } + + return unroll; + + } + + return string.replace( pattern, replace ); + + } + + function WebGLProgram( renderer, extensions, code, material, shader, parameters ) { + + var gl = renderer.context; + + var defines = material.defines; + + var vertexShader = shader.vertexShader; + var fragmentShader = shader.fragmentShader; + + var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; + + if ( parameters.shadowMapType === PCFShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; + + } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; + + } + + var envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + var envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; + var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + + if ( parameters.envMap ) { + + switch ( material.envMap.mapping ) { + + case CubeReflectionMapping: + case CubeRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + break; + + case CubeUVReflectionMapping: + case CubeUVRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; + break; + + case EquirectangularReflectionMapping: + case EquirectangularRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_EQUIREC'; + break; + + case SphericalReflectionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_SPHERE'; + break; + + } + + switch ( material.envMap.mapping ) { + + case CubeRefractionMapping: + case EquirectangularRefractionMapping: + envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; + break; + + } + + switch ( material.combine ) { + + case MultiplyOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + break; + + case MixOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; + break; + + case AddOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; + break; + + } + + } + + var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; + + // console.log( 'building new program ' ); + + // + + var customExtensions = generateExtensions( material.extensions, parameters, extensions ); + + var customDefines = generateDefines( defines ); + + // + + var program = gl.createProgram(); + + var prefixVertex, prefixFragment; + + if ( material.isRawShaderMaterial ) { + + prefixVertex = [ + + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixVertex.length > 0 ) { + + prefixVertex += '\n'; + + } + + prefixFragment = [ + + customExtensions, + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixFragment.length > 0 ) { + + prefixFragment += '\n'; + + } + + } else { + + prefixVertex = [ + + 'precision ' + parameters.precision + ' float;', + 'precision ' + parameters.precision + ' int;', + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + '#define MAX_BONES ' + parameters.maxBones, + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.skinning ? '#define USE_SKINNING' : '', + parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', + + parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', + parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + '#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes, + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + 'uniform mat4 modelMatrix;', + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 viewMatrix;', + 'uniform mat3 normalMatrix;', + 'uniform vec3 cameraPosition;', + + 'attribute vec3 position;', + 'attribute vec3 normal;', + 'attribute vec2 uv;', + + '#ifdef USE_COLOR', + + ' attribute vec3 color;', + + '#endif', + + '#ifdef USE_MORPHTARGETS', + + ' attribute vec3 morphTarget0;', + ' attribute vec3 morphTarget1;', + ' attribute vec3 morphTarget2;', + ' attribute vec3 morphTarget3;', + + ' #ifdef USE_MORPHNORMALS', + + ' attribute vec3 morphNormal0;', + ' attribute vec3 morphNormal1;', + ' attribute vec3 morphNormal2;', + ' attribute vec3 morphNormal3;', + + ' #else', + + ' attribute vec3 morphTarget4;', + ' attribute vec3 morphTarget5;', + ' attribute vec3 morphTarget6;', + ' attribute vec3 morphTarget7;', + + ' #endif', + + '#endif', + + '#ifdef USE_SKINNING', + + ' attribute vec4 skinIndex;', + ' attribute vec4 skinWeight;', + + '#endif', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + prefixFragment = [ + + customExtensions, + + 'precision ' + parameters.precision + ' float;', + 'precision ' + parameters.precision + ' int;', + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest : '', + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapTypeDefine : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.envMap ? '#define ' + envMapBlendingDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + + parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + '#define NUM_CLIPPING_PLANES ' + parameters.numClippingPlanes, + '#define UNION_CLIPPING_PLANES ' + ( parameters.numClippingPlanes - parameters.numClipIntersection ), + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', + + parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && extensions.get( 'EXT_frag_depth' ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + parameters.envMap && extensions.get( 'EXT_shader_texture_lod' ) ? '#define TEXTURE_LOD_EXT' : '', + + 'uniform mat4 viewMatrix;', + 'uniform vec3 cameraPosition;', + + ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', + ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below + ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', + + parameters.dithering ? '#define DITHERING' : '', + + ( parameters.outputEncoding || parameters.mapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below + parameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '', + parameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '', + parameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '', + parameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '', + + parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + } + + vertexShader = parseIncludes( vertexShader ); + vertexShader = replaceLightNums( vertexShader, parameters ); + + fragmentShader = parseIncludes( fragmentShader ); + fragmentShader = replaceLightNums( fragmentShader, parameters ); + + if ( ! material.isShaderMaterial ) { + + vertexShader = unrollLoops( vertexShader ); + fragmentShader = unrollLoops( fragmentShader ); + + } + + var vertexGlsl = prefixVertex + vertexShader; + var fragmentGlsl = prefixFragment + fragmentShader; + + // console.log( '*VERTEX*', vertexGlsl ); + // console.log( '*FRAGMENT*', fragmentGlsl ); + + var glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl ); + var glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl ); + + gl.attachShader( program, glVertexShader ); + gl.attachShader( program, glFragmentShader ); + + // Force a particular attribute to index 0. + + if ( material.index0AttributeName !== undefined ) { + + gl.bindAttribLocation( program, 0, material.index0AttributeName ); + + } else if ( parameters.morphTargets === true ) { + + // programs with morphTargets displace position out of attribute 0 + gl.bindAttribLocation( program, 0, 'position' ); + + } + + gl.linkProgram( program ); + + var programLog = gl.getProgramInfoLog( program ); + var vertexLog = gl.getShaderInfoLog( glVertexShader ); + var fragmentLog = gl.getShaderInfoLog( glFragmentShader ); + + var runnable = true; + var haveDiagnostics = true; + + // console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); + // console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); + + if ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) { + + runnable = false; + + console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), 'gl.VALIDATE_STATUS', gl.getProgramParameter( program, gl.VALIDATE_STATUS ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog ); + + } else if ( programLog !== '' ) { + + console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); + + } else if ( vertexLog === '' || fragmentLog === '' ) { + + haveDiagnostics = false; + + } + + if ( haveDiagnostics ) { + + this.diagnostics = { + + runnable: runnable, + material: material, + + programLog: programLog, + + vertexShader: { + + log: vertexLog, + prefix: prefixVertex + + }, + + fragmentShader: { + + log: fragmentLog, + prefix: prefixFragment + + } + + }; + + } + + // clean up + + gl.deleteShader( glVertexShader ); + gl.deleteShader( glFragmentShader ); + + // set up caching for uniform locations + + var cachedUniforms; + + this.getUniforms = function () { + + if ( cachedUniforms === undefined ) { + + cachedUniforms = new WebGLUniforms( gl, program, renderer ); + + } + + return cachedUniforms; + + }; + + // set up caching for attribute locations + + var cachedAttributes; + + this.getAttributes = function () { + + if ( cachedAttributes === undefined ) { + + cachedAttributes = fetchAttributeLocations( gl, program ); + + } + + return cachedAttributes; + + }; + + // free resource + + this.destroy = function () { + + gl.deleteProgram( program ); + this.program = undefined; + + }; + + // DEPRECATED + + Object.defineProperties( this, { + + uniforms: { + get: function () { + + console.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' ); + return this.getUniforms(); + + } + }, + + attributes: { + get: function () { + + console.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' ); + return this.getAttributes(); + + } + } + + } ); + + + // + + this.id = programIdCount ++; + this.code = code; + this.usedTimes = 1; + this.program = program; + this.vertexShader = glVertexShader; + this.fragmentShader = glFragmentShader; + + return this; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLPrograms( renderer, extensions, capabilities ) { + + var programs = []; + + var shaderIDs = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'phong', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow' + }; + + var parameterNames = [ + "precision", "supportsVertexTextures", "map", "mapEncoding", "envMap", "envMapMode", "envMapEncoding", + "lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "displacementMap", "specularMap", + "roughnessMap", "metalnessMap", "gradientMap", + "alphaMap", "combine", "vertexColors", "fog", "useFog", "fogExp", + "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", + "maxBones", "useVertexTexture", "morphTargets", "morphNormals", + "maxMorphTargets", "maxMorphNormals", "premultipliedAlpha", + "numDirLights", "numPointLights", "numSpotLights", "numHemiLights", "numRectAreaLights", + "shadowMapEnabled", "shadowMapType", "toneMapping", 'physicallyCorrectLights', + "alphaTest", "doubleSided", "flipSided", "numClippingPlanes", "numClipIntersection", "depthPacking", "dithering" + ]; + + + function allocateBones( object ) { + + var skeleton = object.skeleton; + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + return 1024; + + } else { + + // default for when object is not specified + // ( for example when prebuilding shader to be used with multiple objects ) + // + // - leave some extra space for other uniforms + // - limit here is ANGLE's 254 max uniform vectors + // (up to 54 should be safe) + + var nVertexUniforms = capabilities.maxVertexUniforms; + var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 ); + + var maxBones = Math.min( nVertexMatrices, bones.length ); + + if ( maxBones < bones.length ) { + + console.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' ); + return 0; + + } + + return maxBones; + + } + + } + + function getTextureEncodingFromMap( map, gammaOverrideLinear ) { + + var encoding; + + if ( ! map ) { + + encoding = LinearEncoding; + + } else if ( map.isTexture ) { + + encoding = map.encoding; + + } else if ( map.isWebGLRenderTarget ) { + + console.warn( "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead." ); + encoding = map.texture.encoding; + + } + + // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. + if ( encoding === LinearEncoding && gammaOverrideLinear ) { + + encoding = GammaEncoding; + + } + + return encoding; + + } + + this.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) { + + var shaderID = shaderIDs[ material.type ]; + + // heuristics to create shader parameters according to lights in the scene + // (not to blow over maxLights budget) + + var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0; + var precision = capabilities.precision; + + if ( material.precision !== null ) { + + precision = capabilities.getMaxPrecision( material.precision ); + + if ( precision !== material.precision ) { + + console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); + + } + + } + + var currentRenderTarget = renderer.getRenderTarget(); + + var parameters = { + + shaderID: shaderID, + + precision: precision, + supportsVertexTextures: capabilities.vertexTextures, + outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), + map: !! material.map, + mapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ), + envMap: !! material.envMap, + envMapMode: material.envMap && material.envMap.mapping, + envMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ), + envMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ), + lightMap: !! material.lightMap, + aoMap: !! material.aoMap, + emissiveMap: !! material.emissiveMap, + emissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ), + bumpMap: !! material.bumpMap, + normalMap: !! material.normalMap, + displacementMap: !! material.displacementMap, + roughnessMap: !! material.roughnessMap, + metalnessMap: !! material.metalnessMap, + specularMap: !! material.specularMap, + alphaMap: !! material.alphaMap, + + gradientMap: !! material.gradientMap, + + combine: material.combine, + + vertexColors: material.vertexColors, + + fog: !! fog, + useFog: material.fog, + fogExp: ( fog && fog.isFogExp2 ), + + flatShading: material.flatShading, + + sizeAttenuation: material.sizeAttenuation, + logarithmicDepthBuffer: capabilities.logarithmicDepthBuffer, + + skinning: material.skinning && maxBones > 0, + maxBones: maxBones, + useVertexTexture: capabilities.floatVertexTextures, + + morphTargets: material.morphTargets, + morphNormals: material.morphNormals, + maxMorphTargets: renderer.maxMorphTargets, + maxMorphNormals: renderer.maxMorphNormals, + + numDirLights: lights.directional.length, + numPointLights: lights.point.length, + numSpotLights: lights.spot.length, + numRectAreaLights: lights.rectArea.length, + numHemiLights: lights.hemi.length, + + numClippingPlanes: nClipPlanes, + numClipIntersection: nClipIntersection, + + dithering: material.dithering, + + shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0, + shadowMapType: renderer.shadowMap.type, + + toneMapping: renderer.toneMapping, + physicallyCorrectLights: renderer.physicallyCorrectLights, + + premultipliedAlpha: material.premultipliedAlpha, + + alphaTest: material.alphaTest, + doubleSided: material.side === DoubleSide, + flipSided: material.side === BackSide, + + depthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false + + }; + + return parameters; + + }; + + this.getProgramCode = function ( material, parameters ) { + + var array = []; + + if ( parameters.shaderID ) { + + array.push( parameters.shaderID ); + + } else { + + array.push( material.fragmentShader ); + array.push( material.vertexShader ); + + } + + if ( material.defines !== undefined ) { + + for ( var name in material.defines ) { + + array.push( name ); + array.push( material.defines[ name ] ); + + } + + } + + for ( var i = 0; i < parameterNames.length; i ++ ) { + + array.push( parameters[ parameterNames[ i ] ] ); + + } + + array.push( material.onBeforeCompile.toString() ); + + array.push( renderer.gammaOutput ); + + return array.join(); + + }; + + this.acquireProgram = function ( material, shader, parameters, code ) { + + var program; + + // Check if code has been already compiled + for ( var p = 0, pl = programs.length; p < pl; p ++ ) { + + var programInfo = programs[ p ]; + + if ( programInfo.code === code ) { + + program = programInfo; + ++ program.usedTimes; + + break; + + } + + } + + if ( program === undefined ) { + + program = new WebGLProgram( renderer, extensions, code, material, shader, parameters ); + programs.push( program ); + + } + + return program; + + }; + + this.releaseProgram = function ( program ) { + + if ( -- program.usedTimes === 0 ) { + + // Remove from unordered set + var i = programs.indexOf( program ); + programs[ i ] = programs[ programs.length - 1 ]; + programs.pop(); + + // Free WebGL resources + program.destroy(); + + } + + }; + + // Exposed for resource monitoring & error feedback via renderer.info: + this.programs = programs; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, infoMemory ) { + + var _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof window.WebGL2RenderingContext ); + var _videoTextures = {}; + + // + + function clampToMaxSize( image, maxSize ) { + + if ( image.width > maxSize || image.height > maxSize ) { + + // Warning: Scaling through the canvas will only work with images that use + // premultiplied alpha. + + var scale = maxSize / Math.max( image.width, image.height ); + + var canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + canvas.width = Math.floor( image.width * scale ); + canvas.height = Math.floor( image.height * scale ); + + var context = canvas.getContext( '2d' ); + context.drawImage( image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height ); + + console.warn( 'THREE.WebGLRenderer: image is too big (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image ); + + return canvas; + + } + + return image; + + } + + function isPowerOfTwo( image ) { + + return _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height ); + + } + + function makePowerOfTwo( image ) { + + if ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof ImageBitmap ) { + + var canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + canvas.width = _Math.floorPowerOfTwo( image.width ); + canvas.height = _Math.floorPowerOfTwo( image.height ); + + var context = canvas.getContext( '2d' ); + context.drawImage( image, 0, 0, canvas.width, canvas.height ); + + console.warn( 'THREE.WebGLRenderer: image is not power of two (' + image.width + 'x' + image.height + '). Resized to ' + canvas.width + 'x' + canvas.height, image ); + + return canvas; + + } + + return image; + + } + + function textureNeedsPowerOfTwo( texture ) { + + return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) || + ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ); + + } + + function textureNeedsGenerateMipmaps( texture, isPowerOfTwo ) { + + return texture.generateMipmaps && isPowerOfTwo && + texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + + } + + // Fallback filters for non-power-of-2 textures + + function filterFallback( f ) { + + if ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) { + + return _gl.NEAREST; + + } + + return _gl.LINEAR; + + } + + // + + function onTextureDispose( event ) { + + var texture = event.target; + + texture.removeEventListener( 'dispose', onTextureDispose ); + + deallocateTexture( texture ); + + if ( texture.isVideoTexture ) { + + delete _videoTextures[ texture.id ]; + + } + + infoMemory.textures --; + + } + + function onRenderTargetDispose( event ) { + + var renderTarget = event.target; + + renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); + + deallocateRenderTarget( renderTarget ); + + infoMemory.textures --; + + } + + // + + function deallocateTexture( texture ) { + + var textureProperties = properties.get( texture ); + + if ( texture.image && textureProperties.__image__webglTextureCube ) { + + // cube texture + + _gl.deleteTexture( textureProperties.__image__webglTextureCube ); + + } else { + + // 2D texture + + if ( textureProperties.__webglInit === undefined ) return; + + _gl.deleteTexture( textureProperties.__webglTexture ); + + } + + // remove all webgl properties + properties.remove( texture ); + + } + + function deallocateRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + if ( ! renderTarget ) return; + + if ( textureProperties.__webglTexture !== undefined ) { + + _gl.deleteTexture( textureProperties.__webglTexture ); + + } + + if ( renderTarget.depthTexture ) { + + renderTarget.depthTexture.dispose(); + + } + + if ( renderTarget.isWebGLRenderTargetCube ) { + + for ( var i = 0; i < 6; i ++ ) { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); + + } + + } else { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); + if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); + + } + + properties.remove( renderTarget.texture ); + properties.remove( renderTarget ); + + } + + // + + + + function setTexture2D( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + var image = texture.image; + + if ( image === undefined ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined', texture ); + + } else if ( image.complete === false ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', texture ); + + } else { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + } + + state.activeTexture( _gl.TEXTURE0 + slot ); + state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture ); + + } + + function setTextureCube( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.image.length === 6 ) { + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + if ( ! textureProperties.__image__webglTextureCube ) { + + texture.addEventListener( 'dispose', onTextureDispose ); + + textureProperties.__image__webglTextureCube = _gl.createTexture(); + + infoMemory.textures ++; + + } + + state.activeTexture( _gl.TEXTURE0 + slot ); + state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube ); + + _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY ); + + var isCompressed = ( texture && texture.isCompressedTexture ); + var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); + + var cubeImage = []; + + for ( var i = 0; i < 6; i ++ ) { + + if ( ! isCompressed && ! isDataTexture ) { + + cubeImage[ i ] = clampToMaxSize( texture.image[ i ], capabilities.maxCubemapSize ); + + } else { + + cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; + + } + + } + + var image = cubeImage[ 0 ], + isPowerOfTwoImage = isPowerOfTwo( image ), + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ); + + setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, isPowerOfTwoImage ); + + for ( var i = 0; i < 6; i ++ ) { + + if ( ! isCompressed ) { + + if ( isDataTexture ) { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); + + } else { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] ); + + } + + } else { + + var mipmap, mipmaps = cubeImage[ i ].mipmaps; + + for ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) { + + mipmap = mipmaps[ j ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + } + + } + + if ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) { + + _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP ); + + } + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } else { + + state.activeTexture( _gl.TEXTURE0 + slot ); + state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__image__webglTextureCube ); + + } + + } + + } + + function setTextureCubeDynamic( texture, slot ) { + + state.activeTexture( _gl.TEXTURE0 + slot ); + state.bindTexture( _gl.TEXTURE_CUBE_MAP, properties.get( texture ).__webglTexture ); + + } + + function setTextureParameters( textureType, texture, isPowerOfTwoImage ) { + + var extension; + + if ( isPowerOfTwoImage ) { + + _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, utils.convert( texture.wrapS ) ); + _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, utils.convert( texture.wrapT ) ); + + _gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, utils.convert( texture.magFilter ) ); + _gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, utils.convert( texture.minFilter ) ); + + } else { + + _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE ); + _gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE ); + + if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', texture ); + + } + + _gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterFallback( texture.magFilter ) ); + _gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterFallback( texture.minFilter ) ); + + if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', texture ); + + } + + } + + extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension ) { + + if ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return; + if ( texture.type === HalfFloatType && extensions.get( 'OES_texture_half_float_linear' ) === null ) return; + + if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { + + _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); + properties.get( texture ).__currentAnisotropy = texture.anisotropy; + + } + + } + + } + + function uploadTexture( textureProperties, texture, slot ) { + + if ( textureProperties.__webglInit === undefined ) { + + textureProperties.__webglInit = true; + + texture.addEventListener( 'dispose', onTextureDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + if ( texture.isVideoTexture ) { + + _videoTextures[ texture.id ] = texture; + + } + + infoMemory.textures ++; + + } + + state.activeTexture( _gl.TEXTURE0 + slot ); + state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture ); + + _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY ); + _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha ); + _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment ); + + var image = clampToMaxSize( texture.image, capabilities.maxTextureSize ); + + if ( textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( image ) === false ) { + + image = makePowerOfTwo( image ); + + } + + var isPowerOfTwoImage = isPowerOfTwo( image ), + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ); + + setTextureParameters( _gl.TEXTURE_2D, texture, isPowerOfTwoImage ); + + var mipmap, mipmaps = texture.mipmaps; + + if ( texture.isDepthTexture ) { + + // populate depth texture with dummy data + + var internalFormat = _gl.DEPTH_COMPONENT; + + if ( texture.type === FloatType ) { + + if ( ! _isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); + internalFormat = _gl.DEPTH_COMPONENT32F; + + } else if ( _isWebGL2 ) { + + // WebGL 2.0 requires signed internalformat for glTexImage2D + internalFormat = _gl.DEPTH_COMPONENT16; + + } + + if ( texture.format === DepthFormat && internalFormat === _gl.DEPTH_COMPONENT ) { + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' ); + + texture.type = UnsignedShortType; + glType = utils.convert( texture.type ); + + } + + } + + // Depth stencil textures need the DEPTH_STENCIL internal format + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.format === DepthStencilFormat ) { + + internalFormat = _gl.DEPTH_STENCIL; + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedInt248Type ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' ); + + texture.type = UnsignedInt248Type; + glType = utils.convert( texture.type ); + + } + + } + + state.texImage2D( _gl.TEXTURE_2D, 0, internalFormat, image.width, image.height, 0, glFormat, glType, null ); + + } else if ( texture.isDataTexture ) { + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && isPowerOfTwoImage ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + texture.generateMipmaps = false; + + } else { + + state.texImage2D( _gl.TEXTURE_2D, 0, glFormat, image.width, image.height, 0, glFormat, glType, image.data ); + + } + + } else if ( texture.isCompressedTexture ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); + + } + + } else { + + state.texImage2D( _gl.TEXTURE_2D, i, glFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + } else { + + // regular Texture (image, video, canvas) + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && isPowerOfTwoImage ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( _gl.TEXTURE_2D, i, glFormat, glFormat, glType, mipmap ); + + } + + texture.generateMipmaps = false; + + } else { + + state.texImage2D( _gl.TEXTURE_2D, 0, glFormat, glFormat, glType, image ); + + } + + } + + if ( textureNeedsGenerateMipmaps( texture, isPowerOfTwoImage ) ) _gl.generateMipmap( _gl.TEXTURE_2D ); + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) texture.onUpdate( texture ); + + } + + // Render targets + + // Setup storage for target texture and bind it to correct framebuffer + function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { + + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + state.texImage2D( textureTarget, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null ); + _gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); + _gl.bindFramebuffer( _gl.FRAMEBUFFER, null ); + + } + + // Setup storage for internal depth/stencil buffers and bind to correct framebuffer + function setupRenderBufferStorage( renderbuffer, renderTarget ) { + + _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer ); + + if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { + + _gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height ); + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer ); + + } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { + + _gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height ); + _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer ); + + } else { + + // FIXME: We don't support !depth !stencil + _gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height ); + + } + + _gl.bindRenderbuffer( _gl.RENDERBUFFER, null ); + + } + + // Setup resources for a Depth Texture for a FBO (needs an extension) + function setupDepthTexture( framebuffer, renderTarget ) { + + var isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube ); + if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' ); + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { + + throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); + + } + + // upload an empty depth texture with framebuffer size + if ( ! properties.get( renderTarget.depthTexture ).__webglTexture || + renderTarget.depthTexture.image.width !== renderTarget.width || + renderTarget.depthTexture.image.height !== renderTarget.height ) { + + renderTarget.depthTexture.image.width = renderTarget.width; + renderTarget.depthTexture.image.height = renderTarget.height; + renderTarget.depthTexture.needsUpdate = true; + + } + + setTexture2D( renderTarget.depthTexture, 0 ); + + var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture; + + if ( renderTarget.depthTexture.format === DepthFormat ) { + + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 ); + + } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { + + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 ); + + } else { + + throw new Error( 'Unknown depthTexture format' ); + + } + + } + + // Setup GL resources for a non-texture depth buffer + function setupDepthRenderbuffer( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + + if ( renderTarget.depthTexture ) { + + if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' ); + + setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); + + } else { + + if ( isCube ) { + + renderTargetProperties.__webglDepthbuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] ); + renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); + + } + + } else { + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer ); + renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); + + } + + } + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, null ); + + } + + // Set up GL resources for the render target + function setupRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + infoMemory.textures ++; + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + var isTargetPowerOfTwo = isPowerOfTwo( renderTarget ); + + // Setup framebuffer + + if ( isCube ) { + + renderTargetProperties.__webglFramebuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); + + } + + } else { + + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + + } + + // Setup color buffer + + if ( isCube ) { + + state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture ); + setTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo ); + + for ( var i = 0; i < 6; i ++ ) { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i ); + + } + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP ); + state.bindTexture( _gl.TEXTURE_CUBE_MAP, null ); + + } else { + + state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture ); + setTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo ); + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D ); + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, isTargetPowerOfTwo ) ) _gl.generateMipmap( _gl.TEXTURE_2D ); + state.bindTexture( _gl.TEXTURE_2D, null ); + + } + + // Setup depth and stencil buffers + + if ( renderTarget.depthBuffer ) { + + setupDepthRenderbuffer( renderTarget ); + + } + + } + + function updateRenderTargetMipmap( renderTarget ) { + + var texture = renderTarget.texture; + var isTargetPowerOfTwo = isPowerOfTwo( renderTarget ); + + if ( textureNeedsGenerateMipmaps( texture, isTargetPowerOfTwo ) ) { + + var target = renderTarget.isWebGLRenderTargetCube ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D; + var webglTexture = properties.get( texture ).__webglTexture; + + state.bindTexture( target, webglTexture ); + _gl.generateMipmap( target ); + state.bindTexture( target, null ); + + } + + } + + function updateVideoTextures() { + + for ( var id in _videoTextures ) { + + _videoTextures[ id ].update(); + + } + + } + + this.setTexture2D = setTexture2D; + this.setTextureCube = setTextureCube; + this.setTextureCubeDynamic = setTextureCubeDynamic; + this.setupRenderTarget = setupRenderTarget; + this.updateRenderTargetMipmap = updateRenderTargetMipmap; + this.updateVideoTextures = updateVideoTextures; + + } + + /** + * @author fordacious / fordacious.github.io + */ + + function WebGLProperties() { + + var properties = {}; + + function get( object ) { + + var uuid = object.uuid; + var map = properties[ uuid ]; + + if ( map === undefined ) { + + map = {}; + properties[ uuid ] = map; + + } + + return map; + + } + + function remove( object ) { + + delete properties[ object.uuid ]; + + } + + function clear() { + + properties = {}; + + } + + return { + get: get, + remove: remove, + clear: clear + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLState( gl, extensions, utils ) { + + function ColorBuffer() { + + var locked = false; + + var color = new Vector4(); + var currentColorMask = null; + var currentColorClear = new Vector4( 0, 0, 0, 0 ); + + return { + + setMask: function ( colorMask ) { + + if ( currentColorMask !== colorMask && ! locked ) { + + gl.colorMask( colorMask, colorMask, colorMask, colorMask ); + currentColorMask = colorMask; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( r, g, b, a, premultipliedAlpha ) { + + if ( premultipliedAlpha === true ) { + + r *= a; g *= a; b *= a; + + } + + color.set( r, g, b, a ); + + if ( currentColorClear.equals( color ) === false ) { + + gl.clearColor( r, g, b, a ); + currentColorClear.copy( color ); + + } + + }, + + reset: function () { + + locked = false; + + currentColorMask = null; + currentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state + + } + + }; + + } + + function DepthBuffer() { + + var locked = false; + + var currentDepthMask = null; + var currentDepthFunc = null; + var currentDepthClear = null; + + return { + + setTest: function ( depthTest ) { + + if ( depthTest ) { + + enable( gl.DEPTH_TEST ); + + } else { + + disable( gl.DEPTH_TEST ); + + } + + }, + + setMask: function ( depthMask ) { + + if ( currentDepthMask !== depthMask && ! locked ) { + + gl.depthMask( depthMask ); + currentDepthMask = depthMask; + + } + + }, + + setFunc: function ( depthFunc ) { + + if ( currentDepthFunc !== depthFunc ) { + + if ( depthFunc ) { + + switch ( depthFunc ) { + + case NeverDepth: + + gl.depthFunc( gl.NEVER ); + break; + + case AlwaysDepth: + + gl.depthFunc( gl.ALWAYS ); + break; + + case LessDepth: + + gl.depthFunc( gl.LESS ); + break; + + case LessEqualDepth: + + gl.depthFunc( gl.LEQUAL ); + break; + + case EqualDepth: + + gl.depthFunc( gl.EQUAL ); + break; + + case GreaterEqualDepth: + + gl.depthFunc( gl.GEQUAL ); + break; + + case GreaterDepth: + + gl.depthFunc( gl.GREATER ); + break; + + case NotEqualDepth: + + gl.depthFunc( gl.NOTEQUAL ); + break; + + default: + + gl.depthFunc( gl.LEQUAL ); + + } + + } else { + + gl.depthFunc( gl.LEQUAL ); + + } + + currentDepthFunc = depthFunc; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( depth ) { + + if ( currentDepthClear !== depth ) { + + gl.clearDepth( depth ); + currentDepthClear = depth; + + } + + }, + + reset: function () { + + locked = false; + + currentDepthMask = null; + currentDepthFunc = null; + currentDepthClear = null; + + } + + }; + + } + + function StencilBuffer() { + + var locked = false; + + var currentStencilMask = null; + var currentStencilFunc = null; + var currentStencilRef = null; + var currentStencilFuncMask = null; + var currentStencilFail = null; + var currentStencilZFail = null; + var currentStencilZPass = null; + var currentStencilClear = null; + + return { + + setTest: function ( stencilTest ) { + + if ( stencilTest ) { + + enable( gl.STENCIL_TEST ); + + } else { + + disable( gl.STENCIL_TEST ); + + } + + }, + + setMask: function ( stencilMask ) { + + if ( currentStencilMask !== stencilMask && ! locked ) { + + gl.stencilMask( stencilMask ); + currentStencilMask = stencilMask; + + } + + }, + + setFunc: function ( stencilFunc, stencilRef, stencilMask ) { + + if ( currentStencilFunc !== stencilFunc || + currentStencilRef !== stencilRef || + currentStencilFuncMask !== stencilMask ) { + + gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); + + currentStencilFunc = stencilFunc; + currentStencilRef = stencilRef; + currentStencilFuncMask = stencilMask; + + } + + }, + + setOp: function ( stencilFail, stencilZFail, stencilZPass ) { + + if ( currentStencilFail !== stencilFail || + currentStencilZFail !== stencilZFail || + currentStencilZPass !== stencilZPass ) { + + gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); + + currentStencilFail = stencilFail; + currentStencilZFail = stencilZFail; + currentStencilZPass = stencilZPass; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( stencil ) { + + if ( currentStencilClear !== stencil ) { + + gl.clearStencil( stencil ); + currentStencilClear = stencil; + + } + + }, + + reset: function () { + + locked = false; + + currentStencilMask = null; + currentStencilFunc = null; + currentStencilRef = null; + currentStencilFuncMask = null; + currentStencilFail = null; + currentStencilZFail = null; + currentStencilZPass = null; + currentStencilClear = null; + + } + + }; + + } + + // + + var colorBuffer = new ColorBuffer(); + var depthBuffer = new DepthBuffer(); + var stencilBuffer = new StencilBuffer(); + + var maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS ); + var newAttributes = new Uint8Array( maxVertexAttributes ); + var enabledAttributes = new Uint8Array( maxVertexAttributes ); + var attributeDivisors = new Uint8Array( maxVertexAttributes ); + + var capabilities = {}; + + var compressedTextureFormats = null; + + var currentProgram = null; + + var currentBlending = null; + var currentBlendEquation = null; + var currentBlendSrc = null; + var currentBlendDst = null; + var currentBlendEquationAlpha = null; + var currentBlendSrcAlpha = null; + var currentBlendDstAlpha = null; + var currentPremultipledAlpha = false; + + var currentFlipSided = null; + var currentCullFace = null; + + var currentLineWidth = null; + + var currentPolygonOffsetFactor = null; + var currentPolygonOffsetUnits = null; + + var maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS ); + + var version = parseFloat( /^WebGL\ ([0-9])/.exec( gl.getParameter( gl.VERSION ) )[ 1 ] ); + var lineWidthAvailable = parseFloat( version ) >= 1.0; + + var currentTextureSlot = null; + var currentBoundTextures = {}; + + var currentScissor = new Vector4(); + var currentViewport = new Vector4(); + + function createTexture( type, target, count ) { + + var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. + var texture = gl.createTexture(); + + gl.bindTexture( type, texture ); + gl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST ); + gl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST ); + + for ( var i = 0; i < count; i ++ ) { + + gl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data ); + + } + + return texture; + + } + + var emptyTextures = {}; + emptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 ); + emptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 ); + + // init + + colorBuffer.setClear( 0, 0, 0, 1 ); + depthBuffer.setClear( 1 ); + stencilBuffer.setClear( 0 ); + + enable( gl.DEPTH_TEST ); + depthBuffer.setFunc( LessEqualDepth ); + + setFlipSided( false ); + setCullFace( CullFaceBack ); + enable( gl.CULL_FACE ); + + enable( gl.BLEND ); + setBlending( NormalBlending ); + + // + + function initAttributes() { + + for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { + + newAttributes[ i ] = 0; + + } + + } + + function enableAttribute( attribute ) { + + newAttributes[ attribute ] = 1; + + if ( enabledAttributes[ attribute ] === 0 ) { + + gl.enableVertexAttribArray( attribute ); + enabledAttributes[ attribute ] = 1; + + } + + if ( attributeDivisors[ attribute ] !== 0 ) { + + var extension = extensions.get( 'ANGLE_instanced_arrays' ); + + extension.vertexAttribDivisorANGLE( attribute, 0 ); + attributeDivisors[ attribute ] = 0; + + } + + } + + function enableAttributeAndDivisor( attribute, meshPerAttribute ) { + + newAttributes[ attribute ] = 1; + + if ( enabledAttributes[ attribute ] === 0 ) { + + gl.enableVertexAttribArray( attribute ); + enabledAttributes[ attribute ] = 1; + + } + + if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { + + var extension = extensions.get( 'ANGLE_instanced_arrays' ); + + extension.vertexAttribDivisorANGLE( attribute, meshPerAttribute ); + attributeDivisors[ attribute ] = meshPerAttribute; + + } + + } + + function disableUnusedAttributes() { + + for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) { + + if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + } + + function enable( id ) { + + if ( capabilities[ id ] !== true ) { + + gl.enable( id ); + capabilities[ id ] = true; + + } + + } + + function disable( id ) { + + if ( capabilities[ id ] !== false ) { + + gl.disable( id ); + capabilities[ id ] = false; + + } + + } + + function getCompressedTextureFormats() { + + if ( compressedTextureFormats === null ) { + + compressedTextureFormats = []; + + if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || + extensions.get( 'WEBGL_compressed_texture_s3tc' ) || + extensions.get( 'WEBGL_compressed_texture_etc1' ) ) { + + var formats = gl.getParameter( gl.COMPRESSED_TEXTURE_FORMATS ); + + for ( var i = 0; i < formats.length; i ++ ) { + + compressedTextureFormats.push( formats[ i ] ); + + } + + } + + } + + return compressedTextureFormats; + + } + + function useProgram( program ) { + + if ( currentProgram !== program ) { + + gl.useProgram( program ); + + currentProgram = program; + + return true; + + } + + return false; + + } + + function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) { + + if ( blending !== NoBlending ) { + + enable( gl.BLEND ); + + } else { + + disable( gl.BLEND ); + + } + + if ( blending !== CustomBlending ) { + + if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { + + switch ( blending ) { + + case AdditiveBlending: + + if ( premultipliedAlpha ) { + + gl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD ); + gl.blendFuncSeparate( gl.ONE, gl.ONE, gl.ONE, gl.ONE ); + + } else { + + gl.blendEquation( gl.FUNC_ADD ); + gl.blendFunc( gl.SRC_ALPHA, gl.ONE ); + + } + break; + + case SubtractiveBlending: + + if ( premultipliedAlpha ) { + + gl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD ); + gl.blendFuncSeparate( gl.ZERO, gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ONE_MINUS_SRC_ALPHA ); + + } else { + + gl.blendEquation( gl.FUNC_ADD ); + gl.blendFunc( gl.ZERO, gl.ONE_MINUS_SRC_COLOR ); + + } + break; + + case MultiplyBlending: + + if ( premultipliedAlpha ) { + + gl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD ); + gl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA ); + + } else { + + gl.blendEquation( gl.FUNC_ADD ); + gl.blendFunc( gl.ZERO, gl.SRC_COLOR ); + + } + break; + + default: + + if ( premultipliedAlpha ) { + + gl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD ); + gl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA ); + + } else { + + gl.blendEquationSeparate( gl.FUNC_ADD, gl.FUNC_ADD ); + gl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA ); + + } + + } + + } + + currentBlendEquation = null; + currentBlendSrc = null; + currentBlendDst = null; + currentBlendEquationAlpha = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + + } else { + + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + + if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { + + gl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) ); + + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + + } + + if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { + + gl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) ); + + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + + } + + } + + currentBlending = blending; + currentPremultipledAlpha = premultipliedAlpha; + + } + + function setMaterial( material, frontFaceCW ) { + + material.side === DoubleSide + ? disable( gl.CULL_FACE ) + : enable( gl.CULL_FACE ); + + var flipSided = ( material.side === BackSide ); + if ( frontFaceCW ) flipSided = ! flipSided; + + setFlipSided( flipSided ); + + material.transparent === true + ? setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ) + : setBlending( NoBlending ); + + depthBuffer.setFunc( material.depthFunc ); + depthBuffer.setTest( material.depthTest ); + depthBuffer.setMask( material.depthWrite ); + colorBuffer.setMask( material.colorWrite ); + + setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + + } + + // + + function setFlipSided( flipSided ) { + + if ( currentFlipSided !== flipSided ) { + + if ( flipSided ) { + + gl.frontFace( gl.CW ); + + } else { + + gl.frontFace( gl.CCW ); + + } + + currentFlipSided = flipSided; + + } + + } + + function setCullFace( cullFace ) { + + if ( cullFace !== CullFaceNone ) { + + enable( gl.CULL_FACE ); + + if ( cullFace !== currentCullFace ) { + + if ( cullFace === CullFaceBack ) { + + gl.cullFace( gl.BACK ); + + } else if ( cullFace === CullFaceFront ) { + + gl.cullFace( gl.FRONT ); + + } else { + + gl.cullFace( gl.FRONT_AND_BACK ); + + } + + } + + } else { + + disable( gl.CULL_FACE ); + + } + + currentCullFace = cullFace; + + } + + function setLineWidth( width ) { + + if ( width !== currentLineWidth ) { + + if ( lineWidthAvailable ) gl.lineWidth( width ); + + currentLineWidth = width; + + } + + } + + function setPolygonOffset( polygonOffset, factor, units ) { + + if ( polygonOffset ) { + + enable( gl.POLYGON_OFFSET_FILL ); + + if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { + + gl.polygonOffset( factor, units ); + + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + + } + + } else { + + disable( gl.POLYGON_OFFSET_FILL ); + + } + + } + + function setScissorTest( scissorTest ) { + + if ( scissorTest ) { + + enable( gl.SCISSOR_TEST ); + + } else { + + disable( gl.SCISSOR_TEST ); + + } + + } + + // texture + + function activeTexture( webglSlot ) { + + if ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1; + + if ( currentTextureSlot !== webglSlot ) { + + gl.activeTexture( webglSlot ); + currentTextureSlot = webglSlot; + + } + + } + + function bindTexture( webglType, webglTexture ) { + + if ( currentTextureSlot === null ) { + + activeTexture(); + + } + + var boundTexture = currentBoundTextures[ currentTextureSlot ]; + + if ( boundTexture === undefined ) { + + boundTexture = { type: undefined, texture: undefined }; + currentBoundTextures[ currentTextureSlot ] = boundTexture; + + } + + if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { + + gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); + + boundTexture.type = webglType; + boundTexture.texture = webglTexture; + + } + + } + + function compressedTexImage2D() { + + try { + + gl.compressedTexImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage2D() { + + try { + + gl.texImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + // + + function scissor( scissor ) { + + if ( currentScissor.equals( scissor ) === false ) { + + gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); + currentScissor.copy( scissor ); + + } + + } + + function viewport( viewport ) { + + if ( currentViewport.equals( viewport ) === false ) { + + gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); + currentViewport.copy( viewport ); + + } + + } + + // + + function reset() { + + for ( var i = 0; i < enabledAttributes.length; i ++ ) { + + if ( enabledAttributes[ i ] === 1 ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + capabilities = {}; + + compressedTextureFormats = null; + + currentTextureSlot = null; + currentBoundTextures = {}; + + currentProgram = null; + + currentBlending = null; + + currentFlipSided = null; + currentCullFace = null; + + colorBuffer.reset(); + depthBuffer.reset(); + stencilBuffer.reset(); + + } + + return { + + buffers: { + color: colorBuffer, + depth: depthBuffer, + stencil: stencilBuffer + }, + + initAttributes: initAttributes, + enableAttribute: enableAttribute, + enableAttributeAndDivisor: enableAttributeAndDivisor, + disableUnusedAttributes: disableUnusedAttributes, + enable: enable, + disable: disable, + getCompressedTextureFormats: getCompressedTextureFormats, + + useProgram: useProgram, + + setBlending: setBlending, + setMaterial: setMaterial, + + setFlipSided: setFlipSided, + setCullFace: setCullFace, + + setLineWidth: setLineWidth, + setPolygonOffset: setPolygonOffset, + + setScissorTest: setScissorTest, + + activeTexture: activeTexture, + bindTexture: bindTexture, + compressedTexImage2D: compressedTexImage2D, + texImage2D: texImage2D, + + scissor: scissor, + viewport: viewport, + + reset: reset + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLCapabilities( gl, extensions, parameters ) { + + var maxAnisotropy; + + function getMaxAnisotropy() { + + if ( maxAnisotropy !== undefined ) return maxAnisotropy; + + var extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension !== null ) { + + maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); + + } else { + + maxAnisotropy = 0; + + } + + return maxAnisotropy; + + } + + function getMaxPrecision( precision ) { + + if ( precision === 'highp' ) { + + if ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 && + gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) { + + return 'highp'; + + } + + precision = 'mediump'; + + } + + if ( precision === 'mediump' ) { + + if ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 && + gl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) { + + return 'mediump'; + + } + + } + + return 'lowp'; + + } + + var precision = parameters.precision !== undefined ? parameters.precision : 'highp'; + var maxPrecision = getMaxPrecision( precision ); + + if ( maxPrecision !== precision ) { + + console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); + precision = maxPrecision; + + } + + var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; + + var maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS ); + var maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS ); + var maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE ); + var maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE ); + + var maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS ); + var maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS ); + var maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS ); + var maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS ); + + var vertexTextures = maxVertexTextures > 0; + var floatFragmentTextures = !! extensions.get( 'OES_texture_float' ); + var floatVertexTextures = vertexTextures && floatFragmentTextures; + + return { + + getMaxAnisotropy: getMaxAnisotropy, + getMaxPrecision: getMaxPrecision, + + precision: precision, + logarithmicDepthBuffer: logarithmicDepthBuffer, + + maxTextures: maxTextures, + maxVertexTextures: maxVertexTextures, + maxTextureSize: maxTextureSize, + maxCubemapSize: maxCubemapSize, + + maxAttributes: maxAttributes, + maxVertexUniforms: maxVertexUniforms, + maxVaryings: maxVaryings, + maxFragmentUniforms: maxFragmentUniforms, + + vertexTextures: vertexTextures, + floatFragmentTextures: floatFragmentTextures, + floatVertexTextures: floatVertexTextures + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author greggman / http://games.greggman.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author tschw + */ + + function PerspectiveCamera( fov, aspect, near, far ) { + + Camera.call( this ); + + this.type = 'PerspectiveCamera'; + + this.fov = fov !== undefined ? fov : 50; + this.zoom = 1; + + this.near = near !== undefined ? near : 0.1; + this.far = far !== undefined ? far : 2000; + this.focus = 10; + + this.aspect = aspect !== undefined ? aspect : 1; + this.view = null; + + this.filmGauge = 35; // width of the film (default in millimeters) + this.filmOffset = 0; // horizontal film offset (same unit as gauge) + + this.updateProjectionMatrix(); + + } + + PerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: PerspectiveCamera, + + isPerspectiveCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.fov = source.fov; + this.zoom = source.zoom; + + this.near = source.near; + this.far = source.far; + this.focus = source.focus; + + this.aspect = source.aspect; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + this.filmGauge = source.filmGauge; + this.filmOffset = source.filmOffset; + + return this; + + }, + + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength: function ( focalLength ) { + + // see http://www.bobatkins.com/photography/technical/field_of_view.html + var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; + + this.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope ); + this.updateProjectionMatrix(); + + }, + + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength: function () { + + var vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov ); + + return 0.5 * this.getFilmHeight() / vExtentSlope; + + }, + + getEffectiveFOV: function () { + + return _Math.RAD2DEG * 2 * Math.atan( + Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom ); + + }, + + getFilmWidth: function () { + + // film not completely covered in portrait format (aspect < 1) + return this.filmGauge * Math.min( this.aspect, 1 ); + + }, + + getFilmHeight: function () { + + // film not completely covered in landscape format (aspect > 1) + return this.filmGauge / Math.max( this.aspect, 1 ); + + }, + + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * var w = 1920; + * var h = 1080; + * var fullWidth = w * 3; + * var fullHeight = h * 2; + * + * --A-- + * camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + this.aspect = fullWidth / fullHeight; + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var near = this.near, + top = near * Math.tan( + _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom, + height = 2 * top, + width = this.aspect * height, + left = - 0.5 * width, + view = this.view; + + if ( this.view !== null && this.view.enabled ) { + + var fullWidth = view.fullWidth, + fullHeight = view.fullHeight; + + left += view.offsetX * width / fullWidth; + top -= view.offsetY * height / fullHeight; + width *= view.width / fullWidth; + height *= view.height / fullHeight; + + } + + var skew = this.filmOffset; + if ( skew !== 0 ) left += near * skew / this.getFilmWidth(); + + this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.fov = this.fov; + data.object.zoom = this.zoom; + + data.object.near = this.near; + data.object.far = this.far; + data.object.focus = this.focus; + + data.object.aspect = this.aspect; + + if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); + + data.object.filmGauge = this.filmGauge; + data.object.filmOffset = this.filmOffset; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ArrayCamera( array ) { + + PerspectiveCamera.call( this ); + + this.cameras = array || []; + + } + + ArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), { + + constructor: ArrayCamera, + + isArrayCamera: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebVRManager( renderer ) { + + var scope = this; + + var device = null; + var frameData = null; + + var poseTarget = null; + + if ( typeof window !== 'undefined' && 'VRFrameData' in window ) { + + frameData = new window.VRFrameData(); + + } + + var matrixWorldInverse = new Matrix4(); + + var cameraL = new PerspectiveCamera(); + cameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 ); + cameraL.layers.enable( 1 ); + + var cameraR = new PerspectiveCamera(); + cameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 ); + cameraR.layers.enable( 2 ); + + var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); + cameraVR.layers.enable( 1 ); + cameraVR.layers.enable( 2 ); + + // + + var currentSize, currentPixelRatio; + + function onVRDisplayPresentChange() { + + if ( device !== null && device.isPresenting ) { + + var eyeParameters = device.getEyeParameters( 'left' ); + var renderWidth = eyeParameters.renderWidth; + var renderHeight = eyeParameters.renderHeight; + + currentPixelRatio = renderer.getPixelRatio(); + currentSize = renderer.getSize(); + + renderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 ); + + } else if ( scope.enabled ) { + + renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); + + } + + } + + if ( typeof window !== 'undefined' ) { + + window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); + + } + + // + + this.enabled = false; + + this.getDevice = function () { + + return device; + + }; + + this.setDevice = function ( value ) { + + if ( value !== undefined ) device = value; + + }; + + this.setPoseTarget = function ( object ) { + + if ( object !== undefined ) poseTarget = object; + + }; + + this.getCamera = function ( camera ) { + + if ( device === null ) return camera; + + device.depthNear = camera.near; + device.depthFar = camera.far; + + device.getFrameData( frameData ); + + // + + var pose = frameData.pose; + var poseObject = poseTarget !== null ? poseTarget : camera; + + if ( pose.position !== null ) { + + poseObject.position.fromArray( pose.position ); + + } else { + + poseObject.position.set( 0, 0, 0 ); + + } + + if ( pose.orientation !== null ) { + + poseObject.quaternion.fromArray( pose.orientation ); + + } + + poseObject.updateMatrixWorld(); + + if ( device.isPresenting === false ) return camera; + + // + + cameraL.near = camera.near; + cameraR.near = camera.near; + + cameraL.far = camera.far; + cameraR.far = camera.far; + + cameraVR.matrixWorld.copy( camera.matrixWorld ); + cameraVR.matrixWorldInverse.copy( camera.matrixWorldInverse ); + + cameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix ); + cameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix ); + + var parent = poseObject.parent; + + if ( parent !== null ) { + + matrixWorldInverse.getInverse( parent.matrixWorld ); + + cameraL.matrixWorldInverse.multiply( matrixWorldInverse ); + cameraR.matrixWorldInverse.multiply( matrixWorldInverse ); + + } + + // envMap and Mirror needs camera.matrixWorld + + cameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse ); + cameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse ); + + cameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix ); + cameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix ); + + // HACK @mrdoob + // https://github.com/w3c/webvr/issues/203 + + cameraVR.projectionMatrix.copy( cameraL.projectionMatrix ); + + // + + var layers = device.getLayers(); + + if ( layers.length ) { + + var layer = layers[ 0 ]; + + if ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) { + + cameraL.bounds.fromArray( layer.leftBounds ); + + } + + if ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) { + + cameraR.bounds.fromArray( layer.rightBounds ); + + } + + } + + return cameraVR; + + }; + + this.submitFrame = function () { + + if ( device && device.isPresenting ) device.submitFrame(); + + }; + + this.dispose = function () { + + if ( typeof window !== 'undefined' ) { + + window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange ); + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLExtensions( gl ) { + + var extensions = {}; + + return { + + get: function ( name ) { + + if ( extensions[ name ] !== undefined ) { + + return extensions[ name ]; + + } + + var extension; + + switch ( name ) { + + case 'WEBGL_depth_texture': + extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); + break; + + case 'EXT_texture_filter_anisotropic': + extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); + break; + + case 'WEBGL_compressed_texture_s3tc': + extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); + break; + + case 'WEBGL_compressed_texture_pvrtc': + extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); + break; + + case 'WEBGL_compressed_texture_etc1': + extension = gl.getExtension( 'WEBGL_compressed_texture_etc1' ); + break; + + default: + extension = gl.getExtension( name ); + + } + + if ( extension === null ) { + + console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); + + } + + extensions[ name ] = extension; + + return extension; + + } + + }; + + } + + /** + * @author tschw + */ + + function WebGLClipping() { + + var scope = this, + + globalState = null, + numGlobalPlanes = 0, + localClippingEnabled = false, + renderingShadows = false, + + plane = new Plane(), + viewNormalMatrix = new Matrix3(), + + uniform = { value: null, needsUpdate: false }; + + this.uniform = uniform; + this.numPlanes = 0; + this.numIntersection = 0; + + this.init = function ( planes, enableLocalClipping, camera ) { + + var enabled = + planes.length !== 0 || + enableLocalClipping || + // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + numGlobalPlanes !== 0 || + localClippingEnabled; + + localClippingEnabled = enableLocalClipping; + + globalState = projectPlanes( planes, camera, 0 ); + numGlobalPlanes = planes.length; + + return enabled; + + }; + + this.beginShadows = function () { + + renderingShadows = true; + projectPlanes( null ); + + }; + + this.endShadows = function () { + + renderingShadows = false; + resetGlobalState(); + + }; + + this.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) { + + if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { + + // there's no local clipping + + if ( renderingShadows ) { + + // there's no global clipping + + projectPlanes( null ); + + } else { + + resetGlobalState(); + + } + + } else { + + var nGlobal = renderingShadows ? 0 : numGlobalPlanes, + lGlobal = nGlobal * 4, + + dstArray = cache.clippingState || null; + + uniform.value = dstArray; // ensure unique state + + dstArray = projectPlanes( planes, camera, lGlobal, fromCache ); + + for ( var i = 0; i !== lGlobal; ++ i ) { + + dstArray[ i ] = globalState[ i ]; + + } + + cache.clippingState = dstArray; + this.numIntersection = clipIntersection ? this.numPlanes : 0; + this.numPlanes += nGlobal; + + } + + + }; + + function resetGlobalState() { + + if ( uniform.value !== globalState ) { + + uniform.value = globalState; + uniform.needsUpdate = numGlobalPlanes > 0; + + } + + scope.numPlanes = numGlobalPlanes; + scope.numIntersection = 0; + + } + + function projectPlanes( planes, camera, dstOffset, skipTransform ) { + + var nPlanes = planes !== null ? planes.length : 0, + dstArray = null; + + if ( nPlanes !== 0 ) { + + dstArray = uniform.value; + + if ( skipTransform !== true || dstArray === null ) { + + var flatSize = dstOffset + nPlanes * 4, + viewMatrix = camera.matrixWorldInverse; + + viewNormalMatrix.getNormalMatrix( viewMatrix ); + + if ( dstArray === null || dstArray.length < flatSize ) { + + dstArray = new Float32Array( flatSize ); + + } + + for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { + + plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); + + plane.normal.toArray( dstArray, i4 ); + dstArray[ i4 + 3 ] = plane.constant; + + } + + } + + uniform.value = dstArray; + uniform.needsUpdate = true; + + } + + scope.numPlanes = nPlanes; + + return dstArray; + + } + + } + + /** + * @author thespite / http://www.twitter.com/thespite + */ + + function WebGLUtils( gl, extensions ) { + + function convert( p ) { + + var extension; + + if ( p === RepeatWrapping ) return gl.REPEAT; + if ( p === ClampToEdgeWrapping ) return gl.CLAMP_TO_EDGE; + if ( p === MirroredRepeatWrapping ) return gl.MIRRORED_REPEAT; + + if ( p === NearestFilter ) return gl.NEAREST; + if ( p === NearestMipMapNearestFilter ) return gl.NEAREST_MIPMAP_NEAREST; + if ( p === NearestMipMapLinearFilter ) return gl.NEAREST_MIPMAP_LINEAR; + + if ( p === LinearFilter ) return gl.LINEAR; + if ( p === LinearMipMapNearestFilter ) return gl.LINEAR_MIPMAP_NEAREST; + if ( p === LinearMipMapLinearFilter ) return gl.LINEAR_MIPMAP_LINEAR; + + if ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE; + if ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4; + if ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1; + if ( p === UnsignedShort565Type ) return gl.UNSIGNED_SHORT_5_6_5; + + if ( p === ByteType ) return gl.BYTE; + if ( p === ShortType ) return gl.SHORT; + if ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT; + if ( p === IntType ) return gl.INT; + if ( p === UnsignedIntType ) return gl.UNSIGNED_INT; + if ( p === FloatType ) return gl.FLOAT; + + if ( p === HalfFloatType ) { + + extension = extensions.get( 'OES_texture_half_float' ); + + if ( extension !== null ) return extension.HALF_FLOAT_OES; + + } + + if ( p === AlphaFormat ) return gl.ALPHA; + if ( p === RGBFormat ) return gl.RGB; + if ( p === RGBAFormat ) return gl.RGBA; + if ( p === LuminanceFormat ) return gl.LUMINANCE; + if ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA; + if ( p === DepthFormat ) return gl.DEPTH_COMPONENT; + if ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL; + + if ( p === AddEquation ) return gl.FUNC_ADD; + if ( p === SubtractEquation ) return gl.FUNC_SUBTRACT; + if ( p === ReverseSubtractEquation ) return gl.FUNC_REVERSE_SUBTRACT; + + if ( p === ZeroFactor ) return gl.ZERO; + if ( p === OneFactor ) return gl.ONE; + if ( p === SrcColorFactor ) return gl.SRC_COLOR; + if ( p === OneMinusSrcColorFactor ) return gl.ONE_MINUS_SRC_COLOR; + if ( p === SrcAlphaFactor ) return gl.SRC_ALPHA; + if ( p === OneMinusSrcAlphaFactor ) return gl.ONE_MINUS_SRC_ALPHA; + if ( p === DstAlphaFactor ) return gl.DST_ALPHA; + if ( p === OneMinusDstAlphaFactor ) return gl.ONE_MINUS_DST_ALPHA; + + if ( p === DstColorFactor ) return gl.DST_COLOR; + if ( p === OneMinusDstColorFactor ) return gl.ONE_MINUS_DST_COLOR; + if ( p === SrcAlphaSaturateFactor ) return gl.SRC_ALPHA_SATURATE; + + if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || + p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + if ( extension !== null ) { + + if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; + if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; + if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; + + } + + } + + if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || + p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + if ( extension !== null ) { + + if ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; + if ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; + if ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; + if ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; + + } + + } + + if ( p === RGB_ETC1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); + + if ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL; + + } + + if ( p === MinEquation || p === MaxEquation ) { + + extension = extensions.get( 'EXT_blend_minmax' ); + + if ( extension !== null ) { + + if ( p === MinEquation ) return extension.MIN_EXT; + if ( p === MaxEquation ) return extension.MAX_EXT; + + } + + } + + if ( p === UnsignedInt248Type ) { + + extension = extensions.get( 'WEBGL_depth_texture' ); + + if ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL; + + } + + return 0; + + } + + return { convert: convert }; + + } + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + * @author tschw + */ + + function WebGLRenderer( parameters ) { + + console.log( 'THREE.WebGLRenderer', REVISION ); + + parameters = parameters || {}; + + var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), + _context = parameters.context !== undefined ? parameters.context : null, + + _alpha = parameters.alpha !== undefined ? parameters.alpha : false, + _depth = parameters.depth !== undefined ? parameters.depth : true, + _stencil = parameters.stencil !== undefined ? parameters.stencil : true, + _antialias = parameters.antialias !== undefined ? parameters.antialias : false, + _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, + _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default'; + + var lightsArray = []; + var shadowsArray = []; + + var currentRenderList = null; + + var spritesArray = []; + var flaresArray = []; + + // public properties + + this.domElement = _canvas; + this.context = null; + + // clearing + + this.autoClear = true; + this.autoClearColor = true; + this.autoClearDepth = true; + this.autoClearStencil = true; + + // scene graph + + this.sortObjects = true; + + // user-defined clipping + + this.clippingPlanes = []; + this.localClippingEnabled = false; + + // physically based shading + + this.gammaFactor = 2.0; // for backwards compatibility + this.gammaInput = false; + this.gammaOutput = false; + + // physical lights + + this.physicallyCorrectLights = false; + + // tone mapping + + this.toneMapping = LinearToneMapping; + this.toneMappingExposure = 1.0; + this.toneMappingWhitePoint = 1.0; + + // morphs + + this.maxMorphTargets = 8; + this.maxMorphNormals = 4; + + // internal properties + + var _this = this, + + _isContextLost = false, + + // internal state cache + + _currentRenderTarget = null, + _currentFramebuffer = null, + _currentMaterialId = - 1, + _currentGeometryProgram = '', + + _currentCamera = null, + _currentArrayCamera = null, + + _currentViewport = new Vector4(), + _currentScissor = new Vector4(), + _currentScissorTest = null, + + // + + _usedTextureUnits = 0, + + // + + _width = _canvas.width, + _height = _canvas.height, + + _pixelRatio = 1, + + _viewport = new Vector4( 0, 0, _width, _height ), + _scissor = new Vector4( 0, 0, _width, _height ), + _scissorTest = false, + + // frustum + + _frustum = new Frustum(), + + // clipping + + _clipping = new WebGLClipping(), + _clippingEnabled = false, + _localClippingEnabled = false, + + // camera matrices cache + + _projScreenMatrix = new Matrix4(), + + _vector3 = new Vector3(), + + // info + + _infoMemory = { + geometries: 0, + textures: 0 + }, + + _infoRender = { + + frame: 0, + calls: 0, + vertices: 0, + faces: 0, + points: 0 + + }; + + this.info = { + + render: _infoRender, + memory: _infoMemory, + programs: null + + }; + + function getTargetPixelRatio() { + + return _currentRenderTarget === null ? _pixelRatio : 1; + + } + + // initialize + + var _gl; + + try { + + var contextAttributes = { + alpha: _alpha, + depth: _depth, + stencil: _stencil, + antialias: _antialias, + premultipliedAlpha: _premultipliedAlpha, + preserveDrawingBuffer: _preserveDrawingBuffer, + powerPreference: _powerPreference + }; + + // event listeners must be registered before WebGL context is created, see #12753 + + _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); + + _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); + + if ( _gl === null ) { + + if ( _canvas.getContext( 'webgl' ) !== null ) { + + throw new Error( 'Error creating WebGL context with your selected attributes.' ); + + } else { + + throw new Error( 'Error creating WebGL context.' ); + + } + + } + + // Some experimental-webgl implementations do not have getShaderPrecisionFormat + + if ( _gl.getShaderPrecisionFormat === undefined ) { + + _gl.getShaderPrecisionFormat = function () { + + return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 }; + + }; + + } + + } catch ( error ) { + + console.error( 'THREE.WebGLRenderer: ' + error.message ); + + } + + var extensions, capabilities, state; + var properties, textures, attributes, geometries, objects, lights; + var programCache, renderLists; + + var background, morphtargets, bufferRenderer, indexedBufferRenderer; + var flareRenderer, spriteRenderer; + + var utils; + + function initGLContext() { + + extensions = new WebGLExtensions( _gl ); + extensions.get( 'WEBGL_depth_texture' ); + extensions.get( 'OES_texture_float' ); + extensions.get( 'OES_texture_float_linear' ); + extensions.get( 'OES_texture_half_float' ); + extensions.get( 'OES_texture_half_float_linear' ); + extensions.get( 'OES_standard_derivatives' ); + extensions.get( 'OES_element_index_uint' ); + extensions.get( 'ANGLE_instanced_arrays' ); + + utils = new WebGLUtils( _gl, extensions ); + + capabilities = new WebGLCapabilities( _gl, extensions, parameters ); + + state = new WebGLState( _gl, extensions, utils ); + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + + properties = new WebGLProperties(); + textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, _infoMemory ); + attributes = new WebGLAttributes( _gl ); + geometries = new WebGLGeometries( _gl, attributes, _infoMemory ); + objects = new WebGLObjects( geometries, _infoRender ); + morphtargets = new WebGLMorphtargets( _gl ); + programCache = new WebGLPrograms( _this, extensions, capabilities ); + lights = new WebGLLights(); + renderLists = new WebGLRenderLists(); + + background = new WebGLBackground( _this, state, geometries, _premultipliedAlpha ); + + bufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender ); + indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender ); + + flareRenderer = new WebGLFlareRenderer( _this, _gl, state, textures, capabilities ); + spriteRenderer = new WebGLSpriteRenderer( _this, _gl, state, textures, capabilities ); + + _this.info.programs = programCache.programs; + + _this.context = _gl; + _this.capabilities = capabilities; + _this.extensions = extensions; + _this.properties = properties; + _this.renderLists = renderLists; + _this.state = state; + + } + + initGLContext(); + + // vr + + var vr = new WebVRManager( _this ); + + this.vr = vr; + + // shadow map + + var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize ); + + this.shadowMap = shadowMap; + + // API + + this.getContext = function () { + + return _gl; + + }; + + this.getContextAttributes = function () { + + return _gl.getContextAttributes(); + + }; + + this.forceContextLoss = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.loseContext(); + + }; + + this.forceContextRestore = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) extension.restoreContext(); + + }; + + this.getPixelRatio = function () { + + return _pixelRatio; + + }; + + this.setPixelRatio = function ( value ) { + + if ( value === undefined ) return; + + _pixelRatio = value; + + this.setSize( _width, _height, false ); + + }; + + this.getSize = function () { + + return { + width: _width, + height: _height + }; + + }; + + this.setSize = function ( width, height, updateStyle ) { + + var device = vr.getDevice(); + + if ( device && device.isPresenting ) { + + console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); + return; + + } + + _width = width; + _height = height; + + _canvas.width = width * _pixelRatio; + _canvas.height = height * _pixelRatio; + + if ( updateStyle !== false ) { + + _canvas.style.width = width + 'px'; + _canvas.style.height = height + 'px'; + + } + + this.setViewport( 0, 0, width, height ); + + }; + + this.getDrawingBufferSize = function () { + + return { + width: _width * _pixelRatio, + height: _height * _pixelRatio + }; + + }; + + this.setDrawingBufferSize = function ( width, height, pixelRatio ) { + + _width = width; + _height = height; + + _pixelRatio = pixelRatio; + + _canvas.width = width * pixelRatio; + _canvas.height = height * pixelRatio; + + this.setViewport( 0, 0, width, height ); + + }; + + this.setViewport = function ( x, y, width, height ) { + + _viewport.set( x, _height - y - height, width, height ); + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); + + }; + + this.setScissor = function ( x, y, width, height ) { + + _scissor.set( x, _height - y - height, width, height ); + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); + + }; + + this.setScissorTest = function ( boolean ) { + + state.setScissorTest( _scissorTest = boolean ); + + }; + + // Clearing + + this.getClearColor = function () { + + return background.getClearColor(); + + }; + + this.setClearColor = function () { + + background.setClearColor.apply( background, arguments ); + + }; + + this.getClearAlpha = function () { + + return background.getClearAlpha(); + + }; + + this.setClearAlpha = function () { + + background.setClearAlpha.apply( background, arguments ); + + }; + + this.clear = function ( color, depth, stencil ) { + + var bits = 0; + + if ( color === undefined || color ) bits |= _gl.COLOR_BUFFER_BIT; + if ( depth === undefined || depth ) bits |= _gl.DEPTH_BUFFER_BIT; + if ( stencil === undefined || stencil ) bits |= _gl.STENCIL_BUFFER_BIT; + + _gl.clear( bits ); + + }; + + this.clearColor = function () { + + this.clear( true, false, false ); + + }; + + this.clearDepth = function () { + + this.clear( false, true, false ); + + }; + + this.clearStencil = function () { + + this.clear( false, false, true ); + + }; + + this.clearTarget = function ( renderTarget, color, depth, stencil ) { + + this.setRenderTarget( renderTarget ); + this.clear( color, depth, stencil ); + + }; + + // + + this.dispose = function () { + + _canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); + + renderLists.dispose(); + + vr.dispose(); + + }; + + // Events + + function onContextLost( event ) { + + event.preventDefault(); + + console.log( 'THREE.WebGLRenderer: Context Lost.' ); + + _isContextLost = true; + + } + + function onContextRestore( /* event */ ) { + + console.log( 'THREE.WebGLRenderer: Context Restored.' ); + + _isContextLost = false; + + initGLContext(); + + } + + function onMaterialDispose( event ) { + + var material = event.target; + + material.removeEventListener( 'dispose', onMaterialDispose ); + + deallocateMaterial( material ); + + } + + // Buffer deallocation + + function deallocateMaterial( material ) { + + releaseMaterialProgramReference( material ); + + properties.remove( material ); + + } + + + function releaseMaterialProgramReference( material ) { + + var programInfo = properties.get( material ).program; + + material.program = undefined; + + if ( programInfo !== undefined ) { + + programCache.releaseProgram( programInfo ); + + } + + } + + // Buffer rendering + + function renderObjectImmediate( object, program, material ) { + + object.render( function ( object ) { + + _this.renderBufferImmediate( object, program, material ); + + } ); + + } + + this.renderBufferImmediate = function ( object, program, material ) { + + state.initAttributes(); + + var buffers = properties.get( object ); + + if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer(); + if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer(); + if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer(); + if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer(); + + var programAttributes = program.getAttributes(); + + if ( object.hasPositions ) { + + _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position ); + _gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW ); + + state.enableAttribute( programAttributes.position ); + _gl.vertexAttribPointer( programAttributes.position, 3, _gl.FLOAT, false, 0, 0 ); + + } + + if ( object.hasNormals ) { + + _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal ); + + if ( ! material.isMeshPhongMaterial && + ! material.isMeshStandardMaterial && + ! material.isMeshNormalMaterial && + material.flatShading === true ) { + + for ( var i = 0, l = object.count * 3; i < l; i += 9 ) { + + var array = object.normalArray; + + var nx = ( array[ i + 0 ] + array[ i + 3 ] + array[ i + 6 ] ) / 3; + var ny = ( array[ i + 1 ] + array[ i + 4 ] + array[ i + 7 ] ) / 3; + var nz = ( array[ i + 2 ] + array[ i + 5 ] + array[ i + 8 ] ) / 3; + + array[ i + 0 ] = nx; + array[ i + 1 ] = ny; + array[ i + 2 ] = nz; + + array[ i + 3 ] = nx; + array[ i + 4 ] = ny; + array[ i + 5 ] = nz; + + array[ i + 6 ] = nx; + array[ i + 7 ] = ny; + array[ i + 8 ] = nz; + + } + + } + + _gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW ); + + state.enableAttribute( programAttributes.normal ); + + _gl.vertexAttribPointer( programAttributes.normal, 3, _gl.FLOAT, false, 0, 0 ); + + } + + if ( object.hasUvs && material.map ) { + + _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv ); + _gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW ); + + state.enableAttribute( programAttributes.uv ); + + _gl.vertexAttribPointer( programAttributes.uv, 2, _gl.FLOAT, false, 0, 0 ); + + } + + if ( object.hasColors && material.vertexColors !== NoColors ) { + + _gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color ); + _gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW ); + + state.enableAttribute( programAttributes.color ); + + _gl.vertexAttribPointer( programAttributes.color, 3, _gl.FLOAT, false, 0, 0 ); + + } + + state.disableUnusedAttributes(); + + _gl.drawArrays( _gl.TRIANGLES, 0, object.count ); + + object.count = 0; + + }; + + this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { + + var frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 ); + + state.setMaterial( material, frontFaceCW ); + + var program = setProgram( camera, fog, material, object ); + var geometryProgram = geometry.id + '_' + program.id + '_' + ( material.wireframe === true ); + + var updateBuffers = false; + + if ( geometryProgram !== _currentGeometryProgram ) { + + _currentGeometryProgram = geometryProgram; + updateBuffers = true; + + } + + if ( object.morphTargetInfluences ) { + + morphtargets.update( object, geometry, material, program ); + + updateBuffers = true; + + } + + // + + var index = geometry.index; + var position = geometry.attributes.position; + var rangeFactor = 1; + + if ( material.wireframe === true ) { + + index = geometries.getWireframeAttribute( geometry ); + rangeFactor = 2; + + } + + var attribute; + var renderer = bufferRenderer; + + if ( index !== null ) { + + attribute = attributes.get( index ); + + renderer = indexedBufferRenderer; + renderer.setIndex( attribute ); + + } + + if ( updateBuffers ) { + + setupVertexAttributes( material, program, geometry ); + + if ( index !== null ) { + + _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, attribute.buffer ); + + } + + } + + // + + var dataCount = 0; + + if ( index !== null ) { + + dataCount = index.count; + + } else if ( position !== undefined ) { + + dataCount = position.count; + + } + + var rangeStart = geometry.drawRange.start * rangeFactor; + var rangeCount = geometry.drawRange.count * rangeFactor; + + var groupStart = group !== null ? group.start * rangeFactor : 0; + var groupCount = group !== null ? group.count * rangeFactor : Infinity; + + var drawStart = Math.max( rangeStart, groupStart ); + var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1; + + var drawCount = Math.max( 0, drawEnd - drawStart + 1 ); + + if ( drawCount === 0 ) return; + + // + + if ( object.isMesh ) { + + if ( material.wireframe === true ) { + + state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); + renderer.setMode( _gl.LINES ); + + } else { + + switch ( object.drawMode ) { + + case TrianglesDrawMode: + renderer.setMode( _gl.TRIANGLES ); + break; + + case TriangleStripDrawMode: + renderer.setMode( _gl.TRIANGLE_STRIP ); + break; + + case TriangleFanDrawMode: + renderer.setMode( _gl.TRIANGLE_FAN ); + break; + + } + + } + + + } else if ( object.isLine ) { + + var lineWidth = material.linewidth; + + if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material + + state.setLineWidth( lineWidth * getTargetPixelRatio() ); + + if ( object.isLineSegments ) { + + renderer.setMode( _gl.LINES ); + + } else if ( object.isLineLoop ) { + + renderer.setMode( _gl.LINE_LOOP ); + + } else { + + renderer.setMode( _gl.LINE_STRIP ); + + } + + } else if ( object.isPoints ) { + + renderer.setMode( _gl.POINTS ); + + } + + if ( geometry && geometry.isInstancedBufferGeometry ) { + + if ( geometry.maxInstancedCount > 0 ) { + + renderer.renderInstances( geometry, drawStart, drawCount ); + + } + + } else { + + renderer.render( drawStart, drawCount ); + + } + + }; + + function setupVertexAttributes( material, program, geometry, startIndex ) { + + if ( geometry && geometry.isInstancedBufferGeometry ) { + + if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) { + + console.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + if ( startIndex === undefined ) startIndex = 0; + + state.initAttributes(); + + var geometryAttributes = geometry.attributes; + + var programAttributes = program.getAttributes(); + + var materialDefaultAttributeValues = material.defaultAttributeValues; + + for ( var name in programAttributes ) { + + var programAttribute = programAttributes[ name ]; + + if ( programAttribute >= 0 ) { + + var geometryAttribute = geometryAttributes[ name ]; + + if ( geometryAttribute !== undefined ) { + + var normalized = geometryAttribute.normalized; + var size = geometryAttribute.itemSize; + + var attribute = attributes.get( geometryAttribute ); + + // TODO Attribute may not be available on context restore + + if ( attribute === undefined ) continue; + + var buffer = attribute.buffer; + var type = attribute.type; + var bytesPerElement = attribute.bytesPerElement; + + if ( geometryAttribute.isInterleavedBufferAttribute ) { + + var data = geometryAttribute.data; + var stride = data.stride; + var offset = geometryAttribute.offset; + + if ( data && data.isInstancedInterleavedBuffer ) { + + state.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = data.meshPerAttribute * data.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( _gl.ARRAY_BUFFER, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, ( startIndex * stride + offset ) * bytesPerElement ); + + } else { + + if ( geometryAttribute.isInstancedBufferAttribute ) { + + state.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( _gl.ARRAY_BUFFER, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, startIndex * size * bytesPerElement ); + + } + + } else if ( materialDefaultAttributeValues !== undefined ) { + + var value = materialDefaultAttributeValues[ name ]; + + if ( value !== undefined ) { + + switch ( value.length ) { + + case 2: + _gl.vertexAttrib2fv( programAttribute, value ); + break; + + case 3: + _gl.vertexAttrib3fv( programAttribute, value ); + break; + + case 4: + _gl.vertexAttrib4fv( programAttribute, value ); + break; + + default: + _gl.vertexAttrib1fv( programAttribute, value ); + + } + + } + + } + + } + + } + + state.disableUnusedAttributes(); + + } + + // Compile + + this.compile = function ( scene, camera ) { + + lightsArray.length = 0; + shadowsArray.length = 0; + + scene.traverse( function ( object ) { + + if ( object.isLight ) { + + lightsArray.push( object ); + + if ( object.castShadow ) { + + shadowsArray.push( object ); + + } + + } + + } ); + + lights.setup( lightsArray, shadowsArray, camera ); + + scene.traverse( function ( object ) { + + if ( object.material ) { + + if ( Array.isArray( object.material ) ) { + + for ( var i = 0; i < object.material.length; i ++ ) { + + initMaterial( object.material[ i ], scene.fog, object ); + + } + + } else { + + initMaterial( object.material, scene.fog, object ); + + } + + } + + } ); + + }; + + // Animation Loop + + var isAnimating = false; + var onAnimationFrame = null; + + function start() { + + if ( isAnimating ) return; + + var device = vr.getDevice(); + + if ( device && device.isPresenting ) { + + device.requestAnimationFrame( loop ); + + } else { + + window.requestAnimationFrame( loop ); + + } + + isAnimating = true; + + } + + function loop( time ) { + + if ( onAnimationFrame !== null ) onAnimationFrame( time ); + + var device = vr.getDevice(); + + if ( device && device.isPresenting ) { + + device.requestAnimationFrame( loop ); + + } else { + + window.requestAnimationFrame( loop ); + + } + + } + + this.animate = function ( callback ) { + + onAnimationFrame = callback; + start(); + + }; + + // Rendering + + this.render = function ( scene, camera, renderTarget, forceClear ) { + + if ( ! ( camera && camera.isCamera ) ) { + + console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); + return; + + } + + if ( _isContextLost ) return; + + // reset caching for this frame + + _currentGeometryProgram = ''; + _currentMaterialId = - 1; + _currentCamera = null; + + // update scene graph + + if ( scene.autoUpdate === true ) scene.updateMatrixWorld(); + + // update camera matrices and frustum + + if ( camera.parent === null ) camera.updateMatrixWorld(); + + if ( vr.enabled ) { + + camera = vr.getCamera( camera ); + + } + + _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); + _frustum.setFromMatrix( _projScreenMatrix ); + + lightsArray.length = 0; + shadowsArray.length = 0; + + spritesArray.length = 0; + flaresArray.length = 0; + + _localClippingEnabled = this.localClippingEnabled; + _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera ); + + currentRenderList = renderLists.get( scene, camera ); + currentRenderList.init(); + + projectObject( scene, camera, _this.sortObjects ); + + if ( _this.sortObjects === true ) { + + currentRenderList.sort(); + + } + + // + + textures.updateVideoTextures(); + + // + + if ( _clippingEnabled ) _clipping.beginShadows(); + + shadowMap.render( shadowsArray, scene, camera ); + + lights.setup( lightsArray, shadowsArray, camera ); + + if ( _clippingEnabled ) _clipping.endShadows(); + + // + + _infoRender.frame ++; + _infoRender.calls = 0; + _infoRender.vertices = 0; + _infoRender.faces = 0; + _infoRender.points = 0; + + if ( renderTarget === undefined ) { + + renderTarget = null; + + } + + this.setRenderTarget( renderTarget ); + + // + + background.render( currentRenderList, scene, camera, forceClear ); + + // render scene + + var opaqueObjects = currentRenderList.opaque; + var transparentObjects = currentRenderList.transparent; + + if ( scene.overrideMaterial ) { + + var overrideMaterial = scene.overrideMaterial; + + if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial ); + if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial ); + + } else { + + // opaque pass (front-to-back order) + + if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera ); + + // transparent pass (back-to-front order) + + if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera ); + + } + + // custom renderers + + spriteRenderer.render( spritesArray, scene, camera ); + flareRenderer.render( flaresArray, scene, camera, _currentViewport ); + + // Generate mipmap if we're using any kind of mipmap filtering + + if ( renderTarget ) { + + textures.updateRenderTargetMipmap( renderTarget ); + + } + + // Ensure depth buffer writing is enabled so it can be cleared on next render + + state.buffers.depth.setTest( true ); + state.buffers.depth.setMask( true ); + state.buffers.color.setMask( true ); + + state.setPolygonOffset( false ); + + if ( vr.enabled ) { + + vr.submitFrame(); + + } + + // _gl.finish(); + + }; + + /* + // TODO Duplicated code (Frustum) + + var _sphere = new Sphere(); + + function isObjectViewable( object ) { + + var geometry = object.geometry; + + if ( geometry.boundingSphere === null ) + geometry.computeBoundingSphere(); + + _sphere.copy( geometry.boundingSphere ). + applyMatrix4( object.matrixWorld ); + + return isSphereViewable( _sphere ); + + } + + function isSpriteViewable( sprite ) { + + _sphere.center.set( 0, 0, 0 ); + _sphere.radius = 0.7071067811865476; + _sphere.applyMatrix4( sprite.matrixWorld ); + + return isSphereViewable( _sphere ); + + } + + function isSphereViewable( sphere ) { + + if ( ! _frustum.intersectsSphere( sphere ) ) return false; + + var numPlanes = _clipping.numPlanes; + + if ( numPlanes === 0 ) return true; + + var planes = _this.clippingPlanes, + + center = sphere.center, + negRad = - sphere.radius, + i = 0; + + do { + + // out when deeper than radius in the negative halfspace + if ( planes[ i ].distanceToPoint( center ) < negRad ) return false; + + } while ( ++ i !== numPlanes ); + + return true; + + } + */ + + function projectObject( object, camera, sortObjects ) { + + if ( object.visible === false ) return; + + var visible = object.layers.test( camera.layers ); + + if ( visible ) { + + if ( object.isLight ) { + + lightsArray.push( object ); + + if ( object.castShadow ) { + + shadowsArray.push( object ); + + } + + } else if ( object.isSprite ) { + + if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { + + spritesArray.push( object ); + + } + + } else if ( object.isLensFlare ) { + + flaresArray.push( object ); + + } else if ( object.isImmediateRenderObject ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + currentRenderList.push( object, null, object.material, _vector3.z, null ); + + } else if ( object.isMesh || object.isLine || object.isPoints ) { + + if ( object.isSkinnedMesh ) { + + object.skeleton.update(); + + } + + if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + var geometry = objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + currentRenderList.push( object, geometry, groupMaterial, _vector3.z, group ); + + } + + } + + } else if ( material.visible ) { + + currentRenderList.push( object, geometry, material, _vector3.z, null ); + + } + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + projectObject( children[ i ], camera, sortObjects ); + + } + + } + + function renderObjects( renderList, scene, camera, overrideMaterial ) { + + for ( var i = 0, l = renderList.length; i < l; i ++ ) { + + var renderItem = renderList[ i ]; + + var object = renderItem.object; + var geometry = renderItem.geometry; + var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial; + var group = renderItem.group; + + if ( camera.isArrayCamera ) { + + _currentArrayCamera = camera; + + var cameras = camera.cameras; + + for ( var j = 0, jl = cameras.length; j < jl; j ++ ) { + + var camera2 = cameras[ j ]; + + if ( object.layers.test( camera2.layers ) ) { + + var bounds = camera2.bounds; + + var x = bounds.x * _width; + var y = bounds.y * _height; + var width = bounds.z * _width; + var height = bounds.w * _height; + + state.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) ); + + renderObject( object, scene, camera2, geometry, material, group ); + + } + + } + + } else { + + _currentArrayCamera = null; + + renderObject( object, scene, camera, geometry, material, group ); + + } + + } + + } + + function renderObject( object, scene, camera, geometry, material, group ) { + + object.onBeforeRender( _this, scene, camera, geometry, material, group ); + + object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); + object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + + if ( object.isImmediateRenderObject ) { + + var frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 ); + + state.setMaterial( material, frontFaceCW ); + + var program = setProgram( camera, scene.fog, material, object ); + + _currentGeometryProgram = ''; + + renderObjectImmediate( object, program, material ); + + } else { + + _this.renderBufferDirect( camera, scene.fog, geometry, material, object, group ); + + } + + object.onAfterRender( _this, scene, camera, geometry, material, group ); + + } + + function initMaterial( material, fog, object ) { + + var materialProperties = properties.get( material ); + + var parameters = programCache.getParameters( + material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); + + var code = programCache.getProgramCode( material, parameters ); + + var program = materialProperties.program; + var programChange = true; + + if ( program === undefined ) { + + // new material + material.addEventListener( 'dispose', onMaterialDispose ); + + } else if ( program.code !== code ) { + + // changed glsl or parameters + releaseMaterialProgramReference( material ); + + } else if ( parameters.shaderID !== undefined ) { + + // same glsl and uniform list + return; + + } else { + + // only rebuild uniform list + programChange = false; + + } + + if ( programChange ) { + + if ( parameters.shaderID ) { + + var shader = ShaderLib[ parameters.shaderID ]; + + materialProperties.shader = { + name: material.type, + uniforms: UniformsUtils.clone( shader.uniforms ), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader + }; + + } else { + + materialProperties.shader = { + name: material.type, + uniforms: material.uniforms, + vertexShader: material.vertexShader, + fragmentShader: material.fragmentShader + }; + + } + + material.onBeforeCompile( materialProperties.shader ); + + program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); + + materialProperties.program = program; + material.program = program; + + } + + var programAttributes = program.getAttributes(); + + if ( material.morphTargets ) { + + material.numSupportedMorphTargets = 0; + + for ( var i = 0; i < _this.maxMorphTargets; i ++ ) { + + if ( programAttributes[ 'morphTarget' + i ] >= 0 ) { + + material.numSupportedMorphTargets ++; + + } + + } + + } + + if ( material.morphNormals ) { + + material.numSupportedMorphNormals = 0; + + for ( var i = 0; i < _this.maxMorphNormals; i ++ ) { + + if ( programAttributes[ 'morphNormal' + i ] >= 0 ) { + + material.numSupportedMorphNormals ++; + + } + + } + + } + + var uniforms = materialProperties.shader.uniforms; + + if ( ! material.isShaderMaterial && + ! material.isRawShaderMaterial || + material.clipping === true ) { + + materialProperties.numClippingPlanes = _clipping.numPlanes; + materialProperties.numIntersection = _clipping.numIntersection; + uniforms.clippingPlanes = _clipping.uniform; + + } + + materialProperties.fog = fog; + + // store the light setup it was created for + + materialProperties.lightsHash = lights.state.hash; + + if ( material.lights ) { + + // wire up the material to this renderer's lighting state + + uniforms.ambientLightColor.value = lights.state.ambient; + uniforms.directionalLights.value = lights.state.directional; + uniforms.spotLights.value = lights.state.spot; + uniforms.rectAreaLights.value = lights.state.rectArea; + uniforms.pointLights.value = lights.state.point; + uniforms.hemisphereLights.value = lights.state.hemi; + + uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; + uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; + uniforms.spotShadowMap.value = lights.state.spotShadowMap; + uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix; + uniforms.pointShadowMap.value = lights.state.pointShadowMap; + uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; + // TODO (abelnation): add area lights shadow info to uniforms + + } + + var progUniforms = materialProperties.program.getUniforms(), + uniformsList = + WebGLUniforms.seqWithValue( progUniforms.seq, uniforms ); + + materialProperties.uniformsList = uniformsList; + + } + + function setProgram( camera, fog, material, object ) { + + _usedTextureUnits = 0; + + var materialProperties = properties.get( material ); + + if ( _clippingEnabled ) { + + if ( _localClippingEnabled || camera !== _currentCamera ) { + + var useCache = + camera === _currentCamera && + material.id === _currentMaterialId; + + // we might want to call this function with some ClippingGroup + // object instead of the material, once it becomes feasible + // (#8465, #8379) + _clipping.setState( + material.clippingPlanes, material.clipIntersection, material.clipShadows, + camera, materialProperties, useCache ); + + } + + } + + if ( material.needsUpdate === false ) { + + if ( materialProperties.program === undefined ) { + + material.needsUpdate = true; + + } else if ( material.fog && materialProperties.fog !== fog ) { + + material.needsUpdate = true; + + } else if ( material.lights && materialProperties.lightsHash !== lights.state.hash ) { + + material.needsUpdate = true; + + } else if ( materialProperties.numClippingPlanes !== undefined && + ( materialProperties.numClippingPlanes !== _clipping.numPlanes || + materialProperties.numIntersection !== _clipping.numIntersection ) ) { + + material.needsUpdate = true; + + } + + } + + if ( material.needsUpdate ) { + + initMaterial( material, fog, object ); + material.needsUpdate = false; + + } + + var refreshProgram = false; + var refreshMaterial = false; + var refreshLights = false; + + var program = materialProperties.program, + p_uniforms = program.getUniforms(), + m_uniforms = materialProperties.shader.uniforms; + + if ( state.useProgram( program.program ) ) { + + refreshProgram = true; + refreshMaterial = true; + refreshLights = true; + + } + + if ( material.id !== _currentMaterialId ) { + + _currentMaterialId = material.id; + + refreshMaterial = true; + + } + + if ( refreshProgram || camera !== _currentCamera ) { + + p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); + + if ( capabilities.logarithmicDepthBuffer ) { + + p_uniforms.setValue( _gl, 'logDepthBufFC', + 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); + + } + + // Avoid unneeded uniform updates per ArrayCamera's sub-camera + + if ( _currentCamera !== ( _currentArrayCamera || camera ) ) { + + _currentCamera = ( _currentArrayCamera || camera ); + + // lighting uniforms depend on the camera so enforce an update + // now, in case this material supports lights - or later, when + // the next material that does gets activated: + + refreshMaterial = true; // set to true on material change + refreshLights = true; // remains set until update done + + } + + // load material specific uniforms + // (shader material also gets them for the sake of genericity) + + if ( material.isShaderMaterial || + material.isMeshPhongMaterial || + material.isMeshStandardMaterial || + material.envMap ) { + + var uCamPos = p_uniforms.map.cameraPosition; + + if ( uCamPos !== undefined ) { + + uCamPos.setValue( _gl, + _vector3.setFromMatrixPosition( camera.matrixWorld ) ); + + } + + } + + if ( material.isMeshPhongMaterial || + material.isMeshLambertMaterial || + material.isMeshBasicMaterial || + material.isMeshStandardMaterial || + material.isShaderMaterial || + material.skinning ) { + + p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); + + } + + } + + // skinning uniforms must be set even if material didn't change + // auto-setting of texture unit for bone texture must go before other textures + // not sure why, but otherwise weird things happen + + if ( material.skinning ) { + + p_uniforms.setOptional( _gl, object, 'bindMatrix' ); + p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); + + var skeleton = object.skeleton; + + if ( skeleton ) { + + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + if ( skeleton.boneTexture === undefined ) { + + // layout (1 matrix = 4 pixels) + // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) + // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) + // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) + // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) + // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) + + + var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix + size = _Math.ceilPowerOfTwo( size ); + size = Math.max( size, 4 ); + + var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel + boneMatrices.set( skeleton.boneMatrices ); // copy current values + + var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); + + skeleton.boneMatrices = boneMatrices; + skeleton.boneTexture = boneTexture; + skeleton.boneTextureSize = size; + + } + + p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture ); + p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize ); + + } else { + + p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' ); + + } + + } + + } + + if ( refreshMaterial ) { + + p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); + p_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint ); + + if ( material.lights ) { + + // the current material requires lighting info + + // note: all lighting uniforms are always set correctly + // they simply reference the renderer's state for their + // values + // + // use the current material's .needsUpdate flags to set + // the GL state when required + + markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); + + } + + // refresh uniforms common to several materials + + if ( fog && material.fog ) { + + refreshUniformsFog( m_uniforms, fog ); + + } + + if ( material.isMeshBasicMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + } else if ( material.isMeshLambertMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsLambert( m_uniforms, material ); + + } else if ( material.isMeshPhongMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshToonMaterial ) { + + refreshUniformsToon( m_uniforms, material ); + + } else { + + refreshUniformsPhong( m_uniforms, material ); + + } + + } else if ( material.isMeshStandardMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshPhysicalMaterial ) { + + refreshUniformsPhysical( m_uniforms, material ); + + } else { + + refreshUniformsStandard( m_uniforms, material ); + + } + + } else if ( material.isMeshDepthMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDepth( m_uniforms, material ); + + } else if ( material.isMeshDistanceMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDistance( m_uniforms, material ); + + } else if ( material.isMeshNormalMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsNormal( m_uniforms, material ); + + } else if ( material.isLineBasicMaterial ) { + + refreshUniformsLine( m_uniforms, material ); + + if ( material.isLineDashedMaterial ) { + + refreshUniformsDash( m_uniforms, material ); + + } + + } else if ( material.isPointsMaterial ) { + + refreshUniformsPoints( m_uniforms, material ); + + } else if ( material.isShadowMaterial ) { + + m_uniforms.color.value = material.color; + m_uniforms.opacity.value = material.opacity; + + } + + // RectAreaLight Texture + // TODO (mrdoob): Find a nicer implementation + + if ( m_uniforms.ltcMat !== undefined ) m_uniforms.ltcMat.value = UniformsLib.LTC_MAT_TEXTURE; + if ( m_uniforms.ltcMag !== undefined ) m_uniforms.ltcMag.value = UniformsLib.LTC_MAG_TEXTURE; + + WebGLUniforms.upload( + _gl, materialProperties.uniformsList, m_uniforms, _this ); + + } + + + // common matrices + + p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); + p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); + p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); + + return program; + + } + + // Uniforms (refresh uniforms objects) + + function refreshUniformsCommon( uniforms, material ) { + + uniforms.opacity.value = material.opacity; + + if ( material.color ) { + + uniforms.diffuse.value = material.color; + + } + + if ( material.emissive ) { + + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + } + + if ( material.map ) { + + uniforms.map.value = material.map; + + } + + if ( material.alphaMap ) { + + uniforms.alphaMap.value = material.alphaMap; + + } + + if ( material.specularMap ) { + + uniforms.specularMap.value = material.specularMap; + + } + + if ( material.envMap ) { + + uniforms.envMap.value = material.envMap; + + // don't flip CubeTexture envMaps, flip everything else: + // WebGLRenderTargetCube will be flipped for backwards compatibility + // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture + // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future + uniforms.flipEnvMap.value = ( ! ( material.envMap && material.envMap.isCubeTexture ) ) ? 1 : - 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.refractionRatio.value = material.refractionRatio; + + } + + if ( material.lightMap ) { + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + } + + if ( material.aoMap ) { + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + } + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.roughnessMap ) { + + uvScaleMap = material.roughnessMap; + + } else if ( material.metalnessMap ) { + + uvScaleMap = material.metalnessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + if ( uvScaleMap.matrixAutoUpdate === true ) { + + var offset = uvScaleMap.offset; + var repeat = uvScaleMap.repeat; + var rotation = uvScaleMap.rotation; + var center = uvScaleMap.center; + + uvScaleMap.matrix.setUvTransform( offset.x, offset.y, repeat.x, repeat.y, rotation, center.x, center.y ); + + } + + uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + + } + + } + + function refreshUniformsLine( uniforms, material ) { + + uniforms.diffuse.value = material.color; + uniforms.opacity.value = material.opacity; + + } + + function refreshUniformsDash( uniforms, material ) { + + uniforms.dashSize.value = material.dashSize; + uniforms.totalSize.value = material.dashSize + material.gapSize; + uniforms.scale.value = material.scale; + + } + + function refreshUniformsPoints( uniforms, material ) { + + uniforms.diffuse.value = material.color; + uniforms.opacity.value = material.opacity; + uniforms.size.value = material.size * _pixelRatio; + uniforms.scale.value = _height * 0.5; + + uniforms.map.value = material.map; + + if ( material.map !== null ) { + + if ( material.map.matrixAutoUpdate === true ) { + + var offset = material.map.offset; + var repeat = material.map.repeat; + var rotation = material.map.rotation; + var center = material.map.center; + + material.map.matrix.setUvTransform( offset.x, offset.y, repeat.x, repeat.y, rotation, center.x, center.y ); + + } + + uniforms.uvTransform.value.copy( material.map.matrix ); + + } + + } + + function refreshUniformsFog( uniforms, fog ) { + + uniforms.fogColor.value = fog.color; + + if ( fog.isFog ) { + + uniforms.fogNear.value = fog.near; + uniforms.fogFar.value = fog.far; + + } else if ( fog.isFogExp2 ) { + + uniforms.fogDensity.value = fog.density; + + } + + } + + function refreshUniformsLambert( uniforms, material ) { + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + } + + function refreshUniformsPhong( uniforms, material ) { + + uniforms.specular.value = material.specular; + uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsToon( uniforms, material ) { + + refreshUniformsPhong( uniforms, material ); + + if ( material.gradientMap ) { + + uniforms.gradientMap.value = material.gradientMap; + + } + + } + + function refreshUniformsStandard( uniforms, material ) { + + uniforms.roughness.value = material.roughness; + uniforms.metalness.value = material.metalness; + + if ( material.roughnessMap ) { + + uniforms.roughnessMap.value = material.roughnessMap; + + } + + if ( material.metalnessMap ) { + + uniforms.metalnessMap.value = material.metalnessMap; + + } + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + if ( material.envMap ) { + + //uniforms.envMap.value = material.envMap; // part of uniforms common + uniforms.envMapIntensity.value = material.envMapIntensity; + + } + + } + + function refreshUniformsPhysical( uniforms, material ) { + + uniforms.clearCoat.value = material.clearCoat; + uniforms.clearCoatRoughness.value = material.clearCoatRoughness; + + refreshUniformsStandard( uniforms, material ); + + } + + function refreshUniformsDepth( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsDistance( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + uniforms.referencePosition.value.copy( material.referencePosition ); + uniforms.nearDistance.value = material.nearDistance; + uniforms.farDistance.value = material.farDistance; + + } + + function refreshUniformsNormal( uniforms, material ) { + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + // If uniforms are marked as clean, they don't need to be loaded to the GPU. + + function markUniformsLightsNeedsUpdate( uniforms, value ) { + + uniforms.ambientLightColor.needsUpdate = value; + + uniforms.directionalLights.needsUpdate = value; + uniforms.pointLights.needsUpdate = value; + uniforms.spotLights.needsUpdate = value; + uniforms.rectAreaLights.needsUpdate = value; + uniforms.hemisphereLights.needsUpdate = value; + + } + + // GL state setting + + this.setFaceCulling = function ( cullFace, frontFaceDirection ) { + + state.setCullFace( cullFace ); + state.setFlipSided( frontFaceDirection === FrontFaceDirectionCW ); + + }; + + // Textures + + function allocTextureUnit() { + + var textureUnit = _usedTextureUnits; + + if ( textureUnit >= capabilities.maxTextures ) { + + console.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); + + } + + _usedTextureUnits += 1; + + return textureUnit; + + } + + this.allocTextureUnit = allocTextureUnit; + + // this.setTexture2D = setTexture2D; + this.setTexture2D = ( function () { + + var warned = false; + + // backwards compatibility: peel texture.texture + return function setTexture2D( texture, slot ) { + + if ( texture && texture.isWebGLRenderTarget ) { + + if ( ! warned ) { + + console.warn( "THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead." ); + warned = true; + + } + + texture = texture.texture; + + } + + textures.setTexture2D( texture, slot ); + + }; + + }() ); + + this.setTexture = ( function () { + + var warned = false; + + return function setTexture( texture, slot ) { + + if ( ! warned ) { + + console.warn( "THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead." ); + warned = true; + + } + + textures.setTexture2D( texture, slot ); + + }; + + }() ); + + this.setTextureCube = ( function () { + + var warned = false; + + return function setTextureCube( texture, slot ) { + + // backwards compatibility: peel texture.texture + if ( texture && texture.isWebGLRenderTargetCube ) { + + if ( ! warned ) { + + console.warn( "THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead." ); + warned = true; + + } + + texture = texture.texture; + + } + + // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture + // TODO: unify these code paths + if ( ( texture && texture.isCubeTexture ) || + ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) { + + // CompressedTexture can have Array in image :/ + + // this function alone should take care of cube textures + textures.setTextureCube( texture, slot ); + + } else { + + // assumed: texture property of THREE.WebGLRenderTargetCube + + textures.setTextureCubeDynamic( texture, slot ); + + } + + }; + + }() ); + + this.getRenderTarget = function () { + + return _currentRenderTarget; + + }; + + this.setRenderTarget = function ( renderTarget ) { + + _currentRenderTarget = renderTarget; + + if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { + + textures.setupRenderTarget( renderTarget ); + + } + + var framebuffer = null; + var isCube = false; + + if ( renderTarget ) { + + var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLRenderTargetCube ) { + + framebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ]; + isCube = true; + + } else { + + framebuffer = __webglFramebuffer; + + } + + _currentViewport.copy( renderTarget.viewport ); + _currentScissor.copy( renderTarget.scissor ); + _currentScissorTest = renderTarget.scissorTest; + + } else { + + _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ); + _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ); + _currentScissorTest = _scissorTest; + + } + + if ( _currentFramebuffer !== framebuffer ) { + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + _currentFramebuffer = framebuffer; + + } + + state.viewport( _currentViewport ); + state.scissor( _currentScissor ); + state.setScissorTest( _currentScissorTest ); + + if ( isCube ) { + + var textureProperties = properties.get( renderTarget.texture ); + _gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel ); + + } + + }; + + this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) { + + if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + return; + + } + + var framebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( framebuffer ) { + + var restore = false; + + if ( framebuffer !== _currentFramebuffer ) { + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer ); + + restore = true; + + } + + try { + + var texture = renderTarget.texture; + var textureFormat = texture.format; + var textureType = texture.type; + + if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); + return; + + } + + if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // IE11, Edge and Chrome Mac < 52 (#9513) + ! ( textureType === FloatType && ( extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox + ! ( textureType === HalfFloatType && extensions.get( 'EXT_color_buffer_half_float' ) ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); + return; + + } + + if ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) { + + // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) + + if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { + + _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); + + } + + } else { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); + + } + + } finally { + + if ( restore ) { + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer ); + + } + + } + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function FogExp2( color, density ) { + + this.name = ''; + + this.color = new Color( color ); + this.density = ( density !== undefined ) ? density : 0.00025; + + } + + FogExp2.prototype.isFogExp2 = true; + + FogExp2.prototype.clone = function () { + + return new FogExp2( this.color.getHex(), this.density ); + + }; + + FogExp2.prototype.toJSON = function ( /* meta */ ) { + + return { + type: 'FogExp2', + color: this.color.getHex(), + density: this.density + }; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Fog( color, near, far ) { + + this.name = ''; + + this.color = new Color( color ); + + this.near = ( near !== undefined ) ? near : 1; + this.far = ( far !== undefined ) ? far : 1000; + + } + + Fog.prototype.isFog = true; + + Fog.prototype.clone = function () { + + return new Fog( this.color.getHex(), this.near, this.far ); + + }; + + Fog.prototype.toJSON = function ( /* meta */ ) { + + return { + type: 'Fog', + color: this.color.getHex(), + near: this.near, + far: this.far + }; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Scene() { + + Object3D.call( this ); + + this.type = 'Scene'; + + this.background = null; + this.fog = null; + this.overrideMaterial = null; + + this.autoUpdate = true; // checked by the renderer + + } + + Scene.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Scene, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + if ( source.background !== null ) this.background = source.background.clone(); + if ( source.fog !== null ) this.fog = source.fog.clone(); + if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone(); + + this.autoUpdate = source.autoUpdate; + this.matrixAutoUpdate = source.matrixAutoUpdate; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + if ( this.background !== null ) data.object.background = this.background.toJSON( meta ); + if ( this.fog !== null ) data.object.fog = this.fog.toJSON(); + + return data; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + */ + + function LensFlare( texture, size, distance, blending, color ) { + + Object3D.call( this ); + + this.lensFlares = []; + + this.positionScreen = new Vector3(); + this.customUpdateCallback = undefined; + + if ( texture !== undefined ) { + + this.add( texture, size, distance, blending, color ); + + } + + } + + LensFlare.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: LensFlare, + + isLensFlare: true, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.positionScreen.copy( source.positionScreen ); + this.customUpdateCallback = source.customUpdateCallback; + + for ( var i = 0, l = source.lensFlares.length; i < l; i ++ ) { + + this.lensFlares.push( source.lensFlares[ i ] ); + + } + + return this; + + }, + + add: function ( texture, size, distance, blending, color, opacity ) { + + if ( size === undefined ) size = - 1; + if ( distance === undefined ) distance = 0; + if ( opacity === undefined ) opacity = 1; + if ( color === undefined ) color = new Color( 0xffffff ); + if ( blending === undefined ) blending = NormalBlending; + + distance = Math.min( distance, Math.max( 0, distance ) ); + + this.lensFlares.push( { + texture: texture, // THREE.Texture + size: size, // size in pixels (-1 = use texture.width) + distance: distance, // distance (0-1) from light source (0=at light source) + x: 0, y: 0, z: 0, // screen position (-1 => 1) z = 0 is in front z = 1 is back + scale: 1, // scale + rotation: 0, // rotation + opacity: opacity, // opacity + color: color, // color + blending: blending // blending + } ); + + }, + + /* + * Update lens flares update positions on all flares based on the screen position + * Set myLensFlare.customUpdateCallback to alter the flares in your project specific way. + */ + + updateLensFlares: function () { + + var f, fl = this.lensFlares.length; + var flare; + var vecX = - this.positionScreen.x * 2; + var vecY = - this.positionScreen.y * 2; + + for ( f = 0; f < fl; f ++ ) { + + flare = this.lensFlares[ f ]; + + flare.x = this.positionScreen.x + vecX * flare.distance; + flare.y = this.positionScreen.y + vecY * flare.distance; + + flare.wantedRotation = flare.x * Math.PI * 0.25; + flare.rotation += ( flare.wantedRotation - flare.rotation ) * 0.25; + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * uvOffset: new THREE.Vector2(), + * uvScale: new THREE.Vector2() + * } + */ + + function SpriteMaterial( parameters ) { + + Material.call( this ); + + this.type = 'SpriteMaterial'; + + this.color = new Color( 0xffffff ); + this.map = null; + + this.rotation = 0; + + this.fog = false; + this.lights = false; + + this.setValues( parameters ); + + } + + SpriteMaterial.prototype = Object.create( Material.prototype ); + SpriteMaterial.prototype.constructor = SpriteMaterial; + SpriteMaterial.prototype.isSpriteMaterial = true; + + SpriteMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.map = source.map; + + this.rotation = source.rotation; + + return this; + + }; + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Sprite( material ) { + + Object3D.call( this ); + + this.type = 'Sprite'; + + this.material = ( material !== undefined ) ? material : new SpriteMaterial(); + + } + + Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Sprite, + + isSprite: true, + + raycast: ( function () { + + var intersectPoint = new Vector3(); + var worldPosition = new Vector3(); + var worldScale = new Vector3(); + + return function raycast( raycaster, intersects ) { + + worldPosition.setFromMatrixPosition( this.matrixWorld ); + raycaster.ray.closestPointToPoint( worldPosition, intersectPoint ); + + worldScale.setFromMatrixScale( this.matrixWorld ); + var guessSizeSq = worldScale.x * worldScale.y / 4; + + if ( worldPosition.distanceToSquared( intersectPoint ) > guessSizeSq ) return; + + var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + point: intersectPoint.clone(), + face: null, + object: this + + } ); + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.material ).copy( this ); + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function LOD() { + + Object3D.call( this ); + + this.type = 'LOD'; + + Object.defineProperties( this, { + levels: { + enumerable: true, + value: [] + } + } ); + + } + + LOD.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: LOD, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source, false ); + + var levels = source.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + this.addLevel( level.object.clone(), level.distance ); + + } + + return this; + + }, + + addLevel: function ( object, distance ) { + + if ( distance === undefined ) distance = 0; + + distance = Math.abs( distance ); + + var levels = this.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + if ( distance < levels[ l ].distance ) { + + break; + + } + + } + + levels.splice( l, 0, { distance: distance, object: object } ); + + this.add( object ); + + }, + + getObjectForDistance: function ( distance ) { + + var levels = this.levels; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance < levels[ i ].distance ) { + + break; + + } + + } + + return levels[ i - 1 ].object; + + }, + + raycast: ( function () { + + var matrixPosition = new Vector3(); + + return function raycast( raycaster, intersects ) { + + matrixPosition.setFromMatrixPosition( this.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( matrixPosition ); + + this.getObjectForDistance( distance ).raycast( raycaster, intersects ); + + }; + + }() ), + + update: function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + + return function update( camera ) { + + var levels = this.levels; + + if ( levels.length > 1 ) { + + v1.setFromMatrixPosition( camera.matrixWorld ); + v2.setFromMatrixPosition( this.matrixWorld ); + + var distance = v1.distanceTo( v2 ); + + levels[ 0 ].object.visible = true; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance >= levels[ i ].distance ) { + + levels[ i - 1 ].object.visible = false; + levels[ i ].object.visible = true; + + } else { + + break; + + } + + } + + for ( ; i < l; i ++ ) { + + levels[ i ].object.visible = false; + + } + + } + + }; + + }(), + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.levels = []; + + var levels = this.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + data.object.levels.push( { + object: level.object.uuid, + distance: level.distance + } ); + + } + + return data; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author michael guerrero / http://realitymeltdown.com + * @author ikerr / http://verold.com + */ + + function Skeleton( bones, boneInverses ) { + + // copy the bone array + + bones = bones || []; + + this.bones = bones.slice( 0 ); + this.boneMatrices = new Float32Array( this.bones.length * 16 ); + + // use the supplied bone inverses or calculate the inverses + + if ( boneInverses === undefined ) { + + this.calculateInverses(); + + } else { + + if ( this.bones.length === boneInverses.length ) { + + this.boneInverses = boneInverses.slice( 0 ); + + } else { + + console.warn( 'THREE.Skeleton boneInverses is the wrong length.' ); + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + this.boneInverses.push( new Matrix4() ); + + } + + } + + } + + } + + Object.assign( Skeleton.prototype, { + + calculateInverses: function () { + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + var inverse = new Matrix4(); + + if ( this.bones[ i ] ) { + + inverse.getInverse( this.bones[ i ].matrixWorld ); + + } + + this.boneInverses.push( inverse ); + + } + + }, + + pose: function () { + + var bone, i, il; + + // recover the bind-time world matrices + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + bone.matrixWorld.getInverse( this.boneInverses[ i ] ); + + } + + } + + // compute the local matrices, positions, rotations and scales + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + if ( bone.parent && bone.parent.isBone ) { + + bone.matrix.getInverse( bone.parent.matrixWorld ); + bone.matrix.multiply( bone.matrixWorld ); + + } else { + + bone.matrix.copy( bone.matrixWorld ); + + } + + bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); + + } + + } + + }, + + update: ( function () { + + var offsetMatrix = new Matrix4(); + var identityMatrix = new Matrix4(); + + return function update() { + + var bones = this.bones; + var boneInverses = this.boneInverses; + var boneMatrices = this.boneMatrices; + var boneTexture = this.boneTexture; + + // flatten bone matrices to array + + for ( var i = 0, il = bones.length; i < il; i ++ ) { + + // compute the offset between the current and the original transform + + var matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix; + + offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); + offsetMatrix.toArray( boneMatrices, i * 16 ); + + } + + if ( boneTexture !== undefined ) { + + boneTexture.needsUpdate = true; + + } + + }; + + } )(), + + clone: function () { + + return new Skeleton( this.bones, this.boneInverses ); + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function Bone() { + + Object3D.call( this ); + + this.type = 'Bone'; + + } + + Bone.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Bone, + + isBone: true + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function SkinnedMesh( geometry, material ) { + + Mesh.call( this, geometry, material ); + + this.type = 'SkinnedMesh'; + + this.bindMode = 'attached'; + this.bindMatrix = new Matrix4(); + this.bindMatrixInverse = new Matrix4(); + + var bones = this.initBones(); + var skeleton = new Skeleton( bones ); + + this.bind( skeleton, this.matrixWorld ); + + this.normalizeSkinWeights(); + + } + + SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { + + constructor: SkinnedMesh, + + isSkinnedMesh: true, + + initBones: function () { + + var bones = [], bone, gbone; + var i, il; + + if ( this.geometry && this.geometry.bones !== undefined ) { + + // first, create array of 'Bone' objects from geometry data + + for ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) { + + gbone = this.geometry.bones[ i ]; + + // create new 'Bone' object + + bone = new Bone(); + bones.push( bone ); + + // apply values + + bone.name = gbone.name; + bone.position.fromArray( gbone.pos ); + bone.quaternion.fromArray( gbone.rotq ); + if ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl ); + + } + + // second, create bone hierarchy + + for ( i = 0, il = this.geometry.bones.length; i < il; i ++ ) { + + gbone = this.geometry.bones[ i ]; + + if ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) { + + // subsequent bones in the hierarchy + + bones[ gbone.parent ].add( bones[ i ] ); + + } else { + + // topmost bone, immediate child of the skinned mesh + + this.add( bones[ i ] ); + + } + + } + + } + + // now the bones are part of the scene graph and children of the skinned mesh. + // let's update the corresponding matrices + + this.updateMatrixWorld( true ); + + return bones; + + }, + + bind: function ( skeleton, bindMatrix ) { + + this.skeleton = skeleton; + + if ( bindMatrix === undefined ) { + + this.updateMatrixWorld( true ); + + this.skeleton.calculateInverses(); + + bindMatrix = this.matrixWorld; + + } + + this.bindMatrix.copy( bindMatrix ); + this.bindMatrixInverse.getInverse( bindMatrix ); + + }, + + pose: function () { + + this.skeleton.pose(); + + }, + + normalizeSkinWeights: function () { + + var scale, i; + + if ( this.geometry && this.geometry.isGeometry ) { + + for ( i = 0; i < this.geometry.skinWeights.length; i ++ ) { + + var sw = this.geometry.skinWeights[ i ]; + + scale = 1.0 / sw.manhattanLength(); + + if ( scale !== Infinity ) { + + sw.multiplyScalar( scale ); + + } else { + + sw.set( 1, 0, 0, 0 ); // do something reasonable + + } + + } + + } else if ( this.geometry && this.geometry.isBufferGeometry ) { + + var vec = new Vector4(); + + var skinWeight = this.geometry.attributes.skinWeight; + + for ( i = 0; i < skinWeight.count; i ++ ) { + + vec.x = skinWeight.getX( i ); + vec.y = skinWeight.getY( i ); + vec.z = skinWeight.getZ( i ); + vec.w = skinWeight.getW( i ); + + scale = 1.0 / vec.manhattanLength(); + + if ( scale !== Infinity ) { + + vec.multiplyScalar( scale ); + + } else { + + vec.set( 1, 0, 0, 0 ); // do something reasonable + + } + + skinWeight.setXYZW( i, vec.x, vec.y, vec.z, vec.w ); + + } + + } + + }, + + updateMatrixWorld: function ( force ) { + + Mesh.prototype.updateMatrixWorld.call( this, force ); + + if ( this.bindMode === 'attached' ) { + + this.bindMatrixInverse.getInverse( this.matrixWorld ); + + } else if ( this.bindMode === 'detached' ) { + + this.bindMatrixInverse.getInverse( this.bindMatrix ); + + } else { + + console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); + + } + + }, + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * linecap: "round", + * linejoin: "round" + * } + */ + + function LineBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'LineBasicMaterial'; + + this.color = new Color( 0xffffff ); + + this.linewidth = 1; + this.linecap = 'round'; + this.linejoin = 'round'; + + this.lights = false; + + this.setValues( parameters ); + + } + + LineBasicMaterial.prototype = Object.create( Material.prototype ); + LineBasicMaterial.prototype.constructor = LineBasicMaterial; + + LineBasicMaterial.prototype.isLineBasicMaterial = true; + + LineBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Line( geometry, material, mode ) { + + if ( mode === 1 ) { + + console.warn( 'THREE.Line: parameter THREE.LinePieces no longer supported. Created THREE.LineSegments instead.' ); + return new LineSegments( geometry, material ); + + } + + Object3D.call( this ); + + this.type = 'Line'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } ); + + } + + Line.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Line, + + isLine: true, + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + return function raycast( raycaster, intersects ) { + + var precision = raycaster.linePrecision; + var precisionSq = precision * precision; + + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + var vStart = new Vector3(); + var vEnd = new Vector3(); + var interSegment = new Vector3(); + var interRay = new Vector3(); + var step = ( this && this.isLineSegments ) ? 2 : 1; + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, l = indices.length - 1; i < l; i += step ) { + + var a = indices[ i ]; + var b = indices[ i + 1 ]; + + vStart.fromArray( positions, a * 3 ); + vEnd.fromArray( positions, b * 3 ); + + var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > precisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) { + + vStart.fromArray( positions, 3 * i ); + vEnd.fromArray( positions, 3 * i + 3 ); + + var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > precisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var nbVertices = vertices.length; + + for ( var i = 0; i < nbVertices - 1; i += step ) { + + var distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment ); + + if ( distSq > precisionSq ) continue; + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) continue; + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LineSegments( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineSegments'; + + } + + LineSegments.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineSegments, + + isLineSegments: true + + } ); + + /** + * @author mgreter / http://github.com/mgreter + */ + + function LineLoop( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineLoop'; + + } + + LineLoop.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineLoop, + + isLineLoop: true, + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * size: , + * sizeAttenuation: + * } + */ + + function PointsMaterial( parameters ) { + + Material.call( this ); + + this.type = 'PointsMaterial'; + + this.color = new Color( 0xffffff ); + + this.map = null; + + this.size = 1; + this.sizeAttenuation = true; + + this.lights = false; + + this.setValues( parameters ); + + } + + PointsMaterial.prototype = Object.create( Material.prototype ); + PointsMaterial.prototype.constructor = PointsMaterial; + + PointsMaterial.prototype.isPointsMaterial = true; + + PointsMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Points( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Points'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } ); + + } + + Points.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Points, + + isPoints: true, + + raycast: ( function () { + + var inverseMatrix = new Matrix4(); + var ray = new Ray(); + var sphere = new Sphere(); + + return function raycast( raycaster, intersects ) { + + var object = this; + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + var threshold = raycaster.params.Points.threshold; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); + + sphere.copy( geometry.boundingSphere ); + sphere.applyMatrix4( matrixWorld ); + sphere.radius += threshold; + + if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; + + // + + inverseMatrix.getInverse( matrixWorld ); + ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); + + var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localThresholdSq = localThreshold * localThreshold; + var position = new Vector3(); + + function testPoint( point, index ) { + + var rayPointDistanceSq = ray.distanceSqToPoint( point ); + + if ( rayPointDistanceSq < localThresholdSq ) { + + var intersectPoint = ray.closestPointToPoint( point ); + intersectPoint.applyMatrix4( matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) return; + + intersects.push( { + + distance: distance, + distanceToRay: Math.sqrt( rayPointDistanceSq ), + point: intersectPoint.clone(), + index: index, + face: null, + object: object + + } ); + + } + + } + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, il = indices.length; i < il; i ++ ) { + + var a = indices[ i ]; + + position.fromArray( positions, a * 3 ); + + testPoint( position, a ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3; i < l; i ++ ) { + + position.fromArray( positions, i * 3 ); + + testPoint( position, i ); + + } + + } + + } else { + + var vertices = geometry.vertices; + + for ( var i = 0, l = vertices.length; i < l; i ++ ) { + + testPoint( vertices[ i ], i ); + + } + + } + + }; + + }() ), + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Group() { + + Object3D.call( this ); + + this.type = 'Group'; + + } + + Group.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Group, + + isGroup: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.generateMipmaps = false; + + // Set needsUpdate when first frame is ready + + var scope = this; + + function onLoaded() { + + video.removeEventListener( 'loadeddata', onLoaded, false ); + scope.needsUpdate = true; + + } + + video.addEventListener( 'loadeddata', onLoaded, false ); + + } + + VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), { + + constructor: VideoTexture, + + isVideoTexture: true, + + update: function () { + + var video = this.image; + + if ( video.readyState >= video.HAVE_CURRENT_DATA ) { + + this.needsUpdate = true; + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { width: width, height: height }; + this.mipmaps = mipmaps; + + // no flipping for cube textures + // (also flipping doesn't work for compressed textures ) + + this.flipY = false; + + // can't generate mipmaps for compressed textures + // mips must be embedded in DDS files + + this.generateMipmaps = false; + + } + + CompressedTexture.prototype = Object.create( Texture.prototype ); + CompressedTexture.prototype.constructor = CompressedTexture; + + CompressedTexture.prototype.isCompressedTexture = true; + + /** + * @author Matt DesLauriers / @mattdesl + * @author atix / arthursilber.de + */ + + function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) { + + format = format !== undefined ? format : DepthFormat; + + if ( format !== DepthFormat && format !== DepthStencilFormat ) { + + throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); + + } + + if ( type === undefined && format === DepthFormat ) type = UnsignedShortType; + if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type; + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.image = { width: width, height: height }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.flipY = false; + this.generateMipmaps = false; + + } + + DepthTexture.prototype = Object.create( Texture.prototype ); + DepthTexture.prototype.constructor = DepthTexture; + DepthTexture.prototype.isDepthTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WireframeGeometry( geometry ) { + + BufferGeometry.call( this ); + + this.type = 'WireframeGeometry'; + + // buffer + + var vertices = []; + + // helper variables + + var i, j, l, o, ol; + var edge = [ 0, 0 ], edges = {}, e, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + var vertex; + + // different logic for Geometry and BufferGeometry + + if ( geometry && geometry.isGeometry ) { + + // create a data structure that contains all edges without duplicates + + var faces = geometry.faces; + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex = geometry.vertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = geometry.vertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else if ( geometry && geometry.isBufferGeometry ) { + + var position, indices, groups; + var group, start, count; + var index1, index2; + + vertex = new Vector3(); + + if ( geometry.index !== null ) { + + // indexed BufferGeometry + + position = geometry.attributes.position; + indices = geometry.index; + groups = geometry.groups; + + if ( groups.length === 0 ) { + + groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; + + } + + // create a data structure that contains all eges without duplicates + + for ( o = 0, ol = groups.length; o < ol; ++ o ) { + + group = groups[ o ]; + + start = group.start; + count = group.count; + + for ( i = start, l = ( start + count ); i < l; i += 3 ) { + + for ( j = 0; j < 3; j ++ ) { + + edge1 = indices.getX( i + j ); + edge2 = indices.getX( i + ( j + 1 ) % 3 ); + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex.fromBufferAttribute( position, e.index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex.fromBufferAttribute( position, e.index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else { + + // non-indexed BufferGeometry + + position = geometry.attributes.position; + + for ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) { + + for ( j = 0; j < 3; j ++ ) { + + // three edges per triangle, an edge is represented as (index1, index2) + // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) + + index1 = 3 * i + j; + vertex.fromBufferAttribute( position, index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + index2 = 3 * i + ( ( j + 1 ) % 3 ); + vertex.fromBufferAttribute( position, index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + WireframeGeometry.prototype = Object.create( BufferGeometry.prototype ); + WireframeGeometry.prototype.constructor = WireframeGeometry; + + /** + * @author zz85 / https://github.com/zz85 + * @author Mugen87 / https://github.com/Mugen87 + * + * Parametric Surfaces Geometry + * based on the brilliant article by @prideout http://prideout.net/blog/?p=44 + */ + + // ParametricGeometry + + function ParametricGeometry( func, slices, stacks ) { + + Geometry.call( this ); + + this.type = 'ParametricGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + this.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) ); + this.mergeVertices(); + + } + + ParametricGeometry.prototype = Object.create( Geometry.prototype ); + ParametricGeometry.prototype.constructor = ParametricGeometry; + + // ParametricBufferGeometry + + function ParametricBufferGeometry( func, slices, stacks ) { + + BufferGeometry.call( this ); + + this.type = 'ParametricBufferGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + var EPS = 0.00001; + + var normal = new Vector3(); + + var p0 = new Vector3(), p1 = new Vector3(); + var pu = new Vector3(), pv = new Vector3(); + + var i, j; + + // generate vertices, normals and uvs + + var sliceCount = slices + 1; + + for ( i = 0; i <= stacks; i ++ ) { + + var v = i / stacks; + + for ( j = 0; j <= slices; j ++ ) { + + var u = j / slices; + + // vertex + + p0 = func( u, v, p0 ); + vertices.push( p0.x, p0.y, p0.z ); + + // normal + + // approximate tangent vectors via finite differences + + if ( u - EPS >= 0 ) { + + p1 = func( u - EPS, v, p1 ); + pu.subVectors( p0, p1 ); + + } else { + + p1 = func( u + EPS, v, p1 ); + pu.subVectors( p1, p0 ); + + } + + if ( v - EPS >= 0 ) { + + p1 = func( u, v - EPS, p1 ); + pv.subVectors( p0, p1 ); + + } else { + + p1 = func( u, v + EPS, p1 ); + pv.subVectors( p1, p0 ); + + } + + // cross product of tangent vectors returns surface normal + + normal.crossVectors( pu, pv ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, v ); + + } + + } + + // generate indices + + for ( i = 0; i < stacks; i ++ ) { + + for ( j = 0; j < slices; j ++ ) { + + var a = i * sliceCount + j; + var b = i * sliceCount + j + 1; + var c = ( i + 1 ) * sliceCount + j + 1; + var d = ( i + 1 ) * sliceCount + j; + + // faces one and two + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry; + + /** + * @author clockworkgeek / https://github.com/clockworkgeek + * @author timothypratley / https://github.com/timothypratley + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PolyhedronGeometry + + function PolyhedronGeometry( vertices, indices, radius, detail ) { + + Geometry.call( this ); + + this.type = 'PolyhedronGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) ); + this.mergeVertices(); + + } + + PolyhedronGeometry.prototype = Object.create( Geometry.prototype ); + PolyhedronGeometry.prototype.constructor = PolyhedronGeometry; + + // PolyhedronBufferGeometry + + function PolyhedronBufferGeometry( vertices, indices, radius, detail ) { + + BufferGeometry.call( this ); + + this.type = 'PolyhedronBufferGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + radius = radius || 1; + detail = detail || 0; + + // default buffer data + + var vertexBuffer = []; + var uvBuffer = []; + + // the subdivision creates the vertex buffer data + + subdivide( detail ); + + // all vertices should lie on a conceptual sphere with a given radius + + appplyRadius( radius ); + + // finally, create the uv data + + generateUVs(); + + // build non-indexed geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); + + if ( detail === 0 ) { + + this.computeVertexNormals(); // flat normals + + } else { + + this.normalizeNormals(); // smooth normals + + } + + // helper functions + + function subdivide( detail ) { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + // iterate over all faces and apply a subdivison with the given detail value + + for ( var i = 0; i < indices.length; i += 3 ) { + + // get the vertices of the face + + getVertexByIndex( indices[ i + 0 ], a ); + getVertexByIndex( indices[ i + 1 ], b ); + getVertexByIndex( indices[ i + 2 ], c ); + + // perform subdivision + + subdivideFace( a, b, c, detail ); + + } + + } + + function subdivideFace( a, b, c, detail ) { + + var cols = Math.pow( 2, detail ); + + // we use this multidimensional array as a data structure for creating the subdivision + + var v = []; + + var i, j; + + // construct all of the vertices for this subdivision + + for ( i = 0; i <= cols; i ++ ) { + + v[ i ] = []; + + var aj = a.clone().lerp( c, i / cols ); + var bj = b.clone().lerp( c, i / cols ); + + var rows = cols - i; + + for ( j = 0; j <= rows; j ++ ) { + + if ( j === 0 && i === cols ) { + + v[ i ][ j ] = aj; + + } else { + + v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); + + } + + } + + } + + // construct all of the faces + + for ( i = 0; i < cols; i ++ ) { + + for ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { + + var k = Math.floor( j / 2 ); + + if ( j % 2 === 0 ) { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + pushVertex( v[ i ][ k ] ); + + } else { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + + } + + } + + } + + } + + function appplyRadius( radius ) { + + var vertex = new Vector3(); + + // iterate over the entire buffer and apply the radius to each vertex + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + vertex.normalize().multiplyScalar( radius ); + + vertexBuffer[ i + 0 ] = vertex.x; + vertexBuffer[ i + 1 ] = vertex.y; + vertexBuffer[ i + 2 ] = vertex.z; + + } + + } + + function generateUVs() { + + var vertex = new Vector3(); + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + var u = azimuth( vertex ) / 2 / Math.PI + 0.5; + var v = inclination( vertex ) / Math.PI + 0.5; + uvBuffer.push( u, 1 - v ); + + } + + correctUVs(); + + correctSeam(); + + } + + function correctSeam() { + + // handle case when face straddles the seam, see #3269 + + for ( var i = 0; i < uvBuffer.length; i += 6 ) { + + // uv data of a single face + + var x0 = uvBuffer[ i + 0 ]; + var x1 = uvBuffer[ i + 2 ]; + var x2 = uvBuffer[ i + 4 ]; + + var max = Math.max( x0, x1, x2 ); + var min = Math.min( x0, x1, x2 ); + + // 0.9 is somewhat arbitrary + + if ( max > 0.9 && min < 0.1 ) { + + if ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1; + if ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1; + if ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1; + + } + + } + + } + + function pushVertex( vertex ) { + + vertexBuffer.push( vertex.x, vertex.y, vertex.z ); + + } + + function getVertexByIndex( index, vertex ) { + + var stride = index * 3; + + vertex.x = vertices[ stride + 0 ]; + vertex.y = vertices[ stride + 1 ]; + vertex.z = vertices[ stride + 2 ]; + + } + + function correctUVs() { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + var centroid = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + for ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { + + a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); + b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); + c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); + + uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); + uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); + uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); + + centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); + + var azi = azimuth( centroid ); + + correctUV( uvA, j + 0, a, azi ); + correctUV( uvB, j + 2, b, azi ); + correctUV( uvC, j + 4, c, azi ); + + } + + } + + function correctUV( uv, stride, vector, azimuth ) { + + if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { + + uvBuffer[ stride ] = uv.x - 1; + + } + + if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { + + uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; + + } + + } + + // Angle around the Y axis, counter-clockwise when looking from above. + + function azimuth( vector ) { + + return Math.atan2( vector.z, - vector.x ); + + } + + + // Angle above the XZ plane. + + function inclination( vector ) { + + return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); + + } + + } + + PolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TetrahedronGeometry + + function TetrahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'TetrahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + TetrahedronGeometry.prototype = Object.create( Geometry.prototype ); + TetrahedronGeometry.prototype.constructor = TetrahedronGeometry; + + // TetrahedronBufferGeometry + + function TetrahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 + ]; + + var indices = [ + 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'TetrahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + TetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + TetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // OctahedronGeometry + + function OctahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'OctahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + OctahedronGeometry.prototype = Object.create( Geometry.prototype ); + OctahedronGeometry.prototype.constructor = OctahedronGeometry; + + // OctahedronBufferGeometry + + function OctahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 0, 0, - 1, 0, 0, 0, 1, 0, + 0, - 1, 0, 0, 0, 1, 0, 0, - 1 + ]; + + var indices = [ + 0, 2, 4, 0, 4, 3, 0, 3, 5, + 0, 5, 2, 1, 2, 5, 1, 5, 3, + 1, 3, 4, 1, 4, 2 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'OctahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + OctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + OctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // IcosahedronGeometry + + function IcosahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'IcosahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + IcosahedronGeometry.prototype = Object.create( Geometry.prototype ); + IcosahedronGeometry.prototype.constructor = IcosahedronGeometry; + + // IcosahedronBufferGeometry + + function IcosahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + + var vertices = [ + - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, + 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, + t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 + ]; + + var indices = [ + 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, + 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, + 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, + 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'IcosahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + IcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + IcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry; + + /** + * @author Abe Pazos / https://hamoid.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // DodecahedronGeometry + + function DodecahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'DodecahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + DodecahedronGeometry.prototype = Object.create( Geometry.prototype ); + DodecahedronGeometry.prototype.constructor = DodecahedronGeometry; + + // DodecahedronBufferGeometry + + function DodecahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + var r = 1 / t; + + var vertices = [ + + // (±1, ±1, ±1) + - 1, - 1, - 1, - 1, - 1, 1, + - 1, 1, - 1, - 1, 1, 1, + 1, - 1, - 1, 1, - 1, 1, + 1, 1, - 1, 1, 1, 1, + + // (0, ±1/φ, ±φ) + 0, - r, - t, 0, - r, t, + 0, r, - t, 0, r, t, + + // (±1/φ, ±φ, 0) + - r, - t, 0, - r, t, 0, + r, - t, 0, r, t, 0, + + // (±φ, 0, ±1/φ) + - t, 0, - r, t, 0, - r, + - t, 0, r, t, 0, r + ]; + + var indices = [ + 3, 11, 7, 3, 7, 15, 3, 15, 13, + 7, 19, 17, 7, 17, 6, 7, 6, 15, + 17, 4, 8, 17, 8, 10, 17, 10, 6, + 8, 0, 16, 8, 16, 2, 8, 2, 10, + 0, 12, 1, 0, 1, 18, 0, 18, 16, + 6, 10, 2, 6, 2, 13, 6, 13, 15, + 2, 16, 18, 2, 18, 3, 2, 3, 13, + 18, 1, 9, 18, 9, 11, 18, 11, 3, + 4, 14, 12, 4, 12, 0, 4, 0, 8, + 11, 9, 5, 11, 5, 19, 11, 19, 7, + 19, 5, 14, 19, 14, 4, 19, 4, 17, + 1, 12, 14, 1, 14, 5, 1, 5, 9 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'DodecahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + DodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + DodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry; + + /** + * @author oosmoxiecode / https://github.com/oosmoxiecode + * @author WestLangley / https://github.com/WestLangley + * @author zz85 / https://github.com/zz85 + * @author miningold / https://github.com/miningold + * @author jonobr1 / https://github.com/jonobr1 + * @author Mugen87 / https://github.com/Mugen87 + * + */ + + // TubeGeometry + + function TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) { + + Geometry.call( this ); + + this.type = 'TubeGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + if ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' ); + + var bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ); + + // expose internals + + this.tangents = bufferGeometry.tangents; + this.normals = bufferGeometry.normals; + this.binormals = bufferGeometry.binormals; + + // create geometry + + this.fromBufferGeometry( bufferGeometry ); + this.mergeVertices(); + + } + + TubeGeometry.prototype = Object.create( Geometry.prototype ); + TubeGeometry.prototype.constructor = TubeGeometry; + + // TubeBufferGeometry + + function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) { + + BufferGeometry.call( this ); + + this.type = 'TubeBufferGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + tubularSegments = tubularSegments || 64; + radius = radius || 1; + radialSegments = radialSegments || 8; + closed = closed || false; + + var frames = path.computeFrenetFrames( tubularSegments, closed ); + + // expose internals + + this.tangents = frames.tangents; + this.normals = frames.normals; + this.binormals = frames.binormals; + + // helper variables + + var vertex = new Vector3(); + var normal = new Vector3(); + var uv = new Vector2(); + var P = new Vector3(); + + var i, j; + + // buffer + + var vertices = []; + var normals = []; + var uvs = []; + var indices = []; + + // create buffer data + + generateBufferData(); + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // functions + + function generateBufferData() { + + for ( i = 0; i < tubularSegments; i ++ ) { + + generateSegment( i ); + + } + + // if the geometry is not closed, generate the last row of vertices and normals + // at the regular position on the given path + // + // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) + + generateSegment( ( closed === false ) ? tubularSegments : 0 ); + + // uvs are generated in a separate function. + // this makes it easy compute correct values for closed geometries + + generateUVs(); + + // finally create faces + + generateIndices(); + + } + + function generateSegment( i ) { + + // we use getPointAt to sample evenly distributed points from the given path + + P = path.getPointAt( i / tubularSegments, P ); + + // retrieve corresponding normal and binormal + + var N = frames.normals[ i ]; + var B = frames.binormals[ i ]; + + // generate normals and vertices for the current segment + + for ( j = 0; j <= radialSegments; j ++ ) { + + var v = j / radialSegments * Math.PI * 2; + + var sin = Math.sin( v ); + var cos = - Math.cos( v ); + + // normal + + normal.x = ( cos * N.x + sin * B.x ); + normal.y = ( cos * N.y + sin * B.y ); + normal.z = ( cos * N.z + sin * B.z ); + normal.normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // vertex + + vertex.x = P.x + radius * normal.x; + vertex.y = P.y + radius * normal.y; + vertex.z = P.z + radius * normal.z; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + function generateIndices() { + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + } + + function generateUVs() { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + for ( j = 0; j <= radialSegments; j ++ ) { + + uv.x = i / tubularSegments; + uv.y = j / radialSegments; + + uvs.push( uv.x, uv.y ); + + } + + } + + } + + } + + TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TubeBufferGeometry.prototype.constructor = TubeBufferGeometry; + + /** + * @author oosmoxiecode + * @author Mugen87 / https://github.com/Mugen87 + * + * based on http://www.blackpawn.com/texts/pqtorus/ + */ + + // TorusKnotGeometry + + function TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) { + + Geometry.call( this ); + + this.type = 'TorusKnotGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + if ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' ); + + this.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) ); + this.mergeVertices(); + + } + + TorusKnotGeometry.prototype = Object.create( Geometry.prototype ); + TorusKnotGeometry.prototype.constructor = TorusKnotGeometry; + + // TorusKnotBufferGeometry + + function TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) { + + BufferGeometry.call( this ); + + this.type = 'TorusKnotBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + radius = radius || 1; + tube = tube || 0.4; + tubularSegments = Math.floor( tubularSegments ) || 64; + radialSegments = Math.floor( radialSegments ) || 8; + p = p || 2; + q = q || 3; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, j; + + var vertex = new Vector3(); + var normal = new Vector3(); + + var P1 = new Vector3(); + var P2 = new Vector3(); + + var B = new Vector3(); + var T = new Vector3(); + var N = new Vector3(); + + // generate vertices, normals and uvs + + for ( i = 0; i <= tubularSegments; ++ i ) { + + // the radian "u" is used to calculate the position on the torus curve of the current tubular segement + + var u = i / tubularSegments * p * Math.PI * 2; + + // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. + // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions + + calculatePositionOnCurve( u, p, q, radius, P1 ); + calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); + + // calculate orthonormal basis + + T.subVectors( P2, P1 ); + N.addVectors( P2, P1 ); + B.crossVectors( T, N ); + N.crossVectors( B, T ); + + // normalize B, N. T can be ignored, we don't use it + + B.normalize(); + N.normalize(); + + for ( j = 0; j <= radialSegments; ++ j ) { + + // now calculate the vertices. they are nothing more than an extrusion of the torus curve. + // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. + + var v = j / radialSegments * Math.PI * 2; + var cx = - tube * Math.cos( v ); + var cy = tube * Math.sin( v ); + + // now calculate the final vertex position. + // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve + + vertex.x = P1.x + ( cx * N.x + cy * B.x ); + vertex.y = P1.y + ( cx * N.y + cy * B.y ); + vertex.z = P1.z + ( cx * N.z + cy * B.z ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) + + normal.subVectors( vertex, P1 ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + // indices + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // this function calculates the current position on the torus curve + + function calculatePositionOnCurve( u, p, q, radius, position ) { + + var cu = Math.cos( u ); + var su = Math.sin( u ); + var quOverP = q / p * u; + var cs = Math.cos( quOverP ); + + position.x = radius * ( 2 + cs ) * 0.5 * cu; + position.y = radius * ( 2 + cs ) * su * 0.5; + position.z = radius * Math.sin( quOverP ) * 0.5; + + } + + } + + TorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry; + + /** + * @author oosmoxiecode + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TorusGeometry + + function TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + Geometry.call( this ); + + this.type = 'TorusGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + this.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) ); + this.mergeVertices(); + + } + + TorusGeometry.prototype = Object.create( Geometry.prototype ); + TorusGeometry.prototype.constructor = TorusGeometry; + + // TorusBufferGeometry + + function TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + BufferGeometry.call( this ); + + this.type = 'TorusBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + radius = radius || 1; + tube = tube || 0.4; + radialSegments = Math.floor( radialSegments ) || 8; + tubularSegments = Math.floor( tubularSegments ) || 6; + arc = arc || Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var center = new Vector3(); + var vertex = new Vector3(); + var normal = new Vector3(); + + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= radialSegments; j ++ ) { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + var u = i / tubularSegments * arc; + var v = j / radialSegments * Math.PI * 2; + + // vertex + + vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); + vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); + vertex.z = tube * Math.sin( v ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + center.x = radius * Math.cos( u ); + center.y = radius * Math.sin( u ); + normal.subVectors( vertex, center ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= radialSegments; j ++ ) { + + for ( i = 1; i <= tubularSegments; i ++ ) { + + // indices + + var a = ( tubularSegments + 1 ) * j + i - 1; + var b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; + var c = ( tubularSegments + 1 ) * ( j - 1 ) + i; + var d = ( tubularSegments + 1 ) * j + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + TorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusBufferGeometry.prototype.constructor = TorusBufferGeometry; + + /** + * @author Mugen87 / https://github.com/Mugen87 + * Port from https://github.com/mapbox/earcut (v2.1.2) + */ + + var Earcut = { + + triangulate: function ( data, holeIndices, dim ) { + + dim = dim || 2; + + var hasHoles = holeIndices && holeIndices.length, + outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length, + outerNode = linkedList( data, 0, outerLen, dim, true ), + triangles = []; + + if ( ! outerNode ) return triangles; + + var minX, minY, maxX, maxY, x, y, invSize; + + if ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim ); + + // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox + + if ( data.length > 80 * dim ) { + + minX = maxX = data[ 0 ]; + minY = maxY = data[ 1 ]; + + for ( var i = dim; i < outerLen; i += dim ) { + + x = data[ i ]; + y = data[ i + 1 ]; + if ( x < minX ) minX = x; + if ( y < minY ) minY = y; + if ( x > maxX ) maxX = x; + if ( y > maxY ) maxY = y; + + } + + // minX, minY and invSize are later used to transform coords into integers for z-order calculation + + invSize = Math.max( maxX - minX, maxY - minY ); + invSize = invSize !== 0 ? 1 / invSize : 0; + + } + + earcutLinked( outerNode, triangles, dim, minX, minY, invSize ); + + return triangles; + + } + + }; + + // create a circular doubly linked list from polygon points in the specified winding order + + function linkedList( data, start, end, dim, clockwise ) { + + var i, last; + + if ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) { + + for ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + + } else { + + for ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); + + } + + if ( last && equals( last, last.next ) ) { + + removeNode( last ); + last = last.next; + + } + + return last; + + } + + // eliminate colinear or duplicate points + + function filterPoints( start, end ) { + + if ( ! start ) return start; + if ( ! end ) end = start; + + var p = start, again; + + do { + + again = false; + + if ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) { + + removeNode( p ); + p = end = p.prev; + if ( p === p.next ) break; + again = true; + + } else { + + p = p.next; + + } + + } while ( again || p !== end ); + + return end; + + } + + // main ear slicing loop which triangulates a polygon (given as a linked list) + + function earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) { + + if ( ! ear ) return; + + // interlink polygon nodes in z-order + + if ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize ); + + var stop = ear, prev, next; + + // iterate through ears, slicing them one by one + + while ( ear.prev !== ear.next ) { + + prev = ear.prev; + next = ear.next; + + if ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) { + + // cut off the triangle + triangles.push( prev.i / dim ); + triangles.push( ear.i / dim ); + triangles.push( next.i / dim ); + + removeNode( ear ); + + // skipping the next vertice leads to less sliver triangles + ear = next.next; + stop = next.next; + + continue; + + } + + ear = next; + + // if we looped through the whole remaining polygon and can't find any more ears + + if ( ear === stop ) { + + // try filtering points and slicing again + + if ( ! pass ) { + + earcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 ); + + // if this didn't work, try curing all small self-intersections locally + + } else if ( pass === 1 ) { + + ear = cureLocalIntersections( ear, triangles, dim ); + earcutLinked( ear, triangles, dim, minX, minY, invSize, 2 ); + + // as a last resort, try splitting the remaining polygon into two + + } else if ( pass === 2 ) { + + splitEarcut( ear, triangles, dim, minX, minY, invSize ); + + } + + break; + + } + + } + + } + + // check whether a polygon node forms a valid ear with adjacent nodes + + function isEar( ear ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + + // now make sure we don't have other points inside the potential ear + var p = ear.next.next; + + while ( p !== ear.prev ) { + + if ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) { + + return false; + + } + + p = p.next; + + } + + return true; + + } + + function isEarHashed( ear, minX, minY, invSize ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear + + // triangle bbox; min & max are calculated like this for speed + + var minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ), + minTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ), + maxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ), + maxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y ); + + // z-order range for the current triangle bbox; + + var minZ = zOrder( minTX, minTY, minX, minY, invSize ), + maxZ = zOrder( maxTX, maxTY, minX, minY, invSize ); + + // first look for points inside the triangle in increasing z-order + + var p = ear.nextZ; + + while ( p && p.z <= maxZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) return false; + p = p.nextZ; + + } + + // then look for points in decreasing z-order + + p = ear.prevZ; + + while ( p && p.z >= minZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) return false; + + p = p.prevZ; + + } + + return true; + + } + + // go through all polygon nodes and cure small local self-intersections + + function cureLocalIntersections( start, triangles, dim ) { + + var p = start; + + do { + + var a = p.prev, b = p.next.next; + + if ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) { + + triangles.push( a.i / dim ); + triangles.push( p.i / dim ); + triangles.push( b.i / dim ); + + // remove two nodes involved + + removeNode( p ); + removeNode( p.next ); + + p = start = b; + + } + + p = p.next; + + } while ( p !== start ); + + return p; + + } + + // try splitting polygon into two and triangulate them independently + + function splitEarcut( start, triangles, dim, minX, minY, invSize ) { + + // look for a valid diagonal that divides the polygon into two + + var a = start; + + do { + + var b = a.next.next; + + while ( b !== a.prev ) { + + if ( a.i !== b.i && isValidDiagonal( a, b ) ) { + + // split the polygon in two by the diagonal + + var c = splitPolygon( a, b ); + + // filter colinear points around the cuts + + a = filterPoints( a, a.next ); + c = filterPoints( c, c.next ); + + // run earcut on each half + + earcutLinked( a, triangles, dim, minX, minY, invSize ); + earcutLinked( c, triangles, dim, minX, minY, invSize ); + return; + + } + + b = b.next; + + } + + a = a.next; + + } while ( a !== start ); + + } + + // link every hole into the outer loop, producing a single-ring polygon without holes + + function eliminateHoles( data, holeIndices, outerNode, dim ) { + + var queue = [], i, len, start, end, list; + + for ( i = 0, len = holeIndices.length; i < len; i ++ ) { + + start = holeIndices[ i ] * dim; + end = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length; + list = linkedList( data, start, end, dim, false ); + if ( list === list.next ) list.steiner = true; + queue.push( getLeftmost( list ) ); + + } + + queue.sort( compareX ); + + // process holes from left to right + + for ( i = 0; i < queue.length; i ++ ) { + + eliminateHole( queue[ i ], outerNode ); + outerNode = filterPoints( outerNode, outerNode.next ); + + } + + return outerNode; + + } + + function compareX( a, b ) { + + return a.x - b.x; + + } + + // find a bridge between vertices that connects hole with an outer ring and and link it + + function eliminateHole( hole, outerNode ) { + + outerNode = findHoleBridge( hole, outerNode ); + + if ( outerNode ) { + + var b = splitPolygon( outerNode, hole ); + + filterPoints( b, b.next ); + + } + + } + + // David Eberly's algorithm for finding a bridge between hole and outer polygon + + function findHoleBridge( hole, outerNode ) { + + var p = outerNode, + hx = hole.x, + hy = hole.y, + qx = - Infinity, + m; + + // find a segment intersected by a ray from the hole's leftmost point to the left; + // segment's endpoint with lesser x will be potential connection point + + do { + + if ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) { + + var x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y ); + + if ( x <= hx && x > qx ) { + + qx = x; + + if ( x === hx ) { + + if ( hy === p.y ) return p; + if ( hy === p.next.y ) return p.next; + + } + + m = p.x < p.next.x ? p : p.next; + + } + + } + + p = p.next; + + } while ( p !== outerNode ); + + if ( ! m ) return null; + + if ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint + + // look for points inside the triangle of hole point, segment intersection and endpoint; + // if there are no points found, we have a valid connection; + // otherwise choose the point of the minimum angle with the ray as connection point + + var stop = m, + mx = m.x, + my = m.y, + tanMin = Infinity, + tan; + + p = m.next; + + while ( p !== stop ) { + + if ( hx >= p.x && p.x >= mx && hx !== p.x && + pointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) { + + tan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential + + if ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) { + + m = p; + tanMin = tan; + + } + + } + + p = p.next; + + } + + return m; + + } + + // interlink polygon nodes in z-order + + function indexCurve( start, minX, minY, invSize ) { + + var p = start; + + do { + + if ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize ); + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + + } while ( p !== start ); + + p.prevZ.nextZ = null; + p.prevZ = null; + + sortLinked( p ); + + } + + // Simon Tatham's linked list merge sort algorithm + // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html + + function sortLinked( list ) { + + var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; + + do { + + p = list; + list = null; + tail = null; + numMerges = 0; + + while ( p ) { + + numMerges ++; + q = p; + pSize = 0; + + for ( i = 0; i < inSize; i ++ ) { + + pSize ++; + q = q.nextZ; + if ( ! q ) break; + + } + + qSize = inSize; + + while ( pSize > 0 || ( qSize > 0 && q ) ) { + + if ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) { + + e = p; + p = p.nextZ; + pSize --; + + } else { + + e = q; + q = q.nextZ; + qSize --; + + } + + if ( tail ) tail.nextZ = e; + else list = e; + + e.prevZ = tail; + tail = e; + + } + + p = q; + + } + + tail.nextZ = null; + inSize *= 2; + + } while ( numMerges > 1 ); + + return list; + + } + + // z-order of a point given coords and inverse of the longer side of data bbox + + function zOrder( x, y, minX, minY, invSize ) { + + // coords are transformed into non-negative 15-bit integer range + + x = 32767 * ( x - minX ) * invSize; + y = 32767 * ( y - minY ) * invSize; + + x = ( x | ( x << 8 ) ) & 0x00FF00FF; + x = ( x | ( x << 4 ) ) & 0x0F0F0F0F; + x = ( x | ( x << 2 ) ) & 0x33333333; + x = ( x | ( x << 1 ) ) & 0x55555555; + + y = ( y | ( y << 8 ) ) & 0x00FF00FF; + y = ( y | ( y << 4 ) ) & 0x0F0F0F0F; + y = ( y | ( y << 2 ) ) & 0x33333333; + y = ( y | ( y << 1 ) ) & 0x55555555; + + return x | ( y << 1 ); + + } + + // find the leftmost node of a polygon ring + + function getLeftmost( start ) { + + var p = start, leftmost = start; + + do { + + if ( p.x < leftmost.x ) leftmost = p; + p = p.next; + + } while ( p !== start ); + + return leftmost; + + } + + // check if a point lies within a convex triangle + + function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) { + + return ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 && + ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 && + ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0; + + } + + // check if a diagonal between two polygon nodes is valid (lies in polygon interior) + + function isValidDiagonal( a, b ) { + + return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && + locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ); + + } + + // signed area of a triangle + + function area( p, q, r ) { + + return ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y ); + + } + + // check if two points are equal + + function equals( p1, p2 ) { + + return p1.x === p2.x && p1.y === p2.y; + + } + + // check if two segments intersect + + function intersects( p1, q1, p2, q2 ) { + + if ( ( equals( p1, q1 ) && equals( p2, q2 ) ) || + ( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true; + + return area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 && + area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0; + + } + + // check if a polygon diagonal intersects any polygon segments + + function intersectsPolygon( a, b ) { + + var p = a; + + do { + + if ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && + intersects( p, p.next, a, b ) ) { + + return true; + + } + + p = p.next; + + } while ( p !== a ); + + return false; + + } + + // check if a polygon diagonal is locally inside the polygon + + function locallyInside( a, b ) { + + return area( a.prev, a, a.next ) < 0 ? + area( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 : + area( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0; + + } + + // check if the middle point of a polygon diagonal is inside the polygon + + function middleInside( a, b ) { + + var p = a, + inside = false, + px = ( a.x + b.x ) / 2, + py = ( a.y + b.y ) / 2; + + do { + + if ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y && + ( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) { + + inside = ! inside; + + } + + p = p.next; + + } while ( p !== a ); + + return inside; + + } + + // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; + // if one belongs to the outer ring and another to a hole, it merges it into a single ring + + function splitPolygon( a, b ) { + + var a2 = new Node( a.i, a.x, a.y ), + b2 = new Node( b.i, b.x, b.y ), + an = a.next, + bp = b.prev; + + a.next = b; + b.prev = a; + + a2.next = an; + an.prev = a2; + + b2.next = a2; + a2.prev = b2; + + bp.next = b2; + b2.prev = bp; + + return b2; + + } + + // create a node and optionally link it with previous one (in a circular doubly linked list) + + function insertNode( i, x, y, last ) { + + var p = new Node( i, x, y ); + + if ( ! last ) { + + p.prev = p; + p.next = p; + + } else { + + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + + } + + return p; + + } + + function removeNode( p ) { + + p.next.prev = p.prev; + p.prev.next = p.next; + + if ( p.prevZ ) p.prevZ.nextZ = p.nextZ; + if ( p.nextZ ) p.nextZ.prevZ = p.prevZ; + + } + + function Node( i, x, y ) { + + // vertice index in coordinates array + this.i = i; + + // vertex coordinates + this.x = x; + this.y = y; + + // previous and next vertice nodes in a polygon ring + this.prev = null; + this.next = null; + + // z-order curve value + this.z = null; + + // previous and next nodes in z-order + this.prevZ = null; + this.nextZ = null; + + // indicates whether this is a steiner point + this.steiner = false; + + } + + function signedArea( data, start, end, dim ) { + + var sum = 0; + + for ( var i = start, j = end - dim; i < end; i += dim ) { + + sum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] ); + j = i; + + } + + return sum; + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + var ShapeUtils = { + + // calculate area of the contour polygon + + area: function ( contour ) { + + var n = contour.length; + var a = 0.0; + + for ( var p = n - 1, q = 0; q < n; p = q ++ ) { + + a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; + + } + + return a * 0.5; + + }, + + isClockWise: function ( pts ) { + + return ShapeUtils.area( pts ) < 0; + + }, + + triangulateShape: function ( contour, holes ) { + + function removeDupEndPts( points ) { + + var l = points.length; + + if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { + + points.pop(); + + } + + } + + function addContour( vertices, contour ) { + + for ( var i = 0; i < contour.length; i ++ ) { + + vertices.push( contour[ i ].x ); + vertices.push( contour[ i ].y ); + + } + + } + + var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] + var holeIndices = []; // array of hole indices + var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] + + removeDupEndPts( contour ); + addContour( vertices, contour ); + + // + + var holeIndex = contour.length; + holes.forEach( removeDupEndPts ); + + for ( i = 0; i < holes.length; i ++ ) { + + holeIndices.push( holeIndex ); + holeIndex += holes[ i ].length; + addContour( vertices, holes[ i ] ); + + } + + // + + var triangles = Earcut.triangulate( vertices, holeIndices ); + + // + + for ( var i = 0; i < triangles.length; i += 3 ) { + + faces.push( triangles.slice( i, i + 3 ) ); + + } + + return faces; + + } + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Creates extruded geometry from a path shape. + * + * parameters = { + * + * curveSegments: , // number of points on the curves + * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too + * amount: , // Depth to extrude the shape + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into the original shape bevel goes + * bevelSize: , // how far from shape outline is bevel + * bevelSegments: , // number of bevel layers + * + * extrudePath: // curve to extrude shape along + * frames: // containing arrays of tangents, normals, binormals + * + * UVGenerator: // object that provides UV generator functions + * + * } + */ + + // ExtrudeGeometry + + function ExtrudeGeometry( shapes, options ) { + + Geometry.call( this ); + + this.type = 'ExtrudeGeometry'; + + this.parameters = { + shapes: shapes, + options: options + }; + + this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) ); + this.mergeVertices(); + + } + + ExtrudeGeometry.prototype = Object.create( Geometry.prototype ); + ExtrudeGeometry.prototype.constructor = ExtrudeGeometry; + + // ExtrudeBufferGeometry + + function ExtrudeBufferGeometry( shapes, options ) { + + if ( typeof ( shapes ) === "undefined" ) { + + return; + + } + + BufferGeometry.call( this ); + + this.type = 'ExtrudeBufferGeometry'; + + shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; + + this.addShapeList( shapes, options ); + + this.computeVertexNormals(); + + // can't really use automatic vertex normals + // as then front and back sides get smoothed too + // should do separate smoothing just for sides + + //this.computeVertexNormals(); + + //console.log( "took", ( Date.now() - startTime ) ); + + } + + ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry; + + ExtrudeBufferGeometry.prototype.getArrays = function () { + + var positionAttribute = this.getAttribute( "position" ); + var verticesArray = positionAttribute ? Array.prototype.slice.call( positionAttribute.array ) : []; + + var uvAttribute = this.getAttribute( "uv" ); + var uvArray = uvAttribute ? Array.prototype.slice.call( uvAttribute.array ) : []; + + var IndexAttribute = this.index; + var indicesArray = IndexAttribute ? Array.prototype.slice.call( IndexAttribute.array ) : []; + + return { + position: verticesArray, + uv: uvArray, + index: indicesArray + }; + + }; + + ExtrudeBufferGeometry.prototype.addShapeList = function ( shapes, options ) { + + var sl = shapes.length; + options.arrays = this.getArrays(); + + for ( var s = 0; s < sl; s ++ ) { + + var shape = shapes[ s ]; + this.addShape( shape, options ); + + } + + this.setIndex( options.arrays.index ); + this.addAttribute( 'position', new Float32BufferAttribute( options.arrays.position, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( options.arrays.uv, 2 ) ); + + }; + + ExtrudeBufferGeometry.prototype.addShape = function ( shape, options ) { + + var arrays = options.arrays ? options.arrays : this.getArrays(); + var verticesArray = arrays.position; + var indicesArray = arrays.index; + var uvArray = arrays.uv; + + var placeholder = []; + + + var amount = options.amount !== undefined ? options.amount : 100; + + var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; // 10 + var bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; // 8 + var bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; + + var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; // false + + var curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; + + var steps = options.steps !== undefined ? options.steps : 1; + + var extrudePath = options.extrudePath; + var extrudePts, extrudeByPath = false; + + // Use default WorldUVGenerator if no UV generators are specified. + var uvgen = options.UVGenerator !== undefined ? options.UVGenerator : ExtrudeGeometry.WorldUVGenerator; + + var splineTube, binormal, normal, position2; + if ( extrudePath ) { + + extrudePts = extrudePath.getSpacedPoints( steps ); + + extrudeByPath = true; + bevelEnabled = false; // bevels not supported for path extrusion + + // SETUP TNB variables + + // TODO1 - have a .isClosed in spline? + + splineTube = options.frames !== undefined ? options.frames : extrudePath.computeFrenetFrames( steps, false ); + + // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); + + binormal = new Vector3(); + normal = new Vector3(); + position2 = new Vector3(); + + } + + // Safeguards if bevels are not enabled + + if ( ! bevelEnabled ) { + + bevelSegments = 0; + bevelThickness = 0; + bevelSize = 0; + + } + + // Variables initialization + + var ahole, h, hl; // looping of holes + var scope = this; + + var shapePoints = shape.extractPoints( curveSegments ); + + var vertices = shapePoints.shape; + var holes = shapePoints.holes; + + var reverse = ! ShapeUtils.isClockWise( vertices ); + + if ( reverse ) { + + vertices = vertices.reverse(); + + // Maybe we should also check if holes are in the opposite direction, just to be safe ... + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + if ( ShapeUtils.isClockWise( ahole ) ) { + + holes[ h ] = ahole.reverse(); + + } + + } + + } + + + var faces = ShapeUtils.triangulateShape( vertices, holes ); + + /* Vertices */ + + var contour = vertices; // vertices has all points but contour has only points of circumference + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + vertices = vertices.concat( ahole ); + + } + + + function scalePt2( pt, vec, size ) { + + if ( ! vec ) console.error( "THREE.ExtrudeGeometry: vec does not exist" ); + + return vec.clone().multiplyScalar( size ).add( pt ); + + } + + var b, bs, t, z, + vert, vlen = vertices.length, + face, flen = faces.length; + + + // Find directions for point movement + + + function getBevelVec( inPt, inPrev, inNext ) { + + // computes for inPt the corresponding point inPt' on a new contour + // shifted by 1 unit (length of normalized vector) to the left + // if we walk along contour clockwise, this new contour is outside the old one + // + // inPt' is the intersection of the two lines parallel to the two + // adjacent edges of inPt at a distance of 1 unit on the left side. + + var v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt + + // good reading for geometry algorithms (here: line-line intersection) + // http://geomalgorithms.com/a05-_intersect-1.html + + var v_prev_x = inPt.x - inPrev.x, + v_prev_y = inPt.y - inPrev.y; + var v_next_x = inNext.x - inPt.x, + v_next_y = inNext.y - inPt.y; + + var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); + + // check for collinear edges + var collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + if ( Math.abs( collinear0 ) > Number.EPSILON ) { + + // not collinear + + // length of vectors for normalizing + + var v_prev_len = Math.sqrt( v_prev_lensq ); + var v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); + + // shift adjacent points by unit vectors to the left + + var ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); + var ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); + + var ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); + var ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); + + // scaling factor for v_prev to intersection point + + var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - + ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / + ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + // vector from inPt to intersection point + + v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); + v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); + + // Don't normalize!, otherwise sharp corners become ugly + // but prevent crazy spikes + var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); + if ( v_trans_lensq <= 2 ) { + + return new Vector2( v_trans_x, v_trans_y ); + + } else { + + shrink_by = Math.sqrt( v_trans_lensq / 2 ); + + } + + } else { + + // handle special case of collinear edges + + var direction_eq = false; // assumes: opposite + if ( v_prev_x > Number.EPSILON ) { + + if ( v_next_x > Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( v_prev_x < - Number.EPSILON ) { + + if ( v_next_x < - Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { + + direction_eq = true; + + } + + } + + } + + if ( direction_eq ) { + + // console.log("Warning: lines are a straight sequence"); + v_trans_x = - v_prev_y; + v_trans_y = v_prev_x; + shrink_by = Math.sqrt( v_prev_lensq ); + + } else { + + // console.log("Warning: lines are a straight spike"); + v_trans_x = v_prev_x; + v_trans_y = v_prev_y; + shrink_by = Math.sqrt( v_prev_lensq / 2 ); + + } + + } + + return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); + + } + + + var contourMovements = []; + + for ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + // console.log('i,j,k', i, j , k) + + contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); + + } + + var holesMovements = [], + oneHoleMovements, verticesMovements = contourMovements.concat(); + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + oneHoleMovements = []; + + for ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) j = 0; + if ( k === il ) k = 0; + + // (j)---(i)---(k) + oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); + + } + + holesMovements.push( oneHoleMovements ); + verticesMovements = verticesMovements.concat( oneHoleMovements ); + + } + + + // Loop bevelSegments, 1 for the front, 1 for the back + + for ( b = 0; b < bevelSegments; b ++ ) { + + //for ( b = bevelSegments; b > 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ); + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + } + + } + + bs = bevelSize; + + // Back facing vertices + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, 0 ); + + } else { + + // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); + + normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + // Add stepped vertices... + // Including front facing vertices + + var s; + + for ( s = 1; s <= steps; s ++ ) { + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, amount / steps * s ); + + } else { + + // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); + + normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + } + + + // Add bevel segments planes + + //for ( b = 1; b <= bevelSegments; b ++ ) { + for ( b = bevelSegments - 1; b >= 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ); + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + v( vert.x, vert.y, amount + z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, amount + z ); + + } else { + + v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); + + } + + } + + } + + } + + /* Faces */ + + // Top and bottom faces + + buildLidFaces(); + + // Sides faces + + buildSideFaces(); + + + ///// Internal functions + + function buildLidFaces() { + + var start = verticesArray.length / 3; + + if ( bevelEnabled ) { + + var layer = 0; // steps + 1 + var offset = vlen * layer; + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); + + } + + layer = steps + bevelSegments * 2; + offset = vlen * layer; + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); + + } + + } else { + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ], face[ 1 ], face[ 0 ] ); + + } + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); + + } + + } + + scope.addGroup( start, verticesArray.length / 3 - start, options.material !== undefined ? options.material : 0 ); + + } + + // Create faces for the z-sides of the shape + + function buildSideFaces() { + + var start = verticesArray.length / 3; + var layeroffset = 0; + sidewalls( contour, layeroffset ); + layeroffset += contour.length; + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + sidewalls( ahole, layeroffset ); + + //, true + layeroffset += ahole.length; + + } + + + scope.addGroup( start, verticesArray.length / 3 - start, options.extrudeMaterial !== undefined ? options.extrudeMaterial : 1 ); + + + } + + function sidewalls( contour, layeroffset ) { + + var j, k; + i = contour.length; + + while ( -- i >= 0 ) { + + j = i; + k = i - 1; + if ( k < 0 ) k = contour.length - 1; + + //console.log('b', i,j, i-1, k,vertices.length); + + var s = 0, + sl = steps + bevelSegments * 2; + + for ( s = 0; s < sl; s ++ ) { + + var slen1 = vlen * s; + var slen2 = vlen * ( s + 1 ); + + var a = layeroffset + j + slen1, + b = layeroffset + k + slen1, + c = layeroffset + k + slen2, + d = layeroffset + j + slen2; + + f4( a, b, c, d ); + + } + + } + + } + + function v( x, y, z ) { + + placeholder.push( x ); + placeholder.push( y ); + placeholder.push( z ); + + } + + + function f3( a, b, c ) { + + addVertex( a ); + addVertex( b ); + addVertex( c ); + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + + } + + function f4( a, b, c, d ) { + + addVertex( a ); + addVertex( b ); + addVertex( d ); + + addVertex( b ); + addVertex( c ); + addVertex( d ); + + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 3 ] ); + + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + addUV( uvs[ 3 ] ); + + } + + function addVertex( index ) { + + indicesArray.push( verticesArray.length / 3 ); + verticesArray.push( placeholder[ index * 3 + 0 ] ); + verticesArray.push( placeholder[ index * 3 + 1 ] ); + verticesArray.push( placeholder[ index * 3 + 2 ] ); + + } + + + function addUV( vector2 ) { + + uvArray.push( vector2.x ); + uvArray.push( vector2.y ); + + } + + if ( ! options.arrays ) { + + this.setIndex( indicesArray ); + this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); + + } + + }; + + ExtrudeGeometry.WorldUVGenerator = { + + generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + + return [ + new Vector2( a_x, a_y ), + new Vector2( b_x, b_y ), + new Vector2( c_x, c_y ) + ]; + + }, + + generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var a_z = vertices[ indexA * 3 + 2 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var b_z = vertices[ indexB * 3 + 2 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + var c_z = vertices[ indexC * 3 + 2 ]; + var d_x = vertices[ indexD * 3 ]; + var d_y = vertices[ indexD * 3 + 1 ]; + var d_z = vertices[ indexD * 3 + 2 ]; + + if ( Math.abs( a_y - b_y ) < 0.01 ) { + + return [ + new Vector2( a_x, 1 - a_z ), + new Vector2( b_x, 1 - b_z ), + new Vector2( c_x, 1 - c_z ), + new Vector2( d_x, 1 - d_z ) + ]; + + } else { + + return [ + new Vector2( a_y, 1 - a_z ), + new Vector2( b_y, 1 - b_z ), + new Vector2( c_y, 1 - c_z ), + new Vector2( d_y, 1 - d_z ) + ]; + + } + + } + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author alteredq / http://alteredqualia.com/ + * + * Text = 3D Text + * + * parameters = { + * font: , // font + * + * size: , // size of the text + * height: , // thickness to extrude text + * curveSegments: , // number of points on the curves + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into text bevel goes + * bevelSize: // how far from text outline is bevel + * } + */ + + // TextGeometry + + function TextGeometry( text, parameters ) { + + Geometry.call( this ); + + this.type = 'TextGeometry'; + + this.parameters = { + text: text, + parameters: parameters + }; + + this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); + this.mergeVertices(); + + } + + TextGeometry.prototype = Object.create( Geometry.prototype ); + TextGeometry.prototype.constructor = TextGeometry; + + // TextBufferGeometry + + function TextBufferGeometry( text, parameters ) { + + parameters = parameters || {}; + + var font = parameters.font; + + if ( ! ( font && font.isFont ) ) { + + console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); + return new Geometry(); + + } + + var shapes = font.generateShapes( text, parameters.size, parameters.curveSegments ); + + // translate parameters to ExtrudeGeometry API + + parameters.amount = parameters.height !== undefined ? parameters.height : 50; + + // defaults + + if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; + if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; + if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; + + ExtrudeBufferGeometry.call( this, shapes, parameters ); + + this.type = 'TextBufferGeometry'; + + } + + TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); + TextBufferGeometry.prototype.constructor = TextBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + */ + + // SphereGeometry + + function SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'SphereGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + SphereGeometry.prototype = Object.create( Geometry.prototype ); + SphereGeometry.prototype.constructor = SphereGeometry; + + // SphereBufferGeometry + + function SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'SphereBufferGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + + widthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 ); + heightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 ); + + phiStart = phiStart !== undefined ? phiStart : 0; + phiLength = phiLength !== undefined ? phiLength : Math.PI * 2; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI; + + var thetaEnd = thetaStart + thetaLength; + + var ix, iy; + + var index = 0; + var grid = []; + + var vertex = new Vector3(); + var normal = new Vector3(); + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy <= heightSegments; iy ++ ) { + + var verticesRow = []; + + var v = iy / heightSegments; + + for ( ix = 0; ix <= widthSegments; ix ++ ) { + + var u = ix / widthSegments; + + // vertex + + vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); + vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.set( vertex.x, vertex.y, vertex.z ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, 1 - v ); + + verticesRow.push( index ++ ); + + } + + grid.push( verticesRow ); + + } + + // indices + + for ( iy = 0; iy < heightSegments; iy ++ ) { + + for ( ix = 0; ix < widthSegments; ix ++ ) { + + var a = grid[ iy ][ ix + 1 ]; + var b = grid[ iy ][ ix ]; + var c = grid[ iy + 1 ][ ix ]; + var d = grid[ iy + 1 ][ ix + 1 ]; + + if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); + if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + SphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + SphereBufferGeometry.prototype.constructor = SphereBufferGeometry; + + /** + * @author Kaleb Murphy + * @author Mugen87 / https://github.com/Mugen87 + */ + + // RingGeometry + + function RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'RingGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + RingGeometry.prototype = Object.create( Geometry.prototype ); + RingGeometry.prototype.constructor = RingGeometry; + + // RingBufferGeometry + + function RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'RingBufferGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + innerRadius = innerRadius || 0.5; + outerRadius = outerRadius || 1; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8; + phiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // some helper variables + + var segment; + var radius = innerRadius; + var radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); + var vertex = new Vector3(); + var uv = new Vector2(); + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= phiSegments; j ++ ) { + + for ( i = 0; i <= thetaSegments; i ++ ) { + + // values are generate from the inside of the ring to the outside + + segment = thetaStart + i / thetaSegments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uv + + uv.x = ( vertex.x / outerRadius + 1 ) / 2; + uv.y = ( vertex.y / outerRadius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // increase the radius for next row of vertices + + radius += radiusStep; + + } + + // indices + + for ( j = 0; j < phiSegments; j ++ ) { + + var thetaSegmentLevel = j * ( thetaSegments + 1 ); + + for ( i = 0; i < thetaSegments; i ++ ) { + + segment = i + thetaSegmentLevel; + + var a = segment; + var b = segment + thetaSegments + 1; + var c = segment + thetaSegments + 2; + var d = segment + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + RingBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + RingBufferGeometry.prototype.constructor = RingBufferGeometry; + + /** + * @author astrodud / http://astrodud.isgreat.org/ + * @author zz85 / https://github.com/zz85 + * @author bhouston / http://clara.io + * @author Mugen87 / https://github.com/Mugen87 + */ + + // LatheGeometry + + function LatheGeometry( points, segments, phiStart, phiLength ) { + + Geometry.call( this ); + + this.type = 'LatheGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + this.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) ); + this.mergeVertices(); + + } + + LatheGeometry.prototype = Object.create( Geometry.prototype ); + LatheGeometry.prototype.constructor = LatheGeometry; + + // LatheBufferGeometry + + function LatheBufferGeometry( points, segments, phiStart, phiLength ) { + + BufferGeometry.call( this ); + + this.type = 'LatheBufferGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + segments = Math.floor( segments ) || 12; + phiStart = phiStart || 0; + phiLength = phiLength || Math.PI * 2; + + // clamp phiLength so it's in range of [ 0, 2PI ] + + phiLength = _Math.clamp( phiLength, 0, Math.PI * 2 ); + + + // buffers + + var indices = []; + var vertices = []; + var uvs = []; + + // helper variables + + var base; + var inverseSegments = 1.0 / segments; + var vertex = new Vector3(); + var uv = new Vector2(); + var i, j; + + // generate vertices and uvs + + for ( i = 0; i <= segments; i ++ ) { + + var phi = phiStart + i * inverseSegments * phiLength; + + var sin = Math.sin( phi ); + var cos = Math.cos( phi ); + + for ( j = 0; j <= ( points.length - 1 ); j ++ ) { + + // vertex + + vertex.x = points[ j ].x * sin; + vertex.y = points[ j ].y; + vertex.z = points[ j ].x * cos; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // uv + + uv.x = i / segments; + uv.y = j / ( points.length - 1 ); + + uvs.push( uv.x, uv.y ); + + + } + + } + + // indices + + for ( i = 0; i < segments; i ++ ) { + + for ( j = 0; j < ( points.length - 1 ); j ++ ) { + + base = j + i * points.length; + + var a = base; + var b = base + points.length; + var c = base + points.length + 1; + var d = base + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // generate normals + + this.computeVertexNormals(); + + // if the geometry is closed, we need to average the normals along the seam. + // because the corresponding vertices are identical (but still have different UVs). + + if ( phiLength === Math.PI * 2 ) { + + var normals = this.attributes.normal.array; + var n1 = new Vector3(); + var n2 = new Vector3(); + var n = new Vector3(); + + // this is the buffer offset for the last line of vertices + + base = segments * points.length * 3; + + for ( i = 0, j = 0; i < points.length; i ++, j += 3 ) { + + // select the normal of the vertex in the first line + + n1.x = normals[ j + 0 ]; + n1.y = normals[ j + 1 ]; + n1.z = normals[ j + 2 ]; + + // select the normal of the vertex in the last line + + n2.x = normals[ base + j + 0 ]; + n2.y = normals[ base + j + 1 ]; + n2.z = normals[ base + j + 2 ]; + + // average normals + + n.addVectors( n1, n2 ).normalize(); + + // assign the new values to both normals + + normals[ j + 0 ] = normals[ base + j + 0 ] = n.x; + normals[ j + 1 ] = normals[ base + j + 1 ] = n.y; + normals[ j + 2 ] = normals[ base + j + 2 ] = n.z; + + } + + } + + } + + LatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + LatheBufferGeometry.prototype.constructor = LatheBufferGeometry; + + /** + * @author jonobr1 / http://jonobr1.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // ShapeGeometry + + function ShapeGeometry( shapes, curveSegments ) { + + Geometry.call( this ); + + this.type = 'ShapeGeometry'; + + if ( typeof curveSegments === 'object' ) { + + console.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' ); + + curveSegments = curveSegments.curveSegments; + + } + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + this.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) ); + this.mergeVertices(); + + } + + ShapeGeometry.prototype = Object.create( Geometry.prototype ); + ShapeGeometry.prototype.constructor = ShapeGeometry; + + ShapeGeometry.prototype.toJSON = function () { + + var data = Geometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON( shapes, data ); + + }; + + // ShapeBufferGeometry + + function ShapeBufferGeometry( shapes, curveSegments ) { + + BufferGeometry.call( this ); + + this.type = 'ShapeBufferGeometry'; + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + curveSegments = curveSegments || 12; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var groupStart = 0; + var groupCount = 0; + + // allow single and array values for "shapes" parameter + + if ( Array.isArray( shapes ) === false ) { + + addShape( shapes ); + + } else { + + for ( var i = 0; i < shapes.length; i ++ ) { + + addShape( shapes[ i ] ); + + this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support + + groupStart += groupCount; + groupCount = 0; + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + + // helper functions + + function addShape( shape ) { + + var i, l, shapeHole; + + var indexOffset = vertices.length / 3; + var points = shape.extractPoints( curveSegments ); + + var shapeVertices = points.shape; + var shapeHoles = points.holes; + + // check direction of vertices + + if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { + + shapeVertices = shapeVertices.reverse(); + + // also check if holes are in the opposite direction + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + + if ( ShapeUtils.isClockWise( shapeHole ) === true ) { + + shapeHoles[ i ] = shapeHole.reverse(); + + } + + } + + } + + var faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); + + // join vertices of inner and outer paths to a single array + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + shapeVertices = shapeVertices.concat( shapeHole ); + + } + + // vertices, normals, uvs + + for ( i = 0, l = shapeVertices.length; i < l; i ++ ) { + + var vertex = shapeVertices[ i ]; + + vertices.push( vertex.x, vertex.y, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( vertex.x, vertex.y ); // world uvs + + } + + // incides + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var a = face[ 0 ] + indexOffset; + var b = face[ 1 ] + indexOffset; + var c = face[ 2 ] + indexOffset; + + indices.push( a, b, c ); + groupCount += 3; + + } + + } + + } + + ShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry; + + ShapeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON( shapes, data ); + + }; + + // + + function toJSON( shapes, data ) { + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + return data; + + } + + /** + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + function EdgesGeometry( geometry, thresholdAngle ) { + + BufferGeometry.call( this ); + + this.type = 'EdgesGeometry'; + + this.parameters = { + thresholdAngle: thresholdAngle + }; + + thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; + + // buffer + + var vertices = []; + + // helper variables + + var thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle ); + var edge = [ 0, 0 ], edges = {}, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + + // prepare source geometry + + var geometry2; + + if ( geometry.isBufferGeometry ) { + + geometry2 = new Geometry(); + geometry2.fromBufferGeometry( geometry ); + + } else { + + geometry2 = geometry.clone(); + + } + + geometry2.mergeVertices(); + geometry2.computeFaceNormals(); + + var sourceVertices = geometry2.vertices; + var faces = geometry2.faces; + + // now create a data structure where each entry represents an edge with its adjoining faces + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined }; + + } else { + + edges[ key ].face2 = i; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + var e = edges[ key ]; + + // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree. + + if ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) { + + var vertex = sourceVertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = sourceVertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + EdgesGeometry.prototype = Object.create( BufferGeometry.prototype ); + EdgesGeometry.prototype.constructor = EdgesGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // CylinderGeometry + + function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CylinderGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CylinderGeometry.prototype = Object.create( Geometry.prototype ); + CylinderGeometry.prototype.constructor = CylinderGeometry; + + // CylinderBufferGeometry + + function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CylinderBufferGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + var scope = this; + + radiusTop = radiusTop !== undefined ? radiusTop : 1; + radiusBottom = radiusBottom !== undefined ? radiusBottom : 1; + height = height || 1; + + radialSegments = Math.floor( radialSegments ) || 8; + heightSegments = Math.floor( heightSegments ) || 1; + + openEnded = openEnded !== undefined ? openEnded : false; + thetaStart = thetaStart !== undefined ? thetaStart : 0.0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var index = 0; + var indexArray = []; + var halfHeight = height / 2; + var groupStart = 0; + + // generate geometry + + generateTorso(); + + if ( openEnded === false ) { + + if ( radiusTop > 0 ) generateCap( true ); + if ( radiusBottom > 0 ) generateCap( false ); + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function generateTorso() { + + var x, y; + var normal = new Vector3(); + var vertex = new Vector3(); + + var groupCount = 0; + + // this will be used to calculate the normal + var slope = ( radiusBottom - radiusTop ) / height; + + // generate vertices, normals and uvs + + for ( y = 0; y <= heightSegments; y ++ ) { + + var indexRow = []; + + var v = y / heightSegments; + + // calculate the radius of the current row + + var radius = v * ( radiusBottom - radiusTop ) + radiusTop; + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + + var theta = u * thetaLength + thetaStart; + + var sinTheta = Math.sin( theta ); + var cosTheta = Math.cos( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = - v * height + halfHeight; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.set( sinTheta, slope, cosTheta ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, 1 - v ); + + // save index of vertex in respective row + + indexRow.push( index ++ ); + + } + + // now save vertices of the row in our index array + + indexArray.push( indexRow ); + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + for ( y = 0; y < heightSegments; y ++ ) { + + // we use the index array to access the correct indices + + var a = indexArray[ y ][ x ]; + var b = indexArray[ y + 1 ][ x ]; + var c = indexArray[ y + 1 ][ x + 1 ]; + var d = indexArray[ y ][ x + 1 ]; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // update group counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, 0 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + function generateCap( top ) { + + var x, centerIndexStart, centerIndexEnd; + + var uv = new Vector2(); + var vertex = new Vector3(); + + var groupCount = 0; + + var radius = ( top === true ) ? radiusTop : radiusBottom; + var sign = ( top === true ) ? 1 : - 1; + + // save the index of the first center vertex + centerIndexStart = index; + + // first we generate the center vertex data of the cap. + // because the geometry needs one set of uvs per face, + // we must generate a center vertex per face/segment + + for ( x = 1; x <= radialSegments; x ++ ) { + + // vertex + + vertices.push( 0, halfHeight * sign, 0 ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uvs.push( 0.5, 0.5 ); + + // increase index + + index ++; + + } + + // save the index of the last center vertex + + centerIndexEnd = index; + + // now we generate the surrounding vertices, normals and uvs + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + var theta = u * thetaLength + thetaStart; + + var cosTheta = Math.cos( theta ); + var sinTheta = Math.sin( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = halfHeight * sign; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uv.x = ( cosTheta * 0.5 ) + 0.5; + uv.y = ( sinTheta * 0.5 * sign ) + 0.5; + uvs.push( uv.x, uv.y ); + + // increase index + + index ++; + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + var c = centerIndexStart + x; + var i = centerIndexEnd + x; + + if ( top === true ) { + + // face top + + indices.push( i, i + 1, c ); + + } else { + + // face bottom + + indices.push( i + 1, i, c ); + + } + + groupCount += 3; + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + } + + CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry; + + /** + * @author abelnation / http://github.com/abelnation + */ + + // ConeGeometry + + function ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeGeometry.prototype = Object.create( CylinderGeometry.prototype ); + ConeGeometry.prototype.constructor = ConeGeometry; + + // ConeBufferGeometry + + function ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeBufferGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype ); + ConeBufferGeometry.prototype.constructor = ConeBufferGeometry; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + * @author hughes + */ + + // CircleGeometry + + function CircleGeometry( radius, segments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CircleGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CircleGeometry.prototype = Object.create( Geometry.prototype ); + CircleGeometry.prototype.constructor = CircleGeometry; + + // CircleBufferGeometry + + function CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CircleBufferGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + segments = segments !== undefined ? Math.max( 3, segments ) : 8; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, s; + var vertex = new Vector3(); + var uv = new Vector2(); + + // center point + + vertices.push( 0, 0, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( 0.5, 0.5 ); + + for ( s = 0, i = 3; s <= segments; s ++, i += 3 ) { + + var segment = thetaStart + s / segments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uvs + + uv.x = ( vertices[ i ] / radius + 1 ) / 2; + uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // indices + + for ( i = 1; i <= segments; i ++ ) { + + indices.push( i, i + 1, 0 ); + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + CircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CircleBufferGeometry.prototype.constructor = CircleBufferGeometry; + + + + var Geometries = Object.freeze({ + WireframeGeometry: WireframeGeometry, + ParametricGeometry: ParametricGeometry, + ParametricBufferGeometry: ParametricBufferGeometry, + TetrahedronGeometry: TetrahedronGeometry, + TetrahedronBufferGeometry: TetrahedronBufferGeometry, + OctahedronGeometry: OctahedronGeometry, + OctahedronBufferGeometry: OctahedronBufferGeometry, + IcosahedronGeometry: IcosahedronGeometry, + IcosahedronBufferGeometry: IcosahedronBufferGeometry, + DodecahedronGeometry: DodecahedronGeometry, + DodecahedronBufferGeometry: DodecahedronBufferGeometry, + PolyhedronGeometry: PolyhedronGeometry, + PolyhedronBufferGeometry: PolyhedronBufferGeometry, + TubeGeometry: TubeGeometry, + TubeBufferGeometry: TubeBufferGeometry, + TorusKnotGeometry: TorusKnotGeometry, + TorusKnotBufferGeometry: TorusKnotBufferGeometry, + TorusGeometry: TorusGeometry, + TorusBufferGeometry: TorusBufferGeometry, + TextGeometry: TextGeometry, + TextBufferGeometry: TextBufferGeometry, + SphereGeometry: SphereGeometry, + SphereBufferGeometry: SphereBufferGeometry, + RingGeometry: RingGeometry, + RingBufferGeometry: RingBufferGeometry, + PlaneGeometry: PlaneGeometry, + PlaneBufferGeometry: PlaneBufferGeometry, + LatheGeometry: LatheGeometry, + LatheBufferGeometry: LatheBufferGeometry, + ShapeGeometry: ShapeGeometry, + ShapeBufferGeometry: ShapeBufferGeometry, + ExtrudeGeometry: ExtrudeGeometry, + ExtrudeBufferGeometry: ExtrudeBufferGeometry, + EdgesGeometry: EdgesGeometry, + ConeGeometry: ConeGeometry, + ConeBufferGeometry: ConeBufferGeometry, + CylinderGeometry: CylinderGeometry, + CylinderBufferGeometry: CylinderBufferGeometry, + CircleGeometry: CircleGeometry, + CircleBufferGeometry: CircleBufferGeometry, + BoxGeometry: BoxGeometry, + BoxBufferGeometry: BoxBufferGeometry + }); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * parameters = { + * color: , + * opacity: + * } + */ + + function ShadowMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShadowMaterial'; + + this.color = new Color( 0x000000 ); + this.opacity = 1.0; + + this.lights = true; + this.transparent = true; + + this.setValues( parameters ); + + } + + ShadowMaterial.prototype = Object.create( Material.prototype ); + ShadowMaterial.prototype.constructor = ShadowMaterial; + + ShadowMaterial.prototype.isShadowMaterial = true; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function RawShaderMaterial( parameters ) { + + ShaderMaterial.call( this, parameters ); + + this.type = 'RawShaderMaterial'; + + } + + RawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype ); + RawShaderMaterial.prototype.constructor = RawShaderMaterial; + + RawShaderMaterial.prototype.isRawShaderMaterial = true; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: , + * roughness: , + * metalness: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * roughnessMap: new THREE.Texture( ), + * + * metalnessMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * envMapIntensity: + * + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshStandardMaterial( parameters ) { + + Material.call( this ); + + this.defines = { 'STANDARD': '' }; + + this.type = 'MeshStandardMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.roughness = 0.5; + this.metalness = 0.5; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.roughnessMap = null; + + this.metalnessMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.envMapIntensity = 1.0; + + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshStandardMaterial.prototype = Object.create( Material.prototype ); + MeshStandardMaterial.prototype.constructor = MeshStandardMaterial; + + MeshStandardMaterial.prototype.isMeshStandardMaterial = true; + + MeshStandardMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.defines = { 'STANDARD': '' }; + + this.color.copy( source.color ); + this.roughness = source.roughness; + this.metalness = source.metalness; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.roughnessMap = source.roughnessMap; + + this.metalnessMap = source.metalnessMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapIntensity = source.envMapIntensity; + + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * reflectivity: + * } + */ + + function MeshPhysicalMaterial( parameters ) { + + MeshStandardMaterial.call( this ); + + this.defines = { 'PHYSICAL': '' }; + + this.type = 'MeshPhysicalMaterial'; + + this.reflectivity = 0.5; // maps to F0 = 0.04 + + this.clearCoat = 0.0; + this.clearCoatRoughness = 0.0; + + this.setValues( parameters ); + + } + + MeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype ); + MeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial; + + MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; + + MeshPhysicalMaterial.prototype.copy = function ( source ) { + + MeshStandardMaterial.prototype.copy.call( this, source ); + + this.defines = { 'PHYSICAL': '' }; + + this.reflectivity = source.reflectivity; + + this.clearCoat = source.clearCoat; + this.clearCoatRoughness = source.clearCoatRoughness; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * specular: , + * shininess: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshPhongMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshPhongMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.specular = new Color( 0x111111 ); + this.shininess = 30; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshPhongMaterial.prototype = Object.create( Material.prototype ); + MeshPhongMaterial.prototype.constructor = MeshPhongMaterial; + + MeshPhongMaterial.prototype.isMeshPhongMaterial = true; + + MeshPhongMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.specular.copy( source.specular ); + this.shininess = source.shininess; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author takahirox / http://github.com/takahirox + * + * parameters = { + * gradientMap: new THREE.Texture( ) + * } + */ + + function MeshToonMaterial( parameters ) { + + MeshPhongMaterial.call( this ); + + this.defines = { 'TOON': '' }; + + this.type = 'MeshToonMaterial'; + + this.gradientMap = null; + + this.setValues( parameters ); + + } + + MeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype ); + MeshToonMaterial.prototype.constructor = MeshToonMaterial; + + MeshToonMaterial.prototype.isMeshToonMaterial = true; + + MeshToonMaterial.prototype.copy = function ( source ) { + + MeshPhongMaterial.prototype.copy.call( this, source ); + + this.gradientMap = source.gradientMap; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * opacity: , + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshNormalMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshNormalMaterial'; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + this.lights = false; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshNormalMaterial.prototype = Object.create( Material.prototype ); + MeshNormalMaterial.prototype.constructor = MeshNormalMaterial; + + MeshNormalMaterial.prototype.isMeshNormalMaterial = true; + + MeshNormalMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshLambertMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshLambertMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshLambertMaterial.prototype = Object.create( Material.prototype ); + MeshLambertMaterial.prototype.constructor = MeshLambertMaterial; + + MeshLambertMaterial.prototype.isMeshLambertMaterial = true; + + MeshLambertMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * + * scale: , + * dashSize: , + * gapSize: + * } + */ + + function LineDashedMaterial( parameters ) { + + LineBasicMaterial.call( this ); + + this.type = 'LineDashedMaterial'; + + this.scale = 1; + this.dashSize = 3; + this.gapSize = 1; + + this.setValues( parameters ); + + } + + LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype ); + LineDashedMaterial.prototype.constructor = LineDashedMaterial; + + LineDashedMaterial.prototype.isLineDashedMaterial = true; + + LineDashedMaterial.prototype.copy = function ( source ) { + + LineBasicMaterial.prototype.copy.call( this, source ); + + this.scale = source.scale; + this.dashSize = source.dashSize; + this.gapSize = source.gapSize; + + return this; + + }; + + + + var Materials = Object.freeze({ + ShadowMaterial: ShadowMaterial, + SpriteMaterial: SpriteMaterial, + RawShaderMaterial: RawShaderMaterial, + ShaderMaterial: ShaderMaterial, + PointsMaterial: PointsMaterial, + MeshPhysicalMaterial: MeshPhysicalMaterial, + MeshStandardMaterial: MeshStandardMaterial, + MeshPhongMaterial: MeshPhongMaterial, + MeshToonMaterial: MeshToonMaterial, + MeshNormalMaterial: MeshNormalMaterial, + MeshLambertMaterial: MeshLambertMaterial, + MeshDepthMaterial: MeshDepthMaterial, + MeshDistanceMaterial: MeshDistanceMaterial, + MeshBasicMaterial: MeshBasicMaterial, + LineDashedMaterial: LineDashedMaterial, + LineBasicMaterial: LineBasicMaterial, + Material: Material + }); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var Cache = { + + enabled: false, + + files: {}, + + add: function ( key, file ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Adding key:', key ); + + this.files[ key ] = file; + + }, + + get: function ( key ) { + + if ( this.enabled === false ) return; + + // console.log( 'THREE.Cache', 'Checking key:', key ); + + return this.files[ key ]; + + }, + + remove: function ( key ) { + + delete this.files[ key ]; + + }, + + clear: function () { + + this.files = {}; + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LoadingManager( onLoad, onProgress, onError ) { + + var scope = this; + + var isLoading = false; + var itemsLoaded = 0; + var itemsTotal = 0; + var urlModifier = undefined; + + this.onStart = undefined; + this.onLoad = onLoad; + this.onProgress = onProgress; + this.onError = onError; + + this.itemStart = function ( url ) { + + itemsTotal ++; + + if ( isLoading === false ) { + + if ( scope.onStart !== undefined ) { + + scope.onStart( url, itemsLoaded, itemsTotal ); + + } + + } + + isLoading = true; + + }; + + this.itemEnd = function ( url ) { + + itemsLoaded ++; + + if ( scope.onProgress !== undefined ) { + + scope.onProgress( url, itemsLoaded, itemsTotal ); + + } + + if ( itemsLoaded === itemsTotal ) { + + isLoading = false; + + if ( scope.onLoad !== undefined ) { + + scope.onLoad(); + + } + + } + + }; + + this.itemError = function ( url ) { + + if ( scope.onError !== undefined ) { + + scope.onError( url ); + + } + + }; + + this.resolveURL = function ( url ) { + + if ( urlModifier ) { + + return urlModifier( url ); + + } + + return url; + + }; + + this.setURLModifier = function ( transform ) { + + urlModifier = transform; + return this; + + }; + + } + + var DefaultLoadingManager = new LoadingManager(); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var loading = {}; + + function FileLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( FileLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + // Check if request is duplicate + + if ( loading[ url ] !== undefined ) { + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + return; + + } + + // Check for data: URI + var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; + var dataUriRegexResult = url.match( dataUriRegex ); + + // Safari can not handle Data URIs through XMLHttpRequest so process manually + if ( dataUriRegexResult ) { + + var mimeType = dataUriRegexResult[ 1 ]; + var isBase64 = !! dataUriRegexResult[ 2 ]; + var data = dataUriRegexResult[ 3 ]; + + data = window.decodeURIComponent( data ); + + if ( isBase64 ) data = window.atob( data ); + + try { + + var response; + var responseType = ( this.responseType || '' ).toLowerCase(); + + switch ( responseType ) { + + case 'arraybuffer': + case 'blob': + + var view = new Uint8Array( data.length ); + + for ( var i = 0; i < data.length; i ++ ) { + + view[ i ] = data.charCodeAt( i ); + + } + + if ( responseType === 'blob' ) { + + response = new Blob( [ view.buffer ], { type: mimeType } ); + + } else { + + response = view.buffer; + + } + + break; + + case 'document': + + var parser = new DOMParser(); + response = parser.parseFromString( data, mimeType ); + + break; + + case 'json': + + response = JSON.parse( data ); + + break; + + default: // 'text' or other + + response = data; + + break; + + } + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + window.setTimeout( function () { + + if ( onLoad ) onLoad( response ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + } catch ( error ) { + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + window.setTimeout( function () { + + if ( onError ) onError( error ); + + scope.manager.itemEnd( url ); + scope.manager.itemError( url ); + + }, 0 ); + + } + + } else { + + // Initialise array for duplicate requests + + loading[ url ] = []; + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + var request = new XMLHttpRequest(); + + request.open( 'GET', url, true ); + + request.addEventListener( 'load', function ( event ) { + + var response = this.response; + + Cache.add( url, response ); + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + if ( this.status === 200 ) { + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onLoad ) callback.onLoad( response ); + + } + + scope.manager.itemEnd( url ); + + } else if ( this.status === 0 ) { + + // Some browsers return HTTP Status 0 when using non-http protocol + // e.g. 'file://' or 'data://'. Handle as success. + + console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onLoad ) callback.onLoad( response ); + + } + + scope.manager.itemEnd( url ); + + } else { + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemEnd( url ); + scope.manager.itemError( url ); + + } + + }, false ); + + request.addEventListener( 'progress', function ( event ) { + + var callbacks = loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onProgress ) callback.onProgress( event ); + + } + + }, false ); + + request.addEventListener( 'error', function ( event ) { + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) callback.onError( event ); + + } + + scope.manager.itemEnd( url ); + scope.manager.itemError( url ); + + }, false ); + + if ( this.responseType !== undefined ) request.responseType = this.responseType; + if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; + + if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); + + for ( var header in this.requestHeader ) { + + request.setRequestHeader( header, this.requestHeader[ header ] ); + + } + + request.send( null ); + + } + + scope.manager.itemStart( url ); + + return request; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + }, + + setResponseType: function ( value ) { + + this.responseType = value; + return this; + + }, + + setWithCredentials: function ( value ) { + + this.withCredentials = value; + return this; + + }, + + setMimeType: function ( value ) { + + this.mimeType = value; + return this; + + }, + + setRequestHeader: function ( value ) { + + this.requestHeader = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * Abstract Base class to block based textures loader (dds, pvr, ...) + */ + + function CompressedTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + // override in sub classes + this._parser = null; + + } + + Object.assign( CompressedTextureLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var images = []; + + var texture = new CompressedTexture(); + texture.image = images; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + + function loadTexture( i ) { + + loader.load( url[ i ], function ( buffer ) { + + var texDatas = scope._parser( buffer, true ); + + images[ i ] = { + width: texDatas.width, + height: texDatas.height, + format: texDatas.format, + mipmaps: texDatas.mipmaps + }; + + loaded += 1; + + if ( loaded === 6 ) { + + if ( texDatas.mipmapCount === 1 ) + texture.minFilter = LinearFilter; + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, onProgress, onError ); + + } + + if ( Array.isArray( url ) ) { + + var loaded = 0; + + for ( var i = 0, il = url.length; i < il; ++ i ) { + + loadTexture( i ); + + } + + } else { + + // compressed cubemap texture stored in a single DDS file + + loader.load( url, function ( buffer ) { + + var texDatas = scope._parser( buffer, true ); + + if ( texDatas.isCubemap ) { + + var faces = texDatas.mipmaps.length / texDatas.mipmapCount; + + for ( var f = 0; f < faces; f ++ ) { + + images[ f ] = { mipmaps: [] }; + + for ( var i = 0; i < texDatas.mipmapCount; i ++ ) { + + images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); + images[ f ].format = texDatas.format; + images[ f ].width = texDatas.width; + images[ f ].height = texDatas.height; + + } + + } + + } else { + + texture.image.width = texDatas.width; + texture.image.height = texDatas.height; + texture.mipmaps = texDatas.mipmaps; + + } + + if ( texDatas.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + }, onProgress, onError ); + + } + + return texture; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author Nikos M. / https://github.com/foo123/ + * + * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) + */ + + function DataTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + // override in sub classes + this._parser = null; + + } + + Object.assign( DataTextureLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var texture = new DataTexture(); + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + + loader.load( url, function ( buffer ) { + + var texData = scope._parser( buffer ); + + if ( ! texData ) return; + + if ( undefined !== texData.image ) { + + texture.image = texData.image; + + } else if ( undefined !== texData.data ) { + + texture.image.width = texData.width; + texture.image.height = texData.height; + texture.image.data = texData.data; + + } + + texture.wrapS = undefined !== texData.wrapS ? texData.wrapS : ClampToEdgeWrapping; + texture.wrapT = undefined !== texData.wrapT ? texData.wrapT : ClampToEdgeWrapping; + + texture.magFilter = undefined !== texData.magFilter ? texData.magFilter : LinearFilter; + texture.minFilter = undefined !== texData.minFilter ? texData.minFilter : LinearMipMapLinearFilter; + + texture.anisotropy = undefined !== texData.anisotropy ? texData.anisotropy : 1; + + if ( undefined !== texData.format ) { + + texture.format = texData.format; + + } + if ( undefined !== texData.type ) { + + texture.type = texData.type; + + } + + if ( undefined !== texData.mipmaps ) { + + texture.mipmaps = texData.mipmaps; + + } + + if ( 1 === texData.mipmapCount ) { + + texture.minFilter = LinearFilter; + + } + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture, texData ); + + }, onProgress, onError ); + + + return texture; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ImageLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( ImageLoader.prototype, { + + crossOrigin: 'Anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' ); + + image.addEventListener( 'load', function () { + + Cache.add( url, this ); + + if ( onLoad ) onLoad( this ); + + scope.manager.itemEnd( url ); + + }, false ); + + /* + image.addEventListener( 'progress', function ( event ) { + + if ( onProgress ) onProgress( event ); + + }, false ); + */ + + image.addEventListener( 'error', function ( event ) { + + if ( onError ) onError( event ); + + scope.manager.itemEnd( url ); + scope.manager.itemError( url ); + + }, false ); + + if ( url.substr( 0, 5 ) !== 'data:' ) { + + if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; + + } + + scope.manager.itemStart( url ); + + image.src = url; + + return image; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CubeTextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( CubeTextureLoader.prototype, { + + crossOrigin: 'Anonymous', + + load: function ( urls, onLoad, onProgress, onError ) { + + var texture = new CubeTexture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + var loaded = 0; + + function loadTexture( i ) { + + loader.load( urls[ i ], function ( image ) { + + texture.images[ i ] = image; + + loaded ++; + + if ( loaded === 6 ) { + + texture.needsUpdate = true; + + if ( onLoad ) onLoad( texture ); + + } + + }, undefined, onError ); + + } + + for ( var i = 0; i < urls.length; ++ i ) { + + loadTexture( i ); + + } + + return texture; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function TextureLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( TextureLoader.prototype, { + + crossOrigin: 'Anonymous', + + load: function ( url, onLoad, onProgress, onError ) { + + var texture = new Texture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + loader.load( url, function ( image ) { + + texture.image = image; + + // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. + var isJPEG = url.search( /\.(jpg|jpeg)$/ ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; + + texture.format = isJPEG ? RGBFormat : RGBAFormat; + texture.needsUpdate = true; + + if ( onLoad !== undefined ) { + + onLoad( texture ); + + } + + }, onProgress, onError ); + + return texture; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Extensible curve object + * + * Some common of curve methods: + * .getPoint( t, optionalTarget ), .getTangent( t ) + * .getPointAt( u, optionalTarget ), .getTangentAt( u ) + * .getPoints(), .getSpacedPoints() + * .getLength() + * .updateArcLengths() + * + * This following curves inherit from THREE.Curve: + * + * -- 2D curves -- + * THREE.ArcCurve + * THREE.CubicBezierCurve + * THREE.EllipseCurve + * THREE.LineCurve + * THREE.QuadraticBezierCurve + * THREE.SplineCurve + * + * -- 3D curves -- + * THREE.CatmullRomCurve3 + * THREE.CubicBezierCurve3 + * THREE.LineCurve3 + * THREE.QuadraticBezierCurve3 + * + * A series of curves can be represented as a THREE.CurvePath. + * + **/ + + /************************************************************** + * Abstract Curve base class + **************************************************************/ + + function Curve() { + + this.type = 'Curve'; + + this.arcLengthDivisions = 200; + + } + + Object.assign( Curve.prototype, { + + // Virtual base class method to overwrite and implement in subclasses + // - t [0 .. 1] + + getPoint: function ( /* t, optionalTarget */ ) { + + console.warn( 'THREE.Curve: .getPoint() not implemented.' ); + return null; + + }, + + // Get point at relative position in curve according to arc length + // - u [0 .. 1] + + getPointAt: function ( u, optionalTarget ) { + + var t = this.getUtoTmapping( u ); + return this.getPoint( t, optionalTarget ); + + }, + + // Get sequence of points using getPoint( t ) + + getPoints: function ( divisions ) { + + if ( divisions === undefined ) divisions = 5; + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPoint( d / divisions ) ); + + } + + return points; + + }, + + // Get sequence of points using getPointAt( u ) + + getSpacedPoints: function ( divisions ) { + + if ( divisions === undefined ) divisions = 5; + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPointAt( d / divisions ) ); + + } + + return points; + + }, + + // Get total curve arc length + + getLength: function () { + + var lengths = this.getLengths(); + return lengths[ lengths.length - 1 ]; + + }, + + // Get list of cumulative segment lengths + + getLengths: function ( divisions ) { + + if ( divisions === undefined ) divisions = this.arcLengthDivisions; + + if ( this.cacheArcLengths && + ( this.cacheArcLengths.length === divisions + 1 ) && + ! this.needsUpdate ) { + + return this.cacheArcLengths; + + } + + this.needsUpdate = false; + + var cache = []; + var current, last = this.getPoint( 0 ); + var p, sum = 0; + + cache.push( 0 ); + + for ( p = 1; p <= divisions; p ++ ) { + + current = this.getPoint( p / divisions ); + sum += current.distanceTo( last ); + cache.push( sum ); + last = current; + + } + + this.cacheArcLengths = cache; + + return cache; // { sums: cache, sum: sum }; Sum is in the last element. + + }, + + updateArcLengths: function () { + + this.needsUpdate = true; + this.getLengths(); + + }, + + // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant + + getUtoTmapping: function ( u, distance ) { + + var arcLengths = this.getLengths(); + + var i = 0, il = arcLengths.length; + + var targetArcLength; // The targeted u distance value to get + + if ( distance ) { + + targetArcLength = distance; + + } else { + + targetArcLength = u * arcLengths[ il - 1 ]; + + } + + // binary search for the index with largest value smaller than target u distance + + var low = 0, high = il - 1, comparison; + + while ( low <= high ) { + + i = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats + + comparison = arcLengths[ i ] - targetArcLength; + + if ( comparison < 0 ) { + + low = i + 1; + + } else if ( comparison > 0 ) { + + high = i - 1; + + } else { + + high = i; + break; + + // DONE + + } + + } + + i = high; + + if ( arcLengths[ i ] === targetArcLength ) { + + return i / ( il - 1 ); + + } + + // we could get finer grain at lengths, or use simple interpolation between two points + + var lengthBefore = arcLengths[ i ]; + var lengthAfter = arcLengths[ i + 1 ]; + + var segmentLength = lengthAfter - lengthBefore; + + // determine where we are between the 'before' and 'after' points + + var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; + + // add that fractional amount to t + + var t = ( i + segmentFraction ) / ( il - 1 ); + + return t; + + }, + + // Returns a unit vector tangent at t + // In case any sub curve does not implement its tangent derivation, + // 2 points a small delta apart will be used to find its gradient + // which seems to give a reasonable approximation + + getTangent: function ( t ) { + + var delta = 0.0001; + var t1 = t - delta; + var t2 = t + delta; + + // Capping in case of danger + + if ( t1 < 0 ) t1 = 0; + if ( t2 > 1 ) t2 = 1; + + var pt1 = this.getPoint( t1 ); + var pt2 = this.getPoint( t2 ); + + var vec = pt2.clone().sub( pt1 ); + return vec.normalize(); + + }, + + getTangentAt: function ( u ) { + + var t = this.getUtoTmapping( u ); + return this.getTangent( t ); + + }, + + computeFrenetFrames: function ( segments, closed ) { + + // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf + + var normal = new Vector3(); + + var tangents = []; + var normals = []; + var binormals = []; + + var vec = new Vector3(); + var mat = new Matrix4(); + + var i, u, theta; + + // compute the tangent vectors for each segment on the curve + + for ( i = 0; i <= segments; i ++ ) { + + u = i / segments; + + tangents[ i ] = this.getTangentAt( u ); + tangents[ i ].normalize(); + + } + + // select an initial normal vector perpendicular to the first tangent vector, + // and in the direction of the minimum tangent xyz component + + normals[ 0 ] = new Vector3(); + binormals[ 0 ] = new Vector3(); + var min = Number.MAX_VALUE; + var tx = Math.abs( tangents[ 0 ].x ); + var ty = Math.abs( tangents[ 0 ].y ); + var tz = Math.abs( tangents[ 0 ].z ); + + if ( tx <= min ) { + + min = tx; + normal.set( 1, 0, 0 ); + + } + + if ( ty <= min ) { + + min = ty; + normal.set( 0, 1, 0 ); + + } + + if ( tz <= min ) { + + normal.set( 0, 0, 1 ); + + } + + vec.crossVectors( tangents[ 0 ], normal ).normalize(); + + normals[ 0 ].crossVectors( tangents[ 0 ], vec ); + binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); + + + // compute the slowly-varying normal and binormal vectors for each segment on the curve + + for ( i = 1; i <= segments; i ++ ) { + + normals[ i ] = normals[ i - 1 ].clone(); + + binormals[ i ] = binormals[ i - 1 ].clone(); + + vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); + + if ( vec.length() > Number.EPSILON ) { + + vec.normalize(); + + theta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors + + normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); + + } + + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same + + if ( closed === true ) { + + theta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) ); + theta /= segments; + + if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { + + theta = - theta; + + } + + for ( i = 1; i <= segments; i ++ ) { + + // twist a little... + normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + } + + return { + tangents: tangents, + normals: normals, + binormals: binormals + }; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.arcLengthDivisions = source.arcLengthDivisions; + + return this; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Curve', + generator: 'Curve.toJSON' + } + }; + + data.arcLengthDivisions = this.arcLengthDivisions; + data.type = this.type; + + return data; + + }, + + fromJSON: function ( json ) { + + this.arcLengthDivisions = json.arcLengthDivisions; + + return this; + + } + + } ); + + function EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + Curve.call( this ); + + this.type = 'EllipseCurve'; + + this.aX = aX || 0; + this.aY = aY || 0; + + this.xRadius = xRadius || 1; + this.yRadius = yRadius || 1; + + this.aStartAngle = aStartAngle || 0; + this.aEndAngle = aEndAngle || 2 * Math.PI; + + this.aClockwise = aClockwise || false; + + this.aRotation = aRotation || 0; + + } + + EllipseCurve.prototype = Object.create( Curve.prototype ); + EllipseCurve.prototype.constructor = EllipseCurve; + + EllipseCurve.prototype.isEllipseCurve = true; + + EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var twoPi = Math.PI * 2; + var deltaAngle = this.aEndAngle - this.aStartAngle; + var samePoints = Math.abs( deltaAngle ) < Number.EPSILON; + + // ensures that deltaAngle is 0 .. 2 PI + while ( deltaAngle < 0 ) deltaAngle += twoPi; + while ( deltaAngle > twoPi ) deltaAngle -= twoPi; + + if ( deltaAngle < Number.EPSILON ) { + + if ( samePoints ) { + + deltaAngle = 0; + + } else { + + deltaAngle = twoPi; + + } + + } + + if ( this.aClockwise === true && ! samePoints ) { + + if ( deltaAngle === twoPi ) { + + deltaAngle = - twoPi; + + } else { + + deltaAngle = deltaAngle - twoPi; + + } + + } + + var angle = this.aStartAngle + t * deltaAngle; + var x = this.aX + this.xRadius * Math.cos( angle ); + var y = this.aY + this.yRadius * Math.sin( angle ); + + if ( this.aRotation !== 0 ) { + + var cos = Math.cos( this.aRotation ); + var sin = Math.sin( this.aRotation ); + + var tx = x - this.aX; + var ty = y - this.aY; + + // Rotate the point about the center of the ellipse. + x = tx * cos - ty * sin + this.aX; + y = tx * sin + ty * cos + this.aY; + + } + + return point.set( x, y ); + + }; + + EllipseCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.aX = source.aX; + this.aY = source.aY; + + this.xRadius = source.xRadius; + this.yRadius = source.yRadius; + + this.aStartAngle = source.aStartAngle; + this.aEndAngle = source.aEndAngle; + + this.aClockwise = source.aClockwise; + + this.aRotation = source.aRotation; + + return this; + + }; + + + EllipseCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.aX = this.aX; + data.aY = this.aY; + + data.xRadius = this.xRadius; + data.yRadius = this.yRadius; + + data.aStartAngle = this.aStartAngle; + data.aEndAngle = this.aEndAngle; + + data.aClockwise = this.aClockwise; + + data.aRotation = this.aRotation; + + return data; + + }; + + EllipseCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.aX = json.aX; + this.aY = json.aY; + + this.xRadius = json.xRadius; + this.yRadius = json.yRadius; + + this.aStartAngle = json.aStartAngle; + this.aEndAngle = json.aEndAngle; + + this.aClockwise = json.aClockwise; + + this.aRotation = json.aRotation; + + return this; + + }; + + function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + this.type = 'ArcCurve'; + + } + + ArcCurve.prototype = Object.create( EllipseCurve.prototype ); + ArcCurve.prototype.constructor = ArcCurve; + + ArcCurve.prototype.isArcCurve = true; + + /** + * @author zz85 https://github.com/zz85 + * + * Centripetal CatmullRom Curve - which is useful for avoiding + * cusps and self-intersections in non-uniform catmull rom curves. + * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf + * + * curve.type accepts centripetal(default), chordal and catmullrom + * curve.tension is used for catmullrom which defaults to 0.5 + */ + + + /* + Based on an optimized c++ solution in + - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ + - http://ideone.com/NoEbVM + + This CubicPoly class could be used for reusing some variables and calculations, + but for three.js curve use, it could be possible inlined and flatten into a single function call + which can be placed in CurveUtils. + */ + + function CubicPoly() { + + var c0 = 0, c1 = 0, c2 = 0, c3 = 0; + + /* + * Compute coefficients for a cubic polynomial + * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 + * such that + * p(0) = x0, p(1) = x1 + * and + * p'(0) = t0, p'(1) = t1. + */ + function init( x0, x1, t0, t1 ) { + + c0 = x0; + c1 = t0; + c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1; + c3 = 2 * x0 - 2 * x1 + t0 + t1; + + } + + return { + + initCatmullRom: function ( x0, x1, x2, x3, tension ) { + + init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); + + }, + + initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { + + // compute tangents when parameterized in [t1,t2] + var t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; + var t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; + + // rescale tangents for parametrization in [0,1] + t1 *= dt1; + t2 *= dt1; + + init( x1, x2, t1, t2 ); + + }, + + calc: function ( t ) { + + var t2 = t * t; + var t3 = t2 * t; + return c0 + c1 * t + c2 * t2 + c3 * t3; + + } + + }; + + } + + // + + var tmp = new Vector3(); + var px = new CubicPoly(); + var py = new CubicPoly(); + var pz = new CubicPoly(); + + function CatmullRomCurve3( points, closed, curveType, tension ) { + + Curve.call( this ); + + this.type = 'CatmullRomCurve3'; + + this.points = points || []; + this.closed = closed || false; + this.curveType = curveType || 'centripetal'; + this.tension = tension || 0.5; + + } + + CatmullRomCurve3.prototype = Object.create( Curve.prototype ); + CatmullRomCurve3.prototype.constructor = CatmullRomCurve3; + + CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; + + CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var points = this.points; + var l = points.length; + + var p = ( l - ( this.closed ? 0 : 1 ) ) * t; + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + if ( this.closed ) { + + intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length; + + } else if ( weight === 0 && intPoint === l - 1 ) { + + intPoint = l - 2; + weight = 1; + + } + + var p0, p1, p2, p3; // 4 points + + if ( this.closed || intPoint > 0 ) { + + p0 = points[ ( intPoint - 1 ) % l ]; + + } else { + + // extrapolate first point + tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); + p0 = tmp; + + } + + p1 = points[ intPoint % l ]; + p2 = points[ ( intPoint + 1 ) % l ]; + + if ( this.closed || intPoint + 2 < l ) { + + p3 = points[ ( intPoint + 2 ) % l ]; + + } else { + + // extrapolate last point + tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); + p3 = tmp; + + } + + if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { + + // init Centripetal / Chordal Catmull-Rom + var pow = this.curveType === 'chordal' ? 0.5 : 0.25; + var dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); + var dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); + var dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); + + // safety check for repeated points + if ( dt1 < 1e-4 ) dt1 = 1.0; + if ( dt0 < 1e-4 ) dt0 = dt1; + if ( dt2 < 1e-4 ) dt2 = dt1; + + px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); + py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); + pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); + + } else if ( this.curveType === 'catmullrom' ) { + + px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); + py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); + pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); + + } + + point.set( + px.calc( weight ), + py.calc( weight ), + pz.calc( weight ) + ); + + return point; + + }; + + CatmullRomCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + this.closed = source.closed; + this.curveType = source.curveType; + this.tension = source.tension; + + return this; + + }; + + CatmullRomCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + data.closed = this.closed; + data.curveType = this.curveType; + data.tension = this.tension; + + return data; + + }; + + CatmullRomCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector3().fromArray( point ) ); + + } + + this.closed = json.closed; + this.curveType = json.curveType; + this.tension = json.tension; + + return this; + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Bezier Curves formulas obtained from + * http://en.wikipedia.org/wiki/Bézier_curve + */ + + function CatmullRom( t, p0, p1, p2, p3 ) { + + var v0 = ( p2 - p0 ) * 0.5; + var v1 = ( p3 - p1 ) * 0.5; + var t2 = t * t; + var t3 = t * t2; + return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; + + } + + // + + function QuadraticBezierP0( t, p ) { + + var k = 1 - t; + return k * k * p; + + } + + function QuadraticBezierP1( t, p ) { + + return 2 * ( 1 - t ) * t * p; + + } + + function QuadraticBezierP2( t, p ) { + + return t * t * p; + + } + + function QuadraticBezier( t, p0, p1, p2 ) { + + return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + + QuadraticBezierP2( t, p2 ); + + } + + // + + function CubicBezierP0( t, p ) { + + var k = 1 - t; + return k * k * k * p; + + } + + function CubicBezierP1( t, p ) { + + var k = 1 - t; + return 3 * k * k * t * p; + + } + + function CubicBezierP2( t, p ) { + + return 3 * ( 1 - t ) * t * t * p; + + } + + function CubicBezierP3( t, p ) { + + return t * t * t * p; + + } + + function CubicBezier( t, p0, p1, p2, p3 ) { + + return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + + CubicBezierP3( t, p3 ); + + } + + function CubicBezierCurve( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + this.v3 = v3 || new Vector2(); + + } + + CubicBezierCurve.prototype = Object.create( Curve.prototype ); + CubicBezierCurve.prototype.constructor = CubicBezierCurve; + + CubicBezierCurve.prototype.isCubicBezierCurve = true; + + CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) + ); + + return point; + + }; + + CubicBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function CubicBezierCurve3( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + this.v3 = v3 || new Vector3(); + + } + + CubicBezierCurve3.prototype = Object.create( Curve.prototype ); + CubicBezierCurve3.prototype.constructor = CubicBezierCurve3; + + CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; + + CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), + CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) + ); + + return point; + + }; + + CubicBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function LineCurve( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve'; + + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + LineCurve.prototype = Object.create( Curve.prototype ); + LineCurve.prototype.constructor = LineCurve; + + LineCurve.prototype.isLineCurve = true; + + LineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve.prototype.getTangent = function ( /* t */ ) { + + var tangent = this.v2.clone().sub( this.v1 ); + + return tangent.normalize(); + + }; + + LineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function LineCurve3( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve3'; + + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + LineCurve3.prototype = Object.create( Curve.prototype ); + LineCurve3.prototype.constructor = LineCurve3; + + LineCurve3.prototype.isLineCurve3 = true; + + LineCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + QuadraticBezierCurve.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve; + + QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; + + QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ) + ); + + return point; + + }; + + QuadraticBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve3( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + QuadraticBezierCurve3.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3; + + QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; + + QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ), + QuadraticBezier( t, v0.z, v1.z, v2.z ) + ); + + return point; + + }; + + QuadraticBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function SplineCurve( points /* array of Vector2 */ ) { + + Curve.call( this ); + + this.type = 'SplineCurve'; + + this.points = points || []; + + } + + SplineCurve.prototype = Object.create( Curve.prototype ); + SplineCurve.prototype.constructor = SplineCurve; + + SplineCurve.prototype.isSplineCurve = true; + + SplineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var points = this.points; + var p = ( points.length - 1 ) * t; + + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; + var p1 = points[ intPoint ]; + var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; + var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; + + point.set( + CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), + CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) + ); + + return point; + + }; + + SplineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + return this; + + }; + + SplineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + return data; + + }; + + SplineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector2().fromArray( point ) ); + + } + + return this; + + }; + + + + var Curves = Object.freeze({ + ArcCurve: ArcCurve, + CatmullRomCurve3: CatmullRomCurve3, + CubicBezierCurve: CubicBezierCurve, + CubicBezierCurve3: CubicBezierCurve3, + EllipseCurve: EllipseCurve, + LineCurve: LineCurve, + LineCurve3: LineCurve3, + QuadraticBezierCurve: QuadraticBezierCurve, + QuadraticBezierCurve3: QuadraticBezierCurve3, + SplineCurve: SplineCurve + }); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + **/ + + /************************************************************** + * Curved Path - a curve path is simply a array of connected + * curves, but retains the api of a curve + **************************************************************/ + + function CurvePath() { + + Curve.call( this ); + + this.type = 'CurvePath'; + + this.curves = []; + this.autoClose = false; // Automatically closes the path + + } + + CurvePath.prototype = Object.assign( Object.create( Curve.prototype ), { + + constructor: CurvePath, + + add: function ( curve ) { + + this.curves.push( curve ); + + }, + + closePath: function () { + + // Add a line curve if start and end of lines are not connected + var startPoint = this.curves[ 0 ].getPoint( 0 ); + var endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); + + if ( ! startPoint.equals( endPoint ) ) { + + this.curves.push( new LineCurve( endPoint, startPoint ) ); + + } + + }, + + // To get accurate point with reference to + // entire path distance at time t, + // following has to be done: + + // 1. Length of each sub path have to be known + // 2. Locate and identify type of curve + // 3. Get t for the curve + // 4. Return curve.getPointAt(t') + + getPoint: function ( t ) { + + var d = t * this.getLength(); + var curveLengths = this.getCurveLengths(); + var i = 0; + + // To think about boundaries points. + + while ( i < curveLengths.length ) { + + if ( curveLengths[ i ] >= d ) { + + var diff = curveLengths[ i ] - d; + var curve = this.curves[ i ]; + + var segmentLength = curve.getLength(); + var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; + + return curve.getPointAt( u ); + + } + + i ++; + + } + + return null; + + // loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { + + points.push( points[ 0 ] ); + + } + + return points; + + }, + + copy: function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.curves = []; + + for ( var i = 0, l = source.curves.length; i < l; i ++ ) { + + var curve = source.curves[ i ]; + + this.curves.push( curve.clone() ); + + } + + this.autoClose = source.autoClose; + + return this; + + }, + + toJSON: function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.autoClose = this.autoClose; + data.curves = []; + + for ( var i = 0, l = this.curves.length; i < l; i ++ ) { + + var curve = this.curves[ i ]; + data.curves.push( curve.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.autoClose = json.autoClose; + this.curves = []; + + for ( var i = 0, l = json.curves.length; i < l; i ++ ) { + + var curve = json.curves[ i ]; + this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); + + } + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Creates free form 2d path using series of points, lines or curves. + **/ + + function Path( points ) { + + CurvePath.call( this ); + + this.type = 'Path'; + + this.currentPoint = new Vector2(); + + if ( points ) { + + this.setFromPoints( points ); + + } + + } + + Path.prototype = Object.assign( Object.create( CurvePath.prototype ), { + + constructor: Path, + + setFromPoints: function ( points ) { + + this.moveTo( points[ 0 ].x, points[ 0 ].y ); + + for ( var i = 1, l = points.length; i < l; i ++ ) { + + this.lineTo( points[ i ].x, points[ i ].y ); + + } + + }, + + moveTo: function ( x, y ) { + + this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? + + }, + + lineTo: function ( x, y ) { + + var curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); + this.curves.push( curve ); + + this.currentPoint.set( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + var curve = new QuadraticBezierCurve( + this.currentPoint.clone(), + new Vector2( aCPx, aCPy ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + var curve = new CubicBezierCurve( + this.currentPoint.clone(), + new Vector2( aCP1x, aCP1y ), + new Vector2( aCP2x, aCP2y ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + splineThru: function ( pts /*Array of Vector*/ ) { + + var npts = [ this.currentPoint.clone() ].concat( pts ); + + var curve = new SplineCurve( npts ); + this.curves.push( curve ); + + this.currentPoint.copy( pts[ pts.length - 1 ] ); + + }, + + arc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absarc( aX + x0, aY + y0, aRadius, + aStartAngle, aEndAngle, aClockwise ); + + }, + + absarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + }, + + ellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + }, + + absellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + if ( this.curves.length > 0 ) { + + // if a previous curve is present, attempt to join + var firstPoint = curve.getPoint( 0 ); + + if ( ! firstPoint.equals( this.currentPoint ) ) { + + this.lineTo( firstPoint.x, firstPoint.y ); + + } + + } + + this.curves.push( curve ); + + var lastPoint = curve.getPoint( 1 ); + this.currentPoint.copy( lastPoint ); + + }, + + copy: function ( source ) { + + CurvePath.prototype.copy.call( this, source ); + + this.currentPoint.copy( source.currentPoint ); + + return this; + + }, + + toJSON: function () { + + var data = CurvePath.prototype.toJSON.call( this ); + + data.currentPoint = this.currentPoint.toArray(); + + return data; + + }, + + fromJSON: function ( json ) { + + CurvePath.prototype.fromJSON.call( this, json ); + + this.currentPoint.fromArray( json.currentPoint ); + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Defines a 2d shape plane using paths. + **/ + + // STEP 1 Create a path. + // STEP 2 Turn path into shape. + // STEP 3 ExtrudeGeometry takes in Shape/Shapes + // STEP 3a - Extract points from each shape, turn to vertices + // STEP 3b - Triangulate each shape, add faces. + + function Shape( points ) { + + Path.call( this, points ); + + this.uuid = _Math.generateUUID(); + + this.type = 'Shape'; + + this.holes = []; + + } + + Shape.prototype = Object.assign( Object.create( Path.prototype ), { + + constructor: Shape, + + getPointsHoles: function ( divisions ) { + + var holesPts = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + holesPts[ i ] = this.holes[ i ].getPoints( divisions ); + + } + + return holesPts; + + }, + + // get points of shape and holes (keypoints based on segments parameter) + + extractPoints: function ( divisions ) { + + return { + + shape: this.getPoints( divisions ), + holes: this.getPointsHoles( divisions ) + + }; + + }, + + copy: function ( source ) { + + Path.prototype.copy.call( this, source ); + + this.holes = []; + + for ( var i = 0, l = source.holes.length; i < l; i ++ ) { + + var hole = source.holes[ i ]; + + this.holes.push( hole.clone() ); + + } + + return this; + + }, + + toJSON: function () { + + var data = Path.prototype.toJSON.call( this ); + + data.uuid = this.uuid; + data.holes = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + var hole = this.holes[ i ]; + data.holes.push( hole.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Path.prototype.fromJSON.call( this, json ); + + this.uuid = json.uuid; + this.holes = []; + + for ( var i = 0, l = json.holes.length; i < l; i ++ ) { + + var hole = json.holes[ i ]; + this.holes.push( new Path().fromJSON( hole ) ); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Light( color, intensity ) { + + Object3D.call( this ); + + this.type = 'Light'; + + this.color = new Color( color ); + this.intensity = intensity !== undefined ? intensity : 1; + + this.receiveShadow = undefined; + + } + + Light.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Light, + + isLight: true, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.intensity = source.intensity; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.color = this.color.getHex(); + data.object.intensity = this.intensity; + + if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex(); + + if ( this.distance !== undefined ) data.object.distance = this.distance; + if ( this.angle !== undefined ) data.object.angle = this.angle; + if ( this.decay !== undefined ) data.object.decay = this.decay; + if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra; + + if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON(); + + return data; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function HemisphereLight( skyColor, groundColor, intensity ) { + + Light.call( this, skyColor, intensity ); + + this.type = 'HemisphereLight'; + + this.castShadow = undefined; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.groundColor = new Color( groundColor ); + + } + + HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: HemisphereLight, + + isHemisphereLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.groundColor.copy( source.groundColor ); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LightShadow( camera ) { + + this.camera = camera; + + this.bias = 0; + this.radius = 1; + + this.mapSize = new Vector2( 512, 512 ); + + this.map = null; + this.matrix = new Matrix4(); + + } + + Object.assign( LightShadow.prototype, { + + copy: function ( source ) { + + this.camera = source.camera.clone(); + + this.bias = source.bias; + this.radius = source.radius; + + this.mapSize.copy( source.mapSize ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + toJSON: function () { + + var object = {}; + + if ( this.bias !== 0 ) object.bias = this.bias; + if ( this.radius !== 1 ) object.radius = this.radius; + if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray(); + + object.camera = this.camera.toJSON( false ).object; + delete object.camera.matrix; + + return object; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function SpotLightShadow() { + + LightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) ); + + } + + SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: SpotLightShadow, + + isSpotLightShadow: true, + + update: function ( light ) { + + var camera = this.camera; + + var fov = _Math.RAD2DEG * 2 * light.angle; + var aspect = this.mapSize.width / this.mapSize.height; + var far = light.distance || camera.far; + + if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { + + camera.fov = fov; + camera.aspect = aspect; + camera.far = far; + camera.updateProjectionMatrix(); + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function SpotLight( color, intensity, distance, angle, penumbra, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'SpotLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf + return this.intensity * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (17) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf + this.intensity = power / Math.PI; + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; + this.penumbra = ( penumbra !== undefined ) ? penumbra : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new SpotLightShadow(); + + } + + SpotLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: SpotLight, + + isSpotLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.angle = source.angle; + this.penumbra = source.penumbra; + this.decay = source.decay; + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function PointLight( color, intensity, distance, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'PointLight'; + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf + return this.intensity * 4 * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (15) from http://www.frostbite.com/wp-content/uploads/2014/11/course_notes_moving_frostbite_to_pbr.pdf + this.intensity = power / ( 4 * Math.PI ); + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) ); + + } + + PointLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: PointLight, + + isPointLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.decay = source.decay; + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectionalLightShadow( ) { + + LightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) ); + + } + + DirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: DirectionalLightShadow + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function DirectionalLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'DirectionalLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + this.shadow = new DirectionalLightShadow(); + + } + + DirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: DirectionalLight, + + isDirectionalLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AmbientLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'AmbientLight'; + + this.castShadow = undefined; + + } + + AmbientLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: AmbientLight, + + isAmbientLight: true + + } ); + + /** + * @author abelnation / http://github.com/abelnation + */ + + function RectAreaLight( color, intensity, width, height ) { + + Light.call( this, color, intensity ); + + this.type = 'RectAreaLight'; + + this.position.set( 0, 1, 0 ); + this.updateMatrix(); + + this.width = ( width !== undefined ) ? width : 10; + this.height = ( height !== undefined ) ? height : 10; + + // TODO (abelnation): distance/decay + + // TODO (abelnation): update method for RectAreaLight to update transform to lookat target + + // TODO (abelnation): shadows + + } + + // TODO (abelnation): RectAreaLight update when light shape is changed + RectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: RectAreaLight, + + isRectAreaLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.width = source.width; + this.height = source.height; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Light.prototype.toJSON.call( this, meta ); + + data.object.width = this.width; + data.object.height = this.height; + + return data; + + } + + } ); + + /** + * + * A Track that interpolates Strings + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function StringKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + StringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: StringKeyframeTrack, + + ValueTypeName: 'string', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + + InterpolantFactoryMethodSmooth: undefined + + } ); + + /** + * + * A Track of Boolean keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function BooleanKeyframeTrack( name, times, values ) { + + KeyframeTrack.call( this, name, times, values ); + + } + + BooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: BooleanKeyframeTrack, + + ValueTypeName: 'bool', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + InterpolantFactoryMethodSmooth: undefined + + // Note: Actually this track could have a optimized / compressed + // representation of a single value and a custom interpolant that + // computes "firstValue ^ isOdd( index )". + + } ); + + /** + * Abstract base class of interpolants over parametric samples. + * + * The parameter domain is one dimensional, typically the time or a path + * along a curve defined by the data. + * + * The sample values can have any dimensionality and derived classes may + * apply special interpretations to the data. + * + * This class provides the interval seek in a Template Method, deferring + * the actual interpolation to derived classes. + * + * Time complexity is O(1) for linear access crossing at most two points + * and O(log N) for random access, where N is the number of positions. + * + * References: + * + * http://www.oodesign.com/template-method-pattern.html + * + * @author tschw + */ + + function Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + this.parameterPositions = parameterPositions; + this._cachedIndex = 0; + + this.resultBuffer = resultBuffer !== undefined ? + resultBuffer : new sampleValues.constructor( sampleSize ); + this.sampleValues = sampleValues; + this.valueSize = sampleSize; + + } + + Object.assign( Interpolant.prototype, { + + evaluate: function ( t ) { + + var pp = this.parameterPositions, + i1 = this._cachedIndex, + + t1 = pp[ i1 ], + t0 = pp[ i1 - 1 ]; + + validate_interval: { + + seek: { + + var right; + + linear_scan: { + + //- See http://jsperf.com/comparison-to-undefined/3 + //- slower code: + //- + //- if ( t >= t1 || t1 === undefined ) { + forward_scan: if ( ! ( t < t1 ) ) { + + for ( var giveUpAt = i1 + 2; ; ) { + + if ( t1 === undefined ) { + + if ( t < t0 ) break forward_scan; + + // after end + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t, t0 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t0 = t1; + t1 = pp[ ++ i1 ]; + + if ( t < t1 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the right side of the index + right = pp.length; + break linear_scan; + + } + + //- slower code: + //- if ( t < t0 || t0 === undefined ) { + if ( ! ( t >= t0 ) ) { + + // looping? + + var t1global = pp[ 1 ]; + + if ( t < t1global ) { + + i1 = 2; // + 1, using the scan for the details + t0 = t1global; + + } + + // linear reverse scan + + for ( var giveUpAt = i1 - 2; ; ) { + + if ( t0 === undefined ) { + + // before start + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( i1 === giveUpAt ) break; // this loop + + t1 = t0; + t0 = pp[ -- i1 - 1 ]; + + if ( t >= t0 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the left side of the index + right = i1; + i1 = 0; + break linear_scan; + + } + + // the interval is valid + + break validate_interval; + + } // linear scan + + // binary search + + while ( i1 < right ) { + + var mid = ( i1 + right ) >>> 1; + + if ( t < pp[ mid ] ) { + + right = mid; + + } else { + + i1 = mid + 1; + + } + + } + + t1 = pp[ i1 ]; + t0 = pp[ i1 - 1 ]; + + // check boundary cases, again + + if ( t0 === undefined ) { + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( t1 === undefined ) { + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t0, t ); + + } + + } // seek + + this._cachedIndex = i1; + + this.intervalChanged_( i1, t0, t1 ); + + } // validate_interval + + return this.interpolate_( i1, t0, t, t1 ); + + }, + + settings: null, // optional, subclass-specific settings structure + // Note: The indirection allows central control of many interpolants. + + // --- Protected interface + + DefaultSettings_: {}, + + getSettings_: function () { + + return this.settings || this.DefaultSettings_; + + }, + + copySampleValue_: function ( index ) { + + // copies a sample value to the result buffer + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + offset = index * stride; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + }, + + // Template methods for derived classes: + + interpolate_: function ( /* i1, t0, t, t1 */ ) { + + throw new Error( 'call to abstract method' ); + // implementations shall return this.resultBuffer + + }, + + intervalChanged_: function ( /* i1, t0, t1 */ ) { + + // empty + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( Interpolant.prototype, { + + //( 0, t, t0 ), returns this.resultBuffer + beforeStart_: Interpolant.prototype.copySampleValue_, + + //( N-1, tN-1, t ), returns this.resultBuffer + afterEnd_: Interpolant.prototype.copySampleValue_, + + } ); + + /** + * Spherical linear unit quaternion interpolant. + * + * @author tschw + */ + + function QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + QuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: QuaternionLinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset = i1 * stride, + + alpha = ( t - t0 ) / ( t1 - t0 ); + + for ( var end = offset + stride; offset !== end; offset += 4 ) { + + Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); + + } + + return result; + + } + + } ); + + /** + * + * A Track of quaternion keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function QuaternionKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + QuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: QuaternionKeyframeTrack, + + ValueTypeName: 'quaternion', + + // ValueBufferType is inherited + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: undefined // not yet implemented + + } ); + + /** + * + * A Track of keyframe values that represent color. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function ColorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + ColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: ColorKeyframeTrack, + + ValueTypeName: 'color' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + // Note: Very basic implementation and nothing special yet. + // However, this is the place for color space parameterization. + + } ); + + /** + * + * A Track of numeric keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function NumberKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + NumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: NumberKeyframeTrack, + + ValueTypeName: 'number' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * Fast and simple cubic spline interpolant. + * + * It was derived from a Hermitian construction setting the first derivative + * at each sample position to the linear slope between neighboring positions + * over their parameter interval. + * + * @author tschw + */ + + function CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + this._weightPrev = - 0; + this._offsetPrev = - 0; + this._weightNext = - 0; + this._offsetNext = - 0; + + } + + CubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: CubicInterpolant, + + DefaultSettings_: { + + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + + }, + + intervalChanged_: function ( i1, t0, t1 ) { + + var pp = this.parameterPositions, + iPrev = i1 - 2, + iNext = i1 + 1, + + tPrev = pp[ iPrev ], + tNext = pp[ iNext ]; + + if ( tPrev === undefined ) { + + switch ( this.getSettings_().endingStart ) { + + case ZeroSlopeEnding: + + // f'(t0) = 0 + iPrev = i1; + tPrev = 2 * t0 - t1; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iPrev = pp.length - 2; + tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(t0) = 0 a.k.a. Natural Spline + iPrev = i1; + tPrev = t1; + + } + + } + + if ( tNext === undefined ) { + + switch ( this.getSettings_().endingEnd ) { + + case ZeroSlopeEnding: + + // f'(tN) = 0 + iNext = i1; + tNext = 2 * t1 - t0; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iNext = 1; + tNext = t1 + pp[ 1 ] - pp[ 0 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(tN) = 0, a.k.a. Natural Spline + iNext = i1 - 1; + tNext = t0; + + } + + } + + var halfDt = ( t1 - t0 ) * 0.5, + stride = this.valueSize; + + this._weightPrev = halfDt / ( t0 - tPrev ); + this._weightNext = halfDt / ( tNext - t1 ); + this._offsetPrev = iPrev * stride; + this._offsetNext = iNext * stride; + + }, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + o1 = i1 * stride, o0 = o1 - stride, + oP = this._offsetPrev, oN = this._offsetNext, + wP = this._weightPrev, wN = this._weightNext, + + p = ( t - t0 ) / ( t1 - t0 ), + pp = p * p, + ppp = pp * p; + + // evaluate polynomials + + var sP = - wP * ppp + 2 * wP * pp - wP * p; + var s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1; + var s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; + var sN = wN * ppp - wN * pp; + + // combine data linearly + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + sP * values[ oP + i ] + + s0 * values[ o0 + i ] + + s1 * values[ o1 + i ] + + sN * values[ oN + i ]; + + } + + return result; + + } + + } ); + + /** + * @author tschw + */ + + function LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + LinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: LinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset1 = i1 * stride, + offset0 = offset1 - stride, + + weight1 = ( t - t0 ) / ( t1 - t0 ), + weight0 = 1 - weight1; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + values[ offset0 + i ] * weight0 + + values[ offset1 + i ] * weight1; + + } + + return result; + + } + + } ); + + /** + * + * Interpolant that evaluates to the sample value at the position preceeding + * the parameter. + * + * @author tschw + */ + + function DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + DiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: DiscreteInterpolant, + + interpolate_: function ( i1 /*, t0, t, t1 */ ) { + + return this.copySampleValue_( i1 - 1 ); + + } + + } ); + + /** + * @author tschw + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + var AnimationUtils = { + + // same as Array.prototype.slice, but also works on typed arrays + arraySlice: function ( array, from, to ) { + + if ( AnimationUtils.isTypedArray( array ) ) { + + // in ios9 array.subarray(from, undefined) will return empty array + // but array.subarray(from) or array.subarray(from, len) is correct + return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) ); + + } + + return array.slice( from, to ); + + }, + + // converts an array to a specific type + convertArray: function ( array, type, forceClone ) { + + if ( ! array || // let 'undefined' and 'null' pass + ! forceClone && array.constructor === type ) return array; + + if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { + + return new type( array ); // create typed array + + } + + return Array.prototype.slice.call( array ); // create Array + + }, + + isTypedArray: function ( object ) { + + return ArrayBuffer.isView( object ) && + ! ( object instanceof DataView ); + + }, + + // returns an array by which times and values can be sorted + getKeyframeOrder: function ( times ) { + + function compareTime( i, j ) { + + return times[ i ] - times[ j ]; + + } + + var n = times.length; + var result = new Array( n ); + for ( var i = 0; i !== n; ++ i ) result[ i ] = i; + + result.sort( compareTime ); + + return result; + + }, + + // uses the array previously returned by 'getKeyframeOrder' to sort data + sortedArray: function ( values, stride, order ) { + + var nValues = values.length; + var result = new values.constructor( nValues ); + + for ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { + + var srcOffset = order[ i ] * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + result[ dstOffset ++ ] = values[ srcOffset + j ]; + + } + + } + + return result; + + }, + + // function for parsing AOS keyframe formats + flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) { + + var i = 1, key = jsonKeys[ 0 ]; + + while ( key !== undefined && key[ valuePropertyName ] === undefined ) { + + key = jsonKeys[ i ++ ]; + + } + + if ( key === undefined ) return; // no data + + var value = key[ valuePropertyName ]; + if ( value === undefined ) return; // no data + + if ( Array.isArray( value ) ) { + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push.apply( values, value ); // push all elements + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else if ( value.toArray !== undefined ) { + + // ...assume THREE.Math-ish + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + value.toArray( values, values.length ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else { + + // otherwise push as-is + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push( value ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } + + } + + }; + + /** + * + * A timed sequence of keyframes for a specific property. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function KeyframeTrack( name, times, values, interpolation ) { + + if ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); + if ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); + + this.name = name; + + this.times = AnimationUtils.convertArray( times, this.TimeBufferType ); + this.values = AnimationUtils.convertArray( values, this.ValueBufferType ); + + this.setInterpolation( interpolation || this.DefaultInterpolation ); + + this.validate(); + this.optimize(); + + } + + // Static methods: + + Object.assign( KeyframeTrack, { + + // Serialization (in static context, because of constructor invocation + // and automatic invocation of .toJSON): + + parse: function ( json ) { + + if ( json.type === undefined ) { + + throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); + + } + + var trackType = KeyframeTrack._getTrackTypeForValueTypeName( json.type ); + + if ( json.times === undefined ) { + + var times = [], values = []; + + AnimationUtils.flattenJSON( json.keys, times, values, 'value' ); + + json.times = times; + json.values = values; + + } + + // derived classes can define a static parse method + if ( trackType.parse !== undefined ) { + + return trackType.parse( json ); + + } else { + + // by default, we assume a constructor compatible with the base + return new trackType( json.name, json.times, json.values, json.interpolation ); + + } + + }, + + toJSON: function ( track ) { + + var trackType = track.constructor; + + var json; + + // derived classes can define a static toJSON method + if ( trackType.toJSON !== undefined ) { + + json = trackType.toJSON( track ); + + } else { + + // by default, we assume the data can be serialized as-is + json = { + + 'name': track.name, + 'times': AnimationUtils.convertArray( track.times, Array ), + 'values': AnimationUtils.convertArray( track.values, Array ) + + }; + + var interpolation = track.getInterpolation(); + + if ( interpolation !== track.DefaultInterpolation ) { + + json.interpolation = interpolation; + + } + + } + + json.type = track.ValueTypeName; // mandatory + + return json; + + }, + + _getTrackTypeForValueTypeName: function ( typeName ) { + + switch ( typeName.toLowerCase() ) { + + case 'scalar': + case 'double': + case 'float': + case 'number': + case 'integer': + + return NumberKeyframeTrack; + + case 'vector': + case 'vector2': + case 'vector3': + case 'vector4': + + return VectorKeyframeTrack; + + case 'color': + + return ColorKeyframeTrack; + + case 'quaternion': + + return QuaternionKeyframeTrack; + + case 'bool': + case 'boolean': + + return BooleanKeyframeTrack; + + case 'string': + + return StringKeyframeTrack; + + } + + throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); + + } + + } ); + + Object.assign( KeyframeTrack.prototype, { + + constructor: KeyframeTrack, + + TimeBufferType: Float32Array, + + ValueBufferType: Float32Array, + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodDiscrete: function ( result ) { + + return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: function ( result ) { + + return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + setInterpolation: function ( interpolation ) { + + var factoryMethod; + + switch ( interpolation ) { + + case InterpolateDiscrete: + + factoryMethod = this.InterpolantFactoryMethodDiscrete; + + break; + + case InterpolateLinear: + + factoryMethod = this.InterpolantFactoryMethodLinear; + + break; + + case InterpolateSmooth: + + factoryMethod = this.InterpolantFactoryMethodSmooth; + + break; + + } + + if ( factoryMethod === undefined ) { + + var message = "unsupported interpolation for " + + this.ValueTypeName + " keyframe track named " + this.name; + + if ( this.createInterpolant === undefined ) { + + // fall back to default, unless the default itself is messed up + if ( interpolation !== this.DefaultInterpolation ) { + + this.setInterpolation( this.DefaultInterpolation ); + + } else { + + throw new Error( message ); // fatal, in this case + + } + + } + + console.warn( 'THREE.KeyframeTrack:', message ); + return; + + } + + this.createInterpolant = factoryMethod; + + }, + + getInterpolation: function () { + + switch ( this.createInterpolant ) { + + case this.InterpolantFactoryMethodDiscrete: + + return InterpolateDiscrete; + + case this.InterpolantFactoryMethodLinear: + + return InterpolateLinear; + + case this.InterpolantFactoryMethodSmooth: + + return InterpolateSmooth; + + } + + }, + + getValueSize: function () { + + return this.values.length / this.times.length; + + }, + + // move all keyframes either forwards or backwards in time + shift: function ( timeOffset ) { + + if ( timeOffset !== 0.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] += timeOffset; + + } + + } + + return this; + + }, + + // scale all keyframe times by a factor (useful for frame <-> seconds conversions) + scale: function ( timeScale ) { + + if ( timeScale !== 1.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] *= timeScale; + + } + + } + + return this; + + }, + + // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. + // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values + trim: function ( startTime, endTime ) { + + var times = this.times, + nKeys = times.length, + from = 0, + to = nKeys - 1; + + while ( from !== nKeys && times[ from ] < startTime ) { + + ++ from; + + } + + while ( to !== - 1 && times[ to ] > endTime ) { + + -- to; + + } + + ++ to; // inclusive -> exclusive bound + + if ( from !== 0 || to !== nKeys ) { + + // empty tracks are forbidden, so keep at least one keyframe + if ( from >= to ) to = Math.max( to, 1 ), from = to - 1; + + var stride = this.getValueSize(); + this.times = AnimationUtils.arraySlice( times, from, to ); + this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride ); + + } + + return this; + + }, + + // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable + validate: function () { + + var valid = true; + + var valueSize = this.getValueSize(); + if ( valueSize - Math.floor( valueSize ) !== 0 ) { + + console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); + valid = false; + + } + + var times = this.times, + values = this.values, + + nKeys = times.length; + + if ( nKeys === 0 ) { + + console.error( 'THREE.KeyframeTrack: Track is empty.', this ); + valid = false; + + } + + var prevTime = null; + + for ( var i = 0; i !== nKeys; i ++ ) { + + var currTime = times[ i ]; + + if ( typeof currTime === 'number' && isNaN( currTime ) ) { + + console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); + valid = false; + break; + + } + + if ( prevTime !== null && prevTime > currTime ) { + + console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); + valid = false; + break; + + } + + prevTime = currTime; + + } + + if ( values !== undefined ) { + + if ( AnimationUtils.isTypedArray( values ) ) { + + for ( var i = 0, n = values.length; i !== n; ++ i ) { + + var value = values[ i ]; + + if ( isNaN( value ) ) { + + console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); + valid = false; + break; + + } + + } + + } + + } + + return valid; + + }, + + // removes equivalent sequential keys as common in morph target sequences + // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) + optimize: function () { + + var times = this.times, + values = this.values, + stride = this.getValueSize(), + + smoothInterpolation = this.getInterpolation() === InterpolateSmooth, + + writeIndex = 1, + lastIndex = times.length - 1; + + for ( var i = 1; i < lastIndex; ++ i ) { + + var keep = false; + + var time = times[ i ]; + var timeNext = times[ i + 1 ]; + + // remove adjacent keyframes scheduled at the same time + + if ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) { + + if ( ! smoothInterpolation ) { + + // remove unnecessary keyframes same as their neighbors + + var offset = i * stride, + offsetP = offset - stride, + offsetN = offset + stride; + + for ( var j = 0; j !== stride; ++ j ) { + + var value = values[ offset + j ]; + + if ( value !== values[ offsetP + j ] || + value !== values[ offsetN + j ] ) { + + keep = true; + break; + + } + + } + + } else { + + keep = true; + + } + + } + + // in-place compaction + + if ( keep ) { + + if ( i !== writeIndex ) { + + times[ writeIndex ] = times[ i ]; + + var readOffset = i * stride, + writeOffset = writeIndex * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + } + + ++ writeIndex; + + } + + } + + // flush last keyframe (compaction looks ahead) + + if ( lastIndex > 0 ) { + + times[ writeIndex ] = times[ lastIndex ]; + + for ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + ++ writeIndex; + + } + + if ( writeIndex !== times.length ) { + + this.times = AnimationUtils.arraySlice( times, 0, writeIndex ); + this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride ); + + } + + return this; + + } + + } ); + + /** + * + * A Track of vectored keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function VectorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + VectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: VectorKeyframeTrack, + + ValueTypeName: 'vector' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * + * Reusable set of Tracks that represent an animation. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + function AnimationClip( name, duration, tracks ) { + + this.name = name; + this.tracks = tracks; + this.duration = ( duration !== undefined ) ? duration : - 1; + + this.uuid = _Math.generateUUID(); + + // this means it should figure out its duration by scanning the tracks + if ( this.duration < 0 ) { + + this.resetDuration(); + + } + + this.optimize(); + + } + + Object.assign( AnimationClip, { + + parse: function ( json ) { + + var tracks = [], + jsonTracks = json.tracks, + frameTime = 1.0 / ( json.fps || 1.0 ); + + for ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) { + + tracks.push( KeyframeTrack.parse( jsonTracks[ i ] ).scale( frameTime ) ); + + } + + return new AnimationClip( json.name, json.duration, tracks ); + + }, + + toJSON: function ( clip ) { + + var tracks = [], + clipTracks = clip.tracks; + + var json = { + + 'name': clip.name, + 'duration': clip.duration, + 'tracks': tracks + + }; + + for ( var i = 0, n = clipTracks.length; i !== n; ++ i ) { + + tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); + + } + + return json; + + }, + + CreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) { + + var numMorphTargets = morphTargetSequence.length; + var tracks = []; + + for ( var i = 0; i < numMorphTargets; i ++ ) { + + var times = []; + var values = []; + + times.push( + ( i + numMorphTargets - 1 ) % numMorphTargets, + i, + ( i + 1 ) % numMorphTargets ); + + values.push( 0, 1, 0 ); + + var order = AnimationUtils.getKeyframeOrder( times ); + times = AnimationUtils.sortedArray( times, 1, order ); + values = AnimationUtils.sortedArray( values, 1, order ); + + // if there is a key at the first frame, duplicate it as the + // last frame as well for perfect loop. + if ( ! noLoop && times[ 0 ] === 0 ) { + + times.push( numMorphTargets ); + values.push( values[ 0 ] ); + + } + + tracks.push( + new NumberKeyframeTrack( + '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', + times, values + ).scale( 1.0 / fps ) ); + + } + + return new AnimationClip( name, - 1, tracks ); + + }, + + findByName: function ( objectOrClipArray, name ) { + + var clipArray = objectOrClipArray; + + if ( ! Array.isArray( objectOrClipArray ) ) { + + var o = objectOrClipArray; + clipArray = o.geometry && o.geometry.animations || o.animations; + + } + + for ( var i = 0; i < clipArray.length; i ++ ) { + + if ( clipArray[ i ].name === name ) { + + return clipArray[ i ]; + + } + + } + + return null; + + }, + + CreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) { + + var animationToMorphTargets = {}; + + // tested with https://regex101.com/ on trick sequences + // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 + var pattern = /^([\w-]*?)([\d]+)$/; + + // sort morph target names into animation groups based + // patterns like Walk_001, Walk_002, Run_001, Run_002 + for ( var i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = morphTargets[ i ]; + var parts = morphTarget.name.match( pattern ); + + if ( parts && parts.length > 1 ) { + + var name = parts[ 1 ]; + + var animationMorphTargets = animationToMorphTargets[ name ]; + if ( ! animationMorphTargets ) { + + animationToMorphTargets[ name ] = animationMorphTargets = []; + + } + + animationMorphTargets.push( morphTarget ); + + } + + } + + var clips = []; + + for ( var name in animationToMorphTargets ) { + + clips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); + + } + + return clips; + + }, + + // parse the animation.hierarchy format + parseAnimation: function ( animation, bones ) { + + if ( ! animation ) { + + console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); + return null; + + } + + var addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { + + // only return track if there are actually keys. + if ( animationKeys.length !== 0 ) { + + var times = []; + var values = []; + + AnimationUtils.flattenJSON( animationKeys, times, values, propertyName ); + + // empty keys are filtered out, so check again + if ( times.length !== 0 ) { + + destTracks.push( new trackType( trackName, times, values ) ); + + } + + } + + }; + + var tracks = []; + + var clipName = animation.name || 'default'; + // automatic length determination in AnimationClip. + var duration = animation.length || - 1; + var fps = animation.fps || 30; + + var hierarchyTracks = animation.hierarchy || []; + + for ( var h = 0; h < hierarchyTracks.length; h ++ ) { + + var animationKeys = hierarchyTracks[ h ].keys; + + // skip empty tracks + if ( ! animationKeys || animationKeys.length === 0 ) continue; + + // process morph targets + if ( animationKeys[ 0 ].morphTargets ) { + + // figure out all morph targets used in this track + var morphTargetNames = {}; + + for ( var k = 0; k < animationKeys.length; k ++ ) { + + if ( animationKeys[ k ].morphTargets ) { + + for ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { + + morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1; + + } + + } + + } + + // create a track for each morph target with all zero + // morphTargetInfluences except for the keys in which + // the morphTarget is named. + for ( var morphTargetName in morphTargetNames ) { + + var times = []; + var values = []; + + for ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { + + var animationKey = animationKeys[ k ]; + + times.push( animationKey.time ); + values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); + + } + + tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); + + } + + duration = morphTargetNames.length * ( fps || 1.0 ); + + } else { + + // ...assume skeletal animation + + var boneName = '.bones[' + bones[ h ].name + ']'; + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.position', + animationKeys, 'pos', tracks ); + + addNonemptyTrack( + QuaternionKeyframeTrack, boneName + '.quaternion', + animationKeys, 'rot', tracks ); + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.scale', + animationKeys, 'scl', tracks ); + + } + + } + + if ( tracks.length === 0 ) { + + return null; + + } + + var clip = new AnimationClip( clipName, duration, tracks ); + + return clip; + + } + + } ); + + Object.assign( AnimationClip.prototype, { + + resetDuration: function () { + + var tracks = this.tracks, duration = 0; + + for ( var i = 0, n = tracks.length; i !== n; ++ i ) { + + var track = this.tracks[ i ]; + + duration = Math.max( duration, track.times[ track.times.length - 1 ] ); + + } + + this.duration = duration; + + }, + + trim: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].trim( 0, this.duration ); + + } + + return this; + + }, + + optimize: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].optimize(); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function MaterialLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.textures = {}; + + } + + Object.assign( MaterialLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + setTextures: function ( value ) { + + this.textures = value; + + }, + + parse: function ( json ) { + + var textures = this.textures; + + function getTexture( name ) { + + if ( textures[ name ] === undefined ) { + + console.warn( 'THREE.MaterialLoader: Undefined texture', name ); + + } + + return textures[ name ]; + + } + + var material = new Materials[ json.type ](); + + if ( json.uuid !== undefined ) material.uuid = json.uuid; + if ( json.name !== undefined ) material.name = json.name; + if ( json.color !== undefined ) material.color.setHex( json.color ); + if ( json.roughness !== undefined ) material.roughness = json.roughness; + if ( json.metalness !== undefined ) material.metalness = json.metalness; + if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); + if ( json.specular !== undefined ) material.specular.setHex( json.specular ); + if ( json.shininess !== undefined ) material.shininess = json.shininess; + if ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat; + if ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness; + if ( json.uniforms !== undefined ) material.uniforms = json.uniforms; + if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; + if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; + if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; + if ( json.fog !== undefined ) material.fog = json.fog; + if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; + if ( json.blending !== undefined ) material.blending = json.blending; + if ( json.side !== undefined ) material.side = json.side; + if ( json.opacity !== undefined ) material.opacity = json.opacity; + if ( json.transparent !== undefined ) material.transparent = json.transparent; + if ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest; + if ( json.depthTest !== undefined ) material.depthTest = json.depthTest; + if ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite; + if ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite; + if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; + if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth; + if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap; + if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin; + + if ( json.rotation !== undefined ) material.rotation = json.rotation; + + if ( json.linewidth !== 1 ) material.linewidth = json.linewidth; + if ( json.dashSize !== undefined ) material.dashSize = json.dashSize; + if ( json.gapSize !== undefined ) material.gapSize = json.gapSize; + if ( json.scale !== undefined ) material.scale = json.scale; + + if ( json.skinning !== undefined ) material.skinning = json.skinning; + if ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets; + if ( json.dithering !== undefined ) material.dithering = json.dithering; + + if ( json.visible !== undefined ) material.visible = json.visible; + if ( json.userData !== undefined ) material.userData = json.userData; + + // Deprecated + + if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading + + // for PointsMaterial + + if ( json.size !== undefined ) material.size = json.size; + if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; + + // maps + + if ( json.map !== undefined ) material.map = getTexture( json.map ); + + if ( json.alphaMap !== undefined ) { + + material.alphaMap = getTexture( json.alphaMap ); + material.transparent = true; + + } + + if ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap ); + if ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale; + + if ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap ); + if ( json.normalScale !== undefined ) { + + var normalScale = json.normalScale; + + if ( Array.isArray( normalScale ) === false ) { + + // Blender exporter used to export a scalar. See #7459 + + normalScale = [ normalScale, normalScale ]; + + } + + material.normalScale = new Vector2().fromArray( normalScale ); + + } + + if ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap ); + if ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale; + if ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias; + + if ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap ); + if ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap ); + + if ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap ); + if ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity; + + if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap ); + + if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap ); + + if ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity; + + if ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap ); + if ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity; + + if ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap ); + if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity; + + if ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap ); + + return material; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferGeometryLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( BufferGeometryLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var geometry = new BufferGeometry(); + + var index = json.data.index; + + if ( index !== undefined ) { + + var typedArray = new TYPED_ARRAYS[ index.type ]( index.array ); + geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); + + } + + var attributes = json.data.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + + geometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) ); + + } + + var groups = json.data.groups || json.data.drawcalls || json.data.offsets; + + if ( groups !== undefined ) { + + for ( var i = 0, n = groups.length; i !== n; ++ i ) { + + var group = groups[ i ]; + + geometry.addGroup( group.start, group.count, group.materialIndex ); + + } + + } + + var boundingSphere = json.data.boundingSphere; + + if ( boundingSphere !== undefined ) { + + var center = new Vector3(); + + if ( boundingSphere.center !== undefined ) { + + center.fromArray( boundingSphere.center ); + + } + + geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); + + } + + return geometry; + + } + + } ); + + var TYPED_ARRAYS = { + Int8Array: Int8Array, + Uint8Array: Uint8Array, + // Workaround for IE11 pre KB2929437. See #11440 + Uint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array + }; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Loader() { + + this.onLoadStart = function () {}; + this.onLoadProgress = function () {}; + this.onLoadComplete = function () {}; + + } + + Loader.Handlers = { + + handlers: [], + + add: function ( regex, loader ) { + + this.handlers.push( regex, loader ); + + }, + + get: function ( file ) { + + var handlers = this.handlers; + + for ( var i = 0, l = handlers.length; i < l; i += 2 ) { + + var regex = handlers[ i ]; + var loader = handlers[ i + 1 ]; + + if ( regex.test( file ) ) { + + return loader; + + } + + } + + return null; + + } + + }; + + Object.assign( Loader.prototype, { + + crossOrigin: undefined, + + initMaterials: function ( materials, texturePath, crossOrigin ) { + + var array = []; + + for ( var i = 0; i < materials.length; ++ i ) { + + array[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin ); + + } + + return array; + + }, + + createMaterial: ( function () { + + var BlendingMode = { + NoBlending: NoBlending, + NormalBlending: NormalBlending, + AdditiveBlending: AdditiveBlending, + SubtractiveBlending: SubtractiveBlending, + MultiplyBlending: MultiplyBlending, + CustomBlending: CustomBlending + }; + + var color = new Color(); + var textureLoader = new TextureLoader(); + var materialLoader = new MaterialLoader(); + + return function createMaterial( m, texturePath, crossOrigin ) { + + // convert from old material format + + var textures = {}; + + function loadTexture( path, repeat, offset, wrap, anisotropy ) { + + var fullPath = texturePath + path; + var loader = Loader.Handlers.get( fullPath ); + + var texture; + + if ( loader !== null ) { + + texture = loader.load( fullPath ); + + } else { + + textureLoader.setCrossOrigin( crossOrigin ); + texture = textureLoader.load( fullPath ); + + } + + if ( repeat !== undefined ) { + + texture.repeat.fromArray( repeat ); + + if ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping; + if ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping; + + } + + if ( offset !== undefined ) { + + texture.offset.fromArray( offset ); + + } + + if ( wrap !== undefined ) { + + if ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping; + if ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping; + + if ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping; + if ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping; + + } + + if ( anisotropy !== undefined ) { + + texture.anisotropy = anisotropy; + + } + + var uuid = _Math.generateUUID(); + + textures[ uuid ] = texture; + + return uuid; + + } + + // + + var json = { + uuid: _Math.generateUUID(), + type: 'MeshLambertMaterial' + }; + + for ( var name in m ) { + + var value = m[ name ]; + + switch ( name ) { + + case 'DbgColor': + case 'DbgIndex': + case 'opticalDensity': + case 'illumination': + break; + case 'DbgName': + json.name = value; + break; + case 'blending': + json.blending = BlendingMode[ value ]; + break; + case 'colorAmbient': + case 'mapAmbient': + console.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' ); + break; + case 'colorDiffuse': + json.color = color.fromArray( value ).getHex(); + break; + case 'colorSpecular': + json.specular = color.fromArray( value ).getHex(); + break; + case 'colorEmissive': + json.emissive = color.fromArray( value ).getHex(); + break; + case 'specularCoef': + json.shininess = value; + break; + case 'shading': + if ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial'; + if ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial'; + if ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial'; + break; + case 'mapDiffuse': + json.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy ); + break; + case 'mapDiffuseRepeat': + case 'mapDiffuseOffset': + case 'mapDiffuseWrap': + case 'mapDiffuseAnisotropy': + break; + case 'mapEmissive': + json.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy ); + break; + case 'mapEmissiveRepeat': + case 'mapEmissiveOffset': + case 'mapEmissiveWrap': + case 'mapEmissiveAnisotropy': + break; + case 'mapLight': + json.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy ); + break; + case 'mapLightRepeat': + case 'mapLightOffset': + case 'mapLightWrap': + case 'mapLightAnisotropy': + break; + case 'mapAO': + json.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy ); + break; + case 'mapAORepeat': + case 'mapAOOffset': + case 'mapAOWrap': + case 'mapAOAnisotropy': + break; + case 'mapBump': + json.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy ); + break; + case 'mapBumpScale': + json.bumpScale = value; + break; + case 'mapBumpRepeat': + case 'mapBumpOffset': + case 'mapBumpWrap': + case 'mapBumpAnisotropy': + break; + case 'mapNormal': + json.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy ); + break; + case 'mapNormalFactor': + json.normalScale = [ value, value ]; + break; + case 'mapNormalRepeat': + case 'mapNormalOffset': + case 'mapNormalWrap': + case 'mapNormalAnisotropy': + break; + case 'mapSpecular': + json.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy ); + break; + case 'mapSpecularRepeat': + case 'mapSpecularOffset': + case 'mapSpecularWrap': + case 'mapSpecularAnisotropy': + break; + case 'mapMetalness': + json.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy ); + break; + case 'mapMetalnessRepeat': + case 'mapMetalnessOffset': + case 'mapMetalnessWrap': + case 'mapMetalnessAnisotropy': + break; + case 'mapRoughness': + json.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy ); + break; + case 'mapRoughnessRepeat': + case 'mapRoughnessOffset': + case 'mapRoughnessWrap': + case 'mapRoughnessAnisotropy': + break; + case 'mapAlpha': + json.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy ); + break; + case 'mapAlphaRepeat': + case 'mapAlphaOffset': + case 'mapAlphaWrap': + case 'mapAlphaAnisotropy': + break; + case 'flipSided': + json.side = BackSide; + break; + case 'doubleSided': + json.side = DoubleSide; + break; + case 'transparency': + console.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' ); + json.opacity = value; + break; + case 'depthTest': + case 'depthWrite': + case 'colorWrite': + case 'opacity': + case 'reflectivity': + case 'transparent': + case 'visible': + case 'wireframe': + json[ name ] = value; + break; + case 'vertexColors': + if ( value === true ) json.vertexColors = VertexColors; + if ( value === 'face' ) json.vertexColors = FaceColors; + break; + default: + console.error( 'THREE.Loader.createMaterial: Unsupported', name, value ); + break; + + } + + } + + if ( json.type === 'MeshBasicMaterial' ) delete json.emissive; + if ( json.type !== 'MeshPhongMaterial' ) delete json.specular; + + if ( json.opacity < 1 ) json.transparent = true; + + materialLoader.setTextures( textures ); + + return materialLoader.parse( json ); + + }; + + } )() + + } ); + + /** + * @author Don McCurdy / https://www.donmccurdy.com + */ + + var LoaderUtils = { + + decodeText: function ( array ) { + + if ( typeof TextDecoder !== 'undefined' ) { + + return new TextDecoder().decode( array ); + + } + + // Avoid the String.fromCharCode.apply(null, array) shortcut, which + // throws a "maximum call stack size exceeded" error for large arrays. + + var s = ''; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + // Implicitly assumes little-endian. + s += String.fromCharCode( array[ i ] ); + + } + + return s; + + }, + + extractUrlBase: function ( url ) { + + var parts = url.split( '/' ); + + if ( parts.length === 1 ) return './'; + + parts.pop(); + + return parts.join( '/' ) + '/'; + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function JSONLoader( manager ) { + + if ( typeof manager === 'boolean' ) { + + console.warn( 'THREE.JSONLoader: showStatus parameter has been removed from constructor.' ); + manager = undefined; + + } + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + this.withCredentials = false; + + } + + Object.assign( JSONLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var texturePath = this.texturePath && ( typeof this.texturePath === 'string' ) ? this.texturePath : LoaderUtils.extractUrlBase( url ); + + var loader = new FileLoader( this.manager ); + loader.setWithCredentials( this.withCredentials ); + loader.load( url, function ( text ) { + + var json = JSON.parse( text ); + var metadata = json.metadata; + + if ( metadata !== undefined ) { + + var type = metadata.type; + + if ( type !== undefined ) { + + if ( type.toLowerCase() === 'object' ) { + + console.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.' ); + return; + + } + + if ( type.toLowerCase() === 'scene' ) { + + console.error( 'THREE.JSONLoader: ' + url + ' should be loaded with THREE.SceneLoader instead.' ); + return; + + } + + } + + } + + var object = scope.parse( json, texturePath ); + onLoad( object.geometry, object.materials ); + + }, onProgress, onError ); + + }, + + setTexturePath: function ( value ) { + + this.texturePath = value; + + }, + + parse: ( function () { + + function parseModel( json, geometry ) { + + function isBitSet( value, position ) { + + return value & ( 1 << position ); + + } + + var i, j, fi, + + offset, zLength, + + colorIndex, normalIndex, uvIndex, materialIndex, + + type, + isQuad, + hasMaterial, + hasFaceVertexUv, + hasFaceNormal, hasFaceVertexNormal, + hasFaceColor, hasFaceVertexColor, + + vertex, face, faceA, faceB, hex, normal, + + uvLayer, uv, u, v, + + faces = json.faces, + vertices = json.vertices, + normals = json.normals, + colors = json.colors, + + scale = json.scale, + + nUvLayers = 0; + + + if ( json.uvs !== undefined ) { + + // disregard empty arrays + + for ( i = 0; i < json.uvs.length; i ++ ) { + + if ( json.uvs[ i ].length ) nUvLayers ++; + + } + + for ( i = 0; i < nUvLayers; i ++ ) { + + geometry.faceVertexUvs[ i ] = []; + + } + + } + + offset = 0; + zLength = vertices.length; + + while ( offset < zLength ) { + + vertex = new Vector3(); + + vertex.x = vertices[ offset ++ ] * scale; + vertex.y = vertices[ offset ++ ] * scale; + vertex.z = vertices[ offset ++ ] * scale; + + geometry.vertices.push( vertex ); + + } + + offset = 0; + zLength = faces.length; + + while ( offset < zLength ) { + + type = faces[ offset ++ ]; + + isQuad = isBitSet( type, 0 ); + hasMaterial = isBitSet( type, 1 ); + hasFaceVertexUv = isBitSet( type, 3 ); + hasFaceNormal = isBitSet( type, 4 ); + hasFaceVertexNormal = isBitSet( type, 5 ); + hasFaceColor = isBitSet( type, 6 ); + hasFaceVertexColor = isBitSet( type, 7 ); + + // console.log("type", type, "bits", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor); + + if ( isQuad ) { + + faceA = new Face3(); + faceA.a = faces[ offset ]; + faceA.b = faces[ offset + 1 ]; + faceA.c = faces[ offset + 3 ]; + + faceB = new Face3(); + faceB.a = faces[ offset + 1 ]; + faceB.b = faces[ offset + 2 ]; + faceB.c = faces[ offset + 3 ]; + + offset += 4; + + if ( hasMaterial ) { + + materialIndex = faces[ offset ++ ]; + faceA.materialIndex = materialIndex; + faceB.materialIndex = materialIndex; + + } + + // to get face <=> uv index correspondence + + fi = geometry.faces.length; + + if ( hasFaceVertexUv ) { + + for ( i = 0; i < nUvLayers; i ++ ) { + + uvLayer = json.uvs[ i ]; + + geometry.faceVertexUvs[ i ][ fi ] = []; + geometry.faceVertexUvs[ i ][ fi + 1 ] = []; + + for ( j = 0; j < 4; j ++ ) { + + uvIndex = faces[ offset ++ ]; + + u = uvLayer[ uvIndex * 2 ]; + v = uvLayer[ uvIndex * 2 + 1 ]; + + uv = new Vector2( u, v ); + + if ( j !== 2 ) geometry.faceVertexUvs[ i ][ fi ].push( uv ); + if ( j !== 0 ) geometry.faceVertexUvs[ i ][ fi + 1 ].push( uv ); + + } + + } + + } + + if ( hasFaceNormal ) { + + normalIndex = faces[ offset ++ ] * 3; + + faceA.normal.set( + normals[ normalIndex ++ ], + normals[ normalIndex ++ ], + normals[ normalIndex ] + ); + + faceB.normal.copy( faceA.normal ); + + } + + if ( hasFaceVertexNormal ) { + + for ( i = 0; i < 4; i ++ ) { + + normalIndex = faces[ offset ++ ] * 3; + + normal = new Vector3( + normals[ normalIndex ++ ], + normals[ normalIndex ++ ], + normals[ normalIndex ] + ); + + + if ( i !== 2 ) faceA.vertexNormals.push( normal ); + if ( i !== 0 ) faceB.vertexNormals.push( normal ); + + } + + } + + + if ( hasFaceColor ) { + + colorIndex = faces[ offset ++ ]; + hex = colors[ colorIndex ]; + + faceA.color.setHex( hex ); + faceB.color.setHex( hex ); + + } + + + if ( hasFaceVertexColor ) { + + for ( i = 0; i < 4; i ++ ) { + + colorIndex = faces[ offset ++ ]; + hex = colors[ colorIndex ]; + + if ( i !== 2 ) faceA.vertexColors.push( new Color( hex ) ); + if ( i !== 0 ) faceB.vertexColors.push( new Color( hex ) ); + + } + + } + + geometry.faces.push( faceA ); + geometry.faces.push( faceB ); + + } else { + + face = new Face3(); + face.a = faces[ offset ++ ]; + face.b = faces[ offset ++ ]; + face.c = faces[ offset ++ ]; + + if ( hasMaterial ) { + + materialIndex = faces[ offset ++ ]; + face.materialIndex = materialIndex; + + } + + // to get face <=> uv index correspondence + + fi = geometry.faces.length; + + if ( hasFaceVertexUv ) { + + for ( i = 0; i < nUvLayers; i ++ ) { + + uvLayer = json.uvs[ i ]; + + geometry.faceVertexUvs[ i ][ fi ] = []; + + for ( j = 0; j < 3; j ++ ) { + + uvIndex = faces[ offset ++ ]; + + u = uvLayer[ uvIndex * 2 ]; + v = uvLayer[ uvIndex * 2 + 1 ]; + + uv = new Vector2( u, v ); + + geometry.faceVertexUvs[ i ][ fi ].push( uv ); + + } + + } + + } + + if ( hasFaceNormal ) { + + normalIndex = faces[ offset ++ ] * 3; + + face.normal.set( + normals[ normalIndex ++ ], + normals[ normalIndex ++ ], + normals[ normalIndex ] + ); + + } + + if ( hasFaceVertexNormal ) { + + for ( i = 0; i < 3; i ++ ) { + + normalIndex = faces[ offset ++ ] * 3; + + normal = new Vector3( + normals[ normalIndex ++ ], + normals[ normalIndex ++ ], + normals[ normalIndex ] + ); + + face.vertexNormals.push( normal ); + + } + + } + + + if ( hasFaceColor ) { + + colorIndex = faces[ offset ++ ]; + face.color.setHex( colors[ colorIndex ] ); + + } + + + if ( hasFaceVertexColor ) { + + for ( i = 0; i < 3; i ++ ) { + + colorIndex = faces[ offset ++ ]; + face.vertexColors.push( new Color( colors[ colorIndex ] ) ); + + } + + } + + geometry.faces.push( face ); + + } + + } + + } + + function parseSkin( json, geometry ) { + + var influencesPerVertex = ( json.influencesPerVertex !== undefined ) ? json.influencesPerVertex : 2; + + if ( json.skinWeights ) { + + for ( var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex ) { + + var x = json.skinWeights[ i ]; + var y = ( influencesPerVertex > 1 ) ? json.skinWeights[ i + 1 ] : 0; + var z = ( influencesPerVertex > 2 ) ? json.skinWeights[ i + 2 ] : 0; + var w = ( influencesPerVertex > 3 ) ? json.skinWeights[ i + 3 ] : 0; + + geometry.skinWeights.push( new Vector4( x, y, z, w ) ); + + } + + } + + if ( json.skinIndices ) { + + for ( var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex ) { + + var a = json.skinIndices[ i ]; + var b = ( influencesPerVertex > 1 ) ? json.skinIndices[ i + 1 ] : 0; + var c = ( influencesPerVertex > 2 ) ? json.skinIndices[ i + 2 ] : 0; + var d = ( influencesPerVertex > 3 ) ? json.skinIndices[ i + 3 ] : 0; + + geometry.skinIndices.push( new Vector4( a, b, c, d ) ); + + } + + } + + geometry.bones = json.bones; + + if ( geometry.bones && geometry.bones.length > 0 && ( geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length ) ) { + + console.warn( 'When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' + + geometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.' ); + + } + + } + + function parseMorphing( json, geometry ) { + + var scale = json.scale; + + if ( json.morphTargets !== undefined ) { + + for ( var i = 0, l = json.morphTargets.length; i < l; i ++ ) { + + geometry.morphTargets[ i ] = {}; + geometry.morphTargets[ i ].name = json.morphTargets[ i ].name; + geometry.morphTargets[ i ].vertices = []; + + var dstVertices = geometry.morphTargets[ i ].vertices; + var srcVertices = json.morphTargets[ i ].vertices; + + for ( var v = 0, vl = srcVertices.length; v < vl; v += 3 ) { + + var vertex = new Vector3(); + vertex.x = srcVertices[ v ] * scale; + vertex.y = srcVertices[ v + 1 ] * scale; + vertex.z = srcVertices[ v + 2 ] * scale; + + dstVertices.push( vertex ); + + } + + } + + } + + if ( json.morphColors !== undefined && json.morphColors.length > 0 ) { + + console.warn( 'THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.' ); + + var faces = geometry.faces; + var morphColors = json.morphColors[ 0 ].colors; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + faces[ i ].color.fromArray( morphColors, i * 3 ); + + } + + } + + } + + function parseAnimations( json, geometry ) { + + var outputAnimations = []; + + // parse old style Bone/Hierarchy animations + var animations = []; + + if ( json.animation !== undefined ) { + + animations.push( json.animation ); + + } + + if ( json.animations !== undefined ) { + + if ( json.animations.length ) { + + animations = animations.concat( json.animations ); + + } else { + + animations.push( json.animations ); + + } + + } + + for ( var i = 0; i < animations.length; i ++ ) { + + var clip = AnimationClip.parseAnimation( animations[ i ], geometry.bones ); + if ( clip ) outputAnimations.push( clip ); + + } + + // parse implicit morph animations + if ( geometry.morphTargets ) { + + // TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary. + var morphAnimationClips = AnimationClip.CreateClipsFromMorphTargetSequences( geometry.morphTargets, 10 ); + outputAnimations = outputAnimations.concat( morphAnimationClips ); + + } + + if ( outputAnimations.length > 0 ) geometry.animations = outputAnimations; + + } + + return function ( json, texturePath ) { + + if ( json.data !== undefined ) { + + // Geometry 4.0 spec + json = json.data; + + } + + if ( json.scale !== undefined ) { + + json.scale = 1.0 / json.scale; + + } else { + + json.scale = 1.0; + + } + + var geometry = new Geometry(); + + parseModel( json, geometry ); + parseSkin( json, geometry ); + parseMorphing( json, geometry ); + parseAnimations( json, geometry ); + + geometry.computeFaceNormals(); + geometry.computeBoundingSphere(); + + if ( json.materials === undefined || json.materials.length === 0 ) { + + return { geometry: geometry }; + + } else { + + var materials = Loader.prototype.initMaterials( json.materials, texturePath, this.crossOrigin ); + + return { geometry: geometry, materials: materials }; + + } + + }; + + } )() + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ObjectLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + this.texturePath = ''; + + } + + Object.assign( ObjectLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + if ( this.texturePath === '' ) { + + this.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 ); + + } + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.load( url, function ( text ) { + + var json = null; + + try { + + json = JSON.parse( text ); + + } catch ( error ) { + + if ( onError !== undefined ) onError( error ); + + console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); + + return; + + } + + var metadata = json.metadata; + + if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { + + console.error( 'THREE.ObjectLoader: Can\'t load ' + url + '. Use THREE.JSONLoader instead.' ); + return; + + } + + scope.parse( json, onLoad ); + + }, onProgress, onError ); + + }, + + setTexturePath: function ( value ) { + + this.texturePath = value; + + }, + + setCrossOrigin: function ( value ) { + + this.crossOrigin = value; + + }, + + parse: function ( json, onLoad ) { + + var shapes = this.parseShape( json.shapes ); + var geometries = this.parseGeometries( json.geometries, shapes ); + + var images = this.parseImages( json.images, function () { + + if ( onLoad !== undefined ) onLoad( object ); + + } ); + + var textures = this.parseTextures( json.textures, images ); + var materials = this.parseMaterials( json.materials, textures ); + + var object = this.parseObject( json.object, geometries, materials ); + + if ( json.animations ) { + + object.animations = this.parseAnimations( json.animations ); + + } + + if ( json.images === undefined || json.images.length === 0 ) { + + if ( onLoad !== undefined ) onLoad( object ); + + } + + return object; + + }, + + parseShape: function ( json ) { + + var shapes = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var shape = new Shape().fromJSON( json[ i ] ); + + shapes[ shape.uuid ] = shape; + + } + + } + + return shapes; + + }, + + parseGeometries: function ( json, shapes ) { + + var geometries = {}; + + if ( json !== undefined ) { + + var geometryLoader = new JSONLoader(); + var bufferGeometryLoader = new BufferGeometryLoader(); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var geometry; + var data = json[ i ]; + + switch ( data.type ) { + + case 'PlaneGeometry': + case 'PlaneBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.widthSegments, + data.heightSegments + ); + + break; + + case 'BoxGeometry': + case 'BoxBufferGeometry': + case 'CubeGeometry': // backwards compatible + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.depth, + data.widthSegments, + data.heightSegments, + data.depthSegments + ); + + break; + + case 'CircleGeometry': + case 'CircleBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.segments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'CylinderGeometry': + case 'CylinderBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radiusTop, + data.radiusBottom, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'ConeGeometry': + case 'ConeBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'SphereGeometry': + case 'SphereBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.widthSegments, + data.heightSegments, + data.phiStart, + data.phiLength, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'DodecahedronGeometry': + case 'DodecahedronBufferGeometry': + case 'IcosahedronGeometry': + case 'IcosahedronBufferGeometry': + case 'OctahedronGeometry': + case 'OctahedronBufferGeometry': + case 'TetrahedronGeometry': + case 'TetrahedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.detail + ); + + break; + + case 'RingGeometry': + case 'RingBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.innerRadius, + data.outerRadius, + data.thetaSegments, + data.phiSegments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'TorusGeometry': + case 'TorusBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.radialSegments, + data.tubularSegments, + data.arc + ); + + break; + + case 'TorusKnotGeometry': + case 'TorusKnotBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.tubularSegments, + data.radialSegments, + data.p, + data.q + ); + + break; + + case 'LatheGeometry': + case 'LatheBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.points, + data.segments, + data.phiStart, + data.phiLength + ); + + break; + + case 'PolyhedronGeometry': + case 'PolyhedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.vertices, + data.indices, + data.radius, + data.details + ); + + break; + + case 'ShapeGeometry': + case 'ShapeBufferGeometry': + + var geometryShapes = []; + + for ( var i = 0, l = data.shapes.length; i < l; i ++ ) { + + var shape = shapes[ data.shapes[ i ] ]; + + geometryShapes.push( shape ); + + } + + geometry = new Geometries[ data.type ]( + geometryShapes, + data.curveSegments + ); + + break; + + case 'BufferGeometry': + + geometry = bufferGeometryLoader.parse( data ); + + break; + + case 'Geometry': + + geometry = geometryLoader.parse( data, this.texturePath ).geometry; + + break; + + default: + + console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' ); + + continue; + + } + + geometry.uuid = data.uuid; + + if ( data.name !== undefined ) geometry.name = data.name; + + geometries[ data.uuid ] = geometry; + + } + + } + + return geometries; + + }, + + parseMaterials: function ( json, textures ) { + + var materials = {}; + + if ( json !== undefined ) { + + var loader = new MaterialLoader(); + loader.setTextures( textures ); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.type === 'MultiMaterial' ) { + + // Deprecated + + var array = []; + + for ( var j = 0; j < data.materials.length; j ++ ) { + + array.push( loader.parse( data.materials[ j ] ) ); + + } + + materials[ data.uuid ] = array; + + } else { + + materials[ data.uuid ] = loader.parse( data ); + + } + + } + + } + + return materials; + + }, + + parseAnimations: function ( json ) { + + var animations = []; + + for ( var i = 0; i < json.length; i ++ ) { + + var clip = AnimationClip.parse( json[ i ] ); + + animations.push( clip ); + + } + + return animations; + + }, + + parseImages: function ( json, onLoad ) { + + var scope = this; + var images = {}; + + function loadImage( url ) { + + scope.manager.itemStart( url ); + + return loader.load( url, function () { + + scope.manager.itemEnd( url ); + + }, undefined, function () { + + scope.manager.itemEnd( url ); + scope.manager.itemError( url ); + + } ); + + } + + if ( json !== undefined && json.length > 0 ) { + + var manager = new LoadingManager( onLoad ); + + var loader = new ImageLoader( manager ); + loader.setCrossOrigin( this.crossOrigin ); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var image = json[ i ]; + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url; + + images[ image.uuid ] = loadImage( path ); + + } + + } + + return images; + + }, + + parseTextures: function ( json, images ) { + + function parseConstant( value, type ) { + + if ( typeof value === 'number' ) return value; + + console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); + + return type[ value ]; + + } + + var textures = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.image === undefined ) { + + console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); + + } + + if ( images[ data.image ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); + + } + + var texture = new Texture( images[ data.image ] ); + texture.needsUpdate = true; + + texture.uuid = data.uuid; + + if ( data.name !== undefined ) texture.name = data.name; + + if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); + + if ( data.offset !== undefined ) texture.offset.fromArray( data.offset ); + if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat ); + if ( data.center !== undefined ) texture.center.fromArray( data.center ); + if ( data.rotation !== undefined ) texture.rotation = data.rotation; + + if ( data.wrap !== undefined ) { + + texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); + texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); + + } + + if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); + if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); + if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; + + if ( data.flipY !== undefined ) texture.flipY = data.flipY; + + textures[ data.uuid ] = texture; + + } + + } + + return textures; + + }, + + parseObject: function () { + + var matrix = new Matrix4(); + + return function parseObject( data, geometries, materials ) { + + var object; + + function getGeometry( name ) { + + if ( geometries[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); + + } + + return geometries[ name ]; + + } + + function getMaterial( name ) { + + if ( name === undefined ) return undefined; + + if ( Array.isArray( name ) ) { + + var array = []; + + for ( var i = 0, l = name.length; i < l; i ++ ) { + + var uuid = name[ i ]; + + if ( materials[ uuid ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); + + } + + array.push( materials[ uuid ] ); + + } + + return array; + + } + + if ( materials[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', name ); + + } + + return materials[ name ]; + + } + + switch ( data.type ) { + + case 'Scene': + + object = new Scene(); + + if ( data.background !== undefined ) { + + if ( Number.isInteger( data.background ) ) { + + object.background = new Color( data.background ); + + } + + } + + if ( data.fog !== undefined ) { + + if ( data.fog.type === 'Fog' ) { + + object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); + + } else if ( data.fog.type === 'FogExp2' ) { + + object.fog = new FogExp2( data.fog.color, data.fog.density ); + + } + + } + + break; + + case 'PerspectiveCamera': + + object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); + + if ( data.focus !== undefined ) object.focus = data.focus; + if ( data.zoom !== undefined ) object.zoom = data.zoom; + if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge; + if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset; + if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); + + break; + + case 'OrthographicCamera': + + object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); + + break; + + case 'AmbientLight': + + object = new AmbientLight( data.color, data.intensity ); + + break; + + case 'DirectionalLight': + + object = new DirectionalLight( data.color, data.intensity ); + + break; + + case 'PointLight': + + object = new PointLight( data.color, data.intensity, data.distance, data.decay ); + + break; + + case 'RectAreaLight': + + object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); + + break; + + case 'SpotLight': + + object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); + + break; + + case 'HemisphereLight': + + object = new HemisphereLight( data.color, data.groundColor, data.intensity ); + + break; + + case 'SkinnedMesh': + + console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' ); + + case 'Mesh': + + var geometry = getGeometry( data.geometry ); + var material = getMaterial( data.material ); + + if ( geometry.bones && geometry.bones.length > 0 ) { + + object = new SkinnedMesh( geometry, material ); + + } else { + + object = new Mesh( geometry, material ); + + } + + break; + + case 'LOD': + + object = new LOD(); + + break; + + case 'Line': + + object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); + + break; + + case 'LineLoop': + + object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'LineSegments': + + object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'PointCloud': + case 'Points': + + object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'Sprite': + + object = new Sprite( getMaterial( data.material ) ); + + break; + + case 'Group': + + object = new Group(); + + break; + + default: + + object = new Object3D(); + + } + + object.uuid = data.uuid; + + if ( data.name !== undefined ) object.name = data.name; + if ( data.matrix !== undefined ) { + + matrix.fromArray( data.matrix ); + matrix.decompose( object.position, object.quaternion, object.scale ); + + } else { + + if ( data.position !== undefined ) object.position.fromArray( data.position ); + if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation ); + if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion ); + if ( data.scale !== undefined ) object.scale.fromArray( data.scale ); + + } + + if ( data.castShadow !== undefined ) object.castShadow = data.castShadow; + if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow; + + if ( data.shadow ) { + + if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias; + if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius; + if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize ); + if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera ); + + } + + if ( data.visible !== undefined ) object.visible = data.visible; + if ( data.userData !== undefined ) object.userData = data.userData; + + if ( data.children !== undefined ) { + + var children = data.children; + + for ( var i = 0; i < children.length; i ++ ) { + + object.add( this.parseObject( children[ i ], geometries, materials ) ); + + } + + } + + if ( data.type === 'LOD' ) { + + var levels = data.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + var level = levels[ l ]; + var child = object.getObjectByProperty( 'uuid', level.object ); + + if ( child !== undefined ) { + + object.addLevel( child, level.distance ); + + } + + } + + } + + return object; + + }; + + }() + + } ); + + var TEXTURE_MAPPING = { + UVMapping: UVMapping, + CubeReflectionMapping: CubeReflectionMapping, + CubeRefractionMapping: CubeRefractionMapping, + EquirectangularReflectionMapping: EquirectangularReflectionMapping, + EquirectangularRefractionMapping: EquirectangularRefractionMapping, + SphericalReflectionMapping: SphericalReflectionMapping, + CubeUVReflectionMapping: CubeUVReflectionMapping, + CubeUVRefractionMapping: CubeUVRefractionMapping + }; + + var TEXTURE_WRAPPING = { + RepeatWrapping: RepeatWrapping, + ClampToEdgeWrapping: ClampToEdgeWrapping, + MirroredRepeatWrapping: MirroredRepeatWrapping + }; + + var TEXTURE_FILTER = { + NearestFilter: NearestFilter, + NearestMipMapNearestFilter: NearestMipMapNearestFilter, + NearestMipMapLinearFilter: NearestMipMapLinearFilter, + LinearFilter: LinearFilter, + LinearMipMapNearestFilter: LinearMipMapNearestFilter, + LinearMipMapLinearFilter: LinearMipMapLinearFilter + }; + + /** + * @author thespite / http://clicktorelease.com/ + */ + + function ImageBitmapLoader( manager ) { + + if ( typeof createImageBitmap === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); + + } + + if ( typeof fetch === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); + + } + + this.manager = manager !== undefined ? manager : DefaultLoadingManager; + this.options = undefined; + + } + + ImageBitmapLoader.prototype = { + + constructor: ImageBitmapLoader, + + setOptions: function setOptions( options ) { + + this.options = options; + + return this; + + }, + + load: function load( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) url = ''; + + if ( this.path !== undefined ) url = this.path + url; + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) onLoad( cached ); + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + fetch( url ).then( function ( res ) { + + return res.blob(); + + } ).then( function ( blob ) { + + return createImageBitmap( blob, scope.options ); + + } ).then( function ( imageBitmap ) { + + Cache.add( url, imageBitmap ); + + if ( onLoad ) onLoad( imageBitmap ); + + scope.manager.itemEnd( url ); + + } ).catch( function ( e ) { + + if ( onError ) onError( e ); + + scope.manager.itemEnd( url ); + scope.manager.itemError( url ); + + } ); + + }, + + setCrossOrigin: function ( /* value */ ) { + + return this; + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * minimal class for proxing functions to Path. Replaces old "extractSubpaths()" + **/ + + function ShapePath() { + + this.type = 'ShapePath'; + + this.subPaths = []; + this.currentPath = null; + + } + + Object.assign( ShapePath.prototype, { + + moveTo: function ( x, y ) { + + this.currentPath = new Path(); + this.subPaths.push( this.currentPath ); + this.currentPath.moveTo( x, y ); + + }, + + lineTo: function ( x, y ) { + + this.currentPath.lineTo( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); + + }, + + splineThru: function ( pts ) { + + this.currentPath.splineThru( pts ); + + }, + + toShapes: function ( isCCW, noHoles ) { + + function toShapesNoHoles( inSubpaths ) { + + var shapes = []; + + for ( var i = 0, l = inSubpaths.length; i < l; i ++ ) { + + var tmpPath = inSubpaths[ i ]; + + var tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + + shapes.push( tmpShape ); + + } + + return shapes; + + } + + function isPointInsidePolygon( inPt, inPolygon ) { + + var polyLen = inPolygon.length; + + // inPt on polygon contour => immediate success or + // toggling of inside/outside at every single! intersection point of an edge + // with the horizontal line through inPt, left of inPt + // not counting lowerY endpoints of edges and whole edges on that line + var inside = false; + for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { + + var edgeLowPt = inPolygon[ p ]; + var edgeHighPt = inPolygon[ q ]; + + var edgeDx = edgeHighPt.x - edgeLowPt.x; + var edgeDy = edgeHighPt.y - edgeLowPt.y; + + if ( Math.abs( edgeDy ) > Number.EPSILON ) { + + // not parallel + if ( edgeDy < 0 ) { + + edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; + edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; + + } + if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) continue; + + if ( inPt.y === edgeLowPt.y ) { + + if ( inPt.x === edgeLowPt.x ) return true; // inPt is on contour ? + // continue; // no intersection or edgeLowPt => doesn't count !!! + + } else { + + var perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); + if ( perpEdge === 0 ) return true; // inPt is on contour ? + if ( perpEdge < 0 ) continue; + inside = ! inside; // true intersection left of inPt + + } + + } else { + + // parallel or collinear + if ( inPt.y !== edgeLowPt.y ) continue; // parallel + // edge lies on the same horizontal line as inPt + if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || + ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) return true; // inPt: Point on contour ! + // continue; + + } + + } + + return inside; + + } + + var isClockWise = ShapeUtils.isClockWise; + + var subPaths = this.subPaths; + if ( subPaths.length === 0 ) return []; + + if ( noHoles === true ) return toShapesNoHoles( subPaths ); + + + var solid, tmpPath, tmpShape, shapes = []; + + if ( subPaths.length === 1 ) { + + tmpPath = subPaths[ 0 ]; + tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + shapes.push( tmpShape ); + return shapes; + + } + + var holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); + holesFirst = isCCW ? ! holesFirst : holesFirst; + + // console.log("Holes first", holesFirst); + + var betterShapeHoles = []; + var newShapes = []; + var newShapeHoles = []; + var mainIdx = 0; + var tmpPoints; + + newShapes[ mainIdx ] = undefined; + newShapeHoles[ mainIdx ] = []; + + for ( var i = 0, l = subPaths.length; i < l; i ++ ) { + + tmpPath = subPaths[ i ]; + tmpPoints = tmpPath.getPoints(); + solid = isClockWise( tmpPoints ); + solid = isCCW ? ! solid : solid; + + if ( solid ) { + + if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) mainIdx ++; + + newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; + newShapes[ mainIdx ].s.curves = tmpPath.curves; + + if ( holesFirst ) mainIdx ++; + newShapeHoles[ mainIdx ] = []; + + //console.log('cw', i); + + } else { + + newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); + + //console.log('ccw', i); + + } + + } + + // only Holes? -> probably all Shapes with wrong orientation + if ( ! newShapes[ 0 ] ) return toShapesNoHoles( subPaths ); + + + if ( newShapes.length > 1 ) { + + var ambiguous = false; + var toChange = []; + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + betterShapeHoles[ sIdx ] = []; + + } + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + var sho = newShapeHoles[ sIdx ]; + + for ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) { + + var ho = sho[ hIdx ]; + var hole_unassigned = true; + + for ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { + + if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { + + if ( sIdx !== s2Idx ) toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } ); + if ( hole_unassigned ) { + + hole_unassigned = false; + betterShapeHoles[ s2Idx ].push( ho ); + + } else { + + ambiguous = true; + + } + + } + + } + if ( hole_unassigned ) { + + betterShapeHoles[ sIdx ].push( ho ); + + } + + } + + } + // console.log("ambiguous: ", ambiguous); + if ( toChange.length > 0 ) { + + // console.log("to change: ", toChange); + if ( ! ambiguous ) newShapeHoles = betterShapeHoles; + + } + + } + + var tmpHoles; + + for ( var i = 0, il = newShapes.length; i < il; i ++ ) { + + tmpShape = newShapes[ i ].s; + shapes.push( tmpShape ); + tmpHoles = newShapeHoles[ i ]; + + for ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) { + + tmpShape.holes.push( tmpHoles[ j ].h ); + + } + + } + + //console.log("shape", shapes); + + return shapes; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author mrdoob / http://mrdoob.com/ + */ + + function Font( data ) { + + this.type = 'Font'; + + this.data = data; + + } + + Object.assign( Font.prototype, { + + isFont: true, + + generateShapes: function ( text, size, divisions ) { + + function createPaths( text ) { + + var chars = String( text ).split( '' ); + var scale = size / data.resolution; + var line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; + + var offsetX = 0, offsetY = 0; + + var paths = []; + + for ( var i = 0; i < chars.length; i ++ ) { + + var char = chars[ i ]; + + if ( char === '\n' ) { + + offsetX = 0; + offsetY -= line_height; + + } else { + + var ret = createPath( char, scale, offsetX, offsetY ); + offsetX += ret.offsetX; + paths.push( ret.path ); + + } + + } + + return paths; + + } + + function createPath( c, scale, offsetX, offsetY ) { + + var glyph = data.glyphs[ c ] || data.glyphs[ '?' ]; + + if ( ! glyph ) return; + + var path = new ShapePath(); + + var pts = []; + var x, y, cpx, cpy, cpx0, cpy0, cpx1, cpy1, cpx2, cpy2, laste; + + if ( glyph.o ) { + + var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); + + for ( var i = 0, l = outline.length; i < l; ) { + + var action = outline[ i ++ ]; + + switch ( action ) { + + case 'm': // moveTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.moveTo( x, y ); + + break; + + case 'l': // lineTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.lineTo( x, y ); + + break; + + case 'q': // quadraticCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + + path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); + + laste = pts[ pts.length - 1 ]; + + if ( laste ) { + + cpx0 = laste.x; + cpy0 = laste.y; + + + + } + + break; + + case 'b': // bezierCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + cpx2 = outline[ i ++ ] * scale + offsetX; + cpy2 = outline[ i ++ ] * scale + offsetY; + + path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); + + laste = pts[ pts.length - 1 ]; + + if ( laste ) { + + cpx0 = laste.x; + cpy0 = laste.y; + + + + } + + break; + + } + + } + + } + + return { offsetX: glyph.ha * scale, path: path }; + + } + + // + + if ( size === undefined ) size = 100; + if ( divisions === undefined ) divisions = 4; + + var data = this.data; + + var paths = createPaths( text ); + var shapes = []; + + for ( var p = 0, pl = paths.length; p < pl; p ++ ) { + + Array.prototype.push.apply( shapes, paths[ p ].toShapes() ); + + } + + return shapes; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function FontLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( FontLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + var json; + + try { + + json = JSON.parse( text ); + + } catch ( e ) { + + console.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' ); + json = JSON.parse( text.substring( 65, text.length - 2 ) ); + + } + + var font = scope.parse( json ); + + if ( onLoad ) onLoad( font ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + return new Font( json ); + + }, + + setPath: function ( value ) { + + this.path = value; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var context; + + var AudioContext = { + + getContext: function () { + + if ( context === undefined ) { + + context = new ( window.AudioContext || window.webkitAudioContext )(); + + } + + return context; + + }, + + setContext: function ( value ) { + + context = value; + + } + + }; + + /** + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function AudioLoader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + } + + Object.assign( AudioLoader.prototype, { + + load: function ( url, onLoad, onProgress, onError ) { + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.load( url, function ( buffer ) { + + var context = AudioContext.getContext(); + + context.decodeAudioData( buffer, function ( audioBuffer ) { + + onLoad( audioBuffer ); + + } ); + + }, onProgress, onError ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function StereoCamera() { + + this.type = 'StereoCamera'; + + this.aspect = 1; + + this.eyeSep = 0.064; + + this.cameraL = new PerspectiveCamera(); + this.cameraL.layers.enable( 1 ); + this.cameraL.matrixAutoUpdate = false; + + this.cameraR = new PerspectiveCamera(); + this.cameraR.layers.enable( 2 ); + this.cameraR.matrixAutoUpdate = false; + + } + + Object.assign( StereoCamera.prototype, { + + update: ( function () { + + var instance, focus, fov, aspect, near, far, zoom, eyeSep; + + var eyeRight = new Matrix4(); + var eyeLeft = new Matrix4(); + + return function update( camera ) { + + var needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov || + aspect !== camera.aspect * this.aspect || near !== camera.near || + far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep; + + if ( needsUpdate ) { + + instance = this; + focus = camera.focus; + fov = camera.fov; + aspect = camera.aspect * this.aspect; + near = camera.near; + far = camera.far; + zoom = camera.zoom; + + // Off-axis stereoscopic effect based on + // http://paulbourke.net/stereographics/stereorender/ + + var projectionMatrix = camera.projectionMatrix.clone(); + eyeSep = this.eyeSep / 2; + var eyeSepOnProjection = eyeSep * near / focus; + var ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom; + var xmin, xmax; + + // translate xOffset + + eyeLeft.elements[ 12 ] = - eyeSep; + eyeRight.elements[ 12 ] = eyeSep; + + // for left eye + + xmin = - ymax * aspect + eyeSepOnProjection; + xmax = ymax * aspect + eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraL.projectionMatrix.copy( projectionMatrix ); + + // for right eye + + xmin = - ymax * aspect - eyeSepOnProjection; + xmax = ymax * aspect - eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraR.projectionMatrix.copy( projectionMatrix ); + + } + + this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft ); + this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight ); + + }; + + } )() + + } ); + + /** + * Camera for rendering cube maps + * - renders scene into axis-aligned cube + * + * @author alteredq / http://alteredqualia.com/ + */ + + function CubeCamera( near, far, cubeResolution ) { + + Object3D.call( this ); + + this.type = 'CubeCamera'; + + var fov = 90, aspect = 1; + + var cameraPX = new PerspectiveCamera( fov, aspect, near, far ); + cameraPX.up.set( 0, - 1, 0 ); + cameraPX.lookAt( new Vector3( 1, 0, 0 ) ); + this.add( cameraPX ); + + var cameraNX = new PerspectiveCamera( fov, aspect, near, far ); + cameraNX.up.set( 0, - 1, 0 ); + cameraNX.lookAt( new Vector3( - 1, 0, 0 ) ); + this.add( cameraNX ); + + var cameraPY = new PerspectiveCamera( fov, aspect, near, far ); + cameraPY.up.set( 0, 0, 1 ); + cameraPY.lookAt( new Vector3( 0, 1, 0 ) ); + this.add( cameraPY ); + + var cameraNY = new PerspectiveCamera( fov, aspect, near, far ); + cameraNY.up.set( 0, 0, - 1 ); + cameraNY.lookAt( new Vector3( 0, - 1, 0 ) ); + this.add( cameraNY ); + + var cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraPZ.up.set( 0, - 1, 0 ); + cameraPZ.lookAt( new Vector3( 0, 0, 1 ) ); + this.add( cameraPZ ); + + var cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraNZ.up.set( 0, - 1, 0 ); + cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) ); + this.add( cameraNZ ); + + var options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }; + + this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options ); + this.renderTarget.texture.name = "CubeCamera"; + + this.update = function ( renderer, scene ) { + + if ( this.parent === null ) this.updateMatrixWorld(); + + var renderTarget = this.renderTarget; + var generateMipmaps = renderTarget.texture.generateMipmaps; + + renderTarget.texture.generateMipmaps = false; + + renderTarget.activeCubeFace = 0; + renderer.render( scene, cameraPX, renderTarget ); + + renderTarget.activeCubeFace = 1; + renderer.render( scene, cameraNX, renderTarget ); + + renderTarget.activeCubeFace = 2; + renderer.render( scene, cameraPY, renderTarget ); + + renderTarget.activeCubeFace = 3; + renderer.render( scene, cameraNY, renderTarget ); + + renderTarget.activeCubeFace = 4; + renderer.render( scene, cameraPZ, renderTarget ); + + renderTarget.texture.generateMipmaps = generateMipmaps; + + renderTarget.activeCubeFace = 5; + renderer.render( scene, cameraNZ, renderTarget ); + + renderer.setRenderTarget( null ); + + }; + + this.clear = function ( renderer, color, depth, stencil ) { + + var renderTarget = this.renderTarget; + + for ( var i = 0; i < 6; i ++ ) { + + renderTarget.activeCubeFace = i; + renderer.setRenderTarget( renderTarget ); + + renderer.clear( color, depth, stencil ); + + } + + renderer.setRenderTarget( null ); + + }; + + } + + CubeCamera.prototype = Object.create( Object3D.prototype ); + CubeCamera.prototype.constructor = CubeCamera; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AudioListener() { + + Object3D.call( this ); + + this.type = 'AudioListener'; + + this.context = AudioContext.getContext(); + + this.gain = this.context.createGain(); + this.gain.connect( this.context.destination ); + + this.filter = null; + + } + + AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: AudioListener, + + getInput: function () { + + return this.gain; + + }, + + removeFilter: function ( ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + this.gain.connect( this.context.destination ); + this.filter = null; + + } + + }, + + getFilter: function () { + + return this.filter; + + }, + + setFilter: function ( value ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + + } else { + + this.gain.disconnect( this.context.destination ); + + } + + this.filter = value; + this.gain.connect( this.filter ); + this.filter.connect( this.context.destination ); + + }, + + getMasterVolume: function () { + + return this.gain.gain.value; + + }, + + setMasterVolume: function ( value ) { + + this.gain.gain.value = value; + + }, + + updateMatrixWorld: ( function () { + + var position = new Vector3(); + var quaternion = new Quaternion(); + var scale = new Vector3(); + + var orientation = new Vector3(); + + return function updateMatrixWorld( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + var listener = this.context.listener; + var up = this.up; + + this.matrixWorld.decompose( position, quaternion, scale ); + + orientation.set( 0, 0, - 1 ).applyQuaternion( quaternion ); + + if ( listener.positionX ) { + + listener.positionX.setValueAtTime( position.x, this.context.currentTime ); + listener.positionY.setValueAtTime( position.y, this.context.currentTime ); + listener.positionZ.setValueAtTime( position.z, this.context.currentTime ); + listener.forwardX.setValueAtTime( orientation.x, this.context.currentTime ); + listener.forwardY.setValueAtTime( orientation.y, this.context.currentTime ); + listener.forwardZ.setValueAtTime( orientation.z, this.context.currentTime ); + listener.upX.setValueAtTime( up.x, this.context.currentTime ); + listener.upY.setValueAtTime( up.y, this.context.currentTime ); + listener.upZ.setValueAtTime( up.z, this.context.currentTime ); + + } else { + + listener.setPosition( position.x, position.y, position.z ); + listener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z ); + + } + + }; + + } )() + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function Audio( listener ) { + + Object3D.call( this ); + + this.type = 'Audio'; + + this.context = listener.context; + + this.gain = this.context.createGain(); + this.gain.connect( listener.getInput() ); + + this.autoplay = false; + + this.buffer = null; + this.loop = false; + this.startTime = 0; + this.offset = 0; + this.playbackRate = 1; + this.isPlaying = false; + this.hasPlaybackControl = true; + this.sourceType = 'empty'; + + this.filters = []; + + } + + Audio.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Audio, + + getOutput: function () { + + return this.gain; + + }, + + setNodeSource: function ( audioNode ) { + + this.hasPlaybackControl = false; + this.sourceType = 'audioNode'; + this.source = audioNode; + this.connect(); + + return this; + + }, + + setBuffer: function ( audioBuffer ) { + + this.buffer = audioBuffer; + this.sourceType = 'buffer'; + + if ( this.autoplay ) this.play(); + + return this; + + }, + + play: function () { + + if ( this.isPlaying === true ) { + + console.warn( 'THREE.Audio: Audio is already playing.' ); + return; + + } + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + var source = this.context.createBufferSource(); + + source.buffer = this.buffer; + source.loop = this.loop; + source.onended = this.onEnded.bind( this ); + source.playbackRate.setValueAtTime( this.playbackRate, this.startTime ); + this.startTime = this.context.currentTime; + source.start( this.startTime, this.offset ); + + this.isPlaying = true; + + this.source = source; + + return this.connect(); + + }, + + pause: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + if ( this.isPlaying === true ) { + + this.source.stop(); + this.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate; + this.isPlaying = false; + + } + + return this; + + }, + + stop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.source.stop(); + this.offset = 0; + this.isPlaying = false; + + return this; + + }, + + connect: function () { + + if ( this.filters.length > 0 ) { + + this.source.connect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].connect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); + + } else { + + this.source.connect( this.getOutput() ); + + } + + return this; + + }, + + disconnect: function () { + + if ( this.filters.length > 0 ) { + + this.source.disconnect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].disconnect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); + + } else { + + this.source.disconnect( this.getOutput() ); + + } + + return this; + + }, + + getFilters: function () { + + return this.filters; + + }, + + setFilters: function ( value ) { + + if ( ! value ) value = []; + + if ( this.isPlaying === true ) { + + this.disconnect(); + this.filters = value; + this.connect(); + + } else { + + this.filters = value; + + } + + return this; + + }, + + getFilter: function () { + + return this.getFilters()[ 0 ]; + + }, + + setFilter: function ( filter ) { + + return this.setFilters( filter ? [ filter ] : [] ); + + }, + + setPlaybackRate: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.playbackRate = value; + + if ( this.isPlaying === true ) { + + this.source.playbackRate.setValueAtTime( this.playbackRate, this.context.currentTime ); + + } + + return this; + + }, + + getPlaybackRate: function () { + + return this.playbackRate; + + }, + + onEnded: function () { + + this.isPlaying = false; + + }, + + getLoop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return false; + + } + + return this.loop; + + }, + + setLoop: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.loop = value; + + if ( this.isPlaying === true ) { + + this.source.loop = this.loop; + + } + + return this; + + }, + + getVolume: function () { + + return this.gain.gain.value; + + }, + + setVolume: function ( value ) { + + this.gain.gain.value = value; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function PositionalAudio( listener ) { + + Audio.call( this, listener ); + + this.panner = this.context.createPanner(); + this.panner.connect( this.gain ); + + } + + PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), { + + constructor: PositionalAudio, + + getOutput: function () { + + return this.panner; + + }, + + getRefDistance: function () { + + return this.panner.refDistance; + + }, + + setRefDistance: function ( value ) { + + this.panner.refDistance = value; + + }, + + getRolloffFactor: function () { + + return this.panner.rolloffFactor; + + }, + + setRolloffFactor: function ( value ) { + + this.panner.rolloffFactor = value; + + }, + + getDistanceModel: function () { + + return this.panner.distanceModel; + + }, + + setDistanceModel: function ( value ) { + + this.panner.distanceModel = value; + + }, + + getMaxDistance: function () { + + return this.panner.maxDistance; + + }, + + setMaxDistance: function ( value ) { + + this.panner.maxDistance = value; + + }, + + updateMatrixWorld: ( function () { + + var position = new Vector3(); + + return function updateMatrixWorld( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + position.setFromMatrixPosition( this.matrixWorld ); + + this.panner.setPosition( position.x, position.y, position.z ); + + }; + + } )() + + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AudioAnalyser( audio, fftSize ) { + + this.analyser = audio.context.createAnalyser(); + this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048; + + this.data = new Uint8Array( this.analyser.frequencyBinCount ); + + audio.getOutput().connect( this.analyser ); + + } + + Object.assign( AudioAnalyser.prototype, { + + getFrequencyData: function () { + + this.analyser.getByteFrequencyData( this.data ); + + return this.data; + + }, + + getAverageFrequency: function () { + + var value = 0, data = this.getFrequencyData(); + + for ( var i = 0; i < data.length; i ++ ) { + + value += data[ i ]; + + } + + return value / data.length; + + } + + } ); + + /** + * + * Buffered scene graph property that allows weighted accumulation. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function PropertyMixer( binding, typeName, valueSize ) { + + this.binding = binding; + this.valueSize = valueSize; + + var bufferType = Float64Array, + mixFunction; + + switch ( typeName ) { + + case 'quaternion': + mixFunction = this._slerp; + break; + + case 'string': + case 'bool': + bufferType = Array; + mixFunction = this._select; + break; + + default: + mixFunction = this._lerp; + + } + + this.buffer = new bufferType( valueSize * 4 ); + // layout: [ incoming | accu0 | accu1 | orig ] + // + // interpolators can use .buffer as their .result + // the data then goes to 'incoming' + // + // 'accu0' and 'accu1' are used frame-interleaved for + // the cumulative result and are compared to detect + // changes + // + // 'orig' stores the original state of the property + + this._mixBufferRegion = mixFunction; + + this.cumulativeWeight = 0; + + this.useCount = 0; + this.referenceCount = 0; + + } + + Object.assign( PropertyMixer.prototype, { + + // accumulate data in the 'incoming' region into 'accu' + accumulate: function ( accuIndex, weight ) { + + // note: happily accumulating nothing when weight = 0, the caller knows + // the weight and shouldn't have made the call in the first place + + var buffer = this.buffer, + stride = this.valueSize, + offset = accuIndex * stride + stride, + + currentWeight = this.cumulativeWeight; + + if ( currentWeight === 0 ) { + + // accuN := incoming * weight + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ offset + i ] = buffer[ i ]; + + } + + currentWeight = weight; + + } else { + + // accuN := accuN + incoming * weight + + currentWeight += weight; + var mix = weight / currentWeight; + this._mixBufferRegion( buffer, offset, 0, mix, stride ); + + } + + this.cumulativeWeight = currentWeight; + + }, + + // apply the state of 'accu' to the binding when accus differ + apply: function ( accuIndex ) { + + var stride = this.valueSize, + buffer = this.buffer, + offset = accuIndex * stride + stride, + + weight = this.cumulativeWeight, + + binding = this.binding; + + this.cumulativeWeight = 0; + + if ( weight < 1 ) { + + // accuN := accuN + original * ( 1 - cumulativeWeight ) + + var originalValueOffset = stride * 3; + + this._mixBufferRegion( + buffer, offset, originalValueOffset, 1 - weight, stride ); + + } + + for ( var i = stride, e = stride + stride; i !== e; ++ i ) { + + if ( buffer[ i ] !== buffer[ i + stride ] ) { + + // value has changed -> update scene graph + + binding.setValue( buffer, offset ); + break; + + } + + } + + }, + + // remember the state of the bound property and copy it to both accus + saveOriginalState: function () { + + var binding = this.binding; + + var buffer = this.buffer, + stride = this.valueSize, + + originalValueOffset = stride * 3; + + binding.getValue( buffer, originalValueOffset ); + + // accu[0..1] := orig -- initially detect changes against the original + for ( var i = stride, e = originalValueOffset; i !== e; ++ i ) { + + buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; + + } + + this.cumulativeWeight = 0; + + }, + + // apply the state previously taken via 'saveOriginalState' to the binding + restoreOriginalState: function () { + + var originalValueOffset = this.valueSize * 3; + this.binding.setValue( this.buffer, originalValueOffset ); + + }, + + + // mix functions + + _select: function ( buffer, dstOffset, srcOffset, t, stride ) { + + if ( t >= 0.5 ) { + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; + + } + + } + + }, + + _slerp: function ( buffer, dstOffset, srcOffset, t ) { + + Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); + + }, + + _lerp: function ( buffer, dstOffset, srcOffset, t, stride ) { + + var s = 1 - t; + + for ( var i = 0; i !== stride; ++ i ) { + + var j = dstOffset + i; + + buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; + + } + + } + + } ); + + /** + * + * A reference to a real property in the scene graph. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function Composite( targetGroup, path, optionalParsedPath ) { + + var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); + + this._targetGroup = targetGroup; + this._bindings = targetGroup.subscribe_( path, parsedPath ); + + } + + Object.assign( Composite.prototype, { + + getValue: function ( array, offset ) { + + this.bind(); // bind all binding + + var firstValidIndex = this._targetGroup.nCachedObjects_, + binding = this._bindings[ firstValidIndex ]; + + // and only call .getValue on the first + if ( binding !== undefined ) binding.getValue( array, offset ); + + }, + + setValue: function ( array, offset ) { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, + n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].setValue( array, offset ); + + } + + }, + + bind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, + n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].bind(); + + } + + }, + + unbind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, + n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].unbind(); + + } + + } + + } ); + + + function PropertyBinding( rootNode, path, parsedPath ) { + + this.path = path; + this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); + + this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode; + + this.rootNode = rootNode; + + } + + Object.assign( PropertyBinding, { + + Composite: Composite, + + create: function ( root, path, parsedPath ) { + + if ( ! ( root && root.isAnimationObjectGroup ) ) { + + return new PropertyBinding( root, path, parsedPath ); + + } else { + + return new PropertyBinding.Composite( root, path, parsedPath ); + + } + + }, + + /** + * Replaces spaces with underscores and removes unsupported characters from + * node names, to ensure compatibility with parseTrackName(). + * + * @param {string} name Node name to be sanitized. + * @return {string} + */ + sanitizeNodeName: function ( name ) { + + return name.replace( /\s/g, '_' ).replace( /[^\w-]/g, '' ); + + }, + + parseTrackName: function () { + + // Parent directories, delimited by '/' or ':'. Currently unused, but must + // be matched to parse the rest of the track name. + var directoryRe = /((?:[\w-]+[\/:])*)/; + + // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. + var nodeRe = /([\w-\.]+)?/; + + // Object on target node, and accessor. Name may contain only word + // characters. Accessor may contain any character except closing bracket. + var objectRe = /(?:\.([\w-]+)(?:\[(.+)\])?)?/; + + // Property and accessor. May contain only word characters. Accessor may + // contain any non-bracket characters. + var propertyRe = /\.([\w-]+)(?:\[(.+)\])?/; + + var trackRe = new RegExp( '' + + '^' + + directoryRe.source + + nodeRe.source + + objectRe.source + + propertyRe.source + + '$' + ); + + var supportedObjectNames = [ 'material', 'materials', 'bones' ]; + + return function ( trackName ) { + + var matches = trackRe.exec( trackName ); + + if ( ! matches ) { + + throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); + + } + + var results = { + // directoryName: matches[ 1 ], // (tschw) currently unused + nodeName: matches[ 2 ], + objectName: matches[ 3 ], + objectIndex: matches[ 4 ], + propertyName: matches[ 5 ], // required + propertyIndex: matches[ 6 ] + }; + + var lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); + + if ( lastDot !== undefined && lastDot !== - 1 ) { + + var objectName = results.nodeName.substring( lastDot + 1 ); + + // Object names must be checked against a whitelist. Otherwise, there + // is no way to parse 'foo.bar.baz': 'baz' must be a property, but + // 'bar' could be the objectName, or part of a nodeName (which can + // include '.' characters). + if ( supportedObjectNames.indexOf( objectName ) !== - 1 ) { + + results.nodeName = results.nodeName.substring( 0, lastDot ); + results.objectName = objectName; + + } + + } + + if ( results.propertyName === null || results.propertyName.length === 0 ) { + + throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); + + } + + return results; + + }; + + }(), + + findNode: function ( root, nodeName ) { + + if ( ! nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) { + + return root; + + } + + // search into skeleton bones. + if ( root.skeleton ) { + + var searchSkeleton = function ( skeleton ) { + + for ( var i = 0; i < skeleton.bones.length; i ++ ) { + + var bone = skeleton.bones[ i ]; + + if ( bone.name === nodeName ) { + + return bone; + + } + + } + + return null; + + }; + + var bone = searchSkeleton( root.skeleton ); + + if ( bone ) { + + return bone; + + } + + } + + // search into node subtree. + if ( root.children ) { + + var searchNodeSubtree = function ( children ) { + + for ( var i = 0; i < children.length; i ++ ) { + + var childNode = children[ i ]; + + if ( childNode.name === nodeName || childNode.uuid === nodeName ) { + + return childNode; + + } + + var result = searchNodeSubtree( childNode.children ); + + if ( result ) return result; + + } + + return null; + + }; + + var subTreeNode = searchNodeSubtree( root.children ); + + if ( subTreeNode ) { + + return subTreeNode; + + } + + } + + return null; + + } + + } ); + + Object.assign( PropertyBinding.prototype, { // prototype, continued + + // these are used to "bind" a nonexistent property + _getValue_unavailable: function () {}, + _setValue_unavailable: function () {}, + + BindingType: { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3 + }, + + Versioning: { + None: 0, + NeedsUpdate: 1, + MatrixWorldNeedsUpdate: 2 + }, + + GetterByBindingType: [ + + function getValue_direct( buffer, offset ) { + + buffer[ offset ] = this.node[ this.propertyName ]; + + }, + + function getValue_array( buffer, offset ) { + + var source = this.resolvedProperty; + + for ( var i = 0, n = source.length; i !== n; ++ i ) { + + buffer[ offset ++ ] = source[ i ]; + + } + + }, + + function getValue_arrayElement( buffer, offset ) { + + buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; + + }, + + function getValue_toArray( buffer, offset ) { + + this.resolvedProperty.toArray( buffer, offset ); + + } + + ], + + SetterByBindingTypeAndVersioning: [ + + [ + // Direct + + function setValue_direct( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + + }, + + function setValue_direct_setNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // EntireArray + + function setValue_array( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + }, + + function setValue_array_setNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.needsUpdate = true; + + }, + + function setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // ArrayElement + + function setValue_arrayElement( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + + }, + + function setValue_arrayElement_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // HasToFromArray + + function setValue_fromArray( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + + }, + + function setValue_fromArray_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.needsUpdate = true; + + }, + + function setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ] + + ], + + getValue: function getValue_unbound( targetArray, offset ) { + + this.bind(); + this.getValue( targetArray, offset ); + + // Note: This class uses a State pattern on a per-method basis: + // 'bind' sets 'this.getValue' / 'setValue' and shadows the + // prototype version of these methods with one that represents + // the bound state. When the property is not found, the methods + // become no-ops. + + }, + + setValue: function getValue_unbound( sourceArray, offset ) { + + this.bind(); + this.setValue( sourceArray, offset ); + + }, + + // create getter / setter pair for a property in the scene graph + bind: function () { + + var targetObject = this.node, + parsedPath = this.parsedPath, + + objectName = parsedPath.objectName, + propertyName = parsedPath.propertyName, + propertyIndex = parsedPath.propertyIndex; + + if ( ! targetObject ) { + + targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode; + + this.node = targetObject; + + } + + // set fail state so we can just 'return' on error + this.getValue = this._getValue_unavailable; + this.setValue = this._setValue_unavailable; + + // ensure there is a value node + if ( ! targetObject ) { + + console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' ); + return; + + } + + if ( objectName ) { + + var objectIndex = parsedPath.objectIndex; + + // special cases were we need to reach deeper into the hierarchy to get the face materials.... + switch ( objectName ) { + + case 'materials': + + if ( ! targetObject.material ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); + return; + + } + + if ( ! targetObject.material.materials ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); + return; + + } + + targetObject = targetObject.material.materials; + + break; + + case 'bones': + + if ( ! targetObject.skeleton ) { + + console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); + return; + + } + + // potential future optimization: skip this if propertyIndex is already an integer + // and convert the integer string to a true integer. + + targetObject = targetObject.skeleton.bones; + + // support resolving morphTarget names into indices. + for ( var i = 0; i < targetObject.length; i ++ ) { + + if ( targetObject[ i ].name === objectIndex ) { + + objectIndex = i; + break; + + } + + } + + break; + + default: + + if ( targetObject[ objectName ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); + return; + + } + + targetObject = targetObject[ objectName ]; + + } + + + if ( objectIndex !== undefined ) { + + if ( targetObject[ objectIndex ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); + return; + + } + + targetObject = targetObject[ objectIndex ]; + + } + + } + + // resolve property + var nodeProperty = targetObject[ propertyName ]; + + if ( nodeProperty === undefined ) { + + var nodeName = parsedPath.nodeName; + + console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + + '.' + propertyName + ' but it wasn\'t found.', targetObject ); + return; + + } + + // determine versioning scheme + var versioning = this.Versioning.None; + + if ( targetObject.needsUpdate !== undefined ) { // material + + versioning = this.Versioning.NeedsUpdate; + this.targetObject = targetObject; + + } else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform + + versioning = this.Versioning.MatrixWorldNeedsUpdate; + this.targetObject = targetObject; + + } + + // determine how the property gets bound + var bindingType = this.BindingType.Direct; + + if ( propertyIndex !== undefined ) { + + // access a sub element of the property array (only primitives are supported right now) + + if ( propertyName === "morphTargetInfluences" ) { + + // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. + + // support resolving morphTarget names into indices. + if ( ! targetObject.geometry ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); + return; + + } + + if ( targetObject.geometry.isBufferGeometry ) { + + if ( ! targetObject.geometry.morphAttributes ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) { + + if ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + + } else { + + if ( ! targetObject.geometry.morphTargets ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) { + + if ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + } + + } + + bindingType = this.BindingType.ArrayElement; + + this.resolvedProperty = nodeProperty; + this.propertyIndex = propertyIndex; + + } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { + + // must use copy for Object3D.Euler/Quaternion + + bindingType = this.BindingType.HasFromToArray; + + this.resolvedProperty = nodeProperty; + + } else if ( Array.isArray( nodeProperty ) ) { + + bindingType = this.BindingType.EntireArray; + + this.resolvedProperty = nodeProperty; + + } else { + + this.propertyName = propertyName; + + } + + // select getter / setter + this.getValue = this.GetterByBindingType[ bindingType ]; + this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; + + }, + + unbind: function () { + + this.node = null; + + // back to the prototype version of getValue / setValue + // note: avoiding to mutate the shape of 'this' via 'delete' + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( PropertyBinding.prototype, { + + // initial state of these methods that calls 'bind' + _getValue_unbound: PropertyBinding.prototype.getValue, + _setValue_unbound: PropertyBinding.prototype.setValue, + + } ); + + /** + * + * A group of objects that receives a shared animation state. + * + * Usage: + * + * - Add objects you would otherwise pass as 'root' to the + * constructor or the .clipAction method of AnimationMixer. + * + * - Instead pass this object as 'root'. + * + * - You can also add and remove objects later when the mixer + * is running. + * + * Note: + * + * Objects of this class appear as one object to the mixer, + * so cache control of the individual objects must be done + * on the group. + * + * Limitation: + * + * - The animated properties must be compatible among the + * all objects in the group. + * + * - A single property can either be controlled through a + * target group or directly, but not both. + * + * @author tschw + */ + + function AnimationObjectGroup() { + + this.uuid = _Math.generateUUID(); + + // cached objects followed by the active ones + this._objects = Array.prototype.slice.call( arguments ); + + this.nCachedObjects_ = 0; // threshold + // note: read by PropertyBinding.Composite + + var indices = {}; + this._indicesByUUID = indices; // for bookkeeping + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + indices[ arguments[ i ].uuid ] = i; + + } + + this._paths = []; // inside: string + this._parsedPaths = []; // inside: { we don't care, here } + this._bindings = []; // inside: Array< PropertyBinding > + this._bindingsIndicesByPath = {}; // inside: indices in these arrays + + var scope = this; + + this.stats = { + + objects: { + get total() { + + return scope._objects.length; + + }, + get inUse() { + + return this.total - scope.nCachedObjects_; + + } + }, + get bindingsPerObject() { + + return scope._bindings.length; + + } + + }; + + } + + Object.assign( AnimationObjectGroup.prototype, { + + isAnimationObjectGroup: true, + + add: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ], + knownObject = undefined; + + if ( index === undefined ) { + + // unknown object -> add it to the ACTIVE region + + index = nObjects ++; + indicesByUUID[ uuid ] = index; + objects.push( object ); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); + + } + + } else if ( index < nCachedObjects ) { + + knownObject = objects[ index ]; + + // move existing object to the ACTIVE region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ]; + + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + indicesByUUID[ uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = lastCached; + + if ( binding === undefined ) { + + // since we do not bother to create new bindings + // for objects that are cached, the binding may + // or may not exist + + binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); + + } + + bindingsForPath[ firstActiveIndex ] = binding; + + } + + } else if ( objects[ index ] !== knownObject ) { + + console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); + + } // else the object is already where we want it to be + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + remove: function () { + + var objects = this._objects, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined && index >= nCachedObjects ) { + + // move existing object into the CACHED region + + var lastCachedIndex = nCachedObjects ++, + firstActiveObject = objects[ lastCachedIndex ]; + + indicesByUUID[ firstActiveObject.uuid ] = index; + objects[ index ] = firstActiveObject; + + indicesByUUID[ uuid ] = lastCachedIndex; + objects[ lastCachedIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + firstActive = bindingsForPath[ lastCachedIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = firstActive; + bindingsForPath[ lastCachedIndex ] = binding; + + } + + } + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // remove & forget + uncache: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined ) { + + delete indicesByUUID[ uuid ]; + + if ( index < nCachedObjects ) { + + // object is cached, shrink the CACHED region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ], + lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + // last cached object takes this object's place + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + // last object goes to the activated slot and pop + indicesByUUID[ lastObject.uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + last = bindingsForPath[ lastIndex ]; + + bindingsForPath[ index ] = lastCached; + bindingsForPath[ firstActiveIndex ] = last; + bindingsForPath.pop(); + + } + + } else { + + // object is active, just swap with the last and pop + + var lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + indicesByUUID[ lastObject.uuid ] = index; + objects[ index ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ]; + + bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; + bindingsForPath.pop(); + + } + + } // cached or active + + } // if object is known + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // Internal interface used by befriended PropertyBinding.Composite: + + subscribe_: function ( path, parsedPath ) { + + // returns an array of bindings for the given path that is changed + // according to the contained objects in the group + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ], + bindings = this._bindings; + + if ( index !== undefined ) return bindings[ index ]; + + var paths = this._paths, + parsedPaths = this._parsedPaths, + objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + bindingsForPath = new Array( nObjects ); + + index = bindings.length; + + indicesByPath[ path ] = index; + + paths.push( path ); + parsedPaths.push( parsedPath ); + bindings.push( bindingsForPath ); + + for ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) { + + var object = objects[ i ]; + bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); + + } + + return bindingsForPath; + + }, + + unsubscribe_: function ( path ) { + + // tells the group to forget about a property path and no longer + // update the array previously obtained with 'subscribe_' + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ]; + + if ( index !== undefined ) { + + var paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + lastBindingsIndex = bindings.length - 1, + lastBindings = bindings[ lastBindingsIndex ], + lastBindingsPath = path[ lastBindingsIndex ]; + + indicesByPath[ lastBindingsPath ] = index; + + bindings[ index ] = lastBindings; + bindings.pop(); + + parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; + parsedPaths.pop(); + + paths[ index ] = paths[ lastBindingsIndex ]; + paths.pop(); + + } + + } + + } ); + + /** + * + * Action provided by AnimationMixer for scheduling clip playback on specific + * objects. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + * + */ + + function AnimationAction( mixer, clip, localRoot ) { + + this._mixer = mixer; + this._clip = clip; + this._localRoot = localRoot || null; + + var tracks = clip.tracks, + nTracks = tracks.length, + interpolants = new Array( nTracks ); + + var interpolantSettings = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + + for ( var i = 0; i !== nTracks; ++ i ) { + + var interpolant = tracks[ i ].createInterpolant( null ); + interpolants[ i ] = interpolant; + interpolant.settings = interpolantSettings; + + } + + this._interpolantSettings = interpolantSettings; + + this._interpolants = interpolants; // bound by the mixer + + // inside: PropertyMixer (managed by the mixer) + this._propertyBindings = new Array( nTracks ); + + this._cacheIndex = null; // for the memory manager + this._byClipCacheIndex = null; // for the memory manager + + this._timeScaleInterpolant = null; + this._weightInterpolant = null; + + this.loop = LoopRepeat; + this._loopCount = - 1; + + // global mixer time when the action is to be started + // it's set back to 'null' upon start of the action + this._startTime = null; + + // scaled local time of the action + // gets clamped or wrapped to 0..clip.duration according to loop + this.time = 0; + + this.timeScale = 1; + this._effectiveTimeScale = 1; + + this.weight = 1; + this._effectiveWeight = 1; + + this.repetitions = Infinity; // no. of repetitions when looping + + this.paused = false; // true -> zero effective time scale + this.enabled = true; // false -> zero effective weight + + this.clampWhenFinished = false; // keep feeding the last frame? + + this.zeroSlopeAtStart = true; // for smooth interpolation w/o separate + this.zeroSlopeAtEnd = true; // clips for start, loop and end + + } + + Object.assign( AnimationAction.prototype, { + + // State & Scheduling + + play: function () { + + this._mixer._activateAction( this ); + + return this; + + }, + + stop: function () { + + this._mixer._deactivateAction( this ); + + return this.reset(); + + }, + + reset: function () { + + this.paused = false; + this.enabled = true; + + this.time = 0; // restart clip + this._loopCount = - 1; // forget previous loops + this._startTime = null; // forget scheduling + + return this.stopFading().stopWarping(); + + }, + + isRunning: function () { + + return this.enabled && ! this.paused && this.timeScale !== 0 && + this._startTime === null && this._mixer._isActiveAction( this ); + + }, + + // return true when play has been called + isScheduled: function () { + + return this._mixer._isActiveAction( this ); + + }, + + startAt: function ( time ) { + + this._startTime = time; + + return this; + + }, + + setLoop: function ( mode, repetitions ) { + + this.loop = mode; + this.repetitions = repetitions; + + return this; + + }, + + // Weight + + // set the weight stopping any scheduled fading + // although .enabled = false yields an effective weight of zero, this + // method does *not* change .enabled, because it would be confusing + setEffectiveWeight: function ( weight ) { + + this.weight = weight; + + // note: same logic as when updated at runtime + this._effectiveWeight = this.enabled ? weight : 0; + + return this.stopFading(); + + }, + + // return the weight considering fading and .enabled + getEffectiveWeight: function () { + + return this._effectiveWeight; + + }, + + fadeIn: function ( duration ) { + + return this._scheduleFading( duration, 0, 1 ); + + }, + + fadeOut: function ( duration ) { + + return this._scheduleFading( duration, 1, 0 ); + + }, + + crossFadeFrom: function ( fadeOutAction, duration, warp ) { + + fadeOutAction.fadeOut( duration ); + this.fadeIn( duration ); + + if ( warp ) { + + var fadeInDuration = this._clip.duration, + fadeOutDuration = fadeOutAction._clip.duration, + + startEndRatio = fadeOutDuration / fadeInDuration, + endStartRatio = fadeInDuration / fadeOutDuration; + + fadeOutAction.warp( 1.0, startEndRatio, duration ); + this.warp( endStartRatio, 1.0, duration ); + + } + + return this; + + }, + + crossFadeTo: function ( fadeInAction, duration, warp ) { + + return fadeInAction.crossFadeFrom( this, duration, warp ); + + }, + + stopFading: function () { + + var weightInterpolant = this._weightInterpolant; + + if ( weightInterpolant !== null ) { + + this._weightInterpolant = null; + this._mixer._takeBackControlInterpolant( weightInterpolant ); + + } + + return this; + + }, + + // Time Scale Control + + // set the time scale stopping any scheduled warping + // although .paused = true yields an effective time scale of zero, this + // method does *not* change .paused, because it would be confusing + setEffectiveTimeScale: function ( timeScale ) { + + this.timeScale = timeScale; + this._effectiveTimeScale = this.paused ? 0 : timeScale; + + return this.stopWarping(); + + }, + + // return the time scale considering warping and .paused + getEffectiveTimeScale: function () { + + return this._effectiveTimeScale; + + }, + + setDuration: function ( duration ) { + + this.timeScale = this._clip.duration / duration; + + return this.stopWarping(); + + }, + + syncWith: function ( action ) { + + this.time = action.time; + this.timeScale = action.timeScale; + + return this.stopWarping(); + + }, + + halt: function ( duration ) { + + return this.warp( this._effectiveTimeScale, 0, duration ); + + }, + + warp: function ( startTimeScale, endTimeScale, duration ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._timeScaleInterpolant, + + timeScale = this.timeScale; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._timeScaleInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + times[ 1 ] = now + duration; + + values[ 0 ] = startTimeScale / timeScale; + values[ 1 ] = endTimeScale / timeScale; + + return this; + + }, + + stopWarping: function () { + + var timeScaleInterpolant = this._timeScaleInterpolant; + + if ( timeScaleInterpolant !== null ) { + + this._timeScaleInterpolant = null; + this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); + + } + + return this; + + }, + + // Object Accessors + + getMixer: function () { + + return this._mixer; + + }, + + getClip: function () { + + return this._clip; + + }, + + getRoot: function () { + + return this._localRoot || this._mixer._root; + + }, + + // Interna + + _update: function ( time, deltaTime, timeDirection, accuIndex ) { + + // called by the mixer + + if ( ! this.enabled ) { + + // call ._updateWeight() to update ._effectiveWeight + + this._updateWeight( time ); + return; + + } + + var startTime = this._startTime; + + if ( startTime !== null ) { + + // check for scheduled start of action + + var timeRunning = ( time - startTime ) * timeDirection; + if ( timeRunning < 0 || timeDirection === 0 ) { + + return; // yet to come / don't decide when delta = 0 + + } + + // start + + this._startTime = null; // unschedule + deltaTime = timeDirection * timeRunning; + + } + + // apply time scale and advance time + + deltaTime *= this._updateTimeScale( time ); + var clipTime = this._updateTime( deltaTime ); + + // note: _updateTime may disable the action resulting in + // an effective weight of 0 + + var weight = this._updateWeight( time ); + + if ( weight > 0 ) { + + var interpolants = this._interpolants; + var propertyMixers = this._propertyBindings; + + for ( var j = 0, m = interpolants.length; j !== m; ++ j ) { + + interpolants[ j ].evaluate( clipTime ); + propertyMixers[ j ].accumulate( accuIndex, weight ); + + } + + } + + }, + + _updateWeight: function ( time ) { + + var weight = 0; + + if ( this.enabled ) { + + weight = this.weight; + var interpolant = this._weightInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + weight *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopFading(); + + if ( interpolantValue === 0 ) { + + // faded out, disable + this.enabled = false; + + } + + } + + } + + } + + this._effectiveWeight = weight; + return weight; + + }, + + _updateTimeScale: function ( time ) { + + var timeScale = 0; + + if ( ! this.paused ) { + + timeScale = this.timeScale; + + var interpolant = this._timeScaleInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + timeScale *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopWarping(); + + if ( timeScale === 0 ) { + + // motion has halted, pause + this.paused = true; + + } else { + + // warp done - apply final time scale + this.timeScale = timeScale; + + } + + } + + } + + } + + this._effectiveTimeScale = timeScale; + return timeScale; + + }, + + _updateTime: function ( deltaTime ) { + + var time = this.time + deltaTime; + + if ( deltaTime === 0 ) return time; + + var duration = this._clip.duration, + + loop = this.loop, + loopCount = this._loopCount; + + if ( loop === LoopOnce ) { + + if ( loopCount === - 1 ) { + + // just started + + this._loopCount = 0; + this._setEndings( true, true, false ); + + } + + handle_stop: { + + if ( time >= duration ) { + + time = duration; + + } else if ( time < 0 ) { + + time = 0; + + } else break handle_stop; + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime < 0 ? - 1 : 1 + } ); + + } + + } else { // repetitive Repeat or PingPong + + var pingPong = ( loop === LoopPingPong ); + + if ( loopCount === - 1 ) { + + // just started + + if ( deltaTime >= 0 ) { + + loopCount = 0; + + this._setEndings( true, this.repetitions === 0, pingPong ); + + } else { + + // when looping in reverse direction, the initial + // transition through zero counts as a repetition, + // so leave loopCount at -1 + + this._setEndings( this.repetitions === 0, true, pingPong ); + + } + + } + + if ( time >= duration || time < 0 ) { + + // wrap around + + var loopDelta = Math.floor( time / duration ); // signed + time -= duration * loopDelta; + + loopCount += Math.abs( loopDelta ); + + var pending = this.repetitions - loopCount; + + if ( pending < 0 ) { + + // have to stop (switch state, clamp time, fire event) + + if ( this.clampWhenFinished ) this.paused = true; + else this.enabled = false; + + time = deltaTime > 0 ? duration : 0; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime > 0 ? 1 : - 1 + } ); + + } else { + + // keep running + + if ( pending === 0 ) { + + // entering the last round + + var atStart = deltaTime < 0; + this._setEndings( atStart, ! atStart, pingPong ); + + } else { + + this._setEndings( false, false, pingPong ); + + } + + this._loopCount = loopCount; + + this._mixer.dispatchEvent( { + type: 'loop', action: this, loopDelta: loopDelta + } ); + + } + + } + + if ( pingPong && ( loopCount & 1 ) === 1 ) { + + // invert time for the "pong round" + + this.time = time; + return duration - time; + + } + + } + + this.time = time; + return time; + + }, + + _setEndings: function ( atStart, atEnd, pingPong ) { + + var settings = this._interpolantSettings; + + if ( pingPong ) { + + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; + + } else { + + // assuming for LoopOnce atStart == atEnd == true + + if ( atStart ) { + + settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingStart = WrapAroundEnding; + + } + + if ( atEnd ) { + + settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingEnd = WrapAroundEnding; + + } + + } + + }, + + _scheduleFading: function ( duration, weightNow, weightThen ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._weightInterpolant; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._weightInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; values[ 0 ] = weightNow; + times[ 1 ] = now + duration; values[ 1 ] = weightThen; + + return this; + + } + + } ); + + /** + * + * Player for AnimationClips. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function AnimationMixer( root ) { + + this._root = root; + this._initMemoryManager(); + this._accuIndex = 0; + + this.time = 0; + + this.timeScale = 1.0; + + } + + AnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: AnimationMixer, + + _bindAction: function ( action, prototypeAction ) { + + var root = action._localRoot || this._root, + tracks = action._clip.tracks, + nTracks = tracks.length, + bindings = action._propertyBindings, + interpolants = action._interpolants, + rootUuid = root.uuid, + bindingsByRoot = this._bindingsByRootAndName, + bindingsByName = bindingsByRoot[ rootUuid ]; + + if ( bindingsByName === undefined ) { + + bindingsByName = {}; + bindingsByRoot[ rootUuid ] = bindingsByName; + + } + + for ( var i = 0; i !== nTracks; ++ i ) { + + var track = tracks[ i ], + trackName = track.name, + binding = bindingsByName[ trackName ]; + + if ( binding !== undefined ) { + + bindings[ i ] = binding; + + } else { + + binding = bindings[ i ]; + + if ( binding !== undefined ) { + + // existing binding, make sure the cache knows + + if ( binding._cacheIndex === null ) { + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + } + + continue; + + } + + var path = prototypeAction && prototypeAction. + _propertyBindings[ i ].binding.parsedPath; + + binding = new PropertyMixer( + PropertyBinding.create( root, trackName, path ), + track.ValueTypeName, track.getValueSize() ); + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + bindings[ i ] = binding; + + } + + interpolants[ i ].resultBuffer = binding.buffer; + + } + + }, + + _activateAction: function ( action ) { + + if ( ! this._isActiveAction( action ) ) { + + if ( action._cacheIndex === null ) { + + // this action has been forgotten by the cache, but the user + // appears to be still using it -> rebind + + var rootUuid = ( action._localRoot || this._root ).uuid, + clipUuid = action._clip.uuid, + actionsForClip = this._actionsByClip[ clipUuid ]; + + this._bindAction( action, + actionsForClip && actionsForClip.knownActions[ 0 ] ); + + this._addInactiveAction( action, clipUuid, rootUuid ); + + } + + var bindings = action._propertyBindings; + + // increment reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( binding.useCount ++ === 0 ) { + + this._lendBinding( binding ); + binding.saveOriginalState(); + + } + + } + + this._lendAction( action ); + + } + + }, + + _deactivateAction: function ( action ) { + + if ( this._isActiveAction( action ) ) { + + var bindings = action._propertyBindings; + + // decrement reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.useCount === 0 ) { + + binding.restoreOriginalState(); + this._takeBackBinding( binding ); + + } + + } + + this._takeBackAction( action ); + + } + + }, + + // Memory manager + + _initMemoryManager: function () { + + this._actions = []; // 'nActiveActions' followed by inactive ones + this._nActiveActions = 0; + + this._actionsByClip = {}; + // inside: + // { + // knownActions: Array< AnimationAction > - used as prototypes + // actionByRoot: AnimationAction - lookup + // } + + + this._bindings = []; // 'nActiveBindings' followed by inactive ones + this._nActiveBindings = 0; + + this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > + + + this._controlInterpolants = []; // same game as above + this._nActiveControlInterpolants = 0; + + var scope = this; + + this.stats = { + + actions: { + get total() { + + return scope._actions.length; + + }, + get inUse() { + + return scope._nActiveActions; + + } + }, + bindings: { + get total() { + + return scope._bindings.length; + + }, + get inUse() { + + return scope._nActiveBindings; + + } + }, + controlInterpolants: { + get total() { + + return scope._controlInterpolants.length; + + }, + get inUse() { + + return scope._nActiveControlInterpolants; + + } + } + + }; + + }, + + // Memory management for AnimationAction objects + + _isActiveAction: function ( action ) { + + var index = action._cacheIndex; + return index !== null && index < this._nActiveActions; + + }, + + _addInactiveAction: function ( action, clipUuid, rootUuid ) { + + var actions = this._actions, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip === undefined ) { + + actionsForClip = { + + knownActions: [ action ], + actionByRoot: {} + + }; + + action._byClipCacheIndex = 0; + + actionsByClip[ clipUuid ] = actionsForClip; + + } else { + + var knownActions = actionsForClip.knownActions; + + action._byClipCacheIndex = knownActions.length; + knownActions.push( action ); + + } + + action._cacheIndex = actions.length; + actions.push( action ); + + actionsForClip.actionByRoot[ rootUuid ] = action; + + }, + + _removeInactiveAction: function ( action ) { + + var actions = this._actions, + lastInactiveAction = actions[ actions.length - 1 ], + cacheIndex = action._cacheIndex; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + action._cacheIndex = null; + + + var clipUuid = action._clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ], + knownActionsForClip = actionsForClip.knownActions, + + lastKnownAction = + knownActionsForClip[ knownActionsForClip.length - 1 ], + + byClipCacheIndex = action._byClipCacheIndex; + + lastKnownAction._byClipCacheIndex = byClipCacheIndex; + knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; + knownActionsForClip.pop(); + + action._byClipCacheIndex = null; + + + var actionByRoot = actionsForClip.actionByRoot, + rootUuid = ( action._localRoot || this._root ).uuid; + + delete actionByRoot[ rootUuid ]; + + if ( knownActionsForClip.length === 0 ) { + + delete actionsByClip[ clipUuid ]; + + } + + this._removeInactiveBindingsForAction( action ); + + }, + + _removeInactiveBindingsForAction: function ( action ) { + + var bindings = action._propertyBindings; + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.referenceCount === 0 ) { + + this._removeInactiveBinding( binding ); + + } + + } + + }, + + _lendAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions >| inactive actions ] + // s a + // <-swap-> + // a s + + var actions = this._actions, + prevIndex = action._cacheIndex, + + lastActiveIndex = this._nActiveActions ++, + + firstInactiveAction = actions[ lastActiveIndex ]; + + action._cacheIndex = lastActiveIndex; + actions[ lastActiveIndex ] = action; + + firstInactiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = firstInactiveAction; + + }, + + _takeBackAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions |< inactive actions ] + // a s + // <-swap-> + // s a + + var actions = this._actions, + prevIndex = action._cacheIndex, + + firstInactiveIndex = -- this._nActiveActions, + + lastActiveAction = actions[ firstInactiveIndex ]; + + action._cacheIndex = firstInactiveIndex; + actions[ firstInactiveIndex ] = action; + + lastActiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = lastActiveAction; + + }, + + // Memory management for PropertyMixer objects + + _addInactiveBinding: function ( binding, rootUuid, trackName ) { + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + bindings = this._bindings; + + if ( bindingByName === undefined ) { + + bindingByName = {}; + bindingsByRoot[ rootUuid ] = bindingByName; + + } + + bindingByName[ trackName ] = binding; + + binding._cacheIndex = bindings.length; + bindings.push( binding ); + + }, + + _removeInactiveBinding: function ( binding ) { + + var bindings = this._bindings, + propBinding = binding.binding, + rootUuid = propBinding.rootNode.uuid, + trackName = propBinding.path, + bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + lastInactiveBinding = bindings[ bindings.length - 1 ], + cacheIndex = binding._cacheIndex; + + lastInactiveBinding._cacheIndex = cacheIndex; + bindings[ cacheIndex ] = lastInactiveBinding; + bindings.pop(); + + delete bindingByName[ trackName ]; + + remove_empty_map: { + + for ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars + + delete bindingsByRoot[ rootUuid ]; + + } + + }, + + _lendBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + lastActiveIndex = this._nActiveBindings ++, + + firstInactiveBinding = bindings[ lastActiveIndex ]; + + binding._cacheIndex = lastActiveIndex; + bindings[ lastActiveIndex ] = binding; + + firstInactiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = firstInactiveBinding; + + }, + + _takeBackBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + firstInactiveIndex = -- this._nActiveBindings, + + lastActiveBinding = bindings[ firstInactiveIndex ]; + + binding._cacheIndex = firstInactiveIndex; + bindings[ firstInactiveIndex ] = binding; + + lastActiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = lastActiveBinding; + + }, + + + // Memory management of Interpolants for weight and time scale + + _lendControlInterpolant: function () { + + var interpolants = this._controlInterpolants, + lastActiveIndex = this._nActiveControlInterpolants ++, + interpolant = interpolants[ lastActiveIndex ]; + + if ( interpolant === undefined ) { + + interpolant = new LinearInterpolant( + new Float32Array( 2 ), new Float32Array( 2 ), + 1, this._controlInterpolantsResultBuffer ); + + interpolant.__cacheIndex = lastActiveIndex; + interpolants[ lastActiveIndex ] = interpolant; + + } + + return interpolant; + + }, + + _takeBackControlInterpolant: function ( interpolant ) { + + var interpolants = this._controlInterpolants, + prevIndex = interpolant.__cacheIndex, + + firstInactiveIndex = -- this._nActiveControlInterpolants, + + lastActiveInterpolant = interpolants[ firstInactiveIndex ]; + + interpolant.__cacheIndex = firstInactiveIndex; + interpolants[ firstInactiveIndex ] = interpolant; + + lastActiveInterpolant.__cacheIndex = prevIndex; + interpolants[ prevIndex ] = lastActiveInterpolant; + + }, + + _controlInterpolantsResultBuffer: new Float32Array( 1 ), + + // return an action for a clip optionally using a custom root target + // object (this method allocates a lot of dynamic memory in case a + // previously unknown clip/root combination is specified) + clipAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject !== null ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ], + prototypeAction = null; + + if ( actionsForClip !== undefined ) { + + var existingAction = + actionsForClip.actionByRoot[ rootUuid ]; + + if ( existingAction !== undefined ) { + + return existingAction; + + } + + // we know the clip, so we don't have to parse all + // the bindings again but can just copy + prototypeAction = actionsForClip.knownActions[ 0 ]; + + // also, take the clip from the prototype action + if ( clipObject === null ) + clipObject = prototypeAction._clip; + + } + + // clip must be known when specified via string + if ( clipObject === null ) return null; + + // allocate all resources required to run it + var newAction = new AnimationAction( this, clipObject, optionalRoot ); + + this._bindAction( newAction, prototypeAction ); + + // and make the action known to the memory manager + this._addInactiveAction( newAction, clipUuid, rootUuid ); + + return newAction; + + }, + + // get an existing action + existingAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + return actionsForClip.actionByRoot[ rootUuid ] || null; + + } + + return null; + + }, + + // deactivates all previously scheduled actions + stopAllAction: function () { + + var actions = this._actions, + nActions = this._nActiveActions, + bindings = this._bindings, + nBindings = this._nActiveBindings; + + this._nActiveActions = 0; + this._nActiveBindings = 0; + + for ( var i = 0; i !== nActions; ++ i ) { + + actions[ i ].reset(); + + } + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].useCount = 0; + + } + + return this; + + }, + + // advance the time and update apply the animation + update: function ( deltaTime ) { + + deltaTime *= this.timeScale; + + var actions = this._actions, + nActions = this._nActiveActions, + + time = this.time += deltaTime, + timeDirection = Math.sign( deltaTime ), + + accuIndex = this._accuIndex ^= 1; + + // run active actions + + for ( var i = 0; i !== nActions; ++ i ) { + + var action = actions[ i ]; + + action._update( time, deltaTime, timeDirection, accuIndex ); + + } + + // update scene graph + + var bindings = this._bindings, + nBindings = this._nActiveBindings; + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].apply( accuIndex ); + + } + + return this; + + }, + + // return this mixer's root target object + getRoot: function () { + + return this._root; + + }, + + // free all resources specific to a particular clip + uncacheClip: function ( clip ) { + + var actions = this._actions, + clipUuid = clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + // note: just calling _removeInactiveAction would mess up the + // iteration state and also require updating the state we can + // just throw away + + var actionsToRemove = actionsForClip.knownActions; + + for ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) { + + var action = actionsToRemove[ i ]; + + this._deactivateAction( action ); + + var cacheIndex = action._cacheIndex, + lastInactiveAction = actions[ actions.length - 1 ]; + + action._cacheIndex = null; + action._byClipCacheIndex = null; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + this._removeInactiveBindingsForAction( action ); + + } + + delete actionsByClip[ clipUuid ]; + + } + + }, + + // free all resources specific to a particular root target object + uncacheRoot: function ( root ) { + + var rootUuid = root.uuid, + actionsByClip = this._actionsByClip; + + for ( var clipUuid in actionsByClip ) { + + var actionByRoot = actionsByClip[ clipUuid ].actionByRoot, + action = actionByRoot[ rootUuid ]; + + if ( action !== undefined ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ]; + + if ( bindingByName !== undefined ) { + + for ( var trackName in bindingByName ) { + + var binding = bindingByName[ trackName ]; + binding.restoreOriginalState(); + this._removeInactiveBinding( binding ); + + } + + } + + }, + + // remove a targeted clip from the cache + uncacheAction: function ( clip, optionalRoot ) { + + var action = this.existingAction( clip, optionalRoot ); + + if ( action !== null ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Uniform( value ) { + + if ( typeof value === 'string' ) { + + console.warn( 'THREE.Uniform: Type parameter is no longer needed.' ); + value = arguments[ 1 ]; + + } + + this.value = value; + + } + + Uniform.prototype.clone = function () { + + return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); + + }; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferGeometry() { + + BufferGeometry.call( this ); + + this.type = 'InstancedBufferGeometry'; + this.maxInstancedCount = undefined; + + } + + InstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), { + + constructor: InstancedBufferGeometry, + + isInstancedBufferGeometry: true, + + copy: function ( source ) { + + BufferGeometry.prototype.copy.call( this, source ); + + this.maxInstancedCount = source.maxInstancedCount; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) { + + this.uuid = _Math.generateUUID(); + + this.data = interleavedBuffer; + this.itemSize = itemSize; + this.offset = offset; + + this.normalized = normalized === true; + + } + + Object.defineProperties( InterleavedBufferAttribute.prototype, { + + count: { + + get: function () { + + return this.data.count; + + } + + }, + + array: { + + get: function () { + + return this.data.array; + + } + + } + + } ); + + Object.assign( InterleavedBufferAttribute.prototype, { + + isInterleavedBufferAttribute: true, + + setX: function ( index, x ) { + + this.data.array[ index * this.data.stride + this.offset ] = x; + + return this; + + }, + + setY: function ( index, y ) { + + this.data.array[ index * this.data.stride + this.offset + 1 ] = y; + + return this; + + }, + + setZ: function ( index, z ) { + + this.data.array[ index * this.data.stride + this.offset + 2 ] = z; + + return this; + + }, + + setW: function ( index, w ) { + + this.data.array[ index * this.data.stride + this.offset + 3 ] = w; + + return this; + + }, + + getX: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset ]; + + }, + + getY: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 1 ]; + + }, + + getZ: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 2 ]; + + }, + + getW: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 3 ]; + + }, + + setXY: function ( index, x, y ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + this.data.array[ index + 3 ] = w; + + return this; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBuffer( array, stride ) { + + this.uuid = _Math.generateUUID(); + + this.array = array; + this.stride = stride; + this.count = array !== undefined ? array.length / stride : 0; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.onUploadCallback = function () {}; + + this.version = 0; + + } + + Object.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) this.version ++; + + } + + } ); + + Object.assign( InterleavedBuffer.prototype, { + + isInterleavedBuffer: true, + + setArray: function ( array ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.count = array !== undefined ? array.length / this.stride : 0; + this.array = array; + + }, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.array = new source.array.constructor( source.array ); + this.count = source.count; + this.stride = source.stride; + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.stride; + index2 *= attribute.stride; + + for ( var i = 0, l = this.stride; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) offset = 0; + + this.array.set( value, offset ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedInterleavedBuffer( array, stride, meshPerAttribute ) { + + InterleavedBuffer.call( this, array, stride ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), { + + constructor: InstancedInterleavedBuffer, + + isInstancedInterleavedBuffer: true, + + copy: function ( source ) { + + InterleavedBuffer.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferAttribute( array, itemSize, meshPerAttribute ) { + + BufferAttribute.call( this, array, itemSize ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), { + + constructor: InstancedBufferAttribute, + + isInstancedBufferAttribute: true, + + copy: function ( source ) { + + BufferAttribute.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author bhouston / http://clara.io/ + * @author stephomi / http://stephaneginier.com/ + */ + + function Raycaster( origin, direction, near, far ) { + + this.ray = new Ray( origin, direction ); + // direction is assumed to be normalized (for accurate distance calculations) + + this.near = near || 0; + this.far = far || Infinity; + + this.params = { + Mesh: {}, + Line: {}, + LOD: {}, + Points: { threshold: 1 }, + Sprite: {} + }; + + Object.defineProperties( this.params, { + PointCloud: { + get: function () { + + console.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' ); + return this.Points; + + } + } + } ); + + } + + function ascSort( a, b ) { + + return a.distance - b.distance; + + } + + function intersectObject( object, raycaster, intersects, recursive ) { + + if ( object.visible === false ) return; + + object.raycast( raycaster, intersects ); + + if ( recursive === true ) { + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + intersectObject( children[ i ], raycaster, intersects, true ); + + } + + } + + } + + Object.assign( Raycaster.prototype, { + + linePrecision: 1, + + set: function ( origin, direction ) { + + // direction is assumed to be normalized (for accurate distance calculations) + + this.ray.set( origin, direction ); + + }, + + setFromCamera: function ( coords, camera ) { + + if ( ( camera && camera.isPerspectiveCamera ) ) { + + this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); + this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); + + } else if ( ( camera && camera.isOrthographicCamera ) ) { + + this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera + this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ); + + } else { + + console.error( 'THREE.Raycaster: Unsupported camera type.' ); + + } + + }, + + intersectObject: function ( object, recursive ) { + + var intersects = []; + + intersectObject( object, this, intersects, recursive ); + + intersects.sort( ascSort ); + + return intersects; + + }, + + intersectObjects: function ( objects, recursive ) { + + var intersects = []; + + if ( Array.isArray( objects ) === false ) { + + console.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); + return intersects; + + } + + for ( var i = 0, l = objects.length; i < l; i ++ ) { + + intersectObject( objects[ i ], this, intersects, recursive ); + + } + + intersects.sort( ascSort ); + + return intersects; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Clock( autoStart ) { + + this.autoStart = ( autoStart !== undefined ) ? autoStart : true; + + this.startTime = 0; + this.oldTime = 0; + this.elapsedTime = 0; + + this.running = false; + + } + + Object.assign( Clock.prototype, { + + start: function () { + + this.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732 + + this.oldTime = this.startTime; + this.elapsedTime = 0; + this.running = true; + + }, + + stop: function () { + + this.getElapsedTime(); + this.running = false; + this.autoStart = false; + + }, + + getElapsedTime: function () { + + this.getDelta(); + return this.elapsedTime; + + }, + + getDelta: function () { + + var diff = 0; + + if ( this.autoStart && ! this.running ) { + + this.start(); + return 0; + + } + + if ( this.running ) { + + var newTime = ( typeof performance === 'undefined' ? Date : performance ).now(); + + diff = ( newTime - this.oldTime ) / 1000; + this.oldTime = newTime; + + this.elapsedTime += diff; + + } + + return diff; + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system + * + * The poles (phi) are at the positive and negative y axis. + * The equator starts at positive z. + */ + + function Spherical( radius, phi, theta ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; + this.phi = ( phi !== undefined ) ? phi : 0; // up / down towards top and bottom pole + this.theta = ( theta !== undefined ) ? theta : 0; // around the equator of the sphere + + return this; + + } + + Object.assign( Spherical.prototype, { + + set: function ( radius, phi, theta ) { + + this.radius = radius; + this.phi = phi; + this.theta = theta; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.phi = other.phi; + this.theta = other.theta; + + return this; + + }, + + // restrict phi to be betwee EPS and PI-EPS + makeSafe: function () { + + var EPS = 0.000001; + this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) ); + + return this; + + }, + + setFromVector3: function ( vec3 ) { + + this.radius = vec3.length(); + + if ( this.radius === 0 ) { + + this.theta = 0; + this.phi = 0; + + } else { + + this.theta = Math.atan2( vec3.x, vec3.z ); // equator angle around y-up axis + this.phi = Math.acos( _Math.clamp( vec3.y / this.radius, - 1, 1 ) ); // polar angle + + } + + return this; + + } + + } ); + + /** + * @author Mugen87 / https://github.com/Mugen87 + * + * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system + * + */ + + function Cylindrical( radius, theta, y ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane + this.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis + this.y = ( y !== undefined ) ? y : 0; // height above the x-z plane + + return this; + + } + + Object.assign( Cylindrical.prototype, { + + set: function ( radius, theta, y ) { + + this.radius = radius; + this.theta = theta; + this.y = y; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.theta = other.theta; + this.y = other.y; + + return this; + + }, + + setFromVector3: function ( vec3 ) { + + this.radius = Math.sqrt( vec3.x * vec3.x + vec3.z * vec3.z ); + this.theta = Math.atan2( vec3.x, vec3.z ); + this.y = vec3.y; + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function ImmediateRenderObject( material ) { + + Object3D.call( this ); + + this.material = material; + this.render = function ( /* renderCallback */ ) {}; + + } + + ImmediateRenderObject.prototype = Object.create( Object3D.prototype ); + ImmediateRenderObject.prototype.constructor = ImmediateRenderObject; + + ImmediateRenderObject.prototype.isImmediateRenderObject = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function VertexNormalsHelper( object, size, hex, linewidth ) { + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xff0000; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length * 3; + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + nNormals = objGeometry.attributes.normal.count; + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + + this.update(); + + } + + VertexNormalsHelper.prototype = Object.create( LineSegments.prototype ); + VertexNormalsHelper.prototype.constructor = VertexNormalsHelper; + + VertexNormalsHelper.prototype.update = ( function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var normalMatrix = new Matrix3(); + + return function update() { + + var keys = [ 'a', 'b', 'c' ]; + + this.object.updateMatrixWorld( true ); + + normalMatrix.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + var vertex = vertices[ face[ keys[ j ] ] ]; + + var normal = face.vertexNormals[ j ]; + + v1.copy( vertex ).applyMatrix4( matrixWorld ); + + v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + } + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + var objPos = objGeometry.attributes.position; + + var objNorm = objGeometry.attributes.normal; + + var idx = 0; + + // for simplicity, ignore index and drawcalls, and render every normal + + for ( var j = 0, jl = objPos.count; j < jl; j ++ ) { + + v1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld ); + + v2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) ); + + v2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + } + + position.needsUpdate = true; + + }; + + }() ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function SpotLightHelper( light, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new BufferGeometry(); + + var positions = [ + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 1, + 0, 0, 0, - 1, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, - 1, 1 + ]; + + for ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { + + var p1 = ( i / l ) * Math.PI * 2; + var p2 = ( j / l ) * Math.PI * 2; + + positions.push( + Math.cos( p1 ), Math.sin( p1 ), 1, + Math.cos( p2 ), Math.sin( p2 ), 1 + ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.cone = new LineSegments( geometry, material ); + this.add( this.cone ); + + this.update(); + + } + + SpotLightHelper.prototype = Object.create( Object3D.prototype ); + SpotLightHelper.prototype.constructor = SpotLightHelper; + + SpotLightHelper.prototype.dispose = function () { + + this.cone.geometry.dispose(); + this.cone.material.dispose(); + + }; + + SpotLightHelper.prototype.update = function () { + + var vector = new Vector3(); + var vector2 = new Vector3(); + + return function update() { + + this.light.updateMatrixWorld(); + + var coneLength = this.light.distance ? this.light.distance : 1000; + var coneWidth = coneLength * Math.tan( this.light.angle ); + + this.cone.scale.set( coneWidth, coneWidth, coneLength ); + + vector.setFromMatrixPosition( this.light.matrixWorld ); + vector2.setFromMatrixPosition( this.light.target.matrixWorld ); + + this.cone.lookAt( vector2.sub( vector ) ); + + if ( this.color !== undefined ) { + + this.cone.material.color.set( this.color ); + + } else { + + this.cone.material.color.copy( this.light.color ); + + } + + }; + + }(); + + /** + * @author Sean Griffin / http://twitter.com/sgrif + * @author Michael Guerrero / http://realitymeltdown.com + * @author mrdoob / http://mrdoob.com/ + * @author ikerr / http://verold.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + function getBoneList( object ) { + + var boneList = []; + + if ( object && object.isBone ) { + + boneList.push( object ); + + } + + for ( var i = 0; i < object.children.length; i ++ ) { + + boneList.push.apply( boneList, getBoneList( object.children[ i ] ) ); + + } + + return boneList; + + } + + function SkeletonHelper( object ) { + + var bones = getBoneList( object ); + + var geometry = new BufferGeometry(); + + var vertices = []; + var colors = []; + + var color1 = new Color( 0, 0, 1 ); + var color2 = new Color( 0, 1, 0 ); + + for ( var i = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + vertices.push( 0, 0, 0 ); + vertices.push( 0, 0, 0 ); + colors.push( color1.r, color1.g, color1.b ); + colors.push( color2.r, color2.g, color2.b ); + + } + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } ); + + LineSegments.call( this, geometry, material ); + + this.root = object; + this.bones = bones; + + this.matrix = object.matrixWorld; + this.matrixAutoUpdate = false; + + } + + SkeletonHelper.prototype = Object.create( LineSegments.prototype ); + SkeletonHelper.prototype.constructor = SkeletonHelper; + + SkeletonHelper.prototype.updateMatrixWorld = function () { + + var vector = new Vector3(); + + var boneMatrix = new Matrix4(); + var matrixWorldInv = new Matrix4(); + + return function updateMatrixWorld( force ) { + + var bones = this.bones; + + var geometry = this.geometry; + var position = geometry.getAttribute( 'position' ); + + matrixWorldInv.getInverse( this.root.matrixWorld ); + + for ( var i = 0, j = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + boneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld ); + vector.setFromMatrixPosition( boneMatrix ); + position.setXYZ( j, vector.x, vector.y, vector.z ); + + boneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld ); + vector.setFromMatrixPosition( boneMatrix ); + position.setXYZ( j + 1, vector.x, vector.y, vector.z ); + + j += 2; + + } + + } + + geometry.getAttribute( 'position' ).needsUpdate = true; + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + }(); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function PointLightHelper( light, sphereSize, color ) { + + this.light = light; + this.light.updateMatrixWorld(); + + this.color = color; + + var geometry = new SphereBufferGeometry( sphereSize, 4, 2 ); + var material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + + Mesh.call( this, geometry, material ); + + this.matrix = this.light.matrixWorld; + this.matrixAutoUpdate = false; + + this.update(); + + + /* + var distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 ); + var distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); + + this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); + this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); + + var d = light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.scale.set( d, d, d ); + + } + + this.add( this.lightDistance ); + */ + + } + + PointLightHelper.prototype = Object.create( Mesh.prototype ); + PointLightHelper.prototype.constructor = PointLightHelper; + + PointLightHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + + }; + + PointLightHelper.prototype.update = function () { + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ); + + } + + /* + var d = this.light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.visible = true; + this.lightDistance.scale.set( d, d, d ); + + } + */ + + }; + + /** + * @author abelnation / http://github.com/abelnation + * @author Mugen87 / http://github.com/Mugen87 + * @author WestLangley / http://github.com/WestLangley + */ + + function RectAreaLightHelper( light, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var material = new LineBasicMaterial( { fog: false } ); + + var geometry = new BufferGeometry(); + + geometry.addAttribute( 'position', new BufferAttribute( new Float32Array( 5 * 3 ), 3 ) ); + + this.line = new Line( geometry, material ); + this.add( this.line ); + + + this.update(); + + } + + RectAreaLightHelper.prototype = Object.create( Object3D.prototype ); + RectAreaLightHelper.prototype.constructor = RectAreaLightHelper; + + RectAreaLightHelper.prototype.dispose = function () { + + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + RectAreaLightHelper.prototype.update = function () { + + // calculate new dimensions of the helper + + var hx = this.light.width * 0.5; + var hy = this.light.height * 0.5; + + var position = this.line.geometry.attributes.position; + var array = position.array; + + // update vertices + + array[ 0 ] = hx; array[ 1 ] = - hy; array[ 2 ] = 0; + array[ 3 ] = hx; array[ 4 ] = hy; array[ 5 ] = 0; + array[ 6 ] = - hx; array[ 7 ] = hy; array[ 8 ] = 0; + array[ 9 ] = - hx; array[ 10 ] = - hy; array[ 11 ] = 0; + array[ 12 ] = hx; array[ 13 ] = - hy; array[ 14 ] = 0; + + position.needsUpdate = true; + + if ( this.color !== undefined ) { + + this.line.material.color.set( this.color ); + + } else { + + this.line.material.color.copy( this.light.color ); + + } + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + function HemisphereLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new OctahedronBufferGeometry( size ); + geometry.rotateY( Math.PI * 0.5 ); + + this.material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + if ( this.color === undefined ) this.material.vertexColors = VertexColors; + + var position = geometry.getAttribute( 'position' ); + var colors = new Float32Array( position.count * 3 ); + + geometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) ); + + this.add( new Mesh( geometry, this.material ) ); + + this.update(); + + } + + HemisphereLightHelper.prototype = Object.create( Object3D.prototype ); + HemisphereLightHelper.prototype.constructor = HemisphereLightHelper; + + HemisphereLightHelper.prototype.dispose = function () { + + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + HemisphereLightHelper.prototype.update = function () { + + var vector = new Vector3(); + + var color1 = new Color(); + var color2 = new Color(); + + return function update() { + + var mesh = this.children[ 0 ]; + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + var colors = mesh.geometry.getAttribute( 'color' ); + + color1.copy( this.light.color ); + color2.copy( this.light.groundColor ); + + for ( var i = 0, l = colors.count; i < l; i ++ ) { + + var color = ( i < ( l / 2 ) ) ? color1 : color2; + + colors.setXYZ( i, color.r, color.g, color.b ); + + } + + colors.needsUpdate = true; + + } + + mesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() ); + + }; + + }(); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function GridHelper( size, divisions, color1, color2 ) { + + size = size || 10; + divisions = divisions || 10; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var center = divisions / 2; + var step = size / divisions; + var halfSize = size / 2; + + var vertices = [], colors = []; + + for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { + + vertices.push( - halfSize, 0, k, halfSize, 0, k ); + vertices.push( k, 0, - halfSize, k, 0, halfSize ); + + var color = i === center ? color1 : color2; + + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + GridHelper.prototype = Object.create( LineSegments.prototype ); + GridHelper.prototype.constructor = GridHelper; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + * @author Hectate / http://www.github.com/Hectate + */ + + function PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) { + + radius = radius || 10; + radials = radials || 16; + circles = circles || 8; + divisions = divisions || 64; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var vertices = []; + var colors = []; + + var x, z; + var v, i, j, r, color; + + // create the radials + + for ( i = 0; i <= radials; i ++ ) { + + v = ( i / radials ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * radius; + z = Math.cos( v ) * radius; + + vertices.push( 0, 0, 0 ); + vertices.push( x, 0, z ); + + color = ( i & 1 ) ? color1 : color2; + + colors.push( color.r, color.g, color.b ); + colors.push( color.r, color.g, color.b ); + + } + + // create the circles + + for ( i = 0; i <= circles; i ++ ) { + + color = ( i & 1 ) ? color1 : color2; + + r = radius - ( radius / circles * i ); + + for ( j = 0; j < divisions; j ++ ) { + + // first vertex + + v = ( j / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + // second vertex + + v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + } + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + PolarGridHelper.prototype = Object.create( LineSegments.prototype ); + PolarGridHelper.prototype.constructor = PolarGridHelper; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function FaceNormalsHelper( object, size, hex, linewidth ) { + + // FaceNormalsHelper only supports THREE.Geometry + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length; + + } else { + + console.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' ); + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + this.update(); + + } + + FaceNormalsHelper.prototype = Object.create( LineSegments.prototype ); + FaceNormalsHelper.prototype.constructor = FaceNormalsHelper; + + FaceNormalsHelper.prototype.update = ( function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var normalMatrix = new Matrix3(); + + return function update() { + + this.object.updateMatrixWorld( true ); + + normalMatrix.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var normal = face.normal; + + v1.copy( vertices[ face.a ] ) + .add( vertices[ face.b ] ) + .add( vertices[ face.c ] ) + .divideScalar( 3 ) + .applyMatrix4( matrixWorld ); + + v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); + + position.setXYZ( idx, v1.x, v1.y, v1.z ); + + idx = idx + 1; + + position.setXYZ( idx, v2.x, v2.y, v2.z ); + + idx = idx + 1; + + } + + position.needsUpdate = true; + + }; + + }() ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function DirectionalLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + if ( size === undefined ) size = 1; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ + - size, size, 0, + size, size, 0, + size, - size, 0, + - size, - size, 0, + - size, size, 0 + ], 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.lightPlane = new Line( geometry, material ); + this.add( this.lightPlane ); + + geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); + + this.targetLine = new Line( geometry, material ); + this.add( this.targetLine ); + + this.update(); + + } + + DirectionalLightHelper.prototype = Object.create( Object3D.prototype ); + DirectionalLightHelper.prototype.constructor = DirectionalLightHelper; + + DirectionalLightHelper.prototype.dispose = function () { + + this.lightPlane.geometry.dispose(); + this.lightPlane.material.dispose(); + this.targetLine.geometry.dispose(); + this.targetLine.material.dispose(); + + }; + + DirectionalLightHelper.prototype.update = function () { + + var v1 = new Vector3(); + var v2 = new Vector3(); + var v3 = new Vector3(); + + return function update() { + + v1.setFromMatrixPosition( this.light.matrixWorld ); + v2.setFromMatrixPosition( this.light.target.matrixWorld ); + v3.subVectors( v2, v1 ); + + this.lightPlane.lookAt( v3 ); + + if ( this.color !== undefined ) { + + this.lightPlane.material.color.set( this.color ); + this.targetLine.material.color.set( this.color ); + + } else { + + this.lightPlane.material.color.copy( this.light.color ); + this.targetLine.material.color.copy( this.light.color ); + + } + + this.targetLine.lookAt( v3 ); + this.targetLine.scale.z = v3.length(); + + }; + + }(); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author Mugen87 / https://github.com/Mugen87 + * + * - shows frustum, line of sight and up of the camera + * - suitable for fast updates + * - based on frustum visualization in lightgl.js shadowmap example + * http://evanw.github.com/lightgl.js/tests/shadowmap.html + */ + + function CameraHelper( camera ) { + + var geometry = new BufferGeometry(); + var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } ); + + var vertices = []; + var colors = []; + + var pointMap = {}; + + // colors + + var colorFrustum = new Color( 0xffaa00 ); + var colorCone = new Color( 0xff0000 ); + var colorUp = new Color( 0x00aaff ); + var colorTarget = new Color( 0xffffff ); + var colorCross = new Color( 0x333333 ); + + // near + + addLine( 'n1', 'n2', colorFrustum ); + addLine( 'n2', 'n4', colorFrustum ); + addLine( 'n4', 'n3', colorFrustum ); + addLine( 'n3', 'n1', colorFrustum ); + + // far + + addLine( 'f1', 'f2', colorFrustum ); + addLine( 'f2', 'f4', colorFrustum ); + addLine( 'f4', 'f3', colorFrustum ); + addLine( 'f3', 'f1', colorFrustum ); + + // sides + + addLine( 'n1', 'f1', colorFrustum ); + addLine( 'n2', 'f2', colorFrustum ); + addLine( 'n3', 'f3', colorFrustum ); + addLine( 'n4', 'f4', colorFrustum ); + + // cone + + addLine( 'p', 'n1', colorCone ); + addLine( 'p', 'n2', colorCone ); + addLine( 'p', 'n3', colorCone ); + addLine( 'p', 'n4', colorCone ); + + // up + + addLine( 'u1', 'u2', colorUp ); + addLine( 'u2', 'u3', colorUp ); + addLine( 'u3', 'u1', colorUp ); + + // target + + addLine( 'c', 't', colorTarget ); + addLine( 'p', 'c', colorCross ); + + // cross + + addLine( 'cn1', 'cn2', colorCross ); + addLine( 'cn3', 'cn4', colorCross ); + + addLine( 'cf1', 'cf2', colorCross ); + addLine( 'cf3', 'cf4', colorCross ); + + function addLine( a, b, color ) { + + addPoint( a, color ); + addPoint( b, color ); + + } + + function addPoint( id, color ) { + + vertices.push( 0, 0, 0 ); + colors.push( color.r, color.g, color.b ); + + if ( pointMap[ id ] === undefined ) { + + pointMap[ id ] = []; + + } + + pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + LineSegments.call( this, geometry, material ); + + this.camera = camera; + if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix(); + + this.matrix = camera.matrixWorld; + this.matrixAutoUpdate = false; + + this.pointMap = pointMap; + + this.update(); + + } + + CameraHelper.prototype = Object.create( LineSegments.prototype ); + CameraHelper.prototype.constructor = CameraHelper; + + CameraHelper.prototype.update = function () { + + var geometry, pointMap; + + var vector = new Vector3(); + var camera = new Camera(); + + function setPoint( point, x, y, z ) { + + vector.set( x, y, z ).unproject( camera ); + + var points = pointMap[ point ]; + + if ( points !== undefined ) { + + var position = geometry.getAttribute( 'position' ); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + position.setXYZ( points[ i ], vector.x, vector.y, vector.z ); + + } + + } + + } + + return function update() { + + geometry = this.geometry; + pointMap = this.pointMap; + + var w = 1, h = 1; + + // we need just camera projection matrix + // world matrix must be identity + + camera.projectionMatrix.copy( this.camera.projectionMatrix ); + + // center / target + + setPoint( 'c', 0, 0, - 1 ); + setPoint( 't', 0, 0, 1 ); + + // near + + setPoint( 'n1', - w, - h, - 1 ); + setPoint( 'n2', w, - h, - 1 ); + setPoint( 'n3', - w, h, - 1 ); + setPoint( 'n4', w, h, - 1 ); + + // far + + setPoint( 'f1', - w, - h, 1 ); + setPoint( 'f2', w, - h, 1 ); + setPoint( 'f3', - w, h, 1 ); + setPoint( 'f4', w, h, 1 ); + + // up + + setPoint( 'u1', w * 0.7, h * 1.1, - 1 ); + setPoint( 'u2', - w * 0.7, h * 1.1, - 1 ); + setPoint( 'u3', 0, h * 2, - 1 ); + + // cross + + setPoint( 'cf1', - w, 0, 1 ); + setPoint( 'cf2', w, 0, 1 ); + setPoint( 'cf3', 0, - h, 1 ); + setPoint( 'cf4', 0, h, 1 ); + + setPoint( 'cn1', - w, 0, - 1 ); + setPoint( 'cn2', w, 0, - 1 ); + setPoint( 'cn3', 0, - h, - 1 ); + setPoint( 'cn4', 0, h, - 1 ); + + geometry.getAttribute( 'position' ).needsUpdate = true; + + }; + + }(); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + */ + + function BoxHelper( object, color ) { + + this.object = object; + + if ( color === undefined ) color = 0xffff00; + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + var positions = new Float32Array( 8 * 3 ); + + var geometry = new BufferGeometry(); + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.matrixAutoUpdate = false; + + this.update(); + + } + + BoxHelper.prototype = Object.create( LineSegments.prototype ); + BoxHelper.prototype.constructor = BoxHelper; + + BoxHelper.prototype.update = ( function () { + + var box = new Box3(); + + return function update( object ) { + + if ( object !== undefined ) { + + console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' ); + + } + + if ( this.object !== undefined ) { + + box.setFromObject( this.object ); + + } + + if ( box.isEmpty() ) return; + + var min = box.min; + var max = box.max; + + /* + 5____4 + 1/___0/| + | 6__|_7 + 2/___3/ + + 0: max.x, max.y, max.z + 1: min.x, max.y, max.z + 2: min.x, min.y, max.z + 3: max.x, min.y, max.z + 4: max.x, max.y, min.z + 5: min.x, max.y, min.z + 6: min.x, min.y, min.z + 7: max.x, min.y, min.z + */ + + var position = this.geometry.attributes.position; + var array = position.array; + + array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; + array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; + array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; + array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; + array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; + array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; + array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; + array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; + + position.needsUpdate = true; + + this.geometry.computeBoundingSphere(); + + }; + + } )(); + + BoxHelper.prototype.setFromObject = function ( object ) { + + this.object = object; + this.update(); + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3Helper( box, hex ) { + + this.type = 'Box3Helper'; + + this.box = box; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + + var positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ]; + + var geometry = new BufferGeometry(); + + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.geometry.computeBoundingSphere(); + + } + + Box3Helper.prototype = Object.create( LineSegments.prototype ); + Box3Helper.prototype.constructor = Box3Helper; + + Box3Helper.prototype.updateMatrixWorld = function ( force ) { + + var box = this.box; + + if ( box.isEmpty() ) return; + + box.getCenter( this.position ); + + box.getSize( this.scale ); + + this.scale.multiplyScalar( 0.5 ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function PlaneHelper( plane, size, hex ) { + + this.type = 'PlaneHelper'; + + this.plane = plane; + + this.size = ( size === undefined ) ? 1 : size; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + Line.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + // + + var positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ]; + + var geometry2 = new BufferGeometry(); + geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) ); + + } + + PlaneHelper.prototype = Object.create( Line.prototype ); + PlaneHelper.prototype.constructor = PlaneHelper; + + PlaneHelper.prototype.updateMatrixWorld = function ( force ) { + + var scale = - this.plane.constant; + + if ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter + + this.scale.set( 0.5 * this.size, 0.5 * this.size, scale ); + + this.lookAt( this.plane.normal ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * @author zz85 / http://github.com/zz85 + * @author bhouston / http://clara.io + * + * Creates an arrow for visualizing directions + * + * Parameters: + * dir - Vector3 + * origin - Vector3 + * length - Number + * color - color in hex value + * headLength - Number + * headWidth - Number + */ + + var lineGeometry; + var coneGeometry; + + function ArrowHelper( dir, origin, length, color, headLength, headWidth ) { + + // dir is assumed to be normalized + + Object3D.call( this ); + + if ( color === undefined ) color = 0xffff00; + if ( length === undefined ) length = 1; + if ( headLength === undefined ) headLength = 0.2 * length; + if ( headWidth === undefined ) headWidth = 0.2 * headLength; + + if ( lineGeometry === undefined ) { + + lineGeometry = new BufferGeometry(); + lineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); + + coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 ); + coneGeometry.translate( 0, - 0.5, 0 ); + + } + + this.position.copy( origin ); + + this.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) ); + this.line.matrixAutoUpdate = false; + this.add( this.line ); + + this.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) ); + this.cone.matrixAutoUpdate = false; + this.add( this.cone ); + + this.setDirection( dir ); + this.setLength( length, headLength, headWidth ); + + } + + ArrowHelper.prototype = Object.create( Object3D.prototype ); + ArrowHelper.prototype.constructor = ArrowHelper; + + ArrowHelper.prototype.setDirection = ( function () { + + var axis = new Vector3(); + var radians; + + return function setDirection( dir ) { + + // dir is assumed to be normalized + + if ( dir.y > 0.99999 ) { + + this.quaternion.set( 0, 0, 0, 1 ); + + } else if ( dir.y < - 0.99999 ) { + + this.quaternion.set( 1, 0, 0, 0 ); + + } else { + + axis.set( dir.z, 0, - dir.x ).normalize(); + + radians = Math.acos( dir.y ); + + this.quaternion.setFromAxisAngle( axis, radians ); + + } + + }; + + }() ); + + ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) { + + if ( headLength === undefined ) headLength = 0.2 * length; + if ( headWidth === undefined ) headWidth = 0.2 * headLength; + + this.line.scale.set( 1, Math.max( 0, length - headLength ), 1 ); + this.line.updateMatrix(); + + this.cone.scale.set( headWidth, headLength, headWidth ); + this.cone.position.y = length; + this.cone.updateMatrix(); + + }; + + ArrowHelper.prototype.setColor = function ( color ) { + + this.line.material.color.copy( color ); + this.cone.material.color.copy( color ); + + }; + + /** + * @author sroucheray / http://sroucheray.org/ + * @author mrdoob / http://mrdoob.com/ + */ + + function AxesHelper( size ) { + + size = size || 1; + + var vertices = [ + 0, 0, 0, size, 0, 0, + 0, 0, 0, 0, size, 0, + 0, 0, 0, 0, 0, size + ]; + + var colors = [ + 1, 0, 0, 1, 0.6, 0, + 0, 1, 0, 0.6, 1, 0, + 0, 0, 1, 0, 0.6, 1 + ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + AxesHelper.prototype = Object.create( LineSegments.prototype ); + AxesHelper.prototype.constructor = AxesHelper; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + var SceneUtils = { + + createMultiMaterialObject: function ( geometry, materials ) { + + var group = new Group(); + + for ( var i = 0, l = materials.length; i < l; i ++ ) { + + group.add( new Mesh( geometry, materials[ i ] ) ); + + } + + return group; + + }, + + detach: function ( child, parent, scene ) { + + child.applyMatrix( parent.matrixWorld ); + parent.remove( child ); + scene.add( child ); + + }, + + attach: function ( child, scene, parent ) { + + child.applyMatrix( new Matrix4().getInverse( parent.matrixWorld ) ); + + scene.remove( child ); + parent.add( child ); + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Face4( a, b, c, d, normal, color, materialIndex ) { + + console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ); + return new Face3( a, b, c, normal, color, materialIndex ); + + } + + var LineStrip = 0; + + var LinePieces = 1; + + function MeshFaceMaterial( materials ) { + + console.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' ); + return materials; + + } + + function MultiMaterial( materials ) { + + if ( materials === undefined ) materials = []; + + console.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' ); + materials.isMultiMaterial = true; + materials.materials = materials; + materials.clone = function () { + + return materials.slice(); + + }; + return materials; + + } + + function PointCloud( geometry, material ) { + + console.warn( 'THREE.PointCloud has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function Particle( material ) { + + console.warn( 'THREE.Particle has been renamed to THREE.Sprite.' ); + return new Sprite( material ); + + } + + function ParticleSystem( geometry, material ) { + + console.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function PointCloudMaterial( parameters ) { + + console.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleBasicMaterial( parameters ) { + + console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleSystemMaterial( parameters ) { + + console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function Vertex( x, y, z ) { + + console.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' ); + return new Vector3( x, y, z ); + + } + + // + + function DynamicBufferAttribute( array, itemSize ) { + + console.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' ); + return new BufferAttribute( array, itemSize ).setDynamic( true ); + + } + + function Int8Attribute( array, itemSize ) { + + console.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' ); + return new Int8BufferAttribute( array, itemSize ); + + } + + function Uint8Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' ); + return new Uint8BufferAttribute( array, itemSize ); + + } + + function Uint8ClampedAttribute( array, itemSize ) { + + console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' ); + return new Uint8ClampedBufferAttribute( array, itemSize ); + + } + + function Int16Attribute( array, itemSize ) { + + console.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' ); + return new Int16BufferAttribute( array, itemSize ); + + } + + function Uint16Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' ); + return new Uint16BufferAttribute( array, itemSize ); + + } + + function Int32Attribute( array, itemSize ) { + + console.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' ); + return new Int32BufferAttribute( array, itemSize ); + + } + + function Uint32Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' ); + return new Uint32BufferAttribute( array, itemSize ); + + } + + function Float32Attribute( array, itemSize ) { + + console.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' ); + return new Float32BufferAttribute( array, itemSize ); + + } + + function Float64Attribute( array, itemSize ) { + + console.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' ); + return new Float64BufferAttribute( array, itemSize ); + + } + + // + + Curve.create = function ( construct, getPoint ) { + + console.log( 'THREE.Curve.create() has been deprecated' ); + + construct.prototype = Object.create( Curve.prototype ); + construct.prototype.constructor = construct; + construct.prototype.getPoint = getPoint; + + return construct; + + }; + + // + + Object.assign( CurvePath.prototype, { + + createPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from path points (for Line or Points objects) + + var pts = this.getPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createSpacedPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from equidistant sampling along the path + + var pts = this.getSpacedPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createGeometry: function ( points ) { + + console.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + var geometry = new Geometry(); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + geometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return geometry; + + } + + } ); + + // + + Object.assign( Path.prototype, { + + fromPoints: function ( points ) { + + console.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' ); + this.setFromPoints( points ); + + } + + } ); + + // + + function ClosedSplineCurve3( points ) { + + console.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + this.closed = true; + + } + + ClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function SplineCurve3( points ) { + + console.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + SplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function Spline( points ) { + + console.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + Spline.prototype = Object.create( CatmullRomCurve3.prototype ); + + Object.assign( Spline.prototype, { + + initFromArray: function ( /* a */ ) { + + console.error( 'THREE.Spline: .initFromArray() has been removed.' ); + + }, + getControlPointsArray: function ( /* optionalTarget */ ) { + + console.error( 'THREE.Spline: .getControlPointsArray() has been removed.' ); + + }, + reparametrizeByArcLength: function ( /* samplingCoef */ ) { + + console.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' ); + + } + + } ); + + // + + function AxisHelper( size ) { + + console.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' ); + return new AxesHelper( size ); + + } + + function BoundingBoxHelper( object, color ) { + + console.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' ); + return new BoxHelper( object, color ); + + } + + function EdgesHelper( object, hex ) { + + console.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' ); + return new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + GridHelper.prototype.setColors = function () { + + console.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' ); + + }; + + SkeletonHelper.prototype.update = function () { + + console.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' ); + + }; + + function WireframeHelper( object, hex ) { + + console.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' ); + return new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + // + + Object.assign( Loader.prototype, { + + extractUrlBase: function ( url ) { + + console.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' ); + return LoaderUtils.extractUrlBase( url ); + + } + + } ); + + function XHRLoader( manager ) { + + console.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' ); + return new FileLoader( manager ); + + } + + function BinaryTextureLoader( manager ) { + + console.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' ); + return new DataTextureLoader( manager ); + + } + + // + + Object.assign( Box2.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Object.assign( Box3.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Line3.prototype.center = function ( optionalTarget ) { + + console.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }; + + Object.assign( _Math, { + + random16: function () { + + console.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' ); + return Math.random(); + + }, + + nearestPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' ); + return _Math.floorPowerOfTwo( value ); + + }, + + nextPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' ); + return _Math.ceilPowerOfTwo( value ); + + } + + } ); + + Object.assign( Matrix3.prototype, { + + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); + return vector.applyMatrix3( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' ); + + } + + } ); + + Object.assign( Matrix4.prototype, { + + extractPosition: function ( m ) { + + console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); + return this.copyPosition( m ); + + }, + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + getPosition: function () { + + var v1; + + return function getPosition() { + + if ( v1 === undefined ) v1 = new Vector3(); + console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); + return v1.setFromMatrixColumn( this, 3 ); + + }; + + }(), + setRotationFromQuaternion: function ( q ) { + + console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); + return this.makeRotationFromQuaternion( q ); + + }, + multiplyToArray: function () { + + console.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector4: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' ); + + }, + rotateAxis: function ( v ) { + + console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); + v.transformDirection( this ); + + }, + crossVector: function ( vector ) { + + console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + translate: function () { + + console.error( 'THREE.Matrix4: .translate() has been removed.' ); + + }, + rotateX: function () { + + console.error( 'THREE.Matrix4: .rotateX() has been removed.' ); + + }, + rotateY: function () { + + console.error( 'THREE.Matrix4: .rotateY() has been removed.' ); + + }, + rotateZ: function () { + + console.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); + + }, + rotateByAxis: function () { + + console.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' ); + + }, + makeFrustum: function ( left, right, bottom, top, near, far ) { + + console.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' ); + return this.makePerspective( left, right, top, bottom, near, far ); + + } + + } ); + + Plane.prototype.isIntersectionLine = function ( line ) { + + console.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' ); + return this.intersectsLine( line ); + + }; + + Quaternion.prototype.multiplyVector3 = function ( vector ) { + + console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); + return vector.applyQuaternion( this ); + + }; + + Object.assign( Ray.prototype, { + + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionPlane: function ( plane ) { + + console.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' ); + return this.intersectsPlane( plane ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + } + + } ); + + Object.assign( Shape.prototype, { + + extractAllPoints: function ( divisions ) { + + console.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' ); + return this.extractPoints( divisions ); + + }, + extrude: function ( options ) { + + console.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' ); + return new ExtrudeGeometry( this, options ); + + }, + makeGeometry: function ( options ) { + + console.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' ); + return new ShapeGeometry( this, options ); + + } + + } ); + + Object.assign( Vector2.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector3.prototype, { + + setEulerFromRotationMatrix: function () { + + console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); + + }, + setEulerFromQuaternion: function () { + + console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); + + }, + getPositionFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); + return this.setFromMatrixPosition( m ); + + }, + getScaleFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); + return this.setFromMatrixScale( m ); + + }, + getColumnFromMatrix: function ( index, matrix ) { + + console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); + return this.setFromMatrixColumn( matrix, index ); + + }, + applyProjection: function ( m ) { + + console.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' ); + return this.applyMatrix4( m ); + + }, + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector4.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + // + + Geometry.prototype.computeTangents = function () { + + console.warn( 'THREE.Geometry: .computeTangents() has been removed.' ); + + }; + + Object.assign( Object3D.prototype, { + + getChildByName: function ( name ) { + + console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); + return this.getObjectByName( name ); + + }, + renderDepth: function () { + + console.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' ); + + }, + translate: function ( distance, axis ) { + + console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); + return this.translateOnAxis( axis, distance ); + + } + + } ); + + Object.defineProperties( Object3D.prototype, { + + eulerOrder: { + get: function () { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + return this.rotation.order; + + }, + set: function ( value ) { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + this.rotation.order = value; + + } + }, + useQuaternion: { + get: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + }, + set: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + } + } + + } ); + + Object.defineProperties( LOD.prototype, { + + objects: { + get: function () { + + console.warn( 'THREE.LOD: .objects has been renamed to .levels.' ); + return this.levels; + + } + } + + } ); + + Object.defineProperty( Skeleton.prototype, 'useVertexTexture', { + + get: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + } + + } ); + + Object.defineProperty( Curve.prototype, '__arcLengthDivisions', { + + get: function () { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + return this.arcLengthDivisions; + + }, + set: function ( value ) { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + this.arcLengthDivisions = value; + + } + + } ); + + // + + PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) { + + console.warn( "THREE.PerspectiveCamera.setLens is deprecated. " + + "Use .setFocalLength and .filmGauge for a photographic setup." ); + + if ( filmGauge !== undefined ) this.filmGauge = filmGauge; + this.setFocalLength( focalLength ); + + }; + + // + + Object.defineProperties( Light.prototype, { + onlyShadow: { + set: function () { + + console.warn( 'THREE.Light: .onlyShadow has been removed.' ); + + } + }, + shadowCameraFov: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' ); + this.shadow.camera.fov = value; + + } + }, + shadowCameraLeft: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' ); + this.shadow.camera.left = value; + + } + }, + shadowCameraRight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' ); + this.shadow.camera.right = value; + + } + }, + shadowCameraTop: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' ); + this.shadow.camera.top = value; + + } + }, + shadowCameraBottom: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' ); + this.shadow.camera.bottom = value; + + } + }, + shadowCameraNear: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' ); + this.shadow.camera.near = value; + + } + }, + shadowCameraFar: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' ); + this.shadow.camera.far = value; + + } + }, + shadowCameraVisible: { + set: function () { + + console.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' ); + + } + }, + shadowBias: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' ); + this.shadow.bias = value; + + } + }, + shadowDarkness: { + set: function () { + + console.warn( 'THREE.Light: .shadowDarkness has been removed.' ); + + } + }, + shadowMapWidth: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' ); + this.shadow.mapSize.width = value; + + } + }, + shadowMapHeight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' ); + this.shadow.mapSize.height = value; + + } + } + } ); + + // + + Object.defineProperties( BufferAttribute.prototype, { + + length: { + get: function () { + + console.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' ); + return this.array.length; + + } + } + + } ); + + Object.assign( BufferGeometry.prototype, { + + addIndex: function ( index ) { + + console.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' ); + this.setIndex( index ); + + }, + addDrawCall: function ( start, count, indexOffset ) { + + if ( indexOffset !== undefined ) { + + console.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' ); + + } + console.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' ); + this.addGroup( start, count ); + + }, + clearDrawCalls: function () { + + console.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' ); + this.clearGroups(); + + }, + computeTangents: function () { + + console.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' ); + + }, + computeOffsets: function () { + + console.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' ); + + } + + } ); + + Object.defineProperties( BufferGeometry.prototype, { + + drawcalls: { + get: function () { + + console.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' ); + return this.groups; + + } + }, + offsets: { + get: function () { + + console.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' ); + return this.groups; + + } + } + + } ); + + // + + Object.defineProperties( Uniform.prototype, { + + dynamic: { + set: function () { + + console.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' ); + + } + }, + onUpdate: { + value: function () { + + console.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' ); + return this; + + } + } + + } ); + + // + + Object.defineProperties( Material.prototype, { + + wrapAround: { + get: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + } + }, + wrapRGB: { + get: function () { + + console.warn( 'THREE.Material: .wrapRGB has been removed.' ); + return new Color(); + + } + }, + + shading: { + get: function () { + + console.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + + }, + set: function ( value ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( value === FlatShading ); + + } + } + + } ); + + Object.defineProperties( MeshPhongMaterial.prototype, { + + metal: { + get: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' ); + return false; + + }, + set: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' ); + + } + } + + } ); + + Object.defineProperties( ShaderMaterial.prototype, { + + derivatives: { + get: function () { + + console.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + return this.extensions.derivatives; + + }, + set: function ( value ) { + + console.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + this.extensions.derivatives = value; + + } + } + + } ); + + // + + Object.assign( WebGLRenderer.prototype, { + + getCurrentRenderTarget: function () { + + console.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' ); + return this.getRenderTarget(); + + }, + + getMaxAnisotropy: function () { + + console.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' ); + return this.capabilities.getMaxAnisotropy(); + + }, + + getPrecision: function () { + + console.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' ); + return this.capabilities.precision; + + }, + + resetGLState: function () { + + console.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' ); + return this.state.reset(); + + }, + + supportsFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).' ); + return this.extensions.get( 'OES_texture_float' ); + + }, + supportsHalfFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).' ); + return this.extensions.get( 'OES_texture_half_float' ); + + }, + supportsStandardDerivatives: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).' ); + return this.extensions.get( 'OES_standard_derivatives' ); + + }, + supportsCompressedTextureS3TC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + }, + supportsCompressedTexturePVRTC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + }, + supportsBlendMinMax: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).' ); + return this.extensions.get( 'EXT_blend_minmax' ); + + }, + supportsVertexTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' ); + return this.capabilities.vertexTextures; + + }, + supportsInstancedArrays: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' ); + return this.extensions.get( 'ANGLE_instanced_arrays' ); + + }, + enableScissorTest: function ( boolean ) { + + console.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' ); + this.setScissorTest( boolean ); + + }, + initMaterial: function () { + + console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); + + }, + addPrePlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); + + }, + addPostPlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); + + }, + updateShadowMap: function () { + + console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); + + } + + } ); + + Object.defineProperties( WebGLRenderer.prototype, { + + shadowMapEnabled: { + get: function () { + + return this.shadowMap.enabled; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' ); + this.shadowMap.enabled = value; + + } + }, + shadowMapType: { + get: function () { + + return this.shadowMap.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' ); + this.shadowMap.type = value; + + } + }, + shadowMapCullFace: { + get: function () { + + return this.shadowMap.cullFace; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.' ); + this.shadowMap.cullFace = value; + + } + } + } ); + + Object.defineProperties( WebGLShadowMap.prototype, { + + cullFace: { + get: function () { + + return this.renderReverseSided ? CullFaceFront : CullFaceBack; + + }, + set: function ( cullFace ) { + + var value = ( cullFace !== CullFaceBack ); + console.warn( "WebGLRenderer: .shadowMap.cullFace is deprecated. Set .shadowMap.renderReverseSided to " + value + "." ); + this.renderReverseSided = value; + + } + } + + } ); + + // + + Object.defineProperties( WebGLRenderTarget.prototype, { + + wrapS: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + return this.texture.wrapS; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + this.texture.wrapS = value; + + } + }, + wrapT: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + return this.texture.wrapT; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + this.texture.wrapT = value; + + } + }, + magFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + return this.texture.magFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + this.texture.magFilter = value; + + } + }, + minFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + return this.texture.minFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + this.texture.minFilter = value; + + } + }, + anisotropy: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + return this.texture.anisotropy; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + this.texture.anisotropy = value; + + } + }, + offset: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + return this.texture.offset; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + this.texture.offset = value; + + } + }, + repeat: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + return this.texture.repeat; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + this.texture.repeat = value; + + } + }, + format: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + return this.texture.format; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + this.texture.format = value; + + } + }, + type: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + return this.texture.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + this.texture.type = value; + + } + }, + generateMipmaps: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + return this.texture.generateMipmaps; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + this.texture.generateMipmaps = value; + + } + } + + } ); + + // + + Object.assign( WebVRManager.prototype, { + + getStandingMatrix: function () { + + console.warn( 'THREE.WebVRManager: .getStandingMatrix() has been removed.' ); + + } + + } ); + + Object.defineProperties( WebVRManager.prototype, { + + standing: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebVRManager: .standing has been removed.' ); + + } + } + + } ); + + // + + Audio.prototype.load = function ( file ) { + + console.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' ); + var scope = this; + var audioLoader = new AudioLoader(); + audioLoader.load( file, function ( buffer ) { + + scope.setBuffer( buffer ); + + } ); + return this; + + }; + + AudioAnalyser.prototype.getData = function () { + + console.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' ); + return this.getFrequencyData(); + + }; + + // + + CubeCamera.prototype.updateCubeMap = function ( renderer, scene ) { + + console.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' ); + return this.update( renderer, scene ); + + }; + + // + + var GeometryUtils = { + + merge: function ( geometry1, geometry2, materialIndexOffset ) { + + console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); + var matrix; + + if ( geometry2.isMesh ) { + + geometry2.matrixAutoUpdate && geometry2.updateMatrix(); + + matrix = geometry2.matrix; + geometry2 = geometry2.geometry; + + } + + geometry1.merge( geometry2, matrix, materialIndexOffset ); + + }, + + center: function ( geometry ) { + + console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); + return geometry.center(); + + } + + }; + + var ImageUtils = { + + crossOrigin: undefined, + + loadTexture: function ( url, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' ); + + var loader = new TextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( url, onLoad, undefined, onError ); + + if ( mapping ) texture.mapping = mapping; + + return texture; + + }, + + loadTextureCube: function ( urls, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' ); + + var loader = new CubeTextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( urls, onLoad, undefined, onError ); + + if ( mapping ) texture.mapping = mapping; + + return texture; + + }, + + loadCompressedTexture: function () { + + console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ); + + }, + + loadCompressedTextureCube: function () { + + console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ); + + } + + }; + + // + + function Projector() { + + console.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' ); + + this.projectVector = function ( vector, camera ) { + + console.warn( 'THREE.Projector: .projectVector() is now vector.project().' ); + vector.project( camera ); + + }; + + this.unprojectVector = function ( vector, camera ) { + + console.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' ); + vector.unproject( camera ); + + }; + + this.pickingRay = function () { + + console.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' ); + + }; + + } + + // + + function CanvasRenderer() { + + console.error( 'THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js' ); + + this.domElement = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + this.clear = function () {}; + this.render = function () {}; + this.setClearColor = function () {}; + this.setSize = function () {}; + + } + + exports.WebGLRenderTargetCube = WebGLRenderTargetCube; + exports.WebGLRenderTarget = WebGLRenderTarget; + exports.WebGLRenderer = WebGLRenderer; + exports.ShaderLib = ShaderLib; + exports.UniformsLib = UniformsLib; + exports.UniformsUtils = UniformsUtils; + exports.ShaderChunk = ShaderChunk; + exports.FogExp2 = FogExp2; + exports.Fog = Fog; + exports.Scene = Scene; + exports.LensFlare = LensFlare; + exports.Sprite = Sprite; + exports.LOD = LOD; + exports.SkinnedMesh = SkinnedMesh; + exports.Skeleton = Skeleton; + exports.Bone = Bone; + exports.Mesh = Mesh; + exports.LineSegments = LineSegments; + exports.LineLoop = LineLoop; + exports.Line = Line; + exports.Points = Points; + exports.Group = Group; + exports.VideoTexture = VideoTexture; + exports.DataTexture = DataTexture; + exports.CompressedTexture = CompressedTexture; + exports.CubeTexture = CubeTexture; + exports.CanvasTexture = CanvasTexture; + exports.DepthTexture = DepthTexture; + exports.Texture = Texture; + exports.CompressedTextureLoader = CompressedTextureLoader; + exports.DataTextureLoader = DataTextureLoader; + exports.CubeTextureLoader = CubeTextureLoader; + exports.TextureLoader = TextureLoader; + exports.ObjectLoader = ObjectLoader; + exports.MaterialLoader = MaterialLoader; + exports.BufferGeometryLoader = BufferGeometryLoader; + exports.DefaultLoadingManager = DefaultLoadingManager; + exports.LoadingManager = LoadingManager; + exports.JSONLoader = JSONLoader; + exports.ImageLoader = ImageLoader; + exports.ImageBitmapLoader = ImageBitmapLoader; + exports.FontLoader = FontLoader; + exports.FileLoader = FileLoader; + exports.Loader = Loader; + exports.LoaderUtils = LoaderUtils; + exports.Cache = Cache; + exports.AudioLoader = AudioLoader; + exports.SpotLightShadow = SpotLightShadow; + exports.SpotLight = SpotLight; + exports.PointLight = PointLight; + exports.RectAreaLight = RectAreaLight; + exports.HemisphereLight = HemisphereLight; + exports.DirectionalLightShadow = DirectionalLightShadow; + exports.DirectionalLight = DirectionalLight; + exports.AmbientLight = AmbientLight; + exports.LightShadow = LightShadow; + exports.Light = Light; + exports.StereoCamera = StereoCamera; + exports.PerspectiveCamera = PerspectiveCamera; + exports.OrthographicCamera = OrthographicCamera; + exports.CubeCamera = CubeCamera; + exports.ArrayCamera = ArrayCamera; + exports.Camera = Camera; + exports.AudioListener = AudioListener; + exports.PositionalAudio = PositionalAudio; + exports.AudioContext = AudioContext; + exports.AudioAnalyser = AudioAnalyser; + exports.Audio = Audio; + exports.VectorKeyframeTrack = VectorKeyframeTrack; + exports.StringKeyframeTrack = StringKeyframeTrack; + exports.QuaternionKeyframeTrack = QuaternionKeyframeTrack; + exports.NumberKeyframeTrack = NumberKeyframeTrack; + exports.ColorKeyframeTrack = ColorKeyframeTrack; + exports.BooleanKeyframeTrack = BooleanKeyframeTrack; + exports.PropertyMixer = PropertyMixer; + exports.PropertyBinding = PropertyBinding; + exports.KeyframeTrack = KeyframeTrack; + exports.AnimationUtils = AnimationUtils; + exports.AnimationObjectGroup = AnimationObjectGroup; + exports.AnimationMixer = AnimationMixer; + exports.AnimationClip = AnimationClip; + exports.Uniform = Uniform; + exports.InstancedBufferGeometry = InstancedBufferGeometry; + exports.BufferGeometry = BufferGeometry; + exports.Geometry = Geometry; + exports.InterleavedBufferAttribute = InterleavedBufferAttribute; + exports.InstancedInterleavedBuffer = InstancedInterleavedBuffer; + exports.InterleavedBuffer = InterleavedBuffer; + exports.InstancedBufferAttribute = InstancedBufferAttribute; + exports.Face3 = Face3; + exports.Object3D = Object3D; + exports.Raycaster = Raycaster; + exports.Layers = Layers; + exports.EventDispatcher = EventDispatcher; + exports.Clock = Clock; + exports.QuaternionLinearInterpolant = QuaternionLinearInterpolant; + exports.LinearInterpolant = LinearInterpolant; + exports.DiscreteInterpolant = DiscreteInterpolant; + exports.CubicInterpolant = CubicInterpolant; + exports.Interpolant = Interpolant; + exports.Triangle = Triangle; + exports.Math = _Math; + exports.Spherical = Spherical; + exports.Cylindrical = Cylindrical; + exports.Plane = Plane; + exports.Frustum = Frustum; + exports.Sphere = Sphere; + exports.Ray = Ray; + exports.Matrix4 = Matrix4; + exports.Matrix3 = Matrix3; + exports.Box3 = Box3; + exports.Box2 = Box2; + exports.Line3 = Line3; + exports.Euler = Euler; + exports.Vector4 = Vector4; + exports.Vector3 = Vector3; + exports.Vector2 = Vector2; + exports.Quaternion = Quaternion; + exports.Color = Color; + exports.ImmediateRenderObject = ImmediateRenderObject; + exports.VertexNormalsHelper = VertexNormalsHelper; + exports.SpotLightHelper = SpotLightHelper; + exports.SkeletonHelper = SkeletonHelper; + exports.PointLightHelper = PointLightHelper; + exports.RectAreaLightHelper = RectAreaLightHelper; + exports.HemisphereLightHelper = HemisphereLightHelper; + exports.GridHelper = GridHelper; + exports.PolarGridHelper = PolarGridHelper; + exports.FaceNormalsHelper = FaceNormalsHelper; + exports.DirectionalLightHelper = DirectionalLightHelper; + exports.CameraHelper = CameraHelper; + exports.BoxHelper = BoxHelper; + exports.Box3Helper = Box3Helper; + exports.PlaneHelper = PlaneHelper; + exports.ArrowHelper = ArrowHelper; + exports.AxesHelper = AxesHelper; + exports.Shape = Shape; + exports.Path = Path; + exports.ShapePath = ShapePath; + exports.Font = Font; + exports.CurvePath = CurvePath; + exports.Curve = Curve; + exports.ShapeUtils = ShapeUtils; + exports.SceneUtils = SceneUtils; + exports.WebGLUtils = WebGLUtils; + exports.WireframeGeometry = WireframeGeometry; + exports.ParametricGeometry = ParametricGeometry; + exports.ParametricBufferGeometry = ParametricBufferGeometry; + exports.TetrahedronGeometry = TetrahedronGeometry; + exports.TetrahedronBufferGeometry = TetrahedronBufferGeometry; + exports.OctahedronGeometry = OctahedronGeometry; + exports.OctahedronBufferGeometry = OctahedronBufferGeometry; + exports.IcosahedronGeometry = IcosahedronGeometry; + exports.IcosahedronBufferGeometry = IcosahedronBufferGeometry; + exports.DodecahedronGeometry = DodecahedronGeometry; + exports.DodecahedronBufferGeometry = DodecahedronBufferGeometry; + exports.PolyhedronGeometry = PolyhedronGeometry; + exports.PolyhedronBufferGeometry = PolyhedronBufferGeometry; + exports.TubeGeometry = TubeGeometry; + exports.TubeBufferGeometry = TubeBufferGeometry; + exports.TorusKnotGeometry = TorusKnotGeometry; + exports.TorusKnotBufferGeometry = TorusKnotBufferGeometry; + exports.TorusGeometry = TorusGeometry; + exports.TorusBufferGeometry = TorusBufferGeometry; + exports.TextGeometry = TextGeometry; + exports.TextBufferGeometry = TextBufferGeometry; + exports.SphereGeometry = SphereGeometry; + exports.SphereBufferGeometry = SphereBufferGeometry; + exports.RingGeometry = RingGeometry; + exports.RingBufferGeometry = RingBufferGeometry; + exports.PlaneGeometry = PlaneGeometry; + exports.PlaneBufferGeometry = PlaneBufferGeometry; + exports.LatheGeometry = LatheGeometry; + exports.LatheBufferGeometry = LatheBufferGeometry; + exports.ShapeGeometry = ShapeGeometry; + exports.ShapeBufferGeometry = ShapeBufferGeometry; + exports.ExtrudeGeometry = ExtrudeGeometry; + exports.ExtrudeBufferGeometry = ExtrudeBufferGeometry; + exports.EdgesGeometry = EdgesGeometry; + exports.ConeGeometry = ConeGeometry; + exports.ConeBufferGeometry = ConeBufferGeometry; + exports.CylinderGeometry = CylinderGeometry; + exports.CylinderBufferGeometry = CylinderBufferGeometry; + exports.CircleGeometry = CircleGeometry; + exports.CircleBufferGeometry = CircleBufferGeometry; + exports.BoxGeometry = BoxGeometry; + exports.BoxBufferGeometry = BoxBufferGeometry; + exports.ShadowMaterial = ShadowMaterial; + exports.SpriteMaterial = SpriteMaterial; + exports.RawShaderMaterial = RawShaderMaterial; + exports.ShaderMaterial = ShaderMaterial; + exports.PointsMaterial = PointsMaterial; + exports.MeshPhysicalMaterial = MeshPhysicalMaterial; + exports.MeshStandardMaterial = MeshStandardMaterial; + exports.MeshPhongMaterial = MeshPhongMaterial; + exports.MeshToonMaterial = MeshToonMaterial; + exports.MeshNormalMaterial = MeshNormalMaterial; + exports.MeshLambertMaterial = MeshLambertMaterial; + exports.MeshDepthMaterial = MeshDepthMaterial; + exports.MeshDistanceMaterial = MeshDistanceMaterial; + exports.MeshBasicMaterial = MeshBasicMaterial; + exports.LineDashedMaterial = LineDashedMaterial; + exports.LineBasicMaterial = LineBasicMaterial; + exports.Material = Material; + exports.Float64BufferAttribute = Float64BufferAttribute; + exports.Float32BufferAttribute = Float32BufferAttribute; + exports.Uint32BufferAttribute = Uint32BufferAttribute; + exports.Int32BufferAttribute = Int32BufferAttribute; + exports.Uint16BufferAttribute = Uint16BufferAttribute; + exports.Int16BufferAttribute = Int16BufferAttribute; + exports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute; + exports.Uint8BufferAttribute = Uint8BufferAttribute; + exports.Int8BufferAttribute = Int8BufferAttribute; + exports.BufferAttribute = BufferAttribute; + exports.ArcCurve = ArcCurve; + exports.CatmullRomCurve3 = CatmullRomCurve3; + exports.CubicBezierCurve = CubicBezierCurve; + exports.CubicBezierCurve3 = CubicBezierCurve3; + exports.EllipseCurve = EllipseCurve; + exports.LineCurve = LineCurve; + exports.LineCurve3 = LineCurve3; + exports.QuadraticBezierCurve = QuadraticBezierCurve; + exports.QuadraticBezierCurve3 = QuadraticBezierCurve3; + exports.SplineCurve = SplineCurve; + exports.REVISION = REVISION; + exports.MOUSE = MOUSE; + exports.CullFaceNone = CullFaceNone; + exports.CullFaceBack = CullFaceBack; + exports.CullFaceFront = CullFaceFront; + exports.CullFaceFrontBack = CullFaceFrontBack; + exports.FrontFaceDirectionCW = FrontFaceDirectionCW; + exports.FrontFaceDirectionCCW = FrontFaceDirectionCCW; + exports.BasicShadowMap = BasicShadowMap; + exports.PCFShadowMap = PCFShadowMap; + exports.PCFSoftShadowMap = PCFSoftShadowMap; + exports.FrontSide = FrontSide; + exports.BackSide = BackSide; + exports.DoubleSide = DoubleSide; + exports.FlatShading = FlatShading; + exports.SmoothShading = SmoothShading; + exports.NoColors = NoColors; + exports.FaceColors = FaceColors; + exports.VertexColors = VertexColors; + exports.NoBlending = NoBlending; + exports.NormalBlending = NormalBlending; + exports.AdditiveBlending = AdditiveBlending; + exports.SubtractiveBlending = SubtractiveBlending; + exports.MultiplyBlending = MultiplyBlending; + exports.CustomBlending = CustomBlending; + exports.AddEquation = AddEquation; + exports.SubtractEquation = SubtractEquation; + exports.ReverseSubtractEquation = ReverseSubtractEquation; + exports.MinEquation = MinEquation; + exports.MaxEquation = MaxEquation; + exports.ZeroFactor = ZeroFactor; + exports.OneFactor = OneFactor; + exports.SrcColorFactor = SrcColorFactor; + exports.OneMinusSrcColorFactor = OneMinusSrcColorFactor; + exports.SrcAlphaFactor = SrcAlphaFactor; + exports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor; + exports.DstAlphaFactor = DstAlphaFactor; + exports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor; + exports.DstColorFactor = DstColorFactor; + exports.OneMinusDstColorFactor = OneMinusDstColorFactor; + exports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor; + exports.NeverDepth = NeverDepth; + exports.AlwaysDepth = AlwaysDepth; + exports.LessDepth = LessDepth; + exports.LessEqualDepth = LessEqualDepth; + exports.EqualDepth = EqualDepth; + exports.GreaterEqualDepth = GreaterEqualDepth; + exports.GreaterDepth = GreaterDepth; + exports.NotEqualDepth = NotEqualDepth; + exports.MultiplyOperation = MultiplyOperation; + exports.MixOperation = MixOperation; + exports.AddOperation = AddOperation; + exports.NoToneMapping = NoToneMapping; + exports.LinearToneMapping = LinearToneMapping; + exports.ReinhardToneMapping = ReinhardToneMapping; + exports.Uncharted2ToneMapping = Uncharted2ToneMapping; + exports.CineonToneMapping = CineonToneMapping; + exports.UVMapping = UVMapping; + exports.CubeReflectionMapping = CubeReflectionMapping; + exports.CubeRefractionMapping = CubeRefractionMapping; + exports.EquirectangularReflectionMapping = EquirectangularReflectionMapping; + exports.EquirectangularRefractionMapping = EquirectangularRefractionMapping; + exports.SphericalReflectionMapping = SphericalReflectionMapping; + exports.CubeUVReflectionMapping = CubeUVReflectionMapping; + exports.CubeUVRefractionMapping = CubeUVRefractionMapping; + exports.RepeatWrapping = RepeatWrapping; + exports.ClampToEdgeWrapping = ClampToEdgeWrapping; + exports.MirroredRepeatWrapping = MirroredRepeatWrapping; + exports.NearestFilter = NearestFilter; + exports.NearestMipMapNearestFilter = NearestMipMapNearestFilter; + exports.NearestMipMapLinearFilter = NearestMipMapLinearFilter; + exports.LinearFilter = LinearFilter; + exports.LinearMipMapNearestFilter = LinearMipMapNearestFilter; + exports.LinearMipMapLinearFilter = LinearMipMapLinearFilter; + exports.UnsignedByteType = UnsignedByteType; + exports.ByteType = ByteType; + exports.ShortType = ShortType; + exports.UnsignedShortType = UnsignedShortType; + exports.IntType = IntType; + exports.UnsignedIntType = UnsignedIntType; + exports.FloatType = FloatType; + exports.HalfFloatType = HalfFloatType; + exports.UnsignedShort4444Type = UnsignedShort4444Type; + exports.UnsignedShort5551Type = UnsignedShort5551Type; + exports.UnsignedShort565Type = UnsignedShort565Type; + exports.UnsignedInt248Type = UnsignedInt248Type; + exports.AlphaFormat = AlphaFormat; + exports.RGBFormat = RGBFormat; + exports.RGBAFormat = RGBAFormat; + exports.LuminanceFormat = LuminanceFormat; + exports.LuminanceAlphaFormat = LuminanceAlphaFormat; + exports.RGBEFormat = RGBEFormat; + exports.DepthFormat = DepthFormat; + exports.DepthStencilFormat = DepthStencilFormat; + exports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format; + exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format; + exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format; + exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format; + exports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format; + exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format; + exports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format; + exports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format; + exports.RGB_ETC1_Format = RGB_ETC1_Format; + exports.LoopOnce = LoopOnce; + exports.LoopRepeat = LoopRepeat; + exports.LoopPingPong = LoopPingPong; + exports.InterpolateDiscrete = InterpolateDiscrete; + exports.InterpolateLinear = InterpolateLinear; + exports.InterpolateSmooth = InterpolateSmooth; + exports.ZeroCurvatureEnding = ZeroCurvatureEnding; + exports.ZeroSlopeEnding = ZeroSlopeEnding; + exports.WrapAroundEnding = WrapAroundEnding; + exports.TrianglesDrawMode = TrianglesDrawMode; + exports.TriangleStripDrawMode = TriangleStripDrawMode; + exports.TriangleFanDrawMode = TriangleFanDrawMode; + exports.LinearEncoding = LinearEncoding; + exports.sRGBEncoding = sRGBEncoding; + exports.GammaEncoding = GammaEncoding; + exports.RGBEEncoding = RGBEEncoding; + exports.LogLuvEncoding = LogLuvEncoding; + exports.RGBM7Encoding = RGBM7Encoding; + exports.RGBM16Encoding = RGBM16Encoding; + exports.RGBDEncoding = RGBDEncoding; + exports.BasicDepthPacking = BasicDepthPacking; + exports.RGBADepthPacking = RGBADepthPacking; + exports.CubeGeometry = BoxGeometry; + exports.Face4 = Face4; + exports.LineStrip = LineStrip; + exports.LinePieces = LinePieces; + exports.MeshFaceMaterial = MeshFaceMaterial; + exports.MultiMaterial = MultiMaterial; + exports.PointCloud = PointCloud; + exports.Particle = Particle; + exports.ParticleSystem = ParticleSystem; + exports.PointCloudMaterial = PointCloudMaterial; + exports.ParticleBasicMaterial = ParticleBasicMaterial; + exports.ParticleSystemMaterial = ParticleSystemMaterial; + exports.Vertex = Vertex; + exports.DynamicBufferAttribute = DynamicBufferAttribute; + exports.Int8Attribute = Int8Attribute; + exports.Uint8Attribute = Uint8Attribute; + exports.Uint8ClampedAttribute = Uint8ClampedAttribute; + exports.Int16Attribute = Int16Attribute; + exports.Uint16Attribute = Uint16Attribute; + exports.Int32Attribute = Int32Attribute; + exports.Uint32Attribute = Uint32Attribute; + exports.Float32Attribute = Float32Attribute; + exports.Float64Attribute = Float64Attribute; + exports.ClosedSplineCurve3 = ClosedSplineCurve3; + exports.SplineCurve3 = SplineCurve3; + exports.Spline = Spline; + exports.AxisHelper = AxisHelper; + exports.BoundingBoxHelper = BoundingBoxHelper; + exports.EdgesHelper = EdgesHelper; + exports.WireframeHelper = WireframeHelper; + exports.XHRLoader = XHRLoader; + exports.BinaryTextureLoader = BinaryTextureLoader; + exports.GeometryUtils = GeometryUtils; + exports.ImageUtils = ImageUtils; + exports.Projector = Projector; + exports.CanvasRenderer = CanvasRenderer; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/seminar06-planning/simulator/webpack.config.js b/seminar06-planning/simulator/webpack.config.js new file mode 100644 index 0000000..63d2be8 --- /dev/null +++ b/seminar06-planning/simulator/webpack.config.js @@ -0,0 +1,22 @@ +const path = require('path'); +const webpack = require('webpack'); +const WrapperPlugin = require('wrapper-webpack-plugin'); + +module.exports = { + entry: { + PathPlannerWorker: './workers/PathPlannerWorker.js', + Dash: './js/Dash.js' + }, + devtool: 'eval-source-map', + plugins: [ + new WrapperPlugin({ + test: /PathPlannerWorker.js/, + header: 'function dash_initPathPlannerWorker() {', + footer: '} if (typeof(window) === undefined) dash_initPathPlannerWorker();' + }) + ], + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].js' + } +}; diff --git a/seminar06-planning/simulator/workers/.gitignore b/seminar06-planning/simulator/workers/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/seminar06-planning/simulator/workers/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/seminar06-planning/simulator/workers/PathPlannerWorker.js b/seminar06-planning/simulator/workers/PathPlannerWorker.js new file mode 100644 index 0000000..f42b607 --- /dev/null +++ b/seminar06-planning/simulator/workers/PathPlannerWorker.js @@ -0,0 +1,86 @@ +import THREE from "script-loader!../vendor/three.js"; +import Utils from "script-loader!../js/Utils.js"; +import PathPlanner from "../js/autonomy/path-planning/PathPlanner.js"; +import ExternalPathPlanner from "../js/autonomy/path-planning/ExternalPlanner.js"; +import LanePath from "../js/autonomy/LanePath.js"; +import StaticObstacle from "../js/autonomy/StaticObstacle.js"; +import DynamicObstacle from "../js/autonomy/DynamicObstacle.js"; + +function init() { + let pathPlanner; + try { + // pathPlanner = new PathPlanner(); + pathPlanner = new ExternalPathPlanner() + } catch (e) { + console.log('Error initializing path planner:'); + console.log(e); + self.postMessage({ error: "initialization_failed" }); + return; + } + + self.onmessage = function(event) { + if (event.data.type === 'notify_case_status') { + pathPlanner.notify_scenario_status(event.data.status); + return; + } + if (event.data.type != 'plan') { + console.log("unkonwn posted message type: " + event); + return; + } + + const { config, vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles, reset } = event.data; + + LanePath.hydrate(lanePath); + staticObstacles.forEach(o => StaticObstacle.hydrate(o)); + dynamicObstacles.forEach(o => DynamicObstacle.hydrate(o)); + + if (reset) pathPlanner.reset(); + + pathPlanner.config = config; + + let should_retry = true; + while (should_retry) { + let planner_result; + try { + planner_result = pathPlanner.plan(vehiclePose, vehicleStation, lanePath, startTime, staticObstacles, dynamicObstacles); + should_retry = planner_result.planner_state == "unavailable"; + } catch (error) { + if (error.name != "TimeoutError" && error.name != "NetworkError") { + console.log('Planning request error: '); + console.log(error); + self.postMessage({ error: error.toString() }); + should_retry = false; + break; + } + } + + if (should_retry) { + self.postMessage({ error: "planner_unavailable" }); + } else { + const { + path, + fromVehicleSegment, + fromVehicleParams, + latticeStartStation, + dynamicObstacleGrid + } = planner_result; + + self.postMessage({ + path, + fromVehicleSegment, + fromVehicleParams, + vehiclePose, + vehicleStation, + latticeStartStation, + config, + dynamicObstacleGrid }); + } + } + }; +} + +if (typeof(window) === 'undefined') { + init(); +} else { + window.dash_initPathPlannerWorker = init; +}